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

Unified Diff: content/renderer/media/video_capture_impl.cc

Issue 2410383002: VideoCapture: more migration IPC-->mojo, part 6 (Closed)
Patch Set: Comment correction Created 4 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/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 ee76c612ed10b6a427e38ece00b1a944d6ecf8b1..c47ee87a5595bbde22079df87a8c3d5a3234c804 100644
--- a/content/renderer/media/video_capture_impl.cc
+++ b/content/renderer/media/video_capture_impl.cc
@@ -23,6 +23,7 @@
#include "media/base/bind_to_current_loop.h"
#include "media/base/limits.h"
#include "media/base/video_frame.h"
+#include "mojo/public/cpp/system/platform_handle.h"
namespace content {
@@ -175,32 +176,6 @@ void VideoCaptureImpl::GetDeviceFormatsInUse(
weak_factory_.GetWeakPtr(), callback));
}
-void VideoCaptureImpl::OnBufferCreated(base::SharedMemoryHandle handle,
- int length,
- int buffer_id) {
- DCHECK(io_task_runner_->BelongsToCurrentThread());
-
- // In case client calls StopCapture before the arrival of created buffer,
- // just close this buffer and return.
- if (state_ != VIDEO_CAPTURE_STATE_STARTED) {
- base::SharedMemory::CloseHandle(handle);
- return;
- }
-
- std::unique_ptr<base::SharedMemory> shm(
- new base::SharedMemory(handle, false));
- if (!shm->Map(length)) {
- DLOG(ERROR) << "OnBufferCreated: Map failed.";
- return;
- }
- const bool inserted =
- client_buffers_.insert(std::make_pair(
- buffer_id,
- new ClientBuffer(std::move(shm), length)))
- .second;
- DCHECK(inserted);
-}
-
void VideoCaptureImpl::OnDelegateAdded(int32_t device_id) {
DVLOG(1) << __func__ << " " << device_id;
DCHECK(io_task_runner_->BelongsToCurrentThread());
@@ -256,10 +231,41 @@ void VideoCaptureImpl::OnStateChanged(mojom::VideoCaptureState state) {
}
}
+void VideoCaptureImpl::OnBufferCreated(int32_t buffer_id,
+ mojo::ScopedSharedBufferHandle handle) {
+ DVLOG(1) << __func__ << " buffer_id: " << buffer_id;
+ DCHECK(io_task_runner_->BelongsToCurrentThread());
+ DCHECK(handle.is_valid());
+
+ if (state_ != VIDEO_CAPTURE_STATE_STARTED)
+ return;
+
+ base::SharedMemoryHandle memory_handle;
+ size_t memory_size = 0;
+ bool read_only_flag = false;
+
+ const MojoResult result = mojo::UnwrapSharedMemoryHandle(
+ std::move(handle), &memory_handle, &memory_size, &read_only_flag);
+ DCHECK_EQ(MOJO_RESULT_OK, result);
+ DCHECK_GT(memory_size, 0u);
+
+ std::unique_ptr<base::SharedMemory> shm(
+ new base::SharedMemory(memory_handle, true /* read_only */));
+ if (!shm->Map(memory_size)) {
+ DLOG(ERROR) << "OnBufferCreated: Map failed.";
+ return;
+ }
+ const bool inserted =
+ client_buffers_
+ .insert(std::make_pair(buffer_id,
+ new ClientBuffer(std::move(shm), memory_size)))
+ .second;
+ DCHECK(inserted);
+}
+
void VideoCaptureImpl::OnBufferReady(int32_t buffer_id,
mojom::VideoFrameInfoPtr info) {
DVLOG(1) << __func__ << " buffer_id: " << buffer_id;
-
DCHECK(io_task_runner_->BelongsToCurrentThread());
DCHECK_EQ(media::PIXEL_FORMAT_I420, info->pixel_format);
DCHECK_EQ(media::PIXEL_STORAGE_CPU, info->storage_type);
@@ -402,11 +408,6 @@ void VideoCaptureImpl::OnDeviceFormatsInUse(
callback.Run(formats_in_use);
}
-void VideoCaptureImpl::Send(IPC::Message* message) {
- DCHECK(io_task_runner_->BelongsToCurrentThread());
- message_filter_->Send(message);
-}
-
bool VideoCaptureImpl::RemoveClient(int client_id, ClientInfoMap* clients) {
DCHECK(io_task_runner_->BelongsToCurrentThread());

Powered by Google App Engine
This is Rietveld 408576698