Index: webrtc/modules/video_coding/receiver.cc |
diff --git a/webrtc/modules/video_coding/receiver.cc b/webrtc/modules/video_coding/receiver.cc |
index 5eeca046ca2f21b6893f6c62b8d8386105a8cfb8..444c906d313696ead92f133f43142af6cd216f2b 100644 |
--- a/webrtc/modules/video_coding/receiver.cc |
+++ b/webrtc/modules/video_coding/receiver.cc |
@@ -138,12 +138,12 @@ void VCMReceiver::TriggerDecoderShutdown() { |
} |
VCMEncodedFrame* VCMReceiver::FrameForDecoding(uint16_t max_wait_time_ms, |
- int64_t* next_render_time_ms, |
bool prefer_late_decoding) { |
const int64_t start_time_ms = clock_->TimeInMilliseconds(); |
uint32_t frame_timestamp = 0; |
int min_playout_delay_ms = -1; |
int max_playout_delay_ms = -1; |
+ int64_t render_time_ms = 0; |
// Exhaust wait time to get a complete frame for decoding. |
VCMEncodedFrame* found_frame = |
jitter_buffer_.NextCompleteFrame(max_wait_time_ms); |
@@ -167,14 +167,14 @@ VCMEncodedFrame* VCMReceiver::FrameForDecoding(uint16_t max_wait_time_ms, |
timing_->SetJitterDelay(jitter_buffer_.EstimatedJitterMs()); |
const int64_t now_ms = clock_->TimeInMilliseconds(); |
timing_->UpdateCurrentDelay(frame_timestamp); |
- *next_render_time_ms = timing_->RenderTimeMs(frame_timestamp, now_ms); |
+ render_time_ms = timing_->RenderTimeMs(frame_timestamp, now_ms); |
// Check render timing. |
bool timing_error = false; |
// Assume that render timing errors are due to changes in the video stream. |
- if (*next_render_time_ms < 0) { |
+ if (render_time_ms < 0) { |
timing_error = true; |
- } else if (std::abs(*next_render_time_ms - now_ms) > max_video_delay_ms_) { |
- int frame_delay = static_cast<int>(std::abs(*next_render_time_ms - now_ms)); |
+ } else if (std::abs(render_time_ms - now_ms) > max_video_delay_ms_) { |
+ int frame_delay = static_cast<int>(std::abs(render_time_ms - now_ms)); |
LOG(LS_WARNING) << "A frame about to be decoded is out of the configured " |
<< "delay bounds (" << frame_delay << " > " |
<< max_video_delay_ms_ |
@@ -201,8 +201,8 @@ VCMEncodedFrame* VCMReceiver::FrameForDecoding(uint16_t max_wait_time_ms, |
static_cast<int32_t>(clock_->TimeInMilliseconds() - start_time_ms); |
uint16_t new_max_wait_time = |
static_cast<uint16_t>(VCM_MAX(available_wait_time, 0)); |
- uint32_t wait_time_ms = timing_->MaxWaitingTime( |
- *next_render_time_ms, clock_->TimeInMilliseconds()); |
+ uint32_t wait_time_ms = |
+ timing_->MaxWaitingTime(render_time_ms, clock_->TimeInMilliseconds()); |
if (new_max_wait_time < wait_time_ms) { |
// We're not allowed to wait until the frame is supposed to be rendered, |
// waiting as long as we're allowed to avoid busy looping, and then return |
@@ -219,9 +219,9 @@ VCMEncodedFrame* VCMReceiver::FrameForDecoding(uint16_t max_wait_time_ms, |
if (frame == NULL) { |
return NULL; |
} |
- frame->SetRenderTime(*next_render_time_ms); |
+ frame->SetRenderTime(render_time_ms); |
TRACE_EVENT_ASYNC_STEP1("webrtc", "Video", frame->TimeStamp(), "SetRenderTS", |
- "render_time", *next_render_time_ms); |
+ "render_time", frame->RenderTimeMs()); |
if (!frame->Complete()) { |
// Update stats for incomplete frames. |
bool retransmitted = false; |