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