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

Unified Diff: media/video/capture/fake_video_capture_device_unittest.cc

Issue 1064963002: VideoCapture: add support for GpuMemoryBuffer allocation and lifetime mgmt in VideoCaptureBufferPool (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
Index: media/video/capture/fake_video_capture_device_unittest.cc
diff --git a/media/video/capture/fake_video_capture_device_unittest.cc b/media/video/capture/fake_video_capture_device_unittest.cc
index e413c5ed4d7062636bac181d4dfa8b5b639ab319..7deb18e46d8fa564d532eab1d165b12ea405a038 100644
--- a/media/video/capture/fake_video_capture_device_unittest.cc
+++ b/media/video/capture/fake_video_capture_device_unittest.cc
@@ -24,21 +24,31 @@ namespace {
static const FakeVideoCaptureDevice::FakeVideoCaptureDeviceType
kCaptureTypes[] = {
FakeVideoCaptureDevice::USING_OWN_BUFFERS,
+ FakeVideoCaptureDevice::USING_OWN_BUFFERS_TRIPLANAR,
FakeVideoCaptureDevice::USING_CLIENT_BUFFERS,
- // TODO(mcasas): Add FakeVideoCaptureDevice::USING_GPU_MEMORY_BUFFERS when
- // implemented.
+ FakeVideoCaptureDevice::USING_GPU_MEMORY_BUFFERS,
+};
+
+class SimpleAccesor : public media::DataHandle {
+ public:
+ explicit SimpleAccesor(void* data) : data_(data) {}
+ void* data() override { return data_; }
+
+ private:
+ void* data_;
};
// This class is a Client::Buffer that allocates and frees the requested |size|.
class MockBuffer : public VideoCaptureDevice::Client::Buffer {
public:
MockBuffer(int buffer_id, size_t size)
- : id_(buffer_id),
- size_(size),
- data_(new uint8[size_]) {}
+ : id_(buffer_id), size_(size), data_(new uint8[size_]) {}
int id() const override { return id_; }
- void* data() const override { return static_cast<void*>(data_); }
size_t size() const override { return size_; }
+ scoped_ptr<media::DataHandle> GetDataHandle() override {
+ return make_scoped_ptr(new SimpleAccesor(data_));
+ }
+ ClientBuffer AsClientBuffer() override { return nullptr; }
private:
~MockBuffer() override { delete[] data_; }
@@ -50,22 +60,12 @@ class MockBuffer : public VideoCaptureDevice::Client::Buffer {
class MockClient : public VideoCaptureDevice::Client {
public:
- MOCK_METHOD9(OnIncomingCapturedYuvData,
- void (const uint8* y_data,
- const uint8* u_data,
- const uint8* v_data,
- size_t y_stride,
- size_t u_stride,
- size_t v_stride,
- const VideoCaptureFormat& frame_format,
- int clockwise_rotation,
- const base::TimeTicks& timestamp));
MOCK_METHOD1(OnError, void(const std::string& reason));
explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb)
: frame_cb_(frame_cb) {}
- // Client virtual method for capturing using Device Buffers.
+ // Client virtual methods for capturing using Device Buffers.
void OnIncomingCapturedData(const uint8* data,
int length,
const VideoCaptureFormat& format,
@@ -73,13 +73,32 @@ class MockClient : public VideoCaptureDevice::Client {
const base::TimeTicks& timestamp) {
frame_cb_.Run(format);
}
+ void OnIncomingCapturedYuvData(const uint8* y_data,
+ const uint8* u_data,
+ const uint8* v_data,
+ size_t y_stride,
+ size_t u_stride,
+ size_t v_stride,
+ const VideoCaptureFormat& frame_format,
+ int clockwise_rotation,
+ const base::TimeTicks& timestamp) {
+ frame_cb_.Run(frame_format);
+ }
// Virtual methods for capturing using Client's Buffers.
scoped_refptr<Buffer> ReserveOutputBuffer(media::VideoPixelFormat format,
const gfx::Size& dimensions) {
- EXPECT_EQ(format, PIXEL_FORMAT_I420);
+ EXPECT_TRUE(format == PIXEL_FORMAT_I420 ||
+ format == PIXEL_FORMAT_GPUMEMORYBUFFER);
EXPECT_GT(dimensions.GetArea(), 0);
- return make_scoped_refptr(new MockBuffer(0, dimensions.GetArea() * 3 / 2));
+ const VideoCaptureFormat frame_format(dimensions, 0.0, format);
+ return make_scoped_refptr(
+ new MockBuffer(0, frame_format.ImageAllocationSize()));
+ }
+ void OnIncomingCapturedBuffer(const scoped_refptr<Buffer>& buffer,
+ const VideoCaptureFormat& frame_format,
+ const base::TimeTicks& timestamp) {
+ frame_cb_.Run(frame_format);
}
void OnIncomingCapturedVideoFrame(
const scoped_refptr<Buffer>& buffer,
@@ -125,8 +144,6 @@ class FakeVideoCaptureDeviceTest
}
void SetUp() override {
- EXPECT_CALL(*client_, OnIncomingCapturedYuvData(_,_,_,_,_,_,_,_,_))
- .Times(0);
EXPECT_CALL(*client_, OnError(_)).Times(0);
}

Powered by Google App Engine
This is Rietveld 408576698