[FFmpeg-devel] [DEVEL][PATCH] ffmpeg: fix channel_layout bug on non-default layout

pkv.stream pkv.stream at gmail.com
Fri Nov 10 21:46:45 EET 2017


Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit :
> On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote:
>> Hi Michael,
>>
>>>>   ffmpeg_opt.c |   11 ++++++++++-
>>>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>>> 2af07f4366efdfaf1018bb2ea29be672befe0823  0001-ffmpeg-fix-channel_layout-bug-on-non-default-layout.patch
>>>>  From 4ec55dc88923108132307b41300a1abddf32e6f7 Mon Sep 17 00:00:00 2001
>>>> From: pkviet <pkv.stream at gmail.com>
>>>> Date: Mon, 2 Oct 2017 11:14:31 +0200
>>>> Subject: [PATCH] ffmpeg: fix channel_layout bug on non-default layout
>>>>
>>>> Fix for ticket 6706.
>>>> The -channel_layout option was not working when the channel layout was not
>>>> a default one (ex: for 4 channels, quad was interpreted as 4.0 which is
>>>> the default layout for 4 channels; or octagonal interpreted as 7.1).
>>>> This led to the spurious auto-insertion of an auto-resampler filter
>>>> remapping the channels even if input and output had identical channel
>>>> layouts.
>>>> The fix operates by directly calling the channel layout if defined in
>>>> options. If the layout is undefined, the default layout is selected as
>>>> before the fix.
>>>> ---
>>>>   ffmpeg_opt.c | 11 ++++++++++-
>>>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
>>>> index 100fa76..cf5a63c 100644
>>>> --- a/ffmpeg_opt.c
>>>> +++ b/ffmpeg_opt.c
>>>> @@ -1804,6 +1804,12 @@ static OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, in
>>>>           MATCH_PER_STREAM_OPT(audio_channels, i, audio_enc->channels, oc, st);
>>>> +        AVDictionaryEntry *output_layout = av_dict_get(o->g->codec_opts,
>>>> +                                                       "channel_layout",
>>>> +                                                       NULL, AV_DICT_MATCH_CASE);
>>> This doesnt look right
>>>
>>> not an issue of the patch as such but
>>> why is the channel_layout option per file and not per stream?
>>
>> just my ignorance; do you mean this is not the right way to retrieve
>> the channel_layout option from an audio stream ?
> I think there is more buggy with how the channel_layout is handled
>
> try this:
> ./ffmpeg -i ~/videos/matrixbench_mpeg2.mpg -channel_layout 5 test.wav
> and this:
> ./ffmpeg -i ~/videos/matrixbench_mpeg2.mpg -channel_layout:a 5 test.wav
>
> while it may appear that the are both working this is deceiving.
> I think only the channel number gets actually used in the 2nd case
>
> Look at what your code with av_dict_get() reads.
> It does not obtain the 5 in the 2nd case
>
> [...]
>
ok finally got what you meant with the second case; I had not realized 
that stream specifiers could be applied also to -channel_layout option.
thanks

>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel




More information about the ffmpeg-devel mailing list