Chromium Code Reviews| Index: media/renderers/mock_gpu_video_accelerator_factories.cc |
| diff --git a/media/renderers/mock_gpu_video_accelerator_factories.cc b/media/renderers/mock_gpu_video_accelerator_factories.cc |
| index 5230cdde6d8df0aa199ff485d54e44194725fb2b..85335cfe459c96070e49615e76799e2b91aaf960 100644 |
| --- a/media/renderers/mock_gpu_video_accelerator_factories.cc |
| +++ b/media/renderers/mock_gpu_video_accelerator_factories.cc |
| @@ -4,6 +4,7 @@ |
| #include "media/renderers/mock_gpu_video_accelerator_factories.h" |
| +#include "ui/gfx/buffer_format_util.h" |
| #include "ui/gfx/gpu_memory_buffer.h" |
| namespace media { |
| @@ -15,14 +16,17 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
| GpuMemoryBufferImpl(const gfx::Size& size, gfx::BufferFormat format) |
| : format_(format), size_(size) { |
| DCHECK(gfx::BufferFormat::R_8 == format_ || |
| + gfx::BufferFormat::YUV_420_BIPLANAR == format_ || |
| gfx::BufferFormat::UYVY_422 == format_); |
| - bytes_.resize(size_.GetArea() * |
| - (format_ == gfx::BufferFormat::UYVY_422 ? 2 : 1)); |
| + DCHECK(NumPlanes() <= kMaxPlanes); |
| + for (size_t plane = 0; plane < NumPlanes(); ++plane) |
| + bytes_[plane].resize(size_.GetArea() * BytesPerElement()); |
| } |
| // Overridden from gfx::GpuMemoryBuffer: |
| bool Map(void** data) override { |
| - data[0] = &bytes_[0]; |
| + for (size_t plane = 0; plane < NumPlanes(); ++plane) |
| + data[plane] = &bytes_[plane][0]; |
| return true; |
| } |
| void Unmap() override{}; |
| @@ -31,12 +35,11 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
| return false; |
| } |
| gfx::BufferFormat GetFormat() const override { |
| - NOTREACHED(); |
| - return gfx::BufferFormat::R_8; |
| + return format_; |
|
Daniele Castagna
2015/08/25 15:08:42
Is this reached now?
If it's not, I'd leave the NO
Andre
2015/08/25 18:19:57
Yes, this is now called from CopyVideoFrameToGpuMe
|
| } |
| - void GetStride(int* stride) const override { |
| - stride[0] = |
| - size_.width() * (format_ == gfx::BufferFormat::UYVY_422 ? 2 : 1); |
| + void GetStride(int* strides) const override { |
| + for (size_t plane = 0; plane < NumPlanes(); ++plane) |
| + strides[plane] = size_.width() * BytesPerElement(); |
| } |
| gfx::GpuMemoryBufferId GetId() const override { |
| NOTREACHED(); |
| @@ -51,8 +54,17 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
| } |
| private: |
| + size_t NumPlanes() const { |
| + return gfx::NumberOfPlanesForBufferFormat(format_); |
| + } |
| + int BytesPerElement() const { |
| + return format_ == gfx::BufferFormat::UYVY_422 ? 2 : 1; |
| + } |
| + |
| + static const size_t kMaxPlanes = 3; |
| + |
| gfx::BufferFormat format_; |
| - std::vector<unsigned char> bytes_; |
| + std::vector<uint8> bytes_[kMaxPlanes]; |
| const gfx::Size size_; |
| }; |