diff mbox

[FFmpeg-devel] lavf/mov: support gopro hero moments udta tag

Message ID 1476798475-70454-1-git-send-email-jcaille@gmail.com
State Accepted
Commit 6498549fd75f679820a059a65ece1df4666aa46c
Headers show

Commit Message

Jean Caillé Oct. 18, 2016, 1:47 p.m. UTC
From: Jean Caillé <jean@stupeflix.com>

---
 libavformat/mov.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Comments

Michael Niedermayer Oct. 19, 2016, 11:07 a.m. UTC | #1
On Tue, Oct 18, 2016 at 03:47:55PM +0200, Jean Caillé wrote:
> From: Jean Caillé <jean@stupeflix.com>
> 
> ---
>  libavformat/mov.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)

applied

thx

[...]
diff mbox

Patch

diff --git a/libavformat/mov.c b/libavformat/mov.c
index cd3e46a..011eb77 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 && !pb->eof_reached; 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'):