以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。本実施の形態では、ディジタルビデオデータ、ディジタルオーディオデータを内包するMXFストリーミングデータから、特定のディジタルビデオデータ位置へアクセス(検索)するMXFデータ再生装置を一例に説明する。
(概要)
本発明によるMXFデータ再生装置(データ検索装置)1000は、入力されたMXFストリーミングデータ(以下、MXFデータと称す)を先頭から順に検索し、所望のデータにアクセスする。この際、本発明では、予め用意されたKeyリスト及び状態遷移テーブルを利用して、検出されたKeyが属している状態(Partitionを示す情報やデータ項目を示す情報)を特定するとともに、指定されたKeyの出現回数をカウントすることで、データ位置を特定する。このため、本発明では、Index Tableを用いることなく、所望データにアクセスすることができる。又、本発明では、入力されたMXFデータを先頭から順に(入力順に)検索し、指定されたデータ位置を検出しているため、Partitionの後半部に挿入されたIndex Tableの入力を待つことなく指定されたデータにアクセスすることができる。
(構成)
図4から図7を参照して、本発明によるMXFデータ再生装置1000の構成を説明する。図4は、本発明によるMXFデータ再生装置1000の実施の形態における構成を示す図である。図5は、本発明によるMXFデータ検索プログラム21の実施の形態における構成を示す機能ブロック図である。図6は、状態遷移テーブル22の一例を示す図である。図7は、Keyリスト23の一例を示す図である。
図4を参照して、本発明によるMXFデータ再生装置1000は、それぞれがバスを介して接続されたCPU110、RAM120、記憶装置130、入力装置140、出力装置150、I/O装置160を具備する。記憶装置130はハードディスクやメモリ等に例示される外部記憶装置である。又、入力装置140は、キーボードやマウス等のユーザによって操作されることで、各種データをCPU110や記憶装置130に出力する。出力装置150は、モニタやプリンタに例示され、CPU110から出力される半導体装置のレイアウト結果をユーザに対し視認可能に出力する。I/O装置160は、図示しない外部装置(例示:ビデオ再生装置)に接続するための入出力インタフェースである。
記憶装置130は、MXFデータ検索プログラム21、状態遷移テーブル22、Keyリスト23を格納している。又、MXFデータの検索処理(アクセス処理)の際に利用される状態情報24、位置情報25も記憶装置130に記録される。又、記憶装置130は、入力されたMXFデータを格納しても良い。CPU110は、入力装置140からの入力に応答して、記憶装置130内のMXFデータ検索プログラム21を実行し、MXFデータに対する所望データの検索処理(アクセス処理)行なう。この際、記憶装置130からの各種データやプログラムはRAM120に一時格納され、CPU110は、RAM120内のデータを用いて各種処理を実行する。
本発明によるMXFデータ再生装置1000は、指定位置のデータを検索する際、入力されたMXFデータ内のKeyを先頭から順(入力順)に検索し、当該Keyが属する状態を特定する。このとき、MXFデータ再生装置1000は、Keyの属する状態が、設定されたMXF規格に適合しているか否かを、状態遷移テーブル22を利用して判定する。状態は、データ項目を示す情報とPartitionを示す情報とを含む。詳細には、状態には、Header Partition、Body Partition、Footer Partition、Primer(Header、Body)、Essence Container(Header、Body)、Index Table(Header、Body)、Primer(Footer)、Index Table(Footer)、Random Index Pack、Metadata等がある。ただし()内はPartitionを示す。
MXFデータの構造は、MXF規格に基づいているため、状態の並び順はMXF規格に従ったものとなる。このため、状態遷移テーブル22は、MXF規格に基づいて設定されている。
図6を参照して、状態遷移テーブル22の一例を説明する。ここでは、図1に示すMXFデータに適用されたMXF規格に従った状態遷移テーブル22を一例に説明する。状態遷移テーブル22は、初期状態0、MXFデータが内包し得る状態1〜状態11、及び終了状態12と、それぞれの遷移リンク(遷移先となる次の状態)とが対応付けられて格納される。すなわち、状態遷移テーブル22には、MXFデータの先頭(検索処理が開始されるデータ)から最後尾(検索処理が終了する)までの状態の遷移が記録される。
以下、状態遷移テーブル22に記録される状態0〜状態12と、それぞれの遷移先として対応付けられる状態について説明する。
初期状態0.Start:検索処理を開始する時の状態を示す。MXFデータの先頭は必ずHeader Partitionであるため、Header Partition(状態1)のみが次の遷移先として対応付けられる。
状態1.Header Partition:Header Partitionに属する状態であることを示す。Header Partitionには必ずMetadataを付与する必要があるため、Primer(Header、Body)(状態2)のみが遷移先として対応付けられる。
状態2.Primer(Header、Body):Primer Pack(Header、Body)に属する状態であることを示す。Primer Pack(Header、Body)の後は、MXF規格上、必ずMetadata(Header、Body)が後続する。そのため、Metadata(Header、Body)(状態3)のみが遷移先として対応付けられる。
状態3.Metadata(Header、Body):Metadata(Header、Body)に属する状態であることを示す。Metadata(Header、Body)は繰り返されることがあるため、Metadata(Header、Body)が遷移先となる。又、Metadata(Header、Body)が終了すると、Body Partition、Index Table、Essence Container、Footer Partitionに遷移する可能性がある。このため、Metadata(Header、Body)(状態3)、Body Partition(状態4)、Index Table(Header、 Body)(状態5)、Essence Container(状態6)、Footer Partition(状態7)が遷移先として対応付けられる。
状態4.Body Partition:Body Partitionに属する状態であることを示す。Body Partitionの後には、Metadata情報を記載する可能性があるため、Primer(Header、Body)が遷移先となる可能性がある。又、Index Table、Essence、Container、Footer Partitionに遷移する可能性もある。このため、Primer(Header、Body)(状態2)、Index Table(Header、Body)(状態5)、Essence、Container(状態6)、Footer Partition(状態7)が遷移先として対応付けられる
状態5.Index Table(Header、Body):Index Table(Header、Body)に属する状態であることを示す。Index Table(Header、Body)は繰り返される可能性があるため、Index Table(Header、Body)が遷移先となる。又、Essence Container(Header、Body)、Footer Partitionに遷移先する可能性がある。このため、Index Table(Header、Body)(状態5)、Essence Container(Header、Body)(状態6)、Footer Partition(状態7)が遷移先として対応付けられる。
状態6.Essence Container:Essence Containerに属する状態であることを示す。Essence Containerは連続する可能性があるため、Essence Containerが遷移先となる。又、Body Partition、Footer Partitionに遷移する可能性がある。このため、Essence Container(Header、Body)(状態6)、Body Partition(状態4)、Footer Partition(状態7)が遷移先として対応付けられる。
状態7.Footer Partition:Footer Partitionに属する状態であることを示す。Footer PartitionはMXFデータの最終Partitionであり、そのままデータの最後となる可能性がある。又、メタデータが定義される可能性もあるため、Primerに遷移する可能性がある。更にIndex Tableに遷移する可能性もある。このため、End of Stream(状態12)、Primer(Footer)(状態8)、Index Table(Footer)(状態10)が遷移先として対応付けられる。
状態8.Primer(Footer):Primer(Footer)に属する状態であることを示す。Footer Partition後のPrimerとして定義され、Footer Partition後のMetadata(Footer)に遷移する可能性がある。このため、Metadata(Footer)(状態9)が遷移先として対応付けられる。
状態9.Metadata(Footer):Metadata(Footer)に属する状態であることを示す。Metadata(Header、body)(状態3)とは異なり、そのままデータの終わりとなる可能性や、Random Index Packに遷移する可能性がある。このため、End of Stream(状態12)、Random Index Pack(状態11)が遷移先として対応付けられる。ここで、Metadata(Footer)に属するKeyは、Metadata(Header、body)(状態3)と同じであるが、遷移先が異なるため、状態3と異なる状態9として設定される。
状態10.Index Table(Footer):Index Table(Footer)に属する状態であることを示す。Index Table(Footer)は連続する可能性があるため、Index Table(Footer)が遷移先となる。又、Index Table(Header、Body)(状態5)とは異なり、そのままデータの終わりとなる可能性や、Random Index Packに遷移する可能性がある。このため、Index Table(Footer)(状態10)、End of Stream(状態12)、Random Index Pack(状態11)が遷移先として対応付けられる。ここで、Index Table(Footer)(状態10)に属するKeyは、Index Table(Header、 body)(状態5)と同じであるが、遷移先が異なるため、状態5と異なる状態10として設定される。
状態11.Random Index Pack:Random Index Packに属する状態を示す。MXFデータの最後のKLVデータになる可能性があり、この後は必ずデータが終了する。このため、End of Stream(状態12)が遷移先として対応付けられる。
状態12.End Of Stream:MXFデータの終了を示す。従って遷移先として対応付けられる状態はない。
以上のような状態遷移テーブル22を用いることで、現在の状態の次に検索されるKeyが属する状態を予測することができる。検索されたKeyが属する状態と、予測された(遷移先の)状態とを照合することで、入力されたMXFデータが設定されたMXF規格に適合しているか否かを判定することができる。又、当該Keyのデータ位置を確認することができる。
又、本発明によるMXFデータ再生装置1000は、Keyリスト23と検出されたKeyとを照合することで、検出されたKeyが属する状態を特定する。図7に示すように、Keyリスト23として、Keyを示すデータコード、Keyが属する状態、及びKeyで特定されるデータの意味(データ内容)が対応付けられて記憶装置130に格納される。例えば、Key“0x06、0x0E、0x2B、0x34、0x01、0x02、0x01、0x01、0x0D、0x01、0x03、0x01、0x15、0x01、0x05、0x00”の属する状態は“Essence Container”であり、画像データを意味する。
CPU110は、MXFデータ検索プログラム21を実行することで、図5に示す検索処理部210としての機能を実現する。検索処理部210は、Key検出部211、Key回数判定部212、状態遷移部213、データ抽出部214の各機能を備える。図5を参照して、検索処理部210について説明する。
検索処理部210には、検索対象のMXFデータ100、検索対象のKeyを示す検索Key情報101、検索対象のKeyの出現する順番を示す検索Key回数102が入力される。この入力方法については、特に限定はしない。つまり、ハードディスクのような二次記憶装置からのデータを入力としてもよいし、図示しない外部装置(I/O装置160)からの入力でもよいし、ユーザ(入力装置140)からの入力でもよい。
入力データを基に、検索処理部210はMXFデータ100内の検索処理を行う。この検索処理は、記憶装置130に予め格納された状態遷移テーブル22とKeyリスト23を用いて行なわれる。検索処理によって抽出されたデータ(Value200)や当該データのMXFデータ100における位置は、出力装置150によって視認可能に出力される。あるいは、検索対象のデータ(Value200)が見つからなかった場合、見つからなかったことを通知するエラー情報が出力装置150によって出力される。
Key検出部211は、入力されたMXFデータ100を検索してKeyを検出する。又、Key検出部211は、状態遷移テーブル22と状態情報24とを用いて検出したKeyの属する状態を特定し、当該状態がMXF規格に適合するかを判定する。
詳細には、Key検出部211は、MXFデータ100を先頭から順に(入力順に)検索して、Keyを検出する。この際、Key検出部211は、位置情報25で示されるデータ位置からKeyを取得する。そして、Key検出部211は、Keyリスト23を参照して、検出したKeyの属する状態を特定する。一方、Key検出部211は、状態遷移テーブル22及び状態情報24を用いて予測された遷移先の状態と、検出されたKeyの属する状態とを照会することでMXFデータ100がMXF規格に適合しているか否かを判定する。ここで、状態情報24とは検出済みの最新のKeyの属する状態を示す情報である。すなわち、状態情報24によって、状態遷移テーブル22上において現在属している状態が特定される。Key検出部211は、現在属している状態の遷移先となる状態の候補を状態遷移テーブル22を参照して特定し、この候補と、検出したKeyの属する状態とを比較することで、規格に適合しているか否かを判定する。Key検出部211は、検出したKeyが規格に適合している場合、当該Keyを特定する情報(例えばKeyのコードやKeyが属する状態)をKey情報103として、Key回数判定部212及び状態遷移部213に出力する。
又、Key検出部211は、検出したKeyが規格に適合している場合、Keyの次に入力されるLengthを抽出することでValueのデータ長104を取得する。データ長104は、状態遷移部213及びデータ抽出部214に出力される。
Key回数判定部212は、所望のKey(検索対象のKey)を検出した回数をカウントし、当該回数が所望の回数に至ったかどうかを判定する。詳細には、Key回数判定部212には、検索Key情報101と検索Key回数102が入力される。検索Key情報101には、検索対象のKeyを特定する情報(例えばKeyのコード)が含まれる。Key回数判定部212は、検索Key情報101とKey情報103とが一致する回数をカウントする。これにより、検出対象のKeyの検出回数がカウントされる。Key回数判定部212は、カウント数が検索Key回数102に一致するか否かを判定し判定結果105をデータ抽出部214及び状態遷移部213に出力する。カウント値は、初期値として0が設定される。Key回数判定部212は、カウント数、すなわち検出対象のKeyの検出回数が検索Key回数102と一致する場合、データの抽出を行なうための判定結果105を出力する。Key回数判定部212により、検索Key情報101及び検索Key回数102によって指定された検索対象のデータ位置までKeyを検索することができる。
状態遷移部213は、検出されたKeyに応じて現在の状態を状態情報24に設定する。状態情報24は、初期状態としてStartに設定されている。状態遷移部213は、判定結果105を参照し、所望のKeyを検出した回数が所望の回数に達していない場合、Key情報103に応じた状態に状態情報24を更新する。状態情報24には、状態遷移テーブル22上において検出された最新のKeyが属している状態が設定される。又、遷移先の状態や検索対象のKeyは、Header、Body、Footer Partitionのうち、どのPartitionの状態かによって異なるものとなる。このため、状態情報24には、Keyが属する状態のみならず、Keyが属するPartition(Header、Body、Footer)も含めて設定される。すなわち状態情報24には、Header、Body、Footerいずれかを識別する情報が格納されている。ここで、Header、Body、Footerいずれかを識別する情報の初期値はHeaderに設定される。
状態遷移部213は、Key検出部211においてKeyを検索するデータ位置を示す位置情報25を設定、更新する。ここで、位置情報25は、初期値として0が設定される。状態遷移部213は、状態情報24を更新する際、Key検出部211で検出されたデータ長104分だけデータをスキップしてKeyの検出位置を変更し、位置情報25を更新する。
データ抽出部214は、Key回数判定部212における判定結果105に基づいて、Keyが検出された位置からデータ長104分のデータ(Value200)を抽出して出力する。この際、データ抽出部214は、Keyが検出された位置(検出位置25)を検出位置情報201として出力する。Value200や検出位置情報201は、出力装置150又は記憶装置130に出力される。
(動作)
次に、図8A及び図8Bを参照して、本発明によるデータ検索処理(アクセス処理)の動作の詳細を説明する。図8A及び図8Bは、本発明によるデータ検索処理の動作を示すフロー図である。
先ず、データの検索処理を開始する前に、検索対象となるKey(の位置)を指定する検索Key情報101及び検索Key回数102が入力される。
Key検出部211は、MXFデータ100における位置情報25に応じた読み込み位置から、Key分のデータサイズである16Byteを取得する(ステップS1)。これにより位置情報25で指定されたデータ位置からKeyが検出される。ここで、位置情報25の初期値は0であるため、Key検出部211は、MXFデータ100の先頭データから順に(入力順に)Keyを検出することとなる。
Key検出部211は、状態遷移テーブル22とKeyリスト23を参照して、検出したKeyが、現在特定されている状態の遷移先の状態に属する候補Keyに一致するかを判定する(ステップS2)。検出されたKeyが候補Keyのいずれにも一致しない場合、所望のデータが見つからなかった、もしくはMXFデータ100がMXF規格に適合した構造ではないとして、検索処理部210は、エラーを出力し処理を終了する(ステップS2No、S3)。
ステップS2において、検索されたKeyが候補Keyに一致する場合、すなわち、検索されたKeyが遷移先の状態に属する場合、Key検出部211は、検索されたKeyに後続する4Byteを取得しLengthを抽出する(ステップS2Yes、S4)。これにより後続するValueのデータ長104が抽出される。
次に、Key回数判定部212は、検索されたKeyが所望のKeyであるか否かを判定する(ステップS5)。ここでは、検出されたKeyが、入力された検索Key情報101の示すKeyに一致するかが判定される。検索されたKeyが所望のKeyと一致する場合、カウンタ値に1が加算されテップS7に移行する(ステップS5Yes、S6)。一方、検索されたKeyが所望のKeyと異なる場合、カウントアップすることなくステップS7に移行する(ステップS5No)。
Key回数判定部212は、カウンタ値が所望の回数(検索Key回数102)に達したかどうかを判定する(ステップS7)。
カウンタ値が検索Key回数102に達していない場合、状態遷移部213は、ステップS4で取得したデータ長104分のデータをスキップし、データ位置(位置情報25)に16+4+データ長104を加算する(ステップS8、S9)。これにより、現在のKeyの検出位置から16(Key分)+4(Length分)+L(Value分)だけスキップされた位置が、次回のKey検出位置となる。
状態遷移部213は、検出されたKeyが属する状態に現在の状態を遷移する(ステップS10)。ここでは、検出されたKeyが属する状態、Partitionに状態情報24が更新される。状態遷移部213は、検出されたKeyの属する状態及びPartitionを、状態遷移テーブル22及びKeyリスト23を参照して特定する。この際、状態遷移部213は、検出されたKeyがHeader Partition、Body Partition、Footer Partitionのいずれかに属するかを確認し、特定したPartitionを現在のPartitionとして状態情報24を更新する(ステップS11〜S16)。
状態情報24が更新され、引き続きMXFデータ100が入力されると、ステップS1に移行し、再度Keyの検出が行なわれる(ステップS17No)。この際、ステップS9で設定された検出位置におけるKeyが検出される。以降、ステップS7においてカウンタ値が検索Key回数102に達するまで、あるいは、MXFデータ100の入力が終了する(状態がEnd Of Streamに達する)まで、上述の動作が繰り返される。
ステップS7において、カウンタ値が、検索Key回数102に一致する場合、すなわち所望するKeyの出現回数が所望回数に達した場合、データ抽出部214は、位置情報25にKey(16Byte)とLength(4Byte)分を加算する(ステップS18)。すなわち、データ位置をValueの先頭とする。そして、その位置から抽出されたデータ長104分のデータ(Value200)を抽出して出力する(ステップS19)。この際、Value200を抽出したデータ位置(位置情報25)を検出位置情報201として出力しても良い。
以上のように、本発明によれば、入力されたMXFデータ100を入力順に検索して所望の位置のKeyを抽出することで、検索対象となるデータ(Value200)やデータ位置(検出位置情報201)を出力することができる。
又、本発明では、検出されたKeyの属する状態がMXF規格に適合するか否かを、状態遷移テーブル22を用いて判定している。このため、所望のデータを検索するのと同時に、入力データが正しいMXFデータであるかどうかを確認することができる。
更に、本発明では、Keyを利用してアクセス処理が行なわれるため、Index Tableを持たないフォーマットのMXFデータに対しても、所望のデータにアクセスすることができる。又、入力順に所望のデータか否かを判定できるため、Index Tableの入力を待たずに、効率的かつ高速に所望データにアクセスすることができる。これにより、例えば、MXFデータのストリーミング中(受信中)でも、所望のデータにアクセスすることが可能となる。
MXFデータにはEssenceだけではなく、素材の長さやタイトル等が記述されたメタデータ情報という重要なデータも格納されている。このメタデータ情報の位置を示す情報は、MXFデータ内には定義されていないため、効率的な検索方法は確立されていない。このようなデータを検索する場合、本発明のようにKeyを用いることは有効である。一方、各状態に属するKeyとしては、規格上、図7に示すKeyリスト23のように分類される。Keyの種類は、Partitionが異なっていても同じものとなる。例えば、MetadataにはMetadata(Header、Body)とMetadata(Footer)が存在するが、属するKeyは、どのPartitionのMetadataでも同じKeyが対応づけられている。このため、データ項目によっては、Keyのみによって、所望のデータの位置を特定することはできない。しかし、本発明では、所望のKeyの属する状態(Partitionを含む)を用いているため、Partitionが異なるデータをも区別して特定することができる。このため、Metadataを含む全てのデータ項目に対しても効率的に検索(アクセス)することができる。
又、予め用意された状態遷移テーブル22によって遷移先となる状態の候補を絞りこんでいるため、Keyの属する状態の特定が容易となる。MXFデータにおけるKeyが属する状態の数は、数多く存在するため、本発明のように、状態遷移テーブル22を用意してKeyの特定を行なうことは、検索処理の負荷量や処理時間の面で有効である。
(実施例)
次に、本発明によるデータ検索処理の具体例を説明する。以下では、図9に示すフォーマットのMXFデータ100から301フレーム目に出現するデジタルビデオデータへの検索(アクセス)処理を一例に説明する。図9に示すMXFデータ100は、Index Tableの存在しないMXFストリーミングデータである。ここで、図9に示される各ブロックの16という値はKeyのデータ長を示し、4という値はLengthのデータ長を示す。又、L1、L2、L3.…は各Valueのデータ長を示す。
ここで、検索処理部210には、検索Key情報101として、ビデオデータをデータ項目とするKey“0x06、0x0E、0x2B、0x34、0x01、0x02、0x01、0x01、0x0D、0x01、0x03、0x01、0x15、0x01、0x05、0x00”が入力され、検索Key情報101としてカウント値“301”が入力される。又、状態遷移テーブル22として図6に示す遷移テーブルが用意され、Keyリスト23として図7に示すリストが用意される。検索処理部210は、Keyリスト23を参照して、Key情報101で指定されたKey(所望のKey)が属する状態が、Essence ContainerのVideoデータであることを確認する。
以下では、Key回数判定部212においてカウントされる所望Keyの出現回数をカウントC、状態情報24として設定される現在の状態及びPartitionの遷移先となる候補をそれぞれ状態S及びPatition P、位置情報25として設定される検索位置をデータ位置Dとして説明する。
検索処理の開始時、初期設定値としてカウントC“0”、データ位置D“0”、現在の状態“Start”が設定され、遷移先との候補となる状態SはHeader Partition、Partition PはHeaderとなる。
1巡目
検索処理部210にMXFデータ100が入力されると、Keyがデータの先頭から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがHeader Partitionに属するか否かが判定される。
取得したKeyがHeader Partitionに属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L1”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態は、所望のKeyの属するEssence ContainerのVideoと異なるため、カウントCは加算されない。
カウントが所望回数(301)に達していないため、1KLV分(16+4+L1)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1)。
検出されたKeyの状態がHeader Partitionであるため、現在の状態(状態情報24)は、StartからHeader Partitionに変更される。これにより、遷移先の候補となる状態SはPrimer、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“0”、データ位置D“16+4+L1”、現在の状態“Header Partition”、遷移先の候補となる状態S“Primer”、遷移先の候補となるPartition P“Header、Body”となる。
2巡目
次に、Keyが、データ位置D“16+4+L1”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがPrimer(Header、Body)に属するか否かが判定される。
取得したKeyがPrimer(Header)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L2”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態“Primer(Header)”は、所望のKeyの属するEssence ContainerのVideoと異なるため、カウントCは加算されない。
カウントが所望回数(301)に達していないため、1KLV分(16+4+L2)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2)。
検出されたKeyの状態がPrimer(Header)であるため、現在の状態(状態情報24)は、Header PartitionからPrimer(Header)に変更される。これにより、遷移先の候補となる状態SはPrimer、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“0”、データ位置D“16+4+L1+16+4+L2”、現在の状態“Primer(Header、Body)”、遷移先の候補となる状態S“Metadata”、遷移先の候補となるPartition P“Header、Body”となる。
3巡目
Keyが、データ位置D“16+4+L1+16+4+L2”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがMetadata(Header、Body)に属するか否かが判定される。
取得したKeyがMetadata(Header)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L3”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態“Metadata(Header)”は、所望のKeyの属するEssence ContainerのVideoと異なるため、カウントCは加算されない。
カウントが所望回数(301)に達していないため、1KLV分(16+4+L3)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2+16+4+L3)。
検出されたKeyの状態がMetadata(Header)であるため、現在の状態(状態情報24)は、Primer(Header)からMetadata(Header)に変更される。これにより、遷移先の候補となる状態SはMetadata、Body Partition、Index Table、Essence Container、Footer Partitionとなり、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“0”、データ位置D“16+4+L1+16+4+L2+16+4+L3”、現在の状態“Metadata(Header)”、遷移先の候補となる状態S“Metadata、Body Partition、Index Table、Essence Container、Footer Partition”、遷移先の候補となるPartition P“Header、Body”となる。
4巡目
Keyが、データ位置D“16+4+L1+16+4+L2+16+4+L3”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがMetadata(Header、Body)、Body Partition、Index Table(Header、Body)、Essence Container、Footer Partitionのいずれかに属するか否かが判定される。
取得したKeyがMetadata(Header)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L4”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態“Metadata(Header)”は、所望のKeyの属するEssence ContainerのVideoと異なるため、カウントCは加算されない。
カウントが所望回数(301)に達していないため、1KLV分(16+4+L4)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2+16+4+L3+16+4+L4)。
検出されたKeyの状態がMetadata(Header)であるため、現在の状態(状態情報24)はMetadata(Header、Body)を維持する。これにより、遷移先の候補となる状態SはMetadata、Body Partition、Index Table、Essence Container、Footer Partitionとなり、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“0”、データ位置D“16+4+L1+16+4+L2+16+4+L3+16+4+L4”、現在の状態“Metadata(Header、Body)”、遷移先の候補となる状態S“Metadata(Header、Body)、Body Partition、Index Table(Header、Body)、Essence Container、Footer Partition”、遷移先の候補となるPartition P“Header”となる。
5順目
Keyが、データ位置D“16+4+L1+16+4+L2+16+4+L3+16+4+L4”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがMetadata(Header、Body)、Body Partition、Index Table(Header、Body)、Essence Container、Footer Partitionのいずれかに属するか否かが判定される。
取得したKeyがEssence Container(Header)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L5”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態は、Essence Container(Video 1Frame)であり、所望のKeyの属するEssence ContainerのVideoと一致する。このため、カウントCに1が加算される。
カウントC=1は、所望回数(301)に達していないため、1KLV分(16+4+L5)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2+…+16+4+L5)。
検出されたKeyの状態がEssence Container(Header)であるため、現在の状態(状態情報24)は、Metadata(Header)からEssence Container(Header)に変更される。これにより、遷移先の候補となる状態Sは、Essence Container、Body Partition、Footer Partitionとなり、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“1”、データ位置D“16+4+L1+16+4+L2+…+16+4+L5”、現在の状態“Essence Container(Header)”、遷移先の候補となる状態S“Essence Container、Body Partition、Footer Partition”、遷移先の候補となるPartition P“Header、Body”となる。
6順目
Keyが、データ位置D“16+4+L1+16+4+L2+…+16+4+L5”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがEssence Container(Header、Body)、Body Partition、Footer Partitionのいずれかに属するか否かが判定される。
取得したKeyがEssence Container(Header)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L6”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態はEssence Container(Audio 1Frame)であり、所望のKeyの属するEssence ContainerのVideoと異なるため、カウントCは加算されない。
カウントC=1は、所望回数(301)に達していないため、1KLV分(16+4+L6)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2+…+16+4+L6)。
検出されたKeyの状態がEssence Container(Header)であるため、現在の状態(状態情報24)はEssence Container(Header)を維持する。これにより、遷移先の候補となる状態Sは、Essence Container 、Body Partition、Footer Partitionとなり、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“1”、データ位置D“16+4+L1+16+4+L2+…+16+4+L6”、現在の状態“Essence Container(Header、Body)”、遷移先の候補となる状態S“Essence Container、Body Partition、Footer Partition”、遷移先の候補となるPartition P“Header、Body”となる。
以降、同様の処理が行なわれ、604巡目の処理までに、Essence Container(Header、Body)のVideoデータに属するKeyが300回カウントされる。この間、Essence Containerのみが取得されていたため、状態SはEssence Containerを維持し、Partition PはHeaderを維持する。すなわち、604巡目の処理によって、カウントC“300”、データ位置D“16+4+L1+16+4+L2+…+16+4+L604”、現在の状態“Essence Container(Header)”、遷移先の候補となる状態S“Essence Container、Body Partition、Footer Partition”、遷移先の候補となるPartition P“Header、Body”となる。
605順目
Keyが、データ位置D“16+4+L1+16+4+L2+…+16+4+L604”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがEssence Container(Header、Body)、Body Partition、Footer Partitionのいずれかに属するか否かが判定される。
取得したKeyがBody Partitionに属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L605”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態“Body Partition”は所望のKeyの属するEssence ContainerのVideo(映像データ)と異なるため、カウントCは加算されない。
カウントC=300は、所望回数(301)に達していないため、1KLV分(16+4+L605)分、検出対象となるデータ位置をスキップする。又、データ位置Dを1KLV分加算する(D=16+4+L1+16+4+L2+…+16+4+L605)。
検出されたKeyの状態がBody Partitionであるため、現在の状態(状態情報24)は、Essence Container(Header)からBody Partitionに変更される。これにより、遷移先の候補となる状態Sは、Primer、Index Table、Essence、Container、Footer Partitionとなり、遷移先の候補となるPartition PはHeader、Bodyとなる(図6参照)。
以上の処理により、カウントC“300”、データ位置D“16+4+L1+16+4+L2+…+16+4+L605”、現在の状態“Body Partition”、遷移先の候補となる状態S“Primer、Index Table、Essence、Container、Footer Partition”、遷移先の候補となるPartition P“Header、Partition”となる。
606順目
Keyが、データ位置D“16+4+L1+16+4+L2+…+16+4+L604”から16Byteとして取得される。検索処理部210は、取得したKeyがMXF規格に正当であるかをチェックする。ここでは、取得したKeyがPrimer(Header、Body)、Index Table(Header、Body)、Essence Container(Header、Body)、Footer Partitionのいずれかに属するか否かが判定される。
取得したKeyがEssence Container(Body)に属しているため、検索処理部210は、後続の4Byte(Length)を取得する。ここでLengthが示すデータ長104は、“L606”である。
次に、検索処理部210は、取得したKeyが所望のKeyであるかをチェックする。取得したKeyの状態はEssence Container(Video 301Frame)であり、所望のKeyの属するEssence ContainerのVideoに一致し、カウントCに1が加算され、カウントC“301”となる。
カウントC=301は、所望回数(301)に一致するため、検索処理部210は、データ位置DにKeyとLengthのデータ長分(16+4)だけ加算する(D=16+4+L1+16+4+L2+…+16+4+L605+16+4)。そして検索処理部210は、データ位置DからLengthで指定されたデータ長(L606)分のデータ(Value200)を抽出して出力する。この際、データ位置“16+4+L1+16+4+L2+…+16+4+L605+16+4”が検出位置情報201として出力されても良い。
出力されたValue200(ここでは、301Frame目のビデオデータ)や検出位置情報201は、出力装置150によって視認可能に出力される。
以上のように、本発明によるMXFデータ再生装置1000によれば、Index Tableを有していないフォーマットのMXFデータでも、所望のデータを高速に読み出し再生することができる。又、Index Tableの入力を待たずにMXFデータ内の所望のデータを読み出して再生することができるため、MXFデータへのアクセス効率が向上する。
MXFデータの中にはディジタルビデオデータ、オーディオデータが格納されており、システム間でそれらのデータを交換、授受する際に用いられる放送データフォーマットとして利用される。このためMXFデータは、ネットワークを介して交換することが多い。
従来のデータの再生方法では、Index Tableを用いてデータ位置を特定しているため、ネットワークを介してMXFデータを取得している間は、Index Tableが受信されるまで所望データ位置を特定することはできなかった。一方、本発明では、Index Tableを用いずKeyを利用して所望データへのアクセスを実現している。このため、データの転送中においても、MXFデータ内の所望のデータ位置を効率的に検索することができる。すなわち、データの受信中においても所望するディジタルビデオデータ位置を容易に特定でき、取得したデータ位置を利用して当該ビデオデータの再生、記録、加工等の処理を行うことができる。
又、通常、Index TableはEssenceのみの検索に利用するものであり、そのほかのデータの位置については、Index Tableの情報は活用できない。しかし、本発明では、Keyを用いて所望データの検索を行なうため、Essence Contaeinerのみならず他のデータも高速にアクセスし、抽出することができる。
更に、本発明では、Keyの属する状態が、MXF規格に適合しているかを判定しながら、アクセス対象のデータを検索している。このため、本発明によるMXFデータ再生装置1000を用いれば、再生するデータ構造(KLVデータの並び)が、予め設定されたMXF規格に適合しているかどうかを判定することができる。
更に、本発明では、MXFデータ規格特性を利用して、データの検索を行なう前に、次に出てくる検索対象Keyを事前に絞込み、検索時間の減少、効率的な検索を行うことができる。
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。例えば、状態遷移テーブル22やKeyリスト23は上述の仕様に限らず、状態の分類方法や、規格に応じた遷移ルールに基づいて適宜変更され得る。