Hi,
I am trying to capture video feeds from all zoom participants via the C++ Meeting SDK.
- Implemented IZoomSDKRendererDelegate and add my capture logic in its
onRawDataFrameReceived
method. - Create one object of the IZoomSDKRendererDelegate implementation:
auto renderDelegate_ = std::make_unique<ZoomRenderDelegate>();
For each participant(loop),
- Create renderer and attach to the common delegate:
ZOOM_SDK_NAMESPACE::createRenderer(&renderer, renderDelegate_.get()
- Subscribe to user’s video:
renderer->subscribe(userId, ZOOM_SDK_NAMESPACE::RAW_DATA_TYPE_VIDEO);
This works and I have frames for all participants. To distinguish them, I am using YUVRawDataI420::GetSourceID
. However, I am not sure how I can attribute a frame to a user. I could not find a mapping between the sourceID and a userId anywhere.
IOW, I am unable to find the userid from onRawDataFrameReceived
when using a shared delegate object as YUVRawDataI420
only contains the sourceID.
Right now, the only other way I can see is to also have separate delegate objects for each renderer (which, I feel, fails the purpose of having the delegate interface). Am I using the delegate concept correctly?