// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_H_ #define MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_H_ #include <memory> #include "base/functional/callback_helpers.h" #include "media/capture/capture_export.h" #include "media/capture/mojom/video_capture_buffer.mojom.h" #include "media/capture/mojom/video_capture_types.mojom.h" #include "media/capture/video/video_capture_buffer_handle.h" #include "media/capture/video/video_capture_device.h" namespace media { struct CAPTURE_EXPORT ReadyFrameInBuffer { … }; // Adapter for a VideoFrameReceiver to notify once frame consumption is // complete. VideoFrameReceiver requires owning an object that it will destroy // once consumption is complete. This class adapts between that scheme and // running a "done callback" to notify that consumption is complete. The // callback is guaranteed to be run on the thread that the adapter was created // on, since the VideoFrameReceiver may not be destroying the object on the same // thread. class CAPTURE_EXPORT ScopedFrameDoneHelper final : public base::ScopedClosureRunner, public media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission { … }; // Callback interface for VideoCaptureDeviceClient to communicate with its // clients. On some platforms, VideoCaptureDeviceClient calls these methods from // OS or capture driver provided threads which do not have a task runner and // cannot be posted back to. The mostly equivalent interface // video_capture::mojom::VideoFrameHandler cannot be used by // VideoCaptureDeviceClient directly, because creating a // video_capture::mojom::ScopedAccessPermission for passing into // OnFrameReadyInBuffer() requires a thread with a task runner. class CAPTURE_EXPORT VideoFrameReceiver { … }; } // namespace media #endif // MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_H_