[FFmpeg-devel] [PATCH]Improve MPEG-in-mov detection
Petter Ericson
petter.ericson at codemill.se
Sun Oct 21 11:52:54 CEST 2012
On Fri, Oct 19, 2012 at 07:41:29PM +0200, Carl Eugen Hoyos wrote:
> Hi!
>
> Sorry for coming late!
>
> I found one MPEG-in-mov sample that is still recognised as mov (it has a
> description of "\x0\x0\x0\x0") and tried to read the QuickTime specification.
>
> As I understand it, we should search for "MPEG" media description, patch is
> attached.
> (I also verified that QuickTime accepts other values than "m1s " for
> mpeg-in-mov.)
>
> Please comment, Carl Eugen
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index b296c24..24b68c8 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -2908,15 +2908,14 @@ static int mov_probe(AVProbeData *p)
> * MOV-packed MPEG-PS */
> offset = moov_offset;
>
> - while(offset < (p->buf_size - 20)){ /* Sufficient space */
> - /* We found an actual stsd atom */
> - if(AV_RL32(p->buf+offset) == MKTAG('s','t','s','d') &&
> - /* Make sure there's only one stream */
> - AV_RB32(p->buf + offset + 8) == 1 &&
> - AV_RL32(p->buf + offset + 16) == MKTAG('m','1','s',' ')
> - ){
> - av_log(NULL, AV_LOG_WARNING, "Found m1s tag indicating this is a MOV-packed MPEG-PS.\n");
> - /* We found an stsd atom describing an MPEG-PS-in-MOV, return a
> + while(offset < (p->buf_size - 16)){ /* Sufficient space */
> + /* We found an actual hdlr atom */
> + if(AV_RL32(p->buf + offset ) == MKTAG('h','d','l','r') &&
> + AV_RL32(p->buf + offset + 8) == MKTAG('m','h','l','r') &&
> + AV_RL32(p->buf + offset + 12) == MKTAG('M','P','E','G')){
> + av_log(NULL, AV_LOG_WARNING, "Found media data tag MPEG indicating this is a MOV-packed MPEG-PS.\n");
> + /* We found a media handler reference atom describing an
> + * MPEG-PS-in-MOV, return a
> * low score to force expanding the probe window until
> * mpegps_probe finds what it needs */
> return 5;
If this identifies more files than my patch, who am I to complain? :)
Unfortunately, I can't test anything at the moment, but I have no more samples
than those already linked to the m1s tickets (which I assume were tested
against).
Best
/P
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list