(57)【要約】【課題】  １つの画像メモリを共用してエンコードおよびデコードを並行して実行する場合に、処理対象の画像サイズの変更に対して柔軟に対応することを可能にする。【解決手段】  メモリ確保処理部５２は、エンコードおよびデコードのそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、指定された画像サイズに対応するメモリ領域を画像メモリ上の空き領域に画像枚数分だけ個別に割り当てて確保し、確保したメモリ領域を示すアドレスを出力する。メモリ領域管理部５１は、確保された各メモリ領域の識別情報と、メモリ領域にアクセスするためのアクセス情報との対応関係をメモリ領域ごとに記憶したメモリ領域情報を保持するとともに、各メモリ領域に対するエンコーダおよびデコーダからの使用要求および返却要求を受け付けて、各メモリ領域の使用状態をメモリ領域情報を用いて管理する。【選択図】  図２
2005234687.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像処理手段により１つの画像メモリを作業領域として共用して、前記各画像処理手段による処理を並行して実行するためのメモリ管理方法において、
メモリ領域確保手段が、複数の前記画像処理手段のそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、前記画像サイズに対応するメモリ領域を前記画像メモリ上の空き領域に前記画像枚数分だけ個別に割り当てて確保し、確保した前記メモリ領域を示すアドレスを出力するメモリ領域確保ステップと、
メモリ領域管理手段が、前記メモリ領域確保ステップで確保された前記各メモリ領域の識別情報と、少なくとも前記アドレスを含む、前記メモリ領域にアクセスするためのアクセス情報との対応関係を、前記メモリ領域ごとに記憶したメモリ領域情報を生成するメモリ領域情報生成ステップと、
前記メモリ領域管理手段が、前記各メモリ領域に対する前記各画像処理手段からの使用要求および返却要求を受け付けて、前記各メモリ領域の使用状態を前記メモリ領域情報を用いて管理するメモリ領域管理ステップと、
を含むことを特徴とするメモリ管理方法。
【請求項２】
前記画像処理手段の処理が停止されると、前記メモリ領域管理手段が、当該画像処理手段の処理のために確保された前記メモリ領域を再び空き領域に設定するとともに、対応する前記メモリ領域情報を消去するメモリ領域解放ステップをさらに含むことを特徴とする請求項１記載のメモリ管理方法。
【請求項３】
前記メモリ領域管理ステップでは、対応する前記画像処理手段ごとに、当該画像処理手段により使用中の前記メモリ領域に対応する前記メモリ領域情報を含む第１の線形リストと、未使用の前記メモリ領域に対応する前記メモリ領域情報を含む第２の線形リストとを用いて、前記各メモリ領域の使用状態を管理することを特徴とする請求項１記載のメモリ管理方法。
【請求項４】
前記メモリ領域情報生成ステップは、前記メモリ領域確保ステップで確保された前記メモリ領域に対応する前記メモリ領域情報を前記第２の線形リストに順次接続するステップを含み、
前記メモリ領域管理ステップは、前記画像処理手段からの前記使用要求を受けると、前記第２の線形リストの先頭の前記メモリ領域情報を取り出して、前記第１の線形リストの最後尾に接続するとともに、当該メモリ領域情報を識別するための識別番号を要求元の前記画像処理手段に出力するステップを含む、
ことを特徴とする請求項３記載のメモリ管理方法。
【請求項５】
前記メモリ領域管理ステップは、前記画像処理手段から前記識別番号が指定された前記返却要求を受けると、指定された前記識別番号に該当する前記メモリ領域情報を前記第１の線形リストから取り出して、前記第２の線形リストの最後尾に接続するステップをさらに含むことを特徴とする請求項４記載のメモリ管理方法。
【請求項６】
前記画像処理手段の処理が停止されると、前記メモリ領域管理手段が、対応する前記第２の線形リスト上の前記メモリ領域情報を消去するとともに、当該メモリ領域情報に対応する前記メモリ領域を空き領域に設定するメモリ領域解放ステップをさらに含むことを特徴とする請求項５記載のメモリ管理方法。
【請求項７】
前記メモリ領域管理ステップは、前記画像処理手段から前記メモリ領域を指定した前記画像メモリに対するアクセス要求を受けると、指定された前記メモリ領域に対応する前記メモリ領域情報により対応付けられた前記アクセス情報を用いて前記画像メモリにアクセスし、指定された前記メモリ領域と要求元の前記画像処理装置との間で画像データを転送するステップを含むことを特徴とする請求項１記載のメモリ管理方法。
【請求項８】
前記メモリ領域確保ステップでは、前記画像メモリ上の単位メモリ領域を二分木構造の最下層のノードに対応付けて管理し、前記画像サイズが指定されると、指定された前記画像サイズ分の画像データを格納可能な１つ以上の前記単位メモリ領域が最下層の子ノードに対応付けられている前記二分木構造内のノードを抽出し、抽出したノードを示すノード番号を前記メモリ領域管理手段に出力することで、指定された前記画像サイズに対応する前記メモリ領域を確保し、
前記メモリ領域管理ステップでは、前記メモリ領域確保ステップで出力された前記ノード番号を前記メモリ領域情報内に記憶する、
ことを特徴とする請求項１記載のメモリ管理方法。
【請求項９】
前記メモリ領域確保ステップでは、確保した前記メモリ領域を示す前記アドレスとして当該メモリ領域の先頭アドレスを出力し、
前記アクセス情報は、前記先頭アドレスと、当該先頭アドレスにより示される前記メモリ領域に対応する画像サイズとを含むことを特徴とする請求項１記載のメモリ管理方法。
【請求項１０】
複数の画像処理手段により１つの画像メモリを作業領域として共用して、前記各画像処理手段による処理を並行して実行することが可能な画像処理装置において、
複数の前記画像処理手段のそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、前記画像サイズに対応するメモリ領域を前記画像メモリ上の空き領域に前記画像枚数分だけ個別に割り当てて確保し、確保した前記メモリ領域を示すアドレスを出力するメモリ領域確保手段と、
前記メモリ領域確保手段により確保された前記各メモリ領域の識別情報と、少なくとも前記アドレスを含む、前記メモリ領域にアクセスするためのアクセス情報との対応関係を、前記メモリ領域ごとに記憶したメモリ領域情報を保持するとともに、前記各メモリ領域に対する前記各画像処理手段からの使用要求および返却要求を受け付けて、前記各メモリ領域の使用状態を前記メモリ領域情報を用いて管理するメモリ領域管理手段と、
を有することを特徴とする画像処理装置。
【請求項１１】
前記メモリ領域管理手段は、前記画像処理手段の処理が停止されると、当該画像処理手段の処理のために確保された前記メモリ領域の解放要求を前記メモリ領域確保手段に出力して、対応する前記メモリ領域情報を消去し、
前記メモリ領域確保手段は、前記メモリ領域管理手段からの前記解放要求を受けると、対応する前記メモリ領域を再び空き領域に設定する、
ことを特徴とする請求項１０記載の画像処理装置。
【請求項１２】
前記メモリ領域管理手段は、対応する前記画像処理手段ごとに、当該画像処理手段により使用中の前記メモリ領域に対応する前記メモリ領域情報を含む第１の線形リストと、未使用の前記メモリ領域に対応する前記メモリ領域情報を含む第２の線形リストとを用いて、前記各メモリ領域の使用状態を管理することを特徴とする請求項１０記載の画像処理装置。
【請求項１３】
前記メモリ領域管理手段は、前記メモリ領域確保手段により確保された前記メモリ領域に対応する前記メモリ領域情報を前記第２の線形リストに順次接続し、前記画像処理手段からの前記使用要求を受けると、前記第２の線形リストの先頭の前記メモリ領域情報を取り出して、前記第１の線形リストの最後尾に接続するとともに、当該メモリ領域情報を識別するための識別番号を要求元の前記画像処理手段に出力することを特徴とする請求項１２記載の画像処理装置。
【請求項１４】
前記メモリ領域管理手段は、前記画像処理手段から前記識別番号が指定された前記返却要求を受けると、指定された前記識別番号に該当する前記メモリ領域情報を前記第１の線形リストから取り出して、前記第２の線形リストの最後尾に接続することを特徴とする請求項１３記載の画像処理装置。
【請求項１５】
前記メモリ領域管理手段は、前記画像処理手段の処理が停止されると、対応する前記第２の線形リスト上の前記メモリ領域情報に対応する前記メモリ領域の解放要求を前記メモリ領域確保手段に出力して、当該メモリ領域情報を消去し、
前記メモリ領域確保手段は、前記メモリ領域管理手段から前記解放要求に応じて、対応する前記メモリ領域を空き領域に設定する、
ことを特徴とする請求項１４記載の画像処理装置。
【請求項１６】
前記メモリ領域管理手段は、前記画像処理手段から前記メモリ領域を指定した前記画像メモリに対するアクセス要求を受けると、指定された前記メモリ領域に対応する前記メモリ領域情報により対応付けられた前記アクセス情報を用いて前記画像メモリにアクセスし、指定された前記メモリ領域と要求元の前記画像処理装置との間で画像データを転送することを特徴とする請求項１０記載の画像処理装置。
【請求項１７】
前記メモリ領域確保手段は、前記画像メモリ上の単位メモリ領域を二分木構造の最下層のノードに対応付けて管理し、前記画像サイズが指定されると、指定された前記画像サイズ分の画像データを格納可能な１つ以上の前記単位メモリ領域が最下層の子ノードに対応付けられている前記二分木構造内のノードを抽出し、抽出したノードを示すノード番号を前記メモリ領域管理手段に出力することで、指定された前記画像サイズに対応する前記メモリ領域を確保し、
前記メモリ領域管理手段は、前記メモリ領域確保手段からの前記ノード番号を前記メモリ領域情報内に記憶する、
ことを特徴とする請求項１０記載の画像処理装置。
【請求項１８】
前記メモリ領域確保手段は、確保した前記メモリ領域を示す前記アドレスとして当該メモリ領域の先頭アドレスを出力し、
前記アクセス情報は、前記先頭アドレスと、当該先頭アドレスにより示される前記メモリ領域に対応する画像サイズとを含むことを特徴とする請求項１０記載の画像処理装置。
【請求項１９】
複数の画像処理手段により１つの画像メモリを作業領域として共用して、前記各画像処理手段による処理を並行して実行するためのメモリ管理処理をコンピュータに実行させるメモリ管理プログラムにおいて、
複数の前記画像処理手段のそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、前記画像サイズに対応するメモリ領域を前記画像メモリ上の空き領域に前記画像枚数分だけ個別に割り当てて確保し、確保した前記メモリ領域を示すアドレスを出力するメモリ領域確保ステップと、
前記メモリ領域確保ステップで確保された前記各メモリ領域の識別情報と、少なくとも前記アドレスを含む、前記メモリ領域にアクセスするためのアクセス情報との対応関係を、前記メモリ領域ごとに記憶したメモリ領域情報を生成するメモリ領域情報生成ステップと、
前記各メモリ領域に対する前記各画像処理手段からの使用要求および返却要求を受け付けて、前記各メモリ領域の使用状態を前記メモリ領域情報を用いて管理するメモリ領域管理ステップと、
を含む処理を前記コンピュータに実行させることを特徴とするメモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像処理手段により１つの画像メモリを作業領域として共用して、各画像処理手段による処理を並行して実行するためのメモリ管理方法、このメモリ管理方法を用いた画像処理装置、およびメモリ管理プログラムに関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ（Moving Picture Experts Group）方式などの画像圧縮技術の進歩などに伴い、画像信号をデジタル化して取り扱うことが一般的になっている。例えば、動画像を撮像してデジタルデータとして記録するデジタルビデオカメラなどが広く普及している。
【０００３】
また、最近のデジタルビデオカメラの中には、磁気テープと、可搬型の半導体メモリからなるメモリカードのように、２種類の記録媒体を具備するものがある。このようなデジタルビデオカメラでは、動画像のエンコードとデコードや、２系統のエンコードあるいはデコードを並行して実行する機能を具備するものが多い。
【０００４】
例えば、撮像中の動画像を、異なる画像サイズや圧縮率、フォーマットでそれぞれの記録媒体に同時に記録する機能を具備するものがある。この場合、画像サイズの異なる２系統の動画像のエンコードが並行して実行される。また、磁気テープに記録された動画像を一旦デコードし、画像サイズを小さくして再度エンコードしてメモリカードに記録する機能を具備するものがある。この場合、デコードとエンコードとが並行して実行される。
【０００５】
図２５は、一例として、動画像のエンコードとデコードを並行して実行することが可能な画像処理装置の要部構成を示す図である。
図２５に示す画像処理装置は、例えば、動画像データおよび音声データの入力を受けてこれらをＭＰＥＧなどの圧縮符号化方式でエンコードし、各種の記録媒体に記録する機能と、記録媒体の記録データをデコードし、動画像および音声を再生出力する機能とを具備する画像記録再生装置や撮像装置などに設けられる。この画像処理装置では、動画像および音声のエンコードとデコードとを並行して実行することが可能となっており、これらの処理が、ＯＳ（Operating System）を搭載しない、いわゆる組み込み型システムにより実行されるようになっている。
【０００６】
この画像処理装置は、図２５に示すように、エンコード／デコードの制御のためのＣＰＵ１１、エンコーダ２１、デコーダ３１、および処理中の画像データの一時保存のためにエンコーダ２１およびデコーダ３１により共用される画像メモリ４０を具備している。
【０００７】
ＣＰＵ１１は、外部のホストコントローラと通信し、このホストコントローラからの情報に応じてエンコーダ２１およびデコーダ３１の処理を制御する。具体的には、ホストコントローラから、エンコード／デコードの命令、生成する画像のサイズ、確保すべきメモリ領域の数などの情報を受け取って、対応するエンコーダ２１またはデコーダ３１にこれらの情報を出力し、処理を開始させる。
【０００８】
エンコーダ２１は、入力された動画像および音声のデジタルデータに対して、ＭＰＥＧ方式などの所定の圧縮符号化方式に従って圧縮符号化処理を施し、動画像および音声の符号化ストリームを生成する処理を実行する。また、デコーダ３１は、入力された動画像および音声の符号化ストリームに対して伸張復号化処理を施す。エンコーダ２１およびデコーダ３１は、動画像データのエンコード、デコードをそれぞれ実行する際に、画像メモリ４０にアクセスして、処理中の画像データを画像メモリ４０に一時的に格納する。
【０００９】
画像メモリ４０は、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの半導体メモリからなり、その内部に、外部からのアクセスを受けるメモリＩ／Ｆ４１を具備している。メモリＩ／Ｆ４１は、エンコーダ２１およびデコーダ３１から供給された画像データを、画像メモリ４０の指定された領域に格納する。また、エンコーダ２１およびデコーダ３１から指定された読み出しアドレスに応じて、画像メモリ４０から画像データを読み出して出力する。
【００１０】
このような画像処理装置において、動画像のエンコードが行われる場合は、ＣＰＵ１１は、ホストコントローラからの情報に基づいて、エンコーダ２１に対してエンコードの開始を命令するとともに、画像サイズや、確保すべきメモリ領域に対応する画像の枚数を指定する。エンコーダ２１は、動画像データの入力を受けると、ＣＰＵ１１からの情報に従って、画像メモリ４０に対して画像を格納するメモリ領域を確保し、対応する物理アドレスをメモリＩ／Ｆ４１に指定して、処理中の画像データをそのメモリ領域に順次格納しながらエンコードを実行する。
【００１１】
また、動画像のデコードが行われる場合は、同様に、ＣＰＵ１１からデコーダ３１に対して画像サイズや画像の枚数がデコーダ３１に対して指定され、符号化ストリームの入力を受けたデコーダ３１は、ＣＰＵ１１により指定された枚数に対応するメモリ領域を画像メモリ４０に確保し、対応する物理アドレスをメモリＩ／Ｆ４１に指定して、処理中の画像データをそのメモリ領域に順次格納しながらデコードを実行する。
【００１２】
また、音声のエンコードおよびデコードが行われる際には、エンコーダ２１およびデコーダ３１は、ホストコントローラからＣＰＵ１１を通じて供給される情報に従って、入力される音声データや符号化ストリームを順次処理していく。この際に、処理中の音声データを画像メモリ４０に一時的に格納するようにしてもよい。
【００１３】
なお、１系統のデータの符号化処理と、他の１系統のデータの復号処理とを並行して実行することが可能な従来の装置として、以下のような画像の復号装置があった。この復号装置では、データの符号化および復号が共用して行われる逆変換回路が設けられている。そして、高能率符号化された画像信号として入力されて可変長復号回路および逆量子化回路を経由した信号と、入力された別系統の画像信号とが、多重化回路により選択されて逆変換回路に入力され、前者の信号は逆変換回路において復号されて出力され、後者の画像信号は、逆変換回路において符号化された後、さらに量子化回路および可変長符号化回路を介して出力される。ここで、逆変換回路を実時間速度の２倍またはそれ以上の速度で動作させることにより、逆変換回路における復号機能と符号化機能とを切り替えて使用し、復号処理と符号化処理とを並行して実行することが可能となる（例えば、特許文献１参照）。
【特許文献１】特開平９−３２２１２１号公報（段落番号〔００２９〕〜〔００３２〕、図５）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ところで、複数の記録媒体を具備する画像記録再生装置では、各記録媒体を用いた動画像データの記録または再生を行っている途中で、エンコーダまたはデコーダの処理対象となる画像サイズを変更可能とする要求がある。例えば、磁気テープとメモリカードとを具備するデジタルビデオカメラにおいて、撮像画像を各記録媒体に記録している途中で、メモリカードへの記録動作のみを中断し、記録画像の画像サイズを変更して記録動作を再開させる場合などが想定される。
【００１５】
しかし、図２５に示した従来の画像処理装置では、エンコーダ２１およびデコーダ３１により画像メモリ４０に確保されるメモリ領域の大きさや数は、ホストコントローラからＣＰＵ１１を介して指定される、処理対象とする画像サイズに応じて、あらかじめ決められている。このため、一旦エンコードおよびデコードが開始されると、画像メモリ４０内にメモリ領域が固定的に確保され、すべてのエンコードおよびデコードの動作を停止させない限り、画像サイズの設定を変更することができなかった。また、エンコーダ２１やデコーダ３１は、確保したメモリ領域を、その物理アドレスを常に認識して管理する必要があるため、画像サイズなどを変更した際にメモリ領域の管理が煩雑となり、画像サイズの変更に対して柔軟に対応できないことが問題であった。
【００１６】
本発明はこのような点に鑑みてなされたものであり、１つの画像メモリを共用してエンコードおよびデコードを並行して実行する場合に、処理対象の画像サイズの変更に対して柔軟に対応することが可能なメモリ管理方法を提供することを目的とする。
【００１７】
また、本発明の他の目的は、１つの画像メモリを共用してエンコードおよびデコードを並行して実行する場合に、処理対象の画像サイズの変更に対して柔軟に対応することが可能な画像処理装置を提供することである。
【００１８】
さらに、本発明の他の目的は、１つの画像メモリを共用してエンコードおよびデコードを並行して実行する場合に、処理対象の画像サイズの変更に対して柔軟に対応することが可能なメモリ管理プログラムを提供することである。
【課題を解決するための手段】
【００１９】
本発明では上記課題を解決するために、複数の画像処理手段により１つの画像メモリを作業領域として共用して、前記各画像処理手段による処理を並行して実行するためのメモリ管理方法において、メモリ領域確保手段が、複数の前記画像処理手段のそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、前記画像サイズに対応するメモリ領域を前記画像メモリ上の空き領域に前記画像枚数分だけ個別に割り当てて確保し、確保した前記メモリ領域を示すアドレスを出力するメモリ領域確保ステップと、メモリ領域管理手段が、前記メモリ領域確保ステップで確保された前記各メモリ領域の識別情報と、少なくとも前記アドレスを含む、前記メモリ領域にアクセスするためのアクセス情報との対応関係を、前記メモリ領域ごとに記憶したメモリ領域情報を生成するメモリ領域情報生成ステップと、前記メモリ領域管理手段が、前記各メモリ領域に対する前記各画像処理手段からの使用要求および返却要求を受け付けて、前記各メモリ領域の使用状態を前記メモリ領域情報を用いて管理するメモリ領域管理ステップとを含むことを特徴とするメモリ管理方法が提供される。
【００２０】
このようなメモリ管理方法では、メモリ領域確保手段によるメモリ領域確保ステップにおいて、指定された画像サイズに対応するメモリ領域が、指定された画像枚数分だけ画像メモリ上の空き領域内に個別に確保されるので、各メモリ領域は、画像メモリ上に画像枚数分だけ固定的に割り当てられず、それぞれが個別に分散して割り当てられる。また、メモリ領域管理手段によるメモリ領域情報生成ステップにおいて、確保された各メモリ領域の識別情報と、メモリ領域にアクセスするためのアクセス情報との対応関係をメモリ領域ごとに記憶したメモリ領域情報を生成する。これにより、メモリ領域情報を識別する番号などを各画像処理手段が指定することで、対応するメモリ領域にアクセスし、画像データの書き込みおよび読み出しを行うことが可能となる。さらに、メモリ領域管理手段によるメモリ領域管理ステップにおいて、各メモリ領域に対する各画像処理手段からの使用要求および返却要求を受け付けて、各メモリ領域の使用状態をメモリ領域情報を用いて管理することにより、各画像処理手段は、メモリ領域を使用する際に、対応する画像メモリ内のアドレスなどを認識して使用状態を管理する必要がなくなる。
【００２１】
また、本発明では、複数の画像処理手段により１つの画像メモリを作業領域として共用して、前記各画像処理手段による処理を並行して実行することが可能な画像処理装置において、複数の前記画像処理手段のそれぞれの処理のために個別に指定される画像サイズおよび画像枚数の入力を受けて、前記画像サイズに対応するメモリ領域を前記画像メモリ上の空き領域に前記画像枚数分だけ個別に割り当てて確保し、確保した前記メモリ領域を示すアドレスを出力するメモリ領域確保手段と、前記メモリ領域確保手段により確保された前記各メモリ領域の識別情報と、少なくとも前記アドレスを含む、前記メモリ領域にアクセスするためのアクセス情報との対応関係を、前記メモリ領域ごとに記憶したメモリ領域情報を保持するとともに、前記各メモリ領域に対する前記各画像処理手段からの使用要求および返却要求を受け付けて、前記各メモリ領域の使用状態を前記メモリ領域情報を用いて管理するメモリ領域管理手段とを有することを特徴とする画像処理装置が提供される。
【００２２】
ここで、メモリ領域確保手段は、指定された画像サイズに対応するメモリ領域を、指定された画像枚数分だけ画像メモリ上の空き領域内に個別に確保するので、各メモリ領域は、画像メモリ上に画像枚数分だけ固定的に割り当てられず、それぞれが個別に分散して割り当てられる。また、メモリ領域管理手段は、確保された各メモリ領域の識別情報と、メモリ領域にアクセスするためのアクセス情報との対応関係をメモリ領域ごとに記憶したメモリ領域情報を生成する。これにより、メモリ領域情報を識別する番号などを各画像処理手段が指定することで、対応するメモリ領域にアクセスし、画像データの書き込みおよび読み出しを行うことが可能となる。さらに、各メモリ領域に対する各画像処理手段からの使用要求および返却要求を受け付けて、各メモリ領域の使用状態をメモリ領域情報を用いて管理することにより、各画像処理手段は、メモリ領域を使用する際に、対応する画像メモリ内のアドレスなどを認識して使用状態を管理する必要がなくなる。
【発明の効果】
【００２３】
本発明によれば、複数の画像処理手段のそれぞれが、画像メモリ内のメモリ領域のアドレスなどを認識して使用状態を管理することなく、単にメモリ領域情報を指定することで、対応するメモリ領域にアクセスし、画像データの書き込みおよび読み出しを行うことが可能となる。また、画像サイズに対応するメモリ領域が画像メモリ内に個別に割り当てられるので、画像サイズを変更した場合にも、割り当てた領域を一旦解放して空き領域に設定し、その空き領域を異なる画像サイズに対応するメモリ領域として容易に再利用することが可能となる。従って、各画像処理手段の処理負担を高めることなく、ある画像処理手段において画像サイズが変更された場合にも、他の画像処理手段の処理を中断せずに、必要なメモリ領域を確保し直して利用させることが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
［第１の実施の形態の構成］
以下の第１の実施の形態では、動画像および音声の信号を、所定の圧縮符号化方式に従ってエンコード／デコードする画像処理装置に、本発明を適用した場合を想定する。図１は、本発明の第１の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
【００２５】
図１に示す画像処理装置は、例えば、動画像データおよび音声データの入力を受けてこれらをＭＰＥＧなどの圧縮符号化方式でエンコードし、各種の記録媒体に記録する機能と、記録媒体の記録データをデコードし、動画像および音声を再生出力する機能とを具備する画像記録再生装置や撮像装置などに設けられる。この画像処理装置では、動画像および音声のエンコードとデコードとを並行して実行することが可能となっており、これらの処理が、ＯＳを搭載しない、いわゆる組み込み型システムにより実行されるようになっている。
【００２６】
この画像処理装置は、図１に示すように、エンコード／デコードの制御のためのＣＰＵ１０、エンコーダ２０、デコーダ３０、処理中の画像データの一時保存のためにエンコーダ２０およびデコーダ３０により共用される画像メモリ４０、および画像メモリ４０の書き込み／読み出しを制御するメモリ制御部５０を具備している。
【００２７】
ＣＰＵ１０は、外部のホストコントローラと通信し、このホストコントローラからの情報に応じて、エンコーダ２０、デコーダ３０およびメモリ制御部５０の動作を制御する。具体的には、例えば、ホストコントローラに指示された画像サイズや、確保すべきメモリ領域の数をメモリ制御部５０に通知するとともに、この画像サイズでのエンコード／デコードの実行をエンコーダ２０およびデコーダ３０に指示する。また、エンコーダ２０およびデコーダ３０からの画像メモリ４０に対する書き込み／読み出し要求をメモリ制御部５０に通知し、画像データが書き込まれたメモリ領域を示す識別ＩＤを、エンコーダ２０およびデコーダ３０とメモリ制御部５０との間で転送する。
【００２８】
エンコーダ２０は、入力された動画像および音声のデジタルデータに対して、ＭＰＥＧ方式などの所定の圧縮符号化方式に従って圧縮符号化処理を施し、動画像および音声の符号化ストリームを生成する。また、デコーダ３０は、入力された動画像および音声の符号化ストリームに対して伸張復号化処理を施す。エンコーダ２０およびデコーダ３０は、動画像のエンコード、デコードをそれぞれ実行する際に、メモリ制御部５０を通じて画像メモリ４０にアクセスし、処理中の画像データを画像メモリ４０に一時的に格納する。
【００２９】
画像メモリ４０は、例えばＳＤＲＡＭなどの半導体メモリからなり、その内部に、外部からのアクセスを受け付けるメモリＩ／Ｆ４１を具備している。メモリＩ／Ｆ４１は、画像メモリ４０のハードウェアＩ／Ｆをメモリ制御部５０に対して提供し、メモリ制御部５０からアドレスおよび画像サイズの設定を受けて、エンコーダ２０およびデコーダ３０からメモリ制御部５０を通じて供給された画像データを、画像メモリ４０内の対応する領域に格納する。また、メモリ制御部５０から指定された領域の画像データを読み出して、メモリ制御部５０を通じてエンコーダ２０およびデコーダ３０に出力する。なお、メモリＩ／Ｆ４１は、後述するように、ルックアップテーブルおよびデータフォーマットを用いて、画像メモリ４０へのデータの書き込み／読み出しを制御する。
【００３０】
メモリ制御部５０は、エンコーダ２０およびデコーダ３０からの画像メモリ４０に対するアクセスを一元的に管理する機能ブロックである。メモリ制御部５０は、エンコードやデコードが実行される際に、画像サイズや確保すべきメモリ領域の数の情報をＣＰＵ１０から受け取り、これらの情報に基づいて画像メモリ４０内のメモリ領域を確保する。そして、エンコーダ２０およびデコーダ３０から供給された画像メモリ４０に格納し、その格納領域を示す識別ＩＤを、ＣＰＵ１０を通じてエンコーダ２０およびデコーダ３０に通知する。また、エンコーダ２０およびデコーダ３０からＣＰＵ１０を通じて識別ＩＤが指定されると、識別ＩＤに応じた画像メモリ４０上のメモリ領域から画像データを読み出し、エンコーダ２０およびデコーダ３０に出力する。
【００３１】
このような画像処理装置において、動画像のエンコードが行われる場合は、ＣＰＵ１０は、ホストコントローラからの情報に基づいて、エンコーダ２０に対してエンコードの開始を命令するとともに、画像サイズや、確保すべきメモリ領域に対応する画像の枚数をメモリ制御部５０に指定する。メモリ制御部５０は、ＣＰＵ１０からの情報に応じて、エンコードに必要なメモリ領域を画像メモリ４０に確保する。
【００３２】
エンコーダ２０は、動画像データの入力を受けると、処理中の画像データをメモリ制御部５０を通じて画像メモリ４０に一時的に格納し、また適宜読み出しながらエンコードを行う。画像データを格納する際には、エンコーダ２０からの要求がＣＰＵ１０を通じてメモリ制御部５０に伝達され、メモリ制御部５０は、確保したメモリ領域のうちの１つにエンコーダ２０からの画像データを書き込み、当該メモリ領域を示す識別ＩＤを、ＣＰＵ１０を通じてエンコーダ２０に通知する。
【００３３】
その後、画像メモリ４０から画像データを読み出す際には、エンコーダ２０は、読み出す画像データに対応する識別ＩＤを、ＣＰＵ１０を通じてメモリ制御部５０に通知する。メモリ制御部５０は、識別ＩＤに対応する画像メモリ４０内のメモリ領域から画像データを読み出し、エンコーダ２０に出力する。そして、ホストコントローラからエンコードの終了が要求されると、メモリ制御部５０は、エンコードのために確保していたメモリ領域を解放し、他のデータの書き込みが可能な状態に設定する。
【００３４】
動画像のデコードが行われる場合も、上記と同様の動作が行われる。すなわち、デコードが開始されると、メモリ制御部５０により必要なメモリ領域が確保される。そして、デコーダ３０からの画像データがメモリ制御部５０の制御により１つのメモリ領域に格納され、そのメモリ領域の識別ＩＤがデコーダ３０に通知される。画像データの読み出しの際は、デコーダ３０から識別ＩＤがメモリ制御部５０に通知され、メモリ制御部５０は、その識別ＩＤに対応するメモリ領域から画像データを読み出し、デコーダ３０に出力する。
【００３５】
このように、上記の画像処理装置では、エンコーダ２０およびデコーダ３０が、画像メモリ４０に対してメモリ制御部５０を介して間接的にアクセスする構成となっている。エンコーダ２０およびデコーダ３０は、画像メモリ４０の物理アドレスの代わりに、メモリ制御部５０により確保されるメモリ領域の識別ＩＤを用いて、画像データの書き込み／読み出しを要求することができる。
【００３６】
一方、メモリ制御部５０は、エンコーダ２０およびデコーダ３０の一方の処理が開始されるたびに、その処理のために必要な画像メモリ４０内のメモリ領域をその都度確保する。このとき、メモリ制御部５０は、画像メモリ４０内の単位メモリ領域をノードとした二分木構造を用いて、画像メモリ４０内の空き領域にメモリ領域を効率的に割り当て、また、画像メモリ４０のハードウェアＩ／Ｆに合わせて、割り当てたメモリ領域をメモリＩ／Ｆ４１に設定する。
【００３７】
このため、エンコード／デコードの少なくとも一方の処理対象となる画像サイズがホストコントローラからの指示により変更された場合にも、変更された処理のために確保していたメモリ領域を一旦解放して空き領域に設定し、その空き領域を変更後の画像サイズに対応するメモリ領域として容易に再利用することが可能となる。これとともに、画像サイズに応じたメモリ領域の確保がメモリ制御部５０に応じて一元的に制御され、エンコーダ２０およびデコーダ３０は、画像メモリ４０の仕様や物理アドレスを常に認識することなく、処理中の画像データの受け渡しを行うことが可能となる。
【００３８】
ここで、エンコード／デコードの処理対象となる画像サイズが変更される場合とは、エンコーダ２０およびデコーダ３０による処理中に画像メモリ４０に一時的に格納される画像データの画像サイズに変更が生じる場合を意味する。例えば、エンコード時には、入力された動画像データに対してエンコーダ２０が画像サイズを変化させた後、エンコードを実行する、あるいは、画像サイズの変更された動画像データの入力を受けてエンコードを実行することにより、生成される符号化ストリームの画像サイズが変更される場合などが該当する。また、デコード時には、デコーダ３０に入力される符号化ストリームの画像サイズが変更される場合などが該当する。
【００３９】
次に、図２は、メモリ制御部５０の内部構成を示すブロック図である。
図２に示すように、メモリ制御部５０は、メモリ領域管理部５１、メモリ確保処理部５２、メモリ解放処理部５３、ルックアップテーブル設定部５４、データフォーマット設定部５５、ＣＰＵ・Ｉ／Ｆ５６、エンコーダＩ／Ｆ５７およびデコーダＩ／Ｆ５８を具備している。なお、図２では、画像メモリ４０のメモリＩ／Ｆ４１の具備するルックアップテーブル４１ａおよびデータフォーマット４１ｂも示している。
【００４０】
メモリ領域管理部５１は、ＣＰＵ・Ｉ／Ｆ５６を通じてＣＰＵ１０と通信し、メモリ制御部５０内の全体の動作を制御する。具体的には、ＣＰＵ１０から指定された画像サイズおよび枚数に対応するメモリ領域の確保を、メモリ確保処理部５２、ルックアップテーブル設定部５４およびデータフォーマット設定部５５に要求し、確保されたメモリ領域を識別ＩＤを用いてエンコーダ２０およびデコーダ３０に提供して、その使用状態を管理する。また、エンコーダ２０およびデコーダ３０と画像メモリ４０との間のデータ転送を制御する。そして、エンコード／デコードの処理が終了したときに、メモリ解放処理部５３、ルックアップテーブル設定部５４およびデータフォーマット設定部５５を制御して、確保していたメモリ領域を解放させる。
【００４１】
メモリ確保処理部５２は、メモリ領域管理部５１から指定された画像サイズに対応するメモリ領域を画像メモリ４０内の空き領域に割り当て、その領域のアドレスを算出する。具体的には、メモリ確保処理部５２は、画像メモリ４０内の単位メモリ領域をノードとした二分木構造を用いて、各単位メモリ領域の割り当て状態を管理する。そして、メモリ領域管理部５１に指定された画像サイズのデータを格納可能なメモリ領域を空き領域から抽出し、その領域の先頭アドレスをメモリ領域管理部５１に対して出力する。メモリ解放処理部５３は、メモリ領域管理部５１から指定されたメモリ領域を解放する処理を行う。
【００４２】
ルックアップテーブル設定部５４およびデータフォーマット設定部５５は、確保されたメモリ領域が使用可能となるように、画像メモリ４０のアクセス仕様に合わせて情報の設定を行う機能ブロックである。本実施の形態では、メモリ領域の先頭アドレスと、そのメモリ領域のデータサイズを１次元または２次元のデータとして表した画像サイズとを指定することで、画像メモリ４０の書き込み／読み出しを行うことが可能となっている。そのために、メモリＩ／Ｆ４１は、メモリ領域の大きさに対応する画像サイズの設定を保持するルックアップテーブル４１ａと、メモリ領域の先頭アドレスとこれに対応するルックアップテーブル４１ａ内の要素とが対応付けられたデータフォーマット４１ｂを具備している。
【００４３】
ルックアップテーブル設定部５４は、メモリ領域を確保する際に、メモリ領域管理部５１から指定された画像サイズを、メモリＩ／Ｆ４１のルックアップテーブル４１ａに対して設定する。
【００４４】
データフォーマット設定部５５は、メモリ確保処理部５２により算出されたアドレスを、メモリＩ／Ｆ４１のデータフォーマット４１ｂに対して設定するとともに、そのアドレスをルックアップテーブル４１ａに対応付ける。そして、画像メモリ４０に対する画像データの書き込み／読み出し時に、メモリ領域管理部５１から指定される情報に応じて、データフォーマット４１ｂ内の対応する要素を指定し、書き込み／読み出しをメモリＩ／Ｆ４１に対して要求する。
【００４５】
ＣＰＵ・Ｉ／Ｆ５６は、ＣＰＵ１０とメモリ領域管理部５１との間で情報を受け渡すためのＩ／Ｆ回路である。また、エンコーダＩ／Ｆ５７およびデコーダＩ／Ｆ５８は、それぞれエンコーダ２０およびデコーダ３０とメモリ領域管理部５１との間で画像データを受け渡すためのＩ／Ｆ回路である。
【００４６】
［メモリ領域管理部の動作］
次に、メモリ制御部５０内の各部の動作について詳述する。まず、メモリ領域管理部５１によるメモリ領域の管理方法について説明する。
【００４７】
図３は、確保したメモリ領域のメモリ領域管理部５１による管理方法を説明するための図である。
メモリ領域管理部５１は、図３に示すように、画像サイズ要素および画像メモリ要素という２つの要素がポインタにより接続された線形リストを用いて、メモリ領域を管理する。
【００４８】
画像サイズ要素は、１つのエンコーダ２０またはデコーダ３０による処理の実行に対応して生成される要素であり、後に生成された他の画像サイズ要素をポインタにより指し示すことで構成されるリスト構造を有している。１つの画像サイズ要素は、エンコードまたはデコードの処理の開始時に、ＣＰＵ１０に指定された画像サイズを設定した画像メモリ要素を、このときＣＰＵ１０に指定された枚数分だけ具備する。すなわち、各画像メモリ要素は、エンコーダ２０またはデコーダ３０が画像メモリ４０に格納する１ピクチャ分の画像データのために確保されるメモリ領域に対応している。
【００４９】
また、１つの画像サイズ要素において、画像データが格納済みである画像メモリ要素と未格納である画像メモリ要素とが、ポインタを用いたリスト構造を持つアクティベートリスト（Activate List）およびネゲートリスト（Negate List）にそれぞれ接続される。そして、エンコーダ２０から画像メモリ４０に対する１ピクチャ分の画像データの書き込みが要求されると、ネゲートリストの先頭の画像メモリ要素が、アクティベートリストの最後尾に接続され、画像メモリ４０に書き込んだ１ピクチャ分の画像データが不要となると、当該画像メモリ要素がネゲートリストの最後尾に接続される。
【００５０】
また、画像サイズ要素は、アクティベートリストの先頭および最後尾の画像メモリ要素をそれぞれ示すアクティベートトップ（Activate＿top）およびアクティベートテール（Activate＿tail）と、ネゲートリストの先頭および最後尾の画像メモリ要素をそれぞれ示すネゲートトップ（Negate＿top）およびネゲートテール（Negate＿tail）とを常に認識することで、各リストを管理している。
【００５１】
図３の例では、２つの画像サイズ要素１０１ａおよび１０１ｂが生成されている。本実施の形態では、エンコーダ２０およびデコーダ３０がそれぞれ１つずつ設けられていることから、画像サイズ要素は最大２つ生成される。
【００５２】
例えば、エンコードのために画像サイズ要素１０１ａが生成されたものとすると、エンコーダ２０による処理のために５つの画像メモリ要素１０２ａ〜１０２ｃ，１０３ａおよび１０３ｂに対応するメモリ領域が確保され、それらのうち、アクティベートリスト１０２に接続された画像メモリ要素１０２ａ〜１０２ｃに対応するメモリ領域にはすでにエンコーダ２０からの画像データが格納され、ネゲートリスト１０３に接続された画像メモリ要素１０３ａおよび１０３ｂに対応するメモリ領域は使用されていない状態となっている。
【００５３】
また、同様に、デコードのために画像サイズ要素１０１ｂが生成されたものとすると、デコーダ３０による処理のために４つの画像メモリ要素１０５ａ〜１０５ｄに対応するメモリ領域が確保されており、アクティベートリスト１０４には要素が存在しておらず、ネゲートリスト１０５に接続されたすべての画像メモリ要素１０５ａ〜１０５ｄに対応するメモリ領域が未使用状態となっている。
【００５４】
この図３の状態から、例えばデコーダ３０によるデコードが終了されると、画像サイズ要素１０１ｂとこれが具備するすべての画像メモリ要素１０５ａ〜１０５ｄが消去される。これにより、デコーダ３０の処理のために確保されていたメモリ領域が解放される。また、図３の状態から、例えばデコーダ３０の処理対象の画像サイズをデコードの途中で変更する場合には、一旦画像サイズ要素１０１ｂを消去した後、新たな画像サイズが設定された画像メモリ要素を具備する画像サイズ要素を生成する。このような設定変更の間、エンコーダ２０は、画像サイズ要素１０１ａの具備する画像メモリ要素に対応するメモリ領域を用いてエンコードを続行することができる。
【００５５】
図４は、画像サイズ要素および画像メモリ要素のデータ構造を示す図である。
各画像サイズ要素には、メモリ領域管理部５１により図４（Ａ）に示すようなデータが設定される。識別ＩＤ１１１は、各画像サイズ要素を識別するユニークな番号である。画像幅１１２および画像高さ１１３は、当該画像サイズ要素が具備する画像メモリ要素に設定される画像サイズを示し、画像枚数１１４は、その画像メモリ要素の数を示す。
【００５６】
また、当該画像サイズの具備する画像メモリ要素を管理するために、当該画像サイズ要素内のアクティベートトップ、アクティベートテール、ネゲートトップおよびネゲートテールとなっている画像メモリ要素を指し示すポインタ１１５〜１１８が設定される。これらのポインタ１１５〜１１８としては、例えば後述する画像メモリ要素の識別ＩＤなどが用いられる。さらに、当該画像サイズ要素より後に生成された他の画像サイズ要素へのポインタ１１９が、例えばその画像サイズ要素の識別ＩＤにより設定される。
【００５７】
一方、各画像メモリ要素には、メモリ領域管理部５１により図４（Ｂ）に示すようなデータが設定される。識別ＩＤ１２１は、各画像メモリ要素を識別するユニークな番号であり、対応するメモリ領域に画像データを格納した際にエンコーダ２０またはデコーダ３０に提供されるものである。ノード番号１２２は、メモリ確保処理部５２により確保されたメモリ領域に対応する番号である。
【００５８】
また、画像メモリ４０上に確保される実際のメモリ領域と対応付けるために、ルックアップテーブル設定部５４が保持するルックアップテーブル要素へのポインタ１２３と、データフォーマット設定部５５が保持するデータフォーマット要素へのポインタ１２４が設定される。これらのポインタ１２３および１２４としては、例えばその要素の識別ＩＤが用いられる。なお、ルックアップテーブル要素およびデータフォーマット要素については後述する。
【００５９】
さらに、同じアクティベートリストまたはネゲートリストにおいて次に接続された画像メモリ要素を指し示すポインタ１２５が、例えばその画像メモリ要素の識別ＩＤにより設定される。
【００６０】
次に、メモリ領域管理部５１の処理について説明する。まず、図５は、メモリ領域を確保する際のメモリ領域管理部５１の処理の流れを示すフローチャートである。
〔ステップＳ１０１〕ホストコントローラよりエンコードまたはデコードの開始がＣＰＵ１０に対して要求されたとき、ＣＰＵ１０は、ホストコントローラから指定された確保すべき画像サイズ、および必要なメモリ領域に対応する画像の枚数を、ＣＰＵ・Ｉ／Ｆ５６を介してメモリ領域管理部５１に通知する。メモリ領域管理部５１は、ＣＰＵ１０からの画像サイズおよび枚数を受け取り、以下の処理の実行を開始する。
【００６１】
〔ステップＳ１０２〕画像サイズ要素のリストに、新たな画像サイズ要素を加える。このとき、新たな画像サイズ要素の識別ＩＤ１１１の欄に値を設定し、また、すでに生成されていた画像サイズ要素がある場合には、その要素のポインタ１１９の欄に、新たな画像サイズ要素の識別ＩＤを格納する。
【００６２】
〔ステップＳ１０３〕新たな画像サイズ要素について、ＣＰＵ１０からの画像サイズを画像幅１１２および画像高さ１１３の欄に格納し、枚数を画像枚数１１４の欄に格納する。なお、画像サイズが１次元のデータとして表されている場合は、そのデータは例えば画像幅１１２の欄にのみ格納されればよい。
【００６３】
〔ステップＳ１０４〕新たに生成した画像サイズ要素のネゲートリストの最後尾に、画像メモリ要素を１つ加える。このとき、画像サイズ要素のネゲートテールを示すポインタ１１８を更新する。また、すでにネゲートリストに画像サイズ要素が存在する場合には、ネゲートトップを示すポインタ１１７を更新するとともに、最後尾の画像サイズ要素に設定されたポインタ１１９に、新たな画像サイズ要素の識別ＩＤを設定する。
【００６４】
〔ステップＳ１０５〕ステップＳ１０１で受け取った画像サイズをメモリ確保処理部５２に渡し、その画像サイズに対応するメモリ領域の確保を要求する。これにより、メモリ確保処理部５２は、図２１で説明するように、受け取った画像サイズに対応するメモリ領域を画像メモリ４０内に確保し、そのメモリ領域を示す二分木構造のノード番号と、メモリ領域の先頭アドレスとをメモリ領域管理部５１に返す。
【００６５】
〔ステップＳ１０６〕メモリ確保処理部５２から先頭アドレスおよびノード番号を受け取る。
〔ステップＳ１０７〕当該画像メモリ要素のノード番号１２２の欄に、メモリ確保処理部５２から受け取ったノード番号を格納する。
【００６６】
〔ステップＳ１０８〕ルックアップテーブル設定部５４に対して、ＣＰＵ１０から指定された画像サイズを渡す。これにより、ルックアップテーブル設定部５４は、図１２で説明するように、画像サイズをルックアップテーブル４１ａに設定し、また、対応するルックアップテーブル要素を更新して、その要素の識別ＩＤをメモリ領域管理部５１に返す。
【００６７】
〔ステップＳ１０９〕ルックアップテーブル設定部５４からの識別ＩＤを受け取り、ルックアップテーブル要素へのポインタ１２３としてその識別ＩＤを設定する。
〔ステップＳ１１０〕メモリ確保処理部５２から受け取った先頭アドレスおよびノード番号、ルックアップテーブル設定部５４から受け取ったルックアップテーブル要素の識別ＩＤ、画像サイズに基づくメモリマッピングタイプを、データフォーマット設定部５５に渡す。これにより、データフォーマット設定部５５は、図１７で説明するように、使用中であることを示すリストに１つのデータフォーマット要素を加え、その要素に対応付けたデータフォーマット４１ｂの要素にデータを設定する。そして、当該データフォーマット要素の識別ＩＤを、メモリ領域管理部５１に返す。
【００６８】
〔ステップＳ１１１〕データフォーマット設定部５５からの識別ＩＤを受け取り、データフォーマット要素へのポインタ１２４としてその識別ＩＤを設定する。以上のステップＳ１０４〜Ｓ１１１の処理により、１つの画像メモリ要素に対応するメモリ領域が確保される。
【００６９】
〔ステップＳ１１２〕必要なメモリ領域に対応する画像の枚数分だけメモリ領域が確保されたか否かを判別し、確保された場合は処理を終了する。また、確保されていない場合は、ステップＳ１０４に進み、新たな画像メモリ要素をネゲートリストの最後尾に加えて、この要素に対応するメモリ領域を確保する処理を行う。
【００７０】
以上の処理により、ＣＰＵ１０から指定された枚数分だけの画像メモリ要素がネゲートリストに生成される。すなわち、エンコードまたはデコードに必要な画像枚数分の未使用状態（使用可能状態）のメモリ領域が確保される。
【００７１】
次に、図６は、確保されたメモリ領域をエンコーダ２０またはデコーダ３０に提供する際のメモリ領域管理部５１の処理の流れを示すフローチャートである。
〔ステップＳ２０１〕エンコーダ２０およびデコーダ３０の処理が開始され、画像データを一時的に格納するためのメモリ領域が必要になると、エンコーダ２０またはデコーダ３０は、ＣＰＵ１０を通じてメモリ制御部５０に対してメモリ領域の提供を要求する。メモリ領域管理部５１は、ＣＰＵ１０から上記の要求を受け、以下の処理の実行を開始する。
【００７２】
〔ステップＳ２０２〕画像サイズ要素のリストを先頭から順に参照し、参照した画像サイズ要素が、提供すべきもの、すなわちメモリ領域を要求したエンコーダ２０またはデコーダ３０に対応するものであるか否かを判定する。提供すべき要素でない場合はステップＳ２０３に進み、提供すべき要素である場合はステップＳ２０４に進む。
【００７３】
〔ステップＳ２０３〕リスト中の次の画像サイズ要素を参照し、当該要素についてステップＳ２０２の判定を行う。
〔ステップＳ２０４〕参照している画像サイズ要素に設定されているネゲートトップへのポインタ１１７に基づき、ネゲートリストの先頭の画像メモリ要素を取り出す。具体的には、ネゲートトップへのポインタ１１７を、ネゲートリスト上の次の画像メモリ要素を指し示すように更新する。
【００７４】
〔ステップＳ２０５〕取り出した画像メモリ要素の識別ＩＤを、メモリ領域の要求元のエンコーダ２０またはデコーダ３０に対して、ＣＰＵ１０を通じて提供する。
〔ステップＳ２０６〕取り出した画像メモリ要素を、アクティベートリストの最後尾に接続する。具体的には、アクティベートテールへのポインタ１１６を、新たな画像メモリ要素を指し示すように更新する。また、すでにアクティベートリストに画像メモリ要素が接続されていた場合は、そのうち最後尾に接続されていた要素について、次の画像メモリ要素へのポインタ１２５を、新たな画像メモリ要素を指し示すように設定する。また、必要に応じてアクティベートトップへのポインタ１１５を更新する。
【００７５】
〔ステップＳ２０７〕メモリ領域の要求元のエンコーダ２０またはデコーダ３０から画像データを受け取る。そして、当該画像メモリ要素に設定されたルックアップテーブル要素およびデータフォーマット要素へのポインタ１２３および１２４に基づいて各要素を指定し、ルックアップテーブル設定部５４およびデータフォーマット設定部５５に対して画像データの書き込みを指示するとともに、受け取った画像データを画像メモリ４０に転送する。これにより、アクティベートリストに接続した新たな画像メモリ要素に対応するメモリ領域に、画像データが書き込まれる。
【００７６】
以上の処理により、エンコーダ２０またはデコーダ３０からの１ピクチャ分の画像データが、画像メモリ４０に書き込まれる。このとき、画像データが書き込まれたメモリ領域に対応する画像メモリ要素が、アクティベートリストに接続され、使用状態とされる。
【００７７】
また、当該画像メモリ要素の識別ＩＤを受け取ったエンコーダ２０またはデコーダ３０は、この後、その識別ＩＤをＣＰＵ１０を通じてメモリ制御部５０に通知することで、必要な画像データを画像メモリ４０から読み出すことが可能となる。このとき、メモリ領域管理部５１は、ＣＰＵ１０を通じて識別ＩＤを受け取ると、該当する画像メモリ要素に設定されたポインタに基づいて、対応するルックアップテーブル要素およびデータフォーマット要素をそれぞれルックアップテーブル設定部５４およびデータフォーマット設定部５５に指定し、画像データの読み出しを要求する。これにより、該当する画像データが画像メモリ４０から読み出されてメモリ領域管理部５１に供給され、さらにエンコーダＩ／Ｆ５７またはデコーダＩ／Ｆ５８を通じて、エンコーダ２０またはデコーダ３０に転送される。
【００７８】
次に、図７は、エンコーダ２０またはデコーダ３０からメモリ領域が返却される際のメモリ領域管理部５１の処理の流れを示すフローチャートである。
〔ステップＳ３０１〕エンコーダ２０またはデコーダ３０は、所定のピクチャのデータの画像メモリ４０からの読み出しを、処理に必要な回数だけ行った後、対応するメモリ領域を返却するための情報を、ＣＰＵ１０を通じてメモリ制御部５０に通知する。このとき、返却するメモリ領域を示す識別ＩＤが、メモリ制御部５０に通知される。メモリ領域管理部５１は、ＣＰＵ１０からの返却通知情報および識別ＩＤを受け取る。
【００７９】
〔ステップＳ３０２〕画像サイズ要素のリストを先頭から順に参照し、参照した画像サイズ要素が、返却が要求された画像サイズ要素を含むものか否かを判定する。含まない場合はステップＳ３０３に進み、含む場合はステップＳ３０４に進む。
【００８０】
〔ステップＳ３０３〕リスト中の次の画像サイズ要素を参照し、当該要素についてステップＳ３０２の判定を行う。
〔ステップＳ３０４〕参照している画像サイズ要素のアクティベートリストを先頭から順に参照し、参照した画像メモリ要素が、返却が要求されたものであるか否かを判定する。該当しない場合はステップＳ３０５に進み、該当する場合はステップＳ３０６に進む。
【００８１】
〔ステップＳ３０５〕アクティベートリスト中の次の画像メモリ要素を参照し、当該要素についてステップＳ３０４の判定を行う。
〔ステップＳ３０６〕参照している画像メモリ要素を、アクティベートリストから取り出す。ここで、メモリ領域の返却の際には、アクティベート内のどの位置からでも画像メモリ要素を取り出すことができる。従ってこのとき、取り出された画像メモリ要素の直前の要素について、次の画像メモリ要素へのポインタ１２５を更新する。また、必要に応じて、当該画像サイズ要素に設定された、アクティベートトップへのポインタ１１５またはアクティベートテールへのポインタ１１６を更新する。
【００８２】
〔ステップＳ３０７〕取り出した画像メモリ要素を、ネゲートリストの最後尾に接続する。具体的には、ネゲートテールへのポインタ１１８を、新たに接続した画像メモリ要素を指し示すように更新する。また、すでにネゲートリストに画像メモリ要素が接続されていた場合は、そのうち最後尾に接続されていた要素について、次の画像メモリ要素へのポインタ１２５を、新たな画像メモリ要素を指し示すように設定する。また、必要に応じてネゲートトップへのポインタ１１７を更新する。
【００８３】
以上の処理により、読み出しの必要がなくなったメモリ領域に対応する画像メモリ要素がネゲートリストに接続され、新たな画像データを格納可能な状態とされる。ここで、解放するメモリ領域はアクティベートリスト中のどの位置からも選択可能で、選択されたメモリ領域はネゲートリストの最後尾に接続される。このような線形リストの管理を行うことで、例えばＭＰＥＧ方式のように、画像メモリに対して画像データを書き込む順番と、読み出す順番とが一致しない場合にも容易に対応することが可能となる。
【００８４】
次に、図８は、メモリ領域を解放する際のメモリ領域管理部５１の処理の流れを示すフローチャートである。
〔ステップＳ４０１〕ホストコントローラからエンコーダ２０またはデコーダ３０に対して、エンコードまたはデコードの処理終了、または処理対象の画像サイズの変更が指示されると、メモリ制御部５０には、当該処理で使用していたメモリ領域の解放を指示する情報が、ＣＰＵ１０を通じて供給される。このとき、当該処理で設定されていた画像サイズおよび枚数がメモリ制御部５０に供給される。メモリ領域管理部５１は、ＣＰＵ１０からの画像サイズおよび枚数を受け取ると、以下の処理の実行を開始する。
【００８５】
〔ステップＳ４０２〕画像サイズ要素のリストを先頭から順に参照し、参照した画像サイズ要素が、解放をすべきもの、すなわちメモリ領域の解放を要求したエンコーダ２０またはデコーダ３０に対応するものであるか否かを判定する。解放すべき要素でない場合はステップＳ４０３に進み、解放すべき要素である場合はステップＳ４０４に進む。
【００８６】
〔ステップＳ４０３〕リスト中の次の画像サイズ要素を参照し、当該要素についてステップＳ４０２の判定を行う。
〔ステップＳ４０４〕参照している画像サイズ要素のネゲートリストから、先頭の画像メモリ要素を取り出す。具体的には、当該画像サイズ要素に設定されたネゲートトップへのポインタ１１７を、次の画像メモリ要素を指し示すように更新する。
【００８７】
〔ステップＳ４０５〕取り出した画像メモリ要素に設定されたノード番号を、メモリ解放処理部５３に渡し、対応するメモリ領域の解放を要求する。これにより、メモリ解放処理部５３は、図２２で説明するように、受け取ったノード番号に対応する画像メモリ４０内の領域を解放する処理を実行する。
【００８８】
〔ステップＳ４０６〕取り出した画像メモリ要素に設定されたポインタ１２４により指示されたデータフォーマット要素を解放するように、データフォーマット設定部５５に要求する。これにより、データフォーマット設定部５５は、図１８で説明するように、指定されたデータフォーマット要素を解放する処理を実行し、さらに、対応するルックアップテーブル要素を解放するようにメモリ領域管理部５１に要求する
〔ステップＳ４０７〕データフォーマット設定部５５からの要求を受けた後、ポインタ１２３により指示されたルックアップテーブル要素を解放するように、ルックアップテーブル設定部５４に要求する。これにより、ルックアップテーブル設定部５４は、図１３で説明するように、指定されたルックアップテーブル要素を解放する処理を実行する。
【００８９】
以上のステップＳ４０４〜Ｓ４０７の処理により、ネゲートリスト内の１つの画像メモリ要素に対応するメモリ領域が解放される。
〔ステップＳ４０８〕当該画像サイズ要素のネゲートリストに、画像メモリ要素が存在するか否かを判定する。存在する場合はステップＳ４０４に戻り、ネゲートリストの先頭の画像メモリ要素について、解放処理を行う。そして、すべての画像メモリ要素が解放され、ネゲートリストに要素が存在しなくなったとき、ステップＳ４０９に進む。
【００９０】
〔ステップＳ４０９〕当該画像サイズ要素を解放する。
以上の処理により、エンコーダ２０またはデコーダ３０の処理のために確保されていたメモリ領域が解放され、新たに使用可能な状態とされる。
【００９１】
［ルックアップテーブル設定部の動作］
次に、ルックアップテーブル設定部５４の動作について説明する。まず、図９は、ルックアップテーブル４１ａの構成例を示す図である。
【００９２】
図９に示すように、ルックアップテーブル４１ａは、画像メモリ４０のハードウェアＩ／Ｆにマッピングされた領域に対応する３２個の要素を持つ。各要素には、一次元または二次元で表される画像サイズのデータが格納される。例えば、一次元で表される場合、画像サイズは１８ビットのデータとして格納され、二次元で表される場合、垂直方向、水平方向の画像サイズがそれぞれ９ビットのデータとして格納される。
【００９３】
図１０は、ルックアップテーブル設定部５４によるメモリ領域の管理方法を説明するための図である。
ルックアップテーブル設定部５４は、メモリ領域のデータサイズの情報を、ルックアップテーブル要素を用いて管理する。ルックアップテーブル要素は、図１０に示すように、アクティベートリスト１３１およびネゲートリスト１３２の２つの線形リストにより管理される。アクティベートリスト１３１には、メモリ領域として現在使用されている、すなわち、確保されたメモリ領域に割り当てられているルックアップテーブル要素が接続され、ネゲートリスト１３２には、未使用のルックアップテーブル要素が接続される。
【００９４】
また、ルックアップテーブル要素は、ルックアップテーブル４１ａの要素数だけあらかじめ用意され、初期状態では、すべてのルックアップテーブル要素がネゲートリスト１３２に接続される。そして、エンコーダ２０またはデコーダ３０による処理の開始時に、必要なメモリ領域の確保が要求されると、ネゲートリスト１３２の先頭のルックアップテーブル要素が取り出され、アクティベートリスト１３１の最後尾に接続される。そして、エンコーダ２０またはデコーダ３０の処理が終了して、確保されていたメモリ領域の解放が要求されると、対応するルックアップテーブル要素がアクティベートリスト１３１から取り出され、ネゲートリスト１３２の最後尾に接続される。
【００９５】
図１１は、ルックアップテーブル要素のデータ構造を示す図である。
各ルックアップテーブル要素には、ルックアップテーブル設定部５４により図１１に示すようなデータが設定される。識別ＩＤ１４１は、各ルックアップテーブル要素を識別するユニークな番号である。使用要素数１４２は、当該ルックアップテーブル要素を使用する画像メモリ要素のカウント値を示す。垂直方向サイズ１４３および水平方向サイズ１４４は、２次元のデータで表された場合の画像サイズを示し、一次元サイズ１４５は、１次元のデータで表された場合の画像サイズを示す。
【００９６】
また、ルックアップテーブル４１ａとの対応付けを行うために、ルックアップテーブル４１ａ内の対応する要素を指し示すポインタ１４６が設定される。さらに、線形リストを構成するために、同一リストにおいて次に接続されるルックアップテーブル要素を指し示すポインタ１４７も設定される。
【００９７】
なお、上記の各データのうち、識別ＩＤ１４１およびルックアップテーブル４１ａ内の要素へのポインタ１４６については、あらかじめ設定される。また、初期状態では、使用要素数１４２、垂直方向サイズ１４３、水平方向サイズ１４４および一次元サイズ１４５として、０が設定される。
【００９８】
また、ルックアップテーブル設定部５４は、この他に、アクティベートリスト１３１の先頭（アクティベートトップ）および最後尾（アクティベートテール）のルックアップテーブル要素をそれぞれ指し示すポインタと、ネゲートリスト１３２の先頭（ネゲートトップ）および最後尾（ネゲートテール）のルックアップテーブル要素をそれぞれ示すポインタとを図示しないテーブルに保持することで、各リストを管理している。
【００９９】
次に、ルックアップテーブル設定部５４の処理について説明する。まず、図１２は、メモリ領域が確保される際のルックアップテーブル設定部５４の処理の流れを示すフローチャートである。
【０１００】
〔ステップＳ５０１〕エンコードまたはデコードのためのメモリ領域を確保する処理の実行中に、メモリ領域管理部５１から、確保すべきメモリ領域の画像サイズがルックアップテーブル設定部５４に渡される（図５のステップＳ１０８に対応）。ルックアップテーブル設定部５４は、この画像サイズを受け取って、以下の処理を開始する。
【０１０１】
〔ステップＳ５０２〕アクティベートリスト１３１の先頭（アクティベートトップ）のルックアップテーブル要素を参照する。なお、図示しないが、アクティベートリスト１３１にルックアップテーブル要素が接続されていない場合は、ステップＳ５０６に進む。
【０１０２】
〔ステップＳ５０３〕参照しているルックアップテーブル要素が、メモリ領域管理部５１からの画像サイズに対応するものであるか否かを判定し、対応する場合はステップＳ５１０に進み、対応しない場合はステップＳ５０４に進む。
【０１０３】
〔ステップＳ５０４〕アクティベートリスト１３１に次のルックアップテーブル要素がある場合はステップＳ５０５に進み、ない場合はステップＳ５０６に進む。
〔ステップＳ５０５〕アクティベートリスト１３１上の次のルックアップテーブル要素を参照して、ステップＳ５０３に戻る。以上のステップＳ５０３〜Ｓ５０５の処理により、アクティベートリスト１３１の最後尾のルックアップテーブル要素が、メモリ領域管理部５１からの画像サイズに対応するものである場合にステップＳ５１０に進み、対応するルックアップテーブル要素がアクティベートリスト１３１に存在しない場合にステップＳ５０６に進む。
【０１０４】
〔ステップＳ５０６〕ネゲートリスト１３２の先頭（ネゲートトップ）のルックアップテーブル要素を取り出し、ネゲートトップの要素を指し示すポインタを、次の要素を指し示すように更新する。
【０１０５】
〔ステップＳ５０７〕取り出したルックアップテーブル要素を、アクティベートリスト１３１の最後尾に接続する。具体的には、それまでアクティベートリスト１３１の最後尾に接続されていたルックアップテーブル要素に設定されていた、次の要素へのポインタ１４７と、アクティベートテールの要素を指し示すポインタとを、新たに接続した要素を指し示すように更新する。
【０１０６】
〔ステップＳ５０８〕当該ルックアップテーブル要素の垂直方向サイズ１４３および水平方向サイズ１４４の各欄、または一次元サイズ１４５の欄に、メモリ領域管理部５１からの画像サイズを設定する。
【０１０７】
〔ステップＳ５０９〕当該ルックアップテーブル要素に設定されたポインタ１４７が指し示すルックアップテーブル４１ａ上の要素に、ステップＳ５０８で設定した画像サイズを設定する。
【０１０８】
〔ステップＳ５１０〕当該ルックアップテーブル要素の使用要素数１４２のカウント値に１を加算する。
〔ステップＳ５１１〕当該ルックアップテーブル要素の識別ＩＤ１４１を、メモリ領域管理部５１に渡す。メモリ領域管理部５１は、ルックアップテーブル設定部５４からの識別ＩＤを受け取ることで、画像メモリ要素とルックアップテーブル要素とを対応付ける（図５のステップＳ１０９に対応）。
【０１０９】
以上の処理により、エンコーダ２０またはデコーダ３０の処理の開始時に、確保されたメモリ領域に対応するルックアップテーブル要素が、アクティベートリスト１３１の最後尾に生成される。ここで、本実施の形態では、使用要素数１４２のカウント値を用いることで、１つのルックアップテーブル要素に対して、同じ画像サイズが設定された複数のメモリ領域（画像メモリ要素）を対応付けている。これにより、３２個という限られた要素数を有するルックアップテーブル４１ａに対して、画像サイズを効率よく割り当てることが可能となっている。
【０１１０】
次に、図１３は、メモリ領域が解放される場合のルックアップテーブル設定部５４の処理の流れを示すフローチャートである。
〔ステップＳ６０１〕エンコーダ２０またはデコーダ３０の処理が一旦終了する場合には、メモリ領域管理部５１は、１つの画像メモリ要素を解放する処理中に、その画像メモリ要素に対応するルックアップテーブル要素を解放するように、ルックアップテーブル設定部５４に対して要求する（図８のステップＳ４０７に対応）。この要求では、例えば、解放するメモリ領域の画像サイズが指定される。ルックアップテーブル設定部５４は、メモリ領域管理部５１からの要求を受けると、以下の処理を開始する。
【０１１１】
〔ステップＳ６０２〕アクティベートリスト１３１の先頭（アクティベートトップ）のルックアップテーブル要素を参照する。
〔ステップＳ６０３〕参照したルックアップテーブル要素が、メモリ領域管理部５１からの要求に対応する要素であるか否かを、例えば画像サイズの設定から判定し、対応しない場合はステップＳ６０４に進み、対応する場合はステップＳ６０５に進む。
【０１１２】
〔ステップＳ６０４〕アクティベートリスト１３１上の次のルックアップテーブル要素を参照し、ステップＳ６０３に進む。
〔ステップＳ６０５〕当該ルックアップテーブル要素に設定された使用要素数１４２のカウント値を、１だけ減算する。
【０１１３】
〔ステップＳ６０６〕使用要素数１４２のカウント値が０である場合はステップＳ６０７に進み、０でない場合は処理を終了する。
〔ステップＳ６０７〕当該ルックアップテーブル要素を、アクティベートリスト１３１から取り出す。このとき、必要に応じて、アクティベートトップを指し示すポインタ、アクティベートテールを指し示すポインタ、取り出した要素の直前要素に設定された、次の要素へのポインタ１４７などを更新する。
【０１１４】
〔ステップＳ６０８〕取り出したルックアップテーブル要素を、ネゲートリスト１３２の最後尾に接続し、それまでネゲートリスト１３２の最後尾に接続されていた要素の、次の要素を指し示すポインタ１４７と、ネゲートテールを指し示すポインタとを、新たに接続した要素を指し示すように更新する。
【０１１５】
以上の処理が、エンコーダ２０またはデコーダ３０の処理のために確保されていたメモリ領域（画像メモリ要素）を１つずつ解放するたびに実行され、対応するルックアップテーブル要素の使用要素数１４２のカウント値が減算されていく。そして、カウント値が０となると、１つのルックアップテーブル要素が、アクティベートリスト１３１からネゲートリスト１３２に移行されて、ルックアップテーブル４１ａ上の１つの要素に対する画像サイズの設定が解除される。
【０１１６】
［データフォーマット設定部の動作］
次に、データフォーマット設定部５５の動作について説明する。まず、図１４は、データフォーマット４１ｂの構成例を示す図である。
【０１１７】
図１４に示すように、データフォーマット４１ｂは、画像メモリ４０のハードウェアＩ／Ｆにマッピングされた領域に対応する２５６個の要素を持つ。各要素には、画像サイズが１次元または２次元のいずれにより表されるかを示すメモリマッピングタイプ（Memory Mapping Type）１５１と、ルックアップテーブル４１ａの対応する要素へのポインタ１５２と、画像メモリ４０内の対応領域の先頭アドレスを示すベースアドレス（Base Address）１５３が格納される。なお、ルックアップテーブル４１ａの対応要素へのポインタ１５２としては、例えば、この要素に対応するルックアップテーブル要素の識別ＩＤが設定される。
【０１１８】
図１５は、データフォーマット設定部５５によるメモリ領域の管理方法を説明するための図である。
データフォーマット設定部５５は、メモリ領域のアドレスおよびルックアップテーブル４１ａとの対応情報を、データフォーマット要素を用いて管理する。データフォーマット要素は、図１５に示すように、アクティベートリスト１６１およびネゲートリスト１６２の２つの線形リストにより管理される。アクティベートリスト１６１には、メモリ領域として現在使用されている、すなわち、確保されたメモリ領域に割り当てられているデータフォーマット要素が接続され、ネゲートリスト１６２には、未使用のデータフォーマット要素が接続される。
【０１１９】
また、データフォーマット要素は、データフォーマット４１ｂの要素数だけあらかじめ用意され、初期状態では、すべてのデータフォーマット要素がネゲートリスト１６２に接続される。そして、エンコーダ２０またはデコーダ３０による処理の開始時に、必要なメモリ領域の確保が要求されると、ネゲートリスト１６２の先頭から確保されたメモリ領域の数だけのデータフォーマット要素が取り出され、アクティベートリスト１６１の最後尾に接続される。そして、エンコーダ２０またはデコーダ３０の処理が終了して、確保されていたメモリ領域の解放が要求されると、対応するすべての要素がアクティベートリスト１６１から順次取り出され、ネゲートリスト１６２の最後尾に接続される。
【０１２０】
図１６は、データフォーマット要素のデータ構造を示す図である。
各データフォーマット要素には、データフォーマット設定部５５により図１６に示すようなデータが設定される。識別ＩＤ１７１は、各データフォーマット要素を識別するユニークな番号であり、初期設定時に設定される。ノード番号１７２は、メモリ領域の確保時にメモリ確保処理部５２から出力される二分木構造のノード番号を示す。
【０１２１】
また、データフォーマット４１ｂとの対応付けを行うために、データフォーマット４１ｂ内の対応する要素を指し示すポインタ１７３が設定される。このポインタ１７３は、初期設定時にあらかじめ設定される。さらに、線形リストを構成するために、同一リストにおいて次に接続されるデータフォーマット要素を指し示すポインタ１７４も設定される。
【０１２２】
また、データフォーマット設定部５５は、この他に、アクティベートリスト１６１の先頭（アクティベートトップ）および最後尾（アクティベートテール）のデータフォーマット要素をそれぞれ指し示すポインタと、ネゲートリスト１６２の先頭（ネゲートトップ）および最後尾（ネゲートテール）のデータフォーマット要素をそれぞれ示すポインタとを図示しないテーブルに保持することで、各リストを管理している。
【０１２３】
次に、データフォーマット設定部５５の処理について説明する。まず、図１７は、メモリ領域が確保される際のデータフォーマット設定部５５の処理の流れを示すフローチャートである。
【０１２４】
〔ステップＳ７０１〕エンコードまたはデコードのためのメモリ領域の確保処理の実行中に、データフォーマット設定部５５は、メモリ領域管理部５１から、解放すべきメモリ領域に対応するデータフォーマット要素の解放要求を受け（図５のステップＳ１１０に対応）、以下の処理を開始する。なお、このとき、メモリ領域管理部５１からは、確保すべきメモリ領域の先頭アドレス、ノード番号、対応するルックアップテーブル要素の識別ＩＤ、画像サイズに基づくメモリマッピングタイプの各情報がデータフォーマット設定部５５に供給される。
【０１２５】
〔ステップＳ７０２〕ネゲートリスト１６２の先頭（ネゲートトップ）のデータフォーマット要素を取り出し、ネゲートトップの要素を指し示すポインタを、次の要素を指し示すように更新する。
【０１２６】
〔ステップＳ７０３〕取り出したデータフォーマット要素を、アクティベートリスト１６１の最後尾（アクティベートテール）に接続する。具体的には、それまでアクティベートリスト１６１の最後尾に接続されていたデータフォーマット要素に設定されていた、次の要素へのポインタ１７４と、アクティベートテールの要素を指し示すポインタとを、新たに接続した要素を指し示すように更新する。
【０１２７】
〔ステップＳ７０４〕当該データフォーマット要素に設定されたポインタ１７３の指し示す、データフォーマット４１ｂの要素に、メモリ領域管理部５１から受け取ったメモリマッピングタイプを設定する。
【０１２８】
〔ステップＳ７０５〕ポインタ１７３の指し示すデータフォーマット４１ｂの対応要素に、ルックアップテーブル４１ａ上の対応要素へのポインタを設定する。この値としては、メモリ領域管理部５１から受け取ったルックアップテーブル要素の識別ＩＤが設定される。なお、この識別ＩＤは、このフローチャートの開始時以外に、例えばステップＳ７０５の処理時に、メモリ領域管理部５１を通じてルックアップテーブル設定部５４に問い合わせることにより取得してもよい。
【０１２９】
〔ステップＳ７０６〕ポインタ１７３の指し示すデータフォーマット４１ｂの対応要素に、メモリ領域管理部５１から受け取った先頭アドレスを設定する。
〔ステップＳ７０７〕メモリ領域管理部５１から受け取ったノード番号を、当該データフォーマット要素のノード番号１７２の欄に設定する。
【０１３０】
〔ステップＳ７０８〕当該データフォーマット要素の識別ＩＤ１７１を、メモリ領域管理部５１に渡す。メモリ領域管理部５１は、データフォーマット設定部５５からの識別ＩＤを受け取ることで、画像メモリ要素とデータフォーマット要素とを対応付ける（図５のステップＳ１１１に対応）。
【０１３１】
以上の処理により、エンコーダ２０またはデコーダ３０の処理の開始時に、確保された各メモリ領域に対応するデータフォーマット要素が、アクティベートリスト１６１の最後尾に順次生成される。
【０１３２】
次に、図１８は、メモリ領域が解放される場合のデータフォーマット設定部５５の処理の流れを示す図である。
〔ステップＳ８０１〕エンコーダ２０またはデコーダ３０の処理が一旦終了する場合には、メモリ領域管理部５１は、１つの画像メモリ要素を解放する処理中に、その画像メモリ要素に対応するデータフォーマット要素を解放するように、データフォーマット設定部５５に対して要求する（図８のステップＳ４０６に対応）。この要求では、例えば、解放するメモリ領域（画像メモリ要素）の保持するポインタ１２４の設定値（識別ＩＤ）が指定される。データフォーマット設定部５５は、メモリ領域管理部５１からの要求を受けると、以下の処理を開始する。
【０１３３】
〔ステップＳ８０２〕アクティベートリスト１６１の先頭（アクティベートトップ）のデータフォーマット要素を参照する。
〔ステップＳ８０３〕参照したデータフォーマット要素が、メモリ領域管理部５１からの要求に対応する要素であるか否かを識別ＩＤから判定し、対応しない場合はステップＳ８０４に進み、対応する場合はステップＳ８０５に進む。
【０１３４】
〔ステップＳ８０４〕アクティベートリスト１６１上の次のデータフォーマット要素を参照し、ステップＳ８０３に進む。
〔ステップＳ８０５〕当該データフォーマット要素を、アクティベートリスト１６１から取り出す。このとき、必要に応じて、アクティベートトップを指し示すポインタ、アクティベートテールを指し示すポインタ、取り出した要素の直前要素に設定された、次の要素へのポインタ１７４などを更新する。
【０１３５】
〔ステップＳ８０６〕取り出したデータフォーマット要素に対応するルックアップテーブル要素の解放を、メモリ領域管理部５１に要求する。これにより、メモリ領域管理部５１は、対応するルックアップテーブル要素の識別ＩＤを指定して、この要素を解放するように、ルックアップテーブル設定部５４に対して要求する（図８のステップＳ４０７に対応）。そして、ルックアップテーブル設定部５４が、この要求に応じて、図１３に示したルックアップテーブル要素の解放処理を実行する。
【０１３６】
〔ステップＳ８０７〕当該データフォーマット要素に対応付けられたデータフォーマット４１ｂの要素の設定値をクリアし、この要素を対応する。
〔ステップＳ８０８〕当該データフォーマット要素を、ネゲートリスト１６２の最後尾に接続し、それまでネゲートリスト１６２の最後尾に接続されていた要素の、次の要素を指し示すポインタ１７４と、ネゲートテールを指し示すポインタとを、新たに接続した要素を指し示すように更新する。
【０１３７】
以上の処理が、エンコーダ２０またはデコーダ３０の処理のために確保されていたメモリ領域（画像メモリ要素）を１つずつ解放するたびに実行され、対応するデータフォーマット要素が、アクティベートリスト１６１からネゲートリスト１６２に順次移行されて、データフォーマット４１ｂ上の１つの要素に対するアドレスなどの設定が解除される。
【０１３８】
［メモリ確保処理部およびメモリ解放処理部の動作］
図１９は、メモリ確保処理部５２およびメモリ解放処理部５３によるメモリ領域の割り当て方法を説明するための図である。
【０１３９】
メモリ確保処理部５２およびメモリ解放処理部５３は、画像メモリ４０の記憶領域を２のべき乗だけ分割した単位領域を、二分木構造の最も深いノードに割り当てることで管理する。最も深い位置以外のノードは、その子ノードに割り当てられたすべての単位領域を包含する。そして、メモリ確保処理部５２およびメモリ解放処理部５３は、各単位領域の先頭アドレスを保持し、ノードを指定することにより、そのノードに対応する単位領域の先頭アドレスを出力することが可能となっている。
【０１４０】
図１９の例では、説明を簡単にするために、画像メモリ４０を、単位領域４０ａ〜４０ｄの４つに分割している。そして、７つのノードからなる二分木構造を利用し、その最も深い位置のノード“３”〜“６”に、各単位領域４０ａ〜４０ｄを割り当てている。
【０１４１】
また、メモリ領域の確保および解放の処理のために、二分木構造における階層の深さ（Depth）、同階層のノードの順番を示すオフセット（Offset）、同階層におけるノード数を示す階層幅（Width）の値が利用される。ここで、図１９の例では、階層の深さ“１”のノード“１”は単位領域４０ａおよび４０ｂを包含し、ノード“２”は同様に単位領域４０ｃおよび４０ｄを包含する。また、深さ“０”のノード“０”は、単位領域４０ａ〜４０ｄを包含する。
【０１４２】
図２０は、メモリ確保処理部５２およびメモリ解放処理部５３による二分木構造のノード管理方法を説明するための図である。
単位領域の使用状態は、二分木構造の各ノードの状態（ノードステータス）を用いて管理される。ノードステータスは、未使用状態（確保されていない状態）を“ＮＯＮＥ”、そのノードに対応する単位領域が使用状態（確保されている状態）を“ＵＳＥＤ”、そのノードの子ノードが使用中である状態を“ＵＳＩＮＧ”、そのノードあるいは子ノードが解放処理中である状態を“ＦＲＥＥ”として表す。
【０１４３】
各ノードのノードステータスは、メモリ確保処理部５２およびメモリ解放処理部５３により、共通のノードステータス管理テーブルを用いて管理される。例えば、図１９に示した二分木構造において、各ノードが図２０（Ａ）に示すような状態である場合、ノードステータス管理テーブルは図２０（Ｂ）のように設定される。ノードステータス管理テーブルは、例えば、メモリ領域管理部５１が保持し、メモリ確保処理部５２およびメモリ解放処理部５３による以下の図２１および図２２の処理中に設定され、また参照される。
【０１４４】
図２１は、メモリ領域が確保される場合のメモリ確保処理部５２の処理の流れを示すフローチャートである。
〔ステップＳ９０１〕エンコードまたはデコードのためのメモリ領域を確保する処理の実行中に、メモリ領域管理部５１から、確保すべきメモリ領域の画像サイズがメモリ確保処理部５２に渡される（図５のステップＳ１０５に対応）。メモリ確保処理部５２は、この画像サイズを受け取って、以下の処理を開始する。
【０１４５】
〔ステップＳ９０２〕階層の深さ“０”のノードを参照する。
〔ステップＳ９０３〕メモリ領域管理部５１に指定された画像サイズに対応するデータサイズが、参照しているノードが包含するメモリ領域のデータサイズより小さいか否かを判定する。小さい場合はステップＳ９０４に進み、小さくない場合はステップＳ９０５に進む。
【０１４６】
〔ステップＳ９０４〕階層の深さの値に１を加算し、参照するノードの階層を１つ下げる。
〔ステップＳ９０５〕参照する階層の深さの値から１を減算する。これにより、確保すべき画像サイズに対して適切な階層が選択される。そして、参照するノードのオフセットの値を“０”として、現在の階層の階層幅を設定する。
【０１４７】
〔ステップＳ９０６〕オフセットの値が、階層幅の値より小さいか否かを判定し、小さい場合はステップＳ９０７に進み、小さくない場合はステップＳ９０９に進む。
〔ステップＳ９０７〕参照しているノードのノードステータスが“ＮＯＮＥ”であるか否かを判定し、“ＮＯＮＥ”である場合はステップＳ９１０に進み、そうでない場合はステップＳ９０８に進む。
【０１４８】
〔ステップＳ９０８〕参照しているノードが使用中または解放処理中であることから、オフセットの値に１を加算し、同階層の次のノードを参照する。そして、ステップＳ９０６に戻る。なお、この後のステップＳ９０６において、オフセットの値が階層幅以上になり、同階層のすべてのノードが使用中と判定された場合に、ステップＳ９０９に進むことになる。
【０１４９】
〔ステップＳ９０９〕階層の深さの値から１を減算し、１つ上位の階層のノードを参照する。そして、オフセットの値を“０”とし、現在の階層の階層幅を設定して、ステップＳ９０６に戻る。
【０１５０】
〔ステップＳ９１０〕参照しているノードのノードステータスを“ＵＳＥＤ”とし、さらにその親ノードのノードステータスを“ＵＳＩＮＧ”とする。
〔ステップＳ９１１〕参照しているノードのノード番号を、メモリ領域管理部５１に返す。
【０１５１】
〔ステップＳ９１２〕当該ノードの包含するメモリ領域の先頭アドレスを、メモリ領域管理部５１に返す。
以上の処理により、指定された画像サイズの画像データを格納するために必要最小限のメモリ領域が確保され、ステップＳ９１１およびＳ９１２の処理により、メモリ領域管理部５１は、確保されたメモリ領域に対応するノード番号と、その領域の先頭アドレスを受け取る（図５のステップＳ１０６）。
【０１５２】
次に、図２２は、メモリ領域が解放される場合のメモリ解放処理部５３の処理の流れを示すフローチャートである。
〔ステップＳ１００１〕エンコーダ２０またはデコーダ３０の処理が一旦終了する場合には、メモリ領域管理部５１は、１つの画像メモリ要素に対応付けられたノード番号を、メモリ解放処理部５３に渡し、そのメモリ領域の解放を要求する（図８のステップＳ４０５に対応）。メモリ解放処理部５３は、メモリ領域管理部５１からのノード番号を受け取り、以下の処理を開始する。
【０１５３】
〔ステップＳ１００２〕受け取ったノード番号に対応する階層の深さ、オフセットの値を求める。
〔ステップＳ１００３〕求められた階層の深さおよびオフセットに該当するノードのノードステータスを“ＦＲＥＥ”に設定する。
【０１５４】
〔ステップＳ１００４〕同じ親ノードを持つ同階層の他のノードのノードステータスが“ＦＲＥＥ”である場合はステップＳ１００５に進み、そうでない場合は処理を終了する。
【０１５５】
〔ステップＳ１００５〕同じ親ノードを持つ同階層の他のノードのノードステータスを“ＮＯＮＥ”とし、その親ノードのノードステータスを“ＦＲＥＥ”とする。
以上の処理により、確保されていた１つの画像メモリ要素に対応するメモリ領域が解放される。そして、１つの画像サイズ要素中のすべての画像メモリ要素が解放された後、上記のステップＳ１００４およびＳ１００５で“ＦＲＥＥ”とされたノードのノードステータスを“ＮＯＮＥ”に変更し、解放したメモリ領域を使用可能な状態とする。
【０１５６】
［第１の実施の形態における効果］
以上説明した画像処理装置では、エンコーダ２０またはデコーダ３０の一方の処理における画像サイズの設定変更を、他方の処理を停止することなく行うことが可能となる。例えば、上記の画像処理装置がデジタルビデオカメラに搭載された場合を想定すると、撮像された動画像は、エンコーダ２０によりエンコードされ、磁気テープなどの記録媒体に記録される。また、記録媒体から読み出された動画像の符号化ストリームは、デコーダ３０によりデコードされて、ディスプレイに表示される。
【０１５７】
さらに、磁気テープに記録された動画像の符号化ストリームを、その画像サイズを小さくして再エンコードし、メモリカードに記録する、あるいはネットワークを通じて外部機器に送信する場合が想定される。この場合、磁気テープから読み出された符号化ストリームがデコーダ３０によりデコードされた後、エンコーダ２０により異なる画像サイズでエンコードされる。この処理において、本実施の形態では、磁気テープから符号化ストリームを読み出し、デコーダ３０によりデコードする処理を続けたまま、エンコーダ２０によるエンコード時の画像サイズを途中で変更することが可能となる。
【０１５８】
また、画像サイズの異なる動画像の符号化ストリームをメモリカード内に用意しておき、これらを再エンコードしてネットワークを通じて外部機器に送信する場合を想定すると、一定の画像サイズでのエンコーダ２０によるエンコードを続けたまま、メモリカード内の符号化ストリームを次々に読み出し、デコーダ３０によりデコードしてエンコーダ２０に供給することが可能となる。
【０１５９】
このような効果は、主に、二分木構造を用いてメモリ領域の確保および解放を行うメモリ確保処理部５２およびメモリ解放処理部５３による処理と、確保されたメモリ領域の使用状態を線形リストを用いて一元的に管理するメモリ領域管理部５１の処理により得られるものである。すなわち、メモリ確保処理部５２およびメモリ解放処理部５３は、エンコードおよびデコードの際に１ピクチャ分の画像データを格納するために必要とされる最低限のメモリ領域を、二分木構造を用いることで画像メモリ４０上の空き領域から効率的に確保することが可能となっている。
【０１６０】
また、メモリ領域管理部５１は、エンコードおよびデコードのために必要なメモリ領域の確保を、１ピクチャ分ずつ個別にメモリ確保処理部５２に要求し、それらの使用状態を管理することから、エンコーダ２０またはデコーダ３０がそれぞれの処理の際に使用するメモリ領域は、実際には画像メモリ４０内の散らばった領域に割り当てられ、固定的には割り当てられない。従って、必要のなくなったメモリ領域のみ解放して、解放した領域を空き領域として容易に再利用することが可能となるので、エンコーダ２０およびデコーダ３０の処理中における画像サイズの変更に対して柔軟に対応することが可能となる。
【０１６１】
また、エンコーダ２０およびデコーダ３０は、画像メモリ４０の仕様や物理アドレスを認識することなく、メモリ領域管理部５１から受け取った画像メモリ要素の識別ＩＤのみを用いて、画像メモリ４０へのデータの書き込みおよび読み出しを容易に行うことが可能となる。従って、エンコーダ２０およびデコーダ３０の回路規模や製造コストが削減される。
【０１６２】
また、ルックアップテーブル設定部５４およびデータフォーマット設定部５５が、確保されたメモリ領域の使用が可能となるように、画像メモリ４０のハードウェアＩ／Ｆに合わせて必要な設定を行うので、画像メモリ４０の仕様が変更された際には、これらの機能ブロックの処理手順のみ変更することで、システムを柔軟に対応することが可能となる。
【０１６３】
［他の実施の形態例］
図２３は、本発明の第２の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
【０１６４】
図２３に示す画像処理装置では、２つのエンコーダ２０ａおよび２０ｂにより並行してエンコードを行うことが可能となっている。例えば、２つのエンコーダ２０ａおよび２０ｂに対して、撮像画像などの同一の動画像データおよび音声データを供給して、それぞれに異なる画像サイズでのエンコードを実行させ、一方の符号化ストリームを磁気テープに記録し、他方をメモリカードなどの他の記録媒体に記録する、あるいはネットワークを通じて外部機器に送信することが可能となっている。
【０１６５】
この画像処理装置では、第１の実施の形態と同様に、エンコーダ２０ａおよび２０ｂによる画像メモリ４０へのアクセスは、メモリ制御部５０を通じて行われる。これにより、一方のエンコードを続行させたままで、他方のエンコードを停止させて画像サイズを変更し、エンコードを再開させることが可能となる。
【０１６６】
図２４は、本発明の第３の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
図２４に示す画像処理装置では、２つのデコーダ３０ａおよび３０ｂにより並行してデコードを行うことが可能となっている。例えば、２つのデコーダ３０ａおよび３０ｂに対して、それぞれ異なる符号化ストリームを供給してデコードを並行して実行させ、双方から出力される動画像データを合成し、１つの画面に合成画像を表示させることが可能となっている。
【０１６７】
この画像処理装置では、第１の実施の形態と同様に、デコーダ３０ａおよび３０ｂによる画像メモリ４０へのアクセスは、メモリ制御部５０を通じて行われる。これにより、一方のデコードを続行させたままで、他方のデコードを停止させて画像サイズを変更し、デコードを再開させることが可能となる。
【０１６８】
また、本発明は、動画像のエンコード・デコードに限らず、複数系統の画像処理を、同一の画像メモリを共用して実行する場合に適用することが可能である。このような画像処理としては、例えば画像の拡大・縮小、合成、画質補正などが適用可能である。さらに、１系統の画像処理を行う場合に本発明を適用した場合にも、画像メモリの仕様に関係なく、画像処理エンジンの構成が簡素化されるという効果が得られる。
【０１６９】
また、本発明は、画像処理や画像メモリへのアクセス管理などの処理が、ＯＳを搭載しない組み込み型システムにより実行される場合に特に好適である。しかし、汎用ＯＳを搭載した組み込み型システムに本発明を適用することも可能である。この場合、メモリ制御部５０に相当する処理プログラムが汎用ＯＳ上で実行されるが、このプログラムは画像メモリ管理に特化しているため、汎用ＯＳによる画像メモリの管理処理より性能が優れていると言える。
【０１７０】
なお、上記の各実施の形態で示したメモリ制御部５０の処理機能は、コンピュータによって実現することができる。その場合、メモリ制御部５０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。このような記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。
【０１７１】
プログラムを流通させる場合には、例えば、半導体メモリなどからなる可搬型記録媒体にそのプログラムが記録され、この可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１７２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【０１７３】
【図１】本発明の第１の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
【図２】メモリ制御部の内部構成を示すブロック図である。
【図３】確保したメモリ領域のメモリ領域管理部による管理方法を説明するための図である。
【図４】画像サイズ要素および画像メモリ要素のデータ構造を示す図である。
【図５】メモリ領域を確保する際のメモリ領域管理部の処理の流れを示すフローチャートである。
【図６】確保されたメモリ領域をエンコーダまたはデコーダに提供する際のメモリ領域管理部の処理の流れを示すフローチャートである。
【図７】エンコーダまたはデコーダからメモリ領域が返却される際のメモリ領域管理部の処理の流れを示すフローチャートである。
【図８】メモリ領域を解放する際のメモリ領域管理部の処理の流れを示すフローチャートである。
【図９】ルックアップテーブルの構成例を示す図である。
【図１０】ルックアップテーブル設定部によるメモリ領域の管理方法を説明するための図である。
【図１１】ルックアップテーブル要素のデータ構造を示す図である。
【図１２】メモリ領域が確保される際のルックアップテーブル設定部の処理の流れを示すフローチャートである。
【図１３】メモリ領域が解放される場合のルックアップテーブル設定部の処理の流れを示すフローチャートである。
【図１４】データフォーマットの構成例を示す図である。
【図１５】データフォーマット設定部によるメモリ領域の管理方法を説明するための図である。
【図１６】データフォーマット要素のデータ構造を示す図である。
【図１７】メモリ領域が確保される際のデータフォーマット設定部の処理の流れを示すフローチャートである。
【図１８】メモリ領域が解放される場合のデータフォーマット設定部の処理の流れを示す図である。
【図１９】メモリ確保処理部およびメモリ解放処理部によるメモリ領域の割り当て方法を説明するための図である。
【図２０】メモリ確保処理部およびメモリ解放処理部による二分木構造のノード管理方法を説明するための図である。
【図２１】メモリ領域が確保される場合のメモリ確保処理部の処理の流れを示すフローチャートである。
【図２２】メモリ領域が解放される場合のメモリ解放処理部の処理の流れを示すフローチャートである。
【図２３】本発明の第２の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
【図２４】本発明の第３の実施の形態に係る画像処理装置の要部構成を示すブロック図である。
【図２５】動画像のエンコードとデコードを並行して実行することが可能な画像処理装置の要部構成を示す図である。
【符号の説明】
【０１７４】
１０……ＣＰＵ、２０……エンコーダ、３０……デコーダ、４０……画像メモリ、４１……メモリＩ／Ｆ、４１ａ……ルックアップテーブル、４１ｂ……データフォーマット、５０……メモリ制御部、５１……メモリ領域管理部、５２……メモリ確保処理部、５３……メモリ解放処理部、５４……ルックアップテーブル設定部、５５……データフォーマット設定部、５６……ＣＰＵ・Ｉ／Ｆ、５７……エンコーダＩ／Ｆ、５８……デコーダＩ／Ｆ
【図１】
2005234687.tif 000003
【図２】
2005234687.tif 000004
【図３】
2005234687.tif 000005
【図４】
2005234687.tif 000006
【図５】
2005234687.tif 000007
【図６】
2005234687.tif 000008
【図７】
2005234687.tif 000009
【図８】
2005234687.tif 000010
【図９】
2005234687.tif 000011
【図１０】
2005234687.tif 000012
【図１１】
2005234687.tif 000013
【図１２】
2005234687.tif 000014
【図１３】
2005234687.tif 000015
【図１４】
2005234687.tif 000016
【図１５】
2005234687.tif 000017
【図１６】
2005234687.tif 000018
【図１７】
2005234687.tif 000019
【図１８】
2005234687.tif 000020
【図１９】
2005234687.tif 000021
【図２０】
2005234687.tif 000022
【図２１】
2005234687.tif 000023
【図２２】
2005234687.tif 000024
【図２３】
2005234687.tif 000025
【図２４】
2005234687.tif 000026
【図２５】
2005234687.tif 000027