summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.