私は、USB顕微鏡から静止画像をキャプチャし、画像ファイルに保存する前に後処理を行うためのCocoaアプリを持っています。現時点では、私はブロックNSImage
に渡されたCMSampleBufferRef
から取得しようとしている、または私は親しみのあるCocoa APIを使用して操作して保存することができる他の表現をしようとしています。-captureStillImageAsynchronouslyFromConnection:completionHandler:から取得したCMSampleBufferからNSImageを取得するにはどうすればいいですか?
Iは、UIImage
(ため息)にCMSampleBuffer
を変換するために主張する機能AVFoundationドキュメントにimageFromSampleBuffer()
を発見し、NSImage
を返すために適切に修正しました。しかし、CMSampleBufferGetImageBuffer()
への呼び出しがnil
を返すので、この場合は機能しません。ここで
は私の完了ブロックに渡さCMSampleBuffer
を示すログです:
2012-01-21 19:38:36.293 LabCam[1402:cb0f] CMSampleBuffer 0x100335390 retainCount: 1 allocator: 0x7fff8c78620c
invalid = NO
dataReady = YES
makeDataReadyCallback = 0x0
makeDataReadyRefcon = 0x0
buffer-level attachments:
com.apple.cmio.buffer_attachment.discontinuity_flags(P) = 0
com.apple.cmio.buffer_attachment.hosttime(P) = 79631546824089
com.apple.cmio.buffer_attachment.sequence_number(P) = 42
formatDescription = <CMVideoFormatDescription 0x100335220 [0x7fff782fff40]> {
mediaType:'vide'
mediaSubType:'jpeg'
mediaSpecific: {
codecType: 'jpeg' dimensions: 640 x 480
}
extensions: {<CFBasicHash 0x100335160 [0x7fff782fff40]>{type = immutable dict, count = 5,
entries =>
1 : <CFString 0x7fff773dff48 [0x7fff782fff40]>{contents = "Version"} = <CFNumber 0x183 [0x7fff782fff40]>{value = +1, type = kCFNumberSInt32Type}
2 : <CFString 0x7fff773dff68 [0x7fff782fff40]>{contents = "RevisionLevel"} = <CFNumber 0x183 [0x7fff782fff40]>{value = +1, type = kCFNumberSInt32Type}
3 : <CFString 0x7fff7781ab08 [0x7fff782fff40]>{contents = "CVFieldCount"} = <CFNumber 0x183 [0x7fff782fff40]>{value = +1, type = kCFNumberSInt32Type}
4 : <CFString 0x7fff773dfdc8 [0x7fff782fff40]>{contents = "FormatName"} = <CFString 0x7fff76d35fb0 [0x7fff782fff40]>{contents = Photo - JPEG"}
5 : <CFString 0x7fff773dff88 [0x7fff782fff40]>{contents = "Vendor"} = <CFString 0x7fff773dffa8 [0x7fff782fff40]>{contents = "appl"}
}
}
}
sbufToTrackReadiness = 0x0
numSamples = 1
sampleTimingArray[1] = {
{PTS = {2388943236/30000 = 79631.441, rounded}, DTS = {INVALID}, duration = {3698/30000 = 0.123}},
}
sampleSizeArray[1] = {
sampleSize = 55911,
}
dataBuffer = 0x100335300
明らかに、JPEGデータが含まれているように見えますが、どのように私はそれを得るのですか? (好ましくは、関連するメタデータを乗車のために維持する...)
imageFromSampleBuffer()を適切に改訂してNSImageを返す方法を共有することはできますか? –