| 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 a4b25fcd2e5946c30b91da327b44984f445c2363..7e77c93887422fb5689f8172b37969347bda4258 100644
|
| --- a/webrtc/common_video/incoming_video_stream.cc
|
| +++ b/webrtc/common_video/incoming_video_stream.cc
|
| @@ -28,11 +28,17 @@
|
| #include "webrtc/system_wrappers/include/thread_wrapper.h"
|
| #include "webrtc/system_wrappers/include/tick_util.h"
|
| #include "webrtc/system_wrappers/include/trace.h"
|
| +#include "webrtc/video_renderer.h"
|
|
|
| namespace webrtc {
|
|
|
| IncomingVideoStream::IncomingVideoStream(uint32_t stream_id)
|
| + : IncomingVideoStream(stream_id, nullptr) {}
|
| +
|
| +IncomingVideoStream::IncomingVideoStream(uint32_t stream_id,
|
| + VideoRenderer* renderer)
|
| : stream_id_(stream_id),
|
| + renderer_(renderer),
|
| stream_critsect_(CriticalSectionWrapper::CreateCriticalSection()),
|
| thread_critsect_(CriticalSectionWrapper::CreateCriticalSection()),
|
| buffer_critsect_(CriticalSectionWrapper::CreateCriticalSection()),
|
| @@ -49,8 +55,7 @@ IncomingVideoStream::IncomingVideoStream(uint32_t stream_id)
|
| temp_frame_(),
|
| start_image_(),
|
| timeout_image_(),
|
| - timeout_time_() {
|
| -}
|
| + timeout_time_() {}
|
|
|
| IncomingVideoStream::~IncomingVideoStream() {
|
| Stop();
|
| @@ -82,9 +87,10 @@ 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_ && renderer_->PrerendererSmoothingDisabled())) {
|
| deliver_buffer_event_->Set();
|
| -
|
| + }
|
| return 0;
|
| }
|
|
|
| @@ -214,11 +220,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_ || !renderer_->PrerendererSmoothingDisabled()) {
|
| + // 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_) {
|
|
|