[FFmpeg-devel] [PATCH] avfilter/src_movie: support unknown channel layouts
James Almer
jamrial at gmail.com
Mon Oct 31 21:40:16 EET 2022
On 10/31/2022 9:15 AM, Andreas Rheinhardt wrote:
> Paul B Mahol:
>> - av_log(log_ctx, AV_LOG_ERROR,
>> + char *cl_name;
>> +
>> + av_log(log_ctx, AV_LOG_WARNING,
>> "Channel layout is not set in stream %d, and could not "
>> "be guessed from the number of channels (%d)\n",
>> st_index, dec_par->ch_layout.nb_channels);
>> - return AVERROR(EINVAL);
>> + cl_name = av_asprintf("%dC", dec_par->ch_layout.nb_channels);
>> + av_channel_layout_from_string(&chl, cl_name);
>> + free(cl_name);
>
> 1. Wrong deallocator.
> 2. The allocation is completely unnecessary: One can just use snprintf
> with a big enough (yet still small) buffer.
> 3. But even that is unnecessary: Just set chl = (AVChannelLayout){
> .order = AV_CHANNEL_ORDER_UNSPEC, .nb_channels =
> dec_par->ch_layout.nb_channels }.
He doesn't even need to do that because it's already set.
av_channel_layout_default() will give set the output layout as an UNSPEC
one with nb_channels amount of channels if it can't find a named native
layout for it.
There is however a problem with this patch as is, and it's the next
printed warning now that he removed the return. After this change it
will mention a layout was guessed when one wasn't. So this patch should
simply change the "return AVERROR(EINVAL)" into another "return
av_channel_layout_copy(&dec_par->ch_layout, &chl);"
More information about the ffmpeg-devel
mailing list