webrtc/modules/video_coding
Ilya Nikolaevskiy bc8049ef0b Reland "VP9 encoder: handle disabled layers correctly"
Now vp9 screenshare would enable new layers as soon as requested and will force all spatial layers present on the next frame, even if they should be dropped because of frame-rate limiting.

This might cause frame-rate liming to be exceeded if layer is toggling on and off very often, but this situation is bad itself. E.g. in realtime video it will cause too many key-frames.

Now SvcRateAllocator and VP9EncoderImpl are aware that there may be some skipped layers before the first enabled. Key-frames and ss_info triggering logic is also updated.

(This is a reland without changes after updates to downstream projects)
Original-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153483

Bug: webrtc:10977
Change-Id: I02459c5982da2e0542a837514f5753c5f96401c6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154355
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29330}
2019-09-27 09:28:38 +00:00
..
codecs Reland "VP9 encoder: handle disabled layers correctly" 2019-09-27 09:28:38 +00:00
include Remove deprecated method 2019-09-24 14:52:20 +00:00
test Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
utility Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
BUILD.gn Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
codec_timer.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
codec_timer.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
decoder_database.cc Format almost everything. 2019-07-08 13:45:15 +00:00
decoder_database.h Refactoring PayloadRouter. 2018-07-17 14:46:15 +00:00
decoding_state.cc Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
decoding_state.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
decoding_state_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
DEPS Prepare VideoProcessor for async simulcast support. 2018-03-08 17:41:13 +00:00
encoded_frame.cc Removed unused _rotation_set variable from EncodedFrame. 2019-09-26 10:45:03 +00:00
encoded_frame.h Removed unused _rotation_set variable from EncodedFrame. 2019-09-26 10:45:03 +00:00
fec_controller_default.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fec_controller_default.h Format almost everything. 2019-07-08 13:45:15 +00:00
fec_controller_unittest.cc Format almost everything. 2019-07-08 13:45:15 +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 Removed unused _rotation_set variable from EncodedFrame. 2019-09-26 10:45:03 +00:00
frame_buffer.h Format almost everything. 2019-07-08 13:45:15 +00:00
frame_buffer2.cc Fix frames dropped statistics 2019-08-27 07:43:01 +00:00
frame_buffer2.h Control rtt_mult addition cap via experiment. 2019-06-07 09:43:26 +00:00
frame_buffer2_unittest.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
frame_object.cc Removed unused _rotation_set variable from EncodedFrame. 2019-09-26 10:45:03 +00:00
frame_object.h Added RtpFrameObject ctor with no PacketBuffer pointer. 2019-09-26 08:55:00 +00:00
generic_decoder.cc Add field-trial parameter to enable tests simulating a slow decoder 2019-09-11 11:08:59 +00:00
generic_decoder.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
generic_decoder_unittest.cc Partially revert of ColorSpace information copying around decoders 2019-07-12 11:27:07 +00:00
h264_sprop_parameter_sets.cc Format almost everything. 2019-07-08 13:45:15 +00:00
h264_sprop_parameter_sets.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
h264_sprop_parameter_sets_unittest.cc Fully qualify googletest symbols. 2019-04-09 17:18:20 +00:00
h264_sps_pps_tracker.cc Use nalus_length instead of is_first_packet_in_frame to insert startcodes in the H264SpsPpsTracker. 2019-07-12 14:04:26 +00:00
h264_sps_pps_tracker.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
h264_sps_pps_tracker_unittest.cc Use nalus_length instead of is_first_packet_in_frame to insert startcodes in the H264SpsPpsTracker. 2019-07-12 14:04:26 +00:00
histogram.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
histogram.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
histogram_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
inter_frame_delay.cc Remove unused method in VCMInterFrameDelay. 2019-04-03 07:35:28 +00:00
inter_frame_delay.h Remove unused method in VCMInterFrameDelay. 2019-04-03 07:35:28 +00:00
internal_defines.h Remove unused defines and methods in internal_defines.h 2019-01-28 10:31:40 +00:00
jitter_buffer.cc Trim dependencies in modules/video_coding/ 2019-09-11 09:31:10 +00:00
jitter_buffer.h Delete VCMJitterBuffer::UpdateRtt and related unused code 2019-04-16 15:13:13 +00:00
jitter_buffer_common.h Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_buffer_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_estimator.cc Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_estimator.h Add cap to video jitter buffer size/latency in experiment branches only. 2019-06-04 15:50:27 +00:00
jitter_estimator_tests.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
loss_notification_controller.cc Refactor LossNotificationController to not use VCMPacket 2019-09-16 11:25:45 +00:00
loss_notification_controller.h Refactor LossNotificationController to not use VCMPacket 2019-09-16 11:25:45 +00:00
loss_notification_controller_unittest.cc Refactor LossNotificationController to not use VCMPacket 2019-09-16 11:25:45 +00:00
media_opt_util.cc Format almost everything. 2019-07-08 13:45:15 +00:00
media_opt_util.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
nack_module.cc Format almost everything. 2019-07-08 13:45:15 +00:00
nack_module.h Format almost everything. 2019-07-08 13:45:15 +00:00
nack_module_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
OWNERS Make ilnik@ owner in video/ and modules/video_coding/ 2018-09-11 12:39:39 +00:00
packet.cc Add plumbing of RtpPacketInfos to each VideoFrame as input for SourceTracker. 2019-06-20 10:24:29 +00:00
packet.h Add plumbing of RtpPacketInfos to each VideoFrame as input for SourceTracker. 2019-06-20 10:24:29 +00:00
packet_buffer.cc Added RtpFrameObject ctor with no PacketBuffer pointer. 2019-09-26 08:55:00 +00:00
packet_buffer.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
receiver.cc Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
receiver.h Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
receiver_unittest.cc Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
rtp_frame_reference_finder.cc Reset |reference_finder_| on codec switch. 2019-09-26 11:05:59 +00:00
rtp_frame_reference_finder.h Reset |reference_finder_| on codec switch. 2019-09-26 11:05:59 +00:00
rtp_frame_reference_finder_unittest.cc Store PacketBuffer by value instead of as reference counted object 2019-09-23 13:28:09 +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 Trim dependencies in modules/video_coding/ 2019-09-11 09:31:10 +00:00
session_info.h Format almost everything. 2019-07-08 13:45:15 +00:00
session_info_unittest.cc Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
timestamp_map.cc Format almost everything. 2019-07-08 13:45:15 +00:00
timestamp_map.h Remove unimplemented function declarations VCMGenericDecoder::External and VCMTimestampMap::Reset. 2018-09-06 09:05:30 +00:00
timing.cc Format almost everything. 2019-07-08 13:45:15 +00:00
timing.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
timing_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
video_codec_initializer.cc Format almost everything. 2019-07-08 13:45:15 +00:00
video_codec_initializer_unittest.cc Update VideoBitrateAllocator allocate to take a struct with more fields 2019-08-02 13:52:54 +00:00
video_coding_defines.cc Fix frames dropped statistics 2019-08-27 07:43:01 +00:00
video_coding_impl.cc Delete deprecated method VideoCodingModule::SetReceiverRobustnessMode 2019-06-12 06:39:38 +00:00
video_coding_impl.h Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
video_packet_buffer_unittest.cc Store PacketBuffer by value instead of as reference counted object 2019-09-23 13:28:09 +00:00
video_receiver.cc Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
video_receiver2.cc Delete VideoReceiver2::TriggerDecoderShutdown. 2019-09-12 13:44:13 +00:00
video_receiver2.h Delete VideoReceiver2::TriggerDecoderShutdown. 2019-09-12 13:44:13 +00:00
video_receiver_unittest.cc Change vcm::VideoReceiver::IncomingPacket to not use WebRtcRTPHeader 2019-04-25 10:15:39 +00:00