KR20190103167A - 비디오 코딩을 위한 인트라 예측 기법들 - Google Patents

비디오 코딩을 위한 인트라 예측 기법들 Download PDF

Info

Publication number
KR20190103167A
KR20190103167A KR1020197018854A KR20197018854A KR20190103167A KR 20190103167 A KR20190103167 A KR 20190103167A KR 1020197018854 A KR1020197018854 A KR 1020197018854A KR 20197018854 A KR20197018854 A KR 20197018854A KR 20190103167 A KR20190103167 A KR 20190103167A
Authority
KR
South Korea
Prior art keywords
value
video data
current block
samples neighboring
intra
Prior art date
Application number
KR1020197018854A
Other languages
English (en)
Inventor
카이 장
지안레 천
바딤 세레긴
샤오-창 추앙
샹 리
리 장
청-테 시에
마르타 카르체비츠
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20190103167A publication Critical patent/KR20190103167A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • 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
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

비디오 디코더는, 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 것으로서, P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 현재의 블록은 단변과 장변을 포함하고, 그리고 제 1 값에 제 2 값을 더한 값은 2 의 거듭제곱인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하고; 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 것으로서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 것은, DC 값을 계산하기 위해 시프트 연산을 수행하는 것 및 계산된 DC 값을 사용하여 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성하는 것을 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하고; 그리고 현재의 픽처의 디코딩된 버전을 출력한다.

Description

비디오 코딩을 위한 인트라 예측 기법들
본 출원은 2017년 1월 11일자로 출원된 미국 가특허출원 제62/445,207호의 이익을 주장하고, 그 전체 내용은 참조로 본 명세서에 통합된다.
본 개시는 비디오 인코딩 및 비디오 디코딩과 같은 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, PDA (personal digital assistant) 들, 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 라디오 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함하는, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 에 의해 정의된 표준들, 고 효율 비디오 코딩 (HEVC) 표준, 및 이러한 표준들의 확장들에서 설명된 것들과 같은 비디오 코딩 기법들을 구현한다. 비디오 디바이스들은 이러한 비디오 코딩 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 코딩 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 포함한다. 블록-기반 비디오 코딩에 대해, 비디오 슬라이스 (예를 들어, 비디오 프레임 또는 비디오 프레임의 부분) 는, 트리블록들, CU들, 및/또는 코딩 노드들로도 또한 지칭될 수도 있는 비디오 블록들로 파티셔닝될 수도 있다. 픽처들은 프레임들로 지칭될 수도 있다. 참조 픽처들은 참조 프레임들로 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔차 데이터는 코딩될 원래의 블록과 예측 블록 사이의 픽셀 차이들을 표현한다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 후에 양자화될 수도 있는 잔차 변환 계수들을 초래할 수도 있다. 엔트로피 코딩이 훨씬 더 많은 압축을 달성하기 위해 적용될 수도 있다.
본 개시는 인트라 예측을 사용하여 비디오 데이터의 블록을 코딩하기 위한 기법들을 설명한다. 예를 들어, 본 개시의 기법들은, 비디오 데이터의 블록이 직사각형일 때 인트라 DC 모드 예측을 사용하여 비디오 데이터의 블록을 코딩하는 것을 포함한다.
하나의 예에 따르면, 비디오 데이터를 디코딩하는 방법은, 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 단계로서, P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 현재의 블록은 단변 (short side) 과 장변 (long side) 을 포함하고, 그리고 제 1 값에 제 2 값을 더한 값은 2 의 거듭제곱 (power)인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 단계; 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 단계로서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 단계는, DC 값을 계산하기 위해 시프트 연산 (shift operation) 을 수행하는 단계; 및 계산된 DC 값을 사용하여 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성하는 단계를 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 단계; 및 현재의 블록의 디코딩된 버전을 포함하는 현재의 픽처의 디코딩된 버전을 출력하는 단계를 포함한다.
다른 예에 따르면, 비디오 데이터를 디코딩하기 위한 디바이스는, 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체들; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 것으로서, P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 현재의 블록은 단변과 장변을 포함하고, 그리고 제 1 값에 제 2 값을 더한 값은 2 의 거듭제곱인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하고; 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 것으로서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하는 것은, DC 값을 계산하기 위해 시프트 연산을 수행하는 것, 및 계산된 DC 값을 사용하여 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성하는 것을 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하고; 그리고 현재의 블록의 디코딩된 버전을 포함하는 현재의 픽처의 디코딩된 버전을 출력하도록 구성된다.
다른 예에 따르면, 비디오 데이터를 디코딩하기 위한 장치는, 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하기 위한 수단으로서, P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 현재의 블록은 단변과 장변을 포함하고, 그리고 제 1 값에 제 2 값을 더한 값은 2 의 거듭제곱인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하기 위한 수단; 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위한 수단으로서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위한 수단은, DC 값을 계산하기 위해 시프트 연산을 수행하기 위한 수단; 및 계산된 DC 값을 사용하여 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성하기 위한 수단을 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위한 수단; 및 현재의 블록의 디코딩된 버전을 포함하는 현재의 픽처의 디코딩된 버전을 출력하기 위한 수단을 포함한다.
하나 이상의 예들의 상세들은 첨부 도면들 및 이하의 설명에서 제시된다. 다른 피처들, 목적들, 및 이점들은 설명, 도면들, 및 청구항들로부터 명백할 것이다.
도 1 은 본 개시의 기법들을 구현하도록 구성된 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록 다이어그램이다.
도 2 는 고 효율 비디오 코딩 (HEVC) 에서의 코딩 유닛 (CU) 구조를 예시하는 개념적 다이어그램이다.
도 3 은 인터 예측 모드에 대한 예시적인 파티션 타입들을 예시하는 개념적 다이어그램이다.
도 4a 는 쿼드-트리-이진-트리 (QTBT) 구조를 사용하는 블록 파티셔닝의 예를 예시하는 개념적 다이어그램이다.
도 4b 는 도 4a 의 QTBT 구조를 사용하는 블록 파티셔닝에 대응하는 예시적인 트리 구조를 예시하는 개념적 다이어그램이다.
도 5 는 QTBT 파티셔닝의 하나의 예에 따른 예시적인 비대칭 파티션들을 예시하는 개념적 다이어그램이다.
도 6a 는 본 개시의 하나의 예에 따른 인트라 예측의 기본적인 예를 예시한다.
도 6b 는 본 개시의 하나의 예에 따른 인트라 예측의 33 개의 상이한 각도 모드 (angular mode) 들의 예를 예시한다.
도 6c 는 본 개시의 하나의 예에 따른 인트라 평면 모드 예측의 예를 예시한다.
도 6d 는 본 개시의 하나의 예에 따른 현재의 블록에 접해 있는 상방 이웃하는 샘플들 및 좌측 이웃하는 샘플들을 예시한다.
도 7 은 본 개시의 하나의 예에 따른 현재의 블록에 접해 있는 상방 이웃하는 샘플들을 다운샘플링하는 예를 예시한다.
도 8 은 본 개시의 하나의 예에 따른 현재의 블록에 접해 있는 좌측 이웃하는 샘플들을 확장하는 예를 예시한다.
도 9 는 나눗셈 제거 (division elimination) 기법들의 예를 예시한다.
도 10 은 비디오 인코더의 예를 예시하는 블록 다이어그램이다.
도 11 은 비디오 디코더의 예를 예시하는 블록 다이어그램이다.
도 12 는 본 개시의 기법에 따른, 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
도 13 은 본 개시의 기법에 따른, 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
본 개시는 인트라 예측을 사용하여 비디오 데이터의 블록을 코딩하기 위한 기법들을 설명하고, 특히, 본 개시는 비-정사각형 직사각형 블록들, 즉 블록의 폭과 같지 않은 높이를 가진 블록들을 코딩하는 것에 관련된 기법들을 설명한다. 예를 들어, 본 개시의 기법들은 인트라 DC 예측 모드를 사용하여 또는 인트라 스트롱 필터를 사용하여 비디오 데이터의 비-정사각형 직사각형 블록을 코딩하는 것을 포함한다. 본 명세서에서 설명된 기법들은, 나눗셈 연산이 다르게 요구될 수도 있는, 시프트 연산의 사용을 가능하게 할 수도 있으며, 그것에 의하여 원하는 코딩 효율을 유지하면서 컴퓨테이션 복잡성을 잠재적으로 감소시킬 수도 있다.
본 개시에서 사용된 바와 같이, 용어 비디오 코딩은 일반적으로 비디오 인코딩 또는 비디오 디코딩 중 어느 하나를 지칭한다. 유사하게, 용어 비디오 코더는 일반적으로 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 더욱이, 비디오 디코딩에 대하여 본 개시에서 설명된 소정의 기법들은 또한 비디오 인코딩에 적용될 수도 있고, 그 반대도 마찬가지이다. 예를 들어, 종종 비디오 인코더들 및 비디오 디코더들이 동일한 프로세스, 또는 상반된 프로세스들을 수행하도록 구성된다. 또한, 비디오 인코더들은 통상적으로 비디오 데이터를 인코딩하는 방법을 결정하는 프로세스들의 일부로서 비디오 디코딩을 수행한다. 따라서, 그 반대가 명시되지 않는 한, 비디오 디코딩에 대하여 설명된 기법은 또한 비디오 인코딩의 일부로서 수행될 수 없거나 또는 그 반대도 마찬가지라고 가정해서는 안된다.
본 개시는 또한, 현재의 층, 현재의 블록, 현재의 픽처, 현재의 슬라이스 등과 같은 용어들을 사용할 수도 있다. 본 개시의 맥락에서, 용어 현재는, 예를 들어 이전에 또는 이미 코딩된 블록들, 픽처들, 및 슬라이스들 또는 아직 코딩되지 않은 블록들, 픽처들, 및 슬라이스들과는 대조적으로, 현재 코딩되고 있는 블록, 픽처, 슬라이스 등을 식별하도록 의도된다.
도 1 은, 비디오 데이터의 블록이 직사각형일 때 인트라 DC 모드 예측을 사용하여 비디오 데이터의 블록을 코딩하기 위한 본 개시의 기법들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록 다이어그램이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 추후에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 비디오 데이터를 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋-톱 박스들, 전화기 핸드셋들, 이를 테면 소위 "스마트" 폰들, 태블릿 컴퓨터들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함하는, 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 구비될 수도 있다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (예를 들어, 비디오 데이터를 디코딩하기 위한 디바이스 또는 장치) 이다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체들 (20), 비디오 인코더 (22), 및 출력 인터페이스 (24) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 어레인지먼트들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이스할 수도 있다.
도 1 의 예시된 시스템 (10) 은 하나의 예일 뿐이다. 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스 또는 장치에 의해 수행될 수도 있다. 일반적으로 본 개시의 기법들은 비디오 인코딩 디바이스 및 비디오 디코딩 디바이스에 의해 수행되지만, 기법들은 또한, 통상적으로 "CODEC" 으로 지칭된 결합된 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위해 인코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작한다. 이런 이유로, 시스템 (10) 은, 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 텔레포니를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 사이의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡처 디바이스, 이를 테면 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 추가 대안으로서, 비디오 소스 (18) 는 컴퓨터 그래픽-기반 데이터를 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오의 조합으로서 생성할 수도 있다. 소스 디바이스 (12) 는 비디오데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체들 (예를 들어, 저장 매체들 (20)) 을 포함할 수도 있다. 본 개시에서 설명된 기법들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에, 캡처된, 사전-캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더 (22) 에 의해 인코딩될 수도 있다. 출력 인터페이스 (24) 는 인코딩된 비디오 정보를 컴퓨터 판독가능 매체 (16) 로 출력할 수도 있다.
목적지 디바이스 (14) 는 컴퓨터 판독가능 매체 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동 가능한 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금, 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 로 실시간으로 송신할 수 있게 하는 통신 매체를 포함한다. 인코딩된 비디오 데이터는 통신 표준, 이를 테면 무선 통신 프로토콜에 따라 변조되고, 목적지 디바이스 (14) 에 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 이를 테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체들을 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터 (예를 들어, 인코딩된 비디오 데이터) 는 출력 인터페이스 (24) 로부터 저장 디바이스로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스 (26) 에 의해 저장 디바이스로부터 액세스될 수도 있다. 저장 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬로 액세스된 데이터 저장 매체들 중 임의의 것을 포함할 수도 있다. 추가 예에서, 저장 디바이스는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오를 저장할 수도 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해 저장 디바이스로부터 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 송신 가능한 임의의 타입의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷 접속을 포함하는 임의의 표준 데이터 접속을 통하여 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 무선 채널 (예를 들어, Wi-Fi 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 양자 모두의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시의 기법들은 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 스트리밍 비디오 송신들, 이를 테면 DASH (dynamic adaptive streaming over HTTP), 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하여 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 텔레포니와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
컴퓨터 판독가능 매체 (16) 는 일시적 매체들, 이를 테면 무선 브로드캐스트 또는 유선 네트워크 송신, 또는 저장 매체들 (즉, 비일시적 저장 매체들), 이를 테면 하드 디스크, 플래시 드라이브, 콤팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터 판독가능 매체들을 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고 인코딩된 비디오 데이터를 예를 들어 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는 다양한 예들에서 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터 판독가능 매체 (16) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 의 정보는, 비디오 인코더 (22) 의 비디오 인코더 (22) 에 의해 정의되고 또한 비디오 디코더 (30) 에 의해 사용되는 신택스 정보를 포함할 수도 있고, 이 신택스 정보는 블록들 및 다른 코딩된 유닛들, 예를 들어, 픽처들의 그룹들 (GOP들) 의 특성들 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함한다. 저장 매체들 (28) 은 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터를 저장할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이한다. 디스플레이 디바이스 (32) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
비디오 인코더 (22) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 또는 디코더 회로부 중 임의의 것으로서 구현될 수도 있다. 기법들이 소프트웨어로 부분적으로 구현되면, 디바이스는 적합한, 비일시적 컴퓨터 판독가능 매체에 소프트웨어에 대한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 의 각각은, 어느 하나가 개별의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있는, 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있다.
일부 예들에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 비디오 코딩 표준에 따라 동작할 수도 있다. 예시적인 비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 (또한 ISO/IEC MPEG-4 AVC 로도 알려짐) (그 스케일러블 비디오 코딩 (SVC) 및 멀티-뷰 비디오 코딩 (MVC) 확장들을 포함함) 를 포함하지만, 이들에 한정되지는 않는다. 비디오 코딩 표준 고 효율 비디오 코딩 (HEVC) 또는 ITU-T H.265 (그 범위 및 스크린 콘텐츠 코딩 확장들, 3D 비디오 코딩 (3D-HEVC) 및 멀티뷰 확장들 (MV-HEVC) 및 스케일러블 확장 (SHVC) 을 포함함) 는, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹 (MPEG) 의 JCT-VC (Joint Collaboration Team on Video Coding) 에 의해 개발되었다. 최신 HEVC 드래프트 사양 (이하에 HEVC WD 로 지칭됨) 은, http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip 으로부터 입수가능하다.
HEVC 및 다른 비디오 코딩 사양들에서, 비디오 시퀀스는 통상적으로 일련의 픽처들을 포함한다. 픽처들은 또한 "프레임들" 로 지칭될 수도 있다. 픽처는 SL, SCb, 및 SCr 로 표시된 3 개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2-차원 어레이 (즉, 블록) 이다. SCb 는 Cb 크로미넌스 샘플들의 2-차원 어레이이다. SCr 은 Cr 크로미넌스 샘플들의 2-차원 어레이이다. 크로미넌스 샘플들은 또한 본 명세서에서 "크로마" 샘플들로 지칭될 수도 있다. 다른 인스턴스들에서, 픽처는 단색 (monochrome) 일 수도 있고 루마 샘플들의 어레이를 단지 포함할 수도 있다.
더욱이, HEVC 및 다른 비디오 코딩 사양들에서, 픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (22) 는 코딩 트리 유닛들 (CTU들) 의 세트를 생성할 수도 있다. CTU들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2 개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별도의 컬러 평면들을 갖는 픽처들에서, CTU 는 단일 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛 (LCU)" 으로 지칭될 수도 있다. HEVC 의 CTU들은 H.264/AVC 와 같은 다른 표준들의 매크로블록들과 대체로 유사할 수도 있다. 그러나, CTU 는 특정한 사이즈에 반드시 한정되는 것은 아니며 하나 이상의 코딩 유닛들 (CU들) 을 포함할 수도 있다. 슬라이스는 래스터 스캔 순서로 연속적으로 순서화된 정수 개의 CTU들을 포함할 수도 있다.
HEVC 에 따라 동작하면, 코딩된 CTU 를 생성하기 위해, 비디오 인코더 (22) 는 CTU 의 코딩 트리 블록들에 대해 쿼드-트리 파티셔닝을 재귀적으로 수행하여, 코딩 트리 블록들을 코딩 블록들, 따라서 명칭 "코딩 트리 유닛들" 로 분할할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. CU 는 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 2 개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별도의 컬러 평면들을 갖는 픽처들에서, CU 는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비트스트림 내의 신택스 데이터는 또한 CTU 에 대한 사이즈를 정의할 수도 있다. 슬라이스는 코딩 순서에서의 다수의 연속적인 CTU들을 포함한다. 비디오 프레임 또는 픽처는 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 상기 언급된 바와 같이, 각각의 트리 블록은 쿼드-트리에 따라 CU들로 스플리팅될 수도 있다. 일반적으로, 쿼드-트리 데이터 구조는 CU 당 하나의 노드를 포함하고, 루트 노드는 트리블록에 대응한다. CU 가 4 개의 서브-CU들로 스플리팅되면, CU 에 대응하는 노드는 4 개의 리프 노드들을 포함하고, 그들 각각은 서브-CU들 중 하나에 대응한다.
쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU 에 대한 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서의 노드는, 노드에 대응하는 CU 가 서브-CU들로 스플리팅되는지 여부를 표시하는 스플릿 플래그를 포함할 수도 있다. CU 에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, CU 가 서브-CU들로 스플리팅되는지 여부에 의존할 수도 있다. CU 가 추가로 스플리팅되지 않으면, 그것은 리프-CU 로 지칭된다. CU 의 블록이 추가로 스플리팅되면, 그것은 일반적으로 비-리프-CU 로 지칭될 수도 있다. 본 개시의 일부 예들에서, 리프-CU 의 4 개의 서브-CU들은 원래의 리프-CU 의 명시적 스플리팅이 존재하지 않더라도 리프-CU들로 지칭될 수도 있다. 예를 들어, 16x16 사이즈의 CU 가 추가로 스플리팅되지 않으면, 4 개의 8x8 서브-CU들은 또한, 16x16 CU 가 결코 스플리팅되지 않았더라도 리프-CU들로 지칭될 수도 있다.
CU 는 CU 가 사이즈 구분 (size distinction) 을 갖지 않는다는 것을 제외하고는 H.264 표준의 매크로블록과 유사한 목적을 갖는다. 예를 들어, 트리 블록은 4 개의 자식 노드들 (서브-CU들로도 또한 지칭됨) 로 스플리팅될 수도 있고, 각각의 자식 노드는 결국 부모 노드일 수도 있고 다른 4 개의 자식 노드들로 스플리팅될 수도 있다. 쿼드트리의 리프 노드로 지칭된, 최종의 비스플리팅된 자식 노드는, 리프-CU 로도 또한 지칭된, 코딩 노드를 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는, 최대 CU 심도로 지칭되는, 트리 블록이 스플리팅될 수도 있는 최대 횟수를 정의할 수도 있고, 또한 코딩 노드들의 최소 사이즈를 정의할 수도 있다. 이에 따라, 비트스트림은 또한 최소 코딩 유닛 (SCU) 을 정의할 수도 있다. 본 개시는 HEVC 의 맥락에서 CU, PU, 또는 TU, 또는 다른 표준들의 맥락에서 유사한 데이터 구조들 (예를 들어, H.264/AVC 에서의 매크로블록들 및 이들의 서브-블록들) 중 임의의 것을 지칭하기 위해 용어 "블록" 을 사용한다.
CU 는 코딩 노드, 뿐만 아니라 코딩 노드와 연관된 예측 유닛들 (PU들) 및 변환 유닛들 (TU들) 을 포함한다. CU 의 사이즈는 코딩 노드의 사이즈에 대응하고 일부 예들에서, 형상이 정사각형일 수도 있다. HEVC 의 예에서, CU 의 사이즈는 8x8 픽셀들로부터, 최대 64x64 픽셀들 이상을 가진 트리 블록의 사이즈까지의 범위일 수도 있다. 각각의 CU 는 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, CU 의 하나 이상의 PU들로의 파티셔닝을 기술할 수도 있다. 파티셔닝 모드들은 CU 가 스킵 또는 직접 모드 인코딩되는지, 인트라-예측 모드 인코딩되는지, 또는 인터-예측 모드 인코딩되는지에 따라 상이할 수도 있다. PU들은 형상이 비-정사각형이도록 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는 또한, 예를 들어, 쿼드트리에 따라 CU 의 하나 이상의 TU들로의 파티셔닝을 기술할 수도 있다. TU 는 형상이 정사각형 또는 비-정사각형 (예를 들어, 직사각형) 일 수 있다.
HEVC 표준은 TU들에 따른 변환들을 허용한다. TU들은 상이한 CU들에 대해 상이할 수도 있다. TU들은 통상적으로 파티셔닝된 LCU 에 대해 정의된 주어진 CU 내의 PU들의 사이즈에 기초하여 사이징되지만, 항상 그렇지는 않을 수도 있다. TU들은 통상적으로 PU들과 동일한 사이즈이거나 또는 그보다 더 작다. 일부 예들에서, CU 에 대응하는 잔차 샘플들은, 때때로 "잔차 쿼드 트리" (RQT) 로 불리는, 쿼드-트리 구조를 사용하여 더 작은 유닛들로 서브분할될 수도 있다. RQT 의 리프 노드들은 TU들로 지칭될 수도 있다. TU들과 연관된 픽셀 차이 값들은, 양자화될 수도 있는 변환 계수들을 생성하기 위해 변환될 수도 있다.
리프-CU 는 하나 이상의 PU들을 포함할 수도 있다. 일반적으로, PU 는 대응하는 CU 의 전부 또는 부분에 대응하는 공간 영역을 표현하고, PU 에 대한 참조 샘플을 취출하기 위한 데이터를 포함할 수도 있다. 더욱이, PU 는 예측에 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩되면, PU 에 대한 데이터는, PU 에 대응하는 TU 에 대한 인트라-예측 모드를 기술하는 데이터를 포함할 수도 있는 RQT 에 포함될 수도 있다. 다른 예로서, PU 가 인터-모드 인코딩되면, PU 는 PU 에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. PU 에 대한 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터에 대한 분해능 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 픽처, 및/또는 모션 벡터에 대한 참조 픽처 리스트 (예를 들어, List 0, List 1, 또는 List C) 를 기술할 수도 있다.
하나 이상의 PU들을 갖는 리프-CU 는 또한 하나 이상의 TU들을 포함할 수도 있다. TU들은 상기 논의된 바와 같이, (TU 쿼드-트리 구조로도 또한 지칭되는) RQT 를 사용하여 특정될 수도 있다. 예를 들어, 스플릿 플래그는 리프-CU 가 4 개의 변환 유닛들로 스플리팅되는지 여부를 표시할 수도 있다. 일부 예들에서, 각각의 변환 유닛은 추가 서브-TU들로 추가로 스플리팅될 수도 있다. TU 가 추가로 스플리팅되지 않으면, 그것은 리프-TU 로 지칭될 수도 있다. 일반적으로, 인트라 코딩에 대해, 리프-CU 에 속하는 모든 리프-TU들은 동일한 인트라 예측 모드로부터 생성된 잔차 데이터를 포함한다. 즉, 동일한 인트라-예측 모드는 일반적으로 리프-CU 의 모든 TU들에서 변환될 예측된 값들을 계산하기 위해 적용된다. 인트라 코딩에 대해, 비디오 인코더 (22) 는 TU 에 대응하는 CU 의 부분과 원래의 블록 사이의 차이로서, 인트라 예측 모드를 사용하여 각각의 리프-TU 에 대한 잔차 값을 계산할 수도 있다. TU 는 PU 의 사이즈에 반드시 한정되는 것은 아니다. 따라서, TU들은 PU 보다 더 크거나 또는 더 작을 수도 있다. 인트라 코딩에 대해, PU 는 동일한 CU 에 대한 대응하는 리프-TU 와 공동위치될 수도 있다. 일부 예들에서, 리프-TU 의 최대 사이즈는 대응하는 리프-CU 의 사이즈에 대응할 수도 있다.
더욱이, 리프-CU들의 TU들은 개별의 RQT 구조들과 또한 연관될 수도 있다. 즉, 리프-CU 는 리프-CU 가 TU들로 파티셔닝되는 방법을 표시하는 쿼드트리를 포함할 수도 있다. TU 쿼드트리의 루트 노드는 일반적으로 리프-CU 에 대응하는 한편, CU 쿼드트리의 루트 노드는 일반적으로 트리블록 (또는 LCU) 에 대응한다.
상기 논의된 바와 같이, 비디오 인코더 (22) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비-정사각형) 블록이다. CU 의 PU 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별도의 컬러 평면들을 갖는 픽처들에서, PU 는 단일 예측 블록 및 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 비디오 인코더 (22) 는 CU 의 각각의 PU 의 예측 블록들 (예를 들어, 루마, Cb, 및 Cr 예측 블록들) 에 대한 예측 블록들 (예를 들어, 루마, Cb, 및 Cr 예측 블록들) 을 생성할 수도 있다.
비디오 인코더 (22) 는 PU 에 대한 예측 블록들을 생성하기 위해 인트라 예측 또는 인터 예측을 사용할 수도 있다. 비디오 인코더 (22) 가 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 사용하면, 비디오 인코더 (22) 는 PU 를 포함하는 픽처의 디코딩된 샘플들에 기초하여 PU 의 예측 블록들을 생성할 수도 있다.
비디오 인코더 (22) 가 CU 의 하나 이상의 PU들에 대한 예측 블록들 (예를 들어, 루마, Cb, 및 Cr 예측 블록들) 을 생성한 후, 비디오 인코더 (22) 는 CU 에 대한 하나 이상의 잔차 블록들을 생성할 수도 있다. 예를 들어, 비디오 인코더 (22) 는 CU 에 대한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에서의 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에서의 루마 샘플과 CU 의 원래의 루마 코딩 블록에서의 대응하는 샘플 사이의 차이를 표시한다. 추가로, 비디오 인코더 (22) 는 CU 에 대한 Cb 잔차 블록을 생성할 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 원래의 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 표시할 수도 있다. 비디오 인코더 (22) 는 또한 CU 에 대한 Cr 잔차 블록을 생성할 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 원래의 Cr 코딩 블록에서의 대응하는 샘플 사이의 차이를 표시할 수도 있다.
더욱이, 상기 논의된 바와 같이, 비디오 인코더 (22) 는 CU 의 잔차 블록들 (예를 들어, 루마, Cb, 및 Cr 잔차 블록들) 을 하나 이상의 변환 블록들 (예를 들어, 루마, Cb, 및 Cr 변환 블록들) 로 분해하기 위해 쿼드-트리 파티셔닝을 사용할 수도 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형 (예를 들어, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 루마 샘플들의 변환 블록, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각각의 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록을 가질 수도 있다. TU 의 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3 개의 별도의 컬러 평면들을 갖는 픽처들에서, TU 는 단일 변환 블록 및 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (22) 는 TU 에 대한 계수 블록을 생성하기 위해 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 예를 들어, 비디오 인코더 (22) 는 TU 에 대한 루마 계수 블록을 생성하기 위해 TU 의 루마 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2-차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (22) 는 TU 에 대한 Cb 계수 블록을 생성하기 위해 TU 의 Cb 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 비디오 인코더 (22) 는 TU 에 대한 Cr 계수 블록을 생성하기 위해 TU 의 Cr 변환 블록에 하나 이상의 변환들을 적용할 수도 있다.
일부 예들에서, 비디오 인코더 (22) 는 변환 블록에 대한 변환들의 적용을 스킵한다. 이러한 예들에서, 비디오 인코더 (22) 는 변환 계수들과 동일한 방식으로 잔차 샘플 값들을 처리할 수도 있다. 따라서, 비디오 인코더 (22) 가 변환들의 적용을 스킵하는 예들에서, 변환 계수들 및 계수 블록들의 다음의 논의는 잔차 샘플들의 변환 블록들에 적용가능할 수도 있다.
계수 블록 (예를 들어, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록) 을 생성한 후, 비디오 인코더 (22) 는 계수 블록을 양자화하여, 계수 블록을 표현하는데 사용되는 데이터의 양을 가능한 대로 감소시켜, 추가 압축을 잠재적으로 제공할 수도 있다. 양자화는 일반적으로 일 범위의 값들이 단일 값으로 압축되는 프로세스를 지칭한다. 예를 들어, 양자화는, 일 값을 정수로 나누고, 그 후 가장 가까운 정수로 라운딩하는 것 (rounding) 에 의해 행해질 수도 있다. 계수 블록을 양자화하기 위해, 비디오 인코더 (22) 는 계수 블록의 변환 계수들을 양자화할 수도 있다. 비디오 인코더 (22) 가 계수 블록을 양자화한 후, 비디오 인코더 (22) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (22) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들에 대해 콘텍스트-적응 이진 산술 코딩 (CABAC) 또는 다른 엔트로피 코딩 기법들을 수행할 수도 있다.
비디오 인코더 (22) 는 코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 따라서, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함한다. 비트스트림은 네트워크 추상화 계층 (NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 타입의 표시 및 그 데이터를 에뮬레이션 방지 비트들에 필요에 따라 산재된 원시 바이트 시퀀스 페이로드 (RBSP) 의 형태로 포함하는 바이트들을 포함하는 신택스 구조이다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함할 수도 있고 RBSP 를 캡슐화할 수도 있다. NAL 유닛 헤더는 NAL 유닛 타입 코드를 표시하는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 특정된 NAL 유닛 타입 코드는 NAL 유닛의 타입을 표시한다. RBSP 는 NAL 유닛 내에 캡슐화되는 정수 개의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 인스턴스들에서, RBSP 는 제로 비트들을 포함한다.
비디오 디코더 (30) 는 비디오 인코더 (22) 에 의해 생성된 비트스트림을 수신할 수도 있다. 비디오 디코더 (30) 는 비디오 데이터의 픽처들을 재구성하기 위해 비트스트림을 디코딩할 수도 있다. 비트스트림을 디코딩하는 것의 일부로서, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득하기 위해 비트스트림을 파싱할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비디오 데이터를 재구성하기 위한 프로세스는 일반적으로 비디오 인코더 (22) 에 의해 수행되는 프로세스와 상반될 수도 있다. 예를 들어, 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들을 결정하기 위해 PU들의 모션 벡터들을 사용할 수도 있다. 추가로, 비디오 디코더 (30) 는 현재의 CU 의 TU들의 계수 블록들을 역 양자화할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 TU들의 변환 블록들을 재구성하기 위해 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들의 샘플들을 현재의 CU 의 TU들의 변환 블록들의 대응하는 샘플들에 부가함으로써 현재의 CU 의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 픽처를 재구성할 수도 있다.
HEVC 의 공통 개념들 및 소정의 설계 양태들은 블록 파티션에 대한 기법들에 초점을 맞추어 이하에 설명된다. HEVC 에서, 슬라이스에서의 최대 코딩 유닛은 CTU 로 불린다. CTU 의 사이즈는 HEVC 메인 프로파일에서 16x16 에서 64x64 까지의 범위일 수도 있지만, 8x8 CTU 사이즈들이 또한 지원될 수도 있다. 따라서, HEVC 에서의 CTU 의 사이즈는 8x8 에서 64x64 까지의 범위일 수도 있다. 일부 예들에서, CU 는 동일한 사이즈의 CTU 일 수도 있다. 각각의 CU 는 인트라 코딩 모드 또는 인터 코딩 모드와 같은 하나의 코딩 모드로 코딩된다. 스크린 콘텐츠에 대한 코딩 모드들 (예를 들어, 인트라 블록 카피 모드들, 팔렛트-기반 코딩 모드들 등) 을 포함하는 다른 코딩 모드들이 또한 가능하다. CU 가 인터 코딩되면 (즉, 인터 모드가 적용됨), CU 는 예측 유닛들 (PU들) 로 추가로 파티셔닝될 수도 있다. 예를 들어, CU 는 2 또는 4 개의 PU들로 파티셔닝될 수도 있다. 다른 예에서, 전체 CU 는 추가 파티셔닝이 적용되지 않을 때 단일 PU 로서 취급된다. HEVC 예들에서, 2 개의 PU들이 하나의 CU 에 존재하면, 2 개의 PU들은 CU 의 하프 사이즈 직사각형들 또는 1/4 또는 3/4 사이즈를 가진 2 개의 직사각형 사이즈일 수 있다. CTU 는 각각의 루마 및 크로마 성분에 대한 코딩 트리 블록 (CTB) 을 포함할 수도 있다. CTB 는 하나 이상의 코딩 블록들 (CB들) 을 포함할 수도 있다. CB 는 일부 예들에서 CU 로도 또한 지칭될 수도 있다. 일부 예들에서, 용어 CU 는 이진-트리 리프 노드를 지칭하는데 사용될 수도 있다.
I 슬라이스에 대해, 루마-크로마-분리된 블록 파티셔닝 구조가 제안된다. 하나의 CTU 의 루마 성분 (즉, 루마 CTB) 은 QTBT 구조에 의해 루마 CB들로 파티셔닝되고, 그 CTU 의 2 개의 크로마 성분들 (예를 들어, Cr 및 Cb) (즉, 2 개의 크로마 CTB들) 은 다른 QTBT 구조에 의해 크로마 CB들로 파티셔닝된다.
P 및 B 슬라이스들에 대해, 루마 및 크로마에 대한 블록 파티셔닝 구조는 공유된다. 즉, 하나의 CTU (루마와 크로마 양자 모두를 포함함) 는 하나의 QTBT 구조에 의해 CU들로 파티셔닝된다.
CU 가 인터 코딩되면, 모션 정보의 하나의 세트 (예를 들어, 모션 벡터, 예측 방향, 및 참조 픽처) 가 각각의 PU 에 대해 존재한다. 추가로, 각각의 PU 는 모션 정보의 세트를 도출하기 위해 고유 인터 예측 모드로 코딩된다. 그러나, 2 개의 PU들이 고유하게 코딩되는 경우라도, 2 개의 PU들은 일부 상황들에서 동일한 모션 정보를 여전히 가질 수도 있는 것으로 이해되어야 한다.
J. An 등, "Block partitioning structure for next generation video coding", International Telecommunication Union, COM16-C966, Sep. 2015 (이하에, "VCEG proposal COM16-C966") 에서, 쿼드-트리-이진-트리 (QTBT) 파티셔닝 기법들은 HEVC 를 넘어서는 미래의 비디오 코딩 표준으로 제안되었다. 시뮬레이션들은 제안된 QTBT 구조가 사용된 HEVC 에서의 쿼드-트리 구조보다 더 효율적이라는 것을 보여주었다. H. Huang, K. Zhang, Y.-W. Huang, S. Lei, "EE2.1: Quadtree plus binary tree structure integration with JEM tools", JVET-C0024, June, 2016 에서 설명된 것과 같은 QTBT 구조는, JEM 소프트웨어에서 채택된다. JEM 소프트웨어에서의 QTBT 구조의 채택은 J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, "Algorithm Description of Joint Exploration Test Model 4", JVET-D1001, October, 2016 에서 설명된다. JEM 소프트웨어는 JVET (Joint Video Exploration Team) 그룹에 대한 참조 소프트웨어인 HEVC 모델 (HM) 소프트웨어에 기초한다.
QTBT 구조에서, 쿼드트리의 루트 노드인 CTU (또는 I 슬라이스에 대한 CTB) 는 맨 처음 쿼드트리 구조에 의해 파티셔닝된다. 쿼드트리 리프 노드들은 이진 트리 구조에 의해 추가로 파티셔닝될 수도 있다. 이진 트리 리프 노드들, 즉 코딩 블록들 (CB들) 은, 어떤 추가 파티셔닝 없이도 예측 및 변환을 위해 사용될 수도 있다. P 및 B 슬라이스들에 대해, 하나의 CTU 에서의 루마 및 크로마 CTB들은 동일한 QTBT 구조를 공유한다. I 슬라이스에 대해, 루마 CTB 는 QTBT 구조에 의해 CB들로 파티셔닝될 수도 있고, 2 개의 크로마 CTB들은 다른 QTBT 구조에 의해 크로마 CB들로 파티셔닝될 수도 있다.
최소 허용된 쿼드-트리 리프 노드 사이즈는 신택스 엘리먼트 MinQTSize 의 값으로 비디오 디코더에 표시될 수도 있다. 쿼드트리 리프 노드 사이즈가 (예를 들어, 신택스 엘리먼트 MaxBTSize 로 표시된 바와 같은) 최대 허용된 이진 트리 루트 노드 사이즈 이하이면, 쿼드-트리 리프 노드는 이진-트리 파티셔닝을 사용하여 추가로 파티셔닝될 수 있다. 하나의 노드의 이진-트리 파티셔닝은 그 노드가 (예를 들어, 신택스 엘리먼트 MinBTSize 로 표시된 바와 같은) 최소 허용된 이진-트리 리프 노드 사이즈 또는 (예를 들어, 신택스 엘리먼트 MaxBTDepth 로 표시된 바와 같은) 최대 허용된 이진-트리 심도에 도달할 때까지 반복될 수 있다. 이진 트리 리프 노드, 이를 테면 CU (또는 I 슬라이스에 대한 CB) 는, 어떤 추가 파티셔닝 없이도 예측 (예를 들어, 인트라-픽처 또는 인터-픽처 예측) 및 변환을 위해 사용될 것이다. 일반적으로, QTBT 기법들에 따르면, 이진-트리 스플리팅을 위한 2 개의 스플리팅 타입들: 대칭적 수평 스플리팅 및 대칭적 수직 스플리팅이 존재한다. 각각의 경우에, 블록은 수평적으로 또는 수직적으로 중 어느 하나로, 블록을 양분함으로써 스플리팅된다.
QTBT 파티셔닝 구조의 하나의 예에서, CTU 사이즈는 128x128 (예를 들어, 128x128 루마 블록, 대응하는 64x64 크로마 Cr 블록, 및 대응하는 64x64 크로마 Cb 블록) 로서 설정되고, MinQTSize 는 16x16 으로서 설정되고, MaxBTSize 는 64x64 로서 설정되고, (폭 및 높이 양자 모두에 대한) MinBTSize 는 4 로서 설정되고, 그리고 MaxBTDepth 는 4 로서 설정된다. 쿼드-트리 파티셔닝은 쿼드-트리 리프 노드들을 생성하기 위해 먼저 CTU 에 적용된다. 쿼드-트리 리프 노드들은 16x16 (즉, MinQTSize 는 16x16 임) 에서 128x128 (즉, CTU 사이즈) 까지의 사이즈를 가질 수도 있다. QTBT 파티셔닝의 하나의 예에 따르면, 리프 쿼드-트리 노드가 128x128 이면, 리프 쿼드-트리 노드는 리프 쿼드-트리 노드의 사이즈가 MaxBTSize (즉, 64x64) 를 초과하기 때문에 이진-트리에 의해 추가로 스플리팅될 수 없다. 그렇지 않으면, 리프 쿼드-트리 노드는 이진-트리에 의해 추가로 파티셔닝된다. 따라서, 쿼드-트리 리프 노드는 또한 이진-트리에 대한 루트 노드이고 그의 이진-트리 심도는 0 으로서 정의된다. MaxBTDepth (즉, 4) 에 도달하는 이진-트리 심도는 추가의 스플리팅이 없음을 의미한다. MinBTSize (즉, 4) 와 같은 폭을 갖는 이진-트리 노드는 추가의 수평 스플리팅이 없음을 의미한다. 유사하게, MinBTSize 와 같은 높이를 갖는 이진-트리 노드는 추가의 수직 스플리팅이 없음을 의미한다. 이진-트리의 리프 노드들 (예를 들어, CU들) 은 어떤 추가 파티셔닝 없이도 (예를 들어, 예측 프로세스 및 변환 프로세스를 수행함으로써) 추가로 프로세싱된다.
도 2 에 도시된 바와 같이, 파티셔닝의 각각의 레벨은 4 개의 서브-블록들로 스플리팅된 쿼드-트리이다. 검정 블록은 리프-노드 (즉, 추가로 스플리팅되지 않은 블록) 의 예이다. CTU 는 노드들이 코딩 유닛들인 쿼드-트리 구조에 따라 분할된다. 쿼드-트리 구조에서의 복수의 노드들은 리프 노드들 및 비-리프 노드들을 포함한다. 리프 노드들은 트리 구조에 자식 노드들을 갖지 않는다 (즉, 리프 노드들을 추가로 스플리팅되지 않는다). 비-리프 노드들은 트리 구조의 루트 노드를 포함한다. 루트 노드는 비디오 데이터의 초기 비디오 블록 (예를 들어, CTB) 에 대응한다. 복수의 노드들의 각 개별의 비-루트 노드에 대해, 개별의 비-루트 노드는 개별의 비-루트 노드의 트리 구조에서의 부모 노드에 대응하는 비디오 블록의 서브-블록인 비디오 블록에 대응한다. 복수의 비-루트 노드들의 각 개별의 비-리프 노드는 트리 구조에 하나 이상의 자식 노드들을 갖는다.
HEVC 에서, 도 3 에 도시된 바와 같이, 인터 예측 모드로 코딩된 CU 에 대한 8 개의 파티션 모드들, 즉, PART_2Nx2N, PART_2NxN, PART_Nx2N, PART_NxN, PART_2NxnU, PART_2NxnD, PART_nLx2N 및 PART_nRx2N 이 존재한다. 도 3 에 도시된 바와 같이, 파티션 모드 PART_2Nx2N 으로 코딩된 CU 는 추가로 스플리팅되지 않는다. 즉, 전체 CU 는 단일 PU (PU0) 로서 취급된다. 파티션 모드 PART_2NxN 으로 코딩된 CU 는 2 개의 PU들 (PU0 및 PU1) 로 대칭적 수평 스플리팅된다. 파티션 모드 PART_Nx2N 으로 코딩된 CU 는 2 개의 PU들로 대칭적 수직 스플리팅된다. 파티션 모드 PART_NxN 으로 코딩된 CU 는 4 개의 동일 사이즈의 PU들 (PU0, PU1, PU2, PU3) 로 대칭적 스플리팅된다.
파티션 모드 PART_2NxnU 로 코딩된 CU 는 CU 의 사이즈의 1/4 을 갖는 하나의 PU0 (상부 PU) 및 CU 의 사이즈의 3/4 을 갖는 하나의 PU1 (하부 PU) 로 비대칭적 수평 스플리팅된다. 파티션 모드 PART_2NxnD 로 코딩된 CU 는 CU 의 사이즈의 3/4 을 갖는 하나의 PU0 (상부 PU) 및 CU 의 사이즈의 1/4 을 갖는 하나의 PU1 (하부 PU) 로 비대칭적 수평 스플리팅된다. 파티션 모드 PART_nLx2N 으로 코딩된 CU 는 CU 의 사이즈의 1/4 을 갖는 하나의 PU0 (좌측 PU) 및 CU 의 사이즈의 3/4 을 갖는 하나의 PU1 (우측 PU) 로 비대칭적 수직 스플리팅된다. 파티션 모드 PART_nRx2N 으로 코딩된 CU 는 CU 의 사이즈의 3/4 을 갖는 하나의 PU0 (좌측 PU) 및 CU 의 사이즈의 1/4 을 갖는 하나의 PU1 (우측 PU) 로 비대칭적 수직 스플리팅된다.
도 4a 는 QTBT 파티셔닝 기법들을 사용하여 파티셔닝된 블록 (50) (예를 들어, CTB) 의 예를 예시한다. 도 4a 에 도시된 바와 같이, QTBT 파티션 기법들을 사용하면, 결과의 블록들의 각각은 각각의 블록의 중심을 통해 대칭적으로 스플리팅된다. 도 4b 는 도 4a 의 블록 파티셔닝에 대응하는 트리 구조를 예시한다. 도 4b 에서의 실선들은 쿼드-트리 스플리팅을 표시하고 점선들은 이진-트리 스플리팅을 표시한다. 하나의 예에서, 이진-트리의 각각의 스플리팅 (즉, 비-리프) 노드에서, 신택스 엘리먼트 (예를 들어, 플래그) 는 수행된 스플리팅의 타입 (예를 들어, 수평 또는 수직) 을 표시하기 위해 시그널링되고, 여기서 0 은 수평 스플리팅을 표시하고 1 은 수직 스플리팅을 표시한다. 쿼드-트리 스플리팅에 대해, 쿼드-트리 스플리팅은 항상 블록을 동일 사이즈의 4 개의 서브-블록들로 수평으로 및 수직으로 스플리팅하기 때문에 스플리팅 타입을 표시할 필요가 없다.
도 4b 에 도시된 바와 같이, 노드 (70) 에서, 블록 (50) 은 QT 파티셔닝을 사용하여, 도 4a 에 도시된, 4 개의 블록들 (51, 52, 53, 및 54) 로 스플리팅된다. 블록 (54) 은 추가로 스플리팅되지 않고, 따라서 리프 노드이다. 노드 (72) 에서, 블록 (51) 은 BT 파티셔닝을 사용하여 2 개의 블록들로 추가로 스플리팅된다. 도 4b 에 도시된 바와 같이, 노드 (72) 는 수직 스플리팅을 표시하는 1 로 마크된다. 이로써, 노드 (72) 에서의 스플리팅은 블록 (57) 및 양자의 블록들 (55 및 56) 을 포함하는 블록을 초래한다. 블록들 (55 및 56) 은 노드 (74) 에서의 추가의 수직 스플리팅에 의해 생성된다. 노드 (76) 에서, 블록 (52) 은 BT 파티셔닝을 사용하여 2 개의 블록들 (58 및 59) 로 추가로 스플리팅된다. 도 4b 에 도시된 바와 같이, 노드 (76) 는 수평 스플리팅을 표시하는 1 로 마크된다.
노드 (78) 에서, 블록 (53) 은 QT 파티셔닝을 사용하여 4 개의 동일 사이즈의 블록들로 스플리팅된다. 블록들 (63 및 66) 은 이 QT 파티셔닝으로부터 생성되고 추가로 스플리팅되지 않는다. 노드 (80) 에서, 좌측 상부 블록은 수직 이진-트리 스플리팅을 사용하여 먼저 스플리팅되어 블록 (60) 및 우측 수직 블록을 초래한다. 우측 수직 블록은 그 후 수평 이진-트리 스플리팅을 사용하여 블록들 (61 및 62) 로 스플리팅된다. 노드 (78) 에서의 쿼드-트리 스플리팅으로부터 생성된 우측 하부 블록은, 노드 (84) 에서 수평 이진-트리 스플리팅을 사용하여 블록들 (64 및 65) 로 스플리팅된다.
본 개시의 기법들에 따른 하나의 예에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 PxQ 의 사이즈를 갖는 비디오 데이터의 현재의 블록을 수신하도록 구성될 수도 있다. 일부 예들에서, 비디오 데이터의 현재의 블록은 비디오 데이터의 현재의 블록의 코딩된 표현으로 지칭될 수도 있다. 일부 예들에서, P 는 현재의 블록의 폭에 대응하는 제 1 값일 수도 있고 Q 는 현재의 블록의 높이에 대응하는 제 2 값일 수도 있다. 현재의 블록의 높이 및 폭, 예를 들어, P 및 Q 에 대한 값들은 샘플들의 수에 관하여 표현될 수도 있다. 일부 예들에서, P 는 Q 와 같지 않을 수도 있고; 그리고 이러한 예들에서, 현재의 블록은 단변과 장변을 포함한다. 예를 들어, Q 의 값이 P 의 값보다 더 크면, 블록의 좌변 (left side) 은 장변이고 상변 (top side) 은 단변이다. 예를 들어, Q 의 값이 P 의 값보다 더 작으면, 블록의 좌변은 단변이고 상변은 장변이다.
비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하도록 구성될 수도 있다. 일부 예들에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 코딩하는 것은 제 1 값에 제 2 값을 더한 값이 2 의 거듭제곱과 같지 않다고 결정하는 것; 다수의 샘플링된 이웃하는 샘플들을 생성하기 위해, 단변에 이웃하는 다수의 샘플들 또는 장변에 이웃하는 다수의 샘플들 중 적어도 하나를 샘플링하는 것; 및 샘플링된 이웃하는 샘플들의 수를 사용하여 DC 값을 계산함으로써 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성하는 것을 포함할 수도 있다.
따라서, 하나의 예에서, 비디오 인코더 (22) 는 비디오 데이터의 초기 비디오 블록 (예를 들어, 코딩 트리 블록 또는 CTU) 의 인코딩된 표현을 생성할 수도 있다. 초기 비디오 블록의 인코딩된 표현을 생성하는 것의 일부로서, 비디오 인코더 (22) 는 복수의 노드들을 포함하는 트리 구조를 결정한다. 예를 들어, 비디오 인코더 (22) 는 QTBT 구조를 사용하여 트리 블록을 파티셔닝할 수도 있다.
QTBT 구조에서의 복수의 노드들은 복수의 리프 노드들 및 복수의 비-리프 노드들을 포함할 수도 있다. 리프 노드들은 트리 구조에 자식 노드들을 갖지 않는다. 비-리프 노드들은 트리 구조의 루트 노드를 포함한다. 루트 노드는 초기 비디오 블록에 대응한다. 복수의 노드들의 각 개별의 비-루트 노드에 대해, 개별의 비-루트 노드는 개별의 비-루트 노드의 트리 구조에서의 부모 노드에 대응하는 비디오 블록의 서브-블록인 비디오 블록 (예를 들어, 코딩 블록) 에 대응한다. 복수의 비-리프 노드들의 각 개별의 비-리프 노드는 트리 구조에 하나 이상의 자식 노드들을 갖는다. 일부 예들에서, 픽처 경계에서의 비-리프 노드는 강제된 스플릿으로 인해 하나의 자식 노드만을 가질 수도 있고 자식 노드들 중 하나는 픽처 경계 외부의 블록에 대응한다.
F. Le
Figure pct00001
, T. Poirier, F. Urban, "Asymmetric Coding Units in QTBT", JVET-D0064, Chengdu, Oct. 2016 (이하에 "JVET-D0064") 에서, 비대칭 코딩 유닛들은 QTBT 와 함께 사용되는 것으로 제안되었다. 4 개의 새로운 이진-트리 스플리팅 모드들 (예를 들어, 파티션 타입들) 이 QTBT 프레임워크에 도입되어, 새로운 스플리팅 구성들을 허용하였다. 도 5 로 도시된 바와 같이, QTBT 에서 이미 이용가능한 스플리팅 모드들에 더하여 소위 비대칭 스플리팅 모드들이 제안되었다. 도 5 에 도시된 바와 같이, HOR_UP, HOR_DOWN, VER_LEFT, 및 VER_RIGHT 파티션 타입들은 비대칭 스플리팅 모드들의 예들이다.
추가된 비대칭 스플리팅 모드들에 따르면, 사이즈 S 를 가진 코딩 유닛은 수평 (예를 들어, HOR_UP 또는 HOR_DOWN) 또는 수직 (예를 들어, VER_LEFT 또는 VER_RIGHT) 방향 중 어느 하나로 사이즈들 S/4 및 3.S/4 을 가진 2 개의 서브-CU들로 분할된다. JVET-D0064 에서 새롭게 추가된 CU 폭 또는 높이는 단지 12 또는 24 일 수 있다.
비대칭 코딩 유닛들 (예를 들어, 도 5 에 도시된 것들) 에서, 12 및 24 와 같이, 2 의 거듭제곱과 같지 않은 사이즈를 가진 변환들이 도입된다. 이에 따라, 이러한 비대칭 코딩 유닛들은 변환 프로세서에서 보상될 수 없는 더 많은 팩터들을 도입한다. 추가적인 프로세싱이 이러한 비대칭 코딩 유닛들에 대해 변환을 수행하거나 또는 역 변환을 수행하는데 필요할 수도 있다.
일반적으로 인트라 예측을 참조하면, 비디오 코더 (예를 들어, 비디오 인코더 (22) 및/또는 비디오 디코더 (30)) 는 인트라 예측을 수행하도록 구성될 수도 있다. 인트라 예측은 그의 공간 이웃하는 재구성된 이미지 샘플들을 사용하여 이미지 블록 예측을 수행하는 것으로서 설명될 수도 있다. 도 6a 는 16x16 블록에 대한 인트라 예측의 예를 도시한다. 도 6a 의 예에서, (정사각형 (202) 에서의) 16x16 블록은 (화살표 (204) 로 표시된 바와 같이) 선택된 예측 방향을 따라 상방 행 및 좌측 열에 로케이트된 상방, 좌측 및 좌측-상방 이웃하는 재구성된 샘플들 (참조 샘플들) 로부터 예측된다.
HEVC 에서, 인트라 예측은, 다른 것들 중에서도, 35 개의 상이한 모드들을 포함한다. 예시적인 35 개의 상이한 모드들은 평면 모드, DC 모드, 및 33 개의 각도 모드들을 포함한다. 도 6b 는 33 개의 상이한 각도 모드들을 예시한다.
평면 모드에 대해, 예측 샘플은 도 6c 에 도시된 바와 같이 생성된다. NxN 블록에 대해 평면 예측을 수행하기 위해, (x, y) 에 로케이트된 각각의 샘플 pxy 에 대해, 예측 값이 바이리니어 필터로, 4 개의 특정 이웃하는 재구성된 샘플들, 즉 참조 샘플들을 사용하여 계산된다. 4 개의 참조 샘플들은 우측-상단 재구성된 샘플 TR, 좌측-하단 재구성된 샘플 BL, L 로 표시된 현재의 샘플의 동일한 열 (rx,-1) 에 로케이트된 재구성된 샘플 및 T 로 표시된 현재의 샘플의 행 (r-1,y) 에 로케이트된 재구성된 샘플을 포함한다. 평면 모드는 식 (1) 에 따라 이하와 같이 공식화될 수 있다:
Figure pct00002
DC 모드에 대해, 예측 블록은 DC 값으로 채워진다. 일부 예들에서, DC 값은 식 (2) 에 따라 이웃하는 재구성된 샘플들의 평균 값을 나타낼 수도 있다:
Figure pct00003
식 (2) 를 참조하면, 도 6d 에 도시된 바와 같이, M 은 상방 이웃하는 재구성된 샘플들의 수이고, N 은 좌측 이웃하는 재구성된 샘플들의 수이고, A k 는 k 번째 상방 이웃하는 재구성된 샘플을 표현하고 그리고 L k 는 k 번째 좌측 이웃하는 재구성된 샘플을 표현한다. 일부 예들에서, 이웃하는 샘플들 모두가 이용가능하지 않을 (예를 들어, 존재하지 않거나 또는 아직 코딩/디코딩되지 않을) 때, 디폴트 값 1 << (bitDepth-1) 이 각각의 이용가능하지 않은 샘플에 할당될 수도 있다. 이러한 예들에서, 변수 bitDepth 는 루마 또는 크로마 성분 중 어느 하나의 비트 심도를 표시한다. 부분 개수의 이웃하는 샘플들이 이용가능하지 않을 때, 그 이용가능하지 않은 샘플들은 이용가능한 샘플들에 의해 패딩될 (padded) 수도 있다. 이들 예들과 일치하여, M 은 보다 광범위하게 상방 이웃하는 샘플들의 수를 지칭할 수도 있고, 여기서 상방 이웃하는 샘플들의 수는 하나 이상의 재구성된 샘플들, 그에 할당된 디폴트 값 (예를 들어, 1 << (bitDepth-1) 에 따라 할당된 디폴트 값) 을 갖는 하나 이상의 샘플들, 및/또는 하나 이상의 이용가능한 샘플들에 의해 패딩된 하나 이상의 샘플들을 포함한다. 유사하게, N 은 또한 보다 광범위하게 좌측 이웃하는 샘플들의 수를 지칭할 수도 있고, 여기서 좌측 이웃하는 샘플들의 수는 하나 이상의 재구성된 샘플들, 그에 할당된 디폴트 값 (예를 들어, 1 << (bitDepth-1) 에 따라 할당된 디폴트 값) 을 갖는 하나 이상의 샘플들, 및/또는 하나 이상의 이용가능한 샘플들에 의해 패딩된 하나 이상의 샘플들을 포함한다. 이와 관련하여, 이웃하는 샘플들에 대한 언급은 이용가능하지 않은 이웃하는 샘플들에 대한 값들의 치환/대체 (substitution/replacement) 때문에 이용가능한 이웃하는 샘플들 및/또는 이용가능하지 않은 이웃하는 샘플들을 지칭할 수도 있는 것으로 이해된다. 유사하게, Ak 는 따라서 k 번째 상방 이웃하는 샘플을 표시할 수도 있고; 그리고 k 번째 상방 이웃하는 샘플이 이용가능하지 않으면, 치환/대체 값 (예를 들어, 디폴트 값 또는 패딩된 값) 이 대신 사용될 수도 있다. 유사하게, Lk 는 따라서 k 번째 좌측 이웃하는 샘플을 표시할 수도 있고; 그리고 k 번째 좌측 이웃하는 샘플이 이용가능하지 않으면, 치환/대체 값 (예를 들어, 디폴트 값 또는 패딩된 값) 이 대신 사용될 수도 있다.
다음의 문제들이 인트라 DC 모드 예측에 따라 비디오 데이터를 코딩하기 위한 일부 현재의 제안들로 관측되었다. 첫번째 문제는 다음을 포함한다: T 로서 노트된 총 이웃하는 샘플들의 수가 임의의 2k (여기서 k 는 정수이다) 와 같지 않을 때, 이웃하는 재구성된 샘플들의 평균 값의 계산에서의 나눗셈 연산은 시프팅 연산으로 대체될 수 없다. 이것은 나눗셈 연산이 프로덕트 설계에서의 다른 연산들보다 훨씬 더 높은 컴퓨테이션 복잡성을 부과하기 때문에 문제가 있다. 두번째 문제는 다음을 포함한다: 나눗셈 연산은 또한, 일부 보간이 필요하지만, 이웃하는 샘플들의 수가 2 의 거듭제곱과 같지 않을 (예를 들어, 임의의 2k (여기서 k 는 정수이다) 와 같지 않을) 때 발생할 수도 있다. 예를 들어, 참조 샘플들은 (스트롱 인트라 필터가 적용될 때와 같이) 하나의 단부로부터 다른 단부까지의 거리에 따라 선형 보간될 수도 있고, 단부 샘플들은 입력으로서 사용되고 다른 샘플들은 그 단부 샘플들 사이에 있는 것으로서 보간된다. 이 예에서, 길이 (예를 들어, 하나의 단부로부터 다른 단부까지의 거리) 가 2 의 거듭제곱이 아니면, 나눗셈 연산이 요구된다.
상기 언급된 문제들을 해결하기 위해, 다음의 기법들이 제안된다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 다음의 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 상반된 방식으로 다음의 기법들을 수행하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (22) 는 다음의 기법들을 수행하도록 구성될 수도 있고, 비디오 디코더 (30) 는 비디오 인코더 (22) 에 대해 상반된 방식으로 기법들을 수행하도록 구성될 수도 있다. 다음의 아이템화된 기법들은 개별적으로 적용될 수도 있다. 추가로, 다음의 기법들의 각각은 임의의 조합으로 함께 사용될 수도 있다. 이하에 설명된 기법들은 나눗셈 연산 대신에 시프트 연산의 사용을 가능하게 하며, 그것에 의하여 컴퓨테이션 복잡성을 감소시키고, 따라서 더 큰 코딩 효율을 허용한다.
본 개시의 하나의 예에 따르면, 인트라 DC 모드 예측이 사이즈 PxQ 를 가진 블록에 대해 적용될 때 (여기서 (P+Q) 는 2 의 거듭제곱이 아니다), 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 이하에 설명된 하나 이상의 기법들을 사용하여 DC 값을 도출할 수도 있다. 이하에 설명된 하나 이상의 기법들은 인트라 DC 모드 예측이 사이즈 PxQ (여기서 (P+Q) 는 2 의 거듭제곱이 아니다) 를 가진 블록에 대해 적용되고, 좌측 및 상방 이웃하는 샘플들 양자 모두가 이용가능할 때 적용될 수도 있다. 이하에 설명된 하나 이상의 예의 기법들에서, 식 (2) 는:
Figure pct00004
을 나타내며, 여기서 도 6d 에 도시된 바와 같이 M 은 상방 이웃하는 구조화된 샘플들의 수이고, N 은 좌측 이웃하는 재구성된 샘플들의 수이고, A k 는 k 번째 상방 이웃하는 재구성된 샘플을 표현하고 L k 는 k 번째 좌측 이웃하는 재구성된 샘플을 표현한다. 일부 예들에서, 이웃하는 샘플들 모두가 이용가능하지 않을 (예를 들어, 존재하지 않거나 또는 아직 코딩/디코딩되지 않을) 때, 디폴트 값 1 << (bitDepth-1) 은 각각의 이용가능하지 않은 샘플에 할당될 수도 있다. 이러한 예들에서, 변수 bitDepth 는 루마 또는 크로마 성분 중 어느 하나의 비트 심도를 표시한다.
부분 개수의 이웃하는 샘플들이 이용가능하지 않을 때, 이용가능하지 않은 샘플들은 이용가능한 샘플들에 의해 패딩될 수도 있다. 이들 예들과 일치하여, M 은 보다 광범위하게 상방 이웃하는 샘플들의 수를 지칭할 수도 있고, 여기서 상방 이웃하는 샘플들의 수는 하나 이상의 재구성된 샘플들, 이에 할당된 디폴트 값 (예를 들어, 1 << (bitDepth-1) 에 따라 할당된 디폴트 값) 을 갖는 하나 이상의 샘플들, 및/또는 하나 이상의 이용가능한 샘플들에 의해 패딩된 하나 이상의 샘플들을 포함한다. 유사하게, N 은 또한 보다 광범위하게 좌측 이웃하는 샘플들의 수를 지칭할 수도 있고, 여기서 좌측 이웃하는 샘플들의 수는 하나 이상의 재구성된 샘플들, 이에 할당된 디폴트 값 (예를 들어, 1 << (bitDepth-1) 에 따라 할당된 디폴트 값) 을 갖는 하나 이상의 샘플들, 및/또는 하나 이상의 이용가능한 샘플들에 의해 패딩된 이상의 샘플들을 포함한다. 이와 관련하여, 이웃하는 샘플들에 대한 언급은 이용가능하지 않은 이웃하는 샘플들에 대한 값들의 치환/대체 때문에 이용가능한 이웃하는 샘플들 및/또는 이용가능하지 않은 이웃하는 샘플들을 지칭할 수도 있는 것으로 이해된다. 유사하게, Ak 는 따라서 k 번째 상방 이웃하는 샘플을 표시할 수도 있고; 그리고 k 번째 상방 이웃하는 샘플이 이용가능하지 않으면, 치환/대체 값 (예를 들어, 디폴트 값 또는 패딩된 값) 이 대신 사용될 수도 있다. 유사하게, Lk 는 따라서 k 번째 좌측 이웃하는 샘플을 표시할 수도 있고; 그리고 k 번째 좌측 이웃하는 샘플이 이용가능하지 않으면, 치환/대체 값 (예를 들어, 디폴트 값 또는 패딩된 값) 이 대신 사용될 수도 있다.
본 개시의 제 1 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용할 때, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는, 다운샘플링된 (또한 서브샘플링된 것으로 지칭될 수도 있다) 경계 상의 이웃하는 샘플들의 수가 더 짧은 경계 상의 이웃하는 샘플들의 수 (즉, min(M,N)) 와 같도록 비-정사각형 블록 (예를 들어, PxQ 블록, 여기서 P 는 Q 와 같지 않다) 의 더 긴 변의 경계 (긴 경계 또는 더 긴 경계로 지칭될 수도 있다) 상의 이웃하는 샘플들을 다운샘플링할 수도 있다. 일부 예들에서 min(M,N) 은 min(P,Q) 와 같을 수도 있다. 제 1 예의 기법은 이웃하는 샘플들의 본래의 수 (native number) 대신에 DC 값을 계산하기 위해 이웃하는 샘플들의 서브샘플링된 수를 사용하는 것을 포함한다. 이 예 뿐만 아니라 다른 예들을 위해 본 명세서에서 사용된 바와 같이, 이웃하는 샘플들의 본래의 수는 임의의 샘플링 (예를 들어, 다운샘플링 또는 업샘플링) 이 수행되기 전의 이웃하는 샘플들의 수를 지칭한다. 이용가능하지 않은 이웃하는 샘플에 값을 할당하는 것은 샘플링 프로세스를 구성하지 않는 것으로 이해된다. 일부 예들에서, 서브샘플링 프로세스는 데시메이션 샘플링 프로세스 또는 보간된 샘플링 프로세스일 수도 있다. 일부 예들에서, 더 긴 변 상의 이웃하는 샘플들을 더 짧은 경계 상의 이웃하는 샘플들의 수와 같도록 서브샘플링하는 기법은 min(M,N) 이 2 의 거듭제곱일 때만 인보크될 수도 있다. 다른 예들에서, 더 긴 변 상의 이웃하는 샘플들을 더 짧은 경계 상의 이웃하는 샘플들의 수와 같도록 서브샘플링하는 기법은 min(P,Q) 가 2 의 거듭제곱일 때만 인보크될 수도 있다.
도 7 은 본 명세서에서 설명된 나눗셈이 없는 (division-free) DC 값 계산 기법을 사용하여 더 긴 변의 경계 상의 이웃하는 샘플들을 서브샘플링하는 예의 기법을 도시한다. 도 7 의 예에서, 검정 샘플들은 DC 값을 계산하기 위해 수반되며; 그리고 도시된 바와 같이, 더 긴 변 상의 이웃하는 샘플들은 8 개의 이웃하는 샘플들로부터 4 개의 이웃하는 샘플들로 서브샘플링된다. 도 7 은 제 1 예의 기법의 예를 도시하고, 여기서 PxQ 블록에서 P 는 8 과 같고 Q 는 4 와 같다는 것이 추가로 설명된다. 도 7 의 예에서, PxQ 블록의 더 긴 변 상의 이웃하는 샘플들은 DC 값을 계산하기 전에 데시메이션 샘플링 프로세스에 따라 서브샘플링되는 것으로서 도시되는데, 이는 이웃하는 샘플들의 서브샘플링된 수가 이웃하는 샘플들의 본래의 수 대신에 DC 값을 계산하는데 있어서 사용된다는 것을 의미한다. 도 7 의 PxQ 블록 예에서, M 은 8 과 같고 N 은 4 와 같고, 그리고 M 은 상방 이웃 샘플들의 수가 이 예에서 4 인 더 짧은 경계 상의 샘플들의 수와 같도록 서브샘플링되는 것으로서 묘사된다. 이웃하는 샘플들의 서브샘플링된 수는 8 개의 이웃하는 샘플들 (4 개의 본래의 좌측 이웃하는 샘플들 및 4 개의 서브샘플링된 상방 이웃하는 샘플들) 을 포함하고, 이웃하는 샘플들의 본래의 수는 12 개의 이웃하는 샘플들 (8 개의 본래의 상방 이웃하는 샘플들 및 4 개의 본래의 좌측 이웃하는 샘플들) 을 포함한다는 것이 추가로 설명된다.
도 7 에 묘사된 예와는 상이한 예에 따르면, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 PxQ 블록의 더 긴 변과 더 짧은 변 양자 모두에 로케이트된 이웃하는 샘플들을 업샘플링할 수도 있다. 일부 예들에서, 더 긴 변 상의 서브샘플링 비는 더 짧은 변 상의 서브샘플링 비와는 상이할 수도 있다. 일부 예들에서, 다운샘플링한 후 더 짧은 변 및 더 긴 변에서의 이웃하는 샘플들의 총 수는 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱과 같도록 요구될 수도 있다. 일부 예들에서, k 의 값은 PxQ 의 블록 사이즈에 의존할 수도 있다. 예를 들어, k 의 값은 P 및/또는 Q 의 값들에 의존할 수도 있다. 예를 들어, k 의 값은 (P-Q) 의 절대 값과 같을 수도 있다. 일부 예들에서, 더 짧은 경계 및/또는 더 긴 경계 상의 이웃하는 샘플들을 서브샘플링하는 기법은 min(M,N) 이 2 의 거듭제곱일 때만 인보크될 수도 있다. 다른 예들에서, 더 짧은 경계 및/또는 더 긴 경계 상의 이웃하는 샘플들을 서브샘플링하는 기법은 min(P,Q) 가 2 의 거듭제곱일 때만 인보크될 수도 있다.
본 개시의 제 2 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용할 때, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 업샘플링된 경계 상의 이웃하는 샘플들의 수가 더 긴 경계 상의 이웃하는 샘플들의 수 (즉, max(M,N)) 와 같도록 비-정사각형 블록 (예를 들어, PxQ 블록, 여기서 P 는 Q 와 같지 않다) 의 더 짧은 변의 경계 (이는 짧은 경계 또는 더 짧은 경계로 지칭될 수도 있다) 상의 이웃하는 샘플들을 업샘플링할 수도 있다. 일부 예들에서, max(M,N) 은 max(P,Q) 와 같을 수도 있다. 제 2 예의 기법은 이웃하는 샘플들의 본래의 수 대신에 DC 값을 계산하기 위해 이웃하는 샘플들의 업샘플링된 수를 사용하는 것을 포함한다. 일부 예들에서, 업샘플링 프로세스는 듀플리케이터 샘플링 프로세스 또는 보간된 샘플링 프로세스일 수도 있다. 일부 예들에서, 더 짧은 변 상의 이웃하는 샘플들을 더 긴 경계 상의 이웃하는 샘플들의 수와 같도록 업샘플링하는 기법은 max(M,N) 이 2 의 거듭제곱일 때만 인보크될 수도 있다. 다른 예들에서, 더 짧은 변 상의 이웃하는 샘플들을 더 긴 경계 상의 이웃하는 샘플들의 수와 같도록 업샘플링하는 기법은 max(P,Q) 가 2 의 거듭제곱일 때만 인보크될 수도 있다.
다른 예들에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 PxQ 블록의 더 긴 변과 더 짧은 변 양자 모두에 로케이트된 이웃하는 샘플들을 업샘플링할 수도 있다. 일부 예들에서, 더 긴 변 상의 업샘플링 비는 더 짧은 변 상의 서브샘플링 비와는 상이할 수도 있다. 일부 예들에서, 업샘플링한 후 더 짧은 변 및 더 긴 변에서의 이웃하는 샘플들의 총 수는 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱과 같도록 요구될 수도 있다. 일부 예들에서, k 의 값은 PxQ 의 블록 사이즈에 의존할 수도 있다. 예를 들어, k 의 값은 P 및/또는 Q 의 값들에 의존할 수도 있다. 예를 들어, k 의 값은 (P-Q) 의 절대 값과 같을 수도 있다. 일부 예들에서, 더 짧은 경계 및/또는 더 긴 경계 상의 이웃하는 샘플들을 업샘플링하는 기법은 max(M,N) 이 2 의 거듭제곱일 때만 인보크될 수도 있다. 다른 예들에서, 더 짧은 경계 및/또는 더 긴 경계 상의 이웃하는 샘플들을 업샘플링하는 기법은 max(P,Q) 가 2 의 거듭제곱일 때만 인보크될 수도 있다.
본 개시의 제 3 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용할 때, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는, 비-정사각형 블록 (예를 들어, PxQ 블록, 여기서 P 는 Q 와 같지 않다) 의 더 짧은 변의 경계 (이는 짧은 경계 또는 더 짧은 경계로 지칭될 수도 있다) 상의 이웃하는 샘플들을 업샘플링하고 업샘플링된 더 짧은 경계 상의 이웃하는 샘플들의 수가 서브샘플링된 더 긴 경계 상의 이웃하는 샘플들의 수와 같도록 더 긴 변의 경계 (이는 긴 경계 또는 더 긴 경계로 지칭될 수도 있다) 상의 이웃하는 샘플들을 다운샘플링할 수도 있다. 일부 예들에서, 업샘플링 프로세스는 듀플리케이터 샘플링 프로세스 또는 보간된 샘플링 프로세스일 수도 있다. 일부 예들에서, 서브샘플링 프로세스는 데시메이션 샘플링 프로세스 또는 보간된 샘플링 프로세스일 수도 있다. 일부 예들에서, 서브샘플링 및 업샘플링한 후 이웃하는 샘플들의 총 수는 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱이도록 요구될 수도 있다. 일부 예들에서, k 의 값은 PxQ 의 블록 사이즈에 의존할 수도 있다. 예를 들어, k 의 값은 P 및/또는 Q 의 값들에 의존할 수도 있다. 예를 들어, k 의 값은 (P-Q) 의 절대 값과 같을 수도 있다.
본 개시의 제 4 예의 기법에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 이웃하는 샘플들을 서브샘플링 및/또는 업샘플링하는 상이한 방식들을 적용할 수도 있다. 하나의 예에서, 서브샘플링 및/또는 업샘플링 프로세스(들)는 블록 사이즈 (예를 들어, PxQ 의 사이즈를 갖는 블록의 P 및/또는 Q 의 값들) 에 의존할 수도 있다. 일부 예들에서, 블록 사이즈는 블록이 예측 유닛이기 때문에 예측 유닛 사이즈에 대응할 수도 있다. 다른 예에서, 서브샘플링 및/또는 업샘플링 프로세스(들)는: 시퀀스 파라미터 세트, 픽처 파라미터 세트, 비디오 파라미터 세트, 적응 파라미터 세트, 픽처 헤더, 또는 슬라이스 헤더 중 적어도 하나에서 비디오 인코더 (22) 에 의해 시그널링될 수도 있다.
본 개시의 제 5 예의 기법에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 양자의 다운샘플링된 경계들 상의 이웃하는 샘플들의 수가 2 의 거듭제곱인 최대 값 (여기서 최대 값은 2 개의 변들의 공배수 (common multiple) 이다) 과 같도록 양변들 (예를 들어, 더 짧은 변과 더 긴 변) 을 다운샘플링할 수도 있다. 한 변에 대한 변화 없음 (no change on a side) 은 다운샘플링 팩터가 1 인 스페셜 다운샘플링으로 간주될 수도 있다. 다른 예에서, 양변들 (예를 들어, 더 짧은 변과 더 긴 변) 은 양자의 다운샘플링된 경계들 상의 이웃하는 샘플들의 수가 2 개의 변들 사이의 최대 공배수와 같도록 다운샘플링될 수도 있다. 일부 예들에서, 2 개의 변들 사이의 최대 공배수는 2 의 거듭제곱이도록 요구될 수도 있다. 예를 들어, 블록이 8x4 의 사이즈를 갖는 예에서, 2 개의 변들 사이의 최대 공배수는 4 이고, 4 는 또한 2 의 거듭제곱이다. 이 예에서, 4 의 더 짧은 변에 대한 다운샘플링 팩터는 1 과 같을 수도 있고 8 의 더 긴 변에 대한 다운샘플링 팩터는 2 와 같을 수도 있다.
본 개시의 제 6 예의 기법에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 양자의 업샘플링된 경계들 상의 이웃하는 샘플들의 수가 2 의 거듭제곱인 최소 값 (여기서 최소 값은 2 개의 변들의 공배수이다) 과 같도록 양변들 (예를 들어, 더 짧은 변과 더 긴 변) 을 업샘플링할 수도 있다. 한 변에 대한 변화 없음은 업샘플링 팩터가 1 인 스페셜 업샘플링으로 간주될 수도 있다. 다른 예에서, 양변들 (예를 들어, 더 짧은 변과 더 긴 변) 은 양자의 업샘플링된 경계들 상의 이웃하는 샘플들의 수가 2 개의 변들 사이의 최소 공배수와 같도록 업샘플링될 수도 있다. 일부 예들에서, 2 개의 변들 사이의 최소 공배수는 2 의 거듭제곱이도록 요구될 수도 있다. 예를 들어, 블록이 8x4 의 사이즈를 갖는 예에서, 2 개의 변들 사이의 최소 공배수는 8 이고, 8 은 또한 2 의 거듭제곱이다. 이 예에서, 8 의 더 긴 변에 대한 업샘플링 팩터는 1 과 같을 수도 있고 4 의 더 짧은 변에 대한 업샘플링 팩터는 2 와 같을 수도 있다.
본 개시의 제 7 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용하는 대신에, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 식 (3) 또는 식 (4) 에 따라 다음과 같이 이웃하는 샘플들의 더 긴 변의 평균 값으로서 DC 값을 계산할 수도 있다:
식 (3):
Figure pct00005
,
또는
식 (4):
Figure pct00006
본 개시의 제 8 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용하는 대신에, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 식 (5) 또는 식 (6) 에 따라 다음과 같이 2 개의 변의 이웃하는 샘플들의 2 개의 평균 값들의 평균 값으로서 DC 값을 계산할 수도 있다:
식 (5):
Figure pct00007
,
또는
식 (6):
Figure pct00008
식 (3), 식 (4), 식 (5), 및 식 (6) 에서, 변수들 M, N, A k , 및 L k 는 상기 식 (2) 에 대해서와 동일한 방식으로 정의될 수도 있다. 변수
Figure pct00009
은 0 또는 (1<<(m-1)) 과 같은 정수일 수도 있다. 변수
Figure pct00010
는 0 또는 (1<<(n-1)) 과 같은 정수일 수도 있다.
본 개시의 제 9 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용하는 대신에, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 식 (7) 또는 식 (8) 에 따라 다음과 같이 DC 값을 계산할 수도 있다:
식 (7):
Figure pct00011
,
또는
식 (8):
Figure pct00012
식 (7) 및 식 (8) 에서, 변수들 M, N, A k , 및 L k 는 상기 식 (2) 에 대해서와 동일한 방식으로 정의될 수도 있다. 변수
Figure pct00013
은 0 또는 (1<<m) 과 같은 정수일 수도 있다. 변수
Figure pct00014
는 0 또는 (1<<n) 과 같은 정수일 수도 있다.
본 개시의 제 10 예의 기법에서, DC 값을 계산하기 위해 식 (2) 를 사용할 때, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 현재의 블록 (예를 들어, PxQ 의 사이즈를 갖는 비-정사각형 블록) 의 더 짧은 변의 경계 상의 이웃하는 샘플들을 확장할 수도 있다. 도 8 은 제 10 예의 기법에 따른 하나의 예를 예시한다. 예를 들어, 도 8 은 본 명세서에서 설명된 나눗셈이 없는 DC 값 계산 기법을 사용하여 더 짧은 변의 경계 상의 이웃하는 샘플들을 확장하는 예를 도시한다. 도 8 의 예에서, 검정 샘플들은 DC 값을 계산하기 위해 수반되며; 그리고 도시된 바와 같이, 더 짧은 변의 이웃하는 경계는 예시적인 방식으로 확장된다. 일부 예들에서, 하나의 변 이후의 2 개의 변들에서의 이웃하는 샘플들의 총 수가 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱과 같도록 확장되는 것이 요구될 수도 있다. 일부 예들에서, k 의 값은 PxQ 의 블록 사이즈에 의존할 수도 있다. 예를 들어, k 의 값은 P 및/또는 Q 의 값들에 의존할 수도 있다. 예를 들어, k 의 값은 (P-Q) 의 절대 값과 같을 수도 있다.
본 개시의 제 11 예의 기법에서, 확장된 이웃하는 샘플들을 수반하는 예의 기법들에서의 하나 이상의 확장된 이웃하는 샘플들이 이용가능하지 않다면, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 하나 이상의 이용가능하지 않은 확장된 이웃하는 샘플들을 패딩할 수도 있다. 일부 예들에서, 하나 이상의 이용가능하지 않은 확장된 이웃하는 샘플들은 (i) 이용가능한 이웃하는 샘플들에 의해, (ii) 이용가능한 이웃하는 샘플들로부터 하나 이상의 이용가능하지 않은 확장된 이웃하는 샘플들을 미러링함으로써 패딩될 수도 있다.
본 개시의 제 12 예의 기법에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 나눗셈 연산을 회피하기 위해 DC 값을 계산하기 위해 식 (2) 를 사용할 때 코덱에 의해 지원된 블록 및 변환 사이즈들에 기초하여 엔트리들을 가진 룩업 테이블을 적용할 수도 있다.
본 개시의 제 13 예의 기법에서, 현재의 블록 (예를 들어, PxQ 의 사이즈를 갖는 비-정사각형 블록) 의 좌변이 단변이고 좌측 이웃하는 샘플들 중 하나 이상이 이용가능하지 않으면, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 하나 이상의 이용가능하지 않은 좌측 이웃하는 샘플들을 대체/치환하기 위해 현재의 블록의 좌측의 2 개의 열들에 로케이트된 하나 이상의 샘플들을 사용할 수도 있다. 일부 예들에서, 이용가능하지 않은 하나 이상의 좌측 이웃하는 샘플들은 좌측-하단 이웃하는 샘플들이다. 유사하게, 현재의 블록의 상변이 단변이고 상단 샘플들 중 하나 이상이 이용가능하지 않으면, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 하나 이상의 이용가능하지 않은 상방-이웃하는 샘플들을 대체/치환하기 위해 현재의 블록 상방의 2 개의 행들에 로케이트된 하나 이상의 샘플들을 사용할 수도 있다. 일부 예들에서, 이용가능하지 않은 하나 이상의 상방 이웃하는 샘플들은 우측-상방 이웃하는 샘플들이다. 일부 예들에서, 하나 이상의 이용가능하지 않은 이웃하는 샘플들의 대체/치환 후 좌변 및 상변에서의 이웃하는 샘플들의 총 수는 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱과 같은 것이 요구될 수도 있다. 일부 예들에서, k 의 값은 PxQ 의 블록 사이즈에 의존할 수도 있다. 예를 들어, k 의 값은 P 및/또는 Q 의 값들에 의존할 수도 있다. 예를 들어, k 의 값은 (P-Q) 의 절대 값과 같을 수도 있다.
본 개시의 제 14 예의 기법에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 가중치들의 합이 2k (여기서 k 는 정수이다) 로서 설명될 수도 있는 2 의 거듭제곱과 같을 수도 있는 단순 평균 대신에 가중 평균을 사용할 수도 있다. 일부 예들에서, 가중치들은 이웃하는 샘플들의 품질을 표시하는 메트릭들에 기초할 수도 있다. 예를 들어, 하나 이상의 가중치들은 다음의 메트릭들: QP 값, 변환 사이즈, 예측 모드, 또는 이웃하는 블록의 잔차 계수들에 소비되는 비트들의 총 수 중 하나 이상에 기초할 수도 있다. 일부 예들에서, 더 큰 값들이 더 나은 품질 메트릭들을 갖는 샘플들에 놓일 수도 있다. 제 14 예의 기법에 따르면, DC 값을 계산하기 위해 식 (2) 를 사용하는 대신에, DC 값은 식 (9) 에 따라 다음과 같이 계산될 수도 있다:
Figure pct00015
일부 예들에서, 가중 팩터들의 사전-정의된 세트가 저장될 수도 있고 비디오 인코더 (22) 는 SPS, PPS, VPS, 또는 슬라이스 헤더를 통해 세트 인덱스를 시그널링하도록 구성될 수도 있다.
본 개시의 제 15 예의 기법에서, 일부 예들은 현재의 블록 폭 또는 높이가 2 의 거듭제곱과 같지 않으면 나눗셈 연산을 회피하는 방법에 관하여 개시된다. 이들 예들은 스트롱 인트라 필터에 한정되지 않는다; 그 대신, 본 명세서에서 설명된 예들은 유사한 문제가 발생하는 임의의 다른 경우에 적용될 수도 있다. 거리 (폭 또는 높이) 에 의한 나눗셈이 필요하고, 거리가 2 의 거듭제곱이 아닐 때, 다음 3 개의 상이한 양태들이 별도로 또는 임의의 조합으로 적용될 수도 있다.
본 개시의 제 15 예의 기법의 제 1 양태에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 나눗셈에 사용될 초기 거리를 2 의 거듭제곱인 가장 가까운 거리로 라운딩할 수도 있다. 일부 예들에서, 초기 거리는 초기 거리가 임의의 라운딩이 발생하기 전의 거리를 지칭할 수도 있기 때문에 실제 거리로 지칭될 수도 있다. 라운딩된 거리는 초기 거리보다 더 작거나 또는 더 클 수도 있다. 이웃하는 샘플들이 새로운 라운딩된 거리까지 계산될 때, 나눗셈 연산은 새로운 라운딩된 거리가 2 의 거듭제곱이기 때문에 시프트 연산으로 대체될 수도 있다. 일부 예들에서, 새로운 라운딩된 거리가 초기 거리보다 더 작으면, 새로운 라운딩된 거리를 초과하는 포지션에 로케이트된 이웃하는 샘플들은 도 9 에 도시된 상단 예에서와 같이 디폴트 값을 할당받을 수도 있다. 도 9 의 상단 예에서, 초기 거리는 6 과 같고 새로운 라운딩된 거리는 4 이다. 이 예에서, 새로운 라운딩된 거리를 초과하는 포지션에 로케이트된 이웃하는 샘플들은 디폴트 값을 할당받는 것으로 묘사된다. 일부 예들에서, 할당된 디폴트 값은 마지막 계산된 샘플 (예를 들어, 마지막 계산된 샘플은 반복될 수도 있다) 의 값을 포함할 수도 있거나, 또는 계산된 샘플들의 평균 값이 할당될 수도 있다. 다른 예들에서, 새로운 라운딩된 거리가 초기 거리보다 더 크면, 계산된 이웃하는 샘플들의 수는 요구되는 것보다 더 클 수도 있고, 일부 이웃하는 샘플들은 도 9 에 도시된 하단 예에서와 같이 무시될 수도 있다. 도 9 의 하단 예에서, 초기 거리는 6 과 같고 새로운 라운딩된 거리는 8 이다. 이 예에서, 6 의 초기 거리를 초과하는 이웃하는 샘플들은 무시되는 것으로서 묘사된다.
본 개시의 제 15 예의 기법의 제 2 양태에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 나눗셈 연산이 그 방향을 위해 요구되면 현재의 블록의 방향 (예를 들어, 수평 또는 수직) 에 대해 코딩 기법 (예를 들어, 스트롱 인트라 예측 필터 또는 다른 툴) 을 적용하지 않을 수도 있다. 다르게 설명하면, 코딩 기법 (예를 들어, 스트롱 인트라 예측 필터 또는 다른 툴) 은 나눗셈이 시프트 연산으로서 표현될 수 있는 경우에만 현재의 블록에 대해 적용될 수도 있다.
본 개시의 제 15 예의 기법의 제 3 양태에서, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 재귀적 계산을 사용할 수도 있다. 이 양태에서, 초기 거리는 2 의 거듭제곱인 가장 가까운, 최소 거리로 라운딩될 수도 있다. 예를 들어, 초기 거리가 6 이면, 6 의 값은 4 의 값이 2 의 거듭제곱인 가장 가까운, 최소 거리이기 때문에 8 대신에 4 로 라운딩될 것이다. 이웃하는 샘플들은 새로운 라운딩된 거리까지 계산될 수도 있다. 프로세스가 반복할 때, 마지막 계산된 이웃하는 샘플이 첫번째 이웃하는 샘플로서 사용될 수도 있으며, 초기 거리는 라운딩된 최소 거리만큼 감소될 수도 있다. 프로세스는 감소된 거리가 1 과 같을 때 종료될 수도 있다. 본 개시의 기법은 또한 상기 논의된 상이한 예들에서 제시된 피처들 또는 기법들의 임의의 조합을 고려한다.
도 10 은 본 개시의 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (22) 를 예시하는 블록 다이어그램이다. 도 10 은 설명의 목적들을 위해 제공되고 본 개시에서 광범위하게 예시화 및 설명된 바와 같이 기법들을 한정하는 것으로 간주되어서는 안된다. 본 개시의 기법들은 다양한 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 10 의 예에서, 비디오 인코더 (22) 는 예측 프로세싱 유닛 (100), 비디오 데이터 메모리 (101), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역 양자화 유닛 (108), 역 변환 프로세싱 유닛 (110), 재구성 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터-예측 프로세싱 유닛 (120) 및 인트라-예측 프로세싱 유닛 (126) 을 포함한다. 인터-예측 프로세싱 유닛 (120) 은 모션 추정 유닛 및 모션 보상 유닛 (미도시) 을 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (22) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 예를 들어, 인트라- 또는 인터-코딩 모드들에서, 비디오 인코더 (22) 에 의해 비디오 데이터를 인코딩하는데 있어서의 사용을 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동기식 DRAM (SDRAM), 자기저항식 RAM (MRAM), 저항식 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들을 포함하는, 동적 랜덤 액세스 메모리 (DRAM) 와 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (22) 의 다른 컴포넌트들과 온-칩이거나, 또는 그 컴포넌트들에 대하여 오프-칩일 수도 있다. 비디오 데이터 메모리 (101) 는 도 1 의 저장 매체들 (20) 과 동일하거나 또는 그 일부일 수도 있다.
비디오 인코더 (22) 는 비디오 데이터를 수신한다. 비디오 인코더 (22) 는 비디오 데이터의 픽처의 슬라이스에서 각각의 CTU 를 인코딩할 수도 있다. CTU들의 각각은 픽처의 동일 사이즈의 루마 CTB들 및 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 CTU 의 CTB들을 계속해서 더 작은 블록들로 분할하기 위해 파티셔닝을 수행할 수도 있다. 더 작은 블록들은 CU들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 트리 구조에 따라 CTU 와 연관된 CTB 를 파티셔닝할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 트리 구조의 각각의 심도 레벨에서의 트리 구조의 각 개별의 비-리프 노드에 대해, 개별의 비-리프 노드에 대한 복수의 허용된 스플리팅 패턴들이 존재하고 개별의 비-리프 노드에 대응하는 비디오 블록은 복수의 허용가능한 스플리팅 패턴들 중 하나에 따라 개별의 비-리프 노드의 자식 노드들에 대응하는 비디오 블록들로 파티셔닝된다. 하나의 예에서, 비디오 인코더 (22) 의 예측 프로세싱 유닛 (100) 또는 다른 프로세싱 유닛은 본 명세서에서 설명된 기법들의 임의의 조합을 수행하도록 구성될 수도 있다.
비디오 인코더 (22) 는 CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성하기 위해 CTU 의 CU들을 인코딩할 수도 있다. CU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU들 중 CU 와 연관된 코딩 블록들을 파티셔닝할 수도 있다. 본 개시의 기법들에 따르면, CU 는 단일 CU 를 단지 포함할 수도 있다. 즉, 본 개시의 일부 예들에서, CU 는 별도의 예측 블록들로 분할되지 않고, 오히려, 예측 프로세스가 전체 CU 에 대해 수행된다. 따라서, 각각의 CU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 다양한 사이즈들을 갖는 CU들을 지원할 수도 있다. 상기 표시된 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈 또한 루마 예측 블록의 사이즈를 지칭할 수도 있다. 상기 논의된 바와 같이, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 본 명세서에서 설명된 예시적인 파티셔닝 기법들의 임의의 조합에 의해 정의된 CU 사이즈들을 지원할 수도 있다.
인터-예측 프로세싱 유닛 (120) 은 CU 의 각각의 PU 에 대해 인터 예측을 수행함으로써 PU 에 대한 예측 데이터를 생성할 수도 있다. 본 명세서에서 설명된 바와 같이, 본 개시의 일부 예들에서, CU 는 단지 단일 PU 만을 포함할 수도 있으며, 즉, CU 및 PU 는 동의어일 수도 있다. PU 에 대한 예측 데이터는 PU 의 예측 블록들 및 PU 에 대한 모션 정보를 포함할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 PU 가 I 슬라이스에 있는지, P 슬라이스에 있는지, 또는 B 슬라이스에 있는지에 의존하여 PU 또는 CU 에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU들은 인트라 예측된다. 이런 이유로, PU 가 I 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (120) 은 PU 에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드에서 인코딩된 블록들에 대해, 예측된 블록은 동일한 프레임 내의 이전에-인코딩된 이웃하는 블록들로부터의 공간 예측을 사용하여 형성된다. PU 가 P 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 생성하기 위해 단방향 인터 예측을 사용할 수도 있다. PU 가 B 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 생성하기 위해 단방향 또는 양방향 인터 예측을 사용할 수도 있다.
인트라-예측 프로세싱 유닛 (126) 은 PU 에 대해 인트라 예측을 수행함으로써 PU 에 대한 예측 데이터를 생성할 수도 있다. PU 에 대한 예측 데이터는 PU 의 예측 블록들 및 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에서 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU 에 대해 인트라 예측을 수행하기 위해, 인트라-예측 프로세싱 유닛 (126) 은 PU 에 대한 예측 데이터의 다중 세트들을 생성하기 위해 다중 인트라 예측 모드들을 사용할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 PU 에 대한 예측 블록을 생성하기 위해 이웃하는 PU들의 샘플 블록들로부터의 샘플들을 사용할 수도 있다. 이웃하는 PU들은, PU들, CU들, 및 CTU들에 대해 좌측에서 우측으로, 상단에서 하단으로의 인코딩 순서를 가정하여, PU 의 상방, 상방 우측, 상방 좌측, 또는 좌측에 있을 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 다양한 수들의 인트라 예측 모드들, 예를 들어, 33 개의 방향성 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 와 연관된 영역의 사이즈에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은 PU들에 대해 인터-예측 프로세싱 유닛 (120) 에 의해 생성된 예측 데이터 또는 PU들에 대해 인트라-예측 프로세싱 유닛 (126) 에 의해 생성된 예측 데이터 중에서 CU 의 PU들에 대한 예측 데이터를 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여 CU 의 PU들에 대한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 블록들은 선택된 예측 블록들로 본 명세서에서 지칭될 수도 있다.
잔차 생성 유닛 (102) 은 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU들에 대한 선택된 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 예를 들어, 잔차 생성 유닛 (102) 은 잔차 블록들에서의 각각의 샘플이 CU 의 코딩 블록에서의 샘플과 CU 의 PU 의 대응하는 선택된 예측 블록에서의 대응하는 샘플 사이의 차이와 같은 값을 갖도록 CU 의 잔차 블록들을 생성할 수도 있다.
변환 프로세싱 유닛 (104) 은 CU 의 TU들과 연관된 변환 블록들로 CU 와 연관된 잔차 블록들을 파티셔닝하기 위해 쿼드-트리 파티셔닝을 수행할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2 개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU들의 루마 및 크로마 변환 블록들의 사이즈들 및 포지션들은 CU 의 PU들의 예측 블록들의 사이즈들 및 포지션들에 기초할 수도 있거나 또는 기초하지 않을 수도 있다. "잔차 쿼드-트리" (RQT) 로 알려진 쿼드-트리 구조는 영역들의 각각과 연관된 노드들을 포함할 수도 있다. CU 의 TU들은 RQT 의 리프 노드들에 대응할 수도 있다. 다른 예들에서, 변환 프로세싱 유닛 (104) 은 본 명세서에서 설명된 파티셔닝 기법들에 따라 TU들을 파티셔닝하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (22) 는 RQT 구조를 사용하여 CU들을 TU들로 추가로 분할하지 않을 수도 있다. 이로써, 하나의 예에서, CU 는 단일 TU 를 포함한다.
변환 프로세싱 유닛 (104) 은 TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대한 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 TU 와 연관된 변환 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환 (DCT), 방향성 변환, 또는 개념상 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환 블록에 변환들을 적용하지 않는다. 이러한 예들에서, 변환 블록은 변환 계수 블록으로 취급될 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 변환 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 잘라 버림 (round down) 될 수도 있고, 여기서 n 은 m 보다 더 크다. 양자화 유닛 (106) 은 CU 와 연관된 양자화 파라미터 (QP) 값에 기초하여 CU 의 TU 와 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (22) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용된 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있다. 따라서, 양자화된 변환 계수들은 원래의 것들보다 더 낮은 정밀도를 가질 수도 있다.
역 양자화 유닛 (108) 및 역 변환 프로세싱 유닛 (110) 은 계수 블록으로부터 잔차 블록을 재구성하기 위해, 각각, 계수 블록에 역 양자화 및 역 변환들을 적용할 수도 있다. 재구성 유닛 (112) 은 TU 와 연관된 재구성된 변환 블록들을 생성하기 위해 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터의 대응하는 샘플들에 재구성된 잔차 블록을 가산할 수도 있다. 이 방식으로 CU 의 각각의 TU 에 대한 변환 블록들을 재구성함으로써, 비디오 인코더 (22) 는 CU 의 코딩 블록들을 재구성할 수도 있다.
필터 유닛 (114) 은 CU 와 연관된 코딩 블록들에서의 블록킹 아티팩트들을 감소시키기 위해 하나 이상의 디블록킹 동작들을 수행할 수도 있다. 디코딩된 픽처 버퍼 (116) 는 필터 유닛 (114) 이 재구성된 코딩 블록들에 대해 하나 이상의 디블록킹 동작들을 수행한 후 재구성된 코딩 블록들을 저장할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 다른 픽처들의 PU들에 대해 인터 예측을 수행하기 위해 재구성된 코딩 블록들을 포함하는 참조 픽처를 사용할 수도 있다. 추가로, 인트라-예측 프로세싱 유닛 (126) 은 CU 와 동일한 픽처에서의 다른 PU들에 대해 인트라 예측을 수행하기 위해 디코딩된 픽처 버퍼 (116) 에서의 재구성된 코딩 블록들을 사용할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (22) 의 다른 기능적 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 엔트로피-인코딩된 데이터를 생성하기 위해 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 CABAC 동작, 콘텍스트-적응 가변 길이 코딩 (CAVLC) 동작, V2V (variable-to-variable) 길이 코딩 동작, 신택스트-기반 콘텍스트-적응 이진 산술 코딩 (SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수-Golomb 인코딩 동작, 또는 다른 타입의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 비디오 인코더 (22) 는 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피-인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들어, 비트스트림은 본 개시의 기법들에 따라 CU 에 대한 파티션 구조를 표현하는 데이터를 포함할 수도 있다.
도 11 은 본 개시의 기법들을 구현하도록 구성되는 예시적인 비디오 디코더 (30) 를 예시하는 블록 다이어그램이다. 도 11 은 설명의 목적들을 위해 제공되고 본 개시에서 광범위하게 예시화 및 설명된 바와 같이 기법들에 대해 한정하지 않는다. 설명의 목적들을 위해, 본 개시는 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 11 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 필터 유닛 (160), 및 디코딩된 픽처 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은 모션 보상 유닛 (164) 및 인트라-예측 프로세싱 유닛 (166) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능적 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될, 인코딩된 비디오 데이터, 이를 테면 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터 판독가능 매체 (16) 로부터, 예를 들어, 로컬 비디오 소스, 이를 테면 카메라로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체들에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩하는데 있어서의, 예를 들어, 인트라- 또는 인터-코딩 모드들에서의 사용을 위해, 또는 출력을 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동기식 DRAM (SDRAM), 자기저항식 RAM (MRAM), 저항식 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들을 포함한 동적 랜덤 액세스 메모리 (DRAM) 와 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩이거나, 또는 그 컴포넌트들에 대하여 오프-칩일 수도 있다. 비디오 데이터 메모리 (151) 는 도 1 의 저장 매체들 (28) 과 동일하거나 또는 그 일부일 수도 있다.
비디오 데이터 메모리 (151) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신 및 저장한다. 엔트로피 디코딩 유닛 (150) 은 비디오 데이터 메모리 (151) 로부터 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신하고 신택스 엘리먼트들을 획득하기 위해 NAL 유닛들을 파싱할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 NAL 유닛들에서의 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 엔트로피 인코딩 유닛 (118) 의 프로세스와 일반적으로 상반된 프로세스를 수행할 수도 있다.
본 개시의 일부 예들에 따르면, 엔트로피 디코딩 유닛 (150), 또는 비디오 디코더 (30) 의 다른 프로세싱 유닛은, 비트스트림으로부터 신택스 엘리먼트들을 획득하는 것의 일부로서 트리 구조를 결정할 수도 있다. 트리 구조는 초기 비디오 블록, 이를 테면 CTB 가 더 작은 비디오 블록들, 이를 테면 코딩 유닛들로 파티셔닝되는 방법을 특정할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 트리 구조의 각각의 심도 레벨에서의 트리 구조의 각 개별의 비-리프 노드에 대해, 개별의 비-리프 노드에 대한 복수의 허용된 파티션 타입들이 존재하고 개별의 비-리프 노드에 대응하는 비디오 블록은 복수의 허용가능한 스플리팅 패턴들 중 하나에 따라 개별의 비-리프 노드의 자식 노드들에 대응하는 비디오 블록들로 파티셔닝된다.
비트스트림으로부터 신택스 엘리먼트들을 획득하는 것에 더하여, 비디오 디코더 (30) 는 비-파티셔닝된 CU 에 대해 재구성 동작을 수행할 수도 있다. CU 에 대해 재구성 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 재구성할 수도 있다. 상기 논의된 바와 같이, 본 개시의 하나의 예에서, CU 는 단일 TU 를 포함한다.
CU 의 TU 에 대해 재구성 동작을 수행하는 것의 일부로서, 역 양자화 유닛 (154) 은 TU 와 연관된 계수 블록들을 역 양자화, 즉 탈양자화 (de-quantize) 할 수도 있다. 역 양자화 유닛 (154) 이 계수 블록을 역 양자화한 후에, 역 변환 프로세싱 유닛 (156) 은 TU 와 연관된 잔차 블록을 생성하기 위하여 계수 블록에 하나 이상의 역 변환들을 적용할 수도 있다. 예를 들어, 역 변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 KLT (Karhunen-Loeve transform), 역 회전 변환, 역 방향성 변환, 또는 다른 역 변환을 계수 블록에 적용할 수도 있다.
CU 또는 PU 가 인트라 예측을 사용하여 인코딩되면, 인트라-예측 프로세싱 유닛 (166) 은 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 수행할 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 공간-이웃하는 블록들 샘플들에 기초하여 PU 의 예측 블록들을 생성하기 위해 인트라 예측 모드를 사용할 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 에 대한 인트라 예측 모드를 결정할 수도 있다.
PU 가 인터 예측을 사용하여 인코딩되면, 엔트로피 디코딩 유닛 (150) 은 PU 에 대한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (164) 은 PU 의 모션 정보에 기초하여, 하나 이상의 참조 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은, 하나 이상의 참조 블록들에 기초하여, PU 에 대한 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다. 상기 논의된 바와 같이, CU 는 단지 단일 PU 만을 포함할 수도 있다. 즉, CU 는 다중 PU들로 분할되지 않을 수도 있다.
재구성 유닛 (158) 은 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위해, 적용가능할 때, CU 의 TU들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU들에 대한 예측 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉, 인트라-예측 데이터 또는 인터-예측 데이터 중 어느 하나를 사용할 수도 있다. 예를 들어, 재구성 유닛 (158) 은 CU 의 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위해 예측 블록들 (예를 들어, 루마, Cb 및 Cr 예측 블록들) 의 대응하는 샘플들에 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 가산할 수도 있다.
필터 유닛 (160) 은 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시키기 위해 디블록킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 디코딩된 픽처 버퍼 (162) 에 CU 의 코딩 블록들을 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상의 프리젠테이션을 위한 참조 픽처들을 제공할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 디코딩된 픽처 버퍼 (162) 에서의 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
도 12 는 본 개시의 기법에 따른 비디오 데이터를 디코딩하기 위한 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다. 도 12 에 대하여 설명된 비디오 디코더는, 예를 들어, 디스플레이가능한 디코딩된 비디오를 출력하기 위한, 비디오 디코더 (30) 와 같은 비디오 디코더일 수도 있거나 또는 부분이 예측 프로세싱 유닛 (100) 및 합산기 (112) 를 포함하는 비디오 인코더 (22) 의 디코딩 루프와 같은 비디오 인코더에서 구현된 비디오 디코더일 수도 있다.
도 12 의 기법들에 따르면, 비디오 디코더는 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하고, 여기서 P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이다 (202). 현재의 블록이 단변과 장변을 포함하도록 P 는 Q 와 같지 않고, 제 1 값에 제 2 값을 더한 값이 2 의 거듭제곱인 값과 같지 않다. 비디오 디코더는 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩한다 (204). 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는 DC 값을 계산하기 위해 시프트 연산을 수행하고 (206) 계산된 DC 값을 사용하여 비디오 데이터의 현재의 블록에 대한 예측 블록을 생성한다 (208).
하나의 예에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는 시프트 연산을 사용하여 단변에 이웃하는 샘플들에 대한 제 1 평균 샘플 값을 결정하고, 시프트 연산을 사용하여 장변에 이웃하는 샘플들에 대한 제 2 평균 값을 결정하고, 그리고 시프트 연산을 사용하여 제 1 평균 값과 제 2 평균 값의 평균 값을 결정함으로써 DC 값을 계산한다. 제 1 평균 값과 제 2 평균 값의 평균 값을 결정하기 위해, 비디오 디코더는 제 1 평균 값과 제 2 평균 값의 가중 평균 값을 결정할 수도 있다. 다른 예에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는, 장변에 이웃하는 다운샘플링된 샘플들의 수와 단변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 장변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 장변에 이웃하는 샘플들의 수를 다운샘플링한다. 다른 예에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는, 단변에 이웃하는 업샘플링된 샘플들의 수와 장변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 단변에 이웃하는 샘플들의 수를 업샘플링한다.
다른 예에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는, 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 단변에 이웃하는 샘플들의 수를 업샘플링하고 단변에 이웃하는 업샘플링된 샘플들의 수와 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 장변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 장변에 이웃하는 샘플들의 수를 다운샘플링한다.
다른 예에서, 인트라 DC 모드 예측을 사용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더는, 단변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 단변에 이웃하는 샘플들의 수를 다운샘플링하고 단변에 이웃하는 다운샘플링된 샘플들의 수와 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 장변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 장변에 이웃하는 샘플들의 수를 다운샘플링한다.
비디오 디코더는 현재의 블록의 디코딩된 버전을 포함하는 현재의 픽처의 디코딩된 버전을 출력한다 (210). 비디오 디코더가 디스플레이가능한 디코딩된 비디오를 출력하도록 구성된 비디오 디코더일 때, 비디오 디코더는, 예를 들어, 디스플레이 디바이스로 현재의 픽처의 디코딩된 버전을 출력할 수도 있다. 디코딩이 비디오 인코딩 프로세스의 디코딩 루프의 일부로서 수행될 때, 비디오 디코더는 비디오 데이터의 다른 픽처를 인코딩하는데 있어서의 사용을 위한 참조 픽처로서 현재의 픽처의 디코딩된 버전을 저장할 수도 있다.
도 13 은 본 개시의 기법에 따른 비디오 데이터를 디코딩하기 위한 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다. 도 13 에 대하여 설명된 비디오 디코더는, 예를 들어, 디스플레이가능한 디코딩된 비디오를 출력하기 위한, 비디오 디코더 (30) 와 같은 비디오 디코더일 수도 있거나 또는 부분이 예측 프로세싱 유닛 (100) 및 합산기 (112) 를 포함하는 비디오 인코더 (22) 의 디코딩 루프와 같은 비디오 인코더에서 구현된 비디오 디코더일 수도 있다.
도 13 의 기법들에 따르면, 비디오 디코더는 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하고, 여기서 P 는 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않다 (222). 현재의 블록은 단변과 장변을 포함하고, 제 1 값에 제 2 값을 더한 값은 2 의 거듭제곱인 값과 같지 않다.
비디오 디코더는 비디오 데이터의 현재의 블록에 대해 필터링 동작을 수행한다 (224). 비디오 데이터의 현재의 블록에 대해 필터링 동작을 수행하기 위해, 비디오 인코더는 필터 값을 계산하기 위해 시프트 연산을 수행하고 (226) 계산된 필터 값을 사용하여 비디오 데이터의 현재의 블록에 대한 필터링된 블록을 생성한다 (228). 비디오 데이터의 현재의 블록에 대해 필터링 동작을 수행하기 위해, 비디오 디코더는, 예를 들어, 장변에 이웃하는 다운샘플링된 샘플들의 수와 단변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 장변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 장변에 이웃하는 샘플들의 수를 다운샘플링할 수도 있다. 장변에 이웃하는 샘플들의 수를 다운샘플링하기 위해, 비디오 디코더는, 예를 들어, 일부 샘플들을 무시할 수도 있다. 비디오 데이터의 현재의 블록에 대해 필터링 동작을 수행하기 위해, 비디오 디코더는, 예를 들어, 단변에 이웃하는 업샘플링된 샘플들의 수와 장변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 단변에 이웃하는 샘플들의 수를 업샘플링할 수도 있다. 단변에 이웃하는 샘플들의 수를 업샘플링하기 위해, 비디오 디코더는, 예를 들어, 대응하는 실제 값들 없이 샘플들에 디폴트 값들을 할당할 수도 있다.
비디오 디코더는 현재의 블록의 디코딩된 버전을 포함하는 현재의 픽처의 디코딩된 버전을 출력한다 (230). 비디오 디코더가 디스플레이가능한 디코딩된 비디오를 출력하도록 구성된 비디오 디코더일 때, 비디오 디코더는, 예를 들어, 디스플레이 디바이스로 현재의 픽처의 디코딩된 버전을 출력할 수도 있다. 디코딩이 비디오 인코딩 프로세스의 디코딩 루프의 일부로서 수행될 때, 비디오 디코더는 비디오 데이터의 다른 픽처를 인코딩하는데 있어서의 사용을 위한 참조 픽처로서 현재의 픽처의 디코딩된 버전을 저장할 수도 있다.
본 개시의 소정의 양태들은 예시의 목적들을 위해 HEVC 표준의 확장들에 대하여 설명되었다. 그러나, 본 개시에서 설명된 기법들은 아직 개발되지 않은 다른 표준 또는 독점적 비디오 코딩 프로세스들을 포함한 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에서 설명된 바와 같은 비디오 코더는, 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은 적용가능할 때 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 본 개시에서, 어구 "~ 에 기초하여" 는 ~ 에만 기초하여, ~ 에 적어도 부분적으로 기초하여, 또는 어떤 방식으로 ~ 에 기초하여를 나타낼 수도 있다. 본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플들의 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 지칭하기 위해 용어 "비디오 유닛" 또는 "비디오 블록" 또는 "블록" 을 사용할 수도 있다. 비디오 유닛들의 예시적인 타입들은 CTU들, CU들, PU들, 변환 유닛들 (TU들), 매크로블록들, 매크로블록 파티션들 등을 포함할 수도 있다. 일부 맥락들에서, PU들의 논의는 매크로블록들 또는 매크로블록 파티션들의 논의와 상호교환될 수도 있다. 비디오 블록들의 예시적인 타입들은 코딩 트리 블록들, 코딩 블록들, 및 다른 타입들의 비디오 데이터의 블록들을 포함할 수도 있다.
예에 의존하여, 본 명세서에서 설명된 기법들 중 임의의 것의 소정의 액트들 또는 이벤트들이 상이한 시퀀스로 수행될 수도 있거나, 전체적으로 부가, 병합, 또는 제거될 수도 있다 (예를 들어, 설명된 액트들 또는 이벤트들이 기법들의 실시를 위해 필수적인 것은 아니다) 는 것이 인식되어야 한다. 더욱이, 소정의 예들에서, 액트들 또는 이벤트들은 순차적인 것보다는, 동시에, 예를 들어, 멀티-스레디드 프로세싱, 인터럽트 프로세싱, 또는 다중 프로세서들을 통해 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 송신되고 하드웨어-기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들, 또는 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 이 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
한정이 아닌 일 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절히 컴퓨터 판독가능 매체로 불린다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 송신되면, 매체의 정의에는, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들이 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 캐리어 파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고 그 대신 비일시적인, 유형의 저장 매체들에 지향되는 것으로 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본 명세서에서 사용된 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하고, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 상기의 조합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를 테면 하나 이상의 DSP들, 범용 마이크로프로세서들, ASIC들, FPGA들, 또는 다른 등가의 통합된 또는 이산 로직 회로부에 의해 실행될 수도 있다. 이에 따라, 용어 "프로세서" 는 본 명세서에서 사용된 바와 같이, 전술한 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 추가로, 일부 양태들에서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 통합될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하는, 광범위한 디바이스들 또는 장치들로 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같이 하나 이상의 프로세서들을 포함하는, 상호운용가능한 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (31)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 단계로서, P 는 상기 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 상기 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 상기 현재의 블록은 단변 (short side) 과 장변 (long side) 을 포함하고, 그리고 상기 제 1 값에 상기 제 2 값을 더한 값은 2 의 거듭제곱 (power) 인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 단계;
    인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계로서, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    DC 값을 계산하기 위해 시프트 연산을 수행하는 단계; 및
    계산된 상기 DC 값을 사용하여 비디오 데이터의 상기 현재의 블록에 대한 예측 블록을 생성하는 단계를 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계; 및
    상기 현재의 블록의 디코딩된 버전을 포함하는 상기 현재의 픽처의 디코딩된 버전을 출력하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    상기 시프트 연산을 사용하여 상기 단변에 이웃하는 샘플들에 대한 제 1 평균 샘플 값을 결정하는 단계;
    상기 시프트 연산을 사용하여 상기 장변에 이웃하는 샘플들에 대한 제 2 평균 값을 결정하는 단계; 및
    상기 시프트 연산을 사용하여 상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정함으로써 상기 DC 값을 계산하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 2 항에 있어서,
    상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정하는 것은 상기 제 1 평균 값과 상기 제 2 평균 값의 가중 평균 값을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    상기 장변에 이웃하는 다운샘플링된 샘플들의 수와 상기 단변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하는 단계;
    상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계는,
    상기 단변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 다운샘플링하는 단계;
    상기 단변에 이웃하는 상기 다운샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 디코딩하는 방법은 비디오 인코딩 프로세스의 디코딩 루프의 일부로서 수행되고, 상기 현재의 픽처의 디코딩된 버전을 출력하는 단계는 상기 비디오 데이터의 다른 픽처를 인코딩하는데 있어서의 사용을 위한 참조 픽처로서 상기 현재의 픽처의 디코딩된 버전을 저장하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 현재의 픽처의 디코딩된 버전을 출력하는 단계는 상기 현재의 픽처의 디코딩된 버전을 디스플레이 디바이스로 출력하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    상기 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체들; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하는 것으로서, P 는 상기 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 상기 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 상기 현재의 블록은 단변과 장변을 포함하고, 그리고 상기 제 1 값에 상기 제 2 값을 더한 값이 2 의 거듭제곱인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하고;
    인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 것으로서, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하는 것은,
    DC 값을 계산하기 위해 시프트 연산을 수행하는 것; 및
    계산된 상기 DC 값을 사용하여 비디오 데이터의 상기 현재의 블록에 대한 예측 블록을 생성하는 것을 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하고; 그리고
    상기 현재의 블록의 디코딩된 버전을 포함하는 상기 현재의 픽처의 디코딩된 버전을 출력하도록 구성된, 비디오 데이터를 디코딩하기 위한 디바이스.
  11. 제 10 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 시프트 연산을 사용하여 상기 단변에 이웃하는 샘플들에 대한 제 1 평균 샘플 값을 결정하고;
    상기 시프트 연산을 사용하여 상기 장변에 이웃하는 샘플들에 대한 제 2 평균 값을 결정하고; 그리고
    상기 시프트 연산을 사용하여 상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정함으로써 상기 DC 값을 계산하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  12. 제 11 항에 있어서,
    상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 제 1 평균 값과 상기 제 2 평균 값의 가중 평균 값을 결정하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  13. 제 10 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 장변에 이웃하는 다운샘플링된 샘플들의 수와 상기 단변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  14. 제 10 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  15. 제 10 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하고;
    상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  16. 제 10 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 단변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 다운샘플링하고;
    상기 단변에 이웃하는 상기 다운샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  17. 제 10 항에 있어서,
    상기 현재의 픽처의 디코딩된 버전을 출력하기 위해, 상기 하나 이상의 프로세서들은 상기 비디오 데이터의 다른 픽처를 인코딩하는데 있어서의 사용을 위한 참조 픽처로서 상기 현재의 픽처의 디코딩된 버전을 저장하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  18. 제 10 항에 있어서,
    상기 현재의 픽처의 디코딩된 버전을 출력하기 위해, 상기 하나 이상의 프로세서들은 상기 현재의 픽처의 디코딩된 버전을 디스플레이 디바이스로 출력하도록 추가로 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  19. 제 10 항에 있어서,
    상기 디바이스는 인코딩된 비디오 데이터를 송신하도록 구성된 송신기를 더 포함하는 무선 통신 디바이스를 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  20. 제 19 항에 있어서,
    상기 무선 통신 디바이스는 전화기 핸드셋을 포함하고, 상기 송신기는, 무선 통신 표준에 따라, 상기 인코딩된 비디오 데이터를 포함하는 신호를 변조하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  21. 제 10 항에 있어서,
    상기 디바이스는 인코딩된 비디오 데이터를 수신하도록 구성된 수신기를 더 포함하는 무선 통신 디바이스를 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  22. 제 21 항에 있어서,
    상기 무선 통신 디바이스는 전화기 핸드셋을 포함하고, 상기 수신기는, 무선 통신 표준에 따라, 상기 인코딩된 비디오 데이터를 포함하는 신호를 복조하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  23. 비디오 데이터를 디코딩하기 위한 장치로서,
    상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하기 위한 수단으로서, P 는 상기 현재의 블록의 폭에 대응하는 제 1 값이고 Q 는 상기 현재의 블록의 높이에 대응하는 제 2 값이고, P 는 Q 와 같지 않고, 상기 현재의 블록은 단변과 장변을 포함하고, 그리고 상기 제 1 값에 상기 제 2 값을 더한 값은 2 의 거듭제곱인 값과 같지 않은, 상기 비디오 데이터의 현재의 픽처의 현재의 블록이 PxQ 의 사이즈를 갖는다고 결정하기 위한 수단;
    인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단으로서, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    DC 값을 계산하기 위해 시프트 연산을 수행하기 위한 수단; 및
    계산된 상기 DC 값을 사용하여 비디오 데이터의 상기 현재의 블록에 대한 예측 블록을 생성하기 위한 수단을 포함하는, 상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단; 및
    상기 현재의 블록의 디코딩된 버전을 포함하는 상기 현재의 픽처의 디코딩된 버전을 출력하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    상기 시프트 연산을 사용하여 상기 단변에 이웃하는 샘플들에 대한 제 1 평균 샘플 값을 결정하기 위한 수단;
    상기 시프트 연산을 사용하여 상기 장변에 이웃하는 샘플들에 대한 제 2 평균 값을 결정하기 위한 수단; 및
    상기 시프트 연산을 사용하여 상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정함으로써 상기 DC 값을 계산하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  25. 제 24 항에 있어서,
    상기 제 1 평균 값과 상기 제 2 평균 값의 평균 값을 결정하기 위한 수단은 상기 제 1 평균 값과 상기 제 2 평균 값의 가중 평균 값을 결정하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  26. 제 23 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    상기 장변에 이웃하는 다운샘플링된 샘플들의 수와 상기 단변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  27. 제 23 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  28. 제 23 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    상기 단변에 이웃하는 업샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 업샘플링하기 위한 수단;
    상기 단변에 이웃하는 상기 업샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  29. 제 23 항에 있어서,
    상기 인트라 DC 모드 예측을 사용하여 비디오 데이터의 상기 현재의 블록을 디코딩하기 위한 수단은,
    상기 단변에 이웃하는 다운샘플링된 샘플들의 수를 결정하기 위해 상기 단변에 이웃하는 샘플들의 수를 다운샘플링하기 위한 수단;
    상기 단변에 이웃하는 상기 다운샘플링된 샘플들의 수와 상기 장변에 이웃하는 다운샘플링된 샘플들의 수를 결합한 값이 2 의 거듭제곱인 값과 같도록 상기 장변에 이웃하는 상기 다운샘플링된 샘플들의 수를 결정하기 위해 상기 장변에 이웃하는 샘플들의 수를 다운샘플링하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  30. 제 23 항에 있어서,
    상기 현재의 픽처의 디코딩된 버전을 출력하기 위한 수단은 상기 비디오 데이터의 다른 픽처를 인코딩하는데 있어서의 사용을 위한 참조 픽처로서 상기 현재의 픽처의 디코딩된 버전을 저장하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  31. 제 23 항에 있어서,
    상기 현재의 픽처의 디코딩된 버전을 출력하기 위한 수단은 상기 현재의 픽처의 디코딩된 버전을 디스플레이 디바이스로 출력하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
KR1020197018854A 2017-01-11 2018-01-10 비디오 코딩을 위한 인트라 예측 기법들 KR20190103167A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762445207P 2017-01-11 2017-01-11
US62/445,207 2017-01-11
US15/866,287 US20180199062A1 (en) 2017-01-11 2018-01-09 Intra prediction techniques for video coding
US15/866,287 2018-01-09
PCT/US2018/013169 WO2018132475A1 (en) 2017-01-11 2018-01-10 Intra prediction techniques for video coding

Publications (1)

Publication Number Publication Date
KR20190103167A true KR20190103167A (ko) 2019-09-04

Family

ID=62783736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197018854A KR20190103167A (ko) 2017-01-11 2018-01-10 비디오 코딩을 위한 인트라 예측 기법들

Country Status (8)

Country Link
US (1) US20180199062A1 (ko)
EP (1) EP3568986A1 (ko)
JP (1) JP2020503815A (ko)
KR (1) KR20190103167A (ko)
CN (1) CN110100439A (ko)
BR (1) BR112019014090A2 (ko)
TW (1) TW201841502A (ko)
WO (1) WO2018132475A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146795B2 (en) 2017-03-10 2021-10-12 Qualcomm Incorporated Intra filtering flag in video coding
CN117395405A (zh) * 2017-04-28 2024-01-12 英迪股份有限公司 图像解码方法、图像编码方法和用于发送比特流的方法
US10805641B2 (en) 2017-06-15 2020-10-13 Qualcomm Incorporated Intra filtering applied together with transform processing in video coding
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
EP3982631A1 (en) * 2017-11-13 2022-04-13 MediaTek Singapore Pte. Ltd. Method and apparatus for intra prediction fusion in image and video coding
KR20210111323A (ko) * 2018-01-15 2021-09-10 주식회사 비원영상기술연구소 색차 성분에 관한 화면내 예측 부호화/복호화 방법 및 장치
EP3744092A1 (en) * 2018-01-26 2020-12-02 InterDigital VC Holdings, Inc. Method and apparatus for video encoding and decoding based on a linear model responsive to neighboring samples
US10869060B2 (en) * 2018-01-30 2020-12-15 Google Llc Efficient context model computation design in transform coefficient coding
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US11025946B2 (en) * 2018-06-14 2021-06-01 Tencent America LLC Method and apparatus for video coding
CN112997492B (zh) 2018-11-06 2024-02-20 北京字节跳动网络技术有限公司 帧内预测的简化参数推导
CN112913243A (zh) * 2018-11-21 2021-06-04 华为技术有限公司 帧内预测方法及设备
CN113170122B (zh) 2018-12-01 2023-06-27 北京字节跳动网络技术有限公司 帧内预测的参数推导
WO2020114445A1 (en) 2018-12-07 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Context-based intra prediction
WO2020145775A1 (ko) * 2019-01-13 2020-07-16 엘지전자 주식회사 Mrl 기반 인트라 예측을 수행하는 영상 코딩 방법 및 장치
CN113711615A (zh) 2019-02-15 2021-11-26 北京字节跳动网络技术有限公司 视频压缩中的非二次幂分割树
CN113439437B (zh) * 2019-02-22 2023-11-24 北京字节跳动网络技术有限公司 用于帧内预测的邻近样点选择
KR102472756B1 (ko) 2019-02-24 2022-12-01 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 예측을 위한 파라미터 유도
JP7203241B2 (ja) 2019-03-08 2023-01-12 北京字節跳動網絡技術有限公司 映像処理における再整形情報の信号伝達
CN113748676B (zh) * 2019-04-16 2024-05-10 北京字节跳动网络技术有限公司 帧内编解码模式下的矩阵推导
WO2020211862A1 (en) 2019-04-18 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Restriction on applicability of cross component mode
AU2020263199B2 (en) 2019-04-23 2023-10-19 Beijing Bytedance Network Technology Co., Ltd. Methods for cross component dependency reduction
US11277637B2 (en) 2019-05-09 2022-03-15 Qualcomm Incorporated Reference sampling for matrix intra prediction mode
KR20220013939A (ko) 2019-05-31 2022-02-04 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 행렬 기반 인트라 예측에서의 제한된 업샘플링 프로세스
WO2020256483A1 (ko) * 2019-06-21 2020-12-24 삼성전자 주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
CN113994697A (zh) 2019-06-22 2022-01-28 北京字节跳动网络技术有限公司 色度残差缩放的语法元素
EP3977738A4 (en) 2019-07-07 2022-08-17 Beijing Bytedance Network Technology Co., Ltd. SIGNALING OF CHROMA RESIDUAL SCALE
CN114830655B (zh) * 2019-12-12 2023-08-18 寰发股份有限公司 视频编解码的方法与装置
JP2022531541A (ja) * 2019-12-23 2022-07-07 テンセント・アメリカ・エルエルシー ビデオ符号化/復号のための方法および装置
CN111263193B (zh) * 2020-01-21 2022-06-17 北京世纪好未来教育科技有限公司 视频帧上下采样方法及装置、视频直播方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4617644B2 (ja) * 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US8457200B2 (en) * 2006-07-07 2013-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Video data management
CN101710987B (zh) * 2009-12-29 2011-06-15 浙江大学 一种高压缩性能分层b预测结构配置方法
CN102857752B (zh) * 2011-07-01 2016-03-30 华为技术有限公司 一种像素预测方法和装置
US10432928B2 (en) * 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
WO2016154963A1 (en) * 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec

Also Published As

Publication number Publication date
JP2020503815A (ja) 2020-01-30
EP3568986A1 (en) 2019-11-20
US20180199062A1 (en) 2018-07-12
TW201841502A (zh) 2018-11-16
CN110100439A (zh) 2019-08-06
BR112019014090A2 (pt) 2020-02-04
WO2018132475A1 (en) 2018-07-19

Similar Documents

Publication Publication Date Title
KR102292788B1 (ko) 비디오 코딩을 위한 다중-유형-트리 프레임워크
US10506246B2 (en) Multi-type-tree framework for video coding
KR20190103167A (ko) 비디오 코딩을 위한 인트라 예측 기법들
KR102574560B1 (ko) 비디오 코딩을 위해 액세스하는 샘플을 갖는 선형 모델 예측 모드
KR102048169B1 (ko) 비디오 코딩에서 비-스퀘어 변환 유닛들에 대한 변환 계수들의 수정
EP3092802B1 (en) Intra prediction from a predictive block
KR102232099B1 (ko) 변위 벡터들을 이용한 예측 블록으로부터의 인트라 예측
AU2023202344A1 (en) Position dependent intra prediction combination extended with angular modes
KR20190022629A (ko) 비-쿼드트리-단독 파티셔닝된 비디오 코딩에서 양자화 정보의 시그널링
KR20180056687A (ko) 팔레트 모드 비디오 코딩에서의 이스케이프 픽셀 시그널링된 값들의 제한
KR20150065838A (ko) 비디오 특성들의 표시
NZ715952B2 (en) Intra prediction from a predictive block using displacement vectors