Merge commit 'b704b648f9ecb830874627db958a37e004107d1b'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 8 Dec 2014 21:33:38 +0000 (22:33 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 8 Dec 2014 21:59:16 +0000 (22:59 +0100)
* commit 'b704b648f9ecb830874627db958a37e004107d1b':
  mov: parse XMP metadata on demand

Conflicts:
libavformat/isom.h
libavformat/version.h

See: 054c506e3da35471ea92dbedcaaf720d0754f04e

The default is left unchanged at enabled
We can change the default if people prefer but i do not want to do that
in a merge.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/isom.h
libavformat/mov.c
libavformat/version.h

@@@ -178,17 -155,9 +178,18 @@@ typedef struct MOVContext 
      unsigned trex_count;
      int itunes_metadata;  ///< metadata are itunes style
      int chapter_track;
 +    int use_absolute_path;
 +    int ignore_editlist;
      int64_t next_root_atom; ///< offset of the next root atom
      int export_all;
+     int export_xmp;
 +    int *bitrates;          ///< bitrates read before streams creation
 +    int bitrates_count;
 +    int moov_retry;
 +    int use_mfra_for;
 +    int has_looked_for_mfra;
 +    MOVFragmentIndex** fragment_index_data;
 +    unsigned fragment_index_count;
  } MOVContext;
  
  int ff_mp4_read_descr_len(AVIOContext *pb);
@@@ -270,9 -263,9 +259,11 @@@ static int mov_read_udta_string(MOVCont
      switch (atom.type) {
      case MKTAG( '@','P','R','M'): key = "premiere_version"; raw = 1; break;
      case MKTAG( '@','P','R','Q'): key = "quicktime_version"; raw = 1; break;
+     case MKTAG( 'X','M','P','_'):
+         if (c->export_xmp) { key = "xmp"; raw = 1; } break;
      case MKTAG( 'a','A','R','T'): key = "album_artist";    break;
 +    case MKTAG( 'c','p','i','l'): key = "compilation";
 +        parse = mov_metadata_int8_no_padding; break;
      case MKTAG( 'c','p','r','t'): key = "copyright"; break;
      case MKTAG( 'd','e','s','c'): key = "description"; break;
      case MKTAG( 'd','i','s','k'): key = "disc";
@@@ -4195,25 -3431,10 +4184,27 @@@ static int mov_read_seek(AVFormatContex
  #define OFFSET(x) offsetof(MOVContext, x)
  #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
  static const AVOption mov_options[] = {
 +    {"use_absolute_path",
 +        "allow using absolute path when opening alias, this is a possible security issue",
 +        offsetof(MOVContext, use_absolute_path), FF_OPT_TYPE_INT, {.i64 = 0},
 +        0, 1, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM},
 +    {"ignore_editlist", "", offsetof(MOVContext, ignore_editlist), FF_OPT_TYPE_INT, {.i64 = 0},
 +        0, 1, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM},
 +    {"use_mfra_for",
 +        "use mfra for fragment timestamps",
 +        offsetof(MOVContext, use_mfra_for), FF_OPT_TYPE_INT, {.i64 = FF_MOV_FLAG_MFRA_AUTO},
 +        -1, FF_MOV_FLAG_MFRA_PTS, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM,
 +        "use_mfra_for"},
 +    {"auto", "auto", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_MFRA_AUTO}, 0, 0,
 +        AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM, "use_mfra_for" },
 +    {"dts", "dts", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_MFRA_DTS}, 0, 0,
 +        AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM, "use_mfra_for" },
 +    {"pts", "pts", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_MFRA_PTS}, 0, 0,
 +        AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM, "use_mfra_for" },
      { "export_all", "Export unrecognized metadata entries", OFFSET(export_all),
          AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, .flags = FLAGS },
 -        AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, .flags = FLAGS },
+     { "export_xmp", "Export full XMP metadata", OFFSET(export_xmp),
++        AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, .flags = FLAGS },
      { NULL },
  };
  
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 56
 -#define LIBAVFORMAT_VERSION_MINOR  7
 -#define LIBAVFORMAT_VERSION_MICRO  2
 +#define LIBAVFORMAT_VERSION_MINOR  15
- #define LIBAVFORMAT_VERSION_MICRO 102
++#define LIBAVFORMAT_VERSION_MICRO 103
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \