webrtc/api
Artem Titov d70d80d882 Add support of negotiating Vp9 SVC in PC test framework.
SVC support is limited:
During SVC testing there is no SFU, so framework will try to emulate SFU
behavior in regular p2p call. Because of it there are such limitations:
 * if |target_spatial_index| is not equal to the highest spatial layer
   then no packet/frame drops are allowed.

   If there will be any drops, that will affect requested layer, then
   WebRTC SVC implementation will continue decoding only the highest
   available layer and won't restore lower layers, so analyzer won't
   receive required data which will cause wrong results or test failures.

Bug: webrtc:10138
Change-Id: I079566260ca9f1815935bce365d1bca10766663a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144882
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28612}
2019-07-19 10:01:43 +00:00
..
audio Revert "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker." 2019-07-12 16:18:31 +00:00
audio_codecs Format almost everything. 2019-07-08 13:45:15 +00:00
call Format almost everything. 2019-07-08 13:45:15 +00:00
crypto Format almost everything. 2019-07-08 13:45:15 +00:00
rtc_event_log Remove deprecated RtcEventLog Create functions 2019-05-29 12:39:08 +00:00
stats Format almost everything. 2019-07-08 13:45:15 +00:00
task_queue Poison default task queue factory 2019-07-10 14:08:20 +00:00
test Add support of negotiating Vp9 SVC in PC test framework. 2019-07-19 10:01:43 +00:00
transport Use capacity bounds in AimdRateControl if available. 2019-07-17 07:19:38 +00:00
units Format almost everything. 2019-07-08 13:45:15 +00:00
video Format almost everything. 2019-07-08 13:45:15 +00:00
video_codecs Add VideoEncoderFactory::GetImplementations function. 2019-07-12 09:24:47 +00:00
array_view.h Adding reinterpret to ArrayView to allow data manipulation. 2019-03-22 18:15:22 +00:00
array_view_unittest.cc Format almost everything. 2019-07-08 13:45:15 +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 Add PeerConnection option to enable RTX handling in the audio jitter buffer. 2019-01-10 16:28:43 +00:00
audio_options.h Format almost everything. 2019-07-08 13:45:15 +00:00
bitrate_constraints.h Convert video quality test from a TEST_F to a TEST fixture. 2018-06-21 15:49:43 +00:00
BUILD.gn Migrate WebRTC test infra to ABSL_FLAG. 2019-07-19 06:54:04 +00:00
candidate.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
candidate.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
congestion_control_interface.h Add datagram_transport and congestion_control interface 2019-05-14 22:22:45 +00:00
create_peerconnection_factory.cc Force DefaultTaskQueueFactory in legacy CreatePeerConnectionFactory 2019-06-19 17:11:04 +00:00
create_peerconnection_factory.h Force DefaultTaskQueueFactory in legacy CreatePeerConnectionFactory 2019-06-19 17:11:04 +00:00
crypto_params.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
data_channel_interface.cc Datachannel: Use absl::optional for maxRetransmits and maxRetransmitTime. 2019-04-09 08:32:43 +00:00
data_channel_interface.h Format almost everything. 2019-07-08 13:45:15 +00:00
datagram_transport_interface.h Integrate datagram feedback loop 2019-07-11 16:22:00 +00:00
DEPS Reland "Remove the injectable bitrate allocation strategy API." 2019-07-17 10:20:45 +00:00
DESIGN.md A threading explanation 2019-06-03 08:15:09 +00:00
dtls_transport_interface.cc Expose SSL ciphersuite on the webrtc::DtlsTransport interface 2019-04-12 08:29:59 +00:00
dtls_transport_interface.h Expose SSL ciphersuite on the webrtc::DtlsTransport interface 2019-04-12 08:29:59 +00:00
dtmf_sender_interface.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
fec_controller.h Make VideoFrameType an enum class, and move to separate file and target 2019-03-22 12:44:51 +00:00
fec_controller_override.h Define FecControllerOverride and plumb it down to VideoEncoder 2019-06-28 15:57:22 +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 overload to CreateIceTransport that takes additional dependencies 2019-07-01 21:37:54 +00:00
ice_transport_factory.h Add overload to CreateIceTransport that takes additional dependencies 2019-07-01 21:37:54 +00:00
ice_transport_interface.h Add IceTransportInterface object 2019-01-30 16:16:51 +00:00
jsep.cc Move SdpType from/to string definition close to declaration. 2018-10-12 09:59:40 +00:00
jsep.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
jsep_ice_candidate.cc Use Abseil container algorithms in api/ 2019-03-25 22:11:06 +00:00
jsep_ice_candidate.h Format almost everything. 2019-07-08 13:45:15 +00:00
jsep_session_description.h Remove deprecated JsepSession initializer 2019-06-11 17:35:30 +00:00
media_stream_interface.cc Remove SetLatency/GetLatency from MediaSourceInterface API level 2019-04-18 19:11:31 +00:00
media_stream_interface.h Remove SetLatency/GetLatency from MediaSourceInterface API level 2019-04-18 19:11:31 +00:00
media_stream_proxy.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
media_stream_track_proxy.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
media_transport_config.cc Delete unneeded includes of string_utils.h 2019-06-10 10:44:40 +00:00
media_transport_config.h Datagram Transport Integration 2019-05-23 23:36:05 +00:00
media_transport_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
media_transport_interface.h Don't use angle-bracket #includes for WebRTC's own files 2019-06-26 16:06:52 +00:00
media_types.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
media_types.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +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 myself from OWNERS in a few places. 2019-06-10 07:57:46 +00:00
peer_connection_factory_proxy.h Delete deprecated version of PeerConnectionFactoryInterface::StartAecDump 2019-06-27 07:33:59 +00:00
peer_connection_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
peer_connection_interface.h [PeerConnection] Implement restartIce(). 2019-07-18 10:00:10 +00:00
peer_connection_proxy.h [PeerConnection] Implement restartIce(). 2019-07-18 10:00:10 +00:00
proxy.cc Make member internal::SynchronousMethodCall::e_ a non-pointer. 2018-11-15 10:42:36 +00:00
proxy.h Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +00:00
README.md Add a small README file for api/ 2019-02-01 13:24:47 +00:00
ref_counted_base.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
rtc_error.cc Using absl::string_view to stringify an RTCErrorType. 2019-01-16 11:49:00 +00:00
rtc_error.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +00:00
rtc_error_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtc_event_log_output.h Adds functionality to write logs to memory. 2019-01-16 17:36:31 +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 Promote RtcEventLogOutputFile to api/ 2019-05-08 12:29:42 +00:00
rtp_headers.cc Reland "[cleanup] Remove useless includes." 2018-10-08 07:44:19 +00:00
rtp_headers.h Format almost everything. 2019-07-08 13:45:15 +00:00
rtp_packet_info.cc Remove sequence_number from RtpPacketInfo. 2019-06-14 11:21:42 +00:00
rtp_packet_info.h Remove sequence_number from RtpPacketInfo. 2019-06-14 11:21:42 +00:00
rtp_packet_info_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtp_packet_infos.h Add RtpPacketInfo to hold information about a received RtpPacket. 2019-06-03 14:37:01 +00:00
rtp_packet_infos_unittest.cc Remove sequence_number from RtpPacketInfo. 2019-06-14 11:21:42 +00:00
rtp_parameters.cc Add writing and parsing of the abs-capture-time RTP header extension. 2019-07-03 14:07:36 +00:00
rtp_parameters.h Format almost everything. 2019-07-08 13:45:15 +00:00
rtp_parameters_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtp_receiver_interface.cc Add RTP timestamp to contributing sources 2019-05-22 08:53:08 +00:00
rtp_receiver_interface.h Add RTP timestamp to contributing sources 2019-05-22 08:53:08 +00:00
rtp_sender_interface.cc Removing non-const RtpSenderInterface::GetParameters(). 2019-02-23 00:51:30 +00:00
rtp_sender_interface.h Add RtpSenderInterface.SetStreams 2019-05-20 18:38:06 +00:00
rtp_transceiver_interface.cc Implement RTCRtpTransceiver.setCodecPreferences 2019-05-01 20:14:59 +00:00
rtp_transceiver_interface.h Implement RTCRtpTransceiver.setCodecPreferences 2019-05-01 20:14:59 +00:00
scoped_refptr.h Add element_type typedef to rtc::scoped_refptr 2018-12-20 19:11:22 +00:00
sctp_transport_interface.cc Format almost everything. 2019-07-08 13:45:15 +00:00
sctp_transport_interface.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +00:00
set_remote_description_observer_interface.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
stats_types.cc Revert "Piping audio interruption metrics to API layer" 2019-04-29 11:23:16 +00:00
stats_types.h Revert "Piping audio interruption metrics to API layer" 2019-04-29 11:23:16 +00:00
turn_customizer.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
uma_metrics.h Adding metrics to measure usage of simulcast API. 2019-03-05 22:01:34 +00:00
video_track_source_proxy.h Remove SetLatency/GetLatency from MediaSourceInterface API level 2019-04-18 19:11:31 +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.