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

Side by Side Diff: media/capture/video/fake_video_capture_device_unittest.cc

Issue 2573223002: [Mojo Video Capture] Simplify media::VideoCaptureDevice::Client:Buffer to a struct (Closed)
Patch Set: Backport naming improvements and Ownership interface from future CLs Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/capture/video/fake_video_capture_device.h" 5 #include "media/capture/video/fake_video_capture_device.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 16 matching lines...) Expand all
27 using ::testing::_; 27 using ::testing::_;
28 using ::testing::Bool; 28 using ::testing::Bool;
29 using ::testing::Combine; 29 using ::testing::Combine;
30 using ::testing::SaveArg; 30 using ::testing::SaveArg;
31 using ::testing::Values; 31 using ::testing::Values;
32 32
33 namespace media { 33 namespace media {
34 34
35 namespace { 35 namespace {
36 36
37 // This class is a Client::Buffer that allocates and frees the requested |size|. 37 class StubBufferHandle : public VideoCaptureBufferHandle {
38 class MockBuffer : public VideoCaptureDevice::Client::Buffer {
39 public: 38 public:
40 MockBuffer(int buffer_id, int frame_feedback_id, size_t mapped_size) 39 StubBufferHandle(size_t mapped_size, uint8_t* data)
41 : id_(buffer_id), 40 : mapped_size_(mapped_size), data_(data) {}
42 frame_feedback_id_(frame_feedback_id),
43 mapped_size_(mapped_size),
44 data_(new uint8_t[mapped_size]) {}
45 ~MockBuffer() override { delete[] data_; }
46 41
47 int id() const override { return id_; }
48 int frame_feedback_id() const override { return frame_feedback_id_; }
49 gfx::Size dimensions() const override { return gfx::Size(); }
50 size_t mapped_size() const override { return mapped_size_; } 42 size_t mapped_size() const override { return mapped_size_; }
51 void* data(int plane) override { return data_; } 43 uint8_t* data() override { return data_; }
52 #if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) 44 const uint8_t* data() const override { return data_; }
53 base::FileDescriptor AsPlatformFile() override {
54 return base::FileDescriptor();
55 }
56 #endif
57 bool IsBackedByVideoFrame() const override { return false; };
58 scoped_refptr<VideoFrame> GetVideoFrame() override { return nullptr; }
59 45
60 private: 46 private:
61 const int id_;
62 const int frame_feedback_id_;
63 const size_t mapped_size_; 47 const size_t mapped_size_;
64 uint8_t* const data_; 48 uint8_t* const data_;
65 }; 49 };
66 50
51 class StubBufferHandleProvider : public BufferHandleProvider {
52 public:
53 StubBufferHandleProvider(size_t mapped_size, uint8_t* data)
54 : mapped_size_(mapped_size), data_(data) {}
55
56 ~StubBufferHandleProvider() override {}
57
58 mojo::ScopedSharedBufferHandle GetHandleForInterProcessTransit() override {
59 return mojo::ScopedSharedBufferHandle();
60 }
61
62 std::unique_ptr<VideoCaptureBufferHandle> GetHandleForInProcessAccess()
63 override {
64 return base::MakeUnique<StubBufferHandle>(mapped_size_, data_);
65 }
66
67 private:
68 const size_t mapped_size_;
69 uint8_t* const data_;
70 };
71
72 class StubReadWritePermission : public Ownership {
73 public:
74 StubReadWritePermission(uint8_t* data) : data_(data) {}
75 ~StubReadWritePermission() override { delete[] data_; }
76
77 private:
78 uint8_t* const data_;
79 };
80
81 VideoCaptureDevice::Client::Buffer CreateStubBuffer(int buffer_id,
82 size_t mapped_size) {
83 auto buffer = new uint8_t[mapped_size];
84 const int arbitrary_frame_feedback_id = 0;
85 return VideoCaptureDevice::Client::Buffer(
86 buffer_id, arbitrary_frame_feedback_id,
87 base::MakeUnique<StubBufferHandleProvider>(mapped_size, buffer),
88 base::MakeUnique<StubReadWritePermission>(buffer));
89 };
90
67 class MockClient : public VideoCaptureDevice::Client { 91 class MockClient : public VideoCaptureDevice::Client {
68 public: 92 public:
69 MOCK_METHOD2(OnError, 93 MOCK_METHOD2(OnError,
70 void(const tracked_objects::Location& from_here, 94 void(const tracked_objects::Location& from_here,
71 const std::string& reason)); 95 const std::string& reason));
72 96
73 explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb) 97 explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb)
74 : frame_cb_(frame_cb) {} 98 : frame_cb_(frame_cb) {}
75 99
76 // Client virtual methods for capturing using Device Buffers. 100 // Client virtual methods for capturing using Device Buffers.
77 void OnIncomingCapturedData(const uint8_t* data, 101 void OnIncomingCapturedData(const uint8_t* data,
78 int length, 102 int length,
79 const VideoCaptureFormat& format, 103 const VideoCaptureFormat& format,
80 int rotation, 104 int rotation,
81 base::TimeTicks reference_time, 105 base::TimeTicks reference_time,
82 base::TimeDelta timestamp, 106 base::TimeDelta timestamp,
83 int frame_feedback_id) override { 107 int frame_feedback_id) override {
84 frame_cb_.Run(format); 108 frame_cb_.Run(format);
85 } 109 }
86 // Virtual methods for capturing using Client's Buffers. 110 // Virtual methods for capturing using Client's Buffers.
87 std::unique_ptr<Buffer> ReserveOutputBuffer(const gfx::Size& dimensions, 111 Buffer ReserveOutputBuffer(const gfx::Size& dimensions,
88 media::VideoPixelFormat format, 112 media::VideoPixelFormat format,
89 media::VideoPixelStorage storage, 113 media::VideoPixelStorage storage,
90 int frame_feedback_id) override { 114 int frame_feedback_id) override {
91 EXPECT_TRUE((format == media::PIXEL_FORMAT_ARGB && 115 EXPECT_TRUE((format == media::PIXEL_FORMAT_ARGB &&
92 storage == media::PIXEL_STORAGE_CPU)); 116 storage == media::PIXEL_STORAGE_CPU));
93 EXPECT_GT(dimensions.GetArea(), 0); 117 EXPECT_GT(dimensions.GetArea(), 0);
94 const VideoCaptureFormat frame_format(dimensions, 0.0, format); 118 const VideoCaptureFormat frame_format(dimensions, 0.0, format);
95 return base::MakeUnique<MockBuffer>(0, frame_feedback_id, 119 return CreateStubBuffer(0, frame_format.ImageAllocationSize());
96 frame_format.ImageAllocationSize());
97 } 120 }
98 void OnIncomingCapturedBuffer(std::unique_ptr<Buffer> buffer, 121 void OnIncomingCapturedBuffer(Buffer buffer,
99 const VideoCaptureFormat& format, 122 const VideoCaptureFormat& format,
100 base::TimeTicks reference_time, 123 base::TimeTicks reference_time,
101 base::TimeDelta timestamp) override { 124 base::TimeDelta timestamp) override {
102 frame_cb_.Run(format); 125 frame_cb_.Run(format);
103 } 126 }
104 void OnIncomingCapturedBufferExt( 127 void OnIncomingCapturedBufferExt(
105 std::unique_ptr<Buffer> buffer, 128 Buffer buffer,
106 const VideoCaptureFormat& format, 129 const VideoCaptureFormat& format,
107 base::TimeTicks reference_time, 130 base::TimeTicks reference_time,
108 base::TimeDelta timestamp, 131 base::TimeDelta timestamp,
109 gfx::Rect visible_rect, 132 gfx::Rect visible_rect,
110 const VideoFrameMetadata& additional_metadata) override { 133 const VideoFrameMetadata& additional_metadata) override {
111 frame_cb_.Run(format); 134 frame_cb_.Run(format);
112 } 135 }
113 std::unique_ptr<Buffer> ResurrectLastOutputBuffer( 136 Buffer ResurrectLastOutputBuffer(const gfx::Size& dimensions,
114 const gfx::Size& dimensions, 137 media::VideoPixelFormat format,
115 media::VideoPixelFormat format, 138 media::VideoPixelStorage storage,
116 media::VideoPixelStorage storage, 139 int frame_feedback_id) override {
117 int frame_feedback_id) override { 140 return Buffer();
118 return std::unique_ptr<Buffer>();
119 } 141 }
120 double GetBufferPoolUtilization() const override { return 0.0; } 142 double GetBufferPoolUtilization() const override { return 0.0; }
121 143
122 private: 144 private:
123 base::Callback<void(const VideoCaptureFormat&)> frame_cb_; 145 base::Callback<void(const VideoCaptureFormat&)> frame_cb_;
124 }; 146 };
125 147
126 class DeviceEnumerationListener 148 class DeviceEnumerationListener
127 : public base::RefCounted<DeviceEnumerationListener> { 149 : public base::RefCounted<DeviceEnumerationListener> {
128 public: 150 public:
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 INSTANTIATE_TEST_CASE_P( 498 INSTANTIATE_TEST_CASE_P(
477 , 499 ,
478 FakeVideoCaptureDeviceCommandLineTest, 500 FakeVideoCaptureDeviceCommandLineTest,
479 Values(CommandLineTestData{"fps=-1", 5, 1u}, 501 Values(CommandLineTestData{"fps=-1", 5, 1u},
480 CommandLineTestData{"fps=29.97, device-count=1", 29.97f, 1u}, 502 CommandLineTestData{"fps=29.97, device-count=1", 29.97f, 1u},
481 CommandLineTestData{"fps=60, device-count=2", 60, 2u}, 503 CommandLineTestData{"fps=60, device-count=2", 60, 2u},
482 CommandLineTestData{"fps=1000, device-count=-1", 60, 1u}, 504 CommandLineTestData{"fps=1000, device-count=-1", 60, 1u},
483 CommandLineTestData{"device-count=2", 20, 2u}, 505 CommandLineTestData{"device-count=2", 20, 2u},
484 CommandLineTestData{"device-count=0", 20, 1u})); 506 CommandLineTestData{"device-count=0", 20, 1u}));
485 }; // namespace media 507 }; // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698