Chromium Code Reviews| 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..ab282cdd50057ff06afd059acf64836b50213595 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,39 @@ 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); |
| + CHECK(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); |
| } |
|
tommi (sloooow) - chröme
2016/03/20 22:37:44
looks like the indent is off
perkj_chrome
2016/03/21 09:45:40
git cl format missed does not think this is off. W
|
| // 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(); |
| - } |
| } |
| 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)); |
| - } |
| + CHECK(AVFoundationGlue::IsAVFoundationSupported()); |
| + scoped_ptr<VideoCaptureDevice::Names> device_names( |
| + new VideoCaptureDevice::Names()); |
| + GetDeviceNames(device_names.get()); |
|
tommi (sloooow) - chröme
2016/03/20 22:37:44
out of curiosity, what thread are we running on he
perkj_chrome
2016/03/21 09:45:40
device_task_runnner_ which we changed to be the UI
|
| + callback.Run(std::move(device_names)); |
| } |
| void VideoCaptureDeviceFactoryMac::GetDeviceSupportedFormats( |
| @@ -180,24 +127,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 +141,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 |