MfPackのバグ
DelphiでWASAPIを扱うためのライブラリとしてMfPackが公開されてますが、
これにバグがあるようで、全く動かない。
Contents
WinApi.CoreAudioApi.AudioClient.pas
IAudioClient.IsFormatSupported
ダウンロード時の宣言はこうなってます。
function IsFormatSupported(ShareMode: AUDCLNT_SHAREMODE;
pFormat: WaveFormatEx;
out ppClosestMatch: PWaveFormatEx): HResult; stdcall;
MSDを確認すると、第2引数のpFormatは「p」とついているだけあって、ここで渡すWAVEFORMATEXはポインタ型でないとダメなんですね。
IAudioClient::IsFormatSupported (audioclient.h) – Win32 apps | Microsoft Docs
つまり、ここの正しい宣言としてはこう。
function IsFormatSupported(ShareMode: AUDCLNT_SHAREMODE;
pFormat: PWaveFormatEx;
out ppClosestMatch: PWaveFormatEx): HResult; stdcall;
IAudioClient.GetDevicePeriod
ダウンロード時の宣言はこうなってます。
function GetDevicePeriod(out phnsDefaultDevicePeriod: REFERENCE_TIME;
phnsMinimumDevicePeriod: REFERENCE_TIME): HResult; stdcall;
MSDにはこう書いてあります。
IAudioClient::GetDevicePeriod (audioclient.h) – Win32 apps | Microsoft Docs
つまり、ここの正しい宣言としてはこう。
function GetDevicePeriod(out phnsDefaultDevicePeriod: PREFERENCE_TIME;
phnsMinimumDevicePeriod: PREFERENCE_TIME): HResult; stdcall;
これで問題なく動作しました。
どうも調べると他にもバグがあるらしい。
WASAPI AudioClient.GetMixFormat() returns AUDCLNT_E_NOT_INITIALIZED – Stack Overflow
必要に迫られたら修正していく方向で(
修正入れたら追記していこうと思ってます。
ディスカッション
コメント一覧
まだ、コメントがありません