Release notes
This page provides the release notes of PlanetKit 6.0 for Windows.
PlanetKit 6.0.4
Release date: 2025-08-29
Fix camera issues
- Fixed an issue where some cameras did not work properly.
PlanetKit 6.0.2
Release date: 2025-06-30
Resolve an issue with a specific camera device
- Fixed an issue where a specific camera device failed to open.
PlanetKit 6.0.1
Release date: 2025-06-04
Resolve crashes occurring when using the custom audio feature
- Resolved the crash issue that occurred when using the custom audio feature in version 6.0.
Apply delay loading to the virtual background DLL
- Modified the module used for the virtual background feature to be delay-loaded. This change ensures that PlanetKit can be used without issues, even if the module is not present.
PlanetKit 6.0
Release date: 2025-05-16
Apply changes for audio device management through AudioManager
AudioManagerpreviously provided an API for instance creation, which required manual creation. Starting from version 6.0, providing the device information allowsAudioManagerto internally create and manage the device instance.- With
AudioManagernow managing the device instance, only one device is used globally. - When you change the microphone using
ChangeMic(), the microphone device in use by PlanetKit will be updated accordingly.
API
Changed
-
AudioManagerclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool GetAudioInputDeviceList(AudioDeviceInfoArray *pResultArray)bool GetMicList(AudioDeviceInfoArray& audioDeviceInfoArray)bool GetAudioOutputDeviceList(AudioDeviceInfoArray* pResultArray)bool GetSpeakerList(AudioDeviceInfoArray& audioDeviceInfoArray)bool GetDefaultAudioInputDeviceInfo(AudioDeviceInfoPtr* pAudioDeviceInfo)AudioDeviceInfoOptional GetDefaultMicInfo()bool GetDefaultAudioOutputDeviceInfo(AudioDeviceInfoPtr *pAudioDeviceInfo)AudioDeviceInfoOptional GetDefaultSpeakerInfo()
Added
AudioManagerclass 1-to-1 callGroup callMicOptional ChangeMic(AudioDeviceInfoPtr pInfo = nullptr)SpeakerOptional ChangeSpeaker(AudioDeviceInfoPtr pInfo = nullptr)bool RegisterMicExceptionEvent(MicExceptionEventPtr pMicExceptionEvent)bool DeregisterMicExceptionEvent()
Removed
AudioManagerclass 1-to-1 callGroup callAudioDevicePtr CreateAudioDevice(AudioDeviceInfoPtr pInfo)AudioDevicePtr CreateDefaultInputDevice()AudioDevicePtr CreateDefaultOutputDevice()
PlanetKitCallclass 1-to-1 callbool SetAudioInputDevice(AudioDevicePtr pDevice)bool SetAudioOutputDevice(AudioDevicePtr pDevice)
MakeCallParamclass 1-to-1 callAudioDeviceOptional GetAudioInputDevice()AudioDeviceOptional GetAudioOutputDevice()void SetAudioInputDevice(AudioDevicePtr pDevice)void SetAudioOutputDevice(AudioDevicePtr pDevice)
VerifyCallParamclass 1-to-1 callAudioDeviceOptional GetAudioInputDevice()AudioDeviceOptional GetAudioOutputDevice()void SetAudioInputDevice(AudioDevicePtr pDevice)void SetAudioOutputDevice(AudioDevicePtr pDevice)
PlanetKitConferenceclass Group callbool SetAudioInputDevice(AudioDevicePtr pDevice)bool SetAudioOutputDevice(AudioDevicePtr pDevice)
ConferenceParamclass Group callAudioDeviceOptional GetAudioInputDevice()AudioDeviceOptional GetAudioOutputDevice()void SetAudioInputDevice(AudioDevicePtr pDevice)void SetAudioOutputDevice(AudioDevicePtr pDevice)
Migration
-
Since the method of using a microphone and a speaker is the same, only the method for using the microphone is specified.
-
The use of the audio device in version 5.5 or earlier is as follows:
class MyAudioDevice {
AudioDevicePtr CreateAudioDevice() {
auto pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
auto pAudioManager = pPlanetKitManager->GetAudioManager();
AudioDeviceInfoArray audioArray;
GetAudioInputDeviceList(&audioArray);
auto pAudioDevice = CreateAudioDevice(audioArray[0]);
return pAudioDevice;
}
void SetAudioDevice(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strToken){
auto pAudioDevice = CreateAudioDevice();
auto pMakeCallParam = MakeCallParam::CreateWithAccessToken(pMyID, pPeerID, strToken);
pMakeCallParam->SetAudioInputDevice(pAudioDevice);
auto pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKitCallPtr pCallPtr;
pPlanetKitManager->MakeCall(pMakeCallParam, pCallPtr);
}
} -
From version 6.0, audio devices are used as follows.
class MyAudioDevice {
// There is no longer a need to create devices.
// AudioDevicePtr CreateAudioDevice();
void SetAudioDevice(){
auto pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
auto pAudioManager = pPlanetKitManager->GetAudioManager();
AudioDeviceInfoArray audioArray;
pAudioManager->GetMicList(audioArray);
pAudioManager->ChangeMic(audioArray[0]);
}
}
Change the method for obtaining information about microphone and speaker devices
- Instances of the currently used
MicandSpeakerdevices can be obtained through theAudioManager. - The
AudioDeviceclass has been changed to theMicandSpeakerclasses. MicandSpeakerallow for obtaining and changing the current volume value, and notification events can be registered for device information changes.
API
Added
AudioManagerclass 1-to-1 callGroup callSpeakerOptional GetCurrentSpeaker()MicOptional GetCurrentMic()
Micclass 1-to-1 callGroup callbool SetVolumeLevel(float fVolume)float GetVolumeLevel()bool RegisterMicEvent(MicEventPtr pEvent)bool DeregisterMicEvent(MicEventPtr pEvent)float GetPeakValue()bool IsRunning()bool RegisterVolumeLevelChangedEvent(AudioVolumeLevelChangedEventPtr pEvent)bool DeregisterVolumeLevelChangedEvent(AudioVolumeLevelChangedEventPtr pEvent)AudioDeviceInfoPtr GetDeviceInfo()bool IsCustomMic()
Speakerclass 1-to-1 callGroup callbool SetVolumeLevel(float fVolume)float GetVolumeLevel()bool bool RegisterSpeakerEvent(SpeakerEventPtr pEvent)bool DeregisterSpeakerEvent(SpeakerEventPtr pEvent)float GetPeakValue()bool IsRunning()bool RegisterVolumeLevelChangedEvent(AudioVolumeLevelChangedEventPtr pEvent)bool DeregisterVolumeLevelChangedEvent(AudioVolumeLevelChangedEventPtr pEvent)AudioDeviceInfoPtr GetDeviceInfo()bool IsCustomSpeaker()bool PlayFile(const WString& strFilePath, unsigned int unLoop)bool StopPlay()
IAudioVolumeLevelChangedEventclass 1-to-1 callGroup callvoid OnNotify(const AudioDeviceInfoPtr pAudioInfo, const SAudioEndpointVolumeInfo& sInfo)
IMicEventclass 1-to-1 callGroup callbool DidCapture(const SAudioData& sAudioData)
EMicStartErrorenum 1-to-1 callGroup callPLNK_MIC_START_ERROR_INTERNAL_REASONPLNK_MIC_START_ERROR_NOT_ENOUGH_MEMORYPLNK_MIC_START_ERROR_DEVICE_INVALIDPLNK_MIC_START_ERROR_AUDIO_SERVICE_NOT_RUNNINGPLNK_MIC_START_ERROR_DEVICE_IN_USE_EXCLUSIVE_BY_OTHER_APPLICATIONPLNK_MIC_START_ERROR_CPU_USAGE_EXCEEDEDPLNK_MIC_START_ERROR_PREVIEW_EVENT_NOT_VALID
IMicExceptionEventclass 1-to-1 callGroup callvoid OnMicStartError(EMicStartError eMicrophoneStartError)
IMicPreviewEventclass 1-to-1 callGroup callvoid OnMicPreviewVolume(float fVolume)
ISpeakerEventclass 1-to-1 callGroup callbool WillPlay(SAudioData& sAudioData)
Removed
AudioDeviceclass 1-to-1 callGroup callIAudioDeviceVolumeChangedEventclass 1-to-1 callGroup callIAudioDeviceInputDelegateclass 1-to-1 callGroup callIAudioDeviceOutputDelegateclass 1-to-1 callGroup call
Add a preview feature to check the microphone
- "Preview" refers to an event that periodically checks the current microphone device's volume.
- Added a feature to register a preview event.
API
Added
AudioManagerclass 1-to-1 callGroup callbool bool StartMicPreview(MicPreviewEventPtr pMicPreviewEvent, unsigned int unInterval)bool StopMicPreview()
Provide custom audio
- Added a custom audio feature that users can create themselves.
API
Added
CustomMicclass 1-to-1 callGroup callbool PutAudioData(SAudioData& audioData)
CustomSpeakerclass 1-to-1 callGroup callbool PullAudioData(SAudioData& audioData)
Add a feature to check cloud call recording activation during call reception
- Added a parameter to
PlanetKitCCParamto check cloud call recording activation while receiving a call.
API
Added
CCParamclass 1-to-1 callbool IsRecordOnCloudEnabled()
Provide a virtual background feature
- Added a virtual background feature.
API
Added
EVirtualBackgroundTypeenum 1-to-1 callGroup callPLNK_VIRTUAL_BACKGROUND_TYPE_NONEPLNK_VIRTUAL_BACKGROUND_TYPE_BLURPLNK_VIRTUAL_BACKGROUND_TYPE_IMAGE
Imageclass 1-to-1 callGroup callImageOptional Create(IWICBitmap* pBitmap)ImageOptional Create(WString& strPath)VImageOptional Create(BYTE* pBuffer, unsigned int unWidth, unsigned int unHeight, ESupportedVirtualBackgroundFormat supportedFormat)unsigned int Width()unsigned int Height()
CameraControllerclass 1-to-1 callGroup callbool SetVirtualBackgroundWithBlur(float fBlurRadius)bool SetVirtualBackgroundWithImage(ImagePtr pImage)void ClearVirtualBackground()EVirtualBackgroundType GetCurrentVirtualBackgroundType()
Provide SharedPtr for memory management
- Added
SharedPtrto facilitate memory management.
API
Changed
-
PlanetKitCallclass 1-to-1 callPrevious PlanetKit 6.0.0 void AcceptCall(bool bPreparation, CallStartMessagePtr pCallStartMessage = CallStartMessagePtr(nullptr), EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, bool bRecordOnCloud = false)void AcceptCall(bool bPreparation, CallStartMessageOptional pCallStartMessage = NullOptional, EInitialMyVideoState eInitialMyVideoState = PLNK_INITIAL_MY_VIDEO_STATE_RESUME, bool bRecordOnCloud = false)bool RegisterCallEvent(ICallEvent *pCallEvent)bool RegisterCallEvent(ICallEventPtr pCallEvent)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandlerPtr pDataSessionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandlerPtr pDataSessionHandler)bool RegisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool RegisterMyAudioReceiver(ICallAudioReceiverPtr pReceiver)bool RegisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)bool RegisterPeerAudioReceiver(ICallAudioReceiverPtr pReceiver)bool DeregisterMyAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterMyAudioReceiver(ICallAudioReceiverPtr pReceiver)bool DeregisterPeerAudioReceiver(ICallAudioReceiver *pReceiver)bool DeregisterPeerAudioReceiver(ICallAudioReceiverPtr pReceiver)bool AddMyVideoReceiver(IVideoReceiver* pReceiver)bool AddMyVideoReceiver(IVideoReceiverPtr pReceiver)bool RemoveMyVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyVideoReceiver(IVideoReceiverPtr pReceiver)bool AddPeerVideoReceiver(IVideoReceiver* pReceiver)bool AddPeerVideoReceiver(IVideoReceiverPtr pReceiver)bool RemovePeerVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerVideoReceiver(IVideoReceiverPtr pReceiver)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool AddMyScreenShareVideoReceiver(IVideoReceiverPtr pReceiver)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoReceiver(IVideoReceiverPtr pReceiver)bool AddPeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool AddPeerScreenShareVideoReceiver(IVideoReceiverPtr pReceiver)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoReceiver(IVideoReceiverPtr pReceiver) -
CameraControllerclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 void RegisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)void RegisterDeviceEvent(IVideoCaptureDeviceEventPtr pDelegate)void DeregisterDeviceEvent(IVideoCaptureDeviceEvent* pDelegate)void DeregisterDeviceEvent(IVideoCaptureDeviceEventPtr pDelegate)bool StartPreview(IVideoReceiver* pReceiver)bool StartPreview(IVideoReceiverPtr pReceiver)bool StopPreview(IVideoReceiver* pReceiver)bool StopPreview(IVideoReceiverPtr pReceiver)bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool RegisterVideoInterceptor(IVideoInterceptorPtr pInterceptor) -
PlanetKitConferenceclass Group callPrevious PlanetKit 6.0.0 bool RegisterConferenceEvent(IConferenceEvent *pEvent)bool RegisterConferenceEvent(IConferenceEventPtr pEvent)bool RegisterMyAudioReceiver(IConferenceAudioReceiver *pReceiver)bool RegisterMyAudioReceiver(IConferenceAudioReceiverPtr pReceiver)bool RegisterPeersAudioReceiver(IConferenceAudioReceiver *pReceiver)bool RegisterPeersAudioReceiver(IConferenceAudioReceiverPtr pReceiver)bool DeregisterMyAudioReceiver(IConferenceAudioReceiver *pReceiver)bool DeregisterMyAudioReceiver(IConferenceAudioReceiverPtr pReceiver)bool DeregisterPeersAudioReceiver(IConferenceAudioReceiver *pReceiver)bool DeregisterPeersAudioReceiver(IConferenceAudioReceiverPtr pReceiver)bool AddMyVideoReceiver(IVideoReceiver* pReceiver)bool AddMyVideoReceiver(IVideoReceiverPtr pReceiver)bool RemoveMyVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyVideoReceiver(IVideoReceiverPtr pReceiver)bool AddPeerVideoReceiver(UserIdPtr pPeerID, IVideoReceiver* pReceiver)bool AddPeerVideoReceiver(UserIdPtr pPeerID, IVideoReceiverPtr pReceiver)bool RemovePeerVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerVideoReceiver(IVideoReceiverPtr pReceiver)bool AddMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool AddMyScreenShareVideoReceiver(IVideoReceiverPtr pReceiver)bool RemoveMyScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemoveMyScreenShareVideoReceiver(IVideoReceiverPtr pReceiver)bool AddPeerScreenShareVideoReceiver(UserIdPtr pPeerID, IVideoReceiver* pReceiver)bool AddPeerScreenShareVideoReceiver(UserIdPtr pPeerID, IVideoReceiverPtr pReceiver)bool RemovePeerScreenShareVideoReceiver(IVideoReceiver* pReceiver)bool RemovePeerScreenShareVideoReceiver(IVideoReceiverPtr pReceiver) -
Subgroupclass Group callPrevious PlanetKit 6.0.0 bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandler* pDataSessionHandler)bool MakeOutboundDataSession(int nStreamId, EDataSessionType eType, NULLABLE void* pResultUserData, IOutboundDataSessionHandlerPtr pDataSessionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandler* pDataSessionHandler)bool MakeInboundDataSession(int nStreamId, NULLABLE void* pResultUserData, IInboundDataSessionHandlerPtr pDataSessionHandler) -
ConferenceParamclass Group callPrevious PlanetKit 6.0.0 IConferenceEvent* ConferenceEvent()IConferenceEventPtr ConferenceEvent()void SetConferenceEvent(IConferenceEvent* pEvent)void SetConferenceEvent(IConferenceEventPtr pEvent) -
ContentShareInterfaceclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool SetContentShareEvent(IContentShareEvent *pEvent)bool SetContentShareEvent(IContentShareEventPtr pEvent) -
OutboundDataSessionclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 IOutboundDataSessionHandler* GetHandler()IOutboundDataSessionHandlerPtr GetHandler() -
InboundDataSessionclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 IInboundDataSessionHandler* GetReceiver()IInboundDataSessionHandlerPtr GetReceiver() -
MakeCallParamclass 1-to-1 callPrevious PlanetKit 6.0.0 ICallEvent* CallEvent()ICallEventPtr CallEvent()void SetCallEvent(ICallEvent* pEvent)void SetCallEvent(ICallEventPtr pEvent) -
MyMediaStatusclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool Register(IMyMediaStatusEvent* pListener)bool Register(IMyMediaStatusEventPtr pListener) -
PeerControlclass Group callPrevious PlanetKit 6.0.0 bool Register(IPeerControlEvent* pEventListener)bool Register(IPeerControlEventPtr pEventListener)void RegisterReceiver(IVideoReceiver* pReceiver)void RegisterReceiver(IVideoReceiverPtr pReceiver)void DeregisterReceiver(IVideoReceiver* pReceiver)void DeregisterReceiver(IVideoReceiverPtr pReceiver)void RegisterScreenShareReceiver(IVideoReceiver* pReceiver)void RegisterScreenShareReceiver(IVideoReceiverPtr pReceiver)void DeregisterScreenShareReceiver(IVideoReceiver* pReceiver)void DeregisterScreenShareReceiver(IVideoReceiverPtr pReceiver) -
ScreenShareControllerclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool RegisterCapturerEvent(IVideoCapturerEvent* pDelegate)bool RegisterCapturerEvent(IVideoCapturerEventPtr pDelegate)bool RegisterVideoInterceptor(IVideoInterceptor* pInterceptor)bool RegisterVideoInterceptor(IVideoInterceptorPtr pInterceptor) -
StatisticsAudioSendclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network() -
StatisticsAudioRecvclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network() -
StatisticsVideoSendclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsVideoRecvclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsScreenShareSendclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsScreenShareRecvclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
Statisticsclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsAudioSend* AudioSend()StatisticsAudioSendPtr AudioSend()StatisticsAudioRecv* AudioRecv()StatisticsAudioRecvPtr AudioRecv() -
VerifyCallParamclass 1-to-1 callPrevious PlanetKit 6.0.0 ICallEvent* CallEvent()ICallEventPtr CallEvent()void SetCallEvent(ICallEvent* pEvent)void SetCallEvent(ICallEventPtr pEvent) -
VideoRenderclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool RegisterRenderEvent(IVideoRenderEvent *pDelegate)bool RegisterRenderEvent(IVideoRenderEventPtr pDelegate)
Added
SharedPtrclass 1-to-1 callGroup call
Example code
// Initialize the variable to nullptr.
PlanetKit::SharedPtr<YourCallEvent> callEvent = nullptr;
// Create an instance using MakeAutoPtr.
callEvent = PlanetKit::MakeAutoPtr<YourCallEvent>();
// Use SharedPtr::hasValue() to determine the existence of an instance.
if(callEvent.hasValue() == true) {
...
}
// If the instance is no longer needed, assign nullptr to reduce the reference count.
callEvent = nullptr;
Migration
-
Event class instances were created and registered using
newin version 5.5 or earlier. -
Starting from version 6.0,
PlanetKit::SharedPtris provided, so you need to usePlanetKit::MakeAutoPtr(). -
The way the event class is created and managed in version 5.5 or earlier is as follows:
class YourCallEvent : public PlanetKit::ICallEvent {
public :
YourCallEvent (int someParameter1, int someParameter2) {
...
}
...
};
class YourCall {
public:
void InitializeCallEvent() {
m_yourCallEvent = new YourCallEvent(1, 2);
}
void FinalizeCallEvent() {
// Since the pointer has been deallocated from memory, any code referencing the same pointer may cause an exception.
delete m_yourCallEvent;
}
private: YourCallEvent* m_yourCallEvent = nullptr;
}; -
From version 6.0, the event class is created and managed as follows:
class YourCallEvent : public PlanetKit::ICallEvent {
public :
YourCallEvent (int someParameter1, int someParameter2) {
...
}
...
};
class YourCall {
public:
void InitializeCallEvent() {
m_yourCallEvent = PlanetKit::MakeAutoPtr<YourCallEvent>(1, 2);
}
void FinalizeCallEvent() {
// If the pointer is no longer in use, you can assign nullptr to reduce the reference count of the SharedPtr.
m_yourCallEvent = nullptr;
}
private:
PlanetKit::SharedPtr<YourCallEvent> m_yourCallEvent = nullptr;
};
Add microphone settings to MakeCall(), VerifyCall(), and JoinConference()
- Added a
MicOptionalparameter toMakeCall(),VerifyCall(), andJoinConference(). - If this parameter is set to
PlanetKit::NullOptional, the call will be connected without a microphone device. - If a microphone device is passed to this parameter, the call will be connected using that microphone.
API
Change
-
PlanetKitManagerclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 SStartResult MakeCall(MakeCallParamPtr pParam, PlanetKitCallPtr* pPlanetKitCall)SStartResult MakeCall(MakeCallParamPtr pParam, MicOptional micOptional, PlanetKitCallPtr* pPlanetKitCall)SStartResult VerifyCall(VerifyCallParamPtr pParam, PlanetKitCallPtr* pPlanetKitCall)SStartResult VerifyCall(VerifyCallParamPtr pParam, MicOptional micOptional, PlanetKitCallPtr* pPlanetKitCall)SStartResult JoinConference(ConferenceParamPtr pConferenceParam, PlanetKitConferencePtr& pPlanetKitConference)SStartResult JoinConference(ConferenceParamPtr pConferenceParam, MicOptional micOptional, PlanetKitConferencePtr& pPlanetKitConference)
Example code
-
Example for using a specific microphone device
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
auto audioManager = planetkitManager->GetAudioManager();
auto mic = audioManager->ChangeMic(MicInfo);
planetkitManager->JoinConference(pJoinParam, mic, pConference); -
Example for not using a microphone device
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
planetkitManager->JoinConference(pJoinParam, PlanetKit::NullOptional, pConference);
Improve API for setting the audio volume of the peer
- Changed to a volume setting API for each peer instead of subgroup-based volume settings.
API
Changed
-
PeerControlclass Group callPrevious PlanetKit 6.0.0 bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)bool SetVolumeLevelSetting(unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr) -
Peerclass Group callPrevious PlanetKit 6.0.0 VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)VolumeResult GetAudioVolumeLevelSetting()
Removed
SubgroupManagerclass Group callvoid bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
Change video capability configuration API
- Thumbnail resolution can no longer be used in video capability configuration API.
- Video hardware codec settings are now configured through
PlanetKitManagerinstead of setting them for each 1-to-1 call parameter or group call parameter individually.
API
Changed
-
SVideoCapabilitystruct 1-to-1 callGroup callPrevious PlanetKit 6.0.0 EVideoResolution eMaxResolutionEVideoResolutionCapability eMaxVideoResolutionCapability -
MakeCallParamclass 1-to-1 callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability() -
VerifyCallParamclass 1-to-1 callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability() -
ConferenceParamclass Group callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability()
Added
EVideoResolutionCapabilityenum 1-to-1 callGroup callPLNK_VIDEO_RESOLUTION_CAPABILITY_QVGA = 1PLNK_VIDEO_RESOLUTION_CAPABILITY_VGA = 2PLNK_VIDEO_RESOLUTION_CAPABILITY_HD = 3PLNK_VIDEO_RESOLUTION_CAPABILITY_FHD = 4
SPreferredHardwareCodecstruct 1-to-1 callGroup callbool bCallVideoSendbool bCallVideoReceivebool bConferenceVideoSendbool bConferenceVideoReceive
PlanetKitManagerclass 1-to-1 callGroup callVideoCapabilityOptional GetCallDeviceDefaultVideoSendCapability()VideoCapabilityOptional GetCallDeviceDefaultVideoReceiveCapability()VideoCapabilityOptional GetConferenceDeviceDefaultVideoSendCapability()VideoCapabilityOptional GetConferenceDeviceDefaultVideoReceiveCapability()void SetPreferredHardwareCodec(SPreferredHardwareCodec sPreferredHardwareCodec)SPreferredHardwareCodec GetPreferredHardwareCodec()
Removed
SVideoCapabilitystruct 1-to-1 callGroup callbool bPreferHWCodec
ConferenceParamclass Group callbool UseRxHWVidCodec()void SetUseRxHWVidCodec(bool bUseRxHWVidCodec)
PlanetKitManagerclass 1-to-1 callGroup callbool GetDefaultVideoCapSend(SVideoCapability *pSend)bool GetDefaultVideoCapReceive(SVideoCapability *pReceive)
Remove the API to set the response type when the video call is enabled
- When a video call is activated by the peer in a 1-to-1 audio call, the local user's video is always set to paused state.
API
Changed
-
ICallEventclass 1-to-1 callPrevious PlanetKit 6.0.0 void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)void OnVideoEnabledByPeerAndMyVideoPaused(PlanetKitCallPtr pPlanetKitCall)
Removed
EResponseOnVideoEnableenum 1-to-1 callMakeCallParamclass 1-to-1 callvoid SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)EResponseOnVideoEnable ResponseOnVideoEnable()
VerifyCallParamclass 1-to-1 callvoid SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)EResponseOnVideoEnable ResponseOnVideoEnable()
Migration
-
In version 5.5 or earlier, you could use
SetResponseOnVideoEnable()to determine the behavior when the peer requested a video call.- If set to
EResponseOnVideoEnable::PAUSE, the state of the local user's video changed to paused upon switching to a video call, and no video was sent. - If set to
EResponseOnVideoEnable::SEND, the local user's video was sent upon switching to a video call.
- If set to
-
Starting from version 6.0, the related APIs have been removed. The state of the local user's video changes to paused upon switching to a video call, and no video is sent.
-
In version 5.5 or earlier, you could set the pause/send option as follows.
void SetResponseOnVideoEnableSend(PlanetKit::MakeCallParamPtr pCallParam) {
pCallParam->SetResponseOnVideoEnable(EResponseOnVideoEnable::SEND);
}
void SetResponseOnVideoEnablePause(PlanetKit::MakeCallParamPtr pCallParam) {
pCallParam->SetResponseOnVideoEnable(EResponseOnVideoEnable::PAUSE);
}
void MakeCall(PlanetKit::MakeCallParamPtr pCallParam) {
SetResponseOnVideoEnableSend(pCallParam);
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::PlanetKitCallPtr pCall;
planetkitManager->MakeCall(pCall, pCallParam);
}
...
// It is possible to know whether video is being sent to the peer at the time of switching to a video call through an event.
void OnVideoEnabledByPeer(PlanetKit::PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo) {
// If bIsSendingMyVideo is false, it is in a pause state.
} -
Starting from version 6.0, switching to a video call always begins in the paused state.
void MakeCall(PlanetKit::MakeCallParamPtr pCallParam, PlanetKit::MicPtr pMic) {
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::PlanetKitCallPtr pCall;
planetkitManager->MakeCall(pCall, pMic, pCallParam);
}
...
// The event allows determining the moment of switching to a video call.
void OnVideoEnabledByPeerAndMyVideoPaused(PlanetKit::PlanetKitCallPtr pPlanetKitCall) {
}
Rename API name in CameraController
- Changed API name.
API
Changed
-
CameraControllerclass 1-to-1 callGroup callPrevious PlanetKit 6.0.0 EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)EVideoControlResult ChangeCamera(CameraInfoPtr pCameraInfo)