2016-10-12 8 views
1

AVCaptureDeviceをお持ちの場合、関連するUSB​​インターフェイスを取得してIOKit経由でハードウェアにアクセスする方法を教えてください。AVCaptureDeviceのUSBインターフェイス

私はvid & pidで見つけようとしましたが、同じvidの2つのデバイスpidを接続すると動作しません。ここで私はAVCaptureDeviceからVIDとPIDを抽出するために使用するコードです:

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithDeviceType:AVMediaTypeVideo]; 
NSString *modelID = [device modelID]; 

NSRange vidRange = [modelID rangeOfString:@"VendorID_"]; 
int vid = [[modelID substringWithRange:NSMakeRange(vidRange.location + 9, 5)] intValue]; 

NSRange pidRange = [modelID rangeOfString:@"ProductID_"]; 
int vid = [[modelID substringWithRange:NSMakeRange(pidRange.location + 10, 5)] intValue]; 

は、そして私は、一致IOServiceのを検索:

CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName); 
CFNumberRef numberRef; 

numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &vid); 
CFDictionarySetValue(matchingDict, CFSTR(kUSBVendorID), numberRef); 
CFRelease(numberRef); 

numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &pid); 
CFDictionarySetValue(matchingDict, CFSTR(kUSBProductID), numberRef); 
CFRelease(numberRef); 

io_service_t camera = IOServiceGetMatchingService(kIOMasterPortDefault, matchingDict); 

答えて

1

たぶんAVCaptureDevicemodelIDuniqueIDの組み合わせは、あなたがマッチングを見つけることができIOService。 2つのIDのフォーマットは文書化されておらず、トランスポートとメディアタイプに依存しているように見えますが、何かを把握できるはずです。 (私は任意のUSBカメラを持っていないため)ここでUSBオーディオのための暫定的なマッピングは、2つのデバイスに基づいて、次のとおりです。

modelID: USB Headphone Set:0C76:1607 
uniqueID: AppleUSBAudioEngine:Unknown Manufacturer:USB Headphone Set:14200000:2,1, 
    USB Headphone Set: 

    Product ID: 0x1607 
    Vendor ID: 0x0c76 (Solid State System Co., Ltd.) 
Version: 1.00 
Speed: Up to 12 Mb/sec 
    Location ID: 0x14200000/9 
    Current Available (mA): 1000 
    Current Required (mA): 100 
    Extra Operating Current (mA): 0 


uniqueID: AppleUSBAudioEngine:Burr-Brown from TI    :USB Audio CODEC :14200000:2, 
modelID: USB Audio CODEC :08BB:2902 
    USB Audio CODEC : 

    Product ID: 0x2902 
    Vendor ID: 0x08bb (Texas Instruments Japan) 
Version: 1.00 
Speed: Up to 12 Mb/sec 
Manufacturer: Burr-Brown from TI 
    Location ID: 0x14200000/10 
    Current Available (mA): 1000 
    Current Required (mA): 100 
    Extra Operating Current (mA): 0 

USB場合(USBオーディオ)形式は

modelID: name:vendorID:productID 
uniqueID: AppleUSBAudioEngine:Manufacturer or Unknown Manufacturer:location ID:??? 

のようなものですビデオのuniqueIDが似ていると、脆弱で文書化されていない方法ではあるが、productID,vendorIDlocationID(USBポート)の組み合わせで、基本デバイスのハードウェアを一意に識別できるはずです。

関連する問題