[FFmpeg-devel] [PATCH 2/2] avcodec/liblc3enc: don't force unspec channel layouts

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Apr 4 19:59:09 EEST 2024


James Almer:
> We only care about channel count. Layout details will be ignored either way.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/liblc3enc.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/liblc3enc.c b/libavcodec/liblc3enc.c
> index 63d1645b10..5f8169a0cf 100644
> --- a/libavcodec/liblc3enc.c
> +++ b/libavcodec/liblc3enc.c
> @@ -61,6 +61,11 @@ static av_cold int liblc3_encode_init(AVCodecContext *avctx)
>                 "Unsupported frame duration %.1f ms.\n", frame_us / 1000.f);
>          return AVERROR(EINVAL);
>      }
> +    if (channels < 0 || channels > ENCODER_MAX_CHANNELS) {
> +        av_log(avctx, AV_LOG_ERROR,
> +               "Unsupported channel count %d. Should be 1 or 2\n", channels);
> +        return AVERROR(EINVAL);
> +    }
>  
>      hr_mode |= srate_hz > 48000;
>      hr_mode &= srate_hz >= 48000;
> @@ -195,9 +200,6 @@ const FFCodec ff_liblc3_encoder = {
>      .p.type         = AVMEDIA_TYPE_AUDIO,
>      .p.id           = AV_CODEC_ID_LC3,
>      .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY,
> -    .p.ch_layouts = (const AVChannelLayout[])
> -        { { AV_CHANNEL_ORDER_UNSPEC, 1 },
> -          { AV_CHANNEL_ORDER_UNSPEC, 2 }, { 0 } },
>      .p.supported_samplerates = (const int [])
>          { 96000, 48000, 32000, 24000, 16000, 8000, 0 },
>      .p.sample_fmts = (const enum AVSampleFormat[])

I think we should rather change encode.c to mean that an UNSPEC channel
layout (in AVCodec.ch_layouts) works with every channel layout with the
same number of channels.

- Andreas



More information about the ffmpeg-devel mailing list