xref: /aosp_15_r20/external/webrtc/pc/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1# Copyright (c) 2016 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
9# Visibility considerations:
10#
11# Most targets in this file should have visibility ":*", as they are only
12# used internally.
13# Some functions are cleared for wider webrtc usage; these have default
14# visibility (set to "//*", not the gn default of "*").
15# These are:
16# - rtc_pc
17# - session_description
18# - simulcast_description
19# - peerconnection
20# - sdp_utils
21# - media_stream_observer
22# - video_track_source
23# - libjingle_peerconnection
24#
25# Some targets are depended on by external users for historical reasons,
26# and are therefore marked with visibility "*". This is in the process
27# of being removed.
28#
29# Some targets are only publicly visible in Chrome builds.
30# These are marked up as such.
31
32import("../webrtc.gni")
33if (is_android) {
34  import("//build/config/android/config.gni")
35  import("//build/config/android/rules.gni")
36}
37
38group("pc") {
39  deps = [ ":rtc_pc" ]
40}
41
42rtc_library("proxy") {
43  visibility = [ ":*" ]
44  sources = [
45    "proxy.cc",
46    "proxy.h",
47  ]
48  deps = [
49    "../api:scoped_refptr",
50    "../api/task_queue",
51    "../rtc_base:event_tracer",
52    "../rtc_base:rtc_event",
53    "../rtc_base:stringutils",
54    "../rtc_base:threading",
55    "../rtc_base/system:rtc_export",
56  ]
57}
58
59rtc_source_set("channel") {
60  visibility = [
61    ":*",
62    "../test/peer_scenario",
63  ]
64  sources = [
65    "channel.cc",
66    "channel.h",
67  ]
68  deps = [
69    ":channel_interface",
70    ":rtp_media_utils",
71    ":rtp_transport_internal",
72    ":session_description",
73    "../api:libjingle_peerconnection_api",
74    "../api:rtp_parameters",
75    "../api:rtp_transceiver_direction",
76    "../api:scoped_refptr",
77    "../api:sequence_checker",
78    "../api/crypto:options",
79    "../api/task_queue:pending_task_safety_flag",
80    "../api/units:timestamp",
81    "../call:rtp_interfaces",
82    "../call:rtp_receiver",
83    "../media:rtc_media_base",
84    "../modules/rtp_rtcp:rtp_rtcp_format",
85    "../p2p:rtc_p2p",
86    "../rtc_base",
87    "../rtc_base:checks",
88    "../rtc_base:copy_on_write_buffer",
89    "../rtc_base:event_tracer",
90    "../rtc_base:logging",
91    "../rtc_base:macromagic",
92    "../rtc_base:socket",
93    "../rtc_base:stringutils",
94    "../rtc_base:threading",
95    "../rtc_base/containers:flat_set",
96    "../rtc_base/network:sent_packet",
97    "../rtc_base/third_party/sigslot",
98  ]
99  absl_deps = [
100    "//third_party/abseil-cpp/absl/strings",
101    "//third_party/abseil-cpp/absl/types:optional",
102  ]
103}
104
105rtc_source_set("channel_interface") {
106  visibility = [ ":*" ]
107  sources = [ "channel_interface.h" ]
108  deps = [
109    ":rtp_transport_internal",
110    "../api:libjingle_peerconnection_api",
111    "../api:rtp_parameters",
112    "../media:rtc_media_base",
113  ]
114  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
115}
116
117rtc_source_set("dtls_srtp_transport") {
118  visibility = [ ":*" ]
119  sources = [
120    "dtls_srtp_transport.cc",
121    "dtls_srtp_transport.h",
122  ]
123  deps = [
124    ":srtp_transport",
125    "../api:dtls_transport_interface",
126    "../api:libjingle_peerconnection_api",
127    "../api:rtc_error",
128    "../p2p:rtc_p2p",
129    "../rtc_base",
130    "../rtc_base:buffer",
131    "../rtc_base:checks",
132    "../rtc_base:logging",
133    "../rtc_base/third_party/sigslot",
134  ]
135  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
136}
137
138rtc_source_set("dtls_transport") {
139  visibility = [ ":*" ]
140  sources = [
141    "dtls_transport.cc",
142    "dtls_transport.h",
143  ]
144  deps = [
145    ":ice_transport",
146    "../api:dtls_transport_interface",
147    "../api:ice_transport_interface",
148    "../api:libjingle_peerconnection_api",
149    "../api:make_ref_counted",
150    "../api:scoped_refptr",
151    "../api:sequence_checker",
152    "../p2p:rtc_p2p",
153    "../rtc_base",
154    "../rtc_base:checks",
155    "../rtc_base:logging",
156    "../rtc_base:macromagic",
157    "../rtc_base:threading",
158    "../rtc_base/synchronization:mutex",
159  ]
160  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
161}
162
163rtc_source_set("external_hmac") {
164  visibility = [ ":*" ]
165  sources = [
166    "external_hmac.cc",
167    "external_hmac.h",
168  ]
169  deps = [
170    "../rtc_base:logging",
171    "../rtc_base:zero_memory",
172  ]
173  if (rtc_build_libsrtp) {
174    deps += [ "//third_party/libsrtp" ]
175  }
176}
177
178rtc_source_set("ice_transport") {
179  visibility = [ ":*" ]
180  sources = [
181    "ice_transport.cc",
182    "ice_transport.h",
183  ]
184  deps = [
185    "../api:ice_transport_interface",
186    "../api:libjingle_peerconnection_api",
187    "../api:sequence_checker",
188    "../rtc_base:checks",
189    "../rtc_base:macromagic",
190    "../rtc_base:threading",
191  ]
192}
193
194rtc_source_set("jsep_transport") {
195  visibility = [ ":*" ]
196  sources = [
197    "jsep_transport.cc",
198    "jsep_transport.h",
199  ]
200  deps = [
201    ":dtls_srtp_transport",
202    ":dtls_transport",
203    ":rtcp_mux_filter",
204    ":rtp_transport",
205    ":rtp_transport_internal",
206    ":sctp_transport",
207    ":session_description",
208    ":srtp_filter",
209    ":srtp_transport",
210    ":transport_stats",
211    "../api:array_view",
212    "../api:candidate",
213    "../api:ice_transport_interface",
214    "../api:libjingle_peerconnection_api",
215    "../api:rtc_error",
216    "../api:scoped_refptr",
217    "../api:sequence_checker",
218    "../api/transport:datagram_transport_interface",
219    "../media:rtc_data_sctp_transport_internal",
220    "../p2p:rtc_p2p",
221    "../rtc_base",
222    "../rtc_base:checks",
223    "../rtc_base:copy_on_write_buffer",
224    "../rtc_base:event_tracer",
225    "../rtc_base:logging",
226    "../rtc_base:macromagic",
227    "../rtc_base:stringutils",
228    "../rtc_base:threading",
229  ]
230  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
231}
232
233rtc_source_set("jsep_transport_collection") {
234  visibility = [ ":*" ]
235  sources = [
236    "jsep_transport_collection.cc",
237    "jsep_transport_collection.h",
238  ]
239  deps = [
240    ":jsep_transport",
241    ":session_description",
242    "../api:libjingle_peerconnection_api",
243    "../api:sequence_checker",
244    "../p2p:rtc_p2p",
245    "../rtc_base:checks",
246    "../rtc_base:logging",
247    "../rtc_base:macromagic",
248    "../rtc_base/system:no_unique_address",
249  ]
250  absl_deps = []
251}
252
253rtc_source_set("jsep_transport_controller") {
254  visibility = [
255    ":*",
256    "../test/peer_scenario:*",
257  ]
258  sources = [
259    "jsep_transport_controller.cc",
260    "jsep_transport_controller.h",
261  ]
262  deps = [
263    ":channel",
264    ":dtls_srtp_transport",
265    ":dtls_transport",
266    ":jsep_transport",
267    ":jsep_transport_collection",
268    ":rtp_transport",
269    ":rtp_transport_internal",
270    ":sctp_transport",
271    ":session_description",
272    ":srtp_transport",
273    ":transport_stats",
274    "../api:async_dns_resolver",
275    "../api:candidate",
276    "../api:dtls_transport_interface",
277    "../api:ice_transport_factory",
278    "../api:ice_transport_interface",
279    "../api:libjingle_peerconnection_api",
280    "../api:rtc_error",
281    "../api:rtp_parameters",
282    "../api:scoped_refptr",
283    "../api:sequence_checker",
284    "../api/crypto:options",
285    "../api/rtc_event_log",
286    "../api/transport:datagram_transport_interface",
287    "../api/transport:enums",
288    "../api/transport:sctp_transport_factory_interface",
289    "../media:rtc_data_sctp_transport_internal",
290    "../p2p:rtc_p2p",
291    "../rtc_base",
292    "../rtc_base:callback_list",
293    "../rtc_base:checks",
294    "../rtc_base:copy_on_write_buffer",
295    "../rtc_base:event_tracer",
296    "../rtc_base:logging",
297    "../rtc_base:macromagic",
298    "../rtc_base:threading",
299    "../rtc_base/third_party/sigslot",
300  ]
301  absl_deps = [
302    "//third_party/abseil-cpp/absl/algorithm:container",
303    "//third_party/abseil-cpp/absl/types:optional",
304  ]
305}
306
307rtc_source_set("media_session") {
308  visibility = [ "*" ]  # Used by Chrome
309  sources = [
310    "media_session.cc",
311    "media_session.h",
312  ]
313  deps = [
314    ":jsep_transport",
315    ":media_protocol_names",
316    ":rtp_media_utils",
317    ":session_description",
318    ":simulcast_description",
319    ":used_ids",
320    "../api:field_trials_view",
321    "../api:libjingle_peerconnection_api",
322    "../api:rtp_parameters",
323    "../api:rtp_transceiver_direction",
324    "../api/crypto:options",
325    "../media:rtc_data_sctp_transport_internal",
326    "../media:rtc_media_base",
327    "../media:rtc_sdp_video_format_utils",
328    "../p2p:rtc_p2p",
329    "../rtc_base",
330    "../rtc_base:checks",
331    "../rtc_base:logging",
332    "../rtc_base:stringutils",
333    "../rtc_base/memory:always_valid_pointer",
334    "../rtc_base/third_party/base64",
335  ]
336  absl_deps = [
337    "//third_party/abseil-cpp/absl/algorithm:container",
338    "//third_party/abseil-cpp/absl/strings",
339    "//third_party/abseil-cpp/absl/types:optional",
340  ]
341}
342
343rtc_source_set("media_stream_proxy") {
344  visibility = [ ":*" ]
345  sources = [ "media_stream_proxy.h" ]
346  deps = [
347    ":proxy",
348    "../api:media_stream_interface",
349  ]
350}
351
352rtc_source_set("media_stream_track_proxy") {
353  visibility = [ ":*" ]
354  sources = [ "media_stream_track_proxy.h" ]
355  deps = [
356    ":proxy",
357    "../api:media_stream_interface",
358  ]
359}
360
361rtc_source_set("peer_connection_factory_proxy") {
362  visibility = [ ":*" ]
363  sources = [ "peer_connection_factory_proxy.h" ]
364  deps = [
365    ":proxy",
366    "../api:libjingle_peerconnection_api",
367  ]
368}
369
370rtc_source_set("peer_connection_proxy") {
371  visibility = [ ":*" ]
372  sources = [ "peer_connection_proxy.h" ]
373  deps = [
374    ":proxy",
375    "../api:libjingle_peerconnection_api",
376  ]
377}
378
379rtc_source_set("rtcp_mux_filter") {
380  visibility = [ ":*" ]
381  sources = [
382    "rtcp_mux_filter.cc",
383    "rtcp_mux_filter.h",
384  ]
385  deps = [
386    ":session_description",
387    "../rtc_base:logging",
388  ]
389}
390
391rtc_source_set("rtp_media_utils") {
392  visibility = [ ":*" ]
393  sources = [
394    "rtp_media_utils.cc",
395    "rtp_media_utils.h",
396  ]
397  deps = [
398    "../api:rtp_transceiver_direction",
399    "../rtc_base:checks",
400  ]
401}
402
403rtc_source_set("rtp_receiver_proxy") {
404  visibility = [ ":*" ]
405  sources = [ "rtp_receiver_proxy.h" ]
406  deps = [
407    ":proxy",
408    "../api:libjingle_peerconnection_api",
409  ]
410}
411
412rtc_source_set("rtp_sender_proxy") {
413  visibility = [ ":*" ]
414  sources = [ "rtp_sender_proxy.h" ]
415  deps = [
416    ":proxy",
417    "../api:libjingle_peerconnection_api",
418    "../api:rtp_sender_interface",
419  ]
420}
421
422rtc_source_set("rtp_transport") {
423  visibility = [ ":*" ]
424  sources = [
425    "rtp_transport.cc",
426    "rtp_transport.h",
427  ]
428  deps = [
429    ":rtp_transport_internal",
430    ":session_description",
431    "../api:array_view",
432    "../api/units:timestamp",
433    "../call:rtp_receiver",
434    "../call:video_stream_api",
435    "../media:rtc_media_base",
436    "../modules/rtp_rtcp:rtp_rtcp_format",
437    "../p2p:rtc_p2p",
438    "../rtc_base",
439    "../rtc_base:checks",
440    "../rtc_base:copy_on_write_buffer",
441    "../rtc_base:event_tracer",
442    "../rtc_base:logging",
443    "../rtc_base:socket",
444    "../rtc_base/network:sent_packet",
445  ]
446  absl_deps = [
447    "//third_party/abseil-cpp/absl/strings",
448    "//third_party/abseil-cpp/absl/types:optional",
449  ]
450}
451
452rtc_source_set("rtp_transport_internal") {
453  visibility = [
454    ":*",
455    "../test/peer_scenario",
456  ]
457  sources = [ "rtp_transport_internal.h" ]
458  deps = [
459    ":session_description",
460    "../call:rtp_receiver",
461    "../p2p:rtc_p2p",
462    "../rtc_base",
463    "../rtc_base/third_party/sigslot",
464  ]
465}
466
467rtc_source_set("sctp_transport") {
468  visibility = [ ":*" ]
469  sources = [
470    "sctp_transport.cc",
471    "sctp_transport.h",
472  ]
473  deps = [
474    ":dtls_transport",
475    "../api:dtls_transport_interface",
476    "../api:libjingle_peerconnection_api",
477    "../api:scoped_refptr",
478    "../api:sequence_checker",
479    "../api/transport:datagram_transport_interface",
480    "../media:rtc_data_sctp_transport_internal",
481    "../p2p:rtc_p2p",
482    "../rtc_base",
483    "../rtc_base:checks",
484    "../rtc_base:logging",
485    "../rtc_base:macromagic",
486    "../rtc_base:threading",
487    "../rtc_base/third_party/sigslot",
488  ]
489  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
490}
491
492rtc_source_set("sctp_utils") {
493  visibility = [
494    ":*",
495    "../test/fuzzers:*",
496  ]
497  sources = [
498    "sctp_utils.cc",
499    "sctp_utils.h",
500  ]
501  deps = [
502    "../api:libjingle_peerconnection_api",
503    "../api:priority",
504    "../api/transport:datagram_transport_interface",
505    "../media:rtc_media_base",
506    "../rtc_base:byte_buffer",
507    "../rtc_base:copy_on_write_buffer",
508    "../rtc_base:logging",
509  ]
510  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
511}
512rtc_source_set("srtp_filter") {
513  visibility = [ ":*" ]
514  sources = [
515    "srtp_filter.cc",
516    "srtp_filter.h",
517  ]
518  deps = [
519    ":session_description",
520    "../api:array_view",
521    "../api:libjingle_peerconnection_api",
522    "../api:sequence_checker",
523    "../rtc_base",
524    "../rtc_base:buffer",
525    "../rtc_base:logging",
526    "../rtc_base:zero_memory",
527    "../rtc_base/third_party/base64",
528  ]
529  absl_deps = [
530    "//third_party/abseil-cpp/absl/strings",
531    "//third_party/abseil-cpp/absl/types:optional",
532  ]
533}
534
535rtc_source_set("srtp_session") {
536  visibility = [ ":*" ]
537  sources = [
538    "srtp_session.cc",
539    "srtp_session.h",
540  ]
541  deps = [
542    ":external_hmac",
543    "../api:array_view",
544    "../api:field_trials_view",
545    "../api:scoped_refptr",
546    "../api:sequence_checker",
547    "../modules/rtp_rtcp:rtp_rtcp_format",
548    "../rtc_base",
549    "../rtc_base:byte_order",
550    "../rtc_base:checks",
551    "../rtc_base:logging",
552    "../rtc_base:macromagic",
553    "../rtc_base:stringutils",
554    "../rtc_base:timeutils",
555    "../rtc_base/synchronization:mutex",
556    "../system_wrappers:metrics",
557  ]
558  absl_deps = [
559    "//third_party/abseil-cpp/absl/base:core_headers",
560    "//third_party/abseil-cpp/absl/strings:strings",
561  ]
562  if (rtc_build_libsrtp) {
563    deps += [ "//third_party/libsrtp" ]
564  }
565}
566rtc_source_set("srtp_transport") {
567  visibility = [ ":*" ]
568  sources = [
569    "srtp_transport.cc",
570    "srtp_transport.h",
571  ]
572  deps = [
573    ":rtp_transport",
574    ":srtp_session",
575    "../api:field_trials_view",
576    "../api:libjingle_peerconnection_api",
577    "../api:rtc_error",
578    "../media:rtc_media_base",
579    "../modules/rtp_rtcp:rtp_rtcp_format",
580    "../p2p:rtc_p2p",
581    "../rtc_base",
582    "../rtc_base:buffer",
583    "../rtc_base:checks",
584    "../rtc_base:copy_on_write_buffer",
585    "../rtc_base:event_tracer",
586    "../rtc_base:logging",
587    "../rtc_base:safe_conversions",
588    "../rtc_base:zero_memory",
589    "../rtc_base/third_party/base64",
590  ]
591  absl_deps = [
592    "//third_party/abseil-cpp/absl/strings",
593    "//third_party/abseil-cpp/absl/types:optional",
594  ]
595}
596
597rtc_source_set("transport_stats") {
598  visibility = [ ":*" ]
599  sources = [
600    "transport_stats.cc",
601    "transport_stats.h",
602  ]
603  deps = [
604    "../api:dtls_transport_interface",
605    "../api:libjingle_peerconnection_api",
606    "../p2p:rtc_p2p",
607    "../rtc_base",
608  ]
609}
610
611rtc_source_set("used_ids") {
612  visibility = [ ":*" ]
613  sources = [ "used_ids.h" ]
614  deps = [
615    "../api:rtp_parameters",
616    "../media:rtc_media_base",
617    "../rtc_base:checks",
618    "../rtc_base:logging",
619  ]
620}
621
622rtc_source_set("video_track_source_proxy") {
623  visibility = [ "*" ]  # Used by Chrome
624  sources = [
625    "video_track_source_proxy.cc",
626    "video_track_source_proxy.h",
627  ]
628  deps = [
629    ":proxy",
630    "../api:libjingle_peerconnection_api",
631    "../api:media_stream_interface",
632    "../api:scoped_refptr",
633    "../api:video_track_source_constraints",
634    "../api/video:recordable_encoded_frame",
635    "../api/video:video_frame",
636    "../rtc_base:threading",
637  ]
638  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
639}
640
641rtc_source_set("session_description") {
642  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
643  visibility = [ "*" ]  # Used by Chrome and others
644
645  sources = [
646    "session_description.cc",
647    "session_description.h",
648  ]
649  deps = [
650    ":media_protocol_names",
651    ":simulcast_description",
652    "../api:libjingle_peerconnection_api",
653    "../api:rtp_parameters",
654    "../api:rtp_transceiver_direction",
655    "../media:rtc_media_base",
656    "../p2p:rtc_p2p",
657    "../rtc_base:checks",
658    "../rtc_base:socket_address",
659    "../rtc_base:stringutils",
660    "../rtc_base/system:rtc_export",
661  ]
662  absl_deps = [
663    "//third_party/abseil-cpp/absl/algorithm:container",
664    "//third_party/abseil-cpp/absl/memory:memory",
665    "//third_party/abseil-cpp/absl/strings",
666  ]
667}
668
669rtc_source_set("simulcast_description") {
670  sources = [
671    "simulcast_description.cc",
672    "simulcast_description.h",
673  ]
674  deps = [
675    "../rtc_base:checks",
676    "../rtc_base:socket_address",
677    "../rtc_base/system:rtc_export",
678  ]
679  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
680}
681
682rtc_source_set("rtc_pc") {
683  if (build_with_chromium) {
684    visibility = [ "*" ]
685  }
686  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
687  deps = [ "../media:rtc_audio_video" ]
688}
689
690rtc_library("media_protocol_names") {
691  visibility = [ ":*" ]
692  sources = [
693    "media_protocol_names.cc",
694    "media_protocol_names.h",
695  ]
696  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
697}
698
699rtc_source_set("peerconnection") {
700  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
701  visibility = [ "*" ]  # Used by Chromium and others
702  cflags = []
703  sources = []
704
705  deps = [
706    ":audio_rtp_receiver",
707    ":audio_track",
708    ":connection_context",
709    ":data_channel_controller",
710    ":data_channel_utils",
711    ":dtmf_sender",
712    ":ice_server_parsing",
713    ":jitter_buffer_delay",
714    ":jsep_ice_candidate",
715    ":jsep_session_description",
716    ":legacy_stats_collector",
717    ":legacy_stats_collector_interface",
718    ":local_audio_source",
719    ":media_protocol_names",
720    ":media_stream",
721    ":media_stream_observer",
722    ":peer_connection",
723    ":peer_connection_factory",
724    ":peer_connection_internal",
725    ":peer_connection_message_handler",
726    ":proxy",
727    ":remote_audio_source",
728    ":rtc_stats_collector",
729    ":rtc_stats_traversal",
730    ":rtp_parameters_conversion",
731    ":rtp_receiver",
732    ":rtp_sender",
733    ":rtp_transceiver",
734    ":rtp_transmission_manager",
735    ":sctp_data_channel",
736    ":sdp_offer_answer",
737    ":sdp_serializer",
738    ":sdp_state_provider",
739    ":sdp_utils",
740    ":session_description",
741    ":simulcast_description",
742    ":stream_collection",
743    ":track_media_info_map",
744    ":transceiver_list",
745    ":usage_pattern",
746    ":video_rtp_receiver",
747    ":video_track",
748    ":video_track_source",
749    ":webrtc_sdp",
750    ":webrtc_session_description_factory",
751    "../api:array_view",
752    "../api:async_dns_resolver",
753    "../api:audio_options_api",
754    "../api:call_api",
755    "../api:callfactory_api",
756    "../api:fec_controller_api",
757    "../api:field_trials_view",
758    "../api:frame_transformer_interface",
759    "../api:ice_transport_factory",
760    "../api:libjingle_logging_api",
761    "../api:libjingle_peerconnection_api",
762    "../api:media_stream_interface",
763    "../api:network_state_predictor_api",
764    "../api:packet_socket_factory",
765    "../api:priority",
766    "../api:rtc_error",
767    "../api:rtc_event_log_output_file",
768    "../api:rtc_stats_api",
769    "../api:rtp_parameters",
770    "../api:rtp_transceiver_direction",
771    "../api:scoped_refptr",
772    "../api:sequence_checker",
773    "../api/adaptation:resource_adaptation_api",
774    "../api/audio_codecs:audio_codecs_api",
775    "../api/crypto:frame_decryptor_interface",
776    "../api/crypto:options",
777    "../api/neteq:neteq_api",
778    "../api/rtc_event_log",
779    "../api/task_queue",
780    "../api/task_queue:pending_task_safety_flag",
781    "../api/transport:bitrate_settings",
782    "../api/transport:datagram_transport_interface",
783    "../api/transport:enums",
784    "../api/transport:field_trial_based_config",
785    "../api/transport:network_control",
786    "../api/transport:sctp_transport_factory_interface",
787    "../api/units:data_rate",
788    "../api/video:builtin_video_bitrate_allocator_factory",
789    "../api/video:video_bitrate_allocator_factory",
790    "../api/video:video_codec_constants",
791    "../api/video:video_frame",
792    "../api/video:video_rtp_headers",
793    "../api/video_codecs:video_codecs_api",
794    "../call:call_interfaces",
795    "../call:rtp_interfaces",
796    "../call:rtp_sender",
797    "../common_video",
798    "../logging:ice_log",
799    "../media:rtc_data_sctp_transport_internal",
800    "../media:rtc_media_base",
801    "../media:rtc_media_config",
802    "../modules/audio_processing:audio_processing_statistics",
803    "../modules/rtp_rtcp:rtp_rtcp_format",
804    "../p2p:rtc_p2p",
805    "../rtc_base",
806    "../rtc_base:callback_list",
807    "../rtc_base:checks",
808    "../rtc_base:ip_address",
809    "../rtc_base:network_constants",
810    "../rtc_base:rtc_operations_chain",
811    "../rtc_base:safe_minmax",
812    "../rtc_base:socket_address",
813    "../rtc_base:threading",
814    "../rtc_base:weak_ptr",
815    "../rtc_base/experiments:field_trial_parser",
816    "../rtc_base/network:sent_packet",
817    "../rtc_base/synchronization:mutex",
818    "../rtc_base/system:file_wrapper",
819    "../rtc_base/system:no_unique_address",
820    "../rtc_base/system:rtc_export",
821    "../rtc_base/system:unused",
822    "../rtc_base/third_party/base64",
823    "../rtc_base/third_party/sigslot",
824    "../stats",
825    "../system_wrappers",
826    "../system_wrappers:field_trial",
827    "../system_wrappers:metrics",
828  ]
829  absl_deps = [
830    "//third_party/abseil-cpp/absl/algorithm:container",
831    "//third_party/abseil-cpp/absl/strings",
832    "//third_party/abseil-cpp/absl/types:optional",
833  ]
834}
835
836rtc_library("sctp_data_channel") {
837  visibility = [ ":*" ]
838  sources = [
839    "sctp_data_channel.cc",
840    "sctp_data_channel.h",
841  ]
842  deps = [
843    ":data_channel_utils",
844    ":proxy",
845    ":sctp_utils",
846    "../api:libjingle_peerconnection_api",
847    "../api:priority",
848    "../api:rtc_error",
849    "../api:scoped_refptr",
850    "../api/transport:datagram_transport_interface",
851    "../media:rtc_data_sctp_transport_internal",
852    "../media:rtc_media_base",
853    "../rtc_base:checks",
854    "../rtc_base:copy_on_write_buffer",
855    "../rtc_base:logging",
856    "../rtc_base:macromagic",
857    "../rtc_base:rtc_base",
858    "../rtc_base:threading",
859    "../rtc_base:threading",
860    "../rtc_base/system:unused",
861    "../rtc_base/third_party/sigslot:sigslot",
862  ]
863  absl_deps = [
864    "//third_party/abseil-cpp/absl/cleanup",
865    "//third_party/abseil-cpp/absl/types:optional",
866  ]
867}
868
869rtc_library("data_channel_utils") {
870  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
871  visibility = [ "*" ]  # Known to be used externally
872
873  sources = [
874    "data_channel_utils.cc",
875    "data_channel_utils.h",
876  ]
877  deps = [
878    "../api:libjingle_peerconnection_api",
879    "../media:rtc_media_base",
880    "../rtc_base:checks",
881  ]
882}
883
884rtc_library("connection_context") {
885  visibility = [ ":*" ]
886  sources = [
887    "connection_context.cc",
888    "connection_context.h",
889  ]
890  deps = [
891    "../api:callfactory_api",
892    "../api:field_trials_view",
893    "../api:libjingle_peerconnection_api",
894    "../api:media_stream_interface",
895    "../api:refcountedbase",
896    "../api:scoped_refptr",
897    "../api:sequence_checker",
898    "../api/neteq:neteq_api",
899    "../api/transport:field_trial_based_config",
900    "../api/transport:sctp_transport_factory_interface",
901    "../media:rtc_data_sctp_transport_factory",
902    "../media:rtc_media_base",
903    "../p2p:rtc_p2p",
904    "../rtc_base",
905    "../rtc_base:checks",
906    "../rtc_base:macromagic",
907    "../rtc_base:socket_factory",
908    "../rtc_base:socket_server",
909    "../rtc_base:threading",
910    "../rtc_base:timeutils",
911    "../rtc_base/memory:always_valid_pointer",
912  ]
913}
914
915rtc_source_set("data_channel_controller") {
916  visibility = [ ":*" ]
917  sources = [
918    "data_channel_controller.cc",
919    "data_channel_controller.h",
920  ]
921  deps = [
922    ":data_channel_utils",
923    ":peer_connection_internal",
924    ":sctp_data_channel",
925    ":sctp_utils",
926    "../api:libjingle_peerconnection_api",
927    "../api:rtc_error",
928    "../api:scoped_refptr",
929    "../api:sequence_checker",
930    "../api/transport:datagram_transport_interface",
931    "../media:rtc_media_base",
932    "../rtc_base",
933    "../rtc_base:checks",
934    "../rtc_base:copy_on_write_buffer",
935    "../rtc_base:logging",
936    "../rtc_base:macromagic",
937    "../rtc_base:threading",
938    "../rtc_base:weak_ptr",
939    "../rtc_base/third_party/sigslot",
940  ]
941  absl_deps = [
942    "//third_party/abseil-cpp/absl/algorithm:container",
943    "//third_party/abseil-cpp/absl/types:optional",
944  ]
945}
946
947rtc_source_set("peer_connection_sdp_methods") {
948  visibility = [ ":*" ]
949  sources = [ "peer_connection_sdp_methods.h" ]
950  deps = [
951    ":jsep_transport_controller",
952    ":peer_connection_message_handler",
953    ":sctp_data_channel",
954    ":usage_pattern",
955    "../api:libjingle_peerconnection_api",
956    "../call:call_interfaces",
957  ]
958}
959
960rtc_source_set("peer_connection_internal") {
961  visibility = [ ":*" ]
962  sources = [ "peer_connection_internal.h" ]
963  deps = [
964    ":jsep_transport_controller",
965    ":peer_connection_message_handler",
966    ":peer_connection_sdp_methods",
967    ":rtp_transceiver",
968    ":rtp_transmission_manager",
969    ":sctp_data_channel",
970    "../api:libjingle_peerconnection_api",
971    "../call:call_interfaces",
972  ]
973}
974
975rtc_source_set("rtc_stats_collector") {
976  visibility = [
977    ":*",
978    "../api:*",
979  ]
980  sources = [
981    "rtc_stats_collector.cc",
982    "rtc_stats_collector.h",
983  ]
984  deps = [
985    ":channel",
986    ":channel_interface",
987    ":data_channel_utils",
988    ":peer_connection_internal",
989    ":rtc_stats_traversal",
990    ":rtp_receiver",
991    ":rtp_receiver_proxy",
992    ":rtp_sender",
993    ":rtp_sender_proxy",
994    ":rtp_transceiver",
995    ":sctp_data_channel",
996    ":track_media_info_map",
997    ":transport_stats",
998    ":webrtc_sdp",
999    "../api:array_view",
1000    "../api:candidate",
1001    "../api:dtls_transport_interface",
1002    "../api:libjingle_peerconnection_api",
1003    "../api:media_stream_interface",
1004    "../api:rtc_stats_api",
1005    "../api:rtp_parameters",
1006    "../api:scoped_refptr",
1007    "../api:sequence_checker",
1008    "../api/task_queue:task_queue",
1009    "../api/units:time_delta",
1010    "../api/video:video_rtp_headers",
1011    "../call:call_interfaces",
1012    "../common_video:common_video",
1013    "../media:rtc_media_base",
1014    "../modules/audio_processing:audio_processing_statistics",
1015    "../modules/rtp_rtcp:rtp_rtcp_format",
1016    "../p2p:rtc_p2p",
1017    "../rtc_base:checks",
1018    "../rtc_base:event_tracer",
1019    "../rtc_base:ip_address",
1020    "../rtc_base:logging",
1021    "../rtc_base:network_constants",
1022    "../rtc_base:refcount",
1023    "../rtc_base:rtc_base",
1024    "../rtc_base:rtc_event",
1025    "../rtc_base:socket_address",
1026    "../rtc_base:stringutils",
1027    "../rtc_base:threading",
1028    "../rtc_base:timeutils",
1029    "../rtc_base/synchronization:mutex",
1030    "../rtc_base/third_party/sigslot:sigslot",
1031  ]
1032  absl_deps = [
1033    "//third_party/abseil-cpp/absl/functional:bind_front",
1034    "//third_party/abseil-cpp/absl/strings",
1035    "//third_party/abseil-cpp/absl/types:optional",
1036  ]
1037}
1038
1039rtc_source_set("rtc_stats_traversal") {
1040  visibility = [ ":*" ]
1041  sources = [
1042    "rtc_stats_traversal.cc",
1043    "rtc_stats_traversal.h",
1044  ]
1045  deps = [
1046    "../api:rtc_stats_api",
1047    "../api:scoped_refptr",
1048    "../rtc_base:checks",
1049  ]
1050}
1051
1052rtc_source_set("sdp_offer_answer") {
1053  visibility = [ ":*" ]
1054  sources = [
1055    "sdp_offer_answer.cc",  # TODO: Make separate target when not circular
1056    "sdp_offer_answer.h",  # dependent on peerconnection.h
1057  ]
1058  deps = [
1059    ":channel",
1060    ":channel_interface",
1061    ":connection_context",
1062    ":data_channel_controller",
1063    ":dtls_transport",
1064    ":jsep_transport_controller",
1065    ":legacy_stats_collector",
1066    ":media_session",
1067    ":media_stream",
1068    ":media_stream_observer",
1069    ":media_stream_proxy",
1070    ":peer_connection_internal",
1071    ":peer_connection_message_handler",
1072    ":rtp_media_utils",
1073    ":rtp_receiver",
1074    ":rtp_receiver_proxy",
1075    ":rtp_sender",
1076    ":rtp_sender_proxy",
1077    ":rtp_transceiver",
1078    ":rtp_transmission_manager",
1079    ":sdp_state_provider",
1080    ":session_description",
1081    ":simulcast_description",
1082    ":stream_collection",
1083    ":transceiver_list",
1084    ":usage_pattern",
1085    ":webrtc_session_description_factory",
1086    "../api:array_view",
1087    "../api:audio_options_api",
1088    "../api:candidate",
1089    "../api:dtls_transport_interface",
1090    "../api:field_trials_view",
1091    "../api:libjingle_peerconnection_api",
1092    "../api:media_stream_interface",
1093    "../api:rtc_error",
1094    "../api:rtp_parameters",
1095    "../api:rtp_sender_interface",
1096    "../api:rtp_transceiver_direction",
1097    "../api:scoped_refptr",
1098    "../api:sequence_checker",
1099    "../api/crypto:options",
1100    "../api/video:builtin_video_bitrate_allocator_factory",
1101    "../api/video:video_bitrate_allocator_factory",
1102    "../media:rtc_media_base",
1103    "../p2p:rtc_p2p",
1104    "../rtc_base",
1105    "../rtc_base:checks",
1106    "../rtc_base:event_tracer",
1107    "../rtc_base:logging",
1108    "../rtc_base:macromagic",
1109    "../rtc_base:rtc_operations_chain",
1110    "../rtc_base:stringutils",
1111    "../rtc_base:threading",
1112    "../rtc_base:weak_ptr",
1113    "../system_wrappers:metrics",
1114  ]
1115  absl_deps = [
1116    "//third_party/abseil-cpp/absl/algorithm:container",
1117    "//third_party/abseil-cpp/absl/memory:memory",
1118    "//third_party/abseil-cpp/absl/strings:strings",
1119    "//third_party/abseil-cpp/absl/types:optional",
1120  ]
1121}
1122rtc_source_set("jsep_ice_candidate") {
1123  visibility = [ ":*" ]
1124}
1125rtc_source_set("jsep_session_description") {
1126  visibility = [ ":*" ]
1127}
1128rtc_source_set("local_audio_source") {
1129  visibility = [ ":*" ]
1130  sources = [
1131    "local_audio_source.cc",
1132    "local_audio_source.h",
1133  ]
1134  deps = [
1135    "../api:audio_options_api",
1136    "../api:media_stream_interface",
1137    "../api:scoped_refptr",
1138  ]
1139}
1140rtc_source_set("peer_connection") {
1141  visibility = [ ":*" ]
1142  sources = [
1143    "peer_connection.cc",
1144    "peer_connection.h",
1145  ]
1146  deps = [
1147    ":channel",
1148    ":channel_interface",
1149    ":connection_context",
1150    ":data_channel_controller",
1151    ":data_channel_utils",
1152    ":dtls_transport",
1153    ":ice_server_parsing",
1154    ":jsep_transport_controller",
1155    ":legacy_stats_collector",
1156    ":peer_connection_internal",
1157    ":peer_connection_message_handler",
1158    ":rtc_stats_collector",
1159    ":rtp_receiver",
1160    ":rtp_receiver_proxy",
1161    ":rtp_sender",
1162    ":rtp_sender_proxy",
1163    ":rtp_transceiver",
1164    ":rtp_transmission_manager",
1165    ":rtp_transport_internal",
1166    ":sctp_data_channel",
1167    ":sctp_transport",
1168    ":sdp_offer_answer",
1169    ":session_description",
1170    ":simulcast_description",
1171    ":transceiver_list",
1172    ":transport_stats",
1173    ":usage_pattern",
1174    ":webrtc_session_description_factory",
1175    "../api:async_dns_resolver",
1176    "../api:candidate",
1177    "../api:dtls_transport_interface",
1178    "../api:field_trials_view",
1179    "../api:ice_transport_interface",
1180    "../api:libjingle_logging_api",
1181    "../api:libjingle_peerconnection_api",
1182    "../api:media_stream_interface",
1183    "../api:rtc_error",
1184    "../api:rtc_stats_api",
1185    "../api:rtp_parameters",
1186    "../api:rtp_sender_interface",
1187    "../api:rtp_transceiver_direction",
1188    "../api:scoped_refptr",
1189    "../api:sequence_checker",
1190    "../api:turn_customizer",
1191    "../api/adaptation:resource_adaptation_api",
1192    "../api/crypto:options",
1193    "../api/rtc_event_log",
1194    "../api/task_queue:pending_task_safety_flag",
1195    "../api/transport:bitrate_settings",
1196    "../api/transport:datagram_transport_interface",
1197    "../api/transport:enums",
1198    "../api/video:video_codec_constants",
1199    "../call:call_interfaces",
1200    "../media:rtc_media_base",
1201    "../media:rtc_media_config",
1202    "../modules/rtp_rtcp:rtp_rtcp_format",
1203    "../p2p:rtc_p2p",
1204    "../rtc_base",
1205    "../rtc_base:checks",
1206    "../rtc_base:copy_on_write_buffer",
1207    "../rtc_base:event_tracer",
1208    "../rtc_base:ip_address",
1209    "../rtc_base:logging",
1210    "../rtc_base:macromagic",
1211    "../rtc_base:network_constants",
1212    "../rtc_base:socket_address",
1213    "../rtc_base:stringutils",
1214    "../rtc_base:threading",
1215    "../rtc_base:weak_ptr",
1216    "../rtc_base/third_party/sigslot",
1217    "../system_wrappers:metrics",
1218  ]
1219  absl_deps = [
1220    "//third_party/abseil-cpp/absl/algorithm:container",
1221    "//third_party/abseil-cpp/absl/strings:strings",
1222    "//third_party/abseil-cpp/absl/types:optional",
1223  ]
1224}
1225
1226rtc_source_set("sdp_serializer") {
1227  visibility = [ ":*" ]
1228  sources = [
1229    "sdp_serializer.cc",
1230    "sdp_serializer.h",
1231  ]
1232  deps = [
1233    ":session_description",
1234    ":simulcast_description",
1235    "../api:rtc_error",
1236    "../media:rtc_media_base",
1237    "../modules/rtp_rtcp:rtp_rtcp_format",
1238    "../rtc_base:checks",
1239    "../rtc_base:stringutils",
1240  ]
1241  absl_deps = [
1242    "//third_party/abseil-cpp/absl/algorithm:container",
1243    "//third_party/abseil-cpp/absl/strings:strings",
1244    "//third_party/abseil-cpp/absl/types:optional",
1245  ]
1246}
1247rtc_source_set("sdp_utils") {
1248  sources = [
1249    "sdp_utils.cc",
1250    "sdp_utils.h",
1251  ]
1252  deps = [
1253    ":session_description",
1254    "../api:libjingle_peerconnection_api",
1255    "../p2p:rtc_p2p",
1256    "../rtc_base:checks",
1257    "../rtc_base/system:rtc_export",
1258  ]
1259}
1260rtc_source_set("legacy_stats_collector") {
1261  visibility = [ ":*" ]
1262  sources = [
1263    "legacy_stats_collector.cc",
1264    "legacy_stats_collector.h",
1265  ]
1266  deps = [
1267    ":channel",
1268    ":channel_interface",
1269    ":data_channel_utils",
1270    ":legacy_stats_collector_interface",
1271    ":peer_connection_internal",
1272    ":rtp_receiver",
1273    ":rtp_receiver_proxy",
1274    ":rtp_sender_proxy",
1275    ":rtp_transceiver",
1276    ":transport_stats",
1277    "../api:candidate",
1278    "../api:field_trials_view",
1279    "../api:libjingle_peerconnection_api",
1280    "../api:media_stream_interface",
1281    "../api:rtp_parameters",
1282    "../api:rtp_sender_interface",
1283    "../api:scoped_refptr",
1284    "../api:sequence_checker",
1285    "../api/audio_codecs:audio_codecs_api",
1286    "../api/video:video_rtp_headers",
1287    "../call:call_interfaces",
1288    "../media:rtc_media_base",
1289    "../modules/audio_processing:audio_processing_statistics",
1290    "../p2p:rtc_p2p",
1291    "../rtc_base:checks",
1292    "../rtc_base:event_tracer",
1293    "../rtc_base:ip_address",
1294    "../rtc_base:logging",
1295    "../rtc_base:macromagic",
1296    "../rtc_base:network_constants",
1297    "../rtc_base:rtc_base",
1298    "../rtc_base:socket_address",
1299    "../rtc_base:stringutils",
1300    "../rtc_base:threading",
1301    "../rtc_base:timeutils",
1302  ]
1303  absl_deps = [
1304    "//third_party/abseil-cpp/absl/strings",
1305    "//third_party/abseil-cpp/absl/types:optional",
1306  ]
1307}
1308rtc_source_set("stream_collection") {
1309  visibility = [ ":*" ]
1310  sources = [ "stream_collection.h" ]
1311  deps = [ "../api:libjingle_peerconnection_api" ]
1312}
1313rtc_source_set("track_media_info_map") {
1314  visibility = [ ":*" ]
1315  sources = [
1316    "track_media_info_map.cc",
1317    "track_media_info_map.h",
1318  ]
1319  deps = [
1320    ":rtp_receiver",
1321    ":rtp_sender",
1322    "../api:array_view",
1323    "../api:media_stream_interface",
1324    "../api:rtp_parameters",
1325    "../api:scoped_refptr",
1326    "../media:rtc_media_base",
1327    "../rtc_base:checks",
1328    "../rtc_base:refcount",
1329    "../rtc_base:threading",
1330  ]
1331  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1332}
1333rtc_source_set("webrtc_sdp") {
1334  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
1335  visibility = [ "*" ]  # Used by Chrome and more
1336
1337  sources = [
1338    "jsep_ice_candidate.cc",
1339    "jsep_session_description.cc",
1340    "webrtc_sdp.cc",
1341    "webrtc_sdp.h",
1342  ]
1343  deps = [
1344    ":media_protocol_names",
1345    ":media_session",
1346    ":sdp_serializer",
1347    ":session_description",
1348    ":simulcast_description",
1349    "../api:candidate",
1350    "../api:libjingle_peerconnection_api",
1351    "../api:rtc_error",
1352    "../api:rtp_parameters",
1353    "../api:rtp_transceiver_direction",
1354    "../media:rtc_data_sctp_transport_internal",
1355    "../media:rtc_media_base",
1356    "../p2p:rtc_p2p",
1357    "../rtc_base:checks",
1358    "../rtc_base:ip_address",
1359    "../rtc_base:logging",
1360    "../rtc_base:macromagic",
1361    "../rtc_base:network_constants",
1362    "../rtc_base:rtc_base",
1363    "../rtc_base:socket_address",
1364    "../rtc_base:stringutils",
1365    "../rtc_base/system:rtc_export",
1366  ]
1367  absl_deps = [
1368    "//third_party/abseil-cpp/absl/algorithm:container",
1369    "//third_party/abseil-cpp/absl/strings",
1370    "//third_party/abseil-cpp/absl/types:optional",
1371  ]
1372}
1373rtc_source_set("webrtc_session_description_factory") {
1374  visibility = [ ":*" ]
1375  sources = [
1376    "webrtc_session_description_factory.cc",
1377    "webrtc_session_description_factory.h",
1378  ]
1379  deps = [
1380    ":connection_context",
1381    ":media_session",
1382    ":sdp_state_provider",
1383    ":session_description",
1384    "../api:libjingle_peerconnection_api",
1385    "../api:rtc_error",
1386    "../api:scoped_refptr",
1387    "../api:sequence_checker",
1388    "../api/task_queue",
1389    "../p2p:rtc_p2p",
1390    "../rtc_base:checks",
1391    "../rtc_base:logging",
1392    "../rtc_base:rtc_base",
1393    "../rtc_base:stringutils",
1394    "../rtc_base:weak_ptr",
1395  ]
1396  absl_deps = [
1397    "//third_party/abseil-cpp/absl/algorithm:container",
1398    "//third_party/abseil-cpp/absl/functional:any_invocable",
1399    "//third_party/abseil-cpp/absl/types:optional",
1400  ]
1401}
1402
1403rtc_library("ice_server_parsing") {
1404  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
1405  visibility = [ "*" ]  # Known to be used externally
1406
1407  sources = [
1408    "ice_server_parsing.cc",
1409    "ice_server_parsing.h",
1410  ]
1411  deps = [
1412    "../api:libjingle_peerconnection_api",
1413    "../api:rtc_error",
1414    "../p2p:rtc_p2p",
1415    "../rtc_base:checks",
1416    "../rtc_base:ip_address",
1417    "../rtc_base:logging",
1418    "../rtc_base:macromagic",
1419    "../rtc_base:socket_address",
1420    "../rtc_base:stringutils",
1421    "../rtc_base/system:rtc_export",
1422  ]
1423}
1424
1425rtc_library("media_stream_observer") {
1426  sources = [
1427    "media_stream_observer.cc",
1428    "media_stream_observer.h",
1429  ]
1430  deps = [
1431    "../api:media_stream_interface",
1432    "../api:scoped_refptr",
1433  ]
1434  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
1435}
1436rtc_source_set("peer_connection_factory") {
1437  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
1438  visibility = [ "*" ]  # Known to be used externally
1439  sources = [
1440    "peer_connection_factory.cc",
1441    "peer_connection_factory.h",
1442  ]
1443  deps = [
1444    ":local_audio_source",
1445    ":media_stream_proxy",
1446    ":media_stream_track_proxy",
1447    ":peer_connection",
1448    ":peer_connection_factory_proxy",
1449    ":peer_connection_proxy",
1450    "../api:audio_options_api",
1451    "../api:callfactory_api",
1452    "../api:fec_controller_api",
1453    "../api:field_trials_view",
1454    "../api:ice_transport_interface",
1455    "../api:libjingle_peerconnection_api",
1456    "../api:media_stream_interface",
1457    "../api:network_state_predictor_api",
1458    "../api:packet_socket_factory",
1459    "../api:rtc_error",
1460    "../api:rtp_parameters",
1461    "../api:scoped_refptr",
1462    "../api:sequence_checker",
1463    "../api/metronome",
1464    "../api/neteq:neteq_api",
1465    "../api/rtc_event_log:rtc_event_log",
1466    "../api/task_queue:task_queue",
1467    "../api/transport:bitrate_settings",
1468    "../api/transport:network_control",
1469    "../api/transport:sctp_transport_factory_interface",
1470    "../api/units:data_rate",
1471    "../call:call_interfaces",
1472    "../call:rtp_interfaces",
1473    "../call:rtp_sender",
1474    "../media:rtc_media_base",
1475    "../p2p:rtc_p2p",
1476    "../pc:audio_track",
1477    "../pc:connection_context",
1478    "../pc:media_stream",
1479    "../pc:rtp_parameters_conversion",
1480    "../pc:session_description",
1481    "../pc:video_track",
1482    "../rtc_base:checks",
1483    "../rtc_base:logging",
1484    "../rtc_base:macromagic",
1485    "../rtc_base:rtc_base",
1486    "../rtc_base:safe_conversions",
1487    "../rtc_base:threading",
1488    "../rtc_base/experiments:field_trial_parser",
1489    "../rtc_base/system:file_wrapper",
1490  ]
1491  absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
1492}
1493
1494rtc_library("peer_connection_message_handler") {
1495  visibility = [ ":*" ]
1496  sources = [
1497    "peer_connection_message_handler.cc",
1498    "peer_connection_message_handler.h",
1499  ]
1500  deps = [
1501    ":legacy_stats_collector_interface",
1502    "../api:libjingle_peerconnection_api",
1503    "../api:media_stream_interface",
1504    "../api:rtc_error",
1505    "../api:scoped_refptr",
1506    "../api:sequence_checker",
1507    "../api/task_queue",
1508    "../api/task_queue:pending_task_safety_flag",
1509    "../rtc_base:checks",
1510  ]
1511}
1512
1513rtc_library("usage_pattern") {
1514  visibility = [ ":*" ]
1515  sources = [
1516    "usage_pattern.cc",
1517    "usage_pattern.h",
1518  ]
1519  deps = [
1520    "../api:libjingle_peerconnection_api",
1521    "../rtc_base:logging",
1522    "../system_wrappers:metrics",
1523  ]
1524}
1525
1526rtc_library("rtp_transceiver") {
1527  visibility = [ ":*" ]
1528  sources = [
1529    "rtp_transceiver.cc",
1530    "rtp_transceiver.h",
1531  ]
1532  deps = [
1533    ":channel",
1534    ":channel_interface",
1535    ":connection_context",
1536    ":peer_connection_sdp_methods",
1537    ":proxy",
1538    ":rtp_media_utils",
1539    ":rtp_parameters_conversion",
1540    ":rtp_receiver",
1541    ":rtp_receiver_proxy",
1542    ":rtp_sender",
1543    ":rtp_sender_proxy",
1544    ":rtp_transport_internal",
1545    ":session_description",
1546    "../api:array_view",
1547    "../api:audio_options_api",
1548    "../api:libjingle_peerconnection_api",
1549    "../api:rtc_error",
1550    "../api:rtp_parameters",
1551    "../api:rtp_sender_interface",
1552    "../api:rtp_transceiver_direction",
1553    "../api:scoped_refptr",
1554    "../api:sequence_checker",
1555    "../api/task_queue",
1556    "../api/task_queue:pending_task_safety_flag",
1557    "../api/video:video_bitrate_allocator_factory",
1558    "../media:rtc_media_base",
1559    "../rtc_base:checks",
1560    "../rtc_base:logging",
1561    "../rtc_base:macromagic",
1562    "../rtc_base:threading",
1563    "../rtc_base/third_party/sigslot",
1564  ]
1565  absl_deps = [
1566    "//third_party/abseil-cpp/absl/algorithm:container",
1567    "//third_party/abseil-cpp/absl/memory",
1568    "//third_party/abseil-cpp/absl/strings",
1569    "//third_party/abseil-cpp/absl/types:optional",
1570  ]
1571}
1572
1573rtc_library("rtp_transmission_manager") {
1574  visibility = [ ":*" ]
1575  sources = [
1576    "rtp_transmission_manager.cc",
1577    "rtp_transmission_manager.h",
1578  ]
1579  deps = [
1580    ":audio_rtp_receiver",
1581    ":channel",
1582    ":channel_interface",
1583    ":legacy_stats_collector_interface",
1584    ":rtp_receiver",
1585    ":rtp_receiver_proxy",
1586    ":rtp_sender",
1587    ":rtp_sender_proxy",
1588    ":rtp_transceiver",
1589    ":transceiver_list",
1590    ":usage_pattern",
1591    ":video_rtp_receiver",
1592    "../api:libjingle_peerconnection_api",
1593    "../api:media_stream_interface",
1594    "../api:rtc_error",
1595    "../api:rtp_parameters",
1596    "../api:rtp_sender_interface",
1597    "../api:rtp_transceiver_direction",
1598    "../api:scoped_refptr",
1599    "../api:sequence_checker",
1600    "../media:rtc_media_base",
1601    "../rtc_base",
1602    "../rtc_base:checks",
1603    "../rtc_base:logging",
1604    "../rtc_base:macromagic",
1605    "../rtc_base:threading",
1606    "../rtc_base:weak_ptr",
1607    "../rtc_base/third_party/sigslot",
1608  ]
1609  absl_deps = [
1610    "//third_party/abseil-cpp/absl/algorithm:container",
1611    "//third_party/abseil-cpp/absl/strings",
1612    "//third_party/abseil-cpp/absl/types:optional",
1613  ]
1614}
1615
1616rtc_library("transceiver_list") {
1617  visibility = [ ":*" ]
1618  sources = [
1619    "transceiver_list.cc",
1620    "transceiver_list.h",
1621  ]
1622  deps = [
1623    ":rtp_transceiver",
1624    "../api:libjingle_peerconnection_api",
1625    "../api:rtc_error",
1626    "../api:rtp_parameters",
1627    "../api:rtp_sender_interface",
1628    "../api:scoped_refptr",
1629    "../api:sequence_checker",
1630    "../rtc_base:checks",
1631    "../rtc_base:macromagic",
1632    "../rtc_base/system:no_unique_address",
1633  ]
1634  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1635}
1636
1637rtc_library("rtp_receiver") {
1638  visibility = [ ":*" ]
1639  sources = [
1640    "rtp_receiver.cc",
1641    "rtp_receiver.h",
1642  ]
1643  deps = [
1644    ":media_stream",
1645    ":media_stream_proxy",
1646    ":video_track_source",
1647    "../api:dtls_transport_interface",
1648    "../api:libjingle_peerconnection_api",
1649    "../api:media_stream_interface",
1650    "../api:rtp_parameters",
1651    "../api:scoped_refptr",
1652    "../api/crypto:frame_decryptor_interface",
1653    "../api/video:video_frame",
1654    "../media:rtc_media_base",
1655    "../rtc_base:checks",
1656    "../rtc_base:logging",
1657    "../rtc_base:rtc_base",
1658    "../rtc_base:threading",
1659  ]
1660  absl_deps = [
1661    "//third_party/abseil-cpp/absl/algorithm:container",
1662    "//third_party/abseil-cpp/absl/strings",
1663    "//third_party/abseil-cpp/absl/types:optional",
1664  ]
1665}
1666
1667rtc_library("audio_rtp_receiver") {
1668  visibility = [ ":*" ]
1669  sources = [
1670    "audio_rtp_receiver.cc",
1671    "audio_rtp_receiver.h",
1672  ]
1673  deps = [
1674    ":audio_track",
1675    ":jitter_buffer_delay",
1676    ":media_stream",
1677    ":media_stream_track_proxy",
1678    ":remote_audio_source",
1679    ":rtp_receiver",
1680    "../api:dtls_transport_interface",
1681    "../api:frame_transformer_interface",
1682    "../api:libjingle_peerconnection_api",
1683    "../api:media_stream_interface",
1684    "../api:rtp_parameters",
1685    "../api:scoped_refptr",
1686    "../api:sequence_checker",
1687    "../api/crypto:frame_decryptor_interface",
1688    "../api/task_queue:pending_task_safety_flag",
1689    "../api/transport/rtp:rtp_source",
1690    "../media:rtc_media_base",
1691    "../rtc_base",
1692    "../rtc_base:checks",
1693    "../rtc_base:macromagic",
1694    "../rtc_base:threading",
1695    "../rtc_base/system:no_unique_address",
1696  ]
1697  absl_deps = [
1698    "//third_party/abseil-cpp/absl/algorithm:container",
1699    "//third_party/abseil-cpp/absl/strings",
1700    "//third_party/abseil-cpp/absl/types:optional",
1701  ]
1702}
1703
1704rtc_library("video_rtp_receiver") {
1705  visibility = [ ":*" ]
1706  sources = [
1707    "video_rtp_receiver.cc",
1708    "video_rtp_receiver.h",
1709  ]
1710  deps = [
1711    ":jitter_buffer_delay",
1712    ":media_stream",
1713    ":media_stream_track_proxy",
1714    ":rtp_receiver",
1715    ":video_rtp_track_source",
1716    ":video_track",
1717    "../api:dtls_transport_interface",
1718    "../api:frame_transformer_interface",
1719    "../api:libjingle_peerconnection_api",
1720    "../api:media_stream_interface",
1721    "../api:rtp_parameters",
1722    "../api:scoped_refptr",
1723    "../api:sequence_checker",
1724    "../api/crypto:frame_decryptor_interface",
1725    "../api/transport/rtp:rtp_source",
1726    "../api/video:recordable_encoded_frame",
1727    "../api/video:video_frame",
1728    "../media:rtc_media_base",
1729    "../rtc_base",
1730    "../rtc_base:checks",
1731    "../rtc_base:logging",
1732    "../rtc_base:macromagic",
1733    "../rtc_base:threading",
1734    "../rtc_base/system:no_unique_address",
1735  ]
1736  absl_deps = [
1737    "//third_party/abseil-cpp/absl/algorithm:container",
1738    "//third_party/abseil-cpp/absl/strings",
1739    "//third_party/abseil-cpp/absl/types:optional",
1740  ]
1741}
1742
1743rtc_library("video_rtp_track_source") {
1744  visibility = [ ":*" ]
1745  sources = [
1746    "video_rtp_track_source.cc",
1747    "video_rtp_track_source.h",
1748  ]
1749  deps = [
1750    ":video_track_source",
1751    "../api:sequence_checker",
1752    "../api/video:recordable_encoded_frame",
1753    "../api/video:video_frame",
1754    "../media:rtc_media_base",
1755    "../rtc_base",
1756    "../rtc_base:checks",
1757    "../rtc_base:macromagic",
1758    "../rtc_base/synchronization:mutex",
1759    "../rtc_base/system:no_unique_address",
1760  ]
1761}
1762
1763rtc_library("audio_track") {
1764  visibility = [ ":*" ]
1765  sources = [
1766    "audio_track.cc",
1767    "audio_track.h",
1768  ]
1769  deps = [
1770    "../api:media_stream_interface",
1771    "../api:scoped_refptr",
1772    "../api:sequence_checker",
1773    "../rtc_base:checks",
1774    "../rtc_base/system:no_unique_address",
1775  ]
1776}
1777
1778rtc_library("video_track") {
1779  visibility = [ ":*" ]
1780  sources = [
1781    "video_track.cc",
1782    "video_track.h",
1783  ]
1784  deps = [
1785    ":video_track_source_proxy",
1786    "../api:media_stream_interface",
1787    "../api:scoped_refptr",
1788    "../api:sequence_checker",
1789    "../api/video:video_frame",
1790    "../media:rtc_media_base",
1791    "../rtc_base",
1792    "../rtc_base:checks",
1793    "../rtc_base:macromagic",
1794    "../rtc_base:threading",
1795    "../rtc_base/system:no_unique_address",
1796  ]
1797  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1798}
1799
1800rtc_source_set("sdp_state_provider") {
1801  visibility = [ ":*" ]
1802  sources = [ "sdp_state_provider.h" ]
1803  deps = [ "../api:libjingle_peerconnection_api" ]
1804}
1805
1806rtc_library("jitter_buffer_delay") {
1807  visibility = [ ":*" ]
1808  sources = [
1809    "jitter_buffer_delay.cc",
1810    "jitter_buffer_delay.h",
1811  ]
1812  deps = [
1813    "../api:sequence_checker",
1814    "../rtc_base:checks",
1815    "../rtc_base:macromagic",
1816    "../rtc_base:safe_conversions",
1817    "../rtc_base:safe_minmax",
1818    "../rtc_base/system:no_unique_address",
1819  ]
1820  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1821}
1822
1823rtc_library("remote_audio_source") {
1824  visibility = [ ":*" ]
1825  sources = [
1826    "remote_audio_source.cc",
1827    "remote_audio_source.h",
1828  ]
1829  deps = [
1830    ":channel",
1831    "../api:call_api",
1832    "../api:media_stream_interface",
1833    "../api:scoped_refptr",
1834    "../api:sequence_checker",
1835    "../api/task_queue",
1836    "../media:rtc_media_base",
1837    "../rtc_base",
1838    "../rtc_base:checks",
1839    "../rtc_base:event_tracer",
1840    "../rtc_base:logging",
1841    "../rtc_base:safe_conversions",
1842    "../rtc_base:stringutils",
1843    "../rtc_base/synchronization:mutex",
1844  ]
1845  absl_deps = [
1846    "//third_party/abseil-cpp/absl/algorithm:container",
1847    "//third_party/abseil-cpp/absl/strings",
1848    "//third_party/abseil-cpp/absl/types:optional",
1849  ]
1850}
1851
1852rtc_library("rtp_sender") {
1853  visibility = [ ":*" ]
1854  sources = [
1855    "rtp_sender.cc",
1856    "rtp_sender.h",
1857  ]
1858  deps = [
1859    ":dtmf_sender",
1860    ":legacy_stats_collector_interface",
1861    "../api:audio_options_api",
1862    "../api:dtls_transport_interface",
1863    "../api:dtmf_sender_interface",
1864    "../api:frame_transformer_interface",
1865    "../api:libjingle_peerconnection_api",
1866    "../api:media_stream_interface",
1867    "../api:priority",
1868    "../api:rtc_error",
1869    "../api:rtp_parameters",
1870    "../api:rtp_sender_interface",
1871    "../api:scoped_refptr",
1872    "../api:sequence_checker",
1873    "../api/crypto:frame_encryptor_interface",
1874    "../media:rtc_media_base",
1875    "../rtc_base:checks",
1876    "../rtc_base:event_tracer",
1877    "../rtc_base:logging",
1878    "../rtc_base:macromagic",
1879    "../rtc_base:rtc_base",
1880    "../rtc_base:threading",
1881    "../rtc_base/synchronization:mutex",
1882    "../rtc_base/third_party/sigslot",
1883  ]
1884  absl_deps = [
1885    "//third_party/abseil-cpp/absl/algorithm:container",
1886    "//third_party/abseil-cpp/absl/strings",
1887    "//third_party/abseil-cpp/absl/types:optional",
1888  ]
1889}
1890
1891rtc_library("rtp_parameters_conversion") {
1892  visibility = [ ":*" ]
1893  sources = [
1894    "rtp_parameters_conversion.cc",
1895    "rtp_parameters_conversion.h",
1896  ]
1897  deps = [
1898    ":session_description",
1899    "../api:array_view",
1900    "../api:libjingle_peerconnection_api",
1901    "../api:rtc_error",
1902    "../api:rtp_parameters",
1903    "../media:rtc_media_base",
1904    "../rtc_base:checks",
1905    "../rtc_base:logging",
1906    "../rtc_base:rtc_base",
1907    "../rtc_base:stringutils",
1908  ]
1909  absl_deps = [
1910    "//third_party/abseil-cpp/absl/algorithm:container",
1911    "//third_party/abseil-cpp/absl/strings",
1912    "//third_party/abseil-cpp/absl/types:optional",
1913  ]
1914}
1915
1916rtc_library("dtmf_sender") {
1917  visibility = [ ":*" ]
1918  sources = [
1919    "dtmf_sender.cc",
1920    "dtmf_sender.h",
1921  ]
1922  deps = [
1923    ":proxy",
1924    "../api:dtmf_sender_interface",
1925    "../api:libjingle_peerconnection_api",
1926    "../api:scoped_refptr",
1927    "../api:sequence_checker",
1928    "../api/task_queue",
1929    "../api/task_queue:pending_task_safety_flag",
1930    "../api/units:time_delta",
1931    "../rtc_base:checks",
1932    "../rtc_base:logging",
1933    "../rtc_base:macromagic",
1934    "../rtc_base:refcount",
1935    "../rtc_base/third_party/sigslot",
1936  ]
1937  absl_deps = [
1938    "//third_party/abseil-cpp/absl/algorithm:container",
1939    "//third_party/abseil-cpp/absl/strings",
1940    "//third_party/abseil-cpp/absl/types:optional",
1941  ]
1942}
1943
1944rtc_library("media_stream") {
1945  visibility = [ ":*" ]
1946  sources = [
1947    "media_stream.cc",
1948    "media_stream.h",
1949  ]
1950  deps = [
1951    "../api:libjingle_peerconnection_api",
1952    "../api:media_stream_interface",
1953    "../api:scoped_refptr",
1954    "../rtc_base:checks",
1955    "../rtc_base:rtc_base",
1956  ]
1957  absl_deps = [
1958    "//third_party/abseil-cpp/absl/algorithm:container",
1959    "//third_party/abseil-cpp/absl/strings",
1960    "//third_party/abseil-cpp/absl/types:optional",
1961  ]
1962}
1963
1964rtc_library("video_track_source") {
1965  sources = [
1966    "video_track_source.cc",
1967    "video_track_source.h",
1968  ]
1969  deps = [
1970    "../api:media_stream_interface",
1971    "../api:sequence_checker",
1972    "../api/video:recordable_encoded_frame",
1973    "../api/video:video_frame",
1974    "../media:rtc_media_base",
1975    "../rtc_base:checks",
1976    "../rtc_base:macromagic",
1977    "../rtc_base/system:no_unique_address",
1978    "../rtc_base/system:rtc_export",
1979  ]
1980  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1981}
1982
1983rtc_source_set("legacy_stats_collector_interface") {
1984  visibility = [ ":*" ]
1985  sources = [ "legacy_stats_collector_interface.h" ]
1986  deps = [
1987    "../api:libjingle_peerconnection_api",
1988    "../api:media_stream_interface",
1989  ]
1990}
1991
1992rtc_source_set("libjingle_peerconnection") {
1993  # TODO(bugs.webrtc.org/13661): Reduce visibility if possible
1994  visibility = [ "*" ]  # Used by Chrome and others
1995
1996  deps = [
1997    ":peerconnection",
1998    "../api:libjingle_peerconnection_api",
1999  ]
2000}
2001
2002if (rtc_include_tests && !build_with_chromium) {
2003  rtc_test("rtc_pc_unittests") {
2004    testonly = true
2005
2006    sources = [
2007      "audio_rtp_receiver_unittest.cc",
2008      "channel_unittest.cc",
2009      "dtls_srtp_transport_unittest.cc",
2010      "dtls_transport_unittest.cc",
2011      "ice_transport_unittest.cc",
2012      "jsep_transport_controller_unittest.cc",
2013      "jsep_transport_unittest.cc",
2014      "media_session_unittest.cc",
2015      "rtcp_mux_filter_unittest.cc",
2016      "rtp_transport_unittest.cc",
2017      "sctp_transport_unittest.cc",
2018      "session_description_unittest.cc",
2019      "srtp_filter_unittest.cc",
2020      "srtp_session_unittest.cc",
2021      "srtp_transport_unittest.cc",
2022      "test/rtp_transport_test_util.h",
2023      "test/srtp_test_util.h",
2024      "used_ids_unittest.cc",
2025      "video_rtp_receiver_unittest.cc",
2026    ]
2027
2028    include_dirs = [ "//third_party/libsrtp/srtp" ]
2029
2030    if (is_win) {
2031      libs = [ "strmiids.lib" ]
2032    }
2033
2034    deps = [
2035      ":audio_rtp_receiver",
2036      ":channel",
2037      ":dtls_srtp_transport",
2038      ":dtls_transport",
2039      ":ice_transport",
2040      ":jsep_transport",
2041      ":jsep_transport_controller",
2042      ":libjingle_peerconnection",
2043      ":media_protocol_names",
2044      ":media_session",
2045      ":pc_test_utils",
2046      ":peerconnection",
2047      ":rtc_pc",
2048      ":rtcp_mux_filter",
2049      ":rtp_media_utils",
2050      ":rtp_transport",
2051      ":rtp_transport_internal",
2052      ":sctp_transport",
2053      ":session_description",
2054      ":srtp_filter",
2055      ":srtp_session",
2056      ":srtp_transport",
2057      ":used_ids",
2058      ":video_rtp_receiver",
2059      "../api:array_view",
2060      "../api:audio_options_api",
2061      "../api:candidate",
2062      "../api:dtls_transport_interface",
2063      "../api:ice_transport_factory",
2064      "../api:libjingle_peerconnection_api",
2065      "../api:make_ref_counted",
2066      "../api:make_ref_counted",
2067      "../api:rtc_error",
2068      "../api:rtp_headers",
2069      "../api:rtp_parameters",
2070      "../api:scoped_refptr",
2071      "../api:sequence_checker",
2072      "../api/task_queue:pending_task_safety_flag",
2073      "../api/task_queue:task_queue",
2074      "../api/transport:datagram_transport_interface",
2075      "../api/transport:enums",
2076      "../api/video:builtin_video_bitrate_allocator_factory",
2077      "../api/video:recordable_encoded_frame",
2078      "../api/video/test:mock_recordable_encoded_frame",
2079      "../call:rtp_interfaces",
2080      "../call:rtp_receiver",
2081      "../media:rtc_data_sctp_transport_internal",
2082      "../media:rtc_media_base",
2083      "../media:rtc_media_tests_utils",
2084      "../modules/rtp_rtcp:rtp_rtcp_format",
2085      "../p2p:fake_ice_transport",
2086      "../p2p:fake_port_allocator",
2087      "../p2p:p2p_test_utils",
2088      "../p2p:rtc_p2p",
2089      "../rtc_base",
2090      "../rtc_base:buffer",
2091      "../rtc_base:byte_order",
2092      "../rtc_base:checks",
2093      "../rtc_base:copy_on_write_buffer",
2094      "../rtc_base:gunit_helpers",
2095      "../rtc_base:logging",
2096      "../rtc_base:macromagic",
2097      "../rtc_base:rtc_base_tests_utils",
2098      "../rtc_base:socket_address",
2099      "../rtc_base:stringutils",
2100      "../rtc_base:task_queue_for_test",
2101      "../rtc_base:threading",
2102      "../rtc_base/containers:flat_set",
2103      "../rtc_base/third_party/sigslot",
2104      "../system_wrappers:metrics",
2105      "../test:explicit_key_value_config",
2106      "../test:run_loop",
2107      "../test:scoped_key_value_config",
2108      "../test:test_main",
2109      "../test:test_support",
2110    ]
2111    absl_deps = [
2112      "//third_party/abseil-cpp/absl/algorithm:container",
2113      "//third_party/abseil-cpp/absl/functional:any_invocable",
2114      "//third_party/abseil-cpp/absl/memory",
2115      "//third_party/abseil-cpp/absl/strings",
2116      "//third_party/abseil-cpp/absl/types:optional",
2117    ]
2118
2119    if (rtc_build_libsrtp) {
2120      deps += [ "//third_party/libsrtp" ]
2121    }
2122
2123    if (is_android) {
2124      use_default_launcher = false
2125      deps += [
2126        "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
2127        "//testing/android/native_test:native_test_java",
2128        "//testing/android/native_test:native_test_support",
2129      ]
2130    }
2131  }
2132
2133  rtc_library("peerconnection_perf_tests") {
2134    testonly = true
2135    sources = [ "peer_connection_rampup_tests.cc" ]
2136    deps = [
2137      ":pc_test_utils",
2138      ":peer_connection",
2139      ":peerconnection",
2140      ":peerconnection_wrapper",
2141      "../api:audio_options_api",
2142      "../api:create_peerconnection_factory",
2143      "../api:libjingle_peerconnection_api",
2144      "../api:media_stream_interface",
2145      "../api:rtc_error",
2146      "../api:rtc_stats_api",
2147      "../api:scoped_refptr",
2148      "../api/audio:audio_mixer_api",
2149      "../api/audio_codecs:audio_codecs_api",
2150      "../api/audio_codecs:builtin_audio_decoder_factory",
2151      "../api/audio_codecs:builtin_audio_encoder_factory",
2152      "../api/test/metrics:global_metrics_logger_and_exporter",
2153      "../api/test/metrics:metric",
2154      "../api/video_codecs:builtin_video_decoder_factory",
2155      "../api/video_codecs:builtin_video_encoder_factory",
2156      "../api/video_codecs:video_codecs_api",
2157      "../media:rtc_media_tests_utils",
2158      "../modules/audio_device:audio_device_api",
2159      "../modules/audio_processing:api",
2160      "../p2p:p2p_test_utils",
2161      "../p2p:rtc_p2p",
2162      "../rtc_base",
2163      "../rtc_base:checks",
2164      "../rtc_base:gunit_helpers",
2165      "../rtc_base:rtc_base_tests_utils",
2166      "../rtc_base:socket_address",
2167      "../rtc_base:socket_factory",
2168      "../rtc_base:task_queue_for_test",
2169      "../rtc_base:threading",
2170      "../system_wrappers",
2171      "../test:test_support",
2172    ]
2173    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
2174  }
2175
2176  rtc_library("peerconnection_wrapper") {
2177    testonly = true
2178    sources = [
2179      "peer_connection_wrapper.cc",
2180      "peer_connection_wrapper.h",
2181    ]
2182    deps = [
2183      ":pc_test_utils",
2184      ":peerconnection",
2185      ":sdp_utils",
2186      "../api:function_view",
2187      "../api:libjingle_peerconnection_api",
2188      "../api:media_stream_interface",
2189      "../api:rtc_error",
2190      "../api:rtc_stats_api",
2191      "../api:rtp_parameters",
2192      "../api:rtp_sender_interface",
2193      "../api:scoped_refptr",
2194      "../rtc_base:checks",
2195      "../rtc_base:gunit_helpers",
2196      "../rtc_base:logging",
2197      "../test:test_support",
2198    ]
2199  }
2200
2201  rtc_test("slow_peer_connection_unittests") {
2202    testonly = true
2203    sources = [ "slow_peer_connection_integration_test.cc" ]
2204    deps = [
2205      ":integration_test_helpers",
2206      ":pc_test_utils",
2207      "../api:dtmf_sender_interface",
2208      "../api:libjingle_peerconnection_api",
2209      "../api:scoped_refptr",
2210      "../api/units:time_delta",
2211      "../p2p:p2p_server_utils",
2212      "../p2p:p2p_test_utils",
2213      "../p2p:rtc_p2p",
2214      "../rtc_base",
2215      "../rtc_base:gunit_helpers",
2216      "../rtc_base:logging",
2217      "../rtc_base:rtc_base_tests_utils",
2218      "../rtc_base:socket_address",
2219      "../test:test_main",
2220      "../test:test_support",
2221      "//third_party/abseil-cpp/absl/algorithm:container",
2222      "//third_party/abseil-cpp/absl/strings",
2223      "//third_party/abseil-cpp/absl/types:optional",
2224    ]
2225  }
2226
2227  rtc_test("peerconnection_unittests") {
2228    testonly = true
2229    sources = [
2230      "data_channel_integrationtest.cc",
2231      "data_channel_unittest.cc",
2232      "dtmf_sender_unittest.cc",
2233      "ice_server_parsing_unittest.cc",
2234      "jitter_buffer_delay_unittest.cc",
2235      "jsep_session_description_unittest.cc",
2236      "legacy_stats_collector_unittest.cc",
2237      "local_audio_source_unittest.cc",
2238      "media_stream_unittest.cc",
2239      "peer_connection_adaptation_integrationtest.cc",
2240      "peer_connection_bundle_unittest.cc",
2241      "peer_connection_crypto_unittest.cc",
2242      "peer_connection_data_channel_unittest.cc",
2243      "peer_connection_end_to_end_unittest.cc",
2244      "peer_connection_factory_unittest.cc",
2245      "peer_connection_field_trial_tests.cc",
2246      "peer_connection_header_extension_unittest.cc",
2247      "peer_connection_histogram_unittest.cc",
2248      "peer_connection_ice_unittest.cc",
2249      "peer_connection_integrationtest.cc",
2250      "peer_connection_interface_unittest.cc",
2251      "peer_connection_jsep_unittest.cc",
2252      "peer_connection_media_unittest.cc",
2253      "peer_connection_rtp_unittest.cc",
2254      "peer_connection_signaling_unittest.cc",
2255      "peer_connection_simulcast_unittest.cc",
2256      "peer_connection_svc_integrationtest.cc",
2257      "peer_connection_wrapper.cc",
2258      "peer_connection_wrapper.h",
2259      "proxy_unittest.cc",
2260      "rtc_stats_collector_unittest.cc",
2261      "rtc_stats_integrationtest.cc",
2262      "rtc_stats_traversal_unittest.cc",
2263      "rtp_media_utils_unittest.cc",
2264      "rtp_parameters_conversion_unittest.cc",
2265      "rtp_sender_receiver_unittest.cc",
2266      "rtp_transceiver_unittest.cc",
2267      "sctp_utils_unittest.cc",
2268      "sdp_offer_answer_unittest.cc",
2269      "sdp_serializer_unittest.cc",
2270      "test/fake_audio_capture_module_unittest.cc",
2271      "test/test_sdp_strings.h",
2272      "track_media_info_map_unittest.cc",
2273      "video_rtp_track_source_unittest.cc",
2274      "video_track_unittest.cc",
2275      "webrtc_sdp_unittest.cc",
2276    ]
2277
2278    deps = [
2279      ":audio_rtp_receiver",
2280      ":audio_track",
2281      ":channel",
2282      ":channel_interface",
2283      ":data_channel_controller_unittest",
2284      ":dtls_srtp_transport",
2285      ":dtls_transport",
2286      ":dtmf_sender",
2287      ":ice_server_parsing",
2288      ":integration_test_helpers",
2289      ":jitter_buffer_delay",
2290      ":legacy_stats_collector",
2291      ":local_audio_source",
2292      ":media_protocol_names",
2293      ":media_session",
2294      ":media_stream",
2295      ":peer_connection",
2296      ":peer_connection_factory",
2297      ":peer_connection_proxy",
2298      ":proxy",
2299      ":rtc_stats_collector",
2300      ":rtc_stats_traversal",
2301      ":rtp_media_utils",
2302      ":rtp_parameters_conversion",
2303      ":rtp_receiver",
2304      ":rtp_sender",
2305      ":rtp_sender_proxy",
2306      ":rtp_transceiver",
2307      ":rtp_transport_internal",
2308      ":sctp_data_channel",
2309      ":sctp_transport",
2310      ":sctp_utils",
2311      ":sdp_serializer",
2312      ":sdp_utils",
2313      ":session_description",
2314      ":simulcast_description",
2315      ":stream_collection",
2316      ":track_media_info_map",
2317      ":transport_stats",
2318      ":usage_pattern",
2319      ":video_rtp_receiver",
2320      ":video_rtp_track_source",
2321      ":video_track",
2322      ":video_track_source",
2323      ":webrtc_sdp",
2324      "../api:array_view",
2325      "../api:audio_options_api",
2326      "../api:candidate",
2327      "../api:create_peerconnection_factory",
2328      "../api:dtls_transport_interface",
2329      "../api:dtmf_sender_interface",
2330      "../api:fake_frame_decryptor",
2331      "../api:fake_frame_encryptor",
2332      "../api:field_trials_view",
2333      "../api:function_view",
2334      "../api:ice_transport_interface",
2335      "../api:libjingle_logging_api",
2336      "../api:libjingle_peerconnection_api",
2337      "../api:make_ref_counted",
2338      "../api:media_stream_interface",
2339      "../api:mock_encoder_selector",
2340      "../api:mock_packet_socket_factory",
2341      "../api:mock_video_track",
2342      "../api:packet_socket_factory",
2343      "../api:priority",
2344      "../api:rtc_error",
2345      "../api:rtp_sender_interface",
2346      "../api:rtp_transceiver_direction",
2347      "../api:scoped_refptr",
2348      "../api/adaptation:resource_adaptation_api",
2349      "../api/audio:audio_mixer_api",
2350      "../api/crypto:frame_decryptor_interface",
2351      "../api/crypto:frame_encryptor_interface",
2352      "../api/crypto:options",
2353      "../api/rtc_event_log",
2354      "../api/rtc_event_log:rtc_event_log_factory",
2355      "../api/task_queue",
2356      "../api/task_queue:default_task_queue_factory",
2357      "../api/transport:datagram_transport_interface",
2358      "../api/transport:field_trial_based_config",
2359      "../api/transport:sctp_transport_factory_interface",
2360      "../api/transport/rtp:rtp_source",
2361      "../api/units:time_delta",
2362      "../api/units:timestamp",
2363      "../api/video:builtin_video_bitrate_allocator_factory",
2364      "../api/video:encoded_image",
2365      "../api/video:recordable_encoded_frame",
2366      "../api/video:video_bitrate_allocator_factory",
2367      "../api/video:video_codec_constants",
2368      "../api/video:video_frame",
2369      "../api/video:video_rtp_headers",
2370      "../call/adaptation:resource_adaptation_test_utilities",
2371      "../common_video",
2372      "../logging:fake_rtc_event_log",
2373      "../media:rtc_data_sctp_transport_internal",
2374      "../media:rtc_media_config",
2375      "../media:rtc_media_engine_defaults",
2376      "../modules/audio_device:audio_device_api",
2377      "../modules/audio_processing:audio_processing_statistics",
2378      "../modules/rtp_rtcp:rtp_rtcp_format",
2379      "../p2p:fake_port_allocator",
2380      "../p2p:p2p_server_utils",
2381      "../rtc_base:byte_buffer",
2382      "../rtc_base:checks",
2383      "../rtc_base:copy_on_write_buffer",
2384      "../rtc_base:event_tracer",
2385      "../rtc_base:gunit_helpers",
2386      "../rtc_base:ip_address",
2387      "../rtc_base:logging",
2388      "../rtc_base:macromagic",
2389      "../rtc_base:network_constants",
2390      "../rtc_base:refcount",
2391      "../rtc_base:rtc_base_tests_utils",
2392      "../rtc_base:rtc_json",
2393      "../rtc_base:socket_address",
2394      "../rtc_base:stringutils",
2395      "../rtc_base:task_queue_for_test",
2396      "../rtc_base:threading",
2397      "../rtc_base:timeutils",
2398      "../rtc_base/synchronization:mutex",
2399      "../rtc_base/third_party/base64",
2400      "../rtc_base/third_party/sigslot",
2401      "../system_wrappers:metrics",
2402      "../test:run_loop",
2403      "../test:scoped_key_value_config",
2404      "../test/pc/sctp:fake_sctp_transport",
2405      "//third_party/abseil-cpp/absl/algorithm:container",
2406      "//third_party/abseil-cpp/absl/memory",
2407      "//third_party/abseil-cpp/absl/strings",
2408      "//third_party/abseil-cpp/absl/types:optional",
2409    ]
2410
2411    if (is_android) {
2412      use_default_launcher = false
2413      deps += [
2414        ":android_black_magic",
2415
2416        # We need to depend on this one directly, or classloads will fail for
2417        # the voice engine BuildInfo, for instance.
2418        "//sdk/android:libjingle_peerconnection_java",
2419        "//sdk/android:native_test_jni_onload",
2420      ]
2421      shard_timeout = 900
2422    }
2423
2424    deps += [
2425      ":libjingle_peerconnection",
2426      ":pc_test_utils",
2427      ":rtc_pc",
2428      "../api:callfactory_api",
2429      "../api:rtc_event_log_output_file",
2430      "../api:rtc_stats_api",
2431      "../api:rtp_parameters",
2432      "../api/audio_codecs:audio_codecs_api",
2433      "../api/audio_codecs:builtin_audio_decoder_factory",
2434      "../api/audio_codecs:builtin_audio_encoder_factory",
2435      "../api/audio_codecs:opus_audio_decoder_factory",
2436      "../api/audio_codecs:opus_audio_encoder_factory",
2437      "../api/audio_codecs/L16:audio_decoder_L16",
2438      "../api/audio_codecs/L16:audio_encoder_L16",
2439      "../api/video_codecs:builtin_video_decoder_factory",
2440      "../api/video_codecs:builtin_video_encoder_factory",
2441      "../api/video_codecs:video_codecs_api",
2442      "../call:call_interfaces",
2443      "../media:rtc_audio_video",
2444      "../media:rtc_media_base",
2445      "../media:rtc_media_tests_utils",
2446      "../modules/audio_processing",
2447      "../modules/audio_processing:api",
2448      "../p2p:p2p_test_utils",
2449      "../p2p:rtc_p2p",
2450      "../rtc_base",
2451      "../rtc_base:rtc_task_queue",
2452      "../rtc_base:safe_conversions",
2453      "../test:audio_codec_mocks",
2454      "../test:test_main",
2455      "../test:test_support",
2456    ]
2457  }
2458
2459  rtc_library("data_channel_controller_unittest") {
2460    testonly = true
2461    sources = [ "data_channel_controller_unittest.cc" ]
2462    deps = [
2463      ":data_channel_controller",
2464      ":pc_test_utils",
2465      ":peer_connection_internal",
2466      ":sctp_data_channel",
2467      "../test:test_support",
2468    ]
2469  }
2470
2471  if (is_android) {
2472    rtc_library("android_black_magic") {
2473      # The android code uses hacky includes to ssl code. Having this in a
2474      # separate target enables us to keep the peerconnection unit tests clean.
2475      testonly = true
2476      sources = [
2477        "test/android_test_initializer.cc",
2478        "test/android_test_initializer.h",
2479      ]
2480      deps = [
2481        "../sdk/android:internal_jni",
2482        "../sdk/android:libjingle_peerconnection_jni",
2483        "//modules/utility:utility",
2484        "//rtc_base:checks",
2485        "//rtc_base:rtc_base",
2486        "//testing/android/native_test:native_test_support",
2487      ]
2488    }
2489  }
2490
2491  rtc_library("integration_test_helpers") {
2492    testonly = true
2493    sources = [
2494      "test/integration_test_helpers.cc",
2495      "test/integration_test_helpers.h",
2496    ]
2497    deps = [
2498      ":audio_rtp_receiver",
2499      ":audio_track",
2500      ":dtmf_sender",
2501      ":jitter_buffer_delay",
2502      ":local_audio_source",
2503      ":media_session",
2504      ":media_stream",
2505      ":pc_test_utils",
2506      ":peer_connection",
2507      ":peer_connection_factory",
2508      ":peer_connection_proxy",
2509      ":peerconnection",
2510      ":remote_audio_source",
2511      ":rtp_media_utils",
2512      ":rtp_parameters_conversion",
2513      ":rtp_receiver",
2514      ":rtp_sender",
2515      ":rtp_transceiver",
2516      ":session_description",
2517      ":usage_pattern",
2518      ":video_rtp_receiver",
2519      ":video_rtp_track_source",
2520      ":video_track",
2521      ":video_track_source",
2522      "../api:array_view",
2523      "../api:audio_options_api",
2524      "../api:callfactory_api",
2525      "../api:candidate",
2526      "../api:create_peerconnection_factory",
2527      "../api:fake_frame_decryptor",
2528      "../api:fake_frame_encryptor",
2529      "../api:field_trials_view",
2530      "../api:function_view",
2531      "../api:ice_transport_interface",
2532      "../api:libjingle_logging_api",
2533      "../api:libjingle_peerconnection_api",
2534      "../api:media_stream_interface",
2535      "../api:mock_rtp",
2536      "../api:packet_socket_factory",
2537      "../api:rtc_error",
2538      "../api:rtc_stats_api",
2539      "../api:rtp_parameters",
2540      "../api:rtp_sender_interface",
2541      "../api:rtp_transceiver_direction",
2542      "../api:scoped_refptr",
2543      "../api/audio:audio_mixer_api",
2544      "../api/crypto:frame_decryptor_interface",
2545      "../api/crypto:frame_encryptor_interface",
2546      "../api/crypto:options",
2547      "../api/rtc_event_log",
2548      "../api/rtc_event_log:rtc_event_log_factory",
2549      "../api/task_queue",
2550      "../api/task_queue:default_task_queue_factory",
2551      "../api/task_queue:pending_task_safety_flag",
2552      "../api/transport:field_trial_based_config",
2553      "../api/transport/rtp:rtp_source",
2554      "../api/units:time_delta",
2555      "../api/video:builtin_video_bitrate_allocator_factory",
2556      "../api/video:video_rtp_headers",
2557      "../api/video_codecs:video_codecs_api",
2558      "../call:call_interfaces",
2559      "../call/adaptation:resource_adaptation_test_utilities",
2560      "../logging:fake_rtc_event_log",
2561      "../media:rtc_audio_video",
2562      "../media:rtc_media_base",
2563      "../media:rtc_media_config",
2564      "../media:rtc_media_engine_defaults",
2565      "../media:rtc_media_tests_utils",
2566      "../modules/audio_device:audio_device_api",
2567      "../modules/audio_processing:api",
2568      "../modules/audio_processing:audio_processing_statistics",
2569      "../modules/audio_processing:audioproc_test_utils",
2570      "../modules/rtp_rtcp:rtp_rtcp_format",
2571      "../p2p:fake_ice_transport",
2572      "../p2p:fake_port_allocator",
2573      "../p2p:p2p_server_utils",
2574      "../p2p:p2p_test_utils",
2575      "../p2p:rtc_p2p",
2576      "../rtc_base",
2577      "../rtc_base:checks",
2578      "../rtc_base:gunit_helpers",
2579      "../rtc_base:ip_address",
2580      "../rtc_base:logging",
2581      "../rtc_base:macromagic",
2582      "../rtc_base:rtc_base_tests_utils",
2583      "../rtc_base:rtc_event",
2584      "../rtc_base:rtc_json",
2585      "../rtc_base:safe_conversions",
2586      "../rtc_base:socket_address",
2587      "../rtc_base:task_queue_for_test",
2588      "../rtc_base:threading",
2589      "../rtc_base:timeutils",
2590      "../rtc_base/synchronization:mutex",
2591      "../rtc_base/task_utils:repeating_task",
2592      "../rtc_base/third_party/base64",
2593      "../rtc_base/third_party/sigslot",
2594      "../system_wrappers:metrics",
2595      "../test:explicit_key_value_config",
2596      "../test:fileutils",
2597      "../test:rtp_test_utils",
2598      "../test:scoped_key_value_config",
2599      "../test:test_support",
2600      "../test/pc/sctp:fake_sctp_transport",
2601    ]
2602    absl_deps = [
2603      "//third_party/abseil-cpp/absl/algorithm:container",
2604      "//third_party/abseil-cpp/absl/memory",
2605      "//third_party/abseil-cpp/absl/strings",
2606      "//third_party/abseil-cpp/absl/types:optional",
2607    ]
2608  }
2609
2610  rtc_library("pc_test_utils") {
2611    testonly = true
2612    sources = [
2613      "test/fake_audio_capture_module.cc",
2614      "test/fake_audio_capture_module.h",
2615      "test/fake_data_channel_controller.h",
2616      "test/fake_peer_connection_base.h",
2617      "test/fake_peer_connection_for_stats.h",
2618      "test/fake_periodic_video_source.h",
2619      "test/fake_periodic_video_track_source.h",
2620      "test/fake_rtc_certificate_generator.h",
2621      "test/fake_video_track_renderer.h",
2622      "test/fake_video_track_source.h",
2623      "test/frame_generator_capturer_video_track_source.h",
2624      "test/mock_channel_interface.h",
2625      "test/mock_data_channel.h",
2626      "test/mock_peer_connection_internal.h",
2627      "test/mock_peer_connection_observers.h",
2628      "test/mock_rtp_receiver_internal.h",
2629      "test/mock_rtp_sender_internal.h",
2630      "test/mock_voice_media_channel.h",
2631      "test/peer_connection_test_wrapper.cc",
2632      "test/peer_connection_test_wrapper.h",
2633      "test/rtc_stats_obtainer.h",
2634      "test/test_sdp_strings.h",
2635    ]
2636
2637    deps = [
2638      ":channel",
2639      ":channel_interface",
2640      ":jitter_buffer_delay",
2641      ":libjingle_peerconnection",
2642      ":peer_connection_internal",
2643      ":peerconnection",
2644      ":rtp_receiver",
2645      ":rtp_sender",
2646      ":sctp_data_channel",
2647      ":stream_collection",
2648      ":video_track_source",
2649      "../api:audio_options_api",
2650      "../api:call_api",
2651      "../api:create_frame_generator",
2652      "../api:create_peerconnection_factory",
2653      "../api:field_trials_view",
2654      "../api:field_trials_view",
2655      "../api:libjingle_peerconnection_api",
2656      "../api:make_ref_counted",
2657      "../api:media_stream_interface",
2658      "../api:rtc_error",
2659      "../api:rtc_stats_api",
2660      "../api:scoped_refptr",
2661      "../api:sequence_checker",
2662      "../api/audio:audio_mixer_api",
2663      "../api/audio_codecs:audio_codecs_api",
2664      "../api/task_queue",
2665      "../api/task_queue:default_task_queue_factory",
2666      "../api/units:time_delta",
2667      "../api/video:builtin_video_bitrate_allocator_factory",
2668      "../api/video:video_frame",
2669      "../api/video:video_rtp_headers",
2670      "../api/video_codecs:builtin_video_decoder_factory",
2671      "../api/video_codecs:builtin_video_encoder_factory",
2672      "../api/video_codecs:video_codecs_api",
2673      "../call:call_interfaces",
2674      "../media:rtc_media",
2675      "../media:rtc_media_base",
2676      "../media:rtc_media_tests_utils",
2677      "../modules/audio_device",
2678      "../modules/audio_processing",
2679      "../modules/audio_processing:api",
2680      "../p2p:fake_port_allocator",
2681      "../p2p:p2p_test_utils",
2682      "../p2p:rtc_p2p",
2683      "../rtc_base",
2684      "../rtc_base:checks",
2685      "../rtc_base:gunit_helpers",
2686      "../rtc_base:logging",
2687      "../rtc_base:macromagic",
2688      "../rtc_base:rtc_task_queue",
2689      "../rtc_base:stringutils",
2690      "../rtc_base:task_queue_for_test",
2691      "../rtc_base:threading",
2692      "../rtc_base:timeutils",
2693      "../rtc_base/synchronization:mutex",
2694      "../rtc_base/task_utils:repeating_task",
2695      "../rtc_base/third_party/sigslot",
2696      "../test:scoped_key_value_config",
2697      "../test:test_support",
2698      "../test:video_test_common",
2699    ]
2700    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
2701  }
2702
2703  svc_tests_resources = [
2704    "../resources/difficult_photo_1850_1110.yuv",
2705    "../resources/photo_1850_1110.yuv",
2706    "../resources/presentation_1850_1110.yuv",
2707    "../resources/web_screenshot_1850_1110.yuv",
2708  ]
2709
2710  if (is_ios) {
2711    bundle_data("svc_tests_bundle_data") {
2712      testonly = true
2713      sources = svc_tests_resources
2714      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
2715    }
2716  }
2717
2718  rtc_test("svc_tests") {
2719    sources = [ "test/svc_e2e_tests.cc" ]
2720    data = svc_tests_resources
2721    deps = [
2722      "../api:create_network_emulation_manager",
2723      "../api:create_peer_connection_quality_test_frame_generator",
2724      "../api:create_peerconnection_quality_test_fixture",
2725      "../api:frame_generator_api",
2726      "../api:media_stream_interface",
2727      "../api:network_emulation_manager_api",
2728      "../api:peer_connection_quality_test_fixture_api",
2729      "../api:simulated_network_api",
2730      "../api:time_controller",
2731      "../api/test/metrics:global_metrics_logger_and_exporter",
2732      "../api/test/pclf:media_configuration",
2733      "../api/test/pclf:media_quality_test_params",
2734      "../api/test/pclf:peer_configurer",
2735      "../api/video_codecs:video_codecs_api",
2736      "../call:simulated_network",
2737      "../modules/video_coding:webrtc_vp9",
2738      "../modules/video_coding/svc:scalability_mode_util",
2739      "../rtc_base/containers:flat_map",
2740      "../system_wrappers:field_trial",
2741      "../test:field_trial",
2742      "../test:fileutils",
2743      "../test:test_main",
2744      "../test:test_support",
2745      "../test/pc/e2e:network_quality_metrics_reporter",
2746      "../test/pc/e2e/analyzer/video:default_video_quality_analyzer",
2747    ]
2748
2749    if (is_ios) {
2750      deps += [ ":svc_tests_bundle_data" ]
2751    }
2752  }
2753}
2754