4. Exif 画像ファイル規定について
4.7 使用する JPEG マーカセグメント
4.7.3 圧縮データの APP2 内部構造
APP2 は、アプリケーション領域であることを表す APP2 マーカと、その大きさを表す length、及び
Flashpix(附属書 F参照)拡張データから成る。拡張データを記録する必要のない場合には、このマー
カセグメントを記録しなくてもよい。
APP2マーカセグメントは、Flashpix用拡張データ記録のために2種類存在する。
一つは、拡張データを構成するストレージとストリームのリストが記録されるコンテンツ・リストセ グメントで、ファイル中に唯一、記録される。
コンテンツ・リストセグメントのリストで示されるそれぞれのストリームのデータは、ストリーム・
データセグメントとして格納され、ストリーム・データを格納している APP2 マーカセグメントは複 数個存在する場合がある。
さらに、もう一つは Flashpix により予約されている APP2セグメントであり、この中身は Flashpix フォーマットにて規定される。
ストリーム・データとして記録できるデータの中身については、将来、別途規定する。複数の音声デー タを記録可能となるであろう。
A. APP2の記録順序
APP2はAPP1 マーカに引き続いてコンテンツ・リストセグメント、ストリーム・データセグメント
の順に記録しなければならない。ストリーム・データセグメントが複数ある場合には、コンテンツ リストに記載された順に記録すること(図 7参照)。
B. APP2内部の構成
APP2 の内部は、APP2 マーカ、識別コード(FPXR)、及びコンテンツ・リスト又はストリーム・デー タから構成される(図 31参照)。
アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+01 E2 APP2
+02 フィールドの長さ
+04 46 'F'
+05 50 'P'
+06 58 'X'
+07 52 'R'
+08 00 NULL
+09 00 Version
+0A コンテンツ・リスト 又は
ストリーム・データ 図 31 APP2マーカの基本構造
C. FPXR識別コード
FPXR識別コードは、APP2の内部がFPXRデータであることを表す識別コードで、4Byteのコードの 後に00.Hを1Byte記載する。これは、JPEGアプリケーション・マーカセグメント (APPn)を利用し ている他のアプリケーションとの重複を避けるために記録する。また、次の1Byteにバージョン番 号(00.H)を記録する。
D. コンテンツ・リストの構成
コンテンツ・リストセグメントは、後に Flashpix 上に展開される際に生成されるストレージとス トリームのリストを示す。先頭の2Byteはエントリの数である。
コンテンツ・リストのエントリフィールドは以下のとおり。
・エンティティ・サイズ Entity size
ストリームのサイズ又はFFFFFFFF.H(ストレージの場合)とする。ビッグエンディアンで記録す る。
・デフォルト値 Default value
ストリーム・データセグメント中で明示的にはセットされていないが各バイトのデフォルトと して使用される固定値。
・ストレージ/ストリーム名 Storage/Stream name
Flashpixへの変換時に加えられるストレージとストリームの名前であり、Flashpixの source image object rootストレージからのフルパスが記載される。ディレクトリの切れ目は '/' で
・Entity class ID
ストレージのClassIDでありストレージのエントリのときのみこのフィールドが書かれる。リ トルエンディアンの16Byte。
コンテンツ・リストセグメントのデータ構造を図 32に示す。
アドレスオフセット バイト数 コード 意味 (Hex) (Hex) (Hex)
+00 1 FF Marker Prefix
+01 1 E2 APP2
+02 2 フィールドの長さ
+04 4 “FPXR”
+08 1 00 NULL
+09 1 00 Version
+0A 1 01 コンテンツ・リスト
+0B 2 エントリー数
+0C 4 エンティティサイズ1 +11 1 デフォルト値 0
+12 m0 ストレージ又はストリーム名 0
+12+m0 (no) (Entity Class ID 0)
+12+m0+no 4 エンティティサイズ1
: 1 デフォルト値 1
: m1 ストレージ又はストリーム名 1 : (n1) (Entity Class ID 1)
: :
:
: :
: : :
: 4 エンティティサイズl
: 1 デフォルト値 l
: ml ストレージ又はストリーム名 l : (nl) (Entity Class ID l)
図 32 コンテンツ・リストセグメントの構成
E. ストリーム・データセグメントの構成
コンテンツ・リストセグメントに示されるストリームの中身の一部又は全部が記録される。JPEG マーカセグメントの容量は64KByteに制限されているが、これを超える容量のストリームを記録す る場合には複数のストリーム・データセグメントに分割される。
またこのような複数のストリーム・データセグメントにはストリーム・データを直接書くかわりに 一定のデフォールトで埋めることができる。ストリーム・データセグメントのデータは以下のとお り。
・コンテンツ・リストへのインデックス Index into Contents Lists
コンテンツ・リストセグメントに記録されるエントリの順(0から)を示す。
・Flashpix ストリームへのオフセット Offset into the full Flashpix stream
Flashpixのストリームにおいてストリーム・データの第1バイトが記録される位置のオフセッ
ト。
・ストリームデータ Stream Data
Flashpixへの変換の際に拡張データとして記録される実際のデータストリーム。このデータの
長さはストリーム・データセグメントのlengthで示される。
ストリーム・データセグメントのデータ構造を図 33に示す。
アドレスオフセット バイト数 コード 意味 (Hex) (Hex) (Hex)
+00 1 FF Marker Prefix
+01 1 E2 APP2
+02 2 フィールドの長さ
+04 4 “FPXR”
+08 1 00 NULL
+09 1 00 Version
+0A 1 02 ストリーム・データ
+0B 2 N コンテンツリストへのインデックス +0C 4 (Offset) FlashpixストリームへのOffset +11 可変 (値) ストリームデータ
図 33 ストリーム・セグメントの構成
F. 予約セグメント(Reserved for future use by the Flashpix format)
このマーカセグメントは将来の使用のために確保されている。例を図 34に示す。
アドレスオフセット バイト数 コード 意味 (Hex) (Hex) (Hex)
+00 1 FF Marker Prefix
+01 1 E2 APP2
+02 2 フィールドの長さ
+04 4 “FPXR”
+08 1 00 NULL
+09 1 00 Version
+0A 1 03 Flashpix用に予約
+0B : :
: :
図 34 Flashpix用予約データセグメントの構成