diff options
author | James Dong <jdong@google.com> | 2011-05-11 19:09:25 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-05-13 16:29:19 -0700 |
commit | 07b1bb529a1ae76c46a71b01338c166f9490629d (patch) | |
tree | 2fff6133d9aba0bed0375fd1099edcff609c6763 /media/libmediaplayerservice/StagefrightRecorder.cpp | |
parent | b5212db69734962f55e1493d3e696794172ced51 (diff) | |
download | frameworks_av-07b1bb529a1ae76c46a71b01338c166f9490629d.zip frameworks_av-07b1bb529a1ae76c46a71b01338c166f9490629d.tar.gz frameworks_av-07b1bb529a1ae76c46a71b01338c166f9490629d.tar.bz2 |
Support for storing geo information in the recorded mp4/3gpp file.
o Geo data (latitude and longitude) is stored in udta box
Change-Id: I76e4aeb741c4b339f3753d3d28190151f3ea4919
related-to-bug: 4260295
Diffstat (limited to 'media/libmediaplayerservice/StagefrightRecorder.cpp')
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index f21474f..9eb84d2 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -593,6 +593,26 @@ status_t StagefrightRecorder::setParamAuxVideoEncodingBitRate(int32_t bitRate) { return OK; } +status_t StagefrightRecorder::setParamGeoDataLongitude( + int32_t longitudex10000) { + + if (longitudex10000 > 1800000 || longitudex10000 < -1800000) { + return BAD_VALUE; + } + mLongitudex10000 = longitudex10000; + return OK; +} + +status_t StagefrightRecorder::setParamGeoDataLatitude( + int32_t latitudex10000) { + + if (latitudex10000 > 900000 || latitudex10000 < -900000) { + return BAD_VALUE; + } + mLatitudex10000 = latitudex10000; + return OK; +} + status_t StagefrightRecorder::setParameter( const String8 &key, const String8 &value) { LOGV("setParameter: key (%s) => value (%s)", key.string(), value.string()); @@ -621,6 +641,16 @@ status_t StagefrightRecorder::setParameter( if (safe_strtoi32(value.string(), &use64BitOffset)) { return setParam64BitFileOffset(use64BitOffset != 0); } + } else if (key == "param-geotag-longitude") { + int32_t longitudex10000; + if (safe_strtoi32(value.string(), &longitudex10000)) { + return setParamGeoDataLongitude(longitudex10000); + } + } else if (key == "param-geotag-latitude") { + int32_t latitudex10000; + if (safe_strtoi32(value.string(), &latitudex10000)) { + return setParamGeoDataLatitude(latitudex10000); + } } else if (key == "param-track-time-status") { int64_t timeDurationUs; if (safe_strtoi64(value.string(), &timeDurationUs)) { @@ -1412,6 +1442,10 @@ status_t StagefrightRecorder::setupMPEG4Recording( reinterpret_cast<MPEG4Writer *>(writer.get())-> setInterleaveDuration(mInterleaveDurationUs); } + if (mLongitudex10000 > -3600000 && mLatitudex10000 > -3600000) { + reinterpret_cast<MPEG4Writer *>(writer.get())-> + setGeoData(mLatitudex10000, mLongitudex10000); + } if (mMaxFileDurationUs != 0) { writer->setMaxFileDuration(mMaxFileDurationUs); } @@ -1638,6 +1672,8 @@ status_t StagefrightRecorder::reset() { mIsMetaDataStoredInVideoBuffers = false; mEncoderProfiles = MediaProfiles::getInstance(); mRotationDegrees = 0; + mLatitudex10000 = -3600000; + mLongitudex10000 = -3600000; mOutputFd = -1; mOutputFdAux = -1; |