blob: 6244b6b4f05dd9c0a9ea82e81cce089da7421f22 [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 = [
Philipp Hancke7c5f9cf2024-02-20 14:28:1440 ":media_constants",
Johannes Kronc8f31342019-12-19 14:05:2041 "../api/video_codecs:video_codecs_api",
Johannes Kronc3fcee72021-04-19 07:09:2642 "../rtc_base:checks",
Johannes Kronc8f31342019-12-19 14:05:2043 "../rtc_base:stringutils",
Philipp Hancke7c5f9cf2024-02-20 14:28:1444 "//third_party/abseil-cpp/absl/algorithm:container",
45 "//third_party/abseil-cpp/absl/types:optional",
46 ]
Johannes Kronc8f31342019-12-19 14:05:2047}
48
Mirko Bonadei86d053c2019-10-17 19:32:0449rtc_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:5350 visibility = [ "*" ]
kjellanderc76dc952016-06-03 10:09:3251 defines = []
52 libs = []
Harald Alvestrandfb4ad292024-02-28 11:01:2553 sources = [
Harald Alvestrandfb4ad292024-02-28 11:01:2554 "base/adapted_video_track_source.h", # Used downstream
Harald Alvestrandfb4ad292024-02-28 11:01:2555 "base/video_adapter.h", # Used once downstream
Harald Alvestrandfb4ad292024-02-28 11:01:2556 "base/video_broadcaster.h", # Used downstream
Harald Alvestrandfb4ad292024-02-28 11:01:2557 "base/video_common.h", # Used downstream
58 ]
Patrik Höglunda8005cf2017-12-13 15:05:4259 deps = [
Harald Alvestrandafaae4e2024-03-12 12:06:1660 ":adapted_video_track_source",
Harald Alvestrand794d5992022-12-16 09:54:5761 ":codec",
62 ":media_channel",
63 ":media_channel_impl",
64 ":rid_description",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2465 ":rtc_media_config",
Harald Alvestrand794d5992022-12-16 09:54:5766 ":rtp_utils",
67 ":stream_params",
Harald Alvestrandafaae4e2024-03-12 12:06:1668 ":video_adapter",
69 ":video_broadcaster",
70 ":video_common",
Harald Alvestrandfb4ad292024-02-28 11:01:2571 ":video_source_base",
Yves Gerey3e707812018-11-28 15:47:4972 "../api:array_view",
Niels Möllera6fe2612018-01-19 10:28:5473 "../api:audio_options_api",
Harald Alvestrand50454ef2022-12-15 16:49:1374 "../api:call_api",
Jonas Orelande62c2f22022-03-29 09:04:4875 "../api:field_trials_view",
Marina Cioceae77912b2020-02-27 15:16:5576 "../api:frame_transformer_interface",
Niels Möllere942b142019-09-17 12:30:4177 "../api:media_stream_interface",
Mirko Bonadeifcfeefe2019-09-10 08:51:2378 "../api:rtc_error",
Niels Möller6dcd4dc2019-08-26 08:45:2879 "../api:rtp_parameters",
Florent Castelliacabb362022-10-18 15:05:1680 "../api:rtp_sender_interface",
Mirko Bonadeid9708072019-01-25 19:26:4881 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:2482 "../api:sequence_checker",
Harald Alvestrandc0d44d92022-12-13 12:57:2483 "../api:transport_api",
Olga Sharonova09ceed22020-09-30 16:27:3984 "../api/audio:audio_frame_processor",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2485 "../api/audio_codecs:audio_codecs_api",
Mirko Bonadeieaaaf412019-09-13 12:42:1586 "../api/crypto:frame_decryptor_interface",
87 "../api/crypto:frame_encryptor_interface",
88 "../api/crypto:options",
Harald Alvestrandc0d44d92022-12-13 12:57:2489 "../api/task_queue",
Artem Titovc374d112022-06-16 19:27:4590 "../api/task_queue:pending_task_safety_flag",
Florent Castellid95b1492021-05-10 09:29:5691 "../api/transport:datagram_transport_interface",
Patrik Höglund56d94522019-11-18 14:53:3292 "../api/transport:stun_types",
Niels Möllera8370302019-09-02 13:16:4993 "../api/transport/rtp:rtp_source",
Ivo Creusen2562cf02021-09-03 14:51:2294 "../api/units:time_delta",
Harald Alvestrand50454ef2022-12-15 16:49:1395 "../api/video:recordable_encoded_frame",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2496 "../api/video:video_bitrate_allocation",
Jonas Orelanda3aa9bd2019-04-17 05:38:4097 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:2498 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:3899 "../api/video:video_rtp_headers",
Evan Shrubsole9b235cd2022-12-06 10:09:10100 "../api/video_codecs:scalability_mode",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24101 "../api/video_codecs:video_codecs_api",
102 "../call:call_interfaces",
Markus Handell32565f62019-12-04 09:58:17103 "../call:video_stream_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24104 "../common_video",
Olga Sharonova09ceed22020-09-30 16:27:39105 "../modules/async_audio_processing",
Fredrik Hernqvistefbe7532023-01-13 15:42:36106 "../modules/audio_device",
Henrik Boström87e3f9d2019-05-27 08:44:24107 "../modules/rtp_rtcp:rtp_rtcp_format",
Florent Castellia138c6c2023-01-04 11:01:09108 "../rtc_base:async_packet_socket",
Florent Castellif9c59842022-04-19 15:07:23109 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36110 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:42111 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46112 "../rtc_base:copy_on_write_buffer",
Florent Castellia138c6c2023-01-04 11:01:09113 "../rtc_base:dscp",
Florent Castelli0af55ba2022-04-04 13:06:30114 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46115 "../rtc_base:macromagic",
Florent Castellia138c6c2023-01-04 11:01:09116 "../rtc_base:network_route",
Patrik Höglunda8005cf2017-12-13 15:05:42117 "../rtc_base:sanitizer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01118 "../rtc_base:socket",
Patrik Höglund3e113432017-12-15 13:40:10119 "../rtc_base:stringutils",
Florent Castellidd837e22022-04-04 15:16:15120 "../rtc_base:timeutils",
Florent Castellia138c6c2023-01-04 11:01:09121 "../rtc_base:unique_id_generator",
Harald Alvestrandc0d44d92022-12-13 12:57:24122 "../rtc_base/network:sent_packet",
Markus Handell1e257ca2020-07-07 13:43:11123 "../rtc_base/synchronization:mutex",
Niels Möllere8e4dc42019-06-11 12:04:16124 "../rtc_base/system:file_wrapper",
Tommi816134a2021-05-24 14:54:41125 "../rtc_base/system:no_unique_address",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24126 "../rtc_base/system:rtc_export",
127 "../rtc_base/third_party/sigslot",
Jonas Oreland6c2dae22022-09-29 08:28:24128 "../video/config:encoder_config",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24129 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 15:05:42130 ]
Harald Alvestrandfb4ad292024-02-28 11:01:25131}
132
Harald Alvestrandafaae4e2024-03-12 12:06:16133rtc_library("adapted_video_track_source") {
134 sources = [
135 "base/adapted_video_track_source.cc",
136 "base/adapted_video_track_source.h",
137 ]
138 deps = [
139 ":video_adapter",
140 ":video_broadcaster",
141 "../api:media_stream_interface",
142 "../api:scoped_refptr",
143 "../api/video:video_frame",
144 "../api/video:video_rtp_headers",
145 "../rtc_base:checks",
146 "../rtc_base:macromagic",
147 "../rtc_base:timeutils",
148 "../rtc_base/synchronization:mutex",
149 "../rtc_base/system:rtc_export",
Florent Castelli99c519b2024-05-23 11:21:53150 "//third_party/abseil-cpp/absl/types:optional",
Harald Alvestrandafaae4e2024-03-12 12:06:16151 ]
Harald Alvestrandafaae4e2024-03-12 12:06:16152}
153
Harald Alvestrandfb4ad292024-02-28 11:01:25154rtc_source_set("audio_source") {
155 sources = [ "base/audio_source.h" ]
Florent Castelli99c519b2024-05-23 11:21:53156 deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
Harald Alvestrandafaae4e2024-03-12 12:06:16157}
158
159rtc_library("video_adapter") {
160 sources = [
161 "base/video_adapter.cc",
162 "base/video_adapter.h",
163 ]
164 deps = [
165 ":video_common",
166 "../api/video:video_frame",
167 "../common_video",
168 "../rtc_base:checks",
169 "../rtc_base:logging",
170 "../rtc_base:macromagic",
171 "../rtc_base:stringutils",
172 "../rtc_base:timeutils",
173 "../rtc_base/synchronization:mutex",
174 "../rtc_base/system:rtc_export",
175 "../system_wrappers:field_trial",
Florent Castelli99c519b2024-05-23 11:21:53176 "//third_party/abseil-cpp/absl/types:optional",
Harald Alvestrandafaae4e2024-03-12 12:06:16177 ]
Harald Alvestrandfb4ad292024-02-28 11:01:25178}
179
180rtc_library("video_source_base") {
kjellanderc76dc952016-06-03 10:09:32181 sources = [
Steve Anton10542f22019-01-11 17:11:00182 "base/video_source_base.cc",
183 "base/video_source_base.h",
magjed0928a3c2016-11-25 08:40:18184 ]
Harald Alvestrandfb4ad292024-02-28 11:01:25185 deps = [
186 "../api:sequence_checker",
187 "../api/video:video_frame",
188 "../rtc_base:checks",
189 "../rtc_base/system:no_unique_address",
Florent Castelli99c519b2024-05-23 11:21:53190 "//third_party/abseil-cpp/absl/algorithm:container",
Harald Alvestrandfb4ad292024-02-28 11:01:25191 ]
Harald Alvestrandfb4ad292024-02-28 11:01:25192}
193
Harald Alvestrandafaae4e2024-03-12 12:06:16194rtc_library("video_broadcaster") {
195 sources = [
196 "base/video_broadcaster.cc",
197 "base/video_broadcaster.h", # Used downstream
198 ]
199 deps = [
200 ":video_common",
201 ":video_source_base",
202 "../api:media_stream_interface",
203 "../api:scoped_refptr",
204 "../api:sequence_checker",
205 "../api/video:video_frame",
206 "../api/video:video_rtp_headers",
207 "../rtc_base:checks",
208 "../rtc_base:logging",
209 "../rtc_base:macromagic",
210 "../rtc_base/synchronization:mutex",
Florent Castelli99c519b2024-05-23 11:21:53211 "//third_party/abseil-cpp/absl/types:optional",
Harald Alvestrandafaae4e2024-03-12 12:06:16212 ]
Harald Alvestrandafaae4e2024-03-12 12:06:16213}
214
215rtc_library("video_common") {
216 sources = [
217 "base/video_common.cc",
218 "base/video_common.h",
219 ]
220 deps = [
221 "../api:array_view",
222 "../rtc_base:checks",
223 "../rtc_base:macromagic",
224 "../rtc_base:stringutils",
225 "../rtc_base:timeutils",
226 "../rtc_base/system:rtc_export",
227 ]
228}
229
Harald Alvestrandfb4ad292024-02-28 11:01:25230rtc_library("media_engine") {
231 sources = [
232 "base/media_engine.cc",
233 "base/media_engine.h",
234 ]
235 deps = [
236 ":codec",
237 ":media_channel",
238 ":media_channel_impl",
Harald Alvestrandfb4ad292024-02-28 11:01:25239 ":rtc_media_config",
Harald Alvestrandafaae4e2024-03-12 12:06:16240 ":video_common",
Harald Alvestrandfb4ad292024-02-28 11:01:25241 "../api:field_trials_view",
242 "../api:rtp_parameters",
243 "../api/audio_codecs:audio_codecs_api",
244 "../api/crypto:options",
245 "../api/video:video_bitrate_allocation",
246 "../api/video:video_bitrate_allocator_factory",
247 "../call:call_interfaces",
248 "../rtc_base:checks",
249 "../rtc_base:stringutils",
250 "../rtc_base/system:file_wrapper",
Florent Castelli99c519b2024-05-23 11:21:53251 "//third_party/abseil-cpp/absl/algorithm:container",
Harald Alvestrandfb4ad292024-02-28 11:01:25252 ]
magjed0928a3c2016-11-25 08:40:18253}
254
Harald Alvestrand794d5992022-12-16 09:54:57255rtc_library("media_channel_impl") {
256 sources = [
257 "base/media_channel_impl.cc",
258 "base/media_channel_impl.h",
259 ]
260 deps = [
261 ":codec",
262 ":media_channel",
263 ":rtp_utils",
264 ":stream_params",
265 "../api:audio_options_api",
266 "../api:call_api",
267 "../api:frame_transformer_interface",
268 "../api:media_stream_interface",
269 "../api:rtc_error",
Harald Alvestrand13897e62023-05-22 12:49:05270 "../api:rtp_headers",
Harald Alvestrand794d5992022-12-16 09:54:57271 "../api:rtp_parameters",
272 "../api:rtp_sender_interface",
273 "../api:scoped_refptr",
274 "../api:sequence_checker",
275 "../api:transport_api",
276 "../api/crypto:frame_decryptor_interface",
277 "../api/crypto:frame_encryptor_interface",
278 "../api/task_queue",
279 "../api/task_queue:pending_task_safety_flag",
280 "../api/transport/rtp:rtp_source",
281 "../api/units:time_delta",
282 "../api/video:recordable_encoded_frame",
283 "../api/video:video_frame",
284 "../api/video:video_rtp_headers",
285 "../api/video_codecs:scalability_mode",
286 "../api/video_codecs:video_codecs_api",
287 "../common_video",
288 "../modules/rtp_rtcp:rtp_rtcp_format",
Florent Castellia138c6c2023-01-04 11:01:09289 "../rtc_base:async_packet_socket",
Harald Alvestrand794d5992022-12-16 09:54:57290 "../rtc_base:checks",
291 "../rtc_base:copy_on_write_buffer",
Florent Castellia138c6c2023-01-04 11:01:09292 "../rtc_base:dscp",
Harald Alvestrand794d5992022-12-16 09:54:57293 "../rtc_base:logging",
294 "../rtc_base:macromagic",
Florent Castellia138c6c2023-01-04 11:01:09295 "../rtc_base:network_route",
Harald Alvestrand794d5992022-12-16 09:54:57296 "../rtc_base:socket",
297 "../rtc_base/network:sent_packet",
Harald Alvestrand794d5992022-12-16 09:54:57298 "//third_party/abseil-cpp/absl/functional:any_invocable",
Florent Castelli99c519b2024-05-23 11:21:53299 "//third_party/abseil-cpp/absl/strings:string_view",
Harald Alvestrand794d5992022-12-16 09:54:57300 "//third_party/abseil-cpp/absl/types:optional",
301 ]
302}
303
304rtc_source_set("media_channel") {
305 sources = [ "base/media_channel.h" ]
306 deps = [
307 ":codec",
Harald Alvestrand794d5992022-12-16 09:54:57308 ":media_constants",
309 ":rtp_utils",
310 ":stream_params",
311 "../api:audio_options_api",
312 "../api:call_api",
313 "../api:frame_transformer_interface",
314 "../api:media_stream_interface",
315 "../api:rtc_error",
Harald Alvestrand97c96232023-05-30 04:04:07316 "../api:rtp_headers",
Harald Alvestrand794d5992022-12-16 09:54:57317 "../api:rtp_parameters",
318 "../api:rtp_sender_interface",
Harald Alvestrand97c96232023-05-30 04:04:07319 "../api:scoped_refptr",
Florent Castelli0afde762024-04-19 15:07:08320 "../api/audio:audio_processing_statistics",
Harald Alvestrand794d5992022-12-16 09:54:57321 "../api/audio_codecs:audio_codecs_api",
322 "../api/crypto:frame_decryptor_interface",
323 "../api/crypto:frame_encryptor_interface",
324 "../api/task_queue:pending_task_safety_flag",
325 "../api/transport:datagram_transport_interface",
326 "../api/transport/rtp:rtp_source",
327 "../api/units:time_delta",
Danil Chapovalov54e95bc2023-06-02 12:54:45328 "../api/units:timestamp",
Harald Alvestrand97c96232023-05-30 04:04:07329 "../api/video:recordable_encoded_frame",
Harald Alvestrand794d5992022-12-16 09:54:57330 "../api/video:video_frame",
331 "../api/video:video_rtp_headers",
332 "../api/video_codecs:scalability_mode",
333 "../api/video_codecs:video_codecs_api",
334 "../call:video_stream_api",
335 "../common_video",
Harald Alvestrand794d5992022-12-16 09:54:57336 "../modules/rtp_rtcp:rtp_rtcp_format",
Florent Castellia138c6c2023-01-04 11:01:09337 "../rtc_base:async_packet_socket",
Harald Alvestrand794d5992022-12-16 09:54:57338 "../rtc_base:buffer",
Harald Alvestrand97c96232023-05-30 04:04:07339 "../rtc_base:checks",
Harald Alvestrand794d5992022-12-16 09:54:57340 "../rtc_base:copy_on_write_buffer",
Florent Castellia138c6c2023-01-04 11:01:09341 "../rtc_base:dscp",
Harald Alvestrand794d5992022-12-16 09:54:57342 "../rtc_base:logging",
Florent Castellia138c6c2023-01-04 11:01:09343 "../rtc_base:network_route",
Harald Alvestrand794d5992022-12-16 09:54:57344 "../rtc_base:socket",
345 "../rtc_base:stringutils",
Harald Alvestrand97c96232023-05-30 04:04:07346 "../rtc_base/network:sent_packet",
Harald Alvestrand794d5992022-12-16 09:54:57347 "../video/config:encoder_config",
Harald Alvestrand97c96232023-05-30 04:04:07348 "//third_party/abseil-cpp/absl/types:optional",
349 ]
Harald Alvestrand794d5992022-12-16 09:54:57350}
351
Harald Alvestrand794d5992022-12-16 09:54:57352rtc_library("codec") {
353 sources = [
354 "base/codec.cc",
355 "base/codec.h",
356 ]
357 deps = [
358 ":media_constants",
Harald Alvestrand794d5992022-12-16 09:54:57359 "../api:rtp_parameters",
Florent Castelliee97e6a2023-06-20 17:12:57360 "../api/audio_codecs:audio_codecs_api",
Harald Alvestrand794d5992022-12-16 09:54:57361 "../api/video_codecs:video_codecs_api",
362 "../rtc_base:checks",
363 "../rtc_base:logging",
364 "../rtc_base:stringutils",
365 "../rtc_base/system:rtc_export",
Harald Alvestrand794d5992022-12-16 09:54:57366 "//third_party/abseil-cpp/absl/algorithm:container",
367 "//third_party/abseil-cpp/absl/container:inlined_vector",
368 "//third_party/abseil-cpp/absl/strings",
Florent Castelli99c519b2024-05-23 11:21:53369 "//third_party/abseil-cpp/absl/strings:string_view",
Harald Alvestrand794d5992022-12-16 09:54:57370 "//third_party/abseil-cpp/absl/types:optional",
371 ]
372}
373
374rtc_library("rtp_utils") {
375 sources = [
376 "base/rtp_utils.cc",
377 "base/rtp_utils.h",
378 ]
379 deps = [
380 ":turn_utils",
381 "../api:array_view",
382 "../modules/rtp_rtcp:rtp_rtcp_format",
Florent Castellia138c6c2023-01-04 11:01:09383 "../rtc_base:async_packet_socket",
Harald Alvestrand794d5992022-12-16 09:54:57384 "../rtc_base:byte_order",
385 "../rtc_base:checks",
Philipp Hancke57dbb1e2024-05-14 15:35:24386 "../rtc_base:digest",
Harald Alvestrand794d5992022-12-16 09:54:57387 "../rtc_base/system:rtc_export",
Florent Castelli99c519b2024-05-23 11:21:53388 "//third_party/abseil-cpp/absl/strings:string_view",
Harald Alvestrand794d5992022-12-16 09:54:57389 ]
Harald Alvestrand794d5992022-12-16 09:54:57390}
391
392rtc_library("stream_params") {
393 sources = [
394 "base/stream_params.cc",
395 "base/stream_params.h",
396 ]
397 deps = [
398 ":rid_description",
399 "../api:array_view",
Harald Alvestrand794d5992022-12-16 09:54:57400 "../rtc_base:stringutils",
Florent Castellia138c6c2023-01-04 11:01:09401 "../rtc_base:unique_id_generator",
Florent Castelli99c519b2024-05-23 11:21:53402 "//third_party/abseil-cpp/absl/algorithm:container",
Harald Alvestrand794d5992022-12-16 09:54:57403 ]
Harald Alvestrand794d5992022-12-16 09:54:57404}
405
406rtc_library("media_constants") {
407 sources = [
408 "base/media_constants.cc",
409 "base/media_constants.h",
410 ]
411 deps = [ "../rtc_base/system:rtc_export" ]
412}
413
414rtc_library("turn_utils") {
415 sources = [
416 "base/turn_utils.cc",
417 "base/turn_utils.h",
418 ]
419 deps = [
420 "../api/transport:stun_types",
421 "../rtc_base:byte_order",
422 "../rtc_base/system:rtc_export",
423 ]
424}
425
426rtc_library("rid_description") {
427 sources = [
428 "base/rid_description.cc",
429 "base/rid_description.h",
430 ]
431 deps = []
432}
433
Mirko Bonadei86d053c2019-10-17 19:32:04434rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 07:51:18435 visibility = [ "*" ]
436 defines = []
437 libs = []
438 sources = [
439 "engine/simulcast_encoder_adapter.cc",
440 "engine/simulcast_encoder_adapter.h",
441 ]
442 deps = [
Philipp Hancke7c5f9cf2024-02-20 14:28:14443 ":rtc_sdp_video_format_utils",
Harald Alvestrandafaae4e2024-03-12 12:06:16444 ":video_common",
Elad Alon8f01c4e2019-06-28 13:19:43445 "../api:fec_controller_api",
Jeremy Leconte1a8d5292023-10-10 13:21:29446 "../api:field_trials_view",
Mirko Bonadeid9708072019-01-25 19:26:48447 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24448 "../api:sequence_checker",
Danil Chapovalov27253172024-03-12 15:58:18449 "../api/environment",
Erik Språngf93eda12019-01-16 16:10:57450 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 15:47:49451 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38452 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 16:50:03453 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 07:51:18454 "../api/video_codecs:video_codecs_api",
Markus Handell32565f62019-12-04 09:58:17455 "../call:video_stream_api",
Åsa Persson59947d22021-08-26 10:04:27456 "../common_video",
Sergey Silkinb6ef1a72023-10-23 15:11:21457 "../media:media_constants",
Jonathan Yu9a5da492018-10-19 07:51:18458 "../modules/video_coding:video_codec_interface",
459 "../modules/video_coding:video_coding_utility",
460 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30461 "../rtc_base:logging",
Åsa Perssona7e34d32021-01-20 14:36:13462 "../rtc_base/experiments:encoder_info_settings",
Erik Språng7f24fb92019-02-13 09:49:37463 "../rtc_base/experiments:rate_control_settings",
Mirko Bonadei20e4c802020-11-23 10:07:42464 "../rtc_base/system:no_unique_address",
Mirko Bonadei66e76792019-04-02 09:33:59465 "../rtc_base/system:rtc_export",
Jonathan Yu9a5da492018-10-19 07:51:18466 "../system_wrappers",
Erik Språng5ab6a8c2021-01-14 15:37:26467 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov27253172024-03-12 15:58:18468 "//third_party/abseil-cpp/absl/base:nullability",
Erik Språng5ab6a8c2021-01-14 15:37:26469 "//third_party/abseil-cpp/absl/types:optional",
470 ]
Jonathan Yu9a5da492018-10-19 07:51:18471}
472
Mirko Bonadei86d053c2019-10-17 19:32:04473rtc_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32474 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 02:31:53475 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 14:10:22476 defines = []
477 libs = []
Patrik Höglund99175c62018-01-08 10:05:10478 deps = [
Harald Alvestrand794d5992022-12-16 09:54:57479 ":codec",
480 ":media_constants",
Jonathan Yu9a5da492018-10-19 07:51:18481 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov46364192024-02-09 11:43:15482 "../api/environment",
Yves Gerey3e707812018-11-28 15:47:49483 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24484 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 15:47:49485 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38486 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24487 "../api/video_codecs:rtc_software_fallback_wrappers",
488 "../api/video_codecs:video_codecs_api",
philipel2a2f3ec2022-05-24 08:32:32489 "../api/video_codecs:video_encoder_factory_template",
490 "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
491 "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
492 "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24493 "../call:call_interfaces",
494 "../call:video_stream_api",
Patrik Höglund99175c62018-01-08 10:05:10495 "../modules/video_coding:video_codec_interface",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24496 "../modules/video_coding:webrtc_h264",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24497 "../modules/video_coding:webrtc_vp8",
498 "../modules/video_coding:webrtc_vp9",
499 "../rtc_base:checks",
Florent Castelli0af55ba2022-04-04 13:06:30500 "../rtc_base:logging",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24501 "../rtc_base/system:rtc_export",
philipelb09d8722021-11-23 10:00:24502 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24503 "../test:fake_video_codecs",
Florent Castelli99c519b2024-05-23 11:21:53504 "//third_party/abseil-cpp/absl/strings",
505 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglund99175c62018-01-08 10:05:10506 ]
philipel2a2f3ec2022-05-24 08:32:32507
508 if (enable_libaom) {
509 defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
510 deps += [
511 "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
512 ]
513 }
514
philipelb09d8722021-11-23 10:00:24515 if (rtc_include_dav1d_in_internal_decoder_factory) {
516 deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
517 }
Anders Carlssona114c882018-01-04 14:10:22518 sources = [
Emircan Uysaler7c03bdc2019-01-16 20:07:56519 "engine/fake_video_codec_factory.cc",
520 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 17:11:00521 "engine/internal_decoder_factory.cc",
522 "engine/internal_decoder_factory.h",
523 "engine/internal_encoder_factory.cc",
524 "engine/internal_encoder_factory.h",
Anders Carlssona114c882018-01-04 14:10:22525 ]
Anders Carlssona114c882018-01-04 14:10:22526}
527
Mirko Bonadei86d053c2019-10-17 19:32:04528rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53529 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23530 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 14:10:22531 defines = []
532 libs = []
533 deps = [
Harald Alvestrandfb4ad292024-02-28 11:01:25534 ":audio_source",
Harald Alvestrand794d5992022-12-16 09:54:57535 ":codec",
536 ":media_channel",
Harald Alvestrandd3ac3b62022-12-16 14:46:31537 ":media_channel_impl",
Harald Alvestrand794d5992022-12-16 09:54:57538 ":media_constants",
Harald Alvestrandfb4ad292024-02-28 11:01:25539 ":media_engine",
Harald Alvestrand13897e62023-05-22 12:49:05540 ":rid_description",
Harald Alvestrand13897e62023-05-22 12:49:05541 ":rtc_media_config",
Harald Alvestrand794d5992022-12-16 09:54:57542 ":rtp_utils",
543 ":stream_params",
Harald Alvestrandb4c96d62022-10-26 13:51:35544 "../api:array_view",
Harald Alvestrand13897e62023-05-22 12:49:05545 "../api:audio_options_api",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24546 "../api:call_api",
Jonas Orelande62c2f22022-03-29 09:04:48547 "../api:field_trials_view",
Harald Alvestrand13897e62023-05-22 12:49:05548 "../api:frame_transformer_interface",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24549 "../api:libjingle_peerconnection_api",
Harald Alvestrand13897e62023-05-22 12:49:05550 "../api:make_ref_counted",
Florent Castellib05ca4b2020-03-05 12:39:55551 "../api:media_stream_interface",
Harald Alvestrand13897e62023-05-22 12:49:05552 "../api:priority",
553 "../api:rtc_error",
554 "../api:rtp_headers",
Niels Möller6dcd4dc2019-08-26 08:45:28555 "../api:rtp_parameters",
Harald Alvestrand13897e62023-05-22 12:49:05556 "../api:rtp_transceiver_direction",
Mirko Bonadeid9708072019-01-25 19:26:48557 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:24558 "../api:sequence_checker",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24559 "../api:transport_api",
Florent Castellif4673f92024-04-19 19:46:03560 "../api/audio:audio_device",
Harald Alvestrand13897e62023-05-22 12:49:05561 "../api/audio:audio_frame_api",
Olga Sharonova09ceed22020-09-30 16:27:39562 "../api/audio:audio_frame_processor",
Danil Chapovalov85b8ce22019-05-31 13:51:04563 "../api/audio:audio_mixer_api",
Florent Castelli0afde762024-04-19 15:07:08564 "../api/audio:audio_processing",
565 "../api/audio:audio_processing_statistics",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24566 "../api/audio_codecs:audio_codecs_api",
Harald Alvestrand13897e62023-05-22 12:49:05567 "../api/crypto:frame_decryptor_interface",
568 "../api/crypto:frame_encryptor_interface",
569 "../api/crypto:options",
Danil Chapovalov4c7112a2019-03-27 17:51:45570 "../api/task_queue",
Artem Titovc374d112022-06-16 19:27:45571 "../api/task_queue:pending_task_safety_flag",
Mirko Bonadei738bfa72019-09-17 12:47:38572 "../api/transport:bitrate_settings",
Erik Språngceb44952020-09-22 09:36:35573 "../api/transport:field_trial_based_config",
Niels Möllera8370302019-09-02 13:16:49574 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 14:19:43575 "../api/units:data_rate",
Harald Alvestrand13897e62023-05-22 12:49:05576 "../api/units:time_delta",
577 "../api/units:timestamp",
578 "../api/video:recordable_encoded_frame",
579 "../api/video:resolution",
Yves Gerey3e707812018-11-28 15:47:49580 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 18:02:56581 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24582 "../api/video:video_codec_constants",
583 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38584 "../api/video:video_rtp_headers",
Harald Alvestrand13897e62023-05-22 12:49:05585 "../api/video:video_stream_encoder",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24586 "../api/video_codecs:rtc_software_fallback_wrappers",
Harald Alvestrand13897e62023-05-22 12:49:05587 "../api/video_codecs:scalability_mode",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24588 "../api/video_codecs:video_codecs_api",
589 "../call",
590 "../call:call_interfaces",
Harald Alvestrand13897e62023-05-22 12:49:05591 "../call:receive_stream_interface",
592 "../call:rtp_interfaces",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24593 "../call:video_stream_api",
594 "../common_video",
Harald Alvestrand13897e62023-05-22 12:49:05595 "../common_video:frame_counts",
Olga Sharonova09ceed22020-09-30 16:27:39596 "../modules/async_audio_processing:async_audio_processing",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24597 "../modules/audio_device",
598 "../modules/audio_device:audio_device_impl",
599 "../modules/audio_mixer:audio_mixer_impl",
Artem Titov94b57c02019-03-21 12:35:10600 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 08:10:26601 "../modules/audio_processing/agc:gain_control_interface",
Philipp Hancke17e8a5c2023-06-21 11:53:41602 "../modules/rtp_rtcp",
Danil Chapovalov99a71f42021-07-19 13:20:46603 "../modules/rtp_rtcp:rtp_rtcp_format",
Artem Titov94b57c02019-03-21 12:35:10604 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 09:11:40605 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 14:16:38606 "../modules/video_coding:video_coding_utility",
Erik Språngb6ff84b2022-07-05 11:02:28607 "../modules/video_coding:webrtc_vp9_helpers",
Niels Möller79d566b2022-04-29 09:03:13608 "../modules/video_coding/svc:scalability_mode_util",
Jonas Olssonabbe8412018-04-03 11:40:05609 "../rtc_base:audio_format_to_string",
Florent Castellif9c59842022-04-19 15:07:23610 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36611 "../rtc_base:byte_order",
Anders Carlssona114c882018-01-04 14:10:22612 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46613 "../rtc_base:copy_on_write_buffer",
Harald Alvestrand13897e62023-05-22 12:49:05614 "../rtc_base:dscp",
Florent Castellia30aef32022-04-19 15:47:13615 "../rtc_base:event_tracer",
Florent Castelli0af55ba2022-04-04 13:06:30616 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46617 "../rtc_base:macromagic",
Florent Castellia138c6c2023-01-04 11:01:09618 "../rtc_base:network_route",
Florent Castellif4db3512022-04-14 11:38:05619 "../rtc_base:race_checker",
Florent Castellie10a9f62022-04-04 15:04:37620 "../rtc_base:safe_conversions",
Harald Alvestrand13897e62023-05-22 12:49:05621 "../rtc_base:socket",
Florent Castellia138c6c2023-01-04 11:01:09622 "../rtc_base:ssl",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24623 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01624 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15625 "../rtc_base:timeutils",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24626 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 14:19:43627 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24628 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Rasmus Brandt2b9317a2019-10-30 12:01:46629 "../rtc_base/experiments:rate_control_settings",
Harald Alvestrand13897e62023-05-22 12:49:05630 "../rtc_base/network:sent_packet",
Markus Handell1e257ca2020-07-07 13:43:11631 "../rtc_base/synchronization:mutex",
Harald Alvestrand13897e62023-05-22 12:49:05632 "../rtc_base/system:file_wrapper",
Tommi13b9f812022-08-16 08:23:47633 "../rtc_base/system:no_unique_address",
Mirko Bonadei276827c2018-10-16 12:13:50634 "../rtc_base/system:rtc_export",
Artem Titova76af0c2018-07-23 15:38:12635 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24636 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10637 "../system_wrappers:metrics",
Harald Alvestrand13897e62023-05-22 12:49:05638 "../video/config:encoder_config",
Harald Alvestrand13897e62023-05-22 12:49:05639 "//third_party/abseil-cpp/absl/algorithm",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24640 "//third_party/abseil-cpp/absl/algorithm:container",
Harald Alvestrand13897e62023-05-22 12:49:05641 "//third_party/abseil-cpp/absl/container:inlined_vector",
642 "//third_party/abseil-cpp/absl/functional:any_invocable",
Per K89ca2992023-01-10 13:28:25643 "//third_party/abseil-cpp/absl/functional:bind_front",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24644 "//third_party/abseil-cpp/absl/strings",
Florent Castelli99c519b2024-05-23 11:21:53645 "//third_party/abseil-cpp/absl/strings:string_view",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24646 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 14:10:22647 ]
648
649 sources = [
650 "engine/adm_helpers.cc",
651 "engine/adm_helpers.h",
Anders Carlssona114c882018-01-04 14:10:22652 "engine/payload_type_mapper.cc",
653 "engine/payload_type_mapper.h",
Steve Anton10542f22019-01-11 17:11:00654 "engine/webrtc_media_engine.cc",
655 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 17:11:00656 "engine/webrtc_video_engine.cc",
657 "engine/webrtc_video_engine.h",
658 "engine/webrtc_voice_engine.cc",
659 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 10:09:32660 ]
661
ehmaldonadoe9cc6862016-09-05 13:10:18662 public_configs = []
Niels Möller85818772019-04-09 06:24:58663 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 10:09:32664 public_configs += [ ":rtc_media_defines_config" ]
665 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
666 }
aleloi048cbdd2017-05-29 09:56:27667 if (rtc_enable_protobuf) {
Jakob Ivarsson39adce12020-06-25 12:09:58668 deps += [
669 "../modules/audio_coding:ana_config_proto",
670 "../modules/audio_processing/aec_dump:aec_dump_impl",
671 ]
aleloi048cbdd2017-05-29 09:56:27672 } else {
673 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
674 }
kjellanderc76dc952016-06-03 10:09:32675}
kjellander82a94492016-06-13 05:12:01676
Florent Castellia80c3e52021-04-15 13:02:56677rtc_source_set("rtc_data_sctp_transport_internal") {
678 sources = [ "sctp/sctp_transport_internal.h" ]
Danil Chapovalov6fe6b5a2019-04-10 10:50:24679 deps = [
Harald Alvestrand794d5992022-12-16 09:54:57680 ":media_channel",
Tommi1fabbac2023-03-21 13:48:51681 "../api:rtc_error",
Florent Castellid95b1492021-05-10 09:29:56682 "../api/transport:datagram_transport_interface",
Harald Alvestranda310d782024-01-25 12:27:18683 "../p2p:packet_transport_internal",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24684 "../p2p:rtc_p2p",
Florent Castellied4aadc2022-04-19 15:40:46685 "../rtc_base:copy_on_write_buffer",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01686 "../rtc_base:threading",
Mirko Bonadei2dcf3482020-06-05 12:30:41687 ]
Florent Castellia80c3e52021-04-15 13:02:56688}
zhihuang38ede132017-06-15 19:52:32689
Florent Castellia6983c62021-05-06 08:50:07690if (rtc_build_dcsctp) {
691 rtc_library("rtc_data_dcsctp_transport") {
692 sources = [
693 "sctp/dcsctp_transport.cc",
694 "sctp/dcsctp_transport.h",
695 ]
696 deps = [
Harald Alvestrand794d5992022-12-16 09:54:57697 ":media_channel",
Florent Castellia6983c62021-05-06 08:50:07698 ":rtc_data_sctp_transport_internal",
699 "../api:array_view",
Victor Boivie2c1cfd02024-03-18 12:51:40700 "../api:libjingle_peerconnection_api",
Danil Chapovalov8d079be2024-04-08 16:35:40701 "../api/environment",
Artem Titovc374d112022-06-16 19:27:45702 "../api/task_queue:pending_task_safety_flag",
Henrik Boströmb951dc62022-01-26 17:38:13703 "../api/task_queue:task_queue",
Florent Castelli6a11c842021-06-01 16:39:49704 "../net/dcsctp/public:factory",
Florent Castellia6983c62021-05-06 08:50:07705 "../net/dcsctp/public:socket",
706 "../net/dcsctp/public:types",
Victor Boivie5e726da2021-06-19 05:59:01707 "../net/dcsctp/public:utils",
Florent Castellia6983c62021-05-06 08:50:07708 "../net/dcsctp/timer:task_queue_timeout",
Harald Alvestranda310d782024-01-25 12:27:18709 "../p2p:packet_transport_internal",
Florent Castellia6983c62021-05-06 08:50:07710 "../p2p:rtc_p2p",
711 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46712 "../rtc_base:copy_on_write_buffer",
Florent Castellia30aef32022-04-19 15:47:13713 "../rtc_base:event_tracer",
Florent Castelli0af55ba2022-04-04 13:06:30714 "../rtc_base:logging",
Fredrik Solenberg5cb3a902022-08-22 09:34:29715 "../rtc_base:macromagic",
Florent Castelli71337f32022-04-14 10:41:26716 "../rtc_base:random",
Victor Boivie8df32eb2021-08-12 13:21:25717 "../rtc_base:socket",
Florent Castelli57aa81b2022-04-04 15:14:02718 "../rtc_base:stringutils",
Florent Castellia6983c62021-05-06 08:50:07719 "../rtc_base:threading",
Florent Castelli8f04c7c2022-05-05 21:43:44720 "../rtc_base/containers:flat_map",
Per Kf4aadf32024-02-27 08:01:15721 "../rtc_base/network:received_packet",
Florent Castellia6983c62021-05-06 08:50:07722 "../rtc_base/third_party/sigslot:sigslot",
723 "../system_wrappers",
Florent Castellia6983c62021-05-06 08:50:07724 "//third_party/abseil-cpp/absl/strings:strings",
725 "//third_party/abseil-cpp/absl/types:optional",
726 ]
727 }
728}
729
Florent Castellia80c3e52021-04-15 13:02:56730rtc_library("rtc_data_sctp_transport_factory") {
731 defines = []
732 sources = [
733 "sctp/sctp_transport_factory.cc",
734 "sctp/sctp_transport_factory.h",
735 ]
736 deps = [
737 ":rtc_data_sctp_transport_internal",
Victor Boiviecd54fd82024-02-28 11:16:15738 "../api/environment",
Florent Castellia80c3e52021-04-15 13:02:56739 "../api/transport:sctp_transport_factory_interface",
740 "../rtc_base:threading",
741 "../rtc_base/system:unused",
742 ]
743
744 if (rtc_enable_sctp) {
Florent Castellif2599a72022-03-31 17:15:10745 assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
Florent Castellia6983c62021-05-06 08:50:07746 }
747
748 if (rtc_build_dcsctp) {
749 defines += [ "WEBRTC_HAVE_DCSCTP" ]
750 deps += [
751 ":rtc_data_dcsctp_transport",
752 "../system_wrappers",
753 "../system_wrappers:field_trial",
754 ]
Florent Castellia80c3e52021-04-15 13:02:56755 }
zhihuang38ede132017-06-15 19:52:32756}
757
758rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53759 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 13:23:23760 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Florent Castellia80c3e52021-04-15 13:02:56761 deps = [ ":rtc_audio_video" ]
zhihuang38ede132017-06-15 19:52:32762}
763
kjellander82a94492016-06-13 05:12:01764if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04765 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-13 05:12:01766 testonly = true
767
Anders Carlsson5f2bb622018-05-14 07:48:06768 defines = []
kjellandera2ef4f92017-03-06 14:04:55769 deps = [
Harald Alvestrandfb4ad292024-02-28 11:01:25770 ":audio_source",
Harald Alvestrand794d5992022-12-16 09:54:57771 ":codec",
772 ":media_channel",
Florent Castelli1f31c202023-06-26 00:26:07773 ":media_channel_impl",
Harald Alvestrand794d5992022-12-16 09:54:57774 ":media_constants",
Harald Alvestrandfb4ad292024-02-28 11:01:25775 ":media_engine",
Mirko Bonadei75baa492018-01-11 16:07:30776 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24777 ":rtc_internal_video_codecs",
778 ":rtc_media",
Jonathan Yu9a5da492018-10-19 07:51:18779 ":rtc_simulcast_encoder_adapter",
Harald Alvestrand794d5992022-12-16 09:54:57780 ":rtp_utils",
781 ":stream_params",
Harald Alvestrandafaae4e2024-03-12 12:06:16782 ":video_common",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24783 "../api:call_api",
Elad Alon8f01c4e2019-06-28 13:19:43784 "../api:fec_controller_api",
Florent Castelli1f31c202023-06-26 00:26:07785 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:48786 "../api:scoped_refptr",
Florent Castelli0afde762024-04-19 15:07:08787 "../api/audio:audio_processing",
Danil Chapovalov27253172024-03-12 15:58:18788 "../api/environment",
Danil Chapovalovad4a2072022-08-17 08:24:02789 "../api/task_queue",
790 "../api/task_queue:pending_task_safety_flag",
Per K075c20f2023-01-05 14:20:33791 "../api/units:timestamp",
Yves Gerey3e707812018-11-28 15:47:49792 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24793 "../api/video:video_bitrate_allocation",
794 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 10:59:38795 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24796 "../api/video_codecs:video_codecs_api",
797 "../call:call_interfaces",
798 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 12:43:23799 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 12:35:10800 "../common_video",
801 "../modules/audio_processing",
Mirko Bonadeib5728d92017-12-06 06:51:33802 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 10:05:10803 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 10:08:08804 "../modules/video_coding:video_coding_utility",
Åsa Perssone6b4cbe2023-01-11 14:50:58805 "../modules/video_coding/svc:scalability_mode_util",
kjellandera2ef4f92017-03-06 14:04:55806 "../p2p:rtc_p2p",
Florent Castellif9c59842022-04-19 15:07:23807 "../rtc_base:buffer",
Florent Castellia876a922022-04-19 15:18:36808 "../rtc_base:byte_order",
Patrik Höglunda8005cf2017-12-13 15:05:42809 "../rtc_base:checks",
Florent Castellied4aadc2022-04-19 15:40:46810 "../rtc_base:copy_on_write_buffer",
Florent Castellia138c6c2023-01-04 11:01:09811 "../rtc_base:dscp",
Mirko Bonadeie3abb812018-11-23 12:15:08812 "../rtc_base:gunit_helpers",
Florent Castelli4467ad72022-04-04 13:18:46813 "../rtc_base:macromagic",
Florent Castellia138c6c2023-01-04 11:01:09814 "../rtc_base:network_route",
Florent Castelli33d31fb2022-04-04 14:57:52815 "../rtc_base:rtc_event",
Patrik Höglund3e113432017-12-15 13:40:10816 "../rtc_base:stringutils",
Mirko Bonadeie5f4c6b2021-01-15 09:41:01817 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15818 "../rtc_base:timeutils",
Markus Handell1e257ca2020-07-07 13:43:11819 "../rtc_base/synchronization:mutex",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24820 "../rtc_base/third_party/sigslot",
821 "../test:test_support",
Jonas Oreland72523482022-09-28 14:28:42822 "../video/config:streams_config",
Danil Chapovalov6fe6b5a2019-04-10 10:50:24823 "//testing/gtest",
Steve Anton2c9ebef2019-01-29 01:27:58824 "//third_party/abseil-cpp/absl/algorithm:container",
Florent Castelli1f31c202023-06-26 00:26:07825 "//third_party/abseil-cpp/absl/functional:any_invocable",
Yves Gerey69807e82018-10-30 21:23:02826 "//third_party/abseil-cpp/absl/strings",
Florent Castelli99c519b2024-05-23 11:21:53827 "//third_party/abseil-cpp/absl/strings:string_view",
Fredrik Hernqvistefbe7532023-01-13 15:42:36828 "//third_party/abseil-cpp/absl/types:optional",
kjellandera2ef4f92017-03-06 14:04:55829 ]
kjellander82a94492016-06-13 05:12:01830 sources = [
Steve Anton10542f22019-01-11 17:11:00831 "base/fake_frame_source.cc",
832 "base/fake_frame_source.h",
833 "base/fake_media_engine.cc",
834 "base/fake_media_engine.h",
835 "base/fake_network_interface.h",
836 "base/fake_rtp.cc",
837 "base/fake_rtp.h",
Steve Anton10542f22019-01-11 17:11:00838 "base/fake_video_renderer.cc",
839 "base/fake_video_renderer.h",
840 "base/test_utils.cc",
841 "base/test_utils.h",
842 "engine/fake_webrtc_call.cc",
843 "engine/fake_webrtc_call.h",
844 "engine/fake_webrtc_video_engine.cc",
845 "engine/fake_webrtc_video_engine.h",
kjellander82a94492016-06-13 05:12:01846 ]
kjellander82a94492016-06-13 05:12:01847 }
848
Andrey Logvine7c79fd2021-02-01 09:56:37849 if (!build_with_chromium) {
850 rtc_media_unittests_resources = [
851 "../resources/media/captured-320x240-2s-48.frames",
852 "../resources/media/faces.1280x720_P420.yuv",
853 "../resources/media/faces_I400.jpg",
854 "../resources/media/faces_I411.jpg",
855 "../resources/media/faces_I420.jpg",
856 "../resources/media/faces_I422.jpg",
857 "../resources/media/faces_I444.jpg",
Andrey Logvin78646002021-01-29 10:50:19858 ]
kjellander32c4a202016-08-30 09:53:49859
860 if (is_ios) {
Andrey Logvine7c79fd2021-02-01 09:56:37861 bundle_data("rtc_media_unittests_bundle_data") {
862 testonly = true
863 sources = rtc_media_unittests_resources
864 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
865 }
kjellander82a94492016-06-13 05:12:01866 }
Taylor Brandstetterc2128732020-07-03 23:37:57867
Andrey Logvine7c79fd2021-02-01 09:56:37868 rtc_test("rtc_media_unittests") {
869 testonly = true
870
871 defines = []
872 deps = [
Harald Alvestrand794d5992022-12-16 09:54:57873 ":codec",
Florent Castellid20bbc42023-06-21 12:36:06874 ":media_channel",
Harald Alvestrand794d5992022-12-16 09:54:57875 ":media_constants",
Harald Alvestrandfb4ad292024-02-28 11:01:25876 ":media_engine",
Andrey Logvine7c79fd2021-02-01 09:56:37877 ":rtc_audio_video",
Andrey Logvine7c79fd2021-02-01 09:56:37878 ":rtc_internal_video_codecs",
879 ":rtc_media",
Andrey Logvine7c79fd2021-02-01 09:56:37880 ":rtc_media_tests_utils",
Johannes Kronc3fcee72021-04-19 07:09:26881 ":rtc_sdp_video_format_utils",
Andrey Logvine7c79fd2021-02-01 09:56:37882 ":rtc_simulcast_encoder_adapter",
Harald Alvestrand794d5992022-12-16 09:54:57883 ":rtp_utils",
884 ":stream_params",
885 ":turn_utils",
Harald Alvestrandafaae4e2024-03-12 12:06:16886 ":video_adapter",
887 ":video_broadcaster",
888 ":video_common",
Andrey Logvine7c79fd2021-02-01 09:56:37889 "../api:create_simulcast_test_fixture_api",
Jeremy Leconte1a8d5292023-10-10 13:21:29890 "../api:field_trials_view",
Andrey Logvine7c79fd2021-02-01 09:56:37891 "../api:libjingle_peerconnection_api",
Jonas Oreland65455162022-06-08 09:25:46892 "../api:mock_encoder_selector",
Andrey Logvine7c79fd2021-02-01 09:56:37893 "../api:mock_video_bitrate_allocator",
894 "../api:mock_video_bitrate_allocator_factory",
895 "../api:mock_video_codec_factory",
896 "../api:mock_video_encoder",
897 "../api:rtp_parameters",
898 "../api:scoped_refptr",
899 "../api:simulcast_test_fixture_api",
900 "../api/audio_codecs:builtin_audio_decoder_factory",
901 "../api/audio_codecs:builtin_audio_encoder_factory",
Danil Chapovalov75aa7e92023-11-28 16:30:07902 "../api/environment",
903 "../api/environment:environment_factory",
Andrey Logvine7c79fd2021-02-01 09:56:37904 "../api/rtc_event_log",
905 "../api/task_queue",
906 "../api/task_queue:default_task_queue_factory",
907 "../api/test/video:function_video_factory",
908 "../api/transport:field_trial_based_config",
909 "../api/units:time_delta",
Markus Handellee034312021-11-05 14:02:03910 "../api/units:timestamp",
Andrey Logvine7c79fd2021-02-01 09:56:37911 "../api/video:builtin_video_bitrate_allocator_factory",
Jonas Oreland43f0f292022-10-07 13:37:17912 "../api/video:resolution",
Andrey Logvine7c79fd2021-02-01 09:56:37913 "../api/video:video_bitrate_allocation",
Sergey Silkin0e3cb9f2021-02-02 17:23:40914 "../api/video:video_codec_constants",
Andrey Logvine7c79fd2021-02-01 09:56:37915 "../api/video:video_frame",
916 "../api/video:video_rtp_headers",
Andrey Logvine7c79fd2021-02-01 09:56:37917 "../api/video_codecs:video_codecs_api",
philipel44437d32023-03-31 14:36:12918 "../api/video_codecs:video_decoder_factory_template",
919 "../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
920 "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
921 "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
922 "../api/video_codecs:video_decoder_factory_template_open_h264_adapter",
923 "../api/video_codecs:video_encoder_factory_template",
924 "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
925 "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
926 "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
927 "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
Andrey Logvine7c79fd2021-02-01 09:56:37928 "../audio",
929 "../call:call_interfaces",
930 "../common_video",
Andrey Logvine7c79fd2021-02-01 09:56:37931 "../modules/audio_device:mock_audio_device",
Jakob Ivarsson514dff82022-11-23 15:48:49932 "../modules/audio_mixer:audio_mixer_impl",
Andrey Logvine7c79fd2021-02-01 09:56:37933 "../modules/audio_processing",
Andrey Logvine7c79fd2021-02-01 09:56:37934 "../modules/audio_processing:mocks",
935 "../modules/rtp_rtcp",
Danil Chapovalov47f5f8c2021-06-03 10:27:12936 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37937 "../modules/video_coding:simulcast_test_fixture_impl",
938 "../modules/video_coding:video_codec_interface",
939 "../modules/video_coding:webrtc_h264",
940 "../modules/video_coding:webrtc_vp8",
Åsa Perssone6b4cbe2023-01-11 14:50:58941 "../modules/video_coding/svc:scalability_mode_util",
Andrey Logvine7c79fd2021-02-01 09:56:37942 "../p2p:p2p_test_utils",
Florent Castellia138c6c2023-01-04 11:01:09943 "../rtc_base:async_packet_socket",
Florent Castellia876a922022-04-19 15:18:36944 "../rtc_base:byte_order",
Andrey Logvine7c79fd2021-02-01 09:56:37945 "../rtc_base:checks",
946 "../rtc_base:gunit_helpers",
Florent Castelli0af55ba2022-04-04 13:06:30947 "../rtc_base:logging",
Florent Castelli4467ad72022-04-04 13:18:46948 "../rtc_base:macromagic",
Andrey Logvine7c79fd2021-02-01 09:56:37949 "../rtc_base:rtc_base_tests_utils",
Florent Castelli33d31fb2022-04-04 14:57:52950 "../rtc_base:rtc_event",
Florent Castellie10a9f62022-04-04 15:04:37951 "../rtc_base:safe_conversions",
Andrey Logvine7c79fd2021-02-01 09:56:37952 "../rtc_base:stringutils",
953 "../rtc_base:threading",
Florent Castellidd837e22022-04-04 15:16:15954 "../rtc_base:timeutils",
Andrey Logvine7c79fd2021-02-01 09:56:37955 "../rtc_base/experiments:min_video_bitrate_experiment",
956 "../rtc_base/synchronization:mutex",
957 "../rtc_base/third_party/sigslot",
Tommia334dc62021-06-04 10:50:01958 "../system_wrappers:field_trial",
Andrey Logvine7c79fd2021-02-01 09:56:37959 "../test:audio_codec_mocks",
960 "../test:fake_video_codecs",
961 "../test:field_trial",
962 "../test:rtp_test_utils",
Jonas Oreland4476b822022-03-10 14:21:28963 "../test:scoped_key_value_config",
Andrey Logvine7c79fd2021-02-01 09:56:37964 "../test:test_main",
965 "../test:test_support",
966 "../test:video_test_common",
Markus Handellee034312021-11-05 14:02:03967 "../test/time_controller",
Jonas Oreland1262eb52022-09-27 14:53:04968 "../video/config:streams_config",
Florent Castelli99c519b2024-05-23 11:21:53969 "//third_party/abseil-cpp/absl/algorithm:container",
970 "//third_party/abseil-cpp/absl/memory",
971 "//third_party/abseil-cpp/absl/strings",
972 "//third_party/abseil-cpp/absl/strings:string_view",
973 "//third_party/abseil-cpp/absl/types:optional",
Andrey Logvine7c79fd2021-02-01 09:56:37974 ]
philipel2a2f3ec2022-05-24 08:32:32975
976 if (enable_libaom) {
977 defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
978 }
979
Andrey Logvine7c79fd2021-02-01 09:56:37980 sources = [
981 "base/codec_unittest.cc",
982 "base/media_engine_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37983 "base/rtp_utils_unittest.cc",
Johannes Kronc3fcee72021-04-19 07:09:26984 "base/sdp_video_format_utils_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37985 "base/stream_params_unittest.cc",
986 "base/turn_utils_unittest.cc",
987 "base/video_adapter_unittest.cc",
988 "base/video_broadcaster_unittest.cc",
989 "base/video_common_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37990 "engine/internal_decoder_factory_unittest.cc",
Johannes Kronb26863e2021-09-15 10:56:04991 "engine/internal_encoder_factory_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37992 "engine/payload_type_mapper_unittest.cc",
993 "engine/simulcast_encoder_adapter_unittest.cc",
Andrey Logvine7c79fd2021-02-01 09:56:37994 "engine/webrtc_media_engine_unittest.cc",
995 "engine/webrtc_video_engine_unittest.cc",
996 ]
997
998 # TODO(kthelgason): Reenable this test on iOS.
999 # See bugs.webrtc.org/5569
1000 if (!is_ios) {
1001 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
1002 }
1003
Andrey Logvine7c79fd2021-02-01 09:56:371004 if (rtc_opus_support_120ms_ptime) {
1005 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
1006 } else {
1007 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
1008 }
1009
1010 data = rtc_media_unittests_resources
1011
1012 if (is_android) {
1013 deps += [ "//testing/android/native_test:native_test_support" ]
1014 shard_timeout = 900
1015 }
1016
1017 if (is_ios) {
1018 deps += [ ":rtc_media_unittests_bundle_data" ]
1019 }
Florent Castellie3b74f82022-05-02 22:24:151020
1021 if (rtc_build_dcsctp) {
1022 sources += [ "sctp/dcsctp_transport_unittest.cc" ]
1023 deps += [
1024 ":rtc_data_dcsctp_transport",
1025 "../net/dcsctp/public:factory",
1026 "../net/dcsctp/public:mocks",
1027 "../net/dcsctp/public:socket",
1028 ]
1029 }
Taylor Brandstetterc2128732020-07-03 23:37:571030 }
kjellander82a94492016-06-13 05:12:011031 }
1032}