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

Unified Diff: services/video_capture/receiver_mojo_to_media_adapter.cc

Issue 2824883005: [Mojo Video Capture] Stop service when last client disconnects. (Closed)
Patch Set: Incorporate suggestions from PatchSet #4 Created 3 years, 8 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
« no previous file with comments | « services/video_capture/receiver_mojo_to_media_adapter.h ('k') | services/video_capture/service_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/video_capture/receiver_mojo_to_media_adapter.cc
diff --git a/services/video_capture/receiver_mojo_to_media_adapter.cc b/services/video_capture/receiver_mojo_to_media_adapter.cc
index 769c3f9a874c7e5743c8f130c8b96ed96c71d989..f3a199d597401e0183626162fc75e5f234ad27c4 100644
--- a/services/video_capture/receiver_mojo_to_media_adapter.cc
+++ b/services/video_capture/receiver_mojo_to_media_adapter.cc
@@ -27,12 +27,81 @@ class ScopedAccessPermissionMediaToMojoAdapter
namespace video_capture {
+ReceiverOnTaskRunner::ReceiverOnTaskRunner(
+ std::unique_ptr<media::VideoFrameReceiver> receiver,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+ : receiver_(std::move(receiver)), task_runner_(std::move(task_runner)) {}
+
+ReceiverOnTaskRunner::~ReceiverOnTaskRunner() {
+ task_runner_->DeleteSoon(FROM_HERE, receiver_.release());
+}
+
+// media::VideoFrameReceiver:
+void ReceiverOnTaskRunner::OnNewBufferHandle(
+ int buffer_id,
+ std::unique_ptr<media::VideoCaptureDevice::Client::Buffer::HandleProvider>
+ handle_provider) {
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnNewBufferHandle,
+ base::Unretained(receiver_.get()), buffer_id,
+ base::Passed(&handle_provider)));
+}
+
+void ReceiverOnTaskRunner::OnFrameReadyInBuffer(
+ int buffer_id,
+ int frame_feedback_id,
+ std::unique_ptr<
+ media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
+ buffer_read_permission,
+ media::mojom::VideoFrameInfoPtr frame_info) {
+ task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&media::VideoFrameReceiver::OnFrameReadyInBuffer,
+ base::Unretained(receiver_.get()), buffer_id,
+ frame_feedback_id, base::Passed(&buffer_read_permission),
+ base::Passed(&frame_info)));
+}
+
+void ReceiverOnTaskRunner::OnBufferRetired(int buffer_id) {
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnBufferRetired,
+ base::Unretained(receiver_.get()), buffer_id));
+}
+
+void ReceiverOnTaskRunner::OnError() {
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&media::VideoFrameReceiver::OnError,
+ base::Unretained(receiver_.get())));
+}
+
+void ReceiverOnTaskRunner::OnLog(const std::string& message) {
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnLog,
+ base::Unretained(receiver_.get()), message));
+}
+
+void ReceiverOnTaskRunner::OnStarted() {
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&media::VideoFrameReceiver::OnStarted,
+ base::Unretained(receiver_.get())));
+}
+
+void ReceiverOnTaskRunner::OnStartedUsingGpuDecode() {
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnStartedUsingGpuDecode,
+ base::Unretained(receiver_.get())));
+}
+
ReceiverMojoToMediaAdapter::ReceiverMojoToMediaAdapter(
mojom::ReceiverPtr receiver)
: receiver_(std::move(receiver)) {}
ReceiverMojoToMediaAdapter::~ReceiverMojoToMediaAdapter() = default;
+void ReceiverMojoToMediaAdapter::ResetConnectionErrorHandler() {
+ receiver_.set_connection_error_handler(base::Closure());
+}
+
void ReceiverMojoToMediaAdapter::OnNewBufferHandle(
int buffer_id,
std::unique_ptr<media::VideoCaptureDevice::Client::Buffer::HandleProvider>
« no previous file with comments | « services/video_capture/receiver_mojo_to_media_adapter.h ('k') | services/video_capture/service_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698