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;