webrtc/api
Danil Chapovalov e1dbddfbcf Introduce NetEqFactory::Create taking Environment instead of the Clock
To propagate field trials into the NetEq and further towards Audio Decoders

Bug: webrtc:356878416
Change-Id: Ia7cf18451aef70441ca958bf652f492138c6051a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/358620
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42739}
2024-08-07 10:54:38 +00:00
..
adaptation Deprecate rtc::RefCountInterface 2024-06-07 09:47:26 +00:00
audio Add listener to detect mute speech event, and callback function to handle the event 2024-07-23 13:01:39 +00:00
audio_codecs Delete deprecated CreateAudioEncoderFactory with unused field trials parameter 2024-07-30 12:32:24 +00:00
call [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
crypto [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
environment [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
g3doc Reland "Migrate WebRTC documentation to new renderer" 2023-01-31 09:30:04 +00:00
metronome [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
neteq Introduce NetEqFactory::Create taking Environment instead of the Clock 2024-08-07 10:54:38 +00:00
numerics [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtc_event_log Include-what-you-use api/rtc_event_log/ 2024-06-16 13:53:56 +00:00
stats Deprecate rtc::RefCountInterface 2024-06-07 09:47:26 +00:00
task_queue Add missing dependency. 2024-08-07 07:00:06 +00:00
test Pass receive_time through frame transformer 2024-08-02 07:01:33 +00:00
transport Change DataChannelInit::priority to integer and forward to SCTP transport 2024-07-30 15:07:25 +00:00
units Remove <ostream> dependencies 2024-07-03 12:27:55 +00:00
video Cleanup deprecated accessors in VideoFrame 2024-07-24 13:49:19 +00:00
video_codecs Rename minimum_qp to min_qp 2024-07-08 15:37:23 +00:00
voip [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
array_view.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
array_view_unittest.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00: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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
BUILD.gn Pass receive_time through frame transformer 2024-08-02 07:01:33 +00:00
candidate.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
candidate.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
candidate_unittest.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
create_peerconnection_factory.cc Remove default field trials and task queue factory in CreatePeerConnectionFactory function 2024-05-16 11:25:44 +00:00
create_peerconnection_factory.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
data_channel_interface.cc Change DataChannelInit::priority to integer and forward to SCTP transport 2024-07-30 15:07:25 +00:00
data_channel_interface.h Change DataChannelInit::priority to integer and forward to SCTP transport 2024-07-30 15:07:25 +00:00
DEPS Change DataChannelInit::priority to integer and forward to SCTP transport 2024-07-30 15:07:25 +00:00
dtls_transport_interface.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
dtls_transport_interface.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 Allow supplying a custom NetworkControllerInterfaceFactory per-Call in PeerConnectionDependencies 2024-07-29 07:17:14 +00:00
enable_media.h Mark EnableMedia with RTC_EXPORT 2023-10-31 22:15:21 +00:00
enable_media_with_defaults.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
field_trials.h Add FieldTrialsRegistry that verifies looked up field trials 2022-10-24 09:12:30 +00:00
field_trials_registry.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
field_trials_view.h Cleanup FieldTrialView 2023-03-27 17:06:33 +00:00
frame_transformer_factory.cc Pass receive_time through frame transformer 2024-08-02 07:01:33 +00:00
frame_transformer_factory.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
frame_transformer_interface.cc Add passkey to TransformableFrameInterface to prevent external impls 2024-05-16 13:12:51 +00:00
frame_transformer_interface.h Pass receive_time through frame transformer 2024-08-02 07:01:33 +00:00
function_view.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
function_view_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
ice_transport_factory.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
ice_transport_factory.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
ice_transport_interface.h Delete deprecated AsyncResolver and related classes 2023-11-30 15:36:55 +00:00
jsep.cc Reland "Remove old-style OnFailure callbacks" 2020-02-21 14:07:57 +00: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 Remove RTC_DISALLOW_COPY_AND_ASSIGN more. 2022-01-20 11:00:18 +00: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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 Deprecate rtc::RefCountInterface 2024-06-07 09:47:26 +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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00: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 Split BandwidthUsage from network_state_predictor.h 2024-05-24 13:44:37 +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 Delete deprecated call_factory and media_engine 2023-12-04 14:42:44 +00:00
peer_connection_interface.h Allow supplying a custom NetworkControllerInterfaceFactory per-Call in PeerConnectionDependencies 2024-07-29 07:17:14 +00:00
priority.h Make PriorityValue constructor explicit 2024-08-01 18:18:04 +00: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 Deprecate rtc::RefCountInterface 2024-06-07 09:47:26 +00: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 Remove <ostream> dependencies 2024-07-03 12:27:55 +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 Include-what-you-use api/rtc_event_log_output* 2024-06-16 15:13:29 +00:00
rtc_event_log_output_file.cc Include-what-you-use api/rtc_event_log_output* 2024-06-16 15:13:29 +00:00
rtc_event_log_output_file.h Include-what-you-use api/rtc_event_log_output* 2024-06-16 15:13:29 +00:00
rtc_event_log_output_file_unittest.cc Include-what-you-use api/rtc_event_log_output* 2024-06-16 15:13:29 +00:00
rtp_headers.cc Remove deprecated accessors for audio_level in RTPHeaderExtension 2024-04-17 15:41:59 +00:00
rtp_headers.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtp_packet_info.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtp_packet_infos.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtp_packet_infos_unittest.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtp_packet_sender.h Move rtp_packet_sender.h to api/ 2024-07-29 11:40:45 +00:00
rtp_parameters.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
rtp_parameters.h Fix list of resiliency mechanisms in setCodecPreferences 2024-01-09 13:09:59 +00:00
rtp_parameters_unittest.cc Change SetLocalContent in channel classes to avoid Invoke. 2022-01-06 12:52:35 +00:00
rtp_receiver_interface.cc Reland "Run IWYU on some files I intend to work on" 2024-06-05 08:59:49 +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 RtpTransceiverInterface: add header_extensions_to_offer() 2020-03-16 13:16:42 +00:00
rtp_transceiver_interface.cc Reland "Remove some default implementations in api/rtp_transcever_interface" 2022-01-19 11:32:24 +00:00
rtp_transceiver_interface.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
scoped_refptr.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
scoped_refptr_unittest.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
sctp_transport_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
sctp_transport_interface.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
sequence_checker.h [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +00:00
sequence_checker_unittest.cc [iwyu][1\n] Applying to api/[a-s]* 2024-06-19 06:19:20 +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 Route min/max FPS constraints to VideoStreamEncoder. 2021-10-14 06:49:05 +00: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 WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf 2022-03-29 10:14:00 +00: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.