お世話になります。64bit版DXライブラリ(3.15e)で開発している者です。 mpegやaviなどは環境によって安定性確保が難しいため、最近.ogvに切り替えました。 ところが、mpeg/avi/mp4などに比べて動画再生時のCPU使用率が異様に高いのが気になります。(CPU 1コア回りっぱなし) 「再生が重い」からではなく、「ウェイトなしでアイドル時もループが回りっぱなし」のような感じです。 その.ogvはFirefoxで再生させてもCPU使用率は数パーセント程度です。これは現時点で仕様でしょうか? ※これはついでですが、0バイトの.oggを読み込もうとすると-1が返ってきますが、 その時にVisualStudio2015のデバッグ出力(右下)のところにダンプがどかーーーっと出力されます。 これは単純に-1を返すだけでよいのでは?と思いました。
> 「再生が重い」からではなく、「ウェイトなしでアイドル時もループが回りっぱなし」のような感じです。 ご指摘の通り、再生処理用のスレッドでウェイト無しでループを回しっぱなしにしてしまっていました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > これは単純に-1を返すだけでよいのでは?と思いました。 DXライブラリの内部処理で開けなかったサウンドファイルは最終的に DirectShow で開けないかを試みるので、 その際にお使いのPCにインストールされている何かしらのコーデックから出力が発生しているのかもしれません ( 手元の環境ではダンプには特に何も出力されませんでした ) 確かに 0バイトの .ogg でしたら何の意味も無いファイルだと分かりますが、 1バイトの .ogg の場合や、2バイトの .ogg、16バイトの ,ogg など、どこまでDXライブラリ内部で 「意味の無いファイルかどうか」の判定をするべきかの区切りが付けられないので、一律で最終的には DirectShow に渡し、それでも開けなかったら -1 を返すようにしています ( 因みに拡張子でのフォーマット判定はしていません )
確認いたしました。対応ありがとうございました。 0バイト .oggの件もご回答ありがとうございました。