2011-01-24 18 views
9

मैं सैमसंग गैलेक्सी एस i9000 पर इसका परीक्षण कर रहा हूं।ऑडियोRecord.getMinBufferSize वापसी क्यों ERROR_BAD_VALUE (-2)?

int sampleRate = 44100; 
int bufferSize = AudioRecord.getMinBufferSize(sampleRate, 
    AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT); 

यह 2 ERROR_BAD_VALUE देता है। के रूप में द्वारा

AudioTrack.getNativeOutputSampleRate (AudioManager.STREAM_SYSTEM) लौटे

देशी नमूना दर, 44100Hz है।

मैं 1000, 8000, 22100 और 44100. मैं भी AudioFormat.CHANNEL_CONFIGURATION_MONO को AudioFormat.CHANNEL_IN_MONO बदलते कोशिश की है करने के लिए sampleRate स्थापित करने की कोशिश की है। मैंने STEREO (IN_STEREO और CONFIGURATION_STEREO दोनों) की भी कोशिश की है। मैंने 8 बिट के बजाय 16 बिट एन्कोडिंग भी कोशिश की है।

अद्यतन: मेरे मैनिफेस्ट में AUDIO_RECORD अनुमति के रूप में है।

परिणामस्वरूप मैं -2 प्राप्त कर रहा हूं। ये क्यों हो रहा है?

+0

हाय, क्या यह कभी हल हो गया है, या कोई अंतर्दृष्टि? धन्यवाद। –

उत्तर

17

मंच स्रोत फ़ाइल AudioRecord.java से:

static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) { 
    ... 
    // PCM_8BIT is not supported at the moment 
    if (audioFormat != AudioFormat.ENCODING_PCM_16BIT) { 
     loge("getMinBufferSize(): Invalid audio format."); 
     return AudioRecord.ERROR_BAD_VALUE; 
    } 
    ... 
} 

लग रहा है अपनी पसंद की तरह 16-बिट या कुछ भी नहीं है। : \

+1

+1। उन्होंने कहा कि उन्होंने 16-बिट की भी कोशिश की, इसलिए उस विधि में एकमात्र अन्य जगह जहां getMinBufferSize में ERROR_BAD_VALUE को वापस किया जा सकता है लाइन 472-475 है। – McStretch

+0

जानकारी के लिए धन्यवाद। हालांकि मैकस्ट्रेच सही है, मैंने ENCODING_PCM_16BIT भी कोशिश की। – Tom

+0

इसका मतलब है कि native_get_min_buff_size (sampleRateInHz, channelCount, audioFormat) 0 देता है। यह कैसे हो सकता है? – Tom

0

एम्यूलेटर में यह हमेशा 2 लौटाएगा। उसी कोड के साथ यह असली मोबाइल पर ठीक रहेगा।

+0

क्षमा करें लोक यह असली डिवाइस पर भी 2 देता है – IronBlossom

संबंधित मुद्दे