func onVideoFrameReceived()

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)
        }
    }