Uprev webrtc-apm to upstream WebRTC M88

This change is created by:
1. ./script/sync-apm.sh <webrtc branch-heads/4324> .
2. Modify modules.mk files until everything compiles
Note that some aec3 targets with avx2 optimizations are moved to
modules/audio_processing/aec3/module.mk. The purpose is to avoid
codes without avx2 intrinsics be compiled with -mavx2 which
seems to cause crash on GLK platforms.
3. Re-apply commit 1a11b8a webrtc-apm: Replace deprected Json::Reader call.

BUG=b:175761810
TEST=emerge webrtc-apm and deploy
Execute 'cras_test_client -C /dev/null --effects aec' to verify
on hatch, octopus, grunt, atlas, kalista

Cq-Depend: chromium:2617383
Change-Id: Ib858244bcaeaa76335e6a77b1cea910f49b71f2b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/webrtc-apm/+/2586126
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
2888 files changed
tree: db0701fb35e8bb66f4693df3790c3ac7ba3cab3e
  1. absl/
  2. api/
  3. audio/
  4. common_audio/
  5. cras-config/
  6. modules/
  7. rtc_base/
  8. script/
  9. system_wrappers/
  10. third_party/
  11. common.mk
  12. common_types.h
  13. libwebrtc_apm.pc.template
  14. Makefile
  15. OWNERS
  16. pc_utils.mk
  17. README.md
  18. typedefs.h
  19. webrtc_apm.cc
  20. webrtc_apm.h
README.md

WebRTC APM

APM is the audio processing module of WebRTC project in charge of effects like echo cancellation, noise suppression, etc. The purpose of this project is to build a standalone library for Chrome OS system side audio processing.

Files content

  • scripts to copy over folders and files from upstream WebRTC project for APM and its dependencies.
  • Copied files from upstream WebRTC project. For example: common_audio, modules, rtc_base and system_wrappers.
  • webrtc_apm.cc/h C wrappers to access APM functions.
  • common-mk based makefiles to build shared library libwebrtc_apm.so

Update

To update this package to latest upstream WebRC:

  • Run ./script/sync-apm.sh path/to/webrtc-checkout/src .
  • emerge webrtc-apm to see if anything breaks.
  • If emerge success, then we're good.
  • Otherwise look into the emerge failure, and then possibly:
    • Update sync-apm.sh to copy more files if upstream directory structure changes.
    • Update makefiles if upstream build files has changed.
    • Update webrtc-apm ebuild file if dependencies changed.
  • Create a new commit