릴리스 노트
Windows용 PlanetKit 6.0의 릴리스 노트입니다.
PlanetKit 6.0.4
릴리스 일자: 2025-08-29
카메라 문제 수정
- 일부 카메라가 제대로 작동하지 않는 문제를 수정했습니다.
PlanetKit 6.0.2
릴리스 일자: 2025-06-30
특정 카메라 장치에서 발생하는 문제 해결
- 특정 카메라 장치가 열리지 않는 문제를 수정했습니다.
PlanetKit 6.0.1
릴리스 일자: 2025-06-04
커스텀 오디오 기능 사용 시 발생하는 크래시 해결
- 버전 6.0에서 커스텀 오디오 기능 사용 시 발생하던 크래시 문제를 해결했습니다.
가상 배경 DLL에 지연 로딩 적용
- 가상 배경 기능에 사용되는 모듈이 지연 로드되도록 수정했습니다. 이 변경으로 해당 모듈이 없더라도 PlanetKit을 문제 없이 사용할 수 있습니다.
PlanetKit 6.0
릴리스 일자: 2025-05-16
오디오 장치가 AudioManager를 통해 관리되도록 변경
- 6.0 이전 버전에서는
AudioManager가 장치 인스턴스 생성을 위한 API를 제공했으며, 이를 이용해 장치 인스턴스를 수동으로 생성해야 했습니다. 하지만 6.0 버전부터는 장치 정보를 제공하면AudioManager가 내부적으로 장치 인스턴스를 생성하고 관리합니다. - 이제
AudioManager가 장치 인스턴스를 관리함에 따라 전역적으로 단 하나의 장치만 사용됩니다. ChangeMic()를 사용해 마이크를 변경할 경우 PlanetKit에서 사용 중인 마이크 장치가 업데이트됩니다.
API
변경
-
AudioManagerclass 1-to-1 callGroup call이전 버전 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()
추가
AudioManagerclass 1-to-1 callGroup callMicOptional ChangeMic(AudioDeviceInfoPtr pInfo = nullptr)SpeakerOptional ChangeSpeaker(AudioDeviceInfoPtr pInfo = nullptr)bool RegisterMicExceptionEvent(MicExceptionEventPtr pMicExceptionEvent)bool DeregisterMicExceptionEvent()
삭제
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)
마이그레이션
-
마이크와 스피커를 사용하는 방법이 같기 때문에 여기서는 마이크 사용 방법만 설명합니다.
-
5.5 이하 버전에서 오디오 장치 사용 방법은 다음과 같습니다.
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);
}
} -
6.0 버전부터 오디오 장치 사용 방법은 다음과 같습니다.
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]);
}
}
마이크와 스피커 장치 정보 획득 방법 변경
- 현재 사용 중인
Mic및Speaker장치의 인스턴스는AudioManager를 통해 획득할 수 있습니다. AudioDevice클래스가Mic및Speaker클래스로 변경되었습니다.Mic및Speaker를 통해 현재 볼륨 값을 획득하고 변경할 수 있으며, 장치 정보 변경에 대한 알림 이벤트를 등록할 수 있습니다.
API
추가
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)
삭제
AudioDeviceclass 1-to-1 callGroup callIAudioDeviceVolumeChangedEventclass 1-to-1 callGroup callIAudioDeviceInputDelegateclass 1-to-1 callGroup callIAudioDeviceOutputDelegateclass 1-to-1 callGroup call
마이크 확인용 미리보기 기능 추가
- '미리보기'는 현재 마이크 장치의 볼륨을 주기적으로 확인하는 이벤트를 의미합니다.
- 미리보기 이벤트를 등록할 수 있는 기능을 추가했습니다.
API
추가
AudioManagerclass 1-to-1 callGroup callbool bool StartMicPreview(MicPreviewEventPtr pMicPreviewEvent, unsigned int unInterval)bool StopMicPreview()
커스텀 오디오 제공
- 사용자가 직접 생성할 수 있는 커스텀 오디오 기능을 추가했습니다.
API
추가
CustomMicclass 1-to-1 callGroup callbool PutAudioData(SAudioData& audioData)
CustomSpeakerclass 1-to-1 callGroup callbool PullAudioData(SAudioData& audioData)
통화 수신 중 클라우드 통화 녹음 활성화 여부 확인 기능 추가
PlanetKitCCParam에 통화 수신 중 클라우드 통화 녹음 활성화 여부를 확인할 수 있는 파라미터를 추가했습니다.
API
추가
CCParamclass 1-to-1 callbool IsRecordOnCloudEnabled()
가상 배경 기능 제공
- 가상 배경 기능을 추가했습니다.
API
추가
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()
메모리 관리를 위한 SharedPtr 제공
- 메모리 관리를 용이하게 하는
SharedPtr를 추가했습니다.
API
변경
-
PlanetKitCallclass 1-to-1 call이전 버전 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 call이전 버전 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 call이전 버전 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 call이전 버전 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 call이전 버전 PlanetKit 6.0.0 IConferenceEvent* ConferenceEvent()IConferenceEventPtr ConferenceEvent()void SetConferenceEvent(IConferenceEvent* pEvent)void SetConferenceEvent(IConferenceEventPtr pEvent) -
ContentShareInterfaceclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool SetContentShareEvent(IContentShareEvent *pEvent)bool SetContentShareEvent(IContentShareEventPtr pEvent) -
OutboundDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 IOutboundDataSessionHandler* GetHandler()IOutboundDataSessionHandlerPtr GetHandler() -
InboundDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 IInboundDataSessionHandler* GetReceiver()IInboundDataSessionHandlerPtr GetReceiver() -
MakeCallParamclass 1-to-1 call이전 버전 PlanetKit 6.0.0 ICallEvent* CallEvent()ICallEventPtr CallEvent()void SetCallEvent(ICallEvent* pEvent)void SetCallEvent(ICallEventPtr pEvent) -
MyMediaStatusclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool Register(IMyMediaStatusEvent* pListener)bool Register(IMyMediaStatusEventPtr pListener) -
PeerControlclass Group call이전 버전 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 call이전 버전 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 call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network() -
StatisticsAudioRecvclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network() -
StatisticsVideoSendclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsVideoRecvclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsScreenShareSendclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
StatisticsScreenShareRecvclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()StatisticsNetworkPtr Network()StatisticsVideo* Video()StatisticsVideoPtr Video() -
Statisticsclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsAudioSend* AudioSend()StatisticsAudioSendPtr AudioSend()StatisticsAudioRecv* AudioRecv()StatisticsAudioRecvPtr AudioRecv() -
VerifyCallParamclass 1-to-1 call이전 버전 PlanetKit 6.0.0 ICallEvent* CallEvent()ICallEventPtr CallEvent()void SetCallEvent(ICallEvent* pEvent)void SetCallEvent(ICallEventPtr pEvent) -
VideoRenderclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool RegisterRenderEvent(IVideoRenderEvent *pDelegate)bool RegisterRenderEvent(IVideoRenderEventPtr pDelegate)
추가
SharedPtrclass 1-to-1 callGroup call
예제 코드
// 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;
마이그레이션
-
버전 5.5 이하에서는
new를 사용하여 이벤트 클래스 인스턴스를 생성하고 등록했습니다. -
버전 6.0부터는
PlanetKit::SharedPtr이 제공되므로PlanetKit::MakeAutoPtr()를 사용해야 합니다. -
버전 5.5 이하에서 이벤트 클래스를 생성하고 관리하는 방식은 다음과 같습니다.
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;
}; -
버전 6.0부터 이벤트 클래스를 생성하고 관리하는 방식은 다음과 같습니다:
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;
};
MakeCall(), VerifyCall(), JoinConference()에 마이크 설정 추가
MakeCall(),VerifyCall(),JoinConference()에MicOptional파라미터가 추가되었습니다.- 이 파라미터가
PlanetKit::NullOptional로 설정되면 마이크 장치 없이 통화가 연결됩니다. - 마이크 장치가 인자로 전달되면 해당 마이크를 사용하여 통화가 연결됩니다.
API
변경
-
PlanetKitManagerclass 1-to-1 callGroup call이전 버전 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)
예제 코드
-
특정 마이크 장치를 사용하는 예제
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
auto audioManager = planetkitManager->GetAudioManager();
auto mic = audioManager->ChangeMic(MicInfo);
planetkitManager->JoinConference(pJoinParam, mic, pConference); -
마이크 장치를 사용하지 않는 예제
auto planetkitManager = PlanetKit::PlanetKitManager::GetInstance();
planetkitManager->JoinConference(pJoinParam, PlanetKit::NullOptional, pConference);
피어 오디오 볼륨 설정 API 개선
- 서브그룹 기반 볼륨 설정 대신 피어별 볼륨 설정 API를 사용하도록 변경했습니다.
API
변경
-
PeerControlclass Group call이전 버전 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 call이전 버전 PlanetKit 6.0.0 VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)VolumeResult GetAudioVolumeLevelSetting()
삭제
SubgroupManagerclass Group callvoid bool SetPeerAudioVolumeLevelSetting(UserIdPtr pPeerId, bool bSetForAllSubgroups, const WStringOptional& strSubgroupNameToApply, unsigned char ucVolume, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
비디오 성능 설정 API 변경
- 비디오 성능 설정 API에서 섬네일 해상도는 더 이상 지원하지 않습니다.
- 비디오 하드웨어 코덱 설정은 이제 각 1대1 통화 파라미터 또는 그룹 통화 파라미터별로 설정하는 대신
PlanetKitManager를 통해 설정합니다.
API
변경
-
SVideoCapabilitystruct 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 EVideoResolution eMaxResolutionEVideoResolutionCapability eMaxVideoResolutionCapability -
MakeCallParamclass 1-to-1 call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability() -
VerifyCallParamclass 1-to-1 call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability() -
ConferenceParamclass Group call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()const VideoCapabilityOptional RecvVideoCapability()const SVideoCapability& SendVideoCapability()const VideoCapabilityOptional SendVideoCapability()
추가
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()
삭제
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)
영상 통화 활성화 시 응답 유형 설정 API 제거
- 이제 1대1 음성 통화에서 상대방이 영상 통화를 활성화하면 로컬 사용자의 비디오가 항상 일시 정지 상태로 설정됩니다.
API
변경
-
ICallEventclass 1-to-1 call이전 버전 PlanetKit 6.0.0 void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)void OnVideoEnabledByPeerAndMyVideoPaused(PlanetKitCallPtr pPlanetKitCall)
삭제
EResponseOnVideoEnableenum 1-to-1 callMakeCallParamclass 1-to-1 callvoid SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)EResponseOnVideoEnable ResponseOnVideoEnable()
VerifyCallParamclass 1-to-1 callvoid SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)EResponseOnVideoEnable ResponseOnVideoEnable()
마이그레이션
-
버전 5.5 이하에서는
SetResponseOnVideoEnable()을 사용하여 상대방이 영상 통화를 요청할 때의 동작을 결정할 수 있었습니다.EResponseOnVideoEnable::PAUSE로 설정하면, 영상 통화로 전환 시 로컬 사용자의 비디오 상태가 일시 중지로 변경되어 비디오가 전송되지 않았습니다.EResponseOnVideoEnable::SEND로 설정하면, 영상 통화로 전환 시 로컬 사용자의 비디오가 전송되었습니다.
-
버전 6.0부터 관련 API가 제거되었습니다. 영상 통화로 전환 시 로컬 사용자의 비디오 상태는 일시 중지로 변경되며, 비디오는 전송되지 않습니다.
-
버전 5.5 이하에서는 일시 중지/전송 옵션을 다음과 같이 설정할 수 있었습니다.
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.
} -
버전 6.0부터는 영상 통화로 전환 시 항상 일시 중지 상태로 시작됩니다.
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) {
}
CameraController의 API 이름 변경
- API 이름을 변경했습니다.
API
변경
-
CameraControllerclass 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)EVideoControlResult ChangeCamera(CameraInfoPtr pCameraInfo)