(57)【要約】      （修正有）【課題】情報処理システムにおいて、処理に必要なメモリ領域のサイズを事前に確定することができない場合においてもメモリ領域を有効に利用する。【解決手段】情報処理システム１０において逆多重化処理部１０３、多重化処理部１０８、復号処理部４０及び符号化処理部５０を対象処理部とし、夫々の対象処理部はメモリ部１０２のメモリ領域を利用して夫々の処理を実行する。その際、データ処理制御部１０１は、前記対象処理部における処理要求毎の処理結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更する。【選択図】図１
2011109298.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するメモリ部と、
前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部と、
割り当てられたメモリ領域を使用して、多重化された符号化データを逆多重する処理を、処理要求毎に実行する逆多重化処理部と、
割り当てられたメモリ領域を使用して、前記逆多重された符号化データを復号する処理を、処理要求毎に実行する復号処理部と、を有する情報処理システムであって、
前記データ処理制御部は、前記逆多重化処理部と前記復号処理部の何れか一方又は双方を対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う、情報処理システム。
【請求項２】
前記データ処理制御部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子を、夫々の前記対象処理部における夫々の処理要求に付加する、請求項１記載の情報処理システム。
【請求項３】
前記記述子は、使用可能なメモリ領域の先頭アドレスの情報と、使用可能なメモリ領域のサイズを規定する情報を含む、請求項２記載の情報処理システム。
【請求項４】
前記データ処理制御部は、夫々の前記対象処理部における処理要求毎の処理が完了する毎に、当該処理結果が格納されたメモリ領域のサイズに基づいて、後続する処理要求に付加された前記記述子の前記先頭アドレスの情報を変更する、請求項３記載の情報処理システム。
【請求項５】
前記メモリ部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子を有し、
前記記述子は、新たな処理要求に応答して処理した結果を格納するメモリ領域のアドレスを示す第１ポインタ、有効な処理結果を保持しているメモリ領域のサイズを示す有効サイズデータ、及び前記処理した結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域のアドレスを示す第２ポインタを有し、
前記対象処理部は、処理要求に応答して処理した結果を、前記第１ポインタ及び第２ポインタを用いてファースト・イン・ファースト・アウト形式でメモリ領域に保持する、請求項１記載の情報処理システム。
【請求項６】
前記対象処理部は、前記第１ポインタの値とメモリ領域の終端アドレスとの差が必要最大限のメモリサイズよりも小さいときメモリ領域に対するラップアラウンド制御を行い、
前記ラップアラウンド制御において、新たな処理要求に応答して処理した結果はメモリ領域の先頭から格納される、請求項５記載のデータ処理システム。
【請求項７】
前記対象処理部は、前記第１ポインタの値とメモリ領域の終端アドレスとの差が必要最大限のメモリサイズよりも小さいときメモリ領域に対するラップアラウンド制御を行い、
前記ラップアラウンド制御において、新たな処理要求に応答して処理した結果は前記第１ポインタの値にしたがって格納される、請求項５記載のデータ処理システム。
【請求項８】
前記対象処理部は、処理要求に応答して処理した結果をメモリ領域から読み出すとき、前記有効サイズデータが前記第１ポインタの値とメモリ領域の先頭アドレスとの差と等しい場合にはメモリ領域の先頭から読み出す、前記請求項６記載のデータ処理システム。
【請求項９】
データを格納するメモリ部と、
前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部と、
割り当てられたメモリ領域を使用して、入力されるデータを符号化する処理を、処理要求毎に実行する符号化処理部と、
割り当てられたメモリ領域を使用して、符号化されたデータを多重化する処理を、処理要求毎に実行する多重化処理部と、を有する情報処理システムであって、
前記データ処理制御部は、前記符号化処理部と前記多重化処理部の何れか一方又は双方を対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う、情報処理システム。
【請求項１０】
前記データ処理制御部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子を、夫々の前記対象処理部における夫々の処理要求に付加する、請求項９記載の情報処理システム。
【請求項１１】
前記メモリ部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子を有し、
前記記述子は、新たな処理要求に応答して処理した結果を格納するメモリ領域のアドレスを示す第１ポインタ、有効な処理結果を保持しているメモリ領域のサイズを示す有効サイズデータ、及び前記処理した結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域の終端のアドレスを示す第２ポインタを有し、
前記対象処理部は、処理要求に応答して処理した結果を、前記第１ポインタ及び第２ポインタを用いてファースト・イン・ファースト・アウト形式でメモリ領域に保持する、請求項９記載の情報処理システム。
【請求項１２】
データを格納するメモリ部と、
前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部と、
割り当てられたメモリ領域を使用して、多重化された符号化データを逆多重する処理を、処理要求毎に実行する逆多重化処理部と、
割り当てられたメモリ領域を使用して、前記逆多重された符号化データを復号する処理を、処理要求毎に実行する復号処理部と、
割り当てられたメモリ領域を使用して、入力されるデータを符号化する処理を、処理要求毎に実行する符号化処理部と、
割り当てられたメモリ領域を使用して、符号化されたデータを多重化する処理を、処理要求毎に実行する多重化処理部と、を有する情報処理システムであって、
前記データ処理制御部は、前記逆多重化処理部、前記復号処理部、前記符号化処理部及び前記多重化処理部の少なくとも一つを対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関し、コンテンツのストリームデータの処理を行う情報処理システムに係り、例えばデータ格納領域の利用制限が厳しい携帯電話や車載用機器等の組み込み機器に適用して有効な技術に関する。
【背景技術】
【０００２】
組み込み機器向けのソフトウェアでは対象機器の大きさや価格などの制約から、利用可能なデータ領域、すなわち、利用可能なメモリ領域を有効に活用する必要がある。組み込み機器は、製品として提供する機能が限定されている場合が多く、そのような場合ソフトウェアによって実現すべき処理の内容は確定される。そのため、組み込み機器においてソフトウェアによって処理すべき内容とその処理方法が確定されれば、ソフトウェアによる処理に必要なメモリ領域を確定することができ、以降そのメモリ領域のサイズは変更されない。
【０００３】
このような背景から、組み込み機器のように機能が限定されている機器では、予めメモリ領域を区分けして利用する方法が提案されている。当該方法の従来技術として、例えば、特許文献１に開示がある。
【０００４】
特許文献１に係る方法では、処理部が処理をするために必要なメモリ領域を予め見積もっておく。その上で、前記処理部が処理を実行するとき、予め異なるサイズで区分けされた固定サイズのメモリ領域群の中から、当該処理に必要なメモリサイズ以上のメモリサイズを有する固定サイズのメモリ領域であって、当該固定サイズのメモリ領域群の中で最小のメモリサイズを有する前記固定サイズのメモリ領域を、前記処理部が獲得する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−１０３１５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に係る方法では処理に必要なメモリ領域を見積もる必要があるので、事前に当該メモリ領域を見積もることが困難なシステムに適用する場合にメモリ領域の有効活用ができない可能性がある。例えば、ビットレートが変化する映像コンテンツ等のストリームデータの再生処理を行う組み込み機器に採用する場合である。当該組み込み機器において、例えば、ＭＰＥＧ２−ＴＳ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ２−Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）で多重化された映像コンテンツのデータを１ＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）単位で再生処理を実行する場合、実際に逆多重化処理を行なってみないと逆多重化処理後の１ＧＯＰ分のデータサイズがわからない。このように処理結果のデータサイズの見積もりが困難である場合には、何らかの情報を元に処理に要するメモリ領域のサイズを決めなければならない。例えば、製品仕様の上限値や処理対象の映像コンテンツのデータの仕様の上限値等に基づいて、処理に必要なメモリ領域の上限サイズを算出する。しかし、この方法では実際に利用しない可能性のあるメモリ領域を含めてサイズを設定しているため、メモリ領域を無駄に確保することとなる。特に製品仕様や映像コンテンツの仕様の上限値は十分な余裕度をもって大きめに設定されている可能性が高いので、再生処理時においてメモリ領域の利用効率が低くなる可能性が高い。また、上記の組み込み機器において、逆多重化処理、映像コンテンツのデータのデコード処理、及び映像コンテンツの表示処理等の映像コンテンツの再生に必要な処理を効率的に行なうため、ＣＰＵ等が各処理を実行するソフトウェアやハードウェアに対して複数の処理要求を指示することで各処理が並列に実行される場合がある。この場合には夫々のソフトウェアやハードウェアに対して処理要求を行う前に、処理に必要なデータサイズや必要なメモリ領域が確定されていなければならず、特許文献１の方法では必要なデータサイズが判明した後に必要なメモリ領域を確保することが困難な場合がある。
【０００７】
本発明の目的は、処理に必要なメモリ領域のサイズを事前に確定することができない場合においても、メモリ領域を有効に利用することができる情報処理システムを提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、情報処理システムは、処理を実行する処理部における処理要求毎の処理結果に基づいて、前記処理部における後続する処理要求に割り当てるメモリ領域を変更する。
【発明の効果】
【００１１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１２】
すなわち、処理に必要なメモリ領域のサイズを予め確定することが困難な場合においても、メモリ領域を有効に利用することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施の形態に係る情報処理システムである。
【図２】図２は、再生処理時のデータの流れ示す説明図である。
【図３】図３は、再生処理時における処理内容と処理に伴うデータの説明図である。
【図４】図４は、処理毎に固定サイズのメモリ領域を割り当てる方法の説明図である。
【図５】図５は、処理毎に固定サイズのメモリ領域を割り当てる方法の逆多重化処理への適用例である。
【図６】図６は、処理毎に固定サイズのメモリ領域を割り当てる方法を適用した逆多重化処理の流れ示す説明図である。
【図７】図７は、本実施の形態に係るディスクリプタの説明図である。
【図８】図８は、ディスクリプタを利用したメモリ領域割り当て方法の説明図である。
【図９】図９は、ディスクリプタによるメモリ領域割り当て方法を適用した逆多重化処理の流れを示す説明図である。
【図１０】図１０は、本実施の形態に係るメモリ領域の有効利用の一例である。
【図１１】図１１は、ディスクリプタを利用したデータ格納方法の説明図である。
【図１２】図１２は、本実施の形態に係るデータ格納方法を適用した逆多重化処理の流れを示す説明図である。
【図１３】図１３は、固定サイズのメモリ領域を利用したデータ格納方法を適用した逆多重化処理の流れ示す説明図である。
【図１４】図１４は、ディスクリプタを利用したデータ読み出し方法の説明図である。
【図１５Ａ】図１５Ａは、ラップアラウンドによるデータ格納方法の説明図である。
【図１５Ｂ】図１５Ｂは、ラップアラウンドによる第１のデータ格納方法の説明図である。
【図１５Ｃ】図１５Ｃは、ラップアラウンドによる第２のデータ格納方法の説明図である。
【図１６】図１６は、前記第１のデータ格納方法におけるデータ読み出し方法の一例である。
【図１７】図１７は、前記第２のデータ格納方法におけるデータ読み出し方法の一例である。
【図１８】図１８は、記録処理時のデータの流れ示す説明図である。
【図１９】図１９は、記録処理時における処理内容と処理に伴うデータの説明図である。
【発明を実施するための形態】
【００１４】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係る情報処理システム（１０）は、データを格納するメモリ部（１０２）と、前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部（１０１）と、割り当てられたメモリ領域を使用して多重化された符号化データを逆多重する処理を処理要求毎に実行する逆多重化処理部（１０３）と、割り当てられたメモリ領域を使用して前記逆多重された符号化データを復号する処理を処理要求毎に実行する復号処理部（４０）と、を有する。前記データ処理制御部は、前記逆多重化処理部と前記復号処理部の何れか一方又は双方を対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う。これによれば、処理のために割り当てられたメモリ領域に対して実際に使用されたメモリ領域が少ない場合でも、後続の処理要求に割り当てるメモリ領域は、実際に使用されたメモリ領域に基づいて決定されるので、メモリ領域の有効な利用が可能となる。
【００１６】
〔２〕項１の情報処理システムにおいて、前記データ処理制御部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子（７０２〜７０６）を、夫々の前記対象処理部における夫々の処理要求に付加する。これによれば、処理要求毎にメモリ領域を割り当てることが容易となる。
【００１７】
〔３〕項２の情報処理システムにおいて、前記記述子は、使用可能なメモリ領域の先頭アドレスの情報と、使用可能なメモリ領域のサイズを規定する情報を含む。
【００１８】
〔４〕項３の情報処理システムにおいて、前記データ処理制御部は、夫々の前記対象処理部における処理要求毎の処理が完了する毎に、当該処理結果が格納されたメモリ領域のサイズに基づいて、後続する処理要求に付加された前記記述子の前記先頭アドレスの情報を変更する。これによれば、後続の処理要求に割り当てるメモリ領域を容易に決定することができる。
【００１９】
〔５〕項１の情報処理システムにおいて、前記メモリ部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子（１２０１）を有し、前記記述子は、新たな処理要求に応答して処理した結果を格納するメモリ領域のアドレスを示す第１ポインタ（１２１１）、有効な処理結果を保持しているメモリ領域のサイズを示す有効サイズデータ、及び前記処理した結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域のアドレスを示す第２ポインタ（１２１２）を有する。前記対象処理部は、処理要求に応答して処理した結果を、前記第１ポインタ及び第２ポインタを用いてファースト・イン・ファースト・アウト形式でメモリ領域に保持する。これによれば、前記対象処理部は処理要求に応じて処理した結果を、処理順にメモリ領域に格納し、読み出すことができるから、メモリ領域の有効な利用が容易に実現できる。
【００２０】
〔６〕項５の情報処理システムにおいて、前記対象処理部は、前記第１ポインタの値とメモリ領域の終端アドレスとの差が必要最大限のメモリサイズよりも小さいときメモリ領域に対するラップアラウンド制御を行い、前記ラップアラウンド制御において、新たな処理要求に応答して処理した結果はメモリ領域の先頭から格納される。これによれば、一つの処理要求に応答して処理された結果が分割されてメモリ領域に格納されることがない。
【００２１】
〔７〕項５の情報処理システムにおいて、前記対象処理部は、前記第１ポインタの値とメモリ領域の終端アドレスとの差が必要最大限のメモリサイズよりも小さいときメモリ領域に対するラップアラウンド制御を行い、前記ラップアラウンド制御において、新たな処理要求に応答して処理した結果は前記第１ポインタの値にしたがって格納される。
【００２２】
〔８〕項６の情報処理システムにおいて、前記対象処理部は、処理要求に応答して処理した結果をメモリ領域から読み出すとき、前記有効サイズデータが前記第１ポインタの値とメモリ領域の先頭アドレスとの差と等しい場合にはメモリ領域の先頭から読み出す。これによれば、データが格納されていないメモリ領域が存在しても、有効なデータが格納されたメモリ領域を検知して、そのメモリ領域からデータを読み出すことが可能となる。
【００２３】
〔９〕本発明の代表的な実施の形態に係る情報処理システムは、データを格納するメモリ部（１０２）と、前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部（１０１）と、割り当てられたメモリ領域を使用して入力されるデータを符号化する処理を処理要求毎に実行する符号化処理部（５０）と、割り当てられたメモリ領域を使用して符号化されたデータを多重化する処理を処理要求毎に実行する多重化処理部（１０８）と、を有する。前記データ処理制御部は、前記符号化処理部と前記多重化処理部の何れか一方又は双方を対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う。これによれば、項１と同様の作用を奏する。
【００２４】
〔１０〕項９の情報処理システムにおいて、前記データ処理制御部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子を、夫々の前記対象処理部における夫々の処理要求に付加する。これによれば、項２と同様の作用を奏する。
【００２５】
〔１１〕項９の情報処理システムにおいて、前記メモリ部は、夫々の前記対象処理部による処理結果を処理要求毎にメモリ領域に格納するための記述子（１２０１）を有し、前記記述子は、新たな処理要求に応答して処理した結果を格納するメモリ領域のアドレスを示す第１ポインタ（１２１１）、有効な処理結果を保持しているメモリ領域のサイズを示す有効サイズデータ、及び前記処理した結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域の終端のアドレスを示す第２ポインタ（１２１２）を有する。前記対象処理部は、処理要求に応答して処理した結果を、前記第１ポインタ及び第２ポインタを用いてファースト・イン・ファースト・アウト形式でメモリ領域に保持する。これによれば、項５と同様の作用を奏する。
【００２６】
〔１２〕本発明の代表的な実施の形態に係る情報処理システムは、データを格納するメモリ部（１０２）と、前記メモリ部にストリームデータに対する処理結果を格納するためのメモリ領域を割り当てるための処理を行うデータ処理制御部（１０１）と、割り当てられたメモリ領域を使用して多重化された符号化データを逆多重する処理を処理要求毎に実行する逆多重化処理部（１０３）と、割り当てられたメモリ領域を使用して前記逆多重された符号化データを復号する処理を処理要求毎に実行する復号処理部（４０）と、割り当てられたメモリ領域を使用して、入力されるデータを符号化する処理を、処理要求毎に実行する符号化処理部（５０）と、割り当てられたメモリ領域を使用して符号化されたデータを多重化する処理を処理要求毎に実行する多重化処理部（１０８）と、を有する。前記データ処理制御部は、前記逆多重化処理部、前記復号処理部、前記符号化処理部及び前記多重化処理部の少なくとも一つを対象処理部とし、前記対象処理部における処理要求毎の処理の結果に基づいて、後続する処理要求に割り当てるメモリ領域を変更するための処理を行う。これによれば、項１と同様の作用を奏する。
【００２７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２８】
≪本実施の形態に係る情報処理システムの概要≫
図１は、本実施の形態に係る情報処理システムとして、映像コンテンツ等のストリームデータの再生処理、及び外部から入力された映像情報と音声情報の記録処理を行う情報処理システムを示す。
【００２９】
図１に示される情報処理システム１０は、データ処理制御部１０１、メモリ部１０２、記録部６０、逆多重化処理部１０３、多重化処理部１０８、復号化処理部４０、符号化処理部５０、入力部８０、出力部７０、バス９０、及び図示されない外部入出力インタフェース等の装置から構成される。
【００３０】
前記情報処理システム１０は、前記記録部６０に格納されている映像コンテンツ等の多重化されたストリームデータを前記逆多重化処理部１０３により映像のデータと音声のデータに逆多重し、逆多重した夫々のデータを前記復号化処理部４０によって復号し、前記出力部７０から出力する再生処理を行う。また、前記情報処理システム１０は、前記入力部８０から取り込んだ映像と音声を前記符号化処理部５０によって符号化し、符号化した夫々のデータを前記多重化処理部１０８によって多重化し、前記記録部６０に格納する記録処理を行う。
【００３１】
前記情報処理システム１０において前記再生処理及び前記記録処理が実行されるとき、夫々の前記処理部は前記メモリ部１０２のメモリ領域を利用して夫々の処理を実行する。その際、前記メモリ部１０２のメモリ領域を効率良く利用させるため、前記データ処理制御部１０１は、前記逆多重化処理部１０３、前記多重化処理部１０８、前記復号化処理部４０及び前記符号化処理部５０を対象処理部として、前記対象処理部における処理毎に、使用可能な前記メモリ部１０２のメモリ領域を割り当てる。
【００３２】
前記情報処理システム１０の構成要素について詳細に説明する。
【００３３】
前記データ処理制御部１０１は、各ブロックの統括的な制御を行い、映像コンテンツ等の再生処理や記録処理等を実行させる。前記データ処理制御部１０１は、例えば、ＣＰＵである。以下の説明では、データ処理制御部１０１をＣＰＵ１０１として説明する。
【００３４】
前記逆多重化処理部１０３は、前記ＣＰＵ１０１からの制御により、前記記録部６０に格納されている映像コンテンツ等の多重化されたストリームデータであるコンテンツデータを逆多重する処理を行い、符号化された音声データ（以下、「音声ＥＳ（Ｅｌｅｍｅｎｔａｒｙ  Ｓｔｒｅａｍ）データ」という。）と、符号化された映像データ（以下、「映像ＥＳ（Ｅｌｅｍｅｎｔａｒｙ  Ｓｔｒｅａｍ）データ」という。）に分離する。
【００３５】
前記復号化処理部４０は、前記ＣＰＵ１０１からの制御により、前記音声ＥＳデータと前記映像ＥＳデータを復号する処理を行う。前記復号化処理部４０は、音声デコーダ部１０４と映像デコーダ部１０６を有する。前記音声デコーダ部１０４は前記音声ＥＳデータを復号し、音声ロウ（Ｒａｗ）データを出力する。また、前記映像デコーダ部１０６は前記映像ＥＳデータを復号し、映像ロウ（Ｒａｗ）データを出力する。
【００３６】
前記出力部７０は、映像コンテンツ等を出力する装置であり、映像を表示する映像表示部１０７と、音声を出力する音声出力部１０５から構成される。前記映像表示部１０７は前記映像ロウデータを入力し、映像を出力する。前記映像表示部１０７は、例えば、液晶ディスプレイ等である。また、前記音声出力部１０５は前記音声ロウデータを入力し、音声を出力する。前記音声出力部１０５は、例えば、スピーカである。なお、前記出力部７０を前記情報処理システム１０に内蔵する代わりに、同様の機能を有する外部装置を接続してもよい。例えば、図示されない、前記情報処理システム１０の外部出力インタフェースから前記音声ロウデータ及び前記映像ロウデータを出力し、外部に設置されたスピーカやディスプレイによって映像と音声を再生しても良い。
【００３７】
前記入力部８０は、外部から映像情報と音声情報を取り込む装置であり、映像を取り込む映像入力部１１２と、音声を取り込む音声入力部１１０から構成される。前記映像入力部１１２は、取り込んだ映像を電気信号に変換した映像ロウデータを出力する。前記映像入力部１１２は、例えば、カメラ等である。また、前記音声入力部１１０は、取り込んだ音声を電気信号に変換した前記音声ロウデータを出力する。前記音声入力部１１０は、例えば、マイクロフォンである。なお、前記出力部７０と同様に、前記入力部８０を前記情報処理システム１０に内蔵する代わりに同様の機能を有する外部装置を接続してもよい。例えば、外部に設置されたカメラやマイクロフォンによって生成された前記音声ロウデータ及び前記映像ロウデータを、図示されない、前記情報処理システム１０内の外部入力インタフェースを介して入力してもよい。
【００３８】
前記符号化処理部５０は、前記ＣＰＵ１０１からの制御により、前記音声ロウデータと前記映像ロウデータを符号化する処理を行う。前記符号化処理部５０は、音声エンコーダ部１０９と映像エンコーダ部１１１を有する。前記音声エンコーダ部１０９は前記音声ロウデータを符号化し、前記音声ＥＳデータを出力する。また、前記映像エンコーダ部１１１は前記映像ロウデータを符号化し、前記音声ＥＳデータを出力する。
【００３９】
前記多重化部１０８は、前記ＣＰＵ１０１からの制御により、前記符号化処理部５０によって符号化された前記映像ＥＳデータ、前記音声ＥＳデータ、及びその他のＥＳデータを多重化したコンテンツデータを作成する。作成されたコンテンツデータは、前記記録部６０に格納される。
【００４０】
前記記録部６０は、前記コンテンツデータ等が記録される。前記記録部６０は、記録装置接続部１１３及び記録装置３０を有する。前記記録装置３０は外部記憶装置であり、前記記録装置接続部１１３を介してバス９０に接続され、前記コンテンツデータ等が書き込まれる。前記記録装置３０は、例えば、不揮発性の記録装置であり、ＨＤＤ（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）やフラッシュメモリ等である。図１には、代表例としてＨＤＤ１１５とフラッシュメモリ１１４を図示している。なお、システムによっては前記記録装置３０を内蔵してもよい。
【００４１】
前記記録装置接続部１１３は、前記記録装置３０と接続するためのインタフェース回路であり、前記ＣＰＵ１０１等からの制御により前記記録装置３０のデータの読み出しや書き込み等の制御を行う。前記記録装置接続部１１３は、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）用のインタフェース回路や、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）用のインタフェース回路、又はその他外部記憶装置を接続するためのインタフェース回路である。
【００４２】
前記メモリ部１０２は、前記ＣＰＵ１０１等の制御により、夫々の前記処理部等における処理結果等のデータを一時的に格納するメモリ領域を有する装置であり、例えば、揮発性メモリである。
【００４３】
前記メモリ部１０２には、前記コンテンツデータ１１６、前記音声ＥＳデータ１１７、前記映像ＥＳデータ１１８、前記その他ＥＳデータ１１９、前記音声ロウデータ１２０、及び前記映像ロウデータ１２１等が格納される。また、前記メモリ部１０２は、制御用プログラム１２３及び制御用データ１２２が格納され、前記制御用プログラム１２３は、機器を制御するためのソフトウェア等であり、当該ソフトウェア等による処理結果等が制御用データ１２２である。なお、前記制御用プログラム１２３は、図示されない別の不揮発性の記憶部に予め格納され、当該ソフトウェアによる処理の実行に際し前記不揮発性の記憶部から前記メモリ部１０２に読み出される。
【００４４】
≪コンテンツデータの再生≫
前記情報処理システム１０による前記コンテンツデータの再生処理について詳細に説明する。
【００４５】
図２は、再生処理時のデータの流れ示す説明図である。
【００４６】
図２において、再生処理の対象となるデータは、一例として、ＭＰＥＧ形式のデータである。
【００４７】
再生処理において、まず、前記記録装置３０に格納されているコンテンツデータ１１６が前記ＣＰＵ１０１の制御により読み出され、前記メモリ部１０２に一時的に格納される。前記メモリ部１０２に格納された前記コンテンツデータ１１６は、続いて前記逆多重化処理部１０３へ入力される。当該入力された前記コンテンツデータ１１６は、前記逆多重化処理部１０３による逆多重化処理により前記音声ＥＳデータ１１７、前記映像ＥＳデータ１１８、及び前記その他ＥＳデータ１１９として出力され、前記メモリ部１０２に一時的に格納される。
【００４８】
前記音声ＥＳデータ１１７は前記音声デコーダ部１０４に入力され、復号処理により音声ロウデータ１２０として出力される。同様に前記映像ＥＳデータ１１８は前記映像デコーダ部１０６に入力され、復号処理により前記映像ロウデータ１２１として出力される。出力された前記音声ロウデータ１１７は、前記音声出力部１０５に入力されて音声として出力される。また、前記映像ロウデータ１２１は、前記映像表示部１０７に入力され映像として出力される。
【００４９】
≪再生処理時におけるバッファの利用≫
上記の再生処理に際し、前記逆多重化処理部１０３、前記音声デコーダ部１０４、前記映像デコーダ部１０６、前記映像表示部１０７及び前記音声出力部１０５は、前記メモリ部１０２のメモリ領域の一部をバッファとして利用する。すなわち、各処理部は、バッファに格納されたデータを読み出して処理を実行するとともに、処理結果をバッファに一時的に格納する。
【００５０】
図３は、再生処理時における処理内容と処理に伴うデータの説明図である。
【００５１】
図３において、逆多重化処理３０２は、１ＧＯＰ分のコンテンツデータに対する処理を処理単位として実行する場合を一例としている。前記処理単位は、処理を実行するハードウェアの仕様や実行する処理内容等に応じて変更しても構ない。
【００５２】
図３において、前記データ読み出し処理３０１によって読み出されたコンテンツデータ１１６が所定のバッファに格納される。前記逆多重化処理部１０３は当該バッファに格納された前記コンテンツデータ１１６を読み出して前記逆多重化処理３０２を実行し、生成した前記音声ＥＳデータ１１７を音声ＥＳデータ格納用のバッファに格納するとともに、生成した前記映像ＥＳデータ１１８を映像ＥＳデータ格納用のバッファに格納する。そして、前記音声デコーダ部１０４は、前記音声ＥＳデータ格納用のバッファから前記音声ＥＳデータ１１７を読み出して音声復号化処理３０３を実行し、生成した音声ロウデータ１２０を音声ロウデータ格納用のバッファに格納する。同様に、前記映像デコーダ部１０６は、前記音声ＥＳデータ１１７を読み出して映像復号化処理３０７を実行し、生成した映像ロウデータ１２１を映像ロウデータ格納用のバッファに格納する。前記音声出力部１０５は、前記音声ロウデータ格納用のバッファから前記音声ロウデータ１２０を読み出して音声データ出力処理３０４を実行し、音声を出力する。同様に前記映像表示部１０７は、前記映像ロウデータを読み出して映像データ出力処理３０８を実行し、映像を表示する。
【００５３】
このように、前記逆多重化処理部１０３、前記音声デコーダ部１０４、前記映像デコーダ部１０６、前記映像表示部１０７及び前記音声出力部１０５は、夫々のバッファに格納されたデータを読み出して処理を実行するから、バッファに複数の処理要求に応ずるデータが格納されていれば、連続して処理を実行することができ、夫々の処理が並列に実行されることも可能である。例えば、前記データ読み出し処理３０１の場合には出力先のバッファ領域が許す限りコンテンツデータ１１６を読み出すことが可能となるし、前記映像データ出力処理３０８による映像表示を行いながら、前記映像復号化処理３０７を実行することも可能となる。
【００５４】
≪再生処理時におけるメモリ領域の割り当て≫
夫々の処理結果等を格納するバッファとして割り当てられるメモリ領域のサイズは、前記情報処理システム１０の設計時に、処理内容に応じて静的に定義することができる場合がある。例えば、前記コンテンツデータ１１６を格納するバッファのメモリ領域のサイズは、前記記録装置３０から読み出すコンテンツデータ１１６のサイズが事前に定義されていれば、それに基づいて決定することが可能である。また、前記音声データ出力処理３０４や前記映像データ出力処理３０８の結果を格納するバッファのサイズは、入力先の前記音声出力部１０５と前記映像表示部１０７の仕様等から決定することが可能である。しかし、逆多重化処理３０２の結果を格納するバッファのサイズは事前に定義するのが困難である。なぜなら、所定の処理単位で逆多重化処理を行う場合、例えば、１ＧＯＰ単位で処理を行う場合には、コンテンツデータ記録時のデータ圧縮のビットレートによって逆多重化処理の結果のデータサイズが変動するからである。このため、前記逆多重化処理３０２において事前にバッファのメモリ領域を確定する場合には、製品仕様又は圧縮データのフォーマットの仕様から最大出力データサイズを算出し、当該データサイズに基づいてメモリ領域を定めなければならない。また、前記音声デコーダ部１０４及び前記映像デコーダ部１０６が出力する前記音声ロウデータ１２０及び前記映像ロウデータ１２１を格納するバッファのサイズについても、予め確定するのは困難である。所定の処理単位における、復号化前の前記音声ＥＳデータ１１７及び前記映像ＥＳデータ１１８のデータサイズが変動するからである。
【００５５】
このような事情を鑑みたバッファとしてのメモリ領域の割り当て方法を以下に示す。
【００５６】
≪本実施の形態に係るメモリ領域の割り当て方法との比較例≫
ここで、本実施の形態に係るメモリ領域の割り当て方法を説明する前に、これに対する比較例として、各処理部における処理毎に固定サイズのメモリ領域を割り当てる方法を示す。
【００５７】
なお、当該メモリ割り当て方法は、ＣＰＵが各処理部の処理結果を格納するためのメモリ領域を確保してから処理要求を発行する情報処理システムに適用し、当該情報処理システムの逆多重化処理における前記映像ＥＳデータ生成する処理に適用する場合を例に説明する。
【００５８】
図４は、処理毎に固定サイズのメモリ領域を割り当てる方法の説明図である。
【００５９】
なお、以下に説明するメモリ領域割り当て方法は、情報処理システムにおいて実行される複数の処理のうち、逆多重化処理における前記映像ＥＳデータを出力する処理に適用する場合を例に説明する。
【００６０】
コンテンツデータの再生処理において前記映像ＥＳデータのサイズは、前記制御用プログラム１２３等による処理結果等の前記制御用データ１２２のサイズと比較して突出して大きい。そのため、メモリ制約の厳しいシステムにおいては、前記映像ＥＳデータ格納するための専用のメモリ領域が前記メモリ部１０２に設けられる場合が多い。図４における参照符号４０１に示されるメモリ領域は、当該映像ＥＳデータを格納するために割り当てられた逆多重化出力用のメモリ領域である。この領域は、さらにメモリ領域４０２、メモリ領域４０３、メモリ領域４０４及びメモリ領域４０５の４つのメモリ領域に分割される。分割された各メモリ領域は、１回の逆多重化処理で利用する領域であり、すなわち、１ＧＯＰ単位毎の処理要求毎に利用されるメモリ領域である。当該メモリ領域は、前述のように製品仕様あるいは圧縮データのフォーマット仕様から算出される最大出力データサイズに基づいて設定されたメモリ領域であり、固定のサイズを有する。
【００６１】
図５は、処理毎に固定サイズのメモリ領域を割り当てる方法の逆多重化処理への適用例である。
【００６２】
図５において、処理要求に対応したコンテンツデータ１１６＿Ａと後続する処理要求に対応したコンテンツデータ１１６＿Ｂが前記逆多重化処理部１０３に入力され、前記逆多重化処理部１０３は、処理要求毎に逆多重化処理３０２を実行し、映像ＥＳデータ１１８＿Ａ及び１１８＿Ｂを生成する。前記逆多重化処理部１０３は、生成した前記映像ＥＳデータ１１８＿Ａ及び１１８＿Ｂを、処理要求毎に割り当てられた前記メモリ領域４０２及び４０３に処理要求毎に格納する。
【００６３】
図５に示すように、当該メモリ領域割り当て方法を採用した場合、前記逆多重化処理部１０３は逆多重化処理の処理要求毎に割り当てられた固定サイズのメモリ領域に処理結果を格納するから、結果として未使用のメモリ領域５０３及び５０４が発生することとなる。
【００６４】
上記の図５に示す逆多重化処理の流れについて、図６を用いて詳細に説明する。
【００６５】
図６は、処理毎に固定サイズのメモリ領域を割り当てる方法を適用した逆多重化処理の流れ示す説明図である。
【００６６】
図６において、先ず、前記データ読み出し処理３０１によってコンテンツデータ１１６が読み出されると、前記ＣＰＵ１０１は、読み出されたコンテンツデータ１１６の情報と、処理結果の格納先のメモリ領域を示す情報とを含んだ逆多重化処理要求６１０を、前記逆多重化処理部１０３に対して発行する。前記処理要求６１０を受け取った逆多重化処理部１０３は、前記メモリ部１０２のメモリ領域に設けられたバッファに前記処理要求６１０をキューイングする。そして、前記逆多重化処理部１０３は、最も先にキューイングされた処理要求に応答する処理を開始し（Ｓ６０１）、当該処理要求６１０に含まれる前記格納先のメモリ領域を示す情報に基づいて、逆多重化処理によって生成した前記映像ＥＳデータをメモリ領域に格納する（Ｓ６０２）。その後、前記逆多重化処理部１０３は、前記バッファに後続する処理要求６１０がキューイングされているか否かを判断し（Ｓ６０３）、前記処理要求６１０がキューイングされている場合には、後続する処理要求６１０に係る処理を実行する。
【００６７】
一方、ステップ６０２において実行された処理要求が最終処理を示す処理要求であった場合、前記逆多重化処理部１０３は、逆多重化処理を終了する（Ｓ６０４）。また、ステップ６０３において、前記バッファに処理要求がキューイングされておらず、且つステップ６０２において実行された処理が最終処理ではない場合には、ステップ６０１に移行し、前記逆多重化処理部１０３は、次の処理要求が発行されるまで待機する。
【００６８】
上記の逆多重化処理においては、複数の処理要求に対応するコンテンツデータが読み出され、バッファに格納されていても、前記ＣＰＵ１０１は、処理結果を格納するメモリ領域が確保されない限り処理要求を発行しない。そのため、複数回の処理要求を発行する場合には、前記ＣＰＵ１０１は、事前に複数の処理要求分のメモリ領域を確保しておかなければならない。例えば、前記ＣＰＵ１０１が４つの処理要求を発行する場合には、図４に示される前記メモリ領域４０２、４０３、４０４、及び４０５を予め確保する必要がある。そして、前記逆多重化処理部１０３が、処理要求毎の処理結果を処理要求毎に確保されたメモリ領域に格納すると、図５に示すようにメモリ領域４０２及び４０３のサイズに対して、実際に利用されたメモリ領域５０１及び５０２のサイズが小さいという状況が発生する。これは、処理要求毎に割り当てたメモリ領域のサイズは、前述したように、逆多重化処理における最大出力データサイズに基づいて決定されているからである。したがって、当該比較例による方法では、処理結果が最大出力データサイズとなる場合が連続しない限り、すなわち、記録時におけるビットレートが高い場合のコンテンツデータに係る逆多重化処理の要求が連続しない限り、未使用のメモリ領域が発生することとなる。
【００６９】
≪本実施の形態に係るメモリ領域の割り当て方法≫
そこで、本実施の形態に係る情報処理システム１０では、図４のように固定サイズのメモリ領域を処理要求毎に割り当てる方法ではなく、メモリ領域を割り当てるための記述子（以下、「ディスクリプタ」という。）を用いて割り当てるメモリ領域を動的に変更する方法を採用する。すなわち、前記ＣＰＵ１０１が、前記ディスクリプタを前記対象処理部における処理要求に付加して前記対象処理部に供給し、前記対象処理部において実行された処理結果に基づいて後続する処理要求に付加された前記ディスクリプタを更新することで、割り当てるメモリ領域を変更する。
【００７０】
以下の説明では、逆多重化処理における前記映像ＥＳデータ生成する処理に当該メモリ領域割り当て方法を適用する場合を例に説明する。
【００７１】
図７は、前記ディスクリプタの説明図である。
【００７２】
図７において、ディスクリプタ７０２〜７０５は、逆多重化処理における１ＧＯＰ単位の処理要求毎に、前記ＣＰＵ１０１によって付加された前記ディスクリプタである。
【００７３】
前記ディスクリプタ７０２〜７０５は、夫々の処理要求に応ずる処理において使用可能なメモリ領域の先頭アドレスの情報と、当該使用可能なメモリ領域のサイズ情報を有する。なお、前記ディスクリプタ７０２〜７０５には、前記情報処理システム１０における処理内容に応じて上記２つの情報以外の情報を含んでも構わない。
【００７４】
前記ディスクリプタを利用したメモリ領域割り当て方法について、図８及び図９を用いて詳細に説明する。
【００７５】
図８は、前記ディスクリプタによるメモリ領域割り当て方法の説明図である。
【００７６】
図９は、前記ディスクリプタによるメモリ領域割り当て方法を適用した逆多重化処理の流れを示す説明図である。
【００７７】
図８において、参照符号４０１に示されるメモリ領域は、図７と同様に逆多重化処理のために割り当てられたメモリ領域であり、逆多重化処理における１ＧＯＰ単位の処理要求毎に前記ディスクリプタ７０２〜７０５が付加され、４つの処理要求に応ずる処理のために４つの領域に分けられている。この場合において、前記メモリ領域４０１の先頭アドレスを起点として、前記逆多重化処理部１０３が処理結果を格納する手順について、図９を用いて説明する。
【００７８】
図９において、先ず、前記ＣＰＵ１０１は、前記逆多重化処理部１０３に逆多重化処理の指示を行うに際し、前記データ読み出し処理３０１によって読み出されたコンテンツデータ１１６の情報と前記ディスクリプタを含んだ処理要求９１０を、処理要求毎に前記逆多重化処理部１０３に対し発行する。この処理要求に含まれる前記ディスクリプタ７０２の前記２つの情報は、以下のように設定される。
【００７９】
前記ディスクリプタ７０２の前記先頭アドレスの情報は、前記メモリ領域４０１の先頭アドレスの値が設定される。また、前記ディスクリプタ７０２の当該使用可能なメモリ領域のサイズ情報は、例えば、製品仕様あるいは圧縮データのフォーマット仕様から算出される最大出力データサイズの値に設定される。これは、逆多重化処理結果のデータサイズが事前に確定されないため、前述のように、処理結果が仕様上の最大の出力データサイズとなる場合を想定するからである。
【００８０】
続く処理要求の前記ディスクリプタ７０３の前記２つの情報は、以下のように設定される。
【００８１】
当該ディスクリプタ７０３の前記先頭アドレスの情報は、前記ディスクリプタ７０２の前記先頭アドレスの値及び前記使用可能なメモリ領域のサイズの値に基づき設定される。例えば、前記先頭アドレスの情報は、前記ディスクリプタ７０２の前記先頭アドレスを起点とした前記使用可能なサイズまでのメモリ領域に連続する次のメモリアドレスの値に設定される。また、前記ディスクリプタ７０３の前記使用可能なメモリ領域のサイズ情報は、前記ディスクリプタ７０２の場合と同様の理由から、前記最大出力データサイズの値に設定される。
【００８２】
前記ディスクリプタ７０４及び７０５の前記２つの情報は、前記ディスクリプタ７０３と同様の方法により設定される。
【００８３】
上記のように設定されたディスクリプタを含む処理要求９１０を受け取った前記逆多重化処理部１０３は、前記処理要求９１０を前記メモリ部１０２に設けられたバッファにキューイングしていく。前記逆多重化処理部１０３は、キューイングされた処理要求に対しては、最も先にキューイングされた処理要求から処理を開始する（Ｓ９０１）。前記逆多重化処理部１０３は、実行した逆多重化処理の結果を前記ディスクリプタの情報に基づいてメモリ領域に格納する（Ｓ９０２）。図８の場合には、前記ディスクリプタ７０２に係る処理要求に応ずる処理を実行し、当該処理結果の前記映像ＥＳデータをメモリ領域８０５に格納する。そして、前記逆多重化処理部１０３は、前記ＣＰＵ１０１に１つの処理要求が完了したこと、及びデータを格納した前記メモリ領域８０５を示すアドレスの値を通知する。当該通知を受け取った前記ＣＰＵ１０１は、当該処理が完了した処理要求に係るディスクリプタ７０２の前記使用可能なメモリ領域のサイズの値を前記メモリ領域８０５のサイズの値に変更するとともに、前記バッファに後続の処理要求がキューイングされているか否かを確認する（Ｓ９０３）。このとき、後続する処理要求がキューイングされている場合には、前記ＣＰＵ１０１は、後続する処理要求に付加された前記ディスクリプタに含まれる前記先頭アドレスの情報を更新する（Ｓ９０４）。すなわち、図８において、前記ＣＰＵ１０１は、前記ディスクリプタ７０３の前記先頭アドレスの情報を、データが格納された前記メモリ領域８０５に連続する次のメモリアドレスの値に変更する。そして、前記ＣＰＵ１０１は、後続する前記ディスクリプタ７０４及び７０５の前記先頭アドレスの情報を、前述と同様の方法により、変更された前記ディスクリプタ７０３の前記先頭アドレスの値に基づいて設定する。なお、このとき前記ディスクリプタ７０３〜７０５の前記サイズ情報は更新されない。なぜなら、前述と同様に、この時点では逆多重化処理結果のデータサイズを確定することができないからである。
【００８４】
上記の手順により前記ディスクリプタ７０２〜７０５の情報が更新されると、前記逆多重化処理部１０３は、前記ディスクリプタ７０３に係る処理要求に応ずる逆多重化処理を実行して、前記ディスクリプタ７０３の情報に基づいて処理結果をメモリ領域８０６に格納する（Ｓ９０２）。そして、前記逆多重化処理部１０３は、前記ＣＰＵ１０１に１つの処理要求が完了したこと、及びデータを格納した前記メモリ領域８０６を示すアドレスの値を通知する。当該通知を受け取った前記ＣＰＵ１０１は、当該処理が完了した処理要求に係るディスクリプタ７０３の前記使用可能なメモリ領域のサイズの値を、前記メモリ領域８０６のサイズの値に変更するとともに、前記バッファに後続の処理要求がキューイングされているか否かを確認する（Ｓ９０３）。このとき、後続する処理要求がキューイングされている場合には、前記ＣＰＵ１０１は、前述と同様に、後続する処理要求に付加された前記ディスクリプタに含まれる前記先頭アドレスの情報を更新する（Ｓ９０４）。すなわち、図８において、前記ＣＰＵ１０１は、前記ディスクリプタ７０４の前記先頭アドレスの情報を、データが格納された前記メモリ領域８０６に連続する次のメモリアドレスの値に変更する。そして、前記ＣＰＵ１０１は、後続する前記ディスクリプタ７０５及び７０６の前記先頭アドレスの情報を、前述と同様に、変更された前記ディスクリプタ７０４の前記先頭アドレスの値に基づいて設定する。以降、処理要求が前記バッファにキューイングされている限り上記の処理が繰り返される（Ｓ９０２〜Ｓ９０４）。
【００８５】
一方、ステップ９０２において実行された処理要求が最終処理を示す処理要求であった場合、前記ＣＰＵ１０１は、前記逆多重化処理部１０３に対し逆多重化処理を終了させる制御を行う（Ｓ９０５）。また、ステップ９０３において、前記バッファに処理要求がキューイングされておらず、且つステップ９０２において実行された処理が最終処理ではない場合には、ステップ９０１に移行し、前記逆多重化処理部１０３は、次の処理要求が発行されるまで待機する。なお、上記の逆多重化処理では、前記ＣＰＵ１０１によって処理結果格納先のメモリ領域が確保されてから処理要求が発行されるので、前記逆多重化処理部１０３が空きメモリ領域を確保するために、逆多重化処理の開始後にメモリ領域の解放待ちをすることはない。
【００８６】
以上のように、本実施の形態に係るメモリ領域割り当て方法によれば、前記処理要求毎の使用可能なメモリ領域の範囲を、前記ディスクリプタを用いて適切に更新するから、バッファとして利用するメモリ領域を効率良く確保し利用することが可能となる。例えば、図８において、当初４つ分の処理要求に対するメモリ領域しか確保することができなかった前記メモリ領域４０１に、４つ以上の処理要求に対するメモリ領域を割り当てが可能となる。
【００８７】
また、当該メモリ領域割り当て方法により、情報処理システム１０の安定性を向上させることができる。例えば、ストリームデータの再生時に逆多重化処理がハングアップした場合において、前記バッファに格納されているデータの分だけ再生処理を続けることができるから、当該システムが復旧するまでの間に再生処理が停止してしまうことが起き難くなる。
【００８８】
≪他処理への空きメモリ領域の一時的な割り当て≫
前述のように、前記ディスクリプタに基づいたメモリ領域の割り当て方法により、逆多重化処理や音声復号化処理等の夫々の処理に割り当てたメモリ領域内において、空きメモリ領域が発生する可能性が高くなる。この場合には、当該空きメモリ領域を他の処理に一時的に割り当てることが可能となる。
【００８９】
図１０は、コンテンツデータの再生処理と記録処理が同時に行なわれるシステムにおいて、空きメモリ領域を有効利用する方法の一例である。
【００９０】
ここでは、再生処理に割り当てられたメモリ領域の一つである、前記映像ＥＳデータ格納用メモリ領域１０００＿１と、記憶処理に割り当てられたメモリ領域の一つである、記録用に多重化されたＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）データ格納用メモリ領域１０００＿２を例に説明する。
【００９１】
図１０において、前記再生処理及び前記記憶処理において実行される処理要求の上限値は４個であり、前記映像ＥＳデータ格納用メモリ領域１０００＿１には、処理要求の上限値の４個に対応する前記映像ＥＳデータが格納されている。また、ＴＳデータ格納用メモリ領域１０００＿２には、処理要求３個に対応するＴＳデータが格納されている。なお、図１０におけるメモリ領域１００１〜１００９の内部に付された数字は、データが格納された順番を表す。例えば、ＴＳデータ格納用メモリ領域１０００＿２におけるメモリ領域１００５は、記憶処理において１番目に処理された結果が格納された領域であり、メモリ領域１００７は、記憶処理において３番目に処理された結果が格納された領域である。
【００９２】
図１０に示されるように、前記映像ＥＳデータ格納用メモリ領域１０００＿１は、処理要求の上限値まで再生処理が完了しているにも関わらず、空きメモリ領域１０１０が存在し、メモリ領域に大きな余裕がある。逆に前記ＴＳデータ格納用メモリ領域１０００＿２には、残り一つの処理要求に応ずる処理の実行が可能であるが、空きメモリ領域は参照符号１０１１に示されるメモリ領域のみであり、メモリ領域に余裕がない状態である。この状態において記録処理要求がある場合には、前記映像ＥＳデータ格納用メモリ領域１０００＿１の空きメモリ領域の一部を、一時的に記憶処理のためのバッファとして割り当てることが可能となる。具体的には、メモリ領域１００５に格納されている、１番目の処理の結果をメモリ領域１００９に移動させ、当該移動により空いたメモリ領域１００５を利用して、４番目の処理結果をメモリ領域１００８に格納する。このように処理する理由は、前記映像ＥＳデータ格納用メモリ領域１０００＿１に余裕があるとはいえ、当該余裕は一時的なものであるから、次の再生処理において必要なメモリ領域が不足してしまう可能性があるからである。
【００９３】
なお、未使用メモリ領域を一時的に他の処理に割り当てる場合には、上記のように、一時利用するメモリ領域の使用時間を短くするために既存のデータを移動させる方法を採用してもよいし、既存のデータを移動させる処理に時間がかかる場合には、前記未使用メモリ領域に直接４番目の処理の結果を格納する方法を採用してもよい。また、所定の状況におけるメモリ利用状況などを鑑みて、前記未使用メモリ領域の使用方法を動的に変更する方式を採用してもよい。このように未使用メモリ領域の一時的割り当ての具体的な方法は画一的に確定できるものではなく、システム全体の性能や設計方針により変更されるべきである。
【００９４】
≪ファースト・イン・ファースト・アウト形式によるメモリ領域割り当て≫
前述の前記ディスクリプタを用いたメモリ領域割り当て方法は、前記ＣＰＵ１０１が、処理結果を格納するメモリ領域を確保してから処理要求を発行するシステムに適用して有効な方法であった。次に説明するメモリ割り当て方法は、前記ＣＰＵ１０１が処理結果を格納するメモリ領域を確保することなしに処理要求を発行するシステムに適用して有効な方法である。
【００９５】
本実施の形態に係るメモリ領域の割り当て方法の別の例として、前記対象処理部における処理要求に応ずる処理の結果を格納するためのメモリ領域のアドレスを示す第１ポインタと、前記処理の結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域のアドレスを示す第２ポインタを用いて、ファースト・イン・ファースト・アウト形式でメモリ領域に処理要求毎に処理結果を保持する方法を示す。
【００９６】
本実施の形態に係る処理結果の格納方法を、前記ＣＰＵ１０１が処理結果を格納するメモリ領域を確保することなしに処理要求を発行する情報処理システムへ適用する場合について、図１１及び図１２を用いて詳細に説明する。
【００９７】
図１１は、ディスクリプタを利用したデータ格納方法の説明図である。
【００９８】
図１２は、ディスクリプタを利用したデータ格納方法を適用した逆多重化処理の流れを示す説明図である。
【００９９】
なお、以下の説明では、前記情報処理システム１０において実行される複数の処理のうち、逆多重化処理における前記映像ＥＳデータを出力する処理を例に説明する。
【０１００】
図１１において、参照符号１２００で示されるメモリ領域は、予め逆多重化処理のために割り当てられたメモリ領域である。前記メモリ領域１２００は、ディスクリプタ１２０１に基づいてアドレッシングされる。
【０１０１】
前記ディスクリプタ１２０１は、前記メモリ領域１２００を管理ための記述子であり、３つの情報を有する。第１の情報は、新たな処理要求に応ずる処理結果を格納するメモリ領域のアドレスを示す第１のポインタ（以下、「ライトポインタ」という。）１２１１である。例えば、新たな処理結果の書き込み開始アドレスを示す情報である。第２の情報は、処理した結果を格納するメモリ領域から処理結果が読み出されて解放されたメモリ領域の終端アドレスを示す第２のポインタ（以下、「リードポインタ」という。）１２１２である。例えば、処理結果の読み出し開始アドレスを示す情報である。第３の情報は、有効な処理結果を保持しているメモリ領域のサイズを示す有効データサイズである。
【０１０２】
前記ディスクリプタ１２０１の３つの情報は、例えば、夫々レジスタ等に格納され、処理要求毎の処理が完了する毎に、前記ＣＰＵ１０１によって値が更新される。
【０１０３】
図１１に示すように前記ライトポインタ１２１１及び前記リードポインタ１２１２が前記メモリ領域１２００の先頭アドレスを示し、前記有効サイズデータが零である場合を起点に逆多重化処理の結果を格納する手順について、図１２を用いて説明する。
【０１０４】
図１２において、先ず、前記ＣＰＵ１０１は、前記逆多重化処理部１０３に逆多重化処理の指示を行うに際し、前記データ読み出し処理３０１によって読み出されたコンテンツデータ１１６の情報を含んだ処理要求１３１０を前記逆多重化処理部１０３に対し発行する。前記逆多重化処理部１０３は、発行された前記処理要求１３１０を前記メモリ部１０２に設けられたバッファにキューイングしていく。キューイングされた処理要求に対しては、最も先にキューイングされた処理要求から処理を開始する（Ｓ１３０１）。当該処理の開始に際し、前記逆多重化処理部１０３は、前記ディスクリプタ１２０１を参照し、前記ライトポインタ１２１１の示すアドレスから処理結果を格納するために必要なサイズ１２１０の空きメモリ領域の有無を確認する（Ｓ１３０２）。空きメモリ領域の有無は、前記ライトポインタ１２１１と前記リードポインタ１２１２の示すアドレスの値に基づいて行われる。例えば、前記逆多重化処理部１０３は、前記メモリ領域１２００の終端アドレスと前記ライトポインタ１２１１の示すアドレスとの差を演算することで空きメモリ領域のサイズを算出する。そして、当該算出した空きメモリ領域のサイズと前記必要なサイズ１２１０とを比較することで、必要な空きメモリ領域があるか否かを判断する。なお、前記必要なサイズ１２１０は、例えば、製品仕様あるいは圧縮データのフォーマット仕様から算出される最大出力データサイズであり、前記ディスクリプタ１２０１の第４の情報として格納されていてもよいし、別途用意したレジスタ等に格納されてもよい。
【０１０５】
ステップ１３０２において、必要なサイズ１２１０の空きメモリ領域がなかった場合には、前記逆多重化処理部１０３は、前記ＣＰＵ１０１に対しその旨通知しメモリ領域が解放されるまで待機する（Ｓ１３０４）。図１１の場合には、前記必要なサイズ１２１０の空きメモリ領域が存在することから、前記逆多重化処理部１０３は逆多重化処理を実行し、生成した前記映像ＥＳデータをメモリ領域１２０５に格納する（Ｓ１３０３）。
そして、前記逆多重化処理部１０３は、前記ＣＰＵ１０１に１つの処理要求が完了したこと、及びデータを格納したメモリ領域を示すアドレスの値を通知し、当該通知を受け取ったＣＰＵ１０１は、前記ディスクリプタ１２０１の値を更新する（Ｓ１３０５）。すなわち、前記ＣＰＵ１０１は、前記有効データサイズの値を、当該処理結果を格納したメモリ領域１２０５のサイズ１２１３＿１の値に変更し、前記ライトポインタ１２１１を、前記メモリ領域１２０５に連続する次のメモリアドレスの値に変更する。その後、前記逆多重化処理部１０３は、前記バッファに後続の処理要求がキューイングされているか否かを確認する（Ｓ１３０６）。このとき、後続する処理要求がキューイングされている場合には、前記逆多重化処理部１０３は、最も先にキューイングされた処理要求に応ずる処理を実行するため、前述と同様に、前記ディスクリプタ１２０１を参照し前記ライトポインタ１２１１の示すアドレスから処理結果を格納するために必要なサイズ１２１０のメモリ領域があるかどうかを確認する（Ｓ１３０２）。図１１の場合、前記必要なサイズ１２１０の空きメモリ領域が存在することから、前記逆多重化処理部１０３は逆多重化処理を実行し、生成した前記映像ＥＳデータをメモリ領域１２０６に格納する（Ｓ１３０３）。そして、前記逆多重化処理部１０３は、前記ＣＰＵ１０１に１つの処理要求が完了したこと、及びデータを格納したメモリ領域を示すアドレスの値を通知し、当該通知を受け取った前記ＣＰＵ１０１は、前記ディスクリプタ１２０１の値を更新する（Ｓ１３０５）。具体的には、前記ＣＰＵ１０１は、前記有効データサイズの値を、前述の処理結果を格納した前記メモリ領域１２０５のサイズ１２１３＿１と、当該処理結果を格納した前記メモリ領域１２０６のサイズ１２１３＿２とを加算した値に変更する。すなわち、前記有効データサイズの情報は、前記メモリ領域１２００に格納されている有効データの合計サイズの値となる。また、前記ＣＰＵ１０１は、前記ライトポインタ１２１１を前記メモリ領域１２０６に連続する次のメモリアドレスの値に変更する。
【０１０６】
なお、ステップ１３０３において実行された処理要求が最終処理を示す処理要求であった場合には、前記ＣＰＵ１０１は、ステップ１３０５において前記ディスクリプタ１２０１の値を更新するとともに、前記逆多重化処理部１０３に対し逆多重化処理を終了させる（Ｓ１３０７）。また、ステップ１３０６において、前記バッファに処理要求がキューイングされておらず、且つステップ１３０３おいて実行された処理が最終処理ではない場合には、ステップ１３０１に移行し、前記逆多重化処理部１０３は、次の処理要求が発行されるまで待機する。
【０１０７】
ここで、前記ディスクリプタ１２０１を利用しない場合の比較例として、固定サイズのメモリ領域を逐次的に利用してデータを格納する方法を図１３に示す。
【０１０８】
図１３は、固定サイズのメモリ領域を利用したデータ格納方法を適用した逆多重化処理の流れ示す説明図である。
【０１０９】
図１３による処理方法においては、前記ディスクリプタ１２０１を利用しないためディスクリプタの情報を更新する処理手順はない。
【０１１０】
図１３に示す方法によれば、前記逆多重化処理１０３は、処理要求毎に固定サイズの空きメモリ領域の有無を確認し、当該固定サイズのメモリ領域毎にデータを格納することを行うから、固定サイズのメモリ領域を逐次的に使用していくことができる。しかし、前述した、処理単位毎に固定サイズのメモリ領域を予め割り当てる方法と同様に、図５に示すような未使用のメモリ領域が発生する場合があり、メモリ領域の有効利用ができない。
【０１１１】
したがって、本実施の形態に係る、前記ディスクリプタ１２０１を利用したデータ格納方法によれば、前記ＣＰＵ１０１が、前記逆多重化処理部１０３による処理要求に応じた処理が完了する毎に前記ディスクリプタ１２０１の情報を更新するから、前記逆多重化処理部１０３は処理結果を連続するメモリ領域に逐次的に格納することが可能となり、前記メモリ領域１２００を有効に活用することができる。
【０１１２】
≪前記ディスクリプタ１２０１を用いたデータの読み出し方法≫
前記ディスクリプタ１２０１を用いた処理結果の読み出し方法について、図１４を用いて説明する。
【０１１３】
図１４は、前記ディスクリプタ１２０１を利用したデータ読み出し方法の説明図である。
【０１１４】
図１４における前記メモリ領域１２００は、前述と同様に前記逆多重化処理によって生成される前記映像ＥＳデータが格納用に割り当てられたメモリ領域である。
【０１１５】
図１４において、前述した前記ディスクリプタ１２０１を用いたデータの格納方法により、メモリ領域１２００の先頭アドレスから順次データが格納され、メモリ領域１４０３からメモリ領域１４０８までの領域に有効なデータが格納されている。このときの前記ディスクリプタ１２０１の前記３つの情報は次のようになっている。前記有効データサイズの情報は、当該有効なデータが格納されているメモリ領域のサイズの合計値１４００＿１である。そして、前記ライトポインタ１２１１は、前記メモリ領域１３０８に連続するメモリ領域１４０９の先頭アドレスを示している。また、前記リードポインタ１２１２は前記メモリ領域１２００の先頭アドレスを示している。
【０１１６】
この場合において、前記映像デコーダ部１０６が復号化処理のために必要な前記映像ＥＳデータを読み出す場合を考える。データの読み出しは、前記メモリ領域１２００に最も先に格納された有効なデータから逐次行われる。すなわち、前記映像デコーダ部１０６は、当該リードポインタ１２１２の示すアドレスから、読み出しが要求されたサイズ１４１０のデータを読み出す。具体的には、図１４の場合において、前記映像デコーダ部１０６は、前記ディスクリプタ１２０１を参照して、前記有効データサイズの値から当該メモリ領域１２００に有効なデータが格納されていることを確認し、前記リードポインタ１２１２に基づいて前記要求されたサイズ１４１０のデータを読み出す。この場合、前記メモリ領域１４０３のデータが読み出され、当該メモリ領域１４０３が解放される。そして、前記要求されたサイズ１４１０のデータの読み出しが完了したら、前記映像デコーダ部１０６は前記ＣＰＵ１０１に対し、データの読み出しが完了したこと及び、データを読み出したメモリ領域のアドレスを通知し、当該通知を受け取った前記ＣＰＵ１０１は、前記ディスクリプタ１２０１の情報を更新する。具体的には、前記ＣＰＵ１０１は、前記有効データサイズの情報を、更新前の値１４００＿１から読み出したデータ分１４１０だけ減算した値１４００＿２に変更する。また、前記ＣＰＵ１０１は、前記リードポインタ１２１２の情報を、当該データを解放したメモリ領域１４０３に連続するメモリ領域１４０４の先頭アドレスの情報に変更する。これによりデータの読み出し処理が完了する。
【０１１７】
≪ラップアラウンドによるデータ格納方法≫
次に、前記ディスクリプタ１２０１を用いた、ラップアラウンドによるデータ格納方法について、図１５Ａ、図１５Ｂ及び図１５Ｃを用いて説明する。
【０１１８】
図１５Ａは、逆多重化処理におけるラップアラウンドによるデータ格納方法の説明図である。
【０１１９】
図１５Ａにおいて、メモリ領域１５０１はデータが読み出されて解放されており、メモリ領域１５０２からメモリ領域１５０４までは有効なデータが格納されている。このときの前記ディスクリプタ１２０１の３つの情報は次のようになっている。前記有効データサイズの情報は、当該有効なデータが格納されているメモリ領域のサイズの合計値１５００＿１である。また、前記ライトポインタ１２１１は、前記メモリ領域１５０４に連続するメモリ領域１５０５の先頭アドレスを示している。更に、前記リードポインタ１２１２は前記メモリ領域１２００の先頭アドレスを示している。ここで、前記メモリ領域１２００の終端アドレスと前記ライトポインタ１２１１が示すアドレスとの差分により求まるメモリ領域１５０５は空きメモリ領域であり、そのサイズは次の処理要求に応ずる処理結果を格納するために必要なメモリ領域のサイズ１２１０よりも小さいサイズである。
【０１２０】
図１５Ａの場合におけるラップアラウンドによるデータ格納方法として、２通りの方法がある。
【０１２１】
第１のデータ格納方法は、前記メモリ領域１２００の終端アドレスでラップアラウンドするデータ格納方法である。
【０１２２】
図１５Ｂは、ラップアラウンドによる第１のデータ格納方法の説明図である。
【０１２３】
ラップアラウンドによるデータ格納前の状態である図１５Ａにおいて、前記逆多重化処理部１０３は、新たな逆多重化処理の処理要求を受け取ると、前述のように前記ディスクリプタ１２０１を利用して、処理結果を格納するために必要なサイズ１２１０の空きメモリ領域の有無を調べる。このとき、当該空きメモリ領域が存在しない場合には、前述と同様に、前記逆多重化処理部１０３は待機する。また、空きメモリ領域が存在し、且つ前記必要なサイズ１２１０よりも前記メモリ領域１５０５のサイズが大きい場合には、前記逆多重化処理部１０３は、前述の図１１に示す方法により処理結果を格納する。一方、空きメモリ領域は存在するが前記必要なサイズ１２１０よりも前記メモリ領域１５０５のサイズが小さい場合には、前記逆多重化処理部１０３は、前記ライトポインタ１２１１に基づいて前記メモリ領域１２００の終端アドレスまでデータを格納し、当該終端アドレスでラップアラウンドして、前記メモリ領域１２００の先頭アドレスから残りのデータを格納する。そして、データの格納が完了したら、前記逆多重化処理部１０３は、前述と同様に前記ＣＰＵ１０１に通知し、当該通知を受け取ったＣＰＵ１０１は、前記ディスクリプタ１２０１を更新する。具体的には、図１５Ｂに示すように、前記ＣＰＵ１０１は、前記ライトポインタ１２１１を前記メモリ領域１５０７に連続するメモリ領域１５０８の先頭アドレスの値に変更する。また、前記ＣＰＵ１０１は、前記有効データサイズの情報を、予め有効データが格納されていたメモリ領域のサイズの値１５００＿１と、当該データを格納した前記メモリ領域１５０５のサイズ１５００＿３及びメモリ領域１５０７のサイズ１５００＿４の合計サイズの値に変更する。
【０１２４】
これによれば、前記メモリ領域１２００の先頭アドレスから終端アドレスまでのラップアラウンド制御が可能となり、前記メモリ領域１２００を無駄なく利用することが可能となる。
【０１２５】
次に、ラップアラウンドによるデータ格納方法の第２の方法について説明する。
【０１２６】
前記第２のデータ格納方法は、空きメモリ領域のサイズに基づいてラップアラウンドするデータ格納方法である。
【０１２７】
図１５Ｃは、ラップアラウンドによる第２のデータ格納方法の説明図である。
【０１２８】
ラップアラウンドによるデータ格納前の状態である図１５Ａにおいて、前記逆多重化処理部１０３は、新たな逆多重化処理の処理要求を受け取ると、前述と同様にディスクリプタを利用して処理結果を格納するために必要なサイズ１２１０の空きメモリ領域の有無を調べる。このとき、前記必要なサイズ１２１０よりも前記メモリ領域１５０５のサイズが大きい場合には、前記第１の方法と同様の処理を行う。一方、前記必要なサイズ１２１０よりも前記メモリ領域１５０５のサイズが小さい場合には、前記逆多重化処理部１０３は、前記メモリ領域１２００の先頭アドレスから空きメモリ領域が存在するか否かを判断する。すなわち、当該先頭アドレスからリードポインタ１２１２の示すアドレスまでのメモリ領域１５０１のサイズが前記必要なサイズ１２１０よりも小さい場合には、前記逆多重化処理部１０３は、前述と同様に待機する。一方、前記メモリ領域１５０１のサイズが前記必要なサイズ１２１０よりも大きい場合には、前記逆多重化処理部１０３は、ラップアラウンドして当該先頭アドレスから処理結果を格納する。そして、データの格納が完了したら、前記逆多重化処理部１０３は、前述と同様に前記ＣＰＵ１０１に通知し、当該通知を受け取った前記ＣＰＵ１０１は、前記ディスクリプタ１２０１の情報の更新を行う。具体的には、図１５Ｃに示すように、前記ＣＰＵ１０１は、前記ライトポインタ１２１１の情報を前記メモリ領域１５０６に連続する次のメモリアドレスの値に変更する。また、前記ＣＰＵ１０１は、前記有効データサイズの情報を、予め格納していた有効データの合計値１５００＿１と当該処理によって格納されたメモリ領域１５０６のサイズ１５００＿２との合計サイズの値に変更する。
【０１２９】
前記第２の方法によれば、処理結果の格納の際に、前記ライトポインタ１２１１から前記メモリ領域１２００の終端アドレスまでの空きメモリ領域のサイズに基づいてラップアラウンド制御を行うから、処理単位毎の処理結果を連続したメモリ領域に格納することができる。
【０１３０】
≪ラップアラウンドによるデータ読み出し方法≫
前記第１のデータ格納方法によってラップアラウンドしてデータが格納された場合のデータの読み出し方法について説明する。
【０１３１】
当該データの読み出し方法は、前記リードポインタ１２１２に基づいて前記メモリ領域１２００の終端アドレスまでデータを読み出し、当該終端アドレスまでデータを読み出した後は、ラップアラウンドして前記メモリ領域１２００の先頭アドレスからデータを読み出す方法である。
【０１３２】
当該読み出し方法の一例を図１６に示す。
【０１３３】
図１６は、前記第１のデータ格納方法におけるデータ読み出し方法の一例である。
【０１３４】
図１６において、前記メモリ領域１２００におけるメモリ領域１６０１及び１６０２には、逆多重化処理の結果である前記映像ＥＳデータが格納されており、前記有効データサイズは前記メモリ領域１６０１のデータサイズ１６００＿１と、前記メモリ領域１６０２のデータサイズ１６００＿２の合計サイズである。また、前記ライトポインタ１２１１は、前記メモリ領域１６０１に連続するメモリ領域の先頭アドレスを示し、前記リードポインタ１２１２は、前記メモリ領域１６０２の先頭アドレスを示している。
【０１３５】
この場合において、前記映像デコーダ部１０６が格納されている前記映像ＥＳデータを読み出す場合を考える。
【０１３６】
図１６において、前記映像デコーダ部１０６は、前述の図１４に示した方法と同様に、前記ディスクリプタ１２０１を利用して、読み出しが要求されたサイズのデータの読み出し処理を開始する。そして、前記映像デコーダ部１０６は、前記メモリ領域１２００の終端アドレスまでのデータを読み出したら、ラップアラウンドして前記メモリ領域１２００の先頭アドレスから残りのデータを読み出す。前記読み出しが要求されたサイズのデータの読み出し処理が完了したら、前述と同様に前記映像デコーダ部１０６は前記ＣＰＵ１０１に通知し、当該通知を受け取った前記ＣＰＵ１０１は、前記ディスクリプタ１２０１を更新する。具体的には、図１６に示すように、前記ＣＰＵ１０１は、前記リードポインタ１２１２を前記メモリ領域１６０２＿１に連続するメモリ領域１６０２＿２の先頭アドレスの値に変更する。また、前記ＣＰＵ１０１は、前記有効データサイズの情報を、予め格納していたサイズ１６００＿１とサイズ１６００＿２の合計サイズから、当該読み出しによって解放したメモリ領域１６０１及びメモリ領域１６０２＿１のサイズを減算したサイズ１６００＿３に変更する。
【０１３７】
以上の方法によれば、前記メモリ領域１２００の終端アドレスまでデータを読み出した後にラップアラウンドして当該メモリ領域の先頭アドレスから再度データの読み出しを行うので、前記メモリ領域に格納された有効なデータをもれなく読み出すことができる。
【０１３８】
次に前記第２のデータ格納の方法によってデータが格納された場合のデータの読み出し方法について説明する。
【０１３９】
前記第２のデータ格納方法によりデータを格納している場合には、前記メモリ領域１２００の終端アドレスまでデータが格納されていない場合がある。当該データの読み出し方法は、このような場合に、有効データが格納されているアドレスまでデータを読み出したら、ラップアラウンドして前記メモリ領域１２００の先頭アドレスからデータを読み出す方法である。
【０１４０】
当該読み出し方法の一例を図１７に示す。
【０１４１】
図１７は、前記第２のデータ格納方法におけるデータ読み出し方法の一例である。
【０１４２】
図１７において、前記メモリ領域１２００のメモリ領域１７０１及び１７０２には、逆多重化処理の結果である前記映像ＥＳデータが格納されており、前記有効データサイズは、前記メモリ領域１７０１のデータサイズ１７００＿１と、前記メモリ領域１７０２のデータサイズ１７００＿２の合計サイズである。また、前記ライトポインタ１２１１は、前記メモリ領域１７０１に連続するメモリ領域１７０３の先頭アドレスを示し、前記リードポインタ１２１２は、メモリ領域１７０４の先頭アドレスを示している。
【０１４３】
この場合において、前記映像デコーダ部１０６が格納されている前記映像ＥＳデータを読み出す場合を考える。
【０１４４】
図１７において、前記映像デコーダ部１０６はデータの読み出しに際し、前記ライトポインタ１２１１の示すアドレスと前記メモリ領域１２００の先頭アドレスとの差分により求まるメモリ領域のサイズと、前記ディスクリプタ１２０１の前記有効データサイズとが一致するか否かを判断する。このとき、当該二つのサイズが一致しない場合には、前述の図１４に示す方法によりデータを読み出す。一方、当該二つのサイズが一致する場合には、前記映像デコーダ部１０６は、ラップアラウンドして前記メモリ領域１２００の先頭アドレスから、読み出しが要求されたサイズ１７２０のデータを読み出す。そして、前記映像デコーダ部１０６は、前述と同様に前記ＣＰＵ１０１に通知し、当該通知を受け取った前記ＣＰＵ１０１は、前記ディスクリプタ１２０１の情報を更新する。すなわち、前記ＣＰＵ１０１は、前記有効データのサイズ情報をメモリ領域１７０２のサイズ１７００＿２に変更し、前記リードポインタ１２１２の値を前記メモリ領域１７０２の先頭アドレスに変更する。
【０１４５】
この方法によれば、前記メモリ領域１２００の終端アドレスまでデータが格納されていない場合でもラップアラウンドして当該メモリ領域の先頭アドレスから再度データの読み出しを行うので、前記メモリ領域に格納された有効なデータをもれなく読み出すことができる。
【０１４６】
なお、前記第２の方法によってデータが格納された場合におけるデータ読み出し方法の別の例として、前記第２の方法によるデータ格納時に使用しなかったメモリ領域のアドレスを登録し、データ読み出し時に当該アドレスに基づいて読み出しを行う方法もある。
【０１４７】
例えば、図１７の場合において、前記逆多重化処理部１０３が前記第２の方法によりメモリ領域１７０１及び１７０２にデータを格納して、その後前記ＣＰＵ１０１に前述の通知を行う際に、データを格納しなかったメモリ領域１７０４のアドレスの値もあわせて通知する。当該通知を受け取った前記ＣＰＵ１０１は、前記メモリ領域１７０４を使用不可能メモリ領域とし、そのアドレスの値を前記ディスクリプタ１２０１に登録する。そして、前記映像デコーダ部１０６がデータを読み出す際に、前記ディスクリプタ１２０１を参照し、前記リードポインタ１２１２に基づいて前記メモリ領域１７０４の手前のメモリアドレスまでのデータを読み出し、その後ラップアラウンドして、前記メモリ領域１２００の先頭アドレスからデータを読み出す。前記映像デコーダ部１０６は、データの読み出しが完了したら、前述と同様に前記ＣＰＵ１０１に通知し、前記ＣＰＵ１０１は前記ディスクリプタ１２０１を更新する。このとき、前記ＣＰＵ１０１は前述の更新に加え、登録された前記メモリ領域１７０４のアドレスの値をクリアして、前記メモリ領域１７０４を使用可能なメモリ領域に変更する。
【０１４８】
これによれば、前述のデータ読み出し方法と同様の作用を奏する。
【０１４９】
以上により逆多重化処理において、本実施の形態に係るメモリ領域割り当て方法とそれに対応するデータの読み出し方法を採用することで、前記メモリ部１０２のメモリ領域を効率よく使用することが可能となる。
【０１５０】
なお、上記の説明では、本実施の形態に係るメモリ領域割り当て方法とそれに対応するデータの読み出し方法を、逆多重化処理に適用する場合を例としたが、前記再生処理における他の処理に適用してもよい。例えば、音声復号化処理や映像復号化処理等に適用しても同様の作用を奏する。
【０１５１】
≪記録処理時におけるメモリ領域割り当て≫
前述したメモリ領域割り当て方法は、前記情報処理システム１０における前記再生処理に適用する場合の例であったが、当該メモリ領域割り当て方法は、前記記録処理に適用することもできる。
【０１５２】
図１８は、前記記録処理時のデータの流れ示す説明図である。
【０１５３】
図１８において、前記記録処理の対象となるデータの一例として、ＭＰＥＧ形式のデータを例としている。
【０１５４】
記録処理において、前記音声入力部１１０は、取り込んだ音声を電気信号に変換して音声ロウデータ１２０を出力する。また、前記映像入力部１１２は、取り込んだ映像を電気信号に変換して映像ロウデータ１２１を出力する。出力された前記音声ロウデータ１２０は前記音声エンコーダ部１０９に入力され、符号化処理により前記音声ＥＳデータ１１７として出力される。同様に前記映像ロウデータ１２１は前記映像エンコーダ部１１１に入力され、符号化処理により映像ＥＳデータ１１８として出力される。そして、前記多重化処理部１０８は、前記音声ＥＳデータ１１７及び前記映像ＥＳデータ１１８を入力し、多重化処理を行って、コンテンツデータ１１６を生成する。当該生成された前記コンテンツデータ１１６は、前記記録装置３０に記録される。このコンテンツデータ１１６を記録媒体である前記フラッシュメモリ１１４や前記ＨＤＤ１１５に格納することで、記録処理を実現できる。格納フォーマットごとに異なる情報については、これらの処理と平行して、あるいはあらかじめパラメータを設定するなどして、別途作成すればよい。
【０１５５】
図１９は、前記記録処理時における処理内容と処理に伴うデータの説明図である。
【０１５６】
多重化処理１９０５は、１ＧＯＰ分のコンテンツデータに対する処理を処理単位として処理を実行する場合を一例としている。前記処理単位は、処理を実行するハードウェアの仕様や実行する処理内容等に応じて変更しても構ない。
【０１５７】
図１９において、音声データ取得処理１９０１、音声符号化処理１９０２、映像データ取得処理１９０３、映像符号化処理１９０４、多重化処理１９０５及び、データ書き込み処理１９０６では、前記再生処理における各処理と同様に、メモリ領域の一部がバッファとして利用される。
【０１５８】
前記バッファとして割り当てられるメモリ領域のサイズを決めるに際し、前記音声データ処理１９０１及び前記映像データ取得処理１９０３によって生成される音声ロウデータ１２０及び映像ロウデータ１２１を格納するバッファのサイズは、前記音声入力部１１０及び前記映像入力部１１２の仕様等から予め算出することができる。しかしながら、前記音声符号化処理１９０２及び前記映像符号化処理１９０４によって生成される前記音声ＥＳデータ１１７及び前記映像ＥＳデータ１１８を格納するバッファのサイズを予め確定するのは困難である。音声符号化処理１９０２及び映像符号化処理１９０４によって、どの程度圧縮されるかを事前に算出することが困難だからである。また、前記コンテンツデータ１１６を格納するバッファのサイズについても、予め確定するのは困難である。所定の処理単位における多重化前の前記音声ＥＳデータ１１７及び前記映像ＥＳデータ１１８のデータサイズが変動するからである。
【０１５９】
したがって、前記音声符号化処理１９０２、前記映像符号化処理１９０４、及び前記多重化処理１９０５において利用するバッファに対しても前記再生処理において採用したメモリ領域の割り当て方法及びデータ読み出し方法を採用することができ、同様の作用を奏する。
【０１６０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１６１】
例えば、前記情報処理システム１０において、前記比較例として図４に示した固定サイズのメモリ領域を処理要求毎に割り当てる方法と、本実施の形態に係るメモリ領域の割り当て方法を選択可能にする方式を採用してもよい。この場合には、夫々の前記対象処理部に対応したレジスタ等に夫々のメモリ領域割り当て方法に対応する値を格納しておくことで、前記ＣＰＵ１０１が処理状況等に応じて当該レジスタ等を参照してメモリ領域方法を決定することが可能となる。また、前記情報処理システム１０の設計時に当該システムの仕様等に応じて選択することも可能となる。
【符号の説明】
【０１６２】
１０  情報処理システム
１０１  データ処理制御部
３０  記録装置
６０  記録部
１１３  記録装置接続部
１１４  フラッシュメモリ
１１５  ＨＤＤ
９０  バス
１０３  逆多重化処理部
１０８  多重化処理部
４０  復号化処理部
１０４  音声デコーダ部
１０６  映像デコーダ部
７０  出力部
１０５  音声出力部
１０７  映像表示部
５０  符号化処理部
１０９  音声エンコーダ部
１１１  映像エンコーダ部
８０  入力部
１１０  音声入力部
１１２  映像入力部
１０２  メモリ部
１１６  コンテンツデータ
１１７  音声ＥＳデータ
１１８  映像ＥＳデータ
１１９  その他ＥＳデータ
１２０  音声ロウデータ
１２１  映像ロウデータ
１２２  制御用データ
１２３  制御用プログラム
３０１  データ読み出し処理
３０２  逆多重化処理
３０３  音声復号化処理
３０４  音声データ出力処理
３０７  映像復号化処理
３０８  映像データ出力処理
４０１  逆多重化処理に割り当てられたメモリ領域
４０２、４０３、４０４、４０５  処理要求毎に割り当てられたメモリ領域
１１６＿Ａ、１１６＿Ｂ  処理要求毎のコンテンツデータ
１１８＿Ａ、１１８＿Ｂ  処理要求毎の映像ＥＳデータ
５０１、５０２  映像ＥＳデータが格納されたメモリ領域
５０３、５０４  未使用のメモリ領域
６１０、９１０  逆多重化処理要求
７０２、７０３、７０４、７０５  ディスクリプタ
８０５、８０６  処理結果が格納されたメモリ領域
１００１〜１０１１  メモリ領域
１０００＿１  映像ＥＳデータ格納用メモリ領域
１０００＿２  ＴＳデータ格納用メモリ領域
１２００  逆多重化処理に割り当てられたメモリ領域
１２０１  ディスクリプタ
１２１１  ライトポインタ
１２１２  リードポインタ
１２１０、１２１０＿１、１２１０＿２  処理結果の格納に必要なデータサイズ
１２０５、１２０６  メモリ領域
１２１３＿１、１２１３＿２  メモリ領域のサイズ
１３１０  逆多重化処理要求
１４０３〜１４０９  メモリ領域
１４１０  読み出しが要求されたデータサイズ
１４００＿１、１４００＿２  有効データサイズ
１５０１〜１５０８  メモリ領域
１５００＿１〜１５００＿４  有効データサイズ
１６０１、１６０２、１６０２＿１、１６０２＿２、１７０１〜１７０４  メモリ領域
１６００＿１〜１６００＿３、１７００＿１、１７００＿２  有効データサイズ
１６２０、１７２０  読み出しが要求されたデータサイズ
１９０１  音声データ取得処理
１９０２  音声符号化処理
１９０３  映像データ取得処理
１９０４  映像符号化処理
１９０５  多重化処理
１９０６  データ書き込み処理
【図１】
2011109298.tif 000003
【図２】
2011109298.tif 000004
【図３】
2011109298.tif 000005
【図４】
2011109298.tif 000006
【図５】
2011109298.tif 000007
【図６】
2011109298.tif 000008
【図７】
2011109298.tif 000009
【図８】
2011109298.tif 000010
【図９】
2011109298.tif 000011
【図１０】
2011109298.tif 000012
【図１１】
2011109298.tif 000013
【図１２】
2011109298.tif 000014
【図１３】
2011109298.tif 000015
【図１４】
2011109298.tif 000016
【図１５Ａ】
2011109298.tif 000017
【図１５Ｂ】
2011109298.tif 000018
【図１５Ｃ】
2011109298.tif 000019
【図１６】
2011109298.tif 000020
【図１７】
2011109298.tif 000021
【図１８】
2011109298.tif 000022
【図１９】
2011109298.tif 000023