| 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;
|
|
|