KR101606295B1 - 비디오 데이터에 비-정방형 변환들을 적용 - Google Patents

비디오 데이터에 비-정방형 변환들을 적용 Download PDF

Info

Publication number
KR101606295B1
KR101606295B1 KR1020147002724A KR20147002724A KR101606295B1 KR 101606295 B1 KR101606295 B1 KR 101606295B1 KR 1020147002724 A KR1020147002724 A KR 1020147002724A KR 20147002724 A KR20147002724 A KR 20147002724A KR 101606295 B1 KR101606295 B1 KR 101606295B1
Authority
KR
South Korea
Prior art keywords
square
unit
coding
transform
information indicating
Prior art date
Application number
KR1020147002724A
Other languages
English (en)
Other versions
KR20140033499A (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 KR20140033499A publication Critical patent/KR20140033499A/ko
Application granted granted Critical
Publication of KR101606295B1 publication Critical patent/KR101606295B1/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
    • 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/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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

Landscapes

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

Abstract

일 예에 있어서, 비디오 데이터를 코딩하는 디바이스는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성되는 비디오 인코더 또는 비디오 디코더와 같은 비디오 코더를 포함한다. 이러한 방식으로, 비디오 코더는 비-정방형 변환 유닛들을 활용할 수도 있다. 비디오 코더는, 오직 크로미넌스 또는 루미넌스 컴포넌트들에 대해서만 또는 오직 대응하는 예측 유닛이 비-정방형인 경우에만과 같은 특정 상황들에 대해 비-정방형 변환 유닛들을 이용하도록 구성될 수도 있다. 비디오 코더는 추가로, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 데이터를 코딩하기 위한 컨텍스트를 선택하는 엔트로피 코딩 프로세스를 수행하도록 구성될 수도 있다.

Description

비디오 데이터에 비-정방형 변환들을 적용{APPLYING NON-SQUARE TRANSFORMS TO VIDEO DATA}
본 출원은 2011년 7월 1일자로 출원된 미국 가출원 제61/503,726호 및 2011년 11월 2일자로 출원된 미국 가출원 제61/554,837호를 우선권 주장하며, 이들 가출원들 각각의 전체 내용들은 본 명세서에 참조로 통합된다.
본 개시는 비디오 코딩에 관한 것으로서, 더 상세하게는, 비디오 데이터를 변환하는 것에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 디지털 보조기(PDA)들, 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 텔레컨퍼런싱 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, 파트 10, 어드밴스드 비디오 코딩 (AVC) 에 의해 정의된 표준들, 및 그러한 표준들의 확장물들에서 설명된 기술들과 같은 비디오 압축 기술들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신 및 수신한다.
비디오 압축 기술들은 비디오 시퀀스들에 고유한 리던던시를 감소 또는 제거하기 위해 공간 예측 및/또는 시간 예측을 수행한다. 블록 기반 비디오 코딩에 있어서, 비디오 프레임 또는 슬라이스는 매크로블록들 또는 코딩 유닛(CU)들과 같은 블록들로 파티셔닝될 수도 있다. 각각의 블록은 더 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스에서의 블록들은 이웃하는 블록들에 대한 공간 예측을 이용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스에서의 블록들은 동일 프레임 또는 슬라이스에서의 이웃하는 블록들에 대한 공간 예측, 또는 다른 레퍼런스 프레임들에 대한 시간 예측을 이용할 수도 있다.
일반적으로, 본 개시는 잔여 비디오 데이터와 같은 비디오 데이터의 블록들에 비-정방형 변환들을 적용하거나 잔여 비디오 데이터를 재생하기 위해 역 비-정방형 변환들을 적용하는 기술들을 설명한다. 변환 사이즈들을 오직 정방형 변환들로 제한하는 것보다는, 그 기술들은 또한, (비디오 인코더, 비디오 디코더, 또는 비디오 인코더와 비디오 디코더 양자의 조합을 지칭할 수도 있는) 비디오 코더로 하여금 비디오 데이터로의 비-정방형 변환들의 적용에 액세스할 수 있게 하고 잠재적으로 그 적용을 선택할 수 있게 할 수도 있다. 비디오 데이터에 비-정방형 변환을 적용함으로써, 비디오 코더는, 정방형 변환들이 예측 경계들 (모션 추정이 별도로 수행되는 2개의 별개의 예측 유닛(PU)들에 의해 식별된 비디오 데이터의 2개의 별개의 블록들 간의 경계임) 에 걸쳐 적용될 경우에 도입되는 아티팩트들 및 왜곡을 감소시킬 수도 있다.
일부 경우들에 있어서, (결합될 경우에 정방형 예측 블록을 종종 형성하는) 인접 PU들의 2개의 비-정방형 블록들에 걸쳐 단일의 정방형 변환을 적용하기 보다는, 그 기술들은 비디오 코더로 하여금 (비-정방형 변환들 각각이 PU들에 의해 식별된 대응하는 블록들의 사이즈 및 형상에 매칭한다는 점에 있어서) 매칭하는 비-정방형 변환들을 적용할 수 있게 하여, PU 의 2개의 블록들에 걸쳐 단일의 정방형 변환을 적용하는 것과 비교하여 비-제로 계수들의 수를 잠재적으로 감소시킨 결과로 PU들의 비-정방형 블록들 각각을 개별적으로 변환할 수도 있다. 비-제로 계수들의 수를 감소시킴에 있어서, 그 기술들은 잔여 비디오 데이터를 표현하는데 요구된 데이터의 양을 감소시켜, 비-정방형 변환들의 적용을 가능케 할 수 없는 기술들에 비교하여 잔여 비디오 데이터의 더 압축된 버전을 생성할 수도 있다.
일 예에 있어서, 비디오 데이터를 코딩하는 방법은 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 단계, 및 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하는 단계를 포함한다.
다른 예에 있어서, 비디오 데이터를 코딩하는 디바이스는 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성된 비디오 코더를 포함한다.
다른 예에 있어서, 비디오 데이터를 코딩하는 디바이스는 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 수단, 및 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하는 수단을 포함한다.
다른 예에 있어서, 컴퓨터 프로그램 제품은 명령들이 저장된 컴퓨터 판독가능 매체를 포함하고, 그 명령들은, 실행될 경우, 프로세서로 하여금 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하게 하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하게 한다.
하나 이상의 예들의 상세들이 첨부 도면들 및 하기의 설명에 개시된다. 다른 특징들, 목적들, 및 이점들은 그 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1 은 예시적인 비디오 인코딩 및 디코딩 시스템을 나타낸 블록 다이어그램이다.
도 2 는 예시적인 비디오 인코더를 나타낸 블록 다이어그램이다.
도 3 은 예시적인 비디오 디코더를 나타낸 블록 다이어그램이다.
도 4 는, 상이한 사이즈를 각각 갖는 예측 유닛(PU)들의 개념 다이어그램이다.
도 5 는 예시적인 재귀적 쿼드트리 변환 구조를 나타낸 개념 다이어그램이다.
도 6a 및 도 6b 는 본 개시에서 설명되는 기술들의 양태에 따른 웨이브프론트 스캐닝을 나타낸 다이어그램들이다.
도 7a 는 블록 (예를 들어, 코딩 유닛) 을 하나 이상의 예측 블록들 (예를 들어, PU들) 로 파티셔닝하는 다양한 모드들을 나타낸 개념 다이어그램이다.
도 7b 는 비대칭 파티션들로 파티셔닝된 블록들의 다양한 예들을 나타낸 개념 다이어그램이다.
도 8 은 비-정방형 변환 유닛들을 표현하기 위한 예시적인 파티셔닝 구조를 나타낸 개념 다이어그램이다.
도 9 는 비-정방형 변환 유닛들을 표현하기 위한 다른 예시적인 파티셔닝 구조를 나타낸 개념 다이어그램이다.
도 10a 는, CU 가 정방형 변환 유닛을 포함하는지 또는 비-정방형 변환 유닛을 포함하는지를 시그널링하기 위한 예시적인 시그널링 데이터를 나타낸 개념 다이어그램이다.
도 10b 는, CU 가 정방형 TU 를 포함하는지 또는 비-정방형 TU 를 포함하는지를 시그널링하기 위한 대안의 예시적인 시그널링 데이터를 나타낸 개념 다이어그램이다.
도 11 은 정방형 또는 비-정방형 변환 유닛들을 이용하여 비디오 데이터를 인코딩하는 예시적인 방법을 나타낸 플로우차트이다.
도 12 는 정방형 또는 비-정방형 변환 유닛들을 이용하여 비디오 데이터를 디코딩하는 예시적인 방법을 나타낸 플로우차트이다.
일반적으로, 비디오 데이터는, 인트라-예측 모드 또는 인터-예측 모드에서 코딩될 수도 있는 프레임들의 시퀀스를 포함한다. 프레임들은 비디오 데이터의 블록들로 분할될 수도 있고, 인코딩 모드가 각각의 블록에 대해 선택될 수도 있다. 인터-예측 모드들에 있어서, 블록들은 하나 이상의 이전에 코딩된 프레임들의 데이터에 대해 예측될 수도 있다. 인트라-예측 모드들에 있어서, 블록들은 동일한 프레임의 하나 이상의 공간적으로 이웃하는 이전에 코딩된 블록들에 대해 예측될 수도 있다.
고효율 비디오 코딩 (HEVC) 에 따르면, 프레임들은 최대 코딩 유닛(LCU)들로 분할될 수도 있으며, 이 LCU들은 예를 들어 32x32 픽셀 블록들 또는 64x64 픽셀 블록들을 포함할 수도 있다. 일반적으로, LCU들은 서브-코딩 유닛(서브-CU)들로 파티셔닝될 수도 있으며, 이 서브-CU들 각각은 추가로 (재귀적으로) 파티셔닝될 수도 있다. 일반적으로, 용어 '코딩 유닛 (CU)' 은 LCU 또는 그 임의의 서브-CU (예를 들어, LCU 의 서브-CU 또는 다른 서브-CU 의 서브-CU) 를 지칭할 수도 있다. CU들은 4개의 정방형 비중첩 서브-CU들로 파티셔닝될 수도 있다.
LCU 는 하나 이상의 노드들을 포함하는 쿼드트리 데이터 구조에 대응할 수도 있으며, 여기서, 쿼드트리의 루트 노드는 LCU 자체에 대응하고, 다른 노드들은 LCU 의 서브-CU들에 대응한다. 파티셔닝되지 않은 CU 는 일반적으로 쿼드트리의 리프 노드 (즉, 어떠한 자식 노드들도 갖지 않는 쿼드트리의 노드) 에 대응한다. 이에 따라, 파티셔닝되지 않은 CU 는 리프 노드 CU 로서 지칭될 수도 있다. 리프 노드 CU들은 일반적으로, CU 에 대한 데이터가 어떻게 예측되는지 (즉, 데이터가 인트라-코딩되었는지 또는 인터-코딩되었는지) 를 기술하는 하나 이상의 예측 유닛(PU)들, 및 잔여 데이터 즉 CU 에 대한 예측된 데이터와 CU 에 대한 오리지널 데이터 간의 픽셀 단위 차이들에 대응하는 하나 이상의 변환 유닛(TU)들을 포함한다.
HEVC 테스트 모델 (종종 "HM" 으로서 약칭됨) 은 "HEVC" 로서 통상 공지된 차세대 비디오 코딩 표준을 위한 비디오 코더 레퍼런스 소프트웨어를 정의한다. HEVC 에 있어서, 리프 CU 는 상이한 PU들로 분할될 수 있으며, 각각의 PU 는 리프 CU 의 부분에 대한 모션 정보를 정의한다. 인터-예측 모드에 있어서, 각각의 PU 에 대해, 레퍼런스 프레임에서 시간 레퍼런스 블록을 위치지정하기 위해 모션 보상이 수행된다. 이러한 시간 레퍼런스 블록은, 통상적으로, PU 와 비교될 (이 컨텍스트에서는 종종 PU 로부터 감산되는 것을 의미함) 경우, 정의된 임계값 미만의 잔여 데이터의 양을 발생시키는 블록을 나타낸다. 잔여 데이터는, PU 의 대응하는 픽셀들과 레퍼런스 블록 간의 차이들을 나타내는 픽셀 차이값들을 포함한다. 이 임계값 미만이면, 비디오 인코더는, PU 에 대한 시간 레퍼런스 블록의 위치를 식별하는 모션 정보를 생성한다. 그 후, 비디오 인코더는 시간 레퍼런스 블록을 PU 와 비교하는 것으로부터 생성된 잔여 데이터를 저장하고, 예를 들어, PU 에 대한 시간 레퍼런스 블록의 위치를 식별하는 모션 벡터를 정의하는 모션 정보를 저장한다. 잔여 데이터는 TU 에 대해 저장될 수도 있으며, 모션 벡터는 PU 에 대해 저장될 수도 있다.
HM 은 추가로, CU 에 대하여 하나 이상의 TU들에 대한 데이터를 포함하는 쿼드트리 기반 잔여 쿼드트리 변환 (RQT) 구조를 정의한다. RQT 는, 쿼드트리의 루트 노드가 4개의 자식 노드들을 가질 수도 있고 일반적으로 그 트리의 노드들이 4개의 자식 노드들을 가질 수도 있다는 점에 있어서 "재귀적" 으로서 기술될 수도 있으며, 여기서, 각각의 노드는 유사한 방식으로 포맷팅될 수도 있다. 따라서, LCU 는 2개의 별개 타입들의 쿼드트리들 - 즉, 리프 노드 CU들로의 LCU 의 파티셔닝을 정의하는 CU 쿼드트리, 및 각각의 리프 노드 CU 에 있어서 TU들에 대한 데이터를 포함하는 RQT - 에 대응하는 데이터를 포함할 수도 있다.
HM 은 먼저 RQT 의 루트 레벨 (또한 "레벨 0" 으로서도 지칭될 수도 있음) 을 정의하며, 여기서, 루트 레벨은 CU 에 적용된 변환을 효과적으로 나타낸다 (여기서, CU 의 형상 및 사이즈는 통상적으로 표기 2Nx2N 에 의해 표현되고, N 은 통상적으로, 2 의 거듭제곱인 CU 에 대응하는 비디오 데이터의 블록에서의 픽셀들의 수를 지칭함). HM 을 구현하는 비디오 인코더들은, 리프 노드 CU 의 변환 계수들이 RQT 의 레벨 0 에 대응할 경우에 루트 레벨의 변환을 적용할 수도 있다. 즉, HM 을 구현하는 비디오 인코더는, 형상 및 사이즈에 있어서 CU 의 것과 매칭하는 변환을 CU 의 잔여 데이터에 적용할 수도 있다.
HM 은 추가로, (2Nx2N 의 사이즈를 갖는) CU 가 변환 계수 데이터의 4개의 동일하게 사이징된 서브-부분들로 분할할 수도 있고 (여기서, 각각의 부분은 사이즈 NxN 임) 사이즈 NxN 인 변환들이 잔여 데이터의 이들 NxN 서브-부분들 각각에 적용될 수도 있음을 나타낸다. 이러한 의미에서, 루트 레벨이 레벨 0 을 나타내고 루트 레벨의 4개의 NxN 서브-부분들로의 분할이 이 구조의 레벨 1 을 나타내기 때문에, 그 변환은 RQT 의 소위 "레벨 1" 에 적용된다.
변환 사이즈를 선택하기 위해, 비디오 인코더는 루트 레벨 (또는 레벨 0) 과 레벨 1 의 변환을 적용한 결과들을 비교할 수도 있다. 변환을 적용한 소위 "결과" 는 일반적으로, 변환된 잔여 데이터를 인코딩한 결과를 지칭한다. 이러한 결과를 생성하기 위해, 비디오 인코더는, 상기 언급된 바와 같이, 잔여 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하기 위해 잔여 데이터에 변환을 적용하여, 상이한 주파수들의 특정된 사인 또는 코사인 파형들과 같은 기저 함수들에 대한 가중치들로서 기능하는 변환 계수들의 형태로 잔여 데이터를 나타내는 변환 계수들의 생성을 발생시킨다. 그 후, 비디오 인코더는 이들 변환 계수들 (또한 변환된 잔여 데이터로서 지칭될 수도 있음) 을 양자화하여 변환 계수들을 라운딩할 수도 있다. 이러한 양자화 단계는 통상적으로, 더 작은 변환 계수들 중 하나 이상을 제로로 라운딩하는 것을 포함한다. 비디오 인코더는 변환 계수들을 추가로 코딩할 수도 있다. 따라서, 양자화 및 코딩은 압축의 손실성 형태를 나타낸다. 그 후, 비디오 인코더는 비디오 데이터를 디코딩하고, 역양자화를 수행하고, 역변환을 적용하여 비디오 블록을 복원할 수도 있다.
이러한 복원된 비디오 블록은 이 컨텍스트에 있어서 변환을 적용한 결과를 나타낼 수도 있다. 그 후, 복원된 비디오 블록은 오리지널 CU 와 비교될 수도 있으며, 오리지널 CU 와 복원된 비디오 블록 사이에 에러가 결정될 수도 있다. 그 후, 비디오 인코더는 레벨 0 의 변환을 적용한 경우에 결정된 에러를, 레벨 1 의 변환을 적용한 경우에 이러한 방식으로 결정된 에러와 비교할 수도 있다.
일부 경우들에 있어서, 에러에 부가하여 (소비된 대역폭 또는 저장 공간의 관점에서) 레이트를 고려하는 레이트 왜곡 분석 또는 레이트 왜곡 최적화로서 지칭되는 더 관련된 프로세스가 수행될 수도 있다. 인코딩된 비디오 데이터를 표현하는데 사용되는 레이트 또는 비트들은 비트 코스트를 라그랑지안 - 즉, 특정 품질 레벨에 대한 품질과 비트 코스트 간의 관계를 나타낸 값 - 에 의해 승산함으로써 수학적으로 측정된다. 소스로부터의 편차 (본 개시에 있어서 에러 또는 왜곡으로서 지칭됨) 가, 피크 신호대 잡음 비율 (PSNR) 비디오 품질 메트릭을 최대화하기 위해 평균 제곱 에러로서 통상 측정된다.
레벨 1 의 변환을 적용한 결과가 레벨 0 의 변환을 적용한 결과보다 (결정된 에러 또는 레이트 왜곡 메트릭의 관점에서) 더 우수하면, 비디오 인코더는 서브-부분들 각각에 대하여 이러한 프로세스를 반복하여, 각각의 서브-부분들을 4개의 동일하게 사이징된 2차 서브-부분들 (사이즈 N/2xN/2) 로 분할하고 이에 의해 재귀적 쿼드트리 변환 구조의 레벨 2 를 생성하도록 진행할 수도 있다. 그 후, 비디오 인코더는 각각의 1차 서브-부분에 대해, 레벨 2 의 변환을 적용한 결과를 레벨 1 의 변환을 적용한 결과와 비교하여, 레벨 2 의 변환을 적용한 결과가 레벨 1 의 변환을 적용한 결과보다 (결정된 에러의 관점에서) 더 우수하면 레벨 2 변환을 선택할 수도 있다. 이러한 프로세스는 이러한 재귀적 방식으로 계속하여, 레벨 M 에서 적용된 변환이 레벨 M+1 에서 적용된 변환보다 더 우수하거나 일부 최대 변환 레벨이 도달될 때까지 각각의 서브-부분들을 4개의 동일하게 사이징된 서브-부분들로 연속해서 분할할 수도 있다. 일부 구현들에 있어서, 비디오 인코더는 최대 변환 레벨에서 시작하여, 최소로 사이징된 변환 블록들을 적용하고 또한 더 크게 사이징된 변환이 (결정된 에러의 관점에서) 더 우수하게 수행한다면 더 작게 사이징된 변환들을 병합할 수도 있다. 이러한 이유로, 변환 구조는 재귀적 쿼드트리 변환 구조로서 지칭될 수도 있다.
상기 HM 의 설명 전반에 걸쳐, 변환들의 사이즈는 오직 정방형 (예를 들어, 2Nx2N, NxN 및 N/2xN/2) 인 것으로서 설명되었다. 현재, 제안된 HM 은 변환들의 사이즈를 정방형들로 한정하지만, (하기에서 더 상세히 설명되는) 도 4 의 예에서 도시되는 것들과 같이 비-정방형 직사각형 PU 사이즈들을 제공한다. 비-정방형 PU들은 PU들에 대한 다양한 파티셔닝 모드들로부터 기인할 수도 있다. 일 예로서, 비디오 코더는 비대칭 모션 파티셔닝 (AMP) 을 이용하여 CU 를 PU들로 파티셔닝할 수도 있다. 다른 예로서, 비디오 코더는 단거리 인트라-예측 (SDIP) 또는 비대칭 SDIP 를 이용하여 CU 를 PU들로 파티셔닝할 수도 있다. 비디오 코더들은, PU 경계들을 교차하는 TU들을 이용하는 것을 회피하도록 구성될 수도 있다. 따라서, (예를 들어, 대응하는 비-정방형 PU들의 사이즈들을 매칭하기 위해) 본 개시의 기술들에 따라 비-정방형 TU들을 제공하는 것은 특정 이점들을 제공할 수도 있다.
예를 들어, 오직 정방형 변환들 또는 변환 유닛(TU)들만을 허용한 하나의 결과는 비디오 인코더들이 (인접한 PU들 간의 경계를 지칭하는) 모션 경계에 걸쳐 변환을 적용할 수도 있다는 것이다. 모션 경계들에 걸쳐 변환들을 적용하는 것은 통상적으로 변환 효율을 감소시키는데, 왜냐하면 모션 경계들은, 이들 타입들의 경계들을 적절히 포착하기 위해 다수의 더 많은 변환 계수들을 요구하는 컬러 또는 휘도에서의 큰 변화들 또는 하드 에지들이 존재할 수도 있는 모션 불연속을 종종 나타내기 때문이다. 오직 정방형 TU들이지만 비-정방형 PU들만을 제공한 다른 결과는 비디오 인코더가 관련 PU 보다 더 작은 변환들을 적용할 수도 있다는 것이다. PU 에 대해 더 작게 사이징된 변환들을 적용하는 것은 또한 변환 효율을 감소시킬 수도 있는데, 왜냐하면 그 변환은 이웃하는 픽셀들 간의 상관을 충분히 이용할 수 없을 수도 있기 때문이다.
본 개시에서 설명되는 기술들에 따르면, 비디오 인코더는 비디오 데이터에 비-정방형 변환들을 적용할 수도 있다. 변환 사이즈들을 오직 정방형 변환들로 제한하는 것보다는, 그 기술들은 또한, (비디오 인코더, 비디오 디코더, 또는 비디오 인코더와 비디오 디코더 양자의 조합을 지칭할 수도 있는) 비디오 코더로 하여금 비디오 데이터로의 비-정방형 변환들의 적용에 액세스할 수 있게 하고 잠재적으로 그 적용을 선택할 수 있게 할 수도 있다. 비디오 데이터에 비-정방형 변환을 적용함으로써, 비디오 코더는, 정방형 변환들이 예측 경계들 (모션 추정이 별도로 수행되는 2개의 별개의 예측 유닛(PU)들에 의해 식별된 비디오 데이터의 2개의 별개의 블록들 간의 경계임) 에 걸쳐 적용될 경우에 도입되는 아티팩트들 및 왜곡을 감소시킬 수도 있다. 부가적으로, 그 기술들은, 비-정방형 변환이 더 작게 사이징된 변환들의 더 크게 사이징된 PU들로의 적용을 회피함으로써 이웃하는 픽셀들 간의 상관을 더 충분히 이용할 수도 있다는 점에서 변환 효율을 개선시킬 수도 있다.
일부 경우들에 있어서, (결합될 경우에 정방형 예측 블록을 형성할 수도 있는) 2개의 (또는 그 초과의) 비-정방형 인접 PU들로부터 기인한 잔여 데이터에 단일 정방형 변환을 적용하기 보다는, 이들 기술들은 비디오 코더로 하여금 (비-정방형 변환들 각각이 PU들에 의해 식별된 블록들의 사이즈에 매칭할 수도 있다는 점에 있어서) 매칭하는 비-정방형 변환들을 적용할 수 있게 하여, PU 의 2개의 블록들에 걸쳐 단일의 정방형 변환을 적용하는 것과 비교하여 비-제로 계수들의 수를 잠재적으로 감소시킨 결과로 비-정방형 PU들 각각으로부터 기인한 잔여 데이터를 개별적으로 변환할 수도 있다. 비-제로 계수들의 수를 감소시킴에 있어서, 그 기술들은 비디오 데이터를 표현하는데 요구된 데이터의 양을 감소시켜, 비-정방형 변환들의 적용을 가능케 할 수 없는 기술들에 비교하여 비디오 데이터의 더 압축된 버전을 생성할 수도 있다.
예시하기 위해, 비디오 인코더는 비-정방형 변환을, 비-정방형 PU 에 대응하는 잔여 데이터에 적용할 수도 있다. 일 예로서, NxM 인 PU 에 대해 (여기서, N 및 M 은 종종 2 의 거듭제곱인 픽셀들의 상이한 수를 나타냄), 비디오 인코더는, 변환 구조를 생성할 경우 사이즈 NxM 의 변환을 부가적으로 적용할 수도 있다. 다른 예로서, 사이즈 2NxN 인 PU 에 대해, 비디오 인코더는, 상기 설명된 바와 같이, 사이즈 2Nx2N, 2NxN 및 NxN 의 변환들을 적용하여, 결과의 결정된 에러에 기초하여 이들 적용된 변환들 중 하나를 선택할 수도 있다. 이러한 방식으로, 비디오 인코더는 비-정방형 변환 사이즈를 선택할 수도 있다.
본 개시에서 설명된 기술들은 부가적으로 변환 시그널링 구조 (또한, 변환 선택 구조, 즉, 어떤 변환 사이즈가 선택되었는지를 나타내는 구조로서 지칭됨) 를 변형할 수도 있다. 변환 시그널링 구조는 잔여 쿼드트리 변환 구조에 대응할 수도 있다. 특히, 변환 시그널링 구조는 이들 기술들에 따라 변형되어 비-정방형 변환들을 수용할 수도 있다. 이들 기술들을 구현하는 비디오 인코더는, 사이즈 2NxN 인 PU 가 존재할 경우, 잔여 데이터의 세트에 대해 어떤 변환 사이즈를 선택할 지를 결정하기 위한 프로세스에 있어서 루트 레벨 (또는 레벨 0) 의 사이즈 2Nx2N 및 2NxN 인 변환 양자를 적용할 수도 있다.
따라서, 변환 시그널링 구조는, 사이즈 2NxN 인 이러한 CU 와 연관된 PU 가 존재할 경우 비디오 인코더가 이들 변환들 양자를 적용함을 명시할 수도 있다. 그 후, 비디오 인코더는 (상기 설명된 방식으로 결정된 에러들을 다시 참조하는) 이러한 변환을 적용한 결과를 비교하여, 이 비교에 기초하여 사이즈 2Nx2N 또는 2NxN 인 이들 변환들 중 하나를 선택할 수도 있다. 비디오 인코더는 잔여 쿼드트리 프로세스를 계속하여, 1차 또는 레벨 0 변환들 중 선택된 변환을 적용한 결과를, 4개의 2차 또는 레벨 1 NxN 변환들을 적용한 결과와 비교할 수도 있다. 이러한 의미에서, 그 기술들은, 비-정방형 PU 가 현재 CU 와 연관되는지에 기초하여 비-정방형 변환들의 적용을 가능케 할 수도 있다. 게다가, 실제로, 이러한 변환 선택 프로세스는 보텀-업 방식으로 수행되어, 최저 사이징된 변환 블록들로부터 시작하고, 예를 들어 레이트 대 왜곡의 관점에서 더 크게 사이징된 변환이 더 우수하게 수행된다면 이 최저 사이징된 변환 블록들을 병합할 수도 있다.
본 개시에서 설명된 기술들의 일부 구현들에 있어서, 비디오 인코더는 이러한 변환 선택 프로세스를 약간 상이한 방식으로 수행할 수도 있으며, 여기서, 사이즈 2Nx2N 인 단일의 루트 레벨 변환이 적용되고 레벨 1 변환은 사이즈 2NxN 이다. 그 후, 다음 레벨 또는 레벨 2 변환들은, 레벨 1 변환들인 것으로서 상기 설명된 4개의 NxN 변환들로서 명시될 수도 있다. 따라서, 이들 구현들에 있어서, 비-정방형 변환들은, 비-정방형 변환들을 루트 레벨 변환들과 병합하는 것보다는 그 자신의 레벨 1 변환들로서 명시될 수도 있다. 이들 구현들은, 동일 레벨로부터의 변환들을 적용한 결과들보다는 상이한 레벨들의 변환들을 적용한 결과들이 비교되는 상기 설명된 선택 프로세스에 더 잘 매칭할 수도 있다.
부가적으로, 그 기술들은 변환들이 어떻게 선택되는지를 한정할 수도 있다. 예를 들어, 변환 선택 프로세스는, 오직 비디오 인코더로 하여금 루트 레벨에서의 PU 사이즈와 동일한 사이즈인 변환들만을 선택하게 하도록 변형될 수도 있다. 이러한 예에 있어서, 사이즈 Nx2N 인 PU 에 대해, 비디오 인코더는 루트 레벨의 Nx2N 변환을 선택하도록 구성될 수도 있다. 사이즈 2Nx2N 인 PU 에 대해, 비디오 인코더는 루트 레벨의 사이즈 2Nx2N 인 변환을 선택하도록 구성될 수도 있다.
일부 경우들에 있어서, 그 기술들은 어떤 변환들이 적용되는지를 한정할 수도 있다. 즉, 비디오 인코더는 기술들의 일부 구현들에 있어서 PU 의 형상에 기초하여 비-정방형 변환들을 적용할 수도 있다. 일 예로서, 형상 2NxN 인 PU 에 대해, 비디오 인코더는, 일 예로, 선택 프로세스 동안, 오직 사이즈 2NxN 인 변환들만을 적용하고 사이즈 Nx2N 인 변환들을 적용하지 않을 수도 있다. 선택 프로세스 동안 오직 가능한 비-정방형 변환들의 서브세트만을 적용함으로써, 일부 변환들의 전술한 적용에 의해 더 적은 프로세서 사이클들 및 시간이 소비되기 때문에 비디오 인코딩 성능이 개선될 수도 있다. 프로세싱 사이클들을 감소시키는 것은 전력 소비를 감소시킬 수도 있으며, 이는 비디오 인코더가 소위 스마트 폰과 같은 모바일 디바이스, 또는 다른 전력 감지형 디바이스들에서 구현될 경우에 유리할 수도 있다.
더욱이, 그 기술들은 비디오 코더들로 하여금 루마 및 크로마 컴포넌트들 양자보다는 오직 루마 컴포넌트에만 또는 오직 크로마 컴포넌트에만과 같이 일부 컬러 컴포넌트들로의 비-정방형 변환들의 적용만을 허용할 수 있게 할 수도 있다. 또 다른 경우들에 있어서, 그 기술들은 비디오 코더로 하여금 특정 PU 및/또는 CU 사이즈들에 기초하여 비-정방형 변환들을 선택적으로 적용할 수 있게 할 수도 있다.
변환들을 상기 설명된 방식으로 선택한 이후, 비디오 인코더는 통상적으로, 선택된 변환들을 신택스 엘리먼트들을 이용하여 시그널링한다. 비-정방형 변환들의 도입은 비디오 인코더가 부가적인 신택스 엘리먼트들을 시그널링할 것을 요구할 수도 있다. (루트 레벨 변환들이 2Nx2N 변환 및 2NxN 변환들을 포함하는 상기 설명된 예시적인 구현을 참조하여) 루트 레벨에서 이용가능한 2개 이상의 변환들이 존재할 경우, 비디오 인코더는 변환 선택 (TS) 플래그를 시그널링하여, 2개 이상의 루트 레벨 변환들 중 어느 변환을 비디오 인코더가 선택했는지를 나타낼 수도 있다. 비디오 인코더는, 루트 레벨이 4개의 NxN 부분들로 분할되었는지를 나타내는 소위 "분할 플래그" 이후에 이러한 TS 플래그를 시그널링할 수도 있다. 예를 들어, 비디오 인코더는 2NxN 변환을 선택할 시 TS 플래그를 1 로 설정하고, 그렇지 않으면 사이즈 2Nx2N 인 변환을 선택할 시 이러한 TS 플래그를 제로로 설정할 수도 있다.
그 기술들의 일부 구현들에 있어서, 비디오 인코더는 TS 플래그를 다른 신택스 엘리먼트들로 시그널링하여, 분할 플래그, 루마 (CbfY) 변환 블록 및 크로마 변환 블록들에 대한 코딩된 블록 플래그들 중 하나 이상과 TS 플래그를 결합할 수도 있다 (U, V 는 2개의 크로마 컬러 컴포넌트들이며, 여기서, U 및 V 각각에 대한 이들 신택스 엘리먼트들은 "CbfU" 및 "CbfV" 로 표기됨). 예시하기 위해, 비-정방형 변환이 루마 컴포넌트 블록에 적용된다고 가정한다. 그 후, 루마에 대해, 2Nx2N 및 Nx2N 변환들 양자는 변환 트리 루트 레벨 (레벨 0) 에 두고, NxN 은 레벨 1 에서 명시된다. (4:2:0 인 공통의 YUV 비디오 포맷에 있어서, 크로마 블록 사이즈는 루마 블록 사이즈의 ½x½ 임을 고려한) 사이즈 NxN 인 크로마 변환 블록에 대해, 루트 레벨 (레벨 0) 변환은 사이즈 NxN 이고, 레벨 1 변환은 사이즈 N/2xN/2 인 변환이다. 이들 가정들 하에서, 다음의 정보가 비디오 디코더에 신택스로서 전송된다.
1. 분할 플래그; 루트 레벨 변환이 채택되는지 또는 더 작은 변환 (분할된 경우) 이 사용되는지를 나타내기 위함.
2. 변환 선택 플래그 (TS). 루트 레벨 변환이 선택되면 (split = 1), TS 는 2Nx2N (TS=0) 과 2NxN (TS=1) 간의 선택을 시그널링하기 위해 전송된다.
3. 루마의 Cbf. Split = 1 또는 (Split = 0, TS=0) 이면, 플래그 CbfY 가, CU 에 있어서 비-제로 루마 계수들이 존재하는지를 시그널링하기 위해 전송된다 (CbfY=0, 모든 루마 계수들이 0 임; CbfY=1, 적어도 하나의 루마 계수들이 비-제로임). TS=1 이면, CbfY0 및 CbfY1 이, 각각, 제 1 의 2NxN 변환 블록 및 제 2 블록에 있어서 비-제로 계수들이 존재하는지를 시그널링하기 위해 전송된다.
4. 크로마 (U,V) 의 Cbf. 플래그 CbfU 가, CU 에 있어서 비-제로 U 컴포넌트 계수들이 존재하는지를 시그널링하기 위해 전송된다. 플래그 CbfV 가, CU 에 있어서 비-제로 V 컴포넌트 계수들이 존재하는지를 시그널링하기 위해 전송된다.
이들 신택스 엘리먼트들 각각을 별도로 전송하는 것은 상이한 플래그들 사이의 상관들을 충분히 이용하지 않을 수도 있다. 결과로서, 그 기술들은 비디오 인코더들로 하여금 하기에 설명된 바와 같이 조인트 코딩 방식을 채용할 수 있게 할 수도 있다.
1. 비디오 인코더는, 먼저, 가변 길이 코딩 (VLC) 을 이용하여 분할 플래그, CbfYY 플래그, 및 CbfUV 플래그들을 전송하며, 여기서, CbfYY 및 CbfUV 플래그들은 하기에서 설명된다.
2. Split = 0 이면, TS 플래그가, 비디오 인코더가 비-정방형 변환을 선택하였는지를 나타내기 위해 전송된다.
3. TS = 1 이면, CbfYY 는 CbfY0||CbfY1 로서 해석된다 (즉, CbfY0 은, 변환이 적용되는 제 1 의 2NxN 또는 Nx2N 부분에 대한 CbfY 플래그를 지칭하고, CbfY1 은, 변환이 적용되는 제 2 의 2NxN 또는 Nx2N 부분에 대한 CbfY 플래그를 지칭함). 이 경우, CbfYY = 1 이면, 추가 정보가, CbfY0, CbfY1, 또는 그들 양자가 1 인지를 시그널링하기 위해 전송된다. CbfYY=0 이면, CBFY0 = CBFY1 = 0 이다.
4. Split = 1 또는 TS = 0 이면, CbfYY 는 CbfY 로서 해석되며, 이는 상기에서 설명된다.
5. CbfUV 가 (CbfU||CbfV) 인 것으로 정의되며, 여기서, CbfUV = 1 일 경우, CbfU 및 CbfV 중 적어도 하나는 비-제로이다. CbfUV = 1 이면, 추가 정보가, CbfU, CbfV, 또는 그들 양자가 1 인지를 시그널링하기 위해 전송된다. CbfUV =0 이면, CBFU = CBFV= 0 이다.
상기 조인트 코딩 방식에 있어서, CbfYY 플래그는 CbfY0 및 CbfY1 을 조인트하게 시그널링하고 CbfUV 플래그는 CbfU 및 CbfY 를 조인트하게 시그널링하여, 그 경우들에 있어서 더 효율적인 시그널링을 제공하며, 여기서, (이들 경우들에 있어서 CbfYY 를 시그널링하는 것은 2개 비트들이 CbfY0 및 CbfY1 을 별도로 시그널링하는데 요구되는 경우 1 비트를 요구하고 또한 이들 경우들에 있어서 CbfUV 를 시그널링하는 것은 2개 비트들이 CbfU 및 CbfV 를 별도로 시그널링하는데 요구되는 경우 1 비트를 요구하기 때문에) CbfYY 는 제로와 동일하고/하거나 CbfUV 는 제로와 동일하다.
한편, 비디오 인코더는 또한, 비-정방형 변환의 적용으로부터 생성된 변환 계수들을 양자화한다. 이들 비-정방형 변환 계수들이 양자화되며, 여기서, 본 개시의 기술들은 변환 계수들이 정방형인지 또는 비-정방형인지에 의존하여 상이한 양자화 스텝 사이즈를 제공할 수도 있다. 통상적으로, 양자화 강도/스텝 사이즈는 양자화 파라미터들에 의해 제어된다. 그 기술들은 비디오 인코더들로 하여금 이러한 양자화 스텝 사이즈를 결정함에 있어서 새로운 양자화 파라미터를 사용할 수 있게 할 수도 있으며, 여기서, 이러한 새로운 양자화 파라미터는 변환 계수들이 정방형 또는 비-정방형 변환의 적용을 통해 생성되었는지를 나타낼 수도 있다. 즉, 양자화 파라미터들은 상이한 변환 스텝 사이즈들에 대해 상이할 수도 있으며, 정방형 변환과 비-정방형 변환들 간에 상이할 수도 있다. 일 예에 있어서, 양자화 파라미터 제로 (QP0) 가 현재 프레임에 대한 기저 QP 라고 가정한다. 그 기술들의 이 양태를 구현하는 비디오 인코더는, 일 예로서, 사이즈 2NxN 및 Nx2N 인 비-정방형 변환들에 대해 QP0+3, 및 다른 모든 변환들에 대해 기저 QP0 인 양자화 파라미터를 사용할 수도 있다. 비디오 인코더 및 디코더 양자는 그 기술들의 이 양태를 활용할 수도 있다.
양자화를 수행한 이후, 비디오 인코더는 통상적으로, 2차원 어레이의 관점에서 통상 표현되는 계수들을 스캐닝하여 이들 계수들의 1차원 배열을 생성한다. 통상적으로, 변환은, 비-제로 계수들이 좌상측 코너 또는 2차원 어레이에 위치되도록 계수들을 생성한다. 비디오 인코더는 이들 계수들을, 비-제로 계수들이 서로 바로 옆에 1차원 배열로 위치되어 제로값의 변환 계수들의 런 렝스 코딩을 용이하게 하고 이에 의해 (런 렝스 코딩은 단일 수치를 이용하여 다중의 제로값의 변환 계수들을 표현하는 것을 통상 포함하기 때문에) 적어도 일부의 압축량을 제공하는 방식으로 스캐닝할 수도 있다.
본 개시에서 설명된 기술들의 일 양태는, 비-정방형 변환 계수들이 비디오 인코더에 의해 스캐닝되는 방식을 명시할 수도 있다. 그 기술들의 이 양태를 구현하는 비디오 인코더는 변환 계수들의 2차원 블록의 형상에 기초하여 이러한 1차원 스캔을 수행할 수도 있다. 일 예에 있어서, 비디오 인코더는, 스캐닝이 항상 더 짧은 에지로부터 시작하는 웨이브프론트 스캐닝 (좌하측으로부터 우상측으로 또는 우상측으로부터 좌하측으로의 스캐닝) 으로서 지칭되는 일 형태의 스캐닝을 수행할 수도 있다.
그 후, 비디오 인코더는 일 형태의 통계적 무손실 코딩 (종종, 부적절한 명칭 "엔트로피 코딩" 으로 지칭됨) 을 수행하여, 런 렝스 인코딩된 변환 계수들의 1차원 배열을 인코딩할 수도 있다. 이러한 엔트로피 인코더는 상기 설명된 신택스 엘리먼트들의 조인트 또는 합성 인코딩뿐 아니라 런 렝스 인코딩된 변환 계수들의 인코딩을 수행할 수도 있다. 컨텍스트 적응식 이진 산술 코딩 (CABAC) 으로서 지칭되는 일 형태의 엔트로피 인코딩은 종종, 변환 계수들의 정방형 블록들로부터 생성된 변환 계수들의 1차원 배열을 인코딩하도록 채용된다. 본 개시에서 설명된 기술들의 다양한 양태들은 비디오 인코더로 하여금 변환 계수들의 비-정방형 블록들로부터 생성된 변환 계수들의 1차원 배열에 대하여 CABAC 를 수행할 수 있게 할 수도 있다.
그 기술들의 이들 엔트로피 인코딩 양태들을 구현하는 비디오 인코더는, 변환 계수들의 비-정방형 블록들을 수용하기 위해 3가지 방식들로 변형되었던 일 형태의 CABAC 를 수행할 수도 있다. 제 1 변형은 마지막 유의 계수들의 시그널링을 포함할 수도 있다. 제 2 변형은 소위 "유의성 맵" 에 대한 변형을 포함할 수도 있지만, 제 3 변형은 소위 "계수 레벨" 의 변형을 포함할 수도 있다.
비-정방형 블록들에 대해, 마지막 유의 계수의 시그널링에 있어서, 비디오 인코더는, CABAC 를 수행함에 있어서 사용된 컨텍스트 모델이 코딩되는 좌표의 사이즈의 길이에 의존하도록 제 1 변형을 구현할 수도 있다. 즉, 수평 좌표 (마지막 계수의 X 컴포넌트) 는 블록의 폭 (및 코딩되는 x 의 빈) 에 의존하는 컨텍스트를 갖는다. 균등하게, 수직 좌표 (Y 컴포넌트) 는 블록의 높이에 의존하여 할당된 컨텍스트 세트를 갖는다.
비-정방형 블록들의 유의성 맵에 대해, 본 개시는, 사이즈 2NxN 및 Nx2N 의 변환들이 CABAC 코딩을 위해 동일한 하나 이상의 컨텍스트들을 공유함을 제안한다. 컨텍스트들을 공유함으로써, 비디오 인코더는 컨텍스트들의 총 수를 감소시킬 수도 있다. 성능을 향상시키기 위해, 비디오 인코더는 컨텍스트를 직접 도출 및 공유하지 않지만, 직사각형 형상들 중 하나의 좌표들 및 값들을 트랜스포즈한 이후에 컨텍스트를 도출 및 공유할 수도 있다. 예를 들어, 2NxN 변환의 계수들은 직접 인코딩될 수 있지만, Nx2N 변환된 계수들은 코딩 전에 트랜스포즈되며, 이는 좌표들 (X 및 Y) 그리고 폭 및 높이가 코딩 전에 스와핑됨을 의미한다. 본 개시에서 설명된 기술들의 이러한 양태는, 2NxN 블록의 통계들이 트랜스포즈된 이후에 Nx2N 블록의 통계들과 유사하다는 사실을 이용한다.
일 예로서, CABAC 를 이용하여 코딩할 경우, 비디오 코딩 디바이스들은, 계수에 대한 유의성, 레벨 및 부호를 나타내는 신택스 엘리먼트들을 포함한 신택스 엘리먼트들을 코딩하기 위해 계수들의 역 대각선 스캔을 적용할 수도 있다. 레벨 코딩에 대해, 계수들은 16개의 계수들의 서브세트들에서 스캐닝될 수도 있다. 컨텍스트는 컨텍스트 이웃에 기초하여 (또는 본 개시의 기술들에 따라, 계수의 X 및 Y 좌표들에 기초하여) 각각의 서브세트에 대해 재-초기화될 수도 있다. 레벨 정보를 코딩하기 위해, 대응하는 이진화된 심볼의 제 1 의 2개의 빈들은 CABAC 를 이용하여 코딩될 수도 있으며, 나머지 빈들은 지수 골롬 (exponential Golomb)코딩과 같은 다른 바이패스 코딩 엔진을 이용하여 코딩될 수도 있다. 빈들이 CABAC 엔진에 의해 코딩되기 때문에, 컨텍스트 상태가 업데이트된다 (여기서, 컨텍스트는 확률 모델에 의해 정의된 복수의 상태들을 가짐). CABAC 엔진은 확률 모델 및 코딩된 실제 값들에 기초하여 컨텍스트의 상이한 상태들 (값들) 로 천이한다.
변환 계수들의 8x4 및 4x8 블록들에 대해, 비디오 인코더는 (HEVC 에 있어서의 4x4 및 8x8 블록들과 유사하게) 계수의 위치에 기초하여 유의성 맵에 대한 컨텍스트를 이용하도록 그 기술들의 이 양태를 구현할 수도 있다. 이 구현에 있어서, 더 긴 측을 따라 2개의 이웃하는 계수들에 의해 공유되는 16개의 컨텍스트들이 CABAC 를 위해 이용될 수도 있다. 다음은 이들 공유된 컨텍스트들이 어떻게 도출될 수 있는지를 예시한 일 예이다.
X 및 Y 는 변환 계수들의 2차원 블록 내 변환 계수의 좌표들이고, >> 은 비트 우측 시프트 연산이며, CtxNum 은 블록에 대해 할당된 컨텍스트라고 한다. 8x4 블록에 대한 컨텍스트는
CtxNum = Y + (X>>1)
로서 도출될 수 있다.
상기 서술된 바와 같이, 4x8 블록에 대해, 컨텍스트는
Swap(X, Y); 및
CtxNum = Y + (X>>1)
로서 도출될 수 있다.
여기서, Swap(X, Y) 은,
Swap(X, Y) {
temp=Y;
Y=X;
X=temp;
}
로서 구현될 수 있다.
즉, Swap(X, Y) 는 X 및 Y 에 대한 값들을 트랜스포즈할 수도 있다.
더 큰 블록들 (16x4, 4x16 및 그 초과) 에 대해, 비디오 인코더는, 컨텍스트가 이웃하는 계수들의 유의성에 기초하는 HEVC 에서 사용되는 방법과 유사한 방법을 사용하기 위해 그 기술들의 이들 유의성 맵 양태들을 구현할 수도 있다. 적절한 트래스포징 (또는 스와핑) 동작이 2개의 형상들 중 하나에 적용될 수 있다.
계수 레벨 코딩에 대해, 하나의 HEVC 제안은 4x4 의 서브-블록들로의 블록의 분할에 의존하고 각각의 서브-블록 내의 코딩을 순차적으로 수행한다. 이러한 타입의 프로세싱은, 블록 사이즈가 4x4 서브-블록에 피팅할 수 없는 경우 (즉, 직사각형의 측부들 중 적어도 하나가 4 미만인 경우) 에는 가능하지 않다. 그 문제를 극복하기 위해, 본 개시에서 설명된 기술들은 비디오 인코더로 하여금 블록이 스캔 순서에 있어서 n개의 (예를 들어, n = 16) 연속적인 계수들의 서브세트로 분할되는 코딩 프로세스를 실행할 수 있게 할 수도 있다. 이는 모든 비-정방형 블록 사이즈들에 또는 오직 4x4 서브-블록들을 포함할 수 없는 블록 사이즈들에 적용될 수 있다.
부가적으로, 비디오 인코더는, 비-정방형 블록들이 정방형 블록들과는 상이한 통계들을 갖기 때문에, 비-정방형 블록들의 쿼드트리 Cbf 에 대한 확률 컨텍스트의 상이한 세트를 이용하기 위해 본 개시에서 설명된 기술들의 일부 양태를 구현할 수도 있다.
그 기술들이 일반적으로 도 4 및 도 5 의 예에서 도시된 비디오 인코더 (20) 와 같은 비디오 인코더에 대하여 본 개시에서 설명되지만, 그 기술들의 다수의 양태들은 도 4 및 도 6 의 예들에서 도시된 비디오 디코더 (30) 와 같은 비디오 디코더에 의해 구현될 수도 있다. 예를 들어, 비디오 디코더는 상기 설명된 CABAC 기술들의 역 버전을 구현하여, 비디오 인코더의 엔트로피 인코더로부터 출력된 인코딩된 비디오 데이터를 엔트로피 디코딩할 수도 있다. 비디오 디코더는 또한 상기 설명된 기술들의 스캐닝 및 양자화 양태들 양자의 역 버전의 형태를 구현하여, 변환 계수들의 비-정방형 블록을 복원할 수도 있다. 부가적으로, 비디오 인코더는 역 비-정방형 변환을 적용하여, 변환 계수들을 주파수 도메인으로부터 공간 도메인으로 역으로 변환할 수도 있다. 비디오 디코더는 또한 상기 설명된 기술들의 신택스 코딩 양태들의 역 버전을 수행하여, 비트스트림으로부터 신택스 엘리먼트들을 분석하고 그 후 분석된 신택스 엘리먼트들을 디코딩할 수도 있다. 하지만, 비디오 디코더는 통상적으로, 비디오 인코더가 신택스 엘리먼트들을 통해 변환들 중 어느 변환이 선택되는지를 시그널링함을 고려하여 그 기술들의 선택 양태들을 구현하지는 않는다. 따라서, 비디오 인코더에 대하여 상기 설명되지만, 그 기술들의 다수의 양태들이, 하기에 더 상세히 설명되는 바와 같이, 비디오 디코더에 의해 수행될 수도 있다.
동작에 있어서, 비디오 디코더는 그 기술들을 구현하여, 인코딩된 비디오 데이터의 부분을 나타내는 변환 계수들에 적용될 역변환이 인코딩된 비디오 데이터의 부분과 연관된 변환 정보에 기초하여 비-정방형인지를 결정하고, 변환 유닛이 비-정방형인지의 결정에 기초하여 변환 계수들을 변환 계수들의 블록으로 형성하며, 변환 계수들의 블록에 역변환을 적용하여 변환 계수들의 블록을 잔여 비디오 데이터의 블록으로 변환할 수도 있다.
도 1 은 비-정방형 변환들을 이용하여 비디오 데이터를 코딩하기 위해 본 개시에서 설명된 기술들을 활용하도록 구성될 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타낸 블록 다이어그램이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은, 인코딩된 비디오를 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12) 를 포함한다. 인코딩된 비디오 데이터는 또한 저장 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있으며, 요구될 경우, 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 저장 매체 또는 파일 서버에 저장될 경우, 비디오 인코더 (20) 는, 코딩된 비디오 데이터를 저장 매체에 저장하기 위해, 네트워크 인터페이스, 컴팩트 디스크 (CD), 블루-레이 또는 디지털 비디오 디스크 (DVD) 버너 또는 스탬핑 설비 디바이스, 또는 다른 디바이스들과 같은 다른 디바이스에 코딩된 비디오 데이터를 제공할 수도 있다. 유사하게, 네트워크 인터페이스, CD 또는 DVD 리더 등과 같이 비디오 디코더 (30) 로부터 분리된 디바이스는 코딩된 비디오 데이터를 저장 매체로부터 취출할 수도 있고, 취출된 데이터를 비디오 디코더 (30) 로 제공할 수도 있다.
소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋탑 박스들, 소위 스마트폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들 등을 포함한 매우 다양한 디바이스들 중 임의의 디바이스를 포함할 수도 있다. 다수의 경우들에 있어서, 그러한 디바이스들은 무선 통신을 위해 장비될 수도 있다. 따라서, 통신 채널 (16) 은 인코딩된 비디오 데이터의 송신에 적합한 무선 채널, 유선 채널, 또는 무선 채널과 유선 채널의 조합을 포함할 수도 있다. 유사하게, 파일 서버 (36) 는 인터넷 커넥션을 포함한 임의의 표준 데이터 커넥션을 통해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 이는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 커넥션), 유선 커넥션 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들 양자의 조합을 포함할 수도 있다.
본 개시의 예들에 따른, 비-정방형 변환들을 적용하기 위한 기술들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예를 들어, 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 어플리케이션들과 같은 다양한 멀티미디어 어플리케이션들 중 임의의 어플리케이션의 지원으로 비디오 코딩에 적용될 수도 있다. 일부 예들에 있어서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화와 같은 어플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에 있어서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) 및 송신기 (24) 를 포함한다. 소스 디바이스 (12) 에 있어서, 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡쳐 디바이스, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스, 및/또는 컴퓨터 그래픽스 데이터를 소스 비디오로서 생성하기 위한 컴퓨터 그래픽스 시스템, 또는 그러한 소스들의 조합과 같은 소스를 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 하지만, 본 개시에서 설명되는 기술들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 어플리케이션들, 또는 인코딩된 비디오 데이터가 로컬 디스크 상에 저장되는 어플리케이션들에 적용될 수도 있다.
캡쳐되거나 사전-캡쳐되거나 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 무선 통신 프로토콜과 같은 통신 표준에 따라 모뎀 (22) 에 의해 변조되고, 송신기 (24) 를 통해 목적지 디바이스 (14) 로 송신될 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조용으로 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하여 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩되는 캡쳐되거나 사전-캡쳐되거나 또는 컴퓨터 생성된 비디오는 추후 소비를 위해 저장 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있다. 저장 매체 (34) 는 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체를 포함할 수도 있다. 그 후, 저장 매체 (34) 상에 저장된 인코딩된 비디오는 디코딩 및 플레이백을 위해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장하고 그 인코딩된 비디오를 목적지 디바이스 (14) 로 송신하는 것이 가능한 임의의 타입의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹 사이트용), FTP 서버, 네트워크 접속형 저장 (NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 그 데이터를 목적지 디바이스로 송신하는 것이 가능한 임의의 다른 타입의 디바이스를 포함한다. 인코딩된 비디오 데이터의 파일 서버 (36) 로부터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들 양자의 조합일 수도 있다. 파일 서버 (36) 는 인터넷 커넥션을 포함한 임의의 표준 데이터 커넥션을 통해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 이는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 커넥션), 유선 커넥션 (예를 들어, DSL, 케이블 모뎀, 이더넷, USB 등), 또는 이들 양자의 조합을 포함할 수도 있다.
도 1 의 예에 있어서, 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 상으로 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조하여, 비디오 디코더 (30) 에 대한 복조된 비트스트림을 생성한다. 채널 (16) 상으로 통신된 정보는, 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의한 사용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 정보를 포함할 수도 있다. 상기 설명된 슬라이스 헤더 신택스를 포함하는 그러한 신택스에는 또한, 저장 매체 (34) 또는 파일 서버 (36) 상에 저장되는 인코딩된 비디오 데이터가 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은, 비디오 데이터를 인코딩하거나 디코딩하는 것이 가능한 각각의 인코더-디코더 (CODEC) 의 부분을 형성할 수도 있다.
디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 그 외부에 있을 수도 있다. 일부 예들에 있어서, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함할 수도 있고, 또한, 외부 디스플레이 디바이스와 인터페이싱하도록 구성될 수도 있다. 다른 예들에 있어서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
도 1 의 예에 있어서, 통신 채널 (16) 은 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적인 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체, 또는 무선 매체와 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 채널 (16) 은 일반적으로, 유선 매체 또는 무선 매체의 임의의 적합한 조합을 포함하여, 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 송신하기 위한 임의의 적합한 통신 매체 또는 상이한 통신 매체들의 집합을 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 현재 개발 중인 장래의 고 효율 비디오 코딩 (HEVC) 표준과 같은 비디오 압축 표준에 따라 동작할 수도 있고, HEVC 테스트 모델 (HM) 에 부합할 수도 있다. 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 MPEG 4, 파트 10, 어드밴스드 비디오 코딩 (AVC) 으로서 대안적으로 지칭되는 ITU-T H.264 표준과 같은 다른 전매특허 또는 산업 표준들, 또는 그러한 표준들의 확장물들에 따라 동작할 수도 있다. 하지만, 본 개시의 기술들은 임의의 특정 코딩 표준에 한정되지 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263 을 포함한다.
본 개시의 기술들에 따르면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 비-정방형 변환 블록들을 이용하여 비디오 데이터를 코딩하도록 구성될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 본 개시에서 설명된 비-정방형 변환 블록들에 관련된 기술들 중 임의의 기술 또는 그 모든 기술들을 임의의 조합으로 구현할 수도 있다. 일반적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성된 비디오 코더들의 예들을 나타낸다.
예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 2Nx2N CU 에 대한 잔여 쿼드트리 (RQT) 데이터 구조의 루트 레벨 (레벨 0) 이 2Nx2N TU 또는 2개의 Nx2N (또는 2NxN) TU들에 대응하도록 그리고 RQT 데이터 구조의 레벨 1 이 NxN TU들에 대응하도록 구성될 수도 있다. 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, RQT 데이터 구조의 루트 레벨 (레벨 0) 이 2Nx2N TU 에 대응하고 레벨 1 이 2NxN (또는 Nx2N) TU들에 대응하고 레벨 2 가 NxN TU들에 대응하도록 구성될 수도 있다. 따라서, 변환 유닛이 대응하는 RQT 데이터 구조의 레벨을 나타내는 정보를 코딩하는 것은, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 예를 나타낸다.
다른 대안으로서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, TU들이 항상 RQT 데이터 구조의 루트 레벨 (레벨 0) 의 대응하는 PU 의 사이즈와 동일한 사이즈를 갖도록 또는 비-정방형 TU들이 오직 PU들의 특정 형상들, 예를 들어 비-정방형 PU들과만 사용되도록 구성될 수도 있다. 따라서, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것은, 변환 유닛에 대응하는 예측 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초할 수도 있다. 일부 예들에 있어서, 변환 유닛에 대응하는 예측 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것은, 그 자체가, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 코딩된 정보에 대응할 수도 있다.
부가적으로 또는 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 하나 이상의 변환 유닛들에 대한 사이즈들을 나타내는 데이터를 코딩하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 변환 유닛들에 대한 사이즈들을 선택하고 선택된 사이즈들을 나타내는 값들을 코딩할 수도 있지만, 비디오 디코더 (30) 는 수신된 데이터를 디코딩 및 해석하여 코딩된 변환 유닛들에 대한 사이즈들을 결정할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 동일한 변환 유닛 사이즈들을 CU 의 TU들에 적용할 수도 있다. 일반적으로, 변환 유닛 사이즈를 나타내는 정보를 코딩하는 것은 그러한 정보를 인코딩하는 비디오 인코더 (20) 또는 그러한 정보를 디코딩하는 비디오 디코더 (30) 를 지칭할 수도 있다.
일부 예들에 있어서, 변환 유닛 사이즈를 나타내는 정보를 코딩하는 것은, TU들이 RQT 의 레벨 0 에 대응하는지 또는 RQT 의 레벨 1 (또는 RQT 의 더 높은 레벨들) 에 대응하는지를 나타내는 분할 플래그를 코딩하는 것을 포함할 수도 있다. 그러한 정보를 코딩하는 것은, 각각의 레벨에서의 TU들의 사이즈들을 나타내는 정보를 코딩하는 것을 더 포함할 수도 있다. 일부 예들에 있어서, 레벨 0 은, 대응하는 2Nx2N CU 에 대한 사이즈 2Nx2N 인 TU들에 대응한다. 다른 예들에 있어서, 레벨 0 은 사이즈들 2Nx2N 또는 2NxN (또는 Nx2N) 중 어느 하나인 TU들에 대응할 수도 있으며, 레벨 0 의 사이즈들 중 어느 사이즈가 레벨 0 이 선택될 경우에 선택되는지를 나타내기 위해 추가 정보가 코딩될 수도 있다. 따라서, 변환 유닛이 대응하는 RQT 에 있어서의 레벨을 나타내는 정보를 코딩하는 것, 분할 플래그 (즉, 부모 변환 유닛이 자식 변환 유닛들을 형성하기 위해 분할되는지 여부) 를 나타내는 정보를 코딩하는 것, 및/또는 변환 선택 플래그를 코딩하는 것은, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 예들을 나타낸다.
부가적인 정보가, 예를 들어, TU들이 비-제로 변환 계수들을 포함하는지 여부 즉 TU들이 코딩되는지 여부와 같이 TU들의 사이즈들을 나타내는 정보와 조인트하게 코딩될 수도 있다. 그러한 정보는 루미넌스 및/또는 크로미넌스 TU들에 대한 코딩된 블록 플래그들을 포함할 수도 있다. 따라서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 변환 유닛이 크로미넌스 컴포넌트에 대응하는지 또는 루미넌스 컴포넌트에 대응하는지에 적어도 부분적으로 기초하여 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하도록 구성될 수도 있다.
더욱이, 부가적으로 또는 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다양한 TU들에 대한 양자화 파라미터들을 나타내는 데이터를 코딩하도록 구성될 수도 있다. 특히, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, TU들이 정방형인지 또는 비-정방형인지에 기초하여 상이한 양자화 파라미터들을 TU들에 적용하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 현재 화상에 대한 베이스 양자화 파라미터 (QP0) 를 나타내는 값을 코딩할 수도 있다. 더욱이, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 QP0 값에 적용될 오프셋 값들을 결정하도록 구성될 수도 있으며, 여기서, 오프셋 값들은 비-정방형 TU들에 관한 정방형 TU들에 대해 상이할 수도 있다. 예를 들어, 비-정방형 TU들에 대해, 오프셋 값은 (QP0+3 에 대해) 3 일 수도 있으며, 정방형 TU들에 대해, 오프셋 값은 (QP0 과 동일한 QP 에 대해) 0 일 수도 있다. 정방형 및 비-정방형 TU들에 대해 상이한 QP 값을 사용하는 것은 더 유연성을 제공할 수도 있으며, 이는 더 우수한 코딩 성능을 달성하게 할 수도 있다. 오프셋 값들은 예를 들어, 시퀀스 파라미터 세트 (SPS), 화상 파라미터 세트 (PPS), 적응 파라미터 세트 (APS), 슬라이스 헤더, 화상 헤더, 또는 다른 데이터 구조에 있어서 고정되거나 시그널링될 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛에 대한 양자화 파라미터를 결정하도록 구성될 수도 있다.
더욱이, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 부가적으로 또는 대안적으로, 비-정방형 TU들에 대한 특정 스캔 패턴들을 수행하도록 구성될 수도 있다. 예를 들어, TU 가 비-정방형인 경우, TU 는 일반적으로 직사각형 및 비-정방형으로 고려될 수도 있다. 이와 같이, TU 는, 다른 측보다 더 긴 일 측을 가질 수도 있다. 예를 들어, Nx2N TU 에 대해, 길이 2N 인 측 (예를 들어, 상측 및 하측) 은 길이 N 인 측 (예를 들어, 좌측 및 우측) 보다 더 길다. 유사하게, 2NxN TU 에 대해, 길이 2N 인 측 (예를 들어, 좌측 및 우측) 은 길이 N 인 측 (예를 들어, 상측 및 하측) 보다 더 길다. 본 개시의 기술들에 따르면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 비-정방형 TU 의 어느 측이 더 긴지에 기초하여 스캔을 수행하도록 구성될 수도 있다. 예를 들어, Nx2N TU 에 대해, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 순서가 일반적으로 좌하측으로부터 우상측으로인 웨이브프론트 스캐닝을 사용하도록 구성될 수도 있으며, 항상 더 짧은 에지 (예를 들어, 좌측 에지) 로부터 시작할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 변환 유닛이 비-정방형일 경우, 변환 유닛의 더 짧은 에지에서 시작하는 변환 유닛의 변환 계수들에 스캔 패턴을 적용하도록 구성될 수도 있다.
더욱이, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 부가적으로 또는 대안적으로, 변형된 CABAC 엔트로피 코딩 기술들을 수행하여 비-정방형 변환 유닛들을 지원하도록 구성될 수도 있다. 특히, 비-정방형 변환 유닛들을 지원하는 엔트로피 코딩 기술들은 (스캔 순서에 있어서) 마지막 유의 계수들, 유의성 맵들, 및 계수 레벨들을 나타내는 정보를 시그널링 및 코딩하는 것을 포함할 수도 있다. 비-정방형 블록들에 대해, 마지막 유의 계수의 시그널링에 있어서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, (예를 들어, CABAC 에 대한) 컨텍스트 모델이 코딩되는 좌표의 측부의 길이에 의존하도록 구성될 수도 있다. 예를 들어, 수평 좌표 (마지막 유의 계수의 x 컴포넌트) 는 블록의 폭 및 코딩되는 x 의 빈에 의존하는 CABAC 컨텍스트를 가질 수도 있다. 유사하게, 수직 좌표 (y 컴포넌트) 는 블록의 높이에 의존하는 할당된 컨텍스트 세트를 가질 수도 있다.
유사하게, 비-정방형 블록들의 유의성 맵을 코딩할 경우, 2NxN 및 Nx2N 은 동일한 컨텍스트들을 공유할 수도 있으며, 이는 Nx2N 및 2NxN 에 대한 상이한 컨텍스트들을 갖는 것과 비교하여 컨텍스트들의 총 수를 감소시킬 수도 있다. 수직 배향식 및 수평 배향식 비-정방형 TU들은 동일한 컨텍스트들, 및 그 컨텍스트들을 선택하기 위한 동일 세트의 룰들을 사용할 수도 있다. 하지만, 일 TU 배향에 대한 계수의 X 및 Y 좌표들이 컨텍스트 선택을 위해 사용될 수도 있지만, 다른 배향에 대한 계수의 X 및 Y 좌표들은 동일한 컨텍스트 선택 기준을 사용하기 위해 트랜스포즈될 수도 있다. 특히, 성능을 향상시키기 위해, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 공유를 직접 수행하는 것보다는, 직사각형 형상들의 값들 및 좌표들을 트랜스포즈할 수도 있다. 예를 들어, 2NxN 변환 유닛을 코딩할 경우, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 컨텍스트들을 직접 적용할 수도 있지만, Nx2N 변환 유닛을 코딩할 경우, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 오직 컨텍스트들을 선택할 목적으로, 블록의 폭 및 높이 그리고 X 및 Y 좌표들을 트랜스포즈할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 2NxN 블록들 및 트랜스포즈된 Nx2N 블록들의 통계들의 유사성들을 이용하도록 구성될 수도 있다.
일 예로서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, HEVC 에 있어서의 4x4 및 8x8 블록들과 유사한 방식으로, 4x8 및 8x4 블록들에 대한 계수들의 위치들에 기초하여 유의성 맵들을 코딩하기 위한 컨텍스트를 사용하도록 구성될 수도 있다. 더 긴 측을 따라 2개의 이웃하는 계수들에 의해 공유되는 16개의 컨텍스트들이 사용될 수도 있다. 예를 들어, X 및 Y 는 계수의 좌표들이고, >> 은 우측 시프트 연산을 나타내며, CtxNum 은 현재 블록에 대해 할당된 컨텍스트라고 한다. 8x4 블록에 대한 컨텍스트는
Figure 112014009950518-pct00001
로서 도출될 수도 있다.
4x8 블록에 대해, 컨텍스트는 또한 수학식 (1) 을 이용하지만 X 및 Y 를 스와핑한 이후에 도출될 수 있다. 더 큰 블록들, 예를 들어, 16x4, 4x16 및 그 초과에 대해, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 컨텍스트가 이웃하는 계수들의 유의성에 기초하는 HEVC 에서 설명된 방법과 유사한 방법을 사용하도록 구성될 수도 있다. 적절한 트래스포징 (또는 스와핑) 동작이 2개의 형상들 중 하나에 적용될 수 있다.
계수 레벨 코딩에 대해, 현재의 HEVC 는 4x4 의 서브-블록들로의 블록의 분할에 의존하고 각각의 서브-블록 내의 코딩을 순차적으로 수행한다. 하지만, 이러한 타입의 프로세싱은, (직사각형의 측부들 중 적어도 하나가 4 미만인 경우와 같이) 4x4 서브-블록에 피팅할 수 없는 블록 사이즈들과는 양립하지 않는다. 따라서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 블록이 스캔 순서에 있어서 n개의 (예를 들어, n = 16) 연속적인 계수들로 분할되는 코딩 프로세스를 수행할 수도 있다. 이는, 다양한 예들에 있어서, 모든 비-정방형 블록 사이즈들에 또는 오직 4x4 서브-블록들을 포함할 수 없는 블록 사이즈들에 적용될 수 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 추가로, 비-정방형 블록들이 정방형 블록들과는 상이한 통계들을 가질 수도 있기 때문에, 정방형 블록들의 쿼드트리 코딩된 블록 플래그 (CBF) 에 대한 확률 컨텍스트들에 대비하여 비-정방형 블록들의 쿼드트리 코딩된 블록 플래그 (CBF) 에 대한 확률 컨텍스트들의 상이한 세트를 이용하도록 구성될 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성될 수도 있다. 즉, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 변환 유닛이 비-정방형일 경우, 변환 유닛의 더 짧은 에지의 위치에 기초하여 데이터를 코딩하기 위한 컨텍스트를 선택하도록 구성될 수도 있다.
도 1 에 도시되지는 않지만, 일부 양태들에 있어서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 오디오 및 비디오 양자의 인코딩을 공통 데이터 스트림 또는 별개의 데이터 스트림들로 처리하기 위해 적절한 MUX-DEMUX 유닛들 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, 일부 예들에 있어서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들에 부합할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성된 비디오 코더들의 예들을 나타낸다. 예를 들어, 변환 유닛의 데이터를 코딩하기 위해, 비디오 인코더 (20) 는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하고, 잔여 데이터를 변환하여 변환 계수들을 생성하고, 변환 계수들을 양자화하며, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 인코딩하도록 구성될 수도 있다. 부가적으로, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하기 위해, 비디오 인코더 (20) 는, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 인코딩하도록 구성될 수도 있다.
유사하게, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하기 위해, 비디오 디코더 (30) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 디코딩하도록 구성될 수도 있다. 부가적으로, 변환 유닛의 데이터를 코딩하기 위해, 비디오 디코더 (30) 는, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 디코딩하고, 양자화된 변환 계수들을 역양자화하며, 변환 계수들을 역변환하여 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하도록 구성될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 주문형 집적회로(ASIC)들, 필드 프로그래머블 게이트 어레이(FPGA)들, 별도의 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들과 같은 다양한 적합한 인코더 회로 중 임의의 회로로서 구현될 수도 있다. 기술들이 부분적으로 소프트웨어로 구현될 경우, 디바이스는 적합한 비-일시적인 컴퓨터 판독가능 매체에 소프트웨어에 대한 명령들을 저장하고, 본 개시의 기술들을 수행하기 위해 하나 이상의 프로세서들을 사용하는 하드웨어로 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 하나는 각각의 디바이스에 있어서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
비디오 인코더 (20) 는 비-정방형 변환들을 이용하여 비디오 데이터를 코딩하기 위한 본 개시의 기술들 중 임의의 기술 또는 그 모든 기술들을 구현할 수도 있다. 유사하게, 비디오 디코더 (30) 는 비-정방형 변환들을 이용하여 비디오 데이터를 코딩하기 위한 이들 기술들 중 임의의 기술 또는 그 모든 기술들을 구현할 수도 있다. 본 개시에서 설명되는 바와 같은 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다.
도 2 는 본 개시에 설명된 바와 같은 모션 벡터 예측 프로세스에 있어서 병합 후보들을 선택하기 위한 기술들을 사용할 수도 있는 비디오 인코더 (20) 의 일 예를 나타낸 블록 다이어그램이다. 비디오 인코더 (20) 는, 다른 코딩 표준들 또는 방법들에 관하여 본 개시의 한정없이 예시의 목적으로 HEVC 코딩의 컨텍스트에서 설명될 것이다. 비디오 인코더 (20) 는 비디오 프레임들 내에서 CU들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 소정의 비디오 프레임 내의 비디오 데이터에 있어서 공간 리던던시를 감소 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 현재 프레임과 이전에 코딩된 프레임 간의 시간 리던던시를 감소 또는 제거하기 위해 시간 예측에 의존한다. 인트라-모드 (I-모드) 는 수개의 공간 기반 비디오 압축 모드들 중 임의의 모드를 지칭할 수도 있다. 단방향 예측 (P-모드) 또는 양방향 예측 (B-모드) 과 같은 인터-모드들은 수개의 시간 기반 압축 모드들 중 임의의 모드를 지칭할 수도 있다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도 2 의 예에 있어서, 비디오 인코더 (20) 는 모션 보상 유닛 (44), 모션 추정 유닛 (42), 인트라-예측 유닛 (46), 레퍼런스 프레임 버퍼 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 도 2 에 도시된 변환 프로세싱 유닛 (52) 은, 실제 변환 또는 변환들의 조합들을 잔여 데이터의 블록에 적용하는 유닛이고, CU 의 변환 유닛 (TU) 로서 또한 지칭될 수도 있는 변환 계수들의 블록과 혼동되지 않아야 한다. 변환 프로세싱 유닛 (52) 은 본 개시에서 설명된 기술들에 따라 비-정방형 변환들을 적용할 수도 있다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 포함한다. (도 1 에 도시되지 않은) 디블로킹 (deblocking) 필터가 또한 블록 경계들을 필터링하여 복원된 비디오로부터 블록키니스 아티팩트들을 제거하기 위해 포함될 수도 있다. 요구된다면, 디블로킹 필터는 통상적으로 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다중의 비디오 블록들, 예를 들어, 최대 코딩 유닛(LCU)들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 시간 압축을 제공하기 위해 하나 이상의 레퍼런스 프레임들에 있어서의 하나 이상의 블록들에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라-예측 유닛 (46) 은 공간 압축을 제공하기 위해 코딩될 블록과 동일한 프레임 또는 슬라이스에 있어서의 하나 이상의 이웃하는 블록들에 대해 수신된 비디오 블록의 인트라-예측 코딩을 수행할 수도 있다.
모드 선택 유닛 (40) 은, 예를 들어, 각각의 모드에 대한 에러 (왜곡으로 지칭할 수도 있음) 결과들에 기초하여 코딩 모드들 중 하나, 즉, 인트라 모드 또는 인터 모드를 선택할 수도 있고, 결과적인 인트라- 또는 인터-예측된 블록 (예를 들어, 예측 유닛 (PU)) 을 합산기 (50) 에 제공하여 잔여 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 레퍼런스 프레임에서의 사용을 위한 인코딩된 블록을 복원한다. 모드 선택 유닛 (40) 은 또한 상기 설명된 본 개시의 기술들의 변환 선택 양태들을 구현할 수도 있다. 합산기 (62) 는 하기에서 더 상세히 설명되는 바와 같이, 예측된 블록을, 그 블록에 대한 역변환 유닛 (60) 으로부터의 역양자화되고 역변환된 데이터와 결합하여 인코딩된 블록을 복원한다. 일부 비디오 프레임들은 I-프레임들로서 지정될 수도 있으며, 여기서, I-프레임 내 블록들은 인트라-예측 모드에서 인코딩된다. 일부 경우들에 있어서, 인트라-예측 유닛 (46) 은, 예를 들어, 모션 추정 유닛 (42) 에 의해 수행된 모션 탐색이 블록의 충분한 예측을 야기하지 않을 경우, P-프레임 또는 B-프레임에 있어서 블록의 인트라-예측 인코딩을 수행할 수도 있다. 더욱이, 모드 선택 유닛 (40) 은, 비-정방형일 수도 있는 하나 이상의 PU들로 리프 노드 코딩 유닛을 파티셔닝하는 방식을 선택할 수도 있다. 예를 들어, 모드 선택 유닛 (40) 은 SDIP 의 경우에 있어서 2Nx2N CU, N/2x2N 또는 2NxN/2 PU들에 대한 Nx2N 또는 2NxN PU들을 선택하거나, 비대칭 모션 파티셔닝 또는 비대칭 SDIP 에 대한 2NxnU, 2NxnD, nLx2N, 또는 nRx2N PU들을 선택할 수도 있다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적을 위해 별개로 도시된다. 모션 추정 (또는 모션 탐색) 은, 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 레퍼런스 프레임의 레퍼런스 샘플, 즉, 레퍼런스 블록에 대한 현재 프레임에서의 예측 유닛의 변위를 나타낼 수도 있다. 모션 추정 유닛 (42) 은 인터-코딩된 프레임의 예측 유닛에 대한 모션 벡터를, 레퍼런스 프레임 버퍼 (64) 에 저장된 레퍼런스 프레임의 레퍼런스 샘플들과 그 예측 유닛을 비교함으로써 계산한다. 레퍼런스 샘플은, 픽셀 차이의 관점에서 코딩되는 PU 를 포함한 CU 의 부분을 긴밀하게 매칭하기 위해 발견되는 블록일 수도 있으며, 이 픽셀 차이는 절대 차이의 합 (SAD), 제곱 차이의 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 레퍼런스 샘플은 레퍼런스 프레임 또는 레퍼런스 슬라이스 내 어디에서나 발생할 수도 있으며, 반드시 레퍼런스 프레임 또는 슬라이스의 블록 (예를 들어, 코딩 유닛) 경계일 필요는 없다. 일부 예들에 있어서, 레퍼런스 샘플은, 보간될 수도 있는 분수 픽셀 위치에서 발생할 수도 있다.
모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다. 특히, 모션 추정 유닛 (42) 은 상기 설명된 병합 후보들을 활용하여, 병합 모드에 따라 모션 벡터를 시그널링할 수도 있다 (즉, 모션 벡터를 카피할 이웃 블록의 인덱스를 시그널링함). 모션 벡터에 의해 식별된 레퍼런스 프레임의 부분은 레퍼런스 샘플로서 지칭될 수도 있다. 모션 보상 유닛 (44) 은, 예를 들어, PU 에 대한 모션 벡터에 의해 식별된 레퍼런스 샘플을 취출함으로써 현재 CU 의 예측 유닛에 대한 예측 값을 계산할 수도 있다.
인트라-예측 유닛 (46) 은 수신된 블록을, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행된 인터-예측에 대한 대안으로서 인트라-예측할 수도 있다. 인트라-예측 유닛 (46) 은, 블록들에 대한 좌-우로, 상부-저부로의 인코딩 순서를 가정할 때, 공간적으로 이웃하는 이전에 코딩된 블록들, 예를 들어, 현재 블록의 상위의, 상위 및 우측으로의, 상위 및 좌측으로의, 또는 좌측으로의 블록들에 대하여 수신된 블록을 예측할 수도 있다. 인트라-예측 유닛 (46) 은 다양한 서로다른 인트라-예측 모드들로 구성될 수도 있다. 예를 들어, 인트라-예측 유닛 (46) 은 인코딩되는 CU 의 사이즈에 기초하여, 특정 수의 방향성 예측 모드들, 예를 들어 35개의 방향성 예측 모드들로 구성될 수도 있다.
인트라-예측 유닛 (46) 은, 예를 들어, 다양한 인트라-예측 모드들에 대한 에러 값들을 계산하고 최저 에러 값을 산출하는 모드를 선택함으로써 인트라-예측 모드를 선택할 수도 있다. 방향성 예측 모드들은 공간적으로 이웃한 픽셀들의 값들을 결합하고 결합된 값들을 PU 내 하나 이상의 픽셀 위치들에 적용하기 위한 기능들을 포함할 수도 있다. 일단 PU 내 모든 픽셀 위치들에 대한 값들이 계산되었으면, 인트라-예측 유닛 (46) 은 인코딩될 수신된 블록과 PU 간의 픽셀 차이들에 기초하여 예측 모드에 대한 에러 값을 계산할 수도 있다. 인트라-예측 유닛 (46) 은, 수용가능한 에러 값을 산출하는 인트라-예측 모드가 발견될 때까지 인트라-예측 모드들의 테스트를 계속할 수도 있다. 그 후, 인트라-예측 유닛 (46) 은 PU 를 합산기 (50) 로 전송할 수도 있다.
비디오 인코더 (20) 는, 모션 보상 유닛 (44) 또는 인트라-예측 유닛 (46) 에 의해 계산된 예측 데이터를, 코딩되는 오리지널 비디오 블록으로부터 감산함으로써 잔여 블록을 형성한다. 합산기 (50) 는 이러한 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 잔여 블록은 픽셀 차이 값들의 2차원 매트릭스에 대응할 수도 있으며, 여기서, 잔여 블록에서의 값들의 개수는 잔여 블록에 대응하는 PU 내 픽셀들의 개수와 동일하다. 잔여 블록에서의 값들은 코딩될 오리지널 블록에서의 및 PU 에서의 공동 위치된 픽셀들의 값들 사이의 차이들, 즉, 에러에 대응할 수도 있다. 그 차이들은, 코딩되는 블록의 타입에 의존하여 크로마 또는 루마 차이들일 수도 있다.
변환 프로세싱 유닛 (52) 은 잔여 블록으로부터 하나 이상의 변환 유닛(TU)들을 형성할 수도 있다. 변환 프로세싱 유닛 (52) 은, 상기 설명된 기술들에 따라 사이즈 2NxN, Nx2N, NxM 또는 MxN 인 비-정방형 변환들을 포함할 수도 있는 복수의 변환들 중으로부터 변환을 선택한다. 그 후, 변환 프로세싱 유닛 (52) 은 선택된 변환을 TU 에 적용하여, 변환 계수들의 2차원 어레이를 포함하는 비디오 블록을 생성한다. 이러한 방식으로, 변환 프로세싱 유닛 (52) 은, 대응하는 PU들과 동일한 사이즈를 갖는 또는 대응하는 PU들보다 더 작은 사이즈들을 갖는 TU들을 사용할 수도 있다. 물론, 변환 프로세싱 유닛 (52) 은 또한, PU들보다 더 큰 사이즈들을 갖는 TU들을 사용할 수 있지만, 일반적으로, 대응하는 PU들보다 더 큰 TU들을 사용하는 것은 바람직하지 않을 수도 있다.
특히, 본 개시의 기술들에 따르면, 변환 프로세싱 유닛 (52) 은, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩할 수도 있다. 즉, 일부 예들에 있어서, 변환 프로세싱 유닛 (52) (또는 다른 예들에 있어서는, 모드 선택 유닛 (40)) 은 리프 노드 코딩 유닛에 대해 정방형 변환 유닛들을 형성할지 또는 비-정방형 변환 유닛들을 형성할지를 결정할 수도 있다. 대안적으로, 모든 선택 유닛 (40) 은 다양한 코딩 패스들의 코딩 결과들에 기초하여 정방형 변환 유닛들을 형성할지 또는 비-정방형 변환 유닛들을 형성할지를 결정하여 변환 프로세싱 유닛 (52) 으로 하여금 각각의 패스에서 정방형 또는 비-정방형 변환들을 사용하게 하고, 예를 들어, 왜곡의 관점에서 또는 레이트 왜곡 메트릭의 관점에서, 이들 다양한 코딩 패스들의 결과들에 기초하여 변환 유닛들에 대한 사이즈들 및 형상들을 선택할 수도 있다.
일부 예들에 있어서, 비디오 인코더 (20) (예를 들어, 비디오 인코더 (20) 의 모드 선택 유닛 (40) 및/또는 변환 프로세싱 유닛 (52)) 는, 정방형 변환 유닛들을 사용할지 또는 비-정방형 변환 유닛들을 사용할지를 결정할 경우 부가적인 또는 대안적인 기준을 분석할 수도 있다. 예를 들어, 비디오 인코더 (20) 는, 오직 정방형 또는 오직 비-정방형 변환 유닛들이, 예를 들어, 특정 컴포넌트들 (크로미넌스 또는 루미넌스 컴포넌트들) 에 대하여, 현재 리프 노드 CU 의 PU들의 형상들에 기초하여, 현재 리프 노드 CU 의 사이즈에 기초하여, 또는 그러한 기준의 조합으로 특정 시나리오들에서 이용가능하도록 구성될 수도 있다.
더욱이, 현재 리프 노드 CU 에 대한 TU(들)의 형상을 선택한 이후, 비디오 인코더 (20) 는 선택된 형상을 나타내는 데이터를 코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는, 현재 리프 노드 CU 의 TU(들)가 대응하는 RQT 의 레벨을 나타내는 데이터를 코딩하도록 구성될 수도 있다. 일부 예들에 있어서, PU들의 형상들은 대응하는 TU들의 형상들을 지시할 수도 있으며, 따라서, PU들의 형상들을 나타내는 정보를 코딩하는 것은 또한, 대응하는 TU들의 형상들을 나타낼 수도 있다. 유사하게, TU(들)가 크로미넌스 또는 루미넌스 컴포넌트에 대응하는지를 나타내는 정보를 코딩하는 것은 또한, TU(들)가 정방형인지 또는 비-정방형인지 (또는 정방형일 수 있는지 또는 비-정방형일 수 있는지) 를 나타낼 수도 있다. 예를 들어, 비디오 코딩 디바이스들은 루미넌스 컴포넌트들에 대한 정방형 또는 비-정방형 TU들 사이에서 선택하도록 구성될 수도 있지만, 크로미넌스 컴포넌트들에 대한 오직 정방형 TU들만을 사용하도록 구성될 수도 있다.
변환 프로세싱 유닛 (52) 은 TU들이 합산기 (50) 로부터 수신된 잔여 데이터를 포함하도록 선택된 사이즈의 TU들을 형성하고, 변환을 잔여 데이터에 적용하여 데이터를 픽셀 도메인으로부터 주파수 도메인으로 변환할 수도 있다. 그러한 변환된 데이터는 변환 계수들로서 지칭될 수도 있다. 변환 프로세싱 유닛 (52) 은 결과적인 변환 계수들을 양자화 유닛 (54) 으로 전송할 수도 있다. 그 후, 양자화 유닛 (54) 은 변환 계수들을 양자화할 수도 있다. 일부 예들에 있어서, 양자화 유닛 (54) 은, TU들이 정방형인지 또는 비-정방형인지에 기초하여 양자화 파라미터들을 결정하도록 구성될 수도 있다. 예를 들어, 양자화 유닛 (54) 은, TU들이 정방형인지 또는 비-정방형인지에 기초하여 양자화 파라미터를 특정 양만큼 오프셋시킬 수도 있다. 상기 논의된 바와 같이, 양자화 유닛 (54) 은 오프셋 값을 QP0 값에 적용할 수도 있으며, 여기서, QP0 값은 TU 를 포함한 현재 프레임 또는 슬라이스에 대해 시그널링된 양자화 파라미터이고, 그 오프셋은 TU 가 정방형인지 또는 비-정방형인지에 기초할 수도 있다. 예를 들어, QP0 값에 대한 상이한 오프셋들은 정방형 및 비-정방형 TU들을 위해 사용될 수도 있다. 일부 경우들에 있어서, QP0 값에 대한 어떠한 오프셋도 정방형 TU들을 위해 사용되지 않을 수도 있으며, QP0 값에 대한 선택된 오프셋이 비-정방형 TU 를 위해 사용될 수도 있다.
엔트로피 인코딩 유닛 (56) 은 스캐닝 패턴에 따라 매트릭스에 있어서 양자화된 변환 계수들을 스캐닝 및 엔트로피 코딩할 수도 있다. 일부 예들에 있어서, 엔트로피 인코딩 유닛 (56) 은, 예를 들어, HEVC 또는 다른 적절한 코딩 표준들의 기술들마다 종래의 스캔을 수행할 수도 있다. 일부 예들에 있어서, 본 개시의 기술들에 따르면, 엔트로피 인코딩 유닛 (56) 은, 스캔 패턴의 방향에 있어서 더 짧은 에지를 더 긴 에지에 조인시키는 코너에서 변환 유닛의 더 짧은 에지에서 시작하는 스캔 패턴을 이용하여 비-정방형 변환 유닛의 양자화된 변환 계수들을 스캐닝할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은, 좌측 에지가 상부 에지와 만나는 높이보다 더 긴 폭을 갖는 TU 의 좌측 에지에서 스캔을 시작할 수도 있다. 다른 예로서, 엔트로피 인코딩 유닛 (56) 은, 상부 에지가 좌측 에지와 만나는 폭보다 더 긴 높이를 갖는 TU 의 상부 에지에서 스캔을 시작할 수도 있다.
엔트로피 인코딩 유닛 (56) 은 또한, TU 가 정방형인지 또는 비-정방형인지에 기초하여 TU 의 양자화된 변환 계수들을 코딩하도록 구성될 수도 있다. 일반적으로, 엔트로피 인코딩 유닛 (56) 은, 각각의 계수에 대해, 계수가 제로보다 큰 절대값을 갖는지 여부 (즉, 계수가 유의한지 여부), 계수가 스캔 순서에 있어서 마지막 유의 계수인지 여부, 계수가 포지티브 또는 네거티브인 값을 갖는지 여부, 계수의 절대값이 1보다 큰지 여부, 계수의 절대값이 2보다 큰지 여부, 및 계수의 "레벨"의 값 (즉, 계수의 절대값 마이너스 3 으로서 코딩될 수도 있는 계수의 절대값) 을 나타내는 데이터 (즉, 신택스 엘리먼트들) 를 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 은, 그 값들이 추론될 수 있는 신택스 엘리먼트들의 인코딩을 스킵핑할 수도 있으며, 예를 들어, 계수가 유의성이 아닌 경우, 즉, 제로보다 큰 절대값을 갖지 않는 경우 계수가 2보다 큰 절대값을 갖는지를 나타내는 데이터의 인코딩을 스킵핑할 수도 있다.
일부 예들에 있어서, 엔트로피 인코딩 유닛 (56) 은 컨텍스트 적응식 이진 산술 코딩 (CABAC) 을 이용하여 계수들을 인코딩할 수도 있다. 일반적으로, CABAC 을 수행할 경우, 엔트로피 인코딩 유닛 (56) 은 컨텍스트 세트들 중 일 세트뿐 아니라 그 세트의 초기화 값을 선택하고, 코딩이 진행함에 따라 상태들 간을 천이한다. CABAC 를 수행하기 위해, 엔트로피 인코딩 유닛 (56) 은, 본 개시에서 설명된 CABAC 기술들에 따라 송신될 심볼들을 인코딩하기 위한 특정 컨텍스트에 적용하기 위해 컨텍스트 모델을 선택할 수도 있다. 컨텍스트는, 예를 들어, 이웃하는 값들이 비-제로인지 여부, 및 상기 설명된 기술들의 CABAC 양태들에 대하여 상기 설명된 다른 기준들 및/또는 데이터와 관련될 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한, 선택된 변환을 나타내는 신호와 같은 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 코딩 이후, 결과적인 인코딩된 비디오는 비디오 디코더 (30) 와 같은 다른 디바이스로 송신되거나 또는 추후 송신 또는 취출을 위해 아카이브될 수도 있다.
TU 는, 변환 계수들 각각이 페어 값 (X, Y) 을 이용하여 TU 에서 식별될 수 있도록 변환 계수들의 2차원 매트릭스로 고려될 수도 있으며, TU 내에서, X 는 수평 좌표에 대응하고 Y 는 수직 좌표에 대응한다. 마지막 유의 계수에 대한 신택스 엘리먼트들 (X, Y) (즉, 마지막 유의 계수의 X 좌표 및 마지막 유의 계수의 Y 좌표를 나타내는 신택스 엘리먼트들) 을 코딩할 경우, 엔트로피 인코딩 유닛 (56) 은 코딩되는 좌표의 측부의 길이에 기초하여 컨텍스트 세트를 선택할 수도 있다. 즉, X 컴포넌트를 코딩할 경우, 엔트로피 인코딩 유닛 (56) 은 TU 의 폭에 기초하여 컨텍스트를 선택할 수도 있지만, Y 컴포넌트를 코딩할 경우, 엔트로피 인코딩 유닛 (56) 은 TU 의 높이에 기초하여 컨텍스트를 선택할 수도 있다.
TU 에 대한 유의성 맵 (즉, 각각의 개별 계수가 유의한지 (비-제로인지) 여부를 나타내는 값들의 세트) 을 코딩할 경우, 엔트로피 인코딩 유닛 (56) 은, 폭들보다 큰 높이들 및 높이들보다 큰 폭들을 갖는 TU들에 대한 동일한 컨텍스트들을 본질적으로 사용할 수도 있다. 그렇게 하기 위해, 엔트로피 인코딩 유닛 (56) 은 직접 컨텍스트 결정을 이용하여 일부 TU들을 코딩할 수도 있으며, TU들의 좌표들을 트랜스포즈하고 그 후 컨텍스트들을 결정함으로써 다른 TU들을 코딩할 수도 있다. 예를 들어, (높이들보다는 더 긴 폭들을 갖는) 상대적으로 수평인 TU들에 대해, 엔트로피 인코딩 유닛 (56) 은 직접 컨텍스트 결정을 적용할 수도 있고, 여기서, 컨텍스트는 계수의 x 좌표 및 y 좌표에 기초하여 계수에 대해 선택되며, (폭들보다 더 긴 높이들을 갖는) 상대적으로 수직인 TU들에 대해, 엔트로피 인코딩 유닛 (56) 은 수직 TU들을 트랜스포즈하고 그 후 컨텍스트들을 결정할 수도 있고, 여기서, 컨텍스트는 트랜스포즈된 x 및 y 좌표들에 기초하여 계수에 대해 선택된다. 특히, 상대적으로 수직인 TU 에 있어서 각각의 계수의 x 및 y 좌표들은 트랜스포즈되어, 컨텍스트 선택을 목적으로, 오리지널 y 좌표가 트랜스포즈된 x 좌표로서 사용되고 오리지널 x 좌표가 트랜스포즈된 y 좌표로서 사용된다. 그 후, 상대적으로 수직인 TU 에 있어서 계수들 각각에 대한 트랜스포즈된 좌표들 [(x, y) -> (y, x)] 은, x 및 y 좌표들이 상대적으로 수평인 TU 에 대해 사용되는 동일한 방식으로 개별 계수들에 대한 컨텍스트를 선택하도록 사용된다.
일 예로서, 엔트로피 인코딩 유닛 (56) 은, HEVC 에서 설명된 바와 4x4 및 8x8 블록들에 대해 유사한 계수들의 위치에 기초한 유의성 맵에 대한 CABAC 컨텍스트들을 이용하여 8x4 및 4x8 TU들의 계수들을 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 상기 수학식 (1) 에 대하여 설명된 바와 같이 컨텍스트를 결정하도록 구성될 수도 있다. 즉, 엔트로피 인코딩 유닛 (56) 은 8x4 블록의 각 계수에 대한 컨텍스트를 CtxNum = Y + (X>>1) 로서 도출할 수도 있으며, 여기서, X 및 Y 는, 컨텍스트가 결정되는 개별 계수의 수평 및 수직 좌표들이다. 즉, 유의 계수 플래그와 같은, 계수의 신택스 엘리먼트를 코딩하기 위한 컨텍스트의 식별자는 계수의 X 좌표 및 Y 좌표에 기초할 수도 있다. 유사하게, 엔트로피 인코딩 유닛 (56) 은, 먼저 개별 계수의 X 좌표와 Y 좌표를 스와핑하고 그 후 CtxNum = Y + (X>>1) 을 수행함으로써 4x8 블록의 각 계수에 대한 컨텍스트를 도출할 수도 있다. 계수 레벨 코딩에 대해, 엔트로피 인코딩 유닛 (56) 은 TU 를, 스캔 순서에 있어서 16개의 연속적인 계수들로 분할할 수도 있다. 비-정방형 블록들의 코딩된 블록 플래그들을 코딩할 경우, 엔트로피 인코딩 유닛 (56) 은 상이한 세트의 컨텍스트들, 예를 들어, 대응하는 계수의 X 및 Y 좌표들에 기초하여 코딩된 블록 플래그들에 특히 대응하는 컨텍스트들을 이용할 수도 있다.
일부 경우들에 있어서, 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 또는 다른 유닛은, 엔트로피 코딩에 부가하여, 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 CU들 및 PU들에 대한 코딩된 블록 패턴 (CBP) 값들을 결정하도록 구성될 수도 있다. 또한, 일부 경우들에 있어서, 엔트로피 인코딩 유닛 (56) 은 계수들의 런 렝스 코딩을 수행할 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은, 예를 들어, 레퍼런스 블록으로서 추후 사용하기 위해 픽셀 도메인에서 잔여 블록을 복원하도록, 각각, 역양자화 및 역변환을 적용한다. 모션 보상 유닛 (44) 은 레퍼런스 프레임 버퍼 (64) 의 프레임들 중 하나의 예측 블록에 잔여 블록을 부가함으로써 레퍼런스 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한, 하나 이상의 보간 필터들을 복원된 잔여 블록에 적용하여, 모션 추정에서 사용하기 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 복원된 잔여 블록을, 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 가산하여, 레퍼런스 프레임 버퍼 (64) 로의 저장을 위한 복원된 비디오 블록을 생성한다.
그 후, 모드 선택 유닛 (40) 은 변환들을 적용한 결과를 분석하고 변환들 중 어느 변환이 비트스트림에서 시그널링되어야 하는지를 선택하여, 레이트 왜곡 분석 또는 최적화를 종종 수행하고 또한 상기에서 설명된 기술들의 변환 선택 양태들에 따라 다양한 변환들을 서로 비교할 수도 있다. 모드 선택 유닛 (40) 은 상기 설명된 재귀적 선택 프로세스를 구현하여 잔여 쿼드트리 변환 구조를 생성할 수도 있으며, 이 모드 선택 유닛 (40) 은 상기 설명된 신택스 엘리먼트들의 형태로 엔트로피 인코딩 유닛 (56) 에 전달할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성된 비디오 코더의 예를 나타낸다. 특히, 변환 유닛의 데이터를 코딩하기 위해, 비디오 인코더 (20) 는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하고, 잔여 데이터를 변환하여 변환 계수들을 생성하고, 변환 계수들을 양자화하며, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 인코딩하도록 구성될 수도 있으며, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하기 위해, 비디오 인코더 (20) 는 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 인코딩하도록 구성될 수도 있다. 부가적으로, 비디오 인코더 (20) 는 정방형 변환 유닛들을 이용하여 코딩 유닛을 코딩한 결과들을, 비-정방형 변환 유닛들을 이용하여 코딩 유닛을 코딩한 결과들과 비교하고, 그 비교에 기초하여 정방형 변환 유닛들 또는 비-정방형 변환 유닛들을 선택할 수도 있다.
도 3 은, 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 나타낸 블록 다이어그램이다. 도 3 의 예에 있어서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라-예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 레퍼런스 프레임 버퍼 (82), 및 합산기 (80) 를 포함한다. 일부 예들에 있어서, 비디오 디코더 (30) 는 비디오 인코더 (20)(도 2 참조) 에 대하여 설명된 인코딩 패스에 일반적으로 가역인 디코딩 패스를 수행할 수도 있다.
엔트로피 디코딩 유닛 (70) 은 인코딩된 비트스트림에 대한 엔트로피 디코딩 프로세스를 수행하여, 변환 계수들의 1차원 어레이를 취출한다. 사용된 엔트로피 디코딩 프로세스는 비디오 인코더 (20) 에 의해 사용된 엔트로피 코딩 (예를 들어, CABAC, CAVLC 등) 에 의존한다. 인코더에 의해 사용된 엔트로피 코딩 프로세스는 인코딩된 비트스트림에 시그널링될 수도 있거나, 미리결정된 프로세스일 수도 있다. 일반적으로, 엔트로피 디코딩 유닛 (70) 은 상기 설명된 기술들의 엔트로피 디코딩 양태들을, 엔트로피 인코딩 유닛 (56) 에 대하여 상기 설명된 것들과 가역인 방식으로 구현한다. 엔트로피 디코딩 유닛 (70) 은 또한, (도 2 및 도 3 에서 "인코딩된 비디오" 로서 표현되는) 비트스트림에서 특정된 신택스 엘리먼트를 디코딩하기 위해, 상기 설명된 기술들의 신택스 인코딩 양태에 일반적으로 가역인 기술들의 신택스 디코딩 양태들을 구현할 수도 있다.
일부 예들에 있어서, 엔트로피 디코딩 유닛 (70) (또는 역양자화 유닛 (76)) 은 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) (또는 양자화 유닛 (54)) 에 의해 사용된 스캐닝 모드를 미러링하는 스캔을 사용하여 수신된 값들을 스캐닝할 수도 있다. 이러한 의미에서, 엔트로피 디코딩 유닛 (70) 은 엔트로피 인코딩 유닛 (56) 에 대하여 상기 설명된 기술들의 스캐닝 양태들에 가역인 방식으로 그 기술들의 스캐닝 양태들을 구현할 수도 있다. 계수들의 스캐닝이 역양자화 유닛 (76) 에서 수행될 수도 있지만, 스캐닝은 엔트로피 디코딩 유닛 (70) 에 의해 수행되는 바와 같이 예시의 목적으로 설명될 것이다. 부가적으로, 비록 예시의 용이를 위해 별도의 기능 유닛들로서 도시되지만, 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70), 역양자화 유닛 (76), 및 다른 유닛들의 구조 및 기능은 서로 고도로 통합될 수도 있다.
역양자화 유닛 (76) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩되는 양자화된 변환 계수들을 역양자화, 즉, 양자화해제한다. 이러한 방식으로, 역양자화 유닛 (76) 은, 양자화 유닛 (54) 에 대하여 상기 설명된 기술들의 양자화 양태들에 일반적으로 가역인, 본 명세서에서 설명된 기술들의 역양자화 양태를 구현할 수도 있다. 더욱이, 역양자화 유닛 (76) 은, 비디오 인코더 (20) 의 역양자화 유닛 (58) 에 의해 구현된 바와 실질적으로 동일한 양태들의 기술들을 구현할 수도 있다. 역양자화 프로세스는 예를 들어, HEVC 에 대해 제안되거나 H.264 디코딩 표준에 의해 정의된 프로세스들과 유사한 종래의 프로세스를 포함할 수도 있다. 역양자화 프로세스는 CU 에 대해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터 (QP) 의 이용을 포함하여, 적용되어야 하는 양자화의 정도 및 유사하게 역양자화의 정도를 결정할 수도 있다. 역양자화 유닛 (76) 은, 계수들이 1차원 어레이로부터 2차원 어레이로 변환되기 전 또는 그 이후에 변환 계수들을 역양자화할 수도 있다.
역변환 유닛 (78) 은 역양자화된 변환 계수들에 역변환을 적용한다. 일부 예들에 있어서, 역변환 유닛 (78) 은 비디오 인코더 (20) 로부터의 시그널링에 기초하여, 또는 블록 사이즈, 코딩 모드 등과 같은 하나 이상의 코딩 특성들로부터 변환을 추정함으로써, 역변환을 결정할 수도 있다. 일부 예들에 있어서, 역변환 유닛 (78) 은 현재 블록을 포함한 LCU 에 대한 쿼드트리의 루트 노드에서의 시그널링된 변환에 기초하여 현재 블록에 적용하기 위한 변환을 결정할 수도 있다. 대안적으로, 변환은 LCU 쿼드트리에서의 리프-노드 CU 에 대한 TU 쿼드트리의 루트에서 시그널링될 수도 있다. 일부 예들에 있어서, 역변환 유닛 (78) 은 캐스케이드형 역변환을 적용할 수도 있으며, 여기서, 역변환 유닛 (78) 은 디코딩되는 현재 블록의 변환 계수들에 2 이상의 역변환들을 적용한다. 역변환 유닛 (78) 은, 변환 프로세싱 유닛 (52) 에 대하여 상기 설명된 비-정방형 변환들의 적용에 일반적으로 가역인 방식으로 하나 이상의 비-정방형 역변환들을 적용할 수도 있다.
이러한 방식으로, 역변환 유닛 (78) 은, 변환 프로세싱 유닛 (52) 에 대하여 상기 설명된 기술들의 비-정방형 변환 양태들에 일반적으로 가역인, 본 명세서에서 설명된 기술들의 비-정방형 변환 양태를 구현할 수도 있다. 더욱이, 역변환 유닛 (78) 은, 비디오 인코더 (20) 의 역변환 유닛 (60) 에 의해 구현된 바와 실질적으로 동일한 양태들의 기술들을 구현할 수도 있다.
인트라-예측 유닛 (74) 은 현재 프레임의 이전에 디코딩된 블록들로부터의 데이터 및 시그널링된 인트라-예측 모드에 기초하여 현재 프레임의 현재 블록에 대한 예측 데이터를 생성할 수도 있다.
한편, 모션 보상 유닛 (44) 은 모션 벡터, 레퍼런스 프레임 인덱스, 및 모션 방향과 같은 모션 정보를 나타내는 신택스 데이터를 수신할 수도 있다. 취출된 모션 예측 방향, 레퍼런스 프레임 인덱스, 및 계산된 현재 모션 벡터 (예를 들어, 병합 모드에 따라 이웃하는 블록으로부터 카피된 모션 벡터) 에 기초하여, 모션 보상 유닛은 인터-예측에 대하여 현재 부분에 대한 모션 보상된 블록을 생성한다. 이들 모션 보상된 블록들은 본질적으로, 잔여 데이터를 생성하는데 사용되는 예측 블록을 재현한다.
모션 보상 유닛 (72) 은 모션 보상된 블록들을 생성하여, 가능하게는 보간 필터들에 기초하여 보간을 수행할 수도 있다. 서브-픽셀 정밀도를 갖는 모션 추정에 사용될 보간 필터들에 대한 식별자들이 신택스 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 사용된 바와 같은 보간 필터들을 이용하여, 레퍼런스 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 모션 보상 유닛 (72) 은 수신된 신택스 정보에 따라 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 결정하고, 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
부가적으로, HEVC 예에 있어서, 모션 보상 유닛 (72) 및 인트라-예측 유닛 (74) 은 (예를 들어, 쿼드트리에 의해 제공된) 신택스 정보 중 일부를 이용하여, 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는데 사용된 LCU들의 사이즈들을 결정할 수도 있다. 모션 보상 유닛 (72) 및 인트라-예측 유닛 (74) 은 또한 신택스 정보를 이용하여, 인코딩된 비디오 시퀀스의 프레임의 각각의 CU 가 어떻게 분할되는지 (유사하게, 서브-CU들이 어떻게 분할되는지) 를 기술하는 분할 정보를 결정할 수도 있다. 신택스 정보는 또한, 각각의 분할물이 어떻게 인코딩되는지를 나타내는 모드들 (예를 들어, 인트라- 또는 인터-예측, 및 인트라-예측에 대해 인트라-예측 인코딩 모드), 각각의 인터-인코딩된 PU 에 대한 하나 이상의 레퍼런스 프레임들 (및/또는 레퍼런스 프레임들에 대한 식별자들을 포함하는 레퍼런스 리스트들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 포함할 수도 있다.
합산기 (80) 는 모션 보상 유닛 (72) 또는 인트라-예측 유닛 (74) 에 의해 발생된 대응하는 예측 블록들과 잔여 블록들을 결합하여, 디코딩된 블록들을 형성한다. 비디오 디코더 (30) 는 또한, 디-블록킹 필터를 적용하는 디-블록킹 유닛을 포함할 수도 있다. 이 필터는 블록키니스 아티팩트들을 제거하기 위해, 디코딩된 블록들을 필터링하는데 적용될 수도 있다. 그 후, 디코딩된 비디오 블록들이 레퍼런스 프레임 버퍼 (82) 에 저장되며, 그 레퍼런스 프레임 버퍼는 후속 모션 보상을 위한 레퍼런스 블록들을 제공하고 또한 (도 1 의 디스플레이 디바이스 (32) 와 같은) 디스플레이 디바이스 상으로의 제시를 위해 디코딩된 비디오를 생성한다.
이러한 방식으로, 비디오 디코더 (30) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하고, 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하도록 구성된 비디오 코더의 예를 나타낸다. 특히, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하기 위해, 비디오 디코더 (30) 는, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 디코딩하도록 구성될 수도 있으며, 변환 유닛의 데이터를 코딩하기 위해, 비디오 디코더 (30) 는, 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 디코딩하고, 양자화된 변환 계수들을 역양자화하며, 변환 계수들을 역변환하여 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하도록 구성될 수도 있다.
도 4 는, 상이한 사이즈들을 갖는 PU들로 분할되는 코딩 유닛(CU)들 (100A-100D) 의 개념 다이어그램이다. 사이즈 2Nx2N 인 CU 는 CU들 (100A-100D) 의 파티셔닝 방법들 중 하나에 따라 분할될 수도 있다. CU (100A) 는 사이즈 2Nx2N 인 PU 를 포함하고, 따라서, CU (100A) 의 PU 는 CU (100A) 와 동일한 사이즈이다. CU (100B) 는 사이즈 Nx2N 인 2개의 PU들로 분할된다. CU (100C) 는 사이즈 2NxN 인 2개의 PU들로 분할된다. CU (100D) 는 사이즈 NxN 인 4개의 PU들로 분할된다. 이들 예들 각각에 있어서, CU들은 리프 노드 CU들인 것으로 가정된다.
본 개시의 기술들에 따르면, CU들 (100A-100D) 에 대한 TU들은 정방형 또는 비-정방형일 수도 있다. 일부 예들에 있어서, 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 가 대응하는 PU들과 동일한 사이즈를 갖는 TU들을 이용하도록 구성된 경우, CU들 (100B 및 100C) 에 대한 TU들은 비-정방형인 것으로 가정될 수도 있지만, CU들 (100A 및 100D) 에 대한 TU들은 정방형인 것으로 가정될 수도 있다. 다른 예들에 있어서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오직 CU들 (100A 및 100D) 에 대해 정방형 TU들만을 이용하지만 CU들 (100B 및 100C) 에 대해 정방형 TU들을 이용할지 또는 비-정방형 TU들을 이용할지를 결정하도록 구성될 수도 있다.
도 5 는 예시적인 잔여 쿼드트리 변환 구조 (110) 를 나타낸 개념 다이어그램이다. 도 5 의 예에 있어서, 구조 (110) 는, 사이즈 2Nx2N 인 외부 박스인 루트 레벨을 포함하고, 이 외부 박스는 4개의 NxN 서브-블록들 (112A, 112B, 112C, 및 112D) 로 분할되었다. 구조 (110) 의 서브-블록 (112B) 은 사이즈 N/2xN/2 인 4개의 서브-부분들로 추가로 세분되었으며, 이는, 사이즈 N/2xN/2 인 변환들이 사이즈 NxN 의 변환을 서브-부분 (112B) 에 적용하기 위해 달성된 결과보다 더 우수한 결과를 생성하도록 결정되었을 수도 있음을 의미한다. 서브-부분들 (112A, 112C, 및 112D) 에 대하여, 사이즈 N/2xN/2 인 4개의 서브-부분들로의 이들 부분들의 추가적인 세분은, 비디오 인코더가 부분들 (112A, 112C, 및 112D) 의 서브-부분들에 적용된 경우 사이즈 N/2xN/2 인 변환에 걸친 사이즈 NxN 인 변환을 선택하였기 때문에, 더 우수한 결과를 생성하지 않을 수도 있다. 부가적으로, 비디오 인코더가 서브-부분들 (112A, 112B, 112C, 및 112D) 에 적용된 사이즈 NxN 인 변환들을 선택했음을 고려하면, 루트 레벨에 적용된 사이즈 2Nx2N 인 변환은 도 5 의 예에 있어서 더 우수한 결과를 생성하지 않았다.
RQT 구조 (110) 의 예가 도 5 의 예에 있어서 정방형-형상 TU들을 예시하지만, RQT 구조는 또한, 본 개시의 기술들에 따른, 비-정방형 형상 TU들을 포함할 수도 있다. 그러한 RQT 구조들의 예들은 하기에 도 8 및 도 9 에 대하여 설명된다.
도 6a 및 도 6b 는 본 개시에서 설명된 특정 기술들에 따른 웨이브프론트 스캐닝을 나타낸 개념 다이어그램들이다. 도 6a 의 예에 있어서, 사이즈 2NxN 인 변환 계수들의 비-정방형 블록 (120) 은, 비디오 코더에 의해, 최단 에지에서 시작하여 좌하측으로부터 우상측으로 스캐닝되며, 이 최단 에지는 변환 계수들의 비-정방형 블록 (120) 의 최좌측 에지이다. 높이가 폭보다 더 작기 때문에, 비디오 코더는 이들 계수들을, 변환 계수들의 비-정방형 블록 (120) 의 최좌측 경계로부터 스캐닝한다. 예를 들어, 비디오 인코더 (20) 는, 좌상측 코너에서 시작하여 비-정방형 변환 유닛의 더 짧은 에지의 위치에 의존하여, 엔트로피 인코딩 동안 도 6a 또는 도 6b 에 도시된 순서로 비-정방형 변환 유닛의 양자화된 변환 계수들을 스캐닝할 수도 있다. 다른 예로서, 비디오 디코더 (30) 는 변환 계수들을 엔트로피 디코딩하고, 그 후, 디코딩된 변환 계수들을 변환 계수들의 비-정방형 블록 (120) 의 대응하는 위치들에 배치할 수도 있다.
도 6b 의 예에 있어서, 변환 계수들의 비-정방형 블록 (122) 은, 비디오 코더에 의해, 최단 에지에서 시작하여 우상측으로부터 좌하측으로 스캐닝되며, 이 최단 에지는 변환 계수들의 비-정방형 블록 (122) 의 최상측 에지이다. 폭이 높이보다 더 작기 때문에, 비디오 코더는 이들 계수들을, 변환 계수들의 비-정방형 블록 (122) 의 최상측 경계로부터 스캐닝한다. 예를 들어, 비디오 인코더 (20) 는, 엔트로피 인코딩 동안 도시된 순서로 양자화된 변환 계수들을 스캐닝할 수도 있다. 다른 예로서, 비디오 디코더 (30) 는 변환 계수들을 엔트로피 디코딩하고, 그 후, 디코딩된 변환 계수들을 변환 계수들의 비-정방형 블록 (122) 의 대응하는 위치들에 배치할 수도 있다.
도 7a 는 하나 이상의 예측 블록들 (예를 들어, PU들) 로의 블록 (예를 들어, CU) 에 대한 다양한 파티셔닝 모드들을 나타낸 개념 다이어그램이다. 특히, 블록 (130) 은, 예측 블록이 현재 블록과 동일한 사이즈인 예를 나타낸 것이다. 따라서, 블록 (130) 은, 대응하는 CU 와 동일한 사이즈인 PU 를 나타낼 수도 있다. 블록 (132) 은 2Nx2N 픽셀들의 사이즈를 갖는다고 지칭되고 NxN 예측 블록들로 파티셔닝될 수도 있다. 즉, 블록 (132) 은 4개의 정방형의 비-중첩 블록들로 파티셔닝되며, 그 각각은 부모 블록의 대응하는 코너와 접하는 정확하게 하나의 코너를 갖는다.
블록들 (134 및 136) 은 단거리 인트라 예측 (SDIP) 에 따라 파티셔닝된 블록들의 예들을 나타낸 것이다. SDIP 는, 2개의 새로운 파티션 유닛 타입들 : 2NxhN 및 hNx2N 을 도입하는 인트라-코딩 기술이다. 2NxhN 파티션 (예를 들어, 블록 134) 에 대해, CU 는 4개의 2NxhN PU들을 갖고, hNx2N (예를 들어, 블록 136) 에 대해, CU 는 4개의 hNx2N PU들을 갖는다. 각각의 PU 는 그 자신의 인트라 예측 모드 (예를 들어, 도 4 에 도시된 35개의 모드들 중 하나) 를 가질 수도 있다. 도 7a 는 블록들 (134 및 136) 의 SDIP 파티션들이 대칭임을 예시한다. 블록 (134) 에 대해, SDIP 파티션들은 수평축 주위로 대칭이지만, 블록 (136) 에 대해, SDIP 파티션들은 수직축 주위로 대칭이다. 이에 따라, 블록들 (134 및 136) 은, 비-정방형 TU들이 본 개시의 기술들에 따라 제공될 수도 있는 비-정방형 PU들을 포함하는 블록들의 예들을 나타낸다. 본 개시의 기술들에 따르면, 비디오 인코더 (20) 및 비디오 디코더 (30) 와 같은 비디오 코더들은 CU들 (134 및 136) 과 같이 SDIP PU들로 파티셔닝된 CU들에 비-정방형 변환들을 적용하도록 구성될 수도 있다.
도 7b 는 비대칭 파티션들로 파티셔닝된 블록들 (140-146) 의 다양한 예들을 나타낸 개념 다이어그램이다. 도 7b 의 예에 있어서, 각각의 블록 (140-146) 은 2개의 직사각형들로 파티셔닝되고, 여기서, 블록들 (140-146) 각각은 원래 2Nx2N 블록이다. 하나의 직사각형은 N/2 픽셀들의 치수 (즉, 길이 또는 폭) 를 갖고, 다른 직사각형은 3N/2 픽셀들의 동일한 치수를 갖는다. 비대칭 파티셔닝은 인터-예측에 대한 비대칭 모션 파티셔닝 (AMP) 또는 인트라-예측에 대한 비대칭 단거리 인트라-예측 (SDIP) 으로부터 기인할 수도 있다.
이 예에 있어서, 블록들 (140, 142, 144, 및 146) 각각은 64x64 픽셀 블록이지만, 다른 사이즈들의 블록들 (예를 들어, 32x32, 16x16, 128x128 등등) 이 또한 유사한 방식으로 파티셔닝될 수도 있다. 블록 (140) 은 수직 에지 (150A) 에 의해 2개의 PU들 - 하나의 (1/2N)*2N PU (152A) 및 하나의 (3/2N)*2N PU (154A) - 로 수평으로 분할된다. 블록 (142) 은 수직 에지 (150B) 에 의해 2개의 PU들 - 하나의 (3/2N)*2N PU (154B) 및 하나의 (1/2N)*2N PU (152B) - 로 수평으로 분할된다. 블록 (144) 은 수평 에지 (150C) 에 의해 2개의 PU들 - 하나의 2N*(3/2N) PU (154C) 및 하나의 2N*(1/2N) PU (152C) - 로 수직으로 분할된다. 블록 (146) 은 수평 에지 (150D) 에 의해 2개의 PU들 - 하나의 2N*(1/2N) PU (152D) 및 하나의 2N*(3/2N) PU (154D) - 로 수직으로 분할된다. 이러한 방식으로, 도 7b 의 PU들 (152, 154) 은 비대칭으로서 지칭될 수도 있다. 게다가, 도 7b 의 PU들 (152, 154) 은 다양한 예들에 있어서, 비대칭 모션 파티셔닝 또는 비대칭 SDIP 파티셔닝으로부터 기인할 수도 있다. 본 개시의 기술들에 따르면, 비디오 인코더 (20) 및 비디오 디코더 (30) 와 같은 비디오 코더들은 CU들 (140, 142, 144, 및 146) 과 같이 비대칭 PU들로 파티셔닝된 CU들에 비-정방형 변환들을 적용하도록 구성될 수도 있다.
도 8 은 비-정방형 변환 유닛들을 표현하기 위한 예시적인 파티셔닝 구조를 나타낸 개념 다이어그램이다. 파티셔닝 구조는 잔여 쿼드트리 (RQT) 에 대응할 수도 있다. 일반적으로, RQT 는 상기 논의된 바와 같이 다양한 레벨들을 가질 수도 있다. 도 8 의 예에 있어서, RQT 의 레벨 0 에 대응하는 TU들은 루트 노드 (160A) 와 같은 정방형 형상 또는 루트 노드 (160B) 와 같은 비-정방형 형상을 가질 수도 있으며, 이 루트 노드 (160B) 는 2개의 비-정방형 변환 유닛들 (162A 및 162B) 로 분할된다.
이 예에 있어서, CU 의 TU 가 2Nx2N 의 사이즈를 가짐을 나타내기 위해, 비디오 코더는 TU 가 RQT 의 레벨 0 에 대응함을 나타내는 값을 코딩하고, 추가로, TU 가 루트 노드 (160A) 의 형상과 유사한 형상에 대응함을 나타내는 변환 선택 플래그를 코딩할 수도 있다. 한편, CU 가 비-정방형 TU들을 포함함을 나타내기 위해, 비디오 코더는 TU 가 RQT 의 레벨 0 에 대응함을 나타내는 값을 코딩하고, TU들이 루트 노드 (160B) 의 변환 유닛들 (162A, 162B) 의 형상과 유사한 형상들에 대응함을 나타내는 변환 선택 플래그를 코딩할 수도 있다. 일부 예들에 있어서, 비디오 코더들은 추가로, 대응하는 CU 에 대한 PU들에 기초하여 TU들 (162A, 162B) 이 폭보다 더 긴 높이를 갖는지를 결정할 수도 있거나, 길이가 폭보다 더 긴지를 나타내는 데이터를 코딩할 수도 있다.
도 8 에 도시된 RQT 의 레벨 1 에 대응하는 노드 (166) 의 TU들 (164A-164D) (또한 자식 변환 유닛으로서도 지칭됨) 은 NxN 의 사이즈를 가지며, 따라서, 정방형 형상을 또한 갖는다. 이에 따라, 비디오 코더는 CU 의 TU들이 도 8 의 RQT 의 레벨 1 에 대응함을 나타내는 값을 코딩하여, TU들이 NxN 의 사이즈를 가짐을 나타낼 수도 있다. 오직 NxN TU들만이 레벨 1 이기 때문에, 이 예에 있어서, TU들의 사이즈 및 형상을 나타내기 위해 어떠한 추가 정보도 코딩될 필요가 없다. 예를 들어, 오직 레벨 1 만이 이 예에 있어서 TU 사이즈 및 형상에 대한 하나의 옵션을 포함하기 때문에, TU들이 RQT 의 레벨 1 에 대응할 경우, 비디오 코더는 변환 선택 플래그를 코딩할 필요가 없다.
일부 예들에 있어서, 비디오 인코더 (20) 는, TU들 (164A-164D) 에 대응하는 사이즈들을 갖는 TU 들을 사용하는 다양한 예들에 있어서, (하나 이상의 정방형 또는 비-정방형 PU들로 파티셔닝될 수도 있는) CU 의 제 1 코딩 패스를 수행할 수도 있다. 비디오 인코더 (20) 는 이러한 제 1 코딩 패스로부터 기인한 성능 메트릭들을 분석할 수도 있으며, 후속적으로, TU들 (162A 및 162B) 에 대응하는 TU들 (또는, 관련 예들에 있어서, 수평으로 배향된 비-정방형 TU들) 을 사용하여 CU 의 제 2 코딩 패스를 수행할 수도 있다. 그 후, 비디오 인코더 (20) 는 이러한 제 2 코딩 패스로부터 기인하는 성능 메트릭들을 분석하고, 제 1 코딩 패스로부터 기인한 메트릭들을 제 2 코딩 패스로부터 기인한 메트릭들과 비교할 수도 있다. 제 1 코딩 패스로부터의 메트릭들이 더 우수하면, 비디오 인코더 (20) 는 TU들 (164A-164D) 에 대응하는 사이즈들을 갖는 TU들을 선택할 수도 있다.
한편, 제 2 코딩 패스로부터의 메트릭들이 더 우수하면, 비디오 인코더 (20) 는 루트 노드 (160A) 에 대응하는 사이즈를 갖는 TU 를 사용하여 제 3 코딩 패스를 수행하고, 이 제 3 코딩 패스로부터 기인한 메트릭들을 분석할 수도 있다. 더욱이, 비디오 인코더 (20) 는 제 3 코딩 패스로부터의 메트릭들을 제 2 코딩 패스로부터의 메트릭들과 비교할 수도 있다. 제 2 코딩 패스로부터의 메트릭들이 더 우수하면, 비디오 인코더 (20) 는 TU들 (162A, 162B) 에 대응하는 사이즈들을 갖는 TU들을 선택할 수도 있다. 한편, 제 3 코딩 패스로부터의 메트릭들이 더 우수하면, 비디오 인코더 (20) 는 루트 노드 (160A) 에 대응하는 사이즈를 갖는 TU 를 선택할 수도 있다.
도 9 는 비-정방형 변환 유닛들을 표현하기 위한 다른 예시적인 파티셔닝 구조를 나타낸 개념 다이어그램이다. 이 예에 있어서, RQT 의 레벨 0 에 대응하는 루트 노드 (170) 는 2Nx2N 의 사이즈를 갖는다. RQT 의 레벨 1 에 대응하는 노드 (172) 는 2NxN 의 사이즈들을 갖는 2개의 TU들 (174A, 174B) (또한, 자식 변환 유닛들로 지칭됨) 을 포함한다. RQT 의 레벨 2 에 대응하는 노드 (176) 는 사이즈 NxN 인 4개의 TU들 (178A-178D) 을 포함한다.
이 예에 있어서, 비디오 코더는 CU 의 TU들이 RQT 의 레벨 0, 1, 또는 2 에 대응하는지를 나타내는 정보를 코딩할 수도 있다. 이 예에 있어서, CU 의 TU들이 레벨 0 또는 2 에 대응할 경우, TU들은 정방형이지만, TU들이 레벨 1 에 대응할 경우, TU들은 비-정방형이다. 비-정방형 TU들이 폭들보다 더 긴 높이들을 갖는지를 나타내기 위해 부가 정보가 코딩될 수도 있거나, 또는 이는, CU 의 PU들이 폭들보다 더 긴 높이들을 갖는지와 같은 다른 정보에 기초하여 결정될 수도 있다.
비디오 인코더 (20) 는, 도 8 에 대하여 설명된 것과 실질적으로 부합하는 방식으로, 도 9 의 예시적인 RQT 의 레벨 0, 1, 또는 2 에 대응하는 TU들을 사용할지를 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 레벨 2 의 TU들을 사용한 결과들을 레벨 1 의 TU들을 사용한 결과들과 비교하고, 레벨 1 의 TU들을 사용한 결과들이 더 우수하면, 레벨 0 의 TU들을 사용한 결과들을 레벨 1 의 TU들을 사용한 결과들과 비교할 수도 있다. 비디오 인코더 (20) 는 이들 결과들에 기초하여 TU 사이즈들을 선택할 수도 있다. 비디오 인코더 (20) 는 선택된 TU 사이즈들 및 형상들을 나타내는 정보를 코딩할 수도 있고, 비디오 디코더 (30) 는 그러한 정보를 디코딩하여, TU 사이즈들 및 형상들을 결정할 수도 있다.
도 10a 는, CU 가 정방형 TU 를 포함하는지 또는 비-정방형 TU 를 포함하는지를 시그널링하기 위한 예시적인 시그널링 데이터를 나타낸 개념 다이어그램이다. 이 예에 있어서, 시그널링 데이터는 분할 플래그 (180), 변환 선택 (TS) 플래그 (182), 루미넌스 코딩된 블록 플래그 (루마 CBF) (184), 청 색조 크로미넌스 CBF (크로마-u CBF) (186), 및 적 색조 크로미넌스 CBF (크로마-v CBF) (188) 를 포함한다. 분할 플래그 (180) 는, 루트 레벨 변환이 채택되는지 또는 더 작은 변환이 사용되는지를 나타낼 수도 있다. 예를 들어, 분할 플래그 (180) 는 루트 노드 TU 사이즈가 사용됨을 나타내기 위한 제 1 값 (예를 들어, 0), 및 루트 노드 TU 가 더 작은 TU들로 분할됨을 나타내기 위한 제 2 값 (예를 들어, 1) 을 가질 수도 있다. 따라서, 도 10a 의 시그널링 데이터는 도 8 에서 도시된 바와 같은 RQT 에 대응할 수도 있다.
TS 플래그 (182) 는, 소정의 CU 에 대해 정방형 변환 유닛들이 사용되는지 또는 비-정방형 변환 유닛들이 사용되는지를 나타내는 값을 가질 수도 있다. 예를 들어, 루트 레벨 TU 가 사용됨을 분할 플래그 (180) 가 나타낼 경우, TS 플래그 (182) 는, 루트 레벨 TU 가 정방형 (예를 들어, 2Nx2N) 인지 또는 비-정방형 (예를 들어, 2NxN 또는 Nx2N) 인지를 나타낼 수도 있다. 따라서, 도 8 의 예에 대하여, 분할 플래그 (180) 는 리프 노드 CU 가 레벨 0 의 TU들을 가짐을 나타내기 위해 0 의 값으로 설정될 수도 있으며; TS 플래그 (182) 에 대한 0 의 값은 CU 가 루트 노드 (160A) 에 대응하는 TU 를 가짐을 나타낼 수도 있고, TS 플래그 (182) 에 대한 1 의 값은 CU 가 TU들 (162A, 162B) 에 대응하는 2개의 TU들을 가짐을 나타낼 수도 있다. TS 플래그 (182) 는, 일부 예들에 있어서, RQT 의 더 높은 레벨 (예를 들어, 레벨 1) 이 사용됨을 분할 플래그 (180) 가 나타낼 경우에 코딩될 필요가 없다.
각각의 CU 는 3개의 상이한 컴포넌트들 - 휘도 값들을 나타내는 루미넌스 컴포넌트 및 컬러 값들 (예를 들어, 청 및 적 색조들) 을 나타내는 2개의 크로미넌스 컴포넌트들 - 에 대한 TU들을 포함할 수도 있다. 다양한 컴포넌트들에 대한 TU들은 각각 동일한 방식으로 분할될 수도 있으며, 따라서, 모두가 RQT 에 대한 데이터에 의해 표시된 바와 같은 정방형 또는 비-정방형일 수도 있다. 더욱이, 루마 CBF (184) 는, 루미넌스 컴포넌트에 대한 TU 의 적어도 하나의 계수가 비-제로인지, 즉, 유의한지를 나타내는 값을 가질 수도 있다. TU 는, TU 의 적어도 하나의 비-제로 계수가 존재할 경우, 즉, 적어도 하나의 유의 계수가 존재할 경우 "코딩"되는 것으로 지칭된다. 유사하게, 크로마-U CBF (186) 는 제 1 크로미넌스 컴포넌트 (예를 들어, 청 색조 크로마 컴포넌트) 에 대한 TU 의 적어도 하나의 계수가 비-제로인지를 나타낼 수도 있지만, 크로마-V CBF (188) 는 제 2 크로미넌스 컴포넌트 (예를 들어, 적 색조 크로마 컴포넌트) 에 대한 TU 의 적어도 하나의 계수가 비-제로인지를 나타낼 수도 있다.
일부 예들에 있어서, TU들이 비-정방형 형상을 가짐을 TS 플래그 (182) 가 나타낼 경우, 다중의 CBF들이 각각의 컴포넌트에 대해 코딩될 수도 있다. 예를 들어, 비-정방형 TU들 (162A, 162B; 도 8) 에 대해, 2개의 CBF들이 각각의 컴포넌트 (CBF-Y0 및 CBF-Y1, CBF-U0 및 CBF-U1, 그리고 CBF-V0 및 CBF-V1) 에 대해 코딩될 수도 있다.
도 10b 는, CU 가 정방형 TU 를 포함하는지 또는 비-정방형 TU 를 포함하는지를 시그널링하기 위한 시그널링 데이터의 대안적인 예를 나타낸 개념 다이어그램이다. 분할 플래그 (190) 는 실질적으로 분할 플래그 (180; 도 10a) 에 부합할 수도 있다. TS 플래그 (192) 는 실질적으로 변환 선택 플래그 (182; 도 10a) 에 대응할 수도 있다. 하지만, 이 예에 있어서, TS 플래그 (192) 는, RQT 의 더 높은 레벨들이 사용되도록, 오직 루트 노드 TU 가 분할됨을 분할 플래그 (190) 가 나타낼 경우에만 코딩될 필요가 있다. 따라서, 도 10b 의 시그널링 데이터는 도 9 에서 도시된 바와 같은 RQT 에 대응할 수도 있다.
부가적으로, 도 10b 의 시그널링 데이터는 CBFYY 플래그 (194) 를 포함한다. CBFYY 플래그 (194) 는 대응하는 TU 가 정방형일 경우에 단일의 CBF-Y 플래그를 나타내거나, 또는 비-정방형 대응 루마 TU들의 2개의 CBF-Y 플래그들을 나타낼 수도 있다. Y0 및 Y1 으로서 지칭되는 비-정방형 루마 TU들에 대해, CBFYY 플래그 (194) 는 CBF-Y0 및 CBF-Y1 플래그들의 OR 을 나타내는 값을 가질 수도 있다. 따라서, TU들 (Y0 및 Y1) 중 어느 하나 또는 그 양자가 비-제로 계수를 가지면, CBFYY 플래그 (194) 는, TU들 (Y0 및 Y1) 중 적어도 하나가 비-제로 계수를 가짐을 나타내는 값을 가질 수도 있다. 이에 따라, TU들 (Y0 및 Y1) 중 어느 것이 비-제로 계수를 갖는지를 나타내기 위해, 값들이 CBFY0 플래그 (196) 및 CBFY1 플래그 (198) 에 대해 코딩될 수도 있다. CBFY0 플래그 (196) 는 TU (Y0) 가 비-제로 계수를 갖는지를 나타낼 수도 있지만, CBFY1 플래그 (198) 는 TU (Y1) 가 비-제로 계수를 갖는지를 나타낼 수도 있다. 한편, TU들 (Y0 및 Y1) 양자가 모두 제로 값의 계수들을 가지면, CBFY0 플래그 (196) 및 CBFY1 플래그 (198) 는 명시적으로 코딩될 필요가 없지만, CBFYY 플래그 (194) 로부터 추론되어, TU들 (Y0 및 Y1) 각각이 모두 제로 값의 계수들을 가짐을 나타낼 수도 있다.
유사하게, CBFUV 플래그 (200) 는, 대응하는 TU들에 대한 CBF-U 및 CBF-V 플래그들의 OR 을 나타낼 수도 있다. 즉, CBFUV 플래그 (200) 는, 크로마-U TU 및 크로마-V TU 중 적어도 하나가 비-제로 값의 계수를 갖는지를 나타낼 수도 있다. 크로마-U TU 및 크로마-V TU 중 적어도 하나가 비-제로 값의 계수를 가짐을 CBFUV 플래그 (200) 가 나타낼 경우, CBF-U 플래그 (202) 는 크로마-U TU 가 비-제로 계수를 갖는지를 나타내도록 코딩될 수도 있고, CBF-V 플래그 (204) 는 크로마-V TU 가 비-제로 계수를 갖는지를 나타내도록 코딩될 수도 있다. CBF-U 플래그 (202) 및 CBF-V 플래그 (204) 는, 크로마-U TU 및 크로마-V TU 가 모두 제로 값의 계수들을 가짐을 CBFUV 플래그 (200) 가 나타낼 경우 코딩될 필요가 없다. 일부 예들에 있어서, TU 가 분할됨을 분할 플래그 (190) 가 나타낼 경우 크로미넌스 컴포넌트들에 대해 부가적인 플래그들, 예를 들어, U1, U2, V1, 및 V2 에 대한 CBFU 플래그들이 제공될 수도 있다.
일부 예들에 있어서, 분할 플래그 (190), CBFYY 플래그 (194), 및 CBF UV 플래그는, 예를 들어, VLC, 콜롬 코딩, 유너리 코딩, 런-렝스 코딩, 또는 다른 조인트 코딩 방법들을 이용하여 조인트하게 코딩될 수도 있다. 이러한 조인트 코딩은 상이한 플래그들 간의 상관을 이용할 수도 있다.
도 11 은 정방형 또는 비-정방형 변환 유닛들을 이용하여 비디오 데이터를 인코딩하는 예시적인 방법을 나타낸 플로우차트이다. 도 11 의 방법은, 예 및 설명의 목적들로, 비디오 인코더 (20) 에 대하여 설명된다. 하지만, 다른 비디오 코딩 디바이스들이 유사한 방법을 수행하도록 구성될 수도 있음을 이해해야 한다. 방법의 단계들은 반드시 도시된 순서로 수행되어야 할 필요는 없으며, 특정 단계들은 순차적이기 보다는 병렬로 수행될 수도 있다.
처음에, 비디오 인코더 (20) 는 현재 코딩 유닛에 대한 하나 이상의 예측 유닛들을 결정할 수도 있다 (250). 예를 들어, 비디오 인코더 (20) 는 수개의 코딩 패스들을 수행하여, 코딩 유닛을 하나 이상의 예측 유닛(PU)들로 파티셔닝하기 위한 파티셔닝 방법을 결정할 수도 있다. PU들은 정방형 또는 비-정방형일 수도 있다. 예를 들어, 2Nx2N CU 에 대해, 예를 들어, 종래의 파티셔닝, 비대칭 모션 파티셔닝, 단거리 인트라 예측 파티셔닝 또는 비대칭 단거리 인트라 예측 파티셔닝의 결과로서, 2Nx2N PU, 2NxN PU들, Nx2N PU들, 2NxN/2 PU들, N/2x2N PU들, 2NxnU PU들, 2NxnD PU들, nLx2N PU들, nRx2N PU들 또는 다른 사이즈들의 PU들이 존재할 수도 있다.
임의의 경우에 있어서, 비디오 인코더 (20) 는 또한 코딩 유닛에 대한 잔여 데이터를 계산할 수도 있다 (252). 즉, PU들을 형성한 이후, 비디오 인코더 (20) 는 CU 에 대한 원시 픽셀 값들과 PU들의 예측된 픽셀 값들 간의 픽셀 단위 차이들을 계산하여 잔여 데이터를 형성할 수도 있다. 비디오 인코더 (20) 는 추가로, 변환 유닛 형상들, 예를 들어, 정방형 또는 비-정방형 TU들을 결정할 수도 있다 (254). 일부 예들에 있어서, 비디오 인코더 (20) 는, 상기 설명된 바와 같이, PU 형상들에 적어도 부분적으로 기초하여 TU 형상들을 선택할 수도 있다. 유사하게, 비디오 인코더 (20) 는, TU들이 크로미넌스 컴포넌트에 대응하는지 또는 루미넌스 컴포넌트에 대응하는지에 적어도 부분적으로 기초하여 TU 형상들을 선택할 수도 있다. 더욱이, 상기 설명된 바와 같이, 비디오 인코더 (20) 는 다중의 코딩 패스들을 수행하여, 정방형 TU 형상들을 사용한 코딩 결과들을 비-정방형 TU 형상들과 비교할 수도 있다. 이들 다중의 코딩 패스들은 PU 형상들을 결정하기 위한 코딩 패스들과 동시에 수행될 수도 있거나, PU 형상들을 선택한 이후에 수행될 수도 있다.
임의의 경우에 있어서, TU 형상들을 결정한 이후, 비디오 인코더 (20) 는 잔여 데이터를 포함한 결정된 형상의 변환 유닛(들)을 형성할 수도 있다 (256). 그 후, 비디오 인코더 (20) 는, 변환 계수들의 형태로, 잔여 데이터를 픽셀 도메인으로부터 변환 도메인 (예를 들어, 주파수 도메인) 으로 변환하기 위해 변환 유닛(들)의 잔여 데이터에 변환들을 적용할 수도 있다 (258). 비디오 인코더 (20) 는 추가로 변환 계수들을 양자화할 수도 있다 (260). 상기 논의된 바와 같이, 변환 계수들을 양자화하는 것은 TU들이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 TU들에 대한 양자화 파라미터를, TU들이 정방형인지 또는 비-정방형인지에 기초하여 결정된 값만큼 오프셋시킬 수도 있다.
그 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 스캐닝 및 엔트로피 코딩할 수도 있다 (262). 게다가, 상기 논의된 바와 같이, 스캔 및 엔트로피 코딩은 TU들이 정방형인지 또는 비-정방형인지에 기초할 수도 있다. 예를 들어, 스캔은 비-정방형 TU들의 더 짧은 길이 에지에서 시작할 수도 있으며, 컨텍스트는 TU들이 비-정방형인지에 기초하여 계수들의 CABAC 코딩에 대해 선택될 수도 있다. 더욱이, 비디오 인코더 (20) 는 TU 형상을 나타내는 데이터를 코딩할 수도 있다 (264). TU 형상을 나타내는 데이터는, 일부 예들에 있어서, 도 10a 또는 도 10b 에 대하여 설명된 신택스 데이터에 대응할 수도 있다.
이러한 방식으로, 도 11 의 방법은 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것, 및 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하는 것을 포함하는 방법의 예를 나타낸다. 특히, 변환 유닛의 데이터를 코딩하는 것은 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하는 것, 잔여 데이터를 변환하여 변환 계수들을 생성하는 것, 변환 계수들을 양자화하는 것, 및 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 인코딩하는 것을 포함할 수도 있다. 유사하게, 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것은 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 인코딩하는 것을 포함할 수도 있다. 더욱이, 그 방법은 정방형 변환 유닛들을 이용하여 코딩 유닛을 코딩한 결과들을, 비-정방형 변환 유닛들을 이용하여 코딩 유닛을 코딩한 결과들과 비교하는 것, 및 그 비교에 기초하여 정방형 변환 유닛들 또는 비-정방형 변환 유닛들을 선택하는 것을 더 포함할 수도 있다.
도 12 는 정방형 또는 비-정방형 변환 유닛들을 이용하여 비디오 데이터를 디코딩하는 예시적인 방법을 나타낸 플로우차트이다. 도 12 의 방법은, 예 및 설명의 목적들로, 비디오 디코더 (30) 에 대하여 설명된다. 하지만, 다른 비디오 코딩 디바이스들이 유사한 방법을 수행하도록 구성될 수도 있음을 이해해야 한다. 유사하게, 방법의 단계들은 반드시 도시된 순서로 수행되어야 할 필요는 없으며, 특정 단계들은 순차적이기 보다는 병렬로 수행될 수도 있다.
이러한 예에 있어서, 비디오 디코더 (30) 는 변환 유닛 형상을 나타내는 데이터를 디코딩할 수도 있다 (280). 일부 예들에 있어서, 이러한 데이터는 또한 대응하는 예측 유닛 형상을 나타낼 수도 있다. 다른 예들에 있어서, 그 데이터는, 일부 예들에 있어서, 도 10a 또는 도 10b 에 대하여 설명된 신택스 데이터에 대응할 수도 있다. 이러한 방식으로, 비디오 디코더 (30) 는 현재 CU 에 대한 TU 의 형상을 결정할 수도 있다.
그 후, 비디오 디코더 (30) 는 TU 의 양자화된 변환 계수들을 역스캐닝 및 엔트로피 디코딩할 수도 있다 (282). 상기 논의된 바와 같이, 스캔 및 엔트로피 디코딩 (예를 들어, CABAC 에 대한 컨텍스트 선택) 은 TU가 정방형인지 또는 비-정방형인지에 기초할 수도 있다. 비디오 디코더 (30) 는 양자화된 변환 계수들을 포함한 TU 의 형태로, 2차원 매트릭스를 재생하기 위해 디코딩되는 양자화된 변환 계수들을 역스캐닝할 수도 있으며, 여기서, 그 매트릭스는 결정된 바와 같은 정방형 또는 비-정방형 TU 의 형상을 갖는다. 더욱이, 비디오 디코더 (30) 는 양자화된 변환 계수들을 역양자화할 수도 있으며 (284), 이는, 상기 논의된 바와 같이, TU 가 정방형인지 또는 비-정방형인지에 기초할 수도 있다. 비디오 디코더 (30) 는 추가로, TU 의 변환 계수들을 역변환하여 픽셀 도메인에서 잔여 데이터를 재생할 수도 있다 (286).
비디오 디코더 (30) 는 또한 TU 에 대응하는 PU 에 대해 예측 데이터를 계산할 수도 있다 (288). 예를 들어, 비디오 디코더 (30) 는 현재 CU 를 포함한 현재 화상 또는 슬라이스의 이웃하는 이전에 코딩된 픽셀들로부터의 데이터를 인트라-예측하거나 현재 CU 에 대한 모션 벡터를 이용하여 이전에 코딩된 화상들로부터의 데이터를 인터-예측할 수도 있다. 임의의 경우에 있어서, 그 후, 비디오 디코더 (30) 는 현재 CU 를 재생하기 위해 예측 및 잔여 데이터를 결합할 수도 있다 (290). 후속적으로, 비디오 디코더 (30) 는, 예를 들어, 후속 디코딩을 위한 레퍼런스로서 사용하기 위해 디코딩된 CU 를 저장하고, 풀 화상을 재생한 이후, 디코딩된 CU 를 출력하고, 이에 의해, 결합된 데이터를 저장 및 출력할 수도 있다 (292).
이러한 방식으로, 도 12 의 방법은 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것, 및 변환 유닛이 정방형인지 또는 비-정방형인지에 적어도 부분적으로 기초하여 변환 유닛의 데이터를 코딩하는 것을 포함하는 방법의 예를 나타낸다. 특히, 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 코딩하는 것은 비디오 데이터의 변환 유닛이 정방형인지 또는 비-정방형인지를 나타내는 정보를 디코딩하는 것을 포함할 수도 있다. 유사하게, 변환 유닛의 데이터를 코딩하는 것은 변환 유닛이 정방형인지 또는 비-정방형인지에 기초하여 변환 유닛의 양자화된 변환 계수들을 디코딩하는 것, 양자화된 변환 계수들을 역양자화하는 것, 및 변환 계수들을 역변환하여 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하는 것을 포함할 수도 있다.
하나 이상의 예들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상으로 저장 또는 전송되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 데이터 저장 매체 또는 통신 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시에서 설명된 기술들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
한정이 아닌 예로서, 그러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 커넥션들, 캐리어파들, 신호들, 또는 다른 일시적 매체를 포함하지 않지만 대신 비-일시적인 유형의 저장 매체로 지향됨을 이해해야 한다. 본 명세서에서 사용되는 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저들을 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서(DSP)들, 범용 마이크로프로세서들, 주문형 집적회로(ASIC)들, 필드 프로그래머블 로직 어레이(FPGA)들, 또는 다른 등가의 집적된 또는 별도의 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 본 명세서에서 사용되는 바와 같은 용어 "프로세서" 는 본 명세서에서 설명된 기술들의 구현에 적절한 전술한 구조 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 부가적으로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성되고 결합된 코덱에서 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기술들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기술들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하여 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에서 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 실현을 요구하지는 않는다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 적절한 소프트웨어 및/또는 펌웨어와 함께 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하여 코덱 하드웨어 유닛으로 결합되거나 상호작용하는 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (58)

  1. 비디오 데이터를 코딩하는 방법으로서,
    쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 단계로서, 상기 쿼드트리 데이터 구조는 상기 비디오 데이터의 코딩 유닛에 대한 사이즈를 정의하는, 상기 쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 단계;
    잔여 쿼드트리 변환 (RQT) 데이터 구조를 나타내는 정보를 코딩하는 단계로서, 상기 RQT 를 나타내는 정보를 코딩하는 단계는 상기 코딩 유닛의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계를 포함하는, 상기 RQT 데이터 구조를 나타내는 정보를 코딩하는 단계; 및
    상기 변환 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛의 데이터를 코딩하는 단계로서, 상기 변환 유닛의 더 짧은 에지의 위치에 기초하여 상기 데이터를 코딩하기 위한 컨텍스트를 선택하는 단계를 포함하는, 상기 변환 유닛의 데이터를 코딩하는 단계
    를 포함하는, 비디오 데이터를 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는 변환 선택 플래그를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  3. 제 2 항에 있어서,
    상기 변환 유닛은 자식 변환 유닛을 포함하고,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는, 오직 상기 자식 변환 유닛의 부모 변환 유닛이 분할된 경우에만 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는, 상기 변환 유닛이 대응하는 상기 RQT 데이터 구조의 레벨을 나타내는 정보를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는, 상기 변환 유닛이 루미넌스 컴포넌트에 대응하는 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛에 대한 양자화 파라미터를 결정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 변환 유닛의 더 짧은 에지에서 시작하는 상기 변환 유닛의 변환 계수들에 스캔 패턴을 적용하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는 상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 디코딩하는 단계를 포함하고,
    상기 변환 유닛의 데이터를 코딩하는 단계는,
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 디코딩하는 단계;
    상기 양자화된 변환 계수들을 역양자화하는 단계; 및
    상기 변환 계수들을 역변환하여, 상기 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 변환 유닛의 데이터를 코딩하는 단계는,
    코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하는 단계;
    상기 잔여 데이터를 변환하여 변환 계수들을 생성하는 단계;
    상기 변환 계수들을 양자화하는 단계; 및
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 인코딩하는 단계를 포함하고,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 단계는 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 인코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  13. 제 12 항에 있어서,
    정방형 변환 유닛들을 이용하여 상기 코딩 유닛을 코딩한 결과들을, 비-정방형 변환 유닛들을 이용하여 상기 코딩 유닛을 코딩한 결과들과 비교하는 단계; 및
    상기 비교에 기초하여 정방형 변환 유닛들 또는 비-정방형 변환 유닛들을 선택하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  14. 비디오 데이터를 코딩하는 디바이스로서,
    상기 비디오 데이터를 저장하도록 구성된 메모리; 및
    쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 것으로서, 상기 쿼드트리 데이터 구조는 상기 메모리에 저장된 상기 비디오 데이터의 코딩 유닛에 대한 사이즈를 정의하는, 상기 쿼드트리 데이터 구조를 나타내는 정보를 코딩하고,
    잔여 쿼드트리 변환 (RQT) 데이터 구조를 나타내는 정보를 코딩하는 것으로서, 상기 RQT 데이터 구조를 나타내는 정보는 상기 코딩 유닛의 변환 유닛이 비-정방형인 것을 나타내는 정보를 포함하는, 상기 RQT 데이터 구조를 나타내는 정보를 코딩하며, 그리고
    상기 변환 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛의 데이터를 코딩하는 것으로서, 상기 변환 유닛의 더 짧은 에지의 위치에 기초하여 상기 데이터를 코딩하기 위한 컨텍스트를 선택하는 것을 포함하는, 상기 변환 유닛의 데이터를 코딩하도록
    구성된 비디오 코더를 포함하는, 비디오 데이터를 코딩하는 디바이스.
  15. 제 14 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하기 위해, 상기 비디오 코더는 변환 선택 플래그를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  16. 제 15 항에 있어서,
    상기 변환 유닛은 자식 변환 유닛을 포함하고,
    상기 비디오 코더는, 오직 상기 자식 변환 유닛의 부모 변환 유닛이 분할된 경우에만 상기 자식 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  17. 제 14 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하기 위해, 상기 비디오 코더는, 상기 변환 유닛이 대응하는 상기 RQT 데이터 구조의 레벨을 나타내는 정보를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  18. 제 14 항에 있어서,
    상기 비디오 코더는, 상기 변환 유닛이 루미넌스 컴포넌트에 대응하는 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  19. 제 14 항에 있어서,
    상기 비디오 코더는, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  20. 제 14 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하기 위해, 상기 비디오 코더는, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것을 나타내는 정보를 코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  21. 제 14 항에 있어서,
    상기 비디오 코더는 추가로, 상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛에 대한 양자화 파라미터를 결정하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  22. 제 14 항에 있어서,
    상기 비디오 코더는, 상기 변환 유닛의 더 짧은 에지에서 시작하는 상기 변환 유닛의 변환 계수들에 스캔 패턴을 적용하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  23. 삭제
  24. 제 14 항에 있어서,
    상기 비디오 코더는 비디오 디코더를 포함하고,
    상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하기 위해, 상기 비디오 디코더는, 상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 디코딩하도록 구성되고,
    상기 변환 유닛의 데이터를 코딩하기 위해, 상기 비디오 디코더는, 상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 디코딩하고, 상기 양자화된 변환 계수들을 역양자화하며, 상기 변환 계수들을 역변환하여 상기 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  25. 제 14 항에 있어서,
    상기 비디오 코더는 비디오 인코더를 포함하고,
    상기 변환 유닛의 데이터를 코딩하기 위해, 상기 비디오 인코더는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하고, 상기 잔여 데이터를 변환하여 변환 계수들을 생성하고, 상기 변환 계수들을 양자화하며, 상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 인코딩하도록 구성되고,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하기 위해, 상기 비디오 인코더는 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 인코딩하도록 구성되는, 비디오 데이터를 코딩하는 디바이스.
  26. 제 14 항에 있어서,
    상기 비디오 데이터를 코딩하는 디바이스는,
    집적 회로;
    마이크로 프로세서; 또는
    상기 비디오 코더를 포함하는 무선 통신 디바이스
    중 적어도 하나를 포함하는, 비디오 데이터를 코딩하는 디바이스.
  27. 비디오 데이터를 코딩하는 디바이스로서,
    쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 수단으로서, 상기 쿼드트리 데이터 구조는 상기 비디오 데이터의 코딩 유닛에 대한 사이즈를 정의하는, 상기 쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 수단;
    잔여 쿼드트리 변환 (RQT) 데이터 구조를 나타내는 정보를 코딩하는 수단으로서, 상기 RQT 를 나타내는 정보를 코딩하는 것은 상기 코딩 유닛의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단을 포함하는, 상기 RQT 데이터 구조를 나타내는 정보를 코딩하는 수단; 및
    상기 변환 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛의 데이터를 코딩하는 수단으로서, 상기 변환 유닛의 더 짧은 에지의 위치에 기초하여 상기 데이터를 코딩하기 위한 컨텍스트를 선택하는 수단을 포함하는, 상기 변환 유닛의 데이터를 코딩하는 수단
    을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  28. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은 변환 선택 플래그를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  29. 제 28 항에 있어서,
    상기 변환 유닛은 자식 변환 유닛을 포함하고,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은, 오직 상기 자식 변환 유닛의 부모 변환 유닛이 분할된 경우에만 상기 자식 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  30. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은, 상기 변환 유닛이 대응하는 상기 RQT 데이터 구조의 레벨을 나타내는 정보를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  31. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은, 상기 변환 유닛이 루미넌스 컴포넌트에 대응하는 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  32. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  33. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은, 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  34. 제 27 항에 있어서,
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛에 대한 양자화 파라미터를 결정하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스.
  35. 제 27 항에 있어서,
    상기 변환 유닛의 더 짧은 에지에서 시작하는 상기 변환 유닛의 변환 계수들에 스캔 패턴을 적용하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 디바이스.
  36. 삭제
  37. 제 27 항에 있어서,
    상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은 상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 디코딩하는 수단을 포함하고,
    상기 변환 유닛의 데이터를 코딩하는 수단은,
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 디코딩하는 수단;
    상기 양자화된 변환 계수들을 역양자화하는 수단; 및
    상기 변환 계수들을 역변환하여, 상기 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  38. 제 27 항에 있어서,
    상기 변환 유닛의 데이터를 코딩하는 수단은,
    코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하는 수단;
    상기 잔여 데이터를 변환하여 변환 계수들을 생성하는 수단;
    상기 변환 계수들을 양자화하는 수단; 및
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 인코딩하는 수단을 포함하고,
    상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하는 수단은 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 인코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  39. 명령들이 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 경우, 프로세서로 하여금
    쿼드트리 데이터 구조를 나타내는 정보를 코딩하게 하는 것으로서, 상기 쿼드트리 데이터 구조는 비디오 데이터의 코딩 유닛에 대한 사이즈를 정의하는, 상기 쿼드트리 데이터 구조를 나타내는 정보를 코딩하게 하고;
    잔여 쿼드트리 변환 (RQT) 데이터 구조를 나타내는 정보를 코딩하게 하는 것으로서, 상기 프로세서로 하여금 상기 RQT 를 나타내는 정보를 코딩하게 하는 명령들은 상기 프로세서로 하여금 상기 코딩 유닛의 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 상기 RQT 데이터 구조를 나타내는 정보를 코딩하게 하며; 그리고
    상기 변환 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛의 데이터를 코딩하게 하는 것으로서, 상기 변환 유닛의 더 짧은 에지의 위치에 기초하여 상기 데이터를 코딩하기 위한 컨텍스트를 선택하는 것을 포함하는, 상기 변환 유닛의 데이터를 코딩하게 하는, 컴퓨터 판독가능 저장 매체.
  40. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 변환 선택 플래그를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  41. 제 40 항에 있어서,
    상기 변환 유닛은 자식 변환 유닛을 포함하고,
    상기 프로세서로 하여금 상기 자식 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 오직 상기 자식 변환 유닛의 부모 변환 유닛이 분할된 경우에만 상기 자식 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  42. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 상기 변환 유닛이 대응하는 상기 RQT 데이터 구조의 레벨을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  43. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 상기 변환 유닛이 루미넌스 컴포넌트에 대응하는 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  44. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  45. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은, 상기 프로세서로 하여금 상기 변환 유닛에 대응하는 예측 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  46. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛에 대한 양자화 파라미터를 결정하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  47. 제 39 항에 있어서,
    상기 프로세서로 하여금, 상기 변환 유닛의 더 짧은 에지에서 시작하는 상기 변환 유닛의 변환 계수들에 스캔 패턴을 적용하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  48. 삭제
  49. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은 상기 프로세서로 하여금 상기 비디오 데이터의 변환 유닛이 비-정방형인 것을 나타내는 정보를 디코딩하게 하는 명령들을 포함하고,
    상기 프로세서로 하여금 상기 변환 유닛의 데이터를 코딩하게 하는 명령들은, 상기 프로세서로 하여금
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 디코딩하게 하고;
    상기 양자화된 변환 계수들을 역양자화하게 하며; 그리고
    상기 변환 계수들을 역변환하여, 상기 변환 유닛에 대응하는 코딩 유닛의 적어도 일부에 대한 잔여 데이터를 생성하게 하는
    명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  50. 제 39 항에 있어서,
    상기 프로세서로 하여금 상기 변환 유닛의 데이터를 코딩하게 하는 명령들은, 상기 프로세서로 하여금
    코딩 유닛의 적어도 일부에 대한 잔여 데이터를 계산하게 하고;
    상기 잔여 데이터를 변환하여 변환 계수들을 생성하게 하고;
    상기 변환 계수들을 양자화하게 하며; 그리고
    상기 변환 유닛이 비-정방형인 것에 기초하여 상기 변환 유닛의 양자화된 변환 계수들을 인코딩하게 하는
    명령들을 포함하고,
    상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 코딩하게 하는 명령들은 상기 프로세서로 하여금 상기 변환 유닛이 비-정방형인 것을 나타내는 정보를 인코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  51. 제 14 항에 있어서,
    상기 디바이스는 상기 비디오 코더를 포함하는 전화기 핸드셋을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  52. 제 27 항에 있어서,
    상기 디바이스는,
    상기 쿼드트리 데이터 구조를 나타내는 정보를 코딩하는 수단;
    상기 RQT 데이터 구조를 나타내는 정보를 코딩하는 수단; 및
    상기 변환 유닛이 비-정방형인 것에 적어도 부분적으로 기초하여 상기 변환 유닛의 데이터를 코딩하는 수단을 포함하는 전화기 핸드셋을 포함하는, 비디오 데이터를 코딩하는 디바이스.
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
KR1020147002724A 2011-07-01 2012-06-25 비디오 데이터에 비-정방형 변환들을 적용 KR101606295B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161503726P 2011-07-01 2011-07-01
US61/503,726 2011-07-01
US201161554837P 2011-11-02 2011-11-02
US61/554,837 2011-11-02
US13/422,828 2012-03-16
US13/422,828 US9807426B2 (en) 2011-07-01 2012-03-16 Applying non-square transforms to video data
PCT/US2012/044043 WO2013006297A1 (en) 2011-07-01 2012-06-25 Applying non-square transforms to video data

Publications (2)

Publication Number Publication Date
KR20140033499A KR20140033499A (ko) 2014-03-18
KR101606295B1 true KR101606295B1 (ko) 2016-04-01

Family

ID=47390657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147002724A KR101606295B1 (ko) 2011-07-01 2012-06-25 비디오 데이터에 비-정방형 변환들을 적용

Country Status (6)

Country Link
US (1) US9807426B2 (ko)
EP (1) EP2727348A1 (ko)
JP (2) JP5951765B2 (ko)
KR (1) KR101606295B1 (ko)
CN (1) CN103636215B (ko)
WO (1) WO2013006297A1 (ko)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2758104C (en) * 2009-04-07 2015-04-07 Lg Electronics Inc. Broadcast transmitter, broadcast receiver and 3d video data processing method thereof
US20130028329A1 (en) * 2011-07-22 2013-01-31 General Instrument Corporation Device and methods for scanning rectangular-shaped transforms in video coding
AU2015201779B2 (en) * 2011-10-31 2016-07-28 Samsung Electronics Co., Ltd. Method and apparatus for determining a context model for transform coefficient level entropy encoding and decoding
PT3166317T (pt) 2011-10-31 2018-10-08 Samsung Electronics Co Ltd Método e aparelho para determinar um modelo de contexto para a transformação de nível de coeficiente de codificação e descodificação de entropia
CN103096052B (zh) * 2011-11-04 2015-11-25 华为技术有限公司 一种图像编码、解码的方法和装置
KR20140120891A (ko) 2011-12-20 2014-10-14 모토로라 모빌리티 엘엘씨 효율적인 변환 유닛 인코딩을 위한 방법 및 장치
US9185405B2 (en) 2012-03-23 2015-11-10 Qualcomm Incorporated Coded block flag inference in video coding
US9467701B2 (en) * 2012-04-05 2016-10-11 Qualcomm Incorporated Coded block flag coding
MY162891A (en) 2012-04-13 2017-07-20 Jvc Kenwood Corp Picture coding device, picture coding method, and picture coding program
US9912944B2 (en) 2012-04-16 2018-03-06 Qualcomm Incorporated Simplified non-square quadtree transforms for video coding
CA3217710A1 (en) 2012-05-25 2013-11-28 Sun Patent Trust Image encoding and decoding using context adaptive binary arithmetic coding with a bypass mode
KR102132917B1 (ko) 2012-05-25 2020-07-10 선 페이턴트 트러스트 동화상 부호화 방법, 동화상 복호 방법, 동화상 부호화 장치, 동화상 복호 장치, 및 동화상 부호화 복호 장치
WO2013175736A1 (ja) * 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
TWI606719B (zh) * 2012-05-31 2017-11-21 Jvc Kenwood Corp Video encoding device, video encoding method, and video encoding program
BR112013032418B1 (pt) 2012-06-04 2023-04-11 Sun Patent Trust Método e aparelho de codificação de imagem em movimento, método e aparelho de decodificação de imagem em movimento, e aparelho de codificação e decodificação de imagem em movimento
WO2013181821A1 (en) * 2012-06-07 2013-12-12 Mediatek Singapore Pte. Ltd. Improved intra transform skip mode
US9749645B2 (en) * 2012-06-22 2017-08-29 Microsoft Technology Licensing, Llc Coded-block-flag coding and derivation
US9497465B2 (en) 2012-06-29 2016-11-15 Electronics And Telecommunications Research Institute Method and device for encoding/decoding images
AU2012232992A1 (en) * 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
US20140092956A1 (en) * 2012-09-29 2014-04-03 Motorola Mobility Llc Adaptive transform options for scalable extension
US9743091B2 (en) * 2012-12-17 2017-08-22 Lg Electronics Inc. Method for encoding/decoding image, and device using same
US9967559B1 (en) 2013-02-11 2018-05-08 Google Llc Motion vector dependent spatial transformation in video coding
US9544597B1 (en) 2013-02-11 2017-01-10 Google Inc. Hybrid transform in video encoding and decoding
US9674530B1 (en) 2013-04-30 2017-06-06 Google Inc. Hybrid transforms in video coding
JP6614472B2 (ja) 2013-09-30 2019-12-04 サン パテント トラスト 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置
US9794575B2 (en) * 2013-12-18 2017-10-17 Magnum Semiconductor, Inc. Apparatuses and methods for optimizing rate-distortion costs in video encoding
DE202015009312U1 (de) 2014-01-26 2017-02-03 Cable Television Laboratories, Inc. Datentransformation
EP4250727A3 (en) * 2014-03-16 2023-12-06 Vid Scale, Inc. Method and apparatus for the signaling of lossless video coding
JP2015185897A (ja) * 2014-03-20 2015-10-22 パナソニックIpマネジメント株式会社 画像符号化方法及び画像符号化装置
CN104284188B (zh) * 2014-10-11 2018-03-13 华为技术有限公司 预测块的划分方法、编码设备和解码设备
US9565451B1 (en) 2014-10-31 2017-02-07 Google Inc. Prediction dependent transform coding
JP6671339B2 (ja) * 2015-02-27 2020-03-25 Kddi株式会社 符号化装置及び復号装置
WO2016154963A1 (en) * 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec
US9769499B2 (en) 2015-08-11 2017-09-19 Google Inc. Super-transform video coding
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
US10277905B2 (en) 2015-09-14 2019-04-30 Google Llc Transform selection for non-baseband signal coding
WO2017046005A1 (en) * 2015-09-18 2017-03-23 Koninklijke Philips N.V. Method and apparatus for fast and efficient image compression and decompression
US9807423B1 (en) 2015-11-24 2017-10-31 Google Inc. Hybrid transform scheme for video coding
US20170150156A1 (en) * 2015-11-25 2017-05-25 Qualcomm Incorporated Illumination compensation with non-square predictive blocks in video coding
US11778190B2 (en) * 2016-02-12 2023-10-03 Interdigital Vc Holdings, Inc. Method and device for intra-predictive encoding/decoding a coding unit comprising picture data, said intra-predictive encoding depending on a prediction tree and a transform tree
WO2017206805A1 (en) * 2016-05-28 2017-12-07 Mediatek Inc. Method and apparatus of palette mode coding for colour video data
CN114222138A (zh) * 2016-05-28 2022-03-22 世宗大学校产学协力团 视频信号的解码装置
WO2018012660A1 (ko) * 2016-07-15 2018-01-18 엘지전자(주) 예측 유닛 분할을 위한 변환 도메인 예측을 이용하여 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
EP3270594A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for advanced cabac context adaptation for last coefficient coding
US11356854B2 (en) 2016-08-10 2022-06-07 Nec Corporation Radio access network node, radio terminal, core network node, and method therefor
CN107734563B (zh) 2016-08-12 2020-02-07 电信科学技术研究院 切换场景下的QoS参数处理的方法及设备
EP3306924A1 (en) * 2016-10-05 2018-04-11 Thomson Licensing Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data
CN115883826A (zh) 2016-10-10 2023-03-31 三星电子株式会社 用于对图像进行编码/解码的方法和设备
WO2018097691A2 (ko) * 2016-11-28 2018-05-31 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2018142823A1 (en) * 2017-01-31 2018-08-09 Sharp Kabushiki Kaisha Systems and methods for scaling transform coefficient level values
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
BR122021018343B1 (pt) * 2017-04-13 2022-10-25 Lg Electronics Inc Método para reconstruir uma imagem incluindo um bloco não quadrado, método para codificar uma imagem e mídia de armazenamento digital legível por computador
CN110832857B (zh) 2017-07-07 2022-04-15 三星电子株式会社 视频编码方法及装置、视频解码方法及装置
KR102450506B1 (ko) * 2017-07-31 2022-10-05 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019029951A1 (en) * 2017-08-08 2019-02-14 Thomson Licensing METHOD AND APPARATUS FOR VIDEO ENCODING AND DECODING
US10778971B2 (en) * 2018-06-01 2020-09-15 Tencent America LLC Method and apparatus for video coding
US10771783B2 (en) 2018-06-11 2020-09-08 Google Llc Transforms for large video and image blocks
WO2020057359A1 (en) * 2018-09-19 2020-03-26 Mediatek Inc. Methods and apparatuses of quantization scaling of transform coefficients in video coding system
US11303904B2 (en) * 2018-09-28 2022-04-12 Qualcomm Incorporated Rectangular block transform scaling
JP7251882B2 (ja) * 2019-03-01 2023-04-04 ホアウェイ・テクノロジーズ・カンパニー・リミテッド Cbfフラグの効率的なシグナリング方法
US11159795B2 (en) * 2019-03-04 2021-10-26 Tencent America LLC Max transform size control
BR112021018328A2 (pt) * 2019-03-15 2021-11-23 Samsung Electronics Co Ltd Método de decodificação de imagem, aparelho de decodificação de imagem, e método de codificação de imagem
US11677969B2 (en) * 2019-03-22 2023-06-13 Tencent America LLC Method and apparatus for video coding
US11122297B2 (en) 2019-05-03 2021-09-14 Google Llc Using border-aligned block functions for image compression
WO2021071186A1 (ko) * 2019-10-07 2021-04-15 에스케이텔레콤 주식회사 픽처 분할 방법 및 복호화 장치
BR112022016130A2 (pt) 2020-02-14 2022-10-04 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo, e, meio de armazenamento e de gravação legível por computador não transitório
US11616983B2 (en) * 2020-05-05 2023-03-28 Tencent America LLC Joint component secondary transform
US11388401B2 (en) * 2020-06-26 2022-07-12 Google Llc Extended transform partitions for video compression
US12047593B2 (en) * 2020-10-02 2024-07-23 Tencent America LLC Method and apparatus for video coding
US11575941B2 (en) * 2021-03-23 2023-02-07 Tencent America LLC Parallel processing in video coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110038412A1 (en) 2009-08-14 2011-02-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding video in consideration of scanning order of coding units having hierarchical structure, and method and apparatus for decoding video in consideration of scanning order of coding units having hierarchical structure

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060123939A (ko) 2005-05-30 2006-12-05 삼성전자주식회사 영상의 복부호화 방법 및 장치
US8483285B2 (en) * 2008-10-03 2013-07-09 Qualcomm Incorporated Video coding using transforms bigger than 4×4 and 8×8
KR101474756B1 (ko) * 2009-08-13 2014-12-19 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
KR101302660B1 (ko) * 2009-09-14 2013-09-03 에스케이텔레콤 주식회사 고해상도 동영상의 부호화/복호화 방법 및 장치
CN104768005B (zh) * 2009-12-01 2018-07-31 数码士有限公司 用于编码/解码高分辨率图像的方法和设备
US9253495B2 (en) * 2009-12-04 2016-02-02 Thomson Licensing Methods and apparatus for improved chroma transforms for inter frames in video encoding and decoding
US8344917B2 (en) * 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
US8878861B2 (en) * 2011-03-01 2014-11-04 Sony Corporation Conversion between z-scanning indices, raster-scanning indices and 2-D coordinates using simple bit-operations in HEVC
US8494290B2 (en) * 2011-05-05 2013-07-23 Mitsubishi Electric Research Laboratories, Inc. Method for coding pictures using hierarchical transform units

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110038412A1 (en) 2009-08-14 2011-02-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding video in consideration of scanning order of coding units having hierarchical structure, and method and apparatus for decoding video in consideration of scanning order of coding units having hierarchical structure

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Panusopone, K. et al, Proposal on RQT root location, 2011.3, JCTVC-E364-r2.
Tsinghua et al, Asymmetric motion partition with OBMC and Non-square TU, 2011.3. JCTVC-E376.

Also Published As

Publication number Publication date
JP2014523702A (ja) 2014-09-11
CN103636215A (zh) 2014-03-12
US9807426B2 (en) 2017-10-31
WO2013006297A1 (en) 2013-01-10
KR20140033499A (ko) 2014-03-18
WO2013006297A9 (en) 2013-03-07
JP5951765B2 (ja) 2016-07-13
EP2727348A1 (en) 2014-05-07
JP2016158280A (ja) 2016-09-01
CN103636215B (zh) 2017-08-25
JP6096353B2 (ja) 2017-03-15
US20130003824A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
KR101606295B1 (ko) 비디오 데이터에 비-정방형 변환들을 적용
US20220417558A1 (en) Video coding using mapped transforms and scanning modes
TWI755394B (zh) 二值化二次轉換指數
JP5922244B2 (ja) ビデオコーディングにおいて適応ループフィルタとマージされたサンプル適応オフセット
KR101671080B1 (ko) 비디오 코딩에서 비정방형 변환 유닛들 및 예측 유닛들
KR101617109B1 (ko) 인트라-예측 비디오 코딩에서의 비-정방형 변환들
US9532058B2 (en) Intra prediction mode coding with directional partitions
CA2862311C (en) Restriction of prediction units in b slices to uni-directional inter prediction
JP6339083B2 (ja) ビデオコーディングにおける4:2:2サンプルフォーマットのためのコード化ブロックフラグ(cbf)コーディング
KR101641808B1 (ko) 비디오 코딩에서 적응 루프 필터 및 샘플 적응 오프셋에 대한 최대 코딩 유닛 (lcu) 또는 파티션-기반 신택스
KR101568626B1 (ko) 비디오 코딩에서의 단거리 인트라 예측에 대한 라인 버퍼 감소
US20130083844A1 (en) Coefficient coding for sample adaptive offset and adaptive loop filter
KR20150003327A (ko) 변환 계수 코딩
AU2011308653A1 (en) Intra smoothing filter for video coding

Legal Events

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

Payment date: 20190107

Year of fee payment: 4