• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("../webrtc.gni")
10
11rtc_library("call_interfaces") {
12  sources = [
13    "audio_receive_stream.cc",
14    "audio_receive_stream.h",
15    "audio_send_stream.h",
16    "audio_state.cc",
17    "audio_state.h",
18    "call.h",
19    "call_config.cc",
20    "call_config.h",
21    "flexfec_receive_stream.cc",
22    "flexfec_receive_stream.h",
23    "packet_receiver.h",
24    "syncable.cc",
25    "syncable.h",
26  ]
27  if (!build_with_mozilla) {
28    sources += [ "audio_send_stream.cc" ]
29  }
30  deps = [
31    ":audio_sender_interface",
32    ":rtp_interfaces",
33    ":video_stream_api",
34    "../api:fec_controller_api",
35    "../api:frame_transformer_interface",
36    "../api:network_state_predictor_api",
37    "../api:rtc_error",
38    "../api:rtp_headers",
39    "../api:rtp_parameters",
40    "../api:scoped_refptr",
41    "../api:transport_api",
42    "../api/adaptation:resource_adaptation_api",
43    "../api/audio:audio_mixer_api",
44    "../api/audio_codecs:audio_codecs_api",
45    "../api/crypto:frame_decryptor_interface",
46    "../api/crypto:frame_encryptor_interface",
47    "../api/crypto:options",
48    "../api/neteq:neteq_api",
49    "../api/task_queue",
50    "../api/transport:bitrate_settings",
51    "../api/transport:network_control",
52    "../api/transport:webrtc_key_value_config",
53    "../api/transport/rtp:rtp_source",
54    "../modules/audio_device",
55    "../modules/audio_processing",
56    "../modules/audio_processing:api",
57    "../modules/audio_processing:audio_processing_statistics",
58    "../modules/rtp_rtcp:rtp_rtcp_format",
59    "../modules/utility",
60    "../rtc_base",
61    "../rtc_base:audio_format_to_string",
62    "../rtc_base:checks",
63    "../rtc_base:rtc_base_approved",
64    "../rtc_base/network:sent_packet",
65  ]
66  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
67}
68
69rtc_source_set("audio_sender_interface") {
70  visibility = [ "*" ]
71  sources = [ "audio_sender.h" ]
72  deps = [ "../api/audio:audio_frame_api" ]
73}
74
75# TODO(nisse): These RTP targets should be moved elsewhere
76# when interfaces have stabilized. See also TODO for |mock_rtp_interfaces|.
77rtc_library("rtp_interfaces") {
78  # Client code SHOULD NOT USE THIS TARGET, but for now it needs to be public
79  # because there exists client code that uses it.
80  # TODO(bugs.webrtc.org/9808): Move to private visibility as soon as that
81  # client code gets updated.
82  visibility = [ "*" ]
83  sources = [
84    "rtp_config.cc",
85    "rtp_config.h",
86    "rtp_packet_sink_interface.h",
87    "rtp_stream_receiver_controller_interface.h",
88    "rtp_transport_controller_send_interface.h",
89  ]
90  deps = [
91    "../api:array_view",
92    "../api:fec_controller_api",
93    "../api:frame_transformer_interface",
94    "../api:rtp_headers",
95    "../api:rtp_parameters",
96    "../api/crypto:options",
97    "../api/rtc_event_log",
98    "../api/transport:bitrate_settings",
99    "../api/units:timestamp",
100    "../modules/rtp_rtcp:rtp_rtcp_format",
101    "../rtc_base:checks",
102    "../rtc_base:rtc_base_approved",
103  ]
104  absl_deps = [
105    "//third_party/abseil-cpp/absl/algorithm:container",
106    "//third_party/abseil-cpp/absl/types:optional",
107  ]
108}
109
110rtc_library("rtp_receiver") {
111  visibility = [ "*" ]
112  sources = [
113    "rtp_demuxer.cc",
114    "rtp_demuxer.h",
115    "rtp_stream_receiver_controller.cc",
116    "rtp_stream_receiver_controller.h",
117    "rtx_receive_stream.cc",
118    "rtx_receive_stream.h",
119  ]
120  deps = [
121    ":rtp_interfaces",
122    "../api:array_view",
123    "../api:rtp_headers",
124    "../modules/rtp_rtcp",
125    "../modules/rtp_rtcp:rtp_rtcp_format",
126    "../rtc_base:checks",
127    "../rtc_base:rtc_base_approved",
128  ]
129  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
130}
131
132rtc_library("rtp_sender") {
133  sources = [
134    "rtp_payload_params.cc",
135    "rtp_payload_params.h",
136    "rtp_transport_controller_send.cc",
137    "rtp_transport_controller_send.h",
138    "rtp_video_sender.cc",
139    "rtp_video_sender.h",
140    "rtp_video_sender_interface.h",
141  ]
142  deps = [
143    ":bitrate_configurator",
144    ":rtp_interfaces",
145    "../api:array_view",
146    "../api:bitrate_allocation",
147    "../api:fec_controller_api",
148    "../api:network_state_predictor_api",
149    "../api:rtp_parameters",
150    "../api:transport_api",
151    "../api/rtc_event_log",
152    "../api/transport:field_trial_based_config",
153    "../api/transport:goog_cc",
154    "../api/transport:network_control",
155    "../api/transport:webrtc_key_value_config",
156    "../api/units:data_rate",
157    "../api/units:time_delta",
158    "../api/units:timestamp",
159    "../api/video:video_frame",
160    "../api/video:video_rtp_headers",
161    "../api/video_codecs:video_codecs_api",
162    "../logging:rtc_event_bwe",
163    "../modules/congestion_controller",
164    "../modules/congestion_controller/rtp:control_handler",
165    "../modules/congestion_controller/rtp:transport_feedback",
166    "../modules/pacing",
167    "../modules/rtp_rtcp",
168    "../modules/rtp_rtcp:rtp_rtcp_format",
169    "../modules/rtp_rtcp:rtp_video_header",
170    "../modules/utility",
171    "../modules/video_coding:chain_diff_calculator",
172    "../modules/video_coding:codec_globals_headers",
173    "../modules/video_coding:frame_dependencies_calculator",
174    "../modules/video_coding:video_codec_interface",
175    "../rtc_base",
176    "../rtc_base:checks",
177    "../rtc_base:rate_limiter",
178    "../rtc_base:rtc_base_approved",
179    "../rtc_base:rtc_task_queue",
180    "../rtc_base/synchronization:mutex",
181    "../rtc_base/task_utils:repeating_task",
182  ]
183  absl_deps = [
184    "//third_party/abseil-cpp/absl/algorithm:container",
185    "//third_party/abseil-cpp/absl/container:inlined_vector",
186    "//third_party/abseil-cpp/absl/strings:strings",
187    "//third_party/abseil-cpp/absl/types:optional",
188    "//third_party/abseil-cpp/absl/types:variant",
189  ]
190}
191
192rtc_library("bitrate_configurator") {
193  sources = [
194    "rtp_bitrate_configurator.cc",
195    "rtp_bitrate_configurator.h",
196  ]
197  deps = [
198    ":rtp_interfaces",
199
200    # For api/bitrate_constraints.h
201    "../api:libjingle_peerconnection_api",
202    "../api/transport:bitrate_settings",
203    "../api/units:data_rate",
204    "../rtc_base:checks",
205    "../rtc_base:rtc_base_approved",
206  ]
207  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
208}
209
210rtc_library("bitrate_allocator") {
211  sources = [
212    "bitrate_allocator.cc",
213    "bitrate_allocator.h",
214  ]
215  deps = [
216    "../api:bitrate_allocation",
217    "../api/transport:network_control",
218    "../api/units:data_rate",
219    "../api/units:time_delta",
220    "../rtc_base:checks",
221    "../rtc_base:rtc_base_approved",
222    "../rtc_base:safe_minmax",
223    "../rtc_base/synchronization:sequence_checker",
224    "../system_wrappers",
225    "../system_wrappers:field_trial",
226    "../system_wrappers:metrics",
227  ]
228  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
229}
230
231rtc_library("call") {
232  sources = [
233    "call.cc",
234    "call_factory.cc",
235    "call_factory.h",
236    "degraded_call.cc",
237    "degraded_call.h",
238    "flexfec_receive_stream_impl.cc",
239    "flexfec_receive_stream_impl.h",
240    "receive_time_calculator.cc",
241    "receive_time_calculator.h",
242  ]
243
244  deps = [
245    ":bitrate_allocator",
246    ":call_interfaces",
247    ":fake_network",
248    ":rtp_interfaces",
249    ":rtp_receiver",
250    ":rtp_sender",
251    ":simulated_network",
252    ":video_stream_api",
253    "../api:array_view",
254    "../api:callfactory_api",
255    "../api:fec_controller_api",
256    "../api:rtp_headers",
257    "../api:rtp_parameters",
258    "../api:simulated_network_api",
259    "../api:transport_api",
260    "../api/rtc_event_log",
261    "../api/transport:network_control",
262    "../api/units:time_delta",
263    "../api/video_codecs:video_codecs_api",
264    "../audio",
265    "../logging:rtc_event_audio",
266    "../logging:rtc_event_rtp_rtcp",
267    "../logging:rtc_event_video",
268    "../logging:rtc_stream_config",
269    "../modules:module_api",
270    "../modules/congestion_controller",
271    "../modules/pacing",
272    "../modules/rtp_rtcp",
273    "../modules/rtp_rtcp:rtp_rtcp_format",
274    "../modules/utility",
275    "../modules/video_coding",
276    "../rtc_base:checks",
277    "../rtc_base:rate_limiter",
278    "../rtc_base:rtc_base_approved",
279    "../rtc_base:rtc_task_queue",
280    "../rtc_base:safe_minmax",
281    "../rtc_base/experiments:field_trial_parser",
282    "../rtc_base/network:sent_packet",
283    "../rtc_base/synchronization:sequence_checker",
284    "../rtc_base/task_utils:pending_task_safety_flag",
285    "../system_wrappers",
286    "../system_wrappers:field_trial",
287    "../system_wrappers:metrics",
288    "../video",
289    "adaptation:resource_adaptation",
290  ]
291  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
292}
293
294rtc_library("video_stream_api") {
295  sources = [
296    "video_receive_stream.cc",
297    "video_receive_stream.h",
298    "video_send_stream.cc",
299    "video_send_stream.h",
300  ]
301  deps = [
302    ":rtp_interfaces",
303    "../api:frame_transformer_interface",
304    "../api:rtp_headers",
305    "../api:rtp_parameters",
306    "../api:scoped_refptr",
307    "../api:transport_api",
308    "../api/adaptation:resource_adaptation_api",
309    "../api/crypto:frame_decryptor_interface",
310    "../api/crypto:frame_encryptor_interface",
311    "../api/crypto:options",
312    "../api/transport/rtp:rtp_source",
313    "../api/video:recordable_encoded_frame",
314    "../api/video:video_frame",
315    "../api/video:video_rtp_headers",
316    "../api/video:video_stream_encoder",
317    "../api/video_codecs:video_codecs_api",
318    "../common_video",
319    "../modules/rtp_rtcp:rtp_rtcp_format",
320    "../rtc_base:checks",
321    "../rtc_base:rtc_base_approved",
322  ]
323  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
324}
325
326rtc_library("simulated_network") {
327  sources = [
328    "simulated_network.cc",
329    "simulated_network.h",
330  ]
331  deps = [
332    "../api:simulated_network_api",
333    "../api/units:data_rate",
334    "../api/units:data_size",
335    "../api/units:time_delta",
336    "../api/units:timestamp",
337    "../rtc_base:checks",
338    "../rtc_base:rtc_base_approved",
339    "../rtc_base/synchronization:mutex",
340    "../rtc_base/synchronization:sequence_checker",
341  ]
342  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
343}
344
345rtc_source_set("simulated_packet_receiver") {
346  sources = [ "simulated_packet_receiver.h" ]
347  deps = [
348    ":call_interfaces",
349    "../api:simulated_network_api",
350  ]
351}
352
353rtc_library("fake_network") {
354  sources = [
355    "fake_network_pipe.cc",
356    "fake_network_pipe.h",
357  ]
358  deps = [
359    ":call_interfaces",
360    ":simulated_network",
361    ":simulated_packet_receiver",
362    "../api:rtp_parameters",
363    "../api:simulated_network_api",
364    "../api:transport_api",
365    "../modules/utility",
366    "../rtc_base:checks",
367    "../rtc_base:rtc_base_approved",
368    "../rtc_base/synchronization:mutex",
369    "../rtc_base/synchronization:sequence_checker",
370    "../system_wrappers",
371  ]
372}
373
374if (rtc_include_tests) {
375  rtc_library("call_tests") {
376    testonly = true
377
378    sources = [
379      "bitrate_allocator_unittest.cc",
380      "bitrate_estimator_tests.cc",
381      "call_unittest.cc",
382      "flexfec_receive_stream_unittest.cc",
383      "receive_time_calculator_unittest.cc",
384      "rtp_bitrate_configurator_unittest.cc",
385      "rtp_demuxer_unittest.cc",
386      "rtp_payload_params_unittest.cc",
387      "rtp_video_sender_unittest.cc",
388      "rtx_receive_stream_unittest.cc",
389    ]
390    deps = [
391      ":bitrate_allocator",
392      ":bitrate_configurator",
393      ":call",
394      ":call_interfaces",
395      ":mock_rtp_interfaces",
396      ":rtp_interfaces",
397      ":rtp_receiver",
398      ":rtp_sender",
399      ":simulated_network",
400      "../api:array_view",
401      "../api:create_frame_generator",
402      "../api:mock_audio_mixer",
403      "../api:rtp_headers",
404      "../api:rtp_parameters",
405      "../api:transport_api",
406      "../api/audio_codecs:builtin_audio_decoder_factory",
407      "../api/rtc_event_log",
408      "../api/task_queue:default_task_queue_factory",
409      "../api/test/video:function_video_factory",
410      "../api/transport:field_trial_based_config",
411      "../api/video:builtin_video_bitrate_allocator_factory",
412      "../api/video:video_frame",
413      "../api/video:video_rtp_headers",
414      "../audio",
415      "../modules/audio_device:mock_audio_device",
416      "../modules/audio_mixer",
417      "../modules/audio_mixer:audio_mixer_impl",
418      "../modules/audio_processing:mocks",
419      "../modules/congestion_controller",
420      "../modules/pacing",
421      "../modules/rtp_rtcp",
422      "../modules/rtp_rtcp:mock_rtp_rtcp",
423      "../modules/rtp_rtcp:rtp_rtcp_format",
424      "../modules/utility:mock_process_thread",
425      "../modules/video_coding",
426      "../modules/video_coding:codec_globals_headers",
427      "../modules/video_coding:video_codec_interface",
428      "../rtc_base:checks",
429      "../rtc_base:rate_limiter",
430      "../rtc_base:rtc_base_approved",
431      "../rtc_base:task_queue_for_test",
432      "../rtc_base/synchronization:mutex",
433      "../system_wrappers",
434      "../test:audio_codec_mocks",
435      "../test:direct_transport",
436      "../test:encoder_settings",
437      "../test:fake_video_codecs",
438      "../test:field_trial",
439      "../test:mock_frame_transformer",
440      "../test:mock_transport",
441      "../test:test_common",
442      "../test:test_support",
443      "../test:video_test_common",
444      "../test/time_controller:time_controller",
445      "../video",
446      "adaptation:resource_adaptation_test_utilities",
447      "//test/scenario:scenario",
448      "//testing/gmock",
449      "//testing/gtest",
450    ]
451    absl_deps = [
452      "//third_party/abseil-cpp/absl/container:inlined_vector",
453      "//third_party/abseil-cpp/absl/memory",
454      "//third_party/abseil-cpp/absl/types:optional",
455      "//third_party/abseil-cpp/absl/types:variant",
456    ]
457  }
458
459  rtc_library("call_perf_tests") {
460    testonly = true
461
462    sources = [
463      "call_perf_tests.cc",
464      "rampup_tests.cc",
465      "rampup_tests.h",
466    ]
467    deps = [
468      ":call_interfaces",
469      ":simulated_network",
470      ":video_stream_api",
471      "../api:rtc_event_log_output_file",
472      "../api:simulated_network_api",
473      "../api/audio_codecs:builtin_audio_encoder_factory",
474      "../api/rtc_event_log",
475      "../api/rtc_event_log:rtc_event_log_factory",
476      "../api/task_queue",
477      "../api/task_queue:default_task_queue_factory",
478      "../api/video:builtin_video_bitrate_allocator_factory",
479      "../api/video:video_bitrate_allocation",
480      "../api/video_codecs:video_codecs_api",
481      "../modules/audio_coding",
482      "../modules/audio_device",
483      "../modules/audio_device:audio_device_impl",
484      "../modules/audio_mixer:audio_mixer_impl",
485      "../modules/rtp_rtcp",
486      "../modules/rtp_rtcp:rtp_rtcp_format",
487      "../rtc_base",
488      "../rtc_base:checks",
489      "../rtc_base:rtc_base_approved",
490      "../rtc_base:task_queue_for_test",
491      "../rtc_base:task_queue_for_test",
492      "../rtc_base/synchronization:mutex",
493      "../rtc_base/task_utils:repeating_task",
494      "../system_wrappers",
495      "../system_wrappers:metrics",
496      "../test:direct_transport",
497      "../test:encoder_settings",
498      "../test:fake_video_codecs",
499      "../test:field_trial",
500      "../test:fileutils",
501      "../test:null_transport",
502      "../test:perf_test",
503      "../test:rtp_test_utils",
504      "../test:test_common",
505      "../test:test_support",
506      "../test:video_test_common",
507      "../video",
508      "//testing/gtest",
509    ]
510    absl_deps = [ "//third_party/abseil-cpp/absl/flags:flag" ]
511  }
512
513  # TODO(eladalon): This should be moved, as with the TODO for |rtp_interfaces|.
514  rtc_source_set("mock_rtp_interfaces") {
515    testonly = true
516
517    sources = [
518      "test/mock_rtp_packet_sink_interface.h",
519      "test/mock_rtp_transport_controller_send.h",
520    ]
521    deps = [
522      ":rtp_interfaces",
523      "../api:frame_transformer_interface",
524      "../api:libjingle_peerconnection_api",
525      "../api/crypto:frame_encryptor_interface",
526      "../api/crypto:options",
527      "../api/transport:bitrate_settings",
528      "../modules/pacing",
529      "../rtc_base",
530      "../rtc_base:rate_limiter",
531      "../rtc_base/network:sent_packet",
532      "../test:test_support",
533    ]
534  }
535  rtc_source_set("mock_bitrate_allocator") {
536    testonly = true
537
538    sources = [ "test/mock_bitrate_allocator.h" ]
539    deps = [
540      ":bitrate_allocator",
541      "../test:test_support",
542    ]
543  }
544  rtc_source_set("mock_call_interfaces") {
545    testonly = true
546
547    sources = [ "test/mock_audio_send_stream.h" ]
548    deps = [
549      ":call_interfaces",
550      "../test:test_support",
551    ]
552  }
553
554  rtc_library("fake_network_pipe_unittests") {
555    testonly = true
556
557    sources = [
558      "fake_network_pipe_unittest.cc",
559      "simulated_network_unittest.cc",
560    ]
561    deps = [
562      ":fake_network",
563      ":simulated_network",
564      "../api/units:data_rate",
565      "../system_wrappers",
566      "../test:test_support",
567      "//testing/gtest",
568    ]
569    absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
570  }
571}
572