Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Side by Side Diff: webrtc/modules/video_coding/frame_buffer2.cc

Issue 2946413002: Report timing frames info in GetStats. (Closed)
Patch Set: rebase Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 142 }
143 143
144 // Gracefully handle bad RTP timestamps and render time issues. 144 // Gracefully handle bad RTP timestamps and render time issues.
145 if (HasBadRenderTiming(*frame, now_ms)) { 145 if (HasBadRenderTiming(*frame, now_ms)) {
146 jitter_estimator_->Reset(); 146 jitter_estimator_->Reset();
147 timing_->Reset(); 147 timing_->Reset();
148 frame->SetRenderTime(timing_->RenderTimeMs(frame->timestamp, now_ms)); 148 frame->SetRenderTime(timing_->RenderTimeMs(frame->timestamp, now_ms));
149 } 149 }
150 150
151 UpdateJitterDelay(); 151 UpdateJitterDelay();
152 UpdateTimingFrameInfo();
152 PropagateDecodability(next_frame_it_->second); 153 PropagateDecodability(next_frame_it_->second);
153 154
154 // Sanity check for RTP timestamp monotonicity. 155 // Sanity check for RTP timestamp monotonicity.
155 if (last_decoded_frame_it_ != frames_.end()) { 156 if (last_decoded_frame_it_ != frames_.end()) {
156 const FrameKey& last_decoded_frame_key = last_decoded_frame_it_->first; 157 const FrameKey& last_decoded_frame_key = last_decoded_frame_it_->first;
157 const FrameKey& frame_key = next_frame_it_->first; 158 const FrameKey& frame_key = next_frame_it_->first;
158 159
159 const bool frame_is_higher_spatial_layer_of_last_decoded_frame = 160 const bool frame_is_higher_spatial_layer_of_last_decoded_frame =
160 last_decoded_frame_timestamp_ == frame->timestamp && 161 last_decoded_frame_timestamp_ == frame->timestamp &&
161 last_decoded_frame_key.picture_id == frame_key.picture_id && 162 last_decoded_frame_key.picture_id == frame_key.picture_id &&
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 int render_delay_ms; 528 int render_delay_ms;
528 if (timing_->GetTimings(&decode_ms, &max_decode_ms, &current_delay_ms, 529 if (timing_->GetTimings(&decode_ms, &max_decode_ms, &current_delay_ms,
529 &target_delay_ms, &jitter_buffer_ms, 530 &target_delay_ms, &jitter_buffer_ms,
530 &min_playout_delay_ms, &render_delay_ms)) { 531 &min_playout_delay_ms, &render_delay_ms)) {
531 stats_callback_->OnFrameBufferTimingsUpdated( 532 stats_callback_->OnFrameBufferTimingsUpdated(
532 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms, 533 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms,
533 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms); 534 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms);
534 } 535 }
535 } 536 }
536 537
538 void FrameBuffer::UpdateTimingFrameInfo() {
539 TRACE_EVENT0("webrtc", "FrameBuffer::UpdateTimingFrameInfo");
540 rtc::Optional<TimingFrameInfo> info = timing_->GetTimingFrameInfo();
541 if (info)
542 stats_callback_->OnTimingFrameInfoUpdated(*info);
543 }
544
537 void FrameBuffer::ClearFramesAndHistory() { 545 void FrameBuffer::ClearFramesAndHistory() {
538 TRACE_EVENT0("webrtc", "FrameBuffer::UpdateJitterDelay"); 546 TRACE_EVENT0("webrtc", "FrameBuffer::ClearFramesAndHistory");
539 frames_.clear(); 547 frames_.clear();
540 last_decoded_frame_it_ = frames_.end(); 548 last_decoded_frame_it_ = frames_.end();
541 last_continuous_frame_it_ = frames_.end(); 549 last_continuous_frame_it_ = frames_.end();
542 next_frame_it_ = frames_.end(); 550 next_frame_it_ = frames_.end();
543 num_frames_history_ = 0; 551 num_frames_history_ = 0;
544 num_frames_buffered_ = 0; 552 num_frames_buffered_ = 0;
545 } 553 }
546 554
547 } // namespace video_coding 555 } // namespace video_coding
548 } // namespace webrtc 556 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/frame_buffer2.h ('k') | webrtc/modules/video_coding/frame_buffer2_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698