diff options
author | Chia-chi Yeh <chiachi@android.com> | 2010-08-19 17:14:36 +0800 |
---|---|---|
committer | Chia-chi Yeh <chiachi@android.com> | 2010-08-19 17:14:36 +0800 |
commit | c3308074cd6f06bbb35c1999b5260f938742a9e7 (patch) | |
tree | ab9010335709b96a78d3c14c8d539e187e582cd8 /core/jni/android_media_AudioRecord.cpp | |
parent | b72081966da3842e27f88045cfa5a67cef3d4220 (diff) | |
download | frameworks_base-c3308074cd6f06bbb35c1999b5260f938742a9e7.zip frameworks_base-c3308074cd6f06bbb35c1999b5260f938742a9e7.tar.gz frameworks_base-c3308074cd6f06bbb35c1999b5260f938742a9e7.tar.bz2 |
Use getMinFrameCount() instead of querying AudioSystem directly.
Change-Id: I6c4d2f1778703c1fd1ba5610c46e77c857418bff
Diffstat (limited to 'core/jni/android_media_AudioRecord.cpp')
-rw-r--r-- | core/jni/android_media_AudioRecord.cpp | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp index 17f5daf..f78f83c 100644 --- a/core/jni/android_media_AudioRecord.cpp +++ b/core/jni/android_media_AudioRecord.cpp @@ -453,30 +453,23 @@ static jint android_media_AudioRecord_get_pos_update_period(JNIEnv *env, jobjec // return -1 if there was an error querying the buffer size. static jint android_media_AudioRecord_get_min_buff_size(JNIEnv *env, jobject thiz, jint sampleRateInHertz, jint nbChannels, jint audioFormat) { - - size_t inputBuffSize = 0; + LOGV(">> android_media_AudioRecord_get_min_buff_size(%d, %d, %d)", sampleRateInHertz, nbChannels, audioFormat); - - status_t result = AudioSystem::getInputBufferSize( - sampleRateInHertz, - (audioFormat == javaAudioRecordFields.PCM16 ? - AudioSystem::PCM_16_BIT : AudioSystem::PCM_8_BIT), - nbChannels, &inputBuffSize); - switch(result) { - case(NO_ERROR): - if(inputBuffSize == 0) { - LOGV("Recording parameters are not supported: %dHz, %d channel(s), (java) format %d", - sampleRateInHertz, nbChannels, audioFormat); - return 0; - } else { - // the minimum buffer size is twice the hardware input buffer size - return 2*inputBuffSize; - } - break; - case(PERMISSION_DENIED): - default: - return -1; + + int frameCount = 0; + status_t result = AudioRecord::getMinFrameCount(&frameCount, + sampleRateInHertz, + (audioFormat == javaAudioRecordFields.PCM16 ? + AudioSystem::PCM_16_BIT : AudioSystem::PCM_8_BIT), + nbChannels); + + if (result == BAD_VALUE) { + return 0; + } + if (result != NO_ERROR) { + return -1; } + return frameCount * nbChannels * (audioFormat == javaAudioRecordFields.PCM16 ? 2 : 1); } |