in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/audiovideo/video/backgroundfilter/BackgroundFilterVideoFrameProcessor.kt [121:144]
fun getProcessedFrame(
frame: VideoFrame,
filteredBitmap: Bitmap?,
rgbaData: ByteBuffer
): VideoFrame {
var filteredByteBuffer: ByteBuffer
if (filteredBitmap == null) {
// Display original frame when there is an error getting segmentation mask and/or blurring.
filteredByteBuffer = rgbaData
} else {
filteredByteBuffer =
JniUtil.nativeAllocateByteBuffer(frame.getRotatedWidth() * frame.getRotatedHeight() * channels)
filteredBitmap.copyPixelsToBuffer(filteredByteBuffer)
filteredByteBuffer.position(0)
}
val rgbaBuffer =
VideoFrameRGBABuffer(
frame.getRotatedWidth(),
frame.getRotatedHeight(),
filteredByteBuffer,
frame.getRotatedWidth() * channels,
Runnable { JniUtil.nativeFreeByteBuffer(filteredByteBuffer) })
return VideoFrame(frame.timestampNs, rgbaBuffer)
}