@@ -418,7 +418,7 @@ bool CSession::InitializeDRM(bool addDefaultKID /* = false */)
418
418
if (sessionPsshset.adaptation_set_ ->GetStreamType () == StreamType::NOTYPE)
419
419
continue ;
420
420
421
- const std::vector< uint8_t > defaultKid = DRM::ConvertKidStrToBytes ( sessionPsshset.defaultKID_ ) ;
421
+ std::string defaultKidStr = sessionPsshset.defaultKID_ ;
422
422
std::string_view licenseDataStr = CSrvBroker::GetKodiProps ().GetLicenseData ();
423
423
424
424
if (m_adaptiveTree->GetTreeType () == adaptive::TreeType::SMOOTH_STREAMING)
@@ -441,7 +441,7 @@ bool CSession::InitializeDRM(bool addDefaultKID /* = false */)
441
441
licenseData.empty () ? " " : " (with custom data)" );
442
442
443
443
std::vector<uint8_t > wvPsshData;
444
- if (DRM::MakeWidevinePsshData (defaultKid , licenseData, wvPsshData))
444
+ if (DRM::MakeWidevinePsshData (DRM::ConvertKidStrToBytes (defaultKidStr) , licenseData, wvPsshData))
445
445
DRM::MakePssh (DRM::ID_WIDEVINE, wvPsshData, initData);
446
446
}
447
447
}
@@ -469,6 +469,17 @@ bool CSession::InitializeDRM(bool addDefaultKID /* = false */)
469
469
initData = BASE64::Decode (licenseDataStr);
470
470
}
471
471
472
+ // If no KID, but init data, extract the KID from init data
473
+ if (!initData.empty () && defaultKidStr.empty ())
474
+ {
475
+ DRM::PSSH parser;
476
+ if (parser.Parse (initData) && !parser.GetKeyIds ().empty ())
477
+ {
478
+ LOG::Log (LOGDEBUG, " Default KID parsed from init data" );
479
+ defaultKidStr = STRING::ToHexadecimal (parser.GetKeyIds ()[0 ]);
480
+ }
481
+ }
482
+
472
483
if (initData.empty () && sessionPsshset.m_licenseUrl .empty ())
473
484
{
474
485
if (!sessionPsshset.pssh_ .empty ())
@@ -485,6 +496,8 @@ bool CSession::InitializeDRM(bool addDefaultKID /* = false */)
485
496
}
486
497
}
487
498
499
+ const std::vector<uint8_t > defaultKid = DRM::ConvertKidStrToBytes (defaultKidStr);
500
+
488
501
if (addDefaultKID && ses == 1 && session.m_cencSingleSampleDecrypter )
489
502
{
490
503
// If the CDM has been pre-initialized, on non-android systems
0 commit comments