diff options
author | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-17 00:27:43 +0000 |
---|---|---|
committer | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-17 00:27:43 +0000 |
commit | ad89f79b5d18b63ed71100ecdd316a6392f24c9d (patch) | |
tree | 02d8eefaa9f8ad40e9d9dd1606df24e648df5697 /content | |
parent | ebb1b5894a55befe47b40648762491ad0d4c0b9d (diff) | |
download | chromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.zip chromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.tar.gz chromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.tar.bz2 |
separate interface function and internal task function
fix comparator in VideoCaptureContollerID
BUG=none
TEST=try bots
Review URL: http://codereview.chromium.org/7187002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89428 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
4 files changed, 74 insertions, 47 deletions
diff --git a/content/browser/renderer_host/media/video_capture_controller_event_handler.cc b/content/browser/renderer_host/media/video_capture_controller_event_handler.cc index 61ccc4a..e6edc41 100644 --- a/content/browser/renderer_host/media/video_capture_controller_event_handler.cc +++ b/content/browser/renderer_host/media/video_capture_controller_event_handler.cc @@ -11,5 +11,5 @@ VideoCaptureControllerID::VideoCaptureControllerID(int32 rid, int did) bool VideoCaptureControllerID::operator<( const VideoCaptureControllerID& vc) const { - return this->routing_id < vc.routing_id && this->device_id < vc.device_id; + return this->routing_id < vc.routing_id || this->device_id < vc.device_id; } diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc index 54ccded..8e2d324 100644 --- a/content/renderer/media/video_capture_impl.cc +++ b/content/renderer/media/video_capture_impl.cc @@ -92,12 +92,51 @@ void VideoCaptureImpl::StartCapture( const VideoCaptureCapability& capability) { DCHECK_EQ(capability.raw_type, media::VideoFrame::I420); - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::StartCapture, handler, - capability)); - return; - } + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoStartCapture, handler, + capability)); +} + +void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoStopCapture, handler)); +} + +void VideoCaptureImpl::OnBufferCreated( + base::SharedMemoryHandle handle, + int length, int buffer_id) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoBufferCreated, + handle, length, buffer_id)); +} + +void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoBufferReceived, + buffer_id, timestamp)); +} + +void VideoCaptureImpl::OnStateChanged(const media::VideoCapture::State& state) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoStateChanged, state)); +} + +void VideoCaptureImpl::OnDeviceInfoReceived( + const media::VideoCaptureParams& device_info) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoDeviceInfoReceived, + device_info)); +} + +void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { + ml_proxy_->PostTask(FROM_HERE, + NewRunnableMethod(this, &VideoCaptureImpl::DoDelegateAdded, device_id)); +} + +void VideoCaptureImpl::DoStartCapture( + media::VideoCapture::EventHandler* handler, + const VideoCaptureCapability& capability) { + DCHECK(ml_proxy_->BelongsToCurrentThread()); ClientInfo::iterator it = pending_clients_.find(handler); @@ -164,12 +203,9 @@ void VideoCaptureImpl::StartCapture( StartCaptureInternal(); } -void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::StopCapture, handler)); - return; - } +void VideoCaptureImpl::DoStopCapture( + media::VideoCapture::EventHandler* handler) { + DCHECK(ml_proxy_->BelongsToCurrentThread()); ClientInfo::iterator it = pending_clients_.find(handler); if (it != pending_clients_.end()) { @@ -232,15 +268,10 @@ void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) { } } -void VideoCaptureImpl::OnBufferCreated( +void VideoCaptureImpl::DoBufferCreated( base::SharedMemoryHandle handle, int length, int buffer_id) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::OnBufferCreated, - handle, length, buffer_id)); - return; - } + DCHECK(ml_proxy_->BelongsToCurrentThread()); media::VideoCapture::VideoFrameBuffer* buffer; DCHECK(cached_dibs_.find(buffer_id) == cached_dibs_.end()); @@ -257,13 +288,8 @@ void VideoCaptureImpl::OnBufferCreated( cached_dibs_[buffer_id] = dib_buffer; } -void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::OnBufferReceived, - buffer_id, timestamp)); - return; - } +void VideoCaptureImpl::DoBufferReceived(int buffer_id, base::Time timestamp) { + DCHECK(ml_proxy_->BelongsToCurrentThread()); if (state_ != kStarted) { Send(new VideoCaptureHostMsg_BufferReady(0, device_id_, buffer_id)); @@ -282,13 +308,8 @@ void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) { Send(new VideoCaptureHostMsg_BufferReady(0, device_id_, buffer_id)); } -void VideoCaptureImpl::OnStateChanged( - const media::VideoCapture::State& state) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::OnStateChanged, state)); - return; - } +void VideoCaptureImpl::DoStateChanged(const media::VideoCapture::State& state) { + DCHECK(ml_proxy_->BelongsToCurrentThread()); switch (state) { case media::VideoCapture::kStarted: @@ -321,26 +342,18 @@ void VideoCaptureImpl::OnStateChanged( } } -void VideoCaptureImpl::OnDeviceInfoReceived( +void VideoCaptureImpl::DoDeviceInfoReceived( const media::VideoCaptureParams& device_info) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::OnDeviceInfoReceived, - device_info)); - return; - } + DCHECK(ml_proxy_->BelongsToCurrentThread()); for (ClientInfo::iterator it = clients_.begin(); it != clients_.end(); it++) { it->first->OnDeviceInfoReceived(this, device_info); } } -void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { - if (!ml_proxy_->BelongsToCurrentThread()) { - ml_proxy_->PostTask(FROM_HERE, - NewRunnableMethod(this, &VideoCaptureImpl::OnDelegateAdded, device_id)); - return; - } +void VideoCaptureImpl::DoDelegateAdded(int32 device_id) { + DLOG(INFO) << "DoDelegateAdded: device_id " << device_id; + DCHECK(ml_proxy_->BelongsToCurrentThread()); device_id_ = device_id; for (ClientInfo::iterator it = pending_clients_.begin(); @@ -389,6 +402,7 @@ void VideoCaptureImpl::StartCaptureInternal() { media::VideoCaptureParams params; params.width = width_; params.height = height_; + params.frame_per_second = frame_rate_; params.session_id = session_id_; Send(new VideoCaptureHostMsg_Start(0, device_id_, params)); diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h index 10ee056..b603652 100644 --- a/content/renderer/media/video_capture_impl.h +++ b/content/renderer/media/video_capture_impl.h @@ -71,6 +71,17 @@ class VideoCaptureImpl VideoCaptureMessageFilter* filter); virtual ~VideoCaptureImpl(); + void DoStartCapture(media::VideoCapture::EventHandler* handler, + const VideoCaptureCapability& capability); + void DoStopCapture(media::VideoCapture::EventHandler* handler); + + void DoBufferCreated(base::SharedMemoryHandle handle, + int length, int buffer_id); + void DoBufferReceived(int buffer_id, base::Time timestamp); + void DoStateChanged(const media::VideoCapture::State& state); + void DoDeviceInfoReceived(const media::VideoCaptureParams& device_info); + void DoDelegateAdded(int32 device_id); + void Init(); void DeInit(Task* task); void StopDevice(); diff --git a/content/renderer/media/video_capture_impl_unittest.cc b/content/renderer/media/video_capture_impl_unittest.cc index b513425..8df8b2d 100644 --- a/content/renderer/media/video_capture_impl_unittest.cc +++ b/content/renderer/media/video_capture_impl_unittest.cc @@ -107,9 +107,11 @@ TEST_F(VideoCaptureImplTest, Simple) { .WillOnce(Return()); video_capture_impl_->StartCapture(client.get(), capability); + message_loop_->RunAllPending(); EXPECT_CALL(*client, OnStopped(_)) .WillOnce(Return()); video_capture_impl_->StopCapture(client.get()); + message_loop_->RunAllPending(); } |