Index: webkit/media/webmediaplayer_impl.cc |
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc |
index 4c47acdfdedb6ac080429776af064dd09ef323c6..74323e8552b48f9cf6b9b2f4303cddc5baf96bb5 100644 |
--- a/webkit/media/webmediaplayer_impl.cc |
+++ b/webkit/media/webmediaplayer_impl.cc |
@@ -751,7 +751,14 @@ bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture( |
if (video_frame && |
video_frame->format() == media::VideoFrame::NATIVE_TEXTURE && |
video_frame->texture_target() == GL_TEXTURE_2D) { |
- uint32 source_texture = video_frame->texture_id(); |
+ uint32 source_texture = web_graphics_context->createTexture(); |
+ |
+ web_graphics_context->waitSyncPoint( |
+ video_frame->texture_mailbox_sync_point()); |
+ web_graphics_context->bindTexture(GL_TEXTURE_2D, source_texture); |
+ web_graphics_context->consumeTextureCHROMIUM( |
+ GL_TEXTURE_2D, video_frame->texture_mailbox().name); |
+ |
// The video is stored in a unmultiplied format, so premultiply |
// if necessary. |
web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, |
@@ -766,6 +773,12 @@ bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture( |
web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); |
web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, |
false); |
+ |
+ web_graphics_context->bindTexture(GL_TEXTURE_2D, source_texture); |
+ web_graphics_context->produceTextureCHROMIUM( |
+ GL_TEXTURE_2D, video_frame->texture_mailbox().name); |
+ web_graphics_context->deleteTexture(source_texture); |
+ |
// The flush() operation is not necessary here. It is kept since the |
// performance will be better when it is added than not. |
web_graphics_context->flush(); |