| Index: media/capture/video/mac/video_capture_device_factory_mac.mm
 | 
| diff --git a/media/capture/video/mac/video_capture_device_factory_mac.mm b/media/capture/video/mac/video_capture_device_factory_mac.mm
 | 
| index 5d92f7eb12c9b2c6d0d5616090d8e97d54ab9ea7..682cc07beccde996d38502c2f06ecf3d413c6b3e 100644
 | 
| --- a/media/capture/video/mac/video_capture_device_factory_mac.mm
 | 
| +++ b/media/capture/video/mac/video_capture_device_factory_mac.mm
 | 
| @@ -19,15 +19,11 @@
 | 
|  #import "media/capture/video/mac/video_capture_device_avfoundation_mac.h"
 | 
|  #import "media/capture/video/mac/video_capture_device_decklink_mac.h"
 | 
|  #include "media/capture/video/mac/video_capture_device_mac.h"
 | 
| -#import "media/capture/video/mac/video_capture_device_qtkit_mac.h"
 | 
|  
 | 
|  namespace media {
 | 
|  
 | 
| -// In QTKit API, some devices are known to crash if VGA is requested, for them
 | 
| -// HD is the only supported resolution (see http://crbug.com/396812). In the
 | 
| -// AVfoundation case, we skip enumerating them altogether. These devices are
 | 
| -// identified by a characteristic trailing substring of uniqueId. At the moment
 | 
| -// these are just Blackmagic devices.
 | 
| +// Blacklisted devices are identified by a characteristic trailing substring of
 | 
| +// uniqueId. At the moment these are just Blackmagic devices.
 | 
|  const struct NameAndVid {
 | 
|    const char* unique_id_signature;
 | 
|    const int capture_width;
 | 
| @@ -49,45 +45,7 @@ static bool IsDeviceBlacklisted(const VideoCaptureDevice::Name& name) {
 | 
|    return is_device_blacklisted;
 | 
|  }
 | 
|  
 | 
| -static scoped_ptr<media::VideoCaptureDevice::Names>
 | 
| -EnumerateDevicesUsingQTKit() {
 | 
| -  // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/458397 is
 | 
| -  // fixed.
 | 
| -  tracked_objects::ScopedTracker tracking_profile(
 | 
| -      FROM_HERE_WITH_EXPLICIT_FUNCTION(
 | 
| -          "458397 media::EnumerateDevicesUsingQTKit"));
 | 
| -
 | 
| -  scoped_ptr<VideoCaptureDevice::Names> device_names(
 | 
| -      new VideoCaptureDevice::Names());
 | 
| -  NSMutableDictionary* capture_devices =
 | 
| -      [[[NSMutableDictionary alloc] init] autorelease];
 | 
| -  [VideoCaptureDeviceQTKit getDeviceNames:capture_devices];
 | 
| -  for (NSString* key in capture_devices) {
 | 
| -    VideoCaptureDevice::Name name(
 | 
| -        [[[capture_devices valueForKey:key] deviceName] UTF8String],
 | 
| -        [key UTF8String], VideoCaptureDevice::Name::QTKIT);
 | 
| -    if (IsDeviceBlacklisted(name))
 | 
| -      name.set_is_blacklisted(true);
 | 
| -    device_names->push_back(name);
 | 
| -  }
 | 
| -  return device_names;
 | 
| -}
 | 
| -
 | 
| -static void RunDevicesEnumeratedCallback(
 | 
| -    const base::Callback<void(scoped_ptr<media::VideoCaptureDevice::Names>)>&
 | 
| -        callback,
 | 
| -    scoped_ptr<media::VideoCaptureDevice::Names> device_names) {
 | 
| -  // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/458397 is
 | 
| -  // fixed.
 | 
| -  tracked_objects::ScopedTracker tracking_profile(
 | 
| -      FROM_HERE_WITH_EXPLICIT_FUNCTION(
 | 
| -          "458397 media::RunDevicesEnumeratedCallback"));
 | 
| -  callback.Run(std::move(device_names));
 | 
| -}
 | 
| -
 | 
| -VideoCaptureDeviceFactoryMac::VideoCaptureDeviceFactoryMac(
 | 
| -    scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
 | 
| -    : ui_task_runner_(ui_task_runner) {
 | 
| +VideoCaptureDeviceFactoryMac::VideoCaptureDeviceFactoryMac() {
 | 
|    thread_checker_.DetachFromThread();
 | 
|  }
 | 
|  
 | 
| @@ -124,50 +82,37 @@ void VideoCaptureDeviceFactoryMac::GetDeviceNames(
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
|    // Loop through all available devices and add to |device_names|.
 | 
|    NSDictionary* capture_devices;
 | 
| -  if (AVFoundationGlue::IsAVFoundationSupported()) {
 | 
| -    DVLOG(1) << "Enumerating video capture devices using AVFoundation";
 | 
| -    capture_devices = [VideoCaptureDeviceAVFoundation deviceNames];
 | 
| -    // Enumerate all devices found by AVFoundation, translate the info for each
 | 
| -    // to class Name and add it to |device_names|.
 | 
| -    for (NSString* key in capture_devices) {
 | 
| -      int transport_type = [[capture_devices valueForKey:key] transportType];
 | 
| -      // Transport types are defined for Audio devices and reused for video.
 | 
| -      VideoCaptureDevice::Name::TransportType device_transport_type =
 | 
| -          (transport_type == kIOAudioDeviceTransportTypeBuiltIn ||
 | 
| -           transport_type == kIOAudioDeviceTransportTypeUSB)
 | 
| -              ? VideoCaptureDevice::Name::USB_OR_BUILT_IN
 | 
| -              : VideoCaptureDevice::Name::OTHER_TRANSPORT;
 | 
| -      VideoCaptureDevice::Name name(
 | 
| -          [[[capture_devices valueForKey:key] deviceName] UTF8String],
 | 
| -          [key UTF8String], VideoCaptureDevice::Name::AVFOUNDATION,
 | 
| -          device_transport_type);
 | 
| -      if (IsDeviceBlacklisted(name))
 | 
| -        continue;
 | 
| -      device_names->push_back(name);
 | 
| -    }
 | 
| -    // 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();
 | 
| +  DVLOG(1) << "Enumerating video capture devices using AVFoundation";
 | 
| +  capture_devices = [VideoCaptureDeviceAVFoundation deviceNames];
 | 
| +  // Enumerate all devices found by AVFoundation, translate the info for each
 | 
| +  // to class Name and add it to |device_names|.
 | 
| +  for (NSString* key in capture_devices) {
 | 
| +    int transport_type = [[capture_devices valueForKey:key] transportType];
 | 
| +    // Transport types are defined for Audio devices and reused for video.
 | 
| +    VideoCaptureDevice::Name::TransportType device_transport_type =
 | 
| +        (transport_type == kIOAudioDeviceTransportTypeBuiltIn ||
 | 
| +         transport_type == kIOAudioDeviceTransportTypeUSB)
 | 
| +            ? VideoCaptureDevice::Name::USB_OR_BUILT_IN
 | 
| +            : VideoCaptureDevice::Name::OTHER_TRANSPORT;
 | 
| +    VideoCaptureDevice::Name name(
 | 
| +        [[[capture_devices valueForKey:key] deviceName] UTF8String],
 | 
| +        [key UTF8String], VideoCaptureDevice::Name::AVFOUNDATION,
 | 
| +        device_transport_type);
 | 
| +    if (IsDeviceBlacklisted(name))
 | 
| +      continue;
 | 
| +    device_names->push_back(name);
 | 
|    }
 | 
| +  // Also retrieve Blackmagic devices, if present, via DeckLink SDK API.
 | 
| +  VideoCaptureDeviceDeckLinkMac::EnumerateDevices(device_names);
 | 
|  }
 | 
|  
 | 
|  void VideoCaptureDeviceFactoryMac::EnumerateDeviceNames(const base::Callback<
 | 
|      void(scoped_ptr<media::VideoCaptureDevice::Names>)>& callback) {
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
| -  if (AVFoundationGlue::IsAVFoundationSupported()) {
 | 
| -    scoped_ptr<VideoCaptureDevice::Names> device_names(
 | 
| -        new VideoCaptureDevice::Names());
 | 
| -    GetDeviceNames(device_names.get());
 | 
| -    callback.Run(std::move(device_names));
 | 
| -  } else {
 | 
| -    DVLOG(1) << "Enumerating video capture devices using QTKit";
 | 
| -    base::PostTaskAndReplyWithResult(
 | 
| -        ui_task_runner_.get(), FROM_HERE,
 | 
| -        base::Bind(&EnumerateDevicesUsingQTKit),
 | 
| -        base::Bind(&RunDevicesEnumeratedCallback, callback));
 | 
| -  }
 | 
| +  scoped_ptr<VideoCaptureDevice::Names> device_names(
 | 
| +      new VideoCaptureDevice::Names());
 | 
| +  GetDeviceNames(device_names.get());
 | 
| +  callback.Run(std::move(device_names));
 | 
|  }
 | 
|  
 | 
|  void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats(
 | 
| @@ -180,24 +125,6 @@ void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats(
 | 
|      [VideoCaptureDeviceAVFoundation getDevice:device
 | 
|                               supportedFormats:supported_formats];
 | 
|      break;
 | 
| -  case VideoCaptureDevice::Name::QTKIT:
 | 
| -    // Blacklisted cameras provide their own supported format(s), otherwise no
 | 
| -    // such information is provided for QTKit devices.
 | 
| -    if (device.is_blacklisted()) {
 | 
| -      for (size_t i = 0; i < arraysize(kBlacklistedCameras); ++i) {
 | 
| -        if (base::EndsWith(device.id(),
 | 
| -                           kBlacklistedCameras[i].unique_id_signature,
 | 
| -                           base::CompareCase::INSENSITIVE_ASCII)) {
 | 
| -          supported_formats->push_back(media::VideoCaptureFormat(
 | 
| -              gfx::Size(kBlacklistedCameras[i].capture_width,
 | 
| -                        kBlacklistedCameras[i].capture_height),
 | 
| -              kBlacklistedCameras[i].capture_frame_rate,
 | 
| -              media::PIXEL_FORMAT_UYVY));
 | 
| -          break;
 | 
| -        }
 | 
| -      }
 | 
| -    }
 | 
| -    break;
 | 
|    case VideoCaptureDevice::Name::DECKLINK:
 | 
|      DVLOG(1) << "Enumerating video capture capabilities " << device.name();
 | 
|      VideoCaptureDeviceDeckLinkMac::EnumerateDeviceCapabilities(
 | 
| @@ -212,7 +139,7 @@ void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats(
 | 
|  VideoCaptureDeviceFactory*
 | 
|  VideoCaptureDeviceFactory::CreateVideoCaptureDeviceFactory(
 | 
|      scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
 | 
| -  return new VideoCaptureDeviceFactoryMac(ui_task_runner);
 | 
| +  return new VideoCaptureDeviceFactoryMac();
 | 
|  }
 | 
|  
 | 
|  }  // namespace media
 | 
| 
 |