xref: /aosp_15_r20/external/webrtc/video/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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("../webrtc.gni")
10
11rtc_library("video_stream_encoder_interface") {
12  sources = [
13    "video_stream_encoder_interface.h",
14    "video_stream_encoder_observer.h",
15  ]
16  deps = [
17    "../api:fec_controller_api",
18    "../api:rtc_error",
19    "../api:rtp_parameters",
20    "../api:rtp_sender_interface",
21    "../api:scoped_refptr",
22    "../api/adaptation:resource_adaptation_api",
23    "../api/units:data_rate",
24    "../api/video:video_adaptation",
25    "../api/video:video_bitrate_allocation",
26    "../api/video:video_bitrate_allocator",
27    "../api/video:video_codec_constants",
28    "../api/video:video_frame",
29    "../api/video:video_layers_allocation",
30    "../api/video_codecs:video_codecs_api",
31    "../video/config:encoder_config",
32  ]
33  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
34}
35
36rtc_library("video") {
37  sources = [
38    "buffered_frame_decryptor.cc",
39    "buffered_frame_decryptor.h",
40    "call_stats2.cc",
41    "call_stats2.h",
42    "encoder_rtcp_feedback.cc",
43    "encoder_rtcp_feedback.h",
44    "quality_limitation_reason_tracker.cc",
45    "quality_limitation_reason_tracker.h",
46    "quality_threshold.cc",
47    "quality_threshold.h",
48    "receive_statistics_proxy2.cc",
49    "receive_statistics_proxy2.h",
50    "report_block_stats.cc",
51    "report_block_stats.h",
52    "rtp_streams_synchronizer2.cc",
53    "rtp_streams_synchronizer2.h",
54    "rtp_video_stream_receiver2.cc",
55    "rtp_video_stream_receiver2.h",
56    "rtp_video_stream_receiver_frame_transformer_delegate.cc",
57    "rtp_video_stream_receiver_frame_transformer_delegate.h",
58    "send_delay_stats.cc",
59    "send_delay_stats.h",
60    "send_statistics_proxy.cc",
61    "send_statistics_proxy.h",
62    "stats_counter.cc",
63    "stats_counter.h",
64    "stream_synchronization.cc",
65    "stream_synchronization.h",
66    "transport_adapter.cc",
67    "transport_adapter.h",
68    "video_quality_observer2.cc",
69    "video_quality_observer2.h",
70    "video_receive_stream2.cc",
71    "video_receive_stream2.h",
72    "video_send_stream.cc",
73    "video_send_stream.h",
74    "video_send_stream_impl.cc",
75    "video_send_stream_impl.h",
76    "video_stream_decoder2.cc",
77    "video_stream_decoder2.h",
78  ]
79
80  deps = [
81    ":frame_cadence_adapter",
82    ":frame_dumping_decoder",
83    ":task_queue_frame_decode_scheduler",
84    ":unique_timestamp_counter",
85    ":video_stream_buffer_controller",
86    ":video_stream_encoder_impl",
87    ":video_stream_encoder_interface",
88    "../api:array_view",
89    "../api:fec_controller_api",
90    "../api:field_trials_view",
91    "../api:frame_transformer_interface",
92    "../api:rtp_parameters",
93    "../api:scoped_refptr",
94    "../api:sequence_checker",
95    "../api:transport_api",
96    "../api/crypto:frame_decryptor_interface",
97    "../api/crypto:options",
98    "../api/task_queue",
99    "../api/task_queue:pending_task_safety_flag",
100    "../api/transport:field_trial_based_config",
101    "../api/units:data_rate",
102    "../api/units:frequency",
103    "../api/units:time_delta",
104    "../api/units:timestamp",
105    "../api/video:encoded_image",
106    "../api/video:recordable_encoded_frame",
107    "../api/video:video_bitrate_allocation",
108    "../api/video:video_bitrate_allocator",
109    "../api/video:video_codec_constants",
110    "../api/video:video_frame",
111    "../api/video:video_rtp_headers",
112    "../api/video:video_stream_encoder",
113    "../api/video_codecs:video_codecs_api",
114    "../call:bitrate_allocator",
115    "../call:call_interfaces",
116    "../call:rtp_interfaces",
117    "../call:rtp_receiver",
118    "../call:rtp_sender",
119    "../call:video_stream_api",
120    "../common_video",
121    "../modules:module_api",
122    "../modules:module_api_public",
123    "../modules/pacing",
124    "../modules/remote_bitrate_estimator",
125    "../modules/rtp_rtcp",
126    "../modules/rtp_rtcp:rtp_rtcp_format",
127    "../modules/rtp_rtcp:rtp_video_header",
128    "../modules/utility:utility",
129    "../modules/video_coding",
130    "../modules/video_coding:nack_requester",
131    "../modules/video_coding:packet_buffer",
132    "../modules/video_coding:video_codec_interface",
133    "../modules/video_coding:video_coding_utility",
134    "../modules/video_coding:webrtc_vp9_helpers",
135    "../modules/video_coding/timing:timing_module",
136    "../rtc_base:checks",
137    "../rtc_base:event_tracer",
138    "../rtc_base:histogram_percentile_counter",
139    "../rtc_base:logging",
140    "../rtc_base:macromagic",
141    "../rtc_base:mod_ops",
142    "../rtc_base:moving_max_counter",
143    "../rtc_base:platform_thread",
144    "../rtc_base:rate_statistics",
145    "../rtc_base:rate_tracker",
146    "../rtc_base:rtc_event",
147    "../rtc_base:rtc_numerics",
148    "../rtc_base:rtc_task_queue",
149    "../rtc_base:safe_conversions",
150    "../rtc_base:sample_counter",
151    "../rtc_base:stringutils",
152    "../rtc_base:threading",
153    "../rtc_base:timeutils",
154    "../rtc_base/experiments:alr_experiment",
155    "../rtc_base/experiments:field_trial_parser",
156    "../rtc_base/experiments:keyframe_interval_settings_experiment",
157    "../rtc_base/experiments:min_video_bitrate_experiment",
158    "../rtc_base/experiments:normalize_simulcast_size_experiment",
159    "../rtc_base/experiments:rate_control_settings",
160    "../rtc_base/synchronization:mutex",
161    "../rtc_base/system:no_unique_address",
162    "../rtc_base/task_utils:repeating_task",
163    "../system_wrappers",
164    "../system_wrappers:field_trial",
165    "../system_wrappers:metrics",
166    "../video/config:encoder_config",
167    "adaptation:video_adaptation",
168    "render:incoming_video_stream",
169  ]
170  absl_deps = [
171    "//third_party/abseil-cpp/absl/algorithm:container",
172    "//third_party/abseil-cpp/absl/memory",
173    "//third_party/abseil-cpp/absl/strings",
174    "//third_party/abseil-cpp/absl/types:optional",
175  ]
176
177  if (!build_with_mozilla) {
178    deps += [ "../media:rtc_media_base" ]
179  }
180}
181
182rtc_library("video_stream_decoder_impl") {
183  visibility = [ "*" ]
184
185  sources = [
186    "video_stream_decoder_impl.cc",
187    "video_stream_decoder_impl.h",
188  ]
189
190  deps = [
191    "../api:field_trials_view",
192    "../api:sequence_checker",
193    "../api/task_queue",
194    "../api/transport:field_trial_based_config",
195    "../api/video:encoded_frame",
196    "../api/video:video_frame",
197    "../api/video:video_rtp_headers",
198    "../api/video:video_stream_decoder",
199    "../api/video_codecs:video_codecs_api",
200    "../modules/video_coding",
201    "../modules/video_coding:frame_buffer2",
202    "../modules/video_coding/timing:timing_module",
203    "../rtc_base:logging",
204    "../rtc_base:mod_ops",
205    "../rtc_base:platform_thread",
206    "../rtc_base:rtc_task_queue",
207    "../rtc_base:timeutils",
208    "../rtc_base/memory:always_valid_pointer",
209    "../rtc_base/synchronization:mutex",
210    "../system_wrappers",
211  ]
212  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
213}
214
215rtc_library("frame_dumping_decoder") {
216  visibility = [ "*" ]
217
218  sources = [
219    "frame_dumping_decoder.cc",
220    "frame_dumping_decoder.h",
221  ]
222
223  deps = [
224    "../api/video:encoded_frame",
225    "../api/video:encoded_image",
226    "../api/video_codecs:video_codecs_api",
227    "../modules/video_coding",
228    "../modules/video_coding:video_codec_interface",
229    "../modules/video_coding:video_coding_utility",
230    "../rtc_base/system:file_wrapper",
231  ]
232}
233
234rtc_library("frame_cadence_adapter") {
235  visibility = [ "*" ]
236  sources = [
237    "frame_cadence_adapter.cc",
238    "frame_cadence_adapter.h",
239  ]
240
241  deps = [
242    "../api:field_trials_view",
243    "../api:sequence_checker",
244    "../api/task_queue",
245    "../api/task_queue:pending_task_safety_flag",
246    "../api/units:time_delta",
247    "../api/units:timestamp",
248    "../api/video:video_frame",
249    "../rtc_base:checks",
250    "../rtc_base:logging",
251    "../rtc_base:macromagic",
252    "../rtc_base:race_checker",
253    "../rtc_base:rate_statistics",
254    "../rtc_base:timeutils",
255    "../rtc_base/synchronization:mutex",
256    "../rtc_base/system:no_unique_address",
257    "../rtc_base/task_utils:repeating_task",
258    "../system_wrappers",
259    "../system_wrappers:field_trial",
260    "../system_wrappers:metrics",
261  ]
262  absl_deps = [
263    "//third_party/abseil-cpp/absl/algorithm:container",
264    "//third_party/abseil-cpp/absl/base:core_headers",
265  ]
266}
267
268rtc_library("video_stream_buffer_controller") {
269  sources = [
270    "video_stream_buffer_controller.cc",
271    "video_stream_buffer_controller.h",
272  ]
273  deps = [
274    ":decode_synchronizer",
275    ":frame_decode_scheduler",
276    ":frame_decode_timing",
277    ":task_queue_frame_decode_scheduler",
278    ":video_receive_stream_timeout_tracker",
279    "../api:field_trials_view",
280    "../api:sequence_checker",
281    "../api/metronome",
282    "../api/task_queue",
283    "../api/units:data_size",
284    "../api/video:encoded_frame",
285    "../api/video:frame_buffer",
286    "../api/video:video_rtp_headers",
287    "../modules/video_coding",
288    "../modules/video_coding:frame_helpers",
289    "../modules/video_coding:video_codec_interface",
290    "../modules/video_coding/timing:inter_frame_delay",
291    "../modules/video_coding/timing:jitter_estimator",
292    "../modules/video_coding/timing:timing_module",
293    "../rtc_base:checks",
294    "../rtc_base:logging",
295    "../rtc_base:macromagic",
296    "../rtc_base/experiments:rtt_mult_experiment",
297    "../system_wrappers",
298    "../system_wrappers:field_trial",
299  ]
300  absl_deps = [
301    "//third_party/abseil-cpp/absl/base:core_headers",
302    "//third_party/abseil-cpp/absl/functional:bind_front",
303    "//third_party/abseil-cpp/absl/types:optional",
304  ]
305}
306
307rtc_source_set("frame_decode_scheduler") {
308  sources = [ "frame_decode_scheduler.h" ]
309  deps = [
310    ":frame_decode_timing",
311    "../api/units:timestamp",
312  ]
313  absl_deps = [
314    "//third_party/abseil-cpp/absl/functional:any_invocable",
315    "//third_party/abseil-cpp/absl/types:optional",
316  ]
317}
318
319rtc_library("task_queue_frame_decode_scheduler") {
320  sources = [
321    "task_queue_frame_decode_scheduler.cc",
322    "task_queue_frame_decode_scheduler.h",
323  ]
324  deps = [
325    ":frame_decode_scheduler",
326    ":frame_decode_timing",
327    "../api:sequence_checker",
328    "../api/task_queue",
329    "../api/task_queue:pending_task_safety_flag",
330    "../api/units:timestamp",
331    "../rtc_base:checks",
332    "../system_wrappers",
333  ]
334  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
335}
336
337rtc_library("frame_decode_timing") {
338  sources = [
339    "frame_decode_timing.cc",
340    "frame_decode_timing.h",
341  ]
342  deps = [
343    "../api/task_queue",
344    "../api/task_queue:pending_task_safety_flag",
345    "../api/units:time_delta",
346    "../modules/video_coding/timing:timing_module",
347    "../rtc_base:logging",
348    "../system_wrappers",
349  ]
350  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
351}
352
353rtc_library("video_receive_stream_timeout_tracker") {
354  sources = [
355    "video_receive_stream_timeout_tracker.cc",
356    "video_receive_stream_timeout_tracker.h",
357  ]
358  deps = [
359    "../api/task_queue",
360    "../api/units:time_delta",
361    "../api/units:timestamp",
362    "../rtc_base:logging",
363    "../rtc_base/task_utils:repeating_task",
364    "../system_wrappers",
365  ]
366}
367
368rtc_library("decode_synchronizer") {
369  sources = [
370    "decode_synchronizer.cc",
371    "decode_synchronizer.h",
372  ]
373  deps = [
374    ":frame_decode_scheduler",
375    ":frame_decode_timing",
376    "../api:sequence_checker",
377    "../api/metronome",
378    "../api/task_queue",
379    "../api/units:time_delta",
380    "../api/units:timestamp",
381    "../rtc_base:checks",
382    "../rtc_base:logging",
383    "../rtc_base:macromagic",
384  ]
385  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
386}
387
388rtc_library("video_stream_encoder_impl") {
389  visibility = [ "*" ]
390
391  # visibility = [ "../api/video:video_stream_encoder_create" ]
392  sources = [
393    "alignment_adjuster.cc",
394    "alignment_adjuster.h",
395    "encoder_bitrate_adjuster.cc",
396    "encoder_bitrate_adjuster.h",
397    "encoder_overshoot_detector.cc",
398    "encoder_overshoot_detector.h",
399    "frame_encode_metadata_writer.cc",
400    "frame_encode_metadata_writer.h",
401    "video_source_sink_controller.cc",
402    "video_source_sink_controller.h",
403    "video_stream_encoder.cc",
404    "video_stream_encoder.h",
405  ]
406
407  deps = [
408    ":frame_cadence_adapter",
409    ":video_stream_encoder_interface",
410    "../api:field_trials_view",
411    "../api:rtp_parameters",
412    "../api:rtp_sender_interface",
413    "../api:sequence_checker",
414    "../api/adaptation:resource_adaptation_api",
415    "../api/task_queue:pending_task_safety_flag",
416    "../api/task_queue:task_queue",
417    "../api/units:data_rate",
418    "../api/video:encoded_image",
419    "../api/video:render_resolution",
420    "../api/video:video_adaptation",
421    "../api/video:video_bitrate_allocation",
422    "../api/video:video_bitrate_allocator",
423    "../api/video:video_bitrate_allocator_factory",
424    "../api/video:video_codec_constants",
425    "../api/video:video_frame",
426    "../api/video:video_layers_allocation",
427    "../api/video:video_rtp_headers",
428    "../api/video:video_stream_encoder",
429    "../api/video_codecs:video_codecs_api",
430    "../call/adaptation:resource_adaptation",
431    "../common_video",
432    "../media:rtc_media_base",
433    "../modules:module_api_public",
434    "../modules/video_coding",
435    "../modules/video_coding:video_codec_interface",
436    "../modules/video_coding:video_coding_utility",
437    "../modules/video_coding:webrtc_vp9_helpers",
438    "../modules/video_coding/svc:scalability_structures",
439    "../modules/video_coding/svc:svc_rate_allocator",
440    "../rtc_base:checks",
441    "../rtc_base:criticalsection",
442    "../rtc_base:event_tracer",
443    "../rtc_base:logging",
444    "../rtc_base:macromagic",
445    "../rtc_base:race_checker",
446    "../rtc_base:rate_statistics",
447    "../rtc_base:refcount",
448    "../rtc_base:rtc_event",
449    "../rtc_base:rtc_numerics",
450    "../rtc_base:rtc_task_queue",
451    "../rtc_base:safe_conversions",
452    "../rtc_base:stringutils",
453    "../rtc_base:timeutils",
454    "../rtc_base/experiments:alr_experiment",
455    "../rtc_base/experiments:balanced_degradation_settings",
456    "../rtc_base/experiments:encoder_info_settings",
457    "../rtc_base/experiments:field_trial_parser",
458    "../rtc_base/experiments:quality_rampup_experiment",
459    "../rtc_base/experiments:quality_scaler_settings",
460    "../rtc_base/experiments:quality_scaling_experiment",
461    "../rtc_base/experiments:rate_control_settings",
462    "../rtc_base/synchronization:mutex",
463    "../rtc_base/system:no_unique_address",
464    "../rtc_base/task_utils:repeating_task",
465    "../system_wrappers",
466    "../system_wrappers:field_trial",
467    "../system_wrappers:metrics",
468    "adaptation:video_adaptation",
469    "config:encoder_config",
470    "config:streams_config",
471  ]
472  absl_deps = [
473    "//third_party/abseil-cpp/absl/algorithm:container",
474    "//third_party/abseil-cpp/absl/base:core_headers",
475    "//third_party/abseil-cpp/absl/cleanup",
476    "//third_party/abseil-cpp/absl/container:inlined_vector",
477    "//third_party/abseil-cpp/absl/types:optional",
478  ]
479}
480
481rtc_library("unique_timestamp_counter") {
482  sources = [
483    "unique_timestamp_counter.cc",
484    "unique_timestamp_counter.h",
485  ]
486}
487
488if (rtc_include_tests) {
489  rtc_library("video_mocks") {
490    testonly = true
491    sources = [ "test/mock_video_stream_encoder.h" ]
492    deps = [
493      ":video_stream_encoder_interface",
494      "../api/video:video_stream_encoder",
495      "../test:test_support",
496    ]
497  }
498  if (!build_with_chromium) {
499    rtc_library("video_quality_test") {
500      testonly = true
501
502      # Only targets in this file and api/ can depend on this.
503      visibility = [
504        ":*",
505        "../api:create_video_quality_test_fixture_api",
506      ]
507      sources = [
508        "video_analyzer.cc",
509        "video_analyzer.h",
510        "video_quality_test.cc",
511        "video_quality_test.h",
512      ]
513      deps = [
514        ":frame_dumping_decoder",
515        "../api:create_frame_generator",
516        "../api:fec_controller_api",
517        "../api:frame_generator_api",
518        "../api:libjingle_peerconnection_api",
519        "../api:rtc_event_log_output_file",
520        "../api:test_dependency_factory",
521        "../api:video_quality_test_fixture_api",
522        "../api/numerics",
523        "../api/rtc_event_log:rtc_event_log_factory",
524        "../api/task_queue",
525        "../api/task_queue:default_task_queue_factory",
526        "../api/test/metrics:global_metrics_logger_and_exporter",
527        "../api/test/metrics:metric",
528        "../api/video:builtin_video_bitrate_allocator_factory",
529        "../api/video:video_bitrate_allocator_factory",
530        "../api/video:video_frame",
531        "../api/video:video_rtp_headers",
532        "../api/video_codecs:video_codecs_api",
533        "../call:fake_network",
534        "../call:simulated_network",
535        "../common_video",
536        "../media:rtc_audio_video",
537        "../media:rtc_encoder_simulcast_proxy",
538        "../media:rtc_internal_video_codecs",
539        "../media:rtc_media_base",
540        "../modules/audio_device:audio_device_api",
541        "../modules/audio_device:audio_device_module_from_input_and_output",
542        "../modules/audio_device:windows_core_audio_utility",
543        "../modules/audio_mixer:audio_mixer_impl",
544        "../modules/rtp_rtcp",
545        "../modules/rtp_rtcp:rtp_rtcp_format",
546        "../modules/video_coding",
547        "../modules/video_coding:video_coding_utility",
548        "../modules/video_coding:webrtc_h264",
549        "../modules/video_coding:webrtc_multiplex",
550        "../modules/video_coding:webrtc_vp8",
551        "../modules/video_coding:webrtc_vp9",
552        "../rtc_base:macromagic",
553        "../rtc_base:platform_thread",
554        "../rtc_base:rtc_base_tests_utils",
555        "../rtc_base:rtc_event",
556        "../rtc_base:rtc_numerics",
557        "../rtc_base:stringutils",
558        "../rtc_base:task_queue_for_test",
559        "../rtc_base:timeutils",
560        "../rtc_base/synchronization:mutex",
561        "../rtc_base/task_utils:repeating_task",
562        "../system_wrappers",
563        "../test:fake_video_codecs",
564        "../test:fileutils",
565        "../test:platform_video_capturer",
566        "../test:rtp_test_utils",
567        "../test:test_common",
568        "../test:test_renderer",
569        "../test:test_support",
570        "../test:test_support_test_artifacts",
571        "../test:video_test_common",
572        "../test:video_test_support",
573        "config:streams_config",
574      ]
575      absl_deps = [
576        "//third_party/abseil-cpp/absl/algorithm:container",
577        "//third_party/abseil-cpp/absl/flags:flag",
578        "//third_party/abseil-cpp/absl/flags:parse",
579        "//third_party/abseil-cpp/absl/strings",
580      ]
581
582      if (is_mac || is_ios) {
583        deps += [ "../test:video_test_mac" ]
584      }
585      if (is_win) {
586        deps += [ "../rtc_base/win:scoped_com_initializer" ]
587      }
588    }
589
590    rtc_library("video_full_stack_tests") {
591      testonly = true
592
593      sources = [ "full_stack_tests.cc" ]
594      deps = [
595        ":video_quality_test",
596        "../api:simulated_network_api",
597        "../api:test_dependency_factory",
598        "../api:video_quality_test_fixture_api",
599        "../api/video_codecs:video_codecs_api",
600        "../modules/pacing",
601        "../modules/video_coding:webrtc_vp9",
602        "../rtc_base/experiments:alr_experiment",
603        "../system_wrappers:field_trial",
604        "../test:field_trial",
605        "../test:fileutils",
606        "../test:test_common",
607        "../test:test_support",
608        "../video/config:encoder_config",
609        "//testing/gtest",
610      ]
611      absl_deps = [
612        "//third_party/abseil-cpp/absl/flags:flag",
613        "//third_party/abseil-cpp/absl/flags:parse",
614        "//third_party/abseil-cpp/absl/types:optional",
615      ]
616    }
617
618    rtc_library("video_pc_full_stack_tests") {
619      testonly = true
620
621      sources = [ "pc_full_stack_tests.cc" ]
622      deps = [
623        "../api:create_network_emulation_manager",
624        "../api:create_peer_connection_quality_test_frame_generator",
625        "../api:create_peerconnection_quality_test_fixture",
626        "../api:frame_generator_api",
627        "../api:media_stream_interface",
628        "../api:network_emulation_manager_api",
629        "../api:peer_connection_quality_test_fixture_api",
630        "../api:simulated_network_api",
631        "../api:time_controller",
632        "../api/test/metrics:global_metrics_logger_and_exporter",
633        "../api/test/pclf:media_configuration",
634        "../api/test/pclf:media_quality_test_params",
635        "../api/test/pclf:peer_configurer",
636        "../api/video_codecs:video_codecs_api",
637        "../call:simulated_network",
638        "../modules/video_coding:webrtc_vp9",
639        "../system_wrappers:field_trial",
640        "../test:field_trial",
641        "../test:fileutils",
642        "../test:test_support",
643        "../test/pc/e2e:network_quality_metrics_reporter",
644      ]
645    }
646
647    rtc_library("video_loopback_lib") {
648      testonly = true
649      sources = [
650        "video_loopback.cc",
651        "video_loopback.h",
652      ]
653      deps = [
654        ":video_quality_test",
655        "../api:libjingle_peerconnection_api",
656        "../api:simulated_network_api",
657        "../api:video_quality_test_fixture_api",
658        "../api/transport:bitrate_settings",
659        "../api/video_codecs:video_codecs_api",
660        "../rtc_base:checks",
661        "../rtc_base:logging",
662        "../system_wrappers:field_trial",
663        "../test:field_trial",
664        "../test:run_test",
665        "../test:run_test_interface",
666        "../test:test_common",
667        "../test:test_renderer",
668        "../test:test_support",
669        "//testing/gtest",
670      ]
671      absl_deps = [
672        "//third_party/abseil-cpp/absl/flags:flag",
673        "//third_party/abseil-cpp/absl/flags:parse",
674        "//third_party/abseil-cpp/absl/types:optional",
675      ]
676    }
677
678    if (is_mac) {
679      mac_app_bundle("video_loopback") {
680        testonly = true
681        sources = [ "video_loopback_main.mm" ]
682        info_plist = "../test/mac/Info.plist"
683        deps = [ ":video_loopback_lib" ]
684      }
685    } else {
686      rtc_executable("video_loopback") {
687        testonly = true
688        sources = [ "video_loopback_main.cc" ]
689        deps = [ ":video_loopback_lib" ]
690      }
691    }
692
693    rtc_executable("screenshare_loopback") {
694      testonly = true
695      sources = [ "screenshare_loopback.cc" ]
696
697      deps = [
698        ":video_quality_test",
699        "../api:libjingle_peerconnection_api",
700        "../api:simulated_network_api",
701        "../api:video_quality_test_fixture_api",
702        "../api/transport:bitrate_settings",
703        "../api/video_codecs:video_codecs_api",
704        "../rtc_base:checks",
705        "../rtc_base:logging",
706        "../rtc_base:stringutils",
707        "../system_wrappers:field_trial",
708        "../test:field_trial",
709        "../test:run_test",
710        "../test:run_test_interface",
711        "../test:test_common",
712        "../test:test_renderer",
713        "../test:test_support",
714        "//third_party/abseil-cpp/absl/flags:flag",
715        "//third_party/abseil-cpp/absl/flags:parse",
716        "//third_party/abseil-cpp/absl/types:optional",
717      ]
718    }
719
720    rtc_executable("sv_loopback") {
721      testonly = true
722      sources = [ "sv_loopback.cc" ]
723      deps = [
724        ":video_quality_test",
725        "../api:libjingle_peerconnection_api",
726        "../api:simulated_network_api",
727        "../api:video_quality_test_fixture_api",
728        "../api/transport:bitrate_settings",
729        "../api/video_codecs:video_codecs_api",
730        "../rtc_base:checks",
731        "../rtc_base:logging",
732        "../rtc_base:stringutils",
733        "../system_wrappers:field_trial",
734        "../test:field_trial",
735        "../test:run_test",
736        "../test:run_test_interface",
737        "../test:test_common",
738        "../test:test_renderer",
739        "../test:test_support",
740        "//testing/gtest",
741        "//third_party/abseil-cpp/absl/flags:flag",
742        "//third_party/abseil-cpp/absl/flags:parse",
743        "//third_party/abseil-cpp/absl/types:optional",
744      ]
745    }
746  }
747
748  # TODO(pbos): Rename test suite.
749  rtc_library("video_tests") {
750    testonly = true
751
752    defines = []
753    sources = [
754      "alignment_adjuster_unittest.cc",
755      "buffered_frame_decryptor_unittest.cc",
756      "call_stats2_unittest.cc",
757      "cpu_scaling_tests.cc",
758      "decode_synchronizer_unittest.cc",
759      "encoder_bitrate_adjuster_unittest.cc",
760      "encoder_overshoot_detector_unittest.cc",
761      "encoder_rtcp_feedback_unittest.cc",
762      "end_to_end_tests/bandwidth_tests.cc",
763      "end_to_end_tests/call_operation_tests.cc",
764      "end_to_end_tests/codec_tests.cc",
765      "end_to_end_tests/config_tests.cc",
766      "end_to_end_tests/extended_reports_tests.cc",
767      "end_to_end_tests/fec_tests.cc",
768      "end_to_end_tests/frame_encryption_tests.cc",
769      "end_to_end_tests/histogram_tests.cc",
770      "end_to_end_tests/multi_codec_receive_tests.cc",
771      "end_to_end_tests/multi_stream_tester.cc",
772      "end_to_end_tests/multi_stream_tester.h",
773      "end_to_end_tests/multi_stream_tests.cc",
774      "end_to_end_tests/network_state_tests.cc",
775      "end_to_end_tests/resolution_bitrate_limits_tests.cc",
776      "end_to_end_tests/retransmission_tests.cc",
777      "end_to_end_tests/rtp_rtcp_tests.cc",
778      "end_to_end_tests/ssrc_tests.cc",
779      "end_to_end_tests/stats_tests.cc",
780      "end_to_end_tests/transport_feedback_tests.cc",
781      "frame_cadence_adapter_unittest.cc",
782      "frame_decode_timing_unittest.cc",
783      "frame_encode_metadata_writer_unittest.cc",
784      "picture_id_tests.cc",
785      "quality_limitation_reason_tracker_unittest.cc",
786      "quality_scaling_tests.cc",
787      "quality_threshold_unittest.cc",
788      "receive_statistics_proxy2_unittest.cc",
789      "report_block_stats_unittest.cc",
790      "rtp_video_stream_receiver2_unittest.cc",
791      "rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc",
792      "send_delay_stats_unittest.cc",
793      "send_statistics_proxy_unittest.cc",
794      "stats_counter_unittest.cc",
795      "stream_synchronization_unittest.cc",
796      "task_queue_frame_decode_scheduler_unittest.cc",
797      "unique_timestamp_counter_unittest.cc",
798      "video_receive_stream2_unittest.cc",
799      "video_receive_stream_timeout_tracker_unittest.cc",
800      "video_send_stream_impl_unittest.cc",
801      "video_send_stream_tests.cc",
802      "video_source_sink_controller_unittest.cc",
803      "video_stream_buffer_controller_unittest.cc",
804      "video_stream_decoder_impl_unittest.cc",
805      "video_stream_encoder_unittest.cc",
806    ]
807    deps = [
808      ":decode_synchronizer",
809      ":frame_cadence_adapter",
810      ":frame_decode_scheduler",
811      ":frame_decode_timing",
812      ":task_queue_frame_decode_scheduler",
813      ":unique_timestamp_counter",
814      ":video",
815      ":video_mocks",
816      ":video_receive_stream_timeout_tracker",
817      ":video_stream_buffer_controller",
818      ":video_stream_decoder_impl",
819      ":video_stream_encoder_impl",
820      ":video_stream_encoder_interface",
821      "../api:create_frame_generator",
822      "../api:fake_frame_decryptor",
823      "../api:fake_frame_encryptor",
824      "../api:field_trials_view",
825      "../api:frame_generator_api",
826      "../api:libjingle_peerconnection_api",
827      "../api:mock_fec_controller_override",
828      "../api:mock_frame_decryptor",
829      "../api:mock_video_codec_factory",
830      "../api:mock_video_decoder",
831      "../api:mock_video_encoder",
832      "../api:rtp_headers",
833      "../api:rtp_parameters",
834      "../api:scoped_refptr",
835      "../api:sequence_checker",
836      "../api:simulated_network_api",
837      "../api:time_controller",
838      "../api:transport_api",
839      "../api/adaptation:resource_adaptation_api",
840      "../api/crypto:options",
841      "../api/metronome/test:fake_metronome",
842      "../api/rtc_event_log",
843      "../api/task_queue",
844      "../api/task_queue:default_task_queue_factory",
845      "../api/test/metrics:global_metrics_logger_and_exporter",
846      "../api/test/metrics:metric",
847      "../api/test/video:function_video_factory",
848      "../api/transport:field_trial_based_config",
849      "../api/units:data_rate",
850      "../api/units:frequency",
851      "../api/units:time_delta",
852      "../api/units:timestamp",
853      "../api/video:builtin_video_bitrate_allocator_factory",
854      "../api/video:encoded_image",
855      "../api/video:recordable_encoded_frame",
856      "../api/video:video_adaptation",
857      "../api/video:video_bitrate_allocation",
858      "../api/video:video_frame",
859      "../api/video:video_frame_type",
860      "../api/video:video_rtp_headers",
861      "../api/video/test:video_frame_matchers",
862      "../api/video_codecs:video_codecs_api",
863      "../api/video_codecs:vp8_temporal_layers_factory",
864      "../call:call_interfaces",
865      "../call:fake_network",
866      "../call:mock_bitrate_allocator",
867      "../call:mock_rtp_interfaces",
868      "../call:rtp_interfaces",
869      "../call:rtp_receiver",
870      "../call:rtp_sender",
871      "../call:simulated_network",
872      "../call:simulated_packet_receiver",
873      "../call:video_stream_api",
874      "../call/adaptation:resource_adaptation",
875      "../call/adaptation:resource_adaptation_test_utilities",
876      "../common_video",
877      "../common_video/test:utilities",
878      "../media:rtc_audio_video",
879      "../media:rtc_internal_video_codecs",
880      "../media:rtc_media",
881      "../media:rtc_media_base",
882      "../media:rtc_media_tests_utils",
883      "../media:rtc_simulcast_encoder_adapter",
884      "../modules:module_api_public",
885      "../modules/pacing",
886      "../modules/rtp_rtcp",
887      "../modules/rtp_rtcp:mock_rtp_rtcp",
888      "../modules/rtp_rtcp:rtp_rtcp_format",
889      "../modules/utility:utility",
890      "../modules/video_coding",
891      "../modules/video_coding:codec_globals_headers",
892      "../modules/video_coding:encoded_frame",
893      "../modules/video_coding:packet_buffer",
894      "../modules/video_coding:video_codec_interface",
895      "../modules/video_coding:video_coding_utility",
896      "../modules/video_coding:webrtc_h264",
897      "../modules/video_coding:webrtc_multiplex",
898      "../modules/video_coding:webrtc_vp8",
899      "../modules/video_coding:webrtc_vp9",
900      "../modules/video_coding:webrtc_vp9_helpers",
901      "../modules/video_coding/codecs/av1:libaom_av1_encoder",
902      "../modules/video_coding/svc:scalability_mode_util",
903      "../modules/video_coding/svc:scalability_structures",
904      "../modules/video_coding/svc:scalable_video_controller",
905      "../modules/video_coding/timing:timing_module",
906      "../rtc_base",
907      "../rtc_base:byte_buffer",
908      "../rtc_base:checks",
909      "../rtc_base:gunit_helpers",
910      "../rtc_base:logging",
911      "../rtc_base:macromagic",
912      "../rtc_base:platform_thread",
913      "../rtc_base:rate_limiter",
914      "../rtc_base:rate_statistics",
915      "../rtc_base:refcount",
916      "../rtc_base:rtc_base_tests_utils",
917      "../rtc_base:rtc_event",
918      "../rtc_base:rtc_numerics",
919      "../rtc_base:rtc_task_queue",
920      "../rtc_base:safe_conversions",
921      "../rtc_base:stringutils",
922      "../rtc_base:task_queue_for_test",
923      "../rtc_base:threading",
924      "../rtc_base:timeutils",
925      "../rtc_base/containers:flat_map",
926      "../rtc_base/experiments:alr_experiment",
927      "../rtc_base/experiments:encoder_info_settings",
928      "../rtc_base/synchronization:mutex",
929      "../system_wrappers",
930      "../system_wrappers:field_trial",
931      "../system_wrappers:metrics",
932      "../test:direct_transport",
933      "../test:encoder_settings",
934      "../test:fake_encoded_frame",
935      "../test:fake_video_codecs",
936      "../test:field_trial",
937      "../test:fileutils",
938      "../test:frame_utils",
939      "../test:mock_frame_transformer",
940      "../test:mock_transport",
941      "../test:null_transport",
942      "../test:rtp_test_utils",
943      "../test:run_loop",
944      "../test:scoped_key_value_config",
945      "../test:test_common",
946      "../test:test_support",
947      "../test:video_test_common",
948      "../test/time_controller",
949      "adaptation:video_adaptation",
950      "config:encoder_config",
951      "config:streams_config",
952      "config:video_config_tests",
953    ]
954    absl_deps = [
955      "//third_party/abseil-cpp/absl/algorithm:container",
956      "//third_party/abseil-cpp/absl/functional:any_invocable",
957      "//third_party/abseil-cpp/absl/functional:bind_front",
958      "//third_party/abseil-cpp/absl/memory",
959      "//third_party/abseil-cpp/absl/strings",
960      "//third_party/abseil-cpp/absl/types:optional",
961      "//third_party/abseil-cpp/absl/types:variant",
962    ]
963    if (!build_with_mozilla) {
964      deps += [ "../media:rtc_media_base" ]
965    }
966  }
967}
968