I am subscribing to multiple participants using the ZoomVideoSDKRawDataPipe
API to receive raw video data , with the intention of rendering all subscribed users’ video streams into a composite view that is shown in both fullscreen and PiP modes.
Implementation Details:
- For each participant, I create a separate
ZoomVideoSDKRawDataPipe
instance. - I subscribe using:
swift
CopyEdit
let rawDataPipe = user.getVideoPipe()
rawDataPipe?.subscribe(self)
- I conform to
ZoomVideoSDKRawDataPipeDelegate
and expect to receive pixel buffers via:
swift
CopyEdit
func onPixelBuffer(_ pixelBuffer: CVPixelBuffer!, frameInfo: ZoomVideoSDKVideoFrameInfo!)
The Problem:
In PiP mode, I’m only receiving pixel data for the first subscribed participant. All other ZoomVideoSDKRawDataPipe
instances do not invoke their delegate methods, as if they are being ignored or throttled in PiP mode.
What I Need to Achieve:
- Show multiple participants in a composite video layout (e.g., grid or stacked view) in Picture-in-Picture mode.
- Continue receiving pixel buffers for all subscribed users via
ZoomVideoSDKRawDataPipeDelegate
, even after PiP starts. - Maintain custom rendering (I am not using
ZoomVideoSDKVideoCanvas
) and merge the pixel buffers into a shared AVSampleBuffer stream that feeds PiP.
My Questions:
- Is it currently supported to subscribe to and receive multiple
ZoomVideoSDKRawDataPipe
streams in PiP mode? - Is there an internal SDK limitation that restricts
ZoomVideoSDKRawDataPipeDelegate
callbacks to only one stream while in PiP? - Is there a recommended approach to enable multi-user raw data access for rendering in PiP mode?
- If not currently supported, is multi-user raw video support in PiP planned in a future update?
Environment:
- Zoom Video SDK iOS Version: [v1.13.10]
- iOS Version: [e.g., iOS 18.2]
- Device: [e.g., iPhone 15 Pro]
- PiP Enabled: Yes, via Background Modes and CallKit integration
- Rendering: Using custom composite rendering via CoreVideo + AVSampleBufferDisplayLayer