2. Exif 画像ファイル規定
2.7. 使用する JPEG マーカセグメント
2.7.3. 圧縮データの APP2 内部構造
APP2
は、アプリケーション領域であることを表す APP2マーカ と、その大きさを表す length 、及びFlashPix(付録 F参照)拡張データから成る。拡張データを記録する必要のない場合には、このマーカ
セグメントを記録しなくて良い。APP2
マーカセグメントは、FlashPix用拡張データ記録のために2
種類存在する。一つは、拡張データを構成するストレージとストリームのリストが記録されるコンテンツ・リストセグメ ントで、ファイル中に唯一、記録される。
コンテンツ・リストセグメントのリストで示されるそれぞれのストリームのデータは、ストリーム・デー タセグメントとして格納され、ストリーム・データを格納している
APP2
マーカセグメントは複数個存在 する場合がある。さらに、もう一つは
FlashPix
により予約されているAPP2
セグメントであり、この中身はFlashPix
フォー マットにて規定される。ストリーム・データとして記録できるデータの中身については、将来、別途規定する。複数の音声データ を記録可能となるであろう。
A. APP2
の記録順序APP2
はAPP1
マーカに引き続いてコンテンツ・リストセグメント、ストリーム・データセグメントの順に記録する。ストリーム・データセグメントが複数ある場合には、コンテンツリストに記載された順に 記録すること(Fig. 6 参照)。
- 77 - B. APP2
内部の構成APP2
の内部は、APP2 マーカ、識別コード(FPXR)、およびコンテンツ・リストまたはストリーム・データから構成される(Fig. 23 参照)。
アドレスオフセット コード 意味 (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 コンテンツ・リスト または ストリーム・データ
Fig. 23 APP2マーカの基本構造
C. FPXR
識別コードFPXR
識別コードは、APP2
の内部が FPXRデータであることを表す識別コードで、4Byteのコードの後に
00.H
を1Byte
記載する。これは、JPEGアプリケーション・マーカセグメント(APPn)を利用している他のアプリケーションとの重複を避けるために記録する。また、次の
1Byte
にバージョン番号(00.H)を記録する。
D.
コンテンツ・リストの構成コンテンツ・リストセグメントは、後に
FlashPix
上に展開される際に生成されるストレージとストリー ムのリストを示す。先頭の2
バイトはエントリの数である。コンテンツ・リストのエントリフィールドは以下のとおり。
- 78 -
エンティティ・サイズE n t i t y s i z e
ストリームのサイズまたは
FFFFFFFF.H(ストレージの場合)とする。ビッグエンディアンで記録す
る。デフォルト値
D e f a u l t v a l u e
ストリーム・データセグメント中で明示的にはセットされていないが各バイトのデフォルトとして使 用される固定値。
ストレージ/ストリーム名
S t o r a g e / S t r e a m n a m e
FlashPix
への変換時に加えられるストレージとストリームの名前であり、FlashPixの source imageobject root ストレージからのフルパスが記載される。ディレクトリの切れ目は '/'
で表され、プロパティ値の最初の
1
文字に記述される。Unicode コードページの16bit
文字列で、ヌルで終端される。リトルエンディアン。
E n t i t y c l a s s I D
ストレージの
ClassID
でありストレージのエントリのときのみこのフィールドが書かれる。リトルエ ンディアンの16
バイト。コンテンツ・リストセグメントのデータ構造を Fig. 24 に示す。
アドレスオフセット バイト数 コード 意味 (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)
Fig. 24 コンテンツ・リストセグメントの構成
- 79 - E.
ストリーム・データセグメントの構成コンテンツ・リストセグメントに示されるストリームの中身の一部または全部が記録される。
JPEG
マー カセグメントの容量は64kByte
に制限されているが、これを超える容量のストリームを記録する場合に は複数のストリーム・データセグメントに分割される。またこのような複数のストリーム・データセグメ ントにはストリーム・データを直接書くかわりに一定のデフォールトで埋めることができる。ストリー ム・データセグメントのデータは以下のとおり。コンテンツ・リストへのインデックス
I n d e x i n t o C o n t e n t s L i s t s
コンテンツ・リストセグメントに記録されるエントリの順(0から)を示す。
F l a s h P i x ストリームへのオフセット
O f f s e t i n t o t h e f u l l F l a s h P i x s t r e a m
FlashPix
のストリームにおいてストリーム・データの第1
バイトが記録される位置のオフセット。ストリームデータ
S t r e a m D a t a
FlashPix
への変換の際に拡張データとして記録される実際のデータストリーム。このデータの長さはストリーム・データセグメントの
length
で示される。ストリーム・データセグメントのデータ構造を Fig. 25 に示す。
アドレスオフセット バイト数 コード 意味 (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 可変 (値) ストリームデータ
Fig. 25 ストリーム・セグメントの構成
- 80 -
F.
予約セグメント (R e s e r v e d f o r f u t u r e u s e b y t h e F l a s h P i x f o r m a t) このマーカセグメントは将来の使用のために確保されている。例を Fig. 26 に示す。アドレスオフセット バイト数 コード 意味 (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 :
:
: :
Fig. 26 FlashPix用予約データセグメントの構成