JP3724202B2 - Image data processing apparatus and method, and recording medium - Google Patents
Image data processing apparatus and method, and recording medium Download PDFInfo
- Publication number
- JP3724202B2 JP3724202B2 JP20015698A JP20015698A JP3724202B2 JP 3724202 B2 JP3724202 B2 JP 3724202B2 JP 20015698 A JP20015698 A JP 20015698A JP 20015698 A JP20015698 A JP 20015698A JP 3724202 B2 JP3724202 B2 JP 3724202B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- encoding
- picture
- parameter
- history
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、画像データ処理装置および方法、並びに記録媒体に関し、特に、動画像信号を、例えば光磁気ディスクや磁気テープなどの記録媒体に記録し、これを再生して、ステレオ視が可能なディスプレイなどに表示したり、テレビ会議システム、テレビ電話システム、放送用機器など、動画像信号を伝送路を介して送信側から受信側に伝送し、受信側において、これを受信して表示する場合などに用いて好適な画像データ処理装置および方法、並びに記録媒体に関する。
【0002】
【従来の技術】
例えば、テレビ会議システム、テレビ電話システムなどのように、動画像信号を遠隔地に伝送するシステムにおいては、伝送路を効率良く利用するため、映像信号のライン相関やフレーム間相関が利用されて、画像信号が圧縮符号化される。
【0003】
画像信号が圧縮符号化される場合、生成されるビットストリームが、所定のビットレートになるように符号化が行われる。しかしながら、実運用上において、伝送路の都合により、ビットストリームのビットレートを変換する必要が生じることがある。このような場合、図68に示すようなトランスコーダ131により、符号化されている情報を一旦復号し、ビットレートが所定の値になるように、再び符号化する方法が一般的である。図68の例の場合、10Mbpsで送られてきたビットストリームが、復号装置132により復号され、デジタルビデオ信号として符号化装置133に供給され、符号化装置133により、ビットレートが5Mbpsであるビットストリームに符号化されて出力される。
【0004】
【発明が解決しようとする課題】
このように映像信号を再符号化する場合、符号化装置133には、図69に示すように、映像信号のライン相関やフレーム間相関を検出する動き検出部134が必要となり、符号化装置133の規模が大きくなる課題があった。
【0005】
また、例えば放送局においては、映像の編集が秒単位で行われるので、フレームの画像情報が他のフレームの画像情報と独立しているほうがよい。そこで、図70に示すように、低いビットレート(3乃至9Mbps)で転送しても画質が劣化しないように、情報が相関関係にあるフレームの集合であるGOP(Group of Picture)を構成するフレーム数が多いLong GOPの符号化装置133−1から出力されたビットストリームは、放送局の符号化装置133−2により、GOPを構成するフレーム数が少ないShort GOPに変換されて高ビットレート(18乃至50Mbps)で伝送され、編集終了後、符号化装置133−3により、再度Long GOPに変換されて出力される。このように、画像情報に符号化、復号が繰り返されると、符号化の度に使用される符号化パラメータが変化するので画像情報が劣化する課題があった。
【0006】
本発明はこのような状況に鑑みてなされたものであり、過去に演算した動きベクトルを用いて再符号化を行うことにより、装置の規模を小さくするとともに、再符号化に伴う画像の劣化を抑制することを可能とするものである。
【0007】
【課題を解決するための手段】
本発明の画像データ処理装置は、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータを抽出するとともに、第1の符号化パラメータを用いて第1のビットストリームを画像データに復号する復号手段と、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出手段と、復号手段により抽出された第1の符号化パラメータ及び履歴情報抽出手段により抽出された第1の履歴情報に含まれる第1の履歴符号化パラメータを、復号手段により復号された画像データとともに出力する出力手段と、出力手段により出力された第1の符号化パラメータ及び第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、出力手段により出力された画像データを取得する取得手段と、出力手段により出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、取得手段により取得された再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成手段と、取得手段により取得された再利用符号化パラメータに基づいて、取得手段により取得された画像データを符号化して第2のビットストリームを生成するとともに、取得手段により取得された再利用符号化パラメータ及び履歴情報抽出手段により抽出された第2の履歴情報を、生成された第2のビットストリームに多重化する符号化手段とを備えることを特徴とする。
【0008】
本発明の画像データ処理方法は、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータを抽出するとともに、第1の符号化パラメータを用いて第1のビットストリームを画像データに復号する復号ステップと、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出ステップと、復号ステップの処理により抽出された第1の符号化パラメータ及び履歴情報抽出ステップの処理により抽出された第1の履歴情報に含まれる第1の履歴符号化パラメータを、復号ステップの処理により復号された画像データとともに出力する出力ステップと、出力ステップの処理により出力された第1の符号化パラメータ及び第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、出力ステップにより出力された画像データを取得する取得ステップと、出力ステップの処理により出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、取得ステップの処理により取得された再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成ステップと、取得ステップの処理により取得された再利用符号化パラメータに基づいて、取得ステップの処理により取得された画像データを符号化して第2のビットストリームを生成するとともに、取得ステップの処理により取得された再利用符号化パラメータ及び履歴情報生成ステップにより生成された第2の履歴情報を、生成された第2のビットストリームに多重化する符号化ステップとを含むことを特徴とする。
【0009】
本発明の記録媒体は、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータを抽出するとともに、第1の符号化パラメータを用いて第1のビットストリームを画像データに復号する復号ステップと、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出ステップと、復号ステップの処理により抽出された第1の符号化パラメータ及び履歴情報抽出ステップの処理により抽出された第1の履歴情報に含まれる第1の履歴符号化パラメータを、復号ステップの処理により復号された画像データとともに出力する出力ステップと、出力ステップの処理により出力された第1の符号化パラメータ及び第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための再符号化パラメータを再利用符号化パラメータとして取得するとともに、出力ステップにより出力された画像データを取得する取得ステップと、出力ステップの処理により出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、取得ステップの処理により取得された再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成ステップと、取得ステップの処理により取得された再利用符号化パラメータに基づいて、取得ステップの処理により取得された画像データを符号化して第2のビットストリームを生成するとともに、取得ステップの処理により取得された再利用符号化パラメータ及び履歴情報生成ステップにより生成された第2の履歴情報を、生成された第2のビットストリームに多重化する符号化ステップとを含む処理を実行させるためのコンピュータ読み取り可能なプログラムを記録していることを特徴とする。
【0010】
本発明の画像データ処理装置および方法、並びに記録媒体においては、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータが抽出され、第1の符号化パラメータを用いて第1のビットストリームが復号され、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報が抽出され、抽出された第1の符号化パラメータ及び抽出された第1の履歴情報に含まれる第1の履歴符号化パラメータが復号された画像データとともに出力され、出力された第1の符号化パラメータ及び第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための再利用符号化パラメータが取得され、出力された画像データが取得され、出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報が生成され、取得された再利用符号化パラメータに基づいて、画像データが符号化され、第2のビットストリームが生成されるとともに、生成された第2のビットストリームに、再利用符号化パラメータ及び第2の履歴情報が多重化される。
【0011】
【発明の実施の形態】
以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態(但し一例)を付加して本発明の特徴を記述すると、次のようになる。
【0012】
本発明の画像データ処理装置は、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータを抽出するとともに、第1の符号化パラメータを用いて第1のビットストリームを画像データに復号する復号手段(例えば、図15の復号装置102)と、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから前記第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出手段(例えば、図15の履歴復号装置104)と、復号手段により抽出された第1の符号化パラメータ及び履歴情報抽出手段により抽出された第1の履歴情報に含まれる第1の履歴符号化パラメータを、復号手段により復号された画像データとともに出力する出力手段(例えば、図15の符号化パラメータ多重装置103)と、出力手段により出力された第1の符号化パラメータ及び第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、出力手段により出力された画像データを取得する取得手段(例えば、図15の符号化パラメータ分離装置105)と、出力手段により出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、取得手段により取得された再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成手段(例えば、図15の履歴符号化装置107)と、取得手段により取得された再利用符号化パラメータに基づいて、取得手段により取得された画像データを符号化して第2のビットストリームを生成するとともに、取得手段により取得された再利用符号化パラメータ及び前記履歴情報生成手段により生成された第2の履歴情報を、生成された第2のビットストリームに多重化する符号化手段(例えば、図15の符号化装置106)とを備えることを特徴とする。
【0013】
但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。
【0014】
本発明を適用したトランスコーダについて説明する前に、動画像信号の圧縮符号化について説明する。なお、本明細書においてシステムの用語は、複数の装置、手段などにより構成される全体的な装置を意味するものである。
【0015】
例えば、テレビ会議システム、テレビ電話システムなどのように、動画像信号を遠隔地に伝送するシステムにおいては、伝送路を効率良く利用するため、映像信号のライン相関やフレーム間相関を利用して、画像信号を圧縮符号化するようになされている。
【0016】
ライン相関を利用すると、画像信号を、例えばDCT(離散コサイン変換)処理するなどして圧縮することができる。
【0017】
また、フレーム間相関を利用すると、画像信号をさらに圧縮して符号化することが可能となる。例えば図1に示すように、時刻t1乃至t3において、フレーム画像PC1乃至PC3がそれぞれ発生している場合、フレーム画像PC1およびPC2の画像信号の差を演算して、PC12を生成し、また、フレーム画像PC2およびPC3の差を演算して、PC23を生成する。通常、時間的に隣接するフレームの画像は、それ程大きな変化を有していないため、両者の差を演算すると、その差分信号は小さな値のものとなる。そこで、この差分信号を符号化すれば、符号量を圧縮することができる。
【0018】
しかしながら、差分信号のみを伝送したのでは、元の画像を復元することができない。そこで、各フレームの画像を、Iピクチャ、PピクチャまたはBピクチャの3種類のピクチャタイプのいずれかとし、画像信号を圧縮符号化するようにしている。
【0019】
すなわち、例えば図2に示すように、フレームF1乃至F17までの17フレームの画像信号をグループオブピクチャ(GOP)とし、処理の1単位とする。そして、その先頭のフレームF1の画像信号はIピクチャとして符号化し、第2番目のフレームF2はBピクチャとして、また第3番目のフレームF3はPピクチャとして、それぞれ処理する。以下、第4番目以降のフレームF4乃至F17は、BピクチャまたはPピクチャとして交互に処理する。
【0020】
Iピクチャの画像信号としては、その1フレーム分の画像信号をそのまま伝送する。これに対して、Pピクチャの画像信号としては、基本的には、図2に示すように、それより時間的に先行するIピクチャまたはPピクチャの画像信号からの差分を伝送する。さらにBピクチャの画像信号としては、基本的には、図3に示すように、時間的に先行するフレームまたは後行するフレームの両方の平均値からの差分を求め、その差分を符号化する。
【0021】
図4は、このようにして、動画像信号を符号化する方法の原理を示している。同図に示すように、最初のフレームF1は、Iピクチャとして処理されるため、そのまま伝送データF1Xとして伝送路に伝送される(画像内符号化)。これに対して、第2のフレームF2は、Bピクチャとして処理されるため、時間的に先行するフレームF1と、時間的に後行するフレームF3の平均値との差分が演算され、その差分が伝送データF2Xとして伝送される。
【0022】
ただし、このBピクチャとしての処理は、さらに細かく説明すると、4種類存在する。その第1の処理は、元のフレームF2のデータをそのまま伝送データF2Xとして伝送するものであり(SP1)(イントラ符号化)、Iピクチャにおける場合と同様の処理となる。第2の処理は、時間的に後のフレームF3からの差分を演算し、その差分(SP2)を伝送するものである(後方予測符号化)。第3の処理は、時間的に先行するフレームF1との差分(SP3)を伝送するものである(前方予測符号化)。さらに第4の処理は、時間的に先行するフレームF1と後行するフレームF3の平均値との差分(SP4)を生成し、これを伝送データF2Xとして伝送するものである(両方向予測符号化)。
【0023】
実際には、上述した4つの方法のうちの伝送データが最も少なくなる方法が採用される。
【0024】
なお、差分データを伝送するとき、差分を演算する対象となるフレームの画像(予測画像)との間の動きベクトルx1(フレームF1とF2の間の動きベクトル)(前方予測の場合)、もしくはx2(フレームF3とF2の間の動きベクトル)(後方予測の場合)、またはx1とx2の両方(両方向予測の場合)が、差分データとともに伝送される。
【0025】
また、PピクチャのフレームF3は、時間的に先行するフレームF1を予測画像として、このフレームとの差分信号(SP3)と、動きベクトルx3が演算され、これが伝送データF3Xとして伝送される(前方予測符号化)。あるいはまた、元のフレームF3のデータが、そのままデータF3Xとして伝送される(SP1)(イントラ符号化)。いずれの方法により伝送されるかは、Bピクチャにおける場合と同様に、伝送データがより少なくなる方法が選択される。
【0026】
図5は、上述した原理に基づいて、動画像信号を符号化して伝送し、これを復号化する装置の構成例を示している。符号化装置1は、入力された映像信号を符号化し、伝送路としての記録媒体3に伝送するようになされている。そして、復号装置2は、記録媒体3に記録された信号を再生し、これを復号して出力するようになされている。
【0027】
符号化装置1においては、入力された映像信号が前処理回路11に入力され、そこで輝度信号と色信号(本実施の形態の場合、色差信号)が分離され、それぞれA/D変換器12,13でアナログ信号がデジタル信号に変換される。A/D変換器12,13によりデジタル信号に変換された映像信号は、フレームメモリ14に供給され、記憶される。フレームメモリ14は、輝度信号を輝度信号フレームメモリ15に、また、色差信号を色差信号フレームメモリ16に、それぞれ記憶させる。
【0028】
フォーマット変換回路17は、フレームメモリ14に記憶されたフレームフォーマットの信号を、ブロックフォーマットの信号に変換する。すなわち、図6に示すように、フレームメモリ14に記憶された映像信号は、1ライン当りHドットのラインがVライン集められた、図6(A)に示すようなフレームフォーマットのデータとされている。フォーマット変換回路17は、この1フレームの信号を、図6(B)に示すように、16ラインを単位としてM個のスライスに区分する。そして、各スライスは、M個のマクロブロックに分割される。マクロブロックは、図6(C)に示すように、16×16個の画素(ドット)に対応する輝度信号により構成され、この輝度信号は、さらに8×8ドットを単位とするブロックY[1]乃至Y[4]に区分される。そして、この16×16ドットの輝度信号には、8×8ドットのCb信号と、8×8ドットのCr信号が対応される。
【0029】
このように、ブロックフォーマットに変換されたデータは、フォーマット変換回路17からエンコーダ18に供給され、ここでエンコード(符号化)が行われる。その詳細については、図7を参照して後述する。
【0030】
エンコーダ18によりエンコードされた信号は、ビットストリームとして伝送路に出力される。例えば記録回路19に供給され、デジタル信号として記録媒体3に記録される。
【0031】
再生回路30により記録媒体3より再生されたデータは、復号装置2のデコーダ31に供給され、デコードされる。デコーダ31の詳細については、図12を参照して後述する。
【0032】
デコーダ31によりデコードされたデータは、フォーマット変換回路32に入力され、ブロックフォーマットからフレームフォーマットに変換される。そして、フレームフォーマットの輝度信号は、フレームメモリ33の輝度信号フレームメモリ34に供給されて記憶され、色差信号は色差信号フレームメモリ35に供給されて記憶される。輝度信号フレームメモリ34と色差信号フレームメモリ35から読み出された輝度信号と色差信号は、それぞれD/A変換器36,37によりアナログ信号に変換され、後処理回路38に供給される。後処理回路38は、輝度信号と色差信号を合成して出力する。
【0033】
次に図7を参照して、エンコーダ18の構成について説明する。符号化される画像データは、マクロブロック単位で動きベクトル検出回路50に入力される。動きベクトル検出回路50は、予め設定されている所定のシーケンスに従って、各フレームの画像データを、Iピクチャ、Pピクチャ、またはBピクチャとして処理する。シーケンシャルに入力される各フレームの画像を、I,P、またはBのいずれのピクチャとして処理するかは、予め定められている(例えば、図2と図3に示したように、フレームF1乃至F17により構成されるグループオブピクチャが、I,B,P,B,P,・・・B,Pとして処理される)。
【0034】
Iピクチャとして処理されるフレーム(例えば、フレームF1)の画像データは、動きベクトル検出回路50からフレームメモリ51の前方原画像部51aに転送、記憶され、Bピクチャとして処理されるフレーム(例えば、フレームF2)の画像データは、原画像部51bに転送、記憶され、Pピクチャとして処理されるフレーム(例えば、フレームF3)の画像データは、後方原画像部51cに転送、記憶される。
【0035】
また、次のタイミングにおいて、さらにBピクチャ(フレームF4)またはPピクチャ(フレームF5)として処理すべきフレームの画像が入力されたとき、それまで後方原画像部51cに記憶されていた最初のPピクチャ(フレームF3)の画像データが、前方原画像部51aに転送され、次のBピクチャ(フレームF4)の画像データが、原画像部51bに記憶(上書き)され、次のPピクチャ(フレームF5)の画像データが、後方原画像部51cに記憶(上書き)される。このような動作が順次繰り返される。
【0036】
フレームメモリ51に記憶された各ピクチャの信号は、そこから読み出され、予測モード切り替え回路52において、フレーム予測モード処理、またはフィールド予測モード処理が行なわれる。
【0037】
さらにまた、予測判定回路54の制御の下に、演算部53において、画像内予測、前方予測、後方予測、または両方向予測の演算が行なわれる。これらの処理のうち、いずれの処理を行なうかは、予測誤差信号(処理の対象とされている参照画像と、これに対する予測画像との差分)に対応して決定される。このため、動きベクトル検出回路50は、この判定に用いられる予測誤差信号の絶対値和(自乗和でもよい)を生成する。
【0038】
ここで、予測モード切り替え回路52におけるフレーム予測モードとフィールド予測モードについて説明する。
【0039】
フレーム予測モードが設定された場合においては、予測モード切り替え回路52は、動きベクトル検出回路50より供給される4個の輝度ブロックY[1]乃至Y[4]を、そのまま後段の演算部53に出力する。すなわち、この場合においては、図8に示すように、各輝度ブロックに奇数フィールドのラインのデータと、偶数フィールドのラインのデータとが混在した状態となっている。このフレーム予測モードにおいては、4個の輝度ブロック(マクロブロック)を単位として予測が行われ、4個の輝度ブロックに対して1個の動きベクトルが対応される。
【0040】
これに対して、予測モード切り替え回路52は、フィールド予測モードにおいては、図8に示す構成で動きベクトル検出回路50より入力される信号を、図9に示すように、4個の輝度ブロックのうち、輝度ブロックY[1]とY[2]を、例えば奇数フィールドのラインのドットだけで構成させ、他の2個の輝度ブロックY[3]とY[4]を、偶数フィールドのラインのドットだけで構成させて、演算部53に出力する。この場合においては、2個の輝度ブロックY[1]とY[2]に対して、1個の動きベクトルが対応され、他の2個の輝度ブロックY[3]とY[4]に対して、他の1個の動きベクトルが対応される。
【0041】
動きベクトル検出回路50は、フレーム予測モードにおける予測誤差の絶対値和、およびフィールド予測モードにおける予測誤差の絶対値和を予測モード切り替え回路52に出力する。予測モード切り替え回路52は、フレーム予測モードとフィールド予測モードにおける予測誤差の絶対値和を比較し、その値が小さい予測モードに対応する処理を施して、データを演算部53に出力する。
【0042】
ただし、このような処理は、実際には動きベクトル検出回路50で行われる。すなわち、動きベクトル検出回路50は、決定されたモードに対応する構成の信号を予測モード切り替え回路52に出力し、予測モード切り替え回路52は、その信号を、そのまま後段の演算部53に出力する。
【0043】
なお、色差信号は、フレーム予測モードの場合、図8に示すように、奇数フィールドのラインのデータと偶数フィールドのラインのデータとが混在する状態で、演算部53に供給される。また、フィールド予測モードの場合、図9に示すように、各色差ブロックCb,Crの上半分(4ライン)が、輝度ブロックY[1],Y[2]に対応する奇数フィールドの色差信号とされ、下半分(4ライン)が、輝度ブロックY[3],Y[4]に対応する偶数フィールドの色差信号とされる。
【0044】
また、動きベクトル検出回路50は、以下に示すようにして、予測判定回路54において、画像内予測、前方予測、後方予測、または両方向予測のいずれの予測を行なうかを決定するための予測誤差の絶対値和を生成する。
【0045】
すなわち、画像内予測の予測誤差の絶対値和として、参照画像のマクロブロックの信号Aijの総和ΣAijの絶対値|ΣAij|と、マクロブロックの信号Aijの絶対値|Aij|の総和Σ|Aij|の差を求める。また、前方予測の予測誤差の絶対値和として、参照画像のマクロブロックの信号Aijと、予測画像のマクロブロックの信号Bijの差Aij−Bijの絶対値|Aij−Bij|の総和Σ|Aij−Bij|を求める。また、後方予測と両方向予測の予測誤差の絶対値和も、前方予測における場合と同様に(その予測画像を前方予測における場合と異なる予測画像に変更して)求める。
【0046】
これらの絶対値和は、予測判定回路54に供給される。予測判定回路54は、前方予測、後方予測および両方向予測の予測誤差の絶対値和のうちの最も小さいものを、インタ予測の予測誤差の絶対値和として選択する。さらに、このインタ予測の予測誤差の絶対値和と、画像内予測の予測誤差の絶対値和とを比較し、その小さい方を選択し、この選択した絶対値和に対応するモードを予測モードとして選択する。すなわち、画像内予測の予測誤差の絶対値和の方が小さければ、画像内予測モードが設定される。インタ予測の予測誤差の絶対値和の方が小さければ、前方予測、後方予測または両方向予測モードのうちの対応する絶対値和が最も小さかったモードが設定される。
【0047】
このように、動きベクトル検出回路50は、参照画像のマクロブロックの信号を、フレームまたはフィールド予測モードのうち、予測モード切り替え回路52により選択されたモードに対応する構成で、予測モード切り替え回路52を介して演算部53に供給するとともに、4つの予測モードのうちの予測判定回路54により選択された予測モードに対応する予測画像と参照画像の間の動きベクトルを検出し、可変長符号化回路58と動き補償回路64に出力する。上述したように、この動きベクトルとしては、対応する予測誤差の絶対値和が最小となるものが選択される。
【0048】
予測判定回路54は、動きベクトル検出回路50が前方原画像部51aよりIピクチャの画像データを読み出しているとき、予測モードとして、フレームまたはフィールド(画像)内予測モード(動き補償を行わないモード)を設定し、演算部53のスイッチ53dを接点a側に切り替える。これにより、Iピクチャの画像データがDCTモード切り替え回路55に入力される。
【0049】
DCTモード切り替え回路55は、図10または図11に示すように、4個の輝度ブロックのデータを、奇数フィールドのラインと偶数フィールドのラインが混在する状態(フレームDCTモード)、または、分離された状態(フィールドDCTモード)、のいずれかの状態にして、DCT回路56に出力する。
【0050】
すなわち、DCTモード切り替え回路55は、奇数フィールドと偶数フィールドのデータを混在してDCT処理した場合における符号化効率と、分離した状態においてDCT処理した場合の符号化効率とを比較し、符号化効率の良好なモードを選択する。
【0051】
例えば、入力された信号を、図10に示すように、奇数フィールドと偶数フィールドのラインが混在する構成とし、上下に隣接する奇数フィールドのラインの信号と偶数フィールドのラインの信号の差を演算し、さらにその絶対値の和(または自乗和)を求める。
【0052】
また、入力された信号を、図11に示すように、奇数フィールドと偶数フィールドのラインが分離した構成とし、上下に隣接する奇数フィールドのライン同士の信号の差と、偶数フィールドのライン同士の信号の差を演算し、それぞれの絶対値の和(または自乗和)を求める。
【0053】
さらに、両者(絶対値和)を比較し、小さい値に対応するDCTモードを設定する。すなわち、前者の方が小さければ、フレームDCTモードを設定し、後者の方が小さければ、フィールドDCTモードを設定する。
【0054】
そして、選択したDCTモードに対応する構成のデータをDCT回路56に出力するとともに、選択したDCTモードを示すDCTフラグを、可変長符号化回路58、および動き補償回路64に出力する。
【0055】
予測モード切り替え回路52における予測モード(図8と図9)と、このDCTモード切り替え回路55におけるDCTモード(図10と図11)を比較して明らかなように、輝度ブロックに関しては、両者の各モードにおけるデータ構造は実質的に同一である。
【0056】
予測モード切り替え回路52において、フレーム予測モード(奇数ラインと偶数ラインが混在するモード)が選択された場合、DCTモード切り替え回路55においても、フレームDCTモード(奇数ラインと偶数ラインが混在するモード)が選択される可能性が高く、また予測モード切り替え回路52において、フィールド予測モード(奇数フィールドと偶数フィールドのデータが分離されたモード)が選択された場合、DCTモード切り替え回路55において、フィールドDCTモード(奇数フィールドと偶数フィールドのデータが分離されたモード)が選択される可能性が高い。
【0057】
しかしながら、必ずしも常にこのようにモードが選択されるわけではなく、予測モード切り替え回路52においては、予測誤差の絶対値和が小さくなるようにモードが決定され、DCTモード切り替え回路55においては、符号化効率が良好となるようにモードが決定される。
【0058】
DCTモード切り替え回路55より出力されたIピクチャの画像データは、DCT回路56に入力されてDCT処理され、DCT係数に変換される。このDCT係数は、量子化回路57に入力され、送信バッファ59のデータ蓄積量(バッファ蓄積量)に対応した量子化スケールで量子化された後、可変長符号化回路58に入力される。
【0059】
可変長符号化回路58は、量子化回路57より供給される量子化スケール(スケール)に対応して、量子化回路57より供給される画像データ(いまの場合、Iピクチャのデータ)を、例えばハフマン符号などの可変長符号に変換し、送信バッファ59に出力する。
【0060】
可変長符号化回路58にはまた、量子化回路57より量子化スケール(スケール)、予測判定回路54より予測モード(画像内予測、前方予測、後方予測、または両方向予測のいずれが設定されたかを示すモード)、動きベクトル検出回路50より動きベクトル、予測モード切り替え回路52より予測フラグ(フレーム予測モードまたはフィールド予測モードのいずれが設定されたかを示すフラグ)、およびDCTモード切り替え回路55が出力するDCTフラグ(フレームDCTモードまたはフィールドDCTモードのいずれが設定されたかを示すフラグ)が入力されており、これらも可変長符号化される。
【0061】
送信バッファ59は、入力されたデータを一時蓄積し、蓄積量に対応するデータを量子化回路57に出力する。送信バッファ59は、そのデータ残量が許容上限値まで増量すると、量子化制御信号によって量子化回路57の量子化スケールを大きくすることにより、量子化データのデータ量を低下させる。また、これとは逆に、データ残量が許容下限値まで減少すると、送信バッファ59は、量子化制御信号によって量子化回路57の量子化スケールを小さくすることにより、量子化データのデータ量を増大させる。このようにして、送信バッファ59のオーバフローまたはアンダフローが防止される。
【0062】
そして、送信バッファ59に蓄積されたデータは、所定のタイミングで読み出され、伝送路に出力され、例えば記録回路19を介して記録媒体3に記録される。
【0063】
一方、量子化回路57より出力されたIピクチャのデータは、逆量子化回路60に入力され、量子化回路57より供給される量子化スケールに対応して逆量子化される。逆量子化回路60の出力は、IDCT(逆離散コサイン変換)回路61に入力され、逆離散コサイン変換処理された後、演算器62を介してフレームメモリ63の前方予測画像部63a供給されて記憶される。
【0064】
動きベクトル検出回路50は、シーケンシャルに入力される各フレームの画像データを、たとえば、I,B,P,B,P,B・・・のピクチャとしてそれぞれ処理する場合、最初に入力されたフレームの画像データをIピクチャとして処理した後、次に入力されたフレームの画像をBピクチャとして処理する前に、さらにその次に入力されたフレームの画像データをPピクチャとして処理する。Bピクチャは、後方予測を伴うため、後方予測画像としてのPピクチャが先に用意されていないと、復号することができないからである。
【0065】
そこで動きベクトル検出回路50は、Iピクチャの処理の次に、後方原画像部51cに記憶されているPピクチャの画像データの処理を開始する。そして、上述した場合と同様に、マクロブロック単位でのフレーム間差分(予測誤差)の絶対値和が、動きベクトル検出回路50から予測モード切り替え回路52と予測判定回路54に供給される。予測モード切り替え回路52と予測判定回路54は、このPピクチャのマクロブロックの予測誤差の絶対値和に対応して、フレーム/フィールド予測モード、または画像内予測、前方予測、後方予測、もしくは両方向予測の予測モードを設定する。
【0066】
演算部53は、画像内予測モードが設定されたとき、スイッチ53dを上述したように接点a側に切り替える。したがって、このデータは、Iピクチャのデータと同様に、DCTモード切り替え回路55、DCT回路56、量子化回路57、可変長符号化回路58、および送信バッファ59を介して伝送路に伝送される。また、このデータは、逆量子化回路60、IDCT回路61、および演算器62を介してフレームメモリ63の後方予測画像部63bに供給されて記憶される。
【0067】
また、前方予測モードが設定された場合、スイッチ53dが接点bに切り替えられるとともに、フレームメモリ63の前方予測画像部63aに記憶されている画像(いまの場合、Iピクチャの画像)データが読み出され、動き補償回路64により、動きベクトル検出回路50が出力する動きベクトルに対応して動き補償される。すなわち、動き補償回路64は、予測判定回路54より前方予測モードの設定が指令されたとき、前方予測画像部63aの読み出しアドレスを、動きベクトル検出回路50が、現在、出力しているマクロブロックの位置に対応する位置から動きベクトルに対応する分だけずらしてデータを読み出し、予測画像データを生成する。
【0068】
動き補償回路64より出力された予測画像データは、演算器53aに供給される。演算器53aは、予測モード切り替え回路52より供給された参照画像のマクロブロックのデータから、動き補償回路65より供給された、このマクロブロックに対応する予測画像データを減算し、その差分(予測誤差)を出力する。この差分データは、DCTモード切り替え回路55、DCT回路56、量子化回路57、可変長符号化回路58、および送信バッファ59を介して伝送路に伝送される。また、この差分データは、逆量子化回路60、およびIDCT回路61により局所的に復号され、演算器62に入力される。
【0069】
この演算器62にはまた、演算器53aに供給されている予測画像データと同一のデータが供給されている。演算器62は、IDCT回路61が出力する差分データに、動き補償回路64が出力する予測画像データを加算する。これにより、元の(復号した)Pピクチャの画像データが得られる。このPピクチャの画像データは、フレームメモリ63の後方予測画像部63bに供給されて記憶される。
【0070】
動きベクトル検出回路50は、このように、IピクチャとPピクチャのデータが前方予測画像部63aと後方予測画像部63bにそれぞれ記憶された後、次にBピクチャの処理を実行する。予測モード切り替え回路52と予測判定回路54は、マクロブロック単位でのフレーム間差分の絶対値和の大きさに対応して、フレーム/フィールドモードを設定し、また、予測モードを画像内予測モード、前方予測モード、後方予測モード、または両方向予測モードのいずれかに設定する。
【0071】
上述したように、画像内予測モードまたは前方予測モードの時、スイッチ53dは接点aまたはbに切り替えられる。このとき、Pピクチャにおける場合と同様の処理が行われ、データが伝送される。
【0072】
これに対して、後方予測モードまたは両方向予測モードが設定された時、スイッチ53dは、接点cまたはdにそれぞれ切り替えられる。
【0073】
スイッチ53dが接点cに切り替えられている後方予測モードの時、後方予測画像部63bに記憶されている画像(いまの場合、Pピクチャの画像)データが読み出され、動き補償回路64により、動きベクトル検出回路50が出力する動きベクトルに対応して動き補償される。すなわち、動き補償回路64は、予測判定回路54より後方予測モードの設定が指令されたとき、後方予測画像部63bの読み出しアドレスを、動きベクトル検出回路50が、現在、出力しているマクロブロックの位置に対応する位置から動きベクトルに対応する分だけずらしてデータを読み出し、予測画像データを生成する。
【0074】
動き補償回路64より出力された予測画像データは、演算器53bに供給される。演算器53bは、予測モード切り替え回路52より供給された参照画像のマクロブロックのデータから、動き補償回路64より供給された予測画像データを減算し、その差分を出力する。この差分データは、DCTモード切り替え回路55、DCT回路56、量子化回路57、可変長符号化回路58、および送信バッファ59を介して伝送路に伝送される。
【0075】
スイッチ53dが接点dに切り替えられている両方向予測モードの時、前方予測画像部63aに記憶されている画像(いまの場合、Iピクチャの画像)データと、後方予測画像部63bに記憶されている画像(いまの場合、Pピクチャの画像)データが読み出され、動き補償回路64により、動きベクトル検出回路50が出力する動きベクトルに対応して動き補償される。
【0076】
すなわち、動き補償回路64は、予測判定回路54より両方向予測モードの設定が指令されたとき、前方予測画像部63aと後方予測画像部63bの読み出しアドレスを、動きベクトル検出回路50がいま出力しているマクロブロックの位置に対応する位置から動きベクトル(この場合の動きベクトルは、前方予測画像用と後方予測画像用の2つとなる)に対応する分だけずらしてデータを読み出し、予測画像データを生成する。
【0077】
動き補償回路64より出力された予測画像データは、演算器53cに供給される。演算器53cは、動きベクトル検出回路50より供給された参照画像のマクロブロックのデータから、動き補償回路64より供給された予測画像データの平均値を減算し、その差分を出力する。この差分データは、DCTモード切り替え回路55、DCT回路56、量子化回路57、可変長符号化回路58、および送信バッファ59を介して伝送路に伝送される。
【0078】
Bピクチャの画像は、他の画像の予測画像とされることがないため、フレームメモリ63には記憶されない。
【0079】
なお、フレームメモリ63において、前方予測画像部63aと後方予測画像部63bは、必要に応じてバンク切り替えが行われ、所定の参照画像に対して、一方または他方に記憶されているものを、前方予測画像あるいは後方予測画像として切り替えて出力することができる。
【0080】
上述した説明においては、輝度ブロックを中心として説明をしたが、色差ブロックについても同様に、図8乃至図11に示すマクロブロックを単位として処理されて伝送される。なお、色差ブロックを処理する場合の動きベクトルは、対応する輝度ブロックの動きベクトルを垂直方向と水平方向に、それぞれ1/2にしたものが用いられる。
【0081】
図12は、図5のデコーダ31の構成を示すブロック図である。伝送路(記録媒体3)を介して伝送された符号化された画像データは、図示せぬ受信回路で受信されたり、再生装置で再生され、受信バッファ81に一時記憶された後、復号回路90の可変長復号化回路82に供給される。可変長復号化回路82は、受信バッファ81より供給されたデータを可変長復号化し、動きベクトル、予測モード、予測フラグ、およびDCTフラグを動き補償回路87に出力し、量子化スケールを逆量子化回路83に出力するとともに、復号された画像データを逆量子化回路83に出力する。
【0082】
逆量子化回路83は、可変長復号化回路82より供給された画像データを、同じく可変長復号化回路82より供給された量子化スケールに従って逆量子化し、IDCT回路84に出力する。逆量子化回路83より出力されたデータ(DCT係数)は、IDCT回路84により、逆離散コサイン変換処理が施され、演算器85に供給される。
【0083】
IDCT回路84より演算器85に供給された画像データが、Iピクチャのデータである場合、そのデータは演算器85より出力され、演算器85に後に入力される画像データ(PまたはBピクチャのデータ)の予測画像データ生成のために、フレームメモリ86の前方予測画像部86aに供給されて記憶される。また、このデータは、フォーマット変換回路32(図5)に出力される。
【0084】
IDCT回路84より供給された画像データが、その1フレーム前の画像データを予測画像データとするPピクチャのデータであり、前方予測モードのデータである場合、フレームメモリ86の前方予測画像部86aに記憶されている、1フレーム前の画像データ(Iピクチャのデータ)が読み出され、動き補償回路87で可変長復号化回路82より出力された動きベクトルに対応する動き補償が施される。そして、演算器85において、IDCT回路84より供給された画像データ(差分のデータ)と加算され、出力される。この加算されたデータ、すなわち、復号されたPピクチャのデータは、演算器85に後に入力される画像データ(BピクチャまたはPピクチャのデータ)の予測画像データ生成のために、フレームメモリ86の後方予測画像部86bに供給されて記憶される。
【0085】
Pピクチャのデータであっても、画像内予測モードのデータは、Iピクチャのデータと同様に、演算器85において処理は行われず、そのまま後方予測画像部86bに記憶される。
【0086】
このPピクチャは、次のBピクチャの次に表示されるべき画像であるため、この時点では、まだフォーマット変換回路32へ出力されない(上述したように、Bピクチャの後に入力されたPピクチャが、Bピクチャより先に処理され、伝送されている)。
【0087】
IDCT回路84より供給された画像データが、Bピクチャのデータである場合、可変長復号化回路82より供給された予測モードに対応して、フレームメモリ86の前方予測画像部86aに記憶されているIピクチャの画像データ(前方予測モードの場合)、後方予測画像部86bに記憶されているPピクチャの画像データ(後方予測モードの場合)、または、その両方の画像データ(両方向予測モードの場合)が読み出され、動き補償回路87において、可変長復号化回路82より出力された動きベクトルに対応する動き補償が施されて、予測画像が生成される。但し、動き補償を必要としない場合(画像内予測モードの場合)、予測画像は生成されない。
【0088】
このようにして、動き補償回路87で動き補償が施されたデータは、演算器85において、IDCT回路84の出力と加算される。この加算出力は、フォーマット変換回路32に出力される。
【0089】
ただし、この加算出力はBピクチャのデータであり、他の画像の予測画像生成のために利用されることがないため、フレームメモリ86には記憶されない。
【0090】
Bピクチャの画像が出力された後、後方予測画像部86bに記憶されているPピクチャの画像データが読み出され、動き補償回路87を介して演算器85に供給される。但し、このとき、動き補償は行われない。
【0091】
なお、このデコーダ31には、図5のエンコーダ18における予測モード切り替え回路52とDCTモード切り替え回路55に対応する回路が図示されていないが、これらの回路に対応する処理、すなわち、奇数フィールドと偶数フィールドのラインの信号が分離された構成を元の構成に必要に応じて戻す処理は、動き補償回路87により実行される。
【0092】
また、上述した説明においては、輝度信号の処理について説明したが、色差信号の処理も同様に行われる。ただし、この場合の動きベクトルは、輝度信号用の動きベクトルを、垂直方向および水平方向に1/2にしたものが用いられる。
【0093】
図13は、符号化された画像の品質を示している。画像の品質(SNR:Signal to Noise Ratio)は、ピクチャタイプに対応して制御され、Iピクチャ、およびPピクチャは高品質とされ、Bピクチャは、I,Pピクチャに比べて劣る品質とされて伝送される。これは、人間の視覚特性を利用した手法であり、全ての画像品質を平均化するよりも、品質を振動させたほうが視覚上の画質が良くなるためである。このピクチャタイプに対応した画質の制御は、図7の量子化回路57により実行される。
【0094】
図14は、本発明を適用したトランスコーダ101の構成を示しており、図15は、そのさらに詳細な構成を示している。復号装置102は、所定のビットレート(この例の場合、10Mbps)のビットストリームに含まれる(多重化されている)符号化された画像信号を、ビットストリームに含まれる(多重化されている)そのビットストリームの現符号化パラメータ(フレーム/フィールドDCTフラグ、フレーム/フィールド予測フラグ、予測モード、ピクチャタイプ、動きベクトル、マクロブロック情報、および量子化スケール)を用いて復号し、符号化パラメータ多重装置103に出力するとともに、現符号化パラメータも符号化パラメータ多重装置103に出力するようになされている。
【0095】
復号装置102はまた、ビットストリームに含まれるユーザデータを復号、分離し、履歴復号装置104に出力する。その詳細は後述するが、このユーザデータには、直近の3世代分の符号化パラメータで構成される世代履歴情報が含まれている。これに対して、現符号化パラメータは、例えばgroup_of_pictures_header(1),extension_and_user_data(1),picture_header(),picture_coding_extension(),extensions_data(2),picture_data()、または、sequence_extension()に含まれている(後述する図38)。履歴復号装置104は、入力されたユーザデータを復号し、3世代分の符号化パラメータを含む世代履歴情報を符号化パラメータ多重装置103に出力する。
【0096】
なお、復号装置102は、図5の復号装置2のデコーダ31(図12)を図16に示すデコーダ111に変更したものである。デコーダ111の可変長復号化回路112は、現符号化パラメータをビットストリームから抽出し、所定の回路に供給するとともに、世代履歴情報を含むユーザデータを抽出し、履歴復号装置104に出力するようになされている。デコーダ111のその他の構成は、デコーダ31と同様であるので、その説明は省略する。
【0097】
符号化パラメータ多重装置103は、復号された画像データの空き領域(その詳細は、図18を参照して説明する)に4世代分の符号化パラメータを書き込み(多重化し)、ベースバンドのデジタルビデオ信号として、粗結合された(符号化パラメータ伝送用の専用バス等が設けられていない)符号化パラメータ分離装置105に出力する。符号化パラメータ分離装置105は、ベースバンドのデジタルビデオ信号から、画像データと、符号化装置106で符号化に用いる符号化パラメータを分離して符号化装置106に供給するようになされている。
【0098】
符号化パラメータ分離装置105はまた、入力されたベースバンドのデジタルビデオ信号から、符号化装置106で用いる符号化パラメータを除く3世代分の符号化パラメータを抽出し、履歴符号化装置107に出力する。履歴符号化装置107は、入力された3世代分の符号化パラメータをユーザデータに書き込み、そのユーザデータを符号化装置106に出力する。
【0099】
符号パラメータが書き込まれる画像データのフォーマットについて、図17と図18を参照して説明する。1個のマクロブロックは、図17に示すように、16×16画素で構成される。この16×16画素のデータは、8×8画素の輝度信号Y[0][x]乃至Y[4][x]と、8×8画素の色差信号Cr[0][x],Cr[1][x]およびCb[0][x],Cb[1][x](x=2乃至9)から構成されている。例えば、輝度信号Y[0][9]は、8×8画素の1行目の画素(8画素)の輝度信号を示している。1画素当たりの輝度信号の情報量は8ビットなので、輝度信号Y[0][9]の情報量は、8(画素)×8(ビット)=64ビットとなる。色差信号についても同様である。
【0100】
これに対して、画像データのフォーマットは、図18に示すように、10行分の領域(D0乃至D9)が設けられているので、2行分の領域(D0,D1)が不要となる。この空き領域には、64ビット×16=1024ビットの情報が記録できるので、この2行分の領域に本来の画像データ以外の符号化パラメータを書き込む。なお、1個のマクロブロックに対応する符号化パラメータは、256ビットの情報量があるので、この領域には、過去4回の符号化に使用された符号化パラメータを記録することができる。
【0101】
符号化パラメータ多重装置103から符号化パラメータ分離装置105に伝送される画像データ(デジタルビデオ信号)には、輝度信号Y、色差信号Cr,Cbを記載する領域として、10行分(D0乃至D9)の領域が設けられている。しかしながら実際に輝度信号Y等が書き込まれる領域は、D2乃至D9の8行分の領域であり、D0,D1の領域は利用されない。そこで、この2ビットの領域を符号化パラメータの書き込み用領域として利用する。これにより、図17の16×16画素の所定の位置の画素の下位2ビットに、符号化パラメータが書き込まれることとなる。
【0102】
符号化装置106は、これから行う符号化のための符号化パラメータとして供給された現符号化パラメータを利用して画像データを符号化するとともに、履歴符号化装置107から供給されるユーザデータをビットストリームに多重化して、所定のビットレート(この例の場合、5Mbps)でSDTI(Serial Data Transfer Interface)108−i(i=1,2,・・・,N)(後述する図30)に出力するようになされている。
【0103】
なお、符号化装置106は、図5の符号化装置1のエンコーダ18(図7)を図19に示すエンコーダ121に変更したものである。エンコーダ121は、エンコーダ18から符号化パラメータを生成する動きベクトル検出回路50、フレームメモリ51、予測モード切り替え回路52、予測判定回路54、およびDCTモード切り替え回路55を削除し、履歴符号化装置107の出力するユーザデータを可変長符号化回路58で可変長符号化するようにしたものである。エンコーダ121のその他の構成は、エンコーダ18と同様であるので、その説明は省略する。
【0104】
次に、図15における履歴復号装置104と履歴符号化装置107についてさらに説明する。同図に示すように、履歴復号装置104は、復号装置102より供給されるユーザデータをデコードするユーザデータデコーダ201、ユーザデータデコーダ201の出力を変換するコンバータ202、およびコンバータ202の出力から履歴情報を再生するヒストリデコーダ203により構成されている。
【0105】
また、履歴符号化装置107は、符号化パラメータ分離装置105より供給される3世代分の符号化パラメータをフォーマット化するヒストリフォーマッタ211、ヒストリフォーマッタ211の出力を変換するコンバータ212、コンバータ212の出力をユーザデータのフォーマットにフォーマットするユーザデータフォーマッタ213により構成されている。
【0106】
ユーザデータデコーダ201は、復号装置102より供給されるユーザデータをデコードして、コンバータ202に出力する。詳細は後述するが、ユーザデータ(user_data())は、user_data_start_codeとuser_dataからなり、MPEG規格においてはuser_dataの中に、連続する23ビットの”0”を発生させることを禁止している。これは、start_codeを誤検出されないようにするためである。履歴情報内には、このような連続する23ビット以上の”0”が存在することがあり得るので、これを処理して、converted_history_stream()(後述する図38)に変換する必要がある。この変換を行うのは、履歴符号化装置107のコンバータ212である。履歴復号装置104のコンバータ202は、このコンバータ212と逆の変換処理を行うものである。
【0107】
ヒストリデコーダ203は、コンバータ202の出力から履歴情報を生成し、符号化パラメータ多重装置103に出力する。
【0108】
一方、履歴符号化装置107においては、ヒストリフォーマッタ211が符号化パラメータ分離装置105より供給される3世代分の符号化パラメータを履歴情報のフォーマットに変換する。このフォーマットには、固定長のもの(後述する図40乃至図46)と、可変長のもの(後述する図47)とがある。これらの詳細については後述する。
【0109】
ヒストリフォーマッタ211により、フォーマット化された履歴情報は、コンバータ212において、converted_history_stream()に変換される。これは、上述したように、user_data()のstart_codeが誤検出されないようにするためのものである。すなわち、履歴情報内には連続する23ビット以上の”0”が存在するが、user_data中には連続する23ビット以上の”0”を配置することができないので、この禁止項目に触れないようにコンバータ212によりデータを変換するのである。
【0110】
ユーザデータフォーマッタ213は、コンバータ212より供給されるconverted_history_stream()に、後述する図38に基づいて、Data_IDを付加し、さらに、user_data_stream_codeを付加して、video stream中に挿入できるuser_dataを生成し、符号化装置106に出力する。
【0111】
図20は、ヒストリフォーマッタ211の構成例を表している。その符号語変換器301と符号長変換器305には、符号化パラメータ(今回、履歴情報として伝送する符号化パラメータ)(項目データ)と、この符号化パラメータを配置するストリームを特定する情報(例えば、シンタックスの名称)(例えば、後述するsequence_headerの名称)(項目NO.)が、符号化パラメータ分離装置105から供給されている。符号語変換器301は、入力された符号化パラメータを、指示されたシンタックスに対応する符号語に変換し、バレルシフタ302に出力する。バレルシフタ302は、符号語変換器301より入力された符号語を、アドレス発生回路306より供給されるシフト量に対応する分だけシフトし、バイト単位の符号語として、スイッチ303に出力する。アドレス発生回路306が出力するビットセレクト信号により切り換えられるスイッチ303は、ビット分設けられており、バレルシフタ302より供給される符号語を、RAM304に供給し、記憶させる。このときの書き込みアドレスは、アドレス発生回路306から指定される。また、アドレス発生回路306から読み出しアドレスが指定されたとき、RAM304に記憶されているデータ(符号語)が読み出され、後段のコンバータ212に供給されるとともに、必要に応じて、スイッチ303を介してRAM304に再び供給され、記憶される。
【0112】
符号長変換器305は、入力されるシンタックスと符号化パラメータとから、その符号化パラメータの符号長を決定し、アドレス発生回路306に出力する。アドレス発生回路306は、入力された符号長に対応して、上述したシフト量、ビットセレクト信号、書き込みアドレス、または読み出しアドレスを生成し、それらを、それぞれバレルシフタ302、スイッチ303、またはRAM304に供給する。
【0113】
以上のように、ヒストリフォーマッタ211は、いわゆる可変長符号化器として構成され、入力された符号化パラメータを可変長符号化して出力する。
【0114】
図21は、以上のようにしてヒストリフォーマット化されたデータをデコードするヒストリデコーダ203の構成例を表している。このヒストリデコーダ203には、コンバータ202から供給された符号化パラメータのデータがRAM311に供給されて、記憶される。このときの書き込みアドレスは、アドレス発生回路315から供給される。アドレス発生回路315はまた、所定のタイミングで読み出しアドレスを発生し、RAM311に供給する。このとき、RAM311は、読み出しアドレスに記憶されているデータを読み出し、バレルシフタ312に出力する。バレルシフタ312は、アドレス発生回路315が出力するシフト量に対応する分だけ、入力されるデータをシフトし、逆符号長変換器313と逆符号語変換器314に出力する。
【0115】
逆符号長変換器313にはまた、コンバータ202から、符号化パラメータが配置されているストリームのシンタックスの名称が供給されている。逆符号長変換器313は、そのシンタックスに基づいて、入力されたデータ(符号語)から符号長を求め、求めた符号長をアドレス発生回路315に出力する。
【0116】
また、逆符号語変換器314は、バレルシフタ312より供給されたデータを、シンタックスに基づいて復号し(逆符号語化し)、符号化パラメータ多重装置103に出力する。
【0117】
また、逆符号語変換器314は、どのような符号語が含まれているのかを特定するのに必要な情報(符号語の区切りを決定するのに必要な情報)を抽出し、アドレス発生回路315に出力する。アドレス発生回路315は、この情報と逆符号長変換器313より入力された符号長に基づいて、書き込みアドレスおよび読み出しアドレスを発生し、RAM311に出力するとともに、シフト量を発生し、バレルシフタ312に出力する。
【0118】
図22は、コンバータ212の構成例を表している。この例においては、ヒストリフォーマッタ211とコンバータ212の間に配置されているバッファメモリ320の、コントローラ326が出力する読み出しアドレスから8ビットのデータが読み出され、D型フリップフロップ(D−FF)321に供給され、保持されるようになされている。そして、D型フリップフロップ321より読み出されたデータは、スタッフ回路323に供給されるとともに、8ビットのD型フリップフロップ322にも供給され、保持される。D型フリップフロップ322より読み出された8ビットのデータは、D型フリップフロップ321より読み出された8ビットのデータと合成され、16ビットのパラレルデータとして、スタッフ回路323に供給される。
【0119】
スタッフ回路323は、コントローラ326より供給されるスタッフ位置を示す信号(stuff position)の位置に符号”1”を挿入し(スタッフィングし)、合計17ビットのデータとして、バレルシフタ324に出力する。
【0120】
バレルシフタ324は、コントローラ326より供給されるシフト量を示す信号(shift)に基づいて入力されたデータをシフトして、8ビットのデータを抽出し、8ビットのD型フリップフロップ325に出力する。D型フリップフロップ325に保持されたデータは、そこから読み出され、バッファメモリ327を介して、後段のユーザデータフォーマッタ213に供給される。この時、コントローラ326は、出力するデータとともに、書き込みアドレスを発生し、コンバータ212とユーザデータフォーマッタ213との間に介在するバッファメモリ327に供給する。
【0121】
図23は、スタッフ回路323の構成例を表している。D型フリップフロップ322,321より入力された16ビットのデータは、それぞれスイッチ331−16乃至331−1の接点aに入力されている。スイッチ331−i(i=0乃至15)の接点cには、MSB側(図中上方)に隣接するスイッチのデータが供給されている。例えば、スイッチ331−12の接点cには、MSB側に隣接するスイッチ331−13の接点aに供給されているLSBから13番目のデータが供給されており、スイッチ331−13の接点cには、MSB側に隣接するスイッチ331−13の接点aに供給されているLSB側から14番目のデータが供給されている。
【0122】
但し、LSBに対応するスイッチ331−1よりさらに下側のスイッチ331−0の接点aは、開放されている。また、MSBに対応するスイッチ331−16の接点cは、それより上位のスイッチが存在しないため、開放されている。
【0123】
各スイッチ331−0乃至331−16の接点bには、データ”1”が供給されている。
【0124】
デコーダ332は、コントローラ326より供給されるデータ”1”を挿入する位置を示す信号stuff positionに対応して、スイッチ331−0乃至331−16のうち、1つのスイッチを接点b側に切り替え、それよりLSB側のスイッチは、接点c側にそれぞれ切り替え、それよりMSB側のスイッチは、接点a側に切り替えさせる。
【0125】
図23は、LSB側から13番目にデータ”1”を挿入する場合の例を示している。従って、この場合、スイッチ331−0乃至スイッチ331−12は、いずれも接点c側に切り替えられ、スイッチ331−13は、接点b側に切り替えられ、スイッチ331−14乃至スイッチ331−16は、接点a側に切り替えられている。
【0126】
図22のコンバータ212は、以上のような構成により、22ビットの符号を23ビットに変換して、出力することになる。
【0127】
図24は、図22のコンバータ212の各部の出力データのタイミングを表している。コンバータ212のコントローラ326がバイト単位のクロックに同期して、読み出しアドレス(図24(A))を発生すると、バッファメモリ320から、それに対応するデータが、バイト単位で読み出され、D型フリップフロップ321に一旦保持される。そして、D型フリップフロップ321より読み出されたデータ(図24(B))は、スタッフ回路323に供給されるとともに、D型フリップフロップ322に供給され、保持される。D型フリップフロップ322に保持されたデータは、そこからさらに読み出され(図24(C))、スタッフ回路323に供給される。
【0128】
従って、スタッフ回路323の入力(図24(D))は、読み出しアドレスA1のタイミングにおいて、最初の1バイトのデータD0とされ、次の読み出しアドレスA2のタイミングにおいて、1バイトのデータD0と1バイトのデータD1より構成される2バイトのデータとなり、さらに読み出しアドレスA3のタイミングにおいては、データD1とデータD2より構成される2バイトのデータとなる。
【0129】
スタッフ回路323には、データ”1”を挿入する位置を示す信号stuff position(図24(E))がコントローラ326より供給される。スタッフ回路323のデコーダ332は、スイッチ331−16乃至331−0のうち、この信号stuff positionに対応するスイッチを接点bに切り換え、それよりLSB側のスイッチを接点c側に切り換え、さらにそれよりMSB側のスイッチを接点a側に切り換える。これにより、データ”1”が挿入されるので、スタッフ回路323からは、信号stuff positionで示す位置に、データ”1”が挿入されたデータ(図24(F))が出力される。
【0130】
バレルシフタ324は、入力されたデータを、コントローラ326より供給される信号shift(図24(G))で示される量だけバレルシフトして、出力する(図24(H)) 。この出力がさらにD型フリップフロップ325で一旦保持された後、後段に出力される(図24(I))。
【0131】
D型フリップフロップ325より出力されるデータには、22ビットのデータの次に、データ”1”が挿入されている。従って、データ”1”と、次のデータ”1”の間には、その間のビットが全て0であったとしても、0のデータの連続する数は22となる。
【0132】
図25は、コンバータ202の構成例を表している。このコンバータ202のD型フリップフロップ341乃至コントローラ346よりなる構成は、図22に示したコンバータ212のD型フリップフロップ321乃至コントローラ326と基本的に同様の構成であるが、コンバータ212におけるスタッフ回路323に代えて、ディリート回路343が挿入されている点がコンバータ212におけり場合と異なっている。その他の構成は、図22のコンバータ212における場合と同様である。
【0133】
すなわち、このコンバータ202においては、コントローラ346が出力する削除するビットの位置を示す信号delete positionに従って、ディリート回路343が、そのビット(図22のスタッフ回路323で挿入されたデータ”1”)が削除される。
【0134】
その他の動作は、図22のコンバータ212における場合と同様である。
【0135】
図26は、ディリート回路343の構成例を表している。この構成例においては、D型フリップフロップ342,341より入力された16ビットのデータのうち、LSB側の15ビットが、それぞれ対応するスイッチ351−0乃至351−14の接点aに供給されている。各スイッチの接点bには、1ビットだけMSB側のデータが供給されている。デコーダ352は、コントローラ346より供給される信号delete positionにより指定されるビットを削除して、15ビットのデータとして出力するようになされている。
【0136】
図26は、LSBから第13番目のビットがディリートされる状態を示している。従って、この場合、スイッチ351−0乃至スイッチ351−11が接点a側に切り替えられ、LSBから第12番目までの12ビットが、そのまま選択、出力されている。また、スイッチ351−12乃至351−14は、それぞれ接点b側に切り替えられているので、第14番目乃至第16番目のデータが、第13番目乃至第15番目のビットのデータとして選択、出力される。
【0137】
図23のスタッフ回路323および図26のディリート回路343の入力が16ビットとなっているのは、それぞれ図22のコンバータ212のスタッフ回路323の入力が、D型フリップフロップ322,321より供給される16ビットとされており、また、図25のコンバータ202においても、ディリート回路343の入力が、D型フリップフロップ342,341により16ビットとされているためである。図22において、スタッフ回路323の出力する17ビットをバレルシフタ324でバレルシフトすることにより、例えば8ビットを最終的に選択、出力しているのと同様に、図25のコンバータ202においても、ディリート回路343の出力する15ビットのデータを、バレルシフタ344で所定量だけバレルシフトすることにより、8ビットのデータとしている。
【0138】
図27は、コンバータ212の他の構成例を表している。この構成例においては、カウンタ361が入力データのうち、連続する0のビットの数をカウントし、そのカウント結果をコントローラ326に出力するようになされている。コントローラ326は、例えばカウンタ361が連続する0のビットを22個カウントしたとき、信号stuff positionをスタッフ回路323に出力する。また、このとき、コントローラ326は、カウンタ361をリセットし、再び連続する0のビットの数をカウンタ361にカウントさせる。
【0139】
その他の構成と動作は、図22における場合と同様である。
【0140】
図28は、コンバータ202の他の構成例を表している。この構成例においては、入力データのうち、連続する0の数をカウンタ371がカウントし、そのカウント結果をコントローラ346に出力するようになされている。カウンタ371のカウント値が22に達したとき、コントローラ346は、信号delete positionをディリート回路343に出力するとともに、カウンタ371をリセットし、再び新たな連続する0のビットの数をカウンタ371にカウントさせる。その他の構成は、図25における場合と同様である。
【0141】
このように、この構成例においては、所定のパターン(データ”0”の連続する数)に基づいて、マーカービットとしてのデータ”1”が挿入され、また、削除されることになる。
【0142】
図27と図28に示す構成は、図22と図25に示す構成よりも効率的な処理が可能となる。但し、変換後の長さが元の履歴情報に依存することになる。
【0143】
図29は、ユーザデータフォーマッタ213の構成例を表している。この例においては、コントローラ383がコンバータ212とユーザデータフォーマッタ213との間に配置されているバッファメモリ(図示せず)に読み出しアドレスを出力すると、そこから読み出されたデータが、ユーザデータフォーマッタ213のスイッチ382の接点a側に供給される。ROM381には、ユーザデータスタートコード、データIDなどのuser_data()を生成するのに必要なデータが記憶されている。コントローラ313は、所定のタイミングにおいて、スイッチ382を接点a側または接点b側に切り替え、ROM381に記憶されているデータ、またはコンバータ212より供給されるデータを適宜選択し、出力する。これにより、user_data()のフォーマットのデータが符号化装置106に出力される。
【0144】
なお、図示は省略するが、ユーザデータデコーダ201は、図29のROM381より読み出され、挿入されたデータを削除するスイッチを介して、入力データを出力するようにすることで実現することができる。
【0145】
図30は、例えば映像編集スタジオにおいて、複数のトランスコーダ101−1乃至101−Nが直列に接続されて使用される状態を示している。各トランスコーダ101−i(i=1乃至N)の符号化パラメータ多重装置103−iは、上述した符号化パラメータ用の領域の最も古い符号化パラメータが記録されている区画に、自己が用いた最新の符号化パラメータを上書きする。このことにより、ベースバンドの画像データには、同一のマクロブロックに対応する直近の4世代分の符号化パラメータ(世代履歴情報)が記録されることになる。
【0146】
各符号化装置106−iのエンコーダ121−i(図19)は、その可変長符号化回路58において、符号化パラメータ分離装置105−iから供給される今回用いる符号化パラメータに基づいて、量子化回路57より供給されるビデオデータを符号化する。このようにして生成されるビットストリーム(例えば、picture_header())中に、その現符号化パラメータは多重化される。
【0147】
可変長符号化回路58はまた、履歴符号化装置107−iより供給されるユーザデータ(世代履歴情報を含む)を、出力するビットストリーム中に多重化する(図18に示すような埋め込み処理ではなく、ビットストリーム中に多重化される)。そして、符号化装置106−iの出力するビットストリームは、SDTI108−iを介して、後段のトランスコーダ101−(i+1)に入力される。
【0148】
トランスコーダ101−iとトランスコーダ101−(i+1)は、それぞれ図15に示すように構成されている。従って、その処理は、図15を参照して説明した場合と同様となる。
【0149】
実際の符号化パラメータの履歴を利用した符号化として、現在Iピクチャとして符号化されていたものを、PもしくはBピクチャに変更したい場合、過去の符号化パラメータの履歴を見て、過去にPもしくはBピクチャであった場合を探し、これらの履歴が存在した場合は、その動きベクトルなどのパラメータを利用して、ピクチャタイプを変更する。反対に過去に履歴がない場合は、動き検出を行わないピクチャタイプの変更を断念する。もちろん履歴がない場合であっても、動き検出を行えばピクチャタイプを変更できる。
【0150】
図18に示すフォーマットの場合、4世代分の符号化パラメータを埋め込むようにしたが、I、P、Bの各ピクチャタイプのパラメータを埋め込むようにすることもできる。図31は、この場合のフォーマットの例を示している。この例では、同一のマクロブロックが、過去にピクチャタイプの変更を伴って符号化されたときにおける、ピクチャタイプ毎に1世代分の符号化パラメータ(ピクチャ履歴情報)が記録される。したがって、図16に示したデコーダ111、および図19に示したエンコーダ121は、現在(最新)、1世代前、2世代前、および3世代前の符号化パラメータの代わりに、Iピクチャ、Pピクチャ、およびBピクチャに対応する1世代分の符号化パラメータを入出力することになる。
【0151】
また、この例の場合、Cb[1][x]とCr[1][x]の領域は利用しないので、Cb[1][x]とCr[1][x]の領域を有さない4:2:0フォーマットの画像データにも本発明を適用することができる。
【0152】
この例の場合、復号装置102は、符号化パラメータを復号と同時に取り出し、ピクチャタイプを判定して、画像信号のピクチャタイプに対応した場所に符号化パラメータを書き込んで(多重化して)符号化パラメータ分離装置105に出力する。符号化パラメータ分離装置105は、符号化パラメータを分離し、これから符号化したいピクチャタイプと、入力された過去の符号化パラメータを考慮して、ピクチャタイプを変更しながら再符号化を行うことができる。
【0153】
次に、各トランスコーダ101において、変更が可能なピクチャタイプを判定する処理について、図32のフローチャートを参照して説明する。なお、この処理はトランスコーダ101におけるピクチャタイプの変更は、過去の動きベクトルを利用するので、動き検出を行わないで実行されることを前提としている。また、以下に説明する処理は、符号化パラメータ分離装置105により実行される。
【0154】
ステップS1において、ピクチャタイプ毎に1世代分の符号化パラメータ(ピクチャ履歴情報)が符号化パラメータコントローラ122に入力される。
【0155】
ステップS2において、符号化パラメータ分離装置105は、ピクチャ履歴情報にBピクチャに変更したときの符号化パラメータが存在するか否かを判定する。ピクチャ履歴情報にBピクチャに変更したときの符号化パラメータが存在すると判定された場合、ステップS3に進む。
【0156】
ステップS3において、符号化パラメータ分離装置105は、ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在するか否かを判定する。ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在すると判定された場合、ステップS4に進む。
【0157】
ステップS4において、符号化パラメータ分離装置105は、変更可能なピクチャタイプがIピクチャ、Pピクチャ、およびBピクチャであると判断する。
【0158】
ステップS3において、ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在しないと判定された場合、ステップS5に進む。
【0159】
ステップS5において、符号化パラメータ分離装置105は、変更可能なピクチャタイプがIピクチャ、およびBピクチャであると判断する。さらに、符号化パラメータ分離装置105は、特殊処理(Bピクチャの履歴情報に含まれる後方予測ベクトルを使わず、前方予測ベクトルだけを使う)を施すことにより、擬似的にPピクチャに変更可能であると判断する。
【0160】
ステップS2において、ピクチャ履歴情報にBピクチャに変更したときの符号化パラメータが存在しないと判定された場合、ステップS6に進む。
【0161】
ステップS6において、符号化パラメータ分離装置105は、ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在するか否かを判定する。ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在すると判定された場合、ステップS7に進む。
【0162】
ステップS7において、符号化パラメータ分離装置105は、変更可能なピクチャタイプがIピクチャ、およびPピクチャであると判断する。さらに、符号化パラメータ分離装置105は、特殊処理(Pピクチャに履歴情報に含まれる前方予測ベクトルだけを使う)を施すことにより、Bピクチャに変更可能であると判断する。
【0163】
ステップS6において、ピクチャ履歴情報にPピクチャに変更したときの符号化パラメータが存在しないと判定された場合、ステップS8に進む。ステップS8において、符号化パラメータ分離装置105は、動きベクトルが存在しないので、変更可能なピクチャタイプがIピクチャだけである(IピクチャなのでIピクチャ以外には変更できない)と判断する。
【0164】
ステップS4,S5,S7,S8の処理の次にステップS9において、符号化パラメータ分離装置105は、変更可能なピクチャタイプを表示装置(図示せず)に表示してユーザに通知する。
【0165】
図33は、ピクチャタイプ変更の例を示している。ピクチャタイプの変更は、GOPを構成するフレーム数が変更される。すなわち、この例の場合、N=15(GOPのフレーム数N=15)、M=3(GOP内のI、またはPピクチャの出現周期M=3)のフレームから構成されるLong GOP(第1世代)から、N=1,M=1のフレームで構成されるShort GOP(第2世代)に変換され、再度、N=15,M=3のフレームから構成されるLong GOP(第3世代)に変換されている。なお、図中において破線は、GOPの境界を示している。
【0166】
第1世代から第2世代にピクチャタイプが変更される場合において、上述した変更可能ピクチャタイプ判定処理の説明から明らかなように、全てのフレームは、ピクチャタイプをIピクチャに変更することが可能である。このピクチャタイプ変更のとき、動画像(第0世代)が第1世代に変換されたときに演算された全ての動きベクトルは、ピクチャ履歴情報に保存された(残された)状態となる。次に、再度Long GOPに変換される(第2世代から第3世代にピクチャタイプが変更される)場合、第0世代から第1世代に変換されたときのピクチャタイプ毎の動きベクトルが保存されているので、これを再利用することにより、画質劣化を抑えて、再度、Long GOPに変換することが可能となる。
【0167】
図34は、ピクチャタイプ変更の他の例を示している。この例の場合、N=14,M=2であるLong GOP(第1世代)から、N=2,M=2であるShort GOP(第2世代)に変換され、さらに、N=1,M=1であるフレーム数が1のShort GOP(第3世代)に変換されて、フレーム数NがランダムなGOP(第4世代)に変換される。
【0168】
この例においても、第0世代から第1世代に変換されたときのピクチャタイプ毎の動きベクトルが、第3世代から第4世代への変換のときまで保存される。そこで、図34に示すように、複雑にピクチャタイプを変更しても、保存されている符号化パラメータを再利用されることにより、画質劣化を小さく抑えることができる。さらに、保存されている符号化パラメータの量子化スケールを有効に利用すれば画質劣化の少ない符号化を実現できる。
【0169】
この量子化スケールの再利用について、図35を参照して説明する。図35は、所定のフレームが、第1世代から第4世代まで常に、Iピクチャに変換されており、ビットレートだけが、4Mbps,18Mbps、または50Mbpsに変更されていることを示している。
【0170】
例えば、第1世代(4Mbps)から第2世代(18Mbps)への変換の際に、ビットレートの高速化に伴って、細かい量子化スケールで再符号化しても画質は向上しない。なぜならば、過去において粗い量子化ステップで量子化されたデータは、復元しないからである。したがって、図35に示すように、途中でビットレートが高速化しても、それに伴って細かい量子化ステップで量子化することは、情報量が増加するだけであって画質の向上には繋がらない。したがって、過去のもっとも粗い(大きい)量子化スケールを維持するように制御すれば、最も無駄が無く、効率的な符号化が可能となる。
【0171】
上述したように、ビットレートが変更されるときは、過去の量子化スケールの履歴を利用して符号化することは非常に有効である。
【0172】
この量子化制御処理について、図36のフローチャートを参照して説明する。ステップS11において、符号化パラメータ分離装置105は、入力されたピクチャ履歴情報に、いまから変換するピクチャタイプの符号化パラメータが存在するか否かを判定する。変換するピクチャタイプの符号化パラメータが存在すると判定された場合、ステップS12に進む。
【0173】
ステップS12において、符号化パラメータ分離装置105は、ピクチャ履歴情報の対照となる符号化パラメータから量子化スケール(Q_history)を抽出する。
【0174】
ステップS13において、符号化パラメータ分離装置105は、送信バッファ59から量子化回路57にフィードバックされる量子化スケールの候補値Q_feedbackを読み取る。
【0175】
ステップS14において、符号化パラメータ分離装置105は、Q_historyがQ_feedbackよりも大きい(粗い)か否かを判定する。Q_historyがQ_feedbackよりも大きいと判定された場合、ステップS15に進む。
【0176】
ステップS15において、符号化パラメータ分離装置105は、量子化スケールとしてQ_historyを量子化回路57に出力する。量子化回路57は、Q_historyを用いて量子化を実行する。
【0177】
ステップS16において、フレームに含まれる全てのマクロブロックが量子化されたか否かが判定される。全てのマクロブロックが量子化されていないと判定された場合、ステップS13に戻り、ステップS13乃至S16の処理が、全てのマクロブロックが量子化されるまで繰り返される。
【0178】
ステップS14において、Q_historyがQ_feedbackよりも大きくない(細かい)いと判定された場合、ステップS17に進む。
【0179】
ステップS17において、符号化パラメータ分離装置105は、量子化スケールとしてQ_feedbackを量子化回路57に出力する。量子化回路57は、Q_feedbackを用いて量子化を実行する。
【0180】
ステップS11において、変換するピクチャタイプの符号化パラメータが存在しないと判定された場合、ステップS18に進む。
【0181】
ステップS18において、量子化回路57は、送信バッファ59からフィードバックされる量子化スケールの候補値Q_feedbackを受け付ける。
【0182】
ステップS19において、量子化回路57は、Q_feedbackを用いて量子化を実行する。
【0183】
ステップS20において、フレームに含まれる全てのマクロブロックが量子化されたか否かが判定される。全てのマクロブロックが量子化されていないと判定された場合、ステップS18に戻り、ステップS18乃至S20の処理が、全てのマクロブロックが量子化されるまで繰り返される。
【0184】
なお、本実施の形態におけるトランスコーダ101の内部においては、上述したように、復号側と符号側が粗結合されており、符号化パラメータを画像データに多重化させて伝送させたが、図37に示すように、復号装置102と符号化装置106を符号化パラメータ伝送用の高速バス111で接続する(密結合する)ようにしてもよい。
【0185】
図38は、MPEGのビデオストリームをデコードするためのシンタックスを表わした図である。デコーダは、このシンタックスに従ってMPEGビットストリームをデコードすることによって、ビットストリームから意味のある複数のデータ項目(データエレメント)を抽出する。以下に説明するシンタックスは、図において、その関数や条件文は細活字で表わされ、そのデータエレメントは、太活字で表されている。データ項目は、その名称、ビット長、及びそのタイプと伝送順序を示すニーモニック(Mnemonic)で記述されている。
【0186】
まず、この図38に示されているシンタックスにおいて使用されている関数について説明する。
【0187】
next_start_code()関数は、ビットストリーム中に記述されているスタートコードを探すための関数である。よって、この図38に示されたシンタックスにおいて、このnext_start_code()関数の次に、sequence_header()関数とsequence_extension()関数とが順に配置されているので、このビットストリームには、このsequence_header()関数とsequence_extension()関数によって定義されたデータエレメントが記述されている。従って、ビットストリームのデコード時には、このnext_start_code()関数によって、sequence_header()関数とsequence_extension()関数の先頭に記述されているスタートコード(データエレメントの一種)をビットストリーム中から見つけ、それを基準にして、 sequence_header()関数とsequence_extension()関数をさらに見つけ、それらによって定義された各データエレメントをデコードする。
【0188】
尚、sequence_header()関数は、MPEGビットストリームのシーケンス層のヘッダデータを定義するための関数であって、sequence_extension()関数は、MPEGビットストリームのシーケンス層の拡張データを定義するための関数である。
【0189】
sequence_extension()関数の次に配置されている do{ }while構文は、while文によって定義されている条件が真である間、do文の{ }内の関数に基いて記述されたデータエレメントをデータストリーム中から抽出するための構文である。すなわち、 do{ }while構文によって、while文によって定義されている条件が真である間、ビットストリーム中から、do文内の関数に基いて記述されたデータエレメントを抽出するデコード処理が行われる。
【0190】
このwhile文に使用されているnextbits()関数は、ビットストリーム中に現れるビット又はビット列と、次にデコードされるデータエレメントとを比較するための関数である。この図38のシンタックスの例では、nextbits()関数は、ビットストリーム中のビット列とビデオシーケンスの終わりを示すsequence_end_codeとを比較し、ビットストリーム中のビット列とsequence_end_codeとが一致しないときに、このwhile文の条件が真となる。従って、sequence_extension()関数の次に配置されている do{ }while構文は、ビットストリーム中に、ビデオシーケンスの終わりを示すsequence_end_codeが現れない間、do文中の関数によって定義されたデータエレメントがビットストリーム中に記述されていることを示している。
【0191】
ビットストリーム中には、sequence_extension()関数によって定義された各データエレメントの次には、extension_and_user_data(0)関数によって定義されたデータエレメントが記述されている。このextension_and_user_data(0)関数は、MPEGビットストリームのシーケンス層の拡張データとユーザデータを定義するための関数である。
【0192】
このextension_and_user_data(0)関数の次に配置されている do{ }while構文は、while文によって定義されている条件が真である間、do文の{ }内の関数に基いて記述されたデータエレメントを、ビットストリーム中から抽出するための関数である。このwhile文において使用されているnextbits()関数は、ビットストリーム中に現れるビット又はビット列と、picture_start_code又はgroup_start_codeとの一致を判断するための関数であって、ビットストリーム中に現れるビット又はビット列と、picture_start_code又はgroup_start_codeとが一致する場合には、while文によって定義された条件が真となる。よって、このdo{ }while構文は、ビットストリーム中において、picture_start_code又はgroup_start_codeが現れた場合には、そのスタートコードの次に、do文中の関数によって定義されたデータエレメントのコードが記述されているので、このpicture_start_code又はgroup_start_codeによって示されるスタートコードを探し出すことによって、ビットストリーム中からdo文中に定義されたデータエレメントを抽出することができる。
【0193】
このdo文の最初に記述されているif文は、ビットストリーム中にgroup_start_codeが現れた場合、という条件を示しいる。このif文による条件が真である場合には、ビットストリーム中には、このgroup_start_codeの次にgroup_of_picture_header(1)関数及びextension_and_user_data(1)関数によって定義されているデータエレメントが順に記述されている。
【0194】
このgroup_of_picture_header(1)関数は、MPEGビットストリームのGOP層のヘッダデータを定義するための関数であって、 extension_and_user_data(1)関数は、MPEGビットストリームのGOP層の拡張データ(extension_data)及びユーザデータ(user_data)を定義するための関数である。
【0195】
さらに、このビットストリーム中には、group_of_picture_header(1)関数及びextension_and_user_data(1)関数によって定義されているデータエレメントの次に、picture_header()関数とpicture_coding_extension()関数によって定義されたデータエレメントが記述されている。もちろん、先に説明したif文の条件が真とならない場合には、 group_of_picture_header(1)関数及びextension_and_user_data(1)関数によって定義されているデータエレメントは記述されていないので、 extension_and_user_data(0)関数によって定義されているデータエレメントの次に、 picture_header()関数とpicture_coding_extension()関数によって定義されたデータエレメントが記述されている。
【0196】
このpicture_header()関数は、 MPEGビットストリームのピクチャ層のヘッダデータを定義するための関数であって、 picture_coding_extension()関数は、MPEGビットストリームのピクチャ層の第1の拡張データを定義するための関数である。
【0197】
次のwhile文は、このwhile文によって定義されている条件が真である間、次のif文の条件判断を行うための関数である。このwhile文において使用されているnextbits()関数は、ビットストリーム中に現れるビット列と、extension_start_code又はuser_data_start_codeとの一致を判断するための関数であって、ビットストリーム中に現れるビット列と、 extension_start_code又はuser_data_start_codeとが一致する場合には、このwhile文によって定義された条件が真となる。
【0198】
第1のif文は、ビットストリーム中に現れるビット列とextension_start_codeとの一致を判断するための関数である。ビットストリーム中に現れるビット列と32ビットのextension_ start_codeとが一致する場合には、ビットストリーム中において、extension_start_codeの次にextension_data(2)関数によって定義されるデータエレメントが記述されていることを示している。
【0199】
第2のif文は、ビットストリーム中に現れるビット列とuser_data_start_codeとの一致を判断するための構文であって、ビットストリーム中に現れるビット列と32ビットのuser_data_start_codeとが一致する場合には、第3のif文の条件判断が行われる。このuser_data_start_codeは、MPEGビットストリームのピクチャ層のユーザデータエリアの開始を示すためのスタートコードである。
【0200】
第3のif文は、ビットストリーム中に現れるビット列とHistory_Data_IDとの一致を判断するための構文である。ビットストリーム中に現れるビット列とこの8ビットのHistory_Data_IDとが一致する場合には、このMPEGビットストリームのピクチャ層のユーザデータエリアにおいて、この8ビットのHistory_Data_IDによって示されるコードの次に、converted_history_stream()関数によって定義されるデータエレメントが記述されていることを示している。
【0201】
converted_history_stream()関数は、MPEG符号化時に使用したあらゆる符号化パラメータを伝送するための履歴情報及び履歴データを記述するための関数である。このconverted_history_stream()関数によって定義されているデータエレメントの詳細は後述する。また、このHistory_Data_IDは、MPEGビットストリームのピクチャ層のユーザデータエリアに記述されたこの履歴情報及び履歴データが記述されている先頭を示すためのスタートコードである。
【0202】
else文は、第3のif文において、条件が非真であることを示すための構文である。従って、このMPEGビットストリームのピクチャ層のユーザデータエリアにおいて、converted_history_stream()関数によって定義されたデータエレメントが記述されていない場合には、user_data()関数によって定義されたデータエレメントが記述されている。
【0203】
picture_data()関数は、MPEGビットストリームのピクチャ層のユーザデータの次に、スライス層及びマクロブロック層に関するデータエレメントを記述するための関数である。通常は、このpicture_data()関数によって示されるデータエレメントは、ビットストリームのピクチャ層のユーザデータエリアに記述されたconverted_history_stream()関数によって定義されるデータエレメント又はuser_data()関数によって定義されたデータエレメントの次に記述されているが、ピクチャ層のデータエレメントを示すビットストリーム中に、extension_start_code又はuser_data_start_code が存在しない場合には、このpicture_data()関数によって示されるデータエレメントは、 picture_coding_extension()関数によって定義されるデータエレメントの次に記述されるている。
【0204】
このpicture_data()関数によって示されるデータエレメントの次には、sequence_header()関数とsequence_extension()関数とによって定義されたデータエレメントが順に配置されている。このsequence_header()関数とsequence_extension()関数によって記述されたデータエレメントは、ビデオストリームのシーケンスの先頭に記述されたsequence_header()関数とsequence_extension()関数によって記述されたデータエレメントと全く同じである。このように同じデータをストリーム中に記述する理由は、ビットストリーム受信装置側でデータストリームの途中(例えばピクチャ層に対応するビットストリーム部分)から受信が開始された場合に、シーケンス層のデータを受信できなくなり、ストリームをデコード出来なくなることを防止するためである。
【0205】
この最後のsequence_header()関数とsequence_extension()関数とによって定義されたデータエレメントの次、つまり、データストリームの最後には、シーケンスの終わりを示す32ビットのsequence_end_codeが記述されている。
【0206】
以上のシンタックスの基本的な構成の概略を示すと、図39に示すようになる。
【0207】
次に、converted_history_stream()関数によって定義されたヒストリーストリームに関して説明する。
【0208】
このconverted_history_stream()は、MGEGのピクチャ層のユーザデータエリアに履歴情報を示すヒストリーストリームを挿入するための関数である。尚、「converted」の意味は、スタートエミュレーションを防止するために、ユーザエリアに挿入すべき履歴データから構成される履歴ストリームの少なくとも22ビット毎にマーカービット(1ビット)を挿入する変換処理を行ったストリームであることを意味している。
【0209】
このconverted_history_stream()は、以下に説明する固定長の履歴ストリーム(図40乃至図46)又は可変長の履歴ストリーム(図47)のいずれかの形式で記述される。エンコーダ側において固定長の履歴ストリームを選択した場合には、デコーダ側において履歴ストリームから各データエレメントをデコードするための回路及びソフトウエアが簡単になるというメリットがある。一方、エンコーダ側において可変長の履歴ストリームを選択した場合には、エンコーダにおいてピクチャ層のユーザエリアに記述される履歴情報(データエレメント)を必要に応じて任意に選択することができるので、履歴ストリームのデータ量を少なくすることができ、その結果、符号化されたビットストリーム全体のデータレートを低減することができる。
【0210】
本発明において説明する「履歴情報」「履歴データ」「履歴パラメータ」とは、過去の符号化処理において使用した符号化パラメータ(又はデータエレメント)のことであって、現在の(最終段の)符号化処理において使用した符号化パラメータのことではない。例えば、第1世代の符号化処理において、あるピクチャをIピクチャで符号化して伝送し、次なる第2世代の符号化処理において、このピクチャを今度はPピクチャとして符号化して伝送し、さらに、第3世代の符号化処理において、このピクチャをBピクチャで符号化して伝送する例をあげて説明する。第3世代の符号化処理において使用した符号化パラメータが、第3世代の符号化処理において生成された符号化ビットストリームのシーケンス層、GOP層、ピクチャ層、スライス層及びマクロブロック層の所定位置に記述されている。一方、過去の符号化処理である第1世代及び第2世代の符号化処理において使用した符号化パラメータは、第3世代の符号化処理において使用した符号化パラメータが記述されるシーケンス層やGOP層に記述されるのでは無く、既に説明したシンタックスに従って、符号化パラメータの履歴情報として、ピクチャ層のユーザデータエリアに記述される。
【0211】
まず、固定長の履歴ストリームシンタックスについて図40乃至図46を参照して説明する。
【0212】
最終段(例えば第3世代)の符号化処理において生成されたビットストリームのピクチャ層のユーザエリアには、まず最初に、過去(例えば第1世代及び第2世代)の符号化処理において使用されていたシーケンス層のシーケンスヘッダに関する符号化パラメータが、履歴ストリームとして挿入される。尚、過去の符号化処理において生成されたビットストリームのシーケンス層のシーケンスヘッダ等の履歴情報は、最終段の符号化処理において生成されたビットストリームのシーケンス層のシーケンスヘッダに挿入されることは無いという点に注意すべきである。
【0213】
過去の符号化処理で使用したシーケンスヘッダに関するデータエレメントは、sequence_header_code、sequence_header_present_flag、horizontal_size_value、vertical_size_value、aspect_ratio_information、frame_rate_code、bit_rate_value、marker_bit、VBV_buffer_size_value、constrained_parameter_flag、load_intra_quantizer_matrix、intra_quantizer_matrix、load_non_intra_quantizer_matrix、及びnon_intra_quantizer_matrix等から構成される。
【0214】
sequence_header_codeは、シーケンス層のスタート同期コードを表すデータである。sequence_header_present_flagは、sequence_header内のデータが有効か無効かを示すデータである。 horizontal_size_valueは、画像の水平方向の画素数の下位12ビットから成るデータである。vertical_size_valueは、画像の縦のライン数の下位12ビットからなるデータである。aspect_ratio_informationは、画素のアスペクト比(縦横比)または表示画面アスペクト比を表すデータである。frame_rate_codeは、画像の表示周期を表すデータである。
【0215】
bit_rate_valueは、発生ビット量に対する制限のためのビット・レートの下位18ビット(400bsp単位で切り上げる)データである。marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。VBV_buffer_size_valueは、発生符号量制御用の仮想バッファ(ビデオバッファベリファイヤー)の大きさを決める値の下位10ビットデータである。constrained_parameter_flagは、各パラメータが制限以内であることを示すデータである。load_intra_quantizer_matrixは、イントラMB用量子化マトリックス・データの存在を示すデータである。intra_quantizer_matrixは、イントラMB用量子化マトリックスの値を示すデータである。load_non_intra_quantizer_matrixは、非イントラMB用量子化マトリックス・データの存在を示すデータである。non_intra_quantizer_matrixは、非イントラMB用量子化マトリックスの値を表すデータである。
【0216】
次に、最終段の符号化処理において生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたシーケンス層のシーケンスエクステンションを表わすデータエレメントが、履歴ストリームとして記述される。
【0217】
この過去の符号化処理で使用したシーケンスエクステンションを表わすデータエレメントは、 extension_start_code、extension_start_code_identifier、sequence_extension_present_flag、profile_and_level_indication、progressive_sequence、chroma_format、horizontal_size_extension、vertical_size_extension、bit_rate_extension、vbv_buffer_size_extension、low_delay、frame_rate_extension_n 、及び frame_rate_extension_d等のデータエレメントである。
【0218】
extension_start_codeは、エクステンションデータのスタート同期コードを表すデータである。extension_start_code_identifierは、どの拡張データが送られるかを示すデータである。sequence_extension_present_flagは、シーケンスエクステンション内のデータが有効であるか無効であるかを示すデータである。profile_and_level_indicationは、ビデオデータのプロファイルとレベルを指定するためのデータである。progressive_sequenceは、ビデオデータが順次走査であることを示すデータである。chroma_formatは、ビデオデータの色差フォーマットを指定するためのデータである。
【0219】
horizontal_size_extensionは、シーケンスヘッダのhorizntal_size_valueに加える上位2ビットのデータである。vertical_size_extensionは、シーケンスヘッダのvertical_size_valueに加える上位2ビットのデータである。bit_rate_extensionは、シーケンスヘッダのbit_rate_valueに加える上位12ビットのデータである。vbv_buffer_size_extensionは、シーケンスヘッダのvbv_buffer_size_valueに加える上位8ビットのデータである。low_delayは、Bピクチャを含まないことを示すデータである。frame_rate_extension_nは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。frame_rate_extension_dは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。
【0220】
続いて、ビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたシーケンス層のシーケンスディスプレイエクステンションを表わすデータエレメントが、履歴ストリームとして記述される。
【0221】
このシーケンスディスプレイエクステンションとして記述されているデータエレメントは、extension_start_code、extension_start_code_identifier、sequence_display_extension_present_flag、video_format、color_description、color_primaries、transfer_characteristics、matrix_coeffients、display_horizontal_size、及びdisplay_vertical_sizeから構成される。
【0222】
extension_start_codeは、エクステンションデータのスタート同期コードを表すデータである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。sequence_display_extension_present_flagは、シーケンスディスプレイエクステンション内のデータエレメントが有効か無効かを示すデータである。video_formatは、原信号の映像フォーマットを表すデータである。color_descriptionは、色空間の詳細データがあることを示すデータである。color_primariesは、原信号の色特性の詳細を示すデータである。transfer_characteristicsは、光電変換がどのように行われたのかの詳細を示すデータである。matrix_coeffientsは、原信号が光の三原色からどのように変換されたかの詳細を示すデータである。display_horizontal_sizeは、意図するディスプレイの活性領域(水平サイズ)を表すデータである。display_vertical_sizeは、意図するディスプレイの活性領域(垂直サイズ)を表すデータである。
【0223】
続いて、最終段の符号化処理において生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において生成されたマクロブロックの位相情報を示すマクロブロックアサイメントデータ(macroblock_assignment_in_user_data)が、履歴ストリームとして記述される。
【0224】
このマクロブロックの位相情報を示すmacroblock_assignment_in_user_dataは、macroblock_assignment_present_flag、v_phase、h_phase等のデータエレメントから構成される。
【0225】
このmacroblock_assignment_present_flagは、macroblock_assignment_in_user_data内のデータエレメントが有効か無効かを示すデータである。 v_phaseは、画像データからマクロブロックを切り出す際の垂直方向の位相情報を示すデータである。 h_phaseは、画像データからマクロブロックを切り出す際の水平方向の位相情報を示すデータである。
【0226】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたGOP層のGOPヘッダを表わすデータエレメントが、履歴ストリームとして記述されている。
【0227】
このGOPヘッダを表わすデータエレメントは、group_start_code、group_of_picture_header_present_flag、time_code、closed_gop、及びbroken_linkから構成される。
【0228】
group_start_codeは、GOP層の開始同期コードを示すデータである。 group_of_picture_header_present_flagは、 group_of_picture_header内のデータエレメントが有効であるか無効であるかを示すデータである。 time_codeは、GOPの先頭ピクチャのシーケンスの先頭からの時間を示すタイムコードである。closed_gopは、GOP内の画像が他のGOPから独立再生可能なことを示すフラグデータである。broken_linkは、編集などのためにGOP内の先頭のBピクチャが正確に再生できないことを示すフラグデータである。
【0229】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたピクチャ層のピクチャヘッダを表わすデータエレメントが、履歴ストリームとして記述されている。
【0230】
このピクチャヘッダに関するデータエレメントは、picture_start_code、temporal_reference、picture_coding_type、vbv_delay、full_pel_forward_vector、forward_f_code、full_pel_backward_vector、及び backward_f_codeから構成される。
【0231】
具体的には、picture_start_codeは、ピクチャ層の開始同期コードを表すデータである。temporal_referenceは、ピクチャの表示順を示す番号でGOPの先頭でリセットされるデータである。picture_coding_typeは、ピクチャタイプを示すデータである。vbv_delayは、ランダムアクセス時の仮想バッファの初期状態を示すデータである。full_pel_forward_vectorは、順方向動きベクトルの精度が整数単位か半画素単位かを示すデータである。forward_f_codeは、順方向動きベクトル探索範囲を表すデータである。full_pel_backward_vectorは、逆方向動きベクトルの精度が整数単位か半画素単位かを示すデータである。backward_f_codeは、逆方向動きベクトル探索範囲を表すデータである。
【0232】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたピクチャ層のピクチャコーディングエクステンションが、履歴ストリームとして記述されている。
【0233】
このピクチャコーディングエクステンションに関するデータエレメントは、extension_start_code、extension_start_code_identifier、f_code[0][0]、f_code[0][1]、f_code[1][0]、f_code[1][1]、intra_dc_precision、picture_structure、top_field_first、frame_predictive_frame_dct、concealment_motion_vectors、q_scale_type、intra_vlc_format、alternate_scan、repeat_firt_field、chroma_420_type、progressive_frame、composite_display_flag、v_axis、field_sequence、sub_carrier、burst_amplitude、及びsub_carrier_phaseから構成される。
【0234】
extension_start_codeは、ピクチャ層のエクステンションデータのスタートを示す開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 f_code[0][0]は、フォワード方向の水平動きベクトル探索範囲を表すデータである。f_code[0][1]は、フォワード方向の垂直動きベクトル探索範囲を表すデータである。f_code[1][0]は、バックワード方向の水平動きベクトル探索範囲を表すデータである。f_code[1][1]は、バックワード方向の垂直動きベクトル探索範囲を表すデータである。
【0235】
intra_dc_precisionは、DC係数の精度を表すデータである。picture_structureは、フレームストラクチャかフィールドストラクチャかを示すデータである。フィールドストラクチャの場合は、上位フィールドか下位フィールドかもあわせて示すデータである。top_field_firstは、フレームストラクチャの場合、最初のフィールドが上位か下位かを示すデータである。frame_predictive_frame_dctは、フレーム・ストラクチャの場合、フレーム・モードDCTの予測がフレーム・モードだけであることを示すデータである。concealment_motion_vectorsは、イントラマクロブロックに伝送エラーを隠蔽するための動きベクトルがついていることを示すデータである。
【0236】
q_scale_typeは、線形量子化スケールを利用するか、非線形量子化スケールを利用するかを示すデータである。intra_vlc_formatは、イントラマクロブロックに、別の2次元VLCを使うかどうかを示すデータである。alternate_scanは、ジグザグスキャンを使うか、オルタネート・スキャンを使うかの選択を表すデータである。repeat_firt_fieldは、2:3プルダウンの際に使われるデータである。chroma_420_typeは、信号フォーマットが4:2:0の場合、次のprogressive_frame と同じ値、そうでない場合は0を表すデータである。progressive_frameは、このピクチャが、順次走査できているかどうかを示すデータである。composite_display_flagは、ソース信号がコンポジット信号であったかどうかを示すデータである。
【0237】
v_axisは、ソース信号が、PALの場合に使われるデータである。field_sequenceは、ソース信号が、PALの場合に使われるデータである。sub_carrierは、ソース信号が、PALの場合に使われるデータである。burst_amplitudeは、ソース信号が、PALの場合に使われるデータである。sub_carrier_phaseは、ソース信号が、PALの場合に使われるデータである。
【0238】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用された量子化マトリックスエクステンションが、履歴ストリームとして記述されている。
【0239】
この量子化マトリックスエクステンションに関するデータエレメントは、extension_start_code、extension_start_code_identifier、quant_matrix_extension_present_flag、load_intra_quantizer_matrix、intra_quantizer_matrix[64]、load_non_intra_quantizer_matrix、non_intra_quantizer_matrix[64]、load_chroma_intra_quantizer_matrix、chroma_intra_quantizer_matrix[64]、load_chroma_non_intra_quantizer_matrix、及びchroma_non_intra_quantizer_matrix[64] から構成される。
【0240】
extension_start_codeは、この量子化マトリックスエクステンションのスタートを示す開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 quant_matrix_extension_present_flagは、この量子化マトリックスエクステンション内のデータエレメントが有効か無効かを示すためのデータである。load_intra_quantizer_matrixは、イントラマクロブロック用の量子化マトリックスデータの存在を示すデータである。intra_quantizer_matrixは、イントラマクロブロック用の量子化マトリックスの値を示すデータである。
【0241】
load_non_intra_quantizer_matrixは、非イントラマクロブロック用の量子化マトリックスデータの存在を示すデータである。non_intra_quantizer_matrixは、非イントラマクロブロック用の量子化マトリックスの値を表すデータである。load_chroma_intra_quantizer_matrixは、色差イントラマクロブロック用の量子化マトリックス・データの存在を示すデータである。chroma_intra_quantizer_matrixは、色差イントラマクロブロック用の量子化マトリックスの値を示すデータである。load_chroma_non_intra_quantizer_matrixは、色差非イントラマクロブロック用の量子化マトリックス・データの存在を示すデータである。chroma_non_intra_quantizer_matrixは、色差非イントラマクロブロック用の量子化マトリックスの値を示すデータである。
【0242】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたコピーライトエクステンションが、履歴ストリームとして記述されている。
【0243】
このコピーライトエクステンションに関するデータエレメントは、extension_start_code、extension_start_code_itentifier、copyright_extension_present_flag、copyright_flag、copyright_identifier、original_or_copy、copyright_number_1、copyright_number_2、及び copyright_number_3から構成される。
【0244】
extension_start_codeは、コピーライトエクステンションのスタート示す開始コードである。extension_start_code_itentifierのどのエクステンションデータが送られるかを示すコードである。 copyright_extension_present_flagは、このコピーライトエクステンション内のデータエレメントが有効か無効かを示すためのデータである。copyright_flagは、次のコピーライトエクステンション又はシーケンスエンドまで、符号化されたビデオデータに対してコピー権が与えられているか否かを示す。
【0245】
copyright_identifierは、ISO/IEC JTC/SC29によって指定されたコピー権の登録機関を識別するためのデータである。original_or_copyは、ビットストリーム中のデータが、オリジナルデータであるかコピーデータであるかを示すデータである。copyright_number_1は、コピーライトナンバーのビット44から63を表わすデータである。copyright_number_2は、コピーライトナンバーのビット22から43を表わすデータである。copyright_number_3は、コピーライトナンバーのビット0から21を表わすデータである。
【0246】
続いて、最終段の符号化処理によって生成されたビットストリームのピクチャ層のユーザエリアには、過去の符号化処理において使用されたピクチャディスプレイエクステンション( picture_display_extension )が、履歴ストリームとして記述されている。
【0247】
このピクチャディスプレイエクステンションを表わすデータエレメントは、extension_start_code、extension_start_code_identifier、picture_display_extension_present_flag、frame_center_horizontal_offset_1、frame_center_vertical_offset_1、frame_center_horizontal_offset_2、frame_center_vertical_offset_2、frame_center_horizontal_offset_3、及びframe_center_vertical_offset_3から構成される。
【0248】
extension_start_codeは、ピクチャディスプレイエクステンションのスタートを示すための開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。picture_display_extension_present_flagは、ピクチャディスプレイエクステンション内のデータエレメントが有効か無効かを示すデータである。frame_center_horizontal_offsetは、表示エリアの水平方向のオフセットを示すデータであって、3つのオフセット値まで定義することができる。frame_center_vertical_offsetは、表示エリアを垂直方向のオフセットを示すデータであって、3つのオフセット値まで定義することができる。
【0249】
最終段の符号化処理において生成されたビットストリームのピクチャ層のユーザエリアには、既に説明したピクチャディスプレイエクステンションを表わす履歴情報の次に、過去の符号化処理において使用されたユーザデータが、履歴ストリームとして記述されている。
【0250】
このユーザデータの次には、過去の符号化処理において使用されたマクロブロック層に関する情報が、履歴ストリームとして記述されている。
【0251】
このマクロブロック層に関する情報は、macroblock_address_h、macroblock_address_v、slice_header_present_flag、skipped_macroblock_flag等のマクロブロックの位置に関するデータエレメントと、macroblock_quant、macroblock_motion_forward、macroblock_motion_backward、mocroblock_pattern、macroblock_intra、spatial_temporal_weight_code_flag、frame_motion_type、及びdct_type等のマクロブロックモードに関するデータエレメントと、quantiser_scale_code等の量子化ステップ制御に関するデータエレメントと、PMV[0][0][0]、PMV[0][0][1]、motion_vertical_field_select[0][0]、PMV[0][1][0]、PMV[0][1][1]、motion_vertical_field_select[0][1]、PMV[1][0][0]、PMV[1][0][1]、motion_vertical_field_select[1][0]、PMV[1][1][0]、PMV[1][1][1]、motion_vertical_field_select[1][1]等の動き補償に関するデータエレメントと、coded_block_pattern等のマクロブロックパターンに関するデータエレメントと、num_mv_bits、num_coef_bits、及びnum_other_bits等の発生符号量に関するデータエレメントから構成されている。
【0252】
以下にマクロブロック層に関するデータエレメントについて詳細に説明する。
【0253】
macroblock_address_hは、現在のマクロブロックの水平方向の絶対位置を定義するためのデータである。macroblock_address_vは、現在のマクロブロックの垂直方向の絶対位置を定義するためのデータである。slice_header_present_flagは、このマクロブロックがスライス層の先頭であり、スライスヘッダを伴なうか否かを示すデータである。skipped_macroblock_flagは、復号化処理においてこのマクロブロックをスキップするか否かを示すデータでる。
【0254】
macroblock_quantは、後述する図65乃至図67に示されたマクロブロックタイプ( macroblock_type )から導かれるデータであって、quantiser_scale_codeがビットストリーム中に現れるか否かを示すデータである。macroblock_motion_forwardは、図65乃至図67に示されたマクロブロックタイプから導かれるデータであって、復号化処理で使用されるデータである。macroblock_motion_backwardは、図65乃至図67に示されたマクロブロックタイプから導かれるデータであって、復号化処理で使用されるデータである。mocroblock_patternは、図65乃至図67に示されたマクロブロックタイプから導かれるデータであって、coded_block_patternがビットストリーム中に現れるか否かを示すデータである。
【0255】
macroblock_intraは、図65乃至図67に示されたマクロブロックタイプから導かれるデータであって、復号化処理で使用されるデータである。spatial_temporal_weight_code_flagは、図65乃至図67に示されたマクロブロックタイプから導かれるデータであって、時間スケーラビリティで下位レイヤ画像のアップサンプリング方法を示すspatial_temporal_weight_codeは、ビットストリーム中に存在するか否かを示すデータである。
【0256】
frame_motion_typeは、フレームのマクロブロックの予測タイプを示す2ビットのコードである。予測ベクトルが2個でフィールドベースの予測タイプであれば「00」であって、予測ベクトルが1個でフィールドベースの予測タイプであれば「01」であって、予測ベクトルが1個でフレームベースの予測タイプであれば「10」であって、予測ベクトルが1個でディアルプライムの予測タイプであれば「11」である。field_motion_typeは、フィールドのマクロブロックの動き予測を示す2ビットのコードである。予測ベクトルが1個でフィールドベースの予測タイプであれば「01」であって、予測ベクトルが2個で18×8マクロブロックベースの予測タイプであれば「10」であって、予測ベクトルが1個でディアルプライムの予測タイプであれば「11」である。dct_typeは、DCTがフレームDCTモードか、フィールドDCTモードかを示すデータである。quantiser_scale_codeはマクロブロックの量子化ステップサイズを示すデータである。
【0257】
次に動きベクトルに関するデータエレメントについて説明する。動きベクトルは、復号時に必要な動きベクトルを減少させるために、先に符号化されたベクトルに関し差分として符号化される。動きベクトルの復号を行うために復号器は、4個の動きベクトル予測値(それぞれ水平及び垂直成分を伴なう)を維持しなければいけない。この予測動きベクトルをPMV[r][s][v]と表わすことにしている。[r]は、マクロブロックにおける動きベクトルが第1のベクトルであるのか、第2のベクトルであるのかを示すフラグであって、マクロブロックにおけるベクトルが第1のベクトルである場合には「0」となって、マクロブロックにおけるベクトルが第2のベクトルである場合には「1」となる。[s]は、マクロブロックにおける動きベクトルの方向が、前方向であるのか後方向であるのかを示すフラグであって、前方向動きベクトルの場合には「0」となって、後方向動きベクトルの場合には「1」となる。[v]は、マクロブロックにおけるベクトルの成分が、水平方向であるのか垂直方向であるのかを示すフラグであって、水平方向成分の場合には「0」となって、垂直方向成分の場合には「1」となる。
【0258】
従って、PMV[0][0][0]は、第1のベクトルの前方向の動きベクトルの水平方向成分のデータを表わし、PMV[0][0][1]は、第1のベクトルの前方向の動きベクトルの垂直方向成分のデータを表わし、PMV[0][1][0]は、第1のベクトルの後方向の動きベクトルの水平方向成分のデータを表わし、PMV[0][1][1]は、第1のベクトルの後方向の動きベクトルの垂直方向成分のデータを表わし、 PMV[1][0][0]は、第2のベクトルの前方向の動きベクトルの水平方向成分のデータを表わし、PMV[1][0][1]は、第2のベクトルの前方向の動きベクトルの垂直方向成分のデータを表わし、 PMV[1][1][0]は、第2のベクトルの後方向の動きベクトルの水平方向成分のデータを表わし、PMV[1][1][1] は、第2のベクトルの後方向の動きベクトルの垂直方向成分のデータを表わしている。
【0259】
motion_vertical_field_select[r][s]は、予測の形式にいずれの参照フィールドを使用するのかを示すデータである。このmotion_vertical_field_select[r][s]が「0」の場合には、トップ参照フィールドを使用し、「1」の場合には、ボトム参照フィールドを使用することを示している。
【0260】
よって、motion_vertical_field_select[0][0]は、第1のベクトルの前方向の動きベクトルを生成する際の参照フィールドを示し、motion_vertical_field_select[0][1]は、第1のベクトルの後方向の動きベクトルを生成する際の参照フィールドを示し、motion_vertical_field_select[1][0]は、第2のベクトルの前方向の動きベクトルを生成する際の参照フィールドを示し、motion_vertical_field_select[1][1]は、第2ベクトルの後方向の動きベクトルを生成する際の参照フィールドを示している。
【0261】
coded_block_patternは、DCT係数を格納する複数のDCTブロックのうち、どのDCTブロックに、有意係数(非0係数)があるかを示す可変長のデータである。num_mv_bitsは、マクロブロック中の動きベクトルの符号量を示すデータである。num_coef_bitsは、マクロブロック中のDCT係数の符号量を示すデータである。num_other_bitsは、マクロブロックの符号量で、動きベクトル及びDCT係数以外の符号量を示すデータである。
【0262】
次に、可変長の履歴ストリームから各データエレメントをデコードするためのシンタックスについて、図47乃至図64を参照して説明する。
【0263】
この可変長の履歴ストリームは、next_start_code()関数、sequence_header()関数、sequence_extension()関数、extension_and_user_data(0)関数、group_of_picture_header()関数、extension_and_user_data(1)関数、picture_header()関数、picture_coding_extension()関数、extension_and_user_data(2)関数、及びpicture_data()関数によって定義されたデータエレメントによって構成される。
【0264】
next_start_code()関数は、ビットストリーム中に存在するスタートコードを探すための関数であるので、履歴ストリームの最も先頭には、図48に示すような、過去の符号化処理において使用されたデータエレメントであってsequence_header()関数によって定義されたデータエレメントが記述されている。
【0265】
sequence_header()関数によって定義されたデータエレメントは、sequence_header_code、sequence_header_present_flag、horizontal_size_value、vertical_size_value、aspect_ratio_information、frame_rate_code、bit_rate_value、marker_bit、VBV_buffer_size_value、constrained_parameter_flag、load_intra_quantizer_matrix、intra_quantizer_matrix、load_non_intra_quantizer_matrix、及びnon_intra_quantizer_matrix等である。
【0266】
sequence_header_codeは、シーケンス層のスタート同期コードを表すデータである。sequence_header_present_flagは、sequence_header内のデータが有効か無効かを示すデータである。 horizontal_size_valueは、画像の水平方向の画素数の下位12ビットから成るデータである。vertical_size_valueは、画像の縦のライン数の下位12ビットからなるデータである。aspect_ratio_informationは、画素のアスペクト比(縦横比)または表示画面アスペクト比を表すデータである。frame_rate_codeは、画像の表示周期を表すデータである。bit_rate_valueは、発生ビット量に対する制限のためのビット・レートの下位18ビット(400bsp単位で切り上げる)データである。
【0267】
marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。VBV_buffer_size_valueは、発生符号量制御用の仮想バッファ(ビデオバッファベリファイヤー)の大きさを決める値の下位10ビットデータである。constrained_parameter_flagは、各パラメータが制限以内であることを示すデータである。load_intra_quantizer_matrixは、イントラMB用量子化マトリックス・データの存在を示すデータである。intra_quantizer_matrixは、イントラMB用量子化マトリックスの値を示すデータである。load_non_intra_quantizer_matrixは、非イントラMB用量子化マトリックス・データの存在を示すデータである。non_intra_quantizer_matrixは、非イントラMB用量子化マトリックスの値を表すデータである。
【0268】
sequence_header()関数によって定義されたデータエレメントの次には、図49で示すような、sequence_extension()関数によって定義されたデータエレメントが、履歴ストリームとして記述されている。
【0269】
sequence_extension()関数によって定義されたデータエレメントとは、extension_start_code、extension_start_code_identifier、sequence_extension_present_flag、profile_and_level_indication、progressive_sequence、chroma_format、horizontal_size_extension、vertical_size_extension、bit_rate_extension、vbv_buffer_size_extension、low_delay、frame_rate_extension_n 、及び frame_rate_extension_d等のデータエレメントである。
【0270】
extension_start_codeは、エクステンションデータのスタート同期コードを表すデータである。extension_start_code_identifierは、どの拡張データが送られるかを示すデータである。sequence_extension_present_flagは、シーケンスエクステンション内のデータが有効であるか無効であるかを示すスデータである。profile_and_level_indicationは、ビデオデータのプロファイルとレベルを指定するためのデータである。progressive_sequenceは、ビデオデータが順次走査であることを示すデータである。chroma_formatは、ビデオデータの色差フォーマットを指定するためのデータである。horizontal_size_extensionは、シーケンスヘッダのhorizntal_size_valueに加える上位2ビットのデータである。vertical_size_extensionは、シーケンスヘッダのvertical_size_value加える上位2ビットのデータである。bit_rate_extensionは、シーケンスヘッダのbit_rate_valueに加える上位12ビットのデータである。vbv_buffer_size_extensionは、シーケンスヘッダのvbv_buffer_size_valueに加える上位8ビットのデータである。
【0271】
low_delayは、Bピクチャを含まないことを示すデータである。frame_rate_extension_nは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。frame_rate_extension_dは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。
【0272】
sequence_extension()関数によって定義されたデータエレメントの次には、図50に示すようなextension_and_user_data(0)関数によって定義されたデータエレメントが、履歴ストリームとして記述されている。 extension_and_user_data(i)関数は、「i」が2以外のときは、extension_data()関数によって定義されるデータエレメントは記述せずに、user_data()関数によって定義されるデータエレメントのみを履歴ストリームとして記述する。よって、 extension_and_user_data(0)関数は、 user_data()関数によって定義されるデータエレメントのみを履歴ストリームとして記述する。
【0273】
user_data()関数は、図51に示されたようなシンタックスに基いて、ユーザデータを履歴ストリームとして記述する。
【0274】
extension_and_user_data(0)関数によって定義されたデータエレメントの次には、図52に示すようなgroup_of_picture_header()関数によって定義されたデータエレメント、及びextension_and_user_data(1)関数によって定義されるデータエレメントが、履歴ストリームとして記述されている。但し、履歴ストリーム中に、GOP層のスタートコードを示すgroup_start_codeが記述されている場合にのみ、 group_of_picture_header()関数によって定義されたデータエレメント、及びextension_and_user_data(1)関数によって定義されるデータエレメントが記述されている。
【0275】
group_of_picture_header()関数によって定義されたデータエレメントは、group_start_code、group_of_picture_header_present_flag、time_code、closed_gop、及びbroken_linkから構成される。
【0276】
group_start_codeは、GOP層の開始同期コードを示すデータである。 group_of_picture_header_present_flagは、 group_of_picture_header内のデータエレメントが有効であるか無効であるかを示すデータである。 time_codeは、GOPの先頭ピクチャのシーケンスの先頭からの時間を示すタイムコードである。closed_gopは、GOP内の画像が他のGOPから独立再生可能なことを示すフラグデータである。broken_linkは、編集などのためにGOP内の先頭のBピクチャが正確に再生できないことを示すフラグデータである。
【0277】
extension_and_user_data(1)関数は、 extension_and_user_data(0)関数と同じように、user_data()関数によって定義されるデータエレメントのみを履歴ストリームとして記述する。
【0278】
もし、履歴ストリーム中に、GOP層のスタートコードを示すgroup_start_codeが存在しない場合には、これらのgroup_of_picture_header()関数及びextension_and_user_data(1)関数によって定義されるデータエレメントは、履歴ストリーム中には記述されていない。その場合には、 extension_and_user_data(0)関数によって定義されたデータエレメントの次に、picture_headr()関数によって定義されたデータエレメントが履歴ストリームとして記述されている。
【0279】
picture_headr()関数によって定義されたデータエレメントは、図53に示すように、picture_start_code、temporal_reference、picture_coding_type、vbv_delay、full_pel_forward_vector、forward_f_code、full_pel_backward_vector、backward_f_code、extra_bit_picture、及びextra_information_pictureである。
【0280】
具体的には、picture_start_codeは、ピクチャ層の開始同期コードを表すデータである。temporal_referenceは、ピクチャの表示順を示す番号でGOPの先頭でリセットされるデータである。picture_coding_typeは、ピクチャタイプを示すデータである。vbv_delayは、ランダムアクセス時の仮想バッファの初期状態を示すデータである。full_pel_forward_vectorは、順方向動きベクトルの精度が整数単位か半画素単位かを示すデータである。forward_f_codeは、順方向動きベクトル探索範囲を表すデータである。full_pel_backward_vectorは、逆方向動きベクトルの精度が整数単位か半画素単位かを示すデータである。backward_f_codeは、逆方向動きベクトル探索範囲を表すデータである。 extra_bit_pictureは、後続する追加情報の存在を示すフラグである。このextra_bit_pictureが「1」の場合には、次にextra_information_pictureが存在し、extra_bit_pictureが「0」の場合には、これに続くデータが無いことを示している。extra_information_pictureは、規格において予約された情報である。
【0281】
picture_headr()関数によって定義されたデータエレメントの次には、図54に示すようなpicture_coding_extension()関数によって定義されたデータエレメントが、履歴ストリームとして記述されている。
【0282】
このpicture_coding_extension()関数によって定義されたデータエレメントとは、extension_start_code、extension_start_code_identifier、f_code[0][0]、f_code[0][1]、f_code[1][0]、f_code[1][1]、intra_dc_precision、picture_structure、top_field_first、frame_predictive_frame_dct、concealment_motion_vectors、q_scale_type、intra_vlc_format、alternate_scan、repeat_firt_field、chroma_420_type、progressive_frame、composite_display_flag、v_axis、field_sequence、sub_carrier、burst_amplitude、及びsub_carrier_phaseから構成される。
【0283】
extension_start_codeは、ピクチャ層のエクステンションデータのスタートを示す開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 f_code[0][0]は、フォワード方向の水平動きベクトル探索範囲を表すデータである。f_code[0][1]は、フォワード方向の垂直動きベクトル探索範囲を表すデータである。f_code[1][0]は、バックワード方向の水平動きベクトル探索範囲を表すデータである。f_code[1][1]は、バックワード方向の垂直動きベクトル探索範囲を表すデータである。intra_dc_precisionは、DC係数の精度を表すデータである。
【0284】
picture_structureは、フレームストラクチャかフィールドストラクチャかを示すデータである。フィールドストラクチャの場合は、上位フィールドか下位フィールドかもあわせて示すデータである。top_field_firstは、フレームストラクチャの場合、最初のフィールドが上位か下位かを示すデータである。frame_predictive_frame_dctは、フレーム・ストラクチャの場合、フレーム・モードDCTの予測がフレーム・モードだけであることを示すデータである。concealment_motion_vectorsは、イントラマクロブロックに伝送エラーを隠蔽するための動きベクトルがついていることを示すデータである。q_scale_typeは、線形量子化スケールを利用するか、非線形量子化スケールを利用するかを示すデータである。intra_vlc_formatは、イントラマクロブロックに、別の2次元VLCを使うかどうかを示すデータである。
【0285】
alternate_scanは、ジグザグスキャンを使うか、オルタネート・スキャンを使うかの選択を表すデータである。repeat_firt_fieldは、2:3プルダウンの際に使われるデータである。chroma_420_typeは、信号フォーマットが4:2:0の場合、次のprogressive_frame と同じ値、そうでない場合は0を表すデータである。progressive_frameは、このピクチャが、順次走査できているかどうかを示すデータである。composite_display_flagは、ソース信号がコンポジット信号であったかどうかを示すデータである。v_axisは、ソース信号が、PALの場合に使われるデータである。field_sequenceは、ソース信号が、PALの場合に使われるデータである。sub_carrierは、ソース信号が、PALの場合に使われるデータである。burst_amplitudeは、ソース信号が、PALの場合に使われるデータである。sub_carrier_phaseは、ソース信号が、PALの場合に使われるデータである。
【0286】
picture_coding_extension()関数によって定義されたデータエレメントの次には、extensions_and_user_data(2)によって定義されたデータエレメントが、履歴ストリームとして記述されている。このextension_and_user_data(2)関数は、図50に示したように、ビットストリーム中にエクステンションスタートコード(extension_start_code)が存在する場合には、extension_data()関数によって定義されるデータエレメントが記述されている。このデータエレメントの次には、ビットストリーム中にユーザデータスタートコード(user_data_start_code)が存在する場合には、user_data()関数によって定義されるデータエレメントが記述されている。但し、ビットストリーム中にエクステンションスタートコード及びユーザデータスタートコードが存在しない場合には extension_data()関数 及びuser_data()関数によって定義されるデータエレメントはビットトリーム中には記述されていない。
【0287】
extension_data()関数は、図55に示すように、extension_start_codeを示すデータエレメントと、quant_matrix_extension()関数、copyright_extension()関数、及びpicture_display_extension()関数によって定義されるデータエレメンエトとを、ビットストリーム中に履歴ストリームとして記述するための関数である。
【0288】
quant_matrix_extension()関数によって定義されるデータエレメントは、図56に示すように、extension_start_code、extension_start_code_identifier、quant_matrix_extension_present_flag、load_intra_quantizer_matrix、intra_quantizer_matrix[64]、load_non_intra_quantizer_matrix、non_intra_quantizer_matrix[64]、load_chroma_intra_quantizer_matrix、chroma_intra_quantizer_matrix[64]、load_chroma_non_intra_quantizer_matrix、及びchroma_non_intra_quantizer_matrix[64] である。
【0289】
extension_start_codeは、この量子化マトリックスエクステンションのスタートを示す開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 quant_matrix_extension_present_flagは、この量子化マトリックスエクステンション内のデータエレメントが有効か無効かを示すためのデータである。load_intra_quantizer_matrixは、イントラマクロブロック用の量子化マトリックスデータの存在を示すデータである。intra_quantizer_matrixは、イントラマクロブロック用の量子化マトリックスの値を示すデータである。
【0290】
load_non_intra_quantizer_matrixは、非イントラマクロブロック用の量子化マトリックスデータの存在を示すデータである。non_intra_quantizer_matrixは、非イントラマクロブロック用の量子化マトリックスの値を表すデータである。load_chroma_intra_quantizer_matrixは、色差イントラマクロブロック用の量子化マトリックス・データの存在を示すデータである。chroma_intra_quantizer_matrixは、色差イントラマクロブロック用の量子化マトリックスの値を示すデータである。load_chroma_non_intra_quantizer_matrixは、色差非イントラマクロブロック用の量子化マトリックス・データの存在を示すデータである。chroma_non_intra_quantizer_matrixは、色差非イントラマクロブロック用の量子化マトリックスの値を示すデータである。
【0291】
copyright_extension()関数によって定義されるデータエレメントは、図57に示すように、 extension_start_code、extension_start_code_itentifier、copyright_extension_present_flag、copyright_flag、copyright_identifier、original_or_copy、copyright_number_1、copyright_number_2、及び copyright_number_3から構成される。
【0292】
extension_start_codeは、コピーライトエクステンションのスタート示す開始コードである。extension_start_code_itentifierどのエクステンションデータが送られるかを示すコードである。 copyright_extension_present_flagは、このコピーライトエクステンション内のデータエレメントが有効か無効かを示すためのデータである。
【0293】
copyright_flagは、次のコピーライトエクステンション又はシーケンスエンドまで、符号化されたビデオデータに対してコピー権が与えられているか否かを示す。copyright_identifierは、ISO/IEC JTC/SC29によって指定されたコピー権の登録機関を識別するためのデータである。original_or_copyは、ビットストリーム中のデータが、オリジナルデータであるかコピーデータであるかを示すデータである。copyright_number_1は、コピーライトナンバーのビット44から63を表わすデータである。copyright_number_2は、コピーライトナンバーのビット22から43を表わすデータである。copyright_number_3は、コピーライトナンバーのビット0から21を表わすデータである。
【0294】
picture_display_extension()関数によって定義されるデータエレメントは、図58に示すように、extension_start_code_identifier、frame_center_horizontal_offset、frame_center_vertical_offset等である。
【0295】
extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 frame_center_horizontal_offsetは、表示エリアの水平方向のオフセットを示すデータであって、number_of_frame_center_offsetsによって定義される数のオフセット値を定義することができる。frame_center_vertical_offsetは、表示エリアを垂直方向のオフセットを示すデータであって、 number_of_frame_center_offsetsによって定義される数のオフセット値を定義することができる。
【0296】
再び図47に戻って、extension_and_user_data(2)関数によって定義されるデータエレメントの次には、picture_data()関数によって定義されるデータエレメントが、履歴ストリームとして記述されている。
【0297】
picture_data()関数によって定義されるデータエレメントは、図59に示すように、slice()関数によって定義されるデータエレメントである。但し、ビットストリーム中に、slice()関数のスタートコードを示すslice_start_codeが存在しない場合には、このslice()関数によって定義されるデータエレメントはビットストリーム中に記述されていない。
【0298】
slice()関数は、図60に示されるように、slice_start_code、slice_quantiser_scale_code、intra_slice_flag、intra_slice、reserved_bits、extra_bit_slice、extra_information_slice、及びextra_bit_slice 等のデータエレメントと、macroblock()関数によって定義されるデータエレメントを、履歴ストリームとして記述するための関数である。
【0299】
slice_start_codeは、slice()関数によって定義されるデータエレメントのスタートを示すスタートコードである。slice_quantiser_scale_codeは、このスライス層に存在するマクロブロックに対して設定された量子化ステップサイズを示すデータである。しかし、各マクロブロック毎に、quantiser_scale_codeが設定されている場合には、各マクロブロックに対して設定されたmacroblock_quantiser_scale_codeのデータが優先して使用される。
【0300】
intra_slice_flagは、ビットストリーム中にintra_slice及びreserved_bitsが存在するか否かを示すフラグである。intra_sliceは、スライス層中にノンイントラマクロブロックが存在するか否かを示すデータである。スライス層におけるマクロブロックのいずれかがノンイントラマクロブロックである場合には、intra_sliceは「0」となり、スライス層におけるマクロブロックの全てがノンイントラマクロブロックである場合には、intra_sliceは「1」となる。reserved_bitsは、7ビットのデータであって「0」の値を取る。extra_bit_sliceは、履歴ストリームとして追加の情報が存在することを示すフラグであって、次にextra_information_sliceが存在する場合には「1」に設定される。追加の情報が存在しない場合には「0」に設定される。
【0301】
これらのデータエレメントの次には、macroblock()関数によって定義されたデータエレメントが、履歴ストリームとして記述されている。
【0302】
macroblock()関数は、図61に示すように、macroblock_escape、macroblock_address_increment、及びmacroblock_quantiser_scale_code等のデータエレメントと、macroblock_modes()関数、及び macroblock_vecters(s)関数によって定義されたデータエレメントを記述するための関数である。
【0303】
macroblock_escapeは、参照マクロブロックと前のマクロブロックとの水平方向の差が34以上であるか否かを示す固定ビット列である。参照マクロブロックと前のマクロブロックとの水平方向の差が34以上の場合には、macroblock_address_incrementの値に33をプラスする。macroblock_address_incrementは、参照マクロブロックと前のマクロブロックとの水平方向の差を示すデータである。もし、このmacroblock_address_incrementの前にmacroblock_escapeが1つ存在するのであれば、このmacroblock_address_incrementの値に33をプラスした値が、実際の参照マクロブロックと前のマクロブロックとの水平方向の差分を示すデータとなる。
【0304】
macroblock_quantiser_scale_codeは、各マクロブロック毎に設定された量子化ステップサイズである。各スライス層には、スライス層の量子化ステップサイズを示すslice_quantiser_scale_codeが設定されているが、参照マクロブロックに対してmacroblock_quantiser_scale_codeが設定されている場合には、この量子化ステップサイズを選択する。
【0305】
macroblock_address_incrementの次には、macroblock_modes()関数によって定義されるデータエレメントが記述されている。macroblock_modes()関数は、図62に示すように、macroblock_type、frame_motion_type、field_motion_type、dct_type等のデータエレメントを、履歴ストリームとして記述するための関数である。
【0306】
macroblock_typeは、マクログブロックの符号化タイプを示すデータである。具体的には、図65乃至図67に示されるように、macroblock_typeは、macroblock_quant、dct_type_flag、macroblock_motion_forward、及びmacroblock_motion_backwardなどのフラグから生成された可変長データである。 macroblock_quantは、マクロブロックに対して量子化ステップサイズを設定するためのmacroblock_quantiser_scale_codeが設定されているか否かを示すフラグあって、ビットストリーム中にmacroblock_quantiser_scale_codeが存在する場合には、 macroblock_quantは「1」の値を取る。
【0307】
dct_type_flagは、参照マクロブロックがフレームDCT又はフィールドDCTで符号化されているかを示すdct_typeが存在するか否かを示すためのフラグ(言い換えるとDCTされているか否かを示すフラグ)であって、ビットストリーム中にdct_typeが存在する場合には、このdct_type_flagは「1」の値を取る。 macroblock_motion_forwardは、参照マクロブロックが前方予測されているか否かを示すフラグであって、前方予測されている場合には「1」の値を取る。macroblock_motion_backwardは、参照マクロブロックが後方予測されているか否かを示すフラグであって、後方予測されている場合には「1」の値を取る。
【0308】
もし、macroblock_motion_forward又はmacroblock_motion_backwardが「1」のときに、ピクチャ構造がフレームのときに、frame_period_frame_dctが「0」のときには、macroblock_typeを表わすデータエレメントの次にframe_motion_typeを表わすデータエレメントが記述されている。尚、このframe_period_frame_dctは、 frame_motion_typeがビットストリーム中に存在するか否かを示すフラグである。
【0309】
frame_motion_typeは、フレームのマクロブロックの予測タイプを示す2ビットのコードである。予測ベクトルが2個でフィールドベースの予測タイプであれば「00」であって、予測ベクトルが1個でフィールドベースの予測タイプであれば「01」であって、予測ベクトルが1個でフレームベースの予測タイプであれば「10」であって、予測ベクトルが1個でディアルプライムの予測タイプであれば「11」である。
【0310】
もし、macroblock_motion_forward又はmacroblock_motion_backwardが「1」のときに、ピクチャ構造がフレーム出ない場合には、macroblock_typeを表わすデータエレメントの次にfield_motion_typeを表わすデータエレメントが記述されている。
【0311】
field_motion_typeは、フィールドのマクロブロックの動き予測を示す2ビットのコードである。予測ベクトルが1個でフィールドベースの予測タイプであれば「01」であって、予測ベクトルが2個で18×8マクロブロックベースの予測タイプであれば「10」であって、予測ベクトルが1個でディアルプライムの予測タイプであれば「11」である。
【0312】
もし、ピクチャ構造がフレームで、 frame_period_frame_dctがframe_motion_typeがビットストリーム中に存在することを示し、且つ、frame_period_frame_dctがdct_typeがビットストリーム中に存在することを示す場合には、macroblock_typeを表わすデータエレメントの次にdct_typeを表わすデータエレメントが記述されている。尚、dct_typeは、DCTがフレームDCTモードか、フィールドDCTモードかを示すデータである。
【0313】
再び図61に戻って、もし、参照マクロブロックが前方予測マクロブロックであるか又は参照マクロブロックがイントラマクロブロックであって且つコンシール処理のマクロブロックのいずれかの場合には、motion_vectors(0)関数によって定義されるデータエレメントが記述される。また、参照マクロブロックが後方予測マクロブロックである場合には、motion_vectors(1)関数によって定義されるデータエレメントが記述される。尚、 motion_vectors(0)関数は、第1番めの動きベクトルに関するデータエレメントを記述するための関数であって、motion_vectors(1)関数は、第2番めの動きベクトルに関するデータエレメントを記述するための関数である。
【0314】
motion_vectors(s)関数は、図63に示されるように、動きベクトルに関するデータエレメントを記述するための関数である。
【0315】
もし、動きベクトルが1個でディアルプライム予測モードを使用していない場合には、motion_vertical_field_select[0][s]とmotion_vector(0,s)によって定義されるデータエレメントが記述される。
【0316】
このmotion_vertical_field_select[r][s]は、第1番目の動きベクトル(前方又は後方のどちらのベクトルであっても良い)が、ボトムフィールドを参照して作られたベクトルであるかトップフィールドを参照して作られたベクトルであるかを示すフラグである。この指標“r”は、第1番めのベクトル又は第2番めのベクトルのいずれのベクトルであるかを示す指標であって、“s”は、予測方向が前方又は後方予測のいずれであるかを示す指標である。
【0317】
motion_vector(r,s)関数は、図64に示されるように、motion_code[r][s][t]に関するデータ列と、motion_residual[r][s][t]に関するデータ列と、dmvector[t]を表わすデータとを記述するための関数である。
【0318】
motion_code[r][s][t]は、動きベクトルの大きさを−16〜+16の範囲で表わす可変長のデータである。 motion_residual[r][s][t]は、動きベクトルの残差を表わす可変長のデータである。よって、このmotion_code[r][s][t]と motion_residual[r][s][t]との値によって詳細な動きベクトルを記述することができる。 dmvector[t]は、ディユアルプライム予測モードのときに、一方のフィールド(例えばボトムフィールドに対してトップフィールドを一方のフィールドとする)における動きベクトルを生成するために、時間距離に応じて既存の動きベクトルがスケールされると共に、トップフィールドとボトムフィールドとのライン間の垂直方向のずれを反映させるために垂直方向に対して補正を行うデータである。この指標“r”は、第1番めのベクトル又は第2番めのベクトルのいずれのベクトルであるかを示す指標であって、“s”は、予測方向が前方又は後方予測のいずれであるかを示す指標である。“s”は、動きベクトルが垂直方向の成分であるか水平方向の成分であるかを示すデータである。
【0319】
図64に示されmotion_vector(r,s)関数によって、まず、水平方向のmotion_coder[r][s][0]を表わすデータ列が、履歴ストリームとして記述される。motion_residual[0][s][t]及びmotion_residual[1][s][t]の双方のビット数は、f_code[s][t]で示されるので、 f_code[s][t]が1でない場合には、 motion_residual[r][s][t] がビットストリーム中に存在することを示すことになる。水平方向成分のmotion_residual[r][s][0]が「1」でなくて、水平方向成分のmotion_code[r][s][0]が「0」でないということは、ビットストリーム中にmotion_residual[r][s][0]を表わすデータエレメントが存在し、動きベクトルの水平方向成分が存在するということを意味しているので、その場合には、水平方向成分のmotion_residual[r][s][0]を表わすデータエレメントが記述されている。
【0320】
続いて、垂直方向のmotion_coder[r][s][1]を表わすデータ列が、履歴ストリームとして記述される。同じようにmotion_residual[0][s][t]及びmotion_residual[1][s][t]の双方のビット数は、f_code[s][t]で示されるので、 f_code[s][t]が1でない場合には、 motion_residual[r][s][t] がビットストリーム中に存在することを表わすことになる。motion_residual[r][s][1]が「1」でなくて、motion_code[r][s][1]が「0」でないということは、ビットストリーム中にmotion_residual[r][s][1]を表わすデータエレメントが存在し、動きベクトルの垂直方向成分が存在するということを意味しているので、その場合には、垂直方向成分のmotion_residual[r][s][1]を表わすデータエレメントが記述されている。
【0321】
なお、可変長フォーマットにおいては、伝送するビットレートを減少させるために、履歴情報を削減することができる。
【0322】
すなわち、macroblock_typeとmotion_vectors()は転送するが、quantiser_scale_codeを転送しない場合には、slice_quantiser_scale_codeを”00000”とすることで、ビットレートを減少させることができる。
【0323】
また、macroblock_typeのみ転送し、motion_vectors()、quantiser_scale_code、およびdct_typeを転送しない場合には、macroblock_typeとして、”not coded”を使用することで、ビットレートを減少することができる。
【0324】
さらにまた、picture_coding_typeのみ転送し、slice()以下の情報は全て転送しない場合には、slice_start_codeを持たないpicture_data()を使用することで、ビットレートを減少させることができる。
【0325】
以上においては、user_data内の23ビットの連続する”0”が出ないようにする場合に、22ビット毎に”1”を挿入するようにしたが、22ビット毎でなくてもよい。また、連続する”0”の個数を数えて”1”を挿入するのではなく、Byte_allignを調べて挿入するようにすることも可能である。
【0326】
さらに、MPEGにおいては、23ビットの連続する”0”の発生を禁止しているが、実際には、バイトの先頭から23ビット連続する場合だけが問題とされ、バイトの先頭ではなく、途中から0が23ビット連続する場合は、問題とされない。従って、例えば24ビット毎に、LSB以外の位置に”1”を挿入するようにしてもよい。
【0327】
また、以上においては、履歴情報を、video elementary streamに近い形式にしたが、packetized elementary streamやtransport streamに近い形式にしてもよい。また、Elementary Streamのuser_dataの場所を、picture_dataの前としたが、他の場所にすることもできる。
【0328】
なお、上記各処理を行うコンピュータプログラムは、磁気ディスク、CD-ROM等の情報記録媒体よりなる提供媒体のほか、インターネット、デジタル衛星などのネットワーク提供媒体を介してユーザに提供することができる。
【0329】
【発明の効果】
以上の如く本発明の画像データ処理装置および方法、並びに記録媒体によれば、第1の符号化パラメータで符号化された第1のビットストリームから、第1の符号化パラメータを抽出するとともに、第1の符号化パラメータを用いて第1のビットストリームを画像データに復号し、第1の符号化パラメータで符号化された第1のビットストリームから、過去複数世代の符号化パラメータから第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出し、抽出された第1の符号化パラメータ及び第1の履歴情報に含まれる第1の履歴符号化パラメータを、復号された画像データとともに出力し、出力された第1の符号化パラメータ及び第1の履歴符号化パラメータから、符号化処理において再利用するための再利用符号化パラメータを取得するとともに、出力された第1の符号化パラメータおよび第1の履歴符号化パラメータから、再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成し、出力された画像データを取得し、取得された再利用符号化パラメータに基づいて、画像データを符号化し、第2のビットストリームを生成するとともに、生成された第2のビットストリームに、再利用符号化パラメータ及び第2の履歴情報を多重化するようにしたので、小さい規模の装置で、再符号化に伴う画像の劣化を抑制することが可能となる。
【図面の簡単な説明】
【図1】高効率符号化の原理を説明する図である。
【図2】画像データを圧縮する場合におけるピクチャタイプを説明する図である。
【図3】画像データを圧縮する場合におけるピクチャタイプを説明する図である。
【図4】動画像信号を符号化する原理を説明した図である。
【図5】動画像信号を符号化し、復号する装置の構成を示すブロック図である。
【図6】フォーマット変換を説明する図である。
【図7】図5のエンコーダ18の構成を示すブロック図である。
【図8】図7の予測モード切換回路52の動作を説明する図である。
【図9】図7の予測モード切換回路52の動作を説明する図である。
【図10】図7の予測モード切換回路52の動作を説明する図である。
【図11】図7の予測モード切換回路52の動作を説明する図である。
【図12】図5のデコーダ31の構成を示すブロック図である。
【図13】ピクチャタイプに対応したSNR制御を説明する図である。
【図14】本発明を適用したトランスコーダ101の構成を示すブロック図である。
【図15】図14のトランスコーダ101のより詳細な構成を示すブロック図である。
【図16】図14の復号装置102に内蔵されるデコーダ111の構成を示すブロック図である。
【図17】マクロブロックの画素を説明する図である。
【図18】符号化パラメータが記録される領域を説明する図である。
【図19】図14の符号化装置106に内蔵されるエンコーダ121の構成を示すブロック図である。
【図20】図15のヒストリーフォマッタ211の構成例を示すブロック図である。
【図21】図15のヒストリーデコーダ203の構成例を示すブロック図である。
【図22】図15のコンバータ212の構成例を示すブロック図である。
【図23】図22のスタッフ回路323の構成例を示すブロック図である。
【図24】図22のコンバータ212の動作を説明するタイミングチャートである。
【図25】図15のコンバータ202の構成例を示すブロック図である。
【図26】図25のディリート回路343の構成例を示すブロック図である。
【図27】図15のコンバータ212の他の構成例を示すブロック図である。
【図28】図15のコンバータ202の他の構成例を示すブロック図である。
【図29】図15のユーザデータフォーマッタ213の構成例を示すブロック図である。
【図30】図14のトランスコーダ101が実際に使用される状態を示す図である。
【図31】符号化パラメータが記録される領域を説明する図である。
【図32】図14の符号化装置106の変更可能ピクチャタイプ判定処理を説明するフローチャートである。
【図33】ピクチャタイプが変更される例を示す図である。
【図34】ピクチャタイプが変更される他の例を示す図である。
【図35】図14の符号化装置106の量子化制御処理を説明する図である。
【図36】図14の符号化装置106の量子化制御処理を説明するフローチャートである。
【図37】密結合されたトランスコーダ101の構成を示すブロック図である。
【図38】 MPEGストリームのシンタックスを説明する図である。
【図39】図38のシンタックスの構成を説明する図である。
【図40】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図41】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図42】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図43】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図44】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図45】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図46】固定長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図47】可変長の履歴情報を記録するhistory_stream()のシンタックスを説明する図である。
【図48】 sequence_header()のシンタックスを説明する図である。
【図49】 sequence_extension()のシンタックスを説明する図である。
【図50】 extension_and_user_data()のシンタックスを説明する図である。
【図51】 user_data()のシンタックスを説明する図である。
【図52】 group_of_pictures_header()のシンタックスを説明する図である。
【図53】 picture_header()のシンタックスを説明する図である。
【図54】 picture_coding_extension()のシンタックスを説明する図である。
【図55】 extension_data()のシンタックスを説明する図である。
【図56】 quant_matrix_extension()のシンタックスを説明する図である。
【図57】 copyright_extension()のシンタックスを説明する図である。
【図58】 picture_display_extension()のシンタックスを説明する図である。
【図59】 picture_data()のシンタックスを説明する図である。
【図60】 slice()のシンタックスを説明する図である。
【図61】 macroblock()のシンタックスを説明する図である。
【図62】 macroblock_modes()のシンタックスを説明する図である。
【図63】 motion_vectors(s)のシンタックスを説明する図である。
【図64】 motion_vector(r,s)のシンタックスを説明する図である。
【図65】Iピクチャに対するmacroblock_typeの可変長符号を説明する図である。
【図66】Pピクチャに対するmacroblock_typeの可変長符号を説明する図である。
【図67】Bピクチャに対するmacroblock_typeの可変長符号を説明する図である。
【図68】従来のトランスコーダ131の構成の一例を示すブロック図である。
【図69】従来のトランスコーダ131の構成の一例を示すブロック図である。
【図70】従来の符号化装置と復号装置の配置を説明する図である。
【符号の説明】
1 符号化装置, 2 復号化装置, 3 記録媒体, 12,13 A/D変換器, 14 フレームメモリ, 15 輝度信号フレームメモリ, 16 色差信号フレームメモリ, 17 フォーマット変換回路, 18 エンコーダ,31 デコーダ, 32 フォーマット変換回路, 33 フレームメモリ,34 輝度信号フレームメモリ, 35 色差信号フレームメモリ, 36,37 D/A変換器, 50 動きベクトル検出回路, 51 フレームメモリ,52 予測モード切り替え回路, 53 演算部, 54 予測判定回路, 55 DCTモード切り替え回路, 56 DCT回路, 57 量子化回路, 58可変長符号化回路, 59 送信バッファ, 60 逆量子化回路, 61 IDCT回路, 62 演算器, 63 フレームメモリ, 64 動き補償回路,81 受信バッファ, 82 可変長復号化回路, 83 逆量子化回路, 84 IDCT回路, 85 演算器, 86 フレームメモリ, 87 動き補償回路, 101 トランスコーダ, 102 復号装置, 103 符号化パラメータ多重装置, 105 符号化パラメータ分離装置, 106 符号化装置, 106 SDTI, 111 デコーダ, 112 可変長復号化回路, 121 エンコーダ, 122 符号化パラメータコントローラ, 131 トランスコーダ, 132 復号装置, 133 符号化装置, 134 動き検出部, 135 符号化部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an image data processing apparatus and method, and Record With regard to the medium, in particular, a moving image signal is recorded on a recording medium such as a magneto-optical disk or a magnetic tape, and is reproduced and displayed on a display or the like that can be viewed in stereo. An image data processing apparatus and method suitable for use when transmitting a moving image signal from a transmission side to a reception side via a transmission line, and receiving and displaying the reception side on a reception side, etc. Record It relates to the medium.
[0002]
[Prior art]
For example, in a system that transmits a moving image signal to a remote place such as a video conference system and a videophone system, in order to efficiently use a transmission path, line correlation and interframe correlation of video signals are used. The image signal is compression encoded.
[0003]
When the image signal is compression-encoded, encoding is performed so that the generated bit stream has a predetermined bit rate. However, in actual operation, it may be necessary to convert the bit rate of the bit stream due to the circumstances of the transmission path. In such a case, a method is generally used in which the encoded information is once decoded by a transcoder 131 as shown in FIG. 68 and is encoded again so that the bit rate becomes a predetermined value. In the case of the example in FIG. 68, the bit stream transmitted at 10 Mbps is decoded by the
[0004]
[Problems to be solved by the invention]
When re-encoding the video signal in this way, the
[0005]
For example, in a broadcasting station, video editing is performed in units of seconds, so it is preferable that image information of a frame is independent of image information of other frames. Therefore, as shown in FIG. 70, frames constituting a GOP (Group of Picture) that is a set of frames in which information is correlated so that image quality does not deteriorate even when transferred at a low bit rate (3 to 9 Mbps). The bit stream output from the long GOP encoding device 133-1 having a large number is converted into a short GOP with a small number of frames constituting the GOP by the encoding device 133-2 of the broadcasting station, and the high bit rate (18 To 50 Mbps), and after the editing is completed, the encoding device 133-3 converts the data again into a Long GOP and outputs the result. Thus, when encoding and decoding of image information are repeated, there is a problem that the image information is deteriorated because an encoding parameter used for each encoding changes.
[0006]
The present invention has been made in view of such a situation, and by performing re-encoding using a motion vector calculated in the past, the scale of the apparatus is reduced, and image degradation due to re-encoding is reduced. It is possible to suppress.
[0007]
[Means for Solving the Problems]
The image data processing apparatus of the present invention extracts a first encoding parameter from a first bit stream encoded with a first encoding parameter, and uses the first encoding parameter to From the decoding means for decoding the bit stream into image data, and the first bit stream encoded with the first encoding parameter, An encoding parameter obtained by excluding the first encoding parameter from the past plural generations is used as an encoding parameter obtained by removing the first encoding parameter from the past plural generation encoding parameters as a first history encoding parameter. As the first history encoding parameter Included in the history information extracting means for extracting the first history information including the first encoding parameter extracted by the decoding means and the first history information extracted by the history information extracting means. First history encoding parameter Output together with the image data decoded by the decoding means, the first encoding parameter output by the output means, First history encoding parameter For reuse in the encoding process Coding parameters as reuse coding parameters An acquisition means for acquiring the image data output by the output means, a first encoding parameter output by the output means, and Second history information including, as a second history coding parameter, a coding parameter obtained by removing the reuse coding parameter obtained by the obtaining unit from the first history coding parameter. History information generating means for generating and acquired by the acquiring means Reuse coding parameters And encoding the image data acquired by the acquisition unit to generate a second bit stream, and the acquisition unit acquires Reuse coding parameters And encoding means for multiplexing the second history information extracted by the history information extraction means into the generated second bit stream.
[0008]
The image data processing method of the present invention extracts a first encoding parameter from a first bit stream encoded with a first encoding parameter, and uses the first encoding parameter to From the decoding step of decoding the bit stream into image data, and the first bit stream encoded with the first encoding parameter, An encoding parameter obtained by removing the first encoding parameter from the past multiple generation encoding parameters is used as the first history encoding parameter. The first history information extracted by the history information extraction step of extracting the first history information including the first encoding parameter extracted by the processing of the decoding step and the processing of the history information extraction step. First history encoding parameter Are output together with the image data decoded by the process of the decoding step, the first encoding parameter output by the process of the output step, and First history encoding parameter For reuse in the encoding process Coding parameters as reuse coding parameters An acquisition step for acquiring the image data output by the output step, a first encoding parameter output by the processing of the output step, and Second history information including, as a second history coding parameter, a coding parameter obtained by removing the reuse coding parameter obtained by the processing of the obtaining step from the first history coding parameter. Obtained by the history information generation step and the acquisition step processing Reuse coding parameters Based on the above, the image data acquired by the process of the acquisition step is encoded to generate the second bit stream, and the image data acquired by the process of the acquisition step Reuse coding parameters And an encoding step of multiplexing the second history information generated by the history information generation step into the generated second bit stream.
[0009]
The recording medium of the present invention extracts the first encoding parameter from the first bit stream encoded with the first encoding parameter, and uses the first encoding parameter to generate the first bit stream. A decoding step of decoding the image data into a first bitstream encoded with the first encoding parameter, An encoding parameter obtained by removing the first encoding parameter from the past multiple generation encoding parameters is used as the first history encoding parameter. The first history information extracted by the history information extraction step of extracting the first history information including the first encoding parameter extracted by the processing of the decoding step and the processing of the history information extraction step. First history encoding parameter Are output together with the image data decoded by the process of the decoding step, the first encoding parameter output by the process of the output step, and First history encoding parameter For reuse in the encoding process. Coding parameters as reuse coding parameters An acquisition step for acquiring the image data output by the output step, a first encoding parameter output by the processing of the output step, and Second history information including, as a second history coding parameter, a coding parameter obtained by removing the reuse coding parameter obtained by the processing of the obtaining step from the first history coding parameter. Obtained by the history information generation step and the acquisition step processing Reuse coding parameters Based on the above, the image data acquired by the process of the acquisition step is encoded to generate the second bit stream, and the image data acquired by the process of the acquisition step Reuse coding parameters And a computer-readable program for executing a process including an encoding step of multiplexing the second history information generated by the history information generation step into the generated second bitstream. It is characterized by that.
[0010]
In the image data processing apparatus and method and the recording medium of the present invention, the first encoding parameter is extracted from the first bit stream encoded with the first encoding parameter, and the first encoding parameter is extracted. The first bitstream is decoded using and from the first bitstream encoded with the first encoding parameter, An encoding parameter obtained by removing the first encoding parameter from the past multiple generation encoding parameters is used as the first history encoding parameter. The first history information including is extracted and included in the extracted first encoding parameter and the extracted first history information. First history encoding parameter Are output together with the decoded image data, and the output first encoding parameter and First history encoding parameter For reuse in the encoding process Reuse coding parameters Is obtained, the output image data is obtained, and the output first encoding parameter and Second history information including a coding parameter obtained by removing a reuse coding parameter from the first history coding parameter as a second history coding parameter Was generated and retrieved Reuse coding parameters The image data is encoded and a second bit stream is generated, and the generated second bit stream is Reuse coding parameters And the second history information is multiplexed.
[0011]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below, but in order to clarify the correspondence between each means of the invention described in the claims and the following embodiments, in parentheses after each means, The features of the present invention will be described with the corresponding embodiment (however, an example) added.
[0012]
The image data processing apparatus of the present invention extracts a first encoding parameter from a first bit stream encoded with a first encoding parameter, and uses the first encoding parameter to From decoding means (for example, the
[0013]
However, of course, this description does not mean that each means is limited to the description.
[0014]
Before describing a transcoder to which the present invention is applied, compression coding of a moving image signal will be described. In this specification, the term “system” means an overall apparatus constituted by a plurality of apparatuses and means.
[0015]
For example, in a system that transmits a moving image signal to a remote place such as a video conference system and a video phone system, in order to efficiently use a transmission path, the line correlation of video signals and the correlation between frames are used. An image signal is compressed and encoded.
[0016]
When line correlation is used, an image signal can be compressed by, for example, DCT (discrete cosine transform) processing.
[0017]
Further, when the inter-frame correlation is used, the image signal can be further compressed and encoded. For example, as shown in FIG. 1, when frame images PC1 to PC3 are generated at times t1 to t3, the difference between the image signals of the frame images PC1 and PC2 is calculated to generate PC12. The difference between the images PC2 and PC3 is calculated to generate PC23. Normally, images of frames that are temporally adjacent do not have such a large change. Therefore, when the difference between them is calculated, the difference signal has a small value. Therefore, if this difference signal is encoded, the code amount can be compressed.
[0018]
However, if only the differential signal is transmitted, the original image cannot be restored. Therefore, the image of each frame is set to one of three types of pictures, ie, I picture, P picture, or B picture, and the image signal is compressed and encoded.
[0019]
That is, for example, as shown in FIG. 2, the image signals of 17 frames from frames F1 to F17 are set as a group of pictures (GOP), which is a unit of processing. The image signal of the leading frame F1 is encoded as an I picture, the second frame F2 is processed as a B picture, and the third frame F3 is processed as a P picture. Hereinafter, the fourth and subsequent frames F4 to F17 are alternately processed as a B picture or a P picture.
[0020]
As an image signal of an I picture, the image signal for one frame is transmitted as it is. On the other hand, as the picture signal of the P picture, basically, as shown in FIG. 2, the difference from the picture signal of the I picture or P picture preceding in time is transmitted. Further, as an image signal of a B picture, basically, as shown in FIG. 3, a difference from the average value of both the temporally preceding frame and the succeeding frame is obtained, and the difference is encoded.
[0021]
FIG. 4 shows the principle of a method for encoding a moving image signal in this way. As shown in the figure, since the first frame F1 is processed as an I picture, it is transmitted as it is to the transmission path as transmission data F1X (intra-picture coding). In contrast, since the second frame F2 is processed as a B picture, the difference between the temporally preceding frame F1 and the average value of the temporally following frame F3 is calculated, and the difference is calculated as It is transmitted as transmission data F2X.
[0022]
However, there are four types of processing as the B picture in more detail. The first processing is to transmit the data of the original frame F2 as it is as transmission data F2X (SP1) (intra coding), and is the same processing as in the case of an I picture. The second process is to calculate a difference from the temporally subsequent frame F3 and transmit the difference (SP2) (backward predictive coding). The third process is to transmit a difference (SP3) from the temporally preceding frame F1 (forward prediction coding). Further, the fourth process is to generate a difference (SP4) between the average value of the temporally preceding frame F1 and the succeeding frame F3 and transmit this as transmission data F2X (bidirectional predictive coding). .
[0023]
In practice, the method that minimizes the transmission data among the four methods described above is employed.
[0024]
Note that when transmitting difference data, a motion vector x1 (motion vector between frames F1 and F2) between the frame image (predicted image) for which the difference is to be calculated (forward prediction) or x2 (Motion vector between frames F3 and F2) (for backward prediction) or both x1 and x2 (for bidirectional prediction) are transmitted along with the difference data.
[0025]
In addition, the frame F3 of the P picture uses the temporally preceding frame F1 as a predicted image, the difference signal (SP3) from this frame, and the motion vector x3 are calculated and transmitted as transmission data F3X (forward prediction) Coding). Alternatively, the data of the original frame F3 is transmitted as it is as data F3X (SP1) (intra coding). As to which method is used for transmission, a method with less transmission data is selected as in the case of B pictures.
[0026]
FIG. 5 shows an example of the configuration of an apparatus that encodes and transmits a moving image signal and decodes it based on the principle described above. The
[0027]
In the
[0028]
The
[0029]
In this way, the data converted into the block format is supplied from the
[0030]
The signal encoded by the
[0031]
Data reproduced from the
[0032]
The data decoded by the
[0033]
Next, the configuration of the
[0034]
Image data of a frame processed as an I picture (for example, frame F1) is transferred from the motion
[0035]
At the next timing, when an image of a frame to be further processed as a B picture (frame F4) or a P picture (frame F5) is input, the first P picture stored in the rear
[0036]
The signal of each picture stored in the frame memory 51 is read therefrom, and the prediction
[0037]
Furthermore, under the control of the
[0038]
Here, the frame prediction mode and the field prediction mode in the prediction
[0039]
When the frame prediction mode is set, the prediction
[0040]
On the other hand, in the field prediction mode, the prediction
[0041]
The motion
[0042]
However, such processing is actually performed by the motion
[0043]
In the case of the frame prediction mode, the color difference signal is supplied to the
[0044]
In addition, the motion
[0045]
That is, as the sum of the absolute values of prediction errors in intra-picture prediction, the absolute value | ΣAij | of the sum ΣAij of the macroblock signal Aij of the reference picture and the sum Σ | Aij | of the absolute value | Aij | of the macroblock signal Aij Find the difference. Further, as the absolute value sum of the prediction errors of the forward prediction, the sum Σ | Aij− of the absolute value | Aij−Bij | of the difference Aij−Bij between the macroblock signal Aij of the reference image and the macroblock signal Bij of the predicted image Bij | is obtained. Also, the absolute value sum of the prediction errors of the backward prediction and the bidirectional prediction is obtained in the same manner as in the forward prediction (by changing the prediction image to a prediction image different from that in the forward prediction).
[0046]
These sums of absolute values are supplied to the
[0047]
As described above, the motion
[0048]
When the motion
[0049]
As shown in FIG. 10 or FIG. 11, the DCT
[0050]
That is, the DCT
[0051]
For example, as shown in FIG. 10, the input signal has a configuration in which odd-numbered field and even-numbered field lines coexist, and calculates the difference between the signal of the odd-numbered line and the even-numbered line adjacent to each other. Further, the sum (or sum of squares) of the absolute values is obtained.
[0052]
Further, as shown in FIG. 11, the input signal has a configuration in which the odd-numbered field and even-numbered field lines are separated from each other, and the difference between the signals of the odd-numbered adjacent fields and the signals of the even-numbered lines are The sum of absolute values (or the sum of squares) of each is calculated.
[0053]
Furthermore, both (absolute value sum) are compared, and a DCT mode corresponding to a small value is set. That is, if the former is smaller, the frame DCT mode is set, and if the latter is smaller, the field DCT mode is set.
[0054]
Then, data having a configuration corresponding to the selected DCT mode is output to the
[0055]
As is apparent from a comparison between the prediction mode (FIGS. 8 and 9) in the prediction
[0056]
When the frame prediction mode (mode in which odd lines and even lines are mixed) is selected in the prediction
[0057]
However, the mode is not always selected in this way, and the prediction
[0058]
The I-picture image data output from the DCT
[0059]
The variable
[0060]
The variable
[0061]
The
[0062]
The data stored in the
[0063]
On the other hand, the I picture data output from the quantization circuit 57 is input to the
[0064]
The motion
[0065]
Therefore, the motion
[0066]
When the intra prediction mode is set, the
[0067]
When the forward prediction mode is set, the switch 53d is switched to the contact point b, and image (in this case, an I picture image) data stored in the forward
[0068]
The predicted image data output from the
[0069]
The
[0070]
As described above, the motion
[0071]
As described above, in the intra prediction mode or the forward prediction mode, the switch 53d is switched to the contact point a or b. At this time, the same processing as in the case of the P picture is performed, and data is transmitted.
[0072]
On the other hand, when the backward prediction mode or the bidirectional prediction mode is set, the switch 53d is switched to the contact c or d, respectively.
[0073]
In the backward prediction mode in which the switch 53d is switched to the contact point c, the image data (in this case, a P picture image) stored in the backward
[0074]
The predicted image data output from the
[0075]
In the bidirectional prediction mode in which the switch 53d is switched to the contact point d, the image (in this case, the image of I picture) data stored in the forward predicted
[0076]
That is, in the
[0077]
The predicted image data output from the
[0078]
The B picture image is not stored in the
[0079]
Note that, in the
[0080]
In the above description, the luminance block is mainly described, but the chrominance block is also processed and transmitted in units of macroblocks shown in FIGS. Note that the motion vector when processing the color difference block is obtained by halving the motion vector of the corresponding luminance block in the vertical direction and the horizontal direction.
[0081]
FIG. 12 is a block diagram showing a configuration of the
[0082]
The
[0083]
When the image data supplied from the
[0084]
When the image data supplied from the
[0085]
Even in the case of P picture data, the intra prediction mode data is not processed by the
[0086]
Since this P picture is an image to be displayed next to the next B picture, at this point of time, it is not yet output to the format conversion circuit 32 (as described above, the P picture input after the B picture is Processed and transmitted before B picture).
[0087]
When the image data supplied from the
[0088]
In this way, the data subjected to motion compensation by the
[0089]
However, since this addition output is B picture data and is not used for generating a predicted image of another image, it is not stored in the
[0090]
After the B picture image is output, the P picture image data stored in the backward predicted
[0091]
The
[0092]
In the above description, the luminance signal processing has been described, but the color difference signal processing is performed in the same manner. However, the motion vector in this case is obtained by halving the luminance signal motion vector in the vertical and horizontal directions.
[0093]
FIG. 13 shows the quality of the encoded image. Image quality (SNR: Signal to Noise Ratio) is controlled according to the picture type, I picture and P picture are of high quality, and B picture is inferior to I and P pictures. Is transmitted. This is a technique using human visual characteristics, and the visual image quality is better when the quality is oscillated than when all the image qualities are averaged. The image quality control corresponding to this picture type is executed by the quantization circuit 57 of FIG.
[0094]
FIG. 14 shows a configuration of a
[0095]
The
[0096]
Note that the
[0097]
The encoding
[0098]
The coding
[0099]
The format of the image data in which the code parameter is written will be described with reference to FIGS. One macro block is composed of 16 × 16 pixels as shown in FIG. The 16 × 16 pixel data includes 8 × 8 pixel luminance signals Y [0] [x] to Y [4] [x] and 8 × 8 pixel color difference signals Cr [0] [x], Cr [ 1] [x], Cb [0] [x], and Cb [1] [x] (x = 2 to 9). For example, the luminance signal Y [0] [9] indicates the luminance signal of the pixels (8 pixels) in the first row of 8 × 8 pixels. Since the information amount of the luminance signal per pixel is 8 bits, the information amount of the luminance signal Y [0] [9] is 8 (pixels) × 8 (bits) = 64 bits. The same applies to the color difference signal.
[0100]
On the other hand, as shown in FIG. 18, the format of the image data is provided with the areas (D0 to D9) for 10 rows, so that the areas (D0, D1) for 2 rows are not necessary. Since information of 64 bits × 16 = 1024 bits can be recorded in this empty area, an encoding parameter other than the original image data is written in the area for the two rows. Note that since the encoding parameter corresponding to one macroblock has a 256-bit information amount, the encoding parameter used for the past four encodings can be recorded in this area.
[0101]
In the image data (digital video signal) transmitted from the encoding
[0102]
The
[0103]
The
[0104]
Next,
[0105]
The
[0106]
The
[0107]
The
[0108]
On the other hand, in the
[0109]
The history information formatted by the
[0110]
The
[0111]
FIG. 20 shows a configuration example of the
[0112]
The
[0113]
As described above, the
[0114]
FIG. 21 shows a configuration example of the
[0115]
The inverse
[0116]
Further, the
[0117]
Further, the
[0118]
FIG. 22 shows a configuration example of the
[0119]
The
[0120]
The
[0121]
FIG. 23 illustrates a configuration example of the
[0122]
However, the contact a of the switch 331-0 further below the switch 331-1 corresponding to the LSB is open. In addition, the contact c of the switch 331-16 corresponding to the MSB is open because there is no higher-order switch.
[0123]
Data “1” is supplied to the contact b of each of the switches 331-0 to 331-16.
[0124]
The
[0125]
FIG. 23 shows an example in which data “1” is inserted in the thirteenth from the LSB side. Accordingly, in this case, the switches 331-0 to 331-12 are all switched to the contact c side, the switch 331-13 is switched to the contact b side, and the switches 331-14 to 331-16 are switched to the contact c side. It has been switched to the a side.
[0126]
The
[0127]
FIG. 24 shows the timing of the output data of each part of the
[0128]
Therefore, the input of the stuff circuit 323 (FIG. 24D) is the first 1-byte data D0 at the timing of the read address A1, and the 1-byte data D0 and 1 byte at the timing of the next read address A2. 2 bytes of data D1 and at the timing of the read address A3, it becomes 2 bytes of data composed of data D1 and data D2.
[0129]
The
[0130]
The
[0131]
Data “1” is inserted into the data output from the D-type flip-
[0132]
FIG. 25 illustrates a configuration example of the
[0133]
That is, in this
[0134]
Other operations are the same as those in the
[0135]
FIG. 26 shows a configuration example of the
[0136]
FIG. 26 shows a state where the 13th bit from the LSB is deleted. Accordingly, in this case, the switches 351-0 to 351-11 are switched to the contact a side, and 12 bits from the LSB to the 12th are selected and output as they are. Further, since the switches 351-12 to 351-14 are respectively switched to the contact b side, the 14th to 16th data are selected and output as the 13th to 15th bit data. The
[0137]
The input of the
[0138]
FIG. 27 illustrates another configuration example of the
[0139]
Other configurations and operations are the same as those in FIG.
[0140]
FIG. 28 illustrates another configuration example of the
[0141]
Thus, in this configuration example, data “1” as a marker bit is inserted and deleted based on a predetermined pattern (the number of consecutive data “0”).
[0142]
The configuration shown in FIGS. 27 and 28 enables more efficient processing than the configuration shown in FIGS. 22 and 25. However, the converted length depends on the original history information.
[0143]
FIG. 29 shows a configuration example of the
[0144]
Although not shown, the
[0145]
FIG. 30 shows a state where a plurality of transcoders 101-1 to 101-N are connected in series and used in a video editing studio, for example. The coding parameter multiplexing apparatus 103-i of each transcoder 101-i (i = 1 to N) is used by itself in a section in which the oldest coding parameter in the above-described coding parameter area is recorded. Overwrite the latest encoding parameters. As a result, the latest four generations of encoding parameters (generation history information) corresponding to the same macroblock are recorded in the baseband image data.
[0146]
The encoder 121-i (FIG. 19) of each encoding device 106-i performs quantization in the variable
[0147]
The variable
[0148]
The transcoder 101-i and the transcoder 101- (i + 1) are configured as shown in FIG. Therefore, the process is the same as that described with reference to FIG.
[0149]
When it is desired to change what is currently encoded as an I picture to P or B picture as the encoding using the actual encoding parameter history, the past encoding parameter history is referred to and P or A case where the picture is a B picture is searched. If these histories exist, the picture type is changed using parameters such as a motion vector. On the other hand, if there is no history in the past, the change of the picture type without motion detection is abandoned. Of course, even if there is no history, the picture type can be changed by performing motion detection.
[0150]
In the format shown in FIG. 18, encoding parameters for four generations are embedded. However, parameters of picture types of I, P, and B can be embedded. FIG. 31 shows an example of the format in this case. In this example, one generation of encoding parameters (picture history information) is recorded for each picture type when the same macroblock has been encoded with a change in picture type in the past. Accordingly, the
[0151]
In this example, the Cb [1] [x] and Cr [1] [x] regions are not used, so the Cb [1] [x] and Cr [1] [x] regions are not used. The present invention can also be applied to image data in 4: 2: 0 format.
[0152]
In this example, the
[0153]
Next, processing for determining a picture type that can be changed in each
[0154]
In
[0155]
In step S2, the coding
[0156]
In step S3, the coding
[0157]
In step S4, the encoding
[0158]
If it is determined in step S3 that there is no coding parameter when the picture history information is changed to the P picture, the process proceeds to step S5.
[0159]
In step S5, the encoding
[0160]
If it is determined in step S2 that there is no coding parameter when the picture history information is changed to the B picture, the process proceeds to step S6.
[0161]
In step S6, the coding
[0162]
In step S7, the coding
[0163]
If it is determined in step S6 that there is no coding parameter when the picture history information is changed to the P picture, the process proceeds to step S8. In step S8, since there is no motion vector, the coding
[0164]
Following step S4, S5, S7, and S8, in step S9, the encoding
[0165]
FIG. 33 shows an example of changing the picture type. The picture type is changed by changing the number of frames constituting the GOP. That is, in this example, a Long GOP (first frame) composed of frames with N = 15 (GOP frame number N = 15) and M = 3 (I or G picture appearance period M = 3 in the GOP). Generation) to Short GOP (second generation) consisting of N = 1, M = 1 frames, and again Long GOP (third generation) consisting of N = 15, M = 3 frames Has been converted. In the figure, a broken line indicates a GOP boundary.
[0166]
When the picture type is changed from the first generation to the second generation, as is clear from the description of the changeable picture type determination process described above, it is possible to change the picture type to I picture for all frames. is there. When the picture type is changed, all motion vectors calculated when the moving image (0th generation) is converted to the 1st generation are stored (remained) in the picture history information. Next, when converting to Long GOP again (the picture type is changed from the second generation to the third generation), the motion vector for each picture type when converted from the zeroth generation to the first generation is stored. Therefore, by reusing this, it is possible to suppress degradation in image quality and convert it back to a Long GOP again.
[0167]
FIG. 34 shows another example of picture type change. In this example, N = 14, M = 2 Long GOP (first generation) is converted to N = 2, M = 2 Short GOP (second generation), and N = 1,
[0168]
Also in this example, the motion vector for each picture type when converted from the 0th generation to the 1st generation is stored until the conversion from the 3rd generation to the 4th generation. Therefore, as shown in FIG. 34, even when the picture type is changed in a complicated manner, the stored image parameters can be reused, so that image quality deterioration can be suppressed to a small level. Furthermore, if the stored quantization parameter quantization scale is used effectively, it is possible to realize encoding with little image quality degradation.
[0169]
The reuse of the quantization scale will be described with reference to FIG. FIG. 35 shows that a predetermined frame is always converted into an I picture from the first generation to the fourth generation, and only the bit rate is changed to 4 Mbps, 18 Mbps, or 50 Mbps.
[0170]
For example, when converting from the first generation (4 Mbps) to the second generation (18 Mbps), the image quality does not improve even if re-encoding is performed with a fine quantization scale as the bit rate increases. This is because data quantized in the past in a coarse quantization step is not restored. Therefore, as shown in FIG. 35, even if the bit rate is increased in the middle, the quantization in fine quantization steps is accompanied by an increase in the amount of information and does not lead to an improvement in image quality. Therefore, if control is performed so as to maintain the coarsest (larger) quantization scale in the past, the most efficient and efficient encoding is possible.
[0171]
As described above, when the bit rate is changed, it is very effective to encode using the history of the past quantization scale.
[0172]
This quantization control process will be described with reference to the flowchart of FIG. In step S11, the encoding
[0173]
In step S12, the coding
[0174]
In step S <b> 13, the encoding
[0175]
In step S14, the encoding
[0176]
In step S15, the encoding
[0177]
In step S16, it is determined whether all macroblocks included in the frame have been quantized. When it is determined that all the macroblocks are not quantized, the process returns to step S13, and the processes of steps S13 to S16 are repeated until all the macroblocks are quantized.
[0178]
If it is determined in step S14 that Q_history is not larger (fine) than Q_feedback, the process proceeds to step S17.
[0179]
In step S <b> 17, the coding
[0180]
If it is determined in step S11 that there is no encoding parameter of the picture type to be converted, the process proceeds to step S18.
[0181]
In step S <b> 18, the quantization circuit 57 receives the quantization scale candidate value Q_feedback fed back from the
[0182]
In step S19, the quantization circuit 57 performs quantization using Q_feedback.
[0183]
In step S20, it is determined whether all macroblocks included in the frame have been quantized. If it is determined that all the macroblocks are not quantized, the process returns to step S18, and the processes of steps S18 to S20 are repeated until all the macroblocks are quantized.
[0184]
In the
[0185]
FIG. 38 is a diagram showing a syntax for decoding an MPEG video stream. The decoder extracts a plurality of meaningful data items (data elements) from the bitstream by decoding the MPEG bitstream according to this syntax. In the drawing, the syntax described below has functions and conditional statements expressed in small letters, and data elements are shown in bold letters. The data item is described by a mnemonic indicating its name, bit length, type, and transmission order.
[0186]
First, functions used in the syntax shown in FIG. 38 will be described.
[0187]
The next_start_code () function is a function for searching for a start code described in the bitstream. Therefore, in the syntax shown in FIG. 38, the sequence_header () function and the sequence_extension () function are arranged in order after the next_start_code () function, so that this sequence_header () is included in this bitstream. Data elements defined by the function and the sequence_extension () function are described. Therefore, when decoding the bitstream, the next_start_code () function uses the next_start_code () function to find the start code (a type of data element) described at the beginning of the sequence_header () function and sequence_extension () function from the bitstream. Then, the sequence_header () function and the sequence_extension () function are further found, and each data element defined by them is decoded.
[0188]
The sequence_header () function is a function for defining header data of the sequence layer of the MPEG bit stream, and the sequence_extension () function is a function for defining extension data of the sequence layer of the MPEG bit stream. .
[0189]
The do {} while syntax placed next to the sequence_extension () function is a data element written based on the function in {} of the do statement while the condition defined by the while statement is true. This is a syntax for extracting from the stream. That is, with the do {} while syntax, while the condition defined by the while statement is true, a decoding process is performed to extract the data element described based on the function in the do statement from the bit stream.
[0190]
The nextbits () function used in the while statement is a function for comparing a bit or a bit string appearing in the bit stream with a data element to be decoded next. In the syntax example of FIG. 38, the nextbits () function compares the bit string in the bit stream with sequence_end_code indicating the end of the video sequence. When the bit string in the bit stream does not match the sequence_end_code, this while The sentence condition is true. Therefore, the do {} while syntax placed next to the sequence_extension () function means that the data element defined by the function in the do statement is not bitstreamed while the sequence_end_code indicating the end of the video sequence does not appear in the bitstream It shows that it is described in.
[0191]
In the bitstream, after each data element defined by the sequence_extension () function, a data element defined by the extension_and_user_data (0) function is described. The extension_and_user_data (0) function is a function for defining extension data and user data in the sequence layer of the MPEG bitstream.
[0192]
The do {} while syntax placed next to this extension_and_user_data (0) function is a data element described based on the function in {} of the do statement while the condition defined by the while statement is true. Is a function for extracting from the bitstream. The nextbits () function used in this while statement is a function for determining a match between a bit or a bit string appearing in the bit stream and picture_start_code or group_start_code, and the bit or bit string appearing in the bit stream, If picture_start_code or group_start_code matches, the condition defined by the while statement is true. Therefore, in this do {} while syntax, when picture_start_code or group_start_code appears in the bitstream, the code of the data element defined by the function in the do statement is described next to the start code. By searching for the start code indicated by this picture_start_code or group_start_code, the data element defined in the do statement can be extracted from the bitstream.
[0193]
The if statement described at the beginning of the do statement indicates a condition that group_start_code appears in the bitstream. When the condition by this if statement is true, the data elements defined by the group_of_picture_header (1) function and the extension_and_user_data (1) function are sequentially described in the bitstream after this group_start_code.
[0194]
The group_of_picture_header (1) function is a function for defining the header data of the GOP layer of the MPEG bitstream. The extension_and_user_data (1) function is the extension data (extension_data) and user data (extension_data) of the GOP layer of the MPEG bitstream. This is a function for defining (user_data).
[0195]
Furthermore, in this bitstream, the data elements defined by the picture_header () function and the picture_coding_extension () function are described after the data elements defined by the group_of_picture_header (1) function and the extension_and_user_data (1) function. Yes. Of course, if the condition of the if statement described above is not true, the data element defined by the group_of_picture_header (1) function and the extension_and_user_data (1) function is not described, so it is defined by the extension_and_user_data (0) function. The data element defined by the picture_header () function and the picture_coding_extension () function is described after the data element.
[0196]
The picture_header () function is a function for defining the header data of the picture layer of the MPEG bit stream, and the picture_coding_extension () function is a function for defining the first extension data of the picture layer of the MPEG bit stream It is.
[0197]
The next while statement is a function for determining the condition of the next if statement while the condition defined by the while statement is true. The nextbits () function used in this while statement is a function for determining a match between a bit string appearing in the bitstream and extension_start_code or user_data_start_code, and a bit string appearing in the bitstream and extension_start_code or user_data_start_code and If they match, the condition defined by this while statement is true.
[0198]
The first if statement is a function for determining whether the bit string appearing in the bitstream matches extension_start_code. When the bit string appearing in the bitstream matches the 32-bit extension_start_code, it indicates that the data element defined by the extension_data (2) function is described next to the extension_start_code in the bitstream. .
[0199]
The second if statement is a syntax for determining a match between the bit string appearing in the bitstream and user_data_start_code. If the bit string appearing in the bitstream matches the 32-bit user_data_start_code, the third if statement Condition judgment of if statement is performed. This user_data_start_code is a start code for indicating the start of the user data area in the picture layer of the MPEG bit stream.
[0200]
The third if statement is a syntax for determining whether the bit string appearing in the bitstream matches History_Data_ID. If the bit string appearing in the bit stream matches this 8-bit History_Data_ID, then in the user data area of the picture layer of this MPEG bit stream, the converted_history_stream () function is next to the code indicated by this 8-bit History_Data_ID. Indicates that the data element defined by is described.
[0201]
The converted_history_stream () function is a function for describing history information and history data for transmitting all the encoding parameters used at the time of MPEG encoding. Details of the data element defined by the converted_history_stream () function will be described later. The History_Data_ID is a start code indicating the history information and history data described in the user data area of the picture layer of the MPEG bitstream.
[0202]
The else statement is a syntax for indicating that the condition is not true in the third if statement. Therefore, when the data element defined by the converted_history_stream () function is not described in the user data area of the picture layer of the MPEG bit stream, the data element defined by the user_data () function is described.
[0203]
The picture_data () function is a function for describing data elements related to the slice layer and the macroblock layer after the user data of the picture layer of the MPEG bit stream. Normally, the data element indicated by this picture_data () function is the data element defined by the converted_history_stream () function described in the user data area of the picture layer of the bit stream or the data element defined by the user_data () function. As described below, if there is no extension_start_code or user_data_start_code in the bitstream indicating the data element of the picture layer, the data element indicated by this picture_data () function is defined by the picture_coding_extension () function It is described after the data element.
[0204]
Next to the data element indicated by the picture_data () function, data elements defined by the sequence_header () function and the sequence_extension () function are arranged in order. The data elements described by the sequence_header () function and the sequence_extension () function are exactly the same as the data elements described by the sequence_header () function and the sequence_extension () function described at the beginning of the video stream sequence. The reason why the same data is described in the stream in this way is that the data of the sequence layer is received when the reception starts from the middle of the data stream (for example, the bit stream portion corresponding to the picture layer) on the bit stream receiver side. This is to prevent the stream from being able to be decoded and being unable to decode the stream.
[0205]
Following the data element defined by the last sequence_header () function and sequence_extension () function, that is, at the end of the data stream, 32-bit sequence_end_code indicating the end of the sequence is described.
[0206]
An outline of the basic configuration of the above syntax is as shown in FIG.
[0207]
Next, the history stream defined by the converted_history_stream () function will be described.
[0208]
This converted_history_stream () is a function for inserting a history stream indicating history information into the user data area of the MGEG picture layer. The meaning of “converted” is a conversion process that inserts a marker bit (1 bit) at least every 22 bits of a history stream composed of history data to be inserted into the user area in order to prevent start emulation. It means that it is a stream.
[0209]
This converted_history_stream () is described in either a fixed-length history stream (FIGS. 40 to 46) or a variable-length history stream (FIG. 47) described below. When a fixed-length history stream is selected on the encoder side, there is an advantage that a circuit and software for decoding each data element from the history stream on the decoder side are simplified. On the other hand, when a variable length history stream is selected on the encoder side, history information (data elements) described in the user area of the picture layer can be arbitrarily selected in the encoder as needed. Can be reduced, and as a result, the data rate of the entire encoded bitstream can be reduced.
[0210]
The “history information”, “history data”, and “history parameter” described in the present invention are coding parameters (or data elements) used in past coding processing, and are the current (final stage) codes. It is not the encoding parameter used in the encoding process. For example, in the first generation encoding process, a certain picture is encoded and transmitted with an I picture, and in the next second generation encoding process, this picture is encoded and transmitted as a P picture. In the third generation encoding process, an example will be described in which this picture is encoded with a B picture and transmitted. The encoding parameters used in the third generation encoding process are set to predetermined positions in the sequence layer, GOP layer, picture layer, slice layer, and macroblock layer of the encoded bitstream generated in the third generation encoding process. It has been described. On the other hand, the encoding parameters used in the first generation and second generation encoding processes, which are past encoding processes, are sequence layers and GOP layers in which the encoding parameters used in the third generation encoding process are described. Is described in the user data area of the picture layer as the history information of the encoding parameter according to the syntax described above.
[0211]
First, the fixed-length history stream syntax will be described with reference to FIGS.
[0212]
The user area of the picture layer of the bitstream generated in the final stage (for example, third generation) encoding process is first used in the past (for example, first generation and second generation) encoding process. The coding parameters related to the sequence header of the sequence layer are inserted as a history stream. Note that history information such as the sequence header of the sequence layer of the bit stream generated in the past encoding process is not inserted into the sequence header of the sequence layer of the bit stream generated in the encoding process of the final stage. It should be noted that.
[0213]
Data elements related to the sequence header used in the past encoding processing are sequence_header_code, sequence_header_present_flag, horizontal_size_value, vertical_size_value, aspect_ratio_information, frame_rate_code, bit_rate_value, marker_bit, VBV_buffer_size_value, constrained_parameter_flag, load_nontrix_intra_quantizer_traiter
[0214]
The sequence_header_code is data representing the start synchronization code of the sequence layer. The sequence_header_present_flag is data indicating whether the data in the sequence_header is valid or invalid. horizontal_size_value is data consisting of the lower 12 bits of the number of pixels in the horizontal direction of the image. vertical_size_value is data consisting of the lower 12 bits of the number of vertical lines of the image. Aspect_ratio_information is data representing the pixel aspect ratio (aspect ratio) or display screen aspect ratio. The frame_rate_code is data representing an image display cycle.
[0215]
bit_rate_value is lower 18 bits (rounded up in units of 400 bsp) of the bit rate for limiting the amount of generated bits. The marker_bit is bit data inserted to prevent start code emulation. VBV_buffer_size_value is lower 10-bit data of a value that determines the size of the generated code amount control virtual buffer (video buffer verifier). constrained_parameter_flag is data indicating that each parameter is within the limit. The load_intra_quantizer_matrix is data indicating the presence of intra MB quantization matrix data. intra_quantizer_matrix is data indicating the value of the intra MB quantization matrix. load_non_intra_quantizer_matrix is data indicating the presence of non-intra MB quantization matrix data. non_intra_quantizer_matrix is data representing a value of a non-intra MB quantization matrix.
[0216]
Next, in the user area of the picture layer of the bit stream generated in the encoding process at the final stage, a data element representing a sequence extension of the sequence layer used in the past encoding process is described as a history stream. .
[0217]
Data elements representing sequence extensions used in the past encoding process are extension_start_code, extension_start_code_identifier, sequence_extension_present_flag, profile_and_level_indication, progressive_sequence, chroma_format_horizontal_size_extension, vertical_size_extension, bit_rate_extension, vbv_buffer_size_extframe, extension_start_code,
[0218]
extension_start_code is data representing a start synchronization code of extension data. extension_start_code_identifier is data indicating which extension data is sent. The sequence_extension_present_flag is data indicating whether the data in the sequence extension is valid or invalid. Profile_and_level_indication is data for designating the profile and level of video data. progressive_sequence is data indicating that the video data is sequentially scanned. chroma_format is data for designating the color difference format of the video data.
[0219]
The horizontal_size_extension is upper 2 bits data added to the horizntal_size_value of the sequence header. vertical_size_extension is upper 2 bits of data to be added to the vertical_size_value of the sequence header. bit_rate_extension is upper 12-bit data added to bit_rate_value of the sequence header. vbv_buffer_size_extension is upper 8-bit data to be added to vbv_buffer_size_value of the sequence header. low_delay is data indicating that a B picture is not included. Frame_rate_extension_n is data for obtaining a frame rate in combination with frame_rate_code of the sequence header. Frame_rate_extension_d is data for obtaining a frame rate in combination with frame_rate_code of the sequence header.
[0220]
Subsequently, in the user area of the picture layer of the bit stream, a data element representing a sequence layer sequence display extension used in the past encoding process is described as a history stream.
[0221]
The data element described as the sequence display extension includes extension_start_code, extension_start_code_identifier, sequence_display_extension_present_flag, video_format, color_description, color_primaries, transfer_characteristics, matrix_coeffients, display_horizontal_size, and display_vertical_size.
[0222]
extension_start_code is data representing a start synchronization code of extension data. extension_start_code_identifier is a code indicating which extension data is sent. The sequence_display_extension_present_flag is data indicating whether the data element in the sequence display extension is valid or invalid. video_format is data representing the video format of the original signal. color_description is data indicating that there is detailed data of the color space. color_primaries is data indicating details of the color characteristics of the original signal. transfer_characteristics is data indicating details of how photoelectric conversion is performed. Matrix_coeffients is data indicating details of how the original signal is converted from the three primary colors of light. display_horizontal_size is data representing the active area (horizontal size) of the intended display. display_vertical_size is data representing the active area (vertical size) of the intended display.
[0223]
Subsequently, macroblock assignment data (macroblock_assignment_in_user_data) indicating phase information of the macroblock generated in the past encoding process is stored in the user area of the picture layer of the bitstream generated in the encoding process of the final stage, It is described as a history stream.
[0224]
Macroblock_assignment_in_user_data indicating the phase information of the macroblock is composed of data elements such as macroblock_assignment_present_flag, v_phase, and h_phase.
[0225]
This macroblock_assignment_present_flag is data indicating whether the data element in macroblock_assignment_in_user_data is valid or invalid. v_phase is data indicating vertical phase information when a macroblock is cut out from image data. h_phase is data indicating horizontal phase information when a macroblock is cut out from image data.
[0226]
Subsequently, in the user area of the picture layer of the bitstream generated by the encoding process at the final stage, a data element representing the GOP header of the GOP layer used in the past encoding process is described as a history stream. Yes.
[0227]
The data element representing this GOP header is composed of group_start_code, group_of_picture_header_present_flag, time_code, closed_gop, and broken_link.
[0228]
group_start_code is data indicating the start synchronization code of the GOP layer. group_of_picture_header_present_flag is data indicating whether a data element in group_of_picture_header is valid or invalid. time_code is a time code indicating the time from the beginning of the sequence of the first picture of the GOP. closed_gop is flag data indicating that an image in a GOP can be reproduced independently from other GOPs. The broken_link is flag data indicating that the first B picture in the GOP cannot be accurately reproduced for editing or the like.
[0229]
Subsequently, in the user area of the picture layer of the bitstream generated by the encoding process at the final stage, a data element representing the picture header of the picture layer used in the past encoding process is described as a history stream. Yes.
[0230]
Data elements related to this picture header are composed of picture_start_code, temporal_reference, picture_coding_type, vbv_delay, full_pel_forward_vector, forward_f_code, full_pel_backward_vector, and backward_f_code.
[0231]
Specifically, picture_start_code is data representing the start synchronization code of the picture layer. temporal_reference is a number indicating the display order of pictures and is data to be reset at the top of the GOP. picture_coding_type is data indicating a picture type. vbv_delay is data indicating the initial state of the virtual buffer at the time of random access. full_pel_forward_vector is data indicating whether the accuracy of the forward motion vector is an integer unit or a half pixel unit. forward_f_code is data representing the forward motion vector search range. full_pel_backward_vector is data indicating whether the accuracy of the backward motion vector is an integer unit or a half pixel unit. backward_f_code is data representing the backward motion vector search range.
[0232]
Subsequently, in the user area of the picture layer of the bit stream generated by the encoding process at the final stage, the picture coding extension of the picture layer used in the past encoding process is described as a history stream.
[0233]
The data elements related to this picture coding extension are extension_start_code, extension_start_code_identifier, f_code [0] [0], f_code [0] [1], f_code [1] [0], f_code [1] [1], intra_dc_precision, picture_structure, top_field_first , Frame_predictive_frame_dct, concealment_motion_vectors, q_scale_type, intra_vlc_format, alternate_scan, repeat_firt_field, chroma_420_type, progressive_frame, composite_display_flag, v_axis, field_sequence, sub_carrier, burst_amplitude, and sub_carrier_phase.
[0234]
extension_start_code is a start code indicating the start of extension data of the picture layer. extension_start_code_identifier is a code indicating which extension data is sent. f_code [0] [0] is data representing the horizontal motion vector search range in the forward direction. f_code [0] [1] is data representing a vertical motion vector search range in the forward direction. f_code [1] [0] is data representing the horizontal motion vector search range in the backward direction. f_code [1] [1] is data representing a vertical motion vector search range in the backward direction.
[0235]
intra_dc_precision is data representing the precision of the DC coefficient. Picture_structure is data indicating a frame structure or a field structure. In the case of a field structure, the data indicates whether the upper field or the lower field. top_field_first is data indicating whether the first field is upper or lower in the case of a frame structure. In the case of a frame structure, frame_predictive_frame_dct is data indicating that the prediction of the frame mode DCT is only the frame mode. concealment_motion_vectors is data indicating that a motion vector for concealing a transmission error is attached to an intra macroblock.
[0236]
q_scale_type is data indicating whether to use a linear quantization scale or a nonlinear quantization scale. The intra_vlc_format is data indicating whether another two-dimensional VLC is used for the intra macroblock. The alternate_scan is data representing a selection between using a zigzag scan or an alternate scan. repeat_firt_field is data used for 2: 3 pull-down. The chroma_420_type is data representing the same value as the next progressive_frame when the signal format is 4: 2: 0, and 0 otherwise. progressive_frame is data indicating whether or not this picture can be sequentially scanned. composite_display_flag is data indicating whether the source signal is a composite signal.
[0237]
v_axis is data used when the source signal is PAL. The field_sequence is data used when the source signal is PAL. sub_carrier is data used when the source signal is PAL. burst_amplitude is data used when the source signal is PAL. sub_carrier_phase is data used when the source signal is PAL.
[0238]
Subsequently, the quantization matrix extension used in the past encoding process is described as a history stream in the user area of the picture layer of the bit stream generated by the encoding process at the final stage.
[0239]
Data elements related to the quantization matrix extension, extension_start_code, extension_start_code_identifier, quant_matrix_extension_present_flag, load_intra_quantizer_matrix, intra_quantizer_matrix [64], load_non_intra_quantizer_matrix, non_intra_quantizer_matrix [64], load_chroma_intra_quantizer_matrix, chroma_intra_quantizer_matrix [64], load_chroma_non_intra_quantizer_matrix, and consists chroma_non_intra_quantizer_matrix [64].
[0240]
extension_start_code is a start code indicating the start of the quantization matrix extension. extension_start_code_identifier is a code indicating which extension data is sent. quant_matrix_extension_present_flag is data for indicating whether the data element in the quantization matrix extension is valid or invalid. load_intra_quantizer_matrix is data indicating the presence of quantization matrix data for intra macroblocks. Intra_quantizer_matrix is data indicating the value of a quantization matrix for an intra macroblock.
[0241]
load_non_intra_quantizer_matrix is data indicating the presence of quantization matrix data for non-intra macroblocks. non_intra_quantizer_matrix is data representing the value of a quantization matrix for a non-intra macroblock. load_chroma_intra_quantizer_matrix is data indicating the presence of quantization matrix data for the color difference intra macroblock. chroma_intra_quantizer_matrix is data indicating the value of the quantization matrix for the color difference intra macroblock. load_chroma_non_intra_quantizer_matrix is data indicating the presence of quantization matrix data for a color difference non-intra macroblock. chroma_non_intra_quantizer_matrix is data indicating the value of the quantization matrix for the chrominance non-intra macroblock.
[0242]
Subsequently, the copyright extension used in the past encoding process is described as the history stream in the user area of the picture layer of the bit stream generated by the encoding process in the final stage.
[0243]
The data elements related to the copyright extension are composed of extension_start_code, extension_start_code_itentifier, copyright_extension_present_flag, copyright_flag, copyright_identifier, original_or_copy, copyright_number_1, copyright_number_2, and copyright_number_3.
[0244]
extension_start_code is a start code indicating the start of the copyright extension. This code indicates which extension data of extension_start_code_itentifier is sent. The copyright_extension_present_flag is data for indicating whether the data element in this copyright extension is valid or invalid. copyright_flag indicates whether or not a copy right is given to the encoded video data until the next copyright extension or sequence end.
[0245]
The copyright_identifier is data for identifying the registration organization of the copy right designated by ISO / IEC JTC / SC29. original_or_copy is data indicating whether the data in the bitstream is original data or copy data. copyright_number_1 is data representing bits 44 to 63 of the copyright number. copyright_number_2 is
[0246]
Subsequently, the picture display extension (picture_display_extension) used in the past encoding process is described as a history stream in the user area of the picture layer of the bit stream generated by the encoding process at the final stage.
[0247]
Data elements representing this picture display extension include extension_start_code, extension_start_code_identifier, picture_display_extension_present_flag, frame_center_horizontal_offset_1, frame_center_vertical_offset_1, frame_center_horizontal_offset_2, frame_center_vertical_offset_2, frame_center_horizontal_offset_3, and _offcenter_3.
[0248]
extension_start_code is a start code for indicating the start of the picture display extension. extension_start_code_identifier is a code indicating which extension data is sent. picture_display_extension_present_flag is data indicating whether a data element in the picture display extension is valid or invalid. The frame_center_horizontal_offset is data indicating a horizontal offset of the display area, and can be defined up to three offset values. The frame_center_vertical_offset is data indicating the vertical offset of the display area, and can be defined up to three offset values.
[0249]
In the user area of the picture layer of the bit stream generated in the encoding process at the final stage, user data used in the past encoding process is stored in the history stream next to the history information indicating the picture display extension described above. It is described as.
[0250]
Next to the user data, information on the macroblock layer used in the past encoding process is described as a history stream.
[0251]
Information about this macroblock layer includes data elements related to macroblock positions such as macroblock_address_h, macroblock_address_v, slice_header_present_flag, skipped_macroblock_flag, macroblock_quant, macroblock_motion_forward, macroblock_motion_backward, macroblock_pattern, macroblock_type_block_type_data, And data elements related to quantization step control such as quantiser_scale_code, PMV [0] [0] [0], PMV [0] [0] [1], motion_vertical_field_select [0] [0], PMV [0] [1 ] [0], PMV [0] [1] [1], motion_vertical_field_select [0] [1], PMV [1] [0] [0], PMV [1] [0] [1], motion_vertical_field_select [1] Data on motion compensation such as [0], PMV [1] [1] [0], PMV [1] [1] [1], motion_vertical_field_select [1] [1], and data on macroblock patterns such as coded_block_pattern Jere And cement, num_mv_bits, is configured Num_coef_bits, and the data elements relating to the generated code amount of such Num_other_bits.
[0252]
Hereinafter, data elements related to the macroblock layer will be described in detail.
[0253]
macroblock_address_h is data for defining the absolute position of the current macroblock in the horizontal direction. macroblock_address_v is data for defining the absolute position of the current macroblock in the vertical direction. The slice_header_present_flag is data indicating whether or not this macroblock is the head of the slice layer and is accompanied by a slice header. skipped_macroblock_flag is data indicating whether or not to skip this macroblock in the decoding process.
[0254]
The macroblock_quant is data derived from a macroblock type (macroblock_type) shown in FIGS. 65 to 67 to be described later, and indicates whether quantizer_scale_code appears in the bitstream. The macroblock_motion_forward is data derived from the macroblock type shown in FIGS. 65 to 67 and used in the decoding process. The macroblock_motion_backward is data derived from the macroblock type shown in FIGS. 65 to 67 and used in the decoding process. The mocroblock_pattern is data derived from the macroblock type shown in FIGS. 65 to 67, and indicates whether the coded_block_pattern appears in the bitstream.
[0255]
The macroblock_intra is data derived from the macroblock type shown in FIGS. 65 to 67 and used in the decoding process. spatial_temporal_weight_code_flag is data derived from the macroblock type shown in FIGS. 65 to 67, and spatial_temporal_weight_code indicating the upsampling method of the lower layer image with temporal scalability is data indicating whether or not the bitstream exists. It is.
[0256]
frame_motion_type is a 2-bit code indicating the prediction type of the macroblock of the frame. If the number of prediction vectors is two and the field-based prediction type is “00”, if the number of prediction vectors is one and the field-based prediction type is “01”, the number of prediction vectors is one and the frame base The prediction type is “10”, and if the prediction type is one and the prime prediction type is “11”. field_motion_type is a 2-bit code indicating motion prediction of a macroblock in a field. If the prediction vector is one and the field-based prediction type is “01”, if the prediction vector is two and the 18 × 8 macroblock-based prediction type is “10”, the prediction vector is 1 It is “11” if the prediction type is individual and prime prime. dct_type is data indicating whether the DCT is a frame DCT mode or a field DCT mode. quantiser_scale_code is data indicating the quantization step size of the macroblock.
[0257]
Next, data elements relating to motion vectors will be described. The motion vector is encoded as a difference with respect to the previously encoded vector in order to reduce the motion vector required during decoding. In order to perform motion vector decoding, the decoder must maintain four motion vector prediction values (with horizontal and vertical components, respectively). This predicted motion vector is expressed as PMV [r] [s] [v]. [r] is a flag indicating whether the motion vector in the macroblock is the first vector or the second vector, and is “0” when the vector in the macroblock is the first vector. Thus, when the vector in the macroblock is the second vector, “1” is obtained. [s] is a flag indicating whether the direction of the motion vector in the macroblock is the forward direction or the backward direction, and is “0” in the case of the forward motion vector, and the backward motion vector In this case, it is “1”. [v] is a flag indicating whether the vector component in the macroblock is the horizontal direction or the vertical direction, and is “0” in the case of the horizontal component, and in the case of the vertical component Becomes “1”.
[0258]
Therefore, PMV [0] [0] [0] represents the horizontal component data of the forward motion vector of the first vector, and PMV [0] [0] [1] represents the first vector. PMV [0] [1] [0] represents the vertical component data of the forward motion vector, PMV [0] [1] [0] represents the horizontal component data of the backward motion vector of the first vector, and PMV [0] [ 1] [1] represents the vertical component data of the backward motion vector of the first vector, and PMV [1] [0] [0] represents the horizontal motion vector of the forward direction of the second vector. Represents the direction component data, PMV [1] [0] [1] represents the vertical component data of the forward motion vector of the second vector, and PMV [1] [1] [0] PMV [1] [1] [1] represents the vertical component data of the backward motion vector of the second vector, and represents the horizontal component data of the backward motion vector of the second vector. Yes.
[0259]
motion_vertical_field_select [r] [s] is data indicating which reference field is used for the prediction format. When the motion_vertical_field_select [r] [s] is “0”, the top reference field is used, and when it is “1”, the bottom reference field is used.
[0260]
Therefore, motion_vertical_field_select [0] [0] indicates a reference field for generating the forward motion vector of the first vector, and motion_vertical_field_select [0] [1] indicates the backward motion vector of the first vector. , Motion_vertical_field_select [1] [0] indicates a reference field for generating a forward motion vector of the second vector, and motion_vertical_field_select [1] [1] indicates the second A reference field for generating a backward motion vector of the vector is shown.
[0261]
The coded_block_pattern is variable length data indicating which DCT block has a significant coefficient (non-zero coefficient) among a plurality of DCT blocks storing DCT coefficients. num_mv_bits is data indicating the code amount of the motion vector in the macroblock. num_coef_bits is data indicating the code amount of the DCT coefficient in the macroblock. num_other_bits is data indicating the code amount of the macroblock and the code amount other than the motion vector and the DCT coefficient.
[0262]
Next, a syntax for decoding each data element from a variable-length history stream will be described with reference to FIGS.
[0263]
This variable length history stream consists of next_start_code () function, sequence_header () function, sequence_extension () function, extension_and_user_data (0) function, group_of_picture_header () function, extension_and_user_data (1) function, picture_header () function, picture_coding_extension () function, It consists of data elements defined by the extension_and_user_data (2) function and the picture_data () function.
[0264]
Since the next_start_code () function is a function for searching for a start code existing in the bit stream, the top of the history stream is a data element used in the past encoding process as shown in FIG. A data element defined by the sequence_header () function is described.
[0265]
The data elements defined by the sequence_header () function are sequence_header_code, sequence_header_present_flag, horizontal_size_value, vertical_size_value, aspect_ratio_information, frame_rate_code, bit_rate_value, marker_bit, VBV_buffer_size_value, constrained_parameter_flag, load_intra_intra_izer_izer, and so on.
[0266]
The sequence_header_code is data representing the start synchronization code of the sequence layer. The sequence_header_present_flag is data indicating whether the data in the sequence_header is valid or invalid. horizontal_size_value is data consisting of the lower 12 bits of the number of pixels in the horizontal direction of the image. vertical_size_value is data consisting of the lower 12 bits of the number of vertical lines of the image. Aspect_ratio_information is data representing the pixel aspect ratio (aspect ratio) or display screen aspect ratio. The frame_rate_code is data representing an image display cycle. bit_rate_value is lower 18 bits (rounded up in units of 400 bsp) of the bit rate for limiting the amount of generated bits.
[0267]
The marker_bit is bit data inserted to prevent start code emulation. VBV_buffer_size_value is lower 10-bit data of a value that determines the size of the generated code amount control virtual buffer (video buffer verifier). constrained_parameter_flag is data indicating that each parameter is within the limit. The load_intra_quantizer_matrix is data indicating the presence of intra MB quantization matrix data. intra_quantizer_matrix is data indicating the value of the intra MB quantization matrix. load_non_intra_quantizer_matrix is data indicating the presence of non-intra MB quantization matrix data. non_intra_quantizer_matrix is data representing a value of a non-intra MB quantization matrix.
[0268]
Next to the data element defined by the sequence_header () function, the data element defined by the sequence_extension () function as shown in FIG. 49 is described as a history stream.
[0269]
Data elements defined by the sequence_extension () function are extension_start_code, extension_start_code_identifier, sequence_extension_present_flag, profile_and_level_indication, progressive_sequence, chroma_format, horizontal_size_extension, vertical_size_extension, bit_rate_extension, _delay_rate_rate_delay_rate_delay_rate
[0270]
extension_start_code is data representing a start synchronization code of extension data. extension_start_code_identifier is data indicating which extension data is sent. The sequence_extension_present_flag is data indicating whether the data in the sequence extension is valid or invalid. Profile_and_level_indication is data for designating the profile and level of video data. progressive_sequence is data indicating that the video data is sequentially scanned. chroma_format is data for designating the color difference format of the video data. The horizontal_size_extension is upper 2 bits data added to the horizntal_size_value of the sequence header. vertical_size_extension is upper 2 bits of data added to vertical_size_value of the sequence header. bit_rate_extension is upper 12-bit data added to bit_rate_value of the sequence header. vbv_buffer_size_extension is upper 8-bit data to be added to vbv_buffer_size_value of the sequence header.
[0271]
low_delay is data indicating that a B picture is not included. Frame_rate_extension_n is data for obtaining a frame rate in combination with frame_rate_code of the sequence header. Frame_rate_extension_d is data for obtaining a frame rate in combination with frame_rate_code of the sequence header.
[0272]
Next to the data element defined by the sequence_extension () function, the data element defined by the extension_and_user_data (0) function as shown in FIG. 50 is described as a history stream. The extension_and_user_data (i) function describes only the data element defined by the user_data () function as a history stream without describing the data element defined by the extension_data () function when "i" is other than 2. . Therefore, the extension_and_user_data (0) function describes only the data element defined by the user_data () function as a history stream.
[0273]
The user_data () function describes user data as a history stream based on the syntax as shown in FIG.
[0274]
Next to the data element defined by the extension_and_user_data (0) function, the data element defined by the group_of_picture_header () function as shown in FIG. 52 and the data element defined by the extension_and_user_data (1) function are used as a history stream. It has been described. However, the data element defined by the group_of_picture_header () function and the data element defined by the extension_and_user_data (1) function are described only when the group_start_code indicating the GOP layer start code is described in the history stream. ing.
[0275]
The data element defined by the group_of_picture_header () function is composed of group_start_code, group_of_picture_header_present_flag, time_code, closed_gop, and broken_link.
[0276]
group_start_code is data indicating the start synchronization code of the GOP layer. group_of_picture_header_present_flag is data indicating whether a data element in group_of_picture_header is valid or invalid. time_code is a time code indicating the time from the beginning of the sequence of the first picture of the GOP. closed_gop is flag data indicating that an image in a GOP can be reproduced independently from other GOPs. The broken_link is flag data indicating that the first B picture in the GOP cannot be accurately reproduced for editing or the like.
[0277]
Similar to the extension_and_user_data (0) function, the extension_and_user_data (1) function describes only the data element defined by the user_data () function as a history stream.
[0278]
If group_start_code indicating the start code of the GOP layer does not exist in the history stream, the data elements defined by these group_of_picture_header () and extension_and_user_data (1) functions are not described in the history stream. Absent. In this case, after the data element defined by the extension_and_user_data (0) function, the data element defined by the picture_headr () function is described as a history stream.
[0279]
Data elements defined by the picture_headr () function are picture_start_code, temporal_reference, picture_coding_type, vbv_delay, full_pel_forward_vector, forward_f_code, full_pel_backward_vector, backward_f_code, extra_bit_picture, and extra_information_picture, as shown in FIG.
[0280]
Specifically, picture_start_code is data representing the start synchronization code of the picture layer. temporal_reference is a number indicating the display order of pictures and is data to be reset at the top of the GOP. picture_coding_type is data indicating a picture type. vbv_delay is data indicating the initial state of the virtual buffer at the time of random access. full_pel_forward_vector is data indicating whether the accuracy of the forward motion vector is an integer unit or a half pixel unit. forward_f_code is data representing the forward motion vector search range. full_pel_backward_vector is data indicating whether the accuracy of the backward motion vector is an integer unit or a half pixel unit. backward_f_code is data representing the backward motion vector search range. extra_bit_picture is a flag indicating the presence of subsequent additional information. When this extra_bit_picture is “1”, there is next extra_information_picture, and when extra_bit_picture is “0”, it indicates that there is no subsequent data. extra_information_picture is information reserved in the standard.
[0281]
Next to the data element defined by the picture_headr () function, the data element defined by the picture_coding_extension () function as shown in FIG. 54 is described as a history stream.
[0282]
The data elements defined by this picture_coding_extension () function are extension_start_code, extension_start_code_identifier, f_code [0] [0], f_code [0] [1], f_code [1] [0], f_code [1] [1], intra_dc_precision, picture_structure, top_field_first, frame_predictive_frame_dct, concealment_motion_vectors, q_scale_type, intra_vlc_format, alternate_scan, repeat_firt_field, chroma_420_type, progressive_frame, composite_display_flag, v_axis, field_sequence, sub_mplitude, phase_st, sub_carrier, burst
[0283]
extension_start_code is a start code indicating the start of extension data of the picture layer. extension_start_code_identifier is a code indicating which extension data is sent. f_code [0] [0] is data representing the horizontal motion vector search range in the forward direction. f_code [0] [1] is data representing a vertical motion vector search range in the forward direction. f_code [1] [0] is data representing the horizontal motion vector search range in the backward direction. f_code [1] [1] is data representing a vertical motion vector search range in the backward direction. intra_dc_precision is data representing the precision of the DC coefficient.
[0284]
Picture_structure is data indicating a frame structure or a field structure. In the case of a field structure, the data indicates whether the upper field or the lower field. top_field_first is data indicating whether the first field is upper or lower in the case of a frame structure. In the case of a frame structure, frame_predictive_frame_dct is data indicating that the prediction of the frame mode DCT is only the frame mode. concealment_motion_vectors is data indicating that a motion vector for concealing a transmission error is attached to an intra macroblock. q_scale_type is data indicating whether to use a linear quantization scale or a nonlinear quantization scale. The intra_vlc_format is data indicating whether another two-dimensional VLC is used for the intra macroblock.
[0285]
The alternate_scan is data representing a selection between using a zigzag scan or an alternate scan. repeat_firt_field is data used for 2: 3 pull-down. The chroma_420_type is data representing the same value as the next progressive_frame when the signal format is 4: 2: 0, and 0 otherwise. progressive_frame is data indicating whether or not this picture can be sequentially scanned. composite_display_flag is data indicating whether the source signal is a composite signal. v_axis is data used when the source signal is PAL. The field_sequence is data used when the source signal is PAL. sub_carrier is data used when the source signal is PAL. burst_amplitude is data used when the source signal is PAL. sub_carrier_phase is data used when the source signal is PAL.
[0286]
Next to the data element defined by the picture_coding_extension () function, the data element defined by extensions_and_user_data (2) is described as a history stream. As shown in FIG. 50, the extension_and_user_data (2) function describes a data element defined by the extension_data () function when an extension start code (extension_start_code) exists in the bitstream. Next to this data element, when a user data start code (user_data_start_code) exists in the bitstream, a data element defined by the user_data () function is described. However, when the extension start code and the user data start code do not exist in the bit stream, the data elements defined by the extension_data () function and the user_data () function are not described in the bit stream.
[0287]
As shown in FIG. 55, the extension_data () function records a data element indicating extension_start_code and a data element defined by the quant_matrix_extension () function, copyright_extension () function, and picture_display_extension () function in the bitstream. This is a function to describe as a stream.
[0288]
Data elements defined by the quant_matrix_extension () function, as shown in FIG. 56, extension_start_code, extension_start_code_identifier, quant_matrix_extension_present_flag, load_intra_quantizer_matrix, intra_quantizer_matrix [64], load_non_intra_quantizer_matrix, non_intra_quantizer_matrix [64], load_chroma_intra_quantizer_matrix, chroma_intra_quantizer_matrix [64], load_chroma_non_intra_quantizer_matrix, and chroma_non_intra_quantizer_matrix [64].
[0289]
extension_start_code is a start code indicating the start of the quantization matrix extension. extension_start_code_identifier is a code indicating which extension data is sent. quant_matrix_extension_present_flag is data for indicating whether the data element in the quantization matrix extension is valid or invalid. load_intra_quantizer_matrix is data indicating the presence of quantization matrix data for intra macroblocks. Intra_quantizer_matrix is data indicating the value of a quantization matrix for an intra macroblock.
[0290]
load_non_intra_quantizer_matrix is data indicating the presence of quantization matrix data for non-intra macroblocks. non_intra_quantizer_matrix is data representing the value of a quantization matrix for a non-intra macroblock. load_chroma_intra_quantizer_matrix is data indicating the presence of quantization matrix data for the color difference intra macroblock. chroma_intra_quantizer_matrix is data indicating the value of the quantization matrix for the color difference intra macroblock. load_chroma_non_intra_quantizer_matrix is data indicating the presence of quantization matrix data for a color difference non-intra macroblock. chroma_non_intra_quantizer_matrix is data indicating the value of the quantization matrix for the chrominance non-intra macroblock.
[0291]
As shown in FIG. 57, the data element defined by the copyright_extension () function is composed of extension_start_code, extension_start_code_itentifier, copyright_extension_present_flag, copyright_flag, copyright_identifier, original_or_copy, copyright_number_1, copyright_number_2, and copyright_number_3.
[0292]
extension_start_code is a start code indicating the start of the copyright extension. extension_start_code_itentifier This code indicates which extension data is sent. The copyright_extension_present_flag is data for indicating whether the data element in this copyright extension is valid or invalid.
[0293]
copyright_flag indicates whether or not a copy right is given to the encoded video data until the next copyright extension or sequence end. The copyright_identifier is data for identifying the registration organization of the copy right designated by ISO / IEC JTC / SC29. original_or_copy is data indicating whether the data in the bitstream is original data or copy data. copyright_number_1 is data representing bits 44 to 63 of the copyright number. copyright_number_2 is
[0294]
Data elements defined by the picture_display_extension () function are extension_start_code_identifier, frame_center_horizontal_offset, frame_center_vertical_offset, etc., as shown in FIG.
[0295]
extension_start_code_identifier is a code indicating which extension data is sent. The frame_center_horizontal_offset is data indicating the horizontal offset of the display area, and the number of offset values defined by number_of_frame_center_offsets can be defined. The frame_center_vertical_offset is data indicating the vertical offset of the display area, and the number of offset values defined by number_of_frame_center_offsets can be defined.
[0296]
Returning again to FIG. 47, after the data element defined by the extension_and_user_data (2) function, the data element defined by the picture_data () function is described as a history stream.
[0297]
The data element defined by the picture_data () function is a data element defined by the slice () function as shown in FIG. However, when slice_start_code indicating the start code of the slice () function does not exist in the bitstream, the data element defined by this slice () function is not described in the bitstream.
[0298]
As shown in FIG. 60, the slice () function includes data elements such as slice_start_code, slice_quantiser_scale_code, intra_slice_flag, intra_slice, reserved_bits, extra_bit_slice, extra_information_slice, and extra_bit_slice, and data elements defined by the macroblock () function. It is a function to describe as.
[0299]
The slice_start_code is a start code indicating the start of the data element defined by the slice () function. The slice_quantiser_scale_code is data indicating the quantization step size set for the macroblock existing in this slice layer. However, when quantiser_scale_code is set for each macroblock, the macroblock_quantiser_scale_code data set for each macroblock is used preferentially.
[0300]
intra_slice_flag is a flag indicating whether or not intra_slice and reserved_bits exist in the bitstream. intra_slice is data indicating whether or not a non-intra macroblock exists in the slice layer. If any of the macroblocks in the slice layer is a non-intra macroblock, intra_slice is “0”, and if all of the macroblocks in the slice layer are non-intra macroblocks, intra_slice is “1”. Become. reserved_bits is 7-bit data and takes a value of “0”. extra_bit_slice is a flag indicating that additional information exists as a history stream, and is set to “1” when extra_information_slice exists next. If there is no additional information, it is set to “0”.
[0301]
Next to these data elements, data elements defined by the macroblock () function are described as a history stream.
[0302]
As shown in FIG. 61, the macroblock () function is a function for describing data elements such as macroblock_escape, macroblock_address_increment, and macroblock_quantiser_scale_code, and data elements defined by the macroblock_modes () function and macroblock_vecters (s) function. .
[0303]
macroblock_escape is a fixed bit string indicating whether or not the horizontal difference between the reference macroblock and the previous macroblock is 34 or more. If the horizontal difference between the reference macroblock and the previous macroblock is 34 or more, 33 is added to the value of macroblock_address_increment. The macroblock_address_increment is data indicating a horizontal difference between the reference macroblock and the previous macroblock. If there is one macroblock_escape before this macroblock_address_increment, the value obtained by adding 33 to the value of this macroblock_address_increment is the data indicating the horizontal difference between the actual reference macroblock and the previous macroblock. .
[0304]
macroblock_quantiser_scale_code is a quantization step size set for each macroblock. In each slice layer, slice_quantiser_scale_code indicating the quantization step size of the slice layer is set, but when macroblock_quantiser_scale_code is set for the reference macroblock, this quantization step size is selected.
[0305]
Next to macroblock_address_increment, a data element defined by the macroblock_modes () function is described. As shown in FIG. 62, the macroblock_modes () function is a function for describing data elements such as macroblock_type, frame_motion_type, field_motion_type, and dct_type as a history stream.
[0306]
macroblock_type is data indicating the coding type of the macroblock. Specifically, as shown in FIGS. 65 to 67, macroblock_type is variable-length data generated from flags such as macroblock_quant, dct_type_flag, macroblock_motion_forward, and macroblock_motion_backward. macroblock_quant is a flag indicating whether or not macroblock_quantiser_scale_code for setting the quantization step size for the macroblock is set. When macroblock_quantiser_scale_code exists in the bitstream, macroblock_quant is a value of “1”. I take the.
[0307]
dct_type_flag is a flag for indicating whether or not dct_type indicating whether the reference macroblock is encoded by the frame DCT or the field DCT exists (in other words, a flag indicating whether or not the DCT is DCT), and is a bit. When dct_type exists in the stream, this dct_type_flag takes a value of “1”. The macroblock_motion_forward is a flag indicating whether or not the reference macroblock is predicted forward, and takes a value of “1” when the reference macroblock is predicted forward. macroblock_motion_backward is a flag indicating whether or not the reference macroblock is predicted backward, and takes a value of “1” when backward prediction is performed.
[0308]
If the macroblock_motion_forward or the macroblock_motion_backward is “1”, the picture structure is a frame, and the frame_period_frame_dct is “0”, the data element representing the frame_motion_type is described next to the data element representing the macroblock_type. This frame_period_frame_dct is a flag indicating whether or not frame_motion_type exists in the bitstream.
[0309]
frame_motion_type is a 2-bit code indicating the prediction type of the macroblock of the frame. If the number of prediction vectors is two and the field-based prediction type is “00”, if the number of prediction vectors is one and the field-based prediction type is “01”, the number of prediction vectors is one and the frame base The prediction type is “10”, and if the prediction type is one and the prime prediction type is “11”.
[0310]
If macroblock_motion_forward or macroblock_motion_backward is “1” and a picture structure does not appear in a frame, a data element representing field_motion_type is described next to a data element representing macroblock_type.
[0311]
field_motion_type is a 2-bit code indicating motion prediction of a macroblock in a field. If the prediction vector is one and the field-based prediction type is “01”, if the prediction vector is two and the 18 × 8 macroblock-based prediction type is “10”, the prediction vector is 1 It is “11” if the prediction type is individual and prime prime.
[0312]
If the picture structure is a frame, frame_period_frame_dct indicates that frame_motion_type is present in the bitstream, and frame_period_frame_dct indicates that dct_type is present in the bitstream, then dct_type after the data element representing macroblock_type A data element representing is described. Dct_type is data indicating whether the DCT is a frame DCT mode or a field DCT mode.
[0313]
Referring back to FIG. 61, if the reference macroblock is a forward prediction macroblock or the reference macroblock is an intra macroblock and is a concealment macroblock, the motion_vectors (0) function Describes the data element defined by. When the reference macroblock is a backward prediction macroblock, a data element defined by the motion_vectors (1) function is described. The motion_vectors (0) function is a function for describing a data element relating to the first motion vector, and the motion_vectors (1) function is for describing a data element relating to the second motion vector. Is a function of
[0314]
The motion_vectors (s) function is a function for describing data elements relating to motion vectors, as shown in FIG.
[0315]
If there is one motion vector and the dial prime prediction mode is not used, a data element defined by motion_vertical_field_select [0] [s] and motion_vector (0, s) is described.
[0316]
In this motion_vertical_field_select [r] [s], the first motion vector (which may be either forward or backward vector) is a vector created by referring to the bottom field or refers to the top field. Is a flag indicating whether the vector is a This index “r” is an index indicating whether the vector is the first vector or the second vector, and “s” is whether the prediction direction is forward or backward prediction. It is an indicator that shows.
[0317]
As shown in FIG. 64, the motion_vector (r, s) function includes a data string related to motion_code [r] [s] [t], a data string related to motion_residual [r] [s] [t], and dmvector [t ] Is a function for describing the data representing [].
[0318]
motion_code [r] [s] [t] is variable-length data representing the magnitude of the motion vector in the range of −16 to +16. motion_residual [r] [s] [t] is variable-length data representing a motion vector residual. Therefore, a detailed motion vector can be described by the values of motion_code [r] [s] [t] and motion_residual [r] [s] [t]. dmvector [t] is an existing value according to the time distance in order to generate a motion vector in one field (for example, the top field is one field with respect to the bottom field) in the dual prime prediction mode. The motion vector is scaled, and the vertical direction is corrected in order to reflect the vertical shift between the lines of the top field and the bottom field. This index “r” is an index indicating whether the vector is the first vector or the second vector, and “s” is whether the prediction direction is forward or backward prediction. It is an indicator that shows. “S” is data indicating whether the motion vector is a vertical component or a horizontal component.
[0319]
64. First, a data string representing motion_coder [r] [s] [0] in the horizontal direction is described as a history stream by the motion_vector (r, s) function shown in FIG. Since the number of bits of both motion_residual [0] [s] [t] and motion_residual [1] [s] [t] is indicated by f_code [s] [t], f_code [s] [t] is not 1 In this case, motion_residual [r] [s] [t] is present in the bitstream. The motion_residual [r] [s] [0] of the horizontal component is not “1” and the motion_code [r] [s] [0] of the horizontal component is not “0”. Since there is a data element representing [r] [s] [0], which means that there is a horizontal component of the motion vector, in that case, motion_residual [r] [s ] A data element representing [0] is described.
[0320]
Subsequently, a data string representing motion_coder [r] [s] [1] in the vertical direction is described as a history stream. Similarly, since the number of bits of both motion_residual [0] [s] [t] and motion_residual [1] [s] [t] is indicated by f_code [s] [t], f_code [s] [t] If is not 1, it indicates that motion_residual [r] [s] [t] is present in the bitstream. motion_residual [r] [s] [1] is not “1” and motion_code [r] [s] [1] is not “0”. This means that motion_residual [r] [s] [1] Means that there is a vertical component of the motion vector, and in this case, the data element that represents the vertical component motion_residual [r] [s] [1] Is described.
[0321]
In the variable length format, history information can be reduced in order to reduce the transmission bit rate.
[0322]
That is, when macroblock_type and motion_vectors () are transferred but quantizer_scale_code is not transferred, the bit rate can be reduced by setting slice_quantiser_scale_code to “00000”.
[0323]
In addition, when only macroblock_type is transferred and motion_vectors (), quantizer_scale_code, and dct_type are not transferred, the bit rate can be reduced by using “not coded” as macroblock_type.
[0324]
Furthermore, when only picture_coding_type is transferred and all information below slice () is not transferred, the bit rate can be reduced by using picture_data () without slice_start_code.
[0325]
In the above, “1” is inserted every 22 bits in order to prevent the continuous “0” of 23 bits in user_data from being output. However, it may not be every 22 bits. Further, instead of counting the number of consecutive “0” s and inserting “1”, it is possible to check and insert Byte_allign.
[0326]
Furthermore, in MPEG, the generation of 23 bits of continuous “0” is prohibited, but in reality, only the case where 23 bits are continued from the beginning of the byte is a problem. If 0 continues for 23 bits, this is not a problem. Therefore, for example, “1” may be inserted at a position other than the LSB every 24 bits.
[0327]
In the above, the history information is in a format close to a video elementary stream, but may be in a format close to a packetized elementary stream or a transport stream. In addition, although the location of user_data in Elementary Stream is in front of picture_data, it can be other locations.
[0328]
The computer program for performing each of the above processes can be provided to the user via a network providing medium such as the Internet or a digital satellite in addition to a providing medium made of an information recording medium such as a magnetic disk or a CD-ROM.
[0329]
【The invention's effect】
As described above, according to the image data processing device and method and the recording medium of the present invention, the first encoding parameter is extracted from the first bit stream encoded with the first encoding parameter, and the first A first bit stream is decoded into image data using an encoding parameter of 1, and from the first bit stream encoded with the first encoding parameter, An encoding parameter obtained by removing the first encoding parameter from the past multiple generation encoding parameters is used as the first history encoding parameter. First history information including is extracted, and included in the extracted first encoding parameter and first history information First history encoding parameter Are output together with the decoded image data, and the output first encoding parameter and First history encoding parameter To obtain a reuse encoding parameter for reuse in the encoding process, and output the first encoding parameter and Second history information including a coding parameter obtained by removing a reuse coding parameter from the first history coding parameter as a second history coding parameter Is generated, the output image data is acquired, and the acquired Reuse coding parameters And encoding the image data to generate a second bit stream, and to the generated second bit stream, Reuse coding parameters In addition, since the second history information is multiplexed, it is possible to suppress image degradation due to re-encoding with a small-scale apparatus.
[Brief description of the drawings]
FIG. 1 is a diagram for explaining the principle of high-efficiency encoding.
FIG. 2 is a diagram for explaining a picture type when image data is compressed.
FIG. 3 is a diagram illustrating picture types when image data is compressed.
FIG. 4 is a diagram for explaining the principle of encoding a moving image signal.
FIG. 5 is a block diagram illustrating a configuration of an apparatus that encodes and decodes a moving image signal.
FIG. 6 is a diagram illustrating format conversion.
7 is a block diagram showing a configuration of the
8 is a diagram for explaining the operation of a prediction
9 is a diagram for explaining the operation of a prediction
10 is a diagram for explaining the operation of a prediction
11 is a diagram for explaining the operation of a prediction
12 is a block diagram showing a configuration of the
FIG. 13 is a diagram illustrating SNR control corresponding to a picture type.
FIG. 14 is a block diagram showing a configuration of a
15 is a block diagram showing a more detailed configuration of the
16 is a block diagram showing a configuration of a
FIG. 17 is a diagram illustrating macroblock pixels.
FIG. 18 is a diagram for explaining an area in which an encoding parameter is recorded.
FIG. 19 is a block diagram showing a configuration of an encoder 121 built in the
20 is a block diagram illustrating a configuration example of a
FIG. 21 is a block diagram illustrating a configuration example of the
22 is a block diagram illustrating a configuration example of a
23 is a block diagram illustrating a configuration example of a
24 is a timing chart illustrating the operation of
25 is a block diagram illustrating a configuration example of a
26 is a block diagram showing a configuration example of a
27 is a block diagram showing another configuration example of the
28 is a block diagram showing another configuration example of the
29 is a block diagram illustrating a configuration example of a
30 is a diagram showing a state in which the
FIG. 31 is a diagram for explaining an area in which an encoding parameter is recorded.
Fig. 32 is a flowchart for describing changeable picture type determination processing of the
FIG. 33 is a diagram illustrating an example in which a picture type is changed.
FIG. 34 is a diagram illustrating another example in which the picture type is changed.
FIG. 35 is a diagram for describing quantization control processing of the
36 is a flowchart for describing quantization control processing of the
FIG. 37 is a block diagram showing a configuration of the
Fig. 38 is a diagram for describing the syntax of an MPEG stream.
FIG. 39 is a diagram for explaining the configuration of the syntax of FIG. 38;
Fig. 40 is a diagram for describing the syntax of history_stream () for recording history information of fixed length.
Fig. 41 is a diagram for describing the syntax of history_stream () for recording history information of fixed length.
Fig. 42 is a diagram illustrating the syntax of history_stream () for recording history information of fixed length.
FIG. 43 is a diagram illustrating the syntax of history_stream () for recording fixed-length history information.
Fig. 44 is a diagram for describing the syntax of history_stream () for recording history information of fixed length.
Fig. 45 is a diagram for describing the syntax of history_stream () for recording history information of fixed length.
FIG. 46 is a diagram for describing the syntax of history_stream () for recording fixed-length history information.
Fig. 47 is a diagram for describing the syntax of history_stream () for recording variable-length history information.
Fig. 48 is a diagram for describing the syntax of sequence_header ().
Fig. 49 is a diagram for describing the syntax of sequence_extension ().
Fig. 50 is a diagram for describing the syntax of extension_and_user_data ().
Fig. 51 is a diagram illustrating the syntax of user_data ().
Fig. 52 is a diagram for describing the syntax of group_of_pictures_header ().
Fig. 53 is a diagram for describing the syntax of picture_header ().
Fig. 54 is a diagram for describing the syntax of picture_coding_extension ().
[Fig. 55] Fig. 55 is a diagram for describing the syntax of extension_data ().
Fig. 56 is a diagram for describing the syntax of quant_matrix_extension ().
Fig. 57 is a diagram for describing the syntax of copyright_extension ().
Fig. 58 is a diagram for describing the syntax of picture_display_extension ().
Fig. 59 is a diagram for describing the syntax of picture_data ().
Fig. 60 is a diagram for describing the syntax of slice ().
Fig. 61 is a diagram for describing the syntax of macroblock ();
Fig. 62 is a diagram for describing the syntax of macroblock_modes ().
Fig. 63 is a diagram for describing the syntax of motion_vectors (s).
Fig. 64 is a diagram for describing the syntax of motion_vector (r, s).
Fig. 65 is a diagram for describing a variable length code of macroblock_type for an I picture.
Fig. 66 is a diagram for describing a variable length code of macroblock_type for a P picture.
[Fig. 67] Fig. 67 is a diagram for describing a variable length code of macroblock_type for a B picture.
FIG. 68 is a block diagram showing an example of a configuration of a conventional transcoder 131.
FIG. 69 is a block diagram showing an example of a configuration of a conventional transcoder 131.
Fig. 70 is a diagram for explaining an arrangement of a conventional encoding device and decoding device.
[Explanation of symbols]
DESCRIPTION OF
Claims (12)
第1の符号化パラメータで符号化された第1のビットストリームから、前記第1の符号化パラメータを抽出するとともに、前記第1の符号化パラメータを用いて前記第1のビットストリームを前記画像データに復号する復号手段と、
前記第1の符号化パラメータで符号化された前記第1のビットストリームから、過去複数世代の符号化パラメータから前記第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出手段と、
前記復号手段により抽出された前記第1の符号化パラメータ及び前記履歴情報抽出手段により抽出された前記第1の履歴情報に含まれる前記第1の履歴符号化パラメータを、前記復号手段により復号された前記画像データとともに出力する出力手段と、
前記出力手段により出力された前記第1の符号化パラメータ及び前記第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、前記出力手段により出力された前記画像データを取得する取得手段と、
前記出力手段により出力された前記第1の符号化パラメータおよび前記第1の履歴符号化パラメータから、前記取得手段により取得された前記再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成手段と、
前記取得手段により取得された前記再利用符号化パラメータに基づいて、前記取得手段により取得された前記画像データを符号化して第2のビットストリームを生成するとともに、前記取得手段により取得された前記再利用符号化パラメータ及び前記履歴情報生成手段により生成された前記第2の履歴情報を、生成された前記第2のビットストリームに多重化する符号化手段と
を備えることを特徴とする画像データ処理装置。In an image data processing apparatus that converts a bit rate of a bit stream of input image data or a GOP (Group of Picture) structure and outputs the converted data,
The first encoding parameter is extracted from the first bit stream encoded with the first encoding parameter, and the first bit stream is converted into the image data using the first encoding parameter. Decoding means for decoding into
A coding parameter obtained by removing the first coding parameter from a plurality of past generation parameters from the first bitstream coded with the first coding parameter is used as a first history coding parameter. History information extracting means for extracting first history information including;
The first coding parameter extracted by the decoding unit and the first history coding parameter included in the first history information extracted by the history information extraction unit are decoded by the decoding unit. Output means for outputting together with the image data;
An encoding parameter to be reused in an encoding process is acquired as a reuse encoding parameter from either the first encoding parameter or the first history encoding parameter output by the output unit. And an acquisition means for acquiring the image data output by the output means;
An encoding parameter obtained by removing the reuse encoding parameter acquired by the acquisition unit from the first encoding parameter and the first history encoding parameter output by the output unit is a second history code. History information generating means for generating the second history information included as the activation parameter ;
Based on the reuse encoding parameter acquired by the acquisition unit, the image data acquired by the acquisition unit is encoded to generate a second bit stream, and the re- transmission acquired by the acquisition unit. An image data processing apparatus comprising: an encoding unit that multiplexes the second encoding information generated by the use encoding parameter and the history information generation unit into the generated second bitstream. .
ことを特徴とする請求項1に記載の画像データ処理装置。The output means decodes the first coding parameter extracted by the decoding means and the first history coding parameter included in the first history information extracted by the history information extraction means. The image data processing apparatus according to claim 1, wherein the image data decoded by the means is multiplexed and output.
前記符号化手段は、ピクチャタイプを変更して符号化する際に、前記符号化手段による符号化処理よりも過去の世代の符号化処理において前記ピクチャタイプを変更した世代の前記ピクチャ履歴符号化パラメータが前記ピクチャ履歴符号化パラメータに含まれている場合は、前記ピクチャタイプを変更した世代のピクチャ履歴符号化パラメータを前記再利用符号化パラメータとして再利用する
ことを特徴とする請求項1に記載の画像データ処理装置。The history information generating means includes a first generation parameter and a first history encoding parameter that are included in the first history encoding parameter for each picture type in a previous generation of encoding processing than the encoding processing by the encoding means. Generating the second history information from a picture history encoding parameter which is a used encoding parameter ;
When the encoding unit changes the picture type and encodes, the picture history encoding parameter of the generation in which the picture type is changed in the encoding process of the past generation than the encoding process by the encoding unit If is contained in the picture history encoding parameters, according to claim 1, characterized in that reusing picture history encoding parameter generation changing the picture type as the re-use encoding parameters Image data processing device.
前記符号化手段は、符号化パラメータを算出する算出手段を備え、Iピクチャのビットレートを変更する場合、前記算出手段により算出された第1の量子化スケールと、前記再利用符号化パラメータに含まれる第2の量子化スケールのうち、より大きい量子化スケールを符号化に用いる量子化スケールとして利用する
ことを特徴とする請求項1に記載の画像データ処理装置。 The first encoding parameter and the first history encoding parameter include a quantization scale;
The encoding means includes calculation means for calculating an encoding parameter. When changing the bit rate of an I picture, the encoding means includes the first quantization scale calculated by the calculation means and the reuse encoding parameter . The image data processing apparatus according to claim 1, wherein a larger one of the second quantization scales is used as a quantization scale used for encoding.
ことを特徴とする請求項1に記載の画像データ処理装置。The image data processing apparatus according to claim 1, wherein the history information generating unit converts the second history information into a user data format for multiplexing the second bit stream.
ことを特徴とする請求項5に記載の画像データ処理装置。The encoding means describes the second history information in a user data area in a picture layer of the second bitstream, and sets the reuse encoding parameter to a sequence layer of the second bitstream, GOP 6. The image data processing device according to claim 5 , wherein the image data processing device is described at a predetermined position in a layer, a picture layer, a slice layer, and a macroblock layer.
ことを特徴とする請求項5に記載の画像データ処理装置。The image data processing apparatus according to claim 5 , wherein the history information generation unit uses a fixed-length format as the format.
ことを特徴とする請求項5に記載の画像データ処理装置。The image data processing apparatus according to claim 5 , wherein the history information generation unit uses a variable-length format as the format.
ことを特徴とする請求項6に記載の画像データ処理装置。The image data processing apparatus according to claim 6 , wherein the history information generation unit inserts a marker bit in the second history information at a fixed period.
ことを特徴とする請求項7に記載の画像データ処理装置。The image data processing apparatus according to claim 7 , wherein the history information generation unit inserts a marker bit corresponding to a predetermined appearance pattern in the second history information.
第1の符号化パラメータで符号化された第1のビットストリームから、前記第1の符号化パラメータを抽出するとともに、前記第1の符号化パラメータを用いて前記第1のビットストリームを前記画像データに復号する復号ステップと、
前記第1の符号化パラメータで符号化された前記第1のビットストリームから、過去複数世代の符号化パラメータから前記第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出ステップと、
前記復号ステップの処理により抽出された前記第1の符号化パラメータ及び前記履歴情報抽出ステップの処理により抽出された前記第1の履歴情報に含まれる前記第1の履歴符号化パラメータを、前記復号ステップの処理により復号された前記画像データとともに出力する出力ステップと、
前記出力ステップの処理により出力された前記第1の符号化パラメータ及び前記第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、前記出力ステップにより出力された前記画像データを取得する取得ステップと、
前記出力ステップの処理により出力された前記第1の符号化パラメータおよび前記第1の履歴符号化パラメータから、前記取得ステップの処理により取得された前記再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成ステップと、
前記取得ステップの処理により取得された前記再利用符号化パラメータに基づいて、前記取得ステップの処理により取得された前記画像データを符号化して第2のビットストリームを生成するとともに、前記取得ステップの処理により取得された前記再利用符号化パラメータ及び前記履歴情報生成ステップにより生成された前記第2の履歴情報を、前記生成された前記第2のビットストリームに多重化する符号化ステップと
を含むことを特徴とする画像データ処理方法。In an image data processing method for converting a bit rate of a bit stream of input image data or a GOP (Group of Picture) structure and outputting it,
The first encoding parameter is extracted from the first bit stream encoded with the first encoding parameter, and the first bit stream is converted into the image data using the first encoding parameter. A decoding step of decoding into
A coding parameter obtained by removing the first coding parameter from a plurality of past generation parameters from the first bitstream coded with the first coding parameter is used as a first history coding parameter. A history information extraction step for extracting first history information including;
The first coding parameter extracted by the processing of the decoding step and the first history coding parameter included in the first history information extracted by the processing of the history information extraction step are the decoding step. An output step of outputting together with the image data decoded by the processing of
Either from reuse coding parameter encoding parameters for reuse in the encoding process of said first encoding parameter and the first hysteresis encoded parameter outputted by the processing of the outputting step And obtaining the image data output by the output step, and
An encoding parameter obtained by removing the reuse encoding parameter acquired by the acquisition step from the first encoding parameter and the first history encoding parameter output by the output step processing is a first parameter. A history information generating step for generating second history information including the two history encoding parameters ;
Based on the reuse encoding parameter acquired by the process of the acquisition step, the image data acquired by the process of the acquisition step is encoded to generate a second bitstream, and the process of the acquisition step An encoding step of multiplexing the reuse encoding parameter acquired by step 2 and the second history information generated by the history information generation step into the generated second bitstream. A featured image data processing method.
第1の符号化パラメータで符号化された第1のビットストリームから、前記第1の符号化パラメータを抽出するとともに、前記第1の符号化パラメータを用いて前記第1のビットストリームを前記画像データに復号する復号ステップと、
前記第1の符号化パラメータで符号化された前記第1のビットストリームから、過去複数世代の符号化パラメータから前記第1の符号化パラメータを除いた符号化パラメータを第1の履歴符号化パラメータとして含む第1の履歴情報を抽出する履歴情報抽出ステップと、
前記復号ステップの処理により抽出された前記第1の符号化パラメータ及び前記履歴情報抽出ステップの処理により抽出された前記第1の履歴情報に含まれる前記第1の履歴符号化パラメータを、前記復号ステップにより復号された前記画像データとともに出力する出力ステップと、
前記出力ステップの処理により出力された前記第1の符号化パラメータ及び前記第1の履歴符号化パラメータのうちのいずれかから、符号化処理において再利用するための符号化パラメータを再利用符号化パラメータとして取得するとともに、前記出力ステップにより出力された前記画像データを取得する取得ステップと、
前記出力ステップの処理により出力された前記第1の符号化パラメータ及び前記第1の履歴符号化パラメータから、前記取得ステップの処理により取得された前記再利用符号化パラメータを除いた符号化パラメータを第2の履歴符号化パラメータとして含む第2の履歴情報を生成する履歴情報生成ステップと、
前記取得ステップにより抽出された前記再利用符号化パラメータに基づいて、前記取得ステップの処理により取得された前記画像データを符号化して第2のビットストリームを生成するとともに、前記取得ステップの処理により取得された前記再利用符号化パラメータ及び前記履歴情報生成ステップの処理により抽出された前記第2の履歴情報を、生成された前記第2のビットストリームに多重化する符号化ステップと
を含む処理を実行させるためのコンピュータ読み取り可能なプログラムを記録した記録媒体。A program for causing a computer to execute a process of converting and outputting a bit rate or a GOP (Group of Picture) structure of a bit stream of input image data,
The first encoding parameter is extracted from the first bit stream encoded with the first encoding parameter, and the first bit stream is converted into the image data using the first encoding parameter. A decoding step of decoding into
A coding parameter obtained by removing the first coding parameter from a plurality of past generation parameters from the first bitstream coded with the first coding parameter is used as a first history coding parameter. A history information extraction step for extracting first history information including;
The first coding parameter extracted by the processing of the decoding step and the first history coding parameter included in the first history information extracted by the processing of the history information extraction step are the decoding step. An output step of outputting together with the image data decoded by
Reuse coding parameters for reusing coding parameters for reuse in coding processing from any of the first coding parameters and the first history coding parameters output by the processing of the output step And obtaining the image data output by the output step, and
An encoding parameter obtained by removing the reuse encoding parameter acquired by the acquisition step from the first encoding parameter and the first history encoding parameter output by the output step is a first parameter. A history information generating step for generating second history information including the two history encoding parameters ;
Based on the reuse encoding parameter extracted by the acquisition step, the image data acquired by the processing of the acquisition step is encoded to generate a second bit stream, and acquired by the processing of the acquisition step And a coding step of multiplexing the second history information extracted by the reuse encoding parameter and the history information generation step generated into the generated second bitstream. A recording medium on which a computer-readable program for recording is recorded.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20015698A JP3724202B2 (en) | 1998-03-10 | 1998-07-15 | Image data processing apparatus and method, and recording medium |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5811898 | 1998-03-10 | ||
JP10-157241 | 1998-06-05 | ||
JP15724198 | 1998-06-05 | ||
JP10-58118 | 1998-06-05 | ||
JP20015698A JP3724202B2 (en) | 1998-03-10 | 1998-07-15 | Image data processing apparatus and method, and recording medium |
Related Child Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004361665A Division JP4016349B2 (en) | 1998-03-10 | 2004-12-14 | Stream conversion apparatus, stream conversion method, and recording medium |
JP2004361664A Division JP4016348B2 (en) | 1998-03-10 | 2004-12-14 | Stream conversion apparatus, stream conversion method, and recording medium |
JP2004361663A Division JP4016347B2 (en) | 1998-03-10 | 2004-12-14 | Stream conversion apparatus, stream conversion method, and recording medium |
JP2005223266A Division JP4478630B2 (en) | 1998-03-10 | 2005-08-01 | Decoding device, decoding method, program, and recording medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000059783A JP2000059783A (en) | 2000-02-25 |
JP3724202B2 true JP3724202B2 (en) | 2005-12-07 |
Family
ID=27296483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20015698A Expired - Fee Related JP3724202B2 (en) | 1998-03-10 | 1998-07-15 | Image data processing apparatus and method, and recording medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3724202B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4989416B2 (en) * | 2007-10-26 | 2012-08-01 | Kddi株式会社 | Video compression encoding device |
-
1998
- 1998-07-15 JP JP20015698A patent/JP3724202B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000059783A (en) | 2000-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100571687B1 (en) | Coding system and its method, coding device and its method, decoding device and its method, recording device and its method, and reproducing device and its method | |
JP3694888B2 (en) | Decoding device and method, encoding device and method, information processing device and method, and recording medium | |
JP3724205B2 (en) | Decoding device and method, and recording medium | |
JP3724204B2 (en) | Encoding apparatus and method, and recording medium | |
JP3724203B2 (en) | Encoding apparatus and method, and recording medium | |
JP3874153B2 (en) | Re-encoding device and re-encoding method, encoding device and encoding method, decoding device and decoding method, and recording medium | |
JP2005304065A (en) | Decoding device and method, coding device and method, information processing device and method, and recording medium | |
JP4016290B2 (en) | Stream conversion device, stream conversion method, encoding device, encoding method, and recording medium | |
JP3890838B2 (en) | Encoded stream conversion apparatus, encoded stream conversion method, and recording medium | |
JP4139983B2 (en) | Encoded stream conversion apparatus, encoded stream conversion method, stream output apparatus, and stream output method | |
JP4478630B2 (en) | Decoding device, decoding method, program, and recording medium | |
JP4016294B2 (en) | Encoding apparatus and encoding method, stream conversion apparatus and stream conversion method, and recording medium | |
JP3724202B2 (en) | Image data processing apparatus and method, and recording medium | |
JP3817951B2 (en) | Stream transmission apparatus and method, and recording medium | |
JP3817952B2 (en) | Re-encoding device and method, encoding device and method, and recording medium | |
JP4016293B2 (en) | Encoding apparatus, encoding method, and recording medium | |
JP4539637B2 (en) | Stream recording apparatus and stream recording method, stream reproduction apparatus and stream reproduction method, stream transmission apparatus and stream transmission method, and program storage medium | |
JP4016349B2 (en) | Stream conversion apparatus, stream conversion method, and recording medium | |
JP4016347B2 (en) | Stream conversion apparatus, stream conversion method, and recording medium | |
JP4016348B2 (en) | Stream conversion apparatus, stream conversion method, and recording medium | |
JP4543321B2 (en) | Playback apparatus and method | |
JP4482811B2 (en) | Recording apparatus and method | |
JP2007124703A (en) | Decoder and decoding method, transmitter and transmitting method, and recording medium | |
JP2007124704A (en) | Decoder and decoding method, transmitter and transmitting method, and recording medium | |
JP2000059770A (en) | Data transmitter and its transmitting method, and providing medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041015 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050531 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050801 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050805 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050912 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080930 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090930 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090930 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100930 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100930 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110930 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110930 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120930 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120930 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130930 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |