From patchwork Mon Mar 28 23:24:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35034 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp625848pzb; Mon, 28 Mar 2022 16:26:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzDky26gzg6AFCGpzT8NNq2KZcKbT5eiw+RHzNZLwKTsPbxdJMExzv/SOo4x70JImWW+oGi X-Received: by 2002:a17:907:8d17:b0:6df:c072:2f66 with SMTP id tc23-20020a1709078d1700b006dfc0722f66mr30062147ejc.444.1648509980812; Mon, 28 Mar 2022 16:26:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648509980; cv=none; d=google.com; s=arc-20160816; b=YsC1sXl1G7i9pBj7JcNmd7Dh/D5yUM+55Aoj8wA03uO4ut3Xts2N8qHEZOLUdylPUE iwHyOICkaavud1LlrDN+UteFWkAzTQCbxGq0ZsDH2pJgGjgeKPjOf6vRa09M19HFTmxo X7w3e0ovJXqkUs8X1KATN/z4IP8xZiOT9pPICc2jmJ8mTT8qdH7oR5xZWgigaX1Fv2zQ Z+P5pDaePHvpm31ulTS5FqhRQFAZs8U62peYDwAA7BZxTkdBYuuLle+yEYSXpZFRyeBi X2ogWImeKX4LLznvH1aEJOYd4QGDFcafdn213uttgL52W69+CmRKIrx/2ShV26gNb05U Kmew== 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=1RGmb7ILK1WDYAysxbSL1fEGDMXVU4fNKDfkJMe+moA=; b=vPvzx+waBy/ICeQxZI4dkwLKhumdAVXpH4kai5yw6WO/QEYfqeqzzcc4teArQyK4Uo P/K4vDuiNlCl+2hHErQMOKkDChkYxFAV4XUerkZ/asqRMSihiD5RRVCjgcD9mK/ginmm jFRLgXfDd9UNIjulRjVG+7wglZrwS0Fe1kUHBIGYIk2YGuVDm5peHR1OmXSQYhpRggO8 Ep6pdeBnsrDqoly57PXX/a52XRusXik26lclBPz5QImnOqFttlyHo4CnoYSuI8Iut1kt KaXZkQeyJfIlSnFGLvw88qiN8WYHIdMKdrvXPXM4NMQFhRMqXaEHxn1i09hlW5b2iGPO buRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=jGG7W0zJ; 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 rv3-20020a17090710c300b006df76385ec1si14495658ejb.865.2022.03.28.16.26.20; Mon, 28 Mar 2022 16:26:20 -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=jGG7W0zJ; 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 62B8168B2C8; Tue, 29 Mar 2022 02:25:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C85668B2BB for ; Tue, 29 Mar 2022 02:25:46 +0300 (EEST) Received: by mail-oi1-f181.google.com with SMTP id q129so17377875oif.4 for ; Mon, 28 Mar 2022 16:25:46 -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=UzILGD5CBCFZsMjnd3TYtFeM+idjVVzp3NqGyawluwc=; b=jGG7W0zJ9sS2a+7o8N082+CZswVy2acpuf4ZwYntToJxxqNn1V5aHmqe00SvhLlpjt G0Q2WxMwEgrHBGZom+q2ec/PchCnNKxCkct17rkFsxQSt5VcM1KDfOngxXQoJmSujE6r VU9EydQklq24KdTbEmS5Vq1sEsJYkArPUHKYaFwekqlEP3vwlMcLfqnCtQB4HnseAUmv eeaQJGhyjhuwpt2xMndRGLxgY5WbOyOVqJP9DOmSEn+RpO4d/Ero6+U5uymU6ZgRNTrq o0Z9BMMgbv+ph85xP1ruJ8L5vDVy7pseU/x0UX8y0g/tg+ldv+toTrP7eFbuBcJ/A9cV sC/w== 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=UzILGD5CBCFZsMjnd3TYtFeM+idjVVzp3NqGyawluwc=; b=4pXovh6pfZTLDWDLeti/VVr7NZc8sFeDncjKHon9j2IP0BQ2wJ6bhNM2kwNPb1a4l2 xOty3Po9P0a7yzUCoTIZ/mDCO9yTBcoxeQ3utNAA3wCqeBJZUTN0tEv3MjNr7lHuwPUF 8do8jBLq6xic5d/RCn+E+lPGK6ZMtr+rApP4ADgn432dVGCwKb61hyNA6d6qVfyOw1l9 /TH86mKQw/FqaGBkemqdRfsnf1eQG6drzSFRbtL9I1cH0G+nXynBR0DDE9waypT3Djkh T+92svfAAIQmDCw00i3obJkrTd9UeqAQ79yK093J+mS3wqhQzLOptBBkIpO8L4e9uD1p ychw== X-Gm-Message-State: AOAM5311a1VMJmfIRC3BHU+I8YrZqMBvIehwf6qRdq1LplUxy2T6iPy6 rs9N2339QtK2FHs46utNkavU4VarWZWEkA== X-Received: by 2002:aca:3e41:0:b0:2ec:f51d:946 with SMTP id l62-20020aca3e41000000b002ecf51d0946mr848159oia.138.1648509944536; Mon, 28 Mar 2022 16:25:44 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:43 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:47 -0300 Message-Id: <20220328232453.54773-1-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/7] avformat/mov_chan: rename mov_get_channel_label() to better reflect its purpose 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: Q6ftl0o0GUTI This function turns a mov channel label into a lavf native bitmask. Signed-off-by: James Almer --- libavformat/mov_chan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/mov_chan.c b/libavformat/mov_chan.c index f52239d347..4607540297 100644 --- a/libavformat/mov_chan.c +++ b/libavformat/mov_chan.c @@ -485,7 +485,7 @@ static uint64_t mov_get_channel_layout(uint32_t tag, uint32_t bitmap) return layout_map[i].layout; } -static uint32_t mov_get_channel_label(uint32_t label) +static uint32_t mov_get_channel_mask(uint32_t label) { if (label == 0) return 0; @@ -590,7 +590,7 @@ int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, avio_rl32(pb); // mCoordinates[2] size -= 20; if (layout_tag == 0) { - uint32_t mask_incr = mov_get_channel_label(label); + uint32_t mask_incr = mov_get_channel_mask(label); if (mask_incr == 0) { label_mask = 0; break; From patchwork Mon Mar 28 23:24:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35036 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp626013pzb; Mon, 28 Mar 2022 16:26:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/efdUiNQcpfZBe79AyZ07Vuurwp582GlC2qonoFBuJb8oQmLrQTD5wJVAzy+QehfQ5ysB X-Received: by 2002:a17:906:e16:b0:6df:c796:25b5 with SMTP id l22-20020a1709060e1600b006dfc79625b5mr31454564eji.302.1648509999070; Mon, 28 Mar 2022 16:26:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648509999; cv=none; d=google.com; s=arc-20160816; b=T6V294RT2m3nS6TwAHS/mBx1yUV4AkDUehfGTwBC1geegWynNC5++h80Kh6FCpGb/V xQl6RJ6K7ALhzqgDay9zGEXUyeUM8sTzcY5ls+XaRJY2FA8sFuNqEyMnJfmoi178W/dH vHI3wH3cOxsSFCFWm0PGMlemikV+bzmeTJR2Nyyl0kl6Ymxfy8CHHBB6AuVIDdgNXkJu o7aVb9glPvODAiSo6rfEkOzSUfiJpDoOIOaIiCC5AtE+8KLE4igo0r/CkV3S/TekXjNi 7TtnyoyLVMPpwir4uAu2zl1WiHkcLUeCcqn5aD9ySqxyq6Io+mjDWglR1QktVkofO9OG oybA== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=0nuLFO9bwgD+tjoufV0TwwUSNfFIZMIfRuDnCt6uwSM=; b=xSCCZtnY4A3+V9SdyZ1WhndY0V7CO9II/2GOZcXeQEveIfhyhVCa0cao72CmL9RBG7 dBigEoTiPUZODLZSTPLlXGce3DP5YIPg7YkeKQbUJ4bU5I5vPTnmpWQlxLgh+vyWO5/+ cE7z7ULvpd+ghRjV31GHnYtGqTdsa+f63+sbQecyUall4k5qWMXO2rKATYNfkIJHkMNL syAcb1anINMNpb2sCAmSILcOoSUkxmOWdHrJnUpgNPt71A7uyZkNO3J5sFWTmvNZJHQB 5Pxt3nsmQGh/6wO3xkdkrpZEV/F5utJ5M+PM5BE6xKKi48EkYbT1NKuX2aSrmu7dAZNK NkzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=D6fwbLM9; 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 kl16-20020a170907995000b006df76385dd4si15521937ejc.628.2022.03.28.16.26.15; Mon, 28 Mar 2022 16:26:39 -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=D6fwbLM9; 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 49D1768B2DA; Tue, 29 Mar 2022 02:25:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f182.google.com (mail-oi1-f182.google.com [209.85.167.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5275868B2C4 for ; Tue, 29 Mar 2022 02:25:47 +0300 (EEST) Received: by mail-oi1-f182.google.com with SMTP id j83so17358705oih.6 for ; Mon, 28 Mar 2022 16:25:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=cirjMwNbPHPBwO7+b89ehEqEXfSFJvkmi/bXphsCPgQ=; b=D6fwbLM9yXCiO1npKnWjWb9X9p98zUUeNLgpBNUqK1D+TcSxxMxguVh9Gf1xX+Obhi 7VZ+BA9k9wifmGbRQbplJGPrU/5S/CzYbgcsuWS3I2YX+tV+TAvJu+/6kQTCqw7NS8Mw 97gwvuYcB5D/9SV4uy4hjS1cXBF+ZuUU8ptPIqWhfY2EZ4x7w9gytw/6Ud6RXp2vYL/G p0ieQoIOBG0ClX7nKToJ8UiY5VsrUi7Nv5Ef3uzlA2kiTtG/ejg3j/csqqxYGbV4abMH 7kTYzfWYq/ZRdHGoZgUhNxelg6o0VKT2fe9DxPtF6ux144Y0BeJ0kJSnlPbLT8l7DVKC 7Vhg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=cirjMwNbPHPBwO7+b89ehEqEXfSFJvkmi/bXphsCPgQ=; b=u+GveWeXuKvh3xU5FKNNLbpv20leBHP5hmTzXnfOoDRPPXuYMTHcKGBZpnL+A5fCng cNsF79pPdk2BRZBO0pwnjFtRbr7dCMMVfTvY/FdXvdmoBaUHzqEFP+Foot8nm6OaPg8S TA44Cb9z0V4uUyt0MKZY4zaEFu1Ovrv1AEUKYUJex2ESfTYZOBdgnXZe3e17/0znoBWl vUeRxGcZTDhGt3UEu1dcGIuK4UnYCNjofOTIl63qrYoLwXFwY0kZCfjLTW0kTcxjjN1o 4vcqU79IjtI0vZFo3aw03YisiiQaHxF02wVnNuG3j0uWg0yJ9lv1ByDjTDteaq/DDz8t Rs0g== X-Gm-Message-State: AOAM5306RUD05LMuRZjDiDjogplibdPLa2AxCkPOb32dhmUxbMw9RXXm uOciMpnx90Y7Qy3DlQiyh/k70+PbrtyJ+w== X-Received: by 2002:aca:2311:0:b0:2ec:cb84:c5bb with SMTP id e17-20020aca2311000000b002eccb84c5bbmr826294oie.246.1648509945763; Mon, 28 Mar 2022 16:25:45 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:45 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:48 -0300 Message-Id: <20220328232453.54773-2-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/7] avformat/mov_chan: add a few missing channel label mappings 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: bGK0vhPVSjsk Signed-off-by: James Almer --- libavformat/mov_chan.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libavformat/mov_chan.c b/libavformat/mov_chan.c index 4607540297..98773bb460 100644 --- a/libavformat/mov_chan.c +++ b/libavformat/mov_chan.c @@ -485,12 +485,18 @@ static uint64_t mov_get_channel_layout(uint32_t tag, uint32_t bitmap) return layout_map[i].layout; } -static uint32_t mov_get_channel_mask(uint32_t label) +static uint64_t mov_get_channel_mask(uint32_t label) { if (label == 0) return 0; if (label <= 18) return 1U << (label - 1); + if (label == 35) + return AV_CH_WIDE_LEFT; + if (label == 36) + return AV_CH_WIDE_RIGHT; + if (label == 37) + return AV_CH_LOW_FREQUENCY_2; if (label == 38) return AV_CH_STEREO_LEFT; if (label == 39) @@ -557,8 +563,8 @@ uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size) { - uint32_t layout_tag, bitmap, num_descr, label_mask; - uint64_t mask = 0; + uint32_t layout_tag, bitmap, num_descr; + uint64_t label_mask, mask = 0; int i; if (size < 12) @@ -590,7 +596,7 @@ int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, avio_rl32(pb); // mCoordinates[2] size -= 20; if (layout_tag == 0) { - uint32_t mask_incr = mov_get_channel_mask(label); + uint64_t mask_incr = mov_get_channel_mask(label); if (mask_incr == 0) { label_mask = 0; break; From patchwork Mon Mar 28 23:24:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35035 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp625877pzb; Mon, 28 Mar 2022 16:26:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXjafb2EhBKfvW4x50JlWNafeV+hvceTFX06fEi6Wwdtm6lGQKJe2iXck9H242KyUCA4nc X-Received: by 2002:a05:6402:5215:b0:419:4c82:8f06 with SMTP id s21-20020a056402521500b004194c828f06mr406309edd.275.1648509983361; Mon, 28 Mar 2022 16:26:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648509983; cv=none; d=google.com; s=arc-20160816; b=x8as1fXdMG1gVj4+p+fuRNyXF5AJL05LfKIOjqldaDPc1+Ttz9EYaA2pfWmvMf73V+ Nol7157AZo7eIXi/6rhpQL7w+PjcI4OFuyg3h30EZyFLnikDiiWEd8/aLELnrnfvhpKS cyGD8V883O9Zp1CgfaWzs4RIH58Vd0uQVdUld6A5Ui1vTEV10kurSNO0KX9+SgCvFGK5 BF1l0WBAXDEOrri3HV26jVZL5uazCGGM4v40fDn/Wlh2ZzC9E9G0A/C0fmR6vD0+ecvh zu4RQUNg22NY5PVEBa4caglLp5K1eu22lN7+ihUJB/4OCuIRsjsPG/OM0xQA788+FFdd uzng== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=dSAfGgjzo+mU5sLzOP/pp2ZNd8zn/7OvMk9oR+HtrwY=; b=uMB2jptaHyu4wSHCeGKVzbYJ83PbTQiCID74qRwNOvBI8/ub2d1UVQxlTUjenQHM85 JVlF3ZKSQFovpox1XH9q1y4LKEwzvqqgkcJN0jsIyKrVG+5nHAHkckssUmcvfM1GKaIe 3rNn79hW8ZHF1hdxya8yqrW7A832WtatZQCaHjzTnTUxvNQI1WHH552tnX2Fs3s8x7nx zoTC7yCpEYV/OrN/6cJwiaqKpQKRaF47DNUYPL5zRyqlma/iv/CuGEGJptG1mYEwDgeD lxe5K/3F/1xZthSZlL4yxqcVNauDEtSOQ7gpu385VnBXqRL0voKOwStOmG7DYcGy313m KbAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=RsLd+yVe; 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 sb27-20020a1709076d9b00b006e00ed811f2si19572172ejc.383.2022.03.28.16.26.22; Mon, 28 Mar 2022 16:26:23 -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=RsLd+yVe; 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 3A08768B2E4; Tue, 29 Mar 2022 02:25:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oa1-f53.google.com (mail-oa1-f53.google.com [209.85.160.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D2B8F68B2D0 for ; Tue, 29 Mar 2022 02:25:48 +0300 (EEST) Received: by mail-oa1-f53.google.com with SMTP id 586e51a60fabf-ddfa38f1c1so16914279fac.11 for ; Mon, 28 Mar 2022 16:25:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=i8h70/vBIWV+UJdNuQn214c3aTSQySOz8cObImyOwgQ=; b=RsLd+yVetFKJUI77SH5MoLvkJ/agOZt4R3aMTuFbzGM0vipJ30y4K2Zy1FR6A+tOBW Xe2va6MWeCpAvymZgjbjo7ODjS7teCdLBJHd5SUvdO1m3/RYwrIey7WtYO0GFGQUjtfN LNVTLlZGlstPu1vMEkuE8uHzzj9xeNchL77Ft3fczoRcIWfZ2IWIMJzcohOWyFfZi8iV ImUBah9UGghrtJA0rY3ikBaYh4BU6H7OWt5Ljw1VPxCzuYiP2FDzy2STOFq7IZHf76zt tkL29LBzGmFwPT3GQZ5oN4mw613UGhmfEiGuvfMOu3Cf2QXZihdSZnaxcE+Trh3GDZqo 1Vfg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=i8h70/vBIWV+UJdNuQn214c3aTSQySOz8cObImyOwgQ=; b=t9cVSzs4ImtIgNC6E3NBVcGMPp6GKWRgImhr2KoArM/yEPUnS68z2l507JMzvvZofO wy+bNGX5n/marpsxuYxCMV3LhZPZPVcAD2Iz7gjuc35+PmSL9b4eHW9CTbPg7n86+alK 1UQ44H3/0zIAm7FZ4jnOW+ro5vgzOLVnOEa7KyWbB9mcYNnE2Z4uPeFu3q945c5kHXQT uQDLKII/m00PJL/IBshTR17nYSt60Bj8NIc0s8FvKdETpQiXZERaeI6tp3x49bYkOPP9 GPGX4R8UNdTveVQP3dlpNLoesjyYlzcoum7bfi5UcpTAvytzxFXsE2C9johtT0/dM0WM po+g== X-Gm-Message-State: AOAM532vV6QZlM/PGbHcJhjrR8QFaCRwwSJv3/B1Xga67T+Ue3lqAOAg oEDmW3jlEByW13deNBSrGw7aO1hbpBBoSA== X-Received: by 2002:a05:6870:d18b:b0:d9:f452:be90 with SMTP id a11-20020a056870d18b00b000d9f452be90mr744450oac.15.1648509946965; Mon, 28 Mar 2022 16:25:46 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:46 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:49 -0300 Message-Id: <20220328232453.54773-3-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/7] avformat/mov_chan: use a higher log level for a debug message 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: v7ZGL1a8NUP7 Trace is too noisy and this line is useful enough to get it printed at debug level. Signed-off-by: James Almer --- libavformat/mov_chan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/mov_chan.c b/libavformat/mov_chan.c index 98773bb460..3c23142f35 100644 --- a/libavformat/mov_chan.c +++ b/libavformat/mov_chan.c @@ -574,7 +574,7 @@ int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, bitmap = avio_rb32(pb); num_descr = avio_rb32(pb); - av_log(s, AV_LOG_TRACE, "chan: layout=%"PRIu32" " + av_log(s, AV_LOG_DEBUG, "chan: layout=%"PRIu32" " "bitmap=%"PRIu32" num_descr=%"PRIu32"\n", layout_tag, bitmap, num_descr); From patchwork Mon Mar 28 23:24:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35038 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp626160pzb; Mon, 28 Mar 2022 16:26:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjfdOkgvXMgr0D6rwzw1QFeoZUnou5H7Um8peKBR4NurSwRSfR/vIGGKdZDLadgcwsWBdA X-Received: by 2002:a05:6402:2806:b0:418:e956:129d with SMTP id h6-20020a056402280600b00418e956129dmr405433ede.263.1648510017620; Mon, 28 Mar 2022 16:26:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648510017; cv=none; d=google.com; s=arc-20160816; b=wnTWjmi96qlkcj8XcSi13PC9iqjj0cDM1r0sUZxNBRF7xc1JxR2MGXNHGwIN2+7gfF WPTVPjeprUDQwKaJn1mkORy9oqPd7P0uiG0Ika0vlyZhGXt7lxFlKcVSa7puiegl5u2m CDzK3ZiDYkyg6Qt2frPuHoC+kXPhvz+gGXoziQ3KmRG+JH7rY1HQ0wG2QojRJeThzBcM vOHZV23lnajiDcC+f0S2WoGhxxgi6ogDfgiiz6TtFJFcusy5eB8XXjIkJ2lY3zxz/V3K QaSKSmNbFwuUYp46uktB2jMYKUeZsimxsPAY4QDF/TjFxNkq1DPjWOaYn7XDGxboilCf EUrg== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=nf72Dm3IIa5XUCRRolN8vk7050rNRtwbjcH6LxqGEoU=; b=DMFPkITKaTGJNU+PpfvfxOTYbOQ9tg0dRJ71tgeh5YXV4iflD3Zp568Tf/Eo6W+gXl RSVKPQ4WeicHryl0AiCKWupHJ5QHpBFSG7gW2VtoMNYtFUpQwa3eRHXcEp2jptdN7UoI fFhShGZdEJU2FSfDJGZYnFBVPY3FPI0YfESnW+grwheMfZiAGDhByq/aADX4kEKLf+1r AFwlzNEM5uXxcjvjTZkjjwhtQmW/qz1IcYJMvkiaspShNBZ0sKpVNI2jC/jCf80eepYm iGQ49oVWH/77fe1DWxtt8oo+4lJLAAZBF6khsiAUUX0e16eVFkkJKu1sGMOoaYywvhYp wtNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=HUzB0sJo; 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 q25-20020a170906941900b006e06b168341si14961628ejx.754.2022.03.28.16.26.37; Mon, 28 Mar 2022 16:26:57 -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=HUzB0sJo; 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 27E4168B2E1; Tue, 29 Mar 2022 02:25:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com [209.85.167.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EA4AC68B2CC for ; Tue, 29 Mar 2022 02:25:49 +0300 (EEST) Received: by mail-oi1-f180.google.com with SMTP id k10so17382900oia.0 for ; Mon, 28 Mar 2022 16:25:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=TiT6Q8IHLWLEVqdTUJYFFww7tnRXpqBtnW8v9+eIuh4=; b=HUzB0sJo+4DnLF8wUp6jJfDlpa89vFCQQ6y5wOEIhGB3cx93WvqmklOSHc04mt6emh U2W/5T1dR4XyYw0He6N71vAxqDJhLFtpKlLGT7MNjRb9PIZW/cWNCm0nS2xNSSCzOQUl qgCOt13bi5ZlZRUdFZAWhPB5jATmGiVzYq3E+plmT7JSgYnwkHLtzFPl6tU3cX/AKlmi 0hFA1J1NihwfrhbwK3sgAnwmx3DmRNBtZs0QyXA2N8nnHM3OrRtHANcp3Mg7H9j18rzw 8Go9i20WtYyTK7EwcaRs2LaSMvO8c4jMsv6UaWcarlYM86zu0nULvp7gbYDZo9D8UuNZ U7cg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=TiT6Q8IHLWLEVqdTUJYFFww7tnRXpqBtnW8v9+eIuh4=; b=uOg6YjyR/Wt90Uw6IDWNTgqA+7oge7zL39JlRCiNUSTZv8OzcWpKFuaiMDnxeCXIjq 5Ni3VV58BUiz9QWnZ8IdnyuitUxwnAtkiMxojpFZH024PEuVxumocyCJ6t+GpEp536np DaRdh1vt7bdbbu/vjcGtzHPF6N93EhqKw9n8oIhKFzVI+ESlDH45QasT68vedD2LkFzk q+V5XMs13gPgIkiCkjrQG6tXLjvSd+GKVsT0hr9/FjwD16zwX9lZhNSUIlVhHPeoRDHI kOqbNi7ODPUdm1ostIN9agTmzHixp5TwmMTLWeQdGxdxFZiVJkrxOmuvJmr274u6A7xf avew== X-Gm-Message-State: AOAM533oGzQ7+vZO8qEMPwdXuGWIxgcZSJbfGL4yUntUUb1GHMGLx+9e 2uck6bpEwrXNEcmLlKc0nNE0LMUQRAnZMw== X-Received: by 2002:aca:3643:0:b0:2ec:cb84:c5ba with SMTP id d64-20020aca3643000000b002eccb84c5bamr847713oia.183.1648509948210; Mon, 28 Mar 2022 16:25:48 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:47 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:50 -0300 Message-Id: <20220328232453.54773-4-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/7] avformat/movenc: write channel descriptions when a known layout or a bitmap can't be used 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: qgw/wqAOf4nE Fixes part of ticket #2865 Signed-off-by: James Almer --- libavformat/mov_chan.c | 75 ++++++++++++++++++++++++++++++++---------- libavformat/mov_chan.h | 8 +++-- libavformat/movenc.c | 37 +++++++++++++++------ 3 files changed, 90 insertions(+), 30 deletions(-) diff --git a/libavformat/mov_chan.c b/libavformat/mov_chan.c index 3c23142f35..4cb373d1b9 100644 --- a/libavformat/mov_chan.c +++ b/libavformat/mov_chan.c @@ -504,9 +504,29 @@ static uint64_t mov_get_channel_mask(uint32_t label) return 0; } -uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, - const AVChannelLayout *ch_layout, - uint32_t *bitmap) +static uint32_t mov_get_channel_label(enum AVChannel channel) +{ + if (channel < 0) + return 0; + if (channel <= AV_CHAN_TOP_BACK_RIGHT) + return channel + 1; + if (channel == AV_CHAN_WIDE_LEFT) + return 35; + if (channel == AV_CHAN_WIDE_RIGHT) + return 36; + if (channel == AV_CHAN_LOW_FREQUENCY_2) + return 37; + if (channel == AV_CHAN_STEREO_LEFT) + return 38; + if (channel == AV_CHAN_STEREO_RIGHT) + return 39; + return 0; +} + +int ff_mov_get_channel_layout_tag(const AVCodecParameters *par, + uint32_t *layout, + uint32_t *bitmap, + uint32_t **pchannel_desc) { int i, j; uint32_t tag = 0; @@ -514,7 +534,7 @@ uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, /* find the layout list for the specified codec */ for (i = 0; mov_codec_ch_layouts[i].codec_id != AV_CODEC_ID_NONE; i++) { - if (mov_codec_ch_layouts[i].codec_id == codec_id) + if (mov_codec_ch_layouts[i].codec_id == par->codec_id) break; } if (mov_codec_ch_layouts[i].codec_id != AV_CODEC_ID_NONE) @@ -525,7 +545,7 @@ uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, const struct MovChannelLayoutMap *layout_map; /* get the layout map based on the channel count */ - channels = ch_layout->nb_channels; + channels = par->ch_layout.nb_channels; if (channels > 9) channels = 0; layout_map = mov_ch_layout_map[channels]; @@ -536,8 +556,8 @@ uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, continue; for (j = 0; layout_map[j].tag != 0; j++) { if (layout_map[j].tag == layouts[i] && - (ch_layout->order == AV_CHANNEL_ORDER_NATIVE && - layout_map[j].layout == ch_layout->u.mask)) + (par->ch_layout.order == AV_CHANNEL_ORDER_NATIVE && + layout_map[j].layout == par->ch_layout.u.mask)) break; } if (layout_map[j].tag) @@ -546,18 +566,39 @@ uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, tag = layouts[i]; } - /* if no tag was found, use channel bitmap as a backup if possible */ - if (tag == 0 && av_channel_layout_check(ch_layout) && - ch_layout->order == AV_CHANNEL_ORDER_NATIVE && - ch_layout->u.mask < 0x40000) { - tag = MOV_CH_LAYOUT_USE_BITMAP; - *bitmap = (uint32_t)ch_layout->u.mask; - } else - *bitmap = 0; + *layout = tag; + *bitmap = 0; + *pchannel_desc = NULL; + + /* if no tag was found, use channel bitmap or description as a backup if possible */ + if (tag == 0) { + uint32_t *channel_desc; + if (par->ch_layout.order == AV_CHANNEL_ORDER_NATIVE && + par->ch_layout.u.mask < 0x40000) { + *layout = MOV_CH_LAYOUT_USE_BITMAP; + *bitmap = (uint32_t)par->ch_layout.u.mask; + return 0; + } else if (par->ch_layout.order == AV_CHANNEL_ORDER_UNSPEC) + return AVERROR(ENOSYS); + + channel_desc = av_malloc_array(par->ch_layout.nb_channels, sizeof(*channel_desc)); + if (!channel_desc) + return AVERROR(ENOMEM); + + for (i = 0; i < par->ch_layout.nb_channels; i++) { + channel_desc[i] = + mov_get_channel_label(av_channel_layout_channel_from_index(&par->ch_layout, i)); + + if (channel_desc[i] == 0) { + av_free(channel_desc); + return AVERROR(ENOSYS); + } + } - /* TODO: set channel descriptions as a secondary backup */ + *pchannel_desc = channel_desc; + } - return tag; + return 0; } int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, diff --git a/libavformat/mov_chan.h b/libavformat/mov_chan.h index 9514dfa405..2815f15f07 100644 --- a/libavformat/mov_chan.h +++ b/libavformat/mov_chan.h @@ -30,6 +30,7 @@ #include "libavutil/channel_layout.h" #include "libavcodec/codec_id.h" +#include "libavcodec/codec_par.h" #include "avformat.h" /** @@ -41,9 +42,10 @@ * @param[out] bitmap channel bitmap * @return channel layout tag */ -uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id, - const AVChannelLayout *ch_layout, - uint32_t *bitmap); +int ff_mov_get_channel_layout_tag(const AVCodecParameters *par, + uint32_t *layout, + uint32_t *bitmap, + uint32_t **pchannel_desc); /** * Read 'chan' tag from the input stream. diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 46d66c29c2..263649f1da 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -867,20 +867,27 @@ static int mov_write_dmlp_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra static int mov_write_chan_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { - uint32_t layout_tag, bitmap; + uint32_t layout_tag, bitmap, *channel_desc; int64_t pos = avio_tell(pb); + int num_desc, ret; - layout_tag = ff_mov_get_channel_layout_tag(track->par->codec_id, - &track->par->ch_layout, - &bitmap); - if (!layout_tag) { - av_log(s, AV_LOG_WARNING, "not writing 'chan' tag due to " - "lack of channel information\n"); + if (track->multichannel_as_mono) return 0; + + ret = ff_mov_get_channel_layout_tag(track->par, &layout_tag, + &bitmap, &channel_desc); + + if (ret < 0) { + if (ret == AVERROR(ENOSYS)) { + av_log(s, AV_LOG_WARNING, "not writing 'chan' tag due to " + "lack of channel information\n"); + ret = 0; + } + + return ret; } - if (track->multichannel_as_mono) - return 0; + num_desc = layout_tag ? 0 : track->par->ch_layout.nb_channels; avio_wb32(pb, 0); // Size ffio_wfourcc(pb, "chan"); // Type @@ -888,7 +895,17 @@ static int mov_write_chan_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra avio_wb24(pb, 0); // Flags avio_wb32(pb, layout_tag); // mChannelLayoutTag avio_wb32(pb, bitmap); // mChannelBitmap - avio_wb32(pb, 0); // mNumberChannelDescriptions + avio_wb32(pb, num_desc); // mNumberChannelDescriptions + + for (int i = 0; i < num_desc; i++) { + avio_wb32(pb, channel_desc[i]); // mChannelLabel + avio_wb32(pb, 0); // mChannelFlags + avio_wl32(pb, 0); // mCoordinates[0] + avio_wl32(pb, 0); // mCoordinates[1] + avio_wl32(pb, 0); // mCoordinates[2] + } + + av_free(channel_desc); return update_size(pb, pos); } From patchwork Mon Mar 28 23:24:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35037 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp626094pzb; Mon, 28 Mar 2022 16:26:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycOldUzqj8R8a601tMCU7//aznuuPlNpwyjbXi7t4b682X4alHKelpRGui7EzGJVvbnVSU X-Received: by 2002:a50:c307:0:b0:418:ec3b:2242 with SMTP id a7-20020a50c307000000b00418ec3b2242mr408612edb.229.1648510010338; Mon, 28 Mar 2022 16:26:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648510010; cv=none; d=google.com; s=arc-20160816; b=kmqqUz32A0Xdx+h3xl/2utbQtVvaZhvRtjGGfvqIVfaLbwZ8FifkdZq3uF0koTjAvU x+9Se0CPQqSPdrLGcR0MYKT55lyGlPcw78d/+LRCQNm5dG1XZbdYai6cCDbqtlrQpRbR NjR2t1vypi3wAI2YI9GRbD6iiewINnnBFkt/Q6YukOBs0YcOV0XQPPVcNLnMCBtwL538 g7EWph9/O5JMqGVYC6zz/7mRkuYXbVYT5pBlPhgdF0A/3cXcyMEgPnfk5HloAhivMEsq WTvg2mZkfJJT+5cSaFfWghmUWerhfZcyggZrcV816+y+RaCee0RHafdmsYtpamQhdtOG ZIhA== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Envk0R7SQAq/bab1xwlp0ZTZcws2i11aVswulEUh9q4=; b=yZluocOZnZ5sdw0m3JLASWhkkMQnjA6C0sCgYKFKR3AxM4Y/jbYrq031ThE01s+Euv QcLZgPrZu/J+9zbfsISYyjdTmeO4ndJDUiis3a2d/nbxzvCAhySXxo1OZQxBTCo3zXIU kBvZqM/q1Z80cGTpIy01mxCpRrdKaU1V3eUAgN0dWWvDayhVzoZjhRnR1iWNwlX1GHuo zYrb+8f3GfzlH8Y9NbxSKv70Pb8TS0V5Z2nEy/lNHZdfI2bCEOwCVVZIIzH/eSjvXj5n jmSkQDlKPYFgL+71E8hHijqfDJpeRITPR2omqWgGgzdhW331LwxiolTdGjmHft0epWUm zd+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=l5xGFnYk; 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 b25-20020aa7dc19000000b00418fd7af8fasi14702340edu.416.2022.03.28.16.26.49; Mon, 28 Mar 2022 16:26:50 -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=l5xGFnYk; 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 2135568B2C6; Tue, 29 Mar 2022 02:25:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F15B68B2CD for ; Tue, 29 Mar 2022 02:25:51 +0300 (EEST) Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-deb9295679so9697557fac.6 for ; Mon, 28 Mar 2022 16:25:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=olvIinXL1Ng3bguHSxo8aVh67K8vp57bUQk0DUk3I3o=; b=l5xGFnYk0JbMYGvA2yhfJPeBzroQzuiwHXjhHzzdQGSja6N7SSgZam8U6dzZvt0MQO SkCxmFnFXfKn8w76q3oiHcfmbVRO7ixaJcAvp3jGrPE928sXdgTdwyAMXnES2NfdAgrl tQqNUL7YdHVFYT8gAhTIDhphllMNsbUN+o3xT95kLzrkm0kG/S5wDdyigZc/pg1xtagH +Sx3aZ4iZLxK0bYlOxLXLdG3oIg2R3pnfHnpGjmysWVe+WA0wgT+U1jKqdPTSnAADGXO +vGnyt1887rXZMPOvHuOhT23UAFVfwn2YUENXhyDj03vwGZGhtjy9sKRohRB66VOyVp5 SfLg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=olvIinXL1Ng3bguHSxo8aVh67K8vp57bUQk0DUk3I3o=; b=7VPqDSMUOxy6pA7p7zTMbx6MI+IkKt4ZikDIrUF3sSQ7BklO+wDWZi27dNr8IoPb2P /ipX0EPNbioIHa9ZrfCuTKPABqV043SRoo7s1igeoZoetJndWixHiLib4fzRuJI17st7 coWC+8JWrlrEOIOMkcodVyteZES8MT7XNkXJa5d+ea3CUIhT3sdeG9D6kDlWrPEx03M2 6TKHfIZKK6EwFD/t8P8pTVPlbF40ZqCgaaJVjsrfEuzNnPpKotHn6gHNtZezDOEN32N+ ocOnfHp3DDBcV5MeTEsFfsYnuPntyMaN6g7Vg9DXea0IMjlvuL9qwxVIOHsquYeuCmoH xGYg== X-Gm-Message-State: AOAM530+WSKavOFqiOKYPCFkFqZ81ZHn6+mJ3b4/8FJZnFjiQLQM5CvJ eiF8/bnTW9ebZ1hfyX/n3sYlO6ke0LTH5A== X-Received: by 2002:a05:6870:c101:b0:da:b3f:2b89 with SMTP id f1-20020a056870c10100b000da0b3f2b89mr791524oad.296.1648509949489; Mon, 28 Mar 2022 16:25:49 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:49 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:51 -0300 Message-Id: <20220328232453.54773-5-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/7] avformat/mov_chan: move the definition of MovChannelLayoutTag to the header 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: rQhACZ7D4FNZ Signed-off-by: James Almer --- libavformat/mov_chan.c | 104 ----------------------------------------- libavformat/mov_chan.h | 104 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 104 deletions(-) diff --git a/libavformat/mov_chan.c b/libavformat/mov_chan.c index 4cb373d1b9..5b757c6a8a 100644 --- a/libavformat/mov_chan.c +++ b/libavformat/mov_chan.c @@ -29,110 +29,6 @@ #include "libavcodec/codec_id.h" #include "mov_chan.h" -/** - * Channel Layout Tag - * This tells which channels are present in the audio stream and the order in - * which they appear. - * - * @note We're using the channel layout tag to indicate channel order - * when the value is greater than 0x10000. The Apple documentation has - * some contradictions as to how this is actually supposed to be handled. - * - * Core Audio File Format Spec: - * "The high 16 bits indicates a specific ordering of the channels." - * Core Audio Data Types Reference: - * "These identifiers specify the channels included in a layout but - * do not specify a particular ordering of those channels." - */ -enum MovChannelLayoutTag { -#define MOV_CH_LAYOUT_UNKNOWN 0xFFFF0000 - MOV_CH_LAYOUT_USE_DESCRIPTIONS = ( 0 << 16) | 0, - MOV_CH_LAYOUT_USE_BITMAP = ( 1 << 16) | 0, - MOV_CH_LAYOUT_DISCRETEINORDER = (147 << 16) | 0, - MOV_CH_LAYOUT_MONO = (100 << 16) | 1, - MOV_CH_LAYOUT_STEREO = (101 << 16) | 2, - MOV_CH_LAYOUT_STEREOHEADPHONES = (102 << 16) | 2, - MOV_CH_LAYOUT_MATRIXSTEREO = (103 << 16) | 2, - MOV_CH_LAYOUT_MIDSIDE = (104 << 16) | 2, - MOV_CH_LAYOUT_XY = (105 << 16) | 2, - MOV_CH_LAYOUT_BINAURAL = (106 << 16) | 2, - MOV_CH_LAYOUT_AMBISONIC_B_FORMAT = (107 << 16) | 4, - MOV_CH_LAYOUT_QUADRAPHONIC = (108 << 16) | 4, - MOV_CH_LAYOUT_PENTAGONAL = (109 << 16) | 5, - MOV_CH_LAYOUT_HEXAGONAL = (110 << 16) | 6, - MOV_CH_LAYOUT_OCTAGONAL = (111 << 16) | 8, - MOV_CH_LAYOUT_CUBE = (112 << 16) | 8, - MOV_CH_LAYOUT_MPEG_3_0_A = (113 << 16) | 3, - MOV_CH_LAYOUT_MPEG_3_0_B = (114 << 16) | 3, - MOV_CH_LAYOUT_MPEG_4_0_A = (115 << 16) | 4, - MOV_CH_LAYOUT_MPEG_4_0_B = (116 << 16) | 4, - MOV_CH_LAYOUT_MPEG_5_0_A = (117 << 16) | 5, - MOV_CH_LAYOUT_MPEG_5_0_B = (118 << 16) | 5, - MOV_CH_LAYOUT_MPEG_5_0_C = (119 << 16) | 5, - MOV_CH_LAYOUT_MPEG_5_0_D = (120 << 16) | 5, - MOV_CH_LAYOUT_MPEG_5_1_A = (121 << 16) | 6, - MOV_CH_LAYOUT_MPEG_5_1_B = (122 << 16) | 6, - MOV_CH_LAYOUT_MPEG_5_1_C = (123 << 16) | 6, - MOV_CH_LAYOUT_MPEG_5_1_D = (124 << 16) | 6, - MOV_CH_LAYOUT_MPEG_6_1_A = (125 << 16) | 7, - MOV_CH_LAYOUT_MPEG_7_1_A = (126 << 16) | 8, - MOV_CH_LAYOUT_MPEG_7_1_B = (127 << 16) | 8, - MOV_CH_LAYOUT_MPEG_7_1_C = (128 << 16) | 8, - MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1 = (129 << 16) | 8, - MOV_CH_LAYOUT_SMPTE_DTV = (130 << 16) | 8, - MOV_CH_LAYOUT_ITU_2_1 = (131 << 16) | 3, - MOV_CH_LAYOUT_ITU_2_2 = (132 << 16) | 4, - MOV_CH_LAYOUT_DVD_4 = (133 << 16) | 3, - MOV_CH_LAYOUT_DVD_5 = (134 << 16) | 4, - MOV_CH_LAYOUT_DVD_6 = (135 << 16) | 5, - MOV_CH_LAYOUT_DVD_10 = (136 << 16) | 4, - MOV_CH_LAYOUT_DVD_11 = (137 << 16) | 5, - MOV_CH_LAYOUT_DVD_18 = (138 << 16) | 5, - MOV_CH_LAYOUT_AUDIOUNIT_6_0 = (139 << 16) | 6, - MOV_CH_LAYOUT_AUDIOUNIT_7_0 = (140 << 16) | 7, - MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT = (148 << 16) | 7, - MOV_CH_LAYOUT_AAC_6_0 = (141 << 16) | 6, - MOV_CH_LAYOUT_AAC_6_1 = (142 << 16) | 7, - MOV_CH_LAYOUT_AAC_7_0 = (143 << 16) | 7, - MOV_CH_LAYOUT_AAC_OCTAGONAL = (144 << 16) | 8, - MOV_CH_LAYOUT_TMH_10_2_STD = (145 << 16) | 16, - MOV_CH_LAYOUT_TMH_10_2_FULL = (146 << 16) | 21, - MOV_CH_LAYOUT_AC3_1_0_1 = (149 << 16) | 2, - MOV_CH_LAYOUT_AC3_3_0 = (150 << 16) | 3, - MOV_CH_LAYOUT_AC3_3_1 = (151 << 16) | 4, - MOV_CH_LAYOUT_AC3_3_0_1 = (152 << 16) | 4, - MOV_CH_LAYOUT_AC3_2_1_1 = (153 << 16) | 4, - MOV_CH_LAYOUT_AC3_3_1_1 = (154 << 16) | 5, - MOV_CH_LAYOUT_EAC3_6_0_A = (155 << 16) | 6, - MOV_CH_LAYOUT_EAC3_7_0_A = (156 << 16) | 7, - MOV_CH_LAYOUT_EAC3_6_1_A = (157 << 16) | 7, - MOV_CH_LAYOUT_EAC3_6_1_B = (158 << 16) | 7, - MOV_CH_LAYOUT_EAC3_6_1_C = (159 << 16) | 7, - MOV_CH_LAYOUT_EAC3_7_1_A = (160 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_B = (161 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_C = (162 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_D = (163 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_E = (164 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_F = (165 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_G = (166 << 16) | 8, - MOV_CH_LAYOUT_EAC3_7_1_H = (167 << 16) | 8, - MOV_CH_LAYOUT_DTS_3_1 = (168 << 16) | 4, - MOV_CH_LAYOUT_DTS_4_1 = (169 << 16) | 5, - MOV_CH_LAYOUT_DTS_6_0_A = (170 << 16) | 6, - MOV_CH_LAYOUT_DTS_6_0_B = (171 << 16) | 6, - MOV_CH_LAYOUT_DTS_6_0_C = (172 << 16) | 6, - MOV_CH_LAYOUT_DTS_6_1_A = (173 << 16) | 7, - MOV_CH_LAYOUT_DTS_6_1_B = (174 << 16) | 7, - MOV_CH_LAYOUT_DTS_6_1_C = (175 << 16) | 7, - MOV_CH_LAYOUT_DTS_6_1_D = (182 << 16) | 7, - MOV_CH_LAYOUT_DTS_7_0 = (176 << 16) | 7, - MOV_CH_LAYOUT_DTS_7_1 = (177 << 16) | 8, - MOV_CH_LAYOUT_DTS_8_0_A = (178 << 16) | 8, - MOV_CH_LAYOUT_DTS_8_0_B = (179 << 16) | 8, - MOV_CH_LAYOUT_DTS_8_1_A = (180 << 16) | 9, - MOV_CH_LAYOUT_DTS_8_1_B = (181 << 16) | 9, -}; - struct MovChannelLayoutMap { uint32_t tag; uint64_t layout; diff --git a/libavformat/mov_chan.h b/libavformat/mov_chan.h index 2815f15f07..93d9878798 100644 --- a/libavformat/mov_chan.h +++ b/libavformat/mov_chan.h @@ -33,6 +33,110 @@ #include "libavcodec/codec_par.h" #include "avformat.h" +/** + * Channel Layout Tag + * This tells which channels are present in the audio stream and the order in + * which they appear. + * + * @note We're using the channel layout tag to indicate channel order + * when the value is greater than 0x10000. The Apple documentation has + * some contradictions as to how this is actually supposed to be handled. + * + * Core Audio File Format Spec: + * "The high 16 bits indicates a specific ordering of the channels." + * Core Audio Data Types Reference: + * "These identifiers specify the channels included in a layout but + * do not specify a particular ordering of those channels." + */ +enum MovChannelLayoutTag { +#define MOV_CH_LAYOUT_UNKNOWN 0xFFFF0000 + MOV_CH_LAYOUT_USE_DESCRIPTIONS = ( 0 << 16) | 0, + MOV_CH_LAYOUT_USE_BITMAP = ( 1 << 16) | 0, + MOV_CH_LAYOUT_DISCRETEINORDER = (147 << 16) | 0, + MOV_CH_LAYOUT_MONO = (100 << 16) | 1, + MOV_CH_LAYOUT_STEREO = (101 << 16) | 2, + MOV_CH_LAYOUT_STEREOHEADPHONES = (102 << 16) | 2, + MOV_CH_LAYOUT_MATRIXSTEREO = (103 << 16) | 2, + MOV_CH_LAYOUT_MIDSIDE = (104 << 16) | 2, + MOV_CH_LAYOUT_XY = (105 << 16) | 2, + MOV_CH_LAYOUT_BINAURAL = (106 << 16) | 2, + MOV_CH_LAYOUT_AMBISONIC_B_FORMAT = (107 << 16) | 4, + MOV_CH_LAYOUT_QUADRAPHONIC = (108 << 16) | 4, + MOV_CH_LAYOUT_PENTAGONAL = (109 << 16) | 5, + MOV_CH_LAYOUT_HEXAGONAL = (110 << 16) | 6, + MOV_CH_LAYOUT_OCTAGONAL = (111 << 16) | 8, + MOV_CH_LAYOUT_CUBE = (112 << 16) | 8, + MOV_CH_LAYOUT_MPEG_3_0_A = (113 << 16) | 3, + MOV_CH_LAYOUT_MPEG_3_0_B = (114 << 16) | 3, + MOV_CH_LAYOUT_MPEG_4_0_A = (115 << 16) | 4, + MOV_CH_LAYOUT_MPEG_4_0_B = (116 << 16) | 4, + MOV_CH_LAYOUT_MPEG_5_0_A = (117 << 16) | 5, + MOV_CH_LAYOUT_MPEG_5_0_B = (118 << 16) | 5, + MOV_CH_LAYOUT_MPEG_5_0_C = (119 << 16) | 5, + MOV_CH_LAYOUT_MPEG_5_0_D = (120 << 16) | 5, + MOV_CH_LAYOUT_MPEG_5_1_A = (121 << 16) | 6, + MOV_CH_LAYOUT_MPEG_5_1_B = (122 << 16) | 6, + MOV_CH_LAYOUT_MPEG_5_1_C = (123 << 16) | 6, + MOV_CH_LAYOUT_MPEG_5_1_D = (124 << 16) | 6, + MOV_CH_LAYOUT_MPEG_6_1_A = (125 << 16) | 7, + MOV_CH_LAYOUT_MPEG_7_1_A = (126 << 16) | 8, + MOV_CH_LAYOUT_MPEG_7_1_B = (127 << 16) | 8, + MOV_CH_LAYOUT_MPEG_7_1_C = (128 << 16) | 8, + MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1 = (129 << 16) | 8, + MOV_CH_LAYOUT_SMPTE_DTV = (130 << 16) | 8, + MOV_CH_LAYOUT_ITU_2_1 = (131 << 16) | 3, + MOV_CH_LAYOUT_ITU_2_2 = (132 << 16) | 4, + MOV_CH_LAYOUT_DVD_4 = (133 << 16) | 3, + MOV_CH_LAYOUT_DVD_5 = (134 << 16) | 4, + MOV_CH_LAYOUT_DVD_6 = (135 << 16) | 5, + MOV_CH_LAYOUT_DVD_10 = (136 << 16) | 4, + MOV_CH_LAYOUT_DVD_11 = (137 << 16) | 5, + MOV_CH_LAYOUT_DVD_18 = (138 << 16) | 5, + MOV_CH_LAYOUT_AUDIOUNIT_6_0 = (139 << 16) | 6, + MOV_CH_LAYOUT_AUDIOUNIT_7_0 = (140 << 16) | 7, + MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT = (148 << 16) | 7, + MOV_CH_LAYOUT_AAC_6_0 = (141 << 16) | 6, + MOV_CH_LAYOUT_AAC_6_1 = (142 << 16) | 7, + MOV_CH_LAYOUT_AAC_7_0 = (143 << 16) | 7, + MOV_CH_LAYOUT_AAC_OCTAGONAL = (144 << 16) | 8, + MOV_CH_LAYOUT_TMH_10_2_STD = (145 << 16) | 16, + MOV_CH_LAYOUT_TMH_10_2_FULL = (146 << 16) | 21, + MOV_CH_LAYOUT_AC3_1_0_1 = (149 << 16) | 2, + MOV_CH_LAYOUT_AC3_3_0 = (150 << 16) | 3, + MOV_CH_LAYOUT_AC3_3_1 = (151 << 16) | 4, + MOV_CH_LAYOUT_AC3_3_0_1 = (152 << 16) | 4, + MOV_CH_LAYOUT_AC3_2_1_1 = (153 << 16) | 4, + MOV_CH_LAYOUT_AC3_3_1_1 = (154 << 16) | 5, + MOV_CH_LAYOUT_EAC3_6_0_A = (155 << 16) | 6, + MOV_CH_LAYOUT_EAC3_7_0_A = (156 << 16) | 7, + MOV_CH_LAYOUT_EAC3_6_1_A = (157 << 16) | 7, + MOV_CH_LAYOUT_EAC3_6_1_B = (158 << 16) | 7, + MOV_CH_LAYOUT_EAC3_6_1_C = (159 << 16) | 7, + MOV_CH_LAYOUT_EAC3_7_1_A = (160 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_B = (161 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_C = (162 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_D = (163 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_E = (164 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_F = (165 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_G = (166 << 16) | 8, + MOV_CH_LAYOUT_EAC3_7_1_H = (167 << 16) | 8, + MOV_CH_LAYOUT_DTS_3_1 = (168 << 16) | 4, + MOV_CH_LAYOUT_DTS_4_1 = (169 << 16) | 5, + MOV_CH_LAYOUT_DTS_6_0_A = (170 << 16) | 6, + MOV_CH_LAYOUT_DTS_6_0_B = (171 << 16) | 6, + MOV_CH_LAYOUT_DTS_6_0_C = (172 << 16) | 6, + MOV_CH_LAYOUT_DTS_6_1_A = (173 << 16) | 7, + MOV_CH_LAYOUT_DTS_6_1_B = (174 << 16) | 7, + MOV_CH_LAYOUT_DTS_6_1_C = (175 << 16) | 7, + MOV_CH_LAYOUT_DTS_6_1_D = (182 << 16) | 7, + MOV_CH_LAYOUT_DTS_7_0 = (176 << 16) | 7, + MOV_CH_LAYOUT_DTS_7_1 = (177 << 16) | 8, + MOV_CH_LAYOUT_DTS_8_0_A = (178 << 16) | 8, + MOV_CH_LAYOUT_DTS_8_0_B = (179 << 16) | 8, + MOV_CH_LAYOUT_DTS_8_1_A = (180 << 16) | 9, + MOV_CH_LAYOUT_DTS_8_1_B = (181 << 16) | 9, +}; + /** * Get the channel layout tag for the specified codec id and channel layout. * If the layout tag was not found, use a channel bitmap if possible. From patchwork Mon Mar 28 23:24:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35039 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp626193pzb; Mon, 28 Mar 2022 16:27:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMAervD4WEON4JZQmonGHoghp0Ij9kS5Pj3SsBB11/ZsH3IhuzJAmEuK90cEC4a5TmQI2r X-Received: by 2002:a17:906:4313:b0:6b8:b3e5:a46 with SMTP id j19-20020a170906431300b006b8b3e50a46mr29990975ejm.417.1648510020850; Mon, 28 Mar 2022 16:27:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648510020; cv=none; d=google.com; s=arc-20160816; b=gGACNx1Urw9SP8NkVfXjmiiQ7gt/i2saWUsZBgr8y8qGP2iIiGrRPe16GJSYGV2RIm qyEDOIrhlOcDKV1uCBR74YAptdtbtFiyJ0BPtqCAf9gFLV19P59uy+FiSzGrw5tMF166 LfQKDVmh1jrZP0RoaChRP4tNl3+sg7nk/BcA2zirzLF5wW+ea7Oxj5k3brjufGHfju6q yZ6fF2n5fa9K/liufliJr0xDhxlBOE0AD3QFhZHyaqS40GTuPtlq2mjngFpf/GX+G/mm 9BOLyV2xo/p7rANYiFfZfU+zYzqc+77YZ2WEtDVJweHhpLDCkCvGF/rWOSvfyeOn3b6V 6FFA== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=n7/RD5c0z2Dt8DyJEydQIM/LzAcyi4nZJBDww06ZfCs=; b=q0N5iu+5+YVaHtISHkkjJoD6mhfbd6TS+6JVQWOHNJH3nypTgFpTd57Elhyry9cZvB 8/NwR2Y0KjQ/Yeg0YcfngULPtXcEoK6gSpcNVUcuO3VXEuNT4G5Z2ysgPcFVgUnZK9mx n5/9UuhtiED/StX0zJx5UTHwas/wb8bMy+Ibu30eycco+miqICBmn6kcE6fgj3XV0o5r ZdCscPyOXEtqxsEXgf2leo1d3pSXaV1TXryHJFPjjdIBHIq0nAcgCyh5vuWLfGSt6ZR0 TnRS9W23bxMpRVY/bpAD0CwQ0jaB3ZFz47YpdcyN/oEH0N3UEpTpsBN2y0CCmzxjddci KFJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=ZmsbmfZm; 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 a19-20020a50e713000000b0041080b4c683si15945986edn.0.2022.03.28.16.27.00; Mon, 28 Mar 2022 16:27:00 -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=ZmsbmfZm; 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 1127268B2DD; Tue, 29 Mar 2022 02:26:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com [209.85.167.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5121068B2BB for ; Tue, 29 Mar 2022 02:25:52 +0300 (EEST) Received: by mail-oi1-f178.google.com with SMTP id i7so3240183oie.7 for ; Mon, 28 Mar 2022 16:25:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=wVAE86e9eyyIHV1gqH1ubCEcoxas9uY4gziz5wsWq2Y=; b=ZmsbmfZmMnBxTbaKT+KnoSfc3n1e8/mmaMH98/GdRFBT4dd4fZ850k750Bz5FGTGiT 84KGklkfu207isK4HOa83aGvfmXj7JRgEvM31A1S3WJNKIhOClzFON38H77opcrRasyx wR78fbgTQcn6Q/FB5nTs925BFYEFJy6kEMZ4s8oXNnfVlr9zQI4g0fd4lK2KjWUTI4D0 Z3oP3NDvY5Woc+Mqtj40fX+ITRAET/CLolCYslJSp9lXJ7KZmaf9oeeR3j63CsvYsAWm YHeA651+f7n9Xxa7qfCoO2/iWHaHSOeMjRJTfCGCB783/eP9Ojp/waQUjrmuS9nblDeh yF9Q== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=wVAE86e9eyyIHV1gqH1ubCEcoxas9uY4gziz5wsWq2Y=; b=J0dhANWLv7I8D5wyg8iD8j7JqE9f0N53ULaatiRVW/+QNehqz1oDcxMs5aiuVZhyef eXqcsHZNe1jBbMRvWb9ClhHg/rSKKU4QmlBAlZuUdrEB0YnVq6F+wqpMTmw0NrJtrnxB SINQCEcXo3c35n65dYx+XlZE6HtQVy50IORCv7Q7+eeNZ31RpsAYE3fqbZW0vTa8HYUN Xuvy6dOFilox9Fpz29f/1YW+ivROqUJdVwKBJMMd4nSxbS4S4pn76bY0oentTnE1OSRp /EF/QvH9R5gXg7fvmiKtStDTfomil3EOKZbqgbNSZeUCqp9Hoq7Zd6Mc/VgohCPvzEsy HDag== X-Gm-Message-State: AOAM532BQeirNRKcVngzZV/LqBuEMw1bLDsBUTRomXu0/YaC2iwTdvkq NOT/t4L3tUmTbTo+6WPKcIO0RpWOgrvNcg== X-Received: by 2002:a05:6808:1201:b0:2d9:a01a:48b8 with SMTP id a1-20020a056808120100b002d9a01a48b8mr758191oil.259.1648509950716; Mon, 28 Mar 2022 16:25:50 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:50 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:52 -0300 Message-Id: <20220328232453.54773-6-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/7] avformat/movenc: don't use mono layout when a front center label is expected 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: x8dlRSQDMwDt On output streams where a multichannel stream needs to be stored as one track per channel, each track will have a channel layout describing the position of the channel they contain. For the track with front center, the mov muxer was using the mov layout "mono" instead of the label for the front center position. Since our channel layout API considers front center == mono, we need to do some heuristics. To achieve this, we make sure all audio tracks contain streams with a single channel, and only one of them is front center. In that case, we write the front center label instead of signaling mono layout. Fixes the last part of ticket #2865 Signed-off-by: James Almer --- libavformat/movenc.c | 25 +++++++++++++++++++++++++ libavformat/movenc.h | 1 + 2 files changed, 26 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 263649f1da..b9956e699c 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -887,6 +887,17 @@ static int mov_write_chan_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra return ret; } + if (layout_tag == MOV_CH_LAYOUT_MONO && track->mono_as_fc > 0) { + av_assert0(!channel_desc); + channel_desc = av_malloc(sizeof(*channel_desc)); + if (!channel_desc) + return AVERROR(ENOMEM); + + layout_tag = 0; + bitmap = 0; + *channel_desc = 3; // channel label "Center" + } + num_desc = layout_tag ? 0 : track->par->ch_layout.nb_channels; avio_wb32(pb, 0); // Size @@ -6970,6 +6981,20 @@ static int mov_write_header(AVFormatContext *s) if (j == i) continue; + if (stj->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && + (trackj->par->ch_layout.nb_channels != 1 || + !av_channel_layout_compare(&trackj->par->ch_layout, + &(AVChannelLayout)AV_CHANNEL_LAYOUT_MONO)) + ) + track->mono_as_fc = -1; + + if (stj->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && + av_channel_layout_compare(&trackj->par->ch_layout, + &(AVChannelLayout)AV_CHANNEL_LAYOUT_MONO) && + trackj->par->ch_layout.nb_channels == 1 && track->mono_as_fc >= 0 + ) + track->mono_as_fc++; + if (stj->codecpar->codec_type != AVMEDIA_TYPE_AUDIO || av_channel_layout_compare(&trackj->par->ch_layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_MONO) || diff --git a/libavformat/movenc.h b/libavformat/movenc.h index 2ac84ed070..67d6d4fb66 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -107,6 +107,7 @@ typedef struct MOVTrack { int tag; ///< stsd fourcc AVStream *st; AVCodecParameters *par; + int mono_as_fc; int multichannel_as_mono; int vos_len; From patchwork Mon Mar 28 23:24:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35040 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp626300pzb; Mon, 28 Mar 2022 16:27:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwqoArEb9sKGRVGKy+oVnSCVSDPHVXJcNB2ZdyHWL9sesNitssQMzS6ghHBsdm/RfttmAjv X-Received: by 2002:a17:907:7f8d:b0:6da:b3d6:a427 with SMTP id qk13-20020a1709077f8d00b006dab3d6a427mr30060725ejc.509.1648510031213; Mon, 28 Mar 2022 16:27:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648510031; cv=none; d=google.com; s=arc-20160816; b=aqG/CBW6aS9mIdTFwVFBNnyzII8gpGLyLBWIQVd9va9pXviMCzUkiKSlRIVualw7bA Vd/rBQmKTE/jEMAKcepYB0XLFPF2bYBXV/4Qh4kJQxOq1MKWUzmCV5QfCzEbLmBVguZ1 zWREMu1NiclOZpYOrw1o37nJ6adD8EHzwE0rxGV5mvc6+kNzXN4uvfLZj4cd9q9T3yET UZ0gKRnbo8s3yM8s7wHVc7VmXU4KXO3/zk2y4qA41ycv/eG8iv4FXUVeDVUVf+aKdHe8 h9ttFcDLY44iqV1kaChJA4z/2ECr8t/O5ThK5tJOzdqU8qmHW01slMXoAjmCD9WRQY/F ninw== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=YT0wA+Z2PSzyKkHeE5BDDi6elSF9EUJtqkX0ZbH+BJs=; b=RHb0Dnn436SfG+95g6mPIX7dvMU/8VJdWdUhFxoFA6vRkUzGGIfE+HifW2ScA0gdyY pN0SOAMxQMJT8pYK7Dx/QcnDcD+MQdik52uGPfBxEEDk8VoOE4gD7DFRJwr/Xpv5AQmM 0y9ltnZXsc1jM9pBUFiNOrSgluHYuI3ujzXvCSOCakfSdbJ9wrg6EGLZCdmH4pyh3xqi sDP0oXNpew3r5ePpEVOS86E4ddS7w2Jlxg5wVoAhfW55Nz5Pwt0NNq5jJjU87oqZAMY2 NMWgyEYIAxw0LzCxn3wfZ1tmFR5BlE4ZhSpfnf5XCAYFhvqAkjyTZYHPoz/jeMilt8Rz zOuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=H7itTLBb; 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 q4-20020a170906144400b006df8bdf3951si14735759ejc.718.2022.03.28.16.27.10; Mon, 28 Mar 2022 16:27:11 -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=H7itTLBb; 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 E7F5868B2CC; Tue, 29 Mar 2022 02:26:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B7A668B2EA for ; Tue, 29 Mar 2022 02:25:53 +0300 (EEST) Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-de3ca1efbaso16925821fac.9 for ; Mon, 28 Mar 2022 16:25: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:in-reply-to:references:mime-version :content-transfer-encoding; bh=f0itdsu9VZCpvCxHkhuCGyGJqszGWdaDnaRolOtcoi4=; b=H7itTLBbQmnXSyxmMQ7hoVRpkHIOl27DmAlMTtkjG7xEQbVC03tou0fFNEJ+A7Rtry YKyuqKa4J0oEhk85F+4wFii85ZAvlitKJrFG29srgS8fpOMq8DywmnNpJzdeY8P3gkrb cgK1wZEguXbYqxYrdHiJPLAWQJjCsRILqXGdAC6yWK56VycgC4RIQczozGbYxi+TrNfD Eu9Nq0zijixUataiWuqjF6ZPz0ncPnNXV0ETQo4FhZ3Wf1mZSMws7+nytu/FPB0mxzen Rj9L2oa1BEJNy5w9Y9OAWqi01Ip7/YB2FpXrG8DeckooF1rCfw6EMgF3CRll/IsoakEW ztPA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=f0itdsu9VZCpvCxHkhuCGyGJqszGWdaDnaRolOtcoi4=; b=PZdva2qg2ITjw2kRsIfygitvoTjyop8ScdKuzzyOAd1eZO7RxrjKVT8WFP/PZH6D2y 95WG4RxkszdJEXAvsIdW5FqQrJXCFHefWXZ9DU5oAyeQh87lKbGBtO2+D12r6ZWmnNTP 6KwyWcVj7HpTMN46b7fQrIEO2N7nZZHjEb4axi3PYQ+zuzO3IlfsUQDieVbkckbdQ2vo uDorzd/VFLR9yEGzTvi2uYJEZZ2rpg9xC/+zbOAvbt6mjntjoQYtn8VhO1CbZ7oSGatf K9vYtbBoc3GaBxaezLVyP5irYHW2FnDrpJm4biv++XahYvC1dAf5jQrRwRa/lZTd3fSy Ahqw== X-Gm-Message-State: AOAM530LM3+PSYAtxTcWIBP8j7inx0FARSRBCc4FiqnRzBDSLd02o9rP CrhzqQKBExkdLmjc7eBpckRnFxuAf/1v/Q== X-Received: by 2002:a05:6870:f109:b0:da:b3f:3230 with SMTP id k9-20020a056870f10900b000da0b3f3230mr804320oac.224.1648509951969; Mon, 28 Mar 2022 16:25:51 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id gk6-20020a0568703c0600b000de4880b357sm7198456oab.50.2022.03.28.16.25.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 16:25:51 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Mar 2022 20:24:53 -0300 Message-Id: <20220328232453.54773-7-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328232453.54773-1-jamrial@gmail.com> References: <20220328232453.54773-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/7] fate: add a test for writing channel descriptions in mov 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: QTOICXXiOIAF Signed-off-by: James Almer --- tests/fate/mov.mak | 11 ++++++- tests/ref/fate/mov-channel-description | 42 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 tests/ref/fate/mov-channel-description diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak index b54c009f05..5d9f183203 100644 --- a/tests/fate/mov.mak +++ b/tests/fate/mov.mak @@ -153,4 +153,13 @@ fate-mov-mp4-disposition-mpegts-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/ FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes) -fate-mov: $(FATE_MOV) $(FATE_MOV_FFPROBE) $(FATE_MOV_FASTSTART) $(FATE_MOV_FFMPEG_FFPROBE-yes) +FATE_MOV_FFMPEG-$(call ALLYES, FILE_PROTOCOL PIPE_PROTOCOL \ + WAV_DEMUXER PAN_FILTER PCM_S16LE_ENCODER \ + MOV_MUXER FRAMECRC_MUXER ) \ + += fate-mov-channel-description +fate-mov-channel-description: tests/data/asynth-44100-1.wav +fate-mov-channel-description: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mov "-filter_complex [0:a:0]pan=FL|c0=c0[outFL] -map [outFL] -filter_complex [0:a:0]pan=FR|c0=c1[outFR] -map [outFR] -filter_complex [0:a:0]pan=FC|c0=c2[outFC] -map [outFC] -filter_complex [0:a:0]pan=LFE|c0=c3[outLFE] -map [outLFE] -filter_complex [0:a:0]pan=BL|c0=c4[outBL] -map [outBL] -filter_complex [0:a:0]pan=BR|c0=c5[outBR] -map [outBR] -filter_complex [0:a:0]pan=DL|c0=c6[outDL] -map [outDL] -filter_complex [0:a:0]pan=DR|c0=c7[outDR] -map [outDR] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0" + +FATE_FFMPEG += $(FATE_MOV_FFMPEG-yes) + +fate-mov: $(FATE_MOV) $(FATE_MOV_FFMPEG-yes) $(FATE_MOV_FFPROBE) $(FATE_MOV_FASTSTART) $(FATE_MOV_FFMPEG_FFPROBE-yes) diff --git a/tests/ref/fate/mov-channel-description b/tests/ref/fate/mov-channel-description new file mode 100644 index 0000000000..21b2e11406 --- /dev/null +++ b/tests/ref/fate/mov-channel-description @@ -0,0 +1,42 @@ +497848e1bc5c9dcd416124b6f739d733 *tests/data/fate/mov-channel-description.mov +4242044 tests/data/fate/mov-channel-description.mov +#tb 0: 1/44100 +#media_type 0: audio +#codec_id 0: pcm_s16le +#sample_rate 0: 44100 +#channel_layout_name 0: 1 channels (FL) +#tb 1: 1/44100 +#media_type 1: audio +#codec_id 1: pcm_s16le +#sample_rate 1: 44100 +#channel_layout_name 1: 1 channels (FR) +#tb 2: 1/44100 +#media_type 2: audio +#codec_id 2: pcm_s16le +#sample_rate 2: 44100 +#channel_layout_name 2: mono +#tb 3: 1/44100 +#media_type 3: audio +#codec_id 3: pcm_s16le +#sample_rate 3: 44100 +#channel_layout_name 3: 1 channels (LFE) +#tb 4: 1/44100 +#media_type 4: audio +#codec_id 4: pcm_s16le +#sample_rate 4: 44100 +#channel_layout_name 4: 1 channels (BL) +#tb 5: 1/44100 +#media_type 5: audio +#codec_id 5: pcm_s16le +#sample_rate 5: 44100 +#channel_layout_name 5: 1 channels (BR) +#tb 6: 1/44100 +#media_type 6: audio +#codec_id 6: pcm_s16le +#sample_rate 6: 44100 +#channel_layout_name 6: 1 channels (DL) +#tb 7: 1/44100 +#media_type 7: audio +#codec_id 7: pcm_s16le +#sample_rate 7: 44100 +#channel_layout_name 7: 1 channels (DR)