본문으로 건너뛰기
Version: 6.0

릴리스 노트

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 call
    • MicOptional ChangeMic(AudioDeviceInfoPtr pInfo = nullptr)
    • SpeakerOptional ChangeSpeaker(AudioDeviceInfoPtr pInfo = nullptr)
    • bool RegisterMicExceptionEvent(MicExceptionEventPtr pMicExceptionEvent)
    • bool DeregisterMicExceptionEvent()
삭제
  • AudioManager class 1-to-1 callGroup call
    • AudioDevicePtr CreateAudioDevice(AudioDeviceInfoPtr pInfo)
    • AudioDevicePtr CreateDefaultInputDevice()
    • AudioDevicePtr CreateDefaultOutputDevice()
  • PlanetKitCall class 1-to-1 call
    • bool SetAudioInputDevice(AudioDevicePtr pDevice)
    • bool SetAudioOutputDevice(AudioDevicePtr pDevice)
  • MakeCallParam class 1-to-1 call
    • AudioDeviceOptional GetAudioInputDevice()
    • AudioDeviceOptional GetAudioOutputDevice()
    • void SetAudioInputDevice(AudioDevicePtr pDevice)
    • void SetAudioOutputDevice(AudioDevicePtr pDevice)
  • VerifyCallParam class 1-to-1 call
    • AudioDeviceOptional GetAudioInputDevice()
    • AudioDeviceOptional GetAudioOutputDevice()
    • void SetAudioInputDevice(AudioDevicePtr pDevice)
    • void SetAudioOutputDevice(AudioDevicePtr pDevice)
  • PlanetKitConference class Group call
    • bool SetAudioInputDevice(AudioDevicePtr pDevice)
    • bool SetAudioOutputDevice(AudioDevicePtr pDevice)
  • ConferenceParam class Group call
    • AudioDeviceOptional 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]);
    }
    }

마이크와 스피커 장치 정보 획득 방법 변경

  • 현재 사용 중인 MicSpeaker 장치의 인스턴스는 AudioManager를 통해 획득할 수 있습니다.
  • AudioDevice 클래스가 MicSpeaker 클래스로 변경되었습니다.
  • MicSpeaker를 통해 현재 볼륨 값을 획득하고 변경할 수 있으며, 장치 정보 변경에 대한 알림 이벤트를 등록할 수 있습니다.

API

추가
  • AudioManager class 1-to-1 callGroup call
    • SpeakerOptional GetCurrentSpeaker()
    • MicOptional GetCurrentMic()
  • Mic class 1-to-1 callGroup call
    • bool 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 call
    • bool 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 call
    • void OnNotify(const AudioDeviceInfoPtr pAudioInfo, const SAudioEndpointVolumeInfo& sInfo)
  • IMicEvent class 1-to-1 callGroup call
    • bool DidCapture(const SAudioData& sAudioData)
  • EMicStartError enum 1-to-1 callGroup call
    • PLNK_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 call
    • void OnMicStartError(EMicStartError eMicrophoneStartError)
  • IMicPreviewEvent class 1-to-1 callGroup call
    • void OnMicPreviewVolume(float fVolume)
  • ISpeakerEvent class 1-to-1 callGroup call
    • bool WillPlay(SAudioData& sAudioData)
삭제
  • AudioDevice class 1-to-1 callGroup call
  • IAudioDeviceVolumeChangedEvent class 1-to-1 callGroup call
  • IAudioDeviceInputDelegate class 1-to-1 callGroup call
  • IAudioDeviceOutputDelegate class 1-to-1 callGroup call

마이크 확인용 미리보기 기능 추가

  • '미리보기'는 현재 마이크 장치의 볼륨을 주기적으로 확인하는 이벤트를 의미합니다.
  • 미리보기 이벤트를 등록할 수 있는 기능을 추가했습니다.

API

추가
  • AudioManager class 1-to-1 callGroup call
    • bool bool StartMicPreview(MicPreviewEventPtr pMicPreviewEvent, unsigned int unInterval)
    • bool StopMicPreview()

커스텀 오디오 제공

  • 사용자가 직접 생성할 수 있는 커스텀 오디오 기능을 추가했습니다.

API

추가
  • CustomMic class 1-to-1 callGroup call
    • bool PutAudioData(SAudioData& audioData)
  • CustomSpeaker class 1-to-1 callGroup call
    • bool PullAudioData(SAudioData& audioData)

통화 수신 중 클라우드 통화 녹음 활성화 여부 확인 기능 추가

  • PlanetKitCCParam에 통화 수신 중 클라우드 통화 녹음 활성화 여부를 확인할 수 있는 파라미터를 추가했습니다.

API

추가
  • CCParam class 1-to-1 call
    • bool IsRecordOnCloudEnabled()

가상 배경 기능 제공

  • 가상 배경 기능을 추가했습니다.

API

추가
  • EVirtualBackgroundType enum 1-to-1 callGroup call
    • PLNK_VIRTUAL_BACKGROUND_TYPE_NONE
    • PLNK_VIRTUAL_BACKGROUND_TYPE_BLUR
    • PLNK_VIRTUAL_BACKGROUND_TYPE_IMAGE
  • Image class 1-to-1 callGroup call
    • ImageOptional 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 call
    • bool 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 call
    • void 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 eMaxResolutionEVideoResolutionCapability 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 call
    • PLNK_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 call
    • bool bCallVideoSend
    • bool bCallVideoReceive
    • bool bConferenceVideoSend
    • bool bConferenceVideoReceive
  • PlanetKitManager class 1-to-1 callGroup call
    • VideoCapabilityOptional GetCallDeviceDefaultVideoSendCapability()
    • VideoCapabilityOptional GetCallDeviceDefaultVideoReceiveCapability()
    • VideoCapabilityOptional GetConferenceDeviceDefaultVideoSendCapability()
    • VideoCapabilityOptional GetConferenceDeviceDefaultVideoReceiveCapability()
    • void SetPreferredHardwareCodec(SPreferredHardwareCodec sPreferredHardwareCodec)
    • SPreferredHardwareCodec GetPreferredHardwareCodec()
삭제
  • SVideoCapability struct 1-to-1 callGroup call
    • bool bPreferHWCodec
  • ConferenceParam class Group call
    • bool UseRxHWVidCodec()
    • void SetUseRxHWVidCodec(bool bUseRxHWVidCodec)
  • PlanetKitManager class 1-to-1 callGroup call
    • bool 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 call
  • MakeCallParam class 1-to-1 call
    • void SetResponseOnVideoEnable(EResponseOnVideoEnable eEnable)
    • EResponseOnVideoEnable ResponseOnVideoEnable()
  • VerifyCallParam class 1-to-1 call
    • void 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)