blob: 4801e89968021e89f7e28ded8668e8eb5b255b95 [file] [log] [blame]
kjellanderc76dc952016-06-03 03:09:32 -07001# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("//build/config/linux/pkg_config.gni")
mbonadei9aa3f0a2017-01-24 06:58:22 -080010import("../webrtc.gni")
kjellanderc76dc952016-06-03 03:09:32 -070011
12group("media") {
Dan Minor9c686132018-01-15 10:20:00 -050013 deps = []
14 if (!build_with_mozilla) {
15 deps += [
16 ":rtc_media",
17 ":rtc_media_base",
18 ]
19 }
kjellanderc76dc952016-06-03 03:09:32 -070020}
21
22config("rtc_media_defines_config") {
23 defines = [
24 "HAVE_WEBRTC_VIDEO",
25 "HAVE_WEBRTC_VOICE",
26 ]
27}
28
zhihuang130ca7e2017-06-21 01:02:59 -070029rtc_source_set("rtc_h264_profile_id") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000030 visibility = [ "*" ]
zhihuang130ca7e2017-06-21 01:02:59 -070031 sources = [
32 "base/h264_profile_level_id.cc",
33 "base/h264_profile_level_id.h",
34 ]
35
36 if (!build_with_chromium && is_clang) {
37 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
38 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
39 }
40
41 deps = [
42 "..:webrtc_common",
Fredrik Solenbergf693bfa2018-12-11 12:22:10 +010043 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -070044 "../rtc_base:rtc_base",
45 "../rtc_base:rtc_base_approved",
Mirko Bonadei276827c2018-10-16 14:13:50 +020046 "../rtc_base/system:rtc_export",
Danil Chapovalov00c71832018-06-15 15:58:38 +020047 "//third_party/abseil-cpp/absl/types:optional",
zhihuang130ca7e2017-06-21 01:02:59 -070048 ]
49}
50
Niels Möller6daa2782018-01-23 10:37:42 +010051rtc_source_set("rtc_media_config") {
52 visibility = [ "*" ]
53 sources = [
Steve Anton10542f22019-01-11 09:11:00 -080054 "base/media_config.h",
Steve Antonaec15aa2019-01-11 09:13:07 -080055 "base/mediaconfig.h",
Niels Möller6daa2782018-01-23 10:37:42 +010056 ]
57}
58
Emircan Uysaler98badbc2018-06-28 10:59:02 -070059rtc_source_set("rtc_vp9_profile") {
Emircan Uysalerf73d40f2018-12-04 11:00:52 -050060 visibility = [ "*" ]
Emircan Uysaler98badbc2018-06-28 10:59:02 -070061 sources = [
62 "base/vp9_profile.cc",
63 "base/vp9_profile.h",
64 ]
65
66 deps = [
67 "..:webrtc_common",
68 "../api/video_codecs:video_codecs_api",
69 "../rtc_base:rtc_base_approved",
70 "//third_party/abseil-cpp/absl/types:optional",
71 ]
72}
73
zhihuangab97e182017-06-22 01:28:59 -070074rtc_static_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000075 visibility = [ "*" ]
kjellanderc76dc952016-06-03 03:09:32 -070076 defines = []
77 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +010078 deps = [
Yves Gerey3e707812018-11-28 16:47:49 +010079 "../api:array_view",
Niels Möllera6fe2612018-01-19 11:28:54 +010080 "../api:audio_options_api",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010081 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 11:12:48 +010082 "../rtc_base:rtc_base_approved",
83 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010084 "../rtc_base:sanitizer",
Tommi1829af62018-02-06 09:29:17 +010085 "../rtc_base:sequenced_task_checker",
Patrik Höglund3e113432017-12-15 14:40:10 +010086 "../rtc_base:stringutils",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010087 ]
kjellanderc76dc952016-06-03 03:09:32 -070088 sources = [
Steve Anton10542f22019-01-11 09:11:00 -080089 "base/adapted_video_track_source.cc",
90 "base/adapted_video_track_source.h",
Steve Antonaec15aa2019-01-11 09:13:07 -080091 "base/adaptedvideotracksource.h",
Steve Anton10542f22019-01-11 09:11:00 -080092 "base/audio_source.h",
Steve Antonaec15aa2019-01-11 09:13:07 -080093 "base/audiosource.h",
kjellanderc76dc952016-06-03 03:09:32 -070094 "base/codec.cc",
95 "base/codec.h",
kjellanderc76dc952016-06-03 03:09:32 -070096 "base/device.h",
Steve Anton10542f22019-01-11 09:11:00 -080097 "base/media_channel.cc",
98 "base/media_channel.h",
99 "base/media_constants.cc",
100 "base/media_constants.h",
101 "base/media_engine.cc",
102 "base/media_engine.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800103 "base/mediachannel.h",
104 "base/mediaconstants.h",
105 "base/mediaengine.h",
Steve Anton10542f22019-01-11 09:11:00 -0800106 "base/rid_description.cc",
107 "base/rid_description.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800108 "base/riddescription.h",
Steve Anton10542f22019-01-11 09:11:00 -0800109 "base/rtp_data_engine.cc",
110 "base/rtp_data_engine.h",
111 "base/rtp_utils.cc",
112 "base/rtp_utils.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800113 "base/rtpdataengine.h",
114 "base/rtputils.h",
Steve Anton10542f22019-01-11 09:11:00 -0800115 "base/stream_params.cc",
116 "base/stream_params.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800117 "base/streamparams.h",
Steve Anton10542f22019-01-11 09:11:00 -0800118 "base/turn_utils.cc",
119 "base/turn_utils.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800120 "base/turnutils.h",
Steve Anton10542f22019-01-11 09:11:00 -0800121 "base/video_adapter.cc",
122 "base/video_adapter.h",
123 "base/video_broadcaster.cc",
124 "base/video_broadcaster.h",
125 "base/video_capturer.cc",
126 "base/video_capturer.h",
127 "base/video_common.cc",
128 "base/video_common.h",
129 "base/video_source_base.cc",
130 "base/video_source_base.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800131 "base/videoadapter.h",
132 "base/videobroadcaster.h",
133 "base/videocapturer.h",
134 "base/videocommon.h",
135 "base/videosourcebase.h",
magjed0928a3c2016-11-25 00:40:18 -0800136 ]
137
magjed0928a3c2016-11-25 00:40:18 -0800138 if (!build_with_chromium && is_clang) {
139 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
140 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
141 }
142
magjed0928a3c2016-11-25 00:40:18 -0800143 deps += [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100144 ":rtc_h264_profile_id",
Niels Möller6daa2782018-01-23 10:37:42 +0100145 ":rtc_media_config",
Emircan Uysaler98badbc2018-06-28 10:59:02 -0700146 ":rtc_vp9_profile",
magjed0928a3c2016-11-25 00:40:18 -0800147 "..:webrtc_common",
kjellandera2ef4f92017-03-06 06:04:55 -0800148 "../api:libjingle_peerconnection_api",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100149 "../api/audio_codecs:audio_codecs_api",
Åsa Persson23eba222018-10-02 14:47:06 +0200150 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200151 "../api/video:video_frame",
152 "../api/video:video_frame_i420",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100153 "../api/video_codecs:video_codecs_api",
154 "../call:call_interfaces",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100155 "../common_video",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100156 "../modules/audio_processing:audio_processing_statistics",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700157 "../rtc_base:rtc_base",
158 "../rtc_base:rtc_base_approved",
Mirko Bonadei3d255302018-10-11 10:50:45 +0200159 "../rtc_base/system:rtc_export",
Artem Titove41c4332018-07-25 15:04:28 +0200160 "../rtc_base/third_party/sigslot",
Niels Möller3c7d5992018-10-19 15:29:54 +0200161 "//third_party/abseil-cpp/absl/strings",
Danil Chapovalov00c71832018-06-15 15:58:38 +0200162 "//third_party/abseil-cpp/absl/types:optional",
magjed0928a3c2016-11-25 00:40:18 -0800163 ]
kjellander8a116632017-04-21 05:17:08 -0700164
Dan Minor9c686132018-01-15 10:20:00 -0500165 if (!build_with_mozilla) {
166 deps += [ "../p2p" ]
167 }
168
kjellander8a116632017-04-21 05:17:08 -0700169 if (is_nacl) {
170 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
171 }
magjed0928a3c2016-11-25 00:40:18 -0800172}
173
Anders Carlssona114c882018-01-04 15:10:22 +0100174rtc_static_library("rtc_constants") {
magjed0928a3c2016-11-25 00:40:18 -0800175 defines = []
176 libs = []
Anders Carlssona114c882018-01-04 15:10:22 +0100177 deps = []
magjed0928a3c2016-11-25 00:40:18 -0800178 sources = [
mallikarjun829deda482017-11-20 17:48:13 +0530179 "engine/constants.cc",
charujain66748462017-09-14 13:53:02 -0700180 "engine/constants.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100181 ]
182}
183
Jonathan Yu9a5da492018-10-19 00:51:18 -0700184rtc_static_library("rtc_simulcast_encoder_adapter") {
185 visibility = [ "*" ]
186 defines = []
187 libs = []
188 sources = [
189 "engine/simulcast_encoder_adapter.cc",
190 "engine/simulcast_encoder_adapter.h",
191 ]
192 deps = [
193 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 16:47:49 +0100194 "../api/video:video_frame",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700195 "../api/video:video_frame_i420",
196 "../api/video_codecs:video_codecs_api",
197 "../modules/video_coding:video_codec_interface",
198 "../modules/video_coding:video_coding_utility",
199 "../rtc_base:checks",
200 "../rtc_base:rtc_base_approved",
201 "../rtc_base:sequenced_task_checker",
202 "../system_wrappers",
203 "../system_wrappers:field_trial",
204 "//third_party/abseil-cpp/absl/types:optional",
205 "//third_party/libyuv",
206 ]
207 if (!build_with_chromium && is_clang) {
208 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
209 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
210 }
211}
212
Florent Castellie7862cc2018-12-06 13:38:24 +0100213rtc_static_library("rtc_encoder_simulcast_proxy") {
214 visibility = [ "*" ]
215 defines = []
216 libs = []
217 sources = [
218 "engine/encoder_simulcast_proxy.cc",
219 "engine/encoder_simulcast_proxy.h",
220 ]
221 deps = [
222 ":rtc_simulcast_encoder_adapter",
223 "../:webrtc_common",
224 "../api/video:video_bitrate_allocation",
225 "../api/video:video_frame",
226 "../api/video_codecs:video_codecs_api",
227 "../modules/video_coding:video_codec_interface",
228 ]
229 if (!build_with_chromium && is_clang) {
230 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
231 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
232 }
233}
234
Anders Carlssona114c882018-01-04 15:10:22 +0100235rtc_static_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32 +0000236 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 04:31:53 +0200237 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 15:10:22 +0100238 defines = []
239 libs = []
Patrik Höglund99175c62018-01-08 11:05:10 +0100240 deps = [
Florent Castellie7862cc2018-12-06 13:38:24 +0100241 ":rtc_encoder_simulcast_proxy",
Mirko Bonadei75baa492018-01-11 17:07:30 +0100242 ":rtc_h264_profile_id",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700243 ":rtc_simulcast_encoder_adapter",
Yves Gerey3e707812018-11-28 16:47:49 +0100244 "../:webrtc_common",
245 "../api/video:encoded_image",
246 "../api/video:video_frame",
Patrik Höglund99175c62018-01-08 11:05:10 +0100247 "../modules/video_coding:video_codec_interface",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200248 "//third_party/abseil-cpp/absl/memory",
Patrik Höglund99175c62018-01-08 11:05:10 +0100249 ]
Anders Carlssona114c882018-01-04 15:10:22 +0100250 sources = [
Emircan Uysaler7c03bdc2019-01-16 15:07:56 -0500251 "engine/fake_video_codec_factory.cc",
252 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 09:11:00 -0800253 "engine/internal_decoder_factory.cc",
254 "engine/internal_decoder_factory.h",
255 "engine/internal_encoder_factory.cc",
256 "engine/internal_encoder_factory.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800257 "engine/internaldecoderfactory.h",
258 "engine/internalencoderfactory.h",
Steve Anton10542f22019-01-11 09:11:00 -0800259 "engine/multiplex_codec_factory.cc",
260 "engine/multiplex_codec_factory.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800261 "engine/multiplexcodecfactory.h",
Jonathan Yu327b7532018-10-24 17:21:36 -0700262
263 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 13:38:24 +0100264 # targets depend on :rtc_encoder_simulcast_proxy directly.
265 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100266 ]
267
Anders Carlssona114c882018-01-04 15:10:22 +0100268 if (!build_with_chromium && is_clang) {
269 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
270 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
271 }
272
Anders Carlssona114c882018-01-04 15:10:22 +0100273 include_dirs = []
274
275 public_configs = []
276 deps += [
277 ":rtc_constants",
278 ":rtc_media_base",
Erik Språng7fd0a282018-05-22 15:37:23 +0200279 "../api/video:video_bitrate_allocation",
Niels Möller22b70ff2018-11-20 11:06:58 +0100280 "../api/video:video_frame",
Anders Carlssondd3e0ab2018-06-12 11:15:56 +0200281 "../api/video_codecs:rtc_software_fallback_wrappers",
Anders Carlssona114c882018-01-04 15:10:22 +0100282 "../api/video_codecs:video_codecs_api",
283 "../call:call_interfaces",
284 "../call:video_stream_api",
Emircan Uysaler7c03bdc2019-01-16 15:07:56 -0500285 "../modules:module_api",
Anders Carlssona114c882018-01-04 15:10:22 +0100286 "../modules/video_coding:webrtc_h264",
Emircan Uysalerd7ae3c32018-01-25 13:01:09 -0800287 "../modules/video_coding:webrtc_multiplex",
Anders Carlssona114c882018-01-04 15:10:22 +0100288 "../modules/video_coding:webrtc_vp8",
Anders Carlssona114c882018-01-04 15:10:22 +0100289 "../modules/video_coding:webrtc_vp9",
290 "../rtc_base:checks",
Anders Carlsson01092952018-12-11 15:44:54 +0100291 "../rtc_base:deprecation",
Anders Carlssona114c882018-01-04 15:10:22 +0100292 "../rtc_base:rtc_base_approved",
Mirko Bonadei276827c2018-10-16 14:13:50 +0200293 "../rtc_base/system:rtc_export",
Emircan Uysaler7c03bdc2019-01-16 15:07:56 -0500294 "../test:fake_video_codecs",
Niels Möller039743e2018-10-23 10:07:25 +0200295 "//third_party/abseil-cpp/absl/strings",
Anders Carlssona114c882018-01-04 15:10:22 +0100296 ]
297}
298
299rtc_static_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000300 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 14:23:23 +0100301 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 15:10:22 +0100302 defines = []
303 libs = []
304 deps = [
Yves Gerey3e707812018-11-28 16:47:49 +0100305 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 10:02:56 -0800306 "../api/video:video_bitrate_allocator_factory",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000307 "../modules/audio_processing:api",
Yves Gerey3e707812018-11-28 16:47:49 +0100308 "../modules/audio_processing:gain_control_interface",
Mirko Bonadeica913b02018-01-26 15:11:40 +0100309 "../modules/audio_processing/aec_dump:aec_dump",
Patrik Höglunda97af1f2018-01-16 10:11:40 +0100310 "../modules/video_coding:video_codec_interface",
Patrik Höglund99175c62018-01-08 11:05:10 +0100311 "../modules/video_coding:video_coding",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200312 "../modules/video_coding:video_coding_utility",
Jonas Olssonabbe8412018-04-03 13:40:05 +0200313 "../rtc_base:audio_format_to_string",
Anders Carlssona114c882018-01-04 15:10:22 +0100314 "../rtc_base:checks",
Mirko Bonadei276827c2018-10-16 14:13:50 +0200315 "../rtc_base/system:rtc_export",
Artem Titova76af0c2018-07-23 17:38:12 +0200316 "../rtc_base/third_party/base64",
Mirko Bonadei17f48782018-09-28 08:51:10 +0200317 "../system_wrappers:field_trial",
318 "../system_wrappers:metrics",
Anders Carlssona114c882018-01-04 15:10:22 +0100319 ]
320
321 sources = [
322 "engine/adm_helpers.cc",
323 "engine/adm_helpers.h",
324 "engine/apm_helpers.cc",
325 "engine/apm_helpers.h",
Steve Anton10542f22019-01-11 09:11:00 -0800326 "engine/null_webrtc_video_engine.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800327 "engine/nullwebrtcvideoengine.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100328 "engine/payload_type_mapper.cc",
329 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100330 "engine/simulcast.cc",
331 "engine/simulcast.h",
Steve Anton10542f22019-01-11 09:11:00 -0800332 "engine/webrtc_media_engine.cc",
333 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 09:11:00 -0800334 "engine/webrtc_video_engine.cc",
335 "engine/webrtc_video_engine.h",
336 "engine/webrtc_voice_engine.cc",
337 "engine/webrtc_voice_engine.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800338 "engine/webrtcmediaengine.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800339 "engine/webrtcvideoengine.h",
340 "engine/webrtcvoiceengine.h",
kjellanderc76dc952016-06-03 03:09:32 -0700341 ]
342
kjellandere40a7ee2016-10-16 23:56:12 -0700343 if (!build_with_chromium && is_clang) {
kjellander82a94492016-06-12 22:12:01 -0700344 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander660312b2016-09-26 06:11:53 -0700345 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700346 }
347
minyue2e03c662017-02-01 17:31:11 -0800348 if (rtc_opus_support_120ms_ptime) {
349 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
350 } else {
351 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
352 }
353
kjellanderec5c9062016-08-19 01:07:30 -0700354 include_dirs = []
kjellanderc76dc952016-06-03 03:09:32 -0700355
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700356 public_configs = []
kjellanderc76dc952016-06-03 03:09:32 -0700357 if (build_with_chromium) {
358 deps += [ "../modules/video_capture:video_capture" ]
359 } else {
kjellanderc76dc952016-06-03 03:09:32 -0700360 public_configs += [ ":rtc_media_defines_config" ]
361 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
362 }
aleloi048cbdd2017-05-29 02:56:27 -0700363 if (rtc_enable_protobuf) {
364 deps += [ "../modules/audio_processing/aec_dump:aec_dump_impl" ]
365 } else {
366 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
367 }
kjellanderc76dc952016-06-03 03:09:32 -0700368 deps += [
Anders Carlssona114c882018-01-04 15:10:22 +0100369 ":rtc_constants",
magjed0928a3c2016-11-25 00:40:18 -0800370 ":rtc_media_base",
kjellanderc76dc952016-06-03 03:09:32 -0700371 "..:webrtc_common",
kjellandera69d9732016-08-31 07:33:05 -0700372 "../api:call_api",
zhihuang38ede132017-06-15 12:52:32 -0700373 "../api:libjingle_peerconnection_api",
aleloia8eb7562016-11-28 07:02:13 -0800374 "../api:transport_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800375 "../api/audio_codecs:audio_codecs_api",
Jiawei Ouc2ebe212018-11-08 10:02:56 -0800376 "../api/video:builtin_video_bitrate_allocator_factory",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200377 "../api/video:video_frame",
378 "../api/video:video_frame_i420",
Anders Carlssondd3e0ab2018-06-12 11:15:56 +0200379 "../api/video_codecs:rtc_software_fallback_wrappers",
ilnikd60d06a2017-04-05 03:02:20 -0700380 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-12 22:12:01 -0700381 "../call",
Anders Carlssona114c882018-01-04 15:10:22 +0100382 "../call:call_interfaces",
aleloi440b6d92017-08-22 05:43:23 -0700383 "../call:video_stream_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800384 "../common_video:common_video",
kjellandera2ef4f92017-03-06 06:04:55 -0800385 "../modules/audio_device:audio_device",
Paulina Hensman7bd79a02018-03-15 12:44:12 +0100386 "../modules/audio_device:audio_device_impl",
aleloi10111bc2016-11-17 06:48:48 -0800387 "../modules/audio_mixer:audio_mixer_impl",
kjellandera2ef4f92017-03-06 06:04:55 -0800388 "../modules/audio_processing:audio_processing",
zhihuang38ede132017-06-15 12:52:32 -0700389 "../pc:rtc_pc_base",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700390 "../rtc_base:rtc_base",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700391 "../rtc_base:rtc_task_queue",
Anders Carlssona114c882018-01-04 15:10:22 +0100392 "../rtc_base:stringutils",
Åsa Persson1a35fbd2018-10-12 17:36:57 +0200393 "../rtc_base/experiments:normalize_simulcast_size_experiment",
kjellanderc76dc952016-06-03 03:09:32 -0700394 "../system_wrappers",
Sebastian Janssonfa0aa392018-11-16 09:54:32 +0100395 "//third_party/abseil-cpp/absl/memory",
Niels Möller3c7d5992018-10-19 15:29:54 +0200396 "//third_party/abseil-cpp/absl/strings",
Danil Chapovalov00c71832018-06-15 15:58:38 +0200397 "//third_party/abseil-cpp/absl/types:optional",
kjellanderc76dc952016-06-03 03:09:32 -0700398 ]
399}
kjellander82a94492016-06-12 22:12:01 -0700400
zhihuang38ede132017-06-15 12:52:32 -0700401rtc_static_library("rtc_data") {
402 defines = []
403 deps = []
404
405 if (rtc_enable_sctp) {
406 sources = [
Steve Anton10542f22019-01-11 09:11:00 -0800407 "sctp/sctp_transport.cc",
408 "sctp/sctp_transport.h",
409 "sctp/sctp_transport_internal.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800410 "sctp/sctptransport.h",
411 "sctp/sctptransportinternal.h",
zhihuang38ede132017-06-15 12:52:32 -0700412 ]
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100413 } else {
414 # libtool on mac does not like empty targets.
415 sources = [
Mirko Bonadei6c8e6662017-12-13 07:40:54 +0100416 "sctp/noop.cc",
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100417 ]
zhihuang38ede132017-06-15 12:52:32 -0700418 }
419
zhihuang38ede132017-06-15 12:52:32 -0700420 if (!build_with_chromium && is_clang) {
421 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
422 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
423 }
424
zhihuang38ede132017-06-15 12:52:32 -0700425 if (rtc_enable_sctp && rtc_build_usrsctp) {
426 include_dirs = [
427 # TODO(jiayl): move this into the public_configs of
428 # //third_party/usrsctp/BUILD.gn.
429 "//third_party/usrsctp/usrsctplib",
430 ]
431 deps += [ "//third_party/usrsctp" ]
432 }
433
434 deps += [
435 ":rtc_media_base",
436 "..:webrtc_common",
437 "../api:call_api",
438 "../api:transport_api",
zhihuang38ede132017-06-15 12:52:32 -0700439 "../p2p:rtc_p2p",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700440 "../rtc_base:rtc_base",
441 "../rtc_base:rtc_base_approved",
Artem Titove41c4332018-07-25 15:04:28 +0200442 "../rtc_base/third_party/sigslot",
zhihuang38ede132017-06-15 12:52:32 -0700443 "../system_wrappers",
444 ]
445}
446
447rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000448 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 14:23:23 +0100449 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Mirko Bonadei75baa492018-01-11 17:07:30 +0100450 deps = [
zhihuang38ede132017-06-15 12:52:32 -0700451 ":rtc_audio_video",
452 ":rtc_data",
453 ]
454}
455
kjellander82a94492016-06-12 22:12:01 -0700456if (rtc_include_tests) {
mbonadei9087d492017-04-25 00:35:35 -0700457 rtc_source_set("rtc_media_tests_utils") {
kjellander82a94492016-06-12 22:12:01 -0700458 testonly = true
459
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200460 defines = []
kjellanderec5c9062016-08-19 01:07:30 -0700461 include_dirs = []
kjellandera2ef4f92017-03-06 06:04:55 -0800462 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100463 ":rtc_audio_video",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700464 ":rtc_simulcast_encoder_adapter",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100465 "../api:libjingle_peerconnection_api",
Yves Gerey3e707812018-11-28 16:47:49 +0100466 "../api/video:encoded_image",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200467 "../api/video:video_frame_i420",
aleloi440b6d92017-08-22 05:43:23 -0700468 "../call:video_stream_api",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100469 "../common_video:common_video",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000470 "../modules/audio_processing:api",
kjellandera2ef4f92017-03-06 06:04:55 -0800471 "../modules/audio_processing:audio_processing",
Mirko Bonadeib5728d92017-12-06 07:51:33 +0100472 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 11:05:10 +0100473 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 03:08:08 -0700474 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 06:04:55 -0800475 "../p2p:rtc_p2p",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100476 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 13:15:08 +0100477 "../rtc_base:gunit_helpers",
Tommi8d2c5a82018-03-19 11:12:48 +0100478 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100479 "../rtc_base:stringutils",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200480 "//third_party/abseil-cpp/absl/memory",
Yves Gerey69807e82018-10-30 22:23:02 +0100481 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 06:04:55 -0800482 ]
kjellander82a94492016-06-12 22:12:01 -0700483 sources = [
Steve Anton10542f22019-01-11 09:11:00 -0800484 "base/fake_frame_source.cc",
485 "base/fake_frame_source.h",
486 "base/fake_media_engine.cc",
487 "base/fake_media_engine.h",
488 "base/fake_network_interface.h",
489 "base/fake_rtp.cc",
490 "base/fake_rtp.h",
491 "base/fake_video_capturer.cc",
492 "base/fake_video_capturer.h",
493 "base/fake_video_renderer.cc",
494 "base/fake_video_renderer.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800495 "base/fakeframesource.h",
496 "base/fakemediaengine.h",
497 "base/fakenetworkinterface.h",
498 "base/fakertp.h",
499 "base/fakevideocapturer.h",
500 "base/fakevideorenderer.h",
Steve Anton10542f22019-01-11 09:11:00 -0800501 "base/test_utils.cc",
502 "base/test_utils.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800503 "base/testutils.h",
Steve Anton10542f22019-01-11 09:11:00 -0800504 "engine/fake_webrtc_call.cc",
505 "engine/fake_webrtc_call.h",
506 "engine/fake_webrtc_video_engine.cc",
507 "engine/fake_webrtc_video_engine.h",
Steve Antonaec15aa2019-01-11 09:13:07 -0800508 "engine/fakewebrtccall.h",
509 "engine/fakewebrtcvideoengine.h",
kjellander82a94492016-06-12 22:12:01 -0700510 ]
511
kjellandere40a7ee2016-10-16 23:56:12 -0700512 if (!build_with_chromium && is_clang) {
513 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700514 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander82a94492016-06-12 22:12:01 -0700515 }
516
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200517 if (rtc_use_h264) {
518 defines += [ "WEBRTC_USE_H264" ]
519 }
520
kjellander82a94492016-06-12 22:12:01 -0700521 deps += [
Anders Carlssona114c882018-01-04 15:10:22 +0100522 ":rtc_internal_video_codecs",
kjellandera2ef4f92017-03-06 06:04:55 -0800523 ":rtc_media",
524 ":rtc_media_base",
525 "..:webrtc_common",
526 "../api:call_api",
Erik Språng7fd0a282018-05-22 15:37:23 +0200527 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200528 "../api/video:video_frame",
ilnikd60d06a2017-04-05 03:02:20 -0700529 "../api/video_codecs:video_codecs_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800530 "../call:call_interfaces",
Sebastian Jansson8f83b422018-02-21 13:07:13 +0100531 "../call:mock_rtp_interfaces",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700532 "../rtc_base:rtc_base",
533 "../rtc_base:rtc_base_approved",
Tommi68561562018-02-13 19:47:50 +0100534 "../rtc_base:rtc_task_queue_for_test",
Artem Titove41c4332018-07-25 15:04:28 +0200535 "../rtc_base/third_party/sigslot",
kjellandera2ef4f92017-03-06 06:04:55 -0800536 "../test:test_support",
kjellander82a94492016-06-12 22:12:01 -0700537 "//testing/gtest",
538 ]
kjellander82a94492016-06-12 22:12:01 -0700539 }
540
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700541 rtc_media_unittests_resources = [
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200542 "../resources/media/captured-320x240-2s-48.frames",
543 "../resources/media/faces.1280x720_P420.yuv",
544 "../resources/media/faces_I420.jpg",
545 "../resources/media/faces_I422.jpg",
546 "../resources/media/faces_I444.jpg",
547 "../resources/media/faces_I411.jpg",
548 "../resources/media/faces_I400.jpg",
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700549 ]
kjellander32c4a202016-08-30 02:53:49 -0700550
551 if (is_ios) {
552 bundle_data("rtc_media_unittests_bundle_data") {
553 testonly = true
554 sources = rtc_media_unittests_resources
555 outputs = [
556 "{{bundle_resources_dir}}/{{source_file_part}}",
557 ]
558 }
559 }
560
ehmaldonado38a21322016-09-02 04:10:34 -0700561 rtc_test("rtc_media_unittests") {
kjellander82a94492016-06-12 22:12:01 -0700562 testonly = true
563
johan073ece42016-08-26 02:59:47 -0700564 defines = []
kjellandera2ef4f92017-03-06 06:04:55 -0800565 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100566 ":rtc_audio_video",
Anders Carlssona114c882018-01-04 15:10:22 +0100567 ":rtc_constants",
Mirko Bonadei75baa492018-01-11 17:07:30 +0100568 ":rtc_data",
Yves Gerey3e707812018-11-28 16:47:49 +0100569 "../:webrtc_common",
Danil Chapovalov99b71df2018-10-26 15:57:48 +0200570 "../api/test/video:function_video_factory",
Jonas Oreland49ac5952018-09-26 16:04:32 +0200571 "../api/units:time_delta",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200572 "../api/video:video_frame_i420",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000573 "../modules/audio_processing:api",
Patrik Höglund62139292017-12-19 16:44:45 +0100574 "../modules/audio_processing:mocks",
Åsa Persson23cd45a2018-07-03 10:40:40 +0200575 "../modules/rtp_rtcp",
Patrik Höglund99175c62018-01-08 11:05:10 +0100576 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200577 "../modules/video_coding:webrtc_vp8",
kjellandera2ef4f92017-03-06 06:04:55 -0800578 "../pc:rtc_pc",
Mirko Bonadeie51f7852017-12-06 11:23:19 +0100579 "../pc:rtc_pc_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100580 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 13:15:08 +0100581 "../rtc_base:gunit_helpers",
582 "../rtc_base:rtc_base_tests_utils",
Tommi8d2c5a82018-03-19 11:12:48 +0100583 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100584 "../rtc_base:stringutils",
Yves Gerey3e707812018-11-28 16:47:49 +0100585 "../rtc_base/third_party/sigslot:sigslot",
kjellandera2ef4f92017-03-06 06:04:55 -0800586 "../test:field_trial",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200587 "//third_party/abseil-cpp/absl/memory",
Yves Gerey69807e82018-10-30 22:23:02 +0100588 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 06:04:55 -0800589 ]
kjellander82a94492016-06-12 22:12:01 -0700590 sources = [
591 "base/codec_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800592 "base/rtp_data_engine_unittest.cc",
593 "base/rtp_utils_unittest.cc",
594 "base/stream_params_unittest.cc",
595 "base/turn_utils_unittest.cc",
596 "base/video_adapter_unittest.cc",
597 "base/video_broadcaster_unittest.cc",
598 "base/video_capturer_unittest.cc",
599 "base/video_common_unittest.cc",
solenberg76377c52017-02-21 00:54:31 -0800600 "engine/apm_helpers_unittest.cc",
Florent Castellie7862cc2018-12-06 13:38:24 +0100601 "engine/encoder_simulcast_proxy_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800602 "engine/internal_decoder_factory_unittest.cc",
603 "engine/multiplex_codec_factory_unittest.cc",
604 "engine/null_webrtc_video_engine_unittest.cc",
ossuc54071d2016-08-17 02:45:41 -0700605 "engine/payload_type_mapper_unittest.cc",
magjed6cc25612017-07-10 03:26:36 -0700606 "engine/simulcast_encoder_adapter_unittest.cc",
Åsa Persson31cb8f92018-06-27 10:44:56 +0200607 "engine/simulcast_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800608 "engine/webrtc_media_engine_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800609 "engine/webrtc_video_engine_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700610 ]
611
oprypin45197522017-06-22 01:47:20 -0700612 # TODO(kthelgason): Reenable this test on iOS.
613 # See bugs.webrtc.org/5569
614 if (!is_ios) {
Steve Anton10542f22019-01-11 09:11:00 -0800615 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
oprypin45197522017-06-22 01:47:20 -0700616 }
617
deadbeef40610e22016-12-22 10:53:38 -0800618 if (rtc_enable_sctp) {
Steve Anton10542f22019-01-11 09:11:00 -0800619 sources += [ "sctp/sctp_transport_unittest.cc" ]
deadbeef40610e22016-12-22 10:53:38 -0800620 }
621
johan073ece42016-08-26 02:59:47 -0700622 if (rtc_use_h264) {
623 defines += [ "WEBRTC_USE_H264" ]
624 }
ossu11bfc532017-02-16 05:37:06 -0800625
626 if (rtc_opus_support_120ms_ptime) {
627 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
628 } else {
629 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
630 }
631
kjellandere40a7ee2016-10-16 23:56:12 -0700632 if (!build_with_chromium && is_clang) {
ehmaldonado38a21322016-09-02 04:10:34 -0700633 suppressed_configs += [
kjellandere40a7ee2016-10-16 23:56:12 -0700634 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander82a94492016-06-12 22:12:01 -0700635 "//build/config/clang:find_bad_constructs",
636 ]
637 }
638
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700639 data = rtc_media_unittests_resources
640
kjellander82a94492016-06-12 22:12:01 -0700641 if (is_android) {
642 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700643 shard_timeout = 900
644 }
kjellander32c4a202016-08-30 02:53:49 -0700645
646 if (is_ios) {
647 deps += [ ":rtc_media_unittests_bundle_data" ]
kjellander82a94492016-06-12 22:12:01 -0700648 }
649
650 deps += [
Florent Castellie7862cc2018-12-06 13:38:24 +0100651 ":rtc_encoder_simulcast_proxy",
Anders Carlssona114c882018-01-04 15:10:22 +0100652 ":rtc_internal_video_codecs",
kjellander82a94492016-06-12 22:12:01 -0700653 ":rtc_media",
kjellandera2ef4f92017-03-06 06:04:55 -0800654 ":rtc_media_base",
mbonadei9087d492017-04-25 00:35:35 -0700655 ":rtc_media_tests_utils",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700656 ":rtc_simulcast_encoder_adapter",
Emircan Uysaler98badbc2018-06-28 10:59:02 -0700657 ":rtc_vp9_profile",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200658 "../api:create_simulcast_test_fixture_api",
Seth Hampson24722b32017-12-22 09:36:42 -0800659 "../api:libjingle_peerconnection_api",
Jiawei Ouc2ebe212018-11-08 10:02:56 -0800660 "../api:mock_video_bitrate_allocator",
661 "../api:mock_video_bitrate_allocator_factory",
Emircan Uysalerdbcac7f2017-10-30 23:10:12 -0700662 "../api:mock_video_codec_factory",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200663 "../api:simulcast_test_fixture_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800664 "../api/audio_codecs:builtin_audio_decoder_factory",
ossueb1fde42017-05-02 06:46:30 -0700665 "../api/audio_codecs:builtin_audio_encoder_factory",
Jiawei Ouc2ebe212018-11-08 10:02:56 -0800666 "../api/video:builtin_video_bitrate_allocator_factory",
Erik Språng7fd0a282018-05-22 15:37:23 +0200667 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200668 "../api/video:video_frame",
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200669 "../api/video_codecs:builtin_video_decoder_factory",
670 "../api/video_codecs:builtin_video_encoder_factory",
ilnikd60d06a2017-04-05 03:02:20 -0700671 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-12 22:12:01 -0700672 "../audio",
kjellandera2ef4f92017-03-06 06:04:55 -0800673 "../call:call_interfaces",
674 "../common_video:common_video",
675 "../logging:rtc_event_log_api",
Qingsi Wang970b0882018-02-01 11:04:46 -0800676 "../logging:rtc_event_log_impl_base",
aleloi5de52fd2016-11-10 01:05:34 -0800677 "../modules/audio_device:mock_audio_device",
kjellandera2ef4f92017-03-06 06:04:55 -0800678 "../modules/audio_processing:audio_processing",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200679 "../modules/video_coding:simulcast_test_fixture_impl",
deadbeef59edb922017-04-18 15:49:09 -0700680 "../p2p:p2p_test_utils",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700681 "../rtc_base:rtc_base",
682 "../rtc_base:rtc_base_approved",
683 "../rtc_base:rtc_base_tests_main",
kwiberg37e99fd2017-04-10 05:15:48 -0700684 "../test:audio_codec_mocks",
kjellandera2ef4f92017-03-06 06:04:55 -0800685 "../test:test_support",
Ilya Nikolaevskiyc22a3a62017-10-25 10:04:54 +0200686 "../test:video_test_common",
kjellander82a94492016-06-12 22:12:01 -0700687 ]
688 }
689}