Changeset 700

Show
Ignore:
Timestamp:
2005-01-21 21:12:24 (4 years ago)
Author:
conrad
Message:

add parsing of fisbone headers to oggz_auto

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • liboggz/trunk/src/liboggz/oggz_auto.c

    r691 r700  
    5757#define INT64_LE_AT(x) _le_64((*(ogg_int64_t *)(x))) 
    5858 
    59 /*#define DEBUG*/ 
     59#define DEBUG 
    6060 
    6161#define OGGZ_AUTO_MULT 1000 
     
    273273} 
    274274 
     275#if 0 
     276static int 
     277auto_fishead (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 
     278{ 
     279  unsigned char * header = op->packet; 
     280 
     281  if (op->bytes < 8) return 0; 
     282 
     283  if (strncmp ((char *)header, "fishead", 8)) return 0; 
     284  if (!op->b_o_s) return 0; 
     285 
     286  /* Yeah ... set it up with a "linear" metric with numerator 0 :) */ 
     287  oggz_set_metric_linear (oggz, serialno, 0, 1); 
     288 
     289  return 1; 
     290} 
     291#endif 
     292 
     293static int 
     294auto_fisbone (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 
     295{ 
     296  unsigned char * header = op->packet; 
     297  long fisbone_serialno; 
     298  ogg_int64_t granule_rate_numerator = 0, granule_rate_denominator = 0; 
     299 
     300  if (op->bytes < 48) return 0; 
     301 
     302  if (strncmp ((char *)header, "fisbone", 7)) return 0; 
     303 
     304  fisbone_serialno = (long) INT32_LE_AT(&header[12]); 
     305 
     306  granule_rate_numerator = INT64_LE_AT(&header[20]); 
     307  granule_rate_denominator = INT64_LE_AT(&header[28]); 
     308#ifdef DEBUG 
     309  printf ("Got fisbone granulerate %lld/%lld for serialno %010ld\n", 
     310          granule_rate_numerator, granule_rate_denominator, 
     311          fisbone_serialno); 
     312#endif 
     313 
     314  oggz_set_metric_linear (oggz, fisbone_serialno, 
     315                          granule_rate_numerator, 
     316                          OGGZ_AUTO_MULT * granule_rate_denominator); 
     317 
     318  return 1; 
     319} 
     320 
    275321static const OggzReadPacket auto_readers[] = { 
    276322  auto_speex, 
     
    281327  auto_flac, 
    282328  auto_cmml, 
     329  /* XXX: don't set a metric on the fishead, so the fisbones are inspected */ 
     330  /*auto_fishead,*/ 
     331  auto_fisbone, 
    283332  NULL 
    284333};