blob: 0aefefd193b2014bca1f8d34757260423733c781 [file] [log] [blame]
kjellander@webrtc.org1227ab82014-06-23 19:21:07 +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
9import("../build/webrtc.gni")
10
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000011config("common_video_config") {
12 include_dirs = [
kjellander6f8ce062015-11-16 13:52:24 -080013 "include",
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000014 "libyuv/include",
15 ]
16}
17
kjellanderb62dbbe2016-09-23 00:38:52 -070018rtc_static_library("common_video") {
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000019 sources = [
emircan55a401e2016-04-26 12:55:07 -070020 "bitrate_adjuster.cc",
kthelgasonb9061722016-10-26 02:48:16 -070021 "h264/h264_bitstream_parser.cc",
22 "h264/h264_bitstream_parser.h",
sprang52033d62016-06-02 02:43:32 -070023 "h264/h264_common.cc",
24 "h264/h264_common.h",
25 "h264/pps_parser.cc",
26 "h264/pps_parser.h",
magjedfffc1e52016-10-31 05:55:57 -070027 "h264/profile_level_id.cc",
28 "h264/profile_level_id.h",
sprang52033d62016-06-02 02:43:32 -070029 "h264/sps_parser.cc",
30 "h264/sps_parser.h",
31 "h264/sps_vui_rewriter.cc",
32 "h264/sps_vui_rewriter.h",
magjed@webrtc.org73d763e2015-03-17 11:40:45 +000033 "i420_buffer_pool.cc",
emircan55a401e2016-04-26 12:55:07 -070034 "include/bitrate_adjuster.h",
pbosa96b60b2016-04-18 21:12:48 -070035 "include/frame_callback.h",
kjellander6f8ce062015-11-16 13:52:24 -080036 "include/i420_buffer_pool.h",
37 "include/incoming_video_stream.h",
Erik Språng08127a92016-11-16 16:41:30 +010038 "include/video_bitrate_allocator.h",
kjellander6f8ce062015-11-16 13:52:24 -080039 "include/video_frame_buffer.h",
Peter Boström9a638662015-05-13 13:28:11 +020040 "incoming_video_stream.cc",
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000041 "libyuv/include/webrtc_libyuv.h",
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000042 "libyuv/webrtc_libyuv.cc",
Miguel Casas-Sanchez47650702015-05-29 17:21:40 -070043 "video_frame.cc",
magjed@webrtc.org2386d6d2015-03-05 14:03:08 +000044 "video_frame_buffer.cc",
Peter Boström9a638662015-05-13 13:28:11 +020045 "video_render_frames.cc",
46 "video_render_frames.h",
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000047 ]
48
49 include_dirs = [ "../modules/interface" ]
50
ehmaldonadoe9cc6862016-09-05 06:10:18 -070051 public_configs = [ ":common_video_config" ]
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000052
kjellandere40a7ee2016-10-16 23:56:12 -070053 if (!build_with_chromium && is_clang) {
54 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -070055 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander@webrtc.org42ee5b52014-08-25 14:15:35 +000056 }
57
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +000058 deps = [
59 "..:webrtc_common",
perkj4e417b22016-07-14 23:35:55 -070060 "../base:rtc_task_queue",
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +000061 "../system_wrappers",
62 ]
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000063
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000064 if (rtc_build_libyuv) {
kjellander@webrtc.orgce22f132015-02-16 12:47:20 +000065 deps += [ "$rtc_libyuv_dir" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020066 public_deps = [
67 "$rtc_libyuv_dir",
68 ]
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000069 } else {
70 # Need to add a directory normally exported by libyuv.
kjellander@webrtc.orgce22f132015-02-16 12:47:20 +000071 include_dirs += [ "$rtc_libyuv_dir/include" ]
kjellander@webrtc.org11bea892014-07-03 17:04:12 +000072 }
tkchin7d06a8c2016-04-04 14:10:43 -070073
74 if (is_ios || is_mac) {
75 sources += [
76 "corevideo_frame_buffer.cc",
77 "include/corevideo_frame_buffer.h",
78 ]
79 libs = [ "CoreVideo.framework" ]
80 }
kjellander@webrtc.org1227ab82014-06-23 19:21:07 +000081}
kjellander2a3892a2016-06-08 01:27:52 -070082
83if (rtc_include_tests) {
ehmaldonado3a7f35b2016-09-14 05:10:01 -070084 common_video_resources = [ "//resources/foreman_cif.yuv" ]
kjellander32c4a202016-08-30 02:53:49 -070085
86 if (is_ios) {
87 bundle_data("common_video_unittests_bundle_data") {
88 testonly = true
89 sources = common_video_resources
90 outputs = [
91 "{{bundle_resources_dir}}/{{source_file_part}}",
92 ]
93 }
94 }
95
ehmaldonado38a21322016-09-02 04:10:34 -070096 rtc_test("common_video_unittests") {
kjellander2a3892a2016-06-08 01:27:52 -070097 testonly = true
98
99 sources = [
100 "bitrate_adjuster_unittest.cc",
kthelgasonb9061722016-10-26 02:48:16 -0700101 "h264/h264_bitstream_parser_unittest.cc",
kjellander2a3892a2016-06-08 01:27:52 -0700102 "h264/pps_parser_unittest.cc",
magjedfffc1e52016-10-31 05:55:57 -0700103 "h264/profile_level_id_unittest.cc",
kjellander2a3892a2016-06-08 01:27:52 -0700104 "h264/sps_parser_unittest.cc",
105 "h264/sps_vui_rewriter_unittest.cc",
106 "i420_buffer_pool_unittest.cc",
107 "i420_video_frame_unittest.cc",
108 "libyuv/libyuv_unittest.cc",
kjellander2a3892a2016-06-08 01:27:52 -0700109 ]
110
kjellander2a3892a2016-06-08 01:27:52 -0700111 # TODO(jschuh): Bug 1348: fix this warning.
112 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
113
kjellandere40a7ee2016-10-16 23:56:12 -0700114 if (!build_with_chromium && is_clang) {
115 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700116 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander2a3892a2016-06-08 01:27:52 -0700117 }
118
119 deps = [
120 ":common_video",
121 "../system_wrappers:system_wrappers",
ehmaldonado26bddb92016-11-30 06:12:01 -0800122 "../test:test_main",
kjellander2a3892a2016-06-08 01:27:52 -0700123 "../test:video_test_common",
124 "//testing/gmock",
125 "//testing/gtest",
126 ]
127
ehmaldonado3a7f35b2016-09-14 05:10:01 -0700128 data = common_video_resources
kjellander2a3892a2016-06-08 01:27:52 -0700129 if (is_android) {
130 deps += [ "//testing/android/native_test:native_test_support" ]
kjellander28a0ffd2016-08-24 07:48:42 -0700131 shard_timeout = 900
132 }
kjellander2a3892a2016-06-08 01:27:52 -0700133
kjellander32c4a202016-08-30 02:53:49 -0700134 if (is_ios) {
135 deps += [ ":common_video_unittests_bundle_data" ]
kjellander2a3892a2016-06-08 01:27:52 -0700136 }
137 }
138}