| Index: media/video/gpu_memory_buffer_video_frame_pool.cc
|
| diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
|
| index 41bad43fdf080d290e65d4bead58642999c75fbb..9e5e5161ec7387da1d8bc55084a43e01fa4e338d 100644
|
| --- a/media/video/gpu_memory_buffer_video_frame_pool.cc
|
| +++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
|
| @@ -27,6 +27,9 @@ gfx::BufferFormat GpuMemoryBufferFormat(VideoPixelFormat format, size_t plane) {
|
| case PIXEL_FORMAT_YV12:
|
| DCHECK_LE(plane, 2u);
|
| return gfx::BufferFormat::R_8;
|
| + case PIXEL_FORMAT_YV12A:
|
| + DCHECK_LE(plane, 3u);
|
| + return gfx::BufferFormat::R_8;
|
| case PIXEL_FORMAT_NV12:
|
| DCHECK_LE(plane, 1u);
|
| return gfx::BufferFormat::YUV_420_BIPLANAR;
|
| @@ -45,6 +48,9 @@ unsigned ImageInternalFormat(VideoPixelFormat format, size_t plane) {
|
| case PIXEL_FORMAT_YV12:
|
| DCHECK_LE(plane, 2u);
|
| return GL_RED_EXT;
|
| + case PIXEL_FORMAT_YV12A:
|
| + DCHECK_LE(plane, 3u);
|
| + return GL_RED_EXT;
|
| case PIXEL_FORMAT_NV12:
|
| // TODO(dshwang): support ChromeOS using GL_RG_EXT. crbug.com/356871
|
| DCHECK_LE(plane, 1u);
|
| @@ -77,6 +83,7 @@ gfx::Size CodedSize(const gfx::Size& size, VideoPixelFormat format) {
|
| switch (format) {
|
| case PIXEL_FORMAT_I420:
|
| case PIXEL_FORMAT_YV12:
|
| + case PIXEL_FORMAT_YV12A:
|
| case PIXEL_FORMAT_NV12:
|
| return gfx::Size(RoundUp(size.width(), 2), RoundUp(size.height(), 2));
|
| case PIXEL_FORMAT_UYVY:
|
| @@ -349,6 +356,14 @@ class GpuMemoryBufferVideoFrameFuture : public VideoFrameFuture {
|
| mailbox_holders[VideoFrame::kVPlane], release_video_frame_callback,
|
| coded_size, visible_rect_, natural_size_, timestamp_);
|
| break;
|
| + case PIXEL_FORMAT_YV12A:
|
| + released_video_frame_ = VideoFrame::WrapYV12ANativeTextures(
|
| + mailbox_holders[VideoFrame::kYPlane],
|
| + mailbox_holders[VideoFrame::kUPlane],
|
| + mailbox_holders[VideoFrame::kVPlane],
|
| + mailbox_holders[VideoFrame::kAPlane], release_video_frame_callback,
|
| + coded_size, visible_rect_, natural_size_, timestamp_);
|
| + break;
|
| case PIXEL_FORMAT_NV12:
|
| case PIXEL_FORMAT_UYVY:
|
| released_video_frame_ = VideoFrame::WrapNativeTexture(
|
| @@ -384,6 +399,7 @@ class GpuMemoryBufferVideoFrameFuture : public VideoFrameFuture {
|
| switch (frame_resources_->format()) {
|
| case PIXEL_FORMAT_I420:
|
| case PIXEL_FORMAT_YV12:
|
| + case PIXEL_FORMAT_YV12A:
|
| case PIXEL_FORMAT_UYVY:
|
| return static_cast<uint8_t*>(
|
| frame_resources_->GetPlaneResource(plane).gpu_memory_buffer->memory(
|
| @@ -404,6 +420,7 @@ class GpuMemoryBufferVideoFrameFuture : public VideoFrameFuture {
|
| switch (frame_resources_->format()) {
|
| case PIXEL_FORMAT_I420:
|
| case PIXEL_FORMAT_YV12:
|
| + case PIXEL_FORMAT_YV12A:
|
| case PIXEL_FORMAT_UYVY:
|
| return frame_resources_->GetPlaneResource(plane)
|
| .gpu_memory_buffer->stride(0);
|
| @@ -567,6 +584,7 @@ class GpuMemoryBufferVideoFramePool::PoolImpl
|
| // TODO(dshwang): support more format. crbug.com/356871
|
| case PIXEL_FORMAT_I420:
|
| case PIXEL_FORMAT_YV12:
|
| + case PIXEL_FORMAT_YV12A:
|
| case PIXEL_FORMAT_NV12:
|
| case PIXEL_FORMAT_UYVY:
|
| return true;
|
|
|