Release notes
This page provides the release notes of PlanetKit 6.0 for Windows.
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
AudioManager
previously provided an API for instance creation, which required manual creation. Starting from version 6.0, providing the device information allowsAudioManager
to internally create and manage the device instance.- With
AudioManager
now 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
-
AudioManager
class 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
AudioManager
class 1-to-1 callGroup callMicOptional ChangeMic(AudioDeviceInfoPtr pInfo = nullptr)
SpeakerOptional ChangeSpeaker(AudioDeviceInfoPtr pInfo = nullptr)
bool RegisterMicExceptionEvent(MicExceptionEventPtr pMicExceptionEvent)
bool DeregisterMicExceptionEvent()
Removed
AudioManager
class 1-to-1 callGroup callAudioDevicePtr CreateAudioDevice(AudioDeviceInfoPtr pInfo)
AudioDevicePtr CreateDefaultInputDevice()
AudioDevicePtr CreateDefaultOutputDevice()
PlanetKitCall
class 1-to-1 callbool SetAudioInputDevice(AudioDevicePtr pDevice)
bool SetAudioOutputDevice(AudioDevicePtr pDevice)
MakeCallParam
class 1-to-1 callAudioDeviceOptional GetAudioInputDevice()
AudioDeviceOptional GetAudioOutputDevice()
void SetAudioInputDevice(AudioDevicePtr pDevice)
void SetAudioOutputDevice(AudioDevicePtr pDevice)
VerifyCallParam
class 1-to-1 callAudioDeviceOptional GetAudioInputDevice()
AudioDeviceOptional GetAudioOutputDevice()
void SetAudioInputDevice(AudioDevicePtr pDevice)
void SetAudioOutputDevice(AudioDevicePtr pDevice)
PlanetKitConference
class Group callbool SetAudioInputDevice(AudioDevicePtr pDevice)
bool SetAudioOutputDevice(AudioDevicePtr pDevice)
ConferenceParam
class 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
Mic
andSpeaker
devices can be obtained through theAudioManager
. - The
AudioDevice
class has been changed to theMic
andSpeaker
classes. Mic
andSpeaker
allow for obtaining and changing the current volume value, and notification events can be registered for device information changes.
API
Added
AudioManager
class 1-to-1 callGroup callSpeakerOptional GetCurrentSpeaker()
MicOptional GetCurrentMic()
Mic
class 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()
Speaker
class 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()
IAudioVolumeLevelChangedEvent
class 1-to-1 callGroup callvoid OnNotify(const AudioDeviceInfoPtr pAudioInfo, const SAudioEndpointVolumeInfo& sInfo)
IMicEvent
class 1-to-1 callGroup callbool DidCapture(const SAudioData& sAudioData)
EMicStartError
enum 1-to-1 callGroup callPLNK_MIC_START_ERROR_INTERNAL_REASON
PLNK_MIC_START_ERROR_NOT_ENOUGH_MEMORY
PLNK_MIC_START_ERROR_DEVICE_INVALID
PLNK_MIC_START_ERROR_AUDIO_SERVICE_NOT_RUNNING
PLNK_MIC_START_ERROR_DEVICE_IN_USE_EXCLUSIVE_BY_OTHER_APPLICATION
PLNK_MIC_START_ERROR_CPU_USAGE_EXCEEDED
PLNK_MIC_START_ERROR_PREVIEW_EVENT_NOT_VALID
IMicExceptionEvent
class 1-to-1 callGroup callvoid OnMicStartError(EMicStartError eMicrophoneStartError)
IMicPreviewEvent
class 1-to-1 callGroup callvoid OnMicPreviewVolume(float fVolume)
ISpeakerEvent
class 1-to-1 callGroup callbool WillPlay(SAudioData& sAudioData)
Removed
AudioDevice
class 1-to-1 callGroup callIAudioDeviceVolumeChangedEvent
class 1-to-1 callGroup callIAudioDeviceInputDelegate
class 1-to-1 callGroup callIAudioDeviceOutputDelegate
class 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
AudioManager
class 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
CustomMic
class 1-to-1 callGroup callbool PutAudioData(SAudioData& audioData)
CustomSpeaker
class 1-to-1 callGroup callbool PullAudioData(SAudioData& audioData)
Add a feature to check cloud call recording activation during call reception
- Added a parameter to
PlanetKitCCParam
to check cloud call recording activation while receiving a call.
API
Added
CCParam
class 1-to-1 callbool IsRecordOnCloudEnabled()
Provide a virtual background feature
- Added a virtual background feature.
API
Added
EVirtualBackgroundType
enum 1-to-1 callGroup callPLNK_VIRTUAL_BACKGROUND_TYPE_NONE
PLNK_VIRTUAL_BACKGROUND_TYPE_BLUR
PLNK_VIRTUAL_BACKGROUND_TYPE_IMAGE
Image
class 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()
CameraController
class 1-to-1 callGroup callbool SetVirtualBackgroundWithBlur(float fBlurRadius)
bool SetVirtualBackgroundWithImage(ImagePtr pImage)
void ClearVirtualBackground()
EVirtualBackgroundType GetCurrentVirtualBackgroundType()
Provide SharedPtr
for memory management
- Added
SharedPtr
to facilitate memory management.
API
Changed
-
PlanetKitCall
class 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)
-
CameraController
class 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)
-
PlanetKitConference
class 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)
-
Subgroup
class 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)
-
ConferenceParam
class Group callPrevious PlanetKit 6.0.0 IConferenceEvent* ConferenceEvent()
IConferenceEventPtr ConferenceEvent()
void SetConferenceEvent(IConferenceEvent* pEvent)
void SetConferenceEvent(IConferenceEventPtr pEvent)
-
ContentShareInterface
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool SetContentShareEvent(IContentShareEvent *pEvent)
bool SetContentShareEvent(IContentShareEventPtr pEvent)
-
OutboundDataSession
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 IOutboundDataSessionHandler* GetHandler()
IOutboundDataSessionHandlerPtr GetHandler()
-
InboundDataSession
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 IInboundDataSessionHandler* GetReceiver()
IInboundDataSessionHandlerPtr GetReceiver()
-
MakeCallParam
class 1-to-1 callPrevious PlanetKit 6.0.0 ICallEvent* CallEvent()
ICallEventPtr CallEvent()
void SetCallEvent(ICallEvent* pEvent)
void SetCallEvent(ICallEventPtr pEvent)
-
MyMediaStatus
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool Register(IMyMediaStatusEvent* pListener)
bool Register(IMyMediaStatusEventPtr pListener)
-
PeerControl
class 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)
-
ScreenShareController
class 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)
-
StatisticsAudioSend
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
-
StatisticsAudioRecv
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
-
StatisticsVideoSend
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsVideoRecv
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsScreenShareSend
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsScreenShareRecv
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
Statistics
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 StatisticsAudioSend* AudioSend()
StatisticsAudioSendPtr AudioSend()
StatisticsAudioRecv* AudioRecv()
StatisticsAudioRecvPtr AudioRecv()
-
VerifyCallParam
class 1-to-1 callPrevious PlanetKit 6.0.0 ICallEvent* CallEvent()
ICallEventPtr CallEvent()
void SetCallEvent(ICallEvent* pEvent)
void SetCallEvent(ICallEventPtr pEvent)
-
VideoRender
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 bool RegisterRenderEvent(IVideoRenderEvent *pDelegate)
bool RegisterRenderEvent(IVideoRenderEventPtr pDelegate)
Added
SharedPtr
class 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
new
in version 5.5 or earlier. -
Starting from version 6.0,
PlanetKit::SharedPtr
is 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
MicOptional
parameter 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
-
PlanetKitManager
class 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
-
PeerControl
class 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)
-
Peer
class Group callPrevious PlanetKit 6.0.0 VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)
VolumeResult GetAudioVolumeLevelSetting()
Removed
SubgroupManager
class 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
PlanetKitManager
instead of setting them for each 1-to-1 call parameter or group call parameter individually.
API
Changed
-
SVideoCapability
struct 1-to-1 callGroup callPrevious PlanetKit 6.0.0 EVideoResolution eMaxResolution
EVideoResolutionCapability eMaxVideoResolutionCapability
-
MakeCallParam
class 1-to-1 callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
-
VerifyCallParam
class 1-to-1 callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
-
ConferenceParam
class Group callPrevious PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
Added
EVideoResolutionCapability
enum 1-to-1 callGroup callPLNK_VIDEO_RESOLUTION_CAPABILITY_QVGA = 1
PLNK_VIDEO_RESOLUTION_CAPABILITY_VGA = 2
PLNK_VIDEO_RESOLUTION_CAPABILITY_HD = 3
PLNK_VIDEO_RESOLUTION_CAPABILITY_FHD = 4
SPreferredHardwareCodec
struct 1-to-1 callGroup callbool bCallVideoSend
bool bCallVideoReceive
bool bConferenceVideoSend
bool bConferenceVideoReceive
PlanetKitManager
class 1-to-1 callGroup callVideoCapabilityOptional GetCallDeviceDefaultVideoSendCapability()
VideoCapabilityOptional GetCallDeviceDefaultVideoReceiveCapability()
VideoCapabilityOptional GetConferenceDeviceDefaultVideoSendCapability()
VideoCapabilityOptional GetConferenceDeviceDefaultVideoReceiveCapability()
void SetPreferredHardwareCodec(SPreferredHardwareCodec sPreferredHardwareCodec)
SPreferredHardwareCodec GetPreferredHardwareCodec()
Removed
SVideoCapability
struct 1-to-1 callGroup callbool bPreferHWCodec
ConferenceParam
class Group callbool UseRxHWVidCodec()
void SetUseRxHWVidCodec(bool bUseRxHWVidCodec)
PlanetKitManager
class 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
-
ICallEvent
class 1-to-1 callPrevious PlanetKit 6.0.0 void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)
void OnVideoEnabledByPeerAndMyVideoPaused(PlanetKitCallPtr pPlanetKitCall)
Removed
EResponseOnVideoEnable
enum 1-to-1 callMakeCallParam
class 1-to-1 callvoid SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)
EResponseOnVideoEnable ResponseOnVideoEnable()
VerifyCallParam
class 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
-
CameraController
class 1-to-1 callGroup callPrevious PlanetKit 6.0.0 EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)
EVideoControlResult ChangeCamera(CameraInfoPtr pCameraInfo)