2017-07-26 22 views
2

私のAVCaptureOutputがフレームをドロップする理由を理解しようとしています。ドキュメントからSwift - CMSampleBufferからkCMSampleBufferAttachmentKey_DroppedFrameReasonを取得する

kCMSampleBufferDroppedFrameReason_FrameWasLate // "FrameWasLate" 
kCMSampleBufferDroppedFrameReason_OutOfBuffers // "OutOfBuffers" 
kCMSampleBufferDroppedFrameReason_Discontinuity // "Discontinuity" 

captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)デリゲートメソッドでは、私は、フレームがドロップされた理由を説明する添付ファイルに(doc

が含まれていなければならない理由は、これらのCFStringの一つとして期待されているCMSampleBufferを取得しますこの値を取得する方法は実際には分かりません。私はCMGetAttachmentを使用して試してみたが、これは別名UInt32CMAttachmentMode返します

func captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) { 
    var reason: CMAttachmentMode = 0 
    CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, &reason) 
    print("reason \(reason)") // 1 
} 

と私は本当に、一定のCFStringにこのUInt32型を一致させる方法がわからない

答えて

1
私は愚かな右の出力を見ていないた

var mode: CMAttachmentMode = 0 
let reason = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, &) 
print("reason \(reason)") // Optional(OutOfBuffers) 
関連する問題