The audio_device_module field was currently unused. The audio_mixer field is going to be used to pass an AudioMixer to AudioState. In the hopefully-not-very-far future, the toplevel WebRTC API will allow passing a custom AudioMixer, e.g. for spatialized audio (audio in space). If no mixer is passed, a default mixer is created (the one in modules/audio_mixer). The only object which will have a permanent reference to the mixer is AudioState. AudioState is created in WebRTCVoiceEngine with a configuration object, which already contains a VoiceEngine pointer. In this CL, we extend this config object with a mixer pointer. In summary: in an upcoming CL, a mixer will be either created in or passed to WebRTCVoiceEngine. This mixer will be passed to the ctor of AudioState in a config struct. BUG=webrtc:6346 NOTRY=True Review-Url: https://codereview.webrtc.org/2456363002 Cr-Commit-Position: refs/heads/master@{#14973}
503 lines
16 KiB
Plaintext
503 lines
16 KiB
Plaintext
# 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.
|
|
|
|
import("../build/webrtc.gni")
|
|
if (is_android) {
|
|
import("//build/config/android/config.gni")
|
|
import("//build/config/android/rules.gni")
|
|
}
|
|
|
|
group("api") {
|
|
public_deps = [
|
|
":libjingle_peerconnection",
|
|
]
|
|
if (is_android && !build_with_chromium) {
|
|
public_deps += [
|
|
":libjingle_peerconnection_java",
|
|
":libjingle_peerconnection_so",
|
|
]
|
|
}
|
|
}
|
|
|
|
rtc_source_set("call_api") {
|
|
sources = [
|
|
"call/audio_receive_stream.h",
|
|
"call/audio_send_stream.cc",
|
|
"call/audio_send_stream.h",
|
|
"call/audio_sink.h",
|
|
"call/audio_state.h",
|
|
"call/flexfec_receive_stream.h",
|
|
]
|
|
|
|
deps = [
|
|
# TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
|
|
":audio_mixer_api",
|
|
"..:webrtc_common",
|
|
"../base:rtc_base_approved",
|
|
"../modules/audio_coding:audio_encoder_interface",
|
|
]
|
|
}
|
|
|
|
config("libjingle_peerconnection_warnings_config") {
|
|
# GN orders flags on a target before flags from configs. The default config
|
|
# adds these flags so to cancel them out they need to come from a config and
|
|
# cannot be on the target directly.
|
|
if (!is_win && !is_clang) {
|
|
cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
|
|
}
|
|
}
|
|
|
|
rtc_static_library("libjingle_peerconnection") {
|
|
cflags = []
|
|
sources = [
|
|
"audiotrack.cc",
|
|
"audiotrack.h",
|
|
"datachannel.cc",
|
|
"datachannel.h",
|
|
"datachannelinterface.h",
|
|
"dtmfsender.cc",
|
|
"dtmfsender.h",
|
|
"dtmfsenderinterface.h",
|
|
"jsep.h",
|
|
"jsepicecandidate.cc",
|
|
"jsepicecandidate.h",
|
|
"jsepsessiondescription.cc",
|
|
"jsepsessiondescription.h",
|
|
"localaudiosource.cc",
|
|
"localaudiosource.h",
|
|
"mediaconstraintsinterface.cc",
|
|
"mediaconstraintsinterface.h",
|
|
"mediacontroller.cc",
|
|
"mediacontroller.h",
|
|
"mediastream.cc",
|
|
"mediastream.h",
|
|
"mediastreaminterface.h",
|
|
"mediastreamobserver.cc",
|
|
"mediastreamobserver.h",
|
|
"mediastreamproxy.h",
|
|
"mediastreamtrack.h",
|
|
"mediastreamtrackproxy.h",
|
|
"notifier.h",
|
|
"peerconnection.cc",
|
|
"peerconnection.h",
|
|
"peerconnectionfactory.cc",
|
|
"peerconnectionfactory.h",
|
|
"peerconnectionfactoryproxy.h",
|
|
"peerconnectioninterface.h",
|
|
"peerconnectionproxy.h",
|
|
"proxy.h",
|
|
"remoteaudiosource.cc",
|
|
"remoteaudiosource.h",
|
|
"rtcstatscollector.cc",
|
|
"rtcstatscollector.h",
|
|
"rtpparameters.h",
|
|
"rtpreceiver.cc",
|
|
"rtpreceiver.h",
|
|
"rtpreceiverinterface.h",
|
|
"rtpsender.cc",
|
|
"rtpsender.h",
|
|
"rtpsenderinterface.h",
|
|
"sctputils.cc",
|
|
"sctputils.h",
|
|
"statscollector.cc",
|
|
"statscollector.h",
|
|
"statstypes.cc",
|
|
"statstypes.h",
|
|
"streamcollection.h",
|
|
"videocapturertracksource.cc",
|
|
"videocapturertracksource.h",
|
|
"videosourceproxy.h",
|
|
"videotrack.cc",
|
|
"videotrack.h",
|
|
"videotracksource.cc",
|
|
"videotracksource.h",
|
|
"webrtcsdp.cc",
|
|
"webrtcsdp.h",
|
|
"webrtcsession.cc",
|
|
"webrtcsession.h",
|
|
"webrtcsessiondescriptionfactory.cc",
|
|
"webrtcsessiondescriptionfactory.h",
|
|
]
|
|
|
|
configs += [ ":libjingle_peerconnection_warnings_config" ]
|
|
|
|
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" ]
|
|
}
|
|
|
|
deps = [
|
|
":call_api",
|
|
":rtc_stats_api",
|
|
"../call",
|
|
"../media",
|
|
"../pc",
|
|
"../stats",
|
|
]
|
|
|
|
if (rtc_use_quic) {
|
|
sources += [
|
|
"quicdatachannel.cc",
|
|
"quicdatachannel.h",
|
|
"quicdatatransport.cc",
|
|
"quicdatatransport.h",
|
|
]
|
|
deps += [ "//third_party/libquic" ]
|
|
public_deps = [
|
|
"//third_party/libquic",
|
|
]
|
|
}
|
|
}
|
|
|
|
# Exclude the targets below from the Chromium build since they cannot be built
|
|
# due to incompability with Chromium's logging implementation.
|
|
if (is_android && !build_with_chromium) {
|
|
config("libjingle_peerconnection_jni_warnings_config") {
|
|
# The warnings below are enabled by default. Since GN orders compiler flags
|
|
# for a target before flags from configs, the only way to disable such
|
|
# warnings is by having them in a separate config, loaded from the target.
|
|
if (!is_win) {
|
|
cflags = [
|
|
"-Wno-sign-compare",
|
|
"-Wno-unused-variable",
|
|
]
|
|
}
|
|
}
|
|
|
|
rtc_static_library("libjingle_peerconnection_jni") {
|
|
sources = [
|
|
"android/jni/androidmediacodeccommon.h",
|
|
"android/jni/androidmediadecoder_jni.cc",
|
|
"android/jni/androidmediadecoder_jni.h",
|
|
"android/jni/androidmediaencoder_jni.cc",
|
|
"android/jni/androidmediaencoder_jni.h",
|
|
"android/jni/androidmetrics_jni.cc",
|
|
"android/jni/androidnetworkmonitor_jni.cc",
|
|
"android/jni/androidnetworkmonitor_jni.h",
|
|
"android/jni/androidvideotracksource_jni.cc",
|
|
"android/jni/classreferenceholder.cc",
|
|
"android/jni/classreferenceholder.h",
|
|
"android/jni/jni_helpers.cc",
|
|
"android/jni/jni_helpers.h",
|
|
"android/jni/native_handle_impl.cc",
|
|
"android/jni/native_handle_impl.h",
|
|
"android/jni/peerconnection_jni.cc",
|
|
"android/jni/surfacetexturehelper_jni.cc",
|
|
"android/jni/surfacetexturehelper_jni.h",
|
|
"androidvideotracksource.cc",
|
|
"androidvideotracksource.h",
|
|
]
|
|
|
|
configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [
|
|
"//build/config/clang:extra_warnings",
|
|
"//build/config/clang:find_bad_constructs",
|
|
]
|
|
}
|
|
|
|
# TODO(jschuh): Bug 1348: fix this warning.
|
|
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
|
|
|
|
if (is_win) {
|
|
cflags += [
|
|
"/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
|
|
"/wd4389", # signed/unsigned mismatch.
|
|
]
|
|
}
|
|
|
|
deps = [
|
|
":libjingle_peerconnection",
|
|
"../system_wrappers:field_trial_default",
|
|
"../system_wrappers:metrics_default",
|
|
]
|
|
|
|
if (rtc_build_libyuv) {
|
|
deps += [ "$rtc_libyuv_dir" ]
|
|
public_deps = [
|
|
"$rtc_libyuv_dir",
|
|
]
|
|
} else {
|
|
# Need to add a directory normally exported by libyuv.
|
|
include_dirs = [ "$rtc_libyuv_dir/include" ]
|
|
}
|
|
}
|
|
|
|
rtc_shared_library("libjingle_peerconnection_so") {
|
|
sources = [
|
|
"android/jni/jni_onload.cc",
|
|
]
|
|
|
|
suppressed_configs += [ "//build/config/android:hide_native_jni_exports" ]
|
|
|
|
deps = [
|
|
":libjingle_peerconnection",
|
|
":libjingle_peerconnection_jni",
|
|
]
|
|
output_extension = "so"
|
|
}
|
|
}
|
|
|
|
# Classes that don't require jni can be used in Chromium.
|
|
if (is_android) {
|
|
android_library("libjingle_peerconnection_java") {
|
|
java_files = [
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
|
|
"../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
|
|
"android/java/src/org/webrtc/AudioSource.java",
|
|
"android/java/src/org/webrtc/AudioTrack.java",
|
|
"android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
|
|
"android/java/src/org/webrtc/Camera1Capturer.java",
|
|
"android/java/src/org/webrtc/Camera1Enumerator.java",
|
|
"android/java/src/org/webrtc/Camera1Session.java",
|
|
"android/java/src/org/webrtc/Camera2Capturer.java",
|
|
"android/java/src/org/webrtc/Camera2Enumerator.java",
|
|
"android/java/src/org/webrtc/Camera2Session.java",
|
|
"android/java/src/org/webrtc/CameraCapturer.java",
|
|
"android/java/src/org/webrtc/CameraEnumerationAndroid.java",
|
|
"android/java/src/org/webrtc/CameraEnumerator.java",
|
|
"android/java/src/org/webrtc/CameraSession.java",
|
|
"android/java/src/org/webrtc/CameraVideoCapturer.java",
|
|
"android/java/src/org/webrtc/DataChannel.java",
|
|
"android/java/src/org/webrtc/EglBase.java",
|
|
"android/java/src/org/webrtc/EglBase10.java",
|
|
"android/java/src/org/webrtc/EglBase14.java",
|
|
"android/java/src/org/webrtc/EglRenderer.java",
|
|
"android/java/src/org/webrtc/FileVideoCapturer.java",
|
|
"android/java/src/org/webrtc/GlRectDrawer.java",
|
|
"android/java/src/org/webrtc/GlShader.java",
|
|
"android/java/src/org/webrtc/GlTextureFrameBuffer.java",
|
|
"android/java/src/org/webrtc/GlUtil.java",
|
|
"android/java/src/org/webrtc/IceCandidate.java",
|
|
"android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
|
|
"android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
|
|
"android/java/src/org/webrtc/MediaConstraints.java",
|
|
"android/java/src/org/webrtc/MediaSource.java",
|
|
"android/java/src/org/webrtc/MediaStream.java",
|
|
"android/java/src/org/webrtc/MediaStreamTrack.java",
|
|
"android/java/src/org/webrtc/Metrics.java",
|
|
"android/java/src/org/webrtc/NetworkMonitor.java",
|
|
"android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
|
|
"android/java/src/org/webrtc/PeerConnection.java",
|
|
"android/java/src/org/webrtc/PeerConnectionFactory.java",
|
|
"android/java/src/org/webrtc/RendererCommon.java",
|
|
"android/java/src/org/webrtc/RtpParameters.java",
|
|
"android/java/src/org/webrtc/RtpReceiver.java",
|
|
"android/java/src/org/webrtc/RtpSender.java",
|
|
"android/java/src/org/webrtc/ScreenCapturerAndroid.java",
|
|
"android/java/src/org/webrtc/SdpObserver.java",
|
|
"android/java/src/org/webrtc/SessionDescription.java",
|
|
"android/java/src/org/webrtc/StatsObserver.java",
|
|
"android/java/src/org/webrtc/StatsReport.java",
|
|
"android/java/src/org/webrtc/SurfaceTextureHelper.java",
|
|
"android/java/src/org/webrtc/SurfaceViewRenderer.java",
|
|
"android/java/src/org/webrtc/VideoCapturer.java",
|
|
"android/java/src/org/webrtc/VideoCapturerAndroid.java",
|
|
"android/java/src/org/webrtc/VideoFileRenderer.java",
|
|
"android/java/src/org/webrtc/VideoRenderer.java",
|
|
"android/java/src/org/webrtc/VideoRendererGui.java",
|
|
"android/java/src/org/webrtc/VideoSource.java",
|
|
"android/java/src/org/webrtc/VideoTrack.java",
|
|
"android/java/src/org/webrtc/YuvConverter.java",
|
|
]
|
|
|
|
deps = [
|
|
"../base:base_java",
|
|
]
|
|
}
|
|
}
|
|
|
|
# GYP version: webrtc/api/api.gyp:rtc_stats_api
|
|
rtc_source_set("rtc_stats_api") {
|
|
cflags = []
|
|
sources = [
|
|
"stats/rtcstats.h",
|
|
"stats/rtcstats_objects.h",
|
|
"stats/rtcstatsreport.h",
|
|
]
|
|
|
|
deps = [
|
|
"../base:rtc_base_approved",
|
|
]
|
|
}
|
|
|
|
# GYP version: webrtc/api/api.gyp:audio_mixer_api
|
|
rtc_source_set("audio_mixer_api") {
|
|
sources = [
|
|
"audio/audio_mixer.h",
|
|
]
|
|
|
|
deps = [
|
|
"../base:rtc_base_approved",
|
|
]
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
config("peerconnection_unittests_config") {
|
|
# The warnings below are enabled by default. Since GN orders compiler flags
|
|
# for a target before flags from configs, the only way to disable such
|
|
# warnings is by having them in a separate config, loaded from the target.
|
|
# TODO(kjellander): Make the code compile without disabling these flags.
|
|
# See https://bugs.webrtc.org/3307.
|
|
if (is_clang && is_win) {
|
|
cflags = [
|
|
# See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
|
|
# for -Wno-sign-compare
|
|
"-Wno-sign-compare",
|
|
"-Wno-unused-function",
|
|
]
|
|
}
|
|
|
|
if (!is_win) {
|
|
cflags = [ "-Wno-sign-compare" ]
|
|
}
|
|
}
|
|
|
|
rtc_test("peerconnection_unittests") {
|
|
testonly = true
|
|
sources = [
|
|
"datachannel_unittest.cc",
|
|
"dtmfsender_unittest.cc",
|
|
"fakemetricsobserver.cc",
|
|
"fakemetricsobserver.h",
|
|
"jsepsessiondescription_unittest.cc",
|
|
"localaudiosource_unittest.cc",
|
|
"mediaconstraintsinterface_unittest.cc",
|
|
"mediastream_unittest.cc",
|
|
"peerconnection_unittest.cc",
|
|
"peerconnectionendtoend_unittest.cc",
|
|
"peerconnectionfactory_unittest.cc",
|
|
"peerconnectioninterface_unittest.cc",
|
|
"proxy_unittest.cc",
|
|
"rtcstatscollector_unittest.cc",
|
|
"rtpsenderreceiver_unittest.cc",
|
|
"sctputils_unittest.cc",
|
|
"statscollector_unittest.cc",
|
|
"test/fakeaudiocapturemodule.cc",
|
|
"test/fakeaudiocapturemodule.h",
|
|
"test/fakeaudiocapturemodule_unittest.cc",
|
|
"test/fakeconstraints.h",
|
|
"test/fakedatachannelprovider.h",
|
|
"test/fakeperiodicvideocapturer.h",
|
|
"test/fakertccertificategenerator.h",
|
|
"test/fakevideotrackrenderer.h",
|
|
"test/mock_datachannel.h",
|
|
"test/mock_peerconnection.h",
|
|
"test/mock_webrtcsession.h",
|
|
"test/mockpeerconnectionobservers.h",
|
|
"test/peerconnectiontestwrapper.cc",
|
|
"test/peerconnectiontestwrapper.h",
|
|
"test/testsdpstrings.h",
|
|
"videocapturertracksource_unittest.cc",
|
|
"videotrack_unittest.cc",
|
|
"webrtcsdp_unittest.cc",
|
|
"webrtcsession_unittest.cc",
|
|
]
|
|
|
|
defines = [ "HAVE_SCTP" ]
|
|
|
|
configs += [ ":peerconnection_unittests_config" ]
|
|
|
|
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" ]
|
|
}
|
|
|
|
# TODO(jschuh): Bug 1348: fix this warning.
|
|
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
|
|
|
|
if (is_win) {
|
|
cflags = [
|
|
"/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
|
|
"/wd4389", # signed/unsigned mismatch.
|
|
]
|
|
}
|
|
|
|
if (rtc_use_quic) {
|
|
public_deps = [
|
|
"//third_party/libquic",
|
|
]
|
|
sources += [
|
|
"quicdatachannel_unittest.cc",
|
|
"quicdatatransport_unittest.cc",
|
|
]
|
|
}
|
|
|
|
deps = []
|
|
if (is_android) {
|
|
sources += [
|
|
"test/androidtestinitializer.cc",
|
|
"test/androidtestinitializer.h",
|
|
]
|
|
deps += [
|
|
":libjingle_peerconnection_java",
|
|
":libjingle_peerconnection_jni",
|
|
"//testing/android/native_test:native_test_support",
|
|
]
|
|
}
|
|
|
|
deps += [
|
|
":libjingle_peerconnection",
|
|
"..:webrtc_common",
|
|
"../base:rtc_base_tests_utils",
|
|
"../media:rtc_unittest_main",
|
|
"../pc:rtc_pc",
|
|
"../system_wrappers:metrics_default",
|
|
"//testing/gmock",
|
|
]
|
|
|
|
if (is_android) {
|
|
deps += [ "//testing/android/native_test:native_test_support" ]
|
|
|
|
shard_timeout = 900
|
|
}
|
|
}
|
|
|
|
if (is_android) {
|
|
instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
|
|
apk_name = "libjingle_peerconnection_android_unittest"
|
|
android_manifest = "androidtests/AndroidManifest.xml"
|
|
|
|
java_files = [
|
|
"androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
|
|
"androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
|
|
"androidtests/src/org/webrtc/Camera2CapturerTest.java",
|
|
"androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
|
|
"androidtests/src/org/webrtc/EglRendererTest.java",
|
|
"androidtests/src/org/webrtc/GlRectDrawerTest.java",
|
|
"androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
|
|
"androidtests/src/org/webrtc/NetworkMonitorTest.java",
|
|
"androidtests/src/org/webrtc/PeerConnectionTest.java",
|
|
"androidtests/src/org/webrtc/RendererCommonTest.java",
|
|
"androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
|
|
"androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
|
|
]
|
|
|
|
deps = [
|
|
":libjingle_peerconnection_android_unittest_resources",
|
|
":libjingle_peerconnection_java",
|
|
"../base:base_java",
|
|
"//base:base_java",
|
|
]
|
|
|
|
shared_libraries = [ ":libjingle_peerconnection_so" ]
|
|
}
|
|
|
|
android_resources("libjingle_peerconnection_android_unittest_resources") {
|
|
resource_dirs = [ "androidtests/res" ]
|
|
custom_package = "org.webrtc"
|
|
}
|
|
}
|
|
}
|