[FFmpeg-devel] [PATCH 2/2] avformat/riffdec: follow the MS docs more strictly for setting wav channel layouts
Marton Balint
cus at passwd.hu
Thu Mar 21 11:40:34 EET 2024
On Thu, 21 Mar 2024, Tobias Rapp wrote:
> On 19/03/2024 20:14, Marton Balint wrote:
>
>>
>>
>> On Tue, 19 Mar 2024, Michael Niedermayer wrote:
>>
>>> On Sun, Mar 17, 2024 at 08:57:29PM +0100, Marton Balint wrote:
>>>> - Only parse the defined masks in dwChannelMask, unless
>>>> strict_std_compliance
>>>> is less than normal. This matches with the behaviour of the wav muxer.
>>>> - Ignore additional bits in dwChannelMasks as the MS documentation
>>>> suggests [1]
>>>> - Assume UNKNOWN channels for missing bits as the MS documentation
>>>> suggests [1]
>>>>
>>>> [1]
>>>> https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653308(v=vs.85)#details-about-dwchannelmask
>>>>
>>>> Signed-off-by: Marton Balint <cus at passwd.hu>
>>>> ---
>>>> libavformat/riffdec.c | 28 +++++++++++++++++++++++++---
>>>> 1 file changed, 25 insertions(+), 3 deletions(-)
>>>
>>> breaks:
>>> ./ffmpeg -i ~/tickets/2859/5.1plusdownmix.wav -ac 2 -t 100 -bitexact
>>> -c:a aac -y /tmp/2859-frenchspeack-nolibfaac.mp4
>>
>> After the patch this is file will need -strict unofficial to work, since
>> the downmix channels are not officially recognized in the dwChannelMask.
>>
> I think downmix channels are part of the RF64 specification, see EBU Tech
> 3306 section 3.1:
>
> """
> 3.1 Enhancement for a PCM stereo down mix
>
> No PCM stereo signal is included in the basic Wave Format Extensible.
>
> To include a stereo channel the following is added:
>
> #define SPEAKER_STEREO_LEFT 0x20000000
> #define SPEAKER_STEREO_RIGHT 0x40000000
> """
>
I was reluctant to add these, because the recommendation which superseded
this, ITU BS.2088 does not mention these masks.
Nevertheless, you are right, these should be recognized to support
historical RF64 files. Or we should not even make the distinction of RF64?
Regards,
Marton
More information about the ffmpeg-devel
mailing list