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

Unified Diff: content/browser/renderer_host/media/video_capture_host_unittest.cc

Issue 23551011: From Video Capture, abolish OnFrameInfo and enable resolution changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add assert to vcbp unittest Created 7 years, 2 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: content/browser/renderer_host/media/video_capture_host_unittest.cc
diff --git a/content/browser/renderer_host/media/video_capture_host_unittest.cc b/content/browser/renderer_host/media/video_capture_host_unittest.cc
index 524234182f496bda859b989b7d05c8c3638f9d09..4307e5ff99bc374dd02db3bd96f2584f7e985e87 100644
--- a/content/browser/renderer_host/media/video_capture_host_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_host_unittest.cc
@@ -105,17 +105,19 @@ class MockVideoCaptureHost : public VideoCaptureHost {
MOCK_METHOD4(OnNewBufferCreated,
void(int device_id, base::SharedMemoryHandle handle,
int length, int buffer_id));
- MOCK_METHOD3(OnBufferFilled,
- void(int device_id, int buffer_id, base::Time timestamp));
+ MOCK_METHOD2(OnBufferFreed,
+ void(int device_id, int buffer_id));
+ MOCK_METHOD4(OnBufferFilled,
+ void(int device_id, int buffer_id, base::Time timestamp,
+ const media::VideoCaptureFormat& format));
MOCK_METHOD2(OnStateChanged, void(int device_id, VideoCaptureState state));
- MOCK_METHOD1(OnDeviceInfo, void(int device_id));
// Use class DumpVideo to write I420 video to file.
void SetDumpVideo(bool enable) {
dump_video_ = enable;
}
- void SetReturnReceviedDibs(bool enable) {
+ void SetReturnReceivedDibs(bool enable) {
return_buffers_ = enable;
}
@@ -156,9 +158,9 @@ class MockVideoCaptureHost : public VideoCaptureHost {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureHost, *message)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_NewBuffer, OnNewBufferCreatedDispatch)
+ IPC_MESSAGE_HANDLER(VideoCaptureMsg_FreeBuffer, OnBufferFreedDispatch)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_BufferReady, OnBufferFilledDispatch)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_StateChanged, OnStateChangedDispatch)
- IPC_MESSAGE_HANDLER(VideoCaptureMsg_DeviceInfo, OnDeviceInfoDispatch)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
EXPECT_TRUE(handled);
@@ -178,15 +180,35 @@ class MockVideoCaptureHost : public VideoCaptureHost {
filled_dib_[buffer_id] = dib;
}
- void OnBufferFilledDispatch(int device_id, int buffer_id,
- base::Time timestamp) {
+ void OnBufferFreedDispatch(int device_id, int buffer_id) {
+ OnBufferFreed(device_id, buffer_id);
+
+ std::map<int, base::SharedMemory*>::iterator it =
+ filled_dib_.find(buffer_id);
+ ASSERT_TRUE(it != filled_dib_.end());
+ delete it->second;
+ filled_dib_.erase(it);
+ }
+
+ void OnBufferFilledDispatch(int device_id,
+ int buffer_id,
+ base::Time timestamp,
+ const media::VideoCaptureFormat& frame_format) {
+ base::SharedMemory* dib = filled_dib_[buffer_id];
+ ASSERT_TRUE(dib != NULL);
if (dump_video_) {
- base::SharedMemory* dib = filled_dib_[buffer_id];
- ASSERT_TRUE(dib != NULL);
+ if (!format_.IsValid()) {
+ dumper_.StartDump(frame_format.width, frame_format.height);
+ format_ = frame_format;
+ }
+ ASSERT_EQ(format_.width, frame_format.width)
+ << "Dump format does not handle variable resolution.";
+ ASSERT_EQ(format_.height, frame_format.height)
+ << "Dump format does not handle variable resolution.";;
dumper_.NewVideoFrame(dib->memory());
}
- OnBufferFilled(device_id, buffer_id, timestamp);
+ OnBufferFilled(device_id, buffer_id, timestamp, frame_format);
if (return_buffers_) {
VideoCaptureHost::OnReceiveEmptyBuffer(device_id, buffer_id);
}
@@ -196,17 +218,10 @@ class MockVideoCaptureHost : public VideoCaptureHost {
OnStateChanged(device_id, state);
}
- void OnDeviceInfoDispatch(int device_id,
- media::VideoCaptureParams params) {
- if (dump_video_) {
- dumper_.StartDump(params.width, params.height);
- }
- OnDeviceInfo(device_id);
- }
-
std::map<int, base::SharedMemory*> filled_dib_;
bool return_buffers_;
bool dump_video_;
+ media::VideoCaptureFormat format_;
DumpVideo dumper_;
};
@@ -321,20 +336,11 @@ class VideoCaptureHostTest : public testing::Test {
protected:
void StartCapture() {
- InSequence s;
- // 1. First - get info about the new resolution
- EXPECT_CALL(*host_, OnDeviceInfo(kDeviceId));
-
- // 2. Change state to started
- EXPECT_CALL(*host_, OnStateChanged(kDeviceId, VIDEO_CAPTURE_STATE_STARTED));
-
- // 3. Newly created buffers will arrive.
EXPECT_CALL(*host_, OnNewBufferCreated(kDeviceId, _, _, _))
.Times(AnyNumber()).WillRepeatedly(Return());
- // 4. First filled buffer will arrive.
base::RunLoop run_loop;
- EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _))
+ EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _, _))
.Times(AnyNumber()).WillOnce(ExitMessageLoop(
message_loop_, run_loop.QuitClosure()));
@@ -366,15 +372,11 @@ class VideoCaptureHostTest : public testing::Test {
#ifdef DUMP_VIDEO
void CaptureAndDumpVideo(int width, int height, int frame_rate) {
InSequence s;
- // 1. First - get info about the new resolution
- EXPECT_CALL(*host_, OnDeviceInfo(kDeviceId));
-
- // 2. Change state to started
- EXPECT_CALL(*host_, OnStateChanged(kDeviceId, VIDEO_CAPTURE_STATE_STARTED));
+ EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _))
+ .Times(AnyNumber()).WillRepeatedly(Return());
- // 3. First filled buffer will arrive.
base::RunLoop run_loop;
- EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _))
+ EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _, _))
.Times(AnyNumber())
.WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure()));
@@ -395,19 +397,19 @@ class VideoCaptureHostTest : public testing::Test {
.WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure()));
host_->OnStopCapture(kDeviceId);
- host_->SetReturnReceviedDibs(true);
+ host_->SetReturnReceivedDibs(true);
host_->ReturnReceivedDibs(kDeviceId);
run_loop.Run();
- host_->SetReturnReceviedDibs(false);
+ host_->SetReturnReceivedDibs(false);
// Expect the VideoCaptureDevice has been stopped
EXPECT_EQ(0u, host_->entries_.size());
}
void NotifyPacketReady() {
base::RunLoop run_loop;
- EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _))
+ EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _, _))
.Times(AnyNumber()).WillOnce(ExitMessageLoop(
message_loop_, run_loop.QuitClosure()))
.RetiresOnSaturation();

Powered by Google App Engine
This is Rietveld 408576698