Merge "Make track informational event optional, depending on system property"

This commit is contained in:
James Dong
2011-05-17 13:41:42 -07:00
committed by Android (Google) Code Review
3 changed files with 38 additions and 0 deletions

View File

@@ -179,6 +179,9 @@ enum media_recorder_info_type {
// The time used to compensate for initial A/V sync.
MEDIA_RECORDER_TRACK_INFO_START_OFFSET_MS = 1008,
// Total number of bytes of the media data.
MEDIA_RECORDER_TRACK_INFO_DATA_KBYTES = 1009,
MEDIA_RECORDER_TRACK_INFO_LIST_END = 2000,
};

View File

@@ -860,6 +860,10 @@ public class MediaRecorder
* {@hide}
*/
public static final int MEDIA_RECORDER_TRACK_INFO_START_OFFSET_MS = 1008;
/** Provide the total number of data (in kilo-bytes) encoded.
* {@hide}
*/
public static final int MEDIA_RECORDER_TRACK_INFO_DATA_KBYTES = 1009;
/**
* {@hide}
*/

View File

@@ -33,6 +33,7 @@
#include <media/stagefright/MediaSource.h>
#include <media/stagefright/Utils.h>
#include <media/mediarecorder.h>
#include <cutils/properties.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -760,7 +761,27 @@ void MPEG4Writer::writeFtypBox(const MetaData *param) {
endBox();
}
static bool isTestModeEnabled() {
#if (PROPERTY_VALUE_MAX < 5)
#error "PROPERTY_VALUE_MAX must be at least 5"
#endif
// Test mode is enabled only if rw.media.record.test system
// property is enabled.
char value[PROPERTY_VALUE_MAX];
if (property_get("rw.media.record.test", value, NULL) &&
(!strcasecmp(value, "true") || !strcasecmp(value, "1"))) {
return true;
}
return false;
}
void MPEG4Writer::sendSessionSummary() {
// Send session summary only if test mode is enabled
if (!isTestModeEnabled()) {
return;
}
for (List<ChunkInfo>::iterator it = mChunkInfos.begin();
it != mChunkInfos.end(); ++it) {
int trackNum = it->mTrack->getTrackId() << 28;
@@ -2227,6 +2248,12 @@ status_t MPEG4Writer::Track::threadEntry() {
}
void MPEG4Writer::Track::sendTrackSummary(bool hasMultipleTracks) {
// Send track summary only if test mode is enabled.
if (!isTestModeEnabled()) {
return;
}
int trackNum = (mTrackId << 28);
mOwner->notify(MEDIA_RECORDER_TRACK_EVENT_INFO,
@@ -2256,6 +2283,10 @@ void MPEG4Writer::Track::sendTrackSummary(bool hasMultipleTracks) {
(initialDelayUs) / 1000);
}
mOwner->notify(MEDIA_RECORDER_TRACK_EVENT_INFO,
trackNum | MEDIA_RECORDER_TRACK_INFO_DATA_KBYTES,
mMdatSizeBytes / 1024);
if (hasMultipleTracks) {
mOwner->notify(MEDIA_RECORDER_TRACK_EVENT_INFO,
trackNum | MEDIA_RECORDER_TRACK_INFO_MAX_CHUNK_DUR_MS,