Don't decode frames with an older timestamp than the last decoded timestamp.

This change prevents decoding corruption by not allowing keyframes with a
newer frame id but an older timestamp to be decoded. This does not handle
reordering well.

Bug: none
Change-Id: I4a67ca84ee86a782da74a10530c531d893d3bd3c
Reviewed-on: https://webrtc-review.googlesource.com/c/107304
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25292}
This commit is contained in:
philipel
2018-10-22 14:36:45 +02:00
committed by Commit Bot
parent 38a34198a3
commit 6d2165036c
3 changed files with 25 additions and 31 deletions

View File

@ -161,7 +161,7 @@ class FrameBuffer {
VCMJitterEstimator* const jitter_estimator_ RTC_GUARDED_BY(crit_);
VCMTiming* const timing_ RTC_GUARDED_BY(crit_);
VCMInterFrameDelay inter_frame_delay_ RTC_GUARDED_BY(crit_);
uint32_t last_decoded_frame_timestamp_ RTC_GUARDED_BY(crit_);
absl::optional<uint32_t> last_decoded_frame_timestamp_ RTC_GUARDED_BY(crit_);
FrameMap::iterator last_decoded_frame_it_ RTC_GUARDED_BY(crit_);
FrameMap::iterator last_continuous_frame_it_ RTC_GUARDED_BY(crit_);
FrameMap::iterator next_frame_it_ RTC_GUARDED_BY(crit_);