| Index: content/browser/renderer_host/media/video_capture_device_client.h
|
| diff --git a/content/browser/renderer_host/media/video_capture_device_client.h b/content/browser/renderer_host/media/video_capture_device_client.h
|
| index c5447ca18e74eed9969270fb657a72e2aefd87f6..d80f5d2fce2f67053ed0f39ccaec080050d2723b 100644
|
| --- a/content/browser/renderer_host/media/video_capture_device_client.h
|
| +++ b/content/browser/renderer_host/media/video_capture_device_client.h
|
| @@ -17,19 +17,23 @@
|
| #include "media/capture/video/video_capture_device.h"
|
|
|
| namespace content {
|
| -class VideoCaptureBufferPool;
|
| -class VideoCaptureController;
|
| -class VideoCaptureGpuJpegDecoder;
|
| -
|
| -// Receives events from the VideoCaptureDevice and posts them to a |controller_|
|
| -// on the IO thread. An instance of this class may safely outlive its target
|
| -// VideoCaptureController. This is a shallow class meant to convert incoming
|
| -// frames and holds no significant state.
|
| +class ProducerVideoCaptureBufferPool;
|
| +class VideoFrameReceiver;
|
| +class VideoCaptureJpegDecoder;
|
| +
|
| +using VideoCaptureJpegDecoderFactoryCB =
|
| + base::Callback<std::unique_ptr<VideoCaptureJpegDecoder>()>;
|
| +
|
| +// Implementation of media::VideoCaptureDevice::Client that uses a buffer pool
|
| +// to provide buffers and converts incoming data to the I420 format for
|
| +// consumption by a given VideoFrameReceiver.
|
| //
|
| // Methods of this class may be called from any thread, and in practice will
|
| // often be called on some auxiliary thread depending on the platform and the
|
| // device type; including, for example, the DirectShow thread on Windows, the
|
| // v4l2_thread on Linux, and the UI thread for tab capture.
|
| +// The owner is responsible for making sure that the instance outlives these
|
| +// calls.
|
| //
|
| // It has an internal ref counted TextureWrapHelper class used to wrap incoming
|
| // GpuMemoryBuffers into Texture backed VideoFrames. This class creates and
|
| @@ -40,8 +44,9 @@ class CONTENT_EXPORT VideoCaptureDeviceClient
|
| public base::SupportsWeakPtr<VideoCaptureDeviceClient> {
|
| public:
|
| VideoCaptureDeviceClient(
|
| - const base::WeakPtr<VideoCaptureController>& controller,
|
| - const scoped_refptr<VideoCaptureBufferPool>& buffer_pool);
|
| + std::unique_ptr<VideoFrameReceiver> receiver,
|
| + const scoped_refptr<ProducerVideoCaptureBufferPool>& buffer_pool,
|
| + const VideoCaptureJpegDecoderFactoryCB& jpeg_decoder_factory);
|
| ~VideoCaptureDeviceClient() override;
|
|
|
| // VideoCaptureDevice::Client implementation.
|
| @@ -91,17 +96,17 @@ class CONTENT_EXPORT VideoCaptureDeviceClient
|
| uint8_t** u_plane_data,
|
| uint8_t** v_plane_data);
|
|
|
| - // The controller to which we post events.
|
| - const base::WeakPtr<VideoCaptureController> controller_;
|
| + // The receiver to which we post events.
|
| + const std::unique_ptr<VideoFrameReceiver> receiver_;
|
|
|
| - // Hardware JPEG decoder.
|
| - std::unique_ptr<VideoCaptureGpuJpegDecoder> external_jpeg_decoder_;
|
| + const VideoCaptureJpegDecoderFactoryCB jpeg_decoder_factory_callback_;
|
| + std::unique_ptr<VideoCaptureJpegDecoder> external_jpeg_decoder_;
|
|
|
| // Whether |external_jpeg_decoder_| has been initialized.
|
| bool external_jpeg_decoder_initialized_;
|
|
|
| // The pool of shared-memory buffers used for capturing.
|
| - const scoped_refptr<VideoCaptureBufferPool> buffer_pool_;
|
| + const scoped_refptr<ProducerVideoCaptureBufferPool> buffer_pool_;
|
|
|
| #if DCHECK_IS_ON()
|
| // Counter used to track the number of times consecutive capture buffers are
|
|
|