Migrating from PlanetKit 4.4 to 5.5
This guide provides detailed steps and considerations for migrating from PlanetKit 4.4 to PlanetKit 5.5.
Migration
Breaking change Add new classes for memory management
- Added memory management classes to manage the lifecycle of pointer-type variables provided by PlanetKit.
- Added
AutoPtr,Optional, andArray.- Changed to use
AutoPtrfor pointer-type variables. - APIs that explicitly provided
nullptrhave been modified to useOptional. - Array variables are now provided as
Arrayinstead of being provided as parameter size and pointer.
- Changed to use
API changes
Changed
-
ICallEventclass 1-to-1 callPrevious PlanetKit 5.5 void OnCallConnect(PlanetKitCall *pPlanetKitCall, SCallConnectedParam *pConnectedParam)void OnConnected(PlanetKitCallPtr pPlanetKitCall, CallConnectedParamPtr pConnectedParam)void OnCallWaitAnswer(PlanetKitCall *pPlanetKitCall)void OnWaitAnswer(PlanetKitCallPtr pPlanetKitCall)void OnCallVerified(PlanetKitCall *pPlanetKitCall, SCallVerifiedParam *pVerifiedParam)void OnVerified(PlanetKitCallPtr pPlanetKitCall, CallVerifiedParamPtr pVerifiedParam)void OnCallPreperationFinished(PlanetKitCall *pPlanetKitCall)void OnPreparationFinished(PlanetKitCallPtr pPlanetKitCall)void OnCallDisconnect(PlanetKitCall *pPlanetKitCall, const SCallDisconnectedParam *pParam)void OnDisconnected(PlanetKitCallPtr pPlanetKitCall, CallDisconnectedParamPtr pDisconnectedParam)void OnPeerVideoPaused(PlanetKitCall *pPlanetKitCall, EVideoPauseReason eVideoPauseReason)void OnPeerVideoPaused(PlanetKitCallPtr pPlanetKitCall, EVideoPauseReason eVideoPauseReason)void OnPeerVideoResumed(PlanetKitCall *pPlanetKitCall)void OnPeerVideoResumed(PlanetKitCallPtr pPlanetKitCall)void OnShortDataReceived(PlanetKitCall *pPlanetKitCall, const SShortDataParam *pShortDataParam)void OnReceivedShortData(PlanetKitCallPtr pPlanetKitCall, ShortDataParamPtr pShortDataParam)void OnVideoEnabledByPeer(PlanetKitCall *pPlanetKitCall, bool bVideoCapturerStartSuccess)void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)void OnVideoDisabledByPeer(PlanetKitCall *pPlanetKitCall, const EMediaDisabledReason eReason)void OnVideoDisabledByPeer(PlanetKitCallPtr pPlanetKitCall, const EMediaDisabledReason eReason)void OnPeerHold(PlanetKitCall *pPlanetKitCall, const char *szHoldReason)void OnReceivedPeerHold(PlanetKitCallPtr pPlanetKitCall, const WString& strHoldReason)void OnPeerUnhold(PlanetKitCall *pPlanetKitCall)void OnReceivedPeerUnhold(PlanetKitCallPtr pPlanetKitCall)void OnNetworkUnavailable(PlanetKitCall *pPlanetKitCall, bool bIsPeer, int nDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitCallPtr pPlanetKitCall, bool bIsPeer, int nDisconnectAfterSec)void OnNetworkReavailable(PlanetKitCall *pPlanetKitCall, bool bIsPeer)void OnNetworkReavailable(PlanetKitCallPtr pPlanetKitCall, bool bIsPeer)void OnPeerMicMuted(PlanetKitCall *pPlanetKitCall)void OnPeerMicMuted(PlanetKitCallPtr pPlanetKitCall)void OnPeerMicUnmuted(PlanetKitCall *pPlanetKitCall)void OnPeerMicUnmuted(PlanetKitCallPtr pPlanetKitCall)void OnMuteRequest(PlanetKitCall *pPlanetKitCall, bool bEnableMute)void OnReceivedMuteMyAudioRequest(PlanetKitCallPtr pPlanetKitCall, bool bEnableMute)void OnPeerStartScreenShare(PlanetKitCall *pPlanetKitCall)void OnPeerStartedScreenShare(PlanetKitCallPtr pPlanetKitCall)void OnPeerStopScreenShare(PlanetKitCall *pPlanetKitCall, bool bHasReason, int nUserReason)void OnPeerStoppedScreenShare(PlanetKitCallPtr pPlanetKitCall, bool bHasReason, int nUserReason)void OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType) -
IConferenceEventclass Group callPrevious PlanetKit 5.5 void OnConferenceConnect(PlanetKitConference *pPlanetKitConference, SConferenceConnectedParam *pParam)void OnConnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceConnectedParamPtr pParam)void OnConferenceDisconnect(PlanetKitConference *pPlanetKitConference, const SConferenceDisconnectedParam *pParam)void OnDisconnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceDisconnectedParamPtr pParam)void OnPeerListUpdate(PlanetKitConference *pPlanetKitConference, ConferencePeerUpdateParam* pParam)void OnPeerListUpdate(PlanetKitConferencePtr pPlanetKitConference, ConferencePeerUpdateParamPtr pParam)void OnPeerVideoUpdate(PlanetKitConference *pPlanetKitConference, ConferenceVideoUpdatedParam *pParam)void OnPeersVideoUpdated(PlanetKitConferencePtr pPlanetKitConference, ConferenceVideoUpdatedParam* pParam)void OnPublicSubgroupPeerUpdate(PlanetKitConference *pPlanetKitConference, const ConferenceSubGroupUpdateParam *pParam)void OnPublicSubgroupUpdated(PlanetKitConferencePtr pPlanetKitConference, const ConferenceSubgroupUpdatePeerArray& arrSubgroupUpdatePeer)void OnShortDataReceived(PlanetKitConference *pPlanetKitConference, const SShortDataParam *pParam)void OnReceivedShortData(PlanetKitConferencePtr pPlanetKitConference, ShortDataParamPtr pParam)void OnPeersHold(PlanetKitConference *pPlanetKitConference, CommonReceivedHolds * pParam)void OnReceivedPeersHold(PlanetKitConferencePtr pPlanetKitConference, const PeerHoldArray& arrPeerHold)void OnPeersUnhold(PlanetKitConference *pPlanetKitConference)void OnReceivedPeersUnhold(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& arrPeer)void OnPeersMicMuted(PlanetKitConference *pPlanetKitConference, PeerInfos * pPeerInfos)void OnPeersMicMuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray)void OnPeersMicUnmuted(PlanetKitConference *pPlanetKitConference, PeerInfos * pPeerInfos)void OnPeersMicUnmuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray)void OnMuteRequest(PlanetKitConference *pPlanetKitConference, PeerInfo* pParam, bool bEnableMute)void OnReceivedMuteMyAudioRequest(PlanetKitConferencePtr pPlanetKitConference, PeerPtr pPeer, bool bEnableMute)void OnReceiveAppControlMessage(PlanetKitConference *pPlanetKitConference, const void *pMessage, int nMessageSize)void OnReceivedAppControlMessage(PlanetKitConferencePtr pPlanetKitConference, const void* pMessage, int nMessageSize)void OnBadNetworkDetected(PlanetKitConference *pPlanetKitConference, int nWillDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnBadNetworkResolved(PlanetKitConference *pPlanetKitConference)void OnNetworkReavailable(PlanetKitConferencePtr pPlanetKitConference)void OnDataSessionIncoming(const char* szSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnPeerScreenSharingUpdateInfo(ConferencePeerScreenSharingUpdateInfo* pPeerScreenSharingUpdateInfo)void OnPeerScreenShareUpdated(ConferencePeerScreenShareUpdatedParam* pPeerScreenShareUpdateInfo)void OnConferenceException(PlanetKitConference *pPlanetKitConference, ConferenceExceptionMessage* pExceptionMessage)void OnException(PlanetKitConferencePtr pPlanetKitConference, const ConferenceExceptionArray& arrExceptionMessage) -
ConferencePeerUpdateParamclass Group callPrevious PlanetKit 5.5 SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()ConferencePeer* AddedAt(size_t index)const PeerArray& GetAddedPeer()ConferencePeer* RemovedAt(size_t index)const PeerArray& GetRemovedPeer() -
ConferenceVideoUpdatedParamclass Group callPrevious PlanetKit 5.5 PeerVideoStatus* At(size_t nIdx)const PeerVideoStatusArray& GetPeerVideoStatus()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup() -
ConferenceSubgroupUpdatePeerclass Group callPrevious PlanetKit 5.5 ConferencePeerInfo* GetPeerInfo() constPeerPtr GetPeer() constconst CommonStringArray* GetSubscribedSubgroup() constconst WStringArray& GetSubscribedSubgroupNames() constconst CommonStringArray* GetUnsubscribedSubgroup() constconst WStringArray& GetUnsubscribedSubgroup() const -
ConferenceExceptionclass Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()PeerPtr GetPeer()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()const char* GetMessage()const WString& GetMessage() -
SCallConnectedParamstruct →CallConnectedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage()bool bVideoSendHWCodecEnabledbool IsVideoSendHardwareCodecEnabled() -
SCallVerifiedParamstruct →CallVerifiedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage() -
SCallDisconnectedParamstruct →CallDisconnectedParamclass 1-to-1 callPrevious PlanetKit 5.5 bool bByRemotebool IsDisconnectedByRemote()EDisconnectReason eReasonEDisconnectReason GetReason()const char* szUserRelCodeconst WString& GetUserReleaseCode() -
SConferenceConnectedParamstruct →ConferenceConnectedParamclass Group callPrevious PlanetKit 5.5 bool bVideoSendHWCodecEnabledbool IsVideoSendHardwareCodecEnabled() -
SConferenceDisconnectedParamstruct →ConferenceDisconnectedParamclass Group callPrevious PlanetKit 5.5 bool bByRemotebool IsDisconnectedByRemote()EDisconnectReason eEndReasonEDisconnectReason GetReason()const char* szUserRelCodeconst WString& GetUserReleaseCode() -
ConferenceExceptionMessageclass →ConferenceExceptionArrayclass Group call -
ConferencePeerScreenSharingUpdateInfoclass →ConferencePeerScreenShareUpdatedParamclass Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()PeerPtr GetPeer()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()EScreenSharingState ScreenSharingState()EScreenShareState ScreenShareState()
Added
AutoPtrclass 1-to-1 callGroup callbool operator==(const AutoPtr<T>& rhs)bool operator! =(const AutoPtr<T>& rhs)AutoPtr<T>& operator=(const AutoPtr<T>& src)AutoPtr<T>& operator=(T* src)T* operator*()T* operator->()
Optionalclass 1-to-1 callGroup callbool HasValue() constconst T* operator->() constT* operator->()const T& operator*() constT& operator*()Optional<T>& operator=(const Optional<T>& src)Optional<T>& operator=(const T& src)T& Value()const T& Value() const
Arrayclass 1-to-1 callGroup callconst T* Buffer() constT* Buffer()void Resize(size_t size)void SetAt(size_t idx, const T& rhs)size_t Size() constT& At(size_t idx) constT& operator[](size_t idx) const
CallConnectedParamclass 1-to-1 callCallStartMessagePtr GetPeerStartMessage()bool ShouldFinishPreparation()bool IsInPreparation()bool IsVideoSendHardwareCodecEnabled()bool IsSupportDataSession()
CallVerifiedParamclass 1-to-1 callCallStartMessagePtr GetPeerStartMessage()bool IsPeerUsePreparation()
CallDisconnectedParamclass 1-to-1 callbool IsDisconnectedByRemote()EDisconnectReason GetReason()const WString& GetUserReleaseCode()
ConferenceDisconnectedParamclass Group callbool IsDisconnectedByRemote()EDisconnectReason GetReason()const WString& GetUserReleaseCode()
ConferencePeerScreenShareUpdatedParamclass Group callPeerPtr GetPeer()SubgroupPtr GetSubgroup()EScreenShareState ScreenShareState()
Removed
SCallConnectedParamstruct 1-to-1 callEMediaType eMediaType
ConferencePeerUpdateParamclass Group callsize_t AddedCount()size_t RemovedCount()
ConferenceVideoUpdatedParamclass Group callsize_t GetCount()
ConferenceSubGroupUpdateParamclass Group call
Code examples
-
The added class can be used as follows.
class YourApplication {
public:
MakeCallParamPtr CreateMakeCallParam() {
// Do not need to release.
PlanetKit::PlanetKitManagerPtr planetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::PlanetKitManagerPtr
PlanetKit::UserIdPtr myId = PlanetKit::UserId::Create(
L"yourId",
L"yourServiceId",
);
PlanetKit::UserIdPtr peerId = PlanetKit::UserId::Create(
L"peerId",
L"peerServiceId"
);
// Do not need to release.
PlanetKit::MakeCallParamPtr makeCallParam = PlanetKit::MakeCallParam::CreateWithAccessToken(
myId,
peerId,
L"yourAccessToken"
);
return makeCallParam;
}
void MakeCall() {
// Do not need to release.
PlanetKit::PlanetKitManagerPtr planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::MakeCallParamPtr makeCallParam = CreateMakeCallParam();
auto startResult = planetkitManager->MakeCall(makeCallParam, &pCall);
if (startResult.bSuccess == true) {
// Do not need to release.
m_pCall = pCall;
}
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
}; -
APIs that provided pointer variables and structures as parameters are replaced with the
PlanetKit::AutoPtrclass. APIs provided as pointers to structures are provided asPlanetKit::AutoPtr.class YourCallEventListener : public PlanetKit::ICallEvent {
public:
// This API is deleted on version 5.5.
// - void OnCallConnect(PlanetKit::PlanetKitCall *pPlanetKitCall, PlanetKit::SCallConnectedParam *pConnectedParam);
// `PlanetKit::PlanetKitCall` and `PlanetKit::SCallConnectedParam` are changed with `PlanetKit::AutoPtr`.
void OnConnected(PlanetKit::PlanetKitCallPtr pPlanetKitCall, PlanetKit::CallConnectedParamPtr pConnectedParam) override {
// You can obtain the information of call connection using the API provided by pConnectedParam.
...
}
} -
Instance variables that users created and used as API parameters are now created and returned by PlanetKit.
class YourApplication {
public:
void PlanetKit::UserIdPtr createMyId() {
// This API is deleted on version 5.5.
// - PlanetKit::InitUserId myId("yourId", "yourServiceId");
// In order to manage memory management and life cycle, the PlanetKit library was changed to create and return the necessary instances directly.
PlanetKit::UserIdPtr myId = PlanetKit::UserId::Create(
L"yourId",
L"yourServiceId",
);
}
return myId;
} -
Instances created using the API were previously provided as pointer variables, but have been replaced with the
PlanetKit::AutoPtrclass. This allows for automatic lifecycle management without the need to call APIs likeAddRef()andRelease()to manage references. -
When using a string as a parameter, it is provided as a WString (UTF-8) without using const char and length variables.
class YourApplication {
public:
void createMakeCallParam() {
PlanetKit::UserIdPtr myId = PlanetKit::UserId::Create(
L"yourId",
L"yourServiceId",
);
PlanetKit::UserIdPtr peerId = PlanetKit::UserId::Create(
L"peerId",
L"peerServiceId",
);
// This API is deleted on version 5.5.
// - static CallInitParam* CreateMakeCallParamWithAccessToken(const PlanetKit::InitUserId & myID, const PlanetKit::InitUserId & peerID, const char* szKey, int nKeyLen);
// You do not need to directly manage the life cycle of CallInitParam* by using `PlanetKit::MakeCallParamPtr`.
PlanetKit::MakeCallParamPtr makeCallParam = PlanetKit::MakeCallParam::CreateWithAccessToken(
myId,
peerId,
L"yourAccessToken"
);
return makeCallParam;
}
}
Breaking change Change API parameter type from char (UTF-8) string to WString (UTF-16) string
- To handle Unicode strings, the APIs have been modified to use WString (UTF-16) as the parameter type.
- For APIs that have limitations on the length of input strings, PlanetKit converts the input string to UTF-8, checks its length, and returns a success or failure result.
API changes
Changed
-
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 bool SendShortData(const SShortData *pShortData, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Hold(const char *szHoldReason, bool bPauseReceive, void *pResultUserData, IResultHandler *pResultHandler)bool Hold(const WStringOptional& strHoldReason = NullOptional, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PlanetKitConferenceclass Group callPrevious PlanetKit 5.5 bool RequestPeerVideo(const char *szPeerId, const char *szPeerServiceId, const char *szSubGroupName, EVideoResolution eVideoResolution, void* pResultUserData, IRequestVideoResultHandler* pResultHandler, void* pReqVidResResultUserData, IRequestVideoResultHandler* pReqVidResResultHander)bool RequestPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, RequestPeerVideoResolutionCallback pCallback)bool StopPeerVideo(const char *szPeerId, const char *szPeerServiceId, const char *szSubGroupName, void* pUserData, IRequestVideoResultHandler* pResultHandler)bool StopPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData = nullptr, RequestPeerVideoResultCallback pCallback = nullptr)bool SendShortData(const SShortData *pShortData, SShortDataTarget *pTargets, unsigned int unTargetCount, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, UserIdPtr pPeerId, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Hold(const char *szHoldReason, void *pResultUserData, IResultHandler *pResultHandler)bool Hold(const WStringOptional& strHoldReason = NullOptional, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestMutePeerAudioSend(const char *szPeerId, const char *szPeerServiceId, bool bMute, void *pResultUserData, IResultHandler *pResultHandler)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartMyScreenShare(const char* szSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool StartMyScreenShare(ScreenShareInfoPtr pScreenShareInfo, const WStringOptional& strSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyScreenShareGroup(const char* szToSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyScreenShareDestination(const WString& strToSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerScreenShare(const char* szPeerId, const char* szPeerServiceId, const char* szSubgroupName, void *pResultUserData, IRequestVideoResultHandler* pResultHandler)bool RequestPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)bool StopPeerScreenShare(const char* szPeerId, const char* szPeerServiceId, const char* szSubgroupName, void *pResultUserData, IRequestVideoResultHandler* pResultHandler)bool StopPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)const char* MyDisplayName()const WStringOptional& GetMyDisplayName() -
ConferenceSubGroupUpdatePeerclass Group callPrevious PlanetKit 5.5 const CommonStringArray* GetSubscribedSubgroup() constconst WStringArray& GetSubscribedSubgroupNames() constconst CommonStringArray* GetUnsubscribedSubgroup() constconst WStringArray& GetUnsubscribedSubgroup() const -
ConferenceExceptionclass Group callPrevious PlanetKit 5.5 const char* GetMessage()const WString& GetMessage() -
IConferenceEventclass Group callPrevious PlanetKit 5.5 void OnDataSessionIncoming(const char* szSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType) -
AudioDeviceclass 1-to-1 callGroup callPrevious PlanetKit 5.5 bool PlayFile(const char* szPath, unsigned int unLoop)bool PlayFile(const WString& strFilePath, unsigned int unLoop) -
MakeCallParamclass 1-to-1 callPrevious PlanetKit 5.5 static CallInitParam* CreateMakeCallParamWithAccessToken(const InitUserId & myID, const InitUserId & peerID, const char* szKey, int nKeyLen)static MakeCallParamPtr CreateWithAccessToken(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strToken)static CallInitParam* CreateMakeCallParamWithAPIKey(const InitUserId & myID, const InitUserId & peerID, const char* szKey)static MakeCallParamPtr CreateWithAPIKey(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strKey)const char* RingTonePath()const WString& GetRingTonePath()const char* RingBackTonePath()const WString& GetRingBackTonePath()const char* HoldTonePath()const WString& GetHoldTonePath()const char* GetStid()const wchar_t* GetAppServerData()void SetStid(const char* szStid)void SetAppServerData(const wchar_t* szAppServerData)void SetRingTonePath(const char* szRingTonePath)void SetRingTonePath(const WString& strRingTonePath)void SetRingBackTonePath(const char* szRingBackTonePath)void SetRingBackTonePath(const WString& strRingBackTonePath)void SetHoldTonePath(const char* szHoldTonePath)void SetHoldTonePath(const WString& strHoldTonePath) -
VerifyCallParamclass 1-to-1 callPrevious PlanetKit 5.5 static CallInitParam* CreateVerifyCallParam(const InitUserId & myID, const char* szCcParam)static VerifyCallParamPtr Create(UserIdPtr pMyID, CCParamPtr pCCParam)const char* RingTonePath()const WString& GetRingTonePath()const char* RingBackTonePath()const WString& GetRingBackTonePath()const char* HoldTonePath()const WString& GetHoldTonePath()void SetRingTonePath(const char* szRingTonePath)void SetRingTonePath(const WString& strRingTonePath)void SetRingBackTonePath(const char* szRingBackTonePath)void SetRingBackTonePath(const WString& strRingBackTonePath)void SetHoldTonePath(const char* szHoldTonePath)void SetHoldTonePath(const WString& strHoldTonePath) -
CommonSetSharedContentclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* ServiceId()UserIdPtr GetPeerID() -
ConferenceParamclass Group callPrevious PlanetKit 5.5 static ConferenceJoinParam * CreateWithAccessToken(const InitUserId & myID, const char* szAccessToken, int nAccessTokenLength)static ConferenceParamPtr CreateWithAPIKey(UserIdPtr pMyID, const WString& strRoomID, const WString& strRoomServiceID, const WString& strAPIKey)static ConferenceJoinParam* CreateWithAPIKey(const InitUserId & myID, const char* szAPIKey)static ConferenceParamPtr CreateWithAccessToken(UserIdPtr pMyID, const WString& strRoomID, const WString& strRoomServiceID, const WString& strToken)const char* DisplayName()const WStringOptional& GetDisplayName()void SetDisplayName(const char* szMyDisplayName)void SetDisplayName(const WStringOptional& strMyDisplayName)const char* RoomId()const WString& GetRoomId()void SetRoomId(const char* szRoomId)void SetRoomId(const WString& strRoomId)const char* RoomServiceId()const WString& GetRoomServiceId()void SetRoomServiceId(const char *szRoomServiceId)void SetRoomId(const WString& strRoomId)const char* GetStid()const wchar_t* GetAppServerData()void SetStid(const char* szStid)void SetAppServerData(const wchar_t* szAppServerData) -
PlanetKitManagerclass 1-to-1 callGroup callPrevious PlanetKit 5.5 bool UpdateServerUrl(const char *szServerUrl)bool UpdateServerUrl(const WString& strServerUrl)bool GetServerUrl(char * szServerUrl, size_t nBufferSize)WString& GetServerUrl()const char* PlanetKitVersion()const WString& PlanetKitVersion() -
StatisticsVideoRecvclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* PeerServiceId()UserIdPtr GetPeerID()const char* SubgroupName()const WStringOptional& GetSubgroupName() -
StatisticsScreenShareRecvclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* PeerServiceId()UserIdPtr GetPeerID()const char* SubgroupName()const WStringOptional& GetSubgroupName() -
SubGroupclass - Group callPrevious PlanetKit 5.5 const char *GetSubGroupName()const WStringOptional& GetSubgroupName() -
SubGroupManagerclass Group callPrevious PlanetKit 5.5 bool SubscribeSubgroup(const char *szSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void *pResultUserData, ISubscribeSubgroupResultHandler *pResultHandler)bool SubscribeSubgroup(const WString& strSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void* pUserData = nullptr, SubscribeResult pCallback = nullptr)bool UnsubscribeSubgroup(const char *szSubgroupName, void *pResultUserData, IUnsubscribeSubgroupResultHandler *pResultHandler)bool UnsubscribeSubgroup(const WString& strSubgroupName, void* pUserData = nullptr, UnsubscribeResult pCallback = nullptr)SubGroupOptional GetSubGroup(const char *szSubGroupName)SubgroupOptional GetSubgroup(const WString& strSubgroupName)SubGroupOptional GetSubGroup(const char *szSubGroupName)SubgroupPtr GetMainRoom()bool ChangeMyAudioSend(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyAudioDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyAudioSend(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyAudioDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool TagMainRoomAudioSend(const char *szTagSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool SetTagMyAudioOfMainRoom(const WString& strTagSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilenceAudio(const char *szSubgroupName, bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeersAudio(const WStringOptional& strSubgroupName, bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableAutoVolumeControl(const char **szFocusSubgroups, size_t nFocusSubgroupCnt, void *pResultUserData, IResultHandler *pResultHandler)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetPeerVolumeSetting(const char *szPeerId, const char *szPeerServiceId, bool bSetForAllSubgroups, const char *szSubgroupNameToApply, unsigned char ucVolume, void *pResultUserData, IResultHandler *pResultHandler)bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)const String& GetMyVideoSubGroupName()WStringOptional GetMyVideoSubgroupName()bool VideoSendChangeSubgroup(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyVideoDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool VideoSendChangeSubgroup(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyVideoDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Added
WStringclass 1-to-1 callGroup calloperator const wchar_t*() constconst wchar_t* c_str() constsize_t Size() constWString& Append(const wchar_t* rhs)bool operator==(const wchar_t* rhs) constbool operator==(const WString& rhs) constbool operator! =(const WString& rhs) constconst wchar_t operator[] (int idx)WString& operator=(const wchar_t* src)WString& operator=(const WString& src)WString& operator+=(const wchar_t* rhs)WString& operator+=(const WString& rhs)WString Substring(const unsigned int unStart, const unsigned unLength = 0) const
MakeCallParamclass 1-to-1 callconst WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)
VerifyCallParamclass 1-to-1 callconst WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)
ConferenceParamclass 1-to-1 callconst WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)
Removed
MakeCallParamclass 1-to-1 callconst char* GetAPIKey()const char* GetAccessToken()
ConferenceParamclass Group callconst char* GetAPIKey()const char* GetAccessToken()
Code examples
-
If you used
std::stringfor a string variable, change it tostd::wstringand use Prefix L for string constants.void YourApplication::MakeCallParam(std::wstring strAccessToken) {
// change std::string to std::wstring
std::wstring strUserId = L"your id";
std::wstring strServiceId = L"your serivce id";
std::wstring strPeerId = L"peer id";
std::wstring strPeerServiceId = L"peer service id";
PlanetKit::UserIdPtr pMyId = PlanetKit::UserId::Create(strUserId.c_str(), strServiceId.c_str());
PlanetKit::UserIdPtr pPeerId = PlanetKit::UserId::Create(strPeerId.c_str(), strPeerServiceId.c_str());
PlanetKit::MakeCallParamPtr pMakeCallParam = PlanetKit::MakeCallParam::CreateWithAccessToken(
pMyId,
pPeerId,
strAccessToken.c_str()
);
} -
To change a
charstring (UTF-8) to awchar_tstring (UTF-16), you can use theMultibyteToWideCharAPI provided by Windows.std::wstring YourApplication::ConvertUTF8(LPCSTR pszUTF8Text) {
if(pszUTF8Text == NULL || *pszUTF8Text == '\0') {
return std::wstring();
}
int nLengthOfUTF8 = lstrlenA(pszUTF8Text);
int nUTF16 = ::MultiByteToWideChar(
CP_UTF8,
0,
pszUTF8Text,
nLengthOfUTF8,
nullptr,
0);
if (nUTF16 == 0) {
return std::wstring();
}
std::wstring strConvertedUTF16Text(nUTF16, '\0');
int nResult = ::MultiByteToWideChar(
CP_UTF8,
0,
pszUTF8Text,
nLengthOfUTF8,
&strConvertedUTF16Text[0],
nUTF16);
if (nResult == 0) {
return std::wstring();
}
return strConvertedUTF16Text;
} -
CStringprovided by Windows can be used as UTF-16 if the project'sCharacter setoption is set toUnicode Character Set, so there is no need to change the code.
Breaking change Remove IResultHandler, ISubscribeSubgroupResultHandler, and IUnsubscribeSubgroupResultHandler classes
- Removed the classes that were used to deliver the results of asynchronous API calls as a callback and added static functions.
- Removed
IResultHandler,ISubscribeSubgroupResultHandler,IUnsubscribeSubgroupResultHandlerand replaced them withResultCallback,SubscribeResult,UnsubscribeResult.
- Removed
- You can now use a class static function, a C-style static function, or a lambda function as the "function callback".
API changes
Changed
-
IResultHandlerclass →using ResultCallback = void(*)(void* pUserData, bool bSuccess)1-to-1 callGroup call -
ISubscribeSubgroupResultHandlerclass →using SubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupSubscribeFailReason eReason, void* pUserData)Group call -
IUnsubscribeSubgroupResultHandlerclass →using UnsubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupUnsubscribeFailReason eReason, void* pUserData)Group call -
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 bool MuteMyAudio(bool bMute, void *pMuteResultUserData, IResultHandler *pMuteResultHandler)bool MuteMyAudio(bool bMute, void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool PauseMyVideo(void *pResultUserData, IResultHandler *pResultHandler)bool PauseMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ResumeMyVideo(void *pResultUserData, IResultHandler *pResultHandler)bool ResumeMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideo(EMediaDisabledReason eDisableReason, void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Unhold(void *pResultUserData, IResultHandler *pResultHandler)bool Unhold(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerMute(bool bMute, void *pResultUserData, IResultHandler *pResultHandler)bool RequestPeerMute(bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilencePeerAudio(bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeerAudio(bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartMyScreenShare(ScreenShareInfoPtr pScreenShareInfo, void *pResultUserData, IResultHandler *pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(void *pResultUserData, IResultHandler *pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(int nUserReason, void *pResultUserData, IResultHandler *pResultHandlerbool StopMyScreenShare(int nUserReason, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StartUserAcousticEchoCancellerReference(void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StopUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PlanetKitConferenceclass Group callPrevious PlanetKit 5.5 bool MuteMyAudio(bool bMute, void *pMuteResultUserData, IResultHandler *pMuteResultHandler)bool MuteMyAudio(bool bMute, void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool PauseMyVideo(void *pPauseResultUserData, IResultHandler *pPauseResultHandler)bool PauseMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ResumeMyVideo(void *pResumeResultUserData, IResultHandler *pResumeResultHandler)bool ResumeMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Unhold(void* pResultUserData, IResultHandler* pResultHandler)bool Unhold(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData, IResultHandler* pResultHandler)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeersMute(bool bMute, void* pUserData, IResultHandler* pResultHandler)bool RequestPeersMute(bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilencePeersAudio(bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeersAudio(bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(void* pUserData, IResultHandler* pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(int nUserReason, void* pUserData, IResultHandler* pResultHandler)bool StopMyScreenShare(int nUserReason, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyScreenShareDestinationToMainRoom(void* pUserData, IResultHandler* pResultHandler)bool ChangeMyScreenShareDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartUserAcousticEchoCancellerReference(void* pUserData, IResultHandler* pResultHandler)bool StartUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StopUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
SubgroupManagerclass Group callPrevious PlanetKit 5.5 bool SubscribeSubgroup(const wchar_t* szSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void* pUserData, ISubscribeSubgroupResultHandler* pCallback)bool SubscribeSubgroup(const WString& strSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void* pUserData = nullptr, SubscribeResult pCallback = nullptr)bool UnsubscribeSubgroup(const wchar_t* szSubgroupName, void* pUserData, IUnsubscribeSubgroupResultHandler* pCallback)bool UnsubscribeSubgroup(const WString& strSubgroupName, void* pUserData = nullptr, UnsubscribeResult pCallback = nullptr)bool ChangeMyAudioDestination(const wchar_t* szSubgroupName, void* pUserData, IResultHandler* pCallback)bool ChangeMyAudioDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyAudioDestinationToMainRoom(void* pUserData, IResultHandler* pCallback)bool ChangeMyAudioDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetTagMyAudioOfMainRoom(const wchar_t* szSubgroupName, void* pUserData, IResultHandler* pCallback)bool SetTagMyAudioOfMainRoom(const WString& strTagSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ClearTagMyAudioOfMainRoom(void* pUserData, IResultHandler* pCallback)bool ClearTagMyAudioOfMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilencePeersAudio(const wchar_t* szSubgroupName, bool bSilence, void* pUserData, IResultHandler* pCallback)bool SilencePeersAudio(const WStringOptional& strSubgroupName, bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData, IResultHandler* pCallback)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ClearPeersAudioAutoVolumeControl(void *pResultUserData, IResultHandler *pResultHandler)bool ClearPeersAudioAutoVolumeControl(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const wchar_t* szSubgroupName, unsigned char ucVolume, void* pUserData, IResultHandler* pCallback)bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyVideoDestination(const wchar_t* szSubgroupName, void* pUserData, IResultHandler* pCallback)bool ChangeMyVideoDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyVideoDestinationToMainRoom(void* pUserData, IResultHandler* pCallback)bool ChangeMyVideoDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Code examples
-
The following is an example of how to check the result of asynchronous API in previous versions.
enum YourCallResultType {
CallMuteMyAudio = 0,
CallPauseMyVideo,
CallResumeMyVideo,
...
};
struct YourCallbackParam {
YourCallResultType eType;
YourCall* pYourCallInstance;
}
class YourCallResultHandler : public PlanetKit::IResultHandler {
public :
void OnResult(void* pUserData, bool bSuccess) {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
switch(pCallbackParam->eType) {
case YourCallResultType::CallMuteMyAudio :
// Handle the mute result
break;
case YourCallResultType::CallPauseMyVideo :
// Handle the pause result
break;
case YourCallResultType::CallResumeMyVideo :
// Handle the resume result
break;
};
delete pCallbackParam;
}
}
class YourCall {
void MuteMyAudio(bool bMute) {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
pCallbackParam->eType = YourCallResultType::CallMuteMyAudio;
m_pCall->MuteMyAudio(bMute, pCallbackParam, &m_callResultHandler);
}
void PauseMyVideo() {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
pCallbackParam->eType = YourCallResultType::CallPauseMyVideo;
m_pCall->PauseMyVideo(pCallbackParam, &m_callResultHandler);
}
void ResumeMyVideo() {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
pCallbackParam->eType = YourCallResultType::CallResumeMyVideo;
m_pCall->ResumeMyVideo(bMute, pCallbackParam, &m_callResultHandler);
}
private :
YourCallResultHandler m_callResultHandler;
PlanetKit::PlanetKitCallPtr m_pCall;
} -
In the new version, you can check the result of asynchronous API in the following three methods.
-
Method 1: Change the
OnResultmethod to a static method.class YourCallResultHandler : public PlanetKit::IResultHandler {
public :
// Change the `OnResult` method to a static method
static void OnResult(void* pUserData, bool bSuccess) {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
switch(pCallbackParam->eType) {
case YourCallResultType::CallMuteMyAudio :
// Handle the mute result
break;
case YourCallResultType::CallPauseMyVideo :
// Handle the pause result
break;
case YourCallResultType::CallResumeMyVideo :
// Handle the resume result
break;
};
delete pCallbackParam;
}
}
class YourCall {
void MuteMyAudio(bool bMute) {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
pCallbackParam->eType = YourCallResultType::CallMuteMyAudio;
// Use the static method as a callback parameter.
m_pCall->MuteMyAudio(bMute, pCallbackParam, YourCallResultHandler::OnResult);
}
private :
PlanetKit::PlanetKitCallPtr m_pCall;
} -
Method 2: Delete the
YourCallResultHandlerclass and change theOnResult()method to a function.void OnResult(void* pUserData, bool bSuccess) {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
switch(pCallbackParam->eType) {
case YourCallResultType::CallMuteMyAudio :
// Handle the mute result
break;
case YourCallResultType::CallPauseMyVideo :
// Handle the pause result
break;
case YourCallResultType::CallResumeMyVideo :
// Handle the resume result
break;
};
delete pCallbackParam;
}
class YourCall {
void MuteMyAudio(bool bMute) {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
pCallbackParam->eType = YourCallResultType::CallMuteMyAudio;
// Use the static method as a callback parameter.
m_pCall->MuteMyAudio(bMute, pCallbackParam, OnResult);
}
private :
PlanetKit::PlanetKitCallPtr m_pCall;
} -
Method 3: Use lambda expressions to check the results when calling asynchronous APIs.
class YourCall {
void MuteMyAudio(bool bMute) {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
m_pCall->MuteMyAudio(bMute, pCallbackParam, [](void* pUserData, bool bSuccess) -> void {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
// Handle the mute result
delete pCallbackParam;
});
}
void PauseMyVideo() {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
m_pCall->PauseMyVideo(pCallbackParam, [](void* pUserData, bool bSuccess) -> void {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
// Handle the pause result
delete pCallbackParam;
});
}
void ResumeMyVideo() {
YourCallbackParam* pCallbackParam = new YourCallbackParam;
m_pCall->ResumeMyVideo(pCallbackParam, [](void* pUserData, bool bSuccess) -> void {
YourCallbackParam* pCallbackParam = (YourCallbackParam*)pUserData;
// Handle the resume result
delete pCallbackParam;
});
}
}
-
Breaking change Add classes to check group call participant information and control participants
- Previously, it was possible to check only a participant's ID and service ID through the
PeerInfoclass, but thePeerclass has been added to allow checking various information about the participant. - You can create a
PeerControlclass using thePeerclass. - You can use
PeerControlto enable or disable a participant's video and screen share video.
API changes
Changed
-
PeerInfoclass →Peerclass Group callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetUserID()const char* ServiceId()UserIdPtr GetUserID()
Added
Peerclass Group callEMediaType GetMediaType()const WString& GetDisplayName()EUserEquipmentType GetUserEquipmentType()const WString& GetSipLocalIP()const WString& GetDeviceInfo()bool IsDataSessionSupported()bool IsAudioMuted()HoldStatus GetHoldStatus()const WStringArray& GetSubscribedSubgroupNames()WStringOptional GetVideoSubgroupName()ScreenShareStateResult GetScreenShareState(const WStringOptional& strSubgroupName = NullOptional)VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)VideoStatusResult GetVideoStatus(const WStringOptional& strSubgroupName = NullOptional)WStringOptional GetCurrentVideoSubgroupName()WStringOptional GetCurrentScreenShareSubgroupName()PeerControlPtr CreatePeerControl()SharedContentsOptional GetSharedContents()PeerControlPtr CreatePeerControl()
PeerControlclass Group callPeerPtr GetPeer()bool Register(IPeerControlEvent* pEventListener)void Unregister()bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution)bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, StartVideoResultCallback pCallback)bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, StartVideoResolutionCallback pCallback)bool StopVideo(void* pUserData = nullptr, StoptVideoResultCallback pCallback = nullptr)bool StartScreenShare(const WStringOptional& strSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)void SetView(WindowHandle hWnd)void ClearView()void RegisterReceiver(IVideoReceiver* pReceiver)void DeregisterReceiver(IVideoReceiver* pReceiver)void SetScreenShareView(WindowHandle hWnd)void ClearScreenShareView()void RegisterScreenShareReceiver(IVideoReceiver* pReceiver)void DeregisterScreenShareReceiver(IVideoReceiver* pReceiver)
IPeerControlEventclass Group callvoid OnInitialized(PeerControlPtr pPeerControl, bool bResult)void OnMuted(PeerControlPtr pPeerControl)void OnUnmuted(PeerControlPtr pPeerControl)void OnVideoUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, const VideoStatus& videoStatus)void OnScreenShareUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, EScreenShareState eState)void OnSubscribed(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup)void OnUnsubscribed(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup)void OnDisconnected(PeerControlPtr pPeerControl)void OnHold(PeerControlPtr pPeerControl, const WString& strHoldReason)void OnUnHold(PeerControlPtr pPeerControl)void OnSetSharedContents(PeerControlPtr pPeerControl, unsigned int unElapsedAfterSet, const void* pvData, unsigned int unDataSize)void OnUnsetSharedContents(PeerControlPtr pPeerControl)void OnPeerAudioDescriptionUpdated(PeerControlPtr pPeerControl, const PeerAudioDescription& sPeerAudioDescription)
Code examples
-
When a participant joins a group call, the
IConferenceEvent::OnPeerListUpdate()event occurs, and you can obtain thePeerclass instance of the joined participant usingConferencePeerUpdateParam::GetAddedPeer().class YourConferenceEventListener : public PlanetKit::IConferenceEvent {
public:
YourConferenceEventListener(YourApplication* yourApp) {
m_yourApp = yourApp;
};
void OnPeerListUpdate(PlanetKit::PlanetKitConferencePtr, PlanetKit::ConferencePeerUpdateParamPtr pParam) {
m_yourApp->AddedPeerList(pParam);
}
private:
YourApplication* m_yourApp = nullptr;
};
class YourApplication {
public:
void AddedPeerList(PlanetKit::ConferencePeerUpdateParamPtr pParam) {
auto const& arrAdded = pParam->GetAddedPeer();
for(size_t idx = 0; idx < arrAdded.Size(); ++idx) {
// keep PeerPtr instance for handling Peer.
PlanetKit::PeerPtr addedPeer = arrAdded.At(idx);
m_mapPeer[addedPeer->GetUserID()->GetID().c_str()] = addedPeer;
}
}
private:
std::map<std::wstring, PlanetKit::PeerPtr> m_mapPeer;
YourConferenceEventListener m_listener{ this };
}; -
When implementing views for each participant, you can also pass an instance of the
Peerclass to the view.class YourPeerView {
YourPeerView(PlanetKit::PeerPtr peer) {
m_peer = peer;
};
private:
PlanetKit::PeerPtr m_peer;
};
class YourApplication {
public:
void AddedPeerList(PlanetKit::ConferencePeerUpdateParamPtr pParam) {
auto const& arrAdded = pParam->GetAddedPeer();
for(size_t idx = 0; idx < arrAdded.Size(); ++idx) {
// keep PeerPtr instance for handling Peer.
PlanetKit::PeerPtr addedPeer = arrAdded.At(idx);
YourPeerView peerView(addedPeer);
m_mapPeerView[addedPeer->GetUserID()->GetID().c_str()] = addedPeer;
}
}
private:
std::map<std::wstring, YourPeerView> m_mapPeerView;
}; -
A
PeerControlclass instance can be created when a view for each participant is created.class YourPeerView {
YourPeerView(PlanetKit::PeerPtr peer) {
m_peer = peer;
m_peerControl = peer->CreatePeerControl();
};
private:
PlanetKit::PeerPtr m_peer;
PlanetKit::PeerControlPtr m_peerControl;
}; -
Events occurring in a
PeerControlclass instance can be received by implementing a class that inherits fromIPeerControlEventand then registering it using thePeerControl::Register()API.class YourPeerControlEventListener : public PlanetKit::IPeerControlEvent {
public:
YourPeerControlEventListener(YourPeerView* peerView) {
m_peerView = peerView;
}
void OnInitialized(PlanetKit::PeerControlPtr pPeerControl, bool bResult) override {
// Peer control event listener is registered.
}
...
private:
YourPeerView* m_peerView = nullptr;
};
class YourPeerView {
YourPeerView(PlanetKit::PeerPtr peer) {
m_peer = peer;
m_peerControl = peer->CreatePeerControl();
m_peerControl->Register(&m_peerControlEventListener);
};
private:
PlanetKit::PeerPtr m_peer;
PlanetKit::PeerControlPtr m_peerControl;
YourPeerControlEventListener m_peerControlEventListener{ this };
}; -
When a participant starts a video call, the
IPeerControlEvent::OnVideoUpdated()event is called, and you can receive the participant's video using thePeerControl::StartVideo()API.class YourPeerControlEventListener : public PlanetKit::IPeerControlEvent {
public:
void OnVideoUpdated(PlanetKit::PeerControlPtr pPeerControl, PlanetKit::SubgroupPtr pSubgroup, const PlanetKit::VideoStatus& videoStatus) override {
m_peerView->VideoUpdated(pSubgroup, videoStatus);
}
}
class YourPeerView {
public:
void VideoUpdated(PlanetKit::SubgroupPtr pSubgroup, const PlanetKit::VideoStatus& videoStatus) {
if(videoStatus.eVideoState == PlanetKit::EVideoState::PLNK_VIDEO_STATE_ENABLED) {
m_peerControl->StartVideo(pSubgroup->GetSubgroupName(), PlanetKit::EVideoResolution::PLNK_VIDEO_RESOLUTION_RECOMMENDED);
m_peerControl->SetView(m_renderWnd);
}
}
private:
// Prepare HWND for rendering peer's video.
HWND m_renderWnd;
} -
When a participant leaves the group call, clean up the
YourPeerView.class YourPeerView {
public:
virtual ~YourPeerView() {
// Unregister instance of `IPeerControlEvent`.
m_peerControl->Unregister();
}
};
class YourApplication {
public:
void RemovedPeerList(PlanetKit::ConferencePeerUpdateParamPtr pParam) {
auto const& arrRemoved = pParam->GetRemovedPeer();
for(size_t idx = 0; idx < arrRemoved.Size(); ++idx) {
PlanetKit::PeerPtr removedPeer = arrRemoved.At(idx);
auto found = m_mapPeerView.find(removedPeer->GetUserID()->GetID().c_str());
if(found != m_mapPeerView.end()) {
m_mapPeerView.erase(found);
}
}
}
private:
std::map<std::wstring, YourPeerView> m_mapPeerView;
YourConferenceEventListener m_listener{ this };
};
Breaking change Remove the room attribute in group calls
- Prior to PlanetKit 5.2, if the room type of a group call did not match while joining a group call, the
PLNK_DISCONNECT_REASON_WRONG_ROOM_ATTRerror occurred. - Starting from PlanetKit 5.2, the room type has been removed and is no longer checked, so the
PLNK_DISCONNECT_REASON_WRONG_ROOM_ATTRdisconnect reason has been deprecated accordingly.
API changes
Removed
EConferenceRoomTypeenum Group callConferenceParamclass Group callEConferenceRoomType ConferenceRoomType()void SetConferenceRoomType(EConferenceRoomType eRoomType)
EDisconnectReasonenum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_WRONG_ROOM_ATTR
Breaking change Change options for log configuration
- Removed the
SManagerInitParamstruct and added theConfigurationclass. - You can configure the logging method using the
Configurationclass.
API changes
Changed
-
SManagerInitParamstruct →Configurationclass 1-to-1 callGroup callPrevious PlanetKit 5.5 char* szBasePathconst WString& GetBasePath()char* szDbPathconst WString& GetDatabasePath()int nLogLevelvoid SetLogLevel(ELogLevel eLogLevel)ELogLevel GetLogLevel()bEnableFileLogvoid EnableLogOutput(bool bEnable)bool IsLogOutputEnabled()
Added
Configurationclass 1-to-1 callGroup callConfigurationPtr Create(const WString& strBasePath, const WString& strDatabasePath)void SetLogSizeLimit(ELogSizeLimit eLogSizeLimit)ELogSizeLimit GetLogSizeLimit()
Removed
SManagerInitParamstructbool bEnableStdOutLogbool bEnableJupLog
Code examples
-
When initializing
PlanetKit, you can specify the log level and logging method.class YourApplication {
public:
void Initialize() {
PlanetKit::ConfigurationPtr config = PlanetKit::Configuration::Create(L"yourPlanetKitBinaryPath", L"yourDataPath");
config->EnableLogOutput(true);
config->SetLogLevel(PlanetKit::ELogLevel::PLNK_LOG_SIMPLE);
config->SetLogSizeLimit(PlanetKit::ELogSizeLimit::PLNK_LOG_SIZE_LIMIT_MEDIUM);
PlanetKit::PlanetKitManager::Initialize(config);
}
};
Breaking change Remove API for checking audio subgroup information
- Removed unused APIs.
- Subgroup information for audio changes can be obtained through the
IConferenceEvent::OnMyAudioDescriptionUpdated()event.
API changes
Removed
SubGroupManagerclass Group callconst char *GetMyAudioSubGroupName()const char *GetMyAudioTaggedSubGroupName()
Breaking change Change API for exchanging messages when starting a call
- Removed the
SCallInitDatastructure and added theCallStartMessageclass. - Changed the structure to a class format to limit the length of the call start message to 200 bytes and always end it with a null character, allowing automatic string checking during API calls.
API changes
Changed
-
SCallInitDatastruct →CallStartMessageclass 1-to-1 callPrevious PlanetKit 5.5 bool bPreperationbool IsInPreparation()char datastatic CallStartMessagePtr Create(const WString& strMessage)const WStringOptional& GetMessage() -
SCallConnectedParamstruct →CallConnectedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage() -
SCallVerifiedParamstruct →CallVerifiedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage()
Code examples
bool YourApplication::CreateCallStartMessage() {
PlanetKit::PlanetKitManagerPtr planetKitMnager = PlanetKit::PlanetKitManager::GetInstance();
// Prepare your start message
std::wstring yourMessage = L"your message";
// Create CallStartMessage
PlanetKit::CallStartMessagePtr callStartMessage = PlanetKit::CallStartMessage::Create(yourMessage);
if(*callStartMessage == nullptr) {
// `PlanetKit::CallStartMessage::Create()` API will return nullptr if szMessage is nullptr or if it exceeds 200 bytes after being converted to UTF-8.
return false;
}
...
return true;
}
Breaking change Change data session API functionality
- Specified detailed failure information for data sessions.
- Changed the name of the data session API to a more specific and meaningful name.
- Changed the specification for range of data session stream ID from 100–1000 to 100–999.
API changes
Changed
-
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 bool MakeRecvDataSession(int nStreamId, IDataSessionReceiver *pIDataSessionReceiver, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander *pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeSendDataSession(int nStreamId, EDataSessionType eType, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander* pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler) -
SubGroupclass Group callPrevious PlanetKit 5.5 bool MakeRecvDataSession(int nStreamId, IDataSessionReceiver *pIDataSessionReceiver, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander *pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void *pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeSendDataSession(int nStreamId, EDataSessionType eType, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander* pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler) -
IDataSessionHanderclass →IInboundDataSessionHandler,IOutboundDataSessionHandlerclass 1-to-1 callGroup call
Added
EDataSessionFailReasonenum 1-to-1 callGroup callPLNK_DATA_SESS_FAIL_REASON_NONEPLNK_DATA_SESS_FAIL_REASON_INTERNALPLNK_DATA_SESS_FAIL_REASON_UNSUPPORTEDPLNK_DATA_SESS_FAIL_REASON_NOT_INCOMINGPLNK_DATA_SESS_FAIL_REASON_ALREADY_EXISTPLNK_DATA_SESS_FAIL_REASON_INVALID_IDPLNK_DATA_SESS_FAIL_REASON_INVALID_TYPE
PlanetKitCallclass 1-to-1 callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
Subgroupclass Group callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
ICallEventclass 1-to-1 callvoid OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType)
IConferenceEventclass Group callvoid OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)
IInboundDataSessionHandlerclass 1-to-1 callGroup callvoid OnReceive(DataSessionStreamIdT nStreamId, DataSessionFramePtr pFrame)void OnSuccess(InboundDataSessionPtr pInboundDataInterface, void* pUserData)void OnError(void* pUserData, EDataSessionFailReason eFailReason)void OnClosed(void* pUserData, EDataSessionClosedReason eClosedReason)
IOutboundDataSessionHandlerclass 1-to-1 callGroup callvoid OnTooLongQueuedData(OutboundDataSessionPtr pDataSession, bool bEnabled)void OnUnsupportedStreamId(OutboundDataSessionPtr pDataSession)void OnSuccess(OutboundDataSessionPtr pDataSession, void* pUserData)void OnError(void* pUserData, EDataSessionFailReason eFailReason)void OnClosed(void* pUserData, EDataSessionClosedReason eClosedReason)
InboundDataSessionclass 1-to-1 callGroup callDataSessionStreamIdT GetStreamId()IInboundDataSessionHandler* GetReceiver()
OutboundDataSessionclass 1-to-1 callGroup callbool Send(const void* pData, unsigned int nDataSize, unsigned long long llTimestamp)DataSessionStreamIdT GetStreamId()unsigned long long GetCurrentOffset()IOutboundDataSessionHandler* GetHandler()bool ChangeDestination(UserIdPtr pPeerId, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Removed
IDataSessionExceptionHandlerclass
Code examples
-
Prepare class instances to be used when receiving data sessions in advance.
class InboundDataSessionHandler : public PlanetKit::IInboundDataSessionHandler {
public:
void OnReceive(PlanetKit::DataSessionStreamIdT nStreamId, PlanetKit::DataSessionFramePtr pFrame) override {
...
};
void OnSuccess(PlanetKit::InboundDataSessionPtr pInboundDataInterface, void* pUserData) override {
...
};
void OnError(void* pUserData, PlanetKit::EDataSessionFailReason eFailReason) override {
...
};
void OnClosed(void* pUserData, PlanetKit::EDataSessionClosedReason eClosedReason) override {
...
};
} -
When the peer creates an outbound data session and sends data using
OutboundDataSession::Send(), theICallEvent::OnDataSessionIncoming()orIConferenceEvent::OnDataSessionIncoming()event occurs.class YourCallEventListener : public PlanetKit::ICallEvent {
public:
void OnDataSessionIncoming(PlanetKit::DataSessionStreamIdT nStreamId, PlanetKit::EDataSessionType eType) override {
m_yourApp->DataSessionIncoming(nStreamId, eType);
}
private:
YourApplication* m_yourApp = nullptr;
};
class YourApplication {
public:
void DataSessionIncoming(PlanetKit::DataSessionStreamIdT nStreamId, PlanetKit::EDataSessionType eType) {
...
}
} -
You can search for existing inbound data sessions and create a new inbound data session if none exists.
class YourApplication {
public:
void DataSessionIncoming(PlanetKit::DataSessionStreamIdT nStreamId, PlanetKit::EDataSessionType eType) {
PlanetKit::InboundDataSessionPtr inboundDataSession;
bool result = m_pCall->GetInboundDataSession(nStreamId, &inboundDataSession);
if(result == true) {
// InboundDatasession with nStreamId is already exist.
}
else {
m_pCall->MakeInboundDataSession(nStreamId, nullptr, &m_inboundDataSessionHandler);
}
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
InboundDataSessionHandler m_inboundDataSessionHandler;
} -
If
PlanetKitCall::MakeInboundDataSession()is successful,IInboundDataSessionHandler::OnSuccess()is called and you can receive data throughIInboundDataSessionHandler::OnReceive(). If an error occurs during data reception, you can receive error information throughIInboundDataSessionHandler::OnError().class InboundDataSessionHandler : public PlanetKit::IInboundDataSessionHandler {
public:
void OnReceive(PlanetKit::DataSessionStreamIdT nStreamId, PlanetKit::DataSessionFramePtr pFrame) override {
// Now, you can receive data from this session.
};
void OnSuccess(PlanetKit::InboundDataSessionPtr pInboundDataInterface, void* pUserData) override {
// Succeed to make data session.
};
void OnError(void* pUserData, PlanetKit::EDataSessionFailReason eFailReason) override {
...
};
void OnClosed(void* pUserData, PlanetKit::EDataSessionClosedReason eClosedReason) override {
...
};
}
Breaking change Change the name of service ticket ID (stid) to app server data
- Changed the name from
stidtoAppServerDatato make the name clearer. - Changed the size limit of app server data from 256 bytes to 4096 bytes.
API changes
Changed
-
ConnectParamclass →MakeCallParamclass 1-to-1 callPrevious PlanetKit 5.5 void SetStid(const char *szStid)void SetAppServerData(const WString& strAppServerData)const char* GetStid()const WString& GetAppServerData() -
ConnectParamclass →ConferenceParamclass Group callPrevious PlanetKit 5.5 void SetStid(const char *szStid)void SetAppServerData(const WString& strAppServerData)const char* GetStid()const WString& GetAppServerData()
Breaking change Change "Send short data" function
- Removed the functionality to send
PlanetKitConference::SendShortData()to multiple recipients, and modified the API so that it can be called only for a single recipient.- You can send data to all participants using
PlanetKitConference::SendShortDataToAllPeers().
- You can send data to all participants using
- Changed the data size that can be sent in
PlanetKitCall::SendShortData()andPlanetKitConference::SendShortData().- The total data size that can be transmitted is up to 100 bytes for the
nSizeparameter and up to 800 bytes for thepDataparameter. - If the length limit is exceeded, transmission will fail.
- The total data size that can be transmitted is up to 100 bytes for the
API changes
Changed
-
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 bool SendShortData(const SShortData *pShortData, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PlanetKitConferenceclass Group callPrevious PlanetKit 5.5 bool SendShortData(const SShortData *pShortData, SShortDataTarget *pTargets, unsigned int unTargetCount, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, UserIdPtr pPeerId, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Added
bool SendShortDataToAllPeers(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Breaking change Remove SetDisableAutoDisconnectOnBadNetwork() of ConferenceParam
- Starting with PlanetKit 5.5, callbacks that notify network state changes are always called. Accordingly,
SetDisableAutoDisconnectOnBadNetwork()has been removed.
API changes
Changed
-
IConferenceEventclass Group callPrevious PlanetKit 5.5 void OnBadNetworkDetected(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnBadNetworkResolved(PlanetKitConferencePtr pPlanetKitConference)void OnNetworkReavailable(PlanetKitConferencePtr pPlanetKitConference)
Removed
ConferenceJoinParamclass Group callvoid SetDisableAutoDisconnectOnBadNetwork(bool bDisable)
Breaking change Enhance camera device management API
- We have revamped the camera device management API to streamline the process of handling video capture.
- The camera device management API has been enhanced so that the camera is turned on only when sending data to Planet Cloud.
- You can now control the initial state of the camera in video calls.
- 1-to-1 call: Property or parameter of type
EInitialMyVideoStatehave been added toMakeCallParam,PlanetKitCall::AcceptCall(), andPlanetKitCall::EnableVideo(), allowing you to control the camera state when starting or switching to a video call. - Group call: Property or parameter of type
EInitialMyVideoStatehave been added toConferenceParamandPlanetKitConference::EnableVideo(), allowing you to control the camera state when starting or switching to a video call.
- 1-to-1 call: Property or parameter of type
API changes
Changed
-
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 void AcceptCall(EMediaType eMediaType, SCallInitData *pCallInitData)void AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, bool bRecordOnCloud = false)bool EnableVideoSend(VideoCapturer *pVideoCaptuer, void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideoSend(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PlanetKitConferenceclass Group callPrevious PlanetKit 5.5 bool EnableVideoSend(VideoCapturer *pVideoCaptuer, void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideoSend(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Added
EVideoControlResultenum 1-to-1 callGroup callEVideoControlResult_PreviewAlreadyExistEVideoControlResult_CreateRenderFailEVideoControlResult_CameraIsAlreadyInUseByAnotherApplicationEVideoControlResult_PreviewHandleIsInvalidEVideoControlResult_PreviewReceiverIsInvalid
EInitialMyVideoStateenum 1-to-1 callGroup callPLNK_INITIAL_MY_VIDEO_STATE_RESUMEPLNK_INITIAL_MY_VIDEO_STATE_PAUSE
ECameraControlResultenum 1-to-1 callGroup callPLNK_CAMERA_CONTROL_RESULT_NONEPLNK_CAMERA_CONTROL_RESULT_FAILED_TO_CREATE_CAMERA_DEVICEPLNK_CAMERA_CONTROL_RESULT_SELECTED_CAMERA_IS_REMOVEDPLNK_CAMERA_CONTROL_RESULT_NO_CAMERA_SELECTED
CameraControllerclass 1-to-1 callGroup callvoid GetCapturerInfo(CameraInfoArray& arrCameraInfo)EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)CameraInfoOptional GetSelectedCamera()void RegisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)void DeregisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)bool IsRunning()bool StartPreview(WindowHandle hWind)bool StartPreview(IVideoReceiver* pReceiver)bool StopPreview(WindowHandle hWind)bool StopPreview(IVideoReceiver* pReceiver)ECapturerMediaType GetCapturerMediaType()CameraInfoPtr GetVideoCapturerInfo()EVideoCapturerType GetCapturerType()bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool DeregisterVideoInterceptor()VideoRenderPtr GetRender(WindowHandle hWnd)bool WriteFrameData(SVideoFrame& sVideoFrame)bool IsPostingFrameAvailable(UINT64 ull64tick)
ConferenceParamclass Group callEInitialMyVideoState GetInitialMyVideoState()void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)
MakeCallParamclass 1-to-1 callEInitialMyVideoState GetInitialMyVideoState()void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)
PlanetKitCallclass 1-to-1 callvoid RemoveAllMyVideoViewAndReceiver()void RemoveAllPeerVideoViewAndReceiver()
PlanetKitConferenceclass Group callvoid RemoveAllMyVideoViewAndReceiver()bool AddPeerVideoReceiver(UserIdPtr pPeerID, IVideoReceiver* pReceiver)bool RemovePeerVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerVideoViewAndReceiver()
Removed
VideoCaptureManagerclass 1-to-1 callGroup callVideoCaptureclass 1-to-1 callGroup call
Code examples
-
The newly added
CameraController::StartPreview(WindowHandle)andCameraController::StartPreview(IVideoReceiver*)allow you to preview video from the local user's camera.-
The following is an example of using
CameraController::StartPreview(WindowHandle).class YourApplication {
void StartPreview() {
// Get PlanetKit::CameraController instance from PlanetKit::PlanetKitManager.
auto planetKitCameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
// Start preview.
planetKitCameraController->StartPreview(m_hWnd);
}
private:
// Prepare your window handle (HWND) where you want to render video from the camera device.
HWND m_hWnd;
}
-
-
If you want to handle video processing directly, you can implement your own video receiver by inheriting from
IVideoReceiverand useCameraController::StartPreview(IVideoReceiver*).class MyVideoReceiver : public PlanetKit::IVideoReceiver {
public:
void OnVideo(const PlanetKit::SVideoFrame* pVideoFrame, PlanetKit::UserIdPtr pUserID) {
// Handling video processing.
...
}
};
class YourApplication {
void StartPreview() {
// Get PlanetKit::CameraController instance from PlanetKit::PlanetKitManager.
auto planetKitCameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
// Start preview.
planetKitCameraController->StartPreview(&m_myVideoReceiver);
}
private:
// Prepare your video receiver where you want to render video from the camera device.
MyVideoReceiver m_myVideoReceiver;
} -
To render the local user's video on the screen after connecting to a 1-to-1 call or a group call, you can use
AddMyVideoView(WindowHandle)orAddMyVideoView(IVideoReceiver*). -
The camera automatically turns on and off when
EnableVideo()andDisableVideo()are called. -
After switching to a video call using
EnableVideo(), you can register a view for rendering usingAddMyVideoView(), and the video will appear on the screen.class YourApplication {
void AddMyVideoView() {
m_pCall->AddMyVideoView(m_hMyView);
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
HWND m_hMyView;
} -
When migrating from version 4.4 in terms of functionality to turn on or off the camera, refer to the code example below.
-
Removed the
VideoCaptureManagerandVideoCapturerclasses, and added theCameraControllerclass for controlling camera devices.- You don't need to directly call methods such as
VideoCapturer::Start()orVideoCapturer::Pause()after creating the device usingVideoCaptureManager::CreateVideoCapturer().
- You don't need to directly call methods such as
-
Call
CameraController::GetCapturerInfo()to obtain information about the cameras connected to the device, and callCameraController::SelectCamera()to specify the camera to use.class YourApplication {
public:
void SelectCamera() {
PlanetKit::CameraControllerPtr cameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
PlanetKit::CameraInfoArray arrayCameraInfo;
cameraController->GetCapturerInfo(arrayCameraInfo);
for(size_t idx = 0; idx < arrayCameraInfo.Size(); ++idx) {
// Pick your camera
std::wcout << arrayCameraInfo[idx]->GetDeviceName().c_str() << L" " << arrayCameraInfo[idx]->GetDeviceUid() << std::endl;
if(arrayCameraInfo[idx]->GetDeviceUid() == L"camera_unique_id_that_you_want") {
cameraController->SelectCamera(arrayCameraInfo[idx]);
break;
}
}
}
} -
If you want to check the preview before or after the call connection, you can use
CameraController::StartPreview()to view the camera video. -
If the camera selection API is not called, the first camera among the connected cameras will be selected.
class YourApplication {
public:
void StartPreview() {
// Get PlanetKit::CameraController instance from PlanetKit::PlanetKitManager.
auto planetKitCameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
// Start preview.
planetKitCameraController->StartPreview(m_hWnd);
}
void StopPreview() {
// Get PlanetKit::CameraController instance from PlanetKit::PlanetKitManager.
auto planetKitCameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
// Stop preview.
planetKitCameraController->StopPreview(m_hWnd);
}
private:
// Prepare your window handle (HWND) where you want to render video from the camera device.
HWND m_hWnd;
};
-
-
When migrating from version 4.4 in terms of rendering video on the screen, refer to the code example below.
-
In versions 4.4 or lower, the process of rendering the local user's video is as follows.
-
Select the camera.
class YourApplication {
public:
void SelectCamera() {
PlanetKit::VideoCaptureManager* captureManager = PlanetKit::PlanetKitManager::GetInstance()->GetVideoCaptureManager();
static constexpr int maxCameraInfoCount = 25;
PlanetKit::SCameraInfo arrayCameraInfo[maxCameraInfoCount];
size_t nDeviceCount = 0;
captureManager->GetCapturerInfos(arrayCameraInfo, maxCameraInfoCount, &nDeviceCount);
for(size_t idx = 0; idx < nDeviceCount; ++idx) {
if(strcmp(arrayCameraInfo[idx].szDeviceUid, "camera_unique_id_that_you_want") == 0) {
if(m_videoCapture != nullptr) {
m_videoCapture->Release();
m_videoCapture = nullptr;
}
m_videoCapture = captureManager->CreateVideoCapturer(&arrayCameraInfo[idx]);
break;
}
}
}
} -
Create a rendering class to render video on the screen.
class YourApplication {
public:
void CreateRender() {
if(m_videoRender != nullptr) {
m_videoRender->Release();
}
// Create video render.
m_videoRender = PlanetKit::VideoRender::CreateRender(m_hMyView);
m_videoRender->AddRef();
}
private:
PlanetKit::VideoRender* m_videoRender = nullptr;
} -
Call
PlanetKitCall::EnableVideoSend()to turn on the video.
// Prepare result handler.
class YourEnableVideoResult : PlanetKit::IResultHandler {
public:
YourEnableVideoResult(YourApplication* yourApp) {
m_yourApp = yourApp;
}
void OnResult(void* pUserData, bool bSuccess) override {
m_yourApp->VideoEnabled(bSuccess);
}
private:
YourApplication* m_yourApp = nullptr;
}
class YourApplication {
public:
void VideoEnabled(bool bSuccess) {
if(bSuccess == true) {
m_videoCapture->AddPreviewRender(m_videoRender);
m_videoCapture->Start();
}
}
void ToVideoCall() {
// Enable video call.
m_pCall->EnableVideoSend(m_videoCapture, nullptr, &m_enableVideoResult);
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
PlanetKit::VideoCaptureManager* m_videoCapture = nullptr;
PlanetKit::VideoRender* m_videoRender = nullptr;
YourEnableVideoResult m_enableVideoResult{ this };
HWND m_hMyView;
}
-
-
Starting from version 5.5, the process of rendering the local user's video is as follows.
class YourApplication {
void ToVideoCallAsResume() {
// Enable video call.
m_pCall->EnableVideo(PlanetKit::EInitialMyVideoState::PLNK_INITIAL_MY_VIDEO_STATE_RESUME, this, [](void* pUserData, bool bSuccess) {
// Camera device will be started automatically on success of `EnableVideo()` because the first parameter is `EInitialMyVideoState::PLNK_INITIAL_MY_VIDEO_STATE_RESUME`.
if(bSuccess == true) {
YourApplication* pApp = static_cast<YourApplication*>(pUserData);
// Add my view for rendering of local user's video.
pApp->m_pCall->AddMyVideoView(pApp->m_hMyView);
// Add peer view for rendering of remote user's video.
pApp->m_pCall->AddPeerVideoView(pApp->m_hPeerView);
}
});
}
void ToVideoCallAsPaused() {
// Enable video call.
m_pCall->EnableVideo(PlanetKit::EInitialMyVideoState::PLNK_INITIAL_MY_VIDEO_STATE_PAUSE, this, [](void* pUserData, bool bSuccess) {
// Camera device will be stopped automatically on success of `EnableVideo()` because the first parameter is `EInitialMyVideoState::PLNK_INITIAL_MY_VIDEO_STATE_PAUSE`.
if(bSuccess == true) {
// Add peer view for rendering of remote user's video.
pApp->m_pCall->AddPeerVideoView(pApp->m_hPeerView);
// Add my view for rendering of local user's video.
pApp->m_pCall->AddMyVideoView(pApp->m_hMyView);
// Currently, the sending video state is paused, and you can call PlanetKitCall::ResumeMyVideo() to start video capture.
...
}
});
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
HWND m_hMyView;
HWND m_hPeerView;
}
-
Breaking change Change screen share functionality
- Removed
VideoCaptureManager *GetVideoCaptureManager()provided byPlanetKitManagerand providesScreenShareControllerPtr GetScreenShareController()to control screen share. - You can obtain screen share information through
ScreenShareController::GetScreenShareInfos()and then start screen share by callingScreenShareController::StartScreenShareCapture().
API changes
Added
PlanetKitCallclass 1-to-1 callbool AddMyScreenShareVideoView(WindowHandle hWind)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoView(WindowHandle hWind)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllMyScreenShareVideoViewAndReceiver()bool AddPeerScreenShareVideoView(WindowHandle hWind)bool AddPeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoView(WindowHandle hWind)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerScreenShareVideoViewAndReceiver()
PlanetKitConferenceclass Group callbool AddMyScreenShareVideoView(WindowHandle hWind)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoView(WindowHandle hWind)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllMyScreenShareVideoViewAndReceiver()bool AddPeerScreenShareVideoView(UserIdPtr pUserPtr, WindowHandle hWind)bool AddPeerScreenShareVideoReceiver(UserIdPtr pUserPtr, IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoView(WindowHandle hWind)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerScreenShareVideoViewAndReceiver()
ScreenShareControllerclass 1-to-1 callGroup callbool GetScreenShareInfos(ScreenShareInfoArray& arrScreenShare)VideoFramePtr GetScreenShareSnapshot(ScreenShareInfoPtr pScreenShareInfo)EVideoControlResult StartScreenShareCapture(ScreenShareInfoPtr pScreenShareInfo)bool StopScreenCapture()bool RegisterCapturerEvent(IVideoCapturerEvent* pDelegate)bool DeregisterCapturerEvent()EVideoCapturerType GetCapturerType()bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool DeregisterVideoInterceptor()VideoRenderPtr GetRender(WindowHandle hWnd)bool WriteFrameData(SVideoFrame& sVideoFrame)bool IsPostingFrameAvailable(UINT64 ull64tick)
Removed
VideoCaptureManagerclass 1-to-1 callGroup callVideoCaptureclass 1-to-1 callGroup call
Code examples
-
In versions 4.4 or lower, you could implement screen share using the following method.
-
Create a render class for rendering.
class YourApplication {
public:
void CreateRenderForScreenShare() {
if(m_videoRender != nullptr) {
m_videoRender->Release();
}
// Create video render.
m_videoRender = PlanetKit::VideoRender::CreateRender(m_hMyView);
m_videoRender->AddRef();
}
private:
HWND m_hWnd;
} -
Select the screen for screen share.
class YourApplication {
public:
void SelectScreenShare() {
PlanetKit::VideoCaptureManager* captureManager = PlanetKit::PlanetKitManager::GetInstance()->GetVideoCaptureManager();
static constexpr int maxScreenShareInfoCount = 25;
PlanetKit::SScreenInfo arrayScreenShareInfo[maxScreenShareInfoCount];
size_t nScreenShareInfoCount = 0;
captureManager->GetCapturerInfos(arrayScreenShareInfo, maxScreenShareInfoCount, &nScreenShareInfoCount);
for(size_t idx = 0; idx < nScreenShareInfoCount; ++idx) {
if(strcmp(arrayScreenShareInfo[idx].szName, "screen_share_name_that_you_want") == 0) {
if(m_screenShareCapture != nullptr) {
m_screenShareCapture->Release();
m_screenShareCapture = nullptr;
}
m_screenShareCapture = captureManager->CreateVideoCapturer(&arrayScreenShareInfo[idx]);
break;
}
}
}
private:
PlanetKit::VideoCapturer* m_screenShareCapture = nullptr;
} -
Start the screen share.
class YourScreenShareResult : public PlanetKit::IResultHandler {
public:
YourScreenShareResult(YourApplication* yourApp) {
m_yourApp = yourApp;
}
void OnResult(void* pUserData, bool bSuccess) {
m_yourApp->ScreenShareResult(bSuccess);
}
private:
YourApplication* m_yourApp = nullptr;
}
class YourApplication {
public:
void ScreenShareResult(bool bSuccess) {
// Set screen share capturer → `PlanetKitCall` instance.
m_pCall->SetMyScreenShareCapturer(m_screenShareCapture);
// Add renderer to capturer.
m_screenShareCapture->->AddPreviewRender(m_videoRender);
// Start screen share.
m_screenShareCapture->Start();
}
void StartScreenShare() {
m_pCall->StartMyScreenShare(nullptr, &m_screenShareResult);
}
private:
PlanetKit::VideoCapturer* m_screenShareCapture = nullptr;
PlanetKit::PlanetKitCall* m_pCall = nullptr;
YourScreenShareResult m_screenShareResult{ this };
}
-
-
For versions 5.5 and later, you can start screen share as follows.
-
The newly added
PlanetKitCall::AddMyScreenShareVideoView()can render the local user's screen share video.class YourApplication {
PlanetKit::ScreenShareInfoPtr SelectScreenShare() {
auto pScreenShareController = PlanetKit::PlanetKitManager::GetInstance()->GetScreenShareController();
PlanetKit::ScreenShareInfoArray screenShareInfos;
pScreenShareController->GetScreenShareInfos(screenShareInfos);
size_t selected = 0;
for(size_t idx = 0; idx < screenShareInfos.Size(); ++idx) {
if(screenShareInfos.At(idx)->GetName() == L"screen_share_name_that_you_want") {
selected = idx;
break;
}
}
return screenShareInfos.At(selected);
}
void StartScreenShare() {
auto selectedScreenShareInfo = SelectScreenShare();
// Choose screen share infomation and start.
m_pCall->StartMyScreenShare(selectedScreenShareInfo, this, [](void* pUserData, bool bSuccess) {
if(bSuccess == true) {
YourApplication* pApp = static_cast<YourApplication*>(pUserData);
pApp->m_pCall->AddMyScreenShareVideoView(m_hScreenShareView);
}
});
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
HWNd m_hScreenShareView;
}; -
You can render a remote user's screen share video with
PlanetKitCall::AddPeerScreenShareVideoView().class YourApplication {
void StartRenderingPeerScreenShare() {
m_pCall->AddPeerScreenShareVideoView(m_hScreenShareRenderWnd);
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
HWNd m_hScreenShareRenderWnd;
};
-
Breaking change Refine 1-to-1 call end API into three APIs with different parameters
EndCall()has been refined into three APIs with different parameters to be used depending on situations.
API changes
Added
PlanetKitCallclass 1-to-1 callvoid EndCall()void EndCall(const WString& strUserReleaseCode)void EndCallWithError(const WString& strUserReleaseCode)
Removed
PlanetKitCallclass 1-to-1 callbool EndCall(EDisconnectReason eCallEndReason)
Spec change Add a class to verify data received from the cloud server
- Added the
CCParamclass that lets you interpret string data received from the cloud server to verify information.
API changes
Added
CCParamclass 1-to-1 callconst WString& GetPeerID()const WString& GetPeerServiceID()EMediaType GetMediaType()
PlanetKitManagerclass 1-to-1 callCCParamPtr CreateCCParam(const char* strCCParam)
Code examples
-
Use the string obtained from the cloud server as a parameter when calling the
PlanetKitManager::CreateCCParam()API.class YourApplication {
public:
PlanetKit::CCParamPtr CreateCCParam(const char* ccParam) {
PlanetKit::PlanetKitManagerPtr planetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::CCparamPtr ccParam = planetKitManager->CreateCCParam(ccParam);
}
}; -
Using the obtained
CCParamclass instance, you can check the sender's ID, service ID, and call media type.class YourApplication {
public:
PlanetKit::CCParamPtr CreateCCParam(const char* ccParam) {
PlanetKit::PlanetKitManagerPtr planetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::CCparamPtr ccParam = planetKitManager->CreateCCParam(ccParam);
std::wcout << ccParam->GetUserID() << L" " << ccParam->GetPeerServiceID() << L" " << ccParam->GetMediaType() == PlanetKit::EMediaType::PLNK_MEDIA_TYPE_AUDIOVIDEO ? L"Video" : L"Audio" << std::endl;
}
}; -
You can use
CCParamto create an instance of theVerifyCallParamclass usingVerifyCallParam::Create().class YourApplication {
public:
PlanetKit::VerifyCallParamPtr CreateVerifyCallParam(const char* ccParam) {
PlanetKit::PlanetKitManagerPtr planetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::CCparamPtr ccParam = planetKitManager->CreateCCParam(ccParam);
PlanetKit::UserIdPtr myId(L"yourId", L"yourServiceId");
PlanetKit::VerifyCallParamPtr verifyCallParam = VerifyCallParam::Create(myId, ccParam);
return verifyCallParam;
}
}
Spec change Add limitation to the display name
- The display name set by the
SetDisplayName()method inConferenceParamis now limited to 128 bytes including null termination, after being converted to UTF-8. - Any trailing part of the string that exceeds the maximum size is discarded.
Spec change Change mirror mode APIs for camera video and screen share video
- Starting from version 5.5, the local user's video is automatically mirrored without API calls.
- To horizontally flip the video of the local user, you can obtain the registered
VideoRenderusingCameraController::GetRender()and then flip the video. - Added the
EVideoMirrorTypeenum, which can be set inVideoRender.- This enum includes
PLNK_MIRROR_TYPE_AUTO,PLNK_MIRROR_TYPE_MIRRORED, andPLNK_MIRROR_TYPE_UNMIRROREDvalues.- The
PLNK_MIRROR_TYPE_AUTOstate automatically selects the mirror mode asPLNK_MIRROR_TYPE_MIRROREDwhen rendering the local user's video andPLNK_MIRROR_TYPE_UNMIRROREDwhen rendering a remote user's video.
- The
- This enum includes
API changes
Added
EVideoMirrorTypeenum 1-to-1 callGroup callPLNK_MIRROR_TYPE_AUTO = 0PLNK_MIRROR_TYPE_MIRRORED = 1PLNK_MIRROR_TYPE_UNMIRRORED = 2
VideoRenderclass 1-to-1 callGroup callvoid SetMirrorType(EVideoMirrorType eMirrorType)EVideoMirrorType GetMirrorType()
Code examples
-
You can obtain the
VideoRenderclass registered during rendering and set the mirror mode.class YourApplication {
public:
void MirrorMyVideo() {
PlanetKit::CameraControllerPtr cameraController = PlanetKit::PlanetKitManager::GetInstance()->GetCameraController();
PlanetKit::VideoRenderPtr render = cameraController->GetRender(m_hWnd);
render->SetMirrorType(PlanetKit::EVideoMirrorType::PLNK_MIRROR_TYPE_MIRRORED);
}
private:
m_hWnd;
}
Spec change Add camera video screen rotation API
- You can specify the screen rotation angle in a
CameraInfoclass instance.- The rotation angle specified in
CameraInfois also applied to the video transmitted to the peer. - If you want to rotate the video only on the local user's screen, you can obtain the
VideoRenderand rotate it.
- The rotation angle specified in
API changes
Added
CameraInfoclass 1-to-1 callGroup callEVideoRotation GetRotation() constvoid SetRotation(EVideoRotation eRotation)
VideoRenderclass 1-to-1 callGroup callvoid SetRotation(EVideoRotation eRotation)EVideoRotation GetRotation()
Enhancement Add a feature to provide volume changes as events
- Previously, you had to periodically call the relevant API in a polling manner to check the volume, but now an event callback API that provides volume changes as events has been added.
- Now, the registered event occurs whenever the volume changes.
- If the event occurrence interval is not set, the event will occur every 500 milliseconds.
API changes
Added
AudioDescriptionInfostruct 1-to-1 callGroup callbool bEnableAudioDescriptionunsigned int unAudioDescriptionInterval
MakeCallParamclass 1-to-1 callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()
VerifyCallParamclass 1-to-1 callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()
ConferenceParamclass Group callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()
ICallEventclass 1-to-1 callvoid OnPeerAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)void OnMyAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)
IConferenceEventclass Group callvoid OnPeersAudioDescriptionUpdated(PlanetKitConferencePtr pPlanetKitConference, unsigned char ucAverageVolumeLevel, const PeerAudioDescriptionArray& arrPeer)void OnMyAudioDescriptionUpdated(PlanetKitConferencePtr pPlanetKitConference, const MyAudioDescription& sMyAudioDescription)
Enhancement Add a feature to subscribe to the local user's media state changes
- Added a class that enables you to subscribe to media status changes of the local user in group calls.
API changes
Added
PlanetKitCallclass 1-to-1 callMyMediaStatusPtr GetMyMediaStatus()
PlanetKitConferenceclass Group callMyMediaStatusPtr GetMyMediaStatus()
IMyMediaStatusEventclass 1-to-1 callGroup callvoid OnRegisterResult(MyMediaStatusPtr pMyStatus, bool bResult)void OnUpdateVideoStatus(MyMediaStatusPtr pMyStatus, VideoStatus sStatus)void OnUpdateVideoSubgroup(MyMediaStatusPtr pMyStatus, const WString& strSubgroupName)void OnUpdateScreenShareState(MyMediaStatusPtr pMyStatus, EScreenShareState eState)void OnUpdateScreenShareSubgroup(MyMediaStatusPtr pMyStatus, const WString& strSubgroupName)void OnMuted(MyMediaStatusPtr pMyStatus)void OnUnmuted(MyMediaStatusPtr pMyStatus)void OnAudioSubgroup(MyMediaStatusPtr pMyStatus, const WString& strDestinationSubgroup, const WString& strTaggedSubgroup)void OnMyAudioDescriptionUpdated(MyMediaStatusPtr pMyStatus, const MyAudioDescription& sMyAudioDescription)
MyMediaStatusclass Group callbool Register(IMyMediaStatusEvent* pListener)bool Unregister()WStringOptional GetVideoSubgroupName()bool GetVideoStatus(OUT VideoStatus* pResultStatus)WStringOptional GetScreenShareSubgroupName()EScreenShareState GetScreenShareState()bool IsAudioMuted()
Code examples
-
Create an event listener that inherits from the
IMyMediaStatusEventclass.class YourApplicationMyMediaStatusListener : public PlanetKit::IMyMediaStatusEvent {
public :
void OnRegisterResult(PlanetKit::MyMediaStatusPtr pMyStatus, bool bResult) override;
// ...
}; -
Create member variables to manage
MyMediaStatusandIMyMediaStatusEventinstances.class YourApplication {
private :
PlanetKit::MyMediaStatusPtr m_pMyMediaStatus;
YourApplicationMyMediaStatusListener m_cMyListener;
} -
After connecting to the group call using
PlanetManager::JoinConference(), obtain aMyMediaStatusinstance and register the event listener.class YourApplication::GetMyMediaStatus() {
PlanetKit::PlanetKitManagerPtr planetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::PlanetKitConferencePtr pConference = planetKitManager->GetConferenceInstance();
PlanetKit::MyMediaStatusPtr pMyMediaStatus = pConference->GetMyMediaStatus();
// keep my media status instance
this->m_pMyMediaStatus = pMyMediaStatus;
// Register event class
this->m_pMyMediaStatus->Register(&m_cMyListener);
} -
When there is a change in the local user's media status during a group call, the callback functions implemented by inheriting from
IMyMediaStatusEventare invoked.
Enhancement Add video sharing mode for screen share
- Added an API for setting the video sharing mode to the
PlanetKitCallandPlanetKitConferenceclasses. - When capturing screen share, if you set the video sharing mode, the transmission frame rate will change from 5 FPS to 10 FPS.
API changes
Added
PlanetKitCallclass 1-to-1 callbool SetMyScreenShareVideoShareMode(bool bVideoShareMode)bool IsMyScreenShareVideoShareModeEnabled()
CallConnectedParamclass 1-to-1 callbool IsSupportVideoShareMode()
PlanetKitConferenceclass Group callbool SetMyScreenShareVideoShareMode(bool bVideoShareMode)bool IsMyScreenShareVideoShareModeEnabled()
ConferenceConnectedParamclass 1-to-1 callbool IsSupportVideoShareMode()
Code examples
-
After connecting to a 1-to-1 call or group call, the
ICallEvent::OnConnected()orIConferenceEvent::OnConnected()callback API is called. -
You can check whether the video sharing mode is enabled through the
IsSupportVideoShareMode()API in the parametersCallConnectedParamandConferenceConnectedParamprovided when the callback is invoked.void YourApplicationConferenceEventListener::OnConnected(PlanetKit::PlanetKitConferencePtr pPlanetKitConference, PlanetKit::ConferenceConnectedParamPtr pParam) {
if(pConnectedParam->IsSupportVideoShareMode() == true) {
// You can set video share mode flag on this call.
}
} -
If the result of
IsSupportVideoShareMode()istrue, you can set the video sharing mode flag using theSetMyScreenShareVideoShareMode()API provided byPlanetKitCallorPlanetKitConference.void YourApplication::SetVideoShareMode(bool bEnable) {
PlanetKit::PlanetKitManager* pManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::PlanetKitConferencePtr pConference = pManager->GetConferenceInstance();
pConference->SetMyScreenShareVideoShareMode(bEnable);
}
Enhancement Improve the performance of AEC
- Improved the performance of the acoustic echo canceller (AEC) function.
- There are no API changes.
Enhancement Change the mirror mode operating method
- Made modifications so that, when the mirror mode is applied, the video will be flipped horizontally only on the local user's screen and other participants will see it in an unmirrored state.
Enhancement Add a feature to view screen share information in statistics
- Added an API for obtaining statistics of screen share.
API changes
Added
StatisticsScreenShareSendclass 1-to-1 callGroup callStatisticsNetwork* Network()StatisticsVideo* Video()
StatisticsScreenShareRecvclass 1-to-1 callGroup callconst WStringOptional& GetSubgroupName()UserIdPtr GetPeerID()StatisticsNetwork* Network()StatisticsVideo* Video()
Enhancement Add call start failure codes
- Added codes for call start failure.
API changes
Added
EStartFailReasonenum 1-to-1 callGroup callPLNK_START_FAIL_REASON_TOO_LONG_APP_SERVER_DATAPLNK_START_FAIL_REASON_NOT_INITIALIZED
Enhancement Remove API for setting audio priority
- Removed the unused
PlanetKitConference::AudioSendSetHighPriority()API.
API changes
Removed
PlanetKitConferenceclass Group callbool AudioSendSetHighPriority(bool bHighPriority, void *pResultUserData, IResultHandler *pResultHandler)
Enhancement Add and remove call disconnection codes
- Deleted unnecessary or duplicate call disconnection codes and added new call disconnection codes.
- Added disconnect reasons related to system shutdown and logout.
- System shutdown:
PLNK_DISCONNECT_REASON_SYSTEM_DESTROY - Entering sleep mode:
PLNK_DISCONNECT_REASON_SYSTEM_SLEEP - Logout:
PLNK_DISCONNECT_REASON_SYSTEM_LOGOFF - The call ends with a corresponding disconnect reason.
- System shutdown:
- Added a disconnect reason for the case when the Planet Cloud server fails to deliver app server data to the app server.
PLNK_DISCONNECT_REASON_APP_SERVER_DATA_ERROR
- Added a disconnect reason for the case when the allowed call time is exceeded.
PLNK_DISCONNECT_REASON_MAX_CALL_TIME_EXCEEDED
- Added a disconnect reason for the case when the allowed number of calls is exceeded within a short period
PLNK_DISCONNECT_REASON_SERVICE_TOO_MANY_REQUESTS
- Added a disconnect reason for screen lock
PLNK_DISCONNECT_REASON_DESKTOP_SCREEN_LOCKED- This disconnect reason occurs only on desktop systems when the desktop screen is locked by the user or due to system inactivity. When the peer is using a desktop and the screen is locked, the call will end and you will receive this reason through an event.
- Added disconnect reasons related to system shutdown and logout.
API changes
Added
EDisconnectReasonenum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_INTERNAL_ERRORPLNK_DISCONNECT_REASON_USER_ERRORPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERRORPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRCPLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORKPLNK_DISCONNECT_REASON_SYSTEM_DESTROYPLNK_DISCONNECT_REASON_SYSTEM_SLEEPPLNK_DISCONNECT_REASON_SYSTEM_LOGOFFPLNK_DISCONNECT_REASON_SERVICE_ACCESS_TOKEN_ERRORPLNK_DISCONNECT_REASON_APP_SERVER_DATA_ERRORPLNK_DISCONNECT_REASON_MAX_CALL_TIME_EXCEEDEDPLNK_DISCONNECT_REASON_SERVICE_TOO_MANY_REQUESTSPLNK_DISCONNECT_REASON_DESKTOP_SCREEN_LOCKED
Removed
EDisconnectReasonenum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_LOCALPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_REMOTEPLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_USER_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_USER_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_BAD_NETWORK_IN_CONFERENCEPLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK_IN_CALLPLNK_DISCONNECT_REASON_SERVICE_APIKEY_ERROR
Enhancement Add a feature to capture snapshot images of full screen or specific windows
- Added an API for capturing snapshot images of the full screen or specific windows.
API changes
Added
ScreenShareControllerclass 1-to-1 callGroup callVideoFramePtr GetScreenShareSnapshot(ScreenShareInfoPtr pScreenShareInfo)
Enhancement Add a cloud recording function
- Added a feature to record 1-to-1 calls on the cloud.
- If you need to use the feature, please contact the PlanetKit team.
API changes
Added
ERecordOnCloudDeactivateReasonenum 1-to-1 callPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_INTERNALPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_ACTIVATION_FAILEDPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_MAX_RECORDING_DURATION_REACHED
RecordOnCloudclass 1-to-1 callbool IsActivated()DeactivateReasonOptional GetDeactivatedReason()
ICallEventclass 1-to-1 callvoid OnRecordOnCloudUpdated(PlanetKitCallPtr pPlanetKitCall, RecordOnCloudPtr pRecordOnCloud)
PlanetKitCallclass 1-to-1 callvoid AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), bool bRecordOnCloud = false)
MakeCallParamclass 1-to-1 callvoid SetRecordOnCloud(bool bRecord)bool IsRecordOnCloud()
Enhancement Add an event triggered when no video source is input
If no video source is inputted for a certain period of time, an event will occur.
API changes
Added
ICallEventclass 1-to-1 callvoid OnMyVideoNoSource(PlanetKitCallPtr pPlanetKitCall)
IConferenceEventclass Group callvoid OnMyVideoNoSource(PlanetKitConferencePtr pPlanetKitConference)
Enhancement Add a screen share stop event
- When the local user calls
Hold()while screen sharing, the screen share function will automatically stop.
API changes
Added
ICallEventclass 1-to-1 callvoid OnMyScreenShareStoppedByHold(PlanetKitCallPtr pPlanetKitCall)
IConferenceEventclass Group callvoid OnMyScreenShareStoppedByHold(PlanetKitConferencePtr pPlanetKitConference)
Enhancement Add codes to identify the requester when a disconnection event occurs
- Added codes to determine who requested the call disconnection when the call ends.
API changes
Added
EDisconnectSourceenum 1-to-1 callGroup callPLNK_DISCONNECT_SOURCE_UNDEFINEDPLNK_DISCONNECT_SOURCE_CALLEEPLNK_DISCONNECT_SOURCE_CALLERPLNK_DISCONNECT_SOURCE_PARTICIPANTPLNK_DISCONNECT_SOURCE_CLOUD_SERVERPLNK_DISCONNECT_SOURCE_APP_SERVER
CallDisconnectedParamclass 1-to-1 callEDisconnectSource GetDisconnectSource()
ConferenceDisconnectedParamclass Group callEDisconnectSource GetDisconnectSource()
Enhancement Add audio receiver APIs for 1-to-1 calls
- Added an interface to receive the local user's audio data and another interface to receive the peer's audio data.
API changes
Added
PlanetKitCallclass 1-to-1 callbool RegisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool RegisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)ICallAudioReceiverclass 1-to-1 callvoid OnAudio(const SAudioData * pAudioData)
Code examples
-
Implement a class that inherits from the
ICallAudioReceiverclass to receive data.class YourCallAudioReceiver : public PlanetKit::ICallAudioReceiver {
void OnAudio(const PlanetKit::SAudioData * pAudioData) override {
...
}
}; -
After the call is connected, use
PlanetKitCall::RegisterMyAudioReceiver()to register the implemented audio receiver class.class YourApplication {
void RegisterAudioReceiver() {
m_pCall->RegisterMyAudioReceiver(&m_myAudioReceiver);
}
private:
PlanetKit::PlanetKitCallPtr m_pCall;
YourCallAudioReceiver m_myAudioReceiver;
} -
Once registration is complete, the
ICallAudioReceiver::OnAudio()event occurs every time user audio data is generated, and you can check the audio data using theSAudioDatapassed as a parameter.class YourCallAudioReceiver : public PlanetKit::ICallAudioReceiver {
void OnAudio(const PlanetKit::SAudioData * pAudioData) override {
...
}
};
Enhancement Add a configuration for playing the end tone regardless of the call state
- Added a configuration for playing the end tone regardless of the call state.
API changes
Added
MakeCallParamclass 1-to-1 callvoid PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfCallState()
VerifyCallParamclass 1-to-1 callvoid PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfCallState()
ConferenceParamclass Group callvoid PlayEndtoneRegardlessOfConferenceState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfConferenceState()
Enhancement Make improvements so that the Windows CA certificate is used when a default certificate is unavailable
- If
auth\\cacert.pemcertificate exists, that file will be used. - If the file does not exist, the Windows CA certificate will be used.
API change list
Changed
-
ICallEventclass 1-to-1 callPrevious PlanetKit 5.5 void OnCallConnect(PlanetKitCall *pPlanetKitCall, SCallConnectedParam *pConnectedParam)void OnConnected(PlanetKitCallPtr pPlanetKitCall, CallConnectedParamPtr pConnectedParam)void OnCallWaitAnswer(PlanetKitCall *pPlanetKitCall)void OnWaitAnswer(PlanetKitCallPtr pPlanetKitCall)void OnCallVerified(PlanetKitCall *pPlanetKitCall, SCallVerifiedParam *pVerifiedParam)void OnVerified(PlanetKitCallPtr pPlanetKitCall, CallVerifiedParamPtr pVerifiedParam)void OnCallPreperationFinished(PlanetKitCall *pPlanetKitCall)void OnPreparationFinished(PlanetKitCallPtr pPlanetKitCall)void OnCallDisconnect(PlanetKitCall *pPlanetKitCall, const SCallDisconnectedParam *pParam)void OnDisconnected(PlanetKitCallPtr pPlanetKitCall, CallDisconnectedParamPtr pDisconnectedParam)void OnPeerVideoPaused(PlanetKitCall *pPlanetKitCall, EVideoPauseReason eVideoPauseReason)void OnPeerVideoPaused(PlanetKitCallPtr pPlanetKitCall, EVideoPauseReason eVideoPauseReason)void OnPeerVideoResumed(PlanetKitCall *pPlanetKitCall)void OnPeerVideoResumed(PlanetKitCallPtr pPlanetKitCall)void OnShortDataReceived(PlanetKitCall *pPlanetKitCall, const SShortDataParam *pShortDataParam)void OnReceivedShortData(PlanetKitCallPtr pPlanetKitCall, ShortDataParamPtr pShortDataParam)void OnVideoEnabledByPeer(PlanetKitCall *pPlanetKitCall, bool bVideoCapturerStartSuccess)void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)void OnVideoDisabledByPeer(PlanetKitCall *pPlanetKitCall, const EMediaDisabledReason eReason)void OnVideoDisabledByPeer(PlanetKitCallPtr pPlanetKitCall, const EMediaDisabledReason eReason)void OnPeerHold(PlanetKitCall *pPlanetKitCall, const char *szHoldReason)void OnReceivedPeerHold(PlanetKitCallPtr pPlanetKitCall, const WString& strHoldReason)void OnPeerUnhold(PlanetKitCall *pPlanetKitCall)void OnReceivedPeerUnhold(PlanetKitCallPtr pPlanetKitCall)void OnNetworkUnavailable(PlanetKitCall *pPlanetKitCall, bool bIsPeer, int nDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitCallPtr pPlanetKitCall, bool bIsPeer, int nDisconnectAfterSec)void OnNetworkReavailable(PlanetKitCall *pPlanetKitCall, bool bIsPeer)void OnNetworkReavailable(PlanetKitCallPtr pPlanetKitCall, bool bIsPeer)void OnPeerMicMuted(PlanetKitCall *pPlanetKitCall)void OnPeerMicMuted(PlanetKitCallPtr pPlanetKitCall)void OnPeerMicUnmuted(PlanetKitCall *pPlanetKitCall)void OnPeerMicUnmuted(PlanetKitCallPtr pPlanetKitCall)void OnMuteRequest(PlanetKitCall *pPlanetKitCall, bool bEnableMute)void OnReceivedMuteMyAudioRequest(PlanetKitCallPtr pPlanetKitCall, bool bEnableMute)void OnPeerStartScreenShare(PlanetKitCall *pPlanetKitCall)void OnPeerStartedScreenShare(PlanetKitCallPtr pPlanetKitCall)void OnPeerStopScreenShare(PlanetKitCall *pPlanetKitCall, bool bHasReason, int nUserReason)void OnPeerStoppedScreenShare(PlanetKitCallPtr pPlanetKitCall, bool bHasReason, int nUserReason)void OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType) -
IConferenceEventclass Group callPrevious PlanetKit 5.5 void OnConferenceConnect(PlanetKitConference *pPlanetKitConference, SConferenceConnectedParam *pParam)void OnConnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceConnectedParamPtr pParam)void OnConferenceDisconnect(PlanetKitConference *pPlanetKitConference, const SConferenceDisconnectedParam *pParam)void OnDisconnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceDisconnectedParamPtr pParam)void OnPeerListUpdate(PlanetKitConference *pPlanetKitConference, ConferencePeerUpdateParam* pParam)void OnPeerListUpdate(PlanetKitConferencePtr pPlanetKitConference, ConferencePeerUpdateParamPtr pParam)void OnPeerVideoUpdate(PlanetKitConference *pPlanetKitConference, ConferenceVideoUpdatedParam *pParam)void OnPeersVideoUpdated(PlanetKitConferencePtr pPlanetKitConference, ConferenceVideoUpdatedParam* pParam)void OnPublicSubgroupPeerUpdate(PlanetKitConference *pPlanetKitConference, const ConferenceSubGroupUpdateParam *pParam)void OnPublicSubgroupUpdated(PlanetKitConferencePtr pPlanetKitConference, const ConferenceSubgroupUpdatePeerArray& arrSubgroupUpdatePeer)void OnShortDataReceived(PlanetKitConference *pPlanetKitConference, const SShortDataParam *pParam)void OnReceivedShortData(PlanetKitConferencePtr pPlanetKitConference, ShortDataParamPtr pParam)void OnPeersHold(PlanetKitConference *pPlanetKitConference, CommonReceivedHolds * pParam)void OnReceivedPeersHold(PlanetKitConferencePtr pPlanetKitConference, const PeerHoldArray& arrPeerHold)void OnPeersUnhold(PlanetKitConference *pPlanetKitConference)void OnReceivedPeersUnhold(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& arrPeer)void OnPeersMicMuted(PlanetKitConference *pPlanetKitConference, PeerInfos * pPeerInfos)void OnPeersMicMuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray)void OnPeersMicUnmuted(PlanetKitConference *pPlanetKitConference, PeerInfos * pPeerInfos)void OnPeersMicUnmuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray)void OnMuteRequest(PlanetKitConference *pPlanetKitConference, PeerInfo* pParam, bool bEnableMute)void OnReceivedMuteMyAudioRequest(PlanetKitConferencePtr pPlanetKitConference, PeerPtr pPeer, bool bEnableMute)void OnReceiveAppControlMessage(PlanetKitConference *pPlanetKitConference, const void *pMessage, int nMessageSize)void OnReceivedAppControlMessage(PlanetKitConferencePtr pPlanetKitConference, const void* pMessage, int nMessageSize)void OnBadNetworkDetected(PlanetKitConference *pPlanetKitConference, int nWillDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnBadNetworkResolved(PlanetKitConference *pPlanetKitConference)void OnNetworkReavailable(PlanetKitConferencePtr pPlanetKitConference)void OnDataSessionIncoming(const char* szSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnPeerScreenSharingUpdateInfo(ConferencePeerScreenSharingUpdateInfo* pPeerScreenSharingUpdateInfo)void OnPeerScreenShareUpdated(ConferencePeerScreenShareUpdatedParam* pPeerScreenShareUpdateInfo)void OnConferenceException(PlanetKitConference *pPlanetKitConference, ConferenceExceptionMessage* pExceptionMessage)void OnException(PlanetKitConferencePtr pPlanetKitConference, const ConferenceExceptionArray& arrExceptionMessage)void OnBadNetworkDetected(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnNetworkUnavailable(PlanetKitConferencePtr pPlanetKitConference, int nWillDisconnectAfterSec)void OnBadNetworkResolved(PlanetKitConferencePtr pPlanetKitConference)void OnNetworkReavailable(PlanetKitConferencePtr pPlanetKitConference)void OnDataSessionIncoming(const char* szSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType) -
ConferencePeerUpdateParamclass Group callPrevious PlanetKit 5.5 SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()ConferencePeer* AddedAt(size_t index)const PeerArray& GetAddedPeer()ConferencePeer* RemovedAt(size_t index)const PeerArray& GetRemovedPeer() -
ConferenceVideoUpdatedParamclass Group callPrevious PlanetKit 5.5 PeerVideoStatus* At(size_t nIdx)const PeerVideoStatusArray& GetPeerVideoStatus()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup() -
ConferenceSubgroupUpdatePeerclass Group callPrevious PlanetKit 5.5 ConferencePeerInfo* GetPeerInfo() constPeerPtr GetPeer() constconst CommonStringArray* GetSubscribedSubgroup() constconst WStringArray& GetSubscribedSubgroupNames() constconst CommonStringArray* GetUnsubscribedSubgroup() constconst WStringArray& GetUnsubscribedSubgroup() const -
ConferenceExceptionclass Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()PeerPtr GetPeer()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()const char* GetMessage()const WString& GetMessage() -
SCallConnectedParamstruct →CallConnectedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage()bool bVideoSendHWCodecEnabledbool IsVideoSendHardwareCodecEnabled() -
SCallVerifiedParamstruct →CallVerifiedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage() -
SCallDisconnectedParamstruct →CallDisconnectedParamclass 1-to-1 callPrevious PlanetKit 5.5 bool bByRemotebool IsDisconnectedByRemote()EDisconnectReason eReasonEDisconnectReason GetReason()const char* szUserRelCodeconst WString& GetUserReleaseCode() -
SConferenceConnectedParamstruct →ConferenceConnectedParamclass Group callPrevious PlanetKit 5.5 bool bVideoSendHWCodecEnabledbool IsVideoSendHardwareCodecEnabled() -
SConferenceDisconnectedParamstruct →ConferenceDisconnectedParamclass Group callPrevious PlanetKit 5.5 bool bByRemotebool IsDisconnectedByRemote()EDisconnectReason eEndReasonEDisconnectReason GetReason()const char* szUserRelCodeconst WString& GetUserReleaseCode() -
ConferenceExceptionMessageclass →ConferenceExceptionArrayclass Group call -
ConferencePeerScreenSharingUpdateInfoclass →ConferencePeerScreenShareUpdatedParamclass Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()PeerPtr GetPeer()SubGroup* GetSubGroup()SubgroupPtr GetSubgroup()EScreenSharingState ScreenSharingState()EScreenShareState ScreenShareState() -
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 5.5 bool SendShortData(const SShortData *pShortData, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Hold(const char *szHoldReason, bool bPauseReceive, void *pResultUserData, IResultHandler *pResultHandler)bool Hold(const WStringOptional& strHoldReason = NullOptional, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool MuteMyAudio(bool bMute, void *pMuteResultUserData, IResultHandler *pMuteResultHandler)bool MuteMyAudio(bool bMute, void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool PauseMyVideo(void *pResultUserData, IResultHandler *pResultHandler)bool PauseMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ResumeMyVideo(void *pResultUserData, IResultHandler *pResultHandler)bool ResumeMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideo(EMediaDisabledReason eDisableReason, void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Unhold(void *pResultUserData, IResultHandler *pResultHandler)bool Unhold(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerMute(bool bMute, void *pResultUserData, IResultHandler *pResultHandler)bool RequestPeerMute(bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilencePeerAudio(bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeerAudio(bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartMyScreenShare(ScreenShareInfoPtr pScreenShareInfo, void *pResultUserData, IResultHandler *pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(void *pResultUserData, IResultHandler *pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(int nUserReason, void *pResultUserData, IResultHandler *pResultHandlerbool StopMyScreenShare(int nUserReason, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StartUserAcousticEchoCancellerReference(void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StopUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool MakeRecvDataSession(int nStreamId, IDataSessionReceiver *pIDataSessionReceiver, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander *pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeSendDataSession(int nStreamId, EDataSessionType eType, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander* pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler)void AcceptCall(EMediaType eMediaType, SCallInitData *pCallInitData)void AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, bool bRecordOnCloud = false)bool EnableVideoSend(VideoCapturer *pVideoCaptuer, void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideoSend(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PlanetKitConferenceclass Group callPrevious PlanetKit 5.5 bool RequestPeerVideo(const char *szPeerId, const char *szPeerServiceId, const char *szSubGroupName, EVideoResolution eVideoResolution, void* pResultUserData, IRequestVideoResultHandler* pResultHandler, void* pReqVidResResultUserData, IRequestVideoResultHandler* pReqVidResResultHander)bool RequestPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, RequestPeerVideoResolutionCallback pCallback)bool StopPeerVideo(const char *szPeerId, const char *szPeerServiceId, const char *szSubGroupName, void* pUserData, IRequestVideoResultHandler* pResultHandler)bool StopPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData = nullptr, RequestPeerVideoResultCallback pCallback = nullptr)bool SendShortData(const SShortData *pShortData, SShortDataTarget *pTargets, unsigned int unTargetCount, void *pResultUserData, IResultHandler *pResultHandler)bool SendShortData(const WString& strType, void* pData, unsigned int nSize, UserIdPtr pPeerId, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Hold(const char *szHoldReason, void *pResultUserData, IResultHandler *pResultHandler)bool Hold(const WStringOptional& strHoldReason = NullOptional, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestMutePeerAudioSend(const char *szPeerId, const char *szPeerServiceId, bool bMute, void *pResultUserData, IResultHandler *pResultHandler)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartMyScreenShare(const char* szSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool StartMyScreenShare(ScreenShareInfoPtr pScreenShareInfo, const WStringOptional& strSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyScreenShareGroup(const char* szToSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyScreenShareDestination(const WString& strToSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerScreenShare(const char* szPeerId, const char* szPeerServiceId, const char* szSubgroupName, void *pResultUserData, IRequestVideoResultHandler* pResultHandler)bool RequestPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)bool StopPeerScreenShare(const char* szPeerId, const char* szPeerServiceId, const char* szSubgroupName, void *pResultUserData, IRequestVideoResultHandler* pResultHandler)bool StopPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)const char* MyDisplayName()const WStringOptional& GetMyDisplayName()bool MuteMyAudio(bool bMute, void *pMuteResultUserData, IResultHandler *pMuteResultHandler)bool MuteMyAudio(bool bMute, void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool PauseMyVideo(void *pPauseResultUserData, IResultHandler *pPauseResultHandler)bool PauseMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ResumeMyVideo(void *pResumeResultUserData, IResultHandler *pResumeResultHandler)bool ResumeMyVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(void *pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideo(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool Unhold(void* pResultUserData, IResultHandler* pResultHandler)bool Unhold(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData, IResultHandler* pResultHandler)bool RequestPeerMute(UserIdPtr pPeerId, bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool RequestPeersMute(bool bMute, void* pUserData, IResultHandler* pResultHandler)bool RequestPeersMute(bool bMute, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilencePeersAudio(bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeersAudio(bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(void* pUserData, IResultHandler* pResultHandler)bool StopMyScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopMyScreenShare(int nUserReason, void* pUserData, IResultHandler* pResultHandler)bool StopMyScreenShare(int nUserReason, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StartUserAcousticEchoCancellerReference(void* pUserData, IResultHandler* pResultHandler)bool StartUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopUserAcousticEchoCancellerReference(void *pResultUserData, IResultHandler *pResultHandler)bool StopUserAcousticEchoCancellerReference(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableVideoSend(VideoCapturer *pVideoCaptuer, void *pResultUserData, IResultHandler *pResultHandler)bool EnableVideo(EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableVideoSend(void *pResultUserData, IResultHandler *pResultHandler)bool DisableVideo(EMediaDisabledReason eDisableReason = PLNK_MEDIA_DISABLE_REASON_USER, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
AudioDeviceclass 1-to-1 callGroup callPrevious PlanetKit 5.5 bool PlayFile(const char* szPath, unsigned int unLoop)bool PlayFile(const WString& strFilePath, unsigned int unLoop) -
MakeCallParamclass 1-to-1 callPrevious PlanetKit 5.5 static CallInitParam* CreateMakeCallParamWithAccessToken(const InitUserId & myID, const InitUserId & peerID, const char* szKey, int nKeyLen)static MakeCallParamPtr CreateWithAccessToken(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strToken)static CallInitParam* CreateMakeCallParamWithAPIKey(const InitUserId & myID, const InitUserId & peerID, const char* szKey)static MakeCallParamPtr CreateWithAPIKey(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strKey)const char* RingTonePath()const WString& GetRingTonePath()const char* RingBackTonePath()const WString& GetRingBackTonePath()const char* HoldTonePath()const WString& GetHoldTonePath()const char* GetStid()const wchar_t* GetAppServerData()void SetStid(const char* szStid)void SetAppServerData(const wchar_t* szAppServerData)void SetRingTonePath(const char* szRingTonePath)void SetRingTonePath(const WString& strRingTonePath)void SetRingBackTonePath(const char* szRingBackTonePath)void SetRingBackTonePath(const WString& strRingBackTonePath)void SetHoldTonePath(const char* szHoldTonePath)void SetHoldTonePath(const WString& strHoldTonePath) -
VerifyCallParamclass 1-to-1 callPrevious PlanetKit 5.5 static CallInitParam* CreateVerifyCallParam(const InitUserId & myID, const char* szCcParam)static VerifyCallParamPtr Create(UserIdPtr pMyID, CCParamPtr pCCParam)const char* RingTonePath()const WString& GetRingTonePath()const char* RingBackTonePath()const WString& GetRingBackTonePath()const char* HoldTonePath()const WString& GetHoldTonePath()void SetRingTonePath(const char* szRingTonePath)void SetRingTonePath(const WString& strRingTonePath)void SetRingBackTonePath(const char* szRingBackTonePath)void SetRingBackTonePath(const WString& strRingBackTonePath)void SetHoldTonePath(const char* szHoldTonePath)void SetHoldTonePath(const WString& strHoldTonePath) -
CommonSetSharedContentclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* ServiceId()UserIdPtr GetPeerID() -
ConferenceParamclass Group callPrevious PlanetKit 5.5 static ConferenceJoinParam * CreateWithAccessToken(const InitUserId & myID, const char* szAccessToken, int nAccessTokenLength)static ConferenceParamPtr CreateWithAPIKey(UserIdPtr pMyID, const WString& strRoomID, const WString& strRoomServiceID, const WString& strAPIKey)static ConferenceJoinParam* CreateWithAPIKey(const InitUserId & myID, const char* szAPIKey)static ConferenceParamPtr CreateWithAccessToken(UserIdPtr pMyID, const WString& strRoomID, const WString& strRoomServiceID, const WString& strToken)const char* DisplayName()const WStringOptional& GetDisplayName()void SetDisplayName(const char* szMyDisplayName)void SetDisplayName(const WStringOptional& strMyDisplayName)const char* RoomId()const WString& GetRoomId()void SetRoomId(const char* szRoomId)void SetRoomId(const WString& strRoomId)const char* RoomServiceId()const WString& GetRoomServiceId()void SetRoomServiceId(const char *szRoomServiceId)void SetRoomId(const WString& strRoomId)const char* GetStid()const wchar_t* GetAppServerData()void SetStid(const char* szStid)void SetAppServerData(const wchar_t* szAppServerData) -
PlanetKitManagerclass 1-to-1 callGroup callPrevious PlanetKit 5.5 bool UpdateServerUrl(const char *szServerUrl)bool UpdateServerUrl(const WString& strServerUrl)bool GetServerUrl(char * szServerUrl, size_t nBufferSize)WString& GetServerUrl()const char* PlanetKitVersion()const WString& PlanetKitVersion() -
StatisticsVideoRecvclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* PeerServiceId()UserIdPtr GetPeerID()const char* SubgroupName()const WStringOptional& GetSubgroupName() -
StatisticsScreenShareRecvclass 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetPeerID()const char* PeerServiceId()UserIdPtr GetPeerID()const char* SubgroupName()const WStringOptional& GetSubgroupName() -
SubGroupclass - Group callPrevious PlanetKit 5.5 const char *GetSubGroupName()const WStringOptional& GetSubgroupName() -
SubGroupManagerclass Group callPrevious PlanetKit 5.5 bool SubscribeSubgroup(const char *szSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void *pResultUserData, ISubscribeSubgroupResultHandler *pResultHandler)bool SubscribeSubgroup(const WString& strSubgroupName, ESubgroupPeerUpdateType eUpdateType, bool bEnableVideoUpdate, bool bUseDataSession, void* pUserData = nullptr, SubscribeResult pCallback = nullptr)bool UnsubscribeSubgroup(const char *szSubgroupName, void *pResultUserData, IUnsubscribeSubgroupResultHandler *pResultHandler)bool UnsubscribeSubgroup(const WString& strSubgroupName, void* pUserData = nullptr, UnsubscribeResult pCallback = nullptr)SubGroupOptional GetSubGroup(const char *szSubGroupName)SubgroupOptional GetSubgroup(const WString& strSubgroupName)SubGroupOptional GetSubGroup(const char *szSubGroupName)SubgroupPtr GetMainRoom()bool ChangeMyAudioSend(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyAudioDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyAudioSend(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyAudioDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool TagMainRoomAudioSend(const char *szTagSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool SetTagMyAudioOfMainRoom(const WString& strTagSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SilenceAudio(const char *szSubgroupName, bool bSilence, void *pResultUserData, IResultHandler *pResultHandler)bool SilencePeersAudio(const WStringOptional& strSubgroupName, bool bSilence, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool EnableAutoVolumeControl(const char **szFocusSubgroups, size_t nFocusSubgroupCnt, void *pResultUserData, IResultHandler *pResultHandler)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetPeerVolumeSetting(const char *szPeerId, const char *szPeerServiceId, bool bSetForAllSubgroups, const char *szSubgroupNameToApply, unsigned char ucVolume, void *pResultUserData, IResultHandler *pResultHandler)bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)const String& GetMyVideoSubGroupName()WStringOptional GetMyVideoSubgroupName()bool VideoSendChangeSubgroup(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyVideoDestination(const WString& strDestinationSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool VideoSendChangeSubgroup(const char *szDstSubgroupName, void *pResultUserData, IResultHandler *pResultHandler)bool ChangeMyVideoDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ChangeMyAudioDestinationToMainRoom(void* pUserData, IResultHandler* pCallback)bool ChangeMyAudioDestinationToMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ClearTagMyAudioOfMainRoom(void* pUserData, IResultHandler* pCallback)bool ClearTagMyAudioOfMainRoom(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData, IResultHandler* pCallback)bool SetPeersAudioAutoVolumeControl(const WStringArray& arrSubgroupNames, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool ClearPeersAudioAutoVolumeControl(void *pResultUserData, IResultHandler *pResultHandler)bool ClearPeersAudioAutoVolumeControl(void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
IResultHandlerclass →using ResultCallback = void(*)(void* pUserData, bool bSuccess)1-to-1 callGroup call -
ISubscribeSubgroupResultHandlerclass →using SubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupSubscribeFailReason eReason, void* pUserData)Group call -
IUnsubscribeSubgroupResultHandlerclass →using UnsubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupUnsubscribeFailReason eReason, void* pUserData)Group call -
PeerControlclass Group callPrevious PlanetKit 5.5 bool StartScreenShare(const wchar_t* szSubgroupName, void* pUserData, IResultHandler* pResultHandler)bool StartScreenShare(const WStringOptional& strSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopScreenShare(void* pUserData, IResultHandler* pResultHandler)bool StopScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
PeerInfoclass →Peerclass Group callPrevious PlanetKit 5.5 const char* PeerId()UserIdPtr GetUserID()const char* ServiceId()UserIdPtr GetUserID() -
SManagerInitParamstruct →Configurationclass 1-to-1 callGroup callPrevious PlanetKit 5.5 char* szBasePathconst WString& GetBasePath()char* szDbPathconst WString& GetDatabasePath()int nLogLevelvoid SetLogLevel(ELogLevel eLogLevel)ELogLevel GetLogLevel()bEnableFileLogvoid EnableLogOutput(bool bEnable)bool IsLogOutputEnabled() -
SCallInitDatastruct →CallStartMessageclass 1-to-1 callPrevious PlanetKit 5.5 bool bPreperationbool IsInPreparation()char datastatic CallStartMessagePtr Create(const WString& strMessage)const WStringOptional& GetMessage() -
SCallVerifiedParamstruct →CallVerifiedParamclass 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitDataCallStartMessagePtr GetPeerStartMessage() -
ConnectParamclass →MakeCallParamclass 1-to-1 callPrevious PlanetKit 5.5 void SetStid(const char *szStid)void SetAppServerData(const WString& strAppServerData)const char* GetStid()const WString& GetAppServerData() -
ConnectParamclass →ConferenceParamclass Group callPrevious PlanetKit 5.5 void SetStid(const char *szStid)void SetAppServerData(const WString& strAppServerData)const char* GetStid()const WString& GetAppServerData() -
SubGroupclass Group callPrevious PlanetKit 5.5 bool MakeRecvDataSession(int nStreamId, IDataSessionReceiver *pIDataSessionReceiver, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander *pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void *pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeSendDataSession(int nStreamId, EDataSessionType eType, NULLABLE void *pResultUserData, NULLABLE IDataSessionHander* pResultHandler, void *pExceptionUserData, IDataSessionExceptionHandler *pExceptionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler) -
IDataSessionHanderclass →IInboundDataSessionHandler,IOutboundDataSessionHandlerclass 1-to-1 callGroup call
Added
AutoPtrclass 1-to-1 callGroup callbool operator==(const AutoPtr<T>& rhs)bool operator!=(const AutoPtr<T>& rhs)AutoPtr<T>& operator=(const AutoPtr<T>& src)AutoPtr<T>& operator=(T* src)T* operator*()T* operator->()
Optionalclass 1-to-1 callGroup callbool HasValue() constconst T* operator->() constT* operator->()const T& operator*() constT& operator*()Optional<T>& operator=(const Optional<T>& src)Optional<T>& operator=(const T& src)T& Value()const T& Value() const
Arrayclass 1-to-1 callGroup callconst T* Buffer() constT* Buffer()void Resize(size_t size)void SetAt(size_t idx, const T& rhs)size_t Size() constT& At(size_t idx) constT& operator[](size_t idx) const
WStringclass 1-to-1 callGroup calloperator const wchar_t*() constconst wchar_t* c_str() constsize_t Size() constWString& Append(const wchar_t* rhs)bool operator==(const wchar_t* rhs) constbool operator==(const WString& rhs) constbool operator!=(const WString& rhs) constconst wchar_t operator[] (int idx)WString& operator=(const wchar_t* src)WString& operator=(const WString& src)WString& operator+=(const wchar_t* rhs)WString& operator+=(const WString& rhs)WString Substring(const unsigned int unStart, const unsigned unLength = 0) const
CallConnectedParamclass 1-to-1 callCallStartMessagePtr GetPeerStartMessage()bool ShouldFinishPreparation()bool IsInPreparation()bool IsVideoSendHardwareCodecEnabled()bool IsSupportDataSession()bool IsSupportVideoShareMode()
CallVerifiedParamclass 1-to-1 callCallStartMessagePtr GetPeerStartMessage()bool IsPeerUsePreparation()
CallDisconnectedParamclass 1-to-1 callbool IsDisconnectedByRemote()EDisconnectReason GetReason()const WString& GetUserReleaseCode()EDisconnectSource GetDisconnectSource()
ConferenceDisconnectedParamclass Group callbool IsDisconnectedByRemote()EDisconnectReason GetReason()EDisconnectSource GetDisconnectSource()const WString& GetUserReleaseCode()
ConferencePeerScreenShareUpdatedParamclass Group callPeerPtr GetPeer()SubgroupPtr GetSubgroup()EScreenShareState ScreenShareState()
VerifyCallParamclass 1-to-1 callconst WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)void PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfCallState()void SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()
ConferenceParamclass 1-to-1 callconst WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)void SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()void PlayEndtoneRegardlessOfConferenceState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfConferenceState()EInitialMyVideoState GetInitialMyVideoState()void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)
Peerclass Group callEMediaType GetMediaType()const WString& GetDisplayName()EUserEquipmentType GetUserEquipmentType()const WString& GetSipLocalIP()const WString& GetDeviceInfo()bool IsDataSessionSupported()bool IsAudioMuted()HoldStatus GetHoldStatus()const WStringArray& GetSubscribedSubgroupNames()WStringOptional GetVideoSubgroupName()ScreenShareStateResult GetScreenShareState(const WStringOptional& strSubgroupName = NullOptional)VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)VideoStatusResult GetVideoStatus(const WStringOptional& strSubgroupName = NullOptional)WStringOptional GetCurrentVideoSubgroupName()WStringOptional GetCurrentScreenShareSubgroupName()PeerControlPtr CreatePeerControl()SharedContentsOptional GetSharedContents()PeerControlPtr CreatePeerControl()
PeerControlclass Group callPeerPtr GetPeer()bool Register(IPeerControlEvent* pEventListener)void Unregister()bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution)bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, StartVideoResultCallback pCallback)bool StartVideo(const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, StartVideoResolutionCallback pCallback)bool StopVideo(void* pUserData = nullptr, StoptVideoResultCallback pCallback = nullptr)bool StartScreenShare(const WStringOptional& strSubgroupName, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool StopScreenShare(void* pUserData = nullptr, ResultCallback pCallback = nullptr)void SetView(WindowHandle hWnd)void ClearView()void RegisterReceiver(IVideoReceiver* pReceiver)void DeregisterReceiver(IVideoReceiver* pReceiver)void SetScreenShareView(WindowHandle hWnd)void ClearScreenShareView()void RegisterScreenShareReceiver(IVideoReceiver* pReceiver)void DeregisterScreenShareReceiver(IVideoReceiver* pReceiver)
IPeerControlEventclass Group callvoid OnInitialized(PeerControlPtr pPeerControl, bool bResult)void OnMuted(PeerControlPtr pPeerControl)void OnUnmuted(PeerControlPtr pPeerControl)void OnVideoUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, const VideoStatus& videoStatus)void OnScreenShareUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, EScreenShareState eState)void OnSubscribed(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup)void OnUnsubscribed(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup)void OnDisconnected(PeerControlPtr pPeerControl)void OnHold(PeerControlPtr pPeerControl, const WString& strHoldReason)void OnUnHold(PeerControlPtr pPeerControl)void OnSetSharedContents(PeerControlPtr pPeerControl, unsigned int unElapsedAfterSet, const void* pvData, unsigned int unDataSize)void OnUnsetSharedContents(PeerControlPtr pPeerControl)void OnPeerAudioDescriptionUpdated(PeerControlPtr pPeerControl, const PeerAudioDescription& sPeerAudioDescription)
Configurationclass 1-to-1 callGroup callConfigurationPtr Create(const WString& strBasePath, const WString& strDatabasePath)void SetLogSizeLimit(ELogSizeLimit eLogSizeLimit)ELogSizeLimit GetLogSizeLimit()
CCParamclass 1-to-1 callconst WString& GetPeerID()const WString& GetPeerServiceID()EMediaType GetMediaType()
PlanetKitManagerclass 1-to-1 callCCParamPtr CreateCCParam(const char* strCCParam)
bool SendShortDataToAllPeers(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr)PlanetKitCallclass 1-to-1 callvoid EndCall()void EndCall(const WString& strUserReleaseCode)void EndCallWithError(const WString& strUserReleaseCode)bool EnableHookMyAudio(IPlanetKitAudioHook* pAudioHook, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool DisableHookMyAudio(void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool PutHookedMyAudioBack(PlanetKitHookedAudioPtr pHookedAudio)bool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)void RemoveAllMyVideoViewAndReceiver()void RemoveAllPeerVideoViewAndReceiver()bool AddMyScreenShareVideoView(WindowHandle hWind)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoView(WindowHandle hWind)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllMyScreenShareVideoViewAndReceiver()bool AddPeerScreenShareVideoView(WindowHandle hWind)bool AddPeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoView(WindowHandle hWind)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerScreenShareVideoViewAndReceiver()MyMediaStatusPtr GetMyMediaStatus()bool SetMyScreenShareVideoShareMode(bool bVideoShareMode)bool IsMyScreenShareVideoShareModeEnabled()void AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), bool bRecordOnCloud = false)bool RegisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool RegisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)
EDataSessionFailReasonenum 1-to-1 callGroup callPLNK_DATA_SESS_FAIL_REASON_NONEPLNK_DATA_SESS_FAIL_REASON_INTERNALPLNK_DATA_SESS_FAIL_REASON_UNSUPPORTEDPLNK_DATA_SESS_FAIL_REASON_NOT_INCOMINGPLNK_DATA_SESS_FAIL_REASON_ALREADY_EXISTPLNK_DATA_SESS_FAIL_REASON_INVALID_IDPLNK_DATA_SESS_FAIL_REASON_INVALID_TYPE
Subgroupclass Group callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
IInboundDataSessionHandlerclass 1-to-1 callGroup callvoid OnReceive(DataSessionStreamIdT nStreamId, DataSessionFramePtr pFrame)void OnSuccess(InboundDataSessionPtr pInboundDataInterface, void* pUserData)void OnError(void* pUserData, EDataSessionFailReason eFailReason)void OnClosed(void* pUserData, EDataSessionClosedReason eClosedReason)
IOutboundDataSessionHandlerclass 1-to-1 callGroup callvoid OnTooLongQueuedData(OutboundDataSessionPtr pDataSession, bool bEnabled)void OnUnsupportedStreamId(OutboundDataSessionPtr pDataSession)void OnSuccess(OutboundDataSessionPtr pDataSession, void* pUserData)void OnError(void* pUserData, EDataSessionFailReason eFailReason)void OnClosed(void* pUserData, EDataSessionClosedReason eClosedReason)
InboundDataSessionclass 1-to-1 callGroup callDataSessionStreamIdT GetStreamId()IInboundDataSessionHandler* GetReceiver()
OutboundDataSessionclass 1-to-1 callGroup callbool Send(const void* pData, unsigned int nDataSize, unsigned long long llTimestamp)DataSessionStreamIdT GetStreamId()unsigned long long GetCurrentOffset()IOutboundDataSessionHandler* GetHandler()bool ChangeDestination(UserIdPtr pPeerId, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
EVideoControlResultenum 1-to-1 callGroup callEVideoControlResult_PreviewAlreadyExistEVideoControlResult_CreateRenderFailEVideoControlResult_CameraIsAlreadyInUseByAnotherApplicationEVideoControlResult_PreviewHandleIsInvalidEVideoControlResult_PreviewReceiverIsInvalid
EInitialMyVideoStateenum 1-to-1 callGroup callPLNK_INITIAL_MY_VIDEO_STATE_RESUMEPLNK_INITIAL_MY_VIDEO_STATE_PAUSE
ECameraControlResultenum 1-to-1 callGroup callPLNK_CAMERA_CONTROL_RESULT_NONEPLNK_CAMERA_CONTROL_RESULT_FAILED_TO_CREATE_CAMERA_DEVICEPLNK_CAMERA_CONTROL_RESULT_SELECTED_CAMERA_IS_REMOVEDPLNK_CAMERA_CONTROL_RESULT_NO_CAMERA_SELECTED
CameraControllerclass 1-to-1 callGroup callvoid GetCapturerInfo(CameraInfoArray& arrCameraInfo)EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)CameraInfoOptional GetSelectedCamera()void RegisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)void DeregisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)bool IsRunning()bool StartPreview(WindowHandle hWind)bool StartPreview(IVideoReceiver* pReceiver)bool StopPreview(WindowHandle hWind)bool StopPreview(IVideoReceiver* pReceiver)ECapturerMediaType GetCapturerMediaType()CameraInfoPtr GetVideoCapturerInfo()EVideoCapturerType GetCapturerType()bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool DeregisterVideoInterceptor()VideoRenderPtr GetRender(WindowHandle hWnd)bool WriteFrameData(SVideoFrame& sVideoFrame)bool IsPostingFrameAvailable(UINT64 ull64tick)
PlanetKitConferenceclass Group callvoid RemoveAllMyVideoViewAndReceiver()bool AddPeerVideoReceiver(UserIdPtr pPeerID, IVideoReceiver* pReceiver)bool RemovePeerVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerVideoViewAndReceiver()bool AddMyScreenShareVideoView(WindowHandle hWind)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoView(WindowHandle hWind)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllMyScreenShareVideoViewAndReceiver()bool AddPeerScreenShareVideoView(UserIdPtr pUserPtr, WindowHandle hWind)bool AddPeerScreenShareVideoReceiver(UserIdPtr pUserPtr, IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoView(WindowHandle hWind)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)void RemoveAllPeerScreenShareVideoViewAndReceiver()MyMediaStatusPtr GetMyMediaStatus()bool SetMyScreenShareVideoShareMode(bool bVideoShareMode)bool IsMyScreenShareVideoShareModeEnabled()
ScreenShareControllerclass 1-to-1 callGroup callbool GetScreenShareInfos(ScreenShareInfoArray& arrScreenShare)VideoFramePtr GetScreenShareSnapshot(ScreenShareInfoPtr pScreenShareInfo)EVideoControlResult StartScreenShareCapture(ScreenShareInfoPtr pScreenShareInfo)bool StopScreenCapture()bool RegisterCapturerEvent(IVideoCapturerEvent* pDelegate)bool DeregisterCapturerEvent()EVideoCapturerType GetCapturerType()bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool DeregisterVideoInterceptor()VideoRenderPtr GetRender(WindowHandle hWnd)bool WriteFrameData(SVideoFrame& sVideoFrame)bool IsPostingFrameAvailable(UINT64 ull64tick)VideoFramePtr GetScreenShareSnapshot(ScreenShareInfoPtr pScreenShareInfo)
EVideoMirrorTypeenum 1-to-1 callGroup callPLNK_MIRROR_TYPE_AUTO = 0PLNK_MIRROR_TYPE_MIRRORED = 1PLNK_MIRROR_TYPE_UNMIRRORED = 2
VideoRenderclass 1-to-1 callGroup callvoid SetMirrorType(EVideoMirrorType eMirrorType)EVideoMirrorType GetMirrorType()void SetRotation(EVideoRotation eRotation)EVideoRotation GetRotation()
CameraInfoclass 1-to-1 callGroup callEVideoRotation GetRotation() constvoid SetRotation(EVideoRotation eRotation)
AudioDescriptionInfostruct 1-to-1 callGroup callbool bEnableAudioDescriptionunsigned int unAudioDescriptionInterval
IMyMediaStatusEventclass 1-to-1 callGroup callvoid OnRegisterResult(MyMediaStatusPtr pMyStatus, bool bResult)void OnUpdateVideoStatus(MyMediaStatusPtr pMyStatus, VideoStatus sStatus)void OnUpdateVideoSubgroup(MyMediaStatusPtr pMyStatus, const WString& strSubgroupName)void OnUpdateScreenShareState(MyMediaStatusPtr pMyStatus, EScreenShareState eState)void OnUpdateScreenShareSubgroup(MyMediaStatusPtr pMyStatus, const WString& strSubgroupName)void OnMuted(MyMediaStatusPtr pMyStatus)void OnUnmuted(MyMediaStatusPtr pMyStatus)void OnAudioSubgroup(MyMediaStatusPtr pMyStatus, const WString& strDestinationSubgroup, const WString& strTaggedSubgroup)void OnMyAudioDescriptionUpdated(MyMediaStatusPtr pMyStatus, const MyAudioDescription& sMyAudioDescription)
MyMediaStatusclass Group callbool Register(IMyMediaStatusEvent* pListener)bool Unregister()WStringOptional GetVideoSubgroupName()bool GetVideoStatus(OUT VideoStatus* pResultStatus)WStringOptional GetScreenShareSubgroupName()EScreenShareState GetScreenShareState()bool IsAudioMuted()
ConferenceConnectedParamclass 1-to-1 callbool IsSupportVideoShareMode()
StatisticsScreenShareSendclass 1-to-1 callGroup callStatisticsNetwork* Network()StatisticsVideo* Video()
StatisticsScreenShareRecvclass 1-to-1 callGroup callconst WStringOptional& GetSubgroupName()UserIdPtr GetPeerID()StatisticsNetwork* Network()StatisticsVideo* Video()
EStartFailReasonenum 1-to-1 callGroup callPLNK_START_FAIL_REASON_TOO_LONG_APP_SERVER_DATAPLNK_START_FAIL_REASON_NOT_INITIALIZED
EDisconnectReasonenum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_INTERNAL_ERRORPLNK_DISCONNECT_REASON_USER_ERRORPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERRORPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRCPLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORKPLNK_DISCONNECT_REASON_SYSTEM_DESTROYPLNK_DISCONNECT_REASON_SYSTEM_SLEEPPLNK_DISCONNECT_REASON_SYSTEM_LOGOFFPLNK_DISCONNECT_REASON_SERVICE_ACCESS_TOKEN_ERRORPLNK_DISCONNECT_REASON_APP_SERVER_DATA_ERRORPLNK_DISCONNECT_REASON_MAX_CALL_TIME_EXCEEDEDPLNK_DISCONNECT_REASON_SERVICE_TOO_MANY_REQUESTSPLNK_DISCONNECT_REASON_DESKTOP_SCREEN_LOCKED
ERecordOnCloudDeactivateReasonenum 1-to-1 callPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_INTERNALPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_ACTIVATION_FAILEDPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_MAX_RECORDING_DURATION_REACHED
RecordOnCloudclass 1-to-1 callbool IsActivated()DeactivateReasonOptional GetDeactivatedReason()
MakeCallParamclass 1-to-1 callEInitialMyVideoState GetInitialMyVideoState()void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)void SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)AudioDescriptionInfo GetAudioDescriptionInfo()const WString& GetEndTonePath()void SetEndTonePath(const WString& strEndTonePath)void PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)bool IsPlayEndtoneRegardlessOfCallState()void SetRecordOnCloud(bool bRecord)bool IsRecordOnCloud()
ICallEventclass 1-to-1 callvoid OnMyVideoNoSource(PlanetKitCallPtr pPlanetKitCall)void OnMyScreenShareStoppedByHold(PlanetKitCallPtr pPlanetKitCall)void OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnPeerAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)void OnMyAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)void OnRecordOnCloudUpdated(PlanetKitCallPtr pPlanetKitCall, RecordOnCloudPtr pRecordOnCloud)
IConferenceEventclass Group callvoid OnMyVideoNoSource(PlanetKitConferencePtr pPlanetKitConference)void OnMyScreenShareStoppedByHold(PlanetKitConferencePtr pPlanetKitConference)void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)void OnPeersAudioDescriptionUpdated(PlanetKitConferencePtr pPlanetKitConference, unsigned char ucAverageVolumeLevel, const PeerAudioDescriptionArray& arrPeer)void OnMyAudioDescriptionUpdated(PlanetKitConferencePtr pPlanetKitConference, const MyAudioDescription& sMyAudioDescription)
EDisconnectSourceenum 1-to-1 callGroup callPLNK_DISCONNECT_SOURCE_UNDEFINEDPLNK_DISCONNECT_SOURCE_CALLEEPLNK_DISCONNECT_SOURCE_CALLERPLNK_DISCONNECT_SOURCE_PARTICIPANTPLNK_DISCONNECT_SOURCE_CLOUD_SERVERPLNK_DISCONNECT_SOURCE_APP_SERVER
ICallAudioReceiverclass 1-to-1 callvoid OnAudio(const SAudioData * pAudioData)
AudioDatastruct 1-to-1 callunsigned int unBufferSizePlanetKitByte* pBuffer
EAudioSampleTypeenum 1-to-1 callPLNK_AUDIO_SAMPLE_TYPE_SIGNED_FLOAT32 = 0PLNK_AUDIO_SAMPLE_TYPE_SIGNED_SHORT16 = 1
PlanetKitHookedAudioclass 1-to-1 callconst unsigned int GetSampleRate()const unsigned int GetChannel()const EAudioSampleType GetAudioSampleType()const unsigned int GetSampleCount()const unsigned long long GetSequenceNumber()bool SetAudioData(const PlanetKitByte* pBuffer, unsigned int unBufferSize)const AudioData GetAudioData()
IPlanetKitAudioHookclass 1-to-1 callvoid OnHooked(PlanetKitHookedAudioPtr pHookedAudio)
Removed
SCallConnectedParamstruct 1-to-1 callEMediaType eMediaType
ConferencePeerUpdateParamclass Group callsize_t AddedCount()size_t RemovedCount()
ConferenceVideoUpdatedParamclass Group callsize_t GetCount()
ConferenceSubGroupUpdateParamclass Group callMakeCallParamclass 1-to-1 callconst char* GetAPIKey()const char* GetAccessToken()
ConferenceParamclass Group callconst char* GetAPIKey()const char* GetAccessToken()EConferenceRoomType ConferenceRoomType()void SetConferenceRoomType(EConferenceRoomType eRoomType)
EConferenceRoomTypeenum Group callEDisconnectReasonenum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_WRONG_ROOM_ATTRPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_LOCALPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_REMOTEPLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_USER_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_USER_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_LOCALPLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_REMOTEPLNK_DISCONNECT_REASON_BAD_NETWORK_IN_CONFERENCEPLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK_IN_CALLPLNK_DISCONNECT_REASON_SERVICE_APIKEY_ERROR
SManagerInitParamstructbool bEnableStdOutLogbool bEnableJupLog
SubGroupManagerclass Group callconst char *GetMyAudioSubGroupName()const char *GetMyAudioTaggedSubGroupName()
PlanetKitCallclass 1-to-1 callbool EndCall(EDisconnectReason eCallEndReason)
IDataSessionExceptionHandlerclassConferenceJoinParamclass Group callvoid SetDisableAutoDisconnectOnBadNetwork(bool bDisable)
VideoCaptureManagerclass 1-to-1 callGroup callVideoCaptureclass 1-to-1 callGroup callPlanetKitConferenceclass Group callbool AudioSendSetHighPriority(bool bHighPriority, void *pResultUserData, IResultHandler *pResultHandler)