summaryrefslogtreecommitdiffstats
path: root/media/libmedia/MediaProfiles.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-05-09 18:49:31 -0700
committerJames Dong <jdong@google.com>2011-05-10 10:32:19 -0700
commit0f056290cb16763453f18bbef80cde673041dbbc (patch)
tree8250c642980de9496f6ae88bd1b00f798dba1eb4 /media/libmedia/MediaProfiles.cpp
parent70ccfd44c4bfe95ddecc2df6c3695efc48229d72 (diff)
downloadframeworks_av-0f056290cb16763453f18bbef80cde673041dbbc.zip
frameworks_av-0f056290cb16763453f18bbef80cde673041dbbc.tar.gz
frameworks_av-0f056290cb16763453f18bbef80cde673041dbbc.tar.bz2
Add support for platform-specific recording start time offset
o This start time offset is used in the media framework to eliminate the recording sound in the recorded file. Change-Id: I97926a74f0743b8a4f985d51334e8d1486a318ea related-to-bug: 4390777
Diffstat (limited to 'media/libmedia/MediaProfiles.cpp')
-rw-r--r--media/libmedia/MediaProfiles.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index e6f3a33..069bbb7 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -356,6 +356,18 @@ MediaProfiles::getCameraId(const char** atts)
return atoi(atts[1]);
}
+void MediaProfiles::addStartTimeOffset(int cameraId, const char** atts)
+{
+ int offsetTimeMs = 700;
+ if (atts[2]) {
+ CHECK(!strcmp("startOffsetMs", atts[2]));
+ offsetTimeMs = atoi(atts[3]);
+ }
+
+ LOGV("%s: cameraId=%d, offset=%d ms", __func__, cameraId, offsetTimeMs);
+ mStartTimeOffsets.replaceValueFor(cameraId, offsetTimeMs);
+}
+
/*static*/ void
MediaProfiles::startElementHandler(void *userData, const char *name, const char **atts)
{
@@ -380,6 +392,7 @@ MediaProfiles::startElementHandler(void *userData, const char *name, const char
profiles->mEncoderOutputFileFormats.add(createEncoderOutputFileFormat(atts));
} else if (strcmp("CamcorderProfiles", name) == 0) {
profiles->mCurrentCameraId = getCameraId(atts);
+ profiles->addStartTimeOffset(profiles->mCurrentCameraId, atts);
} else if (strcmp("EncoderProfile", name) == 0) {
profiles->mCamcorderProfiles.add(
createCamcorderProfile(profiles->mCurrentCameraId, atts, profiles->mCameraIds));
@@ -997,6 +1010,16 @@ Vector<int> MediaProfiles::getImageEncodingQualityLevels(int cameraId) const
return result;
}
+int MediaProfiles::getStartTimeOffsetMs(int cameraId) const {
+ int offsetTimeMs = -1;
+ ssize_t index = mStartTimeOffsets.indexOfKey(cameraId);
+ if (index >= 0) {
+ offsetTimeMs = mStartTimeOffsets.valueFor(cameraId);
+ }
+ LOGV("%s: offsetTime=%d ms and cameraId=%d", offsetTimeMs, cameraId);
+ return offsetTimeMs;
+}
+
MediaProfiles::~MediaProfiles()
{
CHECK("destructor should never be called" == 0);