xref: /aosp_15_r20/external/webrtc/media/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1# 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")
10import("//third_party/libaom/options.gni")
11import("../webrtc.gni")
12
13group("media") {
14  deps = []
15  if (!build_with_mozilla) {
16    deps += [
17      ":rtc_media",
18      ":rtc_media_base",
19    ]
20  }
21}
22
23config("rtc_media_defines_config") {
24  defines = [ "HAVE_WEBRTC_VIDEO" ]
25}
26
27rtc_source_set("rtc_media_config") {
28  visibility = [ "*" ]
29  sources = [ "base/media_config.h" ]
30}
31
32rtc_library("rtc_sdp_video_format_utils") {
33  visibility = [ "*" ]
34  sources = [
35    "base/sdp_video_format_utils.cc",
36    "base/sdp_video_format_utils.h",
37  ]
38
39  deps = [
40    "../api/video_codecs:video_codecs_api",
41    "../rtc_base:checks",
42    "../rtc_base:stringutils",
43  ]
44  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
45}
46
47rtc_library("rtc_media_base") {
48  visibility = [ "*" ]
49  defines = []
50  libs = []
51  deps = [
52    ":rtc_media_config",
53    "../api:array_view",
54    "../api:audio_options_api",
55    "../api:field_trials_view",
56    "../api:frame_transformer_interface",
57    "../api:media_stream_interface",
58    "../api:rtc_error",
59    "../api:rtp_parameters",
60    "../api:rtp_sender_interface",
61    "../api:scoped_refptr",
62    "../api:sequence_checker",
63    "../api/audio:audio_frame_processor",
64    "../api/audio_codecs:audio_codecs_api",
65    "../api/crypto:frame_decryptor_interface",
66    "../api/crypto:frame_encryptor_interface",
67    "../api/crypto:options",
68    "../api/task_queue:pending_task_safety_flag",
69    "../api/transport:datagram_transport_interface",
70    "../api/transport:stun_types",
71    "../api/transport/rtp:rtp_source",
72    "../api/units:time_delta",
73    "../api/video:video_bitrate_allocation",
74    "../api/video:video_bitrate_allocator_factory",
75    "../api/video:video_frame",
76    "../api/video:video_rtp_headers",
77    "../api/video_codecs:video_codecs_api",
78    "../call:call_interfaces",
79    "../call:video_stream_api",
80    "../common_video",
81    "../modules/async_audio_processing",
82    "../modules/audio_processing:audio_processing_statistics",
83    "../modules/rtp_rtcp:rtp_rtcp_format",
84    "../rtc_base",
85    "../rtc_base:buffer",
86    "../rtc_base:byte_order",
87    "../rtc_base:checks",
88    "../rtc_base:copy_on_write_buffer",
89    "../rtc_base:logging",
90    "../rtc_base:macromagic",
91    "../rtc_base:rtc_task_queue",
92    "../rtc_base:sanitizer",
93    "../rtc_base:socket",
94    "../rtc_base:stringutils",
95    "../rtc_base:timeutils",
96    "../rtc_base/synchronization:mutex",
97    "../rtc_base/system:file_wrapper",
98    "../rtc_base/system:no_unique_address",
99    "../rtc_base/system:rtc_export",
100    "../rtc_base/third_party/sigslot",
101    "../system_wrappers:field_trial",
102    "../video/config:encoder_config",
103  ]
104  absl_deps = [
105    "//third_party/abseil-cpp/absl/algorithm:container",
106    "//third_party/abseil-cpp/absl/container:inlined_vector",
107    "//third_party/abseil-cpp/absl/strings",
108    "//third_party/abseil-cpp/absl/types:optional",
109  ]
110  sources = [
111    "base/adapted_video_track_source.cc",
112    "base/adapted_video_track_source.h",
113    "base/audio_source.h",
114    "base/codec.cc",
115    "base/codec.h",
116    "base/delayable.h",
117    "base/media_channel.cc",
118    "base/media_channel.h",
119    "base/media_constants.cc",
120    "base/media_constants.h",
121    "base/media_engine.cc",
122    "base/media_engine.h",
123    "base/rid_description.cc",
124    "base/rid_description.h",
125    "base/rtp_utils.cc",
126    "base/rtp_utils.h",
127    "base/stream_params.cc",
128    "base/stream_params.h",
129    "base/turn_utils.cc",
130    "base/turn_utils.h",
131    "base/video_adapter.cc",
132    "base/video_adapter.h",
133    "base/video_broadcaster.cc",
134    "base/video_broadcaster.h",
135    "base/video_common.cc",
136    "base/video_common.h",
137    "base/video_source_base.cc",
138    "base/video_source_base.h",
139  ]
140}
141
142rtc_library("rtc_simulcast_encoder_adapter") {
143  visibility = [ "*" ]
144  defines = []
145  libs = []
146  sources = [
147    "engine/simulcast_encoder_adapter.cc",
148    "engine/simulcast_encoder_adapter.h",
149  ]
150  deps = [
151    ":rtc_media_base",
152    "../api:fec_controller_api",
153    "../api:scoped_refptr",
154    "../api:sequence_checker",
155    "../api/video:video_codec_constants",
156    "../api/video:video_frame",
157    "../api/video:video_rtp_headers",
158    "../api/video_codecs:rtc_software_fallback_wrappers",
159    "../api/video_codecs:video_codecs_api",
160    "../call:video_stream_api",
161    "../common_video",
162    "../modules/video_coding:video_codec_interface",
163    "../modules/video_coding:video_coding_utility",
164    "../rtc_base:checks",
165    "../rtc_base:logging",
166    "../rtc_base/experiments:encoder_info_settings",
167    "../rtc_base/experiments:rate_control_settings",
168    "../rtc_base/system:no_unique_address",
169    "../rtc_base/system:rtc_export",
170    "../system_wrappers",
171    "../system_wrappers:field_trial",
172  ]
173  absl_deps = [
174    "//third_party/abseil-cpp/absl/algorithm:container",
175    "//third_party/abseil-cpp/absl/types:optional",
176  ]
177}
178
179rtc_library("rtc_encoder_simulcast_proxy") {
180  visibility = [ "*" ]
181  defines = []
182  libs = []
183  sources = [
184    "engine/encoder_simulcast_proxy.cc",
185    "engine/encoder_simulcast_proxy.h",
186  ]
187  deps = [
188    ":rtc_simulcast_encoder_adapter",
189    "../api/video:video_bitrate_allocation",
190    "../api/video:video_frame",
191    "../api/video:video_rtp_headers",
192    "../api/video_codecs:video_codecs_api",
193    "../modules/video_coding:video_codec_interface",
194    "../rtc_base/system:rtc_export",
195  ]
196}
197
198rtc_library("rtc_internal_video_codecs") {
199  visibility = [ "*" ]
200  allow_poison = [ "software_video_codecs" ]
201  defines = []
202  libs = []
203  deps = [
204    ":rtc_encoder_simulcast_proxy",
205    ":rtc_media_base",
206    ":rtc_simulcast_encoder_adapter",
207    "../api/video:encoded_image",
208    "../api/video:video_bitrate_allocation",
209    "../api/video:video_frame",
210    "../api/video:video_rtp_headers",
211    "../api/video_codecs:rtc_software_fallback_wrappers",
212    "../api/video_codecs:video_codecs_api",
213    "../api/video_codecs:video_encoder_factory_template",
214    "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
215    "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
216    "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
217    "../call:call_interfaces",
218    "../call:video_stream_api",
219    "../modules/video_coding:video_codec_interface",
220    "../modules/video_coding:webrtc_h264",
221    "../modules/video_coding:webrtc_multiplex",
222    "../modules/video_coding:webrtc_vp8",
223    "../modules/video_coding:webrtc_vp9",
224    "../rtc_base:checks",
225    "../rtc_base:logging",
226    "../rtc_base/system:rtc_export",
227    "../system_wrappers:field_trial",
228    "../test:fake_video_codecs",
229  ]
230
231  if (enable_libaom) {
232    defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
233    deps += [
234      "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
235    ]
236  }
237
238  if (rtc_include_dav1d_in_internal_decoder_factory) {
239    deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
240  }
241  absl_deps = [
242    "//third_party/abseil-cpp/absl/strings",
243    "//third_party/abseil-cpp/absl/types:optional",
244  ]
245  sources = [
246    "engine/fake_video_codec_factory.cc",
247    "engine/fake_video_codec_factory.h",
248    "engine/internal_decoder_factory.cc",
249    "engine/internal_decoder_factory.h",
250    "engine/internal_encoder_factory.cc",
251    "engine/internal_encoder_factory.h",
252    "engine/multiplex_codec_factory.cc",
253    "engine/multiplex_codec_factory.h",
254
255    # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
256    # targets depend on :rtc_encoder_simulcast_proxy directly.
257    "engine/encoder_simulcast_proxy.h",
258  ]
259}
260
261rtc_library("rtc_audio_video") {
262  visibility = [ "*" ]
263  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
264  defines = []
265  libs = []
266  deps = [
267    ":rtc_media_base",
268    "../api:array_view",
269    "../api:call_api",
270    "../api:field_trials_view",
271    "../api:libjingle_peerconnection_api",
272    "../api:media_stream_interface",
273    "../api:rtp_parameters",
274    "../api:scoped_refptr",
275    "../api:sequence_checker",
276    "../api:transport_api",
277    "../api/audio:audio_frame_processor",
278    "../api/audio:audio_mixer_api",
279    "../api/audio_codecs:audio_codecs_api",
280    "../api/task_queue",
281    "../api/task_queue:pending_task_safety_flag",
282    "../api/transport:bitrate_settings",
283    "../api/transport:field_trial_based_config",
284    "../api/transport/rtp:rtp_source",
285    "../api/units:data_rate",
286    "../api/video:video_bitrate_allocation",
287    "../api/video:video_bitrate_allocator_factory",
288    "../api/video:video_codec_constants",
289    "../api/video:video_frame",
290    "../api/video:video_rtp_headers",
291    "../api/video_codecs:rtc_software_fallback_wrappers",
292    "../api/video_codecs:video_codecs_api",
293    "../call",
294    "../call:call_interfaces",
295    "../call:video_stream_api",
296    "../common_video",
297    "../modules/async_audio_processing:async_audio_processing",
298    "../modules/audio_device",
299    "../modules/audio_device:audio_device_impl",
300    "../modules/audio_mixer:audio_mixer_impl",
301    "../modules/audio_processing:api",
302    "../modules/audio_processing/aec_dump",
303    "../modules/audio_processing/agc:gain_control_interface",
304    "../modules/rtp_rtcp:rtp_rtcp_format",
305    "../modules/video_coding",
306    "../modules/video_coding:video_codec_interface",
307    "../modules/video_coding:video_coding_utility",
308    "../modules/video_coding:webrtc_vp9_helpers",
309    "../modules/video_coding/svc:scalability_mode_util",
310    "../rtc_base",
311    "../rtc_base:audio_format_to_string",
312    "../rtc_base:buffer",
313    "../rtc_base:byte_order",
314    "../rtc_base:checks",
315    "../rtc_base:copy_on_write_buffer",
316    "../rtc_base:event_tracer",
317    "../rtc_base:ignore_wundef",
318    "../rtc_base:logging",
319    "../rtc_base:macromagic",
320    "../rtc_base:race_checker",
321    "../rtc_base:rtc_task_queue",
322    "../rtc_base:safe_conversions",
323    "../rtc_base:stringutils",
324    "../rtc_base:threading",
325    "../rtc_base:timeutils",
326    "../rtc_base/experiments:field_trial_parser",
327    "../rtc_base/experiments:min_video_bitrate_experiment",
328    "../rtc_base/experiments:normalize_simulcast_size_experiment",
329    "../rtc_base/experiments:rate_control_settings",
330    "../rtc_base/synchronization:mutex",
331    "../rtc_base/system:no_unique_address",
332    "../rtc_base/system:rtc_export",
333    "../rtc_base/third_party/base64",
334    "../system_wrappers",
335    "../system_wrappers:metrics",
336  ]
337  absl_deps = [
338    "//third_party/abseil-cpp/absl/algorithm:container",
339    "//third_party/abseil-cpp/absl/strings",
340    "//third_party/abseil-cpp/absl/types:optional",
341  ]
342
343  sources = [
344    "engine/adm_helpers.cc",
345    "engine/adm_helpers.h",
346    "engine/null_webrtc_video_engine.h",
347    "engine/payload_type_mapper.cc",
348    "engine/payload_type_mapper.h",
349    "engine/unhandled_packets_buffer.cc",
350    "engine/unhandled_packets_buffer.h",
351    "engine/webrtc_media_engine.cc",
352    "engine/webrtc_media_engine.h",
353    "engine/webrtc_video_engine.cc",
354    "engine/webrtc_video_engine.h",
355    "engine/webrtc_voice_engine.cc",
356    "engine/webrtc_voice_engine.h",
357  ]
358
359  public_configs = []
360  if (!build_with_chromium) {
361    public_configs += [ ":rtc_media_defines_config" ]
362    deps += [ "../modules/video_capture:video_capture_internal_impl" ]
363  }
364  if (rtc_enable_protobuf) {
365    deps += [
366      "../modules/audio_coding:ana_config_proto",
367      "../modules/audio_processing/aec_dump:aec_dump_impl",
368    ]
369  } else {
370    deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
371  }
372}
373
374# Heavy but optional helper for unittests and webrtc users who prefer to use
375# defaults factories or do not worry about extra dependencies and binary size.
376rtc_library("rtc_media_engine_defaults") {
377  visibility = [ "*" ]
378  allow_poison = [
379    "audio_codecs",
380    "default_task_queue",
381    "software_video_codecs",
382  ]
383  sources = [
384    "engine/webrtc_media_engine_defaults.cc",
385    "engine/webrtc_media_engine_defaults.h",
386  ]
387  deps = [
388    ":rtc_audio_video",
389    "../api/audio_codecs:builtin_audio_decoder_factory",
390    "../api/audio_codecs:builtin_audio_encoder_factory",
391    "../api/task_queue:default_task_queue_factory",
392    "../api/video:builtin_video_bitrate_allocator_factory",
393    "../api/video_codecs:builtin_video_decoder_factory",
394    "../api/video_codecs:builtin_video_encoder_factory",
395    "../modules/audio_processing:api",
396    "../rtc_base:checks",
397    "../rtc_base/system:rtc_export",
398  ]
399}
400
401rtc_source_set("rtc_data_sctp_transport_internal") {
402  sources = [ "sctp/sctp_transport_internal.h" ]
403  deps = [
404    "../api/transport:datagram_transport_interface",
405    "../media:rtc_media_base",
406    "../p2p:rtc_p2p",
407    "../rtc_base:copy_on_write_buffer",
408    "../rtc_base:threading",
409  ]
410}
411
412if (rtc_build_dcsctp) {
413  rtc_library("rtc_data_dcsctp_transport") {
414    sources = [
415      "sctp/dcsctp_transport.cc",
416      "sctp/dcsctp_transport.h",
417    ]
418    deps = [
419      ":rtc_data_sctp_transport_internal",
420      "../api:array_view",
421      "../api/task_queue:pending_task_safety_flag",
422      "../api/task_queue:task_queue",
423      "../media:rtc_media_base",
424      "../net/dcsctp/public:factory",
425      "../net/dcsctp/public:socket",
426      "../net/dcsctp/public:types",
427      "../net/dcsctp/public:utils",
428      "../net/dcsctp/timer:task_queue_timeout",
429      "../p2p:rtc_p2p",
430      "../rtc_base:checks",
431      "../rtc_base:copy_on_write_buffer",
432      "../rtc_base:event_tracer",
433      "../rtc_base:logging",
434      "../rtc_base:macromagic",
435      "../rtc_base:random",
436      "../rtc_base:socket",
437      "../rtc_base:stringutils",
438      "../rtc_base:threading",
439      "../rtc_base/containers:flat_map",
440      "../rtc_base/third_party/sigslot:sigslot",
441      "../system_wrappers",
442    ]
443    absl_deps += [
444      "//third_party/abseil-cpp/absl/strings:strings",
445      "//third_party/abseil-cpp/absl/types:optional",
446    ]
447  }
448}
449
450rtc_library("rtc_data_sctp_transport_factory") {
451  defines = []
452  sources = [
453    "sctp/sctp_transport_factory.cc",
454    "sctp/sctp_transport_factory.h",
455  ]
456  deps = [
457    ":rtc_data_sctp_transport_internal",
458    "../api/transport:sctp_transport_factory_interface",
459    "../rtc_base:threading",
460    "../rtc_base/system:unused",
461  ]
462
463  if (rtc_enable_sctp) {
464    assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
465  }
466
467  if (rtc_build_dcsctp) {
468    defines += [ "WEBRTC_HAVE_DCSCTP" ]
469    deps += [
470      ":rtc_data_dcsctp_transport",
471      "../system_wrappers",
472      "../system_wrappers:field_trial",
473    ]
474  }
475}
476
477rtc_source_set("rtc_media") {
478  visibility = [ "*" ]
479  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
480  deps = [ ":rtc_audio_video" ]
481}
482
483if (rtc_include_tests) {
484  rtc_library("rtc_media_tests_utils") {
485    testonly = true
486
487    defines = []
488    deps = [
489      ":rtc_audio_video",
490      ":rtc_internal_video_codecs",
491      ":rtc_media",
492      ":rtc_media_base",
493      ":rtc_simulcast_encoder_adapter",
494      "../api:call_api",
495      "../api:fec_controller_api",
496      "../api:scoped_refptr",
497      "../api/task_queue",
498      "../api/task_queue:pending_task_safety_flag",
499      "../api/transport:field_trial_based_config",
500      "../api/video:encoded_image",
501      "../api/video:video_bitrate_allocation",
502      "../api/video:video_frame",
503      "../api/video:video_rtp_headers",
504      "../api/video_codecs:video_codecs_api",
505      "../call:call_interfaces",
506      "../call:mock_rtp_interfaces",
507      "../call:video_stream_api",
508      "../common_video",
509      "../modules/audio_processing",
510      "../modules/audio_processing:api",
511      "../modules/rtp_rtcp:rtp_rtcp_format",
512      "../modules/video_coding:video_codec_interface",
513      "../modules/video_coding:video_coding_utility",
514      "../p2p:rtc_p2p",
515      "../rtc_base",
516      "../rtc_base:buffer",
517      "../rtc_base:byte_order",
518      "../rtc_base:checks",
519      "../rtc_base:copy_on_write_buffer",
520      "../rtc_base:gunit_helpers",
521      "../rtc_base:macromagic",
522      "../rtc_base:rtc_event",
523      "../rtc_base:rtc_task_queue",
524      "../rtc_base:stringutils",
525      "../rtc_base:threading",
526      "../rtc_base:timeutils",
527      "../rtc_base/synchronization:mutex",
528      "../rtc_base/third_party/sigslot",
529      "../test:scoped_key_value_config",
530      "../test:test_support",
531      "../video/config:streams_config",
532      "//testing/gtest",
533    ]
534    absl_deps = [
535      "//third_party/abseil-cpp/absl/algorithm:container",
536      "//third_party/abseil-cpp/absl/strings",
537    ]
538    sources = [
539      "base/fake_frame_source.cc",
540      "base/fake_frame_source.h",
541      "base/fake_media_engine.cc",
542      "base/fake_media_engine.h",
543      "base/fake_network_interface.h",
544      "base/fake_rtp.cc",
545      "base/fake_rtp.h",
546      "base/fake_video_renderer.cc",
547      "base/fake_video_renderer.h",
548      "base/test_utils.cc",
549      "base/test_utils.h",
550      "engine/fake_webrtc_call.cc",
551      "engine/fake_webrtc_call.h",
552      "engine/fake_webrtc_video_engine.cc",
553      "engine/fake_webrtc_video_engine.h",
554    ]
555  }
556
557  if (!build_with_chromium) {
558    rtc_media_unittests_resources = [
559      "../resources/media/captured-320x240-2s-48.frames",
560      "../resources/media/faces.1280x720_P420.yuv",
561      "../resources/media/faces_I400.jpg",
562      "../resources/media/faces_I411.jpg",
563      "../resources/media/faces_I420.jpg",
564      "../resources/media/faces_I422.jpg",
565      "../resources/media/faces_I444.jpg",
566    ]
567
568    if (is_ios) {
569      bundle_data("rtc_media_unittests_bundle_data") {
570        testonly = true
571        sources = rtc_media_unittests_resources
572        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
573      }
574    }
575
576    rtc_test("rtc_media_unittests") {
577      testonly = true
578
579      defines = []
580      deps = [
581        ":rtc_audio_video",
582        ":rtc_encoder_simulcast_proxy",
583        ":rtc_internal_video_codecs",
584        ":rtc_media",
585        ":rtc_media_base",
586        ":rtc_media_engine_defaults",
587        ":rtc_media_tests_utils",
588        ":rtc_sdp_video_format_utils",
589        ":rtc_simulcast_encoder_adapter",
590        "../api:create_simulcast_test_fixture_api",
591        "../api:libjingle_peerconnection_api",
592        "../api:mock_encoder_selector",
593        "../api:mock_video_bitrate_allocator",
594        "../api:mock_video_bitrate_allocator_factory",
595        "../api:mock_video_codec_factory",
596        "../api:mock_video_encoder",
597        "../api:rtp_parameters",
598        "../api:scoped_refptr",
599        "../api:simulcast_test_fixture_api",
600        "../api/audio_codecs:builtin_audio_decoder_factory",
601        "../api/audio_codecs:builtin_audio_encoder_factory",
602        "../api/rtc_event_log",
603        "../api/task_queue",
604        "../api/task_queue:default_task_queue_factory",
605        "../api/test/video:function_video_factory",
606        "../api/transport:field_trial_based_config",
607        "../api/units:time_delta",
608        "../api/units:timestamp",
609        "../api/video:builtin_video_bitrate_allocator_factory",
610        "../api/video:resolution",
611        "../api/video:video_bitrate_allocation",
612        "../api/video:video_codec_constants",
613        "../api/video:video_frame",
614        "../api/video:video_rtp_headers",
615        "../api/video_codecs:builtin_video_decoder_factory",
616        "../api/video_codecs:builtin_video_encoder_factory",
617        "../api/video_codecs:video_codecs_api",
618        "../audio",
619        "../call:call_interfaces",
620        "../common_video",
621        "../modules/audio_device:mock_audio_device",
622        "../modules/audio_mixer:audio_mixer_impl",
623        "../modules/audio_processing",
624        "../modules/audio_processing:api",
625        "../modules/audio_processing:mocks",
626        "../modules/rtp_rtcp",
627        "../modules/rtp_rtcp:rtp_rtcp_format",
628        "../modules/video_coding:simulcast_test_fixture_impl",
629        "../modules/video_coding:video_codec_interface",
630        "../modules/video_coding:webrtc_h264",
631        "../modules/video_coding:webrtc_vp8",
632        "../p2p:p2p_test_utils",
633        "../rtc_base",
634        "../rtc_base:byte_order",
635        "../rtc_base:checks",
636        "../rtc_base:gunit_helpers",
637        "../rtc_base:logging",
638        "../rtc_base:macromagic",
639        "../rtc_base:rtc_base_tests_utils",
640        "../rtc_base:rtc_event",
641        "../rtc_base:rtc_task_queue",
642        "../rtc_base:safe_conversions",
643        "../rtc_base:stringutils",
644        "../rtc_base:threading",
645        "../rtc_base:timeutils",
646        "../rtc_base/experiments:min_video_bitrate_experiment",
647        "../rtc_base/synchronization:mutex",
648        "../rtc_base/third_party/sigslot",
649        "../system_wrappers:field_trial",
650        "../test:audio_codec_mocks",
651        "../test:fake_video_codecs",
652        "../test:field_trial",
653        "../test:rtp_test_utils",
654        "../test:scoped_key_value_config",
655        "../test:test_main",
656        "../test:test_support",
657        "../test:video_test_common",
658        "../test/time_controller",
659        "../video/config:streams_config",
660      ]
661
662      if (enable_libaom) {
663        defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
664      }
665
666      absl_deps = [
667        "//third_party/abseil-cpp/absl/algorithm:container",
668        "//third_party/abseil-cpp/absl/memory",
669        "//third_party/abseil-cpp/absl/strings",
670        "//third_party/abseil-cpp/absl/types:optional",
671      ]
672      sources = [
673        "base/codec_unittest.cc",
674        "base/media_engine_unittest.cc",
675        "base/rtp_utils_unittest.cc",
676        "base/sdp_video_format_utils_unittest.cc",
677        "base/stream_params_unittest.cc",
678        "base/turn_utils_unittest.cc",
679        "base/video_adapter_unittest.cc",
680        "base/video_broadcaster_unittest.cc",
681        "base/video_common_unittest.cc",
682        "engine/encoder_simulcast_proxy_unittest.cc",
683        "engine/internal_decoder_factory_unittest.cc",
684        "engine/internal_encoder_factory_unittest.cc",
685        "engine/multiplex_codec_factory_unittest.cc",
686        "engine/null_webrtc_video_engine_unittest.cc",
687        "engine/payload_type_mapper_unittest.cc",
688        "engine/simulcast_encoder_adapter_unittest.cc",
689        "engine/unhandled_packets_buffer_unittest.cc",
690        "engine/webrtc_media_engine_unittest.cc",
691        "engine/webrtc_video_engine_unittest.cc",
692      ]
693
694      # TODO(kthelgason): Reenable this test on iOS.
695      # See bugs.webrtc.org/5569
696      if (!is_ios) {
697        sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
698      }
699
700      if (rtc_opus_support_120ms_ptime) {
701        defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
702      } else {
703        defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
704      }
705
706      data = rtc_media_unittests_resources
707
708      if (is_android) {
709        deps += [ "//testing/android/native_test:native_test_support" ]
710        shard_timeout = 900
711      }
712
713      if (is_ios) {
714        deps += [ ":rtc_media_unittests_bundle_data" ]
715      }
716
717      if (rtc_build_dcsctp) {
718        sources += [ "sctp/dcsctp_transport_unittest.cc" ]
719        deps += [
720          ":rtc_data_dcsctp_transport",
721          "../net/dcsctp/public:factory",
722          "../net/dcsctp/public:mocks",
723          "../net/dcsctp/public:socket",
724        ]
725      }
726    }
727  }
728}
729