From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 7B86842E6C for ; Thu, 13 Jan 2022 02:29:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4169E68B500; Thu, 13 Jan 2022 04:01:29 +0200 (EET) Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5449668B4E1 for ; Thu, 13 Jan 2022 04:01:27 +0200 (EET) Received: by mail-qt1-f171.google.com with SMTP id c10so5386487qte.2 for ; Wed, 12 Jan 2022 18:01:27 -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=hsXzPX57PzFINoodpd8a2MBL6iFhr5lw1zNwaEq6M5M=; b=Cbgw2glU/cJoco+wN49OA3LzqohaWYnAoG3MJSXpihaoCTBzwBlGsrRdaPsi5QhI/a wAq0VowJ7Sa1m12i7TodYFcwuwltDg0p6H0Pa2DQNrbpQaGp5d3q+v0H4LiLAg6TsZkM 4pYdH9RyIGNIB5ydLH9R9LwtWM68Eesj4aiOorg17hDDRumrdv9sA4fBQ3GTrqhvFAk8 fBZ9KwQbUZjW1YuDGSNf08d+xE748qOm0tVB10aKPWzWIz7sbQfxSkfCLCWcBMV/LznF a+rdhXmBhLcvZy7HEbuYHSNRdkI/RcATrPc2pv1fUdBAgntirP+tW4V8O0qwLL7MdQIC 5ZtA== 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=hsXzPX57PzFINoodpd8a2MBL6iFhr5lw1zNwaEq6M5M=; b=AUSmE5HBBdhAQTIN09mVwLDHDiexByDUUVHE5nU2jO1OCUZPqXFdqSaoq4VVaTMPNg 1BICz8HEfF2o06sBJDAByQBigt+N2IKjYX8AgcDLcjfhq7bGnr5EEwkRcjezjVqb1C/M AMGRyo7AHEZu0mSUnyuI1ZmlfcNnUYHgezM3kgr5m3tWVxoSq4IUiq4uQNAlDRtif8Q/ dQK8azqZ+w9TtzPwe0YBKkIT9SUmNB/PYJcKEj7msh6xrC4F3q1Zbhexa5PSfexH6mPA A1f/OAFLmpfZHM/HktzjtPZudBNFSR1Qot+whb5ahReLt6uRMY265Fx5at7phx9YZFgt wLdg== X-Gm-Message-State: AOAM53392CWYPSvExtEP5MyLgGmvFhIpE4EuP05uhfFWqfmD6rzXKPjB Mj0exB7E4xgKPjYjbqZf8WFHhOXlxUQ= X-Google-Smtp-Source: ABdhPJx9M1gmMPXGzHWpZNuXa05aakJKoZoRuBsEG6B0XbtJthzFfS9I4Ro+WrofFJCJexO3Gh9ZBg== X-Received: by 2002:ac8:7f02:: with SMTP id f2mr2012379qtk.1.1642039285588; Wed, 12 Jan 2022 18:01:25 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id y17sm1182232qtj.75.2022.01.12.18.01.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 18:01:25 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jan 2022 23:00:14 -0300 Message-Id: <20220113020026.590-19-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 167/281] wav: 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Vittorio Giovara Signed-off-by: Vittorio Giovara Signed-off-by: Anton Khirnov Signed-off-by: James Almer --- libavformat/wavdec.c | 32 +++++++++++++++++--------------- libavformat/wavenc.c | 14 +++++++------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index 01090b6947..74f7a4d9aa 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -221,9 +221,11 @@ static int wav_parse_xma2_tag(AVFormatContext *s, int64_t size, AVStream *st) channels += avio_r8(pb); avio_skip(pb, 3); } - st->codecpar->channels = channels; + av_channel_layout_uninit(&st->codecpar->ch_layout); + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + st->codecpar->ch_layout.nb_channels = channels; - if (st->codecpar->channels <= 0 || st->codecpar->sample_rate <= 0) + if (st->codecpar->ch_layout.nb_channels <= 0 || st->codecpar->sample_rate <= 0) return AVERROR_INVALIDDATA; avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); @@ -611,15 +613,15 @@ break_loop: if ( st->codecpar->bit_rate > 0 && data_size > 0 && st->codecpar->sample_rate > 0 - && sample_count > 0 && st->codecpar->channels > 1 - && sample_count % st->codecpar->channels == 0) { - if (fabs(8.0 * data_size * st->codecpar->channels * st->codecpar->sample_rate / + && sample_count > 0 && st->codecpar->ch_layout.nb_channels > 1 + && sample_count % st->codecpar->ch_layout.nb_channels == 0) { + if (fabs(8.0 * data_size * st->codecpar->ch_layout.nb_channels * st->codecpar->sample_rate / sample_count /st->codecpar->bit_rate - 1.0) < 0.3) - sample_count /= st->codecpar->channels; + sample_count /= st->codecpar->ch_layout.nb_channels; } - if ( data_size > 0 && sample_count && st->codecpar->channels - && (data_size << 3) / sample_count / st->codecpar->channels > st->codecpar->bits_per_coded_sample + 1) { + if (data_size > 0 && sample_count && st->codecpar->ch_layout.nb_channels && + (data_size << 3) / sample_count / st->codecpar->ch_layout.nb_channels > st->codecpar->bits_per_coded_sample + 1) { av_log(s, AV_LOG_WARNING, "ignoring wrong sample_count %"PRId64"\n", sample_count); sample_count = 0; } @@ -632,34 +634,34 @@ break_loop: } if (!sample_count || av_get_exact_bits_per_sample(st->codecpar->codec_id) > 0) - if ( st->codecpar->channels + if ( st->codecpar->ch_layout.nb_channels && data_size && av_get_bits_per_sample(st->codecpar->codec_id) && wav->data_end <= avio_size(pb)) sample_count = (data_size << 3) / - (st->codecpar->channels * (uint64_t)av_get_bits_per_sample(st->codecpar->codec_id)); + (st->codecpar->ch_layout.nb_channels * (uint64_t)av_get_bits_per_sample(st->codecpar->codec_id)); if (sample_count) st->duration = sample_count; if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S32LE && - st->codecpar->block_align == st->codecpar->channels * 4 && + st->codecpar->block_align == st->codecpar->ch_layout.nb_channels * 4 && st->codecpar->bits_per_coded_sample == 32 && st->codecpar->extradata_size == 2 && AV_RL16(st->codecpar->extradata) == 1) { st->codecpar->codec_id = AV_CODEC_ID_PCM_F16LE; st->codecpar->bits_per_coded_sample = 16; } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S24LE && - st->codecpar->block_align == st->codecpar->channels * 4 && + st->codecpar->block_align == st->codecpar->ch_layout.nb_channels * 4 && st->codecpar->bits_per_coded_sample == 24) { st->codecpar->codec_id = AV_CODEC_ID_PCM_F24LE; } else if (st->codecpar->codec_id == AV_CODEC_ID_XMA1 || st->codecpar->codec_id == AV_CODEC_ID_XMA2) { st->codecpar->block_align = 2048; - } else if (st->codecpar->codec_id == AV_CODEC_ID_ADPCM_MS && st->codecpar->channels > 2 && - st->codecpar->block_align < INT_MAX / st->codecpar->channels) { - st->codecpar->block_align *= st->codecpar->channels; + } else if (st->codecpar->codec_id == AV_CODEC_ID_ADPCM_MS && st->codecpar->ch_layout.nb_channels > 2 && + st->codecpar->block_align < INT_MAX / st->codecpar->ch_layout.nb_channels) { + st->codecpar->block_align *= st->codecpar->ch_layout.nb_channels; } ff_metadata_conv_ctx(s, NULL, wav_metadata_conv); diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c index 2317700be1..5629bd487d 100644 --- a/libavformat/wavenc.c +++ b/libavformat/wavenc.c @@ -170,12 +170,12 @@ static av_cold int peak_init_writer(AVFormatContext *s) "Writing 16 bit peak for 8 bit audio does not make sense\n"); return AVERROR(EINVAL); } - if (par->channels > INT_MAX / (wav->peak_bps * wav->peak_ppv)) + if (par->ch_layout.nb_channels > INT_MAX / (wav->peak_bps * wav->peak_ppv)) return AVERROR(ERANGE); - wav->size_increment = par->channels * wav->peak_bps * wav->peak_ppv; + wav->size_increment = par->ch_layout.nb_channels * wav->peak_bps * wav->peak_ppv; - wav->peak_maxpos = av_calloc(par->channels, sizeof(*wav->peak_maxpos)); - wav->peak_maxneg = av_calloc(par->channels, sizeof(*wav->peak_maxneg)); + wav->peak_maxpos = av_calloc(par->ch_layout.nb_channels, sizeof(*wav->peak_maxpos)); + wav->peak_maxneg = av_calloc(par->ch_layout.nb_channels, sizeof(*wav->peak_maxneg)); if (!wav->peak_maxpos || !wav->peak_maxneg) goto nomem; @@ -205,7 +205,7 @@ static int peak_write_frame(AVFormatContext *s) } wav->peak_output = tmp; - for (c = 0; c < par->channels; c++) { + for (c = 0; c < par->ch_layout.nb_channels; c++) { wav->peak_maxneg[c] = -wav->peak_maxneg[c]; if (wav->peak_bps == 2 && wav->peak_format == PEAK_FORMAT_UINT8) { @@ -277,7 +277,7 @@ static int peak_write_chunk(AVFormatContext *s) avio_wl32(pb, wav->peak_format); /* 8 or 16 bit */ avio_wl32(pb, wav->peak_ppv); /* positive and negative */ avio_wl32(pb, wav->peak_block_size); /* frames per value */ - avio_wl32(pb, par->channels); /* number of channels */ + avio_wl32(pb, par->ch_layout.nb_channels); /* number of channels */ avio_wl32(pb, wav->peak_num_frames); /* number of peak frames */ avio_wl32(pb, -1); /* audio sample frame position (not implemented) */ avio_wl32(pb, 128); /* equal to size of header */ @@ -384,7 +384,7 @@ static int wav_write_packet(AVFormatContext *s, AVPacket *pkt) wav->peak_maxpos[c] = FFMAX(wav->peak_maxpos[c], (int16_t)AV_RL16(pkt->data + i)); wav->peak_maxneg[c] = FFMIN(wav->peak_maxneg[c], (int16_t)AV_RL16(pkt->data + i)); } - if (++c == s->streams[0]->codecpar->channels) { + if (++c == s->streams[0]->codecpar->ch_layout.nb_channels) { c = 0; if (++wav->peak_block_pos == wav->peak_block_size) { int ret = peak_write_frame(s); -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".