Chromium Code Reviews| Index: media/blink/skcanvas_video_renderer.cc |
| diff --git a/media/blink/skcanvas_video_renderer.cc b/media/blink/skcanvas_video_renderer.cc |
| index 132e0da7c6e521257c605cbeadb1adfd03a2ef8a..91367d419a390f64d4af365f6fa2dc52214d3e68 100644 |
| --- a/media/blink/skcanvas_video_renderer.cc |
| +++ b/media/blink/skcanvas_video_renderer.cc |
| @@ -161,8 +161,10 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameNative( |
| DCHECK(source_texture); |
| gl->BindTexture(GL_TEXTURE_2D, source_texture); |
| SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture( |
| - gl, video_frame, source_texture, GL_RGBA, GL_UNSIGNED_BYTE, true, |
| - false); |
| + gl, video_frame, |
| + {SkCanvasVideoRenderer::CopyFrameSingleTextureParams::FullCopy, |
|
DaleCurtis
2015/10/21 18:35:50
Ditto.
|
| + GL_TEXTURE_2D, source_texture, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0, 0, |
| + true, false}); |
| } else { |
| gl->WaitSyncPointCHROMIUM(mailbox_holder.sync_point); |
| source_texture = gl->CreateAndConsumeTextureCHROMIUM( |
| @@ -546,11 +548,7 @@ void SkCanvasVideoRenderer::ConvertVideoFrameToRGBPixels( |
| void SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture( |
| gpu::gles2::GLES2Interface* gl, |
| VideoFrame* video_frame, |
| - unsigned int texture, |
| - unsigned int internal_format, |
| - unsigned int type, |
| - bool premultiply_alpha, |
| - bool flip_y) { |
| + const CopyFrameSingleTextureParams& params) { |
| DCHECK(video_frame); |
| DCHECK(video_frame->HasTextures()); |
| DCHECK_EQ(1u, VideoFrame::NumPlanes(video_frame->format())); |
| @@ -571,9 +569,20 @@ void SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture( |
| // value down to get the expected result. |
| // "flip_y == true" means to reverse the video orientation while |
| // "flip_y == false" means to keep the intrinsic orientation. |
| - gl->CopyTextureCHROMIUM(GL_TEXTURE_2D, source_texture, texture, |
| - internal_format, type, |
| - flip_y, premultiply_alpha, false); |
| + if (params.copy_type == CopyFrameSingleTextureParams::FullCopy) { |
| + DCHECK(!params.xoffset && !params.yoffset); |
| + gl->CopyTextureCHROMIUM(params.target, source_texture, params.texture, |
| + params.internal_format, params.type, params.flip_y, |
| + params.premultiply_alpha, false); |
| + } else { |
| + DCHECK_EQ(static_cast<unsigned int>(GL_FALSE), params.internal_format); |
| + DCHECK_EQ(static_cast<unsigned int>(GL_FALSE), params.type); |
| + gl->CopySubTextureCHROMIUM(params.target, source_texture, params.texture, |
| + params.xoffset, params.yoffset, 0, 0, |
| + video_frame->natural_size().width(), |
| + video_frame->natural_size().height(), |
| + params.flip_y, params.premultiply_alpha, false); |
| + } |
| gl->DeleteTextures(1, &source_texture); |
| gl->Flush(); |