blob: 05b7adbf796bb6ac110b2bf455ced6aa4a8df4a2 [file] [log] [blame]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +00001# 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.
8
tereliusb246a292016-08-23 18:15:25 -07009import("//third_party/protobuf/proto_library.gni")
mbonadei9aa3f0a2017-01-24 06:58:22 -080010import("../webrtc.gni")
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000011
kjellanderb62dbbe2016-09-23 00:38:52 -070012group("tools") {
kjellander6ceab082016-10-28 05:44:03 -070013 # This target shall build all targets in tools/.
14 testonly = true
kjellandera8119682016-06-06 02:00:18 -070015
kjellander6ceab082016-10-28 05:44:03 -070016 public_deps = [
17 ":command_line_parser",
18 ":frame_analyzer",
19 ":frame_editor",
20 ":psnr_ssim_analyzer",
21 ":rgba_to_i420_converter",
22 ]
23 if (rtc_include_internal_audio_device) {
24 public_deps += [ ":force_mic_volume_max" ]
25 }
26 if (rtc_enable_protobuf) {
27 public_deps += [ ":chart_proto" ]
28 }
29
30 if (rtc_include_tests) {
31 public_deps += [
32 ":activity_metric",
kjellander6ceab082016-10-28 05:44:03 -070033 ":tools_unittests",
kjellandera8119682016-06-06 02:00:18 -070034 ]
kjellander6ceab082016-10-28 05:44:03 -070035 if (rtc_enable_protobuf) {
ehmaldonado1fd08c12017-01-17 02:37:34 -080036 public_deps += [
37 ":event_log_visualizer",
38 ":rtp_analyzer",
minyuecb067fa2017-04-13 01:24:03 -070039 "network_tester",
ehmaldonado1fd08c12017-01-17 02:37:34 -080040 ]
kjellander6ceab082016-10-28 05:44:03 -070041 }
kjellandera8119682016-06-06 02:00:18 -070042 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000043}
44
kjellanderb62dbbe2016-09-23 00:38:52 -070045rtc_static_library("command_line_parser") {
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000046 sources = [
Henrik Kjellanderfa16dda2015-04-01 22:53:56 +020047 "simple_command_line_parser.cc",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020048 "simple_command_line_parser.h",
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000049 ]
Henrik Kjellander67bcb602015-10-07 08:42:52 +020050 deps = [
kjellander988d31e2016-02-05 00:23:50 -080051 "../base:gtest_prod",
mbonadei129fc9c2017-04-05 07:14:31 -070052 "../base:rtc_base_approved",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020053 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000054}
55
kjellanderb62dbbe2016-09-23 00:38:52 -070056rtc_static_library("video_quality_analysis") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020057 sources = [
58 "frame_analyzer/video_quality_analysis.cc",
59 "frame_analyzer/video_quality_analysis.h",
60 ]
kjellanderbac04122016-06-02 02:18:48 -070061
Henrik Kjellander67bcb602015-10-07 08:42:52 +020062 deps = [
63 "../common_video",
64 ]
65 public_deps = [
66 "../common_video",
67 ]
68}
69
ehmaldonado38a21322016-09-02 04:10:34 -070070rtc_executable("frame_analyzer") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020071 sources = [
72 "frame_analyzer/frame_analyzer.cc",
73 ]
kjellanderbac04122016-06-02 02:18:48 -070074
kjellanderbac04122016-06-02 02:18:48 -070075 deps = [
76 ":command_line_parser",
77 ":video_quality_analysis",
78 "//build/win:default_exe_manifest",
79 ]
80}
81
ehmaldonado38a21322016-09-02 04:10:34 -070082rtc_executable("psnr_ssim_analyzer") {
kjellanderbac04122016-06-02 02:18:48 -070083 sources = [
84 "psnr_ssim_analyzer/psnr_ssim_analyzer.cc",
85 ]
86
Henrik Kjellander67bcb602015-10-07 08:42:52 +020087 deps = [
88 ":command_line_parser",
89 ":video_quality_analysis",
brucedawson84583e02016-04-28 00:21:08 -070090 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020091 ]
92}
93
charujain0f01c7f2016-12-02 05:00:00 -080094rtc_static_library("reference_less_video_analysis_lib") {
95 sources = [
96 "frame_analyzer/reference_less_video_analysis_lib.cc",
97 "frame_analyzer/reference_less_video_analysis_lib.h",
98 ]
99
100 deps = [
101 ":video_quality_analysis",
102 ]
103}
104
105rtc_executable("reference_less_video_analysis") {
106 sources = [
107 "frame_analyzer/reference_less_video_analysis.cc",
108 ]
109
110 deps = [
111 ":command_line_parser",
112 ":reference_less_video_analysis_lib",
113 "//build/win:default_exe_manifest",
114 ]
115}
116
ehmaldonado38a21322016-09-02 04:10:34 -0700117rtc_executable("rgba_to_i420_converter") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200118 sources = [
119 "converter/converter.cc",
120 "converter/converter.h",
121 "converter/rgba_to_i420_converter.cc",
122 ]
kjellanderbac04122016-06-02 02:18:48 -0700123
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200124 deps = [
125 ":command_line_parser",
126 "../common_video",
brucedawson84583e02016-04-28 00:21:08 -0700127 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200128 ]
129}
130
kjellanderb62dbbe2016-09-23 00:38:52 -0700131rtc_static_library("frame_editing_lib") {
kjellanderbac04122016-06-02 02:18:48 -0700132 sources = [
133 "frame_editing/frame_editing_lib.cc",
134 "frame_editing/frame_editing_lib.h",
135 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000136
kjellanderbac04122016-06-02 02:18:48 -0700137 # TODO(jschuh): Bug 1348: fix this warning.
138 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000139
kjellandere40a7ee2016-10-16 23:56:12 -0700140 if (!build_with_chromium && is_clang) {
141 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700142 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderbac04122016-06-02 02:18:48 -0700143 }
kjellander@webrtc.org3037bc32014-09-30 19:07:58 +0000144
kjellanderbac04122016-06-02 02:18:48 -0700145 deps = [
mbonadei129fc9c2017-04-05 07:14:31 -0700146 "..:webrtc_common",
kjellanderbac04122016-06-02 02:18:48 -0700147 "../common_video",
148 ]
149}
150
ehmaldonado38a21322016-09-02 04:10:34 -0700151rtc_executable("frame_editor") {
kjellanderbac04122016-06-02 02:18:48 -0700152 sources = [
153 "frame_editing/frame_editing.cc",
154 ]
155
kjellanderbac04122016-06-02 02:18:48 -0700156 deps = [
157 ":command_line_parser",
158 ":frame_editing_lib",
159 "//build/win:default_exe_manifest",
160 ]
161}
162
solenbergfc433e62016-09-09 11:04:53 -0700163# It doesn't make sense to build this tool without the ADM enabled.
164if (rtc_include_internal_audio_device) {
165 rtc_executable("force_mic_volume_max") {
166 sources = [
167 "force_mic_volume_max/force_mic_volume_max.cc",
168 ]
kjellanderbac04122016-06-02 02:18:48 -0700169
kjellandere40a7ee2016-10-16 23:56:12 -0700170 if (!build_with_chromium && is_clang) {
171 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
solenbergfc433e62016-09-09 11:04:53 -0700172 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
173 }
174
175 deps = [
kjellander6ceab082016-10-28 05:44:03 -0700176 "../modules/audio_device",
solenbergfc433e62016-09-09 11:04:53 -0700177 "../system_wrappers:system_wrappers_default",
178 "//build/win:default_exe_manifest",
179 ]
kjellanderbac04122016-06-02 02:18:48 -0700180 }
kjellanderbac04122016-06-02 02:18:48 -0700181}
182
skvlad185ba292016-08-23 13:01:27 -0700183if (rtc_enable_protobuf) {
skvladf581eb72016-09-07 11:15:37 -0700184 proto_library("chart_proto") {
tereliusb246a292016-08-23 18:15:25 -0700185 sources = [
skvladf581eb72016-09-07 11:15:37 -0700186 "event_log_visualizer/chart.proto",
tereliusb246a292016-08-23 18:15:25 -0700187 ]
188 proto_out_dir = "webrtc/tools/event_log_visualizer"
189 }
190
kjellanderb62dbbe2016-09-23 00:38:52 -0700191 rtc_static_library("event_log_visualizer_utils") {
skvlad185ba292016-08-23 13:01:27 -0700192 sources = [
193 "event_log_visualizer/analyzer.cc",
194 "event_log_visualizer/analyzer.h",
195 "event_log_visualizer/plot_base.cc",
196 "event_log_visualizer/plot_base.h",
tereliusb246a292016-08-23 18:15:25 -0700197 "event_log_visualizer/plot_protobuf.cc",
198 "event_log_visualizer/plot_protobuf.h",
skvlad185ba292016-08-23 13:01:27 -0700199 "event_log_visualizer/plot_python.cc",
200 "event_log_visualizer/plot_python.h",
201 ]
kjellandere40a7ee2016-10-16 23:56:12 -0700202 if (!build_with_chromium && is_clang) {
203 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700204 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
skvlad185ba292016-08-23 13:01:27 -0700205 }
206 defines = [ "ENABLE_RTC_EVENT_LOG" ]
207 deps = [
mbonadei129fc9c2017-04-05 07:14:31 -0700208 "../base:rtc_base_approved",
ossuf515ab82016-12-07 04:52:58 -0800209 "../call:call_interfaces",
skvladcc91d282016-10-03 18:31:22 -0700210 "../logging:rtc_event_log_impl",
211 "../logging:rtc_event_log_parser",
minyue4b7c9522017-01-24 04:54:59 -0800212 "../modules/audio_coding:ana_debug_dump_proto",
kwibergd32bf752017-01-19 07:03:59 -0800213
214 # TODO(kwiberg): Remove this dependency.
kwiberg087bd342017-02-10 08:15:44 -0800215 "../api/audio_codecs:audio_codecs_api",
kjellander6ceab082016-10-28 05:44:03 -0700216 "../modules/congestion_controller",
217 "../modules/rtp_rtcp",
skvlad185ba292016-08-23 13:01:27 -0700218 "../system_wrappers:system_wrappers_default",
219 "//build/config/sanitizers:deps",
220 ]
221 public_deps = [
skvladf581eb72016-09-07 11:15:37 -0700222 ":chart_proto",
skvladcc91d282016-10-03 18:31:22 -0700223 "../logging:rtc_event_log_parser",
skvlad185ba292016-08-23 13:01:27 -0700224 ]
225 }
226}
227
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200228# Exclude tools depending on gflags since that's not available in Chromium.
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200229if (rtc_include_tests) {
terelius54ce6802016-07-13 06:44:41 -0700230 if (rtc_enable_protobuf) {
ehmaldonado38a21322016-09-02 04:10:34 -0700231 rtc_executable("event_log_visualizer") {
Stefan Holmer13181032016-07-29 14:48:54 +0200232 testonly = true
terelius54ce6802016-07-13 06:44:41 -0700233 sources = [
tereliusd49a37b2016-08-10 07:12:38 -0700234 "event_log_visualizer/main.cc",
terelius54ce6802016-07-13 06:44:41 -0700235 ]
236
kjellandere40a7ee2016-10-16 23:56:12 -0700237 if (!build_with_chromium && is_clang) {
238 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700239 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
terelius54ce6802016-07-13 06:44:41 -0700240 }
241
242 defines = [ "ENABLE_RTC_EVENT_LOG" ]
243 deps = [
skvlad185ba292016-08-23 13:01:27 -0700244 ":event_log_visualizer_utils",
stefan985d2802016-11-15 06:54:09 -0800245 "../test:field_trial",
terelius54ce6802016-07-13 06:44:41 -0700246 "//third_party/gflags",
247 ]
248 }
249 }
250
ehmaldonado38a21322016-09-02 04:10:34 -0700251 rtc_executable("activity_metric") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200252 testonly = true
253 sources = [
254 "agc/activity_metric.cc",
255 ]
kjellanderbac04122016-06-02 02:18:48 -0700256
kjellandere40a7ee2016-10-16 23:56:12 -0700257 if (!build_with_chromium && is_clang) {
258 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700259 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200260 }
kjellanderbac04122016-06-02 02:18:48 -0700261
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200262 deps = [
263 "../modules/audio_processing",
264 "../system_wrappers:metrics_default",
mbonadei129fc9c2017-04-05 07:14:31 -0700265 "../test:test_support",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200266 "//build/win:default_exe_manifest",
267 "//testing/gtest",
268 "//third_party/gflags",
269 ]
kjellanderbac04122016-06-02 02:18:48 -0700270 }
271
charujain1b5b22d2016-11-29 02:00:52 -0800272 tools_unittests_resources = [
273 "//resources/foreman_cif.yuv",
274 "//resources/reference_less_video_test_file.y4m",
275 "//resources/video_quality_analysis_frame.txt",
276 ]
kjellander32c4a202016-08-30 02:53:49 -0700277
278 if (is_ios) {
279 bundle_data("tools_unittests_bundle_data") {
280 testonly = true
281 sources = tools_unittests_resources
282 outputs = [
283 "{{bundle_resources_dir}}/{{source_file_part}}",
284 ]
285 }
286 }
287
ehmaldonado38a21322016-09-02 04:10:34 -0700288 rtc_test("tools_unittests") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200289 testonly = true
kjellanderbac04122016-06-02 02:18:48 -0700290
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200291 sources = [
charujain0f01c7f2016-12-02 05:00:00 -0800292 "frame_analyzer/reference_less_video_analysis_unittest.cc",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200293 "frame_analyzer/video_quality_analysis_unittest.cc",
294 "frame_editing/frame_editing_unittest.cc",
295 "simple_command_line_parser_unittest.cc",
296 ]
kjellanderbac04122016-06-02 02:18:48 -0700297
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200298 # TODO(jschuh): Bug 1348: fix this warning.
299 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellanderbac04122016-06-02 02:18:48 -0700300
kjellandere40a7ee2016-10-16 23:56:12 -0700301 if (!build_with_chromium && is_clang) {
302 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700303 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200304 }
kjellanderbac04122016-06-02 02:18:48 -0700305
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200306 deps = [
307 ":command_line_parser",
308 ":frame_editing_lib",
charujain0f01c7f2016-12-02 05:00:00 -0800309 ":reference_less_video_analysis_lib",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200310 ":video_quality_analysis",
ehmaldonado26bddb92016-11-30 06:12:01 -0800311 "../test:test_main",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200312 "//testing/gtest",
313 ]
kjellanderbac04122016-06-02 02:18:48 -0700314
minyuecb067fa2017-04-13 01:24:03 -0700315 if (rtc_enable_protobuf) {
316 deps += [ "network_tester:network_tester_unittests" ]
317 }
318
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700319 data = tools_unittests_resources
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200320 if (is_android) {
321 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700322 shard_timeout = 900
323 }
kjellander32c4a202016-08-30 02:53:49 -0700324 if (is_ios) {
325 deps += [ ":tools_unittests_bundle_data" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200326 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000327 }
aleloi7ebbf902016-06-20 07:39:15 -0700328
329 if (rtc_enable_protobuf) {
330 copy("rtp_analyzer") {
331 sources = [
332 "py_event_log_analyzer/misc.py",
333 "py_event_log_analyzer/pb_parse.py",
334 "py_event_log_analyzer/rtp_analyzer.py",
335 "py_event_log_analyzer/rtp_analyzer.sh",
336 ]
337 outputs = [
338 "$root_build_dir/{{source_file_part}}",
339 ]
340 deps = [
skvladcc91d282016-10-03 18:31:22 -0700341 "../logging:rtc_event_log_proto",
aleloi7ebbf902016-06-20 07:39:15 -0700342 ]
343 }
344 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000345}