summaryrefslogtreecommitdiffstats
path: root/core/jni/android_media_AudioRecord.cpp
diff options
context:
space:
mode:
authorChia-chi Yeh <chiachi@android.com>2010-08-19 17:14:36 +0800
committerChia-chi Yeh <chiachi@android.com>2010-08-19 17:14:36 +0800
commitc3308074cd6f06bbb35c1999b5260f938742a9e7 (patch)
treeab9010335709b96a78d3c14c8d539e187e582cd8 /core/jni/android_media_AudioRecord.cpp
parentb72081966da3842e27f88045cfa5a67cef3d4220 (diff)
downloadframeworks_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.cpp37
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);
}