チャンネルの数に基づいて2つの異なる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;
をI/Oユニットを使用する場合、私は明確として、オーディオ出力の中断を確認することができバッファサイズはこのAudioUnitのものよりも小さかった。
バック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を使用しています)。 FlagsCanonicalフォーマットは、MAC OS X Float32で-1.0から1.0までの範囲を意味します。 – sarsonj
@sarsonj:デフォルトの44100以外のサンプルレートで動作させることはできますか?私は16000または48000を設定しようとするとkAudioUnitErr_FormatNotSupportedを取得します。 – Erfan
MacでkAudioFormatFlagsCanonicalと1つのチャンネル、16000を使用していて、正常に動作しています。 – sarsonj