From patchwork Thu Jan 13 01:56:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 33395 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp28238iog; Wed, 12 Jan 2022 18:17:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzEmryBBtms6cOiHALlx5Gm/qNkl+XtYtEQ5IM7O1NqgcoweHdhtt8+R4s2eD5AafG0ueWV X-Received: by 2002:a17:907:1c1f:: with SMTP id nc31mr1985712ejc.624.1642040231527; Wed, 12 Jan 2022 18:17:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642040231; cv=none; d=google.com; s=arc-20160816; b=uzqK2ZwESrSiNSCAGg0Qc5IBe1yigU0xevtu5FsnYhDRYciBxM0Hh1Ol+nUgoeiw/0 IolJ+j4eIjcCZwzJZO3WYEsbWRACn6IzrCLMpZfaSPOCf/eX2QE3zwyxo5aj3FkXSx9R cEsubVL4sZVtzuQMcaZITye1hETz55aGgQeo0J3ElUx7qylarUrQHIK6rEaGjg83vOS2 znOMCbvIjy6i8IGTSOwgP3Xce5l/+u5YRiwNGaUZEh+N8tPlP//UOpTvly7OFb2IN+9c nmzmj4kVmneXEMSkoddybVNHI2R9Ll3qHD5cRqZ2i665IjONYsTurU3Rea6EunQ/BOrN YM+Q== 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=SFKXC3nMo4sDyW/heuJRdE9Bw3OIdOuw8yZ1dfzStb0=; b=A3pEyycDK/WkxEPtoPAefyU1gaC6x26nGsLW64LK43nQ4ECXRLq7eXcsV/5Uw34kj6 bf30PnIea6zPxQYgjT/a10BUkM4v/CSJnRAr3JUTyizNCvyhVihaD2Hq+X7bN2urzjZb DEaYFnBSUfZqYCEbIIi9Riru89X2XJlZeC6hmQQSxp230QY1rig1qNgER+UVMHITYr7/ zPQ7bhcAH4o/39zqxqAdE4kzf+78QNKgRFkqd/33ckdNuWHSfnrDp1/3TwA5sph7oX0r tCtObEbMzZE/juc7i3w1F03hX927TbrU2ea+4yg/nyJ9CR0a3hMrd8k9LJgFE2doFbiv bBoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=aYl4EeGV; 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 ho11si863681ejc.586.2022.01.12.18.17.11; Wed, 12 Jan 2022 18:17:11 -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=aYl4EeGV; 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 F140068B30A; Thu, 13 Jan 2022 03:57:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8B38F68B2FA for ; Thu, 13 Jan 2022 03:56:59 +0200 (EET) Received: by mail-qv1-f54.google.com with SMTP id l13so3590398qvz.10 for ; Wed, 12 Jan 2022 17:56:59 -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=bUu4cqIcObvsGEzKHNGCD05j/I136WbPD5Wx1PAOn/Y=; b=aYl4EeGVOw3oyh0PJ6+MO2xaz/WQxnLJBDR1jUekwju78YNaWNnt71qbFZubni5fly H8CfbmANUs/yxtF4SvtlcHY78k+nsUhj4Y/QBL6oTbUUSgxBAzU7FJiD/7K5eMgMvwmW qN65xL1527I/eXH/R6xSuvhF0WqgGXlYt+nBNjsQg7FLnNmqI7HU9ZeCqmnhFPaffdQh EbPfJotBVffDoOHmQq6u1jYBBqimhXU8UJpq9mlqyQ5PE3s9JngBfzcXvMdGTliStk1a dsNc2h2Dwgr1hjIi6vaFMqv3OQzgG7vEUFGJwFhpbyiiGhgdf0KXqgzxImAKJLPl6dfT giMA== 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=bUu4cqIcObvsGEzKHNGCD05j/I136WbPD5Wx1PAOn/Y=; b=U6PDxPFcrDcXrVVNNZD/pYfgCMO1GBBaDqpaIslfQ/wQRfOb9gU7nDPJpKuOyW81V3 hwzRXUi1HeoN3IsgBQhSXu86ZpwFUNcXdGAB2cuaIJuCmUSc8+2rVX+gIDhe7afE0Xj2 ZUfT4xbTinZw8gr8i3ofpF2odLsl/9mRXe275f5fSECkDj47Ne1rilBCU4NMKoTQdprn OeEBfT2EQG9DJwdxaBTE1dY99y5J1V8rEmuzsNs6EUkOgZeD3WaT6ppL4OxPx1luuQgS 40uEHzeHjPIZ23W+YuYnxvo4OHdqSytZcrinMjB5BkGmi6qf76lryhDHiMWiK9hK3AGN EgKw== X-Gm-Message-State: AOAM530rkBpP5c8xICC5l9aJHUWXxZZwW42S8MJ4HIJiccWrZyBn1dvx 0eLmvOiVIUbr8q7euvUTOADRvbaWVEc= X-Received: by 2002:ad4:5c6f:: with SMTP id i15mr2255744qvh.45.1642039017885; Wed, 12 Jan 2022 17:56:57 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id t11sm906506qkm.77.2022.01.12.17.56.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 17:56:57 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jan 2022 22:56:09 -0300 Message-Id: <20220113015612.448-28-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220113015101.4-1-jamrial@gmail.com> References: <20220113015101.4-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 116/281] ogg: convert to new channel layout API 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: 6J1nM9mPjc7h From: Vittorio Giovara Signed-off-by: Vittorio Giovara Signed-off-by: Anton Khirnov Signed-off-by: James Almer --- libavformat/oggparsecelt.c | 3 ++- libavformat/oggparseogm.c | 6 ++++-- libavformat/oggparseopus.c | 3 ++- libavformat/oggparsespeex.c | 8 ++++---- libavformat/oggparsevorbis.c | 6 ++++-- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libavformat/oggparsecelt.c b/libavformat/oggparsecelt.c index f7a88af616..af15c07443 100644 --- a/libavformat/oggparsecelt.c +++ b/libavformat/oggparsecelt.c @@ -64,7 +64,8 @@ static int celt_header(AVFormatContext *s, int idx) st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = AV_CODEC_ID_CELT; st->codecpar->sample_rate = sample_rate; - st->codecpar->channels = nb_channels; + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = nb_channels; if (sample_rate) avpriv_set_pts_info(st, 64, 1, sample_rate); diff --git a/libavformat/oggparseogm.c b/libavformat/oggparseogm.c index f777790523..c30e0324ae 100644 --- a/libavformat/oggparseogm.c +++ b/libavformat/oggparseogm.c @@ -97,7 +97,8 @@ ogm_header(AVFormatContext *s, int idx) st->codecpar->height = bytestream2_get_le32(&p); avpriv_set_pts_info(st, 64, time_unit, spu * 10000000); } else { - st->codecpar->channels = bytestream2_get_le16(&p); + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = bytestream2_get_le16(&p); bytestream2_skip(&p, 2); /* block_align */ st->codecpar->bit_rate = bytestream2_get_le32(&p) * 8; st->codecpar->sample_rate = spu * 10000000 / time_unit; @@ -160,7 +161,8 @@ ogm_dshow_header(AVFormatContext *s, int idx) st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = ff_codec_get_id(ff_codec_wav_tags, AV_RL16(p + 124)); - st->codecpar->channels = AV_RL16(p + 126); + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = AV_RL16(p + 126); st->codecpar->sample_rate = AV_RL32(p + 128); st->codecpar->bit_rate = AV_RL32(p + 132) * 8; } diff --git a/libavformat/oggparseopus.c b/libavformat/oggparseopus.c index 36d691e9aa..adeda95fdb 100644 --- a/libavformat/oggparseopus.c +++ b/libavformat/oggparseopus.c @@ -55,7 +55,8 @@ static int opus_header(AVFormatContext *avf, int idx) return AVERROR_INVALIDDATA; st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = AV_CODEC_ID_OPUS; - st->codecpar->channels = AV_RL8(packet + 9); + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = AV_RL8(packet + 9); priv->pre_skip = AV_RL16(packet + 10); st->codecpar->initial_padding = priv->pre_skip; diff --git a/libavformat/oggparsespeex.c b/libavformat/oggparsespeex.c index c4fee7e076..7d3d653384 100644 --- a/libavformat/oggparsespeex.c +++ b/libavformat/oggparsespeex.c @@ -60,6 +60,7 @@ static int speex_header(AVFormatContext *s, int idx) { if (spxp->seq == 0) { int frames_per_packet; + int channels; st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = AV_CODEC_ID_SPEEX; @@ -73,13 +74,12 @@ static int speex_header(AVFormatContext *s, int idx) { av_log(s, AV_LOG_ERROR, "Invalid sample rate %d\n", st->codecpar->sample_rate); return AVERROR_INVALIDDATA; } - st->codecpar->channels = AV_RL32(p + 48); - if (st->codecpar->channels < 1 || st->codecpar->channels > 2) { + channels = AV_RL32(p + 48); + if (channels < 1 || channels > 2) { av_log(s, AV_LOG_ERROR, "invalid channel count. Speex must be mono or stereo.\n"); return AVERROR_INVALIDDATA; } - st->codecpar->channel_layout = st->codecpar->channels == 1 ? AV_CH_LAYOUT_MONO : - AV_CH_LAYOUT_STEREO; + av_channel_layout_default(&st->codecpar->ch_layout, channels); spxp->packet_size = AV_RL32(p + 56); frames_per_packet = AV_RL32(p + 64); diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index e1ef510892..7e94054f19 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -336,11 +336,13 @@ static int vorbis_header(AVFormatContext *s, int idx) return AVERROR_INVALIDDATA; channels = bytestream_get_byte(&p); - if (st->codecpar->channels && channels != st->codecpar->channels) { + if (st->codecpar->ch_layout.nb_channels && + channels != st->codecpar->ch_layout.nb_channels) { av_log(s, AV_LOG_ERROR, "Channel change is not supported\n"); return AVERROR_PATCHWELCOME; } - st->codecpar->channels = channels; + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = channels; srate = bytestream_get_le32(&p); p += 4; // skip maximum bitrate st->codecpar->bit_rate = bytestream_get_le32(&p); // nominal bitrate