zhihuang 38ede13042 Support building WebRTC without audio and video.
This CL makes the WebRTC more modular and allows the users to build
WebRTC without audio and video(DataChannel only).

The BUILD files in call/, logging/, media/ and pc/ are modified to
support modular WebRTC.

The dependencies on Call and RtcEventLog are removed from the
PeerConnection. Instead of being created internally, they would be
passed in by the PeerConnectionFactory.

Add the CreateModularPeerConnectionFactory function which allow the
users to create a PeerConnectionFactory with the modules they need.
If the users want to build WebRTC without audio and video, they can
pass in null pointers for modules they don't need. (MediaEngine,
VideoEncoderFactory etc.)

BUG=webrtc:7613

Review-Url: https://codereview.webrtc.org/2854123003
Cr-Commit-Position: refs/heads/master@{#18617}
2017-06-15 19:52:32 +00:00

195 lines
5.7 KiB
Plaintext

# Copyright (c) 2016 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")
import("//third_party/protobuf/proto_library.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
group("logging") {
public_deps = [
":rtc_event_log_impl",
]
if (rtc_enable_protobuf) {
public_deps += [ ":rtc_event_log_parser" ]
}
}
rtc_source_set("rtc_event_log_api") {
sources = [
"rtc_event_log/rtc_event_log.h",
"rtc_event_log/rtc_event_log_factory_interface.h",
]
deps = [
"..:video_stream_api",
"..:webrtc_common",
"../base:rtc_base_approved",
]
}
rtc_static_library("rtc_event_log_impl") {
sources = [
"rtc_event_log/rtc_event_log.cc",
"rtc_event_log/rtc_event_log_factory.cc",
"rtc_event_log/rtc_event_log_factory.h",
"rtc_event_log/rtc_event_log_helper_thread.cc",
"rtc_event_log/rtc_event_log_helper_thread.h",
]
defines = []
deps = [
":rtc_event_log_api",
"..:webrtc_common",
"../base:protobuf_utils",
"../base:rtc_base_approved",
"../modules/audio_coding:audio_network_adaptor",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp",
"../system_wrappers",
]
if (rtc_enable_protobuf) {
defines += [ "ENABLE_RTC_EVENT_LOG" ]
deps += [ ":rtc_event_log_proto" ]
}
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" ]
}
}
if (rtc_enable_protobuf) {
proto_library("rtc_event_log_proto") {
sources = [
"rtc_event_log/rtc_event_log.proto",
]
proto_out_dir = "webrtc/logging/rtc_event_log"
}
rtc_static_library("rtc_event_log_parser") {
sources = [
"rtc_event_log/rtc_event_log_parser.cc",
"rtc_event_log/rtc_event_log_parser.h",
]
public_deps = [
":rtc_event_log_api",
":rtc_event_log_proto",
"..:webrtc_common",
"../modules/audio_coding:audio_network_adaptor",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp:rtp_rtcp",
"../system_wrappers",
]
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 = [
"..:video_stream_api",
"../base:protobuf_utils",
"../base:rtc_base_approved",
]
}
if (rtc_include_tests) {
rtc_source_set("rtc_event_log_tests") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log_unittest.cc",
"rtc_event_log/rtc_event_log_unittest_helper.cc",
]
deps = [
":rtc_event_log_impl",
":rtc_event_log_parser",
"../base:rtc_base_approved",
"../base:rtc_base_tests_utils",
"../call",
"../modules/audio_coding:audio_network_adaptor",
"../modules/remote_bitrate_estimator:remote_bitrate_estimator",
"../modules/rtp_rtcp",
"../system_wrappers:metrics_default",
"../test:test_support",
"//testing/gmock",
"//testing/gtest",
]
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_test("rtc_event_log2rtp_dump") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2rtp_dump.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_impl",
":rtc_event_log_parser",
"../base:rtc_base_approved",
"../modules/rtp_rtcp:rtp_rtcp",
"../system_wrappers:field_trial_default",
"../system_wrappers:metrics_default",
"../test:rtp_test_utils",
"//third_party/gflags",
]
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" ]
}
}
}
if (rtc_include_tests) {
rtc_executable("rtc_event_log2text") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2text.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_impl",
":rtc_event_log_parser",
"../base:rtc_base_approved",
# TODO(kwiberg): Remove this dependency.
"../api/audio_codecs:audio_codecs_api",
"../modules/rtp_rtcp:rtp_rtcp",
"//third_party/gflags",
]
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" ]
}
}
}
if (rtc_include_tests) {
rtc_executable("rtc_event_log2stats") {
testonly = true
sources = [
"rtc_event_log/rtc_event_log2stats.cc",
]
deps = [
":rtc_event_log_api",
":rtc_event_log_impl",
":rtc_event_log_proto",
"../base:rtc_base_approved",
"//third_party/gflags",
]
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" ]
}
}
}
}