(57)【特許請求の範囲】
【請求項１】
外部から入力される圧縮映像データを含むデータストリームをデコードすることにより生成した映像データ含むデータを外部に出力する映像処理装置であって、
前記データストリームを外部から入力する処理と、生成された映像データを含むデータを外部へ出力する処理とを含む、外部要因から影響を受ける入出力処理を行うプロセッサと、
前記プロセッサとは独立に並行して、前記プロセッサから供給されるデータストリームをデコードすることにより映像データを含むデータを生成するデコード処理手段とを有し、
前記プロセッサは、
前記入出力処理の内容を表わす複数のタスクプログラムを記憶する命令メモリと、
前記複数のタスクプログラムそれぞれに対応するプログラムカウンタを有するプログラムカウンタ部と、
１つのプログラムカウンタが示す命令アドレスに基づき、前記命令メモリから命令を取り出す命令フェッチ部と、
前記命令フェッチ部により取り出された命令を実行する命令実行部と、
所定数の命令サイクルが経過する毎に、前記命令フェッチ部に対して、使用するプログラムカウンタを順次切替えるように制御するタスク制御部とを備え、
前記プロセッサは、前記複数のタスクプログラム、及び、レジスタセットを切替えながら実行し、
前記プロセッサは、さらに、ＭＰＥＧデータを解析するタスクプログラムを実行することにより、個々のエレメンタリーストリームを抽出し、
前記デコード処理手段は、
定型演算を主とする定型処理であって、データストリーム中のブロック単位に付加されたヘッダ情報及びデータストリーム中の圧縮映像データの可変長復号処理と、可変長復号された圧縮映像データをブロック単位に復号する処理とを行なう定型処理手段と、
条件判断を主とする逐次処理であって、可変長復号処理されたヘッダ情報の解析処理と、データストリーム中の圧縮音声データの復号処理とを時分割で行なう逐次処理手段とを備え、
抽出された個々のエレメンタリーストリームをデコードすること
を特徴とする映像処理装置。
【請求項２】
前記プロセッサは、外部から前記データストリームを入力してメモリに格納し、メモリに格納されたデータストリームを読み出して前記デコード処理手段のデコード動作の進度に応じて当該デコード処理手段に供給し、
前記デコード処理手段は、生成した映像データを含むデータを前記メモリに格納し、
前記プロセッサは前記メモリに格納された映像データを外部へ出力すること
を特徴とする請求項１に記載の映像処理装置。
【請求項３】
前記定型処理手段は、ヘッダ情報と圧縮映像データの可変長復号処理を行い、圧縮映像データのブロックの可変長復号処理が終了後に、前記逐次処理手段に対して次のブロックのヘッダ情報の解析処理を開始するように指示し、
前記逐次処理手段は、解析すべきヘッダ情報が可変長符号化されているときには、前記定型処理手段にそのヘッダ情報の可変長復号処理を指示し、可変長復号されたヘッダ情報を取得するとこれを解析し、ブロックのヘッダ情報の取得が終了後に、前記定型処理手段に対して前記ブロックの圧縮映像データの可変長復号処理を開始し、前記解析されたヘッダ情報を用いて前記可変長復号後の圧縮映像データを復号するように指示すること
を特徴とする請求項２に記載の映像処理装置。
【請求項４】
前記定型処理手段は、
前記逐次処理手段の指示に従ってデータストリーム中の圧縮映像データを可変長復号するデータ変換手段と、
可変長復号により得られたブロックデータに対して、所定の演算を施すことにより逆量子化および逆離散余弦変換を行う演算手段と、
逆離散余弦変換後のブロックデータと、メモリに格納された復号済みフレームの矩形画像とを合成することによりブロックに相当する映像データを復元する合成手段とを備えること
を特徴とする請求項３に記載の映像処理装置。
【請求項５】
前記演算手段は、さらに、１ブロックに相当する記憶領域を有する第１バッファを有し、
前記データ変換手段は、
データストリーム中の圧縮映像データを可変長復号する可変長復号手段と、
前記第１バッファの記憶領域のアドレスをジグザグスキャン順に並べた第１アドレス列を記憶する第１アドレステーブル手段と、
前記第１バッファの記憶領域のアドレスをオルタネートスキャン順に並べた第２アドレス列を記憶する第２アドレステーブル手段と、
第１アドレス列と第２アドレス列の一方に従って、前記可変長復号手段の可変長復号により得られるブロックデータを前記第１バッファに書き込む書き込み手段とを有すること
を特徴とする請求項４に記載の映像処理装置。
【請求項６】
前記書き込み手段は、
前記第１アドレステーブル手段及び前記第２アドレステーブル手段に対するテーブルアドレスを順次発生するテーブルアドレス発生手段と、
テーブルアドレスが入力された第１テーブル手段、第２テーブル手段からそれぞれ出力される第１アドレス列のアドレス、第２アドレス列のアドレスのうち、
一方を選択するアドレス選択手段と、
選択されたアドレスを前記第１バッファに出力するアドレス出力手段とを有すること
を特徴とする請求項５に記載の映像処理装置。
【請求項７】
前記プロセッサは、
外部から非同期データストリームを入力する入力手段と、
外部の表示装置にデコードされた映像データを出力する映像出力手段と、
外部の音声出力装置にデコードされた音声データを出力する音声出力手段と、
前記命令メモリに格納された第１から第４のタスクを切替えながら実行するプロセッサとを有し、
前記第１タスクは入力部から前記メモリにデータストリームを転送するプログラムであり、
前記第２タスクは前記メモリからデコード処理手段にデータストリームを供給するプログラムであり、
前記第３タスクは前記メモリから映像出力部にデコードされた映像データを出力するプログラムであり、
前記第４タスクは前記メモリから音声出力部にデコードされた音声データを出力するプログラムであること
を特徴とする請求項２に記載の映像処理装置。
【請求項８】
前記プログラムカウンタ部は、前記第１から第４タスクに対応する少なくとも４つのプログラムカウンタを有すること
を特徴とする請求項７に記載の映像処理装置。
【請求項９】
前記プロセッサは、さらに、
前記第１から第４タスクに対応する少なくとも４つのレジスタセットを有するレジスタ部を有し、
前記タスク制御部は、プログラムカウンタの切替えと同時に、前記命令実行部が使用すべきレジスタセットを切り替えること
を特徴とする請求項８に記載の映像処理装置。
【請求項１０】
前記タスク制御部は、
プログラムカウンタが切替えられる毎に、クロック信号に従って命令サイクル数をカウントするカウンタと、
前記カウンタにおけるカウント値が前記所定数に達したとき、前記命令フェッチ部に対してプログラムカウンタを切替えるように制御する切替え指示部とを有すること
を特徴とする請求項９に記載の映像処理装置。
【請求項１１】
圧縮音声データと圧縮映像データとを含むデータストリームを、入力、デコード及び出力する映像音声処理装置であって、
外部要因により非同期に入力されるデータストリームをメモリに格納する入出力処理を行うプロセッサと、
定型演算を主とする定型処理であって、メモリに格納されたデータストリーム中のブロック単位に付加されたヘッダ情報及びデータストリーム中の圧縮映像データの可変長復号処理と、可変長復号された圧縮映像データをブロック単位に復号する処理とを行なう定型処理手段と、
条件判断を主とする逐次処理であって、可変長復号処理されたヘッダ情報の解析処理と、メモリに格納されたデータストリーム中の圧縮音声データの復号処理とを時分割で行なう逐次処理手段とを備え、
前記逐次処理手段によりデコードされた音声データ、及び、前記定型処理手段によりデコードされた映像データは前記メモリに格納され、
前記入出力処理は、さらにデコードされた音声データ、映像データをそれぞれメモリから読み出し、外部の表示装置、音声出力装置のそれぞれの出力レートに合わせた出力処理を含み、
前記プロセッサは、
前記入出力処理の内容を表わす複数のタスクプログラムを記憶する命令メモリと、
前記タスクプログラムそれぞれに対応するプログラムカウンタを有するプログラムカウンタ部と、
１つのプログラムカウンタが示す命令アドレスに基づき、前記命令メモリから命令を取り出す命令フェッチ部と、
前記命令フェッチ部により取り出された命令を実行する命令実行部と、
所定数の命令サイクルが経過する毎に、前記命令フェッチ部に対して、使用するプログラムカウンタを順次切替えるように制御するタスク制御部とを備え、
前記プロセッサは、前記複数のタスクプログラム、及び、レジスタセットを切替えながら実行し、
前記プロセッサは、さらに、ＭＰＥＧデータを解析するタスクプログラムを実行することにより、個々のエレメンタリーストリームを抽出し、
前記デコード処理手段は、抽出された個々のエレメンタリーストリームをデコードすること
を特徴とする映像音声処理装置。
【請求項１２】
前記定型処理手段は、ヘッダ情報と圧縮映像データの可変長復号処理を行い、圧縮映像データのブロックの可変長復号処理が終了後に、前記逐次処理手段に対して次のブロックのヘッダ情報の解析処理を開始するように指示し、
前記逐次処理手段は、解析すべきヘッダ情報が可変長符号化されているときには、前記定型処理手段にそのヘッダ情報の可変長復号処理を指示し、可変長復号されたヘッダ情報を取得するとこれを解析し、ブロックのヘッダ情報の取得が終了後に、前記定型処理手段に対して前記ブロックの圧縮映像データの可変長復号処理を開始し、前記解析されたヘッダ情報を用いて前記可変長復号後の圧縮映像データを復号するように指示すること
を特徴とする請求項１１に記載の映像音声処理装置。
【請求項１３】
前記定型処理手段は、
前記逐次処理手段の指示に従ってデータストリーム中の圧縮映像データを可変長復号するデータ変換手段と、
可変長復号により得られたブロックデータに対して、所定の演算を施すことにより逆量子化および逆離散余弦変換を行う演算手段と、
逆離散余弦変換後のブロックデータと、メモリに格納された復号済みフレームの矩形画像とを合成することによりブロックに相当する映像データを復元する合成手段とを備えること
を特徴とする請求項１２に記載の映像音声処理装置。
【請求項１４】
前記演算手段は、さらに１ブロックに相当する記憶領域を有する第１バッファを有し、
前記データ変換手段は、
データストリーム中の圧縮映像データを可変長復号する可変長復号手段と、
前記第１バッファの記憶領域のアドレスをジグザグスキャン順に並べた第１アドレス列を記憶する第１アドレステーブル手段と、
前記第１バッファの記憶領域のアドレスをオルタネートスキャン順に並べた第２アドレス列を記憶する第２アドレステーブル手段と、
第１アドレス列と第２アドレス列の一方に従って、前記可変長復号手段の可変長復号により得られるブロックデータを前記第１バッファに書き込む書き込み手段とを有すること
を特徴とする請求項１３に記載の映像音声処理装置。
【請求項１５】
前記書き込み手段は、
前記第１アドレステーブル手段及び前記第２アドレステーブル手段に対するテーブルアドレスを順次発生するテーブルアドレス発生手段と、
テーブルアドレスが入力された第１テーブル手段、第２テーブル手段からそれぞれ出力される第１アドレス列のアドレス、第２アドレス列のアドレスのうち、一方を選択するアドレス選択手段と、
選択されたアドレスを前記第１バッファに出力するアドレス出力手段とを有すること
を特徴とする請求項１４に記載の映像音声処理装置。
【請求項１６】
前記プロセッサは、
外部から非同期データストリームを入力する入力手段と、
外部の表示装置にデコードされた映像データを出力する映像出力手段と、
外部の音声出力装置にデコードされた音声データを出力する音声出力手段と、
前記命令メモリに格納された第１から第４のタスクを切替えながら実行するプロセッサとを有し、
前記第１タスクは入力部から前記メモリにデータストリームを転送するプログラムであり、
前記第２タスクは前記メモリから前記デコード処理手段にデータストリームを供給するプログラムであり、
前記第３タスクは前記メモリから映像出力部にデコードされた映像データを出力するプログラムであり、
前記第４タスクは前記メモリから音声出力部にデコードされた音声データを出力するプログラムであること
を特徴とする請求項１１に記載の映像音声処理装置。
【請求項１７】
前記プログラムカウンタ部は、前記第１から第４タスクに対応する少なくとも４つのプログラムカウンタを有すること
を特徴とする請求項１６に記載の映像音声処理装置。
【請求項１８】
前記プロセッサは、さらに
前記第１から第４タスクに対応する少なくとも４つのレジスタセットを有するレジスタ部を有し、
前記タスク制御部は、プログラムカウンタの切替えと同時に、前記命令実行部が使用すべきレジスタセットを切り替えること
を特徴とする請求項１７に記載の映像音声処理装置。
【請求項１９】
前記タスク制御部は、
プログラムカウンタが切替えられる毎に、クロック信号に従って命令サイクル数をカウントするカウンタと、
前記カウンタにおけるカウント値が前記所定数に達したとき、前記命令フェッチ部に対してプログラムカウンタを切替えるように制御する切替え指示部とを有すること
を特徴とする請求項１８に記載の映像音声処理装置。
【請求項２０】
前記定型処理手段は、
前記逐次処理手段の指示に従ってデータストリーム中の圧縮映像データを可変長復号するデータ変換手段と、
可変長復号により得られたブロックデータに対して、所定の演算を施すことにより逆量子化および逆離散余弦変換を行う演算手段と、
逆離散余弦変換後のブロックデータと、メモリに格納された復号済みフレームの矩形画像とを合成することによりブロックに相当する映像データを復元する合成手段とを備えること
を特徴とする請求項１８に記載の映像音声処理装置。
【請求項２１】
前記演算手段は、さらに１ブロックに相当する記憶領域を有する第１バッファを有し、
前記データ変換手段は、
データストリーム中の圧縮映像データを可変長復号する可変長復号手段と、
前記第１バッファの記憶領域のアドレスをジグザグスキャン順に並べた第１アドレス列を記憶する第１アドレステーブル手段と、
前記第１バッファの記憶領域のアドレスをオルタネートスキャン順に並べた第２アドレス列を記憶する第２アドレステーブル手段と、
第１アドレス列と第２アドレス列の一方に従って、前記可変長復号手段の可変長復号により得られるブロックデータを前記第１バッファに書き込む書き込み手段とを有すること
を特徴とする請求項２０に記載の映像音声処理装置。
【請求項２２】
前記書き込み手段は、
前記第１アドレステーブル手段及び前記第２アドレステーブル手段に対するテーブルアドレスを順次発生するテーブルアドレス発生手段と、
テーブルアドレスが入力された第１テーブル手段、第２テーブル手段からそれぞれ出力される第１アドレス列のアドレス、第２アドレス列のアドレスのうち、一方を選択するアドレス選択手段と、
選択されたアドレスを前記第１バッファに出力するアドレス出力手段とを有すること
を特徴とする請求項２１に記載の映像音声処理装置。
【請求項２３】
前記解析手段は、ヘッダ情報に基づいて量子化スケールと動きベクトルとを算出し、
前記通知手段は、量子化スケールを前記演算手段に、動きベクトルを前記合成手段に通知すること
を特徴とする請求項２０に記載の映像音声処理装置。
【請求項２４】
前記演算手段は、
それぞれマイクロプログラムを記憶する第１制御記憶部及び第２制御記憶部と、
前記第１制御記憶部に第１読出アドレスを指定する第１プログラムカウンタと、
第２読出アドレスを指定する第２プログラムカウンタと、
第１読出アドレスと第２読出アドレスとの一方を選択して前記第２制御記憶部に出力するセレクタと、
乗算器と加算器とを有し、前記第１制御記憶部及び前記第２制御記憶部によるマイクロプログラム制御によりブロック単位の逆量子化と逆離散余弦変換とを実行する実行部とを有すること
を特徴とする請求項２３に記載の映像音声処理装置。
【請求項２５】
前記実行部は、前記セレクタにより第２読出アドレスが選択されたとき、乗算器を用いた処理と加算器を用いた処理とを独立並行して行い、当該セレクタにより第１読出アドレスが選択されたとき、乗算器を用いた処理と加算器を用いた処理とを連動させて行うこと
を特徴とする請求項２４に記載の映像音声処理装置。
【請求項２６】
前記演算手段は、さらに、
前記データ変換手段からの映像ブロックを保持する第１バッファと、
前記実行部により逆離散余弦変換されたブロックを保持する第２バッファとを有し、
前記第１制御記憶部は、逆量子化処理するマイクロプログラムと、逆離散余弦変換するマイクロプログラムとを記憶し、
前記第２制御記憶部は、逆離散余弦変換するマイクロプログラムと、逆離散余弦変換された映像ブロックを前記第２バッファに転送するマイクロプログラムとを記憶し、
前記実行手段は、逆離散余弦変換された映像ブロックを前記第２バッファに転送する処理と、次の映像ブロックを逆量子化する処理とを並列に実行し、逆量子化された当該映像ブロックを逆離散余弦変換する処理を乗算器と加算器とを連動させて実行すること
を特徴とする請求項２５に記載の映像音声処理装置。
【請求項２７】
前記合成手段は、さらに、圧縮すべき映像データから差分画像を表す差分ブロックを生成し、
前記第２バッファは、さらに生成された差分画像を保持し、
前記第１制御記憶部は、さらに、離散余弦変換するマイクロプログラムと、量子化処理するマイクロプログラムとを記憶し、
前記第２制御記憶部は、さらに、離散余弦変換するマイクロプログラムと、離散余弦変換された映像ブロックを前記第１バッファに転送するマイクロプログラムとを記憶し、
前記実行手段は、さらに、前記第２バッファに保持された差分ブロックに対して離散余弦変換と量子化を実行して第１バッファに転送し、
前記データ変換手段は、さらに、前記第１バッファのブロックに対して可変長符号化を行い、
前記逐次処理手段は、さらに、前記データ変換手段により可変長符号化された所定のブロックに対してヘッダ情報を付加すること
を特徴とする請求項２６に記載の映像音声処理装置。
【請求項２８】
前記演算手段は、
それぞれマイクロプログラムを記憶する前記第１制御記憶部及び前記第２制御記憶部と、
前記第１制御記憶部に第１読出アドレスを指定する第１プログラムカウンタと、
第２読出アドレスを指定する第２プログラムカウンタと、
第１読出アドレスと第２読出アドレスとの一方を選択して前記第２制御記憶部に出力するセレクタと、
乗算器と加算器とをそれぞれ有し、前記第１制御記憶部及び前記第２制御記憶部によるマイクロプログラム制御によりブロック単位の逆量子化と逆離散余弦変換とを実行する複数の実行部とを備え、
前記複数の実行部はそれぞれ、ブロックを分割した部分ブロックを分担して処理すること
を特徴とする請求項２３に記載の映像音声処理装置。
【請求項２９】
前記演算手段は、さらに、
前記複数の実行部のそれぞれに対応して設けられ、各変換テーブルは所定のアドレス列に対応して部分的にアドレス順序を入れ換えた変換アドレス保持する複数のアドレス変換テーブルと、
所定の演算を実現するマイクロプログラムを構成する個々のマイクロ命令を変換アドレスに対応させて記憶する複数レジスタからなる命令レジスタ群と、
前記第１制御記憶部及び前記第２制御記憶部と前記複数の実行部との間に設けられ、当該第１制御記憶部又は前記セレクタから当該複数の実行部のそれぞれに出力されるマイクロ命令を、命令レジスタのマイクロ命令に切り替えて当該複数の実行部に出力する切り替え部と
を備え、
前記第１読出アドレス又は第２読出アドレスが前記所定のアドレス列の中のアドレスである場合、そのアドレスは前記複数のアドレス変換テーブルのそれぞれによって変換アドレスに変換され、前記命令レジスタ群は、変換テーブルから出力された各変換アドレスに対応するマイクロ命令を出力する
ことを特徴とする請求項２８に記載の映像音声処理装置。
【請求項３０】
前記各変換テーブルは、さらに、前記第１プログラムカウンタが前記所定のアドレス列中の第１読出アドレスを出力する間、前記レジスタ中の加減算を示すマイクロ命令出力に伴って、加算すべきか減算すべきかを示すフラグを前記複数の実行部に出力し、
前記複数の実行部のそれぞれは、前記フラグに従って加減算を実行し、
前記フラグは、前記第２制御記憶部のマイクロ命令に従って設定される  ことを特徴とする請求項２９に記載の映像音声処理装置。
【請求項３１】
前記第２制御記憶部は、さらに、前記第１プログラムカウンタが前記所定のアドレス列中の第１読出アドレスを出力する間、前記レジスタ中のマイクロ命令出力に伴って、マイクロ命令実行結果の格納先を示す情報を前記複数の実行部に出力し、
前記複数の実行部のそれぞれは、格納先情報に従って実行結果を格納する  ことを特徴とする請求項２９に記載の映像音声処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル信号処理の技術分野に属するものであって、圧縮された映像及び音声データの伸長、映像及び音声データの圧縮、グラフィックス処理などを行う画像処理装置に関する。
【０００２】
【従来の技術】
近年、ディジタル動画データの圧縮／伸長技術が確立されてきたことや、ＬＳＩ技術が向上してきたこととがあいまって、圧縮映像及び音声データを伸長するデコーダ、映像及び音声データを圧縮するエンコーダ、グラフィックス処理を行うグラフィックス処理などの種々の映像音声処理装置が重要視されている。
【０００３】
第１の従来技術として、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）規格の圧縮映像及び音声データを伸長する映像音声デコーダ（特開平８−１１１６４２９）がある。この映像音声デコーダは、１つの信号処理ユニットを用いて映像デコードと音声デコードの両方を行う。
図１に、この映像音声デコーダによるデコード処理の説明図を示す。同図の縦軸は時間を、横軸は演算量を表している。
【０００４】
縦軸に沿って大きく見ると、映像デコードと音声デコードとが交互に処理される。これは、共通のハードウェアで映像、音声の両者をデコードするためである。同図のように映像デコードは、逐次処理とブロック処理とに分けられる。逐次処理は、ブロック以外のデコード、つまりＭＰＥＧストリームのヘッダ解析など多岐にわたる条件判断を必要とする処理であり、その演算量は少ない。ブロックデコードは、ＭＰＥＧストリームの可変長符号を復号しさらにブロック単位に逆量子化、逆ＤＣＴ（離散余弦変換）を行う処理であり、その演算量は大きい。同図のように音声デコードも、多岐にわたる条件判断を必要とする上記と同様の逐次処理と、音声データ本体のデコード処理とに分けられる。音声データ本体のデコード処理は、画像データよりも高い精度が要求され、かつ限られた時間内に処理しなければならないので、精度よく高速に処理する必要があり、その演算量は大きい。
【０００５】
このように、第１の従来技術は、１チップ化を可能にし、１チップという少ないハードウェアで効率的な音声映像デコードを実現している。
第２の従来技術として、２チップ構成のデコーダがある。１チップは映像デコーダ、他の１チップは音声デコーダとして用いられる。図２に２チップ構成のデコーダによるデコード処理の説明図を示す。映像デコーダ、音声デコーダともにヘッダ解析等の条件判断を多数含む逐次処理と、データ本体のデコードを主とするブロックデコード処理とを行う。映像デコーダ、音声デコーダともに、独立に処理するので第１の従来技術と比べて個々のチップの能力は低くてよい。
【０００６】
【発明が解決しようとする課題】
しかしながら上記従来技術によれば、次のような問題があった。
第１の従来技術によれば、信号処理ユニットが映像も音声もデコードしなねればならないので、高い処理能力が要求される。つまり１００ＭＨｚ以上の高速クロックを用いて動作させる必要があり、民生用の半導体としてはコストが高いという問題がある。また、高速クロックを用いずに処理能力を高めるために、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）プロセッサなどを用いることも考えられなくはないが、ＶＬＩＷプロセッサそのもののコストが高いうえに、別途逐次処理を行うプロセッサを用いなければ全体の処理としては非効率になるという問題がある。
【０００７】
第２の従来技術によれば、２つのプロセッサを用いるのでコストが高いという問題があった。つまり、映像用プロセッサも音声用プロセッサも、処理能力の低い汎用の安価なプロセッサをそのまま使用することはできない。なぜなら映像用のプロセッサは、大量の画像データをリアルタイムに処理する能力が要求されるからである。また音声用のプロセッサは、映像用プロセッサほど多くの演算量を要求されないけれども、音声データの方が画像データよりも高い精度を要求されるからである。それゆえ、安価なあるいは処理能力の低いプロセッサでは、映像用としても音声用としても、要求される処理能力を満たさない。
【０００８】
さらに、ディジタル（衛星）放送用チューナー（ＳＴＢ（Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）と呼ばれる）やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ／Ｖｉｄｅｏ  Ｄｉｓｃ）再生装置などに用いられるＡＶデコーダ中に上記映像音声処理装置が用いられる場合には、放送波から受信されたあるいはディスクから読み出されたＭＰＥＧストリームを入力し、そのＭＰＥＧストリームをデコードし、最終的にディスプレイ、スピーカなどへ映像信号出力及び音声信号出力をするまでに必要とされる一連の処理量は膨大なものとなる。最近では、このような一連の膨大な処理を効率良く実行する映像音声処理装置に対する要求が高まっている。
【０００９】
本発明は、圧縮画像及び圧縮音声データを表すストリームデータの入力、デコード、出力という一連の処理を行い、高い周波数で動作させなくても高い処理能力を有し、製造コストを低減させることができる映像音声処理装置を提供することを目的とする。
また本発明の他の目的は、圧縮映像データのデコード、映像データのエンコード、グラフィックス処理を低コストで実現する映像音声処理装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記の課題を解決するため本発明の映像音声処理装置は、圧縮音声データと圧縮映像データとを含むデータストリームを外部から入力、デコードし、デコードしたデータを出力装置に出力する装置であって、外部要因により非同期に発生する入出力処理を行う入出力処理手段と、前記入出力処理と並行して、メモリに格納されたデータストリームのデコードを主とするデコード処理を行うデコード処理手段とを備え、前記デコード処理手段によりデコードされた映像データ、デコードされた音声データはメモリに格納され、前記入出力処理は、外部から非同期に入力される前記データストリームを入力し、さらにメモリに格納することと、メモリに格納されたデータストリームをデコード処理手段に供給することと、外部の表示装置、音声出力装置それぞれの出力レートに合わせてメモリから読み出し、それらに出力することとを入出力処理として行うように構成されている。
【００１１】
この構成によれば、入出力処理手段とデコード処理手段とがパイプライン的に並列動作することに加えて、非同期処理とデコード処理とを入出力処理手段とデコード処理手段とに分担させるので、デコード処理手段は非同期に発生する処理から解放されてデコード処理に専従することができる。その結果、本映像音声処理装置は、ストリームデータ入力、デコード、出力という一連の処理を効率良く実行するので、ストリームデータのフルデコード（フレーム落ちなし）を高速な動作クロックを用いなくても可能にしている。
【００１２】
【発明の実施の形態】
本発明の映像音声処理装置について、その実施の形態を次のように項分けして記載する。
１  第１の実施形態
１．１  映像音声処理装置の概略構成
１．１．１    入出力処理部
１．１．２    デコード処理部
１．１．２．１  逐次処理部
１．１．２．２  定型処理部
１．２  映像音声処理装置の構成
１．２．１  入出力処理部の構成
１．２．２  デコード処理部
１．２．２．１  逐次処理部
１．２．２．２  定型処理部
１．３  各部の詳細構成
１．３．１  プロセッサ７（逐次処理部）
１．３．２  定型処理部
１．３．２．１  コード変換部
１．３．２．２  画素演算部
１．３．２．３  画素読み書き部
１．３．３  入出力処理部
１．３．３．１  ＩＯプロセッサ
１．３．３．１．１  命令読出回路
１．３．３．１．２  タスク管理部
１．４  動作説明
２  第２の実施形態
２．１  映像音声処理装置の構成
２．１．１  画素演算部
＜１．    第１の実施形態＞
本実施形態における映像音声処理装置は、衛星放送受信装置（ＳＴＢ：Ｓｅｔ  Ｔｏｐ  Ｂｏｘと呼ばれる）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）再生装置、ＤＶＤ−ＲＡＭ記録再生装置などに備えられ、圧縮映像／音声データとして衛星放送から又はＤＶＤからのＭＰＥＧストリームを入力し、伸長処理（以下単にデコードと呼ぶ）を行って、映像信号及び音声信号を外部の出力装置に出力する。
＜１．１    映像音声処理装置の概略構成＞
図３は、本発明の第１の実施形態における映像音声処理装置の概略構成を示すブロック図である。
【００１３】
映像音声処理装置１０００は、入出力処理部１００１、デコード処理部１００２、メモリコントローラ６を備え、入出力処理とデコード処理とを分離して並行して行うように構成されている。また、外部メモリ３は、ＭＰＥＧストリームやデコード後の音声データを一時的に記憶する作業用メモリ、デコード後の映像データを記憶するフレームメモリとして利用される。
＜１．１．１    入出力処理部＞
入出力処理部１００１は、映像音声処理装置１０００の内部動作とは非同期に発生する入出力処理を行う。この入出力処理は、（ａ）外部から非同期に入力されるＭＰＥＧストリームを入力して外部メモリ３に一時的に格納すること、（ｂ）外部メモリ３に格納されたＭＰＥＧストリームをデコード処理部１００２に供給すること、（ｃ）デコードされた映像データ、音声データを外部メモリ３から読み出し、外部の表示装置、音声出力装置（図外）それぞれの出力レートに合わせて出力することを内容とする。
＜１．１．２    デコード処理部＞
デコード処理部１００２は、入出力処理部１００１の動作とは独立に並行して、入出力処理部１００１によって供給されるＭＰＥＧストリームのデコードし、デコード後の映像データ及び音声データを外部メモリ３に格納する。ＭＰＥＧストリームのデコード処理は演算量が多く処理内容も多岐にわたるため、デコード処理部１００２は、逐次処理部１００３、定型処理部１００４とを備え、多岐に亘る条件判断を主とする逐次処理と、定型的な大量の演算を主としかつ並列演算に適した定型処理とを分離して並行して実行するように構成されている。ここで、逐次処理は、ＭＰＥＧストリームのヘッダ解析などであり、ヘッダの検出及びヘッダ内容の判定等の多数の条件判断含む。また定型処理は、所定数の画素からなるブロック単位に各種演算を施す必要があるので、パイプライン的な並列処理に適していて、かつ、異なるデータ（画素）に対して全く同じ演算を施すというベクトル演算のような並列処理に適している。
＜１．１．２．１  逐次処理部＞
逐次処理部１００３は、入出力処理部１００１から供給される圧縮音声データ及び圧縮映像データのヘッダ解析と、定型処理部１００４をマクロブロック毎に起動する制御と、圧縮音声データのデコード処理とを上記逐次処理として行う。ヘッダ解析は、ＭＰＥＧストリームにおけるマクロブロックヘッダの解析と、動きベクトルの復号を含む。ここでブロックとは、８＊８画素からなる画像を表す。マクロブロックとは、４つの輝度ブロックと２つの色差ブロックからなる。動きベクトルとは、参照フレーム中の８＊８画素の矩形領域を指すベクトルであり、当該ブロックが参照フレーム中のどの矩形領域との差分がとられたかを指し示す。
＜１．１．２．２  定型処理部＞
定型処理部１００４は、逐次処理部１００３からマクロブロック毎にデコードの起動指示を受けて逐次処理部１００３の音声デコード処理と並行して、マクロブロックのデコード処理を上記定型処理として行う。このデコード処理は、可変長符号の復号（ＶＬＤ：Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  ｃｏｄｅ  Ｄｅｃｏｄｉｎｇ）、逆量子化（ＩＱ：Ｉｎｖｅｒｓｅ  Ｑｕａｎｔｉｚａｔｉｏｎ）、逆離散余弦変換（ＩＤＣＴ：Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）、動き補償（ＭＣ：Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）を同順に施すことを内容とする。定型処理部１００４は、動き補償において、復号後のブロックをフレームメモリとしての外部メモリ３にメモリコントローラ６を介して格納する。
＜１．２  映像音声処理装置の構成＞
図４は、映像音声処理装置１０００のより詳細な構成を示すブロック図である。
＜１．２．１  入出力処理部の構成＞
同図において入出力処理部１００１は、ストリーム入力部１、バッファメモリ２、入出力プロセッサ５（以下ＩＯプロセッサ５と略す）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）５ａ、ビデオ出力部１２、音声出力部１３、ホストＩ／Ｆ部１４とを備える。
【００１４】
ストリーム入力部１は、外部からシリアルに入力されるＭＰＥＧデータストリームをパラレルデータ（以降、ＭＰＥＧデータと呼ぶ）に変換する。その際、ストリーム入力部１は、ＭＰＥＧデータストリームからＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅ：Ｉピクチャを１つ含み、約０．５秒分の動画に相当するＭＰＥＧデータストリーム）のスタートコードを検出し、その旨をＩＯプロセッサ５に通知する。この通知により変換後のＭＰＥＧデータは、ＩＯプロセッサ５の制御によりバッファメモリ２に転送される。
【００１５】
バッファメモリ２は、ストリーム入力部１から転送されたＭＰＥＧデータを一時的に保持する緩衝用メモリである。バッファメモリ２に保持されたＭＰＥＧデータは、さらに入出力プロセッサ５の制御の下でメモリコントローラ６を介して外部メモリ３に転送される。
外部メモリ３は、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）チップにより構成され、バッファメモリ２からメモリコントローラ６を介して転送されたＭＰＥＧデータを一時的に保持する。さらに、外部メモリ３は復号後の映像データ（以降、フレームデータとも呼ぶ）および復号後の音声データも保持する。
【００１６】
入出力プロセッサ５は、ストリーム入力部１、バッファメモリ２、外部メモリ３（メモリコントローラ６が介在する）、ＦＩＦＯメモリ４の間のデータ入出力を制御する。すなわち以下の（１）〜（４）に示す経路のデータ転送（ＤＭＡ転送）を制御する。
（１）ストリーム入力部１→バッファメモリ２→メモリコントローラ６→外部メモリ３
（２）外部メモリ３→メモリコントローラ６→ＦＩＦＯメモリ４
（３）外部メモリ３→メモリコントローラ６→バッファメモリ２→ビデオ出力部１２
（４）外部メモリ３→メモリコントローラ６→バッファメモリ２→音声出力部１３
これらの径路では入出力プロセッサ５は、ＭＰＥＧデータ中の映像データと音声データとを独立にそれぞれの転送を制御する。また、（１）、（２）は復号前のＭＰＥＧデータの転送経路である。（１）、（２）の転送経路において入出力プロセッサ５は、圧縮映像データと圧縮音声データとを別個に転送する。（３）、（４）はそれぞれ、復号後の映像、音声データの転送経路である。復号後の映像、音声データは、外部の表示装置（図外）、音声出力装置（図外）それぞれの出力レートに合わせて転送される。
【００１７】
ＤＭＡＣ５ａは、ストリーム入力部１、ビデオ出力部１２、音声出力部１３とバッファメモリ２との間のＤＭＡ転送、バッファメモリ２と外部メモリ３との間のＤＭＡ転送、外部メモリ３とＦＩＦＯメモリ４の間のＤＭＡ転送をＩＯプロセッサ５の制御に従って実行する。
ビデオ出力部１２は、外部の表示装置（ＣＲＴ等）の出力レート（たとえば水平同期信号Ｈｓｙｎｃの周期）に合せて入出力プロセッサ５にデータ要求を出し、入出力プロセッサ５により上記（３）の転送経路により入力される映像データをその表示装置に出力する。
【００１８】
音声出力部１３は、外部の音声出力装置の出力レートに合せて入出力プロセッサ５にデータ要求を出し、入出力プロセッサ５により上記（４）の転送経路により入力される音声データを音声出力装置（Ｄ／Ａコンバータ、音声アンプ、スピーカの組み合わせ等）に出力する。
ホストＩ／Ｆ部１４は、外部のホストプロセッサ、たとえばＤＶＤ再生装置の場合にはその制御全般を行うプロセッサとの通信を行うためのインターフェースである。この通信では、ホストプロセッサからＭＰＥＧストリームのデコード開始、停止、早送り再生、逆再生等の指示などが送られる。
＜１．２．２  デコード処理部＞
図４のデコード処理部１００２は、ＦＩＦＯメモリ４、逐次処理部１００３、定型処理部１００４と備え、入出力処理部１００１からＦＩＦＯメモリ４を介して供給されるＭＰＥＧデータのデコード処理を行う。また、逐次処理部１００３は、プロセッサ７と内部メモリ８とを備える。定型処理部１００４は、コード変換部９、画素演算部１０、画素読み書き部１１、バッファ２００、バッファ２０１を備える。
【００１９】
ＦＩＦＯメモリ４は、２つのＦＩＦＯ（以下映像ＦＩＦＯ、音声ＦＩＦＯと呼ぶ）からなり、入出力プロセッサ５の制御の下で外部メモリ３から転送された圧縮映像データ、圧縮音声データをそれぞれ先入れ先出し式に記憶する。
＜１．２．２．１  逐次処理部＞
プロセッサ７は、ＦＩＦＯメモリ４の圧縮映像データ及び圧縮音声データの読み出しを制御するとともに、圧縮映像データに対する一部のデコード処理と、圧縮音声データに対する全デコード処理とを行う。圧縮映像データの一部のデコード処理とは、ＭＰＥＧデータ中のヘッダ情報の解析と動きベクトルの計算と圧縮映像デコード処理の制御とを含む。これは、圧縮映像データの全デコード処理を、プロセッサ７と、定型処理部１００４とで分担して行うためである。つまりプロセッサ７は多岐にわたる条件判断を必要とする逐次処理を分担し、定型処理部１００４は、大量の定型的な演算処理を分担する。これに対し音声デコードは、映像デコードに比べて演算量が少ないのでプロセッサ７が全部を担当している。
【００２０】
プロセッサ７の機能を図５を用いて具体的に説明する。図５はＭＰＥＧストリームを階層的に示とともに映像音声処理装置各部の動作タイミングを示している。同図において横軸は時間軸である。第１階層はＭＰＥＧストリームの流れを示す。第２階層のように１秒間のＭＰＥＧストリームは、複数のフレーム（Ｉ、Ｐ、Ｂピクチャ）を含む。第３階層のように１フレームは、ピクチャヘッダと複数のスライスを含む。第４階層のように１スライスは、スライスヘッダと複数のマクロブロックを含む。第５階層のように１マクロブロックは、マクロブロックヘッダと６つのブロックを含む。
【００２１】
同図に示す第１〜第５階層のデータ構成は、公知文献、例えば株式会社アスキー「ポイント図解式最新ＭＰＥＧ教科書」に詳しく説明されている。
プロセッサ７は、同図の第５階層以下に示すように、ＭＰＥＧストリーム中のマクロブロック層までのヘッダ解析と圧縮音声データの復号とを行う。その際、プロセッサ７は、マクロブロック単位のヘッダ解析結果に従って、コード変換部９、画素演算部１０及び画素読み書き部１１に対してマクロブロックのデコードを開始を指示し、コード変換部９、画素演算部１０及び画素読み書き部１１によってマクロブロックのデコードがなされている間、ＦＩＦＯメモリ４から圧縮音声データの読み出してデコードする。コード変換部９、画素演算部１０及び画素読み書き部１１によりマクロブロックのデコードが終了したと、プロセッサ７は、割込み信号によりその旨の通知を受け、圧縮音声データのデコードを中断して、次のマクロブロックのヘッダ解析を開始する。
【００２２】
内部メモリ８は、プロセッサ７のワークメモリであり、復号された音声データを一時的に保持する。保持された音声データは、入出力プロセッサ５により上記（４）の経路で外部メモリ３に転送される。
＜１．２．２．２  定型処理部＞
コード変換部９は、ＦＩＦＯメモリ４から読み出された圧縮映像データを可変長復号（ＶＬＤ）する。図５に示すように、コード変換部９は、復号後のデータのうち、ヘッダ情報及び動きベクトルに関する情報（図中の破線区間）をプロセッサ７に転送し、マクロブロック（輝度ブロックＹ０〜Ｙ３と色差ブロックＣｂ、Ｃｒとからなる６ブロック）のデータ（図中の実線区間）をバッファ２００を介して画素演算部１０に転送する。コード変換部９による復号後のマクロブロックのデータは空間周波数成分を表すデータである。
【００２３】
バッファ２００は、コード変換部９により書き込まれる１ブロック（８×８画素分）分の空間周波数成分を表すデータを保持する。
画素演算部１０は、コード変換部９からバッファ２００を介して転送されたブロックデータに対して、逆量子化処理（ＩＱ）及び逆離散余弦変換（ＩＤＣＴ）をブロック単位に行う。画素演算部１０による処理結果は、輝度ブロックであれば画素の輝度値又はその差分を表すデータであり、色差ブロックであれば画素の色差又はその差分を表すデータであり、バッファ２０１を介して画素読み書き部１１に転送される。
【００２４】
バッファ２０１は、１ブロック（８×８画素分）分の画素データを保持する。
画素読み書き部１１は、画素演算部１０の処理結果に対して、ブロック単位に動き補償を行う。すなわち、Ｐピクチャ、Ｂピクチャについては、外部メモリ３内の復号済みの参照フレームから動きベクトルが示す矩形領域をメモリコントローラ６を介して切り出して、画素演算部１０の処理結果のブロックと合成することにより、元のブロック画像に復号する。画素読み書き部１１による復号結果は、メモリコントローラ６を介して外部メモリ３に格納される。
【００２５】
上記の動き補償、ＩＱ、ＩＤＣＴの各内容については公知技術なので詳しい説明は省略する（上記文献参照）。
＜１．３  各部の詳細構成＞
次に、映像音声処理装置１０００の主要な各部の詳細な構成について説明する。
＜１．３．１  プロセッサ７（逐次処理部）＞
図６は、プロセッサ７によるマクロブロックヘッダの解析と、他の各部への制御内容とを示す図である。まず同図に略語で示してあるマクロブロックヘッダ中の各データは上記文献等に説明されているのでここでは説明を省略する。
【００２６】
同図のようにプロセッサ７は、コード変換部９にコマンドを発行して可変長復号されたヘッダ部分のデータを逐次取得し、その内容に従ってコード変換部９、画素演算部１０、画素読み書き部１１に対してマクロブロックのデコードに必要なデータを設定する。
具体的には、まずプロセッサ７は、コード変換部９にＭＢＡＩ（Ｍａｃｒｏ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  Ｉｎｃｒｅｍｅｎｔ）を取得するためのコマンドを発行して（Ｓ１０１）、コード変換部９からＭＢＡＩを取得する。このＭＢＡＩに基づき当該マクロブロックデータがスキップマクロブロックであれば（今デコードしようとしているマクロブロックが前回と同じであれば）、マクロブロックデータが省略されているのでＳ１１７に進み、スキップマクロブロックでなければヘッダ解析を続ける（Ｓ１０２、１０３）。
【００２７】
次いで、プロセッサ７はＭＢＴ（Ｍａｃｒｏ  Ｂｌｏｃｋ  Ｔｙｐｅ）を取得するためのコマンドを発行して、コード変換部９からＭＢＴを取得する。このＭＢＴからブロックのスキャンタイプがジグザグスキャンかオールタネートスキャンかを判断し、画素演算部１０にバッファ２００の読み出し順序を指示する（Ｓ１０４）。
さらに、プロセッサ７は既に取得したヘッダデータからＳＴＷＣ（Ｓｐａｒｔｉａｌ  Ｔｅｍｐｏｒａｌ  Ｗｅｉｇｈｔ  Ｃｏｄｅ）が存在するか否かを判定し（Ｓ１０５）、存在する場合にはコマンドを発行して取得する（Ｓ１０６）。
【００２８】
同様にしてプロセッサ７は、ＦｒＭＴ（Ｆｒａｍｅ  Ｍｏｔｉｏｎ  Ｔｙｐｅ）、ＦｉＭＴ（Ｆｉｅｌｄ  Ｍｏｔｉｏｎ  Ｔｙｐｅ）、ＤＴ（ＤＣＴ  ｔｙｐｅ）、ＱＳＣ（Ｑｕａｎｔｉｚｅｒ  Ｓｃａｌｅ  Ｃｏｄｅ）、ＭＶ（Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ）、ＣＢＰ（Ｃｏｄｅｄ  Ｂｌｏｃｋ  Ｐａｔｔｅｒｎ）を取得する（Ｓ１０７〜１１６）。その際、プロセッサ７は、ＦｒＭＴ、ＦｉＭＴ、ＤＴの解析結果を画素読み書き部１１に通知し、ＱＳＣの解析結果を画素演算部１０に通知し、ＣＢＰの解析結果をコード変換部９に通知する。これによりＩＱ、ＩＤＣＴ、動き補償に必要が情報が、コード変換部９、画素演算部１０、画素読み書き部１１に設定される。
【００２９】
また２プロセッサ構成では、多岐にわたる条件判断を必要とする上記の逐次処理を各プロセッサが個別に行うため冗長な構成になっていた。
次いで、プロセッサ７はコード変換部９に対してマクロブロックのデコード開始指示を発行する（Ｓ１１７）。これによりコード変換部９は、マクロブロック内の各ブロックについてＶＬＤを開始し、ＶＬＤの結果をバッファ２００を介して画素演算部１０に出力する。さらにプロセッサ７は、ＭＶデータに基づいて動きベクトルを計算し（Ｓ１１８）、その計算結果を画素読み書き部１１に通知する（Ｓ１１９）。
【００３０】
上記処理において、動きベクトルに関しては、動きベクトルのデータ（ＭＶ）取得（Ｓ１１３）し、動きベクトルの計算（Ｓ１１８）し、動きベクトルを画素読み書き部１１に設定する（Ｓ１１９）という一連の処理が必要である。この点、プロセッサ７は、動きベクトルデータ（ＭＶ）を取得（Ｓ１１３）した直後に動きベクトルの計算及び設定（Ｓ１１８、１１９）しないで、定型処理部１００４へのデコード開始指示を発行してから動きベクトルを計算及び設定を行うようにしている。これにより、プロセッサ７の動きベクトル計算および設定処理と、定型処理部１００４へのデコード処理とが並列に処理されるようになる。つまり定型処理部１００４のデコード開始タイミングを早くしている。
【００３１】
以上のようにしてマクロブロック１つ分の圧縮映像データのヘッダ解析が完了するので、プロセッサ７は、ＦＩＦＯメモリ４から圧縮音声データを取得して、音声デコード処理を開始する（Ｓ１２０）。音声デコード処理は、コード変換部９からマクロブロックのデコード完了を示す割り込み信号が入力されるまで続けられる。この割り込み信号によりプロセッサ７は次のマクロブロックに対して上記ヘッダ解析を開始する。
＜１．３．２  定型処理部＞
次に、定型処理部１００４は、マクロブロック内の６つのブロックをコード変換部９、画素演算部１０、画素読み書き部１１を並列に（パイプライン的に）に動作させることによりデコード処理を行っている。ここでは、画素演算部１０、画素読み書き部１１、コード変換部９の順にそれらの構成をより詳細に説明する。
＜１．３．２．１  コード変換部９＞
図１９は、コード変換部９の構成を示すブロック図である。
【００３２】
同図のコード変換部９は、ＶＬＤ部９０１、カウンタ９０２、インクリメンタ９０３、セレクタ９０４、スキャンテーブル９０５、スキャンテーブル９０６、フリップフロップ（以下ＦＦと略す）９０７、セレクタ９０８とを備え、可変長復号（ＶＬＤ）した結果をブロック単位に、ジグザグスキャン又はオルタネートスキャンの順に配列するようにバッファ２００に書き込むよう構成されている。
【００３３】
ＶＬＤ部９０１は、ＦＩＦＯメモリ４から読み出された圧縮映像データを可変長復号（ＶＬＤ）し、復号後のデータのうち、ヘッダ情報及び動きベクトルに関する情報（図５中の破線区間）をプロセッサ７に転送し、マクロブロック（輝度ブロックＹ０〜Ｙ３と色差ブロックＣｂ、Ｃｒとからなる６ブロック）のデータ（図５中の実線区間）をブロック（６４個の空間周波数データ）単位にバッファ２００に出力する。
【００３４】
カウンタ９０２、インクリメンタ９０３、セレクタ９０４からなる回路部分は、ＶＬＤ部９０１からの空間周波数データの出力に同期して、０から６３までを繰り返しカウントする。
スキャンテーブル９０５は、バッファ２００のブロック記憶領域のアドレスをジグザグスキャンの順に記憶しているテーブルであり、カウンタ９０２の出力値（０〜６３）が順に入力され、順次そのアドレスを出力する。図２０にバッファ２００中の８×８個の空間周波数データを記憶するブロック記憶領域と、ジグザグスキャンの順路を示す。スキャンテーブル９０５は、同図の順路における画素アドレスを順次出力する。
【００３５】
スキャンテーブル９０６は、バッファ２００のブロック記憶領域のアドレスをオルタネートスキャンの順に記憶しているテーブルであり、カウンタ９０２の出力値（０〜６３）が順に入力され、順次そのアドレスを出力する。図２１にバッファ２００中の８×８個の空間周波数データを記憶するブロック記憶領域と、オルタネートスキャンの順路を示す。スキャンテーブル９０５は、同図の順路における画素アドレスを順次出力する。
【００３６】
ＦＦ９０７は、スキャンタイプ（ジグザグスキャンかオルタネートスキャンか）を示すフラグを保持する。このフラグは、プロセッサ７により設定される。
セレクタ９０８は、ＦＦ９０７のフラグに応じてスキャンテーブル９０５とスキャンテーブル９０６とから出力されるアドレスを選択し、バッファ２００に書き込みアドレスとして出力する。
＜１．３．２．２  画素演算部＞
図７は、画素演算部１０の構成を示すブロック図である。
【００３７】
同図のように画素演算部１０は、乗算器５０２と加減算器５０３からなる実行部５０１と、第１プログラムカウンタ（以降、第１ＰＣと略す）５０４と、第２プログラムカウンタ（以降、第２ＰＣと略す）５０５と、第１命令メモリ５０６と、第２命令メモリ５０７と、セレクタ５０８とを有し、ＩＱとＩＤＣＴの一部とをオーバラップさせて並列に実行できるように構成されている。。
【００３８】
実行部５０１は、第１命令メモリ５０６、第２命令メモリ５０７から順次出力されるマイクロ命令に従って、バッファ２００、２０１のアクセス及び演算を実行する。
第１命令メモリ５０６、第２命令メモリ５０７は、バッファ２００に保持されたブロック（周波数成分）に対して、ＩＱ、ＩＤＣＴを実現するためのマイクロプログラムを記憶する制御記憶である。図８に、第１命令メモリ５０６及び第２命令メモリ５０７に記憶されたマイクロプログラムの一例を示す。
【００３９】
同図において、第１命令メモリ５０６はＩＤＣＴ１Ａマイクロプログラムと、ＩＱマイクロプログラムとを記憶し、第１ＰＣ５０４によって読み出しアドレスが指定される。ＩＱマイクロプグラムは、バッファ２００の読み出しと、乗算とを主体とする演算処理であり、加減算器５０３を用いない。
第２命令メモリ５０７はＩＤＣＴ１Ｂマイクロプログラムと、ＩＤＣＴ２マイクロプログラムとを記憶し、セレクタ５０８を介して第１ＰＣ５０４又は第２ＰＣ５０５により読出アドレスが指定される。ここで、ＩＤＣＴ１は、乗算及び加減算を主とするＩＤＣＴの前半部分の処理を意味し、ＩＤＣＴ１ＡマイクロプログラムとＩＤＣＴ１Ｂマイクロプログラムとが同時に読み出されることにより実行部５０１全体を使って実行される。また、ＩＤＣＴ２は、加減算を主とするＩＤＣＴの後半部分の処理とバッファ２０１への書き出し処理を意味し、第２命令メモリ５０７のＩＤＣＴ２マイクロプログラムが読み出されることによって加減算器５０３を使って実行される。
【００４０】
ＩＱは乗算器５０２により、ＩＤＣＴ２は加減算器５０３により処理されるので、これらは並列動作可能になっている。図９に、画素演算部１０によるＩＱ、ＩＤＣＴ１、ＩＤＣＴ２の動作タイミング図を示す。
図９において、コード変換部９はバッファ２００に輝度ブロックＹ０のデータを書き込むと（タイミングｔ０）、その旨を制御信号１０２にて画素演算部１０に通知する。画素演算部１０は、プロセッサ７のヘッダ解析時に設定されたＱＳ（Ｑｕａｎｔｉｚｅｒ  Ｓｃａｌｅ）値を用いて、第１ＰＣ５０４のアドレス指定に従って第１命令メモリ５０６のＩＱマイクロプログラムを読み出すことによってバッファ２００のデータに対してＩＱを行う。このとき、セレクタ５０８は第１ＰＣ５０４を選択する（タイミングｔ１）。
【００４１】
さらに、画素演算部１０は、第１ＰＣ５０４のアドレス指定に従ってＩＤＣＴ１Ａ及びＩＤＣＴ１Ｂマイクロプログラムを読み出すことによってバッファ２００のデータに対してＩＤＣＴ１を行う。このとき、セレクタ５０８は第１ＰＣ５０４を選択するので、第１命令メモリ５０６、第２命令メモリ５０７の双方に第１ＰＣ５０４からのアドレスが指定される（タイミングｔ２）。
【００４２】
次に、画素演算部１０は、上記ＱＳ（Ｑｕａｎｔｉｚｅｒ  Ｓｃａｌｅ）値を用いて、第１ＰＣ５０４のアドレス指定に従って第１命令メモリ５０６のＩＱマイクロプログラムを読み出すことによってバッファ２００のブロックＹ１のデータに対してＩＱを行い、同時に、第２ＰＣ５０５のアドレス指定に従って第２命令メモリ５０７のＩＤＣＴ２マイクロプログラムを読み出すことによってブロックＹ０に対してＩＤＣＴ処理の後半部分を処理する。このときセレクタ５０８は第２ＰＣ５０５を選択する。第１ＰＣ５０４と第２ＰＣ５０５とは独立にアドレスを指定することになる（タイミングｔ３）。
【００４３】
この後も同様に画素演算部１０はブロック単位に処理を続ける（タイミングｔ４以降）。
＜１．３．２．３  画素読み書き部＞
図１０は、画素読み書き部１１の詳細な構成を示すブロック図である。
同図のように画素読み書き部１１は、バッファ７１〜７４（以下、バッファＡ〜Ｄと呼ぶ）と、ハーフぺル補間部７５と、合成部７６と、セレクタ７７、７８と、読み書き制御部７９とからなる。
【００４４】
読み書き制御部７９は、バッファ２０１を介して入力されるブロックデータに対して、バッファＡ〜Ｄを用いて動き補償を行い、最終的な復号画像を２ブロック単位で外部メモリ３に転送する。より具体的には、プロセッサ７のヘッダ解析時に設定された動きベクトルに従って、外部メモリ３中の参照フレームから２ブロック分に相当する矩形領域を読み出すようメモリコントローラ６を制御する。その結果、バッファＡ又はバッファＢに動きベクトルが指し示す２ブロック分の矩形領域のデータが格納される。その後、ピクチャの種類（ＩかＰかＢピクチャか）に応じて２ブロック分の矩形領域のハーフペル補間を合成部７６にて行う。さらにバッファ２０１を介して入力されるブロックデータと、ハーフペル補間後の矩形領域とを合成（加算）することにより、当該ブロックの画素値を算出し、バッファＢに格納する。こうしてバッファＢに格納された最終的な復号ブロックはメモリコントローラ６を介して外部メモリ３に転送される。
＜１．３．３  入出力処理部＞
入出力処理部１００１は、上記のように多数のデータ入出力（データ転送）を実行するために、種々のデータ転送を分担する複数のタスクをオーバーヘッドなく切り替え、しかもデータ入出力要求に対して応答遅延を生じさせないように構成されている。ここでいうオーバーヘッドは、タスクスイッチ時に発生するコンテキストの退避及び復帰である。つまり入出力プロセッサ５は、プログラムカウンタの命令アドレスやレジスタデータをメモリ（スタック領域）に退避及び復帰することにより生ずるオーバーヘッドを解消するように構成されている。ここでは、その詳細な構成について説明する。
＜１．３．３．１  ＩＯプロセッサ＞
図１１は、ＩＯプロセッサ５の構成を示すブロック図である。同図において、ＩＯプロセッサ５は、状態監視レジスタ５１、命令メモリ５２、命令読出回路５３、命令レジスタ５４、デコーダ５５、演算実行部５６、汎用レジスタセット群５７、タスク管理部５８を備え、非同期に発生する複数のイベントに対応するために、極めて短い周期（例えば４命令サイクル）毎にタスクを切り替えながら実行するよう構成されている。
【００４５】
状態監視レジスタ５１は、レジスタＣＲ１〜ＣＲ３からなり、ＩＯプロセッサ５が種々の入出力状態を監視するための種々の状態データ（フラグなど）を保持する。例えば、状態監視レジスタ５１は、ストリーム入力部１の状態（ＭＰＥＧストリームにおけるスタートコード検出フラグ）、ビデオ出力部１２の状態（水平ブランキング期間を示すフラグ、フレームデータの転送完了フラグ）、音声出力部１３の状態（音声フレームデータの転送完了フラグ）や、それらとバッファメモリ２、外部メモリ３及びＦＩＦＯメモリ４との間でのデータ転送の状態（データ転送数、ＦＩＦＯメモリ４へのデータ要求フラグ）などを示す状態データを保持する。
【００４６】
より具体的には、以下のフラグ等を含む。
・スタートコード検出フラグ（以下フラグ１とも呼ぶ）
このフラグは、ストリーム入力部１によってＭＰＥＧストリームにおけるスタートコードが検出されたとき設定される。
・水平ブランキングフラグ（フラグ２）
このフラグは、水平ブランキング期間を示すフラグであり、ビデオ出力部１２により設定される。約６０マイクロ秒周期で設定される。
・映像フレームデータの転送完了フラグ（フラグ３）
このフラグは、外部メモリ３からビデオ出力部１２へ１フレーム分の復号された画像データが転送されたときＤＭＡＣ５ａによって設定される。
・音声フレームデータの転送完了フラグ（フラグ４）
このフラグは、外部メモリ３から音声出力部１３へ１フレーム分の復号された音声データが転送されたときＤＭＡＣ５ａによって設定される。
・データ転送完了フラグ（フラグ５）
このフラグは、ストリーム入力部１からバッファメモリ２へＩＯプロセッサ５により指定されたデータ数の圧縮画像データがＤＭＡＣ５ａによりＤＭＡ転送されたとき（ターミナルカウントになったとき）に設定される。
・ＤＭＡ要求フラグ（フラグ６）
このフラグは、バッファメモリ２の圧縮画像データ又は圧縮音声データを外部メモリ３へＤＭＡ転送すべきデータがあることを示すフラグであり、ＩＯプロセッサ５により設定される（後述するタスク１からタスク２への要求）。
・映像ＦＩＦＯへのデータ要求フラグ（フラグ７）
このフラグは、外部メモリ３からＦＩＦＯメモリ４中の映像ＦＩＦＯへのデータ転送を要求するフラグであり、映像ＦＩＦＯの圧縮映像データが所定量以下になったとき設定される。このフラグは、約５〜４０マイクロ秒周期で設定される。
・音声ＦＩＦＯへのデータ要求フラグ（フラグ８）
このフラグは、外部メモリ３からＦＩＦＯメモリ４中の音声ＦＩＦＯへのデータ転送を要求するフラグであり、音声ＦＩＦＯの圧縮音声データが所定量以下になったときに設定される。このフラグは、約１５〜６０マイクロ秒周期で設定される。
・デコーダ通信要求フラグ（フラグ９）
このフラグは、デコード処理部１００２から入出力処理部１００１へ通信を要求するフラグである。
・ホスト通信要求フラグ（フラグ１０）
このフラグは、ホストプロセッサから入出力処理部１００１へ通信を要求するフラグである。
【００４７】
上記のフラグ類は、ＩＯプロセッサ５により実行される各タスクにより、割り込みではなく、定常的に監視される。
命令メモリ５２は、多数のデータ入出力（データ転送）制御を分担する複数のタスクプログラムを記憶する。本実施例では、タスク０〜５の６つのタスクプログラムを記憶する。
・タスク０（ホストＩ／Ｆタスク）
本タスクは、上記フラグ１０が設定されたとき、ホストコンピュ−タとの通信、つまりホストＩ／Ｆ部１４を介したホストコンピュ−タとの通信処理を行うためのタスクである。例えば、ホストプロセッサからのＭＰＥＧストリームのデコード開始、停止、早送り再生、逆再生等の受け付けと、デコード状況（エラー等）の通知などが行われる。この処理は、上記フラグ１０をトリガーとする。
・タスク１（パージングタスク）
本タスクは、ストリーム入力部１によりスタートコードが検出されたとき（上記フラグ１）、ストリーム入力部１から入力されるＭＰＥＧデータを解析（パージング）して、個々のエレメンタリストリームを抽出して、抽出されたエレメンタリストリームを、ＤＭＡ転送（上記転送経路（１）の前半部分）によりバッファメモリ２に転送するプログラムである。ここで抽出されるエレメンタリストリームの種類は、圧縮映像データ（ビデオエレメンタリーストリームとも呼ぶ）、圧縮音声データ（オーディオエレメンタリーストリームとも呼ぶ）、プライベートデータなどがある。エレメンタリストリームをバッファメモリ２に格納したときに、上記フラグ６が設定される。
・タスク２（ストリーム転送／オーディオタスク）
本タスクは、次の（ａ）〜（ｃ）の転送を制御するプログラムである。
【００４８】
（ａ）バッファメモリ２から外部メモリ３へ個々のエレメンタリーストリームのＤＭＡ転送（上記転送経路（１）の後半部分）。この転送は、上記フラグ１、３をトリガーとする。
（ｂ）オーディオＦＩＦＯに保持されている圧縮音声データのデータサイズ（残量）に応じて、外部メモリ３からＦＩＦＯメモリ４のオーディオＦＩＦＯへの圧縮音声データのＤＭＡ転送（上記転送経路（２）におけるオーディオＦＩＦＯへの転送）。このデータ転送は、オーディオＦＩＦＯに保持されている圧縮音声データのデータサイズが一定量よりも少なくなった場合になされる。この転送は、上記フラグ８をトリガーとする。
【００４９】
（ｃ）外部メモリ３からバッファメモリ２へ、さらにバッファメモリ２から音声出力部１３へ復号後のオーディオデータのＤＭＡ転送（上記転送経路（４））。この転送は、上記フラグ２をトリガーとする。
・タスク３（映像供給タスク）
本タスクは、映像ＦＩＦＯに保持されている圧縮映像データのデータサイズ（残量）に応じて、外部メモリ３からＦＩＦＯメモリ４の映像ＦＩＦＯへの圧縮映像データのＤＭＡ転送（上記転送経路（２）における映像ＦＩＦＯへの転送）を処理するプログラムである。このデータ転送は、映像ＦＩＦＯに保持されている圧縮映像データのデータサイズが一定量よりも少なくなった場合になされる。この転送は、上記フラグ７をトリガーとする。
・タスク４（ビデオ出力タスク）
本タスクは、外部メモリ３からバッファメモリ２へ、さらにバッファメモリ２からビデオ出力部１２へ復号後の映像データのＤＭＡ転送（上記転送経路（４））を処理するプログラムである。この転送は、上記フラグ２をトリガーとする。
・タスク５（デコーダＩ／Ｆタスク）
本タスクは、デコード処理部１００２からＩＯプロセッサ５に向けてのコマンドを処理するプログラムである。コマンドには、「ｇｅｔＡＰＴＳ」、「ｇｅｔＶＰＴＳ」、「ｇｅｔＳＴＣ」などがある。ｇｅｔＶＰＴＳ（Ｖｉｄｅｏ  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｉｍｅ  Ｓｔａｍｐ）は、デコード処理部１００２がＩＯプロセッサ５に対して圧縮映像データに付与されているＶＰＴＳの取得を要求するコマンドである。ｇｅｔＡＰＴＳ（Ａｕｄｉｏ  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｉｍｅ  Ｓｔａｍｐ）は、デコード処理部１００２がＩＯプロセッサ５に対して圧縮音声データに付与されているＡＰＴＳの取得を要求するコマンドである。ｇｅｔＳＴＣ（Ｓｙｓｔｅｍ  Ｔｉｍｅ  Ｃｌｏｃｋ）は、デコード処理部１００２がＩＯプロセッサ５に対してＳＴＣの取得を要求するコマンドである。これらのコマンドを受けたＩＯプロセッサ５は、デコード処理部１００２にＳＴＣ、ＶＰＴＳ、ＡＰＴＳをそれぞれ通知する。ＳＴＣ、ＶＰＴＳ、ＡＰＴＳは、デコード処理部１００２において音声と映像とのデコードを同期させたり、フレーム単位でデコードの進度を調整するために用いられる。この処理は、上記フラグ９をトリガーとする。
【００５０】
命令読出回路５３は、命令フェッチアドレスを指すプログラムカウンタ（以下ＰＣと略す）を複数個備え、タスク管理部５８により指定されたＰＣを用いて命令メモリ５２から命令を読み出して命令レジスタ５４に格納する。具体的には、命令読出回路５３は、上記タスク０〜５に対応するＰＣ０〜５を有し、タスク管理部５８によるＰＣの指定が変更されたとき
、ハードウェアにより高速にＰＣを切り替えるように構成されている。この構成によりＩＯプロセッサ５は、タスクスイッチに際して現在のタスクのＰＣ値をメモリに退避し、メモリから次のタスクのＰＣ値を復帰する処理から解放されている。
【００５１】
デコーダ５５は、命令メモリ５２から読み出されて命令レジスタ５４に格納された命令を解読し、当該命令を実行するように演算実行部５６を制御する。加えて、デコーダ５５は、ＩＯプロセッサ５全体を、命令読出回路５３の命令読み出しステージ、デコーダ５５の解読ステージ、演算実行部５６の実行ステージの少なくとも３段からなるパイプライン制御を行う。
【００５２】
演算実行部５６は、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）、乗算器、ＢＳ（Ｂａｒｒｅｌ  Ｓｈｉｆｔｅｒ）などを有し、デコーダ５５の制御に従って、命令で指定された演算を実行する。
汎用レジスタセット群５７は、タスク０〜タスク５に対応する６つのレジスタセット（１レジスタセットは４本の３２ビットレジスタと４本の１６ビットレジスタ）を備えている。全部で２４本の３２ビットレジスタと２４本の１６ビットレジスタとを有し、実行中のタスクに対応するレジスタセットが使用される。これによりＩＯプロセッサ５は、タスクスイッチに際して現在の全レジスタデータをメモリに退避し、メモリから次のタスクのレジスタデータを復帰する処理から解放されている。
【００５３】
タスク管理部５８は、所定数の命令サイクル数毎に、命令読出回路５３のＰＣ及び汎用レジスタセット群５７のレジスタセットを切り替えることによりタスク切替えを行う。本実施例では上記所定数は４である。またＩＯプロセッサ５は１命令を１命令サイクルでパイプライン処理するので、タスク管理部５８は、上記オーバーヘッドを生じることなしに４命令毎にタスクを切り替えることになる。これにより非同期に発生する各種の入出力要求に対して応答遅延を抑えている。つまり入出力要求に対する応答遅延は、最大でもわずか２４命令サイクルしか生じない。
＜１．３．３．１．１  命令読出回路＞
図１２は、命令読出回路５３の詳細な構成例を示すブロック図である。
【００５４】
同図において命令読出回路５３は、タスク別ＰＣ格納部５３ａ、現ＩＦＡＲ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）５３ｂ、インクリメンタ５３ｃ、次ＩＦＡＲ５３ｄ、セレクタ５３ｅ、セレクタ５３ｆ、ＤＥＣＡＲ（ＤＥＣｏｄｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）５３ｇを備え、タスク切替えに際してオーバーヘッドなしに命令読み出しアドレスを切り替えるように構成されている。
【００５５】
タスク別ＰＣ格納部５３ａは、タスク０〜５に対応する６本のアドレスレジスタを有し、タスク毎にプログラムカウント値を保持する。各プログラムカウント値は、対応するタスクの再開アドレスである。タスク切替えに際して、タスク管理部５８及びデコーダ５５の制御の下で、次に実行すべきタスクに対応するアドレスレジスタからプログラムカウント値が読み出され、現に実行しているタスクに対応するアドレスレジスタのプログラムカウント値が新たな再開アドレスに更新される。このとき、次に実行すべきタスク、現タスクは、それぞれタスク管理部５８により”ｎｅｘｔｔａｓｋｉｄ（ｒｄ  ａｄｄｒ）”信号（以下タスクＩＤとも呼ぶ）、”ｔａｓｋｉｄ（ｗｒ  ａｄｄｒ）”信号により指定される。
【００５６】
タスク０、１、２に対応するプログラムカウント値を図１３のＰＣ０、１、２に示す。同図において、（０−０）はタスク０の命令０を、（１−４）はタスク１の命令４を表す。例えば、ＰＣ０は、タスク０の再開に際して読み出され（命令サイクルｔ０）、次のタスクへの切替に際して、命令（０−４）のアドレスに更新される（命令サイクルｔ４）。
【００５７】
インクリメンタ５３ｃ、次ＩＦＡＲ５３ｄ、セレクタ５３ｅからなるループ回路は、セレクタ５３ｅにより選択された命令読み出しアドレスを更新する回路である。セレクタ５３ｅから出力されるアドレスを図１３のＩＦ１に示す。同図において、例えばタスク０からタスク１への切替えに際して、セレクタ５３ｅは、サイクルｔ４においてタスク別ＰＣ格納部５３ａから読み出された命令（１−０）アドレスを選択し、サイクルｔ５〜ｔ７において次ＩＦＡＲ５３ｄからのインクリメントされた命令アドレスを選択する。
【００５８】
現ＩＦＡＲ５３ｂは、セレクタ５３ｅの選択出力ＩＦ１を１サイクル遅れて保持し、命令メモリ５２に命令読み出しアドレスとして出力する。言い換えれば、現在アクティブなタスクの命令読み出しアドレスを保持する。現ＩＦＡＲ５３ｂの命令読み出しアドレスを、図１３のＩＦ２に示す。同図に示すように、ＩＦ２は４命令サイクル毎に異なるタスクの命令アドレスを指している。
【００５９】
ＤＥＣＡＲ５３ｇは、命令レジスタ５４に保持されている命令のアドレスを保持する。つまり、デコード中の命令を指す。図１３中のＤＥＣに、ＤＥＣＡＲ５３ｇに保持されたアドレスを示す。また、図１３中のＥＸは、実行中の命令アドレスを示す。
セレクタ５３ｆは、分岐命令実行時や割込み発生時に分岐アドレスを選択し、それ以外は次ＩＦＡＲ５３ｄのアドレスを選択する。
【００６０】
このような命令読出回路５３を備えることにより、ＩＯプロセッサ５は、図１３に示すように４段（ＩＦ１、ＩＦ２、ＤＥＣ、ＥＸ）のパイプライン処理を行っている。このうちＩＦ１ステージは、複数プログラムカウント値の選択及び更新を行うステージである。ＩＦ２ステージは、命令を読み出すステージである。＜１．３．３．１．２  タスク管理部＞
図１４は、タスク管理部５８の詳細な構成を示すブロック図である。同図においてタスク管理部５８は、タスクの切替えタイミングを管理するスロットマネージャと、タスクの順序を管理するスケジューラとに大別される。
【００６１】
スロットマネージャは、カウンタ５８ａ、ラッチ５８ｂ、比較器５８ｃ、ラッチユニット５８ｄを有し、４命令サイクル毎にタスク切替えを指示するタスク切替信号（ｃｈｇｔａｓｋｅｘ）を命令読出回路５３へ出力する。
具体的には、ラッチ５８ｂは、カウンタ５８ａの出力の下位２ビットを保持する２個のＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）回路である。カウンタ５８ａは、命令サイクルを示すクロック毎にラッチ５８ｂの２ビットの出力値を＋１インクリメントした３ビットを出力する。その結果、カウンタ５８ａは、１、２、３、４を繰り返し出力することになる。比較器５８ｃは、カウンタ５８ａの出力値が定数４と一致したときにタスク切替信号（ｃｈｇｔａｓｋｅｘ）を命令読出回路５３とスケジューラとに出力する。
【００６２】
スケジューラは、タスクラウンド管理部５８ｅ、プライオリティエンコーダ５８ｆ、ラッチ５８ｇを備え、タスク切替信号（ｃｈｇｔａｓｋｅｘ）が出力されるごとに、タスクｉｄを更新し、現在のタスクｉｄと次に実行すべきタスクｉｄとを命令読出回路５３に出力する。
具体的には、ラッチユニット５８ｄ、ラッチ５８ｇは、ともに現在のタスクｉｄをエンコードされた形式（３ビット）で保持する。エンコードされた形式は、その値がタスクｉｄを表す。
【００６３】
タスクラウンド管理部５８ｅは、タスク切替信号（ｃｈｇｔａｓｋｅｘ）が入力されたとき、ラッチユニット５８ｄを参照して、次に実行すべきタスクｉｄを、デコードされた形式（６ビット）で出力する。デコードされた形式（６ビット）は、１ビットが１タスクに対応し、ビット位置がタスクｉｄを表す。
プライオリティエンコーダ５８ｆは、タスクラウンド管理部５８ｅから出力されるタスクｉｄを、デコードされた形式からエンコードされた形式に変換する。上記ラッチユニット５８ｄ、ラッチ５８ｇは、ともにエンコードされたタスクｉｄを１サイクル遅れて保持する。
【００６４】
この構成により、タスクラウンド管理部５８ｅは、比較器５８ｃからタスク切替信号（ｃｈｇｔａｓｋｅｘ）が出力されたとき、プライオリティエンコーダ５８ｆから次に実行すべきタスクのｉｄを”ｎｅｘｔｔａｓｋｉｄ（ｒｄ  ａｄｄｒ）”信号として、ラッチ５８ｅから現タスクｉｄを”ｔａｓｋｉｄ（ｗｒ  ａｄｄｒ）”信号として出力する。
＜１．４  動作説明＞
以上のように構成された第１の実施形態における映像音声処理装置１０００について、その動作を説明する。
【００６５】
入出力処理部１００１において、ストリーム入力部１から非同期に入力されるＭＰＥＧストリームは、入出力プロセッサ５の制御によって、バッファメモリ２、メモリコントローラ６を介して一旦外部メモリ３に格納され、さらに、メモリコントローラ６を介してＦＩＦＯメモリ４に保持される。このときＦＩＦＯメモリ４に対して、ＩＯプロセッサ５は、上記タスク２（ｂ）、タスク３を実行することによりその残量に応じて、圧縮動画データ、圧縮音声データを供給する。これにより、ＦＩＦＯメモリ４には過不足なく一定量の圧縮動画データ、圧縮音声データが供給されるので、デコード処理部１００２は、非同期の入出力とは切り離されて、デコード処理に専従することができる。ここまでの処理は、上記入出力処理部１００１により、デコード処理部１００２とは独立に並行してなされる。
【００６６】
一方、デコード処理部１００２において、ＦＩＦＯメモリ４に保持されたＭＰＥＧストリームデータは、以降プロセッサ７、コード変換部９、画素演算部１０、画素読み書き部１１により復号される。ＦＩＦＯメモリ４以降の復号動作を示す説明図を図１５に示す。
同図では、横軸を時間軸としておおよそ１マクロブロック分のヘッダ解析及び各ブロック毎のデコードの様子を示している。また縦方向はデコード処理部１００２の各部においてブロック毎のデコードがパイプライン的に実行される様子を示している。
【００６７】
同図に示すように、プロセッサ７は、圧縮映像データのヘッダ解析と、圧縮音声データに対するデコード処理とを時分割で繰り返す。すなわち、プロセッサ７は、１マクロブロック分のヘッダ解析を行い、解析結果をコード変換部９、画素演算部１０、画素読み書き部１１に通知した後、コード変換部９に対してマクロブロックのデコード開始を指示する。その後プロセッサ７は、コード変換部９からの割込み信号が通知されるまで、圧縮音声データのデコード処理を行う。デコード後の音声データは内部メモリ８に一旦保持され、さらにメモリコントローラ６により外部メモリ３にＤＭＡ転送される。
【００６８】
また、コード変換部９は、プロセッサ７からマクロブロックのデコード開始指示を受けて、マクロブロック内の各ブロック毎にバッファ２００に格納する。このときコード変換部９は、プロセッサ７のヘッダ解析時に通知されたブロックのスキャンタイプに応じてバッファ２００への書き込みアドレスの順番を変更する。つまりジグザグスキャンの場合と、オルタネートスキャンの場合とで書き込みアドレスの順番を変更する。これにより画素演算部１０は、読み出しアドレスの順番を変更しなくてもよく、スキャンタイプに拘らず常に同じに読み出しアドレスの順番にて読み出すことができる。コード変換部９は、マクロブロック内の６つのブロックをＶＬＤ処理をし終えるまで上記動作を繰り返してバッファ２００に書き出す。６ブロックのＶＬＤを終えるとプロセッサ７に割込みを発生する。この割込み信号は、マクロブロックデコード終了信号Ｅｎｄ  Ｏｆ  Ｍａｃｒｏ  Ｂｌｏｃｋ（ＥＯＭＢ）である。コード変換部９は６つ目のブロックのブロック終了信号Ｅｎｄ  Ｏｆ  Ｂｌｏｃｋ（ＥＯＢ）を検出することによりＥＯＭＢを生成している。
【００６９】
画素演算部１０は、コード変換部９と並行して、図９に示したようにバッファ２００に格納されたブロックデータをブロック単位にＩＱ、ＩＤＣＴを施し、その処理結果をバッファ２０１に格納する。
画素読み書き部１１は、画素演算部１０と並行して、バッファ２０１のブロックデータと、プロセッサ７によるヘッダ解析により通知された動きベクトルとに基づいて、図１５に示すように外部メモリ３の参照フレームからの矩形領域の切り出しと、ブロック合成とを行う。ブロック合成結果は、ＦＩＦＯメモリ４を介して外部メモリ３に格納される。
【００７０】
上記は、スキップマクロブロックではない場合の動作であるが、スキップマクロブロックの場合にはコード変換部９及び画素演算部１０は動作せず、画素読み書き部１１のみが動作する。スキップマクロブロックがある場合には、参照フレーム中の矩形領域と同じ画像なので、画素読み書き部１１により、その画像が復号画像として外部メモリ３にコピーされることになる。
【００７１】
この場合、コード変換部９からプロセッサ７への割込み信号は次のようにして生成される。すなわち、プロセッサ７が画素読み書き部１１に対して動き補償動作の開始の制御信号を送付したことを示す信号と、画素読み書き部１１が動き補償動作が可能であることを示す信号と、スキップマクロブロックであることを示す信号との論理積を取り、さらにこの論理積と上記のＥＯＭＢ信号との論理和として割込み信号がプロセッサ７に入力される。
【００７２】
以上説明してきたように本発明の第１実施形態の映像音声処理装置によれば、記憶媒体や通信媒体からのＭＰＥＧストリーム入力処理と、表示装置及び音声出力装置への表示画像データ及び音声データの出力処理と、デコード処理部１００２へストリームを供給する処理とを入出力処理部１００１が分担し、圧縮映像データ及び圧縮音声データのデコード処理をデコード処理部１００２が分担するように構成されている。これにより、デコード処理部１００２は、非同期に発生する処理から解放されてデコード処理に専従することができる。その結果、ＭＰＥＧストリーム入力、デコード、出力という一連の処理を効率良く実行するので、高速な動作クロックを用いなくてもＭＰＥＧストリームのフルデコード（フレーム落ちなし）を実現することができる。
【００７３】
また、本映像音声処理装置は、１チップにＬＳＩ化することが望ましい。この場合、１００ＭＨｚ以下の動作クロック（実際には５４ＭＨｚ）で上記フルデコードが可能である。この点、動作クロックが１００ＭＨｚさらには２００ＭＨｚを越える近年の高性能ＣＰＵは、画像サイズが小さければ上記フルデコードを可能にしているが、その反面製造コストが高価である。これに対して、本映像音声処理装置は、製造コストの点とフルデコードの点で優れている。
【００７４】
さらに、本映像音声処理装置のデコード処理部１００２は、次のように役割分担している。
つまり、プロセッサ７が圧縮映像データに対しても圧縮音声データに対しても多岐にわたる条件判断を必要とするヘッダ解析を担当するとともに音声圧縮データのデコードも担当する。圧縮映像データのブロックデータに対しては、定型的な大量の演算量が要求されるので、コード変換部９、画素演算部１０、画素読み書き部１１という専用のハードウェア（ファームウェア）が、デコード処理を担当する。図１５に示したようにコード変換部９、画素演算部１０、画素読み書き部１１は、パイプライン化されている。画素演算部１０は、ＩＱとＩＤＣＴとが並列処理が可能になっている。画素読み書き部１１は２ブロック単位の参照フレームのアクセスを実現している。これらにより圧縮音声デコード処理の効率化が達成されているので、映像デコード専用のハードウェア部分は高速クロックを用いなくとも、高い処理能力を得ることができる。具体的には１００ＭＨｚを越える高速クロックを用いずに５０〜６０ＭＨｚ程度のクロックで従来と同程度以上の処理能力が得られた。従って、高速素子を用いる必要がなく製造コストを押さえることができる。
【００７５】
また、映像デコードの基本単位をプロセッサ７においてマクロブロック単位、コード変換部９および画素演算部１０においてブロック、画素読み書き部１１において２ブロックとしているので、映像デコードにおける緩衝バッファの容量を最小限に抑えることが可能となる。
＜２  第２の実施形態＞
本実施形態の映像音声処理装置は、圧縮ストリームデータのデコード機能に加えて、さらに、圧縮機能（以降、エンコード処理と呼ぶ）とグラフィックス機能を果たすように構成されている。
＜２．１  映像音声処理装置の構成＞
図１６は、本発明の第２の実施形態における映像音声処理装置の構成を示すブロック図である。
【００７６】
この映像音声処理装置２０００は、ストリーム入出力部２１、バッファメモリ２２、ＦＩＦＯメモリ２４、入出力プロセッサ２５、メモリコントローラ２６、プロセッサ２７、内部メモリ２８、コード変換部２９、画素演算部３０、画素読み書き部３１、ビデオ出力部１２、音声出力部１３、バッファ２００、バッファ２０１とからなる。映像音声処理装置２０００は、図４に示した映像音声処理装置１０００の機能に加えて、次の機能が付加されている。すなわち、映像データと音声データの圧縮機能と、ポリゴンデータを描画するグラフィックス機能とが付加されている。
【００７７】
そのため、映像音声処理装置２０００において、図４と同名称の構成要素は全く同じ機能を有し、さらに、圧縮機能とグラフィックス機能を果たす機能が付加されている。以下図４と同じ点は説明を省略し、異なる点を中心に説明する。
ストリーム入出力部２１は、双方向になっている点が異なる。つまり、入出力プロセッサ２５の制御によりバッファメモリ２２からＭＰＥＧデータを転送されると、転送されたパラレルデータをシリアルデータに変換して、ＭＰＥＧデータストリームとして外部に出力する。
【００７８】
バッファメモリ２２、ＦＩＦＯメモリ２４も双方向になった点が異なる。
入出力プロセッサ２５は、第１実施形態に示した（１）〜（４）に示すの経路のデータ転送を制御することに加えて、（５）〜（８）の径路の転送をも制御する。
（１）ストリーム入出力部２１→バッファメモリ２２→メモリコントローラ２６→外部メモリ３
（２）外部メモリ３→メモリコントローラ２６→ＦＩＦＯメモリ２４
（３）外部メモリ３→メモリコントローラ２６→バッファメモリ２２→ビデオ出力部１２
（４）外部メモリ３→メモリコントローラ２６→バッファメモリ２２→音声出力部１３
（５）外部メモリ３→メモリコントローラ２６→内部メモリ２８
（６）外部メモリ３→メモリコントローラ２６→画素読み書き部３１
（７）ＦＩＦＯメモリ２４→メモリコントローラ２６→外部メモリ３
（８）外部メモリ３→メモリコントローラ２６→バッファメモリ２２→ストリーム入出力部２１
（５）（６）の径路は、映像データ、音声データのエンコード処理を行う場合の元のデータの径路であり、（７）（８）は、圧縮後のＭＰＥＧストリームの径路を示す。
【００７９】
まず、エンコード処理について説明する。エンコードすべきデータは外部メモリ３に格納されているものとする。外部メモリ３の映像データは、メモリコントローラ２６を画素読み書き部３１が制御することにより画素読み書き部３１に転送される。
画素読み書き部３１は映像データを第２のバッファ２０１に書き込む処理と差分画像生成処理を行なう。差分画像生成処理は、ブロック単位の動き検出（動きベクトルの算出）と差分画像の生成とからなる。そのため、画素読み書き部３１は、符号化対象ブロックと類似する矩形領域と参照フレーム内で探索することにより動きベクトルを検出する動き検出回路を内部に有している。なお動き検出回路の代わりに、隣接するフレームの既に計算済みのブロックの動きベクトルを利用して符号化対象の動きベクトルを見積もる動き見積回路を備えるようにしてもよい。
【００８０】
画素演算部２５は、ブロック単位に差分画像データを受け取り、ＤＣＴ、ＩＤＣＴ、量子化処理（以降、Ｑ処理）、ＩＱを行なう。こうして量子化された映像データはバッファ２００に格納される。
コード変換部２９は、バッファ２００から量子化データを受け取り可変長符号処理（ＶＬＣ）を行なう。可変長符号化されたデータは先入れ先出しメモリ２４に格納され、メモリコントローラ２６を通して外部メモリ３に格納されるとともに、プロセッサ２７によりマクロブロック毎にヘッダ情報が付加される。
【００８１】
また、外部メモリ３の映像データは、メモリコントローラ２６を介して内部メモリ２８に転送される。プロセッサ２７は、マクロブロック毎にヘッダ情報を付加する処理と時分割で、内部メモリ２８の音声データの圧縮処理を行う。
以上のように、エンコード処理は、第１の実施形態と逆の径路で処理されることになる。
【００８２】
次に、グラフィックス処理について説明する。グラフィックス処理は、ポリゴンと呼ばれる矩形型図形の組合せによって行なわれる三次元画像生成処理である。本装置においてはポリゴンの頂点座標における画素データからポリゴン内部の画素データを生成する処理を行う。
最初にポリゴンの頂点データは外部メモリ３に格納されている。
【００８３】
頂点データは、プロセッサ２７がメモリコントローラ２６を制御することにより内部メモリ２８に格納される。プロセッサ２７は内部メモリ２８より頂点データを読みだしＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｃｅ  Ａｎａｌｙｚｅ）の前処理を行ないＦＩＦＯメモリ２４に書き込む。
コード変換部２９は、画素演算部３０の指示に従ってＦＩＦＯメモリ２４から頂点データを読みだし画素演算部３０に転送する。
【００８４】
画素演算部３０は、ＤＤＡ処理を行ない画素読み書き部３１に送信する。画素読み書き部３１は、プロセッサ２７の指示に従い、Ｚバッファ処理あるいはαブレンディング処理を行ないメモリコントローラ２６を介して外部メモリ３に画像データを書き出す。
＜２．１．１  画素演算部＞
図１７は、画素演算部３０の構成を示すブロック図である。
【００８５】
同図は、図７に示した画素演算部１０と同じ構成要素には同じ番号を付与し、説明を省略し、以下異なる点を中心に説明する。
異なる点は、同図のように画素演算部３０は、図７に示した画素演算部１０に対して実行部が３面（５０１ａ〜５０１ｃ）になっている点と、命令ポインタ保持部３０８と命令レジスタ３０９と分配部３１０とが追加された点とである。
【００８６】
実行部５０１ａ〜５０１ｃが３面になっているのは、演算性能を向上させるためである。具体的には、グラフィックス処理においてはカラー画像ＲＧＢを独立に並列演算する。ＩＱおよびＱ処理では、乗算器５０２を３つ用いて高速化を図っている。ＩＤＣＴにおいては乗算器５０２および加減算器５０３を複数用いることによって時間短縮を図っている。ＩＤＣＴにおいてはバタフライ演算と呼ばれる演算が存在し、これは演算の元となる全てのデータ間で依存関係があるので、実行部５０１ａ〜５０１ｃのユニット間通信を行なうデータ線１０３を設けている。
【００８７】
第１命令メモリ５０６、第２命令メモリ５０７は、ＩＤＣＴ、ＩＱに加えてＤＣＴ、Ｑ処理、ＤＤＡ用のマイクロプログラムが格納されている。図１８に、第１命令メモリ５０６、第２命令メモリ５０７の記憶内容の一例を示す。図８に比べてＱ処理マイクロプログラムと、ＤＣＴマイクロプログラムと、ＤＤＡマイクロプログラムとが追加されている。
【００８８】
命令ポインタ保持部３０８ａ〜３０８ｃは、実行部５０１ａ〜５０１ｃに対応して設けられ、それぞれ第１プログラムカウンタから入力されるアドレスを変換して命令レジスタ部３０９に出力する変換テーブルを有する。変換後のアドレスは、命令レジスタ部３０９のレジスタ番号を意味する。さらに、命令ポインタ保持部３０８ａ〜３０８ｃは、それぞれ後述するモディファイフラグを保持し命令実行部５０１ａ〜５０１ｃに出力する。
【００８９】
変換テーブルについては命令ポインタ保持部３０８ａ、３０８ｂ、３０８ｃは、例えば入力アドレスが１，２，３，４，５，６，７，８，９，１０，１１，１２である場合に、それぞれ次のような変換後アドレスを出力する。
命令ポインタ保持部３０８ａ：１，２，３，４，５，６，７，８，９，１０，１１，１２
命令ポインタ保持部３０８ｂ：２，１，４，３，６，５，８，７，１０，９，１２，１１
命令ポインタ保持部３０８ｃ：４，３，２，１，８，７，６，５，１２，１１，１０，９
命令レジスタ部３０９は、図２３に示すように、マイクロ命令を保持する複数のレジスタ３つのセレクタと３つの出力ポートとからなる。３つのセレクタは、命令ポインタ部３０８ａ、３０８ｂ、３０８ｃから入力される変換アドレス（レジスタ番号）に指定されるレジスタのマイクロ命令を選択する。３つの出力ポートは、セレクタに対応して設けられ、それぞれセレクタに選択されたマイクロ命令を分配部３１０を介して実行部５０１ａ〜５０１ｃに出力する。３つのセレクタ及び出力ポートが設けられているのは、３つの加減算器５０３（又は３つの乗算器５０２）に同時に異なるマイクロ命令を供給するためである。本実施例では３つの出力ポートは、分配部３１０を介して３つの加減算器５０３と３つの乗算器５０２の何れかに選択的に供給するものとする。
【００９０】
例えば、命令レジスタ部３０９はレジスタＲ１〜Ｒ１６（レジスタ番号１〜１６）を備えている。レジスタＲ１〜Ｒ１６に格納されているマイクロプログラムは、ＤＣＴ及びＩＤＣＴにおいて必要な行列演算処理を表し、上記の３つのレジスタ番号順のいずれによっても同一処理を行うように格納されている。つまり、上記３つの実行順をもつマイクロプログラムは、実行順序が可換な一部のマイクロ命令の順序が入れ換えられている。これは、実行部５０１ａ〜５０１ｃが並列にマイクロプログラムを実行するので、実行部５０１ａ〜５０１ｃ間でレジスタ（図外）アクセスの競合など資源干渉を回避するためである。また、上記行列演算処理は、８×８行列の乗算、転置、転送をその内容とする。
【００９１】
次に、命令レジスタ部３０９の各レジスタに格納されるマイクロ命令はニーモニック形式では、
「ｏｐ  Ｒｉ，Ｒｊ，ｄｅｓｔ，（モディファイフラグ）」
と表記される。ただし命令レジスタ部３０９のマイクロ命令は、「ｏｐとＲｉ，Ｒｊと（モディファイフラグ）」の部分だけである。「ｄｅｓｔ」の部分は命令メモリ５０６、５０７から指定される。「（モディファイフラグ）」の部分命令ポインタ保持部３０８ａ〜３０８ｃから指定される。
【００９２】
ここで、”ｏｐ”は乗算命令、加減算命令、転送命令などを示すオペレーションコード、”Ｒｉ，Ｒｊ”はオペランドである。乗算命令は、３つの実行部５０１ａ〜ｃ中の各乗算器５０２に実行される命令であり、加算命令及び転送命令は、３つの実行部５０１ａ〜ｃ中の各乗算器５０２に実行される命令である。
”ｄｅｓｔ”は演算結果の格納先を示す。この”ｄｅｓｔ”は命令レジスタ部３０９のレジスタではなく、命令メモリ５０６（乗算命令の場合）又は命令メモリ５０７（加減算命令や転送命令の場合）から指定される。これは、命令レジスタ部３０９のマイクロプログラムを実行部５０１ａ〜５０１ｃに共通化するためである。もし転送先をレジスタにより指定すれば実行部５０１ａ〜５０１ｃそれぞれに個別のマイクロプログラムを用意する必要があり、マイクロプログラムの容量が数倍に膨らむことになる。
【００９３】
”モディファイフラグ”は、加減算命令において、加算であるか減算であるかを示すフラグである。この”モディファイフラグ”は、命令レジスタ部３０９のレジスタからではなく、命令ポインタ保持部３０８ａ〜ｃから別途指定される。これは、ＤＣＴ、ＩＤＣＴでの行列演算に用いられる定数行列中に全要素が”１”の行（又は列）と全要素が”−１”行（又は列）とが含まれるので、命令ポインタ３０８ａ〜ｃから”モディファイフラグ”を指定することにより、命令レジスタ部３０９の同一マイクロプログラムを共用することを可能にしている。
【００９４】
分配部３１０は、命令レジスタ部３０９から入力される３つのマイクロ命令が加減算命令である場合には、それらの「ｏｐとＲｉ，Ｒｊ」の部分と、命令メモリ５０６から入力される「ｄｅｓｔ」の部分と、命令ポインタ部３０８ａ〜ｃから入力される「モディファイフラグ」とを３つの加減算器５０３に分配し、同時に命令メモリ５０６のマイクロ命令を３つの乗算器５０２に分配する。また、分配部３１０は、命令レジスタ部３０９から入力される３つのマイクロ命令が乗算命令である場合には、それらの「ｏｐとＲｉ，Ｒｊ」の部分とを命令メモリ５０６から入力される「ｄｅｓｔ」の部分とを３つの乗算器５０２に分配し、、命令メモリ５０７のマイクロ命令を３つの加減算器５０３に分配する。言い換えれば、分配部３１０により、３つの加減算器５０３に供給されるマイクロ命令は、３つの加減算器５０３に共通する命令については命令メモリ５０７から１つのマイクロ命令がそれぞれに供給され、３つの加減算器５０３で異なる加減算命令については命令レジスタ部３０９からの３つのマイクロ命令がそれぞれに供給される。同様に、３つの乗算器５０２に供給されるマイクロ命令は、３つの乗算器５０２に共通する命令については命令メモリ５０６からマイクロ命令が供給され、３つの乗算器５０２で異なる乗算算命令については命令レジスタ部３０９からのマイクロ命令がそれぞれに供給される。
【００９５】
画素演算部３０のこのような構成によれば、命令メモリ５０６、命令メモリ５０７の記憶容量を削減することができる。
もし、画素演算部３０が命令ポインタ保持部３０８ａ〜ｃ、命令レジスタ部３０９、分配部３１０を備えていないと仮定すると、命令メモリ５０６、命令メモリ５０７はいずれも、３つの実行部５０１ａ〜ｃに対して異なるマイクロ命令を供給するには、３つのマイクロ命令を並列に記憶しなければならない。
【００９６】
図２２に命令ポインタ保持部３０８ａ〜ｃ、命令レジスタ部３０９、分配部３１０を備えていない場合の命令メモリ５０６及び命令メモリ５０７の記憶内容の一例を示す。同図では、１６ステップのマイクロプログラムが記憶され、１つのマイクロ命令は１６ビット長としている。この場合、命令メモリ５０６と命令メモリ５０７は、３つのマイクロ命令を並列に記録することから、合計１５３６ビット（１６ステップ×１６ビット×３×２）の記憶容量を必要とする。
【００９７】
これに対して、本実施例の画素演算部３０における、命令ポインタ保持部３０８ａ〜ｃ、命令レジスタ部３０９の記憶内容の一例を図２３に示す。同図でも１６ステップのマイクロプログラムが記憶され、１マイクロ命令は１６ビットとしている。同図において、命令ポインタ保持部３０８ａ〜ｃは、それぞれ１６個のレジスタ番号（４ビット長）を記憶し、命令レジスタ部３０９は１６個のマイクロ命令を記憶する。この場合、命令ポインタ保持部３０８ａ〜ｃと命令レジスタ部３０９との記憶容量は４４８ビット（１６ステップ×（１２＋１６））でよい。このように画素演算部３０では、マイクロプログラムの記憶容量を大幅に削減することができる。実際には、「ｄｅｓｔ」「モディファイフラグ」が別途発行されるようにしているので、その分の記録容量又は回路が必要である。また、命令メモリ５０６、５０７はマイクロ命令中の「ｄｅｓｔ」を指定し、また、実行部５０１ａ〜ｃに共通する乗算命令、加減算命令を発行するようにしているので、命令メモリ５０６、５０７を完全に削除することまではしていない。もし、命令レジスタ部３０９に６つの出力ポートを設ければ、命令メモリ５０６と命令メモリ５０７とを削除することも可能になる。
【００９８】
なお、図２３では、命令ポインタ保持部３０８ａ〜３０８ｃは、第１プログラムカウンタの値が０〜１５の場合に、変換アドレス（レジスタ番号）を出力しているが、これに限らない。例えば第１プログラムカウンタの値が３２〜４７の場合に変換アドレスを出力するようにしてもよい。この場合、第１プログラムカウンタの値に適切なオフセット値を加える構成とすればよい。これにより、第１プログラムカウンタが示す任意のアドレス列を変換アドレスに変換することができる。
【００９９】
以上の構成により、本実施形態では圧縮映像データと圧縮音声データのデコード処理だけでなく、映像および音声データのエンコード処理と、ポリゴンデータに基づくグラフィックス処理とが可能となっている。また、複数の実行部の並列動作により処理効率が向上している。しかも、命令レジスタ部３０８ａ〜３０８ｃにおいて一部のマイクロ命令の順序を入れ換えたことにより、複数の実行部間の資源干渉を回避することができるので、さらに処理効率を向上させている。
【０１００】
なお、上記実施形態では３つの実行部を有する構成を示しているのは、ＲＧＢカラーのそれぞれを独立に演算できる点で有利だからである。さらに実行部の数は、３つ以上あればいくつでもよい。
また、上記実施形態において映像音声処理装置１０００、２０００は、それぞれ１チップＬＳＩ化することが望ましい。さらに外部メモリ３は、チップ外部であるものとして説明したが、１チップ内に内臓する構成としてもよい。
【０１０１】
また、上記実施形態では外部メモリに対してストリーム入出力部１（あるいはストリーム入出力部２１）が、ＭＰＥＧストリーム（あるいは映像音声データ）を格納していたが、ホストプロセッサが直接外部メモリ３に格納するように構成してもよい。
さらに、上記実施形態においてＩＯプロセッサ５は、４命令サイクル毎にタスク切替えを行っているが、４命令サイクル以外の複数命令サイクル毎であってもよい。また、タスク切替えの命令サイクル数は、タスク毎に予め重み付けをして異なる命令サイクル数にしておいてもよい。また優先度・緊急度に応じてタスク毎の命令サイクル数に重み付けを行ってもよい。
【０１０２】
【発明の効果】
本発明の映像音声処理装置は、圧縮音声データと圧縮映像データとを含むデータストリームを外部から入力、デコードし、デコードしたデータを出力装置に出力する映像音声処理装置であって、外部要因により非同期に発生する入出力処理を行う入出力処理手段と、前記入出力処理と並行して、メモリに格納されたデータストリームのデコードを主とするデコード処理を行うデコード処理手段とを備え、前記デコード処理手段によりデコードされた映像データ、デコードされた音声データはメモリに格納され、前記入出力処理は、外部から非同期に入力される前記データストリームを入力し、さらにメモリに格納することと、メモリに格納されたデータストリームをデコード処理手段に供給することと、外部の表示装置、音声出力装置それぞれの出力レートに合わせてメモリから読み出し、それらに出力することとを入出力処理として行うように構成されている。
【０１０３】
この構成によれば、入出力処理手段とデコード処理手段とがパイプライン的に並列動作することに加えて、非同期処理とデコード処理とを入出力処理手段とデコード処理手段とに分担させるので、デコード処理手段は非同期に発生する処理から解放されてデコード処理に専従することができる。その結果、本映像音声処理装置は、ストリームデータ入力、デコード、出力という一連の処理を効率良く実行するので、ストリームデータのフルデコード（フレーム落ちなし）を高速な動作クロックを用いなくても可能にしている。
【０１０４】
また、前記デコード処理手段は、データストリームに対して、条件判断を主とする逐次処理であって、圧縮音声データ及び圧縮映像データのヘッダ解析と、圧縮音声データのデコードとを含む逐次処理を行なう逐次処理手段と、前記逐次処理と並行して、定型処理を行う。定型処理は、圧縮映像データのヘッダ解析を除く圧縮映像データのデコードである定型処理手段とを備える構成としてもよい。
【０１０５】
この構成によれば、処理特性の異なる逐次処理と並列処理に適した定型処理とを１つのユニットに併存させることを解消することにより、処理効率を大幅に向上させることができる。特に、定型処理手段の処理効率を向上させることができる。なぜなら本映像音声処理装置において、定型処理手段は上記の非同期処理及び逐次処理から解放されたことから、圧縮映像データのデコードに要求される定型的な種々演算のみに専従できるるからである。その結果、高速な動作クロックを用いなくても高い処理能力を得ることができる。
【０１０６】
さらに、前記入出力処理手段は、外部から非同期データストリームを入力する入力手段と、外部の表示装置にデコードされた映像データを出力する映像出力手段と、外部の音声出力装置にデコードされた音声データを出力する音声出力手段と、命令メモリに格納された第１から第４のタスクを切替えながら実行するプロセッサとを有し、前記第１タスクは入力部から前記メモリにデータストリームを転送するプログラムであり、前記第２タスクは前記メモリからデコード処理手段にデータストリームを供給するプログラムであり、前記第３タスクは前記メモリから映像出力部にデコードされた映像データを出力するプログラムであり、前記第４タスクは前記メモリから音声出力部にデコードされた音声データを出力するプログラムであると構成してもよい。
【０１０７】
ここで、前記プロセッサは、前記第１から第４タスクに対応する少なくとも４つのプログラムカウンタを有するプログラムカウンタ部と、１つのプログラムカウンタが指す命令アドレスを用いて、各タスクプログラムを記憶する命令メモリから命令を取り出す命令フェッチ部と、命令取出部に取出された命令を実行する命令実行部と、所定数の命令サイクルが経過する毎に、命令フェッチ部に対してプログラムカウンタを順次切替えるように制御するタスク制御部とを有する構成としてもよい。
【０１０８】
この構成によれば、外部装置により定まるストリームデータの入力レート及び入力周期、外部表示装置、外部音声出力装置により定まる映像データ、音声データそれぞれの出力レート及び出力周期がどのような範囲であっても、入出力要求に対する応答遅延が極めて小さいという効果がある。
また、本発明の映像音声処理装置は、圧縮音声データと圧縮映像データとを含むデータストリームを入力する入力手段と、データストリームに対して、条件判断を主とする逐次処理であって、データストリーム中の所定ブロック単位に付加されたヘッダ情報の解析と、データストリーム中の圧縮音声データの復号とを行なう逐次処理手段と、定型演算を主とする定型処理であって、ヘッダ解析の結果を用いてデータストリーム中の圧縮映像データを、前記逐次処理と並行して、所定ブロック単位に復号する定型処理手段とを備え、前記逐次処理手段は前記所定ブロックのヘッダ解析が終了したとき、定型処理手段に当該所定ブロックのデコード開始を指示し、定型処理手段から所定ブロックのデコード終了通知を受けたとき、次の所定ブロックのヘッダ解析を開始するように構成してもよい。
【０１０９】
この構成によれば、逐次処理手段が圧縮映像データに対しても圧縮音声データに対しても多岐にわたる条件判断を必要とするヘッダ解析を担当するとともに音声圧縮データのデコードも担当する。一方、定型処理手段は、圧縮映像データのブロックデータに対する、定型的な大量の演算量を担当する。このような役割分担により、また逐次処理手段は映像デコードに比較して演算量が少ない音声デコード全般と、圧縮映像データのヘッダ解析と、定型処理手段の制御とを行う。その制御の下で、定型処理手段は、専ら定型的な演算を行うので、無駄のない効率的な処理を実現できる。それゆえ高い周波数で動作させなくても処理能力を得ることができ、製造コストを低減させることができる。また、逐次処理手段は、音声デコード全般と、圧縮映像データのヘッダ解析と、定型処理手段の制御とを順次行うので、１プロセッサにて構成できる。
【０１１０】
また、前記定型処理手段は、逐次処理手段の指示に従ってデータストリーム中の圧縮映像データを可変長復号するデータ変換手段と、可変長復号により得られた映像ブロックに対して、所定の演算を施すことにより逆量子化および逆離散余弦変換を行う演算手段と、逆離散余弦変換後の映像ブロックと復号済みのブロックを合成することにより動き補償処理を行って映像データを復元する合成手段とを有し、
前記逐次処理手段は、データ変換手段により可変長復号されたヘッダ情報を取得する取得手段と、取得されたヘッダ情報を解析する解析手段と、解析結果として得られるパラメータを定型処理手段に通知する通知手段と、入力手段により入力されたデータストリーム中の圧縮音声データを復号する音声復号手段と、前記定型処理手段から所定ブロックのデコード完了を通知する割込み信号を受けたとき、音声復号手段の動作を停止するとともに取得手段を起動し、前記通知手段が前記通知をしたとき、前記データ変換手段に映像ブロックの可変長復号の開始を指示する制御手段とを有するように構成してもよい。
【０１１１】
この構成によれば、マクロブロックなど所定ブロック単位に逐次処理手段は、ヘッダ解析を行った後音声デコードを行い、定型処理手段により所定ブロックのデコードが完了したとき次のブロックのヘッダ解析を開始する。このように逐次処理手段は時分割でヘッダ解析と音声デコードとを繰り返すので１個のプロセッサにて低コストで実現することができる。また、定型処理手段は多岐にわたる条件判断処理をする必要がないので、低コストで専用ハードウェア（或はハードウェアとファームウェア）化することができる。
【０１１２】
ここで、前記演算手段は、さらに１ブロックに相当する記憶領域を有する第１バッファを有し、前記データ変換手段は、データストリーム中の圧縮映像データを可変長復号する可変長復号手段と、第１バッファの記憶領域のアドレスをジグザグスキャン順に並べた第１アドレス列を記憶する第１アドレステーブル手段と、第１バッファの記憶領域のアドレスをオルタネートスキャン順に並べた第２アドレス列を記憶する第２アドレステーブル手段と、第１アドレス列と第２アドレス列の一方に従って、可変長復号手段の可変長復号により得られるブロックデータを第１バッファに書き込む書き込み手段とを有する構成としてもよい。
【０１１３】
この構成によれば、書込み手段は、ジグザグスキャンとオルタネートスキャンのどちらにも対応して、第１バッファの記憶領域にブロックデータを書き込むことができる。従って演算手段は、第１バッファの記憶領域からブロックデータ読み出すときに、読み出しアドレスの順番を変更しなくてもよく、スキャンタイプに拘らず常に同じに読み出しアドレスの順番にて読み出すことができる。
【０１１４】
さらに、前記解析手段は、ヘッダ情報に基づいて量子化スケールと動きベクトルとを算出し、前記通知手段は、量子化スケールを演算手段に、動きベクトルを合成手段に通知するように構成してもよい。
この構成によれば、動きベクトルの算出を逐次処理手段に担当させることができ、合成手段は算出された動きベクトルを用いて定型的に動き補償処理を行うことができる。。
【０１１５】
また、前記演算手段は、それぞれマイクロプログラムを記憶する第１、第２の制御記憶部と、第１制御記憶部に第１読出アドレスを指定する第１プログラムカウンタと、第２読出アドレスを指定する第２プログラムカウンタと、第１読出アドレスと第２読出アドレスとの一方を選択して第２制御記憶部に出力するセレクタと、乗算器と加算器とを有し、第１、第２制御記憶部によるマイクロプログラム制御によりブロック単位の逆量子化と逆離散余弦変換とを実行する実行部と
を有する構成としてもよい。
【０１１６】
この構成によれば、マイクロプログラム（ファームウェア）は多岐にわたる条件判断処理を行う必要がなく、定型的な処理を実現するだけなのでプログラムサイズが小さくかつ作成が容易であり、低コスト化に適している。しかも、２つのプログラムカウンタを使用して乗算器と加算器とを独立して並列に動作させることができる。
【０１１７】
さらに、前記実行部は、セレクタにより第２読出アドレスが選択されたとき、乗算器を用いた処理と加算器を用いた処理とを独立並行して行い、セレクタにより第１読出アドレスが選択されたとき、乗算器を用いた処理と加算器を用いた処理とを連動させて行うよう構成してもよい。
この構成によれば、乗算器及び加算器の遊び時間を減らして処理効率を向上させることができる。
【０１１８】
ここで、前記演算手段は、さらに、データ変換手段からの映像ブロックを保持する第１バッファと、実行部により逆離散余弦変換されたブロックを保持する第２バッファとを有し、前記第１制御記憶部は、逆量子化処理するマイクロプログラムと、逆離散余弦変換するマイクロプログラムとを記憶し、前記第２制御記憶部は、逆離散余弦変換するマイクロプログラムと、逆離散余弦変換された映像ブロックを第２バッファに転送するマイクロプログラムとを記憶し、前記実行手段は、逆離散余弦変換された映像ブロックを第２バッファに転送する処理と、次の映像ブロックを逆量子化する処理とを並列に実行し、逆量子化された当該映像ブロックを逆離散余弦変換する処理を乗算器と加算器とを連動させて実行するように構成してもよい。
【０１１９】
この構成によれば、逆量子化処理と第２バッファへの転送処理とを並列実行するので処理効率を向上させることができる。
また、前記入力手段は、さらにポリゴンデータを入力し、前記逐次処理手段は、さらにポリゴンデータを解析してポリゴンの頂点座標とエッジの傾きとを算出し、前記定型処理手段は、さらに算出された頂点座標と傾きと従って、前記ポリゴンの画像データを生成するように構成してもよい。
【０１２０】
この構成によれば、逐次処理手段はポリゴンデータの解析を担当し、定型処理手段は定型的な画像データ生成処理を担当する。本映像音声処理装置は、効率よくポリゴンデータから画像データを生成するグラフィックス処理を行うことができる。
ここで、前記第１、第２制御記憶部は、さらにＤＤＡアルゴリズムによる走査変換を行うマイクロブログラムを記憶し、前記実行部は、さらに逐次処理手段により算出された頂点座標と傾きとに基づいてマイクロプログラム制御により走査変換を行うように構成してもよい。
【０１２１】
この構成によれば、画像データの生成は前記第１、第２制御記憶部に走査変換マイクロプログラムにより簡単に実現することができる。
また、前記合成手段はさらに圧縮すべき映像データから差分画像を表す差分ブロックを生成し、前記第２バッファはさらに生成された差分画像を保持し、第１制御記憶部はさらに離散余弦変換するマイクロプログラムと量子化処理するマイクロプログラムとを記憶し、第２制御記憶部はさらに離散余弦変換するマイクロプログラムと離散余弦変換された映像ブロックを第１バッファに転送するマイクロプログラムとを記憶し、前記実行手段はさらに第２バッファに保持された差分ブロックに対して離散余弦変換と量子化を実行して第１バッファに転送し、前記データ変換手段はさらに第１バッファのブロックに対して可変長符号化を行い、前記逐次処理手段はさらにデータ変換手段により可変長符号化された所定のブロックに対してヘッダ情報を付加するように構成してもよい。
【０１２２】
この構成によれば、定型処理手段は定型的な処理として量子化と離散余弦変換を担当し、逐次処理手段は条件判断を要する処理（ヘッダ情報の付加）を担当する。この場合、本映像音声処理装置は、高速クロックを用いなくても画像データから圧縮映像データへのエンコード処理を効率よく実行することができる。
また、前記演算手段は、それぞれマイクロプログラムを記憶する第１、第２の制御記憶部と、第１制御記憶部に第１読出アドレスを指定する第１プログラムカウンタと、第２読出アドレスを指定する第２プログラムカウンタと、第１読出アドレスと第２読出アドレスとの一方を選択して第２制御記憶部に出力するセレクタと、乗算器と加算器とをそれぞれ有し、第１、第２制御記憶部によるマイクロプログラム制御によりブロック単位の逆量子化と逆離散余弦変換とを実行する複数の実行部とを備え、各実行部は、ブロックを分割した部分ブロックを分担して処理するように構成してもよい。
【０１２３】
この構成によれば、複数の実行部が並列に演算命令を実行するので、定型的な大量の演算を画素レベルで並列化して効率よく実行することができる。
また、前記演算手段は、さらに、各実行部に対応して設けられ、各変換テーブルは所定のアドレス列に対応して部分的にアドレス順序を入れ換えた変換アドレス保持する複数のアドレス変換テーブルと、所定の演算を実現するマイクロプログラムを構成する個々のマイクロ命令を変換アドレスに対応させて記憶する複数レジスタからなる命令レジスタ群と、第１及び第２制御記憶部と複数の実行部との間に設けられ、第１制御記憶部又はセレクタから各実行部に出力されるマイクロ命令を、命令レジスタのマイクロ命令に切り替えて複数の実行部に出力する切り替え部とを備え、前記第１読出アドレス又は第２読出アドレスが前記所定のアドレス列の中のアドレスである場合、そのアドレスは前記各アドレス変換テーブルによって変換アドレスに変換される。前記命令レジスタ群は、変換テーブルから出力された各変換アドレスに対応するマイクロ命令を出力するように構成してもよい。
【０１２４】
この構成によれば、複数の実行部が並列にマイクロプログラムを実行する間、実行部間でアクセスの競合など資源干渉を回避して、さらに効率よく処理することができる。
ここで、前記各変換テーブルは、さらに第１プログラムカウンタが前記所定のアドレス列中の第１読出アドレスを出力する間、前記レジスタ中の加減算を示すマイクロ命令出力に伴って、加算すべきか減算すべきかを示すフラグを前記複数の実行部に出力し、前記各実行部は、前記フラグに従って加減算を実行し、前記フラグは、前記第２制御記憶部のマイクロ命令に従って設定されるように構成してもよい。
【０１２５】
この構成によれば、マイクロ命令により加算を行うか減算を行うかを変換テーブルが指定するので、同じマイクロプログラムを２通りに共用できるので、さらに、マイクロプログラムの全容量を低減させることができ、ハードウェア規模の低減、ひいては低コスト化を実現できる。
また、前記第２制御記憶部は、さらに第１プログラムカウンタが前記所定のアドレス列中の第１読出アドレスを出力する間、前記レジスタ中のマイクロ命令出力に伴って、マイクロ命令実行結果の格納先を示す情報を前記複数の実行部に出力し、前記各実行部は、格納先情報に従って実行結果を格納するように構成してもよい。
【０１２６】
この構成によれば、格納先情報は、命令レジスタ群中のマイクロプログラムと別個に指定できるので、当該マイクロプロラムを異なる処理例えば行列演算の部分的な処理において共用することができる。その結果、さらに、マイクロプログラムの全容量を低減させることができ、ハードウェア規模の低減、ひいては低コスト化を実現できる。
【図面の簡単な説明】
【図１】第１の従来技術における映像音声デコーダによるデコード処理の説明図を示す。
【図２】第２の従来技術における２チップ構成のデコーダによるデコード処理の説明図を示す。
【図３】本発明の第１の実施形態における画像処理装置の概略構成を示すブロック図である。
【図４】本発明の第１の実施形態における画像処理装置の構成を示すブロック図である。
【図５】ＭＰＥＧストリームを階層的に示すとともに画像処理装置各部の動作タイミングを示す図である。
【図６】プロセッサ７によるマクロブロックヘッダの解析と、他の各部への制御内容とを示す図である。
【図７】画素演算部１０の構成を示すブロック図である。
【図８】第１命令メモリ５０６及び第２命令メモリ５０７に記憶されたマイクロプログラムの一例を示す。
【図９】画素演算部１０の動作タイミングを示す図である。
【図１０】画素読み書き部１１の詳細な構成を示すブロック図である。
【図１１】ＩＯプロセッサ５の構成を示すブロック図である。
【図１２】命令読出回路５３の詳細な構成例を示すブロック図である。
【図１３】ＩＯプロセッサ５の動作タイミングを示すタイムチャートである。
【図１４】タスク管理部の構成を示すブロック図である。
【図１５】ＦＩＦＯメモリ４以降の復号動作を示す説明図である。
【図１６】本発明の第２の実施形態のおける画像処理装置の構成を示すブロック図である。
【図１７】画素演算部３０の構成を示すブロック図である。
【図１８】第１命令メモリ５０６、第２命令メモリ５０７の記憶内容の一例を示す。
【図１９】コード変換部９の構成を示すブロック図である。
【図２０】８×８個の空間周波数データを記憶するブロック記憶領域と、ジグザグスキャンの順路を示す。
【図２１】８×８個の空間周波数データを記憶するブロック記憶領域と、オルタネートスキャンの順路を示す。
【図２２】命令ポインタ保持部３０８ａ〜ｃ、命令レジスタ部３０９、分配部３１０を備えていない場合の命令メモリ５０６及び命令メモリ５０７の記憶内容の一例を示す。
【図２３】命令ポインタ保持部３０８ａ〜ｃ、命令レジスタ部３０９の記憶内容の一例を示す。
【符号の説明】
１    ストリーム入力部
２    バッファメモリ
３    外部メモリ
４    ＦＩＦＯメモリ
５    入出力プロセッサ
５ａ  ＤＭＡＣ
６    メモリコントローラ
７    プロセッサ
８    内部メモリ
９    コード変換部
１０    画素演算部
１２    ビデオ出力部
１３    音声出力部
１４    ホストＩ／Ｆ部
１０００    映像音声処理装置
１００１    入出力処理部
１００２    デコード処理部
１００３    逐次処理部
１００４    定型処理部
【図１】
0003589565.tif 000002
【図２】
0003589565.tif 000003
【図３】
0003589565.tif 000004
【図４】
0003589565.tif 000005
【図５】
0003589565.tif 000006
【図６】
0003589565.tif 000007
【図７】
0003589565.tif 000008
【図８】
0003589565.tif 000009
【図９】
0003589565.tif 000010
【図１０】
0003589565.tif 000011
【図１１】
0003589565.tif 000012
【図１２】
0003589565.tif 000013
【図１３】
0003589565.tif 000014
【図１４】
0003589565.tif 000015
【図１５】
0003589565.tif 000016
【図１６】
0003589565.tif 000017
【図１７】
0003589565.tif 000018
【図１８】
0003589565.tif 000019
【図１９】
0003589565.tif 000020
【図２０】
0003589565.tif 000021
【図２１】
0003589565.tif 000022
【図２２】
0003589565.tif 000023
【図２３】
0003589565.tif 000024