OLD | NEW |
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 Loading... |
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 |
OLD | NEW |