[FFmpeg-devel] [PATCH 2/2] lavf/mov: support gopro hero moments udta tag
Jean Caillé
jcaille at gmail.com
Mon Oct 10 13:00:01 EEST 2016
From: Jean Caillé <jean at stupeflix.com>
---
libavformat/mov.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index add1812..3e73320 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -268,6 +268,23 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext *pb, unsigned len)
return av_dict_set(&c->fc->metadata, key, buf, 0);
}
+static int mov_metadata_hmmt(MOVContext *c, AVIOContext *pb, unsigned len)
+{
+ int i, n_hmmt;
+
+ if (len < 2)
+ return 0;
+ if (c->ignore_chapters)
+ return 0;
+
+ n_hmmt = avio_rb32(pb);
+ for (i = 0; i < n_hmmt; i++) {
+ int moment_time = avio_rb32(pb);
+ avpriv_new_chapter(c->fc, i, av_make_q(1, 1000), moment_time, AV_NOPTS_VALUE, NULL);
+ }
+ return 0;
+}
+
static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom)
{
char tmp_key[5];
@@ -303,6 +320,8 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom)
parse = mov_metadata_gnre; break;
case MKTAG( 'h','d','v','d'): key = "hd_video";
parse = mov_metadata_int8_no_padding; break;
+ case MKTAG( 'H','M','M','T'):
+ return mov_metadata_hmmt(c, pb, atom.size);
case MKTAG( 'k','e','y','w'): key = "keywords"; break;
case MKTAG( 'l','d','e','s'): key = "synopsis"; break;
case MKTAG( 'l','o','c','i'):
--
2.7.4 (Apple Git-66)
More information about the ffmpeg-devel
mailing list