Video Raw Data Frame Colors Issue

Description
Hello,
As a brief context, I am trying to get video frames from Zoom Video SDK and feed them into Mediapipe Hands model as bitmaps.
However, I noticed that the conversion from the yuv buffers to bitmaps is resulting in grayscale bitmap images with green and pink spots [please find a screenshot below]

the method I’m using for conversion is the following:

fun ZoomVideoSDKVideoRawData.toBitmap(): Bitmap? {
    val width = streamWidth
    val height = streamHeight
    val yuvBytes = ByteArray(width * (height + height / 2))
    val yPlane = getyBuffer()
    val uPlane = getuBuffer()
    val vPlane = getvBuffer()
    // copy Y
    yPlane.get(yuvBytes, 0, width * height)
    // copy U
    var offset = width * height
    uPlane.get(yuvBytes, offset, width * height / 4)
    // copy V
    offset += width * height / 4
    vPlane.get(yuvBytes, offset, width * height / 4)
    // make YUV image
    val yuvImage = YuvImage(yuvBytes, ImageFormat.NV21, width, height, null)
    // convert image to bitmap
    val out = ByteArrayOutputStream()
    yuvImage.compressToJpeg(Rect(0, 0, width, height), 50, out)
    val imageBytes = out.toByteArray()
    val image = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
    // return result
    return image
}

any idea why the colors of the resulting bitmap are corrupted?

Which Android Video SDK version?
Zoom Video SDK 1.2.3 Android

Screenshots

top left is the resulting bitmap

Thank you in advance!

1 Like

I am also interested in this issue. Any updates?