चैनलों की संख्या के आधार पर मेरे पास दो अलग-अलग kAudioUnitProperty_StreamFormat सेटअप था।
size_t bytesPerSample = sizeof (AudioUnitSampleType);
stereoStreamFormat.mFormatID = kAudioFormatLinearPCM;
stereoStreamFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical;
stereoStreamFormat.mBytesPerPacket = bytesPerSample;
stereoStreamFormat.mFramesPerPacket = 1;
stereoStreamFormat.mBytesPerFrame = bytesPerSample;
stereoStreamFormat.mChannelsPerFrame = 2;
stereoStreamFormat.mBitsPerChannel = 8 * bytesPerSample;
stereoStreamFormat.mSampleRate = graphSampleRate;
और
size_t bytesPerSample = sizeof (AudioUnitSampleType);
monoStreamFormat.mFormatID = kAudioFormatLinearPCM;
monoStreamFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical;
monoStreamFormat.mBytesPerPacket = bytesPerSample;
monoStreamFormat.mFramesPerPacket = 1;
monoStreamFormat.mBytesPerFrame = bytesPerSample;
monoStreamFormat.mChannelsPerFrame = 1; // 1 indicates mono
monoStreamFormat.mBitsPerChannel = 8 * bytesPerSample;
monoStreamFormat.mSampleRate = graphSampleRate;
इस ऑडियो स्ट्रीम प्रारूपों के साथ
जब एक kAudioUnitSubType_VoiceProcessingIO
AudioComponentDescription iOUnitDescription;
iOUnitDescription.componentType = kAudioUnitType_Output;
iOUnitDescription.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
iOUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
iOUnitDescription.componentFlags = 0;
iOUnitDescription.componentFlagsMask = 0;
मैं स्पष्ट रूप से ऑडियो आउटपुट में एक रुकावट के रूप में देख सकते हैं मैं/हे इकाई का उपयोग, के रूप में इस ऑडियो यूनीट से बफर आकार छोटा था।
kAudioUnitSubType_RemoteIO पर वापस स्विच करने
iOUnitDescription.componentSubType = kAudioUnitSubType_RemoteIO;
वह व्यवधान गायब हो गया।
मैं माइक्रोफोन से ऑडियो इनपुट प्रोसेस कर रहा हूं और ऑडियो बफर पर कुछ वास्तविक समय गणना लागू कर रहा हूं।
तरीकों में graphSampleRate AVSession नमूना दर
graphSampleRate = [AVAudioSession sharedInstance] sampleRate];
और हो सकता है यहाँ मैं गलत हूँ है।
अंत में कॉन्फ़िगरेशन पैरामीटर मान निम्नलिखित हैं:
स्टीरियो स्ट्रीम प्रारूप:
Sample Rate: 44100
Format ID: lpcm
Format Flags: 3116
Bytes per Packet: 4
Frames per Packet: 1
Bytes per Frame: 4
Channels per Frame: 2
Bits per Channel: 32
मोनो स्ट्रीम प्रारूप:
Sample Rate: 44100
Format ID: lpcm
Format Flags: 3116
Bytes per Packet: 4
Frames per Packet: 1
Bytes per Frame: 4
Channels per Frame: 1
Bits per Channel: 32
धन्यवाद, यह अन्य नमूना दरों के साथ भी काम करता है (मैं 16 000 का उपयोग कर रहा हूं)। फ्लैग्स कैनोनिकल प्रारूप का मतलब मैक ओएस एक्स फ्लोट 32 में -1.0 से 1.0 तक है। – sarsonj
@sarsonj: क्या आप वाकई डिफ़ॉल्ट 44100 के अलावा नमूना दर के साथ काम कर सकते हैं? मुझे 16000 या 48000 सेट करने का प्रयास करते समय kAudioUnitErr_FormatNot समर्थित नहीं किया गया। – Erfan
मै मैक पर KAudioFormatFlagsCanonical के साथ एक चैनल, 16000 का उपयोग कर रहा हूं और यह ठीक काम कर रहा है। – sarsonj