2013-03-26 3 views
0

장치가 특정 샘플 속도를 지원하는지 확인하고 싶습니다.장치의 지원되는 PCM 샘플 속도 확인

나는 다음 (작동해야하는 따라 http://developer.android.com/reference/android/media/AudioRecord.html#getMinBufferSize(int, INT, int)를 시도했습니다)하지만 (이 AudioRecord.ERROR_BAD_VALUE를 얻을하지 않습니다) :

int bufferSize8000 = AudioRecord.getMinBufferSize(90000000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); 

    if(bufferSize8000 != (AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR)) { 
     Log.v("samplerate", String.valueOf(bufferSize8000)); 
    } else { 

     Log.v("samplerate", "NOTsupported"); 
    } 

답변

0
(AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR) 

수단 -2 | -1입니다.이 값은 -1과 같으며 AudioRecord.ERROR과 같으므로 예상 한 결과를 얻지 못하는 것입니다.

그래서이

if(bufferSize8000 != (AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR)) { 

if (bufferSize8000 != Audiorecord.ERROR_BAD_VALUE && bufferSize8000 != AudioRecord.ERROR) { 
여전히
+0

동일해야합니다. sampe rate 0Hz의 경우 버퍼 크기는 4096입니다. – Kristopher

+0

최소 버퍼 크기를 계산할 때 모든 공급 업체가 샘플 속도를 신경 쓰지는 않습니다. 일부에는 사용자가 지정한 채널 수를 곱할 수있는 기본 버퍼 크기가 있습니다. 예를 들어 [이 구현] (https://www.codeaurora.org/gitweb/quic/la/?p=platform/hardware/qcom/audio.git;a=blob;f=alsa_sound/AudioHardwareALSA.cpp; h = b68e25b6ed3f2b830393cb0e850397e44352e9e7; hb = refs/heads/jb_rel_rb1.1 # l1322) – Michael