2017-12-27 16 views
0

からCMSampleBufferを作成します。私はARSessionDelegateからCVPixelBufferを得る:はCVPixelBuffer

func session(_ session: ARSession, didUpdate frame: ARFrame) { 
    frame.capturedImage // CVPixelBufferRef 
} 

しかし、私のアプリの他の部分は、(私は変更できないこと)CMSampleBufferを使用しています。

CMSampleBufferは、CVPixelBufferのコンテナです。

CMSampleBufferを作成するためには、私は、この機能を使用することができます。

func CMSampleBufferCreateReadyWithImageBuffer(_ allocator: CFAllocator?, 
              _ imageBuffer: CVImageBuffer, 
              _ formatDescription: CMVideoFormatDescription, 
              _ sampleTiming: UnsafePointer<CMSampleTimingInfo>, 
              _ sBufOut: UnsafeMutablePointer<CMSampleBuffer?>) -> OSStatus 

私にとって唯一欠けているパラメータがsampleTimingです - どのように私はCVPixelBufferからということに抽出することができますか?

答えて

1

sampleTimingは主にpresentationTimeStampが含まれている、あなたは簡単にコードに従うことによって、それを作成することができます。

let scale = CMTimeScale(NSEC_PER_SEC) 
let pts = CMTime(value: CMTimeValue(frame.timestamp * Double(scale)), 
       timescale: scale) 
var timingInfo = CMSampleTimingInfo(duration: kCMTimeInvalid, 
            presentationTimeStamp: pts, 
            decodeTimeStamp: kCMTimeInvalid) 
関連する問題