blob: b3b249ce954d6360aee726e0e9cb7e9e23aab889 [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",
Florent Castellif9c59842022-04-19 15:07:2382 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:3683 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:4284 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:4685 "../rtc_base:copy_on_write_buffer",
Florent Castelli0af55ba2022-04-04 13:06:3086 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:4687 "../rtc_base:macromagic",
Tommi8d2c5a82018-03-19 10:12:4888 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 15:05:4289 "../rtc_base:sanitizer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:0190 "../rtc_base:socket",
Patrik Höglund3e113432017-12-15 13:40:1091 "../rtc_base:stringutils",
Florent Castellidd837e22022-04-04 15:16:1592 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:1193 "../rtc_base/synchronization:mutex",
Niels Möllere8e4dc42019-06-11 12:04:1694 "../rtc_base/system:file_wrapper",
Tommi816134a2021-05-24 14:54:4195 "../rtc_base/system:no_unique_address",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2496 "../rtc_base/system:rtc_export",
Tommicf2aeff2021-05-07 16:02:5397 "../rtc_base/task_utils:pending_task_safety_flag",
98 "../rtc_base/task_utils:to_queued_task",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2499 "../rtc_base/third_party/sigslot",
Åsa Persson3f7e0ed2019-10-18 13:03:13100 "../system_wrappers:field_trial",
Mirko Bonadei2dcf3482020-06-05 12:30:41101 ]
102 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24103 "//third_party/abseil-cpp/absl/algorithm:container",
104 "//third_party/abseil-cpp/absl/strings",
105 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 15:05:42106 ]
kjellanderc76dc952016-06-03 10:09:32107 sources = [
Steve Anton10542f22019-01-11 17:11:00108 "base/adapted_video_track_source.cc",
109 "base/adapted_video_track_source.h",
110 "base/audio_source.h",
kjellanderc76dc952016-06-03 10:09:32111 "base/codec.cc",
112 "base/codec.h",
Ruslan Burakov493a6502019-02-27 14:32:48113 "base/delayable.h",
Steve Anton10542f22019-01-11 17:11:00114 "base/media_channel.cc",
115 "base/media_channel.h",
116 "base/media_constants.cc",
117 "base/media_constants.h",
118 "base/media_engine.cc",
119 "base/media_engine.h",
120 "base/rid_description.cc",
121 "base/rid_description.h",
Steve Anton10542f22019-01-11 17:11:00122 "base/rtp_utils.cc",
123 "base/rtp_utils.h",
124 "base/stream_params.cc",
125 "base/stream_params.h",
126 "base/turn_utils.cc",
127 "base/turn_utils.h",
128 "base/video_adapter.cc",
129 "base/video_adapter.h",
130 "base/video_broadcaster.cc",
131 "base/video_broadcaster.h",
Steve Anton10542f22019-01-11 17:11:00132 "base/video_common.cc",
133 "base/video_common.h",
134 "base/video_source_base.cc",
135 "base/video_source_base.h",
magjed0928a3c2016-11-25 08:40:18136 ]
magjed0928a3c2016-11-25 08:40:18137}
138
Mirko Bonadei86d053c2019-10-17 19:32:04139rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 07:51:18140 visibility = [ "*" ]
141 defines = []
142 libs = []
143 sources = [
144 "engine/simulcast_encoder_adapter.cc",
145 "engine/simulcast_encoder_adapter.h",
146 ]
147 deps = [
Rasmus Brandt5cad55b2019-12-19 08:47:11148 ":rtc_media_base",
Elad Alon8f01c4e2019-06-28 13:19:43149 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48150 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24151 "../api:sequence_checker",
Erik Språngf93eda12019-01-16 16:10:57152 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 15:47:49153 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38154 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 16:50:03155 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 07:51:18156 "../api/video_codecs:video_codecs_api",
Markus Handell32565f62019-12-04 09:58:17157 "../call:video_stream_api",
Åsa Persson59947d22021-08-26 10:04:27158 "../common_video",
Jonathan Yu9a5da492018-10-19 07:51:18159 "../modules/video_coding:video_codec_interface",
160 "../modules/video_coding:video_coding_utility",
Florent Castellibddfe022022-04-04 13:03:10161 "../rtc_base:atomicops",
Jonathan Yu9a5da492018-10-19 07:51:18162 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30163 "../rtc_base:logging",
Å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/system:rtc_export",
philipelb09d8722021-11-23 10:00:24223 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24224 "../test:fake_video_codecs",
Patrik Höglund99175c62018-01-08 10:05:10225 ]
philipelb09d8722021-11-23 10:00:24226 if (rtc_include_dav1d_in_internal_decoder_factory) {
227 deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
228 }
Johannes Kronb26863e2021-09-15 10:56:04229 absl_deps = [
230 "//third_party/abseil-cpp/absl/strings",
231 "//third_party/abseil-cpp/absl/types:optional",
232 ]
Anders Carlssona114c882018-01-04 14:10:22233 sources = [
Emircan Uysaler7c03bdc2019-01-16 20:07:56234 "engine/fake_video_codec_factory.cc",
235 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 17:11:00236 "engine/internal_decoder_factory.cc",
237 "engine/internal_decoder_factory.h",
238 "engine/internal_encoder_factory.cc",
239 "engine/internal_encoder_factory.h",
240 "engine/multiplex_codec_factory.cc",
241 "engine/multiplex_codec_factory.h",
Jonathan Yu327b7532018-10-25 00:21:36242
243 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 12:38:24244 # targets depend on :rtc_encoder_simulcast_proxy directly.
245 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 14:10:22246 ]
Anders Carlssona114c882018-01-04 14:10:22247}
248
Mirko Bonadei86d053c2019-10-17 19:32:04249rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53250 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23251 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 14:10:22252 defines = []
253 libs = []
254 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24255 ":rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24256 "../api:call_api",
Jonas Orelande62c2f22022-03-29 09:04:48257 "../api:field_trials_view",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24258 "../api:libjingle_peerconnection_api",
Florent Castellib05ca4b2020-03-05 12:39:55259 "../api:media_stream_interface",
Niels Möller6dcd4dc2019-08-26 08:45:28260 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:48261 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24262 "../api:sequence_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24263 "../api:transport_api",
Olga Sharonova09ceed22020-09-30 16:27:39264 "../api/audio:audio_frame_processor",
Danil Chapovalov85b8ce22019-05-31 13:51:04265 "../api/audio:audio_mixer_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24266 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalov4c7112a2019-03-27 17:51:45267 "../api/task_queue",
Mirko Bonadei738bfa72019-09-17 12:47:38268 "../api/transport:bitrate_settings",
Erik Språngceb44952020-09-22 09:36:35269 "../api/transport:field_trial_based_config",
Niels Möllera8370302019-09-02 13:16:49270 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 14:19:43271 "../api/units:data_rate",
Yves Gerey3e707812018-11-28 15:47:49272 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 18:02:56273 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24274 "../api/video:video_codec_constants",
275 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38276 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24277 "../api/video_codecs:rtc_software_fallback_wrappers",
278 "../api/video_codecs:video_codecs_api",
279 "../call",
280 "../call:call_interfaces",
281 "../call:video_stream_api",
282 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:39283 "../modules/async_audio_processing:async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24284 "../modules/audio_device",
285 "../modules/audio_device:audio_device_impl",
286 "../modules/audio_mixer:audio_mixer_impl",
Alessio Bazzicab768e882018-11-07 14:29:54287 "../modules/audio_processing:api",
Artem Titov94b57c02019-03-21 12:35:10288 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 08:10:26289 "../modules/audio_processing/agc:gain_control_interface",
Danil Chapovalov99a71f42021-07-19 13:20:46290 "../modules/rtp_rtcp:rtp_rtcp_format",
Artem Titov94b57c02019-03-21 12:35:10291 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 09:11:40292 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 14:16:38293 "../modules/video_coding:video_coding_utility",
Niels Möller79d566b2022-04-29 09:03:13294 "../modules/video_coding/svc:scalability_mode_util",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24295 "../rtc_base",
Jonas Olssonabbe8412018-04-03 11:40:05296 "../rtc_base:audio_format_to_string",
Florent Castellif9c59842022-04-19 15:07:23297 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36298 "../rtc_base:byte_order",
Anders Carlssona114c882018-01-04 14:10:22299 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46300 "../rtc_base:copy_on_write_buffer",
Florent Castellia30aef32022-04-19 15:47:13301 "../rtc_base:event_tracer",
Jakob Ivarsson39adce12020-06-25 12:09:58302 "../rtc_base:ignore_wundef",
Florent Castelli0af55ba2022-04-04 13:06:30303 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46304 "../rtc_base:macromagic",
Florent Castellif4db3512022-04-14 11:38:05305 "../rtc_base:race_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24306 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37307 "../rtc_base:safe_conversions",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24308 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01309 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15310 "../rtc_base:timeutils",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24311 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 14:19:43312 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24313 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Rasmus Brandt2b9317a2019-10-30 12:01:46314 "../rtc_base/experiments:rate_control_settings",
Markus Handell1e257ca2020-07-07 13:43:11315 "../rtc_base/synchronization:mutex",
Mirko Bonadei276827c2018-10-16 12:13:50316 "../rtc_base/system:rtc_export",
Tomas Gunnarsson33c0ab42021-01-18 09:49:05317 "../rtc_base/task_utils:pending_task_safety_flag",
318 "../rtc_base/task_utils:to_queued_task",
Artem Titova76af0c2018-07-23 15:38:12319 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24320 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10321 "../system_wrappers:metrics",
Mirko Bonadei2dcf3482020-06-05 12:30:41322 ]
323 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24324 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24325 "//third_party/abseil-cpp/absl/strings",
326 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 14:10:22327 ]
328
329 sources = [
330 "engine/adm_helpers.cc",
331 "engine/adm_helpers.h",
Steve Anton10542f22019-01-11 17:11:00332 "engine/null_webrtc_video_engine.h",
Anders Carlssona114c882018-01-04 14:10:22333 "engine/payload_type_mapper.cc",
334 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 09:32:13335 "engine/simulcast.cc",
336 "engine/simulcast.h",
Jonas Oreland6d835922019-03-18 09:59:40337 "engine/unhandled_packets_buffer.cc",
338 "engine/unhandled_packets_buffer.h",
Steve Anton10542f22019-01-11 17:11:00339 "engine/webrtc_media_engine.cc",
340 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 17:11:00341 "engine/webrtc_video_engine.cc",
342 "engine/webrtc_video_engine.h",
343 "engine/webrtc_voice_engine.cc",
344 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 10:09:32345 ]
346
ehmaldonadoe9cc6862016-09-05 13:10:18347 public_configs = []
Niels Möller85818772019-04-09 06:24:58348 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 10:09:32349 public_configs += [ ":rtc_media_defines_config" ]
350 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
351 }
aleloi048cbdd2017-05-29 09:56:27352 if (rtc_enable_protobuf) {
Jakob Ivarsson39adce12020-06-25 12:09:58353 deps += [
354 "../modules/audio_coding:ana_config_proto",
355 "../modules/audio_processing/aec_dump:aec_dump_impl",
356 ]
aleloi048cbdd2017-05-29 09:56:27357 } else {
358 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
359 }
kjellanderc76dc952016-06-03 10:09:32360}
kjellander82a94492016-06-13 05:12:01361
Danil Chapovalov4844c5f2019-04-10 12:10:10362# Heavy but optional helper for unittests and webrtc users who prefer to use
363# defaults factories or do not worry about extra dependencies and binary size.
Mirko Bonadei86d053c2019-10-17 19:32:04364rtc_library("rtc_media_engine_defaults") {
Danil Chapovalov4844c5f2019-04-10 12:10:10365 visibility = [ "*" ]
366 allow_poison = [
367 "audio_codecs",
Danil Chapovalov41300af2019-07-10 10:44:43368 "default_task_queue",
Danil Chapovalov4844c5f2019-04-10 12:10:10369 "software_video_codecs",
370 ]
371 sources = [
372 "engine/webrtc_media_engine_defaults.cc",
373 "engine/webrtc_media_engine_defaults.h",
374 ]
375 deps = [
376 ":rtc_audio_video",
377 "../api/audio_codecs:builtin_audio_decoder_factory",
378 "../api/audio_codecs:builtin_audio_encoder_factory",
379 "../api/task_queue:default_task_queue_factory",
380 "../api/video:builtin_video_bitrate_allocator_factory",
381 "../api/video_codecs:builtin_video_decoder_factory",
382 "../api/video_codecs:builtin_video_encoder_factory",
383 "../modules/audio_processing:api",
384 "../rtc_base:checks",
Ken MacKay831ce5f2019-12-02 18:26:34385 "../rtc_base/system:rtc_export",
Danil Chapovalov4844c5f2019-04-10 12:10:10386 ]
387}
388
Florent Castellia80c3e52021-04-15 13:02:56389rtc_source_set("rtc_data_sctp_transport_internal") {
390 sources = [ "sctp/sctp_transport_internal.h" ]
Danil Chapovalov6fe6b5a2019-04-10 10:50:24391 deps = [
Florent Castellid95b1492021-05-10 09:29:56392 "../api/transport:datagram_transport_interface",
Florent Castellia80c3e52021-04-15 13:02:56393 "../media:rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24394 "../p2p:rtc_p2p",
Florent Castellied4aadc2022-04-19 15:40:46395 "../rtc_base:copy_on_write_buffer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01396 "../rtc_base:threading",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24397 "../rtc_base/third_party/sigslot",
Mirko Bonadei2dcf3482020-06-05 12:30:41398 ]
Florent Castellia80c3e52021-04-15 13:02:56399}
zhihuang38ede132017-06-15 19:52:32400
Florent Castellia6983c62021-05-06 08:50:07401if (rtc_build_dcsctp) {
402 rtc_library("rtc_data_dcsctp_transport") {
403 sources = [
404 "sctp/dcsctp_transport.cc",
405 "sctp/dcsctp_transport.h",
406 ]
407 deps = [
408 ":rtc_data_sctp_transport_internal",
409 "../api:array_view",
Henrik Boströmb951dc62022-01-26 17:38:13410 "../api/task_queue:task_queue",
Florent Castellia6983c62021-05-06 08:50:07411 "../media:rtc_media_base",
Florent Castelli6a11c842021-06-01 16:39:49412 "../net/dcsctp/public:factory",
Florent Castellia6983c62021-05-06 08:50:07413 "../net/dcsctp/public:socket",
414 "../net/dcsctp/public:types",
Victor Boivie5e726da2021-06-19 05:59:01415 "../net/dcsctp/public:utils",
Florent Castellia6983c62021-05-06 08:50:07416 "../net/dcsctp/timer:task_queue_timeout",
417 "../p2p:rtc_p2p",
418 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46419 "../rtc_base:copy_on_write_buffer",
Florent Castellia30aef32022-04-19 15:47:13420 "../rtc_base:event_tracer",
Florent Castelli0af55ba2022-04-04 13:06:30421 "../rtc_base:logging",
Florent Castelli71337f32022-04-14 10:41:26422 "../rtc_base:random",
Victor Boivie8df32eb2021-08-12 13:21:25423 "../rtc_base:socket",
Florent Castelli57aa81b2022-04-04 15:14:02424 "../rtc_base:stringutils",
Florent Castellia6983c62021-05-06 08:50:07425 "../rtc_base:threading",
Florent Castellie3b74f82022-05-02 22:24:15426 "../rtc_base/containers:flat_set",
Florent Castellia6983c62021-05-06 08:50:07427 "../rtc_base/task_utils:pending_task_safety_flag",
428 "../rtc_base/task_utils:to_queued_task",
429 "../rtc_base/third_party/sigslot:sigslot",
430 "../system_wrappers",
431 ]
432 absl_deps += [
433 "//third_party/abseil-cpp/absl/strings:strings",
434 "//third_party/abseil-cpp/absl/types:optional",
435 ]
436 }
437}
438
Florent Castellia80c3e52021-04-15 13:02:56439rtc_library("rtc_data_sctp_transport_factory") {
440 defines = []
441 sources = [
442 "sctp/sctp_transport_factory.cc",
443 "sctp/sctp_transport_factory.h",
444 ]
445 deps = [
446 ":rtc_data_sctp_transport_internal",
447 "../api/transport:sctp_transport_factory_interface",
448 "../rtc_base:threading",
449 "../rtc_base/system:unused",
450 ]
451
452 if (rtc_enable_sctp) {
Florent Castellif2599a72022-03-31 17:15:10453 assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
Florent Castellia6983c62021-05-06 08:50:07454 }
455
456 if (rtc_build_dcsctp) {
457 defines += [ "WEBRTC_HAVE_DCSCTP" ]
458 deps += [
459 ":rtc_data_dcsctp_transport",
460 "../system_wrappers",
461 "../system_wrappers:field_trial",
462 ]
Florent Castellia80c3e52021-04-15 13:02:56463 }
zhihuang38ede132017-06-15 19:52:32464}
465
466rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53467 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23468 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Florent Castellia80c3e52021-04-15 13:02:56469 deps = [ ":rtc_audio_video" ]
zhihuang38ede132017-06-15 19:52:32470}
471
kjellander82a94492016-06-13 05:12:01472if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04473 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01474 testonly = true
475
Anders Carlsson5f2bb622018-05-14 07:48:06476 defines = []
kjellandera2ef4f92017-03-06 14:04:55477 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30478 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24479 ":rtc_internal_video_codecs",
480 ":rtc_media",
481 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18482 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24483 "../api:call_api",
Elad Alon8f01c4e2019-06-28 13:19:43484 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48485 "../api:scoped_refptr",
Erik Språngceb44952020-09-22 09:36:35486 "../api/transport:field_trial_based_config",
Yves Gerey3e707812018-11-28 15:47:49487 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24488 "../api/video:video_bitrate_allocation",
489 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38490 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24491 "../api/video_codecs:video_codecs_api",
492 "../call:call_interfaces",
493 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 12:43:23494 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 12:35:10495 "../common_video",
496 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54497 "../modules/audio_processing:api",
Mirko Bonadeib5728d92017-12-06 06:51:33498 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10499 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08500 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 14:04:55501 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24502 "../rtc_base",
Florent Castellif9c59842022-04-19 15:07:23503 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36504 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:42505 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46506 "../rtc_base:copy_on_write_buffer",
Mirko Bonadeie3abb812018-11-23 12:15:08507 "../rtc_base:gunit_helpers",
Florent Castelli4467ad72022-04-04 13:18:46508 "../rtc_base:macromagic",
Florent Castelli33d31fb2022-04-04 14:57:52509 "../rtc_base:rtc_event",
Tommi8d2c5a82018-03-19 10:12:48510 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 13:40:10511 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01512 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15513 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:11514 "../rtc_base/synchronization:mutex",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24515 "../rtc_base/third_party/sigslot",
Jonas Oreland8ca06132022-03-14 11:52:48516 "../test:scoped_key_value_config",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24517 "../test:test_support",
518 "//testing/gtest",
Mirko Bonadei2dcf3482020-06-05 12:30:41519 ]
520 absl_deps = [
Steve Anton2c9ebef2019-01-29 01:27:58521 "//third_party/abseil-cpp/absl/algorithm:container",
Yves Gerey69807e82018-10-30 21:23:02522 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 14:04:55523 ]
kjellander82a94492016-06-13 05:12:01524 sources = [
Steve Anton10542f22019-01-11 17:11:00525 "base/fake_frame_source.cc",
526 "base/fake_frame_source.h",
527 "base/fake_media_engine.cc",
528 "base/fake_media_engine.h",
529 "base/fake_network_interface.h",
530 "base/fake_rtp.cc",
531 "base/fake_rtp.h",
Steve Anton10542f22019-01-11 17:11:00532 "base/fake_video_renderer.cc",
533 "base/fake_video_renderer.h",
534 "base/test_utils.cc",
535 "base/test_utils.h",
536 "engine/fake_webrtc_call.cc",
537 "engine/fake_webrtc_call.h",
538 "engine/fake_webrtc_video_engine.cc",
539 "engine/fake_webrtc_video_engine.h",
kjellander82a94492016-06-13 05:12:01540 ]
kjellander82a94492016-06-13 05:12:01541 }
542
Andrey Logvine7c79fd2021-02-01 09:56:37543 if (!build_with_chromium) {
544 rtc_media_unittests_resources = [
545 "../resources/media/captured-320x240-2s-48.frames",
546 "../resources/media/faces.1280x720_P420.yuv",
547 "../resources/media/faces_I400.jpg",
548 "../resources/media/faces_I411.jpg",
549 "../resources/media/faces_I420.jpg",
550 "../resources/media/faces_I422.jpg",
551 "../resources/media/faces_I444.jpg",
Andrey Logvin78646002021-01-29 10:50:19552 ]
kjellander32c4a202016-08-30 09:53:49553
554 if (is_ios) {
Andrey Logvine7c79fd2021-02-01 09:56:37555 bundle_data("rtc_media_unittests_bundle_data") {
556 testonly = true
557 sources = rtc_media_unittests_resources
558 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
559 }
kjellander82a94492016-06-13 05:12:01560 }
Taylor Brandstetterc2128732020-07-03 23:37:57561
Andrey Logvine7c79fd2021-02-01 09:56:37562 rtc_test("rtc_media_unittests") {
563 testonly = true
564
565 defines = []
566 deps = [
567 ":rtc_audio_video",
Andrey Logvine7c79fd2021-02-01 09:56:37568 ":rtc_encoder_simulcast_proxy",
569 ":rtc_internal_video_codecs",
570 ":rtc_media",
571 ":rtc_media_base",
572 ":rtc_media_engine_defaults",
573 ":rtc_media_tests_utils",
Johannes Kronc3fcee72021-04-19 07:09:26574 ":rtc_sdp_video_format_utils",
Andrey Logvine7c79fd2021-02-01 09:56:37575 ":rtc_simulcast_encoder_adapter",
Andrey Logvine7c79fd2021-02-01 09:56:37576 "../api:create_simulcast_test_fixture_api",
577 "../api:libjingle_peerconnection_api",
578 "../api:mock_video_bitrate_allocator",
579 "../api:mock_video_bitrate_allocator_factory",
580 "../api:mock_video_codec_factory",
581 "../api:mock_video_encoder",
582 "../api:rtp_parameters",
583 "../api:scoped_refptr",
584 "../api:simulcast_test_fixture_api",
585 "../api/audio_codecs:builtin_audio_decoder_factory",
586 "../api/audio_codecs:builtin_audio_encoder_factory",
587 "../api/rtc_event_log",
588 "../api/task_queue",
589 "../api/task_queue:default_task_queue_factory",
590 "../api/test/video:function_video_factory",
591 "../api/transport:field_trial_based_config",
592 "../api/units:time_delta",
Markus Handellee034312021-11-05 14:02:03593 "../api/units:timestamp",
Andrey Logvine7c79fd2021-02-01 09:56:37594 "../api/video:builtin_video_bitrate_allocator_factory",
595 "../api/video:video_bitrate_allocation",
Sergey Silkin0e3cb9f2021-02-02 17:23:40596 "../api/video:video_codec_constants",
Andrey Logvine7c79fd2021-02-01 09:56:37597 "../api/video:video_frame",
598 "../api/video:video_rtp_headers",
599 "../api/video_codecs:builtin_video_decoder_factory",
600 "../api/video_codecs:builtin_video_encoder_factory",
601 "../api/video_codecs:video_codecs_api",
602 "../audio",
603 "../call:call_interfaces",
604 "../common_video",
Andrey Logvine7c79fd2021-02-01 09:56:37605 "../modules/audio_device:mock_audio_device",
606 "../modules/audio_processing",
607 "../modules/audio_processing:api",
608 "../modules/audio_processing:mocks",
609 "../modules/rtp_rtcp",
Danil Chapovalov47f5f8c2021-06-03 10:27:12610 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37611 "../modules/video_coding:simulcast_test_fixture_impl",
612 "../modules/video_coding:video_codec_interface",
613 "../modules/video_coding:webrtc_h264",
614 "../modules/video_coding:webrtc_vp8",
615 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
philipel95701502022-01-18 17:47:52616 "../modules/video_coding/codecs/av1:libaom_av1_encoder_if_supported",
Andrey Logvine7c79fd2021-02-01 09:56:37617 "../p2p:p2p_test_utils",
618 "../rtc_base",
Florent Castellia876a922022-04-19 15:18:36619 "../rtc_base:byte_order",
Andrey Logvine7c79fd2021-02-01 09:56:37620 "../rtc_base:checks",
621 "../rtc_base:gunit_helpers",
Florent Castelli0af55ba2022-04-04 13:06:30622 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46623 "../rtc_base:macromagic",
Andrey Logvine7c79fd2021-02-01 09:56:37624 "../rtc_base:rtc_base_tests_utils",
Florent Castelli33d31fb2022-04-04 14:57:52625 "../rtc_base:rtc_event",
Andrey Logvine7c79fd2021-02-01 09:56:37626 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37627 "../rtc_base:safe_conversions",
Andrey Logvine7c79fd2021-02-01 09:56:37628 "../rtc_base:stringutils",
629 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15630 "../rtc_base:timeutils",
Andrey Logvine7c79fd2021-02-01 09:56:37631 "../rtc_base/experiments:min_video_bitrate_experiment",
632 "../rtc_base/synchronization:mutex",
633 "../rtc_base/third_party/sigslot",
Tommia334dc62021-06-04 10:50:01634 "../system_wrappers:field_trial",
Andrey Logvine7c79fd2021-02-01 09:56:37635 "../test:audio_codec_mocks",
636 "../test:fake_video_codecs",
637 "../test:field_trial",
638 "../test:rtp_test_utils",
Jonas Oreland4476b822022-03-10 14:21:28639 "../test:scoped_key_value_config",
Andrey Logvine7c79fd2021-02-01 09:56:37640 "../test:test_main",
641 "../test:test_support",
642 "../test:video_test_common",
Markus Handellee034312021-11-05 14:02:03643 "../test/time_controller",
Andrey Logvine7c79fd2021-02-01 09:56:37644 ]
645 absl_deps = [
646 "//third_party/abseil-cpp/absl/algorithm:container",
647 "//third_party/abseil-cpp/absl/memory",
648 "//third_party/abseil-cpp/absl/strings",
649 "//third_party/abseil-cpp/absl/types:optional",
650 ]
651 sources = [
652 "base/codec_unittest.cc",
653 "base/media_engine_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37654 "base/rtp_utils_unittest.cc",
Johannes Kronc3fcee72021-04-19 07:09:26655 "base/sdp_video_format_utils_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37656 "base/stream_params_unittest.cc",
657 "base/turn_utils_unittest.cc",
658 "base/video_adapter_unittest.cc",
659 "base/video_broadcaster_unittest.cc",
660 "base/video_common_unittest.cc",
661 "engine/encoder_simulcast_proxy_unittest.cc",
662 "engine/internal_decoder_factory_unittest.cc",
Johannes Kronb26863e2021-09-15 10:56:04663 "engine/internal_encoder_factory_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37664 "engine/multiplex_codec_factory_unittest.cc",
665 "engine/null_webrtc_video_engine_unittest.cc",
666 "engine/payload_type_mapper_unittest.cc",
667 "engine/simulcast_encoder_adapter_unittest.cc",
668 "engine/simulcast_unittest.cc",
669 "engine/unhandled_packets_buffer_unittest.cc",
670 "engine/webrtc_media_engine_unittest.cc",
671 "engine/webrtc_video_engine_unittest.cc",
672 ]
673
674 # TODO(kthelgason): Reenable this test on iOS.
675 # See bugs.webrtc.org/5569
676 if (!is_ios) {
677 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
678 }
679
Andrey Logvine7c79fd2021-02-01 09:56:37680 if (rtc_opus_support_120ms_ptime) {
681 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
682 } else {
683 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
684 }
685
686 data = rtc_media_unittests_resources
687
688 if (is_android) {
689 deps += [ "//testing/android/native_test:native_test_support" ]
690 shard_timeout = 900
691 }
692
693 if (is_ios) {
694 deps += [ ":rtc_media_unittests_bundle_data" ]
695 }
Florent Castellie3b74f82022-05-02 22:24:15696
697 if (rtc_build_dcsctp) {
698 sources += [ "sctp/dcsctp_transport_unittest.cc" ]
699 deps += [
700 ":rtc_data_dcsctp_transport",
701 "../net/dcsctp/public:factory",
702 "../net/dcsctp/public:mocks",
703 "../net/dcsctp/public:socket",
704 ]
705 }
Taylor Brandstetterc2128732020-07-03 23:37:57706 }
kjellander82a94492016-06-13 05:12:01707 }
708}