aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2015-03-02 18:04:03 +0000
committerVittorio Giovara <vittorio.giovara@gmail.com>2015-03-03 15:30:52 +0000
commit0af3b65880573aa9b3375362eaab4f84140c7dde (patch)
treed519b08739f4ed6a8ccbe2aebc826c9e16f9aec9
parent994d8f3095180ba1b2c6040a97718e931a782b34 (diff)
downloadffmpeg-0af3b65880573aa9b3375362eaab4f84140c7dde.tar.gz
asf: do not export XMP metadata by default
Similarly to what has been done for MOV, display XMP metadata only when users explicitly require it. The Extensible Metadata Platform tag can contain various kind of data which are not strictly related to the video file, such as history of edits and saves from the project file. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
-rw-r--r--libavformat/asfdec.c8
-rw-r--r--libavformat/version.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index 8522ce4555..fac5806798 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -80,10 +80,12 @@ typedef struct ASFContext {
ASFStream *asf_st; ///< currently decoded stream
int no_resync_search;
+ int export_xmp;
} ASFContext;
static const AVOption options[] = {
{ "no_resync_search", "Don't try to resynchronize by looking for a certain optional start code", offsetof(ASFContext, no_resync_search), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM },
+ { "export_xmp", "Export full XMP metadata", offsetof(ASFContext, export_xmp), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM },
{ NULL },
};
@@ -281,12 +283,16 @@ static void get_id3_tag(AVFormatContext *s, int len)
static void get_tag(AVFormatContext *s, const char *key, int type, int len, int type2_size)
{
- char *value;
+ ASFContext *asf = s->priv_data;
+ char *value = NULL;
int64_t off = avio_tell(s->pb);
if ((unsigned)len >= (UINT_MAX - 1) / 2)
return;
+ if (!asf->export_xmp && !strncmp(key, "xmp", 3))
+ goto finish;
+
value = av_malloc(2 * len + 1);
if (!value)
goto finish;
diff --git a/libavformat/version.h b/libavformat/version.h
index ce7528edb9..6226615206 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,7 +31,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 56
#define LIBAVFORMAT_VERSION_MINOR 16
-#define LIBAVFORMAT_VERSION_MICRO 0
+#define LIBAVFORMAT_VERSION_MICRO 1
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \