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