From patchwork Tue Oct 18 13:47:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jean_Caille=CC=81?= X-Patchwork-Id: 1052 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.133 with SMTP id o127csp698146vsd; Tue, 18 Oct 2016 06:48:12 -0700 (PDT) X-Received: by 10.28.4.16 with SMTP id 16mr762559wme.39.1476798491289; Tue, 18 Oct 2016 06:48:11 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id kx3si38812355wjb.209.2016.10.18.06.48.10; Tue, 18 Oct 2016 06:48:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E098A689AD4; Tue, 18 Oct 2016 16:48:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D07A1689209 for ; Tue, 18 Oct 2016 16:47:59 +0300 (EEST) Received: by mail-lf0-f68.google.com with SMTP id b75so32513353lfg.3 for ; Tue, 18 Oct 2016 06:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3Hxzm3IFiF8MYbk4Adg+36zcvpFLARG+b6ravxSM0F4=; b=iqHupG5mKggSKt9Ue5ZutPTZFu4NKH+UTwSyVeQmAjIQlEl1YqfrJnhFqhpfTCd6H8 GhsRqE2XYbVj6g0xIuVgTYSokoqaiwL0yxVbSShCr4PTZb8wxMQl/2zZ32H3/mKaL6cx xo96JCJ6C7BrMy336peFQFDqupfdyMN9X0i00AfpOecfWHn4H7Pa0XhAzTwjIBc5prGV E/ya99Te+rFZBxyJOnc72sZEnKjzJl9AsmxYef5ij0VIrD1/udE+vzHFMoW920ngnKhq 40TQIrtAGftEeK1OpMBvdNWBXjO8seDHkIoAxI7XLNk62REg7C6k1CdaOfJ1J9SGv2hI MqQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3Hxzm3IFiF8MYbk4Adg+36zcvpFLARG+b6ravxSM0F4=; b=gcxW9ltHhsDHDJWYV9OnrSgVCrn5rlREy5lu+/GRgeAHCcBqhTCpiA0YW/gQpbq89M 6SFQ97G9pCNwOg574YyYCfg26aiSt9Dwo9+8k8isIeutFxH2ypXiT7h5DnalzAK9DSDU 1f4VZxVBx2Iw/f9Hncs2K9ZeF0ThOWuzHR/CJCZdBGldC5pLiT/NNzl7v7ApbhClvnNE x1307D/1I42zq4Y7t5bRsGAAxL3KJzR1csupA14gWt39whcdFnbXukbtYZwVGtztst+5 GOmWcHvW+GZsk2jwWcz7fmXNaz8k1EAOT2YIShPxNUfGrLpVO5bZGyHqzUKXEscvhyCu 92Nw== X-Gm-Message-State: AA6/9RnzsSgPjq7+M9iaH9mZMDShTP/cW3AnIZT6aBOk3NcC64LsPNXs2TSa9+WIYXRkxQ== X-Received: by 10.28.54.97 with SMTP id d94mr11413537wma.36.1476798481686; Tue, 18 Oct 2016 06:48:01 -0700 (PDT) Received: from MBR-30922.gopro.lcl (LPuteaux-656-1-74-135.w80-12.abo.wanadoo.fr. [80.12.80.135]) by smtp.gmail.com with ESMTPSA id yo1sm62943752wjc.16.2016.10.18.06.48.00 (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 18 Oct 2016 06:48:00 -0700 (PDT) From: =?UTF-8?q?Jean=20Caille=CC=81?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Oct 2016 15:47:55 +0200 Message-Id: <1476798475-70454-1-git-send-email-jcaille@gmail.com> X-Mailer: git-send-email 2.7.4 (Apple Git-66) In-Reply-To: <20161014225844.GM4602@nb4> References: <20161014225844.GM4602@nb4> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavf/mov: support gopro hero moments udta tag X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?UTF-8?q?Jean=20Caille=CC=81?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jean CailleĢ --- libavformat/mov.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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'):