「蒼弓ノート」 別館

ギャップレス再生って?

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン
#blognavi
 ギャップレスという言葉があちこちで聞かれるようになりました。とうとうiPod+iTunesがギャップレス再生に対応したのです。これからはギャップレス再生が広く当たり前のものになるかも知れません。

 ところで、ギャップレス再生はどのように実現しているのでしょうか?
 そもそもギャップレスにならない状況とは、そしてその原因はなんだったのでしょうか?

 原因は2つ考えられます。

 ひとつはアウトプット側の問題です。
 音楽データはD/A変換の前段階でPCMデータとなります。そのPCMデータを切れ目無く出力することができればギャップレスになるはずです。通常そのために(ダブル)バッファを用意してデータを送りつづける必要があります。それはプログラム次第で可能なことですが、逆に言うとプログラム次第では失敗します。例えばあるファイルの再生が終わる頃、次の圧縮データの読み込みが遅れた場合、再生バッファが小さすぎればデータに切れ目が生じやすくなるでしょう(ハード的にメモリが小さすぎる場合はどうしようもありませんが)。

 2つ目は非可逆圧縮データの展開時に起因する問題です。
 非可逆圧縮ではPCMデータをより荒いブロック単位で圧縮・展開処理をします。そのため、そのまま処理をすると展開時にオリジナルデータよりも長いPCMデータに変換されます。するとそこにポストギャップが生じることになるのです。他にも、エンコーダやその設定によって異なる長さのプリギャップが生じることもあるようです。そこで、デコーダは圧縮データからPCMデータへの展開時にギャップ分のデータを削除してやることでオリジナルPCMの長さを正確に再現することができます。しかし、そのためにはデコーダはエンコード時のギャップ情報(サンプル単位でのプリギャップ長と曲長)を知っている必要があります。
 つまりこの問題を解決するための条件は2つあります。ひとつはデコーダがエンコーダのギャップ情報を知る仕組みがあること。もうひとつは、デコーダがそのギャップ情報を使ってギャップを削除することです。

以上の条件を満たすことでギャップレス再生は可能になります。ただし、可逆や無圧縮データの再生の場合は2の要件は無視することができます。


カテゴリ: [音声圧縮] - &trackback() - 2006年09月13日 22:55:33
  • ストリームの終端でブロック化できずに余ったデータにパディングを追加してブロック化した事で発生するポストギャップの他に、プリギャップが発生するのと同じ理由で発生するポストギャップもあるような気がします。 -- っき (2006-09-22 17:14:04)
  • プリギャップはエンコーダによって変化しますが、ポストギャップは通常、曲の長さに依存します(パディングの量はエンコーダ側の選択も影響しますが)。なので同じ理由というのはよく解りません。 -- 蒼弓 (2006-09-23 00:00:17)
  • nフレームできっちり収まる音声があったとして、その音声の最後と次の音声の最初をギャップレスでなめらかに繋げる為には、n+1フレーム目が必要になる場合があるのではないか?と思ったのですが、こちらの勘違いだったようです。すみませんでした。 -- っき (2006-09-23 07:07:11)
名前: コメント:
#blognavi
記事メニュー
目安箱バナー