in AmazonChimeSDKDemo/AmazonChimeSDKDemo/utils/CoreImageVideoProcessor.swift [32:61]
func onVideoFrameReceived(frame: VideoFrame) {
guard let pixelBuffer = frame.buffer as? VideoFramePixelBuffer else {
return
}
let inputImage = CIImage(cvImageBuffer: pixelBuffer.pixelBuffer)
let outputImage = inputImage.applyingFilter("CISepiaTone", parameters: [:])
if bufferPool == nil || frame.width != bufferPoolWidth || frame.height != bufferPoolHeight {
updateBufferPool(newWidth: frame.width, newHeight: frame.height)
}
guard let bufferPool = bufferPool else {
return
}
var outputBuffer: CVPixelBuffer?
CVPixelBufferPoolCreatePixelBuffer(nil, bufferPool, &outputBuffer)
guard let validOutputBuffer = outputBuffer else {
return
}
context.render(outputImage, to: validOutputBuffer)
let processedFrame = VideoFrame(timestampNs: frame.timestampNs,
rotation: frame.rotation,
buffer: VideoFramePixelBuffer(pixelBuffer: validOutputBuffer))
for sink in sinks {
(sink as? VideoSink)?.onVideoFrameReceived(frame: processedFrame)
}
}