1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_ON_TASK_RUNNER_H_ 6 #define MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_ON_TASK_RUNNER_H_ 7 8 #include "media/capture/video/video_frame_receiver.h" 9 10 namespace base { 11 class SingleThreadTaskRunner; 12 } 13 14 namespace media { 15 16 // Decorator for VideoFrameReceiver that forwards all incoming calls to the 17 // given |task_runner|. 18 class CAPTURE_EXPORT VideoFrameReceiverOnTaskRunner 19 : public VideoFrameReceiver { 20 public: 21 explicit VideoFrameReceiverOnTaskRunner( 22 const base::WeakPtr<VideoFrameReceiver>& receiver, 23 scoped_refptr<base::SingleThreadTaskRunner> task_runner); 24 ~VideoFrameReceiverOnTaskRunner() override; 25 26 void OnNewBuffer(int32_t buffer_id, 27 media::mojom::VideoBufferHandlePtr buffer_handle) override; 28 void OnFrameReadyInBuffer( 29 int buffer_id, 30 int frame_feedback_id, 31 std::unique_ptr< 32 VideoCaptureDevice::Client::Buffer::ScopedAccessPermission> 33 buffer_read_permission, 34 mojom::VideoFrameInfoPtr frame_info) override; 35 void OnBufferRetired(int buffer_id) override; 36 void OnError(VideoCaptureError error) override; 37 void OnFrameDropped(VideoCaptureFrameDropReason reason) override; 38 void OnLog(const std::string& message) override; 39 void OnStarted() override; 40 void OnStartedUsingGpuDecode() override; 41 void OnStopped() override; 42 43 private: 44 const base::WeakPtr<VideoFrameReceiver> receiver_; 45 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 46 }; 47 48 } // namespace media 49 50 #endif // MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_ON_TASK_RUNNER_H_ 51