KR102315238B1 - 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화 - Google Patents

비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화 Download PDF

Info

Publication number
KR102315238B1
KR102315238B1 KR1020167001546A KR20167001546A KR102315238B1 KR 102315238 B1 KR102315238 B1 KR 102315238B1 KR 1020167001546 A KR1020167001546 A KR 1020167001546A KR 20167001546 A KR20167001546 A KR 20167001546A KR 102315238 B1 KR102315238 B1 KR 102315238B1
Authority
KR
South Korea
Prior art keywords
coefficients
value
coefficient
statistic
transform
Prior art date
Application number
KR1020167001546A
Other languages
English (en)
Other versions
KR20160032119A (ko
Inventor
마르타 카르체비츠
로할스 호엘 솔레
라잔 랙스맨 조쉬
리웨이 궈
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160032119A publication Critical patent/KR20160032119A/ko
Application granted granted Critical
Publication of KR102315238B1 publication Critical patent/KR102315238B1/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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/136Incoming video signal characteristics or properties
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

계수 레벨 코딩을 위한 코드들을 정의하는데 이용된 라이스 파라미터를 초기화하기 위한 기술들이 설명된다. 본 기술들에 따르면, 라이스 파라미터의 초기 값은 비디오 데이터의 이전에 코딩된 계수들에 대해 수집된 계수 레벨들의 통계에 기초하여 비디오 데이터의 변환 블록에서의 계수 그룹 (CG) 에 대해 결정된다. 통계는 이전에 코딩된 계수들의 계수 레벨들의 절대값들 또는 계수 레벨들의 나머지 절대값들의 통계일 수도 있다. 통계의 값은 비디오 슬라이스의 시작시 제로로 초기화될 수도 있고, 슬라이스의 각각의 CG 에서 코딩된 계수 레벨들에 기초하여 업데이트될 수도 있다. 통계는 CG 당 한번 업데이트될 수도 있다. 일부 경우들에서, 통계는 CS들을 포함하는 변환 블록들의 특징들에 기초하여 정의되는 CG들의 복수의 상이한 카테고리들 각각에 대해 개별적으로 수집될 수도 있다.

Description

비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화{RICE PARAMETER INITIALIZATION FOR COEFFICIENT LEVEL CODING IN VIDEO CODING PROCESS}
본 출원은 2013년 7월 12일자로 출원된 미국 특허 가출원 번호 제61/845,850호, 2013년 7월 15일자로 출원된 미국 특허 가출원 번호 제61/846,512호, 2013년 9월 25일자로 출원된 미국 특허 가출원 번호 제61/882,536호, 2013년 11월 1일자로 출원된 미국 특허 가출원 번호 제61/898,968호, 2013년 11월 22일자로 출원된 미국 특허 가출원 번호 제61/907,693호, 2013년 12월 12일자로 출원된 미국 특허 가출원 번호 제61/915,337호의 이익을 우선권으로 주장하며, 이들 각각의 전체 내용은 참조로서 포함된다.
기술 분야
본 개시물은 비디오 코딩에 관한 것이고, 보다 구체적으로, 변환 계수들을 코딩하는 기술들에 관한 것이다.
디지털 비디오 성능들은, 디지털 텔레비전, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, PDA들 (personal digital assistants), 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게임용 디바이스들, 비디오 게임 콘솔, 셀룰러 또는 위성 라디오 전화기들, 화상 원격회의 디바이스들 등을 포함하는 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (Advanced Video Coding; AVC), 현재 개발 중에 있는 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준에 의해 규정된 표준들 및 이러한 표준들의 확장안들에 기재된 것들과 같은 비디오 압축 기술들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신하고 수신한다.
비디오 압축 기술들은 비디오 시퀀스들에서 본질적인 리던던시를 감소시키거나 제거하기 위해 공간 예측 및/또는 시간 예측을 수행한다. 블록 기반 비디오 코딩에 있어서, 비디오 슬라이스 (즉, 비디오 프레임, 또는 비디오 프레임의 부분) 는 비디오 블록들로 파티셔닝될 수도 있다. 픽처 인트라 코딩된 (I) 슬라이스 내의 비디오 블록들은 동일한 픽처 내의 이웃하는 블록들 내의 레퍼런스 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 인터 코딩된 (P 또는 B) 슬라이스 내의 비디오 블록들은 동일한 픽처 내의 이웃하는 블록들 내의 레퍼런스 샘플들에 대한 공간 예측, 또는 다른 레퍼런스 픽처들 내의 레퍼런스 샘플들에 대한 시간 예측을 이용할 수도 있다. 픽처들은 프레임들로서 지칭될 수도 있고, 레퍼런스 픽처들은 레퍼런스 프레임들로 지칭될 수도 있다.
공간 예측 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔여 데이터는 코딩될 오리지널 블록과 예측 블록 간의 픽셀 차이들을 나타낸다. 인터 코딩된 블록은 예측 블록을 형성하는 기준 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 간의 차이를 나타내는 잔여 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드와 잔여 데이터에 따라 인코딩된다. 추가의 압축을 위해, 잔여 데이터는 픽셀 도메인에서 변환 도메인으로 변환되어, 잔여 변환 계수들을 초래하고 이 변환 계수들은, 그 후 양자화될 수도 있다. 처음에 2 차원 어레이로 배열된 양자화된 변환 계수들은, 스캔되어 변환 계수들의 1 차원 벡터를 생성할 수도 있고, 엔트로피 코딩이 적용되어 보다 많은 압축을 달성할 수도 있다.
일반적으로, 본 개시물은 비디오 코딩 프로세스에서의 계수 레벨 코딩을 위한 코드들을 정의하는데 이용되는 라이스 파라미터의 초기화를 위한 기술들을 설명한다. 특히, 본 개시물은 계수들에 대한 계수 레벨들의 나머지 절대값들을 코딩하기 위하여 골룸-라이스 코드들 (Golomb-Rice codes) 또는 지수적-골룸 코드들 (Exponential-Golomb codes) 을 정의하는데 이용되는 라이스 파라미터의 초기 값을 결정하는 기술들을 설명하며, 여기에서, CABAC (context adaptive binary arithmetic coding) 는 유의 계수들의 표시들, 1 보다 큰 계수 레벨들, 및 2 보다 큰 계수 레벨들을 코딩하는데 이용된다. 일부 예들에서, 기술들은 HEVC (high efficiency video coding) 표준의 범위 확장들에 있어서의 계수 레벨 코딩을 위한 라이스 파라미터 초기화에 적용될 수도 있다.
본 개시물에서 설명된 기술들은 비디오 데이터의 이전에 코딩된 계수들에 대하여 수집 (gather) 된 계수 레벨들의 통계에 기초하여 비디오 데이터의 변환 블록에 있어서, 현재 계수 그룹 (CG; coefficient group), 즉, 계수들의 블록에 대한 라이스 파라미터의 초기 값을 결정한다. CG 는 손실성 코딩의 경우에 변환 계수들, 또는 변환 스킵 모드에서, 무손실성 코딩 또는 손실성 코딩의 경우에 변환이 적용되지 않는 계수들을 포함할 수도 있다. 통계는 이전에 코딩된 계수들의 계수 레벨들의 절대값들 또는 계수 레벨들의 나머지 절대값들의 통계일 수도 있다. 통계의 값은 비디오 데이터의 각각의 슬라이스의 시작시 제로로 설정될 수도 있고 통계는 슬라이스의 각각의 CG 에서 코딩된 하나 이상의 계수 레벨들에 기초하여 업데이트될 수도 있다. 일 예에서, 통계는 제 1 계수 레벨이 CG 에서 코딩될 때 CG 당 한번 업데이트될 수도 있다. 일부 경우들에서, 통계는 CS들을 포함하는 변환 블록들의 특징들에 기초하여 정의되는 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적으로 수집될 수도 있다. 본 개시물의 기술들에 따르면, 변환 블록에서의 현재 CG 의 시작시, 통계의 값은 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑된다.
일 예에서, 본 개시물은 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법에 대해 교시되며, 본 방법은, 잔여 비디오 데이터의 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 단계, 통계에 기초하여 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 단계, 및 상기 라이스 파라미터에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 디코딩하는 단계를 포함한다.
다른 예에서, 본 개시물은 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법에 대해 교시되며, 본 방법은, 잔여 비디오 데이터의 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 단계, 통계에 기초하여 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 단계, 및 상기 라이스 파라미터에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 인코딩하는 단계를 포함한다.
추가의 예에서, 본 개시물은 비디오 코딩 디바이스에 대해 교시되며, 본 비디오 코딩 디바이스는, 비디오 데이터를 저장하도록 구성되는 메모리, 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하고, 통계에 기초하여 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하고, 그리고 상기 라이스 파라미터에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 코딩하도록 구성된다.
추가의 예에서, 본 개시물은 비디오 코딩 디바이스에 대해 교시되며, 본 비디오 코딩 디바이스는, 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 수단, 통계에 기초하여 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 수단, 및 상기 라이스 파라미터에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 코딩하는 수단을 포함한다.
추가의 예에서, 본 개시물은 명령들을 포함하는 컴퓨터 판독가능 저장 매체에 대해 교시되며, 명령들은 비디오 코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때 상기 프로세서들로 하여금, 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하게 하고, 통계에 기초하여 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하게 하고, 그리고 상기 라이스 파라미터에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 코딩하게 한다.
하나 이상의 예들의 세부사항들이 첨부되는 도면들 및 하기의 설명들에서 기술된다. 다른 특성들, 목적들 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구범위로부터 명확해질 것이다.
도 1 은 본 개시물에서 설명된 계수 레벨들을 코딩하기 위한 기술들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2 는 계수 레벨 코딩에 대한 예시적인 역방향 스캔 순서들을 보여주는 개념도이다.
도 3 은 계수 그룹들 (CGs) 의 계수 레벨 코딩에 대한 예시적인 서브블록 기반 역방향 대각선 스캔 순서를 보여주는 개념도이다.
도 4 는 CG 에 대한 계수 레벨들을 코딩하는 예시적인 역방향 대각선 스캔을 보여주는 개념도이다.
도 5 는 본 개시물에서 설명된 계수 레벨들을 인코딩하는 기술들을 구현할 수도 있는 예시적인 비디오 인코더를 나타내는 블록도이다.
도 6 은 본 개시물에서 설명된 계수 레벨들을 디코딩하는 기술들을 구현할 수도 있는 예시적인 비디오 디코더를 나타내는 블록도이다.
도 7 은 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 인코딩 동안에 라이스 파라미터의 값을 업데이트하는 예시적인 동작을 나타내는 플로우차트이다.
도 8 은 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 디코딩 동안에 라이스 파라미터의 값을 업데이트하는 예시적인 동작을 나타내는 플로우차트이다.
도 9 는 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 코딩 동안에 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 예시적인 동작을 나타내는 플로우차트이다.
도 10 은 본 개시물에 설명된 기술들에 따라 결정된 통계에 기초하여 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 예시적인 동작을 나타내는 플로우차트이다.
본 개시물은 비디오 코딩 프로세스에서 잔여 데이터와 연관된 계수들을 코딩하는 기술들을 설명한다. 본 기술들은 비디오 코딩 프로세스에서 계수 레벨 코딩에 대한 코드들을 정의하는데 이용되는 라이스 파라미터의 초기화에 대해 구성된다. 특히, 본 개시물은 계수들의 블록에 대한 계수 레벨들의 나머지 절대값들을 코딩하기 위하여 골룸-라이스 코드들 또는 지수적-골룸 코드들을 정의하는데 이용되는 라이스 파라미터의 초기 값을 결정하는 기술들을 설명하며, 여기에서, CABAC (context adaptive binary arithmetic coding) 는 유의 계수들의 표시들, 1 보다 큰 계수 레벨들, 및 2 보다 큰 계수 레벨들을 코딩하는데 이용된다. 계수 레벨들은 손실성 코딩의 경우에 변환 계수들의 레벨들, 또는 변환 스킵 모드에서의 무손실성 코딩 또는 손실성 코딩의 경우에 변환이 적용되지 않는 계수들의 레벨 (즉, 잔여 픽셀 값들) 일 수도 있다. 일부 예들에서, 기술들은 HEVC (high efficiency video coding) 표준의 범위 확장들에 있어서의 계수 레벨 코딩을 위한 라이스 파라미터 초기화에 적용될 수도 있다.
라이스 파라미터는 골룸 코드들, 예를 들어, 골룸 라이스 코드들, 또는 지수적-골룸 코드들의 계열로부터 설정되는 코드워드를 선택하는데 이용되는 튜닝가능 값이다. 라이스 파라미터에 의해 정의되는 코드들은 계수 그룹 (CG), 즉, 계수들의 블록에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 코딩하는데 이용될 수도 있다. HEVC 의 예에서, CG들의 각각은 비디오 데이터의 4×4 변환 블록, 또는 비디오 데이터의 변환 블록의 4×4 서브블록을 포함할 수도 있다. CG들은 손실성 코딩의 경우에 변환 계수들, 또는 변환 스킵 모드에서, 무손실성 코딩 또는 손실성 코딩의 경우에 변환이 적용되지 않는 계수들을 포함할 수도 있다. 일부 프로세스들에서, 라이스 파라미터의 초기 값은 각각의 CG 의 시작시 제로와 같게 설정되며, CG 에서의 계수 레벨들의 나머지 절대값들을 코딩한 후에 조건적으로 업데이트될 수도 있다. 스크린 컨텐츠에 대해 계수 레벨들을 코딩하는 경우, 또는 변환 스킵 모드에서의 무손실성 코딩 또는 손실성 코딩의 경우에, 각각의 CG 에 대해 라이스 파라미터의 값을 제로로 설정하는 것은 최적의 것이 아닐 수도 있다.
본 개시물에서 설명된 기술들은, 모든 경우에 대해 라이스 파라미터의 초기 값을 제로로 설정하기 보다는, 각각의 CG 를 코딩 (예를 들어, 인코딩 또는 디코딩) 하기 위해 라이스 파라미터의 초기 값을 적응적으로 설정한다. 구체적으로, 본 개시물은 이전에 코딩된 계수들에 대해 수집된 계수 레벨들의 통계에 기초하여 현재 CG 에 대하여 라이스 파라미터의 초기 값을 결정하기 위한 기술들을 설명한다. 본 개시물은 또한 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하기 위한 기술들을 설명한다.
통계는 이전에 코딩된 계수들의 계수 레벨들의 절대값들 또는 계수 레벨들의 나머지 절대값들의 통계일 수도 있다. 통계의 값은 비디오 데이터의 각각의 슬라이스의 시작시 제로로 설정될 수도 있고 통계는 슬라이스의 각각의 CG 에서 코딩된 하나 이상의 계수 레벨들에 기초하여 업데이트될 수도 있다. 일부 경우들에서, 통계는 계수 레벨의 제 1 절대값 및 계수 레벨의 제 1 나머지 절대값이 CG 에서 코딩될 때 CG 마다 한번 업데이트될 수도 있다. 다른 경우들에서, 통계는 보다 빈번하게, 또는 상이한 계수 레벨에 기초하여, 예를 들어, 계수 레벨의 최종 절대값 또는 계수 레벨의 최종 나머지 절대값이 CG 에서 코딩될 때 수집될 수도 있다.
일 예에서, 통계는 주어진 이전에 코딩된 계수에 대한 계수 레벨을 미리 정의된 통계의 함수에 비교한 다음, 비교에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정함으로써 결정될 수도 있다. 통계를 업데이트하는데 이용되는 미리 정의된 통계의 함수는 제 2 상수값으로 나누어진 통계의 값에 의해 좌측 시프트되는 제 1 상수값에 기초할 수도 있다. 다른 예들에서, 통계는 상이한 기술들에 따라 결정될 수도 있다.
일부 경우들에서, 통계는 CS들을 포함하는 변환 블록들의 특징들에 기초하여 정의되는 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적으로 수집될 수도 있다. 이 경우에, 변환 블록에서의 현재 CG 의 카테고리는 변환 블록의 특징들에 기초하여 결정될 수도 있고 라이스 파라미터는 결정된 카테고리에 대한 통계에 기초하여 현재 CG 에 대하여 초기화될 수도 있다. 일 예에서, 개별적인 통계는 변환 블록들이 루마 블록들인지의 여부 그리고 변환 블록들이 변환 스킵 블록들인지의 여부에 기초하여 4 개의 상이한 카테고리들 각각에 대해 수집될 수도 있다. 다른 예들에서, 통계는 상이한 유형들의 변환 블록 특징들에 기초하여 정의되는 상이한 수의 카테고리들로 분할될 수도 있다.
본 개시물의 기술들에 따르면, 현재 CG 의 시작시, 통계의 값은 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑된다. 일부 예들에서, 통계의 값은 통계의 함수에 따라 초기 라이스 파라미터 값에 맵핑될 수도 있다. 라이스 파라미터를 초기화하는데 이용되는 통계의 함수는 상수 값으로 나누어진 통계의 값 또는 라이스 파라미터의 최대 값 중 가장 작은 것의 선택에 기초할 수도 있다. 다른 예들에서, 통계의 값은 저장된 테이블에 따라 또는 상이한 함수에 따라 라이스 파라미터의 초기 값에 맵핑될 수도 있다. 현재 CG 에 대한 라이스 파라미터의 초기 값은 현재 CG 에서 적어도 하나의 계수에 대한 계수 레벨들의 나머지 절대값들을 코딩하기 위하여, 코드들, 예를 들어, 골룸 라이스 코드들, 또는 지수적-골룸 코드들을 정의하는데 이용된다.
일부 예들에서, 비디오 인코더는 비디오 디코더 또는 저장 디바이스로의 송신을 위하여 비트스트림으로 잔여 비디오 데이터와 연관된 계수들의 계수 레벨들을 인코딩할 수도 있다. 인코딩된 비트스트림의 수신시, 비디오 디코더는 비디오 인코더에 대하여 가역적으로 잔여 비디오 데이터의 계수 레벨들을 디코딩할 수도 있다. 손실성 비디오 코딩의 경우, 계수들은 양자화된 변환 계수들일 수도 있다. 이 경우에, 양자화된 변환 계수들은 예를 들어, 이산 코사인 변환 (DCT) 을 잔여 비디오 데이터에 적용한 다음, 양자화를 변환 계수들에 적용함으로써 생성될 수도 있다. 변환 스킵 또는 바이패스가 있는 무손실성 비디오 코딩 또는 손실성 비디오 코딩의 경우에, 계수들은 잔여 비디오 데이터의 픽셀값들일 수도 있고, 큰 절대값들을 갖는 계수 레벨들, 즉, 픽셀 값들을 가질 수도 있다. 그래픽들 및 텍스트 영역들을 포함할 수도 있는 스크린 컨텐츠를 계수들이 표현할 때, 컨텐츠가 잘 예측되지 않을 수도 있어, 계수들에 대한 계수 레벨들의 큰 절대값들을 초래할 수도 있다.
본 개시물에 설명된 라이스 파라미터 초기화 방식은, 라이스 파라미터가 보다 신속하고 보다 효율적으로 큰 계수 값들에 적응하기 위하여, 라이스 파라미터의 초기 값이 현재 CG 의 시작시 비-제로 값으로 설정되도록 허용하는데, 이 큰 계수 값들은 현재 CG 가 스크린 컨텐츠를 포함하거나 또는 변환 스킵 또는 바이패스로 코딩되면 발생할 수도 있다. 기술들에 따르면, 라이스 파라미터의 초기 값은 이전에 코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 결정될 수도 있다. 이 방식으로, 라이스 파라미터는 스크린 컨텐츠의 슬라이스 또는 코딩 유닛, 및/또는 변환되거나 양자화되지 않았던 계수들을 수용하기 위해 비-제로 값으로 초기화될 수도 있지만, 여전히 자연 컨텐츠의 슬라이스 또는 코딩 유닛의 경우에 제로로 초기화될 수도 있다. 예를 들어, 이전에 코딩된 계수들에 대한 큰 계수 레벨들이 큰 값의 통계를 가져올 때, 라이스 파라미터의 초기 값은 현재 CG 에서 발생할 가능성이 있을 큰 계수 값들에 보다 신속하게 적응시키기 위하여, 큰 값의 통계에 따라 비-제로 값과 같게 설정될 수도 있다.
도 1 은 본 개시물에서 설명된 계수 레벨들을 코딩하기 위한 기술들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타내는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 통신 채널 (16) 을 통하여 인코딩된 비디오를 목적지 디바이스 (14) 에 송신하는 소스 디바이스 (12) 를 포함한다. 인코딩된 비디오 데이터는 또한, 저장 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있고, 원하는 바에 따라 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 저장 매체 또는 파일 서버에 저장될 때, 비디오 인코더 (20) 는, 코딩된 비디오 데이터를 저장 매체에 저장하기 위해, 코딩된 비디오 데이터를 다른 디바이스, 이를테면 네트워크 인터페이스, 컴팩트 디스크 (CD), 블루레이 또는 디지털 비디오 디스크 (DVD) 버너 또는 스탬핑 설비 디바이스, 또는 다른 디바이스들에 제공할 수도 있다. 마찬가지로, 비디오 디코더 (30) 와는 별개의 디바이스, 이를테면 네트워크 인터페이스, CD 또는 DVD 리더 등은 저장 매체로부터 코딩된 비디오 데이터를 취출하고 취출된 데이터를 비디오 디코더 (30) 에 제공할 수도 있다.
소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋탑박스들, 소위 스마트폰들과 같은 전화 핸드셋들, 텔레비젼들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임용 콘솔들 등을 포함하는 아주 다양한 디바이스들 중 임의의 것을 포함할 수도 있다. 많은 경우들에서, 이러한 디바이스들은 무선 통신을 위해 탑재될 수도 있다. 그러므로, 통신 채널 (16) 은 인코딩된 비디오 데이터의 전송에 적합한 무선 채널, 유선 채널, 또는 무선 및 유선 채널들의 조합을 포함할 수도 있다. 마찬가지로, 파일 서버 (36) 는 인터넷 접속을 포함하는 임의의 표준 데이터 접속을 통해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 이것은 파일 서버에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 무선 채널 (예를 들어, 와이파이 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들의 조합을 포함할 수도 있다.
본 개시물의 예들에 따르면, 계수 레벨들을 코딩하는 기술들은 임의의 다양한 멀티미디어 애플리케이션들, 이를테면 공중파 (over-the-air) 텔레비전 방송들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예를 들어 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩 또는 다른 애플리케이션들을 지원하여 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은, 비디오 스트리밍, 비디오 플레이백, 비디오 방송, 및/또는 영상 전화와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) 및 송신기 (24) 를 포함한다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡쳐 디바이스, 이를테면 비디오 카메라와 같은 소스, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 컨텐츠 공급자로부터 비디오를 수신하는 비디오 공급 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽 데이터를 생성하는 컴퓨터 그래픽 시스템, 또는 이러한 소스들의 조합을 포함할 수도 있다. 일 예로써, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있고, 이는 예를 들어, 스마트폰들 또는 테블릿 컴퓨터들 내에 제공될 수도 있다. 그러나, 일반적으로, 본 개시에서 설명된 기술들은 비디오 코딩에 적용될 수도 있고, 무선 및/또는 유선 애플리케이션들, 또는 코딩된 비디오 데이터가 로컬 디스크에 저장되는 애플리케이션에 적용될 수도 있다.
캡쳐된, 프리캡쳐된, 또는 컴퓨터에 의해 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 통신 표준, 이를테면 무선 통신 프로토콜에 따라 모뎀 (22) 에 의해 변조될 수도 있고, 송신기 (24) 를 통해 목적지 디바이스 (14) 에 송신될 수도 있다. 모뎀 (22) 은 여러 가지의 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는, 증폭기들, 필터들, 및 무선 통신의 경우에 하나 이상의 안테나들을 포함하여, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩된 캡쳐된, 프리캡쳐된, 또는 컴퓨터에 의해 생성된 비디오는 추후의 소비를 위해 저장 매체 (34) 에 또는 파일 서버 (36) 에 또한 저장될 수도 있다. 저장 매체 (34) 는 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적절한 디지털 저장 매체들을 포함할 수도 있다. 그후, 저장 매체 (34) 에 저장된 인코딩된 비디오는 디코딩 및 재생을 위해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 도 1 에 도시되어 있지 않지만, 일부 예들에서 저장 매체 (34) 및/또는 파일 서버 (36) 는 송신기 (24) 의 출력을 저장할 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장할 수 있고 그 인코딩된 비디오를 목적지 디바이스 (14) 에 송신할 수 있는 임의의 형태의 서버일 수도 있다. 예시적인 파일 서버들은 웹서버 (예를 들어, 웹사이트용), FTP 서버, 네트워크 연결된 저장 (network attached storage; NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장할 수 있고 그것을 목적지 디바이스로 송신할 수 있는 임의의 다른 유형의 디바이스를 포함한다. 파일 서버 (36) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다. 마찬가지로, 파일 서버 (36) 는 인터넷 접속을 포함하는 임의의 표준 데이터 접속을 통해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 이것은 파일 서버에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 무선 채널 (예를 들어, 와이파이 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀, 이더넷, USB 등), 또는 이들의 조합을 포함할 수도 있다.
도 1 의 예에서의 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조하여 비디오 디코더 (30) 에 대한 복조된 비트스트림을 생성한다. 채널 (16) 을 통해 통신된 정보는, 비디오 데이터 디코딩에서 비디오 디코더 (30) 에 의해 이용하기 위한, 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 정보를 포함할 수도 있다. 이러한 신택스는 또한 저장 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오 데이터와 함께 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 비디오 데이터를 인코딩 또는 디코딩할 수 있는 각각의 인코더-디코더 (CODEC) 의 일부를 형성할 수도 있다.
디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합될 수도 있거나 또는 목적지 디바이스 (14) 외부에 있을 수도 있다. 몇몇 실시형태들에서, 목적지 디바이스 (14) 는 통합 디스플레이 디바이스를 포함할 수도 있고 외부 디스플레이 디바이스와 인터페이싱하도록 또한 구성될 수도 있다. 다른 실시형태들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이 (liquid crystal display; LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (organic light emitting diode; OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
도 1의 실시형태에서, 통신 채널 (16) 은 무선 주파수 (radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체, 또는 무선 및 유선 매체들의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 패킷 기반의 네트워크, 이를테면 근거리 통신망 (local area network), 광역 통신망 (wide-area network), 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수도 있다. 통신 채널 (16) 은, 일반적으로 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한, 유선 또는 무선 매체들의 임의의 적절한 조합을 포함하는, 임의의 적절한 통신 매체, 또는 상이한 통신 매체들의 집합을 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 에서 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 ITU-T 비디오 코딩 전문가 그룹 (Video Coding Experts Group; VCEG) 및 ISO/IEC 동화상 전문가 그룹 (MPEG) 의 JCT-VC (Joint Collaboration Team on Video Coding) 에 의해 개발되고 있는 고효율 비디오 코딩 (High-Efficiency Video Coding; HEVC) 과 같은 비디오 압축 표준에 따라 동작할 수도 있다. 문서 JCTVC-L1003v34 [Bross 등의 "High efficiency video coding (HEVC) text specification draft 10" (ITU-T SG16 WP3 및 ISO/IEC JTC1/SC29/WG11, 12차 회의: 제네바 스위스, 2013년 1월 14일 ~ 23일) 의 JCT-VC (Joint Collaborative Team on Video Coding)] 는 http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip 로부터 입수가능하다.
도 1 에 도시되지 않았으나, 일부 양태들에서 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있고, 공통 데이터 스트림 또는 개별의 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 핸들링하기 위해 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용 가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 이용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜을 따를 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 여러 적절한 인코더 회로, 이를테면, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 그 조합들 중 어느 것으로 구현될 수도 있다. 이 기술들이 부분적으로 소프트웨어로 구현되는 경우, 디바이스는 그 소프트웨어에 대한 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장할 수도 있고, 본 개시물의 기술들을 수행하기 위해 하나 이상의 프로세서들을 이용하는 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 것도 결합된 인코더/디코더 (CODEC) 의 일부로서 각각의 디바이스에 통합될 수도 있다.
비디오 인코더 (20) 는 비디오 인코딩 프로세스에서의 계수 레벨들을 인코딩하기 위한 본 개시물의 기술들 중 어느 하나 또는 전부를 수행하도록 구성될 수도 있다. 마찬가지로 비디오 디코더 (30) 는 비디오 디코딩 프로세스에서의 계수 레벨들을 디코딩하기 위한 본 개시물의 기술들 중 어느 하나 또는 전부를 수행하도록 구성될 수도 있다. 본 개시물에 설명된 바와 같이 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 이와 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 이와 유사하게, 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다.
디지털 비디오 디바이스들은 보다 효율적으로 디지털 비디오 정보를 인코딩 및 디코딩하는 비디오 압축 기술을 구현한다. 비디오 압축은 비디오 시퀀스에 내재된 리던던시를 제거 또는 감소시키기 위해 공간 (인트라 프레임) 예측 및/또는 시간 (인터 프레임) 예측 기술을 적용할 수도 있다. 위에 설명된 HEVC 표준은 HEVC 테스트 모델 (HEVC Test Model; HM) 로 지칭되는 비디오 코딩 디바이스의 모델에 기초한다. HM 은 예를 들어 ITU-T H.264/AVC 에 따른 기존 디바이스들에 관한 비디오 코딩 디바이스들의 수개의 부가적 능력들을 추정한다. 예를 들어, H.264 가 9 개의 인트라 예측 인코딩 모드들을 제공하는데 반면, HM 은 무려 33 개의 인트라 예측 인코딩 모드들을 제공할 수도 있다. 다음 장은 HM 의 특정 양태들을 보다 자세하게 논의할 것이다.
HEVC 표준에 따른 비디오 코딩에 대해, 비디오 프레임은 코딩 유닛들로 파티셔닝될 수도 있다. 코딩 유닛 (CU) 은 일반적으로 여러 코딩 툴들이 비디오 압축을 위하여 적용되는 기본 유닛으로서 역할을 하는 이미지 영역을 지칭한다. 일반적으로, CU는 Y로서 표시되는 휘도 성분, 및 U 및 V로서 표시되는 2개의 크로마 성분들을 갖는다. 비디오 샘플링 포맷에 의존하여, U 및 V 성분들의 사이즈는, 샘플들의 수의 관점에서, Y 성분의 사이즈와 동일하거나 또는 상이할 수도 있다.
일반적으로 CU는 정사각형이며, 예를 들어, ITU-T H.264와 같은 다른 비디오 코딩 표준들 하에서의 소위 "매크로블록"과 유사한 것으로 간주될 수도 있다. 개발 중에 있는 HEVC 표준의 현재 제안된 양태들 중 일부에 따른 코딩이, 예시적인 목적을 위해 본 출원에서 설명될 것이다. 그러나, 본 개시물에서 설명된 기술들은 다른 비디오 코딩 프로세스들, 이를테면 H.264에 따라 정의되는 프로세스들 또는 다른 표준 또는 독점의 비디오 코딩 프로세스들에 유용할 수도 있다.
HM에 따르면, CU는 하나 이상의 예측 블록들 (PU들) 및/또는 하나 이상의 변환 블록들 (TU들) 을 포함할 수도 있다. 비트스트림 내의 신택스 데이터는 최대 코딩 블록 (largest coding unit; LCU) 을 정의할 수도 있는데, 이것은 픽셀들의 수의 관점에서 가장 큰 CU이다. 일반적으로, CU가 사이즈 구별을 갖지 않는다는 점을 제외하면, CU는 H.264 표준의 매크로 블록과 유사한 목적을 갖는다. 따라서, CU는 서브-CU들로 분할될 수도 있다. 일반적으로, 본 개시에서 CU에 대한 언급들은 픽쳐의 최대 코딩 블록 또는 LCU의 서브-CU를 지칭할 수도 있다. LCU는 서브-CU들로 스플릿될 수도 있고, 각각의 서브-CU는 서브-CU들로 추가로 스플릿될 수도 있다. 비트스트림에 대한 신택스 데이터는 LCU가 분할될 수도 있는 최대 횟수 (CU 심도라고 지칭된다) 를 정의할 수도 있다. 따라서, 비트스트림은 최소 코딩 블록 (smallest coding unit; SCU) 을 또한 정의할 수도 있다. 또한, 본 개시는 CU, PU, 또는 TU 중 어느 것을 지칭하기 위해 용어 "블록", 또는 "부분"을 이용한다. 일반적으로, "부분"은 비디오 프레임의 임의의 서브세트를 지칭할 수도 있다.
LCU는 쿼드트리 데이터 구조와 관련될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하는데, 여기서 루트 노드는 LCU 에 대응한다. CU가 4개의 서브-CU들로 스플릿되면, 그 CU에 대응하는 노드는 4개의 리프 노드들 (leaf nodes) 을 포함하고, 그 각각은 서브-CU들의 하나에 대응한다. 쿼드트리 데이터 구조의 각 노드는 대응하는 CU에 대해 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리 내의 노드는, 그 노드에 대응하는 CU가 서브-CU들로 스플릿되는지의 여부를 나타내는 스플릿 플래그를 포함할 수도 있다. CU에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, CU가 서브 CU들로 스플릿되는지에 의존할 수도 있다. CU가 더 스플릿되지 않으면, 그것은 리프-CU로서 지칭된다. 본 개시에서, 리프-CU의 4개의 서브-CU들은, 오리지널 리프-CU의 명백한 스플릿이 없지만 리프-CU들로서 또한 지칭될 것이다. 예를 들어, 16×16 사이즈에서 CU가 더 이상 스플릿되지 않으면, 4개의 8×8 서브-CU들은, 16×16 CU가 스플릿되지 않았지만, 리프-CU들로서 또한 지칭될 것이다.
리프-CU는 하나 이상의 예측 블록들 (PU들) 을 포함할 수도 있다. 일반적으로, PU는 대응하는 CU의 전체 또는 일부를 나타내며, PU에 대한 레퍼런스 샘플을 취출하는 데이터를 포함할 수도 있다. 예를 들어, PU가 인터 모드 인코딩되면, PU는 PU에 대한 모션 벡터를 정의하는 데이터를 포함할 수도 있다. 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트, 모션 벡터에 대한 해상도 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 레퍼런스 픽쳐, 및/또는 모션 벡터에 대한 레퍼런스 픽쳐 리스트 (예를 들어, List 0 또는 List 1) 를 설명할 수도 있다. PU들을 정의하는 리프-CU에 대한 데이터는, 예를 들어, CU를 하나 이상의 PU들로 파티셔닝하는 것을 또한 설명할 수도 있다. 파티셔닝 모드들은 CU가 코딩되지 않는지, 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지의 여부에 따라 상이할 수도 있다. 인트라 코딩에 대해, PU는 하기에 설명되는 리프 변환 블록와 동일한 것으로 취급될 수도 있다.
최근에 생겨난 HEVC 표준은 변환 블록들 (TU들) 에 따른 변환들을 허용하는데, 이것은 상이한 CU들에 대해 상이할 수도 있다. TU들은 파티셔닝된 LCU에 대해 정의되는 주어진 CU 내에서의 PU들의 사이즈에 기초하여 통상 크기가 정해지지만, 이것이 항상 그런 것은 아닐 수도 있다. TU들은 통상 PU들과 동일한 사이즈이거나 또는 더 작다. 몇몇 실시예들에서, CU에 대응하는 잔여 샘플들은, "잔여 쿼드 트리 (residual quad tree; RQT)" 로서 알려진 쿼드트리 구조를 이용하여 더 작은 블록들로 세분될 수도 있다. RQT의 리프 노드들은 변환 블록들 (TU들) 로 지칭될 수도 있다. TU들에 연관된 화소 차이 값들은 양자화될 수도 있는 변환 계수들을 생성하기 위해 변환될 수도 있다. TU 는 루마 변환 블록 및 2 개의 크로마 변환 블록들을 포함한다. 이로써, TU 에 적용되는 아래 논의된 임의의 코딩 프로세스는 루마 및 크로마 변환 블록들에 정확하게 적용될 수도 있다.
일반적으로, PU는 예측 프로세스와 관련된 데이터를 지칭한다. 예를 들어, PU가 인트라 모드 인코딩되면, PU는 PU에 대한 인트라 예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 실시형태로서, PU가 인터 모드 인코딩되면, PU는 PU에 대한 모션 벡터를 정의하는 데이터를 포함할 수도 있다.
일반적으로, TU는 변환 및 양자화 프로세스들에 대해 이용된다. 하나 이상의 PU들을 갖는 주어진 CU는 하나 이상의 변환 블록들 (TU들) 을 또한 포함할 수도 있다. 예측에 후속하여, 비디오 인코더 (20) 는 PU 에 따라 인코딩 노드에 의해 식별되는 비디오 블록으로부터 잔여 값들을 계산할 수도 있다. 그 후, 코딩 노드는 최초의 비디오 블록 보다는 잔여 값들을 레퍼런스하도록 업데이트된다. 잔여 값들은 엔트로피 코딩을 위한 직렬화된 변환 계수들을 생성하기 위해, TU들에서 특정된 다른 변환 정보 및 변환들을 이용하여 변환 계수들로 변환되고, 양자화되고, 스캔될 수도 있는 픽셀 차이 값들을 포함한다. 코딩 노드는 이들 직렬화된 변환 계수들을 레퍼런스하도록 다시 한번 업데이트될 수도 있다. 본 개시는 CU의 코딩 노드를 지칭하기 위해 통상적으로 용어 "비디오 블록"을 이용한다. 몇몇 특정 경우들에서, 본 개시는 코딩 노드와 PU들 및 TU들을 포함하는 트리블록, 즉, LCU 또는 CU를 지칭하기 위해 용어 "비디오 블록"을 이용할 수도 있다.
비디오 시퀀스는 일련의 비디오 프레임들 또는 픽쳐들을 통상 포함한다. 픽쳐들의 그룹 (GOP) 은 일반적으로 일련의 하나 이상의 비디오 픽쳐들을 포함한다. GOP는 GOP의 헤더, 하나 이상의 픽쳐들의 헤더, 또는 그 외의 곳에, GOP에 포함된 픽쳐들의 수를 설명하는 신택스 데이터를 포함할 수도 있다. 픽쳐의 각각의 슬라이스는 개별 슬라이스에 대한 인코딩 모드를 기술하는 슬라이스 신택스 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위해 개개의 비디오 슬라이스들 내의 비디오 블록들에 대해 통상 동작한다. 비디오 블록은 CU 내의 코딩 노드에 대응할 수도 있다. 비디오 블록들은 고정된 또는 가변적인 사이즈들을 가질 수도 있고, 특정 코딩 표준에 따라 사이즈가 상이할 수도 있다.
블록 (예를 들어, 비디오 데이터의 예측 블록) 을 코딩하기 위해, 블록에 대한 예측자가 먼저 유도된다. 예측자는 인트라 (I) 예측 (즉, 공간적 예측) 또는 인터 (P 또는 B) 예측 (즉, 시간적 예측) 중 어느 하나를 통해 유도될 수 있다. 따라서, 일부 예측 유닛들은 동일 프레임 (또는 슬라이스) 의 이웃하는 레퍼런스 블록들에서의 레퍼런스 샘플들에 대한 공간적 예측을 이용하여 인트라 코딩 (I) 될 수도 있고, 다른 예측 유닛들은 다른 이전에 코딩된 프레임들 (또는 슬라이스들) 에서의 레퍼런스 샘플들의 블록들에 대해 단반향 인터 코딩 (P) 또는 양방향 인터 코딩 (B) 될 수도 있다. 각각의 경우, 레퍼런스 샘플들은 코딩될 블록에 대한 예측 블록을 형성하는데 이용될 수도 있다.
예측 블록의 식별시, 오리지널 비디오 데이터 블록에서의 픽셀들과 그 예측 블록에서의 픽셀들 사이의 차이가 결정된다. 이 차이는 예측 잔여 데이터로서 지칭될 수도 있고, 코딩된 블록을 표현하는데 선택되는 예측 블록에서의 픽셀 값들과, 코딩된 블록에서의 픽셀 값들 사이의 픽셀 차이들을 표시한다. 더 나은 압축을 달성하기 위해, 예측 잔여 (즉, 픽셀 차이 값들의 어레이) 는, 일반적으로, 예를 들어, 이산 코사인 변환 (discrete cosine transform; DCT), 이산 사인 변환 (discrete sine transform; DST), 정수 변환, 카루넨-루베 (Karhunen-Loeve; K-L) 변환, 또는 변환 계수들을 생성하는 다른 변환을 이용하여 변환될 수도 있다.
변환 블록, 이를테면, TU 에서의 잔여 데이터는 공간, 픽셀 도메인에 존재하는 픽셀 차이 값들의 2 차원 (2D) 어레이로 배열될 수도 있다. 변환은 잔여 픽셀 값들을 주파수 도메인과 같은 변환 도메인에서의 변환 계수의 2 차원 어레이로 변환한다. 추가의 압축을 위하여, 변환 계수들은 엔트로피 코딩 이전에 양자화될 수도 있다. 일부 예들에서, 이를테면, 변환 스킵 또는 변환 바이패스가 있는 손실성 코딩 또는 무손실성 코딩에서는, 변환 및 양자화 절차들이 계수들에 대해 스킵될 수도 있다.
그 후, 엔트로피 코더가 엔트로피 코딩, 이를테면, CAVLC (Context Adaptive Variable Length Coding), CABAC (Context Adaptive Binary Arithmetic Coding), PIPE (Probability Interval Partitioning Entropy Coding) 등을 계수들에 적용한다. 일부 예들에서, 비디오 인코더 (20) 는 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성하기 위해 양자화된 변환 계수들을 스캔하기 위하여 미리 정의되는 스캔 순서를 활용할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 적응성 스캔 (adaptive scan) 을 수행할 수도 있다. 1 차원 벡터를 형성하기 위해 계수들을 스캔한 후, 비디오 인코더 (20) 는 1 차원 벡터를 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 또한, 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의해 이용하기 위한 인코딩된 비디오와 연관된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
본 개시물은 CABAC (context adaptive binary arithmetic coding) 엔트로피 코더들 또는 다른 엔트로피 코더들, 이를테면, PIPE (probability interval partitioning entropy coding) 또는 관련 코더들에 대한 기술들에 관련된다. 산술 코딩은 비정수 길이 코드워드들에 심볼들을 맵핑할 수 있기 때문에 이 산술 코딩은 높은 코딩 효율을 가진 많은 압축 알고리즘들에 이용되는 엔트로피 코딩의 형태이다. 산술 코딩 알고리즘의 일 예는 CABAC (Context Based Binary Arithmetic Coding) 이다.
일반적으로, CABAC 을 이용한 엔트로피 코딩 데이터 심볼들은 다음 단계들 중 하나 이상을 수반한다:
(1) 바이너리화: 코딩될 심볼이 비바이너리 값으로 되면, 이는 소위 "빈들"의 시퀀스에 맵핑된다. 각각의 빈은 "0" 또는 "1" 의 값을 가질 수도 있다.
(2) 컨텍스트 할당: 각각의 빈 (규칙적 모드에서) 은 소정 컨텍스트에 할당된다. 컨텍스트 모델은 빈에 대해 이용가능한 정보, 이를테면, 이전에 인코딩된 심볼들의 값 또는 빈 넘버에 기초하여 소정의 빈에 대한 컨텍스트가 계산되는 방법을 결정한다.
(3) 빈 인코딩 : 빈들은 산술 인코더로 인코딩된다. 빈을 인코딩하기 위하여, 산술 인코더는 빈의 값의 확률, 즉, 빈의 값이 "0" 과 동일할 확률, 및 빈의 값이 "1" 과 동일할 확률을 입력으로서 요구한다. 각각의 컨텍스트의 추정된 확률은 "컨텍스트 상태"라 불리는 정수값에 의해 표현된다. 각각의 컨텍스트는 상태를 가지며, 따라서, 상태 (즉, 추정된 확률) 는 하나의 컨텍스트에 할당된 빈들에 대해 동일한 것이며, 컨텍스트들 간에 상이하다.
(4) 상태 업데이트: 선택된 컨텍스트에 대한 확률 상태는 빈의 실제 코딩된 값에 기초하여 업데이트된다 (예를 들어, 빈 값이 "1"이였다면, "1들"의 확률이 증가된다).
바이패스 모드에서 CABAC 를 이용하여 데이터 심볼들을 엔트로피 코딩하는 경우에, 코딩될 심볼은 빈들의 시퀀스로 바이너리화되고, 고정된 동일 확률 모델로 (예를 들어, 지수적-골룸 코드 또는 골룸 라이스 코드로) 산술 코딩된다. 바이패스 모드는 컨텍스트 할당 또는 확률 상태 업데이트를 요구하지 않는다. 예를 들어, 본 개시물은 라이스 파라미터에 의해 정의되는 코드들을 이용하여 계수들에 대한 계수 레벨들의 나머지 절대값들의 코딩을 바이패스하기 위한 기술들을 설명한다. PIPE (probability interval partitioning entropy coding) 는 산술 코딩의 것들과 유사한 원리들을 이용하며 따라서 또한 본 개시물의 기술들을 또한 이용할 수 있음을 주지해야 한다.
H.264/AVC 및 HEVC 에서의 CABAC 는 상태들을 이용하고 각각의 상태는 확률에 묵시적으로 관련된다. CABAC 의 변형도 존재하며, 여기에서, 심볼 ("0" 또는 "1") 의 확률이 직접 이용된다, 즉, 확률 또는 확률의 정수 버전이 상태이다. 예를 들어, 이러한 CABAC 의 변형은 "France Telecom, NTT, NTT DOCOMO, Panasonic 및 Technicolor 에 의한 비디오 코딩 기술 제안의 설명" [JCTVC-A114, 1st JCT-VC Meeting, Dresden, DE, 2010 년 4 월 (이하, " JCTVC-A114” 으로 지칭됨] 및 A. Alshin 및 E. Alshina 의 "Multi-parameter probability update for CABAC" [JCTVC-F254, 6차 JCT-VC 회의, 이탈리아 토리노, 2011 년 7월 (이하, "JCTVC-F254"으로 지칭됨)] 에서 기술된다.
변환 및 양자화되든, 또는 변환도 양자화도 되지 않든 간에, 계수들의 블록을 엔트로피 코딩하기 위하여, 스캔 프로세스가 일반적으로 수행되어, 블록에서의 계수들의 2 차원 (2D) 어레이가 특정 스캔 순서에 따라, 계수들의 순서화된 1 차원 (1D) 어레이, 즉 벡터로 재정렬되게 된다. 그 후, 엔트로피 코딩은 계수들의 벡터에 적용된다. 변환 유닛에서의 계수들의 스캔은 엔트로피 코더에 대한 계수들의 2D 어레이를 직렬화한다. 유의 맵은 유의 부분 (즉, 비-제로) 계수들의 포지션들을 표시하기 위해 생성될 수도 있다. 스캔은 유의 (즉, 비-제로) 계수들의 스캔 레벨들에 및/또는 유의 계수들의 코드 부호들에 적용될 수도 있다.
HEVC 표준에서, 유의 변환 계수들의 포지션 정보 (예를 들어, 유의 맵) 가 먼저 변환 블록에 대해 코딩되어, 스캔 순서에서 최종 비-제로 계수의 위치를 표시한다. 유의 맵 및 레벨 정보 (즉, 계수들의 절대값들 및 부호) 가 역방향 스캔 순서에서 각각의 계수에 대해 코딩된다.
도 2 는 계수 레벨 코딩에 대한 예시적인 역방향 스캔 순서들을 보여주는 개념도이다. H.264 표준은 지그재그 스캔을 정의한다. HEVC 표준은 3 개의 상이한 스캔들: 서브블록 대각선 스캔, 서브블록 수평 스캔, 및 서브블록 수직 스캔을 정의한다. 도 2 는 변환 블록의 8×8 서브블록에 각각 적용되는 역방향 지그재그 스캔 패턴 (29), 역방향 수직 스캔 패턴 (31), 역방향 수평 스캔 패턴 (33) 및 역방향 대각선 스캔 패턴 (35) 을 예시한다. 역방향 대각선 스캔 패턴 (35), 역방향 지그재그 스캔 패턴 (29), 역방향 수직 스캔 패턴 (31), 및 역방향방향 수평 스캔 패턴 (33) 은 변환 블록의 하부 좌측 코너에서의 상위 주파수 계수들로부터 변환 블록의 상부 좌측 코너에서의 하위 주파수 계수들로 진행함을 주지해야 한다.
서브블록 대각선 스캔 패턴 (35), 서브블록 수평 스캔 패턴 (33), 및 서브블록 수직 스캔 패턴 (31) 은 HEVC 표준에서 4×4 및 8×8 변환 블록들에 적용될 수도 있다. 서브블록 대각선 스캔 패턴 (35) 은 또한 HEVC 표준에서, 16×16 및 32×32 변환 블록들에 적용될 수도 있다. 일부 예들에서, 서브블록 대각선 스캔 패턴 (35) 은 또한 8×8 TU 에 적용될 수도 있다. 서브블록 기반 스캔에서, 보다 큰 변환 블록의 하나의 4×4 서브블록은 더 큰 변환 블록내의 다른 4×4 서브블록으로 진행하기 전에 스캔된다. 다른 예에서, "서브블록" 은 이용된 스캔 순서에 따라 복수의 연속적으로 스캔된 계수들로 구성될 수도 있다. 예를 들어, "서브블록" 은 대각선 스캔 순서에 따라 16 개의 연속적으로 스캔된 계수들로 구성될 수도 있다.
도 3 은 계수 그룹들 (CGs) 의 계수 레벨 코딩에 대한 서브블록 기반 역방향 대각선 스캔 순서를 보여주는 개념도이다. 도 3 은 4 개의 4×4 서브블록들 (37A, 37B, 37C, 37D) 로 구성되는 8×8 변환 블록을 예시한다. 도 3 에 도시된 바와 같이, 서브블록 (37D) 에서의 계수들은 서브블록 (37C) 에서의 스캔 계수들 전에 스캔된다. 그 후, 스캔은 서브블록 (37C) 로부터 서브블록 (37B) 그리고 최종적으로 서브블록 (37A) 로 진행한다. 도 3 은 각각의 서브블록에서 역방향 대각선 스캔 순서를 나타낸다. 다른 예들에서, 임의의 스캔 순서가 이용될 수도 있다 (예를 들어, 수평, 수직, 지그재그 등). 일부 예들에서, 순방향 스캔 순서들이 각각의 서브블록 내에서 이용될 수도 있다.
HEVC 표준에서, 계수들은 청크 또는 서브세트로 그룹화될 수도 있다. 계수들의 유의 맵 및 레벨 정보 (즉, 절대값 및 부호) 은 각각의 서브세트에 대해 코딩된다. 계수들의 서브세트는 계수 그룹 (CG) 으로서 본 개시물에서 지칭될 수도 있다. CG 는 4×4 서브블록에 대응할 수도 있는 변환 블록에 대하여 스캔 순서에 있어서 n (n=16) 개의 연속하는 계수들로서 정의될 수도 있다. 일 예에서, 서브세트는 4×4 변환 블록 및 8×8 변환 블록에 대해 스캔 순서 (예를 들어, 순방향 또는 역방향 대각선, 수평 또는 수직 스캔 순서) 를 따라 16 개의 연속하는 계수들로 구성된다. 16×16 및 32×32 변환 블록들에 대해, 더 큰 변환 블록 내의 계수들의 4×4 서브블록이 서브세트로서 처리된다. 도 3 의 예에서, 서브블록들 (37) 각각이 CG 일 수도 있다.
아래 설명된 심볼들은 CG 내에서 계수 레벨 정보를 표현하도록 코딩된다. 일 예에서, 모든 심볼들은 역방향 스캔 순서로 코딩된다. 심볼들 각각은 역방향 스캔 순서에 따라 CG 의 개별적인 스캔으로 코딩될 수도 있다. 다음 심볼들은 "플래그들" 로서 지칭될 수도 있다. 본 개시물에서 논의되는 "플래그들" 중 어느 것이 바이너리 심볼로 제한될 필요는 없으며 다수의 비트 신택스 엘리먼트들로서 구현될 수도 있음을 주지해야 한다.
sigMapFlag 로서 또한 지칭되는 significant_coeff_flag 는 서브세트에서 각각의 계수의 유의성을 나타낸다. 제로보다 큰 절대값을 가진 계수는 유의성있는 것으로 고려된다. 일 예로서, 0 의 sigMapFlag 값은 계수가 유의성이 없음, 즉 0 보다 크지 않음을 나타내는 한편, 1 의 값은 계수가 유의성이 있음, 즉, 0 보다 큼을 나타낸다. 플래그는 일반적으로 유의성 플래그로서 지칭될 수도 있다. signFlag 로서 또한 지칭되는 coeff_sign_flag 는 임의의 비-제로 계수들 (즉, sigMapFlag 를 1 로서 가진 계수들) 에 대한 부호 정보를 나타낸다. 예를 들어, 이 플래그에 대한 제로는 양의 부호를 나타내고, 1 은 음의 부호를 나타낸다.
gr1Flag 로서 또한 지칭되는 coeff_abs_level_greater1_flag 는 계수의 절대값이 임의의 비-제로 계수들 (즉, sigMapFlag 를 1 로서 가진 계수들, 또는 여기에서 sigMapFlag 이 1 로서 묵시적으로 유도됨) 에 대하여 1 보다 큰지의 여부를 나타낸다. 일 예로서, 0 의 gr1Flag 값은 계수가 1 보다 큰 절대값을 갖지 않음을 나타내는 한편, gr1Flag 에 대해 1 의 값은 계수가 1 보다 큰 절대값을 가짐을 나타낸다. 플래그는 일반적으로 1 보다 큰 플래그 (greater-than-one flag) 로서 지칭될 수도 있다.
gr2Flag 로서 또한 지칭되는 coeff_abs_level_greater2_flag 는 계수의 절대값이 1보다 크지 않은 절대값을 가진 임의의 계수들 (즉, gr1Flag 를 1 로서 가진 계수) 에 대해 2 보다 큰지의 여부를 나타낸다. 일 예로서, 0 의 gr2Flag 값은 계수가 2 보다 큰 절대값을 갖지 않음을 나타내는 한편, gr2Flag 에 대해 1 의 값은 계수가 2 보다 큰 절대값을 가짐을 나타낸다. 이 플래그는 일반적으로 2 보다 큰 플래그 (greater-than-two flag) 로서 지칭될 수도 있다. sigMapFlag, gr1Flag 및 gr2Flag 는 각각 CABAC 를 이용하여 코딩될 수도 있다.
levelRem 신택스 엘리먼트로서 또한 지칭되는 coeff_abs_level_remaining 신택스 엘리먼트는 이전 플래그들에 의해 코딩된 값들보다 더 큰 절대값들을 가진 임의의 계수들에 대한 계수 레벨의 나머지 절대값을 나타낸다. 일반적으로, levelRem 신택스 엘리먼트에 대해, 계수 레벨에서 3 을 뺀 것의 절대값 (즉, abs(level)-3) 은, 2 보다 큰 절대값을 갖는 각각의 계수 (즉, gr2Flag 를 1 로서 가진 계수) 에 대해 코딩된다. 일부 예들에서, gr1Flag 및/또는 gr2Flag 의 최대 값이 현재 CG 에 대해 도달할 때, levelRem 신택스 엘리먼트는 2 보다 작거나 같은 절대값들을 갖는 계수 레벨들을 코딩하는데 이용될 수도 있다. levelRem 신택스 엘리먼트는 라이스 파라미터, 예를 들어, 골룸-라이스 코드 또는 지수적-골룸 코드의 값에 의해 정의되는 코드들을 이용하여 코딩될 수도 있다.
도 4 는 CG (39) 에 대한 계수 레벨들을 코딩하는 예시적인 역방향 대각선 스캔을 보여주는 개념도이다. CG (39) 는 4×4 변환 블록일 수도 있거나, 8×8, 16×16 또는 32×32 변환 블록에서의 4×4 서브블록일 수도 있다. 역방향 스캔 순서로 스캔되는 도 4 에 도시된 계수들의 인코딩된 심볼들이 표 1 에 요약되어 있다. 표 1 에서, Scan_pos 는 도 4 에 도시된 CG (39) 의 역방향 대각선 스캔 패턴을 따르는 계수의 포지션을 지칭한다. Scan_pos 15 는 첫번째로 스캔되는 계수이고, CG (39) 의 하부 우측 코너에 위치된다. scan_pos 15 에서의 계수는 0 의 절대값을 갖는다. Scan_pos 0 은 마지막으로 스캔되는 계수이고, CG (39) 의 상부 좌측 코너에 위치된다. scan_pos 0 에서의 양자화된 계수는 0 의 절대값을 갖는다. 4×4 변환 블록 또는 더 큰 변환 블록에서의 마지막 4×4 서브블록의 경우에, 첫번째 4 개의 sigMapFlags 는 마지막 비-제로 계수의 포지션을 알고 있기 때문에, 코딩될 필요가 없다. 즉, sigMapFlag 의 코딩은 마지막 비-제로 계수 (이 예에서, Scan_pos 11 에서의 계수) 에서 시작할 수도 있다.
[표 1]
Figure 112016006017511-pct00001
표 1. 계수 그룹의 계수들에 대한 코딩된 심볼들
이들 심볼들 중에서, sigMapFlag, gr1Flag 및 gr2Flag 의 빈들은 예를 들어, CABAC 를 이용하여 적응성 컨텍스트 모델로 인코딩된다. signFlag 및 levelRem 의 바이너리화된 빈들은 고정된 동일 확률 모델로 (예를 들어, 지수적 골룸 코드 또는 골룸 라이스 코드로) 바이패스 모드를 통하여 인코딩된다.
위에 설명된 바와 같이, 값이 계수 코딩을 위한 이전 스캔 패스들에서 코딩된 것보다 더 크면, HEVC 표준에서의 신택스 엘리먼트 coeff_abs_level_remaining (즉, levelRem) 은 계수에 대한 계수 레벨의 나머지 절대값을 나타낸다. 이 신택스 엘리먼트는 스루풋을 증가시키기 위하여 바이패스 모드에서 코딩되었다. HEVC 표준은 작은 값에 대하여 골룸 라이스 코딩을 채택하며, 더 큰 값들에 대하여 지수적-골룸 (Exp-Golomb) 코딩으로 스위칭한다. Exp-Golomb 코드들과 골룸 라이스 코드들 간의 트랜지션 포인트는 유너리 코드 길이가 4 와 동일할 때이다. 라이스 파라미터는 골룸 코드들의 계열로부터 설정된 코드워드를 선택하기 위한 튜닝가능 값이다.
예를 들어, 튜닝가능 라이스 파라미터 m 이, 몫 q=floor(n / m), 나머지 r=n-q×m (m 은 2 의 거듭제곱) 로서 주어지면, 골룸 라이스 코드들은 골룸 코드들의 서브세트이고, 값 n >=0 을 표현한다. 몫 q 은 프리픽스이고 유너리 코드 표현을 갖는다. 나머지 r 는 서픽스이고, 고정된 길이 표현을 갖는다. Exp-Golomb 코드들에서, 코드 구조는 고정된 길이 서픽스에 의해 후속되는 유너리 프리픽스에 의해 유사하게 형성되며, 서픽스 부분에서의 코드워드들의 수가 유너리 코드에서의 각각의 비트 뒤에서 두배로 된다. 따라서, Exp-Golomb 코드들은 코드워드 길이의 보다 저속의 성장을 갖는다. 일반적으로, 라이스 파라미터의 더 큰 값은 코드들의 보다 저속의 성장을 가져오며, 이는 큰 계수 값들을 코딩할 때 보다 큰 효율성을 허용한다. 라이스 파라미터들에 대한 추가의 세부 사항들은 "Transform Coefficient Coding in HEVC" [J. Sole, R. Joshi, M. Karczewicz, N. Nguyen, T. Ji, G. Clare, F. Henry, A. Duenas; IEEE Transactions on Circuits and Systems for Video Transmission (HEVC 에 대한 특수 발행본) 2012년 12월]에서 찾을 수도 있다.
HEVC 표준에서, 라이스 파라미터는 각각의 계수 그룹 (CG) 의 시작시에 0 의 초기 값과 같게 설정되며, 다음과 같이, 코딩되고 있는 현재 계수에 대한 계수 레벨의 절대값 및 라이스 파라미터의 값에 의존하여, CG 의 코딩 동안에 조건적으로 업데이트된다:
Figure 112016006017511-pct00002
여기에서, cRiceParam 는 라이스 파라미터이고, absCoeffLevel 은 현재 계수에 대한 계수 레벨의 절대값이며, min( ) 은 최소 값을 선택하는 함수이다. HEVC 라이스 파라미터는 큰 절대값들이 분포에서 관측될 때 바이너리화 프로세스가 계수 통계들에 점진적으로 적응하는 것을 허용한다.
위에 언급된 바와 같이, HEVC 표준에서, 라이스 파라미터는 이전 CG 에서 계수들의 나머지 절대값들을 코딩한 후에, 비디오 데이터의 변환 블록에서 현재 CG 에 대해 제로의 초기 값으로 재설정된다. 스크린 컨텐츠에 대해 계수 레벨들을 코딩하는 경우, 또는 변환 스킵 모드에서의 무손실성 코딩 또는 손실성 코딩의 경우에, 라이스 파라미터의 값을 제로로 설정하는 것은 최적의 것이 아닐 수도 있다. 본 개시물의 기술들은 라이스 파라미터를 제로로 항상 재설정하는 것 대신에, 각각의 CG 의 시작시, 라이스 파라미터의 초기 값을 적응적으로 설정한다. 본 기술들에 따르면, 현재 CG 에 대한 라이스 파라미터의 초기 값은 비-제로 값과 같게 재설정될 수도 있다. 일부 예들에서, 라이스 파라미터의 초기 값은 특히 스크린 컨텐츠 및 무손실성 코딩에 대해, 보다 양호한 코딩 성능을 제공하기 위하여 비디오 데이터의 통계에 기초하여 결정될 수도 있다.
라이스 파라미터 초기화 방식의 일 예에서, 라이스 파라미터는 이전 CG 를 코딩한 후에 재설정되지 않을 수도 있다. 그 대신에, 현재 CG 에 대한 라이스 파라미터의 초기 값은 이전 CG 를 코딩하는 것의 종료시 라이스 파라미터에 대하여 획득된 것과 동일한 값으로 설정될 수도 있다. HEVC 초기화 방식에서와 같이, 초기 값은 현재 CG 의 시작시 0 과 같게 설정될 수도 있다. 그러나, HEVC 방식과 달리, 라이스 파라미터의 값은 0 으로 설정되는 것이 요구되지 않는다.
라이스 파라미터 초기화 방식의 다른 예에서, 현재 CG 에 대한 라이스 파라미터의 초기 값은 이전 CG 를 코딩한 한 라이스 파라미터의 값에 기초하는 값으로 설정될 수도 있다. 특정 예에서, CG 의 시작시의 라이스 파라미터는 다음과 같이 초기화될 수도 있다.
Figure 112016006017511-pct00003
위의 예에서, 라이스 파라미터의 값은 이전 CG 를 코딩한 후에 라이스 파라미터의 값에서 감소값 또는 제로 중 최대 값의 선택에 기초하여 현재 CG 에 대해 초기화된다. 일부 다른 예들에서, 라이스 파라미터의 초기 값은 다음 예에서와 같이 캡핑될 수도 있다.
Figure 112016006017511-pct00004
이 예에서, 라이스 파라미터의 초기화 값은 2 보다 크지 않도록 캡핑된다.
일부 예들에서, 1 이외의 값들을 이용하여 라이스 파라미터의 이전 값으로부터 1 이외의 2 를 뺀 것 (즉, n 은 2 와 같음) 을 포함하는, 라이스 파라미터의 이전 값 (예를 들어, 값 n) 을 감소시킬 수도 있다. 예를 들어, 라이스 파라미터를 초기화하기 위한 감소의 값은 현재 CG 가, 변환이 적용되는 변환 블록에 포함되는지의 여부에 기초하는 변수일 수도 있다. 예시적인 식은 다음과 같을 수도 있다.
Figure 112016006017511-pct00005
위의 예에서, 변환 블록이 변환 스킵 블록이면 (즉, transform_skip_flag=1), 라이스 파라미터의 값은 이전 CG 를 코딩한 후에 라이스 파라미터의 값에서 1 만큼의 감소값 또는 제로 중 최대 값의 선택에 기초하여 현재 CG 에 대해 초기화된다. 한편, 변환 블록이 변환 스킵 블록이 아니면 (즉, transform_skip_flag=0), 라이스 파라미터의 값은 이전 CG 를 코딩한 후에 라이스 파라미터의 값에서 2 만큼의 감소값 또는 제로 중 최대 값의 선택에 기초하여 현재 CG 에 대해 초기화된다.
본 개시물에 설명되는 라이스 파라미터 초기화 방식들의 예시적인 경우들은 모든 변환 블록들에 포함되는 CG들에 적용될 수도 있거나, 또는 변환이 변환 블록에 적용되는지의 여부에 기초하여 CG들에 적용될 수도 있다. 예를 들어, 변환 스킵 또는 변환 바이패스에 의한 변환 블록의 경우에, 라이스 파라미터 값은 블록에서 변환 블록에서 현재 CG 에 대하여 0 으로 재설정되지 않을 수도 있지만, 변환이 적용되었던 변환 블록들에 대해서는, 라이스 파라미터는 변환 블록에서 현재 CG 에 대해 0 으로 재설정될 수도 있다.
예를 들어, 변환 스킵 모드에서 손실성 코딩의 경우에, 현재 CG 에 대해 초기화된 라이스 파라미터의 값에서의 감소는 변환 스킵 블록들에서 CG들에 대해서만 적용될 수도 있다. 예시적인 식은 다음과 같을 수도 있다.
Figure 112016006017511-pct00006
위의 예에서, 변환 블록이 변환 스킵 블록이면 (즉, transform_skip_flag=1), 라이스 파라미터의 값은 이전 CG 를 코딩한 후에 라이스 파라미터의 값에서 1 만큼의 감소값 또는 제로 중 최대 값의 선택에 기초하여 현재 CG 에 대해 초기화된다. 한편, 변환 블록이 변환 스킵 블록이 아니면 (즉, transform_skip_flag=0), 라이스 파라미터의 값은 HEVC 초기화 방식에서와 같이, 현재 CG 에 대해 제로로 초기화된다.
라이스 파라미터 초기화 방식의 추가의 예에서, 현재 CG 에 대한 라이스 파라미터의 초기 값은 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 결정될 수도 있다. 계수 레벨들에 대한 통계는 이전에 코딩된 계수들에 대한, 계수 레벨들의 절대값들의 통계, 또는 계수 레벨들의 나머지 절대값들의 계수 레벨들의 통계를 포함할 수도 있다. 초기화 방식은 현재 CG 와 동일한 변환 블록에 포함된 CG들에서의 이전에 코딩된 계수들에 의존할 수도 있고/있거나 현재 CG 를 포함하는 변환 블록의 이전인 다른 변환 블록들에 포함된 CG들에서의 이전에 코딩된 계수들에 의존할 수도 있다.
일부 경우들에서, 통계 기반 라이스 파라미터 초기화 방식은 변환 블록 유형, 변환 블록 사이즈, 변환 블록에서의 CG 의 포지션, 변환 블록이 인트라 예측 슬라이스 유형을 갖는지 또는 인터 예측 슬라이스 유형을 갖는지의 여부, 변환 블록의 컬러 성분, 및 변환 블록의 비트 심도 중 하나 이상에 의존할 수도 있다. 추가로, 통계 기반 라이스 파라미터 초기화 방식은 이전 및 현재 변환 블록들에서 이전에 코딩된 계수들의 나머지 절대 레벨에 의존할 수도 있다. 예를 들어, 라이스 파라미터 초기화 방식은 이전 CG들에서 계수 레벨의 최종 코딩된 절대값 또는 계수 레벨의 최종 코딩된 나머지 절대값, 이전 CG들에서 이전에 코딩된 계수들에 대한 계수 레벨들의 합 또는 다른 통계, 또는 보다 단순하게는 이전 CG들에서 코딩된 제 1 계수의 계수 레벨에 의존할 수도 있다.
통계 기반 라이스 파라미터 초기화 방식에 대해 이용된 통계 수집의 수개의 예들은 아래 설명된다. 본 개시물에서, 용어 "statCoeff" 및 용어 "m_sumCoeff" 는 통계를 표기하도록 상호교환적으로 이용되며, 용어 "uiLevel" 은 이전에 코딩된 계수의 계수 레벨의 절대값 또는 나머지 절대값을 표기하는데 이용된다.
일 예에서, 통계는 비디오 데이터의 코딩 유닛 (CU) 또는 슬라이스에 대한 이전에 코딩된 계수들의 계수 레벨들의 절대값들 또는 나머지 절대값들의, 평균, 또는 이동 평균, 또는 유사한 통계를 계산함으로써 결정될 수도 있다. 컨텍스트 적응적 바이너리 산술 코딩 (CABAC) 컨텍스트들에 대한 것과 유사하게, 평균 또는 이동 평균은 비디오 데이터의 슬라이스의 시작시 초기화될 수도 있고, CG 에서 현재 코딩된 계수 레벨들에 기초하여 슬라이스의 각각의 CG 에서 업데이트될 수도 있다. 계수 레벨의 나머지 절대값 (즉, coeff_abs_level_remaining) 은 라이스 파라미터에 의해 정의된 코드들, 예를 들어, 골룸 라이스 코드들, 또는 지수적-골룸 코드들을 이용하여 바이패스 코딩됨을 이해해야 한다. CABAC 의 설명 및 CABAC 컨텍스트들의 초기화에 대한 비교는 이해를 지원하기 위해서만 제공된다.
다른 예에서, 통계는 주어진 이전에 코딩된 계수에 대한 계수 레벨을 통계의 값에 직접 비교한 다음, 비교에 기초하여 통계의 값을 증가, 감소 또는 유지할지의 여부를 결정함으로써 결정될 수도 있다. 예를 들어, 통계는 다음 조건식에 따라 결정될 수도 있다.
Figure 112016006017511-pct00007
위의 식에서, 통계 (statCoeff) 의 값은, 현재 계수 레벨 (uiLevel) 이 이전 statCoeff 보다 크면 증가되고, 현재 계수 레벨이 statCoeff 보다 작으면 감소되거나, 또는 현재 계수 레벨이 이전 statCoeff 와 동일하면 변경되지 않은 상태로 유지된다. statCoeff 의 값은 CABAC 컨텍스트들이 초기화될 때, 즉, 코딩되고 있는 비디오 데이터의 각각의 슬라이스의 시작시, 코딩 프로세스에서 동일한 포인트에서 0 으로 초기화될 수 있다.
다른 예에서, 통계는 주어진 이전에 코딩된 계수에 대한 계수 레벨을 미리 정의된 통계의 함수에 비교한 다음, 비교에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정함으로써 결정될 수도 있다. 또한, 이 예에서, 통계 (m_sumCoeff) 의 값은 비디오 데이터의 각각의 슬라이스의 시작시 제로로 재설정될 수도 있다. 미리 정의된 통계의 함수는 제 2 상수값으로 나누어진 통계의 값에 의해 좌측 시프트되는 제 1 상수값에 기초할 수도 있다. 통계 (m_sumCoeff) 의 함수의 일 예는 다음과 같이 주어진다.
Figure 112016006017511-pct00008
위에 의사-코드에서, a, b, c, d, e, f, g 및 h 는 파라미터들이고, << 는 좌측 시프트 연산이다.
다음은 파라미터들 a, b, c, d, e, f, g 및 h 의 예시적인 값들을 이용하는 위의 식의 수개의 예들이다. a=3, d=2, 제 1 상수값 (h) 이 1 과 같고 제 2 상수값 (f) 이 4 와 같고, 나머지 파라미터들이 0 과 같게 설정되는 경우에, 통계 (m_sumCoeff) 의 함수는 다음과 같이 주어진다.
Figure 112016006017511-pct00009
a=1, d=1 인 경우, 제 1 상수값 (h) 이 1 과 같고 제 2 상수값 (f) 이 4 와 같고, 나머지 파라미터들이 0 과 같게 설정되는 경우에, 통계 (m_sumCoeff) 의 함수는 다음과 같이 주어진다.
Figure 112016006017511-pct00010
일부 예들에서, 계수 레벨들의 통계의 함수는 슬라이스의 시작시 제로로 초기화되기 때문에 통계에 적용된 업데이트들의 총 수에 관련된 변수를 포함할 수도 있다. 총 카운터 변수 (m_total_counter) 를 포함하는 통계 (m_sumCoeff) 의 함수의 일 예는 다음과 같이 주어진다.
Figure 112016006017511-pct00011
Figure 112016006017511-pct00012
위에 의사-코드에서, a, b, c, d, e, f, g 및 h 는 파라미터들이고, << 는 좌측 시프트 연산이고, m_total_counter 는 통계가 증가 또는 감소되는지의 여부와 무관하게 통계 (m_sumCoeff) 의 각각의 업데이트 후에 증가한다.
위에 설명된 통계 수집은 미리 정의된 빈도에 따라 통계 기반 라이스 파라미터 초기화 방식에 대해 수행될 수도 있다. 일 예에서, 통계는 CG 에서 계수 레벨의 각각의 절대값을 코딩한 후에, 또는 CG 에서의 계수 레벨의 각각의 나머지 절대값을 코딩한 후에 업데이트될 수도 있다. 다른 예에서, 복잡도에서의 증가를 제한하기 위하여, 통계는 변환 블록 당 또는 CG 당 한번만 업데이트될 수도 있다. 이 접근 방식에서, 각각의 코딩된 계수 레벨에 대해 통계를 업데이트할 필요가 없을 수도 있으며, 그 대신에 통계는 변환 블록 당 또는 CG 당 한번 업데이트될 수도 있다 (HEVC 에서는 16 개의 계수들마다 한번이다).
일부 경우들에서, 통계는 CG 에서 계수 레벨의 제 1 절대값이 코딩될 때에만 업데이트될 수도 있다. 다른 경우들에서, 통계는 CG 에서 계수 레벨의 제 1 나머지 절대값이 코딩될 때에만 업데이트될 수도 있다. 다음 의사-코드는 위에 설명된 통계 수집 식에 대한 이러한 제약을 예시하며, 여기에서, 제 1 코딩된 계수 레벨 (uiLevel) 의 값은 통계 (statCoeff) 의 값에 직접 비교된다.
Figure 112016006017511-pct00013
위의 식에서, 용어 "firstGolombCoeffinCG" 는 현재 코딩된 계수 레벨이 CG에서 제 1 나머지 절대값인지의 여부를 표기하는데 이용되고, 용어 "statCoeff" 는 통계를 표기하는데 이용되며, 용어 "uiLevel" 는 이전에 코딩된 계수의 계수 레벨의 제 1 절대값 또는 제 1 나머지 절대값을 표기하는데 이용된다.
빈도 제약은 다음의 의사-코드에서 도시된 바와 같이, 위에 설명된 통계 수집 식에 유사하게 적용될 수도 있으며, 여기에서, 제 1 코딩된 계수 레벨 (uiLevel) 의 값은 통계 (statCoeff) 의 값에 직접 비교된다.
Figure 112016006017511-pct00014
Figure 112016006017511-pct00015
일부 경우들에서, 위에 설명된 통계 수집은 CS들을 포함하는 변환 블록들의 특징들에 기초하여 정의되는 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적으로 수행될 수도 있다. 이 경우에, 변환 블록에서의 현재 CG 의 카테고리는 변환 블록의 특징들에 기초하여 결정될 수도 있고 라이스 파라미터는 결정된 카테고리에 대한 통계에 기초하여 현재 CG 에 대하여 초기화될 수도 있다. 통계 기반 라이스 파라미터 초기화 방식에 대해 이용된 통계를 분할하는 수개의 예들은 아래 설명된다.
통계를 분할 또는 카테고리화하는데 이용되는 변환 블록들의 특징들은 변환 블록들이 루마 또는 크로마 블록 유형인지의 여부, 변환 블록들이 인트라 예측 슬라이스 유형 또는 인터 예측 슬라이스 유형인지의 여부, 변환 블록들의 사이즈, 및 변환 블록들 내에서의 CG들의 포지션들 중 하나 이상을 포함할 수도 있다. 변환 블록들 내에서의 CG들의 포지션들의 특징은 현재 CG 가 변환 블록에서 상단 좌측 4×4 서브블록인지의 여부를 표시할 수도 있다. 추가로, 특징들은 변환 블록이 변환 스킵 블록으로서 코딩되는지의 여부 또는 변환 블록이 변환-양자화 바이패스 블록인지의 여부를 포함할 수도 있다. 따라서, 통계는 상기 특징들 중 하나 이상에 의존하여 개별적으로 유지될 수도 있다. 개별적인 통계는 CG 또는 변환 블록의 카테고리 또는 각각의 유형에 대하여 결정될 수도 있다. 개별적인 통계는 통계 기반 라이스 파라미터 초기화 방식에 대하여 보다 정확한 추정을 제공할 뿐만 아니라 보다 많은 저장 자원들을 요구할 수도 있다.
제 1 예로서, 다음 함수는 변환 블록이 루마 블록인지의 여부 및 CG 가 변환 블록에서의 상단 좌측 서브블록인지의 여부에 의존하는 변수 (TYPE) 에 기초하여 통계의 분할 또는 카테고리를 결정하는데 이용될 수도 있다.
Figure 112016006017511-pct00016
위의 함수에 따르면, 변수 (TYPE) 는 변환 블록이 루마 블록 (isLuma=1) 또는 크로마 블록 (isLuma=0) 이고, CG 가 상단 좌측 서브블록인지 (iSubSet==0) 아닌지 (iSubSet>0) 에 의존하여 4개의 값들을 가질 수 있다.
다른 예에서, 통계의 분할 또는 카테고리는 변환 블록이 루마 블록인지의 여부 또는 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에 의존한다.
Figure 112016006017511-pct00017
이 함수에 따르면, 변수 (TYPE) 는 변환 블록이 루마 블록 (isLuma=1) 또는 크로마 블록 (isLuma=0) 이고, 변환 블록이 변환 스킵 모드인지 (isTransformSkip=1) 또는 아닌지 (isTransformSkip=0) 에 의존하여 4개의 값들을 가질 수 있다.
다른 예에서, 통계의 분할 또는 카테고리는 변환 블록이 루마 블록인지의 여부, CG 가 변환 블록에서의 상단 좌측 서브블록인지의 여부, 및 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에 의존한다.
Figure 112016006017511-pct00018
이 함수에 따르면, 변수 (TYPE) 는 변환 블록이 루마 블록인지 (isLuma=1) 또는 크로마 블록인지 (isLuma=0), 변환 블록이 변환 스킵 모드에서 코딩되는지 (isTransformSkip=1) 또는 아닌지 (isTransformSkip=0), 또는 CG 가 상단 좌측 서브블록인지 (iSubSet==0) 아닌지 (iSubSet > 0) 에 의존하여 8개의 값들을 가질 수 있다.
다른 예에서, 통계의 분할 또는 카테고리는 변환 블록이 변환-양자화 바이패스로서 코딩되는지의 여부, 즉, 변환 및 양자화 프로세스들이 무손실성 코딩에 대해 바이패스되는지의 여부에 의존한다.
위에 설명된 수개의 예들 중 하나에 따라 정의된 TYPE 변수를 이용하고 이것을 위에 설명된 통계 수집 식 (여기에서, 제 1 코딩된 계수 레벨 (uiLevel) 의 값이 통계 (statCoeff) 의 값에 직접 비교됨) 과 위에 설명된 통계 수집 빈도 제약 (여기에서 CG 에서의 제 1 계수 레벨 (firstGolombCoeffinCG) 이 코딩될 때에만 통계가 업데이트됨) 과 결합하여, 결합된 접근 방식이 다음과 같이 된다.
Figure 112016006017511-pct00019
위에 의사-코드에서, 용어 "statCoeff[TYPE]" 는 변수 (TYPE) 에 의해 표시되는 CG들의 카테고리에 대하여 수집된 통계들을 표기한다.
위에 설명된 통계 수집 식 (여기에서 제 1 코딩된 계수 레벨 (uiLevel) 의 값이 미리 정의된 통계 (statCoeff) 의 함수에 비교됨) 을 이용한 결합된 접근 방식의 다른 예는 다음과 같다.
Figure 112016006017511-pct00020
또한, 위에 의사-코드에서, 용어 "statCoeff[TYPE]" 는 변수 (TYPE) 에 의해 표시되는 CG들의 카테고리에 대하여 수집된 통계들을 표기한다.
일부 예들에서, CODEC (즉, 비디오 인코더/디코더) 은 CG 에 대한 TYPE 변수를 결정하는 다수의 방법들을 지원할 수도 있다. 예를 들어, CODEC 는 TYPE 변수에 대하여 위에 설명된 예시적인 함수들 중 둘 이상을 지원할 수도 있다. 이 경우에, CODEC 는 코딩된 또는 유도된 표시에 기초하여 통계 기반 라이스 파라미터 초기화 방식에 대하여 이용된 통계를 분할하기 위한 방식을 결정하는 방법들 중 하나를 선택할 수도 있다. 다수의 방법들에 대한 예시적인 의사-코드는 아래 주어진다.
Figure 112016006017511-pct00021
일 경우에, 신택스 엘리먼트는 변환 블록들의 어느 특징들이 CG들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하기 위해 코딩된 비트스트림에서 시그널링될 수도 있다. 신택스 엘리먼트는 잔여 비디오 데이터에 대한 시퀀스 파라미터 세트 (SPS) 또는 픽쳐 파라미터 세트 (PPS) 중 하나에 포함된 플래그를 포함할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 코딩된 비트스트림에서의 하이 레벨 신택스에서 플래그 (예를 들어, method_flag) 를 시그널링할 수도 있고, 비디오 디코더 (30) 는 method_flag 를 수신하도록 코딩된 비트스트림을 파싱할 수도 있다. 이 예에서, method_flag=0 은 변환 블록이 루마 블록인지의 여부, 그리고 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에 기초하여 Method 1 이 통계의 카테고리를 결정하는데 이용됨을 표시한다. method_flag=1 은 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에만 의존하여 Method 2 가 통계의 카테고리를 결정하는데 이용됨을 표시한다. CODEC 에 의해 지원되는 둘보다 많은 방법들이 존재하면, 신택스 엘리먼트들은 바이너리 플래그 대신에 선택된 방법을 표시하기 위해 인덱스 값을 포함할 수도 있다.
다른 경우에, CODEC 는 추가적인 신택스 엘리먼트들이 방법을 표시하기 위해 비트스트림에서 시그널링될 필요가 없는 경우에 비디오 데이터의 컬러 포맷에 기초하여 CG들의 상이한 카테고리들을 정의하는데 이용되는 방법들 중 하나를 선택할 수도 있다. 예를 들어, 비디오 데이터의 CG 에 대한 TYPE 변수를 결정하는데 이용되는 방법은 YUV 컬러 포맷 또는 RGB 컬러 포맷이 비디오 데이터를 코딩하는데 이용되는지의 여부에 기초하여 선택될 수도 있다. 일 예로서, 변환 블록이 루마 블록인지의 여부 그리고 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에 기초하여 통계의 카테고리를 결정하는 Method 1 은 코딩된 비디오 데이터가 YUV 컬러 포맷에 있을 때 이용된다. 변환 블록이 변환 스킵 모드에서 코딩되는지의 여부에만 기초하여 통계의 카테고리를 결정하는 Method 2 는 코딩된 비디오 데이터가 RGB 컬러 포맷에 있을 때 이용된다. 비디오 인코더 (20) 및 비디오 디코더 (30) 가 비디오 데이터의 컬러 포맷을 검출가능한 경우에, 신택스 엘리먼트, 예를 들어, 선택된 방법을 표시하는 방법 플래그 또는 방법 인덱스는 비트스트림에서 시그널링되지 않는다.
본 개시물에 설명된 기술들에 따르면, 통계 기반 라이스 파라미터 초기화 방식은 위에 설명된 예들의 임의의 조합에 따라 이전에 코딩된 계수들에 대하여 수집된 계수 레벨 통계에 기초하여 현재 CG 에 대한 라이스 파라미터의 초기 값을 결정한다. 수집된 통계의 값을 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑하는 수개의 예시적인 기술들은 아래 설명되어 있다. 통계를 라이스 파라미터의 초기 값에 맵핑하는 것은 각각의 CG (예를 들어, 4×4 변환 블록 또는 변환 블록의 4×4 서브블록) 에 대해 수행될 수도 있거나 또는 각각의 TU 에 대해 (예를 들어, TU 의 시작시) 한번만 수행될 수도 있다.
일 예에서, 통계의 값은 저장된 테이블에 따라 초기 라이스 파라미터에 맵핑될 수도 있다. 맵핑 테이블의 입력은 통계의 값일 수도 있고, 테이블의 출력은 라이스 파라미터의 초기 값일 수도 있다. 일부 경우들에서, 통계의 클립핑된 버전은 맵핑 테이블에 대한 입력으로서 이용될 수도 있다. 예를 들어, 최대 라이스 파라미터가 5 이고 통계가 0 과 31 사이에서 클립핑되면, 맵핑 테이블은 다음과 같이 주어질 수도 있다.
g_golombTab[32]={ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 };
각각의 CG 의 시작시, 위의 테이블은 수집된 통계에 기초하여 라이스 파라미터의 초기 값을 결정하는데 이용될 수도 있다. 다른 예들에서, 상이한 맵핑 테이블들은 수집된 통계에 기초하여 라이스 파라미터의 초기 값을 결정하는데 이용될 수도 있다.
통계 수집의 3 개의 예시적인 방법이 위에 설명되었으며, 여기에서, 표기 "statCoeff" 및 "m_sumCoeff" 는 통계를 표기하기 위해 상호교환적으로 이용될 수도 있다: (1) 코딩된 계수 레벨 (uiLevel) 값이 통계 (statCoeff) 의 값에 직접 비교되는 통계 수집, (2) 코딩된 계수 레벨 (uiLevel) 의 값이 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교되는 통계 수집, 및 (3) 코딩된 계수 레벨 (uiLevel) 의 값이 총 카운터 변수 (m_total_counter) 를 포함하는 통계 (m_sumCoeff) 의 미리 정의된 함수에 비교되는 통계 수집.
위에 설명된 통계 수집 및 맵핑 테이블의 특정 예시적인 방법들 중 하나를 이용하여, 변수 (TYPE) 에 의해 표시되는 CG들의 카테고리에 대하여 수집된 통계에 기초하여 라이스 파라미터 초기화는 다음과 같이 수행될 수도 있다.
Figure 112016006017511-pct00022
다른 예들에서, 통계의 값은 맵핑을 수행하는 함수에 따라 라이스 파라미터의 초기 값에 맵핑될 수도 있다. 일부 경우들에서, 맵핑 함수는 수집된 통계의 함수일 수도 있다. 맵핑 함수를 이용하는 것은 맵핑 테이블의 추가적인 저장 소모를 회피할 수도 있다.
일 예로서, 라이스 파라미터는 아래 주어진 바와 같이, 상수값만큼 우측 시프트되는 수집된 통계에 기초하여 초기화될 수도 있다.
Figure 112016006017511-pct00023
위에 식에서, ">>" 는 우측 시프트된 연산을 표기하고, R 은 파라미터이다. 일부 경우들에서, 4 이상인 정수값일 수도 있는 MAX_RICE 까지 라이스 파라미터의 최대 값을 제한하는 것이 바람직할 수도 있다. 이 경우에, 함수는 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00024
다음 예로서, 라이스 파라미터는 아래 주어진 바와 같이, 수집된 통계의 선형 함수에 기초하여 초기화될 수도 있다.
Figure 112016006017511-pct00025
위의 식에서, a, b, c 및 d 는 파라미터 값들이다.
추가의 예에서, 라이스 파라미터는 수집된 통계의 피스와이즈 선형 함수에 기초하여 초기화될 수도 있다. 피스와이즈 선형 함수의 2개의 특정 예들이 다음과 같이 주어진다.
Figure 112016006017511-pct00026
Figure 112016006017511-pct00027
다른 예에서, 라이스 파라미터는 위에 설명된 통계 수집의 방법에 기초하여 초기화될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교된다. 이 경우에, 수집된 통계의 값은 통계의 함수에 따라 라이스 파라미터의 초기 값에 맵핑된다. 일 예에서, 라이스 파라미터를 초기화하는데 이용되는 통계의 함수는 상수 값으로 나누어진 통계의 값 또는 라이스 파라미터의 최대 값 중 가장 작은 것의 선택에 기초할 수도 있다.
맵핑 함수의 일 예는 다음과 같이 정의된다.
Figure 112016006017511-pct00028
위의 식에서, DELAY 는 상수값이고, MAX_RICE_PARAM_INIT 는 라이스 파라미터의 최대 값이다. 일부 경우들에서, 라이스 파라미터의 최대 값은 4 이상일 수도 있다. 상수 값은 사용자 정의된 파라미터일 수도 있다. DELAY=4 인 맵핑 함수의 일 예는 다음과 같이 주어진다.
Figure 112016006017511-pct00029
위의 예에서, 용어 "statCoeff" 는 "m_sumCoeff" 대신에 통계의 값을 표기하는데 이용되며, maxRicePara 는 MAX_RICE_PARAM_INIT 대신에 라이스 파라미터의 최대 값을 표기하는데 이용된다.
추가의 예에서, 라이스 파라미터는 위에 설명된 통계 수집의 방법에 기초하여 초기화될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 총 카운터 변수 (m_total_counter) 를 포함하는 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교된다. 이 경우에, 수집된 통계의 값은 통계의 함수에 따라 라이스 파라미터의 초기 값에 맵핑된다. 맵핑 함수의 일 예는 다음과 같이 정의된다.
Figure 112016006017511-pct00030
위의 식에서, 용어 "thres0" 는 제 1 임계값을 표기하고, "thres1" 은 제 2 임계값이고, k0 및 k1 은 파라미터들이다. 함수에 따르면, 통계 업데이트들의 총 수로 나누어진 통계들의 값이 thres0 보다 크면, 라이스 파라미터의 초기 값은 k0 만큼 증분된 라이스 파라미터의 이전 값과 동일하게 설정된다. 통계 업데이트들의 총 수로 나누어진 통계들의 값이 thres1 보다 작으면, 라이스 파라미터의 초기 값은 k1 만큼 증분된 라이스 파라미터의 이전 값과 동일하게 설정된다.
일부 예들에서, 초기 라이스 파라미터는 최소값과 최대값 사이에서 클립핑될 수도 있다. 이 경우에, 여분의 클립핑 함수가 라이스 파라미터를 초기화하는데 이용되는 맵핑 함수에 추가될 것이다. 클립핑 맵핑 함수의 일 예는 다음과 같이 주어진다.
Figure 112016006017511-pct00031
위의 식에서, MIN_RICE 는 라이스 파라미터의 최소값이고, MAX_RICE 는 라이스 파라미터의 최대값이다. 이 예에서, MIN_RICE 의 값은 0 과 같을 수도 있고, MAX_RICE 의 값은 4 이상인 정수일 수도 있다. MIN_RICE 및 MAX_RICE 의 값들은 사이드 정보, 이를 테면, 비트 심도, 컬러 포맷, 코딩 모드 (즉, 무손실성 코딩, 또는 손실성 코딩), 및 사이드 정부의 다른 유형들 중 하나 이상에 의존할 수도 있다.
위에 설명된 바와 같이, HEVC 에서, 라이스 파라미터의 값은 CG 에서의 계수 레벨들의 각각의 나머지 절대값을 코딩한 후에 업데이트될 수도 있다. 일부 예들에서, 유사한 클립핑이 라이스 파라미터의 업데이트된 값에 적용될 수도 있다. 범위 (즉, 최소 값 및 최대 값) 는, 초기화 절차 동안의 범위와 업데이트 절차에 대한 범위가 상이할 수도 있거나, 또는 범위는 초기화 동안에 이용된 범위와 동일할 수도 있다. 이와 유사하게, 범위는 비트 심도, 프로파일, 컬러 포맷, 코딩 모드 (즉, 무손실성 코딩 또는 손실성 코딩) 및 다른 사이드 정보 중 하나 이상에 의존할 수도 있다.
통계를 라이스 파라미터의 초기 값에 맵핑하는 4 개의 추가적인 예들이 아래 주어진다.
이 예에서, m_sumCoeff 및 m_sumCoeff2 로서 지칭되는 2 개의 통계가 이용된다. m_sumCoeff 의 값은 위에 설명된 통계 수집의 방법을 이용하여 유도될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 다음과 같이 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교된다.
Figure 112016006017511-pct00032
m_sumCoeff2 의 값은 위에 주어진 통계 수집 방법을 이용하여 유도될 수도 있으며, 코딩된 계수 레벨 (uiLevel) 의 값은 다음과 같이 통계의 값 (m_sumCoeff2) 에 직접 비교된다.
Figure 112016006017511-pct00033
제 1 예에서, 통계를 라이스 파라미터의 초기 값에 맵핑하는 것은 변환 스킵 블록에 대한 것과 변환 코딩된 블록에 대한 것이 상이할 수도 있다. 변환 스킵 블록의 경우에, 초기화 함수는 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00034
변환 코딩된 블록의 경우에, 초기화 함수는 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00035
위에 의사-코드에서, "Th" 는 임계값이다. Th 의 예시적인 값은 (1<<uiGoRiceParam) 일 수도 있다.
제 2 예에서, m_sumCoeff 로서 지칭되는 통계는 위에 설명된 통계 수집의 방법을 이용하여 유도될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 미리 정의된 통계 (m_sumCoeff)의 함수에 비교된다. 이 제 2 예에서, 통계를 라이스 파라미터의 초기 값에 맵핑하는 것은 변환 스킵 블록에 대한 것과 변환 코딩된 블록에 대한 것이 상이할 수도 있다. 변환 스킵 블록의 경우에, 초기화 함수는 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00036
변환 코딩된 블록의 경우에, 초기화 함수는 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00037
위에 의사-코드에서, "Th" 는 임계값이다. Th 의 예시적인 값은 MAX_RICE_PARAM_INIT/2-2 일 수도 있다.
제 3 예에서, m_sumCoeff 로서 지칭되는 통계는 위에 설명된 통계 수집의 방법을 이용하여 유도될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교된다. 이 제 3 예에서, 통계를 라이스 파라미터의 초기 값에 맵핑하는 것은 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00038
위의 의사-코드에서, "Th" 는 임계값이고, "d" 는 파라미터이다.
제 4 예에서, m_sumCoeff 로서 지칭되는 통계는 위에 설명된 통계 수집의 방법을 이용하여 유도될 수도 있으며, 여기에서 코딩된 계수 레벨 (uiLevel) 의 값은 미리 정의된 통계 (m_sumCoeff) 의 함수에 비교된다. 이 제 4 예에서, 통계를 라이스 파라미터의 초기 값에 맵핑하는 것은 다음과 같이 주어질 수도 있다.
Figure 112016006017511-pct00039
위의 의사-코드에서, "Th" 는 임계값이고, "d", DELAY0 및 DELAY1 는 파라미터들이다. 이 제 4 예에서, 통계의 값이 임계값 (Th) 과 같을 때, 위의 식들 중 어느 것을 이용하여 유도되는 라이스 파라미터 (uiGoRiceParam) 의 초기 값은 동일하다.
일부 예들에서, 라이스 파라미터의 초기 값과 임계값들을 결정하는데 이용된 맵핑 함수는 고정될 수도 있고, 비디오 인코더 (20) 와 비디오 디코더 (30) 양쪽 모두에 알려질 수도 있다. 다른 예들에서, 라이스 파라미터의 초기 값과 임계값들을 결정하는데 이용된 맵핑 함수는 사이드 정보에 기초하여 적응적으로 결정될 수도 있다. 사이드 정보는 비디오 인코더 (20) 와 비디오 디코더 (30) 각각에 의해 독립적으로 유도될 수도 있거나, 또는 사이드 정보는 SPS 또는 PPS 중 어느 것에서 하이 레벨 신택스를 이용하여 비디오 인코더 (20) 로부터 비디오 디코더 (30) 로 시그널링될 수도 있거나 또는 유도와 시그널링의 일부 조합이 사이드 정보를 결정하는데 이용될 수도 있다. 예를 들어, 사이드 정보는 프레임 사이즈, 프레임 유형, CU 사이즈, TU 사이즈, TU 유형 (예를 들어, 변환 스킵 모드 또는 변환 모드), 컬러 성분, 인트라 또는 인터 예측 모드, 양자화 파라미터 (QP), 비트 심도, 컬러 포맷 (예를 들어, 444/422/420), 유의 계수 플래그들 (수 및 분포 양쪽 모두), 1 보다 많은 (즉, 1 보다 큰) 플래그들 (수 및 분포 양쪽 모두), 및 2 보다 큰 (즉, 2 보다 많은) 플래그들 (수 및 분포 양쪽 모두) 중 하나 이상을 포함할 수도 있다. 이들은 또한 명시적으로 시그널링될 수도 있다.
현재 CG 에 대한 라이스 파라미터를 초기화한 후, 라이스 파라미터의 초기 값은 라이스 파라미터에 의해 정의된 코드들, 예를 들어, 골룸 라이스 코드들 또는 기하 골룸 코드들을 이용하여 현재 CG에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 코딩한 후 업데이트될 수도 있다. 통계 기반 라이스 파라미터 초기화 방식에 대한 통계는 라이스 파라미터의 값을 업데이트하기 전에 또는 후에 현재 CG 에서의 하나 이상의 계수 레벨들에 기초하여 결정될 수도 있다.
일부 예들에서, 통계는 현재 CG 에 대한 라이스 파라미터의 현재 값 및 현재 CG 에서의 코딩된 계수 레벨들의 비교 또는 계산에 기초할 수도 있다. 계수 레벨들 및 라이스 파라미터 값들에 기초하는 통계들의 일 예가 다음과 같이 주어진다.
Figure 112016006017511-pct00040
Figure 112016006017511-pct00041
위의 의사-코드에서, "UndershootCnt", "OvershootCnt" 및 "TotalCnt" 는 라이스 파라미터를 초기화하는데 이용될 통계를 표기한다. 또한, "uiGoRiceParam" 는 라이스 파라미터의 값을 표기하고, "s" 는 파라미터이고, absCoeff[idx] 는 인덱스 (idx) 에서 계수에 대한 계수 레벨의 절대값이다.
일부 예들에서, 통계는 라이스 파라미터의 값을 업데이트하기 전에 결정될 수도 있다. 이 경우에, 라이스 파라미터의 업데이트되지 않은 값은 통계를 결정하는데 이용된 비교 또는 계산에 이용된다. 라이스 파라미터의 업데이트되지 않은 값 및 계수 레벨들에 기초하여 통계를 결정한 다음 라이스 파라미터의 값을 업데이트하는 일 예시적인 조합은 다음과 같이 주어진다.
Figure 112016006017511-pct00042
위의 의사-코드에서, "MAX_RICE_PARAM" 는 라이스 파라미터의 최대값을 표기하고, min<UInt>( ) 는 최소 값을 선택하는 함수이다. 일부 예들에서, 라이스 파라미터의 최대값은 적어도 4 인 정수값과 같을 수도 있다. 다른 예들에서, 통계는 라이스 파라미터의 값을 업데이트한 후에 결정될 수도 있다. 이 경우에, 라이스 파라미터의 업데이트된 값은 통계를 결정하는데 이용된 비교 또는 계산에 이용된다.
일부 예들에서, 위에 설명된 통계 기반 라이스 파라미터 초기화 방식의 업데이트는 라이스 파라미터의 업데이트와 통합될 수도 있다. 위에 설명된 바와 같이, HEVC 에서, 라이스 파라미터의 초기 값은 현재 CG 에서 코딩되고 있는 계수에 대한 계수 레벨의 절대값 및 라이스 파라미터의 초기 값에 기초하여 조건적으로 업데이트될 수도 있다. 라이스 파라미터의 값은 현재 CG 에서의 계수들에 대한 각각의 나머지 절대 레벨을 코딩한 후에 조건적으로 업데이트되는 것을 계속할 수도 있다. HEVC 조건적 업데이트 방식은 다음과 같이 주어진다.
Figure 112016006017511-pct00043
위의 의사-코드에서, "uiGoRiceParam" 는 라이스 파라미터의 값을 표기하고, absCoeff[idx] 는 인덱스 idx 에서의 계수에 대한 계수 레벨의 절대값이고, "MAX_RICE_PARAM" 는 라이스 파라미터의 최대값을 표기하고, min<UInt>( ) 는 최소 값을 선택하는 함수이다.
일부 예들에서, 후속하는 CG 의 시작시 라이스 파라미터의 값을 초기화하는데 이용되는 통계의 업데이트는 현재 CG 의 계수 레벨들에 기초하여 라이스 파라미터 업데이트와 통합될 수도 있다. 통계와 라이스 파라미터의 통합된 업데이트의 일 예는 다음과 같다.
Figure 112016006017511-pct00044
위의 의사-코드에서, "UndershootCnt++" 는 통계의 업데이트를 표기한다.
일부 예들에서, 다음 코딩 유닛 (예를 들어, 4×4 CG, TU, 또는 CU) 에 대하여 라이스 파라미터의 업데이트된 값 (또는 예측자에 비교되는 델타 값, 예를 들어, 라이스 파라미터의 현재 값) 은 통계에 이용된 파라미터들 전부 또는 일부에 기초하여 계산된다. 예를 들어, 일 예에서, OvershootCnt 의 값이 높을수록, 업데이트된 라이스 파라미터의 값이 더 작아진다. 다른 예에서, UndershootCnt 의 값이 높을수록, 업데이트된 라이스 파라미터의 값이 더 커진다.
비디오 데이터의 비트 심도 또는 다른 특징에 기초하여 각각의 CG 에 대한 라이스 파라미터를 초기화하는 수개의 예들은 아래 설명되어 있다. 이들 예들에서, 각각의 CG 에 대한 라이스 파라미터의 초기화는 수집된 통계에 의존하지 않는다. 위에 설명된 통계 기반 라이스 파라미터 초기화 방식에서와 같이, 라이스 파라미터 초기화가 각각의 CG (예를 들어, 4×4 변환 블록, 또는 변환 블록의 4×4 서브블록) 에 대하여 수행될 수도 있거나, 또는 각각의 TU (예를 들어, TU 의 시작시) 에 대해 한번만 수행될 수도 있다.
일 예에서, 라이스 파라미터의 초기 값은 그 대신에, 비디오 데이터의 비트 심도에 기초할 수도 있다. 다음은 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 이 CG 의 현재 성분 (예를 들어, 루마 성분, 또는 크로마 성분들 중 하나) 의 비트 심도의 함수인 일 예이다.
Figure 112016006017511-pct00045
위의 식에서, bitDepth 는 현재 성분의 비트 심도이고, n 은 파라미터이다. 일 예에서, 파라미터 n 은 9 와 같게 설정될 수도 있다.
다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 CG 에 대한 성분 유형 (예를 들어, 루마 또는 크로마) 에 의존할 수도 있다. 다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 변환 및 양자화 양쪽 모두가 스킵되는 변환-양자화 바이패스 모드에서 현재 블록이 코딩되는지의 여부에 의존할 수도 있다. 다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 변환은 스킵되지만 양자화가 적용될 수도 있는 변환 스킵 모드에서 현재 블록이 코딩되는지의 여부에 의존할 수도 있다. 다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 TU 에 대한 양자화 파라미터 (QP) 에 의존할 수도 있다. 다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 비디오 데이터의 컬러 성분 및/또는 컬러 공간에 의존할 수도 있다.
다른 예에서, 각각의 CG 에 대한 라이스 파라미터의 초기 값 (cRiceParam) 은 CU 사이즈, TU 사이즈, 프레임 해상도, 프레임 레이트, 예측 모드 (예를 들어, 인트라, 인터, 인트라BC (intra-block copy)), 프레임 유형, 및 교차 성분 잔여 예측의 모드 및 가중치 중 하나 이상에 의존할 수도 있다. 교차 성분 잔여 예측의 모드 및 가중치의 예들은 2013년 7월 15일 출원된 미국 특허 가출원 번호 제61/846,581호, 2013년 7월 18일 출원된 미국 특허 가출원 번호 제61/847,839호, 2013년 5월 22일 출원된 미국 특허 가출원 번호 제61/826,396호, 및 2013년 6월 21일 출원된 미국 특허 가출원 번호 제61/838,152호에 설명되어 있다.
다음은 일 예로서, HEVC 를 이용하여 coeff_abs_level_greater1 플래그 및 coeff_abs_level_greater2 플래그에 대한 몇몇 백그라운드 정보를 제공한다. HEVC 에서, CG (예를 들어, 4×4 서브블록) 에서, 유의 맵이 비-제로 계수 레벨들을 갖는 계수들의 포지션을 표시하도록 첫번째로 코딩된다. 그 후, 유의 계수들을 갖는 포지션에 대해, coeff_abs_level_greater1 플래그는 계수의 절대값이 1 보다 큰지의 여부를 표시하도록 인코딩될 수도 있다. coeff_abs_level_greater1=1 을 갖는 포지션들에서, coeff_abs_level_greater2 플래그는 계수의 절대값이 2 보다 큰지의 여부를 표시하도록 인코딩될 수도 있다.
일부 예들에서, 각각의 CG 에 대해, 라이스 파라미터의 초기 값 (cRiceParam) 은 유의 (즉, 비-제로) 값들을 갖는 이전에 코딩된 계수 레벨들의 수 (이는 0 또는 1 과 같은 coeff_abs_level_greater1 플래그의 코딩에 의해 표시될 수도 있음), 및/또는 1 보다 큰 값들을 갖는 이전에 코딩된 계수 레벨들의 수 (이는 0 또는 1 과 같은 coeff_abs_level_greater2 플래그의 코딩에 의해 표시될 수도 있음) 에 의존할 수도 있다. 다른 예들에서, 각각의 CG 에 대해, 라이스 파라미터의 초기 값 (cRiceParam) 은 1 보다 큰 값들을 갖는 이전에 코딩된 계수 레벨들의 수 (이는coeff_abs_level_greater1=1 을 코딩함으로써 표시됨), 및/또는 2 보다 큰 값들을 갖는 이전에 코딩된 계수 레벨들의 수 (이는 coeff_abs_level_greater2=1 을 코딩함으로써 표시될 수도 있음) 에 의존할 수도 있다.
다른 예에서, 각각의 CG 에 대해, 라이스 파라미터의 초기 값 (cRiceParam) 은 상기 예들의 임의의 조합에 의존할 수도 있다. 비디오 데이터의 비트 심도에 기초하여 라이스 파라미터의 초기 값을 결정하는 2 개의 세부적인 예들이 아래 주어진다.
예 1:
Figure 112016006017511-pct00046
위의 의사-코드에서, iQP 는 QP 값이고, BD 는 비디오 데이터의 비트 심도이다. 제 1 예에서, 라이스 파라미터의 초기 값은 CG 가 변환 스킵 모드 또는 변환-양자화 바이패스 모드에서 코딩되는 변환 블록에 포함될 때 제 1 식에 기초하여 설정되며, CG 가 변환 코딩된 블록에 포함될 때 제 2 식에 기초하여 설정된다. 어느 경우에도, 초기 값은 비디오 데이터의 비트 심도 (BD) 에 기초하여 결정된다.
예 2:
Figure 112016006017511-pct00047
위의 의사-코드에서, Gr1 은 코딩되는 coeff_abs_level_greater1 플래그들의 수이고, BD 는 비디오 데이터의 비트 심도이다. 이 제 2 예에서, 라이스 파라미터의 초기 값은 CG 가 변환 스킵 모드 또는 변환-양자화 바이패스 모드에서 코딩되는 변환 블록에 포함될 때 제 1 식에 기초하여 설정되며, CG 가 변환 코딩된 블록에 포함될 때 제 2 식에 기초하여 설정된다. 어느 경우에도, 초기 값은 비디오 데이터의 비트 심도 (BD) 에 기초하여 결정된다.
오프셋 값들의 명시적 시그널링에 의해 위에 설명된 예들의 임의의 조합에 따라 각각의 CG 에 대하여 라이스 파라미터 초기화를 결합하는 하이브리드 방식의 일 예가 아래 설명된다. 예를 들어, CG 의 시작시 라이스 파라미터를 초기화하는데 이용되는 오프셋은 두개의 부분들: (1) 불변성 오프셋 및 (2) 적응성 오프셋의 합산으로 분해될 수도 있다. 적응성 오프셋은 본 개시물에 설명된 예시적인 기술들 중 하나 이상을 이용하여 유도될 수도 있다. 불변성 오프셋은 비디오 인코더 (20) 로부터 비디오 디코더 (30) 로 비트스트림으로 시그널링될 수도 있다.
다른 예에서, 본 개시물에 설명된 초기 라이스 파라미터 유도 프로세스와 명시적 라이스 파라미터 시그널링을 결합하기 위해, 라이스 파라미터를 시그널링할지의 여부의 결정은 비디오 인코더 (20) 에서 초기 라이스 파라미터의 유도된 값에 의존할 수도 있다. 예를 들어, 초기 라이스 파라미터의 유도된 값이 미리 정의된 값보다 작은 경우 (예를 들어, 유도된 값과 임계값 사이의 차이가 임계값보다 작은 경우), 라이스 파라미터는 비디오 디코더 (30) 에 시그널링되지 않을 수도 있고 그 대신에 위에 설명된 바와 같이 유도될 수도 있다. 이 경우에, 유도된 값 또는 미리 정의된 값은 라이스 파라미터의 초기 값으로서 이용될 수도 있다. 그렇지 않으면, 라이스 파라미터의 초기 값이 시그널링될 수도 있거나 또는 라이스 파라미터의 초기 값과 미리 정의된 값 사이의 차이가 시그널링될 수도 있다. 시그널링 기술들의 일부 추가적인 예들은 2013년 8월 26일 출원된 미국 특허 가출원 번호 제61/870,120호, 2013년 9월 20일 출원된 미국 특허 가출원 번호 제61/880,616호, 및 2013년 10월 11일 출원된 미국 특허 가출원 번호 제61/889,654호에서 찾을 수 있다.
라이스 파라미터 초기화 방식의 위에 설명된 예들에 대한 수개의 추가적인 예들 및 고려 사항들이 아래 설명된다. 본 개시물의 기술들이 다른 기술들과 개별적으로 및/또는 다른 기술들과의 특정 조합들의 일부로서 주로 설명될 수도 있지만, 본 개시물에 설명된 기술들의 임의의 둘 이상의 것이 서로 결합될 수도 있다. 추가로, 본 개시물에 설명된 기술들 중 어느 하나가 개별적으로 구현되는 것도 가능할 수도 있다.
손실성 코딩 경우에, 통계 기반 라이스 파라미터 초기화 방식은 다음 조건식에 도시된 바와 같이 변환 스킵 블록들에만 적용될 수도 있다. 한편, 변환이 변환 블록에 적용될 때, 라이스 파라미터는 HEVC 초기화 방식에 따라 제로로 초기화된다.
Figure 112016006017511-pct00048
다른 예들에서, 통계 기반 라이스 파라미터 초기화 방식은 변환 스킵 블록들에만 적용될 수도 있지만, 다음 식에 도시된 바와 같이, 변환이 블록에 적용될 때 반드시 라이스 파라미터를 제로로 자동으로 초기화하는 것이 필수적인 것은 아닐 수도 있다.
Figure 112016006017511-pct00049
일부 예들에서, CG 내에서 수행되는 HEVC 라이스 파라미터 업데이트 방식이 디스에이블될 수도 있다. 그 대신에, 라이스 파라미터의 초기 값은 위에 설명된 예시적인 기술들의 임의의 조합에 따라 결정될 수도 있고, 그 후 라이스 파라미터의 초기 값은 블록 전반에 걸쳐 이용될 수도 있다. 다른 예들에서, 상이한 라이스 파라미터 업데이트 방식이 CG 내에서 수행될 수도 있다. 일부 경우들에서, 위에 설명된 예시적인 기술들 중 하나 이상이, 블록 전반에 걸쳐 주어진 순서에 따라 또는 통합된 방법들로서 라이스 파라미터 업데이트 및 통계 업데이트를 수행하는데 이용될 수도 있다. 또한, 일부 경우들에서, 위에 설명된 예시적인 기술들 중 하나 이상이, 블록 전반에 걸쳐 라이스 파라미터의 비트 심도 종속성 초기화를 수행하는데 이용될 수도 있다.
라이스 파라미터의 초기 값을 결정하는 예시적인 방법들이 위에 개별적으로 설명되어 있지만, 본 개시물의 기술들은 이에 제한되지 않는다. 일반적으로, 위에 설명된 예시적인 기술들의 여러 조합들이 가능할 수도 있다. 위에 설명된 예시적인 방법들은 또한 개별적으로 구현될 수도 있다. 추가로, 위에 설명된 방법들 모두 또는 이들의 조합들이 변환이 스킵되거나 바이패스되는 변환 블록들에서만의 또는 모든 변환 블록들 내에서의 CG 에 적용될 수도 있다.
도 5 는 본 개시물에서 설명된 계수 레벨들을 인코딩하는 기술들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 나타내는 블록도이다. 비디오 인코더 (20) 는, 변환 계수들의 스캔을 요구할 수도 있는 다른 코딩 표준들 또는 방법들에 관해 본 개시의 제한 없이, 설명의 목적들을 위해 HEVC 코딩의 맥락에서 설명될 것인다. 비디오 인코더 (20) 는 비디오 프레임들 내의 CU들의 인트라 코딩 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 주어진 비디오 프레임 내의 비디오 데이터에서의 공간적 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 이전에 코딩된 프레임들과 현재 프레임 사이의 시간적 리던던시를 제거하거나 감소시키기 위해 시간적 예측에 의존한다. 인트라 모드 (I 모드) 는 여러 공간 기반 비디오 압축 모드들 중 임의의 것을 지칭할 수도 있다. 양방향 예측 (B 모드) 또는 단방향 예측 (P 모드) 과 같은 인터 모드들은 여러 시간 기반 비디오 압축 모드들 중 임의의 것을 지칭할 수도 있다.
도 5 에 도시된 바와 같이, 비디오 인코더(20)는 인코딩될 비디오 프레임 내에서 현재 비디오 블록을 수신한다. 도 5 의 예에서, 비디오 인코더 (20) 는 모드 선택 유닛 (40), 비디오 데이터 메모리 (41), 모션 보상 유닛 (44), 모션 추정 유닛 (42), 인트라 예측 프로세싱 유닛 (46), 디코딩된 픽쳐 버퍼 (DPB)(64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 도 5 에 예시된 변환 유닛 (52) 은 실제 변환 또는 변환의 조합들을 잔여 데이터의 블록에 적용하는 유닛이며, CU의 변환 유닛 (TU) 으로서 또한 지칭될 수도 있는 변환 계수들의 블록과 혼동되지 않아야 한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 또한, 역 양자화 유닛 (58), 역 변환 프로세싱 유닛 (60), 및 합산기 (62) 를 포함한다. 디블록킹 필터 (도 5 에 도시되지 않음) 는 또한 재구성된 비디오로부터 블록화 아티팩트 (blockiness artifact) 를 제거하도록 블록 경계들을 필터링하기 위해 포함될 수도 있다. 원하는 경우, 디블록킹 필터는 통상적으로 합산기 (62) 의 출력을 필터링할 것이다.
비디오 데이터 메모리 (41) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장한다. 비디오 데이터 메모리 (41) 에 저장된 비디오 데이터는 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽쳐 버퍼 (64) 는 예를 들어, 인트라 또는 인터 코딩 모드들에서, 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩하는데 있어 이용하기 위한 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽쳐 메모리일 수도 있다. 비디오 데이터 메모리 (41) 및 디코딩된 픽쳐 버퍼 (64) 는 여러 메모리 디바이스들, 이를테면, SDRAM (synchronous DRAM), MRAM (magnetoresistive RAM), RRAM (resistive RAM) 을 포함하는 DRAM (Dynamic random access memory), 또는 다른 유형들의 메모리 디바이스들의 어느 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (41) 및 디코딩된 픽쳐 버퍼 (64) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (41) 는 비디오 인코더 (20) 의 다른 컴포넌트들과의 온칩일 수도 또는 이들 컴포넌트들에 대하여 오프칩일 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록들로 예를 들어, 최대 코딩 유닛들 (largest coding units ; LCUs) 로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 레퍼런스 프레임들에서의 하나 이상의 블록들에 대한 수신된 비디오 블록의 인터-예측 코딩을 수행하여, 시간적 압축을 제공한다. 인트라 예측 프로세싱 유닛 (46) 은 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대한 수신된 비디오 블록의 인트라 예측 코딩을 수행하여 공간적 압축을 제공할 수도 있다.
모드 선택 유닛 (40) 은, 예를 들어 각각의 모드에 대한 에러 결과들에 기초하여 코딩 모드들, 인트라 또는 인터 중 하나를 선택하고, 이 결과의 인트라 또는 인터 예측된 블록 (예를 들어, 예측 유닛 (PU)) 을 합산기 (50) 에 제공하여 잔여 블록 데이터를 생성하며 합산기 (62) 에 제공하여 레퍼런스 픽쳐로서 이용하기 위한 인코딩된 블록을 재구성할 수도 있다. 합산기 (62) 는, 하기에 더 상세히 설명되는 바와 같이, 예측된 블록을 블록에 대한 역 변환 프로세싱 유닛 (60) 으로부터의 역 양자화된 역 변환된 데이터와 결합하여 인코딩된 블록을 재구성한다. 일부 비디오 프레임들은 I 프레임들로 지정될 수도 있는데, 여기서 I 프레임에서의 모든 블록들은 인트라 예측 모드에서 인코딩된다. 일부 경우들에서, 인트라 예측 프로세싱 유닛 (46) 은, 예를 들어, 모션 추정 유닛 (42) 에 의해 수행되는 모션 검색이 블록의 충분한 예측으로 귀결되지 않는 경우, P 또는 B 프레임에서의 블록의 인트라 예측 인코딩을 수행할 수도 있다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고집적화될 수도 있지만, 개념적 목적들을 위해 별개로 예시되어 있다. 모션 추정 (또는 모션 검색) 은 모션 벡터들을 생성하는 프로세스로서, 비디오 블록들에 대한 모션을 추정한다. 모션 벡터는, 예를 들어, 레퍼런스 프레임의 레퍼런스 샘플에 관한 현재 프레임에서의 예측 유닛의 변위를 나타낼 수도 있다. 모션 추정 유닛 (42) 은, 예측 유닛을 디코딩된 픽쳐 버퍼 (64) 에 저장된 레퍼런스 픽쳐의 레퍼런스 샘플들에 비교함으로써 인터 코딩된 프레임의 예측 유닛에 대한 모션 벡터를 계산한다. 레퍼런스 블록은 픽셀 차이의 관점에서, 코딩되고 있는 PU를 포함하는 CU의 부분과 밀접하게 일치하는 것으로 발견된 블록인데, 픽셀 차이는 SAD (sum of absolute difference), SSD (sum of square difference), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 레퍼런스 샘플은 레퍼런스 프레임 또는 레퍼런스 슬라이스 내의 임의의 곳에서 발생할 수도 있으며, 반드시 레퍼런스 프레임 또는 슬라이스의 블록 (예를 들어, 코딩 유닛) 경계에 있지 않을 수도 있다. 일부 예들에서, 레퍼런스 샘플은 분수 픽셀 포지션에서 발생할 수도 있다.
모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다. 모션 벡터에 의해 식별된 레퍼런스 프레임의 부분은 레퍼런스 샘플로서 지칭될 수도 있다. 모션 보상 유닛 (44) 은, 예를 들어, PU에 대한 모션 벡터에 의해 식별된 레퍼런스 샘플을 취출함으로써, 현재 CU 의 예측 유닛에 대한 예측 값을 계산할 수도 있다.
인트라 예측 프로세싱 유닛 (46) 은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행된 인터 예측에 대한 대안으로서, 수신된 블록을 인트라 예측할 수도 있다. 인트라 예측 프로세싱 유닛 (46) 은, 블록들에 대한 좌에서 우로, 위에서 아래로의 인코딩 순서를 가정하여, 이웃하는 이전에 코딩된 블록들, 예를 들어, 현재 블록의 상 (above) 블록들, 우상 블록들, 좌상 블록들, 또는 좌 블록들과 관련하여 수신된 블록을 예측할 수도 있다. 인트라 예측 프로세싱 유닛 (46) 은 다양한 상이한 인트라 예측 모드들로 구성될 수도 있다. 예를 들어, 인트라 예측 프로세싱 유닛 (46) 은 인코딩되고 있는 CU 의 사이즈에 기초하여 소정 수의 방향성 예측 모드들, 예를 들어, 33 개의 방향성 예측 모드들로 구성될 수도 있다.
인트라 예측 프로세싱 유닛 (46) 은, 예를 들어, 다양한 인트라 예측 모드들에 대한 에러 값들을 계산하고 최저 에러 값을 산출하는 모드를 선택함으로써, 인트라 예측 모드를 선택할 수도 있다. 방향성 예측 모드들은 공간적으로 이웃하는 픽셀들의 값들을 결합하고 결합된 값들을 PU에서의 하나 이상의 픽셀 포지션들에 적용하는 기능들을 포함할 수도 있다. PU에서의 모든 픽셀 포지션들에 대한 값들이 계산되면, 인트라 예측 프로세싱 유닛 (46) 은 PU 및 인코딩될 수신된 블록 사이의 픽셀 차이들에 기초하여 예측 모드에 대한 에러 값을 계산할 수도 있다. 인트라 예측 프로세싱 유닛 (46) 은, 수용 가능한 에러 값을 산출하는 인트라 예측 모드가 발견될 때까지 인트라 예측 모드들에 대한 테스트를 계속할 수도 있다. 그 후, 인트라 예측 프로세싱 유닛 (46) 은 PU 를 합산기 (50) 로 전송할 수도 있다.
비디오 인코더 (20) 는 코딩되고 있는 오리지널 비디오 블록으로부터 모션 보상 유닛 (44) 또는 인트라 예측 프로세싱 유닛 모듈 (46) 에 의해 계산된 예측 데이터를 감산함으로써 잔여 블록을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 잔여 블록은 픽셀 차이 값들의 2 차원 매트릭스에 대응할 수도 있는데, 여기서 잔여 블록에서의 값들의 수는 잔여 블록에 대응하는 PU에서의 픽셀들의 수와 동일하다. 잔여 블록에서의 값들은 코딩될 오리지널 블록에서의 및 PU에서의 공동위치된 픽셀들의 값들 사이의 차이들, 즉, 에러에 대응할 수도 있다. 차이들은 코딩되는 블록의 유형에 따라 크로마 또는 루마 차이들일 수도 있다.
변환 프로세싱 유닛 (52) 은 잔여 블록으로부터 하나 이상의 변환 유닛들 (TU들) 을 형성할 수도 있다. 변환 프로세싱 유닛 (52) 은 복수의 변환들 중에서 한 변환을 선택한다. 예를 들어, 변환 프로세싱 유닛 (52) 은 이산 코사인 변환 (DCT), 이산 사인 변환 (DST), 정수 변환, 카루넨-루베 (K-L) 변환, 또는 변환 계수들을 생성하는 다른 변환 중 하나를 선택할 수도 있다. 변환은 하나 이상의 코딩 특성들, 이를테면 블록 사이즈, 코딩 모드 등에 기초하여 선택될 수도 있다. 그 후, 변환 프로세싱 유닛 (52) 은 선택된 변환을 TU에 적용하여, 변환 계수들의 2 차원 어레이를 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은 결과적으로 생성된 변환 계수들을 양자화 유닛 (54) 으로 전송할 수도 있다. 그 후, 양자화 유닛 (54) 은 변환 계수들을 양자화할 수도 있다.
그 후, 엔트로피 인코딩 유닛 (56) 은 스캔 모드에 따라 매트릭스에서의 양자화된 변환 계수들의 스캔을 수행할 수도 있다. 손실성 비디오 코딩의 경우, 계수들은 양자화된 변환 계수들일 수도 있다. 무손실성 비디오 코딩 또는 변환 스킵 또는 변환 바이패스가 있는 손실성 비디오 코딩의 경우에, 계수들은 변환 또는 양자화되지 않았던 계수들일 수도 있다. 본 개시물은 스캔을 수행하는 것으로서 엔트로피 인코딩 유닛 (56) 을 설명한다. 그러나, 다른 예들에서, 다른 프로세싱 유닛들, 이를테면, 양자화 유닛 (54) 이 스캔을 수행할 수도 있음을 이해해야만 한다.
변환 계수들이 1 차원 어레이로 스캔되면, 엔트로피 인코딩 유닛 (56) 은 엔트로피 코딩, 이를테면, CABAC, SBAC (syntax-based context-adaptive binary arithmetic coding), PIPE (Probability Interval Partitioning Entropy) 또는 다른 엔트로피 코딩 방법론을 계수들에 적용할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 본 개시물의 기술들에 따라 계수들을 코딩하도록 구성될 수도 있다. CABAC 의 예에서, 엔트로피 인코딩 유닛 (56) 은 규칙적 코딩 모드 또는 바이패스 모드를 이용하여 계수들을 인코딩할 수도 있다. CABAC 를 수행하기 위해, 엔트로피 인코딩 유닛 (126) 은 송신될 심볼들을 인코딩하기 위해 소정의 컨텍스트에 적용할 컨텍스트 모델을 선택할 수도 있다. 컨텍스트는, 예를 들어, 이웃하는 값들이 비-제로인지 아닌지의 여부에 관련될 수도 있다. 엔트로피 인코딩 유닛 (56) 은, 컨텍스트 모델 선택을 위해 이용되는 다른 인자들 중에서, 예를 들어, 인트라 예측 모드들에 대한 인트라 예측 방향, 신택스 엘리먼트들에 대응하는 계수의 스캔 포지션, 블록 유형, 및/또는 변환 유형유형초하여, 이들 신택스 엘리먼트들을 인코딩하기 위해 이용되는 콘텍스트 모델을 선택할 수도 있다.
엔트로 인코딩 유닛 (56) 은 비디오 디코더 또는 저장 디바이스로의 송신을 위한 비트스트림으로 잔여 비디오 데이터의 계수 레벨들을 인코딩한다. 무손실성 비디오 코딩 또는 변환 스킵 또는 변환 바이패스가 있는 손실성 비디오 코딩의 경우에, 계수들은 큰 절대값들을 가진 계수 레벨들을 가질 수도 있다. 그래픽들 및 텍스트 영역들을 포함할 수도 있는 스크린 컨텐츠를 계수들이 표현할 때, 컨텐츠가 잘 예측되지 않을 수도 있어, 인코딩될 계수들에 대한 계수 레벨들의 큰 절대값들로 귀결될 수도 있다.
엔트로피 인코딩 유닛 (56) 은 라이스 파라미터에 의해 정의되는 코드들을 이용하여, CABAC 의 바이패스 모드에서 또는 다른 엔트로피 코딩 엔진에서 현재 계수 (CG) 에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값 (예를 들어, coeff_abs_level_remaining 또는 levelRem) 을 인코딩한다. 이 개시물의 기술들에 따르면, 엔트로피 인코딩 유닛 (56) 은 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 현재 CG 에 대한 라이스 파라미터의 초기 값을 결정하도록 구성된다. 통계는 이전에 코딩된 계수들의 계수 레벨들의 절대값들 또는 계수 레벨들의 나머지 절대값들의 통계일 수도 있다. 본 개시물에서 설명된 통계 기반 라이스 파라미터 초기화 방식은 라이스 파라미터가, 변환 스킵 또는 변환 바이패스가 된 블록들 및 스크린 컨텐츠의 블록들에서 발생할 수도 있는 큰 계수 값들에 신속하고 효율적으로 적응하도록 허용한다.
일 예에서, 엔트로피 인코딩 유닛 (56) 은 주어진 이전에 인코딩된 계수에 대한 계수 레벨을 통계의 함수에 비교한 다음, 비교에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정함으로써 통계를 결정하도록 구성될 수도 있다. 통계의 값은 비디오 데이터의 각각의 슬라이스의 시작시 제로로 초기화될 수도 있고, 엔트로피 인코딩 유닛 (56) 은 슬라이스의 CG 당 한번 통계를 업데이트할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (56) 은 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적인 통계를 결정하도록 구성될 수도 있다. 카테고리들은 CG들을 포함하는 변환 블록들의 특징들, 이를 테면, 예를 들어, 변환 블록들이 루마 블록들인지의 여부, 및 변환 블록들이 변환 스킵 블록들인지의 여부에 기초하여 정의될 수도 있다.
현재 CG 의 시작시, 엔트로피 인코딩 유닛 (56) 은 통계의 값을 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑하도록 구성될 수도 있다. 일 예에서, 엔트로피 인코딩 유닛 (56) 은 상수값으로 나누어진 통계의 값 또는 라이스 파라미터의 최대 값 중 가장 적은 것의 선택에 기초하는 통계의 함수에 따라 통계의 값을 초기 라이스 파라미터 값에 맵핑할 수도 있다. 라이스 파라미터 초기화 방식에 대하여 통계 취출, 통계 분할, 및 통계 맵핑 절차들을 표현하는 예시적인 식들은 위에 보다 자세하게 설명되어 있다.
엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 코딩에 후속하여, 결과적으로 생기는 인코딩된 비디오는 다른 디바이스, 이를테면 비디오 디코더 (30) 로 송신되거나, 또는 나중의 송신 또는 취출을 위해 아카이브화될 수도 있다. 일부 경우들에서, 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 또는 다른 유닛은, 엔트로피 코딩에 더하여, 다른 코딩 기능들을 수행하도록 구성될 수도 있다.
역 양자화 유닛 (58) 및 역 변환 프로세싱 유닛 (60) 은 각각, 역 양자화 및 역 변환을 적용하여, 나중의 이용을 위한 레퍼런스 블록으로서 픽셀 도메인에서의 잔여 블록을 재구성한다. 모션 보상 유닛 (44) 은 디코딩된 픽쳐 버퍼 (64) 의 레퍼런스 픽쳐들 중 하나의 예측 블록에 잔여 블록을 추가함으로써 레퍼런스 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한, 모션 추정에서 이용하기 위한 서브-정수 픽셀 값들을 계산하기 위해, 재구성된 잔여 블록에 하나 이상의 보간 필터들을 또한 적용할 수도 있다. 합산기 (62) 는 복원된 잔여 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 가산하여, 디코딩된 픽쳐 버퍼 (64) 에 저장하기 위한 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 후속하는 비디오 프레임에서의 블록을 인터 코딩하기 위한 레퍼런스 블록으로서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 이용될 수도 있다.
도 6 은 본 개시물에서 설명된 계수 레벨들을 디코딩하는 기술들을 구현할 수도 있는 예시적인 비디오 디코더 (30) 의 일 예를 나타내는 블록도이다. 도 6 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 비디오 데이터 메모리 (71), 모션 보상 유닛 (72), 인트라 예측 프로세싱 유닛 (74), 역 양자화 유닛 (76), 역 변환 프로세싱 유닛 (78), 디코딩된 픽쳐 버퍼 (DPB; 82), 및 합산기 (80) 를 포함한다. 비디오 디코더 (30) 는, 일부 예들에서, 비디오 인코더 (20) (도 5 참조) 에 대해 설명된 인코딩 패스에 일반적으로 가역적인 디코딩 패스를 수행할 수도 있다.
비디오 데이터 메모리 (71) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩되는 비디오 데이터, 이를테면, 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (71) 에 저장된 비디오 데이터는 예를 들어, 컴퓨터 판독가능 매체 (16) 로부터, 예를 들어, 로컬 비디오 소스, 이를테면, 카메라로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통하여 또는 물리적 데이터 저장 매체에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (71) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽쳐 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽쳐 버퍼 (82) 는 예를 들어, 인트라 또는 인터 코딩 모드들에서, 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩하는데 있어 이용하기 위한 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽쳐 메모리일 수도 있다. 비디오 데이터 메모리 (71) 및 디코딩된 픽쳐 버퍼 (82) 는 여러 메모리 디바이스, 이를테면, SDRAM (synchronous DRAM), MRAM (magnetoresistive RAM), RRAM (resistive RAM) 을 포함하는 DRAM (Dynamic random access memory), 또는 다른 유형들의 메모리 디바이스들의 어느 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (71) 및 디코딩된 픽쳐 버퍼 (82) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (71) 는 비디오 디코더 (30) 의 다른 컴포넌트들과의 온칩일 수도 또는 이들 컴포넌트들에 대하여 오프칩일 수도 있다.
엔트로피 디코딩 유닛 (70) 은 인코딩된 비트스트림에 대해 엔트로피 디코딩 프로세스를 수행하여 잔여 비디오 데이터 계수들의 1 차원 어레이를 취출한다. 이용된 엔트로피 디코딩 프로세스는 비디오 인코더 (20) 에 의해 이용된 엔트로피 코딩 (예를 들어, CABAC) 에 의존한다. 인코더에 의해 이용된 엔트로피 코딩 프로세스는 인코딩된 비트스트림에서 시그널링될 수도 있거나 또는 미리 정해진 프로세스일 수도 있다. 엔트로피 디코딩 유닛 (70) 은 본 개시물의 기술들에 따라 계수들을 디코딩하도록 구성될 수도 있다. CABAC 의 예에서, 엔트로피 디코딩 유닛 (70) 은 규칙적 코딩 모드 또는 바이패스 모드를 이용하여 계수들을 디코딩할 수도 있다.
일부 예들에서, 엔트로피 디코딩 유닛 (70) 은 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 에 의해 이용된 스캔 모드를 미러링하는 스캔을 이용하여 수신된 값들을 스캔할 수도 있다. 계수들의 스캔이 역 양자화 유닛 (76) 에서 수행될 수도 있지만, 예시적인 목적을 위해, 스캔은 엔트로피 디코딩 유닛 (70) 에 의해 수행되는 것으로서 설명될 것이다. 또한, 예시적인 용이함을 위해 별개의 기능적 유닛들로서 도시되었지만, 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70), 역 양자화 유닛 (76), 및 다른 유닛들의 구조 및 기능성은 고집적화될 수도 있다.
엔트로피 디코딩 유닛 (70) 은 비디오 인코더 (20) 에 대한 가역적으로 비트스트림으로부터 잔여 비디오 데이터 계수들의 계수 레벨들을 디코딩한다. 손실성 비디오 코딩의 경우, 디코딩되는 계수들은 양자화된 변환 계수들일 수도 있다. 변환 스킵 또는 바이패스가 있는 무손실성 비디오 코딩 또는 손실성 비디오 코딩의 경우에, 디코딩될 계수들은 인코딩된 픽셀 값들일 수도 있고, 큰 절대값들을 갖는 계수 레벨들 (즉, 픽셀 값들) 을 가질 수도 있다. 그래픽들 및 텍스트 영역들을 포함할 수도 있는 스크린 컨텐츠를 계수들이 표현할 때, 컨텐츠가 잘 예측되지 않을 수도 있어, 디코딩될 계수들에 대한 계수 레벨들의 큰 절대값들로 귀결될 수도 있다.
엔트로피 디코딩 유닛 (70) 은 라이스 파라미터에 의해 정의되는 코드들을 이용하여 계수 그룹 (CG) 에서의 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 디코딩한다. 본 개시물의 기술들에 따르면, 엔트로피 디코딩 유닛 (70) 은 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 현재 CG 에 대한 라이스 파라미터의 초기 값을 결정하도록 구성된다. 통계는 이전에 디코딩된 계수들의 계수 레벨들의 절대값들 또는 계수 레벨들의 나머지 절대값들의 통계일 수도 있다. 본 개시물에서 설명된 통계 기반 라이스 파라미터 초기화 방식은 라이스 파라미터가, 변환 스킵 또는 변환 바이패스가 된 블록들 및 스크린 컨텐츠의 블록들에서 발생할 수도 있는 큰 계수 값들에 신속하고 효율적으로 적응하도록 허용한다.
일 예에서, 엔트로피 디코딩 유닛 (70) 은 주어진 이전에 디코딩된 계수에 대한 계수 레벨을 통계의 함수에 비교한 다음, 비교에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정함으로써 통계를 결정하도록 구성될 수도 있다. 통계의 값은 비디오 데이터의 각각의 슬라이스의 시작시 제로로 초기화될 수도 있고, 엔트로피 디코딩 유닛 (70) 은 슬라이스의 CG 당 한번 통계를 업데이트할 수도 있다. 일부 예들에서, 엔트로피 디코딩 유닛 (70) 은 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적인 통계를 결정하도록 구성될 수도 있다. 카테고리들은 CG들을 포함하는 변환 블록들의 특징들, 이를 테면, 예를 들어, 변환 블록들이 루마 블록들인지의 여부, 및 변환 블록들이 변환 스킵 블록들인지의 여부에 기초하여 정의될 수도 있다.
현재 CG 의 시작시, 엔트로피 디코딩 유닛 (70) 은 통계의 값을 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑하도록 구성될 수도 있다. 일 예에서, 엔트로피 디코딩 유닛 (70) 은 상수값으로 나누어진 통계의 값 또는 라이스 파라미터의 최대 값 중 가장 작은 것의 선택에 기초하는 통계의 함수에 따라 통계의 값을 초기 라이스 파라미터 값에 맵핑할 수도 있다. 라이스 파라미터 초기화 방식에 대하여 통계 취출, 통계 분할, 및 통계 맵핑 절차들을 표현하는 예시적인 식들은 위에 보다 자세하게 설명되어 있다.
역 양자화 유닛 (76) 은 비트스트림으로 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 변환 계수들을 역 양자화, 즉, 양자화 해제한다. 양자화 프로세스는, 예를 들어, H.264 디코딩 표준에 의해 정의되거나 또는 HEVC 에 대해 제안된 프로세스들과 유사한 통상적인 프로세스를 포함할 수도 있다. 역 양자화 프로세스는 양자화의 정도, 및 마찬가지로, 적용되어야 하는 역 양자화의 정도를 결정하기 위해, CU에 대한 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터 (QP) 의 이용을 포함할 수도 있다. 역 양자화 유닛 (76) 은, 계수들이 1차원 어레이에서 2차원 어레이로 변환되기 이전 또는 이후에 변환 계수들을 역 양자화할 수도 있다.
역 변환 프로세싱 유닛 (78) 은 역 양자화된 변환 계수들에 대해 역 변환을 적용한다. 예를 들어, 역 변환 프로세싱 유닛 (78) 은 이산 코사인 변환 (DCT), 이산 사인 변환 (DST), 정수 변환, 카루넨-루베 (K-L) 변환, 또는 잔여 데이터를 생성하는 다른 변환 중 하나를 적용할 수도 있다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 비디오 인코더 (20) 로부터의 시그널링에 기초하여, 또는 블록 사이즈, 코딩 모드 등과 같은 하나 이상의 코딩 특성들로부터 변환을 추론함으로써 역 변환을 결정할 수도 있다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 현재 블록을 포함하는 LCU에 대한 쿼드트리의 루트 노드에서 시그널링된 변환에 기초하여 현재 블록에 적용할 변환을 결정할 수도 있다. 대안적으로, 변환은 LCU 쿼드트리에서의 리프 노드 CU에 대한 TU 쿼드트리의 루트에서 시그널링될 수도 있다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 캐스케이드식 역 변환을 적용할 수도 있는데, 캐스케이드식 역 변환에서 역 변환 프로세싱 유닛 (78) 은 2개 이상의 역 변환들을 디코딩되고 있는 현재 블록의 변환 계수들에 적용한다.
인트라 예측 프로세싱 유닛 (74) 은 현재 프레임의 이전에 디코딩된 블록들로부터의 데이터 및 시그널링된 인트라 예측 모드에 기초하여 현재 프레임의 현재 블록에 대한 예측 데이터를 생성할 수도 있다.
모션 보상 유닛 (72) 은 인코딩된 비트스트림으로부터 모션 벡터, 모션 예측 방향 및 레퍼런스 인덱스를 취출할 수도 있다. 레퍼런스 예측 방향은 인터 예측 모드가 단방향인지 (예를 들어, P 프레임) 또는 양방향 (B 프레임) 인지의 여부를 표시한다. 레퍼런스 인덱스는 후보 모션 벡터가 어느 레퍼런스 프레임에 기초하는지를 표시한다. 취출된 모션 예측 방향, 레퍼런스 프레임 인덱스에 기초하여, 모션 보상 유닛 (72) 은 현재 부분에 대한 모션 보상 블록을 생성한다. 이들 모션 보상된 블록들은 본질적으로 잔여 데이터를 생성하기 위해 이용된 예측 블록을 재생성한다.
모션 보상 유닛 (72) 은 보간 필터들에 기초한 보간을 가능하게 수행하여 모션 보상 블록들 (72) 을 생성한다. 서브-픽셀 정밀도를 갖는 모션 추정에 사용될 보간 필터들에 대해 식별자들은 신택스 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것과 같이 보간 필터들을 이용하여 레퍼런스 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 모션 보상 유닛 (72) 은 수신된 신택스 정보에 따라 비디오 인코더 (20) 에 의해 이용된 보간 필터들을 결정하고 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
추가적으로, 모션 보상 유닛 (72) 및 인트라 예측 프로세싱 유닛 (74) 은 HEVC 예에서, 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하기 위해 사용된 LCU들의 사이즈들을 결정하기 위해 (예를 들어, 쿼드트리에 의해 제공된) 신택스 정보의 일부를 사용할 수도 있다. 모션 보상 유닛 (72) 및 인트라 예측 프로세싱 유닛 (74) 은 또한, 인코딩된 비디오 시퀀스의 프레임의 각 CU가 어떻게 스플릿되는지를 (그리고 마찬가지로, 서브 CU들이 어떻게 스플릿되는지를) 설명하는 스플릿 정보를 결정하기 위해 신택스 정보를 사용할 수도 있다. 또한, 신택스 정보는 각각의 스플릿이 어떻게 인코딩되는지를 나타내는 모드들 (예를 들어, 인트라 예측 또는 인터 예측, 및 인트라 예측에 대한 인트라 예측 인코딩 모드), 각각의 인터 인코딩된 PU에 대한 하나 이상의 레퍼런스 프레임들 (및/또는 레퍼런스 프레임들에 대한 식별자들을 포함하는 레퍼런스 리스트들), 및 인코딩된 비디오 시퀀스를 인코딩할 다른 정보를 포함할 수도 있다.
합산기 (80) 는 잔여 블록들을 모션 보상 유닛 (72) 또는 인트라 예측 유닛에 의해 생성된 대응하는 예측 블록들과 합산하여 디코딩된 블록들을 형성한다. 원하는 경우, 블록화 아티팩트들을 제거하도록 디코딩된 블록들을 필터링하기 위해 디블록화 필터가 또한 적용될 수도 있다. 그 후, 디코딩된 비디오 블록들은 디코딩된 픽쳐 버퍼 (82) 에 저장되고, 디코딩된 픽쳐 버퍼는 후속 모션 보상에 대한 레퍼런스 블록들을 제공하고 또한 디스플레이 디바이스 (이를테면, 도 1 의 디스플레이 디바이스 (32)) 상에서의 프리젠테이션을 위한 디코딩된 비디오를 생성한다.
도 7 은 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 인코딩 동안에 라이스 파라미터의 값을 업데이트하는 예시적인 동작을 나타내는 플로우차트이다. 예시적인 동작은 도 5 로부터 엔트로피 인코딩 유닛 (56) 을 포함하는 비디오 인코더 (20) 에 대하여 설명된다.
엔트로피 인코딩 유닛 (56) 은 비디오 디코더 (30) 로의 송신을 위하여 또는 저장 매체 (34) 또는 파일 서버 (36) 상의 저장을 위하여 비트스트림으로 인코딩되는 잔여 비디오 데이터의 계수들을 수신한다. 잔여 비디오 데이터 계수들은 계수 그룹들 (CG들) 에 포함될 수도 있고, 계수 그룹들 각각은 변환 블록의 서브블록 (예를 들어, 도 4 에 예시되는 4×4 서브블록) 이다. CG들에서 계수들의 인코딩 동안에, 엔트로피 인코딩 유닛 (56) 은 이전에 인코딩된 계수들에 대한 계수 레벨의 통계를 결정한다 (100). 도 9 에 대하여 아래 보다 자세하게 설명된 예에서, 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 이전에 인코딩된 계수들 중 하나 이상에 대한 계수 레벨을 통계의 함수에 비교하는 것에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정하는 것을 포함할 수도 있다. 통계의 값은 잔여 비디오 데이터의 각각의 슬라이스의 시작시 제로로 초기화될 수도 있다.
일부 예들에서, 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 잔여 비디오 데이터의 슬라이스 또는 코딩 유닛 (CU) 에 대한 계수 레벨들의 평균 또는 이동 평균을 계산하는 것을 포함할 수도 있다. 다른 예들에서, 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 이전에 인코딩된 계수들 중 하나에 대한 계수 레벨을 통계의 값에 비교하는 것에 기초하여 통계의 값을 증가, 감소, 또는 유지할지의 여부를 결정하는 것을 포함할 수도 있다.
계수 레벨들에 대한 통계는 이전에 인코딩된 계수들에 대한, 계수 레벨들의 절대값들의 통계, 또는 계수 레벨들의 나머지 절대값들의 계수 레벨들의 통계를 포함할 수도 있다. 계수 레벨들의 통계는 둘 이상의 상이한 변환 블록들에 포함되는 CG들에 이전에 인코딩된 계수들에 대하여, 또는 모두가 동일한 변환 블록에 포함되는 CG들에서의 이전에 인코딩된 계수들에 대하여 수집될 수도 있다.
일부 예들에서, 엔트로피 인코딩 유닛 (56) 은 계수 그룹 당 한번, 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정할 수도 있다. 통계 수집의 빈도는 도 9 에 대하여 보다 자세하게 설명되어 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 계수 레벨의 제 1 절대값이 이전의 CG들 각각에서 인코딩될 때 통계를 결정할 수도 있다. 대안으로서, 엔트로피 인코딩 유닛 (56) 은 계수 레벨의 제 1 나머지 절대값이 이전의 CG들 각각에서 인코딩될 때 통계를 결정할 수도 있다. 다른 예들에서, 엔트로피 인코딩 유닛 (56) 은 계수들 각각의 인코딩시에 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정할 수도 있다.
추가로, 도 9 에 대하여 아래 자세하게 설명될 바와 같이, 엔트로피 인코딩 유닛 (56) 은 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적인 통계를 결정할 수도 있다. 카테고리들은 CG들을 포함하는 변환 블록들의 특징들에 기초하여 정의될 수도 있다. 예를 들어, 변환 블록들의 특징들은 변환 블록들이 루마 블록 유형인지 또는 크로마 블록 유형인지의 여부, 변환 블록이 변환 스킵 블록들 또는 변환-양자화 바이패스 블록들로서 인코딩되는지의 여부, 변환 블록들이 인트라 예측 또는 인터 예측 슬라이스 유형들을 갖는지의 여부, 변환 블록들의 사이즈, 및/또는 변환 블록들 내에서의 CG들의 포지션들을 포함할 수도 있다.
인코딩될 잔여 비디오 데이터의 변환 블록에서의 현재 CG 에 대해, 엔트로피 인코딩 유닛 (56) 은 이전에 인코딩된 계수들에 대한 계수 레벨들의 수집된 통계에 기초하여 라이스 파라미터의 초기 값을 결정한다 (102). 통상적으로, 라이스 파라미터의 값은 각각의 CG 의 시작시, 제로로 초기화되고, 조건적으로 CG 에서의 계수 레벨들의 나머지 절대값들을 인코딩한 후에 업데이트된다. 스크린 컨텐츠에 대해 계수 레벨들을 코딩하는 경우, 또는 변환 스킵 모드에서의 무손실성 코딩 또는 손실성 코딩의 경우에, 각각의 CG 에 대해 라이스 파라미터의 값을 제로로 설정하는 것은 최적의 것이 아닐 수도 있다. 본 개시물의 기술들은 라이스 파라미터의 값을 자동으로 제로로 재설정하는 대신에, 수집된 통계에 기초하여 각각의 CG의 시작시, 라이스 파라미터의 값을 설정하는 것을 기술한다.
일 예에서, 도 10 에 대하여 아래 자세하게 설명된 바와 같이, 엔트로피 인코딩 유닛 (56) 은 통계의 함수에 따라, 수집된 통계의 값을 라이스 파라미터의 초기 값에 맵핑함으로써 현재 CG 에 대한 라이스 파라미터의 초기 값을 결정한다. 다른 예들에서, 엔트로피 인코딩 유닛 (56) 은 저장된 테이블에 따라, 수집된 통계의 값을 라이스 파라미터의 초기 값에 맵핑할 수도 있다.
위에 보다 자세하게 설명된 바와 같이, 엔트로피 인코딩 유닛 (56) 은 현재 CG 에서의 계수들의 계수 레벨들을 인코딩하는 역방향 스캔 순서에 따라 현재 CG 의 하나 이상의 스캔들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 계수들이 정규 코딩 모드에서 컨텍스트 모델들을 사용하여 1 보다 크거나 또는 2 보다 큰 절대값을 갖는 계수 레벨들을 갖는지의 여부를 표시하도록 신택스 엘리먼트들 또는 플래그들을 인코딩할 수도 있다. 그 후, 엔트로피 인코딩 유닛 (56) 은 라이스 파라미터에 의해 정의되는 코드들을 이용하여 현재 CG 에서의 계수들 중 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 표시하도록 플래그 또는 신택스 엘리먼트들을 인코딩한다 (104). 예를 들어, 엔트로피 인코딩 유닛 (56) 은 바이패스 모드에서 2 보다 큰 계수 레벨들을 갖는 계수들 중 어느 것에 대한 계수 레벨의 나머지 절대값을 표시하는 신택스 엘리먼트를 인코딩할 수도 있다. 일부 예들에서, 현재 CG 에서의 계수 레벨의 제 1 나머지 절대값의 인코딩시, 엔트로피 인코딩 유닛 (56) 은 인코딩된 계수의 계수 레벨에 기초하여 통계를 업데이트할 수도 있다.
일부 경우들에서, 엔트로피 인코딩 유닛 (56) 은 현재 CG 에서 인코딩된 계수에 대한 계수 레벨의 절대값 및 라이스 파라미터의 초기 값에 기초하여 라이스 파라미터의 초기 값을 조건적으로 업데이트할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 현재 CG 에서의 계수들에 대한 각각의 나머지 절대값을 인코딩한 후에 라이스 파라미터의 값을 조건적으로 업데이트하는 것을 계속 진행할 수도 있다. 현재 CG 의 끝에서, 엔트로피 인코딩 유닛 (56) 은 현재 CG 에 포함된 최근 인코딩된 계수들을 포함한, 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 후속하는 CG 에 대한 라이스 파라미터의 초기 값을 결정할 수도 있다.
도 8 은 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 디코딩 동안에 라이스 파라미터의 값을 업데이트하는 예시적인 동작을 나타내는 플로우차트이다. 예시적인 동작은 도 6 으로부터 엔트로피 디코딩 유닛 (70) 을 포함하는 비디오 디코더 (30) 에 대하여 설명된다.
비디오 디코더 (30) 는 저장 매체 (34) 또는 파일 서버 (36) 와 같은 저장 디바이스로부터 또는 비디오 인코더 (20) 로부터 인코딩된 비디오 비트스트림을 수신한다. 수신된 비디오 비트스트림은 디코딩되는 잔여 비디오 데이터의 계수들을 표현한다. 잔여 비디오 데이터 계수들은 계수 그룹들 (CG들) 에 포함될 수도 있고, 계수 그룹들 각각은 변환 블록의 서브블록 (예를 들어, 도 4 에 예시되는 4×4 서브블록) 이다. CG들에서 계수들의 디코딩 동안에, 엔트로피 디코딩 유닛 (70) 은 이전에 디코딩된 계수들에 대한 계수 레벨의 통계를 결정한다 (110). 도 9 에 대하여 아래 보다 자세하게 설명된 예에서, 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 이전에 디코딩된 계수들 중 하나 이상에 대한 계수 레벨을 통계의 함수에 비교하는 것에 기초하여 통계의 값을 증가 또는 감소시킬지의 여부를 결정하는 것을 포함할 수도 있다. 통계의 값은 잔여 비디오 데이터의 각각의 슬라이스의 시작시 제로로 초기화될 수도 있다.
일부 예들에서, 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 잔여 비디오 데이터의 슬라이스, 코딩 유닛 (CU) 또는 변환 유닛 (TU) 에 대한 계수 레벨들의 평균 또는 이동 평균을 계산하는 것을 포함할 수도 있다. 다른 예들에서, 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것은 이전에 디코딩된 계수들 중 하나에 대한 계수 레벨을 통계의 값에 비교하는 것에 기초하여 통계의 값을 증가, 감소, 또는 유지할지의 여부를 결정하는 것을 포함할 수도 있다.
계수 레벨들에 대한 통계는 이전에 디코딩된 계수들에 대한, 계수 레벨들의 절대값들의 통계, 또는 계수 레벨들의 나머지 절대값들의 계수 레벨들의 통계를 포함할 수도 있다. 계수 레벨들의 통계는 둘 이상의 상이한 변환 블록들에 포함되는 CG들에 이전에 디코딩된 계수들에 대하여, 또는 모두가 동일한 변환 블록에 포함된 CG들에서의 이전에 디코딩된 계수들에 대하여 수집될 수도 있다.
일부 예들에서, 엔트로피 디코딩 유닛 (70) 은 계수 그룹 당 한번, 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정할 수도 있다. 통계 수집의 빈도는 도 9 에 대하여 보다 자세하게 설명되어 있다. 예를 들어, 엔트로피 디코딩 유닛 (70) 은 계수 레벨의 제 1 절대값이 이전의 CG들 각각에서 디코딩될 때 통계를 결정할 수도 있다. 대안으로서, 엔트로피 디코딩 유닛 (70) 은 계수 레벨의 제 1 나머지 절대값이 이전의 CG들 각각에서 디코딩될 때 통계를 결정할 수도 있다. 다른 예들에서, 엔트로피 디코딩 유닛 (70) 은 계수들 각각의 인코딩시에 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정할 수도 있다.
추가로, 도 9 에 대하여 아래 자세하게 설명될 바와 같이, 엔트로피 디코딩 유닛 (70) 은 CG들의 복수의 상이한 카테고리들의 각각에 대해 개별적인 통계를 결정할 수도 있다. 카테고리들은 CG들을 포함하는 변환 블록들의 특징들에 기초하여 정의될 수도 있다. 예를 들어, 변환 블록들의 특징들은 변환 블록들이 루마 블록 유형인지 또는 크로마 블록 유형인지의 여부, 변환 블록이 변환 스킵 블록들 또는 변환-양자화 바이패스 블록들로서 디코딩되는지의 여부, 변환 블록들이 인트라 예측 또는 인터 예측 슬라이스 유형들을 갖는지의 여부, 변환 블록들의 사이즈, 및/또는 변환 블록들 내에서의 CG들의 포지션들을 포함할 수도 있다.
디코딩될 잔여 비디오 데이터의 변환 블록에서의 현재 CG 에 대해, 엔트로피 디코딩 유닛 (70) 은 이전에 디코딩된 계수들에 대한 계수 레벨들의 수집된 통계에 기초하여 라이스 파라미터의 초기 값을 결정한다 (112). 일부 프로세스들에서, 라이스 파라미터의 값은 각각의 CG 의 시작시, 제로로 초기화되고, 조건적으로 CG 에서의 계수 레벨들의 나머지 절대값들을 디코딩한 후에 업데이트된다. 스크린 컨텐츠에 대해 계수 레벨들을 코딩하는 경우, 또는 변환 스킵 모드에서의 무손실성 코딩 또는 손실성 코딩의 경우에, 각각의 CG 에 대해 라이스 파라미터의 값을 제로로 설정하는 것은 최적의 것이 아닐 수도 있다. 본 개시물의 기술들은 라이스 파라미터의 값을 자동으로 제로로 재설정하는 대신에, 수집된 통계에 기초하여 각각의 CG의 시작시, 라이스 파라미터의 값을 설정하는 것을 기술한다.
일 예에서, 도 10 에 대하여 아래 자세하게 설명된 바와 같이, 엔트로피 디코딩 유닛 (70) 은 통계의 함수에 따라, 수집된 통계의 값을 라이스 파라미터의 초기 값에 맵핑함으로써 현재 CG 에 대한 라이스 파라미터의 초기 값을 결정한다. 다른 예들에서, 엔트로피 디코딩 유닛 (70) 은 저장된 테이블에 따라, 수집된 통계의 값을 라이스 파라미터의 초기 값에 맵핑할 수도 있다.
위에 보다 자세하게 설명된 바와 같이, 엔트로피 디코딩 유닛 (70) 은 현재 CG 에서의 계수들의 계수 레벨들을 디코딩하는 역방향 스캔 순서에 따라 현재 CG 의 하나 이상의 스캔들을 수행할 수도 있다. 예를 들어, 엔트로피 디코딩 유닛 (70) 은 계수들이 규칙 코딩 모드에서 컨텍스트 모델들을 사용하여 1 보다 크거나 또는 2 보다 큰 절대값을 갖는 계수 레벨들을 갖는지의 여부를 표시하는 신택스 엘리먼트들 또는 플래그들을 디코딩할 수도 있다. 그 후, 엔트로피 디코딩 유닛 (70) 은 라이스 파라미터에 의해 정의되는 코드들을 이용하여 현재 CG 에서의 계수들 중 적어도 하나의 계수에 대한 계수 레벨의 나머지 절대값을 표시하도록 플래그 또는 신택스 엘리먼트들을 디코딩한다 (114). 예를 들어, 엔트로피 디코딩 유닛 (70) 은 바이패스 모드에서 2 보다 큰 계수 레벨들을 갖는 계수들 중 어느 것에 대한 계수 레벨의 나머지 절대값을 표시하는 신택스 엘리먼트를 디코딩할 수도 있다. 일부 예들에서, 현재 CG 에서의 계수 레벨의 제 1 나머지 절대값의 디코딩시, 엔트로피 디코딩 유닛 (70) 은 디코딩된 계수의 계수 레벨에 기초하여 통계를 업데이트할 수도 있다.
일부 경우들에서, 엔트로피 디코딩 유닛 (70) 은 현재 CG 에서 인코딩된 계수에 대한 계수 레벨의 절대값 및 라이스 파라미터의 초기 값에 기초하여 라이스 파라미터의 초기 값을 조건적으로 업데이트할 수도 있다. 엔트로피 디코딩 유닛 (70) 은 현재 CG 에서의 계수들에 대한 각각의 나머지 절대값을 디코딩한 후에 라이스 파라미터의 값을 조건적으로 업데이트하는 것을 계속 진행할 수도 있다. 현재 CG 의 끝에서, 엔트로피 디코딩 유닛 (70) 은 현재 CG 에 포함된 최근 디코딩된 계수들을 포함한, 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계에 기초하여 후속하는 CG 에 대한 라이스 파라미터의 초기 값을 결정할 수도 있다.
도 9 는 본 개시물에 설명된 기술들에 따라 계수 레벨들의 엔트로피 코딩 동안에 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 예시적인 동작을 나타내는 플로우차트이다. 예시된 동작은 도 7 로부터의 단계 100 또는 도 8 로부터의 단계 110 의 일 예일 수도 있다. 예시적인 동작은 도 6 으로부터 엔트로피 디코딩 유닛 (70) 을 포함하는 비디오 디코더 (30) 에 대하여 설명된다. 다른 예들에서, 동작은 도 5 로부터 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 에 의해 수행될 수도 있다.
엔트로피 디코딩 유닛 (70) 은 변환 블록에 포함된 CG 에서의 계수에 대한 계수 레벨을 디코딩한다 (120). 계수 레벨은 계수 레벨의 나머지 절대값 또는 계수 레벨의 절대값을 포함할 수도 있다. 디코딩된 계수 레벨이 CG 에서 제 1 계수 레벨이면 (122 의 아니오 브랜치), 엔트로피 디코딩 유닛 (70) 은 디코딩된 계수 레벨에 기초하여 통계를 업데이트하지 않는다 (124). 이 예에서, 통계는 계수 레벨의 제 1 절대값 및 계수 레벨의 제 1 나머지 절대값이 CG 에서 코딩될 때 CG 마다 한번만 업데이트될 수도 있다. 다른 예에서, 통계는 상이한 계수 레벨의 코딩에 기초하여 또는 보다 빈번하게 업데이트될 수도 있다.
디코딩된 계수 레벨이 CG 에서 제 1 계수 레벨이면 (122 의 예 브랜치), 엔트로피 디코딩 유닛 (70) 은 변환 블록의 특징들에 기초하여 CG 의 카테고리를 결정한다 (126). 일 예에서, CG 의 카테고리를 결정하는데 이용되는 변환 블록의 특징들은 변환 블록이 루마 블록인지의 여부 및 변환 블록이 변환 스킵 블록인지의 여부를 포함한다. 다른 예들에서, CG 의 카테고리를 결정하는데 이용되는 특징들은 예를 들어, 변환 블록이 변환-양자화 바이패스 블록인지의 여부, 변환 블록이 인트라 예측 슬라이스 유형 또는 인터 예측 슬라이스 유형을 갖는지의 여부, 변환 블록의 사이즈, 및/또는 변환 블록 내에서의 현재 CG 의 포지션으로서 다를 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 변환 블록의 어느 특징들이 CG들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하는 신택스 엘리먼트를 수신할 수도 있다.
그 후, 엔트로피 디코딩 유닛 (70) 은 결정된 카테고리에 대하여, CG 에서의 제 1 계수 레벨을 통계의 함수에 비교한다 (128). 일 예에서, 통계를 업데이트하는데 이용되는 통계의 함수는 제 2 상수값으로 나누어진 통계의 값에 의해 좌측 시프트되는 제 1 상수값에 기초한다. 다른 예들에서, 통계는 상이한 기술들에 따라, 이를 테면, 비디오 데이터의 코딩 유닛 (CU) 또는 슬라이스에 대하여 계수 레벨들의 평균 또는 이동 평균을 계산하는 것, 또는 CG 에서의 계수 레벨을 통계의 값에 직접적으로 비교하는 것에 따라 결정될 수도 있다.
CG 에서의 제 1 계수 레벨이 통계의 함수의 결과와 같거나 결과보다 크면 (130 의 예 브랜치), 엔트로피 디코딩 유닛 (70) 은 결정된 카테고리에 대한 통계의 값을 증가시킨다 (132). CG 에서의 제 1 계수 레벨이 통계의 함수의 결과보다 작으면 (130 의 아니오 브랜치), 엔트로피 디코딩 유닛 (70) 은 결정된 카테고리에 대한 통계의 값을 감소시킨다 (134). 어느 경우에도, 엔트로피 디코딩 유닛 (70) 은 도 10 에 대하여 아래 보다 자세하게 설명된 바와 같이, 결정된 카테고리의 후속하는 CG 에 대한 라이스 파라미터의 초기 값을 결정하기 위해 업데이트된 통계를 이용할 수도 있다.
도 9 의 예에서, 통계를 결정하는 동작은 CG당 한번만 통계를 업데이트하고, CG들의 복수의 상이한 카테고리들에 대한 개별적인 통계를 수집한다. 다른 예들에서, 통계를 결정하는 동작은 CG 에서 계수 레벨에 대한 나머지 절대값들을 코딩한 후에 통계를 업데이트할 수도 있다. 추가적인 예들에서, 통계를 결정하는 동작은 통계의 하나의 카테고리만을 수집할 수도 있다.
도 10 은 본 개시물에 설명된 기술들에 따라 결정된 통계에 기초하여 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 예시적인 동작을 나타내는 플로우차트이다. 예시된 동작은 도 7 로부터의 단계 102 또는 도 8 로부터의 단계 112 의 일 예일 수도 있다. 예시적인 동작은 도 6 으로부터 엔트로피 디코딩 유닛 (70) 을 포함하는 비디오 디코더 (30) 에 대하여 설명된다. 다른 예들에서, 동작은 도 5 로부터 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 에 의해 수행될 수도 있다.
변환 블록에서 현재 CG 의 시작시 (140), 엔트로피 디코딩 유닛 (70) 은 현재 CG 를 포함하는 변환 블록의 특징들에 기초하여 현재 CG 의 카테고리를 결정한다 (142). 일 예에서, 현재 CG 의 카테고리를 결정하는데 이용되는 변환 블록의 특징들은 변환 블록이 루마 블록인지의 여부 및 변환 블록이 변환 스킵 블록인지의 여부를 포함한다. 다른 예들에서, 현재 CG 의 카테고리를 결정하는데 이용되는 특징들은 예를 들어, 변환 블록이 변환-양자화 바이패스 블록인지의 여부, 변환 블록이 인트라 예측 슬라이스 유형 또는 인터 예측 슬라이스 유형을 갖는지의 여부, 변환 블록의 사이즈, 및/또는 변환 블록 내에서의 현재 CG 의 포지션으로서 다를 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 변환 블록의 어느 특징들이 CG들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하는 신택스 엘리먼트를 수신할 수도 있다.
그 후, 엔트로피 디코딩 유닛 (70) 은 통계의 함수에 따라, 결정된 카테고리에 대한 통계의 값을 현재 CG 에 대한 라이스 파라미터의 초기 값에 맵핑한다 (144). 일 예에서, 라이스 파라미터를 초기화하는데 이용되는 통계의 함수는 상수 값으로 나누어진 통계의 값 또는 라이스 파라미터의 최대 값 중 가장 적은 것의 선택에 기초한다. 다른 예에서, 라이스 파라미터의 초기 값은 상이한 기술들에 따라, 이를 테면, 통계의 값을 상수값만큼 좌측 시프트하는 것, 또는 통계의 선형 또는 피스와이즈 선형 함수를 적용하는 것에 따라 통계로부터 결정될 수도 있다. 다른 예에서, 엔트로피 디코딩 유닛 (70) 은 저장된 테이블에 따라, 통계의 값을 라이스 파라미터의 초기 값에 맵핑할 수도 있으며, 이 저장된 테이블에서는, 미리 정의된 범위 내에서 각각의 통계의 값이 라이스 파라미터의 최대 값까지 라이스 파라미터의 값에 맵핑된다.
하나 이상의 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능 매체 상에 저장되거나 송신될 수도 있고, 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 예를 들어 통신 프로토콜에 따라 일 장소에서 다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 데이터 저장 매체들과 같은 유형의 매체에 대응하는, 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 이 방식으로, 컴퓨터 판독 가능한 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에 설명된 기법들의 구현을 위한 명령들, 코드, 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
한정이 아닌 예로서, 그러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체라고 적절히 칭해진다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고, 대신에 비일시적인, 유형의 저장 매체들이다. 본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크(disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에서 이용된 용어 "프로세서"는 임의의 앞서 설명된 구조 또는 본원에서 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 몇몇 양상들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 또는 통합 코덱에 통합될 수도 있다. 또한, 상기 기술들은 하나 이상의 회로들 또는 로직 소자들에서 완전히 구현될 수 있다.
본 개시물의 기술들은, 무선 헤드셋, 집적 회로 (IC) 또는 ICs의 세트 (예를 들어, 칩 세트) 를 포함하는 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양태를 강조하기 위해 다양한 소자들, 모듈들, 또는 유닛들이 본 개시에서 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의해 실현될 필요는 없다. 오히려, 상술된 바와 같이, 적합한 소프트웨어 및/또는 펌웨어와 결합하여, 상술된 하나 이상의 프로세서들을 포함해, 다양한 유닛들이 코덱 하드웨어 유닛으로 결합되거나 상호동작가능한 하드웨어 유닛들의 집합으로 제공될 수도 있다.
다양한 예들을 설명하였다. 이러한 예들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (59)

  1. 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법으로서,
    계수 그룹들의 복수의 상이한 카테고리들 각각에 대하여 잔여 비디오 데이터의 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 단계로서, 상기 상이한 카테고리들은 상기 계수 그룹들을 포함하는 변환 블록들의 특징들에 기초하여 정의되고, 상기 이전에 디코딩된 계수들은 상기 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 앞서 디코딩되는, 상기 계수 레벨들의 통계를 결정하는 단계;
    상기 통계에 기초하여 상기 현재 계수 그룹에서의 임의의 계수들을 디코딩하기 전에 상기 현재 계수 그룹의 시작시 라이스 (Rice) 파라미터의 초기 값을 결정하는 단계; 및
    상기 라이스 파라미터의 상기 초기 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 디코딩하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 통계는 상기 이전에 디코딩된 계수들에 대한 계수 레벨들의 절대값들 또는 상기 계수 레벨들의 나머지 절대값들 중 하나의 통계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 통계는 상기 현재 계수 그룹과 동일한 변환 블록 또는 상기 현재 계수 그룹과는 상이한 변환 블록들 중 하나 이상에 포함되는 이전의 계수 그룹들에서 상기 이전에 디코딩된 계수들에 대한 계수 레벨들의 통계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 통계를 결정하는 단계는:
    상기 이전에 디코딩된 계수들 중 적어도 하나에 대한 계수 레벨을 상기 통계의 함수에 비교하는 단계; 및
    상기 비교에 기초하여 상기 통계의 값을 증가 또는 감소시킬지의 여부를 결정하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 통계의 함수는 제 2 상수값으로 나누어진 상기 통계의 값만큼 좌측 시프트된 제 1 상수값을 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 잔여 비디오 데이터의 각각의 슬라이스의 시작시 상기 통계의 값을 제로로 초기화하는 단계를 더 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 통계를 결정하는 단계는, 계수 그룹 당 한번 상기 통계를 결정하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  8. 제 7 항에 있어서,
    상기 계수 그룹 당 한번 상기 통계를 결정하는 단계는, 계수 레벨의 제 1 절대값 또는 계수 레벨의 제 1 나머지 절대값 중 하나가 복수의 이전 계수 그룹들 각각에서 디코딩될 때 상기 통계를 결정하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  9. 삭제
  10. 제 1 항에 있어서,
    상기 변환 블록들의 특징들은 적어도, 상기 변환 블록들이 루마 블록들인지의 여부 및 상기 변환 블록들이 변환 스킵 블록들인지의 여부를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 변환 블록들의 어느 특징들이 상기 계수 그룹들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하는 신택스 엘리먼트를 수신하는 단계를 더 포함하고, 상기 신택스 엘리먼트는 상기 잔여 비디오 데이터에 대한 시퀀스 파라미터 세트 (SPS) 또는 픽쳐 파라미터 세트 (PPS) 중 하나에서 수신되는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 현재 계수 그룹을 포함하는 상기 변환 블록의 특징들에 기초하여 상기 현재 계수 그룹의 카테고리를 결정하는 단계를 더 포함하고, 상기 라이스 파라미터의 초기 값을 결정하는 단계는, 결정된 상기 카테고리에 대한 통계에 기초하여 상기 변환 블록에서 상기 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  13. 제 1 항에 있어서,
    상기 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 단계는, 상기 통계의 함수에 따라 상기 통계의 값을 상기 라이스 파라미터의 초기 값에 맵핑하는 단계를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  14. 제 13 항에 있어서,
    상기 통계의 함수는 상수 값으로 나누어진 상기 통계의 값 또는 상기 라이스 파라미터의 최대 값 중 가장 작은 것의 선택을 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  15. 제 1 항에 있어서,
    상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 디코딩한 후, 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 절대값 및 상기 라이스 파라미터의 초기 값에 기초하여 상기 라이스 파라미터의 초기 값을 업데이트하는 단계; 및
    상기 라이스 파라미터의 업데이트된 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 다른 하나에 대한 계수 레벨의 나머지 절대값을 디코딩하는 단계를 더 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  16. 제 1 항에 있어서,
    상기 라이스 파라미터에 의해 정의되는 코드들은 골룸 라이스 코드들 (Golomb-Rice codes) 또는 지수적-골룸 코드들 (Exponential-Golomb codes) 중 하나를 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  17. 제 1 항에 있어서,
    상기 현재 계수 그룹은 변환이 적용되지 않는 계수들 또는 변환 계수들을 포함하는, 비디오 디코딩 프로세스에서 계수들을 디코딩하는 방법.
  18. 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법으로서,
    계수 그룹들의 복수의 상이한 카테고리들 각각에 대하여 잔여 비디오 데이터의 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 단계로서, 상기 상이한 카테고리들은 상기 계수 그룹들을 포함하는 변환 블록들의 특징들에 기초하여 정의되고, 상기 이전에 인코딩된 계수들은 상기 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 앞서 인코딩되는, 상기 계수 레벨들의 통계를 결정하는 단계;
    상기 통계에 기초하여 상기 현재 계수 그룹에서의 임의의 계수들을 인코딩하기 전에 상기 현재 계수 그룹의 시작시 라이스 파라미터의 초기 값을 결정하는 단계; 및
    상기 라이스 파라미터의 상기 초기 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 인코딩하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  19. 제 18 항에 있어서,
    상기 통계는 상기 이전에 인코딩된 계수들에 대한 계수 레벨들의 절대값들 또는 상기 계수 레벨들의 나머지 절대값들 중 하나의 통계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  20. 제 18 항에 있어서,
    상기 통계는 상기 현재 계수 그룹과 동일한 변환 블록 또는 상기 현재 계수 그룹과는 상이한 변환 블록들 중 하나 이상에 포함되는 이전의 계수 그룹들에서 상기 이전에 인코딩된 계수들에 대한 계수 레벨들의 통계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  21. 제 18 항에 있어서,
    상기 통계를 결정하는 단계는:
    상기 이전에 인코딩된 계수들 중 적어도 하나에 대한 계수 레벨을 상기 통계의 함수에 비교하는 단계; 및
    상기 비교에 기초하여 상기 통계의 값을 증가 또는 감소시킬지의 여부를 결정하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  22. 제 21 항에 있어서,
    상기 통계의 함수는 제 2 상수값으로 나누어진 상기 통계의 값만큼 좌측 시프트된 제 1 상수값을 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  23. 제 18 항에 있어서,
    상기 잔여 비디오 데이터의 각각의 슬라이스의 시작시 상기 통계의 값을 제로로 초기화하는 단계를 더 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  24. 제 18 항에 있어서,
    상기 통계를 결정하는 단계는, 계수 그룹 당 한번 상기 통계를 결정하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  25. 제 24 항에 있어서,
    상기 계수 그룹 당 한번 상기 통계를 결정하는 단계는, 계수 레벨의 제 1 절대값 또는 계수 레벨의 제 1 나머지 절대값 중 하나가 복수의 이전 계수 그룹들 각각에서 인코딩될 때 상기 통계를 결정하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  26. 삭제
  27. 제 18 항에 있어서,
    상기 변환 블록들의 특징들은 적어도, 상기 변환 블록들이 루마 블록들인지의 여부 및 상기 변환 블록들이 변환 스킵 블록들인지의 여부를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  28. 제 18 항에 있어서,
    상기 변환 블록들의 어느 특징들이 상기 계수 그룹들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하는 신택스 엘리먼트를 생성하는 단계를 더 포함하고, 상기 신택스 엘리먼트는 상기 잔여 비디오 데이터에 대한 시퀀스 파라미터 세트 (SPS) 또는 픽쳐 파라미터 세트 (PPS) 중 하나에서 생성되는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  29. 제 18 항에 있어서,
    상기 현재 계수 그룹을 포함하는 상기 변환 블록의 특징들에 기초하여 상기 현재 계수 그룹의 카테고리를 결정하는 단계를 더 포함하고, 상기 라이스 파라미터의 초기 값을 결정하는 단계는, 결정된 상기 카테고리에 대한 통계에 기초하여 상기 변환 블록에서 상기 현재 계수 그룹에 대한 상기 라이스 파라미터의 초기 값을 결정하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  30. 제 18 항에 있어서,
    상기 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 단계는, 상기 통계의 함수에 따라 상기 통계의 값을 상기 라이스 파라미터의 초기 값에 맵핑하는 단계를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  31. 제 30 항에 있어서,
    상기 통계의 함수는 상수 값으로 나누어진 상기 통계의 값 또는 상기 라이스 파라미터의 최대 값 중 가장 작은 것의 선택을 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  32. 제 18 항에 있어서,
    상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 인코딩한 후, 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 절대값 및 상기 라이스 파라미터의 초기 값에 기초하여 상기 라이스 파라미터의 초기 값을 업데이트하는 단계; 및
    상기 라이스 파라미터의 업데이트된 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 다른 하나에 대한 계수 레벨의 나머지 절대값을 인코딩하는 단계를 더 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  33. 제 18 항에 있어서,
    상기 라이스 파라미터에 의해 정의되는 코드들은 골룸 라이스 코드들 또는 지수적-골룸 코드들 중 하나를 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  34. 제 18 항에 있어서,
    상기 현재 계수 그룹은 변환이 적용되지 않는 계수들 또는 변환 계수들을 포함하는, 비디오 인코딩 프로세스에서 계수들을 인코딩하는 방법.
  35. 비디오 코딩 디바이스로서,
    비디오 데이터를 저장하도록 구성되는 메모리; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은:
    계수 그룹들의 복수의 상이한 카테고리들 각각에 대하여 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 것으로서, 상기 상이한 카테고리들은 상기 계수 그룹들을 포함하는 변환 블록들의 특징들에 기초하여 정의되고, 상기 이전에 코딩된 계수들은 상기 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 앞서 코딩되는, 상기 계수 레벨들의 통계를 결정하고;
    상기 통계에 기초하여 상기 현재 계수 그룹에서의 임의의 계수들을 코딩하기 전에 상기 현재 계수 그룹의 시작시 라이스 파라미터의 초기 값을 결정하고; 그리고
    상기 라이스 파라미터의 상기 초기 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 코딩하도록 구성되는, 비디오 코딩 디바이스.
  36. 제 35 항에 있어서,
    상기 통계는 상기 이전에 코딩된 계수들에 대한 계수 레벨들의 절대값들 또는 상기 계수 레벨들의 나머지 절대값들 중 하나의 통계를 포함하는, 비디오 코딩 디바이스.
  37. 제 35 항에 있어서,
    상기 통계는 상기 현재 계수 그룹과 동일한 변환 블록 또는 상기 현재 계수 그룹과는 상이한 변환 블록들 중 하나 이상에 포함되는 이전의 계수 그룹들에서 상기 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 포함하는, 비디오 코딩 디바이스.
  38. 제 35 항에 있어서,
    상기 프로세서는:
    상기 이전에 코딩된 계수들 중 적어도 하나에 대한 계수 레벨을 상기 통계의 함수에 비교하고; 그리고
    상기 비교에 기초하여 상기 통계의 값을 증가 또는 감소시킬지의 여부를 결정하도록 구성되는, 비디오 코딩 디바이스.
  39. 제 38 항에 있어서,
    상기 통계의 함수는 제 2 상수값으로 나누어진 상기 통계의 값만큼 좌측 시프트된 제 1 상수값을 포함하는, 비디오 코딩 디바이스.
  40. 제 35 항에 있어서,
    상기 통계의 값은 상기 잔여 비디오 데이터의 각각의 슬라이스의 시작시 제로로 초기화되는, 비디오 코딩 디바이스.
  41. 제 35 항에 있어서,
    상기 통계를 결정하는 것은, 계수 그룹 당 한번 상기 통계를 결정하는 것을 포함하는, 비디오 코딩 디바이스.
  42. 제 41 항에 있어서,
    상기 프로세서들은, 계수 레벨의 제 1 절대값 또는 계수 레벨의 제 1 나머지 절대값 중 하나가 복수의 이전 계수 그룹들 각각에서 코딩될 때 상기 통계를 결정하도록 구성되는, 비디오 코딩 디바이스.
  43. 삭제
  44. 제 35 항에 있어서,
    상기 변환 블록들의 특징들은 적어도, 상기 변환 블록들이 루마 블록들인지의 여부 및 상기 변환 블록들이 변환 스킵 블록들인지의 여부를 포함하는, 비디오 코딩 디바이스.
  45. 제 35 항에 있어서,
    상기 프로세서들은 상기 변환 블록들의 어느 특징들이 상기 계수 그룹들의 상이한 카테고리들을 정의하는데 이용되는지를 표시하는 신택스 엘리먼트를 결정하도록 구성되고, 상기 신택스 엘리먼트는 상기 잔여 비디오 데이터에 대한 시퀀스 파라미터 세트 (SPS) 또는 픽쳐 파라미터 세트 (PPS) 중 하나에 포함되는, 비디오 코딩 디바이스.
  46. 제 35 항에 있어서,
    상기 프로세서들은 상기 현재 계수 그룹을 포함하는 상기 변환 블록의 특징들에 기초하여 상기 현재 계수 그룹의 카테고리를 결정하고, 그리고 결정된 상기 카테고리에 대한 통계에 기초하여 상기 변환 블록에서 상기 현재 계수 그룹에 대한 상기 라이스 파라미터의 초기 값을 결정하도록 구성되는, 비디오 코딩 디바이스.
  47. 제 35 항에 있어서,
    상기 프로세서들은 상기 통계의 함수에 따라 상기 통계의 값을 상기 현재 계수 그룹에 대한 상기 라이스 파라미터의 초기 값에 맵핑하도록 구성되는, 비디오 코딩 디바이스.
  48. 제 47 항에 있어서,
    상기 통계의 함수는 상수 값으로 나누어진 상기 통계의 값 또는 상기 라이스 파라미터의 최대 값 중 가장 작은 것의 선택을 포함하는, 비디오 코딩 디바이스.
  49. 제 35 항에 있어서,
    상기 프로세서들은:
    상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 코딩한 후, 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 절대값 및 상기 라이스 파라미터의 초기 값에 기초하여 상기 라이스 파라미터의 초기 값을 업데이트하고; 그리고
    상기 라이스 파라미터의 업데이트된 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 다른 하나에 대한 계수 레벨의 나머지 절대값을 코딩하도록 구성되는, 비디오 코딩 디바이스.
  50. 제 35 항에 있어서,
    상기 비디오 코딩 디바이스는 비디오 디코딩 디바이스를 포함하고, 상기 비디오 디코딩 디바이스의 상기 프로세서들은 상기 라이스 파라미터에 의해 정의된 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 상기 계수 레벨의 나머지 절대값을 디코딩하도록 구성되는, 비디오 코딩 디바이스.
  51. 제 35 항에 있어서,
    상기 비디오 코딩 디바이스는 비디오 인코딩 디바이스를 포함하고, 상기 비디오 인코딩 디바이스의 상기 프로세서들은 상기 라이스 파라미터에 의해 정의된 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 상기 계수 레벨의 나머지 절대값을 인코딩하도록 구성되는, 비디오 코딩 디바이스.
  52. 제 35 항에 있어서,
    상기 라이스 파라미터에 의해 정의되는 코드들은 골룸 라이스 코드들 또는 지수적-골룸 코드들 중 하나를 포함하는, 비디오 코딩 디바이스.
  53. 제 35 항에 있어서,
    상기 현재 계수 그룹은 변환이 적용되지 않는 계수들 또는 변환 계수들을 포함하는, 비디오 코딩 디바이스.
  54. 비디오 코딩 디바이스로서,
    계수 그룹들의 복수의 상이한 카테고리들 각각에 대하여 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하는 수단으로서, 상기 상이한 카테고리들은 상기 계수 그룹들을 포함하는 변환 블록들의 특징들에 기초하여 정의되고, 상기 이전에 코딩된 계수들은 상기 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 앞서 코딩되는, 상기 계수 레벨들의 통계를 결정하는 수단;
    상기 통계에 기초하여 상기 현재 계수 그룹에서의 임의의 계수들을 코딩하기 전에 상기 현재 계수 그룹의 시작시 라이스 파라미터의 초기 값을 결정하는 수단; 및
    상기 라이스 파라미터의 초기 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 코딩하는 수단을 포함하는, 비디오 코딩 디바이스.
  55. 제 54 항에 있어서,
    상기 통계를 결정하는 수단은:
    상기 이전에 코딩된 계수들 중 적어도 하나에 대한 계수 레벨을 상기 통계의 함수에 비교하는 수단으로서, 상기 통계의 함수는 제 2 상수값으로 나누어진 통계의 값에 의해 좌측 시프트되는 제 1 상수값을 포함하는, 상기 통계의 함수에 비교하는 수단; 및
    상기 비교에 기초하여 상기 통계의 값을 증가 또는 감소시킬지의 여부를 결정하는 수단을 포함하는, 비디오 코딩 디바이스.
  56. 제 54 항에 있어서,
    상기 계수 그룹 당 한번 상기 통계를 결정하는 수단은, 계수 레벨의 제 1 절대값 또는 계수 레벨의 제 1 나머지 절대값 중 하나가 복수의 이전 계수 그룹들 각각에서 코딩될 때 계수 그룹 당 한번 상기 통계를 결정하는 수단을 포함하는, 비디오 코딩 디바이스.
  57. 제 54 항에 있어서,
    상기 변환 블록들의 특징들은 적어도, 상기 변환 블록들이 루마 블록들인지의 여부 및 상기 변환 블록들이 변환 스킵 블록들인지의 여부를 포함하는, 비디오 코딩 디바이스.
  58. 제 54 항에 있어서,
    상기 현재 계수 그룹에 대한 라이스 파라미터의 초기 값을 결정하는 수단은, 상기 통계의 함수에 따라 상기 통계의 값을 상기 라이스 파라미터의 초기 값에 맵핑하는 수단을 포함하고, 상기 통계의 함수는 상수값으로 나누어진 상기 통계의 값 또는 상기 라이스 파라미터의 최대값 중 가장 작은 것의 선택을 포함하는, 비디오 코딩 디바이스.
  59. 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 비디오 코딩 디바이스의 하나 이상의 프로세서들에 의해 실행될 때 상기 프로세서들로 하여금:
    계수 그룹들의 복수의 상이한 카테고리들 각각에 대하여 잔여 비디오 데이터의 이전에 코딩된 계수들에 대한 계수 레벨들의 통계를 결정하게 하는 것으로서, 상기 상이한 카테고리들은 상기 계수 그룹들을 포함하는 변환 블록들의 특징들에 기초하여 정의되고, 상기 이전에 코딩된 계수들은 상기 잔여 비디오 데이터의 변환 블록에서 현재 계수 그룹에 앞서 코딩되는, 상기 계수 레벨들의 통계를 결정하게 하고;
    상기 통계에 기초하여 상기 현재 계수 그룹에서의 임의의 계수들을 코딩하기 전에 상기 현재 계수 그룹의 시작시 라이스 파라미터의 초기 값을 결정하게 하고; 그리고
    상기 라이스 파라미터의 초기 값에 의해 정의되는 코드들을 이용하여 상기 현재 계수 그룹에서의 상기 계수들 중 적어도 하나에 대한 계수 레벨의 나머지 절대값을 코딩하게 하는, 명령들을 포함하는 컴퓨터 판독가능 저장 매체.
KR1020167001546A 2013-07-12 2014-07-10 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화 KR102315238B1 (ko)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201361845850P 2013-07-12 2013-07-12
US61/845,850 2013-07-12
US201361846512P 2013-07-15 2013-07-15
US61/846,512 2013-07-15
US201361882536P 2013-09-25 2013-09-25
US61/882,536 2013-09-25
US201361898968P 2013-11-01 2013-11-01
US61/898,968 2013-11-01
US201361907693P 2013-11-22 2013-11-22
US61/907,693 2013-11-22
US201361915337P 2013-12-12 2013-12-12
US61/915,337 2013-12-12
US14/327,398 US10021419B2 (en) 2013-07-12 2014-07-09 Rice parameter initialization for coefficient level coding in video coding process
US14/327,398 2014-07-09
PCT/US2014/046218 WO2015006602A2 (en) 2013-07-12 2014-07-10 Rice parameter initialization for coefficient level coding in video coding process

Publications (2)

Publication Number Publication Date
KR20160032119A KR20160032119A (ko) 2016-03-23
KR102315238B1 true KR102315238B1 (ko) 2021-10-19

Family

ID=52277089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167001546A KR102315238B1 (ko) 2013-07-12 2014-07-10 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화

Country Status (22)

Country Link
US (1) US10021419B2 (ko)
EP (1) EP3020187B1 (ko)
JP (1) JP6445001B2 (ko)
KR (1) KR102315238B1 (ko)
CN (1) CN105474641B (ko)
AU (1) AU2014287132B2 (ko)
BR (1) BR112016000584B1 (ko)
CA (1) CA2913797C (ko)
CL (1) CL2016000022A1 (ko)
DK (1) DK3020187T3 (ko)
ES (1) ES2844549T3 (ko)
HK (1) HK1218595A1 (ko)
HU (1) HUE051740T2 (ko)
MX (1) MX363317B (ko)
MY (1) MY180344A (ko)
PH (1) PH12015502785B1 (ko)
RU (1) RU2676871C2 (ko)
SA (1) SA516370349B1 (ko)
SG (1) SG11201509683VA (ko)
TW (1) TWI657692B (ko)
WO (1) WO2015006602A2 (ko)
ZA (1) ZA201600192B (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9936200B2 (en) 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
CN105100814B (zh) * 2014-05-06 2020-07-14 同济大学 图像编码、解码方法及装置
CN105392008B (zh) * 2014-08-22 2018-09-25 中兴通讯股份有限公司 一种预测编、解码方法和相应的编、解码器和电子设备
CN104410863B (zh) 2014-12-11 2017-07-11 上海兆芯集成电路有限公司 图像处理器以及图像处理方法
US10616604B2 (en) * 2015-09-01 2020-04-07 Qualcomm Incorporated Coefficient level coding in video coding
TW201711475A (zh) * 2015-09-02 2017-03-16 矽創電子股份有限公司 哥倫布-萊斯編碼電路與解碼電路
US10372403B2 (en) * 2016-09-15 2019-08-06 Dell Products L.P. Multi-user display collaboration system
WO2018054506A1 (en) * 2016-09-23 2018-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Transform block coding
GB2559200A (en) 2017-01-31 2018-08-01 Nokia Technologies Oy Stereo audio signal encoder
CN107623850B (zh) * 2017-09-26 2019-11-22 杭州电子科技大学 一种基于时空相关性的快速屏幕内容编码方法
US11412241B2 (en) * 2018-03-06 2022-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Decoding or encoding delta transform coefficients
CN116600141A (zh) * 2018-03-27 2023-08-15 株式会社Kt 对图像进行解码或编码的方法以及图像数据的传送方法
US11336918B2 (en) * 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN117201788A (zh) * 2018-09-11 2023-12-08 Lg电子株式会社 图像解码设备、图像编码设备和比特流发送设备
BR112021005558A2 (pt) * 2018-09-24 2021-06-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. aparelho para codificar e decodificar um bloco de coeficientes de transformação, codificador para codificar e decodificador para decodificar um bloco de coeficiente de transformação, método para codificar e decodificar um bloco de coeficientes de transformação, corrente de dados
EP3860126A4 (en) 2018-09-28 2022-03-23 Panasonic Intellectual Property Corporation of America ENCODING DEVICE, DECODING DEVICE, ENCODING METHOD, AND DECODING METHOD
US10951898B2 (en) 2018-10-11 2021-03-16 Lg Electronics Inc. Image decoding method and device using residual information in image coding system
CN116132677A (zh) * 2018-11-12 2023-05-16 三星电子株式会社 用于对系数等级进行熵编码/熵解码的方法和装置
US10904548B2 (en) * 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
CN109874011B (zh) * 2018-12-28 2020-06-09 杭州海康威视数字技术股份有限公司 编码方法、解码方法及装置
US11477486B2 (en) * 2019-01-02 2022-10-18 Qualcomm Incorporated Escape coding for coefficient levels
US11134273B2 (en) 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
KR20210136149A (ko) * 2019-05-21 2021-11-16 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
US11368511B2 (en) * 2019-06-20 2022-06-21 Tencent America LLC Unification of rice parameter lookup table
CN112118456B (zh) * 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
US11496745B2 (en) * 2019-06-24 2022-11-08 Qualcomm Incorporated Binarization in transform skip residual coding
US11184642B2 (en) * 2019-08-02 2021-11-23 Mediatek Inc. Methods and apparatus for simplification of coding residual blocks
US20220286691A1 (en) * 2019-08-23 2022-09-08 Lg Electronics Inc. Method and apparatus for deriving rice parameter in video/image coding system
US11265536B2 (en) * 2019-09-23 2022-03-01 Tencent America LLC Method to extend the range of rice parameter for residual coding in transform skip mode
US11470334B2 (en) * 2019-09-23 2022-10-11 Qualcomm Incorporated Rice parameter derivation for lossless/lossy coding modes for video coding
JP7201873B2 (ja) * 2019-09-24 2023-01-10 ベイジン ダジア インターネット インフォメーション テクノロジー カンパニー リミテッド 残差及び係数符号化の方法、プログラム並びに装置
US11153577B2 (en) * 2019-10-08 2021-10-19 Qualcomm Incorporated Rice parameter derivation for transform-skip mode used in lossless/lossy video coding
AU2019284053A1 (en) * 2019-12-23 2021-07-08 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a block of video samples
US20210203963A1 (en) * 2019-12-27 2021-07-01 Qualcomm Incorporated Equation-based rice parameter derivation for regular transform coefficients in video coding
KR20220152299A (ko) * 2020-03-12 2022-11-15 인터디지털 브이씨 홀딩스 프랑스 비디오 인코딩 및 디코딩을 위한 방법 및 장치
WO2022066869A1 (en) * 2020-09-23 2022-03-31 Beijing Dajia Internet Information Technology Co., Ltd. Residual and coefficients coding for video coding
EP4315862A1 (en) * 2021-03-29 2024-02-07 Beijing Dajia Internet Information Technology Co., Ltd. Residual and coefficients coding for video coding
CN117356093A (zh) * 2021-06-03 2024-01-05 创峰科技 视频编码中的量化等级二值化
US11871038B2 (en) * 2021-09-29 2024-01-09 Tencent America LLC Techniques for constraint flag signaling for range extension with residual rice coding extension
US11991395B2 (en) * 2021-09-29 2024-05-21 Tencent America LLC Techniques for constraint flag signaling for range extension with rice coding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011035682A (ja) * 2009-08-03 2011-02-17 Nec Corp データ符号化/復号方法および装置
US20130114698A1 (en) * 2011-11-08 2013-05-09 General Instrument Corporation Method of determining binary codewords for transform coefficients

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764374A (en) * 1996-02-05 1998-06-09 Hewlett-Packard Company System and method for lossless image compression having improved sequential determination of golomb parameter
US6735254B2 (en) * 2001-06-29 2004-05-11 Qualcomm, Inc. DCT compression using Golomb-Rice coding
US6987468B1 (en) 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
KR20060051157A (ko) 2004-10-29 2006-05-19 마이크로소프트 코포레이션 정수 데이터의 무손실 적응 인코딩 및 디코딩을 위한시스템 및 방법
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
KR101511082B1 (ko) * 2008-05-09 2015-04-13 삼성전자주식회사 최하위 비트를 이용한 엔트로피 부호화 방법과 그 장치 및엔트로피 복호화 방법과 그 장치
US9591320B2 (en) 2010-07-15 2017-03-07 Texas Instruments Incorporated Context and bypass encoding video
EP3349360B1 (en) 2011-01-14 2019-09-04 GE Video Compression, LLC Entropy encoding and decoding scheme
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
GB2500347B (en) 2011-05-16 2018-05-16 Hfi Innovation Inc Apparatus and method of sample adaptive offset for luma and chroma components
CN102238387B (zh) 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN107517384B (zh) * 2011-06-16 2020-06-30 Ge视频压缩有限责任公司 解码器、编码器、解码方法、编码方法以及存储介质
EP2705667B1 (en) 2011-06-30 2016-09-21 Huawei Technologies Co., Ltd. Lossless coding and associated signaling methods for compound video
CN103583048B (zh) * 2011-06-30 2017-05-17 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
CN102368385B (zh) 2011-09-07 2013-08-14 中科开元信息技术(北京)有限公司 后向块自适应Golomb-Rice编解码方法及装置
US9253508B2 (en) * 2011-11-04 2016-02-02 Futurewei Technologies, Inc. Differential pulse code modulation intra prediction for high efficiency video coding
US20130177070A1 (en) * 2012-01-11 2013-07-11 Qualcomm Incorporated Significance map support for parallel transform coefficient processing in video coding
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US10616581B2 (en) 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
EP2999123A1 (en) * 2012-01-20 2016-03-23 GE Video Compression, LLC Transform coefficient coding
US9866829B2 (en) 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
WO2013152401A1 (en) * 2012-04-13 2013-10-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
EP2866443A4 (en) 2012-06-22 2016-06-15 Sharp Kk ARITHMETIC DECODING DEVICE, ARITHMETIC CODING DEVICE, IMAGE DECODING DEVICE AND IMAGE DEVICES
US9426466B2 (en) * 2012-06-22 2016-08-23 Qualcomm Incorporated Transform skip mode
US9350998B2 (en) * 2012-06-29 2016-05-24 Qualcomm Incorporated Coding of significance flags
US9936200B2 (en) 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011035682A (ja) * 2009-08-03 2011-02-17 Nec Corp データ符号化/復号方法および装置
US20130114698A1 (en) * 2011-11-08 2013-05-09 General Instrument Corporation Method of determining binary codewords for transform coefficients

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
C. Rosewarne, et al. Non-CE3: Rice parameter initialization and update modifications. JCT-VC of ITU-T and ISO/IEC. JCTVC-I0050 Ver.3, Apr. 28, 2012, pp.1-9
M. Karczewicz, et al. Non-RCE2: Rice Parameter Initialization. JCT-VC of ITU-T and ISO/IEC. JCTVC-N0181 Ver.2, Jul. 14, 2013, pp.1-8
T. Nguyen, et al. Non-CE11: Proposed Cleanup for Transform Coefficient Coding. JCT-VC of ITU-T and ISO/IEC. JCTVC-H0228 Ver.3, Jan. 27, 2012, pp.1-10

Also Published As

Publication number Publication date
US20150016537A1 (en) 2015-01-15
BR112016000584B1 (pt) 2023-04-25
WO2015006602A2 (en) 2015-01-15
US10021419B2 (en) 2018-07-10
PH12015502785A1 (en) 2016-03-21
TWI657692B (zh) 2019-04-21
EP3020187A2 (en) 2016-05-18
SA516370349B1 (ar) 2020-08-25
RU2016104528A (ru) 2017-08-17
RU2016104528A3 (ko) 2018-06-20
BR112016000584A2 (ko) 2017-07-25
MX363317B (es) 2019-03-20
AU2014287132B2 (en) 2018-09-06
CA2913797C (en) 2021-11-30
CA2913797A1 (en) 2015-01-15
AU2014287132A1 (en) 2016-02-18
HK1218595A1 (zh) 2017-02-24
TW201513639A (zh) 2015-04-01
CL2016000022A1 (es) 2016-12-09
WO2015006602A3 (en) 2015-03-12
JP2016528796A (ja) 2016-09-15
CN105474641B (zh) 2018-10-26
KR20160032119A (ko) 2016-03-23
CN105474641A (zh) 2016-04-06
JP6445001B2 (ja) 2018-12-26
PH12015502785B1 (en) 2016-03-21
ZA201600192B (en) 2020-08-26
EP3020187B1 (en) 2020-10-21
DK3020187T3 (da) 2021-01-18
SG11201509683VA (en) 2016-01-28
RU2676871C2 (ru) 2019-01-11
MY180344A (en) 2020-11-28
HUE051740T2 (hu) 2021-03-29
MX2016000166A (es) 2016-03-09
ES2844549T3 (es) 2021-07-22

Similar Documents

Publication Publication Date Title
KR102315238B1 (ko) 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화
KR102283307B1 (ko) 비디오 코딩 프로세스에서의 계수 레벨 코딩을 위한 라이스 파라미터 업데이트
AU2016271140B2 (en) Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
KR102639864B1 (ko) 진보된 산술 코더
US9313498B2 (en) Sign hiding techniques for quantized transform coefficients in video coding
KR102352638B1 (ko) 비디오 코딩 프로세스에서의 계수 레벨 코딩
CA2860804C (en) Throughput improvement for cabac coefficient level coding
US9491463B2 (en) Group flag in transform coefficient coding for video coding
WO2013142195A1 (en) Deriving context for last position coding for video coding

Legal Events

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