トップページ > 過去ログ > 記事閲覧
メモリに展開済みの音声データを使用する為には?
名前:Dixq 日時: 2010/09/16 21:29

いつもお世話になっています。 今回既にメモリに展開済みの無圧縮音声データをDXライブラリで 使用する方法についてお聞きしたく質問させていただきました。 現在マイクデバイスから直接自前で取ってきた音声データがあります。 サンプリング周波数44100、1サンプル16bit、モノラルです。 このデータをwavのヘッダを付けてファイルに保存するとwavとして再生できる状態です。 今現在こうしてwavファイルを作り、ファイル出力し、それをLoadSoundMemで読み込んで使用しているので時間がかかってしまいます。 そこで、、メモリに展開済みの音声データのポインタを渡してデータ情報を書き換えるなどする事で、 DXライブラリで使える音声データハンドルが無駄なく作れないでしょうか? LoadSoundMemData( 音声データのポインタ, 音声データのサイズ, サンプリング周波数, 1サンプルあたりのビット数, チャンネル数, ...., ); みたいな関数があって、LoadSoundMemと同じようにデータハンドルが返って来る関数が作れないかなと思っています。 何かアドバイス頂けると幸いです。 よろしくお願いいたします。

Page: 1 |

Re: メモリに展開済みの音声データを使用する為には? ( No.1 )
名前:いっち 日時:2010/09/17 20:19

LoadSoundMemByMemImageBase とかどうでしょう?やはりヘッダをつける必要はありそうですが・・・。
Re: メモリに展開済みの音声データを使用する為には? ( No.2 )
名前:管理人 日時:2010/09/17 22:27

いっちさんがご返答されていますが、一応私も・・・ 非公開関数の LoadSoundMemByMemImage を使用すれば、メモリ上に展開された wavファイルから サウンドハンドルを作成することができます // メモリ上に展開されたファイルイメージからハンドルを作成する int LoadSoundMemByMemImage( void *FileImageBuffer, int ImageSize ) ; ただ、サウンドファイルをそのままメモリ上に格納されていることを前提としていますので、 生の波形データだけしかない場合はwavファイルのヘッダ部分を付け加える必要があります なので、 まずマイクデバイスから取得したデータを格納するメモリ領域を確保して、先頭部分に wavファイルのヘッダを書き込みます マイクデバイスから取得したデータ自体は確保したメモリ領域の先頭アドレスから wavファイルのヘッダサイズ分だけ進めた箇所にします これで確保したメモリ領域上にwavファイルを丸々メモリに読み込んだ場合と同じ状態が できますので、後は確保したメモリ領域の先頭アドレスを LoadSoundMemByMemImage に渡します これでディスク上にwavファイルを作成しなくてもサウンドハンドルが作成できます よろしければお試し下さい m(_ _)m
Re: メモリに展開済みの音声データを使用する為には? ( No.3 )
名前:Dixq 日時:2010/09/18 18:42

> いっちさん > 管理人さん ご回答ありがとうございます。 なるほど、DxLibのヘッダを探せばありましたね、失礼しました; wavのヘッダは付けて保存していたので、ヘッダを付ければよいだけと解り非常にありがたいです。 これで高速に処理が可能になりそうです。ありがとうございます。

Page: 1 |