Skip to content

Instantly share code, notes, and snippets.

@ryondev
Created February 11, 2018 09:49
Show Gist options
  • Select an option

  • Save ryondev/eeb730dbe380b84e1c5eaa8ca19248ad to your computer and use it in GitHub Desktop.

Select an option

Save ryondev/eeb730dbe380b84e1c5eaa8ca19248ad to your computer and use it in GitHub Desktop.
Using to resize the Image Data which from CMSampleBuffer
func resizeImage(with buffer: CMSampleBuffer) {
let pixel = CMSampleBufferGetImageBuffer(buffer)
guard let pixelBuffer = pixel else { return }
CVPixelBufferLockBaseAddress(pixelBuffer, CVPixelBufferLockFlags(rawValue: 0))
let baseAddress = CVPixelBufferGetBaseAddress(pixelBuffer)
let bytesPerRow = CVPixelBufferGetBytesPerRow(pixelBuffer)
var inputBuffer = vImage_Buffer()
inputBuffer.height = inputHeight
inputBuffer.width = inputWidth
inputBuffer.rowBytes = bytesPerRow
inputBuffer.data = baseAddress
let outImg = UnsafeMutablePointer<u_char>.allocate(capacity: Int(4*inputWidth*inputHeight))
var outputBuffer: vImage_Buffer = vImage_Buffer.init(data: outImg, height: inputHeight, width: inputWidth, rowBytes: Int(4*inputWidth))
var err: vImage_Error = vImageScale_ARGB8888(&inputBuffer, &outputBuffer, nil, 0)
guard err != kvImageNoError else {
print("error: \(err)")
return
}
var format = vImage_CGImageFormat.init(bitsPerComponent: 8,
bitsPerPixel: 32,
colorSpace: nil,
bitmapInfo: CGBitmapInfo.init(rawValue: CGImageAlphaInfo.first.rawValue),
version: 0,
decode: nil,
renderingIntent: .defaultIntent)
let destRef = vImageCreateCGImageFromBuffer(&outputBuffer,
&format,
nil,
nil,
vImage_Flags(kvImageNoFlags),
&err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment