KR101354381B1 - 비디오 데이터의 코딩을 위한 가변 길이 코드들 - Google Patents

비디오 데이터의 코딩을 위한 가변 길이 코드들 Download PDF

Info

Publication number
KR101354381B1
KR101354381B1 KR1020127029391A KR20127029391A KR101354381B1 KR 101354381 B1 KR101354381 B1 KR 101354381B1 KR 1020127029391 A KR1020127029391 A KR 1020127029391A KR 20127029391 A KR20127029391 A KR 20127029391A KR 101354381 B1 KR101354381 B1 KR 101354381B1
Authority
KR
South Korea
Prior art keywords
run
level
codeword
symbol combination
vlc
Prior art date
Application number
KR1020127029391A
Other languages
English (en)
Other versions
KR20130006689A (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 KR20130006689A publication Critical patent/KR20130006689A/ko
Application granted granted Critical
Publication of KR101354381B1 publication Critical patent/KR101354381B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • 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/93Run-length coding

Landscapes

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

Abstract

엔트로피 코딩하는 방법 및 시스템은 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합을 검출하는 것에 응답하여, 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함하는 제 1 코드워드를 제 1 심볼 조합에 할당하는 것; 및 인접한 제로 계수들의 제 2 개수가 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 응답하여, 제 1-레벨 VLC 테이블에 기인하는 제 2 코드워드를 제 2 심볼 조합에 할당하는 것을 포함할 수 있다. 이 시스템 및 방법은 후보 심볼 조합들의 세트에 대한 코딩 통계를 수집하는 것, 및 그 코딩 통계에 기초하여 제 1-레벨 VLC 테이블의 코드워드들과 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정하는 것을 더 포함할 수 있다.

Description

비디오 데이터의 코딩을 위한 가변 길이 코드들{VARIABLE LENGTH CODES FOR CODING OF VIDEO DATA}
본 출원은 2010년 4월 9일자에 출원된 미국 가특허출원 번호 제 61/322,641 호의 이익을 주장하며, 이의 전체 내용 각각이 본원에 참고로 포함된다.
본 개시물의 양태들은 일반적으로 비디오 코딩에 관한 것으로, 좀더 구체적으로는, 블록-기반 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템들, 무선 통신 디바이스들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 비디오 게이밍 디바이스들, 셀룰러 또는 위성 무선 전화기들, 또는 기타 등등을 포함하는, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오를 좀더 효율적으로 송수신하기 위해 비디오 압축 기법들, 예컨대 MPEG-2, MPEG-4, 또는 H.264/MPEG-4 AVC (Advanced Video Coding) 를 구현한다. 비디오 압축 기법들은 비디오 신호들에 고유한 리던던시를 감소시키거나 또는 제거하기 위해 공간 및 시간 예측을 수행한다.
비디오 코딩에서, 비디오 압축은 일반적으로 공간 예측, 모션 추정, 및 모션 보상을 포함한다. 특히, 인트라-코딩은 주어진 비디오 프레임 내의 비디오에서의 공간 리던던시를 감소시키거나 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 인접 프레임들 내의 비디오에서의 시간 리던던시를 감소시키거나 또는 제거하기 위해 시간 예측에 의존한다. 인터-코딩의 경우, 비디오 인코더는 2 개 이상의 인접 프레임들 사이에서 매칭 비디오 블록들의 움직임을 추적하기 위해 모션 추정을 수행한다. 모션 추정은 하나 이상의 참조 프레임들에서 대응하는 비디오 블록들에 대한 비디오 블록들의 변위를 나타내는 모션 벡터들을 발생시킨다. 모션 보상은 그 모션 벡터를 이용하여 참조 프레임으로부터 예측 비디오 블록을 발생시킨다. 모션 보상 후, 잔여 비디오 블록은 원래의 비디오 블록으로부터 예측 비디오 블록을 감산함으로써 형성된다.
비디오 인코더는 변환, 양자화, 및 엔트로피 코딩 프로세스들을 적용하여, 잔여 블록의 비트 레이트를 추가로 감소시킨다. 엔트로피 코딩은 일반적으로 변환 및 양자화 동작들에 의해 생성된 잔여 계수들을 추가로 압축하기 위해서 산술 코드들 또는 가변 길이 코드 (VLC) 들의 적용을 수반한다. 예들은 일부 인코더들에서 대안적인 엔트로피 코딩 모드들로서 이용될 수도 있는, 콘텍스트 적응 2진 산술 코딩 (CABAC) 및 콘텍스트 적응 가변 길이 코딩 (CAVLC) 을 포함한다. 비디오 디코더는 블록들의 각각에 대한 모션 정보 및 잔여 정보를 이용하여, 역 연산들을 수행하여, 인코딩된 비디오를 재구성한다.
본 개시물의 양태들은 가변 길이 코드들 (VLC) 을 이용하는 디지털 비디오 데이터, 예컨대, 변환 블록 계수들 및 잔여 데이터에 대한 코딩 방식을 포함한다. 각각의 디지털 비디오 블록으로부터의 계수들은 소정의 순서로 스캐닝되어, 순서화된 어레이로 배열될 수 있다. 본 개시물은 일 양태에서, 하나 이상의 VLC 파라미터들을 나타내는 심볼 조합들을 이용하여 디지털 비디오 블록 계수들의 VLC 코딩을 수행하도록 구성된 가변 길이 코드 (VLC) 유닛을 포함하는 비디오 코딩 디바이스를 제공한다. VLC 파라미터들은 계수 어레이에서의 계수들의 런, 레벨, 및 블록 끝 (EOB) 정보를 포함한다. 본 개시물은 멀티-레벨 VLC 테이블을 추가로 제공하며, 여기서, 제 1-레벨 VLC 테이블들은 심볼 조합의 발생 확률에 기초하여 심볼 조합들을 코드워드들에 맵핑하고, 제 2-레벨 VLC 테이블은 동적으로 발생될 수 있지만 저장될 필요가 없는 구조화된 코드를 포함한다. 특정의 심볼 조합으로 표현되는 런 정보에 기초하여, 심볼 조합은 제 1-레벨 VLC 테이블로부터의 코드워드로서 또는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 및 제 2-레벨 VLC 테이블로부터의 코드워드로서 코딩될 수 있다. 코딩 효율 및 전체 시스템 성능은 제 1-레벨 VLC 테이블에서 코드워드들에 맵핑될 후보들인 가능한 심볼 조합들의 개수를 제한함으로써 개선될 수도 있다.
일 예에서, 본 개시물은 변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하는 단계로서, 런 정보는 인접한 제로 계수들의 개수를 나타내는, 상기 런 정보를 식별하는 단계; 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하는 단계로서, 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함하며, 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하는, 상기 데이터를 저장하는 단계; 및 인접한 제로 계수들의 제 1 개수가 컷-오프-런 (cut-off-run) 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 제 1 심볼 조합에 제 1 코드워드를 할당하는 단계로서, 제 1 코드워드는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 (escape code) 를 포함하는, 상기 제 1 코드워드를 할당하는 단계를 포함하는 방법을 제공한다.
또다른 예에서, 본 개시물은, 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하도록 구성된 가변 길이 코드 (VLC) 테이블 모듈로서, 멀티-레벨 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함하고, 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하는, 상기 가변 길이 코드 (VLC) 테이블 모듈; 및 제 1 코드워드를 제 1 심볼 조합에 할당하도록 구성된 VLC 코딩 모듈로서, 제 1 심볼 조합은 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하고, 제 1 코드워드는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함하는, 상기 VLC 코딩 모듈을 포함하는, 비디오 데이터를 코딩하는 비디오 코딩 디바이스를 제공한다.
일 예에서, 본 개시물은, 변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하는 수단으로서, 런 정보는 인접한 제로 계수들의 개수를 나타내는, 상기 런 정보를 식별하는 수단; 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하는 수단으로서, 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함하고, 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하는, 상기 데이터를 저장하는 수단; 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 제 1 심볼 조합에 제 1 코드워드를 할당하는 수단으로서, 제 1 코드워드는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함하는, 상기 제 1 코드워드를 할당하는 수단을 포함하는, 비디오 코딩 장치를 제공한다.
본 개시물에서 설명하는 기법들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 소프트웨어는 하나 이상의 프로세서들, 예컨대 마이크로프로세서, 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA), 또는 디지털 신호 프로세서 (DSP) 로 실행될 수도 있다. 본 기법들을 실행하는 소프트웨어는 초기에 컴퓨터 판독가능 매체에 저장된 후, 프로세서에 로드되어 실행될 수도 있다.
따라서, 본 개시물은 또한, 하나 이상의 명령들을 유형으로 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 하나 이상의 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하도록 하되, 런 정보는 인접한 제로 계수들의 개수를 나타내고; 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하도록 하되, 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함하고, 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하며; 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 제 1 심볼 조합에 제 1 코드워드를 할당하도록 하되, 제 1 코드워드는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함하는, 상기 비일시적 컴퓨터 판독가능 저장 매체를 고려한다.
본 개시물에서 설명한 기법들의 하나 이상의 양태들의 세부 사항들이 아래의 첨부도면 및 상세한 설명에서 개시된다. 본 개시물의 양태들의 다른 특징들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백히 알 수 있을 것이다.
도 1 은 본 개시물의 다양한 양태들을 구현하는 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2 는 도 1 에 나타낸 비디오 인코더의 일 예를 도시하는 블록도이다.
도 3 은 도 1 에 나타낸 비디오 디코더의 일 예를 도시하는 블록도이다.
도 4 는 본 개시물의 양태들을 구현하도록 구성된 엔트로피 인코딩 유닛의 블록도이다.
도 5 는 본 개시물의 양태들을 구현하도록 구성된 엔트로피 디코딩 유닛의 블록도이다.
도 6 은 본 개시물에서 설명하는 코딩 기법들을 도시하는 플로우차트를 나타낸다.
도 7 은 본 개시물에서 설명하는 코딩 기법들을 도시하는 플로우차트를 나타낸다.
도 8 은 본 개시물에서 설명하는 코딩 기법들을 도시하는 플로우차트를 나타낸다.
도 9 는 지그-재그 스캐닝 방식의 일 예를 나타낸다.
도 10 은 변환 블록의 일 예를 나타낸다.
본 개시물의 양태들은 일반적으로 비디오 코딩에 관한 것으로, 좀더 구체적으로는, 블록-기반 비디오 코딩에 관한 것이다. 소스 디바이스로부터 수신 디바이스에 송신되기 전에, 디지털 비디오 블록 계수들, 예컨대 비디오 블록의 변환 계수들, 및 잔여 비디오 데이터를 나타내는, 하나 이상의 심볼 패턴들이 발생될 수 있다. 심볼 패턴들은 정보, 예컨대 넌-제로 계수에 선행하거나 또는 후행하는 인접한 제로 계수들의 개수를 나타내는 숫자와 같은 정보를 나타낼 수 있다. 이 인접한 제로들의 개수는 통상 런 길이 (run length) 로서 지칭된다. 심볼 패턴으로 표현되는 정보는 또한 특정의 넌-제로 계수가 1 의 값, 또는 GTO (greater-than-one) 로도 지칭되는, 1 이외의 어떤 값을 갖는지 여부, 또는 특정의 계수가 블록 끝 (end-of-block; EOB) 으로 통칭되는, 데이터 블록에서의 마지막 넌-제로 계수인지를 포함할 수도 있다. 이 심볼 패턴들로부터, 수신 디바이스는 각각의 블록 계수가 심볼 패턴들의 사용 없이 개별적으로 전송되어 시그널링된 경우보다 더 적은 비트들의 데이터를 이용하여, 데이터 블록을 재구성할 수 있다. 소스 디바이스로부터 수신 디바이스에 송신되는 비트들의 수를 추가로 감소시키기 위해, 심볼 패턴들은 송신되기 전에, "엔트로피 코딩" 으로 통칭되는 일종의 무손실 통계적 코딩을 경험할 수 있다. 엔트로피 코딩은 주어진 데이터 세트, 이 경우에는 심볼 패턴들의 세트의 심볼 분포 속성 (symbol distribution property) 을 이용하며, 일반적으로 보다 짧은 코드워드들을 데이터 세트에서 더 빈번하게 발생하는 심볼 패턴들에 할당하고 보다 긴 코드워드들을 데이터 세트에서 덜 빈번하게 발생하는 심볼 패턴들에 할당한다. 본 개시물의 양태들은 보다 큰 데이터 블록들에 대해 심볼 패턴들을 발생하고 이들 심볼 패턴들에 코드워드들을 할당하는 개선된 방법 및 시스템을 제공할 수도 있다.
심볼들은, 정보 이론의 맥락에서, 비트들의 별개의 또는 식별가능한 패턴을 지칭한다. 하나의 예시적인 심볼은 캐릭터 (character), 예컨대 문자 'a' 에 대한 ASCII 코드를 표현하는데 사용되는 비트들일 수도 있다. 본 개시물에서 사용되는 바와 같이, 심볼 패턴은 일반적으로 하나 이상의 심볼들을 나타내는 비트들의 패턴을 지칭하며, 여기서, 하나 이상의 심볼들은 런 길이, GTO, 또는 EOB 와 같은 정보의 단편을 나타낸다. 본 개시물에서 사용되는 바와 같이, 심볼 조합은 하나 이상의 심볼 패턴들의 정보를 나타내는 비트들의 패턴을 지칭한다. 따라서, 심볼 조합은 예를 들어, 런 길이 또는 EOB 를 나타내는 비트들의 패턴일 수도 있지만, 심볼 조합은 또한 런 길이 및 EOB, 또는 런 길이, EOB, 및 GTO 모두를 나타내는 비트들의 패턴일 수도 있다.
도 1 은 본 개시물의 양태들을 구현하는 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1 에 나타낸 바와 같이, 시스템 (10) 은 인코딩된 비디오 데이터를 통신 채널 (16) 을 통해서 수신 디바이스 (14) 에 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 송신기 (22) 를 포함할 수도 있다. 수신 디바이스 (14) 는 수신기 (24), 비디오 디코더 (26), 및 비디오 디스플레이 디바이스 (28) 를 포함할 수도 있다. 시스템 (10) 은 본 개시물에서 설명되는 여러 기법들을 구현하도록 구성될 수도 있다.
도 1 의 예에서, 통신 채널 (16) 은 임의의 무선 또는 유선 통신 매체, 예컨대, 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들, 또는 무선 및 유선 매체들의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 패킷-기반 네트워크, 예컨대 근거리 네트워크, 광역 네트워크, 또는 글로벌 네트워크, 예컨대 인터넷의 부분을 형성할 수도 있다. 통신 채널 (16) 은 일반적으로 비디오 데이터를 소스 디바이스 (12) 로부터 수신 디바이스 (14) 에 송신하는 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 집합을 나타낸다.
소스 디바이스 (12) 는 수신 디바이스 (14) 로의 송신을 위한 비디오를 발생시킨다. 그러나, 일부의 경우에, 디바이스들 (12, 14) 은 실질적으로 대칭적인 방식으로 동작할 수도 있다. 예를 들어, 디바이스들 (12, 14) 각각은 비디오 인코딩 및 디코딩 컴포넌트들을 포함할 수도 있다. 그러므로, 시스템 (10) 은 예컨대, 비디오 스트리밍, 비디오 브로드캐스팅, 또는 비디오 전화통신을 위해, 비디오 디바이스들 (12, 14) 사이의 단방향 또는 양방향 비디오 송신을 지원할 수도 있다. 따라서, 본 개시물의 양태들은 소스 디바이스 (12), 수신 디바이스 (14), 또는 양자로 구현될 수도 있다.
비디오 소스 (18) 는 비디오 캡쳐 디바이스, 예컨대 하나 이상의 비디오 카메라들, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 또는 비디오 콘텐츠 제공자로부터의 라이브 비디오 피드 (live video feed) 를 포함할 수도 있다. 추가 대안으로서, 비디오 소스 (18) 는 컴퓨터 그래픽-기반 데이터를 소스 비디오, 또는 라이브 비디오와 컴퓨터-생성 비디오의 조합으로서 발생시킬 수도 있다. 일부의 경우, 비디오 소스 (18) 가 카메라이면, 소스 디바이스 (12) 및 수신 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 각 경우에, 캡쳐된, 사전-캡쳐된, 또는 컴퓨터-생성 비디오는 송신기 (22), 채널 (16) 및 수신기 (24) 를 통한 비디오 소스 디바이스 (12) 로부터 비디오 수신 디바이스 (14) 의 비디오 디코더 (26) 로의 송신을 위해 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 디스플레이 디바이스 (28) 는 액정 디스플레이 (LCD), 플라즈마 디스플레이 또는 유기 발광 다이오드 (OLED) 디스플레이와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (26) 는 공간, 시간 및/또는 신호-대-잡음 비 (SNR) 스케일러빌리티에 대한 스케일러블 비디오 코딩을 지원하도록 구성될 수도 있다. 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (26) 는 SVC 에 대해 FGS (fine granularity SNR scalability) 코딩을 지원하도록 구성될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (26) 는 베이스 계층 및 하나 이상의 스케일러블 향상 계층들의 인코딩, 송신, 및 디코딩을 지원함으로써, 다양한 정도들의 스케일러빌리티를 지원할 수도 있다. 스케일러블 비디오 코딩의 경우, 베이스 계층은 최저 레벨의 품질을 갖는 비디오 데이터를 운반한다. 하나 이상의 향상 계층들은 보다 높은 공간, 시간 및/또는 SNR 레벨들을 지원하기 위해 추가적인 비트스트림을 운반한다.
비디오 인코더 (20) 및 비디오 디코더 (26) 는 비디오 압축 표준, 예컨대 MPEG-2, MPEG-4, ITU-T H.263, 또는 ITU-T H.264/MPEG-4 AVC (Advanced Video Coding) 에 따라서 동작할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (26) 는 또한 차세대 비디오 코딩 표준들, 예컨대, ITU-T H.265 에 따라서 동작할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (26) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적회로 (ASIC) 들, 필드 프로그래밍가능 게이트 어레이 (FPGA) 들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 임의의 이들의 조합들으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (26) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 하나는 개별 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버, 또는 기타 등등에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. 또한, 소스 디바이스 (12) 및 수신 디바이스 (14) 각각은 인코딩된 비디오의 송신 및 수신을 위해, 적용가능한 경우, 무선 통신을 지원하기에 충분한 무선 주파수 (RF) 무선 컴포넌트들 및 안테나들을 포함한, 적당한 변조, 복조, 주파수 변환, 필터링, 및 증폭기 컴포넌트들을 포함할 수도 있다. 그러나 예시의 용이성을 위해, 도 1 에는 이러한 컴포넌트들이 도시되지 않는다.
비디오 시퀀스는 일련의 비디오 프레임들을 포함한다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위해 개개의 비디오 프레임들 내의 픽셀들의 블록들에 대해 동작한다. 비디오 블록들은 고정 또는 가변 사이즈들을 가질 수도 있으며, 특정된 코딩 표준에 따라서 사이즈가 상이할 수도 있다. 각각의 비디오 프레임은 일련의 슬라이스들을 포함한다. 각각의 슬라이스는 일련의 매크로블록들을 포함할 수도 있으며, 그 매크로블록들은 서브-블록들로 배열될 수도 있다. 일 예로서, ITU-T H.264 표준은 루마 (luma) 성분들에 대해 16 × 16, 8 × 8, 4 × 4, 그리고 크로마 (chroma) 성분들에 대해 8 × 8 과 같은 여러 블록 사이즈들에서 인트라 예측을 지원할 뿐만 아니라, 루마 성분들에 대해 16 × 16, 16 × 8, 8 × 16, 8 × 8, 8 × 4, 4 × 8 및 4 × 4, 그리고 크로마 성분들에 대해 대응하는 스케일링된 사이즈들과 같은 여러 블록 사이즈들에서 인터 예측을 지원한다.
보다 작은 비디오 블록들은 더 나은 해상도를 제공할 수 있으며, 보다 높은 레벨의 세부 사항 (detail) 을 포함하는 비디오 프레임의 로케이션들에 사용될 수도 있다. 일반적으로, 매크로블록 (MB) 들 및 여러 서브-블록들은 비디오 블록들인 것으로 간주될 수도 있다. 게다가, 슬라이스는 일련의 비디오 블록들, 예컨대 MB들 및/또는 서브-블록들인 것으로 간주될 수도 있다. 각각의 슬라이스는 독립적으로 디코딩가능한 단위일 수도 있다. 예측 후, 비디오 인코더 (20) 는 8 × 8 잔여 블록 또는 4 × 4 잔여 블록으로의 변환을 적용한다. intra_16x16 예측 모드가 사용되는 경우, 크로마 성분들 또는 루마 성분에 대해 4 × 4 블록들의 DC 계수들에 추가적인 변환이 적용될 수도 있다. 설명의 목적을 위해, 슬라이스 레벨에서 본 개시물의 양태들이 설명될 수도 있지만, 동일한 기법들이 또한 픽쳐 (picture) 레벨에서 적용될 수 있다.
일반적으로, 비디오 인코더 (20) 는 블록들에 이산 코사인 변환 (DCT) 을 적용하여, 변환 계수들, 또는 좀더 일반적으로는 디지털 비디오 블록 계수들로도 지칭되는 DCT 계수들을 발생시킨다. DCT 는 넌-제로 값들을 갖는 결과의 DCT 계수들이 함께 그룹화되고 제로 값들을 갖는 결과의 DCT 계수들이 함께 그룹화되도록 일반적으로 순서화되는 DCT 계수들을 발생시킨다. 그 후, 비디오 인코더 (20) 는 특정의 스캐닝 순서 또는 패턴에 따라서 결과의 DCT 계수들을 스캐닝하는 것을 수반하는 일종의 직렬화 (serialization) 를 수행한다. 지그-재그 스캔이 도 9 의 예에 대해 아래에 도시되지만, 제로 및 넌-제로 DCT 계수들, 예컨대 수직, 수평 또는 다른 스캐닝 패턴들의 그룹들을 추출하기 위해서 상이한 스캐닝 패턴들이 채용될 수도 있다.
일단 추출되면, 비디오 인코더 (20) 는, 직렬화된 이후에 인접한 (즉, 서로 가까운) 제로 DCT 계수들의 총 개수 (즉, 소위 "런") 를 컴퓨팅하는 것을 통상적으로 수반하는 "런-길이 코딩" 으로 통칭되는 것을 수행한다. 도 9 및 도 10 의 예와 함께 좀더 자세하게 나타낸 바와 같이, 직렬화된 DCT 계수들을 기술하는 하나 이상의 심볼 조합들이 발생될 수 있다. 심볼 조합들은 런 길이, GTO, EOB 와 같은 정보, 및 직렬화된 DCT 계수들을 재구성하기 위해 수신 디바이스 (14) 에 의해 사용될 수 있는 다른 정보를 나타낼 수 있다. 심볼 조합들을 이용하여, 수신 디바이스 (14) 는 심볼 조합들의 사용 없이 각각의 DCT 계수가 개별적으로 전송되고 시그널링된 경우보다 더 적은 비트들의 데이터를 이용하여, 직렬화된 DCT 계수들, 및 궁극적으로는, 데이터 블록을 재구성할 수 있다.
다음으로, 비디오 인코더 (20) 는 엔트로피 코딩으로 통칭되는 통계적 무손실 코딩을 수행한다. 엔트로피 코딩은 수신 디바이스 (14) 가 DCT 계수들의 세트를 재구성하게 하기 위해 소스 디바이스 (12) 로부터 수신 디바이스 (14) 에 송신될 필요가 있는 비트들의 수를 추가로 감소시키는데 사용되는 무손실 프로세스이다. 엔트로피 코딩은 심볼 조합들의 주어진 세트의 심볼 분포 속성 (symbol distribution property) 을 이용하며, 일반적으로, 보다 짧은 코드워드들을 더 빈번하게 발생하는 심볼 조합들에 할당하고 보다 긴 코드워드들을 덜 빈번하게 발생하는 심볼 조합들에 할당한다.
비디오 인코더 (20) 및 비디오 디코더 (26) 는, 일부 동적인 구현들에서, 각각, 주어진 콘텍스트에 대해, 그 콘텍스트에서 가장 빈번하게 발생하는 심볼 조합들이 보다 짧은 코드워드들에 맵핑될 수 있도록 소정의 심볼 조합들의 발생 확률들을 추적하는 기능성을 포함한다. 심볼 발생 확률은 특정의 심볼 조합이 발생한 총 횟수에 기초하여 또는 특정의 심볼 조합이 발생한 가중된 총 횟수에 기초하여 추적될 수도 있으며, 여기서 더 최근에 발생하는 심볼 조합이 덜 최근에 발생하는 심볼 조합보다 더 많이 가중된다. 심볼 발생 확률은 또한 T 개의 가장 최근 심볼 조합들과 같은, 특정의 심볼 조합이 특정의 윈도우 내에서 발생한 총 횟수, 또는 가중된 총 횟수에 기초하여, 추적될 수도 있다.
코드워드들에의 심볼 조합들의 맵핑은 비디오 인코더 (20) 및 비디오 디코더 (26) 에서 복수의 VLC 테이블들 또는 임의의 다른 유형의 데이터 구조에 저장될 수 있다. VLC 테이블들에 저장된 맵핑들은, 심볼 조합들에 대한 추적되는 발생 확률들이 변함에 따라, 코드워드들에의 심볼 조합들의 맵핑들이 또한 변할 수 있도록, 적응가능할 수도 있다. 일부 심볼 조합들의 발생 확률들이 다른 심볼 조합들의 발생보다 더 가능성이 있거나 또는 덜 가능성이 있게 되면, 비디오 인코더 (20) 및 비디오 디코더 (26) 는 동적 구현들에서, 심볼 조합들의 일부를 그들의 발생 확률에 기초하여 더 긴 코드워드 또는 더 짧은 코드워드에 재맵핑함으로써 VLC 테이블들을 업데이트할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (26) 는, 이들 동적 구현들에서, 그 변화들을 반영하는 데이터가 소스 디바이스 (12) 와 수신 디바이스 (14) 사이에 전송되어짐 없이, 비디오 인코더 (20) 에서 발생하는 VLC 테이블들에 대한 변화들이 비디오 디코더 (26) 에서 반영될 수 있도록, 동일한 데이터 프로세싱 기법들을 구현하도록 구성될 수 있다.
아래에서 좀더 자세하게 설명하는 바와 같이, H.264/MPEG-4 AVC 표준은 변환 계수들을 코딩하는 콘텍스트 적응 가변 길이 코딩 (CAVLC) 으로 지칭되는 일종의 엔트로피 코딩을 정의한다. CAVLC 는 구체적으로 4 × 4 변환 사이즈들에 대해 설계되지만, 4 × 4 보다 큰 변환들에 항상 적합한 것은 아니다. 특히, 4 × 4 보다 큰 변환들은 통상적으로 단일 VLC 테이블에 맵핑될 휠씬 더 많은 개수의 가능한 심볼 조합들을 갖고 있다. 따라서, 비디오 인코더 (20) 가 발생 확률들을 추적해야 하는 심볼 조합들의 개수가 또한 휠씬 더 클 수 있는데, 이는 위에서 언급한 구현들과 유사하게 동적인 구현들에서의 심볼 적응의 효율을 감소시킬 수도 있다. 심볼 적응의 감소된 효율의 결과로서, 전체 코딩 효율 및 전체 시스템 성능이 또한 감소할 수도 있다.
비디오의 부분에 대한 콘텐츠 통계가 비교적 일정하다고 가정하여, 일단 비디오 인코더 (20) 및 비디오 디코더 (26) 가 적당히 많은 개수의 심볼 조합들을 처리하면, 심볼 조합들에 대한 추적된 발생 확률들은 일반적으로 비교적 안정된 값들에 도달한다. 이러한 경우에는, 비디오 인코더 (20) 및 비디오 디코더 (26) 가 가끔만 심볼 조합들을 코드워드들에 재맵핑함으로써 저장된 VLC 테이블들을 업데이트할 필요가 있으므로, VLC 테이블들에 유지되는 심볼 조합들에의 코드워드들의 맵핑이 또한 비교적 안정되어진다. 그러나, 엔트로피 코딩의 초기 스테이지들에서, 또는 비디오의 부분에 대한 콘텐츠 통계에 상당한 변화가 있을 때, VLC 테이블들에 저장된 소정의 심볼 조합들에 대한 발생 확률들이 그 비디오의 부분에 대한 실제 발생 확률들을 반영하지 않을 수도 있는데, 이는 코딩 효율을 더 악화시킬 수도 있다. 4 × 4 보다 큰 변환들과 연관되는 보다 많은 개수의 가능한 심볼 조합들에 의해, 심볼 조합의 발생의 개수가 그 실제 발생 확률을 나타내기 시작하기 전에 비디오 인코더 (20) 에 의해 프로세싱될 필요가 있는 심볼 조합들의 개수가 상당히 많아져, 비효율적인 엔트로피 코딩의 이들 기간들을 연장할 수 있다. 본 개시물의 양태들은 VLC 테이블들의 구성 및 유지관리를 개선함으로써, 비효율적인 엔트로피 코딩의 이들 기간들이 전체 코딩 효율에 미치는 영향을 감소시켜 코딩 효율을 개선할 수도 있다.
더욱이, CAVLC 는 구체적으로 4 × 4 변환 사이즈들에 대해 설계되기 때문에, CAVLC 이 고-해상도 또는 소위, 고-정세 (HD) 비디오 데이터를 인코딩하는 요구들을 충족시킬 수 없을 수도 있다. HD 비디오 데이터는 종종 더 나은 코딩 효율을 달성하기 위해서, 4 × 4 변환들보다 상당히 큰 변환들을 이용한다. 가능한 심볼 조합들의 개수가 인코딩되는 데이터의 사이즈에 따라서 증가하기 때문에, 더 큰 변환 사이즈들은 적용된 변환 사이즈에 정비례하는 더 많은 잠재적인 심볼 조합들을 초래한다. 이 점에서, CAVLC 은 가능한 조합들 및 그들의 관련 코드워드 모두를 저장하기 위해 매우 큰 테이블을 필요로 할 것이다. 그 결과, 위에서 설명하는 VLC 코드워드 맵핑의 느린 적응에 더해, 이 고-해상도 또는 HD 비디오 데이터를 인코딩하기 위해 CAVLC 을 확장하는 것은 또한 발생 확률들을 추적하는 것에 전용된 상당히 더 많은 컴퓨테이션 리소스들 및 "코드북들" 로 통칭되는, 이들 더 큰 테이블들을 저장하기 위한 상당히 더 많은 메모리 소비를 초래할 수도 있다.
본 개시물의 양태들에 따르면, 모든 가능한 심볼 조합들에 대해 단일-레벨 VLC 테이블을 유지하기 보다는, 비디오 인코더 (20) 는 하나 이상의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장하고, 특정의 심볼 조합으로 표현되는 인접한 제로 계수들의 개수 (즉, 런 길이) 에 기초하여, 멀티-레벨 VLC 테이블의 제 1 레벨에 대한 후보들인 심볼 조합들을 제한한다. 이 멀티-레벨 VLC 테이블의 제 1 레벨은 심볼 조합들을 코드워드들과 연관시키기 위해 일반적인 VLC 기법들을 채용할 수도 있다. 멀티-레벨 VLC 테이블의 제 2 레벨은 구조화된 VLC 코드들, 예컨대 골롬-라이스 (Golomb-Rice) 코드들을 이용할 수도 있다. 제 2-레벨 VLC 테이블의 구조화된 성질로 인해, 골롬-라이스 (Golomb-Rice) 코드들이, 일 예로서, 인코더 및 디코더 양자에 알려진 소정의 파라미터들에 기초하여 동적으로 결정될 수도 있기 때문에, 이 멀티-레벨 VLC 테이블들의 제 2 레벨을 저장할 필요가 없다. 본 개시물의 멀티-레벨 VLC 테이블의 제 1 레벨은 심볼 조합들 및 가장 빈번하게 발생하는 심볼 조합들에 대한 코드워드들 사이의 맵핑을 저장하는 것이라고 특징지을 수도 있다. 본 개시물에서 설명하는 멀티-레벨 VLC 테이블의 제 2 레벨은 임의의 실제 테이블을 메모리에 저장함 없이, 덜 빈번하게 발생하는 심볼 조합들에 대한 코드워드들을 동적으로 결정하는 방법을 제공하는 것이라 특징지을 수도 있다.
이 점과 관련하여, 본 개시물의 양태들은 4 × 4 보다 큰 사이즈들의 변환들을 적용함으로써 발생되는 변환 계수들에 대한 인코딩 및 디코딩 효율을 개선하는 것과 동시에, 제 2 레벨의 구조화된 코드들을 제공함으로써 메모리 소비를 개선할 수도 있다. 종래의 CAVLC 이 이러한 방법으로 확장되지 않을 때, 개선된 코딩 효율이 VLC 를 4 × 4 보다 큰 사이즈들의 변환들의 적용에 기인하는 변환 계수들에 적용하는 것으로부터 초래될 수도 있다. 멀티-레벨 VLC 테이블의 제 1 레벨에 대한 후보들인 심볼 조합들을 특정의 심볼 조합으로 표현되는 인접한 제로 계수들의 개수에 기초하여 제한하는 것은, 비디오 인코더 (20) 가 발생 확률들을 추적하는데 필요로 하는 심볼 조합들의 총 개수를 감소시키며, 이는, 확률 추적을 좀더 신속히 적응시킴으로써, 위에서 설명한 비효율적인 엔트로피 코딩의 기간들을 단축시킬 수도 있다. 게다가, 임의의 저장된 코드북이 생성되는 것을 요구하지 않는 제 2 레벨의 구조화된 코드워드들에 의존한 결과로, 코드북들에 의해 소비되는 메모리의 양이 감소될 수도 있다. 개선된 인코딩 및 디코딩 효율은 수신 디바이스 (14) 의 비디오 디코더 (26) 가 변환 계수들의 세트를 재구성하게 하기 위해 소스 디바이스 (12) 로부터 수신 디바이스 (14) 로 전송될 필요가 있는 비트들의 수를 감소시킬 수도 있다. 더욱이, 개선된 코딩 및 디코딩 효율은 소위 "스마트폰들" 을 포함한, 배터리-구동 휴대형 디바이스들, 예컨대 핸드셋들 또는 다른 셀룰러폰들의 맥락에서 특히 중요할 수도 있는, 보다 효율적인 전력 이용을 조장한다.
이들 기법들을 예시하기 위해, 비디오 인코더 (20) 는 복수의 변환 계수들에 대해, 인접하고 제로의 값을 갖는 계수들의 개수를 나타내는 런 정보를 결정할 수도 있다. 비디오 인코더 (20) 는, 위에서 언급하고 아래에서 좀더 자세하게 설명하는 바와 같이, 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장한다. 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함한다. 제 1-레벨 VLC 테이블은 위에서 설명한 방법으로 코드워드들을 심볼 조합들에 맵핑한다. 컷-오프-런 값보다 큰 런 값을 나타내는 심볼 조합을 식별하는 것에 응답하여, 비디오 인코더 (20) 는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 및 제 2-레벨 VLC 테이블로부터의 코드워드를 심볼 조합에 할당한다.
런 값은 일반적으로 사용되고 있는 코딩 방식에 따라서, 넌-제로 계수에 선행하거나 또는 후행하는 인접한 제로 계수들의 개수를 지칭한다. 컷-오프-런 값은 일반적으로 특정의 심볼 조합의 런 값에 기초하여, 특정의 심볼 조합이 코딩될 방법을 결정하는 임계값을 지칭한다. 예를 들어, 컷-오프-런 값은 5 로 설정될 수 있을 것이다. 따라서, 넌-제로 계수가 사용되는 코딩 방식에 따라서, 6개의 제로 계수들 만큼 선행되거나 또는 후행되는 것을 나타내는 심볼 조합들이, 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄 (concatenation) 로서 코딩될 수 있을 것이다.
비디오 디코더 (26) 가 이스케이프 코드를 검출할 때, 제 2-레벨 VLC 테이블로부터의 코드워드를 추가로 디코딩한다. 심볼 조합을 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩하는 것은 일반적으로 심볼 조합을 제 1-레벨 VLC 테이블로부터의 코드워드로서 코딩하는 것보다 더 많은 비트들을 필요로 한다. 따라서, 본 개시물의 양태들은 좀더 빈번하게 발생하는 심볼 조합들을 제 1-레벨 VLC 테이블에서의 코드워드들로서 코딩하고, 덜 빈번하게 발생하는 심볼 조합들을 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄들로서 코딩하는 것을 포함한다.
도 2 는 도 1 의 비디오 인코더 (20) 와 같은, 비디오 인코더 (20) 의 예를 도시하는 블록도이다. 비디오 인코더 (20) 는 비디오 프레임들 내의 블록들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 주어진 비디오 프레임 내의 비디오에서 공간 리던던시를 감소시키거나 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임들 내의 비디오에서 시간 리던던시를 감소시키거나 또는 제거하기 위해 시간 예측에 의존한다. 인터-코딩에 있어, 비디오 인코더 (20) 는 모션 추정을 수행하여, 인접 프레임들 사이에서 매칭 비디오 블록들의 움직임을 추적한다.
도 2 에 나타낸 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내에서 현재의 비디오 블록 (30) 을 수신한다. 도 2 의 예에서, 비디오 인코더 (20) 는 모션 추정 유닛 (32), 참조 프레임 스토어 (34), 모션 보상 유닛 (36), 블록 변환 유닛 (38), 양자화 유닛 (40), 역양자화 유닛 (42), 역변환 유닛 (44) 및 엔트로피 인코딩 유닛 (46) 을 포함한다. 인-루프 디블로킹 필터 (미도시) 가 블록킹 아티팩트들을 제거하기 위해 필터 블록들에 적용될 수도 있다. 비디오 인코더 (20) 는 또한 합산기 (48) 및 합산기 (50) 를 포함한다. 도 2 는 비디오 블록들의 인터-코딩을 위한 비디오 인코더 (20) 의 시간 예측 컴포넌트들을 도시한다. 예시의 용이를 위해 도 2 에 나타내지는 않지만, 비디오 인코더 (20) 는 또한 일부 비디오 블록들의 인트라-코딩을 위한 공간 예측 컴포넌트들을 포함할 수도 있다.
모션 추정 유닛 (32) 은 하나 이상의 모션 벡터들을 발생시키기 위해 비디오 블록 (30) 을 하나 이상의 인접 비디오 프레임들에서의 블록들과 비교한다. 인접 프레임 또는 프레임들은 참조 프레임 스토어 (34) 로부터 취출될 수도 있으며, 그 참조 프레임 스토어는 이전에 인코딩된 블록들로부터 재구성되는 비디오 블록들을 저장하는 임의의 유형의 메모리 또는 데이터 저장 디바이스를 포함할 수도 있다. 모션 추정은 가변 사이즈들, 예컨대, 32 × 32, 32 × 16, 16 × 32, 16 × 16, 16 × 8, 8 × 16, 8 × 8 또는 더 작은 블록 사이즈들의 블록들에 대해 수행될 수도 있다. 모션 추정 유닛 (32) 은 예컨대, 레이트 왜곡 모델에 기초하여, 현재의 비디오 블록 (30) 에 가장 가깝게 매칭하는 인접 프레임들에서의 하나 이상의 블록들을 식별하고, 인접 프레임들에서의 블록들과 현재의 비디오 블록 사이의 변위를 결정한다. 이에 기초하여, 모션 추정 유닛 (32) 은 현재의 비디오 블록 (30) 과 현재의 비디오 블록 (30) 을 코딩하는데 사용되는 참조 프레임들로부터의 하나 이상의 매칭 블록들 사이의 변위의 매그니튜드 및 궤적 (trajectory) 을 나타내는 하나 이상의 모션 벡터들 (MV) 을 생성한다.
모션 벡터들은 1/2- 또는 1/4-픽셀 정밀도, 또는 휠씬 더 미세한 정밀도를 가질 수도 있으므로, 비디오 인코더 (20) 가 정수 픽셀 로케이션들보다 더 높은 정밀도로 모션을 추적하여 더 나은 예측 블록을 획득할 수 있도록 한다. 분수의 (fractional) 픽셀 값들을 갖는 모션 벡터들이 사용될 때, 보간 동작들이 모션 보상 유닛 (36) 에서 수행된다. 모션 추정 유닛 (32) 은 소정의 기준들, 예컨대 레이트-왜곡 모델을 이용하여, 비디오 블록에 대한 최상의 블록 파티션들 및 모션 벡터 또는 모션 벡터들을 식별한다. 예를 들어, 양방향 예측의 경우의 모션 벡터보다 더 많을 수도 있다. 결과의 블록 파티션들 및 모션 벡터들을 이용하여, 모션 보상 유닛 (36) 은 예측 비디오 블록을 형성한다.
비디오 인코더 (20) 은 합산기 (48) 에서 원래의, 현재의 비디오 블록 (30) 으로부터, 모션 보상 유닛 (36) 에 의해 생성된 예측 비디오 블록을 감산함으로써 잔여 비디오 블록을 형성한다. 블록 변환 유닛 (38) 은 4 × 4 또는 8 × 8 과 같은 변환을 잔여 블록에 적용하여, 잔여 변환 블록 계수들을 생성한다. 양자화 유닛 (40) 은 잔여 변환 블록 계수들을 양자화하여 비트 레이트를 더욱 감소시킨다. 엔트로피 인코딩 유닛 (46) 은 그 양자화된 계수들을 엔트로피 코딩하여, 비트 레이트를 더욱 더 감소시킨다.
도 4 에 대해 아래에서 좀더 자세하게 설명하는 본 개시물의 양태들에 따르면, 엔트로피 인코딩 유닛 (46) 은 그 양자화된 블록 계수들에 VLC 코딩을 적용하는 가변 길이 코딩 (VLC) 유닛으로서 동작한다. 특히, 엔트로피 인코딩 유닛 (46) 은 위에서 도 1 과 관련하여, 그리고 아래에서 도 9 및 도 10 와 관련하여 설명하는 기법들에 따라서 디지털 비디오 블록 계수들의 VLC 코딩을 수행하도록 구성될 수도 있다. 엔트로피 인코딩 유닛 (46) 은 일종의 무손실 통계적 코딩을 수행하며, 이러한 이유로, 엔트로피 인코딩 유닛 (46) 은 또한 "무손실 통계적 코딩 유닛 (46)" 으로 지칭될 수도 있다. 일반적으로, 도 3 및 도 5 에서 좀더 자세하게 설명되는, 비디오 디코더 (26) 는, VLC 디코딩을 포함한, 역 연산들을 수행하여, 그 인코딩된 비디오를 디코딩하고 재구성한다.
역양자화 유닛 (42) 및 역변환 유닛 (44) 은 역양자화 및 역변환을 각각 적용하여, 잔여 블록을 재구성한다. 합산기 (50) 는 재구성된 잔여 블록을 모션 보상 유닛 (36) 에 의해 생성된 모션 보상된 예측 블록에 가산하여, 참조 프레임 스토어 (34) 에의 저장을 위한 재구성된 비디오 블록을 생성한다. 후속 비디오 프레임에서의 블록을 인코딩하는데 이 재구성된 비디오 블록이 모션 추정 유닛 (32) 및 모션 보상 유닛 (36) 에 의해 사용된다.
도 3 은 도 1 의 비디오 디코더 (26) 와 같은 비디오 디코더의 예를 도시하는 블록도이다. 비디오 디코더 (26) 는 비디오 프레임들 내의 블록들의 인트라- 및 인터- 디코딩을 수행할 수도 있다. 도 1 에 나타낸 바와 같이, 비디오 디코더 (26) 는 비디오 인코더 (20) 에 의해 인코딩되어진 인코딩된 비디오 비트스트림을 수신한다. 도 3 의 예에서, 비디오 디코더 (26) 는 엔트로피 디코딩 유닛 (52), 모션 보상 유닛 (54), 재구성 유닛 (56), 역변환 유닛 (58), 및 참조 프레임 스토어 (62) 를 포함한다. 비디오 디코더 (26) 는 또한 합산기 (64) 의 출력을 필터링하는 인-루프 디블로킹 필터 (미도시) 를 포함할 수도 있다. 비디오 디코더 (26) 는 또한 합산기 (64) 를 포함한다. 도 3 은 비디오 블록들의 인터-디코딩을 위한 비디오 디코더 (26) 의 시간 예측 컴포넌트들을 도시한다. 도 3 에 나타내지는 않지만, 비디오 디코더 (26) 는 또한 일부 비디오 블록들의 인트라-디코딩을 위한 공간 예측 컴포넌트들을 포함할 수도 있다.
엔트로피 디코딩 유닛 (52) 은 인코딩된 비디오 비트스트림을 수신하여, 비트스트림 양자화된 잔여 계수들, 매크로블록 코딩 모드 및 모션 정보로부터 디코딩하며, 그 모션 정보는 모션 벡터들 및 블록 파티션들을 포함할 수도 있다. 그러므로, 엔트로피 디코딩 유닛 (52) 은 VLC 디코딩 유닛으로서 기능한다. 예를 들어, 인코딩된 비트스트림으로부터의 양자화된 잔여 계수들을 디코딩하기 위해, 도 3 의 엔트로피 디코딩 유닛 (52) 은 위에서 도 1 에 대해, 그리고 아래에서 도 9 및 도 10 에 대해 설명하는 본 개시물의 양태들을 구현하도록 구성될 수도 있다. 그러나, 엔트로피 디코딩 유닛 (52) 은 인코딩된 비트스트림으로부터 양자화된 블록 계수들을 취출하기 위해, 도 2 의 엔트로피 인코딩 유닛 (46) 과는 실질적으로 정반대의 방법으로 VLC 디코딩을 수행한다.
모션 보상 유닛 (54) 은 참조 프레임 스토어 (62) 로부터 모션 벡터들 및 블록 파티션들 및 하나 이상의 재구성된 참조 프레임들을 수신하여, 예측 비디오 블록을 생성한다. 재구성 유닛 (56) 은 양자화된 블록 계수들을 역양자화, 즉, 양자화 해제 (de-quantize) 한다. 역변환 유닛 (58) 은 역변환, 예컨대, 역 DCT 또는 역 4 × 4 또는 8 × 8 정수 변환을, 그 계수들에 적용하여, 잔여 블록들을 생성한다. 그 후, 예측 비디오 블록들이 디코딩된 블록들을 형성하기 위해 합산기 (64) 에 의해 잔여 블록들과 합산된다. 디블로킹 필터 (미도시) 가 블록킹 아티팩트들을 제거하기 위해 디코딩된 블록들을 필터링하도록 적용될 수도 있다. 그 후, 필터링된 블록들이 참조 프레임 스토어 (62) 에 배치되며, 참조 프레임 스토어 (62) 는 후속 비디오 프레임들의 디코딩을 위해 참조 프레임을 제공하고 또한 디코딩된 비디오를 생성하여 디스플레이 디바이스 (28) (도 1) 를 구동한다.
도 4 는 도 2 의 엔트로피 인코딩 유닛 (46) 의 구체적인 블록도이다. 엔트로피 인코딩 유닛 (46) 은 도 1 및 도 2 의 비디오 인코더 (20) 내에 상주할 수도 있다. 도 2 에 나타낸 바와 같이, 엔트로피 인코딩 유닛 (46) 은 예컨대, 양자화 유닛 (40) (도 2) 으로부터, 양자화된 잔여 블록 계수들을 수신하고, 디코딩을 위한 또 다른 디바이스로의 송신을 위해 엔트로피 코딩된 비트스트림을 발생시킨다. 도 4 의 예에서, 엔트로피 인코딩 유닛 (46) 은 VLC 인코딩 모듈 (98), 통계 분석 모듈 (100), VLC 적응 모듈 (102) 및 VLC 테이블들 모듈 (104) 을 포함한다. VLC 테이블들 모듈 (104) 은 위에서 도 1 과 관련하여 그리고 아래에서 도 9 및 도 10 와 관련하여 설명하는 바와 같이, 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장한다. VLC 테이블들 모듈 (104) 은 예를 들어, 코드워드들을 심볼 조합들에 맵핑하는 제 1-레벨 VLC 테이블을 정의하는 데이터를 저장할 수도 있다. 또한, VLC 테이블들 모듈 (104) 은 저장될 필요가 없는, 본 개시물 전체에 걸쳐서 제 2-레벨 VLC 테이블로도 지칭되는, 구조화된 코드를 동적으로 발생시키도록 구성될 수도 있다. 통계 분석 모듈 (100) 은 후보 심볼 조합들의 세트에 대한 코딩 통계를 수집한다. 통계 분석 모듈 (100) 은 주어진 콘텍스트에 대한 심볼 조합들의 발생 확률들을 추적하고, 통계 분석 모듈 (100) 에 의해 수집된 코딩 통계에 기초하여, VLC 적응 모듈 (102) 은 제 1-레벨 VLC 테이블의 코드워드들과 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정할 수도 있다.
도 5 는 본 개시물에서 설명되는 여러 기법들을 구현하도록 구성된 엔트로피 디코딩 유닛 (52) 의 블록도이다. 도 1 및 도 5 의 예들에서 위에서 나타낸 바와 같이, 엔트로피 디코딩 유닛 (52) 은 비디오 디코더 (26) 내에 상주한다. 이 예시적인 구성에 대해 설명하지만, 엔트로피 디코딩 유닛 (52) 은 통계적 무손실 코딩을 수행할 수 있는 임의의 디바이스 내에 상주할 수도 있다. 이 점에서, 기법들은 본 개시물에서 설명하는 예들에 한정되지 않아야 한다. 도 3 에 나타낸 바와 같이, 엔트로피 디코딩 유닛 (52) 은 예컨대, 소스 디바이스 (12) 로부터 채널 (16) (도 1) 을 통해서 인코딩된 비디오 비트스트림을 수신하고, 그 비트스트림을 엔트로피 디코딩하여, 양자화된 잔여 계수들을 생성한다.
도 5 의 예에서, 엔트로피 디코딩 유닛 (52) 은 VLC 디코딩 모듈 (106), 통계 분석 모듈 (108), VLC 적응 모듈 (110), 및 VLC 테이블들 모듈 (112) 을 포함한다. VLC 테이블들 모듈 (112) 은 예를 들어, 코드워드들을 심볼 조합들에 맵핑하는 제 1-레벨 VLC 테이블을 정의하는 데이터를 저장할 수도 있다. 또한, VLC 테이블들 모듈 (112) 은 저장될 필요가 없는, 본 개시물 전체에 걸쳐서 제 2-레벨 VLC 테이블로도 지칭되는, 구조화된 코드를 동적으로 디코딩하도록 구성될 수도 있다. VLC 테이블들 모듈 (112) 에 의해 유지되는 제 1-레벨 및 제 2-레벨 VLC 테이블들은, 비디오 인코더 (20) 에서 할당되는 코드워드들이 비디오 디코더 (26) 에서 디코딩될 수 있도록, VLC 테이블들 모듈들 (104) 에 의해 유지되는 VLC 테이블들에 매칭한다. 통계 분석 모듈 (108) 은 주어진 콘텍스트에 대한 심볼 조합들의 발생 확률들을 추적하고, 특정의 심볼 조합의 발생이 더 많이 또는 더 적게 가능하게 되면, VLC 적응 모듈 (110) 은 특정의 심볼 조합을 VLC 테이블들 모듈 (112) 에 의해 유지되는 VLC 테이블들에서의 더 짧은 코드워드 또는 더 긴 코드워드 중 어느 하나에 재맵핑한다.
엔트로피 코딩은 주어진 데이터 세트를 표현하는데 필요로 하는 비트들의 수를 추가로 감소시키는데 사용되는 무손실 프로세스이다. 엔트로피 코딩은 주어진 데이터 세트의 심볼 분포 속성을 이용하며, 일반적으로 더 짧은 코드워드들을 데이터 세트의 보다 빈번하게 발생하는 멤버들에 할당한다. 본 예에서, 주어진 데이터 세트는 가능한 심볼 조합들의 세트이며, 더 짧은 코드워드들이 가장 빈번하게 발생하는 특정의 심볼 조합들에 일반적으로 할당된다. 엔트로피 인코딩 유닛 (46) 의 통계 분석 모듈 (100) 및 엔트로피 디코딩 유닛 (52) 의 통계 분석 모듈 (108) 은 주어진 콘텍스트에 대해, 그 콘텍스트에서 가장 빈번하게 발생하는 심볼 조합들이 더 짧은 코드워드들에 맵핑하도록, 특정의 심볼 조합들의 발생 확률들을 추적하고 유지할 수 있다. 일부 심볼 조합들의 발생이 다른 심볼 조합들의 발생보다 더 가능성이 있거나 또는 덜 가능성이 있게 되면, 그들의 발생 확률에 기초하여, 일부 심볼 조합들을 더 긴 코드워드 또는 더 짧은 코드워드 중 어느 하나에 재맵핑함으로써, 엔트로피 인코딩 유닛 (46) 의 VLC 적응 모듈 (102) 은 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블들을 업데이트하고, 엔트로피 디코딩 유닛 (52) 의 VLC 적응 모듈 (110) 은 VLC 테이블 모듈 (112) 에 의해 유지되는 VLC 테이블들을 업데이트한다. 통계 분석 모듈 (100) 및 VLC 적응 모듈 (102) 은 통계 분석 모듈 (108) 및 VLC 적응 모듈 (110) 과 동일한 데이터 프로세싱 기법들을 구현하도록 구성될 수 있다. 따라서, 엔트로피 인코딩 유닛 (46) 에서 발생하는 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블들에 대한 변화가, 그 변화들을 반영하는 데이터가 엔트로피 인코딩 유닛 (46) 과 엔트로피 디코딩 유닛 (52) 사이에서 전송되어짐 없이, 엔트로피 디코딩 유닛 (52) 에서, VLC 테이블 모듈 (112) 에 의해 유지되는 VLC 테이블들에 반영될 수 있다.
엔트로피 코딩 전에, 블록으로부터의 변환 계수들이 엔트로피 인코딩 유닛 (46) 에 의해 사용되는 스캐닝 순서에 기초하여, 순서화된 1 차원 어레이로 재배열된다. 도 9 및 도 10 의 예를 참조하여 아래에서 좀더 자세히 나타낸 바와 같이, 변환 계수들은 하나 이상의 심볼 조합들을 이용하여 기술될 것이다. 엔트로피 인코딩 유닛 (46) 의 VLC 인코딩 모듈 (98) 이 심볼 조합들을 특정의 형태로 코딩하고, 엔트로피 디코딩 유닛 (52) 이 그 코딩된 데이터를 디코딩하여, 심볼 조합들을 재생하며, 궁극적으로, 변환 블록을 재생한다. VLC 테이블들, 예컨대 VLC 테이블들 모듈들 (104, 112) 에 의해 유지되는 VLC 테이블들이, 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (46) 과 비디오 디코더 (26) 의 엔트로피 디코딩 유닛 (52) 양자에 저장되며, VLC 테이블로부터의 각각의 코드워드는 소정의 콘텍스트에서 소정의 심볼 조합을 나타낸다.
4 × 4 보다 큰 변환에 대해 모든 가능한 심볼 조합들을 커버하기 위해, 다수의 코드워드들이 VLC 테이블들 모듈들 (104, 112) 에 의해 유지되는 VLC 테이블들에 요구될 수도 있다. 그러나, 더 큰 사이즈 VLC 테이블은 코드워드들을 저장하기 위한 더 많은 메모리를 필요로 한다. 이러한 요건을 경감하기 위해, 본 개시물의 양태들은 2 개 이상의 레벨들을 가진 VLC 테이블들을 유지하는 VLC 테이블들 모듈들 (104, 112) 을 포함한다. 2-레벨 테이블에서, 예를 들어, 제 1 레벨은 다수의 가변 길이 코드들로 이루어질 것이며, 그 중 하나의 가변 길이 코드는 이스케이프 코드를 나타낸다. 제 2 레벨은 구조화된 VLC 코드들, 예컨대 골롬-라이스 (Golomb-Rice) 코드의 그룹으로 이루어질 것이다. 그 구조화된 성질로 인해, 제 2-레벨 VLC 코드들이 엔트로피 인코딩 유닛 (46) 과 엔트로피 디코딩 유닛 (52) 양자에서 즉시 동적으로 결정될 수 있으므로, 저장될 필요가 없다.
2-레벨 VLC 테이블에 의해, 오직 가능한 심볼 조합들의 서브세트만이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑된다. 엔트로피 인코딩 유닛 (46) 은 나머지 심볼 조합들을 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩한다.
가능한 심볼 조합들의 개수는 제 1-레벨 VLC 테이블에서의 가변 길이 코드들의 개수보다 클 수도 있다. 이 경우, 가능한 심볼 조합들 모두가 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑될 후보 심볼 조합들일 수 있다. 소정의 콘텍스트 하에서의 발생 확률에 기초하여, 엔트로피 인코딩 유닛 (46) 은 최고 발생 확률들을 가진 오직 후보 심볼 조합들만을 제 1-레벨 VLC 테이블에서의 코드워드에 맵핑할 것이다. 엔트로피 인코딩 유닛 (46) 은 나머지 후보 조합들을 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩할 수 있다.
예를 들어, N 이 가능한 심볼 조합들의 개수를 나타내고 M 이 제 1-레벨 VLC 테이블에서의 가변 길이 코드 엔트리들의 개수를 나타내고 N 의 값이 M 보다 크면, N 개의 심볼 조합들은 모두 후보 심볼 조합들일 것이다. N 개의 후보 심볼 조합들 중 어느 것이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑되는지가 각각의 후보 심볼 조합의 발생 확률에 기초하여 결정될 수 있다. 엔트로피 인코딩 유닛 (46) 은 오직 N 개의 가능한 조합들의 (M-1) 개의 심볼 조합들만을 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑하고 나머지 (N-M+1) 개의 심볼 조합들을 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩한다.
본 개시물의 양태들은 제 1-레벨 VLC 테이블에서의 코드워드들에 맵핑될 후보들인 심볼 조합들의 총 개수를 감소시킴으로써, 코딩 효율을 개선시킬 수도 있다. 위에서 설명한 바와 같이, 심볼 조합들에의 코드워드들의 맵핑은 비디오 코딩의 초기 스테이지들 동안, 또는 코딩되는 비디오의 콘텐츠가 비디오의 일 부분으로 하여금 이전에 코딩된 부분들과는 상당히 상이한 콘텐츠 통계를 갖도록 하는 변화를 경험할 때, 종종 차선일 수 있다. 단일 컷-오프-런 값 또는 다수의 컷-오프-런 값들에 기초하여, 제 1-레벨 VLC 테이블에 대한 후보 조합들을 제한하는 것은, VLC 테이블들 모듈들 (104, 112) 에 의해 유지되는 VLC 테이블들로 하여금, 코딩의 초기 스테이지들 동안, 그리고 콘텐츠 통계가 변할 때 발생하는 심볼 조합들의 변하는 발생 확률들을 더 빨리 추적하도록 함으로써, 특히, 4 × 4 보다 큰 변환 블록들에 대한, 코딩 및 디코딩 효율을 개선시킬 수도 있다.
추가적으로, 본 개시물의 양태들은 통계 분석 모듈 (100) 및 통계 분석 모듈 (108) 이 발생 확률들을 추적하는데 필요로 하는 심볼 조합들의 개수를 제한함으로써, 코딩 효율을 개선시킬 수도 있다. 예를 들어, 4 × 4 보다 큰 변환 블록은 수천 또는 심지어는 만개를 넘는 가능한 심볼 조합들을 가질지 모른다. 본 개시물의 양태들은 가장 빈번하게 발생하는 심볼 조합들을 포함할 가능성이 있는 전체 가능한 심볼 조합들의 서브세트를 식별하는 것을 포함한다. 따라서, 통계 분석 모듈 (100) 및 통계 분석 모듈 (108) 은 모든 가능한 심볼 조합들 대신에 가능한 심볼 조합들의 서브세트에 대해 발생 확률들을 단지 추적할 수 있으며, 따라서 통계 분석 모듈 (100) 및 통계 분석 모듈 (108) 에 전용될 필요가 있는 프로세싱 리소스들의 양을 감소시킬 수 있다. 비록 일부 빈번하게 발생하는 심볼 조합들이 가능한 심볼 조합들의 서브세트로부터 제외되더라도, 통계 분석 모듈 (100) 및 통계 분석 모듈 (108) 에 의해 이용되는 프로세싱 리소스들에서의 감소는 여전히 전체 시스템 성능에서 네트-포지티브 (net-positive) 일 수도 있다.
더 나은 코딩 효율을 위해, VLC 테이블들 모듈들 (104) 및 VLC 테이블들 모듈 (112) 은, 주어진 환경 (또는 콘텍스트) 에 대해, 코드워드 길이가 그 주어진 환경에 대한 심볼 분포 속성에 더 잘 매칭할 수 있도록 상이한 VLC 테이블이 사용될 수 있도록, 다수의 인자들에 기초하여 복수의 VLC 테이블들을 유지할 수 있다.
도 6 은 본 개시물의 양태들을 구현하는 비디오 인코딩 방법을 나타내는 플로우차트이다. 이들 양태들은 예를 들어, 도 1 내지 도 5 에 나타낸 디바이스들에 의해 수행될 수도 있으며, 도 1 내지 도 5 에 나타낸 디바이스들과 관련하여 설명될 것이다. 소스 디바이스 (12) 의 비디오 인코더 (20) 와 같은 비디오 인코딩 디바이스의 인코더에서, 비디오 데이터의 프레임들은 인코딩되어, 비디오 디코딩 디바이스, 예컨대 수신 디바이스 (14) 에 송신될 수 있다. 비디오 인코더 (20) 는 비디오 데이터의 프레임들을 예측 블록들로 파티셔닝하고, 예측 블록들을 변환하여 양자화한다 (블록 601). 비디오 인코더 (20) 는 변환 블록의 변환 계수들을 나타내기 위해 하나 이상의 심볼 조합들의 세트를 결정한다 (블록 602). 각각의 심볼 조합은 변환 블록의 변환 계수들의 부분에 대한 런, GTO, 및/또는 EOB 정보를 나타낼 수 있다. 변환 블록들의 상이한 사이즈들의 경우, 비디오 인코더 (20) 는 하나 이상의 멀티-레벨 VLC 테이블들, 예컨대 엔트로피 인코딩 유닛 (46) 에 있는 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블들을 정의하는 데이터를 저장한다. 코딩될 심볼 조합에 대해, 비디오 인코더 (20) 는 코딩될 심볼 조합과 연관되는 콘텍스트 뿐만 아니라 변환 블록의 사이즈에 기초하여, VLC 테이블들 모듈 (104) 에 의해 유지되는 특정의 VLC 테이블을 식별한다 (블록 603). 비디오 인코더 (20) 는 예를 들어, 그 심볼 조합과 연관되는 제로들의 런의 제 1 제로 계수의 포지션 인덱스, 변환 블록에 대한 이전에 코딩된 런 및 레벨 값들에 기초하여 콘텍스트를 결정할 수도 있으며, 또는 콘텍스트가 슬라이스 헤더에서 시그널링될 수도 있다.
컷-오프-런 값보다 큰 런을 나타내는 런 정보를 나타내는 심볼 조합을 식별하는 것에 응답하여 (블록 604, 예 경로), 비디오 인코더 (20) 는 그 심볼 조합에 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블의 코드워드의 연쇄를 포함하는 코드워드를 할당한다 (블록 605). 제 2-레벨 VLC 테이블은 예를 들어, 구조화된 VLC 코드, 예컨대 골롬-라이스 (Golomb-Rice) 코드를 포함할 수도 있다. 특정의 변환 블록에 대한 컷-오프-런 값은 변환 블록의 사이즈에 기초하여 결정될 수 있다. 예를 들어, 8 × 8 변환 블록의 심볼 조합을 코딩할 때의 컷-오프-런 값은, 16 × 16 변환 블록 또는 8 × 16 변환 블록의 심볼 조합을 코딩할 때의 컷-오프-런 값과는 상이할 것이다.
컷-오프-런 값 이하인 런을 나타내는 런 정보를 나타내는 심볼 조합을 식별하는 것에 응답하여 (블록 603, 아니오 경로), 비디오 인코더 (20) 는 심볼 조합에 제 1-레벨 VLC 테이블로부터의 코드워드를 할당한다 (블록 606). 일부 구현들에서, 제 1-레벨 VLC 테이블로부터의 코드워드는 그 심볼 조합이 또한 제 2 컷-오프-런 값 이하인 런을 나타내는 런 정보를 포함하면, 런, GTO, 및 EOB 정보를 포함할 것이나, 제 1-레벨 VLC 테이블로부터의 코드워드는 그 심볼 조합이 제 2 컷-오프-런 값보다 더 큰 런을 나타내는 런 정보를 포함하면, 오직 런 정보 또는 오직 런 및 부분 GTO 및 EOB 정보를 포함할 것이다.
도 7 은 본 개시물에서 설명하는 기법들을 구현하는 비디오 인코딩 방법을 나타내는 플로우차트이다. 이 기법들은 예를 들어, 도 1 내지 도 5 에 나타낸 디바이스들에 의해 수행될 수도 있으며, 도 1 내지 도 5 에 나타낸 디바이스들과 관련하여 설명될 것이다. 도 7 에 나타낸 기법들은 도 6 및 도 8 의 기법들과 함께, 또는 독립적으로 구현될 수 있다. 소스 디바이스 (12) 의 비디오 인코더 (20) 와 같은 비디오 인코딩 디바이스의 인코더에서, 복수의 심볼 조합들이 변환 블록의 복수의 디지털 비디오 블록 계수들을 나타내도록 결정될 수 있다. VLC 인코딩 모듈 (98) 은 복수의 심볼 조합들에 대해 런 정보를 식별한다 (블록 701). 런 정보는 사용되는 코딩 방식에 따라서, 넌-제로 계수에 선행하거나 또는 후행하는 인접한 제로 계수들의 개수를 나타낸다. 코딩 프로세스 동안, 엔트로피 인코딩 유닛 (46) 은 멀티-레벨 VLC 테이블을 정의하는 데이터를 저장한다 (블록 702). 멀티-레벨 VLC 테이블들은 제 1-레벨 VLC 테이블 및 제 2-레벨 VLC 테이블을 포함한다. 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑한다.
인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, VLC 인코딩 모듈 (98) 은 제 1 심볼 조합에 제 1 코드워드를 할당한다 (블록 703). 제 1 코드워드는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함한다. 인접한 제로 계수들의 제 2 개수가 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, VLC 인코딩 모듈 (98) 은 제 2 심볼 조합에 제 2 코드워드를 할당한다 (블록 704). 제 2 코드워드는 제 1-레벨 VLC 테이블에 기인한다. 인접한 제로 계수들의 제 3 개수가 컷-오프-런 값 이하이고 제 2 컷-오프-런 값 이하라는 것을 나타내는 제 3 런 정보를 포함하는 제 3 심볼 조합에 대해, 제 3 심볼 조합에 제 1 유형의 코드워드를 할당한다 (블록 705). 제 1 유형의 코드워드는 GTO 정보, EOB 정보, 및 제 3 런 정보를 포함한다. 인접한 제로 계수들의 제 4 개수가 컷-오프-런 값 이하이고 제 2 컷-오프-런 값보다 크다는 것을 나타내는 제 4 런 정보를 포함하는 제 4 심볼 조합에 대해, 제 4 심볼 조합에 제 2 유형의 코드워드를 할당한다 (블록 706). 제 2 유형의 코드워드는 제 4 런 정보를 포함하며, GTO 및 블록 끝 정보를 포함할 수도 있고 또는 포함하지 않을 수도 있다.
도 8 은 본 개시물에서 설명하는 기법들을 구현하는 비디오 인코딩 방법을 나타내는 플로우차트이다. 이 기법들은 예를 들어, 도 1 내지 도 5 에 나타낸 디바이스들에 의해 수행될 수도 있으며 도 1 내지 도 5 에 나타낸 디바이스들과 관련하여 설명될 것이다. 도 8 에 나타낸 기법들은 도 7 및 도 8 의 기법들과 함께, 또는 독립적으로 구현될 수 있다. 예컨대 도 6 및 도 7 과 관련하여 설명한 VLC 코딩 방법들과 같은 VLC 코딩을 수행할 때 (블록 801), 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (46) 은 복수의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장할 수 있다 (블록 802). 멀티-레벨 VLC 테이블들은 심볼 조합들을 코드워드들에 맵핑하는 제 1-레벨 VLC 테이블들을 포함할 수 있다. 통계 분석 모듈 (100) 은 후보 심볼 조합들의 세트의 발생 확률에 관한 통계를 유지하고 (블록 803), 그 수집된 통계에 기초하여, VLC 적응 모듈 (102) 은 제 1-레벨 VLC 테이블에서의 심볼 조합들에의 코드워드들의 맵핑을 조정한다 (블록 804). 도 9 및 도 10 의 예와 관련하여 위에서 그리고 아래에서 좀더 자세하게 설명하는 바와 같이, 엔트로피 인코딩 유닛 (46) 은 단일 컷-오프-런 값 또는 다수의 컷-오프-런 값들에 기초하여, 후보 심볼 조합들의 세트를 제한할 수 있다. 또한, 도 8 과 관련하여 설명하는 기법들의 양태들은 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블들에서의 심볼 조합들 및 코드워드들의 맵핑에 대한 변화들이, 그 변화들을 기술하는 데이터, 또는 그 변화들을 기술하는 오직 제한된 데이터가, 소스 디바이스 (12) 로부터 수신 디바이스 (14) 로 전달됨 없이, VLC 테이블 모듈들 (112) 에 의해 유지되는 VLC 테이블들에 대해 동시발생적으로 수행되도록, 수신 디바이스 (14) 에서, 엔트로피 디코딩 유닛 (52) 의 통계 분석 모듈 (108) 및 VLC 적응 모듈 (110) 에 의해, 동시발생적으로 수행될 수도 있다.
도 10 은 4 × 4 변환 블록을 나타내며, 각각의 정사각형 내의 숫자들은 변환 계수들을 나타낸다. 이하, 도 1 내지 도 5 의 여러 모듈들 및 유닛들의 기능성은 도 10 의 예시적인 4 × 4 변환 블록과 관련하여 설명될 것이다. 도 9 에 나타낸 스캐닝 순서에 따라서, 도 10 의 변환 블록에 대한 변환 계수들의 1 차원 어레이가 비디오 인코더 (20) 에 의해 [0, 3, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 과 같이 발생될 것이다. 설명의 용이성을 위해, 본 예는 4 × 4 변환 블록을 이용하지만, 본 개시물의 양태들은 4 × 4 보다 큰 변환 블록들에 적용가능할 수도 있으며, 4 × 4 보다 큰 변환 블록들에 특히 유리할 수도 있다. 더욱이, 설명의 목적을 위해, 본 예는 변환 계수들을 참조하지만, 본 개시물의 양태들은 다른 유형들의 비디오 블록 데이터, 예컨대 잔여 데이터에도 적용가능할 수도 있다.
도 10 의 예시적인 변환 블록에서와 같이, 변환 블록들은 다수의 제로 계수들을 빈번하게 포함한다. 그 결과, 종종 블록에서 넌-제로 계수의 로케이션 정보를 전달하는데, "런" 또는 "런 길이" 로도 불리는, 각각의 넌-제로 계수를 선행하는 인접한 제로들의 개수가 이용된다. 양자화된 넌-제로 계수의 절대 진폭은 그것의 "레벨" 로 불린다. 보통, 순서화된 계수 어레이의 끝은 제로의 값을 가진 상당한 개수의 연속 변환 계수들을 포함한다. 이들 제로들을 명시적으로 코딩하는 대신, 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (46) 은 변환 블록에서의 나머지 변환 계수들이 모두 제로들이라는 것을 시그널링하기 위해 블록 끝 (EOB) 심볼 패턴을 코딩할 수도 있다. 대안으로, 엔트로피 인코딩 유닛 (46) 은 넌-제로 변환 계수들의 개수가 수신된 이후 나머지 변환 계수들이 모두 제로인 것으로 가정될 수 있도록, 넌-제로 변환 계수들의 개수를 코딩할 수도 있다.
H.264/MPEG-4 AVC 는 변환 계수들을 코딩하는 콘텍스트 적응 가변 길이 코딩 (CAVLC) 방식을 정의한다. CAVLC 은 주로 다음 정보를 가변 길이 코드들로 코딩하는 것을 포함한다:
1. 한 블록에서의 넌-제로 계수들 및 트레일링 계수들 (즉, 1 또는 -1 의 진폭을 가진 계수들) 의 개수.
2. 각각의 트레일링 계수의 부호.
3. 나머지 넌-제로 계수들의 레벨들.
4. 마지막 계수 이전의 제로들의 총 개수.
5. 제로들의 각각의 런.
상기 정보를 코딩할 때, 코드워드의 길이는 그 당시 입수가능한 다른 정보에 기초하여 적응적으로 결정된다. 이것은 콘텍스트 적응 VLC (CAVLC) 로서 통칭된다. 이 코딩 방식은 구체적으로 설계되므로, 16 개의 변환 계수들을 가진 4 × 4 변환 블록들에 적합하다. 그러나, 이 방식은 코딩 효율의 상당한 손실을 초래함 없이는, 더 큰 사이즈 변환 블록들로 쉽게 확장되지 않는다. 고 해상도 콘텐츠에 대한 비디오 코딩의 최근의 관심 집중에 따라, 변환들 뿐만 아니라 더 큰 사이즈들의 예측 블록들이 코딩 효율을 개선시키는데 도움이 됨을 알게 되었다. 그 결과, H.264/MPEG-4 AVC CAVLC 기법들은 그들의 경우에 경쟁력 있는 코딩 성능을 제공하기에는 충분히 유연하지 않을 수도 있다.
본 개시물의 양태들은, 다른 이유들로, 본 개시물의 양태들이 4 × 4 보다 큰 변환 블록들에 적응될 수도 있기 때문에, H.264/MPEG-4 표준에서의 CAVLC 에 비해 유리할 수도 있다. 예를 들어, 본 개시물의 양태들은 8 × 8, 16 × 16, 32 × 32, 8 × 16, 16 × 32, 및 여러 다른 사이즈들의 변환 블록들에 대해서 개선된 코딩 효율을 생성할 수도 있다. 16 × 16 변환 블록은, 예를 들어, 4 × 4 블록의 16 개의 변환 계수들과 비교하여, 256 개의 변환 계수들을 가지며, 따라서, 더 큰 블록 사이즈들에 대해서는 H.264/MPEG-4 CAVLC 기법들을 잠재적으로 비효율적이게 만든다. 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 소스 디바이스 (12) 가 데이터를 수신 디바이스 (14) 에 송신하기 전에, 가변 길이 코드들을 이용하여 변환 블록으로부터의 계수 어레이의 런, 레벨 및 EOB 정보를 함께 코딩한다. 각각의 가변 길이 코드는 런, 레벨, 및 EOB 정보의 소정의 상태를 나타낸다. 좀더 구체적으로는, 각각의 넌-제로 계수에 대해, 가변 길이 코드워드는 다음 정보의 일부 또는 전부를 나타낸다:
a) 런: 그 계수를 선행하는 인접한 제로들의 개수
b) GTO (greater-than-one): 넌-제로 계수의 레벨이 1 보다 큰 경우를 나타냄
c) 블록 끝 (EOB): 코딩되는 넌-제로 계수가 1 차원 계수 어레이에서 마지막 넌-제로 계수인 경우를 나타냄.
일 예로서 도 10 의 변환 블록 및 도 9 의 스캐닝 순서를 이용하여, 계수들의 코딩 순서가 스캐닝 순서 (즉, 1 차원 어레이에서 좌측에서 우측으로) 와 같으면, 비디오 인코더 (20) 에 의해 코딩되어 수신 디바이스 (14) 에 송신되는 심볼 조합들은 다음과 같이 1 차원 지그-재그 스캐닝된 어레이 [0, 3, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 에 대해, (런, GTO, EOB) : (1, 1, 0), (1, 0, 0), (2, 0, 1) 의 형태로 존재한다.
이 예에서, 제 1 심볼 조합 (1, 1, 0) 은, 제 1 넌-제로 계수의 좌측에 하나의 제로가 있다는 것을 의미하는, 1 의 런 값을 포함한다. 제 1 심볼 조합은 넌-제로 계수가 1 보다 큰 값을 갖는다는 것, 이 경우에는, 3 과 같다는 것을 나타내는, 1 의 GTO 값을 포함한다. 제 1 심볼 조합은 제 1 심볼 조합이 1 차원 어레이의 마지막 넌-제로 계수를 포함하지 않는다는 것을 나타내는, 0 의 EOB 값을 포함한다. 제 1 심볼 조합에 기초하여, 비디오 디코더 (26) 의 엔트로피 디코딩 유닛 (52) 은 1 차원 어레이의 [0, 3,...] 부분을 재구성할 수 있다.
제 2 심볼 조합 (1, 0, 0) 은 다음의 넌-제로 변환 계수 (이 예에서, -1) 의 좌측에 하나의 제로가 있다는 것을 나타내는, 1 의 런 값을 포함한다. 제 2 심볼 조합은 넌-제로 변환 계수가 1 보다 큰 값을 갖지 않는다는 것을 나타내는, 0 의 GTO 값을 포함하고, 제 2 심볼 조합은 제 2 심볼 조합이 1 차원 어레이의 마지막 넌-제로 계수를 포함하지 않는다는 것을 나타내는, 0 의 EOB 값을 포함한다. 제 2 심볼 조합에 기초하여, 엔트로피 디코딩 유닛 (52) 은 1 차원 어레이의 [...0, -1,...] 부분을 재구성할 수 있다.
제 3 심볼 조합 (2, 0, 1) 은 넌-제로 변환 계수, 이 경우 1 의 좌측에 2 개의 제로들이 있다는 것을 나타내는, 2 의 런 값을 포함한다. 제 3 심볼 조합은 넌-제로 변환 계수가 1 인 것을 나타내는, 0 의 GTO 값, 및 넌-제로 변환 계수가 1 차원 어레이에서 마지막 넌-제로 변환 계수인 것을 나타내는, 1 의 EOB 값을 포함한다. 제 3 심볼 조합에 기초하여, 엔트로피 디코딩 유닛 (52) 은 그 어레이의 [...0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 부분을 재구성할 수 있으며, 따라서, 모든 3 개의 심볼 조합들에 기초하여, 전체 1 차원 어레이가 재구성될 수 있다. 비디오 인코더 (20) 에서 사용되는 스캐닝 순서를 파악함으로써, 비디오 디코더 (26) 는 변환 블록을 동일한 순서로 재구성할 수 있다.
비디오 인코더 (20) 및 비디오 디코더 (26) 는 VLC 테이블들을 동시에 구성하고 관리할 수 있으며, VLC 테이블로부터의 각각의 코드워드는 (런, GTO, EOB) 의 소정의 상태를 나타낸다. 도 10 에서의 예의 경우, 예를 들어, 3 개의 코드워드들, 즉, 3 개의 심볼 조합들의 각각 마다 하나가, 위에서 언급한 모든 정보를 소스 디바이스 (12) 로부터 수신 디바이스 (14) 로 전달하는데 충분하다.
대안으로, 계수들의 코딩이 또한 정반대의 스캐닝 순서로 수행될 수도 있다. 이러한 경우에, 코딩될 심볼 조합들은 다음과 같이 (런, GTO, EOB) : (2, 0, 0), (1, 0, 0), (1, 1, 1) 의 형태로 존재한다. 이 정반대의 스캐닝 순서 예에서, 제 1 심볼 조합 (2, 0, 0) 은 이 경우, 1 차원 어레이에서 우측에서 좌측으로의 방향으로 먼저 이동하는, 제 1 넌-제로 계수의 좌측에 2 개의 제로 계수들이 있다는 것을 의미하는 2 의 런 값을 갖는다. 제 1 심볼 조합은 넌-제로 변환 계수가 1 의 값을 갖는다는 것을 나타내는 0 의 GTO 값, 및 넌-제로 계수가 1 차원 어레이에서 마지막 넌-제로 계수가 아니라는 것을 나타내는 0 의 EOB 값을 갖는다. 제 1 코드워드에 기초하여, 엔트로피 디코딩 유닛 (52) 은 1 차원 어레이의 [...0, 0, 1...] 부분을 재구성할 수 있다.
제 2 심볼 조합 (1, 0, 0) 이 다음의 넌-제로 계수, 이 경우, -1 의 좌측에 하나의 제로가 있는 것을 나타내는 1 의 런 값을 갖는다. 제 2 심볼 조합은 넌-제로 변환 계수가 1 보다 크지 않은 레벨을 갖는다는 것을 의미하는, 0 의 GTO 값을 갖고, 제 2 심볼 조합은 넌-제로 변환 계수가 1 차원 어레이에서 마지막 넌-제로 변환 계수가 아니라는 것을 나타내는, 0 의 EOB 값을 갖는다. 제 2 코드워드에 기초하여, 엔트로피 디코딩 유닛 (52) 은 1 차원 어레이의 [...0, -1...] 부분을 재구성할 수 있다.
제 3 심볼 조합 (1, 1, 1) 은 다음의 넌-제로 계수의 좌측에 하나의 제로가 있다는 것을 나타내는, 1 의 런 값을 갖는다. 제 3 심볼 조합은 넌-제로 변환 계수가 1 보다 큰 레벨을 갖는다는 것을 나타내는, 1 의 GTO 값을 갖고, 제 3 심볼 조합은 넌-제로 변환 계수가 1 차원 어레이에서 마지막 넌-제로 변환 계수인 것을 나타내는, 1 의 EOB 값을 갖는다. 제 3 심볼 조합에 기초하여, 엔트로피 디코딩 유닛 (52) 은 1 차원 어레이의 [0, 3,....] 부분을 재구성할 수 있다. 비디오 인코더 (20) 에서 사용되는 스캐닝 순서를 파악함으로써, 비디오 디코더 (26) 는 변환 블록을 재구성할 수 있다.
상기 예가 (런, GTO, EOB) 의 소정의 상태를 나타내는 단일 심볼 조합을 제시하지만, 심볼 조합은 런, GTO, 및 EOB 정보의 임의의 조합을 포함할 수도 있다. 예를 들어, (런, GTO, EOB) 의 소정의 상태는 런 정보를 나타내는 제 1 심볼 조합, 및 GTO 및 EOB 정보를 나타내는 제 2 심볼 조합으로 표현될 수도 있다. 제 1 심볼 조합 및 제 2 심볼 조합은 개별적으로 엔트로피 코딩되어 송신될 수 있다. 또다른 예에서, 심볼 조합은 런 정보와, GTO 또는 EOB 정보 중 하나를 나타낼 수도 있거나, 또는 추후 설명하는 바와 같이, 부분 GTO 및 EOB 정보를 가진 런 정보를 포함할 수도 있다.
상기 정보에 더하여, 레벨이 1 보다 큰 그들 계수들에 대해, 소스 디바이스 (12) 는 그 레벨의 값을 개별적으로 코딩하여, 그 값을 수신 디바이스 (14) 에 송신할 수 있다. 추가적으로, 소스 디바이스 (12) 는 1 비트를 이용하여 각각의 넌-제로 계수의 부호를 코딩하여, 그 부호를 수신 디바이스 (14) 에 송신할 수 있다. 1 과 같은, 다수의 넌-제로 변환 계수들로 인해, 이 기법은 넌-제로 변환 계수들에 대한 레벨 정보를 전달하는데 필요로 하는 비트들의 수를 감소시킴으로써, 코딩 효율을 더욱 개선시킬 수도 있다.
주어진 사이즈의 변환 블록에 있어, 런, GTO, 및/또는 EOB 에 대한 모든 가능한 심볼 조합들을 커버하기 위해, 특히, 변환 사이즈가 큰 경우에, 비디오 인코더 (20) 및 비디오 디코더 (26) 에서의 VLC 테이블들에 다수의 코드워드들이 요구될 수도 있다. 그러나 더 큰 사이즈의 VLC 테이블들은, 코드워드들을 저장하기 위해 더 많은 메모리를 필요로 한다. 이러한 요건을 경감하기 위해, 본 개시물의 양태들은 2 개 이상의 레벨들을 포함한 VLC 테이블들을 이용하는 것을 포함한다. 2-레벨 VLC 테이블에서, 예를 들어, 제 1-레벨 테이블은 다수의 가변 길이 코드들을 포함할 것이며, 그 중 하나의 가변 길이 코드가 이스케이프 코드를 나타낸다. 제 2-레벨 테이블은 구조화된 VLC 코드들, 예컨대 골롬-라이스 (Golomb-Rice) 코드의 그룹을 포함할 것이다. 그 구조화된 성질로 인해, 제 2-레벨 VLC 코드들이 비디오 인코더 (20) 와 비디오 디코더 (26) 양자에서 VLC 테이블들 모듈 (104) 및 VLC 테이블들 모듈 (112) 에 의해 각각 동적으로 발생될 수 있기 때문에, 제 2-레벨 VLC 코드들을 저장할 필요가 없다. 이스케이프 코드는 제 1-레벨 VLC 테이블이 아닌 제 2-레벨 VLC 테이블을 이용하여, 비디오 디코더 (26) 에게 특정의 코드워드를 디코딩하도록 통지한다.
2-레벨 VLC 테이블에 의하면, 본 개시물에서 설명하는 바와 같이, 오직 런, GTO, 및/또는 EOB 의 심볼 조합들의 서브세트만이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑된다. 비디오 인코더 (20) 는 나머지 심볼 조합들을 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩한다. 이스케이프 코드를 검출하자 마자, 비디오 디코더 (26) 는 제 2-레벨 VLC 테이블을 이용하여 코드워드를 디코딩한다.
런, GTO, 및/또는 EOB 에 대한 가능한 심볼 조합들의 개수는 제 1-레벨 VLC 테이블에서의 가변 길이 코드들의 개수보다 더 클 수도 있다. 이러한 경우, 가능한 심볼 조합들 모두는 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑될 후보 심볼 조합들일 수 있다. 소정의 콘텍스트 하에서의 발생 확률에 기초하여, 오직 가장 자주 발생하는 후보 심볼 조합들만이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 각각 맵핑될 것이다. 나머지 후보 심볼 조합들은 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩될 수 있다.
예를 들어, N 이 가능한 심볼 조합들의 개수를 나타내고 M 이 제 1-레벨 VLC 테이블에서의 가변 길이 코드 엔트리들의 개수를 나타내고 N 의 값이 M 보다 크면, N 개의 심볼 조합들은 모두 후보 심볼 조합들일 것이다. N 개의 후보 심볼 조합들 중 어느 것이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑되는지는 각각의 후보 심볼 조합의 발생 확률에 기초하여 결정될 수 있다. 결국, N 개의 가능한 조합들 중, 런, GTO, 및/또는 EOB 에 대한 오직 (M-1) 개의 심볼 조합들만이 제 1-레벨 VLC 테이블에서의 가변 길이 코드에 맵핑된다. 비디오 인코더 (20) 는 나머지 (N-M+1) 개의 심볼 조합들을 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩한다.
본 개시물의 양태는 VLC 테이블에 대한 후보 심볼 조합들의 개수를 감소시키기 위해 (런, GTO, EOB) 상태의 성분들을 개별적으로 코딩하는 비디오 인코더 (20) 를 포함한다. 예를 들어, 비디오 인코더 (20) 는 오직 VLC 테이블이나 제 1-레벨 VLC 테이블로부터의 코드워드를 이용하여, 또는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서, (런, GTO, EOB) 상태의 런 정보를 코딩할 수 있을 것이다. 비디오 인코더 (20) 는 런 정보와 별개로, GTO 및 EOB 정보를 코딩할 수 있을 것이다. 또다른 예에서, 비디오 인코더 (20) 는 오직 제 1-레벨 VLC 테이블로부터의 코드워드들을 이용하여, GTO 및 EOB 에 관한 부분 정보와 함께, 런 정보를 코딩할 수 있을 것이다. 이러한 부분 정보의 예가 OR(GTO, EOB) 일 것이며, 여기서 OR 은 논리 OR 연산을 나타낸다. 그 결과, 런 및 OR(GTO, EOB) 의 값은 VLC 테이블로부터의 코드워드를 이용하여 함께 코딩될 수 있다. GTO 및 EOB 에 관한 좀더 상세한 정보는 개별적으로 코딩될 수 있다. GTO 및 EOB 값들 중 어느 하나 또는 양자가 넌-제로이면 (즉, OR 연산이 참이면), 비디오 디코더 (26) 가 좀더 상세한 정보를 프로세싱할 것이다. GTO 값 및 EOB 값 양자가 제로이면 (즉, OR 연산이 거짓이면), 비디오 디코더 (26) 가 어떤 추가 정보도 디코딩될 필요가 없다는 것을 알 것이다.
본 개시물의 양태들은 제 1-레벨 VLC 테이블에서의 코드워드들에 맵핑될 후보들인 심볼 조합들의 총 개수를 감소시킴으로써, 코딩 효율을 개선시킬 수도 있다. 일 양태에서, 컷-오프-런 값은 각각의 상이한 사이즈의 변환 블록에 대해 정의될 수 있다. 그 후, 변환 블록 사이즈 및 연관된 컷-오프-런 값에 기초하여, 오직 컷-오프-런 값보다 크지 않은 런과 연관되는 심볼 조합들만이 제 1-레벨 VLC 테이블에서의 가변 길이 코드워드에 맵핑될 수도 있는 후보 조합들이다. 컷-오프-런 값보다 큰 런과 연관되는 심볼 조합들은 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 코딩될 수 있다. 엔트로피 인코딩 유닛 (46) 의 VLC 인코딩 모듈 (98) 은, 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 제 1 심볼 조합이 나타내면, 제 1-레벨 VLC 테이블로부터의 이스케이프 코드를 포함하는 제 1 코드워드를 제 1 심볼 조합에 할당한다. 엔트로피 인코딩 유닛 (46) 의 VLC 인코딩 모듈 (98) 은, 인접한 제로 계수들의 제 2 개수가 컷-오프-런 값 이하라는 것을 제 2 심볼 조합이 나타내면, 제 2 코드워드를 제 2 심볼 조합에 할당한다. 제 2 코드워드는 제 1-레벨 VLC 테이블로부터의 코드워드이다.
또 다른 양태에서, 2 개의 컷-오프-런 값들, 즉, run1run2 (여기서 run1 run2) 이 각각의 상이한 사이즈의 변환 블록에 대해 정의될 수 있다. 그 후, 변환 블록 사이즈 및 연관된 컷-오프-런 값들에 기초하여, 엔트로피 인코딩 유닛 (46) 은 오직, run2 보다 크지 않은 런과 연관되는 이들 심볼 조합들만을, 제 1-레벨 VLC 테이블에서의 가변 길이 코드워드를 이용하여 코딩될 수도 있는 후보 심볼 조합들로서 취급한다. 그러나, 엔트로피 인코딩 유닛 (46) 은 오직, run1 보다 크지 않은 런과 연관되는 심볼 조합의 성분들만을 공통의 방식 (joint manner) 으로 코딩한다 (즉, 런, GTO, 및 EOB 는 하나의 코드워드로서 함께 코딩될 수 있다). 엔트로피 인코딩 유닛 (46) 은 run1 보다 큰 런과 연관되는 심볼 조합의 성분들을 개별적으로 코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (46) 은 VLC 테이블들을 이용하여 (제 1-레벨 VLC 테이블에서의 코드워드로, 또는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서) 오직 이들 심볼 조합들의 런 정보만을 코딩하고, 런 정보와 별개로, 이들 심볼 조합들에 대한 GTO 및 EOB 정보를 코딩할 수 있을 것이다.
2 개의 컷-오프-런 값들 (run1run2) 을 이용할 때, 엔트로피 인코딩 유닛 (46) 의 VLC 인코딩 모듈 (98) 은, 제 1 유형의 코드워드를, 인접한 제로 계수들의 개수가 run1 이하이고 run2 이하라는 것을 나타내는 런 정보를 갖는 심볼 조합에 할당한다. 제 1 유형의 코드워드는 예를 들어, GTO 정보, 블록 끝 정보, 및 런 정보를 포함할 수도 있다. 엔트로피 인코딩 유닛 (46) 의 VLC 인코딩 모듈 (98) 은 제 2 유형의 코드워드를, 인접한 제로 계수들의 개수가 run2 이하이고 run1 보다 크다는 것을 나타내는 런 정보를 포함하는 심볼 조합에 할당한다. 제 2 유형의 코드워드는 런 정보를 포함하며, 또한 부분 GTO (partial greater-than-one) 및 블록 끝 정보를 포함할 수도 있다.
또 다른 양태에서, run1 보다 크지만 run2 이하인 런들을 갖는 이들 심볼 조합들에 대해, 엔트로피 인코딩 유닛 (46) 은 오직 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블로부터의 코드워드를 제 1-레벨 VLC 테이블에서의 코드워드로서 또는 제 1-레벨 VLC 테이블로부터의 이스케이프 코드와 제 2-레벨 VLC 테이블로부터의 코드워드의 연쇄로서 이용하여, GTO 및 EOB 에 관한 부분 정보와 함께, 런 정보만을 코딩한다. 이러한 부분 정보의 일 예가 OR(GTO, EOB) 로 표현될 수 있으며, 여기서 OR 은 논리 OR 연산을 나타낸다. 그 결과, 엔트로피 인코딩 유닛 (46) 은 VLC 테이블들 모듈 (104) 에 의해 유지되는 VLC 테이블로부터의 코드워드를 이용하여 런 및 OR(GTO, EOB) 의 값을 함께 코딩하고, GTO 및 EOB 에 관한 보다 상세한 정보를 개별적으로 코딩한다.
예컨대, 단일 컷-오프-런 값 또는 다수의 컷-오프-런 값들에 기초하여, 제 1-레벨 VLC 테이블에 대한 후보 심볼 조합들의 개수를 제한하는 본 개시물의 양태들은, 특히, 4 × 4 보다 큰 변환 블록들에 대해, 코딩 및 디코딩 효율을 개선시킬 수도 있다.
추가적으로, 본 개시물의 양태들은 비디오 인코더 (20) 및 비디오 디코더 (26) 가 발생 확률들을 추적해야 하는 심볼 조합들의 개수를 제한함으로써, 코딩 효율을 개선시킬 수도 있다. 예를 들어, 4 × 4 보다 큰 변환 블록은 런, GTO, 및 EOB 에 대해서 수천 또는 심지어는 만개를 넘는 가능한 심볼 조합들을 가질 것이다. 본 개시물의 양태들은 가장 빈번하게 발생하는 심볼 조합들을 포함할 가능성이 있는 전체 가능한 심볼 조합들의 서브세트를 식별하는데 이용될 수 있다. 그러면, 비디오 인코더 (20) 및 비디오 디코더 (26) 가 오직, 모든 가능한 심볼 조합들 대신에, 서브세트에 대해서만 발생 확률들을 추적할 수 있으므로, 발생 확률들을 추적하는 것에 전용된 프로세싱 리소스들의 양을 감소시킬 수 있다. 비록 일부 빈번하게 발생하는 심볼 조합들이 그 서브세트로부터 제외되더라도, 발생 확률들을 추적하는 것에 전용된 프로세싱 리소스들에서의 감소는 여전히 전체 시스템 성능에서 네트-포지티브 (net-positive) 일 수도 있다.
더 나은 코딩 효율을 위해, 비디오 인코더 (20) 는, 각각의 주어진 환경 (또는 콘텍스트) 에 대해, 코드워드 길이가 그 주어진 환경에 대한 심볼 분포 속성에 더 잘 매칭할 수 있도록 상이한 VLC 테이블이 사용될 수 있도록, 다수의 인자들에 기초하여 복수의 VLC 테이블들로부터 적합한 VLC 테이블을 선택할 수 있다.
또 다른 양태는 인코딩 프로세스 동안, 코딩될 심볼 조합과 연관되는 런의 제 1 제로 계수의 포지션 인덱스에 기초하여 VLC 테이블들 모듈 (104) 에 의해 유지되는 특정의 테이블 VLC 테이블을 선택하는 VLC 인코딩 모듈 (98) 을 포함한다. 코딩은 계수 어레이에서 제 1 계수로부터 시작한다. 심볼 조합을 코딩하기 위해, 심볼 조합과 연관되는 런의 제 1 제로 계수의 포지션 인덱스가 체크된다. 그 후, 스캐닝 순서에서의 포지션 인덱스 값에 기초하여, VLC 테이블이 현재의 심볼 조합을 코딩하기 위해 선택된다. 다시, 도 3 을 일 예로 이용하면, 디코딩될 심볼 조합들은 (1, 1, 0), (1, 0, 0), (2, 0, 1) 이다. 심볼 조합 (1, 1, 0) 에 대해, 런의 제 1 제로 계수의 포지션 인덱스 값은 0 이다. 유사하게, (1, 0, 0) 및 (2, 0, 1) 에 대해, 포지션 인덱스 값들은 각각 2 및 4 이다. VLC 코드워드를 수신하는 것에 응답하여, VLC 디코딩 모듈 (106) 은 VLC 테이블들 (112) 내에서, VLC 인코딩 모듈 (98) 에 의해 사용되는 특정의 VLC 테이블을 식별하고 VLC 코드워드로부터 심볼 조합을 결정하도록 구성될 수 있다.
본 개시물의 또 다른 양태는 그 블록에서 이전에 코딩된 런 및 레벨 값들 양자에 기초하여 VLC 테이블들 모듈 (104) 에 의해 유지되는 특정의 VLC 테이블을 선택하는 VLC 인코딩 모듈 (98) 을 포함한다. 코딩은 계수 어레이에서 마지막 넌-제로 계수로부터 시작하며 정반대의 스캐닝 순서로 수행된다. 현재의 심볼 조합을 코딩하기 위해, 이전에 코딩된 심볼 조합의 런 뿐만 아니라 그 블록에서 모든 이전에 코딩된 심볼 조합들의 레벨들이 체크된다. 1 의 레벨을 가진 이전에 코딩된 심볼 조합들의 개수가, 이전에 코딩된 심볼 조합의 런과 함께, 현재의 심볼 조합을 코딩하는 콘텍스트로서 사용된다. 그러나, 현재의 블록의 이전에 코딩된 심볼 조합들이 적어도 1 보다 큰 레벨을 포함하면, 오직 이전에 코딩된 심볼 조합의 런만이 현재의 심볼 조합을 코딩하는 콘텍스트로서 사용된다. 구체적으로, 블록에서 제 1 심볼 조합을 코딩하는 콘텍스트를 형성할 때, 1 의 레벨을 가진 이전에 코딩된 심볼 조합들의 개수가 1 로 설정되며, 이전에 코딩된 심볼 조합의 런이 다수의 이전에 코딩된 블록들에서 제 1 코딩된 심볼 조합의 런들의 평균으로서 설정된다.
위에서 설명한 콘텍스트 적응 VLC 테이블들은 상이한 코딩 조건들 하에서 변환 계수들에 대해 설계되고 구성될 수도 있다. 따라서, 다수의 VLC 테이블들이 각각의 콘텍스트에 대해 이용가능할 수도 있다. 본 개시물에서 설명하는 하나의 기법의 양태는 슬라이스 헤더에서 각각의 콘텍스트에 대한 최상의 VLC 테이블의 인덱스를 시그널링하는 것을 포함한다. 추가적으로, 슬라이스에서의 블록들이 코딩되고 있는 동안, 각각의 콘텍스트 하에서의 심볼 조합 발생 확률들이 예를 들어, 통계 분석 모듈 (100) 에 의해 누산될 수 있다. 각각의 콘텍스트 하에서의 심볼 분포 확률들은 소정의 개수의 블록들이 현재의 슬라이스에서 코딩될 때마다 재평가되고 업데이트될 수 있다. 그러면, 업데이트된 심볼 분포 속성에 기초하여, VLC 테이블들에서의 코드워드들이 각각의 콘텍스트에 대해 상이한 심볼 조합들에 재맵핑될 수 있다. 이러한 심볼 조합 발생 확률들의 누산과 재맵핑은 비디오 인코더 (20) 의 통계 분석 모듈 (100) 및 VLC 적응 모듈 (102) 과, 비디오 디코더 (26) 의 통계 분석 모듈 (108) 및 VLC 적응 모듈 (110) 에 의해, 동일한 방법으로 수행될 수 있다. 그 결과, 어떤 추가 정보도 비디오 인코더 (20) 로부터 비디오 디코더 (26) 로 시그널링될 필요가 없다.
본 개시물에서 설명하는 기법들은 적어도 부분적으로, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 예를 들어, 여러 양태들의 기법들은 하나 이상의 마이크로프로세서들, DSP들, ASIC들, FPGA들, 또는 임의의 다른 등가의 통합 또는 이산 로직 회로, 뿐만 아니라, 인코더들, 랩탑, 데스크탑 또는 핸드헬드 컴퓨터들, 무선 모바일 핸드셋들, 셋-탑 박스들, 또는 다른 디바이스들 내에 수록된 이러한 컴폰넌트들의 임의의 조합들 내에서 구현될 수도 있다. 용어 "프로세서" 또는 "프로세싱 회로" 는 일반적으로 전술한 로직 회로의 임의의 회로, 단독으로 또는 다른 로직 회로와 함께, 또는 임의의 다른 등가 회로를 지칭할 수도 있다.
본 개시물에서 설명하는 기법들의 양태들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 모듈들 또는 컴포넌트들로서 설명되는 임의의 피쳐들은 통합 로직 디바이스에 함께, 또는 별개이지만 상호운용의 로직 디바이스들로서 개별적으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 본 개시물에서 설명되는 시스템들 및 디바이스들에 부여되는 기능성은 비일시적 컴퓨터-판독가능 저장 매체, 예컨대 RAM, SDRAM, ROM, NVRAM, EEPROM, 플래시 메모리, 자기 매체들, 광 매체들, 또는 기타 등등 상의 명령들로서 구현될 수도 있다. 용어 "비일시적" 은 저장 매체가 반송파 또는 전파 신호에 수록되지 않는 것을 나타낼 수도 있다. 그러나, 이 용어 "비일시적" 은 저장 매체가 비-이동성인 것을 의미하는 것으로 해석되어서는 안된다. 일 예로서, 저장 매체는 일 디바이스로부터 제거되어 다른 디바이스로 이동될 수도 있다. 또 다른 예로서, 저장 매체는 디바이스에 삽입될 수도 있다. 소정의 예들에서, 비일시적 저장 매체는 시간 경과에 따라 변할 수 있는 데이터를 (예컨대, RAM 에) 저장할 수도 있다. 명령들은 본 개시물에서 설명하는 기능성의 하나 이상의 양태들을 지원하도록 실행될 수도 있다.
프로그램 코드는 하나 이상의 프로세서들, 예컨대 하나 이상의 디지털 신호 프로세서 (DSP) 들, 범용 마이크로프로세서들, 주문형 집적회로 (ASIC) 들, 필드 프로그래밍가능 로직 어레이 (FPGA) 들, 또는 다른 등가의 통합 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본 개시물에서 사용되는 바와 같이, 전술한 구조 또는 설명하는 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 게다가, 일부 양태들에서, 본 개시물에서 설명하는 기능성은 인코딩 및 디코딩을 위해 구성되거나, 또는 결합된 비디오 인코더-디코더 (CODEC) 에 포함되는 전용 소프트웨어 모듈들 또는 하드웨어 유닛들 내에 제공될 수도 있다.
본 개시물의 많은 양태들이 설명되었다. 본 청구항들의 범위로부터 벗어남 없이 여러 변경들이 이루어질 수도 있다. 이들 및 다른 양태들은 다음의 청구항들의 범위 내에 있다.

Claims (60)

  1. 가변 길이 코딩 (VLC) 의 방법으로서,
    변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하는 단계로서, 각각의 심볼 조합은 상기 복수의 디지털 비디오 블록 계수들의 넌-제로 계수에 대응하고, 각각의 심볼 조합은, 인접한 제로 계수들의 개수를 나타내는 런 정보, 및 심볼 조합에 대응하는 넌-제로 계수가 상기 변환 블록의 마지막 넌-제로 계수인지를 나타내는 블록 끝 (end-of-block; EOB) 정보를 식별하는, 상기 런 정보를 식별하는 단계;
    멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하는 단계로서, 상기 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 테이블을 포함하고, 상기 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하는, 상기 데이터를 저장하는 단계; 및
    인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 상기 제 1 심볼 조합에 제 1 코드워드를 할당하는 단계로서, 상기 제 1 코드워드는 상기 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 (escape code) 를 포함하는, 상기 제 1 코드워드를 할당하는 단계를 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  2. 제 1 항에 있어서,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 2 코드워드를 할당하는 단계를 더 포함하며,
    상기 제 2 코드워드는 상기 제 1-레벨 VLC 테이블에 기인하는, 가변 길이 코딩 (VLC) 의 방법.
  3. 제 1 항에 있어서,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하이고 제 2 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 1 유형의 코드워드를 할당하는 단계로서, 상기 제 1 유형의 코드워드는 GTO (greater-than-one) 정보, EOB 정보, 및 상기 제 2 런 정보에 맵핑되는, 상기 제 1 유형의 코드워드를 할당하는 단계; 및
    인접한 제로 계수들의 제 3 개수가 상기 컷-오프-런 값 이하이고 상기 제 2 컷-오프-런 값보다 크다는 것을 나타내는 제 3 런 정보를 포함하는 제 3 심볼 조합에 대해, 상기 제 3 심볼 조합에 제 2 유형의 코드워드를 할당하는 단계로서, 상기 제 2 유형의 코드워드는 상기 제 3 런 정보에 맵핑되는, 상기 제 2 유형의 코드워드를 할당하는 단계를 더 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  4. 제 3 항에 있어서,
    상기 제 2 유형의 코드워드는 부분 GTO 및 EOB 정보에 맵핑되는, 가변 길이 코딩 (VLC) 의 방법.
  5. 제 1 항에 있어서,
    후보 심볼 조합들의 세트에 대한 코딩 통계 (coding statistics) 를 수집하는 단계; 및
    상기 코딩 통계에 기초하여 상기 제 1-레벨 VLC 테이블의 코드워드들과 상기 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정하는 단계를 더 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  6. 제 5 항에 있어서,
    상기 후보 심볼 조합들의 세트는 인접한 제로 계수들의 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 런 정보를 가진 심볼 조합들을 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  7. 제 1 항에 있어서,
    상기 컷-오프-런-값은 상기 변환 블록의 사이즈에 기초하여 결정되는, 가변 길이 코딩 (VLC) 의 방법.
  8. 제 1 항에 있어서,
    복수의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장하는 단계; 및
    특정의 심볼 조합에 대한 콘텍스트에 기초하여, 상기 특정의 심볼 조합을 위해 사용될 상기 복수의 멀티-레벨 VLC 테이블들의 특정의 멀티-레벨 VLC 테이블을 식별하는 단계를 더 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  9. 제 8 항에 있어서,
    상기 콘텍스트는 심볼과 연관되는 제로들의 런의 제 1 제로 계수의 포지션 인덱스에 기초하여 결정되는, 가변 길이 코딩 (VLC) 의 방법.
  10. 제 8 항에 있어서,
    상기 콘텍스트는 상기 변환 블록에 대한 이전에 코딩된 런 및 레벨 값들에 기초하여 결정되는, 가변 길이 코딩 (VLC) 의 방법.
  11. 제 8 항에 있어서,
    상기 콘텍스트는 슬라이스 헤더에서 시그널링되는, 가변 길이 코딩 (VLC) 의 방법.
  12. 제 1 항에 있어서,
    상기 제 2-레벨 테이블은 구조화된 VLC 코드를 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  13. 제 1 항에 있어서,
    상기 제 2-레벨 테이블은 골롬-라이스 (Golomb-Rice) 코드를 포함하는, 가변 길이 코딩 (VLC) 의 방법.
  14. 제 1 항에 있어서,
    상기 가변 길이 코딩 (VLC) 의 방법은 비디오 인코딩 디바이스에 의해 수행되는, 가변 길이 코딩 (VLC) 의 방법.
  15. 제 1 항에 있어서,
    상기 가변 길이 코딩 (VLC) 의 방법은 비디오 디코딩 디바이스에 의해 수행되는, 가변 길이 코딩 (VLC) 의 방법.
  16. 비디오 데이터를 코딩하는 비디오 코딩 디바이스로서,
    멀티-레벨 VLC 테이블을 정의하는 데이터를 저장하도록 구성된 가변 길이 코드 (VLC) 테이블 모듈로서, 상기 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 테이블을 포함하고, 상기 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하며, 각각의 심볼 조합은 변환 블록의 복수의 디지털 비디오 블록 계수들의 넌-제로 계수에 대응하고, 각각의 심볼 조합은, 인접한 제로 계수들의 개수를 나타내는 런 정보, 및 심볼 조합에 대응하는 넌-제로 계수가 상기 변환 블록의 마지막 넌-제로 계수인지를 나타내는 블록 끝 (end-of-block; EOB) 정보를 식별하는, 상기 가변 길이 코드 (VLC) 테이블 모듈; 및
    제 1 코드워드를 제 1 심볼 조합에 할당하도록 구성된 VLC 코딩 모듈로서, 상기 제 1 심볼 조합은 인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하고, 상기 제 1 코드워드는 상기 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 (escape code) 를 포함하는, 상기 VLC 코딩 모듈을 포함하는, 비디오 코딩 디바이스.
  17. 제 16 항에 있어서,
    상기 VLC 코딩 모듈은 또한,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 제 2 코드워드를 할당하도록 구성되며,
    상기 제 2 코드워드는 상기 제 1-레벨 VLC 테이블에 기인하는, 비디오 코딩 디바이스.
  18. 제 16 항에 있어서,
    상기 VLC 코딩 모듈은 또한,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하이고 제 2 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 제 1 유형의 코드워드를 할당하도록 구성되되, 상기 제 1 유형의 코드워드는 GTO (greater-than-one) 정보, EOB 정보, 및 상기 제 2 런 정보에 맵핑되고;
    인접한 제로 계수들의 제 3 개수가 상기 컷-오프-런 값 이하이고 상기 제 2 컷-오프-런 값보다 크다는 것을 나타내는 제 3 런 정보를 포함하는 제 3 심볼 조합에 제 2 유형의 코드워드를 할당하도록 구성되되, 상기 제 2 유형의 코드워드는 상기 제 3 런 정보에 맵핑되는, 비디오 코딩 디바이스.
  19. 제 18 항에 있어서,
    상기 제 2 유형의 코드워드는 부분 GTO 및 EOB 정보에 맵핑되는, 비디오 코딩 디바이스.
  20. 제 16 항에 있어서,
    후보 심볼 조합들의 세트에 대한 코딩 통계 (coding statistics) 를 수집하도록 구성된 통계 분석 모듈; 및
    상기 코딩 통계에 기초하여 상기 제 1-레벨 VLC 테이블의 코드워드들과 상기 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정하도록 구성된 VLC 적응 모듈을 더 포함하는, 비디오 코딩 디바이스.
  21. 제 20 항에 있어서,
    상기 후보 심볼 조합들의 세트는 인접한 제로 계수들의 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 런 정보를 가진 심볼 조합들을 포함하는, 비디오 코딩 디바이스.
  22. 제 16 항에 있어서,
    상기 컷-오프-런-값은 상기 변환 블록의 사이즈에 기초하여 결정되는, 비디오 코딩 디바이스.
  23. 제 16 항에 있어서,
    상기 VLC 테이블 모듈은 또한, 복수의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장하도록 구성되고;
    상기 VLC 코딩 모듈은 또한, 특정의 심볼 조합에 대한 콘텍스트에 기초하여, 상기 특정의 심볼 조합을 위해 사용될 상기 복수의 멀티-레벨 VLC 테이블들의 특정의 멀티-레벨 VLC 테이블을 식별하도록 구성되는, 비디오 코딩 디바이스.
  24. 제 23 항에 있어서,
    상기 콘텍스트는 심볼과 연관되는 제로들의 런의 제 1 제로 계수의 포지션 인덱스에 기초하여 결정되는, 비디오 코딩 디바이스.
  25. 제 23 항에 있어서,
    상기 콘텍스트는 상기 변환 블록에 대한 이전에 코딩된 런 및 레벨 값들에 기초하여 결정되는, 비디오 코딩 디바이스.
  26. 제 23 항에 있어서,
    상기 콘텍스트는 슬라이스 헤더에서 시그널링되는, 비디오 코딩 디바이스.
  27. 제 16 항에 있어서,
    상기 제 2-레벨 테이블은 구조화된 VLC 코드를 포함하는, 비디오 코딩 디바이스.
  28. 제 16 항에 있어서,
    상기 제 2-레벨 테이블은 골롬-라이스 (Golomb-Rice) 코드를 포함하는, 비디오 코딩 디바이스.
  29. 제 16 항에 있어서,
    상기 비디오 코딩 디바이스는 비디오 인코더인, 비디오 코딩 디바이스.
  30. 제 16 항에 있어서,
    상기 비디오 코딩 디바이스는 비디오 디코더인, 비디오 코딩 디바이스.
  31. 비디오 코딩 장치로서,
    변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하는 수단으로서, 각각의 심볼 조합은 상기 복수의 디지털 비디오 블록 계수들의 넌-제로 계수에 대응하고, 각각의 심볼 조합은, 인접한 제로 계수들의 개수를 나타내는 런 정보, 및 심볼 조합에 대응하는 넌-제로 계수가 상기 변환 블록의 마지막 넌-제로 계수인지를 나타내는 블록 끝 (end-of-block; EOB) 정보를 식별하는, 상기 런 정보를 식별하는 수단;
    멀티-레벨 가변 길이 코딩 (VLC) 테이블을 정의하는 데이터를 저장하는 수단으로서, 상기 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 테이블을 포함하고, 상기 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하는, 상기 데이터를 저장하는 수단; 및
    인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 상기 제 1 심볼 조합에 제 1 코드워드를 할당하는 수단으로서, 상기 제 1 코드워드는 상기 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 (escape code) 를 포함하는, 상기 제 1 코드워드를 할당하는 수단을 포함하는, 비디오 코딩 장치.
  32. 제 31 항에 있어서,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 2 코드워드를 할당하는 수단을 더 포함하며,
    상기 제 2 코드워드는 상기 제 1-레벨 VLC 테이블에 기인하는, 비디오 코딩 장치.
  33. 제 31 항에 있어서,
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하이고 제 2 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 1 유형의 코드워드를 할당하는 수단으로서, 상기 제 1 유형의 코드워드는 GTO (greater-than-one) 정보, EOB 정보, 및 상기 제 2 런 정보에 맵핑되는, 상기 제 1 유형의 코드워드를 할당하는 수단; 및
    인접한 제로 계수들의 제 3 개수가 상기 컷-오프-런 값 이하이고 상기 제 2 컷-오프-런 값보다 크다는 것을 나타내는 제 3 런 정보를 포함하는 제 3 심볼 조합에 대해, 상기 제 3 심볼 조합에 제 2 유형의 코드워드를 할당하는 수단으로서, 상기 제 2 유형의 코드워드는 상기 제 3 런 정보에 매핑되는, 상기 제 2 유형의 코드워드를 할당하는 수단을 더 포함하는, 비디오 코딩 장치.
  34. 제 33 항에 있어서,
    상기 제 2 유형의 코드워드는 부분 GTO 및 EOB 정보에 맵핑되는, 비디오 코딩 장치.
  35. 제 31 항에 있어서,
    후보 심볼 조합들의 세트에 대한 코딩 통계 (coding statistics) 를 수집하는 수단; 및
    상기 코딩 통계에 기초하여 상기 제 1-레벨 VLC 테이블의 코드워드들과 상기 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정하는 수단을 더 포함하는, 비디오 코딩 장치.
  36. 제 35 항에 있어서,
    상기 후보 심볼 조합들의 세트는 인접한 제로 계수들의 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 런 정보를 가진 심볼 조합들을 포함하는, 비디오 코딩 장치.
  37. 제 31 항에 있어서,
    상기 컷-오프-런-값은 상기 변환 블록의 사이즈에 기초하여 결정되는, 비디오 코딩 장치.
  38. 제 31 항에 있어서,
    복수의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장하는 수단; 및
    특정의 심볼 조합에 대한 콘텍스트에 기초하여, 상기 특정의 심볼 조합을 위해 사용될 상기 복수의 멀티-레벨 VLC 테이블들의 특정의 멀티-레벨 VLC 테이블을 식별하는 수단을 더 포함하는, 비디오 코딩 장치.
  39. 제 38 항에 있어서,
    상기 콘텍스트는 심볼과 연관되는 제로들의 런의 제 1 제로 계수의 포지션 인덱스에 기초하여 결정되는, 비디오 코딩 장치.
  40. 제 38 항에 있어서,
    상기 콘텍스트는 상기 변환 블록에 대한 이전에 코딩된 런 및 레벨 값들에 기초하여 결정되는, 비디오 코딩 장치.
  41. 제 38 항에 있어서,
    상기 콘텍스트는 슬라이스 헤더에서 시그널링되는, 비디오 코딩 장치.
  42. 제 31 항에 있어서,
    상기 제 2-레벨 테이블은 구조화된 VLC 코드를 포함하는, 비디오 코딩 장치.
  43. 제 31 항에 있어서,
    상기 제 2-레벨 테이블은 골롬-라이스 (Golomb-Rice) 코드를 포함하는, 비디오 코딩 장치.
  44. 제 31 항에 있어서,
    상기 비디오 코딩 장치는 비디오 인코더의 부분인, 비디오 코딩 장치.
  45. 제 31 항에 있어서,
    상기 비디오 코딩 장치는 비디오 디코더의 부분인, 비디오 코딩 장치.
  46. 하나 이상의 명령들을 유형으로 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 하나 이상의 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 :
    변환 블록의 복수의 디지털 비디오 블록 계수들의 복수의 심볼 조합들에 대한 런 정보를 식별하도록 하되, 각각의 심볼 조합은 상기 복수의 디지털 비디오 블록 계수들의 넌-제로 계수에 대응하고, 각각의 심볼 조합은, 인접한 제로 계수들의 개수를 나타내는 런 정보, 및 심볼 조합에 대응하는 넌-제로 계수가 상기 변환 블록의 마지막 넌-제로 계수인지를 나타내는 블록 끝 (end-of-block; EOB) 정보를 식별하고;
    멀티-레벨 가변 길이 코딩 (VLC) 테이블을 정의하는 데이터를 저장하도록 하되, 상기 멀티-레벨 VLC 테이블은 제 1-레벨 VLC 테이블 및 제 2-레벨 테이블을 포함하고, 상기 제 1-레벨 VLC 테이블은 코드워드들을 심볼 조합들에 맵핑하며;
    인접한 제로 계수들의 제 1 개수가 컷-오프-런 값보다 크다는 것을 나타내는 제 1 런 정보를 포함하는 제 1 심볼 조합에 대해, 상기 제 1 심볼 조합에 제 1 코드워드를 할당하도록 하되, 상기 제 1 코드워드는 상기 제 1-레벨 VLC 테이블로부터의 이스케이프 코드 (escape code) 를 포함하는, 컴퓨터 판독가능 저장 매체.
  47. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 :
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 2 코드워드를 할당하도록 하는 하나 이상의 추가적인 명령들을 유형으로 저장하며,
    상기 제 2 코드워드는 상기 제 1-레벨 VLC 테이블에 기인하는, 컴퓨터 판독가능 저장 매체.
  48. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 :
    인접한 제로 계수들의 제 2 개수가 상기 컷-오프-런 값 이하이고 제 2 컷-오프-런 값 이하라는 것을 나타내는 제 2 런 정보를 포함하는 제 2 심볼 조합에 대해, 상기 제 2 심볼 조합에 제 1 유형의 코드워드를 할당하도록 하되, 상기 제 1 유형의 코드워드는 GTO (greater-than-one) 정보, EOB 정보, 및 상기 제 2 런 정보에 맵핑되며;
    인접한 제로 계수들의 제 3 개수가 상기 컷-오프-런 값 이하이고 상기 제 2 컷-오프-런 값보다 크다는 것을 나타내는 제 3 런 정보를 포함하는 제 3 심볼 조합에 대해, 상기 제 3 심볼 조합에 제 2 유형의 코드워드를 할당하도록 하되, 상기 제 2 유형의 코드워드는 상기 제 3 런 정보에 맵핑되는,
    하나 이상의 추가적인 명령들을 유형으로 저장하는, 컴퓨터 판독가능 저장 매체.
  49. 제 48 항에 있어서,
    상기 제 2 유형의 코드워드는 부분 GTO 및 EOB 정보에 맵핑되는, 컴퓨터 판독가능 저장 매체.
  50. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 :
    후보 심볼 조합들의 세트에 대한 코딩 통계 (coding statistics) 를 수집하도록 하고;
    상기 코딩 통계에 기초하여 상기 제 1-레벨 VLC 테이블의 코드워드들과 상기 후보 심볼 조합들의 세트의 서브세트 사이의 맵핑을 조정하도록 하는 하나 이상의 추가적인 명령들을 유형으로 저장하는, 컴퓨터 판독가능 저장 매체.
  51. 제 50 항에 있어서,
    상기 후보 심볼 조합들의 세트는 인접한 제로 계수들의 개수가 상기 컷-오프-런 값 이하라는 것을 나타내는 런 정보를 가진 심볼 조합들을 포함하는, 컴퓨터 판독가능 저장 매체.
  52. 제 46 항에 있어서,
    상기 컷-오프-런-값은 상기 변환 블록의 사이즈에 기초하여 결정되는, 컴퓨터 판독가능 저장 매체.
  53. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 :
    복수의 멀티-레벨 VLC 테이블들을 정의하는 데이터를 저장하도록 하고;
    특정의 심볼 조합에 대한 콘텍스트에 기초하여, 상기 특정의 심볼 조합을 위해 사용될 상기 복수의 멀티-레벨 VLC 테이블들의 특정의 멀티-레벨 VLC 테이블을 식별하도록 하는 하나 이상의 추가적인 명령들을 유형으로 저장하는, 컴퓨터 판독가능 저장 매체.
  54. 제 53 항에 있어서,
    상기 콘텍스트는 심볼과 연관되는 제로들의 런의 제 1 제로 계수의 포지션 인덱스에 기초하여 결정되는, 컴퓨터 판독가능 저장 매체.
  55. 제 53 항에 있어서,
    상기 콘텍스트는 상기 변환 블록에 대한 이전에 코딩된 런 및 레벨 값들에 기초하여 결정되는, 컴퓨터 판독가능 저장 매체.
  56. 제 53 항에 있어서,
    상기 콘텍스트는 슬라이스 헤더에서 시그널링되는, 컴퓨터 판독가능 저장 매체.
  57. 제 46 항에 있어서,
    상기 제 2-레벨 테이블은 구조화된 VLC 코드를 포함하는, 컴퓨터 판독가능 저장 매체.
  58. 제 46 항에 있어서,
    상기 제 2-레벨 테이블은 골롬-라이스 (Golomb-Rice) 코드를 포함하는, 컴퓨터 판독가능 저장 매체.
  59. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들은 비디오 인코더의 부분인, 컴퓨터 판독가능 저장 매체.
  60. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들은 비디오 디코더의 부분인, 컴퓨터 판독가능 저장 매체.
KR1020127029391A 2010-04-09 2011-04-08 비디오 데이터의 코딩을 위한 가변 길이 코드들 KR101354381B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US32264110P 2010-04-09 2010-04-09
US61/322,641 2010-04-09
US12/979,751 2010-12-28
US12/979,751 US8410959B2 (en) 2010-04-09 2010-12-28 Variable length codes for coding of video data
PCT/US2011/031817 WO2011127423A1 (en) 2010-04-09 2011-04-08 Variable length codes for coding of video data

Publications (2)

Publication Number Publication Date
KR20130006689A KR20130006689A (ko) 2013-01-17
KR101354381B1 true KR101354381B1 (ko) 2014-01-23

Family

ID=44760541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127029391A KR101354381B1 (ko) 2010-04-09 2011-04-08 비디오 데이터의 코딩을 위한 가변 길이 코드들

Country Status (6)

Country Link
US (1) US8410959B2 (ko)
EP (1) EP2556670A1 (ko)
KR (1) KR101354381B1 (ko)
CN (1) CN102870413B (ko)
TW (1) TW201206200A (ko)
WO (1) WO2011127423A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101501568B1 (ko) * 2008-07-04 2015-03-12 에스케이 텔레콤주식회사 영상 부호화 및 복호화 장치 및, 방법
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
US8885704B2 (en) * 2010-10-01 2014-11-11 Qualcomm Incorporated Coding prediction modes in video coding
CN107317586B (zh) 2011-01-14 2020-11-06 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
US9491491B2 (en) * 2011-06-03 2016-11-08 Qualcomm Incorporated Run-mode based coefficient coding for video coding
CN108337522B (zh) * 2011-06-15 2022-04-19 韩国电子通信研究院 可伸缩解码方法/设备、可伸缩编码方法/设备和介质
WO2013067435A1 (en) * 2011-11-04 2013-05-10 Huawei Technologies Co., Ltd. Differential pulse code modulation intra prediction for high efficiency video coding
KR101818102B1 (ko) 2012-04-13 2018-01-12 캐논 가부시끼가이샤 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템
US9088770B2 (en) 2012-08-15 2015-07-21 Intel Corporation Size based transform unit context derivation
KR102257542B1 (ko) * 2012-10-01 2021-05-31 지이 비디오 컴프레션, 엘엘씨 향상 레이어에서 변환 계수 블록들의 서브블록-기반 코딩을 이용한 스케일러블 비디오 코딩
EP2946553B1 (en) * 2013-01-16 2019-01-02 BlackBerry Limited Transform coefficient coding for context-adaptive binary entropy coding of video
WO2014120368A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
GB2511493B (en) * 2013-03-01 2017-04-05 Gurulogic Microsystems Oy Entropy modifier and method
CN105323583B (zh) 2014-06-13 2019-11-15 财团法人工业技术研究院 编码方法、解码方法、编解码系统、编码器与解码器
US10097833B2 (en) * 2014-12-26 2018-10-09 Intel Corporation Method and system of entropy coding using look-up table based probability updating for video coding
US9781424B2 (en) * 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
US10425659B2 (en) * 2015-01-30 2019-09-24 Qualcomm Incorporated Coding escape pixels for palette coding
US10448058B2 (en) * 2015-05-21 2019-10-15 Qualcomm Incorporated Grouping palette index at the end and index coding using palette size and run value
US10097842B2 (en) * 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
US10602192B2 (en) * 2016-02-04 2020-03-24 Mediatek Inc. Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
US10250899B1 (en) 2017-09-22 2019-04-02 Qualcomm Incorporated Storing and retrieving high bit depth image data
US10922026B2 (en) * 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10666985B1 (en) * 2018-11-18 2020-05-26 Sony Corporation Sub-block based entropy coding for image coding
US10841595B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for transform coefficient encoding and decoding
US10951237B2 (en) * 2019-03-22 2021-03-16 International Business Machines Corporation Composing array codes for power of two and variable block sizes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040125204A1 (en) 2002-12-27 2004-07-01 Yoshihisa Yamada Moving picture coding apparatus and moving picture decoding apparatus
US20050015249A1 (en) 2002-09-04 2005-01-20 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US20060119490A1 (en) 2004-12-06 2006-06-08 Matsushita Electric Industrial Co., Ltd. Decoding method and encoding method
US20080048894A1 (en) 2006-07-11 2008-02-28 Nokia Corporation Scalable video coding and decoding

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
JP3268180B2 (ja) * 1994-11-18 2002-03-25 株式会社東芝 イオン発生装置、イオン照射装置、及び半導体装置の製造方法
US5694127A (en) * 1995-10-17 1997-12-02 Zapex Technologies, Inc. Method and apparatus for efficiently generating variable length code data
US5835145A (en) * 1996-01-19 1998-11-10 Lsi Logic Corporation Conversion system using programmable tables for compressing transform coefficients
JP3573735B2 (ja) * 2000-05-23 2004-10-06 松下電器産業株式会社 可変長符号化方法および可変長符号化装置
US6959116B2 (en) * 2001-09-18 2005-10-25 Emc Corporation Largest magnitude indices selection for (run, level) encoding of a block coded picture
ATE439704T1 (de) 2002-04-02 2009-08-15 Nokia Corp Codierung von transformationskoeffizienten in bild-/videocodierern- und/oder decodierern
JP4368575B2 (ja) 2002-04-19 2009-11-18 パナソニック株式会社 可変長復号化方法、可変長復号化装置およびプログラム
US6956511B2 (en) * 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
US7113115B2 (en) 2004-06-30 2006-09-26 Intel Corporation Variable length code table look ups
JP3965402B2 (ja) * 2004-08-23 2007-08-29 富士フイルム株式会社 ノイズ低減装置および方法ならびにノイズ低減プログラム
FR2879861B1 (fr) 2004-12-21 2007-06-29 Auteuil Participation Et Conse Procede de compression d'image
JP4495034B2 (ja) * 2005-06-01 2010-06-30 パナソニック株式会社 可変長符号化方式および可変長符号化装置
US8275045B2 (en) * 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
US8467449B2 (en) * 2007-01-08 2013-06-18 Qualcomm Incorporated CAVLC enhancements for SVC CGS enhancement layer coding
US7501964B2 (en) 2007-04-16 2009-03-10 Texas Instruments Incorporated Entropy coding for digital codecs
US8144784B2 (en) 2007-07-09 2012-03-27 Cisco Technology, Inc. Position coding for context-based adaptive variable length coding
US8204327B2 (en) 2007-10-01 2012-06-19 Cisco Technology, Inc. Context adaptive hybrid variable length coding
US8848787B2 (en) * 2007-10-15 2014-09-30 Qualcomm Incorporated Enhancement layer coding for scalable video coding
US20110310976A1 (en) * 2010-06-17 2011-12-22 Qualcomm Incorporated Joint Coding of Partition Information in Video Coding
US8885704B2 (en) * 2010-10-01 2014-11-11 Qualcomm Incorporated Coding prediction modes in video coding
US20120082230A1 (en) * 2010-10-01 2012-04-05 Qualcomm Incorporated Variable length coding of video block coefficients
US20120147947A1 (en) * 2010-12-08 2012-06-14 Qualcomm Incorporated Codeword adaptation for variable length coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015249A1 (en) 2002-09-04 2005-01-20 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US20040125204A1 (en) 2002-12-27 2004-07-01 Yoshihisa Yamada Moving picture coding apparatus and moving picture decoding apparatus
US20060119490A1 (en) 2004-12-06 2006-06-08 Matsushita Electric Industrial Co., Ltd. Decoding method and encoding method
US20080048894A1 (en) 2006-07-11 2008-02-28 Nokia Corporation Scalable video coding and decoding

Also Published As

Publication number Publication date
US8410959B2 (en) 2013-04-02
TW201206200A (en) 2012-02-01
EP2556670A1 (en) 2013-02-13
US20110248873A1 (en) 2011-10-13
WO2011127423A1 (en) 2011-10-13
CN102870413A (zh) 2013-01-09
CN102870413B (zh) 2016-03-09
KR20130006689A (ko) 2013-01-17

Similar Documents

Publication Publication Date Title
KR101354381B1 (ko) 비디오 데이터의 코딩을 위한 가변 길이 코드들
US11405616B2 (en) Coding of transform coefficients for video coding
KR101590237B1 (ko) 변환 계수들에 대한 함수-기반의 스캐닝 순서를 이용한 비디오 코딩
US9497472B2 (en) Parallel context calculation in video coding
US20120099646A1 (en) Adaptive scanning of transform coefficients for video coding
US20120082222A1 (en) Video coding using intra-prediction
AU2019250123B2 (en) Coding of transform coefficients for video coding
KR20140016983A (ko) 비디오 코딩을 위한 런-모드 기반 계수 코딩
JP5547335B2 (ja) ビデオデータのコーディングのための可変長コード

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee