Hi WebRTC Team,
I am working with WebRTC for Android, plan to use FFmpeg's dynaudnorm, instead of AGC (both AGC1 and AGC2) for audio gain process, as AGC does not sufficiently amplify quiet parts of the audio. I intend to integrate dynaudnorm directly into the WebRTC layer using FFmpeg. To achieve this, I have disabled AGC via configuration and process audio data using FFmpeg’s dynaudnorm algorithm.
I first verified dynaudnorm separately by processing audio through FFmpeg’s command-line tools, converting PCM audio data with float*, and applying dynaudnorm. The results were significantly better than AGC—quiet parts were effectively amplified, and overall loudness was more balanced.
When integrating same into WebRTC layer,
Extracting audio from WebRTC's AudioBuffer* audio_data
Converting to AVFrame* frame using float* audio_data from AudioBuffer
Applying dynaudnorm for gain adjustment
Integrating FFmpeg's avfilter in WebRTC
#1 - Enabled avfilter in FFmpeg build by modifying:
third_party/ffmpeg/chromium/scripts/build_ffmpeg.py
#2 - Added FFmpeg avfilter sources
third_party/ffmpeg/ffmpeg_generated.gni
#3 - FFmpeg Build Process
python3 chromium/scripts/build_ffmpeg.py android arm64
Successfully built FFmpeg
Now, I can see libavfilter files in:
ffmpeg/build.arm64.android/Chrome/libavfilter/
Issue Faced in WebRTC Build
gn gen out/arm64-v8a --args='is_debug=false is_component_build=false rtc_include_tests=false target_os="android" target_cpu="arm64"'
When building WebRTC after FFmpeg integration, I get this error:
However, I have verified that filter_list.c exists in the FFmpeg build files, but WebRTC does not seem to find it.
Questions:How to fix this filter_list.c missing issue in WebRTC build? Any steps missed?
Are there additional changes required to integrate avfilter properly?
Any alternative suggestions for implementing dynaudnorm inside WebRTC?
Any guidance or suggestions would be highly appreciated!
Thanks,