From 37967d46f40c8c52c88ff8c011972a1489d465ec Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Wed, 28 Nov 2012 14:37:36 -0800 Subject: Use memcpy_to_i16_from_u8 from audioutils instead of C loop This function may be optimized in the future, and it will make it easier to search for audio sample format-specific code when we need add support for more formats. Change-Id: Iad0585c35ddd2d12857164ed1effcce75f77920c --- core/jni/Android.mk | 6 ++++-- core/jni/android_media_AudioTrack.cpp | 7 +++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 51c5a86..52c463d 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -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 diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index 3a5b566..17afea2 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -546,10 +547,8 @@ jint writeToTrack(const sp& 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; -- cgit v1.1