KR20140016983A - 비디오 코딩을 위한 런-모드 기반 계수 코딩 - Google Patents
비디오 코딩을 위한 런-모드 기반 계수 코딩 Download PDFInfo
- Publication number
- KR20140016983A KR20140016983A KR1020137034044A KR20137034044A KR20140016983A KR 20140016983 A KR20140016983 A KR 20140016983A KR 1020137034044 A KR1020137034044 A KR 1020137034044A KR 20137034044 A KR20137034044 A KR 20137034044A KR 20140016983 A KR20140016983 A KR 20140016983A
- Authority
- KR
- South Korea
- Prior art keywords
- coefficient
- data
- codeword
- value
- coding
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/18—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/93—Run-length coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비디오 코딩 디바이스는 비디오 데이터의 잔차 블록들의 계수들을 코딩하도록 구성된다. 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 비디오 코딩 디바이스는 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩할 수도 있다. 몇몇 실시형태들에서, 비디오 코딩 디바이스는 비디오 인코더 또는 비디오 디코더를 포함할 수도 있다.
Description
본 출원은 2011년 6월 3일자로 출원된 미국 가출원 제61/493,337호와 2011년 7월 5일자로 출원된 미국 가출원 제61/504,673호, 및 2011년 9월 23일자로 출원된 미국 가출원 제61/538,658호의 이점을 청구하며, 이들 각각은 참조에 의해 그 전체가 본원에 통합된다.
기술 분야
본 개시는 비디오 코딩에 관한 것으로, 특히, 비디오 데이터의 잔차 블록의 계수들을 코딩하는 것에 관련된다.
디지털 비디오 성능들은, 디지털 텔레비전, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, PDA들 (personal digital assistants), 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게임용 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 라디오 텔레폰들, 화상 원격회의 디바이스들 등을 포함하는 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (Advanced Video Coding; AVC) 에 의해 규정된 표준들 및 이러한 표준들의 확장안들에 기재된 것들과 같은 비디오 압축 기술들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신하고 수신한다.
비디오 압축 기술들은 비디오 시퀀스들에서 본질적인 용장성 (redundancy) 을 감소시키거나 제거하기 위해 공간 예측 및/또는 시간 예측을 수행한다. 블록 기반의 비디오 코딩을 위해, 비디오 프레임 또는 슬라이스가 매크로블록들로 구획 (partition) 될 수도 있다. 각각의 매크로블록은 더 구획될 수 있다. 인트라 코딩된 (I) 프레임 또는 슬라이스에서의 매크로블록들은 이웃 매크로블록들에 대해 공간 예측을 사용하여 인코딩된다. 인터 코딩된 (P 또는 B) 프레임 또는 슬라이스에서의 매크로블록들은 동일한 프레임 또는 슬라이스에서의 이웃 매크로블록들에 대해 공간 예측을 또는 다른 기준 프레임들에 대해서 시간 예측을 사용할 수도 있다.
개요
일반적으로, 본 개시는 비디오 데이터의 블록의 계수들을 코딩하기 위한 기술들을 설명한다. 비디오 데이터의 블록, 예컨대 변환 단위 (transform unit; TU) 는 복수의 양자화된 변환 계수들을 포함할 수도 있다. 비디오 코딩 디바이스는 런-레벨 모드를 사용하여 계수들을 코딩할 수도 있는데, 여기서 넌-제로 계수들에 대한 데이터는 스캔 순서에서 현재의 넌-제로 계수와 후속 넌-제로 계수 사이의 제로 값을 갖는 계수들의 수를 설명하는 "런" 값과 함께 공동으로 코딩된다. 구체적으로는, 넌-제로 계수들에 대한 데이터는 넌-제로 계수가 "1" 이상의 절대값을 갖는지의 여부를 나타내는 값을 포함할 수도 있는데, 여기서 이 데이터는 레벨ID 값을 포함할 수도 있다. 비디오 코딩 디바이스는 코드워드를 사용하여 {런, 레벨ID} 쌍을 코딩할 수도 있는데, 여기서 코드워드는 코드워드 매핑 테이블을 사용하여 선택될 수도 있고, 코드워드 매핑 테이블은 {런, 레벨ID} 쌍에 대한 코드워드에 대응하는 코드워드 인덱스를 제공한다. 코드워드는 가변 길이 코드워드 또는 이진화된 값을 포함할 수도 있고, 이것은 이진 산술 코딩을 사용하여 더 코딩될 수도 있다. 통상적으로, 코딩 디바이스들은 코드워드 인덱스를 결정하기 위해 2차원 룩업 테이블을 사용하는데, 여기서 차원들은 코드워드 인덱스를 결정하기 위해 런에서의 제로 값을 갖는 계수들의 수 및 현재의 넌-제로 계수의 스캔 순서에서의 포지션을 포함한다. 본 개시는, 스캔에서의 어떤 포지션들에 대한 코드워드 인덱스를 결정하기 위해, 1차원 테이블, 또는 이러한 1차원 테이블에 근사시키는 함수의 사용을 제안한다.
일 실시형태에서, 비디오 데이터를 코딩하는 방법은, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때: 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하는 단계를 포함한다.
다른 실시형태에서, 비디오 데이터를 코딩하는 디바이스는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하도록 구성된 비디오 코더를 포함한다.
다른 실시예에서, 디바이스는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서 값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 그 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 수단; 및 그 계수가 상기 스캔 순서 값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때 코드워드 인덱스와 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하는 수단을 포함한다.
다른 실시예에서, 컴퓨터 프로그램 제품은 명령들이 저장된 컴퓨터 판독가능 매체를 포함하며, 상기 명령들은 실행시 비디오 데이터를 코딩하기 위한 디바이스의 프로세서로 하여금, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하게 한다.
하나 이상의 실시형태들의 상세들은 첨부된 도면과 하기의 설명으로부터 설명된다. 다른 특징들, 목적들 및 이점들은 하기의 설명과 도면들, 및 하기의 특허청구범위로부터 명확해질 것이다.
도 1은 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2는 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 인코더의 한 실시형태를 예시하는 블록도이다.
도 3은 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 디코더의 한 실시형태를 예시하는 블록도이다.
도 4는 비디오 데이터의 블록의 계수들의 예시적인 지그재그 스캔을 예시하는 개념도이다.
도 5는 현재의 블록을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 6은 현재의 블록의 계수들에 대한 코드워드 인덱스들을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 7은 비디오 데이터의 현재 블록을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 8은 현재의 블록의 계수들에 대한 코드워드 인덱스들을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 2는 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 인코더의 한 실시형태를 예시하는 블록도이다.
도 3은 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 디코더의 한 실시형태를 예시하는 블록도이다.
도 4는 비디오 데이터의 블록의 계수들의 예시적인 지그재그 스캔을 예시하는 개념도이다.
도 5는 현재의 블록을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 6은 현재의 블록의 계수들에 대한 코드워드 인덱스들을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 7은 비디오 데이터의 현재 블록을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
도 8은 현재의 블록의 계수들에 대한 코드워드 인덱스들을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다.
상세한 설명
일반적으로, 본 개시는 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 설명한다. 비디오 데이터는 빠르게 연속적으로 플레이되어 모션을 시뮬레이션하는 프레임들 (또는 픽쳐들) 의 시퀀스를 포함한다. 프레임들의 각각은 블록들로 분할될 수도 있다.
비디오 인코더들은 공간적 및 시간적 용장성의 이점을 취함으로써 비디오 데이터의 압축을 시도한다. 예를 들면, 비디오 인코더는 이웃하는 이전의 코딩된 블록들과 관련하여 한 블록을 코딩함으로써 공간적 용장성의 이점을 취할 수도 있다. 마찬가지로, 비디오 인코더는 이전에 코딩된 프레임들의 데이터와 관련하여 한 블록을 코딩함으로써 시간적 용장성의 이점을 취할 수도 있다. 특히, 비디오 인코더는 공간적 이웃의 데이터로부터 또는 이전에 코딩된 프레임의 데이터로부터 현재의 블록을 예측할 수도 있고, 그 다음 그 블록에 대한 실제 값과 그 블록에 대한 예측된 값 사이의 차이로서 그 블록에 대한 잔차 값을 계산할 수도 있다. 블록에 대한 잔차는 픽셀 (또는 공간) 도메인에서의 픽셀 단위의 차이 값들을 포함한다.
그 다음 비디오 인코더는, 변환 도메인, 예를 들면 주파수 도메인에서 그 값들의 에너지를 상대적으로 적은 수의 계수들로 압축하는 시도를 하기 위해, 잔차 (변환 단위 (TU) 로도 칭해짐) 의 값들에 변환을 적용할 수도 있다. 그 다음 비디오 인코더는 변환 계수들을 양자화할 수도 있다. 비디오 인코더는 양자화된 변환 계수들의 2차원 매트릭스를 양자화된 변환 계수들을 포함하는 1차원 벡터로 변환하기 위해 양자화된 변환 계수들을 더 스캔할 수도 있다. 계수들을 스캐닝하는 프로세스는 종종 계수들의 직렬화로서 칭해진다.
그 다음 비디오 인코더는 스캐닝된 계수들을 엔트로피 인코딩하기 위해 엔트로피 코딩 프로세스를 적용할 수도 있다. 엔트로피 코딩은 일반적으로 콘텍스트-적응 가변 길이 코딩 (context-adaptive variable length coding; CAVLC) 및 콘텍스트-적응 이진 산술 코딩 (context-adaptive binary arithmetic coding; CABAC) 을 포함한다. CAVLC는 일반적으로 가변 길이 코드워드 (variable length codeword; VLC) 테이블의 선택을 포함하는데, 여기서 코드워드 테이블은 인코딩될 값들을 가변 길이 코드워드들로 매핑한다. 일반적으로, VLC 테이블들은 더 높은 확률을 갖는 심볼들 또는 값들이 더 짧은 길이의 코드워드들을 할당받고, 더 낮은 확률을 갖는 심볼들 또는 값들이 더 긴 코드워드들을 할당받도록 구성된다. CAVLC에서, 계수들은 최대 빈도에서 최저 빈도의 순서로 통상적으로 스캔된다. CABAC에서, 코딩될 데이터가 먼저 이진화되어, 이진화된 값을 형성할 수도 있고, 그 다음 이진화된 값은 이진 산술 코딩될 수도 있다. 이진화 테이블은 이진화된 값들과 이진화될 데이터 (또는, 대안적으로, 디코더에 대해, 이진화된 값들과 대응하는 데이터) 사이의 매핑을 제공할 수도 있다.
계수의 값 (즉, 레벨) 을 직접적으로 코딩하는 대신, 비디오 코딩 디바이스는, 다음 번 넌-제로 계수와 현재의 넌-제로 계수 사이의 스캔에서 제로의 값을 갖는 계수들의 수 (용어 "런" 또는 "제로 런 길이"로 칭해짐), 및 현재의 계수가 1 이상의 절대값을 갖는지의 여부의 표시자 (indicator) (용어 "레벨ID"로 칭해짐) 를 나타내는 값들의 쌍을 나타내는 값을 코딩할 수도 있다. 값들의 이 쌍은 코드워드 인덱스 ("cn"으로서 칭해짐) 로 매핑될 수도 있고, 코드워드 인덱스는 선택된 테이블에서의 코드워드의 인덱스에 대응할 수도 있다. 즉, 코드워드 매핑 테이블은 상기 쌍 {런, 레벨ID}를 코드워드 인덱스 값 (cn) 으로 매핑할 수도 있고, 상기 값 cn은 테이블에서의 코드워드에 대응할 수도 있다. 예를 들면, 상기 값 cn은 VLC 테이블에서의 VLC 코드워드에 또는 이진화 테이블에서의 이진화된 값에 대응할 수도 있다.
비디오 코딩 디바이스는 스캔에서의 현재 계수의 포지션에 기초하여 상기 쌍 {런, 레벨ID}의 cn으로의 매핑을 결정할 수도 있다. 값 k가 현재 계수와 역스캔 순서에서 마지막 계수 (즉, 역스캔에서의 최종 계수) 사이의 계수들의 수에 대응한다고 하자. 또한, E(run, k) 는 포지션 k에서 {런, 레벨ID} 쌍에 대한 cn의 값을 결정할 때 사용될 값을 리턴하는 함수를 나타낸다고 하자. E(run, k) 를 사용할지의 여부는 k가 임계값보다 작은지의 여부에 기초할 수도 있다.
본 개시는, 어떤 특별한 경우들에 대해, 2차원 테이블보다는 함수를 사용하는 기술들을 제공한다. 예를 들면, 현재의 계수에 대해, k가 임계값보다 더 작고, 런=k+1이고, 레벨ID=0인 특별한 경우에 대해 함수가 사용될 수도 있다. E1(k) 가 이러한 함수를 나타낸다고 하자. 이것은, 그것이 역스캔에서 마지막 유효 (즉, 넌-제로의 값) 계수에 대응하는 점에서 특별한 경우이다. 하기의 의사코드 (pseudocode) 는 수정된 E1(k) 함수를 사용하기 위한 예시적인 인코더 기반 방법을 제공한다:
상기의 의사코드의 구현 및 실행은 데이터를 코딩 (즉, 인코딩) 하는 방법의 일 실시형태를 나타내는데, 상기 방법은, 비디오 데이터의 변환 단위의 계수가 임계값 (T) 보다 더 작은 스캔 순서값 (k) 을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때 (즉, 런==k+1), 그 계수에 대한 데이터와 코드워드 인덱스 값 (cn=E1(k)) 사이의 매핑을 결정하는 함수 E1(k) 를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하는 단계를 포함한다.
하기의 의사코드는 위에서 논의된 방법과 반대인 예시적인 디코더 기반 방법을 제공한다.
상기의 의사코드의 구현 및 실행은 비디오 데이터를 코딩 (즉, 디코딩) 하는 방법의 일 실시형태를 나타내는데, 상기 방법은, 비디오 데이터의 변환 단위의 계수가 임계값 (T) 보다 더 작은 스캔 순서값 (k) 을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때 (cn==E(k)), 그 계수에 대한 데이터와 코드워드 인덱스 값 (cn) 사이의 매핑을 결정하는 함수 E1(k) 를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하는 단계를 포함한다.
이와 같이, 상기의 의사코드의 양 세트들은, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때: 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하는 단계를 포함하는 방법의 실시형태를 나타낸다. 즉, 인코더 및 디코더 양자는, 본 개시의 기술들에 따라, 어떤 스캔 순서 포지션들에 대한 {런, 레벨ID} 쌍들을 코딩하는 유사한 방법들을 수행하도록 구성될 수도 있다.
위에서 논의된 실시형태들에서, E1(k) 는, 현재의 계수에 대해, 런=k+1이고 레벨ID=0인 특별한 경우에 대해 사용된다. 다른 특별한 경우들은 코드워드 인덱스를 결정할 때 사용하기 위한 함수들을 할당받을 수도 있다. 예를 들면, runLeft(k) 가 스캔 순서 포지션 k에서의 계수와 스캔 순서 포지션 k의 바로 왼쪽의 포지션 사이의 스캔 순서에서의 계수들의 수로서 정의된다고 가정하자. 다시 말하면, 스캔 순서 포지션 k에서의 계수가 포지션 (x,y) 를 가지면, runLeft(k) 는 스캔 순서에서 포지션 (x-1, y) 에 도달하기 위한 계수들의 수를 리턴한다. {런, 레벨ID}를 갖는 스캔 포지션 k에서의 주어진 계수에 대해, 런이 runLeft(k) 와 동일하면, {런, 레벨ID}에 대한 코드워드 인덱스를 결정하기 위해 함수 E2(k) 가 사용될 수도 있다.
마찬가지로, 런이 runTop(k) 와 동일할 때 포지션 k에서의 {런, 레벨ID}에 대한 코드워드 인덱스를 결정하기 위해 함수 E3(k) 가 사용될 수도 있는데, 여기서 runTop(k) 는 스캔 순서에서 현재 계수 포지션 위의 포지션에 도달하기 위한 계수들의 수를 리턴한다. 즉, 스캔 순서 포지션 k에서 현재 계수가 포지션 (x, y) 를 갖는다고 가정하면, runTop(k) 는 스캔 순서에서 포지션 (x, y-1) 에 도달하기 위한 계수들의 수를 리턴한다.
하나의 임계값을 사용하는 대신, 몇몇 실시형태들에서는, k가 3개의 범위들: k<T0, T0<=k<T1, 또는 T1<=k 중 하나의 내에 있는지의 여부를 결정하기 위해, 2개의 임계값들이 사용될 수도 있다. 이와 같이, 위에서 논의된 실시형태들은, T0<=k<T1일 때에만 적용될 수도 있고 (예를 들면, E1(k) 가 사용될 수도 있고) ; 그렇지 않다면, 코드워드 인덱스 (cn) 를 선택하기 위한 종래의 방법이 사용될 수도 있다.
상기의 실시형태에서, 임계값 (들) 은 유저, 예컨대 설계자 또는 관리자, 또는 비디오 인코더에 의해 선택될 수도 있다. 선택된 임계값 (들) 은, 예를 들면, 픽쳐 파라미터 세트 (picture parameter set; PPS), 슬라이스 파라미터 세트 (slice parameter set; SPS), 또는 적응 파라미터 세트 (adaptation parameter set; APS) 에서 시그널링될 수도 있다. 대안적으로, 임계 (들) 의 값 (들) 은 픽쳐 사이즈, 픽쳐 타입, 블록 사이즈, 예측 모드 (예를 들면, 인터, 인트라), QP (quantization parameter; 양자화 파라미터), 구획 모드 (예를 들면, 2N×2N, N×N), 모션 벡터 값들, 모션 벡터 예측 값들 중 하나 이상과 같은 가용 보조 정보 (side information) 에 기초하여 적응적으로 결정될 수도 있다. 보조 정보는 현재 블록의 이용 가능한 보조 정보일 수 있거나, 또는 이미 인코딩된/디코딩된 블록들로부터의 보조 정보일 수 있다.
도 1은 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템 (10) 은 인코딩된 비디오를 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 임의의 다양한 범위의 디바이스들을 포함할 수도 있다. 몇몇 경우들에서, 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 무선 통신 디바이스들, 예컨대 무선 핸드셋들, 소위 셀룰러 또는 위성 무선전화기들, 또는 통신 채널 (16) 을 통해 비디오 정보를 통신할 수 있는 (이 경우, 통신 채널 (16) 은 무선이다) 임의의 무선 디바이스들을 포함할 수도 있다. 그러나, 비디오 데이터의 블록들의 계수들의 코딩에 관련된 본 개시의 기술들은 무선 어플리케이션들 또는 설정들에 반드시 제한될 필요는 없다. 예를 들면, 이들 기술들은 지상파 (over-the-air) 텔레비젼 방송들, 케이블 텔레비젼 송신들, 위성 텔레비젼 송신들, 인터넷 비디오 송신들, 스토리지 매체 상으로 인코딩된 인코딩된 디지털 비디오, 또는 다른 시나리오들에 직용될 수도 있다. 따라서, 통신 채널 (16) 은 무선, 유선, 또는 인코딩된 비디오 데이터의 송신 또는 저장에 적합한 저장 매체의 임의의 조합을 포함할 수도 있다.
도 1의 실시형태에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (모뎀; 22) 및 송신기 (24) 를 포함할 수도 있다. 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 본 개시에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 적용하도록 구성될 수도 있다. 다른 실시형태들에서, 소스 디바이스와 목적지 디바이스는 다른 컴포넌트들 또는 설비를 포함할 수도 있다. 예를 들면, 소스 디바이스 (12) 는 외부 비디오 소스 (18), 예컨대 외부 카메라로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는, 통합된 디스플레이 디바이스를 포함하는 대신, 외부 디스플레이 디바이스와 접속할 수도 있다.
도 1의 예시된 시스템 (10) 은 단지 일 실시형태에 불과하다. 비디오 데이터의 블록들의 계수들을 코딩하는 기술들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로, 본 개시의 기술들이 비디오 인코딩 디바이스에 의해 수행되지만, 그 기술들은 통상적으로 "CODEC"으로서 칭해지는 비디오 인코더/디코더에 의해 또한 수행될 수도 있다. 또한, 본 개시의 기술들은 비디오 프리프로세서에 의해 또한 수행될 수도 있다. 소스 디바이스 (12) 와 목적지 디바이스 (14) 는, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 이러한 코딩 디바이스들의 단지 실시형태들에 불과하다. 몇몇 실시형태들에서, 디바이스들 (12, 14) 은, 디바이스들 (12, 14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하는 것과 실제 유사한 방식으로 동작할 수도 있다. 그러므로, 시스템 (10) 은, 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 화상 전화를 위해, 비디오 디바이스들 (12, 14) 사이의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡쳐 디바이스, 예컨대 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 컨텐츠 공급자로부터의 비디오 피드를 포함할 수도 있다. 다른 대안으로서, 비디오 소스 (18) 는 소스 비디오로서 컴퓨터 그래픽 기반의 데이터, 또는 라이브 비디오, 아카이브화된 비디오, 및 컴퓨터에 의해 생성된 비디오의 조합을 생성할 수도 있다. 몇몇 경우들에서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 위에서 언급된 바와 같이, 본 개시에서 설명된 기술들은 일반적으로 비디오 코딩에 적용될 수 있으며, 무선 및/또는 유선 어플리케이션들에 적용될 수도 있다. 각각의 경우에서, 캡쳐된, 프리캡쳐된, 또는 컴퓨터에 의해 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 그 다음, 인코딩된 비디오 정보는 통신 표준에 따라 모뎀 (22) 에 의해 변조되고, 송신기 (24) 를 통해 목적지 디바이스 (14) 로 송신된다. 모뎀 (22) 은 여러 가지의 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는, 증폭기들, 필터들 및 하나 이상의 안테나들을 포함하는, 데이터 송신을 위해 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조한다. 다시, 비디오 인코딩 프로세스는 비디오 데이터의 블록들의 계수들을 코딩하기 위해 본원에서 설명된 하나 이상의 기술들을 구현할 수도 있다. 채널 (16) 을 통해 전달된 정보는 비디오 인코더 (20) 에 의해 정의된 구문 정보를 포함할 수도 있는데, 이것은 비디오 디코더 (30) 에 의해 또한 사용되며, 특성들 및/또는 블록들 및 다른 코딩된 단위들, 예를 들면, GOP들의 프로세싱을 설명하는 구문 엘리먼트들을 포함한다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 유저에게 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (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) 로의 통신을 용이하게 하는 데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 다른 실시형태들에서, 소스 디바이스 (12) 는, 데이터를 송신하는 대신, 인코딩된 데이터를 저장 매체 상에 저장할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 저장 매체로부터 인코딩된 데이터를 취출하도록 구성될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 ITU-T H.264 표준 (다르게는 MPEG4, 파트 10, Advanced Video Coding (AVC) 으로도 칭해짐) 에 따라 동작할 수도 있다. 그러나, 본 개시의 기술들은 임의의 특정 코딩 표준에 제한되지 않는다. 다른 실시형태들은 MPEG-2 및 ITU-T H.263을 포함한다. 도 1에 도시되지 않았지만, 몇몇 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 오디오 인코더 및 디코더와 통합될 수도 있고, 공통 데이터 스트림 또는 개별적인 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 핸들링하기 위해 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용 가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 유저 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜을 준수할 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은, Joint Video Team (JVT) 으로서 알려진 공동 파트너십의 산물로서 ISO/IEC Moving Picture Experts Group (MPEG) 과 함께 한 ITU-T Video Coding Experts Group (VCEG) 에 의해 제정되었다. 몇몇 양태들에서, 본 개시에서 설명된 기술들은 H.264 표준을 일반적으로 준수하는 디바이스들에 적용될 수도 있다. H.264 표준은 ITU-T 연구 그룹에 의한 2005년 3월자의, ITU-T Recommendation H.264의 Advanced Video Coding for generic audiovisual services에서 설명되는데, 본원에선 H.264 표준 또는 H.264 명세, 또는 H.264/AVC 표준 또는 명세로 칭해질 것이다. Joint Video Team (JVT) 은 H.264/MPEG-4 AVC에 대한 확장안들에 대한 연구를 계속하고 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 임의의 다양한 적절한 인코더 회로부, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 반도체들 (application specific integrated circuits; ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 것이라도 결합된 인코더/디코더 (CODEC) 의 일부로서 각각의 카메라, 컴퓨터, 모바일 디바이스, 가입자 디바이스, 방송 디바이스, 셋톱박스, 서버 등에 통합될 수도 있다.
비디오 시퀀스는 일련의 비디오 프레임들을 통상 포함한다. 픽쳐들의 그룹 (group of pictures; GOP) 은 일련의 하나 이상의 비디오 프레임들을 일반적으로 포함한다. GOP는 GOP의 헤더, GOP의 하나 이상의 프레임들의 헤더, 또는 그 외의 곳에, GOP에 포함된 프레임들의 수를 설명하는 구문 데이터를 포함할 수도 있다. 각각의 프레임은 각각의 프레임에 대한 인코딩 모드를 설명하는 프레임 구문 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위해 개개의 비디오 프레임들 내의 비디오 블록들에 대해 통상 동작한다. 비디오 블록은 블록 또는 블록의 구획에 대응할 수도 있다. 비디오 블록들은 고정된 또는 가변적인 사이즈들을 가질 수도 있고, 특정 코딩 표준에 따라 사이즈가 상이할 수도 있다. 각각의 비디오 프레임은 복수의 슬라이스들을 포함할 수도 있다. 각 슬라이스는 복수의 블록들을 포함할 수도 있고, 이들은 서브블록들로도 또한 칭해지는 구획들로 정렬될 수도 있다.
예로서, ITU-T H.264 표준은 여러 블록 사이즈들, 예컨대 루마 컴포넌트들에 대한 16 바이 16, 8 바이 8, 또는 4 바이 4, 크로마 컴포넌트들에 대한 8×8에서의 인트라 예측뿐만 아니라, 여러 블록 사이즈들, 예컨대 루마 컴포넌트들에 대한 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 및 4×4와 크로마 컴포넌트들에 대한 대응하여 스케일링된 사이즈들에서의 인터 예측을 지원한다. 본 개시에서, "N×N" 및 "N 바이 N", 예를 들면, 16×16 픽셀들 또는 16 바이 16 픽셀들은 수직 및 수평 치수들에 의해 블록의 픽셀 치수들을 언급하기 위해 상호 교환적으로 사용될 수도 있다. 일반적으로, 16×16 블록은 수직 방향으로 16픽셀들 (y=16) 및 수평 방향으로 16픽셀들 (x=16) 을 구비할 것이다. 마찬가지로, N×N 블록은 수직 방향으로 N 픽셀들 수평 방향으로 N 픽셀들을 구비하는데, 여기서 N은 음이 아닌 정수 값을 나타낸다. 블록에서의 픽셀들은 행들 및 열들로 정렬될 수도 있다. 또한, 블록들은 수평 방향에서의 픽셀들의 수가 수직 방향에서의 것과 반드시 동일할 필요는 없다. 예를 들면, 블록들은 N×M 픽셀들을 포함할 수도 있으며, 여기서 M은 N과 반드시 동일하지는 않다.
16 바이 16보다 더 작은 블록 사이즈들은 16 바이 16 블록의 구획들로서 칭해질 수도 있다. 비디오 블록들은 픽셀 도메인에서의 픽셀 데이터의 블록들, 또는, 예를 들면, 이산 코사인 변환 (DCT), 정수 변환, 웨이브릿 변환, 또는 코딩된 비디오 블록들과 예측된 비디오 블록들 사이의 픽셀 차이들을 나타내는 잔차 비디오 블록 데이터에 대한 개념적으로 유사한 변환과 같은 변환의 적용에 후속하는 변환 도메인에서의 변환 계수들의 블록들을 포함할 수도 있다. 몇몇 경우들에서, 비디오 블록은 변환 도메인에서의 양자화된 변환 계수들의 블록들을 포함할 수도 있다.
더 작은 비디오 블록들은 더 나은 해상도를 제공할 수 있으며, 높은 레벨의 상세를 포함하는 비디오 프레임의 로케이션들을 위해 사용될 수도 있다. 일반적으로, 블록들 및 종종 서브블록들로서 칭해지는 여러 구획들은, 비디오 블록들로서 고려될 수도 있다. 또한, 슬라이스는 복수의 비디오 블록들, 예컨대 블록들 및/또는 서브 블록들인 것으로 간주될 수도 있다. 각 슬라이스는 비디오 프레임의 독립적으로 디코딩 가능한 단위일 수도 있다. 대안적으로, 프레임들 그 자체가 디코딩 가능한 단위들일 수도 있거나, 또는 프레임의 다른 부분들이 디코딩 가능한 단위들로서 정의될 수도 있다. 용어 "코딩 단위"는, 전체 프레임, 프레임의 슬라이스, 시퀀스라고도 칭해지는 픽쳐들의 그룹 (GOP) 과 같은 비디오 프레임의 임의의 독립적으로 디코딩 가능한 단위, 또는 적용가능한 코딩 기술들에 따라 정의된 다른 독립적으로 디코딩 가능한 단위를 지칭할 수도 있다.
새로운 비디오 코딩 표준을 개발하기 위한 노력들이 현재 진행 중에 있으며, 현재 HEVC (High Efficiency Video Coding) 로 칭해지고 있다. 도래하는 표준은 H.265로 또한 칭해진다. 표준화 노력들은 HEVC 테스트 모델 (HEVC Test Model; HM) 로 칭해지는 비디오 코딩 디바이스의 모델에 기초한다. HM은, 예를 들면, ITU-T H.264/AVC에 따른 디바이스들보다 우위의 비디오 코딩 디바이스들의 여러가지 성능들을 가정한다. 예를 들면, H.264가 9개의 인트라 예측 인코딩 모드들을 제공하지만, HM은 34개만큼 많은 인트라 예측 인코딩 모드들을 제공한다.
HEVC는 코딩 단위 (CU) 로서 비디오 데이터의 블록을 참조하는데, 코딩 단위는 하나 이상의 예측 단위들 (prediction units; PU들) 및/또는 하나 이상의 변환 단위들 (transform units; TU들) 을 포함할 수도 있다. 비트스트림 내의 구문 데이터는 최대 코딩 단위 (largest coding unit; LCU) 를 정의할 수도 있는데, 이것은 픽셀들의 수의 관점에서 가장 큰 코딩 단위이다. 일반적으로, 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개의 리프 노드들을 포함하고, 그 각각은 서브-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들의 TU들은 각각의 쿼드트리 데이터 구조들과 또한 관련될 수도 있다. 즉, 리프-CU는 리프-CU가 TU들로 어떻게 구획되는지를 나타내는 쿼드트리를 포함할 수도 있다. 본 개시는 LCU가 어떻게 구획되는지를 나타내는 쿼드트리를 CU 쿼드트리로 칭하고 리프-CU가 어떻게 TU들로 구획되는지를 나타내는 쿼드트리를 TU 쿼드트리로 칭한다. TU 쿼드트리의 루트 노드는 일반적으로 리프-CU에 대응하지만, CU 쿼드트리의 루트 노드는 일반적으로 LCU에 대응한다. 스플릿되지 않은 TU 쿼드트리의 TU들은 리프-TU들로서 칭해진다.
리프-CU는 하나 이상의 예측 단위들 (PU들) 을 포함할 수도 있다. 일반적으로, PU는 대응하는 CU의 전체 또는 일부를 나타내며, PU에 대한 기준 샘플 (즉, 기준 픽셀 값들) 을 취출하기 위한 데이터를 포함할 수도 있다. 예를 들면, PU가 인터 모드 인코딩되면, PU는 PU에 대한 모션 벡터를 정의하는 데이터를 포함할 수도 있다. 모션 벡터를 정의하는 데이터는, 예를 들면, 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터에 대한 해상도 (예를 들면, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 기준 프레임, 및/또는 모션 벡터에 대한 기준 픽쳐 리스트 (예를 들면, 리스트 0 또는 리스트 1) 를 설명할 수도 있다. PU (들) 을 정의하는 리프-CU에 대한 데이터는, 예를 들면, CU를 하나 이상의 PU들로 구획하는 것을 또한 설명할 수도 있다. 구획 모드들은 CU가 코딩되지 않는지, 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지의 여부에 따라 상이할 수도 있다. 인트라 코딩에 대해, PU는 하기에 설명되는 리프 변환 단위와 동일한 것으로 취급될 수도 있다.
리프-CU는 하나 이상의 변환 단위들 (TU들) 을 포함할 수도 있다. 변환 단위들은, 위에서 논의된 바와 같이, TU 쿼드트리 구조를 사용하여 특정될 수도 있다. 즉, 리프-CU가 4개의 변환 단위들로 스플릿되는지의 여부를 스플릿 플래그가 나타낼 수도 있다. 그 다음, 각각의 변환 단위는 4개의 서브 TU들로 더 스플릿될 수도 있다. TU가 더 이상 스플릿되지 않으면, 그것은 리프-TU로 칭해질 수도 있다. 일반적으로, 인트라 코딩에 대해, 리프-CU에 속하는 모든 리프-TU들은 동일한 인트라 예측 모드를 공유한다. 즉, 리프-CU의 모든 TU들에 대한 예측된 값들을 계산하기 위해 동일한 인트라 예측 모드가 일반적으로 적용된다. 인트라 코딩에 대해, 비디오 인코더는, TU에 대응하는 예측값들의 부분과 원래의 블록 사이의 차이로서, 인트라 예측 모드를 사용하여 각각의 리프-TU에 대한 잔차 값을 계산할 수도 있다. 잔차값은 변환되고, 양자화되고, 그리고 스캔될 수도 있다. 인터 코딩에 대해, 비디오 인코더는 PU 레벨에서 예측을 수행할 수도 있고 각 PU에 대한 잔차를 계산할 수도 있다. 리프-CU에 대응하는 잔차값들은 변환되고, 양자화되고, 그리고 스캔될 수도 있다. 인터 코딩에 대해, 리프-TU는 PU보다 더 크거나 더 작을 수도 있다. 인트라 코딩에 대해, PU는 대응하는 리프-TU와 함께 배치될 수도 있다. 몇몇 실시형태들에서, 리프-TU의 최대 사이즈는 대응하는 리프-CU의 사이즈일 수도 있다.
일반적으로, 다르게 지시되지 않는 한, 본 개시는 리프-CU 및 리프-TU를 각각 지칭하기 위해 용어 CU 및 TU를 사용한다. 일반적으로 본 개시의 기술들은 CU의 데이터를 변환하고, 양자화하고, 스캐닝하고, 그리고 엔트로피 인코딩하는 것에 관련된다. 예로서, 본 개시의 기술들은 블록을 예측하기 위해 사용된 인트라 예측 모드에 기초하여 인트라 예측된 블록의 잔차값을 변환하기 위해 사용하는 변환의 선택을 포함한다. 본 개시는 인트라 예측 모드 방향에 의존하는 이러한 변환을 지칭하기 위해 "방향적 변환 (directional transform) " 또는 "설계된 변환 (designed transform) "이라는 용어를 또한 사용한다. 즉, 비디오 인코더는 변환 단위 (TU) 에 적용할 방향적 변환을 선택할 수도 있다. 위에서 언급된 바와 같이, 인트라 예측은 동일한 픽쳐의 이전에 코딩된 CU들 및 TU들로부터 픽쳐의 현재의 CU의 TU를 예측하는 것을 포함한다. 보다 구체적으로는, 비디오 인코더는 특정 인트라 예측 모드를 사용하여 픽쳐의 현재의 TU를 인트라 예측할 수도 있다.
예측 데이터 및 잔차 데이터를 생성하는 인트라 예측 또는 인터 예측 코딩에 후속하여, 그리고 변환 계수들을 생성하는 임의의 변환들 (예컨대 H.264/AVC에서 사용되는 4×4 또는 8×8 정수 변환 또는 이산 코사인 변환 (DCT) 또는 다른 개념적으로 유사한 변환) 에 후속하여, 변환 계수들의 양자화가 수행될 수도 있다. 양자화는, 계수들을 표현하기 위해 사용되는 데이터의 양을 최대한 줄이기 위해 변환 계수들이 양자화되는 프로세스를 일반적으로 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수도 있다. 예를 들면, n-비트 값은 양자화 동안 m-비트 값으로 내림 (round down) 될 수도 있는데, 여기서 n은 m보다 더 크다.
양자화에 후속하여, 양자화된 데이터의 엔트로피 코딩이, 예를 들면, 콘텍스트 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 방법에 따라 수행될 수도 있다. 비디오 인코더 (20) 는 VLC를 사용하는 런모드에서 양자화된 변환 계수들을 코딩할 수도 있다. 계수의 값 (즉, 레벨) 을 직접적으로 코딩하는 대신, 비디오 코딩 디바이스는, 마지막 넌-제로 계수와 현재의 넌-제로 계수 사이의 스캔에서 제로의 값을 갖는 계수들의 수 (용어 "런" 또는 "제로 런 길이"로 칭해짐), 및 현재의 계수가 1 이상의 절대값을 갖는지의 여부의 표시자 (indicator) (용어 "레벨ID"로 칭해짐) 를 나타내는 값들의 쌍을 대표하는 값을 코딩할 수도 있다.
HEVC 테스트 모델에서, {레벨ID, 런)과 코드워드 번호 (cn) 사이의 매핑은 계수 포지션 (k) 의 각 값에 대해 특정된다. 현재의 테스트 모델 (HM 3.0) 에서, 2개의 상이한 방법들이 존재하고 이들 2개의 방법들 사이의 선택은 현재의 넌-제로 계수 위치 (k) 를 임계값 (T) 과 비교하는 것에 의존한다. 상세한 프로세스는 다음과 같다:
현재의 HEVC 스킴은 k<T에 대해 2차원 테이블 D(run, k) 를 디코더에 저장하고 2차원 테이블 E(run,k) 를 인코더에 저장한다. 테이블의 사이즈는 임계값 (T) 에 의존한다. T=28이면, 인코더 및 디코더 양자는 434개의 엘리먼트들을 저장한다.
본 개시의 기술들에 따르면, 소정의 스캔 순서 포지션들에서의 계수들에 대해, 비디오 인코더 (20) 는 "cn"으로서 칭해지는 코드워드 인덱스를 결정할 수도 있고, 코드워드 인덱스는 선택된 테이블, 예를 들면 VLC 테이블 또는 이진화 테이블에서 코드워드의 인덱스에 대응할 수도 있다. 즉, 코드워드 매핑 테이블은 {런, 레벨ID}의 쌍을 코드워드 인덱스 값 (cn) 에 매핑시킬 수도 있고, 상기 값 cn은 테이블에서의 코드워드에 대응할 수도 있는데, 여기서 코드워드는 후속하여 이진 산술 코딩될 수도 있는 이진화된 값 또는 VLC 코드워드를 포함할 수도 있다.
비디오 인코더 (20) 는 스캔에서의 현재 계수의 포지션에 기초하여 상기 쌍 {런, 레벨ID}의 cn으로의 매핑을 결정할 수도 있다. 값 k가 현재 계수와 역스캔 순서에서 마지막 계수 (즉, 역스캔에서의 최종 계수) 사이의 계수들의 수에 대응한다고 하자. 또한, E(run, k) 는 포지션 k에서의 {런, 레벨ID} 쌍에 대한 cn의 값을 결정할 때 사용될 값을 리턴하는 함수를 나타낸다고 하자. E(run, k) 를 사용할지의 여부는 k가 임계값보다 더 작은지의 여부에 기초할 수도 있다.
본 개시는, 어떤 특별한 경우들에 대해, 2차원 테이블보다는 함수를 사용하는 기술들을 제공한다. 예를 들면, 비디오 인코더 (20) 는 현재의 계수에 대해, k가 임계값보다 더 작고, 런=k+1이고, 레벨ID=0인 특별한 경우에 대해 함수를 실행할 수도 있다. E1(k) 가 이러한 함수를 나타낸다고 하자. 이것은, 그것이 역스캔에서 마지막 유효 (즉, 넌-제로의 값을 갖는) 계수에 대응하는 점에서 특별한 경우이다. 하기의 의사코드 (pseudocode) 는 수정된 E1(k) 함수를 사용하기 위한 예시적인 인코더 기반 방법을 제공한다:
이와 같이, 비디오 인코더 (20) 는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 그리고 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하도록 구성된 코딩 디바이스의 일 실시형태를 나타낸다.
비디오 인코더 (20) 는 구문 데이터, 예컨대 블록 기반 구문 데이터, 프레임 기반 구문 데이터, 및 GOP 기반 구문 데이터를, 예를 들면, 프레임 헤더, 블록 헤더, 슬라이스 헤더, 또는 GOP 헤더에서, 비디오 디코더 (30) 로 또한 전송할 수도 있다. GOP 구문 데이터는 각각의 GOP에서의 다수의 프레임들을 설명할 수도 있고, 프레임 구문 데이터는 대응하는 프레임을 인코딩하기 위해 사용된 인코딩/예측 모드를 나타낼 수도 있다.
비디오 디코더 (30) 는 양자화된 변환 계수들을 디코딩하기 위해 위에서 설명된 것과 유사한 방법을 수행하도록 구성될 수도 있다. 예를 들면, 비디오 디코더 (30) 는 다음의 의사코드에 따른 방법을 수행할 수도 있다:
이와 같이, 비디오 디코더 (30) 는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 그리고 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하도록 구성된 코딩 디바이스의 일 실시형태를 또한 나타낸다.
몇몇 실시형태들에서, k<T에 대한 cn과 {런, 레벨ID} 사이의 매핑은 위에서 설명된 기술들에 기초하여, 예를 들면, 어떤 포지션들에 대한 1차원 테이블 또는 함수를 사용하여 결정될 수도 있다. 몇몇 실시형태들에서, k>=T에 대한 매핑은 종래의 HEVC에 대한 것과 동일한 방식으로 결정될 수 있다.
몇몇 실시형태들에 따르면, 코드워드 번호들은 다음의 규칙들에 기초하여 유도된다:
상기 2개의 규칙들에 따르면, 규칙 1은 0의 레벨ID와 관련된 모든 런에 대해, 1의 레벨ID와 관련된 임의의 런에 대한 코드 번호보다 더 작은 코드 번호가 할당된다는 것을 나타낸다.
규칙2는, 레벨ID 값이 주어지면, k+1의 값을 갖는 런의 경우 외에는, 더 짧은 런에 더 긴 런에 대한 코드 번호보다 더 작은 코드 번호가 할당되도록 수행될 수도 있다.
2개의 규칙들에 기초하여, k+1의 값을 갖는 런의 경우에 어떤 코드 번호가 할당되는지에 따라, 각각의 {런, 레벨ID}에 대한 코드 번호가 결정된다는 것을 알 수 있다. 런이 k+1의 값을 갖는 경우의 발생 가능성이 높기 때문에, 런 값에 기초한 코드 번호 할당은 이 경우에 대해 그렇게 최적이 아닌 것으로 알려졌다. 이 경우에 대해 값 k (즉, 현재의 계수 포지션) 에 기초하여 특별한 코드 번호가 제공될 수도 있다.
몇몇 실시형태들에 따르면, 각각의 {런, 레벨ID} 쌍에 코드 번호를 할당함에 있어서, 런이 k+1의 값을 갖는 경우만이 특별한 코드 번호를 필요로 하고, 다른 경우들에 대해서는 코드 번호의 할당이 상기 2개의 규칙들 (규칙1 및 규칙2) 을 따른다.
몇몇 실시형태들에 따르면, 런이 k+1의 값을 갖는 경우에 대한 코드 번호들은 1차원 테이블 E1(k) 에 저장될 수 있다. T=28이면, 저장된 28개의 엘리먼트들이 존재한다. 이들 특별한 코드 번호들을 테이블에 저장하는 것은 단지 일 실시형태이다는 것을 유의해야만 한다. 몇몇 실시형태들에서, E1(k) 의 값은 공식을 통해 또한 획득될 수도 있어서, E1(k) 의 엘리먼트들을 명시적으로 저장할 필요가 없게 된다.
디코딩 규칙은 상기 2개의 인코딩 규칙들과 매핑 테이블 E1(k) 에 기초하여 간단히 유도될 수 있다. 테이블 E1(k) 의 사이즈는 T이다. T=28이면, 저장된 28개의 엘리먼트들만이 존재한다. 다시, 몇몇 실시형태들에서, E1(k) 의 값은 공식을 통해 또한 획득될 수도 있어서, E1(k) 의 엘리먼트들을 명시적으로 저장할 필요가 없게 된다.
인코딩 및 디코딩 프로세스의 상세들은 다음과 같이 설명될 수 있다:
인코더측에서, E1(k) 함수와 미리 정의된 2개의 규칙들의 도움으로, 하기에 재기록된 상기의 인코더 의사코드에 따라, 코드 번호 (cn) 는 비디오 인코더 (20) 에 의해 다음: (E1(k), 런, 레벨ID 및 포지션 인덱스 값 (k)에 기초하여) 과 같이 유도될 수 있다.
디코더 측에서, 하기에 재기록된 상기의 디코더 의사코드에 따라, 현재 계수의 포지션 인덱스 값 (k) 과 코드 번호 (cn) 의 값들에 기초한 레벨ID 및 런을 유도하기 위해 비디오 디코더 (30) 에 의해 다음과 같은 역동작이 수행될 수 있다.
다른 실시형태로서, 상기에서 설명된 방법들은 T1>K>=TO에 적용될 수도 있다 (실시형태1은 T0=T이고 T1=0인 특별한 경우이다). k<T0 또는 k>=T1일 때 상이한 방법들이 사용된다. 본 실시형태에서, T1과 T0는 상이한 임계값들을 나타낸다. 비디오 인코더 (20) 는 다음의 예시적인 의사코드에 따른 방법을 수행할 수도 있다.
비디오 디코더 (30) 는 유사하지만 반대인 방법을 수행하도록 구성될 수도 있다.
여전히 다른 실시형태로서, TO 및/또는 T1 및/또는 1차원 매핑 테이블 E1(k) 의 값들은 유저 또는 인코더에 의해 선택되고, 선택된 값들은 오버헤드 정보로서 디코더에 송신된다. 예를 들면, 이들은 PPS (픽쳐 파라미터 세트), SPS (슬라이스 파라미터 세트), 또는 APS (적응 파라미터 세트) 에서 송신될 수 있다.
몇몇 실시형태들에서, TO 및/또는 T1 및/또는 1차원 매핑 테이블 (E1(k)) 의 값들은 보조 정보, 예컨대 픽쳐 사이즈, 픽쳐 타입, 블록 사이즈, 예측 모드 (예를 들면, 인터, 인트라), QP (양자화 파라미터), 구획 모드 (예를 들면, 2N×2N, N×N), 모션 벡터 값들, 모션 벡터 예측자 값들에 기초하여 적응적으로 결정될 수 있다. 보조 정보는 현재 블록의 이용 가능한 보조 정보일 수 있거나, 또는 이미 인코딩된/디코딩된 블록들로부터의 보조 정보일 수 있다.
몇몇 실시형태들에서, cn과 (런, 레벨ID) = (run0, lev0) 사이의 매핑을 특정하기 위해 1차원 테이블 (E2(k)) 이 사용된다. run0의 몇몇 예시적인 값들은 run_l, run_t 및 k+1이고, 여기서 run_l은 역지그재그 스캔에서의 이전의 넌-제로 계수의 왼쪽 로케이션에 대응하고, run_t는 이전 계수의 위쪽 로케이션에 대응한다. 하기에 더욱 상세히 설명된 도 4는, 스캔 및 이들 포지션들의 실시형태들을 제공한다. 예를 들면, 4×4 블록에서, k=7이면, 이전 계수는 로케이션8 (도 4의 102J) 에 있다. 로케이션8의 왼쪽 로케이션은 로케이션3 (도 4의 102I) 이고, 이것은 run=4에 대응하고, 따라서, run_l=4이다. 로케이션8의 위쪽 로케이션은 로케이션4 (도 4의 102F) 이고, 이것은 run=3에 대응하고, 따라서, run_t=3이다. 인코더는 (런, 레벨ID) 를 코드 번호 (cn) 로 매핑하기 위해 매핑 테이블 (E2(k)) 을 사용하고, 디코더는 역매핑을 수행한다.
몇몇 실시형태들에서, 몇몇의 1차원 테이블들 (Ei(k)) 은 (런, 레벨ID) 와 cn 사이의 매핑을 정의하기 위해 사용된다. 예를 들면, E1(k) 는 cn과 (런, 레벨ID) = (k+1, 0) 사이의 매핑을 정의하고; E2(k) 는 cn과 (런, 레벨ID) = (run_l, 0) 사이의 매핑을 정의하고; E3(k) 은 cn과 (런, 레벨ID) = (run_t, 0) 사이의 매핑을 정의한다. 다른 (런, 레벨ID) 에 대해, cn으로의 그들 매핑은 다른 방법들을 사용하여 정의될 수 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은, 임의의 다양한 적절한 인코더 또는 디코더 회로부로서, 적용 가능하다면, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 반도체들 (application specific integrated circuits; ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 것도 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대 셀룰러 전화기를 포함할 수도 있다.
예를 들면, 스캔 순서에서의 어떤 포지션들에 기초하여, 어떤 {런, 레벨ID} 쌍들에 대한 코드워드 인덱스를 결정하기 위해 함수 또는 1차원 테이블을 사용하는 것은, 여러 이점들을 제공할 수도 있다. 예를 들면, 2차원 테이블을 1차원 테이블 또는 함수로 교체하는 것은 비디오 코딩 디바이스의 메모리 저장 요구사항을 감소시킬 수도 있다. 몇몇 실시형태들에서, 코드워드 인덱스 값들의 룩업들은 2차원 테이블보다 함수 또는 1차원 테이블을 사용하여 더 빨리 수행될 수도 있다.
도 2는 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 인코더 (20) 의 한 실시형태를 예시하는 블록도이다. 비디오 인코더 (20) 는, 매크로블록들, 또는 매크로블록들의 구획들 또는 서브구획들을 포함하는, 비디오 프레임들 내의 블록들의 인트라 코딩 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 주어진 비디오 프레임 내의 비디오에서의 공간적 용장성을 감소시키거나 제거하기 위해 공간적 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 인접한 프레임들 내의 비디오에서의 시간적 용장성을 감소시키거나 제거하기 위해 시간적 예측에 의존한다. 인트라 모드 (I 모드) 는 임의의 여러 공간 기반 압축 모드들을 참조할 수도 있고 단방향 예측 (P 모드) 또는 양방향 예측 (B 모드) 과 같은 인터 모드들은 임의의 여러 시간 기반 압축 모드들을 참조할 수도 있다.
통상적인 비디오 인코더는 원래의 비디오 시퀀스의 각각의 프레임을 "블록들"로 칭해지는 연속적인 사각형 영역들로 구획한다. 이들 블록들은 "인트라 모드" (I 모드) 에서 인코딩되거나, 또는 "인터 모드" (P 모드 또는 B 모드) 에서 인코딩된다.
P 모드에 대해, 인코더 (및 특히, 모션 추정 유닛 (42)) 는 Fref로 표기된 이전에 코딩된 "기준 프레임"에서 인코딩되고 있는 것과 유사한 블록을 먼저 검색할 수도 있다. 검색들은 인코딩될 블록으로부터 어떤 공간적 변위 이하가 되도록 일반적으로 제한된다. 최상의 매치, 또는 "예측"이 식별되면, 그것은 2차원 (2D) 모션 벡터 (Δx, Δy) 의 형태로 표현되는데, 여기서 Δx는 수평 변위이고 Δy는 수직 변위이다. 기준 프레임들과 함께 모션 벡터들은 예측 블록 (Fpred) 을 구성하기 위해 사용될 수도 있다:
프레임 내에서의 픽셀의 로케이션은 (x, y) 에 의해 표시된다.
I 모드에서 인코딩된 블록들에 대해, 예측 블록은 동일한 프레임 내에서 이전에 인코딩된 이웃 블록들로부터의 공간적 예측을 사용하여 형성된다. 비디오 인코더 (20) 의 인트라 예측 유닛 (46) 은 I 모드에서 블록들을 인코딩할 수도 있다.
I 모드 및 P 모드 양자에 대해, 예측 에러, 즉 인코딩되고 있는 블록들과 예측된 블록 사이의 차이는 몇몇 별개의 변환의 가중치 부여 기반 함수들 (weighted basis functions) 의 세트로서 표현된다. 변환들은, 예를 들면 변환 프로세싱 유닛 (52) 에 의해, 통상적으로 32×32, 16×16, 8×8 또는 4×4 블록을 기반으로 수행된다. 32×16/16×32, 32×8/8×32 와 같은 다른 변환들도 또한 가능하다. 가중치들-변환 계수들-은 그 후 양자화 유닛 (54) 에 의해 양자화된다. 양자화에 의해 정보가 손실되며, 따라서 양자화된 계수들은 원래의 것들보다 정밀도가 더 낮다.
양자화된 변환 계수들과 모션 벡터들은 "구문 엘리먼트들"의 실시형태들이다. 이들은, 몇몇 제어 정보를 더하여, 비디오 시퀀스의 완전히 코딩된 표현을 형성한다. 인코더에서 디코더로의 송신 이전에, 모든 구문 엘리먼트들은, 예를 들면, 엔트로피 코딩 유닛 (56) 에 의해 엔트로피 코딩되어, 그들의 표현에 필요한 비트들의 수를 더 감소시키게 된다. 엔트로피 코딩은, 송신된 또는 저장된 심볼들 (구문 엘리먼트들) 의 분포의 특성들 (몇몇 심볼들은 다른 것들보다 더 자주 나타난다) 을 활용함으로써 그들을 표현하는 데 필요한 비트들의 수의 최소화를 목표로 한 무손실 동작이다.
비디오 코더들에 의해 활용되는 엔트로피 코딩의 한 방법은 가변 길이 코드들 (Variable Length Codes; VLC) 이다. VLC 코딩의 경우, 코딩된 심볼들 각각에 대해 코드워드 번호가 먼저 할당될 수도 있다. 코딩될 심볼들이 n개 존재하면, 그 각각에 대해 0 내지 n-1의 범위의 코드워드 번호가 할당될 수도 있다. 이들 코드워드 번호들 각각에 후속하여, 코드워드 (0들과 1들의 스트링들) 가 할당된다. 더 짧은 코드워드들은 확률이 더 큰 심볼들에 할당될 수도 있다. 또한, 코드워드들은 유일하게 디코딩 가능해야만 한다, 즉, 디코더가 유한한 길이의 비트들의 유효 시퀀스를 수신하면, 인코딩될 때, 수신된 비트들의 시퀀스를 생성하게 될 입력 심볼들의 단지 하나의 가능한 시퀀스만이 존재해야만 한다.
엔트로피 코딩의 다른 방법은 콘텍스트 적응 이진 산술 코딩 (CABAC) 이다. CABAC에서, 인코딩될 값들, 예컨대 변환 계수들 또는 {런, 레벨ID} 쌍들은 이진화된 값들을 할당받을 수도 있다. 그 다음 이진화된 값들은 산술 코딩될 수도 있다. 본 개시의 기술들에 따르면, 코드워드들은 이진화된 값들에 대응할 수도 있다. 따라서, 비디오 인코더 (20) 는 이진화된 값에 대한 코드워드 인덱스를 결정함으로써 계수에 대한 이진화된 값을 결정할 수도 있다. 따라서, 본 개시에서의 코드워드를 결정하는 것에 대한 참조들은, VLC 코드워들의 결정 및 이진화된 값들의 결정 양자를 포함하는 것으로 이해되어야만 하고, 이들은, 예를 들면 CABAC와 같은 산술 코딩을 사용하여 더 코딩될 수도 있다.
비트스트림을 정확하게 디코딩하기 위해, 인코더 및 디코더 양자는 동일한 세트 (예를 들면, 동일한 테이블) 의 코드워드들과 코드워드들로의 심볼들의 동일한 할당을 사용한다. 이전에 언급되었던 바와 같이, 압축을 최대화하기 위해, 가장 빈번하게 나타나는 심볼들은 가장 짧은 코드워드들을 할당받아야만 한다. 그러나, 상이한 심볼들의 빈도 (확률) 는 인코딩된 이미지의 타입에 따라 변할 수도 있다. 따라서, 단일 세트의 코드워드들과 이들 코드워드들로의 심볼들의 단일 할당 (코드워드 번호들로의 심볼들의 매핑) 을 사용하는 것은, 코딩 효율을 감소시키게 될 것이다.
이 문제를 해결하기 위해, 상이한 적응 방법들이 사용된다. 한 세트의 심볼들에 대해, 다수의 세트들의 코드워드들이 이용 가능할 수도 있다. 이들 세트들 중 어느 것이 사용되는지는, 코딩된 블록의 타입 (I 타입 블록, P 타입 블록, 또는 B 타입 블록), 컴포넌트 (루마, 크로마) 또는 QP 값과 같이 인코더 및 디코더 양자에 알려진 정보에 의존할 수도 있다. 성능은, 코드워드들 사이를 전환하기 위해 사용된 파라미터들이 심볼 통계의 특성을 얼마나 잘 나타내는지에 의존한다.
압축비, 즉, 원래의 시퀀스를 나타내기 위해 사용된 비트들의 수와 압축된 것의 비는, 변환 계수들을 양자화할 때 사용된 양자화 파라미터 (quantization parameter; QP) 의 값을 조정함으로써 제어될 수도 있다. 압축비는 활용되는 엔트로피 코딩의 방법에 또한 의존한다. 몇몇 실시형태들에서, 모드 선택 유닛 (40) 은, 상이한 QP를 각각 사용하는 복수의 코딩 과정들 (passes) 을 수행함으로써 사용할 QP를 결정하고, 비디오 데이터를 코딩하기 위해 사용된 비트들의 수와, 예를 들면, 레이트-왜곡 최적화 (rate-distortion optimization; RDO) 로 칭해지는 프로세스에서, 비디오 데이터에 도입된 왜곡의 양의 균형을 최상으로 맞추는 QP를 선택한다.
도 2에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내에서 현재 비디오 블록을 수신한다. 도 2의 실시형태에서, 비디오 인코더 (20) 는 모션 보상 유닛 (44), 모션 추정 유닛 (42), 기준 프레임 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 코딩 유닛 (56) 을 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 또한 포함한다. 재구성된 비디오에서 블록화 아티팩트들 (blockiness artifacts) 을 제거하도록 블록 경계들을 필터링하기 위해 디블록화 필터 (deblocking filter) (도 2에 도시되지 않음) 가 또한 포함될 수도 있다. 원하는 경우, 디블록화 필터는 통상적으로 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 복수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 기준 프레임들에서의 하나 이상의 블록들에 대한 수신된 비디오 블록의 인터 예측 코딩을 수행하여 시간적 압축을 제공한다. 인트라 예측 유닛 (46) 은 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대한 수신된 비디오 블록의 인트라 예측 코딩을 또한 수행하여 공간적 압축을 제공할 수도 있다.
모드 선택 유닛 (40) 은, 예를 들면, 에러 결과들에 기초하여 코딩 모드들 중 하나, 인트라 또는 인터를 선택할 수도 있고, 결과적인 인트라 코딩된 블록 또는 인터 코딩된 블록을 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고 합산기 (62) 에 제공하여 기준 프레임으로서 사용하기 위한 인코딩된 블록을 재구성한다. 위에서 설명된 바와 같이, 모드 선택 유닛 (40) 은 적절한 코딩 모드를 선택하기 위해, 다른 코딩 특성들, 예컨대 QP와 함께, 레이트-왜곡 최적화를 사용할 수도 있다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 집적될 수도 있지만, 개념적 목적들을 위해 별개로 예시되어 있다. 모션 추정은 모션 벡터들을 생성하는 프로세스로서, 비디오 블록들에 대한 모션을 추정한다. 모션 벡터는, 예를 들면, 현재의 프레임 (또는 다른 코딩된 단위) 내에서 코딩되고 있는 현재의 블록에 대한 예측 기준 프레임 (또는 다른 코딩된 단위) 내의 예측 블록의 변위를 나타낼 수도 있다. 예측 블록은 픽셀 차이의 관점에서, 코딩될 비디오 블록과 밀접하게 일치하는 것으로 발견된 블록인데, 픽셀 차이는 절대 차의 합 (sum of absolute difference; SAD), 제곱 차의 합 (sum of square difference; SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 모션 벡터는 매크로블록의 구획의 변위를 또한 나타낼 수도 있다. 모션 보상은 모션 추정에 의해 결정된 모션 벡터에 기초한 예측 블록의 페칭 또는 생성을 수반할 수도 있다. 다시, 모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은, 몇몇 실시형태들에서, 기능적으로 통합될 수도 있다.
모션 추정 유닛 (42) 은, 비디오 블록을 기준 프레임 메모리 (64) 에서의 기준 프레임의 비디오 블록들에 비교함으로써 인터 코딩된 프레임의 비디오 블록에 대한 모션 벡터를 계산한다. 모션 보상 유닛 (44) 은 기준 프레임, 예를 들면, I 프레임 또는 P 프레임의 서브-정수 (sub-integer) 픽셀들을 또한 보간할 수도 있다. 예로서, ITU H.264 표준은 2개의 리스트들을 설명한다: 인코딩되고 있는 현재 프레임보다 더 빠른 디스플레이 순서를 갖는 기준 프레임들을 포함하는 리스트 0, 및 인코딩되고 있는 현재 프레임보다 더 늦은 디스플레이 순서를 갖는 기준 프레임들을 포함하는 리스트 1. 따라서, 기준 프레임 메모리 (64) 에 저장된 데이터는 이들 리스트들에 따라 조직화될 수도 있다.
모션 추정 유닛 (42) 은 기준 프레임 메모리 (64) 로부터의 하나 이상의 기준 프레임들의 블록들을, 현재 프레임, 예를 들면, P 프레임 또는 B 프레임의 인코딩될 블록에 비교한다. 기준 프레임 메모리 (64) 의 기준 프레임들이 서브-정수 픽셀들에 대한 값들을 포함하면, 모션 추정 유닛 (42) 에 의해 계산된 모션 벡터는 기준 프레임의 서브-정수 픽셀 로케이션을 참조할 수도 있다. 모션 추정 유닛 (42) 및/또는 모션 보상 유닛 (44) 은, 서브-정수 픽셀 포지션들에 대한 어떠한 값도 기준 프레임 메모리 (64) 에 저장되지 않으면, 기준 프레임 메모리 (64) 에 저장된 기준 프레임들의 서브-정수 픽셀 포지션들에 대한 값들을 계산하도록 또한 구성될 수도 있다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 코딩 유닛 (56) 과 모션 보상 유닛 (44) 으로 전송한다. 모션 벡터에 의해 식별된 기준 프레임 블록은 예측 블록으로서 칭해질 수도 있다.
모션 보상 유닛 (44) 은 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 비디오 인코더 (20) 는 코딩되고 있는 원래의 비디오 블록으로부터 모션 보상 유닛 (44) 으로부터의 예측 데이터를 감산함으로써 잔차 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 프로세싱 유닛 (52) 은, 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 잔차 블록에 적용하여, 잔차 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은, DCT와 개념적으로 유사한 다른 변환들, 예컨대 H.264 표준들에 의해 정의된 변환들을 수행할 수도 있다.
웨이브릿 변환들, 정수 변환들, 서브-밴드 변환들 또는 다른 타입들의 변환들이 또한 사용될 수 있을 것이다. 어떠한 경우에도, 변환 프로세싱 유닛 (52) 은 잔차 블록에 변환을 적용하여, 잔차 변환 계수들의 블록을 생성한다. 변환은 픽셀 도메인 (공간 도멘인으로도 칭해짐) 으로부터의 잔차 정보를 변환 도메인, 예컨대 주파수 도메인으로 변환할 수도 있다. 양자화 유닛 (54) 은 잔차 변환 계수들을 양자화하여 비트 레이트를 더 감소시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다.
양자화 이후, 엔트로피 코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들면, 엔트로피 코딩 유닛 (56) 은 콘텍스트 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 기술을 수행할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩에 후속하여, 인코딩된 비디오는 다른 디바이스로 송신되거나 또는 나중의 송신 또는 취출을 위해 아카이브화될 수도 있다. 콘텍스트 적응 이진 산술 코딩의 경우, 콘텍스트는 이웃하는 매크로블록들에 기초할 수도 있다.
본 개시의 기술들에 따르면, 엔트로피 코딩 유닛 (56) 은 계수 (즉, 양자화된 변환 계수) 에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 예를 들면, VLC에 대해, 엔트로피 코딩 유닛 (56) 은 계수에 대한 VLC 코드워드를 결정할 수도 있다. 다른 예로서, CABAC에 대해, 엔트로피 코딩 유닛 (56) 은 계수에 대한 이진화된 값을 결정할 수도 있고, 또한, 이진화된 값을 엔트로피 인코딩할 수도 있다. 이와 같이, CABAC에 대해, 이진화된 값은 코드워드에 대응할 수도 있다. 특히, CABAC를 사용하여 코딩하는 경우, 엔트로피 코딩 유닛 (56) 은, VLC에서의 코드워드 인덱스 값에 대응하는 코드워드를 결정하는 설명과 유사한 방식으로, 코드워드 인덱스 값에 대응하는 이진화된 값을 결정할 수도 있다.
엔트로피 코딩 유닛 (56) 은 본 개시의 기술들을 사용하여 {런, 레벨ID} 쌍들을 코딩할 수도 있다. 예를 들면, 엔트로피 코딩 유닛 (56) 은 위에서 설명된 인코더 의사코드에 따라 수행하도록 구성될 수도 있다. 즉, 몇몇 계수들에 대해, 엔트로피 코딩 유닛 (56) 은 코드워드 인덱스 값과 현재 계수에 대한 데이터 사이의 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 예를 들면, 엔트로피 코딩 유닛 (56) 은, 계수가 임계값보다 더 작은 스캔 순서 값을 가질 때 그리고 계수가 변환 단위의 스캔 순서에서 마지막 유효 계수일 때 그 함수를 실행할 수도 있다.
다른 예로서, 엔트로피 코딩 유닛 (56) 은, 런 값이 변환 단위에서의 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, {런, 레벨ID} 쌍을 갖는 계수에 대해 상이한 함수를 실행할 수도 있다. 또 다른 예로서, 엔트로피 코딩 유닛 (56) 은, 런 값이 변환 단위에서의 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, {런, 레벨ID} 쌍을 갖는 계수에 대해 또 다른 함수를 실행할 수도 있다. 현재 계수의 위쪽에 있는 그리고 왼쪽의 계수들의 실시형태들은 도 4를 참조로 하기에 더 상세히 설명된다.
또한, 몇몇 실시형태들에서, 엔트로피 코딩 유닛 (56) 은, 계수의 스캔 순서값이 2개의 임계값들 사이에 있을 때 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 즉, 엔트로피 코딩 유닛 (56) 은, 스캔 순서값이 제 1의 임계값보다 작고, 제 1의 임계값보다 작은 제 2의 임계값보다 더 클 때, 매핑을 결정하는 함수를 실행할 수도 있다. 예를 들면, T1이 제 1의 임계값을 나타내고, T2가 제 2의 임계값을 나타내며, k가 계수의 스캔 순서값을 나타낸다고 가정한다. 엔트로피 코딩 유닛 (56) 은 T2<k<T1일 때 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 비디오 인코더 (20) 의 엔트로피 코딩 유닛 (56), 또는 다른 유닛은, 시퀀스 파라미터 세트 (SPS), 픽쳐 파라미터 세트 (PPS), 적응 파라미터 세트 (APS), 슬라이스 헤더, 프레임 헤더, 시퀀스 헤더, 또는 다른 데이터 구조와 같은 파라미터 세트에서의 제 1 및/또는 제 2의 임계값들을 나타내는 시그널링 데이터를 코딩하도록 구성될 수도 있다. 마찬가지로, 비디오 인코더 (20) 는 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정할지의 여부를 결정하기 위해 단지 하나의 임계값만이 사용되는 경우의 임계값을 나타내는 시그널링 데이터를 코딩할 수도 있다.
엔트로피 코딩 유닛 (56) 이 CAVLC를 사용하여 데이터를 코딩하도록 구성되는 경우, 엔트로피 코딩 유닛 (56) 은 VLC 테이블로부터 VLC 코드워드를 선택하기 위해 코드워드 인덱스 값을 사용할 수도 있다. 예를 들면, VLC 테이블은 특정 순서에 따라 (예를 들면, 가장 짧은 것에서 가장 긴 것으로) 정렬된 코드워드들을 포함할 수도 있고, 코드워드 인덱스 값은 VLC 테이블에서의 엔트리에 대응할 수도 있다. 예를 들면, 코드워드 인덱스 값이 n이라고 가정하면, 엔트로피 코딩 유닛 (56) 은 VLC 테이블로부터 n번째 VLC 코드워드를 선택할 수도 있다.
엔트로피 코딩 유닛 (56) 이 CABAC를 사용하여 데이터를 코딩하도록 구성되는 경우, 엔트로피 코딩 유닛 (56) 은 CABAC를 사용하여 코딩될 이진화된 값을 선택하기 위해 코드워드 인덱스 값을 사용할 수도 있다. 예를 들면, 엔트로피 코딩 유닛 (56) 은, 위에서 설명된 VLC 코드워드의 선택과 유사한 방식으로, 이진화 테이블로부터 이진화된 값을 선택할 수도 있다. 따라서, 코드워드 인덱스 값이 n이라고 가정하면, 엔트로피 코딩 유닛 (56) 은 이진화 테이블로부터 n번째 이진화된 값을 선택할 수도 있다. 또한, 엔트로피 코딩 유닛 (56) 은, CABAC에 따라, 산술 코딩을 사용하여 이진화된 값을 인코딩할 수도 있다. 즉, 엔트로피 코딩 유닛 (56) 은 현재의 콘텍스트 상태를 결정하기 위해 현재의 구문 엘리먼트를 코딩하기 위한 콘텍스트를 초기화하고, 그 다음 이진화된 값의 각 비트를 코딩할 수도 있다 (여기서 비트들은 CABAC에서 "빈들"로도 칭해짐). 이진화된 값의 각 빈을 코딩한 이후, 엔트로피 코딩 유닛 (56) 은 가장 최근에 코딩된 빈의 값에 기초하여 현재 콘텍스트 상태를 업데이트할 수도 있다.
몇몇 경우들에서, 비디오 인코더 (20) 의 엔트로피 코딩 유닛 (56) 또는 다른 유닛은, 엔트로피 코딩에 더하여, 다른 코딩 함수들을 수행하도록 구성될 수도 있다. 예를 들면, 엔트로피 코딩 유닛 (56) 은 매크로블록들 및 구획들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 엔트로피 코딩 유닛 (56) 은 인코딩된 비디오 비트스트림에서의 송신에 대해 적절한 구문 엘리먼트들을 갖는 헤더 정보를 또한 구성할 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은, 각각, 역양자화 및 역변환을 적용하여, 예를 들면, 나중의 사용을 위한 기준 블록으로서 픽셀 도메인의 잔차 블록을 재구성한다. 모션 보상 유닛 (44) 은 기준 프레임 메모리 (64) 의 프레임들 중 하나의 예측 블록에 잔차 블록을 가산함으로써 기준 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은, 모션 추정에서 사용하기 위한 서브-정수 픽셀 값들을 계산하기 위해, 재구성된 잔차 블록에 하나 이상의 보간 필터들을 또한 적용할 수도 있다. 합산기 (62) 는 재구성된 잔차 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 가산하여 기준 프레임 메모리 (64) 에 저장하기 위한 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 후속하는 비디오 프레임에서의 블록을 인터 코딩하기 위한 기준 블록으로서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 사용될 수도 있다.
이와 같이, 비디오 인코더 (20) 는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 그리고 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하도록 구성된 비디오 코더의 일 실시형태를 나타낸다. 특히, 본 실시형태에서, 비디오 코더는 비디오 인코더이다. 계수에 대한 데이터를 코딩하기 위해, 비디오 인코더 (20) 는 비디오 인코딩 프로세스 동안 코드워드를 사용하여 계수에 대한 {런, 레벨ID} 쌍을 인코딩하도록 구성될 수도 있다. 마찬가지로, 코드워드는 이진화된 값을 포함할 수도 있고, 데이터를 코딩하기 위해, 비디오 인코더 (20) 는 콘텍스트 이진 산술 코딩 (CABAC) 을 사용하여 이진화된 값을 코딩하도록 구성될 수도 있다.
도 3은 비디오 데이터의 블록들의 계수들을 코딩하기 위한 기술들을 구현할 수도 있는 비디오 디코더 (30) 의 한 실시형태를 예시하는 블록도이다. 도 3의 실시형태에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라 예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 기준 프레임 메모리 (82) 및 합산기 (80) 를 포함한다. 비디오 디코더 (30) 는, 몇몇 실시형태들에서, 비디오 인코더 (20) (도 2) 에 대해 설명된 인코딩 과정에 일반적으로 역순인 디코딩 과정을 수행할 수도 있다. 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다.
본 개시의 기술들에 따르면, 엔트로피 디코딩 유닛 (70) 은 현재의 계수에 대한 데이터, 예를 들면, 현재 계수에 대한 {런, 레벨ID} 쌍에 대응하는 코드워드 인덱스 값들을 디코딩할 수도 있다. 예를 들면, CAVLC에서, 엔트로피 디코딩 유닛 (70) 은 VLC 코드워드를 수신할 수도 있고 VLC 테이블로부터 코드워드 인덱스 값을 결정할 수도 있다. 다른 예로서, CABAC에서, 엔트로피 디코딩 유닛 (70) 은 CABAC 인코딩된 데이터를 디코딩하여 이진화된 값을 재생할 수도 있다. 즉, 엔트로피 디코딩 유닛 (70) 은, 엔트로피 코딩 유닛 (56) 에 대해 위에서 설명된 천이들과 유사한, 콘텍스트 상태들을 통해 천이함으로써, 그리고 현재 상태와 디코딩되고 있는 현재 값에 기초하여 현재 비트의 값을 결정함으로써 이진화된 값을 비트 단위로 (또는 빈 단위로) 재생할 수도 있다. 이와 같이, 엔트로피 디코딩 유닛 (70) 은 이진화된 값을 재생할 수도 있다. 그 다음, 엔트로피 디코딩 유닛 (70) 은 이진화 테이블로부터 이진화된 값의 코드워드 인덱스 값을 결정할 수도 있다.
어떤 경우에도, 현재 계수의 데이터에 대한 코드워드 (예를 들면, VLC 코드워드 또는 이진화된 값) 을 결정한 이후, 몇몇 실시형태들에서, 엔트로피 디코딩 유닛 (70) 은 데이터, 예를 들면, {런, 레벨ID} 쌍과 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 사용할 수도 있다. 예를 들면, 엔트로피 디코딩 유닛 (70) 은, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서 값을 가질 때 그리고 그 계수가 변환 단위의 스캔 순서에서 마지막 유효 계수일 때 매핑을 결정하는 함수를 실행할 수도 있다.
다른 예로서, 엔트로피 디코딩 유닛 (70) 은, 런 값이 변환 단위에서의 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 계수가 {런, 레벨ID} 쌍을 갖는지의 여부를 결정하기 위해 계수에 대해 상이한 함수를 실행할 수도 있다. 또 다른 예로서, 엔트로피 디코딩 유닛 (70) 은, 런 값이 변환 단위에서의 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 계수가 {런, 레벨ID} 쌍을 갖는지의 여부를 결정하기 위해 계수에 대해 상이한 함수를 더 실행할 수도 있다.
또한, 몇몇 실시형태들에서, 엔트로피 디코딩 유닛 (70) 은, 계수의 스캔 순서값이 2개의 임계값들 사이에 있을 때 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 즉, 엔트로피 디코딩 유닛 (70) 은, 스캔 순서값이 제 1의 임계값보다 작고, 제 1의 임계값보다 더 작은 제 2의 임계값보다 더 클 때, 매핑을 결정하는 함수를 실행할 수도 있다. 예를 들면, T1이 제 1의 임계값을 나타내고, T2가 제 2의 임계값을 나타내며, k가 계수의 스캔 순서값을 나타낸다고 가정한다. 엔트로피 코딩 유닛 (70) 은 T2<k<T1일 때 매핑을 결정하는 함수를 실행하도록 구성될 수도 있다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70), 또는 다른 유닛은, 시퀀스 파라미터 세트 (SPS), 픽쳐 파라미터 세트 (PPS), 적응 파라미터 세트 (APS), 슬라이스 헤더, 프레임 헤더, 시퀀스 헤더, 또는 다른 데이터 구조와 같은 파라미터 세트에서의 제 1 및/또는 제 2의 임계값들을 나타내는 시그널링 데이터를 코딩하도록 (즉, 디코딩하도록) 구성될 수도 있다. 마찬가지로, 비디오 디코더 (30) 는 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정할지의 여부를 결정하기 위해 단지 하나의 임계값만이 사용되는 경우의 임계값을 나타내는 시그널링 데이터를 코딩할 수도 있다. 즉, 비디오 디코더 (30) 는, 임계값 (들) 을 결정하기 위해, 이러한 데이터 구조를 수신하고 그 데이터 구조를 디코딩할 수도 있다.
이와 같이, 비디오 디코더 (30) 는 변환 단위의 현재 계수에 대한 {런, 레벨ID} 값들의 쌍을 결정할 수도 있다. 비디오 디코더 (30) 는 계수에 대한 다른 구문 데이터 (예를 들면, 실제 레벨 값들) 를 더 디코딩하고 그에 의해 변환 단위를 재구성할 수도 있다. 예를 들면, 계수가 1보다 더 큰 절대값을 가짐을 레벨ID 값이 나타내면, 비디오 디코더 (30) 는 계수의 실제 값을 나타내는 추가적인 구문 데이터를 디코딩할 수도 있다. 변환 단위의 각 계수에 대해 이것을 수행하고, 스캔 순서에 따른 제로들의 런들에 후속하는 넌-제로 값의 계수들에 대한 레벨 값들을 순서대로 배치함으로써, 비디오 디코더 (30) 는 현재의 코딩 단위에 대한 변환 단위를 재생할 수도 있다. 또한, 역양자화 유닛 (76) 은 변환 단위를 역양자화하고, 역변환 유닛 (78) 은 변환 단위를 역변환하여, 공간 도메인에서의 잔차 값들을 재생할 수도 있다.
비디오 디코더 (30) 에서, 현재의 프레임에서의 블록은, 인코더에서의 방식과 마찬가지의 방식으로 먼저 그것의 예측을 구성하고, 압축된 예측 에러를 그 예측에 추가함으로써 얻어진다. 압축된 예측 에러는 양자화된 계수들을 사용하여 변환 기반의 함수들에 가중치를 부여함으로써 발견된다. 재구성된 프레임과 원래 프레임 사이의 차이는 재구성 에러로 칭해진다.
모션 보상 유닛 (72) 은 비트스트림에서 수신된 모션 벡터들을 사용하여 기준 프레임 메모리 (82) 에서의 기준 프레임들에서 예측 블록을 식별할 수도 있다. 인트라 예측 유닛 (74) 은 비트스트림에서 수신된 인트라 예측 모드들을 사용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다. 역양자화 유닛 (76) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 블록 계수들을 역양자화, 즉, 탈양자화한다 (dequantizes). 역양자화 프로세스는, 예를 들면, H.264 디코딩 표준에서 정의된 것과 같은 종래의 프로세스를 포함할 수도 있다. 역양자화 프로세스는 양자화의 정도, 및, 마찬가지로, 적용되어야 하는 역양자화의 정도를 결정하기 위해, 각각의 매크로블록에 대해 인코더 (50) 에 의해 계산된 양자화 파라미터 (QPY) 의 사용을 또한 포함할 수도 있다.
역변환 모듈 (58) 은, 픽셀 도메인에서의 잔차 블록들을 생성하기 위해 변환 계수들에 대해 역변환, 예를 들면, 역DCT, 역정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 적용한다. 어쩌면 보간 필터들에 기초한 보간을 수행하는 모션 보상 유닛 (72) 은 모션 보상된 블록들을 생성한다. 서브-픽셀 정밀도를 갖는 모션 추정에 사용될 보간 필터들에 대한 식별자들은 구문 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것과 같이 보간 필터들을 사용하여 기준 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 모션 보상 모듈 (72) 은 수신된 구문 정보에 따라 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 결정하고 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다.
모션 보상 유닛 (72) 은 인코딩된 비디오 시퀀스의 프레임 (들) 을 인코딩하기 위해 사용된 매크로블록들의 사이즈들을 결정하기 위한 구문 정보, 인코딩된 비디오 시퀀스의 프레임의 각 매크로블록이 어떻게 구획되는지를 설명하는 구획 정보, 각 구획이 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터 인코딩된 매크로블록 또는 구획에 대한 하나 이상의 기준 프레임들 (및 기준 프레임 리스트들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보 중 일부를 사용한다.
합산기 (80) 는 잔차 블록들을 모션 보상 유닛 (72) 또는 인트라 예측 유닛에 의해 생성된 대응하는 예측 블록들과 합산하여 디코딩된 블록들을 형성한다. 원하는 경우, 블록화 아티팩트들을 제거하도록 디코딩된 블록들을 필터링하기 위해 디블록화 필터가 또한 적용될 수도 있다. 그 다음 디코딩된 비디오 블록들은 기준 프레임 메모리 (82) 에 저장되고, 기준 프레임 메모리는 후속 모션 보상에 대한 기준 블록들을 제공하고 또한 디스플레이 디바이스 (예컨대 도 1의 디스플레이 디바이스 (32)) 상에서의 표시를 위한 디코딩된 비디오를 생성한다.
비디오 디코더 (30) 는, TU의 수신된 계수를 디코딩하기 위해 함수 또는 일차원 테이블을 사용하는 것과 같은, 본 개시의 기술들의 전체 또는 임의의 것을 수행하도록 구성될 수도 있다. 비디오 디코더 (30) 는 위에서 논의된 디코더 의사코드, 또는, 위에서 논의된 바와 같이, 인코더 의사코드에 대한 역순의 방법을 구현하도록 구성될 수도 있다.
이와 같이, 비디오 디코더 (30) 는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 그리고 코드워드 인덱스 값과 관련된 코드워드를 사용하여 그 계수에 대한 데이터를 코딩하도록 구성된 비디오 코더의 일 실시형태를 나타낸다. 특히, 본 실시형태에서, 비디오 코더는 비디오 디코더이다. 계수에 대한 데이터를 코딩하기 위해, 비디오 디코더 (30) 는 코드워드를 사용하여 계수에 대한 {런, 레벨ID} 쌍을 결정하도록 구성될 수도 있다. 또한, 비디오 디코더 (30) 는, 코드워드 인덱스 값으로부터 계수에 대한 데이터를 결정하기 위해 코드워드를 디코딩한 이후 함수를 수행하도록 구성될 수도 있다.
도 4는 계수들 (120A~120P) (계수들 (120)) 의 예시적인 지그재그 스캔을 예시하는 개념도이다. 도 4가 4×4 블록의 실시형태를 예시하지만, 다른 블록 사이즈들도 또한 가능하다. 계수들 (120) 은, TU의 픽셀들의 변환 및 양자화의 결과로 나타나는 양자화된 변환 계수들에 일반적으로 대응한다. 본 실시형태에서, 지그재그 스캔은 계수 120A에서 시작하고, 그 다음 계수 120B로 진행하고, 그 다음 계수 120E, 그 다음 계수 120I, 그 다음 계수 120F, 그 다음 계수 120C, 그 다음 계수 120D, 그 다음 계수 120G, 그 다음 계수 120J, 그 다음 계수 120M, 그 다음 계수 120N, 그 다음 계수 120K, 그 다음 계수 120H, 그 다음 계수 120L, 그 다음 계수 120O, 그리고 마지막으로 계수 120P로 진행한다.
이 스캔을 수행함으로써, 픽셀들에 대한 계수들의 2차원 배열은 계수들 (120) 의 각각에 대한 값들을 포함하는 1차원 어레이로 변환될 수도 있다. 이들 값들은 스캔 순서의 어레이에 정렬될 수도 있다. 예를 들면, 계수 120A에 대한 값이 어레이에서 첫 번째이고, 계속해서 계수들 (120B, 120E, 120I, 120F, 등등) 에 대한 값들이 후속할 수도 있다.
주어진 블록에서의 계수들은 소정의 순서 (스캔) 로 정렬되어, 1차원적으로 배열된 계수 벡터로 나타나게 된다. 널리 사용되는 스캔 중 하나는 지그재그 스캔이다. 4×4 블록에 대한 예시적인 지그재그 스캔은 도 4에 나타나 있다. 수평 스캔, 수직 스캔, 파면 (wavefront) 스캔과 같은 몇몇 다른 스캔들이 또한 있을 수도 있다. 본 개시에서는, 제안된 스킴들을 설명하기 위해 지그재그 스캔이 사용된다. 본 개시의 제안된 스킴들이 다른 스캔들과 함께 구성될 수 있음을 주목해야만 한다.
지그재그 스캔은, 2차원 (2D) 변환을 적용한 이후 대부분의 에너지를 갖는 변환 계수들 (즉, 높은 값의 계수들) 이 저주파 변환 함수들에 대응하고 도 4에서 묘사된 바와 같이 블록의 좌상쪽으로 위치된다는 것을 가정한다. 역으로, 고주파의 낮은 에너지의 변환 계수들은 블록의 우하쪽으로 있게 된다. 그러므로, 지그재그 스캐닝을 통해 생성된 계수 벡터에서, 더 큰 크기의 계수들은 아마 벡터의 시작 쪽에 나타날 것이다. 양자화 이후 낮은 에너지의 계수들의 대부분은 0과 같아진다. 계수 코딩 동안 계수 스캔을 적응시키는 것도 또한 가능하다. 예를 들면, 스캔에서 낮은 번호는 넌-제로 계수들이 더 자주 나타나는 위치들에 할당될 수도 있다.
HEVC 테스트 모델에서 VLC를 사용하여 단일의 4×4 블록을 엔트로피 인코딩하는 것은 예를 들면 다음의 단계들을 수반한다:
1. 스캔에서의 마지막 넌제로 계수의 절대값 |level|이 1 이상인지의 여부를 나타내는 레벨ID와 결합된 이 계수의 위치를 인코딩한다. 4×4 블록의 나머지 계수들은 역스캔 순서로 코딩되고 런-모드 또는 레벨 모드에서 코딩된다. 런-모드에서 레벨-모드로 전환하기 위한 절차는 이미 코딩되었던 계수들의 크기들에 기초하여 결정된다.
2. 런-모드 코딩. 이 모드에서, 제로 계수들의 수는 이전 넌제로 계수로부터 시작하여 시그널링된다. 구문 엘리먼트 isLevelOne_run는 런과 레벨ID를 함께 코딩한다. 런의 값은 역스캔 순서에서 현재 넌제로 계수와 다음 번 넌-제로 계수 사이의 제로 계수들의 수와 동일하고, 레벨ID는 다음 번 넌-제로 계수의 |level|이 1 이상인지의 여부를 나타낸다. 현재의 넌제로 계수가 포지션 k에 있으면, 런 값들은 0에서 k까지의 범위 내에 있을 수 있다. 런 값이 k와 동일하다는 것은, 이 블록들에 더 이상 넌제로 계수들이 존재하지 않는다는 것을 의미한다. {레벨ID, 런} 및 코드워드 번호 (cn) 사이의 매핑은 k의 값에 의존한다.
3. 레벨 모드 코딩. VLCx를 사용하여 |level|의 값이 디코딩되는데, 여기서 x는 레벨-모드에서 코딩되고 있는 첫 번째 계수에 대해 0이다. 각 계수의 레벨-모드 디코딩 이후에, |level| > vlc_level_table[x]이면 VLC 테이블 인덱스, 즉 x는 1만큼 증가된다.
CABAC를 사용하여 {런, 레벨ID} 쌍을 코딩할 때 유사한 프로세스가 수행될 수도 있다. 그러나, 본 개시에서 언급된 바와 같이, VLC 코드워드들을 선택하는 대신, 비디오 코더는, CABAC를 사용하여 구문 엘리먼트들을 코딩할 때, 이진화된 값들을 선택하고 그 다음 이진화된 값들에 대해 이진화 산술 코딩을 더 수행할 수도 있다.
위에서 언급된 바와 같이, 1차원 테이블들 및 1차원 테이블들에 근사시키는 식들은 스캔 순서에서 하나 이상의 특별한 포지션들에 대해 제공될 수도 있다. VLC에 대해, 런-모드 코딩은 역스캔 순서, 예를 들면, 계수 120P에서 계수 120A로 수행될 수도 있다. 따라서, 계수 120A는 런-모드 코딩의 목적을 위해, 즉, {런, 레벨ID} 쌍들을 코딩할 때 스캔 순서에서 "마지막" 계수로서 취급될 수도 있다. 위에서 언급된 바와 같이, 스캔 순서에서 특별한 포지션의 한 실시형태는, k의 값이 임계치보다 작고 런이 k+1과 동일하게 되는 위치이다. 예를 들면, 계수 120D가 역스캔 순서에서 마지막 계수였다면, 계수 120D는 6의 런 값과 7의 k 값을 가질 수도 있다. 따라서, 비디오 인코더 (20) 또는 비디오 디코더 (30) 는 계수 120D에 대한 {런, 레벨ID} 쌍과 코드워드 인덱스 사이의 매핑을 결정하는 1차원 테이블 또는 함수를 사용할 수도 있다.
위에서 논의된 바와 같이, 1차원 테이블들 또는 함수들이 제공될 수도 있는 특별한 포지션들로서 다른 포지션들이 고려될 수도 있다. 다른 특별한 포지션들의 실시형태들은 run_l 및 run_t를 포함한다. 예로서, 계수들 120D 및 120C가 제로의 값을 가지며 계수 120F가 넌-제로의 값을 가질 때 계수 120G는 run_l 포지션에 있는 것으로 간주될 수도 있다. 위에서 논의된 바와 같이, "좌측 런" 또는 "runLeft(k)" 포지션으로도 칭해지는 run_l 포지션은 현재 포지션의 바로 왼쪽의 포지션이며, 현재 포지션과 run_l 포지션 사이의 스캔 순서에서의 모든 계수들은 제로 값을 갖게 된다. 다른 예로서, 대안적으로는, 계수 120D가 제로 값을 가지며 계수 120C가 넌-제로 값을 가질 때 계수 120G는 run_t 포지션에 있는 것으로 간주될 수도 있다. 위에서 논의된 바와 같이, "위쪽 런" 또는 "runTop(k)" 포지션으로도 칭해지는 run_t 포지션은 현재 포지션의 바로 위쪽의 포지션이며, 현재 포지션과 run_t 포지션 사이의 스캔 순서에서의 모든 계수들은 제로 값을 갖게 된다.
도 5는 현재의 블록을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다. 현재 블록은 현재 CU 또는 현재 CU의 일부를 포함할 수도 있다. 비디오 인코더 (20) (도 1 및 도 2) 에 대해 설명하였지만, 다른 디바이스들이 유사한 방법을 수행하도록 구성될 수도 있음을 주목해야만 한다.
이 실시형태에서, 비디오 인코더 (20) 는 먼저 현재 블록을 예측한다 (150). 예를 들면, 비디오 인코더 (20) 는 현재의 블록에 대한 하나 이상의 예측 단위들 (PU들) 에 대한 픽셀 값들을 계산할 수도 있다. 예를 들면, 모션 추정 유닛 (42) 은 이전에 코딩된 픽쳐에서의 기준 블록을 가리키는 PU에 대한 모션 벡터를 계산할 수도 있고, 모션 보상 유닛 (44) 은 예측 단위들에 대한 픽셀 값들로서 사용될 픽셀 값들을 기준 블록으로부터 추출할 수도 있다. 다르게는, 인트라 예측 유닛 (46) 은 인트라 예측을 사용하여 예측된 픽셀 값들을 계산할 수도 있다.
그 다음 비디오 인코더 (20) 는, 예를 들면, 변환 단위 (TU) 를 생성하기 위해, 현재 블록에 대한 잔차 블록을 계산할 수도 있다 (152). 잔차 블록을 계산하기 위해, 비디오 인코더 (20) 는 원래의 코딩되지 않은 블록과 현재 블록에 대한 예측 블록 사이의 차이를 계산할 수도 있다. 예를 들면, 합산기 (50) 는 원래의 블록에 대한 픽셀 값들과 함께 위치된 예측된 픽셀 값들 사이의 차이들을 계산할 수도 있다. 그 다음 비디오 인코더 (20) 는 잔차 블록의 계수들을 변환하고 양자화할 수도 있다 (154). 이것은 양자화된 변환 계수들을 포함하는 변환 단위를 산출할 수도 있다.
다음으로, 비디오 인코더 (20) 는 변환 단위의 양자화된 변환 계수들을 스캔할 수도 있다 (156). 스캔 동안, 또는 스캔에 후속하여, 비디오 인코더 (20) 는 런-모드에서 계수들을 인코딩할 수도 있다 (158). 예를 들면, 비디오 인코더 (20) 는 계수들에 대한 {런, 레벨ID} 쌍들을 나타내는 코드워드들, 예컨대 VLC 코드워드들 또는 이진화된 값들을 결정할 수도 있다. VLC 코딩을 위해, 비디오 인코더 (20) 는 {런, 레벨ID} 쌍에 대해 결정된 코드워드 번호에 대응하는 VLC 코드워드를 사용하여 {런, 레벨ID} 쌍을 코딩할 수도 있다. CABAC 코딩을 위해, 비디오 인코더 (20) 는 {런, 레벨ID} 쌍에 대해 결정된 코드워드 번호에 대응하는 이진화된 값을 CABAC 코딩할 수도 있다.
특히, 비디오 인코더 (20) 는 역스캔 순서로 계수들에 대한 {런, 레벨ID} 쌍들을 코딩할 수도 있다. 각각의 {런, 레벨ID} 쌍에 대해, 비디오 인코더 (20) 는 코드워드 번호 (cn) 을 결정할 수도 있고, 코드워드 번호는 {런, 레벨ID} 쌍을 인코딩하는 데 사용하기 위한 테이블에서의 코드워드 (예를 들면, VLC 테이블에서의 VLC 코드워드 또는 이진화 테이블에서의 이진화된 값) 에 대한 인덱스를 나타낸다. 단계 158을 수행하기 위한 몇몇 실시형태들에 대한 추가적인 상세들은 도 6을 참조로 아래에 설명된다. 이와 같이 코드워드들을 선택하면, 비디오 인코더 (20) 는 블록의 계수들에 대한 코딩된 데이터를 출력할 수도 있다 (160). 예를 들면, VLC에 대해, 비디오 인코더 (20) 는 VLC 코드워드를 출력할 수도 있고, 한편 CABAC에 대해, 비디오 인코더 (20) 는 이진화된 값에 대한 CABAC 코딩된 데이터를 출력할 수도 있다.
도 6은 현재의 블록의 계수들에 대한 코드워드 인덱스들을 인코딩하기 위한 예시적인 방법을 예시하는 순서도이다. 특히, 도 6의 방법은 도 5의 단계 158을 수행하는 방법의 일 실시형태를 상세히 예시한다. 도 6의 방법은 단일의 {런, 레벨ID} 쌍이 코딩되는 단일의 계수에 대해 설명된다.
최초, 비디오 인코더 (20) 는 포지션 k에서 (역스캔 순서를 사용하여) 계수를 스캔한다 (180). 본 실시형태에서, 계수는 대응하는 임계값보다 더 작은 k 값을 갖는다고 가정한다. 그 다음, 비디오 인코더 (20) 는 계수에 대한 런 및 레벨ID의 값들을 결정한다 (182). 특히, 비디오 인코더 (20) 는, 런이 현재 계수와 다음 번 넌-제로값을 갖는 계수, 또는 넌-제로 값을 갖는 계수들이 남아 있지 않으면 역스캔에서의 마지막 계수 사이의 제로 값을 갖는 계수들의 수와 동일한지를 결정할 수도 있다. 마찬가지로, 비디오 인코더 (20) 는, 계수가 '1'의 절대값을 가질 때 레벨ID가 '0'의 값을 가진다고, 또는 계수가 1보다 더 큰 절대값을 가질 때 레벨ID가 '1'의 값을 가진다고 결정할 수도 있다. 다시 말하면, 포지션 k에서의 계수를 "A"라 하고 스캔 순서에서 다음 번 넌-제로 값을 갖는 계수를 "B"라고 하면, 0과 동일한 레벨ID는, B의 절대값이 1임을 나타낼 수도 있고, 1과 동일한 레벨ID는, B의 절대값이 1보다 더 크다는 것을 나타낼 수도 있다.
그 다음 비디오 인코더 (20) 는 레벨ID가 '0'의 값을 갖는지의 여부를 결정할 수도 있다 (183). 레벨ID가 '0'의 값을 갖지 않고 (183의 분기 "아니오"), 예를 들어 '1'의 값을 가지면, 비디오 인코더 (20) 는 cn의 값을 k+2+런과 동일하게 설정할 수도 있다 (184). 한편, 레벨ID가 '0'과 동일하면 (183의 분기 "예"), 비디오 인코더 (20) 는 런이 k=1과 동일한지의 여부를 더 결정할 수도 있다 (185). 특히, 비디오 인코더 (20) 는 역스캔 순서에서 현재의 계수가 마지막 넌-제로 값을 갖는 계수인지의 여부를 결정할 수도 있다.
런이 k+1과 동일하다고 (185의 분기 "예") 비디오 인코더 (20) 가 결정하면, 비디오 인코더 (20) 는, 예를 들면 k의 값에 인덱싱된 1차원 테이블을 사용하여 {런, 레벨ID} 쌍에 대한 cn의 값을 계산할 수도 있다 (186). 다르게는, 비디오 인코더 (20) 는 1차원 테이블에 근사시키는 함수를 실행하여, 그 함수에 값 k를 전달할 수도 있다. 그 함수는 k의 값에 기초하여 cn에 대한 값을 리턴할 수도 있다. 이와 같이, 비디오 인코더 (20) 는 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행할 수도 있는데, 여기서 cn은 본 실시형태에서 코드워드 인덱스 값이다.
한편, 런이 k+1과 동일하지 않으면 (185의 분기 "아니오"), 비디오 인코더 (20) 는, 런이 E1(k), 즉 k의 값에 대한 1차원 테이블에 의해 리턴된 값보다 작은지의 여부를 결정할 수도 있다 (188). 런이 E1(k) 보다 작으면 (188의 분기 "예"), 비디오 인코더 (20) 는 cn이 런과 동일한 값을 갖는다고 결정할 수도 있다 (190). 한편, 런이 E1(k) 보다 더 크면 (188의 분기 "아니오"), 비디오 인코더 (20) 는 cn이 런+1과 동일한 값을 갖는다고 결정할 수도 있다 (192). 그 다음, 비디오 인코더 (20) 는 cn의 결정된 값에 매핑된 코드워드, 예를 들면 VLC 테이블로부터의 VLC 코드워드 또는 CABAC에 대한 이진화 테이블로부터의 이진화된 값을 선택할 수도 있다 (194). 또한, CABAC에 대해, 비디오 인코더 (20) 는 선택된 이진화된 값을 엔트로피 인코딩할 수도 있다.
이와 같이, 도 5 및 도 6은, 비디오 데이터를 코딩하는 방법의 실시형태들을 나타내는데, 상기 방법은, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하는 단계를 포함한다.
도 7은 비디오 데이터의 현재 블록을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다. 현재 블록은 현재 CU 또는 현재 CU의 일부를 포함할 수도 있다. 비디오 디코더 (30) (도 1 및 도 3) 에 대해 설명하였지만, 다른 디바이스들이 유사한 방법을 수행하도록 구성될 수도 있음을 주목해야만 한다.
비디오 디코더 (30) 는, 현재 블록에 대한 예측 블록을 계산하기 위해, 예를 들면, 인트라 예측 모드 또는 인터 예측 모드를 사용하여 현재 블록을 예측할 수도 있다 (200). 비디오 디코더 (30) 는 현재 블록에 대응하는 잔차 블록의 계수들에 대한 코드워들에 대응하는 코딩된 데이터를 또한 수신할 수도 있다 (202). 예를 들면, VLC에서, 코딩된 데이터는 VLC 코드워드들 그 자체일 수도 있고, 그 반면, CABAC에 대해, 코딩된 데이터는 이진화된 값에 대응하는 CABAC 코딩된 데이터를 포함할 수도 있고, 비디오 디코더 (30) 는 이진화된 값 (즉, 코드워드) 을 재생하기 위해 CABAC 코딩된 데이터를 CABAC 디코딩할 수도 있다.
비디오 디코더 (30) 는 코드워드들이 매핑되는 코드워드 인덱스들을 결정하고, 런-모드를 사용하여 코드워드들로부터 매핑된 코드워드 인덱스들을 디코딩하여 계수들에 대한 데이터를 재생할 수도 있다 (204). 물론, 위에서 논의된 바와 같이, 계수들에 대한 데이터는 {런, 레벨ID} 쌍들에 대응한다. 도 7에 도시되진 않았지만, 비디오 디코더 (30) 는 레벨 값이 1보다 크다는 것을 레벨ID가 나타낼 때 계수들에 대한 실제 레벨 값들을 나타내는 계수들에 대한 레벨 데이터를 더 디코딩할 수도 있다. 비디오 디코더 (30) 는, 양자화된 변환 계수들의 블록을 생성하기 위해, 재생된 계수들을 또한 역스캔할 수도 있다 (206). 그 다음, 비디오 디코더 (30) 는 계수들을 역양자화하고 역스캔하여 잔차 블록을 생성할 수 있다 (208). 잔차 블록은 픽셀 도메인에서의 잔차 계수들을 포함할 수도 있다. 비디오 디코더 (30) 는 예측된 블록과 잔차 블록을 결합함으로써 현재 블록을 최종적으로 디코딩할 수도 있다 (210). 즉, 비디오 디코더 (30) 는 잔차 값들과 예측된 값들을 더하여 대응하는 블록에 대한 개별적인 픽셀 값들을 재생할 수도 있다.
도 8은 코드워드 인덱스들을 디코딩하기 위한 예시적인 방법을 예시하는 순서도이다. 특히, 도 8의 방법은 도 7의 단계 204를 수행하는 방법의 일 실시형태를 상세히 예시한다. 도 8의 실시형태는 단일 계수에 대한 단일 코드워드 인덱스 값 (cn) 에 관해 설명되는데, 이 계수가 임계값보다 더 작은 k 값을 갖는다고 가정한다.
몇몇 실시형태들에서, 비디오 디코더 (30) 는 VLC 코드워드를 수신할 수도 있고, 다른 실시형태들에서, 비디오 디코더 (30) 는 수신된 CABAC 코딩된 데이터를 디코딩하여 이진화된 값 (즉, 코드워드) 를 재생할 수도 있다. 어떤 경우에서든, 비디오 디코더 (30) 는 계수에 대한 코드워드로부터 위치 k에서의 계수에 대한 코드워드 인덱스 값을 결정할 수도 있다 (220). 예를 들면, 비디오 디코더 (30) 는, 수신된 VLC 코드워드가 VLC 테이블로부터 매핑되는 코드워드 인덱스 값을 결정할 수도 있다. 다르게는, 비디오 디코더 (30) 는 이진화된 값을 재생하고 이진화 테이블을 사용하여 코드워드 인덱스를 결정할 수도 있다. 이와 같이, 비디오 디코더 (30) 는 코드워드 인덱스 값과 관련된 코드워드 (예를 들면, VLC 코드워드 또는 이진화된 값) 를 사용하여 계수에 대한 데이터를 코딩할 수도 있다.
그 다음, 비디오 디코더 (30) 는 cn이 k+1보다 더 큰지의 여부를 결정할 수도 있다 (222). cn이 k+1보다 더 크면 (222의 분기 "예"), 비디오 디코더 (30) 는 계수에 대한 레벨ID가 '1'의 값을 갖는다고 결정할 수도 있고 (224) 계수에 대한 런 값이 cn-k-2의 값을 갖는고 결정할 수도 있다 (226). 이와 같이, 비디오 디코더 (30) 는 cn이 k+1보다 더 클 때 계수에 대한 {런, 레벨ID} 쌍을 재구성할 수도 있다.
한편, cn이 k+1보다 더 크지 않으면 (222의 분기 "아니오"), 비디오 디코더 (30) 는 레벨ID가 '0'의 값을 갖는다고 결정할 수도 있다 (228). 또한, 비디오 디코더 (30) 는 cn이 E1(k) 에 의해 리턴된 값, 즉, k의 값에 대해 실행된 함수에 의해 리턴된 값과 동일한지의 여부를 결정할 수도 있는데, 여기서 상기 함수는 1차원 테이블에 근사시킨다 (230). 다르게는, 비디오 디코더 (30) 는 실제 1차원 테이블을 사용하여 이 값을 결정할 수도 있다. E1(k) 에 의해 리턴된 값이 cn과 동일하면 (230의 분기 "예"), 비디오 디코더 (30) 는 런이 k+1의 값을 갖는다고 결정할 수도 있다 (232). 이와 같이, 계수가 스캔 순서에서 마지막 유효 계수이면, 비디오 디코더 (30) 는 계수에 대한 데이터 (예를 들면, 런 값) 와 코드워드 인덱스 값 (cn) 사이의 매핑을 결정하는 함수를 실행할 수도 있다.
한편, E1(k) 에 의해 리턴된 값이 cn과 동일하지 않으면 (230의 분기 "아니오"), 비디오 디코더 (30) 는 cn이 E1(k) 에 의해 리턴된 값보다 더 작은지의 여부를 결정할 수도 있다 (234). cn이 E1(k) 에 의해 리턴된 값보다 더 작으면 (234의 분기 "예"), 비디오 디코더 (30) 는 런이 cn과 동일한 값을 갖는다고 결정할 수도 있다 (236). 그러나, cn이 E1(k) 에 의해 리턴된 값보다 더 크면 (234의 분기 "아니오"), 비디오 디코더 (30) 는 런이 cn-1과 동일한 값을 갖는다고 결정할 수도 있다 (238). 그 다음, 비디오 디코더 (30) 는 결정된 {런, 레벨ID} 쌍을 이용하여 그 계수를 디코딩할 수도 있다 (240).
이와 같이, 도 7 및 도 8의 실시형태들은,데이터를 코딩하는 방법의 실시형태들을 나타내는데, 상기 방법은, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 그 계수가 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 단계, 및 코드워드 인덱스 값과 관련된 코드워드를 사용하여 계수에 대한 데이터를 코딩하는 단계를 포함한다.
도 5 내지 도 8에 도시되진 않았지만,비디오 인코더 (20) 와 비디오 디코더 (30) 는, 다른 상황들에 대해, 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑들을 결정하는 다른 함수들을 사용하도록 구성될 수도 있다. 예를 들면, 엔트로피 인코더 (20) 와 비디오 디코더 (30) 는, 런 값이 변환 단위에서의 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, {런, 레벨ID} 쌍을 갖는 계수에 대한 매핑을 결정하는 상이한 함수를 실행하도록 구성될 수도 있다. 다른 예로서, 엔트로피 인코더 (20) 와 비디오 디코더 (30) 는, 런 값이 변환 단위에서의 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 스캔 순서에서의 계수들의 수와 동일하게 되도록 되고, 그리고 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, {런, 레벨ID} 쌍을 갖는 계수에 대한 매핑을 결정하는 상이한 함수를 실행하도록 구성될 수도 있다.
또한, 위에서 언급된 바와 같이, 도 5 내지 도 8의 방법들을 수행함에 있어서 대응하는 임계값보다 k 값이 더 작다고 가정하였다. 그러나, 다른 실시형태들에서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는, 계수에 대한 k가 두 임계값들 사이에 있을 때 이들 방법들을 수행할 수도 있다. 예를 들면, 비디오 인코더 (20) 는, k가 제 1의 임계값 T1보다 작고 제 2의 임계값 T2보다 더 클 때 도 5 및 도 6의 방법들을 수행할 수도 있다. 마찬가지로, 비디오 디코더 (30) 는, k가 제 1의 임계값 T1보다 작고 제 2의 임계값 T2보다 더 클 때 도 7 및 도 8의 방법들을 수행할 수도 있다. 그러나, k가 T1보다 더 크거나 또는 T2보다 더 작을 때, 비디오 인코더 (20) 와 비디오 디코더 (30) 는, 이들 실시형태들에서, 대안적인 방법들을 수행할 수도 있다. 또한, 상기 방법들은 임계값을 결정하기 위해 시그널링 데이터를 코딩하는 단계를 추가적으로 포함할 수도 있다.
실시형태에 따라, 본원에서 설명된 임의의 방법들의 소정의 행위들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있거나, 추가되거나 합병될 수도 있거나, 또는 함께 생략될 수도 있다 (예를 들면, 설명된 행위들 또는 이벤트들 모두가 방법의 실시에 반드시 필요한 것은 아니다) 는 것이 인식될 것이다. 또한, 소정의 실시형태들에서, 행위들 또는 이벤트들은 순차적으로 수행되는 대신, 예를 들면, 멀티스레드 프로세싱, 인터럽트 프로세싱, 또는 복수의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 상기 기능들은 컴퓨터 판독가능한 매체상에서 하나 이상의 명령들 또는 코드로서 저장되거나 전송되며 하드웨어 기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체를 포함할 수도 있는데, 이것은 데이터 저장 매체와 같은 유형의 매체, 또는, 예를 들면, 통신 프로토콜에 따라, 컴퓨터 프로그램의 한 장소에서 다른 장소로의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체에 대응한다. 이와 같이, 컴퓨터 판독 가능한 매체는, 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는, 본 개시에서 설명된 기술들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로서, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 스토리지 디바이스들, 플래시 메모리, 또는 요구되는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들면, 명령들이 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체가 접속들, 반송파들, 신호들, 또는 다른 송신 매체를 포함하지 않지만, 대신 비일시적인 유형의 저장 매체에 관련됨이 이해되어야만 한다. 본원에서 사용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 는 통상 자기적으로 데이터를 재생하고, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들도 컴퓨터 판독가능 매체의 범위 내에 또한 포함되어야만 한다.
명령들은, 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래머블 로직 어레이 (FPGA들), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들 또는 이들의 조합에 의해 실행될 수도 있다. 따라서, 본원에서 사용된 용어 "프로세서"는 임의의 앞서 설명된 구조 또는 본원에서 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 몇몇 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 또는 통합 코덱에 통합될 수도 있다. 또한, 상기 기술들은 하나 이상의 회로들 또는 로직 소자들에서 완전히 구현될 수 있다.
본 개시의 기술들은, 무선 헤드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들면, 칩 세트) 를 포함하는 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 다양한 컴포넌트들, 모듈들, 또는 유닛들이 본 개시에서 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의해 실현될 필요는 없다. 대신, 상술한 바와 같이, 다양한 유닛들은, 적절한 소프트웨어 및/또는 펌웨어와 연계하여, 코덱 하드웨어 유닛에 통합되거나 또는 상술한 하나 이상의 프로세서들을 포함하는 상호 동작적인 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 실시형태들을 설명하였다. 이들 및 다른 실시형태들은 하기의 특허청구범위 내에 있다.
Claims (44)
- 비디오 데이터 코딩 방법으로서,
비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 상기 계수가 상기 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때:
상기 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 단계; 및
상기 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 계수에 대한 상기 데이터를 코딩하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 비디오 데이터 코딩 방법은, 런 값이 상기 변환 단위의 상기 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때:
상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하는 단계; 및
상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하는 단계를 더 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 비디오 데이터 코딩 방법은, 런 값이 상기 변환 단위의 상기 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID}를 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때:
상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하는 단계; 및
상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하는 단계를 더 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 임계값은 제 1의 임계값을 포함하고, 상기 함수를 실행하는 단계와 상기 데이터를 코딩하는 단계는, 상기 스캔 순서값이 상기 제 1의 임계값보다 더 작고 제 2의 임계값보다 더 클 때 상기 함수를 실행하는 단계와 상기 데이터를 코딩하는 단계를 포함하며, 상기 제 2의 임계값은 상기 제 1의 임계값보다 더 작은, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 변환 단위를 포함하는 슬라이스에 대한 슬라이스 파라미터 세트 (slice parameter set; SPS), 상기 변환 단위를 포함하는 상기 슬라이스에 대한 적응 파라미터 세트 (adaptation parameter set; APS), 및 상기 변환 단위를 포함하는 픽쳐에 대한 픽쳐 파라미터 세트 (picture parameter set; PPS) 중 적어도 하나에서의 상기 임계값을 나타내는 시그널링 값을 코딩하는 단계를 더 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하는 단계는 비디오 인코딩 프로세스 동안 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 인코딩하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하는 단계는 비디오 디코딩 프로세스 동안 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 결정하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 코드워드는 이진화된 값을 포함하고, 상기 데이터를 코딩하는 단계는 콘텍스트 적응 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC) 을 사용하여 상기 이진화된 값을 엔트로피 코딩하는 단계를 더 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 데이터를 코딩하는 단계는 상기 코드워드 인덱스 값을 재생하기 위해 상기 코드워드를 디코딩하는 단계를 포함하고, 상기 함수를 실행하는 단계는 상기 코드워드 인덱스 값으로부터 상기 계수에 대한 상기 데이터를 결정하기 위해 상기 코드워드를 디코딩한 이후 상기 함수를 실행하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 제 9항에 있어서,
상기 코드워드를 디코딩하는 단계는, 상기 코드워드를 포함하는 이진화된 값을 재생하기 위해 데이터를 엔트로피 디코딩하는 단계, 및 상기 이진화된 값이 대응하는 상기 코드워드 인덱스 값을 결정하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 제 9항에 있어서,
상기 변환 단위에 대응하는 예측 데이터를 결정하는 단계, 상기 변환 단위에 대한 잔차 데이터를 재생하는 단계, 및 상기 예측 데이터와 상기 잔차 데이터를 결합하는 단계를 더 포함하는, 비디오 데이터 코딩 방법. - 제 1항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하는 단계는 상기 함수를 실행한 이후 상기 코드워드를 사용하여 상기 데이터를 인코딩하는 단계를 포함하는, 비디오 데이터 코딩 방법. - 비디오 데이터를 코딩하는 디바이스로서,
상기 디바이스는, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 상기 계수가 상기 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때, 상기 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고, 그리고 상기 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 계수에 대한 상기 데이터를 코딩하도록 구성된 비디오 코더를 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 비디오 코더는, 런 값이 상기 변환 단위의 상기 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하고, 그리고 상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하도록 더 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 비디오 코더는, 런 값이 상기 변환 단위의 상기 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하고, 그리고 상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하도록 더 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 임계값은 제 1의 임계값을 포함하고,
상기 비디오 코더는, 상기 스캔 순서값이 상기 제 1의 임계값보다 더 작고 제 2의 임계값보다 더 클 때 상기 함수를 실행하고 상기 데이터를 코딩하도록 구성되며, 상기 제 2의 임계값은 상기 제 1의 임계값보다 더 작은, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 비디오 코더는, 상기 변환 단위를 포함하는 슬라이스에 대한 슬라이스 파라미터 세트 (slice parameter set; SPS), 상기 변환 단위를 포함하는 상기 슬라이스에 대한 적응 파라미터 세트 (adaptation parameter set; APS), 및 상기 변환 단위를 포함하는 픽쳐에 대한 픽쳐 파라미터 세트 (picture parameter set; PPS) 중 적어도 하나에서의 상기 임계값을 나타내는 시그널링 값을 코딩하도록 더 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 비디오 코더는 비디오 디코더를 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 18항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하기 위해, 상기 비디오 디코더는 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 결정하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 18항에 있어서,
상기 비디오 디코더는 상기 코드워드 인덱스 값을 재생하기 위해 상기 코드워드를 디코딩하도록 구성되고, 상기 함수를 실행하기 위해, 상기 비디오 디코더는 상기 코드워드 인덱스 값으로부터 상기 계수에 대한 상기 데이터를 결정하기 위해 상기 코드워드를 디코딩한 이후 상기 함수를 실행하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 비디오 코더는 비디오 인코더를 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 21항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하기 위해, 상기 비디오 인코더는 비디오 인코딩 프로세스 동안 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 인코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 13항에 있어서,
상기 코드워드는 이진화된 값을 포함하고, 상기 데이터를 코딩하기 위해, 상기 비디오 코더는 콘텍스트 적응 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC) 을 사용하여 상기 이진화된 값을 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 비디오 데이터를 코딩하는 디바이스로서,
비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 상기 계수가 상기 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때 상기 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하는 수단; 및
상기 계수가 상기 스캔 순서값을 가질 때 그리고 상기 계수가 상기 변환 단위의 상기 스캔 순서에서 마지막 유효 계수일 때 상기 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 계수에 대한 상기 데이터를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
런 값이 상기 변환 단위의 상기 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 상기 제 1의 계수에 대한 상기 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하는 수단; 및
상기 제 1의 계수에 대한 상기 데이터가 상기 {런, 레벨ID} 쌍을 포함할 때 그리고 상기 제 2의 계수가 제로보다 더 큰 값을 가질 때, 상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
런 값이 상기 변환 단위의 상기 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때, 상기 제 1의 계수에 대한 상기 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하는 수단; 및
상기 제 1의 계수에 대한 상기 데이터가 상기 {런, 레벨ID} 쌍을 포함할 때 그리고 상기 제 2의 계수가 제로보다 더 큰 값을 가질 때, 상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 임계값은 제 1의 임계값을 포함하고, 상기 함수를 실행하는 수단과 상기 데이터를 코딩하는 수단은, 상기 스캔 순서값이 상기 제 1의 임계값보다 더 작고 제 2의 임계값보다 더 클 때 상기 함수를 실행하는 수단과 상기 데이터를 코딩하는 수단을 포함하며, 상기 제 2의 임계값은 상기 제 1의 임계값보다 더 작은, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 변환 단위를 포함하는 슬라이스에 대한 슬라이스 파라미터 세트 (slice parameter set; SPS), 상기 변환 단위를 포함하는 상기 슬라이스에 대한 적응 파라미터 세트 (adaptation parameter set; APS), 및 상기 변환 단위를 포함하는 픽쳐에 대한 픽쳐 파라미터 세트 (picture parameter set; PPS) 중 적어도 하나에서의 상기 임계값을 나타내는 시그널링 값을 코딩하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하는 수단은 비디오 디코딩 프로세스 동안 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 결정하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 29항에 있어서,
상기 데이터를 코딩하는 수단은, 상기 코드워드 인덱스 값을 재생하기 위해 상기 코드워드를 디코딩하는 수단을 포함하고, 상기 함수를 실행하는 수단은, 상기 코드워드 인덱스 값으로부터 상기 계수에 대한 상기 데이터를 결정하기 위해 상기 코드워드를 디코딩한 이후 상기 함수를 실행하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 계수에 대한 상기 데이터를 코딩하는 수단은 비디오 인코딩 프로세스 동안 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 인코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 24항에 있어서,
상기 코드워드는 이진화된 값을 포함하고, 상기 데이터를 코딩하는 수단은 콘텍스트 적응 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC) 을 사용하여 상기 이진화된 값을 엔트로피 코딩하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스. - 명령들이 저장된 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서,
상기 명령들은 실행시 비디오 데이터를 코딩하는 디바이스의 프로세서로 하여금, 비디오 데이터의 변환 단위의 계수가 임계값보다 더 작은 스캔 순서값을 가질 때 그리고 상기 계수가 상기 변환 단위에서의 스캔 순서에서 마지막 유효 계수일 때:
상기 계수에 대한 데이터와 코드워드 인덱스 값 사이의 매핑을 결정하는 함수를 실행하고; 그리고
상기 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 계수에 대한 상기 데이터를 코딩하게 하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 프로세서로 하여금, 런 값이 상기 변환 단위의 상기 제 1의 계수의 왼쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때:
상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하고; 그리고
상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 함수는 제 1의 함수를 포함하고, 상기 매핑은 제 1의 매핑을 포함하고, 상기 코드워드 인덱스 값은 제 1의 코드워드 인덱스 값을 포함하고, 상기 계수는 제 1의 계수를 포함하고,
상기 프로세서로 하여금, 런 값이 상기 변환 단위의 상기 제 1의 계수의 위쪽에 있는 제 2의 계수에 도달하기 위한 상기 스캔 순서에서의 계수들의 수와 동일하게 되도록 상기 제 1의 계수에 대한 데이터가 {런, 레벨ID} 쌍을 포함할 때, 그리고 상기 제 2의 계수가 제로보다 더 큰 절대값을 가질 때:
상기 제 1의 계수에 대한 데이터와 제 2의 코드워드 인덱스 값 사이의 제 2의 매핑을 결정하는 제 2의 함수를 실행하고; 그리고
상기 제 2의 코드워드 인덱스 값과 관련된 코드워드를 사용하여 상기 제 1의 계수에 대한 상기 데이터를 코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 임계값은 제 1의 임계값을 포함하고,
상기 프로세서로 하여금 상기 함수를 실행하게 하는 상기 명령들과 상기 프로세서로 하여금 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 스캔 순서값이 상기 제 1의 임계값보다 작고 상기 제 2의 임계값보다 더 클 때 상기 프로세서로 하여금 상기 함수를 실행하게 하는 명령들과 상기 프로세서로 하여금 상기 데이터를 코딩하게 하는 명령들을 포함하며, 상기 제 2의 임계값은 상기 제 1의 임계값보다 더 작은, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 프로세서로 하여금, 상기 변환 단위를 포함하는 슬라이스에 대한 슬라이스 파라미터 세트 (slice parameter set; SPS), 상기 변환 단위를 포함하는 상기 슬라이스에 대한 적응 파라미터 세트 (adaptation parameter set; APS), 및 상기 변환 단위를 포함하는 픽쳐에 대한 픽쳐 파라미터 세트 (picture parameter set; PPS) 중 적어도 하나에서의 상기 임계값을 나타내는 시그널링 값을 코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 디코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 38항에 있어서,
상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 결정하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 38항에 있어서,
상기 프로세서로 하여금 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 코드워드 인덱스 값을 재생하기 위해 상기 프로세서로 하여금 상기 코드워드를 디코딩하게 하는 명령들을 포함하고, 상기 프로세서로 하여금 상기 함수를 실행하게 하는 상기 명령들은, 상기 코드워드 인덱스 값으로부터 상기 계수에 대한 상기 데이터를 결정하기 위해 상기 코드워드를 디코딩한 이후 상기 프로세서로 하여금 상기 함수를 실행하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 38항에 있어서,
상기 프로세서로 하여금 상기 코드워드를 디코딩하게 하는 상기 명령들은, 상기 코드워드를 포함하는 이진화된 값을 재생하기 위해 상기 프로세서로 하여금 데이터를 엔트로피 디코딩하게 하는 명령들, 및 상기 프로세서로 하여금 상기 이진화된 값이 대응하는 상기 코드워드 인덱스 값을 결정하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 디코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 42항에 있어서,
상기 프로세서로 하여금 상기 계수에 대한 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 코드워드를 사용하여 상기 계수에 대한 {런, 레벨ID} 쌍을 인코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품. - 제 33항에 있어서,
상기 코드워드는 이진화된 값을 포함하고, 상기 프로세서로 하여금 상기 데이터를 코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 콘텍스트 적응 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC) 을 사용하여 상기 이진화된 값을 엔트로피 코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161493337P | 2011-06-03 | 2011-06-03 | |
US61/493,337 | 2011-06-03 | ||
US201161504673P | 2011-07-05 | 2011-07-05 | |
US61/504,673 | 2011-07-05 | ||
US201161538658P | 2011-09-23 | 2011-09-23 | |
US61/538,658 | 2011-09-23 | ||
US13/484,068 | 2012-05-30 | ||
US13/484,068 US9491491B2 (en) | 2011-06-03 | 2012-05-30 | Run-mode based coefficient coding for video coding |
PCT/US2012/040272 WO2012166963A1 (en) | 2011-06-03 | 2012-05-31 | Run-mode based coefficient coding for video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140016983A true KR20140016983A (ko) | 2014-02-10 |
KR101539169B1 KR101539169B1 (ko) | 2015-07-23 |
Family
ID=46319890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137034044A KR101539169B1 (ko) | 2011-06-03 | 2012-05-31 | 비디오 코딩을 위한 런-모드 기반 계수 코딩 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9491491B2 (ko) |
EP (1) | EP2754294A1 (ko) |
JP (1) | JP5937205B2 (ko) |
KR (1) | KR101539169B1 (ko) |
CN (1) | CN103563371A (ko) |
TW (1) | TW201315237A (ko) |
WO (1) | WO2012166963A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891888B2 (en) * | 2012-09-05 | 2014-11-18 | Google Inc. | Entropy coding for recompression of images |
US9621906B2 (en) * | 2012-12-10 | 2017-04-11 | Lg Electronics Inc. | Method for decoding image and apparatus using same |
CN108259900B (zh) * | 2013-01-16 | 2021-01-01 | 黑莓有限公司 | 针对视频的上下文自适应二进制熵编码的变换系数编码 |
US10356426B2 (en) * | 2013-06-27 | 2019-07-16 | Google Llc | Advanced motion estimation |
US10291940B2 (en) | 2014-05-23 | 2019-05-14 | Qualcomm Incorporated | Coding runs with escape in palette-based video coding |
US10382749B2 (en) * | 2014-05-23 | 2019-08-13 | Qualcomm Incorporated | Coding run values based on palette index in palette-based video coding |
US11323733B2 (en) | 2014-05-23 | 2022-05-03 | Qualcomm Incorporated | Predictor palette initialization in palette-based video coding |
KR102661759B1 (ko) * | 2018-09-24 | 2024-04-30 | 프라운호퍼-게젤샤프트 추르 푀르데룽 데어 안제반텐 포르슝 에 파우 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
EP4000266A4 (en) * | 2019-08-20 | 2022-10-26 | Beijing Bytedance Network Technology Co., Ltd. | RESIDUAL CODING FOR TRANSFORM SKIP BLOCKS |
US11695965B1 (en) | 2022-10-13 | 2023-07-04 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video coding using a coded picture buffer |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7116829B1 (en) * | 1996-11-06 | 2006-10-03 | Matsushita Electric Industrial Co., Ltd. | Image coding and decoding methods, image coding and decoding apparatuses, and recording media for image coding and decoding programs |
US6414608B1 (en) * | 1999-06-09 | 2002-07-02 | Matsushita Electric Industrial Co., Ltd. | Variable length code decoding device, digital broadcast receiving apparatus, and DVD reproducing apparatus |
JP4527474B2 (ja) | 2004-08-27 | 2010-08-18 | パナソニック株式会社 | 可変長符号化装置、撮像装置 |
EP1755341A1 (en) | 2005-08-19 | 2007-02-21 | Texas Instruments Incorporated | Method of quantization of transform coefficients |
KR100772870B1 (ko) * | 2005-12-12 | 2007-11-02 | 삼성전자주식회사 | Fgs 계층의 블록에 포함되는 계수의 특성에 따라 비디오신호를 부호화하고 복호화하는 방법 및 장치 |
US20070286277A1 (en) | 2006-06-13 | 2007-12-13 | Chen Xuemin Sherman | Method and system for video compression using an iterative encoding algorithm |
US8467449B2 (en) | 2007-01-08 | 2013-06-18 | Qualcomm Incorporated | CAVLC enhancements for SVC CGS enhancement layer coding |
EP2018070A1 (en) * | 2007-07-17 | 2009-01-21 | Thomson Licensing | Method for processing images and the corresponding electronic device |
US8036471B2 (en) | 2007-10-02 | 2011-10-11 | Cisco Technology, Inc. | Joint amplitude and position coding of coefficients for video compression |
CN101222637A (zh) | 2008-02-01 | 2008-07-16 | 清华大学 | 具有特征标志的编码方法 |
KR101375668B1 (ko) * | 2008-03-17 | 2014-03-18 | 삼성전자주식회사 | 변환 계수의 부호화, 복호화 방법 및 장치 |
US8737613B2 (en) * | 2008-11-20 | 2014-05-27 | Mediatek Inc. | Scanning methods of transform-based digital data processing that conditionally adjust scan order according to characteristics information and related apparatus thereof |
BRPI0922846A2 (pt) | 2008-12-03 | 2018-01-30 | Nokia Corp | alternando entre modos de codificação do coeficiente dct |
US9094691B2 (en) * | 2010-03-15 | 2015-07-28 | Mediatek Singapore Pte. Ltd. | Methods of utilizing tables adaptively updated for coding/decoding and related processing circuits thereof |
US8410959B2 (en) | 2010-04-09 | 2013-04-02 | Qualcomm, Incorporated | Variable length codes for coding of video data |
US8942282B2 (en) | 2010-04-12 | 2015-01-27 | Qualcomm Incorporated | Variable length coding of coded block pattern (CBP) in video compression |
US20120027081A1 (en) * | 2010-07-30 | 2012-02-02 | Cisco Technology Inc. | Method, system, and computer readable medium for implementing run-level coding |
US8976861B2 (en) | 2010-12-03 | 2015-03-10 | Qualcomm Incorporated | Separately coding the position of a last significant coefficient of a video block in video coding |
US9490839B2 (en) | 2011-01-03 | 2016-11-08 | Qualcomm Incorporated | Variable length coding of video block coefficients |
-
2012
- 2012-05-30 US US13/484,068 patent/US9491491B2/en not_active Expired - Fee Related
- 2012-05-31 EP EP12728335.6A patent/EP2754294A1/en not_active Withdrawn
- 2012-05-31 CN CN201280026338.3A patent/CN103563371A/zh active Pending
- 2012-05-31 KR KR1020137034044A patent/KR101539169B1/ko not_active IP Right Cessation
- 2012-05-31 JP JP2014513709A patent/JP5937205B2/ja not_active Expired - Fee Related
- 2012-05-31 WO PCT/US2012/040272 patent/WO2012166963A1/en unknown
- 2012-06-01 TW TW101119857A patent/TW201315237A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
JP5937205B2 (ja) | 2016-06-22 |
JP2014519762A (ja) | 2014-08-14 |
CN103563371A (zh) | 2014-02-05 |
EP2754294A1 (en) | 2014-07-16 |
US9491491B2 (en) | 2016-11-08 |
WO2012166963A1 (en) | 2012-12-06 |
TW201315237A (zh) | 2013-04-01 |
KR101539169B1 (ko) | 2015-07-23 |
US20120307888A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10390044B2 (en) | Signaling selected directional transform for video coding | |
JP6165798B2 (ja) | イントラ予測を使用したビデオ符号化 | |
US8913662B2 (en) | Indicating intra-prediction mode selection for video coding using CABAC | |
US9172963B2 (en) | Joint coding of syntax elements for video coding | |
KR101626734B1 (ko) | 비디오 코딩을 위한 인트라 평활 필터 | |
US9025661B2 (en) | Indicating intra-prediction mode selection for video coding | |
KR101539169B1 (ko) | 비디오 코딩을 위한 런-모드 기반 계수 코딩 | |
US20110310976A1 (en) | Joint Coding of Partition Information in Video Coding | |
US20130272381A1 (en) | Simplified non-square quadtree transforms for video coding | |
KR20130095293A (ko) | 비디오 코딩을 위한 변환 계수들의 적응적 스캐닝 | |
EP2636219A1 (en) | Joint coding of syntax elements 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 | ||
LAPS | Lapse due to unpaid annual fee |