トップページ > 過去ログ > 記事閲覧
SetCreateSoundDataTypeについて
名前:コーラ 日時: 2010/04/27 15:19

//1 se[0] = LoadSoundMem( "se001.ogg" ) ; se[1] = LoadSoundMem( "se002.ogg" ) ; se[2] = LoadSoundMem( "se003.ogg" ) ; se[3] = LoadSoundMem( "se004.ogg" ) ; (続く) //2 bgm[0] = LoadSoundMem("bgm001.ogg"); このような効果音、BGMロードを行っている場所があります。 今、BGMをストリーム再生にするため、2の地点に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; を入れてみると、入れなかった時に比べてメモリの使用量が落ちるのが確認できました。 (ストリーム再生指定なので期待通りの結果だと思います) その後、それを削除してから、今度は試しに1の地点に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; を入れてみると、2の地点にそれを入れた時よりもメモリの使用量が多くなっています。 これはなぜなのでしょうか? この場合、1から下の全部がストリーム再生になるので、メモリ使用量はさらに落ちると思うのですが・・・。 直後のLoadSoundMemにだけ適用されるのかとも思いましたが、どうもそれとは違うようです。

Page: 1 |

Re: SetCreateSoundDataTypeについて ( No.1 )
名前:管理人 日時:2010/05/01 17:41

ストリーム再生はストリーム再生用のバッファとして最新バージョンでは1秒、以前のバージョンでは6秒分確保していますので、 この時間よりも再生時間が短いサウンドファイルを DX_SOUNDDATATYPE_MEMNOPRESS 以外で読み込んだ場合は DX_SOUNDDATATYPE_MEMNOPRESS で 読み込んだ場合よりもメモリの使用量は多くなります 更に MP3 ファイルを DX_SOUNDDATATYPE_MEMNOPRESS 以外で読み込んだ場合は ACM でのデコードに成功した場合は MP3 ファイルそのもののファイルサイズ分だけ ACM でのデコードに失敗して DirectShow でのデコードをした場合は MP3 ファイルを wav ファイルに変換したときと同じサイズ分だけ 再生用バッファと別にメモリを喰います、つまり 3MB の MP3 ファイルを DirectShow で読み込むことになった場合は 30MB 程メモリを喰います これは ACM と DirectShow の仕様とDXライブラリが望む精度の関係上避けられません、 なので、MP3 はDXライブラリと相性が悪いです
Re: SetCreateSoundDataTypeについて ( No.2 )
名前:コーラ 日時:2010/05/03 06:19

回答ありがとうございます ということは、短いファイルはリファレンスにあるように DX_SOUNDDATATYPE_MEMNOPRESS にしたほうがいいのですね
Re: SetCreateSoundDataTypeについて ( No.3 )
名前:管理人 日時:2010/05/03 22:24

はい、その通りです

Page: 1 |