From patchwork Thu Sep 30 14:51:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 30791 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp746048iob; Thu, 30 Sep 2021 07:52:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw74RJ3LXAJ98faBWchh3pjt6Mfw9KxzYRr/4OxMe85GKb9HlbPRiwOaJR/OZSYxT9SHbcZ X-Received: by 2002:a17:906:3383:: with SMTP id v3mr7431069eja.213.1633013525120; Thu, 30 Sep 2021 07:52:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633013525; cv=none; d=google.com; s=arc-20160816; b=tMOms9NuWTrxIO2BT1hDeuojPcfdeHhUa8wtXZRe6ZWdnRCyhl3Eq9WpsJnDSvvjpn +eHXhzhx7Ukklypy6uoYQlePSsaTom++fEb+sLOODRBhua6iMZq8WH2HFog3v40g2U66 njft4s2q5mmCJveUsknCbijdPfvNGy8H/trlNKU1dNYUnDTZmHvLCXObiAThP0uaTyVz 0o2yEROdMNKCGxvdqPYw7qEOa7GP56u1kgEOI4RCczMD25zvrybqbNMiaK1QgZQP2UUJ PJxTVPDproEAeNBGkVhetEl2dsvpNrNURZrXhyA5SO+mvE63diCzXnyMZaczPcYJjTcy B22Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=oi3v+K5fRG/I11fc8VEKq8LiHYl7EJmMCIuwuCjtVC0=; b=dExmrn/QrfcMcObI1LsyAQJH6nFhyDMG3eHk9gKZn/ZmwDdIh6eyTyErnxtATnJ3Bv FiAEwuIy1KGr1cteZcJCNjDwqmAIdzAPsMwDF2Cmxow0T6kjqvJuLNsAgB77IU/ZuiRA SKAPkEmdZNQLvOxngoJZgZx6274D5gACOkXTrinSg9qWv1BMPPKRrcd3x4iuxP1J3V1R 1185kAxso1YWjxe828Wyzp67a4cKNU5l4MIeIKKk9SsMchAF0eGUe16TeRnFZyBm6s1U 4j96AevFtDA9WZBb7XfJkObX6zuC69mydtUJFmdSihWlwxtoPYMSBVmBgOhMFNWJiIje op5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=bMJXdVnU; 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=QUARANTINE 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 kl24si4069529ejc.190.2021.09.30.07.52.04; Thu, 30 Sep 2021 07:52:05 -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 header.s=20210112 header.b=bMJXdVnU; 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=QUARANTINE 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 7E8D068AED2; Thu, 30 Sep 2021 17:52:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7F1E68AEAF for ; Thu, 30 Sep 2021 17:51:53 +0300 (EEST) Received: by mail-wm1-f50.google.com with SMTP id b192so4905909wmb.2 for ; Thu, 30 Sep 2021 07:51:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=tkgULBRy1YCQl/yGhvobgN861LRiVJmSMW/kmsn6EpY=; b=bMJXdVnUdHTKnRCiVOBlxqyklkqkV5QvkyNRLM9XhGGRuNDnIvn88rpdATQYSt4SoI oyCV3v/HmMESvlGtBqKzRel2VodYpGrZZxFe9q8ffyJK2ghZkBaGwc0H+qMyr4UqsYfm oEtTRkPPsEs+jc7RW8veIr1L1Bzn3+Um8mP6O62kZDMXlaMKg93Lkclh3SARgCCtAQCq MPhw05ujb1guaWqhsPZrb4W8bXdQSO1srmlTEq3s/YlS0E8e5YoM+IjG+rACuHKbbTW+ fzsY9uEqbMK5gViVhnFl//OvpnTQpq/Ahio3aA/4DassymZFNvNRtxrS/1kuFPDdeaH4 D+7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=tkgULBRy1YCQl/yGhvobgN861LRiVJmSMW/kmsn6EpY=; b=MgMvIVRCispL+S8lkelWgZBBhJs+JzDwmlmZph+PpJKMLMIEMPvosNiYPeNkzRYYVW 7smjAoTqekfzdbd4/WbEHURuyOZQvEqGZ0x85tUhpN+SDf24CbhURasGbFq6c2WcRmlr YoTVdjuysRlpWTW6+W23LUiZVBADyGFaXxAbUMlphWGeqoUYLcfIiXsegxLmDQeaZyXT OsL9Wd+eyMm9HvskOW6nEWjwZvsaz67NORamTukBWSruuxA6eOH6yU/R1N/1AHwwLsQQ G1dH+mN2lZpee1PGQisF3myhC+x670KzpmZijFwjT+XClAzILSb/SOL7JYPzwYet55sZ 6H3w== X-Gm-Message-State: AOAM531RXg0+t9gverCZ7fJ0SLoLdiXR+mEWCdN4qk7ac2hRSP57J3N8 1aWgHoN7T8k1UOt8ykxk0HCfOF8mN4g= X-Received: by 2002:a1c:7302:: with SMTP id d2mr16250594wmb.92.1633013512952; Thu, 30 Sep 2021 07:51:52 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id n66sm3212446wmn.2.2021.09.30.07.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 07:51:52 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 Sep 2021 15:51:40 +0100 Message-Id: <20210930145140.535362-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] lavf/movenc: Write 'dby1' minor brand if Dolby content is being muxed to MP4 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lMtFiqy51qnp This is as per: * mp4ra: http://mp4ra.org/#/brands * Dolby Vision muxing spec (which is public): https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby_vision_bitstreams_within_the_iso_base_media_file_format_dec2017.pdf Signed-off-by: Derek Buitenhuis --- libavformat/movenc.c | 9 ++++++++- tests/ref/fate/copy-trac3074 | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 7650ac5ed3..1a2f24c410 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4991,7 +4991,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) { MOVMuxContext *mov = s->priv_data; int64_t pos = avio_tell(pb); - int has_h264 = 0, has_av1 = 0, has_video = 0; + int has_h264 = 0, has_av1 = 0, has_video = 0, has_dolby = 0; int i; for (i = 0; i < s->nb_streams; i++) { @@ -5004,6 +5004,11 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) has_h264 = 1; if (st->codecpar->codec_id == AV_CODEC_ID_AV1) has_av1 = 1; + if (st->codecpar->codec_id == AV_CODEC_ID_AC3 || + st->codecpar->codec_id == AV_CODEC_ID_EAC3 || + st->codecpar->codec_id == AV_CODEC_ID_TRUEHD || + av_stream_get_side_data(st, AV_PKT_DATA_DOVI_CONF, NULL)) + has_dolby = 1; } avio_wb32(pb, 0); /* size */ @@ -5029,6 +5034,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) ffio_wfourcc(pb, "iso6"); if (has_av1) ffio_wfourcc(pb, "av01"); + if (has_dolby) + ffio_wfourcc(pb, "dby1"); } else { if (mov->flags & FF_MOV_FLAG_FRAGMENT) ffio_wfourcc(pb, "iso6"); diff --git a/tests/ref/fate/copy-trac3074 b/tests/ref/fate/copy-trac3074 index e541af03da..4748296c2a 100644 --- a/tests/ref/fate/copy-trac3074 +++ b/tests/ref/fate/copy-trac3074 @@ -1,5 +1,5 @@ -da6122873fb83ce4340cf5d0ab8d475e *tests/data/fate/copy-trac3074.mp4 -334012 tests/data/fate/copy-trac3074.mp4 +452d91e7c6889b787717fef25b6fce43 *tests/data/fate/copy-trac3074.mp4 +334016 tests/data/fate/copy-trac3074.mp4 #tb 0: 1/48000 #media_type 0: audio #codec_id 0: eac3