xref: /aosp_15_r20/external/webrtc/call/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1# Copyright (c) 2015 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("version") {
12  sources = [
13    "version.cc",
14    "version.h",
15  ]
16  visibility = [ ":*" ]
17}
18
19rtc_library("call_interfaces") {
20  sources = [
21    "audio_receive_stream.cc",
22    "audio_receive_stream.h",
23    "audio_send_stream.h",
24    "audio_state.cc",
25    "audio_state.h",
26    "call.h",
27    "call_config.cc",
28    "call_config.h",
29    "flexfec_receive_stream.cc",
30    "flexfec_receive_stream.h",
31    "packet_receiver.h",
32    "syncable.cc",
33    "syncable.h",
34  ]
35  if (!build_with_mozilla) {
36    sources += [ "audio_send_stream.cc" ]
37  }
38
39  deps = [
40    ":audio_sender_interface",
41    ":receive_stream_interface",
42    ":rtp_interfaces",
43    ":video_stream_api",
44    "../api:fec_controller_api",
45    "../api:field_trials_view",
46    "../api:frame_transformer_interface",
47    "../api:network_state_predictor_api",
48    "../api:rtc_error",
49    "../api:rtp_headers",
50    "../api:rtp_parameters",
51    "../api:rtp_sender_interface",
52    "../api:scoped_refptr",
53    "../api:transport_api",
54    "../api/adaptation:resource_adaptation_api",
55    "../api/audio:audio_frame_processor",
56    "../api/audio:audio_mixer_api",
57    "../api/audio_codecs:audio_codecs_api",
58    "../api/crypto:frame_encryptor_interface",
59    "../api/crypto:options",
60    "../api/metronome",
61    "../api/neteq:neteq_api",
62    "../api/task_queue",
63    "../api/transport:bitrate_settings",
64    "../api/transport:network_control",
65    "../modules/async_audio_processing",
66    "../modules/audio_device",
67    "../modules/audio_processing",
68    "../modules/audio_processing:api",
69    "../modules/audio_processing:audio_processing_statistics",
70    "../modules/rtp_rtcp:rtp_rtcp_format",
71    "../rtc_base",
72    "../rtc_base:audio_format_to_string",
73    "../rtc_base:checks",
74    "../rtc_base:copy_on_write_buffer",
75    "../rtc_base:refcount",
76    "../rtc_base:stringutils",
77    "../rtc_base/network:sent_packet",
78  ]
79  absl_deps = [
80    "//third_party/abseil-cpp/absl/functional:any_invocable",
81    "//third_party/abseil-cpp/absl/functional:bind_front",
82    "//third_party/abseil-cpp/absl/strings",
83    "//third_party/abseil-cpp/absl/types:optional",
84  ]
85}
86
87rtc_source_set("audio_sender_interface") {
88  visibility = [ "*" ]
89  sources = [ "audio_sender.h" ]
90  deps = [ "../api/audio:audio_frame_api" ]
91}
92
93# TODO(nisse): These RTP targets should be moved elsewhere
94# when interfaces have stabilized. See also TODO for `mock_rtp_interfaces`.
95rtc_library("rtp_interfaces") {
96  # Client code SHOULD NOT USE THIS TARGET, but for now it needs to be public
97  # because there exists client code that uses it.
98  # TODO(bugs.webrtc.org/9808): Move to private visibility as soon as that
99  # client code gets updated.
100  visibility = [ "*" ]
101  sources = [
102    "rtp_config.cc",
103    "rtp_config.h",
104    "rtp_packet_sink_interface.h",
105    "rtp_stream_receiver_controller_interface.h",
106    "rtp_transport_config.h",
107    "rtp_transport_controller_send_factory_interface.h",
108    "rtp_transport_controller_send_interface.h",
109  ]
110  deps = [
111    "../api:array_view",
112    "../api:fec_controller_api",
113    "../api:field_trials_view",
114    "../api:frame_transformer_interface",
115    "../api:network_state_predictor_api",
116    "../api:rtp_headers",
117    "../api:rtp_parameters",
118    "../api/crypto:options",
119    "../api/rtc_event_log",
120    "../api/transport:bitrate_settings",
121    "../api/transport:network_control",
122    "../api/units:timestamp",
123    "../common_video:frame_counts",
124    "../modules/rtp_rtcp:rtp_rtcp_format",
125    "../rtc_base:checks",
126    "../rtc_base:rtc_task_queue",
127    "../rtc_base:stringutils",
128  ]
129  absl_deps = [
130    "//third_party/abseil-cpp/absl/algorithm:container",
131    "//third_party/abseil-cpp/absl/strings",
132    "//third_party/abseil-cpp/absl/types:optional",
133  ]
134}
135
136rtc_library("rtp_receiver") {
137  visibility = [ "*" ]
138  sources = [
139    "rtp_demuxer.cc",
140    "rtp_demuxer.h",
141    "rtp_stream_receiver_controller.cc",
142    "rtp_stream_receiver_controller.h",
143    "rtx_receive_stream.cc",
144    "rtx_receive_stream.h",
145  ]
146  deps = [
147    ":rtp_interfaces",
148    "../api:array_view",
149    "../api:rtp_headers",
150    "../api:sequence_checker",
151    "../modules/rtp_rtcp",
152    "../modules/rtp_rtcp:rtp_rtcp_format",
153    "../rtc_base:checks",
154    "../rtc_base:logging",
155    "../rtc_base:stringutils",
156    "../rtc_base/containers:flat_map",
157    "../rtc_base/containers:flat_set",
158    "../rtc_base/system:no_unique_address",
159  ]
160  absl_deps = [
161    "//third_party/abseil-cpp/absl/strings:strings",
162    "//third_party/abseil-cpp/absl/types:optional",
163  ]
164}
165
166rtc_library("rtp_sender") {
167  sources = [
168    "rtp_payload_params.cc",
169    "rtp_payload_params.h",
170    "rtp_transport_controller_send.cc",
171    "rtp_transport_controller_send.h",
172    "rtp_transport_controller_send_factory.h",
173    "rtp_video_sender.cc",
174    "rtp_video_sender.h",
175    "rtp_video_sender_interface.h",
176  ]
177  deps = [
178    ":bitrate_configurator",
179    ":rtp_interfaces",
180    "../api:array_view",
181    "../api:bitrate_allocation",
182    "../api:fec_controller_api",
183    "../api:field_trials_view",
184    "../api:network_state_predictor_api",
185    "../api:rtp_parameters",
186    "../api:sequence_checker",
187    "../api:transport_api",
188    "../api/rtc_event_log",
189    "../api/task_queue:pending_task_safety_flag",
190    "../api/task_queue:task_queue",
191    "../api/transport:field_trial_based_config",
192    "../api/transport:goog_cc",
193    "../api/transport:network_control",
194    "../api/units:data_rate",
195    "../api/units:time_delta",
196    "../api/units:timestamp",
197    "../api/video:video_frame",
198    "../api/video:video_layers_allocation",
199    "../api/video:video_rtp_headers",
200    "../api/video_codecs:video_codecs_api",
201    "../logging:rtc_event_bwe",
202    "../modules/congestion_controller",
203    "../modules/congestion_controller/rtp:control_handler",
204    "../modules/congestion_controller/rtp:transport_feedback",
205    "../modules/pacing",
206    "../modules/rtp_rtcp",
207    "../modules/rtp_rtcp:rtp_rtcp_format",
208    "../modules/rtp_rtcp:rtp_video_header",
209    "../modules/utility:utility",
210    "../modules/video_coding:chain_diff_calculator",
211    "../modules/video_coding:codec_globals_headers",
212    "../modules/video_coding:frame_dependencies_calculator",
213    "../modules/video_coding:video_codec_interface",
214    "../rtc_base",
215    "../rtc_base:checks",
216    "../rtc_base:event_tracer",
217    "../rtc_base:logging",
218    "../rtc_base:macromagic",
219    "../rtc_base:race_checker",
220    "../rtc_base:random",
221    "../rtc_base:rate_limiter",
222    "../rtc_base:rtc_task_queue",
223    "../rtc_base:timeutils",
224    "../rtc_base/synchronization:mutex",
225    "../rtc_base/task_utils:repeating_task",
226  ]
227  absl_deps = [
228    "//third_party/abseil-cpp/absl/algorithm:container",
229    "//third_party/abseil-cpp/absl/container:inlined_vector",
230    "//third_party/abseil-cpp/absl/strings:strings",
231    "//third_party/abseil-cpp/absl/types:optional",
232    "//third_party/abseil-cpp/absl/types:variant",
233  ]
234}
235
236rtc_library("bitrate_configurator") {
237  sources = [
238    "rtp_bitrate_configurator.cc",
239    "rtp_bitrate_configurator.h",
240  ]
241  deps = [
242    ":rtp_interfaces",
243
244    # For api/bitrate_constraints.h
245    "../api:libjingle_peerconnection_api",
246    "../api/transport:bitrate_settings",
247    "../api/units:data_rate",
248    "../rtc_base:checks",
249  ]
250  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
251}
252
253rtc_library("bitrate_allocator") {
254  sources = [
255    "bitrate_allocator.cc",
256    "bitrate_allocator.h",
257  ]
258  deps = [
259    "../api:bitrate_allocation",
260    "../api:sequence_checker",
261    "../api/transport:network_control",
262    "../api/units:data_rate",
263    "../api/units:time_delta",
264    "../rtc_base:checks",
265    "../rtc_base:logging",
266    "../rtc_base:safe_minmax",
267    "../rtc_base/system:no_unique_address",
268    "../system_wrappers",
269    "../system_wrappers:field_trial",
270    "../system_wrappers:metrics",
271  ]
272  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
273}
274
275rtc_library("call") {
276  sources = [
277    "call.cc",
278    "call_factory.cc",
279    "call_factory.h",
280    "degraded_call.cc",
281    "degraded_call.h",
282    "flexfec_receive_stream_impl.cc",
283    "flexfec_receive_stream_impl.h",
284    "receive_time_calculator.cc",
285    "receive_time_calculator.h",
286  ]
287
288  deps = [
289    ":bitrate_allocator",
290    ":call_interfaces",
291    ":fake_network",
292    ":rtp_interfaces",
293    ":rtp_receiver",
294    ":rtp_sender",
295    ":simulated_network",
296    ":version",
297    ":video_stream_api",
298    "../api:array_view",
299    "../api:callfactory_api",
300    "../api:fec_controller_api",
301    "../api:field_trials_view",
302    "../api:rtp_headers",
303    "../api:rtp_parameters",
304    "../api:sequence_checker",
305    "../api:simulated_network_api",
306    "../api:transport_api",
307    "../api/rtc_event_log",
308    "../api/task_queue:pending_task_safety_flag",
309    "../api/transport:network_control",
310    "../api/units:time_delta",
311    "../api/video_codecs:video_codecs_api",
312    "../audio",
313    "../logging:rtc_event_audio",
314    "../logging:rtc_event_rtp_rtcp",
315    "../logging:rtc_event_video",
316    "../logging:rtc_stream_config",
317    "../modules/congestion_controller",
318    "../modules/pacing",
319    "../modules/rtp_rtcp",
320    "../modules/rtp_rtcp:rtp_rtcp_format",
321    "../modules/video_coding",
322    "../rtc_base:checks",
323    "../rtc_base:copy_on_write_buffer",
324    "../rtc_base:event_tracer",
325    "../rtc_base:logging",
326    "../rtc_base:macromagic",
327    "../rtc_base:rate_limiter",
328    "../rtc_base:rtc_event",
329    "../rtc_base:rtc_task_queue",
330    "../rtc_base:safe_minmax",
331    "../rtc_base:stringutils",
332    "../rtc_base:timeutils",
333    "../rtc_base/experiments:field_trial_parser",
334    "../rtc_base/network:sent_packet",
335    "../rtc_base/system:no_unique_address",
336    "../rtc_base/task_utils:repeating_task",
337    "../system_wrappers",
338    "../system_wrappers:field_trial",
339    "../system_wrappers:metrics",
340    "../video",
341    "../video:decode_synchronizer",
342    "../video/config:encoder_config",
343    "adaptation:resource_adaptation",
344  ]
345  absl_deps = [
346    "//third_party/abseil-cpp/absl/functional:bind_front",
347    "//third_party/abseil-cpp/absl/memory",
348    "//third_party/abseil-cpp/absl/strings",
349    "//third_party/abseil-cpp/absl/types:optional",
350  ]
351}
352
353rtc_source_set("receive_stream_interface") {
354  sources = [ "receive_stream.h" ]
355  deps = [
356    "../api:frame_transformer_interface",
357    "../api:rtp_parameters",
358    "../api:scoped_refptr",
359    "../api/crypto:frame_decryptor_interface",
360    "../api/transport/rtp:rtp_source",
361    "../modules/rtp_rtcp:rtp_rtcp_format",
362  ]
363}
364
365rtc_library("video_stream_api") {
366  sources = [
367    "video_receive_stream.cc",
368    "video_receive_stream.h",
369    "video_send_stream.cc",
370    "video_send_stream.h",
371  ]
372  deps = [
373    ":receive_stream_interface",
374    ":rtp_interfaces",
375    "../api:frame_transformer_interface",
376    "../api:rtp_headers",
377    "../api:rtp_parameters",
378    "../api:rtp_sender_interface",
379    "../api:scoped_refptr",
380    "../api:transport_api",
381    "../api/adaptation:resource_adaptation_api",
382    "../api/crypto:frame_encryptor_interface",
383    "../api/crypto:options",
384    "../api/video:recordable_encoded_frame",
385    "../api/video:video_frame",
386    "../api/video:video_rtp_headers",
387    "../api/video:video_stream_encoder",
388    "../api/video_codecs:video_codecs_api",
389    "../common_video",
390    "../common_video:frame_counts",
391    "../modules/rtp_rtcp:rtp_rtcp_format",
392    "../rtc_base:checks",
393    "../rtc_base:stringutils",
394    "../video/config:encoder_config",
395  ]
396  absl_deps = [
397    "//third_party/abseil-cpp/absl/functional:any_invocable",
398    "//third_party/abseil-cpp/absl/types:optional",
399  ]
400}
401
402rtc_library("simulated_network") {
403  sources = [
404    "simulated_network.cc",
405    "simulated_network.h",
406  ]
407  deps = [
408    "../api:sequence_checker",
409    "../api:simulated_network_api",
410    "../api/units:data_rate",
411    "../api/units:data_size",
412    "../api/units:time_delta",
413    "../api/units:timestamp",
414    "../rtc_base:checks",
415    "../rtc_base:macromagic",
416    "../rtc_base:race_checker",
417    "../rtc_base:random",
418    "../rtc_base/synchronization:mutex",
419  ]
420  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
421}
422
423rtc_source_set("simulated_packet_receiver") {
424  sources = [ "simulated_packet_receiver.h" ]
425  deps = [
426    ":call_interfaces",
427    "../api:simulated_network_api",
428  ]
429}
430
431rtc_library("fake_network") {
432  sources = [
433    "fake_network_pipe.cc",
434    "fake_network_pipe.h",
435  ]
436  deps = [
437    ":call_interfaces",
438    ":simulated_network",
439    ":simulated_packet_receiver",
440    "../api:rtp_parameters",
441    "../api:sequence_checker",
442    "../api:simulated_network_api",
443    "../api:transport_api",
444    "../rtc_base:checks",
445    "../rtc_base:logging",
446    "../rtc_base:macromagic",
447    "../rtc_base/synchronization:mutex",
448    "../system_wrappers",
449  ]
450}
451
452if (rtc_include_tests) {
453  if (!build_with_chromium) {
454    rtc_library("call_tests") {
455      testonly = true
456
457      sources = [
458        "bitrate_allocator_unittest.cc",
459        "bitrate_estimator_tests.cc",
460        "call_unittest.cc",
461        "flexfec_receive_stream_unittest.cc",
462        "receive_time_calculator_unittest.cc",
463        "rtp_bitrate_configurator_unittest.cc",
464        "rtp_demuxer_unittest.cc",
465        "rtp_payload_params_unittest.cc",
466        "rtp_video_sender_unittest.cc",
467        "rtx_receive_stream_unittest.cc",
468      ]
469      deps = [
470        ":bitrate_allocator",
471        ":bitrate_configurator",
472        ":call",
473        ":call_interfaces",
474        ":mock_rtp_interfaces",
475        ":rtp_interfaces",
476        ":rtp_receiver",
477        ":rtp_sender",
478        ":simulated_network",
479        "../api:array_view",
480        "../api:create_frame_generator",
481        "../api:mock_audio_mixer",
482        "../api:rtp_headers",
483        "../api:rtp_parameters",
484        "../api:transport_api",
485        "../api/audio_codecs:builtin_audio_decoder_factory",
486        "../api/rtc_event_log",
487        "../api/task_queue:default_task_queue_factory",
488        "../api/test/video:function_video_factory",
489        "../api/transport:field_trial_based_config",
490        "../api/video:builtin_video_bitrate_allocator_factory",
491        "../api/video:video_frame",
492        "../api/video:video_rtp_headers",
493        "../audio",
494        "../modules/audio_device:mock_audio_device",
495        "../modules/audio_mixer",
496        "../modules/audio_mixer:audio_mixer_impl",
497        "../modules/audio_processing:mocks",
498        "../modules/congestion_controller",
499        "../modules/pacing",
500        "../modules/rtp_rtcp",
501        "../modules/rtp_rtcp:mock_rtp_rtcp",
502        "../modules/rtp_rtcp:rtp_rtcp_format",
503        "../modules/video_coding",
504        "../modules/video_coding:codec_globals_headers",
505        "../modules/video_coding:video_codec_interface",
506        "../rtc_base:checks",
507        "../rtc_base:logging",
508        "../rtc_base:macromagic",
509        "../rtc_base:random",
510        "../rtc_base:rate_limiter",
511        "../rtc_base:rtc_event",
512        "../rtc_base:safe_conversions",
513        "../rtc_base:task_queue_for_test",
514        "../rtc_base:threading",
515        "../rtc_base:timeutils",
516        "../rtc_base/synchronization:mutex",
517        "../system_wrappers",
518        "../test:audio_codec_mocks",
519        "../test:direct_transport",
520        "../test:encoder_settings",
521        "../test:explicit_key_value_config",
522        "../test:fake_video_codecs",
523        "../test:field_trial",
524        "../test:mock_frame_transformer",
525        "../test:mock_transport",
526        "../test:run_loop",
527        "../test:scoped_key_value_config",
528        "../test:test_common",
529        "../test:test_support",
530        "../test:video_test_common",
531        "../test/scenario",
532        "../test/time_controller:time_controller",
533        "../video",
534        "adaptation:resource_adaptation_test_utilities",
535        "//testing/gmock",
536        "//testing/gtest",
537      ]
538      absl_deps = [
539        "//third_party/abseil-cpp/absl/container:inlined_vector",
540        "//third_party/abseil-cpp/absl/functional:any_invocable",
541        "//third_party/abseil-cpp/absl/memory",
542        "//third_party/abseil-cpp/absl/strings",
543        "//third_party/abseil-cpp/absl/types:optional",
544        "//third_party/abseil-cpp/absl/types:variant",
545      ]
546    }
547
548    rtc_library("call_perf_tests") {
549      testonly = true
550
551      sources = [
552        "call_perf_tests.cc",
553        "rampup_tests.cc",
554        "rampup_tests.h",
555      ]
556      deps = [
557        ":call_interfaces",
558        ":simulated_network",
559        ":video_stream_api",
560        "../api:rtc_event_log_output_file",
561        "../api:simulated_network_api",
562        "../api/audio_codecs:builtin_audio_encoder_factory",
563        "../api/numerics",
564        "../api/rtc_event_log",
565        "../api/rtc_event_log:rtc_event_log_factory",
566        "../api/task_queue",
567        "../api/task_queue:default_task_queue_factory",
568        "../api/task_queue:pending_task_safety_flag",
569        "../api/test/metrics:global_metrics_logger_and_exporter",
570        "../api/test/metrics:metric",
571        "../api/video:builtin_video_bitrate_allocator_factory",
572        "../api/video:video_bitrate_allocation",
573        "../api/video_codecs:video_codecs_api",
574        "../media:rtc_internal_video_codecs",
575        "../media:rtc_simulcast_encoder_adapter",
576        "../modules/audio_coding",
577        "../modules/audio_device",
578        "../modules/audio_device:audio_device_impl",
579        "../modules/audio_mixer:audio_mixer_impl",
580        "../modules/rtp_rtcp",
581        "../modules/rtp_rtcp:rtp_rtcp_format",
582        "../rtc_base",
583        "../rtc_base:checks",
584        "../rtc_base:logging",
585        "../rtc_base:macromagic",
586        "../rtc_base:platform_thread",
587        "../rtc_base:rtc_event",
588        "../rtc_base:stringutils",
589        "../rtc_base:task_queue_for_test",
590        "../rtc_base:threading",
591        "../rtc_base:timeutils",
592        "../rtc_base/synchronization:mutex",
593        "../rtc_base/task_utils:repeating_task",
594        "../system_wrappers",
595        "../system_wrappers:metrics",
596        "../test:direct_transport",
597        "../test:encoder_settings",
598        "../test:fake_video_codecs",
599        "../test:field_trial",
600        "../test:fileutils",
601        "../test:null_transport",
602        "../test:test_common",
603        "../test:test_support",
604        "../test:video_test_common",
605        "../video",
606        "../video/config:encoder_config",
607        "//testing/gtest",
608      ]
609      absl_deps = [
610        "//third_party/abseil-cpp/absl/flags:flag",
611        "//third_party/abseil-cpp/absl/strings",
612      ]
613    }
614  }
615
616  # TODO(eladalon): This should be moved, as with the TODO for `rtp_interfaces`.
617  rtc_source_set("mock_rtp_interfaces") {
618    testonly = true
619
620    sources = [
621      "test/mock_rtp_packet_sink_interface.h",
622      "test/mock_rtp_transport_controller_send.h",
623    ]
624    deps = [
625      ":rtp_interfaces",
626      "../api:frame_transformer_interface",
627      "../api:libjingle_peerconnection_api",
628      "../api/crypto:frame_encryptor_interface",
629      "../api/crypto:options",
630      "../api/transport:bitrate_settings",
631      "../modules/pacing",
632      "../rtc_base",
633      "../rtc_base:rate_limiter",
634      "../rtc_base/network:sent_packet",
635      "../test:test_support",
636    ]
637    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
638  }
639  rtc_source_set("mock_bitrate_allocator") {
640    testonly = true
641
642    sources = [ "test/mock_bitrate_allocator.h" ]
643    deps = [
644      ":bitrate_allocator",
645      "../test:test_support",
646    ]
647  }
648  rtc_source_set("mock_call_interfaces") {
649    testonly = true
650
651    sources = [ "test/mock_audio_send_stream.h" ]
652    deps = [
653      ":call_interfaces",
654      "../test:test_support",
655    ]
656  }
657
658  rtc_library("fake_network_pipe_unittests") {
659    testonly = true
660
661    sources = [
662      "fake_network_pipe_unittest.cc",
663      "simulated_network_unittest.cc",
664    ]
665    deps = [
666      ":fake_network",
667      ":simulated_network",
668      "../api:simulated_network_api",
669      "../api/units:data_rate",
670      "../api/units:time_delta",
671      "../system_wrappers",
672      "../test:test_support",
673      "//testing/gtest",
674    ]
675    absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
676  }
677}
678