| 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
|
|
|