Index: content/renderer/media/video_capture_impl.cc |
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc |
index da30a52b43d292f041ac867694e693cb78a3ccc2..b7d195d499b3fa3cdbcebc34916febde73603233 100644 |
--- a/content/renderer/media/video_capture_impl.cc |
+++ b/content/renderer/media/video_capture_impl.cc |
@@ -42,11 +42,9 @@ int VideoCaptureImpl::CaptureFrameRate() { |
VideoCaptureImpl::VideoCaptureImpl( |
const media::VideoCaptureSessionId session_id, |
- base::MessageLoopProxy* capture_message_loop_proxy, |
VideoCaptureMessageFilter* filter) |
: VideoCapture(), |
message_filter_(filter), |
- capture_message_loop_proxy_(capture_message_loop_proxy), |
io_message_loop_proxy_(ChildProcess::current()->io_message_loop_proxy()), |
device_id_(0), |
session_id_(session_id), |
@@ -59,90 +57,62 @@ VideoCaptureImpl::VideoCaptureImpl( |
VideoCaptureImpl::~VideoCaptureImpl() {} |
void VideoCaptureImpl::Init() { |
- if (!io_message_loop_proxy_->BelongsToCurrentThread()) { |
- io_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::AddDelegateOnIOThread, |
- base::Unretained(this))); |
- } else { |
- AddDelegateOnIOThread(); |
- } |
+ io_message_loop_proxy_->PostTask(FROM_HERE, |
+ base::Bind(&VideoCaptureImpl::InitOnIOThread, |
+ base::Unretained(this))); |
} |
-void VideoCaptureImpl::DeInit(base::Closure task) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoDeInitOnCaptureThread, |
- base::Unretained(this), task)); |
+void VideoCaptureImpl::DeInit(base::Closure done_cb) { |
+ io_message_loop_proxy_->PostTask(FROM_HERE, |
+ base::Bind(&VideoCaptureImpl::DeInitOnIOThread, |
+ base::Unretained(this), |
+ done_cb)); |
+} |
+ |
+void VideoCaptureImpl::SuspendCapture(bool suspend) { |
+ io_message_loop_proxy_->PostTask(FROM_HERE, |
+ base::Bind(&VideoCaptureImpl::SuspendCaptureOnIOThread, |
+ base::Unretained(this), |
+ suspend)); |
} |
void VideoCaptureImpl::StartCapture( |
media::VideoCapture::EventHandler* handler, |
const media::VideoCaptureParams& params) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoStartCaptureOnCaptureThread, |
+ io_message_loop_proxy_->PostTask(FROM_HERE, |
+ base::Bind(&VideoCaptureImpl::StartCaptureOnIOThread, |
base::Unretained(this), handler, params)); |
} |
-void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoStopCaptureOnCaptureThread, |
+void VideoCaptureImpl::StopCapture( |
+ media::VideoCapture::EventHandler* handler) { |
+ io_message_loop_proxy_->PostTask(FROM_HERE, |
+ base::Bind(&VideoCaptureImpl::StopCaptureOnIOThread, |
base::Unretained(this), handler)); |
} |
-void VideoCaptureImpl::OnBufferCreated( |
- base::SharedMemoryHandle handle, |
- int length, int buffer_id) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoBufferCreatedOnCaptureThread, |
- base::Unretained(this), handle, length, buffer_id)); |
-} |
- |
-void VideoCaptureImpl::OnBufferDestroyed(int buffer_id) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoBufferDestroyedOnCaptureThread, |
- base::Unretained(this), buffer_id)); |
-} |
- |
-void VideoCaptureImpl::OnBufferReceived( |
- int buffer_id, |
- base::TimeTicks timestamp, |
- const media::VideoCaptureFormat& format) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoBufferReceivedOnCaptureThread, |
- base::Unretained(this), buffer_id, timestamp, format)); |
-} |
- |
-void VideoCaptureImpl::OnStateChanged(VideoCaptureState state) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoStateChangedOnCaptureThread, |
- base::Unretained(this), state)); |
-} |
- |
-void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoDelegateAddedOnCaptureThread, |
- base::Unretained(this), device_id)); |
-} |
- |
-void VideoCaptureImpl::SuspendCapture(bool suspend) { |
- capture_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::DoSuspendCaptureOnCaptureThread, |
- base::Unretained(this), suspend)); |
+void VideoCaptureImpl::InitOnIOThread() { |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
+ message_filter_->AddDelegate(this); |
} |
-void VideoCaptureImpl::DoDeInitOnCaptureThread(base::Closure task) { |
+void VideoCaptureImpl::DeInitOnIOThread(base::Closure done_cb) { |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
if (state_ == VIDEO_CAPTURE_STATE_STARTED) |
Send(new VideoCaptureHostMsg_Stop(device_id_)); |
+ message_filter_->RemoveDelegate(this); |
+ done_cb.Run(); |
+} |
- io_message_loop_proxy_->PostTask(FROM_HERE, |
- base::Bind(&VideoCaptureImpl::RemoveDelegateOnIOThread, |
- base::Unretained(this), task)); |
+void VideoCaptureImpl::SuspendCaptureOnIOThread(bool suspend) { |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
+ suspended_ = suspend; |
} |
-void VideoCaptureImpl::DoStartCaptureOnCaptureThread( |
+void VideoCaptureImpl::StartCaptureOnIOThread( |
media::VideoCapture::EventHandler* handler, |
const media::VideoCaptureParams& params) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
- |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
if (state_ == VIDEO_CAPTURE_STATE_ERROR) { |
handler->OnError(this, 1); |
handler->OnRemoved(this); |
@@ -183,9 +153,9 @@ void VideoCaptureImpl::DoStartCaptureOnCaptureThread( |
} |
} |
-void VideoCaptureImpl::DoStopCaptureOnCaptureThread( |
+void VideoCaptureImpl::StopCaptureOnIOThread( |
media::VideoCapture::EventHandler* handler) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
// A handler can be in only one client list. |
// If this handler is in any client list, we can just remove it from |
@@ -202,10 +172,10 @@ void VideoCaptureImpl::DoStopCaptureOnCaptureThread( |
} |
} |
-void VideoCaptureImpl::DoBufferCreatedOnCaptureThread( |
+void VideoCaptureImpl::OnBufferCreated( |
base::SharedMemoryHandle handle, |
int length, int buffer_id) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
// In case client calls StopCapture before the arrival of created buffer, |
// just close this buffer and return. |
@@ -216,7 +186,7 @@ void VideoCaptureImpl::DoBufferCreatedOnCaptureThread( |
scoped_ptr<base::SharedMemory> shm(new base::SharedMemory(handle, false)); |
if (!shm->Map(length)) { |
- DLOG(ERROR) << "DoBufferCreatedOnCaptureThread: Map() failed."; |
+ DLOG(ERROR) << "OnBufferCreated: Map failed."; |
return; |
} |
@@ -228,8 +198,8 @@ void VideoCaptureImpl::DoBufferCreatedOnCaptureThread( |
DCHECK(inserted); |
} |
-void VideoCaptureImpl::DoBufferDestroyedOnCaptureThread(int buffer_id) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+void VideoCaptureImpl::OnBufferDestroyed(int buffer_id) { |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
ClientBufferMap::iterator iter = client_buffers_.find(buffer_id); |
if (iter == client_buffers_.end()) |
@@ -240,11 +210,11 @@ void VideoCaptureImpl::DoBufferDestroyedOnCaptureThread(int buffer_id) { |
client_buffers_.erase(iter); |
} |
-void VideoCaptureImpl::DoBufferReceivedOnCaptureThread( |
+void VideoCaptureImpl::OnBufferReceived( |
int buffer_id, |
base::TimeTicks timestamp, |
const media::VideoCaptureFormat& format) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_) { |
Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id)); |
@@ -268,25 +238,26 @@ void VideoCaptureImpl::DoBufferReceivedOnCaptureThread( |
buffer->buffer_size, |
buffer->buffer->handle(), |
timestamp - first_frame_timestamp_, |
- media::BindToCurrentLoop(base::Bind( |
- &VideoCaptureImpl::DoClientBufferFinishedOnCaptureThread, |
- weak_this_factory_.GetWeakPtr(), |
- buffer_id, |
- buffer))); |
+ media::BindToCurrentLoop( |
+ base::Bind( |
+ &VideoCaptureImpl::OnClientBufferFinished, |
+ weak_this_factory_.GetWeakPtr(), |
+ buffer_id, |
+ buffer))); |
for (ClientInfo::iterator it = clients_.begin(); it != clients_.end(); ++it) |
it->first->OnFrameReady(this, frame); |
} |
-void VideoCaptureImpl::DoClientBufferFinishedOnCaptureThread( |
+void VideoCaptureImpl::OnClientBufferFinished( |
int buffer_id, |
const scoped_refptr<ClientBuffer>& buffer) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id)); |
} |
-void VideoCaptureImpl::DoStateChangedOnCaptureThread(VideoCaptureState state) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+void VideoCaptureImpl::OnStateChanged(VideoCaptureState state) { |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
switch (state) { |
case VIDEO_CAPTURE_STATE_STARTED: |
@@ -330,9 +301,9 @@ void VideoCaptureImpl::DoStateChangedOnCaptureThread(VideoCaptureState state) { |
} |
} |
-void VideoCaptureImpl::DoDelegateAddedOnCaptureThread(int32 device_id) { |
- DVLOG(1) << "DoDelegateAdded: device_id " << device_id; |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { |
+ DVLOG(1) << "OnDelegateAdded: device_id " << device_id; |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
device_id_ = device_id; |
for (ClientInfo::iterator it = clients_pending_on_filter_.begin(); |
@@ -344,15 +315,8 @@ void VideoCaptureImpl::DoDelegateAddedOnCaptureThread(int32 device_id) { |
} |
} |
-void VideoCaptureImpl::DoSuspendCaptureOnCaptureThread(bool suspend) { |
- DVLOG(1) << "DoSuspendCapture: suspend " << (suspend ? "yes" : "no"); |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
- |
- suspended_ = suspend; |
-} |
- |
void VideoCaptureImpl::StopDevice() { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
if (state_ == VIDEO_CAPTURE_STATE_STARTED) { |
state_ = VIDEO_CAPTURE_STATE_STOPPING; |
@@ -362,7 +326,7 @@ void VideoCaptureImpl::StopDevice() { |
} |
void VideoCaptureImpl::RestartCapture() { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
DCHECK_EQ(state_, VIDEO_CAPTURE_STATE_STOPPED); |
int width = 0; |
@@ -386,24 +350,13 @@ void VideoCaptureImpl::RestartCapture() { |
} |
void VideoCaptureImpl::StartCaptureInternal() { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
DCHECK(device_id_); |
Send(new VideoCaptureHostMsg_Start(device_id_, session_id_, params_)); |
state_ = VIDEO_CAPTURE_STATE_STARTED; |
} |
-void VideoCaptureImpl::AddDelegateOnIOThread() { |
- DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
- message_filter_->AddDelegate(this); |
-} |
- |
-void VideoCaptureImpl::RemoveDelegateOnIOThread(base::Closure task) { |
- DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
- message_filter_->RemoveDelegate(this); |
- capture_message_loop_proxy_->PostTask(FROM_HERE, task); |
-} |
- |
void VideoCaptureImpl::Send(IPC::Message* message) { |
io_message_loop_proxy_->PostTask(FROM_HERE, |
base::Bind(base::IgnoreResult(&VideoCaptureMessageFilter::Send), |
@@ -413,7 +366,7 @@ void VideoCaptureImpl::Send(IPC::Message* message) { |
bool VideoCaptureImpl::RemoveClient( |
media::VideoCapture::EventHandler* handler, |
ClientInfo* clients) { |
- DCHECK(capture_message_loop_proxy_->BelongsToCurrentThread()); |
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); |
bool found = false; |
ClientInfo::iterator it = clients->find(handler); |