xref: /aosp_15_r20/external/webrtc/api/video_codecs/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1# Copyright (c) 2017 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("../../webrtc.gni")
10if (is_android) {
11  import("//build/config/android/config.gni")
12  import("//build/config/android/rules.gni")
13}
14
15rtc_source_set("scalability_mode") {
16  visibility = [ "*" ]
17  sources = [
18    "scalability_mode.cc",
19    "scalability_mode.h",
20  ]
21  deps = [
22    "../../rtc_base:checks",
23    "../../rtc_base/system:rtc_export",
24  ]
25  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
26}
27
28rtc_source_set("scalability_mode_helper") {
29  visibility = [ "*" ]
30  sources = [
31    "scalability_mode_helper.cc",
32    "scalability_mode_helper.h",
33  ]
34  deps = [ "../../modules/video_coding/svc:scalability_mode_util" ]
35  absl_deps = [
36    "//third_party/abseil-cpp/absl/strings",
37    "//third_party/abseil-cpp/absl/types:optional",
38  ]
39}
40
41rtc_library("video_codecs_api") {
42  visibility = [ "*" ]
43  sources = [
44    "av1_profile.cc",
45    "av1_profile.h",
46    "h264_profile_level_id.cc",
47    "h264_profile_level_id.h",
48    "sdp_video_format.cc",
49    "sdp_video_format.h",
50    "simulcast_stream.cc",
51    "simulcast_stream.h",
52    "spatial_layer.cc",
53    "spatial_layer.h",
54    "video_codec.cc",
55    "video_codec.h",
56    "video_decoder.cc",
57    "video_decoder.h",
58    "video_decoder_factory.h",
59    "video_encoder.cc",
60    "video_encoder.h",
61    "video_encoder_factory.h",
62    "vp8_frame_buffer_controller.h",
63    "vp8_frame_config.cc",
64    "vp8_frame_config.h",
65    "vp8_temporal_layers.cc",
66    "vp8_temporal_layers.h",
67    "vp9_profile.cc",
68    "vp9_profile.h",
69  ]
70
71  deps = [
72    ":scalability_mode",
73    "..:fec_controller_api",
74    "..:scoped_refptr",
75    "../../api:array_view",
76    "../../modules/video_coding:codec_globals_headers",
77    "../../rtc_base:checks",
78    "../../rtc_base:logging",
79    "../../rtc_base:macromagic",
80    "../../rtc_base:refcount",
81    "../../rtc_base:stringutils",
82    "../../rtc_base/system:rtc_export",
83    "../units:data_rate",
84    "../video:encoded_image",
85    "../video:render_resolution",
86    "../video:resolution",
87    "../video:video_bitrate_allocation",
88    "../video:video_codec_constants",
89    "../video:video_frame",
90    "../video:video_rtp_headers",
91  ]
92  absl_deps = [
93    "//third_party/abseil-cpp/absl/algorithm:container",
94    "//third_party/abseil-cpp/absl/container:inlined_vector",
95    "//third_party/abseil-cpp/absl/strings",
96    "//third_party/abseil-cpp/absl/types:optional",
97  ]
98}
99
100rtc_source_set("bitstream_parser_api") {
101  visibility = [ "*" ]
102  sources = [ "bitstream_parser.h" ]
103  deps = [ "..:array_view" ]
104  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
105}
106
107rtc_library("builtin_video_decoder_factory") {
108  visibility = [ "*" ]
109  allow_poison = [
110    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
111    "software_video_codecs",
112  ]
113  sources = [
114    "builtin_video_decoder_factory.cc",
115    "builtin_video_decoder_factory.h",
116  ]
117
118  deps = [
119    ":video_codecs_api",
120    "../../api:scoped_refptr",
121    "../../media:rtc_internal_video_codecs",
122    "../../rtc_base/system:rtc_export",
123  ]
124}
125
126rtc_library("builtin_video_encoder_factory") {
127  visibility = [ "*" ]
128  allow_poison = [
129    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
130    "software_video_codecs",
131  ]
132  sources = [
133    "builtin_video_encoder_factory.cc",
134    "builtin_video_encoder_factory.h",
135  ]
136
137  deps = [
138    ":video_codecs_api",
139    "../../api:scoped_refptr",
140    "../../media:rtc_encoder_simulcast_proxy",
141    "../../media:rtc_internal_video_codecs",
142    "../../media:rtc_media_base",
143    "../../rtc_base:checks",
144    "../../rtc_base/system:rtc_export",
145  ]
146  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
147}
148
149rtc_source_set("video_encoder_factory_template") {
150  visibility = [ "*" ]
151  allow_poison = [ "software_video_codecs" ]
152  public = [ "video_encoder_factory_template.h" ]
153
154  deps = [
155    ":video_codecs_api",
156    "../../api:array_view",
157    "../../modules/video_coding/svc:scalability_mode_util",
158  ]
159
160  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
161}
162
163rtc_source_set("video_encoder_factory_template_libvpx_vp8_adapter") {
164  visibility = [ "*" ]
165  allow_poison = [ "software_video_codecs" ]
166  public = [ "video_encoder_factory_template_libvpx_vp8_adapter.h" ]
167
168  deps = [
169    ":video_codecs_api",
170    "../../modules/video_coding:webrtc_vp8",
171    "../../modules/video_coding:webrtc_vp8_scalability",
172  ]
173
174  absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ]
175}
176
177rtc_source_set("video_encoder_factory_template_libvpx_vp9_adapter") {
178  visibility = [ "*" ]
179  allow_poison = [ "software_video_codecs" ]
180  public = [ "video_encoder_factory_template_libvpx_vp9_adapter.h" ]
181
182  deps = [ "../../modules/video_coding:webrtc_vp9" ]
183}
184
185rtc_source_set("video_encoder_factory_template_open_h264_adapter") {
186  visibility = [ "*" ]
187  allow_poison = [ "software_video_codecs" ]
188  public = [ "video_encoder_factory_template_open_h264_adapter.h" ]
189
190  deps = [ "../../modules/video_coding:webrtc_h264" ]
191}
192
193rtc_source_set("video_encoder_factory_template_libaom_av1_adapter") {
194  visibility = [ "*" ]
195  allow_poison = [ "software_video_codecs" ]
196  public = [ "video_encoder_factory_template_libaom_av1_adapter.h" ]
197
198  deps = [
199    ":scalability_mode",
200    ":video_codecs_api",
201    "../../modules/video_coding/codecs/av1:av1_svc_config",
202    "../../modules/video_coding/codecs/av1:libaom_av1_encoder",
203    "../../modules/video_coding/svc:scalability_mode_util",
204  ]
205  absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ]
206}
207
208rtc_source_set("video_decoder_factory_template") {
209  visibility = [ "*" ]
210  allow_poison = [ "software_video_codecs" ]
211  public = [ "video_decoder_factory_template.h" ]
212
213  deps = [
214    ":video_codecs_api",
215    "../../api:array_view",
216  ]
217
218  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
219}
220
221rtc_source_set("video_decoder_factory_template_libvpx_vp8_adapter") {
222  visibility = [ "*" ]
223  allow_poison = [ "software_video_codecs" ]
224  public = [ "video_decoder_factory_template_libvpx_vp8_adapter.h" ]
225
226  deps = [
227    ":video_codecs_api",
228    "../../modules/video_coding:webrtc_vp8",
229  ]
230}
231
232rtc_source_set("video_decoder_factory_template_libvpx_vp9_adapter") {
233  visibility = [ "*" ]
234  allow_poison = [ "software_video_codecs" ]
235  public = [ "video_decoder_factory_template_libvpx_vp9_adapter.h" ]
236
237  deps = [ "../../modules/video_coding:webrtc_vp9" ]
238}
239
240rtc_source_set("video_decoder_factory_template_open_h264_adapter") {
241  visibility = [ "*" ]
242  allow_poison = [ "software_video_codecs" ]
243  public = [ "video_decoder_factory_template_open_h264_adapter.h" ]
244
245  deps = [ "../../modules/video_coding:webrtc_h264" ]
246}
247
248rtc_source_set("video_decoder_factory_template_dav1d_adapter") {
249  visibility = [ "*" ]
250  allow_poison = [ "software_video_codecs" ]
251  public = [ "video_decoder_factory_template_dav1d_adapter.h" ]
252
253  deps = [
254    ":video_codecs_api",
255    "../../modules/video_coding/codecs/av1:dav1d_decoder",
256  ]
257}
258
259rtc_library("vp8_temporal_layers_factory") {
260  visibility = [ "*" ]
261  allow_poison = [ "software_video_codecs" ]
262  sources = [
263    "vp8_temporal_layers_factory.cc",
264    "vp8_temporal_layers_factory.h",
265  ]
266
267  deps = [
268    ":video_codecs_api",
269    "../:fec_controller_api",
270    "../../modules/video_coding:video_coding_utility",
271    "../../modules/video_coding:webrtc_vp8_temporal_layers",
272    "../../rtc_base:checks",
273  ]
274}
275
276rtc_library("rtc_software_fallback_wrappers") {
277  visibility = [ "*" ]
278
279  sources = [
280    "video_decoder_software_fallback_wrapper.cc",
281    "video_decoder_software_fallback_wrapper.h",
282    "video_encoder_software_fallback_wrapper.cc",
283    "video_encoder_software_fallback_wrapper.h",
284  ]
285
286  deps = [
287    ":video_codecs_api",
288    "..:fec_controller_api",
289    "../../api/video:video_frame",
290    "../../media:rtc_media_base",
291    "../../modules/video_coding:video_codec_interface",
292    "../../modules/video_coding:video_coding_utility",
293    "../../rtc_base:checks",
294    "../../rtc_base:event_tracer",
295    "../../rtc_base:logging",
296    "../../rtc_base/system:rtc_export",
297    "../../system_wrappers:field_trial",
298    "../../system_wrappers:metrics",
299    "../video:encoded_image",
300    "../video:video_bitrate_allocation",
301    "../video:video_frame",
302    "../video:video_rtp_headers",
303  ]
304  absl_deps = [
305    "//third_party/abseil-cpp/absl/base:core_headers",
306    "//third_party/abseil-cpp/absl/strings",
307    "//third_party/abseil-cpp/absl/types:optional",
308  ]
309}
310