Released: 2026-03-05 Updated: 2026-03-30
Summary: Introduces significant enhancements for meeting room and Pro AV experiences, including more flexible video layout controls, expanded voice command and HDMI sharing support, participant local time display, and Tencent Meeting SIP integration.
Breaking changes
-
Linux builds now require Glibc 2.31 or later. Build environments using an older Glibc version must upgrade before adopting this release.
-
Enhanced smart tag status callback to support smart tag editing restrictions in file
ISmartTagHelper.h.- Added
isEditableparameter to callbackOnSmartTagStatusUpdatedin classISmartTagHelperSink, so existing sink implementations need to update the callback signature.virtual void OnSmartTagStatusUpdated(SmartTagType type, bool enabled, bool isSupported, bool isEditable) = 0;
- Added
Added
-
Added new interfaces and data types to support Pro AV assigned gallery seating in file
IProAVService.h.-
Added enum value
ProAVGalleryDistributionModeAssignedin enumProAVGalleryDistributionMode.enum ProAVGalleryDistributionMode { ProAVGalleryDistributionModeWaterfall = 0, ///<Waterfall: Each page fills up before the next one shows users. (Default) ProAVGalleryDistributionModeRoundRobin = 1, ///<Round-robin: Users are evenly distributed across all pages, up to a max page count. ProAVGalleryDistributionModeAssigned = 2, ///<Assigned: Users are either placed in reserved seats, or are given the first available unreserved seat. }; -
Added structs
ProAVAssignedSeatInfo,ProAVAssignedGalleryInfo,ProAVAssignedSeatStatus, andProAVAssignedGalleryStatus.struct ProAVAssignedSeatInfo { uint32_t index = 0; ///< The seat index position in the gallery. bool isReserved = false; ///< TRUE indicates the seat is reserved for a specific user. std::string email; ///< The email address of the user assigned to this seat (if reserved). std::string name; ///< The display name of the user assigned to this seat (if reserved). }; struct ProAVAssignedGalleryInfo { std::vector<ProAVAssignedSeatInfo> seats; ///< List of seat configurations in the assigned gallery. int64_t meetingId = 0; ///< The meeting ID this configuration applies to. 0 indicates an invalid or unspecified meeting ID. }; struct ProAVAssignedSeatStatus { ProAVAssignedSeatInfo seat; ///< The seat configuration information. std::string userGuid; ///< The GUID of the user currently occupying this seat. Empty if the seat is unoccupied. }; struct ProAVAssignedGalleryStatus { bool fullUpdate = false; ///< TRUE indicates this is a full status update, FALSE indicates partial update. bool configApplied = false; ///< TRUE indicates the assigned gallery configuration has been successfully applied. std::vector<ProAVAssignedSeatStatus> seats; ///< List of seat statuses showing current user occupancy. }; -
Added callbacks
OnProAVNonPersistentAssignedGalleryUpdate,OnProAVPersistentAssignedGalleryUpdate,OnProAVAssignedGalleryStatusUpdate, andOnProAVDeleteAssignedGallerySeatFailed.virtual void OnProAVNonPersistentAssignedGalleryUpdate(const ProAVAssignedGalleryInfo& info) = 0; virtual void OnProAVPersistentAssignedGalleryUpdate(const std::vector<ProAVAssignedGalleryInfo>& infos) = 0; virtual void OnProAVAssignedGalleryStatusUpdate(const ProAVAssignedGalleryStatus& status, const std::vector<uint32_t>& deleteIndices) = 0; virtual void OnProAVDeleteAssignedGallerySeatFailed(const std::vector<uint32_t>& deleteIndices) = 0; -
Added interfaces
SetProAVAssignedGallery,GetProAVPersistentAssignedGalleryInfos,RequestProAVAssignedGalleryStatus, andDeleteProAVAssignedGallerySeat.virtual ZRCSDKError SetProAVAssignedGallery(const ProAVAssignedGalleryInfo& assignedGallery, bool isPersistent) = 0; virtual ZRCSDKError GetProAVPersistentAssignedGalleryInfos(std::vector<ProAVAssignedGalleryInfo>& infos) = 0; virtual ZRCSDKError RequestProAVAssignedGalleryStatus() = 0; virtual ZRCSDKError DeleteProAVAssignedGallerySeat(const std::vector<uint32_t>& deleteIndices) = 0;
-
-
Added new Pro AV layout customization and active-speaker self-view controls in files
ZRCSDKTypes.h,IProAVService.h,IHWIOHelper.h, andINDIHelper.h.-
Added
ProAVLayoutAlignandProAVLayoutSettingsfor Pro AV gallery layout control.enum ProAVLayoutAlign { ProAVLayoutAlignCenter = 0, ///<Tiles are packed towards the center. ProAVLayoutAlignStart = 1, ///<Tiles are packed towards the start of the axis. ProAVLayoutAlignEnd = 2, ///<Tiles are packed towards the end of the axis. ProAVLayoutAlignSpaceBetween = 3, ///<Tiles are evenly distributed with equal space between tiles. ProAVLayoutAlignSpaceEvenly = 4 ///<Tiles are evenly distributed with equal space from edges. }; struct ProAVLayoutSettings { float aspectRatio = 16.0/9.0; ///<Aspect ratio for individual video feeds. Default: 16.0 / 9.0. uint32_t maxTileWidth = 0; ///<Maximum width in pixels. 0 means no fixed width limit. uint32_t maxTileHeight = 0; ///<Maximum height in pixels. 0 means no fixed height limit. ProAVLayoutAlign alignHorizontal = ProAVLayoutAlignCenter; ///<Horizontal alignment of tiles. Default: ProAVLayoutAlignCenter. ProAVLayoutAlign alignVertical = ProAVLayoutAlignCenter; ///<Vertical alignment of rows. Default: ProAVLayoutAlignCenter. uint32_t tileSpacing = 0; ///<Spacing between tiles in pixels. Valid for alignment is Center, Start or End. uint32_t canvasOutsidePaddingLeft = 0; ///<Additional padding between the tiles and the left edge of the canvas. uint32_t canvasOutsidePaddingRight = 0; ///<Additional padding between the tiles and the right edge of the canvas. uint32_t canvasOutsidePaddingTop = 0; ///<Additional padding between the tiles and the top edge of the canvas. uint32_t canvasOutsidePaddingBottom = 0; ///<Additional padding between the tiles and the bottom edge of the canvas. uint32_t canvasBackgroundArgb = 0; ///<Canvas background color, ARGB, 8 bits per channel. Default value: 0x0 (black, opaque). The alpha value is currently ignored and can't be used for root canvas background transparency. Bit representation: (msb) aaaaaaaa|rrrrrrrr|gggggggg|bbbbbbbb (lsb) }; -
Added
layoutSettingstoHWIOVideoAssignmentandNDISource.struct HWIOVideoAssignment { ... ProAVLayoutSettings layoutSettings; ///<Layout settings for the video assignment, see \link ProAVLayoutSettings \endlink struct. }; struct NDISource { ... ProAVLayoutSettings layoutSettings; ///<Layout settings for the NDI source. }; -
Added
isActiveSpeakerSelfViewEnabledtoProAVVideoOverlaySettingsand added interfaceEnableProAVActiveSpeakerSelfViewin classIProAVService.struct ProAVVideoOverlaySettings { ... bool isActiveSpeakerSelfViewEnabled = true; ///<TRUE indicates self view is enabled in active speaker output. }; virtual ZRCSDKError EnableProAVActiveSpeakerSelfView(bool enable) = 0;
-
-
Added voice command status models, callback, and control interfaces in file
ISettingService.h.-
Added enum
VoiceCommandProviderand structsAICVoiceCommandInfoandVoiceCommandStatus.enum VoiceCommandProvider { VoiceCommandProviderNone = 0, ///<Voice command is disabled. VoiceCommandProviderAlexa, ///<Alexa voice command. VoiceCommandProviderSensory, ///<Sensory voice command. VoiceCommandProviderAIC, ///<AIC voice command. }; struct AICVoiceCommandInfo { bool isSessionStarted = false; ///<TRUE indicates AIC voice session started. bool isPlaybackMuted = false; ///<TRUE indicates AIC voice playback muted. }; struct VoiceCommandStatus { VoiceCommandProvider provider = VoiceCommandProviderNone; ///<Current voice command provider. bool enable = false; ///<TRUE indicates voice command enabled. AICVoiceCommandInfo aicVoiceCommandInfo; ///<AIC voice command runtime info. }; -
Added callback
OnUpdateVoiceCommandStatusin classISettingServiceSink.virtual void OnUpdateVoiceCommandStatus(const VoiceCommandStatus& status) = 0; -
Added interfaces
EnableVoiceCommand,CloseAICVoiceCommandSession, andMuteAICVoiceCommandPlaybackin classISettingService.virtual ZRCSDKError EnableVoiceCommand(bool enable) = 0; virtual ZRCSDKError CloseAICVoiceCommandSession() = 0; virtual ZRCSDKError MuteAICVoiceCommandPlayback(bool mute) = 0;
-
-
Added participant local time display support in files
IParticipantHelper.handZRCSDKTypes.h.-
Added callback
OnShowParticipantLocalTimeNotificationin classIParticipantHelperSinkand interfaceShowParticipantLocalTimein classIParticipantHelper.virtual void OnShowParticipantLocalTimeNotification(bool isShowing) = 0; virtual ZRCSDKError ShowParticipantLocalTime(bool show) = 0; -
Added local-time capability fields to
MeetingInfoand participant timezone fields toMeetingParticipant.struct MeetingInfo { ... bool isParticipantLocalTimeEnabled = false; ///<TRUE indicates the meeting supports showing participant local time. bool isShowOnlyDifferentTimezoneEnabled = false; ///<TRUE indicates only show local time for participants in different timezones. }; struct MeetingParticipant { ... int32_t timeZoneOffsetMinutes = 0; ///<Participant's timezone offset in minutes from UTC. bool isSupportDisplayLocalTime = false; ///<TRUE indicates participant supports displaying local time. };
-
-
Added HDMI share resolution and frame rate selection APIs to support 4K local content sharing in file
IMeetingShareHelper.h.-
Added struct
HDMIShareResolutionAndFrameRateOptionand callbackOnHDMIShareResolutionAndFrameRateNotification.struct HDMIShareResolutionAndFrameRateOption { uint32_t type = 0; ///<Resolution and frame rate type identifier. std::string typeDescription; ///<Description of the resolution and frame rate type (e.g., "4K 30fps"). bool isDisabled = false; ///<TRUE indicates this option is currently disabled. }; virtual void OnHDMIShareResolutionAndFrameRateNotification(const std::vector<HDMIShareResolutionAndFrameRateOption>& selectionList, uint32_t selectedType) = 0; -
Added interface
SetHDMIShareResolutionAndFrameRatein classIMeetingShareHelper.virtual ZRCSDKError SetHDMIShareResolutionAndFrameRate(uint32_t type) = 0;
-
-
Added contact signature effective time fields in file
IContactHelper.h.- Added
signatureStartTimestampandsignatureEndTimestampto structContact.struct Contact { ... uint32_t signatureStartTimestamp = 0; ///<Signature start UTC timestamp in seconds. 0 indicates no start time. uint32_t signatureEndTimestamp = 0; ///<Signature end UTC timestamp in seconds. 0 indicates no end time. };
- Added
Changed
- Enhanced SIP room system invite support for Tencent Meeting integration in files
IMeetingService.handZRCSDKTypes.h.-
Added enum value
ThirdPartyMeetingServiceProviderTencentin enumThirdPartyMeetingServiceProvider.ThirdPartyMeetingServiceProviderTencent = 9 ///<Tencent -
Enhanced interface
InviteLegacyRoomSystemWithIpOrE164Numberin classIMeetingServiceto support Tencent Meeting SIP addresses.virtual ZRCSDKError InviteLegacyRoomSystemWithIpOrE164Number(const std::string& ipOrE164Number, RoomSystemProtocolType protocolType, bool cancel) = 0;
-
Deprecated
- Deprecated interface
EnableHDMI60FPSSharein fileIMeetingShareHelper.h. Please useSetHDMIShareResolutionAndFrameRate(uint32_t type)instead.virtual ZRCSDKError EnableHDMI60FPSShare(bool enable) = 0;