FC2ブログ

ホーム > 2011年04月

2011年04月月度記事一覧

MP3ファイルの再生 第1部



ウィンドウズのオーディオコーデックは、ACM(Audio Compression Manager)によって管理されており、標準でデコードのみ可能なMPEGLAYER3コーデックが装備されています。本章ではこのACMを介してMP3ファイルのデコードを行い、同時に再生するプログラムについて解説します。


...続きを読む

MP3ファイルの再生 第2部



MP3ファイルの読み込み手順は以下の通りです。

  1. MP3ファイルを開いて、ID3v2ヘッダー/ID3v1フッターの有無を調べます。
  2. フレームヘッダーを探し出し、そのデータからMPEGLAYER3WAVEFORMAT構造体を作成します。同時に一番最初のフレームヘッダーの先頭位置をMP3データの先頭位置として保存し、ファイルサイズからこの先頭位置とフッターがあればフッターサイズを差し引いて、MP3データサイズを算出します。
  3. 作成したMPEGLAYER3WAVEFORMAT構造体から、デコード後のWAVEFORMATEX構造体を取得します。
  4. ACMストリームをオープンします。
  5. MP3データのブロックサイズから変換後のWAVE音源データのブロックサイズを取得します。
  6. MP3の総データサイズから変換後のWAVE音源の総データサイズを取得し、WAVE音源データのブロックサイズの平均値を算出します。(再生中における再生位置変更時に、ファイル上での相対位置を算出するために必要になります。)
  7. 作業用バッファを確保して、ACMストリームヘッダーを作成します。
  8. 先に取得したWAVEFORMATEX構造体を元にWAVE出力デバイスを開きます。
  9. WAVE出力デバイスからのコールバックイベントから呼び出されるオーバーライド関数(StreamIn関数)において、MP3ファイルからMP3データを読み込み、WAVE変換して得られた音源データをダブルバッファに書き込みながら演奏していきます。
  10. ファイル末尾まで読み込むか、演奏停止イベントがあればWAVE出力デバイスを停止してから閉じます。
  11. 次のファイルが読み込まれるか、デストラクタが呼び出されれば、ACMストリームヘッダーを削除してから、ACMストリームをクローズします。



...続きを読む

すべての記事一覧

ホームへ戻る > 2011年04月

タグクラウド
ブロとも申請フォーム

この人とブロともになる

ブロとも一覧

このページの先頭へ戻る