• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 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("//third_party/libaom/options.gni")
10import("../../webrtc.gni")
11
12rtc_library("encoded_frame") {
13  visibility = [ "*" ]
14  sources = [
15    "encoded_frame.cc",
16    "encoded_frame.h",
17  ]
18  deps = [
19    ":codec_globals_headers",
20    ":video_codec_interface",
21    "../../api/video:encoded_image",
22    "../../api/video:video_frame",
23    "../../api/video:video_frame_i420",
24    "../../api/video:video_rtp_headers",
25    "../../modules:module_api",
26    "../../modules:module_api_public",
27    "../../modules/rtp_rtcp:rtp_video_header",
28    "../../rtc_base:checks",
29    "../../rtc_base:rtc_base_approved",
30    "../../rtc_base/experiments:alr_experiment",
31    "../../rtc_base/experiments:rtt_mult_experiment",
32    "../../rtc_base/system:rtc_export",
33    "../../system_wrappers",
34  ]
35  absl_deps = [
36    "//third_party/abseil-cpp/absl/types:optional",
37    "//third_party/abseil-cpp/absl/types:variant",
38  ]
39}
40
41rtc_library("chain_diff_calculator") {
42  sources = [
43    "chain_diff_calculator.cc",
44    "chain_diff_calculator.h",
45  ]
46
47  deps = [
48    "../../rtc_base:checks",
49    "../../rtc_base:logging",
50  ]
51  absl_deps = [
52    "//third_party/abseil-cpp/absl/container:inlined_vector",
53    "//third_party/abseil-cpp/absl/types:optional",
54  ]
55}
56
57rtc_library("frame_dependencies_calculator") {
58  sources = [
59    "frame_dependencies_calculator.cc",
60    "frame_dependencies_calculator.h",
61  ]
62
63  deps = [
64    "../../api:array_view",
65    "../../api/video:video_frame_type",
66    "../../common_video/generic_frame_descriptor",
67    "../../rtc_base:checks",
68    "../../rtc_base:logging",
69  ]
70  absl_deps = [
71    "//third_party/abseil-cpp/absl/algorithm:container",
72    "//third_party/abseil-cpp/absl/container:inlined_vector",
73    "//third_party/abseil-cpp/absl/types:optional",
74  ]
75}
76
77rtc_library("nack_module") {
78  sources = [
79    "histogram.cc",
80    "histogram.h",
81    "nack_module2.cc",
82    "nack_module2.h",
83  ]
84
85  deps = [
86    "..:module_api",
87    "../../api/units:time_delta",
88    "../../api/units:timestamp",
89    "../../rtc_base:checks",
90    "../../rtc_base:rtc_base_approved",
91    "../../rtc_base:rtc_numerics",
92    "../../rtc_base:rtc_task_queue",
93    "../../rtc_base/experiments:field_trial_parser",
94    "../../rtc_base/synchronization:sequence_checker",
95    "../../rtc_base/task_utils:pending_task_safety_flag",
96    "../../rtc_base/task_utils:repeating_task",
97    "../../system_wrappers",
98    "../../system_wrappers:field_trial",
99    "../utility",
100  ]
101}
102
103rtc_library("video_coding") {
104  visibility = [ "*" ]
105  deps = [
106    "..:module_fec_api",
107    "../../api:array_view",
108    "../../api:scoped_refptr",
109    "../../api/video:encoded_image",
110    "../../api/video:video_adaptation",
111    "../../api/video:video_bitrate_allocation",
112    "../../api/video:video_bitrate_allocator_factory",
113    "../../rtc_base:deprecation",
114    "../../rtc_base/task_utils:to_queued_task",
115    "../../system_wrappers:field_trial",
116    "../../system_wrappers:metrics",
117    "../rtp_rtcp:rtp_video_header",
118  ]
119  absl_deps = [
120    "//third_party/abseil-cpp/absl/base:core_headers",
121    "//third_party/abseil-cpp/absl/container:inlined_vector",
122    "//third_party/abseil-cpp/absl/memory",
123    "//third_party/abseil-cpp/absl/types:optional",
124    "//third_party/abseil-cpp/absl/types:variant",
125  ]
126
127  sources = [
128    "codec_timer.cc",
129    "codec_timer.h",
130    "decoder_database.cc",
131    "decoder_database.h",
132    "fec_controller_default.cc",
133    "fec_controller_default.h",
134    "fec_rate_table.h",
135    "frame_buffer2.cc",
136    "frame_buffer2.h",
137    "frame_object.cc",
138    "frame_object.h",
139    "generic_decoder.cc",
140    "generic_decoder.h",
141    "h264_sprop_parameter_sets.cc",
142    "h264_sprop_parameter_sets.h",
143    "h264_sps_pps_tracker.cc",
144    "h264_sps_pps_tracker.h",
145    "include/video_codec_initializer.h",
146    "inter_frame_delay.cc",
147    "inter_frame_delay.h",
148    "internal_defines.h",
149    "jitter_estimator.cc",
150    "jitter_estimator.h",
151    "loss_notification_controller.cc",
152    "loss_notification_controller.h",
153    "media_opt_util.cc",
154    "media_opt_util.h",
155    "packet_buffer.cc",
156    "packet_buffer.h",
157    "rtp_frame_reference_finder.cc",
158    "rtp_frame_reference_finder.h",
159    "rtt_filter.cc",
160    "rtt_filter.h",
161    "timestamp_map.cc",
162    "timestamp_map.h",
163    "timing.cc",
164    "timing.h",
165    "unique_timestamp_counter.cc",
166    "unique_timestamp_counter.h",
167    "video_codec_initializer.cc",
168    "video_receiver2.cc",
169    "video_receiver2.h",
170  ]
171
172  deps += [
173    ":codec_globals_headers",
174    ":encoded_frame",
175    ":video_codec_interface",
176    ":video_coding_utility",
177    ":webrtc_vp9_helpers",
178    "..:module_api",
179    "..:module_api_public",
180    "../../api:fec_controller_api",
181    "../../api:rtp_headers",
182    "../../api:rtp_packet_info",
183    "../../api/units:data_rate",
184    "../../api/units:time_delta",
185    "../../api/video:builtin_video_bitrate_allocator_factory",
186    "../../api/video:encoded_frame",
187    "../../api/video:video_adaptation",
188    "../../api/video:video_bitrate_allocator",
189    "../../api/video:video_frame",
190    "../../api/video:video_frame_i420",
191    "../../api/video:video_frame_type",
192    "../../api/video:video_rtp_headers",
193    "../../api/video_codecs:video_codecs_api",
194    "../../common_video",
195    "../../rtc_base",
196    "../../rtc_base:checks",
197    "../../rtc_base:rtc_base_approved",
198    "../../rtc_base:rtc_numerics",
199    "../../rtc_base:rtc_task_queue",
200    "../../rtc_base/experiments:alr_experiment",
201    "../../rtc_base/experiments:field_trial_parser",
202    "../../rtc_base/experiments:jitter_upper_bound_experiment",
203    "../../rtc_base/experiments:min_video_bitrate_experiment",
204    "../../rtc_base/experiments:rate_control_settings",
205    "../../rtc_base/experiments:rtt_mult_experiment",
206    "../../rtc_base/synchronization:mutex",
207    "../../rtc_base/synchronization:sequence_checker",
208    "../../rtc_base/task_utils:repeating_task",
209    "../../rtc_base/third_party/base64",
210    "../../rtc_base/time:timestamp_extrapolator",
211    "../../system_wrappers",
212    "../rtp_rtcp",
213    "../rtp_rtcp:rtp_rtcp_format",
214  ]
215}
216
217rtc_library("video_codec_interface") {
218  visibility = [ "*" ]
219  sources = [
220    "include/video_codec_interface.cc",
221    "include/video_codec_interface.h",
222    "include/video_coding_defines.h",
223    "include/video_error_codes.h",
224    "video_coding_defines.cc",
225  ]
226  deps = [
227    ":codec_globals_headers",
228    "..:module_api",
229    "../../api/video:video_frame",
230    "../../api/video:video_rtp_headers",
231    "../../api/video_codecs:video_codecs_api",
232    "../../common_video",
233    "../../common_video/generic_frame_descriptor",
234    "../../rtc_base/system:rtc_export",
235  ]
236  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
237}
238
239rtc_library("video_coding_legacy") {
240  visibility = [ ":video_coding_unittests" ]
241  sources = [
242    "decoding_state.cc",
243    "decoding_state.h",
244    "event_wrapper.cc",
245    "event_wrapper.h",
246    "frame_buffer.cc",
247    "frame_buffer.h",
248    "include/video_coding.h",
249    "jitter_buffer.cc",
250    "jitter_buffer.h",
251    "jitter_buffer_common.h",
252    "packet.cc",
253    "packet.h",
254    "receiver.cc",
255    "receiver.h",
256    "session_info.cc",
257    "session_info.h",
258    "video_coding_impl.cc",
259    "video_coding_impl.h",
260    "video_receiver.cc",
261  ]
262  deps = [
263    ":codec_globals_headers",
264    ":encoded_frame",
265    ":video_codec_interface",
266    ":video_coding",
267    "..:module_api",
268    "..:module_api_public",
269    "../../:webrtc_common",
270    "../../api:rtp_headers",
271    "../../api:rtp_packet_info",
272    "../../api/video:encoded_image",
273    "../../api/video:video_frame",
274    "../../api/video:video_frame_type",
275    "../../api/video:video_rtp_headers",
276    "../../api/video_codecs:video_codecs_api",
277    "../../common_video",
278    "../../modules/rtp_rtcp:rtp_video_header",
279    "../../rtc_base:checks",
280    "../../rtc_base:logging",
281    "../../rtc_base:rtc_base_approved",
282    "../../rtc_base:rtc_event",
283    "../../rtc_base/synchronization:mutex",
284    "../../rtc_base/synchronization:sequence_checker",
285    "../../system_wrappers",
286    "../rtp_rtcp:rtp_rtcp_format",
287    "../rtp_rtcp:rtp_video_header",
288    "../utility",
289  ]
290  absl_deps = [
291    "//third_party/abseil-cpp/absl/memory",
292    "//third_party/abseil-cpp/absl/types:optional",
293    "//third_party/abseil-cpp/absl/types:variant",
294  ]
295}
296
297rtc_source_set("codec_globals_headers") {
298  visibility = [ "*" ]
299  sources = [
300    "codecs/h264/include/h264_globals.h",
301    "codecs/interface/common_constants.h",
302    "codecs/vp8/include/vp8_globals.h",
303    "codecs/vp9/include/vp9_globals.h",
304  ]
305
306  deps = [ "../../rtc_base:checks" ]
307}
308
309rtc_library("video_coding_utility") {
310  visibility = [ "*" ]
311  sources = [
312    "utility/decoded_frames_history.cc",
313    "utility/decoded_frames_history.h",
314    "utility/frame_dropper.cc",
315    "utility/frame_dropper.h",
316    "utility/framerate_controller.cc",
317    "utility/framerate_controller.h",
318    "utility/ivf_file_reader.cc",
319    "utility/ivf_file_reader.h",
320    "utility/ivf_file_writer.cc",
321    "utility/ivf_file_writer.h",
322    "utility/quality_scaler.cc",
323    "utility/quality_scaler.h",
324    "utility/simulcast_rate_allocator.cc",
325    "utility/simulcast_rate_allocator.h",
326    "utility/simulcast_utility.cc",
327    "utility/simulcast_utility.h",
328    "utility/vp8_header_parser.cc",
329    "utility/vp8_header_parser.h",
330    "utility/vp9_uncompressed_header_parser.cc",
331    "utility/vp9_uncompressed_header_parser.h",
332  ]
333
334  deps = [
335    ":video_codec_interface",
336    "..:module_api",
337    "../../api:scoped_refptr",
338    "../../api/video:encoded_frame",
339    "../../api/video:encoded_image",
340    "../../api/video:video_adaptation",
341    "../../api/video:video_bitrate_allocation",
342    "../../api/video:video_bitrate_allocator",
343    "../../api/video:video_frame",
344    "../../api/video_codecs:video_codecs_api",
345    "../../common_video",
346    "../../modules/rtp_rtcp",
347    "../../rtc_base:checks",
348    "../../rtc_base:rtc_base_approved",
349    "../../rtc_base:rtc_numerics",
350    "../../rtc_base:rtc_task_queue",
351    "../../rtc_base:weak_ptr",
352    "../../rtc_base/experiments:quality_scaler_settings",
353    "../../rtc_base/experiments:quality_scaling_experiment",
354    "../../rtc_base/experiments:rate_control_settings",
355    "../../rtc_base/experiments:stable_target_rate_experiment",
356    "../../rtc_base/synchronization:sequence_checker",
357    "../../rtc_base/system:arch",
358    "../../rtc_base/system:file_wrapper",
359    "../../rtc_base/task_utils:repeating_task",
360    "../../rtc_base/task_utils:to_queued_task",
361    "../../system_wrappers:field_trial",
362    "../rtp_rtcp:rtp_rtcp_format",
363  ]
364  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
365}
366
367rtc_library("webrtc_h264") {
368  visibility = [ "*" ]
369  sources = [
370    "codecs/h264/h264.cc",
371    "codecs/h264/h264_color_space.cc",
372    "codecs/h264/h264_color_space.h",
373    "codecs/h264/h264_decoder_impl.cc",
374    "codecs/h264/h264_decoder_impl.h",
375    "codecs/h264/h264_encoder_impl.cc",
376    "codecs/h264/h264_encoder_impl.h",
377    "codecs/h264/include/h264.h",
378  ]
379
380  defines = []
381  deps = [
382    ":video_codec_interface",
383    ":video_coding_utility",
384    "../../api/video:video_frame",
385    "../../api/video:video_frame_i010",
386    "../../api/video:video_frame_i420",
387    "../../api/video:video_rtp_headers",
388    "../../api/video_codecs:video_codecs_api",
389    "../../common_video",
390    "../../media:rtc_h264_profile_id",
391    "../../media:rtc_media_base",
392    "../../rtc_base",
393    "../../rtc_base:checks",
394    "../../rtc_base/system:rtc_export",
395    "../../system_wrappers:field_trial",
396    "../../system_wrappers:metrics",
397    "//third_party/libyuv",
398  ]
399  absl_deps = [
400    "//third_party/abseil-cpp/absl/strings",
401    "//third_party/abseil-cpp/absl/types:optional",
402  ]
403
404  if (rtc_use_h264) {
405    deps += [
406      "//third_party/ffmpeg",
407      "//third_party/openh264:encoder",
408    ]
409    if (!build_with_mozilla) {
410      deps += [ "../../media:rtc_media_base" ]
411    }
412  }
413}
414
415rtc_library("webrtc_multiplex") {
416  sources = [
417    "codecs/multiplex/augmented_video_frame_buffer.cc",
418    "codecs/multiplex/include/augmented_video_frame_buffer.h",
419    "codecs/multiplex/include/multiplex_decoder_adapter.h",
420    "codecs/multiplex/include/multiplex_encoder_adapter.h",
421    "codecs/multiplex/multiplex_decoder_adapter.cc",
422    "codecs/multiplex/multiplex_encoded_image_packer.cc",
423    "codecs/multiplex/multiplex_encoded_image_packer.h",
424    "codecs/multiplex/multiplex_encoder_adapter.cc",
425  ]
426
427  deps = [
428    ":video_codec_interface",
429    ":video_coding_utility",
430    "..:module_api",
431    "../../api:fec_controller_api",
432    "../../api:scoped_refptr",
433    "../../api/video:encoded_image",
434    "../../api/video:video_frame",
435    "../../api/video:video_frame_i420",
436    "../../api/video:video_rtp_headers",
437    "../../api/video_codecs:video_codecs_api",
438    "../../common_video",
439    "../../media:rtc_media_base",
440    "../../rtc_base",
441    "../../rtc_base:checks",
442    "../../rtc_base/synchronization:mutex",
443    "../rtp_rtcp:rtp_rtcp_format",
444  ]
445}
446
447# This target includes the internal SW codec.
448rtc_library("webrtc_vp8") {
449  visibility = [ "*" ]
450  poisonous = [ "software_video_codecs" ]
451  sources = [
452    "codecs/vp8/include/vp8.h",
453    "codecs/vp8/libvpx_interface.cc",
454    "codecs/vp8/libvpx_interface.h",
455    "codecs/vp8/libvpx_vp8_decoder.cc",
456    "codecs/vp8/libvpx_vp8_decoder.h",
457    "codecs/vp8/libvpx_vp8_encoder.cc",
458    "codecs/vp8/libvpx_vp8_encoder.h",
459  ]
460
461  deps = [
462    ":codec_globals_headers",
463    ":video_codec_interface",
464    ":video_coding_utility",
465    ":webrtc_vp8_temporal_layers",
466    "..:module_api",
467    "../..:webrtc_common",
468    "../../api:fec_controller_api",
469    "../../api:scoped_refptr",
470    "../../api/video:encoded_image",
471    "../../api/video:video_frame",
472    "../../api/video:video_frame_i420",
473    "../../api/video:video_rtp_headers",
474    "../../api/video_codecs:video_codecs_api",
475    "../../api/video_codecs:vp8_temporal_layers_factory",
476    "../../common_video",
477    "../../rtc_base:checks",
478    "../../rtc_base:deprecation",
479    "../../rtc_base:rtc_base_approved",
480    "../../rtc_base:rtc_numerics",
481    "../../rtc_base/experiments:cpu_speed_experiment",
482    "../../rtc_base/experiments:field_trial_parser",
483    "../../rtc_base/experiments:rate_control_settings",
484    "../../system_wrappers:field_trial",
485    "../../system_wrappers:metrics",
486    "//third_party/libyuv",
487  ]
488  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
489  if (rtc_build_libvpx) {
490    deps += [ rtc_libvpx_dir ]
491  }
492}
493
494rtc_library("webrtc_vp8_temporal_layers") {
495  visibility = [ "*" ]
496  sources = [
497    "codecs/vp8/default_temporal_layers.cc",
498    "codecs/vp8/default_temporal_layers.h",
499    "codecs/vp8/include/temporal_layers_checker.h",
500    "codecs/vp8/screenshare_layers.cc",
501    "codecs/vp8/screenshare_layers.h",
502    "codecs/vp8/temporal_layers.h",
503    "codecs/vp8/temporal_layers_checker.cc",
504  ]
505
506  deps = [
507    ":codec_globals_headers",
508    ":video_codec_interface",
509    ":video_coding_utility",
510    "..:module_api",
511    "../..:webrtc_common",
512    "../../api:fec_controller_api",
513    "../../api/video_codecs:video_codecs_api",
514    "../../rtc_base:checks",
515    "../../rtc_base:rtc_base_approved",
516    "../../rtc_base:rtc_numerics",
517    "../../system_wrappers:field_trial",
518    "../../system_wrappers:metrics",
519  ]
520  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
521}
522
523# This target includes VP9 files that may be used for any VP9 codec, internal SW or external HW.
524rtc_library("webrtc_vp9_helpers") {
525  sources = [
526    "codecs/vp9/svc_config.cc",
527    "codecs/vp9/svc_config.h",
528    "codecs/vp9/svc_rate_allocator.cc",
529    "codecs/vp9/svc_rate_allocator.h",
530  ]
531
532  deps = [
533    ":codec_globals_headers",
534    ":video_codec_interface",
535    "../..:webrtc_common",
536    "../../api/video:video_bitrate_allocation",
537    "../../api/video:video_bitrate_allocator",
538    "../../api/video:video_codec_constants",
539    "../../api/video_codecs:video_codecs_api",
540    "../../common_video",
541    "../../rtc_base:checks",
542    "../../rtc_base:logging",
543    "../../rtc_base/experiments:stable_target_rate_experiment",
544  ]
545  absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ]
546}
547
548rtc_library("webrtc_vp9") {
549  visibility = [ "*" ]
550  poisonous = [ "software_video_codecs" ]
551  sources = [
552    "codecs/vp9/include/vp9.h",
553    "codecs/vp9/vp9.cc",
554    "codecs/vp9/vp9_frame_buffer_pool.cc",
555    "codecs/vp9/vp9_frame_buffer_pool.h",
556    "codecs/vp9/vp9_impl.cc",
557    "codecs/vp9/vp9_impl.h",
558  ]
559
560  deps = [
561    ":video_codec_interface",
562    ":video_coding_utility",
563    ":webrtc_vp9_helpers",
564    "..:module_api",
565    "../..:webrtc_common",
566    "../../api:fec_controller_api",
567    "../../api:scoped_refptr",
568    "../../api/video:video_frame",
569    "../../api/video:video_frame_i010",
570    "../../api/video:video_rtp_headers",
571    "../../api/video_codecs:video_codecs_api",
572    "../../common_video",
573    "../../media:rtc_media_base",
574    "../../media:rtc_vp9_profile",
575    "../../rtc_base",
576    "../../rtc_base:checks",
577    "../../rtc_base/experiments:rate_control_settings",
578    "../../rtc_base/synchronization:mutex",
579    "../../system_wrappers:field_trial",
580    "../rtp_rtcp:rtp_rtcp_format",
581  ]
582  absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
583  if (rtc_build_libvpx) {
584    deps += [ rtc_libvpx_dir ]
585  }
586}
587
588if (rtc_include_tests) {
589  if (is_android) {
590    rtc_library("android_codec_factory_helper") {
591      sources = [
592        "codecs/test/android_codec_factory_helper.cc",
593        "codecs/test/android_codec_factory_helper.h",
594      ]
595
596      deps = [
597        "../../api/video_codecs:video_codecs_api",
598        "../../rtc_base:checks",
599        "../../rtc_base:ignore_wundef",
600        "../../rtc_base:rtc_base_approved",
601        "../../sdk/android:native_api_base",
602        "../../sdk/android:native_api_codecs",
603        "../../sdk/android:native_api_jni",
604        "//base",
605      ]
606    }
607  }
608
609  if (is_ios || is_mac) {
610    rtc_library("objc_codec_factory_helper") {
611      sources = [
612        "codecs/test/objc_codec_factory_helper.h",
613        "codecs/test/objc_codec_factory_helper.mm",
614      ]
615
616      deps = [
617        "../../api/video:video_frame",
618        "../../api/video:video_rtp_headers",
619        "../../api/video_codecs:video_codecs_api",
620        "../../media:rtc_audio_video",
621        "../../media:rtc_media_base",
622        "../../modules:module_api",
623        "../../rtc_base:rtc_base_approved",
624        "../../sdk:native_api",
625        "../../sdk:peerconnectionfactory_base_objc",
626        "../../sdk:videocodec_objc",
627        "../../sdk:videosource_objc",
628        "../../sdk:videotoolbox_objc",
629      ]
630    }
631  }
632
633  rtc_library("encoded_video_frame_producer") {
634    testonly = true
635    sources = [
636      "codecs/test/encoded_video_frame_producer.cc",
637      "codecs/test/encoded_video_frame_producer.h",
638    ]
639    deps = [
640      ":video_codec_interface",
641      "../../api:create_frame_generator",
642      "../../api:frame_generator_api",
643      "../../api/transport/rtp:dependency_descriptor",
644      "../../api/video:encoded_image",
645      "../../api/video:video_frame",
646      "../../api/video:video_frame_type",
647      "../../api/video_codecs:video_codecs_api",
648      "../../rtc_base:checks",
649    ]
650  }
651
652  rtc_library("simulcast_test_fixture_impl") {
653    testonly = true
654    sources = [
655      "utility/simulcast_test_fixture_impl.cc",
656      "utility/simulcast_test_fixture_impl.h",
657    ]
658
659    deps = [
660      ":video_codec_interface",
661      ":video_coding",
662      ":video_coding_utility",
663      "../../:webrtc_common",
664      "../../api:mock_video_decoder",
665      "../../api:mock_video_encoder",
666      "../../api:simulcast_test_fixture_api",
667      "../../api/video:encoded_image",
668      "../../api/video:video_frame",
669      "../../api/video:video_frame_i420",
670      "../../api/video:video_rtp_headers",
671      "../../api/video_codecs:video_codecs_api",
672      "../../common_video",
673      "../../rtc_base:checks",
674      "../../rtc_base:rtc_base_approved",
675      "../../test:test_support",
676    ]
677  }
678
679  rtc_library("video_codecs_test_framework") {
680    testonly = true
681    sources = [
682      "codecs/test/video_codec_unittest.cc",
683      "codecs/test/video_codec_unittest.h",
684      "codecs/test/videoprocessor.cc",
685      "codecs/test/videoprocessor.h",
686    ]
687
688    deps = [
689      ":codec_globals_headers",
690      ":video_codec_interface",
691      ":video_coding",
692      ":video_coding_utility",
693      ":videocodec_test_stats_impl",
694      ":webrtc_vp9_helpers",
695      "..:module_api",
696      "../../api:create_frame_generator",
697      "../../api:frame_generator_api",
698      "../../api:scoped_refptr",
699      "../../api:videocodec_test_fixture_api",
700      "../../api/task_queue",
701      "../../api/video:builtin_video_bitrate_allocator_factory",
702      "../../api/video:encoded_image",
703      "../../api/video:video_bitrate_allocation",
704      "../../api/video:video_bitrate_allocator",
705      "../../api/video:video_bitrate_allocator_factory",
706      "../../api/video:video_frame",
707      "../../api/video:video_frame_i420",
708      "../../api/video:video_rtp_headers",
709      "../../api/video_codecs:video_codecs_api",
710      "../../common_video",
711      "../../rtc_base:checks",
712      "../../rtc_base:rtc_base_approved",
713      "../../rtc_base:rtc_task_queue",
714      "../../rtc_base/synchronization:mutex",
715      "../../rtc_base/synchronization:sequence_checker",
716      "../../rtc_base/task_utils:to_queued_task",
717      "../../test:test_support",
718      "../../test:video_test_common",
719      "../../test:video_test_support",
720      "../rtp_rtcp:rtp_rtcp_format",
721      "//third_party/libyuv",
722    ]
723    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
724  }
725
726  video_coding_modules_tests_resources = []
727  if (is_android) {
728    video_coding_modules_tests_resources += [
729      "../../resources/foreman_128x96.yuv",
730      "../../resources/foreman_160x120.yuv",
731      "../../resources/foreman_176x144.yuv",
732      "../../resources/foreman_240x136.yuv",
733      "../../resources/foreman_320x240.yuv",
734      "../../resources/foreman_480x272.yuv",
735    ]
736  }
737  if (!is_android) {
738    video_coding_modules_tests_resources += [
739      "../../resources/ConferenceMotion_1280_720_50.yuv",
740      "../../resources/FourPeople_1280x720_30.yuv",
741    ]
742  }
743
744  num_video_coding_modules_tests_resources = 0
745  foreach(i, video_coding_modules_tests_resources) {
746    num_video_coding_modules_tests_resources += 1
747  }
748
749  if (num_video_coding_modules_tests_resources > 0) {
750    if (is_ios || is_mac) {
751      bundle_data("video_coding_modules_tests_resources_bundle_data") {
752        testonly = true
753        sources = video_coding_modules_tests_resources
754        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
755      }
756    }
757  }
758
759  rtc_library("videocodec_test_impl") {
760    testonly = true
761    sources = [
762      "codecs/test/videocodec_test_fixture_impl.cc",
763      "codecs/test/videocodec_test_fixture_impl.h",
764    ]
765    deps = [
766      ":codec_globals_headers",
767      ":video_codec_interface",
768      ":video_codecs_test_framework",
769      ":video_coding_utility",
770      ":videocodec_test_stats_impl",
771      ":webrtc_vp9_helpers",
772      "../..:webrtc_common",
773      "../../api:array_view",
774      "../../api:videocodec_test_fixture_api",
775      "../../api/test/video:function_video_factory",
776      "../../api/video:video_bitrate_allocation",
777      "../../api/video_codecs:video_codecs_api",
778      "../../call:video_stream_api",
779      "../../common_video",
780      "../../media:rtc_audio_video",
781      "../../media:rtc_h264_profile_id",
782      "../../media:rtc_internal_video_codecs",
783      "../../media:rtc_media_base",
784      "../../rtc_base:checks",
785      "../../rtc_base:rtc_base_approved",
786      "../../rtc_base:rtc_base_tests_utils",
787      "../../rtc_base:task_queue_for_test",
788      "../../system_wrappers",
789      "../../test:fileutils",
790      "../../test:perf_test",
791      "../../test:test_support",
792      "../../test:video_test_common",
793      "../../test:video_test_support",
794    ]
795    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
796  }
797
798  rtc_library("videocodec_test_stats_impl") {
799    testonly = true
800    sources = [
801      "codecs/test/videocodec_test_stats_impl.cc",
802      "codecs/test/videocodec_test_stats_impl.h",
803    ]
804    deps = [
805      "../../api:videocodec_test_fixture_api",
806      "../../rtc_base:checks",
807      "../../rtc_base:rtc_numerics",
808      "../../rtc_base:stringutils",
809      "../../test:test_common",
810      "../rtp_rtcp:rtp_rtcp_format",
811    ]
812  }
813
814  rtc_library("video_coding_modules_tests") {
815    testonly = true
816    defines = []
817
818    sources = [
819      "codecs/h264/test/h264_impl_unittest.cc",
820      "codecs/multiplex/test/multiplex_adapter_unittest.cc",
821      "codecs/test/video_encoder_decoder_instantiation_tests.cc",
822      "codecs/test/videocodec_test_libvpx.cc",
823      "codecs/vp8/test/mock_libvpx_interface.h",
824      "codecs/vp8/test/vp8_impl_unittest.cc",
825      "codecs/vp9/test/vp9_impl_unittest.cc",
826    ]
827
828    # TODO(jianj): Fix crash on iOS and re-enable
829    if (enable_libaom && !is_ios) {
830      sources += [ "codecs/test/videocodec_test_libaom.cc" ]
831    }
832    if (rtc_use_h264) {
833      sources += [ "codecs/test/videocodec_test_openh264.cc" ]
834    }
835
836    deps = [
837      ":encoded_video_frame_producer",
838      ":video_codec_interface",
839      ":video_codecs_test_framework",
840      ":video_coding_utility",
841      ":videocodec_test_impl",
842      ":webrtc_h264",
843      ":webrtc_multiplex",
844      ":webrtc_vp8",
845      ":webrtc_vp9",
846      ":webrtc_vp9_helpers",
847      "../..:webrtc_common",
848      "../../api:create_frame_generator",
849      "../../api:create_videocodec_test_fixture_api",
850      "../../api:frame_generator_api",
851      "../../api:mock_video_codec_factory",
852      "../../api:mock_video_decoder",
853      "../../api:mock_video_encoder",
854      "../../api:scoped_refptr",
855      "../../api:videocodec_test_fixture_api",
856      "../../api/test/video:function_video_factory",
857      "../../api/video:encoded_image",
858      "../../api/video:video_frame",
859      "../../api/video:video_frame_i420",
860      "../../api/video:video_rtp_headers",
861      "../../api/video_codecs:rtc_software_fallback_wrappers",
862      "../../api/video_codecs:video_codecs_api",
863      "../../common_video",
864      "../../common_video/test:utilities",
865      "../../media:rtc_h264_profile_id",
866      "../../media:rtc_internal_video_codecs",
867      "../../media:rtc_media_base",
868      "../../media:rtc_simulcast_encoder_adapter",
869      "../../media:rtc_vp9_profile",
870      "../../rtc_base",
871      "../../test:field_trial",
872      "../../test:fileutils",
873      "../../test:test_support",
874      "../../test:video_test_common",
875      "../rtp_rtcp:rtp_rtcp_format",
876      "//third_party/libyuv",
877    ]
878    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
879
880    data = video_coding_modules_tests_resources
881
882    if (is_android) {
883      sources += [ "codecs/test/videocodec_test_mediacodec.cc" ]
884
885      deps += [ ":android_codec_factory_helper" ]
886    }
887
888    if (is_ios || is_mac) {
889      sources += [ "codecs/test/videocodec_test_videotoolbox.cc" ]
890
891      deps += [ ":objc_codec_factory_helper" ]
892
893      if (num_video_coding_modules_tests_resources > 0) {
894        deps += [ ":video_coding_modules_tests_resources_bundle_data" ]
895      }
896    }
897
898    if (rtc_build_libvpx) {
899      deps += [ rtc_libvpx_dir ]
900    }
901  }
902
903  rtc_library("video_coding_unittests") {
904    testonly = true
905
906    sources = [
907      "chain_diff_calculator_unittest.cc",
908      "codecs/test/videocodec_test_fixture_config_unittest.cc",
909      "codecs/test/videocodec_test_stats_impl_unittest.cc",
910      "codecs/test/videoprocessor_unittest.cc",
911      "codecs/vp8/default_temporal_layers_unittest.cc",
912      "codecs/vp8/libvpx_vp8_simulcast_test.cc",
913      "codecs/vp8/screenshare_layers_unittest.cc",
914      "codecs/vp9/svc_config_unittest.cc",
915      "codecs/vp9/svc_rate_allocator_unittest.cc",
916      "decoding_state_unittest.cc",
917      "fec_controller_unittest.cc",
918      "frame_buffer2_unittest.cc",
919      "frame_dependencies_calculator_unittest.cc",
920      "generic_decoder_unittest.cc",
921      "h264_sprop_parameter_sets_unittest.cc",
922      "h264_sps_pps_tracker_unittest.cc",
923      "histogram_unittest.cc",
924      "jitter_buffer_unittest.cc",
925      "jitter_estimator_tests.cc",
926      "loss_notification_controller_unittest.cc",
927      "nack_module2_unittest.cc",
928      "nack_module_unittest.cc",
929      "packet_buffer_unittest.cc",
930      "receiver_unittest.cc",
931      "rtp_frame_reference_finder_unittest.cc",
932      "session_info_unittest.cc",
933      "test/stream_generator.cc",
934      "test/stream_generator.h",
935      "timing_unittest.cc",
936      "unique_timestamp_counter_unittest.cc",
937      "utility/decoded_frames_history_unittest.cc",
938      "utility/frame_dropper_unittest.cc",
939      "utility/framerate_controller_unittest.cc",
940      "utility/ivf_file_reader_unittest.cc",
941      "utility/ivf_file_writer_unittest.cc",
942      "utility/quality_scaler_unittest.cc",
943      "utility/simulcast_rate_allocator_unittest.cc",
944      "video_codec_initializer_unittest.cc",
945      "video_receiver_unittest.cc",
946    ]
947    if (rtc_use_h264) {
948      sources += [
949        "codecs/h264/h264_encoder_impl_unittest.cc",
950        "codecs/h264/h264_simulcast_unittest.cc",
951      ]
952    }
953
954    deps = [
955      ":chain_diff_calculator",
956      ":codec_globals_headers",
957      ":encoded_frame",
958      ":frame_dependencies_calculator",
959      ":nack_module",
960      ":simulcast_test_fixture_impl",
961      ":video_codec_interface",
962      ":video_codecs_test_framework",
963      ":video_coding",
964      ":video_coding_legacy",
965      ":video_coding_utility",
966      ":videocodec_test_impl",
967      ":videocodec_test_stats_impl",
968      ":webrtc_h264",
969      ":webrtc_vp8",
970      ":webrtc_vp8_temporal_layers",
971      ":webrtc_vp9",
972      ":webrtc_vp9_helpers",
973      "..:module_api",
974      "..:module_fec_api",
975      "../../api:array_view",
976      "../../api:create_simulcast_test_fixture_api",
977      "../../api:fec_controller_api",
978      "../../api:mock_fec_controller_override",
979      "../../api:mock_video_decoder",
980      "../../api:mock_video_encoder",
981      "../../api:scoped_refptr",
982      "../../api:simulcast_test_fixture_api",
983      "../../api:videocodec_test_fixture_api",
984      "../../api/task_queue:default_task_queue_factory",
985      "../../api/test/video:function_video_factory",
986      "../../api/video:builtin_video_bitrate_allocator_factory",
987      "../../api/video:video_adaptation",
988      "../../api/video:video_bitrate_allocation",
989      "../../api/video:video_bitrate_allocator",
990      "../../api/video:video_bitrate_allocator_factory",
991      "../../api/video:video_frame",
992      "../../api/video:video_frame_i420",
993      "../../api/video:video_frame_type",
994      "../../api/video:video_rtp_headers",
995      "../../api/video_codecs:video_codecs_api",
996      "../../api/video_codecs:vp8_temporal_layers_factory",
997      "../../common_video",
998      "../../common_video/generic_frame_descriptor",
999      "../../common_video/test:utilities",
1000      "../../media:rtc_media_base",
1001      "../../rtc_base",
1002      "../../rtc_base:checks",
1003      "../../rtc_base:rtc_base_approved",
1004      "../../rtc_base:rtc_base_tests_utils",
1005      "../../rtc_base:rtc_numerics",
1006      "../../rtc_base:rtc_task_queue",
1007      "../../rtc_base:task_queue_for_test",
1008      "../../rtc_base/experiments:jitter_upper_bound_experiment",
1009      "../../rtc_base/synchronization:mutex",
1010      "../../system_wrappers",
1011      "../../system_wrappers:field_trial",
1012      "../../system_wrappers:metrics",
1013      "../../test:fake_video_codecs",
1014      "../../test:field_trial",
1015      "../../test:fileutils",
1016      "../../test:test_common",
1017      "../../test:test_support",
1018      "../../test:video_test_common",
1019      "../../test:video_test_support",
1020      "../../test/time_controller:time_controller",
1021      "../rtp_rtcp:rtp_rtcp_format",
1022      "../rtp_rtcp:rtp_video_header",
1023      "codecs/av1:scalability_structure_tests",
1024      "codecs/av1:video_coding_codecs_av1_tests",
1025      "deprecated:nack_module",
1026    ]
1027    absl_deps = [
1028      "//third_party/abseil-cpp/absl/memory",
1029      "//third_party/abseil-cpp/absl/types:optional",
1030      "//third_party/abseil-cpp/absl/types:variant",
1031    ]
1032    if (rtc_build_libvpx) {
1033      deps += [ rtc_libvpx_dir ]
1034    }
1035  }
1036}
1037