diff --git a/drm/libmediadrm/DrmHal.cpp b/drm/libmediadrm/DrmHal.cpp index ba46ffde42..5888af0e58 100644 --- a/drm/libmediadrm/DrmHal.cpp +++ b/drm/libmediadrm/DrmHal.cpp @@ -1556,22 +1556,22 @@ void DrmHal::writeByteArray(Parcel &obj, hidl_vec const &vec) void DrmHal::reportFrameworkMetrics() const { - MediaAnalyticsItem item("mediadrm"); - item.generateSessionID(); - item.setPkgName(mMetrics.GetAppPackageName().c_str()); + std::unique_ptr item(MediaAnalyticsItem::create("mediadrm")); + item->generateSessionID(); + item->setPkgName(mMetrics.GetAppPackageName().c_str()); 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()); + item->setCString("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()); + item->setCString("description", description.c_str()); } std::string serializedMetrics; @@ -1582,9 +1582,9 @@ void DrmHal::reportFrameworkMetrics() const std::string b64EncodedMetrics = toBase64StringNoPad(serializedMetrics.data(), serializedMetrics.size()); if (!b64EncodedMetrics.empty()) { - item.setCString("serialized_metrics", b64EncodedMetrics.c_str()); + item->setCString("serialized_metrics", b64EncodedMetrics.c_str()); } - if (!item.selfrecord()) { + if (!item->selfrecord()) { ALOGE("Failed to self record framework metrics"); } } diff --git a/drm/libmediadrm/PluginMetricsReporting.cpp b/drm/libmediadrm/PluginMetricsReporting.cpp index 5cb48bf678..8cd6f969cc 100644 --- a/drm/libmediadrm/PluginMetricsReporting.cpp +++ b/drm/libmediadrm/PluginMetricsReporting.cpp @@ -34,17 +34,17 @@ constexpr char kSerializedMetricsField[] = "serialized_metrics"; status_t reportVendorMetrics(const std::string& metrics, const String8& name, const String8& appPackageName) { - MediaAnalyticsItem analyticsItem(name.c_str()); - analyticsItem.generateSessionID(); + std::unique_ptr analyticsItem(MediaAnalyticsItem::create(name.c_str())); + analyticsItem->generateSessionID(); std::string app_package_name(appPackageName.c_str(), appPackageName.size()); - analyticsItem.setPkgName(app_package_name); + analyticsItem->setPkgName(app_package_name); if (metrics.size() > 0) { - analyticsItem.setCString(kSerializedMetricsField, metrics.c_str()); + analyticsItem->setCString(kSerializedMetricsField, metrics.c_str()); } - if (!analyticsItem.selfrecord()) { - ALOGE("selfrecord() returned false. sessioId %" PRId64, analyticsItem.getSessionID()); + if (!analyticsItem->selfrecord()) { + ALOGE("selfrecord() returned false. sessioId %" PRId64, analyticsItem->getSessionID()); } return OK; diff --git a/media/libaudioclient/include/media/AudioRecord.h b/media/libaudioclient/include/media/AudioRecord.h index ebee124e10..1f718448af 100644 --- a/media/libaudioclient/include/media/AudioRecord.h +++ b/media/libaudioclient/include/media/AudioRecord.h @@ -719,7 +719,7 @@ private: private: class MediaMetrics { public: - MediaMetrics() : mAnalyticsItem(new MediaAnalyticsItem("audiorecord")), + MediaMetrics() : mAnalyticsItem(MediaAnalyticsItem::create("audiorecord")), mCreatedNs(systemTime(SYSTEM_TIME_REALTIME)), mStartedNs(0), mDurationNs(0), mCount(0), mLastError(NO_ERROR) { diff --git a/media/libaudioclient/include/media/AudioTrack.h b/media/libaudioclient/include/media/AudioTrack.h index 7fdf7cc7bb..cbb750f90d 100644 --- a/media/libaudioclient/include/media/AudioTrack.h +++ b/media/libaudioclient/include/media/AudioTrack.h @@ -1227,7 +1227,7 @@ private: private: class MediaMetrics { public: - MediaMetrics() : mAnalyticsItem(new MediaAnalyticsItem("audiotrack")) { + MediaMetrics() : mAnalyticsItem(MediaAnalyticsItem::create("audiotrack")) { } ~MediaMetrics() { // mAnalyticsItem alloc failure will be flagged in the constructor diff --git a/media/libmediametrics/include/MediaAnalyticsItem.h b/media/libmediametrics/include/MediaAnalyticsItem.h index 2f9e7c204f..4a36f6a0f1 100644 --- a/media/libmediametrics/include/MediaAnalyticsItem.h +++ b/media/libmediametrics/include/MediaAnalyticsItem.h @@ -82,16 +82,19 @@ class MediaAnalyticsItem { PROTO_LAST = PROTO_V1, }; + private: + // use the ::create() method instead + MediaAnalyticsItem(); + MediaAnalyticsItem(Key); + MediaAnalyticsItem(const MediaAnalyticsItem&); + MediaAnalyticsItem &operator=(const MediaAnalyticsItem&); public: - // so clients do not need to know size details static MediaAnalyticsItem* create(Key key); static MediaAnalyticsItem* create(); // access functions for the class - MediaAnalyticsItem(); - MediaAnalyticsItem(Key); ~MediaAnalyticsItem(); // SessionID ties multiple submissions for same key together diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index f2a303812a..37b13f0be6 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -202,7 +202,7 @@ void StagefrightRecorder::flushAndResetMetrics(bool reinitialize) { } mAnalyticsDirty = false; if (reinitialize) { - mAnalyticsItem = new MediaAnalyticsItem(kKeyRecorder); + mAnalyticsItem = MediaAnalyticsItem::create(kKeyRecorder); } } diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp index a820445651..1b396c08bf 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp @@ -97,7 +97,7 @@ NuPlayerDriver::NuPlayerDriver(pid_t pid) mMediaClock->init(); // set up an analytics record - mAnalyticsItem = new MediaAnalyticsItem(kKeyPlayer); + mAnalyticsItem = MediaAnalyticsItem::create(kKeyPlayer); mLooper->start( false, /* runOnCallingThread */ @@ -635,7 +635,7 @@ void NuPlayerDriver::logMetrics(const char *where) { // re-init in case we prepare() and start() again. delete mAnalyticsItem ; - mAnalyticsItem = new MediaAnalyticsItem("nuplayer"); + mAnalyticsItem = MediaAnalyticsItem::create("nuplayer"); if (mAnalyticsItem) { mAnalyticsItem->setUid(mClientUid); } diff --git a/media/libnblog/ReportPerformance.cpp b/media/libnblog/ReportPerformance.cpp index f632e40d25..b050b8336e 100644 --- a/media/libnblog/ReportPerformance.cpp +++ b/media/libnblog/ReportPerformance.cpp @@ -168,7 +168,7 @@ bool sendToMediaMetrics(const PerformanceData& data) return false; } - std::unique_ptr item(new MediaAnalyticsItem("audiothread")); + std::unique_ptr item(MediaAnalyticsItem::create("audiothread")); const Histogram &workHist = data.workHist; if (workHist.totalCount() > 0) { diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index c7da7c7c0b..9c58e05ace 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -550,7 +550,7 @@ MediaCodec::~MediaCodec() { void MediaCodec::initAnalyticsItem() { if (mAnalyticsItem == NULL) { - mAnalyticsItem = new MediaAnalyticsItem(kCodecKeyName); + mAnalyticsItem = MediaAnalyticsItem::create(kCodecKeyName); } mLatencyHist.setup(kLatencyHistBuckets, kLatencyHistWidth, kLatencyHistFloor); diff --git a/media/libstagefright/RemoteMediaExtractor.cpp b/media/libstagefright/RemoteMediaExtractor.cpp index 9d2c42b6cd..b0ce688e74 100644 --- a/media/libstagefright/RemoteMediaExtractor.cpp +++ b/media/libstagefright/RemoteMediaExtractor.cpp @@ -49,7 +49,7 @@ RemoteMediaExtractor::RemoteMediaExtractor( mAnalyticsItem = nullptr; if (MEDIA_LOG) { - mAnalyticsItem = new MediaAnalyticsItem(kKeyExtractor); + mAnalyticsItem = MediaAnalyticsItem::create(kKeyExtractor); // track the container format (mpeg, aac, wvm, etc) size_t ntracks = extractor->countTracks(); diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp index 49c541cf34..45fb174c81 100644 --- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp @@ -525,7 +525,7 @@ status_t AudioPolicyService::startInput(audio_port_handle_t portId) static constexpr char kAudioPolicyActiveDevice[] = "android.media.audiopolicy.active.device"; - MediaAnalyticsItem *item = new MediaAnalyticsItem(kAudioPolicy); + MediaAnalyticsItem *item = MediaAnalyticsItem::create(kAudioPolicy); if (item != NULL) { item->setInt32(kAudioPolicyStatus, status);