(57)【特許請求の範囲】
【請求項１】
複数の多重化されたメディア・データを各メディアに分離して再生する多重化分離装置において、
前記複数の多重化されたメディア・データ及び各メディア・データの属性情報を含むファイルを受信する受信手段と、
前記受信したファイルに含まれる各メディア・データを、該ファイルを受信しながら再生する場合、前記受信したファイルに含まれる属性情報に基づいて前記各メディア・データがインターリーブされてファイルに格納されているか否か及び前記ファイルを受信しながら再生する場合に必要となるバッファサイズを抽出する抽出手段と、
前記抽出手段が、各メディア・データがインターリーブされ、かつ抽出したバッファサイズが自己のバッファのサイズ内のときのみファイルを受信しながら再生することが可能と判断し、各メディア・データがインターリーブされていない場合、又は前記抽出手段が抽出したバッファサイズが自己のバッファのサイズに納まらないときはファイルを受信しながら再生することが不可能と判断する判定手段とを備え、
該抽出手段は、受信しながら再生することが可能であると判断した後、前記ファイルに格納されインターリーブによって分割されたメディア・データ毎にバッファサイズが自己のバッファのサイズ内であるかの判断を継続し、メディア・データの再生中に抽出したバッファサイズが自己のバッファのサイズに納まらないと判断すると、前記受信手段に対して受信中止を指示することを
特徴とする多重化分離装置。
【請求項２】
前記複数の多重化されたメディア・データは、オーディオデータとビデオデータを含むことを特徴とする請求項１記載の多重化分離装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、多重化分離装置及びその方法並びに多重化装置及びその方法に係り、特に、複数の情報が多重化されたデータストリームから各情報を分離する多重化分離装置及びその方法並びに複数のデータストリームを多重化する多重化装置及びその方法に関するものである。
【０００２】
【従来の技術】
ＩＳＯ／ＩＥＣ１４４９６−ｌ ＭＰＥＧ−４システムパートは、ビデオ、或いは、オーディオなどのストリームの多重化、シーン記述に関して規定をしている(ISO/IEC14496-1, "Information technology-Coding of audio-visual objects-Part l: Systems", 2000)。ここで、ＭＰＥＧ−４ファイル・フォーマット（以下単に、ＭＰ４、或いは、ＭＰ４ファイル・フォーマットと称する。）は、この規格中で規定されたマルチメディア・コンテンツ用ファイル・フォーマットであり、このフォーマットに従えば、ビデオ或いはオーディオなどの複数のメディア情報を多重化して一つのファイルとして保存することができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記した従来技術においては、ビデオ或いはオーディオデータストリームのような複数のメディア・データを格納する際に、インターリーブするかどうかについては規定されていない。
【０００４】
これに対して、ＭＰ４ファイルをサーバーからダウンロードしながら、並行してこのファイルに含まれるビデオ或いはオーディオデータストリームを同時に再生するような場合、複数のメディア・データがデコーダのバッファモデルを満たす範囲でインターリーブされている必要がある。
このため、ＭＰ４ファイルをサーバーからダウンロードしながら同時にこのファイルに含まれるビデオ或いはオーディオデータストリームを再生する場合、ＭＰ４ファイルの途中まで再生処理が可能であったとしても、最後までメディア・データがインターリーブされている保証がないため、最悪の場合、途中で再生処理が一時停止常態になる等の問題がある。
【０００５】
そこで、本発明は、上記の問題を解決するためになされたものであり、その目的は、所定のファイルフォーマットのファイルをダウンロードしながら再生することが可能か否かを容易に判定して多重化分離する多重化分離装置及び方法を提供することにある。
【０００６】
また、この発明の目的は、所定のファイルフォーマットのファイルをダウンロードしながら再生することが可能か否かを容易に判定するに適するファイルにメディア・データを多重化する多重化装置及び方法を提供することにある。
【０００７】
更に、この発明の目的は、メディア・データをデコードするのに必要なバッファサイズ及びインターリーブされているかどうかを示す情報を格納する多重化装置及びその方法並びにその情報を用いてメディア・データがインターリーブされているか否か並びにデコード処理が可能か否かを容易に判定して多重化分離する多重化分離装置及び方法を提供することにある。
【０００８】
【課題を解決するための手段】
この発明によれば、
複数の多重化されたメディア・データを各メディアに分離して再生する多重化分離装置において、
前記複数の多重化されたメディア・データ及び各メディア・データの属性情報を含むファイルを受信する受信手段と、
前記受信したファイルに含まれる各メディア・データを、該ファイルを受信しながら再生する場合、前記受信したファイルに含まれる属性情報に基づいて前記各メディア・データがインターリーブされてファイルに格納されているか否か及び前記ファイルを受信しながら再生する場合に必要となるバッファサイズを抽出する抽出手段と、
前記抽出手段が、各メディア・データがインターリーブされ、かつ抽出したバッファサイズが自己のバッファのサイズ内のときのみファイルを受信しながら再生することが可能と判断し、各メディア・データがインターリーブされていない場合、又は前記抽出手段が抽出したバッファサイズが自己のバッファのサイズに納まらないときはファイルを受信しながら再生することが不可能と判断する判定手段とを備え、
該抽出手段は、受信しながら再生することが可能であると判断した後、前記ファイルに格納されインターリーブによって分割されたメディア・データ毎にバッファサイズが自己のバッファのサイズ内であるかの判断を継続し、メディア・データの再生中に抽出したバッファサイズが自己のバッファのサイズに納まらないと判断すると、前記受信手段に対して受信中止を指示することを
特徴とする多重化分離装置が提供される。
【０００９】
また、上述した多重化分離装置において、前記複数の多重化されたメディア・データは、オーディオデータとビデオデータを含む多重化分離装置が提供される。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら、この発明の一実施の形態に係る多重化分離装置及び多重化分離方法ついて説明する。
【００１５】
図１は、この発明の一実施の形態に係る多重化分離装置の機能構成例を示すブロック図である。図１に示される多重化分離装置では、ＭＰ４のフォーマット形式で多重化された入力データ１０１がダウンロード処理部１０２にて受け取られ、このダウンロード処理部１０２内のメモリ、例えば、ローカルメモリ上にＭＰ４形式のファイル１１０として保存される。ダウンロード処理部１０２では、ＭＰ４ファイルをダウンロードして保存すると同時にダウンロードしながらそのＭＰ４ファイル内のデータを再生処理するために受け取った入力データ１０１を逐次分離部１０３に転送している。
【００１６】
分離部１０３においては、受け取ったＭＰ４ファイルのデータが順次解析され、ヘッダ情報及びデータ情報とに分離される。ヘッダ情報は、ヘッダ情報を解析するヘッダ解析部１０４に転送され、データ情報は、ＭＰ４データを解析するデータ解析部１０６に転送される。ヘッダ解析部１０４においては、受け取ったヘッダ情報が解析されて再生処理に必要な各種パラメータが抽出される。この各種パラメータには、多重化されているメディアの数、そのメディアのコーデック種別、各メディア・データに含まれるサンプルの数、サンプル間の時間間隔、各サンプルのサイズ並びにサンプルが実際に格納されている位置のような情報及びインターリーブ情報がある。
【００１７】
ヘッダ解析部１０４は、各種パラメータの内のデータ情報を解析するに必要なパラメータ、例えば、コーデック種別或いはサンプルの数、サンプル間の時間間隔、サンプルサイズ、サンプル格納位置情報をデータ解析部１０６に転送している。また、インタリーブの判定に必要なパラメータ、例えば、インターリーブ情報等は、ヘッダ解析部１０４からインターリーブ判定部１０５に転送される。インターリーブ判定部１０５は、受け取ったインターリーブ情報を解析してデータの再生処理が可能かどうかを判定する。判定結果が再生不可の場合、その旨をダウンロード処理部１０２に通知する。ダウンロード処理部１０２は、インターリーブ判定部１０５から再生不可通知を受け取ると、入力データ１０１を分離部１０３に転送する処理を中止し、再生対象とされるデータの再生処理を停止する。判定結果が再生可能の場合、その旨を分離部１０３へ通知する。分離部１０３は、インターリーブ判定部から再生可能通知を受け取ると初めてデータ情報をデータ解析部１０６に転送する処理を開始する。データ解析部１０６は、ヘッダ解析部１０４から受け取ったデータ情報を解析するのに必要なパラメータ、例えば、コーデック種別、サンプルの数、サンプル間の時間間隔、サンプルサイズ、サンプル格納位置情報を基に、分離部１０３から受け取るデータ情報を逐次解析し、各メディア単位のデータストリームを取り出す。各メディアがインターリーブされている場合には、この段階で、各メディア単位に、例えば、後に説明するオーディオチャンク及びビデオチャンクの単位でデータが分離される。分離された各メディア・データは、再生処理部１０７へ逐次転送される。
【００１８】
再生処理部１０７は、データ解析部１０６より受け取ったメディア・データを、メディア単位にデコード処理し、その出力データ１０８，１０９を各メディア単位にあらかじめ決められている再生デバイスへ出力する。例えば、ＭＰＥＧ−４ビデオ・データは、ＭＰＥＧ−４ビデオデコード処理された上、フレーム単位の画像データとして出力データ１０８に出力され、フレームバッファへ転送される。例えば、ＡＡＣ（Advanced Audio Coding）データは、ＡＡＣデコード処理された上、フレーム単位のオーディオデータとして出力データ１０９に出力され、Ｄ／Ａ変換器等のオーディオ出力デバイスへ転送される。デコードされるメディアの種別としては、ビデオやオーディオの他に、文字や静止画、ＭＩＤＩ情報、制御データ等があり、この発明の実施の形態に係る多重化分離装置では、その種類を限定するものではない。
【００１９】
図２は、図１に示される多重化分離装置において処理されるＭＰ４多重化ファイルフォーマットの構造を示している。ＭＰ４は、ＭＰＥＧ−４ファイルフォーマットを省略した称呼であって、このＭＰ４は、ＭＰＥＧ−４ビデオまたはＭＰＥＧ−４オーディオコーデックに従って符号化されたビデオストリーム及び／又はオーディオストリームを格納するためのファイル・フォーマットである。このファイル・フォーマットには、定義により、ＭＰＥＧ−４ビデオまたはＭＰＥＧ−４オーディオ以外のコーデックデータも格納することが可能である。尚、このＭＰ４データは、ファイルとしてディスク上に格納されている場合、或いは、バイナリイメージとしてメモリ上に格納されている場合等が想定される。
【００２０】
図２に示すように、ＭＰ４は、オブジェクト構造を有し、幾つかのアトム(atom)より構成されている。このアトムは、文献によりボックスと称せられる場合があることに注意されたい。ＭＰ４では、アトム中に、さらにアトムを入れた入れ子状態で格納することができるとされている。ここで、入れ子状態、即ち、階層構造になっているアトムの最初のアトム、即ち、最上位のアトムは、トップ・レベル・アトムと称せられる。図２には、トップ・レベル・アトムのみが示されている。ここでは、通常のオーディオ及びビデオ・データが多重化されているＭＰ４形式のファイルを想定している。
【００２１】
通常の場合、ＭＰ４ファイルは、ムービー・アトム(moov: Movie Atom)１２及びメディア・データ・アトム(mdat: Media Data Atom)１３から構成される。これらムービー・アトム(moov: Movie Atom)１２及びメディア・データ・アトム(mdat: Media Data Atom)１３に加えて図２に示すようにトップ・レベル・アトム、即ち、第１層には、ファイル・タイプ・アトム(fty: File Type Atom)１１、ムービー・フラグメント・アトム(moof: Movie Fragment Atom)１４、フリー・スペース・アトム(free: Free Space Atom)１５、スキップ・アトム(skip: Skip Atom)１６及びユーザデータ・アトム(udat: User Data Atom)１７がある。これらのアトムは、ＭＰ４ファイル中に必須のもの、或いは、オプションで記述されれば良いものがある。
【００２２】
図２に示されるＭＰ４ファイルには、インターリーブ情報を格納するために、ユーザ拡張モバイル・アトム（Mobile Atom）としてユニバーサル・ユニークＩＤアトム（uuid: Universal Unique ID Atom）１８がトップレベル、即ち、第１階層に付加されている。このユニバーサル・ユニークＩＤアトムの詳細については、後に詳述する。
【００２３】
ここで、各トップ・レベル・アトムの機能について説明する。ファイル・タイプ・アトム１１は、ファイルのブランド或いはバージョン等のファイルのタイプを格納するアトムであり、ＭＰ４で定まったファイルであることが記述される。ムービー・アトム１２は、ＭＰ４データ全体のメタデータ、つまり符号化されたメディアのコーデック・ストリームをデコードするために必要な情報等、例えば、データのデコードに必要とされる属性及びアドレス等が記述されている情報を格納している。メディア・データ・アトム１３は、実際の符号化されたメディアのコーデック・ストリーム、即ち、ビデオ・ストリーム、或いは、オーディオ・ストリーム等のコンテンツ・データを格納している。ムービー・フラグメント・アトム１４は、ムービー・アトム１２の情報を分割して格納するためのアトムである。フリー・スペース・アトム１５、スキップ・アトム１６及びユーザ・データ・アトム(udat: User Data Atom)１７は、ユーザー・データや、パディングのためにパディング・データを格納するためのアトムである。
【００２４】
次に、アトムの構造について説明する。アトムは、全てのアトムにおいて共通の構造を有している。図３には、共通の構造を有するアトム２０が示されている。このアトム２０においては、先頭の４バイトがアトムのサイズをバイトで示すためのサイズ・フィールド２１に定められている。次の、４バイトは、アトムの種別を識別するタイプ・フィールド２２に定められている。アトムの種別は、４つのキャラクターにより識別され、例えば、ムービー・アトム１２の場合は、”moov”となり、メディアデータ・アトムの場合は”mdat”となる。この４文字のキャラクターをマッチングさせることによりアトムの種別を識別することが可能となる。次に、タイプ・フィールド２２に続いてアトム・データ部２３が格納されている。このアトム・データの構造は、各アトムにおいて用途によりシンタックスが定義されている。
【００２５】
図４に示されるように、ムービー・アトム(moov: Movie Atom）は、ヘッダとして第２階層にあるＭＰ４ファイルの作成時刻及びＭＰ４ファイルのコンテンツ長等のヘッダ情報が記述されているムービー・ヘッダ・アトム(mvhd: Movie Header Atom)を含んでいる。また、ムービー・アトム(moov)は、オブジェクト、即ち、再生対象に関する情報が記述されているオブジェクト・ディスクリプタ・アトム(iods: Object descriptor Atom)及び多重化されているメディア情報に関する各種パラメータ、例えば、オーディオ及びビデオが多重化されている場合には、オーディオメディアのパラメータ、ビデオメディアのパラメータが記述されているトラック・アトム(trak: Track Atom)を含んでいる。このトラック・アトム（trak)は、多重化されているメディアが多数あれば、そのメディアの数だけ用意される。例えば、オーディオとビデオとが多重化されたコンテンツにあっては、オーディオメディアトラック及びビデオメディアのトラックが用意され、そのオーディオ用のトラックにオーディオメディアのパラメータが格納され、ビデオ用のトラックにビデオメディアのパラメータが格納される。
【００２６】
また、図４に示されるようにトラック・アトム(trak)は、第３階層にあるトラックの作成時刻及びトラックＩＤ（識別子）と称されるトラックを識別するための一連の番号が格納されているトラック・ヘッダ・アトム(tkhd: Track Header Atom)、トラックに関して記述されたトラック・リファレンス・アトム(tref: Track Reference Atom)、編集情報に関してのエディット・アトム(edts: Edit Atom)及びメディアの情報に関して記述されたメディア・アトム(mdia: Media Atom)を含んでいる。エディット・アトム(edts)は、第４階層に編集リスト情報が記述されたエディト・リスト・アトム(elst: Edit List Atom)を含み、メディア・アトム(mdia: Media Atom)は、第４階層にこのメディアトラックのタイムスケール等の情報が格納されるメディア・ヘッダ・アトム(mdhd: Media Header Atom)、ヘッダを参照する情報が記述されたハンドラー・レファレンス・アトム(hdlr: Handler Reference Atom)及びメディアに関する情報が格納されているメディア・インフォメーション・アトム(minf: Media information Atom)を含んでいる。メディア・インフォメーション・アトム(minf)は、更に第５階層にトラックに格納されているメディアがビデオであることを示すビデオ・メディア・ヘッダ・アトム(vmhd: Video Media Header Atom)、或いは、トラックに格納されているメディアがオーディオであることを示すサウンド・メディア・ヘッダ・アトム(smhd: Sound Media Header Atom)、ヒント・メディアのヘッダ情報が記述されたヒント・メディア・ヘッダ・アトム(hmhd: Hint Media Header Atom)、メディアがビデオ或いはオーディオ以外のＭＰＥＧ−４ストリームである場合に、ＭＰＥＧ−４のヘッダ情報が記述されたエムペグ・アトム(<mpeg>: MPEG-4 Media Atoms) 、メディア情報が記述されたデータ・インフォーメーション・アトム(dinf: Data Information Atom)及びサンプルに関しての情報が記述されたサンプル・テーブル・アトム(stbl: Sample Table Atom)を含んでいる。ビデオ・メディア・ヘッダ・アトム(vmhd: Video Media Header Atom)及びサウンド・メディア・ヘッダ・アトム(smhd: Sound Media Header Atom)は、トラックに格納されているメディア、即ち、オーディオかビデオ化の種別に応じて択一的に記載される。更にまた、データ・インフォーメーション・アトム(dinf)は、データを参照する情報が記述されたデータ・リファレンス・アトム(dref: Data Reference Atom)を含み、また、サンプル・テーブル・アトム(stbl)は、各サンプルの時間間隔が設定されているでデコーディング・タイム・トウ・サンプル・アトム(stts: Decoding time to Sample Atom) 、サンプルに対するデコード時間が記述されたコンポジション・タイム・トウ・サンプル・アトム(ctts: Composition Time to Sample Atom)、サンプルの同期情報が記述されたシンク・サンプル・アトム(stss: Sync Sample Atom）、コーデックの種別やデコードに必要となる各種情報が設定されているサンプル・ディスクリプタ・アトム(stsd: Sample Description Atom) 、トラック中のサンプルの総数（sample_count）及び各サンプルのデータ・サイズ（entry_size）が設定されているサンプル・サイズ・アトム(stsz: Sample Size Atom)、チャンク内のサンプル数(sample_per_chunk)及びサンプルのインデックス(sample_description_index)が記述されたサンプル・トウ・チャンク・アトム(stsc: Sample to Chunk Atom）、チャンクに関するファイルの先頭からのオフセット位置情報(chunk_offset)が記述されるチャ��ク・オフセット・アトム(stco: Chunk Offset Atom)、同期情報が記述されたシャドウ・シンク・アトム(stsh: Shadow Sync Sample Atom)及びディグレーション・プライオリティ・アトム(stdp: Degradation Priority Atom)を含んでいる。サンプル・ディスクリプタ・アトム(stsd: Sample Description Atom)は、そのコーデック種別情報等に依存して複数個設定することができる。
【００２７】
図２及び図４に示すようにインターリーブ情報を格納するためにユニバーサル・ユニークＩＤアトム（uuid: Universal Unique ID Atom）１８がトップレベルに付加されている。このユニバーサル・ユニークＩＤアトム(uuid)１８は、例えば、下記に示されるような定義（数１）に従ったデータ構造を有している。
【００２８】
【数１】
0004383721.tif 000002
【００２９】
ここで、上記定義において、変数インターリーブ（unsigned int(32) interleave）には、インターリーブの有無を示す情報が格納される。この変数インターリーブ（unsigned int(32) interleave）には、例えば、インターリーブなしの場合に、値”０”が設定され、インターリーブありの場合に、値”１”が設定される。また、変数トラックカウント（unsigned int(32) track_count）には、ファイルに含まれるトラックの数が設定される。この変数トラックカウント（unsigned int(32) track_count）には、例えば、オーディオ及びビデオのトラックから構成されるＭＰ４ファイルの場合、値“２”が設定される。変数トラックＩＤ（unsigned int (32) track_id）には、トラックヘッダ・アトム（tkhd）に設定されるトラックＩＤと同一のＩＤが設定され、トラック・アトム（trak）と関連付けられる。変数エントリーカウント（unsigned int(32) entry_count）には、サンプル・ディスクリプタ・アトム（stsd）に設定されるコーデック種別情報の個数が設定され、サンプル・ディスクリプタ・アトム（stsd）内の特定のコーデック種別と関連付けられる。変数デコードバッファサイズ（bit24 decoderBufferSize）には、サンプル・ディスクリプタ・アトム（stsd）で指定される特定のコーデックに対するデコード処理に必要となるバッファのサイズが設定される。このように、ユニバーサル・ユニークＩＤアトム(uuid)には、デコーダの有無や、デコード処理に必要となるバッファのサイズなどのインターリーブ情報が格納されている。
【００３０】
尚、ＭＰ４では、上述したアトムは、図２及び図４に示すような順序で配列されることは要求されず、前述したような規定項目の範囲内で構成を変更することが可能である。しかし、ここでは、特に具体的な規定内容については説明を省略する。ただし、アトムによって出現個数、位置、有無が規定され、データによりトップ・レベル・アトムの構成が異なることがＭＰ４の特徴であるとされている。
【００３１】
尚、サンプル（即ち、sample）とは、ビデオやオーディオの実際のメディア・データをある大きさに区切った単位を称し、メディア・データは、このサンプル（sample）を基に管理されている。図５に示されるように、チャンク（即ち、chunk）は、１又は複数のサンプル（sample）が連接されているものを称し、ファイル先頭からのチャンク（chunk）の位置や当該チャンク（chunk）にいくつのサンプル（sample）が含まれているかと言った、データ領域の内部構造に関する情報は、上述したようにムーブ・コンテナ・アトム（atom）の下位階層に記述される。また、既に説明したように実際のメディア・データは、メディア・データ・アトム（mdat)に配置され、オーディオやビデオといったメディア毎の情報管理にトラック（trak）というアトム（atom）が割り当てられている。このようにＭＰ４ファイルは、ムービーコンテナアトム（moov）を取得すれば、構成されるメディア数、それぞれの種別、データ・サイズ等が判明する。
【００３２】
メディア・データ・アトム（mdat）１３は、一例として図５に示されるようにオーディオチャンク（A chunk 0)、ビデオチャンク（V chunk 0）、オーディオチャンク（A chunk 1)、ビデオチャンク（V chunk 1）〜オーディオチャンク（A chunk k)として示されるようにチャンク単位でオーディオ・データ及びビデオ・データがインターリーブされている。この図５の例では、オーディオチャンクは、２つのオーディオサンプルから構成されている。
【００３３】
図６は、インターリーブ判定部１０５における処理手順を示すフローチャートを示している。インターリーブ判定部１０５において、処理が開始されると、インターリーブ情報が格納されたモバイル・アトム（Mobile Atom）のデータが獲得される（ステップＳ１１）。次に、ＭＰ４ヘッダ情報が格納されたムービーアトム（moov: Movie Atom）のデータが獲得される（ステップＳ１２）。また、ユニバーサル・ユニークＩＤアトム（uuid: Universal Unique ID Atom）１８が検索されてその内の変数インターリーブ（unsigned int(32) interleave）の値が調べられる（ステップＳ１３）。ここで、インターリーブなしの場合には、再生処理を中止するためにダウンロード処理部１０２に再生不可が通知されて処理が終了される（ステップＳ１４）。また、インターリーブありの場合には、内部変数i（int i）の値が０に初期化され（ステップＳ１５）、変数トラックカウント（unsigned int(32) track_count）の個数分だけ以下に説明するバッファサイズ判定処理が繰り返えされる。次に、変数iの値が変数トラックカウントの数を超えているかが判定される（ステップＳ１６）。ここで、変数iの値が変数トラックカウントの数を超えている場合には、バッファサイズの判定処理が全て合格されていることとし、分離部１０３に対して再生可能が通知されて処理が終了される（ステップＳ２８）。変数iの値が変数トラックカウントより小さい場合には、ムービー・アトム内から変数トラックＩＤ（track_id[i]）と一致するトラックＩＤを有するトラック・アトムが検索される（ステップＳ１７）。この検索によって、目的のトラック・アトムが検出されたかが判定され（ステップＳ１８）、検出されない場合にはエラーとして、再生不可判定がダウンロード処理部１０２に通知されて処理が終了される（ステップＳ１４）。目的のトラック・アトムが検出された場合には、次の処理へ進む。
【００３４】
目的のトラック・アトムが検出された場合には、内部変数jの値が０に初期化され（ステップＳ２０）、変数エントリーカウント（unsigned int(32) entry_count）の個数分だけ以下のバッファサイズの判定処理が繰り返される。変数jの値が変数エントリーカウントの数を超えているかが判定される（ステップＳ２１）。変数jの値が変数エントリーカウントの数を超えている場合には、次のバッファ判定処理のために内部変数ｉがインクリメントされてステップＳ１９及びステップＳ１６〜ステップＳ２１の処理が繰り返えされる。ここで、変数jの値が変数エントリーカウントより小さい場合には、ステップＳ１７の処理で検出されたトラック・アトム（trak）からサンプルディスクリプションアトム（stsd）が検出される（ステップＳ２２）。この検出されたサンプルディスクリプションアトム（stsd）内のj番目に格納されているデコーダ情報が獲得される（ステップＳ２３）。獲得されたデコーダ情報からデコーダ種別、例えば、MPEG-4ビデオ或いはAACなどのデコーダ種別が獲得され（ステップＳ２４）、また、獲得されたデコーダ種別に対して多重化分離装置で使用可能な固有のバッファサイズが獲得される（ステップＳ２５）。
【００３５】
通常の場合、各デコーダで使用可能な固有のバッファサイズは、予め固定的に決められている。この使用可能な固有のバッファサイズと、実際の多重化データをデコードするのに必要となるバッファサイズ情報であるユニバーサル・ユニークＩＤアトム(uuid)に記述されたデコードバッファサイズ（decoderBufferSize[i][j]）とが比較される。（ステップＳ２６）装置に固有のデコードバッファサイズ（decoderBufferSize[i][j]）よりも使用可能なバッファサイズが小さい場合には、デコード処理途中でバッファオーバフローが発生することが予想される。このような場合には、再生不可の判定がダウンロード処理部１０２に通知されて処理が終了される（ステップＳ１４）。使用可能なバッファサイズが十分に確保できる場合には、内部変数jがインクリメントされた後（ステップＳ２７）、ステップＳ２１の処理が繰り返えされる。
【００３６】
以上のように、この発明の実施例によれば、ＭＰ４形式のファイル・フォーマットにユニバーサル・ユニークＩＤアトム（uuid: Universal Unique ID Atom）１８が追加され、この拡張されたアトムにインターリーブの有無や、各コーデック種別毎に必要となるデコーダバッファサイズ情報等インターリーブ情報が格納される。従って、多重化分離装置にインターリーブ判定部１０５が設けられ、ＭＰ４ファイル内のインターリーブ情報を解析することで、ダウンロードしながら再生処理を安定して実行できるかどうかを再生処理開始前に、容易に判定することが可能となる。
【００３７】
上述した実施の形態においては、図３に示すようにトップレベルにユーザ拡張モバイル・アトム(Mobile Atom）としてのユニバーサル・ユニークＩＤアトム(uuid: universal unique ID Atom)１８が追加されているが、図５に示されるトラック・アトム（trak）或いはムービー・ヘッダ・アトム(mvhd)が設けられている第２階層にユニバーサル・ユニークＩＤアトム(uuid: universal unique ID Atom)１８が追加されても良い。
【００３８】
また、ムービー・ヘッダ・アトム（mvhd)内に下記に示されるような項目を設ける場合には、ユニバーサル・ユニークＩＤアトム(uuid)１８を設けなくとも良く、ユニバーサル・ユニークＩＤアトム(uuid)１８がユーザ拡張モバイル・アトム（Mobile Atom）として設けられる旨の記述も不要となる。
【００３９】
【数２】
0004383721.tif 000003
【００４０】
更に、ユニバーサル・ユニークＩＤアトム(uuid)１８に代えて、モバイル・アトム(MobileAtom)が新たに定義されても良い。このモバイル・アトム(mobl: MobileAtom)は、ユニバーサル・ユニークＩＤアトム(uuid)１８に代えてムーブアトム等と並設して図３に示すようにトップレベルに設けられても良い。このモバイル・アトム(mobl: MobileAtom)は、数１と同様に下記定義（数３）に従ったデータ構造を有している。
【００４１】
【数３】
0004383721.tif 000004
【００４２】
次に図７及び図８を参照して図４に示すＭＰ４ファイルを出力データとして出力する多重化装置について説明する。
【００４３】
図７は、この発明の一実施の形態に係る多重化装置の機能構成例を示すブロック図である。図７に示される多重化装置においては、各メディア単位にエンコードされた入力データ５０１，５０２を各コーデックに対応したデータ解析部５０３，５０４にて受け取る。例えば、ＡＡＡエンコードされたオーディオ並びにＭＰＥＧ−４ビデオエンコードされたビデオが入力される場合、ＡＡＡ形式でエンコードされた入力データ５０１がデータ解析部５０３にて受け取られる。また、ＭＰＥＧ−４ビデオ形式でエンコードされた入力データ５０２がデータ解析部５０４にて受け取られる。データ解析部５０３，５０４では、入力データ５０１，５０２をそれぞれ解析し、フレームなどの分割可能な区切り位置情報等のＭＰ４ヘッダ情報を作成する上で必要となる情報が検出される。
【００４４】
次に、ヘッダ生成部５０５では、データ解析部５０３，５０４からの各コーデックの解析結果からＭＰ４ヘッダ情報が生成される。この時、あらかじめ指定されたインターリーブ間隔に従い、各入力データがインターリーブされるようにＭＰ４ヘッダ情報が設定される。例えば、１秒間隔にインターリーブする際には、各入力データのフレーム区分が更に１秒間隔に分割され、その分割されたデータの塊が同一チャンクに格納される。更には、全ての入力データに対して、各チャンク毎の再生時間が順に並ぶように、各チャンクのオフセット位置が設定される。また、インターリーブ情報設定部５０６では、ＭＰ４ヘッダ情報及びインターリーブ有無の情報をヘッダ生成部５０５から受け取り、インターリーブ情報を格納するためのアトム(uuid)１８が生成され、そのパラメータが設定される。次にデータ生成部５０７では、ヘッダ生成部５０５にて設定されたインターリーブを考慮したチャンクオフセット値に従い、データ解析部５０３、５０４にて受け取った各コーデックデータのデータ位置が並べ替えられ、ＭＰ４データ情報が生成される。次に多重化部５０８では、ヘッダ生成部５０５及びインターリーブ情報設定部５０６、データ生成部５０７にて生成した情報がＭＰ４形式に多重化され、出力データ５０８として出力される。ここで入力されるメディアの種別としては、ビデオやオーディオの他に、文字や静止画、ＭＩＤＩ情報、制御データ等があり、この実施例では、メディアの種類及び数が限定されるものではない。
【００４５】
図８は、インターリーブ情報設定部５０６における処理手順を示すフローチャートである。インターリーブ情報設定部５０６において処理が開始されると、始めに生成したＭＰ４ヘッダ情報及びインターリーブ有無を示す情報が獲得される（ステップＳ３１）。また、インターリーブ情報を格納するためのデータ構造である空のモバイル・アトム(uuid)１８が生成される（ステップＳ３２）。次に、入手したインターリーブ有無の情報に従い、変数インターリーブの値（unsigned int(32) interleave）が設定される（ステップＳ３３）。例えば、変数インターリーブの値として、インターリーブなしの場合には値“０”が、有りの場合には値“１”が設定される。次に変数トラックカウント（track_count）が０に初期化される（ステップＳ３４）。入手したＭＰ４ヘッダ情報が順次検索されトラック・アトムが見つけ出される（ステップＳ３５）。トラック・アトム（trak）が見つからなければ（ステップＳ３６）、処理が終了される。トラック・アトム（trak）が見つかった場合には、トラック・アトム（trak）に含まれるトラックヘッダ・アトム（trhd）が見付け出される（ステップＳ３７）。次にトラックヘッダ・アトム（trhd）内の変数からトラックＩＤが獲得される（ステップＳ３９）。次にモバイル・アトム(uuid)１８にトラックＩＤ（track_id）及びデコーダバッファサイズ（decoderBufferSize）が追加され、変数トラックＩＤにトラックＩＤが設定される（ステップＳ３９）。次にトラック・アトム（trak）に含まれるサンプルサイズアトム（stsz）が獲得される（ステップＳ４０）。サンプルサイズアトム（stsz）には、トラックに含まれるサンプルの数（sample_count）と各サンプルのサイズ情報（sample_size）が含まれる。同様にトラック・アトム（trak）に含まれるチャンクオフセットアトム（stco）が獲得される（ステップＳ４１）。チャンクオフセットアトム（stco）には、チャンクの数（entry_count）とファイルの先頭からのオフセット値（chunk_offset）が含まれる。同様にトラック・アトム（trak）に含まれるサンプルトウチャンクアトム（stsc）が獲得される（ステップＳ４２）。サンプルトウチャンクアトム（stsc）には、各チャンク毎のサンプル数（sample_per_chunk）が含まれる。次に、サンプルサイズアトム（stsz）、チャンクオフセットアトム（stco）及びサンプルトウチャンクアトム（stsc）の情報を元に、オフセットの値が連続しているサンプルを一つのまとまりとし、各まとまり毎のサンプルの合計サイズがすべて算出される（ステップＳ４３）。算出された合計サイズの中で最大値が求められ、モバイル・アトムの変数デコーダバッファサイズ（decoderBufferSize）に設定される（ステップＳ４４）。次に変数トラックカウント（unsigned int(32) track_count）がインクリメントされた後（ステップＳ４５）、次のトラック・アトムを検索する処理（ステップＳ３５）が繰り返えされる。
【００４６】
以上の処理手順により、各トラックのデータをデコードするのに必要なバッファ情報がモバイル・アトムに設定される。
【００４７】
【発明の効果】
以上のように、この発明の多重化分離装置及び方法によれば、メディア・データをデコードするのに必要なバッファサイズ及びインターリーブされているかどうかを示す情報がＭＰ４ファイル中に格納されている。従って、この情報を用いてメディア・データがインターリーブされているか否か並びにデコード処理が可能か否かを容易に判定することができる。その結果、この発明の多重化分離装置及び方法においては、ＭＰ４ファイルをダウンロードしながら最後まで再生することができる。
【図面の簡単な説明】
【図１】この発明の一実施の形態に係る多重化分離装置の機能を示すブロック図である。
【図２】図１に示される多重化分離装置において処理されるＭＰ４多重化フォーマット・ファイルの構造を示す説明図である。
【図３】図２に示される各アトムの共通構造を示す説明図である。
【図４】図３に示されるムービー・アトムのデータ構造を示す説明図である。
【図５】図３に示されるメディア・データ・アトム内におけるインターリーブの一例を示す説明図である。
【図６】図１に示されるインターリーブ判定部における処理手順を示すフローチャートである。
【図７】この発明の実施の形態に係る多重化装置の機能を示すブロック図である。
【図８】図７に示した多重化装置のインターリーブ情報設定部における処理手順を示すフローチャートである。
【符号の説明】
１０３．．．分離部
１０４．．．ヘッダ解析部
１０５．．．インターリーブ判定部
１０６．．．データ解析部
１０６．．．ＡＭＲ情報設定部
１０７．．．再生処理部
５０３、５０４．．．データ解析部
５０５．．．ヘッダ生成部
５０６．．．インターリーブ情報設定部
５０７．．．データ生成部
５０８．．．多重化部
【図１】
0004383721.tif 000005
【図２】
0004383721.tif 000006
【図３】
0004383721.tif 000007
【図４】
0004383721.tif 000008
【図５】
0004383721.tif 000009
【図６】
0004383721.tif 000010
【図７】
0004383721.tif 000011
【図８】
0004383721.tif 000012