diff options
| author | 2011-05-17 13:41:42 -0700 | |
|---|---|---|
| committer | 2011-05-17 13:41:42 -0700 | |
| commit | 384fa845fb940bdbbfb8b1c4e8dbb5b678dbb53b (patch) | |
| tree | 1812d8dba628f1d46b7d6f737c89d88044fe99ca | |
| parent | 78ae81efa9d49b2697629f576e9f4beec6ec8b2b (diff) | |
| parent | 0f32fb3ecfdfaa03acf880a356629d43da3fe2fe (diff) | |
Merge "Make track informational event optional, depending on system property"
| -rw-r--r-- | include/media/mediarecorder.h | 3 | ||||
| -rw-r--r-- | media/java/android/media/MediaRecorder.java | 4 | ||||
| -rw-r--r-- | media/libstagefright/MPEG4Writer.cpp | 31 |
3 files changed, 38 insertions, 0 deletions
diff --git a/include/media/mediarecorder.h b/include/media/mediarecorder.h index 59093c9234e2..36bf34ebbd10 100644 --- a/include/media/mediarecorder.h +++ b/include/media/mediarecorder.h @@ -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, }; diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 961ee1e57f92..0f5a440b0dbb 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -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} */ diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp index 9dc83a638d05..988392effd54 100644 --- a/media/libstagefright/MPEG4Writer.cpp +++ b/media/libstagefright/MPEG4Writer.cpp @@ -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, |