blob: b1e603c8964987becfa6cb05da9f2d068ecbcddb [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")
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000010import("../build/webrtc.gni")
11
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",
39 ]
kjellander6ceab082016-10-28 05:44:03 -070040 }
kjellandera8119682016-06-06 02:00:18 -070041 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000042}
43
kjellanderb62dbbe2016-09-23 00:38:52 -070044rtc_static_library("command_line_parser") {
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000045 sources = [
Henrik Kjellanderfa16dda2015-04-01 22:53:56 +020046 "simple_command_line_parser.cc",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020047 "simple_command_line_parser.h",
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000048 ]
Henrik Kjellander67bcb602015-10-07 08:42:52 +020049 deps = [
kjellander988d31e2016-02-05 00:23:50 -080050 "../base:gtest_prod",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020051 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000052}
53
kjellanderb62dbbe2016-09-23 00:38:52 -070054rtc_static_library("video_quality_analysis") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020055 sources = [
56 "frame_analyzer/video_quality_analysis.cc",
57 "frame_analyzer/video_quality_analysis.h",
58 ]
kjellanderbac04122016-06-02 02:18:48 -070059
Henrik Kjellander67bcb602015-10-07 08:42:52 +020060 deps = [
61 "../common_video",
62 ]
63 public_deps = [
64 "../common_video",
65 ]
66}
67
ehmaldonado38a21322016-09-02 04:10:34 -070068rtc_executable("frame_analyzer") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020069 sources = [
70 "frame_analyzer/frame_analyzer.cc",
71 ]
kjellanderbac04122016-06-02 02:18:48 -070072
kjellanderbac04122016-06-02 02:18:48 -070073 deps = [
74 ":command_line_parser",
75 ":video_quality_analysis",
76 "//build/win:default_exe_manifest",
77 ]
78}
79
ehmaldonado38a21322016-09-02 04:10:34 -070080rtc_executable("psnr_ssim_analyzer") {
kjellanderbac04122016-06-02 02:18:48 -070081 sources = [
82 "psnr_ssim_analyzer/psnr_ssim_analyzer.cc",
83 ]
84
Henrik Kjellander67bcb602015-10-07 08:42:52 +020085 deps = [
86 ":command_line_parser",
87 ":video_quality_analysis",
brucedawson84583e02016-04-28 00:21:08 -070088 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020089 ]
90}
91
charujain0f01c7f2016-12-02 05:00:00 -080092rtc_static_library("reference_less_video_analysis_lib") {
93 sources = [
94 "frame_analyzer/reference_less_video_analysis_lib.cc",
95 "frame_analyzer/reference_less_video_analysis_lib.h",
96 ]
97
98 deps = [
99 ":video_quality_analysis",
100 ]
101}
102
103rtc_executable("reference_less_video_analysis") {
104 sources = [
105 "frame_analyzer/reference_less_video_analysis.cc",
106 ]
107
108 deps = [
109 ":command_line_parser",
110 ":reference_less_video_analysis_lib",
111 "//build/win:default_exe_manifest",
112 ]
113}
114
ehmaldonado38a21322016-09-02 04:10:34 -0700115rtc_executable("rgba_to_i420_converter") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200116 sources = [
117 "converter/converter.cc",
118 "converter/converter.h",
119 "converter/rgba_to_i420_converter.cc",
120 ]
kjellanderbac04122016-06-02 02:18:48 -0700121
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200122 deps = [
123 ":command_line_parser",
124 "../common_video",
brucedawson84583e02016-04-28 00:21:08 -0700125 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200126 ]
127}
128
kjellanderb62dbbe2016-09-23 00:38:52 -0700129rtc_static_library("frame_editing_lib") {
kjellanderbac04122016-06-02 02:18:48 -0700130 sources = [
131 "frame_editing/frame_editing_lib.cc",
132 "frame_editing/frame_editing_lib.h",
133 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000134
kjellanderbac04122016-06-02 02:18:48 -0700135 # TODO(jschuh): Bug 1348: fix this warning.
136 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000137
kjellandere40a7ee2016-10-16 23:56:12 -0700138 if (!build_with_chromium && is_clang) {
139 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700140 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderbac04122016-06-02 02:18:48 -0700141 }
kjellander@webrtc.org3037bc32014-09-30 19:07:58 +0000142
kjellanderbac04122016-06-02 02:18:48 -0700143 deps = [
144 "../common_video",
145 ]
146}
147
ehmaldonado38a21322016-09-02 04:10:34 -0700148rtc_executable("frame_editor") {
kjellanderbac04122016-06-02 02:18:48 -0700149 sources = [
150 "frame_editing/frame_editing.cc",
151 ]
152
kjellanderbac04122016-06-02 02:18:48 -0700153 deps = [
154 ":command_line_parser",
155 ":frame_editing_lib",
156 "//build/win:default_exe_manifest",
157 ]
158}
159
solenbergfc433e62016-09-09 11:04:53 -0700160# It doesn't make sense to build this tool without the ADM enabled.
161if (rtc_include_internal_audio_device) {
162 rtc_executable("force_mic_volume_max") {
163 sources = [
164 "force_mic_volume_max/force_mic_volume_max.cc",
165 ]
kjellanderbac04122016-06-02 02:18:48 -0700166
kjellandere40a7ee2016-10-16 23:56:12 -0700167 if (!build_with_chromium && is_clang) {
168 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
solenbergfc433e62016-09-09 11:04:53 -0700169 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
170 }
171
172 deps = [
kjellander6ceab082016-10-28 05:44:03 -0700173 "../modules/audio_device",
solenbergfc433e62016-09-09 11:04:53 -0700174 "../system_wrappers:system_wrappers_default",
175 "//build/win:default_exe_manifest",
176 ]
kjellanderbac04122016-06-02 02:18:48 -0700177 }
kjellanderbac04122016-06-02 02:18:48 -0700178}
179
skvlad185ba292016-08-23 13:01:27 -0700180if (rtc_enable_protobuf) {
skvladf581eb72016-09-07 11:15:37 -0700181 proto_library("chart_proto") {
tereliusb246a292016-08-23 18:15:25 -0700182 sources = [
skvladf581eb72016-09-07 11:15:37 -0700183 "event_log_visualizer/chart.proto",
tereliusb246a292016-08-23 18:15:25 -0700184 ]
185 proto_out_dir = "webrtc/tools/event_log_visualizer"
186 }
187
kjellanderb62dbbe2016-09-23 00:38:52 -0700188 rtc_static_library("event_log_visualizer_utils") {
skvlad185ba292016-08-23 13:01:27 -0700189 sources = [
190 "event_log_visualizer/analyzer.cc",
191 "event_log_visualizer/analyzer.h",
192 "event_log_visualizer/plot_base.cc",
193 "event_log_visualizer/plot_base.h",
tereliusb246a292016-08-23 18:15:25 -0700194 "event_log_visualizer/plot_protobuf.cc",
195 "event_log_visualizer/plot_protobuf.h",
skvlad185ba292016-08-23 13:01:27 -0700196 "event_log_visualizer/plot_python.cc",
197 "event_log_visualizer/plot_python.h",
198 ]
kjellandere40a7ee2016-10-16 23:56:12 -0700199 if (!build_with_chromium && is_clang) {
200 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700201 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
skvlad185ba292016-08-23 13:01:27 -0700202 }
203 defines = [ "ENABLE_RTC_EVENT_LOG" ]
204 deps = [
ossuf515ab82016-12-07 04:52:58 -0800205 "../call:call_interfaces",
skvladcc91d282016-10-03 18:31:22 -0700206 "../logging:rtc_event_log_impl",
207 "../logging:rtc_event_log_parser",
kwibergd32bf752017-01-19 07:03:59 -0800208
209 # TODO(kwiberg): Remove this dependency.
210 "../modules/audio_coding:audio_format",
kjellander6ceab082016-10-28 05:44:03 -0700211 "../modules/congestion_controller",
212 "../modules/rtp_rtcp",
skvlad185ba292016-08-23 13:01:27 -0700213 "../system_wrappers:system_wrappers_default",
214 "//build/config/sanitizers:deps",
215 ]
216 public_deps = [
skvladf581eb72016-09-07 11:15:37 -0700217 ":chart_proto",
skvladcc91d282016-10-03 18:31:22 -0700218 "../logging:rtc_event_log_parser",
skvlad185ba292016-08-23 13:01:27 -0700219 ]
220 }
221}
222
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200223# Exclude tools depending on gflags since that's not available in Chromium.
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200224if (rtc_include_tests) {
terelius54ce6802016-07-13 06:44:41 -0700225 if (rtc_enable_protobuf) {
ehmaldonado38a21322016-09-02 04:10:34 -0700226 rtc_executable("event_log_visualizer") {
Stefan Holmer13181032016-07-29 14:48:54 +0200227 testonly = true
terelius54ce6802016-07-13 06:44:41 -0700228 sources = [
tereliusd49a37b2016-08-10 07:12:38 -0700229 "event_log_visualizer/main.cc",
terelius54ce6802016-07-13 06:44:41 -0700230 ]
231
kjellandere40a7ee2016-10-16 23:56:12 -0700232 if (!build_with_chromium && is_clang) {
233 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700234 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
terelius54ce6802016-07-13 06:44:41 -0700235 }
236
237 defines = [ "ENABLE_RTC_EVENT_LOG" ]
238 deps = [
skvlad185ba292016-08-23 13:01:27 -0700239 ":event_log_visualizer_utils",
stefan985d2802016-11-15 06:54:09 -0800240 "../test:field_trial",
terelius54ce6802016-07-13 06:44:41 -0700241 "//third_party/gflags",
242 ]
243 }
244 }
245
ehmaldonado38a21322016-09-02 04:10:34 -0700246 rtc_executable("activity_metric") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200247 testonly = true
248 sources = [
249 "agc/activity_metric.cc",
250 ]
kjellanderbac04122016-06-02 02:18:48 -0700251
kjellandere40a7ee2016-10-16 23:56:12 -0700252 if (!build_with_chromium && is_clang) {
253 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700254 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200255 }
kjellanderbac04122016-06-02 02:18:48 -0700256
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200257 deps = [
258 "../modules/audio_processing",
259 "../system_wrappers:metrics_default",
260 "//build/win:default_exe_manifest",
261 "//testing/gtest",
262 "//third_party/gflags",
263 ]
kjellanderbac04122016-06-02 02:18:48 -0700264 }
265
charujain1b5b22d2016-11-29 02:00:52 -0800266 tools_unittests_resources = [
267 "//resources/foreman_cif.yuv",
268 "//resources/reference_less_video_test_file.y4m",
269 "//resources/video_quality_analysis_frame.txt",
270 ]
kjellander32c4a202016-08-30 02:53:49 -0700271
272 if (is_ios) {
273 bundle_data("tools_unittests_bundle_data") {
274 testonly = true
275 sources = tools_unittests_resources
276 outputs = [
277 "{{bundle_resources_dir}}/{{source_file_part}}",
278 ]
279 }
280 }
281
ehmaldonado38a21322016-09-02 04:10:34 -0700282 rtc_test("tools_unittests") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200283 testonly = true
kjellanderbac04122016-06-02 02:18:48 -0700284
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200285 sources = [
charujain0f01c7f2016-12-02 05:00:00 -0800286 "frame_analyzer/reference_less_video_analysis_unittest.cc",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200287 "frame_analyzer/video_quality_analysis_unittest.cc",
288 "frame_editing/frame_editing_unittest.cc",
289 "simple_command_line_parser_unittest.cc",
290 ]
kjellanderbac04122016-06-02 02:18:48 -0700291
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200292 # TODO(jschuh): Bug 1348: fix this warning.
293 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellanderbac04122016-06-02 02:18:48 -0700294
kjellandere40a7ee2016-10-16 23:56:12 -0700295 if (!build_with_chromium && is_clang) {
296 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700297 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200298 }
kjellanderbac04122016-06-02 02:18:48 -0700299
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200300 deps = [
301 ":command_line_parser",
302 ":frame_editing_lib",
charujain0f01c7f2016-12-02 05:00:00 -0800303 ":reference_less_video_analysis_lib",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200304 ":video_quality_analysis",
ehmaldonado26bddb92016-11-30 06:12:01 -0800305 "../test:test_main",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200306 "//testing/gtest",
307 ]
kjellanderbac04122016-06-02 02:18:48 -0700308
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700309 data = tools_unittests_resources
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200310 if (is_android) {
311 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700312 shard_timeout = 900
313 }
kjellander32c4a202016-08-30 02:53:49 -0700314 if (is_ios) {
315 deps += [ ":tools_unittests_bundle_data" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200316 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000317 }
aleloi7ebbf902016-06-20 07:39:15 -0700318
319 if (rtc_enable_protobuf) {
320 copy("rtp_analyzer") {
321 sources = [
322 "py_event_log_analyzer/misc.py",
323 "py_event_log_analyzer/pb_parse.py",
324 "py_event_log_analyzer/rtp_analyzer.py",
325 "py_event_log_analyzer/rtp_analyzer.sh",
326 ]
327 outputs = [
328 "$root_build_dir/{{source_file_part}}",
329 ]
330 deps = [
skvladcc91d282016-10-03 18:31:22 -0700331 "../logging:rtc_event_log_proto",
aleloi7ebbf902016-06-20 07:39:15 -0700332 ]
333 }
334 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000335}