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
9import("../webrtc.gni")
10if (is_android) {
11  import("//build/config/android/config.gni")
12  import("//build/config/android/rules.gni")
13}
14
15group("pc") {
16  deps = [ ":rtc_pc" ]
17}
18
19config("rtc_pc_config") {
20  defines = []
21  if (rtc_enable_sctp) {
22    defines += [ "WEBRTC_HAVE_SCTP" ]
23  }
24}
25
26rtc_library("rtc_pc_base") {
27  visibility = [ "*" ]
28  defines = []
29  sources = [
30    "channel.cc",
31    "channel.h",
32    "channel_interface.h",
33    "channel_manager.cc",
34    "channel_manager.h",
35    "dtls_srtp_transport.cc",
36    "dtls_srtp_transport.h",
37    "dtls_transport.cc",
38    "dtls_transport.h",
39    "external_hmac.cc",
40    "external_hmac.h",
41    "ice_transport.cc",
42    "ice_transport.h",
43    "jsep_transport.cc",
44    "jsep_transport.h",
45    "jsep_transport_controller.cc",
46    "jsep_transport_controller.h",
47    "media_session.cc",
48    "media_session.h",
49    "rtcp_mux_filter.cc",
50    "rtcp_mux_filter.h",
51    "rtp_media_utils.cc",
52    "rtp_media_utils.h",
53    "rtp_transport.cc",
54    "rtp_transport.h",
55    "rtp_transport_internal.h",
56    "sctp_data_channel_transport.cc",
57    "sctp_data_channel_transport.h",
58    "sctp_transport.cc",
59    "sctp_transport.h",
60    "sctp_utils.cc",
61    "sctp_utils.h",
62    "session_description.cc",
63    "session_description.h",
64    "simulcast_description.cc",
65    "simulcast_description.h",
66    "srtp_filter.cc",
67    "srtp_filter.h",
68    "srtp_session.cc",
69    "srtp_session.h",
70    "srtp_transport.cc",
71    "srtp_transport.h",
72    "transport_stats.cc",
73    "transport_stats.h",
74    "used_ids.h",
75  ]
76
77  deps = [
78    ":media_protocol_names",
79    "../api:array_view",
80    "../api:audio_options_api",
81    "../api:call_api",
82    "../api:function_view",
83    "../api:ice_transport_factory",
84    "../api:libjingle_peerconnection_api",
85    "../api:packet_socket_factory",
86    "../api:priority",
87    "../api:rtc_error",
88    "../api:rtp_headers",
89    "../api:rtp_parameters",
90    "../api:rtp_parameters",
91    "../api:rtp_transceiver_direction",
92    "../api:scoped_refptr",
93    "../api:sequence_checker",
94    "../api/crypto:options",
95    "../api/rtc_event_log",
96    "../api/task_queue",
97    "../api/transport:datagram_transport_interface",
98    "../api/transport:enums",
99    "../api/transport:sctp_transport_factory_interface",
100    "../api/video:builtin_video_bitrate_allocator_factory",
101    "../api/video:video_bitrate_allocator_factory",
102    "../api/video:video_frame",
103    "../api/video:video_rtp_headers",
104    "../call:call_interfaces",
105    "../call:rtp_interfaces",
106    "../call:rtp_receiver",
107    "../common_video",
108    "../common_video:common_video",
109    "../logging:ice_log",
110    "../media:rtc_data",
111    "../media:rtc_h264_profile_id",
112    "../media:rtc_media_base",
113    "../media:rtc_media_config",
114    "../modules/rtp_rtcp:rtp_rtcp",
115    "../modules/rtp_rtcp:rtp_rtcp_format",
116    "../p2p:rtc_p2p",
117    "../rtc_base",
118    "../rtc_base:callback_list",
119    "../rtc_base:checks",
120    "../rtc_base:rtc_task_queue",
121    "../rtc_base:socket",
122    "../rtc_base:socket_address",
123    "../rtc_base:stringutils",
124    "../rtc_base:threading",
125    "../rtc_base/network:sent_packet",
126    "../rtc_base/synchronization:mutex",
127    "../rtc_base/system:file_wrapper",
128    "../rtc_base/system:rtc_export",
129    "../rtc_base/task_utils:pending_task_safety_flag",
130    "../rtc_base/task_utils:to_queued_task",
131    "../rtc_base/third_party/base64",
132    "../rtc_base/third_party/sigslot",
133    "../system_wrappers:field_trial",
134    "../system_wrappers:metrics",
135  ]
136  absl_deps = [
137    "//third_party/abseil-cpp/absl/algorithm:container",
138    "//third_party/abseil-cpp/absl/base:core_headers",
139    "//third_party/abseil-cpp/absl/memory",
140    "//third_party/abseil-cpp/absl/strings",
141    "//third_party/abseil-cpp/absl/types:optional",
142  ]
143
144  if (rtc_build_libsrtp) {
145    deps += [ "//third_party/libsrtp" ]
146  }
147
148  public_configs = [ ":rtc_pc_config" ]
149}
150
151rtc_source_set("rtc_pc") {
152  visibility = [ "*" ]
153  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
154  deps = [
155    ":rtc_pc_base",
156    "../media:rtc_audio_video",
157  ]
158}
159
160rtc_library("media_protocol_names") {
161  sources = [
162    "media_protocol_names.cc",
163    "media_protocol_names.h",
164  ]
165}
166
167rtc_library("peerconnection") {
168  visibility = [ "*" ]
169  cflags = []
170  sources = [
171    "data_channel_controller.cc",
172    "data_channel_controller.h",
173    "data_channel_utils.cc",
174    "data_channel_utils.h",
175    "ice_server_parsing.cc",
176    "ice_server_parsing.h",
177    "jsep_ice_candidate.cc",
178    "jsep_session_description.cc",
179    "local_audio_source.cc",
180    "local_audio_source.h",
181    "media_stream_observer.cc",
182    "media_stream_observer.h",
183    "peer_connection.cc",
184    "peer_connection.h",
185    "peer_connection_factory.cc",
186    "peer_connection_factory.h",
187    "peer_connection_internal.h",
188    "rtc_stats_collector.cc",
189    "rtc_stats_collector.h",
190    "rtc_stats_traversal.cc",
191    "rtc_stats_traversal.h",
192    "rtp_data_channel.cc",
193    "rtp_data_channel.h",
194    "sctp_data_channel.cc",
195    "sctp_data_channel.h",
196    "sdp_offer_answer.cc",  # TODO: Make separate target when not circular
197    "sdp_offer_answer.h",  # dependent on peerconnection.h
198    "sdp_serializer.cc",
199    "sdp_serializer.h",
200    "sdp_utils.cc",
201    "sdp_utils.h",
202    "stats_collector.cc",
203    "stats_collector.h",
204    "stream_collection.h",
205    "track_media_info_map.cc",
206    "track_media_info_map.h",
207    "webrtc_sdp.cc",
208    "webrtc_sdp.h",
209    "webrtc_session_description_factory.cc",
210    "webrtc_session_description_factory.h",
211  ]
212
213  deps = [
214    ":audio_rtp_receiver",
215    ":audio_track",
216    ":connection_context",
217    ":dtmf_sender",
218    ":jitter_buffer_delay",
219    ":jitter_buffer_delay_interface",
220    ":jitter_buffer_delay_proxy",
221    ":media_protocol_names",
222    ":media_stream",
223    ":peer_connection_message_handler",
224    ":remote_audio_source",
225    ":rtc_pc_base",
226    ":rtp_parameters_conversion",
227    ":rtp_receiver",
228    ":rtp_sender",
229    ":rtp_transceiver",
230    ":rtp_transmission_manager",
231    ":sdp_state_provider",
232    ":stats_collector_interface",
233    ":transceiver_list",
234    ":usage_pattern",
235    ":video_rtp_receiver",
236    ":video_track",
237    ":video_track_source",
238    "../api:array_view",
239    "../api:audio_options_api",
240    "../api:call_api",
241    "../api:callfactory_api",
242    "../api:fec_controller_api",
243    "../api:frame_transformer_interface",
244    "../api:ice_transport_factory",
245    "../api:libjingle_logging_api",
246    "../api:libjingle_peerconnection_api",
247    "../api:media_stream_interface",
248    "../api:network_state_predictor_api",
249    "../api:packet_socket_factory",
250    "../api:priority",
251    "../api:rtc_error",
252    "../api:rtc_event_log_output_file",
253    "../api:rtc_stats_api",
254    "../api:rtp_parameters",
255    "../api:rtp_transceiver_direction",
256    "../api:scoped_refptr",
257    "../api:sequence_checker",
258    "../api/adaptation:resource_adaptation_api",
259    "../api/audio_codecs:audio_codecs_api",
260    "../api/crypto:frame_decryptor_interface",
261    "../api/crypto:options",
262    "../api/neteq:neteq_api",
263    "../api/rtc_event_log",
264    "../api/task_queue",
265    "../api/transport:bitrate_settings",
266    "../api/transport:datagram_transport_interface",
267    "../api/transport:enums",
268    "../api/transport:field_trial_based_config",
269    "../api/transport:network_control",
270    "../api/transport:sctp_transport_factory_interface",
271    "../api/transport:webrtc_key_value_config",
272    "../api/units:data_rate",
273    "../api/video:builtin_video_bitrate_allocator_factory",
274    "../api/video:video_bitrate_allocator_factory",
275    "../api/video:video_codec_constants",
276    "../api/video:video_frame",
277    "../api/video:video_rtp_headers",
278    "../api/video_codecs:video_codecs_api",
279    "../call:call_interfaces",
280    "../common_video",
281    "../logging:ice_log",
282    "../media:rtc_data",
283    "../media:rtc_media_base",
284    "../media:rtc_media_config",
285    "../modules/audio_processing:audio_processing_statistics",
286    "../modules/rtp_rtcp:rtp_rtcp_format",
287    "../p2p:rtc_p2p",
288    "../rtc_base",
289    "../rtc_base:callback_list",
290    "../rtc_base:checks",
291    "../rtc_base:ip_address",
292    "../rtc_base:network_constants",
293    "../rtc_base:rtc_base_approved",
294    "../rtc_base:rtc_operations_chain",
295    "../rtc_base:safe_minmax",
296    "../rtc_base:socket_address",
297    "../rtc_base:threading",
298    "../rtc_base:weak_ptr",
299    "../rtc_base/experiments:field_trial_parser",
300    "../rtc_base/network:sent_packet",
301    "../rtc_base/synchronization:mutex",
302    "../rtc_base/system:file_wrapper",
303    "../rtc_base/system:no_unique_address",
304    "../rtc_base/system:rtc_export",
305    "../rtc_base/task_utils:pending_task_safety_flag",
306    "../rtc_base/task_utils:to_queued_task",
307    "../rtc_base/third_party/base64",
308    "../rtc_base/third_party/sigslot",
309    "../stats",
310    "../system_wrappers",
311    "../system_wrappers:field_trial",
312    "../system_wrappers:metrics",
313  ]
314  absl_deps = [
315    "//third_party/abseil-cpp/absl/algorithm:container",
316    "//third_party/abseil-cpp/absl/strings",
317    "//third_party/abseil-cpp/absl/types:optional",
318  ]
319}
320
321rtc_library("connection_context") {
322  sources = [
323    "connection_context.cc",
324    "connection_context.h",
325  ]
326  deps = [
327    ":rtc_pc_base",
328    "../api:callfactory_api",
329    "../api:libjingle_peerconnection_api",
330    "../api:media_stream_interface",
331    "../api:scoped_refptr",
332    "../api:sequence_checker",
333    "../api/neteq:neteq_api",
334    "../api/transport:field_trial_based_config",
335    "../api/transport:sctp_transport_factory_interface",
336    "../api/transport:webrtc_key_value_config",
337    "../media:rtc_data",
338    "../media:rtc_media_base",
339    "../p2p:rtc_p2p",
340    "../rtc_base",
341    "../rtc_base:checks",
342    "../rtc_base:threading",
343    "../rtc_base/task_utils:to_queued_task",
344  ]
345}
346
347rtc_library("peer_connection_message_handler") {
348  sources = [
349    "peer_connection_message_handler.cc",
350    "peer_connection_message_handler.h",
351  ]
352  deps = [
353    ":stats_collector_interface",
354    "../api:libjingle_peerconnection_api",
355    "../api:media_stream_interface",
356    "../api:rtc_error",
357    "../api:scoped_refptr",
358    "../api:sequence_checker",
359    "../rtc_base",
360    "../rtc_base:checks",
361    "../rtc_base:threading",
362  ]
363}
364
365rtc_library("usage_pattern") {
366  sources = [
367    "usage_pattern.cc",
368    "usage_pattern.h",
369  ]
370  deps = [
371    "../api:libjingle_peerconnection_api",
372    "../rtc_base:logging",
373    "../system_wrappers:metrics",
374  ]
375}
376
377rtc_library("rtp_transceiver") {
378  sources = [
379    "rtp_transceiver.cc",
380    "rtp_transceiver.h",
381  ]
382  deps = [
383    ":rtc_pc_base",
384    ":rtp_parameters_conversion",
385    ":rtp_receiver",
386    ":rtp_sender",
387    "../api:array_view",
388    "../api:libjingle_peerconnection_api",
389    "../api:rtc_error",
390    "../api:rtp_parameters",
391    "../api:rtp_transceiver_direction",
392    "../api:scoped_refptr",
393    "../api:sequence_checker",
394    "../api/task_queue",
395    "../media:rtc_media_base",
396    "../rtc_base:checks",
397    "../rtc_base:logging",
398    "../rtc_base:macromagic",
399    "../rtc_base:refcount",
400    "../rtc_base:threading",
401    "../rtc_base/third_party/sigslot",
402  ]
403  absl_deps = [
404    "//third_party/abseil-cpp/absl/algorithm:container",
405    "//third_party/abseil-cpp/absl/strings",
406    "//third_party/abseil-cpp/absl/types:optional",
407  ]
408}
409
410rtc_library("rtp_transmission_manager") {
411  sources = [
412    "rtp_transmission_manager.cc",
413    "rtp_transmission_manager.h",
414  ]
415  deps = [
416    ":audio_rtp_receiver",
417    ":rtc_pc_base",
418    ":rtp_receiver",
419    ":rtp_sender",
420    ":rtp_transceiver",
421    ":stats_collector_interface",
422    ":transceiver_list",
423    ":usage_pattern",
424    ":video_rtp_receiver",
425    "../api:libjingle_peerconnection_api",
426    "../api:media_stream_interface",
427    "../api:rtc_error",
428    "../api:rtp_parameters",
429    "../api:rtp_transceiver_direction",
430    "../api:scoped_refptr",
431    "../api:sequence_checker",
432    "../media:rtc_media_base",
433    "../rtc_base",
434    "../rtc_base:checks",
435    "../rtc_base:threading",
436    "../rtc_base:weak_ptr",
437    "../rtc_base/third_party/sigslot",
438  ]
439  absl_deps = [
440    "//third_party/abseil-cpp/absl/algorithm:container",
441    "//third_party/abseil-cpp/absl/strings",
442    "//third_party/abseil-cpp/absl/types:optional",
443  ]
444}
445
446rtc_library("transceiver_list") {
447  sources = [
448    "transceiver_list.cc",
449    "transceiver_list.h",
450  ]
451  deps = [
452    ":rtp_transceiver",
453    "../api:libjingle_peerconnection_api",
454    "../api:rtc_error",
455    "../api:rtp_parameters",
456    "../api:scoped_refptr",
457    "../rtc_base:checks",
458  ]
459  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
460}
461
462rtc_library("rtp_receiver") {
463  sources = [
464    "rtp_receiver.cc",
465    "rtp_receiver.h",
466  ]
467  deps = [
468    ":media_stream",
469    ":video_track_source",
470    "../api:libjingle_peerconnection_api",
471    "../api:media_stream_interface",
472    "../api:rtp_parameters",
473    "../api:scoped_refptr",
474    "../api/crypto:frame_decryptor_interface",
475    "../api/video:video_frame",
476    "../media:rtc_media_base",
477    "../rtc_base:checks",
478    "../rtc_base:logging",
479    "../rtc_base:rtc_base",
480    "../rtc_base:rtc_base_approved",
481    "../rtc_base:threading",
482  ]
483  absl_deps = [
484    "//third_party/abseil-cpp/absl/algorithm:container",
485    "//third_party/abseil-cpp/absl/strings",
486    "//third_party/abseil-cpp/absl/types:optional",
487  ]
488}
489
490rtc_library("audio_rtp_receiver") {
491  sources = [
492    "audio_rtp_receiver.cc",
493    "audio_rtp_receiver.h",
494  ]
495  deps = [
496    ":audio_track",
497    ":jitter_buffer_delay",
498    ":jitter_buffer_delay_interface",
499    ":jitter_buffer_delay_proxy",
500    ":media_stream",
501    ":remote_audio_source",
502    ":rtp_receiver",
503    "../api:frame_transformer_interface",
504    "../api:libjingle_peerconnection_api",
505    "../api:media_stream_interface",
506    "../api:rtp_parameters",
507    "../api:scoped_refptr",
508    "../api:sequence_checker",
509    "../api/crypto:frame_decryptor_interface",
510    "../api/transport/rtp:rtp_source",
511    "../media:rtc_media_base",
512    "../rtc_base",
513    "../rtc_base:checks",
514    "../rtc_base:refcount",
515    "../rtc_base:threading",
516  ]
517  absl_deps = [
518    "//third_party/abseil-cpp/absl/algorithm:container",
519    "//third_party/abseil-cpp/absl/strings",
520    "//third_party/abseil-cpp/absl/types:optional",
521  ]
522}
523
524rtc_library("video_rtp_receiver") {
525  sources = [
526    "video_rtp_receiver.cc",
527    "video_rtp_receiver.h",
528  ]
529  deps = [
530    ":jitter_buffer_delay",
531    ":jitter_buffer_delay_interface",
532    ":jitter_buffer_delay_proxy",
533    ":media_stream",
534    ":rtp_receiver",
535    ":video_rtp_track_source",
536    ":video_track",
537    "../api:frame_transformer_interface",
538    "../api:libjingle_peerconnection_api",
539    "../api:media_stream_interface",
540    "../api:rtp_parameters",
541    "../api:scoped_refptr",
542    "../api:sequence_checker",
543    "../api/crypto:frame_decryptor_interface",
544    "../api/transport/rtp:rtp_source",
545    "../api/video:recordable_encoded_frame",
546    "../api/video:video_frame",
547    "../media:rtc_media_base",
548    "../rtc_base",
549    "../rtc_base:checks",
550    "../rtc_base:rtc_base_approved",
551    "../rtc_base:threading",
552  ]
553  absl_deps = [
554    "//third_party/abseil-cpp/absl/algorithm:container",
555    "//third_party/abseil-cpp/absl/strings",
556    "//third_party/abseil-cpp/absl/types:optional",
557  ]
558}
559
560rtc_library("video_rtp_track_source") {
561  sources = [
562    "video_rtp_track_source.cc",
563    "video_rtp_track_source.h",
564  ]
565  deps = [
566    ":video_track_source",
567    "../api:sequence_checker",
568    "../api/video:recordable_encoded_frame",
569    "../api/video:video_frame",
570    "../media:rtc_media_base",
571    "../rtc_base",
572    "../rtc_base:checks",
573    "../rtc_base/synchronization:mutex",
574    "../rtc_base/system:no_unique_address",
575  ]
576}
577
578rtc_library("audio_track") {
579  sources = [
580    "audio_track.cc",
581    "audio_track.h",
582  ]
583  deps = [
584    "../api:media_stream_interface",
585    "../api:scoped_refptr",
586    "../api:sequence_checker",
587    "../rtc_base:checks",
588    "../rtc_base:refcount",
589  ]
590}
591
592rtc_library("video_track") {
593  sources = [
594    "video_track.cc",
595    "video_track.h",
596  ]
597  deps = [
598    "../api:media_stream_interface",
599    "../api:scoped_refptr",
600    "../api:sequence_checker",
601    "../api/video:video_frame",
602    "../media:rtc_media_base",
603    "../rtc_base",
604    "../rtc_base:checks",
605    "../rtc_base:refcount",
606    "../rtc_base:rtc_base_approved",
607    "../rtc_base:threading",
608  ]
609}
610
611rtc_source_set("jitter_buffer_delay_interface") {
612  sources = [ "jitter_buffer_delay_interface.h" ]
613  deps = [
614    "../media:rtc_media_base",
615    "../rtc_base:refcount",
616  ]
617  absl_deps = [
618    "//third_party/abseil-cpp/absl/algorithm:container",
619    "//third_party/abseil-cpp/absl/strings",
620    "//third_party/abseil-cpp/absl/types:optional",
621  ]
622}
623
624rtc_source_set("sdp_state_provider") {
625  sources = [ "sdp_state_provider.h" ]
626  deps = [
627    ":rtc_pc_base",
628    "../api:libjingle_peerconnection_api",
629  ]
630}
631
632rtc_source_set("jitter_buffer_delay_proxy") {
633  sources = [ "jitter_buffer_delay_proxy.h" ]
634  deps = [
635    ":jitter_buffer_delay_interface",
636    "../api:libjingle_peerconnection_api",
637    "../media:rtc_media_base",
638  ]
639}
640
641rtc_library("jitter_buffer_delay") {
642  sources = [
643    "jitter_buffer_delay.cc",
644    "jitter_buffer_delay.h",
645  ]
646  deps = [
647    ":jitter_buffer_delay_interface",
648    "../api:sequence_checker",
649    "../media:rtc_media_base",
650    "../rtc_base",
651    "../rtc_base:checks",
652    "../rtc_base:refcount",
653    "../rtc_base:safe_minmax",
654    "../rtc_base:threading",
655  ]
656  absl_deps = [
657    "//third_party/abseil-cpp/absl/algorithm:container",
658    "//third_party/abseil-cpp/absl/strings",
659    "//third_party/abseil-cpp/absl/types:optional",
660  ]
661}
662
663rtc_library("remote_audio_source") {
664  sources = [
665    "remote_audio_source.cc",
666    "remote_audio_source.h",
667  ]
668  deps = [
669    ":rtc_pc_base",
670    "../api:call_api",
671    "../api:media_stream_interface",
672    "../api:scoped_refptr",
673    "../api:sequence_checker",
674    "../media:rtc_media_base",
675    "../rtc_base",
676    "../rtc_base:checks",
677    "../rtc_base:logging",
678    "../rtc_base:rtc_base_approved",
679    "../rtc_base:safe_conversions",
680    "../rtc_base:stringutils",
681    "../rtc_base:threading",
682    "../rtc_base/synchronization:mutex",
683  ]
684  absl_deps = [
685    "//third_party/abseil-cpp/absl/algorithm:container",
686    "//third_party/abseil-cpp/absl/strings",
687    "//third_party/abseil-cpp/absl/types:optional",
688  ]
689}
690
691rtc_library("rtp_sender") {
692  sources = [
693    "rtp_sender.cc",
694    "rtp_sender.h",
695  ]
696  deps = [
697    ":dtmf_sender",
698    ":stats_collector_interface",
699    "../api:audio_options_api",
700    "../api:frame_transformer_interface",
701    "../api:libjingle_peerconnection_api",
702    "../api:media_stream_interface",
703    "../api:priority",
704    "../api:rtc_error",
705    "../api:rtp_parameters",
706    "../api:scoped_refptr",
707    "../api/crypto:frame_encryptor_interface",
708    "../media:rtc_media_base",
709    "../rtc_base:checks",
710    "../rtc_base:rtc_base",
711    "../rtc_base:threading",
712    "../rtc_base/synchronization:mutex",
713    "../rtc_base/third_party/sigslot",
714  ]
715  absl_deps = [
716    "//third_party/abseil-cpp/absl/algorithm:container",
717    "//third_party/abseil-cpp/absl/strings",
718    "//third_party/abseil-cpp/absl/types:optional",
719  ]
720}
721
722rtc_library("rtp_parameters_conversion") {
723  sources = [
724    "rtp_parameters_conversion.cc",
725    "rtp_parameters_conversion.h",
726  ]
727  deps = [
728    ":rtc_pc_base",
729    "../api:array_view",
730    "../api:libjingle_peerconnection_api",
731    "../api:rtc_error",
732    "../api:rtp_parameters",
733    "../media:rtc_media_base",
734    "../rtc_base:checks",
735    "../rtc_base:rtc_base",
736  ]
737  absl_deps = [
738    "//third_party/abseil-cpp/absl/algorithm:container",
739    "//third_party/abseil-cpp/absl/strings",
740    "//third_party/abseil-cpp/absl/types:optional",
741  ]
742}
743
744rtc_library("dtmf_sender") {
745  sources = [
746    "dtmf_sender.cc",
747    "dtmf_sender.h",
748  ]
749  deps = [
750    "../api:libjingle_peerconnection_api",
751    "../api:scoped_refptr",
752    "../rtc_base:checks",
753    "../rtc_base:rtc_base",
754    "../rtc_base:threading",
755    "../rtc_base/task_utils:pending_task_safety_flag",
756    "../rtc_base/task_utils:to_queued_task",
757    "../rtc_base/third_party/sigslot",
758  ]
759  absl_deps = [
760    "//third_party/abseil-cpp/absl/algorithm:container",
761    "//third_party/abseil-cpp/absl/strings",
762    "//third_party/abseil-cpp/absl/types:optional",
763  ]
764}
765
766rtc_library("media_stream") {
767  sources = [
768    "media_stream.cc",
769    "media_stream.h",
770  ]
771  deps = [
772    "../api:libjingle_peerconnection_api",
773    "../api:media_stream_interface",
774    "../api:scoped_refptr",
775    "../rtc_base:checks",
776    "../rtc_base:refcount",
777    "../rtc_base:rtc_base",
778  ]
779  absl_deps = [
780    "//third_party/abseil-cpp/absl/algorithm:container",
781    "//third_party/abseil-cpp/absl/strings",
782    "//third_party/abseil-cpp/absl/types:optional",
783  ]
784}
785
786rtc_library("video_track_source") {
787  sources = [
788    "video_track_source.cc",
789    "video_track_source.h",
790  ]
791  deps = [
792    "../api:media_stream_interface",
793    "../api:sequence_checker",
794    "../api/video:recordable_encoded_frame",
795    "../api/video:video_frame",
796    "../media:rtc_media_base",
797    "../rtc_base:checks",
798    "../rtc_base:rtc_base_approved",
799    "../rtc_base/system:rtc_export",
800  ]
801  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
802}
803
804rtc_source_set("stats_collector_interface") {
805  sources = [ "stats_collector_interface.h" ]
806  deps = [
807    "../api:libjingle_peerconnection_api",
808    "../api:media_stream_interface",
809  ]
810}
811
812rtc_source_set("libjingle_peerconnection") {
813  visibility = [ "*" ]
814  deps = [
815    ":peerconnection",
816    "../api:libjingle_peerconnection_api",
817  ]
818}
819
820if (rtc_include_tests && !build_with_chromium) {
821  rtc_test("rtc_pc_unittests") {
822    testonly = true
823
824    sources = [
825      "channel_manager_unittest.cc",
826      "channel_unittest.cc",
827      "dtls_srtp_transport_unittest.cc",
828      "dtls_transport_unittest.cc",
829      "ice_transport_unittest.cc",
830      "jsep_transport_controller_unittest.cc",
831      "jsep_transport_unittest.cc",
832      "media_session_unittest.cc",
833      "rtcp_mux_filter_unittest.cc",
834      "rtp_transport_unittest.cc",
835      "sctp_transport_unittest.cc",
836      "session_description_unittest.cc",
837      "srtp_filter_unittest.cc",
838      "srtp_session_unittest.cc",
839      "srtp_transport_unittest.cc",
840      "test/rtp_transport_test_util.h",
841      "test/srtp_test_util.h",
842      "used_ids_unittest.cc",
843      "video_rtp_receiver_unittest.cc",
844    ]
845
846    include_dirs = [ "//third_party/libsrtp/srtp" ]
847
848    if (is_win) {
849      libs = [ "strmiids.lib" ]
850    }
851
852    deps = [
853      ":libjingle_peerconnection",
854      ":pc_test_utils",
855      ":peerconnection",
856      ":rtc_pc",
857      ":rtc_pc_base",
858      ":video_rtp_receiver",
859      "../api:array_view",
860      "../api:audio_options_api",
861      "../api:ice_transport_factory",
862      "../api:libjingle_peerconnection_api",
863      "../api:rtc_error",
864      "../api:rtp_headers",
865      "../api:rtp_parameters",
866      "../api/video:builtin_video_bitrate_allocator_factory",
867      "../api/video/test:mock_recordable_encoded_frame",
868      "../call:rtp_interfaces",
869      "../call:rtp_receiver",
870      "../media:rtc_data",
871      "../media:rtc_media_base",
872      "../media:rtc_media_tests_utils",
873      "../modules/rtp_rtcp:rtp_rtcp_format",
874      "../p2p:fake_ice_transport",
875      "../p2p:fake_port_allocator",
876      "../p2p:p2p_test_utils",
877      "../p2p:rtc_p2p",
878      "../rtc_base",
879      "../rtc_base:checks",
880      "../rtc_base:gunit_helpers",
881      "../rtc_base:rtc_base_approved",
882      "../rtc_base:rtc_base_tests_utils",
883      "../rtc_base:threading",
884      "../rtc_base/third_party/sigslot",
885      "../system_wrappers:metrics",
886      "../test:field_trial",
887      "../test:test_main",
888      "../test:test_support",
889      "//third_party/abseil-cpp/absl/algorithm:container",
890      "//third_party/abseil-cpp/absl/memory",
891      "//third_party/abseil-cpp/absl/strings",
892    ]
893
894    if (rtc_build_libsrtp) {
895      deps += [ "//third_party/libsrtp" ]
896    }
897
898    if (is_android) {
899      deps += [ "//testing/android/native_test:native_test_support" ]
900    }
901  }
902
903  rtc_library("peerconnection_perf_tests") {
904    testonly = true
905    sources = [ "peer_connection_rampup_tests.cc" ]
906    deps = [
907      ":pc_test_utils",
908      ":peerconnection_wrapper",
909      "../api:audio_options_api",
910      "../api:create_peerconnection_factory",
911      "../api:libjingle_peerconnection_api",
912      "../api:media_stream_interface",
913      "../api:rtc_stats_api",
914      "../api:scoped_refptr",
915      "../api/audio:audio_mixer_api",
916      "../api/audio_codecs:audio_codecs_api",
917      "../api/audio_codecs:builtin_audio_decoder_factory",
918      "../api/audio_codecs:builtin_audio_encoder_factory",
919      "../api/video_codecs:builtin_video_decoder_factory",
920      "../api/video_codecs:builtin_video_encoder_factory",
921      "../api/video_codecs:video_codecs_api",
922      "../media:rtc_media_tests_utils",
923      "../modules/audio_device:audio_device_api",
924      "../modules/audio_processing:api",
925      "../p2p:p2p_test_utils",
926      "../p2p:rtc_p2p",
927      "../pc:peerconnection",
928      "../rtc_base",
929      "../rtc_base:checks",
930      "../rtc_base:gunit_helpers",
931      "../rtc_base:rtc_base_tests_utils",
932      "../rtc_base:socket_address",
933      "../rtc_base:threading",
934      "../system_wrappers",
935      "../test:perf_test",
936      "../test:test_support",
937    ]
938    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
939  }
940
941  rtc_library("peerconnection_wrapper") {
942    testonly = true
943    sources = [
944      "peer_connection_wrapper.cc",
945      "peer_connection_wrapper.h",
946    ]
947    deps = [
948      ":pc_test_utils",
949      "../api:function_view",
950      "../api:libjingle_peerconnection_api",
951      "../api:media_stream_interface",
952      "../api:rtc_error",
953      "../api:rtc_stats_api",
954      "../api:rtp_parameters",
955      "../api:scoped_refptr",
956      "../pc:peerconnection",
957      "../rtc_base:checks",
958      "../rtc_base:gunit_helpers",
959      "../rtc_base:rtc_base_approved",
960      "../test:test_support",
961    ]
962  }
963
964  rtc_test("peerconnection_unittests") {
965    testonly = true
966    sources = [
967      "data_channel_integrationtest.cc",
968      "data_channel_unittest.cc",
969      "dtmf_sender_unittest.cc",
970      "ice_server_parsing_unittest.cc",
971      "jitter_buffer_delay_unittest.cc",
972      "jsep_session_description_unittest.cc",
973      "local_audio_source_unittest.cc",
974      "media_stream_unittest.cc",
975      "peer_connection_adaptation_integrationtest.cc",
976      "peer_connection_bundle_unittest.cc",
977      "peer_connection_crypto_unittest.cc",
978      "peer_connection_data_channel_unittest.cc",
979      "peer_connection_end_to_end_unittest.cc",
980      "peer_connection_factory_unittest.cc",
981      "peer_connection_header_extension_unittest.cc",
982      "peer_connection_histogram_unittest.cc",
983      "peer_connection_ice_unittest.cc",
984      "peer_connection_integrationtest.cc",
985      "peer_connection_interface_unittest.cc",
986      "peer_connection_jsep_unittest.cc",
987      "peer_connection_media_unittest.cc",
988      "peer_connection_rtp_unittest.cc",
989      "peer_connection_signaling_unittest.cc",
990      "peer_connection_simulcast_unittest.cc",
991      "peer_connection_wrapper.cc",
992      "peer_connection_wrapper.h",
993      "proxy_unittest.cc",
994      "rtc_stats_collector_unittest.cc",
995      "rtc_stats_integrationtest.cc",
996      "rtc_stats_traversal_unittest.cc",
997      "rtp_media_utils_unittest.cc",
998      "rtp_parameters_conversion_unittest.cc",
999      "rtp_sender_receiver_unittest.cc",
1000      "rtp_transceiver_unittest.cc",
1001      "sctp_utils_unittest.cc",
1002      "sdp_serializer_unittest.cc",
1003      "stats_collector_unittest.cc",
1004      "test/fake_audio_capture_module_unittest.cc",
1005      "test/test_sdp_strings.h",
1006      "track_media_info_map_unittest.cc",
1007      "video_rtp_track_source_unittest.cc",
1008      "video_track_unittest.cc",
1009      "webrtc_sdp_unittest.cc",
1010    ]
1011
1012    if (rtc_enable_sctp) {
1013      defines = [ "WEBRTC_HAVE_SCTP" ]
1014    }
1015
1016    deps = [
1017      ":audio_rtp_receiver",
1018      ":audio_track",
1019      ":dtmf_sender",
1020      ":integration_test_helpers",
1021      ":jitter_buffer_delay",
1022      ":jitter_buffer_delay_interface",
1023      ":media_stream",
1024      ":peerconnection",
1025      ":remote_audio_source",
1026      ":rtc_pc_base",
1027      ":rtp_parameters_conversion",
1028      ":rtp_receiver",
1029      ":rtp_sender",
1030      ":rtp_transceiver",
1031      ":usage_pattern",
1032      ":video_rtp_receiver",
1033      ":video_rtp_track_source",
1034      ":video_track",
1035      ":video_track_source",
1036      "../api:array_view",
1037      "../api:audio_options_api",
1038      "../api:create_peerconnection_factory",
1039      "../api:fake_frame_decryptor",
1040      "../api:fake_frame_encryptor",
1041      "../api:function_view",
1042      "../api:libjingle_logging_api",
1043      "../api:libjingle_peerconnection_api",
1044      "../api:media_stream_interface",
1045      "../api:mock_rtp",
1046      "../api:packet_socket_factory",
1047      "../api:rtc_error",
1048      "../api:rtp_transceiver_direction",
1049      "../api:scoped_refptr",
1050      "../api/audio:audio_mixer_api",
1051      "../api/crypto:frame_decryptor_interface",
1052      "../api/crypto:frame_encryptor_interface",
1053      "../api/crypto:options",
1054      "../api/rtc_event_log",
1055      "../api/rtc_event_log:rtc_event_log_factory",
1056      "../api/task_queue",
1057      "../api/task_queue:default_task_queue_factory",
1058      "../api/transport:field_trial_based_config",
1059      "../api/transport:webrtc_key_value_config",
1060      "../api/transport/rtp:rtp_source",
1061      "../api/units:time_delta",
1062      "../api/video:builtin_video_bitrate_allocator_factory",
1063      "../api/video:video_rtp_headers",
1064      "../call/adaptation:resource_adaptation_test_utilities",
1065      "../logging:fake_rtc_event_log",
1066      "../media:rtc_media_config",
1067      "../media:rtc_media_engine_defaults",
1068      "../modules/audio_device:audio_device_api",
1069      "../modules/audio_processing:audio_processing_statistics",
1070      "../modules/audio_processing:audioproc_test_utils",
1071      "../modules/rtp_rtcp:rtp_rtcp_format",
1072      "../p2p:fake_ice_transport",
1073      "../p2p:fake_port_allocator",
1074      "../p2p:p2p_server_utils",
1075      "../rtc_base:checks",
1076      "../rtc_base:gunit_helpers",
1077      "../rtc_base:ip_address",
1078      "../rtc_base:rtc_base_tests_utils",
1079      "../rtc_base:rtc_json",
1080      "../rtc_base:socket_address",
1081      "../rtc_base:threading",
1082      "../rtc_base/synchronization:mutex",
1083      "../rtc_base/third_party/base64",
1084      "../rtc_base/third_party/sigslot",
1085      "../system_wrappers:metrics",
1086      "../test:field_trial",
1087      "../test:fileutils",
1088      "../test:rtp_test_utils",
1089      "../test/pc/sctp:fake_sctp_transport",
1090      "./scenario_tests:pc_scenario_tests",
1091      "//third_party/abseil-cpp/absl/algorithm:container",
1092      "//third_party/abseil-cpp/absl/memory",
1093      "//third_party/abseil-cpp/absl/strings",
1094      "//third_party/abseil-cpp/absl/types:optional",
1095    ]
1096    if (is_android) {
1097      deps += [ ":android_black_magic" ]
1098    }
1099
1100    deps += [
1101      ":libjingle_peerconnection",
1102      ":pc_test_utils",
1103      "../api:callfactory_api",
1104      "../api:rtc_event_log_output_file",
1105      "../api:rtc_stats_api",
1106      "../api:rtp_parameters",
1107      "../api/audio_codecs:audio_codecs_api",
1108      "../api/audio_codecs:builtin_audio_decoder_factory",
1109      "../api/audio_codecs:builtin_audio_encoder_factory",
1110      "../api/audio_codecs:opus_audio_decoder_factory",
1111      "../api/audio_codecs:opus_audio_encoder_factory",
1112      "../api/audio_codecs/L16:audio_decoder_L16",
1113      "../api/audio_codecs/L16:audio_encoder_L16",
1114      "../api/video_codecs:builtin_video_decoder_factory",
1115      "../api/video_codecs:builtin_video_encoder_factory",
1116      "../api/video_codecs:video_codecs_api",
1117      "../call:call_interfaces",
1118      "../media:rtc_audio_video",
1119      "../media:rtc_data",  # TODO(phoglund): AFAIK only used for one sctp
1120                            # constant.
1121      "../media:rtc_media_base",
1122      "../media:rtc_media_tests_utils",
1123      "../modules/audio_processing",
1124      "../modules/audio_processing:api",
1125      "../modules/utility",
1126      "../p2p:p2p_test_utils",
1127      "../p2p:rtc_p2p",
1128      "../pc:rtc_pc",
1129      "../rtc_base",
1130      "../rtc_base:rtc_base_approved",
1131      "../rtc_base:rtc_task_queue",
1132      "../rtc_base:safe_conversions",
1133      "../test:audio_codec_mocks",
1134      "../test:test_main",
1135      "../test:test_support",
1136    ]
1137
1138    if (is_android) {
1139      deps += [
1140        "//testing/android/native_test:native_test_support",
1141
1142        # We need to depend on this one directly, or classloads will fail for
1143        # the voice engine BuildInfo, for instance.
1144        "../sdk/android:libjingle_peerconnection_java",
1145      ]
1146
1147      shard_timeout = 900
1148    }
1149  }
1150
1151  if (is_android) {
1152    rtc_library("android_black_magic") {
1153      # The android code uses hacky includes to chromium-base and the ssl code;
1154      # having this in a separate target enables us to keep the peerconnection
1155      # unit tests clean.
1156      check_includes = false
1157      testonly = true
1158      sources = [
1159        "test/android_test_initializer.cc",
1160        "test/android_test_initializer.h",
1161      ]
1162      deps = [
1163        "../sdk/android:libjingle_peerconnection_jni",
1164        "//testing/android/native_test:native_test_support",
1165      ]
1166    }
1167  }
1168
1169  rtc_library("integration_test_helpers") {
1170    testonly = true
1171    sources = [
1172      "test/integration_test_helpers.cc",
1173      "test/integration_test_helpers.h",
1174    ]
1175    deps = [
1176      ":audio_rtp_receiver",
1177      ":audio_track",
1178      ":dtmf_sender",
1179      ":jitter_buffer_delay",
1180      ":jitter_buffer_delay_interface",
1181      ":media_stream",
1182      ":pc_test_utils",
1183      ":peerconnection",
1184      ":remote_audio_source",
1185      ":rtc_pc_base",
1186      ":rtp_parameters_conversion",
1187      ":rtp_receiver",
1188      ":rtp_sender",
1189      ":rtp_transceiver",
1190      ":usage_pattern",
1191      ":video_rtp_receiver",
1192      ":video_rtp_track_source",
1193      ":video_track",
1194      ":video_track_source",
1195      "../api:array_view",
1196      "../api:audio_options_api",
1197      "../api:callfactory_api",
1198      "../api:create_peerconnection_factory",
1199      "../api:fake_frame_decryptor",
1200      "../api:fake_frame_encryptor",
1201      "../api:function_view",
1202      "../api:libjingle_logging_api",
1203      "../api:libjingle_peerconnection_api",
1204      "../api:media_stream_interface",
1205      "../api:mock_rtp",
1206      "../api:packet_socket_factory",
1207      "../api:rtc_error",
1208      "../api:rtc_stats_api",
1209      "../api:rtp_parameters",
1210      "../api:rtp_transceiver_direction",
1211      "../api:scoped_refptr",
1212      "../api/audio:audio_mixer_api",
1213      "../api/crypto:frame_decryptor_interface",
1214      "../api/crypto:frame_encryptor_interface",
1215      "../api/crypto:options",
1216      "../api/rtc_event_log",
1217      "../api/rtc_event_log:rtc_event_log_factory",
1218      "../api/task_queue",
1219      "../api/task_queue:default_task_queue_factory",
1220      "../api/transport:field_trial_based_config",
1221      "../api/transport:webrtc_key_value_config",
1222      "../api/transport/rtp:rtp_source",
1223      "../api/units:time_delta",
1224      "../api/video:builtin_video_bitrate_allocator_factory",
1225      "../api/video:video_rtp_headers",
1226      "../api/video_codecs:video_codecs_api",
1227      "../call:call_interfaces",
1228      "../call/adaptation:resource_adaptation_test_utilities",
1229      "../logging:fake_rtc_event_log",
1230      "../media:rtc_audio_video",
1231      "../media:rtc_media_base",
1232      "../media:rtc_media_config",
1233      "../media:rtc_media_engine_defaults",
1234      "../media:rtc_media_tests_utils",
1235      "../modules/audio_device:audio_device_api",
1236      "../modules/audio_processing:api",
1237      "../modules/audio_processing:audio_processing_statistics",
1238      "../modules/audio_processing:audioproc_test_utils",
1239      "../modules/rtp_rtcp:rtp_rtcp_format",
1240      "../p2p:fake_ice_transport",
1241      "../p2p:fake_port_allocator",
1242      "../p2p:p2p_server_utils",
1243      "../p2p:p2p_test_utils",
1244      "../p2p:rtc_p2p",
1245      "../rtc_base",
1246      "../rtc_base:checks",
1247      "../rtc_base:gunit_helpers",
1248      "../rtc_base:ip_address",
1249      "../rtc_base:rtc_base_tests_utils",
1250      "../rtc_base:rtc_json",
1251      "../rtc_base:socket_address",
1252      "../rtc_base:threading",
1253      "../rtc_base:timeutils",
1254      "../rtc_base/synchronization:mutex",
1255      "../rtc_base/task_utils:pending_task_safety_flag",
1256      "../rtc_base/task_utils:to_queued_task",
1257      "../rtc_base/third_party/base64",
1258      "../rtc_base/third_party/sigslot",
1259      "../system_wrappers:metrics",
1260      "../test:field_trial",
1261      "../test:fileutils",
1262      "../test:rtp_test_utils",
1263      "../test:test_support",
1264      "../test/pc/sctp:fake_sctp_transport",
1265    ]
1266    absl_deps = [
1267      "//third_party/abseil-cpp/absl/algorithm:container",
1268      "//third_party/abseil-cpp/absl/memory",
1269      "//third_party/abseil-cpp/absl/strings",
1270      "//third_party/abseil-cpp/absl/types:optional",
1271    ]
1272  }
1273
1274  rtc_library("pc_test_utils") {
1275    testonly = true
1276    sources = [
1277      "test/fake_audio_capture_module.cc",
1278      "test/fake_audio_capture_module.h",
1279      "test/fake_data_channel_provider.h",
1280      "test/fake_peer_connection_base.h",
1281      "test/fake_peer_connection_for_stats.h",
1282      "test/fake_periodic_video_source.h",
1283      "test/fake_periodic_video_track_source.h",
1284      "test/fake_rtc_certificate_generator.h",
1285      "test/fake_video_track_renderer.h",
1286      "test/fake_video_track_source.h",
1287      "test/frame_generator_capturer_video_track_source.h",
1288      "test/mock_channel_interface.h",
1289      "test/mock_data_channel.h",
1290      "test/mock_delayable.h",
1291      "test/mock_peer_connection_observers.h",
1292      "test/mock_rtp_receiver_internal.h",
1293      "test/mock_rtp_sender_internal.h",
1294      "test/peer_connection_test_wrapper.cc",
1295      "test/peer_connection_test_wrapper.h",
1296      "test/rtc_stats_obtainer.h",
1297      "test/test_sdp_strings.h",
1298    ]
1299
1300    deps = [
1301      ":jitter_buffer_delay",
1302      ":jitter_buffer_delay_interface",
1303      ":libjingle_peerconnection",
1304      ":peerconnection",
1305      ":rtc_pc_base",
1306      ":rtp_receiver",
1307      ":rtp_sender",
1308      ":video_track_source",
1309      "../api:audio_options_api",
1310      "../api:create_frame_generator",
1311      "../api:create_peerconnection_factory",
1312      "../api:libjingle_peerconnection_api",
1313      "../api:media_stream_interface",
1314      "../api:rtc_error",
1315      "../api:rtc_stats_api",
1316      "../api:scoped_refptr",
1317      "../api:sequence_checker",
1318      "../api/audio:audio_mixer_api",
1319      "../api/audio_codecs:audio_codecs_api",
1320      "../api/task_queue",
1321      "../api/task_queue:default_task_queue_factory",
1322      "../api/video:builtin_video_bitrate_allocator_factory",
1323      "../api/video:video_frame",
1324      "../api/video:video_rtp_headers",
1325      "../api/video_codecs:builtin_video_decoder_factory",
1326      "../api/video_codecs:builtin_video_encoder_factory",
1327      "../api/video_codecs:video_codecs_api",
1328      "../call:call_interfaces",
1329      "../media:rtc_data",
1330      "../media:rtc_media",
1331      "../media:rtc_media_base",
1332      "../media:rtc_media_tests_utils",
1333      "../modules/audio_device",
1334      "../modules/audio_processing",
1335      "../modules/audio_processing:api",
1336      "../p2p:fake_port_allocator",
1337      "../p2p:p2p_test_utils",
1338      "../p2p:rtc_p2p",
1339      "../rtc_base",
1340      "../rtc_base:checks",
1341      "../rtc_base:gunit_helpers",
1342      "../rtc_base:rtc_base_approved",
1343      "../rtc_base:rtc_task_queue",
1344      "../rtc_base:task_queue_for_test",
1345      "../rtc_base:threading",
1346      "../rtc_base/synchronization:mutex",
1347      "../rtc_base/task_utils:repeating_task",
1348      "../rtc_base/third_party/sigslot",
1349      "../test:test_support",
1350      "../test:video_test_common",
1351    ]
1352    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
1353  }
1354}
1355