問題タブ [novocaine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - AudioConverterRef サンプルレート変換 (iOS)
サウンドの録音と再生に「novocaine」ライブラリを使用する voip アプリを作成します。サンプルレートを 8kHz に設定しました。このサンプル レートは、オーディオ ユニットの AudioStreamBasicDescription の novocaine で、オーディオ セッション プロパティ kAudioSessionProperty_PreferredHardwareSampleRate として設定されます。優先ハードウェア サンプル レートを設定しても、実際のハードウェア サンプル レートが変更される保証はないことは理解していますが、iPhone6s および iPhone6s+ (ルートがスピーカーに変更された場合) を除くすべてのデバイスで機能しました。iPhone6s(+)とスピーカー経路でマイクから48kHzの音を受信。というわけで、この48kHzの音をどうにかして8kHzに変換する必要があります。ドキュメントでは、この場合に AudioConverterRef を使用できることがわかりましたが、使用に問題があります。
サンプル レートの変換に AudioConverterFillComplexBuffer を使用していますが、常に -50 OSStatus を返します (関数に渡された 1 つ以上のパラメーターが無効でした)。これは私がオーディオコンバーターを使用する方法です:
inputProcPtr コールバックは呼び出されません。別のフレーム数を設定しようとしましたが、それでも OSStatus -50 を受け取ります。
1) AudioConverterRef の使用はサンプル レート変換を行う正しい方法ですか、それとも別の方法で行うことができますか?
2) 変換の実装の何が問題になっていますか?
よろしくお願いします