You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
..
adaptation
audio
audio_codecs
call
crypto
g3doc
metronome
neteq
numerics
rtc_event_log
stats
task_queue
test
transport
units
video
video_codecs
voip
BUILD.gn
DEPS
OWNERS.webrtc
README.md
array_view.h
array_view_unittest.cc
async_dns_resolver.h
async_resolver_factory.h
audio_options.cc
audio_options.h
candidate.cc
candidate.h
create_peerconnection_factory.cc
create_peerconnection_factory.h
crypto_params.h
data_channel_interface.cc
data_channel_interface.h
dtls_transport_interface.cc
dtls_transport_interface.h
dtmf_sender_interface.h
fec_controller.h
fec_controller_override.h
field_trials.cc
field_trials.h
field_trials_registry.cc
field_trials_registry.h
field_trials_unittest.cc
field_trials_view.h
frame_transformer_factory.cc
frame_transformer_factory.h
frame_transformer_interface.h
function_view.h
function_view_unittest.cc
ice_transport_factory.cc
ice_transport_factory.h
ice_transport_interface.h
jsep.cc
jsep.h
jsep_ice_candidate.cc
jsep_ice_candidate.h
jsep_session_description.h
legacy_stats_types.cc
legacy_stats_types.h
make_ref_counted.h
media_stream_interface.cc
media_stream_interface.h
media_stream_track.h
media_types.cc
media_types.h
network_state_predictor.h
notifier.h
packet_socket_factory.h
peer_connection_interface.cc
peer_connection_interface.h
priority.h
ref_counted_base.h
rtc_error.cc
rtc_error.h
rtc_error_unittest.cc
rtc_event_log_output.h
rtc_event_log_output_file.cc
rtc_event_log_output_file.h
rtc_event_log_output_file_unittest.cc
rtp_headers.cc
rtp_headers.h
rtp_packet_info.cc
rtp_packet_info.h
rtp_packet_info_unittest.cc
rtp_packet_infos.h
rtp_packet_infos_unittest.cc
rtp_parameters.cc
rtp_parameters.h
rtp_parameters_unittest.cc
rtp_receiver_interface.cc
rtp_receiver_interface.h
rtp_sender_interface.cc
rtp_sender_interface.h
rtp_transceiver_direction.h
rtp_transceiver_interface.cc
rtp_transceiver_interface.h
scoped_refptr.h
scoped_refptr_unittest.cc
sctp_transport_interface.cc
sctp_transport_interface.h
sequence_checker.h
sequence_checker_unittest.cc
set_local_description_observer_interface.h
set_remote_description_observer_interface.h
turn_customizer.h
uma_metrics.h
video_track_source_constraints.h
video_track_source_proxy_factory.h
webrtc_key_value_config.h
wrapping_async_dns_resolver.cc
wrapping_async_dns_resolver.h

README.md

How to write code in the api/ directory

Mostly, just follow the regular style guide, but:

  • Note that api/ code is not exempt from the “.h and .cc files come in pairs” rule, so if you declare something in api/path/to/foo.h, it should be defined in api/path/to/foo.cc.
  • Headers in api/ should, if possible, not #include headers outside api/. Its not always possible to avoid this, but be aware that it adds to a small mountain of technical debt that were trying to shrink.
  • .cc files in api/, on the other hand, are free to #include headers outside api/.

That is, the preferred way for api/ code to access non-api/ code is to call it from a .cc file, so that users of our API headers wont transitively #include non-public headers.

For headers in api/ that need to refer to non-public types, forward declarations are often a lesser evil than including non-public header files. The usual rules still apply, though.

.cc files in api/ should preferably be kept reasonably small. If a substantial implementation is needed, consider putting it with our non-public code, and just call it from the api/ .cc file.