Raw video with alpha channel
When alpha channel mode is on, the Video SDK for Android delivers a per-pixel alpha mask alongside each raw YUV frame. The mask marks the participant's silhouette, so you can composite their video over your own background (virtual scenes, slide decks, AR overlays) without running your own segmentation model.
On the raw-data side, alpha channel mode delivers a per-pixel mask you read from ZoomVideoSDKVideoRawData. To turn the mode on or off, see Alpha channel mode in Camera controls. The same ZoomVideoSDKVideoHelper toggles apply whether you render with ZoomVideoSDKVideoView or consume raw data.
Read the alpha buffer
When alpha mode is on, the ZoomVideoSDKVideoRawData you receive in onRawDataFrameReceived carries an extra alpha plane in addition to the YUV planes.
override fun onRawDataFrameReceived(rawData: ZoomVideoSDKVideoRawData?) {
rawData ?: return
val yBuffer = rawData.yBuffer
val uBuffer = rawData.uBuffer
val vBuffer = rawData.vBuffer
val alphaBuffer = rawData.alphaBuffer // populated only while alpha mode is on
// Composite: yBuffer/uBuffer/vBuffer for color, alphaBuffer for mask.
}
@Override
public void onRawDataFrameReceived(ZoomVideoSDKVideoRawData rawData) {
if (rawData == null) return;
ByteBuffer yBuffer = rawData.getyBuffer();
ByteBuffer uBuffer = rawData.getuBuffer();
ByteBuffer vBuffer = rawData.getvBuffer();
ByteBuffer alphaBuffer = rawData.getAlphaBuffer(); // populated only while alpha mode is on
// Composite: yBuffer/uBuffer/vBuffer for color, alphaBuffer for mask.
}
The alpha plane is the same width and height as the Y plane. Use the onVideoAlphaChannelStatusChanged callback below as the authoritative signal for whether alpha data is present. Don't rely on null-checking getAlphaBuffer().
Listen for alpha mode changes
When alpha mode is toggled (by your app or by a remote participant who is sending alpha data), the SDK fires onVideoAlphaChannelStatusChanged. Use it to update any UI that depends on whether you're receiving an alpha mask.
override fun onVideoAlphaChannelStatusChanged(isAlphaModeOn: Boolean) {
// Re-render any cached composites — alpha presence has changed.
}
@Override
public void onVideoAlphaChannelStatusChanged(boolean isAlphaModeOn) {
// Re-render any cached composites — alpha presence has changed.
}