webrtc/api
Danil Chapovalov 6e7c2685e3 Allow recursive check for RTC_DCHECK_RUN_ON macro
instead of using Lock/Unlock attributes, use Assert attribute to annotate code is running on certain task queue or thread.

Such check better matches what is checked, in particular allows to
recheck (and thus better document) currently used task queue

Bug: None
Change-Id: I5bc1c397efbc8342cf7915093b578bb015c85651
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/269381
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37619}
2022-07-26 09:27:23 +00:00
..
adaptation Remove rtc_base:rtc_base_approved 2022-05-05 09:43:31 +00:00
audio delay estimator: Look for early reverberation 2022-06-28 15:16:03 +00:00
audio_codecs Add rtc::make_ref_counted to api/ 2022-06-13 15:53:27 +00:00
call Delete rtc_base/format_macros.h 2022-05-09 12:03:21 +00:00
crypto Rename rtc_base/ssl_stream_adapter.h constants. 2021-07-26 16:33:54 +00:00
g3doc Update links to point at main branch 2021-07-22 16:41:26 +00:00
metronome Migrate remaining webrtc usage of TaskQueueBase to absl::AnyInvocable 2022-07-20 08:15:08 +00:00
neteq Implement RTCInboundRTPStreamStats.JitterBufferMinimumDelay 2022-07-20 09:14:03 +00:00
numerics Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
rtc_event_log Change RTCEventLogFactory to have a const Create function 2022-06-28 23:48:37 +00:00
stats Implement RTCInboundRTPStreamStats.JitterBufferMinimumDelay 2022-07-20 09:14:03 +00:00
task_queue Migrate remaining webrtc usage of TaskQueueBase to absl::AnyInvocable 2022-07-20 08:15:08 +00:00
test Introduce method to simplify creation of ideal emulated network 2022-07-21 14:32:17 +00:00
transport Update old TODO comments 2022-07-05 09:59:33 +00:00
units Extend UnitBase multiplication to support size_t 2022-05-10 07:41:30 +00:00
video Delete VideoFrame::transport_frame_id() (an alias for timestamp()) 2022-07-18 10:48:03 +00:00
video_codecs Use Video{Encoder, Decoder}FactoryTemplate instead of Internal{Encoder, Decoder}Factory. 2022-07-22 12:07:25 +00:00
voip Remove usage of INFO alias for LS_INFO in log messages 2021-11-04 13:46:17 +00:00
array_view.h Fix array_view nested namespace. 2021-08-16 14:38:57 +00:00
array_view_unittest.cc rtc::ArrayView reverse iterators 2020-10-21 08:57:13 +00:00
async_dns_resolver.h Use AsyncDnsResolver in UDPPort class 2021-10-06 05:15:11 +00:00
async_resolver_factory.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
audio_options.cc Remove legacy (unused) config param: jitter_buffer_enable_rtx_handling 2022-05-21 23:06:21 +00:00
audio_options.h Remove legacy (unused) config param: jitter_buffer_enable_rtx_handling 2022-05-21 23:06:21 +00:00
BUILD.gn Let PCF.GetRtpSenderCapabilities return codecs' scalabilityModes. 2022-07-05 13:28:33 +00:00
candidate.cc ice: fix comment about relay preference 2021-09-30 07:45:19 +00:00
candidate.h Extend RTCIceCandidateStats with non-standard network_adapter_type 2022-03-02 11:13:18 +00:00
create_peerconnection_factory.cc WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 16/inf 2022-04-20 06:35:27 +00:00
create_peerconnection_factory.h WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 16/inf 2022-04-20 06:35:27 +00:00
crypto_params.h Delete variant of rtc::split that copies the output fields 2022-06-09 08:29:33 +00:00
data_channel_interface.cc datachannel: Add a MaxSendQueueSize() accessor in the API 2021-10-18 11:24:06 +00:00
data_channel_interface.h datachannel: Don't close a data channel when the queue is full 2021-11-04 11:40:28 +00:00
DEPS New VideoDecoderFactoryTemplate. 2022-07-14 15:38:20 +00:00
dtls_transport_interface.cc Make DTLS role visible on DtlsTransport interface 2022-02-10 11:04:36 +00:00
dtls_transport_interface.h Make DTLS role visible on DtlsTransport interface 2022-02-10 11:04:36 +00:00
dtmf_sender_interface.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
fec_controller.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +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 WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 18/inf 2022-05-31 10:50:58 +00:00
field_trials.h WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 18/inf 2022-05-31 10:50:58 +00:00
field_trials_unittest.cc WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 18/inf 2022-05-31 10:50:58 +00:00
field_trials_view.h WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf 2022-03-29 10:14:00 +00:00
frame_transformer_interface.h Add Direction indicator to TransformableFrames 2021-09-27 17:40:36 +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_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 WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf 2022-03-29 10:14:00 +00:00
jsep.cc Reland "Remove old-style OnFailure callbacks" 2020-02-21 14:07:57 +00:00
jsep.h Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +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 RTC_DISALLOW_COPY_AND_ASSIGN more. 2022-01-20 11:00:18 +00:00
make_ref_counted.h Move rtc::make_ref_counted to api/ 2022-06-15 09:47:38 +00:00
media_stream_interface.cc New target for api/rtp_parameters.h and api/media_types.h. 2019-08-29 09:04:32 +00:00
media_stream_interface.h Change stream.AddTrack/RemoveTrack to take a scoped_refptr argument 2022-04-21 12:32:17 +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 Add base class NetworkPredictor and NetworkPredictorFactory and wire up. 2019-04-10 12:38:58 +00:00
notifier.h Add SequenceChecker on Notifier 2022-03-02 22:35:46 +00:00
OWNERS Remove inactive owners. 2021-08-31 14:27:49 +00:00
packet_socket_factory.h Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
peer_connection_interface.cc Make PeerConnectionInterface::SetConfiguration pure virtual 2022-07-05 09:21:03 +00:00
peer_connection_interface.h Make PeerConnectionInterface::SetConfiguration pure virtual 2022-07-05 09:21:03 +00:00
priority.h Pass datachannel priority in DC open messages 2020-05-17 10:57:27 +00:00
README.md Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
ref_counted_base.h Remove RTC_DISALLOW_COPY_AND_ASSIGN more. 2022-01-20 11:00:18 +00:00
rtc_error.cc Return an error when datachannel closes due to network error 2019-12-08 17:33:54 +00:00
rtc_error.h Fix use-after-move in RTCErrorOr 2021-12-14 21:16:18 +00:00
rtc_error_unittest.cc Format almost everything. 2019-07-08 13:45:15 +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 Remove unnecessary overload in RtcEventLogOutput 2022-07-12 22:09:36 +00:00
rtp_headers.cc Remove framemarking RTP extension. 2020-06-15 11:18:00 +00:00
rtp_headers.h In RemoteEstimatorProxy use Timestamp type 2022-06-13 10:07:46 +00:00
rtp_packet_info.cc Make local to capturer clock offset a separate entry in PacketInfo. 2021-05-20 13:42:57 +00:00
rtp_packet_info.h Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +00:00
rtp_packet_info_unittest.cc Make local to capturer clock offset a separate entry in PacketInfo. 2021-05-20 13:42:57 +00:00
rtp_packet_infos.h Add rtc::make_ref_counted to api/ 2022-06-13 15:53:27 +00:00
rtp_packet_infos_unittest.cc Use Timestamp to represent packet receive timestamps 2021-05-04 13:16:54 +00:00
rtp_parameters.cc Change SetLocalContent in channel classes to avoid Invoke. 2022-01-06 12:52:35 +00:00
rtp_parameters.h Let PCF.GetRtpSenderCapabilities return codecs' scalabilityModes. 2022-07-05 13:28:33 +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 Insert frame transformer between Depacketizer and Decoder. 2020-03-02 08:33:44 +00:00
rtp_receiver_interface.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
rtp_sender_interface.cc Insert frame transformer between Encoded and Packetizer. 2020-02-28 07:43:13 +00:00
rtp_sender_interface.h RtpSenderInterface::SetEncoderSelector 2022-06-08 11:06:52 +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 Reland "Remove some default implementations in api/rtp_transcever_interface" 2022-01-19 11:32:24 +00:00
scoped_refptr.h Delete implicit conversion from rtc::scoped_refptr<T> to T* 2022-05-09 09:06:44 +00:00
scoped_refptr_unittest.cc Update api/ to not use implicit T* --> scoped_refptr<T> conversion 2022-01-12 11:26:05 +00:00
sctp_transport_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
sctp_transport_interface.h Reland "Fix unsynchronized access to mid_to_transport_ in JsepTransportController" 2021-02-10 13:40:22 +00:00
sequence_checker.h Allow recursive check for RTC_DCHECK_RUN_ON macro 2022-07-26 09:27:23 +00:00
sequence_checker_unittest.cc Reland "Refactor the PlatformThread API." 2021-05-07 14:14:43 +00:00
set_local_description_observer_interface.h Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +00:00
set_remote_description_observer_interface.h Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +00:00
stats_types.cc Add rtc::make_ref_counted to api/ 2022-06-13 15:53:27 +00:00
stats_types.h Remove typing detection 2022-03-23 10:23:54 +00:00
turn_customizer.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
uma_metrics.h count webrtc pranswer usage 2021-06-11 12:59:37 +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 Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
webrtc_key_value_config.h WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf 2022-03-29 10:14:00 +00:00
wrapping_async_dns_resolver.cc Add CreateAsyncDnsResolver to PacketSocketFactory API 2021-10-01 16:12:50 +00:00
wrapping_async_dns_resolver.h Add CreateAsyncDnsResolver to PacketSocketFactory API 2021-10-01 16:12:50 +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/.

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.