[FFmpeg-devel] [PATCH] tests/fate/ffmpeg: silence the audio for fate-ffmpeg-streamloop-transcode-av

James Almer jamrial at gmail.com
Tue Jun 20 22:50:38 EEST 2023


On 6/20/2023 4:41 PM, Anton Khirnov wrote:
> Quoting James Almer (2023-06-20 21:39:22)
>> On 6/20/2023 3:53 PM, Anton Khirnov wrote:
>>> Fixed-point AAC decoder currently does not produce the same output on
>>> all platforms. Until that is fixed, silence the audio stream using the
>>> volume filter.
>>>
>>> Also, actually use the aac_fixed decoder as was the original intent.
>>> ---
>>>    tests/fate/ffmpeg.mak                         |   7 +-
>>>    tests/ref/fate/ffmpeg-streamloop-transcode-av | 144 +++++++++---------
>>>    2 files changed, 77 insertions(+), 74 deletions(-)
>>>
>>> diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
>>> index 87cd0b46d0..763ed381ee 100644
>>> --- a/tests/fate/ffmpeg.mak
>>> +++ b/tests/fate/ffmpeg.mak
>>> @@ -132,9 +132,12 @@ fate-ffmpeg-fix_sub_duration_heartbeat: CMD = fmtstdout srt -fix_sub_duration \
>>>      -c:s srt \
>>>      -f null -
>>>    
>>> -FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MATROSKA, H264 AAC_FIXED, PCM_S32LE_ENCODER) += fate-ffmpeg-streamloop-transcode-av
>>> +# FIXME: the integer AAC decoder does not produce the same output on all platforms
>>> +# so until that is fixed we use the volume filter to silence the data
>>> +FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MATROSKA, H264 AAC_FIXED, PCM_S32LE_ENCODER VOLUME_FILTER) += fate-ffmpeg-streamloop-transcode-av
>>>    fate-ffmpeg-streamloop-transcode-av: CMD = \
>>> -	framecrc -auto_conversion_filters -stream_loop 3 -i $(TARGET_SAMPLES)/mkv/1242-small.mkv -c:a pcm_s32le
>>> +    framecrc -auto_conversion_filters -stream_loop 3 -c:a aac_fixed -i $(TARGET_SAMPLES)/mkv/1242-small.mkv \
>>> +    -af volume=0 -c:a pcm_s32le
>>
>> Maybe do volume=0:precision=fixed so you can remove the
>> -auto_conversion_filters part.
> 
> It's mainly there to interleave s32p to s32 for encoding

Yeah, just checked and it fails without -auto_conversion_filters even if 
you force fixed point in the filter.
Still, even if it's a temporal change, it's best to add precision=fixed 
since it will prevent conversion to float and back to fixed from auto 
inserting two aresample instances in the filterchain.

With precision=fixed

> [AVFilterGraph @ 000001f29a306e20] Setting 'volume' to value '0'
> [AVFilterGraph @ 000001f29a306e20] Setting 'precision' to value 'fixed'
> [graph_0_in_0_0 @ 000001f29a30eea0] Setting 'time_base' to value '1/48000'
> [graph_0_in_0_0 @ 000001f29a30eea0] Setting 'sample_rate' to value '48000'
> [graph_0_in_0_0 @ 000001f29a30eea0] Setting 'sample_fmt' to value 's32p'
> [graph_0_in_0_0 @ 000001f29a30eea0] Setting 'channel_layout' to value 'stereo'
> [graph_0_in_0_0 @ 000001f29a30eea0] tb:1/48000 samplefmt:s32p samplerate:48000 chlayout:stereo
> [format_out_0_0 @ 000001f29a0defa0] Setting 'sample_fmts' to value 's32'
> [format_out_0_0 @ 000001f29a0defa0] auto-inserting filter 'auto_aresample_0' between the filter 'Parsed_volume_0' and the filter 'format_out_0_0'
> [AVFilterGraph @ 000001f29a306e20] query_formats: 4 queried, 4 merged, 6 already done, 0 delayed
> [graph_0_in_0_0 @ 000001f29a30eea0] tb:0.000021 sample_rate:48000.000000 nb_channels:2.000000
> [Parsed_volume_0 @ 000001f29a026f60] n:nan t:nan pts:nan precision:fixed volume_i:0/255 volume:0.000000 volume_dB:-inf
> [auto_aresample_0 @ 000001f29a0df8a0] [SWR @ 000001f29a1cbf60] Using s32p internally between filters
> [auto_aresample_0 @ 000001f29a0df8a0] ch:2 chl:stereo fmt:s32p r:48000Hz -> ch:2 chl:stereo fmt:s32 r:48000Hz

Without it

> [AVFilterGraph @ 000001ccb6036aa0] Setting 'volume' to value '0'
> [graph_0_in_0_0 @ 000001ccb603b6c0] Setting 'time_base' to value '1/48000'
> [graph_0_in_0_0 @ 000001ccb603b6c0] Setting 'sample_rate' to value '48000'
> [graph_0_in_0_0 @ 000001ccb603b6c0] Setting 'sample_fmt' to value 's32p'
> [graph_0_in_0_0 @ 000001ccb603b6c0] Setting 'channel_layout' to value 'stereo'
> [graph_0_in_0_0 @ 000001ccb603b6c0] tb:1/48000 samplefmt:s32p samplerate:48000 chlayout:stereo
> [format_out_0_0 @ 000001ccb5e0eec0] Setting 'sample_fmts' to value 's32'
> [Parsed_volume_0 @ 000001ccb5d56f80] auto-inserting filter 'auto_aresample_0' between the filter 'graph_0_in_0_0' and the filter 'Parsed_volume_0'
> [format_out_0_0 @ 000001ccb5e0eec0] auto-inserting filter 'auto_aresample_1' between the filter 'Parsed_volume_0' and the filter 'format_out_0_0'
> [AVFilterGraph @ 000001ccb6036aa0] query_formats: 4 queried, 2 merged, 9 already done, 0 delayed
> [auto_aresample_0 @ 000001ccb5d59be0] picking fltp out of 2 ref:s32p
> [auto_aresample_0 @ 000001ccb5d59be0] [SWR @ 000001ccb5efbf80] Using fltp internally between filters
> [auto_aresample_0 @ 000001ccb5d59be0] ch:2 chl:stereo fmt:s32p r:48000Hz -> ch:2 chl:stereo fmt:fltp r:48000Hz
> [auto_aresample_0 @ 000001ccb5d59be0] tb:0.000021 sample_rate:48000.000000 nb_channels:2.000000
> [Parsed_volume_0 @ 000001ccb5d56f80] n:nan t:nan pts:nan precision:float volume:0.000000 volume_dB:-inf
> [auto_aresample_1 @ 000001ccb5d5ae80] [SWR @ 000001ccb5f10fc0] Using fltp internally between filters
> [auto_aresample_1 @ 000001ccb5d5ae80] ch:2 chl:stereo fmt:fltp r:48000Hz -> ch:2 chl:stereo fmt:s32 r:48000Hz


More information about the ffmpeg-devel mailing list