Fix for 3369917 Audio skips at clip edit points
Change-Id: Iba66585cc2e679475d8db529d6113586b58e626e
diff --git a/libvideoeditor/lvpp/DummyAudioSource.cpp b/libvideoeditor/lvpp/DummyAudioSource.cpp
index 04f8dc9..70f5944 100755
--- a/libvideoeditor/lvpp/DummyAudioSource.cpp
+++ b/libvideoeditor/lvpp/DummyAudioSource.cpp
@@ -97,7 +97,12 @@
LOG2("DummyAudioSource::~DummyAudioSource");
}
-
+void DummyAudioSource::setDuration (int64_t audioDurationUs) {
+ Mutex::Autolock autoLock(mLock);
+ LOG2("SetDuration %lld", mAudioDurationUs);
+ mAudioDurationUs += audioDurationUs;
+ LOG2("SetDuration %lld", mAudioDurationUs);
+}
status_t DummyAudioSource::start(MetaData *params) {
status_t err = OK;
@@ -143,7 +148,7 @@
meta->setInt32(kKeySampleRate, mSamplingRate);
meta->setInt64(kKeyDuration, mFrameDurationUs);
- meta->setCString(kKeyDecoderComponent, "DummyAudioSource");
+ meta->setCString(kKeyDecoderComponent, "DummyAudioSource");
return meta;
}
@@ -159,11 +164,14 @@
if (options && options->getSeekTo(&seekTimeUs, &mode)) {
CHECK(seekTimeUs >= 0);
mTimeStampUs = seekTimeUs;
- }
-
- if (mTimeStampUs >= mAudioDurationUs) {
- *out = NULL;
- return ERROR_END_OF_STREAM;
+ }
+ {
+ Mutex::Autolock autoLock(mLock);
+ if (mTimeStampUs >= mAudioDurationUs) {
+ *out = NULL;
+ LOGI("EOS reached");
+ return ERROR_END_OF_STREAM;
+ }
}
err = mBufferGroup->acquire_buffer(&buffer);