2

排他モードの特定のオーディオ デバイスでサポートされている出力形式を調べようとしています。これを行うために、IAudioClient->IsFormatSupported() を使用しています。これは、ドキュメントによると、これに使用できるはずです。残念ながら、デフォルトの 2 チャンネル、44.1khz オーディオを除いて、渡そうとするほぼすべてのフォーマットに対して AUDCLNT_E_UNSUPPORTED_FORMAT を返します。

実際に audioclient を初期化しようとすると、成功しても IsFormatSupported() で失敗したフォーマットがあります。

すべてのフォーマットを初期化しようとするだけでは、他のアプリケーションからのオーディオが停止する可能性があるため、オプションではありません。

他の誰かがこの動作を見たことがありますか、または特定のオーディオ デバイスでサポートされている形式を見つける別の方法があるかどうかを知っていますか?

4

1 に答える 1

1

私もこの行動を見たことがあります。IsFormatSupported は、Windows の再生デバイス設定で「サポート」とマークされているもののみを受け入れるようですが、Initialize は実際に可能かどうかを実際にドライバーに尋ねるようです。

私の特定の状況では、HDMI を出力として使用する Xoxar HDAV1.3 セットアップがあります。スピーカーと S/PDIF パススルー デバイスの 2 つの再生デバイスが常に利用可能です。たとえば、S/PDIF 再生デバイス用に 6 チャンネルを要求しようとすると、IsFormatSupported はそれを拒否します (理論的には、S/PDIF は 2 つしかサポートしておらず、設定で確認できるのはそれだけです)。ただし、Initialize の呼び出しは成功します。そして動作します(結局、6チャンネルがサポートされているHDMIになります)。誤解を招くデバイス名について話してください!

残念ながら、この問題を回避する実用的な方法はありません。

于 2012-06-02T07:42:38.070 に答える