webrtc_m130/api/BUILD.gn
Ivo Creusen 56d460902e Use the new AudioProcessing statistics everywhere.
The new interface uses optionals instead of default values, and only values that are actually used are included. To make it easy to add/remove stats in the future, the struct itself is copied around on all layers, instead of copying the values one by one. This CL also fixes a bug which caused several APM statistics to get stuck at a fixed level when there are no more receive streams (after some period where there were receive streams). Since APM doesn't know this happens, an argument was added to the GetStats call to pass this information down to APM.

Bug: webrtc:8563, b/67926135
Change-Id: I96cc008353355bb520c4523f5c5379860f73ee24
Reviewed-on: https://webrtc-review.googlesource.com/25621
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20877}
2017-11-24 18:17:39 +00:00

395 lines
9.5 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("../webrtc.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
group("api") {
public_deps = [
":libjingle_peerconnection_api",
]
}
rtc_source_set("call_api") {
sources = [
"call/audio_sink.h",
]
deps = [
# TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
":audio_mixer_api",
":transport_api",
"..:webrtc_common",
"../rtc_base:rtc_base_approved",
"audio_codecs:audio_codecs_api",
]
}
rtc_static_library("libjingle_peerconnection_api") {
cflags = []
sources = [
"candidate.cc",
"candidate.h",
"cryptoparams.h",
"datachannelinterface.h",
"dtmfsenderinterface.h",
"jsep.h",
"jsepicecandidate.h",
"jsepsessiondescription.h",
"mediaconstraintsinterface.cc",
"mediaconstraintsinterface.h",
"mediastreaminterface.cc",
"mediastreamproxy.h",
"mediastreamtrackproxy.h",
"mediatypes.cc",
"mediatypes.h",
"notifier.h",
"peerconnectionfactoryproxy.h",
"peerconnectionproxy.h",
"proxy.cc",
"proxy.h",
"rtcerror.cc",
"rtcerror.h",
"rtpparameters.cc",
"rtpparameters.h",
"rtpreceiverinterface.h",
"rtpsenderinterface.h",
"rtptransceiverinterface.h",
"setremotedescriptionobserverinterface.h",
"statstypes.cc",
"statstypes.h",
"turncustomizer.h",
"umametrics.cc",
"umametrics.h",
"videosourceproxy.h",
]
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" ]
}
public_deps = [
":libjingle_api_deprecated_headers",
":mediastream_interface_and_implicit_video_frame_api",
":peerconnection_and_implicit_call_api",
]
deps = [
":optional",
":rtc_stats_api",
"audio_codecs:audio_codecs_api",
# Basically, don't add stuff here. You might break sensitive downstream
# targets like pnacl. API should not depend on anything outside of this
# file, really. All these should arguably go away in time.
"..:webrtc_common",
"../rtc_base:rtc_base",
"../rtc_base:rtc_base_approved",
]
# This is needed until bugs.webrtc.org/7504 is removed so this target can
# properly depend on ../media:rtc_media_base
# TODO(kjellander): Remove this dependency.
if (is_nacl) {
deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
}
}
rtc_source_set("peerconnection_and_implicit_call_api") {
# The peerconnectioninterface.h file pulls in call/callfactoryinterface.h
# and the entire call module with it. We need to either get rid of this
# dependency or pull most of call/ into the API. For now, silence the warnings
# this creates since it creates a circular dependency (call very much depends
# on API). See bugs.webrtc.org/7504.
check_includes = false
sources = [
"peerconnectioninterface.h",
]
}
rtc_source_set("mediastream_interface_and_implicit_video_frame_api") {
# The mediastreaminterface.h file pulls in in video_frame.h, but the
# system_wrappers dependency that comes with that breaks pnacl downstream.
# TODO(phoglund): solve this (see bugs.webrtc.org/7504).
check_includes = false
sources = [
"mediastreaminterface.h",
]
deps = [
"../modules/audio_processing:audio_processing_statistics",
]
}
rtc_source_set("libjingle_api_deprecated_headers") {
# We need to include headers from undeclared targets here, since they cause
# circular dependencies. These deprecated headers are going away anyway.
# See http://bugs.webrtc.org/5883.
check_includes = false
sources = [
"datachannel.h",
"mediastream.h",
"mediastreamtrack.h",
"rtpsender.h",
"streamcollection.h",
"videotracksource.h",
"webrtcsdp.h",
]
}
rtc_source_set("libjingle_logging_api") {
sources = [
"rtceventlogoutput.h",
]
}
rtc_source_set("ortc_api") {
sources = [
"ortc/mediadescription.cc",
"ortc/mediadescription.h",
"ortc/ortcfactoryinterface.h",
"ortc/ortcrtpreceiverinterface.h",
"ortc/ortcrtpsenderinterface.h",
"ortc/packettransportinterface.h",
"ortc/rtptransportcontrollerinterface.h",
"ortc/rtptransportinterface.h",
"ortc/sessiondescription.cc",
"ortc/sessiondescription.h",
"ortc/srtptransportinterface.h",
"ortc/udptransportinterface.h",
]
# For mediastreaminterface.h, etc.
# TODO(deadbeef): Create a separate target for the common things ORTC and
# PeerConnection code shares, so that ortc_api can depend on that instead of
# libjingle_peerconnection_api.
deps = [
":libjingle_peerconnection_api",
":optional",
"..:webrtc_common",
"../rtc_base:rtc_base",
]
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(ossu): Remove once downstream projects have updated.
rtc_source_set("libjingle_peerconnection") {
public_deps = [
"../pc:libjingle_peerconnection",
]
}
rtc_source_set("rtc_stats_api") {
cflags = []
sources = [
"stats/rtcstats.h",
"stats/rtcstats_objects.h",
"stats/rtcstatscollectorcallback.h",
"stats/rtcstatsreport.h",
]
deps = [
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("audio_mixer_api") {
sources = [
"audio/audio_mixer.h",
]
deps = [
"../modules:module_api",
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("transport_api") {
sources = [
"call/transport.h",
]
}
rtc_source_set("video_frame_api") {
sources = [
# TODO(phoglund): move i420 files to video_frame_api_i420 after updating
# downstream. See bugs.webrtc.org/7504.
"video/i420_buffer.cc",
"video/i420_buffer.h",
"video/video_content_type.cc",
"video/video_content_type.h",
"video/video_frame.cc",
"video/video_frame.h",
"video/video_frame_buffer.cc",
"video/video_frame_buffer.h",
"video/video_rotation.h",
"video/video_timing.cc",
"video/video_timing.h",
]
deps = [
"../rtc_base:rtc_base_approved",
"../system_wrappers",
]
# TODO(nisse): This logic is duplicated in multiple places.
# Define in a single place.
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_source_set("video_frame_api_i420") {
sources = [
"video/i420_buffer.h",
]
deps = [
":video_frame_api",
"../rtc_base:rtc_base_approved",
"../system_wrappers",
]
}
rtc_source_set("array_view") {
sources = [
"array_view.h",
]
deps = [
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("optional") {
sources = [
"optional.cc",
"optional.h",
]
deps = [
":array_view",
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("refcountedbase") {
sources = [
"refcountedbase.h",
]
deps = [
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("libjingle_peerconnection_test_api") {
testonly = true
sources = [
"test/fakeconstraints.h",
]
public_deps = [
":libjingle_peerconnection_api",
]
deps = [
"../rtc_base:rtc_base_approved",
]
}
if (rtc_include_tests) {
rtc_source_set("mock_audio_mixer") {
testonly = true
sources = [
"test/mock_audio_mixer.h",
]
public_deps = [
":audio_mixer_api",
]
deps = [
"../test:test_support",
"//testing/gmock",
]
}
rtc_source_set("mock_video_codec_factory") {
testonly = true
sources = [
"test/mock_video_decoder_factory.h",
"test/mock_video_encoder_factory.h",
]
public_deps = [
"../api/video_codecs:video_codecs_api",
]
deps = [
"../test:test_support",
"//testing/gmock",
]
}
rtc_source_set("fakemetricsobserver") {
testonly = true
sources = [
"fakemetricsobserver.cc",
"fakemetricsobserver.h",
]
deps = [
":libjingle_peerconnection_api",
"../api:peerconnection_and_implicit_call_api",
"../media:rtc_media_base",
"../rtc_base:rtc_base_approved",
]
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" ]
}
}
rtc_source_set("rtc_api_unittests") {
testonly = true
sources = [
"array_view_unittest.cc",
"optional_unittest.cc",
"ortc/mediadescription_unittest.cc",
"ortc/sessiondescription_unittest.cc",
"rtcerror_unittest.cc",
"rtpparameters_unittest.cc",
]
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 = [
":array_view",
":libjingle_peerconnection_api",
":libjingle_peerconnection_test_api",
":optional",
":ortc_api",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
"../test:test_support",
]
}
}