blob: 45353344d0ef7fde5fd6b06644d710b3565f6eb3 [file] [log] [blame]
kjellanderc76dc952016-06-03 03:09:32 -07001# 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 06:58:22 -080010import("../webrtc.gni")
kjellanderc76dc952016-06-03 03:09:32 -070011
12group("media") {
Dan Minor9c686132018-01-15 10:20:00 -050013 deps = []
14 if (!build_with_mozilla) {
15 deps += [
16 ":rtc_media",
17 ":rtc_media_base",
18 ]
19 }
kjellanderc76dc952016-06-03 03:09:32 -070020}
21
22config("rtc_media_defines_config") {
Fredrik Solenberge1dcce22019-02-05 12:43:03 +010023 defines = [ "HAVE_WEBRTC_VIDEO" ]
kjellanderc76dc952016-06-03 03:09:32 -070024}
25
Mirko Bonadei86d053c2019-10-17 21:32:04 +020026rtc_library("rtc_h264_profile_id") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000027 visibility = [ "*" ]
zhihuang130ca7e2017-06-21 01:02:59 -070028 sources = [
29 "base/h264_profile_level_id.cc",
30 "base/h264_profile_level_id.h",
31 ]
32
zhihuang130ca7e2017-06-21 01:02:59 -070033 deps = [
34 "..:webrtc_common",
Artem Titov94b57c02019-03-21 13:35:10 +010035 "../rtc_base",
Fredrik Solenbergf693bfa2018-12-11 12:22:10 +010036 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -070037 "../rtc_base:rtc_base_approved",
Mirko Bonadei276827c2018-10-16 14:13:50 +020038 "../rtc_base/system:rtc_export",
Danil Chapovalov00c71832018-06-15 15:58:38 +020039 "//third_party/abseil-cpp/absl/types:optional",
zhihuang130ca7e2017-06-21 01:02:59 -070040 ]
41}
42
Niels Möller6daa2782018-01-23 10:37:42 +010043rtc_source_set("rtc_media_config") {
44 visibility = [ "*" ]
45 sources = [
Steve Anton10542f22019-01-11 09:11:00 -080046 "base/media_config.h",
Niels Möller6daa2782018-01-23 10:37:42 +010047 ]
48}
49
Mirko Bonadei86d053c2019-10-17 21:32:04 +020050rtc_library("rtc_vp9_profile") {
Emircan Uysalerf73d40f2018-12-04 11:00:52 -050051 visibility = [ "*" ]
Emircan Uysaler98badbc2018-06-28 10:59:02 -070052 sources = [
53 "base/vp9_profile.cc",
54 "base/vp9_profile.h",
55 ]
56
57 deps = [
58 "..:webrtc_common",
59 "../api/video_codecs:video_codecs_api",
60 "../rtc_base:rtc_base_approved",
Mirko Bonadei66e76792019-04-02 11:33:59 +020061 "../rtc_base/system:rtc_export",
Emircan Uysaler98badbc2018-06-28 10:59:02 -070062 "//third_party/abseil-cpp/absl/types:optional",
63 ]
64}
65
Mirko Bonadei86d053c2019-10-17 21:32:04 +020066rtc_library("rtc_media_base") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000067 visibility = [ "*" ]
kjellanderc76dc952016-06-03 03:09:32 -070068 defines = []
69 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +010070 deps = [
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020071 ":rtc_h264_profile_id",
72 ":rtc_media_config",
73 ":rtc_vp9_profile",
74 "..:webrtc_common",
Yves Gerey3e707812018-11-28 16:47:49 +010075 "../api:array_view",
Niels Möllera6fe2612018-01-19 11:28:54 +010076 "../api:audio_options_api",
Niels Möllere942b142019-09-17 14:30:41 +020077 "../api:media_stream_interface",
Mirko Bonadeifcfeefe2019-09-10 10:51:23 +020078 "../api:rtc_error",
Niels Möller6dcd4dc2019-08-26 10:45:28 +020079 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 20:26:48 +010080 "../api:scoped_refptr",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020081 "../api/audio_codecs:audio_codecs_api",
Mirko Bonadeieaaaf412019-09-13 14:42:15 +020082 "../api/crypto:frame_decryptor_interface",
83 "../api/crypto:frame_encryptor_interface",
84 "../api/crypto:options",
Niels Möller65f17ca2019-09-12 13:59:36 +020085 "../api/transport/media:media_transport_interface",
Niels Möllera8370302019-09-02 15:16:49 +020086 "../api/transport/rtp:rtp_source",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020087 "../api/video:video_bitrate_allocation",
Jonas Orelanda3aa9bd2019-04-17 07:38:40 +020088 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020089 "../api/video:video_frame",
90 "../api/video:video_frame_i420",
Chen Xing5d24b162019-06-10 12:59:38 +020091 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020092 "../api/video_codecs:video_codecs_api",
93 "../call:call_interfaces",
94 "../common_video",
95 "../modules/audio_processing:audio_processing_statistics",
Henrik Boström87e3f9d2019-05-27 10:44:24 +020096 "../modules/rtp_rtcp:rtp_rtcp_format",
Niels Möller0bd2eff2019-09-02 13:09:58 +020097 "../p2p:stun_types",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +020098 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +010099 "../rtc_base:checks",
Tommi8d2c5a82018-03-19 11:12:48 +0100100 "../rtc_base:rtc_base_approved",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200101 "../rtc_base:rtc_base_approved",
Tommi8d2c5a82018-03-19 11:12:48 +0100102 "../rtc_base:rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100103 "../rtc_base:sanitizer",
Patrik Höglund3e113432017-12-15 14:40:10 +0100104 "../rtc_base:stringutils",
Sebastian Janssonb55015e2019-04-09 13:44:04 +0200105 "../rtc_base/synchronization:sequence_checker",
Niels Möllere8e4dc42019-06-11 14:04:16 +0200106 "../rtc_base/system:file_wrapper",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200107 "../rtc_base/system:rtc_export",
108 "../rtc_base/third_party/sigslot",
Åsa Persson3f7e0ed2019-10-18 15:03:13 +0200109 "../system_wrappers:field_trial",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200110 "//third_party/abseil-cpp/absl/algorithm:container",
111 "//third_party/abseil-cpp/absl/strings",
112 "//third_party/abseil-cpp/absl/types:optional",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100113 ]
kjellanderc76dc952016-06-03 03:09:32 -0700114 sources = [
Steve Anton10542f22019-01-11 09:11:00 -0800115 "base/adapted_video_track_source.cc",
116 "base/adapted_video_track_source.h",
117 "base/audio_source.h",
kjellanderc76dc952016-06-03 03:09:32 -0700118 "base/codec.cc",
119 "base/codec.h",
Ruslan Burakov493a6502019-02-27 15:32:48 +0100120 "base/delayable.h",
Steve Anton10542f22019-01-11 09:11:00 -0800121 "base/media_channel.cc",
122 "base/media_channel.h",
123 "base/media_constants.cc",
124 "base/media_constants.h",
125 "base/media_engine.cc",
126 "base/media_engine.h",
127 "base/rid_description.cc",
128 "base/rid_description.h",
129 "base/rtp_data_engine.cc",
130 "base/rtp_data_engine.h",
131 "base/rtp_utils.cc",
132 "base/rtp_utils.h",
133 "base/stream_params.cc",
134 "base/stream_params.h",
135 "base/turn_utils.cc",
136 "base/turn_utils.h",
137 "base/video_adapter.cc",
138 "base/video_adapter.h",
139 "base/video_broadcaster.cc",
140 "base/video_broadcaster.h",
Steve Anton10542f22019-01-11 09:11:00 -0800141 "base/video_common.cc",
142 "base/video_common.h",
143 "base/video_source_base.cc",
144 "base/video_source_base.h",
magjed0928a3c2016-11-25 00:40:18 -0800145 ]
magjed0928a3c2016-11-25 00:40:18 -0800146}
147
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200148rtc_library("rtc_constants") {
magjed0928a3c2016-11-25 00:40:18 -0800149 defines = []
150 libs = []
Anders Carlssona114c882018-01-04 15:10:22 +0100151 deps = []
magjed0928a3c2016-11-25 00:40:18 -0800152 sources = [
mallikarjun829deda482017-11-20 17:48:13 +0530153 "engine/constants.cc",
charujain66748462017-09-14 13:53:02 -0700154 "engine/constants.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100155 ]
156}
157
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200158rtc_library("rtc_simulcast_encoder_adapter") {
Jonathan Yu9a5da492018-10-19 00:51:18 -0700159 visibility = [ "*" ]
160 defines = []
161 libs = []
162 sources = [
163 "engine/simulcast_encoder_adapter.cc",
164 "engine/simulcast_encoder_adapter.h",
165 ]
166 deps = [
Elad Alon8f01c4e2019-06-28 15:19:43 +0200167 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100168 "../api:scoped_refptr",
Erik Språngf93eda12019-01-16 17:10:57 +0100169 "../api/video:video_codec_constants",
Yves Gerey3e707812018-11-28 16:47:49 +0100170 "../api/video:video_frame",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700171 "../api/video:video_frame_i420",
Chen Xing5d24b162019-06-10 12:59:38 +0200172 "../api/video:video_rtp_headers",
Erik Språngf4e0c292019-10-01 18:50:03 +0200173 "../api/video_codecs:rtc_software_fallback_wrappers",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700174 "../api/video_codecs:video_codecs_api",
175 "../modules/video_coding:video_codec_interface",
176 "../modules/video_coding:video_coding_utility",
177 "../rtc_base:checks",
178 "../rtc_base:rtc_base_approved",
Erik Språng7f24fb92019-02-13 10:49:37 +0100179 "../rtc_base/experiments:rate_control_settings",
Sebastian Janssonb55015e2019-04-09 13:44:04 +0200180 "../rtc_base/synchronization:sequence_checker",
Mirko Bonadei66e76792019-04-02 11:33:59 +0200181 "../rtc_base/system:rtc_export",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700182 "../system_wrappers",
183 "../system_wrappers:field_trial",
184 "//third_party/abseil-cpp/absl/types:optional",
185 "//third_party/libyuv",
186 ]
Jonathan Yu9a5da492018-10-19 00:51:18 -0700187}
188
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200189rtc_library("rtc_encoder_simulcast_proxy") {
Florent Castellie7862cc2018-12-06 13:38:24 +0100190 visibility = [ "*" ]
191 defines = []
192 libs = []
193 sources = [
194 "engine/encoder_simulcast_proxy.cc",
195 "engine/encoder_simulcast_proxy.h",
196 ]
197 deps = [
198 ":rtc_simulcast_encoder_adapter",
Florent Castellie7862cc2018-12-06 13:38:24 +0100199 "../api/video:video_bitrate_allocation",
200 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +0200201 "../api/video:video_rtp_headers",
Florent Castellie7862cc2018-12-06 13:38:24 +0100202 "../api/video_codecs:video_codecs_api",
203 "../modules/video_coding:video_codec_interface",
Mirko Bonadei66e76792019-04-02 11:33:59 +0200204 "../rtc_base/system:rtc_export",
Florent Castellie7862cc2018-12-06 13:38:24 +0100205 ]
Florent Castellie7862cc2018-12-06 13:38:24 +0100206}
207
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200208rtc_library("rtc_internal_video_codecs") {
Per Kjellandera0f5f602018-01-10 15:57:32 +0000209 visibility = [ "*" ]
Karl Wiberg7ba22b82018-04-27 04:31:53 +0200210 allow_poison = [ "software_video_codecs" ]
Anders Carlssona114c882018-01-04 15:10:22 +0100211 defines = []
212 libs = []
Patrik Höglund99175c62018-01-08 11:05:10 +0100213 deps = [
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200214 ":rtc_constants",
Florent Castellie7862cc2018-12-06 13:38:24 +0100215 ":rtc_encoder_simulcast_proxy",
Mirko Bonadei75baa492018-01-11 17:07:30 +0100216 ":rtc_h264_profile_id",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200217 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700218 ":rtc_simulcast_encoder_adapter",
Yves Gerey3e707812018-11-28 16:47:49 +0100219 "../:webrtc_common",
220 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200221 "../api/video:video_bitrate_allocation",
Yves Gerey3e707812018-11-28 16:47:49 +0100222 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +0200223 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200224 "../api/video_codecs:rtc_software_fallback_wrappers",
225 "../api/video_codecs:video_codecs_api",
226 "../call:call_interfaces",
227 "../call:video_stream_api",
228 "../modules:module_api",
Patrik Höglund99175c62018-01-08 11:05:10 +0100229 "../modules/video_coding:video_codec_interface",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200230 "../modules/video_coding:webrtc_h264",
231 "../modules/video_coding:webrtc_multiplex",
232 "../modules/video_coding:webrtc_vp8",
233 "../modules/video_coding:webrtc_vp9",
234 "../rtc_base:checks",
235 "../rtc_base:deprecation",
236 "../rtc_base:rtc_base_approved",
237 "../rtc_base/system:rtc_export",
238 "../test:fake_video_codecs",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200239 "//third_party/abseil-cpp/absl/strings",
Patrik Höglund99175c62018-01-08 11:05:10 +0100240 ]
Anders Carlssona114c882018-01-04 15:10:22 +0100241 sources = [
Emircan Uysaler7c03bdc2019-01-16 15:07:56 -0500242 "engine/fake_video_codec_factory.cc",
243 "engine/fake_video_codec_factory.h",
Steve Anton10542f22019-01-11 09:11:00 -0800244 "engine/internal_decoder_factory.cc",
245 "engine/internal_decoder_factory.h",
246 "engine/internal_encoder_factory.cc",
247 "engine/internal_encoder_factory.h",
248 "engine/multiplex_codec_factory.cc",
249 "engine/multiplex_codec_factory.h",
Jonathan Yu327b7532018-10-24 17:21:36 -0700250
251 # TODO(bugs.webrtc.org/7925): stop exporting this header once downstream
Florent Castellie7862cc2018-12-06 13:38:24 +0100252 # targets depend on :rtc_encoder_simulcast_proxy directly.
253 "engine/encoder_simulcast_proxy.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100254 ]
Anders Carlssona114c882018-01-04 15:10:22 +0100255}
256
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200257rtc_library("rtc_audio_video") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000258 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 14:23:23 +0100259 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Anders Carlssona114c882018-01-04 15:10:22 +0100260 defines = []
261 libs = []
262 deps = [
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200263 ":rtc_constants",
264 ":rtc_media_base",
265 "..:webrtc_common",
266 "../api:call_api",
267 "../api:libjingle_peerconnection_api",
Niels Möller6dcd4dc2019-08-26 10:45:28 +0200268 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100269 "../api:scoped_refptr",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200270 "../api:transport_api",
Danil Chapovalov85b8ce22019-05-31 15:51:04 +0200271 "../api/audio:audio_mixer_api",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200272 "../api/audio_codecs:audio_codecs_api",
Danil Chapovalov4c7112a2019-03-27 18:51:45 +0100273 "../api/task_queue",
Mirko Bonadei738bfa72019-09-17 14:47:38 +0200274 "../api/transport:bitrate_settings",
Niels Möller65f17ca2019-09-12 13:59:36 +0200275 "../api/transport:datagram_transport_interface",
276 "../api/transport/media:media_transport_interface",
Niels Möllera8370302019-09-02 15:16:49 +0200277 "../api/transport/rtp:rtp_source",
Elad Alon80f53b72019-10-11 16:19:43 +0200278 "../api/units:data_rate",
Yves Gerey3e707812018-11-28 16:47:49 +0100279 "../api/video:video_bitrate_allocation",
Jiawei Ouc2ebe212018-11-08 10:02:56 -0800280 "../api/video:video_bitrate_allocator_factory",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200281 "../api/video:video_codec_constants",
282 "../api/video:video_frame",
283 "../api/video:video_frame_i420",
Chen Xing5d24b162019-06-10 12:59:38 +0200284 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200285 "../api/video_codecs:rtc_software_fallback_wrappers",
286 "../api/video_codecs:video_codecs_api",
287 "../call",
288 "../call:call_interfaces",
289 "../call:video_stream_api",
290 "../common_video",
291 "../modules/audio_device",
292 "../modules/audio_device:audio_device_impl",
293 "../modules/audio_mixer:audio_mixer_impl",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000294 "../modules/audio_processing:api",
Artem Titov94b57c02019-03-21 13:35:10 +0100295 "../modules/audio_processing/aec_dump",
Sam Zackrisson41478c72019-10-15 10:10:26 +0200296 "../modules/audio_processing/agc:gain_control_interface",
Artem Titov94b57c02019-03-21 13:35:10 +0100297 "../modules/video_coding",
Patrik Höglunda97af1f2018-01-16 10:11:40 +0100298 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200299 "../modules/video_coding:video_coding_utility",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200300 "../rtc_base",
Jonas Olssonabbe8412018-04-03 13:40:05 +0200301 "../rtc_base:audio_format_to_string",
Anders Carlssona114c882018-01-04 15:10:22 +0100302 "../rtc_base:checks",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200303 "../rtc_base:rtc_task_queue",
304 "../rtc_base:stringutils",
Erik Språngd7ee76c2019-08-02 16:32:24 +0200305 "../rtc_base/experiments:experimental_screenshare_settings",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200306 "../rtc_base/experiments:field_trial_parser",
Elad Alon80f53b72019-10-11 16:19:43 +0200307 "../rtc_base/experiments:min_video_bitrate_experiment",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200308 "../rtc_base/experiments:normalize_simulcast_size_experiment",
Mirko Bonadei276827c2018-10-16 14:13:50 +0200309 "../rtc_base/system:rtc_export",
Artem Titova76af0c2018-07-23 17:38:12 +0200310 "../rtc_base/third_party/base64",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200311 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 08:51:10 +0200312 "../system_wrappers:field_trial",
313 "../system_wrappers:metrics",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200314 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200315 "//third_party/abseil-cpp/absl/strings",
316 "//third_party/abseil-cpp/absl/types:optional",
Anders Carlssona114c882018-01-04 15:10:22 +0100317 ]
318
319 sources = [
320 "engine/adm_helpers.cc",
321 "engine/adm_helpers.h",
Steve Anton10542f22019-01-11 09:11:00 -0800322 "engine/null_webrtc_video_engine.h",
Anders Carlssona114c882018-01-04 15:10:22 +0100323 "engine/payload_type_mapper.cc",
324 "engine/payload_type_mapper.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100325 "engine/simulcast.cc",
326 "engine/simulcast.h",
Jonas Oreland6d835922019-03-18 10:59:40 +0100327 "engine/unhandled_packets_buffer.cc",
328 "engine/unhandled_packets_buffer.h",
Steve Anton10542f22019-01-11 09:11:00 -0800329 "engine/webrtc_media_engine.cc",
330 "engine/webrtc_media_engine.h",
Steve Anton10542f22019-01-11 09:11:00 -0800331 "engine/webrtc_video_engine.cc",
332 "engine/webrtc_video_engine.h",
333 "engine/webrtc_voice_engine.cc",
334 "engine/webrtc_voice_engine.h",
kjellanderc76dc952016-06-03 03:09:32 -0700335 ]
336
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700337 public_configs = []
Niels Möller85818772019-04-09 08:24:58 +0200338 if (!build_with_chromium) {
kjellanderc76dc952016-06-03 03:09:32 -0700339 public_configs += [ ":rtc_media_defines_config" ]
340 deps += [ "../modules/video_capture:video_capture_internal_impl" ]
341 }
aleloi048cbdd2017-05-29 02:56:27 -0700342 if (rtc_enable_protobuf) {
343 deps += [ "../modules/audio_processing/aec_dump:aec_dump_impl" ]
344 } else {
345 deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
346 }
kjellanderc76dc952016-06-03 03:09:32 -0700347}
kjellander82a94492016-06-12 22:12:01 -0700348
Danil Chapovalov4844c5f2019-04-10 14:10:10 +0200349# Heavy but optional helper for unittests and webrtc users who prefer to use
350# defaults factories or do not worry about extra dependencies and binary size.
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200351rtc_library("rtc_media_engine_defaults") {
Danil Chapovalov4844c5f2019-04-10 14:10:10 +0200352 visibility = [ "*" ]
353 allow_poison = [
354 "audio_codecs",
Danil Chapovalov41300af2019-07-10 12:44:43 +0200355 "default_task_queue",
Danil Chapovalov4844c5f2019-04-10 14:10:10 +0200356 "software_video_codecs",
357 ]
358 sources = [
359 "engine/webrtc_media_engine_defaults.cc",
360 "engine/webrtc_media_engine_defaults.h",
361 ]
362 deps = [
363 ":rtc_audio_video",
364 "../api/audio_codecs:builtin_audio_decoder_factory",
365 "../api/audio_codecs:builtin_audio_encoder_factory",
366 "../api/task_queue:default_task_queue_factory",
367 "../api/video:builtin_video_bitrate_allocator_factory",
368 "../api/video_codecs:builtin_video_decoder_factory",
369 "../api/video_codecs:builtin_video_encoder_factory",
370 "../modules/audio_processing:api",
371 "../rtc_base:checks",
372 ]
373}
374
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200375rtc_library("rtc_data") {
Seth Hampson66d6c3b2019-08-30 09:02:46 -0700376 defines = [
377 # "SCTP_DEBUG" # Uncomment for SCTP debugging.
378 ]
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200379 deps = [
380 ":rtc_media_base",
381 "..:webrtc_common",
382 "../api:call_api",
383 "../api:transport_api",
384 "../p2p:rtc_p2p",
385 "../rtc_base",
386 "../rtc_base:rtc_base_approved",
387 "../rtc_base/third_party/sigslot",
388 "../system_wrappers",
389 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalov5740f3e2019-10-10 11:12:15 +0200390 "//third_party/abseil-cpp/absl/base:core_headers",
Seth Hampson66d6c3b2019-08-30 09:02:46 -0700391 "//third_party/abseil-cpp/absl/types:optional",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200392 ]
zhihuang38ede132017-06-15 12:52:32 -0700393
394 if (rtc_enable_sctp) {
395 sources = [
Steve Anton10542f22019-01-11 09:11:00 -0800396 "sctp/sctp_transport.cc",
397 "sctp/sctp_transport.h",
398 "sctp/sctp_transport_internal.h",
zhihuang38ede132017-06-15 12:52:32 -0700399 ]
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100400 } else {
401 # libtool on mac does not like empty targets.
402 sources = [
Mirko Bonadei6c8e6662017-12-13 07:40:54 +0100403 "sctp/noop.cc",
Kári Tristan Helgason4d3e24a2017-12-01 15:26:41 +0100404 ]
zhihuang38ede132017-06-15 12:52:32 -0700405 }
406
zhihuang38ede132017-06-15 12:52:32 -0700407 if (rtc_enable_sctp && rtc_build_usrsctp) {
408 include_dirs = [
409 # TODO(jiayl): move this into the public_configs of
410 # //third_party/usrsctp/BUILD.gn.
411 "//third_party/usrsctp/usrsctplib",
412 ]
413 deps += [ "//third_party/usrsctp" ]
414 }
zhihuang38ede132017-06-15 12:52:32 -0700415}
416
417rtc_source_set("rtc_media") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000418 visibility = [ "*" ]
Anders Carlsson45340ca2019-01-14 14:23:23 +0100419 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
Mirko Bonadei75baa492018-01-11 17:07:30 +0100420 deps = [
zhihuang38ede132017-06-15 12:52:32 -0700421 ":rtc_audio_video",
422 ":rtc_data",
423 ]
424}
425
kjellander82a94492016-06-12 22:12:01 -0700426if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200427 rtc_library("rtc_media_tests_utils") {
kjellander82a94492016-06-12 22:12:01 -0700428 testonly = true
429
Anders Carlsson5f2bb622018-05-14 09:48:06 +0200430 defines = []
kjellandera2ef4f92017-03-06 06:04:55 -0800431 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100432 ":rtc_audio_video",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200433 ":rtc_internal_video_codecs",
434 ":rtc_media",
435 ":rtc_media_base",
Jonathan Yu9a5da492018-10-19 00:51:18 -0700436 ":rtc_simulcast_encoder_adapter",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200437 "../api:call_api",
Elad Alon8f01c4e2019-06-28 15:19:43 +0200438 "../api:fec_controller_api",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100439 "../api:scoped_refptr",
Yves Gerey3e707812018-11-28 16:47:49 +0100440 "../api/video:encoded_image",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200441 "../api/video:video_bitrate_allocation",
442 "../api/video:video_frame",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200443 "../api/video:video_frame_i420",
Chen Xing5d24b162019-06-10 12:59:38 +0200444 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200445 "../api/video_codecs:video_codecs_api",
446 "../call:call_interfaces",
447 "../call:mock_rtp_interfaces",
aleloi440b6d92017-08-22 05:43:23 -0700448 "../call:video_stream_api",
Artem Titov94b57c02019-03-21 13:35:10 +0100449 "../common_video",
450 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000451 "../modules/audio_processing:api",
Mirko Bonadeib5728d92017-12-06 07:51:33 +0100452 "../modules/rtp_rtcp:rtp_rtcp_format",
Patrik Höglund99175c62018-01-08 11:05:10 +0100453 "../modules/video_coding:video_codec_interface",
charujaincb728ea2017-09-18 03:08:08 -0700454 "../modules/video_coding:video_coding_utility",
kjellandera2ef4f92017-03-06 06:04:55 -0800455 "../p2p:rtc_p2p",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200456 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100457 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 13:15:08 +0100458 "../rtc_base:gunit_helpers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200459 "../rtc_base:rtc_base_approved",
Tommi8d2c5a82018-03-19 11:12:48 +0100460 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100461 "../rtc_base:stringutils",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200462 "../rtc_base/third_party/sigslot",
463 "../test:test_support",
464 "//testing/gtest",
Steve Anton2c9ebef2019-01-28 17:27:58 -0800465 "//third_party/abseil-cpp/absl/algorithm:container",
Yves Gerey69807e82018-10-30 22:23:02 +0100466 "//third_party/abseil-cpp/absl/strings",
kjellandera2ef4f92017-03-06 06:04:55 -0800467 ]
kjellander82a94492016-06-12 22:12:01 -0700468 sources = [
Steve Anton10542f22019-01-11 09:11:00 -0800469 "base/fake_frame_source.cc",
470 "base/fake_frame_source.h",
471 "base/fake_media_engine.cc",
472 "base/fake_media_engine.h",
473 "base/fake_network_interface.h",
474 "base/fake_rtp.cc",
475 "base/fake_rtp.h",
Steve Anton10542f22019-01-11 09:11:00 -0800476 "base/fake_video_renderer.cc",
477 "base/fake_video_renderer.h",
478 "base/test_utils.cc",
479 "base/test_utils.h",
480 "engine/fake_webrtc_call.cc",
481 "engine/fake_webrtc_call.h",
482 "engine/fake_webrtc_video_engine.cc",
483 "engine/fake_webrtc_video_engine.h",
kjellander82a94492016-06-12 22:12:01 -0700484 ]
kjellander82a94492016-06-12 22:12:01 -0700485 }
486
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700487 rtc_media_unittests_resources = [
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200488 "../resources/media/captured-320x240-2s-48.frames",
489 "../resources/media/faces.1280x720_P420.yuv",
490 "../resources/media/faces_I420.jpg",
491 "../resources/media/faces_I422.jpg",
492 "../resources/media/faces_I444.jpg",
493 "../resources/media/faces_I411.jpg",
494 "../resources/media/faces_I400.jpg",
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700495 ]
kjellander32c4a202016-08-30 02:53:49 -0700496
497 if (is_ios) {
498 bundle_data("rtc_media_unittests_bundle_data") {
499 testonly = true
500 sources = rtc_media_unittests_resources
501 outputs = [
502 "{{bundle_resources_dir}}/{{source_file_part}}",
503 ]
504 }
505 }
506
ehmaldonado38a21322016-09-02 04:10:34 -0700507 rtc_test("rtc_media_unittests") {
kjellander82a94492016-06-12 22:12:01 -0700508 testonly = true
509
johan073ece42016-08-26 02:59:47 -0700510 defines = []
kjellandera2ef4f92017-03-06 06:04:55 -0800511 deps = [
Mirko Bonadei75baa492018-01-11 17:07:30 +0100512 ":rtc_audio_video",
Anders Carlssona114c882018-01-04 15:10:22 +0100513 ":rtc_constants",
Mirko Bonadei75baa492018-01-11 17:07:30 +0100514 ":rtc_data",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200515 ":rtc_encoder_simulcast_proxy",
516 ":rtc_internal_video_codecs",
517 ":rtc_media",
518 ":rtc_media_base",
Danil Chapovalov4844c5f2019-04-10 14:10:10 +0200519 ":rtc_media_engine_defaults",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200520 ":rtc_media_tests_utils",
521 ":rtc_simulcast_encoder_adapter",
522 ":rtc_vp9_profile",
Yves Gerey3e707812018-11-28 16:47:49 +0100523 "../:webrtc_common",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200524 "../api:create_simulcast_test_fixture_api",
Piotr (Peter) Slatala946b9682019-03-18 10:25:02 -0700525 "../api:fake_media_transport",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200526 "../api:libjingle_peerconnection_api",
527 "../api:mock_video_bitrate_allocator",
528 "../api:mock_video_bitrate_allocator_factory",
529 "../api:mock_video_codec_factory",
Erik Språng9e79e6b2019-04-25 16:01:03 +0200530 "../api:mock_video_encoder",
Niels Möller6dcd4dc2019-08-26 10:45:28 +0200531 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100532 "../api:scoped_refptr",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200533 "../api:simulcast_test_fixture_api",
534 "../api/audio_codecs:builtin_audio_decoder_factory",
535 "../api/audio_codecs:builtin_audio_encoder_factory",
Danil Chapovalov83bbe912019-08-07 12:24:53 +0200536 "../api/rtc_event_log",
Danil Chapovalov4c7112a2019-03-27 18:51:45 +0100537 "../api/task_queue",
538 "../api/task_queue:default_task_queue_factory",
Danil Chapovalov99b71df2018-10-26 15:57:48 +0200539 "../api/test/video:function_video_factory",
Niels Möller65f17ca2019-09-12 13:59:36 +0200540 "../api/transport/media:media_transport_interface",
Jonas Oreland49ac5952018-09-26 16:04:32 +0200541 "../api/units:time_delta",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200542 "../api/video:builtin_video_bitrate_allocator_factory",
543 "../api/video:video_bitrate_allocation",
544 "../api/video:video_frame",
Niels Möllerc6ce9c52018-05-11 11:15:30 +0200545 "../api/video:video_frame_i420",
Chen Xing5d24b162019-06-10 12:59:38 +0200546 "../api/video:video_rtp_headers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200547 "../api/video_codecs:builtin_video_decoder_factory",
548 "../api/video_codecs:builtin_video_encoder_factory",
549 "../api/video_codecs:video_codecs_api",
550 "../audio",
551 "../call:call_interfaces",
552 "../common_video",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200553 "../modules/audio_device:mock_audio_device",
554 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:54 +0000555 "../modules/audio_processing:api",
Patrik Höglund62139292017-12-19 16:44:45 +0100556 "../modules/audio_processing:mocks",
Åsa Persson23cd45a2018-07-03 10:40:40 +0200557 "../modules/rtp_rtcp",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200558 "../modules/video_coding:simulcast_test_fixture_impl",
Patrik Höglund99175c62018-01-08 11:05:10 +0100559 "../modules/video_coding:video_codec_interface",
Sergio Garcia Murillo43800f92018-06-21 16:16:38 +0200560 "../modules/video_coding:webrtc_vp8",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200561 "../p2p:p2p_test_utils",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200562 "../rtc_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100563 "../rtc_base:checks",
Mirko Bonadeie3abb812018-11-23 13:15:08 +0100564 "../rtc_base:gunit_helpers",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200565 "../rtc_base:rtc_base_approved",
Mirko Bonadeie3abb812018-11-23 13:15:08 +0100566 "../rtc_base:rtc_base_tests_utils",
Tommi8d2c5a82018-03-19 11:12:48 +0100567 "../rtc_base:rtc_task_queue",
Patrik Höglund3e113432017-12-15 14:40:10 +0100568 "../rtc_base:stringutils",
Elad Alon80f53b72019-10-11 16:19:43 +0200569 "../rtc_base/experiments:min_video_bitrate_experiment",
Artem Titov94b57c02019-03-21 13:35:10 +0100570 "../rtc_base/third_party/sigslot",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200571 "../test:audio_codec_mocks",
kjellandera2ef4f92017-03-06 06:04:55 -0800572 "../test:field_trial",
Tommi25eb47c2019-08-29 16:39:05 +0200573 "../test:rtp_test_utils",
Niels Möller04a3cc12019-05-21 13:01:58 +0200574 "../test:test_main",
Danil Chapovalov6fe6b5a2019-04-10 12:50:24 +0200575 "../test:test_support",
576 "../test:video_test_common",
577 "//third_party/abseil-cpp/absl/algorithm:container",
Karl Wiberg918f50c2018-07-05 11:40:33 +0200578 "//third_party/abseil-cpp/absl/memory",
Yves Gerey69807e82018-10-30 22:23:02 +0100579 "//third_party/abseil-cpp/absl/strings",
Niels Möller04a3cc12019-05-21 13:01:58 +0200580 "//third_party/abseil-cpp/absl/types:optional",
kjellandera2ef4f92017-03-06 06:04:55 -0800581 ]
kjellander82a94492016-06-12 22:12:01 -0700582 sources = [
583 "base/codec_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800584 "base/rtp_data_engine_unittest.cc",
585 "base/rtp_utils_unittest.cc",
586 "base/stream_params_unittest.cc",
587 "base/turn_utils_unittest.cc",
588 "base/video_adapter_unittest.cc",
589 "base/video_broadcaster_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800590 "base/video_common_unittest.cc",
Florent Castellie7862cc2018-12-06 13:38:24 +0100591 "engine/encoder_simulcast_proxy_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800592 "engine/internal_decoder_factory_unittest.cc",
593 "engine/multiplex_codec_factory_unittest.cc",
594 "engine/null_webrtc_video_engine_unittest.cc",
ossuc54071d2016-08-17 02:45:41 -0700595 "engine/payload_type_mapper_unittest.cc",
magjed6cc25612017-07-10 03:26:36 -0700596 "engine/simulcast_encoder_adapter_unittest.cc",
Åsa Persson31cb8f92018-06-27 10:44:56 +0200597 "engine/simulcast_unittest.cc",
Jonas Oreland6d835922019-03-18 10:59:40 +0100598 "engine/unhandled_packets_buffer_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800599 "engine/webrtc_media_engine_unittest.cc",
Steve Anton10542f22019-01-11 09:11:00 -0800600 "engine/webrtc_video_engine_unittest.cc",
kjellander82a94492016-06-12 22:12:01 -0700601 ]
602
oprypin45197522017-06-22 01:47:20 -0700603 # TODO(kthelgason): Reenable this test on iOS.
604 # See bugs.webrtc.org/5569
605 if (!is_ios) {
Steve Anton10542f22019-01-11 09:11:00 -0800606 sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
oprypin45197522017-06-22 01:47:20 -0700607 }
608
deadbeef40610e22016-12-22 10:53:38 -0800609 if (rtc_enable_sctp) {
Steve Anton10542f22019-01-11 09:11:00 -0800610 sources += [ "sctp/sctp_transport_unittest.cc" ]
deadbeef40610e22016-12-22 10:53:38 -0800611 }
612
ossu11bfc532017-02-16 05:37:06 -0800613 if (rtc_opus_support_120ms_ptime) {
614 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
615 } else {
616 defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
617 }
618
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700619 data = rtc_media_unittests_resources
620
kjellander82a94492016-06-12 22:12:01 -0700621 if (is_android) {
622 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700623 shard_timeout = 900
624 }
kjellander32c4a202016-08-30 02:53:49 -0700625
626 if (is_ios) {
627 deps += [ ":rtc_media_unittests_bundle_data" ]
kjellander82a94492016-06-12 22:12:01 -0700628 }
kjellander82a94492016-06-12 22:12:01 -0700629 }
630}