KR101650636B1 - 루마 및 크로마 블록을 위한 vlc 계수 코딩 - Google Patents

루마 및 크로마 블록을 위한 vlc 계수 코딩 Download PDF

Info

Publication number
KR101650636B1
KR101650636B1 KR1020147002573A KR20147002573A KR101650636B1 KR 101650636 B1 KR101650636 B1 KR 101650636B1 KR 1020147002573 A KR1020147002573 A KR 1020147002573A KR 20147002573 A KR20147002573 A KR 20147002573A KR 101650636 B1 KR101650636 B1 KR 101650636B1
Authority
KR
South Korea
Prior art keywords
block
video data
vlc table
vlc
index value
Prior art date
Application number
KR1020147002573A
Other languages
English (en)
Other versions
KR20140035507A (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 KR20140035507A publication Critical patent/KR20140035507A/ko
Application granted granted Critical
Publication of KR101650636B1 publication Critical patent/KR101650636B1/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Abstract

본 개시물은 비디오 데이터의 블록에 대한 변환 계수들에 대한 기술들을 설명한다. 이 개시물들에 따르면, 비디오 코더 (비디오 인코더 또는 비디오 디코더) 는 비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정한다. 비디오 데이터의 블록이 루마 블록인 경우, 비디오 코더는 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여 VLC 테이블 인덱스 값을 적응적으로 업데이트한다. 그러나, 비디오 데이터의 블록이 크로마 블록인 경우, 비디오 코더는 스케일링 팩터의 값을 이용하지 않고 코드 넘버 (cn) 에 기초하여 VLC 테이블 인덱스 값을 적응적으로 업데이트한다. 비디오 코더는 업데이트된 VLC 테이블 인덱스 값을 이용하여 비디오 데이터의 블록을 인코딩 또는 디코딩하는데 이용된 복수의 VLC 테이블들 중 한 VLC 테이블을 선택한다.

Description

루마 및 크로마 블록을 위한 VLC 계수 코딩{VLC COEFFICIENT CODING FOR LUMA AND CHROMA BLOCK}
본 출원은 다음의 미국 가출원들을 우선권으로 주장하며, 이들 각각의 전체 내용을 여기서는 참조로서 포함한다:
2011년 6월 29일 출원된 미국 가출원 61/502,794; 및
2011년 10월 27일 출원된 미국 가출원 61/552,346.
본 개시물은 비디오 코딩 및 압축에 관한 것이다. 보다 자세하게는, 본 개시물은 가변 길이 코딩 (variable length coding; VLC) 을 이용하여 비디오 데이터의 하나 이상의 블록들에 대한 변환 계수들을 인코딩하는 기술들에 대하여 개시한다.
엔트로피 인코딩은 비디오 데이터를 압축하기 위해 비디오 코딩에 있어 널리 채용되는 방법이다. 엔트로피 코딩의 몇몇 양태들에 따르면, 비디오 인코더는 이미지의 픽셀들을 나타내는 변환 계수들의 2차원 매트릭스들을 스캔하여, 변환 계수들의 1 차원 벡터들을 생성한다. 많은 애플리케이션들에 있어서, 비디오 인코더는 비디오 데이터를 추가로 압축하기 위해 변환 계수들을 양자화하기 위한 방법을 유리하게 채용한다. 비디오 디코더는 비디오 데이터를 디코딩한다. 디코딩 프로세스의 일 부분으로서, 비디오 디코더는 변환 계수들의 1 차원 벡터들을 스캔하여 변환 계수들의 2 차원 매트릭스를 재구성한다.
하나 이상의 실시예들의 상세한 내용들이 첨부 도면 및 아래의 상세한 설명을 통하여 기술된다. 본 발명의 다른 특징, 목적들, 및 이점들은 상세한 설명 및 도면 및 아래의 청구항들로부터 명확하게 될 것이다.
일반적으로, 본 개시물은 비디오 데이터를 코딩하기 위한 기술들을 설명하며, 구체적으로, 본 기술들은 비디오 코딩 프로세스 동안에 변환 계수들에 관한 것이다. 몇몇 실시예들에서, 비디오 인코더는 가변 길이 코드들 (VLCs) 을 이용하여 엔트로피 코딩 동안에 생성되어진 양자화된 변환 계수 어레이와 연관된 여러 가능한 값들을 나타내도록 구성된다. 이러한 인스턴스들에서, 인코딩 프로세스의 중간 단계들은 메모리에 저장된 적어도 하나의 값들을 이용하는 것에 의존한다. 본 개시물은 비디오 데이터의 VLC 코딩을 구현하기 위하여 요구되는 메모리 리소스들을 최소화하거나 또는 감소시키는 방법들을 개시한다.
하나 이상의 실시예들의 세부 내용들은 첨부 도면들 및 아래의 상세한 설명에 설명되어 있다. 본 발명의 다른 특징들, 목적들 및 이점들은 상세한 설명, 도면, 및 청구항들로부터 명확하게 될 것이다. 이들 실시예 중의 일부 실시예에 따르면, 8x8 보다 큰 사이즈의 크로마 블록들에 대한 전용 디코딩 방식이 설명된다.
일 실시형태는, 비디오 데이터의 블록이 크로마 블록인지 또는 루마 블록인지의 여부를 초기에 결정함으로써 비디오 데이터 블록들이 코딩되는 방법을 포함한다. 비디오 데이터의 블록이 루마 블록인 경우, 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여 복수의 VLC 테이블들로부터 한 VLC 테이블을 선택하는데 이용되는 VLC 테이블 인덱스 값을 양쪽 모두에서 적응적으로 업데이트시킨다. 한편, 비디오 데이터의 블록이 크로마 블록인 경우, VLC 테이블 인덱스 값을 코드 넘버 (cn) 에 기초하여 적응적으로 업데이트시키고 스케일링 팩터를 이용하지 않는다.
다른 실시형태는 컴퓨팅 디바이스의 프로세서를 포함하거나, 또는 구체적으로, 인코더 또는 디코더가 본원에 개시된 실시예 또는 다른 기술들을 수행하는데 이용될 수도 있다. 다른 실시형태들은 프로세서로 하여금 이러한 방법들을 수행하도록 하기 위한 명령들을 저장하는 컴퓨터 판독가능 매체를 포함한다.
도 1 은 본 개시물의 기술에 따라 동작하도록 구성된 비디오 인코딩 및 디코딩 시스템의 일 실시예를 나타내는 블록도이다.
도 2 는 본 개시물의 기술들에 따라 동작하도록 구성된 비디오 인코더의 일 실시예를 나타내는 블록도이다.
도 3 은 본 개시물의 기술들에 따라 동작하도록 구성된 비디오 디코더의 일 실시예를 나타내는 블록도이다.
도 4 는 본 개시물의 하나 이상의 양태들에 따르는 비디오 데이터의 블록을 코딩하는 방법의 일 실시예를 나타내는 테이블이다.
도 5 는 본 개시물의 하나 이상의 양태들에 따르는 비디오 데이터의 블록을 코딩하는 방법의 일 실시예를 나타내는 흐름도이다.
일반적으로, 본 개시물은 비디오 데이터를 코딩하는 기술들을 설명한다. 보다 구체적으로, 본 개시물은 비디오 코딩 프로세스 동안에 스캐닝 변환 계수에 관한 기술들을 설명한다. 인코딩된 비디오 데이터는 통상적으로 예측 데이터 및 잔여 데이터를 포함한다. 비디오 인코더는 인트라 예측 모드 또는 인터 예측 모드를 이용하여 예측 데이터를 생성한다. 인트라 예측은 일반적으로 동일한 픽쳐의 인접하는, 이전에 코딩된 블록들에 대한 픽쳐의 비디오 블록을 예측하는 것을 포함한다. 인터 예측은 일반적으로 이전에 코딩된 픽쳐의 데이터에 대한 픽쳐의 블록을 예측하는 것을 포함한다.
매크로블록들은 ITU H.264 표준 및 다른 표준들에 의해 정의된 하나의 유형의 비디오 블록이다. 매크로블록들은 통상적으로 데이터의 16 × 16 블록들을 지칭한다. ITU-T H.264 표준은, 루마 성분들 (luma components) 에 대해서는 16 × 16, 8 × 8, 또는 4 × 4, 그리고 크로마 성분들 (chroma components) 에 대해서는 8 × 8 과 같은 다양한 블록 사이즈로 인트라 예측을 지원할 뿐만 아니라, 루마 성분들에 대해서는 16 × 16, 16 × 8, 8 × 16, 8 × 8, 8 × 4, 4 × 8 및 4 × 4, 그리고 크로마 성분들에 대해서는 대응하는 스케일링 사이즈들과 같은 다양한 블록 사이즈로 인터 예측을 지원한다. 예를 들어, ITU-T H.264 는 9개의 인트라 예측 모드들을 제공하는 한편, HM 은 적어도 34개의 인트라 예측 모드들을 제공한다.
최근 생겨난 HEVC 표준은 비디오 블록들에 대한 새로운 용어들을 정의한다. 특히, HEVC 에 따르면, 비디오 블록들 (또는 그의 파티션들) 은 "코딩 유닛들"이라고 지칭될 수도 있다. HEVC 표준에 따르면, 최대 코딩 유닛 (largest coded unit; LCU) 들은 쿼드트리 파티셔닝 방식 (quadtree partitioning scheme) 에 따라 더 작은 코딩 유닛들 (coded units; CU들) 로 분할될 수도 있고, 이 방식에서 정의된 상이한 CU들은 소위 예측 유닛 (prediction unit; PU) 들 및/또는 변환 유닛 (transform unit; TU) 들로 더 파티셔닝될 수도 있다. LCU들, CU들, 및 PU들 및 TU들은 모두 본 개시물의 의미 내에서 비디오 블록들이다. HEVC 표준 또는 다른 비디오 코딩 표준들에 따르는 다른 유형의 비디오 블록들이 또한 이용될 수도 있다. 따라서, 어구 "블록" 은 임의의 사이즈의 비디오 블록을 지칭한다. 또한, 비디오 블록들은 때때로 픽셀 도메인에서는 비디오 데이터의 블록들, 또는 변환 도메인, 이를테면, 이산 코사인 변환 (DCT) 도메인, DCT 와 유사한 도메인, 웨이블릿 도메인 등에서는 데이터의 블록들로 지칭할 수도 있다. 또한, 본원에 설명된 데이터의 블록은 루마 블록, 서브샘플링된 크로마 블록 또는 루마 블록과 2개의 서브샘플링된 크로마 블록들 양쪽 모두를 지칭할 수 있다.
현재, HEVC 테스트 모델에서, 전용 계수 코딩 방식은 8x8 보다 큰 블록들이 전용 계수 코딩 방식은 루마 블록들에만 적용된다. 크로마 블록들에서는, 8x8 보다 큰 블록들에 대해 이용가능하고 전용되는 계수 코딩 방식이 존재하지 않는다. 8x8 보다 큰 크로마 블록을 코딩하기 위해서는, 그 블록에서 스캔 순서에 따라 첫번째 64개의 계수들만이 8x8 블록에 대해 동일한 계수 코딩 방식을 이용하여 유지 및 코딩된다. 결과적인 절단 (truncation) 은 유효 데이터의 손실을 가져올 수 있다. 본 개시물은 크로마 데이터 손실을 감소 또는 제거하기 위한 목적으로, 8x8 보다 큰 사이즈의 크로마 블록들에 대한 전용 코딩 방식을 설명한다.
인트라- 또는 인터-예측에 이어서, 비디오 인코더는 블록에 대한 잔여 값들을 계산할 수도 있다. 일반적으로, 잔여 값들은 블록에 대한 예측된 데이터와 블록의 참 (true) 값 간의 차이들에 대응한다. 블록의 잔여 값을 추가로 압축하기 위해, 잔여 값들을, 가능한 한 많은 데이터 (또한, "에너지" 로도 지칭됨) 를 가능한 한 적은 계수들로 압축하는 변환 계수들의 세트로 변환할 수 있다. 변환 계수들은 원래의 (original) 블록과 동일한 사이즈인 계수들의 2 차원 행렬에 대응한다. 다시 말하면, 대개 원래의 블록에서의 픽셀들 만큼 많은 변환 계수들이 존재한다. 그러나, 이 변환으로 인해, 변환 계수들 중 많은 계수가 제로와 동일한 값을 가질 수도 있다.
비디오 인코더는 종종 비디오 데이터를 추가 압축하기 위하여 변환 계수들을 양자화하여, 양자화된 변환 계수들을 나타내는데 필요한 데이터의 양을 감소시킬 수 있다. 양자화에 이어서, 비디오 인코더는 변환 계수들을 스캔하여, 양자화된 변환 계수들을 포함하는 2 차원 매트릭스로부터 1 차원 벡터를 생성한다. 비디오 인코더는 선택적으로 스캔 이전에 또는 스캔에 후속하여 제로와 동일한 특정 계수들을 설정한다.
비디오 인코더 엔트로피는 데이터를 더욱 추가로 압축하기 위하여 결과적인 어레이를 인코딩한다. 몇몇 실시예들에서, 비디오 인코더는 예를 들어, CAVLC (context-adaptive variable-length coding) 를 이용하여, 어레이의 여러 가능한 양자화 변환 계수들을 나타내는 가변 길이 코드들 (variable length codes; VLCs) 을 이용하도록 구성된다. 다른 실시예들에서, 비디오 인코더는 바이너리 산술 코딩을 이용하여, 예를 들어, 콘텍스트 적응성 바이너리 산술 코딩 (context-adaptive binary arithmetic coding; CABAC) 을 이용하여, 결과적인 양자화된 계수들을 인코딩하도록 구성된다. 다른 실시예들에서, 비디오 인코더는 확률 인터벌 파티셔닝 엔트로피 코드들 (Probability Interval Partitioning Entropy Codes; PIPE) 을 이용하여 결과적인 양자화 계수들을 인코딩하도록 구성된다.
이 개시물은 비디오 코딩 프로세스 동안에 변환 계수들을 스캐닝하는 것과 관련된 기술들을 개시한다. 이 개시물은 비디오 인코더/디코더들 (video encoder/decoders; CODECs) 을 포함한 비디오 인코딩 및 디코딩 유닛들 및 비디오 인코딩 및/또는 디코딩을 수행하도록 구성된 프로세싱 유닛들 양쪽 모두에 적용가능하다. "비디오 코딩 유닛들" 또는 "비디오 코딩 디바이스들" 에 대한 참조는 비디오 데이터를 인코딩, 디코딩 또는 인코딩 및 디코딩 양쪽 모두가 가능한 유닛들 또는 디바이스들을 지칭하는 것으로 이해되어야 한다.
도 1 은 본 개시물의 기술들을 구현하도록 구성될 수 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (100) 을 나타내는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (100) 은 통신 채널 (115) 을 통하여 목적지 디바이스 (106) 에 인코딩된 비디오를 송신하는 소스 디바이스 (102) 를 포함한다. 소스 디바이스 (102) 및 목적지 디바이스 (106) 는 임의의 광범위한 디바이스들을 포함한다. 몇몇 경우에, 소스 디바이스 (102) 및 목적지 디바이스 (106) 는 통신 디바이스 핸드셋들, 이를 테면, 소위 셀룰라 또는 위성 무선 전화기를 포함한다. 그러나, 비디오 데이터의 변환 계수들을 인코딩 및 디코딩하는 것에 일반적으로 적용하는 본 개시물의 기술들은 무선 애플리케이션들 또는 설정들로 반드시 제한되는 것은 아니며 비디오 인코딩 및/또는 디코딩 능력들을 포함하는 광범위한 비무선 디바이스들에도 가능성있게 적용가능하다.
도 1 의 예에서, 소스 디바이스 (102) 는 비디오 소스 (120), 비디오 인코더 (122), 변조기/복조기 (모뎀) (124) 및 송신기 (126) 를 포함한다. 목적지 디바이스 (106) 는 수신기 (128), 모뎀 (130), 비디오 디코더 (132), 및 디스플레이 디바이스 (134) 를 포함한다. 본 개시물에 따르면, 소스 디바이스 (102) 의 비디오 인코더 (122) 는 (예를 들어, 각각이 디스플레이된 이미지의 픽셀들에 대응하는) 변환 계수들의 2 차원 매트릭스를 포함하는 비디오 데이터의 블록의 변환 계수들을, 변환 계수들을 나타내는 1 차원 벡터로 스캐닝한다. 본 개시물의 몇몇 실시형태에 따르면, 비디오 인코더 (122) 는 비디오 데이터의 블록의 복수의 제 1 계수들을 적응적으로 스캐닝하며 블록의 복수의 제 2 계수들에 대한 고정된 스캔을 이용한다. 예를 들어, 복수의 제 1 계수들에 대해, 비디오 인코더 (122) 는 비디오 데이터의 적어도 하나의 이전에 인코딩된 블록의 변환 계수들이 스캐닝되었던 순서에 대하여, 복수의 제 1 변환 계수들이 스캐닝되는 순서를 적응적으로 변경한다. 예를 들어, 비디오 인코더 (122) 는 다른 이전에 인코딩된 블록들 내의 동일 포지션에서의 계수들이 얼마나 자주 비제로 계수들이 되는지에 기초하여 변환 계수들이 스캐닝되는 순서를 변경한다. 복수의 제 2 변환 계수들에 대해, 비디오 인코더 (122) 는 비디오 데이터의 적어도 하나의 이전에 인코딩된 블록의 스캐닝 순서에 대하여, 복수의 제 2 변환 계수들이 스캐닝되는 순서를 적응적으로 변경하지 않는다. 그 대신에, 비디오 인코더 (122) 는 인코더에 의해 인코딩된 비디오 데이터의 복수의 블록들에 대해 동일한 스캔 순서를 이용하여 복수의 제 2 계수들을 스캐닝한다.
수신지 디바이스 (106) 의 비디오 디코더 (132) 는 또한 가역적인 (reciprocal) 변환 계수 디코딩을 수행하도록 구성될 수 있다. 이들 환경에서, 비디오 디코더 (132) 는 비디오 데이터의 블록을 나타내는 변환 계수들의 1 차원 벡터의 계수들을 변환 계수들의 2 차원 매트릭스 내의 포지션들에 대해 매핑하여, 변환 계수들의 2 차원 매트릭스를 재구성한다.
도 1 의 예시된 시스템 (100) 은 단지 예시적인 것에 불과하다. 본 개시물의 변환 계수 인코딩 및 디코딩 기술들은 어떠한 인코딩 또는 디코딩 디바이스들에 의해서도 수행될 수 있다. 소스 디바이스 (102) 및 목적지 디바이스 (106) 는 이러한 기술을 지원할 수 있는 코딩 디바이스들의 단지 예들에 불과하다.
이 실시예에서, 소스 디바이스 (102) 의 비디오 인코더 (122) 는 비디오 소스 (120) 로부터 수신된 비디오 데이터를 인코딩한다. 비디오 소스 (120) 는 비디오 캡쳐 디바이스, 이를 테면, 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 또는 비디오 콘텐츠 제공자로부터 공급되는 비디오를 포함한다. 추가의 대안으로서, 추가 대안적인 예로서, 비디오 소스 (120) 는 컴퓨터 그래픽스-기반의 데이터를 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 발생된 비디오의 조합으로서 발생시킨다. 몇몇 경우, 비디오 소스 (120) 가 비디오 카메라이면, 소스 디바이스 (102) 및 목적지 디바이스 (106) 는 소위 카메라 폰들 또는 비디오 폰들을 형성한다. 각 경우에, 캡쳐되거나, 사전-캡쳐되거나, 또는 컴퓨터-발생된 비디오는 비디오 인코더 (122) 에 의해 인코딩된다.
예시적인 시스템 (100) 에서, 비디오 데이터가 비디오 인코더 (122) 에 의해 인코딩되면, 인코딩된 비디오 정보는 모뎀 (124) 에 의해 예를 들어, 코드 분할 다중 접속 (code division multiple access; CDMA) 과 같은 통신 표준 또는 다른 통신 표준 또는 기술에 따라 변조되고, 송신기 (126) 를 통하여 수신지 디바이스 (106) 에 송신된다. 모뎀 (124) 은 여러 믹서들, 필터들, 증폭기들, 또는 신호 변조를 위하여 설계된 다른 컴포넌트들을 포함한다. 이 실시예의 송신기 (126) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함한, 데이터 송신용으로 설계된 회로들을 포함한다. 목적지 디바이스 (106) 의 수신기 (128) 는 채널 (115) 을 통하여 정보를 수신하고, 모뎀 (130) 은 정보를 복조한다. 또한, 비디오 디코더 (132) 에 의해 수행된 비디오 디코딩 프로세스는 비디오 인코더 (122) 에 의해 수행된 인코딩 기술에 대해 유사한 (예를 들어, 가역적인) 디코딩 기술을 포함한다.
본 개시물의 몇몇 양태들에 따르면, 통신 채널 (115) 은 임의의 무선 또는 유선 통신 매체, 이를 테면, 무선 주파수 (RF) 스펙트럼, 또는 하나 이상의 물리적 송신 라인 또는 무선 및 유선 매체의 임의의 조합을 포함한다. 이러한 경우, 통신 채널 (115) 은 패킷 기반 네트워크, 이를 테면, 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성한다. 통신 채널 (115) 은 일반적으로, 소스 디바이스 (102) 로부터 목적지 디바이스 (106) 로 비디오 데이터를 송신하기 위한 임의의 적절한 통신 매체 또는 상이한 통신 매체들의 콜렉션을 나타낸다.
또한, 도 1 은 단지 예시적인 것에 불과하며, 본 개시물의 기술들은 인코딩 및 디코딩 디바이스들 사이의 임의의 데이터 통신을 반드시 포함할 필요가 있는 것은 아닌 비디오 코딩 설정들 (예를 들어, 비디오 인코딩 또는 비디오 디코딩) 에 적용가능하다. 다른 실시예들에서, 데이터는 로컬 메모리로부터 취출될 수 있거나 네트워크를 통하여 스트리밍 등이 될 수 있다. 인코딩 디바이스는 데이터를 인코딩하고 메모리에 저장하고/하거나 디코딩 디바이스는 데이터를 메모리로부터 취출하여 디코딩한다. 많은 경우에, 인코딩 및 디코딩은 서로 통신하지 않지만, 메모리에 데이터를 간단히 인코딩하고/하거나 메모리로부터 데이터를 취출하여 디코딩하는 관련되지 않은 디바이스들에 의해 수행된다.
도 1 에 도시되어 있지 않지만, 몇몇 양태들에서, 비디오 인코더 (122) 및 비디오 디코더 (132) 는 각각 오디오 인코더 및 오디오 디코더와 통합될 수 있고, 선택적으로, 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오 및 비디오 양쪽의 인코딩을 처리하기 위하여 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함한다. 적절하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 다른 프로토콜들, 이를 테면, 유저 데이터그램 프로토콜 (UDP) 에 따를 수 있다.
비디오 인코더 (122) 및 비디오 디코더 (132) 의 일방 또는 양방은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 응용 주문형 집적 회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수 있다. 비디오 인코더 (122) 및 비디오 디코더 (132) 의 각각은 하나 이상의 인코더들 또는 디코더들에 가능성있게 포함되고, 이들 중 어느 하나가 개개의 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버 등에서 결합형 인코더/디코더 (CODEC) 의 부분으로서 가능성있게 통합된다.
몇몇 경우에, 디바이스들 (102, 106) 은 실질적으로 대칭 방식으로 동작하도록 구성될 수 있다. 예를 들어, 각각의 디바이스들 (102, 106) 은 선택적으로 비디오 인코딩 및 디코딩 컴포넌트들을 포함한다. 따라서, 시스템 (100) 은 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 비디오 전화기를 위하여 비디오 디바이스들 (102, 106) 사이에 단방향 또는 양방향 비디오 송신을 지원할 수 있다.
인코딩 프로세스 동안에, 비디오 인코더 (122) 는 복수의 코딩 기술 또는 동작들을 실행한다. 일반적으로, 비디오 인코더 (122) 는 비디오 블록들을 인코딩하기 위하여, 개별적인 비디오 프레임들 내의 비디오 블록들 (또는 다른 독립적으로 코딩된 유닛들, 이를테면, 슬라이들) 상에서 동작한다. 프레임들, 슬라이스들, 프레임들의 부분들, 픽쳐들의 그루들, 또는 다른 데이터 구조들은 복수의 비디오 블록들을 포함하는 독립적인 데이터 유닛들로서 정의될 수 있고 신택스 엘리먼트들은 이러한 상이한 독립적인 데이터 유닛들에 포함될 수 있다. 독립적인 데이터 유닛들 내의 비디오 블록들은 고정된 또는 가변의 사이즈들을 가질 수 있고, 가능하게는 특정된 코딩 표준에 따라 사이즈에 있어서 상이할 수 있다. 몇몇 경우에, 각각의 비디오 프레임은 일련의 독립적으로 디코딩가능한 슬라이스들을 포함하고, 각각의 슬라이스는 하나 이상의 매크로블록들, 또는 LCU들을 추가로 포함할 수 있다.
도 1 을 또한 참조하여 보면, 비디오 인코더 (122) 는 종종, 예측적 블록을 식별하기 위하여 코딩되고 있는 비디오 블록을 비디오 데이터의 다른 블록에 비교하는 예측적 코딩을 수행한다. 이 예측적 코딩의 프로세스는 종종, 모션 추정 및 모션 보상으로 지칭된다. 모션 추정은 하나 이상의 예측적 프레임들 (또는 다른 코딩 유닛들) 의 하나 이상의 예측적 비디오 블록들에 대하여 비디오 블록 모션을 추정한다. 모션 보상은 하나 이상의 예측적 프레임들 또는 다른 코딩 유닛들로부터 원하는 예측적 비디오 블록을 생성한다. 모션 보상은 보간 필터링이 수행되어 부분적인 픽셀 정확성에서 예측 데이터가 생성되는 보간 프로세스를 포함한다.
예측 블록을 생성한 후, 코딩되고 있는 현재 비디오 블록과 예측 블록 사이의 차이들이 잔여 블록으로서 코딩되고, 예측 신텍스 (이를 테면, 모션 벡터) 가 예측 블록을 식별하는데 이용된다. 잔여 블록은 변환되고 양자화된다. 변환 기술들은 선택적으로 DCT 프로세스 또는 개념적으로 유사한 프로세스, 정수 변환들, 웨이블릿 변환들, 또는 다른 유형의 변환들을 포함한다. DCT 또는 DCT-유형 프로세스에서, 일례로서, 변환 프로세스는 픽셀 값들 (예를 들어, 잔여 값들) 의 세트를 변환 계수들로 컨버팅하며, 이 변환 계수들은 예를 들어, 주파수 도메인에서의 픽셀 값들의 에너지를 나타낸다. 양자화는 통상적으로 변환 계수들에 적용되고, 일반적으로 임의의 소정의 변환 계수와 연관된 비트들의 수를 제한하는 프로세스를 수반한다.
많은 실시예들에서, 변환 및 양자화에 이어서, 변환 및 양자화된 잔여 비디오 블록들에 대해 엔트로피 코딩이 수행된다. 신텍스 엘리먼트들, 여러 필터 신텍스 정보, 및 인코딩 동안에 정의된 예측 벡터들은 엔트로피 코딩된 비트스트림에 포함된다. 일반적으로, 엔트로피 코딩은 양자화된 변환 계수들의 시퀀스 및/또는 다른 신택스 정보를 총괄적으로 압축하는 하나 이상의 프로세스들을 포함한다. 스캐닝 기술, 이를테면, 고정형 또는 적응성 스캔 오더들은 2차원 비디오 블록들로부터 하나 이상의 직렬화된 계수들의 1 차원 벡터들을 정의하기 위하여 양자화된 변환 계수들에 대해 수행된다. 예를 들어, 본원에 설명된 기술들에 따르면, 고정형 및 적응성 스캔 기술들 양쪽 모두가 비디오 블록의 상이한 계수들에 대해 이용될 수 있다. 하나 이상의 직렬화된 1차원 벡터들을 생성하도록 스캐닝되면, 스캐닝된 계수들은 임의의 신택스 정보와 함께 엔트로피 코딩된다.
인코딩 프로세스의 부분으로서, 인코딩된 비디오 블록들은 후속하는 비디오 블록들의 후속 예측 기반 코딩에 이용되는 비디오 데이터를 생성하도록 디코딩된다. 이 스테이지에서, 비디오 품질을 향상시키기 위하여, 그리고 디코딩된 비디오로부터 블록화 또는 다른 아티팩트들을 제거하기 위하여 예를 들어, 디코딩된 비디오로부터 필터링을 채용할 수 있다. 이 필터링은 선택적으로 인 루프 또는 포스트 루프이다. 인 루프 필터링에서는, 재구성된 비디오 데이터의 필터링이 코딩된 루프에서 발생하는데 이는 필터링된 데이터가 후속 이미지 데이터의 예측에 있어서 후속 이용을 위하여 인코더 또는 디코더에 의해 저장됨을 의미한다. 이와 대조적으로, 포스트 루프 필터링에서는, 재구성된 비디오 데이터의 필터링이 코딩된 루프의 외부에서 발생하는데 이는 데이터의 필터링되지 않은 버전들이 후속의 이미지 데이터의 예측에 있어서 후속 이용을 위하여 인코더 또는 디코더에 의해 저장됨을 의미한다.
도 2 는 본 개시물에 따르는 예시적인 비디오 인코더 (250) 를 나타내는 블록도이다. 비디오 인코더 (250) 는 소스 디바이스 (100) 의 비디오 인코더 (122), 또는 상이한 디바이스의 비디오 인코더에 대응할 수 있다. 도 2 에 도시된 바와 같이, 비디오 인코더 (250) 는 예측 모듈 (240), 가산기 (241 및 246) 및 메모리 (245) 를 포함한다. 비디오 인코더 (250) 는 또한 변환 모듈 (242) 및 양자화 모듈 (243) 뿐만 아니라 역양자화 모듈 (248) 및 역 변환 모듈 (247) 을 포함한다. 비디오 인코더 (250) 는 또한 엔트로피 코딩 모듈 (244) 를 포함한다. 엔트로피 코딩 모듈 (244) 는 스캔 모듈 (260) 을 포함한다.
인코딩 프로세스 동안에, 비디오 인코더 (250) 는 코딩될 비디오 블록을 수신하고, 예측 모듈 (240) 은 예측성 코딩 기술을 수행한다. 인터 코딩에서는, 예측 모듈 (240) 은 예측 블록을 정의하기 위하여, 인코딩될 비디오 블록을 하나 이상의 비디오 참조 프레임들 또는 슬라이스들에서의 여러 블록들에 비교한다. 인트라 비코딩에서는, 예측 모듈 (240) 은 비디오 데이터의 동일한 프레임, 슬라이스 또는 다른 유닛 내의 이웃하는 데이터에 기초하여 예측 블록을 생성한다. 예측 모듈 (240) 은 예측 블록을 출력하고 가산기 (241) 는 잔여 블록을 생성하기 위하여, 코딩될 비디오 블록으로부터 예측 블록을 감산한다.
본 개시물의 몇몇 양태들에 따르면, 인터 코딩에서는, 예측 모듈 (240) 은 예측 블록에 대해 포인팅하는 모션 벡터를 식별하고 모션 벡터에 기초하여 예측 블록을 생성하는 모션 추정 및 모션 보상 모듈들 (도 2 에 도시되지 않음) 을 포함한다. 통상적으로, 모션 추정은 모션 벡터를 생성하는 프로세스인 것으로 고려되며, 이는 모션을 추정한다. 예를 들어, 모션 벡터는 현재 프레임 내에서의 코딩될 현재 블록에 대한, 예측 프레임 내에서의 예측 블록의 변위를 나타낼 수 있다. 모션 보상은 통상적으로, 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치 또는 생성하는 프로세스로서 고려된다. 인트라 코딩에서, 예측 모듈 (240) 은 비디오 데이터의 동일한 프레임, 슬라이스, 또는 다른 유닛 내에서 이웃하는 데이터에 기초하여 예측 블록을 생성한다. 하나 이상의 인트라 예측 모드들은 인트라 예측 블록이 정의될 수 있는 방법을 가능성있게 정의할 수 있다.
몇몇 실시예들에서, 인터 코딩에 대한 모션 보상은 서브픽셀 분해능에 대한 보간법을 포함한다. 예를 들어, 예측 모듈 (240) 에 의해 생성되어진 보간된 예측 데이터는 하프 픽셀 분해능, 쿼터 픽셀 분해능, 또는 보다 미세한 분해능으로 보간된다. 이는 모션 추정이 이러한 서브 픽셀 분해능에 대한 비디오 블록들의 모션을 추정하도록 허용한다.
예측 모듈 (240) 이 예측 블록을 출력한 후 그리고 잔여 블록을 생성하기 위하여 가산기 (241) 가 코딩될 비디오 블록으로부터 예측 블록을 감산한 후, 변환 모듈 (242) 은 잔여 블록에 변환을 적용한다. 변환은 선택적으로 이산 코사인 변환 (DCT), 정수 변환, 또는 ITU H.264 표준, HVEC 표준 등에 의해 정의되는 바와 같은 개념적으로 유사한 변환을 포함한다. 몇몇 실시예들에서, 변환 모듈 (242) 은 상이하게 사이징된 변환들을 수행하고 코딩 효율성 및 향상된 압축을 위하여 상이한 사이즈들의 변환들을 선택한다. 웨이블릿 변환들, 정수 변환들, 서브대역 변환들 또는 다른 유형의 변환들이 또한 이용될 수 있다. 어느 경우이든, 변환 모듈 (242) 은 잔여 픽셀 값들의 잔여 블록에 특정 변환을 적용하여, 잔여 변환 계수들의 블록을 생성한다. 변환은 픽셀 도메인으로부터 주파수 도메인으로 잔여 픽셀 값 정보를 컨버팅한다.
역 양자화 모듈 (248) 및 역 변환 모듈 (247) 은 역 양자화 및 역 변환을 각각 적용하여, 픽셀 도메인에서 잔여 블록을 재구성한다. 가산기 (246) 는 재구성된 잔여 블록을 예측 블록 (240) 에 의해 생성된 예측 블록에 가산하여, 메모리 (245) 에서의 저장을 위하여 재구성된 비디오 블록을 생성한다. 필터 모듈 (249) 은 재구성된 비디오 블록들에 대하여 인 루프 필터링 또는 포스트 루프 필터링을 가능성있게 수행한다.
몇몇 실시예들에서, 메모리 (245) 는 인코딩될 다른 프레임들의 블록들에 대한 모션 추정에 이용하기 위하여, 블록들의 프레임 또는 슬라이스를 저장한다. 이러한 저장 전에, 인 루프 필터링의 경우에, 필터 모듈 (249) 은 비디오 품질을 향상시키기 위하여 비디오 블록에 필터링을 적용한다. 필터 모듈 (249) 에 의한 이러한 필터링은 블록화 또는 다른 아티팩트들을 감소시킨다. 또한, 필터링은 코딩될 비디오 블록들에 대하여 근접 매칭을 포함하는 예측적 비디오 블록들을 생성함으로써 압축을 향상시킨다. 필터링된 데이터가 디코딩된 데이터로서 출력되지만 필터링되지 않은 데이터가 예측 모듈 (240) 에 의해 이용되도록 필터링이 또한 포스트 루프를 수행받을 수 있다.
특정 실시예들에서, 양자화 모듈 (243) 은 (예를 들어, 변환 모듈 (242) 로부터의) 잔여 변환 계수들을 양자화하여, 비트 레이트를 추가로 감소시킨다. 예를들어, 양자화 모듈 (243) 은 계수들 각각을 코딩하는데 이용된 비트들의 수를 제한한다. 양자화 후에, 엔트로피 인코딩 모듈 (244) 은 데이터를 스캔 및 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 모듈 (244) 은 하나 이상의 직렬화된 1 차원 벡터들을 생성하기 위하여 2 차원 표현으로부터 양자화된 계수 블록을 스캔할 수 있다. 예를 들어 스캔 모듈 (260) 은 양자화된 계수 블록을 나타내는 2 차원 매트릭스의 스캔을 수행할 수 있다.
이 스캐닝 프로세스에 이어서, 엔트로피 인코딩 모듈 (244) 은 본원에 설명된 바와 같이 엔트로피 인코딩 방법에 따라 (임의의 신택스 엘리먼트들과 함께) 양자화된 변환 계수들을 인코딩하여 데이터를 추가로 압축한다. 이 실시예에서, 엔트로피 인코딩된 비트스트림 내에 포함된 신택스 정보는 예측 모듈 (240) 로부터 예측 신택스, 이를 테면, 인트라 코딩을 위한 예측 모드들 또는 인터 코딩을 위한 모션 벡터들을 포함한다. 엔트로피 인코딩된 비트스트림 내에 포함된 신택스 정보는 예측 모듈 (240) 에 의해 보간 적용되거나 또는 필터 모듈 (249) 에 의해 필터 적용되도록 필터 정보를 포함한다. 추가로, 엔트로피 코딩 비트스트림 내에 포함된 신택스 정보는 또한 하나 이상의 신택스 엘리먼트들 (또는 다른 정보) 를 나타내는 하나 이상의 VLC 코드 워드들을 포함할 수 있다.
엔트로피 인코딩 모듈 (244) 에 의한 엔트로피 코딩에 이어서, 인코딩된 비디오는 다른 디바이스로 송신되거나 또는 추후 송신 또는 취출을 위하여 아카이브된다. 예를 들어, 디코더는 인코딩 모듈 (244) 에 의해 엔트로피 방식으로 생성되는 인코딩된 비디오의 변환 계수들의 1 차원 벡터를 이용하여, 비디오 데이터의 블록을 나타내는 2 차원 매트릭스를 재구성할 수 있다.
도 3 은 본원에 설명된 방식으로 인코딩되는 비디오 시퀀스를 디코딩하는 비디오 디코더 (350) 의 일 실시예를 나타내는 블록도이다. 수신된 비디오 시퀀스는 이미지 프레임들의 인코딩된 세트, 프레임 슬라이스들의 세트, 공통 코딩된 픽쳐들의 그룹들 (group of pictures; GOPs), 또는 인코딩된 비디오 블록들을 포함하는 광범위한 코딩된 비디오 유닛들 및 이러한 비디오 블록들을 디코딩하는 방법을 정의하는 신택스 정보를 선택적으로 포함한다.
도 3 에 나타낸 비디오 디코더 (350) 는 도 2 의 엔트로피 인코딩 모듈 (244) 에 의해 수행된 인코딩의 가역적인 (reciprocal) 디코딩 기능을 수행하는 엔트로피 디코딩 모듈 (344) 를 포함한다. 몇몇 실시예들에서, 엔트로피 디코딩 모듈 (344) 은 1차원 직렬화된 포맷의 엔트로피 인코딩된 비디오 블록들을 2 차원 블록 포맷으로 다시 컨버팅한다. 벡터들의 수 및 사이즈 뿐만 아니라 비디오 블록들에 대하여 정의된 스캔 오더는 2 차원 블록이 재구성되는 방법을 정의한다.
도 3 에 나타낸 바와 같이, 비디오 디코더는 필터 모듈 (349) 을 포함한다. 필터 모듈 (349) 은 재구성된 비디오 블록들에 대해 인 루프 또는 포스트 루프 필터링을 수행할 수 있다. 비디오 디코더 (350) 는 또한 예측 모듈 (340), 역 양자화 모듈 (343), 역 변환 모듈 (342), 메모리 (345) 및 합산기 (346) 를 포함한다.
광범위한 비디오 압축 기술들 및 표준들이 공간 및 시간 예측을 수행하여 입력 비디오 신호들에 대해 내재된 리던던시를 감소 또는 제거한다. 위에 설명된 바와 같이, 입력 비디오 블록이 공간 예측 (즉, 인트라 예측) 및/또는 시간 예측 (즉, 인터 예측 또는 모션 추정) 을 이용하여 예측된다. 본원에 설명된 예측 모듈은 일반적으로, 소정의 입력 비디오 모듈에 대하여 바람직한 예측 모드를 선택하기 위하여 모드 결정 모듈 (도시 생략) 을 포함한다. 모드 선택은 여러 팩터들을 고려하는데, 이를 테면, 블록이 인트라 코딩되지는 인터 코딩되는지 여부, 인트라 코딩이 이용되는 경우 예측 블록 사이즈 및 예측 모드, 및 인터 코딩이 이용되는 경우 모션 파티션 사이즈 및 모션 벡터들을 고려한다. 예측 블록은 입력 비디오 블록으로부터 추출되고, 그 후, 변환 및 양자화가 상술한 바와 같이 잔여 비디오 블록에 대해 적용된다.
모드 정보와 함께 양자화된 계수들은 비디오 비트스트림을 형성하도록 엔트로피 인코딩될 수 있다. 양자화된 계수들은 또한 역 양자화되고 역 변환되어, 재구성된 잔여 블록을 형성하며 이 재구성된 잔여 블록은 예측 비디오 블록 (선택된 코딩 모드에 의존하는 인트라 예측 블록 또는 모션 보상 블록) 에 다시 가산되어 재구성된 비디오 블록이 형성된다. 인 루프 또는 포스트 루프 필터화 방법들이 재구성된 비디오 신호에서의 비쥬얼 아티팩트들을 감소시키도록 적용가능하다. 재구성된 비디오 블록은 추후 비디오 블록들의 코딩의 이용을 위하여 참조 프레임 버퍼 (즉, 메모리) 에 최종적으로 저장된다.
몇몇 실시예들에서, 비디오 프레임의 소정의 리프 레벨 블록의 계수들이 지그재그 스캐닝 기술에 따라 오더링 (스캐닝) 된다. 이러한 기술이 인코더 (250) 에 의해 이용되어 1 차원 오더링된 계수 벡터가 생성된다. 지그재그 스캐닝 기술은 블록의 최좌측 상단에서 시작하여, 블록의 최좌측 하단으로 지그재그 패턴으로 스캐닝을 진행하는 것을 포함한다.
지그재그 스캐닝 기술에 따르면, 최대 에너지를 갖는 변환 계수들 (예를 들어, 최대 변환 값) 이 낮은 주파수 변환 기능들에 대응하고 블록의 좌측 상단을 향하여 로케이트되는 것으로 추정한다. 이에 의해, 지그재그 스캐닝에 기초하여 생성된 계수 벡터 (예를 들어, 1 차원 계수 벡터) 에 대해, 더 큰 크기의 계수들은 벡터의 시작부분을 향하여 나타나는 경향이 높은 것으로 나타난다. 또한 계수 벡터가 양자화된 후, 가장 낮은 에너지 계수들이 제로와 동일한 것으로 나타난다. 몇몇 실시예들에서, 계수 스캐닝은 계수 코딩 동안에 적응된다. 예를 들어, 스캔에 있어서, 비제로 계수들이 보다 빈번하게 발생하는 포지션들에 더 낮은 수가 할당된다.
몇몇 실시예들에 따르면, 인코더 (250) 는 변환 계수들의 역 지그재그 스캔을 수행한다. 역 지그재그 스캔을 수행하기 위하여, 인코더 (250) 는 마지막 비제로 계수 (예를 들어, 블록의 좌측 상단포지션으로부터 가장 먼 비제로 계수) 에 대응하는 로케이션에서 인코딩을 시작한다. 위에 설명된 지그재그 스캔의 실시예와 달리, 역 지그재그 스캔의 실시예에 따르면, 인코더 (250) 는 마지막 비제로 계수로부터 (즉, 블록의 우측 하단에서) 블록의 좌측 상단 포지션으로 지그재그 패턴으로 코딩한다. 몇몇 실시예들에서, 인코더 (250) 는 하나 이상의 이미 코딩된 계수들의 크기에 기초하여 코딩 레벨 모드과 런 코딩 모드 간을 전환하도록 구성된다.
변환 계수들의 역 지그재그 스캔에 따르면, 인코더 (250) 는 마지막 비제로 계수 (즉, 역 스캔 오더의 첫번째 비제로 계수) 를 나타내는 last_pos 신택스 엘리먼트를 먼저 인코딩함으로써 비디오 데이터의 블록을 스캐닝한다. 몇몇 실시예들에서, 인코더 (250) 는 또한 level_ID 신택스 엘리먼트를 인코딩하는데, 이 신택스 엘리먼트는 마지막 비제로 계수의 크기가 1인지 또는 1보다 큰지 여부를 나타낸다. 몇몇 실시예들에서, 인코더 (250) 는 last_pos 및 level_ID 신택스 엘리먼트들을 함께 VLC 코드워드로서 인코딩한다.
몇몇 실시예들에서, level_ID 및 last_pos 신택스 엘리먼트들을 코딩하기 위하여, 인코더 (250) 는 last_pos 및 level_ID 신택스 엘리먼트들에 대한 값들을 결정하고, 이 결정된 값들을 이용하여 코드 넘버 (cn) 를 결정한다. 코드 넘버 (cn) 는 level_ID 및 last_pos 신택스 엘리먼트들을 나타내는 VLC 코드워드를 결정하기 위하여 복수의 VLC 테이블들 중 선택된 VLC 테이블 내에 입력될 수 있는 엔트리 값을 포함한다. 몇몇 실시예들에서, 인코더 (250) 는 메모리에 저장된 복수의 매핑 테이블들 중 한 매핑 테이블을 이용하는 것에 기초하여 코드 넘버 (cn) 를 결정하는데, 이 매핑 테이블은 level_ID 와 last_pos 신택스 엘리먼트들과 코드 넘버 (cn) 사이의 관계를 정의한다. 다른 실시예들에서, 인코더 (250) 는 level_ID 와 last_pos 신택스 엘리먼트들과 코드 넘버 (cn) 사이의 관계를 정의하는 구조화 매핑에 기초하여 코드 넘버 (cn) 를 결정한다.
위에 설명된 실시예에 기술된 바와 같이, level_ID 와 last_pos 신택스 엘리먼트들을 나타내는 이러한 VLC 코드워드를 결정하기 위하여, 인코더 (250) 는 메모리에 저장된 복수의 VLC 테이블들 중 한 VLC 테이블을 선택하고 그 결정된 코드 넘버 (cn) 를 그 선택된 VLC 테이블에 입력하여 VLC 코드워드를 결정한다. 몇몇 실시예들에서, 인코더 (250) 는 VLC 테이블 인덱스 값에 기초하여 복수의 VLC 테이블 중에서 한 VLC 테이블을 선택한다. VLC 테이블 인덱스 값은 코드 넘버 (cn) 를 입력하여 level_ID 와 last_pos 신택스 엘리먼트들을 나타내는 VLC 코드워드를 결정하기 위해 인코더 (250) 가 복수의 VLC 테이블들 중 어느 것을 이용해야 하는지를 나타낸다.
예를 들어, 값 vlcTableIndex 은 VLC 테이블들의 어레이의 현재 VLC 테이블의 인덱스를 나타내는데 이용될 수 있다. 이러한 VLC 테이블들의 어레이는 arrayVLCTableNum 로 지칭될 수 있다. 인덱스 값 vlcTableIndex 에 기초하여, 복수의 VLC 테이블들 중 한 테이블은 arrayVLCTableNum[vlcTableIndex] 로서 표현될 수 있다. 위에 설명된 실시예들에서 기술된 바와 같이, 인코더 (250) 는 변환 계수를 코딩하기 위해 값 arrayVLCTableNum[vlcTableIndex] 에 의해 표현되는 특정 테이블 내에 코드 넘버 (cn) 를 입력한다.
몇몇 실시예들에서, 메모리에 저장된 복수의 VLC 테이블들은 하나 이상의 코드워드 길이 분포 특징들에 기초하여 배열된다. 보다 구체적으로, VLC 테이블들 각각은 VLC 코드워드 길이들이 개개의 VLC 테이블에서 증가하는 상이한 "레이트" 를 나타낸다. 예를 들어, 도 4 의 VLC 매핑 테이블은 4 개의 VLC 테이블들 (VLC0-VLC3) 중에서 한 VLC 테이블을 선택하는 일 실시예를 나타낸다.
도 4 의 실시예에 따르면, VLC 테이블들 (VLC0-VLC3) 의 몇몇 VLC 코드워드들은 하나 이상의 "x" 심볼들이 뒤따르고, 심볼들 각각은 테이블 내의 VLC 코드워드들의 개개의 길이를 나타낸다. 예를 들어, 도 4 의 VLC2 에서의 VLC 코드워드 예 1xx 는 코드 넘버들 (0-3) 과 연관된 4 VLC 코드워드들:
100
101
110
111
을 나타낸다.
도 4 의 실시예에 나타낸 바와 같이, VLC 테이블 (VLC 0) 의 개개의 코드워드들의 길이가 증가하는 레이트는 VLC 테이블 (VLC 1) 의 개개의 코드워드들의 길이가 증가하는 레이트보다 더 빠르며, 이어서 이 VLC 1의 코드워드들의 길이가 증가하는 레이트는 VLC 테이블 (VLC 2) 의 개개의 코드워드들의 길이가 증가하는 레이트보다 더 빠르고 이어서 이 VLC 2 의 코드워드들의 길이가 증가하는 레이트는 VLC 테이블 VLC 3 의 개개의 코드워드의 길이가 증가하는 레이트보다 더 빠르다. 몇몇 실시예들에서, 비디오 데이터의 블록에 대한 last_pos 및 level_ID 신택스 엘리먼트들을 인코딩하기 위하여, 도 4 에 나타낸 VLC 테이블들 0-3 의 여러 VLC 코드워드 길이 "스피드" 중에서 선택하는 것이 바람직하다.
위에 기술된 바와 같이, 몇몇 실시예들에서, VLC 테이블은 VLC 테이블 인덱스 값에 기초하여 last_pos 및 level_ID 신택스 엘리먼트를 인코딩하기 위해 복수의 VLC 테이블들 (예를 들어, 도 4 의 VLC 테이블들 0-3) 중에서 선택될 수 있다. 몇몇 실시예들에서, 비디오 데이터의 블록들이 인코더 (250) 에 의해 인코딩되고 있을 때, 인코더 (250) 는 VLC 테이블 인덱스 값을 업데이트한다.
예를 들어, 16x16 보다 큰 사이즈를 가진 루마 블록에 대해, 인코더는 다음 규칙들:
vlcTableIndex += (cn/4 == vlcTableIndex? 0 : (cn/4 < vlcTableIndex? -1 : 1));
vlcTableIndex = Min(vlcTableIndex, 16);
에 기초하여 VLC 테이블 인덱스 값을 업데이트하도록 구성될 수 있다.
이 실시예에 따르면, 비디오 인코더가 (즉, 위에서 기술된 바와 같이) 코드 넘버 (cn) 를 결정하고 코드 넘버 (cn) 를 이용하여 VLC 코드워드를 결정할 때마다, 인코더는 현재 VLC 테이블 인덱스 값을, 스케일링 팩터 (이 실시예에서는 4) 에 의해 나누어진 코드 넘버 (cn) 에 비교한다. 현재 VLC 테이블 인덱스 값이 스케일링 팩터로 나누어진 코드 넘버 (cn) 과 동일한 경우, 인코더 (250) 는 VLC 테이블 인덱스 값을 변경하지 않는다. 이 실시예에서, 현재 VLC 테이블 인덱스 값이 스케일링 팩터로 나누어진 코드 넘버 (cn) 보다 큰 경우, 인코더 (250) 는 VLC 테이블 인덱스 값을 감소시킨다 (VLC 테이블 인덱스 값에서 1 을 감산한다). 현재 VLC 테이블 인덱스 값이 스케일링 팩터로 나누어진 코드 넘버 (cn) 보다 작은 경우, 인코더 (250) 는 VLC 테이블 인덱스 값을 증가시킨다 (VLC 테이블 인덱스 값에 1 을 가산한다). 상기 실시예에 또한 도시된 바와 같이, 인코더 (250) 는 업데이트된 (즉, 증분, 감분 또는 변경되지 않은) VLC 테이블 인덱스 값을 미리 정해진 임계값 (즉, 위의 실시예에서는 16) 에 추가로 비교한다. 업데이트된 VLC 테이블 인덱스 값이 미리 정해진 임계값보다 크다면, 인코더 (250) 는 VLC 테이블 인덱스 값에 미리 정해진 임계의 값을 할당한다. 이 방식으로, 인코더 (250) 는 VLC 테이블 인덱스 값이 미리 정해진 임계값을 초과하지 못하게 한다.
인코더 (250) 가 위의 실시예에서 설명된 바와 같이, VLC 테이블 인덱스 값을 업데이트하였다면, 인코더 (250) 는 업데이트된 VLC 테이블 인덱스 값을 이용하여, 비디오 데이터의 다른 블록 (인코더에 의해 인코딩된 비디오 데이터의 다음 블록) 에 대한 last_pos 및 level_ID 신택스 엘리먼트들을 인코딩한다 (예를 들어, VLC 테이블을 선택한다). 위의 도 4 의 실시예를 다시 참조하여 보면, 인코더 (250) 는 업데이트된 VLC 테이블 인덱스 값을 이용하여 VLC 테이블들 0-3 중에서 선택한다. 예를 들어, 현재의 VLC 테이블 인덱스 값이 (도 4 의 제 3 컬럼에서의 VLC 테이블 (테이블 VLC2) 을 선택하기 위해) 2 의 값을 갖고 VLC 테이블 인덱스 값이 스케일 팩터에 의해 나누어진 코드 넘버 (cn) 보다 작은 경우, 인코더 (250) 는 1 의 값을 갖도록 VLC 테이블 인덱스 값을 감분한다. 이 실시예에 따르면, 비디오 데이터의 다음 블록에 대해, 인코더 (250) 는 1 의 감분된 VLC 테이블 인덱스 값에 기초하여 테이블 VLC1 을 선택한다.
몇몇 실시예들에서, 16x16 보다 작은 루마 또는 크로마 블록들에 대해, 인코더 (250) 는 VLC 테이블 인덱스 값을 업데이트하도록 다음 규칙들:
vlcTableIndex += (cn == vlcTableIndex? 0 : (cn < vlcTableIndex? -1 : 1));
vlcTableIndex = Min(vlcTableIndex, 16);
을 이용한다.
이 실시예에 따르면, 인코더 (250) 는 현재 VLC 테이블 인덱스 값을 스케일링 팩터에 의해 나누어진 코드 넘버 (cn) 에 비교하지 않는다. 그 대신에, 8x8 또는 이보다 작은 루마 또는 크로마 블록에 대하여, 인코더 (250) 는 현재의 VLC 테이블 인덱스 값을 코드 넘버 (cn) 자체에 비교하고, 비교에 기초하여 VLC 테이블 인덱스 값을 업데이트한다 (예를 들어, 증분, 감분 또는 유지한다). 위에 기술된 16x16 루마 블록 예에 따라 설명된 바와 같이, 인코더 (250) 는 업데이트된 (즉, 증분, 감분 또는 변경되지 않은) VLC 테이블 인덱스 값을 미리 정해진 임계값에 선택적으로 비교한다. 업데이트된 VLC 테이블 인덱스 값이 미리 정해진 임계값보다 크면, 인코더 (250) 는 미리 정해진 임계의 값을 VLC 테이블 인덱스 값에 할당하도록 구성될 수 있다.
위에 설명된 기술들에 따르면, 인코더 (250) 는 상이한 사이즈들의 루마 및 크로마 블록들을 인코딩하도록 구성될 수 있다. 예를 들어, 본원에 설명된 기술들에 따르면, 사이즈 8x8 이상의 루마 블록에 대하여, 인코더 (250) 는 스케일링 팩터에 기초하여 VLC 테이블 인덱스 값을 업데이트할 수 있다. 예를 들어, 인코더는 위에 설명된 바와 같이, VLC 테이블 인덱스 값을, 스케일링 팩터로 나누어진 코드 넘버에 비교하는 것에 기초하여 VLC 테이블 인덱스 값을 적응적으로 업데이트할 수 있다. 그러나, 사이즈 8x8 이상을 갖는 크로마 블록에 대해, 인코더는 스케일링 팩터를 이용하지 못한다. 그 대신에, 인코더는 스케일링 팩터에 의해 코드 넘버를 나누지 않고, VLC 테이블 인덱스 값을 코드 넘버에 비교하는 것에 기초하여 VLC 테이블 인덱스 값을 적응적으로 업데이트한다. 이 방식으로, 본원에 설명된 인코더는 보다 큰 사이즈 (예를 들어, 사이즈 8x8 이상) 의 루마 및 크로마 블록들 양쪽 모두를 인코딩하도록 구성될 수 있다.
일 실시예로서, 본원에 설명된 기술들에 따르면, 다음 규칙들이 값 vlcTableIndex 을 적응적으로 업데이트하도록 이용된다:
8x8 보다 큰 사이즈 (즉, 16x16, 32x32, 64x64) 를 갖는 루마 블록에 대해:
vlcTableIndex += (cn/4 == vlcTableIndex? 0 : (cn/4 < vlcTableIndex? -1 : 1));
vlcTableIndex = Min(vlcTableIndex, 16);
(사이즈 16x16 이상의 크로마 블록을 포함하는) 다른 블록들에 대해:
vlcTableIndex += (cn == vlcTableIndex? 0 : (cn < vlcTableIndex? -1 : 1));
vlcTableIndex = Min(vlcTableIndex, 16);
본원에 설명된 기술들에 따르는 몇몇 실시예들에서, 적응적으로 업데이트된 VLC 테이블 인덱스 값이 last_pos 및 level_ID 신텍스 엘리먼트들을 인코딩하기 위해 VLC 테이블을 선택하는데 이용되는 VLC 테이블들의 어레이는 루마 블록들에 대한 블록 사이즈에 의존하며 크로마 블록들에 대한 블록 사이즈에 의존하지 않는다. 예를 들어, 크로마 블록들에 대해, 인코더 (250) 는 크로마 블록의 사이즈와 무관하게, VLC 테이블들의 동일한 어레이 (예를 들어, arrayVLCTableNum) 를 이용하여 last_pos 및 level_ID 신택스 엘리먼트들을 코딩할 수 있다. 이 실시예에 따르면, 루마 블록들에 대해, VLC 테이블들의 상이한 어레이 (예를 들어, 상이한 arrayVLCTableNum) 는 개개의 루마 블록의 사이즈에 의존하여, 루마 블록들을 코딩하기 위해 선택되어 이용될 수 있다.
도 5 는 본 개시물의 하나 이상의 양태들에 따르는 비디오 데이터의 블록을 코딩하는 방법의 일 실시예를 나타내는 흐름도이다. 도 5 의 방법은 비디오 데이터의 블록을 인코딩하기 위해 도 2 에 나타낸 인코더 (250) 에 의해 수행될 수 있다. 도 5 의 방법은 비디오 디코더의 블록을 디코딩하기 위해 도 3 에 나타낸 디코더 (350) 를 포함한 임의의 디바이스에 의해 수행될 수 있다.
본 개시물의 양태들에 따르는 도 5 의 실시예에 도시된 바와 같이, 인코더 (250) 는 비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정한다 (501). 비디오 데이터의 블록이 루마 블록인 경우, 인코더 (250) 는 코드 넘버 (cn) 및 스케일 팩터의 값에 기초하여 복수의 VLC 테이블들 중 한 VLC 테이블을 선택하는데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트한다 (502). 비디오 데이터의 블록이 크로마 블록인 경우, 인코더 (250) 는 스케일링 팩터를 이용하지 않고 코드 넘버 (cn) 에 기초하여 VLC 테이블 인덱스 값을 적응적으로 업데이트한다 (503).
하나 이상의 실시예들에서, Q본원에 설명된 기능들은 하드웨어, 이를 테면, 특정 하드웨어 컴포넌트들, 또는 프로세서로 적어도 부분적으로 구현된다. 보다 구체적으로, 본 기술은 하드웨어, 프로세서들, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 예를 들어, 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 그것을 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들의 실시예들은, 데이터 저장 매체들과 같은 유형의 (tangible) 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예컨대 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적 (non-transitory) 인 유형의 컴퓨터-판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응한다. 데이터 저장 매체들은 본 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들을 포함한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함한다.
비제한적인 예로, 그러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 소망의 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체, 즉, 컴퓨터 판독가능 전송 매체로 적절히 칭해진다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 자원으로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 대신 비-일시적 (non-transient), 유형의 저장 매체들을 지향하고 있음이 이해되어야 한다. 디스크 (disk 및 disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 레이저들로써 광적으로 데이터를 재생한다. 상기한 것들의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 통상적으로 하나 이상의 프로세서들, 이를테면 하나 이상의 중앙 프로세싱 유닛 (CPU), 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행된다. 따라서, 본원에서 사용되는 바와 같은 용어 "프로세서"는 앞서의 구조 또는 본원에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 말할 수 있다. 또한, 일부 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되는, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 완전히 구현될 수 있다.
당해 기술 분야의 숙련된 자는 본 개시내용의 기법들이 위의 실시예들로 제한되지 않으며, 무선 핸드셋, 집적회로 (IC) 또는 한 세트의 IC들 (예컨대, 칩 셋) 을 포함하여, 매우 다양한 디바이스들 또는 장치들로 구현될 수 있음을 알고 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호연동 하드웨어 유닛들의 컬렉션에 의해 제공될 수 있다.
다양한 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (19)

  1. 비디오 데이터의 블록을 코딩하는 방법으로서,
    상기 비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정하는 단계;
    상기 비디오 데이터의 블록이 루마 블록인 경우, 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 가변 길이 코딩 (variable length coding; VLC) 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계; 및
    상기 비디오 데이터의 블록이 크로마 블록인 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계를 포함하고,
    상기 코드 넘버 (cn) 는 last_pos 엘리먼트 및 level_ID 엘리먼트에 기초하여 결정되고, 상기 last_pos 엘리먼트는 스캔 순서에서 상기 비디오 데이터의 블록의 마지막 비제로 변환 계수의 포지션을 나타내고, 상기 level_ID 엘리먼트는 상기 마지막 비제로 변환 계수의 크기가 1 인지 또는 1 보다 큰지 여부를 나타내는, 비디오 데이터의 블록을 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 비디오 데이터의 복수의 크로마 블록들을 인코딩하는 단계; 및
    각각의 크로마 블록에 대해, 상기 크로마 블록의 사이즈와 무관하게, 동일한 상기 복수의 VLC 테이블들로부터 상기 VLC 테이블을 선택하는 단계를 더 포함하는, 비디오 데이터의 블록을 코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 비디오 데이터의 복수의 루마 블록들을 인코딩하는 단계; 및
    각각의 루마 블록들에 대해, 상기 루마 블록의 사이즈에 기초하여 하나 보다 많은 상기 복수의 VLC 테이블들 중 복수의 VLC 테이블들을 선택하는 단계를 더 포함하는, 비디오 데이터의 블록을 코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계는, 현재의 VLC 테이블 인덱스 값을, 상기 스케일링 팩터로 나누어진 상기 코드 넘버 (cn) 에 비교하는 단계를 포함하는, 비디오 데이터의 블록을 코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계는, 현재의 VLC 테이블 인덱스 값을 상기 코드 넘버 (cn) 에 비교하는 단계를 포함하는, 비디오 데이터의 블록을 코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계는,
    상기 비디오 데이터의 블록의 사이즈를 결정하는 단계; 및
    상기 비디오 데이터의 블록이 루마 블록이고 8x8 보다 큰 사이즈를 갖는 경우, 상기 코드 넘버 (cn) 및 상기 스케일링 팩터에 기초하여 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계를 포함하고,
    상기 비디오 데이터의 블록이 8x8 보다 큰 사이즈를 갖지 않는 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 단계를 더 포함하는, 비디오 데이터의 블록을 코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 방법은 컴퓨팅 디바이스의 프로세서에 의해 수행되는, 비디오 데이터의 블록을 코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 방법은 인코더에 의해 수행되고,
    업데이트된 상기 VLC 테이블 인덱스 값은 상기 비디오 데이터의 블록을 인코딩하는 데 이용되는, 비디오 데이터의 블록을 코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 방법은 디코더에 의해 수행되고,
    업데이트된 상기 VLC 테이블 인덱스 값은 상기 비디오 데이터의 블록을 디코딩하는 데 이용되는, 비디오 데이터의 블록을 코딩하는 방법.
  10. 비디오 데이터의 블록을 코딩하도록 구성된 디바이스로서,
    상기 비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정하고;
    상기 비디오 데이터의 블록이 루마 블록인 경우, 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 가변 길이 코드 (variable length coding; VLC) 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하고;
    상기 비디오 데이터의 블록이 크로마 블록인 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하도록 구성된 프로세서를 포함하고,
    상기 코드 넘버 (cn) 는 last_pos 엘리먼트 및 level_ID 엘리먼트에 기초하여 결정되고, 상기 last_pos 엘리먼트는 스캔 순서에서 상기 비디오 데이터의 블록의 마지막 비제로 변환 계수의 포지션을 나타내고, 상기 level_ID 엘리먼트는 상기 마지막 비제로 변환 계수의 크기가 1 인지 또는 1 보다 큰지 여부를 나타내는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    상기 비디오 데이터의 복수의 크로마 블록들을 인코딩하고;
    각각의 크로마 블록에 대해, 상기 크로마 블록의 사이즈와 무관하게, 동일한 상기 복수의 VLC 테이블들로부터 상기 VLC 테이블을 선택하도록 더 구성되는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  12. 제 10 항에 있어서,
    상기 프로세서는,
    상기 비디오 데이터의 복수의 루마 블록들을 인코딩하고;
    각각의 루마 블록들에 대해, 상기 루마 블록의 사이즈에 기초하여 하나 보다 많은 상기 복수의 VLC 테이블들 중 복수의 VLC 테이블들을 선택하도록 더 구성되는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  13. 제 10 항에 있어서,
    상기 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 것은, 현재의 VLC 테이블 인덱스 값을, 상기 스케일링 팩터로 나누어진 상기 코드 넘버 (cn) 에 비교하는 것을 포함하는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  14. 제 10 항에 있어서,
    상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 것은, 현재의 VLC 테이블 인덱스 값을 상기 코드 넘버 (cn) 에 비교하는 것을 포함하는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  15. 제 10 항에 있어서,
    코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하기 위해, 상기 프로세서는,
    상기 비디오 데이터의 블록의 사이즈를 결정하고;
    상기 비디오 데이터의 블록이 루마 블록이고 8x8 보다 큰 사이즈를 갖는 경우, 상기 코드 넘버 (cn) 및 상기 스케일링 팩터에 기초하여 복수의 VLC 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하도록 구성되고,
    상기 프로세서는 또한, 상기 비디오 데이터의 블록이 8x8 보다 큰 사이즈를 갖지 않는 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하도록 구성되는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  16. 제 10 항에 있어서,
    상기 디바이스는 인코더이고,
    업데이트된 상기 VLC 테이블 인덱스 값은 상기 비디오 데이터의 블록을 인코딩하는 데 이용되는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  17. 제 10 항에 있어서,
    상기 디바이스는 디코더이고,
    업데이트된 상기 VLC 테이블 인덱스 값은 상기 비디오 데이터의 블록을 디코딩하는 데 이용되는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
  18. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행시, 컴퓨팅 디바이스로 하여금,
    비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정하게 하고;
    상기 비디오 데이터의 블록이 루마 블록인 경우, 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 가변 길이 코드 (variable length coding; VLC) 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하게 하고;
    상기 비디오 데이터의 블록이 크로마 블록인 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하게 하고,
    상기 코드 넘버 (cn) 는 last_pos 엘리먼트 및 level_ID 엘리먼트에 기초하여 결정되고, 상기 last_pos 엘리먼트는 스캔 순서에서 상기 비디오 데이터의 블록의 마지막 비제로 변환 계수의 포지션을 나타내고, 상기 level_ID 엘리먼트는 상기 마지막 비제로 변환 계수의 크기가 1 인지 또는 1 보다 큰지 여부를 나타내는, 명령들을 저장하는 컴퓨터 판독가능 저장 매체.
  19. 비디오 데이터의 블록을 코딩하도록 구성된 디바이스로서,
    상기 비디오 데이터의 블록이 루마 블록인지 또는 크로마 블록인지의 여부를 결정하는 수단;
    상기 비디오 데이터의 블록이 루마 블록인 경우, 코드 넘버 (cn) 및 스케일링 팩터의 값에 기초하여, 복수의 가변 길이 코드 (variable length coding; VLC) 테이블들 중 VLC 테이블을 선택하는 데 이용되는 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 수단; 및
    상기 비디오 데이터의 블록이 크로마 블록인 경우, 상기 스케일링 팩터를 이용하지 않고 상기 코드 넘버 (cn) 에 기초하여 상기 VLC 테이블 인덱스 값을 적응적으로 업데이트하는 수단을 포함하고,
    상기 코드 넘버 (cn) 는 last_pos 엘리먼트 및 level_ID 엘리먼트에 기초하여 결정되고, 상기 last_pos 엘리먼트는 스캔 순서에서 상기 비디오 데이터의 블록의 마지막 비제로 변환 계수의 포지션을 나타내고, 상기 level_ID 엘리먼트는 상기 마지막 비제로 변환 계수의 크기가 1 인지 또는 1 보다 큰지 여부를 나타내는, 비디오 데이터의 블록을 코딩하도록 구성된 디바이스.
KR1020147002573A 2011-06-29 2012-06-29 루마 및 크로마 블록을 위한 vlc 계수 코딩 KR101650636B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161502794P 2011-06-29 2011-06-29
US61/502,794 2011-06-29
US201161552346P 2011-10-27 2011-10-27
US61/552,346 2011-10-27
US13/535,536 US9516316B2 (en) 2011-06-29 2012-06-28 VLC coefficient coding for large chroma block
US13/535,536 2012-06-28
PCT/US2012/044976 WO2013003741A1 (en) 2011-06-29 2012-06-29 Vlc coefficient coding for luma and chroma block

Publications (2)

Publication Number Publication Date
KR20140035507A KR20140035507A (ko) 2014-03-21
KR101650636B1 true KR101650636B1 (ko) 2016-08-23

Family

ID=46466967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147002573A KR101650636B1 (ko) 2011-06-29 2012-06-29 루마 및 크로마 블록을 위한 vlc 계수 코딩

Country Status (7)

Country Link
US (1) US9516316B2 (ko)
EP (1) EP2727347A1 (ko)
JP (1) JP5755808B2 (ko)
KR (1) KR101650636B1 (ko)
CN (1) CN103636207B (ko)
TW (1) TW201313031A (ko)
WO (1) WO2013003741A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9490839B2 (en) 2011-01-03 2016-11-08 Qualcomm Incorporated Variable length coding of video block coefficients
US9338456B2 (en) 2011-07-11 2016-05-10 Qualcomm Incorporated Coding syntax elements using VLC codewords
US9154782B2 (en) * 2013-09-16 2015-10-06 Magnum Semiconductor, Inc. Apparatuses and methods for adjusting coefficients using dead zones
US10349085B2 (en) 2016-02-15 2019-07-09 Qualcomm Incorporated Efficient parameter storage for compact multi-pass transforms
US10448053B2 (en) 2016-02-15 2019-10-15 Qualcomm Incorporated Multi-pass non-separable transforms for video coding
US10666984B2 (en) * 2016-03-08 2020-05-26 Qualcomm Incorporated Apparatus and method for vector-based entropy coding for display stream compression
US11044495B1 (en) 2018-02-13 2021-06-22 Cyborg Inc. Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation
US10986340B2 (en) * 2018-06-01 2021-04-20 Qualcomm Incorporated Coding adaptive multiple transform information for video coding
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding
US10491240B1 (en) * 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation
US10666986B1 (en) * 2019-03-08 2020-05-26 Sony Corporation Sub-block based entropy coding for embedded image codec

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5227878A (en) 1991-11-15 1993-07-13 At&T Bell Laboratories Adaptive coding and decoding of frames and fields of video
US5253055A (en) 1992-07-02 1993-10-12 At&T Bell Laboratories Efficient frequency scalable video encoding with coefficient selection
PT651574E (pt) 1993-03-24 2002-02-28 Sony Corp Processo e aparelho para codiicar/descodificar um vector de movimento e processo para codificacao/descodificacao de um sinal de imagem
FR2722041B1 (fr) 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
KR0139161B1 (ko) 1994-11-26 1998-05-15 김광호 가변장부호테이블의 심볼-부호어 재배정을 이용한 가변장 부호화/복호화 장치
JP3575508B2 (ja) 1996-03-04 2004-10-13 Kddi株式会社 符号化動画像再生装置
US5790706A (en) 1996-07-03 1998-08-04 Motorola, Inc. Method and apparatus for scanning of transform coefficients
US5821887A (en) 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
JP2870515B2 (ja) 1996-12-27 1999-03-17 日本電気株式会社 可変長符号化装置
US5995148A (en) 1997-02-14 1999-11-30 At&T Corp Video coder having scalar dependent variable length coder
US6219457B1 (en) 1998-05-26 2001-04-17 Silicon Graphics, Inc. Method and system for decoding data encoded in a variable length code word
JP2000134495A (ja) 1998-10-26 2000-05-12 Ricoh Co Ltd 色補正装置
US6958715B2 (en) 2001-02-20 2005-10-25 Texas Instruments Incorporated Variable length decoding system and method
EP1391121B1 (en) 2001-03-23 2012-08-15 Nokia Corporation Variable length coding
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
US6690307B2 (en) 2002-01-22 2004-02-10 Nokia Corporation Adaptive variable length coding of digital video
RU2354073C2 (ru) 2002-01-22 2009-04-27 Нокиа Корпорейшн Кодирование коэффициентов преобразования в кодерах и/или декодерах изображения и видеоданных
US7099387B2 (en) * 2002-03-22 2006-08-29 Realnetorks, Inc. Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses
ES2328916T3 (es) 2002-04-02 2009-11-19 Nokia Corporation Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video.
JP4368575B2 (ja) 2002-04-19 2009-11-18 パナソニック株式会社 可変長復号化方法、可変長復号化装置およびプログラム
JP3944225B2 (ja) 2002-04-26 2007-07-11 株式会社エヌ・ティ・ティ・ドコモ 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法、画像符号化プログラム及び画像復号プログラム
DK1487113T3 (da) 2002-05-02 2006-11-20 Fraunhofer Ges Forschung Kodning og afkodning af transformationskoefficienter i billede- eller videokodere
US6771193B2 (en) 2002-08-22 2004-08-03 International Business Machines Corporation System and methods for embedding additional data in compressed data streams
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7194137B2 (en) 2003-05-16 2007-03-20 Cisco Technology, Inc. Variable length coding method and apparatus for video compression
CN1214649C (zh) 2003-09-18 2005-08-10 中国科学院计算技术研究所 用于视频预测残差系数编码的熵编码方法
CN1886991A (zh) 2003-11-28 2006-12-27 皇家飞利浦电子股份有限公司 对位流进行编码或解码的方法和设备
EP1553779A1 (en) 2004-01-12 2005-07-13 Deutsche Thomson-Brandt GmbH Data reduction of video streams by selection of frames and partial deletion of transform coefficients
US7680349B2 (en) 2004-08-18 2010-03-16 Cisco Technology, Inc. Variable length coding for clustered transform coefficients in video compression
NO322043B1 (no) 2004-12-30 2006-08-07 Tandberg Telecom As Fremgangsmate for forenklet entropikoding
US8311119B2 (en) 2004-12-31 2012-11-13 Microsoft Corporation Adaptive coefficient scan order
US8599925B2 (en) 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
KR100868476B1 (ko) 2005-10-21 2008-11-12 한국전자통신연구원 적응적 스캐닝을 이용한 동영상 부호화/복호화 장치 및 그방법
WO2007063472A2 (en) 2005-11-30 2007-06-07 Koninklijke Philips Electronics N.V. Encoding method and apparatus applying coefficient reordering
US7345601B2 (en) 2005-12-21 2008-03-18 Texas Instruments Incorporated Variable length coding algorithm for multiple coding modes
EP1859630B1 (en) 2006-03-22 2014-10-22 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Coding scheme enabling precision-scalability
US8401082B2 (en) 2006-03-27 2013-03-19 Qualcomm Incorporated Methods and systems for refinement coefficient coding in video compression
US8275045B2 (en) * 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
JP5099404B2 (ja) 2006-08-14 2012-12-19 富士ゼロックス株式会社 画像処理装置、ルックアップテーブルの設定方法
CN101578628A (zh) 2006-09-26 2009-11-11 安布克斯英国有限公司 包含视频帧和辅助数据的位流的产生和处理
US8599926B2 (en) 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
KR100929089B1 (ko) 2006-11-28 2009-11-30 삼성전자주식회사 이동 통신 시스템에서 채널 품질 지시자 정보를 이용하여이동 단말의 속도를 추정하는 방법 및 장치
KR100908007B1 (ko) 2006-12-01 2009-07-16 삼성전자주식회사 무선 네트워크 시스템 및 상기 무선 네트워크상에서데이터를 송수신하는 방법
US7573405B2 (en) 2006-12-29 2009-08-11 Texas Instruments Incorporated System updating accumulated statistics coding variable values after multiple encodings
US8335261B2 (en) 2007-01-08 2012-12-18 Qualcomm Incorporated Variable length coding techniques for coded block patterns
ES2355850T3 (es) 2007-01-18 2011-03-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Flujo de datos de vídeo con calidad ajustable a escala.
KR100841338B1 (ko) 2007-02-27 2008-06-26 삼성전자주식회사 비디오 디코더를 위한 에뮬레이션 방지 바이트 제거 장치
US7486211B2 (en) 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
US7501964B2 (en) 2007-04-16 2009-03-10 Texas Instruments Incorporated Entropy coding for digital codecs
US8571104B2 (en) 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
US8428133B2 (en) 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
US8144784B2 (en) 2007-07-09 2012-03-27 Cisco Technology, Inc. Position coding for context-based adaptive variable length coding
US8502709B2 (en) 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications
US8204327B2 (en) 2007-10-01 2012-06-19 Cisco Technology, Inc. Context adaptive hybrid variable length coding
US8265162B2 (en) 2007-10-01 2012-09-11 Cisco Technology, Inc. Context adaptive position and amplitude coding of coefficients for video compression
JP2009111691A (ja) 2007-10-30 2009-05-21 Hitachi Ltd 画像符号化装置及び符号化方法、画像復号化装置及び復号化方法
NO328295B1 (no) 2007-12-20 2010-01-25 Tandberg Telecom As VLC-fremgangsmate og -innretning
TWI361009B (en) 2008-03-06 2012-03-21 Realtek Semiconductor Corp Method and apparatus for processing audio/vedio bi
KR20090097013A (ko) 2008-03-10 2009-09-15 삼성전자주식회사 영상 부호화장치 및 영상 복호화장치
KR101375668B1 (ko) 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
WO2010022023A1 (en) 2008-08-18 2010-02-25 Augusta Technology Usa, Inc. Combining transform coefficient decoding with variable length decoding
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
JP2010103969A (ja) 2008-09-25 2010-05-06 Renesas Technology Corp 画像復号方法、画像復号装置、画像符号化方法及び画像符号化装置
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
EP2182732A1 (en) 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
CA2742239A1 (en) 2008-11-07 2010-05-14 Mitsubishi Electric Corporation Image encoder and image decoder
RU2487473C2 (ru) 2008-12-03 2013-07-10 Нокиа Корпорейшн Переключение между режимами кодирования коэффициентов дискретного косинусного преобразования
US9391635B2 (en) 2009-05-15 2016-07-12 Texas Instruments Incorporated Block scanner and run-level encoder from AC to DC values
TW201128965A (en) 2009-05-19 2011-08-16 Nokia Corp Method for coding and an apparatus
US20110280314A1 (en) 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
US8934540B2 (en) 2010-07-20 2015-01-13 Cisco Technology, Inc. Video compression using multiple variable length coding methods for multiple types of transform coefficient blocks
US20120082230A1 (en) 2010-10-01 2012-04-05 Qualcomm Incorporated Variable length coding of video block coefficients
US20120236931A1 (en) 2010-12-23 2012-09-20 Qualcomm Incorporated Transform coefficient scan
US20120163471A1 (en) 2010-12-23 2012-06-28 Qualcomm Incorporated Variable length coding of video block coefficients
US9490839B2 (en) 2011-01-03 2016-11-08 Qualcomm Incorporated Variable length coding of video block coefficients
US8446301B2 (en) 2011-04-15 2013-05-21 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
US20130089138A1 (en) 2011-06-27 2013-04-11 Qualcomm Incorporated Coding syntax elements using vlc codewords
US9338456B2 (en) 2011-07-11 2016-05-10 Qualcomm Incorporated Coding syntax elements using VLC codewords

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
M. Karczewitz, et al. CE5: coefficient coding with LCEC for large blocks. JCT-VC of ITU-T and ISO/IEC. JCTVC-E383 Ver.5, Mar. 20, 2011, pp.1-4
S. Lee, et al. Efficient coefficient coding method for large transform in VLC mode. JCT-VC of ITU-T and ISO/IEC. JCTVC-C210 Ver.2, Oct. 5, 2010, pp.1-6
T. Wiegand, et al. WD3: Working Draft 3 of High-Efficiency Video Coding. JCT-VC of ITU-T and ISO/IEC. JCTVC-E603 Ver.8, Jun. 27, 2011, pp.1-215

Also Published As

Publication number Publication date
CN103636207A (zh) 2014-03-12
JP2014525169A (ja) 2014-09-25
CN103636207B (zh) 2018-03-09
US20130114669A1 (en) 2013-05-09
WO2013003741A1 (en) 2013-01-03
US9516316B2 (en) 2016-12-06
EP2727347A1 (en) 2014-05-07
JP5755808B2 (ja) 2015-07-29
TW201313031A (zh) 2013-03-16
KR20140035507A (ko) 2014-03-21

Similar Documents

Publication Publication Date Title
KR101650636B1 (ko) 루마 및 크로마 블록을 위한 vlc 계수 코딩
CN107071412B (zh) 由编码设备和解码设备执行的帧内预测方法
US8942282B2 (en) Variable length coding of coded block pattern (CBP) in video compression
TWI666916B (zh) 在一視訊寫碼處理中之係數階寫碼
KR101895652B1 (ko) 비디오 코딩을 위한 양자화 행렬들의 시그널링
US20120236931A1 (en) Transform coefficient scan
KR101710765B1 (ko) 비디오 압축에서 계수 레벨 코딩을 위한 콘텍스트들
US20120082230A1 (en) Variable length coding of video block coefficients
KR20160032119A (ko) 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화
US20130089138A1 (en) Coding syntax elements using vlc codewords
US20120163471A1 (en) Variable length coding of video block coefficients
EP2837181A1 (en) Group flag in transform coefficient coding for video coding
WO2012078767A1 (en) Codeword adaptation for variable length coding
KR101652183B1 (ko) Vlc 코드워드들을 이용한 코딩 구문 요소들
US9490839B2 (en) Variable length coding of video block coefficients

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