diff --git a/media/libaaudio/src/legacy/AudioStreamLegacy.h b/media/libaaudio/src/legacy/AudioStreamLegacy.h index cd5eb5af89..9c24b2be7f 100644 --- a/media/libaaudio/src/legacy/AudioStreamLegacy.h +++ b/media/libaaudio/src/legacy/AudioStreamLegacy.h @@ -129,6 +129,7 @@ protected: } // This is used for exact matching by MediaMetrics. So do not change it. + // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_AAUDIO static constexpr char kCallerName[] = "aaudio"; MonotonicCounter mFramesWritten; diff --git a/media/libaudioclient/AudioRecord.cpp b/media/libaudioclient/AudioRecord.cpp index 1fb03bccc6..0bbceef2a1 100644 --- a/media/libaudioclient/AudioRecord.cpp +++ b/media/libaudioclient/AudioRecord.cpp @@ -172,7 +172,7 @@ AudioRecord::~AudioRecord() .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_DTOR) .set(AMEDIAMETRICS_PROP_CALLERNAME, mCallerName.empty() - ? AMEDIAMETRICS_PROP_VALUE_UNKNOWN + ? AMEDIAMETRICS_PROP_CALLERNAME_VALUE_UNKNOWN : mCallerName.c_str()) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)mStatus) .record(); @@ -400,6 +400,10 @@ status_t AudioRecord::start(AudioSystem::sync_event_t event, audio_session_t tri status_t status = NO_ERROR; mediametrics::Defer defer([&] { mediametrics::LogItem(mMetricsId) + .set(AMEDIAMETRICS_PROP_CALLERNAME, + mCallerName.empty() + ? AMEDIAMETRICS_PROP_CALLERNAME_VALUE_UNKNOWN + : mCallerName.c_str()) .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_START) .set(AMEDIAMETRICS_PROP_DURATIONNS, (int64_t)(systemTime() - beginNs)) .set(AMEDIAMETRICS_PROP_STATE, stateToString(mActive)) diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp index a5bb908cfd..ca80dc4faf 100644 --- a/media/libaudioclient/AudioTrack.cpp +++ b/media/libaudioclient/AudioTrack.cpp @@ -303,7 +303,7 @@ AudioTrack::~AudioTrack() .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_DTOR) .set(AMEDIAMETRICS_PROP_CALLERNAME, mCallerName.empty() - ? AMEDIAMETRICS_PROP_VALUE_UNKNOWN + ? AMEDIAMETRICS_PROP_CALLERNAME_VALUE_UNKNOWN : mCallerName.c_str()) .set(AMEDIAMETRICS_PROP_STATE, stateToString(mState)) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)mStatus) @@ -645,6 +645,10 @@ status_t AudioTrack::start() status_t status = NO_ERROR; // logged: make sure to set this before returning. mediametrics::Defer defer([&] { mediametrics::LogItem(mMetricsId) + .set(AMEDIAMETRICS_PROP_CALLERNAME, + mCallerName.empty() + ? AMEDIAMETRICS_PROP_CALLERNAME_VALUE_UNKNOWN + : mCallerName.c_str()) .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_START) .set(AMEDIAMETRICS_PROP_DURATIONNS, (int64_t)(systemTime() - beginNs)) .set(AMEDIAMETRICS_PROP_STATE, stateToString(mState)) @@ -879,7 +883,7 @@ void AudioTrack::pause() { const int64_t beginNs = systemTime(); AutoMutex lock(mLock); - mediametrics::Defer([&]() { + mediametrics::Defer defer([&]() { mediametrics::LogItem(mMetricsId) .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_PAUSE) .set(AMEDIAMETRICS_PROP_DURATIONNS, (int64_t)(systemTime() - beginNs)) @@ -2433,7 +2437,7 @@ status_t AudioTrack::restoreTrack_l(const char *from) { status_t result = NO_ERROR; // logged: make sure to set this before returning. const int64_t beginNs = systemTime(); - mediametrics::Defer([&] { + mediametrics::Defer defer([&] { mediametrics::LogItem(mMetricsId) .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_RESTORE) .set(AMEDIAMETRICS_PROP_DURATIONNS, (int64_t)(systemTime() - beginNs)) diff --git a/media/libaudioclient/ToneGenerator.cpp b/media/libaudioclient/ToneGenerator.cpp index 536b00dddc..050ad65657 100644 --- a/media/libaudioclient/ToneGenerator.cpp +++ b/media/libaudioclient/ToneGenerator.cpp @@ -1262,7 +1262,9 @@ bool ToneGenerator::initAudioTrack() { AUDIO_UID_INVALID, -1, &attr); - + // Set caller name so it can be logged in destructor. + // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_TONEGENERATOR + mpAudioTrack->setCallerName("tonegenerator"); if (status != NO_ERROR) { ALOGE("AudioTrack(%p) set failed with error %d", mpAudioTrack.get(), status); mpAudioTrack.clear(); diff --git a/media/libmediametrics/include/MediaMetricsConstants.h b/media/libmediametrics/include/MediaMetricsConstants.h index 315ad6290b..a7e79f4555 100644 --- a/media/libmediametrics/include/MediaMetricsConstants.h +++ b/media/libmediametrics/include/MediaMetricsConstants.h @@ -133,8 +133,6 @@ #define AMEDIAMETRICS_PROP_VOLUME_RIGHT "volume.right" // double (AudioTrack) #define AMEDIAMETRICS_PROP_WHERE "where" // string value -#define AMEDIAMETRICS_PROP_VALUE_UNKNOWN "unknown" // string for callerName - // Timing values: millisecond values are suffixed with MS and the type is double // nanosecond values are suffixed with NS and the type is int64. @@ -159,4 +157,16 @@ #define AMEDIAMETRICS_PROP_EVENT_VALUE_STOP "stop" // AudioTrack, AudioRecord #define AMEDIAMETRICS_PROP_EVENT_VALUE_UNDERRUN "underrun" // from Thread +// Possible values for AMEDIAMETRICS_PROP_CALLERNAME +// Check within the framework for these strings as this header file may not be explicitly +// included to avoid unnecessary cross-project dependencies. +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_AAUDIO "aaudio" // Native AAudio +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_JAVA "java" // Java API layer +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_MEDIA "media" // libmedia +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_OPENSLES "opensles" // Open SLES +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_RTP "rtp" // RTP communication +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_SOUNDPOOL "soundpool" // SoundPool +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_TONEGENERATOR "tonegenerator" // dial tones +#define AMEDIAMETRICS_PROP_CALLERNAME_VALUE_UNKNOWN "unknown" // callerName not set + #endif // ANDROID_MEDIA_MEDIAMETRICSCONSTANTS_H diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 42a062213d..c0da0ce3b2 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -2206,7 +2206,9 @@ status_t MediaPlayerService::AudioOutput::open( targetSpeed, mSelectedDeviceId); } - + // Set caller name so it can be logged in destructor. + // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_MEDIA + t->setCallerName("media"); if ((t == 0) || (t->initCheck() != NO_ERROR)) { ALOGE("Unable to create audio track"); delete newcbd; diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp index 00c5b400fc..4bc861e743 100644 --- a/media/libstagefright/AudioSource.cpp +++ b/media/libstagefright/AudioSource.cpp @@ -108,6 +108,9 @@ AudioSource::AudioSource( selectedDeviceId, selectedMicDirection, selectedMicFieldDimension); + // Set caller name so it can be logged in destructor. + // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_MEDIA + mRecord->setCallerName("media"); mInitCheck = mRecord->initCheck(); if (mInitCheck != OK) { mRecord.clear();