トップページ > 過去ログ > 記事閲覧
Ogg Vorbisの再生位置がおかしくなる
名前:CPL 日時: 2011/01/18 21:05

Oggファイルをオープンし、ループ位置を設定した状態で再生させると、 ループ直後からGetCurrentPositionSoundMemが大きな負の値を返すようになります。 Oggファイル以外では正常に動作します。 OS:Windows 7 64bit コンパイラ:VC++ 10.0 #include "DxLib.h" #include <Windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリの初期化 ChangeWindowMode(true); DxLib_Init(); SetDrawScreen(DX_SCREEN_BACK); // 音楽の再生開始 int sound = LoadSoundMem("music.ogg"); SetLoopSamplePosSoundMem(1000000, sound); ChangeVolumeSoundMem(30, sound); PlaySoundMem(sound, DX_PLAYTYPE_LOOP); // メインループ while (ProcessMessage() == 0) { ClearDrawScreen(); clsDx(); printfDx("再生位置:%d\n", GetCurrentPositionSoundMem(sound)); ScreenFlip(); } DeleteSoundMem(sound); DxLib_End(); }

Page: 1 |

Re: Ogg Vorbisの再生位置がおかしくなる ( No.1 )
名前:いっち 日時:2011/01/19 00:15

私の環境(XP32bit)で簡単な検証を行ってみましたが、特にそれらしい事象は見受けられませんでした。 事象の発生するデータをご提供いただくことは可能でしょうか?
Re: Ogg Vorbisの再生位置がおかしくなる ( No.2 )
名前:CPL 日時:2011/01/19 12:26

手元のoggファイルの中でも、現象の発生するものとしないものがありました。 こちらが、問題のデータです。 www1.axfc.net/uploader/He/so/309550
Re: Ogg Vorbisの再生位置がおかしくなる ( No.3 )
名前:いっち 日時:2011/01/19 19:24

ご提供ありがとうございます。 私の環境でも事象の確認が出来ました。 私では詳しいことは分かりませんので、他の方の見解をお待ち下さい。
Re: Ogg Vorbisの再生位置がおかしくなる ( No.4 )
名前:T 日時:2011/01/19 21:10

Vista(32bit)上で、VC++ 2008および2010で試しましたが、問題ありませんでした 環境次第なのでしょうかね…
Re: Ogg Vorbisの再生位置がおかしくなる ( No.5 )
名前:いっち 日時:2011/01/19 22:38

うーん、なんでしょう。DXライブラリのバージョンでしょうか? 少し検証してみましたが、3.02b以前では発生しないようでした。 また、SetSoundCurrentTime などで再生位置を指定し、PlaySoundMem の第3引数に FALSE を指定した場合にも 再現しないことがあるようでした(こちらは必ずというわけではないようです)。
Re: Ogg Vorbisの再生位置がおかしくなる ( No.6 )
名前:T 日時:2011/01/20 00:19

いっちさんの仰るとおりでした 3.02から更新してなかったので紛らわしいことをしてしまいました。すみません…m(_ _)m 確かに3.04dでは件の事象が発生するようです
Re: Ogg Vorbisの再生位置がおかしくなる ( No.7 )
名前:管理人 日時:2011/01/23 23:18

ご報告ありがとうございます アップしていただいたサウンドファイルと掲載していただいたサンプルプログラムで 私の環境でも再現しました( 良い曲ですね(・・; ) 恐らく修正できたと思いますので、よろしければこちらのバージョンをお試しになってみてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) <原因について> プログラム的には Ver3.02b 以前からあったバグでしたが、ストリーミング再生用の バッファの端がループタイミングになった場合のみに発生する不具合で、最近のバージョンまで ストリーミング再生用のバッファをかなり長く確保していたので中々条件が揃わず 不具合が発生しなかったということでした( 最近処理にもう少し余裕があることが 分かったので、このバッファのサイズを小さくしました ) > いっちさん、Tさん ご検証ありがとうございます 以前のバージョンでは問題なかったというご情報でストリーミング再生用バッファのサイズの差異が 不具合が出たり出なかったりという違いを生んでいると気づくことができました
Re: Ogg Vorbisの再生位置がおかしくなる ( No.8 )
名前:CPL 日時:2011/01/25 18:09

修正されたバージョンで試してみたところ、問題なく動作させることができました。 対応ありがとうございました。

Page: 1 |