From 1daa7e87294c145ce81e7233f5bb8aa7fc2bfef8 Mon Sep 17 00:00:00 2001 From: Sergey Silkin Date: Thu, 10 Jan 2019 14:29:46 +0100 Subject: [PATCH] Use RTP timestamp when checking for frame duplication. Value of render timestamp can be the same for consecutive frames (e.g. when old frames got decoded and need to be rendered immediately). It should not be used for frame duplication checking. Bug: b/122636276 Change-Id: Ie00bdd3fa50a2eacd48cba228fa3c54a6b206864 Reviewed-on: https://webrtc-review.googlesource.com/c/116790 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Sergey Silkin Cr-Commit-Position: refs/heads/master@{#26210} --- video/video_quality_observer.cc | 7 +++---- video/video_stream_decoder_impl.cc | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/video/video_quality_observer.cc b/video/video_quality_observer.cc index e21fbb2fff..5092cb8558 100644 --- a/video/video_quality_observer.cc +++ b/video/video_quality_observer.cc @@ -130,7 +130,7 @@ void VideoQualityObserver::OnRenderedFrame(const VideoFrame& frame, ++num_frames_rendered_; - auto blocky_frame_it = blocky_frames_.find(frame.timestamp_us()); + auto blocky_frame_it = blocky_frames_.find(frame.timestamp()); if (!is_paused_ && num_frames_rendered_ > 1) { // Process inter-frame delay. @@ -208,8 +208,7 @@ void VideoQualityObserver::OnDecodedFrame(const VideoFrame& frame, qp_blocky_threshold = absl::nullopt; } - RTC_DCHECK(blocky_frames_.find(frame.timestamp_us()) == - blocky_frames_.end()); + RTC_DCHECK(blocky_frames_.find(frame.timestamp()) == blocky_frames_.end()); if (qp_blocky_threshold && *qp > *qp_blocky_threshold) { // Cache blocky frame. Its duration will be calculated in render callback. @@ -220,7 +219,7 @@ void VideoQualityObserver::OnDecodedFrame(const VideoFrame& frame, std::next(blocky_frames_.begin(), kMaxNumCachedBlockyFrames / 2)); } - blocky_frames_.insert(frame.timestamp_us()); + blocky_frames_.insert(frame.timestamp()); } } } diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc index d3ecf579b2..4a22f5d612 100644 --- a/video/video_stream_decoder_impl.cc +++ b/video/video_stream_decoder_impl.cc @@ -276,6 +276,7 @@ void VideoStreamDecoderImpl::Decoded(VideoFrame& decoded_image, .set_video_frame_buffer(decoded_image.video_frame_buffer()) .set_rotation(decoded_image.rotation()) .set_timestamp_us(frame_timestamps->render_time_us) + .set_timestamp_rtp(decoded_image.timestamp()) .set_id(decoded_image.id()) .build(), casted_decode_time_ms, casted_qp);