webrtc/modules/video_coding
Sergey Silkin ae9e188e67 Frame rate controller per spatial layer.
This allows VP9 encoder wrapper to control frame rate of each spatial
layer. The wrapper configures encoder to skip encoding spatial layer
when actual frame rate exceeds the target frame rate of that layer.
Target frame rate of high spatial layer is expected to be equal or
higher then that of low spatial layer. For now frame rate controller
is only enabled in screen sharing mode.

Added unit test which configures encoder to produce 3 spatial layers
with frame rates 10, 20 and 30fps and verifies that absolute delta of
final and target rate doesn't exceed 10%.

Bug: webrtc:9682
Change-Id: I7a7833f63927dd475e7b42d43e4d29061613e64e
Reviewed-on: https://webrtc-review.googlesource.com/96640
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24593}
2018-09-06 07:04:04 +00:00
..
codecs Frame rate controller per spatial layer. 2018-09-06 07:04:04 +00:00
include Reland "Add spatial index to EncodedImage." 2018-08-31 07:35:52 +00:00
test Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
utility Remove unused MockFrameDropper and make FrameDropper non-virtual. 2018-09-03 14:19:17 +00:00
BUILD.gn Remove unused MockFrameDropper and make FrameDropper non-virtual. 2018-09-03 14:19:17 +00:00
codec_timer.cc Fix chromium warnings for SdpVideoFormat. 2018-03-27 08:11:21 +00:00
codec_timer.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
decoder_database.cc Remove kVideoCodecUnknown from WebRTC. 2018-08-16 15:15:39 +00:00
decoder_database.h Refactoring PayloadRouter. 2018-07-17 14:46:15 +00:00
decoding_state.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
decoding_state.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
decoding_state_unittest.cc Remove RTPVideoHeader::vp9() accessors. 2018-08-09 10:53:28 +00:00
DEPS Prepare VideoProcessor for async simulcast support. 2018-03-08 17:41:13 +00:00
encoded_frame.cc Reland "Add spatial index to EncodedImage." 2018-08-31 07:35:52 +00:00
encoded_frame.h Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
encoder_database.cc Remove kVideoCodecUnknown from WebRTC. 2018-08-16 15:15:39 +00:00
encoder_database.h Delete payload_type from VCMEncoderDatabase and vcm::VideoSender. 2018-03-16 13:43:01 +00:00
fec_controller_default.cc Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
fec_controller_default.h Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
fec_controller_unittest.cc Make fec controller plug-able. 2018-01-22 11:48:16 +00:00
fec_rate_table.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
frame_buffer.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
frame_buffer.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
frame_buffer2.cc Add rtt_mult_experiment to evaluate video robustness vs. latency 2018-08-27 15:51:52 +00:00
frame_buffer2.h Add rtt_mult_experiment to evaluate video robustness vs. latency 2018-08-27 15:51:52 +00:00
frame_buffer2_unittest.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
frame_object.cc Use generic video header frame ID as picture ID. 2018-08-29 09:23:14 +00:00
frame_object.h Use generic video header frame ID as picture ID. 2018-08-29 09:23:14 +00:00
generic_decoder.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
generic_decoder.h Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
generic_encoder.cc Reland "Add spatial index to EncodedImage." 2018-08-31 07:35:52 +00:00
generic_encoder.h Refactoring PayloadRouter. 2018-07-17 14:46:15 +00:00
generic_encoder_unittest.cc Reland "Add spatial index to EncodedImage." 2018-08-31 07:35:52 +00:00
h264_sprop_parameter_sets.cc Move base64.h to the proper location. 2018-07-23 15:40:36 +00:00
h264_sprop_parameter_sets.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
h264_sprop_parameter_sets_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
h264_sps_pps_tracker.cc Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
h264_sps_pps_tracker.h Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
h264_sps_pps_tracker_unittest.cc Reland "Remove RTPVideoHeader::h264() accessors." 2018-08-03 09:16:50 +00:00
histogram.cc Move sequence_number_utils.h to rtc_base/ 2017-10-25 12:33:57 +00:00
histogram.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
histogram_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
inter_frame_delay.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
inter_frame_delay.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
internal_defines.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
jitter_buffer.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
jitter_buffer.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
jitter_buffer_common.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
jitter_buffer_unittest.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
jitter_estimator.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
jitter_estimator.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
jitter_estimator_tests.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
media_opt_util.cc Fix flaky test TestFlexfecRtpStatePreservation. 2018-08-23 13:43:50 +00:00
media_opt_util.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
media_optimization.cc Remove MediaOptimization::Reset. 2018-09-03 15:56:55 +00:00
media_optimization.h Remove MediaOptimization::Reset. 2018-09-03 15:56:55 +00:00
nack_fec_tables.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
nack_module.cc Eliminate NackModule dependency on VCMPacket 2018-08-22 12:13:39 +00:00
nack_module.h Eliminate NackModule dependency on VCMPacket 2018-08-22 12:13:39 +00:00
nack_module_unittest.cc Eliminate NackModule dependency on VCMPacket 2018-08-22 12:13:39 +00:00
OWNERS Add philipel to modules/video_coding/OWNERS. 2018-05-17 10:14:31 +00:00
packet.cc Remove kVideoCodecUnknown from WebRTC. 2018-08-16 15:15:39 +00:00
packet.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
packet_buffer.cc Reland "Remove RTPVideoHeader::h264() accessors." 2018-08-03 09:16:50 +00:00
packet_buffer.h Replace rtc::Optional with absl::optional 2018-06-18 10:24:48 +00:00
qp_parser.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
qp_parser.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
receiver.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00
receiver.h Delete unused method VideoReceiver::SetMinReceiverDelay 2018-08-16 10:00:14 +00:00
receiver_unittest.cc Delete unused method VideoReceiver::SetMinReceiverDelay 2018-08-16 10:00:14 +00:00
rtp_frame_reference_finder.cc Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
rtp_frame_reference_finder.h Remove clang:find_bad_constructs suppression from call:call. 2018-08-29 11:57:00 +00:00
rtp_frame_reference_finder_unittest.cc Fix Vp9 flexible mode in RTP ref frame finder. 2018-08-20 15:15:59 +00:00
rtt_filter.cc Fix typo in VCMRttFilter 2018-01-26 10:59:56 +00:00
rtt_filter.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
session_info.cc Remove RTPVideoHeader::vp9() accessors. 2018-08-09 10:53:28 +00:00
session_info.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
session_info_unittest.cc VCMPacket: Set VCMNaluCompleteness for generic codecs 2018-07-11 13:22:59 +00:00
timestamp_map.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
timestamp_map.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
timing.cc Replace rtc::Optional with absl::optional 2018-06-18 10:24:48 +00:00
timing.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
timing_unittest.cc Remove unused functions in VCMTiming. 2018-01-17 14:47:10 +00:00
video_codec_initializer.cc Add frame rate parameter to SpatialLayer struct. 2018-08-26 19:19:36 +00:00
video_codec_initializer_unittest.cc Exposing video bitrate allocator into API 2018-07-23 21:23:21 +00:00
video_coding_defines.cc Fix chromium warnings for SdpVideoFormat. 2018-03-27 08:11:21 +00:00
video_coding_impl.cc Exposing video bitrate allocator into API 2018-07-23 21:23:21 +00:00
video_coding_impl.h Delete unused method VideoReceiver::SetMinReceiverDelay 2018-08-16 10:00:14 +00:00
video_packet_buffer_unittest.cc Reland "Remove RTPVideoHeader::h264() accessors." 2018-08-03 09:16:50 +00:00
video_receiver.cc Delete unused method VideoReceiver::SetMinReceiverDelay 2018-08-16 10:00:14 +00:00
video_receiver_unittest.cc Delete unused method VideoReceiver::SetMinReceiverDelay 2018-08-16 10:00:14 +00:00
video_sender.cc Remove MediaOptimization::Reset. 2018-09-03 15:56:55 +00:00
video_sender_unittest.cc Add accessor methods for RTP timestamp of EncodedImage. 2018-08-21 09:15:51 +00:00