高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



*SND 08 - Sound Manager 経由で圧縮されている WAVE ファイルを再生する

(96 年 9 月 27 日)

Q: Mac で圧縮された WAVE ファイルを再生することはできますか。

A: もちろんです。ただし、Sound Manager のデフォルトの機能をそのまま使って再生を行うというわけにはいきません。

圧縮されていない WAVE サウンドの場合と同様、デベロッパはサウンドヘッダのパーシングを行う必要があります。これにより、Sound Manager に直接渡すことのできるデータが準備できます。

WAVE が オlaw を使ってフォーマットされている場合、プログラムの側では特に何もする必要はありません。オlaw ファイルはバイトごとに処理され、AIFF または WAVE ファイルのように、同じデータの間に endian の違いもないため、標準的な Mac オlaw デコンプレッサは特に問題なくデータを処理することができます。

ところが、IMA-ADPCM 圧縮された WAVE ファイルは、オlaw WAVE ファイルのように簡単に再生することはできません。これは、同じサウンドを Mac の IMA コンプレッサを使って圧縮した場合と、Windows の IMA-ADPCM コンプレッサを使って圧縮した場合とで、実際のデータストリームに違いがあるためです。

Windows の IMA-ADPCM で圧縮された WAVE ファイルは、カスタムデコンプレッサを必要とするサウンドのように取り扱う必要があります。プログラムの側で、すべてのデコンプレッション処理を行います。これは、Mac に対応したデコンプレッションコンポーネント (どのプログラムでも汎用的に使用できる) を開発するか、プログラムにデコンプレッション機能を組み込みことによって実現できます。

独自の 'sdec' を書いた場合は、圧縮サウンドを再生する任意の Sound Manager のルーチンを使用することができます。ただし、サウンドが独自のコンプレッサを使って圧縮されたということを、必ずサウンドヘッダで宣言するようにしてください。そうすれば、Sound Manager は独自の 'sdec' を呼び出します。

デコンプレッションコンポーネントの開発を選択しなくてもサウンドを完全にデコンプレスできる場合は、圧縮されていないサウンドのバッファを要求する任意の Sound Manager の呼び出しを使用することができます。サウンドを完全にデコンプレスできないときは、それをチャンク単位でデコンプレスし、SndPlayDoubleBuffer または bufferCmd を使って、それぞれのチャンクを再生する必要があります。


[ Technical Q&A's : Graphics & Media : QuickTime : Sound : SND08 ]