VP9 screenshare: drop base layer separately

Because of a low bitrate target, base layer has drops much more frequently
than other layers. But it reduces overall framerate, especially then
input framerate is low (5 fps).

This CL allows pre-layer drops and disables droppoing on higher spatial
layers for screenshare, solving the issue.
Additional care have to be taken then new spatial layers are enabled
dynamically to not create non-compatible with RTP references.

Bug: webrtc:10257
Change-Id: Ie056484c99a3f35ff4405ef71337dc2d034db8bb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138262
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28063}
This commit is contained in:
Ilya Nikolaevskiy
2019-05-24 16:50:00 +02:00
committed by Commit Bot
parent d9b4f3330f
commit 039a7146ab
3 changed files with 141 additions and 12 deletions

View File

@ -124,6 +124,8 @@ class VP9EncoderImpl : public VP9Encoder {
const bool trusted_rate_controller_;
const bool dynamic_rate_settings_;
const bool full_superframe_drop_;
bool dropping_only_base_layer_;
vpx_svc_frame_drop_t svc_drop_frame_;
bool first_frame_in_picture_;
VideoBitrateAllocation current_bitrate_allocation_;
absl::optional<RateControlParameters> requested_rate_settings_;