Changeset 3512 for liboggz/trunk/src/liboggz/oggz_auto.c
- Timestamp:
- 2008-03-20 03:30:14 (9 months ago)
- Files:
-
- liboggz/trunk/src/liboggz/oggz_auto.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
liboggz/trunk/src/liboggz/oggz_auto.c
r3450 r3512 141 141 int keyframe_shift; 142 142 143 /* TODO: this should check against 42 for the relevant version numbers */ 143 144 if (op->bytes < 41) return 0; 144 145 … … 158 159 #else 159 160 keyframe_granule_shift = (char) ((header[40] & 0x03) << 3); 160 keyframe_granule_shift |= (header[41] & 0xe0) >> 5; 161 keyframe_granule_shift |= (header[41] & 0xe0) >> 5; /* see TODO above */ 161 162 keyframe_shift = keyframe_granule_shift; 162 163 #endif … … 322 323 323 324 oggz_stream_set_numheaders (oggz, serialno, 3); 325 326 return 1; 327 } 328 329 static int 330 auto_kate (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 331 { 332 unsigned char * header = op->packet; 333 ogg_int32_t gps_numerator, gps_denominator; 334 unsigned char granule_shift = 0; 335 int numheaders; 336 337 if (op->bytes < 64) return 0; 338 339 gps_numerator = INT32_LE_AT(&header[24]); 340 gps_denominator = INT32_LE_AT(&header[28]); 341 342 granule_shift = (header[15]); 343 numheaders = (header[11]); 344 345 #ifdef DEBUG 346 printf ("Got kate gps %d/%d, granule shift %d\n", 347 gps_numerator, gps_denominator, granule_shift); 348 #endif 349 350 oggz_set_granulerate (oggz, serialno, gps_numerator, 351 OGGZ_AUTO_MULT * gps_denominator); 352 oggz_set_granuleshift (oggz, serialno, granule_shift); 353 354 oggz_stream_set_numheaders (oggz, serialno, numheaders); 324 355 325 356 return 1; … … 1012 1043 {"AnxData", 7, "AnxData", auto_anxdata, NULL, NULL}, 1013 1044 {"CELT ", 8, "CELT", auto_celt, auto_calc_celt, NULL}, 1045 {"\200kate\0\0\0\0", 9, "Kate", auto_kate, NULL, NULL}, 1014 1046 {"", 0, "Unknown", NULL, NULL, NULL} 1015 1047 }; … … 1106 1138 offset = 7; 1107 1139 break; 1140 case OGGZ_CONTENT_KATE: 1141 if (op->bytes > 9 && memcmp (op->packet, "\201kate\0\0\0\0", 9) == 0) { 1142 offset = 9; 1143 } 1144 break; 1108 1145 case OGGZ_CONTENT_FLAC: 1109 1146 if (op->bytes > 4 && (op->packet[0] & 0x7) == 4) { … … 1111 1148 offset = 4; 1112 1149 } 1150 break; 1113 1151 default: 1114 1152 break;