6

任意のサンプルレートを設定できますか? 制限事項は何ですか?

ハードウェアのサンプルレートはどうですか? それが設定されたら、ユニット間で渡される内部サンプルレートの制限は何ですか?

実際のハードウェア レートは 44.1KHz のビット シフトである必要があり、内部サンプル レートはこの元の値の下方へのビット シフト (例: 22.1KHz、11.05KHz) である必要があると推測しています。これは近いですか?

私が理解している限りでは、
1.オーディオ セッションからハードウェアのサンプル レートを設定しました。
2.システムは、指定したサンプル レートにできるだけ近いサンプル レートを設定します。 3. 次に、設定した同じプロパティのオーディオ セッションをクエリします。これにより、使用している実際のサンプル レートが得られます。

オーディオ ユニット、特に RemoteIO ユニットのレベルでは、ドキュメントには、ユニットがハードウェアに接続する 2 つのポイント (つまり、マイク (入力) バスの入力範囲とスピーカー (出力) バスの出力範囲) が記載されています。 、サンプルレートは取得できますが、設定はできません

しかし、リモート I/O ユニットの構築中にこの値にアクセスしようとすると、0 が返されます。おそらく、接続から意味のあるデータを取得する前に、ユニットを開始する必要があると思います (開始することで接続が作成される可能性があります)。したがって、ここでの解決策は、上記のように、オーディオ セッションからサンプル レートを取得し、それを使用することです。

NEED TAG: オーディオユニット

4

1 に答える 1

2

AudioSessionsについて言及しているので、iOSを使用していると思います。したがって、次のことを行う必要があります。

  1. オーディオ入力ハードウェアを確認します。AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. オーディオ セッションを「再生と録音」モードに設定します。AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...)kAudioSessionCategory_PlayAndRecord

  3. セッションをアクティブにします。AudioSessionSetActive()

  4. 優先サンプルレートを取得します。AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

次に、オーディオ処理チェーンを正しいサンプル レートでセットアップできます。

オーディオの再生に関しては、任意のサンプル レートを使用でき、API はそれをハードウェアの出力サンプル レートに変換する必要があります。明らかに、非常に高いサンプル レートを使用すると、多くのメモリと CPU 時間が消費されます。

于 2010-11-22T04:43:10.047 に答える