2
附件是一個CFDictionaryRef。我如何在Swift中完成(_bridge NSDictionary *)功能?如何將其轉換爲Swift?
CIImage *ciImage = [[CIImage alloc] initWithCVPixelBuffer:pixelBuffer
options:(__bridge NSDictionary *)attachments];
UPDATE
這裏是完整的代碼段我曾嘗試創建CIImage。
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
var pixelBuffer:CVPixelBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer)
var attachmentMode = CMAttachmentMode(kCMAttachmentMode_ShouldPropagate)
var attachments = CMCopyDictionaryOfAttachments(kCFAllocatorDefault, sampleBuffer, attachmentMode)
var ciImage:CIImage = CIImage(CVPixelBuffer: pixelBuffer, options: attachments)
}
ANSWER
@ NobodyNada的答案是正確的,但因爲附件是一個「非託管」 CFDictionary你必須採取的字典unretainedValue以清除錯誤。正確的答案是:
var ciImage:CIImage = CIImage(CVPixelBuffer: pixelBuffer, options: attachments.takeUnretainedValue())
您好!哈哈......當我使用你提供的代碼時,我得到了錯誤「額外的參數」選項「在通話中」。我認爲這可能是因爲附件是一個非託管的CFDictionaryRef。這就是爲什麼我認爲我需要某種橋接功能 – user3353890 2015-03-30 22:37:14
我已經包括瞭如何在我的原始問題中創建附件 – user3353890 2015-03-30 22:37:53
好吧,我修好了! – NobodyNada 2015-03-30 22:48:04