Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save krossford/3487370172c5ec80b7a7bcc8a398ca47 to your computer and use it in GitHub Desktop.
Save krossford/3487370172c5ec80b7a7bcc8a398ca47 to your computer and use it in GitHub Desktop.
private func createTexture(sampleBuffer: CMSampleBuffer, planeIndex: Int, pixelFormat: MTLPixelFormat) throws -> MTLTexture {
guard let cvImageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
throw MyError.normal
}
let isPlanar = CVPixelBufferIsPlanar(cvImageBuffer)
let width = isPlanar ? CVPixelBufferGetWidthOfPlane(cvImageBuffer, planeIndex) : CVPixelBufferGetWidth(cvImageBuffer)
let height = isPlanar ? CVPixelBufferGetHeightOfPlane(cvImageBuffer, planeIndex) : CVPixelBufferGetHeight(cvImageBuffer)
var cvMetalTexture: CVMetalTexture?
CVMetalTextureCacheCreateTextureFromImage(nil, _textureCache!, cvImageBuffer, nil, pixelFormat, width, height, planeIndex, &cvMetalTexture)
guard let cvMetalTextureUnbound = cvMetalTexture else {
throw MyError.normal
}
return CVMetalTextureGetTexture(cvMetalTextureUnbound)!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment