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

Side by Side Diff: webrtc/modules/video_coding/timing.h

Issue 2946413002: Report timing frames info in GetStats. (Closed)
Patch Set: Implement Deadbeef@ comments 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) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 // Return current timing information. Returns true if the first frame has been 95 // Return current timing information. Returns true if the first frame has been
96 // decoded, false otherwise. 96 // decoded, false otherwise.
97 virtual bool GetTimings(int* decode_ms, 97 virtual bool GetTimings(int* decode_ms,
98 int* max_decode_ms, 98 int* max_decode_ms,
99 int* current_delay_ms, 99 int* current_delay_ms,
100 int* target_delay_ms, 100 int* target_delay_ms,
101 int* jitter_buffer_ms, 101 int* jitter_buffer_ms,
102 int* min_playout_delay_ms, 102 int* min_playout_delay_ms,
103 int* render_delay_ms) const; 103 int* render_delay_ms) const;
104 104
105 void SetTimingFrameInfo(const TimingFrameInfo& info);
106 void GetTimingFrameInfo(TimingFrameInfo* info);
107
105 enum { kDefaultRenderDelayMs = 10 }; 108 enum { kDefaultRenderDelayMs = 10 };
106 enum { kDelayMaxChangeMsPerS = 100 }; 109 enum { kDelayMaxChangeMsPerS = 100 };
107 110
108 protected: 111 protected:
109 int RequiredDecodeTimeMs() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 112 int RequiredDecodeTimeMs() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
110 int64_t RenderTimeMsInternal(uint32_t frame_timestamp, int64_t now_ms) const 113 int64_t RenderTimeMsInternal(uint32_t frame_timestamp, int64_t now_ms) const
111 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 114 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
112 int TargetDelayInternal() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 115 int TargetDelayInternal() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
113 116
114 private: 117 private:
115 void UpdateHistograms() const; 118 void UpdateHistograms() const;
116 119
117 rtc::CriticalSection crit_sect_; 120 rtc::CriticalSection crit_sect_;
118 Clock* const clock_; 121 Clock* const clock_;
119 bool master_ GUARDED_BY(crit_sect_); 122 bool master_ GUARDED_BY(crit_sect_);
120 TimestampExtrapolator* ts_extrapolator_ GUARDED_BY(crit_sect_); 123 TimestampExtrapolator* ts_extrapolator_ GUARDED_BY(crit_sect_);
121 std::unique_ptr<VCMCodecTimer> codec_timer_ GUARDED_BY(crit_sect_); 124 std::unique_ptr<VCMCodecTimer> codec_timer_ GUARDED_BY(crit_sect_);
122 int render_delay_ms_ GUARDED_BY(crit_sect_); 125 int render_delay_ms_ GUARDED_BY(crit_sect_);
123 // Best-effort playout delay range for frames from capture to render. 126 // Best-effort playout delay range for frames from capture to render.
124 // The receiver tries to keep the delay between |min_playout_delay_ms_| 127 // The receiver tries to keep the delay between |min_playout_delay_ms_|
125 // and |max_playout_delay_ms_| taking the network jitter into account. 128 // and |max_playout_delay_ms_| taking the network jitter into account.
126 // A special case is where min_playout_delay_ms_ = max_playout_delay_ms_ = 0, 129 // A special case is where min_playout_delay_ms_ = max_playout_delay_ms_ = 0,
127 // in which case the receiver tries to play the frames as they arrive. 130 // in which case the receiver tries to play the frames as they arrive.
128 int min_playout_delay_ms_ GUARDED_BY(crit_sect_); 131 int min_playout_delay_ms_ GUARDED_BY(crit_sect_);
129 int max_playout_delay_ms_ GUARDED_BY(crit_sect_); 132 int max_playout_delay_ms_ GUARDED_BY(crit_sect_);
130 int jitter_delay_ms_ GUARDED_BY(crit_sect_); 133 int jitter_delay_ms_ GUARDED_BY(crit_sect_);
131 int current_delay_ms_ GUARDED_BY(crit_sect_); 134 int current_delay_ms_ GUARDED_BY(crit_sect_);
132 int last_decode_ms_ GUARDED_BY(crit_sect_); 135 int last_decode_ms_ GUARDED_BY(crit_sect_);
133 uint32_t prev_frame_timestamp_ GUARDED_BY(crit_sect_); 136 uint32_t prev_frame_timestamp_ GUARDED_BY(crit_sect_);
137 TimingFrameInfo timing_frame_info_ GUARDED_BY(crit_sect_);
hbos 2017/06/27 14:08:31 rtc::Optional<>?
ilnik 2017/06/27 15:23:56 Done.
134 138
135 // Statistics. 139 // Statistics.
136 size_t num_decoded_frames_ GUARDED_BY(crit_sect_); 140 size_t num_decoded_frames_ GUARDED_BY(crit_sect_);
137 size_t num_delayed_decoded_frames_ GUARDED_BY(crit_sect_); 141 size_t num_delayed_decoded_frames_ GUARDED_BY(crit_sect_);
138 int64_t first_decoded_frame_ms_ GUARDED_BY(crit_sect_); 142 int64_t first_decoded_frame_ms_ GUARDED_BY(crit_sect_);
139 uint64_t sum_missed_render_deadline_ms_ GUARDED_BY(crit_sect_); 143 uint64_t sum_missed_render_deadline_ms_ GUARDED_BY(crit_sect_);
140 }; 144 };
141 } // namespace webrtc 145 } // namespace webrtc
142 146
143 #endif // WEBRTC_MODULES_VIDEO_CODING_TIMING_H_ 147 #endif // WEBRTC_MODULES_VIDEO_CODING_TIMING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698