Fix VP9 kSVC forwarding logic to not forward lower unneded layers #778
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
When using VP9 in kSVC model (current supported mode in WebRTC) the higher spatial layers are independent of the lower spatial layers and need to be filtered. Otherwise we are consuming much more bandwidth tan needed (30%?).
https://www.w3.org/TR/webrtc-svc/
To detect if it is a keyframe packet that needs to be forwarded even if it is a lower spatial layer this change checks the P bit in the VP9 header that distinguishes frames that are encoded independently of other frames (key frames).
Test Plan:
Ran producer and consumer locally and changed MaxOutgoingBitrate of the consumer to allocate different bitrates and check the video can always be decoded by the consumer.