| Index: media/renderers/video_renderer_impl.cc
|
| diff --git a/media/renderers/video_renderer_impl.cc b/media/renderers/video_renderer_impl.cc
|
| index 11caf253b4d693b95c1c4bac4851eaf62b8d8457..bc1156154912bd4efd12d00bce66988ae3a833b4 100644
|
| --- a/media/renderers/video_renderer_impl.cc
|
| +++ b/media/renderers/video_renderer_impl.cc
|
| @@ -126,6 +126,7 @@ void VideoRendererImpl::Initialize(
|
| CdmContext* cdm_context,
|
| const StatisticsCB& statistics_cb,
|
| const BufferingStateCB& buffering_state_cb,
|
| + const NaturalSizeChangedCB& natural_size_changed_cb,
|
| const base::Closure& ended_cb,
|
| const PipelineStatusCB& error_cb,
|
| const TimeSource::WallClockTimeCB& wall_clock_time_cb,
|
| @@ -158,7 +159,7 @@ void VideoRendererImpl::Initialize(
|
| // calls to OnTimeStateChanged() under lock, which can deadlock the compositor
|
| // and media threads.
|
| buffering_state_cb_ = BindToCurrentLoop(buffering_state_cb);
|
| -
|
| + natural_size_changed_cb_ = natural_size_changed_cb;
|
| statistics_cb_ = statistics_cb;
|
| ended_cb_ = ended_cb;
|
| error_cb_ = error_cb;
|
| @@ -186,6 +187,12 @@ scoped_refptr<VideoFrame> VideoRendererImpl::Render(
|
| // we've had a proper startup sequence.
|
| DCHECK(result);
|
|
|
| + if (last_frame_natural_size_ != result->natural_size()) {
|
| + last_frame_natural_size_ = result->natural_size();
|
| + task_runner_->PostTask(FROM_HERE, base::Bind(natural_size_changed_cb_,
|
| + last_frame_natural_size_));
|
| + }
|
| +
|
| // Declare HAVE_NOTHING if we reach a state where we can't progress playback
|
| // any further. We don't want to do this if we've already done so, reached
|
| // end of stream, or have frames available. We also don't want to do this in
|
| @@ -243,7 +250,6 @@ scoped_refptr<VideoFrame> VideoRendererImpl::Render(
|
| // the time it runs (may be delayed up to 50ms for complex decodes!) we might.
|
| task_runner_->PostTask(FROM_HERE, base::Bind(&VideoRendererImpl::AttemptRead,
|
| weak_factory_.GetWeakPtr()));
|
| -
|
| return result;
|
| }
|
|
|
|
|