[FFmpeg-devel] [PATCH]Recognize "qt " compatible brand in isom

Carl Eugen Hoyos cehoyos at ag.or.at
Fri Nov 2 19:35:42 CET 2012


On Friday 02 November 2012 03:50:29 pm Clément Bœsch wrote:
> On Fri, Nov 02, 2012 at 03:37:32PM +0100, Carl Eugen Hoyos wrote:
> > Hi!
> >
> > Attached patch fixes ticket #1881 for me, I don't know if it has funny
> > side-effects.
> >
> > Please review, Carl Eugen
> >
> > diff --git a/libavformat/mov.c b/libavformat/mov.c
> > index d7d7f21..3488a80 100644
> > --- a/libavformat/mov.c
> > +++ b/libavformat/mov.c
> > @@ -755,6 +755,8 @@ static int mov_read_ftyp(MOVContext *c, AVIOContext
> > *pb, MOVAtom atom) avio_read(pb, comp_brands_str, comp_brand_size);
> >      comp_brands_str[comp_brand_size] = 0;
> >      av_dict_set(&c->fc->metadata, "compatible_brands", comp_brands_str,
> > 0); +    if (!strncmp(comp_brands_str, "qt  ", 4))
> > +        c->isom = 0;
>
> You can have several compatible brands, why would you compare to only one?
>
> Also, I'm not sure that's a good idea to have a compatible brand with QT
> having such "huge" consequence…

Less intrusive patch attached.

Please comment, Carl Eugen
-------------- next part --------------
diff --git a/libavformat/mov.c b/libavformat/mov.c
index d7d7f21..4f1aad1 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1397,7 +1397,8 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
 
             //Read QT version 1 fields. In version 0 these do not exist.
             av_dlog(c->fc, "version =%d, isom =%d\n",version,c->isom);
-            if (!c->isom) {
+            if (!c->isom ||
+                strstr(av_dict_get(c->fc->metadata, "compatible_brands", NULL, AV_DICT_MATCH_CASE)->value, "qt  ")) {
                 if (version==1) {
                     sc->samples_per_frame = avio_rb32(pb);
                     avio_rb32(pb); /* bytes per packet */


More information about the ffmpeg-devel mailing list