[FFmpeg-devel] [PATCH 211/281] flac: convert to new channel layout API
James Almer
jamrial at gmail.com
Wed Feb 23 13:51:58 EET 2022
On 2/23/2022 7:24 AM, Anton Khirnov wrote:
> Quoting James Almer (2022-01-13 03:04:50)
>> From: Anton Khirnov <anton at khirnov.net>
>>
>> Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>
>> Signed-off-by: Anton Khirnov <anton at khirnov.net>
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>> libavcodec/flac.c | 39 +++++++++++++++++++++------------------
>> libavcodec/flac.h | 2 +-
>> libavcodec/flac_parser.c | 7 ++-----
>> libavcodec/flacdec.c | 9 ++++-----
>> libavcodec/flacenc.c | 26 +++++++++++++-------------
>> 5 files changed, 41 insertions(+), 42 deletions(-)
>>
>> diff --git a/libavcodec/flac.c b/libavcodec/flac.c
>> index 7b075d4bd3..51014faea1 100644
>> --- a/libavcodec/flac.c
>> +++ b/libavcodec/flac.c
>> @@ -29,15 +29,15 @@
>>
>> static const int8_t sample_size_table[] = { 0, 8, 12, 0, 16, 20, 24, 0 };
>>
>> -static const uint64_t flac_channel_layouts[8] = {
>> - AV_CH_LAYOUT_MONO,
>> - AV_CH_LAYOUT_STEREO,
>> - AV_CH_LAYOUT_SURROUND,
>> - AV_CH_LAYOUT_QUAD,
>> - AV_CH_LAYOUT_5POINT0,
>> - AV_CH_LAYOUT_5POINT1,
>> - AV_CH_LAYOUT_6POINT1,
>> - AV_CH_LAYOUT_7POINT1
>> +static const AVChannelLayout flac_channel_layouts[8] = {
>> + AV_CHANNEL_LAYOUT_MONO,
>> + AV_CHANNEL_LAYOUT_STEREO,
>> + AV_CHANNEL_LAYOUT_SURROUND,
>> + AV_CHANNEL_LAYOUT_QUAD,
>> + AV_CHANNEL_LAYOUT_5POINT0,
>> + AV_CHANNEL_LAYOUT_5POINT1,
>> + AV_CHANNEL_LAYOUT_6POINT1,
>> + AV_CHANNEL_LAYOUT_7POINT1
>> };
>>
>> static int64_t get_utf8(GetBitContext *gb)
>> @@ -193,12 +193,19 @@ int ff_flac_is_extradata_valid(AVCodecContext *avctx,
>> return 1;
>> }
>>
>> -void ff_flac_set_channel_layout(AVCodecContext *avctx)
>> +void ff_flac_set_channel_layout(AVCodecContext *avctx, int channels)
>> {
>> - if (avctx->channels <= FF_ARRAY_ELEMS(flac_channel_layouts))
>> - avctx->channel_layout = flac_channel_layouts[avctx->channels - 1];
>> + if (channels == avctx->ch_layout.nb_channels &&
>> + avctx->ch_layout.order == AV_CHANNEL_ORDER_NATIVE &&
>> + avctx->ch_layout.u.mask)
>
> Not sure why I wrote this check like this originally, now it seems
> better to check for order != UNSPEC, so that a user-supplied custom
> layout is preserved.
You didn't write that, i did it to prevent the failure of
fate-matroska-flac-extradata-update (a very recent test). Changing it to
!= UNSPEC also works, so I'll do that.
More information about the ffmpeg-devel
mailing list