リリースノート
Windows向けPlanetKit 7.0のリリースノートです。
PlanetKit 7.0
リリース日:2026-04-24
ロギングパスとレベル設定の統合
Configurationのロギングとパス設定APIを統合して簡素化しました。
- これにより、
Create()メソッドはベースパスとデータベースパスを別々に受け取る代わりに、strPlanetKitSystemDirectoryパラメーター1つを受け取ります。 - ロギング設定時に使用していた複数のセッターメソッド(
SetLogLevel、SetLogSizeLimit、EnableLogOutput)を削除し、代わりにサイズ制限のロギングとサイズ無制限ロギングのための2つのEnableLog()メソッドを追加しました。 - この変更により、PlanetKitで設定ファイルパスとログファイルパスの区別がより明確になりました。
API
変更
-
Configurationclass 1-to-1 callGroup call以前のバージョン PlanetKit 7.0.0 ConfigurationPtr Create(const WString& strBasePath, const WString& strDatabasePath)ConfigurationPtr Create(const WString& strPlanetKitSystemDirectory)
追加
Configurationclass 1-to-1 callGroup callvoid EnableLog(const WString& strLogDirectory, ELogLevel eLogLevel = ELogLevel::PLNK_LOG_SIMPLE, ELogSizeLimit eLogSizeLimit = ELogSizeLimit::PLNK_LOG_SIZE_LIMIT_LARGE)void EnableLog(const WString& strLogDirectory, WStringOptional strLogFileName, ELogLevel eLogLevel = ELogLevel::PLNK_LOG_SIMPLE)const WString& GetPlanetKitSystemDirectory()
削除
Configurationclass 1-to-1 callGroup callvoid SetLogLevel(ELogLevel eLogLevel)void SetLogSizeLimit(ELogSizeLimit eLogSizeLimit)void EnableLogOutput(bool bEnable)const WString& GetBasePath()const WString& GetDatabasePath()ELogLevel GetLogLevel()ELogSizeLimit GetLogSizeLimit()bool IsLogOutputEnabled()
ELogLevelenum 1-to-1 callGroup callPLNK_LOG_SILENT
ELogSizeLimitenum 1-to-1 callGroup callPLNK_LOG_SIZE_LIMIT_UNLIMITED
マイグレーション
Configuration作成時に使用していたstrBasePathパラメーターをstrPlanetKitSystemDirectoryに変更してください。strDatabasePathパラメーターはPlanetKitロギングを有効にするとき、EnableLogAPIのstrLogDirectoryパラメーターとして使用されます。
void InitializePlanetKit() {
auto pConfiguration = PlanetKit::Configuration::Create(L"specific_planetkit_directory");
// Call to enable logging
pConfiguration->EnableLog(L"planetkit_log_directory");
PlanetKit::PlanetKitManager::Initialize(pConfiguration);
}
カスタムビデオソース機能の追加
ユーザーは自分のビデオをカスタムビデオソースに置き換えることができます。詳細は、カスタムビデオソースを参照してください。
API
追加
-
CustomCameraclass 1-to-1 callGroup callvoid OnStart()void OnStop()
-
CameraControllerclass 1-to-1 callGroup callbool ChangeCamera(CustomCameraPtr pCustomCamera)
サンプルコード
CustomCameraクラスを継承してカスタムビデオソースを実装します。ビデオが始まるとCustomCamera::OnStart()コールバックが呼び出され、停止するとCustomCamera::OnStop()コールバックが呼び出されます。
class YourCustomCamera : public PlanetKit::CustomCamera {
public:
void OnStart() override {
// start custom video source thread
m_videoThread = std::thread(& CustomVideoSource::VideoThreadProc, this);
}
void OnStop() override {
// stop custom video source thread
m_bRunning = false;
if (m_videoThread.joinable()) {
m_videoThread.join();
}
}
void VideoThreadProc() {
m_bRunning = true;
const auto frameInterval = std::chrono::milliseconds(66); // ~15fps (1000ms / 15 = 66.67ms)
while(m_bRunning) {
// read from file
PlanetKit::SVideoFrame sVideoFrame;
// Tickcount as microseconds
sVideoFrame.llTick = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
this->WriteFrameData(sVideoFrame);
// Maintain 15fps timing
std::this_thread::sleep_for(frameInterval);
}
}
private:
std::thread m_videoThread;
std::atomic<bool> m_bRunning = false;
};
実装したCustomCameraクラスのインスタンスを設定するには、CameraControllerクラスのChangeCamera APIを使用してください。
PlanetKitが提供するカメラに切り替えるには、EVideoControlResult CameraController::ChangeCamera(CameraInfoPtr pCameraInfo)を呼び出します。
class YourCameraManager {
// Custom Video Source
void ChangeCustomVideoSource() {
PlanetKit::CameraControllerPtr pCameraController = PlanetKit::PlanetKitManager()::GetInstance()->GetCameraController();
pCameraController->ChangeCamera(m_pYourCustomCamera);
}
// Change Camera Device
void ChangeCamera() {
PlanetKit::CameraControllerPtr pCameraController = PlanetKit::PlanetKitManager()::GetInstance()->GetCameraController();
PlanetKit::CameraInfoArray aCameraInfos;
pCameraController->GetCapturerInfo(aCameraInfos);
pCameraController->ChangeCamera(aCameraInfos.GetAt(0));
}
// Deselect Camera
void DeselectCamera() {
PlanetKit::CameraControllerPtr pCameraController = PlanetKit::PlanetKitManager()::GetInstance()->GetCameraController();
pCameraController->ChangeCamera(nullptr);
}
private:
PlanetKit::CustomCameraPtr m_pYourCustomCamera = PlanetKit::MakeAutoPtr<YourCustomCamera>();
}
グループ通話で画面共有中止の理由を追加
- グループ通話で画面共有が中止になった理由を確認できるAPIを追加しました。
IPeerControlEvent::OnScreenShareUpdatedにnDisabledReasonパラメーターを追加しました。IConferenceEvent::OnPeerScreenShareUpdatedのパラメーターであるConferencePeerScreenShareUpdatedParamにGetDisabledReason()を追加しました。
- これにより、アプリケーションでユーザーに画面共有が中止となった理由をより詳細に提供でき、さまざまな終了状況を適切に処理する際の参考にできます。
API
変更
-
IPeerControlEventclass Group call以前のバージョン PlanetKit 7.0.0 void OnScreenShareUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, EScreenShareState eState)void OnScreenShareUpdated(PeerControlPtr pPeerControl, SubgroupPtr pSubgroup, EScreenShareState eState, IntOptional nDisabledReason)
追加
PlanetKitConferenceclass Group callbool StopMyScreenShare(int nUserReason, void* pUserData = nullptr, ResultCallback pCallback = nullptr)
ConferencePeerScreenShareUpdatedParamclass Group callIntOptional GetDisabledReason()
通訳者向けの音量調整フィルターモード追加
音量調整フィルターのデフォルトモードであるPLNK_AUTO_GAIN_CONTROL_TYPE_HARDWAREで発生する問題を解決するために新しいモード(PLNK_AUTO_GAIN_CONTROL_TYPE_HARDWARE_ECHO_TOLERANCE)を追加しました。
- 通訳ルームで通訳者は、通常、他の参加者の発言を聞きながら同時に発言します。このように同時に話す(double talk)状況はエコー環境として検出されるため、マイク音量が小さくても音量調整フィルター(auto gain control)が音量を上げません。このため、通訳者のマイク音量が特定レベル以下の場合、音量が上がらない問題がありました。
- これを解決するために、エコー環境でもマイク音量を上げることができる
PLNK_AUTO_GAIN_CONTROL_TYPE_HARDWARE_ECHO_TOLERANCEモードを追加しました。このモードを使用すると、同時に話す状況でも通訳者の声が明確に伝わります。
サンプルコード
ユーザーの役割が通訳者の場合は、PLNK_AUTO_GAIN_CONTROL_TYPE_HARDWARE_ECHO_TOLERANCEモードを設定してください。
class YourConference {
public:
void SetAutoGainControlModeForTranslator() {
PlanetKit::SendVoiceProcessorPtr voiceProcessor = m_pConference->GetSendVoiceProcessor();
voiceProcessor->SetAutoGainControl(
PLNK_AUTO_GAIN_CONTROL_TYPE_HARDWARE_ECHO_TOLERANCE,
nullptr,
[](void* pUserData, bool bSuccess) {
std::wcout << L"AGC configured with result: " << bSuccess << std::endl;
}
);
}
private:
PlanetKit::PlanetKitConferencePtr m_pConference;
};
API
追加
EPlanetKitAutoGainControlenum class 1-to-1 callGroup callPLNK_AUTO_GAIN_CONTROL_TYPE_HARDWARE_ECHO_TOLERANCE = 3
APIキーを使用するdeprecated APIの削除
APIキーを使用して通話を開始する機能を削除しました。
API
削除
EConnectTokenenum 1-to-1 callGroup callAPI_KEYACCESS_TOKEN
MakeCallParamclass 1-to-1 callMakeCallParamPtr CreateWithAPIKey(UserIdPtr pMyID, UserIdPtr pPeerID, const WString& strKey)const WString& APIKey()EConnectToken ConnectToken()
ConferenceParamclass Group callConferenceParamPtr CreateWithAPIKey(UserIdPtr pMyID, const WString& strRoomID, const WString& strRoomServiceID, const WString& strAPIKey)const WString& GetAPIKey()EConnectToken ConnectToken()
ピアのビデオまたは画面共有リクエストのためのdeprecated APIの削除
PlanetKitConferenceクラスで参加者のビデオと画面共有を開始する機能を削除しました。今後は、PeerControlクラスで提供するStartVideo()とStartScreenShare()メソッドを使用してください。
API
削除
PlanetKitConferenceclass Group callbool RequestPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution)bool RequestPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, RequestPeerVideoResultCallback pCallback)bool RequestPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, EVideoResolution eVideoResolution, void* pUserData, RequestPeerVideoResolutionCallback pCallback)bool StopPeerVideo(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData = nullptr, RequestPeerVideoResultCallback pCallback = nullptr)bool RequestPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)bool StopPeerScreenShare(UserIdPtr pPeerId, const WStringOptional& strSubgroupName, void* pUserData, RequestPeerVideoResultCallback pCallback)
設定用未対応APIの削除
- オーディオ/ビデオ入力ソースがない場合に通話を終了するタイムアウト設定関連APIを
MakeCallParam、VerifyCallParam、ConferenceParamから削除しました。 - その値はPlanet Cloudを通じて設定されるため、これに関連する設定APIを削除しました。
API
削除
MakeCallParamclass 1-to-1 callint GetAudioInputNoSrcTimeOutSec()int GetVideoInputNoSrcTimeOutSec()void SetAudioInputNoSrcTimeOutSec(unsigned int nAudioInputNoSrcTimeOutSec)void SetVideoInputNoSrcTimeOutSec(unsigned int nVideoInputNoSrcTimeOutSec)
VerifyCallParamclass 1-to-1 callint GetAudioInputNoSrcTimeOutSec()int GetVideoInputNoSrcTimeOutSec()void SetAudioInputNoSrcTimeOutSec(unsigned int nAudioInputNoSrcTimeOutSec)void SetVideoInputNoSrcTimeOutSec(unsigned int nVideoInputNoSrcTimeOutSec)
ConferenceParamclass Group callint GetAudioInputNoSrcTimeOutSec()int GetVideoInputNoSrcTimeOutSec()void SetAudioInputNoSrcTimeOutSec(unsigned int nAudioInputNoSrcTimeOutSec)void SetVideoInputNoSrcTimeOutSec(unsigned int nVideoInputNoSrcTimeOutSec)
短いデータ転送に詳細なエラー報告機能を追加
1対1通話とグループ通話の両方で、SendShortDataに包括的な失敗理由の報告機能を追加しました。
- 新しい
ESendShortDataFailReasonenumは、開発者がさまざまな失敗シナリオをより効果的に識別し、処理できるように具体的なエラーコードを提供します。 - 従来の汎用
ResultCallbackを詳細な失敗情報を含む専用のSendShortDataResultHandlerに置き換えました。 - 短いデータ転送機能を使用する際に、この機能を利用してエラー処理、デバッグ、情報提供機能を改善できます。
API
変更
-
PlanetKitCallclass 1-to-1 call以前のバージョン PlanetKit 7.0.0 bool SendShortData(const WString &strType, void *pData, unsigned int nSize, void *pUserData=nullptr, ResultCallback pCallback=nullptr)bool SendShortData(const WString &strType, void *pData, unsigned int nSize, void *pUserData=nullptr, SendShortDataResultHandler pHandler=nullptr) -
PlanetKitConferenceclass Group call以前のバージョン PlanetKit 7.0.0 bool SendShortData(const WString &strType, void *pData, unsigned int nSize, UserIdPtr pPeerId, void *pUserData=nullptr, ResultCallback pCallback=nullptr)bool SendShortData(const WString &strType, void *pData, unsigned int nSize, UserIdPtr pPeerId, void *pUserData=nullptr, SendShortDataResultHandler pHandler=nullptr)bool SendShortDataToAllPeers(const WString &strType, void *pData, unsigned int nSize, void *pUserData=nullptr, ResultCallback pCallback=nullptr)bool SendShortDataToAllPeers(const WString &strType, void *pData, unsigned int nSize, void *pUserData=nullptr, SendShortDataResultHandler pHandler=nullptr)
追加
SendShortDataResultHandler = void(*)(void* pUserData, bool bSuccess, ESendShortDataFailReason eFailReason)ESendShortDataFailReasonenum 1-to-1 callGroup callPLNK_SEND_SHORT_DATA_FAIL_REASON_NONE = 0PLNK_SEND_SHORT_DATA_FAIL_REASON_INVALID_PARAMETERPLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATA_TYPEPLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATAPLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_FREQUENTPLNK_SEND_SHORT_DATA_FAIL_REASON_TIMEOUT
誤字修正
ネーミングルールに合わない、または誤字があったAPIを修正しました。
API
変更
-
SendVoiceProcessorclass 1-to-1 callGroup call以前のバージョン PlanetKit 7.0.0 EPlanetkitNoiseSuppressorMode GetNoiseSuppressorMode()EPlanetKitNoiseSuppressorMode GetNoiseSuppressorMode()bool SetNoiseSuppressor(EPlanetkitNoiseSuppressorMode ePlanetkitNoiseSuppressorMode=EPlanetkitNoiseSuppressorMode::PLNK_NOISE_SUPPRESSOR_MODE_ENABLE, void *pUserData=nullptr, ResultCallback pCallback=nullptr)bool SetNoiseSuppressor(EPlanetKitNoiseSuppressorMode ePlanetKitNoiseSuppressorMode=EPlanetKitNoiseSuppressorMode::PLNK_NOISE_SUPPRESSOR_MODE_ENABLE, void *pUserData=nullptr, ResultCallback pCallback=nullptr) -
CallVerifiedParamclass 1-to-1 call以前のバージョン PlanetKit 7.0.0 bool IsPeerUsePreparation()bool IsPeerUseResponderPreparation() -
ECapturerMediaTypeenum 1-to-1 callGroup call以前のバージョン PlanetKit 7.0.0 PLNK_CAPTURER_TYPE_UnknownPLNK_CAPTURER_TYPE_UNKNOWNPLNK_CAPTURER_TYPE_v210PLNK_CAPTURER_TYPE_V210PLNK_CAPTURER_TYPE_v216PLNK_CAPTURER_TYPE_V216PLNK_CAPTURER_TYPE_v410PLNK_CAPTURER_TYPE_V410PLNK_CAPTURER_TYPE_Base_HDCPPLNK_CAPTURER_TYPE_BASE_HDCP -
MakeCallParamclass 1-to-1 call以前のバージョン PlanetKit 7.0.0 void SetPreparation(bool bPreparation)void SetUseResponderPreparation(bool bUseResponderPreparation)bool IsPreparation()bool UseResponderPreparation() -
Enum名の変更
以前のバージョン PlanetKit 7.0.0 注 EPlanetkitNoiseSuppressorModeEPlanetKitNoiseSuppressorMode1対1通話、グループ通話