webrtc/api
2024-06-28 14:28:54 -07:00
..
adaptation Remove rtc_base:rtc_base_approved 2022-05-05 09:43:31 +00:00
audio Remove support for setting mobile aec 2024-06-28 14:28:54 -07:00
audio_codecs Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
call Set webrtc::PacketOptions.packet_id from 2024-03-22 11:56:57 +00:00
crypto Add receive support for encrypted TOC byte 2024-03-26 10:37:56 -04:00
environment Document Enviroment is preferred as 1st parameter 2023-11-28 10:53:39 +00:00
g3doc Reland "Migrate WebRTC documentation to new renderer" 2023-01-31 09:30:04 +00:00
metronome Cleanup include and dependencies in api/metronome 2024-01-18 15:08:05 +00:00
neteq Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
numerics Add samples sum calculation 2023-02-24 11:48:39 +00:00
rtc_event_log Propagate Environment into RtcEventLogImpl 2024-01-05 11:28:00 +00:00
stats [Stats] Delete unused RTCStatsMember type alias. 2024-01-26 06:59:32 +00:00
task_queue Delete rtc::TaskQueue 2024-02-28 10:22:49 +00:00
test Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
transport Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
units Format ^(api|call|common_audio|examples|media|net|p2p|pc)/ 2023-05-03 11:09:26 +00:00
video Revert "Provide Environment to construct VideoBitrateAllocator" 2024-05-13 13:32:28 +00:00
video_codecs Make EncodeResultCallback rvalue ref-qualified. 2024-05-13 10:53:48 +00:00
voip Move webrtc::AudioDeviceModule include to api/ folder 2024-04-22 08:56:31 +00:00
array_view.h Add reference, pointer, and co type aliases for rtc::ArrayView. 2023-04-05 20:18:57 +00:00
array_view_unittest.cc Update to WebRTC 4389 (e7d9f74) 2021-04-16 13:26:31 -07:00
async_dns_resolver.h Convert AsyncDnsResolver to use absl::AnyInvocable 2023-08-31 08:50:40 +00:00
audio_options.cc Remove unused combined_audio_video_bwe. 2023-05-26 15:56:00 +00:00
audio_options.h Remove unused combined_audio_video_bwe. 2023-05-26 15:56:00 +00:00
BUILD.gn Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
candidate.cc Mark cricket port type constants as deprecated 2024-03-26 12:28:42 +00:00
candidate.h Mark cricket port type constants as deprecated 2024-03-26 12:28:42 +00:00
candidate_unittest.cc Change internal candidate type to enum 2024-02-25 23:46:52 +00:00
create_peerconnection_factory.cc Move webrtc::AudioDeviceModule include to api/ folder 2024-04-22 08:56:31 +00:00
create_peerconnection_factory.h Move webrtc::AudioDeviceModule include to api/ folder 2024-04-22 08:56:31 +00:00
crypto_params.h ringrtc: Propagate externally-negotiated keys. 2024-06-05 18:16:19 -04:00
data_channel_interface.cc [DataChannelInterface] Introduce DataChannelInterface::SendAsync() 2023-04-11 19:46:36 +00:00
data_channel_interface.h Move some users to use webrtc::RefCountInterface 2023-11-02 14:45:57 +00:00
DEPS Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
dtls_transport_interface.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
dtls_transport_interface.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
dtmf_sender_interface.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
enable_media.cc Delete CallFactoryInterface as no longer needed 2023-12-05 15:44:43 +00:00
enable_media.h Mark EnableMedia with RTC_EXPORT 2023-10-31 22:15:21 +00:00
enable_media_with_defaults.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
enable_media_with_defaults.h Add EnableMediaWithDefaults to replace SetMediaEngineDefaults 2023-11-01 11:47:59 +00:00
fec_controller.h Delete deprecated FecControllerFactoryInterface::CreateFecController variant 2024-01-09 16:44:46 +00:00
fec_controller_override.h Define FecControllerOverride and plumb it down to VideoEncoder 2019-06-28 15:57:22 +00:00
field_trials.cc Finish resolving merge conflicts 2022-11-11 19:10:59 -05:00
field_trials.h Finish resolving merge conflicts 2022-11-11 19:10:59 -05:00
field_trials_registry.cc Add option to log a warning for unregistered field trials 2023-02-28 15:43:18 +00:00
field_trials_registry.h Add FieldTrialsRegistry that verifies looked up field trials 2022-10-24 09:12:30 +00:00
field_trials_unittest.cc Use ScopedFieldTrials in FieldTrialsTest 2022-12-02 15:57:57 +00:00
field_trials_view.h Cleanup FieldTrialView 2023-03-27 17:06:33 +00:00
frame_transformer_factory.cc Make all encodedaudioframes inherit from TransformableAudioFrameI'face 2023-06-19 18:54:47 +00:00
frame_transformer_factory.h Make all encodedaudioframes inherit from TransformableAudioFrameI'face 2023-06-19 18:54:47 +00:00
frame_transformer_interface.h Calculate the audio level of audio packets before encoded transforms 2024-04-29 15:14:25 +00:00
function_view.h Move rtc::FunctionView to the public API 2019-03-21 15:23:05 +00:00
function_view_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
ice_gatherer_interface.h Add ICE forking (without unit tests) 2020-03-20 21:18:17 -07:00
ice_transport_factory.cc Add rtc::make_ref_counted to api/ 2022-06-13 15:53:27 +00:00
ice_transport_factory.h Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +00:00
ice_transport_interface.h Delete deprecated AsyncResolver and related classes 2023-11-30 15:36:55 +00:00
jsep.cc Update to WebRTC 4103 (M83) (#12) 2020-06-25 11:14:34 -07:00
jsep.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
jsep_ice_candidate.cc Use unique_ptr in JsepCandidateCollection 2019-07-31 01:48:07 +00:00
jsep_ice_candidate.h Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
jsep_session_description.h Remove JsepSessionDescription::kDefaultVideoCodecName 2023-03-02 12:28:29 +00:00
legacy_stats_types.cc Add missing method definition for StatsReport::Value::id_val() 2023-06-15 13:53:37 +00:00
legacy_stats_types.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
location.h Implement support for Chrome task origin tracing. #2/4 2023-02-27 13:17:38 +00:00
make_ref_counted.h Fix missing libc++ includes in webrtc 2023-03-02 10:14:51 +00:00
media_stream_interface.cc Format ^(api|call|common_audio|examples|media|net|p2p|pc)/ 2023-05-03 11:09:26 +00:00
media_stream_interface.h Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
media_stream_track.h Use string_view to pass track ids to constructors 2022-05-30 10:28:57 +00:00
media_types.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
media_types.h Revert "Define cricket::MediaType in terms of webrtc::MediaType" 2021-05-12 17:06:58 +00:00
network_state_predictor.h Add base class NetworkPredictor and NetworkPredictorFactory and wire up. 2019-04-10 12:38:58 +00:00
notifier.h Use SequenceChecker(SequenceChecker::kDetached) in a few places. 2023-03-24 07:44:18 +00:00
OWNERS Rearrange api/OWNERS to show who's backup OWNERS 2022-10-07 05:56:08 +00:00
packet_socket_factory.h Remove deprecated ProxyInfo code 2024-04-22 08:38:36 +00:00
peer_connection_interface.cc Merge branch m122 2024-02-14 22:44:28 -08:00
peer_connection_interface.h Merge remote-tracking branch 'google/branch-heads/6478' 2024-06-21 16:31:45 -07:00
priority.h Merge with 4183 (M85) (#25) 2020-09-01 14:43:30 -07:00
README.md Discourage structs in api 2023-09-07 10:41:49 +00:00
ref_count.h Move RefCountInterface to api/ and webrtc: namespace 2023-10-31 14:02:50 +00:00
ref_counted_base.h Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
rtc_error.cc Use absl::string_view type as parameter for RTCError message 2023-03-20 18:16:10 +00:00
rtc_error.h Ensure that RTCErrorOr<T, E> doesn't require T to be default constructible 2023-06-05 16:55:00 +00:00
rtc_error_unittest.cc Use absl::string_view type as parameter for RTCError message 2023-03-20 18:16:10 +00:00
rtc_event_log_output.h Remove unnecessary overload in RtcEventLogOutput 2022-07-12 22:09:36 +00:00
rtc_event_log_output_file.cc Remove unnecessary std::string overloads 2022-07-07 14:24:14 +00:00
rtc_event_log_output_file.h Remove unnecessary std::string overloads 2022-07-07 14:24:14 +00:00
rtc_event_log_output_file_unittest.cc Provide test output path with OutputPathWithRandomDirectory 1/n 2024-02-15 07:35:00 +00:00
rtp_headers.cc Remove deprecated accessors for audio_level in RTPHeaderExtension 2024-04-17 15:41:59 +00:00
rtp_headers.h Remove deprecated accessors for audio_level in RTPHeaderExtension 2024-04-17 15:41:59 +00:00
rtp_packet_info.cc Expose AudioLevel as an absl::optional struct in api/rtp_headers.h 2024-03-22 10:07:47 +00:00
rtp_packet_info.h RtpPacketInfo: deprecated ctors and getter removed 2022-09-21 12:00:56 +00:00
rtp_packet_info_unittest.cc Surface local_capture_clock_offset from RtpSource 2022-09-20 12:51:22 +00:00
rtp_packet_infos.h Merge in M108 2022-11-11 17:02:35 -05:00
rtp_packet_infos_unittest.cc RtpPacketInfo: new ctor + deprecated ctors clean-up 2022-09-20 08:58:38 +00:00
rtp_parameters.cc Fix list of resiliency mechanisms in setCodecPreferences 2024-01-09 13:09:59 +00:00
rtp_parameters.h Merge branch m122 2024-02-14 22:44:28 -08:00
rtp_parameters_unittest.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
rtp_receiver_interface.cc Introduce the TransformerHost interface 2024-04-25 07:54:28 +00:00
rtp_receiver_interface.h Introduce the TransformerHost interface 2024-04-25 07:54:28 +00:00
rtp_sender_interface.cc pc: Add asynchronous RtpSender::SetParameters() call 2022-11-15 15:31:40 +00:00
rtp_sender_interface.h Introduce the TransformerHost interface 2024-04-25 07:54:28 +00:00
rtp_transceiver_direction.h Update to WebRTC 4103 (M83) (#12) 2020-06-25 11:14:34 -07:00
rtp_transceiver_interface.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
rtp_transceiver_interface.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
scoped_refptr.h Move scoped_refptr from rtc:: to webrtc:: 2023-11-03 07:36:07 +00:00
scoped_refptr_unittest.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
sctp_transport_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
sctp_transport_interface.h Explicitly initialize the SctpTransportState to kNew 2024-03-07 14:27:35 +00:00
sequence_checker.h Support initializing a SequenceChecker with a provided TaskQueue. 2023-10-23 14:43:04 +00:00
sequence_checker_unittest.cc Support initializing a SequenceChecker with a provided TaskQueue. 2023-10-23 14:43:04 +00:00
set_local_description_observer_interface.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
set_remote_description_observer_interface.h Move all api/ files to use webrtc::RefCountInterface 2023-10-31 15:45:12 +00:00
turn_customizer.h Make header files self contained. 2022-10-08 08:38:36 +00:00
uma_metrics.h Removing enum used for removed UMA metrics WebRTC.PeerConnection.Simulcast.ApplyLocalDescription and WebRTC.PeerConnection.Simulcast.ApplyRemoteDescription 2023-07-13 09:00:52 +00:00
video_track_source_constraints.h Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00
video_track_source_proxy_factory.h Make header files self contained. 2022-10-08 08:38:36 +00:00
webrtc_key_value_config.h Update to 5005 (M102) (#86) 2022-08-24 11:07:33 -04:00
wrapping_async_dns_resolver.cc Update to 4896 (M100) (#72) 2022-04-15 17:13:23 -06:00

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/.
  • Avoid structs in api, prefer classes.

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.

Avoid defining api with structs as it makes harder for the api to evolve. Your struct may gain invariant, or change how it represents data. Evolving struct from the api is particular challenging as it is designed to be used in other code bases and thus needs to be updated independetly from its usage. Class with accessors and setters makes such migration safer. See Google C++ style guide for more.

If you need to evolve existent struct in api, prefer first to convert it into a class.