Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / media / capture / video / mac / video_capture_device_factory_mac.h
blob07e127b940ee7fb8b7cbe5d8d155c226f1832f90
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"
12 namespace media {
14 // Extension of VideoCaptureDeviceFactory to create and manipulate Mac devices.
15 class MEDIA_EXPORT VideoCaptureDeviceFactoryMac
16 : public VideoCaptureDeviceFactory {
17 public:
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;
33 private:
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);
40 } // namespace media
42 #endif // MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_