2015-09-25 13:58:30 +02:00
|
|
|
# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
|
|
|
|
|
#
|
|
|
|
|
# Use of this source code is governed by a BSD-style license
|
|
|
|
|
# that can be found in the LICENSE file in the root of the source
|
|
|
|
|
# tree. An additional intellectual property rights grant can be found
|
|
|
|
|
# in the file PATENTS. All contributing project authors may
|
|
|
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
|
|
2017-01-24 06:58:22 -08:00
|
|
|
import("../webrtc.gni")
|
2017-03-06 04:01:16 -08:00
|
|
|
if (is_android) {
|
|
|
|
|
import("//build/config/android/config.gni")
|
|
|
|
|
import("//build/config/android/rules.gni")
|
|
|
|
|
}
|
2015-09-25 13:58:30 +02:00
|
|
|
|
2016-09-23 00:38:52 -07:00
|
|
|
rtc_static_library("audio") {
|
2015-09-25 13:58:30 +02:00
|
|
|
sources = [
|
|
|
|
|
"audio_receive_stream.cc",
|
|
|
|
|
"audio_receive_stream.h",
|
2015-10-16 14:35:07 -07:00
|
|
|
"audio_send_stream.cc",
|
|
|
|
|
"audio_send_stream.h",
|
2015-11-06 15:34:49 -08:00
|
|
|
"audio_state.cc",
|
|
|
|
|
"audio_state.h",
|
Remove voe::TransmitMixer
TransmitMixer's functionality is moved into the AudioTransportProxy
owned by AudioState. This removes the need for an AudioTransport
implementation in VoEBaseImpl, which means that the proxy is no longer
a proxy, hence AudioTransportProxy is renamed to AudioTransportImpl.
In the short term, AudioState needs to know which AudioDeviceModule is
used, so it is added in AudioState::Config. AudioTransportImpl needs
to know which AudioSendStream:s are currently enabled to send, so
AudioState maintains a map of them, which is reduced into a simple
vector for AudioTransportImpl.
To encode and transmit audio,
AudioSendStream::OnAudioData(std::unique_ptr<AudioFrame> audio_frame)
is introduced, which is used in both the Chromium and standalone use
cases. This removes the need for two different instances of
voe::Channel::ProcessAndEncodeAudio(), so there is now only one,
taking an AudioFrame as argument. Callers need to allocate their own
AudioFrame:s, which is wasteful but not a regression since this was
already happening in the voe::Channel functions.
Most of the logic changed resides in
AudioTransportImpl::RecordedDataIsAvailable(), where two strange
things were found:
1. The clock drift parameter was ineffective since
apm->echo_cancellation()->enable_drift_compensation(false) is
called during initialization.
2. The output parameter 'new_mic_volume' was never set - instead it
was returned as a result, causing the ADM to never update the
analog mic gain
(https://cs.chromium.org/chromium/src/third_party/webrtc/voice_engine/voe_base_impl.cc?q=voe_base_impl.cc&dr&l=100).
Besides this, tests are updated, and some dead code is removed which
was found in the process.
Bug: webrtc:4690, webrtc:8591
Change-Id: I789d5296bf5efb7299a5ee05a4f3ce6abf9124b2
Reviewed-on: https://webrtc-review.googlesource.com/26681
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21301}
2017-12-15 16:42:15 +01:00
|
|
|
"audio_transport_impl.cc",
|
|
|
|
|
"audio_transport_impl.h",
|
2015-10-22 10:49:27 +02:00
|
|
|
"conversion.h",
|
2017-11-01 11:06:56 +01:00
|
|
|
"null_audio_poller.cc",
|
|
|
|
|
"null_audio_poller.h",
|
2017-07-19 00:39:19 -07:00
|
|
|
"time_interval.cc",
|
|
|
|
|
"time_interval.h",
|
2015-09-25 13:58:30 +02:00
|
|
|
]
|
|
|
|
|
|
2016-10-16 23:56:12 -07:00
|
|
|
if (!build_with_chromium && is_clang) {
|
|
|
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
2016-09-02 04:10:34 -07:00
|
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
2015-09-25 13:58:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
deps = [
|
|
|
|
|
"..:webrtc_common",
|
2016-10-20 06:32:39 -07:00
|
|
|
"../api:audio_mixer_api",
|
2016-12-07 08:23:27 -08:00
|
|
|
"../api:call_api",
|
2017-09-05 08:43:13 -07:00
|
|
|
"../api:optional",
|
2017-05-02 06:46:30 -07:00
|
|
|
"../api/audio_codecs:audio_codecs_api",
|
|
|
|
|
"../api/audio_codecs:builtin_audio_encoder_factory",
|
2017-10-10 14:38:11 +02:00
|
|
|
"../call:bitrate_allocator",
|
2016-12-07 04:52:58 -08:00
|
|
|
"../call:call_interfaces",
|
2017-06-01 04:02:35 -07:00
|
|
|
"../call:rtp_interfaces",
|
2016-11-22 06:42:53 -08:00
|
|
|
"../common_audio",
|
2017-04-27 02:08:52 -07:00
|
|
|
"../modules/audio_coding:cng",
|
2016-11-17 06:28:59 -08:00
|
|
|
"../modules/audio_device",
|
|
|
|
|
"../modules/audio_processing",
|
2017-02-07 07:14:08 -08:00
|
|
|
"../modules/bitrate_controller:bitrate_controller",
|
2016-12-07 08:23:27 -08:00
|
|
|
"../modules/congestion_controller:congestion_controller",
|
|
|
|
|
"../modules/pacing:pacing",
|
|
|
|
|
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
|
2017-12-06 07:51:33 +01:00
|
|
|
"../modules/rtp_rtcp",
|
2017-12-13 16:05:42 +01:00
|
|
|
"../rtc_base:checks",
|
2017-11-01 11:06:56 +01:00
|
|
|
"../rtc_base:rtc_base",
|
2017-07-19 10:40:47 -07:00
|
|
|
"../rtc_base:rtc_base_approved",
|
|
|
|
|
"../rtc_base:rtc_task_queue",
|
2015-09-25 13:58:30 +02:00
|
|
|
"../system_wrappers",
|
2017-12-07 20:54:55 +01:00
|
|
|
"../system_wrappers:field_trial_api",
|
2015-12-12 01:37:01 +01:00
|
|
|
"../voice_engine",
|
Remove voe::TransmitMixer
TransmitMixer's functionality is moved into the AudioTransportProxy
owned by AudioState. This removes the need for an AudioTransport
implementation in VoEBaseImpl, which means that the proxy is no longer
a proxy, hence AudioTransportProxy is renamed to AudioTransportImpl.
In the short term, AudioState needs to know which AudioDeviceModule is
used, so it is added in AudioState::Config. AudioTransportImpl needs
to know which AudioSendStream:s are currently enabled to send, so
AudioState maintains a map of them, which is reduced into a simple
vector for AudioTransportImpl.
To encode and transmit audio,
AudioSendStream::OnAudioData(std::unique_ptr<AudioFrame> audio_frame)
is introduced, which is used in both the Chromium and standalone use
cases. This removes the need for two different instances of
voe::Channel::ProcessAndEncodeAudio(), so there is now only one,
taking an AudioFrame as argument. Callers need to allocate their own
AudioFrame:s, which is wasteful but not a regression since this was
already happening in the voe::Channel functions.
Most of the logic changed resides in
AudioTransportImpl::RecordedDataIsAvailable(), where two strange
things were found:
1. The clock drift parameter was ineffective since
apm->echo_cancellation()->enable_drift_compensation(false) is
called during initialization.
2. The output parameter 'new_mic_volume' was never set - instead it
was returned as a result, causing the ADM to never update the
analog mic gain
(https://cs.chromium.org/chromium/src/third_party/webrtc/voice_engine/voe_base_impl.cc?q=voe_base_impl.cc&dr&l=100).
Besides this, tests are updated, and some dead code is removed which
was found in the process.
Bug: webrtc:4690, webrtc:8591
Change-Id: I789d5296bf5efb7299a5ee05a4f3ce6abf9124b2
Reviewed-on: https://webrtc-review.googlesource.com/26681
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21301}
2017-12-15 16:42:15 +01:00
|
|
|
"../voice_engine:audio_level",
|
|
|
|
|
"utility:audio_frame_operations",
|
2015-09-25 13:58:30 +02:00
|
|
|
]
|
|
|
|
|
}
|
2016-06-14 12:52:54 +02:00
|
|
|
if (rtc_include_tests) {
|
2017-09-14 14:46:47 +02:00
|
|
|
rtc_source_set("audio_end_to_end_test") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"test/audio_end_to_end_test.cc",
|
|
|
|
|
"test/audio_end_to_end_test.h",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
|
|
|
|
":audio",
|
|
|
|
|
"../system_wrappers:system_wrappers",
|
|
|
|
|
"../test:fake_audio_device",
|
|
|
|
|
"../test:test_common",
|
|
|
|
|
"../test:test_support",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
|
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
|
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-02 04:10:34 -07:00
|
|
|
rtc_source_set("audio_tests") {
|
2016-06-14 12:52:54 +02:00
|
|
|
testonly = true
|
2016-12-07 08:23:27 -08:00
|
|
|
|
2016-06-14 12:52:54 +02:00
|
|
|
sources = [
|
|
|
|
|
"audio_receive_stream_unittest.cc",
|
2017-09-15 09:56:08 -07:00
|
|
|
"audio_send_stream_tests.cc",
|
2016-06-14 12:52:54 +02:00
|
|
|
"audio_send_stream_unittest.cc",
|
|
|
|
|
"audio_state_unittest.cc",
|
2017-07-19 00:39:19 -07:00
|
|
|
"time_interval_unittest.cc",
|
2016-06-14 12:52:54 +02:00
|
|
|
]
|
|
|
|
|
deps = [
|
|
|
|
|
":audio",
|
2017-09-14 14:46:47 +02:00
|
|
|
":audio_end_to_end_test",
|
2016-11-22 06:42:53 -08:00
|
|
|
"../api:mock_audio_mixer",
|
Remove voe::TransmitMixer
TransmitMixer's functionality is moved into the AudioTransportProxy
owned by AudioState. This removes the need for an AudioTransport
implementation in VoEBaseImpl, which means that the proxy is no longer
a proxy, hence AudioTransportProxy is renamed to AudioTransportImpl.
In the short term, AudioState needs to know which AudioDeviceModule is
used, so it is added in AudioState::Config. AudioTransportImpl needs
to know which AudioSendStream:s are currently enabled to send, so
AudioState maintains a map of them, which is reduced into a simple
vector for AudioTransportImpl.
To encode and transmit audio,
AudioSendStream::OnAudioData(std::unique_ptr<AudioFrame> audio_frame)
is introduced, which is used in both the Chromium and standalone use
cases. This removes the need for two different instances of
voe::Channel::ProcessAndEncodeAudio(), so there is now only one,
taking an AudioFrame as argument. Callers need to allocate their own
AudioFrame:s, which is wasteful but not a regression since this was
already happening in the voe::Channel functions.
Most of the logic changed resides in
AudioTransportImpl::RecordedDataIsAvailable(), where two strange
things were found:
1. The clock drift parameter was ineffective since
apm->echo_cancellation()->enable_drift_compensation(false) is
called during initialization.
2. The output parameter 'new_mic_volume' was never set - instead it
was returned as a result, causing the ADM to never update the
analog mic gain
(https://cs.chromium.org/chromium/src/third_party/webrtc/voice_engine/voe_base_impl.cc?q=voe_base_impl.cc&dr&l=100).
Besides this, tests are updated, and some dead code is removed which
was found in the process.
Bug: webrtc:4690, webrtc:8591
Change-Id: I789d5296bf5efb7299a5ee05a4f3ce6abf9124b2
Reviewed-on: https://webrtc-review.googlesource.com/26681
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21301}
2017-12-15 16:42:15 +01:00
|
|
|
"../call:mock_call_interfaces",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../call:mock_rtp_interfaces",
|
|
|
|
|
"../call:rtp_interfaces",
|
2017-06-21 01:05:22 -07:00
|
|
|
"../call:rtp_receiver",
|
2018-01-03 09:08:20 +01:00
|
|
|
"../logging:mocks",
|
2016-11-17 06:28:59 -08:00
|
|
|
"../modules/audio_device:mock_audio_device",
|
2016-11-22 06:42:53 -08:00
|
|
|
"../modules/audio_mixer:audio_mixer_impl",
|
2017-11-24 17:29:59 +01:00
|
|
|
"../modules/audio_processing:audio_processing_statistics",
|
2017-12-19 16:44:45 +01:00
|
|
|
"../modules/audio_processing:mocks",
|
2018-01-02 14:20:17 +01:00
|
|
|
"../modules/bitrate_controller:mocks",
|
2016-12-07 08:23:27 -08:00
|
|
|
"../modules/congestion_controller:congestion_controller",
|
2017-05-08 11:52:38 -07:00
|
|
|
"../modules/congestion_controller:mock_congestion_controller",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../modules/pacing:mock_paced_sender",
|
2016-12-07 08:23:27 -08:00
|
|
|
"../modules/pacing:pacing",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../modules/rtp_rtcp:mock_rtp_rtcp",
|
|
|
|
|
"../modules/rtp_rtcp:rtp_rtcp_format",
|
2017-07-19 10:40:47 -07:00
|
|
|
"../rtc_base:rtc_base_approved",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../rtc_base:rtc_base_tests_utils",
|
2017-07-19 10:40:47 -07:00
|
|
|
"../rtc_base:rtc_task_queue",
|
2017-12-13 16:05:42 +01:00
|
|
|
"../rtc_base:safe_compare",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../system_wrappers:system_wrappers",
|
|
|
|
|
"../test:audio_codec_mocks",
|
|
|
|
|
"../test:rtp_test_utils",
|
2016-11-17 06:48:48 -08:00
|
|
|
"../test:test_common",
|
2016-12-05 01:46:09 -08:00
|
|
|
"../test:test_support",
|
2017-11-13 17:04:05 +01:00
|
|
|
"../voice_engine",
|
2017-01-05 06:03:24 -08:00
|
|
|
"utility:utility_tests",
|
2016-06-14 12:52:54 +02:00
|
|
|
"//testing/gmock",
|
|
|
|
|
"//testing/gtest",
|
|
|
|
|
]
|
2017-03-20 02:06:18 -07:00
|
|
|
|
2017-09-14 14:46:47 +02:00
|
|
|
if (!rtc_use_memcheck) {
|
|
|
|
|
# This test is timing dependent, which rules out running on memcheck bots.
|
|
|
|
|
sources += [ "test/audio_stats_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-16 23:56:12 -07:00
|
|
|
if (!build_with_chromium && is_clang) {
|
|
|
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
2016-09-02 04:10:34 -07:00
|
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
2016-06-14 12:52:54 +02:00
|
|
|
}
|
|
|
|
|
}
|
2017-03-06 04:01:16 -08:00
|
|
|
|
|
|
|
|
if (rtc_enable_protobuf) {
|
2017-03-30 04:01:30 -07:00
|
|
|
rtc_test("low_bandwidth_audio_test") {
|
2017-03-06 04:01:16 -08:00
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"test/low_bandwidth_audio_test.cc",
|
|
|
|
|
]
|
|
|
|
|
|
2017-03-23 03:40:03 -07:00
|
|
|
deps = [
|
2017-09-14 14:46:47 +02:00
|
|
|
":audio_end_to_end_test",
|
2017-03-23 03:40:03 -07:00
|
|
|
"../common_audio",
|
2017-08-29 05:51:57 -07:00
|
|
|
"../rtc_base:rtc_base_approved",
|
2017-03-23 03:40:03 -07:00
|
|
|
"../system_wrappers",
|
|
|
|
|
"../test:fake_audio_device",
|
|
|
|
|
"../test:test_common",
|
|
|
|
|
"../test:test_main",
|
2017-07-17 01:41:41 -07:00
|
|
|
"//testing/gmock",
|
|
|
|
|
"//testing/gtest",
|
2017-03-23 03:40:03 -07:00
|
|
|
]
|
2017-03-06 04:01:16 -08:00
|
|
|
if (is_android) {
|
2017-03-23 03:40:03 -07:00
|
|
|
deps += [ "//testing/android/native_test:native_test_native_code" ]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data = [
|
2017-09-28 16:14:37 +02:00
|
|
|
"../resources/voice_engine/audio_dtx16.wav",
|
2017-09-15 06:47:31 +02:00
|
|
|
"../resources/voice_engine/audio_tiny16.wav",
|
|
|
|
|
"../resources/voice_engine/audio_tiny48.wav",
|
2017-09-28 16:14:37 +02:00
|
|
|
"test/low_bandwidth_audio_test.py",
|
2017-03-23 03:40:03 -07:00
|
|
|
]
|
2018-01-15 17:37:04 +01:00
|
|
|
if (is_linux || is_android) {
|
2017-09-28 16:14:37 +02:00
|
|
|
data += [
|
|
|
|
|
"../tools_webrtc/audio_quality/linux/PolqaOem64",
|
|
|
|
|
"../tools_webrtc/audio_quality/linux/pesq",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
if (is_win) {
|
|
|
|
|
data += [
|
|
|
|
|
"../tools_webrtc/audio_quality/win/PolqaOem64.dll",
|
|
|
|
|
"../tools_webrtc/audio_quality/win/PolqaOem64.exe",
|
|
|
|
|
"../tools_webrtc/audio_quality/win/pesq.exe",
|
|
|
|
|
"../tools_webrtc/audio_quality/win/vcomp120.dll",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
if (is_mac) {
|
|
|
|
|
data += [ "../tools_webrtc/audio_quality/mac/pesq" ]
|
|
|
|
|
}
|
2017-03-23 03:40:03 -07:00
|
|
|
|
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
|
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163)
|
|
|
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
2017-03-06 04:01:16 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-07-17 01:41:41 -07:00
|
|
|
|
|
|
|
|
rtc_source_set("audio_perf_tests") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"test/audio_bwe_integration_test.cc",
|
|
|
|
|
"test/audio_bwe_integration_test.h",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
|
|
|
|
"../common_audio",
|
2017-07-19 10:40:47 -07:00
|
|
|
"../rtc_base:rtc_base_approved",
|
2017-07-17 01:41:41 -07:00
|
|
|
"../system_wrappers",
|
|
|
|
|
"../test:fake_audio_device",
|
|
|
|
|
"../test:field_trial",
|
2017-08-22 04:02:52 -07:00
|
|
|
"../test:single_threaded_task_queue",
|
2017-07-17 01:41:41 -07:00
|
|
|
"../test:test_common",
|
|
|
|
|
"../test:test_main",
|
|
|
|
|
"//testing/gmock",
|
|
|
|
|
"//testing/gtest",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
data = [
|
|
|
|
|
"//resources/voice_engine/audio_dtx16.wav",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
|
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
|
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-06-14 12:52:54 +02:00
|
|
|
}
|