blob: 3468569f7833554fa32abf9205ac71a6176f537b [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",
Jonas Orelande62c2f22022-03-29 09:04:4854 "../api:field_trials_view",
Marina Cioceae77912b2020-02-27 15:16:5555 "../api:frame_transformer_interface",
Niels Möllere942b142019-09-17 12:30:4156 "../api:media_stream_interface",
Mirko Bonadeifcfeefe2019-09-10 08:51:2357 "../api:rtc_error",
Niels Möller6dcd4dc2019-08-26 08:45:2858 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:4859 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:2460 "../api:sequence_checker",
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",
Florent Castelli0af55ba2022-04-04 13:06:3083 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:4684 "../rtc_base:macromagic",
Tommi8d2c5a82018-03-19 10:12:4885 "../rtc_base:rtc_base_approved",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2486 "../rtc_base:rtc_base_approved",
Tommi8d2c5a82018-03-19 10:12:4887 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 15:05:4288 "../rtc_base:sanitizer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:0189 "../rtc_base:socket",
Patrik Höglund3e113432017-12-15 13:40:1090 "../rtc_base:stringutils",
Florent Castellidd837e22022-04-04 15:16:1591 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:1192 "../rtc_base/synchronization:mutex",
Niels Möllere8e4dc42019-06-11 12:04:1693 "../rtc_base/system:file_wrapper",
Tommi816134a2021-05-24 14:54:4194 "../rtc_base/system:no_unique_address",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2495 "../rtc_base/system:rtc_export",
Tommicf2aeff2021-05-07 16:02:5396 "../rtc_base/task_utils:pending_task_safety_flag",
97 "../rtc_base/task_utils:to_queued_task",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2498 "../rtc_base/third_party/sigslot",
Åsa Persson3f7e0ed2019-10-18 13:03:1399 "../system_wrappers:field_trial",
Mirko Bonadei2dcf3482020-06-05 12:30:41100 ]
101 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24102 "//third_party/abseil-cpp/absl/algorithm:container",
103 "//third_party/abseil-cpp/absl/strings",
104 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 15:05:42105 ]
kjellanderc76dc952016-06-03 10:09:32106 sources = [
Steve Anton10542f22019-01-11 17:11:00107 "base/adapted_video_track_source.cc",
108 "base/adapted_video_track_source.h",
109 "base/audio_source.h",
kjellanderc76dc952016-06-03 10:09:32110 "base/codec.cc",
111 "base/codec.h",
Ruslan Burakov493a6502019-02-27 14:32:48112 "base/delayable.h",
Steve Anton10542f22019-01-11 17:11:00113 "base/media_channel.cc",
114 "base/media_channel.h",
115 "base/media_constants.cc",
116 "base/media_constants.h",
117 "base/media_engine.cc",
118 "base/media_engine.h",
119 "base/rid_description.cc",
120 "base/rid_description.h",
Steve Anton10542f22019-01-11 17:11:00121 "base/rtp_utils.cc",
122 "base/rtp_utils.h",
123 "base/stream_params.cc",
124 "base/stream_params.h",
125 "base/turn_utils.cc",
126 "base/turn_utils.h",
127 "base/video_adapter.cc",
128 "base/video_adapter.h",
129 "base/video_broadcaster.cc",
130 "base/video_broadcaster.h",
Steve Anton10542f22019-01-11 17:11:00131 "base/video_common.cc",
132 "base/video_common.h",
133 "base/video_source_base.cc",
134 "base/video_source_base.h",
magjed0928a3c2016-11-25 08:40:18135 ]
magjed0928a3c2016-11-25 08:40:18136}
137
Mirko Bonadei86d053c2019-10-17 19:32:04138rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 07:51:18139 visibility = [ "*" ]
140 defines = []
141 libs = []
142 sources = [
143 "engine/simulcast_encoder_adapter.cc",
144 "engine/simulcast_encoder_adapter.h",
145 ]
146 deps = [
Rasmus Brandt5cad55b2019-12-19 08:47:11147 ":rtc_media_base",
Elad Alon8f01c4e2019-06-28 13:19:43148 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48149 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24150 "../api:sequence_checker",
Erik Språngf93eda12019-01-16 16:10:57151 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 15:47:49152 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38153 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 16:50:03154 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 07:51:18155 "../api/video_codecs:video_codecs_api",
Markus Handell32565f62019-12-04 09:58:17156 "../call:video_stream_api",
Åsa Persson59947d22021-08-26 10:04:27157 "../common_video",
Jonathan Yu9a5da492018-10-19 07:51:18158 "../modules/video_coding:video_codec_interface",
159 "../modules/video_coding:video_coding_utility",
Florent Castellibddfe022022-04-04 13:03:10160 "../rtc_base:atomicops",
Jonathan Yu9a5da492018-10-19 07:51:18161 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30162 "../rtc_base:logging",
Jonathan Yu9a5da492018-10-19 07:51:18163 "../rtc_base:rtc_base_approved",
Åsa Perssona7e34d32021-01-20 14:36:13164 "../rtc_base/experiments:encoder_info_settings",
Erik Språng7f24fb92019-02-13 09:49:37165 "../rtc_base/experiments:rate_control_settings",
Mirko Bonadei20e4c802020-11-23 10:07:42166 "../rtc_base/system:no_unique_address",
Mirko Bonadei66e76792019-04-02 09:33:59167 "../rtc_base/system:rtc_export",
Jonathan Yu9a5da492018-10-19 07:51:18168 "../system_wrappers",
169 "../system_wrappers:field_trial",
Jonathan Yu9a5da492018-10-19 07:51:18170 ]
Erik Språng5ab6a8c2021-01-14 15:37:26171 absl_deps = [
172 "//third_party/abseil-cpp/absl/algorithm:container",
173 "//third_party/abseil-cpp/absl/types:optional",
174 ]
Jonathan Yu9a5da492018-10-19 07:51:18175}
176
Mirko Bonadei86d053c2019-10-17 19:32:04177rtc_library("rtc_encoder_simulcast_proxy") {
Florent Castellie7862cc2018-12-06 12:38:24178 visibility = [ "*" ]
179 defines = []
180 libs = []
181 sources = [
182 "engine/encoder_simulcast_proxy.cc",
183 "engine/encoder_simulcast_proxy.h",
184 ]
185 deps = [
186 ":rtc_simulcast_encoder_adapter",
Florent Castellie7862cc2018-12-06 12:38:24187 "../api/video:video_bitrate_allocation",
188 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38189 "../api/video:video_rtp_headers",
Florent Castellie7862cc2018-12-06 12:38:24190 "../api/video_codecs:video_codecs_api",
191 "../modules/video_coding:video_codec_interface",
Mirko Bonadei66e76792019-04-02 09:33:59192 "../rtc_base/system:rtc_export",
Florent Castellie7862cc2018-12-06 12:38:24193 ]
Florent Castellie7862cc2018-12-06 12:38:24194}
195
Mirko Bonadei86d053c2019-10-17 19:32:04196rtc_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32197 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 02:31:53198 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 14:10:22199 defines = []
200 libs = []
Patrik Höglund99175c62018-01-08 10:05:10201 deps = [
Florent Castellie7862cc2018-12-06 12:38:24202 ":rtc_encoder_simulcast_proxy",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24203 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18204 ":rtc_simulcast_encoder_adapter",
Yves Gerey3e707812018-11-28 15:47:49205 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24206 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 15:47:49207 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38208 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24209 "../api/video_codecs:rtc_software_fallback_wrappers",
210 "../api/video_codecs:video_codecs_api",
211 "../call:call_interfaces",
212 "../call:video_stream_api",
Patrik Höglund99175c62018-01-08 10:05:10213 "../modules/video_coding:video_codec_interface",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24214 "../modules/video_coding:webrtc_h264",
215 "../modules/video_coding:webrtc_multiplex",
216 "../modules/video_coding:webrtc_vp8",
217 "../modules/video_coding:webrtc_vp9",
Danil Chapovalovc46385c2020-03-11 09:45:57218 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
philipel95701502022-01-18 17:47:52219 "../modules/video_coding/codecs/av1:libaom_av1_encoder_if_supported",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24220 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30221 "../rtc_base:logging",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24222 "../rtc_base:rtc_base_approved",
223 "../rtc_base/system:rtc_export",
philipelb09d8722021-11-23 10:00:24224 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24225 "../test:fake_video_codecs",
Patrik Höglund99175c62018-01-08 10:05:10226 ]
philipelb09d8722021-11-23 10:00:24227 if (rtc_include_dav1d_in_internal_decoder_factory) {
228 deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
229 }
Johannes Kronb26863e2021-09-15 10:56:04230 absl_deps = [
231 "//third_party/abseil-cpp/absl/strings",
232 "//third_party/abseil-cpp/absl/types:optional",
233 ]
Anders Carlssona114c882018-01-04 14:10:22234 sources = [
Emircan Uysaler7c03bdc2019-01-16 20:07:56235 "engine/fake_video_codec_factory.cc",
236 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 17:11:00237 "engine/internal_decoder_factory.cc",
238 "engine/internal_decoder_factory.h",
239 "engine/internal_encoder_factory.cc",
240 "engine/internal_encoder_factory.h",
241 "engine/multiplex_codec_factory.cc",
242 "engine/multiplex_codec_factory.h",
Jonathan Yu327b7532018-10-25 00:21:36243
244 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 12:38:24245 # targets depend on :rtc_encoder_simulcast_proxy directly.
246 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 14:10:22247 ]
Anders Carlssona114c882018-01-04 14:10:22248}
249
Mirko Bonadei86d053c2019-10-17 19:32:04250rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53251 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23252 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 14:10:22253 defines = []
254 libs = []
255 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24256 ":rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24257 "../api:call_api",
Jonas Orelande62c2f22022-03-29 09:04:48258 "../api:field_trials_view",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24259 "../api:libjingle_peerconnection_api",
Florent Castellib05ca4b2020-03-05 12:39:55260 "../api:media_stream_interface",
Niels Möller6dcd4dc2019-08-26 08:45:28261 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:48262 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24263 "../api:sequence_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24264 "../api:transport_api",
Olga Sharonova09ceed22020-09-30 16:27:39265 "../api/audio:audio_frame_processor",
Danil Chapovalov85b8ce22019-05-31 13:51:04266 "../api/audio:audio_mixer_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24267 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalov4c7112a2019-03-27 17:51:45268 "../api/task_queue",
Mirko Bonadei738bfa72019-09-17 12:47:38269 "../api/transport:bitrate_settings",
Erik Språngceb44952020-09-22 09:36:35270 "../api/transport:field_trial_based_config",
Niels Möllera8370302019-09-02 13:16:49271 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 14:19:43272 "../api/units:data_rate",
Yves Gerey3e707812018-11-28 15:47:49273 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 18:02:56274 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24275 "../api/video:video_codec_constants",
276 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38277 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24278 "../api/video_codecs:rtc_software_fallback_wrappers",
279 "../api/video_codecs:video_codecs_api",
280 "../call",
281 "../call:call_interfaces",
282 "../call:video_stream_api",
283 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:39284 "../modules/async_audio_processing:async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24285 "../modules/audio_device",
286 "../modules/audio_device:audio_device_impl",
287 "../modules/audio_mixer:audio_mixer_impl",
Alessio Bazzicab768e882018-11-07 14:29:54288 "../modules/audio_processing:api",
Artem Titov94b57c02019-03-21 12:35:10289 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 08:10:26290 "../modules/audio_processing/agc:gain_control_interface",
Danil Chapovalov99a71f42021-07-19 13:20:46291 "../modules/rtp_rtcp:rtp_rtcp_format",
Artem Titov94b57c02019-03-21 12:35:10292 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 09:11:40293 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 14:16:38294 "../modules/video_coding:video_coding_utility",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24295 "../rtc_base",
Jonas Olssonabbe8412018-04-03 11:40:05296 "../rtc_base:audio_format_to_string",
Anders Carlssona114c882018-01-04 14:10:22297 "../rtc_base:checks",
Jakob Ivarsson39adce12020-06-25 12:09:58298 "../rtc_base:ignore_wundef",
Florent Castelli0af55ba2022-04-04 13:06:30299 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46300 "../rtc_base:macromagic",
Florent Castellif4db3512022-04-14 11:38:05301 "../rtc_base:race_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24302 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37303 "../rtc_base:safe_conversions",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24304 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01305 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15306 "../rtc_base:timeutils",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24307 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 14:19:43308 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24309 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Rasmus Brandt2b9317a2019-10-30 12:01:46310 "../rtc_base/experiments:rate_control_settings",
Markus Handell1e257ca2020-07-07 13:43:11311 "../rtc_base/synchronization:mutex",
Mirko Bonadei276827c2018-10-16 12:13:50312 "../rtc_base/system:rtc_export",
Tomas Gunnarsson33c0ab42021-01-18 09:49:05313 "../rtc_base/task_utils:pending_task_safety_flag",
314 "../rtc_base/task_utils:to_queued_task",
Artem Titova76af0c2018-07-23 15:38:12315 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24316 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10317 "../system_wrappers:metrics",
Mirko Bonadei2dcf3482020-06-05 12:30:41318 ]
319 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24320 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24321 "//third_party/abseil-cpp/absl/strings",
322 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 14:10:22323 ]
324
325 sources = [
326 "engine/adm_helpers.cc",
327 "engine/adm_helpers.h",
Steve Anton10542f22019-01-11 17:11:00328 "engine/null_webrtc_video_engine.h",
Anders Carlssona114c882018-01-04 14:10:22329 "engine/payload_type_mapper.cc",
330 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 09:32:13331 "engine/simulcast.cc",
332 "engine/simulcast.h",
Jonas Oreland6d835922019-03-18 09:59:40333 "engine/unhandled_packets_buffer.cc",
334 "engine/unhandled_packets_buffer.h",
Steve Anton10542f22019-01-11 17:11:00335 "engine/webrtc_media_engine.cc",
336 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 17:11:00337 "engine/webrtc_video_engine.cc",
338 "engine/webrtc_video_engine.h",
339 "engine/webrtc_voice_engine.cc",
340 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 10:09:32341 ]
342
ehmaldonadoe9cc6862016-09-05 13:10:18343 public_configs = []
Niels Möller85818772019-04-09 06:24:58344 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 10:09:32345 public_configs += [ ":rtc_media_defines_config" ]
346 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
347 }
aleloi048cbdd2017-05-29 09:56:27348 if (rtc_enable_protobuf) {
Jakob Ivarsson39adce12020-06-25 12:09:58349 deps += [
350 "../modules/audio_coding:ana_config_proto",
351 "../modules/audio_processing/aec_dump:aec_dump_impl",
352 ]
aleloi048cbdd2017-05-29 09:56:27353 } else {
354 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
355 }
kjellanderc76dc952016-06-03 10:09:32356}
kjellander82a94492016-06-13 05:12:01357
Danil Chapovalov4844c5f2019-04-10 12:10:10358# Heavy but optional helper for unittests and webrtc users who prefer to use
359# defaults factories or do not worry about extra dependencies and binary size.
Mirko Bonadei86d053c2019-10-17 19:32:04360rtc_library("rtc_media_engine_defaults") {
Danil Chapovalov4844c5f2019-04-10 12:10:10361 visibility = [ "*" ]
362 allow_poison = [
363 "audio_codecs",
Danil Chapovalov41300af2019-07-10 10:44:43364 "default_task_queue",
Danil Chapovalov4844c5f2019-04-10 12:10:10365 "software_video_codecs",
366 ]
367 sources = [
368 "engine/webrtc_media_engine_defaults.cc",
369 "engine/webrtc_media_engine_defaults.h",
370 ]
371 deps = [
372 ":rtc_audio_video",
373 "../api/audio_codecs:builtin_audio_decoder_factory",
374 "../api/audio_codecs:builtin_audio_encoder_factory",
375 "../api/task_queue:default_task_queue_factory",
376 "../api/video:builtin_video_bitrate_allocator_factory",
377 "../api/video_codecs:builtin_video_decoder_factory",
378 "../api/video_codecs:builtin_video_encoder_factory",
379 "../modules/audio_processing:api",
380 "../rtc_base:checks",
Ken MacKay831ce5f2019-12-02 18:26:34381 "../rtc_base/system:rtc_export",
Danil Chapovalov4844c5f2019-04-10 12:10:10382 ]
383}
384
Florent Castellia80c3e52021-04-15 13:02:56385rtc_source_set("rtc_data_sctp_transport_internal") {
386 sources = [ "sctp/sctp_transport_internal.h" ]
Danil Chapovalov6fe6b5a2019-04-10 10:50:24387 deps = [
Florent Castellid95b1492021-05-10 09:29:56388 "../api/transport:datagram_transport_interface",
Florent Castellia80c3e52021-04-15 13:02:56389 "../media:rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24390 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24391 "../rtc_base:rtc_base_approved",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01392 "../rtc_base:threading",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24393 "../rtc_base/third_party/sigslot",
Mirko Bonadei2dcf3482020-06-05 12:30:41394 ]
Florent Castellia80c3e52021-04-15 13:02:56395}
zhihuang38ede132017-06-15 19:52:32396
Florent Castellia6983c62021-05-06 08:50:07397if (rtc_build_dcsctp) {
398 rtc_library("rtc_data_dcsctp_transport") {
399 sources = [
400 "sctp/dcsctp_transport.cc",
401 "sctp/dcsctp_transport.h",
402 ]
403 deps = [
404 ":rtc_data_sctp_transport_internal",
405 "../api:array_view",
Henrik Boströmb951dc62022-01-26 17:38:13406 "../api/task_queue:task_queue",
Florent Castellia6983c62021-05-06 08:50:07407 "../media:rtc_media_base",
Florent Castelli6a11c842021-06-01 16:39:49408 "../net/dcsctp/public:factory",
Florent Castellia6983c62021-05-06 08:50:07409 "../net/dcsctp/public:socket",
410 "../net/dcsctp/public:types",
Victor Boivie5e726da2021-06-19 05:59:01411 "../net/dcsctp/public:utils",
Florent Castellia6983c62021-05-06 08:50:07412 "../net/dcsctp/timer:task_queue_timeout",
413 "../p2p:rtc_p2p",
414 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30415 "../rtc_base:logging",
Florent Castelli71337f32022-04-14 10:41:26416 "../rtc_base:random",
Florent Castellia6983c62021-05-06 08:50:07417 "../rtc_base:rtc_base_approved",
Victor Boivie8df32eb2021-08-12 13:21:25418 "../rtc_base:socket",
Florent Castelli57aa81b2022-04-04 15:14:02419 "../rtc_base:stringutils",
Florent Castellia6983c62021-05-06 08:50:07420 "../rtc_base:threading",
421 "../rtc_base/task_utils:pending_task_safety_flag",
422 "../rtc_base/task_utils:to_queued_task",
423 "../rtc_base/third_party/sigslot:sigslot",
424 "../system_wrappers",
425 ]
426 absl_deps += [
427 "//third_party/abseil-cpp/absl/strings:strings",
428 "//third_party/abseil-cpp/absl/types:optional",
429 ]
430 }
431}
432
Florent Castellia80c3e52021-04-15 13:02:56433rtc_library("rtc_data_sctp_transport_factory") {
434 defines = []
435 sources = [
436 "sctp/sctp_transport_factory.cc",
437 "sctp/sctp_transport_factory.h",
438 ]
439 deps = [
440 ":rtc_data_sctp_transport_internal",
441 "../api/transport:sctp_transport_factory_interface",
442 "../rtc_base:threading",
443 "../rtc_base/system:unused",
444 ]
445
446 if (rtc_enable_sctp) {
Florent Castellif2599a72022-03-31 17:15:10447 assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
Florent Castellia6983c62021-05-06 08:50:07448 }
449
450 if (rtc_build_dcsctp) {
451 defines += [ "WEBRTC_HAVE_DCSCTP" ]
452 deps += [
453 ":rtc_data_dcsctp_transport",
454 "../system_wrappers",
455 "../system_wrappers:field_trial",
456 ]
Florent Castellia80c3e52021-04-15 13:02:56457 }
zhihuang38ede132017-06-15 19:52:32458}
459
460rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53461 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23462 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Florent Castellia80c3e52021-04-15 13:02:56463 deps = [ ":rtc_audio_video" ]
zhihuang38ede132017-06-15 19:52:32464}
465
kjellander82a94492016-06-13 05:12:01466if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04467 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01468 testonly = true
469
Anders Carlsson5f2bb622018-05-14 07:48:06470 defines = []
kjellandera2ef4f92017-03-06 14:04:55471 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30472 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24473 ":rtc_internal_video_codecs",
474 ":rtc_media",
475 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18476 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24477 "../api:call_api",
Elad Alon8f01c4e2019-06-28 13:19:43478 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48479 "../api:scoped_refptr",
Erik Språngceb44952020-09-22 09:36:35480 "../api/transport:field_trial_based_config",
Yves Gerey3e707812018-11-28 15:47:49481 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24482 "../api/video:video_bitrate_allocation",
483 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38484 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24485 "../api/video_codecs:video_codecs_api",
486 "../call:call_interfaces",
487 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 12:43:23488 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 12:35:10489 "../common_video",
490 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54491 "../modules/audio_processing:api",
Mirko Bonadeib5728d92017-12-06 06:51:33492 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10493 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08494 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 14:04:55495 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24496 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 15:05:42497 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 12:15:08498 "../rtc_base:gunit_helpers",
Florent Castelli4467ad72022-04-04 13:18:46499 "../rtc_base:macromagic",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24500 "../rtc_base:rtc_base_approved",
Florent Castelli33d31fb2022-04-04 14:57:52501 "../rtc_base:rtc_event",
Tommi8d2c5a82018-03-19 10:12:48502 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 13:40:10503 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01504 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15505 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:11506 "../rtc_base/synchronization:mutex",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24507 "../rtc_base/third_party/sigslot",
Jonas Oreland8ca06132022-03-14 11:52:48508 "../test:scoped_key_value_config",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24509 "../test:test_support",
510 "//testing/gtest",
Mirko Bonadei2dcf3482020-06-05 12:30:41511 ]
512 absl_deps = [
Steve Anton2c9ebef2019-01-29 01:27:58513 "//third_party/abseil-cpp/absl/algorithm:container",
Yves Gerey69807e82018-10-30 21:23:02514 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 14:04:55515 ]
kjellander82a94492016-06-13 05:12:01516 sources = [
Steve Anton10542f22019-01-11 17:11:00517 "base/fake_frame_source.cc",
518 "base/fake_frame_source.h",
519 "base/fake_media_engine.cc",
520 "base/fake_media_engine.h",
521 "base/fake_network_interface.h",
522 "base/fake_rtp.cc",
523 "base/fake_rtp.h",
Steve Anton10542f22019-01-11 17:11:00524 "base/fake_video_renderer.cc",
525 "base/fake_video_renderer.h",
526 "base/test_utils.cc",
527 "base/test_utils.h",
528 "engine/fake_webrtc_call.cc",
529 "engine/fake_webrtc_call.h",
530 "engine/fake_webrtc_video_engine.cc",
531 "engine/fake_webrtc_video_engine.h",
kjellander82a94492016-06-13 05:12:01532 ]
kjellander82a94492016-06-13 05:12:01533 }
534
Andrey Logvine7c79fd2021-02-01 09:56:37535 if (!build_with_chromium) {
536 rtc_media_unittests_resources = [
537 "../resources/media/captured-320x240-2s-48.frames",
538 "../resources/media/faces.1280x720_P420.yuv",
539 "../resources/media/faces_I400.jpg",
540 "../resources/media/faces_I411.jpg",
541 "../resources/media/faces_I420.jpg",
542 "../resources/media/faces_I422.jpg",
543 "../resources/media/faces_I444.jpg",
Andrey Logvin78646002021-01-29 10:50:19544 ]
kjellander32c4a202016-08-30 09:53:49545
546 if (is_ios) {
Andrey Logvine7c79fd2021-02-01 09:56:37547 bundle_data("rtc_media_unittests_bundle_data") {
548 testonly = true
549 sources = rtc_media_unittests_resources
550 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
551 }
kjellander82a94492016-06-13 05:12:01552 }
Taylor Brandstetterc2128732020-07-03 23:37:57553
Andrey Logvine7c79fd2021-02-01 09:56:37554 rtc_test("rtc_media_unittests") {
555 testonly = true
556
557 defines = []
558 deps = [
559 ":rtc_audio_video",
Andrey Logvine7c79fd2021-02-01 09:56:37560 ":rtc_encoder_simulcast_proxy",
561 ":rtc_internal_video_codecs",
562 ":rtc_media",
563 ":rtc_media_base",
564 ":rtc_media_engine_defaults",
565 ":rtc_media_tests_utils",
Johannes Kronc3fcee72021-04-19 07:09:26566 ":rtc_sdp_video_format_utils",
Andrey Logvine7c79fd2021-02-01 09:56:37567 ":rtc_simulcast_encoder_adapter",
Andrey Logvine7c79fd2021-02-01 09:56:37568 "../api:create_simulcast_test_fixture_api",
569 "../api:libjingle_peerconnection_api",
570 "../api:mock_video_bitrate_allocator",
571 "../api:mock_video_bitrate_allocator_factory",
572 "../api:mock_video_codec_factory",
573 "../api:mock_video_encoder",
574 "../api:rtp_parameters",
575 "../api:scoped_refptr",
576 "../api:simulcast_test_fixture_api",
577 "../api/audio_codecs:builtin_audio_decoder_factory",
578 "../api/audio_codecs:builtin_audio_encoder_factory",
579 "../api/rtc_event_log",
580 "../api/task_queue",
581 "../api/task_queue:default_task_queue_factory",
582 "../api/test/video:function_video_factory",
583 "../api/transport:field_trial_based_config",
584 "../api/units:time_delta",
Markus Handellee034312021-11-05 14:02:03585 "../api/units:timestamp",
Andrey Logvine7c79fd2021-02-01 09:56:37586 "../api/video:builtin_video_bitrate_allocator_factory",
587 "../api/video:video_bitrate_allocation",
Sergey Silkin0e3cb9f2021-02-02 17:23:40588 "../api/video:video_codec_constants",
Andrey Logvine7c79fd2021-02-01 09:56:37589 "../api/video:video_frame",
590 "../api/video:video_rtp_headers",
591 "../api/video_codecs:builtin_video_decoder_factory",
592 "../api/video_codecs:builtin_video_encoder_factory",
593 "../api/video_codecs:video_codecs_api",
594 "../audio",
595 "../call:call_interfaces",
596 "../common_video",
Andrey Logvine7c79fd2021-02-01 09:56:37597 "../modules/audio_device:mock_audio_device",
598 "../modules/audio_processing",
599 "../modules/audio_processing:api",
600 "../modules/audio_processing:mocks",
601 "../modules/rtp_rtcp",
Danil Chapovalov47f5f8c2021-06-03 10:27:12602 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37603 "../modules/video_coding:simulcast_test_fixture_impl",
604 "../modules/video_coding:video_codec_interface",
605 "../modules/video_coding:webrtc_h264",
606 "../modules/video_coding:webrtc_vp8",
607 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
philipel95701502022-01-18 17:47:52608 "../modules/video_coding/codecs/av1:libaom_av1_encoder_if_supported",
Andrey Logvine7c79fd2021-02-01 09:56:37609 "../p2p:p2p_test_utils",
610 "../rtc_base",
611 "../rtc_base:checks",
612 "../rtc_base:gunit_helpers",
Florent Castelli0af55ba2022-04-04 13:06:30613 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46614 "../rtc_base:macromagic",
Andrey Logvine7c79fd2021-02-01 09:56:37615 "../rtc_base:rtc_base_approved",
616 "../rtc_base:rtc_base_tests_utils",
Florent Castelli33d31fb2022-04-04 14:57:52617 "../rtc_base:rtc_event",
Andrey Logvine7c79fd2021-02-01 09:56:37618 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37619 "../rtc_base:safe_conversions",
Andrey Logvine7c79fd2021-02-01 09:56:37620 "../rtc_base:stringutils",
621 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15622 "../rtc_base:timeutils",
Andrey Logvine7c79fd2021-02-01 09:56:37623 "../rtc_base/experiments:min_video_bitrate_experiment",
624 "../rtc_base/synchronization:mutex",
625 "../rtc_base/third_party/sigslot",
Tommia334dc62021-06-04 10:50:01626 "../system_wrappers:field_trial",
Andrey Logvine7c79fd2021-02-01 09:56:37627 "../test:audio_codec_mocks",
628 "../test:fake_video_codecs",
629 "../test:field_trial",
630 "../test:rtp_test_utils",
Jonas Oreland4476b822022-03-10 14:21:28631 "../test:scoped_key_value_config",
Andrey Logvine7c79fd2021-02-01 09:56:37632 "../test:test_main",
633 "../test:test_support",
634 "../test:video_test_common",
Markus Handellee034312021-11-05 14:02:03635 "../test/time_controller",
Andrey Logvine7c79fd2021-02-01 09:56:37636 ]
637 absl_deps = [
638 "//third_party/abseil-cpp/absl/algorithm:container",
639 "//third_party/abseil-cpp/absl/memory",
640 "//third_party/abseil-cpp/absl/strings",
641 "//third_party/abseil-cpp/absl/types:optional",
642 ]
643 sources = [
644 "base/codec_unittest.cc",
645 "base/media_engine_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37646 "base/rtp_utils_unittest.cc",
Johannes Kronc3fcee72021-04-19 07:09:26647 "base/sdp_video_format_utils_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37648 "base/stream_params_unittest.cc",
649 "base/turn_utils_unittest.cc",
650 "base/video_adapter_unittest.cc",
651 "base/video_broadcaster_unittest.cc",
652 "base/video_common_unittest.cc",
653 "engine/encoder_simulcast_proxy_unittest.cc",
654 "engine/internal_decoder_factory_unittest.cc",
Johannes Kronb26863e2021-09-15 10:56:04655 "engine/internal_encoder_factory_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37656 "engine/multiplex_codec_factory_unittest.cc",
657 "engine/null_webrtc_video_engine_unittest.cc",
658 "engine/payload_type_mapper_unittest.cc",
659 "engine/simulcast_encoder_adapter_unittest.cc",
660 "engine/simulcast_unittest.cc",
661 "engine/unhandled_packets_buffer_unittest.cc",
662 "engine/webrtc_media_engine_unittest.cc",
663 "engine/webrtc_video_engine_unittest.cc",
664 ]
665
666 # TODO(kthelgason): Reenable this test on iOS.
667 # See bugs.webrtc.org/5569
668 if (!is_ios) {
669 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
670 }
671
Andrey Logvine7c79fd2021-02-01 09:56:37672 if (rtc_opus_support_120ms_ptime) {
673 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
674 } else {
675 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
676 }
677
678 data = rtc_media_unittests_resources
679
680 if (is_android) {
681 deps += [ "//testing/android/native_test:native_test_support" ]
682 shard_timeout = 900
683 }
684
685 if (is_ios) {
686 deps += [ ":rtc_media_unittests_bundle_data" ]
687 }
Taylor Brandstetterc2128732020-07-03 23:37:57688 }
kjellander82a94492016-06-13 05:12:01689 }
690}