릴리스 노트
Windows용 PlanetKit 6.0의 릴리스 노트입니다.
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
변경
-
AudioManager
class 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()
추가
AudioManager
class 1-to-1 callGroup callMicOptional ChangeMic(AudioDeviceInfoPtr pInfo = nullptr)
SpeakerOptional ChangeSpeaker(AudioDeviceInfoPtr pInfo = nullptr)
bool RegisterMicExceptionEvent(MicExceptionEventPtr pMicExceptionEvent)
bool DeregisterMicExceptionEvent()
삭제
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)
마이그레이션
-
마이크와 스피커를 사용하는 방법이 같기 때문에 여기서는 마이크 사용 방법만 설명합니다.
-
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
추가
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)
삭제
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
마이크 확인용 미리보기 기능 추가
- '미리보기'는 현재 마이크 장치의 볼륨을 주기적으로 확인하는 이벤트를 의미합니다.
- 미리보기 이벤트를 등록할 수 있는 기능을 추가했습니다.
API
추가
AudioManager
class 1-to-1 callGroup callbool bool StartMicPreview(MicPreviewEventPtr pMicPreviewEvent, unsigned int unInterval)
bool StopMicPreview()
커스텀 오디오 제공
- 사용자가 직접 생성할 수 있는 커스텀 오디오 기능을 추가했습니다.
API
추가
CustomMic
class 1-to-1 callGroup callbool PutAudioData(SAudioData& audioData)
CustomSpeaker
class 1-to-1 callGroup callbool PullAudioData(SAudioData& audioData)
통화 수신 중 클라우드 통화 녹음 활성화 여부 확인 기능 추가
PlanetKitCCParam
에 통화 수신 중 클라우드 통화 녹음 활성화 여부를 확인할 수 있는 파라미터를 추가했습니다.
API
추가
CCParam
class 1-to-1 callbool IsRecordOnCloudEnabled()
가상 배경 기능 제공
- 가상 배경 기능을 추가했습니다.
API
추가
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()
메모리 관리를 위한 SharedPtr
제공
- 메모리 관리를 용이하게 하는
SharedPtr
를 추가했습니다.
API
변경
-
PlanetKitCall
class 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)
-
CameraController
class 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)
-
PlanetKitConference
class 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)
-
Subgroup
class 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)
-
ConferenceParam
class Group call이전 버전 PlanetKit 6.0.0 IConferenceEvent* ConferenceEvent()
IConferenceEventPtr ConferenceEvent()
void SetConferenceEvent(IConferenceEvent* pEvent)
void SetConferenceEvent(IConferenceEventPtr pEvent)
-
ContentShareInterface
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool SetContentShareEvent(IContentShareEvent *pEvent)
bool SetContentShareEvent(IContentShareEventPtr pEvent)
-
OutboundDataSession
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 IOutboundDataSessionHandler* GetHandler()
IOutboundDataSessionHandlerPtr GetHandler()
-
InboundDataSession
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 IInboundDataSessionHandler* GetReceiver()
IInboundDataSessionHandlerPtr GetReceiver()
-
MakeCallParam
class 1-to-1 call이전 버전 PlanetKit 6.0.0 ICallEvent* CallEvent()
ICallEventPtr CallEvent()
void SetCallEvent(ICallEvent* pEvent)
void SetCallEvent(ICallEventPtr pEvent)
-
MyMediaStatus
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool Register(IMyMediaStatusEvent* pListener)
bool Register(IMyMediaStatusEventPtr pListener)
-
PeerControl
class 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)
-
ScreenShareController
class 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)
-
StatisticsAudioSend
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
-
StatisticsAudioRecv
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
-
StatisticsVideoSend
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsVideoRecv
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsScreenShareSend
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
StatisticsScreenShareRecv
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsNetwork* Network()
StatisticsNetworkPtr Network()
StatisticsVideo* Video()
StatisticsVideoPtr Video()
-
Statistics
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 StatisticsAudioSend* AudioSend()
StatisticsAudioSendPtr AudioSend()
StatisticsAudioRecv* AudioRecv()
StatisticsAudioRecvPtr AudioRecv()
-
VerifyCallParam
class 1-to-1 call이전 버전 PlanetKit 6.0.0 ICallEvent* CallEvent()
ICallEventPtr CallEvent()
void SetCallEvent(ICallEvent* pEvent)
void SetCallEvent(ICallEventPtr pEvent)
-
VideoRender
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 bool RegisterRenderEvent(IVideoRenderEvent *pDelegate)
bool RegisterRenderEvent(IVideoRenderEventPtr pDelegate)
추가
SharedPtr
class 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
변경
-
PlanetKitManager
class 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
변경
-
PeerControl
class 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)
-
Peer
class Group call이전 버전 PlanetKit 6.0.0 VolumeResult GetAudioVolumeLevelSetting(const WStringOptional& strSubgroupName = NullOptional)
VolumeResult GetAudioVolumeLevelSetting()
삭제
SubgroupManager
class 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
변경
-
SVideoCapability
struct 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 EVideoResolution eMaxResolution
EVideoResolutionCapability eMaxVideoResolutionCapability
-
MakeCallParam
class 1-to-1 call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
-
VerifyCallParam
class 1-to-1 call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
-
ConferenceParam
class Group call이전 버전 PlanetKit 6.0.0 const SVideoCapability& RecvVideoCapability()
const VideoCapabilityOptional RecvVideoCapability()
const SVideoCapability& SendVideoCapability()
const VideoCapabilityOptional SendVideoCapability()
추가
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()
삭제
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)
영상 통화 활성화 시 응답 유형 설정 API 제거
- 이제 1대1 음성 통화에서 상대방이 영상 통화를 활성화하면 로컬 사용자의 비디오가 항상 일시 정지 상태로 설정됩니다.
API
변경
-
ICallEvent
class 1-to-1 call이전 버전 PlanetKit 6.0.0 void OnVideoEnabledByPeer(PlanetKitCallPtr pPlanetKitCall, bool bIsSendingMyVideo)
void OnVideoEnabledByPeerAndMyVideoPaused(PlanetKitCallPtr pPlanetKitCall)
삭제
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()
마이그레이션
-
버전 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
변경
-
CameraController
class 1-to-1 callGroup call이전 버전 PlanetKit 6.0.0 EVideoControlResult SelectCamera(CameraInfoPtr pCameraInfo)
EVideoControlResult ChangeCamera(CameraInfoPtr pCameraInfo)