私はVoiceChatモードを使用するたびに自分のアプリでオーディオが低すぎるという問題を抱えていたので、ばかチェックとして、オーディオユニットプログラミング用のAppleのサンプルコード(SpeakHere)をダウンロードし、そのアプリにVoiceChatモードを追加しました。結局のところ、問題はそこでも発生します。そのモードで実行すると、すべてが目的のボリュームの約20%になります。
PlayAndRecordカテゴリが設定された直後に、SpeakHereController.mmの267行目にこのコードを追加しました。
// set mode -- this results in audio being too soft
UInt32 mode = kAudioSessionMode_VoiceChat;
error = AudioSessionSetProperty(kAudioSessionProperty_Mode, sizeof(mode), &mode);
if (error) printf("couldn't set audio session mode!");
スピーカーフォンを使用するためのエコーキャンセレーションを取得するために、RemoteIOでVoiceChatモードを使用しています。VoiceProcessingIOは(一種の)動作しますが、古いiPhone(3GS)のパフォーマンスは非常に悪く、使用できません。そのため、代わりにRemoteIOを使用しています。スピーカーのルートが正しいことを確認しました。測定モードを設定して手動でゲインを上げてみましたが、改善が見られません。
AudioSessionモードを使用するときに大音量のドロップオフを防ぐための提案はありますか?