diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-03-02 18:04:03 +0000 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-03-03 15:30:52 +0000 |
commit | 0af3b65880573aa9b3375362eaab4f84140c7dde (patch) | |
tree | d519b08739f4ed6a8ccbe2aebc826c9e16f9aec9 /libavformat/asfdec.c | |
parent | 994d8f3095180ba1b2c6040a97718e931a782b34 (diff) | |
download | ffmpeg-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>
Diffstat (limited to 'libavformat/asfdec.c')
-rw-r--r-- | libavformat/asfdec.c | 8 |
1 files changed, 7 insertions, 1 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; |