JP4763853B2 - 可変長符号復号化装置及びその方法 - Google Patents

可変長符号復号化装置及びその方法 Download PDF

Info

Publication number
JP4763853B2
JP4763853B2 JP2010505337A JP2010505337A JP4763853B2 JP 4763853 B2 JP4763853 B2 JP 4763853B2 JP 2010505337 A JP2010505337 A JP 2010505337A JP 2010505337 A JP2010505337 A JP 2010505337A JP 4763853 B2 JP4763853 B2 JP 4763853B2
Authority
JP
Japan
Prior art keywords
length
unit
bitstream
bit
output
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
JP2010505337A
Other languages
English (en)
Other versions
JPWO2009122675A1 (ja
Inventor
優也 重信
基一 小沢
信生 檜垣
岳志 古田
貴洋 影山
正樹 南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010505337A priority Critical patent/JP4763853B2/ja
Publication of JPWO2009122675A1 publication Critical patent/JPWO2009122675A1/ja
Application granted granted Critical
Publication of JP4763853B2 publication Critical patent/JP4763853B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置及びその方法に関する。
近年、動画像や音声の圧縮符号化技術の進展は著しく、放送、通信及び蓄積等の分野で実用化されている。可変長符号化は、符号化する値の発生頻度に応じて符号長を変化させることで、符号化効率を向上させる圧縮符号化技術の一つである。可変長符号化されたデータ(以下、「符号語」と記す)の復号化では、ビットストリームに含まれる符号語の符号長がそれぞれ異なるため、任意の符号語の位置を特定することができない。したがって、ビットストリームの先頭から逐次に符号語を復号化する必要がある。また、MPEG(Moving Picture Experts Group)等の規格では、所定の復号化単位が規定されており、復号化単位毎に復号化開始時刻(DTS:Decoding Time Stamp)がヘッダに格納されている。
可変長符号化された符号語を復号化する可変長符号復号化装置として、例えば、特許文献1に記載の可変長符号復号化装置が知られている。
図16は、特許文献1に記載の従来の可変長符号復号化装置の構成を示す図である。図16に示す可変長符号復号化装置は、ビデオデコーダ600と、メモリ700とを備える。
ビデオデコーダ600は、MPEG方式で圧縮符号化された画像のコードデータ(ビットストリーム)を復号化する。ビデオデコーダ600は、入力インタフェース610と、メモリインタフェース620と、画像伸張部630と、出力インタフェース640と、コントローラ650とを備える。
画像伸張部630は、VLD(Variable Length Decoding)部631と、IQ(Inverse Quantization)部632と、IDCT(Inverse Discrete Cosine Transform)部633と、MVC(Motion Vector Calculation)部634と、MC(Motion Compensation)部635と、バイト/ワード変換部636と、クロック制御部637と、パーサー部638とを備える。
メモリ700は、コードバッファメモリ710と、フレームメモリ720とを備える。コードバッファメモリ710は、未復号のビットストリームを蓄積する。
バイト/ワード変換部636は、コードバッファメモリ710に蓄積されている未復号のビットストリームをバイト単位からワード単位へ変換し出力する。また、バイト/ワード変換部636は、所定量の未復号のビットストリームがコードバッファメモリ710に蓄積されるまで、クロック制御部637へアンダーフロー信号を出力する。
クロック制御部637は、バイト/ワード変換部636によりアンダーフロー信号が出力されている間、VLD部631へクロック信号を供給しない。
VLD部631は、クロック制御部637によりクロック信号が供給されている間、可変長符号テーブルを用いて、バイト/ワード変換部636により出力された未復号のビットストリームを復号化する。
以上の構成により、図16に示す従来の可変長符号復号化装置は、所定の復号化単位を復号化する場合に、復号化開始時刻まで待つことなく、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるので、ハード資源を効率的に利用することができる。
特開平11−122113号公報
しかしながら、上記従来の可変長符号復号化装置では、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるが、ビットストリーム終端の符号語の符号長が所定量未満の場合に、復号化を完了することができないという問題点を有していた。
これにより、上記従来の可変長符号復号化装置では、ビットストリームの最後まで復号化を実行することができず、例えば、ビットストリームが動画像の場合は、最後の1枚が出力されないなどの問題が生じる。このため、特許文献1に示す技術は、例えば、先頭ピクチャに対してのみ適用され、後続のピクチャに対しては、通常のDTSに基づいた復号化が実行される。すなわち、従来の可変長符号復号化装置を、ビットストリームの最初から最後まで適用することはできなかった。
そこで、本発明は上記従来の問題点を解決するもので、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することを目的とする。これにより、DTSに先行してビットストリームの復号化を実行できるとともに、ビットストリームの最後まで復号化を実行することができる。
上記目的を達成するために、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第1記憶手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第1の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第1の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第1の長さのビット列を出力するビット出力手段と、前記第1記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第1参照手段と、少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定手段と、前記第1の長さより短い少なくとも第2の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第2判定手段と、前記第1判定手段と前記第2判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第1の長さ又は前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第1の長さのビット列を出力し、前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第1判定手段及び前記第2判定手段の判定結果の選択を切り換える。
これにより、少なくとも第2の長さの未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第1の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第1の長さ未満の場合でも、復号化を完了することができる。
また、前記選択手段は、前記第1判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第2判定手段の判定結果を選択してもよい。
また、前記選択手段は、さらに、前記第2判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1判定手段の判定結果を選択してもよい。
また、前記選択手段は、前記第1判定手段の判定結果と前記第2判定手段の判定結果とを交互に選択してもよい。
また、前記第2の長さは、前記第1参照手段により出力された符号長でもよい。
また、前記第1の長さは、前記第1記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
また、前記第2の長さは、1ビットであり、前記可変長符号復号化装置は、さらに、前記ビットストリームの終端を検出する終端検出手段を備え、前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第2判定手段の判定結果を選択してもよい。
これにより、ビットストリームの終端が検出された場合に、少なくとも1ビット分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第1の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第1の長さ未満の場合でも、復号化を完了することができる。
また、前記選択手段は、前記ビット出力手段により出力された前記第1の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第2判定手段の判定結果を選択してもよい。
これにより、ビット出力手段により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第1の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第1の長さ未満の場合でも、復号化を完了することができる。
また、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第1記憶手段と、前記ビットストリームの終端を検出する終端検出手段と、前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、前記第1記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第1参照手段と、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定手段とを備え、前記ビット出力手段は、前記第1判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、前記データ付加手段は、少なくとも前記固定長より1ビット短い長さのデータを付加してもよい。
これにより、ビットストリームの終端に少なくとも第1の長さより1ビット短いデータを付加することで、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず第1の長さ以上にすることができる。よって、第1の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第1の長さ未満の場合でも、復号化を完了することができる。
また、前記固定長は、前記第1記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
また、前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出してもよい。
また、前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出してもよい。
また、前記可変長符号復号化装置は、さらに、前記第1記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第2記憶手段と、前記第2記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第2参照手段と、前記第1参照手段と前記第2参照手段とのいずれかを選択する第2選択手段とを備え、前記第1の長さは、前記第2選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
これにより、複数の記憶手段に記憶された複数の最大符号長のうち、少なくともいずれか1つの最大符号長分の未復号のビットストリームが蓄積されていれば、当該記憶手段に記憶された可変長符号テーブルに含まれる符号語を復号化することができる。よって、記憶手段に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。
また、本発明は、装置として実現できるだけでなく、上記の可変長符号復号化装置を構成する各処理手段をステップとする可変長符号復号化方法として実現することもできる。さらに、上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。
本発明は、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することができる。
図1は、実施の形態1の可変長符号復号化装置の構成を示すブロック図である。 図2は、実施の形態1のビットストリーム切出し部の詳細を示すブロック図である。 図3は、実施の形態1の記憶部に記憶される可変長符号テーブルの一例を示す図である。 図4は、実施の形態1の可変長符号復号化装置の動作を示す図である。 図5は、実施の形態1の可変長符号復号化装置の動作を示す図である。 図6は、実施の形態1のビットストリーム切出し部が出力する蓄積状態の出力形式の一例を示す図である。 図7は、実施の形態2の可変長符号復号化装置の構成を示すブロック図である。 図8は、実施の形態2の可変長符号復号化装置の動作を示す図である。 図9は、実施の形態3の可変長符号復号化装置の構成を示すブロック図である。 図10は、実施の形態3の可変長符号復号化装置の動作を示す図である。 図11は、実施の形態4の可変長符号復号化装置の構成を示すブロック図である。 図12は、実施の形態4の可変長符号復号化装置の動作を示す図である。 図13は、実施の形態5の可変長符号復号化装置の構成を示すブロック図である。 図14は、実施の形態5の記憶部に記憶される可変長符号テーブルの一例を示す図である。 図15は、実施の形態5の可変長符号復号化装置の動作を示す図である。 図16は、従来の可変長符号復号化装置の構成を示すブロック図である。
以下、本発明の可変長符号復号化装置について実施の形態に基づいて図面を参照しながら説明する。
(実施の形態1)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図1は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。
図1に示す可変長符号復号化装置10は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置10は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び103と、選択部104と、判定方法制御部105とを備える。なお、本実施の形態では、可変長符号化に用いられる符号語の最大符号長は8ビットであるとする。
ビットストリーム切出し部100は、入力されたビットストリームを蓄積するバッファを有し、バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する所定の第1の長さのビット列を出力する。ここでは、ビットストリーム切出し部100は、未復号のビットストリームを蓄積し、当該ビットストリームの先頭ビットから、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、未復号のビットストリームの先頭ビットから8ビット分のビット列を切出し出力する。
また、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが、第1の長さ未満の場合は、当該ビット列の終端にデータを付加することで、第1の長さのビット列を出力する。具体的には、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満の場合は、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し出力する。
また、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
さらに、ビットストリーム切出し部100は、選択部104により出力された判定信号に基づいて、新たな先頭ビットを決定し、決定された先頭ビットから8ビット分のビット列を切出し出力する。なお、ビットストリーム切出し部100の構成については、図2を参照しながら後述する。
テーブル参照部101は、記憶部111と、参照部112とを備える。
記憶部111は、可変長符号化に用いられる複数の符号語と、複数の復号化データ及び符号長とを対応付けたテーブルである可変長符号テーブル113を記憶するメモリなどである。
参照部112は、記憶部111を参照することで、ビットストリーム切出し部100により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する。
具体的には、参照部112は、まず、可変長符号テーブル113を参照することで、出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致するか否かを判定する。そして、参照部112は、ビットストリーム切出し部100により出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致する場合に、当該符号語に対応する復号化データ及び符号長を出力する。また、ビットストリーム切出し部100により出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致しない場合に、参照部112は、任意の復号化データ及び符号長を出力する。
判定部102は、少なくとも第1の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部102は、少なくとも可変長符号化に用いられる符号語の最大符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力された蓄積状態が「8」以上の場合に、判定部102は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が「8」未満の場合に、判定部102は、判定信号「0」を出力する。なお、判定部102は、最大符号長以上の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。なお、判定信号「0」などの記載は、判定信号として論理値「0」が出力されることを示し、以下、同様の表記を用いる。
判定部103は、少なくとも第1の長さより短い第2の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部103は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力された蓄積状態が、テーブル参照部101により出力された符号長以上の場合に、判定部103は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が、テーブル参照部101により出力された符号長未満の場合に、判定部103は、判定信号「0」を出力する。なお、判定部103は、テーブル参照部101により出力された符号長以上の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。
選択部104は、判定部102と判定部103とのいずれか一方の判定結果を選択する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さに応じて、選択部104は、判定部102及び103の判定結果の選択を切り換える。ここでは、判定方法制御部105により出力された選択信号に応じて、選択部104は、判定部102により出力された判定信号と、判定部103により出力された判定信号とのいずれかを選択する。
具体的には、判定方法制御部105により出力された選択信号が「0」の場合に、選択部104は、判定部102により出力された判定信号を選択する。また、判定方法制御部105により出力された選択信号が「1」の場合に、選択部104は、判定部103により出力された判定信号を選択する。
判定方法制御部105は、判定部102により出力された判定信号と、判定部103により出力された判定信号とのいずれかを選択するための選択信号を出力する。具体的には、選択部104により選択された判定信号が「0」の場合に、判定方法制御部105は、次のサイクルで選択信号「1」を出力する。また、選択部104により選択された判定信号が「1」の場合に、判定方法制御部105は、次のサイクルで選択信号「0」を出力する。なお、初期状態では、選択信号「0」を出力する。
なお、以上のように、本実施の形態の可変長符号復号化装置10では、選択部104を判定方法制御部105が制御することで、選択部104は、判定部102を選択した場合であり、かつ、選択した判定結果が少なくとも第1の長さ(最大符号長)の未復号のビットストリームがビットストリーム切出し部100に蓄積されていることを示さない場合に、判定部103を選択するように切り換える。さらに、判定部103を選択した場合であり、かつ、選択した判定結果が少なくとも第2の長さ(テーブル参照部101により出力された符号長)の未復号のビットストリームがビットストリーム切出し部100に蓄積されていることを示す場合に、判定部102を選択するように切り換える。
すなわち、本実施の形態の可変長符号復号化装置10では、判定部102においてテーブル参照部101により出力された符号長及び復号化データを無効と判定された場合に、次のサイクルで判定部103を選択するように、判定方法制御部105が選択部104を制御する。さらに、判定部103においてテーブル参照部101により出力された符号長及び復号化データを有効と判定された場合に、次のサイクルで判定部102を選択するように、判定方法制御部105が選択部104を制御する。
これにより、判定部102及び103を適宜切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
図2は、ビットストリーム切出し部100の詳細を示すブロック図である。同図に示すように、ビットストリーム切出し部100は、バッファ121と、切出し部122と、蓄積状態出力部123とを備える。
バッファ121は、入力された未復号のビットストリームを蓄積するメモリなどの記憶部である。
切出し部122は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから8ビット分のビット列を切出し出力する。このとき、バッファ121に蓄積されている未復号のビットストリームの長さが8ビット未満の場合は、切出し部122は、当該ビット列の終端に不足分の「0」を付加し出力する。
さらに、切出し部122は、選択部104により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づいて未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、切出し部122は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
また、切出し部122は、選択部104により選択された判定信号が「0」の場合に、参照部112により出力された符号長が無効であると判断し、ビットストリームの新たな先頭ビットを決定しない。
蓄積状態出力部123は、バッファ121に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
図3は、記憶部111に記憶される可変長符号テーブル113の一例を示す図である。図3に示すように、記憶部111に記憶される可変長符号テーブル113は、符号語と、符号語の復号化データと、符号語の符号の長さである符号長とが対応付けられている。なお、記憶部111に記憶される可変長符号テーブル113は、最大符号長が8ビットの可変長符号テーブルである。
次に、本実施の形態の可変長符号復号化装置10の動作を説明する。
図4は、可変長符号復号化装置10による具体的な動作を示す図である。以下、可変長符号復号化装置10により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100に入力されるとする。なお、図4に示すように、判定部102及び103の欄で示す下線付きの数字(判定信号)は、選択部104で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「5」未満なので、判定信号「0」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」(初期状態)なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「8」が、テーブル参照部101により出力された符号長「8」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットと決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第4サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「6」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第5サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置10に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「2」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第6サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「2」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第6サイクル>
第6サイクルにおいて、可変長符号復号化装置10に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「2」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第7サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置10は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
図5は、可変長符号復号化装置10による具体的な動作を示す図である。以下、可変長符号復号化装置10により、ビットストリーム「11101110…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、2ビットずつビットストリーム切出し部100に入力されるとする。なお、図5に示すように、判定部102及び103の欄で示す下線付きの数字(判定信号)は、選択部104で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11101110…」の第1ビット〜第2ビット「11」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「11」を蓄積し、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11000000」の第1ビット〜第3ビット「110」と、記憶部111により記憶された符号語「110」が一致するので、復号化データ「c」及び符号長「3」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「3」未満なので、判定信号「0」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」(初期状態)なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「3」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11101110…」の第3ビット〜第4ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビットを新たな先頭ビットとして決定する。
以上のように、本実施の形態の可変長符号復号化装置10は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了できることに加えて、さらに、符号長が8ビット未満の符号語を高速に復号化することができる。
なお、上記説明において、ビットストリーム切出し部100は、蓄積されている未復号のビットストリームの長さを蓄積状態として出力しているが、図6に示す出力形式1又は2で出力してもよい。具体的には、出力形式1では、蓄積されている未復号のビットストリームの長さが8ビット以上の場合に、蓄積状態「8」を出力する。また、出力形式2では、蓄積状態の長さは8ビットで、蓄積状態の各ビットはビットストリーム切出し部100により出力されたビット列の各ビットに対応し、当該ビット列の当該ビットが蓄積されているか否かを示す。
また、上記説明において、ビットストリーム切出し部100は、蓄積されている未復号のビットストリームの長さが8ビット未満の場合に、当該ビット列の終端に不足分の「0」を付加しているが、「0」以外の任意のデータを付加してもよい。
また、ビットストリーム切出し部100が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部102は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部100に蓄積されているか否かを判定する。
また、判定方法制御部105は、サイクル毎に判定部102及び103の選択を交互に切り換えるように選択部104を制御してもよい。
また、上記説明において、記憶部111は、最大符号長が8ビットの可変長符号テーブルを記憶しているが、8ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
(実施の形態2)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図7は、本実施の形態の可変長符号復号化装置20の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図7に示す可変長符号復号化装置20は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置20は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び203と、選択部204と、ビットストリーム終端検出部206とを備える。可変長符号復号化装置20は、実施の形態1の可変長符号復号化装置10に対して、判定方法制御部105が削除され、判定部103の代わりに判定部203を備え、選択部104の代わりに選択部204を備え、さらに、新たにビットストリーム終端検出部206を備える点が異なる。
判定部203は、少なくとも第1の長さより短い第2の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部203は、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部100により出力された蓄積状態が「1」以上の場合に、判定部203は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が「1」未満の場合に、判定部203は、判定信号「0」を出力する。
選択部204は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合、判定部203の判定結果を選択する。ここでは、ビットストリーム終端検出部206により出力された終端検出信号に応じて、選択部204は、判定部102により出力された判定信号と、判定部203により出力された判定信号とのいずれかを選択する。具体的には、ビットストリーム終端検出部206により出力された終端検出信号が「0」の場合に、選択部204は、判定部102により出力された判定信号を選択する。また、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、選択部204は、判定部203により出力された判定信号を選択する。
ビットストリーム終端検出部206は、入力されるビットストリームの終端を検出する。具体的には、ビットストリーム終端検出部206は、ビットストリームの終端であることを示す符号語を検出する、又は、ヘッダ情報を解析することで、ビットストリームの終端を検出する。なお、ビットストリーム終端検出部206は、ビットストリームの終端を検出するまで、終端検出信号「0」を出力し続ける。ビットストリームの終端を検出した後は、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部204により選択された判定信号が「0」の場合に、ビットストリーム切出し部100は、参照部112により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
以上のように、判定部203は、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。本実施の形態の可変長符号復号化装置20は、判定部203を備えることで、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合は、ビットストリームの復号化を実行することができる。
ただし、判定部203による判定は、ビットストリームの終端が判明している場合でないと信用性に欠けるために、ビットストリームの終端が検出されるまでは、判定部102による判定が実行される。すなわち、選択部204は、ビットストリーム終端検出部206でビットストリームの終端が検出されるまでは、判定部102を選択する。ビットストリーム終端検出部206でビットストリームの終端が検出された後は、判定部203を選択する。
これにより、ビットストリームの終端が検出された場合に、判定部102から判定部203に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置20の動作を説明する。
図8は、可変長符号復号化装置20による具体的な動作を示す図である。以下、可変長符号復号化装置20により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100及びビットストリーム終端検出部206に入力されるとする。なお、図8に示すように、判定部102及び203の欄で示す下線付きの数字(判定信号)は、選択部204で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「4」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「8」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「4」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出するので、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「6」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、判定部203により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置20に、ビットストリームは入力されない。
ビットストリーム終端検出部206は、第4サイクルでビットストリームの終端を検出したので、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「2」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、判定部203により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置20は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合に、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
(実施の形態3)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図9は、本実施の形態の可変長符号復号化装置30の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図9に示す可変長符号復号化装置30は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置30は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び303と、選択部304とを備える。可変長符号復号化装置30は、実施の形態1の可変長符号復号化装置10に対して、判定方法制御部105が削除され、判定部103の代わりに判定部303を備え、選択部104の代わりに選択部304を備える点が異なる。なお、本実施の形態では、符号語「10」が、ビットストリームの終端であることを示す符号語であるとする。
判定部303は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ以上の場合に、判定部303は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ未満の場合に、判定部303は、判定信号「0」を出力する。また、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化されない場合は、判定部303は、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号に応じて、判定部103により出力された判定信号と、判定部303により出力された判定信号とのいずれかを選択する。具体的には、判定部303により出力された判定信号が「0」の場合に、選択部304は、判定部103により出力された判定信号を選択する。また、判定部303により出力された判定信号が「1」の場合に、選択部304は、判定部303により出力された判定信号を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部304により選択された判定信号が「0」の場合に、ビットストリーム切出し部100は、参照部112により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
以上のように、判定部303は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが、未復号のビットストリームの先頭ビットから当該符号語までの長さ以上である場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。そして、選択部304は、判定部303において有効であると判定された場合は、判定部303の判定結果を選択する。
これにより、実施の形態2と同様に、ビットストリームの終端が検出された場合に、判定部102から判定部303に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置30の動作を説明する。
図10は、可変長符号復号化装置30による具体的な動作を示す図である。以下、可変長符号復号化装置30により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100に入力されるとする。なお、図10に示すように、判定部102及び303の欄で示す下線付きの数字(判定信号)は、選択部304で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11110000」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11111110」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11100000」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11101000」を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態「6」が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ「6」以上なので、判定信号「1」を出力する。
選択部304は、判定部303により出力された判定信号が「1」なので、判定部303により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置30に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「10000000」を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態「2」が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ「2」以上なので、判定信号「1」を出力する。
選択部304は、判定部303により出力された判定信号が「1」なので、判定部303により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置30は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語「10」が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
(実施の形態4)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図11は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図11に示す可変長符号復号化装置40は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置40は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102と、ビットストリーム終端検出部206と、データ付加部407とを備える。可変長符号復号化装置40は、実施の形態1の可変長符号復号化装置10に対して、判定部103と選択部104と判定方法制御部105とが削除され、さらに、新たにビットストリーム終端検出部206とデータ付加部407とを備える点が異なる。
ビットストリーム終端検出部206は、実施の形態2で示すビットストリーム終端検出部206と同じである。
データ付加部407は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合に、ビットストリームの終端にデータを付加する。具体的には、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、データ付加部407は、入力されたビットストリームの終端に7ビットの「0」を付加し出力する。また、ビットストリーム終端検出部206により出力された終端検出信号が「0」の場合に、データ付加部407は、入力されたビットストリームをそのまま出力する。また、ビットストリームが入力されない場合は、何も出力しない。
以上のように、本実施の形態の可変長符号復号化装置40は、実施の形態1〜3とは異なり、1つの判定部(判定部102)しか備えていない。判定部102は、上述したように、ビットストリーム切出し部100に蓄積されるビットストリームの符号長が最大符号長以上であるか否かを判定する。すなわち、ビットストリーム切出し部100に蓄積されるビットストリームの符号長が最大符号長未満である場合であっても、ビットストリームの復号化を行うために、終端が検出された場合にはデータ付加部407がビットストリームの終端にデータを付加する。
これにより、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず最大符号長以上にすることができる。よって、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置40の動作を説明する。
図12は、可変長符号復号化装置40による具体的な動作を示す図である。以下、可変長符号復号化装置40により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム終端検出部206及びデータ付加部407に入力されるとする。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1111」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出するので、終端検出信号「1」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、入力されたビットストリーム「10」の終端に7ビットの「0」を付加し、ビットストリーム「100000000」を出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「100000000」を蓄積し、蓄積状態「13」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「13」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置40に、ビットストリームは入力されない。
ビットストリーム終端検出部206は、第4サイクルでビットストリームの終端を検出したので、終端検出信号「1」を出力する。
データ付加部407は、ビットストリームが入力されないので、何も出力しない。
ビットストリーム切出し部100は、データ付加部407によりビットストリームが出力されないので、ビットストリームを蓄積せず、蓄積状態「9」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「9」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置40は、ビットストリーム終端の符号語をビットストリーム切出し部100に蓄積する場合に、データ付加部407によりビットストリームの終端に7ビットの「0」を付加することで、8ビット以上の未復号のビットストリームを蓄積することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
なお、上記説明において、データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、入力されたビットストリームの終端に7ビットの「0」を付加しているが、「0」以外の任意のデータを付加してもよい。
また、ビットストリーム切出し部100が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部102は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部100に蓄積されているか否かを判定する。また、データ付加部407は、少なくとも固定長より1ビット短い長さのデータをビットストリームの終端に付加する。
(実施の形態5)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図13は、本実施の形態の可変長符号復号化装置50の構成を示すブロック図である。なお、図11と同様の要素には同一の符号を付しており、説明を省略する。
図13に示す可変長符号復号化装置50は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置50は、ビットストリーム終端検出部206と、データ付加部407と、ビットストリーム切出し部100と、テーブル参照部101及び501と、判定部502と、選択部508及び509と、テーブル制御部510とを備える。可変長符号復号化装置50は、実施の形態4の可変長符号復号化装置40に対して、判定部102の代わりに判定部502を備え、さらに、新たにテーブル参照部501と、選択部508及び509と、テーブル制御部510とを備える点が異なる。
判定部502は、少なくともテーブル制御部510により出力された最大符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部100により出力された蓄積状態が、テーブル制御部510により出力された最大符号長以上の場合に、判定部502は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が、テーブル制御部510により出力された最大符号長未満の場合に、判定部502は、判定信号「0」を出力する。
テーブル参照部501は、記憶部511と、参照部512とを備える。記憶部511は、記憶部111とは異なる種類の可変長符号テーブル513を記憶するメモリである。図14は、記憶部511に記憶される可変長符号テーブル513の一例を示す図である。なお、記憶部511に記憶される可変長符号テーブル513は、最大符号長が4ビットの可変長符号テーブルである。
選択部508は、テーブル制御部510により出力された選択信号に応じて、テーブル参照部101により出力された復号化データと、テーブル参照部501により出力された復号化データとのいずれかを選択する。具体的には、テーブル制御部510により出力された選択信号が「0」の場合に、選択部508は、テーブル参照部101により出力された復号化データを選択する。また、テーブル制御部510により出力された選択信号が「1」の場合に、選択部508は、テーブル参照部501により出力された復号化データを選択する。
選択部509は、テーブル制御部510により出力された選択信号に応じて、テーブル参照部101により出力された符号長と、テーブル参照部501により出力された符号長とのいずれかを選択する。具体的には、テーブル制御部510により出力された選択信号が「0」の場合に、選択部509は、テーブル参照部101により出力された符号長を選択する。また、テーブル制御部510により出力された選択信号が「1」の場合に、選択部509は、テーブル参照部501により出力された符号長を選択する。
テーブル制御部510は、テーブル参照部101により出力された復号化データ及び符号長と、テーブル参照部501により出力された復号化データ及び符号長とのいずれかを選択するための選択信号を出力する。具体的には、選択信号「0」を出力し、かつ、判定部502により出力された判定信号が「1」の場合に、テーブル制御部510は、次のサイクルで選択信号「1」を出力する。また、選択信号「1」を出力し、かつ、判定部502により出力された判定信号が「1」の場合に、テーブル制御部510は、次のサイクルで選択信号「0」を出力する。また、判定部502により出力された判定信号が「0」の場合は、次のサイクルで選択信号を更新しない。なお、初期状態では、選択信号「0」を出力する。
また、テーブル制御部510は、出力する選択信号に応じて、記憶部111により記憶された可変長符号テーブル113に含まれる符号語の最大符号長と、記憶部511により記憶された可変長符号テーブル513に含まれる符号語の最大符号長とのいずれかを出力する。具体的には、選択信号「0」を出力する場合に、テーブル制御部510は、最大符号長「8」を出力する。また、選択信号「1」を出力する場合に、テーブル制御部510は、最大符号長「4」を出力する。なお、初期状態では、選択信号「0」を出力するので、最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」の場合に、選択部509により選択された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
また、判定部502により出力された判定信号が「0」の場合に、ビットストリーム切出し部100は、選択部509により選択された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
これにより、判定部502で用いられる閾値を適宜切替えることで、複数の記憶部のうち、記憶部に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。
次に、本実施の形態の可変長符号復号化装置50の動作を説明する。
図15は、可変長符号復号化装置50による具体的な動作を示す図である。以下、可変長符号復号化装置50により、ビットストリーム「11111110000111111110…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム終端検出部206及びデータ付加部407に入力されるとする。なお、図15に示すように、テーブル参照部101及びテーブル参照部501の欄で示す下線付きの文字(復号化データ)及び数字(符号長)はそれぞれ、選択部508及び509で選択される文字(復号化データ)及び数字(符号長)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1111」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「4」がテーブル制御部510により出力された最大符号長「8」未満なので(初期状態)、判定信号「0」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット「1」と、記憶部511により記憶された符号語「1」が一致するので、復号化データ「i」及び符号長「1」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「0」なので(初期状態)、テーブル参照部101により出力された復号化データ「e」及び符号長「5」を選択する。
テーブル制御部510は、判定部502により出力された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号を更新せず、選択信号「0」及び最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「0」なので、選択部509により選択された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「8」がテーブル制御部510により出力された最大符号長「8」以上なので、判定信号「1」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「11111110」の第1ビット「1」と、記憶部511により記憶された符号語「1」が一致するので、復号化データ「i」及び符号長「1」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化データ「h」及び符号長「8」を選択する。
テーブル制御部510は、選択信号「0」を出力し、かつ、判定部502により出力された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「1」及び最大符号長「4」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」なので、選択部509により選択された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第9ビット〜第12ビット「0001」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「0001」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「0001」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「00010000」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「4」がテーブル制御部510により出力された最大符号長「4」以上なので、判定信号「1」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「00010000」の第1ビット「0」と、記憶部111により記憶された符号語「0」が一致するので、復号化データ「a」及び符号長「1」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「00010000」の第1ビット〜第4ビット「0001」と、記憶部511により記憶された符号語「0001」が一致するので、復号化データ「l」及び符号長「4」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「1」なので、テーブル参照部501により出力された復号化データ「l」及び符号長「4」を選択する。
テーブル制御部510は、選択信号「1」を出力し、かつ、判定部502により出力された判定信号が「1」なので、次のサイクル(第4サイクル)で選択信号「0」及び最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」なので、選択部509により選択された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置50は、記憶部511に記憶された可変長符号テーブル513に含まれる符号語を復号化する場合に、少なくとも4ビットの未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、復号化を実行することができる。これにより、最大符号長が8ビット未満の可変長符号テーブル513に含まれる符号語を高速に復号化することができる。
なお、上記説明において、記憶部511は、最大符号長が4ビットの可変長符号テーブルを記憶しているが、4ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
また、上記説明において、テーブル制御部510は、符号語を復号化する毎に、テーブル参照部101及び501を交互に選択しているが、規格等に応じて任意の順序で選択してもよい。
また、上記説明において、可変長符号復号化装置50は、2種類のテーブル参照部101及び501を備えているが、3種類以上のテーブル参照部を備えてもよい。
また、上述した実施の形態1〜4の可変長符号復号化装置に対して本実施の形態を適用してもよい。すなわち、実施の形態1〜4の可変長符号復号化装置において、判定部102の構成を判定部502と同様の構成にし、テーブル参照部501と、選択部508及び509と、テーブル制御部510とを追加してもよい。
以上、本発明の可変長符号復号化装置及びその方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
例えば、本発明の可変長符号復号化方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。さらに、当該プログラムを記録したコンピュータ読み取り可能なCD−ROM(Compact Disc−Read Only Memory)などの記録媒体として実現し、又は、当該プログラムを示す情報、データ又は信号として実現してもよい。さらに、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
本発明は、可変長符号復号化装置に適用でき、特に、LSI等の電子回路で実現される動画像又は音声の復号化装置として適用することができる。例えば、符号化された動画像又は音声を復号化して再生するパーソナルコンピュータ、デジタルテレビ、DVD(Digital Versatile Disc)プレーヤー、DVDレコーダー、PDA(Personal Digital Assistants)及び携帯電話機等に備えられる動画像又は音声の復号化装置として有用である。
10、20、30、40、50 可変長符号復号化装置
100 ビットストリーム切出し部
101、501 テーブル参照部
102、103、203、303、502 判定部
104、204、304、508、509 選択部
105 判定方法制御部
111、511 記憶部
112、512 参照部
113、513 可変長符号テーブル
121 バッファ
122 切出し部
123 蓄積状態出力部
206 ビットストリーム終端検出部
407 データ付加部
510 テーブル制御部
600 ビデオデコーダ
610 入力インタフェース
620 メモリインタフェース
630 画像伸張部
631 VLD部
632 IQ部
633 IDCT部
634 MVC部
635 MC部
636 バイト/ワード変換部
637 クロック制御部
638 パーサー部
640 出力インタフェース
650 コントローラ
700 メモリ
710 コードバッファメモリ
720 フレームメモリ

Claims (16)

  1. 可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
    可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第1記憶手段と、
    前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第1の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第1の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第1の長さのビット列を出力するビット出力手段と、
    前記第1記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第1参照手段と、
    少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定手段と、
    前記第1の長さより短い少なくとも第2の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第2判定手段と、
    前記第1判定手段と前記第2判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
    前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第1の長さ又は前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第1の長さのビット列を出力し、
    前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第1判定手段及び前記第2判定手段の判定結果の選択を切り換える
    ことを特徴とする可変長符号復号化装置。
  2. 前記選択手段は、前記第1判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第2判定手段の判定結果を選択する
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  3. 前記選択手段は、さらに、前記第2判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1判定手段の判定結果を選択する
    ことを特徴とする請求項2記載の可変長符号復号化装置。
  4. 前記選択手段は、前記第1判定手段の判定結果と前記第2判定手段の判定結果とを交互に選択する
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  5. 前記第2の長さは、前記第1参照手段により出力された符号長である
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  6. 前記第1の長さは、前記第1記憶手段に記憶された複数の符号長の中で最大の長さである
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  7. 前記第2の長さは、1ビットであり、
    前記可変長符号復号化装置は、さらに、
    前記ビットストリームの終端を検出する終端検出手段を備え、
    前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第2判定手段の判定結果を選択する
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  8. 前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出する
    ことを特徴とする請求項7記載の可変長符号復号化装置。
  9. 前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出する
    ことを特徴とする請求項7記載の可変長符号復号化装置。
  10. 前記選択手段は、前記ビット出力手段により出力された前記第1の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第2判定手段の判定結果を選択する
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  11. 前記可変長符号復号化装置は、さらに、
    前記第1記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第2記憶手段と、
    前記第2記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第2参照手段と、
    前記第1参照手段と前記第2参照手段とのいずれかを選択する第2選択手段とを備え、
    前記第1の長さは、前記第2選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
    ことを特徴とする請求項1記載の可変長符号復号化装置。
  12. 可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
    可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第1記憶手段と、
    前記ビットストリームの終端を検出する終端検出手段と、
    前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、
    前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、
    前記第1記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第1参照手段と、
    少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定手段とを備え、
    前記ビット出力手段は、前記第1判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第1参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、
    前記データ付加手段は、少なくとも前記固定長より1ビット短い長さのデータを付加する
    ことを特徴とする可変長符号復号化装置。
  13. 前記固定長は、前記第1記憶手段に記憶された複数の符号長の中で最大の長さである
    ことを特徴とする請求項12記載の可変長符号復号化装置。
  14. 前記可変長符号復号化装置は、さらに、
    前記第1記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第2記憶手段と、
    前記第2記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第2参照手段と、
    前記第1参照手段と前記第2参照手段とのいずれかを選択する第2選択手段とを備え、
    前記第1の長さは、前記第2選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
    ことを特徴とする請求項12記載の可変長符号復号化装置。
  15. 可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化方法であって、
    前記ビットストリームをバッファに蓄積し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第1の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第1の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第1の長さのビット列を出力するビット出力ステップと、
    可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶するメモリを参照することで、前記ビット出力ステップにおいて出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照ステップと、
    少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定ステップと、
    前記第1の長さより短い少なくとも第2の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第2判定ステップと、
    前記第1判定ステップと前記第2判定ステップとのいずれか一方の判定結果を選択する選択ステップとを含み、
    前記ビット出力ステップでは、前記選択ステップにより選択された判定結果が、少なくとも前記第1の長さ又は前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照ステップにおいて出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第1の長さのビット列を出力し、
    前記選択ステップでは、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第1判定ステップ及び前記第2判定ステップの判定結果の選択を切り換える
    ことを特徴とする可変長符号復号化方法。
  16. 可変長符号化されたデータを含むビットストリームを復号化する集積回路であって、
    可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する記憶手段と、
    前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第1の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第1の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第1の長さのビット列を出力するビット出力手段と、
    前記記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照手段と、
    少なくとも前記第1の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第1判定手段と、
    前記第1の長さより短い少なくとも第2の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第2判定手段と、
    前記第1判定手段と前記第2判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
    前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第1の長さ又は前記第2の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第1の長さのビット列を出力し、
    前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第1判定手段及び前記第2判定手段の判定結果の選択を切り換える
    ことを特徴とする集積回路。
JP2010505337A 2008-03-31 2009-03-24 可変長符号復号化装置及びその方法 Active JP4763853B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010505337A JP4763853B2 (ja) 2008-03-31 2009-03-24 可変長符号復号化装置及びその方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008091012 2008-03-31
JP2008091012 2008-03-31
PCT/JP2009/001298 WO2009122675A1 (ja) 2008-03-31 2009-03-24 可変長符号復号化装置及びその方法
JP2010505337A JP4763853B2 (ja) 2008-03-31 2009-03-24 可変長符号復号化装置及びその方法

Publications (2)

Publication Number Publication Date
JPWO2009122675A1 JPWO2009122675A1 (ja) 2011-07-28
JP4763853B2 true JP4763853B2 (ja) 2011-08-31

Family

ID=41135083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010505337A Active JP4763853B2 (ja) 2008-03-31 2009-03-24 可変長符号復号化装置及びその方法

Country Status (4)

Country Link
US (1) US8228214B2 (ja)
EP (1) EP2259432A1 (ja)
JP (1) JP4763853B2 (ja)
WO (1) WO2009122675A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2744202T3 (pl) * 2011-08-11 2020-12-28 Sun Patent Trust Sposób kodowania obrazów, sposób dekodowania obrazów, urządzenie do kodowania obrazów, urządzenie do dekodowania obrazów oraz urządzenie do kodowania/dekodowania obrazów
CN103269257B (zh) * 2013-05-13 2016-08-24 杰发科技(合肥)有限公司 一种检测变长编码码流错误的方法和解码及错误检测装置
US9564931B1 (en) * 2014-01-09 2017-02-07 Marvell International Ltd. Systems and methods for using decoders of different complexity in a hybrid decoder architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08186822A (ja) * 1994-12-28 1996-07-16 Graphics Commun Lab:Kk 画像復号装置
JPH11122113A (ja) * 1997-10-09 1999-04-30 Sony Corp データ復号化装置及び方法
JP2000138932A (ja) * 1998-10-30 2000-05-16 Nec Corp 可変長復号化方法及び装置
JP2002043949A (ja) * 2000-07-25 2002-02-08 Canon Inc 復号化装置
JP2008278075A (ja) * 2007-04-26 2008-11-13 Matsushita Electric Ind Co Ltd 可変長符号復号化装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JPH07107303A (ja) * 1993-09-30 1995-04-21 Nec Corp ハフマン符号の復号化方法
KR970002483B1 (ko) * 1993-11-29 1997-03-05 대우전자 주식회사 고속의 가변길이 복호화장치
US5550542A (en) * 1994-05-04 1996-08-27 Matsushita Electric Corporation Of America Variable length code look-up table having separate code length determination
JPH1074140A (ja) 1996-03-28 1998-03-17 Sanyo Electric Co Ltd データ転送方法、復号装置、データ転送装置及びデータ処理装置
US6011598A (en) * 1996-03-28 2000-01-04 Sanyo Electric Co., Ltd. Decoding start controller, decoder, and decoding system
US5831557A (en) * 1996-06-11 1998-11-03 Apple Computer, Inc. Variable length code decoding according to optimum cache storage requirements
JP3600487B2 (ja) * 1999-08-31 2004-12-15 株式会社東芝 可変長復号器及びこれを用いた動画像復号装置
JP2001332978A (ja) * 2000-05-18 2001-11-30 Sony Corp データストリーム変換装置とその方法、可変長符号化データストリーム生成装置とその方法、および、カメラシステム
EP1217574A3 (en) * 2000-12-19 2004-05-19 Matsushita Electric Industrial Co., Ltd. A method for lighting- and view-angle-invariant face description with first- and second-order eigenfeatures
US6677869B2 (en) * 2001-02-22 2004-01-13 Panasonic Communications Co., Ltd. Arithmetic coding apparatus and image processing apparatus
FI116813B (fi) * 2002-06-20 2006-02-28 Nokia Corp Menetelmä ja järjestelmä vaihtuvapituisen koodauksen purkamiseksi, ja koodisanojen paikannuslaite
US7209059B2 (en) * 2004-12-06 2007-04-24 Matsushita Electric Industrial Co., Ltd. Decoding method and encoding method
US20080266144A1 (en) * 2007-04-30 2008-10-30 Jen-Te Chen Encoding Method which Encodes Codes in Consideration of Shape

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08186822A (ja) * 1994-12-28 1996-07-16 Graphics Commun Lab:Kk 画像復号装置
JPH11122113A (ja) * 1997-10-09 1999-04-30 Sony Corp データ復号化装置及び方法
JP2000138932A (ja) * 1998-10-30 2000-05-16 Nec Corp 可変長復号化方法及び装置
JP2002043949A (ja) * 2000-07-25 2002-02-08 Canon Inc 復号化装置
JP2008278075A (ja) * 2007-04-26 2008-11-13 Matsushita Electric Ind Co Ltd 可変長符号復号化装置

Also Published As

Publication number Publication date
JPWO2009122675A1 (ja) 2011-07-28
US20100289674A1 (en) 2010-11-18
US8228214B2 (en) 2012-07-24
EP2259432A1 (en) 2010-12-08
WO2009122675A1 (ja) 2009-10-08

Similar Documents

Publication Publication Date Title
JP4299357B2 (ja) 復号処理装置および復号処理方法
JP5583106B2 (ja) データデコーディング
TW201036449A (en) Video encoder, video decoder, video coding method, video decoding method, video coding program, video decoding program, and video coding/decoding system
JP4825644B2 (ja) 画像復号装置、画像符号化装置、およびシステムlsi
JP2005506777A (ja) 改良された可変長デコーダ
JP4098187B2 (ja) 可変長コード復号化装置及び方法
JP4763853B2 (ja) 可変長符号復号化装置及びその方法
JP2000324493A (ja) ビットストリームデコーディング装置
EP1868391A1 (en) Method of and apparatus for reproducing compressed video streams
JP4841496B2 (ja) 可変長符号復号化装置
KR101539260B1 (ko) 선택적 영상정보 무손실 압축, 복원 장치 및 방법
US20050174270A1 (en) Programmable variable length decoder including interface of cpu processor
US7439886B2 (en) Variable-length decoder, video decoder and image display system having the same, and variable-length decoding method
JP2002026737A (ja) データ復号化装置とその方法
US7142603B2 (en) Method and system for predictive table look-up code length of variable length code
JP3417684B2 (ja) 画像処理装置
JP4466382B2 (ja) 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置
JP2002099407A (ja) スタートコード検索回路
JP2008257221A (ja) 信号処理装置
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
JP2001007706A (ja) 可変長符号復号化装置
JP5872804B2 (ja) 符号化装置及び符号化方法
JP3239664B2 (ja) 可変長符号復号方法
KR100525373B1 (ko) 비디오 플레이어 및 비디오 플레이어의 고속 감기제어 방법
JP2008113348A (ja) 符号化復号装置、復号方法、並びにプログラム

Legal Events

Date Code Title Description
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: 20110531

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

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4763853

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150