On Wed, 1 Feb 2017 14:17:19 +0100
Paul B Mahol <one...@gmail.com> wrote:

> On 2/1/17, wm4 <nfx...@googlemail.com> wrote:
> > On Wed, 1 Feb 2017 13:31:46 +0100
> > Robert Krueger <krueger@lesspain.software> wrote:
> >  
> >> On Wed, Feb 1, 2017 at 1:07 PM, wm4 <nfx...@googlemail.com> wrote:
> >>  
> >> > On Wed,  1 Feb 2017 12:50:51 +0100
> >> > Paul B Mahol <one...@gmail.com> wrote:
> >> >  
> >> > > Signed-off-by: Paul B Mahol <one...@gmail.com>
> >> > > ---
> >> > >  libavformat/mov.c | 25 +++++++++++++++++++++++++
> >> > >  1 file changed, 25 insertions(+)
> >> > >
> >> > > diff --git a/libavformat/mov.c b/libavformat/mov.c
> >> > > index 9ae4f8c..75e1c9c60 100644
> >> > > --- a/libavformat/mov.c
> >> > > +++ b/libavformat/mov.c
> >> > > @@ -3764,6 +3764,25 @@ static int mov_read_keys(MOVContext *c,  
> >> > AVIOContext *pb, MOVAtom atom)  
> >> > >      return 0;
> >> > >  }
> >> > >
> >> > > +static int mov_read_xml(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> >> > > +{
> >> > > +    uint8_t *xml;
> >> > > +
> >> > > +    if (atom.size < 5)
> >> > > +        return 0;
> >> > > +
> >> > > +    avio_skip(pb, 4);
> >> > > +    xml = av_calloc(atom.size - 4 + 1, sizeof(uint8_t));
> >> > > +    if (!xml)
> >> > > +        return AVERROR(ENOMEM);
> >> > > +
> >> > > +    avio_read(pb, xml, atom.size - 4);
> >> > > +    av_dict_set(&c->fc->metadata, "xml", xml, 0);
> >> > > +    av_free(xml);
> >> > > +
> >> > > +    return 0;
> >> > > +}
> >> > > +
> >> > >  static int mov_read_custom(MOVContext *c, AVIOContext *pb, MOVAtom
> >> > > atom)
> >> > >  {
> >> > >      int64_t end = avio_tell(pb) + atom.size;
> >> > > @@ -5280,6 +5299,12 @@ static int mov_read_default(MOVContext *c,  
> >> > AVIOContext *pb, MOVAtom atom)  
> >> > >              parse = mov_read_keys;
> >> > >          }
> >> > >
> >> > > +        if (!parse &&
> >> > > +            atom.type == MKTAG('m','e','t','a') &&
> >> > > +            a.type == MKTAG('x','m','l',' ')) {
> >> > > +            parse = mov_read_xml;
> >> > > +        }
> >> > > +
> >> > >          if (!parse) { /* skip leaf atoms data */
> >> > >              avio_skip(pb, a.size);
> >> > >          } else {  
> >> >
> >> > We had this discussion recently: the metadata AVDictionary should
> >> > probably only contain real tags, not other information that's contained
> >> > in the format but for which libavformat has no good way to export yet.
> >> >
> >> > There needs to be a concept for distinguishing user-visible tags and
> >> > other data.
> >> >
> >> > (You don't want to show a xml dump in a GUI that happens to use ffmpeg,
> >> > do you?)
> >> >
> >> >  
> >> I thought that was already the case for XMP (i.e. xml) metadata embedded
> >> in
> >> mov. I must look up how that was handled. I seem to remember there was a
> >> flag to suppress this on the command line. With the policy you propose,
> >> libavformat will be of a lot less use for api users. Not that I had a vote
> >> here. It's just 2c of an api user.  
> >
> > I'm not voting for removing it, just that there should be a separate
> > mechanism for this.  
> 
> Can you define/explain such thing in detail?
> If not I will use current approach.

Using side data. Or maybe just a different metadata field. Or clearly
defining which keys are internal and which are meant to be shown to the
user as text (as far as specified by the file format).
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to