Index: media/renderers/skcanvas_video_renderer.cc |
diff --git a/media/renderers/skcanvas_video_renderer.cc b/media/renderers/skcanvas_video_renderer.cc |
index ec093da0a70feb3702507e4f1831e50cb616fa17..d35a61d2ffb9066f316457a0b8e8c41d0e603538 100644 |
--- a/media/renderers/skcanvas_video_renderer.cc |
+++ b/media/renderers/skcanvas_video_renderer.cc |
@@ -21,6 +21,7 @@ |
#include "third_party/skia/include/gpu/GrTexture.h" |
#include "third_party/skia/include/gpu/GrTextureProvider.h" |
#include "third_party/skia/include/gpu/SkGr.h" |
+#include "third_party/skia/include/gpu/gl/GrGLTypes.h" |
#include "ui/gfx/geometry/rect_f.h" |
#include "ui/gfx/skia_util.h" |
@@ -94,7 +95,7 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameYUVTextures( |
gfx::Size uv_tex_size((ya_tex_size.width() + 1) / 2, |
(ya_tex_size.height() + 1) / 2); |
- unsigned source_textures[3] = {0}; |
+ GrGLTextureInfo source_textures[] = {{0, 0}, {0, 0}, {0, 0}}; |
for (size_t i = 0; i < media::VideoFrame::NumPlanes(video_frame->format()); |
++i) { |
// Get the texture from the mailbox and wrap it in a GrTexture. |
@@ -103,7 +104,7 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameYUVTextures( |
mailbox_holder.texture_target == GL_TEXTURE_EXTERNAL_OES || |
mailbox_holder.texture_target == GL_TEXTURE_RECTANGLE_ARB); |
gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData()); |
- source_textures[i] = gl->CreateAndConsumeTextureCHROMIUM( |
+ source_textures[i].fID = gl->CreateAndConsumeTextureCHROMIUM( |
mailbox_holder.texture_target, mailbox_holder.mailbox.name); |
// TODO(dcastagna): avoid this copy once Skia supports native textures |
@@ -114,22 +115,25 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameYUVTextures( |
gl->GenTextures(1, &texture_copy); |
DCHECK(texture_copy); |
gl->BindTexture(GL_TEXTURE_2D, texture_copy); |
- gl->CopyTextureCHROMIUM(GL_TEXTURE_2D, source_textures[i], texture_copy, |
- GL_RGB, GL_UNSIGNED_BYTE, false, true, false); |
+ gl->CopyTextureCHROMIUM(GL_TEXTURE_2D, source_textures[i].fID, |
+ texture_copy, GL_RGB, GL_UNSIGNED_BYTE, false, |
+ true, false); |
- gl->DeleteTextures(1, &source_textures[i]); |
- source_textures[i] = texture_copy; |
+ gl->DeleteTextures(1, &source_textures[i].fID); |
+ source_textures[i].fID = texture_copy; |
+ source_textures[i].fTarget = GL_TEXTURE_2D; |
} |
} |
- DCHECK_LE(source_textures[0], |
+ DCHECK_LE(source_textures[0].fID, |
Daniele Castagna
2015/12/16 17:25:51
We can get rid of these DCHECKs since fID is unsig
bsalomon
2015/12/16 18:09:02
Done.
|
static_cast<unsigned>(std::numeric_limits<int>::max())); |
- DCHECK_LE(source_textures[1], |
+ DCHECK_LE(source_textures[1].fID, |
static_cast<unsigned>(std::numeric_limits<int>::max())); |
- DCHECK_LE(source_textures[2], |
+ DCHECK_LE(source_textures[2].fID, |
static_cast<unsigned>(std::numeric_limits<int>::max())); |
- GrBackendObject handles[3] = {static_cast<int>(source_textures[0]), |
- static_cast<int>(source_textures[1]), |
- static_cast<int>(source_textures[2])}; |
+ GrBackendObject handles[3] = { |
+ reinterpret_cast<GrBackendObject>(&source_textures[0]), |
+ reinterpret_cast<GrBackendObject>(&source_textures[1]), |
+ reinterpret_cast<GrBackendObject>(&source_textures[2])}; |
SkISize yuvSizes[] = { |
{ya_tex_size.width(), ya_tex_size.height()}, |
@@ -146,7 +150,10 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameYUVTextures( |
SkImage* img = SkImage::NewFromYUVTexturesCopy(context_3d.gr_context, |
color_space, handles, yuvSizes, |
Daniele Castagna
2015/12/16 17:25:51
Can't we just have NewFromYUVTexturesCopy take a G
bsalomon
2015/12/16 18:09:02
We could do that (and similar for all other uses o
Daniele Castagna
2015/12/16 19:30:18
Acknowledged.
|
kTopLeft_GrSurfaceOrigin); |
- gl->DeleteTextures(3, source_textures); |
+ for (size_t i = 0; i < media::VideoFrame::NumPlanes(video_frame->format()); |
+ ++i) { |
+ gl->DeleteTextures(1, &source_textures[i].fID); |
+ } |
return skia::AdoptRef(img); |
} |