Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / media / video / capture / mac / video_capture_device_factory_mac.mm
index f0efe6b..1fd4ecf 100644 (file)
 #include "base/location.h"
 #include "base/strings/string_util.h"
 #include "base/task_runner_util.h"
-#import "media/video/capture/mac/avfoundation_glue.h"
-#include "media/video/capture/mac/video_capture_device_mac.h"
+#import "media/base/mac/avfoundation_glue.h"
 #import "media/video/capture/mac/video_capture_device_avfoundation_mac.h"
+#include "media/video/capture/mac/video_capture_device_mac.h"
+#import "media/video/capture/mac/video_capture_device_decklink_mac.h"
 #import "media/video/capture/mac/video_capture_device_qtkit_mac.h"
 
 namespace media {
@@ -157,6 +158,9 @@ void VideoCaptureDeviceFactoryMac::GetDeviceNames(
         }
       }
     }
+
+    // Also retrieve Blackmagic devices, if present, via DeckLink SDK API.
+    VideoCaptureDeviceDeckLinkMac::EnumerateDevices(device_names);
   } else {
     // We should not enumerate QTKit devices in Device Thread;
     NOTREACHED();
@@ -173,7 +177,9 @@ void VideoCaptureDeviceFactoryMac::EnumerateDeviceNames(const base::Callback<
     callback.Run(device_names.Pass());
   } else {
     DVLOG(1) << "Enumerating video capture devices using QTKit";
-    base::PostTaskAndReplyWithResult(ui_task_runner_, FROM_HERE,
+    base::PostTaskAndReplyWithResult(
+        ui_task_runner_.get(),
+        FROM_HERE,
         base::Bind(&EnumerateDevicesUsingQTKit),
         base::Bind(&RunDevicesEnumeratedCallback, callback));
   }
@@ -183,11 +189,13 @@ void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats(
     const VideoCaptureDevice::Name& device,
     VideoCaptureFormats* supported_formats) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  if (device.capture_api_type() == VideoCaptureDevice::Name::AVFOUNDATION) {
+  switch (device.capture_api_type()) {
+  case VideoCaptureDevice::Name::AVFOUNDATION:
     DVLOG(1) << "Enumerating video capture capabilities, AVFoundation";
     [VideoCaptureDeviceAVFoundation getDevice:device
                              supportedFormats:supported_formats];
-  } else {
+    break;
+  case VideoCaptureDevice::Name::QTKIT:
     // Blacklisted cameras provide their own supported format(s), otherwise no
     // such information is provided for QTKit.
     if (device.is_blacklisted()) {
@@ -203,6 +211,14 @@ void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats(
         }
       }
     }
+    break;
+  case VideoCaptureDevice::Name::DECKLINK:
+    DVLOG(1) << "Enumerating video capture capabilities " << device.name();
+    VideoCaptureDeviceDeckLinkMac::EnumerateDeviceCapabilities(
+        device, supported_formats);
+    break;
+  default:
+    NOTREACHED();
   }
 }