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
AutoPtr
for pointer-type variables. - APIs that explicitly provided
nullptr
have been modified to useOptional
. - Array variables are now provided as
Array
instead of being provided as parameter size and pointer.
- Changed to use
API changes
Changed
-
ICallEvent
class 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)
-
IConferenceEvent
class 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)
-
ConferencePeerUpdateParam
class 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()
-
ConferenceVideoUpdatedParam
class Group callPrevious PlanetKit 5.5 PeerVideoStatus* At(size_t nIdx)
const PeerVideoStatusArray& GetPeerVideoStatus()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
-
ConferenceSubgroupUpdatePeer
class Group callPrevious PlanetKit 5.5 ConferencePeerInfo* GetPeerInfo() const
PeerPtr GetPeer() const
const CommonStringArray* GetSubscribedSubgroup() const
const WStringArray& GetSubscribedSubgroupNames() const
const CommonStringArray* GetUnsubscribedSubgroup() const
const WStringArray& GetUnsubscribedSubgroup() const
-
ConferenceException
class Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()
PeerPtr GetPeer()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
const char* GetMessage()
const WString& GetMessage()
-
SCallConnectedParam
struct →CallConnectedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
bool bVideoSendHWCodecEnabled
bool IsVideoSendHardwareCodecEnabled()
-
SCallVerifiedParam
struct →CallVerifiedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
-
SCallDisconnectedParam
struct →CallDisconnectedParam
class 1-to-1 callPrevious PlanetKit 5.5 bool bByRemote
bool IsDisconnectedByRemote()
EDisconnectReason eReason
EDisconnectReason GetReason()
const char* szUserRelCode
const WString& GetUserReleaseCode()
-
SConferenceConnectedParam
struct →ConferenceConnectedParam
class Group callPrevious PlanetKit 5.5 bool bVideoSendHWCodecEnabled
bool IsVideoSendHardwareCodecEnabled()
-
SConferenceDisconnectedParam
struct →ConferenceDisconnectedParam
class Group callPrevious PlanetKit 5.5 bool bByRemote
bool IsDisconnectedByRemote()
EDisconnectReason eEndReason
EDisconnectReason GetReason()
const char* szUserRelCode
const WString& GetUserReleaseCode()
-
ConferenceExceptionMessage
class →ConferenceExceptionArray
class Group call -
ConferencePeerScreenSharingUpdateInfo
class →ConferencePeerScreenShareUpdatedParam
class Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()
PeerPtr GetPeer()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
EScreenSharingState ScreenSharingState()
EScreenShareState ScreenShareState()
Added
AutoPtr
class 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->()
Optional
class 1-to-1 callGroup callbool HasValue() const
const T* operator->() const
T* operator->()
const T& operator*() const
T& operator*()
Optional<T>& operator=(const Optional<T>& src)
Optional<T>& operator=(const T& src)
T& Value()
const T& Value() const
Array
class 1-to-1 callGroup callconst T* Buffer() const
T* Buffer()
void Resize(size_t size)
void SetAt(size_t idx, const T& rhs)
size_t Size() const
T& At(size_t idx) const
T& operator[](size_t idx) const
CallConnectedParam
class 1-to-1 callCallStartMessagePtr GetPeerStartMessage()
bool ShouldFinishPreparation()
bool IsInPreparation()
bool IsVideoSendHardwareCodecEnabled()
bool IsSupportDataSession()
CallVerifiedParam
class 1-to-1 callCallStartMessagePtr GetPeerStartMessage()
bool IsPeerUsePreparation()
CallDisconnectedParam
class 1-to-1 callbool IsDisconnectedByRemote()
EDisconnectReason GetReason()
const WString& GetUserReleaseCode()
ConferenceDisconnectedParam
class Group callbool IsDisconnectedByRemote()
EDisconnectReason GetReason()
const WString& GetUserReleaseCode()
ConferencePeerScreenShareUpdatedParam
class Group callPeerPtr GetPeer()
SubgroupPtr GetSubgroup()
EScreenShareState ScreenShareState()
Removed
SCallConnectedParam
struct 1-to-1 callEMediaType eMediaType
ConferencePeerUpdateParam
class Group callsize_t AddedCount()
size_t RemovedCount()
ConferenceVideoUpdatedParam
class Group callsize_t GetCount()
ConferenceSubGroupUpdateParam
class 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::AutoPtr
class. 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::AutoPtr
class. 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
-
PlanetKitCall
class 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)
-
PlanetKitConference
class 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()
-
ConferenceSubGroupUpdatePeer
class Group callPrevious PlanetKit 5.5 const CommonStringArray* GetSubscribedSubgroup() const
const WStringArray& GetSubscribedSubgroupNames() const
const CommonStringArray* GetUnsubscribedSubgroup() const
const WStringArray& GetUnsubscribedSubgroup() const
-
ConferenceException
class Group callPrevious PlanetKit 5.5 const char* GetMessage()
const WString& GetMessage()
-
IConferenceEvent
class Group callPrevious PlanetKit 5.5 void OnDataSessionIncoming(const char* szSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)
void OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)
-
AudioDevice
class 1-to-1 callGroup callPrevious PlanetKit 5.5 bool PlayFile(const char* szPath, unsigned int unLoop)
bool PlayFile(const WString& strFilePath, unsigned int unLoop)
-
MakeCallParam
class 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)
-
VerifyCallParam
class 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)
-
CommonSetSharedContent
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* ServiceId()
UserIdPtr GetPeerID()
-
ConferenceParam
class 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)
-
PlanetKitManager
class 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()
-
StatisticsVideoRecv
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* PeerServiceId()
UserIdPtr GetPeerID()
const char* SubgroupName()
const WStringOptional& GetSubgroupName()
-
StatisticsScreenShareRecv
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* PeerServiceId()
UserIdPtr GetPeerID()
const char* SubgroupName()
const WStringOptional& GetSubgroupName()
-
SubGroup
class - Group callPrevious PlanetKit 5.5 const char *GetSubGroupName()
const WStringOptional& GetSubgroupName()
-
SubGroupManager
class 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
WString
class 1-to-1 callGroup calloperator const wchar_t*() const
const wchar_t* c_str() const
size_t Size() const
WString& Append(const wchar_t* rhs)
bool operator==(const wchar_t* rhs) const
bool operator==(const WString& rhs) const
bool operator! =(const WString& rhs) const
const 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
MakeCallParam
class 1-to-1 callconst WString& GetEndTonePath()
void SetEndTonePath(const WString& strEndTonePath)
VerifyCallParam
class 1-to-1 callconst WString& GetEndTonePath()
void SetEndTonePath(const WString& strEndTonePath)
ConferenceParam
class 1-to-1 callconst WString& GetEndTonePath()
void SetEndTonePath(const WString& strEndTonePath)
Removed
MakeCallParam
class 1-to-1 callconst char* GetAPIKey()
const char* GetAccessToken()
ConferenceParam
class Group callconst char* GetAPIKey()
const char* GetAccessToken()
Code examples
-
If you used
std::string
for a string variable, change it tostd::wstring
and 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
char
string (UTF-8) to awchar_t
string (UTF-16), you can use theMultibyteToWideChar
API 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;
} -
CString
provided by Windows can be used as UTF-16 if the project'sCharacter set
option 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
,IUnsubscribeSubgroupResultHandler
and 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
-
IResultHandler
class →using ResultCallback = void(*)(void* pUserData, bool bSuccess)
1-to-1 callGroup call -
ISubscribeSubgroupResultHandler
class →using SubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupSubscribeFailReason eReason, void* pUserData)
Group call -
IUnsubscribeSubgroupResultHandler
class →using UnsubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupUnsubscribeFailReason eReason, void* pUserData)
Group call -
PlanetKitCall
class 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 *pResultHandler
bool 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)
-
PlanetKitConference
class 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)
-
SubgroupManager
class 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
OnResult
method 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
YourCallResultHandler
class 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
PeerInfo
class, but thePeer
class has been added to allow checking various information about the participant. - You can create a
PeerControl
class using thePeer
class. - You can use
PeerControl
to enable or disable a participant's video and screen share video.
API changes
Changed
-
PeerInfo
class →Peer
class Group callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetUserID()
const char* ServiceId()
UserIdPtr GetUserID()
Added
Peer
class 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()
PeerControl
class 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)
IPeerControlEvent
class 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 thePeer
class 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
Peer
class 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
PeerControl
class 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
PeerControl
class instance can be received by implementing a class that inherits fromIPeerControlEvent
and 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_ATTR
error occurred. - Starting from PlanetKit 5.2, the room type has been removed and is no longer checked, so the
PLNK_DISCONNECT_REASON_WRONG_ROOM_ATTR
disconnect reason has been deprecated accordingly.
API changes
Removed
EConferenceRoomType
enum Group callConferenceParam
class Group callEConferenceRoomType ConferenceRoomType()
void SetConferenceRoomType(EConferenceRoomType eRoomType)
EDisconnectReason
enum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_WRONG_ROOM_ATTR
Breaking change Change options for log configuration
- Removed the
SManagerInitParam
struct and added theConfiguration
class. - You can configure the logging method using the
Configuration
class.
API changes
Changed
-
SManagerInitParam
struct →Configuration
class 1-to-1 callGroup callPrevious PlanetKit 5.5 char* szBasePath
const WString& GetBasePath()
char* szDbPath
const WString& GetDatabasePath()
int nLogLevel
void SetLogLevel(ELogLevel eLogLevel)
ELogLevel GetLogLevel()
bEnableFileLog
void EnableLogOutput(bool bEnable)
bool IsLogOutputEnabled()
Added
Configuration
class 1-to-1 callGroup callConfigurationPtr Create(const WString& strBasePath, const WString& strDatabasePath)
void SetLogSizeLimit(ELogSizeLimit eLogSizeLimit)
ELogSizeLimit GetLogSizeLimit()
Removed
SManagerInitParam
structbool bEnableStdOutLog
bool 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
SubGroupManager
class Group callconst char *GetMyAudioSubGroupName()
const char *GetMyAudioTaggedSubGroupName()
Breaking change Change API for exchanging messages when starting a call
- Removed the
SCallInitData
structure and added theCallStartMessage
class. - 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
-
SCallInitData
struct →CallStartMessage
class 1-to-1 callPrevious PlanetKit 5.5 bool bPreperation
bool IsInPreparation()
char data
static CallStartMessagePtr Create(const WString& strMessage)
const WStringOptional& GetMessage()
-
SCallConnectedParam
struct →CallConnectedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
-
SCallVerifiedParam
struct →CallVerifiedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr 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
-
PlanetKitCall
class 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)
-
SubGroup
class 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)
-
IDataSessionHander
class →IInboundDataSessionHandler
,IOutboundDataSessionHandler
class 1-to-1 callGroup call
Added
EDataSessionFailReason
enum 1-to-1 callGroup callPLNK_DATA_SESS_FAIL_REASON_NONE
PLNK_DATA_SESS_FAIL_REASON_INTERNAL
PLNK_DATA_SESS_FAIL_REASON_UNSUPPORTED
PLNK_DATA_SESS_FAIL_REASON_NOT_INCOMING
PLNK_DATA_SESS_FAIL_REASON_ALREADY_EXIST
PLNK_DATA_SESS_FAIL_REASON_INVALID_ID
PLNK_DATA_SESS_FAIL_REASON_INVALID_TYPE
PlanetKitCall
class 1-to-1 callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)
bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
Subgroup
class Group callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)
bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
ICallEvent
class 1-to-1 callvoid OnDataSessionIncoming(DataSessionStreamIdT nStreamId, EDataSessionType eType)
IConferenceEvent
class Group callvoid OnDataSessionIncoming(const WStringOptional& strSubgroupName, DataSessionStreamIdT nStreamId, EDataSessionType eType)
IInboundDataSessionHandler
class 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)
IOutboundDataSessionHandler
class 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)
InboundDataSession
class 1-to-1 callGroup callDataSessionStreamIdT GetStreamId()
IInboundDataSessionHandler* GetReceiver()
OutboundDataSession
class 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
IDataSessionExceptionHandler
class
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
stid
toAppServerData
to make the name clearer. - Changed the size limit of app server data from 256 bytes to 4096 bytes.
API changes
Changed
-
ConnectParam
class →MakeCallParam
class 1-to-1 callPrevious PlanetKit 5.5 void SetStid(const char *szStid)
void SetAppServerData(const WString& strAppServerData)
const char* GetStid()
const WString& GetAppServerData()
-
ConnectParam
class →ConferenceParam
class 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
nSize
parameter and up to 800 bytes for thepData
parameter. - 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
-
PlanetKitCall
class 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)
-
PlanetKitConference
class 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
-
IConferenceEvent
class 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
ConferenceJoinParam
class 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
EInitialMyVideoState
have 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
EInitialMyVideoState
have been added toConferenceParam
andPlanetKitConference::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
-
PlanetKitCall
class 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)
-
PlanetKitConference
class 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
EVideoControlResult
enum 1-to-1 callGroup callEVideoControlResult_PreviewAlreadyExist
EVideoControlResult_CreateRenderFail
EVideoControlResult_CameraIsAlreadyInUseByAnotherApplication
EVideoControlResult_PreviewHandleIsInvalid
EVideoControlResult_PreviewReceiverIsInvalid
EInitialMyVideoState
enum 1-to-1 callGroup callPLNK_INITIAL_MY_VIDEO_STATE_RESUME
PLNK_INITIAL_MY_VIDEO_STATE_PAUSE
ECameraControlResult
enum 1-to-1 callGroup callPLNK_CAMERA_CONTROL_RESULT_NONE
PLNK_CAMERA_CONTROL_RESULT_FAILED_TO_CREATE_CAMERA_DEVICE
PLNK_CAMERA_CONTROL_RESULT_SELECTED_CAMERA_IS_REMOVED
PLNK_CAMERA_CONTROL_RESULT_NO_CAMERA_SELECTED
CameraController
class 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)
ConferenceParam
class Group callEInitialMyVideoState GetInitialMyVideoState()
void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)
MakeCallParam
class 1-to-1 callEInitialMyVideoState GetInitialMyVideoState()
void SetInitialMyVideoState(EInitialMyVideoState eInitialMyVideoState)
PlanetKitCall
class 1-to-1 callvoid RemoveAllMyVideoViewAndReceiver()
void RemoveAllPeerVideoViewAndReceiver()
PlanetKitConference
class Group callvoid RemoveAllMyVideoViewAndReceiver()
bool AddPeerVideoReceiver(UserIdPtr pPeerID, IVideoReceiver* pReceiver)
bool RemovePeerVideoReceiver(IVideoReceiver* pReceiver)
void RemoveAllPeerVideoViewAndReceiver()
Removed
VideoCaptureManager
class 1-to-1 callGroup callVideoCapture
class 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
IVideoReceiver
and 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
VideoCaptureManager
andVideoCapturer
classes, and added theCameraController
class 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 byPlanetKitManager
and 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
PlanetKitCall
class 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()
PlanetKitConference
class 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()
ScreenShareController
class 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
VideoCaptureManager
class 1-to-1 callGroup callVideoCapture
class 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
PlanetKitCall
class 1-to-1 callvoid EndCall()
void EndCall(const WString& strUserReleaseCode)
void EndCallWithError(const WString& strUserReleaseCode)
Removed
PlanetKitCall
class 1-to-1 callbool EndCall(EDisconnectReason eCallEndReason)
Spec change Add a class to verify data received from the cloud server
- Added the
CCParam
class that lets you interpret string data received from the cloud server to verify information.
API changes
Added
CCParam
class 1-to-1 callconst WString& GetPeerID()
const WString& GetPeerServiceID()
EMediaType GetMediaType()
PlanetKitManager
class 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
CCParam
class 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
CCParam
to create an instance of theVerifyCallParam
class 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 inConferenceParam
is 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
VideoRender
usingCameraController::GetRender()
and then flip the video. - Added the
EVideoMirrorType
enum, which can be set inVideoRender
.- This enum includes
PLNK_MIRROR_TYPE_AUTO
,PLNK_MIRROR_TYPE_MIRRORED
, andPLNK_MIRROR_TYPE_UNMIRRORED
values.- The
PLNK_MIRROR_TYPE_AUTO
state automatically selects the mirror mode asPLNK_MIRROR_TYPE_MIRRORED
when rendering the local user's video andPLNK_MIRROR_TYPE_UNMIRRORED
when rendering a remote user's video.
- The
- This enum includes
API changes
Added
EVideoMirrorType
enum 1-to-1 callGroup callPLNK_MIRROR_TYPE_AUTO = 0
PLNK_MIRROR_TYPE_MIRRORED = 1
PLNK_MIRROR_TYPE_UNMIRRORED = 2
VideoRender
class 1-to-1 callGroup callvoid SetMirrorType(EVideoMirrorType eMirrorType)
EVideoMirrorType GetMirrorType()
Code examples
-
You can obtain the
VideoRender
class 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
CameraInfo
class instance.- The rotation angle specified in
CameraInfo
is 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
VideoRender
and rotate it.
- The rotation angle specified in
API changes
Added
CameraInfo
class 1-to-1 callGroup callEVideoRotation GetRotation() const
void SetRotation(EVideoRotation eRotation)
VideoRender
class 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
AudioDescriptionInfo
struct 1-to-1 callGroup callbool bEnableAudioDescription
unsigned int unAudioDescriptionInterval
MakeCallParam
class 1-to-1 callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)
AudioDescriptionInfo GetAudioDescriptionInfo()
VerifyCallParam
class 1-to-1 callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)
AudioDescriptionInfo GetAudioDescriptionInfo()
ConferenceParam
class Group callvoid SetAudioDescriptionInfo(bool bUse, unsigned int unAudioDescriptionInterval)
AudioDescriptionInfo GetAudioDescriptionInfo()
ICallEvent
class 1-to-1 callvoid OnPeerAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)
void OnMyAudioDescriptionUpdated(PlanetKitCallPtr pPlanetKitCall, unsigned char ucAverageVolumeLevel)
IConferenceEvent
class 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
PlanetKitCall
class 1-to-1 callMyMediaStatusPtr GetMyMediaStatus()
PlanetKitConference
class Group callMyMediaStatusPtr GetMyMediaStatus()
IMyMediaStatusEvent
class 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)
MyMediaStatus
class 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
IMyMediaStatusEvent
class.class YourApplicationMyMediaStatusListener : public PlanetKit::IMyMediaStatusEvent {
public :
void OnRegisterResult(PlanetKit::MyMediaStatusPtr pMyStatus, bool bResult) override;
// ...
}; -
Create member variables to manage
MyMediaStatus
andIMyMediaStatusEvent
instances.class YourApplication {
private :
PlanetKit::MyMediaStatusPtr m_pMyMediaStatus;
YourApplicationMyMediaStatusListener m_cMyListener;
} -
After connecting to the group call using
PlanetManager::JoinConference()
, obtain aMyMediaStatus
instance 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
IMyMediaStatusEvent
are invoked.
Enhancement Add video sharing mode for screen share
- Added an API for setting the video sharing mode to the
PlanetKitCall
andPlanetKitConference
classes. - 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
PlanetKitCall
class 1-to-1 callbool SetMyScreenShareVideoShareMode(bool bVideoShareMode)
bool IsMyScreenShareVideoShareModeEnabled()
CallConnectedParam
class 1-to-1 callbool IsSupportVideoShareMode()
PlanetKitConference
class Group callbool SetMyScreenShareVideoShareMode(bool bVideoShareMode)
bool IsMyScreenShareVideoShareModeEnabled()
ConferenceConnectedParam
class 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 parametersCallConnectedParam
andConferenceConnectedParam
provided 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 byPlanetKitCall
orPlanetKitConference
.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
StatisticsScreenShareSend
class 1-to-1 callGroup callStatisticsNetwork* Network()
StatisticsVideo* Video()
StatisticsScreenShareRecv
class 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
EStartFailReason
enum 1-to-1 callGroup callPLNK_START_FAIL_REASON_TOO_LONG_APP_SERVER_DATA
PLNK_START_FAIL_REASON_NOT_INITIALIZED
Enhancement Remove API for setting audio priority
- Removed the unused
PlanetKitConference::AudioSendSetHighPriority()
API.
API changes
Removed
PlanetKitConference
class 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
EDisconnectReason
enum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_INTERNAL_ERROR
PLNK_DISCONNECT_REASON_USER_ERROR
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR
PLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC
PLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK
PLNK_DISCONNECT_REASON_SYSTEM_DESTROY
PLNK_DISCONNECT_REASON_SYSTEM_SLEEP
PLNK_DISCONNECT_REASON_SYSTEM_LOGOFF
PLNK_DISCONNECT_REASON_SERVICE_ACCESS_TOKEN_ERROR
PLNK_DISCONNECT_REASON_APP_SERVER_DATA_ERROR
PLNK_DISCONNECT_REASON_MAX_CALL_TIME_EXCEEDED
PLNK_DISCONNECT_REASON_SERVICE_TOO_MANY_REQUESTS
PLNK_DISCONNECT_REASON_DESKTOP_SCREEN_LOCKED
Removed
EDisconnectReason
enum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_LOCAL
PLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_REMOTE
PLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_USER_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_USER_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_BAD_NETWORK_IN_CONFERENCE
PLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK_IN_CALL
PLNK_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
ScreenShareController
class 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
ERecordOnCloudDeactivateReason
enum 1-to-1 callPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_INTERNAL
PLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_ACTIVATION_FAILED
PLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_MAX_RECORDING_DURATION_REACHED
RecordOnCloud
class 1-to-1 callbool IsActivated()
DeactivateReasonOptional GetDeactivatedReason()
ICallEvent
class 1-to-1 callvoid OnRecordOnCloudUpdated(PlanetKitCallPtr pPlanetKitCall, RecordOnCloudPtr pRecordOnCloud)
PlanetKitCall
class 1-to-1 callvoid AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), bool bRecordOnCloud = false)
MakeCallParam
class 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
ICallEvent
class 1-to-1 callvoid OnMyVideoNoSource(PlanetKitCallPtr pPlanetKitCall)
IConferenceEvent
class 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
ICallEvent
class 1-to-1 callvoid OnMyScreenShareStoppedByHold(PlanetKitCallPtr pPlanetKitCall)
IConferenceEvent
class 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
EDisconnectSource
enum 1-to-1 callGroup callPLNK_DISCONNECT_SOURCE_UNDEFINED
PLNK_DISCONNECT_SOURCE_CALLEE
PLNK_DISCONNECT_SOURCE_CALLER
PLNK_DISCONNECT_SOURCE_PARTICIPANT
PLNK_DISCONNECT_SOURCE_CLOUD_SERVER
PLNK_DISCONNECT_SOURCE_APP_SERVER
CallDisconnectedParam
class 1-to-1 callEDisconnectSource GetDisconnectSource()
ConferenceDisconnectedParam
class 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
PlanetKitCall
class 1-to-1 callbool RegisterMyAudioReceiver(ICallAudioReceiver *pReceiver)
bool RegisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)
bool DeregisterMyAudioReceiver(ICallAudioReceiver *pReceiver)
bool DeregisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)
ICallAudioReceiver
class 1-to-1 callvoid OnAudio(const SAudioData * pAudioData)
Code examples
-
Implement a class that inherits from the
ICallAudioReceiver
class 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 theSAudioData
passed 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
MakeCallParam
class 1-to-1 callvoid PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)
bool IsPlayEndtoneRegardlessOfCallState()
VerifyCallParam
class 1-to-1 callvoid PlayEndtoneRegardlessOfCallState(bool bPlayEndtone)
bool IsPlayEndtoneRegardlessOfCallState()
ConferenceParam
class 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.pem
certificate exists, that file will be used. - If the file does not exist, the Windows CA certificate will be used.
API change list
Changed
-
ICallEvent
class 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)
-
IConferenceEvent
class 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)
-
ConferencePeerUpdateParam
class 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()
-
ConferenceVideoUpdatedParam
class Group callPrevious PlanetKit 5.5 PeerVideoStatus* At(size_t nIdx)
const PeerVideoStatusArray& GetPeerVideoStatus()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
-
ConferenceSubgroupUpdatePeer
class Group callPrevious PlanetKit 5.5 ConferencePeerInfo* GetPeerInfo() const
PeerPtr GetPeer() const
const CommonStringArray* GetSubscribedSubgroup() const
const WStringArray& GetSubscribedSubgroupNames() const
const CommonStringArray* GetUnsubscribedSubgroup() const
const WStringArray& GetUnsubscribedSubgroup() const
-
ConferenceException
class Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()
PeerPtr GetPeer()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
const char* GetMessage()
const WString& GetMessage()
-
SCallConnectedParam
struct →CallConnectedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
bool bVideoSendHWCodecEnabled
bool IsVideoSendHardwareCodecEnabled()
-
SCallVerifiedParam
struct →CallVerifiedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
-
SCallDisconnectedParam
struct →CallDisconnectedParam
class 1-to-1 callPrevious PlanetKit 5.5 bool bByRemote
bool IsDisconnectedByRemote()
EDisconnectReason eReason
EDisconnectReason GetReason()
const char* szUserRelCode
const WString& GetUserReleaseCode()
-
SConferenceConnectedParam
struct →ConferenceConnectedParam
class Group callPrevious PlanetKit 5.5 bool bVideoSendHWCodecEnabled
bool IsVideoSendHardwareCodecEnabled()
-
SConferenceDisconnectedParam
struct →ConferenceDisconnectedParam
class Group callPrevious PlanetKit 5.5 bool bByRemote
bool IsDisconnectedByRemote()
EDisconnectReason eEndReason
EDisconnectReason GetReason()
const char* szUserRelCode
const WString& GetUserReleaseCode()
-
ConferenceExceptionMessage
class →ConferenceExceptionArray
class Group call -
ConferencePeerScreenSharingUpdateInfo
class →ConferencePeerScreenShareUpdatedParam
class Group callPrevious PlanetKit 5.5 ConferencePeer* GetPeer()
PeerPtr GetPeer()
SubGroup* GetSubGroup()
SubgroupPtr GetSubgroup()
EScreenSharingState ScreenSharingState()
EScreenShareState ScreenShareState()
-
PlanetKitCall
class 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 *pResultHandler
bool 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)
-
PlanetKitConference
class 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)
-
AudioDevice
class 1-to-1 callGroup callPrevious PlanetKit 5.5 bool PlayFile(const char* szPath, unsigned int unLoop)
bool PlayFile(const WString& strFilePath, unsigned int unLoop)
-
MakeCallParam
class 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)
-
VerifyCallParam
class 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)
-
CommonSetSharedContent
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* ServiceId()
UserIdPtr GetPeerID()
-
ConferenceParam
class 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)
-
PlanetKitManager
class 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()
-
StatisticsVideoRecv
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* PeerServiceId()
UserIdPtr GetPeerID()
const char* SubgroupName()
const WStringOptional& GetSubgroupName()
-
StatisticsScreenShareRecv
class 1-to-1 callGroup callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetPeerID()
const char* PeerServiceId()
UserIdPtr GetPeerID()
const char* SubgroupName()
const WStringOptional& GetSubgroupName()
-
SubGroup
class - Group callPrevious PlanetKit 5.5 const char *GetSubGroupName()
const WStringOptional& GetSubgroupName()
-
SubGroupManager
class 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)
-
IResultHandler
class →using ResultCallback = void(*)(void* pUserData, bool bSuccess)
1-to-1 callGroup call -
ISubscribeSubgroupResultHandler
class →using SubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupSubscribeFailReason eReason, void* pUserData)
Group call -
IUnsubscribeSubgroupResultHandler
class →using UnsubscribeResult = void(*)(SubgroupPtr pSubgroup, bool bSuccess, ESubgroupUnsubscribeFailReason eReason, void* pUserData)
Group call -
PeerControl
class 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)
-
PeerInfo
class →Peer
class Group callPrevious PlanetKit 5.5 const char* PeerId()
UserIdPtr GetUserID()
const char* ServiceId()
UserIdPtr GetUserID()
-
SManagerInitParam
struct →Configuration
class 1-to-1 callGroup callPrevious PlanetKit 5.5 char* szBasePath
const WString& GetBasePath()
char* szDbPath
const WString& GetDatabasePath()
int nLogLevel
void SetLogLevel(ELogLevel eLogLevel)
ELogLevel GetLogLevel()
bEnableFileLog
void EnableLogOutput(bool bEnable)
bool IsLogOutputEnabled()
-
SCallInitData
struct →CallStartMessage
class 1-to-1 callPrevious PlanetKit 5.5 bool bPreperation
bool IsInPreparation()
char data
static CallStartMessagePtr Create(const WString& strMessage)
const WStringOptional& GetMessage()
-
SCallVerifiedParam
struct →CallVerifiedParam
class 1-to-1 callPrevious PlanetKit 5.5 SCallInitData sCalleeInitData
CallStartMessagePtr GetPeerStartMessage()
-
ConnectParam
class →MakeCallParam
class 1-to-1 callPrevious PlanetKit 5.5 void SetStid(const char *szStid)
void SetAppServerData(const WString& strAppServerData)
const char* GetStid()
const WString& GetAppServerData()
-
ConnectParam
class →ConferenceParam
class Group callPrevious PlanetKit 5.5 void SetStid(const char *szStid)
void SetAppServerData(const WString& strAppServerData)
const char* GetStid()
const WString& GetAppServerData()
-
SubGroup
class 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)
-
IDataSessionHander
class →IInboundDataSessionHandler
,IOutboundDataSessionHandler
class 1-to-1 callGroup call
Added
AutoPtr
class 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->()
Optional
class 1-to-1 callGroup callbool HasValue() const
const T* operator->() const
T* operator->()
const T& operator*() const
T& operator*()
Optional<T>& operator=(const Optional<T>& src)
Optional<T>& operator=(const T& src)
T& Value()
const T& Value() const
Array
class 1-to-1 callGroup callconst T* Buffer() const
T* Buffer()
void Resize(size_t size)
void SetAt(size_t idx, const T& rhs)
size_t Size() const
T& At(size_t idx) const
T& operator[](size_t idx) const
WString
class 1-to-1 callGroup calloperator const wchar_t*() const
const wchar_t* c_str() const
size_t Size() const
WString& Append(const wchar_t* rhs)
bool operator==(const wchar_t* rhs) const
bool operator==(const WString& rhs) const
bool operator!=(const WString& rhs) const
const 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
CallConnectedParam
class 1-to-1 callCallStartMessagePtr GetPeerStartMessage()
bool ShouldFinishPreparation()
bool IsInPreparation()
bool IsVideoSendHardwareCodecEnabled()
bool IsSupportDataSession()
bool IsSupportVideoShareMode()
CallVerifiedParam
class 1-to-1 callCallStartMessagePtr GetPeerStartMessage()
bool IsPeerUsePreparation()
CallDisconnectedParam
class 1-to-1 callbool IsDisconnectedByRemote()
EDisconnectReason GetReason()
const WString& GetUserReleaseCode()
EDisconnectSource GetDisconnectSource()
ConferenceDisconnectedParam
class Group callbool IsDisconnectedByRemote()
EDisconnectReason GetReason()
EDisconnectSource GetDisconnectSource()
const WString& GetUserReleaseCode()
ConferencePeerScreenShareUpdatedParam
class Group callPeerPtr GetPeer()
SubgroupPtr GetSubgroup()
EScreenShareState ScreenShareState()
VerifyCallParam
class 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()
ConferenceParam
class 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)
Peer
class 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()
PeerControl
class 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)
IPeerControlEvent
class 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)
Configuration
class 1-to-1 callGroup callConfigurationPtr Create(const WString& strBasePath, const WString& strDatabasePath)
void SetLogSizeLimit(ELogSizeLimit eLogSizeLimit)
ELogSizeLimit GetLogSizeLimit()
CCParam
class 1-to-1 callconst WString& GetPeerID()
const WString& GetPeerServiceID()
EMediaType GetMediaType()
PlanetKitManager
class 1-to-1 callCCParamPtr CreateCCParam(const char* strCCParam)
bool SendShortDataToAllPeers(const WString& strType, void* pData, unsigned int nSize, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
PlanetKitCall
class 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)
EDataSessionFailReason
enum 1-to-1 callGroup callPLNK_DATA_SESS_FAIL_REASON_NONE
PLNK_DATA_SESS_FAIL_REASON_INTERNAL
PLNK_DATA_SESS_FAIL_REASON_UNSUPPORTED
PLNK_DATA_SESS_FAIL_REASON_NOT_INCOMING
PLNK_DATA_SESS_FAIL_REASON_ALREADY_EXIST
PLNK_DATA_SESS_FAIL_REASON_INVALID_ID
PLNK_DATA_SESS_FAIL_REASON_INVALID_TYPE
Subgroup
class Group callbool GetInboundDataSession(int nStreamId, InboundDataSessionPtr* pResult)
bool GetOutboundDataSession(int nStreamId, OutboundDataSessionPtr* pResult)
IInboundDataSessionHandler
class 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)
IOutboundDataSessionHandler
class 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)
InboundDataSession
class 1-to-1 callGroup callDataSessionStreamIdT GetStreamId()
IInboundDataSessionHandler* GetReceiver()
OutboundDataSession
class 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)
EVideoControlResult
enum 1-to-1 callGroup callEVideoControlResult_PreviewAlreadyExist
EVideoControlResult_CreateRenderFail
EVideoControlResult_CameraIsAlreadyInUseByAnotherApplication
EVideoControlResult_PreviewHandleIsInvalid
EVideoControlResult_PreviewReceiverIsInvalid
EInitialMyVideoState
enum 1-to-1 callGroup callPLNK_INITIAL_MY_VIDEO_STATE_RESUME
PLNK_INITIAL_MY_VIDEO_STATE_PAUSE
ECameraControlResult
enum 1-to-1 callGroup callPLNK_CAMERA_CONTROL_RESULT_NONE
PLNK_CAMERA_CONTROL_RESULT_FAILED_TO_CREATE_CAMERA_DEVICE
PLNK_CAMERA_CONTROL_RESULT_SELECTED_CAMERA_IS_REMOVED
PLNK_CAMERA_CONTROL_RESULT_NO_CAMERA_SELECTED
CameraController
class 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)
PlanetKitConference
class 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()
ScreenShareController
class 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)
EVideoMirrorType
enum 1-to-1 callGroup callPLNK_MIRROR_TYPE_AUTO = 0
PLNK_MIRROR_TYPE_MIRRORED = 1
PLNK_MIRROR_TYPE_UNMIRRORED = 2
VideoRender
class 1-to-1 callGroup callvoid SetMirrorType(EVideoMirrorType eMirrorType)
EVideoMirrorType GetMirrorType()
void SetRotation(EVideoRotation eRotation)
EVideoRotation GetRotation()
CameraInfo
class 1-to-1 callGroup callEVideoRotation GetRotation() const
void SetRotation(EVideoRotation eRotation)
AudioDescriptionInfo
struct 1-to-1 callGroup callbool bEnableAudioDescription
unsigned int unAudioDescriptionInterval
IMyMediaStatusEvent
class 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)
MyMediaStatus
class Group callbool Register(IMyMediaStatusEvent* pListener)
bool Unregister()
WStringOptional GetVideoSubgroupName()
bool GetVideoStatus(OUT VideoStatus* pResultStatus)
WStringOptional GetScreenShareSubgroupName()
EScreenShareState GetScreenShareState()
bool IsAudioMuted()
ConferenceConnectedParam
class 1-to-1 callbool IsSupportVideoShareMode()
StatisticsScreenShareSend
class 1-to-1 callGroup callStatisticsNetwork* Network()
StatisticsVideo* Video()
StatisticsScreenShareRecv
class 1-to-1 callGroup callconst WStringOptional& GetSubgroupName()
UserIdPtr GetPeerID()
StatisticsNetwork* Network()
StatisticsVideo* Video()
EStartFailReason
enum 1-to-1 callGroup callPLNK_START_FAIL_REASON_TOO_LONG_APP_SERVER_DATA
PLNK_START_FAIL_REASON_NOT_INITIALIZED
EDisconnectReason
enum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_INTERNAL_ERROR
PLNK_DISCONNECT_REASON_USER_ERROR
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR
PLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC
PLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK
PLNK_DISCONNECT_REASON_SYSTEM_DESTROY
PLNK_DISCONNECT_REASON_SYSTEM_SLEEP
PLNK_DISCONNECT_REASON_SYSTEM_LOGOFF
PLNK_DISCONNECT_REASON_SERVICE_ACCESS_TOKEN_ERROR
PLNK_DISCONNECT_REASON_APP_SERVER_DATA_ERROR
PLNK_DISCONNECT_REASON_MAX_CALL_TIME_EXCEEDED
PLNK_DISCONNECT_REASON_SERVICE_TOO_MANY_REQUESTS
PLNK_DISCONNECT_REASON_DESKTOP_SCREEN_LOCKED
ERecordOnCloudDeactivateReason
enum 1-to-1 callPLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_INTERNAL
PLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_ACTIVATION_FAILED
PLNK_RECORD_ON_CLOUD_DEACTIVATE_REASON_MAX_RECORDING_DURATION_REACHED
RecordOnCloud
class 1-to-1 callbool IsActivated()
DeactivateReasonOptional GetDeactivatedReason()
MakeCallParam
class 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()
ICallEvent
class 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)
IConferenceEvent
class 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)
EDisconnectSource
enum 1-to-1 callGroup callPLNK_DISCONNECT_SOURCE_UNDEFINED
PLNK_DISCONNECT_SOURCE_CALLEE
PLNK_DISCONNECT_SOURCE_CALLER
PLNK_DISCONNECT_SOURCE_PARTICIPANT
PLNK_DISCONNECT_SOURCE_CLOUD_SERVER
PLNK_DISCONNECT_SOURCE_APP_SERVER
ICallAudioReceiver
class 1-to-1 callvoid OnAudio(const SAudioData * pAudioData)
AudioData
struct 1-to-1 callunsigned int unBufferSize
PlanetKitByte* pBuffer
EAudioSampleType
enum 1-to-1 callPLNK_AUDIO_SAMPLE_TYPE_SIGNED_FLOAT32 = 0
PLNK_AUDIO_SAMPLE_TYPE_SIGNED_SHORT16 = 1
PlanetKitHookedAudio
class 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()
IPlanetKitAudioHook
class 1-to-1 callvoid OnHooked(PlanetKitHookedAudioPtr pHookedAudio)
Removed
SCallConnectedParam
struct 1-to-1 callEMediaType eMediaType
ConferencePeerUpdateParam
class Group callsize_t AddedCount()
size_t RemovedCount()
ConferenceVideoUpdatedParam
class Group callsize_t GetCount()
ConferenceSubGroupUpdateParam
class Group callMakeCallParam
class 1-to-1 callconst char* GetAPIKey()
const char* GetAccessToken()
ConferenceParam
class Group callconst char* GetAPIKey()
const char* GetAccessToken()
EConferenceRoomType ConferenceRoomType()
void SetConferenceRoomType(EConferenceRoomType eRoomType)
EConferenceRoomType
enum Group callEDisconnectReason
enum 1-to-1 callGroup callPLNK_DISCONNECT_REASON_WRONG_ROOM_ATTR
PLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_LOCAL
PLNK_DISCONNECT_REASON_AUDIO_TX_NO_SRC_BY_REMOTE
PLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_INTERNAL_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_USER_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_USER_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_LOCAL
PLNK_DISCONNECT_REASON_INTERNAL_KIT_ERROR_BY_REMOTE
PLNK_DISCONNECT_REASON_BAD_NETWORK_IN_CONFERENCE
PLNK_DISCONNECT_REASON_UNAVAILABLE_NETWORK_IN_CALL
PLNK_DISCONNECT_REASON_SERVICE_APIKEY_ERROR
SManagerInitParam
structbool bEnableStdOutLog
bool bEnableJupLog
SubGroupManager
class Group callconst char *GetMyAudioSubGroupName()
const char *GetMyAudioTaggedSubGroupName()
PlanetKitCall
class 1-to-1 callbool EndCall(EDisconnectReason eCallEndReason)
IDataSessionExceptionHandler
classConferenceJoinParam
class Group callvoid SetDisableAutoDisconnectOnBadNetwork(bool bDisable)
VideoCaptureManager
class 1-to-1 callGroup callVideoCapture
class 1-to-1 callGroup callPlanetKitConference
class Group callbool AudioSendSetHighPriority(bool bHighPriority, void *pResultUserData, IResultHandler *pResultHandler)