webrtc/api
Erik Språng 4c6ca30019 Update VideoStreamEncoder to use new VideoEncoder::SetRates() method.
This CL wires up the new SetRates() method of the video encoders, and
refactors a few things in the process:

Most notably, the VideoStreamEncoderInterface is update so that the
|target_headroom| parameter is replaced with |link_allocation|, meaning
that instead of indicating bitrate capacity in excess of the target
bitrate, it indicates to total network capacity allocated for the
stream including the target bitrate. This matches the VideoEncoder API.

The VideoEncoder::RateControlParameters struct gets a few new helper
methods.

In VideoStreamEncoder, instead of adding more fields to the
|last_observed_bitrate*| family, uses an optional struct that
inherits from VideoEncoder::RateControlParameters.

Bug: webrtc:10481
Change-Id: Iee3965531142ae9b964ed86c0d51db59b1cdd61c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131123
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27487}
2019-04-08 14:01:28 +00:00
..
audio AEC3: Enable usage of external delay estimator 2019-04-05 15:34:39 +00:00
audio_codecs Delete unneeded direct includes of common_types.h 2019-04-01 07:18:13 +00:00
call (7) Rename files to snake_case: remove forwarding headers 2019-01-26 00:33:46 +00:00
crypto Added FrameDecryptorInterface::Result constructor and IsOk() member function. 2019-04-08 07:04:07 +00:00
ortc Delete last traces of RtpTransportAdapter 2019-03-25 08:52:45 +00:00
stats Add test-only group id. 2019-03-29 15:53:16 +00:00
task_queue Add ScopedAllowBaseSyncPrimitivesForTesting to Webrtc. 2019-03-28 13:07:33 +00:00
test Implement DefaultAudioQualityAnalyzer. 2019-04-07 14:32:33 +00:00
transport Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +00:00
units Include sign for infinity in ToString for data units. 2019-03-05 09:42:08 +00:00
video Update VideoStreamEncoder to use new VideoEncoder::SetRates() method. 2019-04-08 14:01:28 +00:00
video_codecs Update VideoStreamEncoder to use new VideoEncoder::SetRates() method. 2019-04-08 14:01:28 +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 Adding reinterpret to ArrayView to allow data manipulation. 2019-03-22 18:15:22 +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 Add PeerConnection option to enable RTX handling in the audio jitter buffer. 2019-01-10 16:28:43 +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 Implement DefaultAudioQualityAnalyzer. 2019-04-07 14:32:33 +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
create_peerconnection_factory.cc Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +00:00
create_peerconnection_factory.h Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +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 (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.h Update DataChannel bufferedamount implementation. 2019-03-11 13:21:36 +00:00
DEPS Adding new top-level directory crypto/ 2019-03-08 00:35:05 +00:00
dtls_transport_interface.h Allow DtlsTransport::Information() to be called off-thread 2019-02-14 13:15:05 +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
function_view.h Move rtc::FunctionView to the public API 2019-03-21 15:23:05 +00:00
function_view_unittest.cc Move rtc::FunctionView to the public API 2019-03-21 15:23:05 +00:00
ice_transport_factory.cc IceTransportWithTransportChannel: Initialize |thread_checker_| in declaration 2019-02-13 12:45:12 +00:00
ice_transport_factory.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +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 Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +00:00
jsep_session_description.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_interface.cc Propagate base minimum delay from video jitter buffer to webrtc/api. 2019-02-27 15:08:34 +00:00
media_stream_interface.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +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_interface.cc Implement OpenChannel() on test media transports and make it pure virtual. 2019-03-01 00:24:07 +00:00
media_transport_interface.h Add support for target rate constraints 2019-03-18 18:54:58 +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
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 Update per-file OWNERS to reflect renamed file names 2019-03-22 16:47:56 +00:00
peer_connection_factory_proxy.h webrtc: Remove semicolons. 2019-02-20 16:02:59 +00:00
peer_connection_interface.cc Add SCTP transport to the public API. 2019-02-28 10:15:05 +00:00
peer_connection_interface.h Expose TaskQueueFactory for webrtc::Call in peer connection api 2019-04-02 18:46:54 +00:00
peer_connection_proxy.h Add GetSctpTransport to proxy map 2019-03-01 06:38:48 +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 (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_event_log_output.h Adds functionality to write logs to memory. 2019-01-16 17:36:31 +00:00
rtp_headers.cc Reland "[cleanup] Remove useless includes." 2018-10-08 07:44:19 +00:00
rtp_headers.h Delete class StringRtpHeaderExtension, replaced with std::string 2019-03-25 12:32:41 +00:00
rtp_parameters.cc Use Abseil container algorithms in api/ 2019-03-25 22:11:06 +00:00
rtp_parameters.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +00:00
rtp_parameters_unittest.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
rtp_receiver_interface.cc Add SetJitterBufferMinimumDelay method to RtpReceiverInterface. 2019-04-04 09:00:16 +00:00
rtp_receiver_interface.h Add SetJitterBufferMinimumDelay method to RtpReceiverInterface. 2019-04-04 09:00:16 +00:00
rtp_sender_interface.cc Removing non-const RtpSenderInterface::GetParameters(). 2019-02-23 00:51:30 +00:00
rtp_sender_interface.h Removing non-const RtpSenderInterface::GetParameters(). 2019-02-23 00:51:30 +00:00
rtp_transceiver_interface.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
rtp_transceiver_interface.h Export symbols needed by the Chromium component build (part 8). 2019-04-02 10:13:36 +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 Add SCTP transport to the public API. 2019-02-28 10:15:05 +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 Use Abseil container algorithms in api/ 2019-03-25 22:11:06 +00:00
stats_types.h Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +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 Propagate base minimum delay from video jitter buffer to webrtc/api. 2019-02-27 15:08:34 +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.