KR100648258B1 - 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 - Google Patents

고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 Download PDF

Info

Publication number
KR100648258B1
KR100648258B1 KR20040060813A KR20040060813A KR100648258B1 KR 100648258 B1 KR100648258 B1 KR 100648258B1 KR 20040060813 A KR20040060813 A KR 20040060813A KR 20040060813 A KR20040060813 A KR 20040060813A KR 100648258 B1 KR100648258 B1 KR 100648258B1
Authority
KR
South Korea
Prior art keywords
bit
decoding
range
parameter
context
Prior art date
Application number
KR20040060813A
Other languages
English (en)
Other versions
KR20060012093A (ko
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 삼성전자주식회사
Priority to KR20040060813A priority Critical patent/KR100648258B1/ko
Priority to US11/179,137 priority patent/US7573951B2/en
Priority to TW94123847A priority patent/TWI320896B/zh
Priority to EP20050254510 priority patent/EP1624579A3/en
Priority to JP2005215847A priority patent/JP2006054865A/ja
Priority to CNA2005100893407A priority patent/CN1735209A/zh
Publication of KR20060012093A publication Critical patent/KR20060012093A/ko
Application granted granted Critical
Publication of KR100648258B1 publication Critical patent/KR100648258B1/ko

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/4006Conversion to or from arithmetic code
    • 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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 압축된 동영상 데이터의 복원 기술에 관한 것으로, 더 자세하게는 H.264/AVC 표준을 따르며 파이프라인 구조를 통해 고속의 동영상 데이터 처리가 가능한 내용 기반 적응적 이진 산술 디코더에 관한 것이다.
본 발명의 내용 기반 적응적 이진 산술 디코더는 인코딩된 복수의 비트들에 대해 비트 단위로 컨텍스트 선택과 산술 디코딩 및 역이진화 과정을 파이프라인으로 수행하도록 구성되며, 산술 디코딩시 비트별로 생성되는 새로운 디코딩 파라메터들을 디코더에 업데이트하되, 현재 역이진화가 수행되는 비트가 한 구문 요소의 마지막 비트인 경우, 마지막 비트의 디코딩에 의해 생성된 디코딩 파라메터들로 디코더의 디코딩 파라메터를 재설정하도록 구성된다.
CABAC 디코더, 파이프라인, 재정규화, Renormalization

Description

고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반 적응적 이진 산술 디코더{CONTEXT-BASED ADAPTIVE BINARY ARITHMETIC DECODER OF PIPELINE STRUCTURE FOR HIGH SPEED DECODING OPERATION}
도 1은 H.264 표준에서 제안하는 CABAC(Context-based Adaptive Binary Arithmetic Coding)에서의 데이터 압축과정을 보여주는 순서도이다.
도 2는 H.264 표준에서 제안하는 CABAC에서의 데이터 복원과정을 보여주는 순서도이다.
도 3은 본 발명에서 제안하는 파이프라인 방식의 CABAC 디코딩 개념을 보여주는 도면이다.
도 4는 도 3과 같은 파이프라인 방식의 CABAC 디코딩 과정에서 발생되는 디코딩 오류를 방지하기 위한 본 발명의 디코딩 동작을 보여주는 순서도이다.
도 5는 도 4와 같은 디코딩 동작을 수행하는 본 발명의 CABAC 디코더의 일실시예를 보여주는 블록도이다.
도 6은 도 4와 같은 디코딩 동작을 수행하는 본 발명의 CABAC 디코더에 대한 보다 구체적인 실시예를 보여주는 도면이다.
도 7은 도 5 및 도 6에 보인 본 발명의 산술 디코더부에 포함되어 재정규화 과정을 수행하는 재정규화기의 실시예를 보여주는 도면이다.
도 8은 4비트씩 동시에 디코딩과 역이진화를 수행하는 CABAC 바이패스 디코더에서의 디코딩 과정을 보여주는 도면이다.
도 9는 도 8과 같이 복수의 비트들에 대해 동시에 디코딩 및 역이진화를 수행하는 CABAC 바이패스 디코더의 실시예를 보여주는 도면이다.
본 발명은 압축된 동영상 데이터의 복원 기술에 관한 것으로, 더 자세하게는 H.264/AVC(Advanced Video Coding) 표준을 따르며 고속의 동영상 데이터 처리가 가능한 내용 기반 적응적 이진 산술 디코더(Context-based Adaptive Binary Arithmetic Decoder)에 관한 것이다.
최근 영상 처리 장치들에서 점점 더 고화질의 비디오 어플리케이션 구현 및 다양한 멀티 미디어 서비스의 제공이 요구됨에 따라, 영상 처리 장치들에서 처리해야할 동영상 데이터의 양이 점점 더 증가하는 추세에 있다. 이에 따라, 동영상 데이터에 대한 고속의 압축 및 복원 기술에 대한 연구 개발이 활발히 진행되고 있다.
일반적으로 사용되는 동영상 데이터 압축 기술로는 국제전기통신연합(ITU: International Telecommunication Union)에서 권고하는 H.261, H.262, H.263등과 국제표준화기구(ISO: International Organization for Standardization)의 동화상 전문가 그룹(MPEG: Motion Picture Experts Group)에서 제안하는 앰팩-1(MPEG-1), 앰팩-2(MPEG-2), 앰팩-4(MPEG-4)등이 있다. 그리고, 최근에는 국제전기통신연합과 국제표준화기구에서 공동으로 더 높은 압축률을 구현할 수 있는 차세대 동영상 압축기술인 H.264 또는 MPEG-4 part10 AVC가 제정되었다.
H.264 표준은 기존의 압축기술들에 비해 복잡하여 실제 구현이 어렵다는 단점이 있지만, 높은 압축률을 구현할 수 있고, 다양한 네트워크 환경에 쉽게 적응시킬 수 있는 장점이 있어 차세대 동영상 압축기술로서 그 연구가 활발히 진행되고 있다.
한편, H.264 표준에서는 베이스라인 프로파일(Baseline profile)과 메인 프로파일(Main profile) 및 확장 프로파일(Extended profile)의 세 가지 형태 표준 프로파일들을 정의하고 있다. 이 중 메인 프로파일은 HD-텔레비전과 같은 고화질의 동영상 데이터를 사용하는 단말들의 특성을 정의한 집합이다. 각 프로파일별로 서로 다른 압축 및 복원방법을 사용하는데, 베이스라인 프로파일은 내용 기반 적응적 가변 길이 코딩(CAVLC: Context-Adaptive Variable Length Coding)방식을 사용하는 엔트로피 코딩(entropy coding)을 통해 동영상 데이터들을 압축한다. 반면에, 메인 프로파일은 내용 기반 적응적 이진 산술 코딩(이하, CABAC: Context-based Adaptive Binary Arithmetic Coding)방식을 사용하는 엔트로피 코딩을 통해 동영상 데이터들을 압축한다. 이 중 CABAC 방식은 각 비트들의 컨텍스트에 따른 각 구문 요소의 확률 모델 선택과 통계에 기반을 둔 확률 추정 적용 및 산술 코딩 방식을 통해 보다 효과적인 압축 성능을 갖는다.
도 1은 H.264 표준에서 제안하는 CABAC 방식의 데이터 압축과정을 보여주는 순서도이다. 도 1을 참조하면, CABAC 방식에서의 데이터 압축과정은 크게 이진화(Binarisation) 단계(S102)와 컨텍스트 모델 선택(Context model selecting) 단계(S104) 그리고, 산술 인코딩(Arithmetic encoding) 단계(S106) 및 확률 업데이트(Probability update) 단계(S108)로 분류된다. 먼저, 이진화 단계(S102)에서는 이진수 값을 갖지 않는 구문 요소(SE: Syntax Element)들 즉, 전송 계수(transform coefficient)와 움직임 벡터(motion vector)와 같이 둘 이상의 값을 갖는 구문 요소들을 산술 인코딩을 수행하기 이전에 이진수로 변환한다. 이는 앞서 언급한 것처럼, CABAC 방식에서는 '0'과 '1'의 이진수만으로 인코딩을 수행하는 이진 산술 코딩(BAC: Binary Arithmetic Coding)을 사용하기 때문이다. 컨텍스트 모델 선택 단계(S104)에서는 이진화된 각 비트들에 대한 컨텍스트 모델을 선택한다. 여기서 컨텍스트 모델은 이진화된 구문 요소의 각 비트별 확률 모델을 의미하며, 최근에 코딩된 구문 요소들의 통계에 따라 이용 가능한 모델이 선택된다. 즉, 컨텍스트 모델은 이진화된 각 데이터 비트가 '1' 또는 '0'이 되는 확률을 저장한다. 산술 인코딩 단계(S106)에서는 산술 부호기를 이용하여 선택된 확률 모델에 따라 각각의 비트를 인코딩한다. 마지막으로, 확률 업데이트 단계(S108)에서는 선택된 컨텍스트 모델을 실제 부호화된 값을 기반으로 하여 업데이트한다.
도 1과 같은 과정을 통해 압축된 데이터들은 CABAC 디코더에 의해 디코딩되어 다시 원래의 데이터로 복원된다. 도 2는 CABAC 디코더에서의 데이터 복원 과정을 보여주는 순서도이다. 도 2에 보인 것처럼, CABAC 디코더에서의 데이터 복원 과정은 크게 컨텍스트 선택 단계(S202)와 비트별 디코딩(Decoding 1 bit) 단계(S204) 및 역이진화(De-binarization) 단계(S206)로 분류된다. 먼저, 컨텍스트 선택 단계(S202)에서는 입력되는 이진수들 각각에 대해 즉, 비트별로 산술 디코더에서의 디코딩에 사용될 컨텍스트를 선택한다. 그리고, 비트별 디코딩 단계(S204)에서는 각 비트별로 선택된 컨텍스트와 이전 비트의 디코딩 과정에서 생성된 디코딩 파라메터들(value, range)을 이용하여 1 비트씩 순차적인 디코딩을 수행한다. 마지막으로, 역이진화 단계(S206)에서는 상기 디코딩 단계에서 디코딩된 비트가 해당 구문 요소의 마지막 비트인지를 확인하여 원래의 구문 요소로 복원한다. 한편, 이상과 같은 CABAC 디코더에서의 데이터 복원과정은 각 구문 요소에 대해 비트 단위로 행해진다.
H.264에서는 이상 도 1 및 도 2의 과정들을 통해 동영상 데이터들을 압축하고, 복원하는데, 앞서 도 2의 데이터 복원 과정의 설명에서 밝힌 바와 같이, 이진수로 변환된 데이터들은 하나의 비트 단위로 순차적인 디코딩이 수행된다. 다시 말해, 하나의 비트에 대한 디코딩이 완전히 끝이 나야만 다음 비트에 대한 디코딩 과정이 수행될 수 있다. 이는 복수의 이진값 즉, 복수의 비트들로 변환된 구문 요소의 길이가 일정하지 않고 가변적이기 때문에, 하나의 비트에 대한 역이진화 과정까지 완전히 끝이 나야만 다음 비트가 이전 구문 요소에 포함되는 비트인지 혹은 다른 구문 요소에 포함되는 비트인지를 알 수 있기 때문이다. 따라서, 하나의 비트에 대한 모든 디코딩 과정이 종료되어야만 다음 비트에 대한 디코딩이 수행될 수 있으므로 고속의 연산을 수행하는 CABAC 디코더를 구현하는데 어려움이 있다. 또한, 비트별 디코딩 과정에서 산술 디코더에 의한 연산동작 중 재정규화(Renormalization) 동작이 가변적인 횟수로 일어나기 때문에, 이 과정에서의 조건 비교에 의한 전체 연산의 지연이 발생하는 문제가 있다.
이상과 같은 종래 H.264 디코딩 과정에서의 문제점들은 높은 데이터 처리률을 가지는 고속의 CABAC 디코더를 구현하는데 장애요소가 되고 있다.
본 발명의 목적은 압축된 동영상 데이터들에 대한 고속의 디코딩 수행이 가능한 파이프라인 구조의 CABAC 디코더를 제공하는데 있다. 또한, 본 발명의 또 다른 목적은 산술 디코더의 디코딩 연산 과정에서 재정규화 동작으로 인해 발생되는 지연 시간을 줄일 수 있는 CABAC 디코더를 제공하는데 있다.
(구성)
본 발명의 CABAC 디코더는 인코딩된 복수의 비트들에 대해 비트 단위로 컨텍스트 선택과 산술 디코딩 및 역이진화 과정을 파이프라인으로 수행하며, 산술 디코딩시 비트별로 생성되는 새로운 디코딩 파라메터들을 상기 디코더에 업데이트하되, 현재 역이진화가 수행되는 비트가 한 구문 요소의 마지막 비트인 경우, 마지막 비트의 디코딩에 의해 생성된 디코딩 파라메터들을 디코더에 재설정함을 특징으로 한다. 이상과 같은 특징을 갖는 본 발명의 디코더에서의 디코딩 방법은 인코딩된 복수의 비트들에 대해 제1 디코딩 파라메터를 이용하여 비트 단위로 컨텍스트를 선택하는 제1단계;와 제1단계에서 선택된 컨텍스트와 상기 제1 디코딩 파라메터를 이용하여 산술 디코딩을 수행하여 디코딩된 이진값 및 제2 디코딩 파라메터를 생성하는 제2단계; 및 제2단계에서 디코딩된 이진값을 역이진화하는 제3단계를 포함하며, 제1 내지 제3단계는 복수의 비트들에 대해 파이프라인으로 수행되며, 제3단계에서 역이진화가 수행중인 비트가 한 구문요소의 마지막 비트인 경우, 마지막 비트로부터 생성된 제2 디코딩 파라메터로 상기 디코더를 재설정함을 특징으로 한다.
본 발명의 특징들을 구현하기 위한 내용 기반 적응적 이진 산술 디코더의 실시예는 인코딩된 복수의 비트들에 대해 컨텍스트 선택과 디코딩 및 역이진화의 각 과정을 비트별로 연속하여 수행하는 파이프라인;과 이전 비트의 디코딩 파라메터를 저장하고, 이를 파이프라인으로 입력하는 레지스터부; 및 파이프라인으로부터의 비트 판별신호에 따라 파이프라인으로부터의 디코딩 파라메터와 레지스터부로부터의 디코딩 파라메터 중 하나를 선택하여 레지스터부로 입력하는 제어부로 구성됨을 특징으로 한다.
본 발명의 특징들을 구현하기 위한 또 다른 실시예에 있어서, 내용 기반 적응적 이진 산술 디코더는 이전 비트의 컨텍스트를 이용하여 비트 단위의 컨텍스트 선택을 수행하는 컨텍스트 선택부;와 컨텍스트 선택부로부터의 컨텍스트와 이전 비트의 범위 및 밸류 파라메터를 이용하여 비트 단위의 디코딩을 수행하고, 현재 비트에 대한 새로운 컨텍스트와 범위 및 밸류 파라메터를 생성하는 산술 디코더부; 그리고, 산술 디코더부에 의해 디코딩된 이진값에 대한 역이진화를 수행하여 구문 요소를 복원하고, 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트인지를 판별하여 제어신호를 생성하는 역이진화부; 그리고, 제어신호에 응답하여 산술 디코더부에 의해 비트 단위로 생성되는 컨텍스트와 범위 및 밸류 파라메터들과 이전 비트에 대한 컨텍스트와 범위 및 밸류 파라메터들 중 하나를 선택하는 제어 부; 및 제어부에 의해 선택된 비트의 디코딩 파라메터들을 저장하고, 저장된 디코딩 파라메터들을 제어부 및 컨텍스트 선택부로 입력하는 레지스터부를 포함하되, 제어부는 한 구문 요소의 마지막 비트에 대한 역이진화가 수행되면, 마지막 비트에 대한 컨텍스트와 범위 및 밸류 파라메터를 선택하여 레지스터부로 입력함을 특징으로 한다.
또한, 본 발명에서 H.264 구문 요소들 중 MPS(Most Probable Symbol) 및 LPS(Least Probable Symbol)의 확률이 같은 구문 요소에 대한 디코딩을 수행하는 멀티비트 CABAC(Context-based Adaptive Binary Arithmetic Coding) 디코더는 외부로부터 입력되는 복수의 비트들 각각에 응답하여, 맨 처음으로 디코딩 동작을 수행한 제 1 디코더, 이전에 디코딩 동작을 수행한 제 2 디코더, 현재 디코딩 동작을 수행하는 제 3 디코더, 그리고 다음에 디코딩 동작을 수행할 제 4 디코더를 포함하는 복수의 디코더를 포함하며, 상기 제 3 디코더는 외부로부터 입력되는 비트와 상기 제 2 디코더로부터 입력되는 이전 디코딩 파라메터를 이용하여 디코딩 동작을 수행하고, 디코딩 동작에 의해 생성된 현재 디코딩 파라메터를 제 1 및 제 4 디코더로 출력하는 산술 디코더부; 및 상기 산술 디코더부로부터 출력되는 디코딩된 이진값들을 동시에 역이진화하고, 역이진화되는 비트들 중 한 구문 요소의 마지막 비트가 검출되면, 마지막 비트의 디코딩 파라메터들이 산술 디코더부의 제 1 디코더에 저장되도록 제어하는 멀티비트 역이진화부를 포함하다.
상기와 같은 모든 실시예들의 내용 기반 적응적 이진 산술 디코더에 포함되며, 고속의 디코딩을 가능하게 하는 본 발명의 재정규화기는 이전 비트의 범위 파라메터에서 소정 자릿수 이하의 비트에서의 '1'의 개수와 상기 범위 파라메터에서 처음 '1'이 나오는 비트의 자릿수를 이용하여 한번의 연산동작으로 현재 비트에 대한 새로운 범위 및 밸류 파라메터를 생성한다. 이를 구현하기 위한 재정규화기는 이전 비트의 범위 파라메터에서 소정 자리의 비트 이하로 "1"이 하나인 경우 "1"을 출력하고, 그렇지 않은 경우 "0"을 출력하는 제 1 비트 검출기; 이전 비트의 범위 파라메터에서 "1"이 처음 나오는 것이 몇 번째인지를 출력하는 제 2 비트 검출기; 제 1 비트 검출기와 제 2 비트 검출기의 출력에 대한 덧셈을 수행하는 덧셈기; 이전 비트의 범위 파라메터를 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 새로운 범위 파라메터를 생성하는 제 1 쉬프트 레지스터; 및 이전 비트의 밸류 파라메터를 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 밸류 파라메터를 생성하는 제 2 쉬프트 레지스터로 구성됨을 특징으로 한다.
이하, 상기의 실시예들을 보여주는 도면들을 참조하여 본 발명을 보다 상세히 설명한다.
(실시예)
도 3은 본 발명에서 제안하는 파이프라인 방식의 CABAC 디코딩 과정을 보여주는 도면이다. 도 3을 참조하면, 본 발명에서는 하나의 비트에 대해 컨텍스트 선택과 디코딩 및 역이진화 과정을 수행하면서 동시에 다음 비트에 대해서도 이와 같은 과정들을 연속적으로 수행한다. 좀 더 상세히 설명하면, 제 1 클락 싸이클(cc1)에서 제 1 비트(bin1)에 대한 컨텍스트를 선택을 하고, 제 2 클락 싸이클(cc2)에서는 제 1 클락 싸이클(cc1)에서 선택된 컨텍스트를 이용하여 제 1 비트(bin1)에 대한 디코딩을 수행한다. 이와 동시에 제 2 클락 싸이클(cc2)에서는 제 2 비트(bin2) 에 대한 컨텍스트 선택을 수행한다. 그리고, 제 3 클락 싸이클(cc3)에서는 디코딩된 제 1 비트(bin1)에 대한 역이진화를 수행하면서 동시에 제 2 비트(bin2)에 대한 디코딩 동작과 제 3 비트(bin3)에 대한 컨텍스트 선택을 수행한다.
이상과 같이, 본 발명에서는 하나의 비트에 대한 컨텍스트 선택과 '1' 비트 디코딩 및 역이진화를 수행하면서 동시에 다음 비트에 대해서도 상기와 같은 디코딩 동작들을 진행한다. 즉, 전체 디코딩 과정을 파이프라인으로 구현하여 고속의 디코딩 동작을 수행한다. 그러나, 앞서 종래 기술에서 언급한 것처럼, 각 구문 요소들은 가변적인 길이를 가지기 때문에 하나의 비트에 대한 역이진화 과정이 완전히 끝날때까지는 해당 구문 요소의 모든 비트에 대한 디코딩이 종료되었는지 알 수 없다. 따라서, 도 3과 같이 CABAC 디코딩 과정을 파이프라인으로 수행할 경우 하나의 구문 요소가 끝날때, 다음 구문 요소에 포함되는 첫 번째 한 비트가 잘못된 컨텍스트 선택에 의해 디코딩되는 오류가 발생한다. 예를 들어, 도 3에서 제 3 비트(bin3)가 해당 구문 요소의 끝이라고 가정하면, 제 4 비트(bin4)에 대한 컨텍스트 선택은 새로운 구문 요소에 의해 이루어져야 한다. 그러나, 도 3과 같이 파이프라인으로 CABAC 디코딩을 수행할 경우, 제 3 비트(bin3)에 대한 역이진화가 완료되기 이전에 제 4 비트(bin4)에 대한 컨텍스트 선택이 이루어진다. 따라서, 제 4 비트(bin4)가 제 3 비트(bin3)와 동일한 구문 요소라는 가정하에 제 4 비트에 대한 컨텍스트 선택이 수행된다. 이는 결과적으로 제 4 비트 즉, 다음 구문 요소의 첫 번째 한 비트가 잘못된 컨텍스트 선택에 의해 디코딩되는 오류가 발생한다. 이는 한 비트에 대한 디코딩 오류가 아니라, 이 후 모든 비트들의 디코딩 결과가 잘못되는 문제를 초래한다. 왜냐하면, 제 4 비트에 대한 디코딩 결과가 디코더에 업데이트되고, 업데이트된 제 4 비트의 디코딩 결과를 가지고, 다음 비트에 대한 컨텍스트 선택 및 디코딩이 수행되기 때문이다.
도 4는 도 3과 같은 파이프라인 방식의 디코딩 과정에서 발생되는 디코딩 오류를 방지하기 위한 본 발명의 디코딩 동작을 보여주는 순서도이다. 도 4에 보인 것처럼, 본 발명에서는 상기와 같은 오류를 방지하기 위해 해당 구문 요소의 마지막 비트에 대한 역이진화가 종료되면, 상기 마지막 비트에 대한 디코딩 결과들로 디코딩 파라메터들을 업데이트한다. 즉, 도 3에서 제 3 비트의 역이진화 동작까지 완료되었을때, 비록 제 4 비트에 대한 디코딩에 의해 새로운 디코딩 파라메터들이 이미 생성되었지만, 이 디코딩 파라메터들은 무시하고, 제 3 비트(즉, 한 구문 요소의 마지막 비트)에 대한 디코딩 파라메터들을 CABAC 디코더의 레지스터에 업데이트함으로써, 이 후 다른 구문 요소에 포함된 비트에 대한 디코딩 오류를 방지한다.
이하, 도 4를 참조하여 본 발명에서 제안하는 CABAC 디코딩 과정을 보다 상세히 설명한다. 먼저, 비트별 컨텍스트 선택(단계 S402)과 '1' 비트 디코딩(단계 S404) 및 역이진화 과정(단계 S406)은 도 2에 보인 종래의 일반적인 디코딩 과정과 동일하므로, 이에 대한 설명은 생략한다. 단, 본 발명에서는 각각의 비트들에 대해 상기 단계들이 도 3에 보인 것처럼 파이프라인으로 수행된다. 이 후 과정에 있어서, 하나의 비트에 대한 역이진화 과정이 종료되면, 그 때 해당 비트가 구문 요소의 마지막 비트인지를 판별한다(단계 S408). 만약, 현재 역이진화가 수행되는 비트가 한 구문 요소의 마지막 비트이면, 다음 비트 즉, 다른 구문 요소의 첫 번째 비 트에 대한 디코딩에 의해 새로이 생성된 디코딩 파라메터들은 무시하고, 상기 마지막 비트에 대한 디코딩에 의해 생성된 컨텍스트와 범위 및 밸류 파라메터로 디코더의 디코딩 파라메터들을 재설정한다(단계 S410). 만약, 현재 역이진화된 비트가 구문 요소의 마지막 비트가 아니면, 현재 디코딩이 수행된 비트의 컨텍스트와 범위 및 밸류 파라메터로 디코더의 디코딩 파라메터들을 업데이트한다(단계 S412). 이를 위해, 역이진화 단계에서는 현재 디코딩이 수행중인 비트의 이전 비트에 대한 디코딩 파라메터들을 래치(latch)하여 상기 이전 비트가 구문 요소의 마지막 비트인 경우 래치한 디코딩 파라메터들을 디코더의 레지스터에 다시 되돌려 재설정한다.
도 5는 도 4와 같은 파이프라인 구조의 디코딩 동작을 수행하는 본 발명의 CABAC 디코더의 일실시예를 보여주는 블록도이다. 도 5를 참조하면, 본 발명의 CABAC 디코더는 컨텍스트 선택부(502), 산술 디코더부(504), 역이진화부(506) 그리고, 제어부(508) 및 레지스터부(510)로 구성되며, 컨텍스트 선택부(502)와 산술 디코더부(504) 및 역이진화부(506)는 하나의 파이프라인으로 구성된다.
컨텍스트 선택부(502)는 외부로부터 한 싸이클에 하나씩 입력되는 구문 요소값(SE x)과 비트 인덱스(k) 및 이전 비트의 디코딩에 의해 생성된 디코딩 파라메터들(DCP_P) 중 일부(DCP_P2)를 이용하여 내부 레지스터에 저장되어 있는 복수의 컨텍스트들 중 하나(CTX_A)를 선택하고, 이를 산술 디코더부(504)로 입력한다.
산술 디코더부(504)는 외부의 스트림 버퍼로부터 입력되는 비트 스트림(bit stream)에 대해 컨텍스트 선택부(502)로부터 입력되는 컨텍스트(CTX_A)에 따라 1 비트 단위로 디코딩을 수행한다. 산술 디코더부(504)는 디코딩된 이진값(bin_v)을 역이진화부(506)로 출력하고, 디코딩 과정에서 생성된 디코딩 파라메터들(DCP_N)을 제어부(508)로 출력한다. 이 때, 산술 디코더부(504)는 이전 비트의 디코딩 과정에서 생성된 디코딩 파라메터들(DCP_P) 중 일부(DCP_P1)를 이용하여 현재 비트에 대한 디코딩을 수행한다.
역이진화부(506)는 산술 디코더부(504)로부터 입력되는 이진값(bin_v)을 이용하여 역이진화를 수행하여 원래의 구문 요소(SE_V)를 복원한다. 한편, 역이진화부(506)에 의한 역이진화 과정에서 해당 비트가 구문 요소의 마지막 비트인지가 판별된다. 역이진화부(506)는 현재 역이진화가 수행된 비트가 구문 요소의 마지막 비트인지의 여부를 나타내는 비트 판별신호(Last_bin)를 생성한다.
제어부(508)는 역이진화부(506)로부터의 비트 판별신호(Last_bin)에 응답하여 산술 디코더부(504)로부터 입력되는 디코딩 파라메터(DCP_N)와 레지스터부(510)로부터 입력되는 이전 비트 즉, 현재 역이진화가 수행중인 비트의 디코딩 파라메터(DCP_P) 중 하나를 선택하여 레지스터부(510)로 출력한다.
레지스터부(510)는 제어부(508)로부터 입력되는 디코딩 파라메터를 저장하고, 저장된 디코딩 파라메터를 컨텍스트 선택부(502)와 산술 디코더부(504) 및 제어부(508)로 출력한다.
한편, 제어부(508)는 비트 판별신호(Last_bin)에 따라 현재 역이진화가 수행중인 비트가 한 구문 요소의 마지막 비트이면, 레지스터부(510)로부터 입력되는 이전 비트 즉, 마지막 비트의 디코딩 파라메터가 레지스터부(510)에 재설정되도록 한다. 만약, 현재 역이진화가 수행중인 비트가 한 구문 요소의 마지막 비트가 아니 면, 산술 디코더부(504)로부터 입력되는 새로운 디코딩 파라메터(DCP_N)가 레지스터부(510)에 저장되도록 한다. 한편, 레지스터부(510)에서 컨텍스트 선택부(502)로 입력되는 디코딩 파라메터(DCP_P2)는 이전 비트의 컨텍스트와 컨텍스트 인덱스이고, 레지스터부(510)에서 산술 디코더부(504)로 입력되는 디코딩 파라메터(DCP_P1)는 이전 비트의 범위(range) 및 밸류(value) 파라메터이다.
도 6은 도 4와 같은 디코딩 동작을 수행하는 본 발명의 CABAC 디코더에 대한 보다 또 다른 실시예를 보여주는 도면이다. 도 6에 보인 CABAC 디코더는 도 5와 같이 크게 컨텍스트 선택부(610)와 산술 디코더부(620), 역이진화부(630) 그리고, 레지스터부(640) 및 제어부(650)로 나눌 수 있다.
컨텍스트 선택부(610)는 외부로부터 한 싸이클에 하나의 비트에 대해 하나씩 입력되는 구문 요소값(SE x)과 비트 인덱스(k)에 따라 현재 비트에 대한 컨텍스트 인덱스(CTX_Idx)를 생성하는 컨텍스트 인덱스 생성기(612)와 복수의 컨텍스트들을 저장하는 레지스터(614) 그리고, 생성된 컨텍스트 인덱스(CTX_Idx)에 따라 레지스터로부터의 컨텍스트(CTX_A)를 산술 디코더부(620)로 입력하는 제 1 제어회로(616)로 구성된다. 제 1 제어회로(616)는 먹스회로를 이용하여 구현할 수 있으며, 레지스터(614)는 이전 비트의 컨텍스트에 따라 저장된 컨텍스트들 중 하나를 선택하여 제 1 제어회로(616)로 내보낸다.
산술 디코더부(620)는 컨텍스트 선택부(610)로부터 입력되는 컨텍스트(CTX_A)와 레지스터부로부터 입력되는 이전 비트에 대한 디코딩 파라메터들(range_P, value_P)을 이용하여 외부의 스트림 버퍼로부터 입력되는 비트 스트림 형태의 압축 데이터들을 한 싸이클에 한 비트씩 디코딩하여 디코딩된 이진값(bin_v)을 역이진화부(630)로 입력한다. 그리고, 산술 디코더부(620)는 컨텍스트 선택부(610)로부터의 컨텍스트(CTX_A)와 이전 비트의 범위 파라메터(range_P) 및 밸류 파라메터(value_P)를 이용하여 현재 비트에 대한 디코딩을 수행하는 과정에서 새로운 컨텍스트(CTX_N)와 범위 및 밸류 파라메터(range_N, value_N)를 생성한다. 한편, 도 5 및 도 6에서 산술 디코더부(504/620)는 복잡한 연산과정을 통해 비트별 디코딩을 수행하는데, 아래의 프로그램 문장은 일반적인 내용 기반 적응적 이진 산술 디코더에 의해 디코딩 과정에서 수행되는 프로그램 코드의 일부이다.
======================================================================
Modified_QM Coder_decoder(state, MPS, range, value)
(1) Set bit = MPS
(2) Set rLPS = rLPS_table_64×4[state][(range>>6)&3]
(3) Set range = range - rLPS
(4) if value < range then Set state = AC_next_state_MPS_64[state]
else Set value = value - range
Set range = rLPS, Set bit = !bit
if state == 0 then Set MPS = 1 - MPS
Set state = AC_next_state_LPS_64[state]
(5) Set while range ≤ 2b-2 do
Set range = 2*range and value = 2*value + read_one_bit()
=======================================================================
상기 프로그램 코드에서 (5)의 부분이 앞서 종래 기술에서 언급한 바와 같이 가변적인 횟수로 발생됨에 따라 전체 연산 시간의 지연을 발생시키는 재정규화 과정에 해당한다. 즉, while 문의 특정 조건을 만족시킬때 까지 (5)의 재정규화 과정이 가변적인 횟수로 반복됨에 따라 전체 연산 시간이 지연되게 된다. 만약, 위 (5)의 재정규화 부분을 while 문을 쓰지 않고 구현할 수 있다면, 이러한 연산 시간의 지연을 줄일 수 있다. 이를 위해 위 (5)의 부분을 while 문을 쓰지 않고 아래 [수학식 1]과 같이 변형할 수 있다.
(5-1) x = log2(2b-2/range) + 1 = b - 1 - round(log2range).
(5-2) range = range << x and value << x + read_x_bit() ,(단, b는 상수)
삭제
위 [수학식 1]의 x는 다음과 같이 정의될 수 있다. 입력되는 범위(range) 파라메터를 몇 번 쉬프트할 경우 b 번째 이상에서 "1"이 하나만 나오는지에 대한 연산결과를 의미한다. 그러나, 위 [수학식 1]의 (5-1)부분은 log와 /가 포함되어 있어 실제 (5-1)부분을 그대로 하드웨어로 구현하는 것은 어렵다.
도 7은 도 5 및 도 6에 보인 본 발명의 산술 디코더부에서 재정규화 과정을 수행하는 재정규화기의 실시예를 보여주는 도면이다. 도 7을 참조하면, 재정규화기(700)는 제 1 비트 검출기(702), 제 2 비트 검출기(704), 덧셈기(706) 그리고, 제 1 쉬프트 레지스터(708) 및 제 2 쉬프트 레지스터(710)로 구성된다. 제 1 비트 검출기(702)는 레지스터부로부터 입력되는 이전 비트의 범위 파라메터(range_P)에서 b번째 비트 이하로 '1'이 단 하나인 경우는 "1"을 출력하고, '1'이 여러개인 경우는 "0"을 출력한다. 이는 이전 비트의 범위 파라메터(range_P)에 대해 2 비트씩 앤드(AND)와 오어(OR) 연산을 통해 구현할 수 있다. 이러한 제 1 비트 검출기(702)는 도면에 상세히 도시하지는 않았지만, 앤드 게이트(AND gate)와 오어 게이트(OR gate)를 이용하여 구현될 수 있음은 당업자라면 자명한 사항에 해당한다.
제 2 비트 검출기(704)는 레지스터부(640)에서 입력되는 이전 비트의 범위 파라메터(range_P)에서 '1'이 처음 나오는 것이 몇 번째 비트인지를 검출한다. 이는 우선순위 인코더(priority encoder)로 구현할 수 있다.
덧셈기(706)는 제 1 비트 검출기(702)의 출력과 제 2 비트 검출기(704)의 출력에 대한 덧셈을 수행한다. 그리고, 덧셈기에 의한 연산 결과는 제 1 쉬프트 레지스터(708)와 제 2 쉬프트 레지스터(710)로 입력된다. 덧셈기(706)의 연산 결과는 위 [수학식 1]에서 x값에 해당한다.
제 1 쉬프트 레지스터(708)는 레지스터부에서 입력되는 이전 비트의 범위 파라메터(range_P)를 덧셈기(706)로부터의 연산 결과(x)만큼 좌로 쉬프트시킨 새로운 범위 파라메터(range_N)를 출력한다.
제 2 쉬프트 레지스터(710)는 레지스터부에서 입력되는 이전 비트의 밸류 파라메터(value_P)와 외부의 스트림 버퍼에서 입력되는 비트 스트림들(bit stream[31:0])을 덧셈기(706)로부터의 연산 결과(x)만큼 좌로 쉬프트하여 새로운 밸류 파라메터(value_N)를 생성한다.
이상과 같이 재정규화기(700)는 레지스터부로부터 입력되는 이전 비트의 범위 및 밸류 파라메터(range_P, value_P)와 외부의 스트림 버퍼로부터 입력되는 비트 스트림(bit stream)을 이용하여 새로운 범위 및 밸류 파라메터(range_N, value_N)를 생성한다. 이 과정에서 재정규화기(700)는 상기 프로그램 코드의 (5)부분과 같이 조건을 만족할 때까지 쉬프트 동작을 반복하여 수행하지 않고, 도 7과 같은 하드웨어 구성을 통해 단 한번에 재정규화 과정을 처리함으로써 디코딩 과정의 지연시간을 줄인다. 이외에 산술 디코더부의 상세한 동작은 H.264 표준에 개시되어 있는 종래 공지 기술에 해당하므로 더 이상의 자세한 설명은 생략한다.
역이진화부(630)는 산술 디코더부(620)로부터 순차적으로 입력되는 디코딩된 이진값(bin_v)을 이용하여 원래의 구문 요소(SE_V)를 복원하고, 입력되는 이진값(bin_v)이 해당 구문 요소의 마지막 비트인지를 판별하여 컨텍스트 선택동작과 업데이트될 디코딩 파라메터들을 선택할 수 있는 비트 판별신호(Last_bin)를 생성한다.
제어부(640)는 역이진화부(630)로부터의 제어 신호(Last_bin)에 따라 레지스터부(650)로부터 입력되는 이전 비트의 파라메터들(CTX_P, CTX_Idx_P, range_P, value_P)과 산술 디코더부(620)와 컨텍스트 선택부(610)로부터 입력되는 현재 비트의 파라메터들(CTX_N, CTX_Idx_N, range_N, value_N) 중 하나를 선택하여 레지스터부(650)로 입력한다. 그리고, 레지스터부(650)로부터 입력되는 이전 비트의 컨텍스트 인덱스(CTX_Idx_P)에 따라 이전 비트의 컨텍스트(CTX_P)를 컨텍스트 선택부 (610)로 입력한다. 이를 구현하기 위한 구체적인 실시예로서 제어부(640)는 도 6에 보인 바와 같이 복수의 먹스회로들(642, 644, 646, 648)로 구현될 수 있다. 도 6을 참조하면, 제어부(640)의 제 1 먹스회로(642)는 산술 디코더부(620)로부터 입력되는 현재 비트에 대한 디코딩 파라메터들(range_N, value_N)과 레지스터부(650)의 디코딩 레지스터(652)로부터 입력되는 이전 비트에 대한 범위 및 밸류 파라메터(range_P, value_P) 중 하나를 역이진화부(630)로부터의 비트 판별신호(Last_bin)에 따라 선택하여 디코딩 레지스터(652)로 입력한다. 즉, 제 1 먹스회로(642)는 역이진화부(630)에 의해 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트이면, 디코딩 레지스터(652)로부터 입력되는 이전 비트의 범위 및 밸류 파라메터(range_P, value_P)가 다시 디코딩 레지스터(652)에 재설정되도록 제어한다. 반면에, 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트가 아니라면, 산술 디코더부(620)로부터 입력되는 현재 비트에 대한 범위 및 밸류 파라메터(range_N, value_N)가 디코딩 레지스터(652)에 저장되도록 제어한다.
제어부(640)의 제 2 먹스회로(644)는 레지스터부(650)의 인덱스 레지스터(654)로부터 입력되는 이전 비트의 컨텍스트 인덱스(CTX_Idx_P)와 컨텍스트 선택부(610)로부터 입력되는 현재 비트의 컨텍스트 인덱스(CTX_Idx_N) 중 하나를 역이진화부(630)로부터의 비트 판별신호(Last_bin)에 따라 선택하여, 선택된 컨텍스트 인덱스를 인덱스 레지스터(654)에 저장한다. 제 2 먹스회로(644)도 제 1 먹스회로(642)와 마찬가지로 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트이면, 레지스터부(650)의 인덱스 레지스터(654)로부터 입력되는 이전 비트에 대한 컨텍스트 인덱스(CTX_Idx_P)가 다시 인덱스 레지스터(654)에 재설정되도록 제어하고, 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트가 아니면, 컨텍스트 선택부(610)로부터 입력되는 현재 비트에 대한 컨텍스트 인덱스(CTX_Idx_N)가 인덱스 레지스터(654)에 저장되도록 제어한다.
제어부(640)의 제 3 먹스회로(646)는 산술 디코더부(620)로부터 입력되는 현재 비트의 컨텍스트(CTX_N)와 컨텍스트 레지스터(656)로부터 입력되는 이전 비트의 컨텍스트(CTX_P) 중 하나를 역이진화부(630)로부터의 비트 판별신호(Last_bin)에 따라 선택하여 컨텍스트 레지스터(656)에 저장한다. 즉, 제 3 먹스회로(646)는 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트이면, 컨텍스트 레지스터(656)로부터 입력되는 이전 비트의 컨텍스트(CTX_P)가 다시 컨텍스트 레지스터(656)에 재설정되도록 제어하고, 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트가 아니면, 산술 디코더부(620)로부터 입력되는 현재 비트에 대한 컨텍스트(CTX_N)가 컨텍스트 레지스터(656)에 저장되도록 한다.
제어부(640)의 제 4 먹스회로(648)는 인덱스 레지스터(654)로부터 입력되는 이전 비트의 컨텍스트 인덱스(CTX_Idx_P)에 따라 컨텍스트 레지스터(648)로부터의 이전 비트에 대한 컨텍스트(CTX_P)를 컨텍스트 선택부(610)로 입력한다.
레지스터부(650)는 현재 디코딩이 수행될 비트의 이전 비트에 대한 디코딩 파라메터들을 각각 저장하는 복수 개의 레지스터들로 구성된다. 이를 도 6을 참조하여 보다 상세히 설명하면, 레지스터부(650)는 디코딩 레지스터(652)와 인덱스 레지스터(654) 및 컨텍스트 레지스터(656)로 구성된다.
디코딩 레지스터(652)는 제어부(640)의 제 1 먹스회로(642)로부터 입력되는 디코딩 파라메터들을 저장하고, 산술 디코더부(620)에 의해 디코딩이 수행될 때, 저장된 디코딩 파라메터들을 산술 디코더부(620)와 제어부(640)로 출력한다. 즉, 디코딩 레지스터(652)는 현재 디코딩될 비트의 이전 비트에 대한 디코딩 파라메터들(range_P. value_P)을 저장하고, 산술 디코더부(620)에 의해 현재 비트에 대한 디코딩이 수행될 때, 저장된 이전 비트의 디코딩 파라메터들(range_P, value_P)을 산술 디코더부(620)와 제어부(640)의 제 1 먹스회로(642)로 출력한다.
인덱스 레지스터(654)는 제어부(640)의 제 2 먹스회로(644)로부터 입력되는 컨텍스트 인덱스를 저장하고, 산술 디코더부(620)에 의해 새로운 비트에 대한 디코딩이 수행될 때, 저장된 컨텍스트 인덱스(CTX_Idx_P)를 제 2 먹스회로(644) 및 제 4 먹스회로(648)로 출력한다. 즉, 인덱스 레지스터(654)는 현재 디코딩될 비트의 이전 비트에 대한 컨텍스트 인덱스(CTX_Idx_P)를 저장하고, 산술 디코더부(620)에 의해 현재 비트에 대한 디코딩이 수행될 때, 저장된 이전 비트의 컨텍스트 인덱스(CTX_Idx_P)를 제 2 먹스회로(644)의 입력으로 그리고, 제 4 먹스회로(648)의 제어신호로서 입력한다.
컨텍스트 레지스터(656)는 제 3 먹스회로(646)로부터 입력되는 컨텍스트를 저장하며, 산술 디코더부(620)에 의해 새로운 비트에 대한 디코딩이 수행될 때, 저장된 컨텍스트(CTX_P)를 제 3 먹스회로(646) 및 제 4 먹스회로(648)로 출력한다.
한편, H.264/AVC 표준에서는 구문 요소의 종류에 따라 MPS 및 LPS의 확률이 같은 경우, 컨텍스트 선택과정을 거치지 않고 바이패스 디코더(Bypass decoder)를 이용하여 디코딩을 수행한다. 이러한 구문 요소의 경우 디코딩시 컨텍스트가 필요하지 않고, 디코딩시의 연산식이 간단하므로 여러 비트를 한 번에 디코딩할 수 있다. 또한, 바이패스 모드인 경우, 인코딩시 이진화 스킴(binarization scheme)이 익스포넨셜 골룸 코드(Exp-Golomb Code)로 되어 있어 역이진화도 한번에 여러 비트에 대해 수행될 수 있다. 이러한 바이패스 디코더에서도 상기와 같은 본 발명의 디코딩 방법이 적용될 수 있다. 즉, 복수의 비트에 대한 디코딩을 수행하다가 해당 구문 요소의 마지막 비트가 디코딩되면, 이 마지막 비트에 대한 디코딩 파라메터들(range, value)로 업데이트해 주고, 스트립 버퍼에서 읽어오는 비트 옵셋을 변경해 주는 것으로 한 싸이클에 여러 비트를 디코딩하는 것이 가능하다. 도 8은 4비트씩 동시에 디코딩과 역이진화를 수행하는 내용 기반 적응적 이진 산술 디코더에서의 디코딩 과정을 보여주는 도면이다. 도 8에 보인 것처럼, 하나의 싸이클에서 동시에 4비트씩 디코딩이 수행한다. 또한, 역이진화 과정도 한 싸이클에 4비트씩 수행한다. 그리고, 도 3 내지 도 6에 보인 디코딩 방법을 응용하여 역이진화가 수행되는 4비트 중 해당 구문 요소의 마지막 비트가 검출되면, 그 마지막 비트에 대한 디코딩 파라메터들이 다음 구문 요소의 첫 번째 비트에 대한 디코딩시 사용될 수 있도록 업데이트함으로써, 이 후 다른 구문 요소에 포함되는 비트들에 대한 디코딩 오류를 방지할 수 있다.
도 9는 도 8과 같이 복수의 비트들에 대해 동시에 디코딩 및 역이진화를 수행하는 멀티비트 디코더의 실시예를 보여주는 도면이다. 도 9에서는 한 싸이클에 4비트씩 디코딩과 역이진화를 수행하는 멀티비트 디코더를 보여준다. 도 9를 참조하 면, 멀티비트 디코더는 크게 복수의 디코더들로 구성된 디코더부(900)와 멀티비트 역이진화부(910)로 구성된다.
디코더부(900)는 외부로부터 동시에 입력되는 복수의 비트들 중 첫 번째 비트(bin0, bin4,...)에 대한 디코딩을 수행하는 제 1 디코더(902), 두 번째 비트(bin1, bin5,...)에 대한 디코딩을 수행하는 제 2 디코더(904) 그리고, 세 번째 비트(bin2, bin6,...)에 대한 디코딩을 수행하는 제 3 디코더(906) 및 네 번째 비트(bin3, bin7,...)에 대한 디코딩을 수행하는 제 4 디코더(908)로 구성된다.
제 1 디코더(902)는 네 개의 비트들 중 첫 번째 비트에 대한 디코딩을 수행하여 디코딩된 이진값(bin_v1)을 멀티비트 역이진화부(910)로 입력한다. 그리고, 디코딩시 생성된 디코딩 파라메터들(range_N1, value_N1)을 제 2 디코더(904)로 입력한다.
제 2 디코더(904)는 제 1 디코더(902)로부터 입력되는 디코딩 파라메터(range_N1, value_N1)들을 이용하여 네 개의 비트들 중 두 번째 비트에 대한 디코딩을 수행하며 디코딩된 이진값(bin_v2)을 멀티비트 역이진화부(910)로 입력한다. 그리고, 디코딩 과정에서 생성된 새로운 디코딩 파라메터들(range_N2, value_N2)을 제 3 디코더(906)로 입력한다.
제 3 디코더(906)는 제 2 디코더(904)로부터 입력되는 디코딩 파라메터(range_N2, value_N2)들을 이용하여 네 개의 비트들 중 세 번째 비트에 대한 디코딩을 수행하며 디코딩된 이진값(bin_v3)을 멀티비트 역이진화부(910)로 입력한다. 그리고, 디코딩 과정에서 생성된 새로운 디코딩 파라메터들(range_N3, value_N3)을 제 4 디코더(908)로 입력한다.
제 4 디코더(908)는 제 3 디코더(906)로부터 입력되는 디코딩 파라메터(range_N3, value_N3)들을 이용하여 네 개의 비트들 중 네 번째 비트에 대한 디코딩을 수행하며 디코딩된 이진값(bin_v4)을 멀티비트 역이진화부(910)로 입력한다. 그리고, 디코딩 과정에서 생성된 새로운 디코딩 파라메터들(range_N4, value_N4)을 제 1 디코더(902)로 입력한다.
이상 제 1 내지 제 4 디코더(902, 904, 906, 908)에 의한 디코딩 동작은 앞서 언급한 것처럼, 바이패스 모드에서의 디코딩시 연산식이 간단하므로 빠른 연산이 가능하여 한 싸이클에 이루어질 수 있다.
멀티비트 역이진화부(910)는 제 1 내지 제 4 디코더(902, 904, 906, 908)로부터 입력되는 디코딩된 이진값들(bin_v1, bin_v2, bin_v3, bin_v4)을 역이진화하여 해당 구문 요소(SE_V)를 생성하고, 제 1 내지 제 4 디코더(902, 904, 906, 908)로부터 입력되는 이진값들이 해당 구문 요소의 마지막 비트인지를 각각 판별하여 마지막 비트인 경우, 마지막 비트의 디코딩에 의해 생성된 디코딩 파라메터들을 제 1 디코더(902)로 업데이트하여 입력하도록 제어신호(Last_bin)를 생성한다. 예를 들어, 세 번째 비트(bin 2)가 해당 구문 요소의 마지막 비트인 경우, 제 3 디코더(906)에서 출력되는 디코딩 파라메터들(range_N3, value_N3)을 제 1 디코더(902)로 되돌려 업데이트한다. 이와 같은 과정을 통해, 다음 구문 요소에 포함된 비트들의 디코딩 오류를 방지할 수 있다.
이상에서 본 발명의 내용 기반 적응적 이진 산술 디코더에 대해 실시예를 통 해 상세히 설명하였지만, 이는 일실시예에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 다양한 변화 및 응용이 가능하다.
상술한 바와 같이, 본 발명의 내용 기반 적응적 이진 산술 디코더는 재정규화 과정을 조건비교를 수행하지 않고 한번에 처리함으로써, 디코딩시 지연시간을 줄일 수 있다. 또한, 본 발명의 내용 기반 적응적 이진 산술 디코더는 여러 비트들의 디코딩 동작을 파이프라인으로 구현함으로써, 보다 빠른 디코딩 동작을 가능하게 하며, 이 때 발생될 수 있는 디코딩 오류도 차단할 수 있다.

Claims (39)

  1. 내용 기반 적응적 이진 산술 디코더에서의 디코딩 방법에 있어서,
    인코딩된 복수의 비트들에 대해 제1 디코딩 파라메터를 이용하여 비트 단위로 컨텍스트를 선택하는 제1단계;
    상기 선택된 컨텍스트와 상기 제1 디코딩 파라메터를 이용하여 산술 디코딩하고 디코딩된 이진값 및 제2 디코딩 파라메터를 생성하는 제2단계; 및
    상기 디코딩된 이진값을 역이진화하는 제3단계를 포함하되,
    상기 제1 내지 제3단계는 상기 복수의 비트들에 대해 파이프라인으로 수행되며, 상기 제3단계에서 역이진화가 수행중인 비트가 한 구문 요소의 마지막 비트인 경우, 상기 마지막 비트로부터 생성된 제2 디코딩 파라메터로 상기 디코더를 재설정함을 특징으로 하는 디코딩 방법.
  2. 제 1항에 있어서,
    상기 제2 디코딩 파라메터는 상기 제2단계에서 각각의 비트에 대해 생성됨을 특징으로 하는 디코딩 방법.
  3. 제 1항에 있어서,
    상기 제3단계는 역이진화가 수행중인 비트가 한 구문요소의 마지막 비트인지를 판별하는 단계;와
    역이진화가 수행중인 제1 비트가 상기 구문요소의 마지막 비트인 경우, 상기 제1 비트로부터 생성된 상기 제2 디코딩 파라메터로 상기 디코더를 재설정하고, 역이진화가 수행중인 상기 제1 비트가 상기 구문소요의 마지막 비트가 아닌 경우, 현재 제2단계에서 상기 제1 비트에 연속되는 제2 비트로부터 생성된 제2 디코딩 파라메터로 상기 디코더를 업데이트하는 단계를 포함하는 디코딩 방법.
  4. 제 1항에 있어서,
    상기 제1단계에서 이용하는 상기 제1 디코딩 파라메터는 이전 비트의 컨텍스트를 포함하는 디코딩 방법.
  5. 제 1항에 있어서,
    상기 제2단계에서 이용하는 상기 제1 디코딩 파라메터는 이전 비트의 범위 및 밸류 파라메터를 포함하는 디코딩 방법.
  6. 제 5항에 있어서,
    상기 제2단계는 각 비트별로 이전 비트의 범위 및 밸류 파라메터를 재정규화하여 새로운 범위 및 밸류 파라메터를 생성하는 재정규화 단계를 포함함을 특징으로 하는 디코딩 방법.
  7. 제 6항에 있어서,
    상기 재정규화 단계는 상기 이전 비트에 대한 범위 파라메터의 소정 자릿수 이하에서 '1'이 몇 번 나오는지를 판별하여 '1'이 하나인 경우, '1'을 출력하고 그렇지 않은 경우 '0'을 출력하는 제1 판별단계;와
    상기 범위 파라메터에서 '1'이 처음 나오는 것이 몇 번째인지를 판별하는 제2 판별단계;
    상기 제1 판별단계와 상기 제2 판별단계의 결과에 대한 합연산을 수행하는 연산단계; 및
    상기 연산 결과만큼 상기 이전 비트의 범위 및 밸류 파라메터를 좌로 쉬프트하여 새로운 범위 및 밸류 파라메터를 생성하는 단계를 포함함을 특징으로 하는 디코딩 방법.
  8. 내용 기반 적응적 이진 산술 디코더에 있어서,
    인코딩된 복수의 비트들에 대해 컨텍스트 선택과 디코딩 및 역이진화의 각 과정을 비트별로 연속하여 수행하는 파이프라인;
    이전 비트의 디코딩 파라메터를 저장하고, 이를 상기 파이프라인으로 입력하는 레지스터부; 및
    상기 파이프라인으로부터의 비트 판별신호에 따라 상기 파이프라인으로부터의 디코딩 파라메터와 상기 레지스터부로부터의 디코딩 파라메터 중 하나를 선택하여 상기 레지스터부로 입력하는 제어부로 구성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  9. 제 8항에 있어서,
    상기 디코딩 파라메터는 상기 파이프라인의 디코딩 과정에서 각 비트별로 생성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  10. 제 8항에 있어서,
    상기 비트 판별신호는 상기 파이프라인에 의해 현재 역이진화가 수행중인 비트가 한 구문 요소의 마지막 비트인지를 나타내는 신호임을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  11. 제 10항에 있어서,
    상기 비트 판별신호에 의해 현재 역이진화가 수행중인 비트가 한 구문요소의 마지막 비트로 판별되는 경우, 상기 제어부는 상기 레지스터부로부터 입력되는 이전 비트의 디코딩 파라메터로 상기 레지스터부를 재설정함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  12. 제 11항에 있어서,
    상기 레지스터부에 재설정되는 디코딩 파라메터는 상기 마지막 비트의 디코딩 파라메터임을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  13. 제 10항에 있어서,
    상기 비트 판별신호에 의해 현재 역이진화가 수행중인 비트가 한 구문요소의 마지막 비트가 아닌 경우, 상기 제어부는 상기 파이프라인으로 부터 입력되는 디코딩 파라메터를 상기 레지스터부로 입력함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  14. 제 8항에 있어서,
    상기 디코딩 파라메터는 각 비트별 디코딩 과정에서 생성되는 컨텍스트와 범위 및 밸류 파라메터임을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  15. 제 14항에 있어서,
    상기 파이프라인은 이전 비트의 컨텍스트를 이용하여 새로운 컨텍스트를 선택하는 컨텍스트 선택부;와
    이전 비트의 범위 및 밸류 파라메터와 상기 컨텍스트 선택부로부터 입력되는 컨텍스트를 이용하여 새로운 범위 및 밸류 파라메터와 디코딩된 이진값을 생성하는 산술 디코더부; 및
    상기 디코딩된 이진값을 역이진화하고, 현재 역이진화가 수행중인 비트가 한 구문요소의 마지막 비트인지를 판별하는 역이진화부로 구성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  16. 제 15항에 있어서,
    상기 산술 디코더부는 상기 이전 비트의 범위 및 밸류 파라메터를 이용하여 현재 비트에 대한 새로운 범위 및 밸류 파라메터를 생성하는 재정규화기를 포함함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  17. 제 16항에 있어서,
    상기 재정규화기는 이전 비트에 의해 생성된 범위 및 밸류 파라메터를 이용하여 현재 비트에 대한 범위 및 밸류 파라메터를 수학식(x = log2(2b-2/range) + 1 = b - 1 - round(log2range) 단, b는 상수이며, range는 이전 비트의 범위 파라메터, x는 쉬프트 횟수이다.)을 이용한 한 번의 연산동작으로 생성함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  18. 제 16항에 있어서,
    상기 재정규화기는 상기 이전 비트의 범위 파라메터에서 소정 자리의 비트 이하로 "1"이 하나인 경우 "1"을 출력하고, 그렇지 않은 경우 "0"을 출력하는 제 1 비트 검출기;
    상기 이전 비트의 범위 파라메터에서 "1"이 처음 나오는 것이 몇 번째인지를 출력하는 제 2 비트 검출기;
    상기 제 1 비트 검출기와 상기 제 2 비트 검출기의 출력에 대한 덧셈을 수행하는 덧셈기;
    상기 이전 비트의 범위 파라메터를 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 새로운 범위 파라메터를 생성하는 제 1 쉬프트 레지스터; 및
    상기 비트 스트림과 상기 이전 비트의 밸류 파라메터를 입력으로 하여 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 밸류 파라메터를 생성하는 제 2 쉬프트 레지스터로 구성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  19. 제 18항에 있어서,
    상기 제 1 비트 검출기는 앤드 게이트와 오어 게이트로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  20. 제 18항에 있어서,
    상기 제 2 비트 검출기는 우선순위 인코더(priority encoder)로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  21. 내용 기반 적응적 이진 산술 디코더에 있어서,
    이전 비트의 컨텍스트를 이용하여 비트 단위로 컨텍스트를 선택하는 컨텍스트 선택부;
    상기 컨텍스트 선택부로부터의 컨텍스트와 이전 비트의 범위 및 밸류 파라메터를 이용하여 비트 단위의 디코딩을 수행하고, 현재 비트에 대한 새로운 컨텍스트 와 범위 및 밸류 파라메터를 생성하는 산술 디코더부;
    상기 산술 디코더부에 의해 디코딩된 이진값에 대한 역이진화를 수행하여 구문 요소를 복원하고, 현재 역이진화가 수행된 비트가 해당 구문 요소의 마지막 비트인지를 판별하여 제어신호를 생성하는 역이진화부;
    상기 제어신호에 응답하여 상기 산술 디코더부에 의해 비트 단위로 생성되는 컨텍스트와 범위 및 밸류 파라메터와 이전 비트에 대한 컨텍스트와 범위 및 밸류 파라메터 중 하나를 선택하는 제어부; 및
    상기 제어부에 의해 선택된 비트의 디코딩 파라메터들로 업데이트되며, 상기 업데이트된 디코딩 파라메터들을 상기 제어부 및 컨텍스트 선택부로 재 입력하는 레지스터부를 포함하되,
    상기 제어부는 한 구문 요소의 마지막 비트에 대한 역이진화가 수행되면, 상기 마지막 비트에 대한 컨텍스트와 범위 및 밸류 파라메터를 상기 레지스터부에 입력하여 상기 레지스터부를 재설정함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  22. 제 21항에 있어서,
    상기 제어부는 상기 제어신호에 응답하여 상기 레지스터부로부터 입력되는 이전 비트의 범위 및 밸류 파라메터와 상기 산술 디코더부로부터 입력되는 현재 비트의 범위 및 밸류 파라메터 중 하나를 선택하여 상기 레지스터부로 입력하는 제 1 제어회로;
    상기 제어신호에 응답하여 상기 레지스터부로부터 입력되는 이전 비트의 컨텍스트와 상기 산술 디코더부로부터 입력되는 현재 비트의 컨텍스트 중 하나를 선택하여 상기 레지스터부로 입력하는 제 2 제어회로;
    상기 제어신호에 응답하여 상기 컨텍스트 선택부로부터 입력되는 컨텍스트 인덱스와 레지스터부로부터 입력되는 컨텍스트 인덱스 중 하나를 선택하여 상기 레지스터부로 입력하는 제 3 제어회로; 및
    상기 레지스터부로부터 입력되는 컨텍스트 인덱스에 제어되어 상기 레지스터부로부터 입력되는 컨텍스트를 상기 컨텍스트 선택부로 입력하는 제 4 제어회로를 포함함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  23. 제 22항에 있어서,
    상기 제 1 제어회로 내지 상기 제 4 제어회로는 먹스로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  24. 제 22항에 있어서,
    상기 레지스터부는 상기 제 1 제어회로로부터 입력되는 범위 및 밸류 파라메터들을 저장하고, 저장된 범위 및 밸류 파라메터들을 상기 제 1 제어회로와 상기 산술 디코더부로 입력하는 디코딩 레지스터;
    상기 제 2 제어회로로부터 입력되는 컨텍스트를 저장하고, 저장된 컨텍스트를 상기 제 2 제어회로 및 상기 제 4 제어회로로 입력하는 컨텍스트 레지스터; 및
    상기 제 3 제어회로로부터 입력되는 컨텍스트 인덱스를 저장하고, 저장된 컨텍스트 인덱스를 상기 제 4 제어회로의 제어신호로서 입력하는 인덱스 레지스터를 포함함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  25. 제 21항에 있어서,
    상기 산술 디코더부는 상기 레지스터부로부터 입력되는 범위 및 밸류 파라메터를 이용하여 현재 비트에 대한 새로운 범위 및 밸류 파라메터를 생성하는 재정규화기를 포함함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  26. 제 25항에 있어서,
    상기 재정규화기는 상기 레지스터부로부터 입력되는 범위 및 밸류 파라메터를 이용하여 현재 비트에 대한 범위 및 밸류 파라메터를 수학식(x = log2(2b-2/range) + 1 = b - 1 - round(log2range). 단, b는 상수이며, range는 이전 비트의 범위 파라메터, x는 쉬프트 횟수)을 통해 한 번의 연산동작으로 생성함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  27. 제 26항에 있어서,
    상기 재정규화기는 상기 레지스터부로부터 입력되는 범위 파라메터에서 소정 자리의 비트 이하로 "1"이 하나인 경우 "1"을 출력하고, 그렇지 않은 경우 "0"을 출력하는 제 1 비트 검출기;
    상기 레지스터부로부터 입력되는 범위 파라메터에서 "1"이 처음 나오는 것이 몇 번째인지를 출력하는 제 2 비트 검출기;
    상기 제 1 비트 검출기와 상기 제 2 비트 검출기의 출력에 대한 덧셈을 수행하는 덧셈기;
    상기 레지스터부로부터 입력되는 범위 파라메터를 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 새로운 범위 파라메터를 생성하는 제 1 쉬프트 레지스터; 및
    상기 레지스터부로부터 입력되는 밸류 파라메터를 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 밸류 파라메터를 생성하는 제 2 쉬프트 레지스터로 구성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  28. 제 27항에 있어서,
    상기 제 1 비트 검출기는 앤드 게이트와 오어 게이트로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  29. 제 27항에 있어서,
    상기 제 2 비트 검출기는 우선순위 인코더(priority encoder)로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더.
  30. H.264 구문 요소들 중 MPS(Most Probable Symbol) 및 LPS(Least Probable Symbol)의 확률이 같은 구문 요소에 대한 디코딩을 수행하는 멀티비트 CABAC(Context-based Adaptive Binary Arithmetic Coding) 디코더에 있어서,
    외부로부터 입력되는 복수의 비트들 각각에 응답하여, 맨 처음으로 디코딩 동작을 수행한 제 1 디코더, 이전에 디코딩 동작을 수행한 제 2 디코더, 현재 디코딩 동작을 수행하는 제 3 디코더, 그리고 다음에 디코딩 동작을 수행할 제 4 디코더를 포함하는 복수의 디코더를 포함하며, 상기 제 3 디코더는 외부로부터 입력되는 비트와 상기 제 2 디코더로부터 입력되는 이전 디코딩 파라메터를 이용하여 디코딩 동작을 수행하고, 디코딩 동작에 의해 생성된 현재 디코딩 파라메터를 제 1 및 제 4 디코더로 출력하는 산술 디코더부; 및
    상기 산술 디코더부로부터 출력되는 디코딩된 이진값들을 역이진화하고, 역이진화되는 비트들 중 한 구문 요소의 마지막 비트가 검출되면, 상기 마지막 비트에 의해 생성된 디코딩 파라메터가 상기 제 1 디코더에 저장되도록 제어하는 멀티비트 역이진화부를 포함하는 멀티비트 CABAC 디코더.
  31. 제 30항에 있어서,
    상기 제 1 디코더는 상기 복수의 디코더들 각각으로부터 입력되는 디코딩 파라메터들 중 상기 마지막 비트에 대한 디코딩 동작에 의해 생성된 디코딩 파라메터를 저장함을 특징으로 하는 멀티비트 CABAC 디코더.
  32. 제 30항에 있어서,
    상기 디코딩 파라메터는 비트별 범위 및 밸류 파라메터를 포함하는 멀티비트 CABAC 디코더.
  33. 내용 기반 적응적 이진 산술 디코더에서의 재정규화 과정을 수행하는 재정규화기에 있어서,
    상기 재정규화기는 이전 비트의 범위 파라메터에서 소정 자릿수 이하의 비트에서 '1'의 개수와 상기 범위 파라메터에서 처음 '1'이 나오는 비트의 자릿수를 이용하여 한 번의 연산동작으로 현재 비트에 대한 새로운 범위 및 밸류 파라메터를 생성함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더의 재정규화기.
  34. 제 33항에 있어서,
    상기 재정규화기는 이전 비트의 범위 파라메터에서 소정 자리의 비트 이하로 "1"이 하나인 경우 "1"을 출력하고, 그렇지 않은 경우 "0"을 출력하는 제 1 비트 검출기;
    상기 이전 비트의 범위 파라메터에서 "1"이 처음 나오는 것이 몇 번째인지를 출력하는 제 2 비트 검출기;
    상기 제 1 비트 검출기와 상기 제 2 비트 검출기의 출력에 대한 덧셈을 수행하는 덧셈기;
    상기 이전 비트의 범위 파라메터를 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 새로운 범위 파라메터를 생성하는 제 1 쉬프트 레지스터; 및
    상기 이전 비트의 밸류 파라메터를 상기 덧셈기의 연산 결과만큼 좌로 쉬프트시켜 현재 비트에 대한 밸류 파라메터를 생성하는 제 2 쉬프트 레지스터로 구성됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더의 재정규화기.
  35. 제 34항에 있어서,
    상기 제 1 쉬프트 레지스터 및 상기 제 2 쉬프트 레지스터에 의해 쉬프트되는 값은 연산식{x = log2(2b-2/range) + 1 = b - 1 - round(log2range) 단, b는 상수이며, range는 이전 비트의 범위 파라메터, x는 쉬프트 횟수}에 의해 획득되는 값과 동일함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더의 재정규화기.
  36. 제 34항에 있어서,
    상기 제 1 비트 검출기는 앤드 게이트와 오어 게이트로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더의 재정규화기.
  37. 제 34항에 있어서,
    상기 제 2 비트 검출기는 우선순위 인코더(priority encoder)로 구현됨을 특징으로 하는 내용 기반 적응적 이진 산술 디코더의 재정규화기.
  38. 내용 기반 적응적 이진 산술 디코더에서의 디코딩 방법에 있어서,
    비트별 컨텍스트를 선택하는 제1단계;
    상기 제1단계에서 선택된 컨텍스트를 이용하여 비트별 디코딩을 수행하는 제2단계;
    상기 제2단계에서 디코딩된 이진값들을 역이진화하여 구문 요소를 생성하는 제3단계를 구비하되,
    상기 제1 내지 제3단계는 복수의 비트들에 대해 파이프라인으로 수행되며, 상기 제3단계는 현재 역이진화가 수행되는 비트의 디코딩 파라메터들을 래치하는 단계;와
    상기 역이진화가 수행되는 비트가 한 구문 요소의 마지막 비트인지를 판별하는 단계; 및
    상기 역이진화가 수행되는 비트가 마지막 비트인 경우, 상기 래치한 디코딩 파라메터들을 상기 디코더에 재설정하는 단계를 포함함을 특징으로 하는 내용 기반 적응적 이진 산술 디코더에서의 디코딩 방법.
  39. 제 38항에 있어서,
    상기 디코딩 파라메터들은 비트별 컨텍스트와 범위 및 밸류 파라메터임을 특징으로 하는 내용 기반 적응적 이진 산술 디코더에서의 디코딩 방법.
KR20040060813A 2004-08-02 2004-08-02 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 KR100648258B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR20040060813A KR100648258B1 (ko) 2004-08-02 2004-08-02 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
US11/179,137 US7573951B2 (en) 2004-08-02 2005-07-12 Binary arithmetic decoding apparatus and methods using a pipelined structure
TW94123847A TWI320896B (en) 2004-08-02 2005-07-14 Binary arithmetic decoding apparatus and methods using a pipelined structure
EP20050254510 EP1624579A3 (en) 2004-08-02 2005-07-20 Apparatus and methods for binary arithmetic decoding using a pipelined structure
JP2005215847A JP2006054865A (ja) 2004-08-02 2005-07-26 パイプライン方式の二進算術デコーディング装置及び方法
CNA2005100893407A CN1735209A (zh) 2004-08-02 2005-08-02 使用流水线结构的二进制算术解码装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20040060813A KR100648258B1 (ko) 2004-08-02 2004-08-02 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더

Publications (2)

Publication Number Publication Date
KR20060012093A KR20060012093A (ko) 2006-02-07
KR100648258B1 true KR100648258B1 (ko) 2006-11-23

Family

ID=36077374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20040060813A KR100648258B1 (ko) 2004-08-02 2004-08-02 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더

Country Status (6)

Country Link
US (1) US7573951B2 (ko)
EP (1) EP1624579A3 (ko)
JP (1) JP2006054865A (ko)
KR (1) KR100648258B1 (ko)
CN (1) CN1735209A (ko)
TW (1) TWI320896B (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7221296B2 (en) * 2005-08-22 2007-05-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
JP2007074648A (ja) * 2005-09-09 2007-03-22 Matsushita Electric Ind Co Ltd Cabac復号化装置
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码***及方法
KR100717055B1 (ko) * 2005-11-18 2007-05-10 삼성전자주식회사 Cabac 복호기에서 복수의 이진 값들을 파이프라인방식에 의하여 복호화하는 방법 및 이를 위한 복호화 장치
JP2007300517A (ja) * 2006-05-02 2007-11-15 Sony Corp 動画像処理方法、動画像処理方法のプログラム、動画像処理方法のプログラムを記録した記録媒体及び動画像処理装置
US7262722B1 (en) * 2006-06-26 2007-08-28 Intel Corporation Hardware-based CABAC decoder with parallel binary arithmetic decoding
US7339507B1 (en) * 2006-09-13 2008-03-04 Jiun-In Guo Device for video decoding
KR100827107B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
JP4865509B2 (ja) * 2006-11-01 2012-02-01 キヤノン株式会社 復号装置及び復号方法
JP2008289125A (ja) * 2007-04-20 2008-11-27 Panasonic Corp 算術復号化装置及びその方法
US8782379B2 (en) 2007-09-27 2014-07-15 Qualcomm Incorporated H.264 video decoder CABAC core optimization techniques
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
US8542727B2 (en) * 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
JP4895396B2 (ja) * 2008-01-22 2012-03-14 キヤノン株式会社 画像復号化装置及び画像復号化方法
US7557740B1 (en) * 2008-04-18 2009-07-07 Realtek Semiconductor Corp. Context-based adaptive binary arithmetic coding (CABAC) decoding apparatus and decoding method thereof
JP4962400B2 (ja) * 2008-04-30 2012-06-27 ソニー株式会社 算術復号装置
US8138956B2 (en) 2008-06-02 2012-03-20 Mediatek Inc. CABAC encoder and CABAC encoding method
US7592937B1 (en) * 2008-06-02 2009-09-22 Mediatek Inc. CABAC decoding unit and method
US20100138618A1 (en) * 2008-12-03 2010-06-03 Vns Portfolio Llc Priority Encoders
JP2010278668A (ja) * 2009-05-27 2010-12-09 Sony Corp 符号化装置及び符号化方法、並びに復号装置及び復号方法
EP2293569A1 (en) 2009-08-31 2011-03-09 MediaTek, Inc CABAC decoding unit and method
CN102045558B (zh) * 2009-10-22 2012-09-19 鸿富锦精密工业(深圳)有限公司 熵解码方法
US9973768B2 (en) * 2010-03-16 2018-05-15 Texas Instruments Incorporated CABAC decoder with decoupled arithmetic decoding and inverse binarization
ITVI20100175A1 (it) * 2010-06-21 2011-12-22 St Microelectronics Pvt Ltd Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale
US8976861B2 (en) * 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US10123053B2 (en) 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
BR112014007494B1 (pt) 2011-09-29 2022-05-31 Sharp Kabushiki Kaisha Dispositivo de decodificação de imagem, método de decodificação de imagem, e dispositivo de codificação de imagem
DK2763414T3 (da) 2011-09-29 2020-11-30 Sharp Kk Billedafkodningsindretning og fremgangsmåde til billedafkodning til udførelse af konvertering af bi-forudsigelse til uni-forudsigelse
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
KR102293126B1 (ko) * 2012-01-20 2021-08-25 지이 비디오 컴프레션, 엘엘씨 변환 계수 코딩
CN102801974B (zh) * 2012-07-19 2014-08-20 西安电子科技大学 基于cabac的图像压缩熵编码器
US10009606B2 (en) * 2012-10-11 2018-06-26 Nvidia Corporation Low power context adaptive binary arithmetic decoder engine
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
US9912968B2 (en) * 2014-01-24 2018-03-06 Mediatek Inc. Decoding apparatus capable of controlling repetition number of scan procedure based on at least one syntax element decoding result and related method
CN104980749B (zh) * 2014-04-11 2018-04-24 扬智科技股份有限公司 算术编码的解码装置及方法
JP2017538338A (ja) * 2014-11-04 2017-12-21 サムスン エレクトロニクス カンパニー リミテッド 二進算術符号化/復号のための確率更新方法、及びそれを利用したエントロピー符号化/復号装置
US10113900B2 (en) 2016-04-19 2018-10-30 Rosemount Tank Radar Ab Field device with multiple protocol support
KR20180031944A (ko) * 2016-09-21 2018-03-29 삼성전자주식회사 비디오 디코더 및 이를 포함하는 전자 시스템
CN108206950B (zh) * 2016-12-19 2021-11-12 北京君正集成电路股份有限公司 一种码流长度计算方法及设备
CN107277553B (zh) * 2017-07-10 2020-10-27 中国科学技术大学 一种二元算术编码器
US11561797B2 (en) * 2019-08-19 2023-01-24 Ati Technologies Ulc Decompression engine for decompressing compressed input data that includes multiple streams of data
CN116301907A (zh) * 2023-05-24 2023-06-23 成都索贝视频云计算有限公司 解析结构体二进制数据的方法、设备、介质及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001136524A (ja) 1999-11-02 2001-05-18 Ricoh Co Ltd 圧縮伸長装置
JP2002033925A (ja) 2000-07-18 2002-01-31 Matsushita Graphic Communication Systems Inc 算術符号化・復号化方法および算術符号化・復号化装置
US20020175839A1 (en) 1999-10-29 2002-11-28 Thomas Frey Method and apparatus for a signal processing circuit

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295125A (en) * 1980-04-28 1981-10-13 International Business Machines Corporation Method and means for pipeline decoding of the high to low order pairwise combined digits of a decodable set of relatively shifted finite number of strings
US4899143A (en) * 1988-04-21 1990-02-06 Bell Communications Research, Inc. High capacity communication system over collision-type channels
JPH087664B2 (ja) * 1991-07-22 1996-01-29 富士通株式会社 磁気テープシステム
GB9506471D0 (en) * 1995-03-29 1995-05-17 Sgs Thomson Microelectronics Coding scheme for transmitting data
JP3247052B2 (ja) * 1996-09-02 2002-01-15 アイチップス・テクノロジー株式会社 画像データ変換処理方法及び装置
JP3406550B2 (ja) * 1999-12-28 2003-05-12 パナソニック コミュニケーションズ株式会社 算術符号化装置および算術復号化装置
JP3854849B2 (ja) * 2001-11-07 2006-12-06 富士通株式会社 データ伸長処理方法およびデータ伸長処理装置
CN1285216C (zh) * 2001-11-16 2006-11-15 株式会社Ntt都科摩 图像编码方法和装置、图像译码方法和装置
JP2003319391A (ja) 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
US6825782B2 (en) 2002-09-20 2004-11-30 Ntt Docomo, Inc. Method and apparatus for arithmetic coding and termination
US8165221B2 (en) * 2006-04-28 2012-04-24 Netapp, Inc. System and method for sampling based elimination of duplicate data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020175839A1 (en) 1999-10-29 2002-11-28 Thomas Frey Method and apparatus for a signal processing circuit
JP2001136524A (ja) 1999-11-02 2001-05-18 Ricoh Co Ltd 圧縮伸長装置
JP2002033925A (ja) 2000-07-18 2002-01-31 Matsushita Graphic Communication Systems Inc 算術符号化・復号化方法および算術符号化・復号化装置

Also Published As

Publication number Publication date
TWI320896B (en) 2010-02-21
KR20060012093A (ko) 2006-02-07
EP1624579A2 (en) 2006-02-08
TW200606660A (en) 2006-02-16
CN1735209A (zh) 2006-02-15
JP2006054865A (ja) 2006-02-23
EP1624579A3 (en) 2007-01-17
US7573951B2 (en) 2009-08-11
US20060023795A1 (en) 2006-02-02

Similar Documents

Publication Publication Date Title
KR100648258B1 (ko) 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
JP6492047B2 (ja) 動きベクトル差のエントロピー符号化
US6894628B2 (en) Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables
US9698820B2 (en) Method and arrangement for coding transform coefficients in picture and/or video coders and decoders and a corresponding computer program and a corresponding computer-readable storage medium
US7365660B2 (en) Method and device for decoding syntax element in CABAC decoder
US6900748B2 (en) Method and apparatus for binarization and arithmetic coding of a data value
US7777654B2 (en) System and method for context-based adaptive binary arithematic encoding and decoding
US7817864B2 (en) Coding apparatus and decoding apparatus
US7304590B2 (en) Arithmetic decoding apparatus and method
US8711019B1 (en) Context-based adaptive binary arithmetic coding engine
US7411529B2 (en) Method of decoding bin values using pipeline architecture and decoding device therefor
US7876240B2 (en) Arithmetic decoding method and device
US10791341B2 (en) Binary arithmetic coding with progressive modification of adaptation parameters
US10554988B2 (en) Binary arithmetic coding with parameterized probability estimation finite state machines
US11265561B2 (en) Method and apparatus for range derivation in context adaptive binary arithmetic coding
JP2009534886A5 (ko)
JP2009021775A (ja) 符号化装置及び符号化方法
JP2007074648A (ja) Cabac復号化装置
KR102109768B1 (ko) Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기
KR100672585B1 (ko) 비디오 압축 형식 신호의 복호방법
Chen et al. A memory-efficient cavlc decoding scheme for h. 264/avc

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091016

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee