[cleanup] Return struct from VCMTiming::GetTimings
Cleans callers having to initialize TimeDeltas. Change-Id: Ib00a59bedf05fb82c9fde1d9fdd1e341e2132cb8 Bug: None Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256360 Reviewed-by: Philip Eliasson <philipel@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36292}
This commit is contained in:
parent
6ceb81f62b
commit
92e89d7f77
@ -596,17 +596,12 @@ void FrameBuffer::UpdateJitterDelay() {
|
||||
if (!stats_callback_)
|
||||
return;
|
||||
|
||||
TimeDelta max_decode = TimeDelta::Zero();
|
||||
TimeDelta current_delay = TimeDelta::Zero();
|
||||
TimeDelta target_delay = TimeDelta::Zero();
|
||||
TimeDelta jitter_buffer = TimeDelta::Zero();
|
||||
TimeDelta min_playout_delay = TimeDelta::Zero();
|
||||
TimeDelta render_delay = TimeDelta::Zero();
|
||||
if (timing_->GetTimings(&max_decode, ¤t_delay, &target_delay,
|
||||
&jitter_buffer, &min_playout_delay, &render_delay)) {
|
||||
auto timings = timing_->GetTimings();
|
||||
if (timings.num_decoded_frames > 0) {
|
||||
stats_callback_->OnFrameBufferTimingsUpdated(
|
||||
max_decode.ms(), current_delay.ms(), target_delay.ms(),
|
||||
jitter_buffer.ms(), min_playout_delay.ms(), render_delay.ms());
|
||||
timings.max_decode_duration.ms(), timings.current_delay.ms(),
|
||||
timings.target_delay.ms(), timings.jitter_buffer_delay.ms(),
|
||||
timings.min_playout_delay.ms(), timings.render_delay.ms());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -65,25 +65,8 @@ class VCMTimingFake : public VCMTiming {
|
||||
return render_time - now - kDecodeTime;
|
||||
}
|
||||
|
||||
bool GetTimings(TimeDelta* max_decode,
|
||||
TimeDelta* current_delay,
|
||||
TimeDelta* target_delay,
|
||||
TimeDelta* jitter_buffer,
|
||||
TimeDelta* min_playout_delay,
|
||||
TimeDelta* render_delay) const override {
|
||||
return true;
|
||||
}
|
||||
|
||||
TimeDelta GetCurrentJitter() {
|
||||
TimeDelta max_decode = TimeDelta::Zero();
|
||||
TimeDelta current_delay = TimeDelta::Zero();
|
||||
TimeDelta target_delay = TimeDelta::Zero();
|
||||
TimeDelta jitter_buffer = TimeDelta::Zero();
|
||||
TimeDelta min_playout_delay = TimeDelta::Zero();
|
||||
TimeDelta render_delay = TimeDelta::Zero();
|
||||
VCMTiming::GetTimings(&max_decode, ¤t_delay, &target_delay,
|
||||
&jitter_buffer, &min_playout_delay, &render_delay);
|
||||
return jitter_buffer;
|
||||
return VCMTiming::GetTimings().jitter_buffer_delay;
|
||||
}
|
||||
|
||||
private:
|
||||
@ -538,6 +521,8 @@ TEST_F(TestFrameBuffer2, StatsCallback) {
|
||||
EXPECT_CALL(stats_callback_,
|
||||
OnCompleteFrame(true, kFrameSize, VideoContentType::UNSPECIFIED));
|
||||
EXPECT_CALL(stats_callback_, OnFrameBufferTimingsUpdated(_, _, _, _, _, _));
|
||||
// Stats callback requires a previously decoded frame.
|
||||
timing_.StopDecodeTimer(TimeDelta::Millis(1), Timestamp::Zero());
|
||||
|
||||
{
|
||||
std::unique_ptr<FrameObjectFake> frame(new FrameObjectFake());
|
||||
|
||||
@ -448,11 +448,9 @@ TEST_F(VCMReceiverTimingTest, FrameForDecodingPreferLateDecoding) {
|
||||
int64_t arrive_timestamps[kNumFrames];
|
||||
int64_t render_timestamps[kNumFrames];
|
||||
|
||||
TimeDelta render_delay_ms = TimeDelta::Zero();
|
||||
TimeDelta max_decode_ms = TimeDelta::Zero();
|
||||
TimeDelta dummy = TimeDelta::Zero();
|
||||
timing_.GetTimings(&max_decode_ms, &dummy, &dummy, &dummy, &dummy,
|
||||
&render_delay_ms);
|
||||
auto timings = timing_.GetTimings();
|
||||
TimeDelta render_delay = timings.render_delay;
|
||||
TimeDelta max_decode = timings.max_decode_duration;
|
||||
|
||||
// Construct test samples.
|
||||
// render_timestamps are the timestamps stored in the Frame;
|
||||
@ -479,9 +477,8 @@ TEST_F(VCMReceiverTimingTest, FrameForDecodingPreferLateDecoding) {
|
||||
receiver_.FrameForDecoding(kMaxWaitTime, prefer_late_decoding);
|
||||
int64_t end_time = clock_.TimeInMilliseconds();
|
||||
if (frame) {
|
||||
EXPECT_EQ(
|
||||
frame->RenderTimeMs() - max_decode_ms.ms() - render_delay_ms.ms(),
|
||||
end_time);
|
||||
EXPECT_EQ(frame->RenderTimeMs() - max_decode.ms() - render_delay.ms(),
|
||||
end_time);
|
||||
receiver_.ReleaseFrame(frame);
|
||||
++num_frames_return;
|
||||
} else {
|
||||
|
||||
@ -238,20 +238,15 @@ TimeDelta VCMTiming::TargetDelayInternal() const {
|
||||
jitter_delay_ + RequiredDecodeTime() + render_delay_);
|
||||
}
|
||||
|
||||
bool VCMTiming::GetTimings(TimeDelta* max_decode,
|
||||
TimeDelta* current_delay,
|
||||
TimeDelta* target_delay,
|
||||
TimeDelta* jitter_buffer,
|
||||
TimeDelta* min_playout_delay,
|
||||
TimeDelta* render_delay) const {
|
||||
VCMTiming::VideoDelayTimings VCMTiming::GetTimings() const {
|
||||
MutexLock lock(&mutex_);
|
||||
*max_decode = RequiredDecodeTime();
|
||||
*current_delay = current_delay_;
|
||||
*target_delay = TargetDelayInternal();
|
||||
*jitter_buffer = jitter_delay_;
|
||||
*min_playout_delay = min_playout_delay_;
|
||||
*render_delay = render_delay_;
|
||||
return (num_decoded_frames_ > 0);
|
||||
return VideoDelayTimings{.max_decode_duration = RequiredDecodeTime(),
|
||||
.current_delay = current_delay_,
|
||||
.target_delay = TargetDelayInternal(),
|
||||
.jitter_buffer_delay = jitter_delay_,
|
||||
.min_playout_delay = min_playout_delay_,
|
||||
.render_delay = render_delay_,
|
||||
.num_decoded_frames = num_decoded_frames_};
|
||||
}
|
||||
|
||||
void VCMTiming::SetTimingFrameInfo(const TimingFrameInfo& info) {
|
||||
|
||||
@ -94,12 +94,16 @@ class VCMTiming {
|
||||
|
||||
// Return current timing information. Returns true if the first frame has been
|
||||
// decoded, false otherwise.
|
||||
virtual bool GetTimings(TimeDelta* max_decode,
|
||||
TimeDelta* current_delay,
|
||||
TimeDelta* target_delay,
|
||||
TimeDelta* jitter_buffer,
|
||||
TimeDelta* min_playout_delay,
|
||||
TimeDelta* render_delay) const;
|
||||
struct VideoDelayTimings {
|
||||
TimeDelta max_decode_duration;
|
||||
TimeDelta current_delay;
|
||||
TimeDelta target_delay;
|
||||
TimeDelta jitter_buffer_delay;
|
||||
TimeDelta min_playout_delay;
|
||||
TimeDelta render_delay;
|
||||
size_t num_decoded_frames;
|
||||
};
|
||||
VideoDelayTimings GetTimings() const;
|
||||
|
||||
void SetTimingFrameInfo(const TimingFrameInfo& info);
|
||||
absl::optional<TimingFrameInfo> GetTimingFrameInfo();
|
||||
|
||||
@ -405,18 +405,12 @@ class FrameBuffer3Proxy : public FrameBufferProxy {
|
||||
}
|
||||
|
||||
void UpdateJitterDelay() {
|
||||
TimeDelta max_decode = TimeDelta::Zero();
|
||||
TimeDelta current_delay = TimeDelta::Zero();
|
||||
TimeDelta target_delay = TimeDelta::Zero();
|
||||
TimeDelta jitter_buffer = TimeDelta::Zero();
|
||||
TimeDelta min_playout_delay = TimeDelta::Zero();
|
||||
TimeDelta render_delay = TimeDelta::Zero();
|
||||
if (timing_->GetTimings(&max_decode, ¤t_delay, &target_delay,
|
||||
&jitter_buffer, &min_playout_delay,
|
||||
&render_delay)) {
|
||||
auto timings = timing_->GetTimings();
|
||||
if (timings.num_decoded_frames) {
|
||||
stats_proxy_->OnFrameBufferTimingsUpdated(
|
||||
max_decode.ms(), current_delay.ms(), target_delay.ms(),
|
||||
jitter_buffer.ms(), min_playout_delay.ms(), render_delay.ms());
|
||||
timings.max_decode_duration.ms(), timings.current_delay.ms(),
|
||||
timings.target_delay.ms(), timings.jitter_buffer_delay.ms(),
|
||||
timings.min_playout_delay.ms(), timings.render_delay.ms());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user