media: adjust time offset in case of time lapse
Bug: 27636840
Change-Id: I7be87042b450e0e7e4d9e74072a2acdf4af1a4dd
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index 1b248db..78eb3b0 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -1761,12 +1761,16 @@
// 30 ms buffer to avoid timestamp overlap
mTotalPausedDurationUs += (systemTime() / 1000) - mPauseStartTimeUs - 30000;
+ double timeOffset = -mTotalPausedDurationUs;
+ if (mCaptureFpsEnable) {
+ timeOffset *= mCaptureFps / mFrameRate;
+ }
if (mAudioEncoderSource != NULL) {
- mAudioEncoderSource->setInputBufferTimeOffset(-mTotalPausedDurationUs);
+ mAudioEncoderSource->setInputBufferTimeOffset((int64_t)timeOffset);
mAudioEncoderSource->start();
}
if (mVideoEncoderSource != NULL) {
- mVideoEncoderSource->setInputBufferTimeOffset(-mTotalPausedDurationUs);
+ mVideoEncoderSource->setInputBufferTimeOffset((int64_t)timeOffset);
mVideoEncoderSource->start();
}
mPauseStartTimeUs = 0;