From e77e9aea14db43fae581c88b48ded82dec8eebc8 Mon Sep 17 00:00:00 2001 From: gcw_ClGB9ada Date: Tue, 9 Sep 2025 20:24:02 +0800 Subject: [PATCH 1/7] =?UTF-8?q?avplayer=E5=A2=9E=E5=8A=A0=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E5=AE=9E=E4=BE=8B=E6=95=B0=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gcw_ClGB9ada --- .../histreamer/player/hiplayer_impl.cpp | 2 - .../services/player/server/player_server.cpp | 12 +-- services/utils/include/media_dfx.h | 3 + services/utils/media_dfx.cpp | 85 +++++++++++++++++-- 4 files changed, 89 insertions(+), 13 deletions(-) diff --git a/services/engine/histreamer/player/hiplayer_impl.cpp b/services/engine/histreamer/player/hiplayer_impl.cpp index fb3ec0817..6f6b7628e 100644 --- a/services/engine/histreamer/player/hiplayer_impl.cpp +++ b/services/engine/histreamer/player/hiplayer_impl.cpp @@ -1130,8 +1130,6 @@ int32_t HiPlayerImpl::Stop() AppendPlayerMediaInfo(); } OnStateChanged(PlayerStateId::STOPPED); - ReportMediaInfo(instanceId_); - GetMediaInfoContainInstanceNum(); return TransStatus(ret); } diff --git a/services/services/player/server/player_server.cpp b/services/services/player/server/player_server.cpp index 3627d8e7e..23521ee3a 100644 --- a/services/services/player/server/player_server.cpp +++ b/services/services/player/server/player_server.cpp @@ -74,7 +74,7 @@ std::shared_ptr PlayerServer::Create() PlayerServer::PlayerServer() { MEDIA_LOGD("0x%{public}06" PRIXPTR " Instances create", FAKE_POINTER(this)); - instanceId_ = HiviewDFX::HiTraceChain::GetId().GetChainId(); + instanceId_ = FAKE_POINTER(this); } PlayerServer::~PlayerServer() @@ -242,7 +242,7 @@ int32_t PlayerServer::InitPlayEngine(const std::string &url) playerEngine_->SetInstancdId(instanceId_); playerEngine_->SetApiVersion(apiVersion_.load()); playerEngine_->SetIsCalledBySystemApp(isCalledBySystemApp_); - MEDIA_LOGI("Setted InstanceId %{public}" PRIu64, instanceId_); + MEDIA_LOGI("Setted InstanceId"); if (dataSrc_ != nullptr) { ret = playerEngine_->SetSource(dataSrc_); } else if (mediaSource_ != nullptr) { @@ -907,6 +907,8 @@ int32_t PlayerServer::Release() if (lastOpStatus_ != PLAYER_IDLE) { (void)OnReset(); } + ReportMediaInfo(instanceId_); + GetMediaInfoContainInstanceNum(); #ifdef SUPPORT_VIDEO if (surface_ != nullptr) { surface_ = nullptr; @@ -1025,8 +1027,7 @@ int32_t PlayerServer::Seek(int32_t mSeconds, PlayerSeekMode mode) int32_t PlayerServer::HandleSeek(int32_t mSeconds, PlayerSeekMode mode) { - MEDIA_LOGI("KPI-TRACE: PlayerServer HandleSeek in, mSeconds: %{public}d, mSeconds: %{public}d, " - "instanceId: %{public}" PRIu64 "", mSeconds, mode, instanceId_); + MEDIA_LOGI("KPI-TRACE: PlayerServer HandleSeek in, mSeconds: %{public}d, mSeconds: %{public}d", mSeconds, mode); ExitSeekContinous(false); int32_t ret = playerEngine_->Seek(mSeconds, mode); CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, MSERR_INVALID_OPERATION, "Engine Seek Failed!"); @@ -2264,8 +2265,7 @@ int32_t PlayerServer::SeekContinous(int32_t mSeconds) int32_t PlayerServer::HandleSeekContinous(int32_t mSeconds, int64_t batchNo) { - MEDIA_LOGI("KPI-TRACE: PlayerServer HandleSeek in, mSeconds: %{public}d, " - "instanceId: %{public}" PRIu64 "", mSeconds, instanceId_); + MEDIA_LOGI("KPI-TRACE: PlayerServer HandleSeek in, mSeconds: %{public}d", mSeconds); int32_t ret = playerEngine_->SeekContinous(mSeconds, batchNo); CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, MSERR_INVALID_OPERATION, "Engine Seek Failed!"); MEDIA_LOGI("PlayerServer HandleSeek end"); diff --git a/services/utils/include/media_dfx.h b/services/utils/include/media_dfx.h index d84988bb0..ab0f2c237 100644 --- a/services/utils/include/media_dfx.h +++ b/services/utils/include/media_dfx.h @@ -95,6 +95,9 @@ __attribute__((visibility("default"))) int32_t CreateMediaInfo(CallType callType __attribute__((visibility("default"))) int32_t AppendMediaInfo(const std::shared_ptr& meta, uint64_t instanceId); __attribute__((visibility("default"))) int32_t ReportMediaInfo(uint64_t instanceId); __attribute__((visibility("default"))) uint64_t GetMediaInfoContainInstanceNum(); +__attribute__((visibility("default"))) int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid); +__attribute__((visibility("default"))) void ResetMaxInsNumberMap(CallType callType, std::map& infoMap); +__attribute__((visibility("default"))) void GetMaxInstanceNumber(CallType callType, int32_t uid, uint64_t instanceId); class __attribute__((visibility("default"))) MediaTrace : public NoCopyable { public: diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index 59c51e214..5d0c85999 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -38,10 +38,12 @@ namespace { std::mutex collectMut_; std::mutex reportMut_; + std::mutex maxReportMut_; std::map>>>> mediaInfoMap_; std::map>>>> reportMediaInfoMap_; + std::map> mediaMaxInstanceNumberMap_; std::map> idMap_; std::chrono::system_clock::time_point currentTime_ = std::chrono::system_clock::now(); bool g_reachMaxMapSize {false}; @@ -53,10 +55,10 @@ namespace { std::pair> metaAppIdPair; { std::lock_guard lock(collectMut_); - MEDIA_LOG_I("CollectReportMediaInfo, instanceId is %{public}" PRIu64, instanceId); + MEDIA_LOG_I("CollectReportMediaInfo in."); auto idMapIt = idMap_.find(instanceId); if (idMapIt == idMap_.end()) { - MEDIA_LOG_W("Not found instanceId in idMap, instanceId is : %{public}" PRIu64, instanceId); + MEDIA_LOG_W("Not found instanceId in idMap"); return false; } ct = idMapIt->second.first; @@ -111,6 +113,10 @@ namespace { auto currentTime = std::chrono::system_clock::now(); currentTime_ = currentTime; reportMediaInfoMap_.clear(); + std::lock_guard lock(maxReportMut_); + for (auto &it : mediaMaxInstanceNumberMap_) { + ResetMaxInsNumberMap(it.first, it.second); + } return OHOS::Media::MSERR_OK; } } @@ -221,6 +227,10 @@ void MediaEvent::CommonStatisicsEventWrite(CallType callType, OHOS::HiviewDFX::H } eventInfoJson["appName"] = GetClientBundleName(kv.first); eventInfoJson["mediaEvents"] = mediaEvents; + { + std::lock_guard lock(maxReportMut_); + eventInfoJson["maxInstanceNum"] = mediaMaxInstanceNumberMap_[callType][kv.first]; + } jsonArray.push_back(eventInfoJson); infoArr.push_back(jsonArray.dump()); } @@ -358,7 +368,7 @@ void FaultScreenCaptureEventWrite(const std::string& appName, uint64_t instanceI int32_t CreateMediaInfo(CallType callType, int32_t uid, uint64_t instanceId) { - MEDIA_LOG_I("CreateMediaInfo uid is: %{public}" PRId32 " instanceId is: %{public}" PRIu64, uid, instanceId); + MEDIA_LOG_I("CreateMediaInfo uid is: %{public}" PRId32, uid); std::lock_guard lock(collectMut_); auto instanceIdMap = idMap_.find(instanceId); if (instanceIdMap != idMap_.end()) { @@ -385,9 +395,33 @@ int32_t CreateMediaInfo(CallType callType, int32_t uid, uint64_t instanceId) mediaInfoMap_[callType][uid].push_back(metaAppIdPair); MEDIA_LOG_I("CreateMediaInfo: Successfully created new list for callType and uid "); } + GetMaxInstanceNumber(callType, uid, InstanceId); return MSERR_OK; } +void GetMaxInstanceNumber(CallType callType, int32_t uid, uint64_t instanceId) +{ + std::lock_guard lock(maxReportMut_); + int32_t curInsNumber = GetMediaInfoInstanceNumber(callType, uid); + auto ctUidToMaxInsNum = mediaMaxInstanceNumberMap_.find(callType); + if (ctUidToMaxInsNum != mediaMaxInstanceNumberMap_.end()) { + auto it = ctUidToMaxInsNum->second.find(uid); + if (it != ctUidToMaxInsNum->second.end()) { + int32_t curMaxInsNumber = it->second; + if (curMaxInsNumber < curInsNumber) { + it->second = curInsNumber; + } + MEDIA_LOG_I("CreateMediaInfo: Successfully update maxInsNumber for uid "); + } else { + ctUidToMaxInsNum->second[uid] = curInsNumber; + MEDIA_LOG_I("CreateMediaInfo: Successfully created new maxInsNumber for uid."); + } + } else { + mediaInfoMap_[callType][uid] = curInsNumber; + MEDIA_LOG_I("CreateMediaInfo: Successfully created new maxInsNumber for callType and uid "); + } +} + int32_t AppendMediaInfo(const std::shared_ptr& meta, uint64_t instanceId) { MEDIA_LOG_I("AppendMediaInfo."); @@ -398,7 +432,7 @@ int32_t AppendMediaInfo(const std::shared_ptr& meta, uint64_t instanceId) std::lock_guard lock(collectMut_); auto idMapIt = idMap_.find(instanceId); if (idMapIt == idMap_.end()) { - MEDIA_LOG_I("Not found instanceId when append meta, instanceId is : %{public}" PRIu64, instanceId); + MEDIA_LOG_I("Not found instanceId when append meta"); return MSERR_INVALID_VAL; } CallType ct = idMapIt->second.first; @@ -430,7 +464,7 @@ int32_t AppendMediaInfo(const std::shared_ptr& meta, uint64_t instanceId) int32_t ReportMediaInfo(uint64_t instanceId) { MEDIA_LOG_I("Report."); - MEDIA_LOG_I("Delete media info instanceId is: %{public}" PRIu64, instanceId); + MEDIA_LOG_I("Delete media info instanceId"); if (!CollectReportMediaInfo(instanceId)) { MEDIA_LOG_I("Collect media info fail."); return MSERR_INVALID_OPERATION; @@ -451,6 +485,47 @@ int32_t ReportMediaInfo(uint64_t instanceId) return MSERR_OK; } +void ResetMaxInsNumberMap(CallType callType, std::map& infoMap) +{ + MEDIA_LOG_I("ResetMaxInsNumberMap start."); + auto ctUidToMediaInfo = mediaInfoMap_.find(callType); + if (ctUidToMediaInfo == mediaInfoMap_.end()) { + infoMap.clear(); + return; + } + std:vector keysToRemove; + for (auto &info : infoMap) { + int32_t uid = info.first; + auto& maxNum = info.second; + auto it = ctUidToMediaInfo->second.find(uid); + if (it != ctUidToMediaInfo->second.end()) { + maxNum = it->second.size(); + } else { + maxNum = 0; + keysToRemove.push_back(uid); + } + } + for (int32_t uid : keysToRemove) { + infoMap.erase(uid); + } + MEDIA_LOG_I("ResetMaxInsNumberMap end."); +} + +int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid) +{ + int32_t mediaInsNum = 0; + auto it1 = mediaInfoMap_.find(callType); + if(it1 = mediaInfoMap_.end()) { + const auto& uidMap = it1->second' + auto it2 = uidMap.find(uid); + if (it2 = uidMap.end()) { + mediaInsNum = it2->second.size(); + } + } + MEDIA_LOG_I("MediaInfo now instances Number: %{public}" PRId32, mediaInsNum); + return mediaInsNum; +} + uint64_t GetMediaInfoContainInstanceNum() { uint64_t mediaInsNum = 0; -- Gitee From f88994154e98fe9606d6de6757f59856e19c6ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Tue, 9 Sep 2025 13:08:27 +0000 Subject: [PATCH 2/7] update services/utils/media_dfx.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/media_dfx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index 5d0c85999..40d62fd87 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -395,7 +395,7 @@ int32_t CreateMediaInfo(CallType callType, int32_t uid, uint64_t instanceId) mediaInfoMap_[callType][uid].push_back(metaAppIdPair); MEDIA_LOG_I("CreateMediaInfo: Successfully created new list for callType and uid "); } - GetMaxInstanceNumber(callType, uid, InstanceId); + GetMaxInstanceNumber(callType, uid, instanceId); return MSERR_OK; } @@ -515,7 +515,7 @@ int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid) { int32_t mediaInsNum = 0; auto it1 = mediaInfoMap_.find(callType); - if(it1 = mediaInfoMap_.end()) { + if (it1 = mediaInfoMap_.end()) { const auto& uidMap = it1->second' auto it2 = uidMap.find(uid); if (it2 = uidMap.end()) { -- Gitee From 018ffda8840b39a0c0e31406849e591bb396fc7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Tue, 9 Sep 2025 13:09:24 +0000 Subject: [PATCH 3/7] update services/utils/include/media_dfx.h. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/include/media_dfx.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/utils/include/media_dfx.h b/services/utils/include/media_dfx.h index ab0f2c237..9996a4844 100644 --- a/services/utils/include/media_dfx.h +++ b/services/utils/include/media_dfx.h @@ -96,7 +96,8 @@ __attribute__((visibility("default"))) int32_t AppendMediaInfo(const std::shared __attribute__((visibility("default"))) int32_t ReportMediaInfo(uint64_t instanceId); __attribute__((visibility("default"))) uint64_t GetMediaInfoContainInstanceNum(); __attribute__((visibility("default"))) int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid); -__attribute__((visibility("default"))) void ResetMaxInsNumberMap(CallType callType, std::map& infoMap); +__attribute__((visibility("default"))) void ResetMaxInsNumberMap(CallType callType, + std::map& infoMap); __attribute__((visibility("default"))) void GetMaxInstanceNumber(CallType callType, int32_t uid, uint64_t instanceId); class __attribute__((visibility("default"))) MediaTrace : public NoCopyable { -- Gitee From 63df205d180062634999437a87683cf90bff92a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Tue, 9 Sep 2025 13:29:54 +0000 Subject: [PATCH 4/7] update services/utils/media_dfx.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/media_dfx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index 40d62fd87..b4069441c 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -402,7 +402,7 @@ int32_t CreateMediaInfo(CallType callType, int32_t uid, uint64_t instanceId) void GetMaxInstanceNumber(CallType callType, int32_t uid, uint64_t instanceId) { std::lock_guard lock(maxReportMut_); - int32_t curInsNumber = GetMediaInfoInstanceNumber(callType, uid); + int32_t curInsNumber = GetMediaInfoInstanceNum(callType, uid); auto ctUidToMaxInsNum = mediaMaxInstanceNumberMap_.find(callType); if (ctUidToMaxInsNum != mediaMaxInstanceNumberMap_.end()) { auto it = ctUidToMaxInsNum->second.find(uid); @@ -516,7 +516,7 @@ int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid) int32_t mediaInsNum = 0; auto it1 = mediaInfoMap_.find(callType); if (it1 = mediaInfoMap_.end()) { - const auto& uidMap = it1->second' + const auto& uidMap = it1->second; auto it2 = uidMap.find(uid); if (it2 = uidMap.end()) { mediaInsNum = it2->second.size(); -- Gitee From e7a016e4e0720edad1feabd82b717a13d7248784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Tue, 9 Sep 2025 13:44:54 +0000 Subject: [PATCH 5/7] update services/utils/media_dfx.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/media_dfx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index b4069441c..396a08e75 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -417,7 +417,7 @@ void GetMaxInstanceNumber(CallType callType, int32_t uid, uint64_t instanceId) MEDIA_LOG_I("CreateMediaInfo: Successfully created new maxInsNumber for uid."); } } else { - mediaInfoMap_[callType][uid] = curInsNumber; + mediaMaxInstanceNumberMap_[callType][uid] = curInsNumber; MEDIA_LOG_I("CreateMediaInfo: Successfully created new maxInsNumber for callType and uid "); } } -- Gitee From e44e3648e10e8dad52bde958c70557729710d3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Tue, 9 Sep 2025 14:03:02 +0000 Subject: [PATCH 6/7] update services/utils/media_dfx.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/media_dfx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index 396a08e75..9993017df 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -493,7 +493,7 @@ void ResetMaxInsNumberMap(CallType callType, std::map& infoMap infoMap.clear(); return; } - std:vector keysToRemove; + std::vector keysToRemove; for (auto &info : infoMap) { int32_t uid = info.first; auto& maxNum = info.second; @@ -518,7 +518,7 @@ int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid) if (it1 = mediaInfoMap_.end()) { const auto& uidMap = it1->second; auto it2 = uidMap.find(uid); - if (it2 = uidMap.end()) { + if (it2 != uidMap.end()) { mediaInsNum = it2->second.size(); } } -- Gitee From 5d36a0bb40a605b157fee61ef1dc944abca01088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=A1=E4=B8=9C=E5=B3=B0?= Date: Wed, 10 Sep 2025 01:08:38 +0000 Subject: [PATCH 7/7] update services/utils/media_dfx.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 满东峰 --- services/utils/media_dfx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/utils/media_dfx.cpp b/services/utils/media_dfx.cpp index 9993017df..f43df5a4f 100644 --- a/services/utils/media_dfx.cpp +++ b/services/utils/media_dfx.cpp @@ -515,7 +515,7 @@ int32_t GetMediaInfoInstanceNum(CallType callType, int32_t uid) { int32_t mediaInsNum = 0; auto it1 = mediaInfoMap_.find(callType); - if (it1 = mediaInfoMap_.end()) { + if (it1 == mediaInfoMap_.end()) { const auto& uidMap = it1->second; auto it2 = uidMap.find(uid); if (it2 != uidMap.end()) { -- Gitee