blob: 85121d28b5c63319048e545c832e15aa3c04026a [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",
ehmaldonadof6a861a2017-07-19 10:40:47 -070043 "../rtc_base:rtc_base",
44 "../rtc_base:rtc_base_approved",
Mirko Bonadei276827c2018-10-16 14:13:50 +020045 "../rtc_base/system:rtc_export",
Danil Chapovalov00c71832018-06-15 15:58:38 +020046 "//third_party/abseil-cpp/absl/types:optional",
zhihuang130ca7e2017-06-21 01:02:59 -070047 ]
48}
49
Niels Möller6daa2782018-01-23 10:37:42 +010050rtc_source_set("rtc_media_config") {
51 visibility = [ "*" ]
52 sources = [
53 "base/mediaconfig.h",
54 ]
55}
56
Emircan Uysaler98badbc2018-06-28 10:59:02 -070057rtc_source_set("rtc_vp9_profile") {
58 sources = [
59 "base/vp9_profile.cc",
60 "base/vp9_profile.h",
61 ]
62
63 deps = [
64 "..:webrtc_common",
65 "../api/video_codecs:video_codecs_api",
66 "../rtc_base:rtc_base_approved",
67 "//third_party/abseil-cpp/absl/types:optional",
68 ]
69}
70
zhihuangab97e182017-06-22 01:28:59 -070071rtc_static_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000072 visibility = [ "*" ]
kjellanderc76dc952016-06-03 03:09:32 -070073 defines = []
74 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +010075 deps = [
Niels Möllera6fe2612018-01-19 11:28:54 +010076 "../api:audio_options_api",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010077 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 11:12:48 +010078 "../rtc_base:rtc_base_approved",
79 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010080 "../rtc_base:sanitizer",
Tommi1829af62018-02-06 09:29:17 +010081 "../rtc_base:sequenced_task_checker",
Patrik Höglund3e113432017-12-15 14:40:10 +010082 "../rtc_base:stringutils",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010083 ]
kjellanderc76dc952016-06-03 03:09:32 -070084 sources = [
nisse6f5a6c32016-09-22 01:25:59 -070085 "base/adaptedvideotracksource.cc",
86 "base/adaptedvideotracksource.h",
kjellanderc76dc952016-06-03 03:09:32 -070087 "base/audiosource.h",
88 "base/codec.cc",
89 "base/codec.h",
kjellanderc76dc952016-06-03 03:09:32 -070090 "base/cryptoparams.h",
91 "base/device.h",
Paulina Hensman11b34f42018-04-09 14:24:52 +020092 "base/mediachannel.cc",
kjellanderc76dc952016-06-03 03:09:32 -070093 "base/mediachannel.h",
kjellanderc76dc952016-06-03 03:09:32 -070094 "base/mediaconstants.cc",
95 "base/mediaconstants.h",
96 "base/mediaengine.cc",
97 "base/mediaengine.h",
98 "base/rtpdataengine.cc",
99 "base/rtpdataengine.h",
kjellanderc76dc952016-06-03 03:09:32 -0700100 "base/rtputils.cc",
101 "base/rtputils.h",
kjellanderc76dc952016-06-03 03:09:32 -0700102 "base/streamparams.cc",
103 "base/streamparams.h",
104 "base/turnutils.cc",
105 "base/turnutils.h",
106 "base/videoadapter.cc",
107 "base/videoadapter.h",
108 "base/videobroadcaster.cc",
109 "base/videobroadcaster.h",
110 "base/videocapturer.cc",
111 "base/videocapturer.h",
112 "base/videocapturerfactory.h",
113 "base/videocommon.cc",
114 "base/videocommon.h",
kjellanderc76dc952016-06-03 03:09:32 -0700115 "base/videosourcebase.cc",
116 "base/videosourcebase.h",
magjed0928a3c2016-11-25 00:40:18 -0800117 ]
118
magjed0928a3c2016-11-25 00:40:18 -0800119 if (!build_with_chromium && is_clang) {
120 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
121 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
122 }
123
magjed0928a3c2016-11-25 00:40:18 -0800124 deps += [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100125 ":rtc_h264_profile_id",
Niels Möller6daa2782018-01-23 10:37:42 +0100126 ":rtc_media_config",
Emircan Uysaler98badbc2018-06-28 10:59:02 -0700127 ":rtc_vp9_profile",
magjed0928a3c2016-11-25 00:40:18 -0800128 "..:webrtc_common",
kjellandera2ef4f92017-03-06 06:04:55 -0800129 "../api:libjingle_peerconnection_api",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100130 "../api/audio_codecs:audio_codecs_api",
Åsa Persson23eba222018-10-02 14:47:06 +0200131 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200132 "../api/video:video_frame",
133 "../api/video:video_frame_i420",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100134 "../api/video_codecs:video_codecs_api",
135 "../call:call_interfaces",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100136 "../common_video",
Patrik Höglundaba85d12017-11-28 15:46:08 +0100137 "../modules/audio_processing:audio_processing_statistics",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700138 "../rtc_base:rtc_base",
139 "../rtc_base:rtc_base_approved",
Mirko Bonadei3d255302018-10-11 10:50:45 +0200140 "../rtc_base/system:rtc_export",
Artem Titove41c4332018-07-25 15:04:28 +0200141 "../rtc_base/third_party/sigslot",
Niels Möller3c7d5992018-10-19 15:29:54 +0200142 "//third_party/abseil-cpp/absl/strings",
Danil Chapovalov00c71832018-06-15 15:58:38 +0200143 "//third_party/abseil-cpp/absl/types:optional",
magjed0928a3c2016-11-25 00:40:18 -0800144 ]
kjellander8a116632017-04-21 05:17:08 -0700145
Dan Minor9c686132018-01-15 10:20:00 -0500146 if (!build_with_mozilla) {
147 deps += [ "../p2p" ]
148 }
149
kjellander8a116632017-04-21 05:17:08 -0700150 if (is_nacl) {
151 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
152 }
magjed0928a3c2016-11-25 00:40:18 -0800153}
154
Anders Carlssona114c882018-01-04 15:10:22 +0100155rtc_static_library("rtc_constants") {
magjed0928a3c2016-11-25 00:40:18 -0800156 defines = []
157 libs = []
Anders Carlssona114c882018-01-04 15:10:22 +0100158 deps = []
magjed0928a3c2016-11-25 00:40:18 -0800159 sources = [
mallikarjun829deda482017-11-20 17:48:13 +0530160 "engine/constants.cc",
charujain66748462017-09-14 13:53:02 -0700161 "engine/constants.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100162 ]
163}
164
Jonathan Yu9a5da492018-10-19 00:51:18 -0700165rtc_static_library("rtc_simulcast_encoder_adapter") {
166 visibility = [ "*" ]
167 defines = []
168 libs = []
169 sources = [
170 "engine/simulcast_encoder_adapter.cc",
171 "engine/simulcast_encoder_adapter.h",
172 ]
173 deps = [
174 "../api/video:video_bitrate_allocation",
175 "../api/video:video_frame_i420",
176 "../api/video_codecs:video_codecs_api",
177 "../modules/video_coding:video_codec_interface",
178 "../modules/video_coding:video_coding_utility",
179 "../rtc_base:checks",
180 "../rtc_base:rtc_base_approved",
181 "../rtc_base:sequenced_task_checker",
182 "../system_wrappers",
183 "../system_wrappers:field_trial",
184 "//third_party/abseil-cpp/absl/types:optional",
185 "//third_party/libyuv",
186 ]
187 if (!build_with_chromium && is_clang) {
188 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
189 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
190 }
191}
192
Jonathan Yu327b7532018-10-24 17:21:36 -0700193rtc_static_library("rtc_vp8_encoder_simulcast_proxy") {
194 visibility = [ "*" ]
195 defines = []
196 libs = []
197 sources = [
198 "engine/vp8_encoder_simulcast_proxy.cc",
199 "engine/vp8_encoder_simulcast_proxy.h",
200 ]
201 deps = [
202 ":rtc_simulcast_encoder_adapter",
203 "../api/video_codecs:video_codecs_api",
204 ]
205 if (!build_with_chromium && is_clang) {
206 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
207 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
208 }
209}
210
Anders Carlssona114c882018-01-04 15:10:22 +0100211rtc_static_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32 +0000212 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 04:31:53 +0200213 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 15:10:22 +0100214 defines = []
215 libs = []
Patrik Höglund99175c62018-01-08 11:05:10 +0100216 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100217 ":rtc_h264_profile_id",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700218 ":rtc_simulcast_encoder_adapter",
Jonathan Yu327b7532018-10-24 17:21:36 -0700219 ":rtc_vp8_encoder_simulcast_proxy",
Patrik Höglund99175c62018-01-08 11:05:10 +0100220 "../modules/video_coding:video_codec_interface",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200221 "//third_party/abseil-cpp/absl/memory",
Patrik Höglund99175c62018-01-08 11:05:10 +0100222 ]
Anders Carlssona114c882018-01-04 15:10:22 +0100223 sources = [
Magnus Jedvert07e0d012017-10-31 11:24:54 +0100224 "engine/convert_legacy_video_factory.cc",
225 "engine/convert_legacy_video_factory.h",
magjeddd407022016-12-01 00:27:27 -0800226 "engine/internaldecoderfactory.cc",
227 "engine/internaldecoderfactory.h",
magjed509e4fe2016-11-18 01:34:11 -0800228 "engine/internalencoderfactory.cc",
229 "engine/internalencoderfactory.h",
Emircan Uysalerd7ae3c32018-01-25 13:01:09 -0800230 "engine/multiplexcodecfactory.cc",
231 "engine/multiplexcodecfactory.h",
andersc063f0c02017-09-11 11:50:51 -0700232 "engine/scopedvideodecoder.cc",
233 "engine/scopedvideodecoder.h",
magjed3f897582017-08-28 08:05:42 -0700234 "engine/scopedvideoencoder.cc",
235 "engine/scopedvideoencoder.h",
Jonathan Yu327b7532018-10-24 17:21:36 -0700236
237 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
238 # targets depend on :rtc_vp8_encoder_simulcast_proxy directly.
Ilya Nikolaevskiyc22a3a62017-10-25 10:04:54 +0200239 "engine/vp8_encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100240 "engine/webrtcvideodecoderfactory.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100241 "engine/webrtcvideoencoderfactory.h",
242 ]
243
Anders Carlssona114c882018-01-04 15:10:22 +0100244 if (!build_with_chromium && is_clang) {
245 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
246 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
247 }
248
Anders Carlssona114c882018-01-04 15:10:22 +0100249 include_dirs = []
250
251 public_configs = []
252 deps += [
253 ":rtc_constants",
254 ":rtc_media_base",
255 "..:webrtc_common",
Erik Språng7fd0a282018-05-22 15:37:23 +0200256 "../api/video:video_bitrate_allocation",
Anders Carlssondd3e0ab2018-06-12 11:15:56 +0200257 "../api/video_codecs:rtc_software_fallback_wrappers",
Anders Carlssona114c882018-01-04 15:10:22 +0100258 "../api/video_codecs:video_codecs_api",
259 "../call:call_interfaces",
260 "../call:video_stream_api",
261 "../modules/video_coding:webrtc_h264",
Emircan Uysalerd7ae3c32018-01-25 13:01:09 -0800262 "../modules/video_coding:webrtc_multiplex",
Anders Carlssona114c882018-01-04 15:10:22 +0100263 "../modules/video_coding:webrtc_vp8",
Anders Carlssona114c882018-01-04 15:10:22 +0100264 "../modules/video_coding:webrtc_vp9",
265 "../rtc_base:checks",
266 "../rtc_base:rtc_base_approved",
Mirko Bonadei276827c2018-10-16 14:13:50 +0200267 "../rtc_base/system:rtc_export",
Niels Möller039743e2018-10-23 10:07:25 +0200268 "//third_party/abseil-cpp/absl/strings",
Anders Carlssona114c882018-01-04 15:10:22 +0100269 ]
270}
271
272rtc_static_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000273 visibility = [ "*" ]
Anders Carlsson1f433e42018-04-24 16:39:05 +0200274 allow_poison = [
275 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove.
276 "software_video_codecs", # TODO(bugs.webrtc.org/7925): Remove.
277 ]
Anders Carlssona114c882018-01-04 15:10:22 +0100278 defines = []
279 libs = []
280 deps = [
Alessio Bazzicab768e882018-11-07 14:29:54 +0000281 "../modules/audio_processing:api",
Mirko Bonadeica913b02018-01-26 15:11:40 +0100282 "../modules/audio_processing/aec_dump:aec_dump",
Patrik Höglunda97af1f2018-01-16 10:11:40 +0100283 "../modules/video_coding:video_codec_interface",
Patrik Höglund99175c62018-01-08 11:05:10 +0100284 "../modules/video_coding:video_coding",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200285 "../modules/video_coding:video_coding_utility",
Jonas Olssonabbe8412018-04-03 13:40:05 +0200286 "../rtc_base:audio_format_to_string",
Anders Carlssona114c882018-01-04 15:10:22 +0100287 "../rtc_base:checks",
Mirko Bonadei276827c2018-10-16 14:13:50 +0200288 "../rtc_base/system:rtc_export",
Artem Titova76af0c2018-07-23 17:38:12 +0200289 "../rtc_base/third_party/base64",
Mirko Bonadei17f48782018-09-28 08:51:10 +0200290 "../system_wrappers:field_trial",
291 "../system_wrappers:metrics",
Anders Carlssona114c882018-01-04 15:10:22 +0100292 ]
293
294 sources = [
295 "engine/adm_helpers.cc",
296 "engine/adm_helpers.h",
297 "engine/apm_helpers.cc",
298 "engine/apm_helpers.h",
299 "engine/nullwebrtcvideoengine.h",
300 "engine/payload_type_mapper.cc",
301 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100302 "engine/simulcast.cc",
303 "engine/simulcast.h",
kjellanderc76dc952016-06-03 03:09:32 -0700304 "engine/webrtcmediaengine.cc",
305 "engine/webrtcmediaengine.h",
306 "engine/webrtcvideocapturer.cc",
307 "engine/webrtcvideocapturer.h",
308 "engine/webrtcvideocapturerfactory.cc",
309 "engine/webrtcvideocapturerfactory.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100310 "engine/webrtcvideodecoderfactory.cc",
311 "engine/webrtcvideodecoderfactory.h",
312 "engine/webrtcvideoencoderfactory.cc",
313 "engine/webrtcvideoencoderfactory.h",
eladalonf1841382017-06-12 01:16:46 -0700314 "engine/webrtcvideoengine.cc",
315 "engine/webrtcvideoengine.h",
kjellanderc76dc952016-06-03 03:09:32 -0700316 "engine/webrtcvoiceengine.cc",
317 "engine/webrtcvoiceengine.h",
kjellanderc76dc952016-06-03 03:09:32 -0700318 ]
319
kjellandere40a7ee2016-10-16 23:56:12 -0700320 if (!build_with_chromium && is_clang) {
kjellander82a94492016-06-12 22:12:01 -0700321 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander660312b2016-09-26 06:11:53 -0700322 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700323 }
324
minyue2e03c662017-02-01 17:31:11 -0800325 if (rtc_opus_support_120ms_ptime) {
326 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
327 } else {
328 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
329 }
330
kjellanderec5c9062016-08-19 01:07:30 -0700331 include_dirs = []
kjellanderc76dc952016-06-03 03:09:32 -0700332
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700333 public_configs = []
kjellanderc76dc952016-06-03 03:09:32 -0700334 if (build_with_chromium) {
335 deps += [ "../modules/video_capture:video_capture" ]
336 } else {
kjellanderc76dc952016-06-03 03:09:32 -0700337 public_configs += [ ":rtc_media_defines_config" ]
338 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
339 }
aleloi048cbdd2017-05-29 02:56:27 -0700340 if (rtc_enable_protobuf) {
341 deps += [ "../modules/audio_processing/aec_dump:aec_dump_impl" ]
342 } else {
343 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
344 }
Anders Carlssondd8c1652018-01-30 10:32:13 +0100345 if (rtc_use_builtin_sw_codecs) {
346 deps += [ ":rtc_internal_video_codecs" ]
347 }
kjellanderc76dc952016-06-03 03:09:32 -0700348 deps += [
Anders Carlssona114c882018-01-04 15:10:22 +0100349 ":rtc_constants",
magjed0928a3c2016-11-25 00:40:18 -0800350 ":rtc_media_base",
kjellanderc76dc952016-06-03 03:09:32 -0700351 "..:webrtc_common",
kjellandera69d9732016-08-31 07:33:05 -0700352 "../api:call_api",
zhihuang38ede132017-06-15 12:52:32 -0700353 "../api:libjingle_peerconnection_api",
aleloia8eb7562016-11-28 07:02:13 -0800354 "../api:transport_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800355 "../api/audio_codecs:audio_codecs_api",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200356 "../api/video:video_frame",
357 "../api/video:video_frame_i420",
Anders Carlssondd3e0ab2018-06-12 11:15:56 +0200358 "../api/video_codecs:rtc_software_fallback_wrappers",
ilnikd60d06a2017-04-05 03:02:20 -0700359 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-12 22:12:01 -0700360 "../call",
Anders Carlssona114c882018-01-04 15:10:22 +0100361 "../call:call_interfaces",
aleloi440b6d92017-08-22 05:43:23 -0700362 "../call:video_stream_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800363 "../common_video:common_video",
kjellandera2ef4f92017-03-06 06:04:55 -0800364 "../modules/audio_device:audio_device",
Paulina Hensman7bd79a02018-03-15 12:44:12 +0100365 "../modules/audio_device:audio_device_impl",
aleloi10111bc2016-11-17 06:48:48 -0800366 "../modules/audio_mixer:audio_mixer_impl",
kjellandera2ef4f92017-03-06 06:04:55 -0800367 "../modules/audio_processing:audio_processing",
368 "../modules/video_capture:video_capture_module",
zhihuang38ede132017-06-15 12:52:32 -0700369 "../pc:rtc_pc_base",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700370 "../rtc_base:rtc_base",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700371 "../rtc_base:rtc_task_queue",
Anders Carlssona114c882018-01-04 15:10:22 +0100372 "../rtc_base:stringutils",
Åsa Persson1a35fbd2018-10-12 17:36:57 +0200373 "../rtc_base/experiments:normalize_simulcast_size_experiment",
kjellanderc76dc952016-06-03 03:09:32 -0700374 "../system_wrappers",
Niels Möller3c7d5992018-10-19 15:29:54 +0200375 "//third_party/abseil-cpp/absl/strings",
Danil Chapovalov00c71832018-06-15 15:58:38 +0200376 "//third_party/abseil-cpp/absl/types:optional",
kjellanderc76dc952016-06-03 03:09:32 -0700377 ]
378}
kjellander82a94492016-06-12 22:12:01 -0700379
zhihuang38ede132017-06-15 12:52:32 -0700380rtc_static_library("rtc_data") {
381 defines = []
382 deps = []
383
384 if (rtc_enable_sctp) {
385 sources = [
386 "sctp/sctptransport.cc",
387 "sctp/sctptransport.h",
388 "sctp/sctptransportinternal.h",
389 ]
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100390 } else {
391 # libtool on mac does not like empty targets.
392 sources = [
Mirko Bonadei6c8e6662017-12-13 07:40:54 +0100393 "sctp/noop.cc",
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100394 ]
zhihuang38ede132017-06-15 12:52:32 -0700395 }
396
zhihuang38ede132017-06-15 12:52:32 -0700397 if (!build_with_chromium && is_clang) {
398 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
399 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
400 }
401
zhihuang38ede132017-06-15 12:52:32 -0700402 if (rtc_enable_sctp && rtc_build_usrsctp) {
403 include_dirs = [
404 # TODO(jiayl): move this into the public_configs of
405 # //third_party/usrsctp/BUILD.gn.
406 "//third_party/usrsctp/usrsctplib",
407 ]
408 deps += [ "//third_party/usrsctp" ]
409 }
410
411 deps += [
412 ":rtc_media_base",
413 "..:webrtc_common",
414 "../api:call_api",
415 "../api:transport_api",
zhihuang38ede132017-06-15 12:52:32 -0700416 "../p2p:rtc_p2p",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700417 "../rtc_base:rtc_base",
418 "../rtc_base:rtc_base_approved",
Artem Titove41c4332018-07-25 15:04:28 +0200419 "../rtc_base/third_party/sigslot",
zhihuang38ede132017-06-15 12:52:32 -0700420 "../system_wrappers",
421 ]
422}
423
424rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000425 visibility = [ "*" ]
Anders Carlsson1f433e42018-04-24 16:39:05 +0200426 allow_poison = [
427 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove.
428 "software_video_codecs", # TODO(bugs.webrtc.org/7925): Remove.
429 ]
Mirko Bonadei75baa492018-01-11 17:07:30 +0100430 deps = [
zhihuang38ede132017-06-15 12:52:32 -0700431 ":rtc_audio_video",
432 ":rtc_data",
433 ]
434}
435
kjellander82a94492016-06-12 22:12:01 -0700436if (rtc_include_tests) {
mbonadei9087d492017-04-25 00:35:35 -0700437 rtc_source_set("rtc_media_tests_utils") {
kjellander82a94492016-06-12 22:12:01 -0700438 testonly = true
439
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200440 defines = []
kjellanderec5c9062016-08-19 01:07:30 -0700441 include_dirs = []
kjellandera2ef4f92017-03-06 06:04:55 -0800442 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100443 ":rtc_audio_video",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700444 ":rtc_simulcast_encoder_adapter",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100445 "../api:libjingle_peerconnection_api",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200446 "../api/video:video_frame_i420",
aleloi440b6d92017-08-22 05:43:23 -0700447 "../call:video_stream_api",
Patrik Höglundbe214a22018-01-04 12:14:35 +0100448 "../common_video:common_video",
kjellandera2ef4f92017-03-06 06:04:55 -0800449 "../modules/audio_coding:rent_a_codec",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000450 "../modules/audio_processing:api",
kjellandera2ef4f92017-03-06 06:04:55 -0800451 "../modules/audio_processing:audio_processing",
Mirko Bonadeib5728d92017-12-06 07:51:33 +0100452 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 11:05:10 +0100453 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 03:08:08 -0700454 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 06:04:55 -0800455 "../p2p:rtc_p2p",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100456 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 11:12:48 +0100457 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100458 "../rtc_base:stringutils",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200459 "//third_party/abseil-cpp/absl/memory",
Yves Gerey69807e82018-10-30 22:23:02 +0100460 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 06:04:55 -0800461 ]
kjellander82a94492016-06-12 22:12:01 -0700462 sources = [
Niels Möllera6cc0f92018-02-12 17:14:55 +0100463 "base/fakeframesource.cc",
464 "base/fakeframesource.h",
Sebastian Janssoncb06cac2018-10-18 17:03:30 +0200465 "base/fakemediaengine.cc",
kjellander82a94492016-06-12 22:12:01 -0700466 "base/fakemediaengine.h",
467 "base/fakenetworkinterface.h",
jbauch5869f502017-06-29 12:31:36 -0700468 "base/fakertp.cc",
kjellander82a94492016-06-12 22:12:01 -0700469 "base/fakertp.h",
Tommi1829af62018-02-06 09:29:17 +0100470 "base/fakevideocapturer.cc",
kjellander82a94492016-06-12 22:12:01 -0700471 "base/fakevideocapturer.h",
Mirko Bonadei17aff352018-07-26 12:20:40 +0200472 "base/fakevideorenderer.cc",
kjellander82a94492016-06-12 22:12:01 -0700473 "base/fakevideorenderer.h",
474 "base/testutils.cc",
475 "base/testutils.h",
476 "engine/fakewebrtccall.cc",
477 "engine/fakewebrtccall.h",
kjellander82a94492016-06-12 22:12:01 -0700478 "engine/fakewebrtcdeviceinfo.h",
479 "engine/fakewebrtcvcmfactory.h",
480 "engine/fakewebrtcvideocapturemodule.h",
Anders Carlsson67537952018-05-03 11:28:29 +0200481 "engine/fakewebrtcvideoengine.cc",
kjellander82a94492016-06-12 22:12:01 -0700482 "engine/fakewebrtcvideoengine.h",
kjellander82a94492016-06-12 22:12:01 -0700483 ]
484
kjellandere40a7ee2016-10-16 23:56:12 -0700485 if (!build_with_chromium && is_clang) {
486 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700487 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander82a94492016-06-12 22:12:01 -0700488 }
489
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200490 if (rtc_use_h264) {
491 defines += [ "WEBRTC_USE_H264" ]
492 }
493
kjellander82a94492016-06-12 22:12:01 -0700494 deps += [
Anders Carlssona114c882018-01-04 15:10:22 +0100495 ":rtc_internal_video_codecs",
kjellandera2ef4f92017-03-06 06:04:55 -0800496 ":rtc_media",
497 ":rtc_media_base",
498 "..:webrtc_common",
499 "../api:call_api",
Erik Språng7fd0a282018-05-22 15:37:23 +0200500 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200501 "../api/video:video_frame",
ilnikd60d06a2017-04-05 03:02:20 -0700502 "../api/video_codecs:video_codecs_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800503 "../call:call_interfaces",
Sebastian Jansson8f83b422018-02-21 13:07:13 +0100504 "../call:mock_rtp_interfaces",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700505 "../rtc_base:rtc_base",
506 "../rtc_base:rtc_base_approved",
507 "../rtc_base:rtc_base_tests_utils",
Tommi68561562018-02-13 19:47:50 +0100508 "../rtc_base:rtc_task_queue_for_test",
Artem Titove41c4332018-07-25 15:04:28 +0200509 "../rtc_base/third_party/sigslot",
kjellandera2ef4f92017-03-06 06:04:55 -0800510 "../test:test_support",
kjellander82a94492016-06-12 22:12:01 -0700511 "//testing/gtest",
512 ]
kjellander82a94492016-06-12 22:12:01 -0700513 }
514
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700515 rtc_media_unittests_resources = [
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200516 "../resources/media/captured-320x240-2s-48.frames",
517 "../resources/media/faces.1280x720_P420.yuv",
518 "../resources/media/faces_I420.jpg",
519 "../resources/media/faces_I422.jpg",
520 "../resources/media/faces_I444.jpg",
521 "../resources/media/faces_I411.jpg",
522 "../resources/media/faces_I400.jpg",
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700523 ]
kjellander32c4a202016-08-30 02:53:49 -0700524
525 if (is_ios) {
526 bundle_data("rtc_media_unittests_bundle_data") {
527 testonly = true
528 sources = rtc_media_unittests_resources
529 outputs = [
530 "{{bundle_resources_dir}}/{{source_file_part}}",
531 ]
532 }
533 }
534
ehmaldonado38a21322016-09-02 04:10:34 -0700535 rtc_test("rtc_media_unittests") {
kjellander82a94492016-06-12 22:12:01 -0700536 testonly = true
537
johan073ece42016-08-26 02:59:47 -0700538 defines = []
kjellandera2ef4f92017-03-06 06:04:55 -0800539 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100540 ":rtc_audio_video",
Anders Carlssona114c882018-01-04 15:10:22 +0100541 ":rtc_constants",
Mirko Bonadei75baa492018-01-11 17:07:30 +0100542 ":rtc_data",
Danil Chapovalov99b71df2018-10-26 15:57:48 +0200543 "../api/test/video:function_video_factory",
Jonas Oreland49ac5952018-09-26 16:04:32 +0200544 "../api/units:time_delta",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200545 "../api/video:video_frame_i420",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000546 "../modules/audio_processing:api",
Patrik Höglund62139292017-12-19 16:44:45 +0100547 "../modules/audio_processing:mocks",
Åsa Persson23cd45a2018-07-03 10:40:40 +0200548 "../modules/rtp_rtcp",
Patrik Höglund99175c62018-01-08 11:05:10 +0100549 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200550 "../modules/video_coding:webrtc_vp8",
kjellandera2ef4f92017-03-06 06:04:55 -0800551 "../pc:rtc_pc",
Mirko Bonadeie51f7852017-12-06 11:23:19 +0100552 "../pc:rtc_pc_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100553 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 11:12:48 +0100554 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100555 "../rtc_base:stringutils",
kjellandera2ef4f92017-03-06 06:04:55 -0800556 "../test:field_trial",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200557 "//third_party/abseil-cpp/absl/memory",
Yves Gerey69807e82018-10-30 22:23:02 +0100558 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 06:04:55 -0800559 ]
kjellander82a94492016-06-12 22:12:01 -0700560 sources = [
561 "base/codec_unittest.cc",
562 "base/rtpdataengine_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700563 "base/rtputils_unittest.cc",
564 "base/streamparams_unittest.cc",
565 "base/turnutils_unittest.cc",
566 "base/videoadapter_unittest.cc",
567 "base/videobroadcaster_unittest.cc",
568 "base/videocapturer_unittest.cc",
569 "base/videocommon_unittest.cc",
solenberg76377c52017-02-21 00:54:31 -0800570 "engine/apm_helpers_unittest.cc",
magjeddd407022016-12-01 00:27:27 -0800571 "engine/internaldecoderfactory_unittest.cc",
Emircan Uysalerd7ae3c32018-01-25 13:01:09 -0800572 "engine/multiplexcodecfactory_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700573 "engine/nullwebrtcvideoengine_unittest.cc",
ossuc54071d2016-08-17 02:45:41 -0700574 "engine/payload_type_mapper_unittest.cc",
magjed6cc25612017-07-10 03:26:36 -0700575 "engine/simulcast_encoder_adapter_unittest.cc",
Åsa Persson31cb8f92018-06-27 10:44:56 +0200576 "engine/simulcast_unittest.cc",
Ilya Nikolaevskiyc22a3a62017-10-25 10:04:54 +0200577 "engine/vp8_encoder_simulcast_proxy_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700578 "engine/webrtcmediaengine_unittest.cc",
579 "engine/webrtcvideocapturer_unittest.cc",
noahricbe850e12017-01-20 01:07:26 -0800580 "engine/webrtcvideoencoderfactory_unittest.cc",
eladalonf1841382017-06-12 01:16:46 -0700581 "engine/webrtcvideoengine_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700582 ]
583
oprypin45197522017-06-22 01:47:20 -0700584 # TODO(kthelgason): Reenable this test on iOS.
585 # See bugs.webrtc.org/5569
586 if (!is_ios) {
587 sources += [ "engine/webrtcvoiceengine_unittest.cc" ]
588 }
589
deadbeef40610e22016-12-22 10:53:38 -0800590 if (rtc_enable_sctp) {
deadbeef953c2ce2017-01-09 14:53:41 -0800591 sources += [ "sctp/sctptransport_unittest.cc" ]
deadbeef40610e22016-12-22 10:53:38 -0800592 }
593
johan073ece42016-08-26 02:59:47 -0700594 if (rtc_use_h264) {
595 defines += [ "WEBRTC_USE_H264" ]
596 }
ossu11bfc532017-02-16 05:37:06 -0800597
598 if (rtc_opus_support_120ms_ptime) {
599 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
600 } else {
601 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
602 }
603
kjellandere40a7ee2016-10-16 23:56:12 -0700604 if (!build_with_chromium && is_clang) {
ehmaldonado38a21322016-09-02 04:10:34 -0700605 suppressed_configs += [
kjellandere40a7ee2016-10-16 23:56:12 -0700606 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander82a94492016-06-12 22:12:01 -0700607 "//build/config/clang:find_bad_constructs",
608 ]
609 }
610
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700611 data = rtc_media_unittests_resources
612
kjellander82a94492016-06-12 22:12:01 -0700613 if (is_android) {
614 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700615 shard_timeout = 900
616 }
kjellander32c4a202016-08-30 02:53:49 -0700617
618 if (is_ios) {
619 deps += [ ":rtc_media_unittests_bundle_data" ]
kjellander82a94492016-06-12 22:12:01 -0700620 }
621
622 deps += [
Anders Carlssona114c882018-01-04 15:10:22 +0100623 ":rtc_internal_video_codecs",
kjellander82a94492016-06-12 22:12:01 -0700624 ":rtc_media",
kjellandera2ef4f92017-03-06 06:04:55 -0800625 ":rtc_media_base",
mbonadei9087d492017-04-25 00:35:35 -0700626 ":rtc_media_tests_utils",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700627 ":rtc_simulcast_encoder_adapter",
Jonathan Yu327b7532018-10-24 17:21:36 -0700628 ":rtc_vp8_encoder_simulcast_proxy",
Emircan Uysaler98badbc2018-06-28 10:59:02 -0700629 ":rtc_vp9_profile",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200630 "../api:create_simulcast_test_fixture_api",
Seth Hampson24722b32017-12-22 09:36:42 -0800631 "../api:libjingle_peerconnection_api",
Emircan Uysalerdbcac7f2017-10-30 23:10:12 -0700632 "../api:mock_video_codec_factory",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200633 "../api:simulcast_test_fixture_api",
kjellandera2ef4f92017-03-06 06:04:55 -0800634 "../api/audio_codecs:builtin_audio_decoder_factory",
ossueb1fde42017-05-02 06:46:30 -0700635 "../api/audio_codecs:builtin_audio_encoder_factory",
Erik Språng7fd0a282018-05-22 15:37:23 +0200636 "../api/video:video_bitrate_allocation",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200637 "../api/video:video_frame",
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200638 "../api/video_codecs:builtin_video_decoder_factory",
639 "../api/video_codecs:builtin_video_encoder_factory",
ilnikd60d06a2017-04-05 03:02:20 -0700640 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-12 22:12:01 -0700641 "../audio",
kjellandera2ef4f92017-03-06 06:04:55 -0800642 "../call:call_interfaces",
643 "../common_video:common_video",
644 "../logging:rtc_event_log_api",
Qingsi Wang970b0882018-02-01 11:04:46 -0800645 "../logging:rtc_event_log_impl_base",
aleloi5de52fd2016-11-10 01:05:34 -0800646 "../modules/audio_device:mock_audio_device",
kjellandera2ef4f92017-03-06 06:04:55 -0800647 "../modules/audio_processing:audio_processing",
Rasmus Brandt0cedc052018-05-31 12:53:00 +0200648 "../modules/video_coding:simulcast_test_fixture_impl",
deadbeef59edb922017-04-18 15:49:09 -0700649 "../p2p:p2p_test_utils",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700650 "../rtc_base:rtc_base",
651 "../rtc_base:rtc_base_approved",
652 "../rtc_base:rtc_base_tests_main",
653 "../rtc_base:rtc_base_tests_utils",
kwiberg37e99fd2017-04-10 05:15:48 -0700654 "../test:audio_codec_mocks",
kjellandera2ef4f92017-03-06 06:04:55 -0800655 "../test:test_support",
Ilya Nikolaevskiyc22a3a62017-10-25 10:04:54 +0200656 "../test:video_test_common",
kjellander82a94492016-06-12 22:12:01 -0700657 ]
658 }
659}