#include <string>
#include <utility>
#include <vector>
+#include <IEME.h>
#include "core/decoderinputbuffer.h"
#include "core/kpi.h"
EsStateManager state_manager_;
SubmitDataType submit_data_type_ = SubmitDataType::kCleanData;
+ std::string key_system_ = "";
+ bool key_system_acquired_ = false;
drm::Property drm_property_;
std::uint32_t low_latency_mode_ = 0;
std::uint32_t video_frame_peek_mode_ = 0;
app_info_ = PlayerAppInfo();
src_queue_size_ = SrcQueueSize();
is_msg_task_stop_ = false;
+ key_system_acquired_ = false;
}
void EsPlayer::ResetContextForStop_() {
MakeGstBufferForEncryptedPacket_(gstbuffer, packet, drm_info);
return PacketSubmitStatus::kSuccess;
};
+ if (!key_system_acquired_) {
+ key_system_ = eme::IEME::getKeySystemName(drm_info.handle);
+ LOG_ERROR("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_();
+ logger.SendKpi(true, event_keys);
+ }
+ key_system_acquired_ = true;
+ }
return SubmitPacketCommon_(packet, submitpacket_op);
}
// LCOV_EXCL_STOP
event_info.is_clean = true;
} else {
event_info.is_clean = false;
+ event_info.key_system = key_system_;
}
for (const auto& track : track_) {
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);