diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-07 09:10:15 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-07 09:10:15 -0700 |
commit | 1420bf3ec6008d0823e76cc4f615f509af4e87ed (patch) | |
tree | 39d6b2f8d06e704dab9a6edb3bcfa87cfb9b1135 /media | |
parent | 0f0021d36b3f94abd5375385d6f5b72222d1f37f (diff) | |
parent | 28ad42b58cf9043c5503672714c09a05b798a081 (diff) | |
download | frameworks_base-1420bf3ec6008d0823e76cc4f615f509af4e87ed.zip frameworks_base-1420bf3ec6008d0823e76cc4f615f509af4e87ed.tar.gz frameworks_base-1420bf3ec6008d0823e76cc4f615f509af4e87ed.tar.bz2 |
Merge change 9674
* changes:
Fix problem in AudioTrack with 8 bit PCM and direct output.
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/AudioTrack.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index b147d25..4b9d272 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -744,7 +744,7 @@ ssize_t AudioTrack::write(const void* buffer, size_t userSize) size_t toWrite; - if (mFormat == AudioSystem::PCM_8_BIT) { + if (mFormat == AudioSystem::PCM_8_BIT && !(mFlags & AudioSystem::OUTPUT_FLAG_DIRECT)) { // Divide capacity by 2 to take expansion into account toWrite = audioBuffer.size>>1; // 8 to 16 bit conversion @@ -753,7 +753,7 @@ ssize_t AudioTrack::write(const void* buffer, size_t userSize) while(count--) { *dst++ = (int16_t)(*src++^0x80) << 8; } - }else { + } else { toWrite = audioBuffer.size; memcpy(audioBuffer.i8, src, toWrite); src += toWrite; @@ -840,7 +840,7 @@ bool AudioTrack::processAudioBuffer(const sp<AudioTrackThread>& thread) // Divide buffer size by 2 to take into account the expansion // due to 8 to 16 bit conversion: the callback must fill only half // of the destination buffer - if (mFormat == AudioSystem::PCM_8_BIT) { + if (mFormat == AudioSystem::PCM_8_BIT && !(mFlags & AudioSystem::OUTPUT_FLAG_DIRECT)) { audioBuffer.size >>= 1; } @@ -859,7 +859,7 @@ bool AudioTrack::processAudioBuffer(const sp<AudioTrackThread>& thread) } if (writtenSize > reqSize) writtenSize = reqSize; - if (mFormat == AudioSystem::PCM_8_BIT) { + if (mFormat == AudioSystem::PCM_8_BIT && !(mFlags & AudioSystem::OUTPUT_FLAG_DIRECT)) { // 8 to 16 bit conversion const int8_t *src = audioBuffer.i8 + writtenSize-1; int count = writtenSize; |