Added

  • New interface to control the waiting room configuration for the customized user interface.

    • New interfaces in IMeetingWaitingRoomController

      virtual SDKError RequestCustomWaitingRoomData() = 0;
    • New callbacks in IMeetingWaitingRoomEvent

      virtual void onCustomWaitingRoomDataUpdated(CustomWaitingRoomData&
      bData, IWaitingRoomDataDownloadHandler* bHandler) = 0;
    • New interfaces in IWaitingRoomDataDownloadHandler

      virtual bool Retry() = 0;
      virtual void Ignore() = 0;
    • New status and struct

      enum WaitingRoomLayoutType
      {
      WaitingRoomLayoutType_Default,
      WaitingRoomLayoutType_Logo,
      WaitingRoomLayoutType_Video
      };
      enum CustomWaitingRoomDataStatus
      {
      CustomWaitingRoomDataStatus_Init,
      CustomWaitingRoomDataStatus_Downloading,
      CustomWaitingRoomDataStatus_Download_OK,
      CustomWaitingRoomDataStatus_Download_Fail
      };
      struct CustomWaitingRoomData
      {
      const wchar_t* title;
      const wchar_t* description;
      const wchar_t* logo_path;
      const wchar_t* video_path;
      WaitingRoomLayoutType type;
      WaitingRoomCustomizeDataStatus status;
      }CustomWaitingRoomData;
  • New interface to allow non-host SDK participants to manage (start or stop) live streaming.

    • New callbacks in IMeetingLiveStreamCtrlEvent

      virtual void onRawLiveStreamPrivilegeChanged(bool bHasPrivilege) = 0;
      virtual void onRawLiveStreamPrivilegeRequestTimeout() = 0;
      virtual void onUserRawLiveStreamPrivilegeChanged(unsigned int userid, bool bHasPrivilege) = 0;
      virtual void onRawLiveStreamPrivilegeRequested(IRequestRawLiveStreamPrivilegeHandler* handler) = 0;
      virtual void onUserRawLiveStreamingStatusChanged(IList<RawLiveStreamInfo>* liveStreamList) = 0;
    • New interfaces in IMeetingLiveStreamController

      virtual bool IsRawLiveStreamSupported() = 0;
      virtual SDKError CanStartRawLiveStream() = 0;
      virtual SDKError RequestRawLiveStream(const wchar_t* broadcastURL) = 0;
      virtual SDKError RemoveRawLiveStreamPrivilege(unsigned int userid) = 0;
      virtual IList<RawLiveStreamInfo>* GetRawLiveStreamingInfoList() = 0;
      virtual IList<unsigned int>* GetRawLiveStreamPrivilegeUserList() = 0;
    • New interfaces in IUserInfo

      virtual bool IsRawLiveStreaming() = 0;
      virtual bool HasRawLiveStreamPrivilege() = 0;
    • New Class and Struct

      struct RawLiveStreamInfo
      {
      unsigned int userId;///<User ID.
      const wchar_t* broadcastUrl;///<Broadcast URL
      };
      class IRequestRawLiveStreamPrivilegeHandler
      {
      public:
      virtual ~IRequestRawLiveStreamPrivilegeHandler() {};
      virtual const wchar_t* GetRequestId() = 0;
      virtual unsigned int GetRequesterId() = 0;
      virtual const wchar_t* GetRequesterName() = 0;
      virtual const wchar_t* GetBroadcastUrl() = 0;
      virtual SDKError GrantRawLiveStreamPrivilege() = 0;
      virtual SDKError DenyRawLiveStreamPrivilege() = 0;
      };
  • New interface to support 3D avatars in Meeting SDK.

    • New interface in ILipSyncAvatarPreviewHelper

      virtual SDKError SetEvent(ILipsyncAvatarPreviewHelperEvent* pEvent) = 0;
      virtual SDKError SetLipSyncAvatarPreviewParentWnd(HWND hParentWnd, RECT rc =_SDK_TEST_VIDEO_INIT_RECT) = 0;
      virtual SDKError StartLipSyncAvatarPreview() = 0;
      virtual SDKError StopLipSyncAvatarPreview() = 0;
    • New interface in I3DAvatarImageInfo

      virtual bool IsSelected() = 0;
      virtual const wchar_t* GetImageFilePath() = 0;
      virtual const wchar_t* GetImageName() = 0;
      virtual int GetIndex() = 0;
    • New callback in ILipSyncAvatarSettingContextEvent

      virtual void onLipSyncAvatarItemThumbnailsDownloaded() = 0;
      virtual void onLipSyncAvatarItemDataDownloading(int index) = 0;
      virtual void onLipSyncAvatarItemDataDownloaded(bool bSuccess, int index) = 0;
    • New callback in ILipSyncAvatarPreviewHelperEvent

      virtual void OnNoWindowToShowLipsyncPreview() = 0;
    • New interface in ILipSyncAvatarSettingContext

      virtual SDKError SetEvent(ILipSyncAvatarSettingContextEvent* pEvent) = 0;
      virtual bool Is3DAvatarSupportedByDevice() = 0;
      virtual bool IsLipSyncAvatarEnabled() = 0;
      virtual IList<I3DAvatarImageInfo* >* GetLipSyncAvatarImageList() = 0;
      virtual SDKError SetLipsyncAvatarImage(I3DAvatarImageInfo* pImage) = 0;
      virtual ILipSyncAvatarPreviewHelper* GetLipSyncAvatarPreviewHelper() = 0;
    • New interface in IVideoSettingContext

      virtual bool IsSupportLipSyncAvatar() = 0;
      virtual SDKError EnableLipSyncAvatarWhenVideoOff(bool bEnable) = 0;
      virtual bool IsLipSyncAvatarWhenVideoOffEnabled() = 0;
      virtual ILipSyncAvatarSettingContext* GetLipSyncAvatarSettingContext() = 0;
    • New interface in IUserInfo

      virtual bool IsSignLanguageInterpreter() = 0;
    • New callback in I3DAvatarSettingContextEvent

      virtual void on3DAvatarItemThumbnailsDownloaded() = 0;
      virtual void on3DAvatarItemDataDownloading(int index) = 0;
      virtual void on3DAvatarItemDataDownloaded(bool bSuccess, int index) = 0;
    • New interface in I3DAvatarSettingContext 

      virtual SDKError SetEvent(I3DAvatarSettingContextEvent* pEvent) = 0;
      virtual bool Is3DAvatarSupportedByDevice() = 0;
      virtual bool Is3DAvatarEnabled() = 0;
      virtual IList<I3DAvatarImageInfo* >* Get3DAvatarImageList() = 0;
      virtual SDKError Set3DAvatarImage(I3DAvatarImageInfo* pImage) = 0;
      virtual ITestVideoDeviceHelper* GetTestVideoDeviceHelper() = 0;
    • New callback in IVideoFilterSettingContextEvent

      virtual void onVideoFilterItemThumnailsDownloaded() = 0;
      virtual void onVideoFilterItemDataDownloading(ZoomSDKVideoEffectType type, int index) = 0;
      virtual void onVideoFilterItemDataDownloaded(bool bSuccess, ZoomSDKVideoEffectType type, int index) = 0;

  • New interfaces to allow the hardware acceleration setting for screen sharing.

    • New interfaces in IShareSettingContext:

      virtual SDKError EnableHardwareAcceleratedAnnotation(bool bEnable) = 0;
      virtual SDKError sAnnotationHardwareAccelerated(bool& bEnable) = 0;
      virtual SDKError EnableHardwareAcceleratedVideoSharing(bool bEnable) = 0;
      virtual SDKError IsVideoSharingHardwareAccelerated(bool& bEnable) = 0;
  • New interface to support features which allow for sign interpreters, such as American Sign Language (ASL) interpreters, to be defined by the host and pinned to a certain predictable location for all meeting participants.

    • New enum

      enum SignInterpretationStatus
      {
      SignInterpretationStatus_Initial, ///<The initial status
      SignInterpretationStatus_Started, ///<sign interpretation stared.
      SignInterpretationStatus_Stopped,  ///<sign interpretation stopped.
      };
    • New interface in ISignInterpretationLanguageInfo

      virtual const wchar_t* GetSignLanguageID() = 0;
      virtual const wchar_t* GetSignLanguageName() = 0;
    • New interface in ISignInterpreter

      virtual unsigned int GetUserID() = 0;
      virtual const wchar_t* GetSignLanguageID() = 0;
      virtual bool IsAvailable() = 0;
    • New interface in IRequestSignInterpreterToTalkHandler

      virtual SDKError Ignore() = 0;
      virtual SDKError Accept() = 0;
      virtual SDKError Cancel() = 0;
    • New interface in IMeetingSignInterpretationController

      virtual void SetEvent(IMeetingSignInterpretationControllerEvent* event) = 0;
      virtual bool IsSignInterpretationEnabled() = 0;
      virtual SignInterpretationStatus GetSignInterpretationStatus() = 0;
      virtual bool IsSignInterpreter() = 0;
      virtual ISignInterpretationLanguageInfo* GetSignInterpretationLanguageInfoByID(const wchar_t* signLanguageId) = 0;
      virtual IList<ISignInterpretationLanguageInfo*>* GetAvailableSignLanguageInfoList() = 0;
      virtual IList<ISignInterpretationLanguageInfo*>* GetAllSupportedSignLanguageInfoList() = 0;
      virtual IList<ISignInterpreter*>* GetSignInterpreterList() = 0;
      virtual SDKError AddSignInterpreter(unsigned int userID, const wchar_t* signLanguageId) = 0;
      virtual SDKError RemoveSignInterpreter(unsigned int userID) = 0;
      virtual SDKError ModifySignInterpreterLanguage(unsigned int userID, const wchar_t* signLanguageId) = 0;
      virtual bool CanStartSignInterpretation() = 0;
      virtual SDKError StartSignInterpretation() = 0;
      virtual SDKError StopSignInterpretation() = 0;
      virtual SDKError RequestSignLanuageInterpreterToTalk(unsigned int userID, bool allowToTalk) = 0;
      virtual SDKError CanSignLanuageInterpreterTalk(unsigned int userID, bool& canTalk) = 0;
      virtual const wchar_t* GetSignInterpreterAssignedLanID() = 0;
      virtual SDKError JoinSignLanguageChannel(const wchar_t* signLanguageId) = 0;
      virtual SDKError LeaveSignLanguageChannel() = 0;
    • New callback in IMeetingSignInterpretationControllerEvent

      virtual void OnSignInterpretationStatusChanged(SignInterpretationStatus status) = 0;
      virtual void OnSignInterpreterListChanged() = 0;
      virtual void OnSignInterpreterRoleChanged() = 0;
      virtual void OnSignInterpreterLanguageChanged() = 0;
      virtual void OnAvailableSignLanguageListUpdated(IList<ISignInterpretationLanguageInfo*>* pAvailableSignLanguageList) = 0;
      virtual void OnRequestSignInterpreterToTalk(IRequestSignInterpreterToTalkHandler* handler) = 0;
      virtual void OnDisallowSignInterpreterToTalk() = 0;
  • New interfaces for following a meeting presenter's pointer.

    • New interface in IZMMeetingBridgeShareHelper

      virtual ZMMeetingBridgeErrors IsSupportEnableFollowPresenterPointerWhenViewShare(CmmUInt32 userID, CmmBool& bSupport) = 0;


Fixed

  • Issues that occurred when sharing related interfaces when all screens subscribed to the same user. 

  • Issue where the SDK couldn't receive onSharingStatus callback when calling StartSharePureComputerAudio.

  • Issue where, under customize user interface mode, the recording disclaimer didn’t make a distinction between local and cloud recording.

  • Issue where the meeting SDK breakout room behavior is different with the Zoom Client.

  • Issue that occurred on the HideShareButtonOnMeetingU and HideRecordItemOnMeetingUI interfaces.

  • Screen casting issue related to direct share.

  • Issue where, when calling GetLocalRecordingStatus, the SDK didn’t get the status start when turning on automatic local recording of a meeting under the customized user interface mode.

  • Issue where, when the host added themself as an interpreter and started interpreting, meeting participants did not receive callback onInterpreterActiveLanguageChanged in customized user interface mode.

Deprecated

  • Deprecated interfaces in IVideoFilterSettingContextEvent

    virtual void onVideoFilterItemDataDownloaded(ZoomSDKVideoEffectType type, int index) = 0;
    virtual void onVideoFilterItemDataNeedPrepare(ZoomSDKVideoEffectType type, int index) = 0;
    virtual void onVideoFilterItemDataReady(bool bSuccess, ZoomSDKVideoEffectType type, int index) = 0;
  • Removed the implementation of GetMeetingUIType.