summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Michel Trivi <>2009-03-24 19:48:58 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 19:48:58 -0700
commit7d563247cdac0509009d579bbf849157d47c38a9 (patch)
tree2a6b28c0a3b73ccb81dba2d78681a63b482c5542
parent158857d5a6bb93aa6a135a338f9b6389e0f2b3a5 (diff)
downloadframeworks_av-7d563247cdac0509009d579bbf849157d47c38a9.zip
frameworks_av-7d563247cdac0509009d579bbf849157d47c38a9.tar.gz
frameworks_av-7d563247cdac0509009d579bbf849157d47c38a9.tar.bz2
Automated import from //branches/donutburger/...@141200,141200
-rw-r--r--include/media/AudioRecord.h1
-rw-r--r--media/libmedia/AudioRecord.cpp9
2 files changed, 8 insertions, 2 deletions
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index ff64855..7164b78 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -335,6 +335,7 @@ private:
uint32_t mNotificationFrames;
uint32_t mRemainingFrames;
uint32_t mMarkerPosition;
+ bool mMarkerReached;
uint32_t mNewPosition;
uint32_t mUpdatePeriod;
};
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index 7594ff0..5c800c3 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -200,6 +200,7 @@ status_t AudioRecord::set(
// TODO: add audio hardware input latency here
mLatency = (1000*mFrameCount) / mSampleRate;
mMarkerPosition = 0;
+ mMarkerReached = false;
mNewPosition = 0;
mUpdatePeriod = 0;
@@ -293,6 +294,9 @@ status_t AudioRecord::stop()
if (android_atomic_and(~1, &mActive) == 1) {
mAudioRecord->stop();
+ // the record head position will reset to 0, so if a marker is set, we need
+ // to activate it again
+ mMarkerReached = false;
if (t != 0) {
t->requestExit();
} else {
@@ -317,6 +321,7 @@ status_t AudioRecord::setMarkerPosition(uint32_t marker)
if (mCbf == 0) return INVALID_OPERATION;
mMarkerPosition = marker;
+ mMarkerReached = false;
return NO_ERROR;
}
@@ -492,10 +497,10 @@ bool AudioRecord::processAudioBuffer(const sp<ClientRecordThread>& thread)
size_t readSize;
// Manage marker callback
- if (mMarkerPosition > 0) {
+ if (!mMarkerReached && (mMarkerPosition > 0)) {
if (mCblk->user >= mMarkerPosition) {
mCbf(EVENT_MARKER, mUserData, (void *)&mMarkerPosition);
- mMarkerPosition = 0;
+ mMarkerReached = true;
}
}