Move config from CRAS to webrtc-apm

Before this change, APM and AEC3 settings are passed to
webrtc-apm library by additional struct. The logic of
parsing config file and finally sets to APM/AEC3 config
structures are separated in different projects, and that
makes maintainance difficult.
This change fixes the problem by passing ini dictionary
to webrtc-apm library, and owns the parsing logic.

New files under cras-conifg/ are copied from CRAS/adhd
and applied necessary adjustment.

TEST=Build and test on nocturne

Change-Id: Ib2835f0053800fb091fce5a5a29f2b177e809575
Commit-Ready: ChromeOS CL Exonerator Bot <>
Tested-by: Hsinyu Chao <>
Reviewed-by: Cheng-Yi Chiang <>
Reviewed-by: Per Ã…hgren <>
8 files changed
tree: 6cb63473af6c577af29265d99949fcb0363fe566
  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/
  12. common_types.h
  13. libwebrtc_apm.pc.template
  14. Makefile
  17. typedefs.h
  19. webrtc_apm.h


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.
  • C wrappers to access APM functions.
  • common-mk based makefiles to build shared library


To update this package to latest upstream WebRC:

  • Run ./script/ 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 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