JP4142652B2 - 映像符号化装置 - Google Patents

映像符号化装置 Download PDF

Info

Publication number
JP4142652B2
JP4142652B2 JP2005002919A JP2005002919A JP4142652B2 JP 4142652 B2 JP4142652 B2 JP 4142652B2 JP 2005002919 A JP2005002919 A JP 2005002919A JP 2005002919 A JP2005002919 A JP 2005002919A JP 4142652 B2 JP4142652 B2 JP 4142652B2
Authority
JP
Japan
Prior art keywords
header
texture
packing
macroblock
video
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.)
Active
Application number
JP2005002919A
Other languages
English (en)
Other versions
JP2005204310A (ja
Inventor
ヒョン イル ビョン
Original Assignee
株式会社シエンエステクノロジー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 株式会社シエンエステクノロジー filed Critical 株式会社シエンエステクノロジー
Publication of JP2005204310A publication Critical patent/JP2005204310A/ja
Application granted granted Critical
Publication of JP4142652B2 publication Critical patent/JP4142652B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02KDYNAMO-ELECTRIC MACHINES
    • H02K15/00Methods or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines
    • H02K15/0006Disassembling, repairing or modifying dynamo-electric machines
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02KDYNAMO-ELECTRIC MACHINES
    • H02K15/00Methods or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines
    • H02K15/02Methods or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines of stator or rotor bodies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02WCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO WASTEWATER TREATMENT OR WASTE MANAGEMENT
    • Y02W30/00Technologies for solid waste management
    • Y02W30/50Reuse, recycling or recovery technologies
    • Y02W30/82Recycling of waste of electrical or electronic equipment [WEEE]

Description

本発明はデジタル映像符号化技術に関して、特に、DCT変換と動き補償及び予測により映像符号化を遂行する符号化装置に関する。
映像符号化装置で、特に、可変長符号化器は映像圧縮/復号標準が進むにつれて、その回路構成及び制御方法が益々複雑になっている。例えば、MPEG-4を利用して映像を符号化する場合、エラー耐性を強化するためにデータ分割モードを使う場合に、あるビデオパケット内でマクロブロックのテクスチャと二つのヘッダーをそれぞれ種類別に出すべきである。この時、可変長符号化器が単純にマクロブロック単位でヘッダーとテクスチャを別々に出す構造では、使用者がビデオパケットを構成するためには複雑な制御を通さなければならず、映像符号化装置を制御するCPUの負荷増加になる問題が生じる。
図1は、従来技術による符号化器のブロック図であって、MPEG-4に対する実施例である。図1を参照すると、符号化器(100)は、動き予測(Motion Estimation:以下、MEと言う)ブロック(101)、動き補償(Motion Compensation:以下、MCと言う)ブロック(102)、離散コサイン変換/量子化(Discrete Cosine Transform/Quantization:以下DCT/Qと言う)ブロック(103a)、AC/DC予測(AC/DC Prediction:以下ADPと言う)ブロック(104)、可変長符号化(Variable Length Coding:以下VLCと言う)ブロック(105)、及び逆離散コサイン変換/逆量子化(Inverse DCT/Inverse Q:以下IQ/IDCTと言う)ブロック(103b)を含む。
MEブロック(101)は、過去フレームに対して現在フレームの動きを予測する作業を遂行する。結果は動きベクターで出し、これはマクロブロックまたはブロック毎に過去フレームに比べてどの方向にどのくらい移動したのかを示す。このような、動き予測を利用すると、時間的な繰り返しを除去して符号量を減らすことができる。上記マクロブロックは16×16個の画素単位で構成され、4個の輝度ブロックと2個の色差ブロックで構成される。よって、計6個のブロックを含み、これらブロックは8×8個の画素で構成される。
MCブロック(102)は、MC(−)(MC minus)(102a)とMC(+)(MC plus)(102b)の二種類に仕分けされる。MC(−)(102a)は、現在フレームで過去フレームからの動き予測結果を抜く作業であって、時間的な繰り返しが除去されたフレームデータの結果がでる。また、MC(+)(102b)は、以後に説明されるIQ/IDCT部(103b)の結果にMC(−)(102)で使われた過去フレームを加える作業で、最終的に復号器で見られる映像が得られる。この映像は次のフレームを符号化する時過去フレームに活用される。
DCT/Qブロック(103a)は空間領域の映像データを周波数領域のデータに変えて、その結果がより少ない種類の値を持つように量子化を遂行する。
ADPブロック(104)は、現在ブロックのAC/DC係数に対して、周辺ブロックのAC/DC係数から差分値を求む。これは空間的な連続性を利用して符号量を削減しようとする目的である。
VLCブロック(105)はADPが完了した係数を可変長符号化して、最終的に符号化されたビットストリームを発生させる。この時、ビットストリームは所定個数のマクロブロックに対するデータを含んだビデオパケットで構成される。
IQ/IDCTブロック(103b)はDCT/Qが終わった係数に対して逆量子化を遂行して、その結果をまた空間領域のデータに変える。IQ/IDCT直後の映像がMC(−)直後の映像と違う点は、IQ/IDCT直後の映像はDCT/Qブロック(103a)とADPブロック(104)の量子化/逆量子化によってデータが損失されることもできるということである。データが損失された映像を求めるのは復号器と同じ環境を作るためである。
図2は、従来技術による映像符号化装置のブロック図として、符号化器(100)、メモリー部(204、205)、中央処理装置(CPU)(201)及びメインメモリー部(202)、データバス(203)で構成される。
符号化器(100)は、MEブロック(101)で構成される動き予測部分及びMCブロック(102)、DCT/IDCTブロック(103)、ADPブロック(104)、VLCブロック(105)で構成されるテクスチャ符号化部分とで分けられて、上記二つの部分は、お互いに独立的に動作することができる。然し、テクスチャ符号化の為にはMEが遂行された後に出る動きベクターが必要である。
MEブロック(101)での動き予測はマクロブロック単位で動作が構成される。その間テクスチャ符号化部分(102、103、104、105)ではブロック単位の動作が6回繰り返される。
メモリー部(204、205)は、テクスチャ符号化のための必要なデータを貯蔵して、中央処理装置(CPU)(201)及びメインメモリー部(202)は、残りブロックの動作を制御するためである。
データバス(203)は、符号化器(100)と外部メモリーのデータを受け渡す。
図3は、図2の符号化器をパイプライン構造で利用してN個のマクロブロックで構成されるフレームを符号化する方法を示す。
先に、マクロブロック0に対するMEが遂行される。この時は、マクロブロック0に対する動きベクターがないから、マクロブロック0のテクスチャ符号化の遂行ができない。
次に、マクロブロック1に対するMEが遂行される間、マクロブロック0に対する動きベクターが出ていて、同時に、マクロブロック0に対するテクスチャ符号化が遂行されることができる。このような方式で符号化を行うことで最後のマクロブロックではMEは動作しなく、テクスチャ符号化だけ動作するようになる。
図4は、従来技術によるVLC部の詳細ブロック図である。
符号化されたマクロブロックはそのマクロブロックの特性を示すヘッダーと実際の映像データが含まれたテクスチャとで構成される。
ヘッダー符号化制御部(header_ctrl)(306)はヘッダー符号化の制御を行う。
ヘッダーロムテーブル(mb_rom)(307)はヘッダーを符号化することに必要な様々なテーブルを含む。
ヘッダーメモリー(hmem)(305)はヘッダー符号化結果を貯蔵する。
テクスチャ符号化制御部(texture_ctrl)(302)は、テクスチャ符号化の制御を行う。
テクスチャロムテーブル(ac_rom)(303)は、テクスチャを符号化することに必要な様々なテーブルを含む。
テクスチャメモリー(tmem)(301)は、テクスチャ符号化結果を貯蔵する。
VLCレジスター部(VLC_reg)(304)は、ヘッダー及びテクスチャ符号化に必要な様々な設定等をCPU(201)から受けてテクスチャ符号化制御部(texture_ctrl)(302)とヘッダー符号化制御部(header_ctrl)(306)に伝達し、また、テクスチャ符号化制御部(texture_ctrl)(302)とヘッダー符号化制御部(header_ctrl)(306)から符号化の結果、どの程度多くのビト量が生じているかの情報を受けてCPU(201)へ伝達する。
図5は、データ分割された時のVP(ビデオパケット)符号化過程を示す。ここで、ビデオパケットは1個またはその以上のマクロブロックを括る単位で、マクロブロックデータ外に最前部にビット列固定長符号(再同期マーカー)があり、それに引き継いでフレームヘッダー情報の一部が繰り返されてエラー耐性を強化させる。また、データ分割はビデオパケット内で重要なヘッダー情報を前部に位置させるモードで、ヘッダーは重要度によってヘッダー1とヘッダー2に仕分けされて、その間には特定ビット列で構成されるマーカーが挿入される。
先に、再同期マーカーとビデオパケットヘッダーを挿入する(S100)。
次に、マクロブロックの符号化を遂行する(S110)。符号化が終わると、ヘッダーメモリー(hmem)(305)にはヘッダー1とヘッダー2のビットストリームが貯蔵され、テクスチャメモリー(tmem)(301)には、テクスチャのビットストリームが貯蔵される。
次に、ヘッダー1、ヘッダー2、テクスチャビットストリームをそれぞれメインメモリー(202)上で別途の空間に貯蔵する(Sl12乃至S116)。これらは、ビデオパケット内のすべてのマクロブロックを符号化した後、ヘッダー1はヘッダー1同士に、ヘッダー2はヘッダー2同士に、テクスチャはテクスチャ同士に合致させるためにそれぞれ独立した空間を要する。
次に、ビデオパケット終了可否を決める為に(S118)、ビデオパケットの一番目マクロブロック以後にヘッダー1、ヘッダー2、及びテクスチャのビットストリームが総体でどのくらい出ているかを計算して、その値が予め決めたビデオパケットの目標長さ値より大きくなるとビデオパケットを終了する事に決める。
ビデオパケットが終了するとステップSl22へ、終了しないとステップS110へそれぞれ分岐される。上記ステップSl22では、現在ビデオパケットに該当されるマクロブロック等からヘッダー1、ヘッダー2、テクスチャのパッキング過程を遂行する。
最終的に、ステップSl24ではビデオパケット(VP)ストリームをフェッチする。
以上から明らかなように、従来技術によると、マクロブロック符号化の結果で生じたヘッダー及びテクスチャビットストリームを使用者が併合しなければならないので、それだけCPUの負荷が余計にかかるようになる。特に、データ分割の場合ビデオパケット内のすべてのマクロブロックに対してヘッダー1、ヘッダー2、テクスチャをそれぞれ保管し、途中にビデオパケットが終わる毎に使用者がそれらを一つでパッキングする作業を行わなければならない。そのパッキング作業は多量のビートシフト及びメモリー入出力をし、CPUの負荷を増加させる。このような問題は従来技術の符号化装置では符号化方法を異にしても根本的に解決することができない。
従って、本発明が解決しようとする技術的課題は、MPEG-1、2、4またはH.261、H.263のように代表的なデジタル映像データ圧縮/復号標準を具現する映像符号化装置を制御するCPUの負荷を減らすことである。
上記の技術的課題を達成するために、本発明による映像符号化装置は、DCT変換と動き補償及び予測を通じて映像符号化を遂行する映像符号化装置において、現在マクロブロックの絶対偏差平均値(MAD)を求める動き補償(MC)ブロック、上記絶対偏差平均値(MAD)と量子化係数(QP)を基に現在マクロブロックの符号化後のト量を予測してビデオパケットのパッキング可否を制御する制御部及現在マクロブロックの符号化を遂行したとき、上記パッキングが可の場合にビデオパケットパッキングを遂行する可変長符号化(VLC)ブロックを含むことを特徴とする。
本発明と本発明の動作での利点及び本発明の実施によって達成される目的を充分に理解するため、本発明の望ましい実施例を例示する添付図面及び添付図面に記載した内容を参照することができる。
本発明によると、第一に、VLCでパッキング、すなわちヘッダー(データ分割された場合はヘッダー1とヘッダー2)、そしてテクスチャを併合する過程を完璧に支援することでCPUの負荷を減らすことができる。
第二は、マクロブロックの符号化終了またはビデオパケットの符号化終了の後VLCメモリーの追加的な読み取り/書き込み、シフト、論理演算などが要求されないためCPUの負荷を減らすことができる。
第三は、符号化装置の制御が単純になる。使用者はマクロブロックまたはビデオパケットの符号化が終了した後、hmemの内容を単純にメインメモリー(MAIN_MEM)にフェッチすればよい。
第四は、データ分割された場合、パッキングを支援するためにビデオパケット内の多数マクロブロックのデータを一度にtmemとhmemとに貯蔵するとオーバーフローが起きる可能性を排除することができない。ところが、(式1)を利用してマクロブロックのビト量を予め予測すると、オーバーフローが発生する確率を10万分の1以下の水準に低減することができる。オーバーフローが発生すると2個マクロブロック程の符号化時間が更にかかるが、これはパッキング支援で減ったCPU負荷に比べて殆ど無視し得る水準である。
以下、添付した図面を参照して本発明の望ましい実施例を説明する。
図6は、本発明による映像符号化装置のブロック図である。
図6を参照すると、本発明による映像符号化装置は符号化器(400)、メモリー部(404、405)、中央処理装置(CPU)(401)及びメインメモリー部(402)、データバス(403)とで構成され、これらは図2の従来技術による映像符号化装置での符号化器(100)、メモリー部(204、205)、中央処理装置(CPU)(201)及びメインメモリー部(202)、データバス(203)と等しい機能を遂行する。ただ、異なる点は、VLCブロック(406)がパッキングが可能になるように改善されたものであり、MCブロック(409)が絶対偏差平均値(MAD:Mean Absolute Difference)を求めて出力するということである。
上記絶対偏差平均値(MAD)は、一つのマクロブロックに対して現在フレームデータと動き予測されたデータの差分値の構成でマクロブロックを計算した後、それぞれのピクセルの絶対値を全て併合して256で割った値であって、一般的に、この値が大きい程符号化されたビットストリームの長さが長くなる。
図面符号411は、MCブロック(409)で求められたMAD値であって、図面符号412は現在マクロブロックに適用される量子化係数(QP)値として、以後に記述するようにMAD値とQP値は、現在マクロブロックが符号化された後のビト量を予測することに使われる。また、図面符号413は、現在マクロブロックを符号化する以前に、VLCブロック(406)に供給されるパッキング可否を示す情報として、1であると現在マクロブロックでパッキングを遂行して、0であると遂行しない。参照で、上記QPは既に知られているように、量子化率を決める制御アルゴリズムによって決めることができる。
図7は、本発明によるVLCブロックの詳細ブロック図である。
ヘッダーロムテーブル(mb_rom)(508)は、ヘッダー符号化に必要な様々なテーブルを含む。
ヘッダーメモリー(hmem)(506)は、ヘッダー符号化結果を保存し、データ分割可否によってヘッダー1とヘッダー2とに区分されることもある。
テクスチャ符号化制御部(texture_ctrl)(502)は、テクスチャ符号化の制御を行う。
テクスチャロムテーブル(ac_rom)(503)は、テクスチャ符号化に必要様々なテーブルを含む。
テクスチャメモリー(tmem)(501)は、テクスチャ符号化結果を貯蔵する。
パッキング実行部(pack_ctrl)(504)は、ヘッダーとテクスチャのパッキングを担当する。上記パッキングはヘッダーメモリー(hmem)(506)及び/又はテクスチャメモリー(tmem)(501)から一定の単位でデータを読み出し次第にヘッダーメモリー(hmem)(506)に再び書き込む過程である。
パッキングを遂行する場合は次の二つの種類がある。
第一は、マクロブロック符号化のスタート前にCPU(401)からパッキング可否に対する制御信号、即ち、PEN値(413)を通じて該マクロブロックの符号化が終わった次第にパッキングを行うと言う命令を受けた場合。
第二は、マクロブロック符号化を遂行する途中にテクスチャメモリー(tmem)(501)またはヘッダーメモリー(hmem)(506)でオーバーフローが発生した場合。
VLCレジスター部(VLC_reg)(505)は、ヘッダー及びテクスチャ符号化に必要な様々な設定をCPU(401)から受け、テクスチャ符号化制御部(texture_ctrl)(502)、パッキング実行部(pack_ctrl)(504)(504)、ヘッダー符号化制御部(header_ctrl)(507)へ伝達する。
図8は、本発明によるパッキング実行部(pack_ctrl)の詳細ブロック図である。図8を参照すると、パッキング実行部(pack_ctrl)はパッキング実行制御部(pack control)(601)、パッキング演算部(pshifter)(602)、テクスチャメモリー制御部(texture memory control)(605)、及びヘッダーメモリー制御部(header memory control)とで構成される。
パッキング実行制御部(pack control)(601)は、パッキング実行部(pack_ctrl)(504)の全体的な制御を担当する。ここで、VLCレジスター部(VLC_reg)(505)から入力されるpack_en信号は、PEN値(413)と等しい値としてパッキング遂行の可否を示す。
また、ヘッダー符号化制御部(header_ctrl)(507)から入力されるhend信号は、現在マクロブロックのヘッダー符号化が完了したことを示す信号で、hoverflow信号は、ヘッダー符号化の中にオーバーフローが発生してpack_enと係わらずに、強制的にパッキングが進行されるべきであることを示す信号である。
また、テクスチャ符号化制御部(texture_ctrl)(502)から入力されるtend信号は、現在マクロブロックのテクスチャ符号化の完了を示す信号であり、toverflow信号は、テクスチャ符号化の中にオーバーフローが発生してpack_en信号と係わらずに強制的にパッキングが進行されるべきであることを示す信号である。
パッキング実行制御部(pack control)(601)は、pack_en、toverflow、またはhoverflow信号が1であるとtend信号とhend信号を通じてヘッダー及びテクスチャ符号化がそれぞれ完了したかを確認し、完了すると、p_start信号でパッキングを行うように命令する。
パッキング演算部(pshifter)(602)は、実際にパッキングを遂行する。ヘッダー符号化制御部(header_ctrl)(507)からh1_start_pos、h1_end_pos、h2_start_pos、h2_end_pos信号が入力され、順番に現在マクロブロックでヘッダー1(データ分割されない場合はヘッダー)のスタート位置、ヘッダー1(データ分割されない場合はヘッダー)の終了位置、ヘッダー2のスタート位置、ヘッダー2の終了位置を意味する。h2_start_posとh2_end_pos信号の値はデータ分割された場合のみ有効である。
図8で‘_pos’で終わる信号は、テクスチャメモリー(tmem)(501)またはヘッダーメモリー(hmem)(506)上でビト単位の位置を示す信号である。テクスチャ符号化制御部(texture_ctrl)(502)からt_start_pos、t_end_pos信号が入力され、順番に現在マクロブロックでテクスチャのスタート位置、テクスチャの終了位置を意味する。
パッキング演算部(pshifter)(602)は、シフト&マージ(shift&merge)ブロック(603)とレジスターファイルブロック(register file)(604)ブロックとで構成される。
シフト&マージブロック(603)は、テクスチャメモリー(tmem)(501)及び/またはヘッダーメモリー(hmem)(506)から出た二つの32bit単位をそれぞれ適切にシフトし、マージしてパッキングされた新しい一つの32bit単位を生ずるブロックである。
レジスターファイルブロック(604)は、pre_h1_start_pos、pre_h2_start_pos、pre_t_start_pos信号を蓄積するのに、データ分割された場合にだけ使われる。
pre_h1_start_posは、ヘッダーメモリー(hmem)(506)上でビデオパケットの一番目マクロブロックに対するヘッダー1のスタート位置である。pre_h2_start_posはヘッダーメモリー(hmem)(506)上でビデオパケットの一番目マクロブロックに対するヘッダー2のスタート位置である。
pre_t_start_posは、テクスチャメモリー(tmem)(501)上でビデオパケットの一番目マクロブロックに対するテクスチャスタート位置である。データ分割された場合には、ビデオパケットに含まれたすべてのマクロブロックの符号化されたデータをパッキングすべきであるから、レジスターファイルブロック(604)に保存された内容が必要である。
テクスチャメモリー制御部(605)は、テクスチャメモリー(tmem)(501)でパッキングに必要なデータをパッキング演算部(pshifter)(602)に送るブロックである。
ヘッダーメモリー制御部(606)は、ヘッダーメモリー(hmem)(506)でパッキングに必要なデータをパッキング演算部(pshifter)(602)に送り、パッキングされたデータを再びヘッダーメモリー(hmem)(506)に記録するブロックである。万一、パッキングされたデータでヘッダーメモリー(hmem)(506)がフルになると、テクスチャメモリー(tmem)に引き続き記録する。
図9は、データ分割されない場合のパッキングの実施例を示す。
h1_start_posとt_start_posは、それぞれヘッダーとテクスチュアの書き込み開始位置(bit単位)を示す。マクロブロックの符号化が始まって、ヘッダーとテクスチュアがそれぞれ全て符号化されると、h1_end_posとt_end_posは、それぞれヘッダーとテクスチュアの終了位置を示す。そしてパッキングが完了するとp_end_posはヘッダーとテクスチュアとがパッキングされた後、マクロブロックデータの終わりを示す。
データ分割されない場合は、すべてのマクロブロック毎にパッキングが遂行するようにCPU(401)から命令を受ける。例として、hmemとtmemは32bit幅を持つメモリーであって、それぞれ128ワードまたは4096ビトを貯蔵することができる。
h1_start_posは0〜4095の値を持ち、過去マクロブロックストリームの終了位置によって0〜31間の値が入るように進む。t_start_posも0〜4095の値を持ち、符号化結果の書き込む空間を最大限確保することができるように0を入れる。符号化が終わるとh1_start_posとp_end_posを参照して符号化されたストリームをフェッチすることができる。
図10は、データ分割された場合のパッキングの実施例を示す。ここで、符号化するビデオパケットは三つのマクロブロックになる。
h1_start_pos、h2_start_pos、t_start_posは、それぞれ三番目マクロブロック、すなわちビデオパケットの最後のマクロブロックのヘッダー1、ヘッダー2とテクスチュアが使われ始める位置(bit単位)を示す。
pre_h1_start_pos、pre_h2_start_pos、pre_t_start_posは、それぞれビデオパケットの初マクロブロックのヘッダー1、ヘッダー2とテクスチュアが書き込みし始める位置として、パッキングする時利用される。
h1_end_pos、h2_end_pos、t_end_posは、それぞれビデオパケットの最後のマクロブロックのヘッダー1、ヘッダー2とテクスチュアが書き込まれた最後の位置である。
図10は、一番目、二番目マクロブロックはPEN値(4B)を0とし、また三番目、すなわちビデオパケットの最後のマクロブロックでPEN値(413)を1として符号化した場合である。ビデオパケットの最後のマクロブロックのヘッダー1、ヘッダー2とテクスチュアの符号化が終わると3個マクロブロックのヘッダー1、ヘッダー2、テクスチュアが順番にパッキングされる。
万一、三番目マクロブロックを符号化する間tmemでオーバーフローが発生すると、PEN値(413)に構わずに一番目と二番目マクロブロックだけ強制にパッキングされて、VLCが修了される。
データ分割された場合は、次の3種類のオーバーフローが発生することがある。
h1 overflow:ヘッダー1の符号化結果がh2_start_pos(ヘッダー2のスタートアドレス)を超過する場合。
h2 overflow:ヘッダー2の符号化結果がhmemの大きさを超過する場合。
t overflow:テクスチュアの符号化結果がtmemの大きさを超過する場合。
図11は、データ分割された時の本発明によるビデオパケットの符号化過程を示す。
ステップS200で、再同期マーカーとビデオパケットヘッダーを挿入する。
ステップS210では現在マクロブロックの符号化結果に、ビットストリームの長さ、即ちマクロブロックビト量を予測する。
上記マクロブロックビト量は次のように(式2)予測される。
(式2)
bit_est = 140 × (MAD/QP) + offset
ここで、bit_estは予測されるビト量であり、140は実験的に得られた値である。offsetは、0以上の値として、この値が高いほど実際に出るビト量がbit_estより小さい確率が大きくなる(具体的な数値は図13で説明される。)
offsetが大きいほど実際ビト量がbit_estより大きくなる確率が減って、オーバーフローをより確実に防止することができるが、ビト量予測が実際より増加する傾向が現われることもある。(式2)でMAD値とQPは既に他のブロックで求められた値であって、別に求める必要がない値である。
ステップS212では、ビデオパケットパッキング可否を決めることにっいて、現在ビデオパケットの長さに該予測値を加えた値が予め決めたビデオパケット長さより大きいとか、次のマクロブロックまでビデオパケットに包含させる場合、hmemまたはtmemでオーバーフローが生じると予想されると、PEN値(413)を1で設定して現在マクロブロックでパッキングを遂行してビデオパケットを仕上げる。
ステップS214では、実際にマクロブロック符号化が遂行される。
ステップS216では、現在マクロブロックがビデオパケットの終わりであると、ステップS218に分岐し、そうではなければステップS210に分岐する。
ステップS218では、完成されたビデオパケットストリームをメインメモリー部(402)にフェッチする。
図12は、(式2)を導く上で根拠になった実験資料として、マクロブロック当たりビト量とMAD/QP値との関係を示す。マクロブロック毎に差があるがマクロブロックのビト量はMAD/QP値にほぼ比例することが分かる。
図13は、(式2)のoffset値によって、マクロブロックの実際ビト量がbit_estより小さい確率がどのように変わるかを示し、offsetが50である場合は約95.0%、70である場合は約98.1%、100である場合は約99.4%である。
目標とするビデオパケットの長さがtmemまたはhmemの大きさと殆ど類似すると、このoffset値を充分に大きく供給して実際にオーバーフローが発生する場合を最小化することができる。
目標とするビデオパケットの長さがtmemまたはhmemの大きさより充分に小さいと、offset値を50程度のみ取ってもオーバーフローが殆ど発生しないようにすることができる。
図14は、データ分割された場合、本発明によるVLCオーバーフロー処理過程を示す。
N番目マクロブロックを符号化する途中にオーバーフローが発生すると、(N−1)番目マクロブロックまで符号化されたヘッダー1、ヘッダー2、テクスチャをパッキングし、そのマクロブロックの動作を終える。
万一、オーバーフローが発生した時、(N+1)番目マクロブロックの動き予測(ME)が進行していると、その動作が終わるまで待たなければならない。
次の過程は、N番目マクロブロックを符号化することでMC部(409)とME部(410)のメモリー及びレジスターの内容が(N+1)番目マクロブロックに合致するように入っているので、N番目マクロブロックの動き予測をもう一度遂行する必要がある。
その後、(N+1)番目マクロブロックの動き予測とN番目マクロブロックのテクスチャコーディング(TC: texture coding)が同時になる正常な状態で開始することになる。
よって、VLCオーバーフローが一回発生する時毎に、二つマクロブロックの符号化のための時間が追加される。ところが、tmemの大きさをビデオパケットが要る最大の大きさより約200bit程大きく取っても、オーバーフローが発生する確率は10万分の2以下に維持されて殆ど影響がない。(ビデオパケットに含まれるマクロブロックの平均個数を15個で仮定した場合)tmemの大きさをもっと大きく取るとオーバーフロー確率はもっと減る。
非常に珍しい場合だが、データ分割されない場合に、符号化途中hmemまたはtmemでオーバーフローが発生すると、符号化装置はそのまま動作を中止する。そのようになると、中止された時点で符号化を進行したマクロブロックのデータはパッキングされない状態で残る。そのように中止されたマクロブロックは殆どnoiseに近い映像になる確率が高くなり、量子化係数を高くし次第次の符号化を再実行することができる。
従来技術による符号化器のブロック図である。 従来技術による映像符号化装置のブロック図である。 図2の符号化器をパイプライン構造を用いてN個のマクロブロックになるフレームを符号化する方法のフローチャートである。 従来技術によるVLC部の詳細ブロック図である。 データが分割された時、VP(ビデオパケット)符号化過程を示すフローチヤートである。 本発明による映像符号化装置のブロック図である。 本発明によるVLCブロックの詳細ブロック図である。 本発明によるパッキング実行部(pack_ctrl)の詳細ブロック図である。 データ分割になってない場合のパッキングの実施例を示す。 データ分割になった場合のパッキングの実施例を示す。 データ分割された時の本発明によるビデオパケットの符号化過程を示すフローチャートである。 (式2)を導く基になった実験資料である。 (式2)のoffset値によって、マクロブロックの実際ビト量がbit_estより小さくなる確率がどのように変化するかを示す図である。 データ分割された場合、本発明によるVLCオーバーフロー処理過程を示すフローチャートである。
符号の説明
400・・・符号化器、401・・・CPU、402・・・メインメモリー部、404,405・・・メモリー部、406・・・VLCブロック、409・・・MCブロック、411・・・MAD値、412・・・QP値、413・・・PEN値。

Claims (8)

  1. DCT変換と動き補償及び予測を通じて映像符号化を遂行する映像符号化装置において、
    現在マクロブロックの絶対偏差平均値(MAD)を求める動き補償(MC)ブロック;
    上記絶対偏差平均値(MAD)と量子化係数(QP)を基に現在マクロブロックの符号化後のト量を予測してビデオパケットのパッキング可否を制御する制御部;及び
    現在マクロブロックの符号化を遂行したとき、上記パッキングが可の場合にビデオパケットパッキングを遂行する可変長符号化(VLC)ブロックを含むことを特徴とする映像符号化装置。
  2. 請求項1に記載された映像符号化装置において、
    上記制御部は下記の(式1)によって現在マクロブロックのビト量を予測して、現在ビデオパケットで過去マクロブロックまでビト量の合計にbit_estを加えた値が予め決めたビデオパケットの目標長さより大きくなる場合にビデオパケットのパッキングを可とすることを特徴とする映像符号化装置。
    (式1)
    bit_est = k × (MAD/QP) + offset
    ここで、bit_estは予測されるビト量で、kは実験的に求められた定数であり、offsetはマクロブロックが予測されたビト量以内に符号化される確率を調節する変数である。
  3. 請求項1に記載された映像符号化装置において、
    上記可変長符号化(VLC)ブロックは、ヘッダー符号化の制御を担当するヘッダー符号化制御部(header_ctrl);
    ヘッダーを符号化するのに必要な様々なテーブルを含むヘッダーロムテーブル(mb_rom);
    ヘッダー符号化結果を貯蔵するヘッダーメモリー(hmem);
    テクスチャ符号化の制御を担当するテクスチャ符号化制御部(texture_ctrl);
    テクスチャを符号化するのに必要なさまざまなテーブルを含むテクスチャロムテーブル(ac_rom);
    テクスチャ符号化結果を貯蔵するテクスチャメモリー(tmem);
    ヘッダーとテクスチャの符号化結果のパッキングを担当するパッキング実行部(pack_ctrl);及び
    ヘッダー及びテクスチャ符号化に必要な様々な設定を貯蔵するVLCレジスター部(VLC_reg)を含むことを特徴とする映像符号化装置。
  4. 請求項3に記載された映像符号化装置において、
    上記パッキング実行部(pack_ctrl)は、
    上記パッキング実行部(pack_ctrl)の全体的な制御を担当するパッキング実行制御部(pack control);
    パッキングを実際に遂行するパッキング演算部(pshifter);
    テクスチャメモリー(tmem)でパッキングに必要なデータをパッキング演算部(pshifter)に供給するテクスチャメモリー制御部(texture memory control);及び
    ヘッダーメモリー(hmem)でパッキングに必要なデータをパッキング演算部(pshifter)に供給し、パッキングされたデータを更にヘッダーメモリー(hmem)に記録するヘッダーメモリー制御部(header memory control)を含むことを特徴とする映像符号化装置。
  5. 請求項4に記載された映像符号化装置において、
    上記パッキング実行制御部(pack control)は
    上記パッキングが可である場合、現在マクロブロックのテクスチャ符号化中にテクスチャメモリー(tmem)がオーバーフローした場合、または現在マクロブロックのヘッダー符号化中にヘッダーメモリー(hmem)がオーバーフローした場合、ヘッダー及びテクスチャ符号化がそれぞれ完了されたのかを確認して、完了するとパッキング演算部(pshifter)にパッキングを開始させることを特徴とする映像符号化装置。
  6. 請求項1乃至請求項5のいずれか1項に記載された映像符号化装置において、
    データ分割されないビデオパケットの場合には現在マクロブロックの符号化されたデータをパッキングしてヘッダーメモリー(hmem)に記録することを特徴とする映像符号化装置。
  7. 請求項1乃至請求項6のいずれか1項に記載された映像符号化装置において、
    データ分割されたビデオパケットの場合には現在ビデオパケットに含まれたすべてのマクロブロックの符号化されたデータをパッキングしてヘッダーメモリー(hmem)に記録することを特徴とする映像符号化装置。
  8. 請求項に記載された映像符号化装置において、
    N番目マクロブロックのテクスチャ符号化を進行する間にテクスチャメモリー(tmem)またはヘッダーメモリー(hmem)にオーバーフローが発生する場合に、
    現在ビデオパケットに対してビデオパケットのスタートマクロブロックから(N−1)番目マクロブロックまで強制にパッキングを遂行し;
    N番目マクロブロックに対する動き予測を再遂行し;
    N番目マクロブロックのテクスチャ符号化と(N+1)番目マクロブロックに対する動き予測を同時に遂行することを特徴とする映像符号化装置。
JP2005002919A 2004-01-13 2005-01-07 映像符号化装置 Active JP4142652B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20040002200A KR100556340B1 (ko) 2004-01-13 2004-01-13 영상 부호화 장치

Publications (2)

Publication Number Publication Date
JP2005204310A JP2005204310A (ja) 2005-07-28
JP4142652B2 true JP4142652B2 (ja) 2008-09-03

Family

ID=34738051

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005002919A Active JP4142652B2 (ja) 2004-01-13 2005-01-07 映像符号化装置

Country Status (4)

Country Link
US (1) US7620104B2 (ja)
JP (1) JP4142652B2 (ja)
KR (1) KR100556340B1 (ja)
CN (1) CN100397905C (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US8218624B2 (en) * 2003-07-18 2012-07-10 Microsoft Corporation Fractional quantization step sizes for high bit rates
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US7580584B2 (en) * 2003-07-18 2009-08-25 Microsoft Corporation Adaptive multiple quantization
US7801383B2 (en) 2004-05-15 2010-09-21 Microsoft Corporation Embedded scalar quantizers with arbitrary dead-zone ratios
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8059721B2 (en) 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US8503536B2 (en) 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US7974340B2 (en) 2006-04-07 2011-07-05 Microsoft Corporation Adaptive B-picture quantization control
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
US7324026B2 (en) * 2006-05-19 2008-01-29 Nvidia Corporation Optimization of decoder memory usage for VLC tables
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US8116372B1 (en) * 2007-10-26 2012-02-14 Xilinx, Inc. Data structure and method using same for encoding video information
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
EP2297963B1 (en) * 2008-06-20 2011-11-30 Dolby Laboratories Licensing Corporation Video compression under multiple distortion constraints
JP2010278730A (ja) * 2009-05-28 2010-12-09 Mitsubishi Electric Corp 動画像符号化装置及び動画像符号化方法
JP5741073B2 (ja) * 2011-03-03 2015-07-01 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
KR101323863B1 (ko) 2011-11-01 2013-10-31 아주대학교산학협력단 움직임 추정 방법 및 움직임 추정 장치
CN107995496B (zh) * 2011-11-08 2020-07-17 谷歌技术控股有限责任公司 确定用于变换系数的二进制码字的方法
BR112014011155B1 (pt) * 2011-11-08 2023-04-04 Google Technology Holdings LLC Método de determinação de uma palavra de código binária para um símbolo, codificador de vídeo e meio que pode ser lido em computador
CN103581675A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统
CN103581674A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07235877A (ja) * 1994-02-24 1995-09-05 Canon Inc 可変長符号パッキング装置
JP3274284B2 (ja) * 1994-08-08 2002-04-15 キヤノン株式会社 符号化装置およびその方法
US5969764A (en) * 1997-02-14 1999-10-19 Mitsubishi Electric Information Technology Center America, Inc. Adaptive video coding method
KR100335138B1 (ko) * 1998-12-30 2002-11-27 엘지정보통신주식회사 비디오코더의가변부호화기및이를이용한코딩방법
JP3662171B2 (ja) * 2000-06-05 2005-06-22 三菱電機株式会社 符号化装置及び符号化方法
US20030215011A1 (en) * 2002-05-17 2003-11-20 General Instrument Corporation Method and apparatus for transcoding compressed video bitstreams

Also Published As

Publication number Publication date
KR100556340B1 (ko) 2006-03-03
CN1642282A (zh) 2005-07-20
CN100397905C (zh) 2008-06-25
US7620104B2 (en) 2009-11-17
KR20050074012A (ko) 2005-07-18
US20050152451A1 (en) 2005-07-14
JP2005204310A (ja) 2005-07-28

Similar Documents

Publication Publication Date Title
JP4142652B2 (ja) 映像符号化装置
JP4827150B2 (ja) ビデオ符号化における参照ピクチャの適応重み付け
US8306125B2 (en) 2-bin parallel decoder for advanced video processing
US8515192B2 (en) Parallel entropy encoding of dependent image blocks
US20060078052A1 (en) Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard
JP2009260977A (ja) 不可逆圧縮及び可逆圧縮を組み合わせて用いたビデオデータ圧縮
US20030118240A1 (en) Image encoding apparatus and method, program, and storage medium
JP2003299102A (ja) ビデオ符号化システムにおけるbピクチャーモード決定方法及びその装置
JP4605070B2 (ja) 画像圧縮符号化装置、画像復号装置、プログラム及び方法
WO2006081098A1 (en) Scratch pad for storing intermediate loop filter data
US9161056B2 (en) Method for low memory footprint compressed video decoding
US20060133512A1 (en) Video decoder and associated methods of operation
US6271774B1 (en) Picture data processor, picture data decoder and picture data encoder, and methods thereof
US7307550B2 (en) Decoding method, decoding device, and program for the same
US7933326B2 (en) Encoded data modification device, modification method, and modification program
JP2002199392A (ja) 映像符号化方法および装置
JP2008294669A (ja) 画像符号化装置
JP2004040811A (ja) 動映像符号化のためのdct演算量調節方法及びその装置
JP3221559B2 (ja) 動きベクトル高速復号回路
JP3619612B2 (ja) ビデオデータ流の全ての画素に対するビデオデータ流の符号化と復号化のための方法及び装置
JP4034793B2 (ja) 補完映像を生成してデブロッキング処理に用いる映像圧縮装置及び方法
WO2008079330A1 (en) Video compression with complexity throttling
JP2006050571A (ja) 画像処理装置
JP3902987B2 (ja) 画像符号化装置、画像符号化方法、プログラム、及び記憶媒体
JP4390009B2 (ja) 符号化装置及び方法、画像処理システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080424

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: 20080521

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080612

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4142652

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250