KR101672107B1 - 변환 계수들에 대한 이진 코드워드들을 결정하는 방법 - Google Patents

변환 계수들에 대한 이진 코드워드들을 결정하는 방법 Download PDF

Info

Publication number
KR101672107B1
KR101672107B1 KR1020147014976A KR20147014976A KR101672107B1 KR 101672107 B1 KR101672107 B1 KR 101672107B1 KR 1020147014976 A KR1020147014976 A KR 1020147014976A KR 20147014976 A KR20147014976 A KR 20147014976A KR 101672107 B1 KR101672107 B1 KR 101672107B1
Authority
KR
South Korea
Prior art keywords
value
symbol
prefix
parameter variable
maximum
Prior art date
Application number
KR1020147014976A
Other languages
English (en)
Other versions
KR20140098110A (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 KR20140098110A publication Critical patent/KR20140098110A/ko
Application granted granted Critical
Publication of KR101672107B1 publication Critical patent/KR101672107B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/21Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with binary alpha-plane coding for video objects, e.g. context-based arithmetic encoding [CAE]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

고효율성 비디오 코딩(HEVC) 시스템에서 코딩 유닛(CU)들을 분할하는 변환 유닛(TU)들 내의 변환 계수를 나타내는 심볼에 대한 이진 코드워드를 결정하기 위한 시스템이 제공된다. 시스템은 절단된 라이스 프리픽스를 결정하고, 파라미터 변수가 제로보다 더 클 때, 심볼에 대한 절단된 라이스 서픽스를 결정한다. 시스템은 절단된 라이스 프리픽스 단독으로부터, 또는 절단된 라이스 프리픽스와 절단된 라이스 서픽스의 결합으로부터 메인 프리픽스를 결정한다. 메인 프리픽스가 비교 스트링과 동일할 때, 시스템은 또한 메인 서픽스를 결정한다. 시스템은 메인 프리픽스 단독으로부터 또는 메인 프리픽스와 메인 서픽스의 결합으로부터 심볼에 대한 최종 이진 코드워드를 결정한다.

Description

변환 계수들에 대한 이진 코드워드들을 결정하는 방법{METHOD OF DETERMINING BINARY CODEWORDS FOR TRANSFORM COEFFICIENTS}
관련 출원들에 대한 교차 참조
이 출원은, 35 U.S.C.§119(e) 규정에 따라, 2011년 11월 8일에 출원된 조기 출원된 미국 가출원 번호 제61/557,403호로부터 우선권을 주장하며, 그 전체 내용이 인용에 의해 본원에 포함된다.
본 개시내용은 비디오 압축 분야, 특히, 블록 프로세싱을 사용하는 고효율성 비디오 코딩(HEVC: High Efficiency Video Coding)을 사용하는 비디오 압축에 관한 것이다.
도 1은 HEVC 데이터를 전송하고 수신하기 위해 사용될 수 있는 코딩 시스템(110) 및 디코딩 시스템(140)을 포함하는 컨텐츠 분배 시스템(100)을 도시한다. 일부 실시예들에서, 코딩 시스템(110)은 입력 인터페이스(130), 제어기(111), 카운터(112), 프레임 메모리(113), 인코딩 유닛(114), 송신기 버퍼(115) 및 출력 인터페이스(135)를 포함할 수 있다. 디코딩 시스템(140)은 수신기 버퍼(150), 디코딩 유닛(151), 프레임 메모리(152) 및 제어기(153)를 포함할 수 있다. 코딩 시스템(110) 및 디코딩 시스템(140)은 압축된 비트스트림(105)을 전달할 수 있는 전송 경로를 통해 서로 연결될 수 있다. 코딩 시스템(110)의 제어기(111)는 수신기 버퍼(150)의 용량에 기반하여 전송될 데이터의 양을 제어할 수 있고, 시간 단위 당 데이터의 양과 같은 다른 파라미터들을 포함할 수 있다. 제어기(111)는 디코딩 시스템(140)의 수신된 신호 디코딩 동작의 실패의 발생을 방지하도록 인코딩 유닛(114)을 제어할 수 있다. 제어기(111)는 프로세서일 수 있으며, 비-제한적인 예시로서, 프로세서, 랜덤 액세스 메모리 및 판독 전용 메모리를 갖는 마이크로컴퓨터를 포함할 수 있다.
비-제한적 예시로서, 컨텐츠 제공자로부터 공급된 소스 픽쳐들(120)은 비디오 시퀀스 내에 소스 픽쳐들을 포함하는 프레임들의 비디오 시퀀스를 포함할 수 있다. 소스 픽쳐들(120)은 압축되지 않거나 압축될 수 있다. 소스 픽쳐들(120)이 압축되지 않는 경우, 코딩 시스템(110)은 인코딩 기능을 가질 수 있다. 소스 픽쳐들(120)이 압축되는 경우, 코딩 시스템(110)은 트랜스코딩 기능을 가질 수 있다. 코딩 유닛들은 제어기(111)를 이용하여 소스 픽쳐들로부터 유도될 수 있다. 프레임 메모리(113)는 소스 픽쳐들(120)로부터 인입 프레임들을 저장하기 위해 사용될 수 있는 제1 영역, 및 프레임들을 판독하고 이들을 인코딩 유닛들(114)에 출력하기 위해 사용될 수 있는 제2 영역을 가질 수 있다. 제어기(111)는 프레임 메모리(113)에 영역 스위칭 제어 신호(123)를 출력할 수 있다. 영역 스위칭 제어 신호(123)는 제1 영역이 이용될 것인지 또는 제2 영역이 이용될 것인지를 표시할 수 있다.
제어기(111)는 인코딩 유닛(114)에 인코딩 제어 신호(124)를 출력할 수 있다. 인코딩 제어 신호(124)는 인코딩 유닛(114)으로 하여금, 소스 픽쳐에 기초하여 코딩 유닛들을 준비하는 것과 같은, 인코딩 동작을 시작하게 할 수 있다. 제어기(111)로부터의 인코딩 제어 신호(124)에 응답하여, 인코딩 유닛(114)은, 코딩 유닛들과 연관된 소스 픽쳐들에 기초하여 비디오 압축 데이터를 생성하는 준비된 코딩 유닛들을 프로세싱하는 예측 코딩 프로세스 또는 변환 코딩 프로세스와 같은, 고효율성 인코딩 프로세스에 대해 준비된 코딩 유닛들을 판독하기 시작할 수 있다.
인코딩 유닛(114)은 비디오 패킷들을 포함하는 패킷화된 기본 스트림(PES) 내에 생성된 비디오 압축 데이터를 패키지화할 수 있다. 인코딩 유닛(114)은 제어 정보 및 프로그램 시간 스탬프(PTS)를 사용하여 비디오 패킷들을 인코딩된 비디오 신호(122) 내로 매핑할 수 있고, 인코딩된 비디오 신호(122)는 송신기 버퍼(115)에 전송될 수 있다.
생성된 비디오 압축 데이터를 포함하는 인코딩된 비디오 신호(122)는 송신기 버퍼(115)에 저장될 수 있다. 정보량 카운터(112)는 송신기 버퍼(115) 내의 전체 데이터량을 표시하도록 증분될 수 있다. 데이터가 검색되어 버퍼로부터 제거됨에 따라, 카운터(112)는 송신기 버퍼(115) 내의 데이터량을 반영하기 위해 감소할 수 있다. 점유된 영역 정보 신호(126)는 인코딩 유닛(114)으로부터의 데이터가 송신기 버퍼(115)에 추가되었는지 또는 그로부터 제거되었는지를 표시하기 위해 카운터(112)에 전송될 수 있고, 따라서, 카운터(112)는 증분되거나 감소할 수 있다. 제어기(111)는, 송신기 버퍼(115)에서 오버 플로우 또는 언더 플로우가 발생하는 것을 예견하고, 회피하고, 방지하고 그리고/또는 검출하기 위해 전달될 수 있는 점유된 영역 정보(126)에 기반하여 인코딩 유닛(114)에 의해 생성된 비디오 패킷들의 생성을 제어할 수 있다.
정보량 카운터(112)는 제어기(111)에 의해 생성되고 출력된 사전설정(preset) 신호(128)에 응답하여 리셋될 수 있다. 정보 카운터(112)가 리셋된 이후, 정보 카운터(112)는 인코딩 유닛(114)에 의해 출력된 데이터를 카운팅하고, 생성된 비디오 압축 데이터 및/또는 비디오 패킷들의 양을 획득할 수 있다. 정보량 카운터(112)는 제어기(111)에 획득된 정보량을 나타내는 정보량 신호(129)를 공급할 수 있다. 제어기(111)는 송신기 버퍼(115)에 오버플로우가 존재하지 않도록 인코딩 유닛(114)을 제어할 수 있다.
일부 실시예들에서, 디코딩 시스템(140)은 입력 인터페이스(170), 수신기 버퍼(150), 제어기(153), 프레임 메모리(152), 디코딩 유닛(151) 및 출력 인터페이스(175)를 포함할 수 있다. 디코딩 시스템(140)의 수신기 버퍼(150)는 소스 픽쳐들(120)로부터의 소스 픽쳐들에 기초하여 수신된 비디오 압축 데이터 및 비디오 패킷들을 포함하는, 압축된 비트스트림(105)을 일시적으로 저장할 수 있다. 디코딩 시스템(140)은 수신된 데이터 내의 비디오 패킷들과 연관된 제어 정보 및 표시 타임스탬프 정보를 판독하고, 제어기(153)에 적용될 수 있는 프레임 수 신호(163)를 출력할 수 있다. 제어기(153)는 미리 결정된 간격으로 카운팅된 프레임들의 수를 감독할 수 있다. 비-제한적인 예시에 의해, 제어기(153)는, 디코딩 유닛(151)이 디코딩 동작을 완료할 때마다, 카운팅된 프레임들의 수를 감독할 수 있다.
일부 실시예들에서, 프레임 수 신호(163)가, 수신기 버퍼(150)가 미리 결정된 용량에 있음을 표시할 때, 제어기(153)는 디코딩 시작 신호(164)를 디코딩 유닛(151)에 출력할 수 있다. 프레임 수 신호(163)가 수신된 버퍼(150)가 미리 결정된 용량보다 더 적음을 표시할 때, 제어기(153)는 카운트된 프레임들의 수가 미리 결정된 양과 동일해지는 상황의 발생을 대기할 수 있다. 제어기(153)는 그 상황이 발생할 때 디코딩 시작 신호(164)를 출력할 수 있다. 비-제한적인 예시에 의해, 제어기(153)는 프레임 수 신호(163)가 수신기 버퍼(150)가 미리 결정된 용량에 있음을 표시할 때 디코딩 시작 신호(164)를 출력할 수 있다. 인코딩된 비디오 패킷들 및 비디오 압축 데이터는 인코딩된 비디오 패킷들과 연관된 표시 타임스탬프들에 기초하여 단조 순서로(즉, 증가하거나 감소하는) 디코딩될 수 있다.
디코딩 시작 신호(164)에 응답하여, 디코딩 유닛(151)은 프레임과 연관된 하나의 픽쳐에 상당하는 데이터, 및 수신기 버퍼(150)로부터의 비디오 패킷들과 연관된 픽쳐와 연관된 압축된 비디오 데이터를 디코딩할 수 있다. 디코딩 유닛(151)은 디코딩된 비디오 신호(162)를 프레임 메모리(152) 내에 기록할 수 있다. 프레임 메모리(152)는 디코딩된 비디오 신호가 기록되는 제1 영역, 및 출력 인터페이스(175)로 디코딩된 픽쳐(160)를 판독해내기 위해 사용되는 제2 영역을 가질 수 있다.
다양한 실시예들에서, 코딩 시스템(110)은 헤드엔드에서 트랜스코더 또는 인코딩 장치에 포함되거나 또는 다른 방식으로 연관될 수 있고, 디코딩 시스템(140)은 모바일 디바이스, 셋톱 박스 또는 트랜스코더와 같은 다운스트림 디바이스에 포함되거나 또는 다른 방식으로 연관될 수 있다.
코딩 시스템(110) 및 디코딩 시스템(140)은, 고효율성 비디오 코딩(HEVC)을 포함하는, 다양한 코딩 포맷들에 따라 비디오 데이터를 인코딩하고 디코딩하기 위해 별도로 또는 함께 이용될 수 있다. HEVC는 블록 기반 하이브리드 공간적 및 시간적 예측 코딩 방식이다. HEVC에서, 비디오 프레임들과 같은 입력 이미지들은, 도 2에 도시된 바와 같이, 가장 큰 코딩 유닛(LCU)들(200)로서 명명되는 사각형 블록들로 분할될 수 있다. 입력 이미지들을 16x16 픽셀들의 매크로블록들로 나누는 다른 코딩 방식들과는 달리, LCU들(200)은 각각 128x128 픽셀들만큼 클 수 있다. 도 3에 도시된 바와 같이, 각각의 LCU(200)는 LCU(200)를 4개의 코딩 유닛(CU)들(202)로 분할함으로써 파티셔닝될 수 있다. CU들(202)은 각각이 LCU(200)의 1/4 사이즈인 사각형 블록들일 수 있다. 각각의 CU(202)는 각각이 더 큰 CU(202)의 1/4 사이즈인 4개의 더 작은 CU들(202)로 추가로 분할될 수 있다. 비-제한적인 예시에 의해, 도 3에 도시된 LCU(200)의 상단 우측 코너의 CU(202)는 4개의 더 작은 CU들(202)로 분할될 수 있다. 일부 실시예들에서, 이들 더 작은 CU들(202)은 훨씬 더 작은 크기의 쿼터(quarter)들로 추가로 분할될 수 있고, CU들(202)을 더 작은 CU들(202)로 분할하는 이 프로세스는 여러 번 완료될 수 있다.
비디오 데이터 밀도가 점점 더 높아짐에 따라, 큰 입력 이미지들 및/또는 매크로블록들이 신속하게, 효율적으로 그리고 정확하게 인코딩되고 디코딩되도록, CU들을 코딩하기 위한 더욱 개선된 방법들이 요구된다.
본 발명은 HEVC에 대한 개선된 시스템을 제공한다. 시스템에 대한 실시예들에서, 효율적 방식으로 변환 계수들에 대한 이진 코드워드들을 결정하는 방법이 제공된다. CU들(202)의 세부분할들인 변환 유닛(TU)들 내의 변환 계수들에 대한 코드워드들은 입력 이미지들 및/또는 매크로블록들을 인코딩할 시에 사용된다.
일 실시예에서, 변환 계수에 대해 코드워드에서 사용되는 절단된 라이스 빈 스트링(truncated rice bin string)을 생성하는 방법이 제공된다. 방법은 실시예에서, 심볼을 제공하는 단계, 심볼에 대한 파라미터 변수를 제공하는 단계, 파라미터 변수와 연관된 최대 심볼 값을 제공하는 단계, 심볼에 대한 절단된 라이스 프리픽스(truncated rice prefix)를 결정하는 단계 - 절단된 라이스 프리픽스는 하나 이상의 빈들을 포함함 - , 파라미터 변수가 제로보다 더 클 때 심볼에 대한 절단된 라이스 서픽스(truncated rice suffix)를 결정하는 단계 - 절단된 라이스 서픽스는 하나 이상의 빈들을 포함함 - , 파라미터 변수가 제로와 동일할 때 메인 프리픽스를 절단된 라이스 프리픽스로 설정하거나, 또는 파라미터 변수가 제로보다 더 클 때 절단된 라이스 프리픽스의 종단을 절단된 라이스 서픽스와 연접시킴으로써 심볼에 대한 메인 프리픽스를 결정하는 단계, 메인 프리픽스가 비교 스트링과 동일할 때 심볼에 대한 메인 서픽스를 결정하는 단계 - 메인 서픽스는 하나 이상의 빈들을 포함함 - , 및 메인 프리픽스가 비교 스트링과 동일하지 않을 때 이진 코드워드를 메인 프리픽스로 설정하거나, 또는 메인 프리픽스가 비교 스트링과 동일할 때 메인 프리픽스의 종단을 메인 서픽스와 연접시킴으로써 심볼에 대한 이진 코드워드를 결정하는 단계를 포함한다.
또 다른 실시예에서, 발명은 변환 계수를 식별하기 위한 코드워드를 생성하기 위해 절단된 라이스 프리픽스를 사용하는 비디오 인코더를 포함한다. 비디오 인코더는 심볼, 파라미터 변수 및 최대 심볼을 저장하도록 구성되는 메모리, 및 메모리와 연결된 프로세서를 포함하고, 프로세서는 심볼에 대한 절단된 라이스 프리픽스를 결정하고 - 절단된 라이스 프리픽스는 하나 이상의 빈들을 포함함 - , 파라미터 변수가 제로보다 더 클 때 심볼에 대한 절단된 라이스 서픽스를 결정하고 - 절단된 라이스 서픽스는 하나 이상의 빈들을 포함함 - , 파라미터 변수가 제로와 동일할 때 메인 프리픽스를 절단된 라이스 프리픽스로 설정하거나, 또는 파라미터 변수가 제로보다 더 클 때 절단된 라이스 서픽스의 종단을 절단된 라이스 서픽스와 연접시킴으로써 심볼에 대한 메인 프리픽스를 결정하고, 메인 프리픽스가 비교 스트링과 동일할 때 심볼에 대한 메인 서픽스를 결정하고 - 메인 서픽스는 하나 이상의 빈들을 포함함 - , 메인 프리픽스가 비교 스트링과 동일하지 않을 때 이진 코드워드를 메인 프리픽스로 설정하거나 또는 메인 프리픽스가 비교 스트링과 동일할 때 메인 프리픽스의 종단을 메인 서픽스와 연접시킴으로써 이진 코드워드를 결정함으로써, 심볼에 대한 이진 코드워드를 결정하도록 구성된다.
본 발명의 추가적인 상세항목들이 첨부 도면들의 보조로 설명된다.
도 1은 컨텐츠 분배 시스템의 실시예를 도시하는 도면이다.
도 2는 큰 코딩 유닛들로 분할된 입력 이미지의 실시예를 도시하는 도면이다.
도 3은 코딩 유닛들로 분할된 큰 코딩 유닛의 실시예를 도시하는 도면이다.
도 4는 코딩 유닛들로 분할된 큰 코딩 유닛의 쿼드트리 표현을 도시하는 도면이다.
도 5는 코딩 유닛 내의 예측 유닛들의 가능한 예시적인 배열들을 도시하는 도면이다.
도 6은 예측 유닛을 인코딩 및/또는 디코딩하기 위한 방법의 실시예의 블록도를 도시하는 도면이다.
도 7은 예측 유닛들 및 변환 유닛들로 분할된 코딩 유닛의 예시적인 실시예를 도시하는 도면이다.
도 8은 변환 유닛들로 분할된 코딩 유닛들의 쿼드트리 표현의 예시적인 실시예를 도시하는 도면이다.
도 9는 상황-기반 적응형 이진 산술 코딩을 수행하는 방법의 실시예를 도시하는 도면이다.
도 10은 중요도 맵의 예시적인 실시예를 도시하는 도면이다.
도 11은 변환 유닛 내의 변환 계수들 및 변환 계수들의 서브세트들의 역 지그재그 스캔의 실시예를 도시하는 도면이다.
도 12는 변환 계수들에 대한 계수 레벨들 및 심볼들을 획득하는 방법의 실시예를 도시하는 도면이다.
도 13은 서브세트들 내의 변환 계수의 스캐닝 순서의 실시예를 도시하는 도면이다.
도 14는 심볼들 및 파라미터 변수들에 기초하여 생성된 이진 코드워드들의 표의 예시적인 실시예를 도시하는 도면이다.
도 15는 파라미터 변수를 업데이트시키기 위한 업데이트 표의 예시적인 실시예를 도시하는 도면이다.
도 16은 이진 코드워드의 실시예를 도시하는 도면이다.
도 17a는 파라미터 변수의 값들과 연관된 예시적인 최대 심볼 값들의 표를 도시하는 도면이다.
도 17b는 파라미터 변수들의 값들과 연관된 예시적인 최대 심볼 값들의 표를 도시하는 도면이다.
도 18은 상이한 최대 길이들을 사용하여 생성된 도 14의 일부분을 도시하는 도면이다.
도 19는 심볼에 대한 이진 코드워드를 결정하기 위한 방법의 흐름도의 실시예를 도시하는 도면이다.
도 20은 단항 이진화 프로세스(Unary Binarization Process)에 의해 결정된 비트 스트링들의 표를 도시하는 도면이다.
도 21은 컴퓨터 하드웨어의 예시적인 실시예를 도시하는 도면이다.
HEVC에서, 비디오 프레임과 같은 입력 프레임은, 이후 코드에서 식별되는 CU들로 나누어진다. CU들은 이후 후속적으로 기술될 바와 같이 코딩되는 서브-유닛들로 추가로 나누어진다.
초기에, 코딩을 위해, 쿼드트리 데이터 표현이 LCU(200)의 파티션을 기술하기 위해 사용될 수 있다. 쿼드트리 표현은 LCU(200) 및 CU들(202)에 대응하는 노드들을 가질 수 있다. 쿼드트리 표현의 각각의 노드에서, LCU(200) 또는 CU(202)가 4개의 CU들(202)로 분할되는 경우 플래그 "1"가 할당될 수 있다. 노드가 CU들(202)로 분할되지 않는 경우, 플래그 "0"가 할당될 수 있다. 비-제한적인 예시에 의해, 도 4에 도시된 쿼드트리 표현은 도 3에 도시된 LCU 파티션을 기술할 수 있고, LCU(200)는 4개의 CU들(202)로 분할되고, 제2 CU(202)는 4개의 더 작은 CU들(202)로 분할된다. 쿼드트리의 이진 데이터 표현은, 후속적으로 기술된 스킵 모드 플래그, 병합 모드 플래그, 및 PU 코딩 모드와 같은 다른 데이터와 함께, 오버헤드로서 코딩되고 전송될 수 있는 CU 분할 플래그일 수 있다. 비-제한적인 예시에 의해, 도 4에 도시된 CU 분할 플래그 쿼드트리 표현이 이진 데이터 표현 "10100"으로서 코딩될 수 있다.
쿼드트리의 각각의 리프에서, 최종 CU들(202)은 예측 유닛(PU)들(204)로 명명되는 하나 이상의 블록들로 분할될 수 있다. PU들(204)은 정사각형 또는 직사각형일 수 있다. 2Nx2N의 디멘젼을 갖는 CU(202)는 도 5에 도시된 PU들(204)의 4개의 예시적인 배열들 중 하나를 가질 수 있고, PU들(204)은 2Nx2N, 2NxN, Nx2N, 또는 NxN의 디멘젼을 가진다.
PU는 공간적 또는 시간적 예측을 통해 획득될 수 있다. 시간적 예측은 인터 모드 픽쳐들에 관련된다. 공간적 예측은 인트라 모드 픽쳐에 관한 것이다. 따라서, 각각의 CU(202)의 PU들(204)은 인트라 모드 또는 인터 모드 중 어느 하나에서 코딩될 수 있다. 인트라 모드 및 인터 모드 픽쳐들에 관한 코딩의 특징들은 후속하는 문단들에 기술된다.
인트라 모드 코딩은 I 픽쳐를 코딩하기 위해, 다른 이미지들을 참조하지 않고, 현재 입력 이미지로부터의 데이터를 사용할 수 있다. 인트라 모드에서, PU들(204)은 공간적으로 예측 코딩될 수 있다. CU(202)의 각각의 PU(204)는 자신의 고유한 공간적 예측 방향을 가질 수 있다. 공간적 예측 방향들은 수평, 수직, 45도 대각, 135도 대각, DC, 평면, 또는 임의의 다른 방향일 수 있다. PU(204)에 대한 공간적 예측 방향은 신택스 엘리먼트로서 코딩될 수 있다. 일부 실시예들에서, PU(204)에 대한 밝기 정보(Luma) 및 컬러 정보(Chroma)는 별도로 예측될 수 있다. 일부 실시예들에서, 4x4, 8x8, 16x16, 32x32, 및 64x64 블록들에 대한 Luma 인트라 예측 모드들의 수는 각각 18, 35, 35, 35, 및 4일 수 있다. 대안적인 실시예들에서, 임의의 사이즈의 블록들에 대한 Luma 인트라 예측 모드의 수는 35일 수 있다. 추가적인 모드가 Chroma 인트라 예측 모드에 대해 사용될 수 있다. 일부 실시예들에서, Chroma 예측 모드는 "IntraFromLuma" 로 명명될 수 있다.
인터 모드 코딩은 "P" 픽쳐들 및/또는 "B" 픽쳐들을 코딩하기 위해 현재 입력 이미지 및 하나 이상의 참조 이미지들로부터의 데이터를 사용할 수 있다. 일부 상황들 및/또는 실시예들에서, 인터 모드 코딩은 인트라 모드 코딩보다 더 높은 압축을 초래할 수 있다. 인터 모드에서, PU들(204)은 시간적으로 예측 코딩될 수 있고, 따라서 CU(202)의 각각의 PU(204)는 하나 이상의 모션 벡터들 및 하나 이상의 연관된 참조 이미지들을 가질 수 있다. 시간 예측은 연관된 참조 이미지들에 대해 PU(204)에 대한 최상의 매치 예측을 탐색하는 모션 추정 동작을 통해 수행될 수 있다. 최상의 매치 예측은 모션 벡터들 및 연관된 참조 이미지들에 의해 기술될 수 있다. P 픽쳐들은 현재 입력 이미지 및 하나 이상의 이전 참조 이미지들로부터의 데이터를 사용한다. B 픽쳐들은 현재 입력 이미지 및 이전 및 후속적인 참조 이미지들 모두로부터의 데이터를 사용하며, 2개까지의 모션 벡터들을 가질 수 있다. 모션 벡터들 및 참조 픽쳐들은 HEVC 비트스트림에서 코딩될 수 있다. 일부 실시예들에서, 모션 벡터들은 신택스 엘리먼트들 "MV"로서 코딩될 수 있고, 참조 픽쳐들은 신택스 엘리먼트들 "refIdx"로서 코딩될 수 있다. 일부 실시예들에서, 인터 모드 코딩은 공간적 및 시간적 예측 코딩 모두를 허용할 수 있다.
도 6은 PU(204) x가 인코딩되고 그리고/또는 디코딩될 수 있는 방법의 블록도를 도시한다. 606에서, 602에서의 인트라 모드 또는 604에서의 인터 모드에 의해 예측된 PU(206) x'는, 전술된 바와 같이, 잔여 PU(208) e를 획득하기 위해, 현재 PU(204) x로부터 차감될 수 있다. 608에서, 잔여 PU(208) e는 블록 변환을 이용하여 하나 이상의 변환 유닛(TU)들(210) E로 변환될 수 있다. 각각의 TU(210)는 하나 이상의 변환 계수들(212)을 포함할 수 있다. 일부 실시예들에서, 블록 변환은 정사각형일 수 있다. 대안적인 실시예들에서 블록 변환은 정사각형이 아닐 수 있다.
도 7에 도시된 바와 같이, HEVC에서, 상이한 사이즈들의 블록 변환들의 세트가 CU(202)에 대해 수행될 수 있고, 따라서, 일부 PU들(204)은 더 작은 TU들(210)로 분할될 수 있고, 다른 PU들(204)은 PU(204)와 동일한 사이즈인 TU들(210)을 가질 수 있다. CU들(202) 및 PU들(204)의 TU들(210)로의 분할은 쿼드트리 표현에 의해 도시될 수 있다. 비-제한적인 예시에 의해, 도 8에 도시된 쿼드트리 표현은 도 7에 도시된 CU(202) 내의 TU들(210)의 배열을 도시한다.
도 6을 다시 참조하면, 610에서, TU(210)의 변환 계수들(212), E은 유한 개수의 가능한 값들 중 하나로 양자화될 수 있다. 일부 실시예들에서, 이는 양자화에 의해 유실된 데이터가 복원가능하지 않을 수 있는 손실성 동작이다. 변환 계수들(212)이 양자화된 이후, 612에서, 양자화된 변환 계수들(212)은, 최종 압축 비트들(214)을 획득하기 위해, 하기에 논의되는 바와 같이, 엔트로피 코딩될 수 있다.
614에서, 양자화된 변환 계수들(212)은 역양자화된 변환 계수들(216) E'로 역양자화될 수 있다. 616에서, 역양자화된 변환 계수들(216) E'는 이후 잔여 PU(218) e'를 재구성하도록 역변환될 수 있다. 618에서, 재구성된 잔여 PU(218) e'는 이후, 602에서의 공간 예측 또는 604에서의 시간 예측을 통해 획득되는 대응하는 예측 PU(206) x'에 추가되어, 재구성된 PU(220) x"를 획득할 수 있다. 620에서, 디블로킹 필터가 재구성된 PU들(220) x"에 대해 사용되어 블록 결함들을 감소시킬 수 있다. 620에서, 재구성된 픽셀들 및 원래 픽셀들 사이의 픽셀 오프셋을 보상하도록 조건부로 수행될 수 있는 샘플 적응형 오프셋 프로세스가 또한 제공된다. 또한, 620에서, 적응형 루프 필터가 재구성된 PU들(220) x"에 대해 조건부로 사용되어, 입력 및 출력 이미지들 사이의 코딩 왜곡을 감소시키거나 최소화할 수 있다.
재구성된 이미지가 인터 모드 코딩에서 추후 시간적 예측을 위해 사용될 참조 이미지인 경우, 재구성된 이미지들은 참조 버퍼(622)에 저장될 수 있다. 인트라 모드 코딩된 이미지들은, 추가적인 재구성된 이미지들을 요구하지 않고 디코딩이 시작될 수 있는 가능한 포인트일 수 있다.
HEVC는 상황-기반 적응형 이진 산술 코딩(CABAC)과 같은 단계(612) 동안 엔트로피 코딩 방식을 사용할 수 있다. CABAC에 대한 코딩 프로세스는 도 9에 도시되어 있다. 902에서, 변환 유닛들(210)의 마지막 중요 변환 계수의 포지션이 코딩될 수 있다. 도 6을 다시 참조하면, 양자화된 변환 계수들이 TU들(210)을 양자화함으로써 생성된다. 변환 계수들(212)은 중요하거나 중요하지 않을 수 있다. 도 10은 변환 계수들(212)의 중요도 맵(1002)을 도시한다. 중요하지 않은 변환 계수들(212)은 제로의 양자화된 값을 가질 수 있는 반면, 중요한 변환 계수들(212)은 1 이상의 양자화된 값을 가질 수 있다. 일부 실시예들에서, 중요한 변환 계수들(212)은 또한 넌-제로의 양자화된 변환 계수들(212)로서 공지될 수 있다. TU(210)가 하나 이상의 중요한 변환 계수들(212)을 포함하는 경우, 도 10에 도시된 바와 같이, TU(210)의 상단 좌측 코너로부터 TU(210)의 하단 우측 코너로의 순방향 지그-재그 코딩 스캔을 따르는 마지막 중요한 변환 계수(212)의 좌표들이 코딩될 수 있다. 대안적인 실시예들에서, 중요한 변환 계수들(212)은 역 파면 스캔, 역 수평 스캔, 역 수직 스캔, 또는 임의의 다른 스캔 순서를 따라 스캐닝될 수 있다. 일부 실시예들에서, 이들 좌표들은 신택스 엘리먼트들 "last_significant_coeff_y" 및 "last_significant_coeff_x"로서 코딩될 수 있다. 비-제한적인 예시에 의해, 도 10은 도 9의 블록(902)에서 코딩되고 있는 TU(210) 내의 마지막 중요한 변환(212b)의 위치를 도시한다.
도 9의 블록(904)에서, 중요도 맵(1002)은 TU(210)에서 중요한 변환 계수들(212)의 각각의 위치들을 표시하도록 코딩될 수 있다. 중요도 맵(1002)은 TU(210) 내의 각각의 위치에 대한 이진 엘리먼트를 포함할 수 있다. 이진 엘리먼트는 그 위치에서의 변환 계수(212)가 중요하지 않음을 표시하기 위해 "0"으로서 코딩될 수 있다. 이진 엘리먼트는 그 위치에서의 변환 계수(212)가 중요함을 표시하기 위해 "1"로서 코딩될 수 있다.
도 11은 TU들(210)의 양자화된 변환 계수들(212)이 그룹들로 분할될 수 있는 방법을 예시한다. 일부 실시예들에서, 그룹들은 서브-블록들일 수 있다. 서브-블록들은 16개의 양자화된 변환 계수들(212)의 정사각형 블록들일 수 있다. 다른 실시예들에서, 그룹들은 서브세트들(1102)일 수 있다. 도 11에 도시된 바와 같이, 서브세트들(1102)은 역방향 지그재그 스캔의 스캔 순서에 따라 연속적인 16개의 양자화된 변환 계수들(212)을 포함할 수 있다. 제1 서브세트는, 마지막 중요한 변환 계수(212b)가 서브세트 내의 어디에 있는지와는 무관하게, 마지막 중요한 변환 계수(212b)를 포함하는 서브세트(1102)일 수 있다. 비-제한적인 예시에 의해, 마지막 중요한 변환 계수(212b)는 2개의 중요하지 않은 변환 계수들에 선행하여, 서브세트 내의 제14 변환 계수(212)일 수 있다.
일부 상황들 및/또는 실시예들에서, 마지막 중요한 변환 계수(212b)를 포함하는 그룹 이전에 역방향 스캔 순서에 따라 중요한 변환 계수를 포함하지 않는 16개의 양자화된 변환 계수들(212)의 하나 이상의 그룹들이 존재할 수 있다. 이들 상황들 및/또는 실시예들에서, 제1 서브세트는 마지막 중요한 변환 계수(212b)를 포함하는 서브세트(1102), 및 제1 서브세트(1102)가 서브세트(1102)의 일부로서 고려되기 이전의 임의의 그룹들일 수 있다. 비-제한적인 예시에 의해, 도 11에서, 제1 서브세트(1102) "서브세트 0"는 역방향 지그-재그 스캔 순서에 따른 16개의 변환 계수들(212)의 제2 그룹인 반면, TU(210)의 하위 우측 코너에서의 16개의 변환 계수들(212)의 그룹은, 그 변환 계수들(212) 중 어느 것도 중요하지 않으므로, 서브세트(1102)의 일부분이 아니다. 일부 실시예들에서, 제1 서브세트(1102)는 "서브세트 0"로서 표기될 수 있고, 추가적인 서브세트들(1102)은 "서브세트 1" "서브세트 2", 최대 "서브세트 N"로서 표기될 수 있다. 마지막 서브세트(1102)는 TU(210의 상단 좌측 코너에서의 위치 0, 0에서 DC 변환 계수(212)를 갖는 서브세트(1102)일 수 있다.
도 9를 다시 참조하면, 마지막 906에서, 각각의 양자화된 변환 계수(212)는 중요한 계수 레벨들에 대한 코딩을 포함하여, 도 6에 도시된 최종 압축 비트(214)를 획득하기 위해 이진 값들로 코딩될 수 있다. 코딩 동안 각각의 양자화된 변환 계수(212)의 절댓값은 양자화된 변환 계수(212)의 부호와는 별도로 코딩될 수 있다. 도 12는 양자화된 변환 계수들의 절댓값을 취하여 처리되는 코딩 단계들을 예시한다. 도 12에 도시된 바와 같이, 1202에서, 각각의 양자화된 변환 계수(212)의 절댓값은 블록(1204)에서 해당 양자화된 변환 계수(212)에 대한 계수 레벨(222)의 획득을 가능하게 하기 위해 취해질 수 있다.
더 높은 빈도로 발생할 것으로 예상되는 블록(1204)에서 획득된 계수 레벨들(222)은 더 낮은 빈도로 발생할 것으로 예상되는 계수 레벨들(222)에 앞서 코딩될 수 있다. 비-제한적인 예시에 의해, 일부 실시예들에서, 0, 1, 또는 2의 계수 레벨들(222)은 가장 자주 발생할 것으로 예상될 수 있다. 3개 부분들에서 계수 레벨들(222)을 코딩하는 것은 가장 자주 발생하는 계수 레벨들(222)을 식별하여, 가장 덜 빈번하게 발생할 것으로 예상될 수 있는 계수 레벨들(222)에 대한 더 복잡한 계산들을 남겨둘 수 있다. 일부 실시예들에서, 이는 계수 레벨들(222)을 3개 부분들에서 코딩함으로써 이루어질 수 있다. 먼저, 양자화된 변환 계수(212)의 계수 레벨(222)은 그것이 1보다 더 큰지의 여부를 결정하기 위해 체크될 수 있다. 계수 레벨(222)이 1보다 더 큰 경우, 계수 레벨(222)은 그것이 2보다 더 큰지의 여부를 결정하기 위해 체크될 수 있다.
도 12의 1206에서, 계수 레벨(222)이 2보다 더 큰 경우, 계수 레벨(222)은 심볼을 획득하기 위해 3의 임계 값(224)에 의해 차감될 수 있다. 비-제한적인 예시에 의해, 일부 실시예들에서, 계수 레벨(222)은 3개의 변수들: "coeff_abs_level_greater1_flag", "coeff_abs_level_greater2_flag", 및 "coeff_abs_level_minus3"로서 코딩될 수 있다. 2 이상의 계수 레벨(222)을 가지고 양자화된 변환 계수들(212)에 대해, "coeff_abs_level_greater1_flag"는 "1"로 설정될 수 있다. "coeff_abs_level_greater1_flag"가 "1"로 설정되고, 양자화된 변환 계수(212)가 또한 3 이상의 계수 레벨(222)을 갖는 경우, "coeff_abs_level_greater2_flag"가 "1"로 설정될 수 있다. "coeff_abs_level_greater2_flag"가 "1"로 설정되는 경우, 3의 임계 값(224)은 계수 레벨(222)로부터 차감되어, "coeff_abs_level_minus3"로서 코딩되는, 양자화된 변환 계수의 심볼(226)을 획득할 수 있다. 대안적인 실시예들에서, 계수 레벨(222)은 상이한 개수의 부분들에서 코딩될 수 있고, 그리고/또는 임계 값(224)은 3이 아닌 정수일 수 있다.
도 14는 심볼들(226) 및 파라미터 변수들(230)에 기초하여 생성된 이진 코드워드들(228)의 예시적인 표를 도시한다. 덜 빈번하게 발생하며 3 이상의 계수 레벨들(222)을 갖는 양자화된 변환 계수들(212)에 대해, 도 12의 블록들에서 결정된 바와 같이, 양자화된 변환 계수의 심볼(226)은 도 6에 도시된 바와 같이 생성되는 최종 압축 비트(214)의 일부분일 수 있는 이진 코드워드(228)로 전환될 수 있다. 도 14에 도시된 이진 코드워드(228)는 하나 이상의 빈들을 포함하는 빈 스트링일 수 있다. 각각의 빈은 1비트 이진 엘리먼트일 수 있다. 각각의 심볼(226)은 각각의 서브세트(1102) 또는 서브블록을 통해 스캔하고 파라미터 변수(230)의 값에 따라 순서대로 서브세트(1102) 또는 서브-블록의 각각의 심볼(226)을 전환하고, 이후 다음 서브세트(1102) 또는 서브-블록의 심볼들(226)에 이동함으로써 코딩될 수 있다. 이 코딩 진행을 보여주는 다이어그램은 도 13에서 도 11의 지그재그 라인들을 따라 서브세트들 0 및 1에 대해 도시되어 있다. 일부 실시예들에서, 현재 스캔 위치는 "n"으로 표기될 수 있다.
다시 도 14를 참조하면, 파라미터 변수(230)는 각각의 심볼(226)로서 업데이트될 수 있는 글로벌 변수가 코딩된다. 파라미터 변수(230)는 코드워드 분포의 평탄도를 제어할 수 있다. 일부 실시예들에서, 파라미터 변수(230)는 0과 N 사이의 임의의 정수일 수 있다. 비-제한적인 예시에 의해, 일부 실시예들에서, N은 3일 수 있고, 따라서, 파라미터 변수(230)는 0, 1, 2, 또는 3일 수 있다. 일부 실시예들에서, 파라미터 변수(230)는 도 14에 예시된 바와 같이, "cRiceParam"로서 표기될 수 있다.
도 15는 일부 실시예들에서, 파라미터 값들(230)이 각각의 심볼(226)에 대해 시간 경과에 따라 업데이트될 수 있는 방법을 예시하는 표를 제공한다. 업데이트들을 결정하기 위해, 일부 실시예들에서, 파라미터 변수는 각각의 서브세트(1102) 또는 서브블록의 시작에서 제로로 리셋될 수 있고, 이후 각각의 심볼(226)이 이진 코드워드(228)로 전환된 이후 업데이트될 수 있다. 파라미터 변수들(230)은 파라미터 변수(230)의 마지막 값 및 마지막으로 전환된 심볼(226)의 값에 기초하여 업데이트될 수 있다. 대안적인 실시예들에서, 파라미터 변수(230)는 초기에 제로로 설정되고, 다음으로, 이전 서브세트들 내의 심볼들(226)을 포함하여, 각각의 심볼(226)이 파라미터 변수(230)의 마지막 값 및 마지막으로 전환된 심볼(226)의 값에 기초하여 이진 코드워드(228)로 전환된 이후 업데이트된다. 일부 실시예들에서, 파라미터 변수(230)는 도 15에 도시된 표(1504)와 같은, 예측 값들의 표에 기초하여 업데이트될 수 있다.
일부 상황들 및/또는 실시예들에서, 더 낮은 파라미터 변수(230)를 가지고 심볼(226)을 전환하는 것은 더 높은 파라미터 변수(230)를 가지고 동일한 심볼(226)을 전환하는 것보다 더 적은 비트를 갖는 이진 코드워드(228)를 초래할 수 있다. 비-제한적인 예시로서, 도 14에 도시된 표에 의해 보여지는 바와 같이, 0의 심볼(226)을 전환하기 위해 0의 파라미터 변수(230)를 사용하는 것은 1 비트를 갖는 "0"의 이진 코드워드(228)를 초래할 수 있는 반면, 0의 심볼(226)을 전환하기 위해 1의 파라미터 변수(230)를 사용하는 것은 2비트를 갖는 "00"의 이진 코드워드(228)를 초래할 수 있다.
다른 상황들 및/또는 실시예들에서, 더 높은 파라미터 변수(230)를 가지고 심볼(226)을 전환하는 것은 더 낮은 파라미터 변수(230)를 가지고 동일한 심볼(226)을 전환하는 것보다 더 적은 비트를 갖는 이진 코드워드(228)를 초래할 수 있다. 비-제한적인 예시에 의해, 도 14에 도시된 표에서 보여지는 바와 같이, 6의 심볼(226)을 전환하기 위해 0의 파라미터 변수(230)를 사용하는 것은 7비트를 갖는 "1111110"의 이진 코드워드(228)를 초래하는 반면, 6의 심볼(226)을 전환하기 위해 2의 파라미터 변수(230)를 사용하는 것은 4비트를 갖는 "1010"의 이진 코드워드(228)를 초래할 수 있다.
도 16은 이진 코드워드(228)에 포함된 엘리먼트들의 실시예를 도시한다. 이진 코드워드(228)는 하나 이상의 빈들을 포함하는 메인 프리픽스(1602)를 가질 수 있다. 일부 상황들 및/또는 실시예들에서, 이진 코드워드(228)는 또한 하나 이상의 빈들을 포함하는 메인 서픽스(1604)를 가질 수 있다. 메인 서픽스(1604)는 메인 프리픽스(1602)의 종단과 연접되어 심볼(226)에 대한 이진 코드워드(228)를 획득할 수 있다. 다른 상황들 및/또는 실시예들에서, 메인 서픽스(1604)는 없을 수 있고, 이진 코드워드(228)는 메인 프리픽스(1602)일 수 있다.
심볼(226)에 대한 메인 프리픽스(1602)는 입력으로서, 도 17a 및 17b에 예시된, 심볼(226), 파라미터 변수(230), 및 최대 심볼 값(232)을 취하고, 메인 프리픽스(1602)로서 Truncated Rice 빈 스트링(1606)을 출력하는, Truncated Rice 이진화 프로세스에 의해 결정될 수 있다. 레퍼런스 소프트웨어 HM4.0와 같은 일부 통상적인 시스템들에서, 메인 프리픽스(1602)의 최대 길이는 상수 UInt g_auiGoRicePrefixLen[4] = { 8, 10, 11, 8}에 의해 제어된다. 그러나, 이들 값들에 의해 생성된 코드워드들(228)은 상수 UInt g_auiGoRicePrefixLen[4] = { 8, 10, 10, 8}를 사용함으로써 부분적으로 감소할 수 있는 리던던시들을 도입할 수 있다. 비-제한적인 예시로서, 도 18은 2로 설정된 파라미터 변수(230) cRiceParam를 사용하여 40 내지 43의 범위인 심볼들(226)에 대해 도 14에 도시된 표의 일부분을 도시한다. 표의 좌측은 UInt g_auiGoRicePrefixLen[4] = { 8, 10, 11, 8}를 갖는 HM4.0를 사용하고, UInt g_auiGoRicePrefixLen[4] = { 8, 10, 10, 8}를 사용하여 생성된 표의 우측 상의 코드워드들(228)보다 더 많은 비트를 갖는 코드워드들(228)을 생성한다. 도 14에 도시된 표는 UInt g_auiGoRicePrefixLen[4] = { 8, 10, 10, 8}를 가지고 생성된 코드워드들(228)을 사용한다.
파라미터 변수(230)의 각각의 가능한 값은 연관된 최대 심볼 값(232)을 가질 수 있다. 일부 실시예들에서, 특정 파라미터 변수(230)에 대한 최대 심볼 값(232)은 "cTRMax"로 표기될 수 있다. 비-제한적인 예시로서, 도 17a 및 17b는 파라미터 변수(230) "cRiceParam" 에 대한 최대 심볼 값(232) "cTRMax"의 예시적인 표들을 도시한다.
Truncated Rice 빈 스트링(1606)은 하나 이상의 빈들을 포함하는 Truncated Rice 프리픽스(1608)를 가질 수 있다. 일부 상황들 및/또는 실시예들에서, Truncated Rice 빈 스트링(1606)은 또한 하나 이상의 빈들을 포함하는 Truncated Rice 서픽스(1610)를 가질 수 있다. Truncated Rice 서픽스(1610)는 심볼(226)에 대한 Truncated Rice 빈 스트링(1606)을 획득하기 위해 Truncated Rice 프리픽스(1608)에 연접될 수 있으며, 이는 메인 프리픽스(1602)로서 사용될 수 있다. 다른 상황들 및/또는 실시예들에서, Truncated Rice 서픽스(1610)가 존재하지 않을 수 있고, Truncated Rice 빈 스트링(1606)은 Truncated Rice 프리픽스(1608)일 수 있다.
도 19는 각각의 심볼(226)에 대한 이진 코드워드(228)를 결정하기 위한 방법의 흐름도를 도시한다. 1902에서, 심볼(226)은 입력으로서 수용될 수 있다. 1904에서, 이진화 엘리먼트 및 단항 최대값(unary maximum value)이 심볼(226)의 값에 기초하여 결정될 수 있다. 이진화 엘리먼트를 결정하기 위해, 심볼(226)의 값 및 최대 심볼 값(232)은 어느 것이 더 작은지를 결정하기 위해 비교될 수 있고, 두 값들 중 더 작은 것이 파라미터 변수(230)의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트될 수 있다. 심볼(226)의 값 및 최대 심볼 값(232)이 동일한 경우, 이들이 공유하는 값은 파라미터 변수(230)의 값과 동일한 수의 이진 디지트만큼 우측으로 산술 시프트되어 이진화 엘리먼트를 획득할 수 있다. 일부 실시예들에서, 심볼(226)의 값은 "synElVal"으로서 표현될 수 있고, 이진화 엘리먼트를 결정하기 위한 우측 산술 시프트는 "min(synElVal, cTRMax) >> cRiceParam"로서 표현될 수 있다. 제2 값의 값과 동일한 수의 이진 디지트만큼 제1 값의 우측 시프트를 수행하는 것은 2^제2 값으로 제1 값을 나누고, 결과를 음의 무한대 쪽으로 반올림하여 정수를 획득한 것과 동등한 것일 수 있다.
단항 최대값은 이진화 엘리먼트의 최대 가능한 값일 수 있다. 단항 최대값은 파라미터 변수(230)의 값과 동일한 수의 이진 디지트만큼 최대 심볼 값(232)의 우측 산술 시프트를 수행함으로써 결정될 수 있다. 일부 실시예들에서, 단항 최대값을 결정하기 위한 우측 산술 시프트는 "cTRMax >> cRiceParam"로서 표현될 수 있다. 일부 실시예들에서, 단항 최대값은 "cMax"로서 표기될 수 있다.
도 19의 1906에서, 이진화 엘리먼트는 단항 최대값과 비교될 수 있다. 이진화 엘리먼트가 단항 최대값보다 더 작은 경우, 이진화 엘리먼트는 Truncated Rice 프리픽스(1608)(도 16)로 전환되고, 1908에서 단항 이진화 프로세스(Unary Binarization Process)를 사용하여 박스(1912)에 제공될 수 있다. 이진화 엘리먼트가 단항 최대값과 동일한 경우, 이진화 엘리먼트는 Truncated Rice 프리픽스(1608)로 전환되고, 1910에서 절단된 단항 이진화 프로세스(Truncated Unary Binarization Process)를 사용하여 박스(1912)에 제공될 수 있다.
1908에서의 단항 이진화 프로세스에서, Truncated Rice 프리픽스(1608)는 이진화 엘리먼트의 값 더하기 1과 동일한 수의 빈들을 포함하는 빈 스트링일 수 있다. 빈 스트링 내의 빈들은 위치 0 내지 N에 있을 수 있다. 이진화 엘리먼트의 값보다 더 적은 위치들에 대해, 빈들은 "1"로 설정될 수 있다. 이진화 엘리먼트의 값과 동일한 위치인 마지막 위치에 대해, 빈은 "0"으로 설정될 수 있다.
도 20은 0 내지 5의 범위인 값들을 가지며, 빈 위치에 의해 인덱싱되는(binIdx), 이진화 엘리먼트들에 대한 빈 스트링들의 표(2000)를 도시한다. 도 20에 도시된 바와 같은 비제한적인 예들에 의해, 4의 이진화 엘리먼트에 대한 Truncated Rice 프리픽스(1608)는 11110의 빈 스트링일 수 있고, 2의 이진화 엘리먼트에 대한 Truncated Rice 프리픽스(1608)는 110의 빈 스트링일 수 있다.
도 19를 다시 참조하면, 1910에서의 절단된 이진화 프로세스에서, Truncated Rice 프리픽스(1608)는 단항 최대값과 동일한 수의 빈들을 갖는 빈 스트링일 수 있고, 모든 빈들은 "1"로 설정된다. 비-제한적인 예시에 의해, 8의 단항 최대값에 대해, 8의 이진화 엘리먼트에 대한 Truncated Rice 프리픽스(1608)는 11111111와 같이 모든 8개 빈들이 "1"로 설정된 8개 빈들의 길이를 가질 수 있다. 일부 통상적인 시스템들에서, 파라미터 변수"0"에 대해 "7"의 최대 심볼 값을 갖는, 도 17a에 도시된 최대 심볼 값들(232)이 사용된다는 점에 유의해야 한다. 그러나, 이는, 심볼이 단항 최대값보다 더 클 때, 이들 기존의 시스템들에 어떠한 프로세스도 특정되지 않음에 따라, 일부 기존 시스템들에 에러들을 유입할 수 있다. 예를 들어, 일부 통상적인 시스템들에서, 최대 심볼 값이 7일 때, 심볼은 8이고, 파라미터 변수는 0이며, 코드워드 생성이 실패할 수 있다. 반면, 도 17b에 도시된 최대 심볼 값들(232)을 사용함으로써, 파라미터 변수 "0"에 대해 "8"의 최대 심볼 값을 가지고, 심볼이 8일 때, 프로세스는 단계(1910)로 이동하여 전술된 바와 같이 11111111의 Truncated Rice 프리픽스를 결정한다.
1912에서, Truncated Rice 프리픽스(1608)의 값은 1908에서 단항 이진화 프로세스 또는 1910에서 절단된 단항 이진화 프로세스에 의해 출력될 수 있다.
1914에서, 파라미터 변수(230)는 파라미터 변수(230)가 0보다 더 큰지를 결정하기 위해 체크될 수 있다. 파라미터 변수(230)의 값이 0인 경우, Truncated Rice 프리픽스(1608)(도 16)는 1920에서 전체 메인 프리픽스(1602)로서 사용될 수 있다. 파라미터 변수(230)의 값이 0보다 더 큰 경우, Truncated Rice 서픽스(1610)(도 16)가 1916에서 결정될 수 있다. Truncated Rice 서픽스(1610)는 파라미터 변수(230)의 값과 동일한 길이를 갖는 빈 스트링일 수 있다. 심볼(226)은 파라미터 변수(230)와 동일한 수의 이진 디지트만큼 우측 산술 시프트될 수 있다. 결과는 파라미터 변수(230)와 동일한 수의 이진 디지트만큼 좌측 산술 시프트될 수 있다. 제2 값의 값과 동일한 수의 이진 디지트만큼 제1 값의 좌측 산술 시프트를 수행하는 것은 2^제2 값으로 제1 값을 곱한 것과 동등한 것일 수 있다. 좌측 산술 시프트의 결과는 심볼(226)의 값으로부터 차감될 수 있고, 파라미터 변수(230)의 값과 동일한 수의 빈들을 갖는 이 결과의 이진 표현은 Truncated Rice 서픽스(1610)일 수 있다. 심볼(226)의 값이 "synElVal"로 표현되는 일부 실시예들에서, 1916에서의 동작은 "synElVal - ((synElVal >> cRiceParam) << cRiceParam)"로서 표현될 수 있다. 1918에서, Truncated Rice 서픽스(1610)는 Truncated Rice 프리픽스(1608)의 종단에 연접되어 전체 Truncated Rice 빈 스트링(1606)을 결정할 수 있으며, 이는 메인 프리픽스(1602)로서 사용될 수 있다.
1922에서, 메인 프리픽스(1602)는 비교 스트링과 비교될 수 있다. 비교 스트링은 모두 "1"로 설정된 하나 이상의 빈들의 스트링일 수 있으며, 비교 스트링 내의 빈들의 수는 파라미터 변수(230)와 동일한 수의 이진 디지트만큼 최대 심볼 값(232)을 우측 산술 시프트시키고, 이후 파라미터 변수(230)의 값을 가산함으로써 결정된다. 일부 실시예들에서, 비교 스트링의 길이의 결정은 "(cTRMax >> cRiceParam) + cRiceParam"로서 표현될 수 있다. 메인 프리픽스(1602)가 비교 스트링과 동일한 경우, 메인 서픽스(1604)가 1924에서 결정되어, 1926에서 메인 프리픽스(1602)의 종단에 연접되어, 1928에서 심볼(226)에 대한 최종 이진 코드워드(228) 빈 스트링을 결정할 수 있다. 메인 서픽스(1604)는 심볼(226)의 값 마이너스 최대 심볼 값(232) 마이너스 1에 대한 0차 지수-Golomb(Exp-Golomb) 코드일 수 있다. 심볼(226)의 값이 "coeff_abs_level_minus3[n]"로서 표현되는 일부 실시예들에서, 1824에서의 동작은 "coeff_abs_level_minus3[n] - cTRMax - 1"에 대한 0차 Exp-Golomb 코드로서 표현될 수 있다. 메인 프리픽스(1602)가 비교 스트링과 상이한 경우, 메인 서픽스(1604)가 없을 수 있고, 메인 프리픽스(1602)는 심볼(226)에 대한 최종 이진 코드워드(228) 빈 스트링으로서 사용될 수 있다. 이후 1928에서 최종 이진 코드워드가 출력될 수 있다.
실시예들을 구현하기 위해 요구되는 명령어들의 시퀀스들의 실행은 도 21에 도시된 바와 같이 컴퓨터 시스템(2100)에 의해 수행될 수 있다. 실시예에서, 명령어들의 시퀀스들의 실행은 단일 컴퓨터 시스템(2100)에 의해 수행된다. 다른 실시예들에 따라, 통신 링크(2115)에 의해 연결된 둘 이상의 컴퓨터 시스템들(2100)은 서로 합동으로 명령어들의 시퀀스를 수행할 수 있다. 오직 하나의 컴퓨터 시스템(2100)의 기재만이 본원에 제시될 수 있지만, 임의의 개수의 컴퓨터 시스템들(2100)이 사용될 수 있다는 점이 이해되어야 한다.
실시예에 따른 컴퓨터 시스템(2100)은 이제, 컴퓨터 시스템(2100)의 기능 컴포넌트의 블록도인 도 21에 관해 기술될 것이다. 본원에서 사용되는 바와 같이, 용어 컴퓨터 시스템(2100)은 하나 이상의 프로그램들을 저장하며 독립적으로 실행할 수 있는 임의의 컴퓨팅 디바이스를 기술하기 위해 널리 사용된다.
컴퓨터 시스템(2100)은 버스(2106)에 연결된 통신 인터페이스(2114)를 포함할 수 있다. 통신 인터페이스(2114)는 컴퓨터 시스템들(2100) 사이의 양방향 통신을 제공한다. 개별 컴퓨터 시스템(2100)의 통신 인터페이스(2114)는 다양한 타입의 신호 정보, 예를 들어, 명령어들, 메시지들 및 데이터를 나타내는 데이터 스트림들을 포함하는 전기, 전자기 또는 광학 신호들를 전송하고 수신한다. 통신 링크(2115)는 하나의 컴퓨터 시스템(2100)을 또 다른 컴퓨터 시스템(2100)과 연결시킨다. 예를 들어, 통신 링크(2115)는 LAN, 통합 서비스 디지털 네트워크(ISDN) 카드, 모뎀, 또는 인터넷일 수 있다.
컴퓨터 시스템(2100)은 프로그램들, 즉 애플리케이션, 코드를 포함하는, 메시지들, 데이터 및 명령어들을, 각자의 통신 링크(2115) 및 통신 인터페이스(2114)를 통해 전송하고 수신할 수 있다. 수신된 프로그램 코드는 그것이 수신될 때 각자의 프로세서(들)(2107)에 의해 실행되고 그리고/또는 추후 실행을 위해, 저장 디바이스(2110), 또는 다른 연관된 비휘발성 매체에 저장될 수 있다.
실시예에서, 컴퓨터 시스템(2100)은 데이터 저장 시스템(2131), 예를 들어, 컴퓨터 시스템(2100)에 의해 용이하게 액세스가능한 데이터베이스(2132)를 포함하는 데이터 저장 시스템(2131)과 공조하여 동작한다. 컴퓨터 시스템(2100)은 데이터 인터페이스(2133)를 통해 데이터 저장 시스템(2131)과 통신한다.
컴퓨터 시스템(2100)은 버스(2106) 또는 명령어들, 메시지들 및 데이터, 집합적으로 정보를 통신하기 위한 다른 통신 메커니즘, 및 정보를 프로세싱하기 위해 버스(2106)와 연결된 하나 이상의 프로세서들(2107)을 포함할 수 있다. 컴퓨터 시스템(2100)은 또한, 프로세서(들)(2107)에 의해 실행될 동적 데이터 및 명령어들을 저장하기 위해 버스(2106)에 연결된 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스와 같은, 주메모리(2108)를 포함한다. 컴퓨터 시스템(2100)은 프로세서(들)(2107)에 대한 정적 데이터 및 명령어들을 저장하기 위해 버스(2106)에 연결된 판독 전용 메모리(ROM)(2109) 또는 다른 정적 저장 디바이스를 더 포함할 수 있다. 자기 디스크 또는 광학 디스크와 같은 저장 디바이스(2110)가 또한 프로세서(들)(2107)에 대한 데이터 및 명령어들을 저장하기 위해 제공되며 버스(2106)에 연결될 수 있다.
컴퓨터 시스템(2100)은 LCD 스크린과 같은 디스플레이 디바이스(2111)에 버스(2106)를 통해 연결될 수 있다. 입력 디바이스(2112), 예를 들어, 영숫자 및 다른 키들이 프로세서(들)(2107)에 정보 및 커맨드 선택들을 전달하기 위해 버스(2106)에 연결된다.
일 실시예에 따라, 개별 컴퓨터 시스템(2100)은 주메모리(2108)에 포함된 하나 이상의 명령어들의 하나 이상의 시퀀스들을 실행하는 각자의 프로세서(들)(2107)에 의해 특정 동작들을 수행한다. 이러한 명령어들은 ROM(2109) 또는 저장 디바이스(2110)와 같은, 또 다른 컴퓨터-사용가능한 매체로부터 주 메모리(2108) 내로 판독될 수 있다. 주 메모리(2108)에 포함된 명령어들의 시퀀스들의 실행은 프로세서(들)(2107)로 하여금 본원에 기술된 프로세스들을 수행하게 한다. 대안적인 실시예들에서, 하드-배선 회로가 소프트웨어 명령어들 대신 또는 소프트웨어 명령어들과 함께 사용될 수 있다. 따라서, 실시예들은 하드웨어 회로 및/또는 소프트웨어의 임의의 특정 조합에 제한되지 않는다.
본 발명이 특수성을 가지고 전술되었지만, 이것은 단지 당업자에게 발명을 실시하고 사용하는 방법을 교시하는 것이었다. 많은 추가적인 수정들이 발명의 범위 내에 들 것이며, 그 범위는 후속하는 청구항들에 의해 정의된다.

Claims (20)

  1. 심볼에 대한 이진 코드워드(binary codeword)를 결정하는 방법으로서,
    인코더를 이용하여 파라미터 변수를 가지는 심볼에 대한 절단된 라이스 프리픽스(truncated rice prefix)를 결정하는 단계;
    상기 파라미터 변수가 제로보다 더 클 때, 상기 인코더를 이용하여 상기 심볼에 대한 절단된 라이스 서픽스(truncated rice suffix)를 결정하고, 상기 절단된 라이스 프리픽스의 종단을 상기 절단된 라이스 서픽스에 연접(concatenating)시켜 메인 프리픽스를 결정하는 단계; 및
    상기 메인 프리픽스가 비교 스트링과 동일할 때, 상기 인코더를 이용함으로써 상기 심볼에 대한 메인 서픽스를 결정하고, 상기 메인 프리픽스의 종단을 상기 메인 서픽스와 연접시켜 상기 심볼에 대한 상기 이진 코드워드를 결정하는 단계
    를 포함하고,
    상기 메인 서픽스는 상기 심볼의 값 마이너스 최대 심볼 값 마이너스 1에 대한 0차 지수 Golomb 코드에 의해 결정되고,
    상기 최대 심볼 값은 상기 파라미터 변수가 0일 때 8이고; 상기 최대 심볼 값은 상기 파라미터 변수가 1일 때 20이고; 상기 최대 심볼 값은 상기 파라미터 변수가 2일 때 42이고; 상기 최대 심볼 값은 상기 파라미터 변수가 3일 때 70인, 방법.
  2. 제1항에 있어서,
    상기 파라미터 변수가 제로와 같을 때, 상기 메인 프리픽스를 상기 절단된 라이스 프리픽스로 설정함으로써 상기 심볼에 대한 메인 프리픽스를 결정하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 메인 프리픽스가 상기 비교 스트링과 동일하지 않을 때, 상기 이진 코드워드를 상기 메인 프리픽스로 설정함으로써 상기 심볼에 대한 상기 이진 코드워드를 결정하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 절단된 라이스 프리픽스를 결정하는 단계는:
    상기 심볼의 값 및 상기 최대 심볼 값 중 더 작은 것을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트(right arithmaetic shifting)시킴으로써 상기 인코더에 의해 이진화 엘리먼트를 결정하는 단계;
    상기 최대 심볼 값을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시킴으로써 상기 인코더에 의해 단항 최대값(unary maximum value)을 결정하는 단계;
    상기 이진화 엘리먼트가 상기 단항 최대값보다 더 작을 때, 단항 이진화 프로세스(unary binarization process)에 의해 상기 인코더를 이용하여 상기 절단된 라이스 프리픽스를 결정하는 단계; 및
    상기 이진화 엘리먼트가 상기 단항 최대값과 동일할 때, 절단된 단항 이진화 프로세스(truncated unary binarization process)에 의해 상기 절단된 라이스 프리픽스를 결정하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 절단된 라이스 서픽스는:
    상기 인코더를 이용하여 상기 심볼을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시켜 제1 결과를 획득하고;
    상기 인코더를 이용하여 상기 제1 결과를 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 좌측 산술 시프트시켜 제2 결과를 획득하고;
    상기 인코더를 이용하여 상기 심볼로부터 상기 제2 결과를 차감하여 제3 결과를 획득하고;
    상기 인코더를 이용하여 상기 제3 결과를 이진화하여 상기 절단된 라이스 서픽스를 획득함으로써 결정되는, 방법.
  6. 제1항에 있어서,
    상기 비교 스트링은, 빈들 각각이 "1"로 설정되어 있고, 상기 최대 심볼 값을 상기 파라미터 변수와 동일한 수의 이진 디지트만큼 우측 산술 시프트시키고 그후 상기 파라미터 변수의 값을 가산함으로써 결정되는 길이를 갖는 빈 스트링인, 방법.
  7. 제1항에 있어서,
    상기 이진 코드워드는 변환 유닛(TU) 내에 제공되는 변환 계수의 표현이고, 상기 변환 유닛은 고효율성 비디오 코딩(HEVC: High Efficiency Video Coding) 신호에서 코딩 유닛(CU)의 세부분할(subdivision)인, 방법.
  8. 비디오 인코더로서,
    심볼, 파라미터 변수 및 최대 심볼 값을 저장하도록 구성되는 메모리; 및
    상기 메모리와 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 심볼에 대한 절단된 라이스 프리픽스를 결정하고;
    상기 파라미터 변수가 제로보다 더 클 때, 상기 심볼에 대한 절단된 라이스 서픽스를 결정하고, 상기 절단된 라이스 프리픽스의 종단을 상기 절단된 라이스 서픽스와 연접시켜 메인 프리픽스를 결정하고;
    상기 메인 프리픽스가 비교 스트링과 동일할 때, 상기 심볼에 대한 메인 서픽스를 결정하고, 상기 메인 프리픽스의 종단을 상기 메인 서픽스와 연접시켜 이진 코드워드를 결정함으로써,
    상기 심볼에 대한 이진 코드워드를 결정하도록 구성되고,
    상기 메인 서픽스는 상기 심볼의 값 마이너스 최대 심볼 값 마이너스 1에 대한 0차 지수 Golomb 코드에 의해 결정되고,
    상기 최대 심볼 값은 상기 파라미터 변수가 0일 때 8이고; 상기 최대 심볼 값은 상기 파라미터 변수가 1일 때 20이고; 상기 최대 심볼 값은 상기 파라미터 변수가 2일 때 42이고; 상기 최대 심볼 값은 상기 파라미터 변수가 3일 때 70인, 비디오 인코더.
  9. 제8항에 있어서,
    상기 프로세서는,
    상기 심볼의 값 및 상기 최대 심볼 값 중 더 작은 것을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시킴으로써 이진화 엘리먼트를 결정하고;
    상기 최대 심볼 값을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시킴으로써 단항 최대값을 결정하고;
    상기 이진화 엘리먼트가 상기 단항 최대값보다 더 작을 때, 단항 이진화 프로세스에 의해 상기 절단된 라이스 프리픽스를 결정하고;
    상기 이진화 엘리먼트가 상기 단항 최대값과 동일할 때, 절단된 단항 이진화 프로세스에 의해 상기 절단된 라이스 프리픽스를 결정하도록 더 구성되는, 비디오 인코더.
  10. 제8항에 있어서,
    상기 프로세서는,
    상기 심볼을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시켜 제1 결과를 획득하고;
    상기 제1 결과를 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 좌측 산술 시프트시켜 제2 결과를 획득하고;
    상기 심볼로부터 상기 제2 결과를 차감하여 제3 결과를 획득하고;
    상기 제3 결과를 이진화하여 상기 절단된 라이스 서픽스를 획득하도록 더 구성되는, 비디오 인코더.
  11. 제10항에 있어서,
    상기 절단된 라이스 서픽스의 길이는 상기 파라미터 변수의 값과 동일한, 비디오 인코더.
  12. 제8항에 있어서,
    상기 비교 스트링은, 빈들 각각이 "1"로 설정되어 있고, 상기 최대 심볼 값을 상기 파라미터 변수와 동일한 수의 이진 디지트만큼 우측 산술 시프트시키고 이후 상기 파라미터 변수의 값을 가산함으로써 결정되는 길이를 갖는 빈 스트링인, 비디오 인코더.
  13. 심볼에 대한 이진 코드워드를 결정하기 위한 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 매체로서,
    컴퓨터 시스템의 하나 이상의 프로세서들에 의한 상기 프로그램 명령어들의 실행은 상기 하나 이상의 프로세서들로 하여금,
    심볼, 파라미터 변수, 및 상기 파라미터 변수와 연관된 최대 심볼 값을 수신하는 단계;
    상기 심볼에 대한 절단된 라이스 프리픽스를 결정하는 단계;
    상기 파라미터 변수가 제로보다 더 클 때, 상기 심볼에 대한 절단된 라이스 서픽스를 결정하고, 상기 절단된 라이스 프리픽스의 종단을 상기 절단된 라이스 서픽스와 연접시켜 메인 프리픽스를 결정하는 단계; 및
    상기 메인 프리픽스가 비교 스트링과 동일할 때, 상기 심볼에 대한 메인 서픽스를 결정하고 상기 메인 프리픽스의 종단을 상기 메인 서픽스와 연접시켜 상기 심볼에 대한 상기 이진 코드워드를 결정하는 단계
    를 수행하게 하고,
    상기 메인 서픽스는 상기 심볼의 값 마이너스 최대 심볼 값 마이너스 1에 대한 0차 지수 Golomb 코드에 의해 결정되고, 상기 최대 심볼 값은 상기 파라미터 변수가 0일 때 8이고; 상기 최대 심볼 값은 상기 파라미터 변수가 1일 때 20이고; 상기 최대 심볼 값은 상기 파라미터 변수가 2일 때 42이고; 상기 최대 심볼 값은 상기 파라미터 변수가 3일 때 70인, 컴퓨터 판독가능한 매체.
  14. 제13항에 있어서,
    컴퓨터 시스템의 하나 이상의 프로세서들에 의한 상기 프로그램 명령어들의 실행은 상기 하나 이상의 프로세서들로 하여금,
    상기 심볼의 값 및 상기 최대 심볼 값 중 더 작은 것을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시킴으로써 이진화 엘리먼트를 결정하는 단계;
    상기 최대 심볼 값을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시킴으로써 단항 최대값을 결정하는 단계;
    상기 이진화 엘리먼트가 상기 단항 최대값보다 더 작을 때, 단항 이진화 프로세스에 의해 상기 절단된 라이스 프리픽스를 결정하는 단계; 및
    상기 이진화 엘리먼트가 상기 단항 최대값과 동일할 때, 절단된 단항 이진화 프로세스에 의해 상기 절단된 라이스 프리픽스를 결정하는 단계
    를 더 수행하게 하는, 컴퓨터 판독가능한 매체.
  15. 제13항에 있어서,
    컴퓨터 시스템의 하나 이상의 프로세서들에 의한 상기 프로그램 명령어들의 실행은 상기 하나 이상의 프로세서들로 하여금,
    상기 심볼을 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 우측 산술 시프트시켜 제1 결과를 획득하는 단계;
    상기 제1 결과를 상기 파라미터 변수의 값과 동일한 수의 이진 디지트만큼 좌측 산술 시프트시켜 제2 결과를 획득하는 단계;
    상기 심볼로부터 상기 제2 결과를 차감하여 제3 결과를 획득하는 단계; 및
    상기 제3 결과를 이진화하여 상기 절단된 라이스 서픽스를 획득하는 단계
    를 더 수행하게 하는, 컴퓨터 판독가능한 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020147014976A 2011-11-08 2012-11-08 변환 계수들에 대한 이진 코드워드들을 결정하는 방법 KR101672107B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161557403P 2011-11-08 2011-11-08
US61/557,403 2011-11-08
US13/672,103 2012-11-08
PCT/US2012/064236 WO2013070974A2 (en) 2011-11-08 2012-11-08 Method of determining binary codewords for transform coefficients
US13/672,103 US9641835B2 (en) 2011-11-08 2012-11-08 Method of determining binary codewords for transform coefficients

Publications (2)

Publication Number Publication Date
KR20140098110A KR20140098110A (ko) 2014-08-07
KR101672107B1 true KR101672107B1 (ko) 2016-11-02

Family

ID=47228059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147014976A KR101672107B1 (ko) 2011-11-08 2012-11-08 변환 계수들에 대한 이진 코드워드들을 결정하는 방법

Country Status (5)

Country Link
US (2) US9641835B2 (ko)
KR (1) KR101672107B1 (ko)
CN (1) CN103918273B (ko)
BR (1) BR112014011155B1 (ko)
WO (1) WO2013070974A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108377392A (zh) * 2011-11-08 2018-08-07 三星电子株式会社 用于对视频进行解码的方法
BR112014011150B1 (pt) 2011-11-08 2022-08-09 Google Technology Holdings LLC Método de determinação de palavras de código binárias para coeficientes de transformada
US9172962B2 (en) * 2012-01-20 2015-10-27 Blackberry Limited Methods and systems for pipelining within binary arithmetic coding and decoding
US9635358B2 (en) 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
EP2805497A1 (en) 2012-01-21 2014-11-26 Motorola Mobility LLC Method of determining binary codewords for transform coefficients
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
US9565435B2 (en) 2012-02-04 2017-02-07 Google Technology Holdings LLC Devices and methods for context reduction in last significant coefficient position coding
WO2013116874A1 (en) 2012-02-05 2013-08-08 General Instrument Corporation Method of determining binary codewords for transform coefficients
US9955163B2 (en) * 2013-06-17 2018-04-24 Google Llc Two pass quantization of video data
US9503760B2 (en) * 2013-08-15 2016-11-22 Mediatek Inc. Method and system for symbol binarization and de-binarization
US9930348B2 (en) * 2014-03-14 2018-03-27 Qualcomm Incorporated Coefficient level coding in a video coding process
CN105874795B (zh) 2014-09-30 2019-11-29 微软技术许可有限责任公司 在波前并行处理被启用时对图片内预测模式的规则
US9781424B2 (en) 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
CN106664405B (zh) * 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
US11309911B2 (en) 2019-08-16 2022-04-19 Advanced Micro Devices, Inc. Semi-sorting compression with encoding and decoding tables

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2870515B2 (ja) 1996-12-27 1999-03-17 日本電気株式会社 可変長符号化装置
US7206448B2 (en) 2002-02-28 2007-04-17 At&T Corp. System and method for using pattern vectors for video and image coding and decoding
US7158684B2 (en) 2002-04-25 2007-01-02 Texas Instruments Incoporated Entropy coding scheme for video coding
CN1230000C (zh) * 2003-11-04 2005-11-30 浙江大学 视频编解码中变换系数块的扫描方法和装置
US7379608B2 (en) 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
KR100556340B1 (ko) * 2004-01-13 2006-03-03 (주)씨앤에스 테크놀로지 영상 부호화 장치
US7580585B2 (en) 2004-10-29 2009-08-25 Microsoft Corporation Lossless adaptive Golomb/Rice encoding and decoding of integer data using backward-adaptive rules
EP1962514A4 (en) 2005-12-05 2012-02-15 Huawei Tech Co Ltd BINARIZATION METHOD AND ASSOCIATED DEVICE
FR2900004A1 (fr) * 2006-04-18 2007-10-19 Thomson Licensing Sas Procede et dispositif de decodage arithmetique
US7845571B2 (en) * 2006-06-19 2010-12-07 Monro Donald M Data compression
US8275045B2 (en) 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
US7813567B2 (en) 2007-04-26 2010-10-12 Texas Instruments Incorporated Method of CABAC significance MAP decoding suitable for use on VLIW data processors
US7885473B2 (en) 2007-04-26 2011-02-08 Texas Instruments Incorporated Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors
KR101539240B1 (ko) 2007-06-14 2015-07-30 삼성전자주식회사 영상 데이터의 엔트로피 부호화, 복호화 방법 및 장치
US8891615B2 (en) 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
KR101375668B1 (ko) 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
EP2164176A1 (en) * 2008-09-12 2010-03-17 Thomson Licensing Method for lossless compressing prefix-suffix-codes, method for decompressing a bit sequence representing integers or symbols encoded in compressed prefix-suffix-codes and storage medium or signal carrying compressed prefix-suffix-codes
JP5274317B2 (ja) * 2009-03-17 2013-08-28 パナソニック株式会社 符号量推定装置、符号量推定方法、符号量推定プログラムおよび、符号量推定集積回路
US8588536B2 (en) 2010-02-22 2013-11-19 Texas Instruments Incorporated Guaranteed-rate tiled image data compression
JP5707412B2 (ja) 2010-09-29 2015-04-30 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置、プログラムおよび集積回路
US8526495B2 (en) 2010-11-22 2013-09-03 Mediatek Singapore Pte. Ltd. Apparatus and method of constrained partition size for high efficiency video coding
EP2664070B1 (en) 2011-01-14 2016-11-02 GE Video Compression, LLC Entropy encoding and decoding scheme
US20130016789A1 (en) 2011-07-15 2013-01-17 General Instrument Corporation Context modeling techniques for transform coefficient level coding
EP2777258B1 (en) * 2011-11-04 2017-01-11 Huawei Technologies Co., Ltd. Binarization of prediction residuals for lossless video coding
US20130114685A1 (en) * 2011-11-07 2013-05-09 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
BR112014011150B1 (pt) 2011-11-08 2022-08-09 Google Technology Holdings LLC Método de determinação de palavras de código binárias para coeficientes de transformada
US20130182772A1 (en) 2012-01-13 2013-07-18 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9635358B2 (en) 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
WO2013110000A1 (en) 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
EP2805497A1 (en) 2012-01-21 2014-11-26 Motorola Mobility LLC Method of determining binary codewords for transform coefficients
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
US9565435B2 (en) 2012-02-04 2017-02-07 Google Technology Holdings LLC Devices and methods for context reduction in last significant coefficient position coding
WO2013116874A1 (en) 2012-02-05 2013-08-08 General Instrument Corporation Method of determining binary codewords for transform coefficients
US9363510B2 (en) 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
B. Bross, et al. WD4: Working Draft 4 of High-Efficiency Video Coding. JCT-VC of ITU-T and ISO/IEC, JCTVC-F803 Ver.3, Sep. 8, 2011, pp.1-222*
T. Nguyen, et al. CE11: Coding of transform coefficient levels with Golomb-Rice codes. JCT-VC of ITU-T and ISO/IEC. JCTVC-E253 Ver.1, Mar. 11, 2011, pp.1-5*
T. Nguyen, et al. Reduced-complexity entropy coding of transform coefficient levels using a combination of VLC and PIPE. JCT-VC of ITU-T and ISO/IEC. JCTVC-D336 Ver.1, Jan. 2011, pp.1-8*
T. Nguyen, et al. Reduced-complexity entropy coding of transform coefficient levels using truncated golomb-rice codes in video compression. ICIP 2011, Sep. 2011, pp.753-756*

Also Published As

Publication number Publication date
WO2013070974A3 (en) 2014-01-03
WO2013070974A2 (en) 2013-05-16
BR112014011155A8 (pt) 2022-11-01
US20170237995A1 (en) 2017-08-17
BR112014011155B1 (pt) 2023-04-04
KR20140098110A (ko) 2014-08-07
US20130322547A1 (en) 2013-12-05
CN103918273A (zh) 2014-07-09
BR112014011155A2 (pt) 2017-05-16
US9641835B2 (en) 2017-05-02
US9866850B2 (en) 2018-01-09
CN103918273B (zh) 2017-11-17

Similar Documents

Publication Publication Date Title
KR101672107B1 (ko) 변환 계수들에 대한 이진 코드워드들을 결정하는 방법
KR101660605B1 (ko) 변환 계수들에 대한 이진 코드워드들을 결정하는 방법
US10623742B2 (en) Method of determining binary codewords for transform coefficients
EP2839645B1 (en) Coefficient groups and coefficient coding for coefficient scans
US9167245B2 (en) Method of determining binary codewords for transform coefficients
US9635358B2 (en) Method of determining binary codewords for transform coefficients
WO2013116081A2 (en) Residual quad tree (rqt) coding for video coding
KR20140090646A (ko) 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들
EP2847997A1 (en) Grouping bypass coded syntax elements in video coding
WO2012138032A1 (ko) 영상 정보 부호화 방법 및 복호화 방법
US20130188729A1 (en) Method of determining binary codewords for transform coefficients
WO2019245692A1 (en) Trellis coded quantization coefficient coding
EP2777279B1 (en) Method of determining binary codewords for transform coefficients
KR20220024041A (ko) 변환 스킵 잔차 코딩에서의 이진화
US20240129512A1 (en) Encoding and decoding method, encoder, decoder, and storage medium

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

Year of fee payment: 4