Mercurial > libavformat.hg
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, |