blob: b9d92089afdb41a4483ceb8fa1e8d7812b5a6542 [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") {
Fredrik Solenberge1dcce22019-02-05 11:43:0323 defines = [ "HAVE_WEBRTC_VIDEO" ]
kjellanderc76dc952016-06-03 10:09:3224}
25
Niels Möller6daa2782018-01-23 09:37:4226rtc_source_set("rtc_media_config") {
27 visibility = [ "*" ]
Mirko Bonadeiccbe95f2020-01-21 11:10:1028 sources = [ "base/media_config.h" ]
Niels Möller6daa2782018-01-23 09:37:4229}
30
Johannes Kronc3fcee72021-04-19 07:09:2631rtc_library("rtc_sdp_video_format_utils") {
Johannes Kronc8f31342019-12-19 14:05:2032 visibility = [ "*" ]
33 sources = [
Johannes Kronc3fcee72021-04-19 07:09:2634 "base/sdp_video_format_utils.cc",
35 "base/sdp_video_format_utils.h",
Johannes Kronc8f31342019-12-19 14:05:2036 ]
37
38 deps = [
39 "../api/video_codecs:video_codecs_api",
Johannes Kronc3fcee72021-04-19 07:09:2640 "../rtc_base:checks",
Johannes Kronc8f31342019-12-19 14:05:2041 "../rtc_base:stringutils",
Johannes Kronc8f31342019-12-19 14:05:2042 ]
Mirko Bonadei2dcf3482020-06-05 12:30:4143 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
Johannes Kronc8f31342019-12-19 14:05:2044}
45
Mirko Bonadei86d053c2019-10-17 19:32:0446rtc_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:5347 visibility = [ "*" ]
kjellanderc76dc952016-06-03 10:09:3248 defines = []
49 libs = []
Patrik Höglunda8005cf2017-12-13 15:05:4250 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:2451 ":rtc_media_config",
Yves Gerey3e707812018-11-28 15:47:4952 "../api:array_view",
Niels Möllera6fe2612018-01-19 10:28:5453 "../api:audio_options_api",
Marina Cioceae77912b2020-02-27 15:16:5554 "../api:frame_transformer_interface",
Niels Möllere942b142019-09-17 12:30:4155 "../api:media_stream_interface",
Mirko Bonadeifcfeefe2019-09-10 08:51:2356 "../api:rtc_error",
Niels Möller6dcd4dc2019-08-26 08:45:2857 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:4858 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:2459 "../api:sequence_checker",
Jonas Oreland4476b822022-03-10 14:21:2860 "../api:webrtc_key_value_config",
Olga Sharonova09ceed22020-09-30 16:27:3961 "../api/audio:audio_frame_processor",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2462 "../api/audio_codecs:audio_codecs_api",
Mirko Bonadeieaaaf412019-09-13 12:42:1563 "../api/crypto:frame_decryptor_interface",
64 "../api/crypto:frame_encryptor_interface",
65 "../api/crypto:options",
Florent Castellid95b1492021-05-10 09:29:5666 "../api/transport:datagram_transport_interface",
Patrik Höglund56d94522019-11-18 14:53:3267 "../api/transport:stun_types",
Niels Möllera8370302019-09-02 13:16:4968 "../api/transport/rtp:rtp_source",
Ivo Creusen2562cf02021-09-03 14:51:2269 "../api/units:time_delta",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2470 "../api/video:video_bitrate_allocation",
Jonas Orelanda3aa9bd2019-04-17 05:38:4071 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2472 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:3873 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2474 "../api/video_codecs:video_codecs_api",
75 "../call:call_interfaces",
Markus Handell32565f62019-12-04 09:58:1776 "../call:video_stream_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2477 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:3978 "../modules/async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2479 "../modules/audio_processing:audio_processing_statistics",
Henrik Boström87e3f9d2019-05-27 08:44:2480 "../modules/rtp_rtcp:rtp_rtcp_format",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2481 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 15:05:4282 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 10:12:4883 "../rtc_base:rtc_base_approved",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2484 "../rtc_base:rtc_base_approved",
Tommi8d2c5a82018-03-19 10:12:4885 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 15:05:4286 "../rtc_base:sanitizer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:0187 "../rtc_base:socket",
Patrik Höglund3e113432017-12-15 13:40:1088 "../rtc_base:stringutils",
Markus Handell1e257ca2020-07-07 13:43:1189 "../rtc_base/synchronization:mutex",
Niels Möllere8e4dc42019-06-11 12:04:1690 "../rtc_base/system:file_wrapper",
Tommi816134a2021-05-24 14:54:4191 "../rtc_base/system:no_unique_address",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2492 "../rtc_base/system:rtc_export",
Tommicf2aeff2021-05-07 16:02:5393 "../rtc_base/task_utils:pending_task_safety_flag",
94 "../rtc_base/task_utils:to_queued_task",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2495 "../rtc_base/third_party/sigslot",
Åsa Persson3f7e0ed2019-10-18 13:03:1396 "../system_wrappers:field_trial",
Mirko Bonadei2dcf3482020-06-05 12:30:4197 ]
98 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:2499 "//third_party/abseil-cpp/absl/algorithm:container",
100 "//third_party/abseil-cpp/absl/strings",
101 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 15:05:42102 ]
kjellanderc76dc952016-06-03 10:09:32103 sources = [
Steve Anton10542f22019-01-11 17:11:00104 "base/adapted_video_track_source.cc",
105 "base/adapted_video_track_source.h",
106 "base/audio_source.h",
kjellanderc76dc952016-06-03 10:09:32107 "base/codec.cc",
108 "base/codec.h",
Ruslan Burakov493a6502019-02-27 14:32:48109 "base/delayable.h",
Steve Anton10542f22019-01-11 17:11:00110 "base/media_channel.cc",
111 "base/media_channel.h",
112 "base/media_constants.cc",
113 "base/media_constants.h",
114 "base/media_engine.cc",
115 "base/media_engine.h",
116 "base/rid_description.cc",
117 "base/rid_description.h",
Steve Anton10542f22019-01-11 17:11:00118 "base/rtp_utils.cc",
119 "base/rtp_utils.h",
120 "base/stream_params.cc",
121 "base/stream_params.h",
122 "base/turn_utils.cc",
123 "base/turn_utils.h",
124 "base/video_adapter.cc",
125 "base/video_adapter.h",
126 "base/video_broadcaster.cc",
127 "base/video_broadcaster.h",
Steve Anton10542f22019-01-11 17:11:00128 "base/video_common.cc",
129 "base/video_common.h",
130 "base/video_source_base.cc",
131 "base/video_source_base.h",
magjed0928a3c2016-11-25 08:40:18132 ]
magjed0928a3c2016-11-25 08:40:18133}
134
Mirko Bonadei86d053c2019-10-17 19:32:04135rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 07:51:18136 visibility = [ "*" ]
137 defines = []
138 libs = []
139 sources = [
140 "engine/simulcast_encoder_adapter.cc",
141 "engine/simulcast_encoder_adapter.h",
142 ]
143 deps = [
Rasmus Brandt5cad55b2019-12-19 08:47:11144 ":rtc_media_base",
Elad Alon8f01c4e2019-06-28 13:19:43145 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48146 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24147 "../api:sequence_checker",
Erik Språngf93eda12019-01-16 16:10:57148 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 15:47:49149 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38150 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 16:50:03151 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 07:51:18152 "../api/video_codecs:video_codecs_api",
Markus Handell32565f62019-12-04 09:58:17153 "../call:video_stream_api",
Åsa Persson59947d22021-08-26 10:04:27154 "../common_video",
Jonathan Yu9a5da492018-10-19 07:51:18155 "../modules/video_coding:video_codec_interface",
156 "../modules/video_coding:video_coding_utility",
157 "../rtc_base:checks",
158 "../rtc_base:rtc_base_approved",
Åsa Perssona7e34d32021-01-20 14:36:13159 "../rtc_base/experiments:encoder_info_settings",
Erik Språng7f24fb92019-02-13 09:49:37160 "../rtc_base/experiments:rate_control_settings",
Mirko Bonadei20e4c802020-11-23 10:07:42161 "../rtc_base/system:no_unique_address",
Mirko Bonadei66e76792019-04-02 09:33:59162 "../rtc_base/system:rtc_export",
Jonathan Yu9a5da492018-10-19 07:51:18163 "../system_wrappers",
164 "../system_wrappers:field_trial",
Jonathan Yu9a5da492018-10-19 07:51:18165 ]
Erik Språng5ab6a8c2021-01-14 15:37:26166 absl_deps = [
167 "//third_party/abseil-cpp/absl/algorithm:container",
168 "//third_party/abseil-cpp/absl/types:optional",
169 ]
Jonathan Yu9a5da492018-10-19 07:51:18170}
171
Mirko Bonadei86d053c2019-10-17 19:32:04172rtc_library("rtc_encoder_simulcast_proxy") {
Florent Castellie7862cc2018-12-06 12:38:24173 visibility = [ "*" ]
174 defines = []
175 libs = []
176 sources = [
177 "engine/encoder_simulcast_proxy.cc",
178 "engine/encoder_simulcast_proxy.h",
179 ]
180 deps = [
181 ":rtc_simulcast_encoder_adapter",
Florent Castellie7862cc2018-12-06 12:38:24182 "../api/video:video_bitrate_allocation",
183 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38184 "../api/video:video_rtp_headers",
Florent Castellie7862cc2018-12-06 12:38:24185 "../api/video_codecs:video_codecs_api",
186 "../modules/video_coding:video_codec_interface",
Mirko Bonadei66e76792019-04-02 09:33:59187 "../rtc_base/system:rtc_export",
Florent Castellie7862cc2018-12-06 12:38:24188 ]
Florent Castellie7862cc2018-12-06 12:38:24189}
190
Mirko Bonadei86d053c2019-10-17 19:32:04191rtc_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32192 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 02:31:53193 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 14:10:22194 defines = []
195 libs = []
Patrik Höglund99175c62018-01-08 10:05:10196 deps = [
Florent Castellie7862cc2018-12-06 12:38:24197 ":rtc_encoder_simulcast_proxy",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24198 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18199 ":rtc_simulcast_encoder_adapter",
Yves Gerey3e707812018-11-28 15:47:49200 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24201 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 15:47:49202 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38203 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24204 "../api/video_codecs:rtc_software_fallback_wrappers",
205 "../api/video_codecs:video_codecs_api",
206 "../call:call_interfaces",
207 "../call:video_stream_api",
Patrik Höglund99175c62018-01-08 10:05:10208 "../modules/video_coding:video_codec_interface",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24209 "../modules/video_coding:webrtc_h264",
210 "../modules/video_coding:webrtc_multiplex",
211 "../modules/video_coding:webrtc_vp8",
212 "../modules/video_coding:webrtc_vp9",
Danil Chapovalovc46385c2020-03-11 09:45:57213 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
philipel95701502022-01-18 17:47:52214 "../modules/video_coding/codecs/av1:libaom_av1_encoder_if_supported",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24215 "../rtc_base:checks",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24216 "../rtc_base:rtc_base_approved",
217 "../rtc_base/system:rtc_export",
philipelb09d8722021-11-23 10:00:24218 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24219 "../test:fake_video_codecs",
Patrik Höglund99175c62018-01-08 10:05:10220 ]
philipelb09d8722021-11-23 10:00:24221 if (rtc_include_dav1d_in_internal_decoder_factory) {
222 deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
223 }
Johannes Kronb26863e2021-09-15 10:56:04224 absl_deps = [
225 "//third_party/abseil-cpp/absl/strings",
226 "//third_party/abseil-cpp/absl/types:optional",
227 ]
Anders Carlssona114c882018-01-04 14:10:22228 sources = [
Emircan Uysaler7c03bdc2019-01-16 20:07:56229 "engine/fake_video_codec_factory.cc",
230 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 17:11:00231 "engine/internal_decoder_factory.cc",
232 "engine/internal_decoder_factory.h",
233 "engine/internal_encoder_factory.cc",
234 "engine/internal_encoder_factory.h",
235 "engine/multiplex_codec_factory.cc",
236 "engine/multiplex_codec_factory.h",
Jonathan Yu327b7532018-10-25 00:21:36237
238 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 12:38:24239 # targets depend on :rtc_encoder_simulcast_proxy directly.
240 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 14:10:22241 ]
Anders Carlssona114c882018-01-04 14:10:22242}
243
Mirko Bonadei86d053c2019-10-17 19:32:04244rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53245 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23246 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 14:10:22247 defines = []
248 libs = []
249 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24250 ":rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24251 "../api:call_api",
252 "../api:libjingle_peerconnection_api",
Florent Castellib05ca4b2020-03-05 12:39:55253 "../api:media_stream_interface",
Niels Möller6dcd4dc2019-08-26 08:45:28254 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:48255 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24256 "../api:sequence_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24257 "../api:transport_api",
Olga Sharonova09ceed22020-09-30 16:27:39258 "../api/audio:audio_frame_processor",
Danil Chapovalov85b8ce22019-05-31 13:51:04259 "../api/audio:audio_mixer_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24260 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalov4c7112a2019-03-27 17:51:45261 "../api/task_queue",
Mirko Bonadei738bfa72019-09-17 12:47:38262 "../api/transport:bitrate_settings",
Erik Språngceb44952020-09-22 09:36:35263 "../api/transport:field_trial_based_config",
264 "../api/transport:webrtc_key_value_config",
Niels Möllera8370302019-09-02 13:16:49265 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 14:19:43266 "../api/units:data_rate",
Yves Gerey3e707812018-11-28 15:47:49267 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 18:02:56268 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24269 "../api/video:video_codec_constants",
270 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38271 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24272 "../api/video_codecs:rtc_software_fallback_wrappers",
273 "../api/video_codecs:video_codecs_api",
274 "../call",
275 "../call:call_interfaces",
276 "../call:video_stream_api",
277 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:39278 "../modules/async_audio_processing:async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24279 "../modules/audio_device",
280 "../modules/audio_device:audio_device_impl",
281 "../modules/audio_mixer:audio_mixer_impl",
Alessio Bazzicab768e882018-11-07 14:29:54282 "../modules/audio_processing:api",
Artem Titov94b57c02019-03-21 12:35:10283 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 08:10:26284 "../modules/audio_processing/agc:gain_control_interface",
Danil Chapovalov99a71f42021-07-19 13:20:46285 "../modules/rtp_rtcp:rtp_rtcp_format",
Artem Titov94b57c02019-03-21 12:35:10286 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 09:11:40287 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 14:16:38288 "../modules/video_coding:video_coding_utility",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24289 "../rtc_base",
Jonas Olssonabbe8412018-04-03 11:40:05290 "../rtc_base:audio_format_to_string",
Anders Carlssona114c882018-01-04 14:10:22291 "../rtc_base:checks",
Jakob Ivarsson39adce12020-06-25 12:09:58292 "../rtc_base:ignore_wundef",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24293 "../rtc_base:rtc_task_queue",
294 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01295 "../rtc_base:threading",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24296 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 14:19:43297 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24298 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Rasmus Brandt2b9317a2019-10-30 12:01:46299 "../rtc_base/experiments:rate_control_settings",
Markus Handell1e257ca2020-07-07 13:43:11300 "../rtc_base/synchronization:mutex",
Mirko Bonadei276827c2018-10-16 12:13:50301 "../rtc_base/system:rtc_export",
Tomas Gunnarsson33c0ab42021-01-18 09:49:05302 "../rtc_base/task_utils:pending_task_safety_flag",
303 "../rtc_base/task_utils:to_queued_task",
Artem Titova76af0c2018-07-23 15:38:12304 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24305 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10306 "../system_wrappers:metrics",
Mirko Bonadei2dcf3482020-06-05 12:30:41307 ]
308 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24309 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24310 "//third_party/abseil-cpp/absl/strings",
311 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 14:10:22312 ]
313
314 sources = [
315 "engine/adm_helpers.cc",
316 "engine/adm_helpers.h",
Steve Anton10542f22019-01-11 17:11:00317 "engine/null_webrtc_video_engine.h",
Anders Carlssona114c882018-01-04 14:10:22318 "engine/payload_type_mapper.cc",
319 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 09:32:13320 "engine/simulcast.cc",
321 "engine/simulcast.h",
Jonas Oreland6d835922019-03-18 09:59:40322 "engine/unhandled_packets_buffer.cc",
323 "engine/unhandled_packets_buffer.h",
Steve Anton10542f22019-01-11 17:11:00324 "engine/webrtc_media_engine.cc",
325 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 17:11:00326 "engine/webrtc_video_engine.cc",
327 "engine/webrtc_video_engine.h",
328 "engine/webrtc_voice_engine.cc",
329 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 10:09:32330 ]
331
ehmaldonadoe9cc6862016-09-05 13:10:18332 public_configs = []
Niels Möller85818772019-04-09 06:24:58333 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 10:09:32334 public_configs += [ ":rtc_media_defines_config" ]
335 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
336 }
aleloi048cbdd2017-05-29 09:56:27337 if (rtc_enable_protobuf) {
Jakob Ivarsson39adce12020-06-25 12:09:58338 deps += [
339 "../modules/audio_coding:ana_config_proto",
340 "../modules/audio_processing/aec_dump:aec_dump_impl",
341 ]
aleloi048cbdd2017-05-29 09:56:27342 } else {
343 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
344 }
kjellanderc76dc952016-06-03 10:09:32345}
kjellander82a94492016-06-13 05:12:01346
Danil Chapovalov4844c5f2019-04-10 12:10:10347# Heavy but optional helper for unittests and webrtc users who prefer to use
348# defaults factories or do not worry about extra dependencies and binary size.
Mirko Bonadei86d053c2019-10-17 19:32:04349rtc_library("rtc_media_engine_defaults") {
Danil Chapovalov4844c5f2019-04-10 12:10:10350 visibility = [ "*" ]
351 allow_poison = [
352 "audio_codecs",
Danil Chapovalov41300af2019-07-10 10:44:43353 "default_task_queue",
Danil Chapovalov4844c5f2019-04-10 12:10:10354 "software_video_codecs",
355 ]
356 sources = [
357 "engine/webrtc_media_engine_defaults.cc",
358 "engine/webrtc_media_engine_defaults.h",
359 ]
360 deps = [
361 ":rtc_audio_video",
362 "../api/audio_codecs:builtin_audio_decoder_factory",
363 "../api/audio_codecs:builtin_audio_encoder_factory",
364 "../api/task_queue:default_task_queue_factory",
365 "../api/video:builtin_video_bitrate_allocator_factory",
366 "../api/video_codecs:builtin_video_decoder_factory",
367 "../api/video_codecs:builtin_video_encoder_factory",
368 "../modules/audio_processing:api",
369 "../rtc_base:checks",
Ken MacKay831ce5f2019-12-02 18:26:34370 "../rtc_base/system:rtc_export",
Danil Chapovalov4844c5f2019-04-10 12:10:10371 ]
372}
373
Florent Castellia80c3e52021-04-15 13:02:56374rtc_source_set("rtc_data_sctp_transport_internal") {
375 sources = [ "sctp/sctp_transport_internal.h" ]
Danil Chapovalov6fe6b5a2019-04-10 10:50:24376 deps = [
Florent Castellid95b1492021-05-10 09:29:56377 "../api/transport:datagram_transport_interface",
Florent Castellia80c3e52021-04-15 13:02:56378 "../media:rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24379 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24380 "../rtc_base:rtc_base_approved",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01381 "../rtc_base:threading",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24382 "../rtc_base/third_party/sigslot",
Mirko Bonadei2dcf3482020-06-05 12:30:41383 ]
Florent Castellia80c3e52021-04-15 13:02:56384}
zhihuang38ede132017-06-15 19:52:32385
Florent Castellia6983c62021-05-06 08:50:07386if (rtc_build_dcsctp) {
387 rtc_library("rtc_data_dcsctp_transport") {
388 sources = [
389 "sctp/dcsctp_transport.cc",
390 "sctp/dcsctp_transport.h",
391 ]
392 deps = [
393 ":rtc_data_sctp_transport_internal",
394 "../api:array_view",
Henrik Boströmb951dc62022-01-26 17:38:13395 "../api/task_queue:task_queue",
Florent Castellia6983c62021-05-06 08:50:07396 "../media:rtc_media_base",
Florent Castelli6a11c842021-06-01 16:39:49397 "../net/dcsctp/public:factory",
Florent Castellia6983c62021-05-06 08:50:07398 "../net/dcsctp/public:socket",
399 "../net/dcsctp/public:types",
Victor Boivie5e726da2021-06-19 05:59:01400 "../net/dcsctp/public:utils",
Florent Castellia6983c62021-05-06 08:50:07401 "../net/dcsctp/timer:task_queue_timeout",
402 "../p2p:rtc_p2p",
403 "../rtc_base:checks",
404 "../rtc_base:rtc_base_approved",
Victor Boivie8df32eb2021-08-12 13:21:25405 "../rtc_base:socket",
Florent Castellia6983c62021-05-06 08:50:07406 "../rtc_base:threading",
407 "../rtc_base/task_utils:pending_task_safety_flag",
408 "../rtc_base/task_utils:to_queued_task",
409 "../rtc_base/third_party/sigslot:sigslot",
410 "../system_wrappers",
411 ]
412 absl_deps += [
413 "//third_party/abseil-cpp/absl/strings:strings",
414 "//third_party/abseil-cpp/absl/types:optional",
415 ]
416 }
417}
418
Florent Castellia80c3e52021-04-15 13:02:56419if (rtc_build_usrsctp) {
420 rtc_library("rtc_data_usrsctp_transport") {
421 defines = [
422 # "SCTP_DEBUG" # Uncomment for SCTP debugging.
423 ]
zhihuang38ede132017-06-15 19:52:32424 sources = [
Florent Castelli22379fc2021-04-08 13:06:09425 "sctp/usrsctp_transport.cc",
426 "sctp/usrsctp_transport.h",
zhihuang38ede132017-06-15 19:52:32427 ]
Florent Castellia80c3e52021-04-15 13:02:56428 deps = [
429 ":rtc_data_sctp_transport_internal",
430 "../media:rtc_media_base",
431 "../p2p:rtc_p2p",
432 "../rtc_base",
433 "../rtc_base:rtc_base_approved",
434 "../rtc_base:threading",
435 "../rtc_base/synchronization:mutex",
436 "../rtc_base/task_utils:pending_task_safety_flag",
437 "../rtc_base/task_utils:to_queued_task",
438 "../rtc_base/third_party/sigslot:sigslot",
Per Kjellander2bca0082020-08-28 07:15:15439 "//third_party/usrsctp",
440 ]
Florent Castellia80c3e52021-04-15 13:02:56441 absl_deps = [
442 "//third_party/abseil-cpp/absl/algorithm:container",
443 "//third_party/abseil-cpp/absl/types:optional",
444 ]
445 }
446}
447
448rtc_library("rtc_data_sctp_transport_factory") {
449 defines = []
450 sources = [
451 "sctp/sctp_transport_factory.cc",
452 "sctp/sctp_transport_factory.h",
453 ]
454 deps = [
455 ":rtc_data_sctp_transport_internal",
Jonas Oreland4476b822022-03-10 14:21:28456 "../api:webrtc_key_value_config",
Florent Castellia80c3e52021-04-15 13:02:56457 "../api/transport:sctp_transport_factory_interface",
458 "../rtc_base:threading",
Florent Castellia6983c62021-05-06 08:50:07459 "../rtc_base/experiments:field_trial_parser",
Florent Castellia80c3e52021-04-15 13:02:56460 "../rtc_base/system:unused",
461 ]
462
463 if (rtc_enable_sctp) {
Florent Castellia6983c62021-05-06 08:50:07464 assert(rtc_build_dcsctp || rtc_build_usrsctp,
465 "An SCTP backend is required to enable SCTP")
466 }
467
468 if (rtc_build_dcsctp) {
469 defines += [ "WEBRTC_HAVE_DCSCTP" ]
470 deps += [
471 ":rtc_data_dcsctp_transport",
472 "../system_wrappers",
473 "../system_wrappers:field_trial",
474 ]
Florent Castellia80c3e52021-04-15 13:02:56475 }
476
477 if (rtc_build_usrsctp) {
478 defines += [ "WEBRTC_HAVE_USRSCTP" ]
479 deps += [ ":rtc_data_usrsctp_transport" ]
zhihuang38ede132017-06-15 19:52:32480 }
zhihuang38ede132017-06-15 19:52:32481}
482
483rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53484 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23485 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Florent Castellia80c3e52021-04-15 13:02:56486 deps = [ ":rtc_audio_video" ]
zhihuang38ede132017-06-15 19:52:32487}
488
kjellander82a94492016-06-13 05:12:01489if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04490 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01491 testonly = true
492
Anders Carlsson5f2bb622018-05-14 07:48:06493 defines = []
kjellandera2ef4f92017-03-06 14:04:55494 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30495 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24496 ":rtc_internal_video_codecs",
497 ":rtc_media",
498 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18499 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24500 "../api:call_api",
Elad Alon8f01c4e2019-06-28 13:19:43501 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48502 "../api:scoped_refptr",
Erik Språngceb44952020-09-22 09:36:35503 "../api/transport:field_trial_based_config",
Yves Gerey3e707812018-11-28 15:47:49504 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24505 "../api/video:video_bitrate_allocation",
506 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38507 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24508 "../api/video_codecs:video_codecs_api",
509 "../call:call_interfaces",
510 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 12:43:23511 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 12:35:10512 "../common_video",
513 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54514 "../modules/audio_processing:api",
Mirko Bonadeib5728d92017-12-06 06:51:33515 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10516 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08517 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 14:04:55518 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24519 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 15:05:42520 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 12:15:08521 "../rtc_base:gunit_helpers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24522 "../rtc_base:rtc_base_approved",
Tommi8d2c5a82018-03-19 10:12:48523 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 13:40:10524 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01525 "../rtc_base:threading",
Markus Handell1e257ca2020-07-07 13:43:11526 "../rtc_base/synchronization:mutex",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24527 "../rtc_base/third_party/sigslot",
Jonas Oreland8ca06132022-03-14 11:52:48528 "../test:scoped_key_value_config",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24529 "../test:test_support",
530 "//testing/gtest",
Mirko Bonadei2dcf3482020-06-05 12:30:41531 ]
532 absl_deps = [
Steve Anton2c9ebef2019-01-29 01:27:58533 "//third_party/abseil-cpp/absl/algorithm:container",
Yves Gerey69807e82018-10-30 21:23:02534 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 14:04:55535 ]
kjellander82a94492016-06-13 05:12:01536 sources = [
Steve Anton10542f22019-01-11 17:11:00537 "base/fake_frame_source.cc",
538 "base/fake_frame_source.h",
539 "base/fake_media_engine.cc",
540 "base/fake_media_engine.h",
541 "base/fake_network_interface.h",
542 "base/fake_rtp.cc",
543 "base/fake_rtp.h",
Steve Anton10542f22019-01-11 17:11:00544 "base/fake_video_renderer.cc",
545 "base/fake_video_renderer.h",
546 "base/test_utils.cc",
547 "base/test_utils.h",
548 "engine/fake_webrtc_call.cc",
549 "engine/fake_webrtc_call.h",
550 "engine/fake_webrtc_video_engine.cc",
551 "engine/fake_webrtc_video_engine.h",
kjellander82a94492016-06-13 05:12:01552 ]
kjellander82a94492016-06-13 05:12:01553 }
554
Andrey Logvine7c79fd2021-02-01 09:56:37555 if (!build_with_chromium) {
556 rtc_media_unittests_resources = [
557 "../resources/media/captured-320x240-2s-48.frames",
558 "../resources/media/faces.1280x720_P420.yuv",
559 "../resources/media/faces_I400.jpg",
560 "../resources/media/faces_I411.jpg",
561 "../resources/media/faces_I420.jpg",
562 "../resources/media/faces_I422.jpg",
563 "../resources/media/faces_I444.jpg",
Andrey Logvin78646002021-01-29 10:50:19564 ]
kjellander32c4a202016-08-30 09:53:49565
566 if (is_ios) {
Andrey Logvine7c79fd2021-02-01 09:56:37567 bundle_data("rtc_media_unittests_bundle_data") {
568 testonly = true
569 sources = rtc_media_unittests_resources
570 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
571 }
kjellander82a94492016-06-13 05:12:01572 }
Taylor Brandstetterc2128732020-07-03 23:37:57573
Andrey Logvine7c79fd2021-02-01 09:56:37574 rtc_test("rtc_media_unittests") {
575 testonly = true
576
577 defines = []
578 deps = [
579 ":rtc_audio_video",
Andrey Logvine7c79fd2021-02-01 09:56:37580 ":rtc_encoder_simulcast_proxy",
581 ":rtc_internal_video_codecs",
582 ":rtc_media",
583 ":rtc_media_base",
584 ":rtc_media_engine_defaults",
585 ":rtc_media_tests_utils",
Johannes Kronc3fcee72021-04-19 07:09:26586 ":rtc_sdp_video_format_utils",
Andrey Logvine7c79fd2021-02-01 09:56:37587 ":rtc_simulcast_encoder_adapter",
Andrey Logvine7c79fd2021-02-01 09:56:37588 "../api:create_simulcast_test_fixture_api",
589 "../api:libjingle_peerconnection_api",
590 "../api:mock_video_bitrate_allocator",
591 "../api:mock_video_bitrate_allocator_factory",
592 "../api:mock_video_codec_factory",
593 "../api:mock_video_encoder",
594 "../api:rtp_parameters",
595 "../api:scoped_refptr",
596 "../api:simulcast_test_fixture_api",
597 "../api/audio_codecs:builtin_audio_decoder_factory",
598 "../api/audio_codecs:builtin_audio_encoder_factory",
599 "../api/rtc_event_log",
600 "../api/task_queue",
601 "../api/task_queue:default_task_queue_factory",
602 "../api/test/video:function_video_factory",
603 "../api/transport:field_trial_based_config",
604 "../api/units:time_delta",
Markus Handellee034312021-11-05 14:02:03605 "../api/units:timestamp",
Andrey Logvine7c79fd2021-02-01 09:56:37606 "../api/video:builtin_video_bitrate_allocator_factory",
607 "../api/video:video_bitrate_allocation",
Sergey Silkin0e3cb9f2021-02-02 17:23:40608 "../api/video:video_codec_constants",
Andrey Logvine7c79fd2021-02-01 09:56:37609 "../api/video:video_frame",
610 "../api/video:video_rtp_headers",
611 "../api/video_codecs:builtin_video_decoder_factory",
612 "../api/video_codecs:builtin_video_encoder_factory",
613 "../api/video_codecs:video_codecs_api",
614 "../audio",
615 "../call:call_interfaces",
616 "../common_video",
Andrey Logvine7c79fd2021-02-01 09:56:37617 "../modules/audio_device:mock_audio_device",
618 "../modules/audio_processing",
619 "../modules/audio_processing:api",
620 "../modules/audio_processing:mocks",
621 "../modules/rtp_rtcp",
Danil Chapovalov47f5f8c2021-06-03 10:27:12622 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37623 "../modules/video_coding:simulcast_test_fixture_impl",
624 "../modules/video_coding:video_codec_interface",
625 "../modules/video_coding:webrtc_h264",
626 "../modules/video_coding:webrtc_vp8",
627 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
philipel95701502022-01-18 17:47:52628 "../modules/video_coding/codecs/av1:libaom_av1_encoder_if_supported",
Andrey Logvine7c79fd2021-02-01 09:56:37629 "../p2p:p2p_test_utils",
630 "../rtc_base",
631 "../rtc_base:checks",
632 "../rtc_base:gunit_helpers",
633 "../rtc_base:rtc_base_approved",
634 "../rtc_base:rtc_base_tests_utils",
635 "../rtc_base:rtc_task_queue",
636 "../rtc_base:stringutils",
637 "../rtc_base:threading",
638 "../rtc_base/experiments:min_video_bitrate_experiment",
639 "../rtc_base/synchronization:mutex",
640 "../rtc_base/third_party/sigslot",
Tommia334dc62021-06-04 10:50:01641 "../system_wrappers:field_trial",
Andrey Logvine7c79fd2021-02-01 09:56:37642 "../test:audio_codec_mocks",
643 "../test:fake_video_codecs",
644 "../test:field_trial",
645 "../test:rtp_test_utils",
Jonas Oreland4476b822022-03-10 14:21:28646 "../test:scoped_key_value_config",
Andrey Logvine7c79fd2021-02-01 09:56:37647 "../test:test_main",
648 "../test:test_support",
649 "../test:video_test_common",
Markus Handellee034312021-11-05 14:02:03650 "../test/time_controller",
Andrey Logvine7c79fd2021-02-01 09:56:37651 ]
652 absl_deps = [
653 "//third_party/abseil-cpp/absl/algorithm:container",
654 "//third_party/abseil-cpp/absl/memory",
655 "//third_party/abseil-cpp/absl/strings",
656 "//third_party/abseil-cpp/absl/types:optional",
657 ]
658 sources = [
659 "base/codec_unittest.cc",
660 "base/media_engine_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37661 "base/rtp_utils_unittest.cc",
Johannes Kronc3fcee72021-04-19 07:09:26662 "base/sdp_video_format_utils_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37663 "base/stream_params_unittest.cc",
664 "base/turn_utils_unittest.cc",
665 "base/video_adapter_unittest.cc",
666 "base/video_broadcaster_unittest.cc",
667 "base/video_common_unittest.cc",
668 "engine/encoder_simulcast_proxy_unittest.cc",
669 "engine/internal_decoder_factory_unittest.cc",
Johannes Kronb26863e2021-09-15 10:56:04670 "engine/internal_encoder_factory_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37671 "engine/multiplex_codec_factory_unittest.cc",
672 "engine/null_webrtc_video_engine_unittest.cc",
673 "engine/payload_type_mapper_unittest.cc",
674 "engine/simulcast_encoder_adapter_unittest.cc",
675 "engine/simulcast_unittest.cc",
676 "engine/unhandled_packets_buffer_unittest.cc",
677 "engine/webrtc_media_engine_unittest.cc",
678 "engine/webrtc_video_engine_unittest.cc",
679 ]
680
681 # TODO(kthelgason): Reenable this test on iOS.
682 # See bugs.webrtc.org/5569
683 if (!is_ios) {
684 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
685 }
686
Florent Castellia80c3e52021-04-15 13:02:56687 if (rtc_build_usrsctp) {
Andrey Logvine7c79fd2021-02-01 09:56:37688 sources += [
Florent Castelli22379fc2021-04-08 13:06:09689 "sctp/usrsctp_transport_reliability_unittest.cc",
690 "sctp/usrsctp_transport_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37691 ]
Niels Möller128faf82021-03-23 11:29:07692 deps += [
Florent Castellia80c3e52021-04-15 13:02:56693 ":rtc_data_sctp_transport_internal",
694 ":rtc_data_usrsctp_transport",
Niels Mölleraffd2192021-04-15 09:42:50695 "../rtc_base:rtc_event",
Niels Möller128faf82021-03-23 11:29:07696 "../rtc_base/task_utils:pending_task_safety_flag",
697 "../rtc_base/task_utils:to_queued_task",
Florent Castellia80c3e52021-04-15 13:02:56698 "//third_party/usrsctp",
Niels Möller128faf82021-03-23 11:29:07699 ]
Andrey Logvine7c79fd2021-02-01 09:56:37700 }
701
702 if (rtc_opus_support_120ms_ptime) {
703 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
704 } else {
705 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
706 }
707
708 data = rtc_media_unittests_resources
709
710 if (is_android) {
711 deps += [ "//testing/android/native_test:native_test_support" ]
712 shard_timeout = 900
713 }
714
715 if (is_ios) {
716 deps += [ ":rtc_media_unittests_bundle_data" ]
717 }
Taylor Brandstetterc2128732020-07-03 23:37:57718 }
kjellander82a94492016-06-13 05:12:01719 }
720}