KR20130010124A - 비디오 압축에서 코딩된 블록 패턴 (cbp) 의 가변 길이 코딩 - Google Patents

비디오 압축에서 코딩된 블록 패턴 (cbp) 의 가변 길이 코딩 Download PDF

Info

Publication number
KR20130010124A
KR20130010124A KR1020127029514A KR20127029514A KR20130010124A KR 20130010124 A KR20130010124 A KR 20130010124A KR 1020127029514 A KR1020127029514 A KR 1020127029514A KR 20127029514 A KR20127029514 A KR 20127029514A KR 20130010124 A KR20130010124 A KR 20130010124A
Authority
KR
South Korea
Prior art keywords
code word
prediction mode
vlc
cbp
precoded
Prior art date
Application number
KR1020127029514A
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 KR20130010124A publication Critical patent/KR20130010124A/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/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/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
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/186Methods 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 colour or a chrominance component
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

이 개시물은 비디오 데이터의 코딩을 위한 기법들을 설명한다. 하나의 예로서, 이 개시물은 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 비디오 데이터의 코딩 단위 (CU) 에 대한 코딩된 블록 패턴 (CBP) 을 설명한다. 다른 예에 따르면, 이 개시물은 CU의 각각의 블록들이 적어도 히나의 영이 아닌 계수를 포함하는지를 나타내는 CBP를 설명한다. 본원에서 설명된 CBP는 단일 가변 길이 코드 (VLC) 코드 워드에 매핑될 수도 있다. VLC 코드 워드는 비디오 데이터의 CU를 코딩하기 위해 코더에 의해 이용될 수도 있다.

Description

비디오 압축에서 코딩된 블록 패턴 (CBP) 의 가변 길이 코딩{VARIABLE LENGTH CODING OF CODED BLOCK PATTERN (CBP) IN VIDEO COMPRESSION}
본 출원은 2010년 4월 12일자로 출원된 발명 명칭이 "Variable Length Coding for Coded Block Pattern (CBP)"인 미국 가출원 번호 61/323,256, 2010년 9월 24일자로 출원된 발명 명칭이 "Variable Length Coding for Coded Block Pattern (CBP) in Video Compression"인 미국 가출원 번호 61/386,460, 2010년 4월 13일자로 출원된 발명 명칭이 "Variable Length Code for Block Type and Coded Block Flag In Video Coding"인 미국 가출원 번호 61/323,731, 및 2010년 7월 15일자로 출원된 발명 명칭이 "Variable Length Coding for Coded Block Flag"인 미국 가출원 번호 61/364,749를 우선권 주장하며, 이것들 각각의 전체 내용은 본원에 참조로 통합된다.
기술 분야
이 개시물은 비디오 데이터를 압축하는데 이용되는 블록 기반 비디오 코딩 기법들에 관한 것이고, 더 상세하게는, 코딩된 블록 패턴들 (coded block patterns; CBP들) 이라고 지칭되는 구문 (syntax) 요소들의 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 통신 디바이스들 이를테면 라디오 전화 핸드셋들, 무선 브로드캐스트 시스템들, 개인휴대 정보단말들 (PDA들), 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 개인 멀티미디어 플레이어들 등을 포함하는 광범위한 디바이스들에 통합될 수 있다. 이러한 비디오 디바이스들은 비디오 데이터를 압축하기 위해, 비디오 압축 기법들, 이를테면 MPEG-2, MPEG-4, 또는 ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 에 기재된 것들을 구현할 수 있다. 비디오 압축 기법들은 공간적 및 시간적 예측을 수행하여 비디오 시퀀스들에 내재하는 리던던시 (redundancy) 를 감소시키거나 제거한다. 새로운 표준들, 이를테면 고 효율 비디오 코딩 (HEVC) 표준이 계속 출현하고 진화한다.
많은 비디오 코딩 표준들 및 기법들이 블록 기반 비디오 코딩을 이용한다. 블록 기반 비디오 코딩 기법들은 비디오 프레임 (또는 그 부분) 의 비디오 데이터를 비디오 블록들로 분할한 다음 그 비디오 블록들을 블록 기반 압축 기법들을 이용하여 인코딩한다. 비디오 블록들은 하나 이상의 비디오-특정 인코딩 기법들뿐만 아니라 일반 데이터 압축 기법들을 이용하여 인코딩된다. 비디오 인코딩은 흔히 움직임 추정, 움직임 보상, 변환 (예컨대, 이산 코사인 변환들 (DCT)), 양자화, 및 가변 길이 코딩을 포함한다.
ITU-T H.264 표준에서, 변환들은 8 바이 8 변환들로서 정의된다. 16 x 16 "매크로블록"은 네 개의 8 바이 8 루마 (luma) 블록들 및 두 개의 서브-샘플링된 8 바이 8 크로마 (chroma) 블록들을 포함한다. 이들 루마 및 크로마 블록들의 각각은 예측적으로 코딩되어 잔차 블록을 생성하며, 이 잔차 블록은 8 바이 8 변환을 통해 변환 계수들의 블록으로 변환된다. 이른바 "코딩된 블록 패턴 (CBP)"은 변환 계수들의 각각 개개의 8 바이 8 잔차 블록이 어느 영이 아닌 데이터를 가지는지를 시그널링하기 위해, 구문 정보, 예컨대, H.264-준수 비트스트림의 매크로블록 헤더에 구문 정보로서 종종 포함된다. 변환 계수들의 주어진 8 바이 8 잔차 블록이 어느 영이 아닌 데이터도 가지지 않음을 CBP가 나타내면, 그 블록에 대해 계수 데이터가 통신되지 않는다. 종래 6-비트 CBP들의 이용은 다수의 비트들의 오버헤드를 매크로블록 헤더에 추가한다. 그러나, CBP들은 또한 데이터 압축을 용이하게 하는데, 변환 계수들의 블록들이 종종 어떠한 영이 아닌 데이터도 포함하지 않기 때문이다.
요약
이 개시물은 코딩 단위 (CU) 의 코딩된 블록 패턴 (CBP) 에 적용가능한 비디오 코딩 기법들을 설명한다. CBP는 비디오 블록 구문 정보를, 예컨대, 인코딩된 비트스트림의 헤드에 포함할 수도 있다. 이 개시물의 기법들은 가변 길이 코딩 (VLC) 기법들을 CBP에 적용하고, 하나 이상의 VLC 테이블들을 CBP를 코딩하기 위해 선택할 수도 있다. 이 개시물의 하나의 양태에 따르면, 코딩 단위 (CU) 의 각각의 루마 (Y), 제 1 크로마 (U), 및 제 2 크로마 (V) 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 포함하는 CBP를 단일 VLC 코드 워드로서 시그널링하기 위해 기법들이 제공된다. 이 개시물의 다른 양태에 따르면, 단일 VLC 코드 워드로서 함께 그룹화된 서브-블록들 (예컨대, 변환 단위 (TU) 및/또는 예측 단위들 (PU)) 에 대한 복수의 CBF를 포함하는 CBP를 시그널링하기 위해 기법들이 설명된다. 본원에서 설명되는 이들 및 다른 기법들은 비디오 데이터를 코딩 (예컨대, 인코딩 또는 디코딩) 함에 있어서 효율을 개선하는데 이용될 수도 있다.
예를 들어, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법이 본원에서 설명된다. 이 방법은 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하는 단계를 포함한다. 이 방법은 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 단계를 더 포함한다. 이 방법은 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 단계를 더 포함한다. 이 방법은 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계를 더 포함한다. 이 방법은 단일 VLC 코드 워드를 출력하는 단계를 더 포함한다.
다른 예에 따르면, 비디오 데이터를 인코딩하는 장치가 본원에서 설명된다. 이 장치는 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하고 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 비디오 인코더를 구비한다. 이 장치는 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하며, 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 단일 VLC 코드 워드를 출력하는 CBP 모듈을 더 구비한다.
다른 예에 따르면, 비디오 데이터를 인코딩하는 디바이스가 본원에서 설명된다. 이 디바이스는 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하는 비디오 데이터를 인코딩하는 수단을 구비한다. 이 디바이스는 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 수단을 더 구비한다. 이 디바이스는 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 수단을 더 구비한다. 이 디바이스는 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 수단을 더 구비한다. 이 디바이스는 단일 VLC 코드 워드를 출력하는 수단을 더 구비한다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 이 컴퓨터 판독가능 저장 매체는, 프로세서에서의 실행 시, 프로세서로 하여금 비디오 데이터를 인코딩하도록 하는 명령들을 포함한다. 이 명령들은 프로세서로 하여금 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하도록 한다. 이 명령들은 또한 프로세서로 하여금 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하도록 한다. 이 명령들은 또한 프로세서로 하여금 휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하도록 한다. 이 명령들은 또한 프로세서로 하여금 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하도록 한다. 이 명령들은 또한 프로세서로 하여금 단일 VLC 코드 워드를 출력하도록 한다.
다른 예에 따르면, 비디오 데이터의 CU를 디코딩하는 방법이 본원에서 설명된다. 이 방법은 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 단계를 포함한다. 이 추가의 방법은 단일 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 단계를 포함하며, CBP는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타낸다. 이 추가의 방법은 결정된 CBP를 이용하여 CU를 디코딩하는 단계를 포함한다.
다른 예에 따르면, 비디오 데이터를 디코딩하는 장치가 본원에서 설명된다. 이 장치는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 비디오 디코더를 구비한다. 이 장치는 단일 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 CBP 디코딩 모듈을 더 구비하며, CBP는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타낸다. 비디오 디코더는 또한, 결정된 CBP를 이용하여 CU를 디코딩한다.
다른 예에 따르면, 비디오 데이터를 디코딩하는 디바이스가 본원에서 설명된다. 이 디바이스는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 수단을 구비한다. 이 디바이스는 단일 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 수단을 추가로 구비하며, CBP는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타낸다. 이 디바이스는 결정된 CBP를 이용하여 CU를 디코딩하는 수단을 추가로 구비한다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 이 컴퓨터 판독가능 저장 매체는, 프로세서에서의 실행 시, 프로세서로 하여금 비디오 데이터를 디코딩하도록 하는 명령들을 포함한다. 이 명령들은 프로세서로 하여금 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하도록 한다. 이 명령들은 또한, 프로세서로 하여금 단일 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하도록 하며, CBP는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타낸다. 이 명령들은 또한, 프로세서로 하여금 결정된 CBP를 이용하여 CU를 디코딩하도록 한다.
다른 예에 따르면, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법이 본원에서 설명된다. 이 방법은 복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하는 단계를 포함한다. 이 방법은 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 단계를 더 포함한다. 이 방법은 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하는 단계를 더 포함한다. 이 방법은 복수의 블록들 중 각각에 대한 CBF를 집합적으로 나타내는 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 단계를 더 포함한다. 이 방법은 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계를 더 포함한다. 이 방법은 단일 VLC 코드 워드를 출력하는 단계를 더 포함한다.
다른 예에 따르면, 비디오 데이터를 인코딩하는 장치가 본원에서 설명된다. 이 장치는 복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하고 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 비디오 인코더를 구비한다. 이 장치는 또한 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하도록 구성된 CBP 모듈을 구비한다. CBP 모듈은 또한 복수의 블록들 중의 각각에 대한 CBF를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하도록 구성된다. CBP 모듈은 또한 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하도록 구성된다. CBP 모듈은 또한 단일 VLC 코드 워드를 출력하도록 구성된다.
다른 예에 따르면, 비디오 데이터를 인코딩하는 장치가 본원에서 설명된다. 이 장치는 복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하는 수단을 구비한다. 이 장치는 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 수단을 더 구비한다. 이 장치는 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하는 수단을 더 구비한다. 이 장치는 복수의 블록들 중 각각에 대한 CBF를 집합적으로 나타내는 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 수단을 더 구비한다. 이 장치는 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 수단을 더 구비한다. 이 장치는 단일 VLC 코드 워드를 출력하는 수단을 더 구비한다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 이 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스로 하여금 복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하도록 하는 명령들을 포함한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하도록 한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 복수의 블록들 중 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하도록 한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금, 복수의 블록들 중의 각각에 대한 CBF를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하도록 한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하도록 한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 단일 VLC 코드 워드를 출력하도록 한다.
다른 예에 따르면, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법이 본원에서 설명된다. 이 방법은 복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 단계를 포함한다. 이 방법은 단일 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴을 결정하는 단계를 더 포함한다. 이 방법은 CU에 대한 코딩된 블록 패턴에 기초하여, 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하는 단계를 더 포함하며, 여기서 CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타낸다. 이 방법은 결정된 CBF에 기초하여 CU를 디코딩하는 단계를 더 포함한다.
다른 예에 따르면, 비디오 데이터를 디코딩하는 장치가 본원에서 설명된다. 이 장치는 복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하며, 단일 VLC 코드 워드에 기초하여 CU에 대한 코딩된 블록 패턴을 결정하며, CU에 대한 코딩된 블록 패턴에 기초하여 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하고, 결정된 CBF에 기초하여 CU를 디코딩하도록 구성된 비디오 디코더를 구비하며, 여기서 CBF는 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타낸다.
다른 예에 따르면, 비디오 데이터를 디코딩하는 장치가 본원에서 설명된다. 이 장치는 복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 수단을 구비한다. 이 장치는 단일 VLC 코드 워드에 기초하여 CU에 대한 코딩된 블록 패턴을 결정하는 수단을 더 구비한다. 이 장치는 CU에 대한 코딩된 블록 패턴에 기초하여, 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하는 수단으로서, CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는 상기 결정하는 수단을 더 구비한다. 이 장치는 결정된 CBF에 기초하여 CU를 디코딩하는 수단을 더 구비한다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 이 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스로 하여금, 복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하도록 하는 명령들을 포함한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금, 단일 VLC 코드 워드에 기초하여 CU에 대한 코딩된 블록 패턴을 결정하도록 한다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 CU에 대한 코딩된 블록 패턴에 기초하여, 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하도록 하며, 여기서 CBF는 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타낸다. 이 명령들은 또한, 컴퓨팅 디바이스로 하여금 결정된 CBF에 기초하여 CU를 디코딩하도록 한다.
이 개시물의 하나 이상의 양태들의 상세는 첨부 도면들 및 다음의 설명에서 언급된다. 이 개시물에서 설명되는 기법들의 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1은 이 개시물의 기법들 중의 하나 이상을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2는 이 개시물의 하나 이상의 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3은 이 개시물의 하나 이상의 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 4는 이 개시물의 기법들에 맞는 루마 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 코딩 단위 (CU) 의 하나의 예를 예시하는 개념도이다.
도 5는 이 개시물의 기법들에 맞는 다수의 블록들로 분할된 CU의 하나의 예를 예시하는 개념도이다.
도 6 - 도 11은 이 개시물의 댜양한 기법들을 예시하는 흐름도들이다.
도 12a 및 도 12b는 이 개시물의 기법들에 맞는 사지 트리 데이터 구조의 하나의 예를 예시하는 개념도들이다.
이 개시물은 아래에서 더 상세히 설명되는 비디오 데이터의 코딩 단위 (CU) 의 코딩된 블록 패턴 (CBP) 에 적용가능한 비디오 코딩 기법들을 설명한다. 이 개시물의 하나의 양태에 따르면, 코딩 단위 (CU) 의 각각의 루마 (Y) 블록들, 제 1 크로마 블록 (U), 및 제 2 크로마 블록 (V) 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 포함하는 CBP를 단일 VLC 코드 워드로서 시그널링하기 위한 기법들이 제공된다. 이 개시물의 다른 양태에 따르면, 단일 VLC 코드 워드로서 함께 그룹화되는 CU의 복수의 블록들에 대한 CBP를 단일 VLC 코드 워드로서 시그널링하기 위한 기법들이 제공된다. 본원에서 설명되는 이들 및 다른 기법들은 비디오 데이터를 코딩 (예컨대, 인코딩 또는 디코딩) 함에 있어서의 효율을 개선하는데 이용될 수도 있다.
현재 고 효율 비디오 코딩 (HEVC) 이라 지칭되는 새로운 비디오 코딩 표준을 개발하기 위한 노력들이 현재 진행중이다. 출현하는 HEVC 표준은 때때로 ITU-T H.265라고 지칭될 수도 있다. 표준화 노력들은 HEVC 테스트 모델 (HM) 이라고 지칭되는 비디오 코딩 디바이스의 모델에 기초하고 있다. HM은 예컨대, ITU-T H.264/AVC에 따른 디바이스들을 넘는 비디오 코딩 디바이스들의 몇몇 능력들을 추정한다. 예를 들어, ITU-T H.264가 9개의 인트라 예측 모드들을 제공하지만, HM은 무려 34개나 되는 인트라 예측 모드들을 제공한다.
HM은 비디오 데이터의 블록을 코딩 단위 (coding unit; CU) 라고 지칭한다. 비트스트림 내의 구문 데이터는 다수의 화소들의 관점에서 가장 큰 코딩 단위인 최대 코딩 단위 (largest coding unit; LCU) 를 정의할 수도 있다. 대체로, CU가 매크로블록들에 연관된 동일한 사이즈 제한들을 가지지 않는다는 점을 제외하면, CU는 H.264의 매크로블록에 대해 유사한 목적을 가진다. 예를 들어, CU는 서브-CU들로 분할될 수도 있고, LCU의 사이즈는 시나리오 또는 상황에 따라 상이할 수도 있다. 대체로, 이 개시물에서의 CU에 대한 언급들은 한 화상의 LCU 또는 LCU의 서브-CU를 지칭할 수도 있다. LCU는 서브-CU들로 분할될 수도 있고, 각각의 서브-CU는 서브-CU들로 분할될 수도 있다. 비트스트림에 대한 구문 데이터는 LCU의 사이즈 뿐만 아니라 최대 CU 깊이라고 지칭되는, LCU가 분할될 수도 있는 최대 횟수를 정의할 수도 있다. 따라서, 비트스트림은 또한 최소 코딩 단위 (smallest coding unit; SCU) 를 정의할 수도 있다. 이 개시물은 또한 LCU, SCU, CU, 예측 단위 (PU), 또는 변환 단위 (TU) 중 어느 것을 지칭하기 위해 용어 "블록"을 사용한다 (PU 및 TU는 아래에서 더 상세히 설명된다).
LCU는 사지 트리 (quadtree) 데이터 구조에 연관될 수도 있다. 대체로, 사지 트리 데이터 구조는 CU 당 하나의 노드를 포함하며, 여기서 루트 노드는 LCU에 대응한다. CU가 네 개의 서브-CU들로 분할되면, CU에 대응하는 노드는 네 개의 자식 노드들을 구비하며, 그것들의 각각은 서브-CU들 중 하나 또는 서브-CU의 하나 이상의 서브-CU들에 대응한다. 사지 트리 데이터 구조의 각각의 노드는 구문 데이터를 대응하는 CU에 제공할 수도 있다. 예를 들어, 사지 트리에서의 노드는 노드에 대응하는 CU가 서브-CU들로 분할되는지를 나타내는 분할 플래그를 포함할 수도 있다. CU에 대한 구문 (syntax) 요소들은 회귀적으로 정의될 수도 있고, CU가 서브-CU들로 분할되는지에 의존할 수도 있다. 부가적인 구문 요소들, 이를테면 CU에 필터링이 적용되어야하는지를 나타내는 플래그가 또한 각각의 CU에 대해 포함될 수도 있다.
분할되지 않는 CU는 하나 이상의 예측 단위들 (PU들) 을 포함할 수도 있다. 대체로, PU는 대응하는 CU의 모두 또는 일 부분을 나타내고, PU에 대한 참조 샘플을 취출하기 위한 데이터를 포함한다. 예를 들어, PU가 인트라 모드 인코딩되는 경우, PU는 PU에 대한 인트라 예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU가 인터 모드 인코딩되는 경우, PU는 PU에 대한 움직임 벡터를 정의하는 데이터를 포함할 수도 있다. 움직임 벡터를 정의하는 데이터는, 예를 들어, 움직임 벡터의 수평 성분, 움직임 벡터의 수직 성분, 움직임 벡터에 대한 분해능 (예컨대, 1/4 화소 정밀도 또는 1/8 화소 정밀도), 움직임 벡터가 가리키는 참조 프레임, 및/또는 움직임 벡터에 대한 참조 목록 (예컨대, 목록 0 또는 목록 1) 을 설명할 수도 있다. PU(들) 를 정의하는 CU에 대한 데이터는 또한, 예를 들어, 하나 이상의 PU들로의 CU의 파티셔닝을 설명할 수도 있다. 파티셔닝 모드들은 CU가 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지 간에 상이할 수도 있다.
CU는 또한 비디오 데이터에 대한 변환 동작들을 수행하는데 이용될 수도 있는 하나 이상의 변환 단위들 (TU들) 을 포함할 수도 있다. PU를 이용한 예측 다음에, 비디오 인코더는 PU에 대응하는 CU의 일 부분에 대한 잔차 값들을 계산할 수도 있다. 잔차 값들은 변환, 스캐닝, 및 양자화될 수도 있다. TU는 PU의 사이즈로 반드시 제한되지는 않는다. 따라서, TU들은 동일한 CU에 대한 대응하는 PU들 보다 더 크거나 더 작을 수도 있다. 일부 예들에서, TU의 최대 사이즈는 대응하는 CU의 사이즈에 대응할 수도 있다.
CU는 휘도 (루마) 블록 ("Y"라고 지칭됨), 및 두 개의 색차 (크로마) 블록들 ("U" 및 "V"로 각각 지칭됨) 에 의해 표현될 수도 있다. 루마 블록들 및 크로마 블록들은 루마 블록들 및 크로마 블록들에 대한 원래의 값들을 예측가능하게 코딩함으로써 생성된 데이터의 잔차 블록들을 포함할 수도 있다. 크로마 블록들은 통상 서브-샘플링되는데, 사람의 시력이 색차 값들에 의해 표현되는 이미지 성질들에 덜 민감하기 때문이다. 블록들의 각각은 비디오 시퀀스 내의 현재, 이전, 또는 이후 프레임으로부터 있을 수도 있는 미리 코딩된 화소들의 블록들에 기초하여 예측적으로 인코딩될 수도 있다. 블록들의 각각에 연관된 잔차 데이터는 코딩 프로세스의 부분으로서 주파수 도메인으로 변환될 수도 있다. 일부 예들에서, 크로마 블록들 (U 및 V) 의 (샘플들의 수의 관점에서의) 사이즈는, 서브샘플링이 크로마 블록들에 대해 수행되는 지에 따라, 루마 (Y) 블록의 사이즈와 동일할 수도 있거나 또는 상이할 수도 있다.
CBP는, 예컨대, 인코딩된 비트스트림의 CU 헤더에 포함될 수도 있는 비디오 블록 구문 정보의 유형을 나타낼 수도 있다. H.264에서, CBP들은 통상 16 바이 16 CU (매크로블록) 에 대해 6-비트 정보를 포함한다. 이 경우, CU (매크로블록) 는 16 바이 16 화소 영역을 총칭하여 정의하는 변환 계수들의 4개의 8 바이 8 루마 블록들, 및 16 바이 16 화소 영역에 대해 서브-샘플링된 변환 계수들의 2개의 서브-샘플링된 크로마 블록들을 포함할 수도 있다. CBP에서의 각각의 비트는 크로마 또는 루마 블록들 (즉, 잔차 크로마 또는 루마 블록들) 중의 특정 하나가 영이 아닌 변환 계수들을 가지는지를 나타낼 수도 있다. 설명된 바와 같은 CBP의 비트들은 코딩된 블록 플래그 (coded block flag; CBF) 라고 지칭될 수도 있다. 각각의 CBF는 대응하는 블록의 하나 이상의 비디오 성분들이 영이 아닌 변환 계수들을 포함하는지를 나타내는 플래그이다. CBP는 일반적으로 하나의 구문 요소로서 함께 시그널링되는 CBF들의 수를 나타낸다.
하나의 양태에 따르면, 이 개시물의 기법들은 CU의 각각의 Y, U, 및 V 성분들의 각각이 영이 아닌 계수들을 포함하는지를 나타내는 복수의 CBF를 포함하는, 비디오 데이터의 CU에 대한 CBP의 시그널링을 허용하는 코딩 기법들을 어드레싱할 수도 있다. 예를 들어, CBP의 제 1 CBF는 CU의 U 성분이 영이 아닌 데이터를 포함하는지의 여부를 나타낼 수도 있다. CBP의 제 2 CBF는 CU의 V 성분이 영이 아닌 데이터를 포함하는지의 여부를 나타낼 수도 있다. CBP의 제 3 CBF는 CU의 Y 성분이 영이 아닌 데이터를 포함하는지의 여부를 나타낼 수도 있다. 비디오 데이터의 CU에 대한 CBP는 각각의 Y, U, 및 V 성분들의 각각이 영이 아닌 데이터를 포함하는지의 여부를 나타내는 단일 VLC 코드 워드를 포함할 수도 있다. 이러한 VLC 코드 워드는 VLC 테이블의 복수의 엔트리 (entry) 들 중의 한 엔트리를 나타낼 수도 있다.
일부 예들에서, 이 개시물의 기법들은 위에서 설명된 바와 같이 가능한 CPB를 각각 시그널링하는 복수의 VLC 코드 워드들을 포함하는 하나 이상의 VLC 테이블들을 생성하는데 및/또는 그것들 중에서 선택하는데 이용될 수도 있다. 본원에서 설명되는 기법들은 유익할 수도 있는데, CU의 루마 (Y) 및 크로마 (U 및 V) 블록들의 각각에 대한 CBF를 포함하는 CBP를 단일 VLC 코드 워드로서 시그널링하는 것이 코딩 동작들에 대해 시그널링되는 데이터의 양을 감소시킬 수도 있기 때문이다.
위에서 설명된 바와 같이, CU는 블록들, 예컨대, 서브-CU 및/또는 하나 이상의 PU 또는 TU로 분리될 수도 있다. 다른 양태에 따르면, 이 개시물은 CU의 복수의 블록들 (예컨대, PU, TU) 의 각각에 대한 각각의 CBF를 단일 VLC 코드 워드를 이용하여 그룹으로서 시그널링하는 기법들을 설명한다. 이들 기법들은 코딩 목적을 위해 시그널링되는 데이터의 양을 감소 및/또는 코딩 효율을 개선하는데 이용될 수도 있다.
이 개시물의 기법들은 상이한 변환 사이즈들을 허용하는 코딩 기법들을 다룰 수도 있다. 위에서 언급된 바와 같이, 일부 예들에서 CU는, 위에서 설명된 바와 같이, 변환 동작들 (예컨대, 위에서 설명된 바와 같은 TU) 또는 예측 동작들 (예컨대, PU) 을 위해 더 작은 블록들로 분할될 수도 있다.
일부 예들에서, 비디오 인코더는 CU에 대한 변환 인덱스를 시그널링할 수도 있다. 변환 인덱스는, 코더가 CU 또는 블록의 사이즈에 대응하는 변환 블록 사이즈를 결정할 수도 있도록, CU의 사이즈 및/또는 CU의 블록들 (예컨대, 각각의 Y, U, V 성분들) 의 사이즈를 나타낼 수도 있다. 일부 예들에서, 변환 인덱스는 CU의 상이한 비디오 성분들, 예컨대 Y, U 및 V 중에 공유될 수도 있다. 다른 예들에서, 변환 인덱스는 CU의 각각의 휘도 (Y) 및 색차 (U 및 V) 성분들을 위해 개별적으로 시그널링될 수도 있다.
이 개시물의 다른 양태에 따르면, 위에서 설명된 바와 같이, 하나 이상의 변환 인덱스들이 CU 또는 블록에 대한 CBP값에 기초하여 시그널링될 수도 또는 되지 않을 수도 있다. 예를 들어, CU가 오직 영의 값 계수들을 포함한다면, 코더는 CU의 각각의 블록들 (예컨대, 각각의 Y, U, 및 V 성분들) 에 대한 변환 인덱스를 시그널링하지 않을 수도 있다.
비디오 코더는 "인트라 모드" (I-모드) 에서, 또는 "인터 모드" (P-모드 또는 B-모드) 에서 CU를 코딩할 수도 있다. 인트라 모드 인코딩된 CU는 비디오 시퀀스의 동일한 프레임 (예컨대, 동일한 프레임의 다른 블록들) 의 데이터에 의존할 수도 있다. 인터 모드 인코딩된 CU 또는 블록은 비디오 시퀀스의 다른 프레임의 데이터에 의존할 수도 있다.
일부 예들에서, 위에서 설명된 바와 같은 변환 동작들 외에, 예측 동작들이 PU의 블록 사이즈에 기초하여 PU를 이용하여 수행될 수도 있다. 일부 예들에서, 코더는 PU에 대한 예측 모드를 시그널링할 수도 있다. 예측 모드는 PU에 적용될 예측의 사이즈 및/또는 유형을 식별할 수도 있다. 예를 들어, 예측 모드는 블록이 인트라-16x16임을 나타낼 수도 있으며, 이는 블록이 인트라 예측 (예컨대, I-모드) 을 이용하여 코딩됨과 그 블록이 16x16의 사이즈를 가짐을 나타낼 수도 있다. 다른 예로서, 예측 모드는 블록이 인터-8x8임을 나타낼 수도 있으며, 이는 블록이 인터-예측 (예컨대, P-모드 또는 B-모드) 을 이용하여 코딩됨과 그 블록이 8x8의 사이즈를 가짐을 나타낼 수도 있다.
일부 예들에서, 위에서 설명된 바와 같은 예측 모드는 VLC 기법들을 이용하여 시그널링될 수도 있다. 예를 들어, 특정 예측 모드가 VLC 코드 워드를 찾기 위해 VLC 테이블에 입력될 수도 있는 인덱스 값인 코드 번호에 매핑될 수도 있다. 일부 예들에서, 복수의 이러한 코드 번호들은 상이한 예측 모드 값들 및 상이한 VLC 코드 워드들 사이의 매핑을 정의하는 매핑 테이블을 함께 포함할 수도 있다. 이러한 매핑 테이블은 가장 확실한 (most probable) 예측 모드에 가장 짧은 VLC 코드 워드를 위한 인덱스가 할당되도록 구성될 수도 있다. 따라서, 복수의 블록들에 대한 예측 모드들을 통신하기 위한 데이터의 양은 최소화될 수도 있다.
일부 예들에서, VLC 매핑 테이블은 적응적으로 조정될 수도 있다. 예를 들어, 비디오 프레임의 블록들이 인코딩됨에 따라, 인코더는 각각의 예측 모드의 발생 주파수에 기초하여 예측 모드들을 나타내는 하나 이상의 VLC 테이블들의 코드 워드들을 적응시킬 수도 있다. 예를 들어, 예측 모드가 미리 코딩된 CU들 또는 블록들에 대한 다른 예측 모드들 보다 더 빈번하게 발생한다고 결정되면, 그 예측 모드에는 다른 예측 모드들 보다 더 짧은 VLC 코드 워드가 할당될 수도 있다.
이 개시물의 다른 양태에 따르면, 인터 코딩되는 프레임, 예컨대 B 또는 P 프레임을 코딩하기 위해, 코더는 이러한 프레임에서 전용 코드 워드들을 하나 이상의 인트라 코딩되는 예측 모드들에 할당할 수도 있다. 코더는 인터-코딩된 또는 다른 예측 모드들에 대응하지만 인트라 코딩되는 예측 모드들에 대응하지 않는 VLC 코드 워드들을 적응적으로 할당할 수도 있다. 이들 기법들에 따르면, 코딩 효율은 계산 복잡도를 줄임으로써 개선될 수도 있다.
이 개시물에서, 용어 "코딩"은 인코딩 또는 디코딩을 뜻한다. 마찬가지로, 용어 "코더" 일반적으로 임의의 비디오 인코더, 비디오 디코더, 또는 결합형 인코더/디코더 (코덱) 를 말한다. 따라서, 용어 "코더"는 본원에서는 비디오 인코딩 또는 비디오 디코딩을 수행하는 전문화된 컴퓨터 디바이스 또는 장치를 지칭하는데 사용된다. 이 개시물의 CBP 코딩 기법들은 인코더들 또는 디코더들에 적용가능할 수도 있다. 인코더는 설명된 VLC 기법들을 이용하여 CBP를 인코딩하고, 디코더는 역 (reciprocal) VLC 기법들을 이용하여 CBP를 디코딩한다.
도 1은 이 개시물의 기법들을 구현할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (100) 을 예시하는 블록도이다. 도 1에 보인 바와 같이, 시스템 (100) 은 인코딩된 비디오를 목적지 디바이스 (106) 에 통신 채널 (115) 을 통해 송신하는 발신지 디바이스 (source device; 102) 를 구비한다. 발신지 디바이스 (102) 와 목적지 디바이스 (destination deivce; 106) 는 넓은 범위의 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 발신지 디바이스 (102) 와 목적지 디바이스 (106) 는 무선 통신 디바이스 핸드셋들, 이를테면 이른바 셀룰러 또는 위성 라디오전화기들을 포함할 수도 있다. 그러나, 매크로블록들에 대한 CBP들의 인코딩 및 디코딩에 일반적으로 적용하는 이 개시물의 기법들은, 무선 애플리케이션들 또는 셋팅들로 필연적으로 제한되지는 않고, 비디오 인코딩 및/또는 디코딩 능력들을 갖춘 매우 다양한 비-무선 디바이스들에 적용될 수도 있다.
도 1의 예에서, 발신지 디바이스 (102) 는 비디오 소스 (120), 비디오 인코더 (122), 변조기/복조기 (모뎀) (124) 및 송신기 (126) 를 구비할 수도 있다. 목적지 디바이스 (106) 는 수신기 (128), 모뎀 (130), 비디오 디코더 (132), 및 디스플레이 디바이스 (134) 를 구비할 수도 있다. 이 개시물에 따르면, 발신지 디바이스 (102) 의 비디오 인코더 (122) 는 비디오 데이터의 CU에 대한 CBP를 인코딩하도록 구성될 수도 있으며, 여기서 CBP는 영이 아닌 데이터가 CU의 각각의 Y, U, 및 V 성분 각각에 포함되는지의 여부를 개별적으로 식별하는 구문 정보를 포함한다. 비디오 인코더는 영이 아닌 데이터가 CU의 각각의 Y, U, 및 V 성분 각각에 포함되는지의 여부를 나타내는 복수의 CBF를 포함하는 단일 VLC 코드 워드를 이용하여 CBP를 인코딩할 수도 있다. 또한 이 개시물에 따르면, 발신지 디바이스 (102) 의 비디오 인코더 (122) 는 CU의 블록들의 그룹에 대한 CBP를 집합적으로 단일 VLC 코드 워드로서 인코딩하도록 구성될 수도 있다. 블록들의 그룹은 CU의 PU, TU, 또는 다른 블록들을 포함할 수도 있다. 블록들의 그룹은 또한 CU의 PU, TU, 또는 다른 블록들에 연관되는 하나 이상의 루마 (Y) 또는 크로마 (U, V) 성분들을 포함할 수도 있다.
영이 아닌 데이터가 존재하는지를 CBP가 개별적으로 식별하는 대상인 휘도 블록들 (Y) 및 색차 블록들 (U, V) 은, 일반적으로 변환 계수들의 잔차 블록들을 포함한다. 변환 계수들은 코딩되고 있는 원본 블록과 예측 블록 사이의 차이들을 나타내는 잔차 화소 값들을 변환함으로써 생성될 수도 있다. 변환은 정수 변환, DCT 변환, 개념적으로 DCT에 유사한 DCT-유사 변환, 또는 그 밖에 이와 유사한 것이 될 수도 있다.
역 (reciprocal) CBP 디코딩은 또한 목적지 디바이스 (106) 의 비디오 디코더 (132) 에 의해 수행될 수도 있다. 다시 말하면, 비디오 디코더 (132) 는 또한 비디오 데이터의 CU에 대한 CBP를 디코딩하도록 구성될 수도 있으며, 여기서 CBP는 영이 아닌 데이터가 변환 계수들의 Y 블록 및 변환 계수들의 각각의 U 및 V 블록들에 개별적으로 포함되는지의 여부를 식별하는 구문 정보 (예컨대, 복수의 CBF) 를 포함한다. 본원에서 설명된 기법들에 일치하는 CBP를 디코딩하기 위해, 비디오 디코더 (132) 는 하나 이상의 VLC 테이블들을 선택하고 CBP를 디코딩하여 코딩 유닛의 각각의 Y, U, 및 V 성분 각각이 영이 아닌 계수들을 포함하는지의 여부를 결정할 수도 있다.
도 1의 예시된 시스템 (100) 은 단지 예시일 뿐이다. 이 개시물의 CBP 인코딩 및 디코딩 기법들은 임의의 인코딩 또는 디코딩 디바이스들에 의해 수행될 수도 있다. 발신지 디바이스 (102) 및 목적지 디바이스 (106) 는 이러한 기법들을 지원할 수 있는 코딩 디바이스들의 단지 예들이다.
발신지 디바이스 (102) 의 비디오 인코더 (122) 는 비디오 소스 (120) 로부터 수신된 비디오 데이터를 인코딩할 수도 있다. 비디오 소스 (120) 는 비디오 캡처 디바이스, 이를테면 비디오 카메라, 미리 캡처된 비디오를 포함하는 비디오 아카이브 (archive), 또는 비디오 콘텐츠 제공자로부터의 비디오 피드를 포함할 수도 있다. 추가의 대안으로서, 비디오 소스 (120) 는 컴퓨터 그래픽스 기반 데이터를, 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성 비디오의 조합으로서 생성할 수도 있다. 일부 경우들에서, 비디오 소스 (120) 가 비디오 카메라이면, 발신지 디바이스 (102) 와 목적지 디바이스 (106) 는 이른바 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 각각의 경우에서, 캡처된, 사전-캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더 (122) 에 의해 인코딩될 수도 있다.
시스템 (100) 에서, 일단 비디오 데이터가 비디오 인코더 (122) 에 의해 인코딩되면, 인코딩된 비디오 정보는 통신 표준, 예컨대, 이를테면 부호 분할 다중 접속 (CDMA) 또는 임의의 다른 통신 표준 또는 기법에 따라 모뎀 (124) 에 의해 변조되고, 송신기 (126) 를 통해 목적지 디바이스 (106) 에 송신될 수도 있다. 모뎀 (124) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 디자인된 다른 구성요소들을 구비할 수도 있다. 송신기 (126) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하여, 데이터를 송신하기 위해 디자인된 회로들을 구비할 수도 있다. 목적지 디바이스 (106) 의 수신기 (128) 는 정보를 채널 (115) 을 통해 수신하고, 모뎀 (130) 은 그 정보를 복조한다. 다시, 비디오 디코더 (132) 에 의해 수행되는 비디오 디코딩 프로세스는 비디오 인코더 (122) 에 의해 수행되는 CBP 인코딩 기법들에 유사한 (예컨대, 역) CBP 디코딩 기법들을 포함할 수도 있다.
통신 채널 (115) 은 임의의 무선 또는 유선 통신 매체, 이를테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들, 또는 무선 및 유선 매체들의 임의의 조합을 포함할 수도 있다. 통신 채널 (115) 은 패킷-기반 네트워크, 이를테면 로컬 영역 네트워크, 와이드-영역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 채널 (115) 은 발신지 디바이스 (102) 로부터 목적지 디바이스 (106) 로 비디오 데이터를 송신하기 위한 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 집합을 일반적으로 나타낸다.
비디오 인코더 (122) 및 비디오 디코더 (132) 는 위에서 논의된 바와 같은 출현하는 HVEC 표준과 같은 비디오 압축 표현들에 매우 유사하게 동작할 수도 있다. 따라서, 코딩 프로세스에 적용되는 CBP 코딩 기법들 및 변환 사이즈들은 ITU-T H.264에서 정의된 것과 다를 수도 있다. 그럼에도 불구하고, 이 개시물의 기법들은 다양한 다른 비디오 코딩 표준들의 콘택스트에서 쉽사리 적용될 수도 있다. 구체적으로는, 인코더 또는 디코더에서 상이한 사이즈로 된 변환들을 허용하는 임의의 비디오 코딩 표준은 이 개시물의 VLC 기법들로부터 이익을 얻을 수도 있다.
도 1에 도시되지는 않았지만, 일부 양태들에서, 비디오 인코더 (122) 및 비디오 디코더 (132) 는 각각이 오디오 인코더 및 디코더와 통합될 수도 있고, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 구비하여, 공통 데이터 스트림 또는 분리된 데이터 스트림들에서 오디오 및 비디오 양쪽 모두의 인코딩을 핸들링할 수도 있다. 적용가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들을 준수할 수도 있다.
비디오 인코더 (122) 와 비디오 디코더 (132) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수도 있다. 비디오 인코더 (122) 및 비디오 디코더 (132) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 그것들 중의 어느 하나는 결합형 인코더/디코더 (CODEC) 의 부분으로서 각각의 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버 등에 통합될 수도 있다.
일부 경우들에서, 디바이스들 (102, 106) 은 실질적으로 대칭적인 방식으로 동작할 수도 있다. 예를 들어, 디바이스들 (102, 106) 의 각각은 비디오 인코딩 및 디코딩 구성요소들을 구비할 수도 있다. 그런고로, 시스템 (100) 은 비디오 디바이스들 (102, 106) 사이에서, 예컨대, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화기술 (telephony) 을 위해 일-방향 또는 양-방향 비디오 전송을 지원할 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (122) 는 다수의 코딩 기법들 또는 동작들을 실행할 수도 있다. 대체로, 비디오 인코더 (122) 는 비디오 블록들을 인코딩하기 위해 개개의 비디오 프레임들 (또는 슬라이스들과 같은 다른 독립적으로 코딩되는 단위들) 내의 비디오 블록들에 대해 동작한다. 프레임들, 슬라이스들, 프레임들의 부분들, 화상들의 그룹들, 또는 다른 데이터 구조들은 복수의 비디오 블록들을 포함하는 독립적인 데이터 단위들로서 정의될 수도 있고, 구문 요소들은 이러한 상이한 독립적인 데이터 단위들에 포함될 수도 있다. 독립적인 데이터 단위들 내의 비디오 블록들은 고정된 또는 가변하는 사이즈들을 가질 수도 있고, 특정된 코딩 표준에 따라 사이즈를 달리할 수도 있다. 일부 경우들에서, 각각의 비디오 프레임은 일련의 독립적으로 디코딩가능한 슬라이스들을 포함할 수도 있고, 각각의 슬라이스는 하나 이상의 LCU들을 포함할 수도 있다.
이 개시물에서, 어구 "블록"은 임의의 사이즈 또는 유형의 비디오 블록을 말한다. 예를 들어, 어구 "블록"은 매크로블록, LCU, CU, 서브-CU, TU, 또는 PU 중의 하나 이상을 말할 수도 있다. 더구나, 블록들은 화소 도메인의 비디오 데이터의 블록들, 또는 이산 코사인 변환 (DCT) 도메인, DCT에 유사한 도메인, 웨이브릿 도메인, 또는 그밖에 이와 유사한 것과 같은 변환 도메인의 데이터의 블록들을 의미할 수도 있다. 덧붙여서, 어구 블록은 일반적으로 변환 도메인에서 데이터의 잔차 블록들인 루마 및 크로마 블록들을 지칭할 수도 있다.
도 1을 다시 참조하면, 비디오 인코더 (122) 는 코딩되고 있는 비디오 블록이 예측 블록을 식별하기 위하여 비디오 데이터의 다른 블록과 비교되는 예측 코딩을 수행할 수도 있다. 이 예측 코딩 프로세스는 종종 움직임 추정 및 움직임 보상이라고 지칭된다. 움직임 추정은 하나 이상의 예측 프레임들 (또는 다른 코딩된 단위들) 의 하나 이상의 예측 비디오 블록들에 대해 비디오 블록 움직임을 추정한다. 움직임 보상은 하나 이상의 예측 프레임들 또는 다른 코딩된 단위들로부터 원하는 예측 비디오 블록을 생성한다. 움직임 보상은 보간 필터링이 수행되어 분수 (fractional) 화소 정밀도의 예측 데이터를 생성하는 보간 프로세스를 포함할 수도 있다.
예측 블록을 생성한 후, 코딩되고 있는 현재 비디오 블록 및 예측 블록 사이의 차이들은 잔차 블록으로서 코딩되고, 예측 구문 (이를테면 움직임 벡터) 가 예측 블록을 식별하기 위해 이용된다. 잔차 블록은 변환될 수도 있고 양자화될 수도 있다. 변환 기법들은 DCT 프로세스 또는 개념적으로 유사한 프로세스, 정수 변환들, 웨이브릿 변환들, 또는 다른 유형들의 변환들을 포함할 수도 있다. DCT 또는 DCT-유사 프로세스에서, 일 예로서, 변환 프로세스는 화소 값들 (예컨대, 잔차 값들) 의 세트를 주파수 도메인에서 화소 값들의 에너지를 나타낼 수도 있는 변환 계수들로 변환한다. 양자화는 통상 변환 계수들에 적용되고, 임의의 주어진 변환 계수에 연관되는 비트들의 수를 제한하는 프로세스를 일반적으로 수반한다.
변환 및 양자화 다음에, 엔트로피 코딩이, 변환되고 양자화된 잔차 비디오 블록들에 대해 수행될 수도 있다. 구문 요소들, 이를테면 본원에서 설명되는 CBP들, 인코딩 동안 정의되는 다양한 필터 구문 정보 및 예측 벡터들이 또한 엔트로피 코딩된 비트스트림에 포함될 수도 있다. 대체로, 엔트로피 코딩은 양자화된 변환 계수들 및/또는 다른 구문 정보의 시퀀스를 집합적으로 압축하는 하나 이상의 프로세스들을 포함한다. 스캐닝 기법들, 이를테면 지그재그 스캐닝 기법들은, 2차원 비디오 블록들로부터 계수들의 하나 이상의 직렬화된 1차원 벡터들을 정의하기 위해 양자화된 변환 계수들에 대해 수행된다. 그 다음 스캐닝된 계수들은 임의의 구문 정보와 함께, 예컨대, CAVLC (content adaptive variable length coding), CABAC (context adaptive binary arithmetic coding), 또는 다른 엔트로피 코딩 프로세스를 통해 엔트로피 코딩된다.
인코딩 프로세스의 부분으로서, 인코딩된 비디오 블록들은 후속 비디오 블록들의 후속 예측 기반 코딩에 이용되는 비디오 데이터를 생성하기 위해 디코딩될 수도 있다. 이 스테이지에서, 필터링은 비디오 품질을 개선하기 위해, 및 예컨대, 디코딩된 비디오로부터 블록 현상 (blockiness) 또는 다른 아티팩트 (artifact) 들을 제거하기 위해 채용될 수도 있다. 이 필터링은 인루프 (in-loop) 또는 포스트 루프 (post-loop) 일 수도 있다. 인루프 필터링으로, 재구성된 비디오 데이터의 필터링은 코딩 루프에서 발생하며, 이는 필터링된 데이터가 후속 이미지 데이터의 예측에서의 후속하는 사용을 위해 인코더 또는 디코더에 의해 저장된다는 것을 의미한다. 대조적으로, 포스트 루프 필터링으로, 재구성된 비디오 데이터의 필터링은 코딩 루프 밖에서 발생하며, 이는 그 비디오 데이터의 필터링되지 않은 버전들이 후속 이미지 데이터의 예측에서의 후속하는 사용을 위해 인코더 또는 디코더에 의해 저장된다는 것을 의미한다.
도 2는 이 개시물에 일치하는 일 예의 비디오 인코더 (200) 를 예시하는 블록도이다. 비디오 인코더 (200) 는 발신지 디바이스 (100) 의 비디오 인코더 (122), 또는 다른 디바이스의 비디오 인코더에 대응할 수도 있다. 도 2에 도시된 바와 같이, 비디오 인코더 (200) 는 예측 모듈 (210), 가산기들 (230 및 232), 및 메모리 (212) 를 구비한다. 비디오 인코더 (200) 는 또한 변환 모듈 (214) 및 양자화 모듈 (216), 뿐만 아니라 역 양자화 모듈 (inverse quantization module; 220) 및 역 변환 모듈 (inverse transform module; 222) 을 구비한다. 비디오 인코더 (200) 는 또한 VLC 테이블들 (252) 을 적용하는 CBP 인코딩 모듈 (250) 을 구비한다. 덧붙여서, 비디오 인코더 (200) 는 엔트로피 코딩 모듈 (218) 을 구비한다. VLC 테이블들 (252) 은 CBP 인코딩 모듈 (250) 이 테이블들을 적용하는 한 CBP 인코딩 모듈 (250) 의 부분으로서 예시된다. 그러나, VLC 테이블들 (252) 은 테이블들을 적용하기 위해 CBP 인코딩 모듈 (250) 에 의해 액세스가능하게 될 수도 있는 메모리 로케이션, 이를테면 메모리 (212) 에 실제로 저장될 수도 있다. 필터 모듈 (236) 은 재구성된 비디오 블록들에 대해 인루프 또는 포스트 루프 필터링을 수행할 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (200) 는 코딩될 비디오 블록을 수신하고, 예측 모듈 (210) 은 예측 코딩 기법들을 수행한다. 인터 코딩을 위해, 예측 모듈 (210) 은 예측 블록을 정의하기 위해, 인코딩될 비디오 블록을 하나 이상의 비디오 참조 프레임들 또는 슬라이스들에서의 여러 블록들과 비교한다. 인트라 코딩을 위해, 예측 모듈 (210) 은 동일한 코딩된 단위 (coded unit) 내의 이웃 데이터에 기초하여 예측 블록을 생성한다. 예측 모듈 (210) 은 예측 블록을 출력하고 가산기 (230) 는 잔차 블록을 생성하기 위해 코딩되고 있는 비디오 블록으로부터 예측 블록을 감산한다.
인터 코딩을 위해, 예측 모듈 (210) 은, 예측 블록을 가리키는 움직임 벡터를 식별하고 그 움직임 벡터에 기초하여 예측 블록을 생성하는 움직임 추정 및 움직임 보상 모듈들 (도 2에는 미도시) 을 포함할 수도 있다. 통상적으로, 움직임 추정은 움직임을 추정하는 움직임 벡터를 생성하는 프로세스라고 간주된다. 예를 들어, 움직임 벡터는 현재 프레임 내의 코딩되고 있는 현재 블록에 대해 예측 프레임 내의 예측 블록의 변위를 나타낼 수도 있다. 움직임 보상은 움직임 추정에 의해 결정된 움직임 벡터에 기초하여 예측 블록을 페치 (fetch) 하거나 또는 생성하는 프로세스로 통상 간주된다. 인트라 코딩에 대해, 예측 모듈 (210) 은 비디오 데이터의 동일한 프레임, 슬라이스, 또는 다른 단위 내의 이웃 데이터에 기초하여 예측 블록을 생성한다. 하나 이상의 인트라 예측 모드들이 인트라 예측 블록이 정의될 수 있는 방법을 정의할 수도 있다.
인터 코딩에 대한 움직임 보상은 부-화소 해상도로의 보간들을 포함할 수도 있다. 예측 모듈 (210) 에 의해 생성되는 보간된 예측 데이터는, 예를 들어, 1/2-화소 해상도, 1/4-화소 해상도, 또는 더 미세한 해상도로 보간될 수도 있다. 이는 이러한 부-화소 해상도에 대해 비디오 블록들의 움직임을 추정하는 것을 허용하기 위한 움직임 추정을 허용한다.
예측 모듈 (210) 이 예측 블록을 출력한 후, 그리고 가산기 (230) 가 잔차 블록을 생성하기 위해 코딩되고 있는 비디오 블록으로부터 예측 블록을 감산한 후, 변환 모듈 (214) 은 잔차 블록에 변환을 적용한다. 변환은 이산 코사인 변환 (DCT), 정수 변환, 또는 ITU H.264 표준, HVEC 표준 등에 의해 정의되는 개념적으로 유사한 변환을 포함할 수도 있다. 일부 예들에서, 변환 모듈 (214) 은 상이한 사이즈의 변환들을 수행할 수도 있고 코딩 효율 및 개선된 압축을 위해 변환들의 상이한 사이즈들을 선택할 수도 있다. 웨이브릿 변환들, 정수 변환들, 서브-밴드 변환들 또는 다른 유형들의 변환들이 또한 이용될 수도 있다. 어느 경우든, 변환 유닛 (214) 은 잔차 화소 값들의 잔차 블록에 특정 변환을 적용하여, 잔차 변환 계수들의 블록을 생성한다. 변환은 화소 도메인으로부터의 잔차 화소 값 정보를 주파수 도메인으로 변환할 수도 있다.
그 다음 양자화 모듈 (216) 은 잔차 변환 계수들을 양자화하여 비트 레이트를 더욱 감소시킨다. 양자화 모듈 (216) 은, 예를 들어, 계수들의 각각을 코딩하는데 이용되는 비트들의 수를 제한할 수도 있다. 양자화 후, 엔트로피 코딩 모듈 (218) 은 데이터를 스캔하고 엔트로피 인코딩할 수도 있다. 예를 들어, 엔트로피 코딩 모듈은 2차원 표현으로부터의 양자화된 계수 블록을 하나 이상의 직렬화된 1차원 벡터들로 스캔할 수도 있다. 스캔 순서는 정의된 순서 (이를테면 지그재그 스캐닝, 수평 스캐닝, 수직 스캐닝, 또는 또 다른 사전 정의된 순서) 로 발생하도록 사전 프로그래밍될 수도 있거나, 또는 어쩌면 이전의 코딩 통계에 기초하여 적응적으로 정의될 수도 있다. 이 스캐닝 프로세스 다음에, 엔트로피 인코딩 모듈 (218) 은 양자화된 변환 계수들을 (임의의 구문 요소들과 함께) 엔트로피 코딩 방법론, 이를테면 CAVLC 또는 CABAC에 따라 인코딩하여, 데이터를 추가로 압축한다. 엔트로피 코딩된 비트스트림에 포함된 구문 정보는 예측 모듈 (210) 로부터의 예측 구문, 이를테면 인터 코딩에 대한 움직임 벡터들 또는 인트라 코딩에 대한 예측 모드들을 포함할 수도 있다. 엔트로피 코딩된 비트스트림에 포함된 구문 정보는 또한 필터 정보, 이를테면 예측 모듈 (210) 에 의한 보간들을 위해 적용되는 것 또는 필터 모듈 (236) 에 의해 적용되는 필터들을 포함할 수도 있다. 덧붙여서, 엔트로피 코딩된 비트스트림에 포함되는 구문 정보는 또한 CU 및/또는 블록에 연관된 CBP들을 포함할 수도 있고, 이 개시물의 기법들은 CBP 인코딩 모듈 (250) 의 VLC 테이블들 (252) 에 기초하여 CBP들의 VLC 코딩을 구체적으로 정의한다.
CAVLC는 엔트로피 코딩 모듈 (218) 에 의해 벡터화 기반 (vectorized basis) 으로 적용될 수도 있는 ITU H.264/MPEG4, AVC 표준에 의해 지원되는 하나의 유형의 엔트로피 코딩 기법이다. CAVLC는 변환 계수들 및/또는 구문 요소들의 직렬화된 "런 (run)" 들을 효과적으로 압축하는 방식으로 VLC 테이블들 (모듈 (218) 에는 미도시) 을 이용한다. CABAC는 엔트로피 코딩 모듈 (218) 에 의해 벡터화 기반으로 적용될 수도 있는 ITU H.264/MPEG4, AVC 표준에 의해 지원되는 다른 유형의 엔트로피 코딩 기법이다. CABAC는 2치화 (binarization), 콘텍스트 모델 선택, 및 이진 산술 코딩을 포함하여 여러 스테이지들을 수반할 수도 있다. 이 경우, 엔트로피 코딩 모듈 (218) 은 변환 계수들 및 구문 요소들을 CABAC에 따라 코딩한다. 많은 다른 유형들의 엔트로피 코딩 기법들이 또한 존재하고, 새로운 엔트로피 코딩 기법들이 미래에 출현할 것으로 보인다. 이 개시물은 임의의 특정 엔트로피 코딩 기법으로 제한되지 않는다.
엔트로피 코딩 모귤 (218) 에 의한 엔트로피 코딩 다음에, 인코딩된 비디오는 다른 디바이스로 송신되거나 또는 나중의 전송 또는 취출을 위해 보관될 수도 있다. 다시, 인코딩된 비디오는 디코딩 프로세스를 적절히 구성하기 위해 디코더에 의해 이용될 수도 있는 엔트로피 코딩된 벡터들 및 여러 구문을 포함할 수도 있다. 역 양자화 모듈 (220) 및 역 변환 모듈 (222) 은 역 양자화 및 역 변환을 각각 적용하여, 화소 도메인에서 잔차 블록을 재구성한다. 합산기 (232) 는 재구성된 잔차 블록을 움직임 보상 유닛 (210) 에 의해 생성된 예측 블록에 가산하여 메모리 (212) 에 저장하기 위한 재구성된 비디오 블록을 생성한다. 메모리 (212) 는 인코딩될 다른 프레임들의 블록들에 대해 움직임 추정에 이용하기 위한 블록들의 프레임 또는 슬라이스를 저장할 수도 있다. 이러한 저장 전에, 인루프 필터링에서는, 필터 모듈 (236) 이 필터링을 비디오 블록에 적용하여 비디오 품질을 개선할 수도 있다. 필터 모듈 (236) 의 의한 이러한 필터링은 블록 현상 또는 다른 아티팩트들을 감소시킬 수도 있다. 더구나, 필터링은 코딩되고 있는 비디오 블록들에 가까운 매치 (close match) 을 포함하는 예측 비디오 블록들을 생성함으로써 압축을 개선할 수도 있다. 필터링은 또한 필터링된 데이터가 디코딩된 데이터로서 출력되도록 포스트 루프로 수행될 수도 있지만, 필터링되지 않은 데이터는 예측 모듈 (210) 에 의해 이용된다.
도 3은 본원에서 설명되는 방식으로 인코딩되어 있는 비디오 시퀀스를 디코딩하는 비디오 디코더 (300) 의 일 예를 도시하는 블록도이다. 수신된 비디오 시퀀스는 인코딩된 이미지 프레임들의 세트, 프레임 슬라이스들의 세트, 공통 코딩된 화상들의 그룹 (GOP들), 또는 이러한 비디오 블록들을 디코딩하는 방법을 정의하는 구문 정보 및 인코딩된 비디오 블록들을 포함하는 매우 다양한 코딩된 비디오 단위들을 포함할 수도 있다.
비디오 디코더 (300) 는 도 2의 엔트로피 인코딩 모듈 (218) 에 의해 수행된 인코딩의 역 디코딩 기능 (reciprocal decoding function) 을 수행하는 엔트로피 디코딩 모듈 (302) 을 구비한다. 특히, 엔트로피 디코딩 모듈 (302) 은 CAVLC 또는 CABAC 디코딩, 또는 도 2의 엔트로피 인코딩 모듈 (218) 에 의해 적용되는 것에 대한 임의의 다른 유형의 역 엔트로피 코딩 (reciprocal entropy coding) 에 따른 디코딩을 수행할 수도 있다. 1차원의 직렬화된 포맷에서의 엔트로피 디코딩된 비디오 블록들은 계수들의 하나 이상의 1차원 벡터들로부터 2차원 블록 포맷으로 다시 변환될 수도 있다. 벡터들의 수 및 사이즈, 뿐만 아니라 비디오 블록들에 대해 정의되는 스캔 순서는 2차원 블록이 재구성되는 방법을 정의할 수도 있다. 엔트로피 디코딩된 예측 구문은 엔트로피 디코딩 모듈 (302) 로부터 예측 모듈 (310) 로 전송될 수도 있고, 엔트로피 CBP 구문은 엔트로피 디코딩 모듈 (302) 로부터 CBP 디코딩 모듈 (350) 로 전송될 수도 있다.
비디오 디코더 (300) 는 또한 예측 모듈 (310), 역 양자화 유닛 (306), 역 변환 모듈 (304), 메모리 (322), 및 합산기 (314) 를 구비한다. 덧붙여서, 비디오 디코더 (60) 는 또한 VLC 테이블들 (352) 을 구비한 CBP 디코딩 모듈 (350) 을 포함한다. CBP 디코딩 모듈 (350) 이 VLC 테이블들 (352) 을 적용하는 한 VLC 테이블들 (352) 은 CBP 디코딩 모듈 (350) 의 부분으로 예시되지만, VLC 테이블들 (352) 은 CBP 디코딩 모듈 (350) 에 의해 액세스되는 메모리 로케이션, 이를테면 메모리 (322) 에 실제로 저장될 수도 있다. 이 경우, VLC 테이블들 (352) 은 그 테이블들을 적용하기 위해 CBP 디코딩 모듈 (350) 에 의해 액세스가능하게 될 수도 있고 수신된 CBP 코드 워드를 VLC 테이블들 (352) 중의 하나 이상의 VLC 테이블의 대응하는 데이터에 매핑할 수도 있다. 이 개시물의 하나의 양태에 따르면, 디코딩 모듈 (350) 은 VLC 코드 워드를 VLC 테이블의 엔트리에 매핑하여, 각각의 Y, U, 및 V 성분들 각각이 영이 아닌 계수들을 포함하는지의 여부를 개별적으로 나타내는 CBP를 디코딩할 수도 있다. 이 개시물의 다른 양태에 따르면, 디코딩 모듈 (350) 은 VLC 코드 워드를 VLC 테이블의 엔트리에 매핑하여, CU의 블록들의 그룹이 영이 아닌 계수들을 포함하는지의 여부를 나타내는 CBP를 디코딩할 수도 있다.
매우 다양한 비디오 압축 기술들 및 표준들이 공간적 및 시간적 예측을 수행하여 입력 비디오 신호들에 내재하는 리던던시를 감소시키거나 제거한다. 위에서 설명된 바와 같이, 입력 비디오 블록은 공간 예측 (즉 인트라 예측) 및/또는 시간적 예측 (즉 인터 예측 또는 움직임 추정) 을 이용하여 예측된다. 본원에서 설명되는 예측 모듈들은 주어진 입력 비디오 블록에 대한 바람직한 예측 모드를 선택하기 위해 모드 결정 모듈 (미도시) 을 구비할 수도 있다. 모드 선택은 블록이 인트라 또는 인터 코딩되는지, 인트라 코딩이 이용된다면 예측 블록 사이즈 및 예측 모드, 그리고 인터 코딩이 이용된다면 이용되는 움직임 파티션 사이즈 및 움직임 벡터들과 같은 다양한 인자들을 고려할 수도 있다. 예측 블록은 입력 비디오 블록으로부터 감산되고, 그 다음 변환 및 양자화가 위에서 설명된 바와 같이 잔차 비디오 블록에 적용된다. 변환들은 이 개시물에 따른 가변하는 사이즈들을 가질 수도 있고, CBP 인코딩 및 디코딩은 CU 또는 블록에 대해 이용되는 변환 사이즈들에 기초할 수도 있다. 이용될 변환들은 매크로블록 구문으로 시그널링될 수도 있거나, 또는 콘텍스트들 또는 다른 인자들에 기초하여 적응적으로 결정될 수도 있다.
양자화된 계수들은, 모드 정보와 함께, 엔트로피 인코딩되어 비디오 비트스트림을 형성할 수도 있다. 양자화된 계수들은 또한 역 양자화되고 역 변환되어 재구성된 잔차 블록을 형성할 수도 있으며, 재구성된 잔차 블록은 예측 비디오 블록 (선택된 코딩 모드에 따른 인트라 예측된 블록 또는 움직임 보상된 블록) 에 다시 가산되어 재구성된 비디오 블록을 형성할 수도 있다. 인루프 또는 포스트 루프 필터는 재구성된 비디오 신호에서 시각적 아티팩트들을 감소시키기 위하여 적용될 수도 있다. 재구성된 비디오 블록은 미래의 비디오 블록들의 코딩의 이용을 위해 참조 프레임 버퍼 (즉, 메모리) 에 최종적으로 저장된다.
이 개시물에서 설명되는 CBP 인코딩 기법들은 도 2의 CBP 인코딩 모듈 (250) 에 의해 VLC 테이블들 (252) 을 사용함으로써 수행될 수도 있다. 다시, VLC 테이블들 (252) 이 CBP 인코딩 모듈 (250) 내에서 예시되었지만, VLC 테이블들은 메모리 로케이션 (이를테면 메모리 (212)) 에 실제로 저장되고 코딩 프로세스에서 CBP 인코딩 모듈 (250) 에 의해 액세스될 수도 있다. 이 개시물의 역 CBP 디코딩 기법들은 도 3의 CBP 디코딩 모듈 (350) 에 의해 VLC 테이블들 (352) 을 적용함으로써 수행될 수도 있다. CBP 인코딩 모듈 (250) 과 마찬가지로, CBP 디코딩 모듈 (350) 에서는, VLC 테이블들 (352) 이 CBP 디코딩 모듈 (350) 내에 예시되어 있다. 이 예시는, 그러나, 예증하는 목적을 위한 것이다. 실제로, VLC 테이블들 (352) 은 메모리 로케이션 (이를테면 메모리 (322)) 에 저장되고 디코딩 프로세스에서 CBP 디코딩 모듈 (350) 에 의해 액세스될 수도 있다. 본원에서 사용되는 바와 같은 용어 "코딩"은, 인코딩, 디코딩 또는 인코딩 및 디코딩 양쪽 모두를 포함하는 임의의 프로세스를 지칭한다.
위에서 설명된 바와 같이, 코딩된 블록 플래그를 본원에서 설명된 기법들에 따라 코딩하기 위해, 코딩 모듈 (예컨대, 인코딩 모듈 (250), 디코딩 모듈 (350)) 은 하나 이상의 가변 길이 코드 (VLC) 테이블들을 생성 및/또는 선택할 수도 있다. 하나 이상의 VLC 테이블들은 블록에 대한 각각의 CBP 값에 매핑되는 복수의 VLC 코드 워드들을 각각 구비할 수도 있다. 예를 들어, 본원에서 설명된 바와 같은 VLC 코드 워드는 각각의 각각의 성분이 영이 아닌 계수들을 포함하는지를 나타내는, 블록의 Y, U, 및 V 성분들의 각각에 대한 CBF를 나타낼 수도 있다. 다른 예에 따르면, 본원에서 설명되는 바와 같은 VLC 코드 워드는 CU의 복수의 블록들 중의 각각이 영이 아닌 계수들을 포함하는지를 개별적으로 식별하는 CU의 복수의 블록들의 각각에 대한 CBF를 나타낼 수도 있다.
인코딩 모듈 (250) 은 CU의 블록의 복수의 성분들의 각각, 이를테면 CU의 블록의 휘도 (Y), 제 1 색차 (U), 및 제 2 색차 (V) 성분에 대한 코딩된 블록 플래그 (CBF) 를 결정할 수도 있다. 인코딩 모듈 (250) 은 제 1 색차 (U) 블록 및 제 2 색차 (V) 성분에 대한 CBF의 값을 다른 것들에 무관하게 결정할 수도 있다. 예를 들어, 인코딩 모듈 (250) 은 제 1 색차 (U) 성분이 어떠한 영이 아닌 계수들도 포함하지 않는다면 영의 값 (0) 을 그리고 제 1 색차 (U) 성분이 하나 이상의 영이 아닌 계수들을 포함한다면 일의 값 (1) 을 포함하는, 제 1 색차 (U) 성분에 대한 CBF를 결정할 수도 있다. 인코딩 모듈 (250) 은 제 2 색차 (V) 성분이 어떠한 영이 아닌 계수들도 포함하지 않는다면 영의 값 (0) 을 그리고 제 2 색차 (V) 성분이 하나 이상의 영이 아닌 계수들을 포함한다면 일의 값 (1) 을 포함하는, 제 2 색차 (V) 성분에 대한 CBF를 결정할 수도 있다.
인코딩 모듈 (250) 은 각각의 휘도 (Y), 제 1 색차 (U), 및 제 2 색차 (V) 의 각각에 대한 각각의 CBF들을 단일 VLC 코드 워드로서 표현되는 CBP로 조합하여 시그널링할 수도 있다. 예를 들어, 인코딩 모듈 (250) 은 VLC 테이블, 이를테면 표 1 및 2에 나타낸 예의 VLC 테이블들을 생성 및/또는 액세스하여, 휘도 (Y), 제 1 색차 (U), 및 제 2 색차 (V) 성분들의 각각에 대한 종합적인 CBF 값들을 포함하는 CBP를 조합하여 나타내는 VLC 코드 워드의 값을 결정하고, 결정된 코드 워드를 디코딩 모듈 (350) 에 통신할 수도 있다. 디코딩 모듈 (350) 은 표 1 및 2에 도시된 VLC 테이블과 동일한 또는 유사한 VLC 테이블에 액세스하여 CBP를 결정하거나 디코딩하여, CU의 휘도 (Y), 제 1 색차 (U), 및 제 2 색차 (V) 성분들의 각각에 대한 각각의 CBF를 결정할 수도 있다.
일부 예들에서, CBP 인코딩 모듈 (250) 은 CU의 또는 다른 CU들의 이웃 블록들의 콘텍스트에 기초하여 VLC 테이블을 적응적으로 생성할 수도 있다. 예를 들어, CBP 인코딩 모듈 (250) 은 인코딩될 블록의 하나 이상의 이웃 블록들에 대한 적어도 하나의 CBP 값을 결정하고, 하나 이상의 이웃 CU들 또는 블록들에 의해 정의된 콘텍스트에 기초하여 특정한 CBP 값들을 나타내기 위하여 VLC 테이블의 가변 길이 코드 워드들을 할당할 수도 있다. 예를 들어, 하나 이상의 이웃 블록들이 어떠한 영이 아닌 계수들도 포함하지 않는다면, 현재 블록이 또한 어떠한 영이 아닌 계수들도 포함하지 않을 공산 (likelihood) 은 이웃 블록들이 영이 아닌 계수들을 포함하는 경우보다 높을 수도 있다. 이 예에 따르면, 더 짧은 VLC 코드 워드가, 영의 값 (각각의 성분에 대한 영이 아닌 계수들이 없음을 나타냄) 을 가지는 블록의 각각의 루마 (Y), 제 1 크로마 (U), 및 제 2 크로마 (V) 성분들에 대한 CBF의 조합들을 포함하는 CBP에 할당될 수도 있다. 위에서 언급된 일 예에 따르면, 인코더 (250) 는, VLC 테이블에서, 각각의 Y, U, 및 V 성분들의 각각이 어떠한 영이 아닌 계수들도 가지지 않음을 나타낼 수도 있는 (Y,U,V) = (0,0,0) 의 CBP에, 가장 짧은 VLC 코드 워드, 예컨대 1-비트 코드 워드를 할당할 수도 있다. 또한 이 예에 따르면, 인코더 (250) 는 (Y,U,V) = (1,0,0), (Y,U,V) = (0,1,0), 또는 (Y,U,V) = (0,0,1) 의 CBP에 짧은 VLC 코드 워드를 할당할 수도 있다. 인코더는 또한 콘텍스트에 기초하여 덜 있음직한 CBP 값들에 더 긴 VLC 코드 워드들을 할당할 수도 있다. 예를 들어, 하나 이상의 이웃 블록들이 어떠한 영이 아닌 계수들도 포함하지 않는다면, (Y,U,V) = (1,1,1) 의 CBP에는 VLC 테이블에서 가장 긴 코드 워드가 할당될 수도 있다.
도 4는 현재 CU (401) 의 하나의 예를 도시한다. 현재 CU (401) 는 현재 코딩중인 CU를 나타낼 수도 있다. 현재 CU (401) 는 임의의 사이즈, 예컨대, 8x8, 16x16, 32x32, 또는 64x64를 가질 수도 있다. 도 4에 도시된 바와 같이, 현재 CU (401) 는 관련 Y, U, 및 V 성분의 각각을 포함한다. 일부 예들에서, Y, U, 및 V 성분들은 현재 CU (401) 의 사이즈에 각각 대응한다. 예를 들어, CU (401) 의 각각의 Y, U, 및 V 성분들은 현재 CU (401) 와 동일한 사이즈를 각각 가질 수도 있다. 다른 예들에 따르면, 하나를 초과하는 Y, U, 또는 V 성분이 현재 CU (401) 에 대응할 수도 있다. 예를 들어, 현재 CU는 현재 CU의 사이즈의 세분된 블록에 각각 대응하는 4개의 각각의 Y 성분들을 포함할 수도 있다. 하나의 이러한 예에 따르면, 현재 CU에 연관된 각각의 U 및 V 성분들은 현재 CU (401) 와 동일한 사이즈를 가질 수도 있다. 다른 이러한 예에 따르면, 현재 CU (401) 에 연관된 각각의 U 및 V 성분들은 위에서 설명된 바와 같은 세분된 Y 성분의 사이즈에 대응할 수도 있다.
도 4는 또한 비디오 프레임 (400) 의 현재 CU (401) 의 2개의 이웃 CU들 (402 및 403) 을 예시한다. 도 4에서 보인 바와 같이, 상부 CU (402) 는 비디오 프레임 (400) 에서 CU (401) 보다 위에 위치되는 반면, 왼쪽 CU (403) 는 비디오 프레임 (400) 에서 CU (401) 의 왼쪽에 위치된다. 일부 예들에서, 상부 CU (402) 및 왼쪽 CU (403) 는 현재 CU (401) 에 대해 위에서 설명된 바와 같은 연관된 Y, U, 및 V 성분들을 포함할 수도 있다.
이 개시물의 기법들에 따르면, 코더는 현재 CU (401) 의 Y, U, 및 V 성분들의 각각이 어느 영이 아닌 계수들을 포함하는지를 개별적으로 나타내는 복수의 CBF를 포함하는 단일 가변 길이 코드 워드를 시그널링할 수도 있다. 하나의 예에 따르면, VLC 테이블은 이웃 CU들 (402, 403) 의 하나 이상의 CPB에 의해 정의된 콘텍스트에 기초하여 선택될 수도 있다. 예를 들어, CBP 인코딩 모듈 (250) 은 이웃 CU들 (402, 403) 중 하나 이상이 영이 아닌 계수들을 포함하는지의 여부에 기초하여 현재 CU (401) 의 집합적인 Y, U, 및 V 성분들에 대한 CBP를 코딩하기 위하여 VLC 테이블을 선택할 수도 있다.
하나의 특정 예에 따르면, 코더 (예컨대, CBP 인코딩 모듈 (250) 및 CBP 디코딩 모듈 (350)) 는 하나 이상의 이웃 CU들 (402, 403) 에 대한 결정된 CBP에 기초하여 현재 CU (401) 에 대한 하나 이상의 콘텍스트를 다음과 같이 결정할 수도 있다:
콘텍스트 1: 상부 CU (402) 및 왼쪽 CU (403) 양쪽 모두에 대한 CBP 값들은 영의 값 계수들만이 존재함을 나타낸다.
콘텍스트 2: 상부 CU (402) 및 왼쪽 CU (403) 중의 하나에 대한 CBP 값들은 영의 값 계수들만이 존재함을 나타내고 상부 CU (402) 및 왼쪽 CU (403) 중의 하나에 대한 CBP 값들은 영이 아닌 계수들이 존재함을 나타낸다.
콘텍스트 3: 상부 CU (402) 및 왼쪽 CU (403) 양쪽 모두에 대한 CBP 값들은 모두가 영이 아닌 계수들이 존재함을 나타낸다.
따라서, 이웃 데이터는 콘텍스트를 정의하는데 사용되고, 이웃 데이터는 비디오 데이터의 이웃 블록들에 연관된 각각의 CBP들을 포함할 수도 있다. 위에서 언급된 일 예에 따르면, 제 1 콘텍스트 (예컨대, 콘텍스트 1) 는 제 1 이웃 CU (402) 의 CBP 및 제 2 이웃 CU (403) 의 CBP가 영의 값 계수들만이 존재함을 나타내는 경우를 포함하며, 제 2 콘텍스트 (예컨대, 콘텍스트 2) 는 제 1 이웃 CU (402) 의 CBP 및 제 2 이웃 CU (403) 의 CBP가 영의 값 계수들만이 이웃 CU들 (402, 403) 중의 하나에 존재하고 영이 아닌 계수들이 이웃 CU (402, 403) 중의 다른 하나에 존재함을 나타내는 경우를 포함하고, 제 3 콘텍스트 (예컨대, 콘텍스트 3) 는 제 1 이웃 CU (402) 의 CBP 및 제 2 이웃 CU (403) 의 CBP 양쪽 모두가 영이 아닌 계수들이 존재함을 나타내는 경우를 포함한다.
다른 예들에서, 이웃 블록들의 다른 부분들의 CBP 값들은 콘텍스트들을 정의하는데 이용될 수 있다. 예를 들어, 이웃 CU들 (402, 403) 의 하나 이상의 블록들에 대한 CBP 값들은 현재 CU (401) 의 코딩을 위한 콘텍스트를 식별하는데 이용될 수도 있다. 어느 경우든, 현재 CU에 대해 정의된 콘텍스트들을 고려하면, CU에 대한 CBP는 다음의 수학식 및 표들에 기초하여 인코딩되고 디코딩될 수도 있다. 예를 들어, 인코딩은 위에서 설명된 바와 같은 하나 이상의 콘텍스트들에 기초하여 CBP 값들에 할당되는 코드 번호들을 갖는 하나 이상의 VLC 코드 테이블들을 선택 및/또는 생성하는 것을 수반할 수도 있다. 다른 예로서, 디코더는 하나 이상의 VLC 코드 워드들을 수신하고, 위에서 설명된 바와 같은 하나 이상의 콘텍스트들에 기초하여 선택된 VLC 테이블을 이용하여 하나 이상의 VLC 코드 워드들을 디코딩할 수도 있다. 일부 예들에 따르면, VLC 테이블들은 사전 정의될 수도 있지만 본원에서 설명되는 방식으로 선택될 수도 있다. 다른 경우들에서, VLC 테이블들은 그것들 자신이 본원에서 설명되는 방식으로 적응적으로 생성되고 선택되고 적용될 수도 있다.
CBP = (L,U,V)
코딩된 블록 플래그들(CBF)
(U V Y)
유너리 (unary) 코드워드
0 0 0 1
0 0 1 01
0 1 0 001
0 1 1 00001
1 0 0 0001
1 0 1 000001
1 1 0 0000001
1 1 1 0000000
표 1은 도 4를 참조하여 위에서 설명된 바와 같은 콘텍스트 1에 따라 CBP 인코딩 모듈 (250) 및/또는 디코딩 모듈 (351) 에 의해 이용/생성될 수도 있는 VLC 테이블의 하나의 예를 예시한다. 일 예의 표 1에 따르면, CBP 인코딩 모듈 (250) 은 (Y,U,V) = (0,0,0) 의 CBP에 일 (1) 의 단일 비트 VLC 코드 워드를 할당하였다. CBP 인코딩 모듈 (250) 은 (Y,U,V) = (0,0,0) 의 CBP에 가장 짧은 코드 워스 길이 (code worth length) 를 할당할 수도 있는데, 콘텍스트 1에 기초하여, (0,0,0) 의 값이 현재 CU (401) 의 (Y,U,V) 성분들에 대한 가장 가능한 CBP일 수도 있기 때문이다. CBP 인코딩 모듈 (250) 은 또한 위에서 설명된 콘텍스트 1에 기초하여 두번째로 가장 가능한 CBP일 수도 있는 CBP 값 (0,0,1) 에 2-비트 코드 워드를 할당하고 있다. CBP 인코딩 모듈 (250) 은 또한 3-비트 코드 워드를 CBP 값 (0,1,0) 에, 그리고 4-비트 코드 워드를 CBP 값 (1,0,0) 에 할당하고 있는데 이것들은 콘텍스트 1에 따라 3번째 및 4번째로 더 가능한 조합들일 수도 있다. 또한 테이블 1에 예시된 바와 같이, CBP 인코딩 모듈 (250) 은 7-비트 코드 워드들을 CBP (1,1,0) 및 (1,1,1) 에 각각 할당하고 있는데, 이것들은 콘텍스트 1에 따라 최소 가능한 조합들일 수도 있다.
CBP = (L,U,V)
코딩된 블록 플래그들(CBF)
(U V Y)
유너리 코드워드
0 0 0 0000000
0 0 1 0000001
0 1 0 000001
0 1 1 0001
1 0 0 00001
1 0 1 001
1 1 0 01
1 1 1 1
표 2는 도 4를 참조하여 위에서 설명된 바와 같은 콘텍스트 3에 따라 인코딩 모듈 (250) 및/또는 디코딩 모듈 (351) 에 의해 이용/생성될 수도 있는 VLC 테이블의 하나의 예를 예시한다. 일 예의 표 2에 따르면, 인코딩 모듈 (250) 은 (Y,U,V) = (1,1,1) 의 CBP에 일 (1) 의 단일 비트 VLC 코드 워드를 할당했다. 인코딩 모듈 (250) 은 (Y,U,V) = (1,1,1) 의 CBP에 가장 짧은 코드 워스 길이를 할당할 수도 있는데, 콘텍스트 3에 기초하여, (1,1,1) 의 값이 현재 CU (401) 또는 블록 (410-413) 의 (Y,U,V) 성분들에 대한 가장 가능한 CBP일 수도 있기 때문이다. 인코딩 모듈은 또한 위에서 설명된 콘텍스트 1에 기초하여 두 번째로 가장 가능한 CBP일 수도 있는 CBP 값 (1,1,0) 에 2-비트 코드 워드를 할당하고 있다. 인코딩 모듈은 또한 3-비트 코드 워드를 CBP 값 (1,0,1) 에, 그리고 4-비트 코드 워드를 CBP 값 (0,1,1) 에 할당하고 있는데 이것들은 콘텍스트 3에 따라 3번째 및 4번째로 가장 가능한 조합들일 수도 있다. 또한 테이블 2에 예시된 바와 같이, 인코딩 모듈 (250) 은 7-비트 코드 워드들을 CBP (0,0,0) 및 (0,0,2) 에 각각 할당하고 있는데, 이것들은 콘텍스트 3에 따라 최소 가능한 조합들일 수도 있다.
위에서 설명된 예들에 따르면, 가변 길이 코드 테이블은 비디오 프레임의 하나 이상의 다른 CU들 또는 블록들에 의해 정의된 콘텍스트에 기초하여 액세스 및/또는 생성될 수도 있다. 위에서 설명된 바와 같이, 콘텍스트는 하나 이상의 이웃 CU들 (예컨대, 도 4에 예시된 것과 같은 CU (402, 403)) 또는 블록들이 영이 아닌 계수들을 포함하는지에 기초될 수도 있으며, 이는 이웃 블록 또는 단위에 대한 CBP에 기초하여 결정될 수도 있다.
다른 예들에 따르면, 이러한 콘텍스트는 다른 팩터들에 기초하여 결정될 수도 있다. 예를 들어, CBP 인코딩 모듈 (250) 및/또는 CBP 디코딩 모듈 (350) 은 이러한 콘텍스트를 다음 비 제한적인 인자들: 파티션 깊이, TU 사이즈, 및/또는 현재 CU 예측 모드, 이를테면 인트라 또는 인터 예측 (이것은 단방향 인터 예측 또는 양방향 인터 예측을 포함함) 중의 하나 이상에 기초하여 결정할 수도 있다. 이웃 CBP를 포함하여 이들 인자들은, 콘텍스트를 결정하기 위해 따로따로 또는 공동으로 이용될 수도 있다. 예를 들어, 콘텍스트는 TU의 사이즈, PU에 연관된 예측 모드, 또는 양자 모두에 기초하여 결정될 수도 있다. 다른 예에 따르면, 콘텍스트는 PU에 연관된 예측 모드 및/또는 TU의 변환 사이즈와 함께 하나 이상의 이웃 CU 또는 블록들 (예컨대, 도 4에 도시된 바와 같은 이웃 CU (402, 403)) 의 하나 이상의 CBP에 기초하여 결정될 수도 있다.
표 1 및 표 2에서 표시된 VLC 테이블들의 예는 본원에서 설명된 바와 같은 코딩 단위를 디코딩하기 위해 선택될 수도 있는 VLC 테이블들의 일부 예들일 뿐이다. 표 1 및 표 2의 예들에서, VLC 코드 워드들에는, 하나 이상의 이웃 CU가 영이 아닌 계수들을 포함하는지의 여부에 기초하여 현재 CU가 특정 CBP 값을 포함하는 가능성에 기초하여 다수의 비트들이 할당된다. 표 1 및 표 2의 일 예에서, CU의 각각의 Y, U, 및 V 성분들에 대한 가장 가능한 CBP에는 단일 비트가 할당되며, 두 번째로 가장 가능한 조합에는 2개의 비트들이 할당되며, 세 번째로 가장 가능한 조합에는 3개의 비트들이 할당되는 등으로 된다. 이러한 VLC 테이블은 유니터리 (unitary) VLC 테이블이라고 지칭될 수도 있다. 다른 예들에 따르면, 본원에서 설명된 바와 같은 VLC 테이블은 유니터리가 아닐 수도 있다. 대신에, VLC 테이블에서의 하나를 초과하는 코드 워드가 동일한 수의 비트들을 공유할 수도 있다. 예를 들어, 가장 가능한 CBP에는 2개의 비트들이 할당될 수도 있고, 제 2, 제 3, 및 제 4 번째로 가장 가능한 조합에는 3개의 비트들이 할당될 수도 있다. 제 5, 제 6 및 제 7 번째로 가장 가능한 조합에는 4개의 비트들이 할당될 수도 있다.
위에서 설명된 바와 같이, 일부 예들에서, 코덱 (예컨대, 인코더, 디코더) 은 코드 워드 및 CBP 값 사이에 상이한 매핑을 갖는 복수의 VLC 테이블들 중에서 선택되도록 구성될 수도 있다. 일부 예들에서, 특정 CU를 코딩하기 위한 VLC 테이블은 CU의 사이즈, CU의 예측 모드 (예컨대, 인트라, 인터 코딩), CU의 콘텍스트 및/또는 다른 인자에 기초하여 선택될 수도 있다. 표 1 및 표 2에서 표시된 예들에 따르면, VLC 코드 워드들은 그것들의 우도에 따라 상이한 CBP 값들에 할당된다. 더 짧은 VLC 코드 워드들은 더 가능하게 일어날 수도 있는 그러한 CBP 값들에 할당된다.
일부 예들에서, 블록에 대한 VLC 테이블은 이미 코딩된 CU들에서 각각의 CBP 값들의 상대적인 가능성에 따라 인코딩 또는 디코딩 프로세스 동안 재순서화될 수도 있다. 이 예에 따르면, 코더는 인덱스 테이블 (코드 워드 인덱스 매핑 테이블) 에 액세스하여 VLC 코드 워드 및 CBP 값 사이의 매핑을 결정할 수도 있다. 예를 들어, 이러한 매핑은, CU에 대해 이용될 수도 있는 복수의 VLC 테이블들에 대해, CBP 값을 특정 코드 워드에 매핑하는 테이블들의 각각 내에서 상대 인덱스를 정의할 수도 있다. 이들 예들에 따르면, 인코더는 이러한 인덱스 테이블에 액세스하여 CU에 대한 CBP를 나타내는 코드 워드를 결정할 수도 있다. 또한 이들 예들에 따르면, 디코더는 이러한 인덱스 테이블에 액세스하여 특정 코드 워드가 CBP 값에 매핑되는 하나 이상의 VLC 테이블들 내에서 인덱스를 결정할 수도 있다.
일부 예들에서, 설명된 바와 같은 인덱스 테이블에 의해 정의되는 매핑은 위에서 설명된 바와 같은 콘텍스트에 적응적 및/또는 의존적일 수도 있다. 인덱스 테이블에 의해 정의된 매핑은, 선택된 VLC 테이블과 함께, CU에 대한 CBP를 코딩하는데 이용될 수도 있다.
도 5는 4개의 1/4 사이즈의 루마 블록들 (511-514) 로 분할되는 CU (501) 의 일 예를 도시하는 개념도이다. 이 개시물의 하나의 양태에 따르면, CU (501) 의 블록들의 특정 비디오 성분에 대응하는 CBP는 함께 그룹화되고 단일 VLC 코드 워드로서 시그널링될 수도 있다. 예를 들어, 도 5의 일 예에 따르면, 코더는 블록들 (511-514) 의 각각이 영이 아닌 루마 (Y) 계수들을 포함하는지의 여부를 결정할 수도 있다. 이 예에 따르면, 코더는, 블록들 (511-514) 의 각각에 대해, 그 블록이 영이 아닌 루마 계수들을 포함하는지의 여부를 나타내는 CBF를 포함하는 4-비트 CBP 값을 생성할 수도 있다. 이러한 4-비트 값은 VLC 테이블의 단일 VLC 코드 워드로 매핑되고 그를 이용하여 시그널링될 수도 있다.
일부 예들에서, 도 5에 도시된 바와 같은 루마 블록들 (511-514) 은 각각이 연관된 크로마 성분들을 포함할 수도 있다. 이들 예들에 따르면, 코더는 또한 블록들 (511-514) 의 각각에 연관된 크로마 (U, V) 성분들이 어느 영이 아닌 계수들을 포함하는지의 여부를 결정할 수도 있다. 하나의 예에 따르면, 코더는 블록들 (511-514) 의 각각에 대해, 각각의 U 및 V 크로마 성분들이 집합적으로 영이 아닌 계수들을 포함하는지의 여부를 나타내는 CBF를 포함하는 4 비트 CBP를 생성할 수도 있다. 다른 예들에 따르면, 코더는 개개의 U 및 V 성분 각각에 대한 CBF를 포함하는 2개의 4 비트 (또는 단일 8 비트) CBP를 생성할 수도 있다.
일부 예들에서, 코더는 도 5에 도시된 4개의 루마 블록들 (511-514) 에 대한 각각의 CBF를 포함하는 CBP를 나타내는 단일 VLC 코드 워드만을 시그널링할 수도 있다. 다른 예들에서, 코더는 또한 루마 블록들 (511-514) 에 연관된 크로마 성분들에 대한 각각의 CBF를 포함하는 CBP를 나타내는 분리된 단일 VLC 코드 워드를 시그널링할 수도 있다. 다른 예들에 따르면, 복수의 루마 블록들에 대한 CBP 및 복수의 연관된 크로마 (U,V) 에 대한 CBP는 단일 VLC 코드 워드로서 조합되어 시그널링될 수도 있다.
일부 예들에서, 코더는 CU의 Y, U, 및 V 성분들에 관하여 위에서 설명된 바와 같은 하나 이상의 콘텍스트들에 기초하여, CU (501) 의 블록들 (511-514) 에 대한 그룹화된 4-비트 CBP 값들 및 VLC 코드 워드 사이의 매핑을 나타내는 하나 이상의 인덱스 테이블들을 결정할 수도 있다. 예를 들어, 코더는 하나 이상의 CU, 또는 CU의 특정 블록들이 영이 아닌 계수들을 포함하는지의 여부에 기초하여 인덱스 테이블을 결정할 수도 있다. 예를 들어, 도 5에 도시된 바와 같이, 상부 블록 (502), 왼쪽 블록 (503) 만이 영의 값의 계수들을 포함한다면, 4개의 블록들의 각각에 대한 영의 CBF 값을 나타내는 그룹화된 4-비트 CBP 값 (예컨대, (B511, B512, B513, B514) = (0,0,0,0)) 은 가장 짧은 VLC 코드 워드에 매핑될 수 있는 반면, 각각의 블록에 대한 1의 코딩된 블록 플래그 값을 나타내는 그룹화된 4-비트 CBP 값 (예컨대, B511, B512, B513, B514) = (1,1,1,1) 은 더 긴 VLC 코드 워드에 매핑될 수도 있다.
위에서 설명된 바와 같은 단일 VLC 코드 워드와 함께 그룹화되는 CU (501) 의 블록들 (511-514) 의 특정 비디오 성분 (예컨대, 루마, 크로마 성분들) 에 대한 CBP를 시그널링하는 것은 코딩 효율을 개선시킬 수도 있다. 예를 들어, 블록들에 대한 CBP를 단일 VLC 코드 워드로서 시그널링함으로써, CBP를 시그널링하는데 필요한 데이터량 (예컨대, 비트들의 수) 은 감소될 수도 있다.
위에서 논의된 바와 같이, 일부 예들에서 VLC 테이블은 하나 이상의 인자들에 기초하여 복수의 VLC 테이블들 중에서 선택될 수도 있다. 일부 예들에서, 인터 코딩된 루마 블록들에 대한 CBP의 값들은 인트라 코딩된 루마 블록들에 대한 것보다 더 무작위 (random) 일 수도 있다. 그러므로 CU의 콘텍스트에 기초하여 상이한 VLC 테이블들을 이용하는 것은 인트라 코딩된 CU의 루마 블록들에 대한 것만큼 인터 코딩된 CU의 루마 블록들에 대해서는 효과적이지 않다. 본원에서 설명된 기법들에 일치하는 하나의 예에 따르면, CBP 값을 코딩하기 위해, 복수의 VLC 테이블들 중의 VLC 테이블이 인트라 코딩된 CU의 루마 블록들을 위해 선택될 수도 있는 반면, 단일 VLC 테이블은 인터 코딩된 CU의 콘텍스트에 무관하게, 인터 코딩된 CU의 루마 블록들에 대해 이용될 수도 있다.
크로마 블록들에 대해, 현재 블록의 예측 모드 (즉 인트라 또는 인터) 에 무관하게, 그것들의 코딩된 블록 플래그들은 인터 코딩된 루마 블록들을 위한 코딩된 블록 플래그들와 유사한 특성들을 가진다. 다르게 말하면, 그것들의 값들은 더 랜덤할 수도 있다. 그러므로 동일한 이유로, 크로마 블록들에 대한 코딩된 블록 플래그들은 인터 코딩된 블록의 루마 블록들에 대한 것과 유사하게 코딩될 수도 있다. 더 구체적으로는, 현재 블록의 예측 모드에 무관하게, 크로마 블록들에 대한 CBP는 단일 VLC 테이블을 이용하여 코딩될 수도 있다.
위에서 설명된 바와 같이, 인덱스 테이블은 사용되는 VLC 테이블에 무관하게 콘텍스트에 기초하여 선택될 수도 있다. 이 예에 따르면, 코드 워드들 및 CBP 값들 사이에 매핑을 제공하는 복수의 인덱스 테이블들의 인덱스 테이블은 CU의 콘텍스트에 기초하여 현재 CU를 코딩하도록 선택될 수도 있다. 위에서 언급된 바와 같이, CBP 값을 코딩하기 위해, 복수의 VLC 테이블들 중의 VLC 테이블이 인트라 코딩된 CU를 위해 선택될 수도 있는 반면, 단일 VLC 테이블이 인터 코딩된 CU의 콘텍스트에 무관하게, 인터 코딩된 CU를 위해 이용될 수도 있다.
위에서 설명된 바와 같이, 이 개시물의 기법들은 상이한 변환 사이즈들을 허용하는 코딩 기법들을 다룰 수도 있다. 위에서 언급된 바와 같이, 일부 예들에서 CU는 변환 동작들 (예컨대, 위에서 설명된 바처럼 TU) 또는 예측 동작들 (예컨대, PU) 을 위해 더 작은 블록들로 분할될 수도 있다.
일부 예들에서, 인코더는 CU 또는 TU에 대한 변환 인덱스를 시그널링할 수도 있다. 변환 인덱스는 CU 또는 TU의 사이즈에 대응하는 변환을 코더가 결정할 수 있도록 CU 또는 TU의 사이즈를 나타낼 수도 있다. 일부 예들에서, 변환 인덱스는 CU의 각각의 휘도 (Y) 및 색차 (U 및 V) 성분들에 대해 개별적으로 시그널링될 수도 있다. 다른 예들에서, 코더는, 예컨대 복수의 블록들 중에 공유되는 사이즈를 나타내는 단일 값을 이용하여, CU의 복수의 블록들의 사이즈를 집합적으로 시그널링할 수도 있다.
이 개시물의 다른 양태에 따르면, 위에서 설명된 바와 같은 하나 이상의 변환 인덱스들은 CU 또는 블록의 CBP 값에 기초하여 시그널링될 수도 있거나 또는 되지 않을 수도 있다. 예를 들어, 코더는 CU가 영의 값 계수들만을 포함한다면, CU의 각각의 블록들 (예컨대, 각각의 Y, U, 및 V 성분들) 에 대한 변환 인덱스를 시그널링하지 않을 수도 있다. 예를 들어, CU가 영의 값 계수들만을 포함한다는 것을 CU에 대한 CBP가 나타낸다면, 코더는 CU에 대한 변환 인덱스를 시그널링하지 않을 수도 있다. 그러나, CU가 영이 아닌 계수들을 포함한다는 것을 CU에 대한 CBP가 나타낸다면, 코더는 CU에 대한 변환 인덱스를 시그널링할 수도 있다.
위에서 설명된 바와 같이, CU의 CBP는 VLC 기법들에 따라 시그널링될 수도 있다. 이 개시물의 다른 양태들에 따르면, CU의 예측 유닛 (PU) 의 예측 모드는 VLC 기법들을 이용하여 시그널링될 수도 있다. 일부 예들에서, 코더는 PU의 사이즈에 기초하여 PU를 이용하여 예측 동작들을 수행할 수도 있다. 일부 예들에서, 코더는 PU에 대한 예측 모드를 시그널링할 수도 있다. 예측 모드는 PU에 적용될 예측의 사이즈 및/또는 유형을 식별할 수도 있다. 예를 들어, 예측 모드는 PU가 인트라-16x16임을 나타낼 수도 있으며, 인트라-16x16은 PU가 인트라 예측 (예컨대, I-모드) 을 이용하여 코딩됨과 그 PU가 16x16의 사이즈를 가짐을 나타낼 수도 있다. 다른 예로서, 예측 모드는 PU가 인터-8x8임을 나타낼 수도 있으며, 인터-8x8은 PU가 인터-예측 (예컨대, P-모드 또는 B-모드) 을 이용하여 코딩됨과 그 PU가 8x8의 사이즈를 가짐을 나타낼 수도 있다.
일부 예들에서, 위에서 설명된 바와 같은 예측 모드는 VLC 기법들을 이용하여 시그널링될 수도 있다. 예를 들어, 특정 예측 모드는 예측 모드 및 VLC 코드 워드 사이의 매핑을 정의하는 매핑 테이블에 기초하여 코드 워드에 매핑될 수도 있다. 이러한 매핑 테이블은 가장 가능성 있는 예측 모드에 가장 짧은 VLC 코드 워드가 할당되도록 구성될 수도 있다. 따라서, 복수의 블록들에 대한 예측 모드들을 통신하기 위한 데이터의 양은 최소화될 수도 있다.
일부 예들에서, CU (또는 CU의 하나 이상의 PU) 에 대한 예측 모드와 VLC 코드 워드 사이의 매핑을 나타내는 매핑 테이블은 적응적으로 생성될 수도 있다. 예를 들어, 비디오 프레임의 CU가 인코딩됨에 따라, 인코더는 각각의 예측 모드의 발생 빈도 (frequency) 에 기초하여 예측 모드들을 나타내는 하나 이상의 VLC 테이블들의 코드 워드들을 적응시킬 수도 있다. 예를 들어, 예측 모드가 미리 코딩된 CU들 또는 블록들에 대한 다른 예측 모드들 보다 더 빈번하게 발생한다고 결정되면, 그 예측 모드에는 다른 예측 모드들 보다 더 짧은 VLC 코드 워드가 할당될 수도 있다.
이 개시물의 하나의 양태에 따르면, 인터 코딩되는 프레임, 예컨대 B 또는 P 프레임을 코딩하기 위해, 코더는 이러한 프레임에서 하나 이상의 인트라 코딩되는 예측 모드들에 전용 코드 워드들을 할당할 수도 있다. 이 예에 따르면, 인터 코딩되는 프레임의 CU가 코딩됨에 따라, 코더는 인터-코딩된 또는 다른 예측 모드들에 대응하지만 인트라 코딩되는 예측 모드들에 대응하지 않는 VLC 코드 워드들을 적응적으로 할당할 수도 있다. 이들 기법들에 따르면, 코딩 효율은 계산 복잡도를 줄임으로써 개선될 수도 있다.
도 6은 이 개시물의 기법들에 일치하는 비디오 인코더 (200) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 6에 도시된 바처럼, 비디오 인코더 (200) 는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 코딩 단위 (예컨대, 도 4에 예시된 CU (401)) 를 수신한다 (601). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 결정한다 (602). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 서로 독립적인 어느 영이 아닌 계수들을 포함하는지의 여부를 집합적으로 나타내는, CU에 대한 코딩된 블록 패턴 (CBP) 을 생성한다 (603). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 CU에 대한 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑한다 (604). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 단일 VLC 코드 워드를 출력한다 (605). 단일 VLC 코드 워드는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 어느 영이 아닌 계수들을 포함하는지의 여부를 디코더에 식별시킬 수도 있다.
도 7은 이 개시물의 기법들에 일치하는 비디오 디코더 (300) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 7에 보인 바와 같이, 비디오 디코더 (300) (예컨대, CBP 디코딩 모듈 (350)) 은 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 코딩 단위 (CU) 에 대한 가변 길이 코드 (VLC) 코드 워드를 수신한다 (701). 비디오 디코더 (300) (예컨대, CBP 디코딩 모듈 (350)) 는 VLC 코드 워드에 기초하여, CU에 대한 코딩된 블록 패턴 (CBP) 을 결정한다 (702). CU에 대한 CBP는 루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타낸다. 비디오 디코더 (300) 는 결정된 CBP에 기초하여 CU를 디코딩한다 (603). 예를 들어 비디오 디코더 (300) 는 각각의 성분이 영이 아닌 계수를 포함함을 CBP가 나타내는지의 여부에 기초하여, 루마 성분 (Y), 제 1 크로마 성분 (U), 및/또는 제 2 크로마 성분 (V) 중의 하나의 상의 성분의 변환 계수들을 디코딩할지의 여부를 결정할 수도 있다.
도 8은 이 개시물의 기법들에 일치하는 비디오 인코더 (200) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 8에 도시된 바와 같이, 비디오 인코더 (200) 는 복수의 블록들을 포함하는 비디오 데이터의 코딩 단위 (예컨대, 도 4 및 5에 각각 예시된 CU (501)) 를 수신한다 (801). 예를 들어, CU는 도 5에 도시된 바와 같은 네 개의 동등한 사이즈로 된 블록들로 분할될 수도 있다. 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 은, 복수의 블록들의 각각의 블록에 대해, 각각의 블록이 영이 아닌 계수를 포함하는지를 결정한다 (802). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 CU의 각각의 비디오 성분에 대해, 복수의 블록들의 개개의 블록들 각각이 영이 아닌 계수를 포함하는지의 여부를 비디오 성분에 대해 (예컨대, 복수의 CBF를 통해) 나타내는 코딩된 블록 패턴 (CBP) 을 생성한다 (803). 비디오 인코더 (200) (예컨대, CBP 인코딩 모듈 (250)) 는 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑한다 (804). 비디오 인코더 (200) 는 각각의 비디오 성분에 대해 단일 VLC 코드 워드를 출력한다 (805). 단일 VLC 코드 워드는 복수의 블록들 중의 각각의 블록이 영이 아닌 계수를 포함하는지의 여부를 CU의 비디오 성분에 대해 디코더에 식별시킨다.
도 9는 이 개시물의 기법들에 일치하는 비디오 디코더 (300) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 9에 도시된 바처럼, 비디오 디코더 (300) (예컨대, CBP 디코딩 모듈 (350)) 는 복수의 블록들을 포함하는 비디오 데이터의 코딩 단위 (CU) 의 비디오 성분에 대한 가변 길이 코드 (VLC) 코드 워드를 수신한다 (901). 비디오 디코더 (300) (예컨대, CBP 디코딩 모듈 (350)) 는 수신된 VLC 코드 워드에 기초하여, CU의 비디오 성분에 대한 코딩된 블록 패턴 (CBP) 을 결정한다 (902). 예를 들어, 비디오 디코더 (300) 는 하나 이상의 VLC 테이블들에 액세스하여 VLC 코드 워드를 CU에 대한 CBP에 매핑시킬 수도 있다. 비디오 디코더 (300) (예컨대, CBP 디코딩 모듈 (350)) 는 CBP에 기초하여, CU의 비디오 성분의 복수의 블록들의 각각이 영이 아닌 계수를 포함하는지의 여부를 결정한다 (903). 비디오 디코더 (300) 는 CU의 복수의 블록들 중 각각이 영이 아닌 계수를 포함하는지의 여부에 기초하여 CU를 디코딩한다 (904). 예를 들어, 복수의 블록들 중의 특정 블록이 영이 아닌 계수를 포함함을 CU에 대한 CBP가 나타내면, 비디오 디코더는 그 특정 블록의 변환 계수를 디코딩할 수도 있다. 그러나, 그 CBP가 특정 블록이 영이 아닌 계수를 포함하지 않음을 나타내면, 비디오 디코더 (300) 는 블록을 디코딩하지 않을 수도 있다.
도 10은 이 개시물의 기법들에 일치하는 비디오 인코더 (200) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 10에 보인 바와 같이, 비디오 인코더 (200) 는 비디오 데이터 (1001) 의 CU (예컨대, 도 4 및 5에 각각 예시된 CU (401, 501)) 를 수신한다. 도 10의 일 예에 따르면, 비디오 인코더 (200) 는 코딩중인 CU의 예측 모드에 기초하여 VLC 테이블을 적응적으로 수정할 수도 있거나 또는 하지 않을 수도 있다. 예를 들어, 비디오 인코더 (200) 는 CU에 대한 예측 모드가 인터 예측 모드인지를 결정할수도 있다 (1002). 예측 모드가 인터 예측 모드를 포함한다면, 비디오 인코더 (200) 는 적어도 하나의 VLC 코드 워드 및 적어도 하나의 연관된 예측 모드 값들 사이의 매핑을 적응적으로 업데이트할 수도 있다 (1003). 예를 들어, 비디오 인코더 (200) 는 예측 모드를 나타내는 VLC 코드 워드를 수정할 수도 있다. 하나의 예로서, 비디오 인코더 (200) 는 CU의 예측 모드를 나타내기 위해 다른 비트 길이를 갖는 VLC 코드 워드를 이용할 수도 있다.
CU가 인터 예측 모드를 포함하지 않으면 (예컨대, 인트라 예측 모드), 비디오 인코더 (200) 는 동일한 VLC 테이블에서의 전용 코드 워드를 이용하여 예측 모드를 나타낸다 (1004). 예를 들어, 비디오 디코더는 1003에서 도시된 예측 모드에 연관된 VLC 코드 워드를 적응적으로 업데이트하지 않을 수도 있다. 대신에, 비디오 인코더 (200) 는 예측 모드를 나타내기 위해 VLC 테이블에서의 특정 VLC 코드 워드 (예컨대, 동일 비트 길이) 를 할당하고 유지할 수도 있다.
도 11은 이 개시물의 기법들에 일치하는 비디오 디코더 (300) 에 의해 수행될 수도 있는 기법의 하나의 예를 예시하는 흐름도이다. 도 11에 보인 바와 같이, 비디오 디코더 (300) 는 비디오 데이터의 코딩 단위 (CU) 를 수신한다 (1101). 비디오 디코더 (300) 는 CU의 예측 모드를 디코딩한다 (1102). CU의 디코딩된 예측 모드가 인터 예측 모드를 포함하면, 비디오 디코더 (300) 는 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드에 대한 매핑을 업데이트한다 (1103). 그러나, CU의 디코딩된 예측 모드가 인트라 예측 모드를 포함하면, 비디오 디코더 (300) 는 예측 모드를 나타내는 VLC 코드 워드의 매핑에 대한 어떠한 업데이트도 수행하지 않는다 (1104).
도 12a 및 도 12b는 일 예의 사지 트리 (750) 및 대응하는 최고 CU (772) 를 예시하는 개념도들이다. 도 12a는 계층적 형태로 배열된 노드들을 포함하는 일 예의 사지 트리 (750) 를 도시한다. 사지 트리, 이를테면 사지 트리 (750) 에서의 각각의 노드는, 자식이 없는 잎 노드 (leaf node) 일 수도 있거나, 또는 4개의 자식 노드 (child node) 들을 가질 수도 있다. 도 12a의 일 예에서, 사지 트리 (750) 는 루트 노드 (752) 를 포함한다. 루트 노드 (752) 는 잎 노드들 (756A-756C) (잎 노드들 (756)) 과 노드 (754) 를 포함한 4개의 자식 노드들을 가진다. 노드 (754) 가 잎 노드가 아니기 때문에, 노드 (754) 는 이 예에서는 잎 노드들 (758A-758D) (잎 노드들 (758)) 인 4개의 자식 노드들을 포함한다.
사지 트리 (750) 는 대응하는 최대 CU (LCU), 이를테면 이 예에서 LCU (772) 의 특성들을 서술하는 데이터를 포함할 수도 있다. 예를 들어, 사지 트리 (750) 는, 그것의 구조에 의해, LCU의 서브-CU들로의 분할을 서술할 수도 있다. LCU (772) 가 2Nx2N의 사이즈를 가진다고 가정한다. LCU (772) 는, 도 12b의 일 예에서 도시된 바와 같이, 각각 사이즈 NxN인 4개의 서브-CU들 (776A-776C) (서브-CU들 (776)) 및 (774)) 를 가진다. 서브-CU (774) 는 또한 각각 사이즈 N/2xN/2인 4개의 서브-CU들 (778A-778D (서브-CU들 (778)) 로 분할된다. 사지 트리 (750) 의 구조는 이 예에서 LCU (772) 의 분할에 대응한다. 다시 말하면, 루트 노드 (752) 는 LCU (772) 에 대응하며, 잎 노드들 (756) 은 서브-CU들 (776) 에 대응하며, 노드 (754) 는 서브-CU (774) 에 대응하고, 잎 노드들 (758) 은 서브-CU들 (778) 에 대응한다.
사지 트리 (750) 의 노드들에 대한 데이터는 노드들에 대응하는 CU가 분할되는지를 서술할 수도 있다. CU가 분할된다면, 4개의 부가적인 노드들이 사지 트리 (750) 에 존재할 수도 있다. 사지 트리의 노드들은 대응하는 CU가 분할되는지의 표시자 (indicator), 이를테면 split_flag 값을 포함할 수도 있다. split_flag 값은 현재 노드에 대응하는 CU가 분할되는지를 나타내는 1-비트 값일 수도 있다. CU가 분할되지 않으면, split_flag 값은 '0'일 수도 있는 반면, CU가 분할된다면, split_flag 값은 '1'일 수도 있다. 사지 트리 (750) 의 일 예에 관해, 분할 플래그 값들의 어레이의 일 예는 루트 노드로부터 잎 노드로 레벨 단위로 진행하는 "1,0100,0000"이다.
설명된 바와 같이, 이 개시물의 다양한 기법들은 특정 머신들을 포함할 수도 있는 비디오 인코더에 의해 또는 비디오 디코더에 의해 수행될 수도 있다. 이 개시내용의 비디오 인코더들 및 디코더들은 무선 핸드셋, 및 집적회로 (IC) 또는 IC들의 세트 (예컨대, 칩 셋) 를 포함하여, 매우 다양한 디바이스들 또는 장치들에서 사용되거나 또는 개발될 수도 있다. 임의의 구성요소들, 모듈들 또는 유닛들은 기능적 양태들을 강조하는 것을 전제로 설명되었고, 상이한 하드웨어 유닛에 의한 실현을 필연적으로 요구하지 않는다.
따라서, 본원에서 설명된 기법들은 하드웨어, 소프트웨어, 펌웨어, 또는 이것들의 임의의 조합으로 구현될 수도 있다. 모듈들 또는 구성요소들로서 설명되는 임의의 특징부들은 통합형 로직 디바이스에 함께 또는 이산으로서 분리하여 하지만 상호동작가능한 로직 디바이스들로서 별개로 구현될 수도 있다. 소프트웨어로 구현된다면, 이 기법들은 적어도 부분적으로는, 실행될 때 위에서 설명된 방법들 중의 하나 이상을 수행하는 명령들을 포함하는 유형의 컴퓨터 판독가능 저장 매체에 의해 실현될 수도 있다. 유형의 컴퓨터 판독가능 데이터 저장 매체는 패키징 자료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 부분을 형성할 수도 있다.
유형의 컴퓨터 판독가능 저장 매체는 RAM (random access memory), 이를테면 SDRAM (synchronous dynamic random access memory), ROM (read-only memory), NVRAM (non-volatile random access memory), EEPROM (electrically erasable programmable read-only memory), 플래시 메모리, 자기 또는 광 데이터 저장 매체 등을 포함할 수 있다. 이 기법들은 부가하여, 또는 대신에, 컴퓨터에 의해 액세스, 판독, 및/또는 실행될 수 있는 명령들 또는 데이터 구조들의 형태로 코드를 운반하거나 통신하는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수 있다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 기타 동등한 집적 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에서 사용된 용어 "프로세서"는 앞서의 구조 또는 본원에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중의 어느 것을 말할 수 있다. 덧붙여서, 일부 양태들에서, 본원에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에 제공될 수도 있거나, 또는 결합형 비디오 인코더-디코더 (CODEC) 에 통합될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 요소들 내에 완전히 구현될 수 있다.
이 개시물의 다양한 양태들이 설명되었다. 이들 및 다른 양태들은 다음의 청구항들의 범위 내에 있다.

Claims (120)

  1. 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법으로서,
    휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하는 단계;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 단계;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 단계;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계; 및
    상기 단일 VLC 코드 워드를 출력하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 단계는 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 단계는 상기 단일 VLC 코드 워드에 값을 할당하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 단일 VLC 코드 워드에 값을 할당하는 단계는 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 할당하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  6. 제 4 항에 있어서,
    상기 콘텍스트에 기초하여 단일 VLC 코드 워드에 값을 할당하는 단계는 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지의 여부에 기초하여 할당하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  7. 제 4 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 단일 VLC 코드 워드에 값을 할당하는 단계는,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 할당하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  8. 제 4 항에 있어서,
    상기 단일 VLC 코드 워드에 값을 할당하는 단계는 상기 단일 VLC 코드 워드에 비트 길이를 할당하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 VLC 코드 워드를 출력하는 단계는 디코더에 출력하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하는 단계;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하는 단계; 및
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 적어도 하나가 적어도 하나의 영이 아닌 변환 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하는 단계; 및
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 어느 것도 적어도 하나의 영이 아닌 변환 계수를 포함하지 않는다면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  12. 비디오 데이터를 인코딩하는 장치로서,
    휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하고 상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 비디오 인코더;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하며, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 상기 단일 VLC 코드 워드를 출력하는 CBP 모듈을 포함하는, 비디오 데이터를 인코딩하는 장치.
  13. 제 12 항에 있어서,
    상기 CBP 모듈은 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 것을 통해, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑시키는, 비디오 데이터를 인코딩하는 장치.
  14. 제 12 항에 있어서,
    상기 CBP 모듈은 상기 단일 VLC 코드 워드에 값을 할당하는 것을 통해, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑시키는, 비디오 데이터를 인코딩하는 장치.
  15. 제 14 항에 있어서,
    상기 CBP 모듈은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 상기 단일 VLC 코드 워드에 값을 할당하는, 비디오 데이터를 인코딩하는 장치.
  16. 제 15 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 비디오 데이터를 인코딩하는 장치.
  17. 제 15 항에 있어서,
    상기 CBP 모듈은 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지의 여부에 기초하여 값을 할당하는 것을 통해, 상기 적어도 하나의 미리 코딩된 CU에 의해 정의된 콘텍스트에 기초하여 상기 단일 VLC 코드 워드를 할당하는, 비디오 데이터를 인코딩하는 장치.
  18. 제 15 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 CBP 모듈은,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 상기 단일 VLC 코드 워드에 값을 할당하는, 비디오 데이터를 인코딩하는 장치.
  19. 제 15 항에 있어서,
    상기 CBP 모듈은 상기 단일 VLC 코드 워드에 비트 길이를 할당함으로써 상기 단일 VLC 코드 워드에 값을 할당하는, 비디오 데이터를 인코딩하는 장치.
  20. 제 12 항에 있어서,
    상기 CBP 모듈은 상기 VLC 코드 워드를 디코더에 출력하는, 비디오 데이터를 인코딩하는 장치.
  21. 제 12 항에 있어서,
    상기 비디오 인코더는 또한,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  22. 제 12 항에 있어서,
    상기 비디오 인코더는 또한,
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 적어도 하나가 적어도 하나의 영이 아닌 변환 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하며; 그리고
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 어느 것도 적어도 하나의 영이 아닌 변환 계수를 포함하지 않는다면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  23. 비디오 데이터를 인코딩하는 디바이스로서,
    휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 CU를 수신하는 비디오 데이터를 인코딩하는 수단;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 수단;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 수단;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 수단; 및
    상기 단일 VLC 코드 워드를 출력하는 수단을 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  24. 제 23 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 수단은 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 수단을 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  25. 제 23 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 수단은 상기 단일 VLC 코드 워드에 값을 할당하는 수단을 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  26. 제 23 항에 있어서,
    상기 단일 VLC 코드 워드에 값을 할당하는 수단은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 상기 단일 VLC 코드 워드에 값을 할당하는, 비디오 데이터를 인코딩하는 디바이스.
  27. 제 25 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  28. 제 26 항에 있어서,
    상기 단일 VLC 코드 워드에 값을 할당하는 수단은 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지의 여부에 기초하여 값을 할당하는, 비디오 데이터를 인코딩하는 디바이스.
  29. 제 26 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 단일 VLC 코드 워드에 값을 할당하는 수단은,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 상기 값을 할당하는, 비디오 데이터를 인코딩하는 디바이스.
  30. 제 26 항에 있어서,
    상기 단일 VLC 코드 워드에 값을 할당하는 수단은 상기 단일 VLC 코드 워드에 비트 길이를 할당하는, 비디오 데이터를 인코딩하는 디바이스.
  31. 제 23 항에 있어서,
    상기 VLC 코드 워드를 출력하는 수단은 상기 VLC 코드 워드를 디코더에 출력하는, 비디오 데이터를 인코딩하는 디바이스.
  32. 제 23 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하고, 상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하고, 상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  33. 제 23 항에 있어서,
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 적어도 하나가 적어도 하나의 영이 아닌 변환 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하고,
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 어느 것도 적어도 하나의 영이 아닌 변환 계수를 포함하지 않는다면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 디바이스.
  34. 프로세서에서의 실행 시, 상기 프로세서로 하여금 비디오 데이터를 인코딩하도록 하는 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 상기 프로세서로 하여금,
    휘도 성분 (Y), 제 1 색차 성분 (U), 및 제 2 색차 성분 (V) 을 포함하는 비디오 데이터의 코딩 단위 (CU) 를 수신하며;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하며;
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 (V) 의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 집합적으로 나타내는 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하며;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하며; 그리고
    상기 단일 VLC 코드 워드를 출력하도록 하는, 컴퓨터 판독가능 저장 매체.
  35. 제 34 항에 있어서,
    상기 명령들은, 상기 컴퓨팅 디바이스로 하여금, 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 것을 통해, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑하도록 하는, 컴퓨터 판독가능 저장 매체.
  36. 제 34 항에 있어서,
    상기 명령들은, 상기 컴퓨팅 디바이스로 하여금, 상기 단일 VLC 코드 워드에 값을 할당하는 것을 통해, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑하도록 하는, 컴퓨터 판독가능 저장 매체.
  37. 제 36 항에 있어서,
    상기 명령들은, 상기 컴퓨팅 디바이스로 하여금, 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여, 상기 단일 VLC 코드 워드에 값을 할당하도록 하는, 컴퓨터 판독가능 저장 매체.
  38. 제 37 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 컴퓨터 판독가능 저장 매체.
  39. 제 37 항에 있어서,
    상기 명령들은, 상기 컴퓨팅 디바이스로 하여금, 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지에 기초하여, 상기 단일 VLC 코드 워드에 상기 값을 할당하도록 하는, 컴퓨터 판독가능 저장 매체.
  40. 제 37 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 명령들은, 상기 컴퓨팅 디바이스로 하여금,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여, 상기 단일 VLC 코드 워드에 상기 값을 할당하도록 하는, 컴퓨터 판독가능 저장 매체.
  41. 제 37 항에 있어서,
    상기 명령들은, 상기 컴퓨팅 디바이스로 하여금, 상기 단일 VLC 코드 워드에 비트 길이를 할당하는 것을 통해, 상기 단일 VLC 코드 워드에 상기 값을 할당하도록 하는, 컴퓨터 판독가능 저장 매체.
  42. 제 34 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금 상기 VLC 코드 워드를 디코더에 출력하도록 하는, 컴퓨터 판독가능 저장 매체.
  43. 제 34 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 하는, 컴퓨터 판독가능 저장 매체.
  44. 제 34 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 적어도 하나가 적어도 하나의 영이 아닌 변환 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하며; 그리고
    상기 휘도 성분 (Y), 상기 제 1 색차 성분 (U), 및 상기 제 2 색차 성분 중 어느 것도 적어도 하나의 영이 아닌 변환 계수를 포함하지 않는다면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않도록 하는, 컴퓨터 판독가능 저장 매체.
  45. 비디오 데이터의 CU를 디코딩하는 방법으로서,
    루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 단계;
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 단계로서, 상기 CBP는 상기 루마 성분 (Y), 상기 제 1 크로마 성분 (U), 및 상기 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타내는, 상기 결정하는 단계; 및
    상기 결정된 CBP를 이용하여 상기 CU를 디코딩하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  46. 제 45 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 단계는 VLC 코드 테이블을 이용하여 상기 단일 VLC 코드 워드를 상기 CBP에 매핑하는 것에 기초하여 결정하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  47. 제 46 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 단계는 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 결정하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  48. 제 46 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  49. 제 46 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 단계는 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지에 기초한 콘텍스트에 기초하여 결정하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  50. 제 46 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 단계는,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 결정하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  51. 제 46 항에 있어서,
    상기 단일 VLC 코드 워드를 수신하는 단계는 인코더로부터 수신하는 단계를 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  52. 제 46 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하는 단계;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하는 단계; 및
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 단계를 더 포함하는, 비디오 데이터의 CU를 디코딩하는 방법.
  53. 비디오 데이터를 디코딩하는 장치로서,
    루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 비디오 디코더; 및
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 CBP 디코딩 모듈로서, 상기 CBP는 상기 루마 성분 (Y), 상기 제 1 크로마 성분 (U), 및 상기 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타내는, 상기 CBP 디코딩 모듈을 포함하며,
    상기 비디오 디코더는 상기 결정된 CBP를 이용하여 상기 CU를 디코딩하는, 비디오 데이터를 디코딩하는 장치.
  54. 제 53 항에 있어서,
    상기 CBP 디코딩 모듈은 VLC 코드 테이블을 이용하여 상기 단일 VLC 코드 워드를 상기 CBP에 매핑하는 것에 기초하여 상기 CU에 대한 CBP 결정하는, 비디오 데이터를 디코딩하는 장치.
  55. 제 54 항에 있어서,
    상기 CBP 디코딩 모듈은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 상기 CU에 대한 CBP를 결정하는, 비디오 데이터를 디코딩하는 장치.
  56. 제 55 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 비디오 데이터를 디코딩하는 장치.
  57. 제 55 항에 있어서,
    상기 CBP 디코딩 모듈은 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지에 기초하여 상기 CU에 대한 CBP를 결정하는, 비디오 데이터를 디코딩하는 장치.
  58. 제 47 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 CBP 디코딩 모듈은,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 상기 CU에 대한 CBP를 결정하는, 비디오 데이터를 디코딩하는 장치.
  59. 제 55 항에 있어서,
    상기 비디오 디코더는 상기 단일 VLC 코드 워드를 인코더로부터 수신하는, 비디오 데이터를 디코딩하는 장치.
  60. 제 55 항에 있어서,
    상기 비디오 디코더는 또한,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 구성되는, 비디오 데이터를 디코딩하는 장치.
  61. 비디오 데이터를 디코딩하는 디바이스로서,
    루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 수단;
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하는 수단으로서, 상기 CBP는 상기 루마 성분 (Y), 상기 제 1 크로마 성분 (U), 및 상기 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타내는, 상기 결정하는 수단;
    상기 결정된 CBP를 이용하여 상기 CU를 디코딩하는 수단을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  62. 제 61 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 수단은 VLC 코드 테이블을 이용하여 상기 단일 VLC 코드 워드를 상기 CBP에 매핑하는 것에 기초하여 결정하는 수단을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  63. 제 62 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 수단은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 결정하는 수단을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  64. 제 63 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 디바이스.
  65. 제 63 항에 있어서,
    상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 수단은 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지에 기초한 콘텍스트에 기초하여 결정하는 수단을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  66. 제 63 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 VLC 코드 워드에 기초하여 상기 CU에 대한 CBP를 결정하는 수단은,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지로 이루어지는 그룹으로부터 선택된 콘텍스트에 기초하여 결정하는 수단을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  67. 제 61 항에 있어서,
    상기 단일 VLC 코드 워드를 수신하는 수단은 상기 단일 VLC 코드 워드를 인코더로부터 수신하는, 비디오 데이터를 디코딩하는 디바이스.
  68. 제 61 항에 있어서,
    상기 비디오 디코더는 또한,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  69. 프로세서에서의 실행 시, 상기 프로세서로 하여금 비디오 데이터를 디코딩하도록 하는 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 상기 프로세서로 하여금,
    루마 성분 (Y), 제 1 크로마 성분 (U), 및 제 2 크로마 성분 (V) 을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하며;
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 결정하며, 상기 CBP는 상기 루마 성분 (Y), 상기 제 1 크로마 성분 (U), 및 상기 제 2 크로마 성분 (V) 의 각각이 영이 아닌 계수를 포함하는지의 여부를 개별적으로 나타내며;
    상기 결정된 CBP를 이용하여 상기 CU를 디코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  70. 제 69 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금, VLC 코드 테이블을 이용하여 상기 단일 VLC 코드 워드를 상기 CBP에 매핑하는 것에 기초하여 상기 CU에 대한 CBP를 결정하도록 하는, 컴퓨터 판독가능 저장 매체.
  71. 제 69 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금, 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 상기 CU에 대한 CBP를 결정하도록 하는, 컴퓨터 판독가능 저장 매체.
  72. 제 71 항에 있어서,
    상기 적어도 하나의 미리 인코딩된 CU는 이웃 CU를 포함하는, 컴퓨터 판독가능 저장 매체.
  73. 제 71 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금, 상기 적어도 하나의 미리 코딩된 CU가 적어도 하나의 영이 아닌 계수를 포함하는지에 기초한 콘텍스트에 기초하여 상기 CU에 대한 CBP를 결정하도록 하는, 컴퓨터 판독가능 저장 매체.
  74. 제 71 항에 있어서,
    상기 적어도 하나의 미리 코딩된 CU는 제 1 미리 코딩된 CU 및 제 2 미리 코딩된 CU를 포함하고, 상기 명령들은 상기 컴퓨팅 디바이스로 하여금,
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 어느 영이 아닌 계수들도 포함하지 않는지;
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 하나가 적어도 하나의 영이 아닌 계수를 포함하는지, 및 상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU 중 다른 하나가 적어도 하나의 영이 아닌 계수를 포함하지 않는지; 및
    상기 제 1 미리 코딩된 CU 및 상기 제 2 미리 코딩된 CU의 양쪽 모두가 적어도 하나의 영이 아닌 계수를 포함하는지
    로 이루어진 그룹으로부터 선택된 콘텍스트에 기초하여 상기 CU에 대한 CBP를 결정하도록 하는, 컴퓨터 판독가능 저장 매체.
  75. 제 71 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금 상기 단일 VLC 코드 워드를 인코더로부터 수신하도록 하는, 컴퓨터 판독가능 저장 매체.
  76. 제 71 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 하는, 컴퓨터 판독가능 저장 매체.
  77. 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법으로서,
    복수의 블록들을 포함하는 비디오 데이터의 코딩 단위 (CU) 를 수신하는 단계;
    상기 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 단계;
    각각의 상기 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하는 단계;
    상기 복수의 블록들 중의 각각에 대한 CBF를 총칭하여 나타내는, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 단계;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계; 및
    상기 단일 VLC 코드 워드를 출력하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  78. 제 77 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 단계는 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  79. 제 77 항에 있어서,
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계는 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 매핑하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법
  80. 제 77 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하는 단계;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하는 단계; 및
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  81. 제 77 항에 있어서,
    상기 복수의 블록들 중의 적어도 하나가 적어도 하나의 영이 아닌 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하고,
    복수의 블록들 중의 어느 것도 적어도 하나의 영이 아닌 계수를 포함하지 않으면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  82. 제 77 항에 있어서,
    상기 CU의 예측 모드를 결정하는 단계; 및
    상기 CU에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블을 사용하여, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 상기 CU에 대한 예측 모드가 인터 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 단일 VLC 테이블을 사용하여, 휘도 성분 (Y) 에 대해 생성된 상기 CBP를 상기 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 인코딩하는 방법.
  83. 비디오 데이터를 인코딩하는 장치로서,
    복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하고 상기 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 비디오 인코더; 및
    CBP 모듈을 포함하며,
    상기 CBP 모듈은,
    각각의 상기 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하며;
    상기 복수의 블록들 중의 각각에 대한 CBF를 총칭하여 나타내는, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하며;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하며; 그리고
    상기 단일 VLC 코드 워드를 출력하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  84. 제 83 항에 있어서,
    상기 CBP 모듈은 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 것을 통해, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  85. 제 83 항에 있어서,
    상기 CBP 모듈은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  86. 제 83 항에 있어서,
    상기 비디오 인코더는 또한,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  87. 제 83 항에 있어서,
    상기 비디오 인코더는 또한,
    상기 복수의 블록들 중 적어도 하나가 적어도 하나의 영이 아닌 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하며; 그리고
    상기 복수의 블록들 중의 어느 것도 적어도 하나의 영이 아닌 계수를 포함하지 않으면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  88. 제 83 항에 있어서,
    상기 비디오 인코더는 또한,
    상기 CU의 예측 모드를 결정하며; 그리고
    상기 CU에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블을 사용하여, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 상기 CU에 대한 예측 모드가 인터 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 단일 VLC 테이블을 사용하여, 휘도 성분 (Y) 에 대해 생성된 상기 CBP를 상기 단일 가변 길이 코드 (VLC) 코드 워드에 매핑 하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  89. 비디오 데이터를 인코딩하는 장치로서,
    복수의 블록들을 포함하는 비디오 데이터의 CU를 수신하는 수단;
    상기 복수의 블록들 중의 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하는 수단;
    각각의 상기 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하는 수단;
    상기 복수의 블록들 중의 각각에 대한 CBF를 총칭하여 나타내는, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하는 수단;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 수단; 및
    상기 단일 VLC 코드 워드를 출력하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  90. 제 89 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 수단은 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는, 비디오 데이터를 인코딩하는 장치.
  91. 제 89 항에 있어서,
    상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하는 수단은 적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여 매핑하는, 비디오 데이터를 인코딩하는 장치.
  92. 제 89 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하고, 상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하고, 상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  93. 제 89 항에 있어서,
    상기 복수의 블록들 중의 적어도 하나가 적어도 하나의 영이 아닌 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하고, 및 상기 복수의 블록들 중의 어느 것도 적어도 하나의 영이 아닌 계수를 포함하지 않으면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  94. 제 89 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하고, 상기 CU에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블을 사용하여, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 상기 CU에 대한 예측 모드가 인터 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 단일 VLC 테이블을 사용하여, 휘도 성분 (Y) 에 대해 생성된 상기 CBP를 상기 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  95. 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 컴퓨팅 디바이스로 하여금,
    복수의 블록들을 포함하는 비디오 데이터의 코딩 단위 (CU) 를 수신하며;
    상기 복수의 블록들 중 각각이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 결정하며;
    각각의 상기 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타내는, 복수의 블록들의 각각에 대한 코딩된 블록 플래그 (CBF) 를 생성하며;
    상기 복수의 블록들 중의 각각에 대한 상기 CBF를 총칭하여 나타내는, 상기 CU에 대한 코딩된 블록 패턴 (CBP) 을 생성하며;
    상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하며; 그리고
    상기 단일 VLC 코드 워드를 출력하도록 하는, 컴퓨터 판독가능 저장 매체.
  96. 제 95 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금,
    상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 것에 기초하여, 상기 생성된 CBP를 상기 단일 VLC 코드 워드에 매핑하도록 하는, 컴퓨터 판독가능 저장 매체.
  97. 제 95 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금,
    적어도 하나의 미리 인코?된 CU에 기초한 콘텍스트에 기초하여, 상기 생성된 CBP를 단일 VLC 코드 워드에 매핑하도록 하는, 컴퓨터 판독가능 저장 매체.
  98. 제 95 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 하는, 컴퓨터 판독가능 저장 매체.
  99. 제 95 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 복수의 블록들 중의 적어도 하나가 적어도 하나의 영이 아닌 계수 계수를 포함하면, 상기 CU의 적어도 하나의 변환 단위의 사이즈를 나타내는 변환 인덱스를 시그널링하며; 그리고
    상기 복수의 블록들 중의 어느 것도 적어도 하나의 영이 아닌 계수를 포함하지 않으면, 상기 CU에 대한 상기 변환 인덱스를 시그널링하지 않도록 하는, 컴퓨터 판독가능 저장 매체.
  100. 제 95 항에 있어서,
    상기 명령들은 또한 컴퓨팅 디바이스로 하여금,
    상기 CU의 예측 모드를 결정하며; 그리고
    상기 CU에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블을 사용하여, 상기 생성된 CBP를 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하고, 상기 CU에 대한 예측 모드가 인터 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 단일 VLC 테이블을 사용하여, 휘도 성분 (Y) 에 대해 생성된 상기 CBP를 상기 단일 가변 길이 코드 (VLC) 코드 워드에 매핑하도록 하는, 컴퓨터 판독가능 저장 매체.
  101. 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법으로서,
    복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 단계;
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴을 결정하는 단계;
    상기 CU에 대한 코딩된 블록 패턴에 기초하여, 상기 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하는 단계로서, 상기 CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 상기 결정하는 단계; 및
    상기 결정된 CBF에 기초하여 상기 CU를 디코딩하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법.
  102. 제 101 항에 있어서,
    상기 단일 VLC 코드 워드에 기초하여 상기 CU에 대한 코딩된 블록 패턴을 결정하는 단계는 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법.
  103. 제 101 항에 있어서,
    상기 단일 VLC 코드 워드에 기초하여 상기 CU에 대한 코딩된 블록 패턴을 결정하는 단계는 적어도 하나의 미리 디코딩된 CU에 기초한 콘텍스트에 기초하여 결정하는 단계를 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법.
  104. 제 101 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하는 단계;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하는 단계; 및
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법.
  105. 제 101 항에 있어서,
    상기 CU의 예측 모드를 결정하는 단계; 및
    상기 CP에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하고, 상기 CU에 대한 예측 모드가 인터 예측 모드이고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 단일 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하는 단계를 더 포함하는, 비디오 데이터의 코딩 단위 (CU) 를 디코딩하는 방법.
  106. 비디오 데이터를 디코딩하는 장치로서,
    비디오 디코더를 포함하며,
    상기 비디오 디코더는,
    복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하며;
    상기 단일 VLC 코드 워드에 기초하여 상기 CU에 대한 코딩된 블록 패턴을 결정하며;
    상기 CU에 대한 코딩된 블록 패턴에 기초하여, 상기 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하며, 상기 CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내며; 그리고
    상기 결정된 CBF에 기초하여 상기 CU를 디코딩하도록 구성된, 비디오 데이터를 디코딩하는 장치.
  107. 제 106 항에 있어서,
    상기 비디오 디코더는 상기 단일 VLC 코드 워드에 기초하여, 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 기초한 상기 CU에 대한 CBF를 결정하도록 구성되는, 비디오 데이터를 디코딩하는 장치.
  108. 제 106 항에 있어서,
    상기 비디오 디코더는 상기 단일 VLC 코드 워드에 기초하여, 적어도 하나의 미리 디코딩된 CU에 기초한 콘텍스트에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하도록 구성되는, 비디오 데이터를 디코딩하는 장치.
  109. 제 106 항에 있어서,
    상기 비디오 디코더는 또한,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 구성되는, 비디오 데이터를 디코딩하는 장치.
  110. 제 106 항에 있어서,
    상기 비디오 디코더는 또한,
    상기 CU의 예측 모드를 결정하며; 그리고
    상기 CP에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하고, 상기 CU에 대한 예측 모드가 인터 예측 모드이고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 단일 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하도록 구성되는, 비디오 데이터를 디코딩하는 장치.
  111. 비디오 데이터를 디코딩하는 장치로서,
    복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하는 수단;
    상기 단일 VLC 코드 워드에 기초하여, 상기 CU에 대한 코딩된 블록 패턴을 결정하는 수단;
    상기 CU에 대한 코딩된 블록 패턴에 기초하여, 상기 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하는 수단으로서, 상기 CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내는, 상기 결정하는 수단; 및
    상기 결정된 CBF에 기초하여 상기 CU를 디코딩하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  112. 제 111 항에 있어서,
    상기 단일 VLC 코드 워드에 기초하여, 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하는 수단을 더 포함하는, 비디오 데이터를 디코딩하는 장치.
  113. 제 111 항에 있어서,
    상기 단일 VLC 코드 워드에 기초하여, 적어도 하나의 미리 디코딩된 CU에 기초한 콘텍스트에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하는 수단을 더 포함하는, 비디오 데이터를 디코딩하는 장치.
  114. 제 111 항에 있어서,
    상기 CU에 대한 예측 모드를 결정하고, 상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하고, 상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하는 수단을 더 포함하는, 비디오 데이터를 디코딩하는 장치.
  115. 제 111 항에 있어서,
    상기 CU의 예측 모드를 결정하고, 상기 CP에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하고, 상기 CU에 대한 예측 모드가 인터 예측 모드이고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 단일 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 장치.
  116. 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 컴퓨팅 디바이스로 하여금,
    복수의 블록들을 포함하는 비디오 데이터의 CU에 대한 단일 가변 길이 코드 (VLC) 코드 워드를 수신하며;
    상기 단일 VLC 코드 워드에 기초하여 상기 CU에 대한 코딩된 블록 패턴을 결정하며;
    상기 CU에 대한 코딩된 블록 패턴에 기초하여, 상기 복수의 블록들 중의 각각에 대한 코딩된 블록 플래그 (CBF) 를 결정하며, 상기 CBF는 상기 복수의 블록들 중 각각의 블록이 적어도 하나의 영이 아닌 계수를 포함하는지의 여부를 나타내며; 그리고
    상기 결정된 CBF에 기초하여 상기 CU를 디코딩하도록 구성된, 컴퓨터 판독가능 저장 매체.
  117. 제 116 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금, 상기 단일 VLC 코드 워드에 기초하여, 상기 단일 VLC 코드 워드를 포함하는 VLC 코드 테이블에 액세스하는 것을 통해 상기 CU에 대한 코딩된 블록 패턴을 결정하도록 구성되는, 컴퓨터 판독가능 저장 매체.
  118. 제 116 항에 있어서,
    상기 명령들은 상기 컴퓨팅 디바이스로 하여금, 적어도 하나의 미리 디코딩된 CU에 기초한 콘텍스트에 기초하여 상기 CU에 대한 코딩된 블록 패턴을 결정하도록 구성되는, 컴퓨터 판독가능 저장 매체.
  119. 제 116 항에 있어서,
    상기 명령들은 또한 상기 컴퓨팅 디바이스로 하여금,
    상기 CU에 대한 예측 모드를 결정하며;
    상기 결정된 예측 모드가 인터 예측 모드를 포함하면, 상기 예측 모드를 나타내는 적어도 하나의 VLC 코드 워드를 적응적으로 업데이트하며; 그리고
    상기 결정된 예측 모드가 인트라 예측 모드를 포함하면, 상기 예측 모드를 나타내는 전용 VLC 코드 워드를 유지하도록 하는, 컴퓨터 판독가능 저장 매체.
  120. 제 116 항에 있어서,
    상기 명령들은 또한 상기 컴퓨팅 디바이스로 하여금,
    상기 CU의 예측 모드를 결정하며; 그리고
    상기 CP에 대한 예측 모드가 인트라 예측 모드를 포함하고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 복수의 VLC 테이블들 중에서 선택된 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하고, 상기 CU에 대한 예측 모드가 인터 예측 모드이고 상기 블록이 루마 (Y) 성분이면, 상기 단일 VLC 코드 워드에 기초하여, 단일 VLC 테이블에 기초한 상기 CU에 대한 코딩된 블록 패턴을 결정하도록 하는, 컴퓨터 판독가능 저장 매체.
KR1020127029514A 2010-04-12 2011-04-12 비디오 압축에서 코딩된 블록 패턴 (cbp) 의 가변 길이 코딩 KR20130010124A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US32325610P 2010-04-12 2010-04-12
US61/323,256 2010-04-12
US32373110P 2010-04-13 2010-04-13
US61/323,731 2010-04-13
US36474910P 2010-07-15 2010-07-15
US61/364,749 2010-07-15
US38646010P 2010-09-24 2010-09-24
US61/386,460 2010-09-24
US13/084,494 US8942282B2 (en) 2010-04-12 2011-04-11 Variable length coding of coded block pattern (CBP) in video compression
US13/084,494 2011-04-11
PCT/US2011/032194 WO2011130334A2 (en) 2010-04-12 2011-04-12 Variable length coding of coded block pattern (cbp) in video compression

Publications (1)

Publication Number Publication Date
KR20130010124A true KR20130010124A (ko) 2013-01-25

Family

ID=44760896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127029514A KR20130010124A (ko) 2010-04-12 2011-04-12 비디오 압축에서 코딩된 블록 패턴 (cbp) 의 가변 길이 코딩

Country Status (6)

Country Link
US (1) US8942282B2 (ko)
EP (1) EP2572509A2 (ko)
JP (1) JP2013524734A (ko)
KR (1) KR20130010124A (ko)
CN (1) CN103098463A (ko)
WO (1) WO2011130334A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014120575A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding of partitions data for next generation video
US20150257188A1 (en) * 2014-03-06 2015-09-10 Samsung Electronics Co., Ltd. Method and system for establishing a service session between seeker device and advertiser device
KR20200107745A (ko) * 2019-03-08 2020-09-16 소니 주식회사 임베디드 이미지 코덱을 위한 서브-블록 기반 엔트로피 코딩
KR20200109334A (ko) * 2018-01-18 2020-09-22 블랙베리 리미티드 포인트 클라우드를 엔트로피 코딩하는 방법 및 디바이스

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106358045B (zh) * 2010-04-13 2019-07-19 Ge视频压缩有限责任公司 解码器、解码方法、编码器以及编码方法
BR112012026391B1 (pt) 2010-04-13 2020-12-15 Ge Video Compression, Llc Herança em amostra de arranjo em subdivisão multitree
CN106412608B (zh) 2010-04-13 2019-10-08 Ge视频压缩有限责任公司 用于解码、生成数据流的方法和解码器
TWI815295B (zh) 2010-04-13 2023-09-11 美商Ge影像壓縮有限公司 樣本區域合併技術
KR101824241B1 (ko) * 2011-01-11 2018-03-14 에스케이 텔레콤주식회사 인트라 부가정보 부호화/복호화 장치 및 방법
US8548057B2 (en) 2011-01-25 2013-10-01 Microsoft Corporation Video coding redundancy reduction
US20120218432A1 (en) * 2011-02-28 2012-08-30 Sony Corporation Recursive adaptive intra smoothing for video coding
JP5664762B2 (ja) * 2011-03-17 2015-02-04 富士通株式会社 動画像復号方法、動画像符号化方法、動画像復号装置及び動画像復号プログラム
US9491491B2 (en) 2011-06-03 2016-11-08 Qualcomm Incorporated Run-mode based coefficient coding for video coding
JP5318292B2 (ja) 2011-06-23 2013-10-16 パナソニック株式会社 画像復号方法及び画像復号装置
USRE47366E1 (en) 2011-06-23 2019-04-23 Sun Patent Trust Image decoding method and apparatus based on a signal type of the control parameter of the current block
CN106878722B (zh) 2011-06-24 2019-11-12 太阳专利托管公司 解码方法、解码装置、编码方法、编码装置
WO2012176464A1 (ja) 2011-06-24 2012-12-27 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
MX2013013483A (es) * 2011-06-27 2014-02-27 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
CN107105254B (zh) 2011-06-28 2020-03-20 太阳专利托管公司 编码方法及编码装置
WO2013001767A1 (ja) 2011-06-29 2013-01-03 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
KR102060619B1 (ko) 2011-06-30 2019-12-30 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
KR101955374B1 (ko) * 2011-06-30 2019-05-31 에스케이 텔레콤주식회사 고속 코딩 단위(Coding Unit) 모드 결정을 통한 부호화/복호화 방법 및 장치
PL2728869T3 (pl) 2011-06-30 2022-02-28 Sun Patent Trust Sposób dekodowania obrazów
CN106851295B (zh) * 2011-07-11 2019-10-18 太阳专利托管公司 编码方法及编码装置
US9948938B2 (en) * 2011-07-21 2018-04-17 Texas Instruments Incorporated Methods and systems for chroma residual data prediction
CN103202020B (zh) * 2011-07-29 2017-02-08 太阳专利托管公司 动态图像解码方法以及动态图像解码装置
US9398300B2 (en) 2011-10-07 2016-07-19 Texas Instruments Incorporated Method, system and apparatus for intra-prediction in video signal processing using combinable blocks
JP2013085096A (ja) * 2011-10-07 2013-05-09 Sony Corp 画像処理装置および方法
US9584819B2 (en) * 2011-10-24 2017-02-28 Qualcomm Incorporated Grouping of tiles for video coding
US8964849B2 (en) 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding
PL2876883T3 (pl) 2011-11-01 2019-10-31 Velos Media Int Ltd Wielopoziomowe mapy znaczeń do kodowania i dekodowania
FR2982446A1 (fr) 2011-11-07 2013-05-10 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
FR2982447A1 (fr) 2011-11-07 2013-05-10 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
TWI523497B (zh) * 2011-11-10 2016-02-21 Sony Corp Image processing apparatus and method
CN102420983B (zh) * 2011-11-18 2013-10-23 北京工业大学 一种针对高效视频编码hevc熵编码的上下文简化方法
EP2595380B1 (en) 2011-11-19 2015-10-21 BlackBerry Limited Multi-level significance map scanning
CN102413334B (zh) * 2011-12-29 2013-06-05 哈尔滨工业大学 一种应用于h.264编码的亮度4×4块帧内预测模式快速选择方法
WO2013102298A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Signaling size information of coding unit and transform unit in hevc
WO2013107027A1 (en) * 2012-01-19 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of cbf coding in hevc
CN108449602A (zh) * 2012-01-19 2018-08-24 寰发股份有限公司 编码块旗标的编码及视频比特流的解码方法与装置
US9462275B2 (en) * 2012-01-30 2016-10-04 Qualcomm Incorporated Residual quad tree (RQT) coding for video coding
WO2013128526A1 (ja) 2012-02-28 2013-09-06 パナソニック株式会社 画像処理装置、及び、画像処理方法
US9467701B2 (en) * 2012-04-05 2016-10-11 Qualcomm Incorporated Coded block flag coding
CN107547901B (zh) 2012-04-16 2021-07-20 韩国电子通信研究院 用于解码视频信号的方法
US9591312B2 (en) * 2012-04-17 2017-03-07 Texas Instruments Incorporated Memory bandwidth reduction for motion compensation in video coding
US10721487B2 (en) 2012-04-17 2020-07-21 Texas Instruments Incorporated Converting a bi-predicted merging candidate in a merging candidate list for a prediction unit of a picture
US9749645B2 (en) 2012-06-22 2017-08-29 Microsoft Technology Licensing, Llc Coded-block-flag coding and derivation
DK3361732T3 (da) * 2012-07-02 2020-01-02 Samsung Electronics Co Ltd Entropikodning af en video og entropiafkodning af en video
CA2878206C (en) * 2012-07-02 2016-05-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding video and method and apparatus for decoding video determining inter-prediction reference picture list depending on block size
US9854235B2 (en) 2012-08-31 2017-12-26 Blackberry Limited Methods and devices for entropy coding in scalable video compression
AU2012232992A1 (en) * 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
US9667994B2 (en) 2012-10-01 2017-05-30 Qualcomm Incorporated Intra-coding for 4:2:2 sample format in video coding
CA2928753C (en) * 2013-11-14 2019-09-17 Mediatek Singapore Pte. Ltd. Method of video coding using prediction based on intra picture block copy
US9948933B2 (en) 2014-03-14 2018-04-17 Qualcomm Incorporated Block adaptive color-space conversion coding
AU2016212243B2 (en) * 2015-01-30 2020-11-26 Interdigital Vc Holdings, Inc. A method and apparatus of encoding and decoding a color picture
EP3395071A4 (en) * 2015-12-22 2019-08-14 RealNetworks, Inc. REST TRANSFORMATION AND INVERSE TRANSFORMATION IN VIDEO PROCESSING SYSTEMS AND METHODS
US10523966B2 (en) * 2017-03-31 2019-12-31 Mediatek Inc. Coding transform blocks
US10609414B2 (en) 2017-05-08 2020-03-31 Qualcomm Incorporated Context modeling for transform coefficient coding
US11330298B2 (en) * 2019-06-25 2022-05-10 Qualcomm Incorporated Simplified intra chroma mode coding in video coding
US11140394B1 (en) 2020-08-27 2021-10-05 Tencent America LLC Adaptive chroma intra mode coding in video compression

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571019B1 (en) * 1995-10-26 2003-05-27 Hyundai Curitel, Inc Apparatus and method of encoding/decoding a coded block pattern
US6563953B2 (en) 1998-11-30 2003-05-13 Microsoft Corporation Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock
KR100627597B1 (ko) 2002-04-26 2006-09-25 가부시키가이샤 엔티티 도코모 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법, 화상 복호 방법, 화상 부호화 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 화상 복호 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
CN1682450A (zh) * 2002-09-11 2005-10-12 皇家飞利浦电子股份有限公司 用于对可变长度的软输入代码字序列进行信源译码的方法和装置
US20050013496A1 (en) * 2003-07-16 2005-01-20 Bruls Wilhelmus Hendrikus Alfonsus Video decoder locally uses motion-compensated interpolation to reconstruct macro-block skipped by encoder
US7317839B2 (en) * 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7599438B2 (en) * 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
US8116374B2 (en) * 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
US7664176B2 (en) * 2004-07-09 2010-02-16 Nokia Corporation Method and system for entropy decoding for scalable video bit stream
US7953155B2 (en) * 2004-12-16 2011-05-31 Tut Systems, Inc. Methods of selecting an encoding mode
US8335261B2 (en) * 2007-01-08 2012-12-18 Qualcomm Incorporated Variable length coding techniques for coded block patterns
US8483285B2 (en) 2008-10-03 2013-07-09 Qualcomm Incorporated Video coding using transforms bigger than 4×4 and 8×8
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
KR101247923B1 (ko) * 2008-10-03 2013-03-26 퀄컴 인코포레이티드 4×4 및 8×8 보다 큰 변환을 이용한 비디오 코딩
US20100086031A1 (en) 2008-10-03 2010-04-08 Qualcomm Incorporated Video coding with large macroblocks

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794569B2 (en) 2013-01-30 2017-10-17 Intel Corporation Content adaptive partitioning for prediction and coding for next generation video
US9609330B2 (en) 2013-01-30 2017-03-28 Intel Corporation Content adaptive entropy coding of modes and reference types data for next generation video
US9686551B2 (en) 2013-01-30 2017-06-20 Intel Corporation Content adaptive entropy coding of partitions data for next generation video
US9762911B2 (en) 2013-01-30 2017-09-12 Intel Corporation Content adaptive prediction and entropy coding of motion vectors for next generation video
US9787990B2 (en) 2013-01-30 2017-10-10 Intel Corporation Content adaptive parametric transforms for coding for next generation video
WO2014120575A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding of partitions data for next generation video
US9794568B2 (en) 2013-01-30 2017-10-17 Intel Corporation Content adaptive entropy coding of coded/not-coded data for next generation video
US10009610B2 (en) 2013-01-30 2018-06-26 Intel Corporation Content adaptive prediction and entropy coding of motion vectors for next generation video
US20150257188A1 (en) * 2014-03-06 2015-09-10 Samsung Electronics Co., Ltd. Method and system for establishing a service session between seeker device and advertiser device
KR20200109334A (ko) * 2018-01-18 2020-09-22 블랙베리 리미티드 포인트 클라우드를 엔트로피 코딩하는 방법 및 디바이스
US11741638B2 (en) 2018-01-18 2023-08-29 Malikie Innovations Limited Methods and devices for entropy coding point clouds
KR20200107745A (ko) * 2019-03-08 2020-09-16 소니 주식회사 임베디드 이미지 코덱을 위한 서브-블록 기반 엔트로피 코딩
KR102267212B1 (ko) 2019-03-08 2021-06-22 소니그룹주식회사 임베디드 이미지 코덱을 위한 서브-블록 기반 엔트로피 코딩

Also Published As

Publication number Publication date
US20110249721A1 (en) 2011-10-13
US8942282B2 (en) 2015-01-27
WO2011130334A2 (en) 2011-10-20
JP2013524734A (ja) 2013-06-17
EP2572509A2 (en) 2013-03-27
CN103098463A (zh) 2013-05-08
WO2011130334A3 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
US8942282B2 (en) Variable length coding of coded block pattern (CBP) in video compression
US11431968B2 (en) Variable number of intra modes for video coding
CN106464877B (zh) 在视频译码中确定将解块滤波应用于经调色板译码块
CN109076228B (zh) 滤波信息的发信号
US9049444B2 (en) Mode dependent scanning of coefficients of a block of video data
AU2023202344A1 (en) Position dependent intra prediction combination extended with angular modes
US20110249754A1 (en) Variable length coding of coded block pattern (cbp) in video compression
US9516316B2 (en) VLC coefficient coding for large chroma block
US20120236931A1 (en) Transform coefficient scan
US20130089138A1 (en) Coding syntax elements using vlc codewords
IL227286A (en) Change signal quantization parameter to high efficiency video encoded units
US20120082230A1 (en) Variable length coding of video block coefficients
KR102453208B1 (ko) 4:4:4 크로마 포맷의 비디오 코딩 방법 및 장치
US9338456B2 (en) Coding syntax elements using VLC codewords
US9490839B2 (en) Variable length coding of video block coefficients
CN116614625B (zh) 一种视频编码的方法、装置和介质
KR102585317B1 (ko) 비디오 코딩을 위한 인-루프 필터

Legal Events

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