summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-03 03:01:51 +0000
committerqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-03 03:01:51 +0000
commitef914574955b6866371c28a5ba8aec6a5336301f (patch)
treecaf03c01bd194a432fa064b8653a72fcea9fd2d7 /webkit
parent4628913cfce702f7cbe81ae1d654d14e28c17288 (diff)
downloadchromium_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.cc22
-rw-r--r--webkit/media/android/webmediaplayer_android.h2
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.