[FFmpeg-cvslog] Implement parsing of the "HandlerName" from th MP4 HDLR atom.
Hendrik Leppkes
git at videolan.org
Fri Oct 28 01:47:18 CEST 2011
ffmpeg | branch: master | Hendrik Leppkes <h.leppkes at gmail.com> | Wed Sep 28 19:37:45 2011 +0200| [b76bc010343b0cff8717cc7ee81e47273272336c] | committer: Michael Niedermayer
Implement parsing of the "HandlerName" from th MP4 HDLR atom.
This atom typically is used for a track title.
(cherry picked from commit a356137816b4ea20a892d1fb203b11dbfedbc543)
Reviewed-by: Baptiste Coudurier
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b76bc010343b0cff8717cc7ee81e47273272336c
---
libavformat/mov.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 03f01e0..62d5b3c 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -496,6 +496,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
AVStream *st;
uint32_t type;
uint32_t av_unused ctype;
+ int title_size;
+ char *title_str;
if (c->fc->nb_streams < 1) // meta before first trak
return 0;
@@ -525,6 +527,17 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
avio_rb32(pb); /* component flags */
avio_rb32(pb); /* component flags mask */
+ title_size = atom.size - 24;
+ if (title_size > 0) {
+ title_str = av_malloc(title_size + 1); /* Add null terminator */
+ if (!title_str)
+ return AVERROR(ENOMEM);
+ avio_read(pb, title_str, title_size);
+ title_str[title_size] = 0;
+ av_dict_set(&st->metadata, "handler_name", title_str, 0);
+ av_freep(&title_str);
+ }
+
return 0;
}
More information about the ffmpeg-cvslog
mailing list