KR20200116462A - 비디오 코딩을 위한 인트라-블록 카피 - Google Patents
비디오 코딩을 위한 인트라-블록 카피 Download PDFInfo
- Publication number
- KR20200116462A KR20200116462A KR1020207022454A KR20207022454A KR20200116462A KR 20200116462 A KR20200116462 A KR 20200116462A KR 1020207022454 A KR1020207022454 A KR 1020207022454A KR 20207022454 A KR20207022454 A KR 20207022454A KR 20200116462 A KR20200116462 A KR 20200116462A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- blocks
- color component
- sub
- picture
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/64—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
- H04N19/647—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 개시는 비디오 코더 (예를 들어, 비디오 인코더 또는 비디오 디코더) 가 크로마 성분 및 루마 성분에 대한 파티션 트리들이 상이한 크로마 블록 (예를 들어, 디커플링된 파티션 트리들) 에 대한 블록 벡터를 결정하는데 활용할 수도 있는 예시의 기법들을 설명한다.
Description
본 출원은 2019 년 2 월 6 일 출원된 미국 출원 제 16/269,349 호 에 대한 우선권을 주장하고, 2018 년 2 월 8 일 출원된 미국 가출원 제 62/628,101 호의 이익을 주장하며, 이들 양자의 출원의 전체 내용은 참조로서 본 명세서에 통합된다.
기술분야
본 개시는 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인용 디지털 보조기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 이른바 "스마트 폰들", 비디오 델레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 어드밴스드 비디오 코딩 (AVC), 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준, ITU-T H.265/고효율 비디오 코딩 (HEVC), 및 이러한 표준들의 확장들에 의해 정의된 표준들에 기재된 것들과 같은, 비디오 코딩 기법들을 구현한다. 비디오 디바이스들은 그러한 비디오 코딩 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 코딩 기법들은 비디오 시퀀스들에 내재된 리던던시를 감소 또는 제거하기 위해 공간적 (인트라-픽처) 예측 및/또는 시간적 (인터-픽처) 예측을 포함한다. 블록 기반 비디오 코딩에 대해, 비디오 슬라이스 (즉, 비디오 픽처 또는 비디오 픽처의 일부) 는 비디오 블록들로 파티셔닝될 수도 있으며, 이 비디오 블록들은 또한 코딩 트리 유닛들 (CTU들), 코딩 유닛들 (CU들) 및/또는 코딩 노드들로서 지칭될 수도 있다. 픽처의 인트라-코딩된 (I) 슬라이스에서의 비디오 블록들은 동일한 픽처에 있어서 이웃하는 블록들에서의 참조 샘플들에 대한 공간적 예측을 사용하여 인코딩된다. 픽처의 인터-코딩된 (P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 픽처에 있어서 이웃하는 블록들에서의 참조 샘플들에 대한 공간적 예측, 또는 다른 참조 픽처들에서의 참조 샘플들에 대한 시간적 예측을 이용할 수도 있다. 픽처들은 프레임들로 지칭될 수도 있고, 참조 픽처들은 참조 프레임들로 지칭될 수도 있다.
일반적으로, 본 개시는 인트라-블록 카피 (IBC) 코딩을 위한 기법들을 설명한다. 예시의 기법들은 고효율 비디오 코딩 (HEVC) 과 같은 기존 비디오 코덱들에 적용될 수도 있거나, 향후 비디오 코딩 표준들에 대한 효율적인 코딩 툴일 수도 있다. 예시의 기법들은 다양한 모션 관련 툴들로 IBC 를 활용하는 것 뿐만 아니라, 디커플링된 파티션 트리들에서 IBC 를 사용하는 것과 관련될 수도 있다.
예를 들어, IBC 에서, 블록은 코딩되고 있는 블록과 동일한 픽처에서 참조 블록을 가리키는 블록 벡터로 코딩 (예를 들어, 인코딩 또는 디코딩) 된다. 루마 성분들 및 크로마 성분들이 동일한 방식으로 파티셔닝되는 경우 (예를 들어, 파티션 트리들의 커플링이 있는 경우), 루마 블록 및 대응하는 크로마 블록들은 크로마 블록들에 대한 잠재적 블록 벡터 스케일링을 갖는 블록 벡터를 사용할 수 있다. 그러나, 크로마 성분들이 루마 성분들과 상이하게 파티셔닝되는 경우 (예를 들어, 파티션 트리들의 디커플링이 있는 경우), 크로마 블록들이 루마 블록들과 상이하게 형상화되기 때문에, 크로마 블록들과 루마 블록들 사이의 열악한 대응을 초래한다.
본 개시는 비디오 코더 (예를 들어, 비디오 인코더 또는 비디오 디코더) 가 크로마 성분 및 루마 성분에 대한 파티션 트리들이 상이한 크로마 블록 (예를 들어, 디커플링된 파티션 트리들) 에 대한 블록 벡터를 결정하는데 활용할 수도 있는 예시의 기법들을 설명한다. 예를 들어, 비디오 코더는 추가로 루마 성분을 파티셔닝하기 위해 사용된 파티션 트리에 기초하여, 크로마 블록을 복수의 서브-블록들로 파티셔닝할 수도 있다. 이 예에서, 크로마 블록의 서브-블록들의 각각과 복수의 루마 블록들의 루마 블록 사이에 일-대-일 대응이 있을 수도 있다.
비디오 코더는 IBC 모드에서 예측되는 복수의 루마 블록들 중 하나 이상의 루마 블록들의 블록 벡터들에 기초하여 크로마 블록의 서브-블록들 중 하나 이상의 서브-블록들에 대한 블록 벡터들을 결정할 수도 있다. 이러한 방식으로, 루마와 크로마 성분들 사이에 파티션 트리 디커플링이 있더라도, 예시의 기법들은 크로마 블록이 루마 블록으로부터 블록 벡터들을 상속할 수 있는 방식들을 허용한다. 루마 블록들의 블록 벡터들이 크로마 블록들에 의해 상속되도록 함으로써, 예시의 기법들은 크로마 블록들에 대한 블록 벡터들이 명시적으로 시그널링될 필요가 있는 경우 다르게는 필요하게 되는 시그널링 대역폭을 감소시킬 수도 있다.
일 예에서, 본 개시는 비디오 데이터를 코딩하는 방법을 기재하며, 방법은 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 단계로서, 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하는 단계, 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝하는 단계, 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 제 2 컬러 성분의 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하는 단계, 및 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩하는 단계를 포함한다.
일 예에서, 본 개시는 비디오 데이터를 코딩하기 위한 디바이스를 기재하며, 디바이스는 제 1 컬러 성분의 샘플들 및 비디오 데이터의 제 2 컬러 성분의 샘플들을 저장하도록 구성된 메모리 및 프로그램가능 및 고정-기능 회로부 중 적어도 하나를 포함하는 비디오 코더를 포함한다. 비디오 코더는 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 것으로서, 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하고, 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝하고, 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 제 2 컬러 성분의 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하며, 그리고 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩하도록 구성된다.
일 예에서, 본 개시는 명령들을 저장하는 컴퓨터 판독가능 저장 매체를 기재하며, 명령들은 실행될 때 하나 이상의 프로세서들로 하여금, 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하게 하는 것으로서, 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하게 하고, 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝하게 하고, 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 제 2 컬러 성분의 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하게 하며, 그리고 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩하게 한다.
일 예에서, 본 개시는 비디오 데이터를 코딩하기 위한 디바이스를 기재하며, 디바이스는 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 수단으로서, 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하는 수단, 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝하는 수단, 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 제 2 컬러 성분의 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하는 수단, 및 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩하는 수단을 포함한다.
하나 이상의 예들의 상세들은 첨부 도면들 및 하기의 설명에서 기술된다. 다른 피처들, 목적들 및 이점들은 설명 및 도면들, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록 다이어그램이다.
도 2a 및 도 2b 는 예시의 쿼드트리 이진 트리 (QTBT) 구조 및 대응하는 코딩 트리 유닛 (CTU) 을 도시하는 개념적 다이어그램들이다.
도 3 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 인코더를 도시하는 블록 다이어그램이다.
도 4 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 디코더를 도시하는 블록 다이어그램이다.
도 5 는 병합 및 어드밴스드 모션 벡터 예측 (AMVP) 을 위한 공간적 이웃 모션 벡터 (MV) 후보들을 예시하는 개념적 다이어그램이다.
도 6a 는 시간적 모션 벡터 예측자 (TMVP) 후보를 도시하는 개념적 다이어그램이다.
도 6b 는 TMVP 후보에 대한 모션 벡터 (MV) 스케일링을 도시하는 개념적 다이어그램이다.
도 7 은 인트라-블록 카피 (IBC) 코딩의 예를 도시하는 개념적 다이어그램이다.
도 8 은 코딩 유닛 (CU) 에 대한 대안의 시간적 모션 벡터 예측 (ATMVP) 의 예를 도시하는 개념적 다이어그램이다.
도 9 는 FRUC (frame-rate up conversion) 쌍방향 (bilateral) 매칭의 예를 도시하는 개념적 다이어그램이다.
도 10 은 예시의 FRUC 템플릿 매칭을 도시하는 개념적 다이어그램이다.
도 11a 및 도 11b 는 FRUC 템플릿 매칭 모드의 예들을 도시하는 플로우챠트들이다.
도 12 는 쌍방향 템플릿 매칭에 기초한 디코더-측 모션 벡터 도출 (DMVD) 을 도시하는 개념적 다이어그램이다.
도 13 은 광학 플로우 궤적을 도시하는 개념적 다이어그램이다.
도 14 는 8x4 블록을 위한 양방향 광학 (BIO) 에 대한 개념적 다이어그램이다.
도 15a 및 도 15b 는 오버랩된 블록 모션 보상 (OBMC) 이 적용되는 서브-블록들을 도시하는 개념적 다이어그램들이다.
도 16a 내지 도 16d 는 OBMC 가중의 예들을 도시한다.
도 17a 는 루마 QTBT 구조를 위한 CTU 파티션 구조의 예이다.
도 17b 는 크로마 QTBT 구조를 위한 CTU 파티션 구조의 예이다.
도 18a 및 18b 는 루마 QTBT 구조 및 크로마 QTBT 구조에 대한 서브-블록 파티션 및 모드 상속의 예를 도시한다.
도 19 는 비디오 데이터를 코딩하는 예시의 방법을 도시하는 플로우챠트이다.
도 2a 및 도 2b 는 예시의 쿼드트리 이진 트리 (QTBT) 구조 및 대응하는 코딩 트리 유닛 (CTU) 을 도시하는 개념적 다이어그램들이다.
도 3 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 인코더를 도시하는 블록 다이어그램이다.
도 4 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 디코더를 도시하는 블록 다이어그램이다.
도 5 는 병합 및 어드밴스드 모션 벡터 예측 (AMVP) 을 위한 공간적 이웃 모션 벡터 (MV) 후보들을 예시하는 개념적 다이어그램이다.
도 6a 는 시간적 모션 벡터 예측자 (TMVP) 후보를 도시하는 개념적 다이어그램이다.
도 6b 는 TMVP 후보에 대한 모션 벡터 (MV) 스케일링을 도시하는 개념적 다이어그램이다.
도 7 은 인트라-블록 카피 (IBC) 코딩의 예를 도시하는 개념적 다이어그램이다.
도 8 은 코딩 유닛 (CU) 에 대한 대안의 시간적 모션 벡터 예측 (ATMVP) 의 예를 도시하는 개념적 다이어그램이다.
도 9 는 FRUC (frame-rate up conversion) 쌍방향 (bilateral) 매칭의 예를 도시하는 개념적 다이어그램이다.
도 10 은 예시의 FRUC 템플릿 매칭을 도시하는 개념적 다이어그램이다.
도 11a 및 도 11b 는 FRUC 템플릿 매칭 모드의 예들을 도시하는 플로우챠트들이다.
도 12 는 쌍방향 템플릿 매칭에 기초한 디코더-측 모션 벡터 도출 (DMVD) 을 도시하는 개념적 다이어그램이다.
도 13 은 광학 플로우 궤적을 도시하는 개념적 다이어그램이다.
도 14 는 8x4 블록을 위한 양방향 광학 (BIO) 에 대한 개념적 다이어그램이다.
도 15a 및 도 15b 는 오버랩된 블록 모션 보상 (OBMC) 이 적용되는 서브-블록들을 도시하는 개념적 다이어그램들이다.
도 16a 내지 도 16d 는 OBMC 가중의 예들을 도시한다.
도 17a 는 루마 QTBT 구조를 위한 CTU 파티션 구조의 예이다.
도 17b 는 크로마 QTBT 구조를 위한 CTU 파티션 구조의 예이다.
도 18a 및 18b 는 루마 QTBT 구조 및 크로마 QTBT 구조에 대한 서브-블록 파티션 및 모드 상속의 예를 도시한다.
도 19 는 비디오 데이터를 코딩하는 예시의 방법을 도시하는 플로우챠트이다.
비디오 코딩 표준들은 그의 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장들을 포함하여, ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼 및 ITU-T H.264 (ISO/IEC MPEG-4 AVC 로서 또한 알려짐) 를 포함한다.
고효율 비디오 코딩 (HEVC) 비디오 코딩 표준은 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹 (MPEG) 의 JCT-VC (Joint Collaboration Team on Video Coding) 에 의해 공포되었다. 최신 HEVC 사양: ITU-T H.265, 시리즈 H: 시청각 및 멀티미디어 시스템, 시청각 서비스의 인프라구조-동영상 코딩, 일반적인 시청각 서비스를 위한 어드밴스드 비디오 코딩, 국제 텔레통신 연합 (International Telecommunication Union). 2016 년 12 월, 이하 HEVC WD 로 지칭되며, http://phenix.int-evry.fr/jct/doc_end_user/documents/ 23_San%20Diego/wg11/JCTVC-W1005-v4.zip 으로부터 입수가능하다.
ITU-T VCEG (Q6/16) 및 ISO/IEC MPEG (JTC 1/SC 29/WG 11) 는 이제 (스크린 컨텐츠 코딩 및 높은-동적-범위 코딩을 위한 그것의 현재의 확장들 및 단기 확장들을 포함하는) 현재의 HEVC 표준을 현저하게 초과하는 압축 능력을 갖는 향후 비디오 코딩 기술의 표준화에 대한 잠재적인 필요성을 연구하고 있다. 그 그룹들은 이러한 영역에서 그들의 전문가들에 의해 제안된 압축 기술 설계들을 평가하기 위해 JVET (Joint Video Exploration Team) 로서 알려진 공동 협력 노력에서 이 탐구 활동에 대해 함께 작업하고 있다. JVET 는 2015년 10 월 19-21 일 동안 처음 만났다. 참조 소프트웨어의 최신 버전, 즉 공동 탐구 모델 7 (Joint Exploration Model 7; JEM 7) 은 다음으로부터 다운로드될 수 있다: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/. 공동 탐구 테스트 모델 7 (JEM7) 의 알고리즘 기술은 JVET-G1001 로 지칭된다.
H.266/VVC (Versatile Video Coding) 표준으로서 지칭되는, JEM7 에 기초한 새로운 비디오 코딩 표준에 대한 초기 초안은 Benjamin Bross 에 의한 JVET-J1001 "Versatile Video Coding (Draft 1)" 문서에서 입수가능하고, 그 알고리즘 기술은 Jianle Chen 와 Elena Alshina 에 의한 JVET-J1002 "Algorithm description for Versatile Video Coding and Test Model 1 (VTM 1)" 의 문서에서 입수가능하다. 하지만, 본 개시의 기법들은 임의의 특정 코딩 표준에 제한되지 않는다.
VVC 는 HEVC 의 스크린 컨텐츠 코딩 (screen content coding; SCC) 의 일부로서 사용된 IBC 예측 모드와 유사하지만 동일하지는 않은, 인트라-블록 카피 (IBC) 예측 모드를 제공한다. 인트라-블록 카피 (IBC) 에 있어서, IBC 모드에서 코딩 (예를 들어, 인코딩 또는 디코딩) 되는 블록에 대한 블록 벡터는 코딩되는 블록과 동일한 픽처에서 참조 블록을 가리킨다. 상이한 타입의 블록들이 있다. 예를 들어, 비디오 데이터의 픽처는 루마 성분 및 크로마 성분들을 포함한다. 루마 성분은 복수의 루마 블록들을 형성하도록 파티셔닝되고, 크로마 성분들은 복수의 크로마 블록들을 형성하도록 파티셔닝된다.
VVC 에서, 루마 성분들 및 크로마 성분들은 상이한 방식들로 파티셔닝될 수도 있다. 예를 들어, 루마 성분들은 제 1 파티션 트리에 따라 파티셔닝될 수도 있고, 크로마 성분들은 제 2 파티션 트리에 따라 파티셔닝될 수도 있다. 일부 예들에서, 크로마 블록을 코딩하는데 필요한 정보의 양을 감소시키기 위해, 비디오 인코더가 크로마 블록에 대한 블록 벡터 정보를 명시적으로 시그널링하기 보다, IBC 예측 모드에서 예측된 크로마 블록이 대응하는 루마 블록의 블록 벡터 정보를 상속하는 것이 가능할 수도 있다. 루마 블록 및 크로마 블록이 일 예와 동일한 코딩 유닛 (CU) 의 일부인 경우 루마 블록은 크로마 블록과 대응하며, 그 역 또한 마찬가지이다.
그러나, 루마 블록들과 크로마 블록들이 상이하게 파티셔닝되면, 크로마 블록에 대해 대응하는 블록들이 될 크로마 블록과는 상이하게 파티셔닝된 복수의 상이한 루마 블록들이 있을 수도 있다. 루마 블록들 및 크로마 블록들의 상이한 파티션들로 인해 그리고 크로마 블록에 대응하는 복수의 루마 블록들이 있는 것으로 인해, 크로마 블록이 어느 루마 블록으로부터 블록 벡터를 상속해야 하는지가 명확하지 않을 수도 있다.
본 개시에서 설명된 기법들에 따라, 비디오 코더 (예를 들어, 비디오 인코더 또는 비디오 디코더) 는 루마 성분이 파티셔닝되었던 방식에 기초하여 크로마 블록의 복수의 서브-블록들로 크로마 블록을 파티셔닝하도록 구성될 수도 있다. 이러한 방식으로, 크로마 블록의 각각의 서브-블록들과 복수의 루마 블록들 사이에 일-대-일 대응이 있을 수도 있다. 비디오 코더는 IBC 예측 모드에서 코딩되었던 루마 블록들의 블록 벡터를 크로마 블록의 개개의 대응하는 서브-블록들에 할당하도록 구성될 수도 있다.
도 1 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 인코딩 및 디코딩 시스템 (100) 을 도시하는 블록 다이어그램이다. 본 개시의 기법들은 일반적으로, 비디오 데이터를 코딩 (인코딩 및/또는 디코딩) 하는 것으로 지향된다. 일반적으로, 비디오 데이터는 비디오를 프로세싱하기 위한 임의의 데이터를 포함한다. 따라서, 비디오 데이터는 원시, 코딩되지 않은 비디오, 인코딩된 비디오, 디코딩된 (예를 들어, 재구성된) 비디오, 및 비디오 메타데이터, 예컨대 시그널링 데이터를 포함할 수도 있다.
도 1 에 나타낸 바와 같이, 시스템 (100) 은 이 예에서 목적지 디바이스 (116) 에 의해 디코딩 및 디스플레이될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (102) 를 포함한다. 특히, 소스 디바이스 (102) 는 컴퓨터 판독가능 매체 (110) 를 통해 목적지 디바이스 (116) 에 비디오 데이터를 제공한다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋, 예컨대 스마트폰들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 무선 통신을 위해 장비될 수도 있고, 따라서 무선 통신 디바이스들로서 지칭될 수도 있다.
도 1 의 예에서, 소스 디바이스 (102) 는 비디오 소스 (104), 메모리 (106), 비디오 인코더 (200), 및 출력 인터페이스 (108) 를 포함한다. 목적지 디바이스 (116) 는 입력 인터페이스 (122), 비디오 디코더 (300), 메모리 (120), 및 디스플레이 디바이스 (118) 를 포함한다. 본 개시에 따라, 소스 디바이스 (102) 의 비디오 인코더 (200) 및 목적지 디바이스 (116) 의 비디오 디코더 (300) 는 인트라-블록 카피를 위한 기법들을 적용하도록 구성될 수도 있다. 따라서, 소스 디바이스 (102) 는 비디오 인코딩 디바이스의 예를 나타내고, 목적지 디바이스 (116) 는 비디오 디코딩 디바이스의 예를 나타낸다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 컴포넌트들 또는 배열들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (102) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (116) 는 통합된 디스플레이 디바이스를 포함하기 보다는, 외부 디스플레이 디바이스와 인터페이스할 수도 있다.
도 1 에 나타낸 바와 같은 시스템 (100) 은 하나의 예일 뿐이다. 일반적으로, 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스는 인트라-블록 카피 (IBC) 를 위한 기법들을 수행할 수도 있다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 소스 디바이스 (102) 가 목적지 디바이스 (116) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 이러한 코딩 디바이스들의 예들일 뿐이다. 본 개시는 데이터의 코딩 (인코딩 및/또는 디코딩) 을 수행하는 디바이스로서 "코딩" 디바이스를 지칭한다. 따라서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 코딩 디바이스, 특히 각각 비디오 인코더 및 비디오 디코더의 예를 나타낸다. 일부 예들에 있어서, 디바이스들 (102, 116) 은 디바이스들 (102, 116) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 이로써, 시스템 (100) 은 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 텔레포니를 위해, 디바이스들 (102, 116) 사이의 일방향 또는 이방향 비디오 송신을 지원할 수도 있다.
일반적으로, 비디오 소스 (104) 는 비디오 데이터 (즉, 원시, 코딩되지 않은 비디오 데이터) 의 소스를 나타내며 픽처들에 대한 데이터를 인코딩하는 비디오 인코더 (200) 로 비디오 데이터의 순차적인 일련의 픽처들 (또한 "프레임들"으로서 지칭됨) 을 제공한다. 소스 디바이스 (102) 의 비디오 소스 (104) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 원시 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 컨텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 추가적인 대안으로서, 비디오 소스 (104) 는 컴퓨터 그래픽 기반 데이터를 소스 비디오로서, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합으로서 생성할 수도 있다. 각각의 경우에 있어서, 비디오 인코더 (200) 는 캡쳐되거나 사전-캡쳐되거나 또는 컴퓨터 생성된 비디오 데이터를 인코딩한다. 비디오 인코더 (200) 는 수신된 순서 (때때로 "디스플레이 순서"로 지칭됨) 로부터 픽처들을 코딩을 위한 코딩 순서로 재배열할 수도 있다. 비디오 인코더 (200) 는 인코딩된 비디오 데이터를 포함하는 비트스트림을 생성할 수도 있다. 소스 디바이스 (102) 는 그 후 예를 들어 목적지 디바이스 (116) 의 입력 인터페이스 (122) 에 의한 수신 및/또는 취출을 위해 컴퓨터 판독 가능 매체 (110) 상으로 출력 인터페이스 (108) 를 통해 인코딩된 비디오 데이터를 출력할 수도 있다.
소스 디바이스 (102) 의 메모리 (106) 및 목적지 디바이스 (116) 의 메모리 (120) 는 범용 메모리들을 나타낸다. 일부 예에서, 메모리들 (106, 120) 은 원시 비디오 데이터, 예를 들어 비디오 소스 (104) 로부터의 원시 비디오, 및 비디오 디코더 (300) 로부터의 원시, 디코딩된 비디오 데이터를 저장할 수도 있다. 부가적으로 또는 대안으로, 메모리들 (106, 120) 은 예를 들어, 비디오 인코더 (200) 및 비디오 디코더 (300) 에 의해 각각 실행가능한 소프트웨어 명령을 저장할 수도 있다. 이 예에서는 비디오 인코더 (200) 및 비디오 디코더 (300) 와 별도로 나타나 있지만, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 또한 기능적으로 유사하거나 동등한 목적을 위한 내부 메모리들을 포함할 수 있음을 이해해야 한다. 또한, 메모리들 (106, 120) 은 예를 들어, 비디오 인코더 (200) 로부터 출력되고 비디오 디코더 (300) 에 입력된 인코딩된 비디오 데이터를 저장할 수도 있다. 일부 예들에서, 메모리들 (106, 120) 의 부분들은 예를 들어, 원시, 디코딩 및/또는 인코딩된 비디오 데이터를 저장하기 위해 하나 이상의 비디오 버퍼로서 할당될 수도 있다.
컴퓨터 판독가능 매체 (110) 는 인코딩된 비디오 데이터를 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로 전송할 수 있는 임의의 타입의 매체 또는 디바이스를 나타낼 수도 있다. 일 예에서, 컴퓨터 판독가능 매체 (110) 는 소스 디바이스 (102) 가 실시간으로, 예를 들어 무선 주파수 네트워크 또는 컴퓨터 기반 네트워크를 통해 직접 목적지 디바이스 (116) 로 인코딩된 비디오 데이터를 송신하는 것을 가능하게 하기 위한 통신 매체를 나타낸다. 출력 인터페이스 (108) 는 인코딩된 비디오 데이터를 포함하는 송신 신호를 변조할 수도 있고, 입력 인터페이스 (122) 는 무선 통신 프로토콜과 같은 통신 표준에 따라 수신된 송신 신호를 변조할 수도 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 패킷 기반 네트워크, 예컨대 로컬 영역 네트워크, 광역 네트워크, 또는 글로벌 네트워크, 예컨대 인터넷의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 소스 디바이스 (102) 는 출력 인터페이스 (108) 로부터 저장 디바이스 (116) 로 인코딩된 데이터를 출력할 수도 있다. 유사하게, 목적지 디바이스 (116) 는 입력 인터페이스 (122) 를 통해 저장 디바이스 (116) 로부터의 인코딩된 데이터에 액세스할 수도 있다. 저장 디바이스 (116) 는 하드 드라이브, 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체와 같은 다양한 분산된 또는 로컬 액세스된 데이터 저장 매체 중 임의의 것을 포함할 수도 있다.
일부 예들에서, 소스 디바이스 (102) 는 소스 디바이스 (102) 에 의해 생성된 인코딩된 비디오를 저장할 수도 있는 파일 서버 (114) 또는 다른 중간 저장 디바이스에 인코딩된 비디오 데이터를 출력할 수도 있다. 목적지 디바이스 (116) 는 스트리밍 또는 다운로드를 통해 파일 서버 (114) 로부터 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버 (114) 는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (116) 로 송신할 수 있는 임의의 타입의 서버 디바이스일 수도 있다. 파일 서버 (114) 는 (예를 들어, 웹 사이트를 위한) 웹 서버, 파일 전송 프로토콜 (FTP) 서버, 컨텐츠 전달 네트워크 디바이스, 또는 NAS (network attached storage) 디바이스를 나타낼 수도 있다. 목적지 디바이스 (116) 는 인터넷 접속을 포함하는, 임의의 표준 데이터 접속을 통해 파일 서버 (114) 로부터 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 파일 서버 (114) 상에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한, 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 파일 서버 (114) 및 입력 인터페이스 (122) 는 스트리밍 송신 프로토콜, 다운로드 송신 프로토콜 또는 이들의 조합에 따라 동작하도록 구성될 수도 있다.
출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 무선 송신기/수신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 다양한 IEEE 802.11 표준 중 임의의 것에 따라 동작하는 무선 통신 컴포넌트, 또는 다른 물리적 컴포넌트를 나타낼 수도 있다. 출력 인터페이스 (108) 및 입력 인터페이스 (122) 가 무선 컴포넌트를 포함하는 예들에서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 4G, 4G-LTE (Long-Term Evolution), LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라, 인코딩된 비디오 데이터와 같은 데이터를 전송하도록 구성될 수도 있다. 출력 인터페이스 (108) 가 무선 송신기를 포함하는 일부 예들에서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라, 인코딩된 비디오 데이터와 같은 데이터를 전송하도록 구성될 수도 있다. 일부 예들에서, 소스 디바이스 (102) 및/또는 목적지 디바이스 (116) 는 개개의 시스템-온-칩 (SoC) 디바이스들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (102) 는 비디오 인코더 (200) 및/또는 출력 인터페이스 (108) 에 기인하는 기능성을 수행하기 위한 SoC 디바이스를 포함할 수도 있고, 목적지 디바이스 (116) 는 비디오 디코더 (300) 및/또는 입력 인터페이스 (122) 에 기인하는 기능성을 수행하기 위한 SoC 디바이스를 포함할 수도 있다.
본 개시의 기법들은 오버-디-에어 (over-the-air) 텔레비전 브로드캐스트, 케이블 텔레비전 송신, 위성 텔레비전 송신, 인터넷 스트리밍 비디오 송신, 예컨대 DASH (dynamic adaptive streaming over HTTP), 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하는 비디오 코딩에 적용될 수도 있다.
목적지 디바이스 (116) 의 입력 인터페이스 (122) 는 컴퓨터 판독가능 매체 (110)(예를 들어, 저장 디바이스 (112), 파일 서버 (114) 등) 로부터 인코딩된 비디오 비트스트림을 수신한다. 컴퓨터 판독가능 매체 (110) 로부터의 인코딩된 비디오 비트스트림은 비디오 블록들 또는 다른 코딩된 유닛들 (예를 들어, 슬라이스들, 픽처들, 픽처들의 그룹들, 시퀀스들 등) 의 프로세싱 및/또는 특징들을 기술하는 값들을 갖는 신택스 엘리먼트들과 같은, 비디오 디코더 (300) 에 의해 또한 사용되는, 비디오 인코더 (200) 에 의해 정의된 시그널링 정보를 포함할 수도 있다. 디스플레이 디바이스 (118) 는 디코딩된 비디오 데이터의 디코딩된 픽처들을 사용자에게 디스플레이한다. 디스플레이 디바이스 (118) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 나타낼 수도 있다.
도 1 에 나타내지는 않았지만, 일부 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 각각 오디오 인코더 및/또는 오디오 디코더와 통합될 수도 있고, 공통 데이터 스트림에서 오디오 및 비디오 양자 모두를 포함하는 멀티플렉싱된 스트림을 핸들링하기 위해, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및/또는 소프트웨어를 포함할 수도 있다. 적용가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 다른 프로토콜들, 예컨대 사용자 데이터그램 프로토콜 (UDP) 을 따를 수도 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 각각 다양한 적합한 인코더 및/또는 디코더 회로부, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 주문형 집적회로(ASIC)들, 필드 프로그램가능 게이트 어레이(FPGA)들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들으로서 구현될 수도 있다. 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하는 하드웨어에서 명령들을 실행할 수도 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 하나는 개개의 디바이스에 있어서 조합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. 비디오 인코더 (200) 및/또는 비디오 디코더 (300) 를 포함하는 디바이스는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대 셀룰러 전화기를 포함할 수도 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 고효율 비디오 코딩 (HEVC) 으로서 또한 지칭되는 ITU-T H.265 와 같은 비디오 코딩 표준 또는 그에 대한 확장들, 예컨대 멀티-뷰 및/또는 스케일러블 비디오 코딩 확장들에 따라 동작할 수도 있다. 대안으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 현재 개발 중인 다기능 비디오 코딩 (VVC) 을 위한 공동 탐구 테스트 모델 (JEM7) 과 같은 다른 독점 또는 산업 표준들에 따라 동작할 수도 있다. 그러나, 본 개시의 기법들은 임의의 특정 표준에 제한되지 않으며, 개발 중인 비디오 코딩 표준들에 적용가능할 수도 있다.
일반적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 픽처들의 블록 기반 코딩을 수행할 수도 있다. 용어 "블록" 은 일반적으로 프로세싱될 (예를 들어, 인코딩될, 디코딩될, 또는 인코딩 및 / 또는 디코딩 프로세스에서 사용될) 데이터를 포함하는 구조를 지칭한다. 예를 들어, 블록은 루미넌스 및 / 또는 크로미넌스 데이터의 샘플들의 2 차원 매트릭스를 포함할 수도 있다. 일반적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 YUV (예를 들어, Y, Cb, Cr) 포맷으로 표현된 비디오 데이터를 코딩할 수도 있다. 즉, 픽처의 샘플들에 대한 적색, 녹색, 및 청색 (RGB) 을 코딩하기 보다, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 루미넌스 (루마) 및 크로미넌스 (크로마) 성분들을 코딩할 수도 있으며, 여기서 크로미넌스 성분들은 적색 색조 및 청색 색조 크로미넌스 성분들 양자 모두를 포함할 수도 있다. 일부 예들에서, 비디오 인코더 (200) 는 인코딩 이전에 수신된 RGB 포맷된 데이터를 YUV 표현으로 변환하고, 비디오 디코더 (300) 는 YUV 표현을 RGB 포맷으로 변환한다. 대안으로, 프리-프로세싱 및 포스트-프로세싱 유닛들 (도시되지 않음) 이 이들 변환들을 수행할 수도 있다.
본 개시는 일반적으로 픽처의 데이터를 인코딩 또는 디코딩하는 프로세스를 포함하기 위해 픽처들의 코딩 (예를 들어, 인코딩 및 디코딩) 을 참조한다. 유사하게, 본 개시는 블록들에 대한 데이터를 인코딩 또는 디코딩하는 프로세스, 예를 들어 예측 및/또는 잔차 코딩을 포함하기 위해 픽처의 블록들의 코딩을 참조한다. 인코딩된 비디오 비트스트림은 일반적으로 픽처들의 블록들로의 파티셔닝 및 코딩 결정들 (예를 들어, 코딩 모드들) 을 나타내는 신택스 엘리먼트들에 대한 일련의 값들을 포함한다. 따라서, 픽처 또는 블록을 코딩하는 것에 대한 참조들은 일반적으로 픽처 또는 블록을 형성하는 신택스 엘리먼트에 대한 코딩 값들로서 이해되어야 한다.
HEVC 는 코딩 유닛 (CU), 예측 유닛 (PU) 및 변환 유닛 (TU) 을 포함하는 다양한 블록들을 정의한다. HEVC 에 따라, (비디오 인코더 (200) 와 같은) 비디오 코더는 쿼드트리 구조에 따라 코딩 트리 유닛 (CTU) 을 CU들로 파티셔닝한다. 즉, 비디오 코더는 CTU들 및 CU들을 4 개의 동등한, 오버랩하지 않는 정사각형들로 파티셔닝하고, 쿼드트리의 각 노드는 0 또는 4 개의 자식 노드들을 갖는다. 자식 노드가 없는 노드들은 "리프 노드들" 로서 지칭될 수도 있으며, 이러한 리프 노드들의 CU들은 하나 이상의 PU들 및/또는 하나 이상의 TU들을 포함할 수도 있다. 비디오 코더는 PU들 및 TU들을 추가로 파티셔닝할 수도 있다. 예를 들어, HEVC 에서, 잔차 쿼드트리 (RQT) 는 TU들의 파티셔닝을 나타낸다. HEVC 에서, PU들은 인터-예측 데이터를 나타내는 한편, TU들은 잔차 데이터를 나타낸다. 인트라-예측되는 CU들은 인트라-모드 표시와 같은 인트라-예측 정보를 포함한다.
HEVC 에 있어서, 슬라이스에서의 최대 코딩 유닛은 코딩 트리 블록 (CTB) 으로 불린다. CTB 는 노드가 코딩 유닛인 쿼드 트리를 포함한다. CTB 의 사이즈는 HEVC 메인 프로파일에서 (기술적으로 8x8 CTB 사이즈들이 지원될 수 있지만) 16x16 에서 64x64 까지의 범위일 수 있다. 코딩 유닛 (CU) 은 8x8 만큼 작지만 이와 동일한 사이즈의 CTB 일 수 있다. 각각의 코딩 유닛은 하나의 모드로 코딩된다. CU 가 인터-코딩될 때, 이는 추가로 2 개의 예측 유닛들 (PU들) 로 파티셔닝될 수도 있거나, 추가의 파티션이 적용되지 않을 때 단지 하나의 PU 가 될 수도 있다. 2 개의 PU들이 하나의 CU 에 존재할 때, 이들은 하프 사이즈 직사각형들 또는 CU 의 ¼ 또는 ¾ 사이즈를 가진 2 개의 직사각형 사이즈일 수 있다.
CU 가 인터-코딩될 때, 일 세트의 모션 정보가 각각의 PU 에 대해 존재한다. 또한, 각각의 PU 는 고유 인터-예측 모드로 코딩되어 모션 정보의 세트를 도출한다. HEVC 에서, 가장 작은 PU 사이즈들은 8×4 및 4×8 이다.
다른 예로서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 JEM 에 따라 동작하도록 구성될 수도 있다. JEM 에 따라, 비디오 코더 (예컨대 비디오 인코더 (200)) 는 픽처를 복수의 코딩 트리 유닛들 (CTU들) 로 파티셔닝한다. 비디오 인코더 (200) 는 쿼드트리 이진 트리 (QTBT) 구조와 같은 트리 구조에 따라 CTU 를 파티셔닝할 수도 있다. JEM 의 QTBT 구조는 HEVC 의 CU들, PU들, 및 TU들 사이의 분리와 같은, 다중 파티션 타입들의 개념들을 제거한다. JEM 의 QTBT 구조는 2 개의 레벨들: 쿼드트리 파티셔닝에 따라 파티셔닝된 제 1 레벨, 및 이진 트리 파티셔닝에 따라 파티셔닝된 제 2 레벨을 포함한다. QTBT 구조의 루트 노드는 CTU 에 대응한다. 이진 트리들의 리프 노드들은 코딩 유닛들 (CU들) 에 대응한다.
일부 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 루미넌스 및 크로미넌스 성분들의 각각을 나타내기 위해 단일 QTBT 구조를 사용할 수도 있는 한편, 다른 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 루미넌스 성분에 대한 하나의 QTBT 구조 및 양자의 크로미넌스 성분들에 대한 다른 QTBT 구조 (또는 개개의 크로미넌스 성분들에 대한 2 개의 QTBT 구조들) 와 같은 2 이상의 QTBT 구조들을 사용할 수도 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 HEVC 당 쿼드트리 파티셔닝, JEM (예를 들어, VVC) 에 따른 QTBT 파티셔닝, 또는 다른 파티셔닝 구조들을 사용하도록 구성될 수도 있다. 설명의 목적을 위해, 본 개시의 기법들의 설명은 QTBT 파티셔닝에 대하여 제시된다. 그러나, 본 개시의 기법들은 또한, 쿼드트리 파티셔닝, 또는 다른 타입들의 파티셔닝에도 사용하도록 구성된 비디오 코더들에 적용될 수도 있음이 이해되어야 한다.
본 개시는 수직 및 수평 차원들에 관하여 (CU 또는 다른 비디오 블록과 같은) 블록의 샘플 차원들을 지칭하기 위해 "NxN"및 "N 바이 N", 예를 들어 16x16 샘플들 또는 16 바이 16 샘플들을 상호교환가능하게 사용할 수도 있다. 일반적으로, 16x16 CU 는 수직 방향에서 16 샘플들 (y = 16) 그리고 수평 방향에서 16 샘플들 (x = 16) 을 가질 것이다. 마찬가지로, NxN CU 는 일반적으로 수직 방향에서 N 샘플들 및 수평 방향에서 N 샘플들을 갖고, 여기서 N 은 음이 아닌 정수 값을 나타낸다. CU 에서의 샘플들은 행들 및 열들로 배열될 수도 있다. 더욱이, CU들은 수직 방향에서의 동일한 수의 샘플들을 수평 방향에서 반드시 가질 필요는 없다. 예를 들면, CU들은 NxM 샘플들을 포함할 수도 있고, 여기서 M 은 N 과 반드시 동일한 것은 아니다.
비디오 인코더 (200) 는 예측 및/또는 잔차 정보를 나타내는 CU들에 대한 비디오 데이터, 및 다른 정보를 인코딩한다. 예측 정보는 CU 에 대한 예측 블록을 형성하기 위해 CU 가 어떻게 예측될지를 표시한다. 잔차 정보는 일반적으로 인코딩 전의 CU 의 샘플들과 예측 블록 사이의 샘플 별 차이들을 나타낸다.
CU 를 예측하기 위해, 비디오 인코더 (200) 는 일반적으로 인터-예측 또는 인트라-예측을 통해 CU 에 대한 예측 블록을 형성할 수도 있다. 인터-예측은 일반적으로 이전에 코딩된 픽처의 데이터로부터 CU 를 예측하는 것을 지칭하는 반면, 인트라-예측은 일반적으로 동일한 픽처의 이전에 코딩된 데이터로부터 CU 를 예측하는 것을 지칭한다. 인터-예측을 수행하기 위해, 비디오 인코더 (200) 는 하나 이상의 모션 벡터들 사용하여 예측 블록을 생성할 수도 있다. 비디오 인코더 (200) 는 일반적으로, 예를 들어 CU 와 참조 블록 사이의 차이에 관하여, CU 와 밀접하게 매칭하는 참조 블록을 식별하기 위해 모션 탐색을 수행할 수도 있다. 비디오 인코더 (200) 는 참조 블록이 현재 CU 와 밀접하게 매칭하는지 여부를 결정하기 위해 절대차의 합 (sum of absolute difference; SAD), 제곱차의 합 (sum of squared differences; SSD), 평균 절대차 (mean absolute difference; MAD), 평균 제곱차 (mean squared differences; MSD) 또는 다른 그러한 차이 계산들을 사용하여 차이 메트릭을 계산할 수도 있다. 일부 예들에서, 비디오 인코더 (200) 는 단방향 예측 또는 양방향 예측을 사용하여 현재 CU 를 예측할 수도 있다.
각각의 블록에 대해, 모션 정보의 세트가 이용가능할 수 있다. 모션 정보의 세트는 순방향 및 역방향 예측 방향들에 대한 모션 정보를 포함한다. 여기서, 순방향 및 역방항 예측 방향들은 양방향 예측 모드의 2 개의 예측 방향들이고, 용어들 "순방향" 및 "역방향" 이 반드시 지오메트리 의미를 가질 필요는 없으며, 대신 이들은 현재 픽처의 참조 픽처 리스트 0 (RefPicList0) 및 참조 픽처 리스트 1 (RefPicList1) 에 대응한다. 하나의 참조 픽처 리스트만이 픽처 또는 슬라이스에 대해 이용가능할 때, RefPicList0 만이 이용가능하고 슬라이스의 각각의 블록의 모션 정보는 항상 순방향이다.
각각의 예측 방향에 대해, 모션 정보는 참조 인덱스 및 모션 벡터를 포함한다. 일부 경우들에서, 단순화를 위해, 모션 벡터 자체는, 연관된 참조 인덱스를 갖는 것으로 가정되는 방식으로 참조될 수도 있다. 참조 인덱스는 현재 참조 픽처 리스트 (RefPicList0 또는 RefPicList1) 에서의 참조 픽처를 식별하는데 사용된다. 모션 벡터는 수평 및 수직 성분을 갖는다.
픽처 순서 카운트 (POC) 는 픽처의 디스플레이 순서를 식별하기 위해 비디오 코딩 표준들에서 널리 사용된다. 하나의 코딩된 비디오 시퀀스 내에서 2 개의 픽처들이 동일한 POC 값을 가질 수도 있는 경우들이 존재하더라도, 이는 코딩된 비디오 시퀀스 내에서는 통상적으로 일어나지 않는다. 다중 코딩된 비디오 시퀀스들이 비트스트림에 존재할 때, 동일한 POC 의 값을 가진 픽처들은 디코딩 순서에 관하여 서로 더 근접할 수도 있다. 픽처들의 POC 값들은 통상적으로 참조 픽처 리스트 구성, HEVC 에서와 같은 참조 픽처 세트의 도출, 및 모션 벡터 스케일링을 위해 사용된다.
JEM 은 또한, 인터-예측 모드로 고려될 수도 있는 아핀 모션 보상 모드를 제공한다. 아핀 모션 보상 모드에서, 비디오 인코더 (200) 는 줌인 또는 줌아웃, 회전, 원근 모션 (perspective motion), 또는 다른 불규칙한 모션 타입들과 같은 비-병진 모션을 나타내는 2 이상의 모션 벡터들을 결정할 수도 있다.
인트라-예측을 수행하기 위해, 비디오 인코더 (200) 는 예측 블록을 생성하기 위해 인트라-예측 모드를 선택할 수도 있다. 일부 예들에서, 평면 모드 및 DC 모드 뿐만 아니라, 다양한 방향 모드들을 포함한, 67 개의 인트라-예측 모드들이 이용가능하다. 일반적으로, 비디오 인코더 (200) 는 현재 블록의 샘플들을 예측하기 위한 현재 블록 (예를 들어, CU 의 블록) 에 대해 이웃하는 샘플들을 기술하는 인트라-예측 모드를 선택한다. 이러한 샘플들은 일반적으로, 비디오 인코더 (200) 가 래스터 스캔 순서로 (좌측에서 우측으로, 상단에서 하단으로) CTU들 및 CU들을 코딩한다고 가정하여, 현재 블록과 동일한 픽처에서 현재 블록의 상측, 상측 및 좌측으로, 또는 좌측으로 있을 수도 있다.
비디오 인코더 (200) 는 현재 블록에 대한 예측 모드를 나타내는 데이터를 인코딩한다. 예를 들어, 인터-예측 모드들에 대해, 비디오 인코더 (200) 는 이용가능한 다양한 인터-예측 모드들 중 어느 것이 사용되는지를 나타내는 데이터 뿐만 아니라, 대응하는 모드에 대한 모션 정보를 인코딩할 수도 있다. 단방향 또는 양방향 인터-예측을 위해, 예를 들어 비디오 인코더 (200) 는 어드밴스드 모션 벡터 예측 (AMVP) 또는 병합 모드를 사용하여 모션 벡터들을 인코딩할 수도 있다. 비디오 인코더 (200) 는 유사한 모드들을 사용하여 아핀 모션 보상 모드에 대한 모션 벡터들을 인코딩할 수도 있다.
HEVC 표준에 있어서, 예측 유닛 (PU) 에 대해 각각 병합 (스킵이 병합의 특정 경우로서 고려됨) 및 어드밴스드 모션 벡터 예측 (AMVP) 모드들로 명명된, 2 개의 인터 예측 모드들이 있다. AMVP 또는 병합 모드 중 어느 하나에서, 모션 벡터 (MV) 후보 리스트가 다중 모션 벡터 예측자들에 대해 유지된다. MV 후보 리스트로부터 하나의 후보를 취함으로써 현재 PU 의 병합 모드에서의 참조 인덱스들 뿐만 아니라 모션 벡터(들) 이 생성된다.
MV 후보 리스트는 병합 모드에 대해 5 개까지의 후보들 및 AMVP 모드에 대해 단지 2 개의 후보들만을 포함한다. 병합 후보는 모션 정보의 세트, 예를 들어 양자의 참조 픽처 리스트들 (리스트 0 및 리스트 1) 에 대응하는 모션 벡터들 및 참조 인덱스들을 포함할 수도 있다. 병합 후보가 병합 인덱스에 의해 식별되는 경우, 참조 픽처들이 현재 블록들의 예측을 위해 사용될 뿐만 아니라 연관된 모션 벡터들이 결정된다. 하지만, AMVP 모드 하에서, 리스트 0 또는 리스트 1 중 어느 하나로부터의 각각의 잠재적 예측 방향에 대해, AMVP 후보가 오직 모션 벡터만을 포함하기 때문에 참조 인덱스는 MV 후보 리스트에 MVP 인덱스와 함께, 명시적으로 시그널링될 필요가 있다. AMVP 모드에서, 예측된 모션 벡터들은 추가로 정제될 수 있다.
위에서 알 수 있는 바와 같이, 병합 후보는 모션 정보의 전체 세트에 대응하는 한편, AMVP 후보는 특정 예측 방향 및 참조 인덱스에 대해 단지 하나의 모션 벡터만을 포함한다. 양자의 모드들에 대한 후보들은 동일한 공간적 및 시간적 이웃 블록들로부터 유사하게 도출된다.
병합 및 AMVP 에 대해, 공간적 MV 후보들은 특정 PU (PU0) 에 대해, 도 5 에 나타낸 이웃하는 블록들로부터 도출되지만, 그 블록들로부터 후보들을 생성하기 위한 방법들은 병합 및 AMVP 모드들에 대해 상이하다. 병합 모드에서, 5 개의 공간적 MV 후보들의 포지션들이 도 5 에 나타나 있다. 각각의 후보 포지션에 대해, 가용성은 다음의 순서에 따라 체크된다: {a1, b1, b0, a0, b2}.
AMVP 모드에 있어서, 이웃하는 블록들은 도 5 에 나타낸 바와 같이, 2 개의 그룹들: 블록들 (a0 및 a1) 을 포함하는 좌측 그룹 및 블록들 (b0, b1, 및 b2) 을 포함하는 상측 그룹으로 분할된다. 좌측 그룹에 대해, 가용성은 다음의 순서에 따라 체크된다: {a0, a1}. 상측 그룹에 대해, 가용성은 다음의 순서에 따라 체크된다: {b0, b1, b2}. 각각의 그룹에 대해, 시그널링된 참조 인덱스에 의해 표시되는 동일한 참조 픽처를 지칭하는 이웃하는 블록에서 잠재적인 후보는 그룹의 최종 후보를 형성하도록 선정될 최상위 우선순위를 갖는다. 모든 이웃하는 블록들은 동일한 참조 픽처를 가리키는 모션 벡터를 포함하지 않는다는 것이 가능하다. 따라서, 그러한 후보가 발견될 수 없으면, 최종 후보를 형성하기 위해 제 1 가용 후보가 스케일링될 것이며, 따라서, 시간적 거리 차이들이 보상될 수 있다.
병합 및 AMVP 모드에 대한 공간적 이웃 후보들 이외에 다른 후보들이 있다. 병합 모드에서, 공간적 후보들을 검증한 후, 두 종류의 리던던시가 제거된다. 현재 PU 에 대한 후보 포지션이 동일한 CU 내의 제 1 PU 를 지칭할 경우, 그 포지션은 제외되는데, 이는 동일한 병합이 예측 파티션들로 스플릿팅하지 않으면서 CU 에 의해 달성될 수 있기 때문이다. 게다가, 후보들이 정확히 동일한 모션 정보를 갖는 임의의 리던던트 엔트리들이 또한 제외된다. 공간적 이웃 후보들이 체크된 후, 시간적 후보들이 검증된다. 시간적 후보에 대해, 이용가능한 경우, 참조 픽처의 병치된 PU 의 바로 외측의 우측 하단 포지션이 사용된다. 그렇지 않으면, 중심 포지션이 대신 사용된다. 병치된 PU 를 선정하는 방식은 이전 표준들과 유사하지만, HEVC 는 어느 참조 픽처 리스트가 병치된 참조 픽처를 위해 사용되는지를 특정하기 위해 인덱스를 송신함으로써 더 많은 유연성을 허용한다. 시간적 후보의 사용과 관련된 하나의 쟁점은 참조 픽처의 모션 정보를 저장하기 위한 메모리의 양이다. 이는 더 작은 PB (또는 가능하게는 PU) 구조가 참조 픽처에서 대응하는 위치에 사용될 때에도, 시간적 모션 후보들을 저장하기 위한 세분성 (granularity) 을 16×16 루마 그리드의 해상도로만 한정함으로써 해결된다.
또한, PPS (픽처 파라미터 세트)-레벨 플래그는 비디오 인코더 (200) 가 에러 발생이 쉬운 애플리케이션들에 유용한, 시간적 후보의 사용을 디스에이블하도록 한다. 병합 후보들의 최대 수 (C) 는 슬라이스 헤더에 특정된다. 발견된 병합 후보들의 수 (시간적 후보 포함) 가 C 보다 큰 경우, 첫번째 C-1 공간적 후보들 및 시간적 후보만이 보유된다. 그렇지 않으면, 식별된 병합 후보들의 수가 C 보다 작은 경우, 그 수가 C 와 동등해질 때까지 부가 후보들이 생성된다. 이는 코딩된 데이터를 파싱하는 능력이 병합 후보 가용성에 의존적이지 않기 때문에, 파싱을 단순화하고 더욱 강건하게 한다. B 슬라이스들에 대해, 부가 병합 후보들은 참조 픽처 리스트 0 및 리스트 1 에 대해 미리정의된 순서에 따라 2 개의 기존 후보들을 선정함으로써 생성된다. 예를 들어, 제 1 생성된 후보는 리스트 0 에 대한 제 1 병합 후보 및 리스트 1 에 대한 제 2 병합 후보를 사용한다. HEVC 는 (0, 1), (1, 0), (0, 2), (2, 0), (1, 2), (2, 1), (0, 3), (3, 0), (1, 3), (3, 1), (2, 3) 및 (3, 2) 로서 이미 구성된 병합 후보 리스트에서 다음 순서로 총 12 개의 미리정의된 2 개의 쌍들을 특정한다. 이들 중에서, 5 개까지의 후보들이 리던던트 엔트리들을 제거한 후 포함될 수 있다. 병합 후보들의 수가 여전히 C 보다 적을 때, 디폴트 모션 벡터들 및 대응하는 참조 인덱스들을 포함하는 디폴트 병합 후보들은, 0 부터 참조 픽처들의 수 마이너스 병합 후보 리스트에서의 임의의 나머지 엔트리들을 채우는데 사용된 수까지의 참조 인덱스들과 연관된 제로 모션 벡터들로 대신 사용된다.
AMVP 모드에서, 비디오 인코더 (200) 가 모션 벡터에서의 변화의 코딩된 차이 (예를 들어, 모션 벡터 차이 (MVD)) 를 전송할 수 있기 때문에, HEVC 만이 훨씬 더 적은 수의 후보들이 모션 벡터 예측 프로세스 경우에 사용되도록 한다. 더욱이, 비디오 인코더 (200) 는 비디오 인코더 (200) 에서 계산적으로 가장 비용이 높은 동작들 중 하나인 모션 추정을 수행할 수도 있고, 적은 수의 후보들을 허용함으로써 복잡성이 감소된다. 이웃하는 PU 의 참조 인덱스가 현재 PU 의 참조 인덱스와 동일하지 않은 경우, 스케일링된 버전의 모션 벡터가 사용된다. 이웃하는 모션 벡터는 이웃하는 PU 및 현재 PU 의 참조 인덱스들로 표시된 현재 픽처와 참조 픽처들 사이의 시간적 거리들에 따라 스케일링된다. 2 개의 공간적 후보들이 동일한 모션 벡터 성분들을 가질 때, 하나의 리던던트 공간적 후보는 제외된다. 모션 벡터 예측자들의 수가 2 와 동일하지 않고 시간적 MV 예측의 사용이 명시적으로 디스에이블되지 않을 때, 시간적 MV 예측 후보가 포함된다. 이는 2 개의 공간적 후보들이 이용가능할 때 시간적 후보가 전혀 사용되지 않음을 의미한다. 최종적으로, 제로 모션 벡터인 디폴트 모션 벡터가 모션 벡터 예측 후보들의 수가 2 와 동일할 때까지 반복적으로 포함되며, 이는 모션 벡터 예측자들의 수가 2 임을 보장한다. 따라서, AMVP 모드의 경우 어느 모션 벡터 예측이 사용되는지를 식별하기 위해 코딩된 플래그만이 필요하다.
시간적 모션 벡터 예측자 (TMVP) 후보는, 인에이블되고 이용가능한 경우, 공간적 모션 벡터 후보들 이후에 MV 후보 리스트에 부가된다. TMVP 후보에 대한 모션 벡터 도출의 프로세스는 병합 및 AMVP 모드들 양자 모두에 대해 동일하지만, 병합 모드에서 TMVP 후보에 대한 타겟 참조 인덱스는 항상 0 으로 설정된다.
TMVP 후보 도출을 위한 프라이머리 블록 위치는 공간적 이웃 후보들을 생성하는데 사용된 상측 및 좌측 블록들에 대한 바이어스를 보상하기 위해, 도 6a 에 블록 "T" 로서 나타낸 바와 같이 병치된 (collocated) PU 외부의 하단 우측 블록이다. 그러나, 그 블록이 현재 CTB 행의 외부에 위치되거나 또는 모션 정보가 이용가능하지 않으면, 블록은 PU 의 중심 블록으로 치환된다.
TMVP 후보에 대한 모션 벡터는 슬라이스 레벨에서 표시된, 코로케이팅된 픽처의 코로케이팅된 PU 로부터 도출된다. 코로케이팅된 PU 에 대한 모션 벡터는 병치된 MV 로 불린다. AVC 에서의 시간적 다이렉트 모드와 유사하게, TMVP 후보 모션 벡터를 도출하기 위해, 코로케이팅된 MV 는 도 6b 에 나타낸 바와 같이 시간적 거리 차이들을 보상하기 위해 스케일링될 수도 있다.
병합 및 AMVP 모드들의 여러 양태들은 다음과 같이 언급할 가치가 있다.
모션 벡터 스케일링: 모션 벡터들의 값이 그 프리젠테이션 시간에서의 픽처들의 거리에 비례한다고 가정된다. 모션 벡터는 2 개의 픽처들, 즉 참조 픽처, 및 모션 벡터를 포함하는 픽처 (즉 포함 픽처) 를 연관시킨다. 모션 벡터가 다른 모션 벡터를 예측하는데 활용될 때, 포함 픽처와 참조 픽처의 거리는 픽처 순서 카운트 (POC) 값들에 기초하여 계산된다.
예측될 모션 벡터에 대해, 그 연관된 포함 픽처 및 참조 픽처 양자는 상이할 수 있다. 따라서, 새로운 거리 (POC 기반) 가 계산되고, 이들 두 POC 거리들에 기초하여 모션 벡터가 스케일링된다. 공간적 이웃 후보에 대해, 2 개의 모션 벡터들에 대한 포함 픽처들은 동일한 한편, 참조 픽처들은 상이하다. HEVC 에서, 모션 벡터 스케일링은 공간적 및 시간적 이웃 후보들에 대한 TMVP 및 AMVP 양자 모두에 적용한다.
인공적 모션 벡터 후보 생성: 모션 벡터 후보 리스트가 완료되지 않으면, 인공적 모션 벡터 후보들은 리스트가 모든 후보들을 가질 때까지 생성되고 리스트의 말단에 삽입된다.
병합 모드에 있어서, 2 개의 타입들의 인공적 MV 후보들: 즉, 오직 B-슬라이스들에 대해서만 도출된 조합된 후보; 및 제 1 타입이 충분한 인공적 후보들을 제공하지 않으면 오직 AMVP 에 대해서만 사용되는 제로 후보들이 존재한다.
이미 후보 리스트에 있고 필요한 모션 정보를 갖는 후보들의 각각의 쌍에 대해, 양-방향 조합된 모션 벡터 후보들은 리스트 0 에서의 픽처를 지칭하는 제 1 후보의 모션 벡터 및 리스트 1 에서의 픽처를 지칭하는 제 2 후보의 모션 벡터의 조합에 의해 도출된다.
후보 삽입을 위한 프루닝 프로세스: 상이한 블록들로부터의 후보들은 동일하도록 발생할 수도 있으며, 이는 병합/AMVP 후보 리스트의 효율을 감소시킨다. 프루닝 프로세스는 이 문제를 해결하기 위해 적용될 수도 있다. 프루닝 프로세스는 동일한 후보를 소정 범위로 삽입하는 것을 회피하기 위해 현재 후보 리스트에서 하나의 후보를 다른 후보들에 대해 비교한다. 복잡성을 감소시키기 위해, 각각의 잠재적 후보를 모든 다른 기존의 후보들과 비교하는 대신 단지 제한된 수의 프루닝 프로세스들이 적용된다.
HEVC 에서 병합/레벨의 병렬 프로세싱: HEVC 에서, LCU 는 병렬 모션 추정 영역 (MER) 들로 분할될 수도 있고 현재 PU 와 상이한 MER들에 속하는 그러한 이웃하는 PU들만이 병합/스킵 MVP 리스트 구성 프로세스에 포함되도록 할 수도 있다. MER 의 사이즈는 log2_parallel_merge_level_minus2 로서 설정된 픽처 파라미터 세트에서 시그널링된다. MER 사이즈가 NxN 보다 클 때 (여기서, 2Nx2N 이 가장 작은 CU 사이즈임), MER 은 공간적 이웃 블록이 현재 PU 와 동일한 MER 내부에 있는 경우, 이것은 이용불가능한 것으로 간주되는 방식으로 시행된다.
크로마 코딩을 위해 사용된 모션 벡터는 루마를 위해 사용된 모션 벡터로부터 스케일링될 수도 있다. 모션 벡터는 현재 PU/CU 의 루마 성분에 대해 도출된다. 그것이 크로마 모션 보상을 위해 사용되기 전에, 모션 벡터는 크로마 샘플링 포맷에 기초하여 스케일링된다.
블록의 인트라-예측 또는 인터-예측에 부가하여, 또 다른 코딩 모드는 인트라-블록 카피 (IBC) 예측 모드를 포함하고 HEVC 의 스크린 컨텐츠 코딩 (SCC) 확장에 포함된다. IBC 예측 모드에서, 현재 CU/PU 는 도 7 에 나타낸 바와 같이, 현재 CU/PU 의 블록 벡터에 의해 참조된 현재 픽처/슬라이스의 이미 디코딩된 블록으로부터 예측된다. 예측 신호는 재구성되지만 디블록킹 및 샘플 적응 오프셋 (SAO) 을 포함한, 인-루프 필터링은 없음을 유의한다.
인터-예측에서, 현재 CU/PU 는 이미 디코딩된 블록으로부터, 그러나 상이한 픽처에서 예측되지만, 인트라-블록 카피에서, 이미 디코딩된 블록과 현재 블록은 동일한 픽처에 있다. 인트라-예측에서, 현재 CU/PU 는 현재 픽처/슬라이스에서의 샘플들로부터 예측되지만, 인트라 블록 카피에서와 같은 블록 벡터에 의해 언급되지는 않는다. 일부 예들에서, 인트라 블록 카피는 인터-예측의 형태로서 고려될 수도 있으며, 여기서 현재 픽처는 참조 픽처 리스트에 포함된다.
인트라 블록 카피 (BC) 에서의 블록 보상을 위해, 인트라 BC 로 코딩되는 루마 성분 또는 크로마 성분들에 대해, 블록 보상은 정수 블록 보상으로 행해지므로, 보간이 필요하지 않다. 또한, 블록 벡터는 정수 레벨로 예측 및 시그널링된다. 현재 스크린 컨텐츠 코딩 (SCC) 에서, 블록 벡터 예측자는 각 CTB 의 시작에서 (-w, 0) 으로 설정되며, 여기서 w 는 CU 의 폭이다. 이러한 블록 벡터 예측자는 인트라 BC 모드로 코딩되는 경우 최신 코딩된 CU/PU 중 하나이도록 업데이트된다. CU/PU 가 인트라 BC 로 코딩되지 않는 경우, 블록 벡터 예측자는 변경되지 않고 유지된다 (예를 들어, 계속 그대로 있다). 블록 벡터 예측 후에, 블록 벡터 차이는 HEVC 인 MV 차이 (MVD) 코딩 방법을 사용하여 인코딩된다. 현재 인트라 BC 는 CU 및 PU 레벨 양자 모두에서 인에이블된다. PU 레벨 인트라 BC 를 위해, 2NxN 및 Nx2N PU 파티션이 모든 CU 사이즈들에 대해 지원된다. 또한, CU 가 가장 작은 CU 일 때, NxN PU 파티션이 지원된다.
다음은 인트라-BC 가 인터-예측과 유사하게 처리되는 방식들을 설명한다. 미국 특허 공보 제 2015/0271487 호에서, 현재 픽처는 참조 픽처로서 사용되고 참조 리스트에 부가된다. 그 후, 인트라 BC는 인터 모드처럼 취급된다. Li B 등의, "Non-SCCE1: Unification of intra BC and inter modes", 18.1JCT-VC MEETING; 30-6-2014 - 9-7-2014; SAPPORO; (JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, no. JCTVC-R0100-v2, 29 June 2014 (2014-06-29), XP030116357 (이하, "JCTV-R0100") 에서, 인트라 BC 와 인터의 통합이 기재되어 있다. 현재 픽처는 참조 리스트에 부가된다. 디코딩 이전에는 장기로서 마킹되고, 현재 픽처의 디코딩 후에는 단기로 마킹된다. 인트라 BC 가 인에이블될 때, I 슬라이스에 대해 P 슬라이스의 신택스 파싱 프로세스 및 디코딩 프로세스가 이어진다.
미국 특허 공보 제 2016/0057420 호에서, 시간적 모션 벡터 예측 (TMVP) 도출, 제약된 인트라 예측과의 상호작용, 참조 리스트 구성 등에 관한 문제들을 해결하기 위해 일부 해결책들이 제안되어 있다. 미국 특허 공보 제 2016/0100189 호에서, 인트라 BC 가 인터 모드처럼 처리될 때, 추가적인 조건 체킹을 회피하고 인트라 BC MV 정밀도, 제약된 인트라 예측, TMVP 사이의 상호작용 등에 대해 존재하는 문제들을 해결하기 위해 일부 해결책들이 제안되어 있다.
Xiaozhong Xu, Shan Liu, Tzu-Der Chuang, Yu-Wen Huang, Shaw-Min Lei, Krishnakanth Rapaka, Chao Pang, Vadim Seregin, Ye-Kui Wang, 및 Marta Karczewicz 에 의한 "Intra Block Copy in HEVC Screen Content Extensions," IEEE Journal on Emerging and Selected Topics in Circuits and Systems (volume 6, issue 4)(2016 년 12 월) 에서 정보를 알 수 있는 최종 HEVC SCC 에 있어서, IBC 모드가 픽처 레벨에서 인에이블될 때, 현재 재구성된 픽처가 또한 현재 슬라이스를 디코딩하기 위한 참조 픽처이다. 시간적 모션 벡터 예측을 위한 가능한 모션 벡터 스케일링을 회피하기 위해, 이러한 참조 픽처는 현재 픽처의 디코딩 동안 "장기 참조를 위해 사용됨" 으로서 마킹된다. 이 참조 픽처는 리스트 0 의 참조 픽처 리스트 (RPL) 에, 그리고 또한 B 슬라이스에 대한 리스트 1 에 놓인다. 이것은 장기 참조 픽처들 후 (적용가능할 때), 초기 RPL 의 마지막 포지션에 배치된다. 따라서, 현재 재구성된 픽처가 초기 RPL 에 부가될 때, 변수 NumPicTotalCurr 는 1 만큼 증가된다.
블록의 인트라-예측, 인터-예측, 또는 IBC 예측과 같은 예측에 후속하여, 비디오 인코더 (200) 는 블록에 대한 잔차 데이터를 계산할 수도 있다. 잔차 블록과 같은 잔차 데이터는 대응하는 예측 모드를 사용하여 형성된, 블록과 블록에 대한 예측 블록 사이의 샘플 별 차이들을 나타낸다. 비디오 인코더 (200) 는 샘플 도메인 대신 변환 도메인에서 변환된 데이터를 생성하기 위해, 하나 이상의 변환들을 잔차 블록에 적용할 수도 있다. 예를 들어, 비디오 인코더 (200) 는 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환을 잔차 비디오 데이터에 적용할 수도 있다. 부가적으로, 비디오 인코더 (200) 는 MDNSST (mode-dependent non-separable secondary transform), 신호 의존적 변환, Karhunen-Loeve 변환 (KLT) 등과 같은, 제 1 변환에 후속하는 2 차 ㅂㄴ환을 적용할 수도 있다. 비디오 인코더 (200) 는 하나 이상의 변환들의 적용에 후속하여 변환 계수들을 생성한다.
위에 언급된 바와 같이, 변환 계수들을 생성하기 위한 임의의 변환들에 후속하여, 비디오 인코더 (200) 는 변환 계수들의 양자화를 수행할 수도 있다. 양자화는 일반적으로 변환 계수들이 가능하게는 그 계수들을 나타내는데 사용된 데이터의 양을 감소시키도록 양자화되어, 추가 압축을 제공하는 프로세스를 지칭한다. 양자화 프로세스를 수행함으로써, 비디오 인코더 (200) 는 계수들의 일부 또는 모두와 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, 비디오 인코더 (200) 는 양자화 동안 n-비트 값을 m-비트 값으로 라운딩 다운할 수도 있으며, 여기서 n 은 m 보다 크다. 일부 예들에서, 양자화를 수행하기 위해, 비디오 인코더 (200) 는 양자화될 값의 비트단위 우측-시프트를 수행할 수도 있다.
양자화에 후속하여, 비디오 인코더 (200) 는 변환 계수들을 스캔하여, 양자화된 변환 계수들을 포함하는 2 차원 행렬로부터 1 차원 벡터를 생성할 수도 있다. 스캔은 더 높은 에너지 (및 따라서 더 낮은 주파수) 계수들을 벡터의 전방에 배치하고 그리고 더 낮은 에너지 (및 따라서 더 높은 주파수) 변환 계수들을 벡터의 후방에 배치하도록 설계될 수도 있다. 일부 예들에 있어서, 비디오 인코더 (200) 는 양자화된 변환 계수들을 스캐닝하기 위해 미리정의된 스캔 순서를 활용하여 직렬화된 벡터를 생성하고, 그 후 벡터의 양자화된 변환 계수들을 엔트로피 인코딩할 수도 있다. 다른 예들에서, 비디오 인코더 (200) 는 적응적 스캔을 수행할 수도 있다. 1 차원 벡터를 형성하기 위해 양자화된 변환 계수들을 스캐닝한 후, 비디오 인코더 (200) 는 예를 들어, 컨텍스트 적응적 이진 산술 코딩 (CABAC) 에 따라 1 차원 벡터를 엔트로피 인코딩할 수도 있다. 비디오 인코더 (200) 는 또한, 비디오 데이터를 디코딩하는데 있어서 비디오 디코더 (300) 에 의한 사용을 위해 인코딩된 비디오 데이터와 연관된 메타데이터를 기술하는 신택스 엘리먼트들에 대한 값들을 엔트로피 인코딩할 수도 있다.
CABAC 을 수행하기 위해, 비디오 인코더 (200) 는 송신될 심볼에 컨텍스트 모델 내의 컨텍스트를 할당할 수도 있다. 컨텍스트는 예를 들어, 심볼의 이웃하는 값들이 제로 값인지 여부와 관련될 수도 있다. 확률 결정은 심볼에 할당된 컨텍스트에 기초할 수도 있다.
비디오 인코더 (200) 는 신택스 데이터, 예컨대 블록-기반 신택스 데이터, 픽처-기반 신택스 데이터, 및 시퀀스-기반 신택스 데이터를, 비디오 디코더 (300) 에, 예를 들어, 픽처 헤더, 블록 헤더, 슬라이스 헤더, 또는 다른 신택스 데이터, 예컨대 시퀀스 파라미터 세트 (SPS), 픽처 파라미터 세트 (PPS), 또는 비디오 파라미터 세트 (VPS) 에서 추가로 생성할 수도 있다. 비디오 디코더 (300) 는 마찬가지로 대응하는 비디오 데이터를 디코딩하는 방법을 결정하기 위해 그러한 신택스 데이터를 디코딩할 수도 있다.
이러한 방식으로, 비디오 인코더 (200) 는 인코딩된 비디오 데이터, 예를 들어 픽처의 블록들 (예를 들어, Cu들) 로의 파티셔닝을 기술하는 신택스 엘리먼트들 및 블록들에 대한 예측 및/또는 잔차 정보를 포함하는 비트스트림을 생성할 수도 있다. 궁극적으로, 비디오 디코더 (300) 는 비트스트림을 수신하고 인코딩된 비디오 데이터를 디코딩할 수도 있다.
일반적으로, 비디오 디코더 (300) 는 비트스트림의 인코딩된 비디오 데이터를 디코딩하기 위해 비디오 인코더 (200) 에 의해 수행되는 것과 상반되는 프로세스를 수행한다. 예를 들어, 비디오 디코더 (300) 는 비디오 인코더 (200) 의 CABAC 인코딩 프로세스와 실질적으로 유사하지만, 상반되는 방식으로 CABAC 을 이용하여 비트스트림의 신택스 엘리먼트들에 대한 값들을 디코딩할 수도 있다. 신택스 엘리먼트들은 픽처의 CTU들로의 파티셔닝 정보, 및 QTBT 구조와 같은 대응하는 파티션 구조에 따라 각각의 CTU 의 파티셔닝을 정의하여, CTU 의 CU들을 정의할 수도 있다. 신택스 엘리먼트들은 추가로 비디오 데이터의 블록들 (예를 들어, CU들) 에 대한 예측 및 잔차 정보를 정의할 수도 있다.
잔차 정보는 예를 들어, 양자화된 변환 계수들로 표현될 수도 있다. 비디오 디코더 (300) 는 블록에 대한 잔차 블록을 재생하기 위해 블록의 양자화된 변환 계수들을 역 양자화 및 역 변환할 수도 있다. 비디오 디코더 (300) 는 시그널링된 예측 모드 (인트라-예측 또는 인터-예측) 및 관련된 예측 정보 (예를 들어, 인터-예측을 위한 모션 정보) 를 사용하여 블록에 대한 예측 블록을 형성한다. 비디오 디코더 (300) 는 그 후 예측 블록과 잔차 블록을 (샘플 단위로) 조합하여 원래의 블록을 재생할 수도 있다. 비디오 디코더 (300) 는 블록의 경계들을 따라 시각적 아티팩트들을 감소시키기 위해 디블로킹 프로세스를 수행하는 것과 같은, 부가 프로세싱을 수행할 수도 있다.
본 개시는 일반적으로 신택스 엘리먼트들과 같은, 소정의 정보의 "시그널링" 을 참조할 수도 있다. 용어 "시그널링" 은 일반적으로, 인코딩된 비디오 데이터를 디코딩하는데 사용된 신택스 엘리먼트들 및/또는 다른 데이터 값들의 통신을 지칭할 수도 있다. 즉, 비디오 인코더 (200) 는 비트스트림에서 신택스 엘리먼트들에 대한 값들을 시그널링할 수도 있다. 일반적으로, 시그널링은 비트스트림에서 값을 생성하는 것을 지칭한다. 위에 언급된 바와 같이, 소스 디바이스 (102) 는 목적지 디바이스 (116) 에 의한 나중 취출을 위해 저장 디바이스 (112) 에 신택스 엘리먼트를 저장할 때 발생할 수 있는 것과 같은, 실질적으로 실시간으로 또는 비실시간으로, 비트스트림을 목적지 디바이스 (116) 로 전송할 수도 있다.
상술한 바와 같이, 일부 예들에서, 루마 성분들 및 크로마 성분들은 상이한 방식들로 파티셔닝될 수도 있다. 예를 들어, 비디오 코더 (예를 들어, 비디오 인코더 (200) 또는 비디오 디코더 (300)) 는 제 1 파티션 트리에 따라 제 1 컬러 성분 (예를 들어, 루마 성분) 의 샘플들을, 그리고 제 2 파티션 트리에 따라 제 2 컬러 성분의 파티션 샘플들 ( 예를 들어, 크로마 성분) 을 파티셔닝하도록 구성될 수도 있다. 파니셔닝의 결과는 다중 루마 블록들 및 대응하는 크로마 블록들일 수도 있다. 크로마 블록과 루마 블록이 동일한 CU 에 속하는 경우, 크로마 블록과 루마 블록은 대응하는 블록들이다. 예를 들어, 상술한 바와 같이, 비디오 데이터는 Y, Cb, Cr 포맷으로 표현된다. CU 는 픽처의 블록이고, CU 는 블록에 대한 픽처에서 컬러를 함께 표현하는 루마 블록 및 그의 대응하는 크로마 블록들을 포함한다.
일부 예들에서, 크로마 성분들은 루마 성분들에 대해 서브샘플링된다. 예를 들어, 4:2:2 서브샘플링에서, 루마 성분의 8x8 샘플들은 크로마 성분들 각각의 4x4 샘플들에 대응한다. 서브샘플링으로 인해, 각각의 크로마 블록은 복수의 루마 블록들에 대응할 수도 있다. 예를 들어, 루마 성분의 8x8 샘플들이 4 개의 4x4 루마 블록들로 분할되고 크로마 성분의 4x4 샘플들이 하나의 4x4 크로마 블록을 형성한다고 가정한다. 이 예에서, 4 개의 루마 블록들은 하나의 크로마 블록에 대응한다.
IBC 예측 모드에 대해, 비디오 인코더 (200) 가 크로마 블록에 대한 블록 벡터를 표시하는 정보를 시그널링하기 보다, 비디오 디코더 (300) 에 시그널링할 필요가 있을 수도 있는 정보의 양을 감소시키기 위해, 크로마 블록이 서브샘플링을 어드레싱하기 위한 일부 스케일링으로, 그의 대응하는 루마 블록의 블록 벡터를 상속하는 것이 가능할 수도 있다. 루마 성분들 및 크로마 성분들이 동일한 방식으로 파티셔닝되는 예들에서, 크로마 블록들 및 루마 블록들이 유사하게 사이징 및 형상화되기 때문에 (예를 들어, 양자 모두가 정사각형의 4x4 사이징된 블록들임) 블록 벡터들을 상속하는 것과 연관된 일부 기술적인 문제들은 최소화될 수도 있다.
그러나, 루마 성분들 및 크로마 성분들이 상이한 방식들로 파티셔닝되는 예들에서, 비디오 코딩에 대한 기술적인 문제들이 있을 수도 있다. 예를 들어, 루마 및 크로마 성분들에 대한 상이한 파티셔닝 스킴들로 인해, 크로마 블록은 복수의 루마 블록들과 대응할 수도 있고, 여기서 루마 블록들 중 2 이상은 크로마 블록과는 상이하게 사이징 및 형상화된다. 이러한 예들에서, 크로마 블록이 어느 루마 블록 또는 루마 블록들로부터 블록 벡터 정보를 상속하는지는 알려져 있지 않을 수도 있다.
하나 이상의 예들에서, 비디오 코더는 제 2 컬러 성분의 블록 (예를 들어, 크로마 블록) 에 대응하는 제 1 컬러 성분 (예를 들어, 루마 성분) 의 복수의 블록들을 결정하도록 구성될 수도 있다. 비디오 코더는 제 2 컬러 성분의 블록의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 (예를 들어, 제 1 컬러 성분이 파티셔닝되는 방식에 기초하여) 제 2 컬러 성분의 블록을 파티셔닝하도록 구성될 수도 있다. 이 예에서, 크로마 블록은 제 1 파티션 트리에 기초하여 파티셔닝되기 때문에, 각각의 크로마 서브-블록에 대한 하나의 대응하는 루마 블록이 있을 수도 있다. 예를 들어, 복수의 루마 블록들은 함께 크로마 블록과 대응한다. 크로마 블록을 서브-블록들로 파티셔닝한 후, 서브-블록들의 각각은 복수의 루마 블록들 중 하나에 대응한다.
비디오 코더는 IBC 예측 모드에서 예측되는 제 1 컬러 성분의 복수의 블록들의 하나 이상의 블록 벡터들에 기초하여 제 2 컬러 성분의 블록의 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정할 수도 있다. 예를 들어, 복수의 루마 블록들 중, 이들 루마 블록들의 서브세트는 IBC 예측 모드에서 예측될 수도 있다. 서브세트에서의 각각의 루마 블록은 크로마 블록의 서브-블록에 대응하고, 크로마 블록의 서브-블록들은 서브-블록이 대응하는 서브세트로부터 루마 블록의 블록 벡터를 상속할 수도 있다.
이러한 방식으로, IBC 모드에서 예측되고 상이한 파티션 트리들이 루마 및 크로마 성분들을 파티셔닝하는데 사용되는 크로마 블록에 대해, 비디오 인코더 (200) 는 크로마 블록에 대한 블록 벡터를 표시하는 정보를 비디오 디코더 (300) 에 시그널링할 필요가 없을 수도 있다 . 오히려, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 루마 블록들과 크로마 블록의 서브-블록들 사이에서 일 대 일 대응이 있도록 루마 성분을 위해 사용된 파티셔닝과 유사한 방식으로 크로마 블록을 서브-블록들로 파티셔닝할 수도 있다. 일부 예들에서, 모든 루마 블록들이 IBC 예측 모드에서 예측될 수도 있는 것은 아니며, 이러한 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 IBC 예측 모드에서 예측되는 루마 블록들의 블록 벡터들을, 루마 블록들로부터의 블록 벡터들을 상속하기 위한 크로마 블록의 서브-블록들에 대한 방식으로서 크로마 블록의 그들 개개의 대응하는 서브-블록들에 할당할 수도 있다.
복수의 루마 블록들의 블록 벡터들에 기초하여 크로마 블록의 서브-블록들에 블록 벡터들을 할당하는 것에 부가하여, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 서브샘플링 포맷에 기초하여 블록 벡터들을 스케일링할 필요가 있을 수도 있다. 예를 들어, 4:2:2 서브샘플링 포맷이 사용되면, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 블록 벡터들의 x- 및 y- 성분 양자 모두를 2 로 나눌 수도 있다.
상기 예들에서, 크로마 서브-블록들은 루마 블록들로부터의 블록 벡터들을 상속하는 것으로 설명된다. 일부 예들에서, 그 반대가 발생할 수도 있다. 예를 들어, 비디오 인코더 (200) 또는 비디오 디코더 (300) 는 크로마 블록에 대한 블록 벡터를 결정한 다음, 크로마 성분의 샘플들이 파티셔닝되었던 방식에 기초하여 루마 성분의 샘플들을 파티셔닝할 수도 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 그 후 블록 벡터들을 파티션으로부터 생성된 루마 블록들에 할당할 수도 있다. 설명을 용이하게 하기 위해, 예시의 기법들은 개개의 대응하는 루마 블록들로부터 블록 벡터들을 (잠재적 스케일링으로) 상속하는 크로마 서브-블록들과 관련하여 설명된다. 일부 예들에서, 대응하는 루마 블록들은 크로마 블록의 서브-블록들과 동일한 방식으로 형상화될 수도 있다 (예를 들어, 수평 직사각형, 수직 직사각형 또는 정사각형).
서브-블록들이 블록 벡터들을 상속하도록 하기 위해 크로마 블록의 서브-블록들에 대한 블록 벡터들을 결정하기 위한 기법들을 설명하는 것에 부가하여, 본 개시는 VVC 에서 IBC 예측 모드로 존재할 수도 있는 다른 쟁점들과 관련된 기법들을 설명한다. 이들 기법들은 블록 벡터들을 상속하는 크로마 블록의 서브-블록들에 대한 기법들과 조합으로 사용될 수도 있거나, 블록 벡터들을 상속하는 크로마 블록의 서브-블록에 대한 기법들과 별도일 수도 있다.
도 2a 및 도 2b 는 예시의 쿼드트리 이진 트리 (QTBT) 구조 (130), 및 대응하는 코딩 트리 유닛 (CTU) (132) 을 도시하는 개념적 다이어그램들이다. 실선들은 쿼드트리 스플릿팅을 나타내고, 점선들은 이진 트리 스플릿팅을 나타낸다. 이진 트리의 각각의 스플릿팅된 (즉, 비-리프) 노드에서, 어느 스플릿팅 타입 (즉, 수평 또는 수직) 이 사용되는지를 나타내기 위해 하나의 플래그가 시그널링되며, 여기서 0 은 수평 스플릿팅을 표시하고 1 은 수직 스플릿팅을 표시한다. 쿼드트리 스플릿팅에 대해, 스플릿팅 타입을 표시할 필요는 없는데, 이는 쿼드트리 노드들이 동일한 사이즈를 가진 4 개의 서브-블록들로 수평으로 및 수직으로 블록을 스플릿팅하기 때문이다. 이에 따라, QTBT 구조 (130) 의 영역 트리 레벨 (즉, 실선들) 에 대한 신택스 엘리먼트들 (이를 테면 스플릿팅 정보) 및 QTBT 구조 (130) 의 예측 트리 레벨 (즉, 점선들) 에 대한 신택스 엘리먼트들 (예컨대, 스플릿팅 정보) 을, 비디오 인코더 (200) 가 인코딩할 수도 있고, 비디오 디코더 (300) 가 디코딩할 수도 있다. QTBT 구조 (130) 의 종단 리프 노드들에 의해 표현된 CU들에 대해, 예측 및 변환 데이터와 같은 비디오 데이터를, 비디오 인코더 (200) 가 인코딩할 수도 있고, 비디오 디코더 (300) 가 디코딩할 수도 있다.
일반적으로, 도 2b 의 CTU (132) 는 일반적으로, 도 2b 의 CTU (132) 는 제 1 및 제 2 레벨들에서 QTBT 구조 (130) 의 노드들에 대응하는 블록들의 사이즈들을 정의하는 파라미터들과 연관될 수도 있다. 이들 파라미터들은 CTU 사이즈 (샘플들에서 CTU (132) 의 사이즈를 나타냄), 최소 쿼드트리 사이즈 (최소 허용된 쿼드트리 리프 노드 사이즈를 나타내는 MinQTSize), 최대 이진 트리 사이즈 (최대 허용된 이진 트리 루트 노드 사이즈를 나타내는 MaxBTSize), 최대 이진 트리 깊이 (최대 허용된 이진 트리 깊이를 나타내는 MaxBTDepth), 및 최소 이진 트리 사이즈 (최소 허용된 이진 트리 리프 노드 사이즈를 나타내는 MinBTSize) 를 포함할 수도 있다.
CTU 에 대응하는 QTBT 구조의 루트 노드는 QTBT 구조의 제 1 레벨에서 4 개의 자식 노드들을 가질 수도 있고, 이들의 각각은 쿼드트리 파티셔닝에 따라 파티셔닝될 수도 있다. 즉, 제 1 레벨의 노드들은 리프 노드들 (자식 노드들이 없음) 이거나 또는 4 개의 자식 노드들을 갖는다. QTBT 구조 (130) 의 예는 그러한 노드들을 브랜치들에 대한 실선들을 갖는 부모 노드 및 자식 노드들을 포함하는 것으로서 나타낸다. 제 1 레벨의 노드들이 최대 허용된 이진 트리 루트 노드 사이즈 (MaxBTSize) 보다 더 크지 않으면, 그들은 개개의 이진 트리들에 의해 추가로 파티셔닝될 수 있다. 하나의 노드의 이진 트리 스플릿팅은 스플릿트로부터 발생하는 노드들이 최소 허용된 이진 트리 리프 노드 사이즈 (MinBTSize) 또는 최대 허용된 이진 트리 깊이 (MaxBTDepth) 에 도달할 때까지 반복될 수 있다. QTBT 구조 (130) 의 예는 그러한 노드들을 브랜치들에 대한 파선들을 갖는 것으로서 나타낸다. 이진 트리 리프 노드는 임의의 추가 파티셔닝 없이, 예측 (예를 들어, 인트라-픽처 또는 인터-픽처 예측) 및 변환을 위해 사용되는 코딩 유닛 (CU) 으로 지칭된다. 위에 논의된 바와 같이, CU들은 또한, "비디오 블록들" 또는 "블록들" 로 지칭될 수도 있다.
QTBT 파티셔닝 구조의 하나의 예에서, CTU 사이즈는 128x128 (루마 샘플들 및 2 개의 대응하는 64x64 크로마 샘플들) 로서 설정되고, MinQTSize 는 16x16 으로서 설정되고, MaxBTSize 는 64x64 로서 설정되고, (폭 및 높이 양자 모두에 대한) MinBTSize 는 4 로서 설정되고, 그리고 MaxBTDepth 는 4 로서 설정된다. 쿼드트리 파티셔닝은 쿼드트리 리프 노드들을 생성하기 위해 먼저 CTU 에 적용된다. 쿼드트리 리프 노드들은 16×16 (즉, MinQTSize) 으로부터 128×128 (즉, CTU 사이즈) 까지의 사이즈를 가질 수도 있다. 리프 쿼드트리 노드가 128×128 인 경우, 사이즈가 MaxBTSize (즉, 이 예에서는 64×64) 를 초과하기 때문에 그것은 이진 트리에 의해 추가로 스플릿팅되지 않을 것이다. 그렇지 않으면, 리프 쿼드트리 노드는 이진 트리에 의해 추가로 파티셔닝될 것이다. 따라서, 쿼드트리 리프 노드는 또한 이진 트리에 대한 루트 노드이고 이진 트리 깊이를 0 으로서 갖는다. 이진 트리 깊이가 MaxBTDepth (이 예에서는 4) 에 도달할 때, 추가의 스플릿팅이 허용되지 않는다. 이진 트리 노드가 MinBTSize (이 예에서는 4) 와 동일한 폭을 가질 때, 그것은 추가의 수평 스플릿팅이 허용되지 않음을 암시한다. 유사하게, 높이가 MinBTSize 와 동일한 이진 트리 노드는 그 이진 트리 노드에 대해 추가의 수직 스플릿팅이 허용되지 않음을 암시한다. 위에 언급된 바와 같이, 이진 트리의 리프 노드들은 CU들로 지칭되고, 추가 파티셔닝 없이 예측 및 변환에 따라 추가로 프로세싱된다.
VCEG 제안의 COM16-C966: J. An, Y.-W. Chen, K. Zhang, H. Huang, Y.-W. Huang, 및 S. Lei., "Block partitioning structure for next generation video coding", International Telecommunication Union, COM16-C966 (2015 년 9 월) 에는, 쿼드-트리-이진-트리 (QTBT) 가 HEVC 를 넘어 향후 비디오 코딩 표준에 대해 설명되었다. 시뮬레이션들은 제안된 QTBT 구조가 사용된 HEVC 에서의 쿼드-트리 구조보다 더 효율적이라는 것을 나타내었다.
상술한 바와 같이, QTBT 구조에서, CTB 는 먼저 쿼드-트리에 의해 파티셔닝되며, 여기서 일 노드의 쿼드-트리 스플릿팅은 노드가 최소 허용된 쿼드-트리 리프 노드 사이즈 (MinQTSize) 에 도달할 때까지 반복될 수 있다. 쿼드트리 리프 노드 사이즈가 최대 허용된 이진 트리 루트 노드 사이즈 (MaxBTSize) 보다 더 크지 않으면, 이것은 이진 트리에 의해 추가로 파티셔닝될 수 있다. 일 노드의 이진 트리 스플릿팅은, 노드가 최소 허용된 이진 트리 리프 노드 사이즈 (MinBTSize) 또는 최대 허용된 이진 트리 깊이 (MaxBTDepth) 에 도달할 때까지 반복될 수 있다. 이진 트리 리프 노드가 즉 CU 이며, 이는 임의의 추가 파티셔닝 없이 예측 (예를 들어, 인트라-예측 또는 인터-예측) 및 변환을 위해 사용될 것이다.
이진 트리 스플릿팅에는, 대칭 수평 스플릿팅 및 대칭 수직 스플릿팅의 2 개의 스플릿팅 타입들이 있다. QTBT 파티셔닝 구조의 하나의 예에서, CTU 사이즈는 128x128 (루마 샘플들 및 2 개의 대응하는 64x64 크로마 샘플들) 로서 설정되고, MinQTSize 는 16x16 으로서 설정되고, MaxBTSize 는 64x64 로서 설정되고, (폭 및 높이 양자 모두에 대한) MinBTSize 는 4 로서 설정되고, 그리고 MaxBTDepth 는 4 로서 설정된다. 쿼드트리 파티셔닝은 쿼드-트리 리프 노드들을 생성하기 위해 먼저 CTU 에 적용된다.
쿼드-트리 리프 노드들은 16x16 (즉, MinQTSize) 부터 128x128 (즉, CTU 사이즈) 까지의 사이즈를 가질 수도 있다. 리프 쿼드-트리 노드가 128×128 인 경우, 사이즈는 MaxBTSize (즉, 64×64) 를 초과하기 때문에 그것은 이진 트리에 의해 추가로 스플릿팅되지 않을 것이다. 그렇지 않으면, 리프 쿼드트리 노드는 이진 트리에 의해 추가로 파티셔닝될 것이다. 따라서, 쿼드트리 리프 노드는 또한 이진 트리의 루트 노드이며, 이진 트리 깊이를 0 으로 갖는다. 이진 트리 깊이가 MaxBTDepth (즉, 4) 에 도달할 때, 그것은 추가의 스플릿팅이 없음을 암시한다. 이진 트리 노드가 MinBTSize (즉, 4) 와 동일한 폭을 가질 때, 그것은 추가의 수평 스플릿팅이 없음을 암시한다. 유사하게, 이진 트리 노드가 MinBTSize 와 동일한 높이를 가질 때, 그것은 추가의 수직 스플릿팅이 없음을 암시한다. 이진 트리의 리프 노드들은 임의의 추가 파티셔닝 없이 예측 및 변환에 의해 추가로 프로세싱되는 즉 CU들이다.
도 2b 는 QTBT 를 사용하는 것에 의한 블록 파티셔닝의 예를 도시하고, 도 2a 는 대응하는 트리 구조를 도시한다. 실선들은 쿼드-트리 스플릿팅을 표시하고 점선들은 이진 트리 스플릿팅을 표시한다. 이진 트리의 각각의 스플릿팅 (즉, 비-리프) 노드에서, 어느 스플릿팅 타입 (즉, 수평 또는 수직) 이 사용되는지를 표시하기 위해 하나의 플래그가 시그널링되고, 여기서 0 은 수평 스플릿팅을 표시하고 1 은 수직 스플릿팅을 표시한다. 쿼드-트리 스플릿팅에 대해, 스플릿팅 타입을 표시할 필요가 없는데, 이는 블록을 동일한 사이즈를 갖는 4 개의 서브-블록들로 수평 및 수직으로 항상 스플릿팅하기 때문이다.
또한, QTBT 블록 구조는 루마 및 크로마가 별도의 QTBT 구조를 갖는 피처를 지원한다. 현재, P 및 B 슬라이스에 대해, 하나의 CTU 에서의 루마 및 크로마 CTU들이 동일한 QTBT 구조를 공유한다. I 슬라이스에 대해, 루마 CTU 는 QTBT 구조 (예를 들어, 제 1 파티션 트리) 에 의해 CU들로 파티셔닝되고, 크로마 CTU 는 또 다른 QTBT 구조 (예를 들어, 제 2, 상이한 파티션 트리) 에 의해 크로마 CU들로 파티셔닝된다. 이는 I 슬라이스에서의 CU 가 루마 성분의 코딩 블록 또는 2 개의 크로마 성분의 코딩 블록들을 포함하고, P 및 B 슬라이스에서의 CU 는 3 개의 모든 컬러 성분들의 코딩 블록을 포함한다는 것을 의미한다.
다음은 도 8 에 도시된 바와 같이, 서브-블록 모션 벡터 후보들을 설명한다. QTBT 를 갖는 JEM 에서, 각각의 CU 는 각각의 예측 방향에 대해 최대 하나의 모션 파라미터들의 세트를 가질 수 있다. 2 개의 서브-CU 레벨 모션 벡터 예측 방법들은 큰 CU 를 서브-CU들로 스플릿팅하고 큰 CU 의 모든 서브-CU들에 대한 모션 정보를 도출함으로써 비디오 인코더 (200) 에서 고려된다. 대안의 시간적 모션 벡터 예측 (ATMVP) 방법은 각각의 CU 가 병치된 참조 픽처에서 현재 CU 보다 작은 다중 블록들로부터 다중의 모션 정보의 세트들을 페칭하도록 한다. 공간적-시간적 모션 벡터 예측 (STMVP) 방법에서, 서브-CU들의 모션 벡터들은 시간적 모션 벡터 예측자 및 공간적 이웃 모션 벡터를 사용함으로써 재귀적으로 도출된다. 서브-CU 모션 예측을 위한 보다 정확한 모션 필드를 보존하기 위해, 참조 프레임들에 대한 모션 압축은 현재 디스에이블된다.
예를 들어, 도 8 에서, 블록 (400) 은 ATMVP 가 수행될 블록을 지칭하며, NxN 서브-PU들로 스플릿팅되는 것으로 도시되어 있다. 블록 (400) 은 모션 소스 픽처에서 블록 (401) 과 함께 코로케이팅된다. 블록 (401) 은 블록 (400) 의 스플릿트 블록들에 대한 대응하는 블록들로 분할된다. 블록 (401) 은 스플릿트 블록들 (402A-402D) 을 포함한다. 블록 (402D) 은 ATMVP 에서 대표적인 중심 블록일 수도 있다. 블록들 (402A-402D) 의 각각은 하나의 모션 벡터 (예를 들어, 제 1 참조 픽처 리스트에서 픽처의 블록을 가리키는 모션 벡터인 MV0, 또는 제 2 참조 픽처 리스트에서 픽처의 블록을 가리키는 모션 벡터인 MV1), 또는 2 개의 모션 벡터들 (예를 들어, MV0 및 MV1) 를 포함할 수도 있다. 도 8 에서, 모션 벡터들 (404A, 404B, 및 404C) 은 제 1 참조 픽처 리스트에서 픽처들의 블록들을 가리키는 모든 모션 벡터들이고 (예를 들어, 모두 MV0들 임), 모션 벡터들 (406A, 406B 및 406C) 은 제 2 참조 픽처 리스트에서 픽처들의 블록들을 가리키는 모든 모션 벡터들이다 (예를 들어, 모두 MV1들임).
적응적 모션 벡터 해상도에 대해, 서브-픽셀 모션 보상은 보통 정수-픽셀 모션 보상보다 훨씬 더 효율적이다. 하지만, 매우 높은 주파수 또는 스크린 컨텐츠를 갖는 텍스처와 같은 일부 컨텐츠에 대해, 서브-픽셀 모션 보상은 우수한 성능을 나타내지 않거나 심지어 최악의 성능을 나타낸다. 이러한 경우, 정수 픽셀-정밀도로 MV들을 갖는 것만이 우수하다. 미국 특허 공보 제 2015/0195562 호에서, MV 정밀도 정보 (정수-pel 또는 1/4-pel) 가 블록에 대해 시그널링되도록 제안된다. 2017 년 10 월 3 일 출원된 미국 출원 제 15/724,044 호 (미국 특허 공보 제 2018/0098089 호로 공개됨) 에는, 4-pel 또는 8-pel 과 같은 더 많은 MV 정밀도를 허용하는 것이 제안된다.
JEM 에서의 디코더-측 모션 벡터 도출 (DMVD) 에 대해, JEM 참조 소프트웨어에 있어서, 디코더 측에서 (비디오 디코더 (300) 에서) 현재 블록에 대한 모션 벡터 (MV) 를 도출 또는 정제하는 여러 인터-코딩 툴들이 있다. 이들 디코더-측 MV 도출 (DMVD) 접근법은 하기에서 더욱 더 상세히 설명된다.
패턴 매칭된 모션 벡터 도출 (PMMVD) 모드는 프레임 레이트 업 컨버전 (FRUC) 기법들에 기초한 특수 병합 모드이다. PMMVD 모드로, 블록의 모션 정보는 시그널링되지 않지만, 디코더 측에서 도출된다. 이 기술은 JEM 에 포함되었다.
PMMVD 모드에서, FRUC 플래그는 그의 병합 플래그가 참일 때 CU 에 대해 시그널링된다. FRUC 플래그가 거짓일 경우, 병합 인덱스가 시그널링되고, 정규 병합 모드가 사용된다. FRUC 플래그가 참일 경우, 블록에 대한 모션 정보를 도출하기 위해 어떤 방법 (쌍방향 매칭 또는 템플릿 매칭) 이 사용될 것인지를 표시하기 위해 추가적인 FRUC 모드 플래그가 시그널링된다.
모션 도출 프로세스 동안, 쌍방향 매칭 또는 템플릿 매칭에 기초하여 초기 모션 벡터가 먼저 전체 CU 에 대해 도출된다. 먼저, CU 의 병합 리스트, 또는 소위 PMMVD 시드들이 체크되고, 최소 매칭 비용을 야기하는 후보가 시작 포인트로서 선택된다. 그 후, 시작 포인트 주위의 쌍방향 매칭 또는 템플릿 매칭에 기초한 로컬 탐색이 수행되고, 최소 매칭 비용의 MV 결과들이 전체 CU 에 대한 MV 로서 취해진다. 후속적으로, 모션 정보는 시작 포인트들로서 도출된 CU 모션 벡터들로 서브-블록 레벨에서 추가로 정제된다.
도 9 에 나타낸 바와 같이, 쌍방향 매칭은 2 개의 상이한 참조 픽처들에서 현재 블록의 모션 궤적을 따라 2 개의 참조 블록들 사이의 최상의 매칭을 발견함으로써 현재 블록의 모션 정보를 도출하는데 사용된다. 연속 모션 궤적의 가정 하에, 2 개의 참조 블록들을 가리키는 현재 픽처 (500) 에서의 현재 블록에 대한 모션 벡터들 MV0 (506) 및 MV1 (508)(예를 들어, MV0 은 참조 블록 R0 (502) 을 가리키고 MV1 (508) 은 참조 블록 R1 (504) 을 가리킨다) 는, 현재 픽처와 2 개의 참조 픽처들 사이의 시간적 거리에 비례할 수도 있다. 특수 경우로서, 현재 픽처가 시간적으로 2 개의 참조 픽처들 사이에 있고 현재 픽처로부터 2 개의 참조 픽처들까지의 시간적 거리가 동일할 경우, 쌍방향 매칭은 미러 기반 양방향 MV 가 된다.
도 10 에 나타낸 바와 같이, 템플릿 매칭은 현재 픽처에서의 템플릿 (현재 블록의 상부 및/또는 좌측 이웃하는 블록들) 과 참조 픽처에서의 블록 (템플릿과 동일한 사이즈) 사이에서 최상의 매칭을 발견함으로써 현재 블록의 모션 정보를 도출하는데 사용된다.
인코더 측 (예를 들어, 비디오 인코더 (200)) 에서, CU 에 대해 FRUC 병합 모드를 사용할지 여부에 대한 결정은 정상 병합 후보에 대해 행해진 바와 같은 RD (레이트 왜곡) 비용 선택에 기초한다. 즉, 2 개의 매칭 모드들 (쌍방향 매칭 및 템플릿 매칭) 은 양자 모두 RD 비용 선택을 사용하는 것에 의해 CU 에 대해 체크된다. 최소 비용을 야기하는 것은 다른 CU 모드들과 추가로 비교된다. FRUC 매칭 모드가 가장 효율적인 것인 경우, CU 에 대해 FRUC 플래그가 참으로 설정되고 관련된 매칭 모드가 사용된다.
5 번째 JVET 미팅에서, JVET-E0035 는 FRUC 템플릿 매칭에 대한 추가 기법들을 설명하였다. 기존의 FRUC 템플릿 매칭 모드의 플로우차트는 도 11a 에 나타나 있다. 제 1 단계에서, 템플릿 T0 (및 그의 대응하는 모션 정보 MV0) 이 리스트0 참조 픽처들로부터 현재 블록의 현재 템플릿 (Tc) 에 매칭하도록 발견된다. 제 2 단계에서, 템플릿 T1 (및 그의 대응하는 모션 정보 MV1) 는 리스트1 참조 픽처로부터 발견되었다. 획득된 모션 정보 MV0 및 MV1 은 현재 블록의 예측자를 생성하기 위해 양방향 예측을 수행하는데 사용된다.
기존의 FRUC 템플릿 매칭 모드는 단방향 예측과 양방향 예측 사이에서 양방향 템플릿 매칭 및 적응적 선택을 도입함으로써 강화될 수도 있다. 도 11a 와 비교하여 도 11b 에서 이탤릭체 및 밑줄로 수정들이 강조된다.
양방향 템플릿 매칭은 기존의 단방향 템플릿 매칭에 기초하여 구현된다. 도 11b 에 나타낸 바와 같이, 매칭된 템플릿 (T0) 은 처음에 리스트0 참조 픽처들 (여기서 리스트0 은 단지 예로서만 취해짐에 유의한다) 로부터 템플릿 매칭의 제 1 단계에서 발견된다. 실제로, 제 1 단계에서 리스트0 이 사용되는지 또는 리스트1 이 사용되는지는 대응하는 참조 픽처에서의 초기 템플릿과 현재 템플릿 사이의 초기 왜곡 비용에 적응적이다. 초기 템플릿은 제 1 템플릿 매칭을 수행하기 전에 이용가능한 현재 블록의 초기 모션 정보로 결정될 수 있다. 최소 초기 템플릿 왜곡 비용에 대응하는 참조 픽처 리스트는 템플릿 매칭의 제 1 단계에서 사용될 것이다. 예를 들어, 리스트0 에 대응하는 초기 템플릿 왜곡 비용이 리스트1 에 대응하는 비용보다 크지 않으면, 리스트0 이 템플릿 매칭의 제 1 단계에서 사용되고 리스트1 이 제 2 단계에서 사용되며, 그 후 현재 블록의 현재 템플릿 (TC) 은 다음과 같이 업데이트된다: .
현재 템플릿 (TC) 대신 업데이트된 현재 템플릿 (T'C) 이 제 2 템플릿 매칭에서 리스트1 참조 픽처들로부터 다른 매칭된 템플릿 (T1) 을 발견하는데 활용된다. 그 결과, 매칭된 템플릿 (T1) 은 리스트0 및 리스트1 참조 픽처들을 공동으로 사용함으로써 발견된다. 이 매칭 프로세스는 양방향 템플릿 매칭으로 불린다.
모션 보상 예측 (MCP) 에 대한 단방향 예측과 양방향 예측 사이의 제안된 선택은 템플릿 매칭 왜곡에 기초한다. 도 11b 에 나타낸 바와 같이, 템플릿 매칭 동안, 템플릿 T0 과 Tc (현재 템플릿) 사이의 왜곡은 cost0 으로서 계산될 수 있고, 템플릿 T1 과 T'C (업데이트된 현재 템플릿) 사이의 왜곡은 cost1 로서 계산될 수 있다. cost0 이 0.5 * cost1 미만이면, MV0 에 기초한 단방향 예측이 FRUC 템플릿 매칭 모드에 적용되고; 그렇지 않으면, MV0 및 MV1 에 기초한 양방향 예측이 적용된다. cost1 이 템플릿 T1 과 T'C (업데이트된 현재 템플릿) 사이의 차이를 나타내기 때문에, cost0 은 0.5 * cost1 과 비교되며, 이것은 Tc (현재 템플릿) 와 0.5 * (T0 + T1) 의 그의 예측 사이의 차이의 2 배임을 유의한다. 제안된 방법들은 PU 레벨 모션 정제에만 적용될 수도 있음을 유의한다. 서브-PU 레벨 모션 정제는 변경되지 않은 상태로 유지한다.
다음은 쌍방향 템플릿 매칭을 설명한다. 쌍방향 템플릿은 도 12 에 나타낸 바와 같이, 각각 리스트0 의 초기 MV0 및 리스트1 의 MV1 로부터, 2 개의 예측 블록들의 가중 조합으로서 생성된다. 템플릿 매칭 동작은 참조 픽처에서 (초기 예측 블록 주위의) 샘플 영역과 생성된 템플릿 사이의 비용 측정치들을 계산하는 것을 포함한다. 2 개의 참조 픽처들의 각각에 대해, 최소 템플릿 비용을 산출하는 MV 는 원래의 것을 대체하기 위한 그 리스트의 업데이트된 MV 로서 간주된다. 최종적으로, 2 개의 새로운 MV들, 즉 도 12 에 나타낸 바와 같은 MV0' 및 MV1' 는 정규 양방향 예측을 위해 사용된다. 블록 매칭 모션 추정에 보통 사용되기 때문에, 절대 차의 합 (SAD) 이 비용 측정치로서 활용된다. 제안된 디코더 측 모션 벡터 도출 (DMVD) 은 부가적인 신택스 엘리먼트의 송신 없이, 과거의 참조 픽처로부터의 하나 및 미래의 참조 픽처로부터의 다른 하나에 의한 양방향 예측의 병합 모드에 대해 적용된다. JEM4.0 에서, LIC, 아핀, ATMVP 또는 STMVP 병합 후보 또는 FRUC 가 하나의 CU 에 대해 선택될 때, DMVR 은 적용되지 않는다.
다음은 JEM 에서의 양방향 광학 플로우를 설명한다. 양방향 광학 플로우 (Bi-directional Optical flow: BIO) 는 양방향 예측의 경우에 블록 단위 (block-wise) 모션 보상 외에 수행되는 픽셀 단위 (pixel-wise) 모션 정제이다. 이것은 미세 모션이 블록 내부에 있을 수도 있는 것을 보상하기 때문에, BIO 를 인에이블하는 것은 모션 보상을 위한 블록 사이즈의 확대를 야기한다. 샘플 레벨 모션 정제는 철저한 탐색이나 시그널링이 필요하지 않으며, 이는 각 샘플에 대해 미세한 모션 벡터를 제공하는 명시적인 방정식이 존재하기 때문이다. 설명을 용이하게 하기 위해, 도 13 과 관련하여 예시가 설명된다.
를 보상 블록 모션 후 참조 로부터의 루미넌스 값이라고 하고, 는 각각 그래디언트의 수평 및 수직 성분들이라고 한다. 광학 플로우가 유효하다고 가정하면, 도 13 에 나타낸 모션 벡터 필드 는, 식 로 주어진다. (1)
각각의 샘플의 모션 궤적에 대하여 광학 플로우 방정식과 헤르미트 (Hermite) 보간을 조합하면, 그 끝에서 함수 값들 과 도함수들 양자 모두와 매칭하는 3 차의 고유 다항식을 얻는다. t=0 에서 이 다항식의 값은 BIO 예측 이다. (2)
여기서 (도 13 에서 T0 ) 및 (도 13 에서 T1) 는 도 13 에 나타낸 바와 같이 참조 프레임들까지의 거리를 나타낸다. 거리들 및 는 Ref0 및 Ref1 에 대한 POC (Picture Order Count) 값에 기초하여 계산된다: = POC(현재)-POC(Ref0), =POC(Ref1)-POC(현재). 양자의 예측들이 동일한 시간 방향으로부터 (양자 모두 과거로부터 또는 양자 모두 미래로부터) 생겨나면, 부호들은 상이한 이다. 이 경우, BIO 는 예측이 동일한 시간 모먼트로부터 생겨나지 않고 , 양자의 참조된 영역들이 비제로 모션 을 갖고 그리고 블록 모션 벡터들이 시간 거리 에 비례하는 경우에만 적용된다.
모션 벡터 필드 는 (도 13 상의 모션 궤적과 참조 프레임 평면들의 교차점인) 포인트들 A 및 B 에서의 값들 사이의 차이 를 최소화함으로써 결정된다. 모델은 에 대한 로컬 테일러 전개 (Taylor expansion) 의 1 차 선형 항 (first linear term) 만을 사용한다:
(1) 에서의 모든 값들은 지금까지 생략되었던 샘플 위치 에 의존한다. 모션이 로컬 주변에서 일관됨을 가정하면, 현재 예측된 포인트 (i,j) 에 센터링된 스퀘어 윈도우 Ω 내부의 를 최소화한다:
이 최적화 문제를 위해, 먼저 수직 방향에서 그리고 그 후 수평 방향에서 최소화를 행하는 단순화된 솔루션을 사용한다. 그 결과는 다음과 같으며,
여기서,
제로 또는 매우 작은 값들에 의한 나눗셈을 회피하기 위해, 정규화 파라미터들 (r 및 m) 이 방정식들 (2), (3) 에 도입된다.
여기서 d 는 입력 비디오의 내부 비트 깊이이다.
일부 경우들에서, BIO 의 MV 레지먼트 (regiment) 는 노이즈 또는 불규칙한 모션으로 인해 신뢰할 수 없을 수도 있다. 따라서, BIO 에서, MV 레지먼트의 크기는 소정의 임계치 (thBIO) 로 클립된다. 임계 값은 현재 픽처의 모든 참조 픽처들이 모두 일 방향으로부터인지 여부에 기초하여 결정된다. 현재 픽처의 현재 픽처들의 모든 참조 픽처들이 일 방향으로부터인 경우, 임계치의 값은 로 설정되고, 그렇지 않으면 로 설정된다.
BIO 에 대한 그래디언트들은 HEVC 모션 보상 프로세스 (2D 분리가능한 FIR) 와 일관되는 동작들을 사용하여 모션 보상 보간과 동시에 계산된다. 이 2D 분리가능한 FIR 에 대한 입력은 모션 보상 프로세스에 대해서와 동일한 참조 프레임 샘플 및 블록 모션 벡터의 분수 부분에 따른 분수 포지션 ( fracX , fracY ) 이다. 수평 그래디언트 의 경우, 신호는 먼저 디스케일링 시프트 d-8 을 가진 분수 포지션 ( fracY ) 에 대응하는 BIOfilterS 를 사용하여 수직으로 보간하였고, 그 후에 그래디언트 필터 BIOfilterG 가 18-d 만큼의 디스케일링 시프트를 가진 분수 포지션 (fracX) 에 대응하는 수평 방향으로 적용된다. 수직 그래디언트 의 경우, 먼저 그래디언트 필터는 디스케일링 시프트 d-8 을 가진 분수 포지션 (fracY) 에 대응하는 BIOfilterG 를 사용하여 수직으로 적용되고, 그 후 신호 변위가 18-d 만큼의 디스케일링 시프트를 가진 분수 포지션 (fracX) 에 대응하는 수평 방향으로 BIOfilterS 를 사용하여 수행된다. 그래디언트 계산 BIOfilterG 및 신호 변위 BIOfilterF 를 위한 보간 필터의 길이는 합리적인 복잡도를 유지하기 위해 더 짧다 (6-탭). 표 1 은 BIO 에서 블록 모션 벡터의 상이한 분수 포지션들에 대한 그래디언트 계산을 위해 사용된 필터들을 도시한다. 표 2 는 BIO 에서 예측 신호 생성을 위해 사용된 보간 필터들을 도시한다.
도 14 는 8×4 블록에 대한 그래디언트 계산의 예를 도시한다. 8×4 블록에 대해, 코더 (예를 들어, 비디오 인코더 (200) 또는 비디오 디코더 (300)) 는 모션 보상된 예측자들을 페치하고 픽셀들의 외부 2 개의 라인들 뿐만 아니라 현재 블록 내의 모든 픽셀들의 HOR/VER 그래디언트들을 계산할 필요가 있는데, 이는 각각의 픽셀에 대해 vx 및 vy 를 푸는 것이 방정식 (4) 에 나타낸 바와 같이 각각의 픽셀에 센터링된 윈도우 Ω 내의 픽셀들의 모션 보상된 예측자들 및 HOR/VER 그래디언트 값들을 필요로 하기 때문이다. JEM 에서, 윈도우의 사이즈는 5x5 로 설정된다. 이에 따라 코더는 모션 보상된 예측자들을 페치하고 픽셀들의 외부 2 개의 라인들에 대한 그래디언트들을 계산할 필요가 있다.
표 1: BIO 에서 그래디언트 계산을 위한 필터들
표 2: BIO 에서 예측 신호 생성을 위한 보간 필터들
JEM 에서, BIO 는 2 개의 예측들이 상이한 참조 픽처들로부터일 때 모든 양방향 예측 블록들에 적용된다. LIC (local illumination compensation) 가 CU 에 대해 인에이블될 때, BIO 는 디스에이블된다.
다음은 JEM 에서 오버랩된 블록 모션 보상 (OBMC) 을 설명한다. 오버랩된 블록 모션 보상 (OBMC) 은 예를 들어 H.263 에서와 같이, 비디오 표준들의 초기 세대들에 사용되었다. JEM 에서, OBMC 는 CU 의 우측 및 하단 경계들을 제외한 모든 모션 보상된 (MC) 블록 경계들에 대해 수행된다. 더욱이, 이것은 루마 및 크로마 성분들 양자 모두에 대해 적용된다. JEM 에서, MC 블록은 코딩 블록에 대응하고 있다. CU 가 서브-CU 모드 (상술한 서브-CU 병합, 아핀 및 FRUC 모드를 포함) 로 코딩될 때, CU 의 각각의 서브-블록은 MC 블록이다. 균일한 방식으로 CU 경계들을 프로세싱하기 위해, OBMC 는 모든 MC 블록 경계들에 대해 서브-블록 레벨에서 수행되며, 여기서 서브-블록 사이즈는 도 15a 및 도 15b 에 도시된 바와 같이, 4x4 와 동일하게 설정된다.
OBMC 가 현재 서브-블록에 적용될 경우, 현재 모션 벡터들 외에, 4 개의 연결된 이웃하는 서브-블록들의 모션 벡터들은, 이용가능하지 않고 현재 모션 벡터와 동일하지 않은 경우, 현재 서브-블록에 대한 예측 블록을 도출하는데 또한 사용된다. 다중 모션 벡터들에 기초한 이들 다중 예측 블록들은 현재 서브-블록의 최종 예측 신호를 생성하기 위해 조합된다.
도 16a 내지 도 16d 에 나타낸 바와 같이, 이웃하는 서브-블록의 모션 벡터들에 기초한 예측 블록은 P N 으로 표시되며, 여기서 N 은 이웃하는 상측, 하측, 좌측 및 우측 서브-블록들에 대한 인덱스를 표시하고 현재 서브-블록의 모션 벡터들에 기초한 예측 블록은 P C 로 표기된다. P N 이 현재 서브-블록과 동일한 모션 정보를 포함하는 이웃하는 서브-블록의 모션 정보에 기초할 때, OBMC 는 P N 으로부터 수행되지 않는다. 그렇지 않으면, P N 의 모든 픽셀이 Pc 에서의 동일한 픽셀에 부가된다, 즉 P N 의 4 개의 행들/열들이 Pc 에 부가된다. 가중 팩터들 {1/4, 1/8, 1/16, 1/32} 은 P N 에 사용되고, 가중 팩터들 {3/4, 7/8, 15/16, 31/32} 은 Pc 에 사용된다. 작은 MC 블록들이 제외되고 (즉, 코딩 블록의 높이 또는 폭이 4 와 동일하거나 또는 CU 가 서브-CU 모드로 코딩될 때), 이에 대해 P N 의 오직 2 개의 행들/열들만이 Pc 에 부가된다. 이 경우, 가중 팩터들 {1/4, 1/8} 이 P N 에 사용되고, 가중 팩터들 {3/4, 7/8} 이 Pc 에 사용된다. 수직으로 (수평으로) 이웃하는 서브-블록의 모션 벡터들에 기초하여 생성된 P N 에 대해, P N 의 동일한 행 (열) 에서의 픽셀들이 동일한 가중 팩터로 Pc 에 부가된다. 예측 블록 Pn 의 도출을 위해 BIO 가 또한 적용됨에 유의한다.
JEM 에서, 256 루마 샘플들 이하의 사이즈를 가진 CU 에 대해, CU 레벨 플래그는 OBMC 가 현재 CU 에 대해 적용되는지 여부를 표시하도록 시그널링된다. 256 루마 샘플들보다 큰 사이즈를 가지거나 또는 AMVP 모드로 코딩되지 않은 CU들에 대해, OBMC 가 디폴트로 적용된다. 비디오 인코더 (200) 에서, OBMC 가 CU 에 적용될 때, 그 영향은 모션 추정 스테이지 동안 고려된다. 상단 이웃 블록 및 좌측 이웃 블록의 모션 정보를 사용하는 것에 의한 예측 신호는 현재 CU 의 원래 신호의 상단 및 좌측 경계들을 보상하는데 사용되고, 그 후 정상 모션 추정 프로세스가 적용된다.
IBC 와 함께 사용될 때와 같은 JEM 에서 모든 새로운 코딩 툴들로 일부 기술적인 문제들이 있을 수도 있다. IBC 동작을 위한 것인 기술적 솔루션들로 이러한 기술적 문제들을 해결하면, 비디오 인코더 (200) 및 비디오 디코더 (300) 의 동작이 우수하게 될 수도 있는 것과 같은, 우수한 비디오 인코딩 및 디코딩을 야기할 수도 있다. 일 예로서, HEVC SCC 에서 IBC 는 (크로마 성분들에 대한 잠재적 스케일링으로) 동일한 모션 벡터와 함께 하나의 루마 블록 및 2 개의 대응하는 크로마 블록들을 위해 활용된다. 디커플링된 파티션 트리들 아래에서 IBC 에 대한 모션 벡터들을 표시/시그널링하는 방법은 비디오 코딩, 특히 IBC 비디오 코딩과 관련된 기술적 문제이다. 다른 예로서, 몇몇 새로운 모션 관련 툴들이 연구되었다. 이들을 IBC 와 결합하는 방법은 비디오 코딩, 특히 IBC 비디오 코딩과 관련된 기술적인 문제이다.
다음은 기술적인 문제들에 대한 기술적인 솔루션들의 예들이다. 이들 솔루션들은 함께, 별도로, 또는 이들의 임의의 조합으로 사용될 수도 있다.
파티션 트리가 상이한 컬러 성분들에 대해 디커플링될 때, 블록에 대한 IBC 모드 및/또는 IBC 의 모션 벡터들의 시그널링은 하나의 컬러 성분 (예를 들어, 루마 성분) 에만 적용될 수도 있다. 대안으로, 게다가, 프리-코딩된 성분 (예를 들어, 루마) 후에 코딩되는 성분 (예를 들어, Cb 또는 Cr) 의 블록은 항상 그 프리-코딩된 성분의 대응하는 블록의 IBC 모드의 사용을 상속한다.
일 예에서, 미국 특허 출원 제 15/676,314 호 (미국 특허 공보 제 2018/0048889 호) 및 제 15/676,345 호 (미국 특허 공보 제 2018-0063553 호) 에 기재된 바와 같은 (도출된) DM 모드 플래그 또는 인덱스가 활용될 수도 있다. DM 플래그 또는 인덱스에 의해 식별된 대응하는 루마 블록이 IBC 로 코딩되면, 현재 크로마 블록은 IBC 로 코딩되도록 설정된다. 일 예에서, "대응하는" 블록은 임의의 미리정의된 매핑을 지칭한다. 예를 들어, 대응하는 블록은 도 17a 에서 C3 과 같은, 현재 블록의 중심에 있는 4×4 블록이다. 대안으로, 도 17a 에 나타낸 바와 같이, 다른 포지션들 (예를 들어, C0, C1, C2, BR, BL, TL, TR) 에 위치된 블록들이 활용될 수도 있다.
상속된 IBC 모드가 블록에 대해 인에이블될 때, 현재 전체 블록의 모션 정보는 대응하는 사전 코딩된 성분 (루마 성분과 같은) 영역의 하나의 대응하는 블록으로부터 상속 또는 도출될 수도 있거나, 디폴트 모션 벡터들로부터 도출될 수도 있다.
상속된 IBC 모드가 블록에 대해 인에이블될 때, 현재 전체 블록 내의 서브-블록들의 모션 정보는 프리 코딩된 성분의 영역 내의 다중의 대응하는 블록들로부터 상속 또는 도출될 수도 있거나, 디폴트 모션 벡터들로부터 도출될 수도 있다. 예를 들어, 하기에서 더 상세히 설명되는 바와 같이, 프리 코딩된 성분은 루마 성분이고, 도 17b 에서 음영처리된 블록 (706) 으로서 표시된 Cb 블록은 대응하는 루마 파티션들로부터 모션 및 모드 정보를 상속할 수도 있다고 상정한다. 대응하는 루마 블록 (예를 들어, 파티션 커버링 TL 및 파티션 커버링 C2) 이 IBC 로 코딩되면, 연관된 모션 벡터는 이에 따라 추가로 스케일링될 수도 있다. 도 18a 및 도 18b 에 예시가 도시되어 있다.
예를 들어, 도 17a 는 루마 QTBT 구조에 따라 파티셔닝되는 루마 성분의 루마 샘플들 (700) 을 도시하며, 이는 도 2a 에 도시된 파티션 트리와 유사하다. 예를 들어, 도 17a 의 루마 샘플들 (700) 의 파티셔닝은 도 2b 에 도시된 파티셔닝과 동일하다. 제 1 파티션 트리에 기초한 루마 샘플들 (700) 의 파티셔닝은 2 개의 예들로서 루마 블록 (704A) 및 루마 블록 (704B) 을 포함하는 복수의 블록들을 포함하는 루마 파티션 (701)(굵은 박스로 나타냄) 을 생성한다. 루마 블록 (704A) 은 IBC 예측 모드에서 예측될 수도 있고 <-8, -6> 의 블록 벡터를 가지며, 루마 블록 (704B) 은 IBC 예측 모드에서 예측될 수도 있으며 <-12, -4> 의 블록 벡터를 갖는다.
도 17b 는 크로마 QTBT 구조에 따라 파티셔닝된 크로마 성분의 크로마 샘플들 (702A) 을 도시한다. 크로마 샘플들 (702A) 및 루마 샘플들 (700) 은 서로 대응하며 동일한 CU 의 일부이다. 도시된 예에서, 크로마 샘플들 (702A) 은 루마 샘플들 (700) 을 파티셔닝하는데 사용된 제 1 파티션 트리와는 상이한 제 2 파티션 트리에 기초하여 파티셔닝된다. 제 2 파티션 트리에 따라 크로마 샘플들 (702A) 을 파티셔닝하면 크로마 블록 (706) 을 야기한다.
도 17a 및 도 17b 의 예에 있어서, 크로마 블록 (706) 은 루마 파티션 (701) 에 대응한다. 그러나, 루마 파티션 (701) 은 IBC 예측 모드를 사용하여 예측된 2 개의 블록들: 블록 (704A) 및 블록 (704B) 을 포함한다. 따라서, 어느 블록 벡터 (예를 들어, 블록 (704A) 의 블록 벡터 또는 블록 (704B) 의 블록 벡터) 가 크로마 블록 (706) 을 상속해야 하는지가 명확하지 않을 수도 있다.
도 18a 는 도 17a 의 재생이다. 본 개시에서 설명된 기법들에 따라, 그리고 도 18b 에 도시된 바와 같이, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 크로마 성분의 크로마 샘플들 (702B) 로 도시된 바와 같이, 루마 샘플들 (700) 을 위해 사용된 파티션 트리에 기초하여 크로마 블록 (706) 을 파티셔닝할 수도 있다. 예를 들어, 도 17b 의 크로마 블록 (706) 은 도 18b 의 크로마 파티션 (710) 이며, 여기서, 크로마 파티션 (710) 은 루마 파티션 (701) 과 동일한 방식으로 파티셔닝된다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 크로마 블록 (706) 을 파티셔닝하여 서브-블록들 (708A 및 708B) 을 생성할 수도 있다. 도 18b 에 도시된 예에서, 서브-블록 (708A) 은 루마 블록 (704A) 에 대응하고, 서브-블록 (708B) 은 루마 블록 (704B) 에 대응한다. 예를 들어, 크로마 서브-블록 (708A) 은 루마 블록 (704A) 과 동일한 형상이고, 크로마 서브-블록 (708A) 은 루마 블록 (704A) 이 루마 파티션 (701) 내에 있는 크로마 파티션 (710) 내의 동일한 상대적 포지션에 있다. 이 경우, 크로마 서브-블록 (708A) 과 루마 블록 (704A) 사이에 일-대-일 대응이 있다. 또한, 크로마 서브-블록 (708B) 은 루마 블록 (704B) 과 동일한 형상이고, 크로마 서브-블록 (708B) 은 루마 블록 (704B) 이 루마 파티션 (701) 내에 있는 크로마 파티션 (710) 내의 동일한 상대적 포지션에 있다. 이 경우, 크로마 서브-블록 (708B) 과 루마 블록 (704B) 사이에 일-대-일 대응이 있다.
하나 이상의 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 크로마 서브-블록 (708A) 을 루마 블록 (704A) 의 블록 벡터에 할당할 수도 있다 (예를 들어, 크로마 서브-블록 (708A) 은 루마 블록 (704A) 으로부터 블록 벡터를 상속함). 비디오 인코더 (200) 및 비디오 디코더 (300) 는 크로마 서브-블록 (708B) 을 루마 블록 (708A) 의 블록 벡터에 할당할 수도 있다 (예를 들어, 크로마 서브-블록 (708B) 은 루마 블록 (704B) 으로부터 블록 벡터를 상속함). 부가적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 블록 벡터들의 스케일링을 수행할 수도 있다. 예를 들어, 루마 블록 (704A) 에 대한 블록 벡터는 <-8, -6> 이고 루마 블록 (704B) 에 대한 블록 벡터는 <-12, -4> 이다. 이 예에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 루마 샘플들 (700) 이 크로마 샘플들 (702A 또는 702B) 의 사이즈의 4x (예를 들어, 4:2:2 서브 샘플링 포맷) 이기 때문에 x 성분 및 y 성분을 2 로 나눌 수도 있다. 예시된 바와 같이, 크로마 서브-블록 (708A) 의 블록 벡터는 <-4, -3> 이며, 여기서 -4 는 -8 을 2 로 나눈 것이고 -3 은 -6 을 2 로 나눈 것이다. 크로마 서브-블록 (708A) 의 블록 벡터는 <-6, -2> 이며, 여기서 -6 은 -12 을 2 로 나눈 것이고 -2 은 -4 을 2 로 나눈 것이다.
이러한 방식으로, 비디오 코더 (예를 들어, 비디오 인코더 (200) 또는 비디오 디코더 (300)) 는 제 1 파티션 트리 (예를 들어, 도 17a 및 도 18a 에 도시된 바와 같이 루마 QTBT) 에 따른 제 1 컬러 성분 (예를 들어, 루마 성분의 루마 샘플들 (700)) 의 샘플들을 파티셔닝하고, 제 2 파티션 트리 (예를 들어,도 17b 에 도시된 바와 같이 크로마 QTBT 구조) 에 따른 제 2 컬러 성분 (예를 들어, 크로마 성분) 의 샘플들을 파티셔닝하도록 구성될 수도 있다. 제 2 파티션 트리는 제 1 파티션 트리와 상이하고, 제 2 컬러 성분은 제 1 컬러 성분과 상이하다.
비디오 코더는 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정할 수도 있다 (예를 들어, 파티션 (701) 의 블록들은 크로마 블록 (706) 에 대응함). 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고 (예를 들어, 루마 성분의 루마 샘플들 (700) 은 복수의 블록들을 포함하는 루마 파티션 (701) 을 생성하도록 파티셔닝됨) 제 2 컬러 성분의 블록 (예를 들어, 블록 706) 은 제 2 파티션 트리에 따른 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성된다.
본 개시에 설명된 하나 이상의 예들에서, 비디오 코더는 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝할 수도 있다. 예를 들어, 도 18b 에 도시된 바와 같이, 크로마 블록 (706) 에 대응하는 크로마 파티션 (710) 은 크로마 서브-블록들 (708A 및 708B) 을 생성하기 위해 루마 QTBT 에 기초하여 파티셔닝된다. 크로마 서브-블록들 (708A 및 708B) 은 각각 루마 블록들 (704A 및 704B) 에 대응한다.
비디오 코더는 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 에서 예측되는 제 2 컬러 성분의 서브-블록들의 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정할 수도 있다. 예를 들어, 크로마 서브-블록들 (708A 및 708B) 은 IBC 예측 모드에서 예측되고, 비디오 코더는 루마 블록 (704A 및 704B) 에 대한 블록 벡터들에 기초하여 크로마 서브-블록들 (708A 및 708B) 에 대한 블록 벡터들을 결정할 수도 있다.
비디오 코더는 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩할 수도 있다. 예를 들어, 코딩이 인코딩인 경우, 크로마 서브-블록 (708A) 에 대해, 비디오 인코더 (200) 는 서브-블록 (708A) 의 블록 벡터에 기초하여 예측 블록을 결정하고, 서브-블록 (708A) 으로부터 예측 블록을 감산하여 잔차 블록을 생성하며, 잔차 블록을 표시하는 정보를 시그널링할 수도 있다. 코딩이 디코딩인 경우, 크로마 서브-블록 (708A) 에 대해, 비디오 디코더 (300) 는 서브-블록 (708A) 의 블록 벡터에 기초하여 예측 블록을 결정하고, 서브-블록 (708A) 에 대한 잔차 블록을 (예를 들어, 시그널링된 정보에 기초하여) 결정하며, 크로마 블록 (706) 의 서브-블록 (708) 을 재구성하기 위해 잔차 블록을 예측 블록에 부가할 수도 있다.
대안으로, 일부 서브-블록들 (세트 0) 에 대해, 모션 정보가 상속될 수도 있는 한편, 다른 서브-블록들 (세트 1) 에 대해, 모션 정보는 세트 0 으로부터 도출되거나 디폴트 모션 벡터들로부터 도출될 수도 있다. 일 예에서, 나머지 컬러 성분(들) 각각 또는 전부에 대한 상속된 IBC 모드의 사용을 표시하기 위한 하나의 모드 인덱스가 시그널링된다. 각각의 컬러 성분에 대해, 또는 루마 및 크로마 성분들에 대해, IBC 가 인에이블될 수 있는지 또는 디스에이블될 수 있는지를 표시하기 위해 플래그가 SPS/VPS/PPS/슬라이스 헤더/타일 헤더에서 시그널링될 수도 있다.
다음은 OBMC 와의 인트라-블록 카피 상호작용들을 설명한다. 일 예에서, OBMC 는 항상 디스에이블될 수도 있다. 따라서, 블록이 IBC 로 코딩될 때 OBMC 플래그를 시그널링할 필요는 없다. 대안으로, OBMC 플래그는 IBC 모드의 표시 (예를 들어, 현재 픽처를 가리킨 참조 인덱스; 또는 IBC 모드를 나타내는 모드 인덱스) 전에 시그널링될 수도 있다; 이 경우, IBC 표시의 시그널링은 스킵된다.
일 예에서, OBMC 가 또한 인에이블될 수도 있지만, 동일한 코딩 모드로 코딩될 이웃하는 블록들의 제한을 갖는다. 예를 들어, 현재 블록이 IBC 모드로 코딩되고 현재 블록의 이웃 블록들 중 하나가 존재하지만, 이웃 블록이 IBC 모드로 코딩되지 않은 경우, 이 이웃 블록은 이용불가능한 것으로 설정된다. 즉, 모션 파라미터들은 현재 블록에 대한 OBMC 프로세스에서 활용되지 않는다. 예를 들어, 현재 블록이 비-IBC 모드로 코딩되고 그의 이웃 블록들 중 하나가 존재지만, IBC 모드로 코딩되는 경우, 이 이웃 블록은 이용불가능한 것으로 설정된다. 즉, 모션 파라미터들은 현재 블록에 대한 OBMC 프로세스에서 활용되지 않는다.
일 예에서, OBMC 가 또한 인에이블될 수도 있고 이웃 블록들의 코딩된 모드에 관계없이 기존 이웃 블록들의 모든 모션 정보가 활용될 수도 있다. 대안으로, 또한 가중 팩터들이 현재 블록의 코딩된 모드에 더 의존할 수도 있다. 대안으로, 또한 가중 팩터들은 현재 블록과 이웃 블록이 동일한 코딩된 모드를 공유하는지 여부에 더 의존할 수도 있다.
다음은 인트라-블록 카피를 갖는 서브-블록들을 설명한다. 하나의 블록이 IBC 모드를 사용하여 코딩되는 서브-블록 IBC 가 적용될 수도 있다; 그러나, 블록 내의 각각의 서브-블록에 대해, 모션 벡터들 (예를 들어, 블록 벡터들) 은 상이할 수도 있다. 예를 들어, 서브-블록 (708A) 에 대한 블록 벡터 및 서브-블록 (708B) 에 대한 블록 벡터는 상이할 수도 있다.
일 예에서, 기본 모션 벡터가 시그널링될 수도 있다. 서브-블록 모션 벡터는 기본 모션 벡터에 의존할 수도 있다. 일 예에서, 기본 모션 벡터는 최적 모션 벡터 마이너스 모션 벡터 예측자 사이의 차이로서 시그널링될 수도 있다. 모션 벡터 예측자는 공간적 및/또는 시간적 이웃 블록들의 모션 벡터들로부터 도출된 것일 수도 있다. 일 예에서, 기본 모션 벡터는 서브-블록과 연관된 실제 모션 벡터를 시그널링하기 위한 예측자일 수도 있다. 일 예에서, 기본 모션 벡터는 다중 서브-블록들 중 하나와 연관된 모션 벡터일 수도 있다. 따라서, 더 이상 서브-블록에 대한 모션 벡터를 시그널링할 필요가 없다. 일 예에서, 기본 모션 벡터는 시작 지점으로서 사용될 수도 있고 서브-블록의 모션 벡터는 그에 따라 (예를 들어, 템플릿 매칭 방법을 사용하여) 도출 (또는 정제) 될 수도 있다.
일부 예들에서, 슬라이스 레벨 인덱스는 IBC 코딩된 블록들에 대한 모션 벡터들의 정밀도를 표시하도록 시그널링될 수도 있다. 대안으로, 인덱스는 블록 레벨/영역 레벨/타일/PPS/SPS/VPS 에서 시그널링될 수도 있다. 일 예에서, MV 정밀도의 후보들은 예를 들어, 정수-pel, 쿼드-pel, 하프-pel, 2-pel, 4-pel 을 포함할 수도 있다. 일 예에서, MV 정밀도의 후보 세트는 슬라이스 타입, 시간적 계층 인덱스, 모션 벡터 범위와 같은 코딩된 정보에 의존할 수도 있다.
다음은 아핀 모션과의 인트라 블록 카피 상호작용을 설명한다. 일 예에서, 블록이 아핀 모드로 코딩될 때 IBC 모드는 시그널링되지 않는다. 일 예에서, 블록이 IBC 모드로 코딩될 때 아핀 모드는 시그널링되지 않는다. 예를 들어, 비디오 코더는 블록이 IBC 예측 모드에서 코딩된다고 결정할 수도 있다. 비디오 코더는 블록이 IBC 예측 모드에서 코딩된다는 결정에 기초하여 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나를 행할 수도 있다. 예를 들어, 비디오 인코더 (200) 는 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보를 시그널링하지 않을 수도 있고, 비디오 디코더 (300) 는 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보를 파싱하지 않을 수도 있다.
IBC 코딩된 블록들과 연관된 모션은 종래의 병진 모션으로 처리될 수도 있다. 따라서, 2017 년 11 월 14 일 출원된 미국 출원 제 62/586,117 호 및 2018 년 11 월 13 일 출원된 미국 출원 제 16/188,774 호에 기재된 예시의 기법들이 여전히 작용할 수도 있다. 대안으로, (기존 아핀 및 종래 병진 운동에 부가하여) 제 3 모션 카테고리가 정의된다. 그리고 병합 모드에 대해, 디코딩된 병합 인덱스가 IBC 모드의 사용을 표시하는 경우, 이웃 블록들로부터의 제 3 카테고리에 속하는 모션 정보만이 병합 후보 리스트에 부가될 수도 있다.
일부 예들에서, IBC 모션 벡터를 ATMVP 도출 프로세스에 대한 시작 지점으로서 취하는 것을 허용하지 않는 것이 요구될 수도 있다. 일 예에서, 모션이 페치되는 픽처는 현재 픽처일 수 없다. 일 예에서, 현재 ATMVP 설계에서와 같이, 모션 정보를 페치하기 위한 시작 지점은 첫번째 이용가능한 공간적 병합 후보로부터이다. 제안된 방법으로, 첫번째 이용가능한 비-IBC 모션이 시작 지점으로서 사용된다. 예를 들어, 첫번째 이용가능한 공간적 병합 후보는 IBC 모션 정보와 연관되고 두 번째는 종래의 병진 모션과 연관되면, 두번째 이용가능한 공간적 병합 후보가 시작 지점으로서 사용된다. 모션이 페치되는 서브-블록들 중 하나가 IBC 모드로 코딩되는 경우, 이것은 ATMVP 프로세스에서 인트라-모드로서 처리될 수도 있다. 이 경우, 예를 들어 디폴트 모션이 서브-블록의 모션으로서 처리될 수도 있다. 대안으로, 이웃 서브-블록으로부터의 모션은 서브-블록의 모션으로서 활용될 수도 있다.
일 예로서, 비디오 코더는 ATMVP 를 사용하여 제 1 컬러 성분 또는 제 2 컬러 성분의 블록이 예측된다고 결정하고, 블록 상에서 ATMVP 를 수행하기 위해 사용된 참조 픽처에서 하나 이상의 블록들을 결정하고, 참조 픽처에서의 하나 이상의 블록들 중 적어도 하나의 블록이 IBC 예측 모드에서 예측된다고 결정하며, 그리고 IBC 예측 모드에서 예측되는 참조 픽처에서 적어도 하나의 블록을 위해 사용된 블록 벡터를 사용하지 않으면서 블록에 대한 ATMVP 동작을 수행할 수도 있다.
다음은 조명 보상 (Illlumination Compensation; IC) 과의 인트라-블록 카피 상호작용을 설명한다. 일 예에서, 블록이 IC 모드로 코딩될 때 IBC 모드는 시그널링되지 않는다. 일 예에서, 블록이 IBC 모드로 코딩될 때 IC 모드는 시그널링되지 않는다.
예를 들어, 비디오 코더는 블록이 IBC 예측 모드에서 코딩된다고 결정하고, 블록이 IBC 예측 모드에서 코딩된다는 결정에 기초하여 블록에 대해 조명 보상 (IC) 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나를 행할 수도 있다. 예를 들어, 비디오 인코더 (200) 는 제 2 블록에 대해 IC 모드가 인에이블되는지 여부를 표시하는 정보를 시그널링하지 않을 수도 있고, 비디오 디코더 (300) 는 제 2 블록에 대해 IC 모드가 인에이블되는지 여부를 표시하는 정보를 파싱하지 않을 수도 있다.
일 예에서, IC 모드는 IBC 로 코딩된 블록에 적용될 수 있다. 이 경우, 참조 블록의 이웃 샘플들은 현재 블록의 동일한 픽처에 있다.
다음은 적응적 모션 벡터 정밀도와의 인트라-블록 카피 상호작용을 설명한다. 일 예에서, IBC 모드는 블록이 하나 또는 다중의 정수 픽셀 스케일들에 있는 모션 정밀도와 같은, 미리정의된 MV 정밀도들의 서브세트로 코딩될 때만 시그널링된다. 일 예에서, 블록이 IBC 모드로 코딩될 때 MV 정밀도의 서브세트가 시그널링된다. 일 예에서, 블록이 IBC 모드로 코딩될 때 MV 정밀도는 시그널링되지 않는다. 정밀도는 슬라이스 헤더와 같은, 더 높은 레벨로 정의될 수도 있다.
예를 들어, 비디오 코더는 제 1 컬러 성분 또는 제 2 컬러 성분의 제 1 블록이 IBC 예측 모드에서 예측되지 않는다고 결정하고 제 1 블록에 대한 모션 벡터 정밀도의 제 1 세트를 결정할 수도 있다. 비디오 코더는 제 1 컬러 성분 또는 제 2 컬러 성분의 제 2 블록이 IBC 예측 모드에서 예측된다고 결정하고 제 2 블록에 대한 모션 벡터 정밀도의 제 2 세트를 결정할 수도 있다. 모션 벡터 정밀도의 제 2 세트는 모션 벡터 정밀도의 제 1 세트의 서브세트이다.
다음은 양방향 광학 플로우 (BIO) 와의 인트라-블록 카피 상호작용을 설명한다. 일 예에서, 2 개의 모션 벡터들 중 적어도 하나가 현재 픽처를 지칭하는 경우, 즉 2 개의 모션 벡터들 중 적어도 하나가 IBC 에서 블록 벡터인 경우 BIO 는 수행되지 않는다. 예를 들어, 비디오 코더는 블록을 포함하는 픽처를 지칭하는 벡터로 블록이 코딩된다고 결정할 수도 있다. 이 예에서, 비디오 코더는 블록을 포함하는 픽처를 지칭하는 벡터로 블록이 코딩되는 것에 기초하여 블록 상에서 BIO 를 수행하는 것을 회피할 수도 있다.
다른 예에서, 2 개의 모션 벡터들 중 적어도 하나가 현재 픽처를 지칭하는 경우, 즉 2 개의 모션 벡터들 중 적어도 하나가 IBC 에서 블록 벡터인 경우 BIO 가 수행된다. 이 경우, 현재 프레임과 또한 현재 프레임인 IBC 에 대한 참조 프레임의 POC 차이는 실제로 0 과 동일하다. 0 과 동일하지 않은 고정 수는 식 (3)- 식 (7) 과 같은 BIO 도출에서 POC 차이를 치환하는데 사용될 수 있다.
다음은 프레임 레이트 업 변환 (Frame Rate Up Conversion; FRUC) 과의 인트라-블록 카피 상호작용을 설명한다. 일 예에서, 시드 모션 벡터가 현재 픽처를 지칭하는 경우 템플릿 매칭이 수행될 수 없다. 일 예에서, 시드 모션 벡터가 현재 픽처를 참조하는 경우 현재 픽처와 동일한 참조 픽처로 템플릿 매칭이 수행된다. 일 예에서, 2 개의 모션 벡터들 중 적어도 하나가 현재 픽처를 지칭하는 경우, 즉 2 개의 모션 벡터들 중 적어도 하나가 IBC 에서 블록 벡터인 경우 쌍방향 매칭은 수행될 수 없다. 예를 들어, 비디오 코더는 블록을 포함하는 픽처를 지칭하는 벡터로 블록이 코딩된다고 결정할 수도 있다. 비디오 코더는 블록을 포함하는 픽처를 지칭하는 벡터로 블록이 코딩되는 것에 기초하여 블록 상에서 쌍방향 매칭을 수행하는 것을 회피할 수도 있다.
도 3 은 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 인코더 (200) 를 도시하는 블록 다이어그램이다. 도 3 은 설명의 목적으로 제공되고, 본 개시에서 폭넓게 예시화 및 설명된 바와 같이 기법들의 한정으로 고려되지 않아야 한다. 설명의 목적으로, 본 개시는 개발중인 H.266 비디오 코딩 표준 및 HEVC 비디오 코딩 표준과 같은 비디오 코딩 표준들의 컨텍스트에서 비디오 인코더 (200) 를 설명한다 (예를 들어, VCC). 그러나, 본 개시의 기법들은 이들 비디오 코딩 표준들에 제한되지 않으며, 일반적으로 비디오 인코딩 및 디코딩에 적용가능하다.
도 3 의 예에서, 비디오 인코더 (200) 는 비디오 데이터 메모리 (230), 모드 선택 유닛 (202), 잔차 생성 유닛 (204), 변환 프로세싱 유닛 (206), 양자화 유닛 (208), 역 양자화 유닛 (210), 역 변환 프로세싱 유닛 (212), 재구성 유닛 (214), 필터 유닛 (216), 디코딩된 픽처 버퍼 (DPB)(218), 및 엔트로피 인코딩 유닛 (220) 을 포함한다.
비디오 데이터 메모리 (230) 는 비디오 인코더 (200) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수도 있다. 비디오 인코더 (200) 는 예를 들어, 비디오 소스 (104)(도 1) 로부터 비디오 데이터 메모리 (230) 에 저장된 비디오 데이터를 수신할 수도 있다. DPB (218) 는 비디오 인코더 (200) 에 의한 후속 비디오 데이터의 예측에 사용하기 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리로서 작용할 수도 있다. 비디오 데이터 메모리 (230) 및 DPB (218) 는 다양한 메모리 디바이스들, 예컨대 동기식 랜덤 액세스 메모리 (synchronous dynamic random access memory; SDRAM), 자기저항 RAM (magnetoresistive RAM; MRAM), 저항 RAM (resistive RAM; RRAM) 을 포함하는 DRAM, 또는 다른 타입들의 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (230) 및 DPB (218) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (230) 는 도시된 바와 같이, 비디오 인코더 (200) 의 다른 컴포넌트들과 온-칩이거나 그 컴포넌트들에 대하여 오프-칩일 수도 있다.
본 개시에서, 비디오 데이터 메모리 (230) 에 대한 참조는 이처럼 구체적으로 기재되지 않으면 비디오 인코더 (200) 내부의 메모리 또는 이처럼 구체적으로 기재되지 않으면 비디오 인코더 (200) 외부의 메모리로 제한되는 것으로 해석되지 않아야 한다. 오히려, 비디오 데이터 메모리 (230) 에 대한 참조는 비디오 인코더 (200) 가 인코딩을 위해 수신하는 비디오 데이터 (예를 들어, 인코딩될 현재 블록에 대한 비디오 데이터) 를 저장하는 참조 메모리로서 이해되어야 한다. 도 1 의 메모리 (106) 는 또한 비디오 인코더 (200) 의 다양한 유닛들으로부터의 출력들의 일시적 저장을 제공할 수도 있다.
도 3 의 다양한 유닛들은 비디오 인코더 (200) 에 의해 수행되는 동작들의 이해를 보조하기 위해 도시된다. 이 유닛들은 고정 기능 회로들, 프로그램가능 회로들, 또는 이들의 조합으로서 구현될 수도 있다. 고정 기능 회로들은 특정 기능성을 제공하는 회로들을 지칭하며, 수행될 수 있는 동작들에 대해 미리설정된다. 프로그램가능 회로들은 다양한 태스크들을 수행하도록 프로그램될 수 있는 회로들을 지칭하며, 수행될 동작들에서 유연한 기능성을 제공한다. 예를 들어, 프로그램가능 회로들은 프로그램가능 회로들이 소프트웨어 또는 펌웨어의 명령들에 의해 정의된 방식으로 동작하게 하는 소프트웨어 또는 펌웨어를 실행할 수도 있다. 고정 기능 회로들은 소프트웨어 명령들을 (예를 들어, 파라미터들을 수신하거나 파라미터들을 출력하기 위해) 실행할 수도 있지만, 고정 기능 회로들이 수행하는 동작 타입들은 일반적으로 불변이다. 일부 예들에서, 유닛들의 하나 이상은 별개의 회로 블록들 (고정 기능 또는 프로그램가능) 일 수도 있고, 일부 예들에서, 하나 이상의 유닛들은 집적 회로들일 수도 있다.
비디오 인코더 (200) 는 프로그램가능 회로들로부터 형성된, 산술 로직 유닛 (arithmetic logic unit; ALU) 들, 기본 기능 유닛 (elementary function unit; EFU) 들, 디지털 회로들, 아날로그 회로들, 및/또는 프로그램가능 코어들을 포함할 수도 있다. 비디오 인코더 (200) 의 동작들이 프로그램가능 회로들, 메모리 (106) 에 의해 실행되는 소프트웨어를 사용하여 수행되는 예들에서, 메모리 (106)(도 1) 는 비디오 인코더 (200) 가 수신하고 실행하는 소프트웨어의 오브젝트 코드를 저장할 수 있거나, 비디오 인코더 (200)(미도시) 내의 다른 메모리가 그러한 명령들을 저장할 수도 있다.
비디오 데이터 메모리 (230) 는 수신된 비디오 데이터를 저장하도록 구성된다. 비디오 인코더 (200) 는 비디오 데이터 메모리 (230) 로부터 비디오 데이터의 픽처를 취출하고 그 비디오 데이터를 잔차 생성 유닛 (204) 및 모드 선택 유닛 (202) 에 제공할 수도 있다. 비디오 데이터 메모리 (230) 에서의 비디오 데이터는 인코딩될 원시 비디오 데이터일 수도 있다.
모드 선택 유닛 (202) 은 모션 추정 유닛 (222), 모션 보상 유닛 (224), 및 인트라-예측 유닛 (226) 을 포함한다. 모드 선택 유닛 (202) 은 다른 예측 모드들에 따라 비디오 예측을 수행하기 위해 부가적인 기능 유닛들을 포함할 수도 있다. 예를 들어, 모드 선택 유닛 (202) 은 팔레트 유닛, 인트라-블록 카피 유닛 (모션 추정 유닛 (222) 및/또는 모션 보상 유닛 (224) 의 일부일 수도 있음), 아핀 유닛, 선형 모델 (LM) 유닛 등을 포함할 수도 있다.
모드 선택 유닛 (202) 은 일반적으로 인코딩 파라미터들의 조합들 및 그러한 조합들에 대한 결과의 레이트-왜곡 값들을 테스트하기 위해 다중 인코딩 패스들을 조정한다. 인코딩 파라미터들은 CU들로의 CTU들의 파티셔닝, CU들에 대한 예측 모드들, CU들의 잔차 데이터에 대한 변환 타입들, CU들의 잔차 데이터에 대한 양자화 파라미터들 등을 포함할 수도 있다. 모드 선택 유닛 (202) 은 궁극적으로 다른 테스트된 조합들보다 우수한 레이트-왜곡 값들을 갖는 인코딩 파라미터들의 조합을 선택할 수도 있다.
비디오 인코더 (200) 는 비디오 데이터 메모리 (230) 로부터 취출된 픽처를 일련의 CTU들로 파티셔닝하고, 슬라이스 내에 하나 이상의 CTU들을 캡슐화할 수도 있다. 모드 선택 유닛 (202) 은 상술한 HEVC 의 쿼드-트리 구조 또는 QTBT 구조와 같은, 트리 구조에 따라 픽처의 CTU 를 파티셔닝할 수도 있다. 상술한 바와 같이, 비디오 인코더 (200) 는 트리 구조에 따라 CTU 를 파티셔닝하는 것으로부터 하나 이상의 CU들을 형성할 수도 있다. 이러한 CU 는 일반적으로 "비디오 블록" 또는 "블록" 으로 지칭될 수도 있다.
일반적으로, 모드 선택 유닛 (202) 은 또한 현재 블록 (예를 들어, 현재 CU, 또는 HEVC 에서, PU 및 TU 의 오버랩 부분) 에 대한 예측 블록을 생성하기 위해 그의 컴포넌트들 (예를 들어, 모션 추정 유닛 (222), 모션 보상 유닛 (224) 및 인트라-예측 유닛 (226)) 을 제어한다. 현재 블록의 인터-예측을 위해, 모션 추정 유닛 (222) 은 모션 탐색을 수행하여 하나 이상의 참조 픽처들 (예를 들어, DPB (218) 에 저장된 하나 이상의 이전에 코딩된 픽처들) 에서 하나 이상의 근접하게 매칭하는 참조 블록들을 식별할 수도 있다. 특히, 모션 추정 유닛 (222) 은, 예를 들어 절대차의 합 (SAD), 제곱차의 합 (SSD), 평균 절대차 (MAD), 평균 제곱차 (MSD) 등에 따라, 잠재적 참조 블록이 현재 블록에 얼마나 유사한지를 나타내는 값을 계산할 수도 있다. 모션 추정 유닛 (222) 은 일반적으로 고려되는 참조 블록과 현재 블록 사이의 샘플 별 차이들을 사용하여 이러한 계산들을 수행할 수도 있다. 모션 추정 유닛 (222) 은 현재 블록과 가장 근접하게 매칭하는 참조 블록을 표시하는, 이러한 계산들로부터 야기되는 최저 값을 갖는 참조 블록을 식별할 수도 있다.
모션 추정 유닛 (222) 은 현재 픽처에서의 현재 블록의 포지션에 대한 참조 픽처들에서의 참조 블록들의 포지션들을 정의하는 하나 이상의 모션 벡터 (MV) 들을 형성할 수도 있다. 모션 추정 유닛 (222) 은 그 후 모션 벡터들을 모션 보상 유닛 (224) 에 제공할 수도 있다. 예를 들어, 단방향 인터-예측에 대해, 모션 추정 유닛 (222) 은 단일 모션 벡터를 제공할 수도 있는 반면, 양방향 인터-예측에 대해, 모션 추정 유닛 (222) 은 2 개의 모션 벡터들을 제공할 수도 있다. 그 후, 모션 보상 유닛 (224) 은 모션 벡터들을 사용하여 예측 블록을 생성할 수도 있다. 예를 들어, 모션 보상 유닛 (224) 은 모션 벡터를 사용하여 참조 블록의 데이터를 취출할 수도 있다. 다른 예로서, 모션 벡터가 분수 샘플 정밀도를 갖는다면, 모션 보상 유닛 (224) 은 하나 이상의 보간 필터들에 따라 예측 블록에 대한 값들을 보간할 수도 있다. 또한, 양방향 인터-예측에 대해, 모션 보상 유닛 (224) 은 개개의 모션 벡터에 의해 식별된 2 개의 참조 블록들에 대한 데이터를 취출하고, 예를 들어 샘플 별 평균화 또는 가중된 평균화를 통해 취출된 데이터를 결합할 수도 있다.
또 다른 예로서, 인트라-예측 또는 인트라-예측 코딩에 대해, 인트라-예측 유닛 (226) 은 현재 블록에 이웃하는 샘플들로부터 예측 블록을 생성할 수도 있다. 예를 들어, 방향성 모드들에 대해, 인트라-예측 유닛 (226) 은 일반적으로 이웃하는 샘플들의 값들을 수학적으로 결합하고 현재 블록에 걸쳐 정의된 방향에서 이들 계산된 값들을 파퓰레이트하여 예측 블록을 생성할 수도 있다. 또 다른 예로서, DC 모드에 대해, 인트라-예측 유닛 (226) 은 현재 블록에 대한 이웃하는 샘플들의 평균을 계산하고 예측 블록을 생성하여 예측 블록의 각각의 샘플에 대해 이러한 결과의 평균을 포함할 수도 있다.
모드 선택 유닛 (202) 은 예측 블록을 잔차 생성 유닛 (204) 에 제공한다. 잔차 생성 유닛 (204) 은 비디오 데이터 메모리 (230) 로부터의 현재 블록의 원시의, 코딩되지 않은 버전 및 모드 선택 유닛 (202) 으로부터의 예측 블록을 수신한다. 잔차 생성 유닛 (204) 은 현재 블록과 예측 블록 사이의 샘플 별 차이를 계산한다. 결과의 샘플 별 차이는 현재 블록에 대한 잔차 블록을 정의한다. 일부 예들에서, 잔차 생성 유닛 (204) 은 또한 잔차 차분 펄스 코드 변조 (residual differential pulse code modulation; RDPCM) 를 사용하여 잔차 블록을 생성하기 위해 잔차 블록에서의 샘플 값들 사이의 차이를 결정할 수도 있다. 일부 예들에서, 잔차 생성 유닛 (204) 은 이진 감산을 수행하는 하나 이상의 감산 회로들을 사용하여 형성될 수도 있다.
모드 선택 유닛 (202) 이 CU들을 PU들로 파티셔닝하는 예들에서, 각각의 PU 는 루마 예측 유닛 및 대응하는 크로마 예측 유닛들과 연관될 수도 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 다양한 사이즈를 갖는 PU들을 지원할 수도 있다. 위에 표시된 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있고 PU 의 사이즈는 PU 의 루마 예측 유닛의 사이즈를 지칭할 수도 있다. 특정 CU 의 사이즈가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 는 인트라-예측을 위해 2Nx2N 또는 NxN 의 PU 사이즈들을 지원하고, 인터-예측을 위해 2Nx2N, 2NxN, Nx2N, NxN, 기타 등등의 대칭적인 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한, 인터-예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 사이즈에 대한 비대칭적 파티셔닝을 지원할 수도 있다.
모드 선택 유닛 (202) 이 CU 를 PU들로 추가로 파티셔닝하지 않는 예들에서, 각각의 CU 는 루마 코딩 블록 및 대응하는 크로마 코딩 블록들과 연관될 수도 있다. 위에서와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 2N×2N, 2N×N 또는 N×2N 의 CU 사이즈를 지원할 수도 있다.
인트라-블록 카피 모드 코딩, 아핀 모드 코딩 및 선형 모델 (LM) 모드 코딩과 같은 다른 비디오 코딩 기법들에 대해, 몇몇 예들에서와 같이, 모드 선택 유닛 (202) 은 코딩 기술과 연관된 개개의 유닛들을 통해, 인코딩될 현재 블록에 대한 예측 블록을 생성한다. 팔레트 모드 코딩과 같은 일부 예에서, 모드 선택 유닛 (202) 은 예측 블록을 생성하지 않을 수도 있고, 대신에 선택된 팔레트에 기초하여 블록을 재구성하는 방식을 표시하는 신택스 엘리먼트들을 생성할 수도 있다. 이러한 모드들에서, 모드 선택 유닛 (202) 은 이들 신택스 엘리먼트들을 인코딩될 엔트로피 인코딩 유닛 (220) 에 제공할 수도 있다.
상술한 바와 같이, 잔차 생성 유닛 (204) 은 현재 블록 및 대응하는 예측 블록에 대해 비디오 데이터를 수신한다. 잔차 생성 유닛 (204) 은 그 후 현재 블록에 대한 잔차 블록을 생성한다. 잔차 블록을 생성하기 위해, 잔차 생성 유닛 (204) 은 현재 블록과 예측 블록 사이의 샘플 별 차이들을 계산한다.
변환 프로세싱 유닛 (206) 은 잔차 블록에 하나 이상의 변환들을 적용하여 변환 계수들의 블록 (본 명세서에서는 "변환 계수 블록" 으로 지칭됨) 을 생성한다. 변환 프로세싱 유닛 (206) 은 다양한 변환들을 잔차 블록에 적용하여 변환 계수 블록을 형성할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (206) 은 이산 코사인 변환 (DCT), 방향성 변환, Karhunen-Loeve 변환 (KLT) 또는 개념적으로 유사한 변환을 잔차 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (206) 은 잔차 블록에 대한 다중 변환들, 예를 들어 1 차 변환 및 2 차 변환, 예컨대 회전 변환을 수행할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (206) 은 잔차 블록에 변환들을 적용하지 않는다.
양자화 유닛 (208) 은 양자화된 변환 계수 블록을 생성하기 위해 변환 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 유닛 (208) 은 현재 블록과 연관된 양자화 파라미터 (QP) 값에 따라 변환 계수 블록의 변환 계수들을 양자화할 수도 있다. 비디오 인코더 (202) 는 (예를 들어, 모드 선택 유닛 (202) 을 통해) CU 와 연관된 QP 값을 조정함으로써 현재 블록과 연관된 계수 블록들에 적용된 양자화도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있으며, 따라서 양자화된 변환 계수들은 변환 프로세싱 유닛 (206) 에 의해 생성된 원래의 변환 계수들보다 더 낮은 정확도를 가질 수도 있다.
역 양자화 유닛 (210) 및 역 변환 프로세싱 유닛 (212) 은 각각 양자화된 변환 계수 블록에 역 양자화 및 역 변환들을 적용하여, 변환 계수 블록으로부터 잔차 블록을 재구성할 수도 있다. 재구성 유닛 (214) 은 모드 선택 유닛 (202) 에 의해 생성된 예측 블록 및 재구성된 잔차 블록에 기초하여 (잠재적으로 어느 정도의 왜곡을 가짐에도 불구하고) 현재 블록에 대응하는 재구성된 블록을 생성할 수도 있다 . 예를 들어, 재구성 유닛 (214) 은 재구성된 잔차 블록의 샘플들을, 모드 선택 유닛 (202) 에 의해 생성된 예측 블록으로부터의 대응하는 샘플들에 가산하여 재구성된 블록을 생성할 수도 있다.
필터 유닛 (216) 은 재구성된 블록에 대해 하나 이상의 필터 동작들을 수행할 수도 있다. 예를 들어, 필터 유닛 (216) 은 CU들의 에지들을 따라 블록크니스 아티팩트 (blockiness artifacts) 를 감소시키기 위해 디블록킹 동작들을 수행할 수도 있다. 파선으로 도시된 바와 같이, 필터 유닛 (216) 의 동작들은 일부 예들에서 스킵될 수도 있다.
비디오 인코더 (200) 는 DPB (218) 에 재구성된 블록들을 저장한다. 예를 들어, 필터 유닛 (216) 의 동작들이 필요하지 않은 예들에서, 재구성 유닛 (214) 은 재구성된 블록들을 DPB (218) 에 저장할 수도 있다. 필터 유닛 (216) 의 동작들이 필요한 예들에서, 필터 유닛 (216) 은 필터링된 재구성된 블록들을 DPB (218) 에 저장할 수도 있다. 모션 추정 유닛 (222) 및 모션 보상 유닛 (224) 은 재구성된 (및 잠재적으로 필터링된) 블록들로부터 형성된 DPB (218) 로부터 참조 픽처를 취출하여, 후속하여 인코딩된 픽처들의 블록들을 인터-예측할 수도 있다. 또한, 인트라-예측 유닛 (226) 은 현재 픽처에서의 다른 블록들을 인트라-예측하기 위해 현재 픽처의 DPB (218) 에서 재구성된 블록들을 사용할 수도 있다.
일반적으로, 엔트로피 인코딩 유닛 (220) 은 비디오 인코더 (200) 의 다른 기능성 컴포넌트들로부터 취출된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (220) 은 양자화 유닛 (208) 으로부터 양자화된 변환 계수 블록들을 엔트로피 인코딩할 수도 있다. 또 다른 예로서, 엔트로피 인코딩 유닛 (220) 은 모드 선택 유닛 (202) 으로부터 예측 신택스 엘리먼트들 (예를 들어, 인트라-예측에 대한 인트라-모드 정보 또는 인터-예측에 대한 모션 정보) 를 엔트로피 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (220) 은 엔트로피 인코딩된 데이터를 생성하기 위해, 비디오 데이터의 또 다른 예인, 신택스 엘리먼트들에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (220) 은 CABAC 동작, 컨텍스트 적응적 가변 길이 코딩 (CAVLC) 동작, V2V (variable-to-variable) 길이 코딩 동작, 신택스 기반 컨텍스트 적응형 바이너리 산술 코딩 (SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수-골롬 인코딩 동작, 또는 다른 타입의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (220) 은 신택스 엘리먼트들이 엔트로피 인코딩되지 않은 바이패스 모드에서 동작할 수도 있다.
비디오 인코더 (200) 는 픽처 또는 슬라이스의 블록들을 재구성하는데 필요한 엔트로피 인코딩된 신택스 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다. 특히, 엔트로피 인코딩 유닛 (220) 이 비트스트림을 출력할 수도 있다.
상술한 동작들은 블록과 관련하여 설명된다. 이러한 설명은 루마 코딩 블록 및/또는 크로마 코딩 블록들에 대한 동작들인 것으로 이해되어야 한다. 상술한 바와 같이, 일부 예들에서, 루마 코딩 블록 및 크로마 코딩 블록들은 CU의 루마 및 크로마 성분들이다. 일부 예들에서, 루마 코딩 블록 및 크로마 코딩 블록들은 PU 의 루마 및 크로마 성분들이다.
일부 예들에서, 루마 코딩 블록에 대해 수행되는 동작들은 크로마 코딩 블록에 대해 반복될 필요가 없다. 일 예로서, 크로마 블록들에 대한 모션 벡터 (MV) 및 참조 픽처를 식별하기 위해 루마 코딩 블록에 대한 MV 및 참조 픽처를 식별하는 동작들이 반복될 필요는 없다. 오히려, 루마 코딩 블록에 대한 MV 는 크로마 블록들에 대한 MV 를 결정하도록 스케일링될 수도 있고, 참조 픽처는 동일할 수도 있다. 다른 예로서, 인트라-예측 프로세스는 루마 코딩 블록 및 크로마 코딩 블록에 대해 동일할 수도 있다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리를 포함하여 비디오 데이터를 인코딩하도록 구성된 디바이스, 및 회로부에서 구현되고 상술한 상이한 코딩 모드들과 인트라-블록 카피 사이의 다양한 상호동작들을 위한 동작들을 포함하는 본 개시에 설명된 예시의 인코딩 동작들을 수행하도록 구성된 하나 이상의 프로세싱 유닛들을 나타낸다.
도 4 는 본 개시의 기법들을 수행할 수도 있는 예시의 비디오 디코더 (300) 를 도시하는 블록 다이어그램이다. 도 4 는 설명의 목적을 위해 제공되며, 본 개시에서 넓게 예시화되고 설명된 바와 같은 기법들에 대해 제한적이지 않다. 설명의 목적으로, 본 개시는 비디오 디코더 (300) 가 JEM 및 HEVC 의 기법들에 따라 기술되는 것을 설명한다. 그러나, 본 개시의 기법들은 다른 비디오 코딩 표준들로 구성되는 비디오 코딩 디바이스들에 의해 수행될 수도 있다.
도 4 의 예에서, 비디오 디코더 (300) 는 코딩된 픽처 버퍼 (CPB)(320), 엔트로피 디코딩 유닛 (302), 예측 프로세싱 유닛 (304), 역 양자화 유닛 (306), 역 변환 프로세싱 유닛 (310), 재구성 유닛 (310), 필터 유닛 (312), 및 디코딩된 픽처 버퍼 (DPB)(314) 를 포함한다. 예측 프로세싱 유닛 (304) 은 모션 보상 유닛 (316) 및 인트라-예측 유닛 (318) 을 포함한다. 예측 프로세싱 유닛 (304) 은 다른 예측 모드들에 따라 예측을 수행하기 위해 부가적인 유닛들을 포함할 수도 있다. 예를 들어, 예측 프로세싱 유닛 (304) 은 팔레트 유닛, 인트라-블록 카피 유닛 (모션 보상 유닛 (316) 의 일부를 형성할 수도 있음), 아핀 유닛, 선형 모델 (LM) 유닛 등을 포함할 수도 있다. 다른 예들에서, 비디오 디코더 (300) 는 더 많거나, 더 적거나, 또는 상이한 기능성 컴포넌트들을 포함할 수도 있다.
CPB 메모리 (320) 는, 비디오 디코더 (300) 의 컴포넌트들에 의해 디코딩될 인코딩된 비디오 비트스트림과 같은 비디오 데이터를 저장할 수도 있다. CPB 메모리 (320) 에 저장된 비디오 데이터는, 예를 들어 컴퓨터 판독가능 매체 (110)(도 1) 로부터 획득될 수도 있다. CPB 메모리 (320) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터 (예를 들어, 신택스 엘리먼트들) 를 저장하는 CPB 를 포함할 수도 있다. 또한, CPB 메모리 (320) 는 비디오 디코더 (300) 의 다양한 유닛들로부터의 출력들을 나타내는 일시적인 데이터와 같은, 코딩된 픽처의 신택스 엘리먼트들 이외의 비디오 데이터를 저장할 수도 있다. DPB (314) 는 일반적으로, 인코딩된 비디오 비트스트림의 후속 데이터 또는 픽처들을 디코딩할 때, 참조 비디오 데이터로서 비디오 디코더 (300) 가 출력하고 및/또는 사용할 수도 있는 디코딩된 픽처들을 저장한다. CPB 메모리 (320) 및 DPB (314) 는 다양한 메모리 디바이스들, 예컨대 동기식 랜덤 액세스 메모리 (SDRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM) 을 포함하는 DRAM, 또는 다른 타입들의 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다. CPB 메모리 (320) 및 DPB (314) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, CPB 메모리 (320) 는 비디오 디코더 (300) 의 다른 컴포넌트들과 온-칩이거나 그 컴포넌트들에 대하여 오프-칩일 수도 있다.
부가적으로 또는 대안으로, 일부 예들에서, 비디오 디코더 (300) 는 메모리 (120)(도 1) 로부터 코딩된 비디오 데이터를 취출할 수도 있다. 즉, 메모리 (120) 는 CPB 메모리 (320) 로 위에서 논의된 바와 같이 데이터를 저장할 수도 있다. 마찬가지로, 메모리 (120) 는 비디오 디코더 (300) 의 기능성의 일부 또는 전부가 비디오 디코더 (300) 의 프로세싱 회로부에 의해 실행되는 소프트웨어에서 구현될 때, 비디오 디코더 (300) 에 의해 실행될 명령들을 저장할 수도 있다.
도 4 에 나타낸 다양한 유닛들은 비디오 디코더 (300) 에 의해 수행되는 동작들의 이해를 보조하기 위해 도시된다. 이 유닛들은 고정 기능 회로들, 프로그램가능 회로들, 또는 이들의 조합으로서 구현될 수도 있다. 도 3 과 유사하게, 고정 기능 회로들은 특정 기능성을 제공하는 회로들을 지칭하며, 수행될 수 있는 동작들에 대해 미리설정된다. 프로그램가능 회로들은 다양한 태스크들을 수행하도록 프로그램될 수 있는 회로들을 지칭하며, 수행될 동작들에서 유연한 기능성을 제공한다. 예를 들어, 프로그램가능 회로들은 프로그램가능 회로들이 소프트웨어 또는 펌웨어의 명령들에 의해 정의된 방식으로 동작하게 하는 소프트웨어 또는 펌웨어를 실행할 수도 있다. 고정 기능 회로들은 소프트웨어 명령들을 (예를 들어, 파라미터들을 수신하거나 파라미터들을 출력하기 위해) 실행할 수도 있지만, 고정 기능 회로들이 수행하는 동작 타입들은 일반적으로 불변이다. 일부 예들에서, 유닛들의 하나 이상은 별개의 회로 블록들 (고정 기능 또는 프로그램가능) 일 수도 있고, 일부 예들에서, 하나 이상의 유닛들은 집적 회로들일 수도 있다.
비디오 디코더 (300) 는 프로그램가능 회로들로부터 형성된, ALU 들, EFU들, 디지털 회로들, 아날로그 회로들, 및/또는 프로그램가능 코어들을 포함할 수도 있다. 비디오 디코더 (300) 의 동작들이 프로그램가능 회로들 상에서 실행하는 소프트웨어에 의해 수행되는 예들에서, 온-칩 또는 오프-칩 메모리는 비디오 디코더 (300) 가 수신하고 실행하는 소프트웨어의 명령들 (예를 들어, 오브젝트 코드) 을 저장할 수도 있다.
엔트로피 디코딩 유닛 (302) 은 인코딩된 비디오 데이터를 CPB 로부터 수신하고, 그 비디오 데이터를 엔트로피 디코딩하여 신택스 엘리먼트들을 재생할 수도 있다. 예측 프로세싱 유닛 (304), 역 양자화 유닛 (306), 역 변환 프로세싱 유닛 (308), 재구성 유닛 (310), 및 필터 유닛 (312) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다.
일반적으로, 비디오 디코더 (300) 는 블록 별 (block-by-block ) 단위로 픽처를 재구성한다. 비디오 디코더 (300) 는 개별적으로 (현재 재구성되고 있는, 즉 디코딩되는 블록이 "현재 블록" 으로 지칭될 수도 있는 경우) 각각의 블록에 대해 재구성 동작을 수행할 수도 있다.
엔트로피 디코딩 유닛 (302) 은 양자화 파라미터 (QP) 및/또는 변환 모드 표시(들)과 같은 변환 정보 뿐만 아니라, 양자화된 변환 계수 블록의 양자화된 변환 계수들을 정의하는 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 역 양자화 유닛 (306) 은 양자화된 변환 계수 블록과 연관된 QP 를 사용하여, 양자화도 및 유사하게, 적용할 역 양자화 유닛 (306) 에 대한 역 양자화도를 결정할 수도 있다. 역 양자화 유닛 (306) 은 예를 들어, 양자화된 변환 계수들을 역 양자화하기 위해 비트단위 (bitwise) 좌측-시프트 동작을 수행할 수도 있다. 따라서, 역 양자화 유닛 (306) 은 변환 계수들을 포함하는 변환 계수 블록을 형성할 수도 있다.
역 양자화 유닛 (306) 이 변환 계수 블록을 형성한 후, 역변환 프로세싱 유닛 (308) 은 현재 블록과 연관된 잔차 블록을 생성하기 위해 변환 계수 블록에 하나 이상의 역 변환들을 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (308) 은 역 DCT, 역 정수 변환, 역 Karhunen-Loeve 변환 (KLT), 역 회전 변환, 역 방향성 변환, 또는 다른 역 변환을 계수 블록에 적용할 수도 있다.
또한, 예측 프로세싱 유닛 (304) 은 엔트로피 디코딩 유닛 (302) 에 의해 엔트로피 디코딩된 예측 정보 신택스 엘리먼트들에 따라 예측 블록을 생성한다. 예를 들어, 예측 정보 신택스 엘리먼트들이 현재 블록이 인터-예측된 것을 표시하면, 모션 보상 유닛 (316) 은 예측 블록을 생성할 수도 있다. 이 경우, 예측 정보 신택스 엘리먼트들은 참조 블록을 취출할 DPB (314) 에서의 참조 픽처뿐만 아니라 현재 픽처에서의 현재 블록의 위치에 대한 참조 픽처에서의 참조 블록의 위치를 식별하는 모션 벡터를 표시할 수도 있다. 모션 보상 유닛 (316) 은 일반적으로 모션 보상 유닛 (224) (도 3) 과 관련하여 설명된 것과 실질적으로 유사한 방식으로 인터-예측 프로세스를 수행할 수도 있다.
다른 예로서, 예측 정보 신택스 엘리먼트가 현재 블록이 인트라-예측되는 것을 표시하면, 인트라-예측 유닛 (318) 은 예측 정보 신택스 엘리먼트들에 의해 표시된 인트라-예측 모드에 따라 예측 블록을 생성할 수도 있다. 다시, 인트라-예측 유닛 (318) 은 일반적으로 인트라-예측 유닛 (226)(도 3) 과 관련하여 설명된 것과 실질적으로 유사한 방식으로 인트라-예측 프로세스를 수행할 수도 있다. 인트라-예측 유닛 (318) 은 DPB (314) 로부터 현재 블록에 이웃하는 샘플들의 데이터를 취출할 수도 있다.
재구성 유닛 (310) 은 예측 블록 및 잔차 블록을 사용하여 현재 블록을 재구성한다. 예를 들어, 재구성 유닛 (310) 은 잔차 블록의 샘플들을 예측 블록의 대응하는 샘플들에 가산하여 현재 블록을 재구성할 수도 있다.
필터 유닛 (312) 은 재구성된 블록들에 대해 하나 이상의 필터 동작들을 수행할 수도 있다. 예를 들어, 필터 유닛 (312) 은 재구성된 블록들의 에지들을 따라 블록크니스 아티팩트를 감소시키기 위해 디블록킹 동작들을 수행할 수도 있다. 도 4 에 파선으로 도시된 바와 같이, 필터 유닛 (312) 의 동작들이 모든 예들에서 반드시 수행되지는 않는다.
비디오 디코더 (300) 는 DPB (314) 에 재구성된 블록들을 저장할 수도 있다. 위에 논의된 바와 같이, DPB (314) 는 예측 프로세싱 유닛 (304) 에 인트라-예측을 위한 현재 픽처의 샘플들 및 후속 모션 보상을 위해 이전에 디코딩된 픽처들와 같은 참조 정보를 제공할 수도 있다. 또한, 비디오 디코더 (300) 는 도 1 의 디스플레이 디바이스 (118) 와 같은 디스플레이 디바이스 상으로의 후속 프리젠테이션을 위해 DPB 로부터 디코딩된 픽처들을 출력할 수도 있다.
이러한 방식으로, 비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로부에서 구현되고 상술한 상이한 코딩 모드들과 인트라-블록 카피 사이의 다양한 상호동작들을 위한 동작들을 포함하는 본 개시에 설명된 예시의 디코딩 동작들을 수행하도록 구성된 하나 이상의 프로세싱 유닛들을 포함하는 비디오 디코딩 디바이스의 예를 나타낸다.
도 19 는 비디오 데이터를 코딩하는 예시의 방법을 도시하는 플로우챠트이다. 설명을 용이하게 하기 위해, 예시의 기법들은 코딩 (예를 들어, 인코딩 또는 디코딩) 하도록 구성된 비디오 코더 (예를 들어, 비디오 인코더 (200) 또는 비디오 디코더 (300)) 와 관련하여 설명된다. 도 19 에 도시된 예에서, 비디오 코더는 메모리 (예를 들어, 비디오 데이터 메모리 (230), DPB (218), 또는 비디오 인코더 (200) 를 위한 일부 다른 비디오 데이터 메모리, 또는 CPB 메모리 (320), DPB (314), 또는 비디오 디코더 (300) 를 위한 일부 다른 비디오 데이터 메모리) 로부터 제 1 컬러 성분 및 제 2 컬러 성분의 샘플들과 같은 비디오 데이터를 취출할 수도 있다.
비디오 인코더 (200) 는 제 1 파티션 트리에 따라 제 1 컬러 성분의 샘플들을 파티셔닝하고 제 2 파티션 트리에 따라 제 2 컬러 성분의 샘플들을 파티셔닝할 수도 있다. 비디오 인코더 (200) 는 비디오 디코더 (300) 가 어느 블록들에 대해 비디오 디코더 (300) 가 정보를 수신하고 있는지를 결정할 수 있도록 파티셔닝을 표시하는 비디오 디코더 (300) 정보를 시그널링할 수도 있다.
본 개시에 설명된 예들에서, 제 2 파티션 트리는 제 1 파티션 트리와 상이하고, 제 2 컬러 성분은 제 1 컬러 성분과 상이하다. 제 1 컬러 성분은 루마 성분이고, 제 2 컬러 성분은 크로마 성분이거나, 그 역 또한 마찬가지이다. 일 예로서, 비디오 코더는 도 2b, 도 17a, 및 도 18a 에 도시된 바와 같이, 루마 QTBT 구조에 따라 제 1 컬러 성분의 샘플들을 파티셔닝할 수도 있다. 비디오 코더는 도 17b 에 도시된 바와 같이, 크로마 QTBT 구조에 따라 제 2 컬러 성분의 샘플들을 파티셔닝할 수도 있다.
비디오 코더는 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정할 수도 있다 (800). 상술한 바와 같이, 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리 (예를 들어, 도 2b, 도 17a, 및 도 18a 의 루마 QTBT 구조) 에 따라 제 1 컬러 성분의 샘플들을 파티셔닝하는 것으로부터 생성되고, 제 2 컬러 성분의 블록은 제 2 파티션 트리 (예를 들어, 도 17b 의 크로마 QTBT 구조) 에 따라 제 2 컬러 성분의 샘플들을 파티셔닝하는 것으로부터 생성된다. 제 1 컬러 성분의 복수의 블록들 및 제 2 컬러 성분의 블록은 각각 비디오 데이터의 픽처의 동일한 코딩 블록의 일부일 수도 있다.
예를 들어, 제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하기 위해, 비디오 코더는 제 2 컬러 성분의 블록 및 제 1 컬러 성분의 복수의 블록들의 위치, 제 1 컬러 성분의 블록들의 샘플 값들 및 제 2 컬러 성분의 블록의 샘플 값들이 함께 코딩 블록의 샘플들의 샘플 값들을 형성하는지 여부 등을 결정할 수도 있다. 예로서, 복수의 루마 블록들을 포함하는 루마 파티션 (701) 은 크로마 블록 (706) 과 대응한다. 루마 파티션 (701) 및 크로마 블록 (706) 의 샘플 값들은 함께 CU 의 샘플들의 샘플 값들을 형성한다 (예를 들어, 루마 파티션 (701) 의 제 1 샘플 및 크로마 블록 (706) 의 제 1 샘플은 함께 CU 의 제 1 샘플을 형성하고, 루마 파티션 (701) 의 제 2 샘플 및 크로마 블록 (706) 의 제 2 샘플은 함께 CU 의 제 2 샘플을 형성하는 등).
비디오 코더는 제 1 컬러 성분의 복수의 블록들의 블록에 각각 대응하는 제 2 컬러 성분의 서브-블록들을 생성하기 위해 제 1 파티션 트리에 기초하여 제 2 컬러 성분의 블록을 파티셔닝할 수도 있다 (802). 예를 들어, 도 18b 에 도시된 바와 같이, 비디오 코더는 서브-블록들 (708A 및 708B) 을 포함하는 크로마 파티션 (710) 에서 크로마 블록 (706) 을 파티셔닝할 수도 있다. 크로마 서브-블록들 (708A 및 708B) 은 각각 루마 블록 (704A) 및 루마 블록 (704B) 에 대응한다. 예를 들어, 루마 블록 (704A) 의 제 1 샘플 및 크로마 서브-블록 (708A) 의 제 1 샘플은 함께 CU 의 제 1 샘플을 형성하고, 루마 블록 (704A) 의 제 2 샘플 및 크로마 서브-블록 (708A) 의 제 2 샘플은 함께 CU 의 제 2 샘플을 형성하는 등이다. 유사하게, 루마 블록 (704B) 의 제 1 샘플 및 크로마 서브-블록 (708B) 의 제 1 샘플은 함께 CU 의 제 3 샘플을 형성하고, 루마 블록 (704B) 의 제 2 샘플 및 크로마 서브-블록 (708B) 의 제 2 샘플은 함께 CU 의 제 4 샘플을 형성하는 등이다.
하나 이상의 예들에서, 비디오 코더는 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 에서 예측되는 제 2 컬러 성분의 서브-블록들의 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정할 수도 있다 (804). 예를 들어, 비디오 코더는 제 2 컬러 성분의 블록이 (예를 들어, 참조 픽처 리스트로 참조 인덱스와 같은 시그널링된 정보에 기초하여) 제 1 컬러 성분의 복수의 블록들 중 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들을 상속하는 것이라고 결정할 수도 있다.
제 2 컬러 성분의 블록이 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들을 상속하는 것이라고 결정하는 것에 응답하여, 비디오 코더는 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 IBC 예측 모드에서 예측되는 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정할 수도 있다. 예를 들어, 비디오 코더는 크로마 서브-블록들 (708A 및 708B) 이 루마 블록들 (704A 및 704B) 의 블록 벡터들을 상속하기 위한 것이라고 결정할 수도 있고, 비디오 코더는 루마 블록들 (704A 및 704B) 의 블록 벡터들에 기초하여 크로마 서브-블록들 (708A 및 708B) 에 대한 블록 벡터들을 결정할 수도 있다.
일부 예들에서, 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하기 위해, 비디오 코더는 제 1 컬러 성분 및 제 2 컬러 성분의 서브-샘플링 포맷에 기초하여 제 1 컬러 성분의 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들을 스케일링하도록 구성될 수도 있다. 예를 들어, 도 18a 및 18b 에서, 4:2:2 서브샘플링 포맷이 사용되고, 따라서 비디오 코더는 루마 블록들 (704A 및 704B) 에 대한 블록 벡터들의 x- 및 y- 성분 양자 모두를 분할하여 서브-블록들 (708A 및 708B) 에 대한 블록 벡터들을 각각 결정한다.
또한, 일부 예들에서, 크로마 서브-블록들 중 하나에 대한 복수의 블록 벡터들 중 적어도 하나는 다른 크로마 서브-블록들에 대한 복수의 블록 벡터들 중 다른 것과 상이하다. 예를 들어, 크로마 서브-블록 (708A) 에 대한 블록 벡터는 블록 벡터 크로마 서브-블록 (708B) 과 상이하다.
비디오 코더는 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 코딩하도록 구성될 수도 있다 (806). 비디오 코더가 비디오 인코더 (200) 인 예들에서, 비디오 인코더 (200) 는 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 인코딩하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (200) 는 하나 이상의 서브-블록들에 대한 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하고, 개개의 하나 이상의 서브-블록들로부터 하나 이상의 예측 블록들을 감산하여 하나 이상의 잔차 블록들을 생성하며, 그리고 하나 이상의 잔차 블록들을 표시하는 정보를 시그널링하도록 구성될 수도 있다.
비디오 코더가 비디오 디코더 (300) 인 예들에서, 비디오 디코더 (300) 는 하나 이상의 결정된 블록 벡터들에 기초하여 제 2 컬러 성분의 블록을 디코딩하도록 구성될 수도 있다. 예를 들어, 비디오 디코더 (300) 는 하나 이상의 서브-블록들에 대한 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하고, 하나 이상의 서브-블록들에 대해 (예를 들어, 시그널링된 정보에 기초하여) 하나 이상의 잔차 블록들을 결정하며, 그리고 하나 이상의 잔차 블록들을 개개의 하나 이상의 예측 블록들에 부가하여 제 2 컬러 성분의 블록의 서브-블록들을 재구성하도록 구성될 수도 있다.
상술한 바와 같이, 본 개시는 비디오 코딩 기법들로 IBC 예측 모드를 적용하는 기법들을 설명한다. 예를 들어, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 제 1 컬러 성분 또는 제 2 컬러 성분의 제 2 픽처에서의 제 2 블록이 IBC 예측 모드에서 예측되지 않는다고 결정하고, 제 2 블록에 대한 모션 벡터 정밀도의 제 1 세트를 결정하고, 제 1 컬러 성분 또는 제 2 컬러 성분의 제 3 블록이 IBC 예측 모드에서 예측된다고 결정하며, 그리고 제 3 블록에 대한 모션 벡터의 제 2 세트를 결정하도록 구성될 수도 있으며, 여기서 모션 벡터 정밀도의 제 2 세트는 모션 벡터 정밀도의 제 1 세트의 서브세트이다.
다른 예로서, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 대안의 시간적 모션 벡터 예측 (ATMVP) 을 사용하여 제 1 컬러 성분 또는 제 2 컬러 성분의 제 2 픽처에서 제 2 블록이 예측된다고 결정하고, 제 2 블록 상에서 ATMVP 를 수행하기 위해 사용된 참조 픽처에서 하나 이상의 블록들을 결정하고, 참조 픽처에서의 하나 이상의 블록들 중 적어도 하나의 블록이 IBC 예측 모드에서 예측된다고 결정하며, 그리고 IBC 예측 모드에서 예측되는 참조 픽처에서 적어도 하나의 블록을 위해 사용된 블록 벡터를 사용하지 않으면서 제 2 블록에 대한 ATMVP 동작을 수행할 수도 있다.
다른 예로서, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 제 2 픽처에서의 제 2 블록이 IBC 예측 모드에서 코딩된다고 결정하고, 제 2 블록이 IBC 예측 모드에서 코딩된다는 결정에 기초하여 제 2 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 하나로 구성될 수도 있다. 예를 들어, 비디오 인코더 (200) 는 제 2 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보를 시그널링하지 않을 수도 있고, 비디오 디코더 (300) 는 제 2 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보를 파싱하지 않을 수도 있다.
다른 예로서, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 제 2 픽처에서의 제 2 블록이 IBC 예측 모드에서 코딩된다고 결정하고, 제 2 블록이 IBC 예측 모드에서 코딩된다는 결정에 기초하여 제 2 블록에 대해 조명 보상 (IC) 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 하나로 구성될 수도 있다. 예를 들어, 비디오 인코더 (200) 는 제 2 블록에 대해 IC 모드가 인에이블되는지 여부를 표시하는 정보를 시그널링하지 않을 수도 있고, 비디오 디코더 (300) 는 제 2 블록에 대해 IC 모드가 인에이블되는지 여부를 표시하는 정보를 파싱하지 않을 수도 있다.
다른 예로서, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 제 2 픽처에서의 제 2 블록이 제 2 픽처를 참조하는 벡터로 코딩된다고 결정하도록 구성될 수도 있고, 제 2 블록이 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 제 2 블록에 대한 양방향 광학 플로우 (BIO) 를 수행하는 것을 회피할 수도 있다.
다른 예로서, 도 19 의 제 2 컬러 성분의 블록이 제 1 픽처에서의 제 1 블록이라고 가정한다. 일부 예들에서, 비디오 코더는 제 2 픽처에서의 제 2 블록이 제 2 픽처를 참조하는 벡터로 코딩된다고 결정하도록 구성될 수도 있고, 제 2 블록이 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 제 2 블록에 대한 쌍방향 매칭을 수행하는 것을 회피할 수도 있다.
예시에 의존하여, 본 명세서에서 설명된 기법들 중 임의의 것의 소정의 액트들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가되거나 병합되거나 또는 제거될 수도 있음 (예를 들어, 설명된 모든 액트들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 소정의 예들에서, 액트들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 컴퓨터 판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 이를 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예를 들어, 통신 프로토콜에 따라, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
한정이 아닌 예로서, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 캐리어파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않지만 대신 비일시적인 유형의 저장 매체들로 지향됨이 이해되어야 한다. 본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크(disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 또한, 상기의 조합은 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서, 이를 테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 또는 다른 등가의 집적 또는 이산 로직 회로부에 의해 실행될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 전술한 구조 중 임의의 것 또는 본원에 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 부가적으로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성되거나 또는 결합된 코덱에서 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들어, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술한 바와 같이, 다양한 유닛들이 코덱 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술한 하나 이상의 프로세서들을 포함하는 상호동작 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (30)
- 비디오 데이터를 코딩하는 방법으로서,
제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 단계로서, 상기 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 상기 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 상기 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 상기 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하는 단계;
상기 제 1 컬러 성분의 상기 복수의 블록들의 블록에 각각 대응하는 상기 제 2 컬러 성분의 서브-블록들을 생성하기 위해 상기 제 1 파티션 트리에 기초하여 상기 제 2 컬러 성분의 블록을 파티셔닝하는 단계;
상기 제 1 컬러 성분의 상기 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 상기 제 2 컬러 성분의 상기 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하는 단계; 및
하나 이상의 결정된 상기 블록 벡터들에 기초하여 상기 제 2 컬러 성분의 상기 블록을 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하는 단계는 복수의 서브-블록들에 대한 복수의 블록 벡터들을 결정하는 단계를 포함하고, 상기 서브-블록들 중 하나에 대한 상기 복수의 블록 벡터들 중 적어도 하나는 상기 서브-블록들 중 또 다른 하나에 대한 상기 복수의 블록 벡터들 중 또 다른 하나와 상이한, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하는 단계는 상기 제 1 컬러 성분 및 상기 제 2 컬러 성분의 서브-샘플링 포맷에 기초하여 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 스케일링하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 1 컬러 성분은 루마 성분을 포함하고, 상기 제 2 컬러 성분은 크로마 성분을 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 블록이 상기 제 1 컬러 성분의 상기 복수의 블록들 중 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 상속하는 것이라고 결정하는 단계를 더 포함하고,
상기 제 2 컬러 성분의 상기 서브-블록들 중 상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하는 단계는, 상기 제 2 컬러 성분의 블록이 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 상속하는 것이라고 결정하는 것에 응답하여, 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들에 기초하여 상기 IBC 예측 모드에서 예측되는 상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 1 컬러 성분의 상기 복수의 블록들 및 상기 제 2 컬러 성분의 상기 블록은 각각 상기 비디오 데이터의 픽처의 동일한 코딩 블록의 일부인, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 2 픽처에서의 제 2 블록이 상기 IBC 예측 모드에서 예측되지 않는다고 결정하는 단계;
상기 제 2 블록에 대한 모션 벡터 정밀도들의 제 1 세트를 결정하는 단계;
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 3 블록이 상기 IBC 예측 모드에서 예측된다고 결정하는 단계; 및
상기 제 3 블록에 대한 모션 벡터 정밀도들의 제 2 세트를 결정하는 단계를 더 포함하고,
상기 모션 벡터 정밀도들의 제 2 세트는 상기 모션 벡터 정밀도들의 제 1 세트의 서브세트인, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 2 픽처에서의 제 2 블록이 ATMVP (alternative temporal motion vector prediction) 를 사용하여 예측된다고 결정하는 단계;
상기 제 2 블록에 대해 ATMVP 를 수행하기 위해 사용된 참조 픽처에서의 하나 이상의 블록들을 결정하는 단계;
상기 참조 픽처에서의 상기 하나 이상의 블록들 중 적어도 하나의 블록이 상기 IBC 예측 모드에서 예측된다고 결정하는 단계; 및
상기 IBC 예측 모드에서 예측되는 상기 참조 픽처에서의 상기 적어도 하나의 블록을 위해 사용된 블록 벡터를 사용하지 않으면서 상기 제 2 블록에 대한 ATMVP 동작을 수행하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
제 2 픽처에서의 제 2 블록이 상기 IBC 예측 모드에서 코딩된다고 결정하는 단계; 및
상기 제 2 블록이 상기 IBC 예측 모드에서 코딩된다는 결정에 기초하여 상기 제 2 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나의 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
제 2 픽처에서의 제 2 블록이 상기 IBC 예측 모드에서 코딩된다고 결정하는 단계; 및
상기 제 2 블록이 상기 IBC 예측 모드에서 코딩된다는 결정에 기초하여 상기 제 2 블록에 대해 조명 보상 (IC) 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나의 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
제 2 픽처에서의 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩된다고 결정하는 단계; 및
상기 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 상기 제 2 블록 상에서 양방향 광학 플로우 (BIO) 를 수행하는 것을 회피하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 방법은,
제 2 픽처에서의 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩된다고 결정하는 단계; 및
상기 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 상기 제 2 블록 상에서 쌍방향 매칭 (bi-literal matching) 을 수행하는 것을 회피하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 블록을 코딩하는 단계는 상기 제 2 컬러 성분의 블록을 디코딩하는 단계를 포함하고, 상기 제 2 컬러 성분의 블록을 디코딩하는 단계는,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하는 단계;
상기 하나 이상의 서브-블록들에 대한 하나 이상의 잔차 블록들을 결정하는 단계; 및
상기 제 2 컬러 성분의 블록의 상기 서브-블록들을 재구성하기 위해 개개의 하나 이상의 예측 블록들에 상기 하나 이상의 잔차 블록들을 부가하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 제 2 컬러 성분의 블록을 코딩하는 단계는 상기 제 2 컬러 성분의 블록을 인코딩하는 단계를 포함하고, 상기 제 2 컬러 성분의 블록을 인코딩하는 단계는,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하는 단계;
하나 이상의 잔차 블록들을 생성하기 위해 상기 하나 이상의 서브-블록들의 개개의 서브-블록들로부터 상기 하나 이상의 예측 블록들을 감산하는 단계; 및
상기 하나 이상의 잔차 블록들을 표시하는 정보를 시그널링하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 비디오 데이터를 코딩하기 위한 디바이스로서,
상기 비디오 데이터의 제 1 컬러 성분의 샘플들 및 제 2 컬러 성분의 샘플들을 저장하도록 구성된 메모리; 및
프로그램가능 및 고정-기능 회로부 중 적어도 하나를 포함하는 비디오 코더를 포함하고, 상기 비디오 코더는,
제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 것으로서, 상기 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 상기 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 상기 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 상기 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하고;
상기 제 1 컬러 성분의 상기 복수의 블록들의 블록에 각각 대응하는 상기 제 2 컬러 성분의 서브-블록들을 생성하기 위해 상기 제 1 파티션 트리에 기초하여 상기 제 2 컬러 성분의 블록을 파티셔닝하고;
상기 제 1 컬러 성분의 상기 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 상기 제 2 컬러 성분의 상기 서브-블록들의 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하며; 그리고
하나 이상의 결정된 상기 블록 벡터들에 기초하여 상기 제 2 컬러 성분의 상기 블록을 코딩하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하기 위해, 상기 비디오 코더는 복수의 서브-블록들에 대한 복수의 블록 벡터들을 결정하도록 구성되고, 상기 서브-블록들 중 하나에 대한 상기 복수의 블록 벡터들 중 적어도 하나는 상기 서브-블록들 중 또 다른 하나에 대한 상기 복수의 블록 벡터들 중 또 다른 하나와 상이한, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하기 위해, 상기 비디오 코더는 상기 제 1 컬러 성분 및 상기 제 2 컬러 성분의 서브-샘플링 포맷에 기초하여 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 스케일링하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 1 컬러 성분은 루마 성분을 포함하고, 상기 제 2 컬러 성분은 크로마 성분을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스 - 제 15 항에 있어서,
상기 비디오 코더는,
상기 제 2 컬러 성분의 블록이 상기 제 1 컬러 성분의 상기 복수의 블록들 중 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 상속하는 것이라고 결정하도록 구성되고,
상기 제 2 컬러 성분의 상기 서브-블록들 중 상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하기 위해, 상기 비디오 코더는, 상기 제 2 컬러 성분의 블록이 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들을 상속하는 것이라고 결정하는 것에 응답하여, 상기 제 1 컬러 성분의 상기 복수의 블록들의 상기 하나 이상의 대응하는 블록들의 상기 하나 이상의 블록 벡터들에 기초하여 상기 IBC 예측 모드에서 예측되는 상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 블록 벡터들을 결정하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스 - 제 15 항에 있어서,
상기 제 1 컬러 성분의 상기 복수의 블록들 및 상기 제 2 컬러 성분의 상기 블록은 각각 상기 비디오 데이터의 픽처의 동일한 코딩 블록의 일부인, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 블록을 포함하고, 상기 비디오 코더는,
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 2 블록이 상기 IBC 예측 모드에서 예측되지 않는다고 결정하고;
상기 제 2 블록에 대한 모션 벡터 정밀도들의 제 1 세트를 결정하고;
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 3 블록이 상기 IBC 예측 모드에서 예측된다고 결정하며; 그리고
상기 제 3 블록에 대한 모션 벡터 정밀도들의 제 2 세트를 결정하도록 구성되고,
상기 모션 벡터 정밀도들의 제 2 세트는 상기 모션 벡터 정밀도들의 제 1 세트의 서브세트인, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 블록을 포함하고, 상기 비디오 코더는,
상기 제 1 컬러 성분 또는 상기 제 2 컬러 성분의 제 2 블록이 ATMVP (alternative temporal motion vector prediction) 를 사용하여 예측된다고 결정하고;
상기 제 2 블록에 대해 ATMVP 를 수행하기 위해 사용된 참조 픽처에서의 하나 이상의 블록들을 결정하고;
상기 참조 픽처에서의 상기 하나 이상의 블록들 중 적어도 하나의 블록이 상기 IBC 예측 모드에서 예측된다고 결정하며; 그리고
상기 IBC 예측 모드에서 예측되는 상기 참조 픽처에서의 상기 적어도 하나의 블록을 위해 사용된 블록 벡터를 사용하지 않으면서 상기 제 2 블록에 대한 ATMVP 동작을 수행하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 비디오 코더는,
제 2 픽처에서의 제 2 블록이 상기 IBC 예측 모드에서 코딩된다고 결정하고; 그리고
상기 제 2 블록이 상기 IBC 예측 모드에서 코딩된다는 결정에 기초하여 상기 제 2 블록에 대해 아핀 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나로 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 비디오 코더는,
제 2 픽처에서의 제 2 블록이 상기 IBC 예측 모드에서 코딩된다고 결정하고; 그리고
상기 제 2 블록이 상기 IBC 예측 모드에서 코딩된다는 결정에 기초하여 상기 제 2 블록에 대해 조명 보상 (IC) 모드가 인에이블되는지 여부를 표시하는 정보의 파싱 또는 시그널링을 회피하는 것 중 적어도 하나로 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 비디오 코더는,
제 2 픽처에서의 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩된다고 결정하고; 그리고
상기 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 상기 제 2 블록 상에서 양방향 광학 플로우 (BIO) 를 수행하는 것을 회피하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 제 2 컬러 성분의 상기 블록은 제 1 픽처에서의 제 1 블록을 포함하고, 상기 비디오 코더는,
제 2 픽처에서의 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩된다고 결정하고; 그리고
상기 제 2 블록이 상기 제 2 픽처를 지칭하는 벡터로 코딩되는 것에 기초하여 상기 제 2 블록 상에서 쌍방향 매칭을 수행하는 것을 회피하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 비디오 코더는 비디오 디코더를 포함하고, 상기 제 2 컬러 성분의 블록을 코딩하기 위해, 상기 비디오 디코더는 상기 제 2 컬러 성분의 블록을 디코딩하도록 구성되고, 상기 제 2 컬러 성분의 블록을 디코딩하기 위해, 상기 비디오 디코더는,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하고;
상기 하나 이상의 서브-블록들에 대한 하나 이상의 잔차 블록들을 결정하며; 그리고
상기 제 2 컬러 성분의 상기 블록의 서브-블록들을 재구성하기 위해 개개의 하나 이상의 예측 블록들에 상기 하나 이상의 잔차 블록들을 부가하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 제 15 항에 있어서,
상기 비디오 코더는 비디오 인코더를 포함하고, 상기 제 2 컬러 성분의 상기 블록을 코딩하기 위해, 상기 비디오 인코더는 상기 제 2 컬러 성분의 블록을 인코딩하도록 구성되고, 상기 제 2 컬러 성분의 블록을 인코딩하기 위해, 상기 비디오 인코더는,
상기 하나 이상의 서브-블록들에 대한 상기 하나 이상의 결정된 블록 벡터들에 기초하여 하나 이상의 예측 블록들을 결정하고;
하나 이상의 잔차 블록들을 생성하기 위해 상기 하나 이상의 서브-블록들 중 개개의 서브-블록들로부터 상기 하나 이상의 예측 블록들을 감산하며; 그리고
상기 하나 이상의 잔차 블록들을 표시하는 정보를 시그널링하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스. - 명령을 저장하는 컴퓨터 판독가능 저장 매체로서,
상기 명령은, 실행될 때 비디오 데이터를 코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금,
제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하게 하는 것으로서, 상기 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 상기 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 상기 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 상기 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하게 하고;
상기 제 1 컬러 성분의 상기 복수의 블록들의 블록에 각각 대응하는 상기 제 2 컬러 성분의 서브-블록들을 생성하기 위해 상기 제 1 파티션 트리에 기초하여 상기 제 2 컬러 성분의 상기 블록을 파티셔닝하게 하고;
상기 제 1 컬러 성분의 상기 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 상기 제 2 컬러 성분의 상기 서브-블록들의 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하게 하며; 그리고
하나 이상의 결정된 상기 블록 벡터들에 기초하여 상기 제 2 컬러 성분의 상기 블록을 코딩하게 하는, 컴퓨터 판독가능 저장 매체. - 비디오 데이터를 코딩하기 위한 디바이스로서,
제 2 컬러 성분의 블록에 대응하는 제 1 컬러 성분의 복수의 블록들을 결정하는 수단으로서, 상기 제 1 컬러 성분의 복수의 블록들은 제 1 파티션 트리에 따라 상기 제 1 컬러 성분의 샘플들의 파티셔닝으로부터 생성되고, 상기 제 2 컬러 성분의 블록은 제 2 파티션 트리에 따라 상기 제 2 컬러 성분의 샘플들의 파티셔닝으로부터 생성되는, 상기 제 1 컬러 성분의 복수의 블록들을 결정하는 수단;
상기 제 1 컬러 성분의 상기 복수의 블록들의 블록에 각각 대응하는 상기 제 2 컬러 성분의 서브-블록들을 생성하기 위해 상기 제 1 파티션 트리에 기초하여 상기 제 2 컬러 성분의 블록을 파티셔닝하는 수단;
상기 제 1 컬러 성분의 상기 복수의 블록들의 하나 이상의 대응하는 블록들의 하나 이상의 블록 벡터들에 기초하여 인트라-블록 카피 (IBC) 예측 모드에서 예측되는 상기 제 2 컬러 성분의 상기 서브-블록들 중 하나 이상의 서브-블록들에 대한 하나 이상의 블록 벡터들을 결정하는 수단; 및
하나 이상의 결정된 상기 블록 벡터들에 기초하여 상기 제 2 컬러 성분의 상기 블록을 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862628101P | 2018-02-08 | 2018-02-08 | |
US62/628,101 | 2018-02-08 | ||
US16/269,349 | 2019-02-06 | ||
US16/269,349 US11012715B2 (en) | 2018-02-08 | 2019-02-06 | Intra block copy for video coding |
PCT/US2019/017055 WO2019157186A1 (en) | 2018-02-08 | 2019-02-07 | Intra block copy for video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200116462A true KR20200116462A (ko) | 2020-10-12 |
Family
ID=67475818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207022454A KR20200116462A (ko) | 2018-02-08 | 2019-02-07 | 비디오 코딩을 위한 인트라-블록 카피 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11012715B2 (ko) |
EP (1) | EP3750317A1 (ko) |
KR (1) | KR20200116462A (ko) |
CN (2) | CN111684806B (ko) |
BR (1) | BR112020016133A2 (ko) |
SG (1) | SG11202006301YA (ko) |
TW (1) | TW201941605A (ko) |
WO (1) | WO2019157186A1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023277486A1 (ko) * | 2021-06-29 | 2023-01-05 | 주식회사 케이티 | 화면내 예측 기반의 비디오 신호 부호화/복호화 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
WO2023062614A1 (ko) * | 2021-10-12 | 2023-04-20 | 엘지전자 주식회사 | 영상 디코딩 방법 및 그 장치 |
WO2023182698A1 (ko) * | 2022-03-24 | 2023-09-28 | 현대자동차주식회사 | 복원 루마 정보 기반 크로마 성분 예측을 위한 방법 |
WO2024010377A1 (ko) * | 2022-07-05 | 2024-01-11 | 한국전자통신연구원 | 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체 |
WO2024085656A1 (ko) * | 2022-10-18 | 2024-04-25 | 주식회사 윌러스표준기술연구소 | 비디오 신호 처리 방법 및 이를 위한 장치 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109155847A (zh) * | 2016-03-24 | 2019-01-04 | 英迪股份有限公司 | 用于编码/解码视频信号的方法和装置 |
US10687071B2 (en) * | 2018-02-05 | 2020-06-16 | Tencent America LLC | Method and apparatus for video coding |
US20190273946A1 (en) * | 2018-03-05 | 2019-09-05 | Markus Helmut Flierl | Methods and Arrangements for Sub-Pel Motion-Adaptive Image Processing |
US10638137B2 (en) * | 2018-03-07 | 2020-04-28 | Tencent America LLC | Method and apparatus for video coding |
US10873748B2 (en) * | 2018-05-12 | 2020-12-22 | Qualcomm Incorporated | Storage of high precision motion vectors in video coding |
GB2588004B (en) * | 2018-06-05 | 2023-03-01 | Beijing Bytedance Network Tech Co Ltd | Interaction between IBC and affine |
WO2019234613A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Partition tree with partition into 3 sub-blocks by horizontal and vertical splits |
TWI746994B (zh) * | 2018-06-19 | 2021-11-21 | 大陸商北京字節跳動網絡技術有限公司 | 用於不同參考列表的不同精確度 |
WO2019244117A1 (en) | 2018-06-21 | 2019-12-26 | Beijing Bytedance Network Technology Co., Ltd. | Unified constrains for the merge affine mode and the non-merge affine mode |
CN113115046A (zh) | 2018-06-21 | 2021-07-13 | 北京字节跳动网络技术有限公司 | 分量相关的子块分割 |
TWI820195B (zh) | 2018-08-28 | 2023-11-01 | 大陸商北京字節跳動網絡技術有限公司 | 分割方法的冗餘移除 |
HUE064218T2 (hu) | 2018-08-28 | 2024-02-28 | Huawei Tech Co Ltd | Képfelosztási eljárás és eszköz |
EP4325859A3 (en) | 2018-09-19 | 2024-05-15 | Beijing Bytedance Network Technology Co., Ltd. | Syntax reuse for affine mode with adaptive motion vector resolution |
CN110944196B (zh) | 2018-09-24 | 2023-05-30 | 北京字节跳动网络技术有限公司 | 简化的基于历史的运动矢量预测 |
US11140404B2 (en) | 2018-10-11 | 2021-10-05 | Tencent America LLC | Method and apparatus for video coding |
WO2020089823A1 (en) | 2018-10-31 | 2020-05-07 | Beijing Bytedance Network Technology Co., Ltd. | Overlapped block motion compensation with adaptive sub-block size |
WO2020094150A1 (en) | 2018-11-10 | 2020-05-14 | Beijing Bytedance Network Technology Co., Ltd. | Rounding in current picture referencing |
CN112997493B (zh) | 2018-11-13 | 2024-01-05 | 北京字节跳动网络技术有限公司 | 用于单一类型运动候选列表的构建方法 |
CN113170195B (zh) | 2018-12-22 | 2024-09-03 | 北京字节跳动网络技术有限公司 | 具有双树分割的帧内块复制模式 |
EP3902257A4 (en) * | 2018-12-27 | 2022-01-05 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | CODING PREDICTION METHOD AND DEVICE AND COMPUTER STORAGE MEDIUM |
CN113261294B (zh) * | 2019-01-02 | 2024-06-18 | Lg电子株式会社 | 基于sbtmvp的帧间预测方法和设备 |
KR20240005108A (ko) * | 2019-01-08 | 2024-01-11 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체 |
US11153590B2 (en) * | 2019-01-11 | 2021-10-19 | Tencent America LLC | Method and apparatus for video coding |
KR20210121021A (ko) | 2019-01-31 | 2021-10-07 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥 |
WO2020156517A1 (en) | 2019-01-31 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Fast algorithms for symmetric motion vector difference coding mode |
WO2020156541A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Data storage in buffers for intra block copy in video coding |
CN113366853B (zh) | 2019-02-02 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的缓冲区初始化 |
CN113366855A (zh) | 2019-02-03 | 2021-09-07 | 北京字节跳动网络技术有限公司 | 基于条件的非对称四叉树分割 |
CN117714694A (zh) | 2019-02-17 | 2024-03-15 | 北京字节跳动网络技术有限公司 | 处理视频数据的方法、装置和计算机可读记录介质 |
KR102617439B1 (ko) * | 2019-02-26 | 2023-12-26 | 애플 인크. | 영상 신호 부호화/복호화 방법 및 이를 위한 장치 |
WO2020173483A1 (en) * | 2019-02-27 | 2020-09-03 | Beijing Bytedance Network Technology Co., Ltd. | Improvement on adaptive motion vector difference resolution in intra block copy mode |
EP3915265A4 (en) | 2019-03-01 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING |
CN113545068B (zh) | 2019-03-01 | 2023-09-15 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的基于顺序的更新 |
EP3915252A4 (en) | 2019-03-04 | 2022-03-23 | Beijing Bytedance Network Technology Co., Ltd. | IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING |
KR20210127709A (ko) * | 2019-03-07 | 2021-10-22 | 디지털인사이트 주식회사 | 영상 부호화/복호화 방법 및 장치 |
US11985348B2 (en) * | 2019-03-11 | 2024-05-14 | Electronics And Telecommunications Research Institute | Intra block copy-based encoding/decoding method and device, and bitstream storage medium |
KR102659481B1 (ko) * | 2019-03-17 | 2024-04-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 광학 흐름에 기초한 예측 정제의 계산 |
US12052434B2 (en) * | 2019-06-20 | 2024-07-30 | Interdigital Madison Patent Holdings, Sas | Motion vector processing for video encoding and decoding |
KR102677020B1 (ko) | 2019-07-06 | 2024-06-19 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼 |
JP7359934B2 (ja) | 2019-07-10 | 2023-10-11 | 北京字節跳動網絡技術有限公司 | 映像符号化におけるイントラブロックコピーのためのサンプル識別 |
KR102695788B1 (ko) | 2019-07-11 | 2024-08-14 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약 |
CN114208187A (zh) | 2019-07-25 | 2022-03-18 | 北京字节跳动网络技术有限公司 | 帧内块复制虚拟缓冲区的映射限制 |
WO2021013239A1 (en) | 2019-07-25 | 2021-01-28 | Beijing Bytedance Network Technology Co., Ltd. | Size restriction for intra-block copy virtual buffer |
KR20220042125A (ko) | 2019-08-10 | 2022-04-04 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브픽처 디코딩에서의 버퍼 관리 |
US11218718B2 (en) * | 2019-08-26 | 2022-01-04 | Tencent America LLC | Adaptive motion vector resolution signaling |
WO2021043299A1 (en) | 2019-09-05 | 2021-03-11 | Beijing Bytedance Network Technology Co., Ltd. | Range constrains for block vector in intra-block copy mode |
JP6960969B2 (ja) * | 2019-09-20 | 2021-11-05 | Kddi株式会社 | 画像復号装置、画像復号方法及びプログラム |
WO2021052495A1 (en) | 2019-09-20 | 2021-03-25 | Beijing Bytedance Network Technology Co., Ltd. | Adaptive resolution change and scalable coding for screen contents |
CN114430901B (zh) | 2019-09-20 | 2024-07-05 | 北京字节跳动网络技术有限公司 | 带有色度缩放的亮度映射 |
CN117459723A (zh) | 2019-09-23 | 2024-01-26 | 北京字节跳动网络技术有限公司 | 基于虚拟管线数据单元设置帧内块复制虚拟缓冲区 |
JP7482220B2 (ja) | 2019-10-18 | 2024-05-13 | 北京字節跳動網絡技術有限公司 | サブピクチャのパラメータセットシグナリングにおける構文制約 |
JP7544331B2 (ja) * | 2019-12-23 | 2024-09-03 | テンセント・アメリカ・エルエルシー | ビデオ符号化/復号のための方法および装置 |
WO2021155862A1 (en) * | 2020-02-07 | 2021-08-12 | Beijing Bytedance Network Technology Co., Ltd. | Bv list construction process of ibc blocks under merge estimation region |
JP7395005B2 (ja) | 2020-02-24 | 2023-12-08 | バイトダンス インコーポレイテッド | サブピクチャの高さの導出 |
WO2021178501A1 (en) | 2020-03-03 | 2021-09-10 | Bytedance Inc. | Controlling a scaling process using slice header signaling |
WO2021185306A1 (en) | 2020-03-18 | 2021-09-23 | Beijing Bytedance Network Technology Co., Ltd. | Intra block copy buffer and palette predictor update |
CN111669581B (zh) * | 2020-06-09 | 2022-12-20 | 浙江大华技术股份有限公司 | 视频编码方法及其相关装置 |
WO2023008888A1 (ko) * | 2021-07-26 | 2023-02-02 | 한국전자통신연구원 | 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체 |
WO2024149017A1 (en) * | 2023-01-13 | 2024-07-18 | Mediatek Inc. | Methods and apparatus of motion shift in overlapped blocks motion compensation for video coding |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
WO2015078304A1 (en) | 2013-11-27 | 2015-06-04 | Mediatek Singapore Pte. Ltd. | Method of video coding using prediction based on intra picture block copy |
US9883197B2 (en) * | 2014-01-09 | 2018-01-30 | Qualcomm Incorporated | Intra prediction of chroma blocks using the same vector |
US10531116B2 (en) | 2014-01-09 | 2020-01-07 | Qualcomm Incorporated | Adaptive motion vector resolution signaling for video coding |
US9860559B2 (en) * | 2014-03-17 | 2018-01-02 | Mediatek Singapore Pte. Ltd. | Method of video coding using symmetric intra block copy |
US10432928B2 (en) | 2014-03-21 | 2019-10-01 | Qualcomm Incorporated | Using a current picture as a reference for video coding |
US10477232B2 (en) * | 2014-03-21 | 2019-11-12 | Qualcomm Incorporated | Search region determination for intra block copy in video coding |
WO2015169200A1 (en) * | 2014-05-06 | 2015-11-12 | Mediatek Singapore Pte. Ltd. | Method of block vector prediction for intra block copy mode coding |
US10412387B2 (en) | 2014-08-22 | 2019-09-10 | Qualcomm Incorporated | Unified intra-block copy and inter-prediction |
KR20170066457A (ko) * | 2014-09-26 | 2017-06-14 | 브이아이디 스케일, 인크. | 시간적 블록 벡터 예측을 갖는 인트라 블록 카피 코딩 |
US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
US9591325B2 (en) * | 2015-01-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Special case handling for merged chroma blocks in intra block copy prediction mode |
CN107637057A (zh) * | 2015-06-03 | 2018-01-26 | 联发科技股份有限公司 | 图像和视频数据的调色板编解码方法 |
US20160360205A1 (en) * | 2015-06-08 | 2016-12-08 | Industrial Technology Research Institute | Video encoding methods and systems using adaptive color transform |
TWI816224B (zh) * | 2015-06-08 | 2023-09-21 | 美商Vid衡器股份有限公司 | 視訊解碼或編碼方法及裝置 |
US10368107B2 (en) | 2016-08-15 | 2019-07-30 | Qualcomm Incorporated | Intra video coding using a decoupled tree structure |
US10326986B2 (en) | 2016-08-15 | 2019-06-18 | Qualcomm Incorporated | Intra video coding using a decoupled tree structure |
US10979732B2 (en) | 2016-10-04 | 2021-04-13 | Qualcomm Incorporated | Adaptive motion vector precision for video coding |
EP3577898A4 (en) * | 2017-01-31 | 2020-06-24 | Sharp Kabushiki Kaisha | SYSTEMS AND METHODS FOR PARTITIONING A VIDEO BLOCK IMAGE FOR VIDEO CODING |
US10820017B2 (en) * | 2017-03-15 | 2020-10-27 | Mediatek Inc. | Method and apparatus of video coding |
KR102577599B1 (ko) * | 2017-04-13 | 2023-09-12 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법 |
US10687071B2 (en) * | 2018-02-05 | 2020-06-16 | Tencent America LLC | Method and apparatus for video coding |
-
2019
- 2019-02-06 US US16/269,349 patent/US11012715B2/en active Active
- 2019-02-07 WO PCT/US2019/017055 patent/WO2019157186A1/en unknown
- 2019-02-07 SG SG11202006301YA patent/SG11202006301YA/en unknown
- 2019-02-07 CN CN201980011713.9A patent/CN111684806B/zh active Active
- 2019-02-07 KR KR1020207022454A patent/KR20200116462A/ko unknown
- 2019-02-07 CN CN202410300320.2A patent/CN118338015A/zh active Pending
- 2019-02-07 EP EP19706220.1A patent/EP3750317A1/en active Pending
- 2019-02-07 BR BR112020016133-0A patent/BR112020016133A2/pt not_active Application Discontinuation
- 2019-02-11 TW TW108104498A patent/TW201941605A/zh unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023277486A1 (ko) * | 2021-06-29 | 2023-01-05 | 주식회사 케이티 | 화면내 예측 기반의 비디오 신호 부호화/복호화 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
WO2023062614A1 (ko) * | 2021-10-12 | 2023-04-20 | 엘지전자 주식회사 | 영상 디코딩 방법 및 그 장치 |
WO2023182698A1 (ko) * | 2022-03-24 | 2023-09-28 | 현대자동차주식회사 | 복원 루마 정보 기반 크로마 성분 예측을 위한 방법 |
WO2024010377A1 (ko) * | 2022-07-05 | 2024-01-11 | 한국전자통신연구원 | 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체 |
WO2024085656A1 (ko) * | 2022-10-18 | 2024-04-25 | 주식회사 윌러스표준기술연구소 | 비디오 신호 처리 방법 및 이를 위한 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2019157186A1 (en) | 2019-08-15 |
TW201941605A (zh) | 2019-10-16 |
EP3750317A1 (en) | 2020-12-16 |
SG11202006301YA (en) | 2020-08-28 |
US11012715B2 (en) | 2021-05-18 |
CN111684806A (zh) | 2020-09-18 |
BR112020016133A2 (pt) | 2020-12-08 |
CN111684806B (zh) | 2024-03-15 |
US20190246143A1 (en) | 2019-08-08 |
CN118338015A (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11012715B2 (en) | Intra block copy for video coding | |
AU2019321565B2 (en) | History-based candidate list with classification | |
US11206396B2 (en) | Local illumination compensation in video coding | |
CN113196749B (zh) | 用于译码视频数据的方法和设备 | |
EP4376406A1 (en) | Combination of inter-prediction and intra-prediction in video coding | |
CN113170180A (zh) | 基于历史的运动矢量预测的简化 | |
WO2020061490A1 (en) | History-based motion vector prediction for affine mode | |
JP7474774B2 (ja) | ビデオコーディングにおけるイントラブロックコピーモードのための動きベクトル予測子リスト生成 | |
CN112806012A (zh) | 用于帧间预测译码的基于历史的运动向量预测 | |
KR20190041480A (ko) | 후보 리스트들의 구성을 위한 지오메트리 기반의 우선순위 | |
AU2019288269B2 (en) | Signaling sub-prediction unit motion vector predictor | |
US11122288B2 (en) | Spatio-temporal motion vector prediction patterns for video coding | |
US11064192B2 (en) | Simplification of spatial-temporal motion vector prediction | |
WO2019199953A1 (en) | Decoder-side motion vector derivation for video coding | |
WO2020056024A1 (en) | Vector predictor list generation | |
US11051035B2 (en) | Processing of illegal motion vectors for intra block copy mode in video coding | |
KR20230135587A (ko) | 비디오 코딩을 위한 모델-기반 모션 벡터 차이 도출및 템플릿 매칭 예측 | |
EP3857891A1 (en) | Restrictions for the worst-case bandwidth reduction in video coding |