CD Extra解析情報

最終更新: 1998.12.18


目次

  1. はじめに
  2. ディレクトリ構造
  3. 基本情報ファイル
  4. 副情報ファイル
  5. ジャケット画像ファイル
  6. 各ファイルの配置と検索について
  7. 関連プログラム
  8. ToDo
  9. 参考文献・リンク集

はじめに

CD Extraとは、1枚のCDにCD-DAとCD-ROMを共存させるための仕様、 およびそれに基づいて作られたCDのことです。 以前はCD Plusと呼ばれていましたが、商標の関係で最近はCD Extraという呼称に統一されつつあります。

CD-DAとCD-ROMが共存しているCDのことを一般にEnhanced CDといいます。 従来、このような目的には、 ミックスモードCD(トラック1をCD-ROMとしトラック2以降をCD-DAとする)や、 CD-ROM Ready(トラック1より前にCD-ROMトラックを収容する)などの方法が用いられてきましたが、 誤ってオーディオCDプレイヤーでCD-ROMトラックを再生するおそれがあるという問題がありました。

CD Extraでは、マルチセッションを採用し、 セッション1の各トラックにCD-DAを、 セッション2のトラック1にCD-ROMを収容しています。 オーディオCDプレイヤーはセッション1しか認識しないため、 誤ってCD-ROMトラックを再生するおそれがなく、 通常のオーディオCDと全く同様に再生できます。 ただし、CD-ROMトラックにアクセスするためには、 CD-ROMドライブとOSがCD Extraに対応していなければなりません。

CD Extraではさらに、上記のような物理的フォーマットの規定だけでなく、 CD-DA部に関する各種の情報(ディスク名・曲名・ジャケット画像など)を CD-ROM部に格納することおよびそのフォーマットも規定しています。 これらのデータを活用すれば、再生中にディスク名や曲名を表示したり、 CDのデータベースを作成したりといった応用が期待できます。

しかし、このフォーマットについて詳しく解説した資料はほとんど見当たらず、 かといってBlue Bookを入手することも一般には困難と思われます。 そこで、本稿ではCD-ROM部に格納された情報について解析した成果を示します。

なお、解析に使用したCD Extraは以下のタイトルです。

本稿の内容は、限られたサンプルに基づく独自の解析の結果ですので、 その内容がBlue Bookの規定と合致している保証はありません。 使われている用語・名称などについても同様です。


ディレクトリ構造

CD ExtraのCD-ROM部の物理フォーマットはCD-ROM/XA Form-2です。 論理フォーマット(ファイルシステム)は一般的なISO 9660フォーマットです。 Mac OS用のHFSを同居させた、いわゆるハイブリッド仕様とすることも可能です。

CD-ROM部には、制作者が提供するデータ(画像・動画・音声など)に加えて、 以下のようなファイルおよびディレクトリが含まれています。

/ ---+--- AUTORUN.INF
     |
     +--- CDPLUS/ -----+--- INFO.CDP
     |                 |
     |                 +--- SUB_INFO.*
     |
     +--- PICTURES/ ---+--- JACKET01.00J
                       |
                       +--- JACKET01.00N
                       |
                       +--- JACKET01.00T
                       |
                       +--- JACKET01.00S

AUTORUN.INFは、Windows用の自動実行情報です。 内容についてはWindows関係の資料に譲ります。

CDPLUSディレクトリには、ディスク名・曲名・歌手名などの情報が含まれます。

PICTURESディレクトリには、ジャケット画像が含まれます。


基本情報ファイル

INFO.CDPファイルは、2048バイトのファイルで、 常にCD-ROM部の相対セクタ75に存在します。

このファイルのフォーマットはおおむね以下のようになっています。

INFO.CDPファイルのフォーマット
オフセット内容
0string [28]ID "CD_PLUS 0100" (余りは空白)
28byte [20]01 00 01 00 01 以下00
48string [2]言語コード(ASCII英小文字2文字)
50uint32beSUB_INFO.*ファイルの相対LSN (通常76)
54uint32beSUB_INFO.*ファイルのサイズ

言語コードはISO 639に定める英字2文字のコード(英語:en、日本語:ja)で、 SUB_INFO.*ファイルの拡張子および記述言語を指定します。 フォーマット上、SUB_INFO.*ファイルが複数存在することを認めている可能性もあります。 その場合はINFO.CDPファイルに複数のSUB_INFO.*ファイルの情報が記録されることになるでしょう。


副情報ファイル

SUB_INFO.*ファイルには、ディスクの名称と歌手名、 各曲の曲名と歌手名などの情報が含まれています。 このファイルは、INFO.CDPに記録されている言語コードを拡張子としてもち、 また、記述言語もこの言語コードで示されます。 例えば英語ならSUB_INFO.EN、日本語ならSUB_INFO.JAとなります。

ヘッダ

46バイトのヘッダに続いて、可変長のレコードが並びます。 ヘッダのフォーマットは次の通り。

SUB_INFO.*ファイルのヘッダのフォーマット
オフセット内容
0string [12]ID "SUB_INFO0100"
12byte [32]不明(符号化法を決定するエスケープシーケンス?)
44uint16beレコードの総数

オフセット12から始まるフィールドの内容は不明ですが、 英語のファイル(SUB_INFO.EN)ではすべて00なのに対して、 日本語のファイル(SUB_INFO.JA)では先頭が0x25 0x53("%S")です。 したがって、ISO 9660の副ボリューム記述子のように、 ISO 2022のエスケープシーケンス(ESCは省略)によって、 トラック名などの記述に使われている符号化法を決定しているとも考えられます。

レコード

レコードのフォーマットは次の通りです。 レコードデータが奇数バイトの場合、末尾に1バイトの0が補われます (ただし記録されているバイト数は奇数のまま)。

SUB_INFO.*ファイルのレコードのフォーマット
オフセット内容
0byteレコード種別
1byteレコードデータのバイト数n
2〜n+1byte [n]レコードデータ
n+2byte0 (nが奇数の場合のみ)

今までに確認されているレコード種別とその内容は以下の通りです。

SUB_INFO.*ファイルのレコード種別
種別内容レコードデータの型レコードデータの内容
1トラック番号string [2]ASCII数字2桁
2ディスク名称string [n]ローカル文字列
6トラック名称(曲名)string [n]ローカル文字列
8歌手名string [n]ローカル文字列
15ISRCstring [15]ASCII文字列
48ジャケット画像ファイル情報byte [4][10]後述

ローカル文字列は、言語コードで指定された言語で記述されます。 日本語の場合、符号化法としてはシフトJISが使用されています。

ジャケット画像ファイル情報(レコード種別48)は、 PICTURESディレクトリと同様、ジャケット画像ファイルのディレクトリの役目を果たします。 10バイトのサブレコードの集合で構成されます。

ジャケット画像ファイル情報のサブレコード
オフセット内容
0byteファイル種別
0: .00J
1: .00N
2: .00T
3: .00S
1byte不明 (通常1、まれに0)
2uint32be先頭相対LSN
3uint32beファイルサイズ

ファイルサイズは、PICTURESディレクトリに記録されているファイルサイズと同じです。 したがって、.00J以外のファイルについては、 Windows以外のシステムで読み出した場合のファイルサイズということになります(後述)。

レコード配置の例

典型的なレコードの配置は以下のようになります。

SUB_INFO.*ファイルのレコードの例
トラック種別内容
01"00"
2ディスク名称
6トラック名称(ディスク名称と同じ)
8歌手名
48ジャケット画像ファイル情報
11"01" (トラック1)
2ディスク名称
6トラック1の曲名
8トラック1の歌手名
21"02" (トラック2)
2ディスク名称
6トラック2の曲名
8トラック2の歌手名
:::
xx1"xx" (トラックxx)
2ディスク名称
6トラックxxの曲名
8トラックxxの歌手名

ディスクによっては、各トラックについてISRC(レコード種別15)が付随しているものがあります。


ジャケット画像ファイル

PICTURESディレクトリには、CDのジャケットの画像が収められています。 .00JはJPEG(JFIF)形式です。 他のファイル(.00N,.00T,.00S)は、 MPEG-videoによる静止画像(Iフレーム)をCD-ROM/XA Form-2で格納したものです。 画像サイズは以下の通りです。

形式拡張子画像サイズ
JPEG.00J640×480、704×480
MPEG.00N176×112
.00T352×240
.00S704×480

JPEGファイルはどのシステムでも読み出して利用することができますが、 他の3個のMPEGファイルはWindows95/NTでのみ正常に読み出すことができます。 Windowsで読み出すと、ヘッダが付加されてRIFF CDXA形式になります。 これを一般的なMPEG形式ファイル(.MPG)に変換すると、 MPEG再生ソフトで表示することができます。

ジャケット画像としてMPEGデータが格納されているのは、 MPEGを実装したAV機器(Video CDプレイヤーやDVDプレイヤーなど)でCD Extraをサポートする際の便宜のためと思われます。 コンピュータで利用する分にはJPEGデータだけで十分でしょう。

上記3個のMPEGファイルをWindows以外のシステムで見ると、 ディレクトリ上は2048バイト(ISO 9660の論理セクタ長)の倍数のサイズをもつファイルとして見えますが、 実際にファイルを読み出そうとするとエラーになります。 一方、Windowsで見ると、 他のシステムで見たときよりもやや大きいファイルサイズになっていて、 実際にその通りのファイルサイズで読み出すことができます。

CD ExtraのCD-ROM部(セッション2のトラック1)の物理フォーマットは、 CD-ROM XA Form-2(2328バイト/セクタ)になっています (CD-ROM Mode-2 (2336バイト/セクタ)ともみなせます)。 しかし、ISO 9660の論理セクタ長は通常2048バイトなので、 余分は実際には使われていません。 ところが、PICTURESディレクトリの上記3種類のファイルについては、 2328バイトフルに使われているようです。 Windowsで読み出した場合、2328バイトのデータに加えて、 これに先立つSYNCやヘッダを含んだ2352バイトのデータ (つまりCDの1物理セクタまるごと)が読み出され、 さらにファイルの先頭に44バイトのRIFFヘッダが付加されます。 すなわち、これらのファイルをWindowsで見た場合のファイルサイズSwと、 他のシステムで見た場合のファイルサイズSm(2048の倍数)の関係は、 Sw = Sm / 2048 * 2352 + 44 となります。

Windows95でvideo CDの.DATファイルを読むとRIFF CDXAファイルが得られるとの情報もあるので、 CD-ROM/XAで記録された特定のファイルを読み出すと、 自動的にRIFF CDXAに変換するような仕組みがWindowsにあるとも考えられます。


各ファイルの配置と検索について

CDPLUSディレクトリとPICTURESディレクトリに格納されているファイルは、 ISO 9660ファイルシステムによらなくても、以下のようにして直接アクセスすることができます。

  1. 相対セクタ75にあるINFO.CDPを読み出します。
  2. INFO.CDPの情報にもとづいてSUB_INFO.*を読み出します。
  3. SUB_INFO.*のジャケット画像ファイル情報にもとづいてジャケット画像ファイルを読み出します。

このようになっているのは、コンピュータ以外の機器(CDプレイヤーなど)でこれらのファイルにアクセスする際に、 ISO 9660を実装せずに簡便にアクセスできるように配慮したためと思われます。

逆に、このような条件を満たすデータの作成は、 通常のCD-ROMマスタリングソフトでは難しく、 CD Extra専用のオーサリングツールが必要となります。


関連プログラム

UNIX(FreeBSD)で作成・動作確認しましたが、OSや機種に依存する点は特にありませんので、 多くのプラットフォームで動作するでしょう。


ToDo

まだ解明されていない点は以下の通りです。


参考文献・リンク集


Copyright (C) 1998 ITO Takayuki, All rights reserved.

伊藤隆幸のホームページ