summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2015-03-04 00:10:30 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-03-04 00:10:30 +0000
commit6d32d81f966b1e5e6e037d55a5003fea4b87e55b (patch)
tree26824f1a2006c3a24ebd542b975ce8a076f051fa /services
parent0331cf73db5087311089e01f5d31bb4026e54e6a (diff)
parent5115777127bb4d2d50833537e09054dcdffdfc76 (diff)
downloadframeworks_av-6d32d81f966b1e5e6e037d55a5003fea4b87e55b.zip
frameworks_av-6d32d81f966b1e5e6e037d55a5003fea4b87e55b.tar.gz
frameworks_av-6d32d81f966b1e5e6e037d55a5003fea4b87e55b.tar.bz2
Merge "Remove PCM16 assumption from FastCapture"
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/FastCapture.cpp13
-rw-r--r--services/audioflinger/FastCapture.h2
2 files changed, 6 insertions, 9 deletions
diff --git a/services/audioflinger/FastCapture.cpp b/services/audioflinger/FastCapture.cpp
index 2a10b4b..9e7e8a4 100644
--- a/services/audioflinger/FastCapture.cpp
+++ b/services/audioflinger/FastCapture.cpp
@@ -69,7 +69,7 @@ void FastCapture::onIdle()
void FastCapture::onExit()
{
- delete[] mReadBuffer;
+ free(mReadBuffer);
}
bool FastCapture::isSubClassCommand(FastThreadState::Command command)
@@ -124,16 +124,14 @@ void FastCapture::onStateChange()
}
if ((!Format_isEqual(mFormat, previousFormat)) || (frameCount != previous->mFrameCount)) {
- // FIXME to avoid priority inversion, don't delete here
- delete[] mReadBuffer;
+ // FIXME to avoid priority inversion, don't free here
+ free(mReadBuffer);
mReadBuffer = NULL;
if (frameCount > 0 && mSampleRate > 0) {
// FIXME new may block for unbounded time at internal mutex of the heap
// implementation; it would be better to have normal capture thread allocate for
// us to avoid blocking here and to prevent possible priority inversion
- unsigned channelCount = Format_channelCount(mFormat);
- // FIXME frameSize
- mReadBuffer = new short[frameCount * channelCount];
+ (void)posix_memalign(&mReadBuffer, 32, frameCount * Format_frameSize(mFormat));
mPeriodNs = (frameCount * 1000000000LL) / mSampleRate; // 1.00
mUnderrunNs = (frameCount * 1750000000LL) / mSampleRate; // 1.75
mOverrunNs = (frameCount * 500000000LL) / mSampleRate; // 0.50
@@ -188,8 +186,7 @@ void FastCapture::onWork()
ALOG_ASSERT(mReadBuffer != NULL);
if (mReadBufferState < 0) {
unsigned channelCount = Format_channelCount(mFormat);
- // FIXME frameSize
- memset(mReadBuffer, 0, frameCount * channelCount * sizeof(short));
+ memset(mReadBuffer, 0, frameCount * Format_frameSize(mFormat));
mReadBufferState = frameCount;
}
if (mReadBufferState > 0) {
diff --git a/services/audioflinger/FastCapture.h b/services/audioflinger/FastCapture.h
index eec89c9..e258a4d 100644
--- a/services/audioflinger/FastCapture.h
+++ b/services/audioflinger/FastCapture.h
@@ -54,7 +54,7 @@ private:
int mInputSourceGen;
NBAIO_Sink* mPipeSink;
int mPipeSinkGen;
- short* mReadBuffer;
+ void* mReadBuffer;
ssize_t mReadBufferState; // number of initialized frames in readBuffer,
// or -1 to clear
NBAIO_Format mFormat;