webrtc/api
Henrik Boström 62995db2fc Change default sdp_semantics to kNotSpecified.
In preparation for switching the default from kPlanB to kUnifiedPlan,
which could cause subtle bugs for those not prepared for it, we change
the default to kNotSpecified. The only purpose of kNotSpecified is to
crash, forcing any dependencies to explicitly set their sdp_semantics
value.

Tests are updated to explicitly set sdp_semantics when necessary, and
where the test does not care we update to kUnifiedPlan.

If this change lands without getting reverted we can let it sit for a
few weeks, after which we should change the default to kUnifiedPlan and
delete kNotSpecified.

Bug: webrtc:11121
Change-Id: I19b669b0735d78e269e19eaae86c2d7d95a91141
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242968
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35651}
2022-01-10 14:56:03 +00:00
..
adaptation Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
audio AEC3: Changing the default for the use_conservative_tail_frequency_response flag. 2021-12-21 17:35:26 +00:00
audio_codecs Always call IsOk() to ensure audio codec configuration is valid when negotiating. 2021-11-26 10:11:21 +00:00
call Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +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
neteq Remove NetEq::Create. 2021-11-30 10:31:16 +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 Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
stats Change the type of RTCVideoSourceStats.framesPerSecond 2021-11-16 11:21:41 +00:00
task_queue Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +00:00
test Deprecate RemoveTrack (old signature) 2022-01-04 20:44:07 +00:00
transport Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
units Rename UNIT_TEST to WEBRTC_UNIT_TEST 2020-12-10 11:04:58 +00:00
video ZeroHertzAdapterMode: handle key frame requests. 2021-12-21 19:52:56 +00:00
video_codecs Delete obsolete method QueryVideoEncoder 2021-11-18 11:17:35 +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 deprecated code related to AEC2 2019-08-07 10:09:36 +00:00
audio_options.h APM: Make echo detector an optionally compilable and injectable component 2021-12-16 17:39:11 +00:00
BUILD.gn New struct PeerNetworkDependencies 2021-11-23 08:37:36 +00:00
candidate.cc ice: fix comment about relay preference 2021-09-30 07:45:19 +00:00
candidate.h Use absl::string_view in SDP-related utilities 2021-09-30 07:44:09 +00:00
create_peerconnection_factory.cc Async audio processing API 2020-10-02 12:33:34 +00:00
create_peerconnection_factory.h Async audio processing API 2020-10-02 12:33:34 +00:00
crypto_params.h Revert "Remove code supporting the SDES crypto mode in SDP" 2021-11-04 14:46:27 +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 Add CreateAsyncDnsResolver to PacketSocketFactory API 2021-10-01 16:12:50 +00:00
dtls_transport_interface.cc Expose TLS version and SRTP cipher to API 2019-10-29 22:20:49 +00:00
dtls_transport_interface.h Expose TLS version and SRTP cipher to API 2019-10-29 22:20:49 +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
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 Replace new rtc::RefCountedObject with rtc::make_ref_counted in a few files 2021-04-23 12:04:39 +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 Reland "Use the new DNS resolver API in PeerConnection" 2021-04-08 08:44:14 +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 Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
jsep_session_description.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +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 Update pc/ to not use implicit T* --> scoped_refptr<T> conversion 2022-01-04 16:19:33 +00:00
media_stream_track.h Move pc/media_stream_track.h to the api/ directory 2020-10-12 07:28:01 +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 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +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 Deprecate RemoveTrack (old signature) 2022-01-04 20:44:07 +00:00
peer_connection_interface.h Change default sdp_semantics to kNotSpecified. 2022-01-10 14:56: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 Make RefCountedObject require overriding virtual methods 2021-04-26 11:05:19 +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 Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
rtc_event_log_output_file.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtc_event_log_output_file.h Format almost everything. 2019-07-08 13:45:15 +00:00
rtc_event_log_output_file_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +00:00
rtp_headers.cc Remove framemarking RTP extension. 2020-06-15 11:18:00 +00:00
rtp_headers.h Update rsid and mid spec links from draft to release version 2021-03-22 12:24:00 +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 Use backticks not vertical bars to denote variables in comments 2021-08-10 10:40:03 +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 Change SetLocalContent in channel classes to avoid Invoke. 2022-01-06 12:52:35 +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 Enable Chromium to stop including api/proxy.h indirectly. 2021-05-21 09:35:35 +00:00
rtp_transceiver_direction.h RtpTransceiverInterface: add header_extensions_to_offer() 2020-03-16 13:16:42 +00:00
rtp_transceiver_interface.cc Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
rtp_transceiver_interface.h Replace RTC_DEPRECATED with ABSL_DEPRECATED 2021-02-22 12:53:23 +00:00
scoped_refptr.h Use backticks not vertical bars to denote variables in comments for /api 2021-07-26 18:27:34 +00:00
scoped_refptr_unittest.cc Mark scoped_refptr move and swap operations as noexcept 2019-11-12 10:17:22 +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 Fix an example in SequenceChecker documentation 2021-04-19 15:58:15 +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 reporting of relay protocol 2021-12-03 12:01:14 +00:00
stats_types.h Add reporting of relay protocol 2021-12-03 12:01:14 +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
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.