KR20140120341A - 비디오 코딩에서의 계수들의 코딩 - Google Patents

비디오 코딩에서의 계수들의 코딩 Download PDF

Info

Publication number
KR20140120341A
KR20140120341A KR1020147022892A KR20147022892A KR20140120341A KR 20140120341 A KR20140120341 A KR 20140120341A KR 1020147022892 A KR1020147022892 A KR 1020147022892A KR 20147022892 A KR20147022892 A KR 20147022892A KR 20140120341 A KR20140120341 A KR 20140120341A
Authority
KR
South Korea
Prior art keywords
coefficient
coefficients
syntax element
coding
causal
Prior art date
Application number
KR1020147022892A
Other languages
English (en)
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 KR20140120341A publication Critical patent/KR20140120341A/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/103Selection of coding mode or of prediction mode
    • 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/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
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 인코더는 계수 블록에서의 계수들에 대해 다수의 코딩 패스들을 수행한다. 각각의 코딩 패스 동안, 비디오 인코더는 계수 블록에서의 계수들에 대한 상이한 구문 엘리먼트들의 세트를 인코딩한다. 비디오 디코더는 계수에 대한 구문 엘리먼트들을 이용하여 계수의 값을 결정한다. 비디오 인코더가 코딩 패스를 수행할 때, 비디오 인코더는 비인과 계수에 대해 이전 코딩 패스에서 발생된 구문 엘리먼트에 적어도 부분적으로 기초하여, 그리고, 인과 계수에 대해 현재의 코딩 패스 동안 발생되는 구문 엘리먼트의 값에 적어도 부분적으로 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택한다. 비디오 인코더는 선택된 코딩 컨텍스트에 기초하여, 구문 엘리먼트를 엔트로피 인코딩한다. 비디오 디코더는 비디오 디코더가 코딩 컨텍스트들을 선택하고 구문 엘리먼트들을 엔트로피 디코딩하는 유사한 일련의 코딩 패스들을 수행한다.

Description

비디오 코딩에서의 계수들의 코딩{CODING OF COEFFICIENTS IN VIDEO CODING}
본 출원은 2012년 1월 22일자에 출원된 미국 가특허 출원번호 제 61/589,384호; 2012년 1월 30일자에 출원된 미국 가특허 출원번호 제 61/592,300호; 2012년 3월 2일자에 출원된 미국 가특허 출원번호 제 61/606,300호; 2012년 3월 2일자에 출원된 미국 가특허 출원번호 제 61,606,304호; 2012년 3월 2일자에 출원된 미국 가특허 출원번호 제 61/606,338호; 2012년 4월 16일자에 출원된 미국 가특허 출원번호 제 61/625,062호; 및 2012년 4월 16일자에 출원된 미국 가특허 출원번호 제 61/625,072호의 이익을 주장하며, 이의 각각의 전체 내용이 참조로 포함된다.
기술 분야
본 개시물은 비디오 코딩 및 압축, 특히, 비디오 코딩에서 계수들의 코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기들 (PDAs), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트폰들", 비디오 원격회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, AVC (Advanced Video Coding), 현재 개발중인 HEVC (High Efficiency Video Coding) 표준, 및 이런 표준들의 확장판들에 의해 정의된 표준들에서 설명되는 비디오 코딩 기법들과 같은, 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이런 비디오 압축 기법들을 구현함으로써, 디지털 비디오 정보를 좀더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 또는 제거하기 위해 공간 (인트라-화상) 예측 및/또는 시간 (인터-화상) 예측을 수행한다. 블록-기반 비디오 코딩에 있어, 비디오 슬라이스 (즉, 비디오 프레임 또는 비디오 프레임의 일부) 는 비디오 블록들로 파티셔닝될 수도 있으며, 이 비디오 블록들은 또한 트리 블록들, 코딩 유닛들 (CUs) 및/또는 코딩 노드들로서 지칭될 수도 있다. 화상의 인트라-코딩된 (I) 슬라이스에서 비디오 블록들은 동일한 화상에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 화상의 인터-코딩된 (P 또는 B) 슬라이스에서 비디오 블록들은 동일한 화상에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측, 또는 다른 참조 화상들에서의 참조 샘플들에 대한 시간 예측을 이용할 수도 있다. 화상들은 프레임들로 지칭될 수 있으며, 참조 화상들은 참조 프레임들로서 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔여 데이터는 코딩될 원래 블록과 예측 블록 사이의 픽셀 차이들을 나타낸다. 인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터를 따라 인코딩되며, 잔여 데이터는 코딩된 블록과 예측 블록 사이의 차이를 나타낸다. 인트라-코딩된 블록은 인트라-코딩 모드 및 잔여 데이터에 따라서 인코딩된다. 추가적인 압축을 위해, 잔여 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환될 수도 있으며, 이는 잔여 계수들을 초래하고, 이는 다음으로 양자화될 수도 있다. 2차원 어레이로 초기에 배열된 양자화된 계수들은 계수들의 1차원 벡터를 발생하기 위해 스캐닝될 수도 있으며, 훨씬 더 많은 압축을 달성하기 위해 엔트로피 코딩이 적용될 수도 있다.
일반적으로, 본 개시물은 비디오 코딩에서 계수 블록의 계수들을 코딩하는 기법들을 기술한다. 계수들은, 예측 코딩되어 주파수 도메인으로 변환되는 비디오 블록과 연관되는 잔여 픽셀 값들의 세트에 대응하는 변환된 계수들을 포함할 수도 있다. 다르게는, 잔여 샘플 블록에 변환이 적용되지 않으면, 계수들은 샘플 도메인에서의 잔여 샘플들일 수도 있다. 특히, 비디오 인코더는 계수 블록을 발생하고 계수 블록에서의 계수들에 대해 다수의 코딩 패스들 (coding passes) 을 수행한다. 각각의 코딩 패스 동안, 비디오 인코더는 계수 블록에서의 계수들에 대한 상이한 구문 엘리먼트들의 세트를 인코딩한다. 비디오 디코더는 계수에 대한 구문 엘리먼트들을 이용하여, 계수의 값을 결정할 수도 있다. 비디오 인코더가 초기 코딩 패스외의 코딩 패스를 수행할 때, 비디오 인코더는 비인과 계수 (non-casual coefficient) 에 대해 조기 코딩 패스에서 발생된 구문 엘리먼트의 값에 적어도 부분적으로 기초하여, 그리고 인과 계수 (casual coefficient) 에 대해 현재의 코딩 패스 동안 발생되는 구문 엘리먼트의 값에 적어도 부분적으로 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트 (coding context) 를 선택할 수도 있다. 비인과 계수는, 현재의 코딩 패스의 코딩 순서에 따라서, 계수 후에 생기며, 인과 계수는 계수 전에 생긴다. 비디오 인코더는 선택된 코딩 컨텍스트에 기초하여, 구문 엘리먼트를 엔트로피 인코딩할 수도 있다. 비디오 디코더는 비디오 디코더가 코딩 컨텍스트들을 선택하고 계수들의 구문 엘리먼트들을 엔트로피 디코딩하는 유사한 일련의 코딩 패스들을 수행할 수도 있다.
일 양태에서, 본 개시물은 비디오 데이터를 인코딩하는 방법을 설명한다. 본 방법은 잔여 샘플 블록에 기초하여, 계수 블록을 발생하는 단계를 포함한다. 게다가, 본 방법은 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하는 단계를 포함한다. 더욱이, 본 방법은 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계를 포함한다. 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계는 제 1 구문 엘리먼트를 발생하는 단계를 포함하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계는 또한 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 단계를 포함한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 게다가, 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계는 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩하는 단계를 포함한다.
또 다른 양태에서, 본 개시물은 잔여 샘플 블록에 기초하여, 계수 블록을 발생하도록 구성된 하나 이상의 프로세서들을 포함하는 비디오 인코딩 디바이스를 기술한다. 하나 이상의 프로세서들은 또한 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하도록 구성된다. 게다가, 하나 이상의 프로세서들은 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하도록 구성된다. 하나 이상의 프로세서들은 제 2 코딩 패스 동안 하나 이상의 프로세서들이 제 1 구문 엘리먼트를 발생하도록 구성되며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 제 2 코딩 패스 동안, 하나 이상의 프로세서들은 또한 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 게다가, 제 2 코딩 패스 동안, 하나 이상의 프로세서들은 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩한다.
또 다른 양태에서, 본 개시물은 잔여 샘플 블록에 기초하여, 계수 블록을 발생하는 수단을 포함하는 비디오 인코딩 디바이스를 기술한다. 비디오 인코딩 디바이스는 또한 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하는 수단을 포함한다. 게다가, 비디오 인코딩 디바이스는 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하는 수단을 포함한다. 구문 엘리먼트의 제 2 세트를 인코딩하는 수단은 제 1 구문 엘리먼트를 발생하는 수단을 포함하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 구문 엘리먼트들의 제 2 세트를 인코딩하는 수단은 또한 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 수단을 포함한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기하며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 구문 엘리먼트들의 제 2 세트를 인코딩하는 수단은 또한 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩하는 수단을 포함한다.
또 다른 양태에서, 본 개시물은 비디오 인코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 잔여 샘플 블록에 기초하여 계수 블록을 발생하도록 비디오 인코딩 디바이스를 구성하는 명령들을 저장하는 컴퓨터-판독가능 저장 매체를 기술한다. 명령들은 또한 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하도록 비디오 인코딩 디바이스를 구성한다. 명령들은 또한 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하도록 비디오 인코딩 디바이스를 구성한다. 명령들은 제 2 코딩 패스 동안 비디오 인코딩 디바이스가 제 1 구문 엘리먼트를 발생하도록 비디오 인코딩 디바이스를 구성하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 명령들은 또한 제 2 코딩 패스 동안, 비디오 인코딩 디바이스가 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하도록, 비디오 인코딩 디바이스를 구성한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기하며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 게다가, 명령들은 제 2 코딩 패스 동안, 비디오 인코딩 디바이스가 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩하도록, 비디오 인코딩 디바이스를 구성한다.
또 다른 양태에서, 본 개시물은 비디오 데이터를 디코딩하는 방법을 설명한다. 본 방법은 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하는 단계를 포함한다. 본 방법은 또한 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 단계를 포함한다. 제 2 코딩 패스를 수행하는 단계는 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 단계를 포함하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 제 2 코딩 패스를 수행하는 단계는 또한 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 디코딩하는 단계를 포함한다. 게다가, 제 2 코딩 패스를 수행하는 단계는 계수 블록의 계수들에 기초하여, 잔여 샘플 블록을 발생하는 단계를 포함한다.
또 다른 양태에서, 본 개시물은 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하도록 구성된 하나 이상의 프로세서들을 포함하는 비디오 디코딩 디바이스를 기술한다. 하나 이상의 프로세서들은 또한 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하도록 구성된다. 하나 이상의 프로세서들은 제 2 코딩 패스 동안 하나 이상의 프로세서들이 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하도록 구성되며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 하나 이상의 프로세서들은 또한 제 2 코딩 패스 동안, 하나 이상의 프로세서들이 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 디코딩하도록 구성된다. 더욱이, 하나 이상의 프로세서들은 계수 블록의 계수들에 기초하여, 잔여 샘플 블록을 발생하도록 구성된다.
또 다른 양태에서, 본 개시물은 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하는 수단을 포함하는 비디오 디코딩 디바이스를 기술한다. 비디오 디코딩 디바이스는 또한 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 수단을 포함한다. 제 2 코딩 패스를 수행하는 수단은 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 수단을 포함하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 제 2 코딩 패스를 수행하는 수단은 또한 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 디코딩하는 수단을 포함한다. 더욱이, 비디오 디코딩 디바이스는 계수 블록의 계수들에 기초하여, 잔여 샘플 블록을 발생하는 수단을 포함한다.
또 다른 양태에서, 본 개시물은 비디오 디코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하도록 비디오 디코딩 디바이스를 구성하는 명령들을 저장하는 컴퓨터-판독가능 저장 매체를 기술한다. 명령들은 또한 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하도록 비디오 디코딩 디바이스를 구성한다. 명령들은 제 2 코딩 패스 동안 비디오 디코딩 디바이스가 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하도록 비디오 인코딩 디바이스를 구성하며, 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응하며, 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생기며, 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 명령들은 또한 제 2 코딩 패스 동안, 비디오 디코딩 디바이스가 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 디코딩하도록, 비디오 디코딩 디바이스를 구성한다. 더욱이, 명령들은 계수 블록의 계수들에 기초하여, 잔여 샘플 블록을 발생하도록, 비디오 디코딩 디바이스를 구성한다.
본 개시물의 하나 이상의 예들의 세부 사항들은 첨부도면 및 아래의 상세한 설명에서 개시된다. 다른 특성들, 목적들, 및 이점들은 설명, 도면들, 및 청구범위로부터 명백히 알 수 있을 것이다.
도 1 은 예본 개시물에서 설명하는 기법들을 활용할 수도 있는 예시적인 비디오 코딩 시스템을 시하는 블록도이다.
도 2 는 서브-블록들로 분할되는 예시적인 계수 블록을 예시하는 개념도이다.
도 3 은 서브-블록들로 분할되지 않는 예시적인 계수 블록을 예시하는 개념도이다.
도 4 는 서브-블록들로 분할되는 예시적인 계수 블록을 예시하는 개념도이며, 비인과 계수들을 포함하는 컨텍스트 이웃을 나타낸다.
도 5 는 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 예시하는 블록도이다.
도 6 은 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 7 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터를 인코딩하는 비디오 인코더의 예시적인 동작을 예시하는 플로우차트이다.
도 8 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터를 디코딩하는 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
도 9a 는 예시적인 4x4 서브-블록을 예시하는 개념도이다.
도 9b 내지 도 9g 는 도 9a 의 서브-블록에서의 계수들의 컨텍스트 이웃들에서 예시적인 홀들을 예시하는 개념도들이다.
도 10a 내지 도 10f 는 계수 블록의 4x4 서브-블록에서의 계수들의 예시적인 그룹들을 예시하는 개념도들이다.
도 11 은 계수 블록의 4x4 서브-블록 내 계수들의 또 다른 예시적인 그룹핑을 예시하는 개념도이다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 비디오 코더가 3개의 코딩 패스들에서 서브-블록의 계수 구문 엘리먼트들을 코딩하는 예시적인 동작을 예시하는 플로우차트이다.
도 13a 및 도 13b 는 코딩 패스들이 대각선 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다.
도 14a 및 도 14b 는 코딩 패스들이 수평 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다.
도 15a 및 도 15b 는 코딩 패스들이 수직 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다.
비디오 인코딩 동안, 비디오 인코더는 원래 샘플 블록의 샘플들로부터, 예측 샘플 블록의 대응하는 샘플들을 감산함으로써, 잔여 샘플 블록을 발생할 수도 있다. 일부의 경우, 비디오 인코더는 그후 계수 블록을 발생하기 위해 하나 이상의 변환들을 잔여 샘플 블록에 적용할 수도 있다. 다른 경우, 비디오 인코더는 잔여 샘플 블록에 변환을 적용하지 않는다. 비디오 인코더가 잔여 샘플 블록에 변환을 적용하지 않으면, 비디오 코더는 잔여 샘플 블록을 계수 블록과 동일하거나 또는 유사한 방법으로 처리할 수도 있다. 그러므로, 설명의 용이성을 위해, 본 개시물은 잔여 샘플 블록을 계수 블록으로서, 그리고, 잔여 샘플 블록에서의 샘플들을 계수들로서 지칭할 수도 있다. 그러나, 비디오 인코더가 잔여 샘플 블록에 변환을 적용하지 않으면, 계수 블록 및 계수들의 설명이 잔여 샘플 블록 및 잔여 샘플들에 적용할 수도 있는 것으로 이해되어야 한다.
비디오 인코더는 계수 블록에서의 각각의 계수를 특정 코딩 순서에 따라서 프로세싱할 수도 있다. 비디오 인코더가 계수 블록에서의 계수를 프로세싱할 때, 비디오 인코더는 계수에 대한 구문 엘리먼트들의 세트를 발생하고 엔트로피 인코딩할 수도 있다. 비디오 디코더는 계수에 대한 구문 엘리먼트들의 세트에 기초하여, 계수의 값을 결정가능할 수도 있다. 계수에 대한 구문 엘리먼트를 엔트로피 인코딩하기 위해, 비디오 인코더는 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하고 그후 구문 엘리먼트에 대한 선택된 코딩 컨텍스트를 이용하여 구문 엘리먼트를 엔트로피 인코딩할 수도 있다. 비디오 인코더는 계수의 컨텍스트 이웃 내에 있는 이전에-프로세싱된 계수들의 구문 엘리먼트들의 값들에 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다.
프로세싱 계수들을 프로세싱하는 위에서 설명한 접근법은 여러 단점들을 가질 수도 있다. 예를 들어, 위에서 설명된 접근법은 계수 블록의 다수의 계수들의 프로세싱을 병렬화하기가 어려울 수 있다. 또 다른 예에서, 위에서 설명된 접근법은 비디오 인코더 (및 비디오 디코더) 가 코딩 컨텍스트들을 선택할 때에 사용하기 위해 계수들의 절대값들을 저장하는 것을 필요로 할 수도 있다. 이런 절대값들을 저장하는 것은 비디오 코딩 디바이스에서 요구되는 저장의 양을 증가시킬 수도 있다.
본 개시물의 기법들은 이들 및 다른 이슈들을 다룰 수도 있다. 본 개시물의 기법들에 따르면, 비디오 인코더는 다수의 코딩 패스들을 수행하여, 계수 블록의 계수들의 구문 엘리먼트들을 발생하고 인코딩할 수도 있다. 비디오 인코더는 동일한 코딩 순서에 따라, 또는 2개 이상의 상이한 코딩 순서들에 따라 코딩 패스들의 각각을 수행할 수도 있다. 비디오 인코더가 초기 코딩 패스 외의 코딩 패스를 수행할 때, 비디오 인코더는 비인과 계수에 대해 조기 코딩 패스에서 발생된 구문 엘리먼트의 값에 적어도 부분적으로 기초하여, 그리고 인과 계수에 대해 현재의 코딩 패스 동안 발생되는 구문 엘리먼트의 값에 적어도 부분적으로 기초하여, 현재의 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 비인과 계수는 현재 계수 (즉, 코딩중인 계수) 후에 생기며, 인과 계수는 현재의 코딩 패스의 코딩 순서에 따라서 현재 계수 전에 생긴다. 비디오 인코더는 선택된 코딩 컨텍스트에 기초하여, 현재의 구문 엘리먼트를 엔트로피 인코딩할 수도 있다. 하나 이상의 비인과 계수들의 구문 엘리먼트들에 적어도 부분적으로 기초하여 현재 계수의 현재의 구문 엘리먼트를 코딩하기 위한 코딩 컨텍스트를 선택함으로써, 비디오 인코더는 비디오 인코더가 코딩 컨텍스트를 선택하는 정확도를 향상시킬 수도 있다. 동시에, 하나 이상의 비인과 계수들의 구문 엘리먼트들에 적어도 부분적으로 기초하여 코딩 컨텍스트를 선택함으로써, 비디오 인코더는 인과 구문 엘리먼트들에 아주 심하게 의존함이 없이 코딩 컨텍스트를 선택가능 할 수도 있으며, 비디오 인코더는 현재 계수와 병렬로 프로세싱될 수도 있다.
예를 들어, 비디오 인코더는 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩할 수도 있다. 더욱이, 비디오 인코더는 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩할 수도 있다. 비디오 인코더가 제 2 코딩 패스를 수행할 때, 비디오 코더는 제 1 구문 엘리먼트를 발생할 수도 있다. 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 계수 블록의 현재 계수에 대응한다. 비디오 인코더는 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응한다. 비인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 후에 생긴다. 인과 계수는 코딩 순서에서 현재 계수 전에 발생한다. 비디오 인코더는 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩할 수도 있다.
첨부 도면들은 예들을 예시한다. 첨부 도면들에서 참조 번호들로 표시된 엘리먼트들은 다음 설명에서 유사한 참조 번호들로 표시된 엘리먼트들에 대응한다. 본 개시물에서, 서수의 단어들 (예컨대, "제 1", "제 2", "제 3", 및 기타 등등) 로 시작하는 이름들을 갖는 엘리먼트들은 엘리먼트들이 특정 순서를 갖는다는 것을 반드시 암시하지는 않는다. 오히려, 이런 서수의 단어들은 단지 동일한 또는 유사한 유형의 상이한 엘리먼트들을 지칭하기 위해서 사용될 뿐일 수도 있다.
도 1 은 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템 (10) 을 예시하는 블록도이다. 본원에서 설명하는 바와 같이, 용어 "비디오 코더" 는 비디오 인코더들 및 비디오 디코더들 양쪽을 포괄적으로 지칭한다. 본 개시물에서, 용어들 "비디오 코딩" 또는 "코딩" 은 비디오 인코딩 또는 비디오 디코딩을 포괄적으로 지칭할 수도 있다.
도 1 에 나타낸 바와 같이, 비디오 코딩 시스템 (10) 은 소스 디바이스 (12) 및 목적지 디바이스 (14) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 발생한다. 따라서, 소스 디바이스 (12) 는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치로서 지칭될 수도 있다. 목적지 디바이스 (14) 는 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오 데이터를 디코딩할 수도 있다. 따라서, 목적지 디바이스 (14) 는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치로서 지칭될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 비디오 코딩 디바이스들 또는 비디오 코딩 장치들의 예들일 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 모바일 컴퓨팅 디바이스들, 노트북 (예컨대, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 전화기 핸드셋들 이를테면 소위 "스마트" 폰들, 텔레비전, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 차내 컴퓨터들, 또는 기타 등등을 포함한, 광범위한 디바이스들을 포함할 수도 있다.
목적지 디바이스 (14) 는 소스 디바이스 (12) 로부터 채널 (16) 을 통해서 인코딩된 비디오 데이터를 수신할 수도 있다. 채널 (16) 은 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시키는 것이 가능한 하나 이상의 매체들 및/또는 디바이스들을 포함할 수도 있다. 일 예에서, 채널 (16) 은 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 로 실시간으로 송신가능하게 하는 하나 이상의 통신 매체들을 포함할 수도 있다. 이 예에서, 소스 디바이스 (12) 는 무선 통신 프로토콜과 같은 통신 표준에 따라서, 인코딩된 비디오 데이터를 변조할 수도 있으며, 변조된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 하나 이상의 통신 매체들은 무선 및/또는 유선 통신 매체들, 예컨대 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적인 송신 라인들을 포함할 수도 있다. 하나 이상의 통신 매체들은 로컬 영역 네트워크, 와이드 영역 네트워크, 또는 글로벌 네트워크 (예컨대, 인터넷) 과 같은, 패킷-기반 네트워크의 일부를 형성할 수도 있다. 하나 이상의 통신 매체들은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는 다른 장비를 포함할 수도 있다.
또 다른 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오 데이터를 저장하는 저장 매체를 포함될 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 디스크 액세스 또는 카드 액세스를 통해서 저장 매체에 액세스할 수도 있다. 저장 매체는 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 다른 적합한 디지털 저장 매체들과 같은 다양한 로컬-액세스되는 데이터 저장 매체들을 포함할 수도 있다.
추가 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오 데이터를 저장하는 파일 서버 또는 또 다른 중간 저장 디바이스를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해서 파일 서버 또는 다른 중간 저장 디바이스에 저장된 인코딩된 비디오 데이터에 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신가능한 서버의 형태일 수도 있다. 예시적인 파일 서버들은 (예컨대, 웹사이트용) 웹 서버들, 파일 전송 프로토콜 (FTP) 서버들, NAS (network attached storage) 디바이스들, 및 로컬 디스크 드라이브들을 포함한다.
목적지 디바이스 (14) 는 인코딩된 비디오 데이터에 인터넷 접속과 같은 표준 데이터 접속을 통해서 액세스할 수도 있다. 데이터 접속들의 예시적인 유형들은 무선 채널들 (예컨대, Wi-Fi 접속들), 유선 접속들 (예컨대, DSL, 케이블 모뎀 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한 양자 모두의 조합들을 포함한다. 파일 서버로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 양자 모두의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 세팅들에 한정되지 않는다. 이 기법들은 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 비디오 데이터의 인코딩, 데이터 저장 매체 상에 저장된 비디오 데이터의 디코딩, 또는 다른 애플리케이션들과 같은, 다양한 멀티미디어 애플리케이션들의 지원 하는 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 비디오 코딩 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화 통신과 같은 애플리케이션들을 지원하기 위해 1-방향 또는 2-방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 일부 예들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 비디오 소스 (18) 는 비디오 캡쳐 디바이스, 예컨대, 비디오 카메라, 이전에-캡쳐된 비디오 데이터를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하는 비디오 공급 인터페이스, 및/또는 비디오 데이터를 발생하기 위한 컴퓨터 그래픽스 시스템, 또는 비디오 데이터의 그러한 소스들의 조합을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 소스 (18) 로부터의 비디오 데이터를 인코딩할 수도 있다. 일부 예들에서, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로부터 출력 인터페이스 (22) 를 통해서 직접 송신한다. 인코딩된 비디오 데이터는 또한 디코딩 및/또는 플레이백을 위해 목적지 디바이스 (14) 에 의한 추후 액세스를 위해 저장 매체 또는 파일 서버 상으로 저장될 수도 있다.
도 1 의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 예들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함한다. 입력 인터페이스 (28) 은 인코딩된 비디오 데이터를 채널 (16) 을 통해서 수신할 수도 있다. 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 다양한 디스플레이 디바이스들, 예컨대 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 현재 개발중인 HEVC (High Efficiency Video Coding) 표준과 같은 비디오 압축 표준에 따라서 동작할 수도 있으며, HEVC 테스트 모델 (HM) 을 따를 수도 있다. "HEVC Working Draft 5" 또는 "WD5" 로서 지칭되는, 차기 HEVC 표준의 초안이, 2011년 11월, 스위스, 제네바, ITU-T SG16 WP3 와 ISO/IEC JTC1/SC29/WG11 의 JCT-VC (Joint Collaborative Team on Video Coding), 7차 회의, Bross 등의 "WD5: Working Draft 5 of High Efficiency Video Coding", 문서 JCTVC-G1103 에 설명되어 있으며, 이 문서는 2012년 11월 26일 자로, http://phenix.it-sudparis.eu/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G1103-v12.zip 으로부터 다운로드 가능하며, 이의 전체 내용 본원에 참고로 포함된다. "HEVC Working Draft 9" 로서 지칭되는, 차기 HEVC 표준의 또 다른 초안이, 2012년 10월, 중국, 상하이, ITU-T SG16 WP3 와 ISO/IEC JTC1/SC29/WG11 의 JCT-VC (Joint Collaborative Team on Video Coding), 11차 회의, Bross 등의 "High Efficiency Video Coding (HEVC) text specification draft 9" 에 설명되어 있으며, 이 문서는 2012년 11월 26일 자로, http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v8.zip 로부터 다운로드가능하며, 이의 전체 내용이 본원에 참고로 포함된다.
다르게는, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 (ISO/IEC MPEG-4 AVC 로서 또한 알려진) 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장판들을 포함한, ITU-T H.264 를 포함하는, 다른 사유 또는 산업 표준들에 따라서 동작할 수도 있다. 본 개시물의 기법들은, 그러나, 임의의 특정 코딩 표준 또는 기법에 한정되지 않는다.
또, 도 1 은 단지 일 예일 뿐이며, 본 개시물의 기법들은 인코딩 디바이스와 디코딩 디바이스 사이의 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 세팅들 (예컨대, 비디오 인코딩 또는 비디오 디코딩) 에 적용할 수도 있다. 다른 예들에서, 데이터는 로컬 메모리로부터 취출되어, 네트워크등을 통해서 스트리밍된다. 인코딩 디바이스는 데이터를 인코딩하여 메모리에 저장할 수도 있거나, 및/또는 디코딩 디바이스는 메모리로부터 데이터를 취출하여 디코딩할 수도 있다. 많은 예들에서, 인코딩 및 디코딩은, 서로 통신하지 않지만 간단히 데이터를 메모리로 인코딩하거나 및/또는 메모리로부터 데이터를 취출하여 디코딩하는 디바이스들에 의해 수행된다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적 회로들 (ASICs), 필드-프로그램가능 게이트 어레이들 (FPGAs), 이산 로직, 하드웨어, 또는 이들의 임의의 조합들과 같은, 다양한 적합한 회로 중 임의의 회로로서 구현될 수도 있다. 기법들이 소프트웨어로 부분적으로 구현되면, 디바이스는 소프트웨어용 명령들을 적합한 비일시적 컴퓨터-판독가능 저장 매체에 저장할 수도 있으며, 본 개시물의 기법들을 수행하기 위해 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. (하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함한) 전술한 것 중 어느 것도 하나 이상의 프로세서들로 간주될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 쪽이든 각각의 디바이스에서 결합된 인코더/디코더 (코덱) 의 일부로서 통합될 수도 있다.
본 개시물은 일반적으로 어떤 정보를 비디오 디코더 (30) 와 같은 또 다른 디바이스로 "시그널링하는" 비디오 인코더 (20) 를 언급할 수도 있다. 용어 "시그널링" 은 일반적으로 구문 엘리먼트들 및/또는 인코딩된 비디오 데이터를 나타내는 다른 데이터의 통신을 지칭할 수도 있다. 이런 통신은 실시간 또는 근-실시간으로 일어날 수도 있다. 대안적으로, 이런 통신은 어떤 기간에 걸쳐서 일어날 수도 있으며, 예컨대 인코딩 시에 인코딩된 비트스트림으로 구문 엘리먼트들을 컴퓨터-판독가능 저장 매체에 저장할 때에 일어날 수도 있으며, 이는 그후 이 매체에 저장되어진 후 언제라도 디코딩 디바이스에 의해 취출될 수도 있다.
위에서 간단히 언급한 바와 같이, 비디오 인코더 (20) 는 비디오 데이터를 인코딩한다. 비디오 데이터는 하나 이상의 화상들을 포함할 수도 있다. 화상들의 각각은 정지 화상일 수도 있다. 비디오 인코더 (20) 는 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 발생할 수도 있다. 비디오 데이터의 코딩된 표현은 코딩된 화상들 및 연관되는 데이터를 포함할 수도 있다. 코딩된 화상은 화상의 코딩된 표현이다. 연관되는 데이터는 시퀀스 파라미터 세트들 (SPSs), 화상 파라미터 세트들 (PPSs), 및 다른 구문 구조들을 포함할 수도 있다. SPS 는 화상들의 제로 이상의 시퀀스들에 적용가능한 파라미터들을 포함할 수도 있다. PPS 는 제로 이상의 화상들에 적용가능한 파라미터들을 포함할 수도 있다. 구문 구조는 규정된 순서에서 비트스트림으로 함께 존재하는 제로 이상의 구문 엘리먼트들의 세트일 수도 있다.
화상은 휘도 (즉, 루마 또는 Y) 샘플들의 블록 및 색차 (즉, 크로마) 샘플들의 2개의 블록들을 포함한다. 설명의 용이성을 위해, 본 개시물은 샘플들의 2차원 어레이를 샘플 블록으로서 지칭할 수도 있다. 화상의 인코딩된 표현을 발생하기 위해, 비디오 인코더 (20) 는 화상에 대한 복수의 코딩 트리 블록들 (CTBs) 을 발생할 수도 있다. 일부의 경우, 트리블록은 또한 최대 코딩 유닛 (LCU) 또는 트리블록으로서 지칭될 수도 있다. 화상의 각각의 CTB 는 루마 블록 및 2개의 크로마 블록들과 연관될 수도 있다. CTB 의 루마 블록은 화상의 루마 블록의 서브-블록이고, CTB 의 크로마 블록들은 화상의 크로마 블록들의 서브-블록들이다. CTB 의 크로마 블록들은 CTB 의 루마 블록과 화상 내 동일한 영역에 대응한다. HEVC 의 CTB들은 H.264/AVC 과 같은, 이전 비디오 코딩 표준들의 매크로블록들과 대체로 유사할 수도 있다. 그러나, CTB 는 특정 사이즈에 반드시 제한되지 않으며, 하나 이상의 코딩 유닛들 (CU들) 을 포함할 수도 있다. 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여, CTB 와 연관되는 샘플 블록들을 CU들과 연관되는 샘플 블록들, 따라서, 명칭 "코딩 트리 블록들" 로 파티셔닝할 수도 있다.
화상의 CTB들은 하나 이상의 슬라이스들로 그룹화될 수도 있다. 일부 예들에서, 슬라이스들의 각각은 CTB들의 정수 개를 포함한다. 화상을 인코딩하는 부분으로서, 비디오 인코더 (20) 는 화상의 각각의 슬라이스 (즉, 코딩된 슬라이스들) 의 인코딩된 표현들을 발생할 수도 있다. 코딩된 슬라이스를 발생하기 위해, 비디오 인코더 (20) 는 슬라이스의 각각의 CTB 를 인코딩하여, 슬라이스의 CTB들의 각각의 인코딩된 표현들 (즉, 코딩된 CTB들) 을 발생할 수도 있다.
코딩된 CTB 를 발생하기 위해, 비디오 인코더 (20) 는 CTB 와 연관되는 샘플 블록들에 대해 회귀적으로 쿼드-트리 파티셔닝을 수행하여, 샘플 블록들을 점차-더 작은 샘플 블록들로 분할할 수도 있다. CTB 의 CU 는 루마 샘플 블록 및 2개의 크로마 샘플 블록들과 연관될 수도 있다. CU 의 루마 샘플 블록은 CTB 의 루마 샘플 블록의 서브-블록일 수도 있으며, CU 의 크로마 샘플 블록들은 CTB 의 크로마 샘플 블록들의 서브-블록들일 수도 있다. CU 의 루마 샘플 블록 및 크로마 샘플 블록들은 화상 내 동일한 영역에 대응할 수도 있다. 파티셔닝된 CU 는 샘플 블록들이 다른 CU들과 연관되는 샘플 블록들로 파티셔닝되는 CU 일 수도 있다. 비-파티셔닝된 CU 는 샘플 블록들이 다른 CU들과 연관되는 샘플 블록들로 파티셔닝되지 않는 CU 일 수도 있다.
비디오 인코더 (20) 는 각각 비-파티셔닝된 CU 에 대한 하나 이상의 예측 유닛들 (PU들) 을 발생할 수도 있다. CU 의 PU들의 각각은 CU 에 대응하는 화상의 영역 내 화상의 영역에 대응할 수도 있다. 비디오 인코더 (20) 는 CU 의 각각의 PU 에 대한 예측 샘플 블록들을 발생할 수도 있다. PU 의 예측 샘플 블록들은 샘플들의 블록들일 수도 있다.
비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 이용하여, PU 에 대한 예측 샘플 블록들을 발생할 수도 있다. 비디오 인코더 (20) 가 인트라 예측을 이용하여 PU 의 예측 샘플 블록들을 발생하면, 비디오 인코더 (20) 는 PU 와 연관되는 화상의 디코딩된 샘플들에 기초하여 PU 의 예측 샘플 블록들을 발생할 수도 있다. 비디오 인코더 (20) 가 인터 예측을 이용하여 PU 의 예측 샘플 블록들을 발생하면, 비디오 인코더 (20) 는 PU 와 연관되는 화상 외의 하나 이상의 화상들의 디코딩된 픽셀들에 기초하여, PU 의 예측 샘플 블록들을 발생할 수도 있다.
비디오 인코더 (20) 는 CU 의 PU들의 예측 샘플 블록들에 기초하여, CU 에 대한 잔여 블록들을 발생할 수도 있다. CU 에 대한 잔여 샘플 블록은 CU 의 PU들에 대한 예측 샘플 블록들에서의 샘플들과 CU 의 원래 샘플 블록들에서의 대응하는 샘플들 사이의 차이들을 나타낼 수도 있다.
더욱이, 비-파티셔닝된 CU 를 인코딩하는 부분으로서, 비디오 인코더 (20) 는 CU 의 잔여 샘플 블록들에 대해 회귀적인 쿼드-트리 파티셔닝을 수행하여, CU 의 잔여 샘플 블록들을 CU 의 변환 유닛들 (TU들) 과 연관되는 하나 이상의 더 작은 잔여 샘플 블록들로 파티셔닝할 수도 있다. TU들의 각각은 루마 샘플들의 잔여 샘플 블록 및 크로마 샘플들의 2개의 잔여 샘플 블록들과 연관될 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 TU들과 연관되는 잔여 샘플 블록들에 적용하여, 계수 블록들 (즉, 계수들의 블록들) 을 발생할 수도 있다. 비디오 인코더 (20) 는 계수 블록들의 각각에 대해 양자화 프로세스를 수행할 수도 있다. 양자화는 일반적으로, 계수들을 나타내는데 사용되는 데이터의 양을 감소시킬 수 있도록 계수들이 양자화되는 프로세스를 지칭하며, 추가적인 압축을 제공한다. 양자화 이후, 비디오 인코더 (20) 는 계수들의 값들을 나타내는 구문 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 계수들의 값들을 나타내는 구문 엘리먼트들의 적어도 일부에 대해 컨텍스트-적응 이진 산술 코딩 (CABAC) 인코딩을 수행할 수도 있다. 구문 엘리먼트들을 엔트로피 인코딩하는 것은 추가적인 압축을 제공할 수도 있다. 비디오 인코더 (20) 는 엔트로피-인코딩된 구문 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다.
비디오 디코더 (30) 는 비트스트림을 수신할 수도 있다. 비트스트림은 비디오 인코더 (20) 에 의해 인코딩된 비디오 데이터의 코딩된 표현을 포함할 수도 있다. 비디오 디코더 (30) 는 비트스트림을 파싱하여, 비트스트림으로부터 구문 엘리먼트들을 추출할 수도 있다. 비트스트림으로부터 적어도 일부 구문 엘리먼트들을 추출하는 부분으로서, 비디오 디코더 (30) 는 비트스트림에서의 데이터를 엔트로피 디코딩 (예컨대, CABAC 디코딩, 지수골롬 (exponential-Golomb) 디코딩 등) 할 수도 있다.
비디오 디코더 (30) 는 비트스트림으로부터 추출된 구문 엘리먼트들에 기초하여, 비디오 데이터의 화상들을 재구성할 수도 있다. 구문 엘리먼트들에 기초하여 비디오 데이터를 재구성하는 프로세스는 일반적으로 구문 엘리먼트들을 발생하기 위해 비디오 인코더 (20) 에 의해 수행되는 프로세스와 상호적일 수도 있다. 예를 들어, 비디오 디코더 (30) 는 CU 와 연관되는 구문 엘리먼트들에 기초하여, CU 의 PU들에 대한 예측 샘플 블록들을 발생할 수도 있다. 게다가, 비디오 디코더 (30) 는 CU 의 TU들과 연관되는 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 계수 블록들에 대해 역변환들을 수행하여, CU 의 TU들과 연관되는 잔여 샘플 블록들을 재구성할 수도 있다. 비디오 디코더 (30) 는 예측 샘플 블록들 및 잔여 샘플 블록들에 기초하여, CU 의 샘플 블록을 재구성할 수도 있다.
위에서 간단히 언급한 바와 같이, 비디오 인코더 (20) 는 하나 이상의 변환들을 잔여 샘플 블록에 적용함으로써, 계수 블록을 발생할 수도 있다. (일부 예들에서, 비디오 인코더 (20) 는 잔여 샘플 블록에 대한 하나 이상의 변환들의 적용을 스킵할 수도 있다.) 더욱이, 일부 예들에서, 비디오 인코더 (20) 는 계수 블록을 서브-블록들로 분할할 수도 있다. 가령, 비디오 인코더 (20) 는 계수 블록을 4개의 정사각형 서브-블록들로 분할할 수도 있다. 서브-블록은 또한 본원에서 "청크 (chunk)" 로서 지칭될 수도 있다. 일부 예들에서, 서브-블록의 사이즈는 16이다. 그러므로, 서브-블록들의 각각은 역 스캐닝 순서에서 16의 계수들을 포함한다. 따라서, 각각의 4x4 서브-블록은 서브세트 또는 청크에 대응한다. 더욱이, 일부 예들에서, 수평 또는 수직 스캔을 이용하는 어떤 8x8 TU들을 제외한, 모든 TU들이, 4x4 서브-블록 스캐닝을 이용한다.
비디오 인코더 (20) 는 서브-블록들의 각각에 대해 5개의 코딩 패스들을 수행할 수도 있다. 비디오 인코더 (20) 는 서브-블록들의 다음 서브-블록에 대해 5개의 코딩 패스들을 수행하기 전에 서브-블록에 대해 모든 5개의 코딩 패스들을 수행할 수도 있다. 비디오 인코더 (20) 는 서브-블록들을 여러 순서들로 프로세싱할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 먼저 하부-우측 서브-블록, 다음으로, 하부-좌측 서브-블록, 다음으로 상부-우측 서브-블록, 그리고, 마지막으로, 상부-좌측 서브-블록을 프로세싱하는 역방향 z-스캐닝으로, 서브-블록들을 프로세싱할 수도 있다. 대각선 하방-좌측 스캔과 같은 다른 스캔들이 또한 가능하다.
비디오 인코더 (20) 가 서브-블록에 대해 코딩 패스들을 수행할 때, 비디오 인코더 (20) 는 서브-블록에서의 계수들의 각각을 특정 코딩 패스와 연관되는 코딩 순서에 따라서 프로세싱한다. 상이한 코딩 패스들은 동일한 코딩 순서 또는 하나 이상의 상이한 코딩 순서들을 이용할 수도 있다. 일부 예들에서, 코딩 순서는 하부-우측 계수에서 시작하고, 다음으로 하부-우측 계수로부터 점진적으로 멀리 계수들의 대각선 라인들을 프로세싱하는 대각선 하방-좌측 순서일 수도 있다. 이 예에서, 비디오 인코더 (20) 는 계수들을 계수들의 각각의 대각선 라인을 따라서 상단부-우측으로부터 하단부-좌측으로 프로세싱할 수도 있다. 다른 예들에서, 코딩 순서는 수직 또는 수평 순서일 수도 있다. 비디오 인코더 (20) 는 유효 (significant) 및 레벨 코딩에 대해 (즉, sigMapFlags, gr1Flags, gr2Flags, signFlags, 및 levelRems 에 대해) 역방향 스캐닝 순서들 (즉, 하부-우측 계수에서 시작하는 코딩 순서들) 을 이용할 수도 있다. 그러나, 본 개시물의 기법들은 순방향 스캐닝 순서가 사용될 때에도 타당할 수도 있다. 본 개시물의 기법들은 또한 대각선, 지그재그, 수평, 수직, 4x4 서브-블록 스캐닝 또는 임의의 다른 스캐닝이 사용되는지 여부에 무관하게 타당할 수도 있다.
비디오 인코더 (20) 가 서브-블록에 대해 제 1 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 서브-블록들에서의 각각의 계수에 대해 significant_coeff_flag (축약 sigMapFlag) 를 발생할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 제 1 코딩 패스의 코딩 순서에서 제 1 비-제로 계수 후에 생기는 오직 그들 계수들에 대해서만 sigMapFlag 를 발생할 수도 있다. 계수에 대한 sigMapFlag 는 계수의 절대값이 0 보다 큰지 여부를 나타낸다. 본 개시물에서, 계수는 계수의 절대값이 0 보다 크면 "유효한" 것으로 불리어진다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 정규 CABAC 코딩 (regular CABAC coding) 을 이용하여, sigMapFlags 를 엔트로피 코딩할 수도 있다. 정규 CABAC 코딩은 복수의 컨텍스트들을 이용할 수도 있다.
비디오 인코더 (20) 가 서브-블록에 대해 제 2 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 0 보다 큰 절대값을 갖는 서브-블록들에서의 각각의 계수에 대해 coeff_abs_level_greater1_flag (축약 gr1Flag) 를 발생한다. 계수에 대한 gr1Flag 는 계수의 절대값이 1 보다 큰지 여부를 나타낸다. 일부 예들에서, 서브-블록 당 많아 봐야 8개의 gr1Flags 가, 대응하는 계수들이 1 보다 크다는 것을 나타내기 위해 사용될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 정규 CABAC 코딩을 이용하여, gr1Flags 를 엔트로피 코딩할 수도 있다.
비디오 인코더 (20) 가 서브-블록에 대해 제 3 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 1 보다 큰 절대값을 가진 서브-블록들에서의 각각의 계수에 대해 coeff_abs_level_greater2_flag (축약형 gr2Flag) 를 발생할 수도 있다. 계수에 대한 gr2Flag 는 계수의 절대값이 2 보다 큰지 여부를 나타낸다. 일부 예들에서, 서브-블록 당 많아 봐야 하나의 gr2Flag 가, 대응하는 계수가 2 보다 크다는 것을 나타내기 위해 사용될 수도 있다. 따라서, 많아 봐야 8개의 gr1Flags 및 하나의 gr2Flag 가 각각의 서브-블록에 대해 전송될 수도 있다. 따라서, levelRem 의 해석은 gr1Flag 및/또는 gr2Flag 가 코딩되었는지 여부에 따라서 변할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 정규 CABAC 코딩을 이용하여, gr2Flags 를 엔트로피 코딩할 수도 있다.
비디오 인코더 (20) 가 서브-블록에 대해 제 4 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 0보다 큰 절대값을 가진 서브-블록들에서의 각각의 계수에 대해 coeff_sign_flag (축약 signFlag) 를 발생할 수도 있다. 계수에 대한 signFlag 는 계수의 양/음의 부호를 나타낸다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 바이패스 엔트로피 코딩을 이용하여, signFlags 를 엔트로피 코딩할 수도 있다.
비디오 인코더 (20) 가 서브-블록에 대해 제 5 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 0 보다 큰 절대값을 가진 서브-블록들에서의 각각의 계수에 대해 coeff_abs_level_remain 값 (축약 levelRem) 을 발생할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 2 보다 큰 진폭을 가진 (즉, gr2Flag = 1 를 가진) 각각의 계수에 대해 levelRem 을 시그널링할 수도 있다. 계수에 대한 levelRem 은 계수의 나머지 절대값을 나타낸다. 비디오 인코더 (20) 는 gr2Flag 가 1 인 서브-블록에서의 각각의 계수에 대해, 또는 gr2Flag 가 코딩되지 않고 gr1Flag 가 1 일 때, 또는 gr1Flag 및 gr2Flag 가 코딩되지 않고 sigMapFlag 가 1 일 때, levelRem 을 발생할 수도 있다. 계수에 대한 gr2Flag 가 계수가 2 보다 큰 다는 것을 나타내면, 계수에 대한 levelRem 은 계수의 절대값 마이너스 3 을 나타낸다. gr2Flag 가 계수에 대해 코딩되지 않지만 계수에 대한 gr1Flag 가 계수가 1 보다 크다는 것을 나타내면, 계수에 대한 levelRem 은 계수의 절대값 마이너스 2 를 나타낸다. 유사하게, gr1Flag 또는 gr2Flag 가 계수에 대해 발생되지 않지만 sigMapFlag 가 1 이면, 계수에 대한 levelRem 은 계수의 절대값 마이너스 1 을 나타낸다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 바이패스 엔트로피 코딩을 이용하여, levelRems 을 엔트로피 코딩할 수도 있다. 설명의 용이를 위해, 본 개시물은 sigMapFlags, gr1Flags, gr2Flags, signFlags, 및 levelRems 을 "계수 구문 엘리먼트들" 또는 "레벨 정보" 로서 지칭할 수도 있다. 일부 예들에서, 또 다른 플래그가 전체 서브-블록이 유효하지 않은지 여부를 나타내기 위해 사용될 수도 있다.
본 개시물에서, 조기 코딩 패스 동안 발생된 구문 엘리먼트는 후기 코딩 패스 동안에 발생된 구문 엘리먼트보다 더 높은 우선순위를 갖는 것으로 불리어진다. 즉, 먼저 코딩되는 계수 구문 엘리먼트들은 더 높은 우선순위를 갖는 것으로 지칭될 수도 있다. 예를 들어, sigMapFlags 는 gr1Flags, gr2Flags, signFlags, 및 levelRems 보다 더 높은 우선순위를 갖는다. gr1Flags 는 gr2Flags, signFlags, 및 levelRems 보다 더 높은 우선순위를 갖지만, sigMapFlags 보다 더 낮은 우선순위를 갖는다. 유사한 예들이 gr2Flags, signFlags, 및 levelRems 에 대해 제공될 수 있다.
비디오 인코더 (20) 가 제 1, 제 2, 및 제 3 코딩 패스들을 수행할 때, 비디오 인코더 (20) 는 sigMapFlags, gr1Flags, 및 gr2Flags 에 대해, 정규 CABAC 인코딩을 각각 수행할 수도 있다. 즉, 5개의 계수 구문 엘리먼트들 중에서, 단지 3개, 즉, sigMapFlag, gr1Flag 및 gr2Flag가 CABAC 를 이용하여 컨텍스트-코딩된다. 가령, 비디오 인코더 (20) 가 제 3 코딩 패스에서 gr2Flag 를 발생한 후, 비디오 인코더 (20) 는 다음 계수에 대한 gr2Flag 를 발생하기 전에, gr2Flag 에 대해 정규 CABAC 인코딩을 수행할 수도 있다. 비디오 인코더 (20) 가 제 4 및 제 5 코딩 패스들을 수행함에 따라, 비디오 인코더 (20) 는 signFlags 및 levelRems 에 대해 바이패스 인코딩을 수행할 수도 있다.
비디오 인코더 (20) 가 sigMapFlag, gr1Flag, gr2Flag, 또는 levelRem 과 같은, 구문 엘리먼트에 대해 CABAC 인코딩을 수행할 때, 비디오 인코더 (20) 는 구문 엘리먼트를 이진화하여, "빈 (bin)" 들로서 지칭되는 일련의 하나 이상의 비트들을 포함하는 이진 스트링을 형성할 수도 있다. 비디오 인코더 (20) 는 정규 CABAC 인코딩을 이용하여 빈들의 일부를 인코딩할 수도 있으며, 바이패스 인코딩을 이용하여 빈들 중 다른 것들을 인코딩할 수도 있다.
비디오 인코더 (20) 가 정규 CABAC 인코딩을 이용하여 빈들의 시퀀스를 인코딩할 때, 비디오 인코더 (20) 는 코딩 컨텍스트를 먼저 식별할 수도 있다. 코딩 컨텍스트는 특정 값들을 갖는 빈들을 코딩할 확률들을 식별할 수도 있다. 가령, 코딩 컨텍스트는 0-값 빈을 코딩할 0.7 확률 및 1-값 빈을 코딩할 0.3 확률을 나타낼 수도 있다. 코딩 컨텍스트를 식별한 후, 비디오 인코더 (20) 는 간격을 하위 서브-간격 및 상위 서브-간격으로 분할할 수도 있다. 서브-간격들 중 하나는 값 0 과 연관될 수도 있으며, 다른 서브-간격은 값 1 과 연관될 수도 있다. 서브-간격들의 폭들은 식별되는 코딩 컨텍스트에 의해 연관되는 값들에 대해 나타내어지는 확률들에 비례할 수도 있다. 구문 엘리먼트의 빈이 하위 서브-간격과 연관되는 값을 가지면, 인코딩된 값은 하위 서브-간격의 하위 경계와 동일할 수도 있다. 구문 엘리먼트의 동일한 빈이 상위 서브-간격과 연관되는 값을 가지면, 인코딩된 값은 상위 서브-간격의 하위 경계와 동일할 수도 있다. 구문 엘리먼트의 다음 빈을 인코딩하기 위해, 비디오 인코더 (20) 는 이들 단계들을 인코딩된 비트의 값과 연관되는 서브-간격인 간격으로 반복할 수도 있다. 비디오 인코더 (20) 가 다음 빈에 대해 이들 단계들을 반복할 때, 비디오 인코더 (20) 는 식별된 코딩 컨텍스트 및 인코딩된 빈들의 실제 값들에 의해 나타내어지는 확률들에 기초한 수정된 확률들을 이용할 수도 있다.
비디오 디코더 (30) 가 CABAC 디코딩을 수행할 때, 비디오 디코더 (30) 는 일부 빈들에 대해 정규 CABAC 디코딩을 수행할 수도 있으며, 다른 빈들에 대해 바이패스 디코딩을 수행할 수도 있다. 비디오 디코더 (30) 가 구문 엘리먼트에 대해 정규 CABAC 디코딩을 수행할 때, 비디오 디코더 (30) 는 코딩 컨텍스트를 식별할 수도 있다. 비디오 디코더 (30) 는 그후 간격을 하위 서브-간격 및 상위 서브-간격으로 분할할 수도 있다. 서브-간격들 중 하나는 값 0 과 연관될 수도 있으며, 다른 서브-간격은 값 1 과 연관될 수도 있다. 서브-간격들의 폭들은, 식별된 코딩 컨텍스트에 의해 연관된 값들에 대해 나타내어지는 확률들에 비례할 수도 있다. 인코딩된 값이 하위 서브-간격 이내이면, 비디오 디코더 (30) 는 하위 서브-간격과 연관되는 값을 갖는 빈을 디코딩할 수도 있다. 인코딩된 값이 상위 서브-간격 이내이면, 비디오 디코더 (30) 는 상위 서브-간격과 연관되는 값을 갖는 빈을 디코딩할 수도 있다. 구문 엘리먼트의 다음 빈을 디코딩하기 위해, 비디오 디코더 (30) 는 이들 단계들을 인코딩된 값을 포함하는 서브-간격인 간격으로 반복할 수도 있다. 비디오 디코더 (30) 가 다음 빈에 대해 이들 단계들을 반복할 때, 비디오 디코더 (30) 는 식별된 코딩 컨텍스트 및 디코딩된 빈들에 의해 나타내어지는 확률들에 기초한 수정된 확률들을 이용할 수도 있다. 비디오 디코더 (30) 는 그후 빈들을 역이진화하여, 구문 엘리먼트를 회복 (recover) 할 수도 있다. 역이진화 (de-binarzation) 는 이진 스트링과 구문 엘리먼트 값 사이의 맵핑에 따라서 구문 엘리먼트 값을 선택하는 것을 지칭할 수도 있다.
모든 구문 엘리먼트들에 대해, 또는 모든 빈들에 대해 정규 CABAC 을 수행하는 대신, 비디오 인코더 (20) 또는 비디오 디코더 (30) 과 같은 비디오 코더는 바이패스 코딩을 이용하여 일부 빈들을 코딩할 수도 있다. 바이패스 코딩은 일반적으로 적응적 코딩 컨텍스트를 이용하지 않고서 빈을 산술 인코딩하는 것을 지칭한다. 예를 들어, 바이패스 산술 코딩에서, 비디오 코더는 컨텍스트들을 선택하지 않고, 양쪽의 심볼들 (0 및 1) 에 대해 0.5 의 확률을 가정할 수도 있다. 바이패스 코딩이 CABAC 코딩 만큼 대역폭-효율적이지는 않을 수도 있지만, 바이패스 코딩은 계산적으로 CABAC 코딩보다 덜 비쌀 수도 있다. 또, 바이패스 코딩을 수행하는 것은 더 높은 정도의 병렬화 및 처리량을 가능하게 할 수도 있다.
코딩 성능은 빈들이 0 또는 1 의 값들을 가질 확률들을 정확하게 반영하지 않는 코딩 컨텍스트를 선택함으로써, 부정적으로 영향을 받지 않을 수도 있다. 이웃하는 계수들의 값들 사이의 통계적 관계들이 알려져 있기 때문에, 비디오 인코더 (20) 는 이웃하는 계수들에 관련된 이전에-발생된 정보에 기초하여, 코딩 컨텍스트를 선택할 수도 있다. 이웃하는 계수들에 관한 정보에 기초하여 코딩 컨텍스트를 선택하는 것은 비디오 인코더 (20) 가 코딩 컨텍스트를 선택하는 정확도를 증가시킬 수도 있지만, 비디오 인코더 (20) 는 코딩 컨텍스트를 선택하기 전에 이웃하는 계수들에 관한 그러한 정보를 발생해야만 한다. 이것은, 비디오 인코더 (20) 가 이웃하는 계수들에 관련된 정보를, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것과 병렬로, 발생하는 것을 방해할 수도 있다.
본 개시물의 기법들은 레벨 정보 및 유효 정보에 대한 컨텍스트-코딩된 구문 엘리먼트들 (예컨대, sigMapFlag, gr1Flag, 및 gr2Flag) 에 대한 컨텍스트들을 형성할 수도 있다. 본 개시물의 하나 이상의 기법들에 따르면, 비디오 인코더 (20) 는 계수들의 각각의 각각의 코딩 패스 동안, 서브-블록에서의 계수들에 대한 각각의 코딩 패스의 구문 엘리먼트들 모두에 대해, 코딩 컨텍스트들을 병렬로 선택할 수도 있다. 일부 예들에서, 본 개시물의 기법들은 서브-블록에서의 특정 구문 엘리먼트에 대응하는 모든 플래그들에 대해 컨텍스트들의 도출 (derivation) 을 병렬로 가능하게 할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 서브-블록에서의 계수들에 대한 모든 gr2Flags 에 대한 코딩 컨텍스트들을 병렬로 선택 (즉, 도출) 할 수도 있다.
이를 행하기 위해, 비디오 인코더 (20) 는 일부 예들에서, 계수 블록의 이전에-코딩된 서브-블록들에서의 계수들에 대한 모든 계수 구문 엘리먼트들에 적어도 부분적으로 기초하여, 특정 서브-블록에서의 특정 계수의 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 즉, 컨텍스트는 이전 서브-블록들에서의 모든 유효 및 레벨 정보에 의존할 수도 있다. 게다가, 비디오 인코더 (20) 는 특정 서브-블록의 계수들에 대한 더 높은-우선순위 계수 구문 엘리먼트들에 적어도 부분적으로 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 즉, 컨텍스트는 현재의 서브-블록으로부터의 더 높은 우선순위 구문 엘리먼트들에 의존할 수도 있다.
도 2 는 서브-블록들로 분할되는 예시적인 계수 블록 (48) 을 예시하는 개념도이다. 도 2 의 예는 8x8 TU 에 대한 4x4 서브-블록 스캔의 일 예를 나타낸다. 각각의 4x4 서브-블록은 "청크" 이다. HEVC 작업 초안 5 는 8x8 TU 에 대해 4x4 서브-블록 스캔을 이용하지 않지만, 그러나 그것은 여기에서 일 예로 예시된다.
도 2 에서, 원들은 계수들에 대응한다. 계수 블록 (48) 은 서브-블록들 (50A, 50B, 50C, 및 50D) 을 포함한다. 도 2 의 예에서, 4x4 서브-블록들은 역방향 대각선 하방-좌측 순서로 스캐닝된다. 따라서, 4x4 서브-블록들에 대한 프로세싱의 순서는 하단부-우측, 상단부-우측, 하단부-좌측, 및 상단부-좌측이다. 각각의 4x4 서브-블록 내에서, 계수들은 역방향 대각선 하방-좌측 스캔에 따라서 프로세싱된다. 도 2 에서의 화살표들은 계수들의 코딩 순서를 나타낸다. 다른 예들에서, 상단부-우측 대각선, 지그재그, 수평 또는 수직과 같은, 상이한 스캐닝 순서가 사용될 수도 있다. 본 개시물의 기법들은 순방향 스캐닝이 역 스캐닝 대신 사용되면, 적용가능할 수도 있다. 즉, 본 개시물의 기법들은 역방향 스캐닝들 뿐만 아니라, 순방향 스캐닝들에도 적용가능할 수도 있다.
각각의 서브-블록에 대한 유효 및 레벨 정보 (예컨대, 계수 구문 엘리먼트들) 는 다음 서브-블록들로 진행하기 전에 완전히 코딩될 수도 있다. 서브-블록 내에서, 유효 및 레벨 정보는 다음 순서로 코딩될 수도 있다: sigMapFlag, gr1Flag, gr2Flag, signFlag, 및 levelRem. 도 2 의 예에서, 비디오 인코더 (20) 는 서브-블록들 (50A, 50B, 및 50C) 에서의 계수들에 대한 계수 구문 엘리먼트들을 이미 인코딩했을 수도 있다. 즉, 비디오 인코더 (20) 는 서브-블록들 (50A, 50B, 및 50C) 에서의 계수들에 대해 모든 5개의 코딩 패스들을 이미 수행했을 수도 있다. 이 예에서, 비디오 인코더 (20) 는 서브-블록들 (50A, 50B, 및 50C) 에서의 계수들의 sigMapFlags, gr1Flags, gr2Flags, signFlags, 및 levelRems 에 적어도 부분적으로 기초하여, 계수 (52) 의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 더욱이, 비디오 인코더 (20) 는 서브-블록 (50D) 에서의 계수들에 대한 더 높은-우선순위 계수 구문 엘리먼트들에 기초하여, 계수 (52) 의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 서브-블록 (50D) 에서의 계수들의 sigMapFlags 및 gr1Flags 의 어느 것에 기초하여, 계수 (52) 의 gr2Flag 에 대한 코딩 컨텍스트를 선택할 수도 있다. 따라서, 계수 (52) 의 gr2Flag 가 코딩될 때, 이미 프로세싱된 3개의 서브-블록들 (즉, 상단부-우측, 하단부-좌측, 및 하단부-우측 서브-척) 에 대한 모든 유효 및 레벨 정보 (sigMapFlag, gr1Flag, gr2Flag, signFlag, 및 levelRem) 가 컨텍스트 형성을 위해 사용될 수도 있다. 게다가, 상단부-좌측 4x4 서브-블록에 대한 sigMapFlags 및 gr1Flags 가 사용될 수도 있다.
다른 예들에서, 비디오 인코더 (20) 는 이전에-코딩된 서브-블록들의 더 높은-우선순위 계수 구문 엘리먼트들 및 현재의 서브-블록의 더 높은-우선순위 계수 구문 엘리먼트들에 오직 기초하여, 현재 서브-블록에서의 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 예를 들어, 도 2 의 예에서, 비디오 인코더 (20) 는 서브-블록들 (50A, 50B, 50C, 또는 50D) 의 어느 것에서의 계수들의 gr2Flags, signFlags, 또는 levelRems 이 아닌, 서브-블록들 (50A, 50B, 50C, 및 50D) 에서의 계수들의 sigMapFlags 및 gr1Flags 의 어느 것에 기초하여, 계수 (52) 의 gr2Flag 에 대한 코딩 컨텍스트를 선택할 수도 있다.
더욱이, 일부 예들에서, 비디오 인코더 (20) 는 특정 계수의 컨텍스트 이웃에서의 계수들에 대한 계수 구문 엘리먼트들에 기초하여, 특정 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택한다. 위에서 나타낸 바와 같이, 계수 구문 엘리먼트에 대한 컨텍스트를 형성할 때, 그 컨텍스트를 현재의 서브-블록으로부터의 계수 구문 엘리먼트에 대한 이미-코딩된 정보에 의존하도록 하는 것이 가능할 수도 있다. 이런 경우들에서, 분리된 컨텍스트 도출 이웃들 (context derivation neighborhoods) 이 현재의 구문 엘리먼트 및 더 높은-우선순위 구문 엘리먼트들로부터의 이미 코딩된 정보에 대해 사용될 수도 있다. 도 2 의 예에서, 사변형 (54) 은 계수 (52) 에 대한 컨텍스트 이웃을 나타낸다. 도 2 의 예에 나타낸 바와 같이, 계수 (52) 에 대한 컨텍스트 이웃은 서브-블록 (50B) 에서의 계수 (55), 서브-블록 (50C) 에서의 계수 (56), 및 서브-블록 (50D) 에서의 3개의 계수들 (58, 60, 및 62) 을 포함한다. 일부 예들에서, 비디오 인코더 (20) 는 계수들 (54 및 56) 의 임의의 계수 구문 엘리먼트 및 계수들 (58, 60, 및 62) 의 더 높은-우선순위 계수 구문 엘리먼트들에 기초하여, 계수 (52) 의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 계수들 (54, 56, 58, 60, 및 62) 의 더 높은-우선순위 계수 구문 엘리먼트들에 기초하여, 계수 (52) 의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 예를 들어, 계수 (52) 는 16개의 계수들을 포함하는 서브-블록에서 8번째 계수이다. 그러므로, 계수 (52) 의 gr2Flag 를 코딩할 때, 계수 (52) 의 gr2Flag 에 대한 컨텍스트는 서브-블록들 (50D) 에 대한 모든 sigMapFlags 및 gr1Flags 뿐만 아니라, 서브-블록 (50D) 에 대해 지금까지 (7번째 계수까지) 코딩된 gr2Flags 에 의존할 수도 있다. 게다가, 계수 (52) 의 gr2Flag 에 대한 컨텍스트는 이전 서브-블록들 (즉, 서브-블록들 (50A, 50B, 및 50C)) 로부터의 유효 및 레벨 정보에 의존할 수도 있다. 따라서, 계수 (52) 에 대한 gr2Flag 를 코딩하기 위해, 모든 4x4 서브-블록들 (50A, 50B, 50C, 및 50D) 에 대한 sigMapFlag 및 gr1Flag 정보에 더해서, 계수들 (58, 60, 및 62) 에 대한 gr2Flag 정보를 이용하는 것이 가능할 수도 있다. 일부 예들에서, 계수 구문 엘리먼트의 컨텍스트가 이전 서브-블록들로부터의 유효 및 레벨 정보에 의존할 때 컨텍스트 도출 프로세스를 병렬화하기가 더 어려울 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 도 2 의 예에 나타낸 바와 같이, 계수 블록들을 서브-블록들로 분할하지 않는다. 이런 예들에서, 비디오 인코더 (20) 는 전체 계수 블록에 대해 동일한 5개의 인코딩 과정들을 위에서 설명된 방법으로 수행할 수도 있다. 도 3 은 서브-블록들로 분할되지 않는 예시적인 계수 블록 (70) 을 예시하는 개념도이다. 도 3 에서, 원들은 계수들에 대응한다. 도 3 의 예에서, 사변형 (72) 은 계수 (74) 에 대한 컨텍스트 이웃을 나타낸다. 비디오 인코더 (20) 는 계수 (74) 에 대한 컨텍스트 이웃에서의 계수들의 더 높은-우선순위 구문 엘리먼트들에 기초하여, 계수 (72) 의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 즉, 청크의 사이즈가 TU 의 사이즈와 동일할 때, 전체 TU 에 대한 더 높은-우선순위 구문 엘리먼트들에 대한 코딩된 정보가 현재의 구문 엘리먼트에 대한 컨텍스트를 형성함에 있어서 사용될 수 있다. 일부 예들에서, 계수 (74) 의 gr2Flag 가 코딩될 때, 전체 TU 에 대한 sigMapFlags 및 gr1Flags 이 컨텍스트 형성에 사용될 수도 있다. 게다가, 컨텍스트 형성을 위해 이전 TU들로부터의 모든 유효 및 레벨 정보를 이용하는 것이 가능할 수도 있다. 일부 예들에서, 현재 및 이전 TU들에 대한 더 높은-우선순위 구문 엘리먼트들 (예컨대, sigMapFlag 및 gr1Flag) 만이 계수 (74) 의 gr2Flag 의 코딩 컨텍스트의 컨텍스트 형성을 위해 사용될 수도 있다.
또 다른 예에서, 전체 정보를 이용하여 컨텍스트를 형성하는 것이 불필요하다. 통상적으로, 현재 계수 둘레의 이웃으로부터의 더 높은-우선순위 구문 엘리먼트 정보가 컨텍스트의 형성에 사용될 수도 있다. 예를 들어, 서브-블록 (즉, 청크) 의 사이즈가 TU 의 사이즈와 동일할 때, TU 계수들 중 어느 것도, 인과성 (causality) 또는 스캔에 상관 없이, 이웃에 포함될 수도 있다. 도 3 의 예에서, 사변형 (72) 은 계수 (74) 의 예시적인 컨텍스트 이웃을 나타낸다. 계수 (74) 의 gr2Flag 를 코딩하기 위해, 비디오 인코더 (20) 는 계수 (74) 에 대한 컨텍스트 이웃에서의 계수들의 sigMapFlags 및 gr1Flags 에 기초하여, 계수 (74) 의 gr2Flag 에 대한 코딩 컨텍스트를 선택할 수도 있다.
도 3 의 예에서, 서브-블록들 (즉, 청크들) 을 이용하는 대신, 전체 TU 는 역방향 하방-좌측 스캔을 이용하여 프로세싱될 수도 있다. 이 예에서, 서브-블록의 사이즈는 TU 의 사이즈와 동일한 사이즈로 선택될 수도 있다. 더욱이, 도 3 의 예에서, 전체 TU 에 대한 sigMapFlag 정보가 먼저 코딩된다. 이 다음에, 전체 TU 에 대한 gr1Flag 정보 등이 뒤따른다. 각각의 구문 엘리먼트에 대응하는 정보는, 서브-블록 또는 TU 에서의 계수들이 각각의 구문 엘리먼트에 대해 한번 방문되야 할 수도 있으므로 (하지만 반드시 코딩되는 것은 아니므로), 본원에서 "패스 (pass)" 로서 지칭될 수도 있다.
더욱이, 일부 예들에서, 비디오 인코더 (20) 는 현재의 서브-블록의 인과 계수들의 동일한-우선순위 계수 구문 엘리먼트들에 적어도 부분적으로 기초하여, 현재의 서브-블록의 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 그러한 예들에서, 비디오 인코더 (20) 는 또한 현재의 코딩 패스의 코딩 순서에서 이전 서브-블록들 뿐만 아니라, 현재의 서브-블록에서의 계수들에 대한 더 높은-우선순위 계수 구문 엘리먼트들 (그리고, 일부 경우, 현재의 코딩 패스의 코딩 순서에서 현재의 서브-블록 전에 생기는 서브-블록들에서의 계수들에 대한 임의의 계수 구문 엘리먼트들) 에 기초하여, 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 현재 서브-블록의 인과 계수들의 gr2Flags 에 적어도 부분적으로 기초하여, 현재 서브-블록의 계수의 gr2Flag 의 코딩 컨텍스트를 결정할 수도 있다.
현재 계수 구문 엘리먼트에 대한 코딩 컨텍스트가 이전에-코딩된 서브-블록들의 계수 구문 엘리먼트들에 적어도 부분적으로 기초하여 형성되는 예들에서 병렬 컨텍스트 도출을 가능하게 하기 위해, 하나 이상의 제한들이 현재 계수 구문 엘리먼트에 대한 이미-코딩된 정보에 기초하여, 컨텍스트 도출 이웃에 부과될 수도 있다. 즉, 컨텍스트 이웃은 병렬 컨텍스트 도출이 소망되는 위치들을 포함하지 않는다. 이것은 본원에 참조에 의해 전체적으로 원용된, 2011년 11월 11일자로 출원된 미국 출원번호 제 13/294,869호, 및 본원에 참조에 의해 전체적으로 원용된 2012년 1월 13일자로 출원된 미국 출원번호 제 61/586,609호에 설명된 아이디어들과 원칙적으로 유사하다.
서브-블록의 다수의 계수 구문 엘리먼트들을 병렬로 인코딩하기 위해, 비디오 인코더 (20) 는 계수와 병렬로 인코딩되지 않는 서브-블록에서의 동일한-우선순위 계수 구문 엘리먼트들에만 기초하여, 코딩 컨텍스트들을 선택할 수도 있다. 예를 들어, 계수의 컨텍스트 이웃은, 컨텍스트 이웃이 계수와 병렬로 코딩될 수도 있는 계수들을 포함하지 않도록, 형상화될 수도 있다. 이 예에서, 컨텍스트 이웃의 형상은 미국 출원번호 제 61/586,609호에서 설명된 바와 같이 하나의 위치로부터 또 다른 위치로 변화될 수도 있다. 도 2 의 예에서, 역방향 4x4 서브-블록 기반 스캔이 사용된다. 4x4 서브-블록의 하단부 우측 상의 계수들 (예컨대, 계수들 64, 66, 및 68) 은 현재의 구문 엘리먼트에 대한 이미-코딩된 정보에 기초한 수정된 컨텍스트 도출 이웃들을 이용해야 할 수도 있다. 예를 들어, 컨텍스트 도출에서의 병렬성 (parallelism) 이 계수들 (64, 66, 및 68) 중 하나의 gr2Flag 를 코딩하는데 소망되면, 4x4 서브-블록의 하단부-우측 픽셀에 대한 코딩된 gr2Flag 정보가 사용되지 않는다.
일 예에서, 비디오 인코더 (20) 는 제 1 구문 엘리먼트 및 제 2 구문 엘리먼트를 병렬로 발생할 수도 있으며, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트 및 제 2 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 발생할 수도 있다. 이 예에서, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트는 제 2 구문 엘리먼트에 기초하여 선택되지 않으며, 제 2 구문 엘리먼트에 대한 코딩 컨텍스트는 제 1 구문 엘리먼트에 기초하여 선택되지 않는다. 이 예에서, 비디오 인코더 (20) 는 제 1 및 제 2 구문 엘리먼트들에 대한 코딩 컨텍스트들에 기초하여, 제 1 및 제 2 구문 엘리먼트들을 병렬로 엔트로피 인코딩할 수도 있다. 이와 유사하게, 비디오 디코더 (30) 는 제 1 구문 엘리먼트 및 제 2 구문 엘리먼트를 병렬로 발생하고, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트 및 제 2 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 선택할 수도 있다. 이 예에서, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트는 제 2 구문 엘리먼트에 기초하여 선택되지 않으며, 제 2 구문 엘리먼트에 대한 코딩 컨텍스트는 제 1 구문 엘리먼트에 기초하여 선택되지 않는다. 이 예에서, 비디오 인코더 (30) 는 제 1 및 제 2 구문 엘리먼트들에 대한 코딩 컨텍스트들에 기초하여, 제 1 및 제 2 구문 엘리먼트들을 병렬로 엔트로피 디코딩할 수도 있다.
또 다른 예에서, 청크 사이즈는 TU 사이즈와 동일할 수도 있으며, 비디오 인코더 (20) 는 계수의 gr2Flag 를 코딩하고 있다. 이 예에서, 순방향 또는 역방향 순서에서 지그재그 또는 대각선 스캔이 사용될 수도 있다. 더욱이, 이 예에서, 대각선에 대응하는 gr2Flags 에 대한 모든 컨텍스트들이 병렬로 도출되는 경우, 그 대각선으로부터의 gr2Flag 정보는 컨텍스트 도출 이웃에 포함될 수 없다. 이 예에서, TU 위치들의 어느 것이 sigMap 및 gr1Flags 에 의존하는 gr2Flag 에 대한 컨텍스트 도출 이웃에 포함될 수 있다. 도 2 에서의 예시적인 컨텍스트 이웃은 이 제한 사항을 따른다.
또 다른 예에서, 비디오 인코더 (20) 는 현재 서브-블록의 제 1 및 제 2 계수의 gr2Flags 에 대한 코딩 컨텍스트들을 병렬로 선택할 수도 있다. 이 예에서, 제 1 계수의 컨텍스트 이웃은 제 2 계수를 포함하지 않으며, 제 2 계수의 컨텍스트 이웃은 제 1 계수를 포함하지 않는다. 그러므로, 이 예에서, 비디오 인코더 (20) 는 제 2 계수의 gr2Flag 에 기초하여 제 1 계수의 gr2Flag 에 대한 코딩 컨텍스트를 선택하지 않고, 그 역 또한 마찬가지이다.
일부 그러한 예들에서, 특정 계수의 컨텍스트 이웃은 특정 계수와는 상이한 서브-블록에서의 계수들을 포함할 수도 있다. 더욱이, 일부 예들에서, 특정 계수 블록의 컨텍스트 이웃은 특정 계수와 동일한 서브-블록 내에 있는 특정 계수의 인과 및 비인과 이웃들을 포함할 수도 있다. 제 1 계수는, 제 1 계수가 코딩 패스의 코딩 순서를 따라서 제 2 계수 전에 생기면, 제 2 계수의 인과 이웃이다. 제 1 계수는, 제 1 계수가 코딩 패스의 코딩 순서에 따라서 제 2 계수 후에 생기면, 제 2 계수의 비인과 이웃이다.
도 4 는 인과 및 비인과 계수들을 포함하는 예시적인 컨텍스트 이웃을 예시하는 개념도이다. 도 4 에서의 원은 계수 블록 (80) 에서의 계수들에 대응한다. 도 4 의 예에서, 계수 블록 (80) 은 서브-블록들 (82A, 82B, 82C, 및 82D) 로 분할된다. 형상 (84) 은 계수 (86) 에 대한 컨텍스트 이웃을 나타낸다. 도 4 의 예에서, 계수 (86) 에 대한 컨텍스트 이웃은 계수들 (88, 90, 92, 94, 96, 및 98) 을 포함한다. 계수들 (88, 90, 및 92) 은 코딩 순서에서 계수 (86) 전에 생기므로, 인과 계수들이다. 계수들 (94, 96, 및 98) 은 코딩 순서에서 계수 (86) 후에 생기므로, 비인과 계수들이다.
본 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩할 수도 있다. 더욱이, 비디오 인코더 (20) 는 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩할 수도 있다. 비디오 인코더 (20) 가 제 2 코딩 패스를 수행할 때, 비디오 인코더 (20) 는 제 1 구문 엘리먼트를 발생할 수도 있다. 제 1 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있을 수도 있으며 계수 블록의 현재 계수에 대응할 수도 있다. 더욱이, 비디오 인코더 (20) 는 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응한다. 비인과 계수는 현재의 (제 2) 코딩 패스의 코딩 순서에서 현재 계수 후에 생긴다. 인과 계수는 제 2 코딩 패스의 코딩 순서에서 현재 계수 전에 생긴다. 비디오 인코더 (20) 는 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 인코딩할 수도 있다.
유사하게, 비디오 디코더 (30) 는 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩할 수도 있다. 게다가, 비디오 디코더 (30) 는 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩할 수도 있다. 비디오 디코더 (30) 가 제 2 코딩 패스를 수행할 때, 비디오 디코더 (30) 는 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응한다. 비디오 디코더 (30) 는 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트를 엔트로피 디코딩할 수도 있다.
컨텍스트 도출이 상기 정보 모두를 사용할 필요가 없다는 점에 유의해야 한다. 예를 들어, 컨텍스트 도출은 도 3 및 도 4 에 나타낸 바와 같이 오직 이웃에 기초할 수도 있다. 또 다른 예에서, 컨텍스트 도출은 더 높은 우선순위를 가진 구문 엘리먼트들에만 오직 기초할 수도 있다. 일 예로서, 주어진 계수에 대한 gr2Flag 를 코딩하는 것에 대해, 컨텍스트 도출 목적으로, 구문 엘리먼트들 sigMapFlag 및 gr1Flag 에 관련된 정보만이 사용될 수도 있다. 컨텍스트 형성에 사용되는 정보를 위에서 명시된 것들과는 다른 방식들로 제한하는 것이 가능할 수도 있다.
도 5 는 본 개시물의 기법들을 구현하도록 구성된 예시적인 비디오 인코더 (20) 를 예시하는 블록도이다. 도 5 는 설명의 목적으로 제공되며 본 개시물에서 폭넓게 예시되고 설명된 바처럼 기법들을 한정하는 것으로 간주되지 않아야 한다. 설명의 목적으로, 본 개시물은 HEVC 코딩의 컨텍스트에서 비디오 인코더 (20) 를 기술한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 5 의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (100), 잔여 발생 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역양자화 유닛 (108), 역변환 프로세싱 유닛 (110), 재구성 유닛 (112), 필터 유닛 (113), 디코딩된 화상 버퍼 (114), 및 엔트로피 인코딩 유닛 (116) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터-예측 프로세싱 유닛 (121) 및 인트라-예측 프로세싱 유닛 (126) 을 포함한다. 인터-예측 프로세싱 유닛 (121) 은 모션 추정 유닛 (122) 및 모션 보상 유닛 (124) 을 포함한다. 다른 예들에서, 비디오 인코더 (20) 는 더 많거나, 더 적거나, 또는 상이한 기능적 구성요소들을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 데이터를 인코딩하기 위해, 비디오 인코더 (20) 는 비디오 데이터의 각 화상의 각 슬라이스를 인코딩할 수도 있다. 슬라이스를 인코딩하는 부분으로서, 비디오 인코더 (20) 는 슬라이스에서의 각각의 CTB 를 인코딩할 수도 있다. CTB 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 CTB 와 연관되는 샘플 블록들에 대해 쿼드-트리 파티셔닝을 수행하여, 샘플 블록들을 점차-더 작은 샘플 블록들로 분할할 수도 있다. 더 작은 샘플 블록들은 CU들과 연관될 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 CTB 의 샘플 블록들의 각각을 4개의 동일-사이즈의 서브-블록들로 파티셔닝할 수도 있고, 서브-블록들의 하나 이상을 4개의 동일-사이즈의 서브-서브-블록들로 파티셔닝할 수도 있는 등이다.
비디오 인코더 (20) 는 화상에서의 CTB 의 CU들을 인코딩하여, CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 발생할 수도 있다. 비디오 인코더 (20) 는 CTB 의 CU들을 z-스캔 순서에 따라서 인코딩할 수도 있다. 즉, 비디오 인코더 (20) 는 상단부-좌측 CU, 상단부-우측 CU, 하단부-좌측 CU, 그리고 다음으로 하단부-우측 CU 를, 그 순서로 인코딩할 수도 있다. 비디오 인코더 (20) 가 파티셔닝된 CU 를 인코딩할 때, 비디오 인코더 (20) 는 파티셔닝된 CU 의 샘플 블록들의 서브-블록들과 연관되는 CU들을 z-스캔 순서에 따라서 인코딩할 수도 있다.
더욱이, CU 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU들 중에서 CU 의 샘플 블록들을 파티셔닝할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다양한 PU 사이즈들을 지원할 수도 있다. 특정 CU 의 사이즈가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측에 대해서는 2Nx2N 또는 NxN 의 PU 사이즈들을, 그리고 인터 예측에 대해서는 2Nx2N, 2NxN, Nx2N, NxN, 또는 유사한 것의 대칭 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한 인터 예측에 대해서 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 사이즈들에 대한 비대칭 파티셔닝을 지원할 수도 있다.
인터-예측 프로세싱 유닛 (121) 은 CU 의 각각의 PU 에 대해 인터 예측을 수행함으로써, PU 에 대한 예측 데이터를 발생할 수도 있다. 예측 PU 에 대한 데이터는 PU 에 대응하는 예측 샘플 블록들 및 PU 에 대한 모션 정보를 포함할 수도 있다. 슬라이스들은 I 슬라이스들, P 슬라이스들, 또는 B 슬라이스들일 수도 있다. 인터-예측 유닛 (121) 은 PU 가 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지에 따라서, CU 의 PU 에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU들은 인트라 예측된다. 그러므로, PU 가 I 슬라이스에 있으면, 인터-예측 유닛 (121) 은 PU 에 대해 인터 예측을 수행하지 않는다.
PU 가 P 슬라이스에 있으면, 모션 추정 유닛 (122) 은 PU 에 대한 참조 블록들에 대해 참조 화상들의 리스트 (예컨대, "리스트 0") 에서 참조 화상들을 검색할 수도 있다. PU 의 참조 블록들은 참조 화상의 동일한 영역에 대응하고 PU 의 샘플 블록들에 가장 가깝게 대응하는 샘플 블록들의 세트일 수도 있다. 모션 추정 유닛 (122) 은 PU 의 참조 블록을 포함하는 리스트 0 에서의 참조 화상을 나타내는 참조 화상 인덱스, 및 PU 의 루마 샘플 블록과 루마 참조 샘플 블록 사이의 공간 변위를 나타내는 모션 벡터를 발생할 수도 있다. 모션 추정 유닛 (122) 은 참조 화상 인덱스 및 모션 벡터를 PU 의 모션 정보로서 출력할 수도 있다. 모션 보상 유닛 (124) 은 PU 의 모션 정보에 의해 나타내어지는 참조 블록들에 기초하여, PU 의 예측 샘플 블록들을 발생할 수도 있다.
PU 가 B 슬라이스에 있으면, 모션 추정 유닛 (122) 은 PU 에 대한 단방향 인터 예측 또는 양방향 인터 예측을 수행할 수도 있다. PU 에 대한 단방향 인터 예측을 수행하기 위해, 모션 추정 유닛 (122) 은 제 1 참조 화상 리스트 ("리스트 0") 또는 제 2 참조 화상 리스트 ("리스트 1") 의 참조 화상들을 PU 에 대한 참조 블록에 대해 검색할 수도 있다. 모션 추정 유닛 (122) 은 참조 블록을 포함하는 참조 화상의 리스트 0 또는 리스트 1 에서의 위치를 나타내는 참조 화상 인덱스, PU 의 샘플 블록들과 참조 블록 사이의 공간 변위를 나타내는 모션 벡터, 및 참조 화상이 리스트 0 또는 리스트 1 에 있는지 여부를 나타내는 예측 방향 표시자를, PU 의 모션 정보로서, 출력할 수도 있다.
PU 에 대한 양방향 인터 예측을 수행하기 위해, 모션 추정 유닛 (122) 은 PU 에 대한 참조 블록에 대해 리스트 0 에서 참조 화상들을 검색할 수도 있으며, 또한 PU 에 대한 또 하나의 참조 블록에 대해 리스트 1 에서 참조 화상들을 검색할 수도 있다. 모션 추정 유닛 (122) 은 참조 블록들을 포함하는 참조 화상들의 리스트 0 및 리스트 1 에서의 위치를 나타내는 참조 화상 인덱스들을 발생할 수도 있다. 게다가, 모션 추정 유닛 (122) 은 참조 블록들과 PU 의 샘플 블록들 사이의 공간 변위를 나타내는 공간 변위들을 나타내는 모션 벡터들을 발생할 수도 있다. PU 의 모션 정보는 참조 화상 인덱스들 및 PU 의 모션 벡터들을 포함할 수도 있다. 모션 보상 유닛 (124) 은 PU 의 모션 정보에 의해 나타내어지는 참조 블록들에 기초하여, PU 의 예측 샘플 블록들을 발생할 수도 있다.
인트라-예측 프로세싱 유닛 (126) 은 PU 에 대해 인트라 예측을 수행함으로써, PU 에 대한 예측 데이터를 발생할 수도 있다. PU 에 대한 예측 데이터는 PU 에 대한 예측 샘플 블록들 및 다양한 구문 엘리먼트들을 포함할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에서의 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU 상에 인트라 예측을 수행하기 위해, 인트라-예측 프로세싱 유닛 (126) 은 다수의 인트라 예측 모드들을 이용하여, PU 에 대한 예측 데이터의 다수의 세트들을 발생할 수도 있다. 인트라 예측 모드를 이용하여 PU 에 대한 예측 데이터의 세트를 발생하기 위해, 인트라-예측 프로세싱 유닛 (126) 은 샘플들을 이웃하는 PU들의 샘플 블록들로부터 PU 의 샘플 블록들을 가로질러 인트라 예측 모드와 연관되는 방향으로 확장할 수도 있다. 이웃하는 PU들은 PU들, CU들, 및 CTB들에 대해 좌에서 우로, 상단에서 하단 인코딩 순서를 가정하면, PU 의 상부, 상부 및 우측에, 상부 및 좌측에, 또는 좌측에 있을 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 다양한 수의 인트라 예측 모드들, 예컨대, 33개의 방향 인트라 예측 모드들을 이용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 의 샘플 블록들의 사이즈에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은 PU들에 대해 인터-예측 프로세싱 유닛 (121) 에 의해 발생된 예측 데이터, 또는 PU들에 대해 인트라-예측 프로세싱 유닛 (126) 에 의해 발생된 예측 데이터 중에서, CU 의 PU들에 대한 예측 데이터를 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여, CU 의 PU 에 대한 예측 데이터들을 선택한다. 선택된 예측 데이터의 예측 샘플 블록들은 본원에서, 선택된 예측 샘플 블록들로서 지칭될 수도 있다.
잔여 발생 유닛 (102) 은 CU 의 샘플 블록들 및 CU 의 PU들의 선택된 예측 샘플 블록들에 기초하여, CU 의 잔여 샘플 블록들을 발생할 수도 있다. 예를 들어, 잔여 발생 유닛 (102) 은 잔여 샘플 블록들에서의 각각의 샘플이 CU 의 원래 샘플 블록에서의 샘플과 CU 의 PU 의 선택된 예측 샘플 블록에서의 대응하는 샘플들 사이의 차이와 동일한 값을 갖도록, CU 의 잔여 샘플 블록들을 발생할 수도 있다.
변환 프로세싱 유닛 (104) 은 CU 에 대한 하나 이상의 TU들의 세트를 발생할 수도 있다. CU 의 TU들의 각각은 루마 잔여 샘플 블록 및 2개의 크로마 샘플 블록들과 연관될 수도 있다. TU 의 루마 잔여 샘플 블록은 CU 의 루마 잔여 샘플 블록의 서브-블록일 수도 있으며, TU 의 크로마 잔여 샘플 블록들은 CU 의 크로마 잔여 샘플 블록들의 서브-블록들일 수도 있다. TU 의 크로마 잔여 샘플 블록들은 TU 의 루마 잔여 샘플 블록과 화상의 동일한 영역에 대응한다. 변환 프로세싱 유닛 (104) 은 쿼드-트리 파티셔닝을 수행하여, CU 의 잔여 샘플 블록들을 CU 의 TU들과 연관되는 잔여 샘플 블록들로 파티셔닝할 수도 있다. CU 의 TU들과 연관되는 잔여 샘플 블록들의 사이즈들 및 위치들은 CU 의 PU들의 샘플 블록들의 사이즈들 및 위치들에 기초하거나 또는 기초하지 않을 수도 있다.
변환 프로세싱 유닛 (104) 은 하나 이상 의 변환들을 TU 와 연관되는 잔여 샘플 블록들에 적용함으로써, CU 의 각각의 TU 에 대한 계수 블록들을 발생할 수도 있다. 변환 프로세싱 유닛 (104) 은 여러 변환들을 TU 와 연관되는 잔여 샘플 블록에 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환 (DCT), 방향 변환 (directional transform), 또는 개념적으로-유사한 변환을 잔여 샘플 블록에 적용할 수도 있다. 변환들은 잔여 샘플 블록을 픽셀 도메인으로부터 주파수 도메인으로 전환할 수도 있다. 따라서, 계수 블록에서의 계수들은 특정 주파수들에 있는 것으로 지칭될 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 계수들을 양자화할 수도 있다. 양자화 프로세스는 그 계수들의 일부 또는 모두와 연관되는 비트 심도 (bit depth) 를 감소시킬 수도 있다. 예를 들어, n-비트 계수는 양자화 동안 m-비트 계수로 라운딩 다운될 수도 있으며, 여기서, n 은 m 보다 더 크다. 양자화 유닛 (106) 은 CU 와 연관되는 양자화 파라미터 (QP) 값에 기초하여, CU 의 TU 와 연관되는 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관되는 QP 값을 조정함으로써 CU 와 연관되는 계수 블록들에 적용되는 양자화의 정도를 조정할 수도 있다.
역양자화 유닛 (108) 및 역변환 프로세싱 유닛 (110) 은 역양자화 및 역변환들을 계수 블록에 각각 적용하여, 계수 블록으로부터 잔여 샘플 블록을 재구성할 수도 있다. 재구성 유닛 (112) 은 재구성된 잔여 샘플 블록의 샘플들을 예측 프로세싱 유닛 (100) 에 의해 발생된 하나 이상의 예측 샘플 블록들로부터의 대응하는 샘플들에 가산하여, TU 와 연관되는 재구성된 샘플 블록을 발생할 수도 있다. CU 의 각각의 TU 에 대한 샘플 블록들을 이 방법으로 재구성함으로써, 비디오 인코더 (20) 는 CU 의 샘플 블록들을 재구성할 수도 있다.
필터 유닛 (113) 은 디블록킹 동작을 수행하여, CU 의 샘플 블록들에서 블록킹 아티팩트들을 감소시킬 수도 있다. 디코딩 화상 버퍼 (114) 는 재구성된 샘플 블록들을 저장할 수도 있다. 인터-예측 유닛 (121) 은 재구성된 샘플 블록들을 포함하는 참조 화상을 이용하여, 다른 화상들의 PU들에 대해 인터 예측을 수행할 수도 있다. 게다가, 인트라-예측 프로세싱 유닛 (126) 은 디코딩된 화상 버퍼 (114) 에서의 재구성된 샘플 블록들을 이용하여, CU 와 동일한 화상에서의 다른 PU들에 대해 인트라 예측을 수행할 수도 있다.
엔트로피 인코딩 유닛 (116) 은 비디오 인코더 (20) 의 다른 기능적 구성요소들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있으며 예측 프로세싱 유닛 (100) 으로부터 구문 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행하여, 엔트로피-인코딩된 데이터를 발생할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 컨텍스트-적응 가변 길이 코딩 (CAVLC) 동작, CABAC 동작, 변수-대-변수 (V2V) 길이 코딩 동작, 구문-기반 컨텍스트-적응 이진 산술 코딩 (SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수골롬 인코딩 동작, 또는 또 다른 유형의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (116) 에 의해 발생된 엔트로피-인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다.
엔트로피 인코딩 유닛 (116) 은 RQT 의 잎 노드와 연관되는 계수 블록 (즉, TU 와 연관되는 계수 블록) 을 복수의 서브-블록들로 분할할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 엔트로피 인코딩 유닛 (116) 이 서브-블록들의 다음 서브-블록을 프로세싱하기 전에, 서브-블록들 중 하나를 완전히 프로세싱하도록, 서브-블록들을 순차적으로 프로세싱할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 서브-블록들을 하부-우측 서브-블록에서 시작하여, 역방향 순서로 프로세싱할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 이 방법으로 루마 계수 블록들 (즉, 루마 잔여 샘플 블록들로부터 도출된 계수 블록들) 및 크로마 계수 블록들 (즉, 크로마 잔여 샘플 블록들로부터 도출된 계수 블록들) 을 프로세싱할 수도 있다.
2011년 1월 20일, 문서 번호 JCTVC-H0228 인, Nguyen 등의 "Non-CE11: Proposed Cleanup for Transform Coefficient Coding" 는 변환 계수 코딩을 위한 상이한 방법을 제안하며, 이의 전체 내용이 본원에서 참고로 포함된다. JCTVC-H0228 의 제안에서, 동일한 5개의 위에서 설명된 구문 엘리먼트들이 사용된다. 그러나, 현재 계수의 컨텍스트 이웃은 sigMapFlag, gr1Flag, 및 gr2Flag 에 대한 컨텍스트 뿐만 아니라, levelRem 에 대한 골롬-라이스 (Golomb-Rice) 파라미터를 도출하기 위해 사용된다. 계수 (74) 에 대한 컨텍스트 도출에 사용되는 예시적인 컨텍스트 이웃 (대각선 하방-좌측 스캔의 경우) 이 도 3 에 사변형 (72) 으로 도시된다. 컨텍스트 이웃은 sigMapFlags 의 코딩을 위한 HEVC 위원회 초안에 의해 사용되는 것과 동일하다. 다른 컨텍스트 이웃들도 역시 사용될 수도 있다. JCTVC-H0228 의 제안에서, 상이한 구문 엘리먼트들에 대한 컨텍스트 도출은 컨텍스트 이웃에서의 계수들의 절대 레벨들의 함수에 기초한다. 더욱이, JCTVC-H0228 에서, 각각의 청크를, 위에서 언급된 각각의 계수 구문 엘리먼트에 대해 하나씩, 5개의 패스들에서 코딩하는 대신, 하나의 계수에 대한 모든 필요한 계수 구문 엘리먼트들은 다음 계수로 진행하기 전에 코딩된다. 더욱이, JCTVC-H0228 의 제안은 (4×4 서브-블록 스캔들과 같은) 일부 스캔들에서, 2개의 연속되는 계수들이 상이한 대각선들에 속할 수도 있다는 것을 제공한다. 이 경우, 하나의 계수에 대한 컨텍스트는 이전 계수의 실제 디코딩된 (절대) 값에 의존할 수도 있다.
JCTVC-H0228 의 제안에서, 다음 양들은 컨텍스트 이웃을 이용하여 정의된다. 합산은 컨텍스트 이웃에 있는 모든 계수들에 대한 것이다.
Figure pct00001
JCTVC-H0228 의 제안에서, sigMapFlags 에 대한 컨텍스트 인덱스를 도출하는데 sum _ absolute _ level 값이 사용되며, gr1Flags 및 gr2Flags 에 대한 컨텍스트 인덱스들을 도출하는데 sum _ absolute _ levelMinus1 값이 사용된다. 컨텍스트 인덱스들은 코딩 컨텍스트들을 식별할 수도 있다.
JCTVC-H0228 의 제안에서, num_significant_coeff, sum_absolute_level, 및 sum_absolute_levelMinus1 을 계산한 후, sigMapFlag, gr1Flag, 및 gr2Flag 에 대한 컨텍스트 모델 인덱스들 (즉, 각각 c0, c1, 및 c2) 이 다음과 같이 도출된다:
Figure pct00002
JCTVC-H0228 의 제안은 여러 단점들을 갖고 있을 수도 있다. 예를 들어, 각각의 계수에 대해 코딩되는데 요구되는 구문 엘리먼트들의 개수는 1 로부터 5 까지 변할 수 있다. 이것은 코딩 프로세스에서 병목을 초래할 수도 있으며, 다수의 빈들을 하나의 사이클로 병렬화하거나 또는 코딩하기 위해, 예견 (look-ahead) 전략들을 이용하는 것을 어렵게 만들 수도 있다. 더욱이, 4×4 서브-블록 코딩 순서들과 같은, 일부 코딩 순서들에서, 2개의 연속되는 계수들은 상이한 대각선들에 속할 수도 있다. 이 경우, 하나의 계수에 대한 코딩 컨텍스트는 이전 계수의 실제 디코딩된 값에 의존할 수도 있다. 또 다른 단점은 컨텍스트 도출을 위해, 이웃에 있는 계수들에 대한 유효 및 레벨 정보가 요구된다는 점이다. 컨텍스트 이웃에 있는 계수들의 유효 및 레벨 정보를 저장하는 것은 요구되는 저장의 양을 증가시킬 수도 있다. 또 다른 예에서, 컨텍스트-코딩된 구문 엘리먼트들과 바이패스 코딩된 구문 엘리먼트가 인터리브되며, 이것은 바이패스 코딩된 구문 엘리먼트들의 병렬화 파싱 능력을 불리하게 할 수도 있다.
본 개시물의 하나 이상의 기법들은 JCTVC-H0228 의 제안의 단점들을 다룰 수도 있다. 위에서 설명한 바와 같이, 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 하나 이상의 서브세트들 (예컨대, 서브-블록들 또는 청크들) 로 각각의 TU 를 분할함으로써, 하나의 사이클로 (또는, 병렬로) 다수의 빈들의 프로세싱을 용이하게 한다. 비디오 코더는 그후 HEVC 작업 초안 5 에서 설명된 5개의 코딩 패스들을 이용할 수도 있다. 그러나, 본 개시물의 하나 이상의 기법들에 따르면, sigMapFlag, gr1Flag 및 gr2Flag 에 대한 컨텍스트 도출 뿐만 아니라, 구문 엘리먼트 levelRem 에 대한 골롬-라이스 파라미터 선택이 컨텍스트 이웃을 이용하여 JCTVC-H0228 에 설명된 바와 같이 수행된다. 그러나, JCTVC-H0228 의 제안과는 달리, 컨텍스트 이웃은 비인과 계수들을 포함할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 엔트로피 인코딩 유닛 (116) 이 서브-블록을 프로세싱할 때, 엔트로피 인코딩 유닛 (116) 은 위에서 설명된 5개의 코딩 패스들을 수행할 수도 있다. 즉, 엔트로피 인코딩 유닛 (116) 은 서브-블록들의 계수들에 대한 sigMapFlags 를 인코딩하기 위해 제 1 코딩 패스를, 서브-블록의 계수들에 대한 gr1Flags 를 인코딩하기 위해 제 2 코딩 패스를, 서브-블록의 계수들에 대한 gr2Flags 를 인코딩하기 위해 제 3 코딩 패스를, 서브-블록의 계수들에 대한 signFlags 를 인코딩하기 위해 제 4 코딩 패스를, 그리고, 서브-블록의 계수들에 대한 levelRems 을 인코딩하기 위해 제 5 코딩 패스를 수행할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 코딩 패스들의 어느 것을 수행할 때, 엔트로피 인코딩 유닛 (116) 은 서브-블록에서의 계수들의 각각을 코딩 순서에 따라서 프로세싱한다. 코딩 순서는 역방향 하방-좌측 대각선 코딩 순서, 수평 코딩 순서, 수직 코딩 순서, 또는 또 다른 코딩 순서일 수도 있다. 코딩 순서에서 연속되는 위치들에서 발생하는 계수들은 연속되는 계수들로서 지칭될 수도 있다.
각각의 각각의 코딩 패스 동안, 엔트로피 인코딩 유닛 (116) 은 각각의 코딩 패스 동안 발생된 구문 엘리먼트들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 제 1 코딩 패스 동안 sigMapFlags 를, 제 2 코딩 패스 동안 gr1Flags 를, 그리고 제 3 코딩 패스 동안 gr2Flags 를 CABAC 인코딩할 수도 있다. 정규 CABAC 코딩을 이용하여 계수 구문 엘리먼트를 인코딩하기 위해, 엔트로피 인코딩 유닛 (116) 은 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 컨텍스트 인덱스를 결정한 후 컨텍스트 인덱스를 이용하여 코딩 컨텍스트를 순람 (look up) 함으로써, 특정 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다.
일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 현재 계수의 컨텍스트 이웃에서의 계수들의 실제 또는 추정된 절대값들에 기초하여, 컨텍스트 인덱스를 결정한다. 엔트로피 인코딩 유닛 (116) 이 계수의 각각의 계수 구문 엘리먼트를 이미 인코딩하였으면, 엔트로피 인코딩 유닛 (116) 은 계수의 실제 절대값을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 엔트로피 인코딩 유닛 (116) 이 이들 계수들의 sigMapFlags, gr1Flags, gr2Flags, 및 levelRems 을 이용하여 이들 계수들의 실제 절대값들을 결정할 수 있기 때문에, 현재의 서브-블록 외부에 있는 인과 이웃 계수들의 추정된 절대값들을 결정하는 것을 필요로 하지 않는다. 예를 들어, 계수 블록은 복수의 서브-블록들을 포함할 수도 있으며, 현재의 코딩 패스의 코딩 순서는 서브-블록들에 기초할 수도 있다. 이 예에서, 인과 계수는 현재 계수와는 서브-블록들의 상이한 서브-블록 내에 있을 수도 있다.
그러나, 엔트로피 인코딩 유닛 (116) 이 계수의 각각의 계수 구문 엘리먼트를 아직 인코딩하지 않았으면, 엔트로피 인코딩 유닛 (116) 은 계수의 계수 구문 엘리먼트들에 기초하여, 계수의 실제 절대값을 결정 불가능할 수도 있다. 따라서, 엔트로피 인코딩 유닛 (116) 이 계수의 각각의 계수 구문 엘리먼트를 아직 인코딩하지 않았으면, 엔트로피 인코딩 유닛 (116) 은 계수의 추정된 또는 실제 절대값을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 특정 계수의 인과 이웃 계수들의 현재의-우선순위 계수 구문 엘리먼트들 및 낮은-우선순위 계수 구문 엘리먼트들을 이용하여, 인과 이웃 계수들의 추정된 또는 실제 절대값들을 결정할 수도 있다. 일 예로서, 제 3 코딩 패스에서 (즉, 계수에 대한 gr2Flag 가 코딩될 때), sigMapFlag 및 gr1Flag 로부터 추론될 수 있는 최소 절대 레벨 값들이 현재 계수의 컨텍스트 이웃에서의 계수들에 대해 사용된다. 계수의 sigMapFlag 가 0 이면, 계수의 추정된 절대값은 0 이다. 계수의 sigMapFlag 가 0 이고 계수의 gr1Flag 가 0 이면, 추정된 절대 레벨은 1 로 추론된다. 계수의 sigMapFlag 가 1 이고 계수의 gr1Flag 가 1 이면, 절대 레벨은 2 로 추론된다. 따라서, 추론된 값들은 이 시점까지 코딩되지 않은 구문 엘리먼트들에 0 의 값을 할당하는 것에 기초한다. 이웃에서의 인과 계수에 대해, gr2Flag 는 값 1 을 가지며, 인과 계수의 실제 절대값은 알려져 있지 않지만, 3 으로 추정될 수도 있다.
예를 들어, 도 2 의 예는 인과 이웃을 나타낸다. 따라서, 컨텍스트 이웃은 현재의 구문 엘리먼트 (즉, 현재의 코딩 패스와 연관되는 계수 구문 엘리먼트) 가 이미 인코딩된 (또는, 디코딩된) 계수들을 오직 포함한다. 그러나, 본 개시물의 기법들에 따르면, 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 도 4 의 예에 나타낸 바와 같이 (스캔 순서에서) 비인과 이웃을 이용할 수도 있다. 특히, 비인과 컨텍스트 이웃 계수들 (즉, 도 4 에서의 계수들 (94, 96, 및 98)) 에 대해, 이전 구문 엘리먼트까지의 정보 (즉, 코딩 패스) 만이 컨텍스트 도출에 사용될 수 있다. 인과적이고 그리고 현재 계수와 동일한 서브-블록에 속하는 컨텍스트 이웃 계수들에 대해, 이런 계수들의 절대 레벨들은 이런 계수들의 모든 계수 구문 엘리먼트들로부터 현재의 코딩 패스의 구문 엘리먼트까지 추론될 수도 있다. 인과적이고 그리고 현재 계수의 서브-블록 외부에 있는 컨텍스트 이웃 계수들에 대해, 컨텍스트 이웃 계수들의 실제 절대 레벨 값들이 사용될 수도 있다.
일반적으로, 엔트로피 인코딩 유닛 (116) 은, 계수 X 를 포함하는 서브-블록에 있는 모든 인과 계수들에 대해, 계수 구문 엘리먼트 Y 의 우선순위 이상인 우선순위를 가진 구문 엘리먼트들에 기초한 인과 계수들의 추정된 (또는, 실제) 절대값들에 기초하여, 계수 X 의 계수 구문 엘리먼트 Y 에 대한 코딩 컨텍스트를 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 이 현재 계수에 대한 sigMapFlag 를 인코딩할 때 현재 계수와 동일한 서브-블록에서 인과 이웃 계수의 추정된 (또는, 실제) 절대값을 결정하기 위해, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 sigMapFlag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수의 sigMapFlag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 0 과 동일하다고 결정할 수도 있다. 인과 이웃 계수의 sigMapFlag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 추정된 절대값이 1 과 동일하다고 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 현재 계수에 대한 gr1Flag 를 인코딩할 때 현재 계수와 동일한 서브-블록에서 인과 이웃 계수의 추정된 (또는, 실제) 절대값을 결정하기 위해, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수에 대한 sigMapFlag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수에 대한 sigMapFlag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 0 과 동일하다고 결정할 수도 있다. 인과 이웃 계수에 대한 sigMapFlag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 gr1Flag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수의 gr1Flag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 1과 동일하다고 결정할 수도 있다. 인과 이웃 계수의 gr1Flag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 추정된 절대값이 2 와 동일하다고 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 현재 계수에 대한 gr2Flag 를 인코딩할 때 현재 계수와 동일한 서브-블록들에서 인과 이웃 계수의 추정된 (또는, 실제) 절대값을 결정하기 위해, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수에 대한 sigMapFlag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수에 대한 sigMapFlag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 0 과 동일하다고 결정할 수도 있다. 인과 이웃 계수에 대한 sigMapFlag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 gr1Flag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수의 gr1Flag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 1 과 동일하다고 결정할 수도 있다. 인과 이웃 계수의 gr1Flag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 gr2Flag 가 0 또는 1 과 동일한지 여부를 결정할 수도 있다. 인과 이웃 계수의 gr2Flag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 절대값이 2 와 동일하다고 결정할 수도 있다. 인과 이웃 계수의 gr2Flag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 인과 이웃 계수의 추정된 절대값이 3 과 동일하다고 결정할 수도 있다.
게다가, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수들의 더 낮은 우선순위 구문 엘리먼트들을 이용하여, 비인과 계수들의 추정된 (또는, 실제) 절대값들을 결정할 수도 있다. 즉, 계수 X 에 대한 계수 구문 엘리먼트 Y 에 대한 코딩 컨텍스트 결정은, 서브-블록에 있는 모든 비인과 계수들에 대해, 계수 구문 엘리먼트 Y 의 우선순위보다 더 높은 우선순위를 가진 구문 엘리먼트들에 기초한 추정된 (또는, 실제) 절대값들에 기초할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 이전 패스에서 인코딩된 구문 엘리먼트에 적어도 부분적으로 기초하여, 비인과 계수의 추정된 (또는, 실제) 절대값을 결정하고, 현재의 코딩 패스에서 코딩된 구문 엘리먼트에 적어도 부분적으로 기초하여, 인과 계수의 추정된 (또는, 실제) 절대값을 결정하고, 비인과 계수의 추정된 (또는, 실제) 절대값 및 인과 계수의 추정된 (또는, 실제) 절대값에 적어도 부분적으로 기초하여, 구문 엘리먼트의 코딩 컨텍스트를 선택할 수도 있다.
예를 들어, 엔트로피 인코딩 유닛 (116) 이 sigMapFlag 를 현재 코딩하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 추정된 절대값이 0 과 동일하다고 결정할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 gr1Flag 를 현재 코딩하고 비인과 이웃 계수의 sigMapFlag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 절대값이 0 과 동일하다고 결정할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 gr1Flag 를 현재 코딩하고 비인과 이웃 계수의 sigMapFlag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 추정된 절대값이 1 과 동일하다고 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 gr2Flag 를 인코딩하고 비인과 이웃 계수의 sigMapFlag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 절대값이 0 과 동일하다고 결정할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 gr2Flag 를 인코딩하고 비인과 이웃 계수의 sigMapFlag 가 1 과 동일하고 그리고 비인과 이웃 계수의 gr1Flag 가 0 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 절대값이 1 과 동일하다고 결정할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 gr2Flag 를 인코딩하고 비인과 이웃 계수의 sigMapFlag 가 1 과 동일하고 그리고 비인과 이웃 계수의 gr1Flag 가 1 과 동일하면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수의 추정된 절대값이 2 와 동일하다고 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 제 4 및/또는 제 5 코딩 패스들을 수행함에 따라, 엔트로피 인코딩 유닛 (116) 은 계수들의 levelRems 과 연관되는 골롬-라이스 코드들을 식별할 수도 있다. 계수의 계수 구문 엘리먼트에 대한 골롬-라이스 코드를 식별하기 위해, 엔트로피 인코딩 유닛 (116) 은 계수의 컨텍스트 이웃에있는 계수들의 추정된 또는 실제 절대값들에 기초하여, 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 그후 선택된 컨텍스트를 이용하여, 계수 구문 엘리먼트에 대한 골롬-라이스 파라미터 및 골롬-라이스 코드를 식별할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 골롬-라이스 코드들을 출력할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 levelRem 에 대해 골롬-라이스 코딩 동작을 수행하면, 엔트로피 인코딩 유닛 (116) 은 엔트로피 인코딩 유닛 (116) 이 이들 계수들의 sigMapFlags, gr1Flags, gr2Flags, 및 levelRems 을 이용하여 이들 계수들의 실제 절대값들을 결정할 수 있기 때문에, 현재의 서브-블록 내에서 인과 이웃 계수들의 추정된 절대값들을 결정할 필요가 없다.
일부 예들에서, 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 컨텍스트 인덱스들에 기초하여 코딩 컨텍스트들을 결정한다. 비디오 코더는 컨텍스트 인덱스 c0 를 계산함으로써 계수의 sigMapFlag 에 대한 컨텍스트 인덱스를 계산할 수도 있고, 여기서, c0 = min (sum_absolute_level, 5) 이고, 여기서 sum_absolute_level 은 계수의 컨텍스트 이웃에서의 계수들의 실제 또는 추정된 절대값들의 총합이다. 즉,
Figure pct00003
JCTVC-H0228 의 제안에서, 계수의 컨텍스트 이웃은 도 2 및 도 3 의 예에 나타낸 바와 같이, 인과 이웃들로 제한된다. 더욱이, JCTVC-H0228 의 제안에서, 비디오 코더는 각각의 서브-블록을 통해서 단일 패스를 수행한다. 단일 패스 동안, 비디오 코더는 서브-블록들의 다음 계수를 프로세싱하기 전에 서브-블록의 계수에 대한 sigMapFlag, gr1Flag, gr2Flag, signFlag, 및 levelRem 을 발생하고 인코딩한다.
더욱이, JCTVC-H0228 의 제안에서, 비디오 코더는 gr1Flag 에 대한 컨텍스트 인덱스 c1 을 계산할 수도 있고, 여기서, c1 = min (sum_absolute_levelMinus1, 4) + 1 이다. gr2Flag 에 대한 컨텍스트 인덱스를 계산하기 위해, 비디오 코더는 컨텍스트 인덱스 c2 를 계산할 수도 있고, 여기서, c2 = min ( sum_absolute_levelMinus1, 4 ) + 1 이다. 값 sum_absolute_levelMinus1 는 sum_absolute_level 로부터 값 num_significant_coeff 를 감산함으로써 결정될 수도 있고, 여기서, num_significant_coeff 는 컨텍스트 이웃에서의 비-제로 계수들의 수와 동일하다.
Figure pct00004
상기 수식에서, 합산은 컨텍스트 이웃에 있는 모든 계수들에 대한 것이다. 상기 수식에서,
Figure pct00005
는,
Figure pct00006
이면
Figure pct00007
과 같고 xi가 0이면 0 과 같고, 여기서, xi 는 계수 i 의 실제 또는 추정된 절대값이다. 비디오 코더는 sum_absolute_level 로부터 값 num_significant_coeff 를 감산함으로써 sum_absolute_levelMinus1 를 결정할 수도 있다. 값 num_significant_coeff 는 다음과 동일하다:
Figure pct00008
단,
Figure pct00009
더욱이, JCTVC-H0228 의 제안이 코딩 패스들 및 비인과 이웃 계수들로 확장되면, 너무 많은 중요성이 비인과 이웃 계수들의 추정된 (또는, 실제) 절대값들에 주어질 수도 있으며, 이것은 코딩 효율을 저하시킬 수 있다. 예를 들어, 계수들의 절대값들은 일반적으로 더 높은 주파수 (frequency) 의 계수들에 대해 평균적으로 감소한다. 그러므로, 인과 계수가 유효하고 높은 절대 크기를 가지면, 현재 계수가 유효하고 높은 절대 크기를 가지기 쉽다. 높은 절대 크기의 일 예는 3 이상일 수도 있다. 그러나, 이 관계는 비인과 계수들에 적용되지 않는다. 예를 들어, 현재 계수는 일반적으로 비인과 계수보다 더 높은 주파수에 있다. 그러므로, 비인과 계수가 유효하면, 현재 계수가 유효하다는 추론은 인과 계수들에 대한 것보다 더 약해진다. 이러한 이유로, 엔트로피 인코딩 유닛 (116) 은 본 개시물의 기법들에 따르면, 코딩 컨텍스트들을 결정할 때 인과 및 비인과 계수들을 상이하게 처리할 수도 있다.
예를 들어, 엔트로피 인코딩 유닛 (116) 은 본 개시물의 기법들에 따르면, 코딩 컨텍스트들을 결정할 때 인과 계수들의 실제 또는 추정된 절대값들과는 반대되게 상이한 가중치들을 비인과 계수들의 추정된 또는 실제 절대값들에 적용할 수도 있다. 즉, 상이한 가중치들이 인과 및 비인과 계수들에 주어질 수도 있다. 이 예에서, 비인과 계수 (또는, 인과 계수) 에 적용되는 가중치는, 코딩 순서에서 계수들의 수의 면에서, 비인과 계수와 현재 계수 사이의 거리에 의존할 수도 있다. 더욱이, 일반적으로, 비인과 계수들은 주어진 계수에 대한 코딩 컨텍스트 내 인과 계수들보다 낮은 가중치들을 할당받을 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 엔트로피 인코딩 유닛 (116) 은 비인과 이웃 계수들의 전체 유효성 (significance) 을 1 만큼 감소시킬 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 인과 및 비인과 계수들에 대해 분리된 합계들을 유지할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 총합을 1 만큼 감소시킴으로써 컨텍스트 이웃에서의 전체 유효 비인과 계수들의 중요성을 감소시킬 수도 있다. 그러므로, 유효 비인과 계수들의 수가 4이면, num_significant_coeff 를 계산하기 위해, 유효 비인과 계수들의 수는 3으로 처리된다. 즉, 엔트로피 인코딩 유닛 (116) 은 num_significant_coeff 를 다음과 같이 계산할 수도 있다:
Figure pct00010
엔트로피 인코딩 유닛 (116) 은 다음을 계산함으로써 sum_absolute_levelMinus1 를 결정할 수도 있다:
Figure pct00011
엔트로피 인코딩 유닛 (116) 은 sum_absolute_levelMinus1 및 4 중 더 적은 것으로서 gr1Flag 또는 gr2Flag 에 대한 컨텍스트 인덱스를 결정할 수도 있다. 유사한 변경들이 sum_absolute_level 및 sum_absolute_levelMinus1 과 같은 다른 값들의 계산에 대해 이루어질 수 있다. 1 만큼의 감소 대신, 엔트로피 인코딩 유닛 (116) 은 다른 조정들을 컨텍스트 이웃에서의 비인과 계수들에 대한 컨텍스트 도출 계산들에 적용할 수도 있다. 예를 들어, 다른 예들에서, 엔트로피 인코딩 유닛 (116) 은 1 외의, 예컨대, 2, 3, 4 등의 값들 만큼 유효 비인과 이웃 계수들의 수를 감소시킬 수도 있다. 유효 비인과 컨텍스트 이웃 계수들의 수에 적용되는 조정이 더 높을 수록, 비인과 계수들의 유효 가중치 (effective weight) 가 작아진다. 이런 식으로, 엔트로피 인코딩 유닛 (116) 은 공식을 적용하여, 하나 이상의 비인과 계수들의 추정된 또는 실제 절대값들 및 하나 이상의 인과 계수들의 추정된 절대값들에 기초하여, 인덱스를 결정할 수도 있으며, 여기서, 공식은 가중 값을 하나 이상의 비인과 계수의 추정된 또는 실제 절대값들 또는 하나 이상의 인과 계수들의 추정된 또는 실제 절대값에 적용한다. 엔트로피 인코딩 유닛 (116) 은 인덱스에 적어도 부분적으로 기초하여, 구문 엘리먼트의 코딩 컨텍스트를 선택할 수도 있다.
다른 예들에서, 엔트로피 인코딩 유닛 (116) 은 sigMapFlags, gr1Flags, 및 gr2Flags 에 대한 컨텍스트 인덱스들을 위에서 설명한 방법들과는 다른 방법으로 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 1 보다 큰 절대값들을 가진 컨텍스트 이웃 계수들의 수에 기초하여, gr1Flag 에 대한 컨텍스트 인덱스를 결정할 수도 있다. 또 다른 예에서, 엔트로피 인코딩 유닛 (116) 은 gr1Flags 에 대한 코딩 컨텍스트들의 2개의 세트들을 이용할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 1 보다 큰 절대값들을 가진 컨텍스트 이웃 계수들이 없으면, gr1Flag 에 대한 코딩 컨텍스트들의 제 1 세트를 이용할 수도 있다. 더욱이, 이 예에서, 엔트로피 인코딩 유닛 (116) 은 1 보다 큰 절대값들을 가진 하나 이상의 컨텍스트 이웃 계수들이 있으면, gr1Flag 에 대한 코딩 컨텍스트들의 제 2 세트를 이용할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 sum_absolute_levelMinus1 또는 4 중 더 적은 것과 동일한 것으로 코딩 컨텍스트들의 제 1 또는 제 2 세트로의 컨텍스트 인덱스를 결정할 수도 있다. 이런 식으로, 엔트로피 인코딩 유닛 (116) 은 현재 계수의 컨텍스트 이웃에서 얼마나 많은 계수들이 1 보다 큰 절대값들을 갖는지에 기초하여, gr1Flag 에 대한 코딩 컨텍스트를 선택할 수도 있다. 다른 예들에서, 엔트로피 인코딩 유닛 (116) 은 gr1Flag 에 대한 코딩 컨텍스트들의 2개보다 많은 세트들을 이용할 수도 있다. 유사하게, 엔트로피 인코딩 유닛 (116) 은 sigMapFlags 및 gr2Flags 에 대한 코딩 컨텍스트들의 다수의 세트들을 이용할 수도 있다. 또 다른 예에서, 엔트로피 인코딩 유닛 (116) 은 1 보다 큰 절대값 및 2 보다 큰 절대값을 가진 이웃 계수들의 수에 기초하여, sigMapFlag 에 대한 컨텍스트 인덱스를 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 은 위에서 정의된 바처럼, 컨텍스트 인덱스들 c0, c1, 및 c2 를 계산하기 위해, 계수들의 절대값들을 저장할 수도 있다. c0, c1, 및 c2 의 정의들로부터, sum_absolute_level 이 4 보다 크면, c0 의 값은 5 에서 캡핑 (capping) 된다. 유사하게, sum_absolute_levelMinus1 이 3 보다 크면, c1 및 c2 의 값들은 4 에서 캡핑된다. 따라서, 각각의 계수에 대한 절대 레벨 값들을 저장하는 대신, c0, c1 및 c2 에 대해 동일한 값들을 생성하면서 절대 레벨 값들을 3 비트들로 트렁케이트 (truncate) 하는 것이 적합하다. 그러므로, 본 개시물의 기법들에 따르면, 각각의 계수에 대한 절대값들을 저장하는 대신, 엔트로피 인코딩 유닛 (116) 은 c0, c1 및 c2 에 대해 동일한 값을 생성하면서 계수들의 절대값들을 7 (3 비트들) 로 클립 (예컨대, 트렁케이트) 할 수도 있다. 더욱이, 일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 계수들의 절대값들을 3 (2 비트들) 로 클립할 수도 있다. 이런 식으로, 엔트로피 인코딩 유닛 (116) 은 비인과 계수의 추정된 (또는, 실제) 절대값을 3 (2개의 비트들) 또는 7 (3 비트들) 로 클립하고, 인과 계수의 추정된 절대값을 3 (2개의 비트들) 또는 7 (3 비트들) 로 트렁케이트하고, 비인과 및 인과 계수들의 클립핑된 추정된 (또는, 실제) 절대값들에 적어도 부분적으로 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 그러나, 엔트로피 인코딩 유닛 (116) 이 계수들의 절대값들을 3 (2 비트들) 로 클립핑하는 예들에서, c0, c1 및 c2 의 값들은 영향을 받을 수도 있다.
일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 단일 코딩 패스 동안 서브-블록의 다수의 계수들의 계수 구문 엘리먼트들을 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (116) 은 이것을 여러 방식들로 달성할 수도 있다. 제 1 예시적인 접근법에 따르면, 엔트로피 인코딩 유닛 (116) 은 각각의 코딩 패스 내에서, n개의 연속 계수들에 이르기 까지 병렬로 프로세싱할 수도 있으며, 여기서, n 은 0 보다 큰 수이다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 4개의 연속 계수들에 이르기 까지 병렬로 프로세싱할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 현재 계수를 현재 프로세싱하는 경우, 구문 엘리먼트가 현재의 코딩 패스와 연관되고 다른 계수가 n개의 연속 계수들의 그룹의 멤버이고 그리고 다른 계수 및 현재 계수가 동일한 서브-블록 이내이면, 엔트로피 인코딩 유닛 (116) 은 또 다른 계수와 연관되는 그 구문 엘리먼트에 액세스하지 않을 수도 있다. 즉, 현재 계수에 대한 컨텍스트 도출이, 병렬 컨텍스트 도출이 소망되는 다른 계수들로부터의 정보에 의존하지 않을 수도 있다는 제한이 부과된다. 엔트로피 인코딩 유닛 (116) 이 이런 조건들에서 구문 엘리먼트에 액세스하는 것을 방지하는 것은 병렬화를 용이하게 할 수도 있다. 본 개시물의 하나 이상의 기법들에 따르면, "홀들" 및 "부분 홀들" 의 개념들이 다수의 빈들에 대한 병렬 컨텍스트 도출을 가능하게 하기 위해서 사용된다.
인과 계수는 엔트로피 인코딩 유닛 (116) 이 계수의 현재의-우선순위 구문 엘리먼트를 이용하여 현재 계수의 현재의-우선순위 구문 엘리먼트를 코딩하기 위한 컨텍스트를 선택할 수 없을 때 "홀" 로서 지칭될 수도 있다. 현재의-우선순위 구문 엘리먼트는 엔트로피 인코딩 유닛 (116) 이 현재 수행하고 있는 코딩 패스 동안 프로세싱되는 구문 엘리먼트이다. 일부 예들에서, 홀의 위치는 현재 계수를 포함하는 4×4 서브-블록 외부에 있지 않다.
엔트로피 인코딩 유닛 (116) 이 홀들의 현재의-우선순위 구문 엘리먼트들에 액세스하지 않기 때문에, 엔트로피 인코딩 유닛 (116) 은 홀들의 현재의-우선순위 구문 엘리먼트들을 이용하여 홀들의 실제 또는 추정된 절대값들을 결정할 수 없을 수도 있다. 엔트로피 인코딩 유닛 (116) 이 홀들의 실제 절대값들을 결정할 수 없을 수도 있기 때문에, 엔트로피 인코딩 유닛 (116) 은 홀들의 실제 절대값들을 이용하여 현재 계수의 구문 엘리먼트를 CABAC 또는 골롬-라이스 코딩하기 위한 컨텍스트를 선택할 수 없을 수도 있다. 아래에서 자세히 설명되는 도 10a 내지 도 10g 는, 엔트로피 인코딩 유닛 (116) 과 같은, 엔트로피 코딩 유닛이 4개의 계수들을 코딩 패스 동안 병렬로 프로세싱할 때 4x4 서브-블록에서의 계수들의 컨텍스트 이웃들에서의 홀들의 예시적인 위치들을 예시한다.
따라서, 엔트로피 인코딩 유닛 (116) 은 홀들에 대한 추정된 (또는, 실제) 절대값들을 결정할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 홀들의 절대값들이 제로 또는 또 다른 사전-정의된 값과 동일하다고 항상 결정할 수도 있다. 즉, 엔트로피 인코딩 유닛 (116) 은 미리 정의된 값과 동일한 것으로 인과 계수의 절대값을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 홀 위치들에 대해 고정된 절대 레벨 값을 이용할 수도 있다. 더욱이, 이 예에서, 엔트로피 인코딩 유닛 (116) 이 4×4 서브-블록 스캔에 대해 4-빈 병렬화를 이용하면, 동일한 서브-블록으로부터 스캔 순서에서 이전 3개의 계수들의 어느 것이 현재 계수의 컨텍스트 이웃에 속하면, 이전 3개의 계수들이 컨텍스트 도출 목적들을 위해 0 의 절대값들을 갖는 것으로 가정되도록, 홀들이 도입된다.
또 다른 예에서, 홀에서의 계수가 유효하지 않다 (즉, 0 과 동일하다) 고 가정하는 대신, 엔트로피 인코딩 유닛 (116) 은 또 다른 계수에 대한 절대 레벨 값을 이용할 수도 있다. 즉, 엔트로피 인코딩 유닛 (116) 이 특정 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 때, 엔트로피 인코딩 유닛 (116) 은 또 다른 계수의 실제 또는 추정된 절대값을 특정 계수의 컨텍스트 이웃에서의 홀의 절대값으로 이용할 수도 있다. 이 다른 계수는 특정 계수의 컨텍스트 이웃 내에 있을 수도 있다. 다른 예들에서, 엔트로피 인코딩 유닛 (116) 은, 홀을 배제하고 원래 컨텍스트 이웃 외부에 있는 다른 계수를 포함하도록, 특정 계수의 컨텍스트 이웃을 수정할 수도 있다. 일부 예들에서, 다른 계수는 홀의 우측에 있는 계수일 수도 있다. 따라서, 컨텍스트 도출을 위해, 우측 상의 계수는 두번 카운트된다.
다른 예에서, 엔트로피 인코딩 유닛 (116) 은 홀의 더 높은-우선순위 구문 엘리먼트들에 적어도 부분적으로 기초하여, 홀에 대한 절대값을 결정할 수도 있다. 이런 예들에서, 홀은 "부분 홀" 로서 지칭될 수도 있다. 더욱이, 이런 예들에서, 엔트로피 인코딩 유닛 (116) 은, 마치 홀의 현재 및 낮은 우선순위 계수 구문 엘리먼트들이 0 과 같은 것처럼, 홀에 대한 절대값을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 이 특정 계수의 gr2Flag 에 대한 코딩 컨텍스트를 선택하면, 엔트로피 인코딩 유닛 (116) 은 홀의 sigMapFlag 및 존재하는 경우 gr1Flag 에 기초하여, 특정 계수의 컨텍스트 이웃에서의 홀의 절대값을 결정할 수도 있다. 더욱이, 이 예에서, 엔트로피 인코딩 유닛 (116) 이 특정 계수의 gr2Flag 를 인코딩하면, 엔트로피 인코딩 유닛 (116) 은 마치 홀의 gr2Flag 및 levelRem 이 0 과 같은 것처럼, 홀의 절대값을 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 홀의 더 높은-우선순위 계수 구문 엘리먼트들에 기초하여 홀에 대한 절대값을 결정하는 또 다른 예에서, 엔트로피 인코딩 유닛 (116) 은 홀 (예컨대, 홀의 우측) 에 인접한 계수의 현재의-우선순위 계수 구문 엘리먼트에 부분적으로 기초하여, 홀의 절대값을 결정할 수도 있다. 즉, 엔트로피 인코딩 유닛 (116) 은 인과 계수에 인접한 계수의 절대값과 동일한 것으로 인과 계수의 절대값을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 이 특정 계수의 gr2Flag 를 인코딩하면, 엔트로피 인코딩 유닛 (116) 은 홀의 sigMapFlag, 홀의 gr1Flag, 및 홀에 인접한 계수의 gr2Flag 에 기초하여, 특정 계수의 컨텍스트 이웃에서의 홀의 절대값을 결정할 수도 있다. 홀에 인접한 계수는 특정 계수의 컨텍스트 이웃의 외부에 있을 수도 있다. 일부의 경우, 홀에 인접한 계수는 특정 계수를 포함하는 서브-블록의 외부에 있을 수도 있다.
엔트로피 인코딩 유닛 (116) 은 현재 계수의 컨텍스트 이웃에서의 계수들의 절대값들을 이용하여, 현재 계수의 구문 엘리먼트의 CABAC 또는 골롬-라이스 코딩을 위한 컨텍스트를 선택할 수도 있다. 따라서, 엔트로피 인코딩 유닛 (116) 은 이웃하는 계수가 코딩 순서에 따라서 n 개의 연속되는 위치들의 그룹에 속한다고 결정하는 것에 응답하여, 이웃하는 계수의 절대값을 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 코딩 패스 동안 n 계수 구문 엘리먼트들의 코딩 컨텍스트들을 병렬로 결정하는 다른 예들에서, 엔트로피 인코딩 유닛 (116) 은 서브-블록의 계수들을 n 개의 계수들의 그룹들로 분할할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 이 4개의 계수 구문 엘리먼트들의 코딩 컨텍스트들을 병렬로 결정하면, 엔트로피 인코딩 유닛 (116) 은 서브-블록을 4개의 계수들의 그룹들로 분할할 수도 있다. 일부의 경우, 그룹은 n 개보다 적은 계수들을 포함할 수도 있다. 통상적으로, n 개의 계수들보다 더 적은 계수들을 포함하는 그룹은 서브-블록에서의 계수들의 최종 그룹이다. 계수들의 컨텍스트 이웃들은, 서브-블록에서의 각각의 계수에 대해, 계수의 컨텍스트 이웃이 계수와 동일한 그룹 내에 있는 계수들을 포함하지 않도록, 정의된다. 아래에서 자세히 설명되는 도 11a 내지 도 11f 는, 계수 블록의 4x4 서브-블록에서의 계수들의 예시적인 그룹들을 예시하는 개념도들이다.
인코딩 유닛 (116) 이 이전 단락에서 설명된 바와 같이, 서브-블록의 계수들을 n 개의 계수들의 그룹들로 분할하는 예들에서, 계수들의 컨텍스트 이웃들은 홀들을 포함할 수도 있다. 엔트로피 코딩 유닛 (116) 은 홀들의 절대값들을 위에서 설명한 기법들의 어느 것에 따라서 결정할 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (116) 이 특정 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 때, 엔트로피 코딩 유닛 (116) 은 특정 계수의 컨텍스트 이웃에 있거나 또는 그렇지 않을 수도 있는 또 다른 계수의 실제 또는 추정된 절대값에 기초하여, 홀의 절대값을 결정할 수도 있다. 즉, 컨텍스트 이웃은 특정 계수의 컨텍스트 이웃에 원래 없었던 계수를 포함하도록 수정될 수도 있다. 또 다른 예에서, 엔트로피 인코딩 유닛 (116) 이 특정 계수의 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 때, 엔트로피 코딩 유닛 (116) 은, 0 과 동일한 것으로 가정되는, 홀의 더 높은-우선순위 계수 구문 엘리먼트들 및 홀의 현재 그리고 낮은 우선순위 계수 구문 엘리먼트들에 기초하여, 홀의 절대값을 결정할 수도 있다.
더욱이, 엔트로피 인코딩 유닛 (116) 이 서브-블록의 계수들을 n 개의 계수들의 그룹들로 분할하는 일부 예들에서, 계수의 컨텍스트 이웃은 5개 보다 적은 계수들을 포함할 수도 있다. 이런 예들에서, 엔트로피 인코딩 유닛 (116) 은 sum_absolute_level, sum_absolute_level_Minus1, 및 num_significant_coeff 의 조정된 값들을 이용하여, 컨텍스트 인덱스들을 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 sum_absolute_level, sum_absolute_level_Minus1, 및 num_significant_coeff 을 특정 스케일링 인자들에 의해 스케일링할 수도 있다. 이 예에서, 특정 계수의 컨텍스트 이웃이 하나의 홀을 가지면, 엔트로피 인코딩 유닛 (116) 은 sum_absolute_level, sum_absolute_level_Minus1, 및 num_significant_coeff 을 5/4 배 만큼 (by a factor of) 스케일링할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 룩업 테이블을 이용하여, sum_absolute_level, sum_absolute_level_Minus1, 및 num_significant_coeff 의 스케일링을 구현할 수도 있다.
다른 예들에서, 엔트로피 인코딩 유닛 (116) 은 계수 블록의 각각의 서브-블록을 계수들의 그룹들로 분할한다. 일부 예들에서, 계수들의 그룹들의 각각은 가능한 한 계수들의 최종 그룹을 제외하고, n 개의 계수들을 포함할 수도 있다. 아래에서 자세히 설명되는 도 12 는 계수 블록의 4x4 서브-블록 내 계수들의 또 다른 예시적인 그룹핑을 예시하는 개념도이다. 이런 예들에서, 엔트로피 인코딩 유닛 (116) 은 다음 그룹에서의 계수의 임의의 계수 구문 엘리먼트를 프로세싱하기 전에 그룹 내 계수들의 모든 계수 구문 엘리먼트들을 프로세싱한다. 즉, 전체 서브-블록에 대해 다음 코딩 패스를 수행하기 전에 전체 서브-블록에 대해 하나의 코딩 패스를 수행하는 대신, 엔트로피 인코딩 유닛 (116) 은 서브-블록에서의 계수들의 다음 그룹에 대해 5개의 코딩 패스들을 수행하기 전에 서브-블록에서의 계수들의 그룹에 대해 모든 5개의 코딩 패스들을 수행할 수도 있다. 따라서, 그룹 내에서, 엔트로피 인코딩 유닛 (116) 은 모두 5개의 코딩 패스들을 수행한다.
이전 단락의 예에서, 엔트로피 인코딩 유닛 (116) 은 계수들의 컨텍스트 이웃들에서의 홀들의 절대값들을 상기 예들에서 설명된 방법과 동일한 방법으로 결정할 수도 있다. 그러나, 이전 단락의 예에서, 엔트로피 인코딩 유닛 (116) 은 계수들의 추정된 절대값들과는 반대로 더 많은 계수들의 실제 절대값들을 결정가능할 수도 있다.
일부 예들에서, 계수 구문 엘리먼트를 엔트로피 코딩하는데 이용가능한 코딩 컨텍스트들은 컨텍스트 세트들로 분할될 수도 있다. 컨텍스트 세트들의 각각은 복수의 코딩 컨텍스트들을 포함할 수도 있다. 특정 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하기 위해, 엔트로피 인코딩 유닛 (116) 은 특정 계수 구문 엘리먼트에 대한 컨텍스트 세트 인덱스를 결정하고, 특정 계수 구문 엘리먼트에 대한 컨텍스트 인덱스를 결정할 수도 있다. 결정된 컨텍스트 인덱스는 결정된 컨텍스트 세트 인덱스에 의해 나타내어지는 컨텍스트 세트에서의 코딩 컨텍스트를 나타낸다.
일 예에서, 엔트로피 인코딩 유닛 (116) 은 4x4 및 8x8 TU들에서의 계수들의 sigMapFlags 에 대한 위치-기반의 컨텍스트 모델링을 이용한다. 위치-기반의 컨텍스트 모델링에서, 엔트로피 인코딩 유닛 (116) 은 계수 블록 내 특정 계수의 위치에 적어도 부분적으로 기초하여, 특정 계수에 대한 코딩 컨텍스트를 선택한다. 이 예에서, sigMapFlags 에 대한 컨텍스트 인덱스들은 테이블들의 세트에서 정의된다. 테이블들은 상이한 컨텍스트 세트들에 대응할 수도 있다. 3개의 테이블들, 즉, 4x4 루마 계수 블록들에 대해 하나, 4x4 크로마 계수 블록들에 대해 하나, 그리고, 8x8 루마 또는 크로마 계수 블록들에 대해 하나가 있을 수도 있다. 루마 계수 블록들은 루마 샘플 블록들로부터 도출된 계수 블록들이다. 크로마 계수 블록들은 크로마 샘플 블록들로부터 도출된 계수 블록들이다. 더욱이, 엔트로피 인코딩 유닛 (116) 은 16x16 및 32x32 계수 블록들과 같은, 더 큰 계수 블록들에 대해 위치-기반의 컨텍스트 모델링과 템플릿-기반 컨텍스트 모델링의 혼합을 이용할 수도 있다. 이런 더 큰 계수 블록들에서의 계수들에 대해, 엔트로피 인코딩 유닛 (116) 은 더 높은 주파수들에 있는 계수들 (즉, 계수 블록의 하단부 우측 코너에 더 가까운 계수들) 의 sigMapFlags 에 대해 단일 코딩 컨텍스트를 이용할 수도 있다. 이런 더 큰 계수 블록들에서의 다른 계수들에 대해, 엔트로피 인코딩 유닛 (116) 은 계수들의 컨텍스트 이웃들에서의 계수들이 0 과 동일한지 여부에 기초하여, 코딩 컨텍스트를 선택할 수도 있다. 즉, 엔트로피 인코딩 유닛 (116) 은 특정 낮은-주파수 계수의 컨텍스트 이웃에서의 계수들의 유효성을 이용하여, 특정 계수의 sigMapFlag 에 대한 코딩 컨텍스트를 결정할 수도 있다.
일 예에서, 엔트로피 인코딩 유닛 (116) 은 루마 계수 블록들에서의 계수들의 gr1Flags 를 엔트로피 인코딩하기 위한 4개의 컨텍스트 세트들을 이용하고, 크로마 계수 블록들의 계수들의 gr1Flags 를 엔트로피 인코딩하기 위한 2개의 컨텍스트 세트들을 이용한다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 계수 블록 내 특정 계수의 로케이션에 기초하여, 그리고, 또한 계수들의 이전에-코딩된 그룹에서 1 과 같은 gr1Flags 의 수 (numGreater1) 에 기초하여, 특정 계수의 gr1Flag 에 대한 컨텍스트 세트 인덱스를 결정할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은, 최대 3 으로, 특정 계수의 컨텍스트 이웃에서의 트레일링 1 (trailing one) 들 (즉, gr1Flags 는 0 과 같음) 의 수에 기초하여, 컨텍스트 세트 내 컨텍스트 인덱스 (ctxIdx_level_greater1) 를 결정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (116) 은 다음과 같이 컨텍스트 인덱스를 결정할 수도 있다:
ctxIdx_level_greater1=(ctxSet*4)+min(3, 트레일링 1들의 개수 (number of trailing ones))
일부 예들에서, 엔트로피 인코딩 유닛 (116) 은 루마 계수 블록들에서의 계수들의 gr2Flags 를 엔트로피 인코딩하기 위한 4개의 컨텍스트 세트들을 이용하고, 크로마 계수 블록들의 계수들의 gr1Flags 를 엔트로피 인코딩하기 위한 2개의 컨텍스트 세트들을 이용한다. 엔트로피 인코딩 유닛 (116) 은 계수 블록 내 특정 계수의 로케이션 및 계수들의 이전에-코딩된 그룹에서 1 과 같은 gr1Flags 의 개수 (numGreater1) 에 기초하여, 특정 계수의 gr2Flag 에 대한 컨텍스트 세트 인덱스를 결정할 수도 있다. gr2Flag 의 컨텍스트 인덱스는 gr2Flag 에 대한 컨텍스트 세트 인덱스와 동일할 수도 있다.
또 다른 예에서, 루마 계수 블록들에 대한 계수 구문 엘리먼트들을 엔트로피 코딩하기 위한 3개의 컨텍스트 세트들, 및 크로마 계수 블록들에 대한 계수 구문 엘리먼트들을 엔트로피 코딩하기 위한 2개의 컨텍스트 세트들이 있다. 이 예에서, sigMapFlags 를 엔트로피 인코딩하기 위해 컨텍스트 세트들의 각각에서 6개의 코딩 컨텍스트들이 있다. 즉, 루마 계수 블록의 계수의 sigMapFlag 에 대해, 3개의 컨텍스트 세트들이 존재할 수도 있으며, 각각은 6개의 코딩 컨텍스트들을 포함한다. 크로마 계수 블록의 계수의 sigMapFlag 에 대해, 2개의 컨텍스트 세트들이 존재할 수도 있으며, 각각은 6개의 코딩 컨텍스트들을 포함한다. 더욱이, 이 예에서, gr1Flags 및 gr2Flags 를 엔트로피 인코딩하기 위해 컨텍스트 세트들의 각각에서 5개의 코딩 컨텍스트들이 있다.
이전 단락의 예에서, 엔트로피 인코딩 유닛 (116) 은, 특정 계수의 계수 블록 내 위치에 기초하여, 특정 계수의 계수 구문 엘리먼트를 엔트로피 인코딩하기 위한 선택된 코딩 컨텍스트를 포함하는 컨텍스트 세트를 나타내는 컨텍스트 세트 인덱스 (ctx_set_idx) 를 결정할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 다음과 같이 컨텍스트 세트 인덱스를 결정할 수도 있다:
Figure pct00012
상기 수식에서, posX 및 posY 는 특정 계수의 계수 블록 내, 칼럼 및 로우를 각각 나타낸다. 상기 수식에서, ctx_set_idx 는, posX 가 2 미만이고 posY 가 2 미만이면, 0 과 동일하다. 더욱이, 상기 수식에서, ctx_set_idx 는, posX 가 2 미만이 아니거나 또는 posY 가 2 미만이 아니고 계수 블록이 루마 계수 블록이 아니면, 1 과 동일하다. 상기 수식에서, ctx_set_idx 는, posX 또는 posY 가 2 미만이 아니고 계수 블록이 루마 계수 블록이고 그리고 posX 및 posY 양쪽이 4 미만이면, 1 과 동일하다. 상기 수식에서, ctx_set_idx 는, 계수 블록이 루마 계수 블록이고 posX 또는 posY 가 4 미만이 아니면, 2 와 동일하다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 본 개시물에서 다른 곳에서 설명되는 예들 중 하나 이상에 따라서 컨텍스트 인덱스를 결정할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 어떻게 컨텍스트 세트들을 이용할 수 있는 지에 대한 또 다른 예에서, 루마 계수 블록들에 대한 계수 구문 엘리먼트들을 엔트로피 코딩하기 위한 3개의 컨텍스트 세트들이 존재할 수도 있다. 더욱이, 이 예에서 크로마 계수 블록들에서 계수들의 sigMapFlags 를 인코딩하기 위한 2개의 컨텍스트 세트들이 존재할 수도 있으며, 크로마 계수 블록들에서 계수들의 gr1Flags 및 gr2Flags 를 인코딩하기 위한 하나의 컨텍스트 세트가 존재할 수도 있다. 루마 및 크로마 계수 블록들에서의 계수들의 sigMapFlags 를 인코딩하기 위한 컨텍스트 세트들의 각각은 6개의 코딩 컨텍스트들을 포함할 수도 있다. 루마 및 크로마 계수 블록들에서의 계수들의 gr1Flags 및 gr2Flags 를 인코딩하기 위한 컨텍스트 세트들의 각각은 5개의 코딩 컨텍스트들을 포함할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 다음 수식을 이용하여, 루마 계수 블록의 계수 구문 엘리먼트에 대한 컨텍스트 세트 인덱스 (ctx_set_idx) 를 결정할 수도 있다:
Figure pct00013
상기 수식에서, posX 및 posY 는 특정 계수의 계수 블록 내 칼럼 및 로우를 각각 나타낸다. 더욱이, 상기 수식에서, ctx_set_idx 는, posX 또는 posY 가 4 미만이 아니면, 0 과 동일하다. 상기 수식에서, ctx_set_idx 는, posX 및 posY 양쪽 모두가 4 미만이고 posX 또는 posX 가 2 미만이 아니면, 1 과 동일하다. 상기 수식에서, ctx_set_idx 는, posX 및 posY 양쪽 모두가 2 미만이면, 2 와 동일하다.
이전 단락의 예에서, 엔트로피 인코딩 유닛 (116) 은 다음 수식을 이용하여, 크로마 계수 블록들의 계수들의 sigMapFlags 에 대한 컨텍스트 세트 인덱스 (ctx_set_idx) 를 결정할 수도 있다:
Figure pct00014
상기 수식에서, posX 및 posY 는 특정 계수의 계수 블록 내 칼럼 및 로우를 각각 나타낸다. 더욱이, 상기 수식에서, ctx_set_idx 는, posX 및 posY 양쪽이 2 미만이면, 1과 동일하다. ctx_set_idx 는, posX 또는 posY 가 2 보다 크거나 또는 동일하면, 0 과 동일하다. 이 예에서, 엔트로피 인코딩 유닛 (116) 은 본 개시물에서 다른 곳에서 설명되는 예들 중 하나 이상에 따라서 컨텍스트 인덱스를 결정할 수도 있다.
도 6 은 본 개시물의 기법들을 구현하도록 구성된 예시적인 비디오 디코더 (30) 를 예시하는 블록도이다. 도 6 은 설명의 목적들을 위해 제공되며 본 개시물에 폭넓게 예시되고 설명된 바처럼 그 기법들에 한정하는 것이 아니다. 설명의 목적을 위해, 본 개시물은 HEVC 코딩의 컨텍스트에서의 비디오 디코더 (30) 를 기술한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 6 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 재구성 유닛 (158), 필터 유닛 (159), 및 디코딩된 화상 버퍼 (160) 를 포함한다. 예측 프로세싱 유닛 (152) 은 모션 보상 유닛 (162) 및 인트라-예측 프로세싱 유닛 (164) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능적 컴포넌트들을 포함할 수도 있다.
비디오 디코더 (30) 는 비트스트림을 수신한다. 엔트로피 디코딩 유닛 (150) 은 비트스트림을 파싱하여, 비트스트림으로부터 구문 엘리먼트들을 추출할 수도 있다. 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (159) 은 비트스트림으로부터 추출된 구문 엘리먼트들에 기초하여, 디코딩된 비디오 데이터를 발생할 수도 있다.
비트스트림을 파싱하는 것의 일부로서, 엔트로피 디코딩 유닛 (150) 은 비트스트림에서의 엔트로피-인코딩된 구문 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예를 들어, 엔트로피 디코딩 유닛 (150) 은 계수 블록들에서의 계수들의 sigMapFlags, gr1Flags, 및 gr2Flags 와 같은, 일부 구문 엘리먼트들에 대해 정규 CABAC 디코딩을 수행할 수도 있다. 더욱이, 엔트로피 디코딩 유닛 (150) 은 계수 블록들에서의 계수들의 signFlags 및 levelRems 과 같은, 다른 구문 엘리먼트들에 대해, 바이패스 엔트로피 디코딩을 수행할 수도 있다.
엔트로피 디코딩 유닛 (150) 이 sigMapFlag, gr1Flag, 또는 gr2Flag 와 같은, 계수 구문 엘리먼트에 대해, 정규 CABAC 디코딩을 수행할 때, 엔트로피 디코딩 유닛 (150) 은 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 계수 구문 엘리먼트를 선택하는 엔트로피 인코딩 유닛 (116) 과 관련하여 위에서 설명된, 예들과 다른 예들 중 어느 것에 따라서, 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다.
게다가, 비디오 디코더 (30) 는 비-파티셔닝된 CU 에 대해 재구성 동작을 수행할 수도 있다. 비-파티셔닝된 CU 에 대해 재구성 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 와 연관되는 잔여 샘플 블록을 재구성할 수도 있다.
CU 의 TU 에 대해 재구성 동작을 수행하는 부분으로서, 역양자화 유닛 (154) 은 TU 와 연관되는 계수 블록들을 역양자화할 수도 있다, 즉, 탈양자화할 수도 있다. 역양자화 유닛 (154) 은 TU 의 CU 와 연관되는 QP 값을 이용하여, 적용할 역양자화 유닛 (154) 에 대한 양자화의 정도 및 마찬가지로 역양자화의 정도를 결정할 수도 있다.
역양자화 유닛 (154) 이 계수 블록을 역양자화한 후, 역변환 프로세싱 유닛 (156) 은 TU 와 연관되는 잔여 샘플 블록을 발생하기 위해, 하나 이상의 역변환들을 계수 블록에 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 Karhunen-Loeve 변환 (KLT), 역 회전 변환, 역 방향 변환, 또는 또 다른 역변환을 계수 블록에 적용할 수도 있다.
PU 가 인트라 예측을 이용하여 인코딩되면, 인트라-예측 프로세싱 유닛 (164) 은 인트라 예측을 수행하여, PU 에 대한 예측 샘플 블록을 발생할 수도 있다. 인트라-예측 프로세싱 유닛 (164) 은 인트라 예측 모드를 이용함으로써, 공간적으로-이웃하는 PU들의 샘플 블록들에 기초하여 PU 에 대한 예측 샘플 블록들을 발생할 수도 있다. 인트라-예측 프로세싱 유닛 (164) 은 비트스트림으로부터 파싱된 하나 이상의 구문 엘리먼트들에 기초하여, PU 에 대한 인트라 예측 모드를 결정할 수도 있다.
모션 보상 유닛 (162) 은 비트스트림으로부터 추출된 구문 엘리먼트들에 기초하여, 제 1 참조 화상 리스트 (리스트 0) 및 제 2 참조 화상 리스트 (리스트 1) 를 구성할 수도 있다. 더욱이, PU 가 인터 예측을 이용하여 인코딩되면, 엔트로피 디코딩 유닛 (150) 은 PU 에 대한 모션 정보를 추출할 수도 있다. 모션 보상 유닛 (162) 은 PU 의 모션 정보에 기초하여, PU 에 대한 하나 이상의 참조 블록들을 결정할 수도 있다. 모션 보상 유닛 (162) 은 PU 에 대한 하나 이상의 참조 블록들에 기초하여, PU 에 대한 예측 샘플 블록들을 발생할 수도 있다.
재구성 유닛 (158) 은 CU 의 TU들과 연관되는 잔여 샘플 블록들 및 CU 의 PU들의 예측 샘플 블록들, 즉, 적용가능한 경우, 인트라-예측 데이터 또는 인터-예측 데이터를 이용하여, CU 의 샘플 블록들을 재구성할 수도 있다. 특히, 재구성 유닛 (158) 은 잔여 샘플 블록들의 샘플들을 예측 샘플 블록들의 대응하는 샘플들에 가산하여, CU 의 샘플 블록들을 재구성할 수도 있다.
필터 유닛 (159) 은 디블록킹 동작을 수행하여, CTB 의 CU들의 샘플 블록들과 연관되는 블록킹 아티팩트들을 감소시킬 수도 있다. 비디오 디코더 (30) 는 CU 의 샘플 블록들을 디코딩된 화상 버퍼 (160) 에 저장할 수도 있다. 디코딩된 화상 버퍼 (160) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상에의 프리젠테이션을 위해, 참조 화상들을 제공할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 디코딩된 화상 버퍼 (160) 에서의 샘플 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
도 7 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터를 인코딩하는 비디오 인코더 (20) 의 예시적인 동작 (200) 을 예시하는 플로우차트이다. 도 7 은 일 예로서 제공된다. 다른 예들에서, 본 개시물의 기법들은 도 7 의 예에 나타낸 단계들보다 더 많거나, 더 적거나, 또는 상이한 단계들을 이용하여 구현될 수도 있다.
도 7 의 예에서, 변환 프로세싱 유닛 (104) 은 잔여 샘플 블록에 기초하여, 계수 블록을 발생할 수도 있다 (202). 위에서 설명한 바와 같이, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환과 같은, 하나 이상의 변환들을 잔여 샘플 블록에 적용함으로써, 계수 블록을 발생할 수도 있다. 어떤 경우들에서, 변환 프로세싱 유닛 (104) 은 변환을 잔여 샘플 블록에 적용하는 대신, 변환의 적용을 스킵할 수도 있다. 도 7 의 예에서는 나타내지 않았지만, 양자화 유닛 (106) 은 계수 블록에서의 계수들을 양자화할 수도 있다.
엔트로피 인코딩 유닛 (116) 은, 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩할 수도 있다 (204). 예를 들어, 엔트로피 인코딩 유닛 (116) 은 계수 블록의 서브-블록에서의 계수들의 코딩 패스를 수행하여, 서브-블록에서의 계수들의 sigMapFlags, gr1Flags, gr2Flags, signFlags, 및 levelRems 을 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (116) 이 구문 엘리먼트들의 제 1 세트를 인코딩할 때, 엔트로피 인코딩 유닛 (116) 은 서브-블록에서의 각각의 계수에 대해, 계수 구문 엘리먼트를 발생할 수도 있다. 계수 구문 엘리먼트가 컨텍스트 코딩되면, 엔트로피 인코딩 유닛 (116) 은 계수 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하고 그 선택된 엔트로피 코딩 컨텍스트를 이용하여 계수 구문 엘리먼트를 엔트로피 인코딩할 수도 있다. 그렇지 않으면, 엔트로피 인코딩 유닛 (116) 은 계수 구문 엘리먼트를 바이패스 인코딩할 수도 있다.
더욱이, 엔트로피 인코딩 유닛 (116) 은 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩할 수도 있다 (206). 예를 들어, 엔트로피 인코딩 유닛 (116) 은 제 1 코딩 패스 동안 sigMapFlags 를 인코딩할 수도 있으며, 제 2 코딩 패스 동안 gr1Flags 를 인코딩할 수도 있다.
엔트로피 인코딩 유닛 (116) 이 제 2 코딩 패스 동안 구문 엘리먼트를 인코딩할 때, 엔트로피 인코딩 유닛 (116) 은 구문 엘리먼트를 발생할 수도 있다 (208). 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있을 수도 있으며 계수 블록의 현재 계수에 대응할 수도 있다. 더욱이, 엔트로피 인코딩 유닛 (116) 은 구문 엘리먼트에 대한 코딩 컨텍스트를 선택한다 (210). 본 개시물의 기법들에 따르면, 엔트로피 인코딩 유닛 (116) 은 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다. 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있을 수도 있으며 비인과 계수에 대응할 수도 있다. 예를 들어, 제 2 구문 엘리먼트는 비인과 계수의 더 높은-우선순위 구문 엘리먼트일 수도 있다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응한다. 예를 들어, 제 1 구문 엘리먼트가 gr2Flag 이면, 제 2 구문 엘리먼트는 gr1Flag 또는 sigMapFlag 일 수도 있으며, 제 3 구문 엘리먼트는 gr2Flag 일 수도 있다. 비인과 계수는 현재의 (예컨대, 제 2) 코딩 패스의 코딩 순서에서 현재 계수 이후에 생긴다. 인과 계수는 코딩 순서에서 현재 계수 전에 생긴다.
구문 엘리먼트에 대한 코딩 컨텍스트를 선택한 후, 엔트로피 인코딩 유닛 (116) 은 제 1 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 구문 엘리먼트를 엔트로피 인코딩할 수도 있다 (212). 예를 들어, 엔트로피 인코딩 유닛 (116) 은 정규 CABAC 인코딩을 이용하여, 구문 엘리먼트를 인코딩할 수도 있다.
도 8 은 본 개시물의 하나 이상의 기법들에 따른, 비디오 데이터를 디코딩하는 비디오 디코더 (30) 의 예시적인 동작 (250) 을 예시하는 플로우차트이다. 도 8 의 예에 예시된 바와 같이, 엔트로피 디코딩 유닛 (150) 은 계수 블록의 계수들의 제 1 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩한다 (252). 게다가, 엔트로피 디코딩 유닛 (150) 은, 계수 블록의 계수들의 제 2 코딩 패스 동안, 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩한다 (254).
엔트로피 디코딩 유닛 (150) 이 제 2 코딩 패스 동안 현재의 구문 엘리먼트를 디코딩할 때, 엔트로피 디코딩 유닛 (150) 은 제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택할 수도 있다 (256). 제 2 구문 엘리먼트는 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 계수에 대응한다. 제 3 구문 엘리먼트는 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 계수에 대응한다. 비인과 계수는 현재의 (제 2) 코딩 패스의 코딩 순서에서 현재 계수 후에 생긴다. 인과 계수는 코딩 순서에서 현재 계수 전에 생긴다. 현재의 구문 엘리먼트에 대한 코딩 컨텍스트를 선택한 후, 엔트로피 디코딩 유닛 (150) 은 현재의 구문 엘리먼트에 대해 선택된 코딩 컨텍스트에 적어도 부분적으로 기초하여, 현재의 구문 엘리먼트를 엔트로피 디코딩할 수도 있다 (258). 예를 들어, 엔트로피 디코딩 유닛 (150) 은 정규 CABAC 디코딩을 이용하여, 현재의 구문 엘리먼트를 디코딩할 수도 있다.
엔트로피 디코딩 유닛 (150) 은 계수들의 구문 엘리먼트들의 제 1 및 제 2 세트들에 적어도 부분적으로 기초하여, 계수 블록에서의 계수들의 값들을 결정할 수도 있다 (260). 역양자화 유닛 (154) 및 역변환 프로세싱 유닛 (156) 은 계수 블록의 계수들에 기초하여, 잔여 샘플 블록을 발생할 수도 있다 (262). 후속하여, 재구성 유닛 (158) 은 잔여 샘플 블록에서의 샘플들을 예측 샘플 블록에서의 대응하는 샘플들에 가산하여, PU 의 샘플 블록을 재구성할 수도 있다.
도 9a 는 예시적인 4x4 서브-블록 (300) 을 예시하는 개념도이다. 도 9b 내지 도 9g 는 도 9a 의 서브-블록 (300) 에서의 계수들의 컨텍스트 이웃들에서의 예시적인 홀들을 예시하는 개념도들이다. 도 9a 내지 도 9g 에서의 원들은 서브-블록에서의 계수들에 대응한다. 도 9a 에서의 원은 여러 유형들의 크로스-해칭 (cross-hatching) 을 갖는다. 도 9a 에서의 원의 크로스-해칭의 유형은 도 9b 내지 도 9g 에서 어느 컨텍스트 이웃이 원에 대응하는 계수에 적용가능한지를 나타낸다. 예를 들어, 수평 크로스-해칭을 가진 도 9a 에서의 원은 도 9b 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 수직 크로스-해칭을 가진 도 9a 에서의 원은 도 9c 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 하방-우측 대각선 크로스-해칭을 가진 도 9a 에서의 원은 도 9d 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 상방-우측 대각선 크로스-해칭을 가진 도 9a 에서의 원은 도 9e 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 그리드 크로스-해칭 (grid cross-hatching) 을 가진 도 9a 에서의 원은 도 9f 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 대각선 크로스 (diagonal cross) 크로스-해칭을 가진 도 9a 에서의 원은 도 9g 에 나타낸 유형의 컨텍스트 이웃들을 갖는다.
도 9b 내지 도 9g 에서, 백색-채워진 원들은 홀들에 대응하며, 흑색-채워진 원들은 홀들이 아닌 계수들에 대응한다. 일부 예들에서, (엔트로피 인코딩 유닛 (116) 또는 엔트로피 디코딩 유닛 (150) 과 같은) 엔트로피 코딩 유닛은, 엔트로피 코딩 유닛이 현재 계수과 병렬로 홀들을 프로세싱하고 있을 수도 있기 때문에, "홀들" 의 현재-우선순위 계수 구문 엘리먼트들에 액세스 불가능할 수도 있다. 도 9g 에 나타낸 바와 같이, 대각선 크로스 크로스-해칭을 가진 도 9a 에서의 원에 대해서는, 어떤 홀들도 사용되지 않는다. 홀들의 위치들은, 현재의 4x4 서브-블록 외부에 있는 계수들이 이전 청크에 속할 수도 있으며 그 청크의 모든 계수 구문 엘리먼트들이 이용가능하기 때문에, 현재의 4x4 서브-블록 외부에 있지 않을 수도 있다. 도 9a 내지 도 9g 의 예에서, 엔트로피 코딩 유닛이 코딩 패스 동안 4개의 계수들을 병렬로 인코딩한다고 가정된다. 도 9a 내지 도 9g 의 예가 4-빈 병렬화를 가정하지만, 유사한 기법들이 n-빈 병렬성을 가능하게 하기 위해 사용될 수도 있으며, 여기서, n > 1 이다.
도 9a 내지 도 9e 는 4×4 서브-블록 코딩 순서에 대해 홀들의 사용을 설명하였지만, 엔트로피 코딩 유닛은 홀들을 다른 코딩 순서들, 예컨대 수평, 수직 등에 적용할 수도 있다. 따라서, 일반적으로, n 개의 빈들에 대해 병렬 컨텍스트 도출을 가능하게 하기 위해, 계수에 대한 컨텍스트 이웃이 현재 계수와 동일한 서브-블록에 속하는 코딩 순서에서 이전 (n-1) 개의 계수들의 어느 것을 포함하면, 이전 (n-1) 개의 계수는 위에서 설명한 바와 같이, 홀들 또는 다른 계수들로 대체된다. 홀들의 사용의 하나의 이점은, 엔트로피 코딩 유닛이 n-빈 병렬화를 위해 설계되면, 엔트로피 코딩 유닛은, m ≤ n 인 한, m-빈 병렬화에 사용될 수 있다는 점이다. 컨텍스트 이웃들의 재설계는, 병렬화의 설계된 정도와 구현된 정도 사이의 차이를 고려하는데 불필요할 수도 있다.
아래에서 자세히 설명되는, 도 10a 내지 도 10f 는, 계수 블록의 4x4 서브-블록 (350) 에서의 계수들의 예시적인 그룹들을 예시하는 개념도들이다. 도 10a 내지 도 10f 에서의 원들은 서브-블록에서의 계수들에 대응한다. 도 10a 에서, 계수들을 둘러싸는 형상들 (352A-352D) 은 계수들의 예시적인 그룹들을 나타낸다. 도 10a 내지 도 10f 의 예에서, 엔트로피 코딩 유닛 (예컨대, 엔트로피 인코딩 유닛 (116) 또는 엔트로피 디코딩 유닛 (150)) 이 서브-블록 (350) 의 4개의 계수들을 병렬로 프로세싱하는 것으로 가정된다. 도 10a 내지 도 10f 의 예들이 4-빈 병렬화를 가정하지만, 도 10a 내지 도 10f 의 예들은 계수들의 다른 수들을 병렬로 프로세싱하는 것, 즉, n-빈 병렬화를 위해 수정될 수도 있으며, 여기서, n 은 1 보다 크다. 더욱이, 도 10a 내지 도 10f 의 예에서, 엔트로피 코딩 유닛이 계수들을 4x4 서브-블록 하방-좌측 코딩 순서에 따라서 프로세싱한다고 가정된다. 도 10a 내지 도 10f 의 예는 수평 코딩 순서, 수직 코딩 순서 등과 같은 다른 코딩 순서들에 대해 수정될 수도 있다.
도 10b 내지 도 10f 는 계수들에 대한 예시적인 컨텍스트 이웃들을 예시한다. 도 10a 에서의 원은 여러 유형들의 크로스-해칭을 갖는다. 도 10a 에서의 원의 크로스-해칭의 유형은 도 10b 내지 도 10f 에서 어느 컨텍스트 이웃의 유형이 원에 대응하는 계수에 적용가능한지를 나타낸다. 예를 들어, 수직 크로스-해칭을 가진 도 10a 에서의 원은 도 10b 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 수평 크로스-해칭을 가진 도 10a 에서의 원은 도 10c 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 대각선 크로스-해칭 (diagonal cross-hatching) 을 가진 도 10a 에서의 원은 도 10d 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 그리드 크로스-해칭 (grid cross-hatching) 을 가진 도 10a 에서의 원은 도 10e 에 나타낸 유형의 컨텍스트 이웃들을 갖는다. 대각선 십자형 크로스-해칭 (diagonal crisscross cross-hatching) 을 가진 도 10a 에서의 원은 도 10f 에 나타낸 유형의 컨텍스트 이웃들을 갖는다.
도 10b 내지 도 10f 에서, 백색-채워진 원들은 홀들에 대응하며, 흑색-채워진 원들은 홀들이 아닌 계수들에 대응한다. 그러나, 컨텍스트 이웃에서의 계수가 홀이고 계수가 외부 서브-블록 (350) 외부에 있는 것을 도 10b 내지 도 10f 가 나타내면, 계수의 각각의 계수 구문 엘리먼트가 이용가능하며 엔트로피 코딩 유닛은 계수의 계수 구문 엘리먼트들에 기초하여, 계수의 실제 절대값을 결정할 수도 있다.
일부 예들에서, 엔트로피 코딩 유닛은 계수들의 다음 그룹으로 진행하기 전에, 4개의 계수들의 그룹에 대한 모든 코딩 패스들을 종료할 수도 있다. 따라서, 엔트로피 코딩 유닛이 계수들의 다음 그룹을 코딩할 때, 계수들의 초기 그룹에서의 계수들에 대한 실제 절대값들이 이용가능하다. 예를 들어, 엔트로피 코딩 유닛은 그룹 (352C) 에서의 임의의 계수 구문 엘리먼트를 코딩하기 전에, 그룹 (352D) 에서의 각각의 계수에 대한 sigMapFlag, gr1Flag, gr2Flag, signFlag, 및 levelRem 을 코딩할 수도 있다. 따라서, 그룹 (352C) 에서의 계수들에 대한 계수 구문 엘리먼트들을 코딩할 때, 그룹 (352D) 에서의 계수들의 실제 절대값들이 이용가능하다.
도 9a 내지 도 9g 를 도 10a 내지 도 10f 와 비교하면, 도 10a 내지 도 10f 에서의 어떤 홀들도 없이 컨텍스트 이웃들을 갖는 더 많은 계수들이 있다는 것이 분명하다. 그러나, 도 10a 내지 도 10f 의 예에서, 그룹들이 n 개의 계수들을 포함하면, m-빈 병렬화 (즉, m 개의 계수 구문 엘리먼트들을 병렬로 프로세싱하는 능력) 은, m 이 n 이하이고 m 이 n 으로 나누어지는 경우에만 가능할 수도 있다. 예를 들어, 그룹들 각각이 4개의 계수들을 포함하면, 엔트로피 코딩 유닛은 단지 4개 또는 2개의 계수 구문 엘리먼트들을 병렬로 프로세싱할 수도 있다.
도 11 은 계수 블록의 4x4 서브-블록 (400) 내 계수들의 또 다른 예시적인 그룹핑을 예시하는 개념도이다. 도 11 의 예에서, 각각의 원은 서브-블록 (400) 에서의 계수에 대응한다. 타원들 (402A-402G) 은 서브-블록 (400) 내 계수들의 그룹들을 나타낸다. 위에서 설명된 도 10a 내지 도 10g 의 예와는 달리, 도 11 의 예에서, 엔트로피 인코딩 유닛 (116) 또는 엔트로피 디코딩 유닛 (150) 과 같은 엔트로피 코딩 유닛은 계수들의 다음 그룹의 계수에 대해 임의의 코딩 패스들을 수행하기 전에, 계수들의 그룹에 대해 모두 5개의 코딩 패스들을 수행할 수도 있다. 이러한 이유로, 엔트로피 코딩 유닛이 그룹에서의 계수 구문 엘리먼트들에 대한 코딩 컨텍스트들을 선택할 때, 엔트로피 코딩 유닛은 이전에-프로세싱된 그룹들에서의 계수들의 실제 절대값들을 결정할 수도 있다.
위에서 설명된 JCTVC-H0228 의 제안의 단점들에 추가하여, JCTVC-H0228 의 제안은 비디오 코더가 CABAC-코딩된 구문 엘리먼트들과 바이패스-코딩된 구문 엘리먼트들의 코딩을 인터리브하는 것을 필요로 할 수도 있다. 이것은, JCTVC-H0228 의 제안이 다음 계수를 코딩하기 전에, 계수에 대한 sigMapFlag, gr1Flag, gr2Flag, signFlag, 및 levelRem 을 코딩하는 것을 필요로 하기 때문이다. 통상적으로, sigMapFlags, gr1Flags, 및 gr2Flags 는 CABAC 코딩되지만, signFlags 및 levelRems 는 바이패스 코딩된다. CABAC-코딩된 구문 엘리먼트들과 바이패스-코딩된 구문 엘리먼트들의 인터리빙 코딩은 코딩 효율을 감소시킬 수도 있다. 게다가, JCTVC-H0228 의 제안은 비디오 코더가 특정 계수에 대한 코딩 컨텍스트를 선택하기 위해 특정 계수의 계수 이웃에서의 계수들의 전체 절대값들을 저장하는 것을 필요로 할 수도 있다. 계수들의 전체 절대값들을 저장하는 것은 비디오 코더에 의해 요구되는 저장을 현저하게 증가시킬 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 바이패스 코딩된 구문 엘리먼트들의 병렬 파싱 능력을 가능하기 위해, 각각의 TU 는 하나 이상의 서브세트들로 분할될 수도 있다. 일부 예들에서, 각각의 서브세트는 주로 2개의 패스들, 즉, 컨텍스트-코딩된 구문 엘리먼트들에 대해 하나의 패스, 그리고, 바이패스 코딩된 구문 엘리먼트들에 대해 또 다른 패스를 이용하여 코딩된다. 컨텍스트-코딩된 구문 엘리먼트들은 sigMapFlag, gr1Flag 및 gr2Flag 일 수도 있으며, 바이패스 코딩된 구문 엘리먼트들은 signFlag 및 levelRem 일 수도 있다. 컨텍스트-코딩된 구문 엘리먼트들 패스에서, 하나의 계수의 (이용가능한 경우) sigMapFlag, gr1Flag 및 gr2Flag 가 다음 계수들로 진행하기 전에 인코딩/디코딩된다. SignFlag 및 levelRem 은 또한 분리된 패스들로 프로세싱될 수도 있다. 이 예에서, 3개의 코딩 패스들이 각각의 청크에 적용된다. 위에서 설명된 2개의 또는 3개의 코딩 패스 예들은 또한 전체 TU 에서의 계수들 코딩에 적용될 수도 있다.
앞에서 언급한 바와 같이, JCTVC-H0228 의 제안을 이용함으로써, sigMapFlag, gr1Flag 및 gr2Flag 구문 엘리먼트의 컨텍스트 모델 선택에 절대 레벨 값들의 저장이 필요할 수도 있다. 본 개시물의 분리된 코딩 패스들 기법들에서, 이미 인코딩되어진 (또는, 디코딩되어진) 구문 엘리먼트들이 컨텍스트 모델 선택에 이용될 수 있다. 이런 로직으로, 계수 구문 엘리먼트의 컨텍스트 모델을 도출할 때, 동일한 청크에 속하는 이웃하는 계수들은 (이미-코딩된 컨텍스트 빈들로 재구성된) 3 의 최대 레벨을 가질 수도 있으며, 이전 청크들에 속하는 이웃하는 계수들은 전체 레벨 정보를 가질 수 있다. 2개의 부분들 사이의 균형을 위해서 그리고 각각의 계수에 대한 전체 레벨 값들을 저장할 버퍼 사이즈를 감소시키기 위해서, 저장된 계수들은 컨텍스트 모델 도출을 위한 저장된 계수들을 이용하기 전에, 어떤 임계치까지 트렁케이트될 수도 있다. 일 예에서, 비디오 코더는 저장된 계수들을 3 으로 트렁케이트 (예컨대, 클립) 할 수도 있으며, 그 결과, 컨텍스트 도출을 위한 모든 저장된 계수들이 2 비트들로 표현되며 일관된 데이터 범위를 갖는 것에 귀착될 수도 있다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 비디오 코더가 3개의 코딩 패스들에서 서브-블록의 계수 구문 엘리먼트들을 코딩하는 예시적인 동작 (450) 을 예시하는 플로우차트이다. 동작 (450) 은 위에서 설명된 JCTVC-H0228 의 제안의 단점들을 해결할 수도 있다.
도 12 의 예에서, 엔트로피 코딩 유닛 (예컨대, 엔트로피 인코딩 유닛 (116) 또는 엔트로피 디코딩 유닛 (150)) 은 제 1 코딩 패스를 수행하여, 계수 블록의 서브-블록에서의 계수들의 sigMapFlags, gr1Flags, 및 gr2Flags 를 코딩할 수도 있다 (452). 엔트로피 코딩 유닛이 제 1 코딩 패스를 수행할 때, 엔트로피 코딩 유닛은 다음 계수의 sigMapFlag, gr1Flag, 및 gr2Flag 를 발생하고 CABAC 코딩하기 전에, 계수의 sigMapFlag, gr1Flag, 및 gr2Flag 를 발생하고 CABAC 코딩할 수도 있다.
제 1 코딩 패스를 완료한 후, 엔트로피 코딩 유닛은 제 2 코딩 패스를 수행하여, 서브-블록에서의 계수들의 signFlags 를 코딩할 수도 있다 (454). 엔트로피 코딩 유닛이 제 2 코딩 패스를 수행할 때, 엔트로피 코딩 유닛은 다음 계수의 signFlag 를 코딩하기 전에, 계수의 signFlag 를 발생하고 바이패스 코딩할 수도 있다. 더욱이, 제 2 코딩 패스를 완료한 후, 엔트로피 코딩 유닛은 제 3 코딩 패스를 수행하여, 서브-블록에서의 계수들의 levelRems 을 코딩할 수도 있다 (456). 엔트로피 코딩 유닛이 제 3 코딩 패스를 수행할 때, 엔트로피 코딩 유닛은 다음 계수의 levelRem 을 코딩하기 전에, 계수의 levelRem 을 발생하고 바이패스 코딩할 수도 있다.
대안적인 예에서, 엔트로피 코딩 유닛은 서브-블록에서의 계수들의 signFlags 및 levelRems 양자 모두를 단일 패스에서 코딩할 수도 있다. 즉, 엔트로피 코딩 유닛은 서브-블록에서의 다음 계수의 signFlag 및 levelRem 을 바이패스 코딩하기 전에, 계수의 signFlag 및 levelRem 을 바이패스 코딩할 수도 있다. 이와 같이, 엔트로피 코딩 유닛은 2개의 패스들, 즉, CABAC-코딩된 구문 엘리먼트들에 대해 하나의 코딩 패스, 그리고, 바이패스-코딩된 구문 엘리먼트들에 대해 하나의 코딩 패스를 수행할 수도 있다. 더욱이, 다른 예들에서, 엔트로피 코딩 유닛은 계수 블록의 서브-블록들과는 반대로, TU 에 대한 전체 계수 블록에 대해 위에서 설명한 바와 같이 3개 또는 2개의 코딩 패스들을 수행할 수도 있다. 2개의 또는 3개의 코딩 패스들의 사용은 코딩 순서에서 조기 계수들의 더 많은 레벨 정보 (즉, sigMapFlags, gr1Flags, 및 gr2Flag) 가 코딩 컨텍스트들의 선택에 이용가능하기 때문에, 5개의 코딩 패스들의 사용에 비해 유리할 수도 있다. 즉, 5개의 분리된 코딩 패스들과 비교할 때, 2개의 또는 3개의 코딩 패스들의 이점은 컨텍스트 이웃에서의 더 많은 레벨 (3 까지의 레벨) 정보가 컨텍스트 도출을 위해 사용될 수도 있다는 점이다.
도 13a 및 도 13b 는 코딩 패스들이 대각선 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다. 도 14a 및 도 14b 는 코딩 패스들이 수평 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다. 도 15a 및 도 15b 는 코딩 패스들이 수직 코딩 순서에 따라서 수행될 때 sigMapFlag 에 대한 코딩 컨텍스트를 선택하는데 사용되는 컨텍스트 이웃들에 대한 예시적인 템플릿들을 예시하는 개념도들이다. 도 13a, 13b, 14a, 14b, 15a, 및 15b 의 템플릿들은 임의의 사이즈의 TU들에 대해 적용할 수도 있다. 도 13a, 13b, 14a, 14b, 15a, 및 15b 의 예에서, 각각의 블록은 계수 블록에서의 계수에 대응한다. 도 13a 및 도 13b 에서의 화살표들 (500) 은 대각선 코딩 순서의 방향을 나타낸다. 도 14a 및 도 14b 에서의 화살표들 (510) 은 수평 코딩 순서의 방향을 나타낸다. 도 15a 및 도 15b 에서의 화살표들 (520) 은 수직 코딩 순서의 방향을 나타낸다.
각각, 도 13a, 13b, 14a, 14b, 15a, 및 15b 에서의 점선 크로스해칭을 가진 블록들 (502, 504, 512, 514, 522, 및 524) 은 계수 블록에서의 현재 계수를 나타낸다. 도 13a, 13b, 14a, 14b, 15a, 및 15b 의 예들에서, 엔트로피 코딩 유닛 (예컨대, 엔트로피 인코딩 유닛 (116) 또는 엔트로피 디코딩 유닛 (150)) 은 2개의 구문 엘리먼트들 (예컨대, 빈들) 을 병렬로 프로세싱할 수도 있다. 따라서, 계수들의 컨텍스트 이웃들에 대한 템플릿들은 코딩 순서에서 이전 계수의 현재-우선순위 구문 엘리먼트를 이용하는 것을 회피한다. 대신, 일부 계수들의 컨텍스트 이웃들에 대한 템플릿들은 코딩 순서에서 이전 계수 외에, 추가적인 계수들을 포함할 수도 있다. 도 13b 에서, 블록들 (506 및 508) 은 추가적인 계수들에 대응한다. 또 다른 예에서, 블록 (506) 상부의 블록은 추가적인 계수에 대응할 수도 있다. 도 14a 에서, 블록 (516) 은 추가적인 계수에 대응한다. 도 14b 에서, 블록들 (518 및 519) 은 추가적인 계수들에 대응한다. 도 15a 에서, 블록 (526) 은 추가적인 계수에 대응한다. 도 15b 에서, 블록들 (528 및 530) 은 추가적인 계수들에 대응한다.
엔트로피 코딩 유닛이 4x4 서브-블록을 이용하여 계수 블록을 코딩하면, 그리고 (계수 블록의 상단부 좌측 모서리에 대한) 계수 블록 내 현재 계수의 (칼럼, 로우) 좌표들이 (0, 0) 또는 (3, 2) 이 아니면, 엔트로피 코딩 유닛은 코딩 순서에 따라, 도 13a, 14a, 또는 15a 에 나타낸 현재 계수에 대해 공간 관계들을 갖는 계수들의 sigMapFlags 에 기초하여, 현재 계수의 sigMapFlag 에 대한 코딩 컨텍스트를 선택할 수도 있다. 계수 블록 내 현재 계수의 (칼럼, 로우) 좌표들이 (0, 0) 또는 (3, 2) 이 아니면, 엔트로피 코딩 유닛은 코딩 순서에 따라, 도 13b, 14b, 또는 15b 에 나타낸 현재 계수에 대해 공간 관계들을 갖는 계수들의 sigMapFlags 에 기초하여, 현재 계수의 sigMapFlag 에 대한 코딩 컨텍스트를 선택할 수도 있다. 이 예는 상이한 사이즈들의 서브-블록들으로 확장될 수도 있으며, (3, 2) 는 하단부 우측 계수에 바로 상부에 있는 계수의 좌표들로 대체될 수도 있다.
엔트로피 코딩 유닛이 도 13a, 13b, 14a, 14b, 15a, 또는 15b 의 컨텍스트 이웃들을 이용하는 일부 예들에서, 엔트로피 코딩 유닛은 현재 계수의 컨텍스트 이웃에서의 비-제로 계수들의 총 수에 적어도 부분적으로 기초하여, 현재 계수의 sigMapFlag 에 대한 컨텍스트 인덱스를 결정할 수도 있다. 현재 계수의 컨텍스트 이웃에서의 비-제로 계수의 총 수는 sumOnes 로서 표시될 수도 있다. 그러한 예들에서, 엔트로피 코딩 유닛은 현재 계수의 sigMapFlag 에 대한 코딩 컨텍스트를 선택하기 위한 컨텍스트 인덱스 (ctx_idx) 를 다음 수식을 이용하여 결정할 수도 있다:
Figure pct00015
상기 수식에서, ctx_set_idx 는 컨텍스트 세트 인덱스를 표시한다. 엔트로피 코딩 유닛은 본 개시물에 다른 곳에 설명된 방식들을 포함한, 다양한 방법식로, 컨텍스트 세트 인덱스를 결정할 수도 있다.
일부 예들에서, 엔트로피 코딩 유닛은 모든 가용 정보에 기초하여 코딩 컨텍스트를 선택함으로써, 코딩 컨텍스트를 더 정확하게 선택가능할 수도 있다. 예를 들어, 엔트로피 코딩 유닛이 gr1Flag 에 대한 코딩 컨텍스트를 선택하면, 엔트로피 코딩 유닛은 템플릿에서의 sigMapFlags 및 gr1Flags 에 기초하여 코딩 컨텍스트를 선택할 수도 있다. 이 예에서, 엔트로피 코딩 유닛은 또한 이용가능하면, 계수들의 실제 절대값들에 기초하여, gr1Flag 에 대한 코딩 컨텍스트를 선택할 수도 있다. 그러나, 일부 예들에서, 이런 방식으로 코딩 컨텍스트를 선택하는 것은 엔트로피 코딩 유닛의 계산상 복잡성을 실질적으로 증가시킬 수도 있다. 이것은, 엔트로피 코딩 유닛이 sigMapFlags, gr1Flags 및 gr2Flags 에 대한 계수의 (실제 또는 추정된) 절대값을 업데이트하는 것을 필요로 할 수도 있기 때문이다. 엔트로피 코딩 유닛의 계산상 복잡성을 감소시키기 위해, 엔트로피 코딩 유닛은 후속 구문 엘리먼트에 대해 코딩된 구문 엘리먼트의 템플릿으로부터 획득된 정보를 재사용할 수도 있다.
예를 들어, 엔트로피 코딩 유닛은 계수의 gr1Flag 및 gr2Flag 에 대해 동일한 코딩 컨텍스트를 선택할 수도 있다. 즉, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 는 계수에 대해 동일한 컨텍스트를 사용할 수도 있다. 더욱이, 엔트로피 코딩 유닛은 계수에 대한 sumOnes 의 값을 재사용하여, gr1Flags 및 gr2Flags 에 대한 코딩 컨텍스트들에 대한 컨텍스트 인덱스들을 결정할 수도 있다. 일부 이런 예들에서, 엔트로피 코딩 유닛은 다음 공식을 이용하여, 컨텍스트 인덱스를 결정할 수도 있다:
Figure pct00016
또 다른 예에서, 엔트로피 코딩 유닛은 sigMapFlags 에 대한 코딩 컨텍스트들을 선택하는데 사용된 동일한 컨텍스트 인덱스를 gr1Flags 및 gr2Flags 에 대한 코딩 컨텍스트들을 선택하는데, 변경 없이, 사용할 수도 있다. 따라서, 이들 예들에서, gr1Flags 에 대한 컨텍스트 모델링은 sigMapFlags 에 대한 계산의 결과를 재사용할 수도 있으며, 따라서, 추가적인 이웃 액세스가 필요하지 않다. gr2Flags 에 대한 컨텍스트 모델링은 대응하는 gr1Flag 에 사용된 컨텍스트를, 별도의 계산 없이, 재사용할 수도 있다.
다음 테이블들은 도 13a, 13b, 14a, 14b, 15a 및 15b 에 관한 본 개시물의 기법들에 부합하는 기법들을 이용한 테스트 결과들을 나타낸다. 제안된 방법은 HM 6.0 상에서 구현되며, 공통 테스트 조건들 하에서 시뮬레이이션된다. 성능은 Bjøntegaard Delta (BD) 비트 레이트의 면에서, HM6.0 앵커와 비교된다. 테이블 3.1 및 3.2 는 QP={22, 27, 32, 37} 및 QP={12, 17, 22, 27} 에 대한 실험 결과들을 각각 요약한다.
Figure pct00017
Figure pct00018
본 개시물이 위에서 설명된 변환 계수에 사용되는 구문 엘리먼트들에 대해 작성되지만, 본 개시물의 기법들은, 우선순위 패스들의 컨셉이 적용될 수 있도록 적어도 2개의 패스들에서 코딩이 이루어지는 한 다른 구문 엘리먼트들이 사용되는 경우, 적용가능할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령들 또는 코드들로서, 컴퓨터-판독가능 매체 상에 저장되거나 또는 컴퓨터-판독가능 매체를 통해서 송신될 수도 있으며, 하드웨어-기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체는 컴퓨터-판독가능 저장 매체들을 포함할 수도 있으며, 이 컴퓨터-판독가능 저장 매체들은 데이터 저장 매체와 같은 유형의 매체, 또는 예컨대, 통신 프로토콜에 따라서 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함한 통신 매체들에 대응한다. 이와 같이, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시적 유형의 컴퓨터-판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
비제한적인 예로서, 이런 컴퓨터-판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터-판독가능 매체로 적절히 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 무선 기술들 예컨대 적외선, 무선, 및 마이크로파를 이용하여 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 그 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 무선 기술들, 예컨대 적외선, 무선, 및 마이크로파가 그 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체는 접속들, 캐리어 파들, 신호들, 또는 다른 일시성 매체를 포함하는 것이 아니라, 그 대신, 비-일시적 유형의 저장 매체에 관한 것으로 해석되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 Blu-ray 디스크를 포함하며, 여기서 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 조합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본원에서 사용될 때 전술한 구조 중 임의의 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능은 전용 하드웨어 및/또는 인코딩 및 디코딩을 위해 구성되는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 전적으로 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 광범위하게 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시한 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 여러 구성요소들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 더 정확히 말하면, 위에서 설명한 바와 같이, 여러 유닛들이 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호동작하는 하드웨어 유닛들의 컬렉션으로 제공될 수도 있다.
여러 예들이 설명되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.

Claims (44)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    잔여 샘플 블록에 기초하여, 계수 블록을 발생하는 단계;
    상기 계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하는 단계; 및
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계를 포함하고,
    상기 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계는,
    제 1 구문 엘리먼트를 발생하는 단계로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며, 상기 계수 블록의 현재 계수에 대응하는, 상기 제 1 구문 엘리먼트를 발생하는 단계;
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 단계로서, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며, 비인과 (non-casual) 계수에 대응하고, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 전에 발생하는, 상기 코딩 컨텍스트를 선택하는 단계; 및
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 인코딩하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트를 인코딩하는 단계는,
    상기 제 1 구문 엘리먼트 및 제 4 구문 엘리먼트를 병렬로 발생하는 단계;
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트 및 상기 제 4 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 선택하는 단계로서, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 4 구문 엘리먼트에 기초하여 선택되지 않고, 상기 제 4 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 1 구문 엘리먼트에 기초하여 선택되지 않는, 상기 코딩 컨텍스트를 병렬로 선택하는 단계; 및
    상기 제 1 및 제 4 구문 엘리먼트들에 대한 상기 코딩 컨텍스트들에 기초하여, 상기 제 1 및 제 4 구문 엘리먼트들을 병렬로 엔트로피 인코딩하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 계수 블록은 복수의 서브-블록들을 포함하며,
    상기 제 2 코딩 패스의 코딩 순서는 상기 서브-블록들에 기초하며,
    상기 인과 계수는 상기 현재 계수와는 상이한 서브-블록들 중 하나 내에 있는, 비디오 데이터를 인코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트에서의 각각의 구문 엘리먼트는,
    상기 구문 엘리먼트와 연관되는 계수가 1 보다 큰지 여부, 또는 상기 구문 엘리먼트와 연관되는 계수가 2보다 큰지 여부 중 하나를 나타내는, 비디오 데이터를 인코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 단계는,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하는 단계;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 실제 절대값을 결정하는 단계; 및
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 실제 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 단계는,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하는 단계;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 추정된 절대값을 결정하는 단계; 및
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  7. 제 6 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 인과 계수의 상기 추정된 절대값을 결정하는 단계는, 상기 인과 계수에 인접한 계수의 추정된 절대값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  8. 제 6 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 인과 계수의 상기 추정된 절대값을 결정하는 단계는, 미리 정의된 값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  9. 제 6 항에 있어서,
    상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 단계는,
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 기초하여, 인덱스를 결정하기 위해 공식을 적용하는 단계로서, 상기 공식은 상기 비인과 계수의 상기 추정된 절대값 또는 상기 인과 계수의 상기 추정된 절대값에 가중값을 적용하는, 상기 공식을 적용하는 단계; 및
    상기 인덱스에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  10. 제 6 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 단계는,
    상기 비인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 단계;
    상기 인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 단계; 및
    상기 비인과 및 인과 계수들의 상기 클립핑된 추정된 절대값들에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  11. 하나 이상의 프로세서들을 포함하는 비디오 인코딩 디바이스로서,
    상기 하나 이상의 프로세서들은,
    잔여 샘플 블록에 기초하여, 계수 블록을 발생하고;
    상기 계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하고; 그리고
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하도록 구성되고,
    상기 하나 이상의 프로세서들은,
    상기 제 2 코딩 패스 동안 상기 하나 이상의 프로세서들이,
    제 1 구문 엘리먼트를 발생하는 것으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하는, 상기 제 1 구문 엘리먼트를 발생하고;
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것으로서, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하고, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 코딩 컨텍스트를 선택하고; 및
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 인코딩하도록 구성되는, 비디오 인코딩 디바이스.
  12. 제 11 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 1 구문 엘리먼트 및 제 4 구문 엘리먼트를 병렬로 발생하고;
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트 및 상기 제 4 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 선택하는 것으로서, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 4 구문 엘리먼트에 기초하여 선택되지 않으며, 상기 제 4 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 1 구문 엘리먼트에 기초하여 선택되지 않는, 상기 코딩 컨텍스트를 병렬로 선택하고; 그리고
    상기 제 1 및 제 4 구문 엘리먼트들에 대한 상기 코딩 컨텍스트들에 기초하여, 상기 제 1 및 제 4 구문 엘리먼트들을 병렬로 엔트로피 인코딩하도록 구성되는, 비디오 인코딩 디바이스.
  13. 제 11 항에 있어서,
    상기 계수 블록은 복수의 서브-블록들을 포함하며,
    상기 제 2 코딩 패스의 코딩 순서는 상기 서브-블록들에 기초하며,
    상기 인과 계수는 상기 현재 계수와는 상이한 서브-블록들 중 하나 내에 있는, 비디오 인코딩 디바이스.
  14. 제 11 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트에서의 각각의 구문 엘리먼트는,
    상기 구문 엘리먼트와 연관되는 계수가 1 보다 큰지 여부, 또는 상기 구문 엘리먼트와 연관되는 계수가 2보다 큰지 여부 중 하나를 나타내는, 비디오 인코딩 디바이스.
  15. 제 11 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하고;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 실제 절대값을 결정하고; 그리고
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 실제 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 인코딩 디바이스.
  16. 제 11 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하고;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 추정된 절대값을 결정하고; 그리고
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 인코딩 디바이스.
  17. 제 16 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 하나 이상의 프로세서들은 상기 인과 계수에 인접한 계수의 추정된 절대값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하도록 구성되는, 비디오 인코딩 디바이스.
  18. 제 16 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 하나 이상의 프로세서들은 미리 정의된 값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하도록 구성되는, 비디오 인코딩 디바이스.
  19. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 기초하여, 인덱스를 결정하기 위해 공식을 적용하는 것으로서, 상기 공식은 상기 비인과 계수의 상기 추정된 절대값 또는 상기 인과 계수의 상기 추정된 절대값에 가중값을 적용하는, 상기 공식을 적용하고; 그리고
    상기 인덱스에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 인코딩 디바이스.
  20. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것이,
    상기 비인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 것;
    상기 인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 것; 그리고
    상기 비인과 및 인과 계수들의 상기 클립핑된 추정된 절대값들에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것을 포함하도록 구성되는, 비디오 인코딩 디바이스.
  21. 비디오 인코딩 디바이스로서,
    잔여 샘플 블록에 기초하여, 계수 블록을 발생하는 수단;
    상기 계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하는 수단; 및
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하는 수단을 포함하고,
    상기 구문 엘리먼트의 제 2 세트를 인코딩하는 수단은,
    제 1 구문 엘리먼트를 발생하는 수단으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하는, 상기 제 1 구문 엘리먼트를 발생하는 수단;
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 수단으로서, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 코딩 컨텍스트를 선택하는 수단; 및
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 인코딩하는 수단을 포함하는, 비디오 인코딩 디바이스.
  22. 명령들을 저장한 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은,
    비디오 인코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 상기 비디오 인코딩 디바이스가
    잔여 샘플 블록에 기초하여, 계수 블록을 발생하고;
    상기 계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 인코딩하고; 그리고
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 인코딩하도록 상기 비디오 인코딩 디바이스를 구성하고,
    상기 명령들은,
    상기 제 2 코딩 패스 동안 상기 비디오 인코딩 디바이스가,
    제 1 구문 엘리먼트를 발생하는 것으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하는, 제 1 구문 엘리먼트를 발생하고;
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것으로서, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 코딩 컨텍스트를 선택하고; 그리고
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 인코딩하도록 구성하는, 컴퓨터-판독가능 저장 매체.
  23. 비디오 데이터를 디코딩하는 방법으로서,
    계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하는 단계;
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 단계로서, 상기 제 2 코딩 패스를 수행하는 것은,
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하며, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것; 및
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 디코딩하는 것을 포함하는, 상기 구문 엘리먼트들의 제 2 세트를 디코딩하는 단계; 및
    상기 계수 블록의 상기 계수들에 기초하여, 잔여 샘플 블록을 발생하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  24. 제 23 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트를 디코딩하는 단계는,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트 및 제 4 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 선택하는 것으로서, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 4 구문 엘리먼트에 기초하여 선택되지 않으며, 상기 제 4 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 1 구문 엘리먼트에 기초하여 선택되지 않는, 상기 코딩 컨텍스트를 병렬로 선택하는 것; 및
    상기 제 1 및 제 4 구문 엘리먼트들에 대한 상기 코딩 컨텍스트들에 기초하여, 상기 제 1 및 제 4 구문 엘리먼트들을 병렬로 엔트로피 디코딩하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  25. 제 23 항에 있어서,
    상기 계수 블록은 복수의 서브-블록들을 포함하며,
    상기 제 2 코딩 패스의 코딩 순서는 상기 서브-블록들에 기초하며,
    상기 인과 계수는 상기 현재 계수와는 상이한 서브-블록들 중 하나 내에 있는, 비디오 데이터를 디코딩하는 방법.
  26. 제 23 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트에서의 각각의 구문 엘리먼트는,
    상기 구문 엘리먼트와 연관되는 계수가 1 보다 큰지 여부, 또는 상기 구문 엘리먼트와 연관되는 계수가 2보다 큰지 여부 중 하나를 나타내는, 비디오 데이터를 디코딩하는 방법.
  27. 제 26 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하는 것;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 실제 절대값을 결정하는 것; 및
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 실제 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  28. 제 26 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하는 것;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 추정된 절대값을 결정하는 것; 및
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  29. 제 28 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 인과 계수의 상기 추정된 절대값을 결정하는 것은, 상기 인과 계수에 인접한 계수의 추정된 절대값과 동일하게 상기 인과 계수의 상기 추정된 절대값을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  30. 제 28 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 인과 계수의 상기 추정된 절대값을 결정하는 것은, 미리 정의된 값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  31. 제 28 항에 있어서,
    상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 것은,
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 기초하여, 인덱스를 결정하기 위해 공식을 적용하는 것으로서, 상기 공식은 상기 비인과 계수의 상기 추정된 절대값 또는 상기 인과 계수의 상기 추정된 절대값에 가중값을 적용하는, 상기 공식을 적용하는 것; 및
    상기 인덱스에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  32. 제 28 항에 있어서,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것은,
    상기 비인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 것;
    상기 인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하는 것; 및
    상기 비인과 및 인과 계수들의 상기 클립핑된 추정된 절대값들에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  33. 하나 이상의 프로세서들을 포함하는 비디오 디코딩 디바이스로서,
    상기 하나 이상의 프로세서들은,
    계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하고;
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 제 2 코딩 패스 동안 상기 하나 이상의 프로세서들이,
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하며, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하고, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하고;
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 디코딩하도록 구성되는, 상기 구문 엘리먼트들의 제 2 세트를 디코딩하고; 그리고
    상기 계수 블록의 상기 계수들에 기초하여, 잔여 샘플 블록을 발생하도록 구성되는, 비디오 디코딩 디바이스.
  34. 제 33 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트 및 제 4 구문 엘리먼트에 대한 코딩 컨텍스트를 병렬로 선택하는 것으로서, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 4 구문 엘리먼트에 기초하여 선택되지 않으며, 상기 제 4 구문 엘리먼트에 대한 상기 코딩 컨텍스트는 상기 제 1 구문 엘리먼트에 기초하여 선택되지 않는, 상기 코딩 컨텍스트를 병렬로 선택하고; 그리고
    상기 제 1 및 제 4 구문 엘리먼트들에 대한 상기 코딩 컨텍스트들에 기초하여, 상기 제 1 및 제 4 구문 엘리먼트들 병렬로 엔트로피 디코딩하도록 구성되는, 비디오 디코딩 디바이스.
  35. 제 33 항에 있어서,
    상기 계수 블록은 복수의 서브-블록들을 포함하며,
    상기 제 2 코딩 패스의 코딩 순서는 상기 서브-블록들에 기초하며,
    상기 인과 계수는 상기 현재 계수와는 상이한 서브-블록들 중 하나 내에 있는, 비디오 디코딩 디바이스.
  36. 제 33 항에 있어서,
    상기 구문 엘리먼트들의 제 2 세트에서의 각각의 구문 엘리먼트는,
    상기 구문 엘리먼트와 연관되는 계수가 1 보다 큰지 여부, 또는 상기 구문 엘리먼트와 연관되는 계수가 2보다 큰지 여부 중 하나를 나타내는, 비디오 디코딩 디바이스.
  37. 제 33 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하고;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 실제 절대값을 결정하고; 그리고
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 실제 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 디코딩 디바이스.
  38. 제 33 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 2 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 비인과 계수의 추정된 절대값을 결정하고;
    상기 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 상기 인과 계수의 추정된 절대값을 결정하고; 그리고
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 디코딩 디바이스.
  39. 제 38 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 하나 이상의 프로세서들은 상기 인과 계수에 인접한 계수의 추정된 절대값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하도록 구성되는, 비디오 디코딩 디바이스.
  40. 제 38 항에 있어서,
    상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에 따라서 상기 현재 계수의 계수들의 특정 개수 이내이며,
    상기 하나 이상의 프로세서들은 미리 정의된 값과 동일한 것으로 상기 인과 계수의 상기 추정된 절대값을 결정하도록 구성되는, 비디오 디코딩 디바이스.
  41. 제 38 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 비인과 계수의 상기 추정된 절대값 및 상기 인과 계수의 상기 추정된 절대값에 기초하여, 인덱스를 결정하기 위해 공식을 적용하는 것으로서, 상기 공식은 상기 비인과 계수의 상기 추정된 절대값 또는 상기 인과 계수의 상기 추정된 절대값에 가중값을 적용하는, 상기 공식을 적용하고; 그리고
    상기 인덱스에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트의 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 디코딩 디바이스.
  42. 제 38 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 비인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하고;
    상기 인과 계수의 상기 추정된 절대값을 2 또는 3 비트들로 클립핑하고; 그리고
    상기 비인과 및 인과 계수들의 상기 클립핑된 추정된 절대값들에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트에 대한 상기 코딩 컨텍스트를 선택하도록 구성되는, 비디오 디코딩 디바이스.
  43. 비디오 디코딩 디바이스로서,
    계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하는 수단;
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 수단으로서, 상기 제 2 코딩 패스를 수행하는 수단은,
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 수단으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하며, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 수단; 및
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 디코딩하는 수단을 포함하는, 상기 구문 엘리먼트들의 제 2 세트를 디코딩하는 수단; 및
    상기 계수 블록의 상기 계수들에 기초하여, 잔여 샘플 블록을 발생하는 수단을 포함하는, 비디오 디코딩 디바이스.
  44. 명령들을 저장한 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은 비디오 디코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 상기 비디오 디코딩 디바이스가,
    계수 블록의 계수들의 제 1 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 1 세트를 디코딩하고;
    상기 계수 블록의 상기 계수들의 제 2 코딩 패스 동안, 상기 계수 블록의 계수들에 대응하는 구문 엘리먼트들의 제 2 세트를 디코딩하는 것으로서, 상기 명령들은, 상기 제 2 코딩 패스 동안 상기 비디오 디코딩 디바이스가,
    제 2 구문 엘리먼트 및 제 3 구문 엘리먼트에 적어도 부분적으로 기초하여, 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하는 것으로서, 상기 제 1 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 상기 계수 블록의 현재 계수에 대응하며, 상기 제 2 구문 엘리먼트는 상기 구문 엘리먼트들의 제 1 세트 내에 있으며 비인과 (non-casual) 계수에 대응하며, 상기 제 3 구문 엘리먼트는 상기 구문 엘리먼트들의 제 2 세트 내에 있으며 인과 (casual) 계수에 대응하며, 상기 비인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이후에 발생하며, 상기 인과 계수는 상기 제 2 코딩 패스의 코딩 순서에서 상기 현재 계수 이전에 발생하는, 상기 제 1 구문 엘리먼트에 대한 코딩 컨텍스트를 선택하고;
    상기 제 1 구문 엘리먼트에 대해 선택된 상기 코딩 컨텍스트에 적어도 부분적으로 기초하여, 상기 제 1 구문 엘리먼트를 엔트로피 디코딩하도록 상기 비디오 인코딩 디바이스를 구성하는, 상기 구문 엘리먼트들의 제 2 세트를 디코딩하고; 그리고
    상기 계수 블록의 상기 계수들에 기초하여, 잔여 샘플 블록을 발생하도록 구성하는, 컴퓨터-판독가능 저장 매체.
KR1020147022892A 2012-01-22 2013-01-18 비디오 코딩에서의 계수들의 코딩 KR20140120341A (ko)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US201261589384P 2012-01-22 2012-01-22
US61/589,384 2012-01-22
US201261592300P 2012-01-30 2012-01-30
US61/592,300 2012-01-30
US201261606338P 2012-03-02 2012-03-02
US201261606304P 2012-03-02 2012-03-02
US201261606300P 2012-03-02 2012-03-02
US61/606,338 2012-03-02
US61/606,300 2012-03-02
US61/606,304 2012-03-02
US201261625062P 2012-04-16 2012-04-16
US201261625072P 2012-04-16 2012-04-16
US61/625,062 2012-04-16
US61/625,072 2012-04-16
US13/744,086 2013-01-17
US13/744,086 US9866829B2 (en) 2012-01-22 2013-01-17 Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
PCT/US2013/022178 WO2013109914A1 (en) 2012-01-22 2013-01-18 Coding of coefficients in video coding

Publications (1)

Publication Number Publication Date
KR20140120341A true KR20140120341A (ko) 2014-10-13

Family

ID=48797182

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022892A KR20140120341A (ko) 2012-01-22 2013-01-18 비디오 코딩에서의 계수들의 코딩

Country Status (7)

Country Link
US (1) US9866829B2 (ko)
EP (1) EP2805513A1 (ko)
JP (1) JP6199311B2 (ko)
KR (1) KR20140120341A (ko)
CN (1) CN104185990B (ko)
IN (1) IN2014MN01397A (ko)
WO (1) WO2013109914A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101627069B1 (ko) * 2015-04-01 2016-06-02 이화여자대학교 산학협력단 동영상 인코딩에서 잔차 신호에 대한 희소 변환 방법, 희소 변환을 이용한 동영상 인코딩 방법 및 희소 변환을 이용하여 부호화된 신호에 대한 디코딩 방법
WO2019117402A1 (ko) * 2017-12-13 2019-06-20 삼성전자 주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치
WO2019135448A1 (ko) * 2018-01-02 2019-07-11 삼성전자 주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0818444A2 (pt) * 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
US8938009B2 (en) * 2007-10-12 2015-01-20 Qualcomm Incorporated Layered encoded bitstream structure
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US9049444B2 (en) 2010-12-22 2015-06-02 Qualcomm Incorporated Mode dependent scanning of coefficients of a block of video data
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
JP6156723B2 (ja) * 2012-03-08 2017-07-05 サン パテント トラスト 画像符号化方法、画像復号化方法、画像符号化装置および画像復号化装置
US9936200B2 (en) 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US10021419B2 (en) 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
US9336558B2 (en) 2013-09-27 2016-05-10 Apple Inc. Wavefront encoding with parallel bit stream encoding
US9224187B2 (en) 2013-09-27 2015-12-29 Apple Inc. Wavefront order to scan order synchronization
EP2958328A1 (en) * 2014-06-20 2015-12-23 Thomson Licensing Method and device for signaling in a bitstream a picture/video format of an LDR picture and a picture/video format of a decoded HDR picture obtained from said LDR picture and an illumination picture
US10574993B2 (en) * 2015-05-29 2020-02-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
US10616604B2 (en) 2015-09-01 2020-04-07 Qualcomm Incorporated Coefficient level coding in video coding
US10630974B2 (en) * 2017-05-30 2020-04-21 Google Llc Coding of intra-prediction modes
US10506258B2 (en) * 2017-07-13 2019-12-10 Google Llc Coding video syntax elements using a context tree
US10869060B2 (en) * 2018-01-30 2020-12-15 Google Llc Efficient context model computation design in transform coefficient coding
US10506242B2 (en) 2018-01-30 2019-12-10 Google Llc Efficient context model computation design in transform coefficient coding
US10491914B2 (en) * 2018-03-29 2019-11-26 Tencent America LLC Transform information prediction
KR102030384B1 (ko) 2018-06-19 2019-11-08 광운대학교 산학협력단 잔차 계수 부호화/복호화 방법 및 장치
CN112262576A (zh) * 2018-06-11 2021-01-22 光云大学校产学协力团 残差系数编码/解码方法和装置
US11451840B2 (en) * 2018-06-18 2022-09-20 Qualcomm Incorporated Trellis coded quantization coefficient coding
US11113846B2 (en) 2018-08-31 2021-09-07 Hulu, LLC Coefficient context modeling in video coding
US11336918B2 (en) 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
US10904548B2 (en) * 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
KR20210107686A (ko) * 2018-12-26 2021-09-01 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 삼차원 데이터 부호화 방법, 삼차원 데이터 복호 방법, 삼차원 데이터 부호화 장치, 및 삼차원 데이터 복호 장치
JP7257523B2 (ja) 2018-12-28 2023-04-13 テレフオンアクチーボラゲット エルエム エリクソン(パブル) エンコーダおよびデコーダにおける変換選択を選択するための方法および装置
US11134273B2 (en) 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
US11451826B2 (en) 2019-04-15 2022-09-20 Tencent America LLC Lossless coding mode and switchable residual coding
US10733158B1 (en) * 2019-05-03 2020-08-04 EMC IP Holding Company LLC System and method for hash-based entropy calculation
US11202070B2 (en) * 2019-05-30 2021-12-14 Hulu, LLC Parallel bi-directional intra-coding of sub-partitions
US11197009B2 (en) 2019-05-30 2021-12-07 Hulu, LLC Processing sub-partitions in parallel using reference pixels
CN114342398A (zh) 2019-08-20 2022-04-12 北京字节跳动网络技术有限公司 默认缩放矩阵和用户定义缩放矩阵的使用
CN113038140B (zh) * 2019-12-24 2024-05-28 扬智电子科技(成都)有限公司 上下文适应性二进制算术编码的视频解码方法与其视频解码装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100612015B1 (ko) * 2004-07-22 2006-08-11 삼성전자주식회사 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
EP1836858A1 (en) 2005-01-14 2007-09-26 Sungkyunkwan University Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding
KR101356733B1 (ko) 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
US8135072B2 (en) * 2007-08-01 2012-03-13 Lsi Corporation CAVLC run before encode with zero cycle costs
KR101375668B1 (ko) 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
KR101511082B1 (ko) 2008-05-09 2015-04-13 삼성전자주식회사 최하위 비트를 이용한 엔트로피 부호화 방법과 그 장치 및엔트로피 복호화 방법과 그 장치
EP2182732A1 (en) 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
WO2010063184A1 (en) 2008-12-03 2010-06-10 Mediatek Inc. Method for performing parallel cabac processing with ordered entropy slices, and associated apparatus
JP5718453B2 (ja) 2010-04-13 2015-05-13 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 復号化方法
ES2784509T3 (es) 2010-04-13 2020-09-28 Ge Video Compression Llc Codificación de mapas de significado y bloques de coeficiente de transformada
US9215470B2 (en) 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
US20120014433A1 (en) 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
US9154801B2 (en) * 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
PL2628299T3 (pl) 2010-10-14 2019-12-31 Interdigital Vc Holdings, Inc. Sposób i urządzenie do ulepszonego kodowania i dekodowania entropijnego
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
CN102186075B (zh) 2011-04-28 2012-10-10 北京大学 一种熵编码器及其实现方法
CN102238387B (zh) 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN107529706B (zh) * 2011-06-16 2020-11-17 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
JP5733590B2 (ja) 2011-07-15 2015-06-10 モトローラ モビリティ エルエルシーMotorola Mobility Llc 変換係数レベルを符号化するコンテキストモデリング技法
US8891630B2 (en) * 2011-10-24 2014-11-18 Blackberry Limited Significance map encoding and decoding using partition set based context assignment
CN104025600B (zh) * 2012-01-03 2018-05-11 寰发股份有限公司 基于块的重要性图及重要性图群组旗标上下文选择的方法及装置
US20130182772A1 (en) 2012-01-13 2013-07-18 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101627069B1 (ko) * 2015-04-01 2016-06-02 이화여자대학교 산학협력단 동영상 인코딩에서 잔차 신호에 대한 희소 변환 방법, 희소 변환을 이용한 동영상 인코딩 방법 및 희소 변환을 이용하여 부호화된 신호에 대한 디코딩 방법
WO2019117402A1 (ko) * 2017-12-13 2019-06-20 삼성전자 주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치
WO2019135448A1 (ko) * 2018-01-02 2019-07-11 삼성전자 주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치

Also Published As

Publication number Publication date
US20130188699A1 (en) 2013-07-25
US9866829B2 (en) 2018-01-09
WO2013109914A1 (en) 2013-07-25
IN2014MN01397A (ko) 2015-07-03
JP2015508617A (ja) 2015-03-19
JP6199311B2 (ja) 2017-09-20
EP2805513A1 (en) 2014-11-26
CN104185990B (zh) 2018-06-05
CN104185990A (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
US9866829B2 (en) Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US10298930B2 (en) Contexts for large coding tree units
US9832485B2 (en) Context adaptive entropy coding for non-square blocks in video coding
KR102115049B1 (ko) 계수 그룹들 및 계수 스캔들을 위한 계수 코딩
KR101721302B1 (ko) 비디오 코딩에서 변환 계수 데이터를 코딩하기 위한 콘텍스트들의 결정
KR102227898B1 (ko) 비디오 코딩에서 부호 데이터 은닉의 디스에이블링
US9800870B2 (en) Line buffer reduction for short distance intra-prediction
US20130195199A1 (en) Residual quad tree (rqt) coding for video coding
KR20150003778A (ko) 코딩된 블록 플래그 코딩

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application