2012-10-02 29 views
7

के पहले उपयोग के बाद कम मात्रा मैं एक वीओआईपी ऐप पर काम करता हूं। ऑडियो सत्र का मोड kAudioSessionMode_VoiceChat पर सेट है।आईओएस 5/6: CoreAudio

कॉल के लिए, मैं subtype kAudioUnitSubType_VoiceProcessingIO के साथ CoreAudio AudioUnit खोलता हूं। सब कुछ ठीक काम करता है। पहली कॉल के बाद, मैं AudioUnitUninitialize() के साथ AudioUnit को बंद करता हूं और मैं ऑडियो सत्र को निष्क्रिय करता हूं।

अब, ऐसा लगता है जैसे ऑडियो डिवाइस सही ढंग से रिलीज़ नहीं होता है: रिंगर वॉल्यूम बहुत कम है, मीडिया प्लेयर की मात्रा सामान्य से कम है। और बाद के कॉल के लिए, मैं अब KAudioUnitSubType_VoiceProcessingIO को सक्रिय नहीं कर सकता। यह kAudioUnitSubType_RemoteIO के साथ ऑडियोउनिट बनाने के लिए काम करता है, लेकिन कॉल की मात्रा बहुत कम है (रिसीवर और स्पीकर दोनों)।

यह पहली बार आईओएस 5 पर हुआ था। आईओएस 6 पर आईफोन 5 के साथ, यह भी बदतर है (यहां तक ​​कि कम मात्रा भी)।

क्या किसी ने इसे देखा है? क्या मुझे वॉयस प्रोसेसिंग यूनिट को रिलीज़ करने के लिए AudioUnitUninitialize() से अधिक करने की आवश्यकता है?

उत्तर

8

मुझे समाधान मिला है: AudioComponentInstanceNew() के साथ पुनर्प्राप्त ऑडियो घटक को मुक्त करने के लिए मैंने गलत तरीके से AudioUnitUninitialize() का उपयोग किया है। AudioComponentInstanceDispose() का उपयोग करना सही है।

+1

हाय, मेरे पास एक समान समस्या है। मेरे लिए मैं vpio और remoteio के बीच स्विच कर रहा हूँ। मैंने ऑडियोकंपोनेंट इंस्टेंस डिस्प्ले() का उपयोग करके सुझाए गए प्रयासों की कोशिश की, लेकिन ऐसा करने के बाद और एक नई प्रति प्राप्त करने के बाद मैं अब उदाहरण पर प्रॉपर्टी सेट नहीं कर सकता। कोई विचार? धन्यवाद। VPIO पर – lppier

+0

, AudioComponentInstanceDispose() का उपयोग करने के बाद भी, वॉल्यूम अभी भी कम हो जाता है, कोई भी? –

4

हां, आपको voiceProcessingIO का उपयोग करते समय ऑडियो Unnit का निपटान करने की आवश्यकता है। कुछ कारणों से रिमोटियो उप प्रकार का उपयोग करते समय कोई समस्या नहीं है। इसलिए जब भी आप OSStatus -66635 (kAudioQueueErr_MultipleVoiceProcessors) प्राप्त करते हैं, तो अनुपलब्ध AudioComponentInstanceDispose() कॉल के लिए जांचें।

+1

हाय श्री जे, क्या मैं पूछ सकता हूं कि आपको ओएसएसटैटस -66635 की परिभाषा कहां मिली? आपका बहुत बहुत धन्यवाद। – lppier

+0

मैंने इस मुद्दे के बारे में सेब देव समर्थन से संपर्क किया और उन्होंने मुझे परिभाषा (अन्य जानकारी के अलावा) भेज दी है। मुझे यकीन नहीं है कि क्या आप इसे अपने आप ढूंढ सकते हैं .. मैंने नहीं किया :) पीएस: आपके अन्य प्रश्न के लिए (मैं अभी तक अन्य उत्तरों पर टिप्पणी नहीं कर सकता): मैं ऑटोडियो यूनिट को 'ऑडियोकंपोनेंट इंस्टेंसन्यू' के साथ पूरी तरह से नया शुरू करता हूं ', इसे फैलाने के बाद। यदि कोई बफर किए गए डेटा को चलाने के लिए इंतजार नहीं किया जा रहा है तो यह बहुत तेज है (मैं उन्हें निपटान से पहले ज़ैप करता हूं)। – MrJ