KR101136212B1 - 최적화된 cabac 디코더 - Google Patents

최적화된 cabac 디코더 Download PDF

Info

Publication number
KR101136212B1
KR101136212B1 KR1020107009207A KR20107009207A KR101136212B1 KR 101136212 B1 KR101136212 B1 KR 101136212B1 KR 1020107009207 A KR1020107009207 A KR 1020107009207A KR 20107009207 A KR20107009207 A KR 20107009207A KR 101136212 B1 KR101136212 B1 KR 101136212B1
Authority
KR
South Korea
Prior art keywords
decoding
bins
range
cabac
register
Prior art date
Application number
KR1020107009207A
Other languages
English (en)
Other versions
KR20100075560A (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 콸콤 인코포레이티드
Publication of KR20100075560A publication Critical patent/KR20100075560A/ko
Application granted granted Critical
Publication of KR101136212B1 publication Critical patent/KR101136212B1/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/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)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Error Detection And Correction (AREA)

Abstract

H.264 비디오 디코딩을 위해 콘텍스트-기반 적응형 이진 산술 코딩(CABAC) 을 최적화하는 기술을 이용하는 디바이스가 제공된다. 디바이스는 명령들이 세트가 다수의 빈들을 동시적으로 디코딩하고 다수의 빈들이 디코딩된 후에 오프셋 레지스터 및 범위 레지스터를 재정규화하는 것을 실행하도록 동작하는 프로세싱 회로를 포함한다. 범위 레지스터 및 오프셋 레지스터는 32 또는 64 비트일 수 있다. 보다 큰 범위 레지스터의 사용은 범위 레지스터 충분한 비트가 있을 때 재정규화를 스킵할 수 있다.

Description

최적화된 CABAC 디코더{OPTIMIZED CABAC DECODER}
[0001] 본 발명은 일반적으로 비디오 디코딩 분야에 관한 것으로, 보다 특정하게는 H.264 비디오 디코딩에 대한 콘텍스트-기반 적응형 이진 산술 코딩(CABAC)을 최적화하기 위한 기술들에 관한 것이다.
[0002] H.264 메인 프로파일(main profile)을 지원하는데 있어, 콘텍스트-기반 적응형 이진 산술 코딩(CABAC)이 기술적 목표(challenge)이다. 이진 산술 코딩 프로세스의 기본적 사상은 반복적 간격 분할(recursive interval division)에 있다. 산술 디코딩 엔진 코어는 2개의 레지스터들을 보유한다. 제 1 레지스터는 9-비트를 갖는 범위(range) 레지스터이다. 제 2 레지스터는 정규(regular) 모드에서는 9-비트이고 바이패스(bypass) 모드에서는 10-비트인 오프셋(offset) 레지스터이다. 범위 레지스터는 현재 간격 폭의 트랙(track)을 유지한다. 오프셋은 비트-스트림(bit-stream)에서 발생되며 범위 내의 현재 위치를 지시한다. 빈(bin)이 디코딩될 때, 특정 빈을 디코딩하기 위해 범위는 콘텍스트(context)와 관련되는(depending on) 2개의 서브간격들로 분할된다. 빈이 결정된 후, 범위 및 오프셋은 업데이트된다. 하나의 빈이 디코딩된 후, 범위 및 오프셋은 다음 빈을 디코딩하기 위해 정밀도(precision)를 유지하도록 재정규화(renormalized)될 수 있다. 이는 9 비트 레지스터 범위의 최상위(most significant) 비트가 항상 1임을 보장한다. 따라서, CABAC 코어에서 큰 수의 비트 단위 연산(bit wise operation), 비트-스트림으로부터 판독되는 비트단위 및 빈번한 재정규화가 제공되며, 이들 모두는 계산상 비용이 많이 든다.
[0003] 따라서, H.264 비디오 디코딩에 대한 콘텍스트-기반 적응형 이진 산술 코딩(CABAC)을 최적화시키기 위한 기술들이 지속적으로 요구된다.
[0004] H.264 비디오 디코딩에 대한 콘텍스트-기반 적응형 이진 산술 코딩(CABAC)을 최적화시키기 위한 기술들이 개시된다. 일 구성에서, 다수의 빈들을 동시적으로 디코딩하고 다수의 빈들이 디코딩된 후에 오프셋 레지스터 및 범위 레지스터를 재정규화하기 위한 명령들의 세트를 구현하도록 동작하는 프로세싱 회로를 포함하는 디바이스가 제공된다. 또한, 디바이스는 프로세싱 회로에 결합된 메모리를 포함한다.
[0005] 또 다른 양상에서, 다수의 빈들을 동시적으로 디코딩하고 다수의 빈들이 디코딩된 후에 오프셋 레지스터 및 범위 레지스터를 재정규화하기 위한 명령들의 세트를 구현하도록 동작하는 프로세싱 회로를 포함하는 집적 회로가 제공된다. 또한, 집적 회로는 프로세싱 회로에 결합된 메모리를 포함한다.
[0006] 추가 양상에서, 컴퓨터로 하여금 다수의 빈들을 동시적으로 디코딩하게 하기 위한 명령들을 포함하는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 물건이 제공된다. 또한, 컴퓨터 프로그램 물건은 다수의 빈들이 디코딩된 후에, 오프셋 레지스터 및 범위 레지스터의 멀티-비트(multi-bit) 정렬을 위한 재정규화하기 위한 명령들을 포함한다.
[0007] 추가 양상들은 특히 첨부된 도면들을 참조할 때 하기 상세한 설명부로부터 보다 명확해 질 것이다.
[0008] 본 발명의 양상들 및 구성들은 도면들을 참조할 때 하기 개시되는 상세한 설명으로부터 보다 명확해질 것이며, 도면들에서 유사한 도면 부호들은 전반적으로 대응하는 엘리먼트들로 간주된다.
[0009] 도 1은 무선 디바이스의 일반적 블록 다이어그램을 도시한다.
[0010] 도 2a는 예시적 H.264 표준 범위 레지스터를 도시한다.
[0011] 도 2b는 예시적 H.264 표준 오프셋 레지스터를 도시한다.
[0012] 도 2c는 예시적 H.264 표준 MPS 경우를 도시한다.
[0013] 도 2d는 예시적 H.264 표준 LPS 경우를 도시한다.
[0014] 도 3은 하나의 빈에 대한 H.264 표준 산술 디코딩 프로세스의 샘플 (의사코드) 명령 세트를 도시한다.
[0015] 도 4는 H.264 표준 재정규화 프로세스의 흐름도를 도시한다.
[0016] 도 5는 H.264 표준 정규 디코딩 모드 프로세스의 흐름도를 도시한다.
[0017] 도 6은 H.264 표준 바이패스 디코딩 모드 프로세스의 흐름도를 도시한다.
[0018] 도 7은 H.264 표준 종료(terminate) 디코딩 프로세스의 흐름도를 도시한다.
[0019] 도 8a 및 8b는 변조된 범위 레지스터 및 오프셋 레지스터를 도시한다.
[0020] 도 8c는 도 8a 및 도 8b의 변조된 범위 레지스터 및 오프셋 레지스터를 사용하는 비디오 프로세서의 블록 다이어그램을 도시한다.
[0021] 도 9는 정규 디코딩 모드 프로세스의 흐름도를 도시한다.
[0022] 도 10a는 제 1 재정규화 프로세스의 흐름도를 도시한다.
[0023] 도 10b는 제 2 재정규화 프로세스의 흐름도를 도시한다.
[0024] 도 10c는 제 3 재정규화 프로세스의 흐름도를 도시한다.
[0025] 도 11은 바이패스 디코딩 모드 프로세스의 흐름도를 도시한다.
[0026] 도 12는 종료 디코딩 프로세스의 흐름도를 도시한다.
[0027] 도 13a는 접두사(prefix) EG 코드 디코딩 프로세스에 대한 샘플 (의사코드) 명령 세트를 도시한다.
[0028] 도 13b는 도 13a의 접두사 EG 코드 디코딩 프로세스의 범위 및 오프셋 관련 다이어그램을 도시한다.
[0029] 도 14a는 접미사(suffix) EG 코드 디코딩 프로세스에 대한 샘플 (의사코드) 명령 세트를 도시한다.
[0030] 도 14b는 도 14a의 접미사 EG 코드 디코딩 프로세스에 대한 범위 및 오프셋 관계 다이어그램을 도시한다.
[0031] 도 15a는 접두사 EGK 코드 디코딩 프로세스의 흐름도를 도시한다.
[0032] 도 15b는 접미사 EGK 코드 디코딩 프로세스의 흐름도를 도시한다.
[0033] 도 16a, 16b 및 16c는 CABAC 나머지(residual) 블록 구문(syntax) 배열을 도시한다.
[0034] 도면들에서의 이미지들은 예시를 위해 간략화된 것으로 스케일대로 도시된 것은 아니다. 이해를 돕기 위해, 도면들에서 공통되는 동일한 엘리먼트들을 표시하는데 있어, 필요한 경우, 이러한 엘리먼트들을 구별하기 위해 접미사들이 부가될 수 있다는 것을 제외하고, 가능한 동일한 참조 부호들이 사용되었다.
[0035] 첨부되는 도면들은 본 발명의 예시적 구성들을 예시하는 것으로, 다른 등가적인 유효 구성들에도 허용될 수 있는 본 발명의 범주를 제한하는 것으로 고려되어서는 안된다. 하나의 구성의 특징들 또는 단계들은 추가 언급 없이도 다른 구성들에 바람직하게 통합될 수 있다는 것이 인식될 것이다.
[0036] 본 명세서에서 사용되는 "예시적(exemplary)"이란 용어는 일례, 인스턴스 또는 예증으로서 제공되는(serving)"을 의미한다. 본 발명에 개시된 임의의 구성 또는 설계가 다른 구성들 또는 설계들에 대해 반드시 선호되게 또는 바람직하게 구성되는 것은 아니다.
[0037] 본 명세서에 개시된 기술들은 무선 통신, 컴퓨팅, 개인용 전자장치들 등에 이용될 수 있다. 하기에서는 무선 통신 기술에 대한 예시적 사용에 대해 개시된다.
[0038] 도 1은 무선 통신 시스템의 무선 디바이스(10)의 구성의 블록 다이어그램을 도시한다. 무선 디바이스(10)는 셀룰러 또는 카메라 전화, 단말, 핸드셋, PDA, 또는 일부 다른 디바이스일 수 있다. 무선 통신 시스템은 코드 분할 멀티플 액세스(CDMA) 시스템, 모바일 통신용 글로벌 시스템(GSM), 또는 일부 다른 시스템일 수 있다. 핸드셋은 셀룰러 전화, 무선 전화, 무선 통신 디바이스, 비디오 게임 콘솔, 무선-장착 PDA, 랩톱 컴퓨터, 또는 비디오-가능(video-enabled) 디바이스일 수 있다.
[0039] 무선 디바이스(10)는 수신 경로 및 전송 경로를 통해 양방향(bi-directional) 통신을 제공할 수 있다. 수신 경로 상에서, 기지국들에 의해 전송된 신호들은 안테나(12)에 의해 수신되며 수신기(RCVR)(14)에 공급된다. 수신기(14)는 수신된 신호를 조정 및 디지털화하며 추가의 프로세싱을 위해 샘플들을 디지털 섹션(20)에 공급한다. 전송 경로 상에서, 송신기(TMTR)(16)는 디지털 섹션(20)으로부터 전송되는 데이터를 수신하며, 데이터를 처리 및 조정하며, 안테나(12)를 통해 기지국들로 전송되는 변조된(modulated) 신호를 생성한다.
[0040] 디지털 섹션(20)은 다양한 프로세싱, 인터페이스 및 메모리 유니트들 이를 테면 예를 들어, 모뎀 프로세서(22), 비디오 프로세서(24), 제어기/프로세서(26), 디스플레이 프로세서(28), ARM/DSP(32), 그래픽 프로세싱 유니트(GPU)(34), 내부 메모리(36), 및 외부 버스 인터페이스(EBI)(38)를 포함한다. 모뎀 프로세서(22)는 데이터 전송 및 수신을 위한 프로세싱(이를 테면, 인코딩, 변조, 복조 및 디코딩)을 수행한다. 비디오 프로세서(24)는 캠코더, 비디오 플레이백(playback), 및 비디오 컨퍼런싱(conferencing)과 같은 비디오 애플리케이션들에 대한 비디오 콘텐츠(이를 테면, 스틸 이미지들, 무빙 비디오들, 및 무빙 텍스트들)에 대한 프로세싱을 수행한다. 제어기/프로세서(26)는 디지털 섹션(20) 내의 다양한 프로세싱 및 인터페이스 유니트들의 동작을 지시할 수 있다. 디스플레이 프로세서(28)는 디스플레이 유니트(30) 상의 비디오들, 그래픽들 및 텍스트들의 디스플레이를 원활하게 하기 위한 프로세싱을 수행한다. ARM/DSP(32)는 무선 디바이스(10)에 대한 다양한 형태들의 프로세싱을 수행할 수 있다. 그래픽 프로세싱 유니트(34)는 그래픽 프로세싱을 수행한다.
[0041] 본 명세서에 개시되는 기술들은 디지털 섹션(20)의 임의의 프로세서들, 이를 테면 비디오 프로세서(24)에 이용될 수 있다. 내부 메모리(36)는 디지털 섹션(20) 내의 다양한 유니트들에 대한 데이터 및/또는 명령들을 저장한다. EBI(38)는 버스 또는 데이터 라인 DL을 따라 디지털 섹션(20)(이를 테면, 내부 메모리(36))과 메인 메모리(40) 간의 데이터 전송을 원활하게 한다.
[0042] 디지털 섹션(20)은 하나 이상의 DSP들, 마이크로프로세서들, RISC들 등으로 구현될 수 있다. 또한, 디지털 섹션(20)은 하나 이상의 ASIC들 또는 일부 다른 형태의 집적회로(IC)들 상에 제조될 수 있다.
[0043] 본 명세서에 개시되는 기술들은 다양한 하드웨어 유니트들에서 구현될 수 있다. 예를 들어, 기술들은 ASIC들, DSP들, RISC들, ARM들, 디지털 신호 프로세싱 디바이스(DSPD)들, 프로그램가능 논리 디바이스(PLD)들, 필드 프로그램가능 게이트 어레이(FPGA)들, 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 및 다른 전자 유니트들에서 구현될 수 있다.
[0044] 도 2a는 예시적 H.264 표준 범위 레지스터(50)를 도시하며 도 2b는 예시적 H.264 표준 오프셋 레지스터(60)를 도시한다. 이진 산술 코딩 프로세스의 기본 사상은 반복적 간격 분할에 있다. 산술 디코딩 엔진 코어는 2개의 레지스터들을 유지한다. 제 1 레지스터는 9-비트를 갖는 범위 레지스터(50)이다. 제 2 레지스터는 정규(regular) 모드에서는 9-비트이고 바이패스(bypass) 모드에서는 10-비트인 오프셋(offset) 레지스터이다.
[0045] 도 2c는 전반적으로 참조 번호 50A로 표시된 예시적 H.264 표준 최대 확률 심볼(MPS;most probability symbol) 경우를 도시하며 도 2d는 전반적으로 참조 번호 50B로 표시된 예시적 H.264 표준 최소 확률 심볼(LSP) 경우를 도시한다. 범위 레지스터는 현재 간격 폭의 트랙을 유지한다. 오프셋은 비트-스트림으로부터 발생되며 범위 내의 현재 위치에 대한 포인트(point)이다. 하기 개시되는 다수의 식들 및 표현식들은 C 또는 C++ 컴퓨터 프로그래밍 언어와 유사한 구문(syntax)을 사용한다는 것을 주목해야 한다. 표현식들은 예시를 위한 것으로 상이한 구문을 갖는 다른 컴퓨터 프로그래밍 언어들로 표현될 수 있다.
[0046] 빈이 디코딩될 때, 범위는 특정 빈이 디코딩되도록 콘텍스트에 따라 2개의 서브간격들 rLPS(52) 및 rMPS(54)로 분할된다. 서브 간격들 rLPS(52) 및 rMPS (54)은 식(1) 및 식(2)로 정의된다.
Figure 112010027175568-pct00001
여기서, pLPS는 최소 확률 심볼의 확률이며, pMPS는 최대 확률 심볼의 확률이다. 오프셋에 해당하는 서브간격 rLPS(52) 및 rMPS(54)는 빈(bin)이 MPS 빈인지 또는 LPS 빈인지를 결정한다. 오프셋이 >= rMPS이면, 빈은 LPS 빈이다. 그렇지 않은 경우, 빈은 MPS 빈이다. 빈이 결정된 후, 범위 및 오프셋이 업데이트된다. pMPS 항(term)은 확률이다. 확률은 0 내지 1이내 이어야 한다. rMPS 항은 range*pMPS이다. MPS 및 LSP의 확률들의 합은 1이어야 한다.
[0047] 하기의 다양한 구성들에서, 흐름도 블록들은 도시된 순서로 수행되거나 또는 이러한 블록들 또는 이들의 부분들이 동시적으로, 병렬로, 혹은 다른 순서로 수행될 수 있다.
[0048] 도 3은 하나의 빈에 대한 H.264 표준 산술 디코딩 프로세스(100)의 샘플 (의사코드) 명령 세트를 도시한다. 명령 세트는 범위 레지스터(50) 및 오프셋 레지스터(60) 모두가 9비트인 것을 표시한다. 범위 레지스터(50) 구성 또한 표시된다. 명령 세트는 범위가
Figure 112010027175568-pct00002
이내인 것을 표시한다. 산술 디코딩 프로세스(100)는 요약되며(abbreviated) 범위가
Figure 112010027175568-pct00003
인지를 여부에 대한 결정이 이루어지는 명령에서 시작된다. 결정이 "아니오(No)"이면, 프로세스(100)는 종료된다. 그러나, 결정이 "예(Yes)"이면, 다음 명령들의 세트는
Figure 112010027175568-pct00004
이다. 명령문은 오프셋이
Figure 112010027175568-pct00005
인지를 확인(see)하기 위해 검사된다. 결정이 "예"인 경우, 빈은 LPS 경우이다. 다음 범위는 새로운 범위
Figure 112010027175568-pct00006
가 서브간격 rLPS(도 2d)로 설정되고 새로운 오프셋
Figure 112010027175568-pct00007
Figure 112010027175568-pct00008
로 설정되도록 업데이트된다.
[0049] 결정이 "아니오"이면, 빈은 MPS 경우이다. 다음 범위는 새로운 범위
Figure 112010027175568-pct00009
가 서브간격 rMPS으로 설정되고 새로운 오프셋
Figure 112010027175568-pct00010
이 offset과 같아지게 설정되도록 업데이트된다.
[0050] 도 4는 H.264 표준 재정규화 프로세스(150)의 흐름도를 도시한다. 하나의 빈이 디코딩된 후, 다음 빈을 디코딩하기 위해 정밀도를 유지하도록 범위 및 오프셋이 재정규화될 수 있다. 표준 재정규화 프로세스(150)는 도 2a에 표시된 것처럼, 9-비트 범위 레지스터(50)의 최상위 비트(MSB)가 항상 1이 되도록 보장한다. 표준 재정규화 프로세스(150)는 범위가
Figure 112010027175568-pct00011
인지에 대한 결정이 이루어지는 블록(152)으로 시작된다. 블록(152)에서, 범위의 값은 256(또는
Figure 112010027175568-pct00012
)와 비교된다. 결정이 "아니오"이면, 프로세스(150)는 종료된다. 그러나, 블록(152)에서의 결정이 "예"이면, 블록(152)은 블록(154)으로 진행된다. 블록(154)에서, 범위는 1(one) 비트 만큼 좌측 이동되며, range= range<<1로 표시된다. 마찬가지로, 오프셋은 1 비트 만큼 좌측 이동되며, offset = offset <<1로 표시된다. 또한, 오프셋은
Figure 112010027175568-pct00013
로 설정된다. 표현식
Figure 112010027175568-pct00014
은 1 비트 만큼 좌측 이동된
Figure 112010027175568-pct00015
레지스터들의 값을 표현한다. 이동(shift) 이후, 최하위(least significant)(가장 오른쪽) 비트는 0이다. 표현식
Figure 112010027175568-pct00016
는 비트스트림으로부터 1 비트를 판독하며 이러한 1 비트는 오프셋 레지스터(60)의 최하위(가장 오른쪽) 비트에 부가된다.
[0051] 블록(154)은 앞서 개시된 블록(152)으로 다시 순환(loop)된다. 블록들(152, 154)의 루프는 블록(152)에서의 결정이 재정규화 프로세스(150)를 완성했다는 "아니오"가 될 때까지 반복된다.
[0052] 도 5는 H.264 표준 정규 디코딩 모드 프로세스(200)의 흐름도를 도시한다. 표준 디코딩 프로세스(200)에서, 곱셈(multiplication)을 방지하기 위해, 상기 식(1)에 개시된 rLPS를 근사화시키기 위해 64x4 룩업 테이블(LUT)이 이용된다. 범위는 4개의 셀들로 9-비트 범위 레지스터(50)의 등가-세분화(equal-partition)에 의해 근사화된다. pLPS는 6-비트 콘텐츠 상태로 인덱싱된 64 양자화 값(quantized value)들로 근사화된다. 따라서, 블록(202)에서, rLPS는
Figure 112010027175568-pct00017
의 식(3)에 따라 계산되며, 여기서 ctxIdx는 프로세스(200)에 대한 입력으로, 콘텍스트 상태에 대한 인덱스를 표현하며 상태 정보를 제공하며, range >> 6는 6 비트 만큼의 우측 이동 또는 26 분할을 표현하며;
Figure 112010027175568-pct00018
의 결과는 LUT를 어드레스하는데 이용되는 범위 레지스터(50)에서 비트 7-6(MSB 이후 2 비트)를 추출한다. 표현식
Figure 112010027175568-pct00019
는 rLPS를 얻기 위해 64x4 LUT에서 사용되는 0 내지 63의 값을 취할 수 있다. 예를 들어, 범위가
Figure 112010027175568-pct00020
이면, 범위는
Figure 112010027175568-pct00021
내지
Figure 112010027175568-pct00022
이내일 것이며,
Figure 112010027175568-pct00023
는 범위의 "xx"를 얻기 위해 사용된다. 표현식 &는 비트단위(bitwise) AND 함수이다.
[0053] 블록(202)에서, rMPS는 하기 식(4)
Figure 112010027175568-pct00024
에 따라 계산되며, 여기서 rLPS는 식(3)에서 계산된다.
[0054] 블록(202)은
Figure 112010027175568-pct00025
인지에 대한 결정이 이루어지는 블록(204)으로 진행된다. 결정이 "예"이면, 블록(204)은 빈, 범위 및 오프셋이 하기 식들 (5), (6), (7)
Figure 112010027175568-pct00026
에 따라 계산되는 블록(206)으로 진행되며, 여기서,
Figure 112010027175568-pct00027
는 0 또는 1의 값을 취할 수 있고, "!"는 비트 플립(bit flip)을 의미한다.
Figure 112010027175568-pct00028
항은 함수에 대한 입력 파라미터이며, 이는 상태 및
Figure 112010027175568-pct00029
정보를 제공한다.
Figure 112010027175568-pct00030
항은 MPS 경우에서의 빈 출력을 나타낸다.
[0055] 블록(206)은
Figure 112010027175568-pct00031
가 0인지에 대한 결정이 이루어지는 블록(208)으로 진행된다. 블록(208)에서의 결정이 "예"이면, 블록(208)은
Figure 112010027175568-pct00032
Figure 112010027175568-pct00033
로 할당되는 블록(210)으로 진행된다. 블록(210)은 블록(212)으로 진행된다. 부가적으로, 블록(208)에서의 결정이 "아니오"이면, 블록(208)은 블록(212)으로 진행된다. 블록(212)에서,
Figure 112010027175568-pct00034
Figure 112010027175568-pct00035
로 할당된다. 각각의 빈이 디코딩된 후에, 각각의
Figure 112010027175568-pct00036
와 연관된
Figure 112010027175568-pct00037
는 업데이트될 것을 요구한다.
Figure 112010027175568-pct00038
항들은 단지 상태 전이(state transition)를 계산하기 위해 H.264 표준에 정의된 2 LUT들이다.
[0056] 다시 블록(204)으로 돌아와, 블록(204)에서의 결정이 "아니오"이면, 블록(204)은 빈 및 범위가 하기 식들(8) 및 (9)에 따라 계산되는 블록(214)으로 진행된다.
Figure 112010027175568-pct00039
[0057] 블록(214)은
Figure 112010027175568-pct00040
Figure 112010027175568-pct00041
로 할당되는 블록(216)으로 진행된다. 블록들(212, 216)은 재정규화 프로세스(150)가 발생되는 블록(218)으로 진행된다. 블록(218)은 프로세스(200)를 종결한다.
[0058] 도 6은 H.264 표준 바이패스 디코딩 모드 프로세스(250)의 일반적 흐름도를 도시한다. 바이패스 디코딩 모드 프로세스에 대해, H.264 표준 바이패스 디코딩 모드 프로세스(250)에서, 오프셋은 1 비트 만큼 좌측 이동되며 1 비트는 비트 스트림으로부터 판독된다. 빈이 1인지 또는 0인지를 결정하기 위해 범위가 새로운 오프셋과 비교된다.
[0059] 표준 바이패스 디코딩 모드 프로세스(250)는 오프셋이
Figure 112010027175568-pct00042
로 설정되는 블록(252)에서 시작되며, 여기서, <<1은 2씩의 곱 또는 1 만큼의 좌측 이동을 표현한다. 또한, 오프셋은
Figure 112010027175568-pct00043
로 설정된다. 블록(252)은 오프셋이
Figure 112010027175568-pct00044
인지에 대한 결정이 이루어지는 블록(254)으로 진행된다. 결정이 "예"이면, 블록(254)은 하기 식들(10), (11)에 따라 빈 및 오프셋이 계산되는 블록(256)으로 진행된다.
Figure 112010027175568-pct00045
[0060] 결정이 "아니오"이면, 블록(254)은 빈이 제로(0)로 설정되는 블록(258)으로 진행된다. 블록들(256, 258)은 프로세스(250)를 종료한다. 빈(bin) 항은 비트(bit)와 같다는 것을 주목해야 한다.
[0061] 도 7은 H.264 표준 종료 디코딩 프로세스(300)의 흐름도를 도시한다.
Figure 112011075824181-pct00046
및 I-펄스 코드 변조
Figure 112011075824181-pct00047
모드를 나타내는 빈이 디코딩될 때, 표준 종료 디코딩 프로세스(300)에 대한 특정 디코딩 루틴이 호출된다. 표준 종료 디코딩 프로세스(300)는 범위가
Figure 112011075824181-pct00048
만큼 감소되는 블록(302)에서 시작된다. 블록(302)은 오프셋이
Figure 112011075824181-pct00049
인지에 대한 결정이 이루어지는 블록(304)으로 진행된다. 블록(304)에서의 결정이 "예"이면, 블록(306)에서 빈은 1로 설정된다. 그러나, 블록(304)에서의 결정이 "아니오"이면, 블록(304)은 빈이 0으로 설정되는 블록(308)으로 진행된다. 블록(308)은 재정규화 프로세스(150)(도 4)가 수행되는 블록(310)으로 진행된다. 블록들(306, 310)은 H.264 표준 종료 디코딩 프로세스(300)를 종료한다.
[0062] CABAC 초기 스테이지 동안, 범위 레지스터(50)(도 2a)는
Figure 112010027175568-pct00050
로 설정되며, 초기 오프셋 레지스터(60)를 설정하도록 9 비트가 비트스트림으로부터 판독된다.
[0063] 앞서 쉽게 볼 수 있듯이, 9 비트는 범위 및 오프셋 모두를 표현하는데 이용된다. 따라서, CABAC 코어 프로세스들에서의 큰 수의 비트단위 연산들이 제공된다.
[0064] H.264 표준 정규 디코딩 모드 프로세스(200)(도 5)에서, LPS 경우일 때, LPS 확률은 <0.5이기 때문에 새로운 범위는 < 0x100이다. 따라서,
Figure 112010027175568-pct00051
를 유도하기 위해 재정규화가 요구된다. 새로운 예시적 구성에서, 루프를 사용하는 대신 요구되는 좌측 이동의 양을 계산하기 위해
Figure 112010027175568-pct00052
명령이 이용된다. MPS 경우일 때, MPS 확률은
Figure 112010027175568-pct00053
이기 때문에, 새로운 범위는 0x080 내지
Figure 112010027175568-pct00054
이다. 따라서, 대부분의 1 좌측 이동은 최상위 비트(MSB)를 1로 유도하기 위한 재정규화에 대해 요구한다. 동시에, 오프셋은 동일한 양만큼 좌측 이동되며 이를 채우기 위해 비트 스트림으로부터 새로운 비트들이 판독된다.
[0065] 또한, H.264 표준 바이패스 디코딩 모드 프로세스(250)에서, 오프셋은 항상 1 만큼 좌측 이동되며 비트스트림으로부터 1 비트가 판독된다. 이는 계산적으로 비용이 많이 드는 비트 스트림으로부터의 비트 판독 및 빈번한 재정규화를 요구한다.
[0066] 도 8a 및 도 8b는 예시적 구성의 변조된 범위 레지스터(400) 및 오프셋 레지스터(410)를 도시한다. 범위 레지스터(400) 및 오프셋 레지스터(410)는 32 또는 64 비트일 수 있다. 예시를 위해, 본 발명은 32 비트 범위 레지스터(400) 및 오프셋 레지스터(410)의 구현예를 개시한다.
[0067] CABAC 코어 초기 스테이지 동안, 범위 레지스터(400)는
Figure 112010027175568-pct00055
로 설정되며, 오프셋 레지스터(410)는 비트 스트림으로부터 판독되는 제 1 4 바이트(bytes)로 설정되어야 하며, 이는 CABAC 부분 비트-스트림의 착수(starting) 비트 위치가 바이트-정렬(byte-aligned)되기 때문이다.
[0068] 도 8a에 도시된 것처럼, 범위 레지스터(400)에는 다수의 부분(part)들이 포함된다. 예시적 구성에서, 32 비트는 리딩(leading) 제로 부분(402), 유효(effective) 9-비트 부분(404), 및 트레일링(trailing) 제로 부분(406)으로 분할된다. bitpos(비트 위치)는 리딩 제로 부분(402)에서 리딩 제로 비트들의 수로 표시되며
Figure 112010027175568-pct00056
명령을 사용하여 계산된다. 32 비트 구현예에서의 bitpos는 11 비트이다. 트레일링 제로 부분(406)에서의 트레일링 제로들의 수 (32-9-bitpos) = (23 - bitpos)이다. 범위 레지스터(400)의 적어도 하나의 부분에서 비트들의 수는 가변적이다.
[0069] 최상위 비트(MSB)로부터 제 1 비트 1이후 2(two) 비트가 범위 레지스터(400)로부터 추출되며 rLPS를 조사(look up)하는데 이용된다. 조사된 값은 범위 레지스터(400)의 유효 9-비트 부분(404)과 정렬되도록 (23 - bitpos) 만큼 좌측 이동된다. 나머지 알고리즘은 보다 효율적인 재정규화가 사용된다는 것을 제외하고 거의 동일하다. 범위가 0x100 미만일 때, 범위 및 오프셋은 24비트(3바이트) 만큼 좌측 이동되며, 3 엑스트라(extra) 바이트가 비트스트림으로부터 판독되며 오프셋 레지스터(410)에 첨부된다. 따라서, 모든 비트-스트림 액세스는 바이트-기반(byte-based)이다. 이러한 예시적 구성은 단지 예를 위한 예이다. 또한, 32 비트 대신, 보다 큰 또는 보다 작은 비트가 사용될 수 있다. 또한, 본 발명의 설명은 8비트인 바이트를 개시하지만, 본 발명에 개시되는 바이트 배열들 대신 임의의 수의 다수의 비트가 반복 루프 없이 재정규화 프로세스에 이용될 수 있다.
[0070] 도 8c는 프로세서 회로(24A) 및 디코더 엔진(24B)을 갖는 비디오 프로세서(24)의 블록 다이어그램을 도시한다. 디코더 엔진(24B)은 범위 레지스터(400) 및 오프셋 레지스터(410)를 갖는다. 비디오 프로세서(24)는 rLPS에 대한 룩업-테이블(LUT)(420)과 통신한다. 박스(420)는 비디오 프로세서(24)의 내부에 또는 비디오 프로세서(24)의 외부에 있을 수 있다는 것을 표시하기 위해 점선으로 도시된다. 비디오 프로세서(24)는 하기 개시되는 프로세스들을 실행한다.
[0071] 도 9는 정규 디코딩 모드 프로세스(450)의 흐름도를 도시한다. 정규 디코딩 모드 프로세스(450)는 정규 디코딩 모드 프로세스(200)(도 5)와 유사하다. 주요 차이점은 블록들(452, 460)을 포함한다는 것이다. 블록(452)에서, bitpos는
Figure 112010027175568-pct00057
로 설정된다. 또한, rLPS는 하기 식(12)
Figure 112010027175568-pct00058
에 따라 계산되며, 여기서 ctxIdx는 프로세스(450)에 대한 입력이며, 콘텍스트 상태에 대한 인덱스를 나타내며 상태 정보를 제공하고;
Figure 112010027175568-pct00059
의 결과는 리딩 1 이후 2 비트를 추출한다. 표현식
Figure 112010027175568-pct00060
은 범위와의 정렬에 이용된다. 표현식
Figure 112010027175568-pct00061
은 rLPS를 얻기 위해 64x4 LUT에서 사용되는 0 내지 63의 값을 취할 수 있다.
[0072] 도 9에서, 블록들(204, 206, 208, 210, 212, 214, 216)은 도 5에서의 동일한 부호의 블록들과 대응된다. 따라서, 이후 추가의 논의가 필요없다. 그러나, 도 5에서 212의 재정규화 블록은 도 10a의 재정규화 프로세스(500)로 대체된다.
[0073] 도 10a는 제 1 재정규화(재정규화1) 프로세스(500)의 흐름도를 도시한다. 제 1 재정규화 프로세스(500)는 범위가 <0X100인지 여부에 대한 결정이 이루어지는 블록(502)에서 시작된다. 결정이 "아니오"이면, 프로세스(500)는 종료된다. 그러나, 블록(502)에서의 결정이 "예"이면, 블록(502)은 블록(504)으로 진행된다. 블록(504)에서, 범위는 24 비트 만큼 이동되며 range = range<<24로 표시된다. 마찬가지로, 오프셋은 24 비트 만큼 이동되며 offset = offset <<24로 표시된다. 또한, 오프셋은
Figure 112010027175568-pct00062
로 설정된다.
[0074] 따라서, 오프셋이 24 비트 만큼 좌측 이동된 후, 오프셋 레지스터(410)의 가장 우측 24 비트는 모두 0이다. 다음, 비트 스트림으로부터 3 바이트(24 비트)가 판독되며, 이는 오프셋 레지스터(410)에 부가된다. 볼 수 있듯이, 제 1 재정규화(재정규화1) 프로세스(500)는 반복 루프 동작 없이 동시에 레지스터의 멀티-비트 정렬을 수행한다. 예시적 구성에서, 범위 레지스터(400)의 멀티-비트 정렬은 바이트 간격으로 이루어진다.
[0075] 도 10b는 제 2 재정규화(재정규화2) 프로세스(600)의 흐름도를 도시한다. 제 2 재정규화 프로세스(600)는 범위가 <0X200인지에 대한 결정이 이루어지는 블록(602)에서 시작된다. 결정이 "아니오"이면, 프로세스(600)는 종료된다. 그런, 블록(602)에서의 결정이 "예"이면, 블록(602)은 블록(604)으로 진행된다. 블록(604)에서, 범위는 16 비트 만큼 이동되며, range = range<<16로 표시된다. 마찬가지로, 오프셋은 16비트 만큼 이동되며, offset = offset<<16로 표시된다. 또한, 오프셋은
Figure 112010027175568-pct00063
로 설정된다. 따라서, 오프셋이 16 비트 만큼 좌측 이동된 후에, 오프셋 레지스터(410)의 가장 우측 16 비트는 모두 0이다. 다음, 비트 스트림으로부터 2 바이트(16 비트)가 판독되며, 이는 오프셋 레지스터(410)에 부가된다.
[0076] 도 1Oc는 제 3 재정규화(재정규화3) 프로세스(700)의 흐름도를 도시한다. 제 3 재정규화 프로세스(700)는 범위가 <0X1000000인지 여부에 대한 결정이 이루어지는 블록(702)에서 시작된다. 결정이 "아니오"이면, 프로세스(700)는 종료된다. 그러나, 블록(702)에서의 결정이 "예"이면, 블록(702)은 블록(704)으로 진행된다. 블록(704)에서, 범위는 8 비트만큼 이동되며, range = range<<8로 표시된다. 마찬가지로, 오프셋은 8비트만큼 이동되며, offset = offset<<8로 표시된다. 또한, 오프셋은
Figure 112010027175568-pct00064
로 설정된다. 따라서, 오프셋이 8비트만큼 좌측 이동된 후에, 오프셋 레지스터(410)의 가장 우측 8비트는 모두 0이다. 다음, 비트 스트림으로부터 1 바이트(8 비트)가 판독되며, 이는 오프셋 레지스터(410)에 부가된다.
[0077] 도 11은 바이패스 디코딩 모드 프로세스(800)의 흐름도를 도시한다. 바이패스 디코딩 모드 프로세스(800)에서, 범위는 1만큼 우측으로 이동되며 오프셋 레지스터(410)와 비교된다. 따라서, 제 2 재정규화 프로세스(600)는 블록(802)에서 먼저 시작된다. 이는 범위 및 오프셋 레지스터들(400, 410)에서 적어도 10 비트가 제공되게, 또는 우측 이동 이전에 범위가 >=0x200인 것을 보장한다. 블록(802)은 범위가 range >>1로 설정되는 블록(804)으로 진행된다.
[0078] 도 11에서, 블록들(254, 256, 258)은 도 6에서의 동일한 부호 블록들과 대응된다. 따라서, 추가 논의는 필요없다.
[0079] 도 12는 종료 디코딩 프로세스(900)의 흐름도를 도시한다. 종료 디코딩 프로세스(900)는 bitpos가
Figure 112010027175568-pct00065
로 설정되고 범위가
Figure 112010027175568-pct00066
만큼 감소되게 설정되는 블록(900)에서 시작된다. 블록(902)은 오프셋이 >= range인지에 대한 결정이 이루어지는 블록(304)으로 진행된다.
[0080] 도 12에서, 블록들(304, 306, 308)은 도 7에서의 동일 부호 블록들과 대응된다. 따라서, 추가 논의는 필요없다. 도 7처럼, 블록(308) 이후, 정규화가 이루어진다. 그러나, 도 12에서는, 도 10a의 제 1 정규화 프로세스(500)가 블록(910)에서 사용되며, 블록(910)은 블록(308)으로 진행된다. 블록들(306, 910)은 종료 디코딩 프로세스(900)를 종료한다.
바이패스 모드에 대한 다중 심볼 디코딩
[0081] 바이패스 디코딩 모드 프로세스(800)는 2개의 경우, 즉 사인(sign) 또는 지수 골롬브 이진화(EG) 코드에 적용된다. 바이패스 빈이 사인(sign)인 경우, 각각의 모션 벡터 차(mvd) 또는
Figure 112010027175568-pct00067
에 대해 단지 하나의 바이패스 빈이 디코딩된다. EG 코드는 단지 절대 모션 벡터 차(
Figure 112010027175568-pct00068
) 또는
Figure 112010027175568-pct00069
의 빈 스트링들의 접미사(suffix)로서 표현된다.
Figure 112010027175568-pct00070
Figure 112010027175568-pct00071
를 갖는 빈들 만이 EG 코드의 접미사를 포함한다. 표 1은
Figure 112010027175568-pct00072
에 EOKS 접두사(prefix) 및 접미사를 갖는 빈 스트링을 나타낸다. 표 2는
Figure 112010027175568-pct00073
에 대한 접두사 및 접미사를 갖는 빈 스트링을 나타낸다.
Figure 112010027175568-pct00074
항은 변환(transform) 계수 레벨로부터 산출되며 abs는 절대값을 나타낸다. 표 3은 EG 코드 접두사 및 접미사를 요약한다.
[0082] 비트 레이트(bit rate)가 증가함에 따라(양자화 단계 QP가 감소되고, 나머지(residual) 계수 레벨이 증가함에 따라), 나머지 계수 디코딩이 비례적으로 증가될 것으로 예상되며, 이는
Figure 112010027175568-pct00075
의 EG 코드에서 대부분의 증가가 이루어지기 때문이다. 소프트웨어 구현예에서, 동시에 다수의 빈들을 디코딩함으로써 EG 디코딩을 개선시키는 것은 중요하다. 하드웨어 구현예에서, 하드웨어(HW)가 다수의 빈들이 1 주기(cycle)내에서 디코딩될 수 있도록 설계되는 경우, 이는 임의의 비트-레이트 비트스트림들의 CABAC 디코딩에 대한 상한(upper bound)이 될 수 있다. 콘텍스트가 바이패스 모드에 수반되지 않기 때문에, 32 비트 범위 및 오프셋 레지스터의 사용은 다수의 바이패스 빈 디코딩을 원샷(one shot)으로 가능하게 한다. EC 코드 및 나머지 계수 레벨 항은 증가하며 나머지 계수 디코딩은 H.264 표준에 공지된다. "원샷(one shot)"이란 용어는 하나씩 디코딩되는 대신, 코드워드(codeword)의 모든 비트들이 동시에 디코딩되는 것을 의미한다. 본 발명의 설명을 통해 알 수 있듯이, 예시적 구성은 EG 코드 디코딩을 가속시킬 수 있다.
Figure 112010027175568-pct00076
Figure 112010027175568-pct00077
Figure 112010027175568-pct00078

Figure 112010027175568-pct00079
Figure 112010027175568-pct00080
EG 코드 접두사 및 접미사
EG 접미사에서의 비트 수 EG 접두사에서의 비트 수
EG 코드 접두사 EG0 EG3 EG0 EG3
0 NON 3 0 0
10 1 4 1 = 0b 1 8 = 0b 1 0 0 0
110 2 5 3 = 0b 1 1 24 = 0b 1 1 0 0 0
1110 3 6 7 = 0b 1 1 1 56 = 0b 1 1 1 0 0 0
... ... ... ... ...
[0083] 표 1 및 표 2에 도시된 것처럼, EG 코드는 접두사 및 대부분의 경우에서 접미사를 포함한다. 접두사는 1진(unary) 코딩된다. 접미사에서 빈들의 수는 접두사에 의해 결정된다. 표 3에 특정된 하기 실시예로써, EG 코드 접두사가 "10"이면, EGO/EG3 접미사에서 비트들의 수는 표 3의 2번째 로우(row)에서 특정된 것처럼 1/4이다. 표 3은 EG0 코드 및 EG3 코드의 접두사 및 접미사를 요약한다. 이론적으로, 접두사/접미사 부분은 도 13a 및 도 14a에서 처럼 디코딩될 수 있다.
[0084] 도 13a는 접두사 EG 코드 디코딩 프로세스(1000)에 대한 샘플 명령 세트를 도시한다. 도 13b는 도 13a의 접두사 EG 코드 디코딩 프로세스의 범위 및 오프셋 관계를 도시한다. 프로세스(1000)에 대한 샘플 명령 세트는 오프셋이 임계치 세트(T1, T2, T3, T4) 미만인지에 대해 평가하며, 여기서 Tl은 범위의 1/2이며; T2는 범위의 3/4이며; T3는 범위의 7/8이며; T4는 범위의 15/16이다. 오프셋이 T1 미만이면, 범위는 1 만큼 우측 이동되며, 비트 0이 리턴된다. 오프셋이 T2 미만( offset = offset - Tl)이면, 범위는 2만큼 우측 이동되며 비트 10이 리턴된다. 오프셋이 T3 미만이면, 오프셋은 차감되며 T2로 설정되고 범위는 3만큼 우측 이동되며 비트 110이 리턴된다. 오프셋이 T4 미만이면, 오프셋이 차감되고 T3로 설정되고 범위는 4만큼 우측 이동되며 비트 1110이 리턴된다.
[0085] 도 13b에서, Tl, T2, T3, T4에서의 오프셋 값들이 범위와 관련하여 도시된다.
[0086] 도 14a는 접미사 EG 코드 디코딩 프로세스(1010)에 대한 샘플 명령 세트를 도시한다. 도 14b는 도 14a의 접미사 EG 코드 디코디 프로세스에 대한 범위 및 오프셋 관계를 도시한다. 도 14a는 접미사 EG 코드 디코딩 프로세스(1010)에 대한 샘플 명령 세트를 도시한다. 프로세스(1010)에 대한 샘플 명령 세트는 오프셋이 임계치 세트(Tl, T2, T3, T4, T5, T6, T7) 미만인지에 대해 평가하며, 여기서 Tl은 범위의 1/8이며; T2는 범위의 2/8이며; T3는 범위의 3/8이며; T4는 범위의 4/8이며; T5는 범위의 5/8이며; T6는 범위의 6/8이며; T7는 범위의 7/8이다. 오프셋이 T1 미만이면, 비트 000가 리턴된다. 오프셋이 T2 미만이면(offset = offset - Tl), 비트 001가 리턴된다. 오프셋이 T3 미만이면, 오프셋은 차감되고 T2로 설정되며 비트 010가 리턴된다. 오프셋이 T4 미만이면, 오프셋은 차감되고 T3로 설정되며 비트 011가 리턴된다. 오프셋이 T5 미만이면, 오프셋은 차감되고 T4로 설정되며 100가 리턴된다. 오프셋이 T6 미만이면, 오프셋은 차감되고 T5로 설정되며 비트 101가 리턴된다. 오프셋이 T7 미만이면, 오프셋은 차감되고 T6로 설정되며 비트 110가 리턴된다. 그 밖의 오프셋은 오프셋 차감되며 T7로 설정되고 비트 111가 리턴된다. 임의의 리턴 이후, 범위는 3만큼 우측 이동된다.
[0087] 도 14b에서, Tl, T2, T3, T4, T5, T6 및 T7에서 오프셋 값들은 범위와 관련하여 도시된다.
[0088] 도 15a는 접두사 EGK 코드 디코딩 프로세스(1100)의 흐름도를 도시한다. 도 15b는 접미사 EGK 코드 디코딩 프로세스(1200)의 흐름도를 도시한다. 접두사 또는 접미사 디코딩을 위한 예시적 소프트웨어 구현예가 도시된다. 각각의 빈 디코딩은 1만큼 우측 이동되고 최종 빈 디코딩 이후 범위는 >= 0x100이어야 하기 때문에, 범위/오프셋(range/offset)은 범위가 >= 0x1000000되도록 먼저 재정규화된다. 이런 방식으로, 16개에 이르는 연속 빈들의 디코딩이 수용될 수 있다. Qp가 1로 설정되는 시뮬레이션에서, EG 코드 접두사/접미사에서 재기록된 빈들의 최대 수는 9였다. 예를 들어, 각가의 비트 디코딩은 범위 레지스터에서 1 비트를 소모한다. 최종 비트 디코딩 이후, 범위가 >= 0x1000000인 경우, 범위는 >= 0x100이다. 따라서, 디코딩될 수 있는 16 비트가 제공된다. 이는 32 비트 범위 레지스터로 가능하다.
[0089] 접두사 EGK 코드 디코딩 프로세스(1100)은 제 3 재정규화 프로세스(700)가 이루어지는 블록(1102)에서 시작된다. 블록(1102)은 임계치가 범위에 할당되는 블록(1104)으로 진행되며 여기서 범위는 1만큼 우측 이동된다. 또한, 접두사는 0에 할당된다. 블록(1104)은 오프셋이 >=threshold인지 여부에 대한 결정이 이루어지는 블록(1106)으로 진행된다. 블록(1106)에서의 결정이 "예"이면, 블록(1106)은 블록(1108)으로 진행된다. 블록(1108)에서, 범위는 1만큼 우측 이동되며, 임계치는 범위 및 prefix += (l<<k) 및 k++만큼 증가된다. 표현식 prefix +=(l?k)는 본질적으로 prefix = prefix + (l?k)로 표현되며; k++는 루프에 대해 1 만큼씩 k 증가하는 것을 표현한다.
[0090] 블록(1108)은 오프셋이 -= (threshold- range)인 블록(1110)으로 진행된다. 표현식 offset -= (threshold-range)는 offset = offset -(threshold-range)로 표현된다. 블록(1110)은 프로세스(1100)를 종료한다. 블록(1106)에서, 결정이 "아니오"이면, 블록(1106)은 블록(1110)으로 진행된다. k 항은
Figure 112010027175568-pct00081
Figure 112010027175568-pct00082
함수에 대한 입력이다.
Figure 112010027175568-pct00083
함수에 대한 입력으로서, 이는 EGO 코드에 대해 0이며 EG3 코드에 대해 3 이어야 한다.
Figure 112010027175568-pct00084
함수에 대한 입력은
Figure 112010027175568-pct00085
함수로부터 발생되는 값 k이다. 표현식 prefix += (l<<k)가 표 3 아래에 도시된다. 예를 들어, 1110 (4번째 로우)는 EGO 코드에 대한 접두사가 7이라는 것을 의미하며, 이는 Ob 111 = (l?0) + (1?1) + (1?2)이다. 표현식 offset -= (threshold-range)는 offset = offset - (threshold - range)과 같다.
[0091] 접미사 EGK 코드 디코딩 프로세스(1200)는 제 3 재정규화 프로세스(700)가 발생하는 블록(1202)에서 시작된다. 블록(1202)은 접미사가 0으로 설정되는 블록(1204)으로 진행된다. 블록(1204)은 k가 0보다 큰지에 대한 결정이 이루어지는 블록(1206)으로 진행된다. 결정이 "아니오"이면, 프로세스(1200)는 종료된다.
[0092] 그러나, 결정이 "예"이면, 블록(1206)은 범위가 1 만큼 우측 이동되고 k가 1만큼씩 감소되는 블록(1208)으로 진행된다. 블록(1208)은 오프셋이 >= range인지에 대한 결정이 이루어지는 블록(1210)으로 진행된다. 결정이 "아니오"이면, 블록(1210)은 블록(1206)으로 복귀된다. 그러나, 블록(1210)에서의 결정이 "예"이면, 블록(1210)은 접미사가 += (l<<k)이고 오프셋이 -= range인 블록(1212)으로 진행된다. 표현식 suffix += (l<<k)는 이진 스트링의 값을 계산한다. 예를 들어, Ob 1010 = (1<<3) + (1<<1)이고 Offset = offset - range이다. 블록(1108)은 오프셋이 threshold-range에 할당되는 블록(1110)으로 진행된다. 블록(1110)은 프로세스(1100)를 종료한다. 결정이 "아니오"이면, 블록(1106)은 블록(1110)으로 진행된다.
실험 결과들
[0093] 표 4-5는 표준 및 새롭게 최적화된 코어 간의 주기들/함수 호출 비교 및 MIPS를 도시한다. 이러한 수들은 레벨 3 컴파일러 최적화들 및 디폴트 데이터 및 명령 캐시 사이즈를 갖는 DSP 시뮬레이터 상의 Kayak 시퀀스에 대해 얻어졌다.
Figure 112010027175568-pct00086
표준 및 새로운 코어 간의 MIPS 비교
Figure 112010027175568-pct00087
표준 및 새로운 코어 간의 주기들/함수 호출 비교
[0094] 표 4 및 표 5는 비트 레이트, 도 5 및 도 9의 디코드 결정 프로세스들(200, 450)에 대한 양자화 단계 크기 QP의 비교를 도시한다. 또한, 표 4 및 표 5는 도 6 및 도 11의 디코드 바이패스 프로세스들(250, 800) 및 EGK 코드의 디코드 프로세스에 대한 비교를 도시한다. 또한, 표 4는 MIPS의 결과들을 도시한다.
[0095] 64 비트 레지스터들이 사용되고 특정 감쇄가 CABAC 초기 스테이지에 가해지면, 정렬된 4 바이트를 판독하고 추가 주기들(cycles)을 절감(save)하는 것이 가능해진다. 도 10a, 10b, 10c에 도시된 제 1, 제 2, 및 제 3 재정규화 프로세스들(500, 600, 700)을 수행하기 위한 임계치가
Figure 112010027175568-pct00088
로 변경되어, 공통 재정규화 루틴이 적용될 수 있다. 이는 비트스트림으로부터 판독 바이트들의 주파수를 변화시킨다. 또한, 재정규화 검사(check) 주파수가 변경될 수 있다. 예를 들어, 블록(1202)에서 도 15b의 초기에 이루어지는 재정규화 검사가 생략될 수 있다.
[0096] 도 9에서, 블록(460)에서 수행되는 제 1 재정규화 프로세스(500)는 정규 디코딩 모드 프로세스(450)의 시작부로 이동될 수 있다. 32 비트 범위 레지스터가 사용되고 재정규화 임계치가
Figure 112010027175568-pct00089
이면, 제 1 심볼 디코딩 이후, 가능한 가장작은 범위 레지스터는
Figure 112010027175568-pct00090
이다.
Figure 112010027175568-pct00091
의 범위 레지스터는 여전히 > 0x100이며 재정규화 없이 다음 심볼을 디코딩할 수 있다. 따라서, 9 비트 이상의 범위/오프셋 레지스터로, 재정규화 없이 다수의 빈들을 디코딩하는 것이 가능하다. 오리지널 재정규화는 비트-기반이기 때문에, 많은 비용이 든다. 따라서, 범위 레지스터(400)의 배열은 2개의 연속하는 정규 모드 심볼들을 디코딩하기 위해 하드웨어 아키텍쳐를 단순화시킬 수 있다.
[0097] 도 16a, 16b and 16c는 CABAC 나머지 블록 구문(syntax) 배열을 도시한다. 2개의 연속하는 정규 모드 심볼들을 디코딩하기 위해, 도 16a 및 도 16b에 도시된 것처럼,
Figure 112010027175568-pct00092
Figure 112010027175568-pct00093
가 쌍으로 디코딩된다.
Figure 112010027175568-pct00094
가 0이면, 이는 계수는 제로 계수이고
Figure 112010027175568-pct00095
가 없다라는 것을 나타낸다.
Figure 112010027175568-pct00096
가 1이면, 이는 계수가 제로가 아닌 계수이고 디코딩을 위한 다음 심볼이
Figure 112010027175568-pct00097
라는 것을 나타낸다. 따라서, 쌍의 값이 0 또는 10 또는 11중 하나를 취할 수 있다. 상기 쌍은 4x4 블록의 각각의 나머지 계수들에 대해 디코딩될 필요가 있기 때문에, 잠재적 가속/절감(speedup/saving)은 상당히 중요하다.
Figure 112010027175568-pct00098
Figure 112010027175568-pct00099
항은 H.264 표준에 정의된다.
[0098] 도 16c의 매트릭스 또는 블록(1400)은 데이터 세트에 대한 예시적 도면이다. 도 16b의 표 1350에서의 값들은 도 16c의 데이터 세트로부터 유추된다. 구문(syntax) 엘리먼트 스트림(1300)은 1350의 표로부터 유추된다.
[0099] 지금까지, 충분한 비트의 범위/오프셋 레지스터에 대해 제공되었지만, 재정규화 검사는 스킵될 수 있다.
[00100] 하나 이상의 예시적 구성들에서, 본 발명에 개시된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합물에서 구현될 수 있다. 소프트웨어에서 구현될 경우, 기능들은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드들을 통해 전송 또는 저장될 수 있다. 컴퓨터-판독가능 매체는 한 위치에서 다른 위치로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한되지 않는 예로써, 이러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장기, 자성 디스크 저장기 또는 다른 자성 저장 디바이스들, 또는 컴퓨터에 의해 액세스될 수 있고 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 전달 또는 저장하는데 이용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 커넥션(connection)이 컴퓨터-판독가능 매체로 불린다. 예를 들어, 소프트웨어가 웹사이트, 서버 또는 동축 케이블, 광섬유 케이블, 트위스티드 페어(twisted pair), 디지털 가입자 라인(DSL), 또는 적외선, 라디오, 마이크로파를 사용하는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의(definition)에 포함된다. 본 발명에 사용되는 디스크(disk 및 disc)는 콤팩 디스크(CD), 레이저 디스크, 광학 디스크, DVD, 플로피 디스크 및 블루-레이 디스크를 포함하며, 디스크(disk)들은 통상 자기적으로 데이터를 재생하는 반면 디스크(disc)들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 이들의 조합은 컴퓨터-판독가능 매체의 범주에 포함되어야 한다.
[00101] 본 발명에 개시된 구성들에 대한 이전 설명은 임의의 당업자가 본 발명을 구성 또는 사용할 수 있게 하기 위해 제공된다. 이러한 구성들에 대한 다양한 변형들을 당업자들은 쉽게 인식할 것이며, 본 발명에 정의된 일반적 원리는 본 발명의 범주 또는 사상을 이탈하지 않고 다른 구성들에도 적용될 수 있다. 따라서, 본 발명은 본 발명에 도시된 구성들로 제한되지 않고 본 발명에 개시된 원리들 및 신규한 특징들에 따른 광범위한 범주를 따른다.

Claims (25)

  1. 프로세싱 회로; 및
    상기 프로세싱 회로에 결합된 메모리
    를 포함하며, 상기 프로세싱 회로는, 콘텍스트-적응형 이진 산술 코딩(CABAC)의 바이패스 디코딩 모드를 이용하여 다수의 빈들(bins)을 동시적으로 디코딩하고 ?상기 빈들은 CABAC의 바이패스 인코딩 모드를 이용하여 인코딩된 이진 비트들을 포함함?, 상기 다수의 빈들이 디코딩된 후에 오프셋(offset) 레지스터 및 범위(range) 레지스터를 바이트들의 간격으로 재정규화(renormalize)하기 위한 명령들의 세트를 실행하도록 동작하며, 상기 범위 레지스터는 리딩 제로(leading zeros) 섹션, 9-비트 섹션, 및 트레일링 제로(trailing zeros) 섹션으로 분할된 다수의 비트들을 포함하고, 상기 재정규화는 CABAC의 정규(normal) 디코딩 모드에 대한 제 2 유형의 재정규화 프로세스와는 상이한 상기 바이패스 디코딩 모드에 대한 제 1 유형의 재정규화 프로세스를 포함하는, 빈들을 디코딩하기 위한 디바이스.
  2. 제 1 항에 있어서,
    상기 재정규화하기 위한 명령들의 세트는 상기 범위 레지스터 및 상기 오프셋 레지스터를 멀티-비트(multi-bit) 정렬하기 위해 요구되는 좌측 이동량(amount of left shift)을 계산하기 위한 카운트 리딩 제로(count leading zero) 명령들을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  3. 제 1 항에 있어서,
    상기 다수의 빈들은 지수(exponential) 골롬브 이진화(EG) 코드로 표현되는, 빈들을 디코딩하기 위한 디바이스.
  4. 제 1 항에 있어서,
    상기 다수의 빈들을 디코딩하기 위한 명령들의 세트는 16개의 연속하는 빈들을 동시에 디코딩하기 위한 명령들을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  5. 제 1 항에 있어서,
    상기 프로세싱 회로는 콘텍스트-적응형 이진 산술 코딩(CABAC)의 상기 정규 디코딩 모드를 이용하여 다수의 빈들을 디코딩하기 위한 명령들을 더 포함하는, 빈들을 디코딩하기 위한 디바이스.
  6. 제 5 항에 있어서,
    상기 프로세싱 회로는 2개의 연속하는 정규 모드 심볼들을 동시적으로 디코딩하는 명령들을 더 포함하는, 빈들을 디코딩하기 위한 디바이스.
  7. 제 1 항에 있어서,
    상기 디바이스는 셀룰러 전화, 무선 디바이스, 무선 통신 디바이스, 비디오 게임 콘솔, 무선-장착 PDA(personal digital assistant), 랩톱 컴퓨터, 또는 비디오-가능(video- enabled) 디바이스를 포함하는, 빈들을 디코딩하기 위한 디바이스.
  8. 콘텍스트-적응형 이진 산술 코딩(CABAC)의 바이패스 디코딩 모드를 이용하여 다수의 빈들을 동시적으로 디코딩하기 위한 디코딩 수단 ?상기 빈들은 CABAC의 바이패스 인코딩 모드를 이용하여 인코딩된 이진 비트들을 포함함?; 및
    상기 다수의 빈들을 디코딩한 후에, 오프셋 레지스터 및 범위 레지스터를 바이트들의 간격으로 멀티-비트 정렬하기 위한 재정규화(renormalizing) 수단
    을 포함하며, 상기 범위 레지스터는 리딩 제로 섹션, 9-비트 섹션, 및 트레일링 제로 섹션으로 분할된 다수의 비트들을 포함하고, 상기 재정규화는 CABAC의 정규 디코딩 모드에 대한 제 2 유형의 재정규화 프로세스와는 상이한 바이패스 디코딩 모드에 대한 제 1 유형의 재정규화 프로세스를 포함하는, 빈들을 디코딩하기 위한 디바이스.
  9. 제 8 항에 있어서,
    상기 재정규화 수단은 상기 범위 레지스터 및 상기 오프셋 레지스터를 멀티-비트 정렬하기 위해 요구되는 좌측 이동량을 계산하기 위한 계산(calculating) 수단을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  10. 제 8 항에 있어서,
    상기 디코딩 수단은 지수 골롬브 이진화(EG) 코드를 디코딩하기 위한 수단을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  11. 제 8 항에 있어서,
    상기 디코딩 수단은 콘텍스트-적응형 이진 산술 코딩(CABAC)의 상기 정규 디코딩 모드를 이용하여 다수의 빈들을 디코딩하기 위한 수단을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  12. 제 11 항에 있어서,
    상기 디코딩 수단은 2개의 연속하는 정규 모드 심볼들을 동시적으로 디코딩하기 위한 수단을 포함하는, 빈들을 디코딩하기 위한 디바이스.
  13. 오프셋 레지스터 및 범위 레지스터를 포함하는 디코더; 및
    상기 디코더에 결합된 메모리
    를 포함하며, 상기 디코더는, 콘텍스트-적응형 이진 산술 코딩(CABAC)의 바이패스 디코딩 모드를 이용하여 다수의 빈들(bins)을 동시적으로 디코딩하고 ?상기 빈들은 CABAC의 바이패스 인코딩 모드를 이용하여 인코딩된 이진 비트들을 포함함?, 상기 다수의 빈들이 디코딩된 후에 오프셋 레지스터 및 범위 레지스터를 바이트들의 간격으로 재정규화하며, 상기 범위 레지스터는 리딩 제로 섹션, 9-비트 섹션, 및 트레일링 제로 섹션으로 분할된 다수의 비트들을 포함하고, 상기 재정규화는 CABAC의 정규 디코딩 모드에 대한 제 2 유형의 재정규화 프로세스와는 상이한 상기 바이패스 디코딩 모드에 대한 제 1 유형의 재정규화 프로세스를 포함하는, 빈들을 디코딩하기 위한 장치.
  14. 제 13 항에 있어서,
    상기 디코더는 상기 범위 레지스터 및 상기 오프셋 레지스터를 멀티-비트 정렬하기 위해 요구되는 좌측 이동량을 계산하는, 빈들을 디코딩하기 위한 장치.
  15. 제 13 항에 있어서,
    상기 디코더는 지수 콜롬브 이진화(EG) 코드를 디코딩하는, 빈들을 디코딩하기 위한 장치.
  16. 빈들을 디코딩하기 위한 명령들을 보유하는 컴퓨터 판독가능 매체로서,
    상기 명령들은 컴퓨터로 하여금,
    콘텍스트-적응형 이진 산술 코딩(CABAC)의 바이패스 디코딩 모드를 이용하여 다수의 빈들(bins)을 동시적으로 디코딩하게 하고 ?상기 빈들은 CABAC의 바이패스 인코딩 모드를 이용하여 인코딩된 이진 비트들을 포함함?, 상기 다수의 빈들이 디코딩된 후에 오프셋 레지스터 및 범위 레지스터를 바이트들의 간격으로 멀티-비트 정렬하기 위해 재정규화하게 하며,
    상기 범위 레지스터는 리딩 제로 섹션, 9-비트 섹션, 및 트레일링 제로 섹션으로 분할된 다수의 비트들을 포함하고, 상기 재정규화는 CABAC의 정규 디코딩 모드에 대한 제 2 유형의 재정규화 프로세스와는 상이한 상기 바이패스 디코딩 모드에 대한 제 1 유형의 재정규화 프로세스를 포함하는, 컴퓨터 판독가능 매체.
  17. 제 16 항에 있어서,
    상기 재정규화하게 하는 명령들은 상기 범위 레지스터 및 상기 오프셋 레지스터를 멀티-비트 정렬하기 위해 요구되는 좌측 이동량을 계산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  18. 제 16 항에 있어서,
    상기 디코딩하게 하는 명령들은 지수 콜롬브 이진화(EG) 코드를 디코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  19. 제 16 항에 있어서,
    상기 디코딩하게 하는 명령들은 콘텍스트-적응형 이진 산술 코딩(CABAC)의 상기 정규 디코딩 모드를 이용하여 다수의 빈들을 디코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  20. 콘텍스트-적응형 이진 산술 코딩(CABAC)의 바이패스 디코딩 모드를 이용하여 다수의 빈들(bins)을 동시적으로 디코딩하는 단계 ?상기 빈들은 CABAC의 바이패스 인코딩 모드를 이용하여 인코딩된 이진 비트들을 포함함?; 및
    상기 디코딩하는 단계 이후, 오프셋 레지스터 및 범위 레지스터를 바이트들의 간격으로 멀티-비트 정렬하기 위해 재정규화하는 단계
    를 포함하며, 상기 범위 레지스터는 리딩 제로 섹션, 9-비트 섹션, 및 트레일링 제로 섹션으로 분할된 다수의 비트들을 포함하고, 상기 재정규화는 CABAC의 정규 디코딩 모드에 대한 제 2 유형의 재정규화 프로세스와는 상이한 상기 바이패스 디코딩 모드에 대한 제 1 유형의 재정규화 프로세스를 포함하는, 빈들을 디코딩하기 위한 방법.
  21. 제 20 항에 있어서,
    상기 재정규화하는 단계는 상기 범위 레지스터 및 상기 오프셋 레지스터를 멀티-비트 정렬하기 위해 요구되는 좌측 이동량을 계산하는 단계를 포함하는, 빈들을 디코딩하기 위한 방법.
  22. 제 20 항에 있어서,
    상기 디코딩하는 단계는 지수 콜롬브 이진화(EG) 코드를 디코딩하는 단계를 포함하는, 빈들을 디코딩하기 위한 방법.
  23. 제 20 항에 있어서,
    상기 디코딩하는 단계는 콘텍스트-적응형 이진 산술 코딩(CABAC)의 상기 정규 디코딩 모드를 이용하여 다수의 빈들을 디코딩하는 단계를 포함하는, 빈들을 디코딩하기 위한 방법.
  24. 삭제
  25. 삭제
KR1020107009207A 2007-09-27 2008-09-25 최적화된 cabac 디코더 KR101136212B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/862,942 US8782379B2 (en) 2007-09-27 2007-09-27 H.264 video decoder CABAC core optimization techniques
US11/862,942 2007-09-27
PCT/US2008/077754 WO2009042813A1 (en) 2007-09-27 2008-09-25 Optimized cabac decoder

Publications (2)

Publication Number Publication Date
KR20100075560A KR20100075560A (ko) 2010-07-02
KR101136212B1 true KR101136212B1 (ko) 2012-04-17

Family

ID=39967218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107009207A KR101136212B1 (ko) 2007-09-27 2008-09-25 최적화된 cabac 디코더

Country Status (7)

Country Link
US (1) US8782379B2 (ko)
EP (1) EP2043268A1 (ko)
JP (1) JP5006451B2 (ko)
KR (1) KR101136212B1 (ko)
CN (1) CN101809871B (ko)
TW (1) TW200931818A (ko)
WO (1) WO2009042813A1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289125A (ja) * 2007-04-20 2008-11-27 Panasonic Corp 算術復号化装置及びその方法
US20110125987A1 (en) * 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US7961122B1 (en) * 2010-02-03 2011-06-14 Himax Media Solutions, Inc. Multi-bin CABAC bypass bin decoder
TWI458268B (zh) * 2010-03-16 2014-10-21 Himax Media Solutions Inc 並聯的五旁路位元全文自適應二進制算術編碼解碼器
WO2012067412A2 (ko) * 2010-11-15 2012-05-24 한국전자통신연구원 병렬 엔트로피 부호화/복호화 방법 및 장치
US9008170B2 (en) * 2011-05-10 2015-04-14 Qualcomm Incorporated Offset type and coefficients signaling method for sample adaptive offset
US10123053B2 (en) * 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
US11245902B2 (en) 2011-06-30 2022-02-08 Sony Corporation Binarization of DQP using separate absolute value and sign (SAVS) in CABAC
US9112526B2 (en) 2011-06-15 2015-08-18 Sony Corporation Binarization of DQP using separate absolute value and sign (SAVS) in CABAC
MX2013001167A (es) 2011-06-24 2013-02-15 Panasonic Corp Metodo de codificacion de imagenes, metodo de decodificacion de imagenes, aparato de codificacion de imagenes, aparato de decodificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
US9565455B2 (en) 2011-06-28 2017-02-07 Samsung Electronics Co., Ltd. Method and apparatus for coding video and method and apparatus for decoding video accompanied with arithmetic coding
ES2716933T3 (es) * 2011-06-28 2019-06-18 Nec Corp Decodificación de un parámetro de cuantificación de vídeo
US20130083856A1 (en) * 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
EP2988511A1 (en) 2011-08-04 2016-02-24 MediaTek Inc. Method and apparatus for reordered binarization of syntax elements in cabac
EP3780601B1 (en) * 2011-10-28 2023-08-16 Samsung Electronics Co., Ltd. Method and apparatus for intra prediction of video
US20130114667A1 (en) * 2011-11-08 2013-05-09 Sony Corporation Binarisation of last position for higher throughput
CN103220509B (zh) * 2012-01-21 2017-12-15 中兴通讯股份有限公司 自适应控制算术编码bin数量的方法、编码器和解码器
KR101647244B1 (ko) * 2012-01-30 2016-08-09 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 이진 산술 코딩 방식
US9681133B2 (en) * 2012-03-29 2017-06-13 Intel Corporation Two bins per clock CABAC decoding
JP6179813B2 (ja) * 2012-05-25 2017-08-16 サン パテント トラスト 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置および画像符号化復号装置
WO2013175736A1 (ja) * 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
PL2858354T3 (pl) 2012-05-25 2023-05-02 Sun Patent Trust Sposób kodowania obrazów wideo, sposób dekodowania obrazów wideo, urządzenie do kodowania obrazów wideo, urządzenie do dekodowania obrazów wideo oraz urządzenie do kodowania-dekodowania obrazów wideo
CN103650498B (zh) 2012-06-04 2018-01-05 太阳专利托管公司 运动图像解码方法及运动图像解码装置
CN104380752B (zh) * 2012-06-29 2018-10-23 威勒斯媒体国际有限公司 编码设备和编码方法
WO2014030347A1 (ja) * 2012-08-22 2014-02-27 日本電気株式会社 映像データ2値算術復号装置および映像復号装置
TWI517681B (zh) * 2013-06-19 2016-01-11 晨星半導體股份有限公司 應用於數位音視頻編解碼技術標準系統之解碼方法及解碼裝置
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
CN104980749B (zh) * 2014-04-11 2018-04-24 扬智科技股份有限公司 算术编码的解码装置及方法
US9455743B2 (en) * 2014-05-27 2016-09-27 Qualcomm Incorporated Dedicated arithmetic encoding instruction
US9425822B2 (en) * 2014-08-05 2016-08-23 Broadcom Corporation Simplified range and context update for multimedia context-adaptive binary arithmetic coding design
US10313683B2 (en) * 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
TWI610559B (zh) * 2016-10-27 2018-01-01 Chunghwa Telecom Co Ltd 最佳化視訊轉碼的方法與裝置
US10757412B2 (en) * 2017-01-03 2020-08-25 Avago Technologies International Sales Pte. Limited Architecture flexible binary arithmetic coding system
JP6707045B2 (ja) 2017-03-15 2020-06-10 Nttエレクトロニクス株式会社 二値算術復号器および二値算術復号装置
CN113032274B (zh) * 2021-04-07 2021-09-10 北京电信易通信息技术股份有限公司 一种针对h.265的cabac连续图像验证的方法
WO2024091925A1 (en) * 2022-10-25 2024-05-02 Google Llc Improved entropy bypass coding

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7688895B2 (en) * 2003-07-22 2010-03-30 Lsi Corporation Method and/or circuit for binary arithmetic decoding decisions before termination
KR100648258B1 (ko) 2004-08-02 2006-11-23 삼성전자주식회사 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
US7983343B2 (en) 2006-01-12 2011-07-19 Lsi Corporation Context adaptive binary arithmetic decoding for high definition video

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Peng Zhang et al., "High-Performance CABAC Engine for H.264/AVC High Definition Real-Time Decoding", 2007 ICCE, Jan 2007. *

Also Published As

Publication number Publication date
TW200931818A (en) 2009-07-16
WO2009042813A1 (en) 2009-04-02
EP2043268A1 (en) 2009-04-01
US20090089549A1 (en) 2009-04-02
JP2011501896A (ja) 2011-01-13
KR20100075560A (ko) 2010-07-02
JP5006451B2 (ja) 2012-08-22
CN101809871B (zh) 2014-10-29
US8782379B2 (en) 2014-07-15
CN101809871A (zh) 2010-08-18

Similar Documents

Publication Publication Date Title
KR101136212B1 (ko) 최적화된 cabac 디코더
JP4886755B2 (ja) コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法
JP4976553B2 (ja) Cabacビットストリームの多段復号のためのアーキテクチャ
JP5138805B2 (ja) 算術符号化方法及び算術符号化装置
US7365660B2 (en) Method and device for decoding syntax element in CABAC decoder
US7982641B1 (en) Context-based adaptive binary arithmetic coding engine
KR100604364B1 (ko) 정보신호의 연산 인코딩 및 디코딩
WO2020186535A1 (zh) 点云属性编码方法和装置以及点云属性解码方法和装置
KR100487411B1 (ko) 가변 길이 디코더
KR20020020886A (ko) 산술적으로 인코딩된 정보신호의 산술 디코딩
MXPA99010754A (en) Arithmetic encoding and decoding of an information signal

Legal Events

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

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee