オーディオ データのロード
DirectMusic オブジェクトの多くは、パフォーマンスに組み込む前に、ファイルまたはリソースからロードしなければならない。このようなオブジェクトの列挙およびロードを管理するには、IDirectMusicLoader8 インターフェイスを使う。また、ロードが一度で済むようにオブジェクトをキャッシュするためにも、このインターフェイスを使う。
注 信頼できないソースからデータをロードしてはならない。DirectMusic データ ファイルをロードするとオブジェクトが作成され、リソースの過剰な消費によりパフォーマンスの低下やシステム障害が発生する可能性がある。
アプリケーションが使えるローダーのインスタンスは、一度に 1 つだけである。1 つのグローバル ローダー オブジェクトを作成し、ロードがすべて終了するまでオブジェクトを解放しないようにする。この方法により、オブジェクトが効果的に検索およびキャッシングされる。
オブジェクトをメモリまたはストリームからロードする場合には、アプリケーションは、ローダーが解放されるまでデータにアクセスしてはならない。キャッシュおよび他の内部メカニズムのため、ローダーが後でデータにアクセスを試みる場合がある。新しいデータをロードするには、常に、新しいバッファを割り当てるか、または新しいストリームを作成する。
DirectMusic における IStream の実装が、ソースからのデータをストリーミングする。データの解析は、IPersistStream の実装を通して、さまざまなオブジェクト自身によって処理される。標準的な DirectMusic データだけを扱う場合は、これらのインターフェイスを直接使用する必要はない。
他のオブジェクトによって参照されるオブジェクトのロードは、透過的に処理される。たとえば、DirectMusic Producer ファイルからロードされるセグメントに、他のファイルにある WAV サウンドへの参照が含まれているものとする。セグメントにおける IPersistStream::Load の実装は、参照を見つけると、ストリーム オブジェクトから IDirectMusicGetLoader8 インターフェイスを取得する。このインターフェイスを使って、ローダー オブジェクトへのポインタを取得する。次に、IDirectMusicLoader8::GetObject を呼び出して、WAV サウンドをロードする。
ローダーの使い方の詳細については、次のトピックを参照すること。
- ローダーの検索ディレクトリの設定
- ディレクトリでのオブジェクトの検索
- オブジェクトの列挙
- ファイルからのオブジェクトのロード
- リソースまたはメモリ アドレスからのオブジェクトのロード
- コンテナ
- オブジェクト記述子の取得
- キャッシュの管理
- ガベージ コレクション
- オブジェクトの設定
参照