blob: b7ea5af83325cd09cc507bdfe73e576ac16981b2 [file] [log] [blame]
kjellanderc76dc952016-06-03 10:09:321# 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 14:58:2210import("../webrtc.gni")
kjellanderc76dc952016-06-03 10:09:3211
12group("media") {
Dan Minor9c686132018-01-15 15:20:0013 deps = []
14 if (!build_with_mozilla) {
15 deps += [
16 ":rtc_media",
17 ":rtc_media_base",
18 ]
19 }
kjellanderc76dc952016-06-03 10:09:3220}
21
22config("rtc_media_defines_config") {
23 defines = [
24 "HAVE_WEBRTC_VIDEO",
25 "HAVE_WEBRTC_VOICE",
26 ]
27}
28
zhihuang38ede132017-06-15 19:52:3229config("rtc_media_warnings_config") {
30 # GN orders flags on a target before flags from configs. The default config
31 # adds these flags so to cancel them out they need to come from a config and
32 # cannot be on the target directly.
33 if (!is_win) {
34 cflags = [ "-Wno-deprecated-declarations" ]
35 }
36}
37
zhihuang130ca7e2017-06-21 08:02:5938rtc_source_set("rtc_h264_profile_id") {
Per Kjellandera7f2d842018-01-10 15:54:5339 visibility = [ "*" ]
zhihuang130ca7e2017-06-21 08:02:5940 sources = [
41 "base/h264_profile_level_id.cc",
42 "base/h264_profile_level_id.h",
43 ]
44
45 if (!build_with_chromium && is_clang) {
46 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
47 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
48 }
49
50 deps = [
51 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 15:43:1352 "../api:optional",
ehmaldonadof6a861a2017-07-19 17:40:4753 "../rtc_base:rtc_base",
54 "../rtc_base:rtc_base_approved",
zhihuang130ca7e2017-06-21 08:02:5955 ]
56}
57
zhihuangab97e182017-06-22 08:28:5958rtc_static_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:5359 visibility = [ "*" ]
kjellanderc76dc952016-06-03 10:09:3260 defines = []
61 libs = []
Patrik Höglunda8005cf2017-12-13 15:05:4262 deps = [
63 "../rtc_base:checks",
64 "../rtc_base:sanitizer",
Patrik Höglund3e113432017-12-15 13:40:1065 "../rtc_base:stringutils",
Patrik Höglunda8005cf2017-12-13 15:05:4266 ]
kjellanderc76dc952016-06-03 10:09:3267 sources = [
nisse6f5a6c32016-09-22 08:25:5968 "base/adaptedvideotracksource.cc",
69 "base/adaptedvideotracksource.h",
kjellanderc76dc952016-06-03 10:09:3270 "base/audiosource.h",
71 "base/codec.cc",
72 "base/codec.h",
kjellanderc76dc952016-06-03 10:09:3273 "base/cryptoparams.h",
74 "base/device.h",
kjellanderc76dc952016-06-03 10:09:3275 "base/mediachannel.h",
kjellanderc76dc952016-06-03 10:09:3276 "base/mediaconstants.cc",
77 "base/mediaconstants.h",
78 "base/mediaengine.cc",
79 "base/mediaengine.h",
80 "base/rtpdataengine.cc",
81 "base/rtpdataengine.h",
kjellanderc76dc952016-06-03 10:09:3282 "base/rtputils.cc",
83 "base/rtputils.h",
kjellanderc76dc952016-06-03 10:09:3284 "base/streamparams.cc",
85 "base/streamparams.h",
86 "base/turnutils.cc",
87 "base/turnutils.h",
88 "base/videoadapter.cc",
89 "base/videoadapter.h",
90 "base/videobroadcaster.cc",
91 "base/videobroadcaster.h",
92 "base/videocapturer.cc",
93 "base/videocapturer.h",
94 "base/videocapturerfactory.h",
95 "base/videocommon.cc",
96 "base/videocommon.h",
kjellanderc76dc952016-06-03 10:09:3297 "base/videosourcebase.cc",
98 "base/videosourcebase.h",
magjed0928a3c2016-11-25 08:40:1899 ]
100
magjed0928a3c2016-11-25 08:40:18101 if (!build_with_chromium && is_clang) {
102 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
103 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
104 }
105
magjed0928a3c2016-11-25 08:40:18106 deps += [
Mirko Bonadei75baa492018-01-11 16:07:30107 ":rtc_h264_profile_id",
magjed0928a3c2016-11-25 08:40:18108 "..:webrtc_common",
kjellandera2ef4f92017-03-06 14:04:55109 "../api:libjingle_peerconnection_api",
Patrik Höglundaba85d12017-11-28 14:46:08110 "../api:optional",
111 "../api:video_frame_api",
112 "../api:video_frame_api_i420",
113 "../api/audio_codecs:audio_codecs_api",
114 "../api/video_codecs:video_codecs_api",
115 "../call:call_interfaces",
116 "../call:video_stream_api",
Patrik Höglundbe214a22018-01-04 11:14:35117 "../common_video",
Patrik Höglundaba85d12017-11-28 14:46:08118 "../modules/audio_processing:audio_processing_statistics",
ehmaldonadof6a861a2017-07-19 17:40:47119 "../rtc_base:rtc_base",
120 "../rtc_base:rtc_base_approved",
Patrik Höglundaba85d12017-11-28 14:46:08121 "../system_wrappers:field_trial_api",
magjed0928a3c2016-11-25 08:40:18122 ]
kjellander8a116632017-04-21 12:17:08123
Dan Minor9c686132018-01-15 15:20:00124 if (!build_with_mozilla) {
125 deps += [ "../p2p" ]
126 }
127
kjellander8a116632017-04-21 12:17:08128 if (is_nacl) {
129 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
130 }
magjed0928a3c2016-11-25 08:40:18131}
132
Anders Carlssona114c882018-01-04 14:10:22133rtc_static_library("rtc_constants") {
magjed0928a3c2016-11-25 08:40:18134 defines = []
135 libs = []
Anders Carlssona114c882018-01-04 14:10:22136 deps = []
magjed0928a3c2016-11-25 08:40:18137 sources = [
mallikarjun829deda482017-11-20 12:18:13138 "engine/constants.cc",
charujain66748462017-09-14 20:53:02139 "engine/constants.h",
Anders Carlssona114c882018-01-04 14:10:22140 ]
141}
142
143rtc_static_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32144 visibility = [ "*" ]
Anders Carlssona114c882018-01-04 14:10:22145 defines = []
146 libs = []
Patrik Höglund99175c62018-01-08 10:05:10147 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30148 ":rtc_h264_profile_id",
Patrik Höglund99175c62018-01-08 10:05:10149 "../modules/video_coding:video_codec_interface",
150 ]
Anders Carlssona114c882018-01-04 14:10:22151 sources = [
Magnus Jedvert07e0d012017-10-31 10:24:54152 "engine/convert_legacy_video_factory.cc",
153 "engine/convert_legacy_video_factory.h",
magjeddd407022016-12-01 08:27:27154 "engine/internaldecoderfactory.cc",
155 "engine/internaldecoderfactory.h",
magjed509e4fe2016-11-18 09:34:11156 "engine/internalencoderfactory.cc",
157 "engine/internalencoderfactory.h",
andersc063f0c02017-09-11 18:50:51158 "engine/scopedvideodecoder.cc",
159 "engine/scopedvideodecoder.h",
magjed3f897582017-08-28 15:05:42160 "engine/scopedvideoencoder.cc",
161 "engine/scopedvideoencoder.h",
kjellanderc76dc952016-06-03 10:09:32162 "engine/simulcast.cc",
163 "engine/simulcast.h",
magjed6cc25612017-07-10 10:26:36164 "engine/simulcast_encoder_adapter.cc",
165 "engine/simulcast_encoder_adapter.h",
Emircan Uysaler0a375472017-12-11 06:51:02166 "engine/stereocodecfactory.cc",
167 "engine/stereocodecfactory.h",
magjedf6acc2a2016-11-22 09:43:03168 "engine/videodecodersoftwarefallbackwrapper.cc",
169 "engine/videodecodersoftwarefallbackwrapper.h",
magjed614d5b72016-11-15 14:30:54170 "engine/videoencodersoftwarefallbackwrapper.cc",
171 "engine/videoencodersoftwarefallbackwrapper.h",
Ilya Nikolaevskiyc22a3a6a2017-10-25 08:04:54172 "engine/vp8_encoder_simulcast_proxy.cc",
173 "engine/vp8_encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 14:10:22174 "engine/webrtcvideodecoderfactory.cc",
175 "engine/webrtcvideodecoderfactory.h",
176 "engine/webrtcvideoencoderfactory.cc",
177 "engine/webrtcvideoencoderfactory.h",
178 ]
179
180 configs += [ ":rtc_media_warnings_config" ]
181
182 if (!build_with_chromium && is_clang) {
183 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
184 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
185 }
186
187 if (is_win) {
188 cflags = [
189 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
190 "/wd4267", # conversion from "size_t" to "int", possible loss of data.
191 "/wd4389", # signed/unsigned mismatch.
192 ]
193 }
194
195 include_dirs = []
196
197 public_configs = []
198 deps += [
199 ":rtc_constants",
200 ":rtc_media_base",
201 "..:webrtc_common",
202 "../api:video_frame_api_i420",
203 "../api/video_codecs:video_codecs_api",
204 "../call:call_interfaces",
205 "../call:video_stream_api",
206 "../modules/video_coding:webrtc_h264",
207 "../modules/video_coding:webrtc_stereo",
208 "../modules/video_coding:webrtc_vp8",
209 "../modules/video_coding:webrtc_vp8_helpers",
210 "../modules/video_coding:webrtc_vp9",
211 "../rtc_base:checks",
212 "../rtc_base:rtc_base_approved",
213 "../rtc_base:sequenced_task_checker",
214 "../system_wrappers",
215 "../system_wrappers:field_trial_api",
216 "../system_wrappers:metrics_api",
217 "//third_party/libyuv",
218 ]
219}
220
221rtc_static_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53222 visibility = [ "*" ]
Anders Carlssona114c882018-01-04 14:10:22223 defines = []
224 libs = []
225 deps = [
Patrik Höglunda97af1f2018-01-16 09:11:40226 "../modules/video_coding:video_codec_interface",
Patrik Höglund99175c62018-01-08 10:05:10227 "../modules/video_coding:video_coding",
Anders Carlssona114c882018-01-04 14:10:22228 "../rtc_base:checks",
229 ]
230
231 sources = [
232 "engine/adm_helpers.cc",
233 "engine/adm_helpers.h",
234 "engine/apm_helpers.cc",
235 "engine/apm_helpers.h",
236 "engine/nullwebrtcvideoengine.h",
237 "engine/payload_type_mapper.cc",
238 "engine/payload_type_mapper.h",
kjellanderc76dc952016-06-03 10:09:32239 "engine/webrtcmediaengine.cc",
240 "engine/webrtcmediaengine.h",
241 "engine/webrtcvideocapturer.cc",
242 "engine/webrtcvideocapturer.h",
243 "engine/webrtcvideocapturerfactory.cc",
244 "engine/webrtcvideocapturerfactory.h",
eladalonf1841382017-06-12 08:16:46245 "engine/webrtcvideoengine.cc",
246 "engine/webrtcvideoengine.h",
kjellanderc76dc952016-06-03 10:09:32247 "engine/webrtcvoiceengine.cc",
248 "engine/webrtcvoiceengine.h",
kjellanderc76dc952016-06-03 10:09:32249 ]
250
zhihuang38ede132017-06-15 19:52:32251 configs += [ ":rtc_media_warnings_config" ]
deadbeef40610e22016-12-22 18:53:38252
kjellandere40a7ee2016-10-17 06:56:12253 if (!build_with_chromium && is_clang) {
kjellander82a94492016-06-13 05:12:01254 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander660312b2016-09-26 13:11:53255 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 10:09:32256 }
257
258 if (is_win) {
259 cflags = [
260 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
261 "/wd4267", # conversion from "size_t" to "int", possible loss of data.
262 "/wd4389", # signed/unsigned mismatch.
263 ]
264 }
265
peah1bcfce52016-08-26 14:16:04266 if (rtc_enable_intelligibility_enhancer) {
267 defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=1" ]
268 } else {
269 defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=0" ]
270 }
271
minyue2e03c662017-02-02 01:31:11272 if (rtc_opus_support_120ms_ptime) {
273 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
274 } else {
275 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
276 }
277
kjellanderec5c9062016-08-19 08:07:30278 include_dirs = []
kjellanderc76dc952016-06-03 10:09:32279
ehmaldonadoe9cc6862016-09-05 13:10:18280 public_configs = []
kjellanderc76dc952016-06-03 10:09:32281 if (build_with_chromium) {
282 deps += [ "../modules/video_capture:video_capture" ]
283 } else {
kjellanderc76dc952016-06-03 10:09:32284 public_configs += [ ":rtc_media_defines_config" ]
285 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
286 }
aleloi048cbdd2017-05-29 09:56:27287 if (rtc_enable_protobuf) {
288 deps += [ "../modules/audio_processing/aec_dump:aec_dump_impl" ]
289 } else {
290 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
291 }
kjellanderc76dc952016-06-03 10:09:32292 deps += [
Anders Carlssona114c882018-01-04 14:10:22293 ":rtc_constants",
294 ":rtc_internal_video_codecs",
magjed0928a3c2016-11-25 08:40:18295 ":rtc_media_base",
kjellanderc76dc952016-06-03 10:09:32296 "..:webrtc_common",
kjellandera69d9732016-08-31 14:33:05297 "../api:call_api",
zhihuang38ede132017-06-15 19:52:32298 "../api:libjingle_peerconnection_api",
kwiberg84f6a3f2017-09-05 15:43:13299 "../api:optional",
aleloia8eb7562016-11-28 15:02:13300 "../api:transport_api",
kjellandera2ef4f92017-03-06 14:04:55301 "../api:video_frame_api",
Anders Carlssona114c882018-01-04 14:10:22302 "../api:video_frame_api_i420",
kjellandera2ef4f92017-03-06 14:04:55303 "../api/audio_codecs:audio_codecs_api",
ilnikd60d06a2017-04-05 10:02:20304 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-13 05:12:01305 "../call",
Anders Carlssona114c882018-01-04 14:10:22306 "../call:call_interfaces",
aleloi440b6d92017-08-22 12:43:23307 "../call:video_stream_api",
kjellandera2ef4f92017-03-06 14:04:55308 "../common_video:common_video",
kjellandera2ef4f92017-03-06 14:04:55309 "../modules/audio_device:audio_device",
aleloi10111bc2016-11-17 14:48:48310 "../modules/audio_mixer:audio_mixer_impl",
kjellandera2ef4f92017-03-06 14:04:55311 "../modules/audio_processing:audio_processing",
312 "../modules/video_capture:video_capture_module",
zhihuang38ede132017-06-15 19:52:32313 "../pc:rtc_pc_base",
ehmaldonadof6a861a2017-07-19 17:40:47314 "../rtc_base:rtc_base",
ehmaldonadof6a861a2017-07-19 17:40:47315 "../rtc_base:rtc_task_queue",
Anders Carlssona114c882018-01-04 14:10:22316 "../rtc_base:stringutils",
kjellanderc76dc952016-06-03 10:09:32317 "../system_wrappers",
Anders Carlssona114c882018-01-04 14:10:22318 "../system_wrappers:field_trial_api",
319 "../system_wrappers:metrics_api",
kjellanderc76dc952016-06-03 10:09:32320 "../voice_engine",
321 ]
322}
kjellander82a94492016-06-13 05:12:01323
zhihuang38ede132017-06-15 19:52:32324rtc_static_library("rtc_data") {
325 defines = []
326 deps = []
327
328 if (rtc_enable_sctp) {
329 sources = [
330 "sctp/sctptransport.cc",
331 "sctp/sctptransport.h",
332 "sctp/sctptransportinternal.h",
333 ]
Kári Tristan Helgason4d3e24a2017-12-01 14:26:41334 } else {
335 # libtool on mac does not like empty targets.
336 sources = [
Mirko Bonadei6c8e6662017-12-13 06:40:54337 "sctp/noop.cc",
Kári Tristan Helgason4d3e24a2017-12-01 14:26:41338 ]
zhihuang38ede132017-06-15 19:52:32339 }
340
341 configs += [ ":rtc_media_warnings_config" ]
342
343 if (!build_with_chromium && is_clang) {
344 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
345 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
346 }
347
348 if (is_win) {
349 cflags = [
350 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
351 "/wd4267", # conversion from "size_t" to "int", possible loss of data.
352 "/wd4389", # signed/unsigned mismatch.
353 ]
354 }
355
356 if (rtc_enable_sctp && rtc_build_usrsctp) {
357 include_dirs = [
358 # TODO(jiayl): move this into the public_configs of
359 # //third_party/usrsctp/BUILD.gn.
360 "//third_party/usrsctp/usrsctplib",
361 ]
362 deps += [ "//third_party/usrsctp" ]
363 }
364
365 deps += [
366 ":rtc_media_base",
367 "..:webrtc_common",
368 "../api:call_api",
369 "../api:transport_api",
zhihuang38ede132017-06-15 19:52:32370 "../p2p:rtc_p2p",
ehmaldonadof6a861a2017-07-19 17:40:47371 "../rtc_base:rtc_base",
372 "../rtc_base:rtc_base_approved",
zhihuang38ede132017-06-15 19:52:32373 "../system_wrappers",
374 ]
375}
376
377rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53378 visibility = [ "*" ]
Mirko Bonadei75baa492018-01-11 16:07:30379 deps = [
zhihuang38ede132017-06-15 19:52:32380 ":rtc_audio_video",
381 ":rtc_data",
382 ]
383}
384
kjellander82a94492016-06-13 05:12:01385if (rtc_include_tests) {
386 config("rtc_unittest_main_config") {
387 # GN orders flags on a target before flags from configs. The default config
388 # adds -Wall, and this flag have to be after -Wall -- so they need to
389 # come from a config and can"t be on the target directly.
390 if (is_clang && is_ios) {
391 cflags = [ "-Wno-unused-variable" ]
392 }
393 }
394
mbonadei9087d492017-04-25 07:35:35395 rtc_source_set("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01396 testonly = true
397
kjellanderec5c9062016-08-19 08:07:30398 include_dirs = []
kjellandera2ef4f92017-03-06 14:04:55399 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30400 ":rtc_audio_video",
Patrik Höglundbe214a22018-01-04 11:14:35401 "../api:libjingle_peerconnection_api",
Patrik Höglundb5b5bce2017-11-13 09:19:58402 "../api:video_frame_api_i420",
aleloi440b6d92017-08-22 12:43:23403 "../call:video_stream_api",
Patrik Höglundbe214a22018-01-04 11:14:35404 "../common_video:common_video",
kjellandera2ef4f92017-03-06 14:04:55405 "../modules/audio_coding:rent_a_codec",
406 "../modules/audio_processing:audio_processing",
Mirko Bonadeib5728d92017-12-06 06:51:33407 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10408 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08409 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 14:04:55410 "../p2p:rtc_p2p",
Patrik Höglunda8005cf2017-12-13 15:05:42411 "../rtc_base:checks",
Patrik Höglund3e113432017-12-15 13:40:10412 "../rtc_base:stringutils",
kjellandera2ef4f92017-03-06 14:04:55413 ]
kjellander82a94492016-06-13 05:12:01414 sources = [
415 "base/fakemediaengine.h",
416 "base/fakenetworkinterface.h",
jbauch5869f502017-06-29 19:31:36417 "base/fakertp.cc",
kjellander82a94492016-06-13 05:12:01418 "base/fakertp.h",
419 "base/fakevideocapturer.h",
420 "base/fakevideorenderer.h",
hbosb24b1ce2016-08-16 08:19:43421 "base/test/mock_mediachannel.h",
kjellander82a94492016-06-13 05:12:01422 "base/testutils.cc",
423 "base/testutils.h",
424 "engine/fakewebrtccall.cc",
425 "engine/fakewebrtccall.h",
kjellander82a94492016-06-13 05:12:01426 "engine/fakewebrtcdeviceinfo.h",
427 "engine/fakewebrtcvcmfactory.h",
428 "engine/fakewebrtcvideocapturemodule.h",
429 "engine/fakewebrtcvideoengine.h",
kjellander82a94492016-06-13 05:12:01430 ]
431
ehmaldonado7a2ce0b2016-09-05 08:35:44432 configs += [ ":rtc_unittest_main_config" ]
kjellander82a94492016-06-13 05:12:01433
kjellandere40a7ee2016-10-17 06:56:12434 if (!build_with_chromium && is_clang) {
435 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 11:10:34436 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander82a94492016-06-13 05:12:01437 }
438
439 deps += [
Anders Carlssona114c882018-01-04 14:10:22440 ":rtc_internal_video_codecs",
kjellandera2ef4f92017-03-06 14:04:55441 ":rtc_media",
442 ":rtc_media_base",
443 "..:webrtc_common",
444 "../api:call_api",
445 "../api:video_frame_api",
ilnikd60d06a2017-04-05 10:02:20446 "../api/video_codecs:video_codecs_api",
kjellandera2ef4f92017-03-06 14:04:55447 "../call:call_interfaces",
ehmaldonadof6a861a2017-07-19 17:40:47448 "../rtc_base:rtc_base",
449 "../rtc_base:rtc_base_approved",
450 "../rtc_base:rtc_base_tests_utils",
kjellandera2ef4f92017-03-06 14:04:55451 "../test:test_support",
Mirko Bonadei75baa492018-01-11 16:07:30452 "//testing/gmock",
kjellander82a94492016-06-13 05:12:01453 "//testing/gtest",
454 ]
kjellander82a94492016-06-13 05:12:01455 }
456
457 config("rtc_media_unittests_config") {
458 # GN orders flags on a target before flags from configs. The default config
459 # adds -Wall, and this flag have to be after -Wall -- so they need to
460 # come from a config and can"t be on the target directly.
461 # TODO(kjellander): Make the code compile without disabling these flags.
462 # See https://bugs.webrtc.org/3307.
463 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 20:31:24464 cflags = [
465 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6266
466 # for -Wno-sign-compare
467 "-Wno-sign-compare",
ehmaldonadod02fe4b2016-08-26 20:31:24468 ]
kjellander82a94492016-06-13 05:12:01469 }
470 if (!is_win) {
471 cflags = [ "-Wno-sign-compare" ]
kjellander82a94492016-06-13 05:12:01472 }
473 }
474
ehmaldonado3a7f35b2016-09-14 12:10:01475 rtc_media_unittests_resources = [
Mirko Bonadei92ea95e2017-09-15 04:47:31476 "../resources/media/captured-320x240-2s-48.frames",
477 "../resources/media/faces.1280x720_P420.yuv",
478 "../resources/media/faces_I420.jpg",
479 "../resources/media/faces_I422.jpg",
480 "../resources/media/faces_I444.jpg",
481 "../resources/media/faces_I411.jpg",
482 "../resources/media/faces_I400.jpg",
ehmaldonado3a7f35b2016-09-14 12:10:01483 ]
kjellander32c4a202016-08-30 09:53:49484
485 if (is_ios) {
486 bundle_data("rtc_media_unittests_bundle_data") {
487 testonly = true
488 sources = rtc_media_unittests_resources
489 outputs = [
490 "{{bundle_resources_dir}}/{{source_file_part}}",
491 ]
492 }
493 }
494
ehmaldonado38a21322016-09-02 11:10:34495 rtc_test("rtc_media_unittests") {
kjellander82a94492016-06-13 05:12:01496 testonly = true
497
johan073ece42016-08-26 09:59:47498 defines = []
kjellandera2ef4f92017-03-06 14:04:55499 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30500 ":rtc_audio_video",
Anders Carlssona114c882018-01-04 14:10:22501 ":rtc_constants",
Mirko Bonadei75baa492018-01-11 16:07:30502 ":rtc_data",
Patrik Höglundb5b5bce2017-11-13 09:19:58503 "../api:video_frame_api_i420",
Patrik Höglund62139292017-12-19 15:44:45504 "../modules/audio_processing:mocks",
Patrik Höglund99175c62018-01-08 10:05:10505 "../modules/video_coding:video_codec_interface",
kjellandera2ef4f92017-03-06 14:04:55506 "../pc:rtc_pc",
Mirko Bonadeie51f7852017-12-06 10:23:19507 "../pc:rtc_pc_base",
Patrik Höglunda8005cf2017-12-13 15:05:42508 "../rtc_base:checks",
Patrik Höglund3e113432017-12-15 13:40:10509 "../rtc_base:stringutils",
kjellandera2ef4f92017-03-06 14:04:55510 "../test:field_trial",
511 ]
kjellander82a94492016-06-13 05:12:01512 sources = [
513 "base/codec_unittest.cc",
514 "base/rtpdataengine_unittest.cc",
kjellander82a94492016-06-13 05:12:01515 "base/rtputils_unittest.cc",
516 "base/streamparams_unittest.cc",
517 "base/turnutils_unittest.cc",
518 "base/videoadapter_unittest.cc",
519 "base/videobroadcaster_unittest.cc",
520 "base/videocapturer_unittest.cc",
521 "base/videocommon_unittest.cc",
522 "base/videoengine_unittest.h",
solenberg76377c52017-02-21 08:54:31523 "engine/apm_helpers_unittest.cc",
magjeddd407022016-12-01 08:27:27524 "engine/internaldecoderfactory_unittest.cc",
kjellander82a94492016-06-13 05:12:01525 "engine/nullwebrtcvideoengine_unittest.cc",
ossuc54071d2016-08-17 09:45:41526 "engine/payload_type_mapper_unittest.cc",
magjed6cc25612017-07-10 10:26:36527 "engine/simulcast_encoder_adapter_unittest.cc",
kjellander82a94492016-06-13 05:12:01528 "engine/simulcast_unittest.cc",
Emircan Uysaler0a375472017-12-11 06:51:02529 "engine/stereocodecfactory_unittest.cc",
magjedf6acc2a2016-11-22 09:43:03530 "engine/videodecodersoftwarefallbackwrapper_unittest.cc",
magjed614d5b72016-11-15 14:30:54531 "engine/videoencodersoftwarefallbackwrapper_unittest.cc",
Ilya Nikolaevskiyc22a3a6a2017-10-25 08:04:54532 "engine/vp8_encoder_simulcast_proxy_unittest.cc",
kjellander82a94492016-06-13 05:12:01533 "engine/webrtcmediaengine_unittest.cc",
534 "engine/webrtcvideocapturer_unittest.cc",
noahricbe850e12017-01-20 09:07:26535 "engine/webrtcvideoencoderfactory_unittest.cc",
eladalonf1841382017-06-12 08:16:46536 "engine/webrtcvideoengine_unittest.cc",
kjellander82a94492016-06-13 05:12:01537 ]
538
oprypin45197522017-06-22 08:47:20539 # TODO(kthelgason): Reenable this test on iOS.
540 # See bugs.webrtc.org/5569
541 if (!is_ios) {
542 sources += [ "engine/webrtcvoiceengine_unittest.cc" ]
543 }
544
deadbeef40610e22016-12-22 18:53:38545 if (rtc_enable_sctp) {
deadbeef953c2ce2017-01-09 22:53:41546 sources += [ "sctp/sctptransport_unittest.cc" ]
deadbeef40610e22016-12-22 18:53:38547 }
548
ehmaldonado7a2ce0b2016-09-05 08:35:44549 configs += [ ":rtc_media_unittests_config" ]
kjellander82a94492016-06-13 05:12:01550
johan073ece42016-08-26 09:59:47551 if (rtc_use_h264) {
552 defines += [ "WEBRTC_USE_H264" ]
553 }
ossu11bfc532017-02-16 13:37:06554
555 if (rtc_opus_support_120ms_ptime) {
556 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
557 } else {
558 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
559 }
560
kjellander82a94492016-06-13 05:12:01561 if (is_win) {
562 cflags = [
563 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
564 "/wd4373", # virtual function override.
565 "/wd4389", # signed/unsigned mismatch.
566 ]
567 }
568
kjellandere40a7ee2016-10-17 06:56:12569 if (!build_with_chromium && is_clang) {
ehmaldonado38a21322016-09-02 11:10:34570 suppressed_configs += [
kjellander82a94492016-06-13 05:12:01571 "//build/config/clang:extra_warnings",
kjellandere40a7ee2016-10-17 06:56:12572
573 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellander82a94492016-06-13 05:12:01574 "//build/config/clang:find_bad_constructs",
575 ]
576 }
577
ehmaldonado3a7f35b2016-09-14 12:10:01578 data = rtc_media_unittests_resources
579
kjellander82a94492016-06-13 05:12:01580 if (is_android) {
581 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 14:48:42582 shard_timeout = 900
583 }
kjellander32c4a202016-08-30 09:53:49584
585 if (is_ios) {
586 deps += [ ":rtc_media_unittests_bundle_data" ]
kjellander82a94492016-06-13 05:12:01587 }
588
589 deps += [
Anders Carlssona114c882018-01-04 14:10:22590 ":rtc_internal_video_codecs",
kjellander82a94492016-06-13 05:12:01591 ":rtc_media",
kjellandera2ef4f92017-03-06 14:04:55592 ":rtc_media_base",
mbonadei9087d492017-04-25 07:35:35593 ":rtc_media_tests_utils",
Seth Hampson24722b32017-12-22 17:36:42594 "../api:libjingle_peerconnection_api",
Emircan Uysalerdbcac7f2017-10-31 06:10:12595 "../api:mock_video_codec_factory",
kjellandera2ef4f92017-03-06 14:04:55596 "../api:video_frame_api",
597 "../api/audio_codecs:builtin_audio_decoder_factory",
ossueb1fde42017-05-02 13:46:30598 "../api/audio_codecs:builtin_audio_encoder_factory",
ilnikd60d06a2017-04-05 10:02:20599 "../api/video_codecs:video_codecs_api",
kjellander82a94492016-06-13 05:12:01600 "../audio",
kjellandera2ef4f92017-03-06 14:04:55601 "../call:call_interfaces",
602 "../common_video:common_video",
603 "../logging:rtc_event_log_api",
aleloi5de52fd2016-11-10 09:05:34604 "../modules/audio_device:mock_audio_device",
kjellandera2ef4f92017-03-06 14:04:55605 "../modules/audio_processing:audio_processing",
magjed6cc25612017-07-10 10:26:36606 "../modules/video_coding:simulcast_test_utility",
kjellandera2ef4f92017-03-06 14:04:55607 "../modules/video_coding:video_coding_utility",
608 "../modules/video_coding:webrtc_vp8",
Anders Carlssona114c882018-01-04 14:10:22609 "../modules/video_coding:webrtc_vp8_helpers",
deadbeef59edb922017-04-18 22:49:09610 "../p2p:p2p_test_utils",
ehmaldonadof6a861a2017-07-19 17:40:47611 "../rtc_base:rtc_base",
612 "../rtc_base:rtc_base_approved",
613 "../rtc_base:rtc_base_tests_main",
614 "../rtc_base:rtc_base_tests_utils",
kjellander82a94492016-06-13 05:12:01615 "../system_wrappers:metrics_default",
kwiberg37e99fd2017-04-10 12:15:48616 "../test:audio_codec_mocks",
kjellandera2ef4f92017-03-06 14:04:55617 "../test:test_support",
Ilya Nikolaevskiyc22a3a6a2017-10-25 08:04:54618 "../test:video_test_common",
kjellandera2ef4f92017-03-06 14:04:55619 "../voice_engine:voice_engine",
kjellander82a94492016-06-13 05:12:01620 ]
621 }
622}