Changelog: Meeting SDK - Windows - 7.0.0

Released: 2026-03-25 Updated: 2026-03-27

Visit Changelog

Summary: Breaking changes - behavior for SetBOOption, return type of SetBOOption, change OnStartSendShare to asynchronous; add support for new talkback feature; hide the annotation toolbar when screen sharing in the custom UI.

Breaking changes

  • Change the behavior for the function SetBOOption so that when it is called before a breakout room is created, the function returns an error.

    • Change the return type of function SetBOOption from bool to SDKError.
      virtual SDKError SetBOOption(const BOOption& option) = 0;
      
    • Add new error code.
      enum SDKError
      {
          // ....................................................
          /** Returned when attempting to set breakout room options before any breakout room has been created.*/
          SDKERR_BREAKOUT_ROOM_NOT_CREATED
          // .....................................................
      };
      
  • Adapt the Zoom client change to make the callback OnStartSendShare become asynchronous.

  • CreateAnnotateHelper should not be called immediately after starting a share. Only invoke it after receiving the share start callback, indicating that the sharing session is ready.

Added

  • Support talkback audio feature.

    • New interface in IMeetingService class.

      class IMeetingService
      {
      public:
      // ...................
          virtual IMeetingTalkbackController* GetMeetingTalkbackController() = 0;
      // ...................
      };
      
    • New interface in IUserInfo class.

      class IUserInfo
      {
      // ............................................................
          virtual bool IsSupportTalkback() = 0;
      // ............................................................
      };
      
    • New class IMeetingTalkbackChannel.

      class IMeetingTalkbackChannel
      {
      public:
          virtual ~IMeetingTalkbackChannel() {}
      
          virtual const zchar_t* GetChannelID() = 0;
          virtual IList<unsigned int>* GetUserIDList() = 0;
      };
      
    • New class IMeetingTalkbackCtrlEvent.

      class IMeetingTalkbackCtrlEvent
      {
      public:
          virtual ~IMeetingTalkbackCtrlEvent() {}
          enum TalkbackError
          {
              /**Operation executed successfully. */
              TALKBACK_ERROR_OK,
              /**Permission denied. */
              TALKBACK_ERROR_NOPERMISSION,
              /**The object being operated on already exists, for example: the invited user is already in the channel. */
              TALKBACK_ERROR_ALREADY_EXIST,
              /**The number of channels exceeded the limit. */
              TALKBACK_ERROR_COUNT_OVERFLOW,
              /**The object being operated on does not exist. */
              TALKBACK_ERROR_NOT_EXIST,
              /**Operation denied. */
              TALKBACK_ERROR_REJECTED,
              /**Operation timed out. */
              TALKBACK_ERROR_TIMEOUT,
              /**Unknown reason. */
              TALKBACK_ERROR_UNKNOWN
          };
          virtual void onCreateChannelResponse(const zchar_t* channelID, TalkbackError error) = 0;
          virtual void OnDestoryChannelResponse(const zchar_t* channelID, TalkbackError error) = 0;
          virtual void onChannelUserJoinResponse(const zchar_t* channelID, unsigned int userID, TalkbackError error) = 0;
          virtual void onChannelUserLeaveResponse(const zchar_t* channelID, unsigned int userID, TalkbackError error) = 0;
          virtual void onJoinTalkbackChannel(unsigned int inviterID) = 0;
          virtual void onLeaveTalkbackChannel(unsigned int inviterID) = 0;
      };
      
    • New class IMeetingTalkbackController.

      class IMeetingTalkbackController
      {
      public:
          virtual ~IMeetingTalkbackController() {}
          virtual SDKError SetEvent(IMeetingTalkbackCtrlEvent* pEvent) = 0;
          virtual SDKError CreateChannel(unsigned int count) = 0;
          virtual IMeetingTalkbackChannel* GetChannelByID(const zchar_t* channelID) = 0;
          virtual IList<IMeetingTalkbackChannel*>* GetChannelList() = 0;
      
          virtual SDKError BeginBatchDestroyChannels() = 0;
          virtual SDKError AddChannelToDestroy(const zchar_t* pChanID) = 0;
          virtual SDKError RemoveChannelFromDestroy(const zchar_t* pChanID) = 0;
          virtual SDKError ExecuteBatchDestroyChannels() = 0;
      
          virtual SDKError BeginBatchInviteUsers(const zchar_t* channelID) = 0;
          virtual SDKError AddUserToInvite(unsigned int userID) = 0;
          virtual SDKError RemoveUserFromInvite(unsigned int userID) = 0;
          virtual SDKError ExecuteBatchInviteUsers() = 0;
      
          virtual SDKError BeginBatchRemoveUsers(const zchar_t* channelID) = 0;
          virtual SDKError AddUserToRemove(unsigned int userID) = 0;
          virtual SDKError RemoveUserFromRemoveList(unsigned int userID) = 0;
          virtual SDKError ExecuteBatchRemoveUsers() = 0;
      
          virtual SDKError SendAudioDataToChannel(const zchar_t* channelID, const char* pAudioData, unsigned int dataLength, unsigned int sampleRate, ZoomSDKAudioChannel channel) = 0;
          virtual SDKError SetChannelBackgroundVolume(const zchar_t* channelID, float backgroundVolume) = 0;
          virtual bool IsMeetingSupportTalkBack() = 0;
      };
      
  • Add support for selecting virtual backgrounds in pre-meeting preview.

    • New enum value in RequiredInfoType.

      enum RequiredInfoType
      {
          // ...
          REQUIRED_INFO_TYPE_AVPreview,
      };
      
    • New interface in class IMeetingPasswordAndScreenNameHandler.

      class IMeetingPasswordAndScreenNameHandler
      {
          // ...
          virtual SDKError ConfirmPreview(const zchar_t* screenName, bool videoOn, bool audioOn) = 0;
      };
      

Changed

  • Hide the annotation toolbar when screen sharing in the custom UI.