Home | History | Annotate | Download | only in mac
      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.
      4 
      5 // Implementation of a VideoCaptureDeviceFactory class for Mac.
      6 
      7 #ifndef MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_
      8 #define MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_
      9 
     10 #include "media/video/capture/video_capture_device_factory.h"
     11 
     12 namespace media {
     13 
     14 // Extension of VideoCaptureDeviceFactory to create and manipulate Mac devices.
     15 class MEDIA_EXPORT VideoCaptureDeviceFactoryMac :
     16     public VideoCaptureDeviceFactory {
     17  public:
     18   static bool PlatformSupportsAVFoundation();
     19 
     20   explicit VideoCaptureDeviceFactoryMac(
     21       scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
     22   virtual ~VideoCaptureDeviceFactoryMac();
     23 
     24   virtual scoped_ptr<VideoCaptureDevice> Create(
     25       const VideoCaptureDevice::Name& device_name) OVERRIDE;
     26   virtual void GetDeviceNames(VideoCaptureDevice::Names* device_names) OVERRIDE;
     27   virtual void EnumerateDeviceNames(const base::Callback<
     28       void(scoped_ptr<media::VideoCaptureDevice::Names>)>& callback) OVERRIDE;
     29   virtual void GetDeviceSupportedFormats(
     30       const VideoCaptureDevice::Name& device,
     31       VideoCaptureFormats* supported_formats) OVERRIDE;
     32 
     33  private:
     34   // Cache of |ui_task_runner| for enumerating devices there for QTKit.
     35   scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
     36 
     37   DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceFactoryMac);
     38 };
     39 
     40 }  // namespace media
     41 
     42 #endif  // MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_DEVICE_FACTORY_MAC_H_
     43