Loading drm/libmediadrm/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ cc_library_shared { "liblog", "libmedia", "libmediadrmmetrics_lite", "libmediametrics", "libmediametrics#1", "libmediautils", "libresourcemanagerservice", "libstagefright_foundation", Loading drm/libmediadrm/DrmHal.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <android/media/BnResourceManagerClient.h> #include <hidl/ServiceManagement.h> #include <media/EventMetric.h> #include <media/MediaMetrics.h> #include <media/PluginMetricsReporting.h> #include <media/drm/DrmAPI.h> #include <media/stagefright/foundation/ADebug.h> Loading Loading @@ -453,6 +454,7 @@ sp<IDrmPlugin> DrmHal::makeDrmPlugin(const sp<IDrmFactory>& factory, const uint8_t uuid[16], const String8& appPackageName) { mAppPackageName = appPackageName; mMetrics.SetAppPackageName(appPackageName); mMetrics.SetAppUid(IPCThreadState::self()->getCallingUid()); sp<IDrmPlugin> plugin; Return<void> hResult = factory->createPlugin(uuid, appPackageName.string(), Loading Loading @@ -1574,21 +1576,21 @@ void DrmHal::binderDied(const wp<IBinder> &the_late_who __unused) void DrmHal::reportFrameworkMetrics() const { std::unique_ptr<MediaAnalyticsItem> item(MediaAnalyticsItem::create("mediadrm")); item->setPkgName(mMetrics.GetAppPackageName().c_str()); mediametrics_handle_t item(mediametrics_create("mediadrm")); mediametrics_setUid(item, mMetrics.GetAppUid()); String8 vendor; String8 description; status_t result = getPropertyStringInternal(String8("vendor"), vendor); if (result != OK) { ALOGE("Failed to get vendor from drm plugin: %d", result); } else { item->setCString("vendor", vendor.c_str()); mediametrics_setCString(item, "vendor", vendor.c_str()); } result = getPropertyStringInternal(String8("description"), description); if (result != OK) { ALOGE("Failed to get description from drm plugin: %d", result); } else { item->setCString("description", description.c_str()); mediametrics_setCString(item, "description", description.c_str()); } std::string serializedMetrics; Loading @@ -1599,11 +1601,12 @@ void DrmHal::reportFrameworkMetrics() const std::string b64EncodedMetrics = toBase64StringNoPad(serializedMetrics.data(), serializedMetrics.size()); if (!b64EncodedMetrics.empty()) { item->setCString("serialized_metrics", b64EncodedMetrics.c_str()); mediametrics_setCString(item, "serialized_metrics", b64EncodedMetrics.c_str()); } if (!item->selfrecord()) { if (!mediametrics_selfRecord(item)) { ALOGE("Failed to self record framework metrics"); } mediametrics_delete(item); } void DrmHal::reportPluginMetrics() const Loading @@ -1617,7 +1620,7 @@ void DrmHal::reportPluginMetrics() const std::string metricsString = toBase64StringNoPad(metricsVector.array(), metricsVector.size()); status_t res = android::reportDrmPluginMetrics(metricsString, vendor, description, mAppPackageName); description, mMetrics.GetAppUid()); if (res != OK) { ALOGE("Metrics were retrieved but could not be reported: %d", res); } Loading drm/libmediadrm/PluginMetricsReporting.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ #include <inttypes.h> #include <media/MediaAnalyticsItem.h> #include <media/MediaMetrics.h> #include <utils/Log.h> Loading @@ -33,18 +33,18 @@ constexpr char kSerializedMetricsField[] = "serialized_metrics"; status_t reportVendorMetrics(const std::string& metrics, const String8& name, const String8& appPackageName) { std::unique_ptr<MediaAnalyticsItem> analyticsItem(MediaAnalyticsItem::create(name.c_str())); std::string app_package_name(appPackageName.c_str(), appPackageName.size()); analyticsItem->setPkgName(app_package_name); uid_t appUid) { mediametrics_handle_t analyticsItem(mediametrics_create(name.c_str())); mediametrics_setUid(analyticsItem, appUid); if (metrics.size() > 0) { analyticsItem->setCString(kSerializedMetricsField, metrics.c_str()); mediametrics_setCString(analyticsItem, kSerializedMetricsField, metrics.c_str()); } if (!analyticsItem->selfrecord()) { if (!mediametrics_selfRecord(analyticsItem)) { ALOGE("%s: selfrecord() returned false", __func__); } mediametrics_delete(analyticsItem); return OK; } Loading @@ -67,13 +67,13 @@ String8 sanitize(const String8& input) { status_t reportDrmPluginMetrics(const std::string& b64EncodedMetrics, const String8& vendor, const String8& description, const String8& appPackageName) { uid_t appUid) { String8 name = String8::format("drm.vendor.%s.%s", sanitize(vendor).c_str(), sanitize(description).c_str()); return reportVendorMetrics(b64EncodedMetrics, name, appPackageName); return reportVendorMetrics(b64EncodedMetrics, name, appUid); } } // namespace android drm/libmediadrm/include/mediadrm/DrmHal.h +0 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <android/hardware/drm/1.2/IDrmPlugin.h> #include <android/hardware/drm/1.2/IDrmPluginListener.h> #include <media/MediaAnalyticsItem.h> #include <mediadrm/DrmMetrics.h> #include <mediadrm/DrmSessionManager.h> #include <mediadrm/IDrm.h> Loading drm/libmediadrm/include/mediadrm/DrmMetrics.h +5 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/PersistableBundle.h> #include <media/CounterMetric.h> #include <media/EventMetric.h> #include <sys/types.h> namespace android { Loading Loading @@ -71,6 +72,9 @@ class MediaDrmMetrics { void SetAppPackageName(const String8& appPackageName) { mAppPackageName = appPackageName; } const String8& GetAppPackageName() { return mAppPackageName; } void SetAppUid(uid_t appUid) { mAppUid = appUid; } uid_t GetAppUid() const { return mAppUid; } // Export the metrics to a PersistableBundle. void Export(os::PersistableBundle* metricsBundle); Loading Loading @@ -131,6 +135,7 @@ class MediaDrmMetrics { std::map<std::string, std::pair<int64_t, int64_t>> mSessionLifespans; String8 mAppPackageName; uid_t mAppUid{~0u}; }; } // namespace android Loading Loading
drm/libmediadrm/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ cc_library_shared { "liblog", "libmedia", "libmediadrmmetrics_lite", "libmediametrics", "libmediametrics#1", "libmediautils", "libresourcemanagerservice", "libstagefright_foundation", Loading
drm/libmediadrm/DrmHal.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <android/media/BnResourceManagerClient.h> #include <hidl/ServiceManagement.h> #include <media/EventMetric.h> #include <media/MediaMetrics.h> #include <media/PluginMetricsReporting.h> #include <media/drm/DrmAPI.h> #include <media/stagefright/foundation/ADebug.h> Loading Loading @@ -453,6 +454,7 @@ sp<IDrmPlugin> DrmHal::makeDrmPlugin(const sp<IDrmFactory>& factory, const uint8_t uuid[16], const String8& appPackageName) { mAppPackageName = appPackageName; mMetrics.SetAppPackageName(appPackageName); mMetrics.SetAppUid(IPCThreadState::self()->getCallingUid()); sp<IDrmPlugin> plugin; Return<void> hResult = factory->createPlugin(uuid, appPackageName.string(), Loading Loading @@ -1574,21 +1576,21 @@ void DrmHal::binderDied(const wp<IBinder> &the_late_who __unused) void DrmHal::reportFrameworkMetrics() const { std::unique_ptr<MediaAnalyticsItem> item(MediaAnalyticsItem::create("mediadrm")); item->setPkgName(mMetrics.GetAppPackageName().c_str()); mediametrics_handle_t item(mediametrics_create("mediadrm")); mediametrics_setUid(item, mMetrics.GetAppUid()); String8 vendor; String8 description; status_t result = getPropertyStringInternal(String8("vendor"), vendor); if (result != OK) { ALOGE("Failed to get vendor from drm plugin: %d", result); } else { item->setCString("vendor", vendor.c_str()); mediametrics_setCString(item, "vendor", vendor.c_str()); } result = getPropertyStringInternal(String8("description"), description); if (result != OK) { ALOGE("Failed to get description from drm plugin: %d", result); } else { item->setCString("description", description.c_str()); mediametrics_setCString(item, "description", description.c_str()); } std::string serializedMetrics; Loading @@ -1599,11 +1601,12 @@ void DrmHal::reportFrameworkMetrics() const std::string b64EncodedMetrics = toBase64StringNoPad(serializedMetrics.data(), serializedMetrics.size()); if (!b64EncodedMetrics.empty()) { item->setCString("serialized_metrics", b64EncodedMetrics.c_str()); mediametrics_setCString(item, "serialized_metrics", b64EncodedMetrics.c_str()); } if (!item->selfrecord()) { if (!mediametrics_selfRecord(item)) { ALOGE("Failed to self record framework metrics"); } mediametrics_delete(item); } void DrmHal::reportPluginMetrics() const Loading @@ -1617,7 +1620,7 @@ void DrmHal::reportPluginMetrics() const std::string metricsString = toBase64StringNoPad(metricsVector.array(), metricsVector.size()); status_t res = android::reportDrmPluginMetrics(metricsString, vendor, description, mAppPackageName); description, mMetrics.GetAppUid()); if (res != OK) { ALOGE("Metrics were retrieved but could not be reported: %d", res); } Loading
drm/libmediadrm/PluginMetricsReporting.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ #include <inttypes.h> #include <media/MediaAnalyticsItem.h> #include <media/MediaMetrics.h> #include <utils/Log.h> Loading @@ -33,18 +33,18 @@ constexpr char kSerializedMetricsField[] = "serialized_metrics"; status_t reportVendorMetrics(const std::string& metrics, const String8& name, const String8& appPackageName) { std::unique_ptr<MediaAnalyticsItem> analyticsItem(MediaAnalyticsItem::create(name.c_str())); std::string app_package_name(appPackageName.c_str(), appPackageName.size()); analyticsItem->setPkgName(app_package_name); uid_t appUid) { mediametrics_handle_t analyticsItem(mediametrics_create(name.c_str())); mediametrics_setUid(analyticsItem, appUid); if (metrics.size() > 0) { analyticsItem->setCString(kSerializedMetricsField, metrics.c_str()); mediametrics_setCString(analyticsItem, kSerializedMetricsField, metrics.c_str()); } if (!analyticsItem->selfrecord()) { if (!mediametrics_selfRecord(analyticsItem)) { ALOGE("%s: selfrecord() returned false", __func__); } mediametrics_delete(analyticsItem); return OK; } Loading @@ -67,13 +67,13 @@ String8 sanitize(const String8& input) { status_t reportDrmPluginMetrics(const std::string& b64EncodedMetrics, const String8& vendor, const String8& description, const String8& appPackageName) { uid_t appUid) { String8 name = String8::format("drm.vendor.%s.%s", sanitize(vendor).c_str(), sanitize(description).c_str()); return reportVendorMetrics(b64EncodedMetrics, name, appPackageName); return reportVendorMetrics(b64EncodedMetrics, name, appUid); } } // namespace android
drm/libmediadrm/include/mediadrm/DrmHal.h +0 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <android/hardware/drm/1.2/IDrmPlugin.h> #include <android/hardware/drm/1.2/IDrmPluginListener.h> #include <media/MediaAnalyticsItem.h> #include <mediadrm/DrmMetrics.h> #include <mediadrm/DrmSessionManager.h> #include <mediadrm/IDrm.h> Loading
drm/libmediadrm/include/mediadrm/DrmMetrics.h +5 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/PersistableBundle.h> #include <media/CounterMetric.h> #include <media/EventMetric.h> #include <sys/types.h> namespace android { Loading Loading @@ -71,6 +72,9 @@ class MediaDrmMetrics { void SetAppPackageName(const String8& appPackageName) { mAppPackageName = appPackageName; } const String8& GetAppPackageName() { return mAppPackageName; } void SetAppUid(uid_t appUid) { mAppUid = appUid; } uid_t GetAppUid() const { return mAppUid; } // Export the metrics to a PersistableBundle. void Export(os::PersistableBundle* metricsBundle); Loading Loading @@ -131,6 +135,7 @@ class MediaDrmMetrics { std::map<std::string, std::pair<int64_t, int64_t>> mSessionLifespans; String8 mAppPackageName; uid_t mAppUid{~0u}; }; } // namespace android Loading