From 0f056290cb16763453f18bbef80cde673041dbbc Mon Sep 17 00:00:00 2001 From: James Dong Date: Mon, 9 May 2011 18:49:31 -0700 Subject: 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 --- media/libmedia/MediaProfiles.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'media/libmedia/MediaProfiles.cpp') 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 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); -- cgit v1.1