Uses AudioFlinger to signal battery stats for audio.
Bug: 18177221
Change-Id: I704010c037cb99bb74b98798ee8e494fa8bdc875
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 16140e7..a416381 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -286,9 +286,7 @@
// reset battery stats
// if the mediaserver has crashed, battery stats could be left
// in bad state, reset the state upon service start.
- BatteryNotifier& notifier(BatteryNotifier::getInstance());
- notifier.noteResetVideo();
- notifier.noteResetAudio();
+ BatteryNotifier::getInstance().noteResetVideo();
MediaPlayerFactory::registerBuiltinFactories();
}
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index b58b575..38eb352 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -2810,25 +2810,15 @@
}
void MediaCodec::updateBatteryStat() {
+ if (!mIsVideo) {
+ return;
+ }
+
if (mState == CONFIGURED && !mBatteryStatNotified) {
- BatteryNotifier& notifier(BatteryNotifier::getInstance());
-
- if (mIsVideo) {
- notifier.noteStartVideo();
- } else {
- notifier.noteStartAudio();
- }
-
+ BatteryNotifier::getInstance().noteStartVideo();
mBatteryStatNotified = true;
} else if (mState == UNINITIALIZED && mBatteryStatNotified) {
- BatteryNotifier& notifier(BatteryNotifier::getInstance());
-
- if (mIsVideo) {
- notifier.noteStopVideo();
- } else {
- notifier.noteStopAudio();
- }
-
+ BatteryNotifier::getInstance().noteStopVideo();
mBatteryStatNotified = false;
}
}
diff --git a/services/audioflinger/Android.mk b/services/audioflinger/Android.mk
index 9b4ba79..87f9aaa 100644
--- a/services/audioflinger/Android.mk
+++ b/services/audioflinger/Android.mk
@@ -47,6 +47,7 @@
liblog \
libbinder \
libmedia \
+ libmediautils \
libnbaio \
libhardware \
libhardware_legacy \
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index fab1ef5..385e0b9 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -63,6 +63,7 @@
#include <media/nbaio/Pipe.h>
#include <media/nbaio/PipeReader.h>
#include <media/AudioParameter.h>
+#include <mediautils/BatteryNotifier.h>
#include <private/android_filesystem_config.h>
// ----------------------------------------------------------------------------
@@ -191,6 +192,11 @@
MemoryHeapBase::READ_ONLY);
}
+ // reset battery stats.
+ // if the audio service has crashed, battery stats could be left
+ // in bad state, reset the state upon service start.
+ BatteryNotifier::getInstance().noteResetAudio();
+
#ifdef TEE_SINK
(void) property_get("ro.debuggable", value, "0");
int debuggable = atoi(value);
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index b9e7a8b..3d4d120 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -48,6 +48,7 @@
#include <media/nbaio/Pipe.h>
#include <media/nbaio/PipeReader.h>
#include <media/nbaio/SourceAudioBufferProvider.h>
+#include <mediautils/BatteryNotifier.h>
#include <powermanager/PowerManager.h>
@@ -546,7 +547,8 @@
mAudioSource(AUDIO_SOURCE_DEFAULT), mId(id),
// mName will be set by concrete (non-virtual) subclass
mDeathRecipient(new PMDeathRecipient(this)),
- mSystemReady(systemReady)
+ mSystemReady(systemReady),
+ mNotifiedBatteryStart(false)
{
memset(&mPatch, 0, sizeof(struct audio_patch));
}
@@ -927,6 +929,11 @@
}
ALOGV("acquireWakeLock_l() %s status %d", mThreadName, status);
}
+
+ if (!mNotifiedBatteryStart) {
+ BatteryNotifier::getInstance().noteStartAudio();
+ mNotifiedBatteryStart = true;
+ }
}
void AudioFlinger::ThreadBase::releaseWakeLock()
@@ -945,6 +952,11 @@
}
mWakeLockToken.clear();
}
+
+ if (mNotifiedBatteryStart) {
+ BatteryNotifier::getInstance().noteStopAudio();
+ mNotifiedBatteryStart = false;
+ }
}
void AudioFlinger::ThreadBase::updateWakeLockUids(const SortedVector<int> &uids) {
diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h
index 46ac300..114d43c 100644
--- a/services/audioflinger/Threads.h
+++ b/services/audioflinger/Threads.h
@@ -457,6 +457,7 @@
static const size_t kLogSize = 4 * 1024;
sp<NBLog::Writer> mNBLogWriter;
bool mSystemReady;
+ bool mNotifiedBatteryStart;
};
// --- PlaybackThread ---