[FFmpeg-devel] [PATCH 195/281] audiotoolbox: convert to new channel layout API
Anton Khirnov
anton at khirnov.net
Mon Feb 21 16:22:14 EET 2022
Quoting James Almer (2022-01-13 03:02:28)
> From: Anton Khirnov <anton at khirnov.net>
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavcodec/audiotoolboxdec.c | 27 +++++-----
> libavcodec/audiotoolboxenc.c | 95 ++++++++++++++++--------------------
> 2 files changed, 57 insertions(+), 65 deletions(-)
>
> diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c
> index 9939fef218..8edf9bd463 100644
> --- a/libavcodec/audiotoolboxdec.c
> +++ b/libavcodec/audiotoolboxdec.c
> @@ -166,8 +166,8 @@ static int ffat_update_ctx(AVCodecContext *avctx)
> &size, &format)) {
> if (format.mSampleRate)
> avctx->sample_rate = format.mSampleRate;
> - avctx->channels = format.mChannelsPerFrame;
> - avctx->channel_layout = av_get_default_channel_layout(avctx->channels);
> + av_channel_layout_uninit(&avctx->ch_layout);
> + av_get_default_channel_layout(&avctx->ch_layout, format.mChannelsPerFrame);
Looks wrong
> @@ -364,11 +365,11 @@ static av_cold int ffat_create_decoder(AVCodecContext *avctx,
> #endif
> } else {
> in_format.mSampleRate = avctx->sample_rate ? avctx->sample_rate : 44100;
> - in_format.mChannelsPerFrame = avctx->channels ? avctx->channels : 1;
> + in_format.mChannelsPerFrame = avctx->ch_layout.nb_channels ? avctx->ch_layout.nb_channels : 1;
> }
>
> avctx->sample_rate = out_format.mSampleRate = in_format.mSampleRate;
> - avctx->channels = out_format.mChannelsPerFrame = in_format.mChannelsPerFrame;
> + avctx->ch_layout.nb_channels = out_format.mChannelsPerFrame = in_format.mChannelsPerFrame;
Should probably uninit+set order.
> diff --git a/libavcodec/audiotoolboxenc.c b/libavcodec/audiotoolboxenc.c
> index 9245aa9dc4..aeda1c36fd 100644
> --- a/libavcodec/audiotoolboxenc.c
> +++ b/libavcodec/audiotoolboxenc.c
> @@ -278,10 +272,7 @@ static av_cold int ffat_init_encoder(AVCodecContext *avctx)
> return AVERROR_UNKNOWN;
> }
>
> - if (!avctx->channel_layout)
> - avctx->channel_layout = av_get_default_channel_layout(avctx->channels);
I suspect this will break unspec channel layouts that previously worked.
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list