/* * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif #import #import "modules/video_capture/objc/device_info_objc.h" #include "modules/video_capture/video_capture_config.h" @implementation DeviceInfoIosObjC + (int)captureDeviceCount { return [[AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo] count]; } + (AVCaptureDevice*)captureDeviceForIndex:(int)index { return [[AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo] objectAtIndex:index]; } + (AVCaptureDevice*)captureDeviceForUniqueId:(NSString*)uniqueId { for (AVCaptureDevice* device in [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]) { if ([uniqueId isEqual:device.uniqueID]) { return device; } } return nil; } + (NSString*)deviceNameForIndex:(int)index { return [DeviceInfoIosObjC captureDeviceForIndex:index].localizedName; } + (NSString*)deviceUniqueIdForIndex:(int)index { return [DeviceInfoIosObjC captureDeviceForIndex:index].uniqueID; } + (NSString*)deviceNameForUniqueId:(NSString*)uniqueId { return [[AVCaptureDevice deviceWithUniqueID:uniqueId] localizedName]; } + (webrtc::VideoCaptureCapability)capabilityForPreset:(NSString*)preset { webrtc::VideoCaptureCapability capability; // TODO(tkchin): Maybe query AVCaptureDevice for supported formats, and // then get the dimensions / frame rate from each supported format if ([preset isEqualToString:AVCaptureSessionPreset352x288]) { capability.width = 352; capability.height = 288; capability.maxFPS = 30; capability.videoType = webrtc::VideoType::kNV12; capability.interlaced = false; } else if ([preset isEqualToString:AVCaptureSessionPreset640x480]) { capability.width = 640; capability.height = 480; capability.maxFPS = 30; capability.videoType = webrtc::VideoType::kNV12; capability.interlaced = false; } else if ([preset isEqualToString:AVCaptureSessionPreset1280x720]) { capability.width = 1280; capability.height = 720; capability.maxFPS = 30; capability.videoType = webrtc::VideoType::kNV12; capability.interlaced = false; } return capability; } @end