ハードウェアビデオコーデックのサポート
LINE Planetは、1対1通話やグループ通話(カンファレンス)でユーザーのデバイス上でハードウェアビデオコーデックが有効または無効になるようにリクエストできます。
ここでは、ハードウェアビデオコーデックの有効または無効を設定し、その結果を確認する方法について説明します。
対応する通話タイプ | SDKの最低バージョン |
---|---|
1対1通話、グループ通話 | 3.1.13 |
LINE Planet自体では、ハードウェアビデオコーデックをサポートするためのH.264コーデックを提供していません。ユーザーのデバイス上でH.264ハードウェアコーデックが利用可能であれば、LINE Planetはユーザーのデバイス上でH.264ハードウェアコーデックが有効になるようにリクエストします。詳しくは、LINE Planetの通話品質を参照してください。
ハードウェアビデオコーデックを有効または無効にする
通話タイプによってハードウェアビデオコーデックを有効または無効にする方法について説明します。
以下の理由により、必ずしもハードウェアビデオコーデックが有効になることを保証するものではありません。
- 1対1通話で、ピアがハードウェアビデオコーデックを利用できない場合があります。
- 運用上の問題により、LINE Planetチームがその機能を無効にする場合があります。
1対1通話
1対1通話では、ハードウェアビデオコーデックを有効または無効にするために通話パラメーターを設定できます。
発信者側
発信者側では、次のコードのように、通話を作成(make)する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。
PlanetKit::PlanetKitCallPtr pPlanetKitCall;
PlanetKit::SVideoCapability sSendVideoCapability;
PlanetKit::SVideoCapability sRecvVideoCapability;
PlanetKitManager::GetInstance()->GetDefaultVideoCapSend(&sSendVideoCapability);
PlanetKitManager::GetInstance()->GetDefaultVideoCapReceive(&sRecvVideoCapability);
// For both GetDefaultVideoCapSend() and GetDefaultVideoCapReceive(), the default value of bPreferHWCodec is true.
// To request deactivation of hardware video codec, set both to false as follows:
// sSendVideoCapability.bPreferHWCodec = false;
// sRecvVideoCapability.bPreferHWCodec = false;
PlanetKit::MakeCallParamPtr pMakeCallParam = PlanetKit::MakeCallParam::CreateWithAccessToken(
myId, peerId, accessToken
);
pMakeCallParam->SetSendVideoCapability(sSendVideoCapability);
pMakeCallParam->SetRecvVideoCapability(sRecvVideoCapability);
PlanetKit::PlanetKitManagerPtr pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::SStartResult sStartResult = pPlanetKitManager->MakeCall(pMakeCallParam, &pPlanetKitCall);
受信者側
受信者側では、次のコードのように、通話を受信(verify)する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。
PlanetKit::PlanetKitCallPtr pPlanetKitCall;
PlanetKit::SVideoCapability sSendVideoCapability;
PlanetKit::SVideoCapability sRecvVideoCapability;
PlanetKitManager::GetInstance()->GetDefaultVideoCapSend(&sSendVideoCapability);
PlanetKitManager::GetInstance()->GetDefaultVideoCapReceive(&sRecvVideoCapability);
// For both GetDefaultVideoCapSend() and GetDefaultVideoCapReceive(), the default value of bPreferHWCodec is true.
// To request deactivation of hardware video codec, set both to false as follows:
// sSendVideoCapability.bPreferHWCodec = false;
// sRecvVideoCapability.bPreferHWCodec = false;
PlanetKit::VerifyCallParamPtr pVerifyCallParam = PlanetKit::VerifyCallParam::Create(
myId, ccParam
);
pVerifyCallParam->SetSendVideoCapability(sSendVideoCapability);
pVerifyCallParam->SetRecvVideoCapability(sRecvVideoCapability);
PlanetKit::PlanetKitManagerPtr pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::SStartResult sStartResult = pPlanetKitManager->VerifyCall(pVerifyCallParam, &pPlanetKitCall);
グループ通話
グループ通話でハードウェアビデオコーデックを有効または無効にするには、次のコードのように、グループ通話に参加する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。
PlanetKit::PlanetKitConferencePtr pPlanetKitConference;
PlanetKit::SVideoCapability sSendVideoCapability;
PlanetKitManager::GetInstance()->GetDefaultVideoCapSend(&sSendVideoCapability);
// For GetDefaultVideoCapSend(), the default value of bPreferHWCodec is true.
// To request deactivation of hardware video codec for encoding, set bPreferHWCodec to false as follows:
// sSendVideoCapability.bPreferHWCodec = false
PlanetKit::ConferenceParamPtr pConferenceParam = PlanetKit::ConferenceParam::CreateWithAccessToken(
myId, roomId, roomServiceId, accessToken
);
pConferenceParam->SetSendVideoCapability(sSendVideoCapability);
// To enable or disable hardware video codec for decoding, set SetUseRxHWVidCodec() of ConferenceParam to true or false.
pConferenceParam->SetUseRxHWVidCodec(true);
PlanetKit::PlanetKitManagerPtr pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();
PlanetKit::SStartResult sStartResult = pPlanetKitManager->JoinConference(pConferenceParam, &pPlanetKitConference);
ハードウェアビデオコーデックが有効または無効設定を確認する
ハードウェアビデオコーデックの有効または無効設定の結果は、コールセットアップ(call setup)プロセスで決まります。したがって、OnConnected
イベント発生後に結果を確認する必要があります。
- 1対1通話では、
OnConnected
で渡したCallConnectedParam
のIsVideoSendHardwareCodecEnabled()
を使用してハードウェアコーデックが有効かどうかを確認できます。 - グループ通話では、
OnConnected
で渡したConferenceConnectedParam
のIsVideoSendHardwareCodecEnabled()
を使用してハードウェアコーデックが有効かどうかを確認できます。
関連API
ハードウェアビデオコーデックのサポートに関連するAPIは次のとおりです。
1対1通話
-
MakeCallParam::SetSendVideoCapability()
-
MakeCallParam::SetRecvVideoCapability()
-
VerifyCallParam::SetSendVideoCapability()
-
VerifyCallParam::SetRecvVideoCapability()