New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 710465 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 16
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature



Sign in to add a comment

Audio processing in CRAS

Project Member Reported by hychao@chromium.org, Apr 11 2017

Issue description

This is the parent bug to track adding audio processing into CRAS.

The plan is to integrate the WebRTC audio processing module to CRAS:
https://packages.gentoo.org/packages/media-libs/webrtc-audio-processing

Sub-tasks of this work will be tracked in separate bug.
 
THe portage webrtc-audio-processing package is too old. Changing plan to use Tot webrtc instead.

https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/master/eclass/gn-chromium.eclass is useful to fetch and build webrtc in CrOS chroot. Some hacks are used for my draft ebuild file to work though. Mostly due to mix using gclient and other depot_tools in CrOS chroot.
I will address them as part of the APM integration work. These build tool issues and hacks will be detailed in separate child bugs when I finish the draft work.

Besides the build tool problem, it is not a trivial work to identify the necessary libraries for audio_processing module to work. Currently I am resolving the dependencies manually while understanding the WebRTC code structure.


Comment 2 by hychao@chromium.org, Mar 16 2018

update:
I use webrtc TOT code with the standard gn/ninja buildtool to create libaudio_processing and all dependencies linked to work in CRAS.

This enables us to build prototype images to play with.
However the build flow works badly in CrOS environment. vapier@ gave some feedback to point out this is not going to work. Mainly because code size too big and need to resolve a bunch of depot_tools issue.

The new approach is to checkout just the APM and its dependencies directories from WebRTC project and write our own makefiles to build it.
Plan to make a cros-workon project locate at src/third_party/webrtc-apm and make it a cros_workon project
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/f0a9ca6df1db0ed3996b128532a90527bf93f06f

commit f0a9ca6df1db0ed3996b128532a90527bf93f06f
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri Apr 20 07:33:16 2018

Add sync-apm.sh script

Use this script to copy the source code of audio processing
module and its dependencies from WebRTC upstream.

This script also corrects the libevent header path to use the
CrOS build version.

BUG= chromium:710465 
TEST=fetch webrtc project then run
./script/sync-apm.sh  ~/webrtc-checkout/src .

Change-Id: Idfdbfbf1cc0ae90c70e947c8a673a53291fe3a30
Reviewed-on: https://chromium-review.googlesource.com/970196
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[add] https://crrev.com/f0a9ca6df1db0ed3996b128532a90527bf93f06f/script/sync-apm.sh

Project Member

Comment 4 by bugdroid1@chromium.org, May 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b

commit 47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed May 09 18:21:36 2018

Checkout APM and dependencies from upstream WebRTC

Generate source code by command:
./script/sync-apm.sh  ~/webrtc-checkout/src .

where webrtc-checkout HEAD is at 8a1b20a21

BUG= chromium:710465 
TEST=None

Change-Id: Iceab82cf72dc4c0550c8864580ed9f75d4f9a596
Reviewed-on: https://chromium-review.googlesource.com/970197
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/audio/echo_canceller3_factory.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/httpcommon_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/pathutils_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/ratetracker.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/chebyshev.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/matched_filter.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/rtp_generator.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/chebyshev.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/gain_controller2.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/criticalsection_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/transform_mips.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/include/audio_coding_module.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/audio_vector.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/level_estimator_impl.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/cb_update_best_index.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/ilbc.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/thread_checker_impl.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/ilbc.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/cb_update_best_index.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/real_fft.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/echo_detector/moving_max_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/codec.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/video_coding/codecs/h264/include/h264.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/spl_inl.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/byteorder_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/pitch_filter_armv6.S
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/downsampled_render_buffer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/data_rate_limiter_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/vad/vad_core_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/audio_network_adaptor/parse_ana_dump.py
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/acm2/acm_receiver.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/array_view_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/transient/file_utils.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/render_delay_controller.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/complex_bit_reverse.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/task_queue_posix.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/messagedigest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/cb_construct.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/cb_construct.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/min_max_operations_mips.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/source/filterbanks.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/input_audio_file.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/delay_peak_detector.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/state_search.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/state_search.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/neteq_decoder_enum.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/audio_network_adaptor/event_log_writer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/ipaddress_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec/aec_core_neon.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/echo_detector/circular_buffer.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/energy_inverse.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/xcorr_coef.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/resampler/resampler_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/neteq_stereo_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/energy_inverse.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/echo_path_delay_estimator.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/rtccertificategenerator_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/copyonwritebuffer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/testutils.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/fir_filter.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/delay_manager.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/json.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/split_vq.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/split_vq.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/arith_routins.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/xcorr_coef.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/platform_thread_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/firewallsocketserver.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/java/src/org/webrtc/OWNERS
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/vad/vad_audio_proc_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/system_wrappers/include/aligned_array.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/video/video_rotation.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/audio_generator/file_audio_generator.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/rtpsenderinterface.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec/echo_cancellation_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/neteq_packet_source_input.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/channel_buffer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/utility/ooura_fft.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/umametrics.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/echo_remover.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/rtpreceiverinterface.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/ns/nsx_core_neon.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/vad/pitch_based_vad.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/interpolate_samples.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/include/spl_inl.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/time_stretch.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/downsample_fast_neon.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/interpolate_samples.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/video/video_frame.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/helpers.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/function_view_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/sparse_fir_filter.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/numerics/safe_minmax_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/audio_converter.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/packet_buffer.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/audio_converter.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/include/module_fec_types.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/random_vector.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/noop.mm
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/fileutils.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/video/video_timing.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/neteq_unittest.proto
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/thread_checker.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/DEPS
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/sequenced_task_checker.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/post_decode_vad.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/suppression_gain_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/source/filterbank_tables.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/settings.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/residual_echo_detector_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/source/filterbank_tables.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/refl_coef_to_lpc.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/vad/vad_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec_dump/write_to_file_task.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/fakesslidentity.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/BUILD.gn
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/transient/wpd_node_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/audio/OWNERS
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/rtcerror.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/decode_plc.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/structs.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/mediatypes.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/cross_correlation.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/acm2/call_statistics_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/agc2/vector_float_frame.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/g722/g722_enc_dec.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/numerics/safe_compare.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/neteq_packet_source_input.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/system_wrappers/source/metrics_default.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/cng/cng_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/decision_logic_normal.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/transform_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/filterbanks_neon.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/system_wrappers/include/field_trial.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/resampler/resampler.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/fakemetricsobserver.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/g722/audio_decoder_g722.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/testutils.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/merge.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/acm2/acm_codec_database.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/vad/pole_zero_filter.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/audio/audio_send_stream_tests.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/packet_source.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/audio/transport_feedback_packet_loss_tracker.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/optional_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/echo_cancellation_impl_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/video/video_content_type.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/filterbanks.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/sslfingerprint.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/render_queue_item_verifier.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/socketstream.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/numerics/moving_median_filter_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/rtptransceiverinterface.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/resampler/push_resampler.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/aec3_fft.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/neteq_test.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/ssladapter.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/stringutils_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/rollingaccumulator_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/OWNERS
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/ring_buffer_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/sslstreamadapter.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec/aec_common.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/BUILD.gn
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/audio/audio_state.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/agc2/fixed_digital_level_estimator.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/intelligibility/intelligibility_utils.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/voice_detection_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/normal.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tools/fake_decode_from_file.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/optional.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/stringencode_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/buffer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/bufferqueue.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/jsepsessiondescription.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/main/source/codec.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/OWNERS
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/statstypes.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/voice_detection_impl.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/callback.h.pump
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/comfort_noise_generator_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/residual_echo_estimator.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/vad/pitch_based_vad_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/api/mediaconstraintsinterface.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/file_win.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/signalthread.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/pathutils.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec3/main_filter_update_gain_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/mock/mock_buffer_level_filter.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/vad/vad_circular_buffer.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/include/signal_processing_library.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/random_vector_unittest.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/codecs/pcm16b/pcm16b_common.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/common_audio/signal_processing/downsample_fast.c
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_coding/neteq/tick_timer.cc
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/ifaddrs-android.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/modules/audio_processing/aec_dump/mock_aec_dump.h
[add] https://crrev.com/47ed209dd7c4e0e6323de5f2fdd6aefbd8e3102b/rtc_base/zero_memory.h
[add] https:/
Project Member

Comment 5 by bugdroid1@chromium.org, May 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/b6f63cd8a156ebc3b867b93e18a5223366593134

commit b6f63cd8a156ebc3b867b93e18a5223366593134
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri May 11 14:02:09 2018

Add C wrapper to access APM functions

BUG= chromium:710465 
TEST=Apply whole patch series. emerge-eve webrtc-apm and
check libwebrtc_apm.so is built.

Change-Id: If26bd17ca509f83fd978890305594fdce94bfaeb
Reviewed-on: https://chromium-review.googlesource.com/970198
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[add] https://crrev.com/b6f63cd8a156ebc3b867b93e18a5223366593134/webrtc_apm.h
[add] https://crrev.com/b6f63cd8a156ebc3b867b93e18a5223366593134/webrtc_apm.cc

Project Member

Comment 6 by bugdroid1@chromium.org, May 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/8667325533618576c0e312ca4f87ccc0c6a3b403

commit 8667325533618576c0e312ca4f87ccc0c6a3b403
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri May 11 14:02:10 2018

Add pkg-config files and makefiles

BUG= chromium:710465 
TEST=emerge webrtc-apm on eve and veyron
to verify libwebrtc_apm.so is built and
libwebrtc_apm.pc is installed

Change-Id: Ic05e3ee48ca8e4de5c9e06b78ca46defe8a232fd
Reviewed-on: https://chromium-review.googlesource.com/970199
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/agc2/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/aec/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/agc/legacy/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/beamformer/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/pc_utils.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/Makefile
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/common_audio/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_coding/codecs/isac/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_coding/codecs/isac/main/source/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/audio/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/audio/utility/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/system_wrappers/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/api/audio/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/ns/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/aec3/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/agc/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/common_audio/signal_processing/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/include/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/logging/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/system_wrappers/source/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/rtc_base/numerics/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/aec_dump/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/utility/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_coding/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/libwebrtc_apm.pc.template
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_coding/codecs/isac/main/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/rtc_base/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/common_audio/resampler/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/vad/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/common_audio/vad/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_coding/codecs/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/transient/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/echo_detector/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/api/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/modules/audio_processing/aecm/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/rtc_base/strings/module.mk
[add] https://crrev.com/8667325533618576c0e312ca4f87ccc0c6a3b403/common.mk

Project Member

Comment 7 by bugdroid1@chromium.org, May 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/c547affa46e1843508f05eda548178cb22057108

commit c547affa46e1843508f05eda548178cb22057108
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri May 11 14:02:11 2018

Add README.md

BUG= chromium:710465 
TEST=None

Change-Id: Iafac6b2987410692bf06cb4622a5a6de48f1f4cf
Reviewed-on: https://chromium-review.googlesource.com/972921
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[add] https://crrev.com/c547affa46e1843508f05eda548178cb22057108/README.md

Project Member

Comment 8 by bugdroid1@chromium.org, May 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/df2814b322964c20ef77cb9e29b24a2e8feccdb4

commit df2814b322964c20ef77cb9e29b24a2e8feccdb4
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri May 11 14:02:10 2018

adhd: Add dependency to webrtc-apm

This allows webrtc audio processing module be integrated
to Chrome OS audio server, so that CRAS clients other than
Chrome browser can use the audio processing effects.

This feature is put behind USE flag 'cras-apm' which sets to
enabled by default, disabled in embedded and minimal profile.

BUG= chromium:710465 
TEST=emerge-squawks adhd and verify webrtc-apm package is built.
Execute USE="-cras-apm" emerge-squawks should not build webrtc-apm.

Change-Id: Ie4bab4b48c03f0cc87150a6c879475285472b3e3
Reviewed-on: https://chromium-review.googlesource.com/499815
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/df2814b322964c20ef77cb9e29b24a2e8feccdb4/media-sound/adhd/adhd-9999.ebuild
[modify] https://crrev.com/df2814b322964c20ef77cb9e29b24a2e8feccdb4/profiles/features/minimal/package.use
[add] https://crrev.com/df2814b322964c20ef77cb9e29b24a2e8feccdb4/media-sound/adhd/metadata.xml
[modify] https://crrev.com/df2814b322964c20ef77cb9e29b24a2e8feccdb4/profiles/features/embedded/package.use

Project Member

Comment 9 by bugdroid1@chromium.org, May 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/a15882cadab0b3762e86259f6f840e7db8c2a374

commit a15882cadab0b3762e86259f6f840e7db8c2a374
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri May 11 14:02:09 2018

media-libs: Add webrtc-apm

This package builds the audio processing module from WebRTC
project, will be used for system side audio processing.

BUG= chromium:710465 
TEST=emerge-eve webrtc-apm
CQ-DEPEND=CL:970199

Change-Id: Id1672d33c4e1f166596e03a4f77d7cf0f91ff525
Reviewed-on: https://chromium-review.googlesource.com/970057
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[add] https://crrev.com/a15882cadab0b3762e86259f6f840e7db8c2a374/media-libs/webrtc-apm/webrtc-apm-9999.ebuild

Project Member

Comment 10 by bugdroid1@chromium.org, May 30 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/80a85eb670db5af2161194da700fc143a26d61de

commit 80a85eb670db5af2161194da700fc143a26d61de
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed May 30 19:50:53 2018

CRAS: dev_stream - Limit the frames to copy from converter buffer

When sample rate conversion is used in dev_stream, the input data is
copied twice: (1) from device buffer to converter and (2) from converter
buffer to stream shm.
During the first data transfer, we should limit the number of frames to
copy by the available size in stream shm.  This is to avoid any data
left in converter buffer after the 2nd data transfer and break the
assumption in audio thread that all data copied from device should be
transfered to stream buffer.

This bug could be triggered when SRC is used and input data becomes
available in large size. For example when testing APM it processed
data in 10 ms blocks.

BUG= chromium:710465 
TEST=dev_stream_unittest, run test cases that do SRC at capture where
fmt converter buffer size is too large or too small.

Change-Id: I238ba1deac82ac9c59894a2c494c0a873d3e67dd
Reviewed-on: https://chromium-review.googlesource.com/538535
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/80a85eb670db5af2161194da700fc143a26d61de/cras/src/server/dev_stream.c
[modify] https://crrev.com/80a85eb670db5af2161194da700fc143a26d61de/cras/src/tests/dev_stream_unittest.cc

Labels: M-69
Status: Started (was: Assigned)
Project Member

Comment 12 by bugdroid1@chromium.org, Jun 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/52b11396960345d8b046ad282eab944d5694c39e

commit 52b11396960345d8b046ad282eab944d5694c39e
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 06 12:00:30 2018

CRAS: input_data - Adds input_data struct

Transfer input data from iodev to stream is more complicated
than the output path because samples are not guaranteed to be
interleaved and in later commits we'll add processing module
for input stream.

This is a refactor commit to pull out some input specific variable
from cras_iodev to the new struct input_data, which will hold the
logic of data transfer between iodev and rstream, in order to make
cras_iodev clean while we add more logic for stream level processing.

The new API calls will look like below:

/* Gets buffer from hw into input_data's audio area. */

/* Gets X frames of processed data to stream. */
input_data_get_for_stream( stream A )
input_data_get_for_stream( stream B )
...

/* Marks Y frames of data as used by stream. */
input_data_put_for_stream( stream A )
input_data_put_for_stream( stream B )

/* Mark Z frames of buffer as read by all client streams. */
input_data_set_all_streams_read( input_data, Z )

BUG= chromium:710465 
TEST=unittest pass

Change-Id: I347d7735a787a15cc9bd8e314e7cf1ccc1d1fa59
Reviewed-on: https://chromium-review.googlesource.com/1018750
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/tests/iodev_stub.cc
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/tests/timing_unittest.cc
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/server/dev_io.c
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/server/cras_iodev.h
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/tests/iodev_unittest.cc
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/tests/audio_thread_unittest.cc
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/Makefile.am
[add] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/server/input_data.c
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/server/cras_iodev.c
[add] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/server/input_data.h
[modify] https://crrev.com/52b11396960345d8b046ad282eab944d5694c39e/cras/src/tests/dev_io_unittest.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Jun 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/f72445155ca42b88529a99d700569cab01a253c1

commit f72445155ca42b88529a99d700569cab01a253c1
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 06 12:00:31 2018

CRAS: iodev_list - allow multiple dev enabled callback be registered

We will have use case that audio processing modules care about what's
being played to output. So we need to allow more callbacks be
registered for device enabled event.

BUG= chromium:710465 
TEST=unittest can pass

Change-Id: I8468117675eb03c45e8989fd092b47f0ceb5cb7c
Reviewed-on: https://chromium-review.googlesource.com/1018751
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/f72445155ca42b88529a99d700569cab01a253c1/cras/src/tests/loopback_iodev_unittest.cc
[modify] https://crrev.com/f72445155ca42b88529a99d700569cab01a253c1/cras/src/server/cras_iodev_list.c
[modify] https://crrev.com/f72445155ca42b88529a99d700569cab01a253c1/cras/src/server/cras_iodev_list.h
[modify] https://crrev.com/f72445155ca42b88529a99d700569cab01a253c1/cras/src/tests/iodev_list_unittest.cc
[modify] https://crrev.com/f72445155ca42b88529a99d700569cab01a253c1/cras/src/server/cras_loopback_iodev.c

Project Member

Comment 14 by bugdroid1@chromium.org, Jun 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/00a0b3382ab23c180f1522df35d938e35b69256b

commit 00a0b3382ab23c180f1522df35d938e35b69256b
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 06 12:00:31 2018

CRAS: client - Set stream effects

This change adds the client API to enable/disable various stream
effects defined in WebRTC audio processing module. The enabled
effects will be set to cras_rstream and handled in server side.

BUG= chromium:710465 
TEST=cras_test_client --effects aec,agc --capture_file /tmp/1 &
Then use cras_test_client --dump_s to verify the stream effect
property.

Change-Id: I2d86720b9335b97ef9f47072dc25fcef02456f95
Reviewed-on: https://chromium-review.googlesource.com/490587
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/server/cras_rstream.c
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/common/cras_types.h
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/tests/cras_client_unittest.cc
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/server/cras_rstream.h
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/libcras/cras_client.h
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/server/audio_thread.c
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/tests/cras_test_client.c
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/common/cras_messages.h
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/libcras/cras_client.c
[modify] https://crrev.com/00a0b3382ab23c180f1522df35d938e35b69256b/cras/src/server/cras_rclient.c

Comment 15 by luizp@google.com, Jun 15 2018

Labels: Hotlist-Partner-GSuite
Project Member

Comment 16 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/c3e25e022ecf8afc42df4b3dc2489d83087c9385

commit c3e25e022ecf8afc42df4b3dc2489d83087c9385
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 20 21:23:38 2018

CRAS: dsp_pipeline - Adds external dsp module interface

Adds the ext_dsp_module interface to represent the dynamic
stream level processing block applied after iodev's dsp.

WebRTC APM would like to utilize the floating point buffer
processed after device side software dsp. In order to save
buffer copy and int <-> float conversion work, appends the
ext_dsp_module to existing dsp pipeline to become a multiple
output pipeline.

This change extends the builtin sink module by allowing it be
connected to an ext_dsp_module and runs its process function
when data flows to sink.

For streams use WebRTC APM processing, they will get buffer
from the ext_dsp_module, and the rest of the streams will get
buffer from the sink module.

BUG= chromium:710465 
TEST=unittest pass

Change-Id: If7fd88c42cceaad04dbda1c3d867df8933e72dec
Reviewed-on: https://chromium-review.googlesource.com/1018752
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/tests/cras_dsp_pipeline_unittest.cc
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_dsp_module.h
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/tests/dsp_unittest.cc
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/tests/iodev_unittest.cc
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_iodev.h
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_dsp_pipeline.c
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_dsp_mod_builtin.c
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_dsp_pipeline.h
[modify] https://crrev.com/c3e25e022ecf8afc42df4b3dc2489d83087c9385/cras/src/server/cras_iodev.c

Project Member

Comment 17 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/21aa7da50ea8485f63df2345f59d674523e434d3

commit 21aa7da50ea8485f63df2345f59d674523e434d3
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 20 21:23:37 2018

CRSA: iodev - Remove optimization at mute

APM processing is stateful. For better integration with device
DSP, removing the existing optimization that skips DSP at mute.

BUG= chromium:710465 
TEST=Play Youtube, set and unset mute state.

Change-Id: I1abd51e10f9a7c08127db3e52915db2b884ba5ce
Reviewed-on: https://chromium-review.googlesource.com/1080360
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/21aa7da50ea8485f63df2345f59d674523e434d3/cras/src/server/cras_iodev.c

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/6e4ea41f031d2fa17b5a53e3897152be68a17ca1

commit 6e4ea41f031d2fa17b5a53e3897152be68a17ca1
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jun 20 21:23:37 2018

CRAS: client - Set stream effects and backward support

This is a reland of http://crosreview.com/490587 which was
reverted due to ARC++ sending old version of connect message
without 'effects' defined.

To avoid breaking basic audio functions on ARC++. The
inconsistent message problem is now handled by increasing
CRAS_PROTO_VER and temporarily supports the old message structures
base on the proto_version value set by client.

This backward support check should be cleaned up when all clients
migrate to latest libcras.

BUG= chromium:710465 
TEST=cras_test_client --effects aec,agc --capture_file /tmp/1 &
Then use cras_test_client --dump_s to verify the stream effect
property.
rclient_unittest to cover the case when client sends old connect
message.

Change-Id: I82a3ae94b5592173eec864a78d314a65cbcab194
Reviewed-on: https://chromium-review.googlesource.com/1099575
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/server/cras_rstream.c
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/common/cras_types.h
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/tests/cras_client_unittest.cc
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/server/cras_rstream.h
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/tests/rclient_unittest.cc
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/libcras/cras_client.h
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/server/audio_thread.c
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/tests/cras_test_client.c
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/common/cras_messages.h
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/libcras/cras_client.c
[modify] https://crrev.com/6e4ea41f031d2fa17b5a53e3897152be68a17ca1/cras/src/server/cras_rclient.c

Project Member

Comment 19 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/df70e2d3c51e09d5acf493df12ab756e4b9bfd11

commit df70e2d3c51e09d5acf493df12ab756e4b9bfd11
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:35 2018

CRAS: Add float_buffer utility

Both APM library and existing CRAS DSP use non-interleaved float
for audio processing. Create float_buffer for the common used
utilities.

BUG= chromium:710465 
TEST=None

Change-Id: Ie04a25f2bcf5a96cc7327b8a78485eefee84ce08
Reviewed-on: https://chromium-review.googlesource.com/1018753
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[add] https://crrev.com/df70e2d3c51e09d5acf493df12ab756e4b9bfd11/cras/src/server/float_buffer.h

Project Member

Comment 20 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/6ff157f413267b72ef44748615dd458eb84ceec4

commit 6ff157f413267b72ef44748615dd458eb84ceec4
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:36 2018

CRAS: apm_list - Process input data in APM

This change implements the data transfer/processing flow from
iodev -> intput_data -> apm -> rstream.

Note that input_data implements the ext_dsp_module interface to read
audio data from iodev. By doing this cras_apm_list doesn't need to deal
with iodev.

BUG= chromium:710465 
TEST=Unittest can pass

Change-Id: I155ef73d4f7a7b0de431cce8a96aa34c6c726fc3
Reviewed-on: https://chromium-review.googlesource.com/1018754
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/server/cras_apm_list.h
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/tests/apm_list_unittest.cc
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/tests/iodev_unittest.cc
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/Makefile.am
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/server/input_data.c
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/server/cras_iodev.c
[modify] https://crrev.com/6ff157f413267b72ef44748615dd458eb84ceec4/cras/src/server/input_data.h

Project Member

Comment 21 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/17e1bb5594efd6e26c8f3028ef3b2581964bc24f

commit 17e1bb5594efd6e26c8f3028ef3b2581964bc24f
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:34 2018

CRAS: dsp - Create dummy ini for ext_dsp_module use case

If an iodev does not use any dsp specified in dsp.ini, there will
be no dsp pipeline created.

For ext_dsp_module use case that needs a dsp pipeline to append to,
this change solves the problem by creating dummy ini to load the
simple pipeline of X ports connect from source straight to sink.

BUG= chromium:710465 
TEST=Manually remove /etc/cras/dsp.ini then start playback
and recording, run 'cras_test_client --dump_dsp' then verify
in /var/log/message the pipeline dump shows N audio ports from
source to sink, for both direction.

Change-Id: I7886053155020284da1780fe4cd417c7e9304793
Reviewed-on: https://chromium-review.googlesource.com/1080361
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/server/cras_dsp.c
[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/server/cras_dsp_ini.h
[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/server/cras_dsp.h
[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/tests/iodev_unittest.cc
[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/server/cras_iodev.c
[modify] https://crrev.com/17e1bb5594efd6e26c8f3028ef3b2581964bc24f/cras/src/server/cras_dsp_ini.c

Project Member

Comment 22 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/2981be29dc56634de4728bd8f47447fb2206a0e0

commit 2981be29dc56634de4728bd8f47447fb2206a0e0
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:34 2018

CRAS: byte_buffer - Rename utiliy functions

This change removes the '_bytes' postfix from the circular
buffer utility functions so they can be used for all kinds
of unit.

Later commit will add float_buffer which extends the 'byte_buffer'
structure to store deinterleaved floating point buffer, and it
prefers to count in 'frames' instead of bytes.

BUG= chromium:710465 
TEST=None

Change-Id: Ia7e01aeda491a6021701ef471902124208c397ee
Reviewed-on: https://chromium-review.googlesource.com/1080362
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/server/cras_a2dp_iodev.c
[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/common/byte_buffer.h
[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/server/cras_hfp_info.c
[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/server/dev_stream.c
[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/tests/byte_buffer_unittest.cc
[modify] https://crrev.com/2981be29dc56634de4728bd8f47447fb2206a0e0/cras/src/server/cras_loopback_iodev.c

Project Member

Comment 23 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/860b48718fe6c1870944959142b7b5257584ec30

commit 860b48718fe6c1870944959142b7b5257584ec30
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:35 2018

CRAS: apm_list - Add apm_list module

cras_apm_list manages the creation of webrtc apm objects
in main thread when an input stream connets.
An apm instance holds buffer in both integer and float format
which will be used for processing data from forward(capture)
and reverse(playback) stream.

BUG= chromium:710465 
TEST=unittest passes.
emerge-reef adhd;
USE="-cras-apm" emerge-reef adhd; Unittest can pass.

Change-Id: I890b5a8f0168c4c72db660e805080b09c4831c49
Reviewed-on: https://chromium-review.googlesource.com/490588
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/cras_iodev_list.c
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/cras_rstream.c
[add] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/cras_apm_list.h
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/configure.ac
[add] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/cras_rstream.h
[add] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/tests/apm_list_unittest.cc
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/server/audio_thread.c
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/tests/audio_thread_unittest.cc
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/Makefile.am
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/tests/rstream_unittest.cc
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/tests/iodev_list_unittest.cc
[modify] https://crrev.com/860b48718fe6c1870944959142b7b5257584ec30/cras/src/tests/rclient_unittest.cc

Project Member

Comment 24 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/4dd5f3a646756bfc50b3f006a4ad73dde653ba03

commit 4dd5f3a646756bfc50b3f006a4ad73dde653ba03
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:36 2018

CRAS: apm_list - Process reverse stream

To enable echo cancellation, apm needs to process reverse stream.
This reverse stream is the mixed output buffer in CRAS. Every
apm object which cares about the reverse stream shall process this
buffer.

BUG= chromium:710465 
TEST=unittest

Change-Id: I1820671c7a7026bd0e2526ffa98034efc39cec17
Reviewed-on: https://chromium-review.googlesource.com/490590
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/4dd5f3a646756bfc50b3f006a4ad73dde653ba03/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/4dd5f3a646756bfc50b3f006a4ad73dde653ba03/cras/src/server/cras_iodev_list.c
[modify] https://crrev.com/4dd5f3a646756bfc50b3f006a4ad73dde653ba03/cras/src/tests/apm_list_unittest.cc
[modify] https://crrev.com/4dd5f3a646756bfc50b3f006a4ad73dde653ba03/cras/src/server/cras_apm_list.h
[modify] https://crrev.com/4dd5f3a646756bfc50b3f006a4ad73dde653ba03/cras/src/tests/iodev_list_unittest.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/13b0237de6ca9b9c7a6231b25b1439b4b54343f1

commit 13b0237de6ca9b9c7a6231b25b1439b4b54343f1
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:37 2018

CRAS: apm_list - Enable echo cancellation

Parses and handles the echo cancellation effect from rstream.
And implements the process_reverse flag in reverse module to
avoid processing when it's not needed.

BUG= chromium:710465 
TEST=Create two input streams by commands:
'cras_test_client --effects aec --capture_file /tmp/1'
'cras_test_client --capture_file /tmp/2'
then play YouTube, check the recorded audio files to verify
echo cancellation works in the 1st stream but not the 2nd.

Change-Id: I6b88e3a96af35f9450ec26cd82a6bf209cb40de6
Reviewed-on: https://chromium-review.googlesource.com/490591
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/13b0237de6ca9b9c7a6231b25b1439b4b54343f1/cras/src/server/cras_apm_list.c

Project Member

Comment 26 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/3a33a280aac17ceaac70220360dcc4688005dcee

commit 3a33a280aac17ceaac70220360dcc4688005dcee
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 21 23:30:37 2018

CRAS: apm_list - Fix channel layout on apm

On some platform input device has more than two channels and rely
on channel layout to specify which positions should map to the common
used position FL, FR (or FC in some USB headset).
While APM supports only standard mono, stereo, and keyboard mic which
we don't support yet. This change handles the logic to decide the best
channel layout for APM.

BUG= chromium:710465 
TEST=On Reef, do 'cras_test_client --capture_file /tmp/1 --effects aec'
and verify the recorded file.

Change-Id: Ia2d89369afdd8d5a978d66193b1ae318524c6457
Reviewed-on: https://chromium-review.googlesource.com/538534
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/3a33a280aac17ceaac70220360dcc4688005dcee/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/3a33a280aac17ceaac70220360dcc4688005dcee/cras/src/tests/iodev_unittest.cc
[modify] https://crrev.com/3a33a280aac17ceaac70220360dcc4688005dcee/cras/src/common/cras_audio_format.h
[modify] https://crrev.com/3a33a280aac17ceaac70220360dcc4688005dcee/cras/src/server/cras_iodev.c

Project Member

Comment 27 by bugdroid1@chromium.org, Jun 28 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/65207dc91ec9f81f6e975bb559270c9ccfe77031

commit 65207dc91ec9f81f6e975bb559270c9ccfe77031
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jun 28 14:06:47 2018

CRAS: apm_list - Enable aec_dump

Adds cras client API to trigger start/stop of aec dump.

BUG= chromium:710465 
TEST=cras_test_client --capture_file /tmp/1 --effects aec;
Run 'cras_test_client --dump_a | grep -C 3 Input'  to
look up the id of the stream.
Then execute 'cras_test_client --aecdump /tmp/aecdump --duration 10
--stream_id <stream-id>' and make sure /tmp/aecdump contains
correct information.

Change-Id: Ibb2e8cfa2e60fb158c926396cdd55568d671be92
Reviewed-on: https://chromium-review.googlesource.com/490589
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/server/cras_apm_list.h
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/tests/cras_test_client.c
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/tests/apm_list_unittest.cc
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/tests/rclient_unittest.cc
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/libcras/cras_client.h
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/server/audio_thread.c
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/tests/audio_thread_unittest.cc
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/server/audio_thread.h
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/common/cras_messages.h
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/libcras/cras_client.c
[modify] https://crrev.com/65207dc91ec9f81f6e975bb559270c9ccfe77031/cras/src/server/cras_rclient.c

Project Member

Comment 28 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/deb1cf69042af041b92ee972229392eb4077036e

commit deb1cf69042af041b92ee972229392eb4077036e
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri Jun 29 08:08:49 2018

CRAS: config - expose aec parameters in aec.ini

The new aec_config exposes the same set of parameters defined in
webrtc/api/audio/echo_canceller3_config.h

Customize these parameters in aec.ini file and CRAS will read and
use them for all APM instances.

BUG= chromium:710465 
TEST=Manually create an aec.ini under /etc/cras
Execute 'cras_test_client --reload_aec_config' and verify config
content in /var/log/messages
CQ-DEPEND=CL:1046726

Change-Id: Ibb065fce74d2d9733cdb49601de3422d9a488138
Reviewed-on: https://chromium-review.googlesource.com/1041306
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/cras_iodev_list.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/cras_apm_list.h
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/cras.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/cras_apm_list.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/tests/cras_test_client.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/tests/apm_list_unittest.cc
[add] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/config/aec_config.h
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/libcras/cras_client.h
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/cras_rclient.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/Makefile.am
[add] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/server/config/aec_config.c
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/tests/rclient_unittest.cc
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/common/cras_messages.h
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/tests/iodev_list_unittest.cc
[modify] https://crrev.com/deb1cf69042af041b92ee972229392eb4077036e/cras/src/libcras/cras_client.c

Project Member

Comment 29 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/3b8a2bd5ecc36ed23d91e2a64e032f877288355a

commit 3b8a2bd5ecc36ed23d91e2a64e032f877288355a
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri Jun 29 08:08:49 2018

CRAS: dbus - api to query if aec is supported

This api will be used by Chromium to know if system aec
can be used instead of the one in browser.
Set system aec non-supported by default and use board config
to enable on specific boards for initial testing.
In future this should be set to 'supported' by default and
only disable on specific boards when needed.

BUG= chromium:710465 
TEST=Edit board.ini to set system aec supported flag and
then use dbus-send to verify the correct value is returned.

Change-Id: Ib03c9b9d32d87dab8a3eaf1a14d27a0d8f51a143
Reviewed-on: https://chromium-review.googlesource.com/1111896
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/common/cras_types.h
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/server/cras_system_state.h
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/server/config/cras_board_config.c
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/server/cras_system_state.c
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/server/cras_dbus_control.c
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/src/server/config/cras_board_config.h
[modify] https://crrev.com/3b8a2bd5ecc36ed23d91e2a64e032f877288355a/cras/README.dbus-api

Project Member

Comment 30 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/47898ac7cdc43a02b590f646ac5691b7c552c070

commit 47898ac7cdc43a02b590f646ac5691b7c552c070
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri Jun 29 08:08:51 2018

CRAS: client - Initialize effects field

To avoid client side sending unexpected effects to server due
to the params variable not initialized to zero.

BUG= chromium:710465 
TEST=None

Change-Id: I77e16352d66dda4e3b162a943fe604d63257fadb
Reviewed-on: https://chromium-review.googlesource.com/1114665
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/47898ac7cdc43a02b590f646ac5691b7c552c070/cras/src/libcras/cras_client.c

Project Member

Comment 31 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm/+/ede78de16649a8675020bd305049f88b43680df0

commit ede78de16649a8675020bd305049f88b43680df0
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Fri Jun 29 08:08:51 2018

Expose aec3 config

This change exposes the upstream EchoCanceller3Config
and make webrtc_apm_create takes a copy of this struct.
This allows caller to change the parameters for tuning.

BUG= chromium:710465 
TEST=None
CQ-DEPEND=CL:1041306

Change-Id: I8337c151d4b7c08bf5dedd4c8833815214b8c058
Reviewed-on: https://chromium-review.googlesource.com/1046726
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[modify] https://crrev.com/ede78de16649a8675020bd305049f88b43680df0/webrtc_apm.h
[modify] https://crrev.com/ede78de16649a8675020bd305049f88b43680df0/webrtc_apm.cc

Cc: hlundin@chromium.org
Project Member

Comment 33 by bugdroid1@chromium.org, Jul 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform/system_api/+/35f6c2a9fbcfa5520d5abaa457396b740cdd9aa8

commit 35f6c2a9fbcfa5520d5abaa457396b740cdd9aa8
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Wed Jul 11 15:40:13 2018

service_constants: Add GetSystemAecSupported method

GetSystemAecSupported method will be used by Chrome to ask if
system side aec is supported.

BUG= chromium:710465 
TEST=None

Change-Id: Idf300b2642295f651e8fdd2565fffc18a5f74228
Reviewed-on: https://chromium-review.googlesource.com/1114666
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dan Erat <derat@chromium.org>

[modify] https://crrev.com/35f6c2a9fbcfa5520d5abaa457396b740cdd9aa8/dbus/service_constants.h

Project Member

Comment 34 by bugdroid1@chromium.org, Jul 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1f46b374ce939d811efd0f43a9222b958e847594

commit 1f46b374ce939d811efd0f43a9222b958e847594
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jul 19 16:06:07 2018

Expose experimental AEC on Chrome OS

Bug:  710465 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I6c42f67335f9335ac3e8d2e003bfdde1d6bfa433
Reviewed-on: https://chromium-review.googlesource.com/1086893
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Oskar Sundbom <ossu@chromium.org>
Reviewed-by: Henrik Andreasson <henrika@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576514}
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/audio/cras_audio_handler.cc
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/audio/cras_audio_handler.h
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/dbus/cras_audio_client.cc
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/dbus/cras_audio_client.h
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/dbus/fake_cras_audio_client.cc
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/chromeos/dbus/fake_cras_audio_client.h
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/media/audio/cras/audio_manager_cras.cc
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/media/audio/cras/audio_manager_cras.h
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/media/audio/cras/cras_input.cc
[modify] https://crrev.com/1f46b374ce939d811efd0f43a9222b958e847594/media/audio/cras/cras_input.h

Cc: peah@chromium.org
Project Member

Comment 36 by bugdroid1@chromium.org, Jul 26

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/04c1eb090a273a0a597034827a85eca929527454

commit 04c1eb090a273a0a597034827a85eca929527454
Author: Hsin-Yu Chao <hychao@chromium.org>
Date: Thu Jul 26 11:07:53 2018

CRAS: libcras - API to get AEC supported flag

ARC++ client will use libcras API to query if AEC is supported.

BUG= chromium:710465 
TEST=cras_test_client --get_aec_supported and verify the printed
output is correct.

Change-Id: I0af01f8c5a1a63a61e1dea31ba94c9c57176918b
Reviewed-on: https://chromium-review.googlesource.com/1149434
Commit-Ready: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/04c1eb090a273a0a597034827a85eca929527454/cras/src/libcras/cras_client.h
[modify] https://crrev.com/04c1eb090a273a0a597034827a85eca929527454/cras/src/libcras/cras_client.c
[modify] https://crrev.com/04c1eb090a273a0a597034827a85eca929527454/cras/src/tests/cras_test_client.c

Status: Fixed (was: Started)
CRAS side code are all merged so we can actually test on M69.
I'm going to close this bug, since it's mainly used to track software side work.

There're a few other related issues:

(1) Launch bug: 857378 with M69-Stable-Exp label.
Once it's approved we can enable this on M69 for specific Chrome OS board to experiment with.

(2) Add seccomp policy file, per security review: 870321

(3) More software work for tuning on CrOS product: 874787

(4) ARC++ side work, expose as AudioEffect: b/112461712

Sign in to add a comment