1

ALSAサウンドライブラリについて質問があります。

最初に、私のような質問に対する通常の回答は「JACKを使用する」であり、おそらくJACKを使用できないため、その回答は役に立たないことを述べておきます。私はAndroidデバイス( NDKではありませんが実際にはネイティブ)でネイティブLinuxプログラムを実行していますが、収集したものから、一部のlibcとposixには互換性がないため、JACKはAndroidでは機能しません。

質問:

1)a)キャプチャされたサンプルの読み取りとb)サンプルの再生のために、2つの異なるスレッドを使用できますか?私が見たすべてのALSA「全二重」の例では、ブロッキング機能を備えたサウンドカードからの読み取りと書き込みを交互に使用しています。これは、特にプログラムがそれ以上のことを行うことになっている場合は、あまりうまく機能しないようです。

2)私が理解したように、ALSAは、Windowsオーディオミキサーのように、さまざまなアプリケーションで再生されるオーディオをミキシングします。オーディオデバイスへの排他的アクセスを取得して、ダイナミックレンジのミキシングや劣化が発生することなく、私のアプリケーションがオーディオを再生する唯一のアプリケーションであることが保証されるようにすることは可能ですか?

4

1 に答える 1

2
  1. 2つの再生/キャプチャデバイスに2つのスレッドを使用できます(ドキュメントを参照)。

  2. dmixALSAは、プラグインが使用されている場合にのみオーディオをミキシングします。デフォルトでは、これはほとんどのデスクトップサウンドカードに対してのみ構成されています。

    hwまたはplughwデバイスを開くと、ソフトウェアのミキシングはバイパスされます。

    (1つのストリームのみが再生されている限り、データが劣化することはありません。)

于 2013-02-05T14:40:08.953 に答える