トップページ > 記事閲覧
WASAPI利用時のPlaySoundMemの挙動について
名前: 日時: 2020/02/25 02:08

WASAPI利用時のPlaySoundMemの挙動について質問があり、スレッドを立てさせていただきます。 PlaySoundMemの説明に、第3引数TopPositionFlagにFALSEを与えた場合、 「最後に StopSoundMem をした位置か、SetSoundCurrentTime で指定した位置から再生される」とあります。 実際DxLib Ver3.20fにてそのようにふるまうことを確認しています。 しかしDxLib Ver3.21dでは、TopPositionFlagにFALSEを与えた場合の挙動が変わっているようです。 具体的な挙動を表現すると、「StopSoundMemを呼び出した後は音声は出力されないが、(再生位置を保存せずに)内部的に再生が続いており、 PlaySoundMemを呼び出すと再び音声が出力される(StopSoundMemを呼び出した位置よりも進んだところから再生される)」という状態です。 また上記の挙動はWASAPIを利用している場合のみ発生するようです。 (SetEnableWASAPIFlag(FALSE)を実行することで、以前と同じ挙動になります。) 以上のようなWASAPI利用時のPlaySoundMemの挙動は意図したものでしょうか? 以下、検証に利用したプログラムを載せます。 (利用したwavファイルは長さ約40秒のサンプリングレート44.1kHz ステレオ 32bitPCMでした。) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int SHandle; // これを実行することで期待通り(Ver 3.20fと同様)の挙動になる // SetEnableWASAPIFlag(FALSE); if (DxLib_Init() == -1) return -1; SHandle = LoadSoundMem("test.wav"); PlaySoundMem(SHandle, DX_PLAYTYPE_LOOP); WaitTimer(5000); // 約5秒再生したところで音声の出力が停止する StopSoundMem(SHandle); WaitTimer(5000); // WASAPI利用時、音声の先頭から約10秒の部分から再生される // WASAPI非利用時とVer3.20fでは音声の先頭から約5秒の部分から再生される PlaySoundMem(SHandle, DX_PLAYTYPE_LOOP, FALSE); WaitTimer(5000); DeleteSoundMem(SHandle); DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: WASAPI利用時のPlaySoundMemの挙動について ( No.1 )
名前:管理人 日時:2020/02/26 01:27

ご指摘ありがとうございます 乗せていただいた検証用プログラムで手元でも現象を確認できました 停止した位置から正常に再生を再開できるように修正したバージョンを アップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: WASAPI利用時のPlaySoundMemの挙動について ( No.2 )
名前:空(解決) 日時:2020/03/03 23:16

返信が遅くなり申し訳ありません。 修正版にて期待通りの挙動になったことを確認しました。 対応ありがとうございました。m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存