blob: 266f6690c5fd93b7115959ac3601e6890cd84fdc [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",
33 ":rtp_analyzer",
34 ":tools_unittests",
kjellandera8119682016-06-06 02:00:18 -070035 ]
kjellander6ceab082016-10-28 05:44:03 -070036 if (rtc_enable_protobuf) {
37 public_deps += [ ":event_log_visualizer" ]
38 }
kjellandera8119682016-06-06 02:00:18 -070039 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000040}
41
kjellanderb62dbbe2016-09-23 00:38:52 -070042rtc_static_library("command_line_parser") {
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000043 sources = [
Henrik Kjellanderfa16dda2015-04-01 22:53:56 +020044 "simple_command_line_parser.cc",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020045 "simple_command_line_parser.h",
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000046 ]
Henrik Kjellander67bcb602015-10-07 08:42:52 +020047 deps = [
kjellander988d31e2016-02-05 00:23:50 -080048 "../base:gtest_prod",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020049 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +000050}
51
kjellanderb62dbbe2016-09-23 00:38:52 -070052rtc_static_library("video_quality_analysis") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020053 sources = [
54 "frame_analyzer/video_quality_analysis.cc",
55 "frame_analyzer/video_quality_analysis.h",
56 ]
kjellanderbac04122016-06-02 02:18:48 -070057
Henrik Kjellander67bcb602015-10-07 08:42:52 +020058 deps = [
59 "../common_video",
60 ]
61 public_deps = [
62 "../common_video",
63 ]
64}
65
ehmaldonado38a21322016-09-02 04:10:34 -070066rtc_executable("frame_analyzer") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +020067 sources = [
68 "frame_analyzer/frame_analyzer.cc",
69 ]
kjellanderbac04122016-06-02 02:18:48 -070070
kjellanderbac04122016-06-02 02:18:48 -070071 deps = [
72 ":command_line_parser",
73 ":video_quality_analysis",
74 "//build/win:default_exe_manifest",
75 ]
76}
77
ehmaldonado38a21322016-09-02 04:10:34 -070078rtc_executable("psnr_ssim_analyzer") {
kjellanderbac04122016-06-02 02:18:48 -070079 sources = [
80 "psnr_ssim_analyzer/psnr_ssim_analyzer.cc",
81 ]
82
Henrik Kjellander67bcb602015-10-07 08:42:52 +020083 deps = [
84 ":command_line_parser",
85 ":video_quality_analysis",
brucedawson84583e02016-04-28 00:21:08 -070086 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +020087 ]
88}
89
charujain0f01c7f2016-12-02 05:00:00 -080090rtc_static_library("reference_less_video_analysis_lib") {
91 sources = [
92 "frame_analyzer/reference_less_video_analysis_lib.cc",
93 "frame_analyzer/reference_less_video_analysis_lib.h",
94 ]
95
96 deps = [
97 ":video_quality_analysis",
98 ]
99}
100
101rtc_executable("reference_less_video_analysis") {
102 sources = [
103 "frame_analyzer/reference_less_video_analysis.cc",
104 ]
105
106 deps = [
107 ":command_line_parser",
108 ":reference_less_video_analysis_lib",
109 "//build/win:default_exe_manifest",
110 ]
111}
112
ehmaldonado38a21322016-09-02 04:10:34 -0700113rtc_executable("rgba_to_i420_converter") {
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200114 sources = [
115 "converter/converter.cc",
116 "converter/converter.h",
117 "converter/rgba_to_i420_converter.cc",
118 ]
kjellanderbac04122016-06-02 02:18:48 -0700119
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200120 deps = [
121 ":command_line_parser",
122 "../common_video",
brucedawson84583e02016-04-28 00:21:08 -0700123 "//build/win:default_exe_manifest",
Henrik Kjellander67bcb602015-10-07 08:42:52 +0200124 ]
125}
126
kjellanderb62dbbe2016-09-23 00:38:52 -0700127rtc_static_library("frame_editing_lib") {
kjellanderbac04122016-06-02 02:18:48 -0700128 sources = [
129 "frame_editing/frame_editing_lib.cc",
130 "frame_editing/frame_editing_lib.h",
131 ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000132
kjellanderbac04122016-06-02 02:18:48 -0700133 # TODO(jschuh): Bug 1348: fix this warning.
134 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000135
kjellandere40a7ee2016-10-16 23:56:12 -0700136 if (!build_with_chromium && is_clang) {
137 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700138 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderbac04122016-06-02 02:18:48 -0700139 }
kjellander@webrtc.org3037bc32014-09-30 19:07:58 +0000140
kjellanderbac04122016-06-02 02:18:48 -0700141 deps = [
142 "../common_video",
143 ]
144}
145
ehmaldonado38a21322016-09-02 04:10:34 -0700146rtc_executable("frame_editor") {
kjellanderbac04122016-06-02 02:18:48 -0700147 sources = [
148 "frame_editing/frame_editing.cc",
149 ]
150
kjellanderbac04122016-06-02 02:18:48 -0700151 deps = [
152 ":command_line_parser",
153 ":frame_editing_lib",
154 "//build/win:default_exe_manifest",
155 ]
156}
157
solenbergfc433e62016-09-09 11:04:53 -0700158# It doesn't make sense to build this tool without the ADM enabled.
159if (rtc_include_internal_audio_device) {
160 rtc_executable("force_mic_volume_max") {
161 sources = [
162 "force_mic_volume_max/force_mic_volume_max.cc",
163 ]
kjellanderbac04122016-06-02 02:18:48 -0700164
kjellandere40a7ee2016-10-16 23:56:12 -0700165 if (!build_with_chromium && is_clang) {
166 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
solenbergfc433e62016-09-09 11:04:53 -0700167 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
168 }
169
170 deps = [
kjellander6ceab082016-10-28 05:44:03 -0700171 "../modules/audio_device",
solenbergfc433e62016-09-09 11:04:53 -0700172 "../system_wrappers:system_wrappers_default",
173 "//build/win:default_exe_manifest",
174 ]
kjellanderbac04122016-06-02 02:18:48 -0700175 }
kjellanderbac04122016-06-02 02:18:48 -0700176}
177
skvlad185ba292016-08-23 13:01:27 -0700178if (rtc_enable_protobuf) {
skvladf581eb72016-09-07 11:15:37 -0700179 proto_library("chart_proto") {
tereliusb246a292016-08-23 18:15:25 -0700180 sources = [
skvladf581eb72016-09-07 11:15:37 -0700181 "event_log_visualizer/chart.proto",
tereliusb246a292016-08-23 18:15:25 -0700182 ]
183 proto_out_dir = "webrtc/tools/event_log_visualizer"
184 }
185
kjellanderb62dbbe2016-09-23 00:38:52 -0700186 rtc_static_library("event_log_visualizer_utils") {
skvlad185ba292016-08-23 13:01:27 -0700187 sources = [
188 "event_log_visualizer/analyzer.cc",
189 "event_log_visualizer/analyzer.h",
190 "event_log_visualizer/plot_base.cc",
191 "event_log_visualizer/plot_base.h",
tereliusb246a292016-08-23 18:15:25 -0700192 "event_log_visualizer/plot_protobuf.cc",
193 "event_log_visualizer/plot_protobuf.h",
skvlad185ba292016-08-23 13:01:27 -0700194 "event_log_visualizer/plot_python.cc",
195 "event_log_visualizer/plot_python.h",
196 ]
kjellandere40a7ee2016-10-16 23:56:12 -0700197 if (!build_with_chromium && is_clang) {
198 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700199 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
skvlad185ba292016-08-23 13:01:27 -0700200 }
201 defines = [ "ENABLE_RTC_EVENT_LOG" ]
202 deps = [
ossuf515ab82016-12-07 04:52:58 -0800203 "../call:call_interfaces",
skvladcc91d282016-10-03 18:31:22 -0700204 "../logging:rtc_event_log_impl",
205 "../logging:rtc_event_log_parser",
kjellander6ceab082016-10-28 05:44:03 -0700206 "../modules/congestion_controller",
207 "../modules/rtp_rtcp",
skvlad185ba292016-08-23 13:01:27 -0700208 "../system_wrappers:system_wrappers_default",
209 "//build/config/sanitizers:deps",
210 ]
211 public_deps = [
skvladf581eb72016-09-07 11:15:37 -0700212 ":chart_proto",
skvladcc91d282016-10-03 18:31:22 -0700213 "../logging:rtc_event_log_parser",
skvlad185ba292016-08-23 13:01:27 -0700214 ]
215 }
216}
217
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200218# Exclude tools depending on gflags since that's not available in Chromium.
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200219if (rtc_include_tests) {
terelius54ce6802016-07-13 06:44:41 -0700220 if (rtc_enable_protobuf) {
ehmaldonado38a21322016-09-02 04:10:34 -0700221 rtc_executable("event_log_visualizer") {
Stefan Holmer13181032016-07-29 14:48:54 +0200222 testonly = true
terelius54ce6802016-07-13 06:44:41 -0700223 sources = [
tereliusd49a37b2016-08-10 07:12:38 -0700224 "event_log_visualizer/main.cc",
terelius54ce6802016-07-13 06:44:41 -0700225 ]
226
kjellandere40a7ee2016-10-16 23:56:12 -0700227 if (!build_with_chromium && is_clang) {
228 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700229 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
terelius54ce6802016-07-13 06:44:41 -0700230 }
231
232 defines = [ "ENABLE_RTC_EVENT_LOG" ]
233 deps = [
skvlad185ba292016-08-23 13:01:27 -0700234 ":event_log_visualizer_utils",
stefan985d2802016-11-15 06:54:09 -0800235 "../test:field_trial",
terelius54ce6802016-07-13 06:44:41 -0700236 "//third_party/gflags",
237 ]
238 }
239 }
240
ehmaldonado38a21322016-09-02 04:10:34 -0700241 rtc_executable("activity_metric") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200242 testonly = true
243 sources = [
244 "agc/activity_metric.cc",
245 ]
kjellanderbac04122016-06-02 02:18:48 -0700246
kjellandere40a7ee2016-10-16 23:56:12 -0700247 if (!build_with_chromium && is_clang) {
248 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700249 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200250 }
kjellanderbac04122016-06-02 02:18:48 -0700251
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200252 deps = [
253 "../modules/audio_processing",
254 "../system_wrappers:metrics_default",
255 "//build/win:default_exe_manifest",
256 "//testing/gtest",
257 "//third_party/gflags",
258 ]
kjellanderbac04122016-06-02 02:18:48 -0700259 }
260
charujain1b5b22d2016-11-29 02:00:52 -0800261 tools_unittests_resources = [
262 "//resources/foreman_cif.yuv",
263 "//resources/reference_less_video_test_file.y4m",
264 "//resources/video_quality_analysis_frame.txt",
265 ]
kjellander32c4a202016-08-30 02:53:49 -0700266
267 if (is_ios) {
268 bundle_data("tools_unittests_bundle_data") {
269 testonly = true
270 sources = tools_unittests_resources
271 outputs = [
272 "{{bundle_resources_dir}}/{{source_file_part}}",
273 ]
274 }
275 }
276
ehmaldonado38a21322016-09-02 04:10:34 -0700277 rtc_test("tools_unittests") {
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200278 testonly = true
kjellanderbac04122016-06-02 02:18:48 -0700279
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200280 sources = [
charujain0f01c7f2016-12-02 05:00:00 -0800281 "frame_analyzer/reference_less_video_analysis_unittest.cc",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200282 "frame_analyzer/video_quality_analysis_unittest.cc",
283 "frame_editing/frame_editing_unittest.cc",
284 "simple_command_line_parser_unittest.cc",
285 ]
kjellanderbac04122016-06-02 02:18:48 -0700286
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200287 # TODO(jschuh): Bug 1348: fix this warning.
288 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
kjellanderbac04122016-06-02 02:18:48 -0700289
kjellandere40a7ee2016-10-16 23:56:12 -0700290 if (!build_with_chromium && is_clang) {
291 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700292 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200293 }
kjellanderbac04122016-06-02 02:18:48 -0700294
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200295 deps = [
296 ":command_line_parser",
297 ":frame_editing_lib",
charujain0f01c7f2016-12-02 05:00:00 -0800298 ":reference_less_video_analysis_lib",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200299 ":video_quality_analysis",
ehmaldonado26bddb92016-11-30 06:12:01 -0800300 "../test:test_main",
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200301 "//testing/gtest",
302 ]
kjellanderbac04122016-06-02 02:18:48 -0700303
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700304 data = tools_unittests_resources
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200305 if (is_android) {
306 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700307 shard_timeout = 900
308 }
kjellander32c4a202016-08-30 02:53:49 -0700309 if (is_ios) {
310 deps += [ ":tools_unittests_bundle_data" ]
kjellander@webrtc.orgdc0dbad2016-06-02 13:29:07 +0200311 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000312 }
aleloi7ebbf902016-06-20 07:39:15 -0700313
314 if (rtc_enable_protobuf) {
315 copy("rtp_analyzer") {
316 sources = [
317 "py_event_log_analyzer/misc.py",
318 "py_event_log_analyzer/pb_parse.py",
319 "py_event_log_analyzer/rtp_analyzer.py",
320 "py_event_log_analyzer/rtp_analyzer.sh",
321 ]
322 outputs = [
323 "$root_build_dir/{{source_file_part}}",
324 ]
325 deps = [
skvladcc91d282016-10-03 18:31:22 -0700326 "../logging:rtc_event_log_proto",
aleloi7ebbf902016-06-20 07:39:15 -0700327 ]
328 }
329 }
kjellander@webrtc.orgb8caf6a2014-09-30 18:05:02 +0000330}