Released: 2026-06-24 Updated: 2026-07-01
Summary: Breaking changes include typo corrections in ZMVideoSDKSessionASVStatisticInfo property names, external video source format configuration moved to ZoomVideoSDKSessionContext, and audio configuration API renaming for consistency (e.g., isMicOriginalInputEnable to isMicOriginalInputEnabled). Adds a pre-connection flow to accelerate session joins, machine-answer detection for PSTN call-outs, and comprehensive audio QoS statistics including jitter buffer metrics, concealment data, and audio energy measurements. Additional improvements include user failover status tracking, expanded command channel payload limits (now 1024 bytes), sharing window state change notifications, subsession status callbacks, second camera sharing support, and removal of the xmpp_framework.framework dependency.
Breaking Changes
-
Fix typos in the property names of
ZMVideoSDKSessionASVStatisticInfo.- Rename
sendFrameHeightosendFrameHeight. - Rename
sendJittetosendJitter. - Rename
recvFrameHeightorecvFrameHeight. - Rename
recvJittetorecvJitter.
- Rename
-
Support the
I420LimitedandI420Fullcolor ranges for the external video source.-
Add a new property
externalVideoSourceDataFormattoZoomVideoSDKSessionContext@property (nonatomic, assign) ZoomVideoSDKFrameDataFormat externalVideoSourceDataFormat; -
Remove the last parameter
formatfromsendVideoFrame- (void)sendVideoFrame:(char *)frameBuffer width:(NSUInteger)width height:(NSUInteger)height dataLength:(NSUInteger)dataLength rotation:(ZoomVideoSDKVideoRawDataRotation)rotation format:(ZoomVideoSDKFrameDataFormat)format; change to: - (void)sendVideoFrame:(char *)frameBuffer width:(NSUInteger)width height:(NSUInteger)height dataLength:(NSUInteger)dataLength rotation:(ZoomVideoSDKVideoRawDataRotation)rotation;
-
-
Rename several audio configuration APIs for naming consistency.
- (ZMVideoSDKErrors)isMicOriginalInputEnable:(BOOL*)bEnable; change to: - (ZMVideoSDKErrors)isMicOriginalInputEnabled:(BOOL*)bEnable; - (ZMVideoSDKErrors)isHighFidelityMusicModeEnable:(BOOL*)bEnable; change to: - (ZMVideoSDKErrors)isHighFidelityMusicModeEnabled:(BOOL*)bEnable; - (ZMVideoSDKErrors)isEchoCancellationEnable:(BOOL*)bEnable; change to: - (ZMVideoSDKErrors)isEchoCancellationEnabled:(BOOL*)bEnable; - (ZMVideoSDKErrors)isStereoAudioEnable:(BOOL*)bEnable; change to: - (ZMVideoSDKErrors)isStereoAudioEnabled:(BOOL*)bEnable; - (BOOL)isFileTransferEnable; change to: - (BOOL)isFileTransferEnabled; -
Joining or leaving a subsession now triggers the
onSubSessionStatusChanged:subSessionKit:andonSessionLeave:callbacks inZMVideoSDKDelegate(ZMVideoSDKDelegate.h).-
New callbacks in
ZMVideoSDKDelegate@protocol ZMVideoSDKDelegate <NSObject> - (void)onSubSessionStatusChanged:(ZMVideoSDKSubSessionStatus)status subSessionKit:(NSArray<ZMVideoSDKSubSessionKit*>* _Nullable)subSessionKitList; - (void)onSessionLeave:(ZMVideoSDKSessionLeaveReason)reason; @end -
New enumeration values in
ZMVideoSDKSessionLeaveReason(ZMVideoSDKDef.h)typedef enum { /** User leaves current session because joining a subsession. */ ZMVideoSDKSessionLeaveReason_JoinSubsession, /** User leaves current session because returning to the main session. */ ZMVideoSDKSessionLeaveReason_ReturnToMainSession }ZMVideoSDKSessionLeaveReason;
-
Added
-
Add machine-answer detection for PSTN call-out, so the host can tell whether a call was answered by a person or forwarded to voicemail.
-
New enum value in
ZMPhoneStatus(ZMVideoSDKDef.h)typedef enum { // ... /** Call was answered by machine. */ ZMPhoneStatus_AnsweredByMachine, }ZMPhoneStatus; -
New property in
ZMVideoSDKInvitePhoneUserInfo(ZMVideoSDKPhoneHelper.h)@property (nonatomic, assign) BOOL bDetectMachine;
-
-
Add a pre-connection (two-step join) flow to speed up the actual session join.
-
New interfaces in
ZMVideoSDK- (ZMVideoSDKSession* _Nullable)prepareJoin:(ZMVideoSDKSessionContext*)params preJoinParam:(ZMVideoSDKPreJoinParam*)preJoinParam; - (ZMVideoSDKErrors)commitJoin; - (ZMVideoSDKErrors)cancelPrepareJoin; -
New class
ZMVideoSDKPreJoinParaminZMVideoSDK.h@interface ZMVideoSDKPreJoinParam : NSObject @property (nonatomic, assign) NSUInteger timeoutInterval; @end -
New error codes in
ZMVideoSDKErrors(ZMVideoSDKDef.h)ZMVideoSDKErrors_Session_PreJoin_Not_In_Flow, ZMVideoSDKErrors_Session_PreJoin_Already_Commit, ZMVideoSDKErrors_Session_PreJoin_Timeout,
-
-
Support user failover status change.
-
New callback in
ZMVideoSDKDelegate(ZMVideoSDKDelegate.h)- (void)onUserFailoverStatusChanged:(ZoomVideoSDKUser * _Nullable)user inFailover:(BOOL)inFailover; -
New interface in
ZMVideoSDKUser- (BOOL)isInFailover;
-
-
Add a callback to notify when the window state changes during a sharing process.
-
New callback in
ZMVideoSDKDelegate(ZMVideoSDKDelegate.h)- (void)onSharingProcessWindowsStateChanged:(BOOL)isAnyWindowSharing shareHelper:(ZMVideoSDKShareHelper* _Nonnull)shareHelper user:(ZMVideoSDKUser *)user shareAction:(ZMVideoSDKShareAction* _Nullable)shareAction;
-
-
Provide audio QoS statistics data.
-
New property in
ZMVideoSDKQOSSendStatistics(ZMVideoSDKUserHelper.h)/** @brief Gets the total bytes of RTP headers (and padding) sent (send only). */ @property (nonatomic, assign, readonly) NSUInteger headerBytesSent; -
New properties in
ZMVideoSDKQOSRecvStatistics(ZMVideoSDKUserHelper.h)/** @brief Gets the total bytes of RTP headers (and padding) received (receive only). */ @property (nonatomic, assign, readonly) unsigned long long headerBytesReceived; /** @brief Gets the non-FEC packets discarded by NetEQ (receive only, audio only). */ @property (nonatomic, assign, readonly) NSUInteger packetsDiscarded; /** @brief Gets the total number of FEC packets received (receive only, audio only). */ @property (nonatomic, assign, readonly) NSUInteger fecPacketsReceived; /** @brief Gets the FEC packets discarded by NetEQ (receive only, audio only). */ @property (nonatomic, assign, readonly) NSUInteger fecPacketsDiscarded; /** @brief Gets the accumulated current target delay of the jitter buffer, in seconds (receive only, audio only). */ @property (nonatomic, assign, readonly) double jitterBufferTargetDelay; /** @brief Gets the accumulated minimum achievable jitter buffer delay, in seconds (receive only, audio only). */ @property (nonatomic, assign, readonly) double jitterBufferMinimumDelay; /** @brief Gets the total audio samples generated by NetEQ (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long totalSamplesReceived; /** @brief Gets the samples produced by concealment instead of real decode (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long concealedSamples; /** @brief Gets the subset of concealedSamples that are silent (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long silentConcealedSamples; /** @brief Gets the number of concealment events (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long concealmentEvents; /** @brief Gets the samples inserted to slow down playout, i.e. deceleration (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long insertedSamplesForDeceleration; /** @brief Gets the samples removed to speed up playout, i.e. acceleration (receive only, audio only). */ @property (nonatomic, assign, readonly) unsigned long long removedSamplesForAcceleration; /** @brief Gets the total duration of all audio samples received, in seconds (receive only, audio only). */ @property (nonatomic, assign, readonly) double totalSamplesDuration; /** @brief Gets the most recent audio level of the received stream, range [0.0, 1.0] (receive only, audio only). */ @property (nonatomic, assign, readonly) double audioLevel; /** @brief Gets the accumulated audio energy of the received stream (receive only, audio only). */ @property (nonatomic, assign, readonly) double totalAudioEnergy;
-
Changed
- Support sharing a second camera while another camera is being shared.
- Enhance and optimize the AI-friendly documentation.
- Support resuming and pausing preprocess share.
- Increase the command channel payload size limit to 1024.
- Remove the
xmpp_framework.frameworklibrary.
Fixed
- Fixed an issue where the application’s main menu could not be shared when sharing an application with the capture mode set to auto.