Index: webrtc/common_video/incoming_video_stream.cc |
diff --git a/webrtc/common_video/incoming_video_stream.cc b/webrtc/common_video/incoming_video_stream.cc |
index 79bbb8a7b67732e9226f4740f0d73d6cfb0a2d30..9e4e48d609af3f88d57935143fdc130be60e0b3c 100644 |
--- a/webrtc/common_video/incoming_video_stream.cc |
+++ b/webrtc/common_video/incoming_video_stream.cc |
@@ -32,7 +32,12 @@ |
namespace webrtc { |
IncomingVideoStream::IncomingVideoStream(uint32_t stream_id) |
+ : IncomingVideoStream(stream_id, false) {} |
+ |
+IncomingVideoStream::IncomingVideoStream(uint32_t stream_id, |
+ bool renderer_has_timing) |
: stream_id_(stream_id), |
+ renderer_has_timing_(renderer_has_timing), |
stream_critsect_(CriticalSectionWrapper::CreateCriticalSection()), |
thread_critsect_(CriticalSectionWrapper::CreateCriticalSection()), |
buffer_critsect_(CriticalSectionWrapper::CreateCriticalSection()), |
@@ -49,8 +54,7 @@ IncomingVideoStream::IncomingVideoStream(uint32_t stream_id) |
temp_frame_(), |
start_image_(), |
timeout_image_(), |
- timeout_time_() { |
-} |
+ timeout_time_() {} |
IncomingVideoStream::~IncomingVideoStream() { |
Stop(); |
@@ -82,7 +86,7 @@ int32_t IncomingVideoStream::RenderFrame(const uint32_t stream_id, |
// Insert frame. |
CriticalSectionScoped csB(buffer_critsect_.get()); |
- if (render_buffers_->AddFrame(video_frame) == 1) |
+ if (render_buffers_->AddFrame(video_frame) == 1 || renderer_has_timing_) |
deliver_buffer_event_->Set(); |
return 0; |
@@ -214,11 +218,13 @@ bool IncomingVideoStream::IncomingVideoStreamProcess() { |
wait_time = render_buffers_->TimeToNextFrameRelease(); |
} |
- // Set timer for next frame to render. |
- if (wait_time > kEventMaxWaitTimeMs) { |
- wait_time = kEventMaxWaitTimeMs; |
+ if (!renderer_has_timing_) { |
+ // Set timer for next frame to render. |
+ if (wait_time > kEventMaxWaitTimeMs) { |
+ wait_time = kEventMaxWaitTimeMs; |
+ } |
+ deliver_buffer_event_->StartTimer(false, wait_time); |
} |
- deliver_buffer_event_->StartTimer(false, wait_time); |
if (frame_to_render.IsZeroSize()) { |
if (render_callback_) { |