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> |