Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Unified Diff: media/renderers/mock_gpu_video_accelerator_factories.cc

Issue 1316493004: Add support for converting I420 software frames into NV12 hardware frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@snapshot
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/video_frame.cc ('k') | media/video/gpu_memory_buffer_video_frame_pool.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
}
- 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_;
};
« no previous file with comments | « media/base/video_frame.cc ('k') | media/video/gpu_memory_buffer_video_frame_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698