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);"
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to