Description:
I’m implementing a custom composite video layout using the ZoomVideoSDKRawDataPipe
API to receive raw video data from multiple participants. The goal is to merge these streams into a single video output that works in both fullscreen and Picture-in-Picture (PiP) modes.
Implementation Details:
-
For each participant, I create a separate
ZoomVideoSDKRawDataPipe
instance. -
Subscription code:
let rawDataPipe = user.getVideoPipe()
rawDataPipe?.subscribe(self)
- I conform to
ZoomVideoSDKRawDataPipeDelegate
and expect to receive pixel buffers via:
func onPixelBuffer(_ pixelBuffer: CVPixelBuffer!, frameInfo: ZoomVideoSDKVideoFrameInfo!)
Issue:
-
In full-screen mode, I correctly receive pixel buffers for all subscribed participants.
-
In PiP mode, only the first subscribed participant delivers frames.
-
All other
ZoomVideoSDKRawDataPipe
instances stop invoking their delegate methods once PiP starts — as if the streams are being throttled or ignored.
Goal:
-
Render multiple participants in a composite layout (grid or stacked) inside PiP.
-
Continue receiving raw pixel buffers for all subscribed users in PiP mode.
-
Maintain custom rendering (not using
ZoomVideoSDKVideoCanvas
), combining pixel buffers into a sharedAVSampleBuffer
stream for PiP playback.
Questions:
-
Does the SDK currently support receiving multiple raw video streams in PiP mode via
ZoomVideoSDKRawDataPipe
? -
Is there a known limitation that restricts
ZoomVideoSDKRawDataPipeDelegate
callbacks to only one participant in PiP? -
Is there a recommended workaround to enable multi-user raw data in PiP?
-
If not supported, is multi-participant raw video in PiP planned for a future SDK release?
Environment:
-
Zoom Video SDK iOS: v1.13.10
-
iOS: 18.2
-
Device: iPhone 15 Pro
-
PiP: Enabled via Background Modes + CallKit integration
-
Rendering: Custom composite rendering using CoreVideo +
AVSampleBufferDisplayLayer