| 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;
 | 
| 
 |