From patchwork Thu Jan 13 01:57: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: 33409 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp30589iog; Wed, 12 Jan 2022 18:21:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJzi2vZ+uieLJu7azZdiGNQ/sx45jz+fKXugwaVjr0ojaRHIvVf7YhUDORxxMGKZOCwAoBow X-Received: by 2002:a17:907:3fa6:: with SMTP id hr38mr1945381ejc.88.1642040467925; Wed, 12 Jan 2022 18:21:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642040467; cv=none; d=google.com; s=arc-20160816; b=olGcS4sfzX1Rx8+4mxgvdBOcIICzyqxazK29CwRlQCdYyr6ZwLudxg+R297IIxEfaW LGJzgvIYDzro49HqY3b4jToUU8TpaNwwzxG1FYXxyifKDWtlRM4F2Lh8aeUkHifWKNlo gweCA4gjUUTqhVZJtTc4BhB1kHsdViao3X0eRkpkrsXS2WRPvuoNmDNxWvsfSaA5x2P4 uuyZBHS/yZHiw9SjYT8H43GgyhPgEP+xn5cvrfvjaUhwQ9bGGny7Bu6thXheJHAB1nAG aY9L6wAcxMFBVSi5Udtqz09jmLMtURjIFpI6plP3+1IoRbI761Ux+AyuvYKrqTXgxtAU QnNg== 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=/zQ0rcAzCm/IrVNHjfYTbs1MhpWgTRkfCfsYmDPokVE=; b=Gs2m+qrErBOXYZQ+miwIPao4ieCYdbTj4Havw/caCKQO/iBbeAeZnjEu3GrEGXXw6K sdAxUyV6zyA5jp1U63mtzMtCOGQ+LZNu9OBneNKc73GOMz7bO2L285/yxUy5wes7L+3Y JJLWidqH1QHuXVmSyTgsRjpIpBmYYPpxerCQ6MgU81G+SnxPLLkZ631bQD8ofryLq0tU ZbTW8l3om/niIKxyT7NSdfzyi9YC8ZjlGBDqluGAjtiAWP2C0YX/Zocf41CATx0E7crx 6L4gY/XlCTE6R1E9x3iUxCLo0EurCq9GbA3pItpn7AU3oZ1SJ0wJzv55uxGh+nfWQYD2 Rwow== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=fGNWCT7F; 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 n13si766779ejk.436.2022.01.12.18.21.07; Wed, 12 Jan 2022 18:21:07 -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=fGNWCT7F; 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 535AB68B387; Thu, 13 Jan 2022 03:58:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A844F68B353 for ; Thu, 13 Jan 2022 03:58:44 +0200 (EET) Received: by mail-qv1-f45.google.com with SMTP id kl12so5095653qvb.5 for ; Wed, 12 Jan 2022 17:58:44 -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=ZJ9lUbBJpCoU5X2bvN8COZwQKk1sA6W4pVYdj9acVEs=; b=fGNWCT7F0iA1HmBPF6XVypogtPmLHzOch4KxtLicdfnVZwZwh5/kkkj0gc/QhzGKMN vRGSDwgMjDMKjW8vC/xj8koCHVg7KseGcA2lEVJgyIqM6XlO/qRJy9bUbnL/naGCRHv6 Fm7lB8fjtoGe+/3qfUTu2+1/ky2grs+xmN3eJ4D4Z95YPmB1yto4jgiDw3m+0Dzg0CkI jE2Q7w01WhZn/806Bx8l3Yw0gfXbbdSuH0Az921hnEplv1sxRrXKMOsza5X+NMNGO8pg y8YY0UuavOEgRXRWDV/RDlinuGmhZrOTEErr4r/ZSJFwRxuU4IusFu9KhM2scWKYztne rwLg== 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=ZJ9lUbBJpCoU5X2bvN8COZwQKk1sA6W4pVYdj9acVEs=; b=tuZev8xqE20QN/XJDol2hMuWg9PmdZT2nPanpqDLA+JlHUkJbFEVwvsCUGIHOl1k/o gSz8i3RR5ii+APiy/3igk3uhhXEWSL4STXB9wCQexnwYBboAD8vwzaAX9MB1Qxhtub// 63ltRd3uXMJUEeL0LQKtOiKBPEX5harDQO5H56s5GVuY6fx4Q0U22Ueec5Hww3k/Sn8c vGl56zuVXeCj7anok+1VqoOgWCpUtL7vwpPHr2GEE8xUhdY2+5WLAV+gYBy1ZKTdJleB ZRlTK4zmQqaBCl+JOMqTyC0aRUWuxRxwttSHFGBHN9hVa1I1TYMMb0DOyAZRXDCg3xm5 oA2A== X-Gm-Message-State: AOAM533Ai5302u0iBZIcezn8Y05kcRWPtAOIuEU+6RFQYWdSFty6EbgU c+Zr8oO4XQtkbaBu4gKn1017nQNR5+M= X-Received: by 2002:a05:6214:2a8e:: with SMTP id jr14mr2253899qvb.97.1642039123024; Wed, 12 Jan 2022 17:58:43 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id u19sm893081qke.1.2022.01.12.17.58.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 17:58:42 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jan 2022 22:57:50 -0300 Message-Id: <20220113015806.519-15-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 133/281] rsd: 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: VLkbvjZjtT2A From: Anton Khirnov Signed-off-by: James Almer --- libavformat/rsd.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/libavformat/rsd.c b/libavformat/rsd.c index ba3b3429b9..bd6dc3351e 100644 --- a/libavformat/rsd.c +++ b/libavformat/rsd.c @@ -81,9 +81,10 @@ static int rsd_read_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } - par->channels = avio_rl32(pb); - if (par->channels <= 0 || par->channels > INT_MAX / 36) { - av_log(s, AV_LOG_ERROR, "Invalid number of channels: %d\n", par->channels); + par->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + par->ch_layout.nb_channels = avio_rl32(pb); + if (par->ch_layout.nb_channels <= 0 || par->ch_layout.nb_channels > INT_MAX / 36) { + av_log(s, AV_LOG_ERROR, "Invalid number of channels: %d\n", par->ch_layout.nb_channels); return AVERROR_INVALIDDATA; } @@ -102,17 +103,17 @@ static int rsd_read_header(AVFormatContext *s) memset(par->extradata, 0, 34); break; case AV_CODEC_ID_ADPCM_PSX: - par->block_align = 16 * par->channels; + par->block_align = 16 * par->ch_layout.nb_channels; break; case AV_CODEC_ID_ADPCM_IMA_RAD: - par->block_align = 20 * par->channels; + par->block_align = 20 * par->ch_layout.nb_channels; break; case AV_CODEC_ID_ADPCM_IMA_WAV: if (version == 2) start = avio_rl32(pb); par->bits_per_coded_sample = 4; - par->block_align = 36 * par->channels; + par->block_align = 36 * par->ch_layout.nb_channels; break; case AV_CODEC_ID_ADPCM_THP_LE: /* RSD3GADP is mono, so only alloc enough memory @@ -124,13 +125,13 @@ static int rsd_read_header(AVFormatContext *s) return ret; break; case AV_CODEC_ID_ADPCM_THP: - par->block_align = 8 * par->channels; + par->block_align = 8 * par->ch_layout.nb_channels; avio_skip(s->pb, 0x1A4 - avio_tell(s->pb)); - if ((ret = ff_alloc_extradata(st->codecpar, 32 * par->channels)) < 0) + if ((ret = ff_alloc_extradata(st->codecpar, 32 * par->ch_layout.nb_channels)) < 0) return ret; - for (i = 0; i < par->channels; i++) { + for (i = 0; i < par->ch_layout.nb_channels; i++) { if (avio_feof(pb)) return AVERROR_EOF; avio_read(s->pb, st->codecpar->extradata + 32 * i, 32); @@ -159,11 +160,11 @@ static int rsd_read_header(AVFormatContext *s) st->duration = av_get_audio_frame_duration2(par, remaining - start); break; case AV_CODEC_ID_ADPCM_THP: - st->duration = (remaining - start) / (8 * par->channels) * 14; + st->duration = (remaining - start) / (8 * par->ch_layout.nb_channels) * 14; break; case AV_CODEC_ID_PCM_S16LE: case AV_CODEC_ID_PCM_S16BE: - st->duration = (remaining - start) / 2 / par->channels; + st->duration = (remaining - start) / 2 / par->ch_layout.nb_channels; } } @@ -194,14 +195,14 @@ static int rsd_read_packet(AVFormatContext *s, AVPacket *pkt) par->codec_id == AV_CODEC_ID_XMA2) { ret = av_get_packet(s->pb, pkt, par->block_align); } else if (par->codec_tag == MKTAG('W','A','D','P') && - par->channels > 1) { + par->ch_layout.nb_channels > 1) { int i, ch; ret = av_new_packet(pkt, par->block_align); if (ret < 0) return ret; for (i = 0; i < 4; i++) { - for (ch = 0; ch < par->channels; ch++) { + for (ch = 0; ch < par->ch_layout.nb_channels; ch++) { pkt->data[ch * 8 + i * 2 + 0] = avio_r8(s->pb); pkt->data[ch * 8 + i * 2 + 1] = avio_r8(s->pb); }