やっぱりWAVEFORMATEXTENSIBLEの指定ミスだった。

公開:2011-10-26 05:17
更新:2020-02-15 04:36
カテゴリ:wasapi,c++,dawもどきの作成,windows,audio,windows api

やっぱりWAVEFORMATEXTENSIBLEのパラメータ指定ミスだった。WAVE_FORMAT_EXTENSIBLEのFormat.wFormatTagにWAVE_FORMAT_EXTENSIBLE、SubFormatにKSDATAFORMAT_SUBTYPE_PCMを設定する必要がある。Format.wFormatTagにWAVE_FORMAT_PCMを指定してはいけない。

PlayPcmWinのソースコードやMSDN、GetMixFormatの戻り値を見てわかったのは

である。結果は下記となり、PlayPcmWinとの結果が一致した。

スピーカー (2- E-MU E-DSP)
|share|bits:08|vbits:08|channel:02|rate:044100|OK|
|exc  |bits:16|vbits:16|channel:02|rate:044100|OK|
|share|bits:16|vbits:16|channel:02|rate:044100|OK|
|exc  |bits:16|vbits:16|channel:02|rate:048000|OK|
|exc  |bits:16|vbits:16|channel:02|rate:088200|OK|
|exc  |bits:16|vbits:16|channel:02|rate:096000|OK|
|exc  |bits:16|vbits:16|channel:02|rate:176400|OK|
|exc  |bits:16|vbits:16|channel:02|rate:192000|OK|
|share|bits:24|vbits:24|channel:02|rate:044100|OK|
|exc  |bits:32|vbits:24|channel:02|rate:044100|OK|
|share|bits:32|vbits:24|channel:02|rate:044100|OK|
|exc  |bits:32|vbits:24|channel:02|rate:048000|OK|
|exc  |bits:32|vbits:24|channel:02|rate:088200|OK|
|exc  |bits:32|vbits:24|channel:02|rate:096000|OK|
|exc  |bits:32|vbits:24|channel:02|rate:176400|OK|
|exc  |bits:32|vbits:24|channel:02|rate:192000|OK|
|exc  |bits:32|vbits:32|channel:02|rate:044100|OK|
|share|bits:32|vbits:32|channel:02|rate:044100|OK|
|exc  |bits:32|vbits:32|channel:02|rate:048000|OK|
|exc  |bits:32|vbits:32|channel:02|rate:088200|OK|
|exc  |bits:32|vbits:32|channel:02|rate:096000|OK|
|exc  |bits:32|vbits:32|channel:02|rate:176400|OK|
|exc  |bits:32|vbits:32|channel:02|rate:192000|OK|
|share|bits:32|vbits:03|channel:02|rate:044100|OK|

ソースコード

次は設定用のダイアログを作り、デバイスを変更できるようにコードを修正する。