1# Copyright (c) 2020 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("//third_party/libaom/options.gni")
10import("../../../../webrtc.gni")
11
12rtc_library("libaom_av1_decoder") {
13  visibility = [ "*" ]
14  poisonous = [ "software_video_codecs" ]
15  public = [ "libaom_av1_decoder.h" ]
16  deps = [ "../../../../api/video_codecs:video_codecs_api" ]
17  absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ]
18
19  if (enable_libaom) {
20    sources = [ "libaom_av1_decoder.cc" ]
21    deps += [
22      "../..:video_codec_interface",
23      "../../../../api:scoped_refptr",
24      "../../../../api/video:encoded_image",
25      "../../../../api/video:video_frame_i420",
26      "../../../../common_video",
27      "../../../../rtc_base:logging",
28      "//third_party/libaom",
29      "//third_party/libyuv",
30    ]
31    absl_deps += [ "//third_party/abseil-cpp/absl/types:optional" ]
32  } else {
33    sources = [ "libaom_av1_decoder_absent.cc" ]
34  }
35}
36
37rtc_source_set("scalable_video_controller") {
38  sources = [
39    "scalable_video_controller.h",
40    "scalable_video_controller_no_layering.cc",
41    "scalable_video_controller_no_layering.h",
42  ]
43  deps = [
44    "../../../../api/transport/rtp:dependency_descriptor",
45    "../../../../api/video:video_bitrate_allocation",
46    "../../../../common_video/generic_frame_descriptor",
47    "../../../../rtc_base:checks",
48  ]
49  absl_deps = [
50    "//third_party/abseil-cpp/absl/container:inlined_vector",
51    "//third_party/abseil-cpp/absl/types:optional",
52  ]
53}
54
55rtc_source_set("scalability_structures") {
56  sources = [
57    "create_scalability_structure.cc",
58    "create_scalability_structure.h",
59    "scalability_structure_l1t2.cc",
60    "scalability_structure_l1t2.h",
61    "scalability_structure_l1t3.cc",
62    "scalability_structure_l1t3.h",
63    "scalability_structure_l2t1.cc",
64    "scalability_structure_l2t1.h",
65    "scalability_structure_l2t1_key.cc",
66    "scalability_structure_l2t1_key.h",
67    "scalability_structure_l2t1h.cc",
68    "scalability_structure_l2t1h.h",
69    "scalability_structure_l2t2.cc",
70    "scalability_structure_l2t2.h",
71    "scalability_structure_l2t2_key.cc",
72    "scalability_structure_l2t2_key.h",
73    "scalability_structure_l2t2_key_shift.cc",
74    "scalability_structure_l2t2_key_shift.h",
75    "scalability_structure_l3t1.cc",
76    "scalability_structure_l3t1.h",
77    "scalability_structure_l3t3.cc",
78    "scalability_structure_l3t3.h",
79    "scalability_structure_s2t1.cc",
80    "scalability_structure_s2t1.h",
81  ]
82  deps = [
83    ":scalable_video_controller",
84    "../../../../api/transport/rtp:dependency_descriptor",
85    "../../../../common_video/generic_frame_descriptor",
86    "../../../../rtc_base:checks",
87    "../../../../rtc_base:logging",
88  ]
89  absl_deps = [
90    "//third_party/abseil-cpp/absl/base:core_headers",
91    "//third_party/abseil-cpp/absl/strings",
92    "//third_party/abseil-cpp/absl/types:optional",
93  ]
94}
95
96rtc_library("libaom_av1_encoder") {
97  visibility = [ "*" ]
98  poisonous = [ "software_video_codecs" ]
99  public = [ "libaom_av1_encoder.h" ]
100  deps = [
101    ":scalable_video_controller",
102    "../../../../api/video_codecs:video_codecs_api",
103  ]
104  absl_deps = [
105    "//third_party/abseil-cpp/absl/algorithm:container",
106    "//third_party/abseil-cpp/absl/base:core_headers",
107    "//third_party/abseil-cpp/absl/types:optional",
108  ]
109
110  if (enable_libaom) {
111    sources = [ "libaom_av1_encoder.cc" ]
112    deps += [
113      "../..:video_codec_interface",
114      "../../../../api:scoped_refptr",
115      "../../../../api/video:encoded_image",
116      "../../../../api/video:video_frame",
117      "../../../../api/video:video_frame_i420",
118      "../../../../common_video",
119      "../../../../rtc_base:checks",
120      "../../../../rtc_base:logging",
121      "//third_party/libaom",
122    ]
123  } else {
124    sources = [ "libaom_av1_encoder_absent.cc" ]
125  }
126}
127
128if (rtc_include_tests) {
129  rtc_library("scalability_structure_tests") {
130    testonly = true
131    sources = [ "scalability_structure_unittest.cc" ]
132    deps = [
133      ":scalability_structures",
134      ":scalable_video_controller",
135      "../..:chain_diff_calculator",
136      "../..:frame_dependencies_calculator",
137      "../../../../api/transport/rtp:dependency_descriptor",
138      "../../../../api/video:video_frame_type",
139      "../../../../test:test_support",
140    ]
141    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
142  }
143
144  rtc_library("video_coding_codecs_av1_tests") {
145    testonly = true
146
147    if (enable_libaom) {
148      sources = [
149        "libaom_av1_encoder_unittest.cc",
150        "libaom_av1_unittest.cc",
151      ]
152      deps = [
153        ":libaom_av1_decoder",
154        ":libaom_av1_encoder",
155        ":scalability_structures",
156        ":scalable_video_controller",
157        "../..:encoded_video_frame_producer",
158        "../..:video_codec_interface",
159        "../../../../api:mock_video_encoder",
160        "../../../../api/units:data_size",
161        "../../../../api/units:time_delta",
162        "../../../../api/video:video_frame_i420",
163        "../../../../api/video_codecs:video_codecs_api",
164        "../../../../test:test_support",
165      ]
166      absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
167    }
168  }
169}
170