Merge "Use memcpy_to_i16_from_u8 from audioutils instead of C loop"

This commit is contained in:
Glenn Kasten
2014-04-01 15:31:10 +00:00
committed by Android (Google) Code Review
2 changed files with 7 additions and 6 deletions

View File

@@ -177,7 +177,8 @@ LOCAL_C_INCLUDES += \
external/harfbuzz_ng/src \
external/zlib \
frameworks/opt/emoji \
libcore/include
libcore/include \
$(call include-path-for, audio-utils) \
LOCAL_SHARED_LIBRARIES := \
libmemtrack \
@@ -213,7 +214,8 @@ LOCAL_SHARED_LIBRARIES := \
libjpeg \
libusbhost \
libharfbuzz_ng \
libz
libz \
libaudioutils \
ifeq ($(USE_OPENGL_RENDERER),true)
LOCAL_SHARED_LIBRARIES += libhwui

View File

@@ -26,6 +26,7 @@
#include <utils/Log.h>
#include <media/AudioSystem.h>
#include <media/AudioTrack.h>
#include <audio_utils/primitives.h>
#include <binder/MemoryHeapBase.h>
#include <binder/MemoryBase.h>
@@ -550,10 +551,8 @@ jint writeToTrack(const sp<AudioTrack>& track, jint audioFormat, const jbyte* da
}
int count = sizeInBytes;
int16_t *dst = (int16_t *)track->sharedBuffer()->pointer();
const int8_t *src = (const int8_t *)(data + offsetInBytes);
while (count--) {
*dst++ = (int16_t)(*src++^0x80) << 8;
}
const uint8_t *src = (const uint8_t *)(data + offsetInBytes);
memcpy_to_i16_from_u8(dst, src, count);
// even though we wrote 2*sizeInBytes, we only report sizeInBytes as written to hide
// the 8bit mixer restriction from the user of this function
written = sizeInBytes;