comparison raw.c @ 1463:acf4dbb1a7e6 libavformat

mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com) tabs removed by me VOL vs. VOP check fixed by me
author michael
date Wed, 08 Nov 2006 01:21:23 +0000
parents 3b00fb8ef8e4
children 5d72afc6c8aa
comparison
equal deleted inserted replaced
1462:e5e2d80a859c 1463:acf4dbb1a7e6
344 if(seq && seq*9<=pic*10 && pic*9<=slice*10 && !pspack && !pes) 344 if(seq && seq*9<=pic*10 && pic*9<=slice*10 && !pspack && !pes)
345 return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg 345 return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg
346 return 0; 346 return 0;
347 } 347 }
348 348
349 #define VIDEO_OBJECT_START_CODE 0x00000100
350 #define VIDEO_OBJECT_LAYER_START_CODE 0x00000120
351 #define VISUAL_OBJECT_START_CODE 0x000001b5
352 #define VOP_START_CODE 0x000001b6
353
354 static int mpeg4video_probe(AVProbeData *probe_packet)
355 {
356 uint32_t temp_buffer= -1;
357 int VO=0, VOL=0, VOP = 0, VISO = 0;
358 int i;
359
360 for(i=0; i<probe_packet->buf_size; i++){
361 temp_buffer = (temp_buffer<<8) + probe_packet->buf[i];
362 if ((temp_buffer & 0xffffff00) == 0x100) {
363 switch(temp_buffer){
364 case VOP_START_CODE: VOP++; break;
365 case VISUAL_OBJECT_START_CODE: VISO++; break;
366 }
367 switch(temp_buffer & 0xfffffff0){
368 case VIDEO_OBJECT_START_CODE: VO++; break;
369 case VIDEO_OBJECT_LAYER_START_CODE: VOL++; break;
370 }
371 }
372 }
373
374 if ( VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0)
375 return AVPROBE_SCORE_MAX/2;
376 return 0;
377 }
378
349 static int h263_probe(AVProbeData *p) 379 static int h263_probe(AVProbeData *p)
350 { 380 {
351 int code; 381 int code;
352 const uint8_t *d; 382 const uint8_t *d;
353 383
521 551
522 AVInputFormat m4v_demuxer = { 552 AVInputFormat m4v_demuxer = {
523 "m4v", 553 "m4v",
524 "raw MPEG4 video format", 554 "raw MPEG4 video format",
525 0, 555 0,
526 NULL /*mpegvideo_probe*/, 556 mpeg4video_probe, /** probing for mpeg4 data */
527 video_read_header, 557 video_read_header,
528 raw_read_partial_packet, 558 raw_read_partial_packet,
529 raw_read_close, 559 raw_read_close,
530 .extensions = "m4v", //FIXME remove after writing mpeg4_probe 560 .extensions = "m4v", //FIXME remove after writing mpeg4_probe
531 .value = CODEC_ID_MPEG4, 561 .value = CODEC_ID_MPEG4,