Changeset 2061

Show
Ignore:
Timestamp:
2006-02-15 15:46:44 (3 years ago)
Author:
conrad
Message:

add OggPCM2 support to liboggz (in oggz_auto, for seeking and timestamps)

Files:

Legend:

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

    r872 r2061  
    254254} 
    255255 
     256/** 
     257 * Recognizer for OggPCM2: 
     258 * http://wiki.xiph.org/index.php/OggPCM2 
     259 */ 
     260static int 
     261auto_oggpcm2 (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 
     262{ 
     263  unsigned char * header = op->packet; 
     264  ogg_int64_t granule_rate; 
     265 
     266  if (op->bytes < 27) return 0; 
     267 
     268  if (strncmp ((char *)header, "PCM     ", 8)) return 0; 
     269  if (!op->b_o_s) return 0; 
     270 
     271  granule_rate = (ogg_int64_t) INT32_BE_AT(&header[16]); 
     272#ifdef DEBUG 
     273  printf ("Got OggPCM2 rate %d\n", (int)granule_rate); 
     274#endif 
     275 
     276  oggz_set_granulerate (oggz, serialno, granule_rate, OGGZ_AUTO_MULT); 
     277 
     278  return 1; 
     279} 
     280 
    256281static int 
    257282auto_cmml (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 
     
    356381  auto_fishead, 
    357382  auto_fisbone, 
     383  auto_oggpcm2, 
    358384  NULL 
    359385}; 
  • liboggz/trunk/src/liboggz/oggz_auto.h

    r851 r2061  
    362362 */ 
    363363 
     364/** 
     365 * OggPCM Draft 2 
     366 * 
     367 * http://wiki.xiph.org/index.php/OggPCM2 
     368 * 
     369 * Default field type: BIG ENDIAN unsigned integer 
     370 
     371 0                   1                   2                   3 
     372 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte 
     373+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     374| Identifier char[8]: 'PCM     '                                | 0-3 
     375+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     376|                                                               | 4-7 
     377+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     378| Version major                 | Version minor                 | 8-11 
     379+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     380| PCM Format                                                    | 12-15 
     381+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     382| Sampling rate [Hz]                                            | 16-19 
     383+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     384| Number of significant bits                                    | 20-23 
     385+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     386| Num. channels | Max. num. frames per packet   | Number of ... | 24-27 
     387+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     388| extra header packets                          |               | 28-31 
     389+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     390 
     391 */ 
     392 
    364393#endif /* __OGGZ_AUTO_H__ */