blob: e533c10f7d35f5f28bd62eb6ae872c53d2b91bbf [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")
philipel2a2f3ec2022-05-24 08:32:3210import("//third_party/libaom/options.gni")
mbonadei9aa3f0a2017-01-24 14:58:2211import("../webrtc.gni")
kjellanderc76dc952016-06-03 10:09:3212
13group("media") {
Dan Minor9c686132018-01-15 15:20:0014 deps = []
15 if (!build_with_mozilla) {
16 deps += [
17 ":rtc_media",
18 ":rtc_media_base",
19 ]
20 }
kjellanderc76dc952016-06-03 10:09:3221}
22
23config("rtc_media_defines_config") {
Fredrik Solenberge1dcce22019-02-05 11:43:0324 defines = [ "HAVE_WEBRTC_VIDEO" ]
kjellanderc76dc952016-06-03 10:09:3225}
26
Niels Möller6daa2782018-01-23 09:37:4227rtc_source_set("rtc_media_config") {
28 visibility = [ "*" ]
Mirko Bonadeiccbe95f2020-01-21 11:10:1029 sources = [ "base/media_config.h" ]
Niels Möller6daa2782018-01-23 09:37:4230}
31
Johannes Kronc3fcee72021-04-19 07:09:2632rtc_library("rtc_sdp_video_format_utils") {
Johannes Kronc8f31342019-12-19 14:05:2033 visibility = [ "*" ]
34 sources = [
Johannes Kronc3fcee72021-04-19 07:09:2635 "base/sdp_video_format_utils.cc",
36 "base/sdp_video_format_utils.h",
Johannes Kronc8f31342019-12-19 14:05:2037 ]
38
39 deps = [
40 "../api/video_codecs:video_codecs_api",
Johannes Kronc3fcee72021-04-19 07:09:2641 "../rtc_base:checks",
Johannes Kronc8f31342019-12-19 14:05:2042 "../rtc_base:stringutils",
Johannes Kronc8f31342019-12-19 14:05:2043 ]
Mirko Bonadei2dcf3482020-06-05 12:30:4144 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
Johannes Kronc8f31342019-12-19 14:05:2045}
46
Mirko Bonadei86d053c2019-10-17 19:32:0447rtc_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:5348 visibility = [ "*" ]
kjellanderc76dc952016-06-03 10:09:3249 defines = []
50 libs = []
Patrik Höglunda8005cf2017-12-13 15:05:4251 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:2452 ":rtc_media_config",
Yves Gerey3e707812018-11-28 15:47:4953 "../api:array_view",
Niels Möllera6fe2612018-01-19 10:28:5454 "../api:audio_options_api",
Jonas Orelande62c2f22022-03-29 09:04:4855 "../api:field_trials_view",
Marina Cioceae77912b2020-02-27 15:16:5556 "../api:frame_transformer_interface",
Niels Möllere942b142019-09-17 12:30:4157 "../api:media_stream_interface",
Mirko Bonadeifcfeefe2019-09-10 08:51:2358 "../api:rtc_error",
Niels Möller6dcd4dc2019-08-26 08:45:2859 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:4860 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:2461 "../api:sequence_checker",
Olga Sharonova09ceed22020-09-30 16:27:3962 "../api/audio:audio_frame_processor",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2463 "../api/audio_codecs:audio_codecs_api",
Mirko Bonadeieaaaf412019-09-13 12:42:1564 "../api/crypto:frame_decryptor_interface",
65 "../api/crypto:frame_encryptor_interface",
66 "../api/crypto:options",
Artem Titovc374d112022-06-16 19:27:4567 "../api/task_queue:pending_task_safety_flag",
68 "../api/task_queue:to_queued_task",
Florent Castellid95b1492021-05-10 09:29:5669 "../api/transport:datagram_transport_interface",
Patrik Höglund56d94522019-11-18 14:53:3270 "../api/transport:stun_types",
Niels Möllera8370302019-09-02 13:16:4971 "../api/transport/rtp:rtp_source",
Ivo Creusen2562cf02021-09-03 14:51:2272 "../api/units:time_delta",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2473 "../api/video:video_bitrate_allocation",
Jonas Orelanda3aa9bd2019-04-17 05:38:4074 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2475 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:3876 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2477 "../api/video_codecs:video_codecs_api",
78 "../call:call_interfaces",
Markus Handell32565f62019-12-04 09:58:1779 "../call:video_stream_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2480 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:3981 "../modules/async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2482 "../modules/audio_processing:audio_processing_statistics",
Henrik Boström87e3f9d2019-05-27 08:44:2483 "../modules/rtp_rtcp:rtp_rtcp_format",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2484 "../rtc_base",
Florent Castellif9c59842022-04-19 15:07:2385 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:3686 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:4287 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:4688 "../rtc_base:copy_on_write_buffer",
Florent Castelli0af55ba2022-04-04 13:06:3089 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:4690 "../rtc_base:macromagic",
Tommi8d2c5a82018-03-19 10:12:4891 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 15:05:4292 "../rtc_base:sanitizer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:0193 "../rtc_base:socket",
Patrik Höglund3e113432017-12-15 13:40:1094 "../rtc_base:stringutils",
Florent Castellidd837e22022-04-04 15:16:1595 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:1196 "../rtc_base/synchronization:mutex",
Niels Möllere8e4dc42019-06-11 12:04:1697 "../rtc_base/system:file_wrapper",
Tommi816134a2021-05-24 14:54:4198 "../rtc_base/system:no_unique_address",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2499 "../rtc_base/system:rtc_export",
100 "../rtc_base/third_party/sigslot",
Åsa Persson3f7e0ed2019-10-18 13:03:13101 "../system_wrappers:field_trial",
Mirko Bonadei2dcf3482020-06-05 12:30:41102 ]
103 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24104 "//third_party/abseil-cpp/absl/algorithm:container",
Byoungchan Leea1a7c632022-07-05 12:06:28105 "//third_party/abseil-cpp/absl/container:inlined_vector",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24106 "//third_party/abseil-cpp/absl/strings",
107 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 15:05:42108 ]
kjellanderc76dc952016-06-03 10:09:32109 sources = [
Steve Anton10542f22019-01-11 17:11:00110 "base/adapted_video_track_source.cc",
111 "base/adapted_video_track_source.h",
112 "base/audio_source.h",
kjellanderc76dc952016-06-03 10:09:32113 "base/codec.cc",
114 "base/codec.h",
Ruslan Burakov493a6502019-02-27 14:32:48115 "base/delayable.h",
Steve Anton10542f22019-01-11 17:11:00116 "base/media_channel.cc",
117 "base/media_channel.h",
118 "base/media_constants.cc",
119 "base/media_constants.h",
120 "base/media_engine.cc",
121 "base/media_engine.h",
122 "base/rid_description.cc",
123 "base/rid_description.h",
Steve Anton10542f22019-01-11 17:11:00124 "base/rtp_utils.cc",
125 "base/rtp_utils.h",
126 "base/stream_params.cc",
127 "base/stream_params.h",
128 "base/turn_utils.cc",
129 "base/turn_utils.h",
130 "base/video_adapter.cc",
131 "base/video_adapter.h",
132 "base/video_broadcaster.cc",
133 "base/video_broadcaster.h",
Steve Anton10542f22019-01-11 17:11:00134 "base/video_common.cc",
135 "base/video_common.h",
136 "base/video_source_base.cc",
137 "base/video_source_base.h",
magjed0928a3c2016-11-25 08:40:18138 ]
magjed0928a3c2016-11-25 08:40:18139}
140
Mirko Bonadei86d053c2019-10-17 19:32:04141rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 07:51:18142 visibility = [ "*" ]
143 defines = []
144 libs = []
145 sources = [
146 "engine/simulcast_encoder_adapter.cc",
147 "engine/simulcast_encoder_adapter.h",
148 ]
149 deps = [
Rasmus Brandt5cad55b2019-12-19 08:47:11150 ":rtc_media_base",
Elad Alon8f01c4e2019-06-28 13:19:43151 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48152 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24153 "../api:sequence_checker",
Erik Språngf93eda12019-01-16 16:10:57154 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 15:47:49155 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38156 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 16:50:03157 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 07:51:18158 "../api/video_codecs:video_codecs_api",
Markus Handell32565f62019-12-04 09:58:17159 "../call:video_stream_api",
Åsa Persson59947d22021-08-26 10:04:27160 "../common_video",
Jonathan Yu9a5da492018-10-19 07:51:18161 "../modules/video_coding:video_codec_interface",
162 "../modules/video_coding:video_coding_utility",
163 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30164 "../rtc_base:logging",
Åsa Perssona7e34d32021-01-20 14:36:13165 "../rtc_base/experiments:encoder_info_settings",
Erik Språng7f24fb92019-02-13 09:49:37166 "../rtc_base/experiments:rate_control_settings",
Mirko Bonadei20e4c802020-11-23 10:07:42167 "../rtc_base/system:no_unique_address",
Mirko Bonadei66e76792019-04-02 09:33:59168 "../rtc_base/system:rtc_export",
Jonathan Yu9a5da492018-10-19 07:51:18169 "../system_wrappers",
170 "../system_wrappers:field_trial",
Jonathan Yu9a5da492018-10-19 07:51:18171 ]
Erik Språng5ab6a8c2021-01-14 15:37:26172 absl_deps = [
173 "//third_party/abseil-cpp/absl/algorithm:container",
174 "//third_party/abseil-cpp/absl/types:optional",
175 ]
Jonathan Yu9a5da492018-10-19 07:51:18176}
177
Mirko Bonadei86d053c2019-10-17 19:32:04178rtc_library("rtc_encoder_simulcast_proxy") {
Florent Castellie7862cc2018-12-06 12:38:24179 visibility = [ "*" ]
180 defines = []
181 libs = []
182 sources = [
183 "engine/encoder_simulcast_proxy.cc",
184 "engine/encoder_simulcast_proxy.h",
185 ]
186 deps = [
187 ":rtc_simulcast_encoder_adapter",
Florent Castellie7862cc2018-12-06 12:38:24188 "../api/video:video_bitrate_allocation",
189 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38190 "../api/video:video_rtp_headers",
Florent Castellie7862cc2018-12-06 12:38:24191 "../api/video_codecs:video_codecs_api",
192 "../modules/video_coding:video_codec_interface",
Mirko Bonadei66e76792019-04-02 09:33:59193 "../rtc_base/system:rtc_export",
Florent Castellie7862cc2018-12-06 12:38:24194 ]
Florent Castellie7862cc2018-12-06 12:38:24195}
196
Mirko Bonadei86d053c2019-10-17 19:32:04197rtc_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32198 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 02:31:53199 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 14:10:22200 defines = []
201 libs = []
Patrik Höglund99175c62018-01-08 10:05:10202 deps = [
Florent Castellie7862cc2018-12-06 12:38:24203 ":rtc_encoder_simulcast_proxy",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24204 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18205 ":rtc_simulcast_encoder_adapter",
Yves Gerey3e707812018-11-28 15:47:49206 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24207 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 15:47:49208 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38209 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24210 "../api/video_codecs:rtc_software_fallback_wrappers",
211 "../api/video_codecs:video_codecs_api",
philipel2a2f3ec2022-05-24 08:32:32212 "../api/video_codecs:video_encoder_factory_template",
213 "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
214 "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
215 "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24216 "../call:call_interfaces",
217 "../call:video_stream_api",
Patrik Höglund99175c62018-01-08 10:05:10218 "../modules/video_coding:video_codec_interface",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24219 "../modules/video_coding:webrtc_h264",
220 "../modules/video_coding:webrtc_multiplex",
221 "../modules/video_coding:webrtc_vp8",
222 "../modules/video_coding:webrtc_vp9",
Danil Chapovalovc46385c2020-03-11 09:45:57223 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24224 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30225 "../rtc_base:logging",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24226 "../rtc_base/system:rtc_export",
philipelb09d8722021-11-23 10:00:24227 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24228 "../test:fake_video_codecs",
Patrik Höglund99175c62018-01-08 10:05:10229 ]
philipel2a2f3ec2022-05-24 08:32:32230
231 if (enable_libaom) {
232 defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
233 deps += [
234 "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
235 ]
236 }
237
philipelb09d8722021-11-23 10:00:24238 if (rtc_include_dav1d_in_internal_decoder_factory) {
239 deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
240 }
Johannes Kronb26863e2021-09-15 10:56:04241 absl_deps = [
242 "//third_party/abseil-cpp/absl/strings",
243 "//third_party/abseil-cpp/absl/types:optional",
244 ]
Anders Carlssona114c882018-01-04 14:10:22245 sources = [
Emircan Uysaler7c03bdc2019-01-16 20:07:56246 "engine/fake_video_codec_factory.cc",
247 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 17:11:00248 "engine/internal_decoder_factory.cc",
249 "engine/internal_decoder_factory.h",
250 "engine/internal_encoder_factory.cc",
251 "engine/internal_encoder_factory.h",
252 "engine/multiplex_codec_factory.cc",
253 "engine/multiplex_codec_factory.h",
Jonathan Yu327b7532018-10-25 00:21:36254
255 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 12:38:24256 # targets depend on :rtc_encoder_simulcast_proxy directly.
257 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 14:10:22258 ]
Anders Carlssona114c882018-01-04 14:10:22259}
260
Mirko Bonadei86d053c2019-10-17 19:32:04261rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53262 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23263 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 14:10:22264 defines = []
265 libs = []
266 deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24267 ":rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24268 "../api:call_api",
Jonas Orelande62c2f22022-03-29 09:04:48269 "../api:field_trials_view",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24270 "../api:libjingle_peerconnection_api",
Florent Castellib05ca4b2020-03-05 12:39:55271 "../api:media_stream_interface",
Niels Möller6dcd4dc2019-08-26 08:45:28272 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:48273 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24274 "../api:sequence_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24275 "../api:transport_api",
Olga Sharonova09ceed22020-09-30 16:27:39276 "../api/audio:audio_frame_processor",
Danil Chapovalov85b8ce22019-05-31 13:51:04277 "../api/audio:audio_mixer_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24278 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalov4c7112a2019-03-27 17:51:45279 "../api/task_queue",
Artem Titovc374d112022-06-16 19:27:45280 "../api/task_queue:pending_task_safety_flag",
281 "../api/task_queue:to_queued_task",
Mirko Bonadei738bfa72019-09-17 12:47:38282 "../api/transport:bitrate_settings",
Erik Språngceb44952020-09-22 09:36:35283 "../api/transport:field_trial_based_config",
Niels Möllera8370302019-09-02 13:16:49284 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 14:19:43285 "../api/units:data_rate",
Yves Gerey3e707812018-11-28 15:47:49286 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 18:02:56287 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24288 "../api/video:video_codec_constants",
289 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38290 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24291 "../api/video_codecs:rtc_software_fallback_wrappers",
292 "../api/video_codecs:video_codecs_api",
293 "../call",
294 "../call:call_interfaces",
295 "../call:video_stream_api",
296 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:39297 "../modules/async_audio_processing:async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24298 "../modules/audio_device",
299 "../modules/audio_device:audio_device_impl",
300 "../modules/audio_mixer:audio_mixer_impl",
Alessio Bazzicab768e882018-11-07 14:29:54301 "../modules/audio_processing:api",
Artem Titov94b57c02019-03-21 12:35:10302 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 08:10:26303 "../modules/audio_processing/agc:gain_control_interface",
Danil Chapovalov99a71f42021-07-19 13:20:46304 "../modules/rtp_rtcp:rtp_rtcp_format",
Artem Titov94b57c02019-03-21 12:35:10305 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 09:11:40306 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 14:16:38307 "../modules/video_coding:video_coding_utility",
Niels Möller79d566b2022-04-29 09:03:13308 "../modules/video_coding/svc:scalability_mode_util",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24309 "../rtc_base",
Jonas Olssonabbe8412018-04-03 11:40:05310 "../rtc_base:audio_format_to_string",
Florent Castellif9c59842022-04-19 15:07:23311 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36312 "../rtc_base:byte_order",
Anders Carlssona114c882018-01-04 14:10:22313 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46314 "../rtc_base:copy_on_write_buffer",
Florent Castellia30aef32022-04-19 15:47:13315 "../rtc_base:event_tracer",
Jakob Ivarsson39adce12020-06-25 12:09:58316 "../rtc_base:ignore_wundef",
Florent Castelli0af55ba2022-04-04 13:06:30317 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46318 "../rtc_base:macromagic",
Florent Castellif4db3512022-04-14 11:38:05319 "../rtc_base:race_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24320 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37321 "../rtc_base:safe_conversions",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24322 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01323 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15324 "../rtc_base:timeutils",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24325 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 14:19:43326 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24327 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Rasmus Brandt2b9317a2019-10-30 12:01:46328 "../rtc_base/experiments:rate_control_settings",
Markus Handell1e257ca2020-07-07 13:43:11329 "../rtc_base/synchronization:mutex",
Mirko Bonadei276827c2018-10-16 12:13:50330 "../rtc_base/system:rtc_export",
Artem Titova76af0c2018-07-23 15:38:12331 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24332 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10333 "../system_wrappers:metrics",
Mirko Bonadei2dcf3482020-06-05 12:30:41334 ]
335 absl_deps = [
Danil Chapovalov6fe6b5a2019-04-10 10:50:24336 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24337 "//third_party/abseil-cpp/absl/strings",
338 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 14:10:22339 ]
340
341 sources = [
342 "engine/adm_helpers.cc",
343 "engine/adm_helpers.h",
Steve Anton10542f22019-01-11 17:11:00344 "engine/null_webrtc_video_engine.h",
Anders Carlssona114c882018-01-04 14:10:22345 "engine/payload_type_mapper.cc",
346 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 09:32:13347 "engine/simulcast.cc",
348 "engine/simulcast.h",
Jonas Oreland6d835922019-03-18 09:59:40349 "engine/unhandled_packets_buffer.cc",
350 "engine/unhandled_packets_buffer.h",
Steve Anton10542f22019-01-11 17:11:00351 "engine/webrtc_media_engine.cc",
352 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 17:11:00353 "engine/webrtc_video_engine.cc",
354 "engine/webrtc_video_engine.h",
355 "engine/webrtc_voice_engine.cc",
356 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 10:09:32357 ]
358
ehmaldonadoe9cc6862016-09-05 13:10:18359 public_configs = []
Niels Möller85818772019-04-09 06:24:58360 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 10:09:32361 public_configs += [ ":rtc_media_defines_config" ]
362 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
363 }
aleloi048cbdd2017-05-29 09:56:27364 if (rtc_enable_protobuf) {
Jakob Ivarsson39adce12020-06-25 12:09:58365 deps += [
366 "../modules/audio_coding:ana_config_proto",
367 "../modules/audio_processing/aec_dump:aec_dump_impl",
368 ]
aleloi048cbdd2017-05-29 09:56:27369 } else {
370 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
371 }
kjellanderc76dc952016-06-03 10:09:32372}
kjellander82a94492016-06-13 05:12:01373
Danil Chapovalov4844c5f2019-04-10 12:10:10374# Heavy but optional helper for unittests and webrtc users who prefer to use
375# defaults factories or do not worry about extra dependencies and binary size.
Mirko Bonadei86d053c2019-10-17 19:32:04376rtc_library("rtc_media_engine_defaults") {
Danil Chapovalov4844c5f2019-04-10 12:10:10377 visibility = [ "*" ]
378 allow_poison = [
379 "audio_codecs",
Danil Chapovalov41300af2019-07-10 10:44:43380 "default_task_queue",
Danil Chapovalov4844c5f2019-04-10 12:10:10381 "software_video_codecs",
382 ]
383 sources = [
384 "engine/webrtc_media_engine_defaults.cc",
385 "engine/webrtc_media_engine_defaults.h",
386 ]
387 deps = [
388 ":rtc_audio_video",
389 "../api/audio_codecs:builtin_audio_decoder_factory",
390 "../api/audio_codecs:builtin_audio_encoder_factory",
391 "../api/task_queue:default_task_queue_factory",
392 "../api/video:builtin_video_bitrate_allocator_factory",
393 "../api/video_codecs:builtin_video_decoder_factory",
394 "../api/video_codecs:builtin_video_encoder_factory",
395 "../modules/audio_processing:api",
396 "../rtc_base:checks",
Ken MacKay831ce5f2019-12-02 18:26:34397 "../rtc_base/system:rtc_export",
Danil Chapovalov4844c5f2019-04-10 12:10:10398 ]
399}
400
Florent Castellia80c3e52021-04-15 13:02:56401rtc_source_set("rtc_data_sctp_transport_internal") {
402 sources = [ "sctp/sctp_transport_internal.h" ]
Danil Chapovalov6fe6b5a2019-04-10 10:50:24403 deps = [
Florent Castellid95b1492021-05-10 09:29:56404 "../api/transport:datagram_transport_interface",
Florent Castellia80c3e52021-04-15 13:02:56405 "../media:rtc_media_base",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24406 "../p2p:rtc_p2p",
Florent Castellied4aadc2022-04-19 15:40:46407 "../rtc_base:copy_on_write_buffer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01408 "../rtc_base:threading",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24409 "../rtc_base/third_party/sigslot",
Mirko Bonadei2dcf3482020-06-05 12:30:41410 ]
Florent Castellia80c3e52021-04-15 13:02:56411}
zhihuang38ede132017-06-15 19:52:32412
Florent Castellia6983c62021-05-06 08:50:07413if (rtc_build_dcsctp) {
414 rtc_library("rtc_data_dcsctp_transport") {
415 sources = [
416 "sctp/dcsctp_transport.cc",
417 "sctp/dcsctp_transport.h",
418 ]
419 deps = [
420 ":rtc_data_sctp_transport_internal",
421 "../api:array_view",
Artem Titovc374d112022-06-16 19:27:45422 "../api/task_queue:pending_task_safety_flag",
Henrik Boströmb951dc62022-01-26 17:38:13423 "../api/task_queue:task_queue",
Artem Titovc374d112022-06-16 19:27:45424 "../api/task_queue:to_queued_task",
Florent Castellia6983c62021-05-06 08:50:07425 "../media:rtc_media_base",
Florent Castelli6a11c842021-06-01 16:39:49426 "../net/dcsctp/public:factory",
Florent Castellia6983c62021-05-06 08:50:07427 "../net/dcsctp/public:socket",
428 "../net/dcsctp/public:types",
Victor Boivie5e726da2021-06-19 05:59:01429 "../net/dcsctp/public:utils",
Florent Castellia6983c62021-05-06 08:50:07430 "../net/dcsctp/timer:task_queue_timeout",
431 "../p2p:rtc_p2p",
432 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46433 "../rtc_base:copy_on_write_buffer",
Florent Castellia30aef32022-04-19 15:47:13434 "../rtc_base:event_tracer",
Florent Castelli0af55ba2022-04-04 13:06:30435 "../rtc_base:logging",
Florent Castelli71337f32022-04-14 10:41:26436 "../rtc_base:random",
Victor Boivie8df32eb2021-08-12 13:21:25437 "../rtc_base:socket",
Florent Castelli57aa81b2022-04-04 15:14:02438 "../rtc_base:stringutils",
Florent Castellia6983c62021-05-06 08:50:07439 "../rtc_base:threading",
Florent Castelli8f04c7c2022-05-05 21:43:44440 "../rtc_base/containers:flat_map",
Florent Castellia6983c62021-05-06 08:50:07441 "../rtc_base/third_party/sigslot:sigslot",
442 "../system_wrappers",
443 ]
444 absl_deps += [
445 "//third_party/abseil-cpp/absl/strings:strings",
446 "//third_party/abseil-cpp/absl/types:optional",
447 ]
448 }
449}
450
Florent Castellia80c3e52021-04-15 13:02:56451rtc_library("rtc_data_sctp_transport_factory") {
452 defines = []
453 sources = [
454 "sctp/sctp_transport_factory.cc",
455 "sctp/sctp_transport_factory.h",
456 ]
457 deps = [
458 ":rtc_data_sctp_transport_internal",
459 "../api/transport:sctp_transport_factory_interface",
460 "../rtc_base:threading",
461 "../rtc_base/system:unused",
462 ]
463
464 if (rtc_enable_sctp) {
Florent Castellif2599a72022-03-31 17:15:10465 assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
Florent Castellia6983c62021-05-06 08:50:07466 }
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 }
zhihuang38ede132017-06-15 19:52:32476}
477
478rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53479 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23480 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Florent Castellia80c3e52021-04-15 13:02:56481 deps = [ ":rtc_audio_video" ]
zhihuang38ede132017-06-15 19:52:32482}
483
kjellander82a94492016-06-13 05:12:01484if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04485 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01486 testonly = true
487
Anders Carlsson5f2bb622018-05-14 07:48:06488 defines = []
kjellandera2ef4f92017-03-06 14:04:55489 deps = [
Mirko Bonadei75baa492018-01-11 16:07:30490 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24491 ":rtc_internal_video_codecs",
492 ":rtc_media",
493 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 07:51:18494 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24495 "../api:call_api",
Elad Alon8f01c4e2019-06-28 13:19:43496 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 19:26:48497 "../api:scoped_refptr",
Erik Språngceb44952020-09-22 09:36:35498 "../api/transport:field_trial_based_config",
Yves Gerey3e707812018-11-28 15:47:49499 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24500 "../api/video:video_bitrate_allocation",
501 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38502 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24503 "../api/video_codecs:video_codecs_api",
504 "../call:call_interfaces",
505 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 12:43:23506 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 12:35:10507 "../common_video",
508 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54509 "../modules/audio_processing:api",
Mirko Bonadeib5728d92017-12-06 06:51:33510 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10511 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08512 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 14:04:55513 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24514 "../rtc_base",
Florent Castellif9c59842022-04-19 15:07:23515 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36516 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:42517 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46518 "../rtc_base:copy_on_write_buffer",
Mirko Bonadeie3abb812018-11-23 12:15:08519 "../rtc_base:gunit_helpers",
Florent Castelli4467ad72022-04-04 13:18:46520 "../rtc_base:macromagic",
Florent Castelli33d31fb2022-04-04 14:57:52521 "../rtc_base:rtc_event",
Tommi8d2c5a82018-03-19 10:12:48522 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 13:40:10523 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01524 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15525 "../rtc_base:timeutils",
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",
Jonas Oreland65455162022-06-08 09:25:46590 "../api:mock_encoder_selector",
Andrey Logvine7c79fd2021-02-01 09:56:37591 "../api:mock_video_bitrate_allocator",
592 "../api:mock_video_bitrate_allocator_factory",
593 "../api:mock_video_codec_factory",
594 "../api:mock_video_encoder",
595 "../api:rtp_parameters",
596 "../api:scoped_refptr",
597 "../api:simulcast_test_fixture_api",
598 "../api/audio_codecs:builtin_audio_decoder_factory",
599 "../api/audio_codecs:builtin_audio_encoder_factory",
600 "../api/rtc_event_log",
601 "../api/task_queue",
602 "../api/task_queue:default_task_queue_factory",
603 "../api/test/video:function_video_factory",
604 "../api/transport:field_trial_based_config",
605 "../api/units:time_delta",
Markus Handellee034312021-11-05 14:02:03606 "../api/units:timestamp",
Andrey Logvine7c79fd2021-02-01 09:56:37607 "../api/video:builtin_video_bitrate_allocator_factory",
608 "../api/video:video_bitrate_allocation",
Sergey Silkin0e3cb9f2021-02-02 17:23:40609 "../api/video:video_codec_constants",
Andrey Logvine7c79fd2021-02-01 09:56:37610 "../api/video:video_frame",
611 "../api/video:video_rtp_headers",
612 "../api/video_codecs:builtin_video_decoder_factory",
613 "../api/video_codecs:builtin_video_encoder_factory",
614 "../api/video_codecs:video_codecs_api",
615 "../audio",
616 "../call:call_interfaces",
617 "../common_video",
Andrey Logvine7c79fd2021-02-01 09:56:37618 "../modules/audio_device:mock_audio_device",
619 "../modules/audio_processing",
620 "../modules/audio_processing:api",
621 "../modules/audio_processing:mocks",
622 "../modules/rtp_rtcp",
Danil Chapovalov47f5f8c2021-06-03 10:27:12623 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37624 "../modules/video_coding:simulcast_test_fixture_impl",
625 "../modules/video_coding:video_codec_interface",
626 "../modules/video_coding:webrtc_h264",
627 "../modules/video_coding:webrtc_vp8",
628 "../modules/video_coding/codecs/av1:libaom_av1_decoder",
629 "../p2p:p2p_test_utils",
630 "../rtc_base",
Florent Castellia876a922022-04-19 15:18:36631 "../rtc_base:byte_order",
Andrey Logvine7c79fd2021-02-01 09:56:37632 "../rtc_base:checks",
633 "../rtc_base:gunit_helpers",
Florent Castelli0af55ba2022-04-04 13:06:30634 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46635 "../rtc_base:macromagic",
Andrey Logvine7c79fd2021-02-01 09:56:37636 "../rtc_base:rtc_base_tests_utils",
Florent Castelli33d31fb2022-04-04 14:57:52637 "../rtc_base:rtc_event",
Andrey Logvine7c79fd2021-02-01 09:56:37638 "../rtc_base:rtc_task_queue",
Florent Castellie10a9f62022-04-04 15:04:37639 "../rtc_base:safe_conversions",
Andrey Logvine7c79fd2021-02-01 09:56:37640 "../rtc_base:stringutils",
641 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15642 "../rtc_base:timeutils",
Andrey Logvine7c79fd2021-02-01 09:56:37643 "../rtc_base/experiments:min_video_bitrate_experiment",
644 "../rtc_base/synchronization:mutex",
645 "../rtc_base/third_party/sigslot",
Tommia334dc62021-06-04 10:50:01646 "../system_wrappers:field_trial",
Andrey Logvine7c79fd2021-02-01 09:56:37647 "../test:audio_codec_mocks",
648 "../test:fake_video_codecs",
649 "../test:field_trial",
650 "../test:rtp_test_utils",
Jonas Oreland4476b822022-03-10 14:21:28651 "../test:scoped_key_value_config",
Andrey Logvine7c79fd2021-02-01 09:56:37652 "../test:test_main",
653 "../test:test_support",
654 "../test:video_test_common",
Markus Handellee034312021-11-05 14:02:03655 "../test/time_controller",
Andrey Logvine7c79fd2021-02-01 09:56:37656 ]
philipel2a2f3ec2022-05-24 08:32:32657
658 if (enable_libaom) {
659 defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
660 }
661
Andrey Logvine7c79fd2021-02-01 09:56:37662 absl_deps = [
663 "//third_party/abseil-cpp/absl/algorithm:container",
664 "//third_party/abseil-cpp/absl/memory",
665 "//third_party/abseil-cpp/absl/strings",
666 "//third_party/abseil-cpp/absl/types:optional",
667 ]
668 sources = [
669 "base/codec_unittest.cc",
670 "base/media_engine_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37671 "base/rtp_utils_unittest.cc",
Johannes Kronc3fcee72021-04-19 07:09:26672 "base/sdp_video_format_utils_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37673 "base/stream_params_unittest.cc",
674 "base/turn_utils_unittest.cc",
675 "base/video_adapter_unittest.cc",
676 "base/video_broadcaster_unittest.cc",
677 "base/video_common_unittest.cc",
678 "engine/encoder_simulcast_proxy_unittest.cc",
679 "engine/internal_decoder_factory_unittest.cc",
Johannes Kronb26863e2021-09-15 10:56:04680 "engine/internal_encoder_factory_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37681 "engine/multiplex_codec_factory_unittest.cc",
682 "engine/null_webrtc_video_engine_unittest.cc",
683 "engine/payload_type_mapper_unittest.cc",
684 "engine/simulcast_encoder_adapter_unittest.cc",
685 "engine/simulcast_unittest.cc",
686 "engine/unhandled_packets_buffer_unittest.cc",
687 "engine/webrtc_media_engine_unittest.cc",
688 "engine/webrtc_video_engine_unittest.cc",
689 ]
690
691 # TODO(kthelgason): Reenable this test on iOS.
692 # See bugs.webrtc.org/5569
693 if (!is_ios) {
694 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
695 }
696
Andrey Logvine7c79fd2021-02-01 09:56:37697 if (rtc_opus_support_120ms_ptime) {
698 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
699 } else {
700 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
701 }
702
703 data = rtc_media_unittests_resources
704
705 if (is_android) {
706 deps += [ "//testing/android/native_test:native_test_support" ]
707 shard_timeout = 900
708 }
709
710 if (is_ios) {
711 deps += [ ":rtc_media_unittests_bundle_data" ]
712 }
Florent Castellie3b74f82022-05-02 22:24:15713
714 if (rtc_build_dcsctp) {
715 sources += [ "sctp/dcsctp_transport_unittest.cc" ]
716 deps += [
717 ":rtc_data_dcsctp_transport",
718 "../net/dcsctp/public:factory",
719 "../net/dcsctp/public:mocks",
720 "../net/dcsctp/public:socket",
721 ]
722 }
Taylor Brandstetterc2128732020-07-03 23:37:57723 }
kjellander82a94492016-06-13 05:12:01724 }
725}