Understanding IZoomSDKRendererDelegate

I am trying to capture video feeds from all zoom participants via the C++ Meeting SDK.

  1. Implemented IZoomSDKRendererDelegate and add my capture logic in its onRawDataFrameReceived method.
  2. 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?