[FFmpeg-cvslog] asfdec: also read Metadata Library Object

Vladimir Pantelic git at videolan.org
Sun Feb 10 12:45:45 CET 2013


ffmpeg | branch: master | Vladimir Pantelic <vladoman at gmail.com> | Wed Feb  6 14:35:27 2013 +0100| [84b721db366c0734fdfd23c8daaa7da7da21f761] | committer: Anton Khirnov

asfdec: also read Metadata Library Object

In some ASF files this objects holds cover art and other tags. Compared to
Metadata Object it can also hold GUIDs, but we ignore these for now.

Signed-off-by: Vladimir Pantelic <vladoman at gmail.com>
Signed-off-by: Anton Khirnov <anton at khirnov.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=84b721db366c0734fdfd23c8daaa7da7da21f761
---

 libavformat/asf.c    |    4 ++++
 libavformat/asf.h    |    1 +
 libavformat/asfdec.c |    6 ++++++
 3 files changed, 11 insertions(+)

diff --git a/libavformat/asf.c b/libavformat/asf.c
index eda8bd0..52afa09 100644
--- a/libavformat/asf.c
+++ b/libavformat/asf.c
@@ -109,6 +109,10 @@ const ff_asf_guid ff_asf_metadata_header = {
     0xea, 0xcb, 0xf8, 0xc5, 0xaf, 0x5b, 0x77, 0x48, 0x84, 0x67, 0xaa, 0x8c, 0x44, 0xfa, 0x4c, 0xca
 };
 
+const ff_asf_guid ff_asf_metadata_library_header = {
+    0x94, 0x1c, 0x23, 0x44, 0x98, 0x94, 0xd1, 0x49, 0xa1, 0x41, 0x1d, 0x13, 0x4e, 0x45, 0x70, 0x54
+};
+
 const ff_asf_guid ff_asf_marker_header = {
     0x01, 0xCD, 0x87, 0xF4, 0x51, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65
 };
diff --git a/libavformat/asf.h b/libavformat/asf.h
index 1d94a2c..3aada8b 100644
--- a/libavformat/asf.h
+++ b/libavformat/asf.h
@@ -103,6 +103,7 @@ extern const ff_asf_guid ff_asf_simple_index_header;
 extern const ff_asf_guid ff_asf_ext_stream_embed_stream_header;
 extern const ff_asf_guid ff_asf_ext_stream_audio_stream;
 extern const ff_asf_guid ff_asf_metadata_header;
+extern const ff_asf_guid ff_asf_metadata_library_header;
 extern const ff_asf_guid ff_asf_marker_header;
 extern const ff_asf_guid ff_asf_my_guid;
 extern const ff_asf_guid ff_asf_language_guid;
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index e85ee8f..51422ea 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -136,6 +136,7 @@ static void print_guid(ff_asf_guid *g)
     else PRINT_IF_GUID(g, ff_asf_ext_stream_embed_stream_header);
     else PRINT_IF_GUID(g, ff_asf_ext_stream_audio_stream);
     else PRINT_IF_GUID(g, ff_asf_metadata_header);
+    else PRINT_IF_GUID(g, ff_asf_metadata_library_header);
     else PRINT_IF_GUID(g, ff_asf_marker_header);
     else PRINT_IF_GUID(g, stream_bitrate_guid);
     else PRINT_IF_GUID(g, ff_asf_language_guid);
@@ -296,6 +297,9 @@ static void get_tag(AVFormatContext *s, const char *key, int type, int len, int
     } else if (type == 1 && !strcmp(key, "WM/Picture")) { // handle cover art
         asf_read_picture(s, len);
         goto finish;
+    } else if (type == 6) { // (don't) handle GUID
+        av_log(s, AV_LOG_DEBUG, "Unsupported GUID value in tag %s.\n", key);
+        goto finish;
     } else {
         av_log(s, AV_LOG_DEBUG,
                "Unsupported value type %d in tag %s.\n", type, key);
@@ -740,6 +744,8 @@ static int asf_read_header(AVFormatContext *s)
             asf_read_ext_content_desc(s, gsize);
         } else if (!ff_guidcmp(&g, &ff_asf_metadata_header)) {
             asf_read_metadata(s, gsize);
+        } else if (!ff_guidcmp(&g, &ff_asf_metadata_library_header)) {
+            asf_read_metadata(s, gsize);
         } else if (!ff_guidcmp(&g, &ff_asf_ext_stream_header)) {
             asf_read_ext_stream_properties(s, gsize);
 



More information about the ffmpeg-cvslog mailing list