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}
This commit is contained in:
committed by
Commit Bot
parent
e72a78e4b2
commit
bc8049ef0b
@ -119,6 +119,7 @@ class VP9EncoderImpl : public VP9Encoder {
|
||||
uint8_t num_temporal_layers_;
|
||||
uint8_t num_spatial_layers_; // Number of configured SLs
|
||||
uint8_t num_active_spatial_layers_; // Number of actively encoded SLs
|
||||
uint8_t first_active_layer_;
|
||||
bool layer_deactivation_requires_key_frame_;
|
||||
bool is_svc_;
|
||||
InterLayerPredMode inter_layer_pred_;
|
||||
@ -130,8 +131,8 @@ class VP9EncoderImpl : public VP9Encoder {
|
||||
vpx_svc_frame_drop_t svc_drop_frame_;
|
||||
bool first_frame_in_picture_;
|
||||
VideoBitrateAllocation current_bitrate_allocation_;
|
||||
absl::optional<RateControlParameters> requested_rate_settings_;
|
||||
bool ss_info_needed_;
|
||||
bool force_all_active_layers_;
|
||||
|
||||
std::vector<FramerateController> framerate_controller_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user