[FFmpeg-devel] [PATCH] avformat/mov: export xml metadata

Paul B Mahol onemda at gmail.com
Wed Feb 1 14:47:13 EET 2017


On 2/1/17, Robert Krueger <krueger at lesspain.software> wrote:
> On Wed, Feb 1, 2017 at 1:07 PM, wm4 <nfxjfg at googlemail.com> wrote:
>
>> On Wed,  1 Feb 2017 12:50:51 +0100
>> Paul B Mahol <onemda at gmail.com> wrote:
>>
>> > Signed-off-by: Paul B Mahol <onemda at 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.
>

Added export_xml option locally.


More information about the ffmpeg-devel mailing list