1 // Copyright 2014 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.
5 // Implementation of a VideoCaptureDeviceFactory class for Mac.
7 #ifndef MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_
8 #define MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_
10 #include "media/capture/video/video_capture_device_factory.h"
14 // Extension of VideoCaptureDeviceFactory to create and manipulate Mac devices.
15 class MEDIA_EXPORT VideoCaptureDeviceFactoryMac
16 : public VideoCaptureDeviceFactory
{
18 static bool PlatformSupportsAVFoundation();
20 explicit VideoCaptureDeviceFactoryMac(
21 scoped_refptr
<base::SingleThreadTaskRunner
> ui_task_runner
);
22 ~VideoCaptureDeviceFactoryMac() override
;
24 scoped_ptr
<VideoCaptureDevice
> Create(
25 const VideoCaptureDevice::Name
& device_name
) override
;
26 void GetDeviceNames(VideoCaptureDevice::Names
* device_names
) override
;
27 void EnumerateDeviceNames(const base::Callback
<
28 void(scoped_ptr
<media::VideoCaptureDevice::Names
>)>& callback
) override
;
29 void GetDeviceSupportedFormats(
30 const VideoCaptureDevice::Name
& device
,
31 VideoCaptureFormats
* supported_formats
) override
;
34 // Cache of |ui_task_runner| for enumerating devices there for QTKit.
35 scoped_refptr
<base::SingleThreadTaskRunner
> ui_task_runner_
;
37 DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceFactoryMac
);
42 #endif // MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_