| Index: webkit/media/webmediaplayer_impl.cc
|
| diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
|
| index ce2cbc7c78b80aec988fe38ac667cdf0204f7347..a240701df25ca6e5a2ef45848c3906d5ace42ecc 100644
|
| --- a/webkit/media/webmediaplayer_impl.cc
|
| +++ b/webkit/media/webmediaplayer_impl.cc
|
| @@ -715,7 +715,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,
|
| @@ -730,6 +737,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();
|
|
|