Index: content/renderer/media/video_capture_impl_unittest.cc |
diff --git a/content/renderer/media/video_capture_impl_unittest.cc b/content/renderer/media/video_capture_impl_unittest.cc |
index 6859402a4285af1b115de1e6b2715e142e94009f..5337b1cc234b1974232c72e24654cfe396781b9f 100644 |
--- a/content/renderer/media/video_capture_impl_unittest.cc |
+++ b/content/renderer/media/video_capture_impl_unittest.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/memory/shared_memory.h" |
#include "base/message_loop/message_loop.h" |
#include "content/child/child_process.h" |
#include "content/common/media/video_capture_messages.h" |
@@ -38,7 +39,7 @@ class VideoCaptureImplTest : public ::testing::Test { |
public: |
MockVideoCaptureImpl(const media::VideoCaptureSessionId id, |
VideoCaptureMessageFilter* filter) |
- : VideoCaptureImpl(id, filter) { |
+ : VideoCaptureImpl(id, filter), buffers_received_(0) { |
} |
~MockVideoCaptureImpl() override {} |
@@ -81,7 +82,9 @@ class VideoCaptureImplTest : public ::testing::Test { |
void DeviceReceiveEmptyBuffer(int device_id, |
int buffer_id, |
uint32 sync_point, |
- double consumer_resource_utilization) {} |
+ double consumer_resource_utilization) { |
+ buffers_received_++; |
+ } |
void DeviceGetSupportedFormats(int device_id, |
media::VideoCaptureSessionId session_id) { |
@@ -104,8 +107,13 @@ class VideoCaptureImplTest : public ::testing::Test { |
return capture_params_; |
} |
+ const int GetReceivedBufferCounts() { |
mcasas
2015/08/25 16:43:45
Fits in one line, and it's the method that should
msu.koo
2015/08/26 06:52:48
Done.
|
+ return buffers_received_; |
+ } |
+ |
private: |
media::VideoCaptureParams capture_params_; |
+ int buffers_received_; |
mcasas
2015/08/25 16:43:45
s/int/size_t/ ?
msu.koo
2015/08/26 06:52:48
Done.
|
}; |
VideoCaptureImplTest() { |
@@ -153,6 +161,25 @@ class VideoCaptureImplTest : public ::testing::Test { |
base::Unretained(this))); |
} |
+ void NewBuffer(int buffer_id, const base::SharedMemory& shm) { |
+ video_capture_impl_->OnBufferCreated( |
+ base::SharedMemory::DuplicateHandle(shm.handle()), |
+ shm.mapped_size(), buffer_id); |
+ } |
+ |
+ void BufferReceived(int buffer_id, const gfx::Size& size, |
+ media::VideoPixelFormat pixel_format, |
+ const gpu::MailboxHolder& mailbox_holder) { |
+ video_capture_impl_->OnBufferReceived( |
+ buffer_id, base::TimeTicks::Now(), base::DictionaryValue(), |
+ pixel_format, media::VideoFrame::STORAGE_SHMEM, size, |
+ gfx::Rect(size.width(), size.height()), mailbox_holder); |
mcasas
2015/08/25 16:43:46
gfx::Rect(size) [1]
[1] https://code.google.com/p
msu.koo
2015/08/26 06:52:48
Done.
|
+ } |
+ |
+ void BufferDestroyed(int buffer_id) { |
+ video_capture_impl_->OnBufferDestroyed(buffer_id); |
+ } |
+ |
void StopCapture(int client_id) { |
video_capture_impl_->StopCapture(client_id); |
} |
@@ -282,6 +309,72 @@ TEST_F(VideoCaptureImplTest, AlreadyStarted) { |
params_small_.requested_format.frame_size); |
} |
+TEST_F(VideoCaptureImplTest, I420BufferReceived) { |
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(1); |
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(1); |
+ EXPECT_CALL(*this, OnFrameReady(_, _)).Times(1); |
+ |
+ // Create a fake shared memory for buffer. |
+ base::SharedMemory shm; |
+ size_t i420_frame_size = media::VideoFrame::AllocationSize( |
+ media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size); |
+ ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size)); |
+ |
+ Init(); |
+ StartCapture(0, params_large_); |
+ NewBuffer(0, shm); |
+ BufferReceived(0, params_large_.requested_format.frame_size, |
+ media::PIXEL_FORMAT_I420, gpu::MailboxHolder()); |
+ StopCapture(0); |
+ BufferDestroyed(0); |
+ DeInit(); |
+} |
+ |
+TEST_F(VideoCaptureImplTest, ARGBBufferReceived) { |
mcasas
2015/08/25 16:43:45
Consider making this test and the previous one par
msu.koo
2015/08/26 06:52:48
Done.
|
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(1); |
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(1); |
+ EXPECT_CALL(*this, OnFrameReady(_, _)).Times(1); |
+ |
+ // Create a fake shared memory for buffer. |
+ base::SharedMemory shm; |
+ size_t i420_frame_size = media::VideoFrame::AllocationSize( |
mcasas
2015/08/25 16:43:45
s/i420_frame_size/argb_frame_size/
nit: make it co
msu.koo
2015/08/26 06:52:48
Done.
|
+ media::PIXEL_FORMAT_ARGB, params_large_.requested_format.frame_size); |
+ ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size)); |
+ |
+ Init(); |
+ StartCapture(0, params_large_); |
+ NewBuffer(0, shm); |
+ BufferReceived(0, params_large_.requested_format.frame_size, |
+ media::PIXEL_FORMAT_ARGB, |
+ gpu::MailboxHolder(gpu::Mailbox::Generate(), 0, 0)); |
+ StopCapture(0); |
+ BufferDestroyed(0); |
+ DeInit(); |
+} |
+ |
+TEST_F(VideoCaptureImplTest, BufferReceivedAfterStop) { |
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(1); |
+ EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(1); |
+ EXPECT_CALL(*this, OnFrameReady(_, _)).Times(0); |
+ |
+ // Create a fake shared memory for buffer. |
+ base::SharedMemory shm; |
+ size_t i420_frame_size = media::VideoFrame::AllocationSize( |
+ media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size); |
+ ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size)); |
+ |
+ Init(); |
+ StartCapture(0, params_large_); |
+ NewBuffer(0, shm); |
+ StopCapture(0); |
+ BufferReceived(0, params_large_.requested_format.frame_size, |
+ media::PIXEL_FORMAT_I420, gpu::MailboxHolder()); |
+ BufferDestroyed(0); |
+ DeInit(); |
+ |
+ EXPECT_EQ(this->video_capture_impl_->GetReceivedBufferCounts(), 1); |
+} |
+ |
TEST_F(VideoCaptureImplTest, EndedBeforeStop) { |
EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); |
EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); |