diff options
author | Eric Laurent <elaurent@google.com> | 2010-09-27 08:45:07 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-27 08:45:07 -0700 |
commit | da4b9bdd4682fb3a20964908cb18d02c943b7f35 (patch) | |
tree | 4061ce1b067a277da67a141a5d2e9cb98e68041c /media | |
parent | 2207a10949a7f3fe7ebf5a52974c45221d8acc46 (diff) | |
parent | 0fa449cc475580d995e9d56756c3da5507d2b6f6 (diff) | |
download | frameworks_av-da4b9bdd4682fb3a20964908cb18d02c943b7f35.zip frameworks_av-da4b9bdd4682fb3a20964908cb18d02c943b7f35.tar.gz frameworks_av-da4b9bdd4682fb3a20964908cb18d02c943b7f35.tar.bz2 |
am 9627847d: Merge "Fix error in AudioEffect command status reporting." into gingerbread
Merge commit '9627847d588cd969f60dcc79d165209184a90069' into gingerbread-plus-aosp
* commit '9627847d588cd969f60dcc79d165209184a90069':
Fix error in AudioEffect command status reporting.
Diffstat (limited to 'media')
-rw-r--r-- | media/libeffects/visualizer/EffectVisualizer.cpp | 4 | ||||
-rw-r--r-- | media/libmedia/AudioEffect.cpp | 26 | ||||
-rw-r--r-- | media/libmedia/Visualizer.cpp | 6 |
3 files changed, 23 insertions, 13 deletions
diff --git a/media/libeffects/visualizer/EffectVisualizer.cpp b/media/libeffects/visualizer/EffectVisualizer.cpp index 03a6bbb..5505f14 100644 --- a/media/libeffects/visualizer/EffectVisualizer.cpp +++ b/media/libeffects/visualizer/EffectVisualizer.cpp @@ -65,8 +65,8 @@ void Visualizer_reset(VisualizerContext *pContext) { pContext->mCaptureIdx = 0; pContext->mCurrentBuf = 0; - memset(pContext->mCaptureBuf[0], 0, VISUALIZER_CAPTURE_SIZE_MAX); - memset(pContext->mCaptureBuf[1], 0, VISUALIZER_CAPTURE_SIZE_MAX); + memset(pContext->mCaptureBuf[0], 0x80, VISUALIZER_CAPTURE_SIZE_MAX); + memset(pContext->mCaptureBuf[1], 0x80, VISUALIZER_CAPTURE_SIZE_MAX); } //---------------------------------------------------------------------------- diff --git a/media/libmedia/AudioEffect.cpp b/media/libmedia/AudioEffect.cpp index 0f3e245..88b8c86 100644 --- a/media/libmedia/AudioEffect.cpp +++ b/media/libmedia/AudioEffect.cpp @@ -228,24 +228,32 @@ status_t AudioEffect::command(uint32_t cmdCode, void *replyData) { if (mStatus != NO_ERROR && mStatus != ALREADY_EXISTS) { + LOGV("command() bad status %d", mStatus); return INVALID_OPERATION; } - status_t status = mIEffect->command(cmdCode, cmdSize, cmdData, replySize, replyData); - if (status != NO_ERROR) { - return status; + if ((cmdCode == EFFECT_CMD_ENABLE || cmdCode == EFFECT_CMD_DISABLE) && + (replySize == NULL || *replySize != sizeof(status_t) || replyData == NULL)) { + return BAD_VALUE; } - status = *(status_t *)replyData; + + status_t status = mIEffect->command(cmdCode, cmdSize, cmdData, replySize, replyData); if (status != NO_ERROR) { return status; } - if (cmdCode == EFFECT_CMD_ENABLE) { - android_atomic_or(1, &mEnabled); - } - if (cmdCode == EFFECT_CMD_DISABLE) { - android_atomic_and(~1, &mEnabled); + if (cmdCode == EFFECT_CMD_ENABLE || cmdCode == EFFECT_CMD_DISABLE) { + status = *(status_t *)replyData; + if (status != NO_ERROR) { + return status; + } + if (cmdCode == EFFECT_CMD_ENABLE) { + android_atomic_or(1, &mEnabled); + } else { + android_atomic_and(~1, &mEnabled); + } } + return status; } diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp index 39552b6..68f2e9b 100644 --- a/media/libmedia/Visualizer.cpp +++ b/media/libmedia/Visualizer.cpp @@ -169,11 +169,13 @@ status_t Visualizer::getWaveForm(uint8_t *waveform) status_t status = NO_ERROR; if (mEnabled) { uint32_t replySize = mCaptureSize; - status_t status = command(VISU_CMD_CAPTURE, 0, NULL, &replySize, waveform); + status = command(VISU_CMD_CAPTURE, 0, NULL, &replySize, waveform); + LOGV("getWaveForm() command returned %d", status); if (replySize == 0) { status = NOT_ENOUGH_DATA; } } else { + LOGV("getWaveForm() disabled"); memset(waveform, 0x80, mCaptureSize); } return status; @@ -191,7 +193,7 @@ status_t Visualizer::getFft(uint8_t *fft) status_t status = NO_ERROR; if (mEnabled) { uint8_t buf[mCaptureSize]; - status_t status = getWaveForm(buf); + status = getWaveForm(buf); if (status == NO_ERROR) { status = doFft(fft, buf); } |