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

Side by Side 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, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/video_capture/receiver_mojo_to_media_adapter.h" 5 #include "services/video_capture/receiver_mojo_to_media_adapter.h"
6 6
7 #include "mojo/public/cpp/bindings/strong_binding.h" 7 #include "mojo/public/cpp/bindings/strong_binding.h"
8 8
9 namespace { 9 namespace {
10 10
11 class ScopedAccessPermissionMediaToMojoAdapter 11 class ScopedAccessPermissionMediaToMojoAdapter
12 : public video_capture::mojom::ScopedAccessPermission { 12 : public video_capture::mojom::ScopedAccessPermission {
13 public: 13 public:
14 ScopedAccessPermissionMediaToMojoAdapter( 14 ScopedAccessPermissionMediaToMojoAdapter(
15 std::unique_ptr< 15 std::unique_ptr<
16 media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission> 16 media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
17 access_permission) 17 access_permission)
18 : access_permission_(std::move(access_permission)) {} 18 : access_permission_(std::move(access_permission)) {}
19 19
20 private: 20 private:
21 std::unique_ptr< 21 std::unique_ptr<
22 media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission> 22 media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
23 access_permission_; 23 access_permission_;
24 }; 24 };
25 25
26 } // anonymous namespace 26 } // anonymous namespace
27 27
28 namespace video_capture { 28 namespace video_capture {
29 29
30 ReceiverOnTaskRunner::ReceiverOnTaskRunner(
31 std::unique_ptr<media::VideoFrameReceiver> receiver,
32 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
33 : receiver_(std::move(receiver)), task_runner_(std::move(task_runner)) {}
34
35 ReceiverOnTaskRunner::~ReceiverOnTaskRunner() {
36 task_runner_->DeleteSoon(FROM_HERE, receiver_.release());
37 }
38
39 // media::VideoFrameReceiver:
40 void ReceiverOnTaskRunner::OnNewBufferHandle(
41 int buffer_id,
42 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer::HandleProvider>
43 handle_provider) {
44 task_runner_->PostTask(
45 FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnNewBufferHandle,
46 base::Unretained(receiver_.get()), buffer_id,
47 base::Passed(&handle_provider)));
48 }
49
50 void ReceiverOnTaskRunner::OnFrameReadyInBuffer(
51 int buffer_id,
52 int frame_feedback_id,
53 std::unique_ptr<
54 media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
55 buffer_read_permission,
56 media::mojom::VideoFrameInfoPtr frame_info) {
57 task_runner_->PostTask(
58 FROM_HERE,
59 base::Bind(&media::VideoFrameReceiver::OnFrameReadyInBuffer,
60 base::Unretained(receiver_.get()), buffer_id,
61 frame_feedback_id, base::Passed(&buffer_read_permission),
62 base::Passed(&frame_info)));
63 }
64
65 void ReceiverOnTaskRunner::OnBufferRetired(int buffer_id) {
66 task_runner_->PostTask(
67 FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnBufferRetired,
68 base::Unretained(receiver_.get()), buffer_id));
69 }
70
71 void ReceiverOnTaskRunner::OnError() {
72 task_runner_->PostTask(FROM_HERE,
73 base::Bind(&media::VideoFrameReceiver::OnError,
74 base::Unretained(receiver_.get())));
75 }
76
77 void ReceiverOnTaskRunner::OnLog(const std::string& message) {
78 task_runner_->PostTask(
79 FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnLog,
80 base::Unretained(receiver_.get()), message));
81 }
82
83 void ReceiverOnTaskRunner::OnStarted() {
84 task_runner_->PostTask(FROM_HERE,
85 base::Bind(&media::VideoFrameReceiver::OnStarted,
86 base::Unretained(receiver_.get())));
87 }
88
89 void ReceiverOnTaskRunner::OnStartedUsingGpuDecode() {
90 task_runner_->PostTask(
91 FROM_HERE, base::Bind(&media::VideoFrameReceiver::OnStartedUsingGpuDecode,
92 base::Unretained(receiver_.get())));
93 }
94
30 ReceiverMojoToMediaAdapter::ReceiverMojoToMediaAdapter( 95 ReceiverMojoToMediaAdapter::ReceiverMojoToMediaAdapter(
31 mojom::ReceiverPtr receiver) 96 mojom::ReceiverPtr receiver)
32 : receiver_(std::move(receiver)) {} 97 : receiver_(std::move(receiver)) {}
33 98
34 ReceiverMojoToMediaAdapter::~ReceiverMojoToMediaAdapter() = default; 99 ReceiverMojoToMediaAdapter::~ReceiverMojoToMediaAdapter() = default;
35 100
101 void ReceiverMojoToMediaAdapter::ResetConnectionErrorHandler() {
102 receiver_.set_connection_error_handler(base::Closure());
103 }
104
36 void ReceiverMojoToMediaAdapter::OnNewBufferHandle( 105 void ReceiverMojoToMediaAdapter::OnNewBufferHandle(
37 int buffer_id, 106 int buffer_id,
38 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer::HandleProvider> 107 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer::HandleProvider>
39 handle_provider) { 108 handle_provider) {
40 receiver_->OnNewBufferHandle( 109 receiver_->OnNewBufferHandle(
41 buffer_id, handle_provider->GetHandleForInterProcessTransit()); 110 buffer_id, handle_provider->GetHandleForInterProcessTransit());
42 } 111 }
43 112
44 void ReceiverMojoToMediaAdapter::OnFrameReadyInBuffer( 113 void ReceiverMojoToMediaAdapter::OnFrameReadyInBuffer(
45 int buffer_id, 114 int buffer_id,
(...skipping 26 matching lines...) Expand all
72 141
73 void ReceiverMojoToMediaAdapter::OnStarted() { 142 void ReceiverMojoToMediaAdapter::OnStarted() {
74 receiver_->OnStarted(); 143 receiver_->OnStarted();
75 } 144 }
76 145
77 void ReceiverMojoToMediaAdapter::OnStartedUsingGpuDecode() { 146 void ReceiverMojoToMediaAdapter::OnStartedUsingGpuDecode() {
78 receiver_->OnStartedUsingGpuDecode(); 147 receiver_->OnStartedUsingGpuDecode();
79 } 148 }
80 149
81 } // namespace video_capture 150 } // namespace video_capture
OLDNEW
« 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