問題タブ [waveout]

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.

0 投票する
1 に答える
299 参照

c++ - WAVE_FORMAT_IEEE_FLOAT で WAVEFORMATEXTENSIBLE を使用すると、waveOutOpen は WAVERR_BADFORMAT を返します。

WAVEFORMATEXWindows でオーディオを再生するために WaveOut を使用していWAVE_FORMAT_IEEE_FLOATます。プログラムは C++ で書かれ、MinGW でコンパイルされます。これはすべて正しく機能しています:

https://github.com/Raptor007/AutoDJ/blob/60f4debca2103e669a5d1b822b04c73cdcdaf05b/AutoDJ.cpp#L2412-L2435

今、私はクアドラフォニックマルチチャンネル出力に拡張しようとしてWAVEFORMATEXTENSIBLEいますWAVEFORMATEX. これらの変更が適用された関連コードは次のとおりです。

Format.nChannels = 2; dwChannelMask = 0x3;ステレオに設定すると、 waveOutOpenIEEE-float 形式を使用した最初の試みは return codeWAVERR_BADFORMATで失敗しますが、PCM 形式を使用した 2 回目の試みは成功します。

Quadraphonicを試しFormat.nChannels = 4; dwChannelMask = 0x33;てみると、IEEE-float と PCM の両方のwaveOutOpen試行が で失敗しWAVERR_BADFORMATます。

ただし、設定Format.cbSize = 0;すると、いずれかの形式の 2 チャネルですべてが正しく機能します。これは、基本的に以前に行っていたことであるため、理にかなっていWAVEFORMATEXます。ただし、これは 4 チャンネルでは機能しません。

ここで何が間違っていますか? 私の最終的な目標は、クアドラフォニックまたは IEEE-float 形式の 5.1 サラウンド出力です。ステレオ IEEE-float 出力を使用して動作させることさえできない理由に特に困惑してWAVEFORMATEXTENSIBLEいますが、 では完全に動作しWAVEFORMATEXます。