From patchwork Wed Dec 8 01:06:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 32146 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp7048453iog; Tue, 7 Dec 2021 17:13:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJyVLQ6b9M529XM30FNz6CLXGi/1whAXyis5FEgLyTNKqGcE9mn2xzwgG+4rhPodd9YK6dsU X-Received: by 2002:a05:6402:34d2:: with SMTP id w18mr9976929edc.35.1638926003548; Tue, 07 Dec 2021 17:13:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638926003; cv=none; d=google.com; s=arc-20160816; b=A8HVibEmmSHWW20webkFCZJG/J1FKwd/tiLI3Rle+QgmYseNVQSNHGXVW0h/xC87+e YZnChcxYoj/sabY4OOiSM61KEjH5M/KhoB62c/ABfOGO9fZqfgoPeOzJYDEedTgvnguj 8t7L5639rIJIQD4jojzZSoovfZcFN3bZlh3jHJF9hxA6bNs3XS8JgfVuxuSa4OI33VA6 RfMpQQvPFvWwkZcYQqhcPNyi3pEO42iVuWDi1df84e62NIvj62tvHLBQmX3ZYCmerQDu 7VFq5VmwP06xRxIWhGoJ1HjjUv9gT65cH0HBy8od9RNlDd/kewPe1H7mXWB+l1rb7oGR AEfw== 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=LDQ0bM9rbXsNkhDBQM5cxTFlkLCzOVBOdW+awqGAqBg=; b=K7X6Qu3DrHXJv1T+GGTQfAs9L25XhxerCOkRqhni5I/WVmYzIFEH9CMWffLbbGTC2w ZnWYKIEfVEdl2hsZjP6NnPDUeGYGvcO6gDFUllDRqvk5CXPNiZP15BiH3uZujWWD2hvo KbGruf64yYMX2kWeLWnzyWiEOm8xffeUgOlUIC1Nf1FOlXYc27ivr8KtVRw/JwSCqRK2 ho773hQkJn+ljqKBgnByzclQmv5k1pQqt4nxDkQBVdj4LmZPO9wFuqiNVvuJOREWaZn+ U8ulKABPFDI/MyXCE+KMmEpVc6BPgbDPU3cV5M43LvDpLvswIfkjD6N6YRCeMxiiCOQA Kbpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="JjR+/GKt"; 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 fy1si2217849ejc.786.2021.12.07.17.13.23; Tue, 07 Dec 2021 17:13:23 -0800 (PST) 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="JjR+/GKt"; 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 1B7A868AFA8; Wed, 8 Dec 2021 03:08:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua1-f41.google.com (mail-ua1-f41.google.com [209.85.222.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A25268AF87 for ; Wed, 8 Dec 2021 03:08:10 +0200 (EET) Received: by mail-ua1-f41.google.com with SMTP id y5so1894848ual.7 for ; Tue, 07 Dec 2021 17:08:10 -0800 (PST) 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=gJyE2RZDBKN2Zczoktkgb5kkuD6ckLr76O5JzXS50To=; b=JjR+/GKtD4nLjMwka9jQUmFOUNo5lbU+QxgJyKMcG4ELqqNYxiRkDbmSarRslwXUvw hbezoj0HuqGZEMKh+2sfmAWdaBOgIW6mWwl/IdMMIkrS9w/yLGj2N//6hfSn1qRDGrxT SRtmekbCXuMADCJnmITgLVJLGgDxSVKVhR49tO4G3G8JbhbqU3pmn2JUU4+3QljLdQ5w N4Sljf1ksbjrV+O8nhnkt0MbRf2jrcQ9m8VinvgAtO/yZ8yxU/hvOr9ehSCuzkdq4kQt zBE4pEVFcZ4exzqYhkFT5drt+dfEkCMETtzyqute3HqiNq/TJdjZtdTXqhTXxVvv3qka CduA== 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=gJyE2RZDBKN2Zczoktkgb5kkuD6ckLr76O5JzXS50To=; b=wfIz5WpQtpqzClTyEf0hhBVC+f0QVrV+anG5XAPkIgp7t/+ep7i8Ve17a7fADKqhib LrQge9MLVELO9D4vUu4ZPSpKKme+FmiS4KUoKYYfciEkFG5G35MYiiylfsczmAMLcNXy 0X6lCnDc58rE14xDKNXCuP1UFihJ/1Ur9Af2gdLiWszsY3o+FE57zpp0iGIABaQX/pp5 DHMaMmj6lanv7X6BeEwW9VQ/sI38IyPg8C+D5uhphmta8XAKcRNsZMar80GzHwhdQ5t+ uyibSMy1hqz4uKnHFbL0Lpdhqtof1+qVF7qOMAif7DLVGlVneEd61o+Fr4FHaJPYOnnA eO/A== X-Gm-Message-State: AOAM530L/wNAsDcz08WP/I1GSd5V3p9T9JodhS+duC043jNt9Np8xViC /Tab1RxvM/KoKdRmRhLMQo+U29vH6DgKDd12 X-Received: by 2002:ab0:3c48:: with SMTP id u8mr4201901uaw.73.1638925688760; Tue, 07 Dec 2021 17:08:08 -0800 (PST) Received: from localhost.localdomain ([181.170.250.138]) by smtp.gmail.com with ESMTPSA id b8sm949898vsl.19.2021.12.07.17.08.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Dec 2021 17:08:08 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Dec 2021 22:06:48 -0300 Message-Id: <20211208010649.381-33-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211208010649.381-1-jamrial@gmail.com> References: <20211208010649.381-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 278/279] opus: export mapping family 2 (Ambisonic) as Ambisonic layout 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: BovB7So3vfgt From: Anton Khirnov Signed-off-by: James Almer --- libavcodec/opus.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/libavcodec/opus.c b/libavcodec/opus.c index 73cac74f96..4d89068025 100644 --- a/libavcodec/opus.c +++ b/libavcodec/opus.c @@ -398,8 +398,22 @@ av_cold int ff_opus_parse_extradata(AVCodecContext *avctx, ret = AVERROR_INVALIDDATA; goto fail; } - layout.order = AV_CHANNEL_ORDER_UNSPEC; + layout.nb_channels = channels; + if (channels == (ambisonic_order + 1) * (ambisonic_order + 1)) { + layout.order = AV_CHANNEL_ORDER_AMBISONIC; + } else { + layout.order = AV_CHANNEL_ORDER_CUSTOM; + layout.u.map = av_mallocz_array(channels, sizeof(*layout.u.map)); + if (!layout.u.map) { + ret = AVERROR(ENOMEM); + goto fail; + } + for (i = 0; i < channels - 2; i++) + layout.u.map[i].id = AV_CHAN_AMBISONIC_BASE + i; + layout.u.map[channels - 2].id = AV_CHAN_FRONT_LEFT; + layout.u.map[channels - 1].id = AV_CHAN_FRONT_RIGHT; + } } else { layout.order = AV_CHANNEL_ORDER_UNSPEC; layout.nb_channels = channels; @@ -450,8 +464,10 @@ av_cold int ff_opus_parse_extradata(AVCodecContext *avctx, } } - av_channel_layout_uninit(&avctx->ch_layout); - avctx->ch_layout = layout; + ret = av_channel_layout_copy(&avctx->ch_layout, &layout); + if (ret < 0) + goto fail; + s->nb_streams = streams; s->nb_stereo_streams = stereo_streams;