We’ve implemented this class:
public class ZoomRawAudioVirtualSource implements IZoomSDKVirtualAudioMicEvent
which gives back IZoomSDKAudioRawDataSender
public void onMicInitialize(IZoomSDKAudioRawDataSender iZoomSDKAudioRawDataSender)
we use this object to send RawAudioBuffers to a zoom meeting. This is how we Initialize everything:
audioSource = new ZoomRawAudioVirtualSource(); rawAudioDataHelper = new ZoomSDKAudioRawDataHelper(); rawAudioDataHelper.setExternalAudioSource(audioSource);
When we call this function:
rawAudioDataHelper.setExternalAudioSource(audioSource) It starts sending the audio buffers to the Zoom meeting, but the issue we’re facing is that it keeps sending the audio buffer but it seems like Zoom, somewhere internally, isn’t accepting these audio buffers. To fix the issue, a user has to mute and then unmute and then the problem is fixed (but this is not practical nor called for, for obvious reasons…).
Once you’ve muted/unmuted as a user, if you go back to the mic state you stop using the audio raw buffers and start using the mic using this function:
rawAudioDataHelper.setExternalAudioSource(null); You will not face the same issue again. Which tells us that something in the SDK doesn’t initialize correctly. Are we supposed to wait for some call back when we change to external audio source
How should we create this mechanism where we can switch between RawAudio and MicInput at runtime?