From patchwork Fri Jun 2 02:51:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3787 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.10.2 with SMTP id 2csp1084178vsk; Thu, 1 Jun 2017 19:52:27 -0700 (PDT) X-Received: by 10.28.35.214 with SMTP id j205mr1321687wmj.76.1496371947509; Thu, 01 Jun 2017 19:52:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1496371947; cv=none; d=google.com; s=arc-20160816; b=JvTGOwfMAygY327qyoGL+pj3zuJ1ewSEjlSoggRhkmavHMpFabEOptRWVCJ2AixFc8 8ru4w+RJpbgvPU+VS/UBCivovQM4uKK/M4sIGf1ZL4W8fzsg4nvnM/N1jM8kVGTrrQdn JFfvopHQ+lyHRPd2jwFM2w5An8l8u403TWfX0uheXQSDIh5WBKVwMvywGLXxb3b8XKdY qQITb593FTimWlGk7VFJ5yQBvSEDFVpgF6DsvFAglHzeU6aROZYsDfJQn2Q9Ex7txuH5 5sqiM947QPUJeBcK1CmaYEbEHkzmy5c97T4Z4XhAFPWB0ih915jdtPN8OpLeRjsTLui8 W65g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=j5t9Jv+5Ynvc8l3WURbl7nFOOTu4fbNa4vm6eX7e0L8=; b=t7NlYdjhaHwSBz6KTXwMgG6L6AEpK/k69dHZpOaKYtYjqDAUPN4k7Jp7+5zP9vcoXJ osSa67b7owvTUfY77Dya1S/7CjKCJg+YQDo5A3y5zDwyOGTkDuKqLWzmapgpV4bOlgqF JUMJrD5t8bq7HRRVtBcb8G95FX9Ato/FF0i9FUEJgFPgwOg9WZ577MoknbTlSrmtCG8C WLg5FyyrL4zMDm+5uuBSMNz0rPSy1a4593s8aA8l9ZFmod/Dwd3+bppmm5exZhepOgVf d66Y5GT9u7nDvRMCl6zWA0lLrCfrxUmEYW5Bz40silWmCsH9NyBW37r+R0YFcoEaVe9B 4XPA== ARC-Authentication-Results: i=1; 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 sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u144si1066416wmu.71.2017.06.01.19.52.26; Thu, 01 Jun 2017 19:52:27 -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 sp=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 0238F689B83; Fri, 2 Jun 2017 05:52:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 14CC0689B35 for ; Fri, 2 Jun 2017 05:52:12 +0300 (EEST) Received: by mail-qk0-f196.google.com with SMTP id y201so3736649qka.3 for ; Thu, 01 Jun 2017 19:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=hiSwyqZHPQeO/Rwjb8W9zuGRexrg+nl6ZTD0sdFqOG8=; b=I60ite4zne+3Maz2FJ0uwBsz9RJ9fJ3csDwSNmC4qmH4yP1dUSeoxHJOaWS8LuI11o H6WyFGkfEwk+AUti+f1Yzf61VxLSQPU4ycOCYsu89Uastcsnf/SicfIN9T1gQOdFqvrm 35+NPr3uw4/sIfbuPSMuC+AchR1w+U7IpTDLa0VFYv8q+Rfq67czuO8wPADj9Qq97Kuz YqDQwbMzz6MpLyDFVIflHHuRYqfh59YF8qJTH1TpQ0DC30C4sS0jKrtoiQkkc2narxKM X7I5aHkLeMVBohAdzUHTH8n5tWPY7osJr8hSvtBljsXgteA55eNkZ3I6Qfig0Ely/OtL AjDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=hiSwyqZHPQeO/Rwjb8W9zuGRexrg+nl6ZTD0sdFqOG8=; b=QEhY6kBdXwtVA3I6OquDxdBdEBI95bChk88bPSrUcsPb66etaD804zTyztvBaFF6+h vpkky7qqUM/q6ElgR6T9LaNdZVGbUkoeK7lurDvw+NG/qaPy1FrIvNv9hWFhoM/x4tQr mpR1zk40X9kE7Bi49r4DtgJuO90DdAViAfO0pD+c/IM8DYOliOtnn6hNZObcZV5qgBiJ nU5lGV66O+n9JcpMfdkyoYJ5zswJkX8R+ql3lpRmNb8emFmAkRZ410UPSqWl5xSoExF4 WA5l96rymgMgeI68sLv0/xE3tX96Wr/XSBi+/IVsq2lJRKvSjfdDgb6sTj9hNT5FoRMv k1Ig== X-Gm-Message-State: AODbwcB6N7ewPj/DtcZkyShum+xm8b3rCIGAvZffhfkATptrsD9L3463 iG8p6YxeL352Kexs X-Received: by 10.55.4.140 with SMTP id 134mr5760939qke.38.1496371936235; Thu, 01 Jun 2017 19:52:16 -0700 (PDT) Received: from localhost.localdomain ([181.231.116.134]) by smtp.gmail.com with ESMTPSA id u129sm13760353qkf.59.2017.06.01.19.52.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 01 Jun 2017 19:52:15 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 1 Jun 2017 23:51:59 -0300 Message-Id: <20170602025200.6780-1-jamrial@gmail.com> X-Mailer: git-send-email 2.12.1 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/matroskaenc: also write chapters when output is WebM 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" WebM supports a subset of elements from the Chapters master. See https://www.webmproject.org/docs/container/#chapters Addresses ticket #6425 Signed-off-by: James Almer --- libavformat/matroskaenc.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index c0a1f1a387..24114d6755 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1483,8 +1483,10 @@ static int mkv_write_chapters(AVFormatContext *s) if (ret < 0) return ret; editionentry = start_ebml_master(dyn_cp, MATROSKA_ID_EDITIONENTRY, 0); - put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGDEFAULT, 1); - put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGHIDDEN , 0); + if (mkv->mode != MODE_WEBM) { + put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGDEFAULT, 1); + put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGHIDDEN , 0); + } for (i = 0; i < s->nb_chapters; i++) { ebml_master chapteratom, chapterdisplay; AVChapter *c = s->chapters[i]; @@ -1502,8 +1504,10 @@ static int mkv_write_chapters(AVFormatContext *s) put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERUID, c->id + mkv->chapter_id_offset); put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMESTART, chapterstart); put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMEEND, chapterend); - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0); - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGENABLED, 1); + if (mkv->mode != MODE_WEBM) { + put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0); + put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGENABLED, 1); + } if ((t = av_dict_get(c->metadata, "title", NULL, 0))) { chapterdisplay = start_ebml_master(dyn_cp, MATROSKA_ID_CHAPTERDISPLAY, 0); put_ebml_string(dyn_cp, MATROSKA_ID_CHAPSTRING, t->value); @@ -1976,11 +1980,11 @@ static int mkv_write_header(AVFormatContext *s) for (i = 0; i < s->nb_chapters; i++) mkv->chapter_id_offset = FFMAX(mkv->chapter_id_offset, 1LL - s->chapters[i]->id); - if (mkv->mode != MODE_WEBM) { - ret = mkv_write_chapters(s); - if (ret < 0) - goto fail; + ret = mkv_write_chapters(s); + if (ret < 0) + goto fail; + if (mkv->mode != MODE_WEBM) { ret = mkv_write_attachments(s); if (ret < 0) goto fail; @@ -2525,11 +2529,10 @@ static int mkv_write_trailer(AVFormatContext *s) end_ebml_master_crc32(pb, &mkv->dyn_bc, mkv, mkv->cluster); } - if (mkv->mode != MODE_WEBM) { - ret = mkv_write_chapters(s); - if (ret < 0) - return ret; - } + ret = mkv_write_chapters(s); + if (ret < 0) + return ret; + if ((pb->seekable & AVIO_SEEKABLE_NORMAL) && !mkv->is_live) { if (mkv->cues->num_entries) {