| Index: webrtc/api/video/video_timing.cc
|
| diff --git a/webrtc/api/video/video_timing.cc b/webrtc/api/video/video_timing.cc
|
| index a0a3f4d10f70df71da505f726d6d19ebf35ca307..0d22f904bf0f8cac635afbd934415d38fcfb3189 100644
|
| --- a/webrtc/api/video/video_timing.cc
|
| +++ b/webrtc/api/video/video_timing.cc
|
| @@ -27,7 +27,8 @@ TimingFrameInfo::TimingFrameInfo()
|
| receive_finish_ms(-1),
|
| decode_start_ms(-1),
|
| decode_finish_ms(-1),
|
| - render_time_ms(-1) {}
|
| + render_time_ms(-1),
|
| + flags(TimingFrameFlags::kDefault) {}
|
|
|
| int64_t TimingFrameInfo::EndToEndDelay() const {
|
| return capture_time_ms >= 0 ? decode_finish_ms - capture_time_ms : -1;
|
| @@ -38,14 +39,31 @@ bool TimingFrameInfo::IsLongerThan(const TimingFrameInfo& other) const {
|
| return other_delay == -1 || EndToEndDelay() > other_delay;
|
| }
|
|
|
| +bool TimingFrameInfo::IsOutlier() const {
|
| + return !IsInvalid() && (flags & TimingFrameFlags::kTriggeredBySize);
|
| +}
|
| +
|
| +bool TimingFrameInfo::IsTimerTriggered() const {
|
| + return !IsInvalid() && (flags & TimingFrameFlags::kTriggeredByTimer);
|
| +}
|
| +
|
| +bool TimingFrameInfo::IsInvalid() const {
|
| + return flags == TimingFrameFlags::kInvalid;
|
| +}
|
| +
|
| std::string TimingFrameInfo::ToString() const {
|
| std::stringstream out;
|
| - out << rtp_timestamp << ',' << capture_time_ms << ',' << encode_start_ms
|
| - << ',' << encode_finish_ms << ',' << packetization_finish_ms << ','
|
| - << pacer_exit_ms << ',' << network_timestamp_ms << ','
|
| - << network2_timestamp_ms << ',' << receive_start_ms << ','
|
| - << receive_finish_ms << ',' << decode_start_ms << ',' << decode_finish_ms
|
| - << ',' << render_time_ms;
|
| + if (IsInvalid()) {
|
| + out << "[Invalid]";
|
| + } else {
|
| + out << rtp_timestamp << ',' << capture_time_ms << ',' << encode_start_ms
|
| + << ',' << encode_finish_ms << ',' << packetization_finish_ms << ','
|
| + << pacer_exit_ms << ',' << network_timestamp_ms << ','
|
| + << network2_timestamp_ms << ',' << receive_start_ms << ','
|
| + << receive_finish_ms << ',' << decode_start_ms << ','
|
| + << decode_finish_ms << ',' << render_time_ms << ", outlier_triggered "
|
| + << IsOutlier() << ", timer_triggered " << IsTimerTriggered();
|
| + }
|
| return out.str();
|
| }
|
|
|
|
|