From patchwork Tue Sep 28 14:31:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 30631 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp5262407iob; Tue, 28 Sep 2021 07:31:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzVr+kUXVNCTZulx+jtaxF4ccvloqPCIqAsTG85QLABRUPxK+wJcfKWyLW9ESBTZ9kl1cX8 X-Received: by 2002:a17:906:25d7:: with SMTP id n23mr7145457ejb.322.1632839508051; Tue, 28 Sep 2021 07:31:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632839508; cv=none; d=google.com; s=arc-20160816; b=wc9JoiTjqY0Lk/ZVry5LVj62aBouAtMvw1g1qXOUrZNmtzJB3Gr1DZo6sGxnY+uaD/ SutV4SEsxj88H7NfAubyLG3+4HNh9tuymqiyXJ90nyuR2p0/JLA/+5QCa+EHiSt8vbWW OiH3ocE3LMSVaL6Whhnf3pmLTzbCV6+8SAJUEzRdK6b/CZHnU0DvcCOTUGmDTeh98/BL PZj5FffkM+PUy6I3BIM4gJjawI+TT6aTe464XCCP7HsurvtvRHTnug7Ko7zb/JtMlNn0 gOFaketKp0bPkmbnolxTn+Odxic/nJsZrrCAvzD+BJeod3v4eYQjAkAuG9cod0QwjQ2r WgFg== 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=zk1f+zDageC5avuOzq41Ia4FE0FL/R2IEOSY/0d1YW4=; b=kMFr/1nDdGC38T03Lc0QloOrKii0tMa7oH6uLzq4NwiDDPM4D0HZTfH2Akvfe90meF whCqhAgW6iC4w5ZL7ZBUVBlStuk7tfMDbKyg1NDiqNkKf+W3GYzzuyix3MJ2EH6ehJfi Erye681b7f96QQkLWNOcvGqrzp+6g3tLS6TJixqhs2EO/FxsbIjfyFIns3mH8lz9uQPg TBK72mt+GwzVSDWWCtn/llRVxkZ5OiNEbNbLFVuUVXMcQp3X0EfUAhgMvlNQcHgt94NK CNmgT0fFiL29QC67rs3w6jR3bzQpzLeDTvd7UeL78A08gEiwENcjH9hwnDheurLAGKx8 8DjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Aqivx9+G; 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 n26si612937edr.397.2021.09.28.07.31.47; Tue, 28 Sep 2021 07:31:47 -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=Aqivx9+G; 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 911586881A8; Tue, 28 Sep 2021 17:31:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3431568011C for ; Tue, 28 Sep 2021 17:31:37 +0300 (EEST) Received: by mail-wr1-f43.google.com with SMTP id t18so58489223wrb.0 for ; Tue, 28 Sep 2021 07:31:37 -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=/uDuh/VQI62irhQro4XkKfa/XKIWXxI0g2hoGSwdhEc=; b=Aqivx9+GR+/VtyvTyoF/NUjw3X3Y3l6w9Z/mPYov9udiVXPuCSfOJJcVxj2+2/6Lio CzVgZREkjrfjsbGvZtiRStze4TiRPNMwvUHzljds3m3IhLYUtZvrMxMUWN3zCUrNsz8G 34JDN1H56SVDGpNah8gz6zQYHh8cYNcZ6i61cXYtMd3n+2xwCUXfjobvfnBQRaJCuXKK lJqfyy6wV0hSPj+ONKY41q9pIvjaBTxaIe8SQSDxVaOnpSAE2gCx8lXWFXE6/3EUFRYG 4TbhbPdqFQB/wTT0dSM41gbKV2UkXaqcbCtIrw0igT7uAheKjsMfgEgBO8HEA1cAiuxB 5/jg== 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=/uDuh/VQI62irhQro4XkKfa/XKIWXxI0g2hoGSwdhEc=; b=I3OSGs0NZIJdEHELWd82FD5uUuP3pVN/bST5+Ubz6mm0A8GGoiEYhF+oK6QSp0SP/j d0EcnHSnKm/L+75tU8HJPYWptdWdRf0Uoyve2XZG39mfk2er2q3jFk2z9QdOkPfmbOZU w9JPGbSCnBhcQ96sNaLhMqww/WpBjB2b4KWvpT3HIfcJt/eE3T1iVJlzTxyTFODCYcWv Bf9EKUzbGNcEGLhPh0kqyfWzQmkycKAZMBgwX6v/yDe1/uDGgivwen6OAm9lw+/Z3264 /DCUJizFsmWrlM9GEL9/+cfhfASCJg7Ps99PtRXeTfwLkuose0zlFPJ5VGx4QhTdxqkd OG8A== X-Gm-Message-State: AOAM533JgtiDyyVTrq9bfu7zT1HTSz7wmfzJPkoU5Sod9vZyxdPuXCHn DLAf2jQFaT5+36z624VBflZrKQUMavVEzQ== X-Received: by 2002:adf:f6c1:: with SMTP id y1mr433961wrp.172.1632839496350; Tue, 28 Sep 2021 07:31:36 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id 10sm2777400wmi.1.2021.09.28.07.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Sep 2021 07:31:35 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Sep 2021 15:31:27 +0100 Message-Id: <20210928143127.433967-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] 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: w7DLvshE77em 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 --- The sole FATE change is just the brand being written for EAC-3. --- 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..fe3405d271 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4991,11 +4991,13 @@ 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++) { AVStream *st = s->streams[i]; + AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *) + av_stream_get_side_data(st, AV_PKT_DATA_DOVI_CONF, NULL); if (is_cover_image(st)) continue; if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) @@ -5004,6 +5006,9 @@ 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 (dovi || st->codecpar->codec_id == AV_CODEC_ID_AC3 || + st->codecpar->codec_id == AV_CODEC_ID_EAC3 || st->codecpar->codec_id == AV_CODEC_ID_TRUEHD) + 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