update dtype as drm name based on key system.
authorshuai.yuan <shuai.yuan@samsung.com>
Fri, 17 Nov 2023 08:26:00 +0000 (16:26 +0800)
committershuai.yuan <shuai.yuan@samsung.com>
Fri, 17 Nov 2023 08:26:00 +0000 (16:26 +0800)
include/esplusplayer/drm.h
src/esplusplayer/include_internal/esplayer/esplayer.h
src/esplusplayer/src/esplayer.cpp
src/plusplayer-core/src/kpi.cpp

index bb8f229b519cc66832c8e973bb254753b4f8b113..82ef1e7ac3b1783e592db27067bccf38bebab6f3 100644 (file)
@@ -24,6 +24,8 @@
 #ifndef __ESPLUSPLAYER_DRM_H__
 #define __ESPLUSPLAYER_DRM_H__
 
+#include <map>
+
 namespace esplusplayer {
 
 namespace drm {
@@ -49,6 +51,17 @@ enum class Type {
   kMax
 };
 
+const std::map<std::string, std::string> KeySystemToDrmNameConverter = {
+    {"com.apple.fps", "EME_FairPlay"},
+    {"com.atsc3us.wv", "EME_Atsc3us-cdm"},
+    {"com.microsoft.playready", "EME_Playready"},
+    {"com.microsoft.playready.v3", "EME_Playready"},
+    {"com.tvkey.drm", "EME_NagSam"},
+    {"com.widevine.alpha", "EME_Widevine"},
+    {"kr.atsc3.uhdcp", "EME_Atsc3uhdcp"},
+    {"org.w3.clearkey", "EME_ClearKey"}
+};
+
 // post from hlsdemux for getright
 
 struct Property {
index e33095f6490dd18c2f4ccc2c61ba1d3302852ba7..fbc12bb2ad1788caeb7110f6d40a08f10558fabd 100644 (file)
@@ -294,7 +294,7 @@ class EsPlayer : public EsPlusPlayer {
   EsStateManager state_manager_;
 
   SubmitDataType submit_data_type_ = SubmitDataType::kCleanData;
-  std::string key_system_ = "";
+  std::string key_system_;
   bool key_system_acquired_ = false;
   drm::Property drm_property_;
   std::uint32_t low_latency_mode_ = 0;
index 8304ec05cb9a360152d645bf9721fcc365754a17..121e4214fa65f3b8a6b2644c1161acfcda237a7a 100644 (file)
@@ -1638,7 +1638,7 @@ PacketSubmitStatus EsPlayer::SubmitEncryptedPacket(
   };
   if (!key_system_acquired_) {
     key_system_ = eme::IEME::getKeySystemName(drm_info.handle);
-    LOG_ERROR("KeySystemName :: [%s] ", key_system_.c_str());
+    LOG_INFO("KeySystemName :: [%s] ", key_system_.c_str());
     if (!state_manager_.GetPreparingState()) { //if the stream comes with clean data at the begining, re-post kpi when we get key system. 
         kpi::CodecLogger logger;
         kpi::EsCodecLoggerKeys event_keys = MakeKpiKeys_();
index 12f6dfaca13879be96253f27f5729fbf7170c5db..863b39b13041f9556b1eb7fb13573ba595fd8732 100644 (file)
@@ -132,7 +132,7 @@ bool CodecLogger::SendKpi(bool event_case, const EsCodecLoggerKeys& keys) {
   LOG_ENTER;
 
   std::string ptype = keys.is_clean ? "MSE" : "EME";
-  std::string drm_type = keys.is_clean ? "NONE" : "EME";
+  std::string drm_type = keys.is_clean ? "NONE" : drm::KeySystemToDrmNameConverter.at(keys.key_system);
   std::string v_decoder_type("HW");
   std::string a_decoder_type("HW");
   std::string container_type("EsPlusplayer");
@@ -156,7 +156,6 @@ bool CodecLogger::SendKpi(bool event_case, const EsCodecLoggerKeys& keys) {
   str << ";a_codec=" << keys.a_codec;
   str << ";a_tag=0x" << std::hex << audio_tag;
   str << ";app_id=" << keys.app_id;
-  if(!keys.is_clean) str << ";key_system=" << keys.key_system;
   str << "}";
 
   return SendKpi_(event_case, str);