Adds support for system AEC flag on Windows

This CL:

Checks the feature flag EnforceSystemEchoCancellation on Windows and
adds AudioParameters::ECHO_CANCELLER to the input device parameters if
the flag is enabled during device enumeration.

Checks audio parameters for AudioParameters::ECHO_CANCELLER when an
input stream is created and sets a boolean if it was enabled.

Applies an experimental System AEC mode on Windows 24H2 and above if
AudioParameters::ECHO_CANCELLER was set.

As a result: it is now possible to enable a flag and thereby activate a
system AEC on Windows 24H2 and above.

The CL also adds support for the EnforceSystemEchoCancellation flag in
chrome://flags for Mac AND Windows:

The new UI flag looks like this:
https://screenshot.googleplex.com/7Y5YkJwA7TN6jy5

Support for the command-line flag has already landed in
https://chromium-review.googlesource.com/c/chromium/src/+/5953258

Bug: 393098901
Bug: 375523826
Change-Id: I4faa8ada4c2f714323c952be2626702ea6d3e137
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6218470
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Reviewed-by: Olga Sharonova <olka@chromium.org>
Commit-Queue: Henrik Andreasson <henrika@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1414567}
11 files changed
tree: 751bfde6d9bb9c93dcc3d5368b898dd5f40c5557
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. crypto/
  16. dbus/
  17. device/
  18. docs/
  19. extensions/
  20. fuchsia_web/
  21. gin/
  22. google_apis/
  23. gpu/
  24. headless/
  25. infra/
  26. ios/
  27. ipc/
  28. media/
  29. mojo/
  30. native_client_sdk/
  31. net/
  32. pdf/
  33. ppapi/
  34. printing/
  35. remoting/
  36. rlz/
  37. sandbox/
  38. services/
  39. skia/
  40. sql/
  41. storage/
  42. styleguide/
  43. testing/
  44. third_party/
  45. tools/
  46. ui/
  47. url/
  48. webkit/
  49. .clang-format
  50. .clang-tidy
  51. .clangd
  52. .git-blame-ignore-revs
  53. .gitallowed
  54. .gitattributes
  55. .gitignore
  56. .gitmodules
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython3
  61. .yapfignore
  62. ATL_OWNERS
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. CPPLINT.cfg
  68. CRYPTO_OWNERS
  69. DEPS
  70. DIR_METADATA
  71. LICENSE
  72. LICENSE.chromium_os
  73. OWNERS
  74. PRESUBMIT.py
  75. PRESUBMIT_test.py
  76. PRESUBMIT_test_mocks.py
  77. README.md
  78. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.