Merge commit 'e352b293712ff7cbde67eba3ce3f8510b037de09'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Dec 2014 21:00:02 +0000 (22:00 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Dec 2014 21:13:20 +0000 (22:13 +0100)
* commit 'e352b293712ff7cbde67eba3ce3f8510b037de09':
  mov: Add an option for exporting all metadata

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

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

@@@ -178,16 -155,8 +178,17 @@@ 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 *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);
  #include <limits.h>
  #include <stdint.h>
  
- //#define MOV_EXPORT_ALL_METADATA
  #include "libavutil/attributes.h"
  #include "libavutil/channel_layout.h"
 +#include "libavutil/display.h"
  #include "libavutil/intreadwrite.h"
  #include "libavutil/intfloat.h"
  #include "libavutil/mathematics.h"
@@@ -260,14 -252,11 +258,12 @@@ static int mov_metadata_loci(MOVContex
  
  static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom)
  {
- #ifdef MOV_EXPORT_ALL_METADATA
      char tmp_key[5];
- #endif
 -    char str[1024], key2[32], language[4] = {0};
 +    char key2[32], language[4] = {0};
 +    char *str = NULL;
      const char *key = NULL;
      uint16_t langcode = 0;
 -    uint32_t data_type = 0, str_size;
 +    uint32_t data_type = 0, str_size, str_size_alloc;
      int (*parse)(MOVContext*, AVIOContext*, unsigned, const char*) = NULL;
  
      switch (atom.type) {
@@@ -4199,25 -3415,12 +4193,29 @@@ static int mov_read_seek(AVFormatContex
      return 0;
  }
  
- static const AVOption options[] = {
+ #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" },
-     {NULL}
+     { "export_all", "Export unrecognized metadata entries", OFFSET(export_all),
+         AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, .flags = FLAGS },
+     { NULL },
  };
  
  static const AVClass mov_class = {
@@@ -4237,6 -3441,4 +4236,5 @@@ AVInputFormat ff_mov_demuxer = 
      .read_packet    = mov_read_packet,
      .read_close     = mov_read_close,
      .read_seek      = mov_read_seek,
-     .priv_class     = &mov_class,
 +    .flags          = AVFMT_NO_BYTE_SEEK,
  };
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 56
 -#define LIBAVFORMAT_VERSION_MINOR  7
 -#define LIBAVFORMAT_VERSION_MICRO  1
 +#define LIBAVFORMAT_VERSION_MINOR  15
- #define LIBAVFORMAT_VERSION_MICRO 101
++#define LIBAVFORMAT_VERSION_MICRO 102
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \