| 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..c39fd6dce02733eb71630428623d68630b0f71f6 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,19 @@ 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],
|
| - static_cast<unsigned>(std::numeric_limits<int>::max()));
|
| - DCHECK_LE(source_textures[1],
|
| - static_cast<unsigned>(std::numeric_limits<int>::max()));
|
| - DCHECK_LE(source_textures[2],
|
| - 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 +144,10 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameYUVTextures(
|
| SkImage* img = SkImage::NewFromYUVTexturesCopy(context_3d.gr_context,
|
| color_space, handles, yuvSizes,
|
| 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);
|
| }
|
|
|
| @@ -189,9 +190,10 @@ skia::RefPtr<SkImage> NewSkImageFromVideoFrameNative(
|
| desc.fWidth = video_frame->coded_size().width();
|
| desc.fHeight = video_frame->coded_size().height();
|
| desc.fConfig = kRGBA_8888_GrPixelConfig;
|
| - DCHECK_LE(source_texture,
|
| - static_cast<unsigned>(std::numeric_limits<int>::max()));
|
| - desc.fTextureHandle = static_cast<int>(source_texture);
|
| + GrGLTextureInfo source_texture_info;
|
| + source_texture_info.fID = source_texture;
|
| + source_texture_info.fTarget = GL_TEXTURE_2D;
|
| + desc.fTextureHandle = reinterpret_cast<GrBackendObject>(&source_texture_info);
|
| return skia::AdoptRef(
|
| SkImage::NewFromAdoptedTexture(context_3d.gr_context, desc));
|
| }
|
|
|