KR20140120891A - 효율적인 변환 유닛 인코딩을 위한 방법 및 장치 - Google Patents

효율적인 변환 유닛 인코딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20140120891A
KR20140120891A KR1020147020158A KR20147020158A KR20140120891A KR 20140120891 A KR20140120891 A KR 20140120891A KR 1020147020158 A KR1020147020158 A KR 1020147020158A KR 20147020158 A KR20147020158 A KR 20147020158A KR 20140120891 A KR20140120891 A KR 20140120891A
Authority
KR
South Korea
Prior art keywords
coefficients
scan pattern
last
coefficient
flag
Prior art date
Application number
KR1020147020158A
Other languages
English (en)
Inventor
유에 유
크리트 파누소포네
리민 왕
웨이-잉 쿵
Original Assignee
모토로라 모빌리티 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 모토로라 모빌리티 엘엘씨 filed Critical 모토로라 모빌리티 엘엘씨
Publication of KR20140120891A publication Critical patent/KR20140120891A/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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/46Embedding additional information in the video signal during the compression process

Abstract

변환 유닛 계수들의 효율적인 인코딩 및 디코딩을 위한 방법, 장치, 제조품, 및 메모리 구조가 개시된다. 한 실시예에서, 마지막 인코딩된 계수의 위치는 코딩 요건을 줄이기 위해 행, 열, 또는 기타의 스캔 부분에 의해 코딩된다. 또 다른 실시예에서, 변환 유닛은 서브블록들로 분할되고, 마지막 서브블록은 코딩 요건을 감소시키도록 코딩된다.

Description

효율적인 변환 유닛 인코딩을 위한 방법 및 장치{METHOD AND APPARATUS FOR EFFICIENT TRANSFORM UNIT ENCODING}
관련 출원에 대한 상호참조
본 출원은 2011년 12월 20일 출원된, Xue Fang, Krit Panusopone 및 Limin Wang에 의한, 발명의 명칭이 "LAST COEFFICIENT GROUP POSITION CODING IN HEVC"인 미국 가출원 번호 제61/577,898호의 우선권 혜택을 주장한다.
1. 발명의 분야
본 발명은 데이터를 인코딩하기 위한 시스템 및 방법에 관한 것으로, 특히 고효율 비디오 코딩된 데이터와 연관된 움직임을 저장하고 데이터를 회수하기 위한 시스템 및 방법에 관한 것이다.
2. 관련 기술의 설명
미디어 프로그램의 생성, 전송, 및 재생과 연관된 기술에서 급속한 성장이 있다. 이들 기술들은 미디어 프로그램들을 훨씬 작은 크기로 압축하여 그들의 전송, 저장, 수신 및 재생을 용이하게 하기 위해 미디어 프로그램의 디지털 버전이 인코딩되는 것을 허용하는 코딩 방식을 포함한다. 이들 기술들은 개인용 비디오 레코더(PVR; personal video recorder), 주문형 비디오(VOD; video on demand), 다채널 미디어 프로그램 제공, 상호작용, 모바일 전화, 및 미디어 프로그램 전송에서 응용성을 가진다.
압축하지 않는 경우, 디지털 미디어 프로그램은 통상적으로 상업적으로 허용가능한 비용으로 전송 및/또는 저장하기에 너무 크다. 그러나, 이러한 프로그램의 압축은 이러한 디지털 미디어 프로그램의 전송과 저장을 상업적으로 실현가능할 뿐만 아니라 흔한 것으로 만들었다.
초기에, 미디어 프로그램의 전송은 케이블 텔레비전 및 위성 등의 고대역폭 전송 매체를 통해 전송되는 저해상도 내지 중간 해상도 이미지를 포함하였다. 그러나, 이러한 전송은, 컴퓨터 네트워크, Wi-Fi, 모바일 TV 및 제3 및 제4 세대(3G 및 4G) 네트워크를 통한 고정된 및 이동형 장치들로의 인터넷 전송 등의 더 낮은 대역폭 전송 미디어를 포함하도록 발전하였다. 또한, 이러한 전송은, 상당한 전송 대역폭과 저장 요건을 갖는 고선명 텔레비전(HDTV) 등의 고선명 미디어 프로그램을 포함하도록 발전하였다.
압축된 비디오 신호의 인코딩 및 디코딩은 통상적으로 신호의 인코더와 신호의 디코더 양쪽 모두에 의한 많은 양의 데이터의 저장과 회수를 수반한다. 결과적으로, 이러한 인코더 및 디코더는 증가된 저장 및 처리 용량을 요구한다. 필요한 것은 인코더 및 디코더에서 요구되는 저장 및 처리를 감소시키는 시스템 및 방법이다. 본 발명은 이 필요성을 만족한다.
전술된 요건을 해결하기 위해, 본 문서는, 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛을 인코딩하기 위한 방법, 장치, 제조품, 및 메모리 구조를 개시한다. 한 실시예에서, 이 방법은, 마지막 유효 서브블록 -상기 마지막 유효 서브블록은 적어도 하나의 비제로 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록임- 을 결정하는 단계, 결정된 마지막 유효 서브블록의 위치를 인코딩하는 단계, 적어도 하나의 비제로 계수를 갖는 서브블록 처리 스캔 패턴에서 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대한 제1 값을 인코딩하는 단계, 및 마지막 유효 서브블록의 계수들과 제1 인코딩된 값을 갖는 마지막 유효 서브블록에 선행하는 서브블록들의 계수들을 인코딩하는 단계를 포함한다.
또 다른 실시예는, 스캔 패턴의 일부에 배치된 변환 유닛 중 일부의 계수들 모두가 제로인지를 결정하는 단계, 스캔 패턴의 일부에 배치된 변환 유닛 계수들 중 일부의 계수들 중 적어도 하나가 비제로이면 변환 유닛의 일부와 연관된 플래그를 제1 값으로 설정하는 단계, 및 스캔 패턴의 일부에 배치된 변환 유닛 계수들 중 일부의 계수들 모두가 제로이면 변환 유닛 계수들 중 일부와 연관된 플래그를 제2 값으로 설정하는 단계를 포함하는 방법에 의해 입증된다.
다른 실시예들은 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛을 인코딩하기 위한 장치에 의해 명백하게 된다. 이 실시예는 프로세서와 이 프로세서에 결합된 메모리를 포함하며, 메모리는 상기 열거된 단계들을 포함한 단계들을 수행하기 위한 명령어들을 저장한다.
논의된 특징들, 기능들, 및 이점들은 본 발명의 다양한 실시예에서 독립적으로 달성될 수 있거나, 이하의 설명과 도면들을 참조하여 추가의 상세사항을 알 수 있는 또 다른 실시예들에서 조합될 수 있다.
이제, 도면 전체에 걸쳐 유사한 참조 번호는 대응하는 부분을 나타내는 도면들을 참조한다.
도 1은 오디오 및/또는 비디오 정보의 전송 및/또는 저장 및 회수에 이용될 수 있는 비디오 코딩-디코딩 시스템의 예시적인 실시예를 도시하는 도면이다;
도 2a는 인코딩된 AV 정보가 전송되고 또 다른 위치에서 수신되는 코덱 시스템(codec system, 200A)의 한 실시예의 도면이다;
도 2b는 인코딩된 정보가 저장되고 이후에 프리젠테이션을 위해 회수되며, 이하에서 코덱 저장 시스템이라 불리는 코덱 시스템의 예시적인 실시예를 나타내는 도면이다;
도 3은 소스 인코더의 한 실시예를 나타내는 블록도이다;
도 4는 화상 시퀀스 내의 화상들 중 하나 등의, AV 정보의 화상을 나타내는 도면이다;
도 5는 코딩 트리 블록의 코딩 유닛들로의 예시적인 분할을 도시하는 도면이다;
도 6은 도 5에 도시된 코드 트리 블록 분할에 대한 대표적 쿼드트리와 데이터 파라미터들의 표현을 나타내는 도면이다;
도 7은 코딩 유닛의 하나 이상의 예측 유닛들로의 분할을 나타내는 도면이다;
도 8은 4개의 예측 유닛 및 연관된 변환 유닛 세트로 분할되는 코딩 유닛을 도시하는 도면이다;
도 9는 도 8의 예에서의 코딩 유닛과 연관된 변환 유닛에 대한 RQT 코드트리를 도시하는 도면이다;
도 10은 예측 유닛의 공간 예측을 나타내는 도면이다;
도 11은 시간 예측을 나타내는 도면이다;
도 12는 움직임 벡터 예측기(MVP; motion vector predictor)의 이용을 나타내는 도면이다;
도 13은 비정사각형 변환 유닛의 양자화된 계수들의 코딩에 이용되는 예시적인 스캔 패턴을 나타내는 도면이다;
도 14a는 예시적인 변환 유닛 계수 맵의 도면이다;
도 14b는 도 14a의 변환 유닛의 예시적인 유효도 맵의 도면이다;
도 15a는 엔트로피 인코더에서 초기화 변수를 결정하기 위한 테이블을 나타낸다;
도 15b는 상이한 코딩 유닛 타입에 대한 오프셋을 도시하는 테이블을 나타낸다;
도 16a는 HEVC 인코딩/디코딩 시스템에서 이용될 수 있는 마지막 계수 코딩 기술을 수행하기 위한 예시적인 기술을 나타내는 도면이다;
도 16b는 도 16a에서 기술된 마지막 계수 코딩을 이용한, 인코딩된 비트스트림의 디코딩을 나타내는 도면이다;
도 17은 도 16a 및 도 16b의 동작들을 나타내는 도면이다;
도 18a는 16x16 변환 유닛의 도면이다;
도 18b는 도 18a에 나타낸 변환 유닛으로부터 생성된 유효도 맵이다;
도 18c는 변환 유닛의 예시적인 어레이 스캔 패턴과 마지막 유효 계수를 나타내는 도면이다;
도 18d는 16개의 비중첩 서브블록들로 분할된 변환 유닛을 나타내는 도면이다;
도 18e는 도 18d의 분할된 변환 유닛에 대응하는 L1 유효도 맵의 도면이다;
도 18f는 인코딩된 서브블록 값들을 도시하는 대안적인 L1 유효도 맵의 도면이다;
도 18g는 예시적인 서브블록 내의 변환 계수들의 코딩을 나타내는 도면이다;
도 19는 HEVC 인코딩/디코딩 시스템에서 이용될 수 있는 마지막 서브블록 코딩 기술을 수행하기 위한 예시적인 기술을 나타내는 도면이다;
도 20은 비제로 계수들을 포함하고 있다는 것을 나타내는 제1 인코딩된 값을 갖는 후보 서브블록의 계수들을 나타내는 도면을 제시한다;
도 21은 변환 유닛의 마지막 유효 서브블록의 도면이다;
도 22는 선행하는 마지막 계수 그룹 위치 기술을 이용하여 인코딩된 변환 유닛 계수들을 디코딩하기 위한 예시적인 기술을 나타내는 도면이다;
도 23은 본 발명의 실시예를 구현하는데 이용될 수 있는 예시적인 처리 시스템을 나타낸다.
이하의 설명에서, 본 발명의 수 개의 실시예의 일부를 구성하고, 본 발명의 수 개의 실시예들이 예로서 도시되어 있는 첨부된 도면에 대한 참조가 이루어진다. 본 발명의 범위로부터 벗어나지 않고 다른 실시예들이 이용될 수 있으며 구조적 변경이 이루어질 수 있다는 것을 이해해야 한다.
시청각 정보 송수신 및 저장
도 1은 오디오 및/또는 비디오 정보의 전송 및/또는 저장 및 회수에 이용될 수 있는 비디오 코딩-디코딩(코덱) 시스템(100)의 예시적인 실시예를 도시하는 도면이다. 코덱 시스템(100)은, 시청각(AV) 정보(102)를 수신하고 AV 정보(102)를 처리하여 인코딩된 (압축된) AV 정보(106)를 생성하는 인코딩 시스템(104)과, 인코딩된 AV 정보(106)를 처리하여 복원된 AV 정보(114)를 생성하는 디코딩 시스템(112)을 포함한다. 인코딩 및 디코딩 처리는 무손실이 아니므로, 복구된 AV 정보(114)는 초기 AV 정보(102)와 동일하지 않지만, 인코딩 프로세스와 파라미터들의 신중한 선택에 의해, 복구된 AV 정보(114)와 미처리된 AV 정보(102) 사이의 차이는 인간 인지에 대해 허용될만한다.
인코딩된 AV 정보(106)는 통상적으로, 송수신(전송 및 수신) 또는 저장/회수 시스템(108)에 의해 수행되는 바와 같이, 디코딩 및 프리젠테이션 이전에 전송 또는 저장 및 회수된다. 송수신 손실은 중요할 수 있지만, 저장/회수 손실은 통상적으로 아주 작거나 존재하지 않으므로, 디코딩 시스템(112)에 제공되는 송수신된 AV 정보(110)는 통상적으로 인코딩된 AV 정보(106)와 같거나 실질적으로 같다.
도 2a는 인코딩된 AV 정보(106)가 전송되고 또 다른 위치에서 수신되는 코덱 시스템(200A)의 한 실시예의 도면이다. 전송 세그먼트(230)는 입력 AV 정보(102)를 전송에 적절한 신호로 변환하고 변환된 신호를 전송 채널(212)을 통해 수신 세그먼트(232)에 전송한다. 수신 세그먼트(232)는 전송된 신호를 수신하고, 수신된 신호를 프리젠테이션을 위한 복구된 AV 정보(114)로 변환한다. 전술된 바와 같이, 코딩 및 전송 손실 및 에러로 인해, 복구된 AV 정보(114)는 전송 세그먼트(230)에 제공되었던 AV 정보(102)보다 낮은 품질일 수 있다. 그러나, 에러 정정 시스템이 포함되어 이러한 에러를 줄이거나 제거할 수 있다. 예를 들어, 인코딩된 AV 정보(106)는 잉여 정보(redundant information)를 추가함으로써 FEC(forward error correction) 인코딩될 수 있고, 이러한 잉여 정보는 수신 세그먼트(230)에서 에러를 식별하고 제거하는데 이용될 수 있다.
전송 세그먼트(102)는 복수 소스의 AV 정보(102)를 인코딩하는 하나 이상의 소스 인코더(202)를 포함한다. 소스 인코더(202)는 주로 압축의 목적을 위해 AV 정보(102)를 인코딩하여 인코딩된 AV 정보(106)를 생성하고, 예를 들어, 후술되는 바와 같은, MPEG-1, MPEG-2, MPEG-4 AVC/H.264, HEVC 또는 유사한 코덱 등의 코덱을 구현하는 명령어들을 저장하는 관련된 메모리와 프로세서를 포함할 수 있다.
코덱 시스템(200A)은 도 2a에서 점선으로 나타낸 선택사항적 요소들을 포함할 수 있다. 이들 선택사항적 요소들은, 비디오 멀티플렉스 인코더(204), 인코딩 제어기(208), 및 비디오 디멀티플렉싱 디코더(218)를 포함한다. 선택사항적 비디오 멀티플렉스 인코더(204)는 선택사항적 인코딩 제어기(208)에 의해 공급된 하나 이상의 파라미터에 따라 연관된 복수의 소스 인코더(들)(202)로부터의 인코딩된 AV 정보(106)를 멀티플렉싱한다. 이러한 멀티플렉싱은 통상적으로 시간 영역에서 달성되며 데이터 패킷 기반이다.
한 실시예에서, 비디오 멀티플렉스 인코더(204)는, 전송에 요구되는 대역폭을 최소화하도록 복수의 소스 인코더(202)로부터의 인코딩된 AV 정보(106)를 결합하는 통계적 멀티플렉서를 포함한다. 이것은, 각각의 소스 인코더(202)로부터의 코딩된 AV 정보(106)의 순간 비트 레이트는 AV 정보(102)의 콘텐츠에 따라 시간이 흐름에 따라 크게 변할 수 있기 때문에 가능하다. 예를 들어, 많은 세부사항과 움직임을 갖는 장면들(예를 들어, 스포츠 이벤트)은 통상적으로 매우 적은 움직임 또는 세부사항(예를 들어, 묘사 다이얼로그)을 갖는 장면들보다 높은 비트레이트에서 인코딩된다. 각각의 소스 인코더(202)는 높은 순간 비트 레이트를 갖는 정보를 생성할 수도 있는 반면 또 다른 소스 인코더(202)는 낮은 순간 비트 레이트를 갖는 정보를 생성하고, 인코딩 제어기(208)는 소스 인코더(202)에게 명령하여 순간 비트 레이트에 영향을 주는 소정의 성능 파라미터들에 따라 AV 정보(106)를 인코딩하게 할 수 있으므로, 소스 인코더(106)들 각각으로부터의 신호(각각은 시간적으로 변동하는 순간 비트 레이트를 가짐)는 최적의 방식으로 함께 결합되어 멀티플렉싱된 스트림(205)의 순간 비트 레이트를 최소화할 수 있다.
전술된 바와 같이, 소스 인코더(202) 및 비디오 멀티플렉스 코더(204)는 코딩 제어기(208)에 의해 선택사항적으로 제어되어 결합된 비디오 신호의 순간 비트 레이트를 최소화할 수 있다. 한 실시예에서, 이것은, 코딩된 비디오 신호를 임시로 저장하고 버퍼(206)의 가득참(fullness)을 표시할 수 있는 전송 버퍼(206)로부터의 정보를 이용하여 달성된다. 이것은, 소스 인코더(202) 또는 비디오 멀티플렉스 코더(204)에서 수행되는 코딩이 전송 버퍼(206)에 남아 있는 스토리지(storage)의 함수가 되는 것을 허용한다.
전송 세그먼트(230)는 또한, 수신 세그먼트(232)로의 전송을 위한 비디오 신호를 더 인코딩하는 전송 인코더(210)를 포함할 수 있다. 전송 인코딩은, 예를 들어, 앞서 언급된 FEC 코딩 및/또는 선택된 전송 매체에 대한 멀티플렉싱 방식으로의 코딩을 포함할 수 있다. 예를 들어, 전송이 위성 또는 지상 전송기에 의한 것이라면, 전송 인코더(114)는 QAM(quadrature amplitude modulation) 또는 유사한 변조 기술을 이용한 전송 이전에 신호를 신호 성상도(signal constellation)로 인코딩할 수 있다. 또한, 인코딩된 비디오 신호가 인터넷 프로토콜 장치와 인터넷을 이용하여 스트리밍될 예정이면, 전송은 적절한 프로토콜에 따라 신호를 인코딩한다. 또한, 인코딩된 신호가 모바일 전화를 이용하여 전송될 예정이면, 이하에서 더 설명되는 바와 같이, 적절한 코딩 프로토콜이 이용된다.
수신 세그먼트(232)는, 전송 인코더(214)에서 이용된 코딩 방식과는 상보적인(complementary) 디코딩 방식을 이용하여, 전송 코더(210)에 의해 코딩된 신호를 수신하기 위해 전송 디코더(214)를 포함한다. 디코딩된 수신된 신호는 선택사항적 수신 버퍼(216)에 의해 임시로 저장될 수 있고, 수신된 신호가 복수의 비디오 신호를 포함한다면, 수신된 신호는 비디오 멀티플렉스 디코더(218)에 의해 멀티플렉스 디코딩되어 비디오 멀티플렉서 코더(204)에 의해 멀티플렉싱된 비디오 신호로부터 관심대상의 비디오 신호를 추출한다. 마지막으로, 관심대상의 비디오 신호는, AV 정보(102)를 인코딩하기 위해 소스 인코더(202)에 의해 이용된 코덱과 상보적인 코덱이나 디코딩 방식을 이용하여 소스 디코더(220)에 의해 디코딩된다.
한 실시예에서, 전송된 데이터는 (전송 세그먼트(230)를 나타내는) 서버로부터 (수신 세그먼트(232)를 나타내는) 클라이언트로 전송된 패킷화된 비디오 스트림을 포함한다. 이 경우, 전송 인코더(210)는 데이터를 패킷화할 수 있고 네트워크 패킷들에 네트워크 추상층(network abstract layer; NAL) 유닛을 임베딩할 수 있다. NAL 유닛들은 헤더와 코딩된 요소들을 갖는 데이터 컨테이너(data container)를 정의하며, 비디오 데이터의 비디오 프레임 또는 기타의 슬라이스에 대응할 수 있다.
전송될 압축된 데이터는 패킷화되어, WAN(Wide Area Network) 또는 LAN(Local Area Network)을 포함할 수 있는 전송 채널(212)을 통해 전송될 수 있다. 이러한 네트워크는, 예를 들어, Wi-Fi, Ethernet 네트워크, 인터넷 네트워크 또는 수 개의 상이한 네트워크들로 구성된 혼합된 네트워크 등의 무선 네트워크를 포함할 수 있다. 이러한 통신은, 통신 프로토콜, 예를 들어, 실시간 트랜스포트 프로토콜(RTP), 사용자 데이터그램 프로토콜(UDP) 또는 기타 임의 타입의 통신 프로토콜을 통해 영향을 받을 수 있다. 비트스트림의 각각의 네트워크 추상층(NAL) 유닛에 대해 상이한 패킷화 방법들이 이용될 수 있다. 한 경우에, 하나의 NAL 유닛 크기는, 단편화되지 않고 네트워크를 통해 전송될 수 있는 최대 패킷 크기에 대응하는 최대 트랜스포트 유닛(MTU) 크기보다 작다. 이 경우, NAL 유닛은 단일의 네트워크 패킷에 임베딩된다. 또 다른 경우, 복수의 전체의 NAL 유닛들이 단일 네트워크 패킷에 포함된다. 제3의 경우, 하나의 NAL 유닛이 단일의 네트워크 패킷으로 전송되기에 너무 커, 수 개의 단편화된 NAL 유닛들로 분할되고 각각의 단편화된 NAL 유닛이 개개의 네트워크 패킷으로 전송된다. 단편화된 NAL 유닛은 통상적으로 디코딩 목적을 위해 연속적으로 전송된다.
수신 세그먼트(232)는 패킷화된 데이터를 수신하고 네트워크 패킷으로부터 NAL 유닛을 재구성한다. 단편화된 NAL 유닛의 경우, 클라이언트는 원래의 NAL 유닛을 재구성하기 위해 단편화된 NAL 유닛들로부터의 데이터를 결합한다. 클라이언트(232)는 수신되고 재구성된 데이터 스트림을 디코딩하고 디스플레이 장치 상에 비디오 이미지를 재생하고 확성기에 의해 오디오 데이터를 재생한다.
도 2b는 인코딩된 정보가 저장되고 이후에 프리젠테이션을 위해 회수되며, 이하에서 코덱 저장 시스템(200B)이라 불리는 코덱 시스템의 예시적인 실시예를 나타내는 도면이다. 이 실시예는, 예를 들어, 디지털 비디오 레코더(DVR), 플래시 드라이브, 하드 드라이브 또는 유사한 장치에 국지적으로 정보를 저장하기 위해 이용될 수 있다. 이 실시예에서, AV 정보(102)는 소스 인코더(202)에 의해 소스 인코딩되고, 선택사항으로서 스토리지 장치(236)에서의 저장 이전에 스토리지 버퍼(234)에 의해 버퍼링된다. 스토리지 장치(236)는 비디오 신호를 임시로 또는 연장된 기간 동안 저장할 수 있고, 하드 드라이브, 플래시 드라이브, RAM 또는 ROM을 포함할 수 있다. 그 다음, 저장된 AV 정보가 회수되고, 선택사항으로서 회수 버퍼(238)에 의해 버퍼링되고 소스 디코더(220)에 의해 디코딩된다.
도 2c는, HEVC 데이터를 전송 및 수신하는데 이용될 수 있는 코딩 시스템 또는 인코더(202) 및 디코딩 시스템 또는 디코더(220)를 포함하는 예시적인 콘텐츠 배포 시스템(200C)을 도시하는 또 다른 도면이다. 일부 실시예에서, 코딩 시스템(202)은, 입력 인터페이스(256), 제어기(241), 카운터(242), 프레임 메모리(243), 인코딩 유닛(244), 전송기 버퍼(267) 및 출력 인터페이스(257)를 포함할 수 있다. 디코딩 시스템(220)은, 수신기 버퍼(259), 디코딩 유닛(260), 프레임 메모리(261) 및 제어기(267)를 포함할 수 있다. 코딩 시스템(202) 및 디코딩 시스템(220)은 압축된 비트스트림을 운반할 수 있는 전송 경로를 통해 서로 결합될 수 있다. 코딩 시스템(202)의 제어기(241)는 전송기 버퍼(267) 또는 수신기 버퍼(259)의 용량에 기초하여 전송될 데이터량을 제어할 수 있고 시간 단위마다의 데이터량 등의 다른 파라미터들을 포함할 수 있다. 제어기(241)는 디코딩 시스템(220)의 수신 신호 디코딩 동작의 고장의 발생을 방지하도록 인코딩 유닛(244)을 제어한다. 제어기(241)는 프로세서이거나, 비제한적 예로서, 프로세서, 랜덤 액세스 메모리 및 판독 전용 메모리를 갖는 마이크로컴퓨터를 포함할 수 있다.
비제한적 예로서, 콘텐츠 제공자로부터 공급되는 소스 화상(246)은 비디오 시퀀스 내의 소스 화상들을 포함하는 프레임들의 비디오 시퀀스를 포함할 수 있다. 소스 화상(246)은 비압축되거나 압축될 수 있다. 소스 화상(246)이 비압축된다면, 코딩 시스템(202)은 인코딩 기능을 가질 수 있다. 소스 화상(246)이 압축된다면, 코딩 시스템(202)은 트랜스코딩(transcoding) 기능을 가질 수 있다. 코딩 유닛은 제어기(241)를 이용하여 소스 화상으로부터 유도될 수 있다. 프레임 메모리(243)는, 소스 화상(246)으로부터의 인입 프레임들을 저장하는데 이용될 수 있는 제1 영역과 프레임들을 판독하여 이들을 인코딩 유닛(244)에 출력하는데 이용될 수 있는 제2 영역을 가질 수 있다. 제어기(241)는 영역 스위칭 제어 신호(249)를 프레임 메모리(243)에 출력할 수 있다. 영역 스위칭 제어 신호(249)는 제1 영역 또는 제2 영역이 이용될 것인지를 나타낼 수 있다.
제어기(241)는 인코딩 제어 신호(250)를 인코딩 유닛(244)에 출력할 수 있다. 인코딩 제어 신호(250)는, 인코딩 유닛(202)으로 하여금 소스 화상에 기초하여 코딩 유닛들을 준비하는 등의, 인코딩 동작을 개시하게 할 수 있다. 제어기(241)로부터의 인코딩 제어 신호(250)에 응답하여, 인코딩 유닛(244)은, 코딩 유닛과 연관된 소스 화상에 기초하여 비디오 압축 데이터를 생성하는 준비된 코딩 유닛을 처리하는 변환 코딩 프로세스 또는 예측 코딩 프로세스 등의, 고효율 인코딩 프로세스에 대해 준비된 코딩 유닛을 판독하기 시작할 수 있다. 인코딩 유닛(244)은, 생성된 비디오 압축 데이터를, 비디오 패킷들을 포함하는 PES(packetized elementary stream)로 팩키징할 수 있다. 인코딩 유닛(244)은 제어 정보 및 프로그램 타임 스탬프(PTS; program time stamp)를 이용하여 비디오 패킷을 인코딩된 비디오 신호(248)로 맵핑할 수 있고 인코딩된 비디오 신호(248)는 전송기 버퍼(267)로 전송될 수 있다.
생성된 비디오 압축 데이터를 포함한 인코딩된 비디오 신호(248)는 전송기 버퍼(267)에 저장될 수 있다. 정보량 카운터(242)는 전송기 버퍼(267) 내의 총 데이터량을 나타내기 위해 증가될 수 있다. 버퍼로부터 데이터가 회수되고 제거됨에 따라, 카운터(242)는 전송기 버퍼(267) 내의 데이터량을 반영하도록 감소될 수 있다. 점유 영역 정보 신호(253)가 카운터(242)에 전송되어 인코딩 유닛(244)으로부터의 데이터가 추가되었는지 또는 전송기 버퍼(267)로부터 제거되었는지의 여부를 나타내므로, 카운터(242)가 증가 또는 감소될 수 있다. 제어기(241)는, 전송기 버퍼(267)에서 오버플로우 또는 언더플로우가 발생하는 것을 예상, 회피, 방지, 및/또는 검출하기 위하여 전달될 수 있는 점유 영역 정보(253)에 기초하여 인코딩 유닛(244)에 의해 생성되는 비디오 패킷들의 생성을 제어할 수 있다.
정보량 카운터(242)는, 제어기(241)에 의해 생성되고 출력되는 프리셋 신호(254)에 응답하여 리셋될 수 있다. 정보량 카운터(242)가 리셋된 후에, 이 카운터는 인코딩 유닛(244)에 의해 출력된 데이터를 카운트하고 생성된 비디오 압축 데이터 및/또는 비디오 패킷의 양을 얻을 수 있다. 정보량 카운터(242)는 얻어진 정보량을 나타내는 정보량 신호(255)를 제어기(241)에 공급할 수 있다. 제어기(241)는, 전송기 버퍼(267)에서 오버플로우가 없도록 인코딩 유닛(244)을 제어할 수 있다.
일부 실시예에서, 디코딩 시스템(220)은, 입력 인터페이스(266), 수신기 버퍼(259), 제어기(267), 프레임 메모리(261), 디코딩 유닛(260), 및 출력 인터페이스(267)를 포함할 수 있다. 디코딩 시스템(220)의 수신기 버퍼(259)는, 소스 화상(246)으로부터의 소스 화상에 기초한 수신된 비디오 압축 데이터와 비디오 패킷을 포함한 압축된 비트스트림을 임시로 저장할 수 있다. 디코딩 시스템(220)은 수신된 데이터 내의 비디오 패킷과 연관된 제어 정보와 프리젠테이션 타임 스탬프 정보를 판독하고 제어기(220)에 인가될 수 있는 프레임수 신호(263)를 출력할 수 있다. 제어기(267)는 미리결정된 간격으로 카운트된 프레임수를 감독할 수 있다. 비제한적 예로서, 제어기(267)는 디코딩 유닛(260)이 디코딩 동작을 완료하는 때마다 카운트된 프레임수를 감독할 수 있다.
일부 실시예에서, 프레임수 신호(263)에 의해 수신기 버퍼(259)가 미리결정된 용량에 있음이 표시되면, 제어기(267)는 디코딩 시작 신호(264)를 디코딩 유닛(260)에 출력할 수 있다. 프레임수 신호(263)에 의해 수신기 버퍼(259)가 미리결정된 용량 미만임이 표시되면, 제어기(267)는 카운트된 프레임수가 미리결정된 양과 같아지는 상황의 발생을 기다릴 수 있다. 제어기(267)는 그 상황이 발생할 때 디코딩 시작 신호(263)를 출력할 수 있다. 비제한적인 예로서, 제어기(267)는 프레임수 신호(263)에 의해 수신기 버퍼(259)가 미리결정된 용량에 있음이 표시될 때 디코딩 시작 신호(264)를 출력할 수 있다. 인코딩된 비디오 패킷 및 비디오 압축 데이터는, 인코딩된 비디오 패킷과 연관된 프리젠테이션 타임 스탬프에 기초하여 단조 순서(즉, 증가순 또는 감소순)로 디코딩될 수 있다.
디코딩 시작 신호(264)에 응답하여, 디코딩 유닛(260)은 수신기 버퍼(259)로부터의 비디오 패킷들과 연관된 화상과 연관된 압축된 비디오 데이터 및 프레임과 연관된 한 화상분에 달하는 데이터를 디코딩할 수 있다. 디코딩 유닛(260)은 디코딩된 비디오 신호(269)를 프레임 메모리(261) 내에 기입할 수 있다. 프레임 메모리(261)는, 디코딩된 비디오 신호가 기입되는 제1 영역과, 디코딩된 화상(262)을 판독하여 출력 인터페이스(267)에 보내는데 이용되는 제2 영역을 가질 수 있다.
다양한 실시예에서, 코딩 시스템(202)은 헤드엔드(headend)에서 트랜스코더 또는 인코딩 장치에 병합되거나 기타의 방식으로 연관될 수 있고 디코딩 시스템(220)은, 모바일 장치, 셋톱 박스 또는 트랜스코더 등의 다운스트림 장치에 병합되거나 기타의 방식으로 연관될 수 있다.
소스 인코딩/디코딩
전술된 바와 같이, 인코더(202)는 AV 정보(102) 내의 원래의 비디오 시퀀스보다 작은 크기의 비트 스트림 및/또는 파일들을 생성하기 위해 압축 알고리즘을 채용한다. 이러한 압축은 원래의 시퀀스에서 공간적 및 시간적 중복성을 줄임으로써 가능하게 된다.
종래 기술의 인코더(202)는, 특히, 본 명세서에서 참조로 포함되는, 간행물 "Advanced Video Coding for Generic Audiovisual Services"(2005년 3월)의 형태로, ITU의 "Video Coding Expert Group(VCEG)"와 ISO의 "Moving Picture Experts Group(MPEG)"에 의해 개발된 비디오 압축 표준 H.264/MPEG-4 AVC("Advanced Video Coding")와 호환되는 것들을 포함한다.
(때때로 H.265라고 알려진) HEVC "High Efficiency Video Coding"은 H.264/MPEG-4 AVC를 대체할 것으로 예상된다. HEVC는, 이하에서 더 설명되는 H.264/AVC에서 정의된 코딩 엔티티들의 일반화인 새로운 코딩 툴과 엔티티들을 도입하고 있다. CS39543/ CS39549/CS39892
도 3은 소스 인코더(202)의 한 실시예를 나타내는 블록도이다. 소스 인코더(202)는 AV 정보(102)를 수신하고 AV 정보(102)를 샘플링하는 샘플러(302)를 이용하여 각각이 복수의 화소를 갖는 연속된 디지털 이미지들 또는 화상들의 시퀀스(303)를 생성한다. 화상은 프레임 또는 필드를 포함할 수 있으며, 프레임은 알려진 시구간 동안에 캡춰된 완전한 이미지이고, 필드는 부분적 이미지를 구성하는 홀수-번호 또는 짝수-번호 스캐닝 라인의 세트이다.
샘플러(302)는 비압축 화상 시퀀스(303)를 생성한다. 각각의 디지털 화상은, 함께 화상을 포함하는 화소들에 관한 정보를 나타내는 복수의 계수를 갖는 하나 이상의 행렬에 의해 표현될 수 있다. 화소의 값은 휘도 또는 기타의 정보에 대응할 수 있다. 수 개의 성분들(예를 들어, 적-녹-청 성분들 또는 휘도-색도 성분들)이 각각의 화소와 연관되는 경우, 이들 성분들 각각은 별개로 처리될 수 있다.
이미지들은, 화상의 일부를 포함하거나 전체의 화상을 포함할 수 있는 "슬라이스들"로 구획화될 수 있다. H.264 표준에서, 이들 슬라이스들은 매크로블록(일반적으로 16화소×16화소의 블록)이라 불리는 코딩 엔티티들로 분할되고, 각각의 매크로블록은 결국 상이한 크기의 데이터 블록(102), 예를 들어, 4x4, 4x8, 8x4, 8x8, 8x16, 16x8로 분할될 수 있다. HEVC는 코딩 엔티티의 개념을 매크로블록의 경우를 넘어서 확장 및 일반화한다.
HEVC 코딩 엔티티들: CTU, CU, PU, 및 TU
다른 비디오 코딩 표준들처럼, HEVC는 블록-기반의 하이브리드 공간적 및 시간적 예측 코딩 방식이다. 그러나, HEVC는 H.264/AVC 표준에 포함되지 않는 새로운 코딩 엔티티들을 도입한다. 이들 코딩 엔티티들은 (1) 코딩 트리 블록(CTU), 코딩 유닛(CU), 예측 유닛(PU), 및 변환 유닛(TU)을 포함하고, 이하에서 더 설명된다.
도 4는 화상 시퀀스(303) 내의 화상들 중 하나 등의, AV 정보(102)의 화상(400)을 나타내는 도면이다. 화상(400)은 코딩 트리 유닛(들), 또는 CTU(402)라고 알려진 비중복 정사각형 블록들로 공간적으로 분할된다. 기본 코딩 유닛이 16x16 화소의 매크로블록인 H.264 및 이전의 비디오 코딩 표준들과는 달리, CTU(402)는 HEVC의 기본 코딩 유닛이고, 128x128 화소만큼 클 수 있다. 도 4에 도시된 바와 같이, CTU(402)는 통상적으로 화상(400) 내에서 프로그레시브 스캔과 유사한 순서로 참조된다.
각각의 CTU(402)는 결국 이하에서 더 설명되는 "쿼드트리" 분해에 의해 기술되는 더 작은 가변 크기 코딩 유닛들로 반복적으로 분할될 수 있다. 코딩 유닛들은 유사한 인코딩 파라미터가 적용되고 비트스트림(314)으로 전송되는 이미지에서 형성되는 영역들이다.
도 5는 코딩 유닛(502A 및 502B)(이하에서는 대안으로서 코딩 유닛(들)(502)이라고 함)등의 코딩 유닛(CU)들로의 CTU(402)의 예시적 분할을 도시하는 도면이다. 단일 CTU(402)는, 각각이 CTU(402)의 크기의 1/4인 CU(502A) 등의 4개의 CU(502)로 분할될 수 있다. 각각의 이러한 분할된 CU(502A)는, 초기 CU(502A)의 1/4 크기의 4개의 더 작은 CU(502B)들로 추가로 분할될 수 있다.
CU들(502A) 및 더 작은 CU들(502B)로의 CTU(402)의 분할은, 신택스(syntax)라 알려진 오버헤드로서 인코딩된 데이터와 함께 출력 비트스트림(314) 내로 인코딩되는 "쿼드트리" 데이터 파라미터들(예를 들어, 플래그 또는 비트들)에 의해 기술된다.
도 6은 도 5에 도시된 CTU(402) 분할에 대한 대표적 쿼드트리(600)와 데이터 파라미터들의 표현을 나타내는 도면이다. 쿼드트리(600)는 하나의 계층구조 레벨에서의 제1 노드(602A)와 더 낮은 계층구조 레벨에서의 제2 노드(602B)를 포함하는 복수의 노드를 포함한다(이하에서, 쿼드트리 노드들은 대안으로서 "노드들"(602)이라고 불릴 수 있다). 쿼드트리의 각 노드(602)에서, 노드(602)가 서브-노드들로 더 분할된다면 "분할 플래그" 또는 비트 "1"이 할당되고, 그렇지 않다면 비트 "0"이 할당된다.
예를 들어, 도 5에 나타낸 CTU(402) 분할은, (더 낮은 계층구조 레벨에서 4개의 추가 노드들이 있다는 것을 나타내는) 상부 CU(502) 레벨에서의 노드(602A)와 연관된 분할 플래그 "1"을 포함하는 도 6에 제시된 쿼드트리(600)에 의해 표현될 수 있다. 예시된 쿼드트리(600)는 또한, 중간 CU(502) 레벨에서의 노드(602B)와 연관된 분할 플래그 "1"을 포함하여 이 CU도 역시 그 다음 (하부) CU 레벨에서 4개의 추가 CU들(502)로 분할된다는 것을 나타낸다. 소스 인코더(202)는 최소 및 최대 CU(502) 크기를 제약할 수 있으므로, CU(502) 분할의 최대 가능한 깊이를 변경할 수 있다.
인코더(202)는 CU(502)에 대한 인코딩된 데이터를 갖는 제1 부분과 신택스 요소라 알려진 오버헤드를 포함하는 제2 부분을 포함하는 인코딩된 AV 정보(106)를 비트스트림(314)의 형태로 생성한다. 인코딩된 데이터는 인코딩된 CU(502)에 대응하는 데이터(즉, 이하에서 더 설명되는 연관된 움직임 벡터, 예측기, 또는 관련된 잔차와 함께 인코딩된 잔차(residual))를 포함한다. 제2 부분은 블록들의 인코딩된 데이터에 직접 대응하지 않는 인코딩 파라미터들을 나타낼 수 있는 신택스 요소(syntax element)들을 포함한다. 예를 들어, 신택스 요소들은, 이미지 내의 CU(502)의 주소와 식별자, 양자화 파라미터, 선출된 인터/인트라 코딩 모드의 표시, 쿼드트리(600) 또는 기타의 정보를 포함할 수 있다.
CU(502)는 기본 코딩 요소(elementary coding element)에 대응하고 2개의 관련된 서브-유닛들: 예측 유닛(PU) 및 변환 유닛(TU)을 포함하며, 이들 양쪽 모두는 대응하는 CU(502)의 크기와 동일한 최대 크기를 가진다.
도 7은 하나 이상의 PU(702)로의 CU(502)의 분할을 나타내는 도면이다. PU(702)는 분할된 CU(502)에 대응하고 화상내(intra-picture) 또는 화상간(inter-picture) 타입에 대한 화소값을 예측하는데 이용된다. PU(702)는 움직임 추정을 위한 H.264/AVC의 분할의 확장판이며, 다른 CU들로 더 분할되지 않는 각각의 CU(502)에 대해 정의된다("분할 플래그" = 0). 쿼드트리(600)의 각각의 리프(leaf, 604)에서, 2Nx2N의 최종(하부 레벨) CU(502)는 PU의 4개의 가능한 패턴들: 도 7에 도시된 바와 같이, 2Nx2N (702A), 2NxN (702B), Nx2N (702C) 및 NxN (702D) 중 하나를 소유할 수 있다.
CU(502)는 공간적으로 또는 시간적으로 예측 코딩될 수 있다. CU(502)가 "인트라" 모드로 코딩된다면, CU(502)의 각 PU(702)는 그 자신의 공간적 예측 방향을 가질 수 있고 이하에서 더 설명되는 바와 같이 이미지 정보를 가질 수 있다. 또한, "인트라" 모드에서, CU(502)의 PU(702)는, 또 다른 CU에 있는 공간적 이웃을 이용할 수도 있기 때문에, 또 다른 CU(502)에 의존할 수 있다. CU(502)가 "인터" 모드로 코딩된다면, CU(502)의 각 PU(702)는 이하에서 더 설명되는 바와 같이 그 자신의 움직임 벡터(들) 및 연관된 기준 화상(들)을 가질 수 있다.
도 8은 4개의 PU(702) 및 연관된 변환 유닛(TU) 세트(802)로 분할되는 CU(502)를 도시하는 도면이다. TU(802)는 DCT(Discrete Cosine Transform)에 의해 공간적으로 변환되는 기본 유닛을 나타내는데 이용된다. CU(502) 내의 각각의 블록 변환 TU(802)의 크기와 위치는 이하에서 더 설명되는 "잔차" 쿼드트리(RQT; residual quadtree)에 의해 기술된다.
도 9는 도 8의 예에서의 CU(502)의 경우 TU(802)에 대한 RQT(900)를 도시하는 도면이다. RQT(900)의 제1 노드(902A)에서의 "1"은 4개의 브랜치가 있다는 것을 나타내고 인접한 더 낮은 계층구조 레벨에서 제2 노드(902B)에서의 "1"은 표시된 노드가 추가로 4개의 브랜치를 갖는다는 것을 나타낸다는 점에 유의한다. RQT(900)를 기술하는 데이터도 역시 코딩되어 비트스트림(314)에서 오버헤드로서 전송된다.
비디오 시퀀스의 코딩 파라미터들은 파라미터 세트라 불리는 전용 NAL 유닛들에 저장될 수 있다. 2개 타입의 파라미터 세트 NAL 유닛들이 채용될 수도 있다. 제1 파라미터 세트 타입은 시퀀스 파라미터 세트(SPS; Sequence Parameter Set)라 알려져 있고, 전체 비디오 시퀀스 동안에 변경되지 않는 파라미터들을 포함하는 NAL 유닛을 포함한다. 통상적으로, SPS는, 코딩 프로파일, 비디오 프레임의 크기 및 기타의 파라미터를 취급한다. 제2 타입의 파라미터 세트는 화상 파라미터 세트(PPS; Picture Parameter Set)라 알려져 있고, 이미지마다 달라질 수 있는 상이한 값들을 코딩한다.
공간 및 시간 예측
비트스트림(314)을 압축하는데 이용되는 기술들 중 하나는, 화소값들 자체의 저장에 선행하는 것으로 대신에, 디코더(220)에서 반복될 수 있는 프로세스를 이용하여 화소 값들을 예측하고 저장하거나 (잔차라고 알려진) 예측된 화소 값과 실제의 화소 값 사이의 차이를 전송하는 것이다. 디코더(220)가 제공된 정보로부터 동일한 예측된 화소 값을 계산할 수 있는 한, 실제의 화소 값은 예측된 값에 잔차를 더함으로써 복구될 수 있다. 동일한 기술이 마찬가지로 다른 데이터를 압축하는데 이용될 수 있다.
다시 도 3을 참조하면, 처리 중인 CU(502)의 각각의 PU(702)는 예측기 모듈(307)에 제공된다. 예측기 모듈(307)은, 동일한 프레임 내의 근처의 PU(702) 내의 정보에 기초하여 (공간 예측기(324)에 의해 수행되는 프레임내 예측), 및 시간적으로 근접한 프레임들 내의 PU(702)들의 정보에 기초하여 (시간 예측기(330)에 의해 수행되는 프레임간 예측) PU(702)의 값들을 예측한다. 그러나, 시간적 예측은 항상 함께 위치한 PU게 기초하는 것은 아닌데, 그 이유는 함께 위치한 PU들은 현재의 PU(702)와 동일한 x 및 y 좌표를 갖는 참조/비참조 프레임에 위치하도록 정의되기 때문이다. 이들 기술들은 PU(702)들 사이의 공간적 및 시간적 의존성을 이용한다.
따라서 인코딩된 유닛들은 2가지 타입: (1) 비-시간적으로 예측된 유닛들 및 (2) 시간적으로 예측된 유닛들을 포함하도록 범주화될 수 있다. 비-시간적으로 예측된 유닛들은, 프레임 내의 인접 또는 부근 PU(702)를 포함한 현재 프레임을 이용하여 예측되고(예를 들어, 프레임내 예측), 공간 예측기(324)에 의해 생성된다. 시간적으로 예측된 유닛들은 하나의 시간적 화상(예를 들어, P-프레임)으로부터 예측되거나 시간적으로 선행하거나 및/또는 후행하는 적어도 2개의 참조 화상(즉, B-프레임들)으로부터 예측된다.
공간 예측
도 10은 PU(702)의 공간 예측을 나타내는 도면이다. 화상 i는, PU(702), 및 부근 PU(702N)를 포함한 공간적으로 근접한 다른 PU들(1 내지 4)을 포함할 수 있다. 공간 예측기(324)는 현재 이미지의 화소들의 이미-인코딩된 다른 블록들의 PU(702)들을 이용하는 "프레임내" 예측에 의해 현재 블록(예를 들어, 도 10의 블록 C)을 예측한다.
공간 예측기(324)는 공간 코딩에 적절한 부근 PU(예를 들어, 도 10의 PU 1, 2, 3, 또는 4)의 위치를 파악하고 그 부근 PU에 대한 각도 예측 방향을 결정한다. HEVC에서, 35개 방향이 고려될 수 있으므로, 각각의 PU는, 수평, 수직, 45도 대각선, 135도 대각선, DC 등을 포함한, 이와 연관된 35개 방향 중 하나를 가질 수 있다. PU의 공간 예측 방향은 신택스에서 표시된다.
다시 도 3의 공간 예측기(324)를 참조하면, 이 위치파악된 부근 PU는 요소(305)를 이용하여 부근 PU(702N)와 현재 PU(702)의 화소들 사이의 차이로서 잔차 PU(704)(e)를 계산하는데 이용된다. 그 결과는, 예측 방향(1002)과 인트라-예측된 잔차 PU(1004)를 포함하는 인트라-예측된 PU 요소(1006)이다. 예측 방향(1002)은 공간적으로 근접한 PU들로부터 방향을 추론하고, 화상의 공간적 의존성을 추론함으로써 코딩될 수 있어서, 인트라 예측 방향 모드의 코딩 레이트가 감소될 수 있게 한다.
시간적 예측
도 11은 시간적 예측을 나타내는 도면이다. 시간적 예측은, 이전 화상인, 화상 i-1 등의 시간적으로 이웃하는 화상 또는 프레임으로부터의 정보를 고려한다.
일반적으로, 시간적 예측은, 단 하나의 참조 화상으로부터의 하나의 참조 영역을 참조함으로써 PU(702)를 예측하는 단일-예측(P-타입)과, 하나 또는 2개의 참조 화상으로부터의 2개의 참조 영역을 참조함으로써 PU를 예측하는 다중 예측(B-타입)을 포함한다. 참조 이미지는 이미 코딩된 다음 (디코딩에 의해) 재구성된 비디오 시퀀스 내의 이미지이다.
시간적 예측기(330)는, 이들 참조 영역들 중 하나 또는 수 개에서(P-타입의 경우 하나, B-타입의 경우 수 개), 시간적으로 부근의 프레임 내의 화소들의 영역을 식별하여 이들은 이 현재 PU(702)의 예측기로서 이용될 수 있다. 수 개의 영역 예측기들이 이용되는 경우(B-타입), 이들은 병합되어 하나의 단일 예측을 생성할 수 있다. 참조 영역(1102)은 현재 프레임(화상 i) 내의 현재 PU(702)와 참조 프레임(화상 i-1) 내의 참조 영역(1102)(refIdx) 사이의 변위를 정의하는 움직임 벡터(MV)(1104)에 의해 참조 프레임에서 식별된다. B 화상 내의 PU는 2개까지의 MV를 가질 수 있다. MV와 refIdx 정보 양쪽 모두는 HEVC 비트스트림의 신택스에 포함된다.
다시 도 3을 참조하면, 참조 영역(1102)과 현재 PU(702) 사이의 화소값들 간의 차이는 스위치(306)에 의해 선택된 요소(305)에 의해 계산될 수 있다. 이 차이는 인터-예측된 PU(1106)의 잔차라고 불린다. 시간적 또는 프레임간 예측 프로세스의 끝에서, 현재 PU(1006)는 하나의 움직임 벡터 MV(1104)와 잔차(1106)로 구성된다.
그러나, 전술된 바와 같이, 데이터를 압축하기 위한 한 기술은, 디코더(220)에 의해 반복가능한 수단을 이용하여 데이터에 대한 예측된 값을 생성하고, 데이터의 예측된 값과 실제의 값 사이의 차이(잔차)를 계산하여 디코딩을 위해 그 잔차를 전송하는 것이다. 디코더(220)가 예측된 값을 재생할 수 있는 한, 잔차 값은 실제 값을 결정하는데 이용될 수 있다.
이 기술은, MV(1104)의 예측을 생성하고, 실제의 MV(1104)와 예측된 MV(1104) 사이의 차이(잔차)를 계산하여 MV 잔차를 비트스트림(314)에서 전송함으로써 시간 예측에 이용되는 MV(1104)에 적용될 수 있다. 디코더(220)가 예측된 MV(1104)를 재생할 수 있는 한, 실제의 MV(1104)는 잔차로부터 계산될 수 있다. HEVC는 부근의 PU(702)들 사이의 움직임의 공간적 상관관계를 이용하여 각 PU(702)에 대한 예측된 MV를 계산한다.
도 12는 HEVC에서 움직임 벡터 예측기(MVP; motion vector predictor)의 이용을 나타내는 도면이다. 움직임 벡터 예측기들(V1, V2, 및 V3)은 인코딩할 블록(C) 부근에 위치하거나 인접한 복수의 블록(1, 2, 및 3)의 MV(1104)로부터 취해진다. 이들 벡터들은 동일한 시간적 프레임 내의 공간적으로 이웃하는 블록들의 움직임 벡터들을 참조하고 인코딩할 블록의 움직임 벡터를 예측하는데 이용될 수 있기 때문에, 이들 벡터들은 공간적 움직임 예측기라고 알려져 있다.
도 12는 또한, 시퀀스의 (디코딩 순서로) 이전에 디코딩된 화상 내의 함께 위치한 블록 C'(예를 들어, 코딩 중인 블록(이미지 i의 블록 C)과 동일한 공간적 위치에 위치한 화상 i-1의 블록)의 움직임 벡터인 시간적 움직임 벡터 예측기 VT를 나타낸다.
공간적 움직임 벡터 예측기들(V1, V2, 및 V3)의 성분들과 시간적 움직임 벡터 예측기 VT는 중간 움직임 벡터 예측기 VM을 생성하는데 이용될 수 있다. HEVC에서, 3개의 공간적 움직임 벡터 예측기들, 즉, 인코딩할 블록의 좌측에 위치한 블록으로부터의 것(V1), 위에 위치한 블록으로부터의 것(V3), 및 인코딩할 블록의 각각의 코너에 위치한 블록들 중 하나로부터의 것(V2)이, 미리결정된 이용가능성 규칙에 따라, 도 12에 도시된 바와 같이 취해질 수 있다. 이 MV 예측기 선택 기술은 AMVP(Advanced Motion Vector Prediction)라 알려져 있다.
따라서, 공간적 예측기(예를 들어, V1, V2, 및 V3)와 시간적 예측기(들) VT를 갖는 복수의 (전형적으로는 5개의) MV 예측기(MVP) 후보들이 얻어진다. 비트스트림에서 움직임 벡터 예측기를 시그널링하는 오버헤드를 줄이기 위하여, 중복된 움직임 벡터들에 대한 데이터를 제거함으로써 움직임 벡터 예측기 세트가 감소될 수 있다(예를 들어, 다른 MV들과 동일한 값을 갖는 MV들은 후보로부터 제거될 수 있다).
인코더(202)는 후보들 중에서 "최상의" 움직임 벡터 예측기를 선택할 수 있고, 선택된 움직임 벡터 예측기와 실제의 움직임 벡터 사이의 차이로서 움직임 벡터 예측기 잔차를 계산하여, 그 움직임 벡터 예측기 잔차를 비트스트림(314)에서 전송한다. 이 동작을 수행하기 위해, 실제의 움직임 벡터는 (비록 비트스트림(314)에서 전송되지는 않지만) 디코더(220)에 의해 이후의 사용을 위해 저장되어야 한다. 어느 MV 잔차가 정규화된 움직임 벡터 예측기로부터 계산되었는지를 명시하기 위해 비트스트림(314)에는 시그널링 비트 또는 플래그들이 포함되고, 이후에 디코더에 의해 움직임 벡터를 복구하기 위해 이용된다. 이들 비트 또는 플래그들이 이하에서 더 설명된다.
다시 도 3을 참조하면, 공간(인트라) 또는 시간(인터) 예측 프로세스로부터 얻어진 인트라-예측된 잔차(1004)와 인터-예측된 잔차(1106)는 전술된 바와 같이 변환 모듈(308)에 의해 변환 유닛(TU)(802)으로 변환된다. TU(802)는 도 9에 관하여 전술된 바와 같이 RQT 분해를 이용하여 더 작은 TU들로 더 분할될 수 있다. HEVC에서, 일반적으로 2 또는 3레벨의 분해가 이용되고 인증된 변환 크기는 32x32, 16x16, 8x8 및 4x4로부터의 것이다. 전술된 바와 같이, 변환은 이산 코사인 변환(DCT) 또는 이산 사인 변환(DST)에 따라 유도된다.
그 다음, 잔차 변환된 계수들은 양자화기(310)에 의해 양자화된다. 양자화는 데이터 압축에서 매우 중요한 역할을 한다. HEVC에서, 양자화는 고정밀 변환 계수들을 유한 개수의 가능한 값들로 변환한다. 양자화는 상당한 압축을 허용하지만, 양자화는 유손실 동작이고, 양자화에 의한 손실은 복구될 수 없다.
그 다음, 양자화된 변환된 잔차의 계수들은 엔트로피 코더(312)에 의해 코딩된 다음, AV 정보의 이미지들을 코딩하는 유용한 데이터의 일부로서 압축된 비트스트림(310) 내에 삽입된다. 코딩 신택스 요소들은 또한, 신택스 요소들 사이의 공간적 의존성을 이용해 코딩되어 코딩 효율을 증가시킬 수 있다. HEVC는 컨텍스트-적응형 2진 산술 코딩(CABAC; context-adaptive binary arithmetic coding)을 제공한다. 다른 형태 또는 엔트로피 또는 산술 코딩도 역시 이용될 수 있다.
위에서 이용된 예측기들을 계산하기 위하여, 인코더(202)는, 요소들(316, 318, 320, 322, 328)을 포함하는 "디코딩" 루프(315)를 이용하여 이미 인코딩된 PU(702)를 디코딩한다. 이 디코딩 루프(315)는 양자화된 변환된 잔차로부터 PU들과 이미지들을 재구성한다.
양자화된 변환 잔차 계수 E는 역양자화기(316)에 제공되고, 이 역양자화기(316)는 양자화기(310)의 동작에 대한 역 동작을 적용하여 잔차 PU의 역양자화된 변환 계수(E')(708)를 생성한다. 그 다음, 역양자화된 데이터(708)는 역변환기(318)에 제공되고, 이 역변환기는 변환 모듈(308)에 의해 적용된 변환의 역을 적용하여 PU의 재구성된 잔차 계수(e')(710)를 생성한다.
그 다음, 잔차 PU(710)의 재구성된 계수들은, 인트라-예측된 PU(1004)와 인터-예측된 PU(1106)로부터 선택기(306)에 의해 선택된 대응하는 예측된 PU의 대응하는 계수(x')(702')에 가산된다. 예를 들어, 재구성된 잔차가 공간 예측기(324)의 "인트라" 코딩 프로세스로부터 나온다면, "인트라" 예측기(x')는, 변환으로부터, 예를 들어, 이 경우에는 양자화 동작으로부터 발생한 손실에 의해 수정된 원래의 PU(702)에 대응하는 재구성된 PU(x")(712)를 복구하기 위하여 이 잔차에 가산된다. 잔차(710)가 시간 예측기(330)의 "인터" 코딩 프로세스로부터 나온다면, 현재의 움직임 벡터에 의해 지목된 영역들(이들 영역들은 현재의 이미지 인덱스에 의해 참조되는 참조 버퍼(328)에 저장된 참조 이미지들에 속한다)이 병합되어 이 디코딩된 잔차에 가산된다. 이런 방식으로, 원래의 PU(702)는 양자화 동작으로부터 발생하는 손실에 의해 수정된다.
인코더(202)가 전술된 이미지 예측 기술과 유사한 움직임 벡터 예측 기술을 이용하는 한, 움직임 벡터는 시간적으로 후속된 프레임들에서 이용하기 위해 움직임 벡터 버퍼(329)를 이용하여 저장될 수 있다. 이하에서 더 설명되는 바와 같이, 플래그가 설정되고 신택스에서 전송되어 MV 버퍼(329)의 내용을 현재 프레임에 대한 MV로 대체하는 것 대신에 적어도 후속 코딩된 프레임에 대해 현재 디코딩된 프레임에 대한 움직임 벡터가 이용되어야 한다는 것을 나타낼 수 있다.
얻어진 잔차들의 강한 양자화에 의해 생성된 효과를 줄이고 신호 품질을 향상시키기 위해, 루프 필터(322)가 재구성된 신호(x")(712)에 적용된다. 루프 필터(322)는, 예를 들어, PU들 사이의 경계를 평활화하여 코딩 프로세스에 의해 생성된 고주파를 시각적으로 약하게 하기 위한 디블록킹 필터와, 원래의 이미지와의 SSD(sum of the square difference)를 최소화하기 위해 이미지에 대한 PU들 모두가 디코딩된 후에 적용되는 선형 필터를 포함할 수 있다. 선형 필터링 프로세스는 프레임별로 수행되고 필터링될 화소 주변의 수 개의 화소들을 이용하며, 또한 프레임의 화소들간의 공간 의존성을 이용한다. 선형 필터 계수는 코딩되어 비트스트림의 하나의 헤더에서, 통상적으로는 화상 또는 슬라이스 헤더에서 전송될 수 있다.
그 다음, 재구성된 이미지라고도 알려진 필터링된 이미지는, 후속된 "인터" 예측이 현재 비디오 시퀀스의 후속 이미지들의 압축 동안에 발생하는 것을 허용하기 위하여 참조 이미지 버퍼(328)로부터의 참조 이미지로서 저장된다.
엔트로피 코딩
코더(312)에 의해 수행되는 코딩은 변환기(308) 및 양자화기(310)로부터 얻어진 변환 유닛(TU)(802)의 양자화된 변환 계수들의 각각의 계수를 코딩함으로써 수행된다. 이러한 코딩은 통상적으로 복수의 가용 스캔 패턴 중 하나를 이용하여 각각의 변환 계수나 계수 그룹에 대해 수행된다.
도 13은 비정사각형 (4x6) TU(802)의 양자화된 계수들의 코딩에 이용되는 예시적인 스캔 패턴을 나타내는 도면이다. 이들 스캔 패턴은, 수평 스캔 패턴(1302A)(스캔 각도 θ = 0도), 지그재그, 대각선 패턴(1302B 및 1302D)(스캔 각도 θ = 45도 및 135도), 및 수직 스캔(1302C)(스캔 각도 = 270도)을 포함한다. (인코더(312)가 TU(802)의 이전 행으로부터의 정보를 이용하여, 단순한 타일링보다 양호한 압축을 허용할 수 있는 병렬 처리를 가능케하는) 파면 스캔은 임의의 방향으로 수행될 수 있다.
예시된 스캔 패턴은 각각의 TU(802)의 우상귀(upper right)의 TU(802) 계수에서 시작하고 TU(802)의 우하귀(lower right) 계수에서 끝난다. 그러나, 스캔 패턴은 우하귀 계수(24)에서 시작하여 좌상귀 계수(1)에서 끝나거나, 그 문제에 대해, 시계 방향(예를 들어, 10, 11, 14, 15, 19, 18, 17, 13, 9, 5, 6, 7, 8, 12, 16, 20, 24, 23, 22, 21, 1, 2, 3, 4) 또는 반시계 방향 패턴 또는 안쪽으로 최외측 계수 위치를 따르는 패턴에 따라 최내측 계수 위치들로부터 최외측 계수 위치들로의 패턴을 따를 수도 있다. 또한, 스캔 패턴은 연속적일 필요는 없다(예를 들어, 10, 15, 14, 11 등). 이하에서 더 설명되는 바와 같이, 일단 마지막 유효 (비제로) 계수 위치가 알려지고 나면, 계수들은 스캔 패턴 내의 첫 번째 계수쪽으로 스캔 패턴의 반대 방향으로 디코딩될 수 있다.
도 14a는 예시적인 TU(802) 계수 맵(1402)의 도면이다. 많은 계수들이 제로 계수들(예를 들어, 그들의 값이 제로)이라는 점에 유의한다. 각각의 TU(802)에 대해 및 각각의 스캐닝된 위치에서, 대응하는 계수가 제로인지의 여부를 표시하기 위해 비트가 할당되거나 설정되어, 결과적으로 각각의 TU(802)와 연관되는 유효도 맵(1452)을 생성한다.
도 14b는 도 14a에 나타낸 TU(802) 계수들의 예시적인 유효도 맵(1452)을 도시하는 도면이다. 비제로 계수들은 논리 1로 표시되고 제로 계수들은 논리 0으로 표시된다(그러나, 상이한 맵핑이 이용될 수도 있다).
도 14a의 예로 돌아가면, 스캔 패턴이 수평 스캔 패턴(1302A)이면, TU(802)의 마지막 넌제로 계수는 계수(1404)이다. 이것은 도 14b에서도 볼 수 있는데, 이것은, 계수(1404)와 연관된 유효도 맵 요소가 논리 1이고 수평 스캔 패턴(1202A)에서 마지막 요소이기 때문이다.
어느 스캔 기술 또는 패턴이 이용되는지에 관계없이, TU(802)의 마지막 코딩된 계수 너머에 있는 스캔 패턴을 따른 계수들을 제외하고는, 모든 양자화된 계수들이 스캔되어야 한다. 그러나, HEVC는 현재 정의되어 있으므로, 스캔 패턴 내의 마지막 넌제로 계수 이후의 나머지 계수들을 식별하고 스킵하기 위한 신뢰성 있는 수단이 있지 않은 한, TU(802)의 계수들 모두가 스캔되는 것이 가능하다. 이상적으로는, 마지막 넌제로 계수를 식별하기 위한 수단은, 결과 비트스트림(314)의 크기와 처리를 최소화하는 것 사이에서 균형을 이루어야 한다.
도 3에 나타낸 인코더(312)를 참조하여 전술된 바와 같이, HEVC는 CABAC(context adaptive binary arithmetic coding) 등의 컨텍스트 적응형 코딩을 구현한다. CABAC은 확률 모델을 이용하여 2진 심볼을 인코딩하는 엔트로피 코딩의 형태이다. (변환 유닛 계수 또는 움직임 벡터 등의) 비-2진 값의 심볼은 산술 코딩에 앞서 2진화되거나 2진 코드로 변환된다. 2진화된 심볼의 각 비트(또는 "빈")에 대해 스테이지들이 반복된다.
컨텍스트 모델은 2진화된 심볼의 하나 이상의 빈에 대한 확률 모델이다. 이 모델은 최근-코딩된 데이터 심볼들의 통계에 따라 복수의 가용 모델들로부터 선택될 수 있다. 컨텍스트 모델은 각각의 빈이 "1" 또는 "0"일 확률을 저장한다. 그 다음, 산술 코더는 선택된 확률 모델에 따라 각각의 빈을 인코딩한다.
컨텍스트 변수는, 최근에 디코딩된 빈을 포함하는 방정식에 의해 빈의 적응형 2진 산술 디코딩 프로세스에 대해 명시된 변수이다. cabac_init_flag는 컨텍스트 변수들에 대한 초기화 프로세스에서 이용되는 초기화 테이블을 결정하기 위한 방법을 명시한다. cabac_init_flag의 값은 0 내지 1(양쪽 끝 범위 포함)의 범위에 있다. cabac_init_flag가 존재하지 않으면, 이것은 0인 것으로 유추된다.
컨텍스트 변수들의 초기화는 다음과 같이 수행된다. 각각의 컨텍스트 변수에 대해, 2개의 변수 pStateIdx(확률 상태 인덱스; probability state index) 및 valMPS(최고 확률 심볼의 값; value of most probable symbol)이 초기화된다. 테이블 엔트리 initValue로부터, 2개의 4비트 변수들(slopeIdx and intersecIdx)이 다음과 같은 의사-코드 프로세스에 따라 유도된다:
slopeIdx = initValue >>4
intersecIdx = initValue & 15
슬로프 m과 인터섹트 n은 다음과 같은 인덱스로부터 유도된다:
m = slopeIdx*5 - 45
n = (intersecIdx << 3 ) - 16
스캔 패턴 내의 TU(802)의 마지막 유효 계수는 변수들 last_significant_coeff_x 및 last_signicant_coeff_y에 의해 식별될 수 있다.
도 15a는 last_significant_coeff_x 및 last_significant_coeff_y 변수들에 따라 초기화 변수들 m과 n을 결정하기 위한 테이블을 나타낸다. 16x16 TU(802)의 경우, 변수들 last_significant_coeff_x 및 last_significant_coeff_y의 범위는 0 내지 15이다. 위치 범위의 처음 절반(0-7)에 대한 계수들은 표시된 바와 같이 컨텍스트 기반의 모델을 이용하여 디코딩된다. 휘도(Luma) 16x16 TU에 대해 6개의 컨텍스트가 이용된다. 즉, ctxIdx 6 내지 11은 I-타입 인트라 코딩된 화상들에 대한 것이고, ctxIdx 37 내지 42는 P-타입 인터 코딩된 화상들에 대한 것이며, ctxIdx 68 내지 73은 B-타입 인터 코딩된 화상에 대한 것이다. 도 15b는 상이한 CU(502) 타입에 대한 ctxIdx 오프셋을 도시하는 테이블을 나타낸다.
32x32 TU(802)의 경우, last_significant_coeff_x 및 last_significant_coeff_y은 0 내지 31의 범위에 이른다. 위치의 처음 절반(범위 0 내지 15)은 도 15a에 도시된 테이블 내의 컨텍스트 기반의 모델을 이용하여 디코딩된다. 루마 32x32 TU에 대해 7개의 컨텍스트가 이용된다. 즉, ctxIdx 12 내지 18은 I-타입 인트라 코딩된 화상들에 대한 것이고, ctxIdx 43 내지 49는 P-타입 인터-코딩된 화상들에 대한 것이며, ctxIdx 74 내지 80은 B-타입 인터-코딩된 화상에 대한 것이다. 또한, 직사각형 TU(802)(32x8, 8x32, 16x4, 및 4x16)에 대한 last_significant_coeff_x 및 last_significant_coeff_y 중 어느 하나의 가능한 범위는 TU(802)의 가장 긴 치수의 최대에 대한 값이다. 따라서, 일반적으로 last_significant_coeff_x 및 last_significant_coeff_y 중 어느 하나의 범위는 임의의 MxN TU에 대해 0 내지 31일 수 있고, 여기서, max(M, N)은 16보다 크다.
제로값을 갖는 계수조차도, TU(802) 계수들 모두를 스캐닝하는 것은 인코더(312)가 추가적 계산을 수행하게 하고 디코딩 프로세스에 필요한 것보다 많은 비트들을 비트스트림(314)에서 전송하게 한다. 더욱 문제를 악화시키는 것은, 제로 계수들만을 갖는 스캔 행, 열, 또는 대각선을 가질 확률이 HEVC에 도입된 비-정사각형 TU(802)에서보다 높을 수 있다는 것이다.
또한, last_significant_coeff_x 및 last_significant_coeff_y의 더 큰 범위(0 내지 31)로 인해, 마지막 계수 위치 코딩은 0 내지 31로부터의 2개의 숫자를 코딩하기 위해 더 많은 비트를 요구하고 도 15a에 도시된 바와 같이 복수의 TU(802) 크기를 지원하기위해 더 많은 수의 컨텍스트와 빈을 요구한다.
마지막 계수 코딩 및 디코딩
양자화된 TU(802) 계수들의 코딩에 필요한 빈과 비트스트림(314)의 크기를 줄이는 한 기술은, 스캔 패턴의 일부 내의 TU(802) 계수들 중 특정한 부분이 적어도 하나의 넌제로 계수를 갖는 때를 표시하는 플래그를 비트스트림 신택스 내에 인코딩하는 것이다. 일반적으로, 이 기술은, 스캔 패턴에 따라, 스캔 행, 열 또는 대각선에 대한 플래그를 도입한다(대각선의 경우, 아마도 소정의 크기만이 그 플래그를 가질 것이다). 스캔 행, 열, 또는 대각선이 제로 계수만을 갖는 경우, 이 플래그는 0으로 설정된다; 그렇지 않다면 1로 설정된다. 이 도입된 플래그는, 충분한 성능을 유지하면서 변환 유닛의 마지막 유효 계수를 직접 인코딩하는 것보다 적은 비트들을 이용한다. 플래그 비트들의 오버헤드를 더욱 감소시키기 위해, 스캔 패턴 내의 나머지 행이나 열들이 모두 제로 계수를 갖는 경우 이들에 대한 임의의 플래그들을 설정하지 않음으로써 설정되는 플래그들의 수가 감소될 수 있다. 플래그 비트 오버헤드는 여전히 더욱 감소될 수 있는데, 그 이유는 마지막 행이나 열이 이전의 행이나 열에 대한 플래그로부터 유추될 수 있기 때문이다. 이들 특징들은 이하에서 더 상세히 설명된다.
도 16a는 HEVC 인코딩/디코딩 시스템(202)에서 이용될 수 있는 마지막 계수 코딩 기술을 수행하기 위한 예시적인 기술을 나타내는 도면이다. 블록(1602)에서, 스캔 패턴의 일부 상에 배치된 TU(802)의 일부의 계수들 모두가 제로인지의 여부에 관해 결정이 이루어진다. 블록(1604)은, 스캔 패턴의 일부 상의 TU(802)의 일부의 계수들 중 적어도 하나가 비제로이면, TU(802)의 일부와 연관된 플래그를 제1 값으로 설정한다. 블록(1606)은, 스캔 패턴의 일부 상의 TU(802)의 일부의 계수들 모두가 제로이면, TU(802)의 일부와 연관된 플래그를 제2 값으로 설정한다. 블록(1608)은, 스캔 부분들 모두가 고려되었는지를 결정한다. 고려되지 않았다면, 스캔 패턴의 다음 부분 상의 TU(802) 계수들의 다음 부분의 고려를 위해 처리는 다시 블록(1602)으로 간다. 스캔 부분들 모두가 고려되었지만, 고려 중인 TU에 대한 그 순간의 마지막 계수 처리에 대한 처리는 완료되고, 다음 TU 또는 다음 태스크에 대한 처리가 시작될 수 있다. 블록(1610)은 이하에서 더 논의되는 선택사항적인 추가의 실시예이다.
도 17은 도 16a의 동작들을 나타내는 도면이다. 간소화의 목적을 위해, 도 17은 도 13에 나타낸 수평 스캔 패턴(1302A)을 이용한 실시예를 개시한다. 이 스캔 패턴(1302A)에서, 스캔 패턴의 제1 부분(1702A) 상의 TU(802) 계수들의 제1 부분(예를 들어, 제1 행의 있는 계수들)은 적어도 하나의 넌제로 계수, 즉 스캔 부분(1702A)의 0번째 및 5번째 계수들을 포함한다. 따라서, 블록(1604)은, 스캔 패턴(1702A)의 제1 부분 상의 TU(802) 계수들의 제1 부분과 연관된 제1 플래그(1706A)를 논리 1로 설정한다.
블록(1608)은, 스캔 패턴 내에 스캔 부분들(예를 들어, 스캔 패턴 부분들 1702B-1702H)이 더 남아 있다고 결정하므로, 처리는 블록(1602)으로 되돌아가서, 다음 스캔 패턴 부분(1702B)의 TU(802) 변환 계수들의 일부에 적어도 하나의 넌제로 계수가 있는지를 결정한다. 예시된 예에서, 스캔 패턴(1302A)의 제2 부분(1702)은 또한 적어도 하나의 넌제로 계수(제2 계수)를 포함하므로, 블록(1604)은 스캔 패턴(1302A)의 제2 부분 상의 변환 계수들의 제2 부분(1702B)과 연관된 제2 플래그(1706B)를 설정한다.
다시 한번, 블록(1608)은, 스캔 패턴(1302A)에 스캔 부분들(1702C-1702H)이 더 남아 있다고 결정하므로, 처리는 블록(1602)으로 돌아가고, TU(802)의 계수들의 제3 부분(1702C)이 검사된다. 이 경우에, 스캔 패턴(1302A)의 제3 부분(1702C) 상의 TU의 제3 부분의 계수들 모두는 제로이므로, 블록(1606)은 제3 플래그(1706C)를 제로로 설정하여, 스캔 패턴(1302A)의 그 부분이 모두 제로인 TU(802) 계수들을 포함한다는 것을 나타낸다.
이 프로세스는 TU(802)의 계수들 모두가 검사될 때까지 반복되고, 플래그는 연관된 스캔 부분(1702A-1702H)(및 TU(802) 계수들의 부분)이 임의의 넌제로 값을 갖는지를 나타내도록 설정되었거나 설정되지 않았다. 예시된 실시예에서, 플래그(1706A, 1706V, 1706D, 및 1706F)는 1의 값을 갖기 때문에, 이들 스캔 부분 계수들(이 경우에는 행들) 중 적어도 하나는 비제로 값을 갖는 것으로 알려져 있다. 나머지 플래그들이 제로 값을 갖는다는 것은 이들 스캔 부분 계수들이 모두 제로의 값을 갖는다는 것을 나타낸다.
이 예에 대한 스캔 패턴(1302A)은 예시의 간소화를 위해 행별(row-by-row) 스캔 패턴이지만, 열별 스캔(1302C), 대각선 스캔 패턴(1302B 및 1302D), 파면 스캔, 또는 심지어 원형 또는 불연속 스캔 패턴 중 어느 하나를 포함한, 임의의 스캔 패턴에 대해 동일한 기술이 이용될 수 있다. 필요한 것은, 플래그 또는 기타의 수단이 스캔 패턴(1302)의 연관된 부분 상의 TU(802) 계수들의 연관된 부분의 제로/넌제로 상태를 나타내는 값으로 설정되어야 한다는 것이 전부이다.
TU(802) 계수들 자체의 엔트로피 코딩은, 각각의 개개 계수가 검사되어 그것이 비제로값인지를 결정한 후에, 또는 전체 스캔 부분(예를 들어, 행, 열, 또는 대각선)이 검사되어 임의의 넌제로 계수가 있는지를 결정한 후에(예를 들어, 도 16a의 블록(1602) 또는 블록(1606) 후에), 또는 전체 TU(802)가 스캔되어 임의의 비제로 계수들이 있는지를 결정한 후에(도 16a에 도시된 동작들이 모두 완료된 후에) 수행될 수 있다. 넌제로 값을 포함하는 마지막 스캔 부분(1702F)을 표시함으로써, 상기 패러다임은 인코더 및 디코더가 제로값들을 갖는 TU(802)의 디코딩을 그만둠으로써, 인코딩된 TU(802) 계수들을 디코딩하는데 필요한 연관된 처리와 비트스트림(314) 내의 비트들을 절감하게 된다. 한 실시예에서, 전술된 플래그(1706)는 last_TU_scan_portion 플래그라 알려져 있고, 이것은 신택스에서 전송되고 TU(802)와 연관된다.
카테시안 좌표와 유사하게 단순한 숫자나 2개의 숫자로 스캔 패턴에서의 마지막 넌제로 계수를 표시하면(예를 들어, last_significant_coeff_x 및 last_significant_coeff_y), 비트스트림(314) 및 처리에서의 절감이 생길 수 있다. 그러나, 특히 HEVC 하에서 가능하게 된 (32x32정도로 클 수 있는) 더 큰 TU들에 의해, 상당한 비트수가 낭비된다. 상기 기술은 제로 계수의 처리가 감소되는 것을 허용하는 한편 마지막 계수 시그널링을 위해 비트스트림(314)에서 요구되는 비트수를 상당히 감소시킨다.
상기 기술은 인코딩될 제로값 TU(802) 계수들의 수를 감소시키는 반면, 여전히 소정 개수의 제로값 TU(802) 계수들, 예를 들어, 행(1702F)의 마지막 2개 계수가 인코딩되게 할 수 있다. 이 개수는, 특정한 계수가 넌제로 값을 갖는 스캔 패턴의 마지막 부분 내의 마지막 계수(1702)임을 나타내는 마지막 스캔 부분과만 연관된 추가의 플래그(예를 들어, last_scan_portion_position 플래그)를 설정함으로써 더욱 감소될 수 있다.
또한, 상기 예는 스캔 부분 내의 넌제로 계수의 존재의 표시자로서 플래그를 이용했지만, 이러한 시그널링을 위해 임의의 유사한 수단이 이용될 수 있다. 예를 들어, 인덱스 또는 기타의 값이 이용될 수 있다.
마지막 스캔 부분을 나타내는데 요구되는 비트수는, 도 16a의 점선 블록(1610)에 의해 표시된 바와 같이, 더욱 저감될 수 있다. 블록(1610)은 TU(802)의 나머지 부분들의 계수들 모두가 제로인지를 결정한다. 아니라면, (TU(802)와 스캔 패턴의 나머지에 넌제로 계수가 남아 있다면), 블록(1612)은 처리가 블록(1604)으로 돌아가 앞서와 같이 다음 스캔 부분을 고려하는 것을 허용한다. 그러나, TU(802)의 나머지 부분의 계수들 모두가 제로이면, 고려중인 TU(802)의 코딩이 중단된다.
도 17에 제시된 예로 되돌아 가면, 스캔 부분들(1702A-1702E)의 처리는 앞서와 같이 진행되고, 플래그들(1706A-1706E)은 도면에 표시된 바와 같이 설정된다. 그러나, 플래그(1706E)가 설정된 후에, 처리는 블록(1608)로 가서, 고려될 스캔 패턴의 부분들이 더 있다고 결정함으로써, 처리는 블록(1602)으로 되돌아 간다. 블록(1602)은 스캔 패턴 부분(1702F)에 적어도 하나의 넌제로 계수가 있다고 결정한다(사실상, 2개 있다). 그 다음, 처리는 블록(1610)으로 가서, TU(802)의 나머지 부분들 모두의 계수들(예를 들어, 스캔 부분(1702G 및 1702H) 내의 계수들)이 제로와 같은지를 고려한다. 도 17에 도시된 예에서, TU(802)의 나머지 부분들 모두는 제로 계수를 가지므로, 블록(1610)은 처리를 링크 A로 보내고, 링크 A는 고려 중인 TU(802)에 대한 마지막 계수 처리를 끝낸다. TU와 연관된 마지막 계수 플래그의 결과 세트는 스캔 부분(1702G 및 1702H)과 연관된 플래그들을 이제는 배제한 마지막 계수 플래그 세트(1708)에 속한다. 이것은, 다른 상황에서는 베이스라인 실시예에서 이용되는 정보의 3비트를 절감한다. 이 기술은 또한 마지막 2개 스캔 부분(1702G 및 1702H)이 모두 제로 계수를 가질 때 마지막 계수 플래그 세트에 플래그(1706G 및 1706H) 등의 임의의 트레일링 제로 플래그들을 단순히 추가하는 이전에 비해 추가의 비트를 절감한다는 점에 유의한다. 이것은, 플래그(1706E)는 마지막 계수 플래그 세트 내의 마지막 플래그라는 사실에 의해 운반되는 정보는, 스캔의 다음 행 또는 부분이 넌제로 TU 계수를 갖는 마지막 부분이라는 것을 유추하기에 충분하기 때문이다.
도 16b는, 마지막 계수 코딩을 이용한, 인코딩된 비트스트림(314)의 디코딩을 나타내는 도면이다. 블록(1652)에서, 스캔 패턴의 제1 부분 상에 배치된 TU(802)의 제1 부분의 계수들 모두와 연관된 플래그(1706)가 판독된다. 플래그(1706)가 제1 값을 갖는 경우, 블록(1654)에 도시된 바와 같이, 스캔 패턴의 제1 부분에 배치된 TU(802) 계수들의 제1 부분이 디코딩된다. 플래그(1706)가 제2 값을 갖는 경우, 블록(1656)에 도시된 바와 같이, 스캔 패턴의 제1 부분(1702A)에 배치된 TU(802) 계수들의 제1 부분의 코딩은 스킵된다. 블록(1662)은 TU(802) 내에 스캔 부분(1702)이 더 있는지를 결정하기 위해 검사한다. 추가의 스캔 부분(1702)이 있다면, 처리는 블록(1652)으로 되돌아가는 반면, 추가의 스캔 부분이 없다면, 고려 중인 TU(802)에 대한 디코딩 처리가 종료된다.
예를 들어, 다시 도 17을 참조하면, 플래그(1706A)는 스캔 패턴의 제1 부분(1702A)에 넌제로 계수가 있다는 것을 나타낸다. 따라서, 처리는 블록(1654)로 가고, TU 계수들(스캔 행 부분(1702) 내의 계수들)의 제1 부분이 디코딩된다. 스캔 패턴 부분(1702B)에 대해서는 처리가 완료되는데, 그 이유는, 플래그(1706)도 역시 1로 설정되어 제2 스캔 패턴 부분(1702B)의 TU(802) 계수들에 넌제로 계수값이 있다는 것을 나타내기 때문이다. 플래그(1706C)는, 스캔 패턴 부분(1702C) 내의 모든 계수들이 제2 값을 가진다는 것을 나타내고, 스캔 부분(1702C) 내의 TU(802)의 연관된 계수들의 디코딩은 스킵된다. 이 프로세스는 나머지 플래그들(1706D-1706H)에 대해 반복된다.
점선 블록들(1658 및 1662)은 도 16a의 블록(1610)에 도입된 선택사항적 실시예를 이용한 디코딩을 참조한다. 블록(1658)은 판독 플래그가 플래그 세트(1708)의 마지막 나머지 플래그인지를 결정한다. 판독 플래그(1706)가 플래그 세트의 마지막 나머지 플래그가 아니라면, 처리는 블록(1662)으로 가고, 앞서 설명된 바와 같이 계속된다. 그러나 판독 플래그가 플래그 세트의 마지막 나머지 플래그이면, 나머지 플래그와 연관된 현재의 스캔 부분(102)에 후속하는 스캔 패턴(1702)의 부분과 연관된 TU(802) 계수들의 부분이 디코딩되고, TU(802)의 나머지 계수들의 코딩은, 블록(1664)에 도시된 바와 같이, 스킵된다.
예를 들어, 다시 도 17을 참조하면, 플래그 세트(1708)의 마지막 나머지 플래그는 플래그(1708E)이고, 제로 값을 가진다. 이것은 플래그 세트(1708)의 마지막 나머지 플래그이므로, 블록(1664)은 (스캔 패턴 부분(1702F) 내의 계수들을 포함하는) 마지막 나머지 플래그(1706E)와 연관된 부분에 후속하는 TU(802)의 부분의 계수들을 디코딩하고, 스캔 부분(1702G 및 1702H) 내의 계수들을 포함한 디코딩 중인 TU(802) 내의 나머지 계수들의 디코딩을 스킵한다.
제시된 예에서, TU(802)의 코딩 및 디코딩과 플래그(1706 또는 1708)의 설정은 스캔 패턴(1302A)을 따라 그 방향으로 수행되었다. 도 16b에서 설명되는 바와 같이, 계수들의 디코딩은 동일한 방향으로 수행될 수 있거나, 스캔 패턴으로부터 반대 방향으로 코딩될 수도 있다.
예를 들어, 도 17을 참조하면, 인코딩된 TU(802) 계수들의 디코딩은, 마지막 스캔 부분인 스캔 부분(1702H)으로부터 시작함으로써 수행될 수 있다. 플래그(1706H 및 1706G)는 스캔 부분(1702H 및 1702G)이 모두 제로 TU(802) 계수들을 가진다는 것을 나타내므로, 이들 스캔 패턴 부분들 내의 계수들의 디코딩은, 이들이 어쨌든 비트스트림(314) 내에 있다면, 스킵될 수 있다. 플래그(1706F)는 스캔 패턴 부분(1702F)가 일부 넌제로 계수들을 포함한다는 것을 나타내므로, TU(802)의 이 부분의 계수들은 디코딩될 수 있다. 이 프로세스는 TU(802) 계수들의 나머지에 대해 계속될 수 있다. 또는, 제1 값을 갖는 스캔 패턴과 연관된 마지막 플래그(예를 들어, 1706F)를 결정하고, 단순히 그 플래그(예를 들어, 1706F)와 연관된 스캔 부분과 그 스캔 부분 앞의 TU(802)의 나머지 스캔 부분들(예를 들어, 1702E-1702A)의 계수들의 디코딩을 시작하는 로직이 블록(1652) 앞에 삽입될 수 있다.
마찬가지로, 도 16a 및 도 16b의 점선 블록들에 도시된 대안적 실시예에서, 플래그 세트(1708)의 마지막 플래그(1708E)는, 비제로 TU(802) 계수를 갖는 마지막 스캔 패턴 부분(1702)이 마지막 플래그(1708)와 연관된 스캔 패턴 부분에 후속하는 스캔 패턴 부분, 즉, 스캔 패턴 부분(1702F)이라는 것을 나타낸다. 따라서 TU 계수들의 디코딩은 스캔 패턴 부분(1702F)의 TU(802) 계수들에서 시작하여 스캔 패턴 부분(1702A)에서 끝난다.
상기내용을 설명하는데 이용된 예시는 도 13의 1302A에 나타낸 바와 같은 행별 스캔 패턴을 이용했다. 그러나, 이 기술 자체는, 스캔 패턴의 부분과 적절한 플래그가 연관되는 한, 대각선 스캔 패턴 또는 임의의 스캔 패턴과도 수행될 수 있다는 점에 유의해야 한다. 대각선 스캔 패턴(또는 스캔 패턴 내의 계수들의 개수가 부분별로 달라지는 기타의 스캔 패턴)의 경우에는 스캔 부분 내의 계수들의 제로/넌제로 상태를 나타내는 플래그는 그 스캔 부분이 최소 개수의 계수들을 가질 때에만 이용된다는 규칙이 부과될 수 있다는 점에도 유의해야 한다.
마지막 계수 그룹 위치 인코딩 및 디코딩
양자화된 TU(802) 계수들의 코딩에 필요한 빈과 비트스트림(314)의 크기를 줄이는 또 다른 기술은, 스캔 패턴의 일부 내의 TU(802) 계수들 중 특정한 부분 또는 그룹이 적어도 하나의 넌제로 계수를 갖는 때를 표시하는 플래그를 비트스트림 신택스 내에 인코딩하는 것이다.
도 18a는 복수의 계수(1802)를 갖는 16x16 TU(802)의 도면이고, 도 18b는 도 18a에 나타낸 TU(802)로부터 생성된 유효도 맵이다. 유효도 맵(1820)은 넌제로 값을 갖는 각각의 계수 위치에서 "1"을 가진다.
도 18a에 도시된 TU(802)는 도 18c에 도시된 바와 같이 1302A의 스캔 패턴과 유사한 대각선 스캔 패턴(1824)을 이용하여 계수별로 스캔 및 인코딩될 수 있다. 마지막 넌제로 계수(1822)는 x 방향의 12번째 위치와 y 방향의 10번째 위치에 있다는 점에 유의한다. 나머지 계수들은 제로이므로, 이들은 엔트로피 인코딩될 필요도 없고, 디코더(258)에 의해 디코딩 필요도 없다. 이들 계수들을 인코딩하지 않음으로써, 비트스트림(314)은 대응적으로 감소되고 인코더(240) 및 디코더(258) 양쪽 모두에서 요구되는 처리가 감소될 수 있다. 이 기능을 구현하기 위해, 스캔 패턴(1824) 내의 TU(802)의 마지막 넌제로 계수(1822)가, last_significant_coeff_x 및 last_significant_coeff_y라 알려진 변수들을 이용하여 카테시안 좌표로 TU(802)와 연관된 신택스에 표시되어 있다. 이들 값들은 비트스트림(314)으로 디코더에 전달된다. 도 18c에 도시된 예에서, last_significant_coeff_x =12이고 last_significant_coeff_y =10이다.
스캔 패턴(1824)은 또한, 도 18c에 도시된 방향과는 반대로, 그러나 동일한 경로를 따라, 스캔 경로(1824)의 마지막 계수에서 시작하여, 수행될 수도 있다. 이것은 마지막 유효 계수(1822)의 위치가 더 신속하게 및 더 작은 계수를 고려하여 결정되는 것을 허용한다.
문제는, TU(802)가 32x32 정도로 클 수 있기 때문에, last_significant_coeff_x 및 last_significant_coeff_y 변수들의 코딩은 상당한 비트수를 요구한다는 것이다. 더 적은 비트를 요구하면서 유사한 기능을 제공하기 위해, 특정한 크기(예를 들어, 16x16)보다 큰 TU(802)들을, 동일한 크기(예를 들어, 4x4)의 서브블록들이라 알려진 비중복 부분들로 분할하는 2-레벨 유효도 맵이 채택될 수 있다.
도 18d는 16개의 비중복 서브블록들(1822A-1822P)로 분할된 TU(802)를 나타내는 도면으로서, 각각의 서브블록(1822)은 동일한 4x4 크기를 갖고 각각은 16개 계수를 포함한다. 결과적 분할된 TU(802)는, 레벨 제로(L0) 유효도 맵과 레벨 1(L1) 유효도 맵을 포함하는 TU(802)에 대한 다중-레벨 유효도 맵 코딩의 정의를 허용한다.
L0 유효도 맵은 TU(802) 내의 어느 계수가 비제로 계수인지를 나타낸다. 소정 계수가 비제로 계수이면, 그 계수와 연관된 significant_coeff_flag는 "1" 등의 제1 값으로 설정된다. 그 외의 경우, 그 계수와 연관된 significant_coeff_flag는 "0" 등의 제2 값으로 설정된다. 도 18b는 도 18a에 도시된 TU(802)에 대한 예시적인 L0 유효도 맵(1830)을 도시하는 도면이다.
L1 유효도 맵은 TU(802) 내의 어느 4x4 서브블록이 적어도 하나의 넌제로 계수를 포함하는지를 나타낸다. 4x4 서브블록(예를 들어, 서브블록(1832A))이 적어도 하나의 넌제로 계수를 갖는 경우, 그 서브블록과 연관된 significant_coeffgroup_flag는 "1" 등의 제1 값으로 설정된다. 그 외의 경우, (예를 들어, 서브블록(1832P)), significant_coeffgroup_flag는 "0" 등의 제2 값으로 설정된다.
도 18e는 도 18d의 분할된 TU(802)에 대응하는 L1 유효도 맵(1840)의 도면이다. 도 18d에 나타낸 TU(802)의 점선 서브블록들(서브블록들 1832D, 1832H, 및 1832M-1832P) 각각은 모두 제로 계수들을 가지며, 이것은 "0" 값을 갖는 L1 유효도 맵(1840)의 관련 부분과 연관된 significant_coeffgroup_flag에 의해 반영된다는 점에 유의한다. 나머지 서브블록들은 적어도 하나의 비제로 계수를 가지므로 서브블록들(1832A-1832C, 1832E-1832G, 및 1832I-1832L) 각각은 "1" 값을 갖는 연관된 significant_coeffgroup_flag를 가진다는 점에도 유의한다.
서브블록들(1842A-1842P)이 도 18e에 도시된 1302A의 스캔 패턴과 유사한 대각선 서브블록 스캔 패턴(1832)을 이용하여(예를 들어, 대각선으로 및 서브블록별로) 스캔되었다면, 서브블록(1832L)은 넌제로 계수를 갖는 TU(802)의 서브블록 스캔 패턴 내의 마지막 서브블록이라는 점에도 유의한다. 이 서브블록(1832L)은 마지막 유효 서브블록(1832)이라고 알려져 있다.
마지막 유효 서브블록(1832L)의 위치는 비트스트림(314)으로 계산되고 코딩될 수 있다. 한 실시예에서, 마지막 유효 서브블록(1832L) 위치는, 변수들 last_significant_subblock_coeff_x 및 last_significant_subblock_coeff_y를 이용하여, 좌상귀 서브블록(1832A)으로부터의 수평 및 수직 위치의 관점에서 표현된다. 도 18e의 예시적 L1 유효도 맵과 스캔 패턴에서, (last_significant_subblock_coeff_x, last_signiftcant_subblock_coeff_y))는 (3,2)이다. 위치를 정의하기 위해 계수들이 아니라 계수들의 서브블록들을 이용하면, 16x16 TU(802)의 경우 0-3 내지 0-15의 저장된 변수들의 범위가 감소되고, 서브블록 스캔 패턴(1834)을 따른 마지막 유효 서브블록(1832L)까지만의 L1 유효도 맵을 생성하면 추가의 절감이 허용된다.
마지막 유효 서브블록(1832L)의 위치는 다른 관점에서, 예를 들어, 스캔 패턴(1832A) 내의 첫 번째 서브블록으로부터 서브블록 스캔 경로(1834)를 따른 서브블록(1832)의 개수로 표현될 수 있다.
도 19는 HEVC 인코딩/디코딩 시스템(202)에서 이용될 수 있는 마지막 서브블록 코딩 기술을 수행하기 위한 예시적인 기술을 나타내는 도면이다. 블록(1902)에서, 적어도 하나의 넌제로 TU 계수를 갖는 서브블록 처리 스캔 패턴(1834)을 따른 마지막 서브블록(1832L)(예를 들어, 마지막 유효 서브블록)이 결정된다. 블록(1904)에서, 결정된 마지막 유효 서브블록(1832L)의 위치가 인코딩된다. 전술된 바와 같이, 마지막 유효 인코딩된 서브블록(1832L)의 위치는 last_significant_subblock_coeff_x, last_signiftcant_subblock_coeff_y 값들로서, 또는 기타의 신택스에 의해 인코딩될 수 있다.
다음으로 블록(1908)으로 돌아가면, 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 패턴 내의 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대해 제1 값이 인코딩된다. 예를 들어, 도 18e에서, 마지막 유효 서브블록(1832)은 서브블록(1832L)이고, 스캔 패턴(1834) 내의 선행하는 서브블록들(예를 들어, 서브블록들 1832A-1832O) 각각이 검사되어 이들 서브블록들 중 어느 것이 넌제로 TU(802) 계수를 포함하는지를 결정한다. 넌제로 TU(802) 계수를 갖는 서브블록들(서브블록들 1832A-1832C, 1832E-1832G, 및 1832I-1832K)은 제1 값(이 예에서는, "1")으로 인코딩된다. 마지막 유효 서브블록(1832L)에 대한 값은 "1"로서 인코딩될 수도 있지만, 그 서브블록은 정의에 의해 넌제로 계수를 갖기 때문에, 그럴 필요는 없다는 점에 유의한다.
도 18f는 상기 패러다임을 이용하여 생성된 수정된 L1 유효도 맵(또는 서브블록 유효도 맵)을 나타내는 도면이다. 서브블록(1832P)은 서브블록 스캔 경로(1834) 내의 마지막 유효 서브블록(1832L)을 뒤따르기 때문에, 이 서브블록(1832P)은 아무런 넌제로 계수들을 갖지 않는 것으로 알려져 있고, 이 블록에 대한 "1" 또는 "0"의 코딩은 스킵될 수 있으므로, 이 정보를 인코딩하는데 이용될 수 있는 비트들을 절감한다는 점에 유의한다. 또한, 마지막 유효 서브블록(1832L)에 대해 제1 값("1")이 코딩되지 않는데, 그 이유는 이 블록이 넌제로 계수들을 포함한다는 사실이 이미 알려져 있기 때문이라는 점에 유의한다. 대안적 실시예에서, 원한다면, 이 서브블록에 대해 제1 값이 인코딩될 수 있다.
블록(1912)은 마지막 유효 서브블록(1832L)의 계수(1802)와 제1 인코딩된 값("1")을 갖는 서브블록 스캔 패턴(1834)을 따른 마지막 유효 서브블록(1832L)에 선행하는 서브블록(1832)의 계수들을 인코딩한다.
도 18f에 도시된 예에서, 마지막 유효 서브블록(1832L)의 계수들이 인코딩되고 서브블록 스캔 경로(1834)를 따른 서브블록들(1832A-1832C, 1832E-1832G, 및 1832I-1832K 및 1832M-18320)의 계수들도 역시 인코딩된다. 서브블록들(1832D, 1832H, 1832M-18320)의 인코딩은, 이들이 (제1 인코딩된 값("1")이 아니라 제2 인코딩된 값("0")과 연관되어 있어서) 아무런 넌제로 계수들을 포함하지 않는 것으로 알려져 있기 때문에 스킵될 수 있다. 블록(1832P)의 인코딩도 역시, 이 블록이 서브블록 스캔 패턴 내의 마지막 유효 서브블록(1832L)에 후속하기 때문에 어떠한 넌제로 계수들도 포함하지 않는 것으로 알려지므로, 스킵될 수 있다.
상기 사항은 서브블록 스캔 패턴(1834)의 순서대로(예를 들어, 스캔 패턴(1832A) 내의 첫 번째 서브블록으로부터 마지막 유효 서브블록(1832L)으로) 달성되거나, 역순서로(서브블록 스캔 패턴(1834)에서 마지막 유효 서브블록(1832L)으로부터 제1 서브블록(1832A)으로 진행) 달성될 수 있다.
도 20은 비제로 계수들을 포함하고 있다는 것을 나타내는 제1 인코딩된 값을 갖는 후보 서브블록의 계수들을 나타내는 도면을 나타낸다. 하나의 이러한 서브블록(1832)은 서브블록(1832A)로서 도면에 도시되어 있다. 각각의 서브블록의 계수(1802)는 계수 스캔 패턴(2002)을 따라 스캔되고 인코딩된다. 도 20에 나타낸 계수 스캔 패턴(2002)은 서브블록 스캔 패턴(1834)과 유사한 스캔 패턴을 따르지만, 반드시 그럴 필요는 없는데, 그 이유는 계수 스캔 패턴(2002)은 서브블록 스캔 패턴(1834)과는 상이할 수 있기 때문이다. 또한, 도 20에 나타낸 계수 스캔 패턴(2002)은 좌상귀 계수(1802A)로부터 우하귀 계수(1802P)로 스캔되는 것으로 표시되어 있지만, 방향은 역전될 수 있으므로, 반드시 그럴 필요는 없다.
계수들 자체의 코딩은 도 18g에 도시된 바와 같이 수행될 수 있다. 이 실시예에서, 고려 중인 서브블록(예시된 경우에는, 서브블록(1832A))의 유효도 맵(1820)이 생성되고, 결과적으로 전체 TU(820)에 대한 (항목(1820A)으로서 나타낸) 유효도 맵(1820)의 대응하는 부분이 생성된다. 계수들(1832A)의 부분과 유효도 맵(1820A) 사이의 차이가 얻어지고 코딩된 계수(1850A)로서 이용된다. 예를 들어, 제1 서브블록(1832A)의 첫 번째 행은 값들(5, 2, 0, 1)을 가진다. 이들 대응하는 유효도 맵(1820)(1, 1, 0, 1) 값들은 TU(820) 값들로부터 감산되어 값들(4, 1, -, 0)을 생성하고, 이들 결과 값들이 더 코딩될 수 있다. 이것은 더 낮은 비트들을 이용하면서 동일한 정보가 전달되는 것을 허용한다. 서브블록(1832A)의 제로값의 계수들은 이 프로세스 동안에 인코딩되지 않지만, 비제로 계수들은 코딩된다는 점에 유의한다.
TU(802)에 대한 유효도 맵(1820)은 인코딩 프로세스의 일부로서 생성될 수 있다는 점에 유의한다. 그러나, 상기 기술을 이용하여, 유효도 맵(1820)은 마지막 유효 서브블록(1832L)과 서브블록 스캔 패턴(1834)에서 이에 선행하는 서브블록들에 대해서만 생성될 수 있다.
앞서 언급한 기술은, 특정한 크기 또는 치수, 예를 들어, 16x16, 16x4, 4x16, 32x32, 32x8 및 8x32를 초과하는 TU(802)에만 적용될 수 있다. 일반화된 MxN TU(802)의 경우, 마지막 유효 계수 위치 대신에 2-레벨 유효도 맵을 이용하여 마지막 유효 서브블록을 코딩하는 것은:
1. 마지막 유효 위치의 범위를 줄인다: 16x16 TU(802)가 4x4 서브블록들로 분할된다면, 마지막 코딩된 위치의 범위는 마지막 유효 계수 값들에 대한 0-15로부터 마지막 유효 서브블록 값들의 16xN 또는 Nx16 TU(802)에 대한 0-3으로 감소된다. 마찬가지로, 마지막 코딩된 위치의 범위는 32xN 또는 Nx32 TU(802)에 대해 0-31로부터 0-7로 감소되고, 여기서 N은 다른 치수 크기와 같거나 작다.
2. 마지막 코딩된 위치의 신택스를 코딩하기 위한 컨텍스트 테이블 크기를 줄인다: 각각의 타입(I, P, B)의 16x16에 대한 6 루마 컨텍스트와 32x32에 대한 7 루마 컨텍스트 대신에, 이제는 마지막 서브블록 위치의 코딩을 위해, 컨텍스트의 절반 크기만이, 또는 심지어 컨텍스트의 절반 크기 미만이 요구된다. 또한, 4x4 및 8x8 TU(802)에 대한 컨텍스트가 16x16 및 32x32 TU(802)의 마지막 코딩된 서브블록 위치를 코딩하는데 이용될 수 있다. 이 경우, 16x16 및 32x32 컨텍스트가 완전히 제거될 수 있다. 마지막으로, MxN TU(802)(M≠N이고, max(M, N)은 16보다 크거나 같음)의 경우, 컨텍스트 감소에서 동일한 혜택이 역시 가능할 수 있다.
도 19로 돌아가면, 점선 블록들(1906 및 1910)은 이미 논의된 것들에 추가하여 선택사항적으로 수행될 수 있는 동작을 나타낸다. 예를 들어, 상기 실시예에서, 넌제로 계수를 갖는 스캔 패턴(1834) 내의 마지막 유효 서브블록(1832L)에 선행하는 각각의 서브블록(1832)에 대해 제1 값 "1"이 인코딩되었다. 따라서, 인코딩된 제1 값이 없는 임의의 서브블록은 넌제로 값을 갖는 계수를 포함하지 않는 것으로 알려져 있으므로, 이 사실을 기술하는 정보를 코딩할 필요가 없다. 그러나, 한 실시예에서, 아무런 넌제로 계수들도 갖지 않는(또는 모든 제로 계수들을 갖는) 마지막 유효 서브블록(1832L)에 선행하는 각각의 서브블록(1832)에 대해 제2 값("0" 등)이 인코딩될 수 있다. 이 실시예에서, 제2 값을 갖는 서브블록들의 계수들은 스킵될 수 있다.
도 19는 또한, 블록(1906)에 도시된 바와 같이, 마지막 유효 서브블록(1832L)의 마지막 넌제로 계수(1822)의 위치도 역시 인코딩되는 또 다른 선택사항적 실시예를 참조한다.
마지막 유효 계수가 아니라 마지막 유효 서브블록에 따른 코딩은 비트수를 절감하는 한편, 마지막 유효 계수를 트레일링하는 다수의 비트가 제로 값이 코딩되게 한다. 예를 들어, 도 18e에서, 마지막 유효 서브블록은 서브블록(1832L)이다. 이 서브블록(1832L) 내의 계수들 모두가 코딩(및 후속해서 디코딩)된다면, 다수의 트레일링 계수들(예를 들어, 마지막 넌제로 계수(1822)에 후속하는 제로 계수들)이 불필요하게 인코딩 및 디코딩될 것이다.
도 21은 TU(802)의 마지막 유효 서브블록(1832L)의 도면이다. 계수(1822)는 마지막 유효 서브블록(1832L)의 계수 스캔 패턴(2002) 상의 마지막 유효 계수이므로, 계수 스캔 패턴 내의 이 계수(1822)에 후속하는 계수들은 모두 제로이고 코딩될 필요가 없다. 결과적으로, 이들 계수들의 인코딩은 스킵되어 처리와 비트를 절감할 수 있다. 이것은, 마지막 유효 서브블록(1832L)의 마지막 유효 계수(1822)를 넌제로 값을 갖는 마지막 서브블록(1832L) 내의 계수 스캔 패턴(2002)을 따라 마지막 계수로서 결정하고, 마지막 유효 서브블록의 결정된 마지막 유효 계수의 위치를 인코딩함으로써 구현될 수 있다. 한 실시예에서, 마지막 유효 서브블록 계수 값은 마지막 유효 서브블록(1832L)의 좌상귀 계수로부터의 계수 유닛 변위로 표현될 수 있다. 도 21에 나타낸 예에서, 예를 들어, 마지막 유효 서브블록 계수 위치는 다음과 같이 기술될 수 있다:
last_significant_subblock_last_significant_coeff_x = 0 및 last_significant_subblock_last_significant_coeff_y = 1. 이 마지막 유효 서브블록(1832L)의 TU(802) 계수들의 인코딩은 트레일링 제로 계수들의 인코딩이 스킵되도록 중단될 수 있다.
도 19로 돌아가면, 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 패턴을 따른 마지막 서브블록을 결정하는 프로세스는 다양한 방식으로 달성될 수 있다. 한 실시예에서, 이것은 인코더(312)에서의 이전 동작들로부터 이용가능한 last_significant_coeff_x 및 last_significant coeff_y 값들을 이용하여 달성된다. 이들 last_significant_coeff_x 및 last_significant_coeff_y 값들은 마지막 유효 서브블록(1832L) 위치를 계산하는데 이용될 수 있다. 예를 들어, TU(802)의 마지막 유효 계수(1822) 위치는, 마지막 유효 계수(1822)의 좌표를 각각의 좌표 방향에 대한 연관된 서브블록 크기로 나누고 그 나머지는 무시함으로써 카테시안 좌표에서 마지막 유효 서브블록(1832L)과 연관될 수 있다. 도 18d에 도시된 예에서, 예를 들어, 마지막 유효 계수 값들은 (12, 10)이고 서브블록 크기는 4x4이다. 이 경우, 마지막 유효 서브블록은 (int[12/4], int[10/4]) = (3,2)로서 결정될 수 있고, int[*] 함수는 연산으로부터 생기는 정수를 반환한다. 마지막 유효 서브블록이 다른 방식(예를 들어, 서브블록 스캔 패턴 내의 첫 번째 서브블록으로부터의 서브블록수)으로 정의된다면, 이 마지막 서브블록은 마지막 유효 계수 위치로부터 여전히 맵핑될 수 있지만, 더욱 더 복잡한 알고리즘이 요구될 수 있다.
last_significant_coeff_x 및 last significant coeff_y 값들이 마지막 유효 서브블록 위치로 맵핑되는데 이용불가능하다면, 이들은 간단히 마지막 넌제로 계수가 발견될 때까지 어레이 스캔 패턴(1824) 또는 디코더에서 이용될 것과 동일한 서브블록 스캔 패턴(1834) 및 계수 스캔 패턴(2002)을 이용하여 계수들을 스캔함으로써 결정될 수 있다. 이것은, 유익하게도, 스캔 패턴(1824) 내의 TU(802)의 마지막 계수에서 시작하여 넌제로 계수가 발견될 때까지, 또는 TU(802)의 첫 번째 계수에서 시작하여 전체 TU(802)를 스캔함으로써 수행될 수 있다.
전술된 기술은 다른 실시예들에서 실시될 수 있다. 예를 들어, 마지막 유효 서브블록을 결정하고 단지 그 마지막 유효 서브블록에 선행하는 서브블록들에 대한 제1 값을 코딩하는 것 대신에, TU(802)의 계수들을 스캔하고 넌제로 값을 갖는 모든 서브블록들에 대해 제1 값을 코딩하며(및 선택사항으로서 제로값만을 갖는 모든 서브블록에 대해 제2 값을 코딩하며), 코딩된 제1 값을 갖는 서브블록 스캔 패턴 내의 마지막 서브블록으로서 마지막 유효 서브블록을 지정함으로써 기술이 실시될 수 있다. 이 기술은 완전한 L1 레벨 유효도 맵이 이미 이용가능한 경우에 유용한데, 그 이유는 마지막 유효 서브블록이 완전한 L1 유효도 맵으로부터 용이하게 확인될 수 있기 때문이다.
도 22는 전술된 상기 마지막 계수 그룹 위치 기술을 이용하여 인코딩된 TU(802) 계수들을 디코딩하기 위한 예시적인 기술을 나타내는 도면이다. 전술된 바와 같이, 인코딩 프로세스는 마지막 유효 서브블록에 대한 신택스(예를 들어, last_significant_subblock_coeff_x 및 last_significant_subblock_coeff_y)를 포함하는 비트스트림(314)을 생성한다. 블록(2202)은, 서브블록 처리 스캔 패턴(1834)을 따른 적어도 하나의 넌제로 계수를 갖는 마지막 서브블록인, 마지막 유효 서브블록(1832L)의 위치를 디코딩한다. 마지막 유효 서브블록이 어떻게 인코딩되는지에 따라(예를 들어, last_significant_subblock_coeff_x 및 last_signicant_subblock_coeff_y로서, 스캔 패턴 내의 첫 번째 서브블록으로부터의 서브블록들의 개수, 또는 전술된 바와 같이 행이나 열 인덱스를 이용하여), 이것은 상이한 스캔 패턴들을 감안하기 위해 신택스에서 전달되는 정보를 이용하여 마지막 유효 서브블록 위치를 계산할 것을 요구한다.
블록(2206)은 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록(1832L)에 선행하는 각각의 서브블록(1832)에 대해 제1 값(예를 들어, "1")을 디코딩한다. 이것은, 예를 들어, 마지막 서브블록(1832L)에 선행하는 서브블록(1832) 모두를 루핑하고 서브블록들 각각과 연관된 significant_coeff_group 플래그를 디코딩함으로써 달성될 수 있다. 이것은 넌제로 계수들을 갖는 마지막 유효 서브블록(1832L)에 선행하는 모든 서브블록들(1832)을 식별한다. 이것은 마지막 유효 서브블록(1832L)에서 시작하여 스캔 패턴 내의 첫 번째 서브블록(1832A)에서 끝나는, 또는 스캔 패턴 내의 첫 번째 서브블록(1832A)으로부터 마지막 유효 서브블록(1832L)에서 끝나는 서브블록 스캔 패턴을 따라 수행될 수 있다.
그 다음, 블록(2210)에 도시된 바와 같이, 마지막 유효 서브블록(1832L)과 제1 인코딩된 값(예를 들어, "1")을 갖는 서브블록들의 계수들이 디코딩된다. 다시 한번, 이것은 서브블록 스캔 패턴(1834)을 각 방향으로 따를 수 있고, 각각의 서브블록(1832) 내의 계수들의 스캔은 계수 스캔 패턴(2002)에서 각 방향으로 수행될 수 있다. 블록(2212)에 도시된 바와 같이, 제1 값의 significant_coeff_group 플래그를 갖지 않는 서브블록(1832) 내의 계수들의 디코딩은, 이들 서브블록들 내의 계수들은 모두 제로 값을 갖는 것으로 알려져 있기 때문에, 스킵될 수 있다. 또한, 서브블록 스캔 패턴(1834) 내의 마지막 유효 서브블록(1832L)에 후속하는 서브블록들(예를 들어, 서브블록(1832P)) 내의 계수들의 디코딩은, 이러한 서브블록들은 비제로 계수를 포함하지 않는 것으로 알려져 있기 때문에, 수행될 필요가 없다.
앞서 설명된 바와 같이, 제1 값("1")의 연관된 significant_coeff_group 플래그를 갖지 않는 임의의 서브블록(1832)은 모두 제로 계수들을 갖는 것으로 가정될 수 있다는 것이 추론될 수 있다. 그러나, 도 19에 설명된 실시예에서, 블록(1910)은 모두 제로 계수를 갖는 서브블록 처리 스캔 패턴 내의 마지막 서브블록에 선행하는 각각의 서브블록에 대해 제2 값을 인코딩한다. 따라서, 이러한 서브블록(1832)의 상태는 제2 값("0")을 갖는 significant_coeff_group 플래그에 의해 명시적으로 기술된다. 이 경우, 제2 값을 갖는 연관된 significant_coeff_group 플래그를 갖는 임의의 서브블록(1832)의 계수들의 디코딩은 스킵되어, 제1 값을 갖는 significant_coeff_group 플래그와 연관된 서브블록(1832)들만이 그들의 계수를 디코딩시킬 것이다. 이것이 도 22의 블록(2208)에 도시되어 있다.
도 19의 블록(1906)에 역시 기술된 바와 같이, 마지막 유효 서브블록(1832L) 내부의 마지막 유효 계수의 위치는 last_significant_subblock_last_significant_coeff_x 및 last_significant_subblock_last_significant_coeff_y 변수들을 이용하여 인코딩될 수 있다. 이러한 정보가 비트스트림(314) 내에 인코딩된다면, 블록(2204)은 이 정보를 디코딩하여 마지막 유효 서브블록의 마지막 유효 계수의 위치가 알려진다. 마지막 유효 서브블록(1832L)의 계수들의 디코딩은 이 위치(예를 들어, 계수(1822))에서 시작할 수 있고, 계수 스캔 경로(2002)를 따라 역방향으로 마지막 유효 서브블록(1832L)의 첫 번째 계수까지 진행하거나, 첫 번째 계수에서 시작하여 마지막 유효 계수(1822)에서 끝날 수 있다. 이것은 전체 TU(802) 어레이의 마지막 유효 계수를 코딩 및 디코딩하는 것으로부터의 진보인데, 그 이유는 4x4 서브블록 내의 마지막 유효 계수를 기술하는 값들이 0-16 또는 0-32가 아닌 0-3 사이의 값만을 코딩할 필요가 있기 때문이라는 점에 유의한다.
상기 내용이 정보를 전달하거나 프로세스 시그널링을 목적으로 특정한 값이나 상태로의 플래그, 인덱스, 또는 기타의 지정자의 설정에 관하여 논의되었지만, 용어 플래그 및 인덱스의 사용은 여기서 설명된 바와 같이 이후의 사용을 위해 임의의 지정자나 기타의 메모리 수단의 설정 또는 그 지정자나 메모리 수단의 판독을 광범위하게 포괄하게 위한 것이다.
하드웨어 환경
도 23은 본 발명의 실시예를 구현하는데 이용될 수 있는 예시적인 처리 시스템(2300)을 나타낸다. 컴퓨터(2302)는, 프로세서(2304)와, 랜덤 액세스 메모리(RAM)(2306) 등의 메모리를 포함한다. 컴퓨터(2302)는, 윈도우 등의 이미지를 그래픽 사용자 인터페이스(2318B) 상에서 사용자에게 프리젠팅하는 디스플레이(2322)에 연동된다. 컴퓨터(2302)는, 키보드(2314), 마우스 장치(2316), 프린터 등의 다른 장치들에 결합될 수 있다. 물론, 당업자라면, 상기 컴포넌트들의 임의의 조합, 또는 임의 개수의 상이한 컴포넌트들, 주변 장치들, 및 기타의 장치들이 컴퓨터(2302)와 함께 이용될 수 있다는 것을 이해할 것이다.
일반적으로, 컴퓨터(2302)는 메모리(2306)에 저장된 운영 체제(2308)의 제어하에 동작하며, 사용자와 인터페이싱하여 입력과 명령을 수락하고 그래픽 사용자 인터페이스(GUI) 모듈(2318A)을 통해 결과를 프리젠팅한다. GUI 모듈(2318A)이 별개의 모듈로서 도시되어 있지만, GUI 기능을 수행하는 명령어들은 운영 체제(2308), 컴퓨터 프로그램(2310)에 존재하거나 분산될 수 있고, 또는 특별 목적 메모리 및 프로세서로 구현될 수 있다. 컴퓨터(2302)는 또한, COBOL, C++, FORTRAN 등의 프로그래밍 언어나 기타의 언어로 작성된 애플리케이션 프로그램(2310)이 프로세서(2304) 판독가능한 코드로 변환되는 것을 허용하는 컴파일러(2312)를 구현한다. 완료 후에, 애플리케이션(2310)은 컴파일러(2312)를 이용하여 생성된 관계와 로직을 이용하여 컴퓨터(2302)의 메모리(2306)에 저장된 데이터를 액세스 및 조작한다. 컴퓨터(2302)는 또한 선택사항으로서, 모뎀, 위성 링크, 이더넷 카드, 또는 다른 컴퓨터와 통신하기 위한 기타의 장치 등의 외부 통신 장치를 포함한다.
한 실시예에서, 운영 체제(2308), 컴퓨터 프로그램(2310) 및 컴파일러(2312)를 구현하는 명령어들은, 컴퓨터-판독가능한 매체, 예를 들어, 집(zip) 드라이브, 플로피 디스크 드라이브(2324), 하드 드라이브, CD-ROM 드라이브, 테이프 드라이브 등의 하나 이상의 고정된 또는 착탈식 데이터 저장 장치를 포함할 수 있는 데이터 저장 장치(2320)로 유형적으로 구현된다. 또한, 운영 체제(2308) 및 컴퓨터 프로그램(2310)은, 컴퓨터(2302)에 의해 판독 및 실행될 때, 컴퓨터(2302)로 하여금, 본 발명을 구현 및/또는 이용하는데 필요한 단계들을 수행하게 하는 명령어들로 구성된다. 컴퓨터 프로그램(2310) 및/또는 동작 명령어들은 또한, 메모리(2306) 및/또는 데이터 통신 장치(2330)로 유형적으로 구현됨으로써, 컴퓨터 프로그램 제품이나 제조품을 형성할 수 있다. 따라서, 용어 "제조품", "프로그램 저장 장치" 및 "컴퓨터 프로그램 제품"은 본 명세서에서 사용될 때, 임의의 컴퓨터 판독가능한 장치나 매체로부터 액세스가능한 컴퓨터 프로그램을 포괄하는 것으로 의도한다.
처리 시스템(2300)은 또한, 데스크탑, 랩탑, 태블릿, 노트북 컴퓨터, PDA(personal data assistant), 셀폰, 스마트폰, 또는 적절한 처리 및 메모리 기능을 갖춘 임의의 장치로 구현될 수 있다. 또한, 처리 시스템(2300)은 상기 기능들의 일부 또는 전부를 수행하는 특별 목적 하드웨어를 이용할 수도 있다. 예를 들어, 전술된 인코딩 및 디코딩 프로세스는 특별 목적 프로세서 및 연관된 메모리에 의해 수행될 수 있다.
당업자라면, 본 개시의 범위로부터 벗어나지 않고 이 구성에 대해 많은 수정을 가할 수 있다는 것을 이해할 것이다. 예를 들어, 당업자라면, 상기 컴포넌트들의 임의의 조합, 또는 임의 개수의 상이한 컴포넌트들, 주변 장치들, 및 기타의 장치들이 이용될 수 있다는 것을 이해할 것이다. 예를 들어, 여기서 설명된 특정한 기능들은 하드웨어 모듈, 또는 소프트웨어 또는 펌웨어의 형태로 저장된 명령어들을 실행하는 프로세서에 의해 수행될 수 있다. 또한, 여기서 설명된 기능은 하나의 모듈로 결합되거나 복수의 모듈에서 수행되도록 확장될 수 있다.
결론
바람직한 실시예들의 상기의 설명은 예시와 설명의 목적을 위해 제공되었다. 이 설명은 본 개시를 철저히 남김없이 드러내거나 개시된 형태 그대로만으로 제한하고자 함이 아니다. 전술된 교시에 비추어 많은 수정과 변형이 가능하다. 권리 범위는 이 상세한 설명에 의해 제한되는 것이 아니라 첨부된 청구항들에 의해 제한되어야 한다.

Claims (70)

  1. 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛(transform unit)을 인코딩하는 방법으로서,
    마지막 유효 서브블록(significant subblock)을 결정하는 단계 - 상기 마지막 유효 서브블록은 적어도 하나의 넌제로(non-zero) 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록임 - ;
    상기 결정된 마지막 유효 서브블록의 위치를 인코딩하는 단계;
    적어도 하나의 넌제로 계수를 갖는 상기 서브블록 처리 스캔 패턴 내의 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대한 제1 값을 인코딩하는 단계; 및
    상기 마지막 유효 서브블록의 계수들 및 상기 마지막 유효 서브블록에 선행하고 상기 제1 인코딩된 값을 갖는 서브블록들의 계수들을 인코딩하는 단계
    를 포함하는 변환 유닛 인코딩 방법.
  2. 제1항에 있어서,
    상기 서브블록 스캔 패턴을 따른 상기 마지막 유효 서브블록에 후속하는 서브블록들의 계수들의 인코딩을 스킵하는 단계를 더 포함하는 변환 유닛 인코딩 방법.
  3. 제2항에 있어서,
    모든 계수들이 제로를 갖는 상기 서브블록 처리 스캔 패턴 내의 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대한 제2 값을 인코딩하는 단계; 및
    상기 제2 값을 갖는 서브블록들의 계수들의 인코딩을 스킵하는 단계
    를 더 포함하는 변환 유닛 인코딩 방법.
  4. 제1항에 있어서,
    상기 처리 스캔 패턴을 따른 마지막 유효 서브블록을 결정하는 단계는,
    상기 계수들의 어레이의 마지막 유효 계수를 결정하는 단계; 및
    상기 결정된 마지막 유효 계수로부터 상기 마지막 유효 서브블록을 결정하는 단계
    를 포함하는, 변환 유닛 인코딩 방법.
  5. 제4항에 있어서,
    상기 계수들의 어레이의 마지막 유효 계수를 결정하는 단계는 인덱스를 결정하는 단계를 포함하고;
    상기 결정된 마지막 유효 계수로부터 마지막 유효 서브블록을 결정하는 단계는 상기 인덱스로부터 상기 마지막 유효 서브블록을 결정하는 단계를 포함하는, 변환 유닛 인코딩 방법.
  6. 제4항에 있어서,
    상기 계수들의 어레이의 마지막 넌제로 계수를 결정하는 단계는,
    어레이 스캔 패턴을 따라 계수들의 어레이를 스캔하는 단계 - 상기 어레이 스캔 패턴은 상기 서브블록 처리 스캔 패턴을 포함하고, 각각의 서브블록의 계수들은 계수 스캔 패턴을 따라 스캔됨 - ; 및
    상기 계수들의 어레이의 마지막 유효 계수를 상기 어레이 스캔 패턴 내의 마지막 넌제로 계수로서 식별하는 단계
    를 포함하는, 변환 유닛 인코딩 방법.
  7. 제1항에 있어서,
    상기 마지막 유효 서브블록의 마지막 유효 계수를 결정하는 단계 - 상기 마지막 유효 계수는 넌제로 값을 갖는 상기 마지막 유효 서브블록 내에서 계수 스캔 패턴을 따른 마지막 계수임 - ; 및
    상기 마지막 유효 서브블록의 결정된 마지막 유효 계수의 위치를 인코딩하는 단계
    를 더 포함하고,
    상기 마지막 유효 서브블록의 계수들을 인코딩하는 단계는,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 마지막 유효 계수를 포함하고 또한 이에 선행하는 상기 마지막 유효 서브블록의 계수들을 인코딩하는 단계를 포함하는, 변환 유닛 인코딩 방법.
  8. 제7항에 있어서,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 마지막 유효 계수에 후속하는 상기 마지막 유효 서브블록의 계수들의 인코딩을 스킵하는 단계를 더 포함하는 변환 유닛 인코딩 방법.
  9. 제8항에 있어서,
    상기 서브블록 스캔 패턴과 상기 계수 스캔 패턴은,
    대각선 스캔 패턴;
    행 스캔 패턴; 및
    열 스캔 패턴
    을 포함하는 그룹으로부터 선택되는, 변환 유닛 인코딩 방법.
  10. 제9항에 있어서,
    상기 대각선 스캔 패턴은 파면(wavefront) 스캔 패턴인, 변환 유닛 인코딩 방법.
  11. 제1항에 있어서,
    상기 마지막 유효 서브블록의 인코딩된 위치는 카테시안 좌표(Cartesian coordinate)를 포함하는, 변환 유닛 인코딩 방법.
  12. 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛을 디코딩하는 방법으로서,
    마지막 유효 서브블록의 위치를 디코딩하는 단계 - 상기 마지막 유효 서브블록은 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록임 - ;
    적어도 하나의 넌제로 계수를 갖는 상기 서브블록 처리 스캔 패턴을 따른 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록과 연관된 제1 값을 디코딩하는 단계; 및
    상기 마지막 유효 서브블록의 계수들 및 상기 제1 디코딩된 값을 갖는 상기 서브블록 스캔 패턴 내의 상기 마지막 유효 서브블록에 선행하는 서브블록들의 계수들을 디코딩하는 단계
    를 포함하는 변환 유닛 디코딩 방법.
  13. 제12항에 있어서,
    상기 서브블록 스캔 패턴을 따른 상기 마지막 유효 서브블록에 후속하는 서브블록들의 계수들의 디코딩을 스킵하는 단계를 더 포함하는 변환 유닛 디코딩 방법.
  14. 제12항에 있어서,
    모든 계수들이 제로를 갖는 상기 서브블록 처리 스캔 패턴을 따른 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록과 연관된 제2 값을 디코딩하는 단계; 및
    상기 제2 디코딩된 값을 갖는 서브블록들의 계수들의 디코딩을 스킵하는 단계
    를 더 포함하는 변환 유닛 디코딩 방법.
  15. 제14항에 있어서,
    상기 마지막 유효 서브블록의 마지막 유효 계수의 위치를 디코딩하는 단계를 더 포함하고, 상기 마지막 유효 계수는 넌제로 값을 갖는 상기 마지막 유효 서브블록 내에서 계수 스캔 패턴을 따른 마지막 계수이며,
    상기 마지막 유효 서브블록의 계수들을 디코딩하는 단계는, 상기 마지막 서브블록 내에서 계수 스캔 패턴을 따른 상기 마지막 유효 서브블록의 마지막 계수를 포함하고 또한 이에 선행하는 마지막 유효 서브블록의 계수들을 디코딩하는 단계를 포함하는, 변환 유닛 디코딩 방법.
  16. 제15항에 있어서,
    상기 마지막 유효 서브블록의 계수들을 디코딩하는 단계는,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 마지막 유효 계수에 후속하는 상기 마지막 유효 서브블록의 계수들의 디코딩을 스킵하는 단계를 더 포함하는, 변환 유닛 디코딩 방법.
  17. 제16항에 있어서,
    상기 서브블록 스캔 패턴과 상기 계수 스캔 패턴은,
    대각선 스캔 패턴;
    행 스캔 패턴; 및
    열 스캔 패턴
    을 포함하는 그룹으로부터 선택되는, 변환 유닛 디코딩 방법.
  18. 제17항에 있어서,
    상기 대각선 스캔 패턴은 파면 스캔 패턴인, 변환 유닛 디코딩 방법.
  19. 제12항에 있어서,
    상기 마지막 서브블록의 디코딩된 위치는 카테시안 좌표를 포함하는, 변환 유닛 디코딩 방법.
  20. 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛을 인코딩하기 위한 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    마지막 유효 서브블록을 결정하고 - 상기 마지막 유효 서브블록은 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록임 - ;
    상기 결정된 마지막 유효 서브블록의 위치를 인코딩하며;
    적어도 하나의 넌제로 계수를 갖는 상기 서브블록 처리 스캔 패턴 내의 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대한 제1 값을 인코딩하고;
    상기 마지막 유효 서브블록의 계수들 및 상기 제1 인코딩된 값을 갖는 상기 마지막 유효 서브블록에 선행하는 서브블록들의 계수들을 인코딩하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 인코딩 시스템.
  21. 제20항에 있어서,
    상기 명령어들은,
    상기 서브블록 스캔 패턴을 따른 상기 마지막 유효 서브블록에 후속하는 서브블록들의 계수들의 인코딩을 스킵하기 위한 명령어들을 더 포함하는, 변환 유닛 인코딩 시스템.
  22. 제21항에 있어서,
    상기 명령어들은,
    모든 계수들이 제로를 갖는 상기 서브블록 처리 스캔 패턴 내의 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록에 대한 제2 값을 인코딩하고;
    상기 제2 값을 갖는 서브블록들의 계수들의 인코딩을 스킵하기 위한
    명령어들을 더 포함하는, 변환 유닛 인코딩 시스템.
  23. 제20항에 있어서,
    상기 처리 스캔 패턴을 따른 마지막 서브블록을 결정하기 위한 명령어들은,
    상기 계수들의 어레이의 마지막 유효 계수를 결정하고;
    상기 결정된 마지막 넌제로 계수로부터 상기 마지막 유효 서브블록을 결정하기 위한
    명령어들을 포함하는, 변환 유닛 인코딩 시스템.
  24. 제20항에 있어서,
    상기 명령어들은,
    상기 마지막 유효 서브블록의 마지막 유효 계수를 결정하고 - 상기 마지막 유효 계수는 넌제로 값을 갖는 상기 마지막 유효 서브블록 내에서 계수 스캔 패턴을 따른 마지막 계수임 - ;
    상기 마지막 유효 서브블록의 결정된 마지막 유효 계수의 위치를 인코딩하기 위한 명령어들을 더 포함하고,
    상기 마지막 유효 서브블록의 계수들을 인코딩하기 위한 명령어들은,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 상기 마지막 유효 계수를 포함하고 또한 이에 선행하는 상기 마지막 유효 서브블록의 계수들을 인코딩하기 위한 명령어들을 포함하는, 변환 유닛 인코딩 시스템.
  25. 제24항에 있어서,
    상기 명령어들은,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 상기 마지막 유효 계수에 후속하는 상기 마지막 유효 서브블록의 계수들의 인코딩을 스킵하기 위한 명령어들을 더 포함하는, 변환 유닛 인코딩 시스템.
  26. 제25항에 있어서,
    상기 서브블록 스캔 패턴과 상기 계수 스캔 패턴은,
    대각선 스캔 패턴;
    행 스캔 패턴; 및
    열 스캔 패턴
    을 포함하는 그룹으로부터 선택되는, 변환 유닛 인코딩 시스템.
  27. 복수의 서브블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 변환 유닛을 디코딩하기 위한 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    마지막 유효 서브블록의 위치를 디코딩하고 - 상기 마지막 유효 서브블록은 적어도 하나의 넌제로 계수를 갖는 서브블록 처리 스캔 패턴을 따른 마지막 서브블록임 - ;
    적어도 하나의 넌제로 계수를 갖는 상기 서브블록 처리 스캔 패턴을 따른 상기 마지막 유효 서브블록에 선행하는 각각의 서브블록과 연관된 제1 값을 디코딩하며;
    상기 마지막 유효 서브블록의 계수들 및 상기 제1 디코딩된 값을 갖는 상기 서브블록 스캔 패턴 내의 마지막 유효 서브블록에 선행하는 서브블록들의 계수들을 디코딩하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 디코딩 시스템.
  28. 제27항에 있어서,
    상기 명령어들은,
    상기 서브블록 스캔 패턴을 따른 상기 마지막 유효 서브블록에 후속하는 서브블록들의 계수들의 디코딩을 스킵하기 위한 명령어들을 더 포함하는, 변환 유닛 디코딩 시스템.
  29. 제28항에 있어서,
    상기 명령어들은,
    모든 계수들이 제로를 갖는 상기 서브블록 처리 스캔 패턴을 따른 마지막 유효 서브블록에 선행하는 각각의 서브블록과 연관된 제2 값을 디코딩하고;
    상기 제2 디코딩된 값을 갖는 서브블록들의 계수들의 디코딩을 스킵하기 위한
    명령어들을 더 포함하는, 변환 유닛 디코딩 시스템.
  30. 제29항에 있어서,
    상기 명령어들은, 상기 마지막 유효 서브블록의 마지막 유효 계수 - 상기 마지막 유효 계수는 넌제로 값을 갖는 상기 마지막 유효 서브블록 내에서 계수 스캔 패턴을 따른 마지막 계수임- 의 위치를 디코딩하기 위한 명령어들을 더 포함하고,
    상기 마지막 유효 서브블록의 계수들을 디코딩하기 위한 명령어들은, 상기 마지막 서브블록 내에서 계수 스캔 패턴을 따른 마지막 유효 서브블록의 마지막 계수를 포함하고 또한 이에 선행하는 마지막 유효 서브블록의 계수들을 디코딩하기 위한 명령어들을 포함하는, 변환 유닛 디코딩 시스템.
  31. 제30항에 있어서,
    상기 마지막 유효 서브블록의 계수들을 디코딩하기 위한 명령어들은,
    상기 마지막 유효 서브블록 내에서 상기 계수 스캔 패턴을 따른 마지막 유효 계수에 후속하는 상기 마지막 유효 서브블록의 계수들의 디코딩을 스킵하기 위한 명령어들을 더 포함하는, 변환 유닛 디코딩 시스템.
  32. 제31항에 있어서,
    상기 서브블록 스캔 패턴과 상기 계수 스캔 패턴은,
    대각선 스캔 패턴;
    행 스캔 패턴; 및
    열 스캔 패턴
    을 포함하는 그룹으로부터 선택되는, 변환 유닛 디코딩 시스템.
  33. 계수들의 어레이를 갖는 변환 유닛을 처리하는 방법으로서,
    (a) 스캔 패턴의 일부 상에 배치된 변환 유닛의 일부의 계수들 모두가 제로인지를 결정하는 단계;
    (b) 상기 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들 중 일부의 계수들 중 적어도 하나가 넌제로이면, 상기 변환 유닛의 일부와 연관된 플래그를 제1 값으로 설정하는 단계; 및
    (c) 상기 스캔 패턴의 일부 내에 배치된 변환 유닛 계수들 중 일부의 계수들 모두가 제로이면, 상기 변환 유닛 계수들의 일부와 연관된 플래그를 제2 값으로 설정하는 단계
    를 포함하는 변환 유닛 처리 방법.
  34. 제33항에 있어서,
    상기 스캔 패턴의 각각의 추가의 부분 상에 배치된 상기 변환 유닛 계수들의 각각의 추가의 부분과 연관된 추가의 플래그를 설정하기 위해 상기 단계 (a) 내지 (c)를 반복하는 단계를 더 포함하는 변환 유닛 처리 방법.
  35. 제34항에 있어서,
    상기 제1 값을 갖는 플래그와 연관된 계수들만을 인코딩하는 단계; 및
    상기 제2 값을 갖는 플래그와 연관된 계수들의 인코딩을 스킵하는 단계
    를 더 포함하는 변환 유닛 처리 방법.
  36. 제34항에 있어서,
    각각의 플래그는 상기 변환 유닛과 연관된 마지막 계수 플래그 세트의 멤버이고, 상기 단계 (b)는,
    상기 스캔 패턴 상에 배치된 변환 유닛 계수들의 추가의 부분들의 계수들 모두가 제로인지를 결정하는 단계;
    상기 변환 유닛 계수들의 추가의 부분들의 계수들 모두가 제로이면 상기 마지막 계수 플래그 세트의 어떠한 추가의 플래그도 설정하지 않는 단계; 및
    상기 스캔 패턴의 나머지 부분 상에 배치된 상기 변환 유닛 계수들의 나머지 부분들의 계수들 중 적어도 하나가 비제로인 경우에만 상기 추가의 플래그를 설정하는 단계
    를 더 포함하는, 변환 유닛 처리 방법.
  37. 제33항에 있어서,
    상기 어레이는 복수 행의 계수들을 포함하고,
    상기 스캔 패턴은 행 방향이고;
    각각의 스캔 부분은 상기 복수 행의 계수들 중의 한 행(a row)을 포함하는, 변환 유닛 처리 방법.
  38. 제33항에 있어서,
    상기 어레이는 복수 열의 계수들을 포함하고,
    상기 스캔 패턴은 열 방향이고;
    각각의 스캔 부분은 상기 복수 열의 계수들 중의 한 열(a column)을 포함하는, 변환 유닛 처리 방법.
  39. 제33항에 있어서,
    상기 어레이는 행과 열을 포함하는 N x M 어레이이고, 상기 스캔 패턴은 대각선 방향의 파면 스캔 패턴인, 변환 유닛 처리 방법.
  40. 계수들의 어레이를 갖는 변환 유닛을 처리하는 방법으로서,
    (a) 스캔 패턴의 제1 부분 상에 배치된 변환 유닛 계수들의 제1 부분의 계수들 모두와 연관된 플래그를 판독하는 단계;
    (b) 상기 플래그가 제1 값을 갖는 경우(에만) 상기 스캔 패턴의 제1 부분 상에 배치된 상기 변환 유닛 계수들의 제1 부분을 디코딩하는 단계; 및
    (c) 상기 플래그가 제2 값을 갖는 경우 상기 스캔 패턴의 제1 부분 상에 배치된 상기 변환 유닛 계수들의 제1 부분의 코딩을 스킵하는 단계
    를 포함하는 변환 유닛 처리 방법.
  41. 제40항에 있어서,
    상기 스캔 패턴의 각각의 나머지 부분의 변환 유닛 계수들의 각각의 나머지 부분과 연관된 각각의 나머지 플래그에 대해 단계들 (a) 내지 (c)를 수행하는 단계를 더 포함하는 변환 유닛 처리 방법.
  42. 제41항에 있어서,
    각각의 플래그는 상기 변환 유닛과 연관된 마지막 계수 플래그 세트의 멤버이고, 상기 단계 (c)는,
    상기 판독된 나머지 플래그가 마지막 계수 플래그 세트의 마지막 판독된 플래그이고 상기 마지막 판독된 플래그가 제2 값을 갖는지를 결정하는 단계; 및
    상기 판독된 나머지 플래그가 마지막 계수 플래그 세트의 마지막 판독된 플래그이고 상기 마지막 판독된 플래그가 제2 값을 갖는 경우,
    상기 마지막 판독된 플래그와 연관된 변환 유닛 계수들의 부분들에 후속하는 변환 유닛 계수들의 부분을 디코딩하는 단계; 및
    추가의 변환 유닛 계수들의 부분들의 디코딩을 스킵하는 단계
    를 더 포함하는 변환 유닛 처리 방법.
  43. 제42항에 있어서,
    상기 어레이는 행과 열을 포함하는 n x m 어레이이고, 상기 스캔 패턴은 대각선 방향의 파면 스캔 패턴인, 변환 유닛 처리 방법.
  44. 제42항에 있어서,
    상기 어레이는 복수의 행과 계수들을 포함하고, 상기 스캔 패턴은 행 방향인, 변환 유닛 처리 방법.
  45. 제42항에 있어서,
    상기 어레이는 복수 열의 계수들을 포함하고, 상기 스캔 패턴은 열 방향인, 변환 유닛 처리 방법.
  46. 계수들의 어레이를 갖는 변환 유닛을 처리하는 방법으로서,
    복수의 플래그를 설정하는 단계 - 각각의 플래그는 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들의 일부와 연관되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 중 적어도 하나가 넌제로이면 제1 값으로 설정되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 모두가 제로이면 제2 값으로 설정됨 - ;
    상기 제1 값을 갖는 연관된 플래그를 갖는 변환 유닛 계수들의 부분들을 코딩하는 단계; 및
    상기 제2 값을 갖는 연관된 플래그를 갖는 변환 유닛 계수들의 부분들의 코딩을 스킵하는 단계
    를 포함하는 변환 유닛 처리 방법.
  47. 제46항에 있어서,
    상기 변환 유닛 계수들은 상기 스캔 패턴의 마지막 비제로 계수 부분에 배치된 마지막 넌제로 계수를 포함하고,
    상기 복수의 플래그들은 함께 플래그 세트를 포함하며;
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분에 후속하는 스캔 패턴의 부분들과 연관된 플래그들을 배제하는, 변환 유닛 처리 방법.
  48. 제47항에 있어서,
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분과 연관된 플래그를 더 배제하는, 변환 유닛 처리 방법.
  49. 계수들의 어레이를 갖는 변환 유닛을 처리하는 방법으로서,
    복수의 플래그를 판독하는 단계 - 각각의 플래그는 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들의 일부와 연관되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 중 적어도 하나가 넌제로이면 제1 값으로 설정되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 모두가 제로이면 제2 값으로 설정됨 - ;
    상기 제1 값으로 설정된 연관된 플래그를 갖는 변환 유닛의 부분들의 계수들을 디코딩하는 단계; 및
    상기 제2 값으로 설정된 연관된 플래그를 갖는 변환 유닛의 부분들의 계수들의 디코딩을 스킵하는 단계
    를 포함하는 변환 유닛 처리 방법.
  50. 제49항에 있어서,
    상기 변환 유닛 계수들은 상기 스캔 패턴의 마지막 비제로 계수 부분 내에 배치된 마지막 넌제로 계수를 포함하고;
    상기 복수의 플래그들은 함께 플래그 세트를 포함하며;
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분에 후속하는 스캔 패턴의 부분들과 연관된 플래그들을 배제하는, 변환 유닛 처리 방법.
  51. 제50항에 있어서,
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분과 연관된 플래그를 더 배제하는, 변환 유닛 처리 방법.
  52. 계수들의 어레이를 갖는 변환 유닛을 처리하기 위한 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    (a) 스캔 패턴의 일부 상에 배치된 변환 유닛의 일부의 계수들 모두가 제로인지를 결정하고;
    (b) 상기 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들 중 일부의 계수들 중 적어도 하나가 넌제로이면, 상기 변환 유닛의 일부와 연관된 플래그를 제1 값으로 설정하며;
    (c) 상기 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들 중 일부의 계수들 모두가 제로이면, 상기 변환 유닛 계수들의 일부와 연관된 플래그를 제2 값으로 설정하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 처리 시스템.
  53. 제52항에 있어서,
    상기 명령어들은,
    상기 스캔 패턴의 각각의 나머지 부분 상에 배치된 상기 변환 유닛 계수들의 각각의 나머지 부분과 연관된 추가의 플래그를 설정하기 위해 상기 단계 (a) 내지 (c)를 반복하기 위한 명령어들을 더 포함하는, 변환 유닛 처리 시스템.
  54. 제53항에 있어서,
    상기 명령어들은,
    상기 제1 값을 갖는 플래그와 연관된 계수들만을 인코딩하고;
    상기 제2 값을 갖는 플래그와 연관된 계수들의 인코딩을 스킵하기 위한
    명령어들을 더 포함하는, 변환 유닛 처리 시스템.
  55. 제53항에 있어서,
    각각의 플래그는 상기 변환 유닛과 연관된 마지막 계수 플래그 세트의 멤버이고, 상기 스캔 패턴의 일부 상에 배치된 상기 변환 유닛 계수들의 일부의 계수들 중 적어도 하나가 넌제로이면 상기 변환 유닛의 일부와 연관된 플래그를 제1 값으로 설정하기 위한 명령어들은,
    상기 스캔 패턴 상에 배치된 변환 유닛 계수들의 추가의 부분들의 계수들 모두가 제로인지를 결정하고;
    상기 변환 유닛 계수들의 추가의 부분들의 계수들 모두가 제로이면 상기 마지막 계수 플래그 세트의 어떠한 추가의 플래그도 설정하지 않으며;
    상기 스캔 패턴의 나머지 부분 상에 배치된 상기 변환 유닛 계수들의 나머지 부분들의 계수들 중 적어도 하나가 비제로인 경우에만 상기 추가의 플래그를 설정하기 위한
    명령어들을 더 포함하는, 변환 유닛 처리 시스템.
  56. 제52항에 있어서,
    상기 어레이는 복수 행의 계수들을 포함하고,
    상기 스캔 패턴은 행 방향이고;
    각각의 스캔 부분은 상기 복수 행의 계수들 중의 한 행을 포함하는, 변환 유닛 처리 시스템.
  57. 제52항에 있어서,
    상기 어레이는 복수 열의 계수들을 포함하고,
    상기 스캔 패턴은 열 방향이고;
    각각의 스캔 부분은 상기 복수 열의 계수들 중의 한 열을 포함하는, 변환 유닛 처리 시스템.
  58. 제52항에 있어서,
    상기 어레이는 행과 열을 포함하는 N x M 어레이이고, 상기 스캔 패턴은 대각선 방향의 파면 스캔 패턴인, 변환 유닛 처리 시스템.
  59. 계수들의 어레이를 갖는 변환 유닛을 처리하기 위한 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    (a) 스캔 패턴의 제1 부분 상에 배치된 변환 유닛 계수들의 제1 부분의 계수들 모두와 연관된 플래그를 판독하고;
    (b) 상기 플래그가 제1 값을 갖는 경우(에만) 상기 스캔 패턴의 제1 부분 상에 배치된 상기 변환 유닛 계수들의 제1 부분을 디코딩하며;
    (c) 상기 플래그가 제2 값을 갖는 경우 상기 스캔 패턴의 제1 부분 상에 배치된 상기 변환 유닛 계수들의 제1 부분의 코딩을 스킵하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 처리 시스템.
  60. 제59항에 있어서,
    상기 명령어들은,
    상기 스캔 패턴의 각각의 나머지 부분의 변환 유닛 계수들의 각각의 나머지 부분과 연관된 각각의 나머지 플래그에 대해 단계들 (a) 내지 (c)를 수행하기 위한 명령어들을 더 포함하는, 변환 유닛 처리 시스템.
  61. 제60항에 있어서,
    각각의 플래그는 상기 변환 유닛과 연관된 마지막 계수 플래그 세트의 멤버이고, 상기 플래그가 제2 값을 가질 경우 상기 스캔 패턴의 제1 부분 상에 배치된 상기 변환 유닛 계수들의 제1 부분의 코딩을 스킵하기 위한 명령어들은,
    상기 판독된 나머지 플래그가 마지막 계수 플래그 세트의 마지막 판독된 플래그이고 상기 마지막 판독된 플래그가 제2 값을 갖는지를 결정하고;
    상기 판독된 나머지 플래그가 상기 마지막 계수 플래그 세트의 마지막 판독 플래그이면,
    상기 마지막 판독된 플래그와 연관된 변환 유닛 계수들의 부분들에 후속하는 변환 유닛 계수들의 부분을 디코딩하고;
    추가의 변환 유닛 계수들의 부분들의 디코딩을 스킵하기 위한
    명령어들을 더 포함하는 변환 유닛 처리 시스템.
  62. 제59항에 있어서,
    상기 어레이는 행과 열을 포함하는 n x m 어레이이고, 상기 스캔 패턴은 대각선 방향의 파면 스캔 패턴인, 변환 유닛 처리 시스템.
  63. 제59항에 있어서,
    상기 어레이는 복수의 행과 계수들을 포함하고, 상기 스캔 패턴은 행 방향인, 변환 유닛 처리 시스템.
  64. 제59항에 있어서,
    상기 어레이는 복수 열의 계수들을 포함하고, 상기 스캔 패턴은 열 방향인, 변환 유닛 처리 시스템.
  65. 계수들의 어레이를 갖는 변환 유닛을 처리하는 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    복수의 플래그를 설정하고 - 각각의 플래그는 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들의 일부와 연관되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 중 적어도 하나가 비제로이면 제1 값으로 설정되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 모두가 제로이면 제2 값으로 설정됨 - ;
    제1 값을 갖는 연관된 플래그를 갖는 변환 유닛 계수들의 부분들을 코딩하며;
    제2 값을 갖는 연관된 플래그를 갖는 변환 유닛 계수들의 부분들의 코딩을 스킵하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 처리 시스템.
  66. 제65항에 있어서,
    상기 변환 유닛 계수들은 상기 스캔 패턴의 마지막 비제로 계수 부분 내에 배치된 마지막 넌제로 계수를 포함하고;
    상기 복수의 플래그들은 함께 플래그 세트를 포함하며;
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분에 후속하는 스캔 패턴의 부분들과 연관된 플래그들을 배제하는, 변환 유닛 처리 시스템.
  67. 제65항에 있어서,
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분과 연관된 플래그를 더 배제하는, 변환 유닛 처리 시스템.
  68. 계수들의 어레이를 갖는 변환 유닛을 처리하기 위한 시스템으로서,
    프로세서; 및
    상기 프로세서에 통신가능하게 결합되는 메모리
    를 포함하고,
    상기 메모리는,
    복수의 플래그를 판독하고 - 각각의 플래그는 스캔 패턴의 일부 상에 배치된 변환 유닛 계수들의 일부와 연관되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 중 적어도 하나가 비제로이면 제1 값으로 설정되고, 각각의 플래그는 상기 스캔 패턴의 연관된 부분 상에 배치된 변환 유닛의 연관된 부분 내의 계수들 모두가 제로이면 제2 값으로 설정됨 - ;
    상기 제1 값으로 설정된 연관된 플래그를 갖는 변환 유닛의 부분들의 계수들을 디코딩하며;
    상기 제2 값으로 설정된 연관된 플래그를 갖는 변환 유닛의 부분들의 계수들의 디코딩을 스킵하기 위한
    명령어들을 포함하는 복수의 명령어들을 저장하는, 변환 유닛 처리 시스템.
  69. 제68항에 있어서,
    상기 변환 유닛 계수들은 상기 스캔 패턴의 마지막 비제로 계수 부분 내에 배치된 마지막 넌제로 계수를 포함하고;
    상기 복수의 플래그들은 함께 플래그 세트를 포함하며;
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분에 후속하는 스캔 패턴의 부분들과 연관된 플래그들을 배제하는, 변환 유닛 처리 시스템.
  70. 제68항에 있어서,
    상기 플래그 세트는 상기 스캔 패턴의 마지막 넌제로 계수 부분과 연관된 플래그를 더 배제하는, 변환 유닛 처리 시스템.
KR1020147020158A 2011-12-20 2012-12-20 효율적인 변환 유닛 인코딩을 위한 방법 및 장치 KR20140120891A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161577898P 2011-12-20 2011-12-20
US61/577,898 2011-12-20
US13/722,702 2012-12-20
US13/722,702 US20130215970A1 (en) 2011-12-20 2012-12-20 Method and apparatus for last coefficient group position coding
US13/722,625 2012-12-20
PCT/US2012/071046 WO2013096671A1 (en) 2011-12-20 2012-12-20 Method and apparatus for efficient transform unit encoding
US13/722,625 US9350996B2 (en) 2011-12-20 2012-12-20 Method and apparatus for last coefficient indexing for high efficiency video coding

Publications (1)

Publication Number Publication Date
KR20140120891A true KR20140120891A (ko) 2014-10-14

Family

ID=48982243

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147020158A KR20140120891A (ko) 2011-12-20 2012-12-20 효율적인 변환 유닛 인코딩을 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US20130215970A1 (ko)
EP (1) EP2795901A1 (ko)
KR (1) KR20140120891A (ko)
CN (1) CN104012092A (ko)
BR (1) BR112014014120A2 (ko)
WO (1) WO2013096671A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017043763A1 (ko) * 2015-09-10 2017-03-16 삼성전자 주식회사 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법
WO2018190594A1 (ko) * 2017-04-13 2018-10-18 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2019027200A1 (ko) * 2017-07-31 2019-02-07 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20190013380A (ko) * 2017-07-31 2019-02-11 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
WO2019078693A1 (ko) * 2017-10-20 2019-04-25 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130215970A1 (en) 2011-12-20 2013-08-22 General Instrument Corporation Method and apparatus for last coefficient group position coding
EP2745512B1 (en) * 2012-01-03 2019-10-23 HFI Innovation Inc. Method and apparatus for block-based significance map and significance group flag context selection
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
KR102318785B1 (ko) 2013-10-14 2021-10-27 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 영상 코딩 및 디코딩에 대한 기본 색상 인덱스 맵 모드의 특징
KR102170169B1 (ko) 2013-10-14 2020-10-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
JP6355744B2 (ja) 2014-01-03 2018-07-11 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化/デコーディングにおけるブロックベクトル予測
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
JP2017512026A (ja) 2014-03-04 2017-04-27 マイクロソフト テクノロジー ライセンシング,エルエルシー イントラブロックコピー予測におけるブロック反転及びスキップモード
KR20220133337A (ko) * 2014-03-16 2022-10-04 브이아이디 스케일, 인크. 무손실 비디오 코딩의 시그널링을 위한 방법 및 장치
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
CA2959682C (en) 2014-09-30 2022-12-06 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
EP3308540B1 (en) 2015-06-09 2020-04-15 Microsoft Technology Licensing, LLC Robust encoding/decoding of escape-coded pixels in palette mode
JP6822470B2 (ja) 2016-05-13 2021-01-27 ソニー株式会社 画像処理装置および方法
US11736712B2 (en) * 2016-05-28 2023-08-22 Industry Academy Cooperation Foundation Of Sejong University Method and apparatus for encoding or decoding video signal
US20170374368A1 (en) * 2016-06-24 2017-12-28 Scalar Corporation Video Processor, Method, Computer Program
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
EP3270595A1 (en) 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for last coefficient coding for adaptive transform based video compression
KR20190031250A (ko) * 2016-08-10 2019-03-25 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법
WO2018173862A1 (ja) * 2017-03-21 2018-09-27 シャープ株式会社 画像復号装置及び画像符号化装置
KR102558015B1 (ko) * 2017-04-13 2023-07-21 엘지전자 주식회사 영상의 부호화/복호화 방법 및 이를 위한 장치
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
CN112602324A (zh) * 2018-06-22 2021-04-02 Op方案有限责任公司 块水平几何划分
WO2020007489A1 (en) * 2018-07-06 2020-01-09 Huawei Technologies Co., Ltd. A picture encoder, a picture decoder and corresponding methods
WO2020038311A1 (en) 2018-08-22 2020-02-27 Mediatek Inc. Method and apparatus of transform coefficient coding
CN114501008B (zh) * 2019-03-21 2023-12-19 三星电子株式会社 视频解码方法和视频编码方法
CN114979641A (zh) * 2021-02-21 2022-08-30 腾讯科技(深圳)有限公司 视频编解码方法、装置、计算机可读介质及电子设备
US11683509B1 (en) * 2021-10-28 2023-06-20 Meta Platforms, Inc. Prediction unit skip detection in encoder

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07123269A (ja) 1993-10-22 1995-05-12 Fuji Xerox Co Ltd 画像信号の符号化装置
US5500678A (en) 1994-03-18 1996-03-19 At&T Corp. Optimized scanning of transform coefficients in video coding
EP0750428B1 (en) 1995-06-22 2004-03-31 Canon Kabushiki Kaisha Image processing apparatus and method
JP4086520B2 (ja) 2001-03-19 2008-05-14 株式会社リコー 多値画像の符号化及び復号化方法並びに装置
EP2222084A2 (en) * 2001-11-16 2010-08-25 NTT DoCoMo, Inc. Image coding and decoding method
US7200275B2 (en) 2001-12-17 2007-04-03 Microsoft Corporation Skip macroblock coding
US7596279B2 (en) * 2002-04-26 2009-09-29 Ntt Docomo, Inc. Image encoding device, image decoding device, image encoding method, image decoding method, image encoding program, and image decoding program
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
CN101317462B (zh) 2005-11-30 2011-06-15 皇家飞利浦电子股份有限公司 应用系数重新排序的编码方法和装置
KR100772390B1 (ko) 2006-01-23 2007-11-01 삼성전자주식회사 방향 보간 방법 및 그 장치와, 그 보간 방법이 적용된부호화 및 복호화 방법과 그 장치 및 복호화 장치
TWI382770B (zh) 2008-12-11 2013-01-11 Univ Nat Taiwan 視訊影像傳輸中遇到封包遺失時的有效選取方法
EP2418855B1 (en) 2009-04-08 2017-12-27 Sharp Kabushiki Kaisha Method of selecting a transform size in a video decoding process
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
HUE050955T2 (hu) 2010-04-13 2021-01-28 Ge Video Compression Llc Szignifikancia térképek és transzformációs együttható blokkok kódolása
GB2486733A (en) 2010-12-24 2012-06-27 Canon Kk Video encoding using multiple inverse quantizations of the same reference image with different quantization offsets
SG191869A1 (en) 2011-01-07 2013-08-30 Agency Science Tech & Res Method and an apparatus for coding an image
US10397577B2 (en) * 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US9491469B2 (en) * 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
US20130083856A1 (en) 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
US9807426B2 (en) 2011-07-01 2017-10-31 Qualcomm Incorporated Applying non-square transforms to video data
US20130028329A1 (en) * 2011-07-22 2013-01-31 General Instrument Corporation Device and methods for scanning rectangular-shaped transforms in video coding
US20130215970A1 (en) 2011-12-20 2013-08-22 General Instrument Corporation Method and apparatus for last coefficient group position coding

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10531102B2 (en) 2015-09-10 2020-01-07 Samsung Electronics Co., Ltd. Encoding device, decoding device, and encoding and decoding method thereof
WO2017043763A1 (ko) * 2015-09-10 2017-03-16 삼성전자 주식회사 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법
RU2753238C1 (ru) * 2017-04-13 2021-08-12 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для энтропийного кодирования и декодирования видеосигнала
US11240536B2 (en) 2017-04-13 2022-02-01 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
US11902592B2 (en) 2017-04-13 2024-02-13 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
KR20190132519A (ko) * 2017-04-13 2019-11-27 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
AU2021221878B2 (en) * 2017-04-13 2023-02-09 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for entropy encoding, decoding video signal
KR20200102551A (ko) * 2017-04-13 2020-08-31 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
AU2018251489B2 (en) * 2017-04-13 2021-05-27 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for entropy encoding, decoding video signal
KR20210083404A (ko) * 2017-04-13 2021-07-06 엘지전자 주식회사 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
WO2018190594A1 (ko) * 2017-04-13 2018-10-18 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
KR20220057647A (ko) * 2017-04-13 2022-05-09 엘지전자 주식회사 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
RU2768379C1 (ru) * 2017-04-13 2022-03-24 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для энтропийного кодирования и декодирования видеосигнала
KR20190013380A (ko) * 2017-07-31 2019-02-11 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140675A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140676A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140677A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140678A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
WO2019027200A1 (ko) * 2017-07-31 2019-02-07 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
WO2019078693A1 (ko) * 2017-10-20 2019-04-25 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법

Also Published As

Publication number Publication date
US20130215970A1 (en) 2013-08-22
US20130215969A1 (en) 2013-08-22
WO2013096671A1 (en) 2013-06-27
EP2795901A1 (en) 2014-10-29
US9350996B2 (en) 2016-05-24
CN104012092A (zh) 2014-08-27
BR112014014120A2 (pt) 2017-06-13

Similar Documents

Publication Publication Date Title
KR20140120891A (ko) 효율적인 변환 유닛 인코딩을 위한 방법 및 장치
CA2977526C (en) Modification of unification of intra block copy and inter signaling related syntax and semantics
US9838685B2 (en) Method and apparatus for efficient slice header processing
KR101662139B1 (ko) 고효율 비디오 코딩을 위한 움직임 정보의 효율적인 저장
TWI392370B (zh) 使用大的巨區塊之視訊編碼
US20110194613A1 (en) Video coding with large macroblocks
US10291934B2 (en) Modified HEVC transform tree syntax
CA2943647C (en) Method and apparatus for encoding rate control in advanced coding schemes
US11317105B2 (en) Modification of picture parameter set (PPS) for HEVC extensions
WO2015103221A1 (en) Conditionally parsed extension syntax for hevc extension processing
CN112887737B (zh) 用于hevc扩展处理的条件解析扩展语法
EP2781093B1 (en) Efficient storage of motion information for high efficiency video coding
KR20150117854A (ko) 적응적 오프셋 필터 적용 방법 및 장치
EP3266216A1 (en) Modification of unification of intra block copy and inter signaling related syntax and semantics

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid