diff options
author | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-03 03:01:51 +0000 |
---|---|---|
committer | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-03 03:01:51 +0000 |
commit | ef914574955b6866371c28a5ba8aec6a5336301f (patch) | |
tree | caf03c01bd194a432fa064b8653a72fcea9fd2d7 /webkit | |
parent | 4628913cfce702f7cbe81ae1d654d14e28c17288 (diff) | |
download | chromium_src-ef914574955b6866371c28a5ba8aec6a5336301f.zip chromium_src-ef914574955b6866371c28a5ba8aec6a5336301f.tar.gz chromium_src-ef914574955b6866371c28a5ba8aec6a5336301f.tar.bz2 |
Fix assertion failure for using Empty texture format
in cc/video_layer_impl, using media::VideoFrame::Empty will cause an NOTREACHED() failure.
Since we have the texture_id in WMPA ctor, we can just initialize the video_frame in the ctor instead of using an empty frame
Review URL: https://chromiumcodereview.appspot.com/11367074
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165839 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/media/android/webmediaplayer_android.cc | 22 | ||||
-rw-r--r-- | webkit/media/android/webmediaplayer_android.h | 2 |
2 files changed, 15 insertions, 9 deletions
diff --git a/webkit/media/android/webmediaplayer_android.cc b/webkit/media/android/webmediaplayer_android.cc index 24f1297..468e180 100644 --- a/webkit/media/android/webmediaplayer_android.cc +++ b/webkit/media/android/webmediaplayer_android.cc @@ -32,7 +32,6 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( StreamTextureFactory* factory) : client_(client), buffered_(1u), - video_frame_(new WebVideoFrameImpl(VideoFrame::CreateEmptyFrame())), main_loop_(MessageLoop::current()), pending_seek_(0), seeking_(false), @@ -50,6 +49,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( if (stream_texture_factory_.get()) { stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy()); stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_); + ReallocateVideoFrame(); } } @@ -328,13 +328,7 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) { natural_size_.width = width; natural_size_.height = height; - if (texture_id_) { - video_frame_.reset(new WebVideoFrameImpl(VideoFrame::WrapNativeTexture( - texture_id_, kGLTextureExternalOES, natural_size_, natural_size_, - base::TimeDelta(), - VideoFrame::ReadPixelsCB(), - base::Closure()))); - } + ReallocateVideoFrame(); } void WebMediaPlayerAndroid::UpdateNetworkState( @@ -370,7 +364,7 @@ void WebMediaPlayerAndroid::WillDestroyCurrentMessageLoop() { stream_id_ = 0; } - video_frame_.reset(new WebVideoFrameImpl(VideoFrame::CreateEmptyFrame())); + video_frame_.reset(); if (manager_) manager_->UnregisterMediaPlayer(player_id_); @@ -379,6 +373,16 @@ void WebMediaPlayerAndroid::WillDestroyCurrentMessageLoop() { main_loop_ = NULL; } +void WebMediaPlayerAndroid::ReallocateVideoFrame() { + if (texture_id_) { + video_frame_.reset(new WebVideoFrameImpl(VideoFrame::WrapNativeTexture( + texture_id_, kGLTextureExternalOES, natural_size_, natural_size_, + base::TimeDelta(), + VideoFrame::ReadPixelsCB(), + base::Closure()))); + } +} + WebVideoFrame* WebMediaPlayerAndroid::getCurrentFrame() { if (stream_texture_proxy_.get() && !stream_texture_proxy_->IsInitialized() && stream_id_) { diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h index dcae067d..8118f78 100644 --- a/webkit/media/android/webmediaplayer_android.h +++ b/webkit/media/android/webmediaplayer_android.h @@ -172,6 +172,8 @@ class WebMediaPlayerAndroid WebMediaPlayerManagerAndroid* manager() const { return manager_; } private: + void ReallocateVideoFrame(); + WebKit::WebMediaPlayerClient* const client_; // Save the list of buffered time ranges. |