blob: b841228a8ef99e39433beab287f5abcbf792852c [file] [log] [blame]
kjellanderd2b63cf2017-06-30 03:04:59 -07001# Copyright (c) 2014 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.
kjellanderd2b63cf2017-06-30 03:04:59 -07008import("../webrtc.gni")
Kimmo Kinnunen08f6a6c2019-02-26 11:46:17 +02009if (rtc_enable_protobuf) {
10 import("//third_party/protobuf/proto_library.gni")
11}
kjellanderd2b63cf2017-06-30 03:04:59 -070012
13group("rtc_tools") {
14 # This target shall build all targets in tools/.
15 testonly = true
16
Mirko Bonadeif5ff67c2017-12-06 16:31:18 +010017 deps = [
kjellanderd2b63cf2017-06-30 03:04:59 -070018 ":frame_analyzer",
Magnus Jedvert10e829a2018-09-05 10:46:18 +020019 ":video_file_reader",
kjellanderd2b63cf2017-06-30 03:04:59 -070020 ]
kjellander6af0cbf2017-09-04 23:42:45 -070021 if (!build_with_chromium) {
Mirko Bonadeif5ff67c2017-12-06 16:31:18 +010022 deps += [
kjellander6af0cbf2017-09-04 23:42:45 -070023 ":psnr_ssim_analyzer",
24 ":rgba_to_i420_converter",
Mirko Bonadei08ce9862020-06-11 11:25:32 +020025 ":video_quality_analysis",
kjellander6af0cbf2017-09-04 23:42:45 -070026 ]
kjellanderd2b63cf2017-06-30 03:04:59 -070027 }
Andrey Logvine7c79fd2021-02-01 09:56:37 +000028 if (!build_with_chromium && rtc_enable_protobuf) {
29 deps += [ ":chart_proto" ]
30 }
31 if (!build_with_chromium && rtc_include_tests) {
Artem Titov8041b652020-02-19 15:03:45 +010032 deps += [
33 ":tools_unittests",
34 ":yuv_to_ivf_converter",
35 ]
Andrey Logvine7c79fd2021-02-01 09:56:37 +000036 }
37 if (rtc_include_tests && rtc_enable_protobuf) {
38 deps += [
39 ":rtp_analyzer",
40 "network_tester",
41 ]
42 }
43 if (rtc_include_tests && rtc_enable_protobuf && !build_with_chromium) {
44 deps += [
45 ":audioproc_f",
46 ":event_log_visualizer",
47 ":unpack_aecdump",
48 ]
kjellanderd2b63cf2017-06-30 03:04:59 -070049 }
50}
51
Mirko Bonadei86d053c2019-10-17 21:32:04 +020052rtc_library("video_file_reader") {
Magnus Jedvert10e829a2018-09-05 10:46:18 +020053 sources = [
54 "video_file_reader.cc",
55 "video_file_reader.h",
56 ]
57 deps = [
Mirko Bonadeid9708072019-01-25 20:26:48 +010058 "../api:scoped_refptr",
Magnus Jedvert10e829a2018-09-05 10:46:18 +020059 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +020060 "../api/video:video_rtp_headers",
Yves Gerey3e707812018-11-28 16:47:49 +010061 "../rtc_base:checks",
Magnus Jedvert10e829a2018-09-05 10:46:18 +020062 "../rtc_base:rtc_base_approved",
Mirko Bonadei2dcf3482020-06-05 14:30:41 +020063 ]
64 absl_deps = [
Steve Anton68586e82018-12-13 17:41:25 -080065 "//third_party/abseil-cpp/absl/strings",
Magnus Jedvert10e829a2018-09-05 10:46:18 +020066 "//third_party/abseil-cpp/absl/types:optional",
67 ]
68}
69
Mirko Bonadei86d053c2019-10-17 21:32:04 +020070rtc_library("video_file_writer") {
Paulina Hensmanb671d462018-09-14 11:32:00 +020071 sources = [
72 "video_file_writer.cc",
73 "video_file_writer.h",
74 ]
75 deps = [
76 ":video_file_reader",
Mirko Bonadeid9708072019-01-25 20:26:48 +010077 "../api:scoped_refptr",
Paulina Hensmanb671d462018-09-14 11:32:00 +020078 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +020079 "../api/video:video_rtp_headers",
Paulina Hensmanb671d462018-09-14 11:32:00 +020080 "../rtc_base:rtc_base_approved",
Mirko Bonadei2dcf3482020-06-05 14:30:41 +020081 ]
82 absl_deps = [
Steve Anton68586e82018-12-13 17:41:25 -080083 "//third_party/abseil-cpp/absl/strings",
Paulina Hensmanb671d462018-09-14 11:32:00 +020084 "//third_party/abseil-cpp/absl/types:optional",
85 ]
86}
87
Mirko Bonadei86d053c2019-10-17 21:32:04 +020088rtc_library("video_quality_analysis") {
Patrik Höglund2ea27962020-01-13 15:10:40 +010089 testonly = true
kjellanderd2b63cf2017-06-30 03:04:59 -070090 sources = [
Magnus Jedvert1927dfa2018-09-11 12:56:06 +020091 "frame_analyzer/linear_least_squares.cc",
92 "frame_analyzer/linear_least_squares.h",
93 "frame_analyzer/video_color_aligner.cc",
94 "frame_analyzer/video_color_aligner.h",
Magnus Jedvert286df002018-11-22 15:17:30 +010095 "frame_analyzer/video_geometry_aligner.cc",
96 "frame_analyzer/video_geometry_aligner.h",
kjellanderd2b63cf2017-06-30 03:04:59 -070097 "frame_analyzer/video_quality_analysis.cc",
98 "frame_analyzer/video_quality_analysis.h",
Magnus Jedvert62228c42018-09-05 15:04:08 +020099 "frame_analyzer/video_temporal_aligner.cc",
100 "frame_analyzer/video_temporal_aligner.h",
kjellanderd2b63cf2017-06-30 03:04:59 -0700101 ]
Mirko Bonadei0250be52017-12-01 13:53:04 +0100102 deps = [
Magnus Jedvert10e829a2018-09-05 10:46:18 +0200103 ":video_file_reader",
Magnus Jedvert1927dfa2018-09-11 12:56:06 +0200104 "../api:array_view",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100105 "../api:scoped_refptr",
Magnus Jedvert286df002018-11-22 15:17:30 +0100106 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +0200107 "../api/video:video_rtp_headers",
Mirko Bonadeif5ff67c2017-12-06 16:31:18 +0100108 "../common_video",
Magnus Jedvert62228c42018-09-05 15:04:08 +0200109 "../rtc_base:checks",
110 "../rtc_base:rtc_base_approved",
Edward Lemur2e5966b2018-01-30 15:33:02 +0100111 "../test:perf_test",
Mirko Bonadei401d0562017-12-14 11:24:00 +0100112 "//third_party/libyuv",
kjellanderd2b63cf2017-06-30 03:04:59 -0700113 ]
Mirko Bonadei2dcf3482020-06-05 14:30:41 +0200114 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700115}
116
Andrey Logvin78646002021-01-29 10:50:19 +0000117# Abseil dependencies are not moved to the absl_deps field deliberately.
118# If build_with_chromium is true, the absl_deps replaces the dependencies with
119# the "//third_party/abseil-cpp:absl" target. Which doesn't include absl/flags
120# (and some others) because they cannot be used in Chromiums. Special exception
121# for the "frame_analyzer" target in "third_party/abseil-cpp/absl.gni" allows
122# it to be build in chromium.
kjellanderd2b63cf2017-06-30 03:04:59 -0700123rtc_executable("frame_analyzer") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000124 visibility = [ "*" ]
Mirko Bonadei6bafc8b2019-06-18 21:09:24 +0200125 testonly = true
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100126 sources = [ "frame_analyzer/frame_analyzer.cc" ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700127
128 deps = [
Magnus Jedvert10e829a2018-09-05 10:46:18 +0200129 ":video_file_reader",
Paulina Hensmanb671d462018-09-14 11:32:00 +0200130 ":video_file_writer",
kjellanderd2b63cf2017-06-30 03:04:59 -0700131 ":video_quality_analysis",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100132 "../api:scoped_refptr",
Magnus Jedvertb468ace2018-09-05 16:11:48 +0200133 "../rtc_base:stringutils",
Edward Lemur2e5966b2018-01-30 15:33:02 +0100134 "../test:perf_test",
Mirko Bonadei6bafc8b2019-06-18 21:09:24 +0200135 "//third_party/abseil-cpp/absl/flags:flag",
136 "//third_party/abseil-cpp/absl/flags:parse",
Steve Anton68586e82018-12-13 17:41:25 -0800137 "//third_party/abseil-cpp/absl/strings",
kjellanderd2b63cf2017-06-30 03:04:59 -0700138 ]
Johannes Kronbb52bdf2021-02-25 10:10:08 +0100139
140 if (build_with_chromium) {
141 # When building from Chromium, WebRTC's metrics and field trial
142 # implementations need to be replaced by the Chromium ones.
143 deps += [ "//third_party/webrtc_overrides:webrtc_component" ]
144 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700145}
146
Mirko Bonadei647968f2020-04-01 13:26:24 +0200147# TODO(bugs.webrtc.org/11474): Enable this on win if needed. For now it
148# is only required for Linux and Android.
Mirko Bonadeie50c9792020-04-20 17:48:26 +0200149if (!build_with_chromium && !build_with_mozilla && !is_win && !is_ios) {
Mirko Bonadei080afed2018-09-18 13:39:37 +0200150 action("frame_analyzer_host") {
151 script = "//tools_webrtc/executable_host_build.py"
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100152 outputs = [ "${root_out_dir}/frame_analyzer_host" ]
Mirko Bonadei080afed2018-09-18 13:39:37 +0200153 args = [
154 "--executable_name",
155 "frame_analyzer",
156 ]
157 }
Mirko Bonadeib56706f2018-09-18 11:03:39 +0200158}
159
Mirko Bonadeia5cec552020-02-06 10:16:20 +0100160if (!is_component_build) {
161 # This target can be built from Chromium but it doesn't support
162 # is_component_build=true because it depends on WebRTC testonly code
163 # which is not part of //third_party/webrtc_overrides:webrtc_component.
Andrey Logvin78646002021-01-29 10:50:19 +0000164
165 # Abseil dependencies are not moved to the absl_deps field deliberately.
166 # If build_with_chromium is true, the absl_deps replaces the dependencies with
167 # the "//third_party/abseil-cpp:absl" target. Which doesn't include absl/flags
168 # (and some others) because they cannot be used in Chromiums. Special exception
169 # for the "frame_analyzer" target in "third_party/abseil-cpp/absl.gni" allows
170 # it to be build in chromium.
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100171 rtc_executable("rtp_generator") {
172 visibility = [ "*" ]
173 testonly = true
174 sources = [
175 "rtp_generator/main.cc",
176 "rtp_generator/rtp_generator.cc",
177 "rtp_generator/rtp_generator.h",
178 ]
179
180 deps = [
Artem Titov33f9d2b2019-12-05 15:59:00 +0100181 "../api:create_frame_generator",
Niels Möller6dcd4dc2019-08-26 10:45:28 +0200182 "../api:rtp_parameters",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100183 "../api:transport_api",
Danil Chapovalov83bbe912019-08-07 12:24:53 +0200184 "../api/rtc_event_log",
Ilya Nikolaevskiyca160212019-07-10 15:34:45 +0200185 "../api/task_queue:default_task_queue_factory",
186 "../api/task_queue:task_queue",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100187 "../api/video:builtin_video_bitrate_allocator_factory",
188 "../api/video_codecs:builtin_video_decoder_factory",
189 "../api/video_codecs:builtin_video_encoder_factory",
190 "../api/video_codecs:video_codecs_api",
191 "../call",
192 "../call:call_interfaces",
193 "../call:fake_network",
194 "../call:rtp_interfaces",
195 "../call:rtp_sender",
196 "../call:simulated_network",
197 "../call:simulated_packet_receiver",
198 "../call:video_stream_api",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100199 "../media:rtc_audio_video",
200 "../media:rtc_media_base",
Artem Titov94b57c02019-03-21 13:35:10 +0100201 "../rtc_base",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100202 "../rtc_base:rtc_base_approved",
203 "../rtc_base:rtc_json",
Mirko Bonadeie5f4c6b2021-01-15 10:41:01 +0100204 "../rtc_base:threading",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100205 "../rtc_base/system:file_wrapper",
206 "../test:fileutils",
207 "../test:rtp_test_utils",
208 "../test:video_test_common",
Mirko Bonadeia95949e2019-06-25 08:46:18 +0200209 "//third_party/abseil-cpp/absl/flags:flag",
210 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadei06cdb232019-07-19 10:02:46 +0200211 "//third_party/abseil-cpp/absl/flags:usage",
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100212 "//third_party/abseil-cpp/absl/strings",
213 ]
Mirko Bonadeia5cec552020-02-06 10:16:20 +0100214 if (build_with_chromium) {
215 # When building from Chromium, WebRTC's metrics and field trial
216 # implementations need to be replaced by the Chromium ones.
217 deps += [ "//third_party/webrtc_overrides:webrtc_component" ]
218 }
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100219 }
Mirko Bonadeid4c3c3a2020-02-07 10:02:31 +0100220
221 # This target can be built from Chromium but it doesn't support
222 # is_component_build=true because it depends on WebRTC testonly code
223 # which is not part of //third_party/webrtc_overrides:webrtc_component.
Andrey Logvin78646002021-01-29 10:50:19 +0000224
225 # Abseil dependencies are not moved to the absl_deps field deliberately.
226 # If build_with_chromium is true, the absl_deps replaces the dependencies with
227 # the "//third_party/abseil-cpp:absl" target. Which doesn't include absl/flags
228 # (and some others) because they cannot be used in Chromiums. Special exception
229 # for the "frame_analyzer" target in "third_party/abseil-cpp/absl.gni" allows
230 # it to be build in chromium.
Mirko Bonadeid4c3c3a2020-02-07 10:02:31 +0100231 rtc_executable("video_replay") {
232 visibility = [ "*" ]
233 testonly = true
234 sources = [ "video_replay.cc" ]
235 deps = [
236 "../api/rtc_event_log",
237 "../api/task_queue:default_task_queue_factory",
238 "../api/test/video:function_video_factory",
239 "../api/transport:field_trial_based_config",
Philipp Hanckefae4fb12021-01-26 18:05:56 +0100240 "../api/video:video_frame",
Mirko Bonadeid4c3c3a2020-02-07 10:02:31 +0100241 "../api/video_codecs:video_codecs_api",
242 "../call",
243 "../call:call_interfaces",
244 "../common_video",
245 "../media:rtc_internal_video_codecs",
Danil Chapovalov76a35d92021-06-08 12:30:46 +0200246 "../modules/rtp_rtcp:rtp_rtcp_format",
Philipp Hanckefae4fb12021-01-26 18:05:56 +0100247 "../modules/video_coding:video_coding_utility",
Mirko Bonadeid4c3c3a2020-02-07 10:02:31 +0100248 "../rtc_base:checks",
249 "../rtc_base:rtc_json",
250 "../rtc_base:stringutils",
251 "../rtc_base:timeutils",
252 "../system_wrappers",
253 "../test:call_config_utils",
254 "../test:encoder_settings",
255 "../test:fake_video_codecs",
256 "../test:null_transport",
257 "../test:rtp_test_utils",
258 "../test:run_test",
259 "../test:run_test_interface",
260 "../test:test_common",
261 "../test:test_renderer",
262 "../test:test_support",
263 "../test:video_test_common",
264 "../test:video_test_support",
265 "//third_party/abseil-cpp/absl/flags:flag",
266 "//third_party/abseil-cpp/absl/flags:parse",
267 ]
268 if (build_with_chromium) {
269 # When building from Chromium, WebRTC's metrics and field trial
270 # implementations need to be replaced by the Chromium ones.
271 deps += [ "//third_party/webrtc_overrides:webrtc_component" ]
272 }
273 }
Mirko Bonadeia5cec552020-02-06 10:16:20 +0100274}
Mirko Bonadei8573aae2019-02-04 15:21:46 +0100275
Mirko Bonadeia5cec552020-02-06 10:16:20 +0100276# Only expose the targets needed by Chromium (e.g. frame_analyzer) to avoid
277# building a lot of redundant code as part of Chromium builds.
278if (!build_with_chromium) {
kjellander6af0cbf2017-09-04 23:42:45 -0700279 rtc_executable("psnr_ssim_analyzer") {
Mirko Bonadei8e032c82019-06-25 08:51:01 +0200280 testonly = true
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100281 sources = [ "psnr_ssim_analyzer/psnr_ssim_analyzer.cc" ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700282
kjellanderd2b63cf2017-06-30 03:04:59 -0700283 deps = [
Magnus Jedvert10e829a2018-09-05 10:46:18 +0200284 ":video_file_reader",
kjellander6af0cbf2017-09-04 23:42:45 -0700285 ":video_quality_analysis",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100286 "../api:scoped_refptr",
Yves Gerey3e707812018-11-28 16:47:49 +0100287 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +0200288 "../api/video:video_rtp_headers",
Mirko Bonadei8e032c82019-06-25 08:51:01 +0200289 "//third_party/abseil-cpp/absl/flags:flag",
290 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadei4e722452019-07-19 10:08:41 +0200291 "//third_party/abseil-cpp/absl/flags:usage",
kjellanderd2b63cf2017-06-30 03:04:59 -0700292 ]
293 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700294
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200295 rtc_library("reference_less_video_analysis_lib") {
Patrik Höglund2ea27962020-01-13 15:10:40 +0100296 testonly = true
kjellanderd2b63cf2017-06-30 03:04:59 -0700297 sources = [
kjellander6af0cbf2017-09-04 23:42:45 -0700298 "frame_analyzer/reference_less_video_analysis_lib.cc",
299 "frame_analyzer/reference_less_video_analysis_lib.h",
kjellanderd2b63cf2017-06-30 03:04:59 -0700300 ]
kjellander6af0cbf2017-09-04 23:42:45 -0700301
302 deps = [
Magnus Jedvert10e829a2018-09-05 10:46:18 +0200303 ":video_file_reader",
kjellander6af0cbf2017-09-04 23:42:45 -0700304 ":video_quality_analysis",
Mirko Bonadeid9708072019-01-25 20:26:48 +0100305 "../api:scoped_refptr",
Yves Gerey3e707812018-11-28 16:47:49 +0100306 "../api/video:video_frame",
Chen Xing5d24b162019-06-10 12:59:38 +0200307 "../api/video:video_rtp_headers",
kjellander6af0cbf2017-09-04 23:42:45 -0700308 ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700309 }
310
kjellander6af0cbf2017-09-04 23:42:45 -0700311 rtc_executable("reference_less_video_analysis") {
Mirko Bonadei6d6b0fb2019-06-25 08:49:03 +0200312 testonly = true
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100313 sources = [ "frame_analyzer/reference_less_video_analysis.cc" ]
kjellander6af0cbf2017-09-04 23:42:45 -0700314
315 deps = [
kjellander6af0cbf2017-09-04 23:42:45 -0700316 ":reference_less_video_analysis_lib",
Mirko Bonadei6d6b0fb2019-06-25 08:49:03 +0200317 "//third_party/abseil-cpp/absl/flags:flag",
318 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadei7ddca162019-07-19 10:32:16 +0200319 "//third_party/abseil-cpp/absl/flags:usage",
kjellander6af0cbf2017-09-04 23:42:45 -0700320 ]
321 }
322
323 rtc_executable("rgba_to_i420_converter") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000324 visibility = [ "*" ]
Mirko Bonadei2308bb22019-06-25 08:52:47 +0200325 testonly = true
kjellander6af0cbf2017-09-04 23:42:45 -0700326 sources = [
327 "converter/converter.cc",
328 "converter/converter.h",
329 "converter/rgba_to_i420_converter.cc",
330 ]
331
332 deps = [
kjellander6af0cbf2017-09-04 23:42:45 -0700333 "../common_video",
Mirko Bonadei2308bb22019-06-25 08:52:47 +0200334 "//third_party/abseil-cpp/absl/flags:flag",
335 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadei249bade2019-07-19 11:58:07 +0200336 "//third_party/abseil-cpp/absl/flags:usage",
Mirko Bonadei401d0562017-12-14 11:24:00 +0100337 "//third_party/libyuv",
kjellander6af0cbf2017-09-04 23:42:45 -0700338 ]
339 }
340
kjellander6af0cbf2017-09-04 23:42:45 -0700341 if (rtc_enable_protobuf) {
342 proto_library("chart_proto") {
Bjorn Terelius9b809d32019-04-24 17:12:45 +0200343 visibility = [ "*" ]
kjellander6af0cbf2017-09-04 23:42:45 -0700344 sources = [
Mirko Bonadei575998c2019-07-25 13:57:41 +0200345 "rtc_event_log_visualizer/proto/chart.proto",
346 "rtc_event_log_visualizer/proto/chart_enums.proto",
kjellander6af0cbf2017-09-04 23:42:45 -0700347 ]
Mirko Bonadei575998c2019-07-25 13:57:41 +0200348 proto_out_dir = "rtc_tools/rtc_event_log_visualizer/proto"
kjellander6af0cbf2017-09-04 23:42:45 -0700349 }
350
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200351 rtc_library("event_log_visualizer_utils") {
Per Kjellandera0f5f602018-01-10 15:57:32 +0000352 visibility = [ "*" ]
kjellander6af0cbf2017-09-04 23:42:45 -0700353 sources = [
Bjorn Terelius48b82792020-05-19 10:57:24 +0200354 "rtc_event_log_visualizer/alerts.cc",
355 "rtc_event_log_visualizer/alerts.h",
Bjorn Tereliusc186e142020-06-05 10:47:19 +0200356 "rtc_event_log_visualizer/analyze_audio.cc",
357 "rtc_event_log_visualizer/analyze_audio.h",
Mirko Bonadei575998c2019-07-25 13:57:41 +0200358 "rtc_event_log_visualizer/analyzer.cc",
359 "rtc_event_log_visualizer/analyzer.h",
Bjorn Terelius48b82792020-05-19 10:57:24 +0200360 "rtc_event_log_visualizer/analyzer_common.cc",
361 "rtc_event_log_visualizer/analyzer_common.h",
Mirko Bonadei575998c2019-07-25 13:57:41 +0200362 "rtc_event_log_visualizer/log_simulation.cc",
363 "rtc_event_log_visualizer/log_simulation.h",
364 "rtc_event_log_visualizer/plot_base.cc",
365 "rtc_event_log_visualizer/plot_base.h",
366 "rtc_event_log_visualizer/plot_protobuf.cc",
367 "rtc_event_log_visualizer/plot_protobuf.h",
368 "rtc_event_log_visualizer/plot_python.cc",
369 "rtc_event_log_visualizer/plot_python.h",
kjellander6af0cbf2017-09-04 23:42:45 -0700370 ]
kjellander6af0cbf2017-09-04 23:42:45 -0700371 deps = [
Mirko Bonadeif5ff67c2017-12-06 16:31:18 +0100372 ":chart_proto",
Artem Titov741daaf2019-03-21 14:37:36 +0100373 "../api:function_view",
Niels Möller0d863f72020-11-24 17:50:31 +0100374 "../api:network_state_predictor_api",
Mirko Bonadei3663ed32019-10-19 12:03:23 +0200375 "../rtc_base:ignore_wundef",
Niels Möller3f651d82018-12-19 15:06:17 +0100376
377 # TODO(kwiberg): Remove this dependency.
378 "../api/audio_codecs:audio_codecs_api",
Sebastian Jansson95edb032019-01-17 16:24:12 +0100379 "../api/transport:field_trial_based_config",
Niels Möller3f651d82018-12-19 15:06:17 +0100380 "../api/transport:goog_cc",
Sebastian Jansson1175ae02019-03-13 08:56:58 +0100381 "../api/transport:network_control",
kjellander6af0cbf2017-09-04 23:42:45 -0700382 "../call:call_interfaces",
383 "../call:video_stream_api",
kjellander6af0cbf2017-09-04 23:42:45 -0700384 "../logging:rtc_event_log_parser",
Qingsi Wang970b0882018-02-01 11:04:46 -0800385 "../logging:rtc_stream_config",
kjellander6af0cbf2017-09-04 23:42:45 -0700386 "../modules/audio_coding:ana_debug_dump_proto",
Mirko Bonadei818d9102017-12-12 12:46:13 +0100387 "../modules/audio_coding:audio_network_adaptor",
kjellander6af0cbf2017-09-04 23:42:45 -0700388 "../modules/audio_coding:neteq_tools",
kjellander6af0cbf2017-09-04 23:42:45 -0700389 "../modules/congestion_controller",
Sebastian Jansson04b18cb2018-07-02 09:25:25 +0200390 "../modules/congestion_controller/goog_cc:delay_based_bwe",
Sebastian Jansson172fd852018-05-24 14:17:06 +0200391 "../modules/congestion_controller/goog_cc:estimators",
Sebastian Jansson5c94f552018-10-15 18:46:51 +0200392 "../modules/congestion_controller/rtp:transport_feedback",
Niels Möllerfd6c0912017-10-31 10:19:10 +0100393 "../modules/pacing",
Sebastian Jansson5c94f552018-10-15 18:46:51 +0200394 "../modules/remote_bitrate_estimator",
kjellander6af0cbf2017-09-04 23:42:45 -0700395 "../modules/rtp_rtcp",
Niels Möller3f651d82018-12-19 15:06:17 +0100396 "../modules/rtp_rtcp:rtp_rtcp_format",
397 "../rtc_base:checks",
398 "../rtc_base:rtc_base_approved",
399 "../rtc_base:rtc_numerics",
400 "../rtc_base:stringutils",
Paul Hallak46fbefa2021-05-21 18:53:28 +0200401 "../system_wrappers",
Björn Tereliusae1892d2020-06-17 11:55:55 +0200402 "../test:explicit_key_value_config",
Mirko Bonadei2dcf3482020-06-05 14:30:41 +0200403 ]
404 absl_deps = [
Björn Tereliusc69c1bb2019-10-11 15:06:58 +0200405 "//third_party/abseil-cpp/absl/algorithm:container",
Danil Chapovalove9041612021-02-22 12:43:39 +0100406 "//third_party/abseil-cpp/absl/base:core_headers",
Per Kjellanderfe2063e2021-05-12 09:02:43 +0200407 "//third_party/abseil-cpp/absl/functional:bind_front",
Bjorn Terelius6c4b1b72019-01-11 13:01:29 +0100408 "//third_party/abseil-cpp/absl/strings",
Bjorn Tereliusc186e142020-06-05 10:47:19 +0200409 "//third_party/abseil-cpp/absl/types:optional",
kjellander6af0cbf2017-09-04 23:42:45 -0700410 ]
kjellander6af0cbf2017-09-04 23:42:45 -0700411 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700412 }
413}
414
kjellanderd2b63cf2017-06-30 03:04:59 -0700415if (rtc_include_tests) {
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000416 if (!build_with_chromium) {
417 rtc_executable("yuv_to_ivf_converter") {
418 visibility = [ "*" ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700419 testonly = true
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000420 sources = [ "converter/yuv_to_ivf_converter.cc" ]
kjellanderd2b63cf2017-06-30 03:04:59 -0700421 deps = [
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000422 "../api:create_frame_generator",
423 "../api:frame_generator_api",
424 "../api/task_queue:default_task_queue_factory",
425 "../api/video:encoded_image",
426 "../api/video:video_frame",
427 "../api/video_codecs:video_codecs_api",
428 "../media:rtc_media_base",
Yves Gerey3e707812018-11-28 16:47:49 +0100429 "../modules/rtp_rtcp:rtp_rtcp_format",
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000430 "../modules/video_coding:video_codec_interface",
431 "../modules/video_coding:video_coding_utility",
432 "../modules/video_coding:webrtc_h264",
433 "../modules/video_coding:webrtc_vp8",
434 "../modules/video_coding:webrtc_vp9",
Yves Gerey3e707812018-11-28 16:47:49 +0100435 "../rtc_base:checks",
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000436 "../rtc_base:criticalsection",
437 "../rtc_base:logging",
438 "../rtc_base:rtc_event",
439 "../rtc_base:rtc_task_queue",
440 "../rtc_base/synchronization:mutex",
441 "../rtc_base/system:file_wrapper",
442 "../test:video_test_common",
443 "../test:video_test_support",
444 "//third_party/abseil-cpp/absl/debugging:failure_signal_handler",
445 "//third_party/abseil-cpp/absl/debugging:symbolize",
Mirko Bonadei4b091f42019-07-16 11:55:08 +0200446 "//third_party/abseil-cpp/absl/flags:flag",
447 "//third_party/abseil-cpp/absl/flags:parse",
Mirko Bonadeif2d97b82019-07-24 15:29:47 +0200448 "//third_party/abseil-cpp/absl/strings",
kjellanderd2b63cf2017-06-30 03:04:59 -0700449 ]
450 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700451
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000452 if (rtc_enable_protobuf) {
453 rtc_executable("event_log_visualizer") {
454 testonly = true
455 sources = [ "rtc_event_log_visualizer/main.cc" ]
456 data = [
457 # If --wav_filename is not provided, event_log_visualizer uses
458 # EN_script2_F_sp2_B1.wav by default. This is a good default to use
459 # for example with flags --plot=all when there is no need to use a
460 # specific .wav file.
461 "../resources/audio_processing/conversational_speech/EN_script2_F_sp2_B1.wav",
462 ]
463 deps = [
464 ":event_log_visualizer_utils",
465 "../api/neteq:neteq_api",
466 "../api/rtc_event_log",
467 "../logging:rtc_event_log_parser",
468 "../modules/audio_coding:neteq",
469 "../modules/rtp_rtcp:rtp_rtcp_format",
470 "../rtc_base:checks",
471 "../rtc_base:protobuf_utils",
472 "../rtc_base:rtc_base_approved",
473 "../system_wrappers:field_trial",
474 "../test:field_trial",
475 "../test:fileutils",
476 "../test:test_support",
477 "//third_party/abseil-cpp/absl/algorithm:container",
478 "//third_party/abseil-cpp/absl/flags:config",
479 "//third_party/abseil-cpp/absl/flags:flag",
480 "//third_party/abseil-cpp/absl/flags:parse",
481 "//third_party/abseil-cpp/absl/flags:usage",
482 "//third_party/abseil-cpp/absl/strings",
483 ]
484 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700485 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700486
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000487 tools_unittests_resources = [
488 "../resources/foreman_128x96.yuv",
489 "../resources/foreman_cif.yuv",
490 "../resources/reference_less_video_test_file.y4m",
kjellanderd2b63cf2017-06-30 03:04:59 -0700491 ]
492
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000493 if (is_ios) {
494 bundle_data("tools_unittests_bundle_data") {
495 testonly = true
496 sources = tools_unittests_resources
497 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
498 }
499 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700500
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000501 rtc_test("tools_unittests") {
502 testonly = true
503
504 sources = [
505 "frame_analyzer/linear_least_squares_unittest.cc",
506 "frame_analyzer/reference_less_video_analysis_unittest.cc",
507 "frame_analyzer/video_color_aligner_unittest.cc",
508 "frame_analyzer/video_geometry_aligner_unittest.cc",
509 "frame_analyzer/video_quality_analysis_unittest.cc",
510 "frame_analyzer/video_temporal_aligner_unittest.cc",
511 "sanitizers_unittest.cc",
512 "video_file_reader_unittest.cc",
513 "video_file_writer_unittest.cc",
514 ]
515
516 deps = [
517 ":video_file_reader",
518 ":video_file_writer",
519 ":video_quality_analysis",
520 "../api:scoped_refptr",
521 "../api/video:video_frame",
522 "../api/video:video_rtp_headers",
523 "../common_video",
524 "../rtc_base",
525 "../rtc_base:checks",
526 "../rtc_base:null_socket_server",
527 "../rtc_base:threading",
528 "../test:fileutils",
529 "../test:test_main",
530 "../test:test_support",
531 "//testing/gtest",
532 "//third_party/libyuv",
533 ]
534
535 if (!build_with_chromium) {
536 deps += [ ":reference_less_video_analysis_lib" ]
537 }
538
539 if (rtc_enable_protobuf) {
540 deps += [ "network_tester:network_tester_unittests" ]
541 }
542
543 data = tools_unittests_resources
544 if (is_android) {
545 deps += [ "//testing/android/native_test:native_test_support" ]
546 shard_timeout = 900
547 }
548 if (is_ios) {
549 deps += [ ":tools_unittests_bundle_data" ]
550 }
Yves Gerey21cddff2018-10-30 21:12:42 +0100551 }
552
kjellanderd2b63cf2017-06-30 03:04:59 -0700553 if (rtc_enable_protobuf) {
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000554 rtc_executable("audioproc_f") {
555 testonly = true
556 sources = [ "audioproc_f/audioproc_float_main.cc" ]
557 deps = [
558 "../api:audioproc_f_api",
559 "../modules/audio_processing",
560 "../modules/audio_processing:api",
561 "../rtc_base:rtc_base_approved",
562 ]
563 }
kjellanderd2b63cf2017-06-30 03:04:59 -0700564
Andrey Logvine7c79fd2021-02-01 09:56:37 +0000565 rtc_executable("unpack_aecdump") {
566 visibility = [ "*" ]
567 testonly = true
568 sources = [ "unpack_aecdump/unpack.cc" ]
569
570 deps = [
571 "../api:function_view",
572 "../common_audio",
573 "../modules/audio_processing",
574 "../modules/audio_processing:audioproc_debug_proto",
575 "../modules/audio_processing:audioproc_debug_proto",
576 "../modules/audio_processing:audioproc_protobuf_utils",
577 "../modules/audio_processing:audioproc_test_utils",
578 "../rtc_base:ignore_wundef",
579 "../rtc_base:protobuf_utils",
580 "../rtc_base:rtc_base_approved",
581 "//third_party/abseil-cpp/absl/flags:flag",
582 "//third_party/abseil-cpp/absl/flags:parse",
583 ]
584 } # unpack_aecdump
kjellanderd2b63cf2017-06-30 03:04:59 -0700585 }
586 }
587
588 if (rtc_enable_protobuf) {
589 copy("rtp_analyzer") {
590 sources = [
591 "py_event_log_analyzer/misc.py",
592 "py_event_log_analyzer/pb_parse.py",
593 "py_event_log_analyzer/rtp_analyzer.py",
594 "py_event_log_analyzer/rtp_analyzer.sh",
595 ]
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100596 outputs = [ "$root_build_dir/{{source_file_part}}" ]
597 deps = [ "../logging:rtc_event_log_proto" ]
Patrik Höglund844ce8b2017-12-12 15:53:31 +0100598 } # rtp_analyzer
kjellanderd2b63cf2017-06-30 03:04:59 -0700599 }
600}