[DVQA] Migrate prev_frame_rendered_time to absl::optoinal<Timestamp>
Bug: webrtc:14995, b/271542055 Change-Id: I7ca676c8c5d4aa86d1328b7d9f14730be163b73d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/300844 Commit-Queue: Artem Titov <titovartem@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39836}
This commit is contained in:
parent
921448fbc6
commit
0ae4d249c7
@ -34,10 +34,9 @@ struct ReceiverFrameStats {
|
|||||||
Timestamp decode_start_time = Timestamp::MinusInfinity();
|
Timestamp decode_start_time = Timestamp::MinusInfinity();
|
||||||
Timestamp decode_end_time = Timestamp::MinusInfinity();
|
Timestamp decode_end_time = Timestamp::MinusInfinity();
|
||||||
Timestamp rendered_time = Timestamp::MinusInfinity();
|
Timestamp rendered_time = Timestamp::MinusInfinity();
|
||||||
// Will be finite if there is frame rendered before this one.
|
|
||||||
Timestamp prev_frame_rendered_time = Timestamp::MinusInfinity();
|
|
||||||
|
|
||||||
// Will be set if there is frame rendered before this one.
|
// Will be set if there is frame rendered before this one.
|
||||||
|
absl::optional<Timestamp> prev_frame_rendered_time = absl::nullopt;
|
||||||
absl::optional<TimeDelta> time_between_rendered_frames = absl::nullopt;
|
absl::optional<TimeDelta> time_between_rendered_frames = absl::nullopt;
|
||||||
|
|
||||||
// Type and encoded size of received frame.
|
// Type and encoded size of received frame.
|
||||||
|
|||||||
@ -554,7 +554,7 @@ void DefaultVideoQualityAnalyzerFramesComparator::ProcessComparison(
|
|||||||
frame_stats.decode_end_time, metadata));
|
frame_stats.decode_end_time, metadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frame_stats.prev_frame_rendered_time.IsFinite() &&
|
if (frame_stats.prev_frame_rendered_time.has_value() &&
|
||||||
frame_stats.rendered_time.IsFinite()) {
|
frame_stats.rendered_time.IsFinite()) {
|
||||||
RTC_DCHECK(frame_stats.time_between_rendered_frames.has_value());
|
RTC_DCHECK(frame_stats.time_between_rendered_frames.has_value());
|
||||||
stats->time_between_rendered_frames_ms.AddSample(
|
stats->time_between_rendered_frames_ms.AddSample(
|
||||||
@ -573,7 +573,7 @@ void DefaultVideoQualityAnalyzerFramesComparator::ProcessComparison(
|
|||||||
RTC_DCHECK(freeze_end_it != stream_last_freeze_end_time_.end());
|
RTC_DCHECK(freeze_end_it != stream_last_freeze_end_time_.end());
|
||||||
// TODO(bugs.webrtc.org/14995): rethink this metric for paused stream.
|
// TODO(bugs.webrtc.org/14995): rethink this metric for paused stream.
|
||||||
stats->time_between_freezes_ms.AddSample(StatsSample(
|
stats->time_between_freezes_ms.AddSample(StatsSample(
|
||||||
frame_stats.prev_frame_rendered_time - freeze_end_it->second,
|
*frame_stats.prev_frame_rendered_time - freeze_end_it->second,
|
||||||
frame_stats.rendered_time, metadata));
|
frame_stats.rendered_time, metadata));
|
||||||
freeze_end_it->second = frame_stats.rendered_time;
|
freeze_end_it->second = frame_stats.rendered_time;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1604,13 +1604,16 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
|
|||||||
|
|
||||||
// Add 5 frames which were rendered with 30 fps (~30ms between frames)
|
// Add 5 frames which were rendered with 30 fps (~30ms between frames)
|
||||||
// Frame ids are in [1..5] and last frame is with 120ms offset from first.
|
// Frame ids are in [1..5] and last frame is with 120ms offset from first.
|
||||||
Timestamp prev_frame_rendered_time = Timestamp::MinusInfinity();
|
absl::optional<Timestamp> prev_frame_rendered_time = absl::nullopt;
|
||||||
for (int i = 0; i < 5; ++i) {
|
for (int i = 0; i < 5; ++i) {
|
||||||
FrameStats frame_stats = FrameStatsWith10msDeltaBetweenPhasesAnd10x10Frame(
|
FrameStats frame_stats = FrameStatsWith10msDeltaBetweenPhasesAnd10x10Frame(
|
||||||
/*frame_id=*/i + 1, stream_start_time + TimeDelta::Millis(30 * i));
|
/*frame_id=*/i + 1, stream_start_time + TimeDelta::Millis(30 * i));
|
||||||
frame_stats.prev_frame_rendered_time = prev_frame_rendered_time;
|
frame_stats.prev_frame_rendered_time = prev_frame_rendered_time;
|
||||||
frame_stats.time_between_rendered_frames =
|
frame_stats.time_between_rendered_frames =
|
||||||
frame_stats.rendered_time - prev_frame_rendered_time;
|
prev_frame_rendered_time.has_value()
|
||||||
|
? absl::optional<TimeDelta>(frame_stats.rendered_time -
|
||||||
|
*prev_frame_rendered_time)
|
||||||
|
: absl::nullopt;
|
||||||
prev_frame_rendered_time = frame_stats.rendered_time;
|
prev_frame_rendered_time = frame_stats.rendered_time;
|
||||||
|
|
||||||
comparator.AddComparison(stats_key,
|
comparator.AddComparison(stats_key,
|
||||||
@ -1626,7 +1629,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
|
|||||||
/*frame_id=*/10, stream_start_time + TimeDelta::Millis(120 + 300));
|
/*frame_id=*/10, stream_start_time + TimeDelta::Millis(120 + 300));
|
||||||
freeze_frame_stats.prev_frame_rendered_time = prev_frame_rendered_time;
|
freeze_frame_stats.prev_frame_rendered_time = prev_frame_rendered_time;
|
||||||
freeze_frame_stats.time_between_rendered_frames =
|
freeze_frame_stats.time_between_rendered_frames =
|
||||||
freeze_frame_stats.rendered_time - prev_frame_rendered_time;
|
freeze_frame_stats.rendered_time - *prev_frame_rendered_time;
|
||||||
|
|
||||||
comparator.AddComparison(stats_key,
|
comparator.AddComparison(stats_key,
|
||||||
/*skipped_between_rendered=*/4,
|
/*skipped_between_rendered=*/4,
|
||||||
|
|||||||
@ -57,9 +57,9 @@ struct FrameStats {
|
|||||||
Timestamp decode_start_time = Timestamp::MinusInfinity();
|
Timestamp decode_start_time = Timestamp::MinusInfinity();
|
||||||
Timestamp decode_end_time = Timestamp::MinusInfinity();
|
Timestamp decode_end_time = Timestamp::MinusInfinity();
|
||||||
Timestamp rendered_time = Timestamp::MinusInfinity();
|
Timestamp rendered_time = Timestamp::MinusInfinity();
|
||||||
Timestamp prev_frame_rendered_time = Timestamp::MinusInfinity();
|
|
||||||
|
|
||||||
// Next timings are set if and only if previous frame exist.
|
// Next timings are set if and only if previous frame exist.
|
||||||
|
absl::optional<Timestamp> prev_frame_rendered_time = absl::nullopt;
|
||||||
absl::optional<TimeDelta> time_between_captured_frames = absl::nullopt;
|
absl::optional<TimeDelta> time_between_captured_frames = absl::nullopt;
|
||||||
absl::optional<TimeDelta> time_between_encoded_frames = absl::nullopt;
|
absl::optional<TimeDelta> time_between_encoded_frames = absl::nullopt;
|
||||||
absl::optional<TimeDelta> time_between_rendered_frames = absl::nullopt;
|
absl::optional<TimeDelta> time_between_rendered_frames = absl::nullopt;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user