summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorGloria Wang <gwang@google.com>2011-02-23 11:47:34 -0800
committerGloria Wang <gwang@google.com>2011-02-23 13:20:21 -0800
commit75b0b5473c7b43f8c5972db7e6e8930988ead751 (patch)
treed4372d334eb5784028647ee37a984e374e8e7c63 /media/libmediaplayerservice
parent51b9a8b53eaa1a0188be95d4d6a749424787e0d6 (diff)
downloadframeworks_av-75b0b5473c7b43f8c5972db7e6e8930988ead751.zip
frameworks_av-75b0b5473c7b43f8c5972db7e6e8930988ead751.tar.gz
frameworks_av-75b0b5473c7b43f8c5972db7e6e8930988ead751.tar.bz2
To collect the total usage time of encoders in the media recorder
Change-Id: I94c9c94dec6bd714a3ebf96b4465b94f069e55b8
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.cpp86
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.h2
2 files changed, 81 insertions, 7 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index 87fdbf2..e3dfabb 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -20,6 +20,10 @@
#include "StagefrightRecorder.h"
+#include <binder/IPCThreadState.h>
+#include <binder/IServiceManager.h>
+
+#include <media/IMediaPlayerService.h>
#include <media/stagefright/AudioSource.h>
#include <media/stagefright/AMRWriter.h>
#include <media/stagefright/CameraSource.h>
@@ -46,9 +50,23 @@
namespace android {
+// To collect the encoder usage for the battery app
+static void addBatteryData(uint32_t params) {
+ sp<IBinder> binder =
+ defaultServiceManager()->getService(String16("media.player"));
+ sp<IMediaPlayerService> service = interface_cast<IMediaPlayerService>(binder);
+ CHECK(service.get() != NULL);
+
+ service->addBatteryData(params);
+}
+
+
StagefrightRecorder::StagefrightRecorder()
: mWriter(NULL), mWriterAux(NULL),
- mOutputFd(-1), mOutputFdAux(-1) {
+ mOutputFd(-1), mOutputFdAux(-1),
+ mAudioSource(AUDIO_SOURCE_LIST_END),
+ mVideoSource(VIDEO_SOURCE_LIST_END),
+ mStarted(false) {
LOGV("Constructor");
reset();
@@ -745,30 +763,54 @@ status_t StagefrightRecorder::start() {
return UNKNOWN_ERROR;
}
+ status_t status = OK;
+
switch (mOutputFormat) {
case OUTPUT_FORMAT_DEFAULT:
case OUTPUT_FORMAT_THREE_GPP:
case OUTPUT_FORMAT_MPEG_4:
- return startMPEG4Recording();
+ status = startMPEG4Recording();
+ break;
case OUTPUT_FORMAT_AMR_NB:
case OUTPUT_FORMAT_AMR_WB:
- return startAMRRecording();
+ status = startAMRRecording();
+ break;
case OUTPUT_FORMAT_AAC_ADIF:
case OUTPUT_FORMAT_AAC_ADTS:
- return startAACRecording();
+ status = startAACRecording();
+ break;
case OUTPUT_FORMAT_RTP_AVP:
- return startRTPRecording();
+ status = startRTPRecording();
+ break;
case OUTPUT_FORMAT_MPEG2TS:
- return startMPEG2TSRecording();
+ status = startMPEG2TSRecording();
+ break;
default:
LOGE("Unsupported output file format: %d", mOutputFormat);
- return UNKNOWN_ERROR;
+ status = UNKNOWN_ERROR;
+ break;
+ }
+
+ if ((status == OK) && (!mStarted)) {
+ mStarted = true;
+
+ uint32_t params = IMediaPlayerService::kBatteryDataCodecStarted;
+ if (mAudioSource != AUDIO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackAudio;
+ }
+ if (mVideoSource != VIDEO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackVideo;
+ }
+
+ addBatteryData(params);
}
+
+ return status;
}
sp<MediaSource> StagefrightRecorder::createAudioSource() {
@@ -1458,6 +1500,21 @@ status_t StagefrightRecorder::pause() {
mWriterAux->pause();
}
+ if (mStarted) {
+ mStarted = false;
+
+ uint32_t params = 0;
+ if (mAudioSource != AUDIO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackAudio;
+ }
+ if (mVideoSource != VIDEO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackVideo;
+ }
+
+ addBatteryData(params);
+ }
+
+
return OK;
}
@@ -1494,6 +1551,21 @@ status_t StagefrightRecorder::stop() {
}
}
+ if (mStarted) {
+ mStarted = false;
+
+ uint32_t params = 0;
+ if (mAudioSource != AUDIO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackAudio;
+ }
+ if (mVideoSource != VIDEO_SOURCE_LIST_END) {
+ params |= IMediaPlayerService::kBatteryDataTrackVideo;
+ }
+
+ addBatteryData(params);
+ }
+
+
return err;
}
diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h
index 72225db..2c440c1 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.h
+++ b/media/libmediaplayerservice/StagefrightRecorder.h
@@ -107,6 +107,8 @@ private:
bool mIsMetaDataStoredInVideoBuffers;
MediaProfiles *mEncoderProfiles;
+ bool mStarted;
+
status_t setupMPEG4Recording(
bool useSplitCameraSource,
int outputFd,