From patchwork Thu Jan 13 02:07:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 33527 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp46350iog; Wed, 12 Jan 2022 18:51:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJzMzU4g7DxpgywC97tNUe+Zbz5QRKjMWiJwlwSXUyNrX7sf50mPuHc3sxVvqWT2krr9WO2e X-Received: by 2002:a17:907:1007:: with SMTP id ox7mr322870ejb.533.1642042261506; Wed, 12 Jan 2022 18:51:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642042261; cv=none; d=google.com; s=arc-20160816; b=rL/ApDWEaeX5hQ3hCMKOtBzswsZyUkcvGs6JZJhW8tmllKTw8K6WxUOJfsHVebfzMR CmsPdYLVpYbd1zLwFOhLs4wDLN0YkI10ofGzdFZ7RQr7qKLzFCPhxqzPaUABl0X7VYi5 A59RBoUa7l0/huH60EZhX4hObD9pLRUkNbI+y6J56fKiqN1B3h2JWeq2n5pdxC5NlCw0 8SW2k+6aPh0JMMN7Y/qEQESd1XMrcGX4n5Ss29y9iJq/vPgp75ugf3/knnkMIdNbNGEw fdAwr7/dp/exwnonch5igyOBRX76FtcCZVX7HRxvXPVAgEf4HR+I7FkRZxyNGo+xrohl WVfw== 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=miw05a4lMCnQ1/x7FeWA6ZJ6Nt3JiiKtXZULYmp2+pM=; b=EmKmVHD6dNcYx+PSGH6KJxLKOzn3tz0f4cxJBh/+TeXUMaeFfoOMC2AhuLVWtZr+L/ uU9pry0Kt02pF4FjqLtC+ODCTDiL38bC3cfyDCOEVr0E5gSo9STqq/2TwFnkUsOWhm6H XtnE/W7A4z4gCmFHVjvljEKo3/qZK7gRAD7l8rF9H6wEUz0ekRB/EDxsUCDB/491QxhQ ZTxIPryBkmpH4+2knVlT4URTfftTNWnHxbMDbh/ZcWMEWoNg3SBsXTkPn2+6uGG2uamR CaArASbTtbqe6FFNbvqaEWzS1fxHF8SqOOBdihYkMqB8tm8cS/9c4842vMO8TzWHmw4l LSOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=VDHr5tc6; 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 hz2si874351ejc.716.2022.01.12.18.51.01; Wed, 12 Jan 2022 18:51:01 -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=VDHr5tc6; 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 1240D68BA50; Thu, 13 Jan 2022 04:08:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0AED68BA26 for ; Thu, 13 Jan 2022 04:08:03 +0200 (EET) Received: by mail-qv1-f44.google.com with SMTP id p12so5114949qvj.6 for ; Wed, 12 Jan 2022 18:08:03 -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=INFmrHTdyU26xUdI6b18gQjlKekzkPVj1ZRpirpmQ98=; b=VDHr5tc6A9n3Wi/13YVExXwdrPW8fmFPXLij2rZNgjSxjBZLxF0wK2GougFDMOsxHC DRn57W81CS4pDklT3Ojz3Ei7ftcsbpg/xM0BH1hFxup5th/bARqr6FMVx3t4gslMNXgs +8WVHhtGAHWKhXDZtzM0YZALK/PJdcv/zNzStBZ8t4ZcKMpfVc2dwddaqPlU9RdavFcO ueiYSKfULJ/xpdm45iBz6HLd32jenB1qzztumSWqWkqvpHSpQ/8kRWTox2ZPag4v2tUn X7bNb61k7pV+m850Uhn0IHLN9cxKPcMaW3uZ3nWhEshDslCwXCpt/AMTCVDaYL2AsXSx Y1Bg== 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=INFmrHTdyU26xUdI6b18gQjlKekzkPVj1ZRpirpmQ98=; b=q/PZXoNQq1CHNcNuljrn9mqp3N6QYHZ3WVYhsxfTGgi7NTMmAEKhkeJw9aC+bb6yK2 7jAOfL9xhcwfHgz452Hgng16QRelmRA0ReSLX3IPKx2SPjbScguJwXN50E6pnAHgIYqv WySM0SvRZ75AThWbkKEQevLfPqdTWdBC5m9PlcplWTJern4lxwlia3FNi/j3WMCYf0xv R8FInYRBX7q2WBhPxa3OOES1B9lfEsN6+D3It4tK6Llo/z1QYZc29g36z+1ZFSA5jw1a US4o8zC07q7LAC/T1mWRPFaQCxVM5sjCeg2t2pgXXNyJDiClcLlh/cjndBjAZ1I7F7Ai 8PDQ== X-Gm-Message-State: AOAM532Vt+ldxJRZX1lBwuJ3wQ9U5TY5gEGAHH0+DuFWiEW2c6Pta4eT jHY5UpWFFmpr9BhNGlx53D4w//ob5DM= X-Received: by 2002:ad4:5aab:: with SMTP id u11mr2194450qvg.86.1642039682210; Wed, 12 Jan 2022 18:08:02 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id a16sm1085946qta.13.2022.01.12.18.08.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 18:08:01 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jan 2022 23:07:11 -0300 Message-Id: <20220113020713.801-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 267/281] vmdaudio: 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: xC9+Qo/30Bt7 From: Anton Khirnov Signed-off-by: Vittorio Giovara Signed-off-by: Anton Khirnov Signed-off-by: James Almer --- libavcodec/vmdaudio.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/libavcodec/vmdaudio.c b/libavcodec/vmdaudio.c index 53aef660ef..5e04686cb1 100644 --- a/libavcodec/vmdaudio.c +++ b/libavcodec/vmdaudio.c @@ -71,20 +71,20 @@ static const uint16_t vmdaudio_table[128] = { static av_cold int vmdaudio_decode_init(AVCodecContext *avctx) { VmdAudioContext *s = avctx->priv_data; + int channels = avctx->ch_layout.nb_channels; - if (avctx->channels < 1 || avctx->channels > 2) { + if (channels < 1 || channels > 2) { av_log(avctx, AV_LOG_ERROR, "invalid number of channels\n"); return AVERROR(EINVAL); } - if (avctx->block_align < 1 || avctx->block_align % avctx->channels || - avctx->block_align > INT_MAX - avctx->channels - ) { + if (avctx->block_align < 1 || avctx->block_align % channels || + avctx->block_align > INT_MAX - channels) { av_log(avctx, AV_LOG_ERROR, "invalid block align\n"); return AVERROR(EINVAL); } - avctx->channel_layout = avctx->channels == 1 ? AV_CH_LAYOUT_MONO : - AV_CH_LAYOUT_STEREO; + av_channel_layout_uninit(&avctx->ch_layout); + av_channel_layout_default(&avctx->ch_layout, channels == 1); if (avctx->bits_per_coded_sample == 16) avctx->sample_fmt = AV_SAMPLE_FMT_S16; @@ -92,11 +92,11 @@ static av_cold int vmdaudio_decode_init(AVCodecContext *avctx) avctx->sample_fmt = AV_SAMPLE_FMT_U8; s->out_bps = av_get_bytes_per_sample(avctx->sample_fmt); - s->chunk_size = avctx->block_align + avctx->channels * (s->out_bps == 2); + s->chunk_size = avctx->block_align + channels * (s->out_bps == 2); av_log(avctx, AV_LOG_DEBUG, "%d channels, %d bits/sample, " "block align = %d, sample rate = %d\n", - avctx->channels, avctx->bits_per_coded_sample, avctx->block_align, + channels, avctx->bits_per_coded_sample, avctx->block_align, avctx->sample_rate); return 0; @@ -143,6 +143,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, void *data, int ret; uint8_t *output_samples_u8; int16_t *output_samples_s16; + int channels = avctx->ch_layout.nb_channels; if (buf_size < 16) { av_log(avctx, AV_LOG_WARNING, "skipping small junk packet\n"); @@ -186,7 +187,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, void *data, /* get output buffer */ frame->nb_samples = ((silent_chunks + audio_chunks) * avctx->block_align) / - avctx->channels; + avctx->ch_layout.nb_channels; if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; output_samples_u8 = frame->data[0]; @@ -195,7 +196,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, void *data, /* decode silent chunks */ if (silent_chunks > 0) { int silent_size = avctx->block_align * silent_chunks; - av_assert0(avctx->block_align * silent_chunks <= frame->nb_samples * avctx->channels); + av_assert0(avctx->block_align * silent_chunks <= frame->nb_samples * avctx->ch_layout.nb_channels); if (s->out_bps == 2) { memset(output_samples_s16, 0x00, silent_size * 2); @@ -209,11 +210,10 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, void *data, /* decode audio chunks */ if (audio_chunks > 0) { buf_end = buf + buf_size; - av_assert0((buf_size & (avctx->channels > 1)) == 0); + av_assert0((buf_size & (avctx->ch_layout.nb_channels > 1)) == 0); while (buf_end - buf >= s->chunk_size) { if (s->out_bps == 2) { - decode_audio_s16(output_samples_s16, buf, s->chunk_size, - avctx->channels); + decode_audio_s16(output_samples_s16, buf, s->chunk_size, channels); output_samples_s16 += avctx->block_align; } else { memcpy(output_samples_u8, buf, s->chunk_size);