MPEG4 Systems 解説

MPEG4 Systems 解説
1998 年
電子情報通信学会
画像工学研究会
まえがき
1997 年 11 月に CD (Committee Draft) の発行された
MPEG-4 システム (ISO/IEC CD 14496-1) について概
説する。現在はバージョン 1 の CD 化が終了し、11 月に
はバージョン 2 の CD 化が予定されている。
Display and
User
Interaction
Audiovisual Interactive
Scene
1. 概要
Composition and Rendering
MPEG-4 システムは、CD 化までに紆余曲折を繰り返して
いる。当初の活動では、符号化アルゴリズムのダウンロ
ードやフレキシブルな API 定義が議論の中心であった。
ビットストリームの多重化に関しても、当初は ITU-T で
PSTN 向けの多重化方式として検討されている H.223 が
参照モデルとされた。しかし、これらの議論は結果的に
立ち消えとなり、 自由度の高い多重化方式とシーン合
成を核とする現在の構成に至っている。
図 1 に、MPEG-4システムのアーキテクチャを示す。従来
のオーディオ、ビデオ信号に加えて、シーン記述 (コン
ピュータグラフィクス、テキストを含む)、静止画像、合成
オーディオなどがそれぞれ一つのメディアオブジェクト
(エレメンタリストリーム) として統合的に扱われ、多重化
される。MPEG-4 端末は、これらを分離、復号し、合成す
る。各種制御情報からなるオブジェクトディスクリプタや
オブジェクト毎の付加的なコンテント情報なども、一つの
エレメンタリストリームとして扱うことになっている (どれが
制御用でどれがメディア転送用、という区別が無い)。
Object
Descriptor
FlexMux FlexMux
AL
Elementary Stream Interface
...
AL
AccessUnit
Layer
AL
FlexMux
Stream Multiplex Interface
FlexMux
FlexMux Streams
(PES)
MPEG-2
TS
(RTP)
UDP
IP
AAL2
ATM
H223
PSTN
DAB
Mux
FlexMux
Layer
TransMux Interface
...
...
TransMux
Layer
TransMux Streams
Transmission/Storage Medium
図 1: MPEG-4 端末のアーキテクチャ
DMIF Application Interface
Decoding
Buffer DB1
Decoding
Buffer DB2
Decoding
Buffer DB3
(encapsulates
Demultiplexer)
Decoding
Buffer DB
n
Media Object
Decoder 1
Media Object
Decoder 2
Media Object
Decoder n
Composition
Memory CB 1
Composition
Memory CB 2
Compositor
Composition
Memory CB n
Elementary Stream Interface
図 2: システムデコーダモデル
•
アクセスユニット (AU, Access Unit) : 時間属性が
定義される最小の処理単位。ES を分割して得られ
る。ビデオの場合、1 フレームの符号化データに相
当する。
•
復号バッファ (DB, Decoding Buffer) : AU を保持
するバッファ。サイズは送出側で設定可能である。
•
デコーダ (Decoder) : AU を入力とし、復号し、コン
ポジションユニット(後述)を出力する。スケーラビリテ
ィ等を考慮し、複数の DB が接続されてもよい。
3.1.1. 構成要素
構成要素は以下の通りである。これらに基づき、後述す
るタイミングモデルとバッファモデルが定義される。
AL
AL-Packetized Streams
3. CD 14496-1 (システム)
MPEG-4 端末の挙動を定義するために、構成を抽象化
したシステムデコーダモデル (図 3) が定義されている。
基本的に、MPEG-2 システムの一定遅延モデルに倣っ
ている。
...
Compression
Layer
Primitive
AV Objects
Elementary Streams
AL
そして、MPEG-4 システムは、自然・合成を問わず、さま
ざまな AV オブジェクトを同期合成するためのルールの
提供を目的としている。CD 14496-1 には、MPEG-4 端末
のモデル (3.1)、各ストリームの符号化特性の定義と関
連付け (3.2)、複数ストリームの同期と多重化 (3.3, 3.4)、
シーン記述 (3.5)、等が規定されている。
3.1. システムデコーダモデル
Return
Channel
Coding
...
Scene
Description
Information
•
エレメンタリストリーム (ES, Elementary Stream) : メ
ディアオブジェクト個々の符号化ビットストリーム。
•
•
DAI (DMIF Application Interface、4 章参照) : 入
力ビットストリームを分離し、ES 毎にアクセスユニット
(後述)を復号バッファに出力する。CD 化以前はデ
マルチプレクサだったが、DMIF の役割を明確化す
る意味で、DAI に置き換えられた。
コンポジションユニット (CU, Composition Unit) :
合成 (コンポジション) が適用される処理単位。ビ
デオの場合、復号されたフレームに相当する。
•
コンポジションメモリ (CM, Composition Memory) :
CU を保持するメモリ。サイズは規定されない。
•
コンポジタ (Compositor) : シーン記述に従い、CU
を合成する。具体的な挙動は規格外である。
-
3.1.2. タイミングモデル
タイミングモデルは、メディア同期を定義するために用い
られる。コンセプトは MPEG-2 システムに倣っており、送
出側と受信側の同期を確保するための参照クロックと、メ
ディア毎の動作タイミングを示すためのタイムスタンプが
用いられる。関連する用語を以下に示す。
•
•
•
•
•
システム時間基準 (STB, System Time Base) :
MPEG-4 端末の時間基準。
オブジェクト時間基準 (OTB, Object Time Base) :
各メディアオブジェクトの時間基準。
オブジェクト参照クロック (OCR, Object Clock reference) : 各メディアオブジェクトの参照クロック。送
出側の OTB を受信側に定期的に伝える。
復号タイムスタンプ (DTS, Decoding Time Stamp) :
AU が DB に存在していなければならない時刻。復
号タイミングを与える。DTS=CTS の場合、使用され
ない。
合成タイムスタンプ (CTS, Composition Time
Stamp) : CU が CB に存在していなければならない
時刻。合成タイミングを与える。
OCR、DTS、CTS が後述する AL_PDU_Header によって
転送される。OCR によって時間基準を回復し、DTS、
CTS に従って同期合成再生を実現する。各メディアオブ
ジェクトの時間基準を、一つの OCR に合わせることも可
能である (実際にはこれが通常の運用になるであろう)。
尚、時刻情報の利用はオプションであり、アプリケーショ
ンはクロックを自走させても構わない。
MPEG-2 システムの PTS (Presentation Time Stamp) に
対応するタイムスタンプは存在していない。このため、表
示タイミングのずれの弊害が一部で懸念されている。一
方、以前存在していた ETS (Expiration time Stamp) は
廃止されている。
3.1.3. バッファモデル
バッファモデルは、送出側主導のシナリオ (プッシュ型)
を前提に、MPEG-4 端末におけるバッファのオーバーフ
ロー/アンダーフローを防ぐための、送出側、受信側双方
に求められる動作を示している。モデルとして、符号化
入力から復号出力までが一定遅延であること、復号、合
成は瞬時に終了すること、等が仮定されている。
•
•
送出側は MPEG-4 端末に DB の必要サイズ (バイ
ト数)を伝える。ES_Descriptor (後述) によって陽に
伝える場合と、Profile/Level によって暗黙的に伝え
る場合がある、とされる。
送出側は MPEG-4 端末が以下の動作をすることを
前提に、ビットストリームの送出を行う (端末の動作
を予測する)。
•
AU は時刻 DTS で即座に CU に変換され、DB か
ら取り除かれる。
CU は時刻 CTS で合成可能になり、後続する CTS
まで使用される。
図 3 には、バッファの動作例を示す。
Arrival(AU1 )
Arrival(AU0)
DTS (AU0)
Decoding
Buffer
Composition
Memory
DTS (AU1 )
...................
AU0
AU1
...................
CU0
CU1
CTS (CU0 )
CTS (CU1 )
= available for
composition
図 3: バッファの動作例
3.2. Object Descriptor
各エレメンタリストリームの制御情報として、オブジェクト
ディスクリプタ (OD: Object Descriptor) が定義される。
図 4 は OD のシンタクス構造の概要を示したものである
(詳細は[1]を参照されたい)。
3.2.1. ObjectDescriptor()
エレメンタリストリームの属性と関連付けを定義する。スケ
ーラビリティ等を考慮し、複数のエレメンタリストリームが
グループ化される。また、シーン記述にエレメンタリストリ
ームを関係付ける役割も持つ。
ObjectDescriptorId (10bit) は、一つのオブジェクトディ
スクリプタを同定する。シーン記述中のオブジェクトで同
じ ObjectDescriptorId を持つものは、このオブジェクトデ
ィスクリプタに関連付けられる。
streamCount (5bit) は、後続する ES_Descriptor() の個
数を示す。
3.2.2. ES_Descriptor()
各エレメンタリストリームの特性の詳細を定義する。オプ
ションとして URL が用いられる場合には、別のオブジェ
クトディスクリプタ、またはエレメンタリストリームへのポイ
ンタが与えられる。
ES_Number (5bit) は、エレメンタリストリームに番号を与
える。さらに、オブジェクトディスクリプタで与えられる
ObjectDescriptorId と共に
ES_Id = ObjectDescriptorId << 5 | ES_Number
によって、セッション中で固有の番号が割り当てられる。
URLstring (n*8bit) は、オプションとしてURLアドレスを
与える。
dependsOn_ES_Number (5bit) は、スケーラビリティ等
に従い、同じオブジェクトディスクリプタの中で、関係付
けられる別のエレメンタリストリームの ES_Number を与え
る。
ObjectDescriptorUpdate ( )
0x08-0x09
0x0A
0x0B-0x1F
0x20-0x3F
reserved
ObjectContentInfoStream
reserved
user private
objectCount
ObjectDescriptor ( )
ObjectDescriptorID
streamCount
シーン(BIFS)
ES_Descriptor ( )
ES_Number
URLstring (option)
dependsOn_ES_Number (option)
DecodeConfigDescriptor ( )
ストリーム (ES)
profileAndLevelIndication
streamType
upStream
bufferSizeDB
maxBitrate
avgBitrate
ALConfigDescriptor ( ) … 3.3節参照
IPI_Descriptor ( )
QoS_Descriptor ( )
streamPriority
upStream (1bit) は、値が 1 の場合、当該するエレメンタ
リストリームがバックチャネルで用いられていることを示
す。
bufferSizeDB (24bit) は、復号バッファのサイズを与え
る (バイト数)。
maxBitrate (32bit) は、1 秒当たりの瞬間最大レートを
与える。
avgBitrate (32bit) は、1 分当たりの平均レートを与える。
値が 0 の場合、当該するエレメンタリストリームは固定レ
ートではないことを示す。
3.2.4. Object Descriptor Stream
図 4: オブジェクトディスクリプタのシンタクス構造
このほか、以下のディスクリプタが定義される。
-
DecodeConfigDescriptor () : 3.2.3 節参照
-
ALConfigDescriptor () : 3.3 節参照
-
IPI_Descriptor ()
-
QoS_Descriptor ()
IPI_Descriptor() は、コンテントの知的所有権に関する
情報を運ぶ。 QoS_Descriptor() は、エレメンタリストリー
ム伝送時のサービス品質を定める。QoS_Descriptor()に
含まれる streamPriority (5bit) は、ストリーム毎のプライ
オリティの相対的な尺度を与える。値が大きいほど、品
質要求が高い、とされる。
3.2.3. DecodeConfigDescriptor ( )
個々のエレメンタリストリームの復号器に求められる情報
を定義する。
profileAndLevelIndication (8bit) は、復号器がサポー
トすべきプロファイルとレベルを定める。現在、MPEG-1
と MPEG-2/4 のすべてのプロファイル・レベルがサポート
されている。
streamType (6bit) は、エレメンタリストリームのタイプを
定める。現在、表 1 に示すタイプが定義されている。
表 1: ストリームタイプ
value
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
description
reserved
initialObjectDescriptor
ObjectDescriptorStream
ClockReferenceStream
SceneDescriptionStream
VisualStream
AudioStream
MPEG7Stream
後述するセッション開始時を除き、セッション中はオブジ
ェクトディスクリプタ自身もメッセージにカプセル化し、エ
レメンタリストリームとして転送ことになっている (表 1 中
の ObjectDescriptorStream)。
現在定義されているメッセージを表 2 に示す。上から順
に、セッション中のオブジェクトディスクリプタの更新と無
効化、エレメンタリディスクリプタの更新と無効化、に使用
する。
表 2: メッセージ
tag
0
1
2
3
4
0x05-0xFF
Descriptors
reserved
ObjectDescriptorUpdate
ObjectDescriptorRemove
ES_DescriptorUpdate
ES_DescriptorRemove
reserved for ISO use
セッション開始時には、エレメンタリストリームとしてでは
なく、特殊なオブジェクトディスクリプタ (initialObjectDescriptor) を受け取り、MPEG-4 端末を初期化する、とさ
れる。初期化を終了し、必要なオブジェクトディスクリプタ
を受け取り、適切なチャネルを開いてから、通常のエレメ
ンタリストリームを介したセッションが開始される。
3.3. AL_PDU
送信側において、各アクセスユニットはアクセスユニット
レイヤ (図 1 参照)で分割され、各々AL_PDU ヘッダが
付加されてパケットを構成する (AL-PDU: Access Unit
Layer Protocol Data Unit)。そのパケットは、さらに
FlexMux レイヤ、Transmux レイヤに渡される (注 :
TransMux は MPEG-4 Systems の規格化対象外である)。
AL_PDU ヘッダには 2 章に述べた時刻情報などが含ま
れる。これは、受信側におけるエレメンタリストリームの同
期再生などに利用される。ただし、AL_PDU ヘッダの全
てのフィールドはオプションである (すなわち、AL_PDU
ヘッダ自体がオプションである)。使用されるフィールドは、
オブジェクトディスクリプタ内のALConfigDescriptor () に
よって、ストリームを受ける以前に前もって指定される。
表 3 には AL_PDUの構成を示す。AL_PDU ペイロード
はアクセスユニットを分割して得られるものであり、これに
AL_PDU ヘッダを付加する。ペイロードの長さは自由で
あり、下位の FlexMux、TransMux にまかせてフレーミン
グは行わない。なお、ヘッダ、ペイロード共にバイトアライ
ンされる。
表 3: AL_PDU のシンタクス
AL_PDU {
AL_PDU Header ( )
AL_PDU Payload ( )
}
byte aligned
byte aligned
3.3.1. ALConfigDescriptor ( )
オブジェクトディスクリプタの中で、AL_PDU ヘッダで使
用するフィールドを指定する。表 4 にその構成を示す。
表 4: ALConfigDescriptor ( ) のシンタクス
ALConfigDescriptor ( ) {
predefined
if ( ! predefined ) {
useAccessUnitStartFlag
useAccessUnitEndFlag
useRandomAccessPointFlag
usePaddingFlag
useTimeStampFlag
timeStampResolution
OCRResolution
timeStampLength (= tsl)
OCRLength
useWallClockTimeStampFlag
if ( ! useTimeStampFlag ) {
accessUnitRate
compositionUnitRate
startDecodingTimeStamp
startCompositionTimeStamp
wallClockTimeStamp
}
AL_Length
instantBitrateLength
degradationPriorityLength
seqNumLength
}
OCRstreamFlag
if ( OCRstreamFlag ) {
OCR_ES_Id
}
}
8bit
1bit
1bit
1bit
1bit
1bit
32bit
32bit
6bit
6bit
1bit
16bit
16bit
tsl bit
tsl bit
64bit (float)
5bit
8bit
4bit
4bit
1bit
16bit
predefined (8bit) は、デフォルト設定の使用を可能にす
る (値が 0 以外の場合)。この場合、AL_PDUヘッダは使
用されず、オーバーヘッドが削減される。現在は、null
だけが規定されている (表 5 参照)。
表 5: predefined
predifined value
0x00
0x01
0x02-0xFF
description
custom
null AL_PDU Header
reserved
use-xxx (1bit) は、AL_PDU ヘッダにおけるフィールド
xxx の 使 用 ・ 不 使 用 を 定 め る 。 特 に 、
useAccessUnitStartFlagと useAccessUnitEndFlag が共
に 0 (不使用) の場合、AL_PDU は常に分割されない一
つのアクセスユニットから構成されることを示唆している。
xxx-Resolution、xxx-Length は、時刻情報 xxx (参照ク
ロック、タイムスタンプ) の解像度 (1 秒当たりのサイクル
数) とビット長を定める。すなわち、MPEG-4 システムで
は、各時刻情報が可変ビットで表せる。ただし、
wallClockTimeStamp は例外であり、VRMLとの互換性
を重視して浮動小数点 64bit で絶対時間を運ぶ。
accessUnitRate と compositionUnitRate は、それぞれタ
イムスタンプを用いない場合の復号周期、合成周期を与
える (単位 Hz)。
xxx-Length は、AL_PDU ヘッダ中のフィールド xxx のビ
ット長を与える。
OCRstreamFlag (1bit) は共通クロック源としての参照ク
ロックストリーム (表 1:の ClockReferenceStream) の使用
を示唆する。OCR_ES_ID (16bit) は、そのクロックストリ
ームを同定する ES_ID 番号を表す。
3.3.2. AL_PDU ヘッダ
事前に ALConfigDescriptor() に示されたフラグ情報に
従い、指定されたフィールドから AL_PDU ヘッダが構成
される。シンタクスは省略するが、各フィールドは
ALCondigDescriptor() の 中 で 接 頭 辞 use-、 接 尾 語
–Length の付くフィールドにそのまま対応する。詳細は
[1]を参照されたい。
accessUnitStartFlag、accessUnitEndFlag ( 共 に 1bit)
は、それぞれ AL_PDU 中のアクセスユニットが開始、終
了の場合、1 にセットされる。
randomAccessPointFlag (1bit) は、当該 AL_PDU がラ
ンダムアクセスポイントであるか否かを示す。
paddingFlag (1bit)、paddingBits (3bits) は、AL_PDU
のパディングの制御に使われる。
sequenceNumber (可変) は、インクリメントされる整数値
として AL_PDU に番号を付ける。これは AL_PDU の廃
棄検出・順序制御に使われる。
objectClockReference
、
decodingTimeStamp
、
compositionTimeStamp (それぞれ可変) は、それぞれ
2 章に述べた OCR、DTS、CTS に対応する。
wallClockTimeStamp (64bit) は、VRML の SFTime の
定義に従う絶対時間を運ぶ。
accessUnitLength (可変) は、バイト単位でアクセスユニ
ットの長さを与える (注: AL_PDU の長さではない。
AL_PDU のフレーミングは、FlexMux レイヤ以下の仕事
とされる)。
instantBitrate (可変) は、当該するエレメンタリストリー
ムの瞬間ビットレートを示す。
degradationPriority (可変) は、当該アクセスユニットの
重要度を表す。 QoS_Descriptor() 中の streamPriority
フィールドと組み合わせ、
AccessUnitPriority = streamPriority – degradationPriority
に従って、サービス要求を適応的に更新する。
3.4. FlexMux
アクセスユニットレイヤから渡される AL_PDU は、
FlexMux レイヤで多重化 (フレーミング) される。目的
は、メディア依存の AL_PDU をネットワーク (もしくは蓄
積媒体)に適合したパケットにすること、あるいは同じサ
ービス品質を要求する AL_PDU を一つのパケットにまと
めること、などである。ただし、FlexMux もオプションであ
る。
表 6: FlexMux のシンタクス
FlexMux_PDU ( ) {
index;
length;
if (index > 239) {
version;
reserved;
m * AL_PDU // MuxCode mode
} else {
AL_PDU
// Simple mode
}
}
表 6 にある通り、一つの FlexMux パケットの長さは最大
256 バイトに限定されている (length フィールドが8 bit)。
現在、この制約が短すぎるのでは、との議論があり、
length フィールドとして 16 bit を選択できるようにするモ
ードが議論されている。
3.5. シーン記述
3.5.1. 背景
従来の MPEG には無い規格として、MPEG-4 ではシー
ンの記述がサポートされる。すなわち、ビデオ、オーディ
オ規格に従って生成されるメディアオブジェクトを、複数
個まとめて空間的・時間的に配置するためのシンタクス・
セマンティクスを提供する。そのために用いられるシーン
記述フォーマットは BIFS (BInary Format for Scene description) と呼ばれ、別途 ISO/IEC SC24 で標準化が進
められている VRML (Virtual Reality Modeling Language) をベースとしている。
VRML とは、「インタラクティブな三次元グラフィクスのイ
ンタネット上の転送フォーマット」、として定義される。簡
潔に言えば、HTML の三次元版である。基本となる概念
は、図 5 に示すシーングラフである。シーングラフでは、
ノードと呼ばれる構成単位を階層的に組み合わせること
で一つのシーンを構成する。ノードとは、光源、形状、材
質、色、座標などをフィールドとして有するシーンの構成
単位であり、さらにそれが子供のノードを持つことでシー
ン記述の階層化を実現する。これらはコンピュータグラフ
ィクスの世界で広く用いられている手法である。
scene
uint(8)
uint(8)
person
uint(4)
uint(4)
byte_aligned
byte_aligned
FlexMux には Simple モードと MuxCode モードの二つが
用意されている。表 6 の中の index が 240 未満である場
合 FlexMux は Simple モードとなり、240 以上の場合は
MuxCode モードとなる。
Simple モードの場合、index の値は FlexMux のチャネル
番号となる。MucCode モードの場合、index から 240 を引
いた値が MuxCode を指す。この MuxCode は ITU-T
H.223 に倣って採用されたものであり、あらかじめ
MuxCodeTableEntry によって定義された多重化テーブ
ルを指定する。これは、多重化のパターンを定義したも
のである。 MuxCodeTableEntry の転送は、後述する
DMIF が担当する、とされている。
voice
2D background
sprite
furniture
globe
audiovisual
presentation
desk
図 5: シーングラフ
BIFS は、当初 VRML を MPEG ライクなフォーマット (バ
イナリフォーマット) に変換するシンタクスを定義すること
からスタートした。ノードも、既存の VRML ノードを部分
的にサポートすることで合意が取られていた。ただし、現
在では、逆にさまざまな独自の拡張ノードを定義するに
至っている。VRML 側ではもともと独自のバイナリフォー
マットを決めるグループがあったのだが、両者合意の上、
これらは MPEG-4 の下で BIFSとして規格化することにな
っている。
参考までに、MPEG-4と VRML の間にはこの他にもいく
つかの共同作業がある。VRML のストリーミング転送、ス
クリプトインタフェース、ブラウザの外部インタフェース、
顔と人体のアニメーション、等が挙げられる。
} else {
predefined;
if (predefined)
nodeType;
isUpdatable;
if (isUpdatable)
nodeID;
maskAccess;
if (maskAccess)
MaskNodeDescription ( )
else
ListNodeDescription ( )
}
3.5.2. BIFS ノード
MPEG-4 のシーン記述ツールとして、基本的には BIFS
は VRML に等価である。しかし、MPEG-4 側で独自のノ
ード拡張を行ったために、VRML とは必ずしも一対一に
対応しないかなり複雑な構成になっている。 BIFS を
VRML の唯一のバイナリフォーマットとする合意の観点
からも、BIFS と VRML の不整合が問題視されている。
BIFS ノードは以下のように分類される。
•
•
•
•
-
共通ノード
VRML ノード (17 個)
MPEG-4 ノード (11 個)
2D ノード (二次元シーン)
MPEG-4 ノード (24 個)
3D ノード (三次元シーン)
VRML ノード (29 個)
MPEG-4 ノード (9 個)
2D/3D 合成ノード
MPEG-4 ノード (5 個)
variable
bit(1)
bit(10)
bit(1)
}
(b) MaskNodeDescription
MaskNodeDescription ( ) {
for(i=0; i<numberOfFields; I++) {
mask;
if (mask)
value;
}
}
上記の分類は、そのまま後述するシステムプロファイル
に関係する。共通ノードは、2D、3D 共通に使われるノー
ドである。2D ノードは、本来 3D である VRML を、
MPEG-4 で二次元のシーン記述用に定義し直したもの
である。ノード名は、接尾に –2D と付けることで判別さ
れる。3D ノードは、三次元のシーン記述に使われる。こ
れには MPEG-4 独自拡張として、人工の顔画像のアニメ
ーションに使うノードが含まれる。2D/3D 合成ノードは、
三次元シーンの中に二次元シーンをはめ込むのノード
で、MPEG-4 独自拡張である。これに対しては VRML 側
からシーングラフの概念を崩すとの批判があったが、CD
には記載されている。
ただし、VRMLノードの Anchor, CylinderSensor, Extrusion, Fog, NavigationInfo, PixelTexture, PlainSensor,
Script, SphereSensor, VisibilitySensor, および PROTO,
EXTERNPROTO は、現在の CD には記載されていな
い。一部はインタネット依存性の排除のためであり、一部
は複雑性の排除のためである。また、 AudioClip ノードと
Sound ノードは、MPEG-4 Audio 用途に変更が加えられ
ている。
3.5.3. BIFS シンタクスの例
表 7 に BIFS のシンタクスの例を示す。基本的に VRML
に準ずるノード記述を MPEG ライクなシンタクスにマッピ
ングする。
表 7: BIFS シンタクス例, (a) SFNode
SFNode ( ) {
isReused;
if (isReused) {
nodeID;
bit(1)
bit(1)
bit(10)
bit(1)
variable
(c) ListNodeDescription
ListNodeDescription ( ) {
endFlag;
while (!endFlag) {
fieldReference;
value;
endFlag;
}
}
bit(1)
variable
variable
bit(1)
isReusedは、VRMLの DEF、USEに対応して使われる。
nodeID はノード名を示す。predefined は、現在の BIFS
で規定されているノードか否かを示す。nodeType は、そ
れが BIFS で規定されているノードの場合、そのノードの
型 (SF-xxx, MF-xxx) を示す。isUpdatable は、そのノー
ドが更新可能であるか否かを示し、更新可能な場合には
前述の nodeID を割り当てる (nodeID がノード更新時の
タグとなる)。maskAccess は、そのノードのフィールドの
符 号 化 に 、 以 下 に 述 べ る MaskNodeDescription()と
ListNodeDescription() のどちらのモードを使用するかを
示す。
まず MaskNodeDescription モードを使用する場合、
mask の値に応じて各フィールドの値が符号化されるか
否かが決まる。このモードの場合、フィールドの順番はノ
ード定義に示されている順番に従う。
ListNodeDescription モ ー ド を 使 用 す る 場 合 、
fieldReference が符号化されるフィールドを明示する。こ
のため、フィールドを符号化する順番は自由である。符
号化の終了は、endFlag によって決定される。
VRML 記述で用いられる整数、浮動小数点、倍精度浮
動小数点などは、そのまま 32 bit、ないし 64 bit で符号
化される。量子化を行うためのノード
QuantizationParameters も定義されているが、後述する
IM1 では今のところサポートされていない。
tion Framework)は、形式上 MPEG-2 DSM-CC の拡張
版としてスタートした。実質的にはシステムパートからネッ
トワーク的な要素を分離・吸収する形で議論が進められ、
ネットワーク (もしくは蓄積媒体) へのインタフェースとし
て機能することになっている。
3.5.4. Object Descriptor との関連付け
図 6 には、MPEG-4 デリバリの役割を示す。MPEG-4シス
テムは、コンテントの具体的な伝送・蓄積形態 (Transmux ) については何ら言及しない。すなわち、これらは
サービス提供者が任意に選択する、としている。そこで
MPEG-4 デリバリは、アプリケーションには透過に、多種
多様な Transmux に共通して用いられるインタフェースの
提供を目的とする。図 1 との対応で言えば、DMIF は
Stream Multiplex Interface を提供する、とされる。CD
14496-6 には、アプリケーションインタフェース (normative)、ネットワークインタフェース (informative)、DMIF と
ATM、H.323、H.245 との関係、などが記述されている。
MPEG-4 Systems では、BIFS 自身が一つのエレメンタリ
ストリームとして扱われる。BIFS のストリーム情報は、セッ
ション開始時に送られる initialObjectDescriptor に含まれ
る。その後、BIFS 用のチャネルが開かれ、 BIFS が転送
される。それから、個々のストリームのオブジェクトディス
クリプタが転送される。
BIFS 中のオブジェクトにはurlフィールドを持つものがあ
る (MovieTexture, AudioClip 等)。このurlフィールドを介
して、シーン中のオブジェクトとオブジェクトディスクリプタ
(さらにはエレメンタリストリーム) が関連付けられる。表 8
に、url フィールドの BIFS シンタクスを示す。 isOD フラ
グに応じて、オブジェクトディスクリプタの ID 番号、もしく
は URL そのものが符号化される。
media related
ESI
表 8: BIFS シンタクス例 (SFUrl)
SFUrl ( ) {
isOD;
if (isOD)
ObjectDescriptorId;
else
url;
}
Systems Layer
DAI
bit(1)
delivery related
Delivery Layer
bit(10)
図 6: MPEG-4 デリバリの役割
variable
3.6. 参照ソフトウェア (IM1)
ビデオ、オーディオグループと同様に、システムでも参
照ソフトウェアの作成が進められている。これは IM1 と呼
ばれ (implementation 1 の略)、二次元、三次元それぞ
れについて C++ベースの開発が進められている。San
Jose 会合では、さらにすべてのサブグループを含んだ形
で作成を進めることが決定された。
3.7. システムプロファイル
システムプロファイルは、シーン記述能力に基づいて以
下の 5 つが定められている。さらに San Jose 会合におい
て、簡易なシーン記述のみをサポートする Ultra Simple
BIFS profile の追加が合意されている。
•
•
•
•
•
Compression Layer
オーディオ (オーディオ関連ノードのみ)
2D (共通ノード+2D ノード)
3D (共通ノード+3D ノード)
VRML (VRML ノード、互換性のため)
コンプリート (すべてのノード)
4. CD 14496-6 (デリバリ)
MPEG-4 デリバリ (DMIF: Delivery Multimedia Integra-
5. バージョン2
バージョン 2 では、以下の項目が検討対象になる。
•
Intermedia Format (旧ファイルフォーマット): ラ
ンダムアクセス機能他を備え、伝送手段とは独立
に定められるサーバ上のストリームデータの共通
フォーマット。San Jose 会合で提案評価が行わ
れ、Quick Time をコアとするドラフト案が採択され
た。
•
AAVS (Adaptive Audio-Visual Session Format): MPEG-4 端末に対する各種プログラムイン
タフェースの規定を目的とする。VRML の EAI
(External Authoring Interface) などとの関係も議
論されている。
6. むずび
MPEG-4 システムについて概説した。MPEG-4 システム
は、明確なアプリケーションを想定した規格ではない。逆
に汎用性を想定した、きわめて自由度 (抽象度) の高
い構成になっている。筆者の予想では、アプリケーション,
ネットワークに依存しない共通フォーマットとしての使用
が、実際の運用形態になるものと思われる。
参考文献
[1] ISO/IEC JTC1/SC29/WG11 N1901: “Text for CD
14496-1 Systems,” Nov.1997.
[2] ISO/IEC JTC1/SC29/WG11 N1906: “Delivery Mult imedia Integration Framework,” Nov.1997.