Loading include/media/mediarecorder.h +3 −0 Original line number Diff line number Diff line Loading @@ -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, }; Loading media/java/android/media/MediaRecorder.java +4 −0 Original line number Diff line number Diff line Loading @@ -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} */ Loading media/libstagefright/MPEG4Writer.cpp +31 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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, Loading Loading
include/media/mediarecorder.h +3 −0 Original line number Diff line number Diff line Loading @@ -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, }; Loading
media/java/android/media/MediaRecorder.java +4 −0 Original line number Diff line number Diff line Loading @@ -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} */ Loading
media/libstagefright/MPEG4Writer.cpp +31 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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, Loading