KR101714135B1 - 모션 벡터 라운딩 - Google Patents
모션 벡터 라운딩 Download PDFInfo
- Publication number
- KR101714135B1 KR101714135B1 KR1020147031359A KR20147031359A KR101714135B1 KR 101714135 B1 KR101714135 B1 KR 101714135B1 KR 1020147031359 A KR1020147031359 A KR 1020147031359A KR 20147031359 A KR20147031359 A KR 20147031359A KR 101714135 B1 KR101714135 B1 KR 101714135B1
- Authority
- KR
- South Korea
- Prior art keywords
- motion vector
- current
- candidate list
- rounding
- candidate
- 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/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
-
- 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/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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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
-
- 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/523—Motion estimation or motion compensation with sub-pixel accuracy
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비디오 디코더는, 예측 유닛 (PU) 의 사이즈에 적어도 부분적으로 기초하여, PU의 모션 벡터의 수평 또는 수직 성분 중 어느 하나 또는 양자 모두를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정한다. 비디오 디코더는, 모션 벡터에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록을 생성하고, PU에 대한 예측 샘플 블록에 부분적으로 기초하여, 복원된 샘플 블록을 생성한다.
Description
본 출원은, 2012년 4월 11일자로 출원된 미국 특허 가출원 제61/623,037호, 2012년 4월 12일자로 출원된 미국 특허 가출원 제61/623,470호, 2012년 4월 20일자로 출원된 미국 특허 가출원 제61/636,529호, 및 2013년 4월 23일자로 출원된 미국 특허 가출원 제61/637,216호를 우선권 주장하며, 이 출원들의 각각의 전체 내용은 참조로 본원에 통합된다.
기술 분야
본 개시물은 비디오 코딩 및 압축에 관한 것으로, 특히, 모션 벡터들의 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인휴대 정보단말들 (PDA들), 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 원격회의 디바이스들 등을 포함하는 넓은 범위의 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 에 의해 규정된 표준들, 현재 개발중인 고 효율 비디오 코딩 (High Efficiency Video Coding, HEVC) 표준, 및 이러한 표준들의 확장본들에 기재된 것들과 같은 비디오 압축 기법들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신하며, 수신하고 저장한다.
비디오 압축 기법들은 공간적 (픽처 내) 예측 및/또는 시간적 (픽처 간) 예측을 수행하여 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 제거한다. 블록 기반 비디오 코딩을 위해, 비디오 슬라이스는 비디오 블록들로 구획될 수도 있으며, 그 비디오 블록들은 또한 트리블록들 (treeblocks), 코딩 유닛들 (CU들) 및/또는 코딩 노드들로서 지칭될 수도 있다. 픽처의 인트라 코딩식 (intra-coded; I) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃 블록들에서의 참조 샘플들에 관한 공간적 예측을 이용하여 인코딩된다. 픽처의 인터 코딩식 (inter-coded; P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃 블록들에서의 참조 샘플들에 관한 공간적 예측 또는 다른 참조 픽처들에서의 참조 샘플들에 관한 시간적 예측을 이용할 수도 있다. 픽처들은 프레임들로서 지칭될 수도 있고, 참조 픽처들은 참조 프레임들로서 지칭될 수도 있다.
일반적으로, 본 개시물은 비디오 코딩에서 모션 벡터들을 프로세싱하는 기법들을 설명한다. 더 구체적으로는, 비디오 디코더가, 예측 유닛 (prediction unit; PU) 의 사이즈에 적어도 부분적으로 기초하여, PU의 모션 벡터의 수평 또는 수직 성분 중 어느 하나 또는 양자 모두를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다. 일부 예들에서, 비디오 디코더는 PU에 대한 병합 후보 리스트들 및/또는 어드밴스드 모션 벡터 예측 (advanced motion vector prediction; AMVP) 후보 리스트들에서의 후보들에 의해 나타내어진 모션 벡터들을 라운딩할 수도 있다. 비디오 디코더는, 모션 벡터에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록을 생성할 수도 있다. 비디오 디코더는, PU에 대한 예측 샘플 블록에 부분적으로 기초하여, 복원된 샘플 블록을 생성할 수도 있다.
하나의 예에서, 본 개시물은 비디오 데이터를 디코딩하는 방법을 설명한다. 그 방법은, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 모션 벡터를 라운딩하는 단계를 포함한다. 모션 벡터를 라운딩하는 단계는, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함한다. 그 방법은 또한, 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성하는 단계를 포함한다. 더욱이, 그 방법은, 현재 PU에 대한 예측 샘플 블록에 부분적으로 기초하여, 복원된 샘플 블록을 생성하는 단계를 포함한다.
다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 방법을 설명한다. 그 방법은, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 모션 벡터를 라운딩하는 단계를 포함한다. 모션 벡터를 라운딩하는 단계는, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함한다. 더욱이, 그 방법은, 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성하는 단계를 포함한다. 또한, 그 방법은, 현재 PU에 대한 예측 샘플 블록에 부분적으로 기초하여, 현재 PU에 대한 잔여 샘플 블록을 생성하는 단계를 포함한다. 그 방법은 또한, 비트스트림에서, 현재 PU에 대한 잔여 샘플 블록을 시그널링하는 단계를 포함한다.
다른 예에서, 본 개시물은, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하도록 구성된 하나 이상의 프로세서들을 포함하는 비디오 코딩 디바이스를 설명한다. 하나 이상의 프로세서들은 또한, 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성하도록 구성된다.
다른 예에서, 본 개시물은, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나가 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩되도록 모션 벡터를 라운딩하는 수단을 포함하는 비디오 코딩 디바이스를 설명한다. 그 비디오 코딩 디바이스는 또한, 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성하는 수단을 포함한다.
다른 예에서, 본 개시물은, 실행되는 경우, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나가 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩되도록 모션 벡터를 라운딩하도록 비디오 코딩 디바이스를 구성하는 명령들을 저장하고 있는 컴퓨터 판독가능 저장 매체를 설명한다. 또한, 그 명령들은, 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성하도록 비디오 코딩 디바이스를 구성한다.
본 개시물의 하나 이상의 예들의 상세는 첨부 도면들 및 다음의 설명에서 언급된다. 다른 특징들, 목적들, 및 장점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1은 본 개시물의 기법들을 이용할 수도 있는 일 예의 비디오 코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시물의 기법들을 구현할 수도 있는 일 예의 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시물의 기법들을 구현할 수도 있는 일 예의 비디오 디코더를 도시하는 블록도이다.
도 4는 2차원 (2D) 보간을 위해 페치된 블록 사이즈를 예시하는 개념도이다.
도 5a 내지 도 5c는 본 개시물의 하나 이상의 기법들에 따른, 픽셀 패딩을 예시하는 개념도들이다.
도 6은 본 개시물의 하나 이상의 기법들에 따른, 비디오 인코더의 일 예의 동작을 도시하는 흐름도이다.
도 7은 본 개시물의 하나 이상의 기법들에 따른, 비디오 디코더의 일 예의 동작을 도시하는 흐름도이다.
도 2는 본 개시물의 기법들을 구현할 수도 있는 일 예의 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시물의 기법들을 구현할 수도 있는 일 예의 비디오 디코더를 도시하는 블록도이다.
도 4는 2차원 (2D) 보간을 위해 페치된 블록 사이즈를 예시하는 개념도이다.
도 5a 내지 도 5c는 본 개시물의 하나 이상의 기법들에 따른, 픽셀 패딩을 예시하는 개념도들이다.
도 6은 본 개시물의 하나 이상의 기법들에 따른, 비디오 인코더의 일 예의 동작을 도시하는 흐름도이다.
도 7은 본 개시물의 하나 이상의 기법들에 따른, 비디오 디코더의 일 예의 동작을 도시하는 흐름도이다.
HEVC에서, 각각의 픽처는 코딩 트리 블록들 (CTB들) 이라 지칭되는 동일 사이즈로 된 지역들의 세트로 나누어진다. 각각의 CTB는 코딩 트리 유닛 (CTU) 와 연관된다. CTU에 연관된 지역은 쿼드트리 세분 (sub-division) 프로세스에 따라 코딩 유닛들 (CU들) 에 연관된 하나 이상의 지역들로 세분될 수도 있다. CU에 연관된 각각의 지역은 예측 유닛들 (PU들) 에 연관된 하나 이상의 지역들로 세분될 수도 있다.
비디오 인코더는 예측 샘플 블록들을 각각의 PU에 대해 생성할 수도 있다. 비디오 인코더는 PU에 대한 예측 샘플 블록들을 생성하기 위해 인트라 예측 또는 인터 예측을 사용할 수도 있다. 인트라 예측을 사용하는 경우, 비디오 인코더는 PU에 대한 예측 샘플 블록들을 생성하기 위해 현재 픽처의 이웃 블록들의 샘플들을 사용할 수도 있다.
인터 예측은 단방향 인터 예측 (즉, 단방향 예측 (uni-prediction)) 또는 양방향 인터 예측 (즉, 양방향 예측 (bi-prediction)) 일 수도 있다. 단방향 예측 또는 양방향 예측을 수행하기 위해, 비디오 인코더는 현재 슬라이스에 대한 제 1 참조 픽처 리스트 (RefPicList0) 및 제 2 참조 픽처 리스트 (RefPicList1) 를 생성할 수도 있다. 참조 픽처 리스트들의 각각은 하나 이상의 참조 픽처들을 포함할 수도 있다. 단방향 예측을 사용하는 경우, 비디오 인코더는 참조 픽처 내의 참조 로케이션을 결정하기 위해 RefPicList0 및 RefPicList1 중 어느 하나 또는 양자 모두에서 참조 픽처들을 검색할 수도 있다. 더욱이, 단방향 예측을 사용하는 경우, 비디오 인코더는, 참조 로케이션에 대응하는 샘플들에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록들을 생성할 수도 있다. 또한, 단방향 예측을 사용하는 경우, 비디오 인코더는 PU의 샘플 블록 및 참조 로케이션 간의 공간적 변위를 나타내는 단일 모션 벡터 (MV) 를 생성할 수도 있다. PU의 샘플 블록 및 참조 로케이션 간의 공간적 변위를 나타내기 위해, MV는 PU의 샘플 블록 및 참조 로케이션 간의 수평 변위를 특정하는 수평 성분을 포함할 수도 있고, PU의 샘플 블록 및 참조 로케이션 간의 수직 변위를 특정하는 수직 성분을 포함할 수도 있다.
양방향 예측을 사용하여 PU를 인코딩하는 경우, 비디오 인코더는 RefPicList0에서의 참조 픽처의 제 1 참조 로케이션 및 RefPicList1에서의 참조 픽처의 제 2 참조 로케이션을 결정할 수도 있다. 비디오 인코더는 그 다음에, 제 1 및 제 2 참조 로케이션들에 대응하는 샘플들에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록들을 생성할 수도 있다. 또한, 양방향 예측을 사용하여 PU를 인코딩하는 경우, 비디오 인코더는, PU의 샘플 블록 및 제 1 참조 로케이션 간의 공간적 변위를 나타내는 제 1 MV 및 PU의 샘플 블록 및 제 2 참조 로케이션 간의 공간적 변위를 나타내는 제 2 MV를 생성할 수도 있다.
CU의 PU들에 대한 예측 샘플 블록들을 생성한 후, 비디오 인코더는 CU의 PU들에 대한 예측 샘플 블록들로부터 CU의 원래의 샘플 블록들을 감산함으로써 잔여 블록들을 생성할 수도 있다. 비디오 인코더는 잔여 블록들의 샘플들을 변환하며, 결과적인 변환 계수들을 양자화하고, 양자화된 변환 계수들을 표현하는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 비디오 인코더는 엔트로피 인코딩된 신택스 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다.
비디오 디코더는 PU들의 MV 또는 MV들을 사용하여 PU들에 대한 예측 샘플 블록들을 생성할 수도 있다. 비디오 디코더는 CU의 PU들에 대한 예측 샘플 블록들을 CU에 대한 잔여 블록들에 가산하여 CU의 원래의 샘플 블록들을 복원할 수도 있다. 픽처의 각각의 CU의 원래의 샘플 블록들을 복원함으로써, 비디오 디코더는 픽처를 복원할 수도 있다.
MV는 참조 픽처의 픽셀에 정확히 대응하는 포지션을 나타낼 수도 있다. 이 예에서, MV는 "전 (full) 픽셀" 정확도 또는 "정수 픽셀" 정확도를 가지는 것이라고 말해진다. 본 개시물은 정수 픽셀 정확도를 가지는 MV를 정수 픽셀 MV로서 지칭할 수도 있다. 어떤 경우들에서, 용어 "픽셀"은 줄여서 "펠 (pel)"이라고 할 수도 있다.
더욱이, MV는 참조 픽처의 2 개의 픽셀들 간의 로케이션을 나타낼 수도 있다. 다시 말해, MV는 참조 픽처 내의 서브 픽셀 로케이션을 나타낼 수도 있다. 예를 들어, MV는 참조 픽처의 2 개의 픽셀들 간의 중간인 로케이션, 참조 픽처의 2 개의 픽셀들 간의 거리 (way) 의 1/4인 로케이션 등을 나타낼 수도 있다. 본 개시물은 2 개의 픽셀들 간의 중간인 로케이션을 나타내는 MV를 반픽셀 정확도를 갖는 MV로서 또는 반픽셀 MV로서 지칭할 수도 있다. 본 개시물은 2 개의 픽셀들 간의 거리의 1/4인 로케이션을 나타내는 MV를 1/4 픽셀 정확도를 갖는 MV로서 또는 1/4 픽셀 MV로서 지칭할 수도 있다. 서브 픽셀 로케이션들 (즉, 2 개의 픽셀들 간의 로케이션들) 을 나타내는 MV들은, 서브 픽셀 정확도를 갖는 MV들로서 또는 간단히 서브 픽셀 MV들로서 지칭될 수도 있다. 예를 들면, 서브 픽셀 MV의 수평 및 수직 성분들 중 어느 하나 또는 양자 모두는 참조 픽처의 서브 픽셀 로케이션들을 나타낸다.
PU의 MV가 참조 픽처 내의 서브 픽셀 로케이션을 나타내는 경우, 비디오 코더 (즉, 비디오 인코더 또는 비디오 디코더) 는 참조 픽처에서의 샘플들의 실제 값들로부터 서브 픽셀 로케이션에 대응하는 샘플들의 값들을 보간할 수도 있다. 예를 들어, MV가 2 개의 픽셀들 간의 중간인 로케이션을 나타내면, 비디오 코더는 2 개의 픽셀들 및/또는 다른 픽셀들로부터 샘플의 값을 보간할 수도 있다. 비디오 코더는 보간된 값들을 PU에 대한 예측 샘플 블록들에서 사용할 수도 있다.
서브 픽셀 MV들의 사용은, 비디오 인코더가 PU들에 대한 원래의 샘플 블록들에 더 가까운 PU들에 대한 예측 샘플 블록들을 생성하는 것을 가능하게 함으로써 비트스트림의 코딩 효율을 증가 (즉, 비트 레이트를 감소) 시킬 수도 있다. 그러나, 이웃하는 샘플들로부터 샘플의 값을 보간하기 위해, 비디오 코더는 메모리로부터 각각의 이웃하는 샘플들의 값들을 전송하는 것을 필요로 할 수도 있다. 메모리로부터 샘플들의 값들을 전송하는 것은 연산적으로 집약적일 수도 있다. 이는 비디오 인코더에 대해 특히 문제가 될 수도 있는데, 병합 모드 또는 어드밴스드 모션 벡터 예측 (AMVP) 모드 중 어느 하나에서, 비디오 인코더는 병합 또는 AMVP 후보 리스트로부터 MV 후보를 선택하기 위해 병합 또는 AMVP 후보 리스트에서의 각각의 MV 후보에 의해 나타내어진 서브 픽셀 MV들에 연관된 샘플들을 보간하는 것을 필요로 할 수도 있기 때문이다.
따라서, 허용 가능한 또는 원하는 코딩 레이트를 지원하기 위해, 서브 픽셀 MV들의 사용은, 보간에 필요한 부가적인 픽셀들로 인해 데이터가 메모리로부터 전송되는 레이트 (즉, 메모리 대역폭) 에서의 증가를 필요로 할 수도 있다. 어떤 경우들에서, 메모리 대역폭을 증가시키는 것은 가능하거나 또는 경제적이지 않을 수도 있다. 이러한 맥락에서, 메모리 대역폭 감소는 메모리로부터 전송될 것이 필요한 데이터의 양에서의 감소를 말한다. 따라서, 메모리 대역폭을 증가시키는 것이 아니라, 메모리로부터 전송되는 데이터의 양을 제한하는 것이 일부 경우들에서는 바람직할 수도 있다.
메모리로부터 전송되는 데이터의 양을 감소시키는 하나의 방법은, 보간을 위해 메모리로부터 페치되는 샘플들의 수를 감소시키는 것이다. 이 감소는 서브 픽셀 MV들의 수평 및/또는 수직 성분들을 정수 픽셀 정확도로 라운딩함으로써 구현될 수도 있다. 일부 예들에서, 이 라운딩은 루마 샘플들을 보간하는 경우 및 크로마 샘플들을 보간하는 경우에 적용될 수 있다. 다른 예들에서, 이 라운딩은 루마 샘플들을 보간하는 경우 또는 크로마 샘플들을 보간하는 경우 중 어느 하나에 적용될 수 있다. 예를 들면, 서브 픽셀 MV들은 크로마 샘플들에 대한 정수 픽셀 정확도로 라운딩될 수 있지만, 비디오 코더는 루마 샘플들을 보간하기 위해 서브 픽셀 MV들을 사용할 수도 있다.
본 개시물의 기법들에 따라, 메모리 대역폭 감소는 MV들의 수평 또는 수직 성분들 중 어느 하나 또는 양자 모두를 특정 CU 및 PU 사이즈들에 대해 정수 픽셀 정확도로 라운딩함으로써 달성될 수도 있다. 예를 들어, 비디오 코더는 4x8, 8x4, 또는 더 작은 PU들에 대한 MV들의 성분들 중 어느 하나 또는 양자 모두를 정수 픽셀 정확도로 라운딩할 수도 있다. 이 예에서, 비디오 코더는 더 큰 PU 사이즈들에 대한 MV들의 성분들을 정수 픽셀 정확도로 라운딩하지 않는다.
도 1은 본 개시물의 기법들을 이용할 수도 있는 일 예의 비디오 코딩 시스템 (10) 을 도시하는 블록도이다. 본원에서 설명되는 바와 같이, 용어 "비디오 코더"는 비디오 인코더들 및 비디오 디코더들 양자 모두를 일반적으로 지칭한다. 본 개시물에서, 용어들 "비디오 코딩" 또는 "코딩"은 비디오 인코딩 또는 비디오 디코딩을 일반적으로 지칭할 수도 있다.
도 1에 도시된 바와 같이, 비디오 코딩 시스템 (10) 은 소스 디바이스 (12) 와 목적지 디바이스 (14) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 생성한다. 따라서, 소스 디바이스 (12) 는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치로서 지칭될 수도 있다. 목적지 디바이스 (14) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수도 있다. 따라서, 목적지 디바이스 (14) 는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치로서 지칭될 수도 있다. 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 비디오 코딩 디바이스들 또는 비디오 코딩 장치들의 예들일 수도 있다.
소스 디바이스 (12) 와 목적지 디바이스 (14) 는 데스크톱 컴퓨터들, 모바일 컴퓨팅 디바이스들, 노트북 (예컨대, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 이른바 "스마트" 폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 차량내 컴퓨터 등을 포함한 다양한 범위의 디바이스들을 포함할 수도 있다.
목적지 디바이스 (14) 는 소스 디바이스 (12) 로부터 채널 (16) 을 통해 인코딩된 비디오 데이터를 수신할 수도 있다. 채널 (16) 은 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 인코딩된 비디오 데이터를 이동시킬 수 있는 하나 이상의 매체들 또는 디바이스들을 포함할 수도 있다. 하나의 예에서, 채널 (16) 은 소스 디바이스 (12) 가 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 직접 실시간으로 송신하는 것을 가능하게 하는 하나 이상의 통신 매체들을 포함할 수도 있다. 이 예에서, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 통신 표준, 이를테면 무선 통신 프로토콜에 따라 변조할 수도 있고, 변조된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 하나 이상의 통신 매체들은 무선 및/또는 유선 통신 매체들, 이를테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 하나 이상의 통신 매체들은 패킷 기반 네트워크, 이를테면 로컬 영역 네트워크, 광역 네트워크, 또는 글로벌 네트워크 (예컨대, 인터넷) 의 부분을 형성할 수도 있다. 채널 (16) 은 다양한 유형들의 디바이스들, 이를테면 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는 다른 장비를 포함할 수도 있다.
다른 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 저장하는 저장 매체를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 디스크 액세스 또는 카드 액세스를 통해 저장 매체에 액세스할 수도 있다. 저장 매체는 블루 레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 다른 적합한 디지털 저장 매체들과 같은 다양한 국소적으로 액세스되는 데이터 저장 매체들을 포함할 수도 있다.
추가의 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 저장하는 파일 서버 또는 다른 중간 저장 디바이스를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 파일 서버 또는 다른 중간 저장 디바이스에 저장된 인코딩된 비디오 데이터를 스트리밍 또는 다운로드를 통해 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 송신할 수 있는 유형의 서버일 수도 있다. 예의 파일 서버들은 웹 서버들 (예컨대, 웹사이트용), 파일 전송 프로토콜 (FTP) 서버들, 네트워크 부속 스토리지 (network attached storage; NAS) 디바이스들, 및 로컬 디스크 드라이브들을 포함한다.
목적지 디바이스 (14) 는 표준 데이터 접속, 이를테면 인터넷 접속을 통해, 인코딩된 비디오 데이터에 액세스할 수도 있다. 예의 유형들의 데이터 접속들은 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널들 (예컨대, Wi-Fi 접속들), 유선 접속들 (예컨대, DSL, 케이블 모뎀 등), 또는 양자 모두의 조합들을 포함할 수도 있다. 파일 서버로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 양자 모두의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 설정 (setting) 들로 제한되지 않는다. 그 기법들은, 다양한 멀티미디어 애플리케이션들, 이를테면 OTA (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대, 인터넷을 통한 스트리밍 비디오 송신들 중 임의의 것의 지원 하의 비디오 코딩, 데이터 저장 매체 상의 저장을 위한 비디오 데이터의 인코딩, 데이터 저장 매체 상에 저장된 비디오 데이터의 디코딩, 또는 다른 애플리케이션들에 적용될 수도 있다. 일부 예들에서, 비디오 코딩 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 픽처 통화와 같은 애플리케이션들을 지원하기 위해 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 일부 예들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 비디오 소스 (18) 는 비디오 캡처 디바이스, 예컨대, 비디오 카메라, 이전에 캡처된 비디오 데이터를 포함한 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하는 비디오 피드 인터페이스, 및/또는 비디오 데이터를 생성하는 컴퓨터 그래픽 시스템, 또는 비디오 데이터의 이러한 소스들의 조합을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 소스 (18) 로부터의 비디오 데이터를 인코딩할 수도 있다. 일부 예들에서, 소스 디바이스 (12) 는 출력 인터페이스 (22) 를 통해 목적지 디바이스 (14) 로 인코딩된 비디오 데이터를 직접 송신할 수도 있다. 다른 예들에서, 인코딩된 비디오 데이터는 또한 디코딩 및/또는 플레이백을 위한 목적지 디바이스 (14) 에 의한 나중의 액세스를 위해 저장 매체 또는 파일 서버 상에 저장될 수도 있다.
도 1의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 예들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함한다. 입력 인터페이스 (28) 는 채널 (16) 을 통해 인코딩된 비디오 데이터를 수신할 수도 있다. 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들을 포함할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, ISO/IEC MPEG-4 비주얼 그리고 SVC (Scalable Video Coding) 및 MVC (Multiview Video Coding) 확장본들을 포함한 ITU-T H.264 (또한 ISO/IEC MPEG-4 AVC로 알려짐) 와 같은 비디오 압축 표준에 따라 동작한다. 다른 예들에서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 현재 개발중인 고 효율 비디오 코딩 (HEVC) 표준을 포함하는 다른 비디오 압축 표준들에 따라 동작할 수도 있다. 게다가, "HEVC 규격 초안 6"이로서 지칭되는 근간의 HEVC 표준의 초안은, 『Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 6," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 7th Meeting: Geneva, Switzerland, November, 2011』에 기재되어 있으며, 이는 2013년 4월 4일 현재, http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip에서 다운로드가능하고, 그 전체가 참조로 본원에 통합된다. "HEVC 규격 초안 9"이로서 지칭되는 근간의 HEVC 표준의 다른 초안은, 『Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 9," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 11th Meeting: Shanghai, China, October, 2012』에 기재되어 있으며, 이는 2013년 4월 4일 현재, http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v8.zip에서 다운로드가능하고, 그 전체가 참조로 본원에 통합된다. 본 개시물의 기법들은, 그러나, 임의의 특정 코딩 표준 또는 기법으로 제한되지 않는다.
도 1은 단지 일 예이고 본 개시물의 기법들은 비디오 인코딩 디바이스 및 비디오 디코딩 디바이스 사이에 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정들 (예컨대, 비디오 인코딩 또는 비디오 디코딩) 에 적용될 수도 있다. 다른 예들에서, 데이터는 로컬 메모리로부터 취출되며, 네트워크를 통해 스트리밍되는 등등이 된다. 비디오 인코딩 디바이스가 데이터를 인코딩하고 메모리에 저장할 수도 있으며, 및/또는 비디오 디코딩 디바이스는 메모리로부터 데이터를 취출하고 디코딩할 수도 있다. 많은 예들에서, 비디오 인코딩 및 디코딩은, 서로 통신하지 않지만 단순히 데이터를 메모리에 인코딩하고 및/또는 메모리로부터 데이터를 취출하고 디코딩하는 디바이스들에 의해 수행된다.
비디오 인코더 (20) 와 비디오 디코더 (30) 각각은 다양한 적합한 회로, 이를테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 개별 로직, 하드웨어, 또는 그것들의 임의의 조합 중 임의의 것으로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현되면, 디바이스는 적합한 비일시적 컴퓨터 판독가능 저장 매체 내에 소프트웨어에 대한 명령을 저장할 수도 있고 하나 이상의 프로세서들을 사용하여 하드웨어에서 그 명령들을 실행하여 본 개시물의 기법들을 수행할 수도 있다. 전술한 바 (하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 조합 등을 포함) 의 임의의 것은 하나 이상의 프로세서들이라고 간주될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들 내에 포함될 수도 있고, 그것들 중 어느 하나는 결합형 인코더/디코더 (CODEC) 의 일부로서 개별 디바이스 내에 통합될 수도 있다.
본 개시물은 특정한 정보를 "시그널링하는" 비디오 인코더 (20) 에 일반적으로 관련이 있다. 용어 "시그널링"은 일반적으로 압축된 비디오 데이터를 디코딩하는데 사용되는 신택스 엘리먼트들 및/또는 다른 데이터의 통신을 말할 수도 있다. 이러한 통신은 실시간 또는 거의 실시간으로 일어날 수도 있다. 대안으로, 이러한 통신은 기간 (span of time) 에 걸쳐 일어날 수도 있어, 이를테면 인코딩 시에 신택스 엘리먼트들을 컴퓨터 판독가능 저장 매체에 인코딩된 비트스트림으로 저장하는 경우에 일어날 것이며, 그 신택스 엘리먼트들을 비디오 디코딩 디바이스가 그 다음에 이 매체에 저장된 후의 임의의 시간에 취출할 수도 있다.
위에서 간략히 언급된 바와 같이, 비디오 인코더 (20) 는 비디오 데이터를 인코딩한다. 비디오 데이터는 하나 이상의 픽처들을 포함할 수도 있다. 픽처들의 각각은 비디오의 부분을 형성하는 스틸 이미지이다. 비디오 인코더 (20) 가 비디오 데이터를 인코딩하는 경우, 비디오 인코더 (20) 는 비트스트림을 생성할 수도 있다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 비트스트림은 코딩된 픽처들 및 연관된 데이터를 포함할 수도 있다. 코딩된 픽처가 픽처의 코딩된 표현이다. 연관된 데이터는 시퀀스 파라미터 세트들 (SPS들), 픽처 파라미터 세트들 (PPS들), 및 다른 신택스 구조들을 포함할 수도 있다. SPS는 픽처들의 0 이상의 시퀀스들에 적용가능한 파라미터들을 포함할 수도 있다. PPS는 0 이상의 픽처들에 적용가능한 파라미터들을 포함할 수도 있다.
픽처는, SL, SCb 및 SCr로 표시되는 3 개의 샘플 어레이들을 포함할 수도 있다. SL은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. 루마 샘플들은 또한 본원에서 "Y" 샘플들로서 지칭될 수도 있다. SCb는 Cb 색차 샘플들의 2차원 어레이이다. SCr은 Cr 색차 샘플들의 2차원 어레이이다. 색차 샘플들은 또한 본원에서 "크로마" 샘플들로서 지칭될 수도 있다. Cb 색차 샘플들은 본원에서 "U 샘플들"이로서 지칭될 수도 있다. Cr 색차 샘플들은 본원에서 "V 샘플들"이로서 지칭될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 픽처의 크로마 어레이들 (즉, SCb 및 SCr) 을 다운 샘플링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 YUV 4:2:0 비디오 포맷, YUV 4:2:2 비디오 포맷, 또는 4:4:4 비디오 포맷을 사용할 수도 있다. YUV 4:2:0 비디오 포맷에서, 비디오 인코더 (20) 는 크로마 어레이들이 루마 어레이의 1/2의 높이 및 1/2의 폭이 되도록 크로마 어레이들을 다운 샘플링할 수도 있다. YUV 4:2:2 비디오 포맷에서, 비디오 인코더 (20) 는 크로마 어레이들이 루마 어레이의 1/2의 폭 및 동일한 높이를 가지도록 크로마 어레이들을 다운 샘플링할 수도 있다. YUV 4:4:4 비디오 포맷에서, 비디오 인코더 (20) 는 크로마 어레이들을 다운 샘플링하지 않는다.
픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 코딩 트리 유닛들 (CTU들) 의 세트를 생성할 수도 있다. CTU들의 각각은, 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2 개의 대응 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들일 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU는 또한 "트리 블록" 또는 "최대 코딩 유닛 (LCU)"로서 지칭될 수도 있다. HEVC의 CTU들은 다른 표준들, 이를테면 H.264/AVC의 매크로블록들과 일반적으로 유사할 수도 있다. 그러나, CTU는 특정 사이즈로 반드시 제한되는 것은 아니고 하나 이상의 코딩 유닛들 (CU들) 을 포함할 수도 있다.
픽처를 인코딩하는 부분으로서, 비디오 인코더 (20) 는 픽처의 각각의 슬라이스의 인코딩된 표현들 (즉, 코딩된 슬라이스들) 을 생성할 수도 있다. 코딩된 슬라이스를 생성하기 위해, 비디오 인코더 (20) 는 일련의 CTU들을 인코딩할 수도 있다. 본 개시물은 CTU의 인코딩된 표현을 코딩된 CTU로서 지칭할 수도 있다. 일부 예들에서, 슬라이스들의 각각은 정수 수의 코딩된 CTU들을 포함한다.
코딩된 CTU를 생성하기 위해, 비디오 인코더 (20) 는 CTU의 코딩 트리 블록들에 대해 쿼드트리 구획화를 재귀적으로 수행하여 코딩 트리 블록들을 코딩 블록들로 나눌 수도 있으며, 그래서 이름이 "코딩 트리 유닛들"이다. 코딩 블록은 샘플들의 NxN 블록이다. CU는, 루마 샘플 어레이, Cb 샘플 어레이 및 Cr 샘플 어레이를 가지는 픽처의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 2 개의 대응 코딩 블록들과, 그리고 코딩 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들일 수도 있다. 비디오 인코더 (20) 는 CU의 코딩 블록을 하나 이상의 예측 블록들로 구획할 수도 있다. 예측 블록은 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 정사각형 아닌) 블록일 수도 있다. CU의 예측 유닛 (PU) 는 픽처의 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록 샘플들을 예측하는데 사용된 신택스 구조들일 수도 있다. 비디오 인코더 (20) 는 CU의 각각의 PU의 루마, Cb 및 Cr 예측 블록들에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다.
비디오 인코더 (20) 는 PU에 대한 예측 블록들을 생성하기 위해 인트라 예측 또는 인터 예측을 사용할 수도 있다. 비디오 인코더 (20) 가 PU의 예측 블록들을 생성하기 위해 인트라 예측을 사용하면, 비디오 인코더 (20) 는 PU에 연관된 픽처의 디코딩된 샘플들에 기초하여 PU의 예측 블록들을 생성할 수도 있다.
비디오 인코더 (20) 가 PU의 예측 블록들을 생성하기 위해 인터 예측을 사용하면, 비디오 인코더 (20) 는 PU에 연관된 픽처 이외의 하나 이상의 픽처들의 디코딩된 샘플들에 기초하여 PU의 예측 블록들을 생성할 수도 있다. 비디오 인코더 (20) 는 PU의 예측 블록들을 생성하기 위해 단방향 예측 또는 양방향 예측을 사용할 수도 있다. 비디오 인코더 (20) 가 단방향 예측을 사용하여 PU에 대한 예측 블록들을 생성하는 경우, PU는 단일 MV를 가질 수도 있다. 비디오 인코더 (20) 가 단방향 예측을 사용하여 PU에 대한 예측 블록들을 생성하는 경우, PU는 2 개의 MV들을 가질 수도 있다.
비디오 인코더 (20) 가 CU의 하나 이상의 PU들에 대한 예측 루마, Cb 및 Cr 블록들을 생성한 후, 비디오 인코더 (20) 는 그 CU에 대한 루마 잔여 블록을 생성할 수도 있다. CU의 루마 잔여 블록에서의 각각의 샘플은 CU의 예측 루마 블록들 중 하나의 예측 루마 블록에서의 루마 샘플 및 CU의 원래의 루마 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낸다. 또한, 비디오 인코더 (20) 는 CU에 대한 Cb 잔여 블록을 생성할 수도 있다. CU의 Cb 잔여 블록에서의 각각의 샘플은 CU의 예측 Cb 블록들 중 하나의 예측 Cb 블록에서의 Cb 샘플 및 CU의 원래의 Cb 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 또한 CU에 대한 Cr 잔여 블록을 생성할 수도 있다. CU의 Cr 잔여 블록에서의 각각의 샘플은 CU의 예측 Cr 블록들 중 하나의 예측 Cr 블록에서의 Cr 샘플 및 CU의 원래의 Cr 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낼 수도 있다.
더욱이, 비디오 인코더 (20) 는 쿼드트리 구획화를 사용하여 CU의 루마, Cb 및 Cr 잔여 블록들을 하나 이상의 루마, Cb 및 Cr 변환 블록들로 분해할 수도 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형 블록일 수도 있다. CU의 변환 유닛 (PU) 는 루마 샘플들의 변환 블록, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용된 신택스 구조들일 수도 있다. 따라서, CU의 각각의 TU는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록에 연관될 수도 있다. TU에 연관된 루마 변환 블록은 CU의 루마 잔여 블록의 서브블록일 수도 있다. Cb 변환 블록은 CU의 Cb 잔여 블록의 서브블록일 수도 있다. Cr 변환 블록은 CU의 Cr 잔여 블록의 서브블록일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 루마 변환 블록에 적용하여 TU에 대한 루마 계수 블록을 생성할 수도 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 Cb 변환 블록에 적용하여 TU에 대한 Cb 계수 블록을 생성할 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 Cr 변환 블록에 적용하여 TU에 대한 Cr 계수 블록을 생성할 수도 있다.
계수 블록 (예컨대, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록) 을 생성한 후, 비디오 인코더 (20) 는 그 계수 블록을 양자화할 수도 있다. 양자화는 일반적으로 변환 계수들이 그 변환 계수들을 표현하는데 이용된 데이터의 양을 가능한 한 줄이도록 양자화되어서, 추가의 압축을 제공하는 프로세스를 말한다. 비디오 인코더 (20) 가 계수 블록을 앙자화한 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 대해 콘텍스트 적응 이진 산술 코딩 (CABAC) 을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩된 신택스 엘리먼트들을 비트스트림으로 출력할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 또한, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 디코딩하기 위해 그 비트스트림을 파싱할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 디코딩된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 복원할 수도 있다. 비디오 데이터를 복원하는 프로세스는 비디오 인코더 (20) 에 의해 수행된 프로세스에 일반적으로 역일 수도 있다. 예를 들면, 비디오 디코더 (30) 는 현재 CU의 PU들에 대한 예측 샘플 블록들을 결정하기 위해 그 PU들의 MV들을 사용할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 CU의 TU들에 연관된 변환 계수 블록들을 역 양자화할 수도 있다. 비디오 디코더 (30) 는 현재 CU의 TU들에 연관된 변환 블록들을 복원하기 위해 변환 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재 CU의 PU들에 대한 예측 샘플 블록들의 샘플들을 현재 CU의 TU들의 변환 블록들의 대응하는 샘플들에 가산함으로써 현재 CU의 코딩 블록들을 복원할 수도 있다. 픽처의 각각의 CU에 대한 코딩 블록들을 복원함으로써, 비디오 디코더 (30) 는 그 픽처를 복원할 수도 있다.
일부 경우들에서, 비디오 인코더 (20) 는 병합 모드 또는 고급 MV 예측 (AMVP) 모드를 사용하여 PU의 모션 정보를 시그널링할 수도 있다. PU의 모션 정보는 PU의 모션 벡터(들) 및 PU의 참조 인덱스(들)를 포함할 수도 있다. 비디오 인코더 (20) 가 병합 모드를 사용하여 현재 PU의 모션 정보를 시그널링하는 경우, 비디오 인코더 (20) 는 병합 후보 리스트를 생성한다. 병합 후보 리스트는 후보들의 세트를 포함한다. 그 후보들은 현재 PU에 공간적으로 또는 시간적으로 이웃하는 PU들의 모션 정보를 나타낼 수도 있다. 비디오 인코더 (20) 는 그 다음에 후보 리스트로부터 후보를 선택할 수도 있고 선택된 후보에 의해 나타내어진 모션 정보를 현재 PU의 모션 정보로서 사용할 수도 있다. 더욱이, 병합 모드에서, 비디오 인코더 (20) 는 선택된 후보의 후보 리스트에서의 포지션을 시그널링할 수도 있다. 비디오 디코더 (30) 는 동일한 후보 리스트를 생성할 수도 있고 선택된 후보의 포지션의 표시에 기초하여, 선택된 후보를 결정할 수도 있다. 비디오 디코더 (30) 는 그 다음에 선택된 후보의 모션 정보를 사용하여 현재 PU에 대한 예측 샘플 블록들을 생성할 수도 있다. 다시 말해, 비디오 디코더 (30) 는, 병합 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성할 수도 있다.
AMVP 모드는 비디오 인코더 (20) 가 후보 리스트를 생성하고 후보들의 리스트로부터 후보를 선택한다는 점에서 병합 모드와 유사하다. 그러나, 비디오 인코더 (20) 가 AMVP 모드를 사용하여 현재 PU의 모션 정보를 시그널링하는 경우, 비디오 인코더 (20) 는 후보 리스트에서의 선택된 후보의 포지션을 시그널링하는 것에 더하여 현재 PU에 대한 모션 벡터 차이 (motion vector difference; MVD) 와 참조 인덱스를 시그널링할 수도 있다. 현재 PU에 대한 MVD는 현재 PU의 MV 및 선택된 MV 후보의 MV 간의 차이를 나타낼 수도 있다. 단방향 예측에서, 비디오 인코더 (20) 는 현재 PU에 대해 하나의 MVD 및 하나의 참조 인덱스를 시그널링할 수도 있다. 양방향 예측에서, 비디오 인코더 (20) 는 현재 PU에 대해 2 개의 MVD들 및 2 개의 참조 인덱스들을 시그널링할 수도 있다.
더욱이, 현재 PU의 모션 정보가 AMVP 모드를 사용하여 시그널링되는 경우, 비디오 디코더 (30) 는 동일한 후보 리스트를 생성할 수도 있고, 선택된 후보의 포지션의 표시에 기초하여, 선택된 후보를 결정할 수도 있다. 비디오 디코더 (30) 는 MVD를 선택된 후보의 MV에 가산함으로써 현재 PU의 MV를 복원할 수도 있다. 비디오 디코더 (30) 는 그 다음에 현재 PU의 복원된 MV 또는 MV들을 사용하여 현재 PU에 대한 예측 샘플 블록들을 생성할 수도 있다.
위에서 나타낸 바와 같이, MV들은 정수 픽셀 정확도 또는 서브 픽셀 정확도를 가질 수도 있다. 서브 픽셀 정확도를 갖는 MV들의 사용은 비트스트림의 코딩 효율을 증가 (즉, 비트 레이트를 감소) 시킬 수도 있다. 그러나, 서브 픽셀 정확도를 갖는 MV들의 사용은 메모리로부터 데이터를 전송하는데 필요한 대역폭의 양을 증가시킬 수도 있다. 다시 말하면, 이웃하는 샘플들로부터 샘플의 값을 보간하기 위해, 비디오 코더는 메모리로부터 각각의 이웃하는 샘플들의 값들을 전송하는 것을 필요로 할 수도 있다. 더욱이, 비디오 인코더가 MV 후보를 선택하기 위해 병합 또는 AMVP 후보 리스트에서의 상이한 MV 후보들에 대한 레이트/왜곡 값들을 비교하기 때문에, 비디오 인코더 (20) 는 병합 또는 AMVP 후보 리스트에서의 MV 후보들에 의해 나타내어진 서브 픽셀 MV들에 대한 샘플들을 보간하는데 필요한 데이터를 페치할 수도 있어, 전송되는 데이터의 양을 추가로 증가시킨다. 메모리로부터 데이터를 전송하는 것은 비교적 느린 동작일 수도 있다. 따라서, 메모리로부터 전송되는 데이터의 양을 제한하는 것이 바람직할 수도 있다.
본 개시물의 기법들에 따라, 메모리로부터 전송될 필요가 있는 데이터의 양에서의 감소는, 서브 픽셀 MV들을 정수 픽셀 정확도로 라운딩하는 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 에 의해 특정 CU 및 PU 사이즈들에 대해 달성될 수도 있다. 본 개시물에서, MV를 라운딩하는 것은 MV의 수평 또는 수직 성분 중 어느 하나 또는 양자 모두를 라운딩하는 것을 지칭할 수도 있다. 또한, 본 개시물에서, CU의 사이즈는 CU의 루마 블록의 사이즈를 지칭할 수도 있고 PU의 사이즈는 PU의 루마 블록의 사이즈를 지칭할 수도 있다. 일부 예들에서, 비디오 코더는 4x8, 8x4, 또는 더 작은 PU들에 대한 서브 픽셀 MV들을 정수 픽셀 정확도로 라운딩할 수도 있다. 이 예에서, 비디오 코더는 더 큰 사이즈들을 갖는 PU에 대한 MV들을 정수 픽셀 정확도로 라운딩하지 않는다. 예를 들면, 4x8 및 8x4 미만의 사이즈들을 갖는 PU들에 대해, 이 라운딩은 적용될 수도 있지만, 더 큰 PU들에 대해, 라운딩은 없다. 다른 예들에서, 비디오 코더는 사이즈 8x8의 PU들에 대한 서브 픽셀 MV들을 라운딩할 수도 있다.
더욱이, 일부 예들에서, 비디오 코더가 서브 픽셀 MV들을 라운딩하는 사이즈 임계값은 대역폭 감소 필요에 따라 설정될 수도 있다. 다시 말해, 사이즈 임계값은 메모리로부터 전송될 데이터의 양에서의 필요한 감소에 기초하여 설정될 수도 있다. 일부 예들에서, 비디오 코더는 이 사이즈 임계값을 적응적으로 설정할 수도 있다. 다른 예들에서, 사이즈 임계값은 미리 구성될 수도 있다.
따라서, 비디오 인코더 (20) 는, PU가 특정 사이즈를 갖는다는 결정에 응답하여, MV를 라운딩할 수도 있다. MV를 라운딩하는 것은, MV의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 병합 후보 리스트 또는 AMVP 후보 리스트를 생성하는 프로세스의 부분으로서 MV를 라운딩할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 모션 보상 동안 MV를 라운딩할 수도 있다. 더욱이, 비디오 인코더 (20) 는, 라운딩된 MV에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록을 생성할 수도 있다. 예를 들어, MV가 병합 후보 리스트의 생성 동안에 라운딩되었고 MV가 선택된 MV 후보이면, 비디오 인코더 (20) 는, 라운딩된 MV에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 다른 예에서, MV가 AMVP 후보 리스트의 생성 동안에 라운딩되었고 MV가 선택된 MV 후보이면, 비디오 인코더 (20) 는, MV 및 MVD에 기초하여 MV를 결정할 수도 있다. 더욱이, 이 예에서, 비디오 인코더 (20) 는, 결정된 MV에 의해 나타내어진 참조 샘플들에 적어도 부분적으로 기초하여 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 모션 보상 동안 MV를 라운딩하는 예들에서, 비디오 인코더 (20) 는, 라운딩된 MV에 의해 나타내어진 참조 샘플들에 기초하여, PU에 대한 예측 샘플 블록을 생성할 수도 있다. 비디오 인코더 (20) 는, PU에 대한 예측 샘플 블록에 부분적으로 기초하여 PU에 대한 잔여 샘플 블록을 생성할 수도 있다. 비디오 인코더 (20) 는, 비트스트림에서, PU에 대한 잔여 샘플 블록을 시그널링할 수도 있다. 비디오 인코더 (20) 는 샘플 블록의 잔여 샘플들을 변환 계수들로 변환하며, 그 변환 계수들을 양자화하며, 그 변환 계수들을 표현하는 신택스 엘리먼트들을 엔트로피 인코딩하고, 엔트로피 인코딩된 신택스 엘리먼트들을 비트스트림으로 출력함으로써 PU에 대한 잔여 샘플 블록을 시그널링할 수도 있다.
일부 예들에서, 비디오 디코더 (30) 는 PU가 특정 사이즈를 갖는다는 결정에 응답하여, MV를 라운딩할 수도 있다. MV를 라운딩하는 것은, 그 MV의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 병합 후보 리스트 또는 AMVP 후보 리스트를 생성하는 프로세스의 부분으로서 MV를 라운딩할 수도 있다. 다른 예들에서, 비디오 디코더 (30) 는 모션 보상 동안 MV를 라운딩할 수도 있다.
더욱이, 비디오 디코더 (30) 는, 라운딩된 MV에 적어도 부분적으로 기초하여, PU에 대한 예측 샘플 블록을 생성할 수도 있다. 예를 들어, MV가 병합 후보 리스트의 생성 동안에 라운딩되었고 MV가 선택된 MV 후보이면, 비디오 디코더 (30) 는, 라운딩된 MV에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 다른 예에서, MV가 AMVP 후보 리스트의 생성 동안에 라운딩되었고 MV가 선택된 MV 후보이면, 비디오 디코더 (30) 는, MV 및 MVD에 기초하여 MV를 결정할 수도 있다. 더욱이, 이 예에서, 비디오 디코더 (30) 는, 결정된 MV에 의해 나타내어진 참조 샘플들에 적어도 부분적으로 기초하여 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 비디오 디코더 (30) 가 모션 보상 동안 MV를 라운딩하는 예들에서, 비디오 디코더 (30) 는, 라운딩된 MV에 의해 나타내어진 참조 샘플들에 기초하여 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 비디오 디코더 (30) 는, PU에 대한 예측 샘플 블록에 적어도 부분적으로 기초하여, PU에 대한 복원된 샘플 블록을 생성할 수도 있다.
일부 예들에서, 비디오 코더, 이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30) 는, PU의 인터 예측 방향에 적어도 부분적으로 기초하여 정수 픽셀 정확도로 PU의 MV를 라운딩 (예컨대, MV의 성분들 중 어느 하나 또는 양자 모두를 라운딩) 할지 여부를 결정할 수도 있다. 다시 말해, MV 라운딩은 인터 방향 모드에 따라 수행될 수 있다. 예를 들어, PU가 단방향 예측되면, 비디오 코더는 PU의 MV들의 성분들을 정수 픽셀 정확도로 라운딩하지 않는다. 이 예에서, PU가 양방향 예측되면, 비디오 코더는 PU의 어느 하나 또는 양자 모두의 MV들의 어느 하나 또는 양자 모두의 성분들을 정수 픽셀 정확도로 라운딩한다. 예를 들면, PU가 양방향 예측되면, 비디오 코더는 PU의 하나의 MV의 어느 하나 또는 양자 모두의 성분들을 라운딩하고 PU의 다른 MV의 성분을 라운딩하지 않을 수도 있다. 이러한 식으로, 라운딩은 단방향 예측 및 양방향 예측 MV들에, 또는 양방향 예측 MV들에만 적용될 수 있다. 다른 예에서, PU가 단방향 예측되면, 비디오 코더는 PU의 MV들의 성분들을 정수 픽셀 정확도로 라운딩한다. 이 예에서, PU가 양방향 예측되면, 비디오 코더는 PU의 어느 하나 또는 양자 모두의 MV들의 어느 하나 또는 양자 모두의 성분들을 정수 픽셀 정확도로 라운딩하지 않는다. 따라서, 비디오 코더는, 특정 사이즈를 갖는 현재 PU 및 현재 PU의 인터 방향 모드 (즉, 단방향 예측되거나 또는 양방향 예측됨) 에 적어도 부분적으로 기초하여 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다.
위에서 설명된 바와 같이, 비디오 인코더 (20) 는 병합 모드 또는 AMVP 모드를 사용하여 PU의 모션 정보를 시그널링할 수도 있다. 병합 모드 및 AMVP 모드 양자 모두에서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 MV 후보들의 리스트들을 생성할 수도 있다. 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 가 MV 후보들의 리스트를 생성하는 경우, 비디오 코더는 MV 후보들의 리스트로부터 중복 MV 후보들을 제거하는 프루닝 (pruning) 프로세스를 수행할 수도 있다. 병합 모드에서, 제 1 MV 후보가 제 2 MV 후보와는 동일한 MV 및 동일한 참조 인덱스를 나타내면, 제 1 MV 후보는 제 2 MV 후보의 중복일 수도 있다. 다시 말해, 병합 모드에서, 중복 MV 후보들은 동일한 MV를 나타내고 동일한 참조 인덱스를 나타낼 수도 있다. AMVP 모드에서, 제 1 MV 후보가 제 2 MV 후보와는 동일한 MV를 나타내면, 제 1 MV 후보는 제 2 MV 후보의 중복일 수도 있다. 다시 말해, AMVP 모드에서, 중복 MV 후보들은 동일한 MV를 나타낸다.
일부 예들에서, 비디오 코더는 프루닝 프로세스를 수행하기 전에 MV 후보 리스트에서의 MV 후보들의 MV들의 성분들 중 어느 하나 또는 양자 모두를 라운딩할 수도 있다. 프루닝 프로세스를 수행하기 전에 MV들의 성분들을 라운딩하는 것은 증가된 복잡도를 대가로 MV 후보 리스트에서의 중복 MV 후보들을 감소시킬 수도 있다. 다시 말해, MV 라운딩이 프루닝 전에 행해지면, 동일한 라운딩된 MV 후보를 갖는다는 부가적인 리던던시가 피해질 수도 있다. 그러나, 프루닝 전의 MV 라운딩은 병합 MV 후보 리스트 생성 및/또는 AMVP MV 후보 리스트 생성의 프루닝 프로세스에 대한 수정들을 수반할 수도 있다. 어느 경우에나, MV 후보들에 의해 나타내어진 MV들이 정수 픽셀 정확도로 라운딩되기 때문에, 비디오 인코더 (20) 는 MV들에 의해 나타내어진 로케이션들에 대응하는 샘플들을 보간하는데 필요한 샘플 값들을 전송할 필요가 없다. 이는 비디오 인코더 (20) 가 병합 후보 리스트 또는 AMVP 후보 리스트로부터 MV 후보를 선택하고 있는 경우 메모리로부터 페치되는 데이터의 양을 감소시킬 수도 있다.
다른 예들에서, 비디오 코더는 프루닝 프로세스를 수행한 후에 MV 후보 리스트에서의 MV 후보들의 MV들의 성분들을 라운딩할 수도 있다. 프루닝 후의 MV 라운딩은 MV 후보 리스트 생성 프로세스가 HEVC 규격 초안 6과 비교하면 변화 없이 남아 있게 하는 것을 가능하게 할 수도 있다.
더욱이, 비디오 코더가 병합 모드를 사용하여 현재 PU의 모션 정보를 시그널링하는 MV 후보 리스트를 생성하는 경우, 비디오 코더는 인위적 MV 후보들을 MV 후보 리스트에 포함시킬 수도 있다. 인위적 MV 후보들은 현재 PU에 공간적으로 또는 시간적으로 이웃하는 임의의 PU들의 모션 정보를 나타내지 않는다. 예를 들어, 비디오 코더는 하나 이상의 결합된 양방향 (combined-bi) MV 후보들을 MV 후보 리스트에 포함시킬 수도 있다. 이 예에서, 결합된 양방향 MV 후보는, 이미 병합 후보 리스트에 있는 임의의 2 개의 공간적 또는 시간적 MV 후보들로부터, 제 1 MV 후보의 RefPicListL0로부터의 MV 및 제 2 MV 후보의 RefPicListL1로부터의 MV를 결합하여, 양방향 MV 후보를 만듦으로써 이루어진다. 다른 예에서, 비디오 코더는 하나 이상의 0의 MV 후보들을 MV 후보 리스트에 포함시킬 수도 있다. 0의 MV 후보는 0과 동일한 수평 및 수직 성분들을 갖는 MV를 특정할 수도 있다.
본 개시물의 하나 이상의 기법들에 따라, 비디오 코더는, 서브 픽셀 정확도를 갖는 단일 MV에 기초하여, 정수 픽셀 정확도를 갖는 다수의 MV들을 생성할 수도 있다. 비디오 코더는 서브 픽셀 정확도를 갖는 MV의 성분들 중 어느 하나 또는 양자 모두를 상이한 방향들에서 라운딩함으로써 정수 픽셀 정확도를 갖는 MV들을 생성할 수도 있다. 다시 말해, 비디오 코더는 서브 픽셀 MV의 수평 및 수직 성분들 중 어느 하나 또는 양자 모두를 다음의 더 높은 정수 값 (next-higher integer value) 으로 라운딩함으로써 제 1 정수 픽셀 MV를 생성할 수도 있고, 동일한 서브 픽셀 MV의 수평 및 수직 성분들 중 어느 하나 또는 양자 모두를 다음의 더 낮은 정수 값 (next-lower integer value) 으로 라운딩함으로써 제 2 MV를 생성할 수도 있다. MV의 성분들을 상이한 방향들에서 라운딩함으로써 생성된 MV들은, MV 후보 리스트에서의 인위적 MV 후보들 중 하나 이상을 대체할 수도 있다. 그 결과, 비디오 코더는 인위적 MV 후보들을 MV 후보 리스트에 추가하는 프로세스를 스킵할 수도 있다. 다시 말하면, MV 라운딩이 적용되는 경우, 인위적 MV 후보들을 추가하는 것은, 병합 MV 후보 리스트 구성 동안에 스킵될 수 있다.
따라서, 비디오 코더는 제 1 방향에서 MV의 하나 이상의 성분들을 정수 픽셀 정확도로 라운딩함으로써 제 1 라운딩된 MV를 생성할 수도 있고, 제 2 방향에서 MV의 하나 이상의 성분들을 정수 픽셀 정확도로 라운딩함으로써 제 2 라운딩된 MV를 생성할 수도 있다. 다시 말해, 비디오 코더는 MV의 적어도 하나의 성분을 다음의 더 높은 정수 값으로 라운딩함으로써 제 1 라운딩된 MV를 생성할 수도 있고, MV의 적어도 하나의 성분을 다음의 더 낮은 정수 값으로 라운딩함으로써 제 2 라운딩된 MV를 생성할 수도 있다. 또한, 비디오 코더는 PU에 대한 병합 또는 AMVP 후보 리스트를 생성할 수도 있다. 후보 리스트는 제 1 및 제 2 라운딩된 MV들을 각각 특정하는 제 1 및 제 2 MV 후보들을 포함할 수도 있다. 따라서, 이 예에서, 비정수 픽셀 MV는 상이한 이웃 정수 픽셀 로케이션들로 라운딩될 수도 있으며, 상이한 이웃 정수 픽셀 로케이션들은 결국 인위적 MV 후보들보다는 MV 예측변수로서 서비스함에 있어서 양호할 수도 있는 다수의 부가적인 후보들이 될 수도 있다. 이 예에서, 비디오 인코더는, 비트 스트림에서, 후보 리스트에서의 선택된 MV 후보의 인덱스를 시그널링할 수도 있다. 그렇지 않으면, 비디오 디코더는, MVD와 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 모션 벡터를 결정할 수도 있다.
현재 PU에 대한 모션 정보가 AMVP 모드에서 시그널링되는 경우, 비디오 인코더 (20) 는 MVD를 시그널링할 뿐만 아니라 선택된 MV 후보의 MV 후보 리스트 내의 포지션 및 참조 인덱스를 시그널링할 수도 있다. 비디오 디코더 (30) 는 MVD를 선택된 MV 후보에 의해 특정된 MV에 가산함으로써 PU의 MV를 결정할 수도 있다. 비디오 디코더 (30) 가 현재 PU에 대한 정수 픽셀 MV를 생성하는 것을 보장하기 위해, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 MV 후보 리스트에서의 MV 후보들의 서브 픽셀 MV들에 대해 라운딩할 수도 있다. 또한, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 MVD의 수평 (x) 및 수직 (y) 성분들 중 어느 하나 또는 양자 모두를 정수 정확도로 라운딩할 수도 있다. 비디오 인코더 (20) 는 라운딩된 MVD를 비트스트림에서 시그널링할 수도 있다. MV 후보들의 MV들 및 MVD 양자 모두가 정수 정확도를 가지기 때문에, 현재 PU에 대한 결과적인 MV는 (적어도 하나의 차원에서) 정수 정확도를 가진다.
더욱이, 일부 예들에서, 비디오 코더는, 현재 PU의 블록 사이즈 및 현재 PU의 PU 인덱스에 적어도 부분적으로 기초하여, 현재 PU의 MV의 수평 성분 및 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다. 따라서, MV 및/또는 MV 성분 라운딩은 CU에서의 PU 인덱스 및/또는 PU 사이즈에 의해 더욱 적응적으로 제어될 수도 있어서, MV 라운딩은 CU에서의 일부 PU들에만 적용된다. PU의 PU 인덱스는 코딩 순서 (예컨대, z-스캔 순서) 에 따라 PU의 CU 내의 포지션을 나타낼 수도 있다. 예를 들어, 비디오 코더는 CU의 제 1 PU만의 MV 또는 MV 성분을 라운딩하고 그 CU의 후속 PU들을 라운딩하지 않을 수도 있다. 다른 예들에서, 비디오 코더는 MV 라운딩을 CU의 제 2 PU에만 적용하고 CU의 제 1 PU에는 적용하지 않을 수도 있다. 더욱이, 일부 예들에서, 비디오 코더는 MV 라운딩을 CU의 하나 이상의 PU들의 미리 결정된 서브 세트에 대해 적용할 수도 있다. 이러한 식으로, 비디오 코더는, 특정 사이즈를 갖는 현재 PU 및 현재 PU의 PU 인덱스에 적어도 부분적으로 기초하여, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다.
MV들 또는 MV 성분들의 PU 기반 적응적 라운딩은 CU들의 비대칭 모션 구획 (asymmetric motion partition; AMP) 들뿐만 아니라 CU들의 PU들에 적용될 수도 있다. CU의 AMP들의 샘플 블록들은 CU의 코딩 블록들의 비대칭 구획들일 수도 있다. 예를 들어, CU의 루마 코딩 블록의 사이즈는 16x16일 수도 있다. 이 예에서, 16x4 및 16x12, 16x12 및 16x4, 4x16 및 12x16, 및 12x16 및 4x16의 개별 사이즈들을 갖는 AMP들의 4 개의 경우들이 있을 수도 있다. 각각의 AMP는 단일 PU를 포함하거나 단일 PU로서 역할을 할 수도 있다.
일부 예들에서, 비디오 코더는 비교적 작은 AMP들, 이를테면 16x4 또는 4x16 AMP들의 PU들의 MV들 또는 MV 성분들을 라운딩할 수도 있다. 그런 예들에서, 비디오 코더는 상대적으로 큰 AMP들, 이를테면 사이즈 16x12 또는 12x16의 AMP들의 MV들 또는 MV 성분들을 라운딩하지 않는다. 다시 말해, 최소 PU, 16x4 또는 4x16에 대해, MV들 또는 MV 성분들의 라운딩은 적용될 수 있지만, 16x12 또는 12x16의 상대적으로 더 큰 구획들에 대해, MV들 또는 MV 성분들의 라운딩은 적용되지 않는다. 이 예에서, 비디오 코더는 AMP들의 MV들 또는 MV 성분들을 라운딩할지 여부를 다음의 방도로 체크할 수도 있다:
if(PU_폭 < 8 || PU_높이 < 8) {MV 또는 MV 성분들의 라운딩을 적용}
다른 예에서, 비디오 코더는 특정한 PU들에 대한 MV들의 수직 성분들만을 라운딩할 수도 있다. 더욱이, 다른 예들에서, CU는 16x16과는 상이한 사이즈를 가질 수도 있고 그래서 AMP들의 사이즈들은 상이할 수도 있다.
정수 아닌 수들보다는 정수 수들을 시그널링하고 저장하는 것이 더 효율적일 수도 있기 때문에, MV들의 성분들은 정수 수들로서 시그널링되고 저장될 수도 있다. 예를 들면, 비디오 인코더 (20) 는 정수 픽셀 및 서브 픽셀 정확도들 양자 모두를 갖는 MV 성분들을 시그널링하기 위해 정수 값으로 된 MVD들을 사용할 수도 있다. 1/4 픽셀 정확도가 지원되는 일부 예들에서, MV 성분을 표현하는 정수는 MV 성분의 실제 값의 4 배와 동일할 수도 있다. 따라서, 값 4는 MV 성분이 1과 동일한 값을 실제로 갖는다는 것을 나타낼 수도 있다. 따라서, 값들..., -8, -4, 0, 4, 8,...은 인터 픽셀 MV 성분들의 값들을 나타낼 수도 있는 반면, 값들 -7, -6, -5, -3, -2, -1, 1, 2, 3, 5, 6, 7,...은 서브 픽셀 MV 성분들의 값들을 나타낼 수도 있다. 그런 예들에서, MV 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것은, 서브 픽셀 MV 성분을 표현하는 정수 값을 정수 픽셀 MV 성분을 표현하는 정수 값으로 대체하는 것을 수반할 수도 있다. 예를 들어, 서브 픽셀 MV 성분은 2 개의 픽셀들 간의 거리의 3/4인 포지션을 나타낼 수도 있다. 이 예에서, 값 3은 이 서브 픽셀 MV 성분을 표현할 수도 있다. 더욱이, 이 예에서, 서브 픽셀 MV 성분이 정수 픽셀 정확도로 라운딩되는 경우, 값 4는 결과적인 정수 픽셀 MV 성분을 표현할 수도 있다.
도 2는 본 개시물의 기법들을 구현할 수도 있는 일 예의 비디오 인코더 (20) 를 도시하는 블록도이다. 도 2는 설명의 목적으로 제공되고 본 개시물에서 폭넓게 예시되고 설명된 바와 같은 기법들의 제한으로서 고려되지 않아야 한다. 설명의 목적으로, 본 개시물은 HEVC 코딩의 맥락에서 비디오 인코더 (20) 를 설명한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (100), 잔여 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역 양자화 유닛 (108), 역 변환 프로세싱 유닛 (110), 복원 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터 예측 프로세싱 유닛 (120) 과 인트라 예측 프로세싱 유닛 (126) 을 포함한다. 인터 예측 프로세싱 유닛 (120) 은 모션 추정 유닛 (122) 과 모션 보상 유닛 (124) 을 포함한다. 다른 예들에서, 비디오 인코더 (20) 는 더 많거나, 더 적거나, 또는 상이한 기능성 컴포넌트들을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터의 픽처의 슬라이스에서의 각각의 CTU를 인코딩할 수도 있다. CTU들의 각각은 픽처의 동일 사이즈로 된 루마 코딩 트리 블록들 (CTB들) 및 대응하는 CTB들에 연관될 수도 있다. CTU를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 쿼드트리 구획화를 수행하여 CTU의 CTB들을 점차적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 블록은 CU들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 CTU에 연관된 CTB를 4 개의 동일 사이즈로 된 서브블록들로 구획하며, 그 서브블록들 중 하나 이상을 4 개의 동일 사이즈로 된 서브 서브블록들로 구획하는 등등을 수행할 수도 있다.
비디오 인코더 (20) 는 CTU의 CU들을 인코딩하여 CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성할 수도 있다. CU를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 CU의 하나 이상의 PU들 중에서 CU에 연관된 코딩 블록들을 구획할 수도 있다. 따라서, 각각의 PU는 루마 예측 블록 및 대응하는 크로마 예측 블록들에 연관될 수도 있다. 비디오 인코더 (20) 와 비디오 디코더 (30) 는 다양한 사이즈들을 갖는 PU들을 지원할 수도 있다. 위에서 나타낸 바와 같이, CU의 사이즈는 CU의 루마 코딩 블록의 사이즈를 말할 수도 있고 PU의 사이즈는 PU의 루마 예측 블록의 사이즈를 말할 수도 있다. 특정 CU의 사이즈가 2Nx2N이라고 가정하면, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 인트라 예측을 위한 2Nx2N 또는 NxN의 PU 사이즈들과, 인터 예측을 위한 2Nx2N, 2NxN, Nx2N, NxN, 또는 유사한 것의 대칭적 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 와 비디오 디코더 (30) 는 또한 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N의 PU 사이즈들에 대한 비대칭 구획화를 지원할 수도 있다.
인터 예측 프로세싱 유닛 (120) 은 CU의 각각의 PU에 대해 인터 예측을 수행함으로써 PU에 대한 예측 데이터를 생성할 수도 있다. PU에 대한 예측 데이터는 PU의 예측 샘플 블록들 및 그 PU에 대한 모션 정보를 포함할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은 PU가 I 슬라이스, P 슬라이스, 또는 B 슬라이스 중 어느 것에 있는지에 의존하여 CU의 PU에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU들이 인트라 예측된다. 따라서, PU가 I 슬라이스에 있으면, 인터 예측 프로세싱 유닛 (120) 은 PU에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드에서 인코딩된 블록들에 대해, 예측된 블록은 동일한 프레임 내의 이전에 인코딩된 이웃 블록들로부터 공간 예측을 사용하여 형성된다.
PU가 P 슬라이스에 있으면, 모션 추정 유닛 (122) 은 PU에 대한 참조 지역을 참조 픽처들의 리스트 (예컨대, 리스트 0) 에서의 참조 픽처들에서 검색할 수도 있다. PU에 대한 참조 지역은, 참조 픽처 내의, PU의 샘플 블록들에 가장 밀접하게 대응하는 샘플 블록들을 포함하는 지역일 수도 있다. 모션 추정 유닛 (122) 은 PU에 대한 참조 지역을 포함하는 참조 픽처의 RefPicList0에서의 포지션을 나타내는 참조 인덱스를 생성할 수도 있다. 또한, 모션 추정 유닛 (122) 은 PU의 코딩 블록 및 참조 지역에 연관된 참조 로케이션 간의 공간적 변위를 나타내는 MV를 생성할 수도 있다. 예를 들면, MV는 현재 코딩된 픽처에서의 좌표들로부터 참조 픽처에서의 좌표들로의 오프셋을 제공하는 2차원 벡터일 수도 있다. 모션 추정 유닛 (122) 은 참조 인덱스 및 MV를 PU의 모션 정보로서 출력할 수도 있다. 모션 보상 유닛 (124) 은 PU의 모션 벡터에 의해 나타내어진 참조 로케이션에 있는 실제 또는 보간된 샘플들에 기초하여 PU의 예측 샘플 블록들을 생성할 수도 있다.
PU가 B 슬라이스에 있다면, 모션 추정 유닛122) 은 PU에 대해 단방향 예측 또는 양방향 예측을 수행할 수도 있다. PU에 대한 단방향 예측을 수행하기 위해, 모션 추정 유닛 (122) 은 PU에 대한 참조 지역을 RefPicList0 또는 제 2 참조 픽처 리스트 (예컨대, "RefPicList1") 의 참조 픽처들에서 검색할 수도 있다. 모션 추정 유닛 (122) 은, PU의 모션 정보로서, 참조 지역을 포함하는 참조 픽처의 RefPicList0 또는 RefPicList1에서의 포지션을 나타내는 참조 인덱스, PU의 샘플 블록 및 참조 지역에 연관된 참조 로케이션 간의 공간적 변위를 나타내는 MV, 및 참조 픽처가 RefPicList0에 있는지 또는 RefPicList1에 있는지를 나타내는 하나 이상의 예측 방향 표시자들을 출력할 수도 있다. 모션 보상 유닛 (124) 은 PU의 모션 벡터에 의해 나타내어진 참조 지역에 있는 실제 또는 보간된 샘플들에 적어도 부분적으로 기초하여 PU의 예측 샘플 블록들을 생성할 수도 있다.
PU에 대한 양방향 인터 예측을 수행하기 위해, 모션 추정 유닛 (122) 은 그 PU에 대한 참조 지역을 RefPicList0에서의 참조 픽처들에서 검색할 수도 있고, 또한 그 PU에 대한 다른 참조 지역을 RefPicList1에서의 참조 픽처들에서 검색할 수도 있다. 모션 추정 유닛 (122) 은 참조 지역들을 포함하는 참조 픽처들의 RefPicList0 및 RefPicList1에서의 포지션들을 나타내는 참조 픽처 인덱스들을 생성할 수도 있다. 또한, 모션 추정 유닛 (122) 은 참조 지역들에 연관된 참조 로케이션 및 PU의 샘플 블록 간의 공간적 변위들을 나타내는 MV들을 생성할 수도 있다. PU의 모션 정보는 PU의 MV들 및 참조 인덱스들을 포함할 수도 있다. 모션 보상 유닛 (124) 은 PU의 모션 벡터에 의해 나타내어진 참조 지역에 있는 실제 또는 보간된 샘플들에 적어도 부분적으로 기초하여 PU의 예측 샘플 블록들을 생성할 수도 있다.
본 개시물의 하나 이상의 기법들에 따라, 인터 예측 프로세싱 유닛 (120) 은 현재 PU의 MV를 사용하여 현재 PU에 대한 예측 샘플 블록들을 생성하는 모션 보상 유닛 (124) 에 앞서 현재 PU의 MV를 라운딩할 수도 있다. 일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 현재 PU가 특정 사이즈를 가지는지 여부를 결정할 수도 있고 현재 PU의 MV가 서브 픽셀 정확도를 가지는지 여부를 결정할 수도 있다. 그런 예들에서, 인터 예측 프로세싱 유닛 (120) 은, 현재 PU가 특정 사이즈를 갖는다는 그리고 현재 PU의 MV가 서브 픽셀 정확도를 갖는다는 결정에 응답하여, MV의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 다른 예들에서, 모션 보상 유닛 (124) 은 MV 성분들을 라운딩할 수도 있다.
인터 예측 프로세싱 유닛 (120) 은 다양한 라운딩 기법들을 사용하여 MV를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 다시 말하면, 상이한 접근법들이 라운딩 목적으로 사용될 수 있다. 예를 들어, 루마 MV가 참조 픽처의 루마 어레이 내의 포지션을 나타내는 MV이다. 이 예에서, 인터 예측 프로세싱 유닛 (120) 은 4에 의한 단순한 나눗셈에 의해 또는 2만큼의 우측 시프트 연산에 의해 루마 MV를 라운딩할 수도 있는데, 루마 MV들이 1/4 픽셀 정확도를 가질 수도 있기 때문이다.
인터 예측 프로세싱 유닛 (120) 이 MV의 성분을 그 성분을 4에 의해 나눔으로써 라운딩하는 일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 그 성분을 4에 의해 나누기 전에 부가적인 오프셋을 그 성분에 가산할 수도 있다. 다시 말하면, MV가 MV의 성분의 원래의 값이며, MV'이 그 성분의 라운딩된 값인 경우, 인터 예측 프로세싱 유닛 (120) 은 다음과 같이 계산할 수도 있다:
MV' = [ (MV + 오프셋) / 4]
더욱이, 크로마 MV는 참조 픽처의 크로마 (예컨대, Cb 또는 Cr) 어레이 내의 포지션을 나타내는 MV일 수도 있다. 많은 코덱들에서, 비디오 인코더들은 크로마 MV들을 비트스트림들에서 시그널링하지 않는데, 비디오 디코더들이 크로마 MV들을 대응하는 루마 MV들로부터 계산할 수도 있기 때문이다. 4:4:4 비디오 포맷이 사용되는 예들에서, 픽처들의 크로마 어레이들은 픽처들의 루마 어레이들에 비하여 다운 샘플링되지 않는다. 따라서, 4:4:4 비디오 포맷에서, PU에 대한 크로마 MV는 PU에 대한 루마 MV와 매칭될 수도 있다. 4:2:0 비디오 포맷이 사용되는 예들에서, PU의 크로마 MV의 수평 성분은 PU의 루마 MV의 수평 성분의 1/2과 동일할 수도 있고 PU의 크로마 벡터의 수직 성분은 PU의 루마 MV의 수직 성분의 1/2과 동일할 수도 있다. 마찬가지로, 4:2:2 비디오 포맷에서, PU의 크로마 MV의 수평 성분은 PU의 루마 MV의 수평 성분의 1/2과 동일할 수도 있고 PU의 크로마 MV의 수직 성분은 PU의 루마 MV의 수직 성분과 동일할 수도 있다.
인터 예측 프로세싱 유닛 (120) 이 PU의 루마 및 크로마 MV들을 양자 모두를 함께 라운딩하면, 인터 예측 프로세싱 유닛 (120) 은 루마 및 크로마 성분들 간의 위상 변이 (phase shift) 를 피하기 위해 라운딩을 동기화할 수도 있다. 예를 들어, 4:2:0 샘플링 포맷이 사용되면, 반픽셀 정확도를 갖는 크로마 MV는 정수 픽셀 정확도를 갖는 루마 MV에 대응할 수도 있다. 이 예에서, 인터 예측 프로세싱 유닛 (120) 이 루마 MV를 정수 픽셀 정확도로 라운딩하면, 인터 예측 프로세싱 유닛 (120) 은 루마 MV와 함께 크로마 MV를 정수 픽셀 정확도 간단히 라운딩하지 못하는데, 이것이 위상 변이를 유발할 수도 있기 때문이다. 위상 변이가 발생하는 경우, 루마 MV에 의해 나타내어진 루마 샘플들은 크로마 MV에 의해 나타내어진 크로마 샘플들에 대응하지 않는다. 오히려, 크로마 MV에 의해 나타내어진 크로마 샘플들은 루마 MV에 의해 나타내어진 루마 샘플들로부터 수평으로 또는 수직으로 변위될 수도 있다. 따라서, 이 예에서, 인터 예측 프로세싱 유닛 (120) 이 루마 및 크로마 MV들 양자 모두를 라운딩하면, 인터 예측 프로세싱 유닛 (120) 은 루마 MV를 8로 나눌 수도 있고 크로마 MV를 4로 나눌 수도 있다. 다시 말하면, 인터 예측 프로세싱 유닛 (120) 은 루마 MV를 가장 가까운 정수 포지션 대신에 두 번째 가장 가까운 정수 포인트로 시프트시킬 수도 있는 반면, 인터 예측 프로세싱 유닛 (120) 은 크로마 MV를 가장 가까운 정수 포지션으로 시프트시킬 수도 있다.
다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 라운딩을 수행하기 위해 다음의 동작을 사용할 수도 있다. 이 예에서, 인터 예측 프로세싱 유닛 (120) 은 MV의 성분을 4로 나누고 다음의 공식을 사용함으로써 그 성분을 라운딩할 수도 있다:
MV' = Sign(MV) * ((abs(MV) + 1) >> 2)
위의 공식에서, MV'은 라운딩된 MV 성분을 나타낸다. Sign( )은 MV 성분이 0 이상이면 1을 반환하고 MV 성분이 0 미만이면 -1을 반환하는 함수이다. abs( )는 MV 성분의 절대 값을 반환하는 함수이다. >>는 우측 시프트 연산을 나타낸다. 유사한 라운딩 기법이 HEVC 규격 초안 6에서의 MC 스케일링 동안 사용된다. 결과적으로, 동일한 물리적 라운딩 모듈이 MV 스케일링을 위해 그리고 메모리 대역폭 감소를 위한 MV 라운딩을 위해 사용될 수도 있다. 이는 HEVC의 하드웨어 구현예들의 복잡도를 감소시킬 수도 있다.
일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 서브 픽셀 MV들을 생성한 다음 라운딩하지 않는다. 오히려, 일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 특정 사이즈들을 갖는 PU들에 대해 서브 픽셀 MV들을 생성하는 것이 제약된다. 하나의 예에서, 인터 예측 프로세싱 유닛 (120) 은 8x8보다 작은 사이즈들을 갖는 루마 블록들로는 PU들에 대한 서브 픽셀 MV들을 생성하지 않는다. 이러한 제한은 비트스트림 제약으로서 부과될 수도 있다. 따라서, 작은 블록들, 이를테면 8x8 또는 더 작은 블록들에 대해, 양방향 예측된 PU들에 대한 정수 아닌 MV들 또는 정수 아닌 MV 성분들은 비트스트림에서 존재하지 않는다. 이는 MV 예측을 위한 MV들에 또는 모션 보상을 위한 MV들에 적용할 수도 있다. 정수 아닌 MV들 또는 그것들의 성분들의 제한은 프로파일 또는 레벨 기술 (description) 에서 정의될 수도 있다.
라운딩은 위에서 그리고 본 개시물의 다른 곳에서 인터 예측 프로세싱 유닛 (120) 에 의해 비디오 인코더 (20) 에서 수행되는 것으로서 설명되어 있다. 그러나, 다른 예들에서, 라운딩은 비디오 인코더 (20) 의 다른 컴포넌트들, 이를테면 모션 추정 유닛 (122), 모션 보상 유닛 (124) 등에 의해 수행될 수도 있다. 따라서, 일부 예들에서, 라운딩은 후보 리스트 구성 동안 일어날 수도 있다. 다른 예들에서, 라운딩은 모션 보상 전에 일어날 수도 있다. 다른 예들에서, 라운딩은 모션 보상 동안 일어날 수도 있다.
이제 도 2의 예에 대해 계속 참조한다. 인트라 예측 프로세싱 유닛 (126) 은 PU에 대해 인트라 예측을 수행함으로써 그 PU에 대한 예측 데이터를 생성할 수도 있다. PU에 대한 예측 데이터는 PU에 대한 예측 샘플 블록들과 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에서의 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU에 대해 인트라 예측을 수행하기 위해, 인트라 예측 프로세싱 유닛 (126) 은 PU에 대한 예측 데이터의 다수의 세트들을 생성하기 위해 다수의 인트라 예측 모드들을 사용할 수도 있다. 인트라 예측 모드를 사용하여 PU에 대한 예측 데이터의 세트를 생성하기 위해, 인트라 예측 프로세싱 유닛 (126) 은 이웃하는 PU들의 샘플 블록들로부터 인트라 예측 모드에 연관된 방향에서 PU의 샘플 블록들을 가로질러 샘플들을 확장할 수도 있다. PU들, CU들, 및 CTU 들에 대한 좌측에서 우측으로, 상단에서 하단으로의 인코딩 순서를 가정하면, 이웃하는 PU들은 PU의 상측, 우상측, 좌상측, 또는 좌측에 있을 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 다양한 수의 인트라 예측 모드들, 예컨대, 33 개의 방향성 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU에 연관된 지역의 사이즈에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은 CU의 PU들에 대한 예측 데이터를, 그 PU들에 대한 인터 예측 프로세싱 유닛 (120) 에 의해 생성된 예측 데이터 또는 그 PU들에 대한 인트라 예측 프로세싱 유닛 (126) 에 의해 생성된 예측 데이터 중에서 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여 CU의 PU들에 대한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 샘플 블록들은 본원에서 선택된 예측 샘플 블록들로서 지칭될 수도 있다.
잔여 생성 유닛 (102) 은, CU의 루마, Cb 및 Cr 코딩 블록 및 CU의 PU들의 선택된 예측 루마, Cb 및 Cr 블록들에 기초하여, CU의 루마, Cb 및 Cr 잔여 블록들을 생성할 수도 있다. 예를 들면, 잔여 생성 유닛 (102) 은 CU의 잔여 블록들에서의 각각의 샘플이 CU의 코딩 블록에서의 샘플 및 CU의 PU의 대응하는 선택된 예측 샘플 블록에서의 대응하는 샘플 간의 차이와 동일한 값을 가지도록 CU의 잔여 블록들을 생성할 수도 있다.
변환 프로세싱 유닛 (104) 은 쿼드트리 구획화를 수행하여 CU에 연관된 잔여 블록들을 CU의 TU들에 연관된 변환 블록들로 구획할 수도 있다. 따라서, TU는 루마 변환 블록 및 2 개의 크로마 변환 블록들에 연관될 수도 있다. CU의 TU들의 루마 및 크로마 변환 블록들의 사이즈들 및 포지션들은 그 CU의 PU들의 예측 블록들의 사이즈들 및 포지션들에 기초할 수도 있거나 또는 기초하지 않을 수도 있다. "잔여 쿼드 트리" (residual quad-tree; RQT) 로 알려진 쿼드트리 구조는 지역들의 각각에 연관된 노드들을 포함할 수도 있다. CU의 TU들은 RQT의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (104) 은 CU의 각각의 TU에 대한 변환 계수 블록들을, 하나 이상의 변환들을 TU의 변환 블록들에 적용함으로써 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 다양한 변환들을 TU에 연관된 변환 블록에 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환 (DCT), 방향성 변환, 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환들을 변환 블록에 적용하지 않는다. 그런 예들에서, 변환 블록은 변환 계수 블록으로서 다루어질 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 변환 계수들의 일부 또는 전부에 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, n-비트 변환 계수는 양자화 동안에 m-비트 변환 계수로 버림될 (rounded down) 수도 있으며, 여기서 n은 m보다 크다. 양자화 유닛 (106) 은 CU에 연관된 양자화 파라미터 (QP) 값에 기초하여 CU의 TU에 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU에 연관된 QP 값을 조정함으로써 CU에 연관된 계수 블록들에 적용되는 양자화 정도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있고, 그러므로, 양자화된 변환 계수들은 원래의 변환 계수들보다 낮은 정밀도를 가질 수도 있다.
역 양자화 유닛 (108) 과 역 변환 프로세싱 유닛 (110) 은 역 양자화 및 역 변환들을 계수 블록에 각각 적용하여, 계수 블록으로부터 잔여 블록을 복원할 수도 있다. 복원 유닛 (112) 은 TU에 연관된 복원된 변환 블록을 생성하기 위해 복원된 잔여 블록을 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터의 대응하는 샘플들에 가산할 수도 있다. CU의 각각의 TU에 대한 변환 블록들을 이러한 식으로 복원함으로써, 비디오 인코더 (20) 는 CU의 코딩 블록들을 복원할 수도 있다.
필터 유닛 (114) 은 하나 이상의 블록화제거 동작들을 수행하여 CU에 연관된 코딩 블록들에서의 블록화 아티팩트들을 감소시킬 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 필터 유닛 (114) 이 복원된 코딩 블록들에 대해 하나 이상의 블록화제거 동작들을 수행한 후에 복원된 코딩 블록들을 저장할 수도 있다. 인터 예측 유닛 (120) 은 다른 픽처들의 PU들에 대해 인터 예측을 수행하기 위해 복원된 코딩 블록들을 포함하는 참조 픽처를 사용할 수도 있다. 또한, 인트라 예측 프로세싱 유닛 (126) 은 CU와 동일한 픽처에서의 다른 PU들에 대해 인트라 예측을 수행하기 위해 디코딩된 픽처 버퍼 (116) 에서의 복원된 코딩 블록들을 사용할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (20) 의 다른 기능성 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행하여 엔트로피 인코딩된 데이터를 생성할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 그 데이터에 대해 콘텍스트 적응 가변 길이 코딩 (CAVLC) 동작, CABAC 동작, 가변 대 가변 (variable-to-variable; V2V) 길이 코딩 동작, 신택스 기반 콘텍스트 적응 이진 산술 코딩 (SBAC) 동작, 확률 간격 구획화 엔트로피 (PIPE) 코딩 동작, 지수-골롬 인코딩 동작, 또는 다른 유형의 엔트로피 인코딩 동작을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들면, 그 비트스트림은 CU에 대한 RQT를 표현하는 데이터를 포함할 수도 있다.
도 3은 본 개시물의 기법들을 구현하도록 구성되는 일 예의 비디오 디코더 (30) 를 도시하는 블록도이다. 도 3은 설명의 목적으로 제공되고 본 개시물에서 폭넓게 예시되고 설명된 바와 같은 기법들로 제한하고 있지는 않다. 설명의 목적으로, 본 개시물은 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 3의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 복원 유닛 (158), 필터 유닛 (160), 및 디코딩된 픽처 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은 모션 보상 유닛 (164) 과 인트라 예측 프로세싱 유닛 (166) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능성 컴포넌트들을 포함할 수도 있다.
비디오 디코더 (30) 는 비트스트림을 수신할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 비트스트림을 파싱하여 비트스트림으로부터 신택스 엘리먼트들을 디코딩할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 비트스트림에서의 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 복원 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다.
그 비트스트림은 일련의 NAL 유닛들을 포함할 수도 있다. 비트스트림의 NAL 유닛들은 코딩된 슬라이스 NAL 유닛들을 포함할 수도 있다. 비트스트림을 디코딩하는 부분으로서, 엔트로피 디코딩 유닛 (150) 은 코딩된 슬라이스 NAL 유닛들로부터 신택스 엘리먼트들을 추출하고 엔트로피 디코딩할 수도 있다. 코딩된 슬라이스들의 각각은 슬라이스 헤더 및 슬라이스 데이터를 포함할 수도 있다. 슬라이스 헤더는 슬라이스에 관한 신택스 엘리먼트들을 포함할 수도 있다. 슬라이스 헤더에서의 신택스 엘리먼트들은 슬라이스를 포함하는 픽처에 연관된 PPS를 식별하는 신택스 엘리먼트를 포함할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 디코딩하는 것 외에도, 비디오 디코더 (30) 는 비구획된 CU에 대해 복원 동작을 수행할 수도 있다. 비구획된 CU에 대해 복원 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU의 각각의 TU에 대해 복원 동작을 수행할 수도 있다. CU의 각각의 TU에 대한 복원 동작을 수행함으로써, 비디오 디코더 (30) 는 CU의 잔여 블록들을 복원할 수도 있다.
CU의 TU에 대해 복원 동작을 수행하는 부분으로서, 역 양자화 유닛 (154) 은 TU에 연관된 계수 블록들을 역 양자화, 즉, 양자화해제 (de-quantization) 할 수도 있다. 역 양자화 유닛 (154) 은 TU의 CU에 연관된 QP 값을 사용하여 양자화 정도를 결정하고, 비슷하게, 역 양자화 유닛 (154) 에 대해 적용할 역 양자화 정도를 결정할 수도 있다. 다시 말하면, 압축 비율, 즉, 원래의 시퀀스 및 압축된 것을 표현하는데 사용된 비트들의 수의 비율은, 변환 계수들을 양자화하는 경우에 사용된 QP의 값을 조정함으로써 제어될 수도 있다. 압축 비율은 또한 채용된 엔트로피 코딩하는 방법에 의존할 수도 있다.
역 양자화 유닛 (154) 이 계수 블록을 역 양자화한 후, 역 변환 프로세싱 유닛 (156) 은 TU에 연관된 잔여 블록을 생성하기 위해 하나 이상의 역 변환들을 계수 블록에 적용할 수도 있다. 예를 들어, 역 변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 카루넨-뢰베 변환 (Karhunen-Loeve transform; KLT), 역 회전 변환, 역 방향성 변환, 또는 다른 역 변환을 계수 블록에 적용할 수도 있다.
PU가 인트라 예측을 사용하여 인코딩되면, 인트라 예측 프로세싱 유닛 (166) 은 PU에 대한 예측 블록들을 생성하기 위해 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 인트라 예측 모드를 사용하여 공간적으로 이웃하는 PU들의 예측 블록들에 기초하여 PU에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 비트스트림으로부터 디코딩된 하나 이상의 신택스 엘리먼트들에 기초하여 PU에 대한 인트라 예측 모드를 결정할 수도 있다.
예측 프로세싱 유닛 (152) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 제 1 참조 픽처 리스트 (RefPicList0) 및 제 2 참조 픽처 리스트 (RefPicList1) 를 구성할 수도 있다. 더욱이, PU가 인터 예측을 사용하여 인코딩되면, 엔트로피 디코딩 유닛 (150) 은 그 PU에 대한 모션 정보를 추출할 수도 있다. 모션 보상 유닛 (164) 은, PU의 모션 정보에 기초하여, PU에 대한 하나 이상의 참조 지역들을 결정할 수도 있다. 모션 보상 유닛 (164) 은, PU에 대한 하나 이상의 참조 블록들에서의 샘플 블록들에 기초하여, PU에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다.
위에서 나타낸 바와 같이, 비디오 인코더 (20) 는 병합 모드 또는 AMVP 모드를 사용하여 PU의 모션 정보를 시그널링할 수도 있다. 비디오 인코더 (20) 가 AMVP 모드를 사용하여 현재 PU의 모션 정보를 시그널링하는 경우, 엔트로피 디코딩 유닛 (150) 은, 비트스트림으로부터, 참조 인덱스, 현재 PU에 대한 MVD, 및 후보 인덱스를 디코딩할 수도 있다. 더욱이, 모션 보상 유닛 (164) 은 현재 PU에 대한 AMVP 후보 리스트를 생성할 수도 있다. AMVP 후보 리스트는 하나 이상의 MV 예측변수 후보들을 포함한다. MV 예측변수 후보들의 각각은 현재 PU에 공간적으로 또는 시간적으로 이웃하는 PU의 MV를 특정한다. 모션 보상 유닛 (164) 은, 후보 인덱스에 적어도 부분적으로 기초하여, AMVP 후보 리스트에서 선택된 MV 예측변수 후보를 결정할 수도 있다. 모션 보상 유닛 (164) 은 그 다음에 MVD를 선택된 MV 예측변수 후보에 의해 특정된 MV에 가산함으로써 현재 PU의 MV를 결정할 수도 있다. 다시 말해, AMVP에 대해, MV는 MV = MVP + MVD로서 계산되며, 여기서 모션 벡터 예측변수 (MVP) 의 인덱스는 시그널링되고 MVP는 AMVP 리스트로부터의 (예를 들어, 공간적 또는 시간적) MV 후보들 중 하나이고, MVD는 디코더 측으로 시그널링된다.
현재 PU가 양방향 예측되면, 엔트로피 디코딩 유닛 (150) 은 비트스트림으로부터 부가적인 참조 인덱스, MVD, 및 후보 인덱스를 디코딩할 수도 있다. 모션 보상 유닛 (164) 은 부가적인 참조 인덱스, MD, 및 후보 인덱스를 사용하여 위에서 설명된 프로세스를 반복하여 현재 PU에 대한 제 2 MV를 도출할 수도 있다. 이러한 식으로, 모션 보상 유닛 (164) 은 RefPicList0에 대한 MV (RefPicList0 MV) 및 RefPicList1에 대한 MV (즉, RefPicList1 MV) 를 도출할 수도 있다.
HEVC 규격 초안 6에서, MVD는, 낮은 지연 조건이 참이면, RefPicList1에 대해 시그널링되지 않는다. 낮은 지연 조건은, 임의의 참조 프레임의 픽처 순서 카운트 (POC) 값이 현재 픽처의 POC 값 미만이면, 참이 될 수도 있다. 낮은 지연 조건이 참이면, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 RefPicList1에 대한 MVD가 0과 동일하다고 추정 (즉, 자동으로 결정) 할 수도 있다. 낮은 지연 조건이 참인지 여부에 상관없이, 비디오 인코더 (20) 는, 현재 PU의 모션 정보가 AMVP 모드를 사용하여 시그널링되면, RefPicList0에 대한 MVD를 시그널링한다.
PU의 MV가 정수 픽셀 정확도를 가지는 것이라고 인터 예측 프로세싱 유닛 (120) 이 결정하면, 인터 예측 프로세싱 유닛 (120) 은 서브 픽셀 정확도를 가지는 MVP를 선택할 수도 있다. 그러나, 이 경우, 인터 예측 프로세싱 유닛 (120) 은, 선택된 MVP에 가산된 경우 정수 픽셀 MV가 되게 하는 MVD를 생성하고 시그널링할 수도 있다. 예를 들어, 선택된 MVP가 반픽셀 정확도를 가지면, 인터 예측 프로세싱 유닛 (120) 은 반픽셀 정확도를 갖는 MVD를 생성하고 시그널링할 수도 있다. 이러한 식으로, MV가 정수 픽셀 MV인 것을 보장하기 위해, MVD가 또한 비디오 디코더 (30) 에 시그널링된다면 MVP는 정수 픽셀 정확도를 가질 필요가 없는데, 서브 픽셀 MVP가 MVD에 의해 보상될 수도 있고 MVP 및 MVD의 합은 여전히 정수 픽셀 정확도를 가질 수 있기 때문이다.
일부 예들에서, 모든 MVD 값들이 비트스트림에서 시그널링되는 것은 아니다. 예를 들어, PU의 모션 정보가 AMVP 모드를 사용하여 시그널링되고 특정 신택스 엘리먼트 (예컨대, mvd_l1_zero_flag) 가 특정 값 (예컨대, 1) 을 가지는 경우, PU에 대한 RefPicList1 MVD는 비트스트림으로부터 파싱 (또는 그 비트스트림에서 시그널링) 되지 않는다. 이 예에서, 특정 신택스 엘리먼트가 상이한 값 (예컨대, 0) 을 가지면, PU에 대한 RefPicList1MVD는 비트스트림에서 시그널링되고 그 비트스트림으로부터 파싱된다. 특정 신택스 엘리먼트 (예컨대, mvd_l1_zero_flag) 는 낮은 지연 조건이 참인 경우에 가능하게 될 수도 있다. 따라서, 일부 예들에서, 낮은 지연 조건이 참인 경우, 인터 예측 프로세싱 유닛 (120) 은 현재 PU에 대한 RefPicList1 MVD를 시그널링하지 않는다. RefPicList1 MVD는, PU의 RefPicList1 MV를 결정하기 위해 생성된 AMVP 후보 리스트에서의 MVP (즉, RefPicList1 MVP) 및 PU의 RefPicList1 MV (즉, RefPicList1에서의 참조 픽처 내의 로케이션을 나타내는 MV) 간의 차이를 나타내는 MVD이다. 인터 예측 프로세싱 유닛 (120) 이 현재 PU에 대한 RefPicList1 MVD를 시그널링하지 않는 경우 및 현재 PU의 RefPicList1 MV가 정수 픽셀 정확도를 가지는 것이라고 인터 예측 프로세싱 유닛 (120) 이 결정하는 경우, 인터 예측 프로세싱 유닛 (120) 은, 서로 가산되는 경우 정수 픽셀 RefPicList1 MV가 되는 서브 픽셀 RefPicList1 MVP 및 서브 픽셀 RefPicList1 MVD를 선택할 수 없다. 따라서, RefPicList1 MVD에 대한 MVD의 시그널링이 없는 경우, 이러한 보상은 불가능할 수도 있고, 그 결과 RefPicList1 MVP는 정수 픽셀 정확도로 라운딩되어야 할 수도 있다. 이러한 식으로, RefPicList1 MVD가 비트스트림에서 시그널링되지 않는 경우, 현재 PU의 RefPicList1 MV가 정수 픽셀 정확도를 가지는 것인 경우, 및 선택된 RefPicList1 MVP가 서브 픽셀 정확도를 가지는 경우, 인터 예측 프로세싱 유닛 (120) 은 RefPicList1 MVP를 정수 픽셀 정확도로 라운딩할 수도 있다. 또한, RefPicList 1 MVD가 비트스트림에서 시그널링되지 않는 경우, 현재 PU의 RefPicList1 MV가 정수 픽셀 정확도를 가지는 것인 경우, 및 선택된 RefPicList1 MVP가 서브 픽셀 정확도를 가지는 경우, 비디오 디코더 (30) 는 RefPicList1 MVP를 정수 픽셀 정확도로 라운딩할 수도 있고 결과적인 정수 픽셀 MVP를 사용하여 RefPicList1 참조 블록을 결정할 수도 있다.
일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 참조 픽처 리스트들인 RefPicList0 및 RefPicList1 양자 모두로부터의 MV들에 대해 라운딩을 적용하여, MVD에 대해 더 많은 융통성을 제공할 수도 있다. MVD의 실제 크기는 감소될 수 있는데, 여러 소수 (fractional) 값들이 동일한 정수 값으로 라운딩될 수 있고 비디오 인코더가 최소의 것을 선택할 수도 있어서이다. 이 경우, MV는 공식 MV = [MVP + MVD]에 의해 주어질 수 있으며, 여기서 꺽쇠 괄호 []는 라운딩 함수를 표현한다. 예를 들어, 인터 예측 프로세싱 유닛 (120) 은 동일한 MVP를 둘 이상의 상이한 서브 픽셀 MVD들에 가산할 수도 있고 결과적인 MV들을 라운딩하여 동일한 MV를 획득할 수도 있다. 예를 들면, 이 예에서, MVP는 3과 동일할 수도 있으며, 제 1 MVD는 2와 동일할 수도 있고, 제 2 MVD는 0과 동일할 수도 있다. 이 경우, 인터 예측 프로세싱 유닛 (120) 은 MVP를 제 1 및 제 2 MVD에 가산하는 결과로 생기는 MV들 양자 모두를 4로 라운딩한다 (즉, [3+2] = [5] = 4 및 [3+0] = [3] = 4, 여기서 꺽쇠 괄호 []는 라운딩 함수를 표현한다). 이 경우, 인터 예측 프로세싱 유닛 (120) 은 제 2 MVD를 시그널링할 수도 있는데 더 적은 비트들이 제 1 MVD보다는 제 2 MVD를 시그널링하는데 필요할 수도 있기 때문이다.
위에서 언급했듯이, 인터 예측 프로세싱 유닛 (120) 은 MV의 성분들 (MVx 및 MVy) 양자 모두를 라운딩할 수도 있다. 다른 예들에서, 인터 예측 프로세싱 유닛 (120) 은 MV의 오직 하나의 성분 (예컨대, MVx 또는 MVy) 만을 라운딩할 수도 있다. 인터 예측 프로세싱 유닛 (120) 이 MV의 수평 성분만을 라운딩하고 현재 PU의 모션 정보가 AMVP 모드를 사용하여 시그널링되는 예들에서, 라운딩 연산은 다음과 같이 표현될 수도 있으며: MVx = [MVPx + MVDx], 여기서 꺽쇠 괄호 [ ]는 라운딩을 나타낸다. 마찬가지로, 인터 예측 프로세싱 유닛 (120) 이 MV의 수직 성분만을 라운딩하고 현재 PU의 모션 정보가 AMVP 모드를 사용하여 시그널링되는 예들에서, 라운딩 연산은 다음과 같이 표현될 수도 있으며: MVy = [MVPy + MVDy], 여기서 꺽쇠 괄호 [ ]는 라운딩을 나타낸다.
다른 예들에서, 인터 예측 프로세싱 유닛 (120) 은 MVD의 성분들 중 어느 하나 또는 양자 모두가 정수 픽셀 정확도를 가자도록 강제할 수도 있다. 그런 예들에서, 인터 예측 프로세싱 유닛 (120) 은 MVD의 성분들 중 어느 하나 또는 양자 모두의 라운딩된 버전들을 시그널링할 수도 있다. 예를 들면, 인터 예측 프로세싱 유닛 (120) 은, MVD 대신에, MVD/4, MVDx/4, 또는 MVDy/4를 시그널링할 수도 있다. MVD의 성분들 중 어느 하나 또는 양자 모두를 라운딩하는 것은 시그널링 오버헤드를 감소시킬 수도 있는데, MVD 이진화 길이가 더 짧아질 수도 있기 때문이다. 시그널링 오버헤드는 비트스트림에서 MVD를 시그널링하는데 사용된 비트들의 수일 수도 있다. MVD 이진화 길이는 MVD의 이진화된 버전에서 엔트로피 (예컨대, CABAC) 코딩을 위한 비트들의 수일 수도 있다.
인터 예측 프로세싱 유닛 (120) 이 MVD의 라운딩된 버전을 시그널링하는 적어도 일부 예들에서, 정수 픽셀 MVD는 다음과 같이 정의될 수 있다:
MV = [MVP] + (MVD << 2)
그런 예들에서, 비디오 디코더 (30) 는 MV를 다음과 같이 복원할 수도 있다:
MV = [MVP + (MVD<<2)]
대안으로, 비디오 디코더 (30) 는 MV를 다음과 같이 복원될 수도 있다:
MV = [MVP] + (MVD<<2)
이 대안에서, 비디오 디코더 (30) 는 MVP만을 라운딩한다. MV를 복원하는 이들 기법들 중 어느 하나는, MVD가 정수 픽셀 정확도를 가지면, 동일한 결과들을 제공할 수도 있다.
MVD의 수평 성분이 정수 픽셀 정확도를 가질 것을 인터 예측 프로세싱 유닛 (120) 이 강제하는 예들에서, MVD의 수평 성분은 다음과 같이 계산될 수도 있으며:
MVDx = [MVx - [MVPx]]>>2
그리고 비디오 디코더 (30) 는 다음과 같이 MVx를 복원할 수도 있다:
MVx = [MVPx + (MVDx<<2)]
대안으로, 비디오 디코더 (30) 는 다음과 같이 MVx를 복원할 수도 있다:
MVx = [MVPx] + (MVDx<<2)
마찬가지로, MVD의 수직 성분이 정수 픽셀 정확도를 가질 것을 인터 예측 프로세싱 유닛 (120) 이 강제하는 예들에서, MVD의 수직 성분은 다음과 같이 계산될 수도 있으며:
MVDy = [MVy - [MVPy]]>>2
그리고 비디오 디코더 (30) 는 다음과 같이 MVy를 복원할 수도 있다:
MVy = [MVPy + (MVDy<<2)]
대안으로, 비디오 디코더 (30) 는 다음과 같이 MVy를 복원할 수도 있다:
MVy = [MVPy] + (MVDy<<2)
일부 예들에서, MV들, MVP들, 또는 MVD들의 라운딩은, MV의 성분들 양자 모두, 또는 MV의 하나의 성분 (MVx 또는 MVy), 또는 2 개의 참조 픽처 리스트들 중 하나의 참조 픽처 리스트로부터의 MV를 라운딩하는 측면에서, 또는 어떤 블록 사이즈들이 라운딩될 것인지의 측면에서 병합 MV 후보들의 라운딩과 동기화될 수도 있다. 다시 말해, MV들, MVP들, 또는 MVD들은, 병합 MV 후보들의 MV들이 라운딩되는 것과 동일한 방도로 라운딩될 수도 있다. 본 개시물의 다른 곳에서 설명되는 라운딩 방법들은, 모션 정보가 병합 모드 또는 AMVP 모드에서 시그널링되는 경우, MV들, MVP들, 또는 MVD들을 라운딩하는데 사용될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 의 인터 예측 프로세싱 유닛 (120) 은 MV들을 라운딩하지 않는다. 오히려, MV들의 라운딩은 모션 보상 유닛들 (124, 164) 에 의한 모션 보상 동안 발생할 수도 있다. MV들의 라운딩이 모션 보상 스테이지에서 발생하는 경우, PU에 대해 시그널링된 또는 도출된 MV는, PU 사이즈에 상관없이, 서브 픽셀 정확도를 가질 수도 있다. 예를 들면, 비디오 인코더 (20) 는, 비트 스트림에서, 현재 PU의 서브 픽셀 MVD를 시그널링할 수도 있다. 그러나, 모션 보상 동안, 모션 보상 유닛들 (124, 164) 은 PU의 서브 픽셀 MV를 정수 픽셀 정확도로 라운딩할 수도 있고 결과적인 정수 픽셀 MV를 사용하여 PU의 참조 블록의 로케이션을 결정할 수도 있다. 모션 보상 유닛들 (124, 164) 은, 인터 예측 프로세싱 유닛 (120) 이 MV들 또는 MV 성분들을 라운딩하는 본 개시물에서 설명되는 방도들 중 적어도 일부로, MV들 또는 MV 성분들을 라운딩할 수도 있다.
인터 예측 프로세싱 유닛 (120) 이 서브 픽셀 MV들을 정수 픽셀 정확도로 라운딩하는 예들과는 달리, 모션 보상 유닛들 (124, 164) 은 계속되는 블록들의 MV들을 예측하기 위해 라운딩되지 않은 서브 픽셀 MV들을 사용할 수도 있다. 계속되는 블록들은 코딩 순서에서 현재 PU를 뒤따르는 PU들일 수도 있다. 예를 들어, 인터 예측 프로세싱 유닛 (120) 은 특정 PU에 대한 서브 픽셀 MV를 생성할 수도 있고 모션 보상 유닛들 (124, 164) 은 모션 보상 동안 서브 픽셀 MV를 정수 픽셀 MV로 라운딩할 수도 있다. 이 예에서, 모션 보상 유닛들 (124, 164) 이 계속되는 PU에 대한 병합 후보 리스트들 또는 AMVP 후보 리스트들을 생성하는 경우, 병합 후보 리스트들 또는 AMVP 후보 리스트들은 특정 PU에 대한 원래의 서브 픽셀 MV를 포함하지만 라운딩된 정수 픽셀 MV를 포함하지 않을 수도 있다. 그 반면, 특정 PU의 서브 픽셀 MV가 모션 추정 동안 라운딩되는 경우, 계속되는 PU에 대한 병합 후보 리스트들 또는 AMVP 후보 리스트들은 서브 픽셀 MV가 아니라 계속되는 PU에 대한 라운딩된 정수 픽셀 MV를 포함할 수도 있다.
모션 보상 유닛들 (124, 164) 이 MV들을 라운딩하는 예들에서, 모션 보상 유닛들 (124, 164) 은, PU의 사이즈에 적어도 부분적으로 기초하여, PU의 MV를 라운딩할지 여부를 결정할 수도 있다. 더욱이, 일부 예들에서, 모션 보상 유닛들 (124, 164) 은, PU가 단방향 예측되는지 또는 양방향 예측되는지에 적어도 부분적으로 기초하여, PU의 MV를 라운딩할지 여부를 결정할 수도 있다. 예를 들어, 모션 보상 유닛들 (124, 164) 은 사이즈 8x4 또는 4x8의 양방향 예측된 PU들의 MV들 (또는 MV들의 수직 성분) 만을 인터 픽셀 정밀도로 라운딩할 수도 있다. 다시 말해, 사이즈 8x4 또는 4x8을 갖는 양방향 블록들에 대해서만, MV 또는 MVy 성분들은 모션 보상 스테이지에서 정수 픽셀 정밀도로 라운딩될 수도 있다.
더욱이, 모션 보상 유닛들 (124, 164) 이 MV들을 라운딩하는 예들에서, 서브 픽셀 MV들은 PU들의 사이즈들에 상관없이 허용될 수도 있다. 따라서, 그런 예들에서, 비디오 인코더 (20) 는 HEVC 규격 초안 6에서 설명된 방도로 MVD들을 시그널링할 수도 있다. 다시 말해, 서브 픽셀 MV들이 블록 사이즈에 상관없이 허용되므로, MVD 시그널링에서는 변화가 필요하지 않을 수도 있다.
모션 보상 유닛들 (124, 164) 이 MV들을 라운딩하는 일부 예들에서, 모션 보상 유닛들 (124, 164) 은 루마 MV들 또는 MV 성분들만을 라운딩할 수도 있다. 다른 예들에서, 모션 보상 유닛들 (124, 164) 은 크로마 MV들 또는 MV 성분들만을 라운딩할 수도 있다. 또 다른 예들에서, 모션 보상 유닛들 (124, 164) 은 루마 및 크로마 MV들 또는 MV 성분들 양자 모두를 라운딩할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는, 비트스트림에서, MV가 모션 보상 동안 라운딩될 것임을 나타내는 신택스 엘리먼트 (예컨대, 플래그) 를 시그널링할 수도 있다. 따라서, 모션 보상 유닛 (164) 은, 신택스 엘리먼트에 적어도 부분적으로 기초하여, PU의 서브 픽셀 MV를 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다. 예를 들면, 양방향 예측된 블록들에 대한 MV 라운딩을 통한 MV 정밀도의 제한은, AMVP 모드에 대한 MV/MVP 또는 병합 리스트 구성 중 어느 하나에서, 플래그를 통해 스위치 온 또는 오프될 수도 있다. 비디오 인코더 (20) 는 비트스트림의 다양한 레벨들에서 신택스 엘리먼트를 시그널링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는, 특정 레벨, 이를테면 픽처 레벨 또는 슬라이스 레벨로 헤더에서, 또는 적응적 파라미터 세트에서 신택스 엘리먼트를 시그널링할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는, 더 미세한 시그널링 구조를 위해, 더 낮은 레벨, 이를테면 CTU (LCU) 레벨, CU 레벨, 또는 PU 레벨에서 신택스 엘리먼트를 시그널링할 수도 있다.
이제 도 3에 대해 계속 참조한다. 복원 유닛 (158) 은, 적용가능한 것으로서, CU의 TU들에 연관된 루마, Cb 및 Cr 변환 블록들과 그 CU의 PU들의 예측 루마, Cb 및 Cr 블록들, 즉 인트라 예측 데이터 또는 인터 예측 데이터 중 어느 하나를 사용하여 CU의 루마, Cb 및 Cr 코딩 블록들을 복원할 수도 있다. 예를 들어, 복원 유닛 (158) 은 루마, Cb 및 Cr 변환 블록들의 샘플들을 예측 루마, Cb 및 Cr 블록들의 대응하는 샘플들에 가산하여 CU의 루마, Cb 및 Cr 코딩 블록들을 복원할 수도 있다.
필터 유닛 (160) 은 블록화제거 동작을 수행하여 CU의 루마, Cb 및 Cr 코딩 블록들에 연관된 블록화 아티팩트들을 감소시킬 수도 있다. 비디오 디코더 (30) 는 CU의 루마, Cb 및 Cr 코딩 블록들을 디코딩된 픽처 버퍼 (162) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속하는 모션 보상, 인트라 예측, 및 디스플레이 디바이스, 이를테면 도 1의 디스플레이 디바이스 (32) 상의 프레젠테이션을 위해 참조 픽처들을 제공할 수도 있다. 예를 들면, 비디오 디코더 (30) 는, 디코딩된 픽처 버퍼 (162) 에서의 루마, Cb 및 Cr 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다. 이러한 식으로, 비디오 디코더 (30) 는, 비트스트림으로부터, 중대한 루마 계수 블록의 변환 계수 레벨들을 추출하며, 그 변환 계수 레벨들을 역 양자화하며, 변환을 그 변환 계수 레벨들에 적용하여 변환 블록을 생성하며, 그 변환 블록에 적어도 부분적으로 기초하여, 코딩 블록을 생성하고, 그 코딩 블록을 디스플레이를 위해 출력할 수도 있다.
도 4는 2차원 (2D) 보간을 위해 페치된 블록 사이즈를 예시하는 개념도이다. 주어진 포지션에서의 값은 그 포지션을 통과하는 1차원 수평, 수직, 또는 대각선에서의 샘플들에 기초한 1차원 보간을 사용하여 계산될 수도 있다. 주어진 포지션의 값은 주어진 포지션을 포함하는 2차원 공간에 배열된 샘플들에 기초한 2차원 보간을 사용하여 계산될 수도 있다. 예를 들면, 주어진 포지션의 값이 2차원 보간을 사용하여 계산되는 경우, 그 값은 주어진 포지션을 중심에 갖는 X자형 패턴으로 배열된 샘플들에 기초하여 계산될 수도 있다.
일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은, 최악의 경우의 고려에 기초하여, MV의 하나 이상의 성분들을 라운딩할지 여부를 결정할 수도 있다. 다시 말해, 라운딩될 MV는 최악의 경우의 고려 (즉, 최악의 경우의 시나리오) 에 의해 정의될 수 있다. 본 개시물에서, "최악의 경우의 시나리오"는 메모리로부터 페치된 샘플들의 수가 가장 큰 시나리오를 말할 수도 있다. 예를 들어, HEVC 규격 초안 6에서 4x4 블록들이 가능하지 않으면, 메모리 대역폭 요건들의 측면에서의 최악의 경우는 2D 보간을 이용하는 4x8 및 8x4 양방향 예측된 PU들 (즉, MVx 및 MVy 양자 모두가 서브 픽셀 정확도를 가지며, 여기서 MVx는 MV의 수평 성분이고 MVy는 MV의 수직 성분임) 일 수도 있다. 이 예에서, 4:2:0 비디오 포맷이 사용되면, 8-탭 보간 필터가 루마 샘플에 대해 사용되면 그리고 4-탭 보간 필터가 크로마 샘플들에 대해 사용되면, 모션 보상 유닛 (이를테면 모션 보상 유닛 (124) 또는 모션 보상 유닛 (164)) 은 메모리로부터 PU의 8x4 루마 블록에 대한 사이즈 15x11의 2 개의 블록들과 그 PU의 4x2 크로마 블록들에 대한 사이즈 7x5의 4 개의 블록들을 페치할 수도 있다. 이 예에서, 4x2 크로마 블록들은 8x4 루마 블록에 대응하는데, 4:2:0 비디오 포맷에서, 크로마 블록들이 수평 및 수직 방향들 양자 모두에서 다운 샘플링되기 때문이다.
대개는, 보간을 위해 모션 보상 유닛에 의해 페치된 블록 사이즈는 (N - 1 + W) * (N - 1 + H) 이며, 여기서 N은 필터 길이이며, W는 블록의 폭이고, H는 블록의 높이이다. 필터 길이 (즉, 보간 필터의 길이) 는 특정 라인을 따르는 얼마나 많은 정수 포지션 샘플들이 보간된 값을 계산하는데 사용되는지를 나타낸다. 도 4의 예에서 도시된 바와 같이, 페치된 블록의 높이는 PU의 샘플 블록의 높이를 넘어서 대략 보간 필터의 길이만큼 연장할 수도 있다. 따라서, PU의 샘플 블록 상측의 페치된 샘플들의 수는 N/2 - 1과 동일할 수도 있고 PU의 샘플 블록 하측의 페치된 샘플들의 수는 N/2와 동일할 수도 있다.
다른 예들에서, 메모리 대역폭 요건들은 인터 예측 프로세싱 유닛 (120) 이 8x8보다 작은 루마 예측 블록들을 갖는 PU들에 대해 MV 성분들을 라운딩하도록 될 수도 있다. 다시 말하면, 4x8 및 8x4 블록들이 페치될 샘플들의 수들의 측면에서 더 이상 최악의 경우의 시나리오가 아니도록 메모리 대역폭 요건들이 4x8 및 8x4 블록들에 대해 감소된다고 가정하면, 다음 최악 (next worst) 의 경우의 시나리오는 2D 보간을 이용한 8x8 양방향으로 예측된 PU들이다. 일부 이러한 예들에서, 모션 보상 유닛 (예컨대, 모션 보상 유닛들 (124, 164)) 은 사이즈 15x15의 2 개의 루마 참조 블록들 및 사이즈 7x7의 4 개의 크로마 참조 블록들을 페치할 수도 있다. 이 예에서, 모션 보상 유닛은 2 개의 루마 참조 블록들 및 4 개의 크로마 참조 블록들을 페치하는데, 양방향 예측에서, PU의 루마 예측 블록 및 PU의 크로마 예측 블록들 각각이 2 개의 참조 블록들로부터 결정되기 때문이다. 메모리 대역폭 요건들의 측면에서 최악의 경우의 시나리오가 2D 보간을 이용한 16x8 양방향으로 예측된 PU들인 예들에서, 모션 보상 유닛은 사이즈 23x15의 2 개의 루마 참조 블록들 및 사이즈 11x7의 4 개의 크로마 (예컨대, U 및 V) 참조 블록들을 페치할 수도 있다.
하나의 최악의 경우의 시나리오로부터 다음 최악의 경우의 시나리오로 개선하는 것을 고려하여, 페치된 픽셀들의 수를 다음 최악의 경우보다 적어지도록 제한하는 방법들이 적합할 수도 있다. 다시 말하면, CU의 PU들이 최악의 경우의 시나리오에 연관된 구성 (예컨대, 8x4 양방향 예측된 PU들) 을 가지는 경우, 비디오 코더, 이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30) 는, CU의 PU들이 차악 (next-to-worst) 구성 (예컨대, 8x8 양방향 예측된 PU들) 을 가지면 페치될 것보다 더 적은 픽셀들이 페치되는 그런 방도로 서브 픽셀 MV들을 라운딩할 수도 있다. MV 라운딩의 다양한 방법들이 최악의 경우의 시나리오를 감소시키기 위해 가능하다. 다시 말해, 비디오 코더는 최악의 경우의 시나리오 (즉, 최대 양의 데이터가 CU의 PU들에 대한 예측 블록들을 생성하기 위해 메모리로부터 전송되는 시나리오) 의 발생을 줄이기 위해 다양한 라운딩 방법들을 구현할 수도 있다. 예를 들어, 인터 예측 프로세싱 유닛 (120) 은 양방향으로 예측된 PU의 MV들 양자 모두를 라운딩할 수도 있다. 다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 양방향으로 예측된 PU의 하나의 MV만을 라운딩할 수도 있다. 다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 양방향으로 예측된 PU의 어느 하나 또는 양자 모두의 MV들의 하나의 성분 (예컨대, MVx 또는 MVy) 만을 라운딩할 수도 있다.
다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 직사각형 PU들의 배향들에 기초하여 직사각형 PU들의 MV 성분들을 선택적으로 라운딩할 수도 있다. 다시 말해, 직사각형 형상으로 된 PU들에 대해, MV 라운딩은 PU 배향에 의존할 수 있다. 직사각형 PU는 직사각형 (즉, 비-정사각형) 샘플 블록들을 갖는 PU이다. 예를 들면, 직사각형 PU는 8x4 또는 4x8 루마 샘플 블록을 가질 수도 있다. 하나의 예에서, 인터 예측 프로세싱 유닛 (120) 은 수평으로 배향된 PU에 대해 MV의 수직 성분 (즉, MVy) 만을 라운딩할 수도 있다. 이 예에서, 인터 예측 프로세싱 유닛 (120) 은 수직으로 배향된 PU에 대해 MV의 수평 성분 (즉, MVx) 만을 라운딩할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 또한 PU의 배향에 기초하여 MV의 성분들 중 어느 하나 또는 양자 모두를 라운딩할지 여부를 결정할 수도 있다. 따라서, 비디오 코더는, 특정 사이즈를 갖는 현재 PU 및 현재 PU의 배향에 적어도 부분적으로 기초하여, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정할 수도 있다.
다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 MV 성분들을 교차 방식으로 라운딩할 수도 있다. 다시 말하면, 인터 예측 프로세싱 유닛 (120) 은 PU의 제 1 MV의 MVx 성분을 라운딩할 수도 있고 PU의 제 2 MV의 MVy 성분을 라운딩할 수도 있거나, 또는 반대의 경우로도 마찬가지로 할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 또한 MV 성분들을 교차 방식으로 라운딩할 수도 있다. 따라서, 비디오 코더는, 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여, 제 1 모션 벡터의 수직 성분이 아니라 수평 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있고, 현재 PU의 제 2 모션 벡터의 수평 성분이 아니라 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다.
아래의 표 1은, 인터 예측 프로세싱 유닛 (120) 이 다양한 라운딩 기법들을 사용하는 경우에 페치되는 픽셀들의 수를 나타낸다.
PU 사이즈 | 방법 | 루마 | 크로마 | 루마 샘플 당 보간 필터 픽셀들 |
HM6.0 | 최악의 경우 (8x4bi) | 15x11 * 2 | 7x5*2 * 2 | 14.7 |
8x4 및 4x8 | 최악의 경우 (8x8bi) | 15x15 * 2 | 7x7*2 * 2 | 10.1 |
양자 모두의 MV를 라운딩 | 8x4 * 2 | 7x5*2 * 2 | 6.4 | |
하나의 MV 성분을 라운딩 | 8x11 * 2 | 7x5*2 * 2 | 9.9 | |
PU 배향식 라운딩 | 15x4 * 2 | 7x5*2 * 2 | 8.1 | |
교차 라운딩 | 15x4 + 8x11 | 7x5*2 * 2 | 9.0 | |
8x8 | 최악의 경우 (16x8bi) | 23x15 * 2 | 11x7*2 * 2 | 7.8 |
양자 모두의 MV들을 라운딩 | 8x8 * 2 | 7x7*2 * 2 | 5.1 | |
하나의 MV 성분을 라운딩 | 15x8 * 2 | 7x7*2 * 2 | 6.8 |
표 1에 나타낸 각각의 라운딩 방법은 4x8 또는 8x4 루마 블록들을 갖는 PU들의 MV들의 라운딩에 적합할 수도 있다. 그러나, 다음 최악의 경우의 시나리오 (즉, 사이즈 8x8의 루마 블록들을 갖는 양방향 예측된 PU들) 에서, 인터 예측 프로세싱 유닛 (120) 은 사이즈 4x8 또는 8x4의 루마 블록들을 갖는 PU들에 대해 MV들 양자 모두의 라운딩만을 사용할 수도 있다. 그렇지 않으면, 사이즈 4x8 또는 8x4의 루마 블록들을 갖는 PU들을 위해 페치된 픽셀들의 수는, 사이즈 8x8의 루마 블록들을 갖는 PU들을 위해 페치된 픽셀들의 수보다 클 수도 있다. 이는 각각의 새로운 픽셀을 보간하기 위해 페치된 참조 픽셀들의 수의 측면에서 표 1의 마지막 열로부터 알 수 있다.
인터 예측 프로세싱 유닛 (120) 의 일부 구성들은 균일한 설계를 제공할 수도 있다. 예를 들어, 최악의 경우의 시나리오가 8x4 또는 4x8이면, 인터 예측 프로세싱 유닛 (120) 은 PU의 MV들 양자 모두를 라운딩할 수도 있거나 또는 PU의 양자 모두의 MV들의 MVy 성분들을 라운딩할 수도 있다. 다시 말하면, 8x4 또는 4x8의 최악의 경우만을 다루면, MV들 양자 모두를 라운딩하는 것 또는 양자 모두의 MV들의 MVy 성분들을 라운딩하는 것이 수행된다. 다른 예에서, 최악의 경우의 시나리오가 사이즈 8x8의 루마 블록들을 갖는 양방향 예측된 PU들이면, 인터 예측 프로세싱 유닛 (120) 은 사이즈 4x8 또는 8x4의 루마 블록들을 갖는 PU들에 대해 양자 모두의 MV들을 라운딩할 수도 있다. 더욱이, 이 예에서, 인터 예측 프로세싱 유닛 (120) 은 사이즈 8x8의 루마 블록들을 갖는 PU들의 양자 모두의 MV들의 MVy 성분만을 라운딩할 수도 있다. 다른 예들에서, 라운딩 기법들은 8x8보다 크거나 또는 작은 사이즈들의 루마 블록들을 갖는 PU들로 확장될 수 있다. 예를 들면, 인터 예측 프로세싱 유닛 (120) 은 사이즈 4x4의 루마 블록들을 갖는 PU들에 대해 양자 모두의 MV들 또는 MV들의 MVy 성분들만을 라운딩할 수도 있다.
픽셀들이 선형 메모리 저장 모듈에 저장된다고 가정하면, MVy 성분들을 라운딩하는 것이 MVx 성분들을 라운딩하는 것보다 더 많이 페치된 픽셀들의 수를 감소시킬 수도 있기 때문에, MVy 성분들을 라운딩하는 것은 MVx 성분들을 라운딩하는 것보다 더 유익할 수도 있다. 이는 메모리로부터의 각각의 판독 동작이 고정된 양의 연속적인 데이터 (예컨대, 64 개의 연속적인 픽셀들) 를 페치할 수도 있기 때문이다. 그러나, 모션 보상 유닛 (124) 이 수직 축을 따라 보간을 수행하는 경우, 모션 보상 유닛 (124) 은 단일 판독 동작으로 페치된 데이터로부터의 단일 픽셀만을 필요로 할 수도 있다. 그 반면, 모션 보상 유닛 (124) 이 수평 축을 따라 보간을 수행하는 경우, 모션 보상 유닛 (124) 은 단일 판독 동작으로 페치된 데이터로부터의 다수의 픽셀들을 사용할 수도 있다. 따라서, 모션 보상 유닛 (124) 은 수직 축을 따르기보다는 수평 축을 따르는 보간을 수행하기 위해 더 적은 판독 동작들 수행하는 것을 필요로 할 수도 있다. 결과적으로, MVy가 정수 정밀도로 라운딩되는 경우, 모션 보상 유닛 (124) 은 수평 축들을 따라서만 보간을 수행할 수도 있다. 이러한 식으로, 모션 보상 유닛 (124) 에 의해 수행되는 판독 동작들의 수 (와 그래서 메모리로부터 페치된 데이터의 양) 는 MVy를 라운딩함으로써 감소될 수도 있다.
도 5a 내지 도 5c는 본 개시물의 하나 이상의 기법들에 따른, 픽셀 패딩을 예시하는 개념도들이다. MV들을 라운딩하는 것에 대한 대체예로서, 보간에서 사용되는 픽셀 패딩은 메모리 대역폭 요건들을 감소시킬 수도 있다. 다시 말하면, MV 라운딩에 의해 달성되는 메모리 대역폭 감소는 보간에서 사용하기 위한 픽셀 패딩에 의해 달성될 수도 있다. 도 4를 참조하여 이전에 설명했듯이, 보간을 위해 페치될 블록 사이즈는 제공되었고 MV 라운딩은 블록의 사이즈를 감소시켰는데, 보간이 정수 픽셀 MV들로 인해 수행되지 않기 때문이다. 픽셀 패딩이 사용되는 경우, 인터 예측 프로세싱 유닛 (120) 은 MV들을 라운딩하지 않는다. 오히려, 모션 보상 유닛 (예컨대, 모션 보상 유닛 (124) 또는 모션 보상 유닛 (164)) 이 현재 PU에 대한 참조 블록을 결정하면, 모션 보상 유닛은, 현재 PU의 서브 픽셀 MV에 기초하여, 참조 픽처에서 정수 픽셀 샘플들의 블록을 결정할 수도 있다. 모션 보상 유닛은 그 다음에, 메모리로부터, 정수 픽셀 샘플들의 결정된 블록을 취출할 수도 있다. 모션 보상 유닛은 그 다음에, 정수 픽셀 샘플들의 취출된 블록의 에지들에 있는 정수 픽셀 샘플들에 기초하여 정수 픽셀 패딩 샘플들을 생성할 수도 있다. 모션 보상 유닛은 정수 픽셀 패딩 샘플들을 사용하여 현재 PU의 서브 픽셀 MV에 의해 나타내어진 참조 블록의 서브 픽셀 샘플들의 값들을 보간할 수도 있다. 모션 보상 유닛이 패딩 픽셀들을 생성하는 예들에서, 보간 동작들은 HEVC 규격 초안 6에서와 동일할 수도 있지만, 보간 동작들에 대한 입력은 상이할 수도 있다.
모션 보상 유닛은 정수 패딩 샘플들을 다양한 방도들로 생성할 수도 있다. 도 5a의 예에서 도시된 바와 같이, 모션 보상 유닛은 참조 픽처의 영역 (250) 에서 정수 픽셀 샘플들의 블록을 취출할 수도 있다. 또한, 모션 보상 유닛은 영역 (250) 으로부터 각각의 방향으로 연장하는 정수 픽셀 패딩 샘플들을 생성할 수도 있다. 다시 말해, 모션 보상 유닛은 정수 픽셀 MV에 대응하는 영역 (250) 의 정수 픽셀 샘플들만을 페치하고, 모션 보상 유닛은 음영진 영역 (252) 으로 묘사된 바와 같이 수평 및 수직 방향들에서 경계 픽셀들을 복사함으로써 픽셀들을 패딩한다. 따라서, 도 5a의 예에서, 취출된 블록 상측의 정수 픽셀 패딩 샘플들은 취출된 블록의 정수 픽셀 샘플들의 상단 행에서의 정수 픽셀 샘플들의 값들과 일치하는 값들을 가질 수도 있으며, 취출된 블록 우측의 정수 픽셀 패딩 샘플들은 취출된 블록의 정수 픽셀 샘플들의 최우측 열에서의 정수 픽셀 샘플들의 값들과 일치하는 값들을 가질 수도 있으며, 취출된 블록 좌측의 정수 픽셀 패딩 샘플들은 취출된 블록의 정수 픽셀 샘플들의 최좌측 열에서의 정수 픽셀 샘플들의 값들과 일치하는 값들을 가질 수도 있고, 취출된 블록 하측의 정수 픽셀 패딩 샘플들은 취출된 블록의 정수 픽셀 샘플들의 하단 행에서의 정수 픽셀 샘플들의 값들과 일치하는 값들을 가질 수도 있다.
도 5b는 픽셀 패딩의 다른 예를 제공하는 개념도이다. 도 5b의 예에서, 모션 보상 유닛은, 메모리로부터, 영역 (260) 에서의 정수 픽셀 샘플들 및 영역들 (262, 264) 에서의 정수 픽셀 샘플들을 페치할 수도 있다. 모션 보상 유닛은 PU의 MV에 기초하여 영역 (260) 을 결정할 수도 있다. 영역들 (262, 264) 에서의 정수 픽셀 샘플들은 모션 보상 유닛이 수직 보간을 위해 사용하는 정수 픽셀 샘플들일 수도 있다. 모션 보상 유닛은 영역들 (266, 268) 에 대한 샘플들을 취출하는 대신에 영역들 (266, 268) 에 대해 정수 픽셀 패딩 샘플들을 생성할 수도 있다. 모션 보상 유닛은 영역 (260) 의 좌측 및 우측 에지들을 따라 정수 픽셀 샘플들을 복사함으로써 영역들 (266, 268) 에 대한 정수 픽셀 패딩 샘플들을 생성할 수도 있다. 따라서, 도 5b의 예에서, 모션 보상 유닛은 영역들 (262, 264) 에서 도시된 수직 보간에 필요한 픽셀들만을 페치할 수도 있고 영역들 (266, 268) 에서의 픽셀들을 패딩할 수도 있다.
도 5c는 픽셀 패딩의 다른 예를 제공하는 개념도이다. 도 5c의 예에서, 모션 보상 유닛은 영역 (270) 에서의 정수 픽셀 샘플들 및 영역들 (272, 274, 276, 및 278) 에서의 인터 픽셀 샘플들을 페치할 수도 있다. 모션 보상 유닛은 PU의 MV에 기초하여 영역 (270) 을 결정할 수도 있다. 모션 보상 유닛은 파라미터 x에 기초하여 영역들 (272, 274) 을 결정할 수도 있다. 더욱이, 모션 보상 유닛은 파라미터 y에 기초하여 영역들 (276, 278) 을 결정할 수도 있다. 파라미터들 (x 및 y) 은 픽셀들의 수들의 측면에서 표현될 수도 있다. 모션 보상 유닛은 영역 (280) 에서 정수 픽셀 샘플들을 페치하는 대신에 정수 픽셀 패딩 샘플들을 생성할 수도 있다. 따라서, 도 5c의 예에서, 일부 영역들은 픽셀들의 수의 측면에서 파라미터들 (x 및 y) 에 의해 특정되었고, 그 일부 영역들에서 픽셀들은 2D (수평 및 수직) 보간을 위해 페치될 것이 필요하고, 나머지 영역에서의 픽셀들은 패딩된다.
도 6은 본 개시물의 하나 이상의 기법들에 따른, 비디오 인코더 (20) 의 일 예의 동작 (300) 을 도시하는 흐름도이다. 도 6의 예에서, 비디오 인코더 (20) 는 MV가 서브 픽셀 (즉, sub-pixel) 정확도를 가지는지 여부를 결정할 수도 있다 (304). 다시 말해, 비디오 인코더 (20) 는 MV의 수평 및/또는 수직 성분이 서브 픽셀 정확도를 가지는지 여부를 결정할 수도 있다. MV가 서브 픽셀 정확도를 가지는 경우 (304의 "예"), 비디오 인코더 (20) 는 현재 PU가 특정 사이즈를 가지는지 여부를 결정할 수도 있다 (306). 일부 예들에서, 비디오 인코더 (20) 는 현재 PU의 사이즈가 특정 사이즈 임계값 미만인지 여부를 결정함으로써 현재 PU가 특정 사이즈를 가지는지 여부를 결정할 수도 있다. 더욱이, 일부 예들에서, 특정 사이즈는 4x8, 8x4, 또는 더 작을 수도 있다. 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여 (306의 "예"), 비디오 인코더 (20) 는 MV를 라운딩할 수도 있다 (308). MV를 라운딩하는 것은 MV의 수평 및/또는 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함할 수도 있다. 본 개시물의 다른 곳에서 설명되는 바와 같이, 인터 예측 프로세싱 유닛 (120) 은, 일부 예들에서, MV의 수평 및/또는 수직 성분들을 라운딩할 수도 있다. 다른 예들에서, 모션 보상 유닛 (124) 은 모션 보상 동안 MV의 수평 및/또는 수직 성분들을 라운딩할 수도 있다.
일부 예들에서, 인터 예측 프로세싱 유닛 (120) 은 병합 후보 리스트를 생성할 수도 있다. 이 예에서, 병합 후보 리스트에서의 각각의 후보는 MV를 특정할 수도 있다. 병합 후보 리스트에서 후보들에 의해 특정된 MV들은 액션들 (304 및 306) 의 MV를 포함할 수도 있다. 병합 후보 리스트를 생성한 후, 인터 예측 프로세싱 유닛 (120) 은, 하나 이상의 본 개시물의 기법들에 따라, 병합 후보 리스트에서의 MV 후보들에 의해 나타내어진 MV들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. MV 후보들에 의해 나타내어진 MV들을 라운딩한 후, 인터 예측 프로세싱 유닛 (120) 은 병합 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. 중복 MV 후보들은 동일한 MV들 및 동일한 참조 인덱스들을 특정할 수도 있다. 병합 후보 리스트에서의 선택된 MV 후보는 현재 PU의 모션 벡터를 특정할 수도 있다. 다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 병합 후보 리스트를 생성할 수도 있고 그 병합 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. 병합 후보 리스트로부터 중복 MV 후보들을 프루닝한 후, 인터 예측 프로세싱 유닛 (120) 은 MV 후보들에 의해 나타내어진 MV들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 병합 후보 리스트에서의 선택된 MV 후보는 현재 PU에 대한 MV를 특정할 수도 있다.
다른 예에서, 인터 예측 프로세싱 유닛 (120) 은 현재 PU에 대한 AMVP 후보 리스트를 생성할 수도 있다. AMVP 후보 리스트를 생성한 후, 인터 예측 프로세싱 유닛 (120) 은 AMVP 후보 리스트에서 MV 후보들에 의해 나타내어진 MV들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 액션들 (304 및 306) 의 MV는 AMVP 후보 리스트에서 MV 후보들에 의해 나타내어진 MV들 중에 있을 수도 있다. MV 후보들에 의해 나타내어진 모션 벡터들을 라운딩한 후, 인터 예측 프로세싱 유닛 (120) 은 AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있고, 비트 스트림에서, 현재 PU에 대한 모션 벡터 및 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 모션 벡터 간의 차이를 나타내는 MVD를 시그널링할 수도 있다. 유사한 예에서, 인터 예측 프로세싱 유닛 (120) 은 현재 PU에 대한 AMVP 후보 리스트를 생성할 수도 있고 AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝한 후, 인터 예측 프로세싱 유닛 (120) 은 MV 후보들에 의해 나타내어진 모션 벡터들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 더욱이, 인터 예측 프로세싱 유닛 (120) 은, 비트 스트림에서, 현재 PU에 대한 모션 벡터 및 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 모션 벡터 간의 차이를 나타내는 MVD를 시그널링할 수도 있다.
MV가 라운딩된 후, 또는 MV가 서브 픽셀 정확도를 가지지 않는 경우 (304의 "아니오"), 또는 현재 PU가 특정 사이즈를 가지지 않는 경우 (306의 "아니오"), 모션 보상 유닛 (124) 은, MV에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록들을 생성할 수도 있다 (310). 예를 들어, MV가 병합 후보 리스트에서의 선택된 MV이면, 모션 보상 유닛 (124) 은, 병합 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 생성할 수도 있다. 다른 예에서, 모션 보상 유닛 (124) 은 MVD와 AMVP 후보 리스트에서의 MV 후보에 기초하여 MV를 결정할 수도 있고, 그 MV에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록을 결정할 수도 있다. 일부 예들에서, 모션 보상 유닛 (124) 은 현재 PU에 대한 루마 및 2 개의 크로마 예측 블록들을 생성할 수도 있다. 비디오 인코더 (20) 의 잔여 생성 유닛 (102) 은 그 다음에 현재 CU에 대한 잔여 블록들을 생성할 수도 있다 (312). 비디오 인코더 (20) 는, 비트스트림에서, 잔여 샘플 블록들에 기초하여 신택스 엘리먼트들을 시그널링할 수도 있다 (314). 예를 들면, 비디오 인코더 (20) 는 잔여 샘플 블록들의 잔여 샘플들에 변환을 적용하며, 결과적인 변환 계수들을 양자화하며, 그 변환 계수들을 나타내는 신택스 엘리먼트들을 생성하며, 그 신택스 엘리먼트들을 엔트로피 인코딩하고, 엔트로피 인코딩된 신택스 엘리먼트들을 비트스트림으로 출력할 수도 있다.
도 7은 본 개시물의 하나 이상의 기법들에 따른, 비디오 디코더 (30) 의 일 예의 동작 (350) 을 도시하는 흐름도이다. 도 7의 예는, 비디오 인코더 (20) 가 모션 보상 동안 MV의 하나 이상의 성분들을 라운딩하고 이에 따라 PU들에 대한 서브 픽셀 또는 정수 픽셀 MV들을 시그널링할 수도 있는 구현예들에 적용가능할 수도 있다.
도 7의 예에서, 모션 보상 유닛 (164) 은 MV가 서브 픽셀 정확도를 가지는지 여부를 결정할 수도 있다 (354). 다시 말해, 모션 보상 유닛 (164) 은 MV의 수평 및/또는 수직 성분이 서브 픽셀 정확도를 가지는지 여부를 결정할 수도 있다. 하나의 예에서, 모션 보상 유닛 (164) 은 병합 후보 리스트를 생성할 수도 있다. 이 예에서, MV는 병합 후보 리스트에서의 MV 후보에 의해 나타내어질 수도 있다. 다른 예에서, 모션 보상 유닛 (164) 은 AMVP 후보 리스트를 생성할 수도 있다. 이 예에서, MV는 AMVP 후보 리스트에서의 MV 후보에 의해 나타내어질 수도 있다. 다른 예에서, MV는 현재 PU에 대해 시그널링된 MVD 및 AMVP 후보 리스트에서의 선택된 후보에 의해 나타내어진 MV의 합과 동일할 수도 있다.
MV가 서브 픽셀 정확도를 가지는 경우 (354의 "예"), 모션 보상 유닛 (164) 은 PU가 특정 사이즈를 가지는지 여부를 결정할 수도 있다 (356). 일부 예들에서, 모션 보상 유닛 (164) 은 현재 PU의 사이즈가 특정 사이즈 임계값 미만인지 여부를 결정함으로써 현재 PU가 특정 사이즈를 가지는지 여부를 결정할 수도 있다. 더욱이, 일부 예들에서, 특정 사이즈는 4x8, 8x4, 또는 더 작을 수도 있다. 현재 PU가 특정 사이즈를 갖는다는 결정에 응답하여 (356의 "예"), 모션 보상 유닛 (164) 은 MV를 라운딩할 수도 있다 (358). MV를 라운딩하는 것은 MV의 수평 및/또는 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함할 수도 있다.
더욱이, 하나의 예에서, 모션 보상 유닛 (164) 은 병합 후보 리스트를 생성할 수도 있다. 이 예에서, 병합 후보 리스트에서의 각각의 후보는 모션 벡터를 특정할 수도 있다. 병합 후보 리스트를 생성한 후, 모션 보상 유닛 (164) 은, 하나 이상의 본 개시물의 기법들에 따라, 병합 후보 리스트에서의 MV 후보들에 의해 나타내어진 모션 벡터들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. MV는 병합 후보 리스트에서의 MV 후보들에 의해 나타내어진 MV 중에 있을 수도 있다. MV 후보들에 의해 나타내어진 모션 벡터들을 라운딩한 후, 인터 예측 프로세싱 유닛 (120) 은 병합 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. 중복 MV 후보들은 동일한 MV들 및 참조 인덱스들을 특정할 수도 있다. 병합 후보 리스트에서의 선택된 MV 후보는 현재 PU의 모션 벡터를 특정할 수도 있다. 다른 예에서, 모션 보상 유닛 (164) 은 병합 후보 리스트를 생성할 수도 있고 병합 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. 병합 후보 리스트로부터 중복 MV 후보들을 프루닝한 후, 모션 보상 유닛 (164) 은 MV 후보들에 의해 나타내어진 모션 벡터들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 병합 후보 리스트에서의 선택된 MV 후보는 현재 PU에 대한 모션 벡터를 특정할 수도 있다.
다른 예에서, 모션 보상 유닛 (164) 은 현재 PU에 대한 AMVP 후보 리스트를 생성할 수도 있다. AMVP 후보 리스트를 생성한 후, 모션 보상 유닛 (164) 은 AMVP 후보 리스트에서 MV 후보들에 의해 나타내어진 모션 벡터들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 모션 벡터는 AMVP 후보 리스트에서 MV 후보들에 의해 나타내어진 모션 벡터들 중에 있을 수도 있다. MV 후보들에 의해 나타내어진 모션 벡터들을 라운딩한 후, 모션 보상 유닛 (164) 은 AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있고, MVD와 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 모션 벡터를 결정할 수도 있다. 유사한 예에서, 모션 보상 유닛 (164) 은 현재 PU에 대한 AMVP 후보 리스트를 생성할 수도 있고 AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝할 수도 있다. AMVP 후보 리스트로부터 중복 MV 후보들을 프루닝한 후, 모션 보상 유닛 (164) 은 MV 후보들에 의해 나타내어진 모션 벡터들을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할 수도 있다. 모션 보상 유닛 (164) 은, MVD와 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어진 모션 벡터에 적어도 부분적으로 기초하여, 현재 PU에 대한 모션 벡터를 결정할 수도 있다.
MV를 라운딩한 후, 또는 MV가 서브 픽셀 정확도를 가지지 않는 경우 (354의 "아니오"), 또는 현재 PU가 특정 사이즈를 가지지 않는 경우 (356의 "아니오"), 모션 보상 유닛 (164) 은, MV에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록들을 생성할 수도 있다 (360). 예를 들어, 모션 보상 유닛 (164) 은 MV 및 MVD에 기초하여 현재 PU에 대한 모션 벡터를 결정할 수도 있다. 더욱이, 이 예에서, 모션 보상 유닛 (164) 은, 현재 PU에 대한 모션 벡터에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록들을 결정할 수도 있다. 다른 예에서, 모션 보상 유닛 (164) 은, MV에 의해 나타내어진 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 현재 PU에 대한 예측 샘플 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은 현재 PU에 대한 루마 및 2 개의 크로마 예측 블록들을 생성할 수도 있다. 비디오 디코더 (30) 는, 현재 PU에 대한 샘플 블록들에 적어도 부분적으로 기초하여, 현재 PU에 대한 복원된 샘플 블록들 생성할 수도 있다 (362).
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 그것을 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 (tangible) 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예컨대 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적 (non-transitory) 인 유형의 (tangible) 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 해당할 수도 있다. 데이터 저장 매체들은 본 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 자원으로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 대신 비일시적 (non-transient), 유형의 저장 매체들을 지향하고 있음이 이해되어야 한다. 디스크 (disk 및 disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 레이저들로써 광적으로 데이터를 재생한다. 상기한 것들의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에서 사용되는 바와 같은 용어 "프로세서"는 앞서의 구조 또는 본원에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 말할 수도 있다. 또한, 일부 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되는, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적회로 (IC) 또는 IC들의 세트 (예컨대, 칩 셋) 를 포함하는, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 대신에, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (56)
- 비디오 데이터를 디코딩하는 방법으로서,
후보 리스트를 생성하는 단계로서, 상기 후보 리스트는 모션 벡터 (motion vector; MV) 후보들의 리스트를 포함하는, 상기 후보 리스트를 생성하는 단계;
상기 후보 리스트로부터 중복 MV 후보들을 프루닝하는 단계;
상기 비디오 데이터의 코딩 유닛 (coding unit; CU) 의 현재 예측 유닛 (prediction unit; PU) 이 특정 사이즈를 갖는다는 결정에 응답하여, 상기 후보 리스트로부터 상기 중복 MV 후보들을 프루닝한 후에, 상기 후보 리스트에서의 MV 후보에 의해 나타내어지는 모션 벡터를 라운딩하는 단계로서, 상기 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함하는, 상기 모션 벡터를 라운딩하는 단계;
상기 모션 벡터를 사용하여 상기 현재 PU에 대한 예측 샘플 블록을 생성하는 단계; 및
상기 현재 PU에 대한 상기 예측 샘플 블록에 잔차 샘플 블록을 가산함으로써, 복원된 샘플 블록을 생성하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 특정 사이즈는 4x8, 8x4, 또는 더 작은, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 CU 는 다수의 PU 들을 가지고,
상기 방법은 상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 PU 인덱스에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하는 단계를 더 포함하며,
상기 현재 PU의 상기 PU 인덱스는 상기 CU 내의 포지션을 나타내는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 인터 방향 모드에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 배향에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 모션 벡터는 상기 MV 후보에 의해 나타내어지는 제 1 모션 벡터이며,
상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터를 라운딩하는 것은,
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수직 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수평 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함하고,
상기 방법은,
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 제 2 모션 벡터의 수평 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 2 모션 벡터의 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 후보 리스트는 병합 후보 리스트를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 후보 리스트는 어드밴스드 모션 벡터 예측 (Advanced Motion Vector Prediction; AMVP) 후보 리스트를 포함하고,
상기 방법은,
모션 벡터 차이 (motion vector difference; MVD) 및 상기 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 모션 벡터에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 모션 벡터를 결정하는 단계를 더 포함하며,
상기 예측 샘플 블록을 생성하는 단계는, 상기 현재 PU에 대한 상기 모션 벡터에 의해 나타내어지는 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 상기 예측 샘플 블록을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 라운딩된 모션 벡터는 제 1 라운딩된 모션 벡터이며,
상기 모션 벡터를 라운딩하는 단계는, 상기 모션 벡터의 적어도 하나의 성분을 다음의 더 높은 정수 값으로 라운딩함으로써 상기 제 1 라운딩된 모션 벡터를 생성하는 단계를 포함하고,
상기 방법은,
상기 모션 벡터의 상기 적어도 하나의 성분을 다음의 더 낮은 정수 값으로 라운딩함으로써 제 2 라운딩된 모션 벡터를 생성하는 단계로서, 상기 후보 리스트는 상기 제 1 및 제 2 라운딩된 모션 벡터들을 각각 특정하는 제 1 및 제 2 MV 후보들을 포함하는, 상기 제 2 라운딩된 모션 벡터를 생성하는 단계; 및
모션 벡터 차이 (MVD) 및 상기 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 모션 벡터에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 모션 벡터를 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 모션 벡터를 라운딩하는 단계는, 상기 모션 벡터의 상기 수평 및 수직 성분들 양자 모두를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 MV 후보에 의해 나타내어지는 모션 벡터를 라운딩하는 단계는,
상기 현재 PU가 수직으로 배향된 PU라는 결정에 응답하여, 상기 모션 벡터의 상기 수평 성분만을 라운딩하는 단계; 및
상기 현재 PU가 수평으로 배향된 PU라는 결정에 응답하여, 상기 모션 벡터의 상기 수직 성분만을 라운딩하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 현재 PU는 상기 CU의 제 1 PU이고,
상기 CU의 제 2 PU는 상기 서브 픽셀 정확도를 갖는 하나 이상의 모션 벡터들을 가지고,
상기 방법은 상기 제 2 PU의 상기 하나 이상의 모션 벡터들을 라운딩하지 않으면서 상기 제 2 PU의 상기 하나 이상의 모션 벡터들을 사용하여 상기 제 2 PU에 대한 예측 샘플 블록을 생성하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 비디오 데이터를 인코딩하는 방법으로서,
후보 리스트를 생성하는 단계로서, 상기 후보 리스트는 모션 벡터 (MV) 후보들의 리스트를 포함하는, 상기 후보 리스트를 생성하는 단계;
상기 후보 리스트로부터 중복 MV 후보들을 프루닝하는 단계;
상기 비디오 데이터의 코딩 유닛 (CU) 의 현재 예측 유닛 (PU) 이 특정 사이즈를 갖는다는 결정에 응답하여, 상기 후보 리스트로부터 상기 중복 MV 후보들을 프루닝한 후에, 상기 후보 리스트에서의 MV 후보에 의해 나타내어지는 모션 벡터를 라운딩하는 단계로서, 상기 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함하는, 상기 모션 벡터를 라운딩하는 단계;
상기 모션 벡터를 사용하여 상기 현재 PU에 대한 예측 샘플 블록을 생성하는 단계;
인코딩되고 있는 원래의 비디오 블록으로부터 상기 현재 PU에 대한 상기 예측 샘플 블록을 감산함으로써, 잔차 샘플 블록을 생성하는 단계; 및
비트스트림에서, 상기 잔차 샘플 블록을 시그널링하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 특정 사이즈는 4x8, 8x4, 또는 더 작은, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 CU 는 다수의 PU 들을 가지고,
상기 방법은 상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 PU 인덱스에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하는 단계를 더 포함하며,
상기 현재 PU의 상기 PU 인덱스는 상기 CU 내의 포지션을 나타내는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 인터 방향 모드에 적어도 부분적으로 기초하여, 상기 모션 벡터를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 배향에 적어도 부분적으로 기초하여, 상기 모션 벡터를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 MV 후보에 의해 나타내어지는 상기 모션 벡터는 상기 MV 후보에 의해 나타내어지는 제 1 모션 벡터이며,
상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터를 라운딩하는 것은,
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수직 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수평 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 것을 포함하고,
상기 방법은,
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 제 2 모션 벡터의 수평 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 2 모션 벡터의 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 후보 리스트는 병합 후보 리스트를 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 후보 리스트는 어드밴스드 모션 벡터 예측 (AMVP) 후보 리스트를 포함하고,
상기 방법은,
상기 비트 스트림에서, 상기 현재 PU에 대한 모션 벡터와 상기 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 모션 벡터 간의 차이를 나타내는 모션 벡터 차이 (MVD) 를 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 라운딩된 모션 벡터는 제 1 라운딩된 모션 벡터이며,
상기 모션 벡터를 라운딩하는 단계는, 상기 모션 벡터의 적어도 하나의 성분을 다음의 더 높은 정수 값으로 라운딩함으로써 상기 제 1 라운딩된 모션 벡터를 생성하는 단계를 포함하고,
상기 방법은,
상기 모션 벡터의 상기 적어도 하나의 성분을 다음의 더 낮은 정수 값으로 라운딩함으로써 제 2 라운딩된 모션 벡터를 생성하는 단계로서, 상기 후보 리스트는 상기 제 1 및 제 2 라운딩된 모션 벡터들을 각각 특정하는 제 1 및 제 2 MV 후보들을 포함하는, 상기 제 2 라운딩된 모션 벡터를 생성하는 단계; 및
상기 비트 스트림에서, 상기 후보 리스트에서의 선택된 MV 후보의 인덱스를 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 방법은,
상기 현재 PU 의 MVD 의 하나 또는 양자의 성분들을 정수 픽셀 정확도로 라운딩하는 단계를 더 포함하고,
상기 방법은, 상기 비트스트림에서, 상기 현재 PU의 라운딩된 MVD를 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 모션 벡터를 라운딩하는 단계는, 상기 모션 벡터의 상기 수평 및 수직 성분들 양자 모두를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 13 항에 있어서,
상기 모션 벡터를 라운딩하는 단계는,
모션 보상 동안, 상기 모션 벡터를 라운딩하는 단계; 및
상기 비트 스트림에서, 상기 현재 PU의 서브 픽셀 MVD를 시그널링하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법. - 비디오 코딩 디바이스로서,
비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체들; 및
하나 이상의 프로세서들을 포함하고,
상기 하나 이상의 프로세서들은,
후보 리스트를 생성하는 것으로서, 상기 후보 리스트는 모션 벡터 (MV) 후보들의 리스트를 포함하는, 상기 후보 리스트를 생성하고;
상기 후보 리스트로부터 중복 MV 후보들을 프루닝하고;
상기 비디오 데이터의 코딩 유닛 (CU) 의 현재 예측 유닛 (PU) 이 특정 사이즈를 갖는다는 결정에 응답하여, 상기 후보 리스트로부터 상기 중복 MV 후보들을 프루닝한 후에, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나가 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩되도록 상기 후보 리스트에서의 MV 후보에 의해 나타내어지는 상기 모션 벡터를 라운딩하는, 상기 모션 벡터를 라운딩하고;
상기 모션 벡터를 사용하여 상기 현재 PU에 대한 예측 샘플 블록을 생성하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 특정 사이즈는 4x8, 8x4, 또는 더 작은, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 CU는 다수의 PU들을 가지고,
상기 하나 이상의 프로세서들은, 상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 PU 인덱스에 적어도 부분적으로 기초하여, 상기 모션 벡터를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩할지 여부를 결정하도록 구성되며,
상기 현재 PU의 상기 PU 인덱스는 상기 CU 내의 포지션을 나타내는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은, 상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 인터 방향 모드에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은, 상기 특정 사이즈를 갖는 상기 현재 PU 및 상기 현재 PU의 배향에 적어도 부분적으로 기초하여, 상기 모션 벡터를 라운딩할지 여부를 결정하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 모션 벡터는 상기 MV 후보에 의해 나타내어지는 제 1 모션 벡터이며,
상기 하나 이상의 프로세서들은,
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수직 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 1 모션 벡터의 상기 수평 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하고;
상기 현재 PU가 상기 특정 사이즈를 갖는다는 결정에 응답하여, 상기 MV 후보에 의해 나타내어지는 제 2 모션 벡터의 수평 성분이 아니라 상기 MV 후보에 의해 나타내어지는 상기 제 2 모션 벡터의 수직 성분을 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 후보 리스트는 병합 후보 리스트를 포함하는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 후보 리스트는 AMVP 후보 리스트를 포함하고,
상기 하나 이상의 프로세서들은,
모션 벡터 차이 (MVD) 및 상기 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 모션 벡터에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 모션 벡터를 결정하고;
상기 현재 PU에 대한 상기 모션 벡터에 의해 나타내어지는 참조 픽처 샘플들에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 상기 예측 샘플 블록을 결정하도록 구성되는, 비디오 코딩 디바이스. - 제 32 항에 있어서,
상기 하나 이상의 프로세서들은 또한, 비트스트림에서 상기 MVD를 시그널링하도록 구성되고,
상기 MVD는 상기 현재 PU에 대한 상기 모션 벡터와 상기 AMVP 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 상기 모션 벡터 간의 차이를 나타내는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 라운딩된 모션 벡터는 제 1 라운딩된 모션 벡터이고,
상기 하나 이상의 프로세서들은,
상기 모션 벡터의 적어도 하나의 성분을 다음의 더 높은 정수 값으로 라운딩함으로써 상기 제 1 라운딩된 모션 벡터를 생성하고;
상기 모션 벡터의 상기 적어도 하나의 성분을 다음의 더 낮은 정수 값으로 라운딩함으로써 제 2 라운딩된 모션 벡터를 생성하는 것으로서, 상기 후보 리스트는 상기 제 1 및 제 2 라운딩된 모션 벡터들을 각각 특정하는 제 1 및 제 2 MV 후보들을 포함하는, 상기 제 2 라운딩된 모션 벡터를 생성하고;
MVD와 상기 후보 리스트에서의 선택된 MV 후보에 의해 나타내어지는 모션 벡터에 적어도 부분적으로 기초하여, 상기 현재 PU에 대한 모션 벡터를 결정하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 라운딩된 모션 벡터는 제 1 라운딩된 모션 벡터이고,
상기 하나 이상의 프로세서들은,
상기 모션 벡터의 적어도 하나의 성분을 다음의 더 높은 정수 값으로 라운딩함으로써 상기 제 1 라운딩된 모션 벡터를 생성하고;
상기 모션 벡터의 상기 적어도 하나의 성분을 다음의 더 낮은 정수 값으로 라운딩함으로써 제 2 라운딩된 모션 벡터를 생성하는 것으로서, 상기 후보 리스트는 상기 제 1 및 제 2 라운딩된 모션 벡터들을 각각 특정하는 제 1 및 제 2 MV 후보들을 포함하는, 상기 제 2 라운딩된 모션 벡터를 생성하고;
비트스트림에서, 상기 후보 리스트에서의 선택된 MV 후보의 인덱스를 시그널링하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은, 상기 모션 벡터의 상기 수평 및 수직 성분들 양자 모두를 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
상기 현재 PU에 대한 상기 예측 샘플 블록에 잔차 샘플 블록을 가산함으로써, 복원된 샘플 블록을 생성하며;
상기 복원된 샘플 블록을 디스플레이를 위해 출력하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
인코딩되고 있는 원래의 비디오 블록으로부터 상기 현재 PU에 대한 상기 예측 샘플 블록을 감산함으로써, 잔차 샘플 블록을 생성하며;
비트스트림에서, 상기 잔차 샘플 블록을 시그널링하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은,
모션 보상 동안, 상기 모션 벡터를 라운딩하며;
비트스트림에서, 상기 현재 PU의 서브 픽셀 MVD를 시그널링하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 하나 이상의 프로세서들은,
상기 현재 PU의 MVD의 적어도 x 성분 또는 y 성분을 라운딩하며;
비트스트림에서, 상기 현재 PU의 라운딩된 상기 MVD를 시그널링하도록 구성되는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
상기 비디오 코딩 디바이스는,
집적 회로;
마이크로프로세서; 또는
무선 통신 디바이스
중 적어도 하나를 포함하는, 비디오 코딩 디바이스. - 제 25 항에 있어서,
디코딩된 비디오 데이터를 디스플레이하도록 구성된 디스플레이, 또는 상기 비디오 데이터를 캡쳐하도록 구성된 카메라를 더 포함하는, 비디오 코딩 디바이스. - 비디오 코딩 디바이스로서,
후보 리스트를 생성하는 수단으로서, 상기 후보 리스트는 모션 벡터 (MV) 후보들의 리스트를 포함하는, 상기 후보 리스트를 생성하는 수단;
상기 후보 리스트로부터 중복 MV 후보들을 프루닝하는 수단;
코딩 유닛 (CU) 의 현재 예측 유닛 (PU) 이 특정 사이즈를 갖는다는 결정에 응답하여, 상기 후보 리스트로부터 상기 중복 MV 후보들을 프루닝한 후에, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나가 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩되도록 상기 후보 리스트에서의 MV 후보에 의해 나타내어지는 모션 벡터를 라운딩하는 수단; 및
상기 모션 벡터를 사용하여 상기 현재 PU에 대한 예측 샘플 블록을 생성하는 수단을 생성하는 수단을 포함하는, 비디오 코딩 디바이스. - 제 43 항에 있어서,
상기 현재 PU에 대한 상기 예측 샘플 블록에 잔차 샘플 블록을 가산함으로써, 복원된 샘플 블록을 생성하는 수단; 및
상기 복원된 샘플 블록을 디스플레이를 위해 출력하는 수단을 더 포함하는, 비디오 코딩 디바이스. - 제 43 항에 있어서,
인코딩되고 있는 원래의 비디오 블록으로부터 상기 현재 PU에 대한 상기 예측 샘플 블록을 감산함으로써, 잔차 샘플 블록을 생성하는 수단;
비트스트림에서, 상기 잔차 샘플 블록을 시그널링하는 수단을 더 포함하는, 비디오 코딩 디바이스. - 명령들이 저장되어 있는 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 명령들은, 실행되는 경우, 비디오 코딩 디바이스가,
후보 리스트를 생성하는 것으로서, 상기 후보 리스트는 모션 벡터 (MV) 후보들의 리스트를 포함하는, 상기 후보 리스트를 생성하고;
상기 후보 리스트로부터 중복 MV 후보들을 프루닝하고;
코딩 유닛 (CU) 의 현재 예측 유닛 (PU) 이 특정 사이즈를 갖는다는 결정에 응답하여, 상기 후보 리스트로부터 상기 중복 MV 후보들을 프루닝한 후에, 모션 벡터의 수평 성분 또는 수직 성분 중 적어도 하나가 서브 픽셀 정확도로부터 정수 픽셀 정확도로 라운딩되도록 상기 후보 리스트에서의 MV 후보에 의해 나타내어지는 모션 벡터를 라운딩하고;
상기 모션 벡터를 사용하여 상기 현재 PU에 대한 예측 샘플 블록을 생성하도록 구성하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제 46 항에 있어서,
상기 명령들은 또한, 상기 비디오 코딩 디바이스가,
상기 현재 PU에 대한 상기 예측 샘플 블록에 잔차 샘플 블록을 가산함으로써, 복원된 샘플 블록을 생성하며;
상기 복원된 샘플 블록을 디스플레이를 위해 출력하도록 구성하는, 비일시적 컴퓨터 판독가능 저장 매체. - 제 46 항에 있어서,
상기 명령들은 또한, 상기 비디오 코딩 디바이스가,
인코딩되고 있는 원래의 비디오 블록으로부터 상기 현재 PU에 대한 상기 예측 샘플 블록을 감산함으로써, 잔차 샘플 블록을 생성하고;
비트스트림에서, 상기 잔차 샘플 블록을 시그널링하도록 구성하는, 비일시적 컴퓨터 판독가능 저장 매체. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261623037P | 2012-04-11 | 2012-04-11 | |
US61/623,037 | 2012-04-11 | ||
US201261623470P | 2012-04-12 | 2012-04-12 | |
US61/623,470 | 2012-04-12 | ||
US201261636529P | 2012-04-20 | 2012-04-20 | |
US61/636,529 | 2012-04-20 | ||
US201261637216P | 2012-04-23 | 2012-04-23 | |
US61/637,216 | 2012-04-23 | ||
US13/860,460 US9325991B2 (en) | 2012-04-11 | 2013-04-10 | Motion vector rounding |
US13/860,460 | 2013-04-10 | ||
PCT/US2013/036123 WO2013155267A2 (en) | 2012-04-11 | 2013-04-11 | Motion vector rounding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150008394A KR20150008394A (ko) | 2015-01-22 |
KR101714135B1 true KR101714135B1 (ko) | 2017-03-08 |
Family
ID=49325066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147031359A KR101714135B1 (ko) | 2012-04-11 | 2013-04-11 | 모션 벡터 라운딩 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9325991B2 (ko) |
EP (1) | EP2837191A2 (ko) |
KR (1) | KR101714135B1 (ko) |
CN (1) | CN104335586B (ko) |
WO (1) | WO2013155267A2 (ko) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10721487B2 (en) | 2012-04-17 | 2020-07-21 | Texas Instruments Incorporated | Converting a bi-predicted merging candidate in a merging candidate list for a prediction unit of a picture |
US9591312B2 (en) * | 2012-04-17 | 2017-03-07 | Texas Instruments Incorporated | Memory bandwidth reduction for motion compensation in video coding |
GB2501535A (en) * | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
US10531116B2 (en) * | 2014-01-09 | 2020-01-07 | Qualcomm Incorporated | Adaptive motion vector resolution signaling for video coding |
BR112016017201B1 (pt) * | 2014-01-29 | 2023-09-26 | Hfi Innovation Inc | Método de codificação e decodificação para precisão adaptativa de vetor de movimento de um bloco de dados de vídeo |
US10110916B2 (en) * | 2014-04-22 | 2018-10-23 | Sony Corporation | Encoding device and encoding method |
CN114554199B (zh) * | 2014-09-30 | 2023-11-10 | 寰发股份有限公司 | 用于视频编码的自适应运动向量分辨率的方法 |
WO2016119104A1 (en) * | 2015-01-26 | 2016-08-04 | Mediatek Inc. | Motion vector regularization |
US9805472B2 (en) * | 2015-02-18 | 2017-10-31 | Sony Corporation | System and method for smoke detection during anatomical surgery |
WO2017156669A1 (en) | 2016-03-14 | 2017-09-21 | Mediatek Singapore Pte. Ltd. | Methods for motion vector storage in video coding |
US10979732B2 (en) * | 2016-10-04 | 2021-04-13 | Qualcomm Incorporated | Adaptive motion vector precision for video coding |
US10701391B2 (en) * | 2017-03-23 | 2020-06-30 | Qualcomm Incorporated | Motion vector difference (MVD) prediction |
EP3410717A1 (en) * | 2017-05-31 | 2018-12-05 | Thomson Licensing | Methods and apparatus for candidate list pruning |
US11272207B2 (en) | 2017-06-12 | 2022-03-08 | Futurewei Technologies, Inc. | Selection and signaling of motion vector (MV) precisions |
EP3451663A1 (en) * | 2017-08-31 | 2019-03-06 | Thomson Licensing | Pools of transforms for local selection of a set of transforms in video coding |
CN111201792B (zh) * | 2017-10-09 | 2022-06-14 | 华为技术有限公司 | 指向分数像素点位置的运动矢量的修正运动矢量 |
KR20240125065A (ko) | 2017-12-08 | 2024-08-19 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 이미지 인코딩 장치, 이미지 디코딩 장치, 이미지 인코딩 방법 및 이미지 디코딩 방법 |
US20190246134A1 (en) * | 2018-02-06 | 2019-08-08 | Panasonic Intellectual Property Corporation Of America | Encoding method, decoding method, encoder, and decoder |
WO2019201203A1 (en) * | 2018-04-16 | 2019-10-24 | Mediatek Inc. | Methods and apparatuses of video processing with overlapped block motion compensation in video coding systems |
KR20210016581A (ko) | 2018-06-05 | 2021-02-16 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Ibc 및 atmvp 간의 상호 작용 |
CN116347099A (zh) | 2018-06-19 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 没有运动矢量预测截断的选择的运动矢量差精度 |
KR102701593B1 (ko) | 2018-06-21 | 2024-08-30 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 칼라 컴포넌트 간의 서브 블록 mv 상속 |
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 |
KR102606778B1 (ko) * | 2018-06-28 | 2023-11-29 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 모션 벡터 리파인먼트 및 모션 보상을 위한 메모리 액세스 윈도우 및 패딩 |
CN110662059B (zh) | 2018-06-29 | 2021-04-20 | 北京字节跳动网络技术有限公司 | 使用查找表存储先前编码的运动信息并用其编码后续块的方法和装置 |
CN115134599A (zh) | 2018-06-29 | 2022-09-30 | 抖音视界有限公司 | 更新查找表(lut)的条件 |
WO2020003261A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Selection from multiple luts |
KR102646649B1 (ko) | 2018-06-29 | 2024-03-13 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut에서의 모션 후보들의 검사 순서 |
WO2020003270A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Number of motion candidates in a look up table to be checked according to mode |
WO2020003284A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and amvp |
CN110662063B (zh) | 2018-06-29 | 2020-12-15 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置和计算机可读存储介质 |
CN114845108A (zh) | 2018-06-29 | 2022-08-02 | 抖音视界(北京)有限公司 | 查找表的更新:fifo、约束的fifo |
KR20210024502A (ko) | 2018-06-29 | 2021-03-05 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Hmvp 후보를 병합/amvp에 추가할 때의 부분/풀 프루닝 |
JP7181395B2 (ja) * | 2018-07-02 | 2022-11-30 | 北京字節跳動網絡技術有限公司 | イントラ予測モードを有するルックアップテーブルおよび非隣接ブロックからのイントラモード予測 |
US10897617B2 (en) * | 2018-07-24 | 2021-01-19 | Qualcomm Incorporated | Rounding of motion vectors for adaptive motion vector difference resolution and increased motion vector storage precision in video coding |
US11310520B2 (en) * | 2018-09-04 | 2022-04-19 | Hfi Innovation Inc. | Method and apparatus of motion-vector rounding unification for video coding system |
CN112771872B (zh) * | 2018-09-11 | 2024-08-23 | 有限公司B1影像技术研究所 | 使用帧间预测的图像编码/解码方法和装置 |
TWI820211B (zh) | 2018-09-12 | 2023-11-01 | 大陸商北京字節跳動網絡技術有限公司 | 取決於總數減去k的開始檢查hmvp候選的條件 |
KR20240005178A (ko) | 2018-09-19 | 2024-01-11 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용 |
EP3861723A4 (en) * | 2018-11-10 | 2022-04-20 | Beijing Bytedance Network Technology Co., Ltd. | ROUNDS IN PAIRS OF MEDIUM CANDIDATE BILLS |
WO2020117016A1 (ko) * | 2018-12-06 | 2020-06-11 | 엘지전자 주식회사 | 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치 |
CN116600108A (zh) * | 2018-12-13 | 2023-08-15 | Jvc建伍株式会社 | 图像解码装置和方法、以及图像编码装置和方法 |
CN111226440A (zh) * | 2019-01-02 | 2020-06-02 | 深圳市大疆创新科技有限公司 | 视频处理方法和装置 |
WO2020140216A1 (zh) * | 2019-01-02 | 2020-07-09 | 北京大学 | 视频处理方法和装置 |
CN113545050B (zh) * | 2019-01-03 | 2023-05-30 | 北京达佳互联信息技术有限公司 | 利用三角形预测的视频编解码方法及装置 |
US11431987B2 (en) | 2019-01-08 | 2022-08-30 | Tencent America LLC | Method and apparatus for memory bandwidth reduction for small inter blocks |
WO2020143741A1 (en) | 2019-01-10 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Invoke of lut updating |
CN113302938B (zh) * | 2019-01-11 | 2024-08-16 | 北京字节跳动网络技术有限公司 | 整数mv运动补偿 |
CN113383554B (zh) | 2019-01-13 | 2022-12-16 | 北京字节跳动网络技术有限公司 | LUT和共享Merge列表之间的交互 |
WO2020147772A1 (en) | 2019-01-16 | 2020-07-23 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidates derivation |
CN118118659A (zh) | 2019-01-31 | 2024-05-31 | 北京字节跳动网络技术有限公司 | 记录仿射模式自适应运动矢量分辨率的上下文 |
CN113366851A (zh) | 2019-01-31 | 2021-09-07 | 北京字节跳动网络技术有限公司 | 对称运动矢量差编解码模式的快速算法 |
EP3928513A4 (en) * | 2019-02-20 | 2022-09-21 | Beijing Dajia Internet Information Technology Co., Ltd. | METHODS AND APPARATUS FOR ROUNDING, SHAPING AND STORING MOTION VECTOR FOR INTERPREDICTION |
US11025948B2 (en) * | 2019-02-28 | 2021-06-01 | Tencent America LLC | Method and apparatus for motion prediction in video coding |
HUE064582T2 (hu) * | 2019-03-12 | 2024-03-28 | Beijing Dajia Internet Information | Videó kódolás geometriai interparticiós predikcióhoz |
US11178415B2 (en) * | 2019-03-12 | 2021-11-16 | Tencent America LLC | Signaling of CU based interpolation filter selection |
CN116389769A (zh) * | 2019-03-13 | 2023-07-04 | 北京大学 | 视频处理方法和设备 |
CN111670578B (zh) * | 2019-03-13 | 2023-02-21 | 北京大学 | 一种视频编码或解码方法、装置、设备及存储介质 |
WO2020190853A1 (en) * | 2019-03-16 | 2020-09-24 | Vid Scale, Inc. | Inter prediction memory access bandwidth reduction method with optical flow compensation |
US11350108B2 (en) * | 2019-03-18 | 2022-05-31 | Tencent America LLC | Affine inter prediction refinement with optical flow |
WO2020192611A1 (en) | 2019-03-22 | 2020-10-01 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between merge list construction and other tools |
US10904558B2 (en) * | 2019-04-26 | 2021-01-26 | Tencent America LLC | Method and apparatus for motion compensation for 360 video coding |
WO2020227892A1 (en) * | 2019-05-13 | 2020-11-19 | Alibaba Group Holding Limited | Non-local intra block copy and parallel coding for motion prediction |
JP7384939B2 (ja) * | 2019-06-24 | 2023-11-21 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 双予測のオプティカルフロー計算および双予測補正におけるブロックレベル境界サンプル勾配計算のための整数グリッド参照サンプルの位置を計算するための方法 |
CN113766244A (zh) * | 2020-06-05 | 2021-12-07 | Oppo广东移动通信有限公司 | 帧间预测方法、编码器、解码器以及计算机存储介质 |
US11622106B2 (en) * | 2021-05-17 | 2023-04-04 | Meta Platforms, Inc. | Supporting multiple partition sizes using a unified pixel input data interface for fetching reference pixels in video encoders |
US20230094825A1 (en) * | 2021-09-28 | 2023-03-30 | Qualcomm Incorporated | Motion vector difference sign prediction for video coding |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
US20030095603A1 (en) | 2001-11-16 | 2003-05-22 | Koninklijke Philips Electronics N.V. | Reduced-complexity video decoding using larger pixel-grid motion compensation |
NO319629B1 (no) | 2003-11-28 | 2005-09-05 | Tandberg Telecom As | Fremgangsmate for korrigering av interpolerte pikselverdier |
EP1617672A1 (en) | 2004-07-13 | 2006-01-18 | Matsushita Electric Industrial Co., Ltd. | Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter |
CN100377599C (zh) * | 2004-09-03 | 2008-03-26 | 北京航空航天大学 | 一种快速亚像素运动估计方法 |
US9307122B2 (en) * | 2006-09-27 | 2016-04-05 | Core Wireless Licensing S.A.R.L. | Method, apparatus, and computer program product for providing motion estimation for video encoding |
US20090257499A1 (en) | 2008-04-10 | 2009-10-15 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
US8259809B2 (en) * | 2009-01-12 | 2012-09-04 | Mediatek Singapore Pte Ltd. | One step sub-pixel motion estimation |
CN101795409B (zh) * | 2010-03-03 | 2011-12-28 | 北京航空航天大学 | 内容自适应分数像素运动估计方法 |
CN102215386B (zh) * | 2010-04-09 | 2013-03-27 | 华为技术有限公司 | 视频图像块处理方法及装置 |
JP5579937B2 (ja) * | 2010-10-06 | 2014-08-27 | インテル コーポレイション | 低複雑度の動きベクトルを導出するシステム及び方法 |
US8755437B2 (en) * | 2011-03-17 | 2014-06-17 | Mediatek Inc. | Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate |
KR101596409B1 (ko) * | 2011-03-15 | 2016-02-23 | 인텔 코포레이션 | 저 메모리 액세스 모션 벡터 유도 |
-
2013
- 2013-04-10 US US13/860,460 patent/US9325991B2/en active Active
- 2013-04-11 WO PCT/US2013/036123 patent/WO2013155267A2/en active Application Filing
- 2013-04-11 EP EP13718445.3A patent/EP2837191A2/en not_active Withdrawn
- 2013-04-11 KR KR1020147031359A patent/KR101714135B1/ko active IP Right Grant
- 2013-04-11 CN CN201380018770.2A patent/CN104335586B/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
Benjamin Bross ET AL., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting, JCTVC-G1103, 21-30 November, 2011* |
Elena Alshina ET AL., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting, JCTVC-G780, 21-30 November, 2011* |
Ken McCann ET AL., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting, JCTVC-G1102, 21-30 Novemeber, 2011* |
Takeshi Chujoh ET AL., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 8th Meeting, JCTVC-H0181, 1-10 February, 2012* |
Also Published As
Publication number | Publication date |
---|---|
US20130272410A1 (en) | 2013-10-17 |
WO2013155267A2 (en) | 2013-10-17 |
WO2013155267A3 (en) | 2013-12-19 |
CN104335586B (zh) | 2017-12-29 |
US9325991B2 (en) | 2016-04-26 |
EP2837191A2 (en) | 2015-02-18 |
KR20150008394A (ko) | 2015-01-22 |
CN104335586A (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101714135B1 (ko) | 모션 벡터 라운딩 | |
AU2017207452B2 (en) | Multi-type-tree framework for video coding | |
KR101963054B1 (ko) | 인트라 bc 및 인터 단일화 | |
EP3005698B1 (en) | Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans | |
EP3849182B1 (en) | Restriction of prediction units in b slices to uni-directional inter prediction | |
KR101858885B1 (ko) | 비디오 코딩을 위한 모션 벡터 결정 | |
WO2018129322A1 (en) | Multi-type-tree framework for video coding | |
CN111213376A (zh) | 使用基于编码结构的候选列表构建对视频数据的运动信息进行编码 | |
KR20190041480A (ko) | 후보 리스트들의 구성을 위한 지오메트리 기반의 우선순위 | |
US20130114717A1 (en) | Generating additional merge candidates | |
KR102294260B1 (ko) | 3차원 (3d) hevc 또는 다른 3d 코딩에서 서브 예측 유닛 (서브 pu) 모션 파라미터 상속 (mpi) 제어 | |
KR20170047234A (ko) | 통합된 인트라 블록 복사 및 인터 예측 | |
KR20170108012A (ko) | 비디오 코딩을 위한 중첩 모션 보상 | |
JP2018507616A (ja) | 予測ユニットの柔軟な区分化 | |
KR20160135306A (ko) | 비디오 코딩을 위한 참조로서 현재 픽처의 이용 | |
WO2013188784A1 (en) | Redundancy removal for merge/skip mode motion information candidate list construction | |
KR20140130466A (ko) | B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한 | |
KR20150076235A (ko) | 비디오 코딩을 위한 참조 화상 상태 | |
KR20140131525A (ko) | 병렬 모션 추정 범위 사이즈의 묵시적 도출 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |