KR20220030995A - 비디오 코딩에서 변환 블록 크기 제한 - Google Patents

비디오 코딩에서 변환 블록 크기 제한 Download PDF

Info

Publication number
KR20220030995A
KR20220030995A KR1020227000455A KR20227000455A KR20220030995A KR 20220030995 A KR20220030995 A KR 20220030995A KR 1020227000455 A KR1020227000455 A KR 1020227000455A KR 20227000455 A KR20227000455 A KR 20227000455A KR 20220030995 A KR20220030995 A KR 20220030995A
Authority
KR
South Korea
Prior art keywords
equal
block
merge
luma
candidates
Prior art date
Application number
KR1020227000455A
Other languages
English (en)
Inventor
리 장
카이 장
훙빈 류
웨 왕
Original Assignee
베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드, 바이트댄스 아이엔씨 filed Critical 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
Publication of KR20220030995A publication Critical patent/KR20220030995A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

비주얼 미디어 프로세싱 방법은 비주얼 미디어 데이터의 현재 비디오 유닛과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 비트스트림 표현은 최대 변환 블록 크기가 변환에 사용되는 최대 코딩 트리 유닛(CTU) 크기보다 작거나 같다는 것을 지정하는 포맷 규칙에 따라 구성된다.

Description

비디오 코딩에서 변환 블록 크기 제한
관련 출원의 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2019년 7월 14일에 출원된 국제 특허 출원 제PCT/CN2019/095921호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원의 전체 개시는 본 출원의 개시의 일부로서 참고로 포함된다.
기술 분야
이 문서는 비디오 및 이미지 코딩 및 디코딩 기술들에 관한 것이다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크들에서 가장 많은 대역폭 사용을 차지한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
하나의 예시적인 양태에서, 비주얼 미디어 프로세싱 방법이 개시된다. 이 방법은 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 비트스트림 표현은 코딩 툴에 대한 병합 후보들의 최대 수를 나타내는 신택스 요소가 비트스트림 표현에 선택적으로 포함되거나 제외되고, 이에 의해 코딩 툴이 변환에 대해 인에이블 또는 디스에이블되는지를 나타낸다는 것을 지정하는 포맷 규칙에 따라 구성되고, 여기서 코딩 툴에 대한 병합 후보들의 최대 수는 0 또는 양수이다.
하나의 예시적인 양태에서, 비주얼 미디어 프로세싱 방법이 개시된다. 이 방법은 다수의 비디오 블록들을 포함하는 하나 이상의 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 비트스트림 표현은 허용되는 기하학적 분할 모드(geometric partitioning mode, GPM) 모션 후보들의 수가 비디오 영역에 대한 코딩 툴의 적용 가능성에 관련된 신택스 요소가 비트스트림 표현에 포함되는지 여부를 결정한다는 것을 지정하는 포맷 규칙을 준수하고, 여기서 코딩 툴은 GPM 코딩 툴과 상이하며, 여기서 GPM은 모션 예측을 개별적으로 적용하기 위해 비디오 블록을 다수의 예측 파티션들로 분할하는 것을 포함하며, 적어도 하나의 파티션은 비직사각형 형상을 갖는다.
하나의 예시적인 양태에서, 비주얼 미디어 프로세싱 방법이 개시된다. 이 방법은 비주얼 미디어 데이터의 현재 비디오 유닛과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 비트스트림 표현은 최대 변환 블록 크기가 변환에 사용되는 최대 코딩 트리 유닛(CTU) 크기보다 작거나 같다는 것을 지정하는 포맷 규칙에 따라 구성된다.
하나의 예시적인 양태에서, 비주얼 미디어 프로세싱 방법이 개시된다. 이 방법은 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 변환은 ALF 필터의 계수들이 현재 비디오 블록의 비디오 영역에서의 샘플의 깊이에 기초하는 적응적 루프 필터(ALF)를 사용한다.
하나의 예시적인 양태에서, 비주얼 미디어 프로세싱 방법이 개시된다. 이 방법은 적응적 루프 필터(ALF)를 사용하여 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 비트스트림 표현은 현재 비디오 블록에 적용되는 ALF 필터가 적응 파라미터 세트(APS)에 기초하여 결정되는지 또는 고정 필터 세트들에 기초하여 결정되는지를 나타내는 하나 이상의 신택스 요소가 비트스트림 표현에 포함된다는 것을 지정하는 포맷 규칙에 따라 구성된다.
다른 예시적인 양태에서, 위에서 설명된 방법들은 프로세서를 포함하는 비디오 디코더 장치에 의해 구현될 수 있다.
다른 예시적인 양태에서, 위에서 설명된 방법들은 프로세서를 포함하는 비디오 인코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 양태에서, 이러한 방법들은 프로세서 실행 가능 명령어들의 형태로 구체화되고 컴퓨터 판독 가능 프로그램 매체에 저장될 수 있다.
이들 및 다른 양태들이 본 문서에서 더 설명된다.
도 1은 병합 후보 리스트 구성을 위한 도출 프로세스를 도시한다.
도 2는 공간 병합 후보들의 위치들의 예를 도시한다.
도 3은 공간 병합 후보들의 중복성 검사를 위해 고려되는 후보 쌍들의 예를 도시한다.
도 4는 Nx2N 및 2NxN 파티션들의 제2 PU에 대한 예시적인 위치들을 도시한다.
도 5는 시간 병합 후보에 대한 모션 벡터 스케일링의 예시의 예들을 도시한다.
도 6은 시간 병합 후보 C0 및 C1에 대한 후보 위치들의 예를 도시한다.
도 7은 결합된 양방향 예측 병합 후보의 예를 도시한다.
도 8은 모션 벡터 예측 후보들에 대한 도출 프로세스의 예들을 도시한다.
도 9는 공간 모션 벡터 후보에 대한 모션 벡터 스케일링의 예시적인 예시를 도시한다.
도 10은 4-파라미터 아핀 모델(좌측) 및 6-파라미터 아핀 모델(우측)에 대한 예시적인 단순화된 아핀 모션 모델을 도시한다.
도 11은 서브블록당 아핀 모션 벡터 필드의 예를 도시한다.
도 12는 아핀 병합 모드에 대한 예시적인 후보들 위치를 도시한다.
도 13은 수정된 병합 리스트 구성 프로세스의 예를 도시한다.
도 14는 삼각형 분할 기반 인터 예측의 예를 도시한다.
도 15는 제1 가중 인자 그룹을 적용하는 CU의 예를 도시한다.
도 16은 모션 벡터 저장의 예를 도시한다.
도 17은 UMVE(ultimate motion vector expression) 탐색 프로세스의 예를 도시한다.
도 18은 UMVE 탐색 포인트들의 예를 도시한다.
도 19는 DMVR에서 리스트 0과 리스트 1 사이에서 미러링되는 MVD(0, 1)의 예를 도시한다.
도 20은 한 번의 반복으로 검사될 수 있는 MV들을 도시한다.
도 21은 인트라 블록 복사의 예이다.
도 22는 비디오 프로세싱 장치의 예의 블록 다이어그램이다.
도 23은 비디오 프로세싱 방법의 예에 대한 플로차트이다.
도 24는 개시된 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템의 블록 다이어그램이다.
도 25는 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다.
도 26은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다.
도 27은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다.
도 28은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다.
도 29는 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다.
본 문서는 압축 해제되거나 디코딩된 디지털 비디오 또는 이미지들의 품질을 개선시키기 위해 이미지 또는 비디오 비트스트림들의 디코더에 의해 사용될 수 있는 다양한 기술들을 제공한다. 간결함을 위해, "비디오"라는 용어는 픽처들의 시퀀스(전통적으로 비디오라고 불림) 및 개별 이미지들 둘 모두를 포함하는 데 사용된다. 게다가, 비디오 인코더는 또한 추가의 인코딩에 사용되는 디코딩된 프레임들을 재구성하기 위해 인코딩 프로세스 동안 이러한 기술들을 구현할 수 있다.
섹션 표제들은 이해의 편의를 위해 본 문서에서 사용되며 실시예들 및 기술들을 대응하는 섹션들로 제한하지 않는다. 이에 따라, 한 섹션으로부터의 실시예들은 다른 섹션들로부터의 실시예들과 결합될 수 있다.
1. 간략한 요약
이 문서는 비디오 코딩 기술들에 관한 것이다. 구체적으로, 이는 삼각형 예측 모드를 포함하는 병합 코딩에 관한 것이다. 이는 HEVC와 같은 기존의 비디오 코딩 표준, 또는 완성될 표준(다목적 비디오 코딩(Versatile Video Coding))에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준들 또는 비디오 코덱에 적용 가능할 수 있다.
2. 초기 논의
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET(Joint Video Expert Team)가 만들어졌다.
VVC 초안의 최신 버전, 즉 Versatile Video Coding (Draft 5)은 http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v7.zip에서 찾아볼 수 있다.
VTM이라는 이름의 VVC의 최신 참조 소프트웨어는 https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-5.0에서 찾아볼 수 있다.
2.1 HEVC/H.265에서의 인터 예측
인터 코딩된 코딩 유닛들(CU들)의 경우, 이는 하나의 예측 유닛(PU)으로, 분할 모드에 따라 2 개의 PU로 코딩될 수 있다. 각각의 인터 예측된 PU는 하나 또는 2 개의 참조 픽처 리스트에 대한 모션 파라미터들을 갖는다. 모션 파라미터들은 모션 벡터 및 참조 픽처 인덱스를 포함한다. 2 개의 참조 픽처 리스트 중 하나의 사용은 또한 inter_pred_idc를 사용하여 시그널링될 수 있다. 모션 벡터들은 예측자들에 대한 델타들로 명시적으로 코딩될 수 있다.
CU가 스킵 모드로 코딩될 때, 하나의 PU는 CU와 연관되고, 유의미한 잔차 계수들, 코딩된 모션 벡터 델타 또는 참조 픽처 인덱스가 없다. 현재 PU에 대한 모션 파라미터들이, 공간 및 시간 후보들을 포함한, 이웃 PU들로부터 획득되는 병합 모드가 지정된다. 병합 모드는, 스킵 모드에 대해서뿐만 아니라, 임의의 인터 예측된 PU에 적용될 수 있다. 병합 모드의 대안은 모션 파라미터들의 명시적 전송이며, 여기서 모션 벡터(보다 정확하게 말하면, 모션 벡터 예측자와 비교한 모션 벡터 차이(MVD)), 각각의 참조 픽처 리스트에 대한 대응하는 참조 픽처 인덱스 및 참조 픽처 리스트 사용이 각각의 PU마다 명시적으로 시그널링된다. 그러한 모드는 본 개시에서 AMVP(Advanced motion vector prediction)라고 명명된다.
시그널링이 2 개의 참조 픽처 리스트 중 하나가 사용될 것임을 나타낼 때, PU는 하나의 샘플 블록으로부터 생성된다. 이것은 '단방향 예측'이라고 지칭된다. 단방향 예측은 P-슬라이스들 및 B-슬라이스들 둘 모두에 대해 이용 가능하다.
시그널링이 참조 픽처 리스트들 둘 모두가 사용될 것임을 나타낼 때, PU는 2 개의 샘플 블록으로부터 생성된다. 이것은 '양방향 예측'이라고 지칭된다. 양방향 예측은 B-슬라이스들에 대해서만 이용 가능하다.
이하의 텍스트는 HEVC에서 지정된 인터 예측 모드들에 대한 세부 사항들을 제공한다. 설명은 병합 모드로 시작될 것이다.
2.1.1 참조 픽처 리스트
HEVC에서, 인터 예측이라는 용어는 현재 디코딩된 픽처 이외의 참조 픽처들의 데이터 요소들(예를 들면, 샘플 값들 또는 모션 벡터들)로부터 도출되는 예측을 나타내기 위해 사용된다. H.264/AVC에서와 같이, 다수의 참조 픽처들로부터 픽처가 예측될 수 있다. 인터 예측에 사용되는 참조 픽처들은 하나 이상의 참조 픽처 리스트로 구성된다. 참조 인덱스는 리스트 내의 참조 픽처들 중 어느 것이 예측 신호를 생성하는 데 사용되어야 하는지를 식별해 준다.
단일 참조 픽처 리스트 List 0은 P 슬라이스에 사용되고, 2 개의 참조 픽처 리스트 List 0과 List 1은 B 슬라이스들에 사용된다. List 0/1에 포함된 참조 픽처들이 캡처/디스플레이 순서 측면에서 과거 및 미래 픽처들로부터 가져온 것일 수 있음에 유의해야 한다.
2.1.2 병합 모드
2.1.2.1 병합 모드에 대한 후보들의 도출
병합 모드를 사용하여 PU가 예측될 때, 병합 후보들 리스트에서의 엔트리를 가리키는 인덱스가 비트스트림으로부터 파싱되고 모션 정보를 검색하는 데 사용된다. 이 리스트의 구성은 HEVC 표준에 지정되어 있으며 이하의 단계들의 시퀀스에 따라 요약될 수 있다:
Figure pct00001
단계 1: 초기 후보들 도출
o 단계 1.1: 공간 후보들 도출
o 단계 1.2: 공간 후보들에 대한 중복성 검사
o 단계 1.3: 시간 후보들 도출
Figure pct00002
단계 2: 추가적인 후보들 삽입
o 단계 2.1: 양방향 예측 후보들의 생성
o 단계 2.2: 제로 모션 후보들의 삽입
이러한 단계들은 또한 도 1에 개략적으로 묘사되어 있다. 공간 병합 후보 도출을 위해, 5 개의 상이한 위치에 위치하는 후보들 중 최대 4 개의 병합 후보가 선택된다. 시간 병합 후보 도출을 위해, 2 개의 후보 중 최대 하나의 병합 후보가 선택된다. 디코더에서는 각각의 PU에 대한 후보들의 수가 일정한 것으로 가정되기 때문에, 단계 1로부터 획득되는 후보들의 수가 슬라이스 헤더에서 시그널링되는 병합 후보들의 최대 수(MaxNumMergeCand)에 도달하지 않을 때 추가적인 후보들이 생성된다. 후보들의 수가 일정하기 때문에, 최상의 병합 후보의 인덱스는 TU(truncated unary binarization)를 사용하여 인코딩된다. CU의 크기가 8과 동일한 경우, 현재 CU의 모든 PU들은, 2Nx2N 예측 유닛의 병합 후보 리스트와 동일한, 단일 병합 후보 리스트를 공유한다.
이하에서는, 앞서 언급된 단계들과 연관된 동작들이 상세히 설명된다.
2.1.2.2 공간 후보들 도출
공간 병합 후보들의 도출에서, 도 2에 묘사된 위치들에 위치하는 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 도출 순서는 A1, B1, B0, A0 및 B2이다. 위치 A1, B1, B0, A0의 임의의 PU가 (예를 들면, 다른 슬라이스 또는 타일에 속하기 때문에) 이용 가능하지 않거나 또는 인트라 코딩될 때에만 위치 B2가 고려된다. 위치 A1에 있는 후보가 추가된 후에, 나머지 후보들의 추가는 중복성 검사를 거치며, 이는 동일한 모션 정보를 가진 후보들이 리스트로부터 제외됨으로써 코딩 효율성이 개선되도록 보장한다. 계산 복잡도를 감소시키기 위해, 언급된 중복성 검사에서 모든 가능한 후보 쌍들이 고려되지는 않는다. 그 대신에 도 3에서 화살표로 연결된 쌍들만이 고려되고, 중복성 검사에 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 리스트에 추가된다. 중복된 모션 정보의 다른 소스는 2Nx2N과 상이한 파티션들과 연관된 "제2 PU"이다. 예로서, 도 4는, 제각기, Nx2N 및 2NxN의 경우에 대한 제2 PU를 묘사한다. 현재 PU가 Nx2N으로 분할될 때, 위치 A1에 있는 후보는 리스트 구성에 고려되지 않는다. 사실, 이 후보를 추가함으로써 2 개의 예측 유닛이 동일한 모션 정보를 갖게 될 것이며, 이는 코딩 유닛에서 단지 하나의 PU를 갖는 데 중복적이다. 유사하게, 현재 PU가 2NxN으로서 분할될 때 위치 B1은 고려되지 않는다.
2.1.2.3 시간 후보들 도출
이 단계에서, 단지 하나의 후보가 리스트에 추가된다. 특히, 이 시간 병합 후보의 도출에서, 스케일링된 모션 벡터는 동일 위치 픽처에서의 동일 위치 PU에 기초하여 도출된다. POC 거리들 tb 및 td를 사용하여 동일 위치 PU의 모션 벡터로부터 스케일링되는, 시간 병합 후보에 대한 스케일링된 모션 벡터는 도 5에 점선으로 예시된 바와 같이 획득되며, 여기서 tb는 현재 픽처의 참조 픽처와 현재 픽처 사이의 POC 차이로 정의되고, td는 동일 위치 픽처의 참조 픽처와 동일 위치 픽처 사이의 POC 차이로 정의된다. 시간 병합 후보의 참조 픽처 인덱스는 0과 동일하게 설정된다. 스케일링 프로세스의 실제 실현은 HEVC 사양 [1]에 설명되어 있다. B-슬라이스의 경우, 하나는 참조 픽처 리스트 0에 대한 것이고 다른 하나는 참조 픽처 리스트 1에 대한 것인 2 개의 모션 벡터가 획득되고 결합되어 양방향 예측 병합 후보가 된다.
2.1.2.4 동일 위치 픽처 및 동일 위치 PU
TMVP가 인에이블될 때(즉, slice_temporal_mvp_enabled_flag가 1과 동일할 때), 동일 위치 픽처를 나타내는 변수 ColPic은 다음과 같이 도출된다:
- 현재 슬라이스가 B 슬라이스이고 시그널링된 collocated_from_l0_flag가 0과 동일한 경우, ColPic은 RefPicList1[ collocated_ref_idx ]과 동일하게 설정된다.
- 그렇지 않은 경우(slice_type이 B와 동일하고 collocated_from_l0_flag가 1과 동일하거나 slice_type이 P와 동일한 경우), ColPic은 RefPicList0[ collocated_ref_idx ]와 동일하게 설정된다.
여기서 collocated_ref_idx 및 collocated_from_l0_flag는 슬라이스 헤더에서 시그널링될 수 있는 2 개의 신택스 요소이다.
참조 프레임에 속하는 동일 위치 PU(Y)에서, 도 6에 묘사된 바와 같이, 시간 후보에 대한 위치는 후보들 C0 및 C1 중에서 선택된다. 위치 C0에 PU가 이용 가능하지 않거나, 인트라 코딩되거나, 또는 현재 코딩 트리 유닛(CTU, LCU(largest coding unit)라고도 함) 외부에 있는 경우, 위치 C1이 사용된다. 그렇지 않은 경우, 위치 C0이 시간 병합 후보의 도출에 사용된다.
관련 신택스 요소들은 다음과 같이 설명된다:
7.3.6.1 일반 슬라이스 세그먼트 헤더 신택스
Figure pct00003
2.1.2.5 TMVP 후보에 대한 MV들의 도출
보다 구체적으로, TMVP 후보를 도출하기 위해 이하의 단계들이 수행된다:
1) 참조 픽처 리스트 X = 0, 타깃 참조 픽처를 리스트 X에서 인덱스가 0(즉, curr_ref)과 동일한 참조 픽처로 설정한다. curr_ref를 가리키는 리스트 X에 대한 MV를 얻기 위해 동일 위치 모션 벡터들에 대한 도출 프로세스를 호출한다.
2) 현재 슬라이스가 B 슬라이스인 경우, 참조 픽처 리스트 X = 1, 타깃 참조 픽처를 리스트 X에서 인덱스가 0(즉, curr_ref)과 동일한 참조 픽처로 설정한다. curr_ref를 가리키는 리스트 X에 대한 MV를 얻기 위해 동일 위치 모션 벡터들에 대한 도출 프로세스를 호출한다.
동일 위치 모션 벡터들에 대한 도출 프로세스는 다음 하위 섹션 2.1.2.5.1에 설명되어 있다.
2.1.2.5.1 동일 위치 모션 벡터들에 대한 도출 프로세스
동일 위치 블록의 경우, 이는 단방향 예측 또는 양방향 예측으로 인트라 또는 인터 코딩될 수 있다. 그것이 인트라 코딩되는 경우, TMVP 후보는 사용 불가능으로 설정된다.
그것이 리스트 A로부터의 단방향 예측인 경우, 리스트 A의 모션 벡터는 타깃 참조 픽처 리스트 X로 스케일링된다.
그것이 양방향 예측이고 타깃 참조 픽처 리스트가 X인 경우, 리스트 A의 모션 벡터는 타깃 참조 픽처 리스트 X로 스케일링되고, A는 이하의 규칙들에 따라 결정된다:
- 참조 픽처들 중 어느 것도 현재 픽처와 비교하여 더 큰 POC 값들을 갖지 않는 경우, A는 X와 동일하게 설정된다.
- 그렇지 않은 경우, A는 collocated_from_l0_flag와 동일하게 설정된다.
JCTVC-W1005-v4에서의 관련 작업 초안은 다음과 같이 설명된다:
8.5.3.2.9 동일 위치 모션 벡터들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 예측 블록을 지정하는 변수 currPb,
- ColPic에 의해 지정되는 동일 위치 픽처 내부의 동일 위치 예측 블록을 지정하는 변수 colPb,
- ColPic에 의해 지정되는 동일 위치 픽처의 좌측 상단 루마 샘플을 기준으로 colPb에 의해 지정되는 동일 위치 루마 예측 블록의 좌측 상단 샘플을 지정하는 루마 위치 ( xColPb, yColPb ),
- 참조 인덱스 refIdxLX, 단, X는 0 또는 1임.
이 프로세스의 출력들은 다음과 같다.
- 모션 벡터 예측 mvLXCol,
- 이용 가능성 플래그 availableFlagLXCol.
변수 currPic은 현재 픽처를 지정한다.
어레이들 predFlagL0Col[ x ][ y ], mvL0Col[ x ][ y ], 및 refIdxL0Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL0[ x ][ y ], MvL0[ x ][ y ], 및 RefIdxL0[ x ][ y ]와 동일하게 설정되고, 어레이들 predFlagL1Col[ x ][ y ], mvL1Col[ x ][ y ], 및 refIdxL1Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL1[ x ][ y ], MvL1[ x ][ y ], 및 RefIdxL1[ x ][ y ]와 동일하게 설정된다.
변수들 mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- colPb가 인트라 예측 모드로 코딩된 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고, availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 모션 벡터 mvCol, 참조 인덱스 refIdxCol 및 참조 리스트 식별자 listCol은 다음과 같이 도출된다:
- predFlagL0Col[ xColPb ][ yColPb ]가 0과 동일한 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvL1Col[ xColPb ][ yColPb ], refIdxL1Col[ xColPb ][ yColPb ], 및 L1과 동일하게 설정된다.
- 그렇지 않고, predFlagL0Col[ xColPb ][ yColPb ]가 1과 동일하고 predFlagL1Col[ xColPb ][ yColPb ]가 0과 동일한 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvL0Col[ xColPb ][ yColPb ], refIdxL0Col[ xColPb ][ yColPb ], 및 L0과 동일하게 설정된다.
- 그렇지 않은 경우(predFlagL0Col[ xColPb ][ yColPb ]가 1과 동일하고 predFlagL1Col[ xColPb ][ yColPb ]가 1과 동일한 경우), 이하의 할당들이 이루어진다:
- NoBackwardPredFlag가 1과 동일한 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvLXCol[ xColPb ][ yColPb ], refIdxLXCol[ xColPb ][ yColPb ], 및 LX와 동일하게 설정된다.
- 그렇지 않은 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvLNCol[ xColPb ][ yColPb ], refIdxLNCol[ xColPb ][ yColPb ], 및 LN과 동일하게 설정되고, N은 collocated_from_l0_flag의 값이다.
mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- LongTermRefPic( currPic, currPb, refIdxLX, LX )가 LongTermRefPic( ColPic, colPb, refIdxCol, listCol )과 동일하지 않은 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고 availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 변수 availableFlagLXCol은 1과 동일하게 설정되고, refPicListCol[ refIdxCol ]은 ColPic에 의해 지정되는 동일 위치 픽처에서 예측 블록 colPb를 포함하는 슬라이스의 참조 픽처 리스트 listCol에서 참조 인덱스 refIdxCol을 갖는 픽처로 설정되며, 다음이 적용된다:
Figure pct00004
- RefPicListX[ refIdxLX ]가 장기 참조 픽처이거나 colPocDiff가 currPocDiff와 동일한 경우, mvLXCol은 다음과 같이 도출된다:
Figure pct00005
- 그렇지 않은 경우, mvLXCol은 다음과 같이 모션 벡터 mvCol의 스케일링된 버전으로서 도출된다:
Figure pct00006
여기서 td 및 tb는 다음과 같이 도출된다:
Figure pct00007
NoBackwardPredFlag의 정의는 다음과 같다:
변수 NoBackwardPredFlag는 다음과 같이 도출된다:
- 현재 슬라이스의 RefPicList0 또는 RefPicList1 내의 각각의 픽처 aPic에 대해 DiffPicOrderCnt( aPic, CurrPic )가 0보다 작거나 같은 경우, NoBackwardPredFlag가 1과 동일하게 설정된다.
- 그렇지 않은 경우, NoBackwardPredFlag가 0과 동일하게 설정된다.
2.1.2.6 추가적인 후보들 삽입
공간 및 시간 병합 후보들 외에도, 두 가지 추가적인 유형의 병합 후보, 즉 결합된 양방향 예측 병합 후보와 제로 병합 후보가 있다. 결합된 양방향 예측 병합 후보들은 공간 및 시간 병합 후보들을 활용하여 생성된다. 결합된 양방향 예측 병합 후보는 B-슬라이스에만 사용된다. 결합된 양방향 예측 후보들은 초기 후보의 제1 참조 픽처 리스트 모션 파라미터들을 다른 후보의 제2 참조 픽처 리스트 모션 파라미터들과 결합시키는 것에 의해 생성된다. 이 2 개의 튜플이 상이한 모션 가설들을 제공하는 경우, 이들은 새로운 양방향 예측 후보를 형성할 것이다. 예로서, 도 7은 mvL0과 refIdxL0 또는 mvL1과 refIdxL1을 갖는 원래 리스트(좌측) 내의 2 개의 후보가 최종 리스트(우측)에 추가되는 결합된 양방향 예측 병합 후보를 생성하는 데 사용되는 경우를 묘사한다. [1]에 정의된 이러한 추가적인 병합 후보들을 생성하기 위해 고려되는 조합들에 관한 수많은 규칙들이 있다.
병합 후보들 리스트 내의 나머지 엔트리들을 채우기 위해 제로 모션 후보들이 삽입되며 따라서 MaxNumMergeCand 용량에 도달한다. 이러한 후보들은 제로 공간 변위 및 0부터 시작하여 새로운 제로 모션 후보가 리스트에 추가될 때마다 증가하는 참조 픽처 인덱스를 갖는다. 마지막으로, 이러한 후보들에 대해서는 중복성 검사가 수행되지 않는다.
2.1.3 AMVP
AMVP는, 모션 파라미터들의 명시적 전송에 사용되는, 이웃 PU들과 모션 벡터의 시공간 상관을 활용한다. 각각의 참조 픽처 리스트에 대해, 먼저 좌측 위쪽의 시간적으로 이웃하는 PU 위치들의 이용 가능성을 검사하고, 중복 후보들을 제거하며, 후보 리스트를 일정한 길이로 만들기 위해 제로 벡터를 추가하는 것에 의해 모션 벡터 후보 리스트가 구성된다. 이어서, 인코더는 후보 리스트로부터 최상의 예측자를 선택하고 선택된 후보를 나타내는 대응하는 인덱스를 전송할 수 있다. 병합 인덱스 시그널링과 유사하게, 최상의 모션 벡터 후보의 인덱스는 절단된 단항(truncated unary)을 사용하여 인코딩된다. 이 경우에 인코딩될 최댓값은 2이다(도 8 참조). 이하의 섹션들에서는, 모션 벡터 예측 후보의 도출 프로세스에 관한 세부 사항들이 제공된다.
2.1.3.1 AMVP 후보들의 도출
도 8은 모션 벡터 예측 후보에 대한 도출 프로세스를 요약한 것이다.
모션 벡터 예측에서, 두 가지 유형의 모션 벡터 후보들, 공간 모션 벡터 후보 및 시간 모션 벡터 후보가 고려된다. 공간 모션 벡터 후보 도출의 경우, 도 2에 묘사된 바와 같이 5 개의 상이한 위치에 위치하는 각각의 PU의 모션 벡터들에 기초하여 2 개의 모션 벡터 후보가 최종적으로 도출된다.
시간 모션 벡터 후보 도출의 경우, 2 개의 상이한 병치된 위치에 기초하여 도출되는 2 개의 후보 중에서 하나의 모션 벡터 후보가 선택된다. 제1 시공간 후보 리스트가 만들어진 후에, 리스트 내의 중복된 모션 벡터 후보들이 제거된다. 잠재적 후보들의 수가 2보다 큰 경우, 연관된 참조 픽처 리스트 내의 참조 픽처 인덱스가 1보다 큰 모션 벡터 후보들이 리스트로부터 제거된다. 시공간 모션 벡터 후보들의 수가 2보다 작은 경우, 추가적인 제로 모션 벡터 후보들이 리스트에 추가된다.
2.1.3.2 공간 모션 벡터 후보들
공간 모션 벡터 후보들의 도출에서, 도 2에 묘사된 바와 같은 위치들에 위치하는 PU들로부터 도출되는 5 개의 잠재적 후보 중 최대 2 개의 후보가 고려되며, 해당 위치들은 모션 병합의 위치들과 동일하다. 현재 PU의 좌측에 대한 도출 순서는 A0, A1, 및 스케일링된 A0, 스케일링된 A1로서 정의된다. 현재 PU의 위쪽에 대한 도출 순서는 B0, B1, B2, 스케일링된 B0, 스케일링된 B1, 스케일링된 B2로서 정의된다. 따라서 각각의 측면에 대해, 모션 벡터 후보로서 사용될 수 있는 4 개의 경우가 있으며, 2 개의 경우는 공간 스케일링을 사용할 필요가 없고, 2 개의 경우는 공간 스케일링이 사용된다. 네 가지 상이한 경우는 다음과 같이 요약된다.
Figure pct00008
공간 스케일링 없음
- (1) 동일한 참조 픽처 리스트, 그리고 동일한 참조 픽처 인덱스(동일한 POC)
- (2) 상이한 참조 픽처 리스트, 그러나 동일한 참조 픽처(동일한 POC)
Figure pct00009
공간 스케일링
- (3) 동일한 참조 픽처 리스트, 그러나 상이한 참조 픽처(상이한 POC)
- (4) 상이한 참조 픽처 리스트, 그리고 상이한 참조 픽처(상이한 POC)
공간 스케일링이 없는 경우들이 먼저 검사된 후 공간 스케일링이 뒤따른다. 참조 픽처 리스트에 관계없이 이웃 PU의 참조 픽처와 현재 PU의 참조 픽처 사이의 POC가 상이할 때 공간 스케일링이 고려된다. 좌측 후보들의 모든 PU들이 이용 가능하지는 않거나 인트라 코딩된 경우, 좌측 및 위쪽 MV 후보들의 병렬 도출들을 돕기 위해 위쪽 모션 벡터에 대한 스케일링이 허용된다. 그렇지 않은 경우, 위쪽 모션 벡터에 대해 공간 스케일링이 허용되지 않는다.
공간 스케일링 프로세스에서, 이웃 PU의 모션 벡터는, 도 9에 묘사된 바와 같이, 시간 스케일링에 대해서와 유사한 방식으로 스케일링된다. 주요 차이점은 현재 PU의 참조 픽처 리스트 및 인덱스가 입력으로서 주어진다는 것이고; 실제 스케일링 프로세스는 시간 스케일링 프로세스와 동일하다.
2.1.3.3 시간 모션 벡터 후보들
참조 픽처 인덱스 도출을 제외하고, 시간 병합 후보들의 도출을 위한 모든 프로세스들은 공간 모션 벡터 후보들의 도출에 대해서와 동일하다(도 6 참조). 참조 픽처 인덱스는 디코더에 시그널링된다.
2.2 VVC에서의 인터 예측 방법들
MVD를 시그널링하기 위한 AMVR(Adaptive Motion Vector Difference Resolution), MMVD(Merge with Motion Vector Differences), TPM(Triangular prediction mode), CIIP(Combined intra-inter prediction), 고급 TMVP(ATMVP, SbTMVP라고도 함), 아핀 예측 모드, GBI(Generalized Bi-Prediction), DMVR(Decoder-side Motion Vector Refinement) 및 양방향 광학 흐름(BIO, BDOF라고도 함)과 같은, 인터 예측 개선을 위한 여러 새로운 코딩 툴들이 있다.
VVC에서 지원되는 세 가지 상이한 병합 리스트 구성 프로세스가 있다:
1) 서브블록 병합 후보 리스트: 이는 ATMVP 및 아핀 병합 후보들을 포함한다. 하나의 병합 리스트 구성 프로세스가 아핀 모드들 및 ATMVP 모드 둘 모두에 대해 공유된다. 여기서, ATMVP와 아핀 병합 후보들은 순서대로 추가될 수 있다. 서브블록 병합 리스트 크기는 슬라이스 헤더에서 시그널링되고, 최댓값은 5이다.
2) 일반 병합 리스트: 인터 코딩된 블록들의 경우, 하나의 병합 리스트 구성 프로세스가 공유된다. 여기서, 공간/시간 병합 후보들, HMVP, 쌍별 병합 후보들 및 제로 모션 후보들이 순서대로 삽입될 수 있다. 일반 병합 리스트 크기는 슬라이스 헤더에서 시그널링되고, 최댓값은 6이다. MMVD, TPM, CIIP는 일반 병합 리스트에 의존한다.
3) IBC 병합 리스트: 이는 일반 병합 리스트와 유사한 방식으로 행해진다.
유사하게, VVC에서 지원되는 세 가지 AMVP 리스트가 있다:
1) 아핀 AMVP 후보 리스트
2) 일반 AMVP 후보 리스트
3) IBC AMVP 후보 리스트: JVET-N0843의 채택으로 인해 IBC 병합 리스트와 동일한 구성 프로세스
2.2.1 VVC에서의 코딩 블록 구조
VVC에서는, 픽처를 정사각형 또는 직사각형 블록들로 분할하기 위해 QT/BT/TT(Quad-Tree/Binary Tree/Ternary-Tree) 구조가 채택된다.
QT/BT/TT 외에, 별도의 트리(이중 코딩 트리라고도 함)가 또한 I-프레임들을 위해 VVC에서 채택된다. 별도의 트리를 사용하여, 코딩 블록 구조가 루마 및 크로마 성분들에 대해 별도로 시그널링된다.
추가적으로, (PU가 TU와 동일하지만 CU보다 작은 인트라 서브파티션 예측, 및 PU가 CU와 동일하지만 TU가 PU보다 작은 인터 코딩된 블록들에 대한 서브블록 변환과 같은) 몇 가지 특정 코딩 방법들로 코딩된 블록들을 제외하고, CU는 PU 및 TU와 동일하게 설정된다.
2.2.2 아핀 예측 모드
HEVC에서, 모션 보상 예측(MCP)을 위해 병진 모션 모델만이 적용된다. 현실 세계에는, 많은 종류들의 모션, 예를 들면, 줌인/줌아웃, 회전, 원근 모션들(perspective motions) 및 다른 불규칙한 모션들이 있다. VVC에서, 단순화된 아핀 변환 모션 보상 예측은 4-파라미터 아핀 모델과 6-파라미터 아핀 모델에 대해 적용된다. 도 10에 도시된 바와 같이, 블록의 아핀 모션 필드는 4-파라미터 아핀 모델에 대한 2 개의 제어 포인트 모션 벡터(CPMV) 및 6-파라미터 아핀 모델에 대한 3 개의 CPMV에 의해 설명된다.
블록의 모션 벡터 필드(MVF)는, 제각기, 수학식 1에서의 4-파라미터 아핀 모델(여기서 4-파라미터는 변수들 a, b, ef로서 정의됨) 및 수학식 2에서의 6-파라미터 아핀 모델(여기서 6-파라미터는 변수들 a, b, c, d, ef로서 정의됨)을 사용하여 이하의 수학식들에 의해 설명되고:
Figure pct00010
Figure pct00011
여기서 (mv h 0 , mv h 0 )은 좌측 상단 코너 제어 포인트의 모션 벡터이고, (mv h 1 , mv h 1 )은 우측 상단 코너 제어 포인트의 모션 벡터이며, (mv h 2 , mv h 2 )는 좌측 하단 코너 제어 포인트의 모션 벡터이고, 3 개의 모션 벡터 모두는 제어 포인트 모션 벡터(CPMV)라고 불리며, (x, y)는 현재 블록 내의 좌측 상단 샘플을 기준으로 대표 포인트의 좌표를 나타내고, (mvh(x,y), mvv(x,y))는 (x, y)에 위치한 샘플에 대해 도출된 모션 벡터이다. CP 모션 벡터들은 (아핀 AMVP 모드에서와 같이) 시그널링되거나 (아핀 병합 모드에서와 같이) 즉시 도출될 수 있다. wh는 현재 블록의 폭과 높이이다. 실제로, 나눗셈은 반올림 연산과 함께 우측 시프트에 의해 구현된다. VTM에서, 대표 포인트는 서브블록의 중심 위치로 정의되고, 예를 들면, 현재 블록 내에서 좌측 상단 샘플을 기준으로 서브블록의 좌측 상단 코너의 좌표가 (xs, ys)일 때, 대표 포인트의 좌표는 (xs+2, ys+2)로 정의된다. 각각의 서브블록(즉, VTM에서 4x4)에 대해, 대표 포인트는 전체 서브블록에 대한 모션 벡터를 도출하기 위해 활용된다.
모션 보상 예측을 더 단순화시키기 위해, 서브블록 기반 아핀 변환 예측이 적용된다. 각각의 M×N(현재 VVC에서 M과 N 둘 모두는 4로 설정됨) 서브블록의 모션 벡터를 도출하기 위해, 도 11에 도시된 바와 같이, 각각의 서브블록의 중심 샘플의 모션 벡터는 수학식 1 및 수학식 2에 따라 계산되고, 1/16 분수 정확도로 반올림된다. 이어서 도출된 모션 벡터로 각각의 서브블록의 예측을 생성하기 위해 1/16 펠에 대한 모션 보상 보간 필터들이 적용된다. 1/16 펠에 대한 보간 필터들은 아핀 모드에 의해 도입된다.
MCP 이후에, 각각의 서브블록의 고정확도 모션 벡터는 일반 모션 벡터와 동일한 정확도로서 반올림되고 저장된다.
2.2.3 전체 블록에 대한 병합
2.2.3.1 병진 일반 병합 모드의 병합 리스트 구성
2.2.3.1.1 히스토리 기반 모션 벡터 예측(HMVP)
병합 리스트 설계와 달리, VVC에서는, HMVP(history-based motion vector prediction) 방법이 이용된다.
HMVP에서는, 이전에 코딩된 모션 정보가 저장된다. 이전에 코딩된 블록의 모션 정보는 HMVP 후보로서 정의된다. 다수의 HMVP 후보들이 HMVP 테이블이라는 테이블에 저장되며, 이 테이블은 인코딩/디코딩 프로세스 동안 즉시 유지된다. 새로운 타일/LCU 행/슬라이스를 코딩/디코딩하기 시작할 때 HMVP 테이블이 비워진다. 인터 코딩된 블록 및 비-서브블록, 비-TPM 모드가 있을 때마다, 연관된 모션 정보가 새로운 HMVP 후보로서 테이블의 마지막 엔트리에 추가된다. 전체적인 코딩 흐름은 도 12에 묘사되어 있다.
2.2.3.1.2 일반 병합 리스트 구성 프로세스
(병진 모션에 대한) 일반 병합 리스트의 구성은 이하의 단계들의 시퀀스에 따라 요약될 수 있다:
Figure pct00012
단계 1: 공간 후보들의 도출
Figure pct00013
단계 2: HMVP 후보들의 삽입
Figure pct00014
단계 3: 쌍별 평균 후보들의 삽입
Figure pct00015
단계 4: 디폴트 모션 후보들
HMVP 후보들은 AMVP 및 병합 후보 리스트 구성 프로세스들 둘 모두에서 사용될 수 있다. 도 13은 수정된 병합 후보 리스트 구성 프로세스(점선 패턴으로 도시됨)를 묘사한다. TMVP 후보 삽입 후에 병합 후보 리스트가 채워지지 않을 때, HMVP 테이블에 저장된 HMVP 후보들이 병합 후보 리스트를 채우는 데 활용될 수 있다. 하나의 블록이 보통 모션 정보의 측면에서 최근접 이웃 블록과 보다 높은 상관을 갖는다는 것을 고려하여, 테이블에서의 HMVP 후보들이 인덱스들의 내림차순으로 삽입된다. 테이블에서의 마지막 엔트리가 첫 번째로 리스트에 추가되는 반면, 첫 번째 엔트리는 끝부분에 추가된다. 유사하게, 중복성 제거가 HMVP 후보들에 적용된다. 이용 가능한 병합 후보들의 총수가 시그널링되도록 허용된 최대 병합 후보 수에 일단 도달하면, 병합 후보 리스트 구성 프로세스가 종료된다.
공간/시간/HMVP 후보 모두가 비-IBC 모드로 코딩되어야 한다는 점에 유의한다. 그렇지 않은 경우, 이는 일반 병합 후보 리스트에 추가되도록 허용되지 않는다.
HMVP 테이블은 최대 5 개의 일반 모션 후보를 포함하며, 이들 각각은 고유하다.
2.2.3.1.2.1 프루닝 프로세스들
중복성 검사에 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 리스트에 추가된다. 그러한 비교 프로세스가 프루닝 프로세스라고 불린다.
공간 후보들 간의 프루닝 프로세스는 현재 블록에 대한 TPM의 사용에 의존한다.
현재 블록이 TPM 모드(예를 들면, 일반 병합, MMVD, CIIP)를 사용하지 않고 코딩될 때, 공간 병합 후보들에 대한 HEVC 프루닝 프로세스(즉, 5 프루닝)가 활용된다.
2.2.4 삼각형 예측 모드(TPM)
VVC에서는, 인터 예측을 위해 삼각형 분할 모드가 지원된다. 삼각형 분할 모드는, 8x8 이상이고 병합 모드로 코딩되지만 MMVD 또는 CIIP 모드로 코딩되지 않은, CU들에만 적용된다. 이러한 조건들을 충족시키는 CU의 경우, 삼각형 분할 모드가 적용되는지 여부를 나타내기 위해 CU 레벨 플래그가 시그널링된다.
이 모드가 사용될 때, CU는, 도 14에 묘사된 바와 같이, 대각선 분할 또는 역대각선 분할을 사용하여 2 개의 삼각형 형상 파티션으로 균등하게 분할된다. CU에서의 각각의 삼각형 파티션은 그 자신의 모션을 사용하여 인터 예측되고; 각각의 파티션에 대해 단방향 예측만이 허용된다, 즉, 각각의 파티션은 하나의 모션 벡터와 하나의 참조 인덱스를 갖는다. 종래의 양방향 예측과 동일하게, 각각의 CU에 대해 단지 2 개의 모션 보상된 예측이 필요하도록 보장하기 위해 단방향 예측 모션 제약조건이 적용된다.
CU 레벨 플래그가 현재 CU가 삼각형 분할 모드를 사용하여 코딩된다는 것을 나타내는 경우, 삼각형 분할(대각선 또는 역대각선)의 방향을 나타내는 플래그 및 2 개의 병합 인덱스(각각의 파티션에 대해 하나씩)가 더 시그널링된다. 삼각형 파티션들 각각을 예측한 후에, 대각선 또는 역대각선 에지를 따라 있는 샘플 값들이 적응적 가중치들을 갖는 블렌딩 프로세싱을 사용하여 조정된다. 이것은 전체 CU에 대한 예측 신호이며, 변환 및 양자화 프로세스는 다른 예측 모드들에서와 같이 전체 CU에 적용될 것이다. 마지막으로, 삼각형 분할 모드를 사용하여 예측되는 CU의 모션 필드는 4x4 단위로 저장된다.
일반 병합 후보 리스트는 추가의 모션 벡터 프루닝 없이 삼각형 분할 병합 예측에 재사용된다. 일반 병합 후보 리스트에서의 각각의 병합 후보에 대해, 그의 L0 또는 L1 모션 벡터 중 하나만이 삼각형 예측에 사용된다. 추가적으로, L0 대 L1 모션 벡터를 선택하는 순서는 그의 병합 인덱스 패리티에 기초한다. 이 방식에서는, 일반 병합 리스트가 직접 사용될 수 있다.
2.2.4.1 TPM에 대한 병합 리스트 구성 프로세스
기본적으로, JVET-N0340에서 제안된 바와 같이 일반 병합 리스트 구성 프로세스가 적용된다. 그렇지만, 일부 수정 사항들이 추가된다.
구체적으로, 다음이 적용된다:
1) 프루닝 프로세스를 어떻게 행할지는 현재 블록에 대한 TPM의 사용에 의존한다
- 현재 블록이 TPM으로 코딩되지 않은 경우, 공간 병합 후보들에 적용되는 HEVC 5 프루닝이 호출된다.
- 그렇지 않은 경우(현재 블록이 TPM으로 코딩되는 경우), 새로운 공간 병합 후보들을 추가할 때 전체 프루닝(full pruning)이 적용된다. 즉, B1은 A1과 비교되고; B0은 A1 및 B1과 비교되며; A0은 A1, B1 및 B0과 비교되고; B2는 A1, B1, A0 및 B0과 비교된다.
2) B2로부터의 모션 정보를 검사할지 여부에 대한 조건은 현재 블록에 대한 TPM의 사용에 의존한다
- 현재 블록이 TPM으로 코딩되지 않은 경우, B2를 검사하기 전에 4 개 미만의 공간 병합 후보가 있을 때에만 B2가 액세스되어 검사된다.
- 그렇지 않은 경우(현재 블록이 TPM으로 코딩되는 경우), B2를 추가하기 전에 이용 가능한 공간 병합 후보가 몇 개인지에 관계없이 B2가 항상 액세스되어 검사된다.
2.2.4.2 적응적 가중 프로세스
각각의 삼각형 예측 유닛을 예측한 후에, 전체 CU에 대한 최종 예측을 도출하기 위해 2 개의 삼각형 예측 유닛 사이의 대각선 에지에 적응적 가중 프로세스가 적용된다. 2 개의 가중 인자 그룹이 다음과 같이 정의된다:
Figure pct00016
제1 가중 인자 그룹: {7/8, 6/8, 4/8, 2/8, 1/8} 및 {7/8, 4/8, 1/8}이, 제각기, 루미넌스 및 크로미넌스 샘플들에 사용된다.
Figure pct00017
제2 가중 인자 그룹: {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} 및 {6/8, 4/8, 2/8}이, 제각기, 루미넌스 및 크로미넌스 샘플들에 사용된다.
가중 인자 그룹은 2 개의 삼각형 예측 유닛의 모션 벡터들의 비교에 기초하여 선택된다. 제2 가중 인자 그룹은 이하의 조건 중 임의의 것이 참일 때 사용된다:
- 2 개의 삼각형 예측 유닛의 참조 픽처들이 서로 상이하다
- 2 개의 모션 벡터의 수평 값들의 차이의 절댓값이 16 픽셀보다 크다.
- 2 개의 모션 벡터의 수직 값들의 차이의 절댓값이 16 픽셀보다 크다.
그렇지 않은 경우, 제1 가중 인자 그룹이 사용된다. 예는 도 15에 도시되어 있다.
2.2.4.3 모션 벡터 저장
삼각형 예측 유닛들의 모션 벡터들(도 16에서의 Mv1 및 Mv2)은 4x4 격자들에 저장된다. 각각의 4x4 격자에 대해, CU에서의 4x4 격자의 위치에 따라 단방향 예측 또는 양방향 예측 모션 벡터가 저장된다. 도 16에 도시된 바와 같이, 비가중된 영역(즉, 대각선 에지에 위치하지 않음)에 위치하는 4x4 격자에 대해서는 단방향 예측 모션 벡터(Mv1 또는 Mv2)가 저장된다. 다른 한편으로, 가중된 영역에 위치하는 4x4 격자에 대해서는 양방향 예측 모션 벡터가 저장된다. 양방향 예측 모션 벡터는 이하의 규칙들에 따라 Mv1 및 Mv2로부터 도출된다:
1) Mv1과 Mv2가 상이한 방향들(L0 또는 L1)로부터의 모션 벡터를 가지는 경우에, Mv1과 Mv2는 단순히 결합되어 양방향 예측 모션 벡터를 형성한다.
2) Mv1과 Mv2 둘 모두가 동일한 L0(또는 L1) 방향으로부터의 것인 경우에,
- Mv2의 참조 픽처가 L1(또는 L0) 참조 픽처 리스트에 있는 픽처와 동일한 경우, Mv2가 픽처로 스케일링된다. Mv1 및 스케일링된 Mv2가 결합되어 양방향 예측 모션 벡터를 형성한다.
- Mv1의 참조 픽처가 L1(또는 L0) 참조 픽처 리스트에 있는 픽처와 동일한 경우, Mv1가 픽처로 스케일링된다. 스케일링된 Mv1 및 Mv2가 결합되어 양방향 예측 모션 벡터를 형성한다.
- 그렇지 않은 경우, 가중된 영역에 대해 Mv1만이 저장된다.
2.2.4.4 병합 모드에 대한 신택스 테이블들, 시맨틱스 및 디코딩 프로세스
7.3.5.1 일반 슬라이스 헤더 신택스
Figure pct00018
Figure pct00019
7.3.7.5 코딩 유닛 신택스
Figure pct00020
Figure pct00021
Figure pct00022
7.3.7.7 병합 데이터 신택스
Figure pct00023
Figure pct00024
7.4.6.1 일반 슬라이스 헤더 시맨틱스
six_minus_max_num_merge_cand는 6에서 슬라이스에서 지원되는 병합 모션 벡터 예측(MVP) 후보들의 최대 수를 뺀 것을 지정한다. 병합 MVP 후보들의 최대 수 MaxNumMergeCand는 다음과 같이 도출된다:
Figure pct00025
MaxNumMergeCand의 값은 1 내지 6(경계 포함)의 범위에 있어야 한다.
five_minus_max_num_subblock_merge_cand는 5에서 슬라이스에서 지원되는 서브블록 기반 병합 모션 벡터 예측(MVP) 후보들의 최대 수를 뺀 것을 지정한다. five_minus_max_num_subblock_merge_cand가 존재하지 않을 때, 이는 5 - sps_sbtmvp_enabled_flag와 동일한 것으로 추론된다. 서브블록 기반 병합 MVP 후보들의 최대 수 MaxNumSubblockMergeCand는 다음과 같이 도출된다:
Figure pct00026
MaxNumSubblockMergeCand의 값은 0 내지 5(경계 포함)의 범위에 있어야 한다.
7.4.8.5 코딩 유닛 시맨틱스
pred_mode_flag가 0과 동일한 것은 현재 코딩 유닛이 인터 예측 모드로 코딩된다는 것을 지정한다. pred_mode_flag가 1과 동일한 것은 현재 코딩 유닛이 인트라 예측 모드로 코딩된다는 것을 지정한다.
pred_mode_flag가 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cbWidth가 4와 동일하고 cbHeight가 4와 동일한 경우, pred_mode_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않은 경우, pred_mode_flag는, 제각기, I 슬라이스를 디코딩할 때는 1과 동일한 것으로 추정되고, P 또는 B 슬라이스를 디코딩할 때는 0과 동일한 것으로 추론된다.
변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1에 대해 다음과 같이 도출된다:
- pred_mode_flag가 0과 동일한 경우, CuPredMode[ x ][ y ]는 MODE_INTER와 동일하게 설정된다.
- 그렇지 않은 경우(pred_mode_flag가 1과 동일한 경우), CuPredMode[ x ][ y ]는 MODE_INTRA와 동일하게 설정된다.
pred_mode_ibc_flag가 1과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩된다는 것을 지정한다. pred_mode_ibc_flag가 0과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩되지 않는다는 것을 지정한다.
pred_mode_ibc_flag가 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cu_skip_flag[ x0 ][ y0 ]가 1과 동일하고 cbWidth가 4와 동일하며 cbHeight가 4와 동일한 경우, pred_mode_ibc_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않은 경우, cbWidth와 cbHeight 둘 모두가 128과 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않은 경우, pred_mode_ibc_flag는, 제각기, I 슬라이스를 디코딩할 때는 sps_ibc_enabled_flag의 값과 동일한 것으로 추론되고, P 또는 B 슬라이스를 디코딩할 때는 0과 동일한 것으로 추론된다.
pred_mode_ibc_flag가 1과 동일할 때, 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1에 대해 MODE_IBC와 동일하게 설정된다.
general_merge_flag[ x0 ][ y0 ]은 현재 코딩 유닛에 대한 인터 예측 파라미터들이 이웃하는 인터 예측된 파티션으로부터 추론되는지 여부를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
general_merge_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cu_skip_flag[ x0 ][ y0 ]이 1과 동일한 경우, general_merge_flag[ x0 ][ y0 ]은 1과 동일한 것으로 추론된다.
- 그렇지 않은 경우, general_merge_flag[ x0 ][ y0 ]은 0과 동일한 것으로 추론된다.
mvp_l0_flag[ x0 ][ y0 ]은 리스트 0의 모션 벡터 예측자 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
mvp_l0_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
mvp_l1_flag[ x0 ][ y0 ]은 mvp_l0_flag와 동일한 시맨틱스를 가지며, l0 및 리스트 0은, 제각기, l1 및 리스트 1로 대체된다.
inter_pred_idc[ x0 ][ y0 ]은 표 7-10에 따라 현재 코딩 유닛에 대해 list0, list1 또는 양방향 예측이 사용되는지를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
[표 7-10]
인터 예측 모드에 대한 이름 연관
Figure pct00027
inter_pred_idc[ x0 ][ y0 ]이 존재하지 않을 때, 이는 PRED_L0과 동일한 것으로 추론된다.
7.4.8.7 병합 데이터 시맨틱스
regular_merge_flag[ x0 ][ y0 ]이 1과 동일한 것은 일반 병합 모드가 현재 코딩 유닛의 인터 예측 파라미터들을 생성하는 데 사용된다는 것을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
regular_merge_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 다음과 같이 추론된다:
- 이하의 조건들 모두가 참인 경우, regular_merge_flag[ x0 ][ y0 ]은 1과 동일한 것으로 추론된다:
- sps_mmvd_enabled_flag는 0과 동일하다.
- general_merge_flag[ x0 ][ y0 ]은 1과 동일하다.
- cbWidth*cbHeight는 32와 동일하다.
- 그렇지 않은 경우, regular_merge_flag[ x0 ][ y0 ]은 0과 동일한 것으로 추론된다.
mmvd_merge_flag[ x0 ][ y0 ]이 1과 동일한 것은 모션 벡터 차이를 갖는 병합 모드가 현재 코딩 유닛의 인터 예측 파라미터들을 생성하는 데 사용된다는 것을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
mmvd_merge_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 다음과 같이 추론된다:
- 이하의 조건들 모두가 참인 경우, mmvd_merge_flag[ x0 ][ y0 ]은 1과 동일한 것으로 추론된다:
- sps_mmvd_enabled_flag는 1과 동일하다.
- general_merge_flag[ x0 ][ y0 ]은 1과 동일하다.
- cbWidth*cbHeight는 32와 동일하다.
- regular_merge_flag[ x0 ][ y0 ]은 0과 동일하다.
- 그렇지 않은 경우, mmvd_merge_flag[ x0 ][ y0 ]은 0과 동일한 것으로 추론된다.
mmvd_cand_flag[ x0 ][ y0 ]은 병합 후보 리스트에서의 첫 번째(0) 또는 두 번째(1) 후보가 mmvd_distance_idx[ x0 ][ y0 ] 및 mmvd_direction_idx[ x0 ][ y0 ]으로부터 도출되는 모션 벡터 차이와 함께 사용되는지 여부를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
mmvd_cand_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
mmvd_distance_idx[ x0 ][ y0 ]은 표 7-12에 지정된 바와 같이 MmvdDistance[ x0 ][ y0 ]을 도출하는 데 사용되는 인덱스를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
[표 7-12]
- mmvd_distance_idx[ x0 ][ y0 ]에 기초한 MmvdDistance[ x0 ][ y0 ]의 지정.
Figure pct00028
mmvd_direction_idx[ x0 ][ y0 ]은 표 7-13에 지정된 바와 같이 MmvdSign[ x0 ][ y0 ]을 도출하는 데 사용되는 인덱스를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
[표 7-13]
- mmvd_direction_idx[ x0 ][ y0 ]에 기초한 MmvdSign[ x0 ][ y0 ]의 지정
Figure pct00029
병합의 양쪽 성분들 및 MVD 오프셋 MmvdOffset[ x0 ][ y0 ]은 다음과 같이 도출된다:
Figure pct00030
merge_subblock_flag[ x0 ][ y0 ]은 현재 코딩 유닛에 대한 서브블록 기반 인터 예측 파라미터들이 이웃 블록들로부터 추론되는지 여부를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다. merge_subblock_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_subblock_idx[ x0 ][ y0 ]은 서브블록 기반 병합 후보 리스트의 병합 후보 인덱스를 지정하고, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_subblock_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
ciip_flag[ x0 ][ y0 ]은 현재 코딩 유닛에 대해 결합된 인터 픽처 병합 및 인트라 픽처 예측(combined inter-picture merge and intra-picture prediction)이 적용되는지 여부를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
ciip_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
ciip_flag[ x0 ][ y0 ]이 1과 동일할 때, 변수 IntraPredModeY[ x ][ y ](단, x = xCb..xCb + cbWidth - 1이고 y = yCb..yCb + cbHeight - 1임)는 INTRA_PLANAR와 동일하게 설정된다.
B 슬라이스를 디코딩할 때 현재 코딩 유닛의 예측 샘플들을 생성하기 위해 삼각형 형상 기반 모션 보상이 사용되는지 여부를 지정하는 변수 MergeTriangleFlag[ x0 ][ y0 ]은 다음과 같이 도출된다:
- 이하의 조건들 모두가 참인 경우, MergeTriangleFlag[ x0 ][ y0 ]은 1과 동일하게 설정된다:
- sps_triangle_enabled_flag는 1과 동일하다.
- slice_type은 B와 동일하다.
- general_merge_flag[ x0 ][ y0 ]은 1과 동일하다.
- MaxNumTriangleMergeCand는 2보다 크거나 같다.
- cbWidth * cbHeight는 64보다 크거나 같다.
- regular_merge_flag[ x0 ][ y0 ]은 0과 동일하다.
- mmvd_merge_flag[ x0 ][ y0 ]은 0과 동일하다.
- merge_subblock_flag[ x0 ][ y0 ]은 0과 동일하다.
- ciip_flag[ x0 ][ y0 ]은 0과 동일하다.
- 그렇지 않은 경우, MergeTriangleFlag[ x0 ][ y0 ]은 0과 동일하게 설정된다.
merge_triangle_split_dir[ x0 ][ y0 ]은 병합 삼각형 모드의 분할 방향을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_triangle_split_dir[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_triangle_idx0[ x0 ][ y0 ]은 삼각형 형상 기반 모션 보상 후보 리스트의 첫 번째 병합 후보 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_triangle_idx0[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_triangle_idx1[ x0 ][ y0 ]은 삼각형 형상 기반 모션 보상 후보 리스트의 두 번째 병합 후보 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_triangle_idx1[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_idx[ x0 ][ y0 ]은 병합 후보 리스트의 병합 후보 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 다음과 같이 추론된다:
- mmvd_merge_flag[ x0 ][ y0 ]이 1과 동일한 경우, merge_idx[ x0 ][ y0 ]은 mmvd_cand_flag[ x0 ][ y0 ]과 동일한 것으로 추론된다.
- 그렇지 않은 경우(mmvd_merge_flag[ x0 ][ y0 ]이 0과 동일한 경우), merge_idx[ x0 ][ y0 ]은 0과 동일한 것으로 추론된다.
2.2.4.4.1 디코딩 프로세스
JVET-N0340에서 제공하는 바와 같은 디코딩 프로세스는 다음과 같이 정의된다:
8.5.2.2 병합 모드에 대한 루마 모션 벡터들의 도출 프로세스
이 프로세스는 general_merge_flag[ xCb ][ yCb ]가 1과 동일할 때에만 호출되며, 여기서 ( xCb, yCb )는 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플을 지정한다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같다.
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],
- 참조 인덱스들 refIdxL0 및 refIdxL1,
- 예측 리스트 활용 플래그들 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 bcwIdx.
- 병합 후보 리스트 mergeCandList.
양방향 예측 가중치 인덱스 bcwIdx는 0과 동일하게 설정된다.
모션 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], 참조 인덱스들 refIdxL0 및 refIdxL1, 및 예측 활용 플래그들 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]은 이하의 순서화된 단계들에 의해 도출된다:
1. 8.5.2.3 절에 명시된 바와 같은 이웃 코딩 유닛들로부터의 공간 병합 후보들의 도출 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 및 루마 코딩 블록 높이 cbHeight를 입력들로 하여 호출되고, 출력은 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2, 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2, 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2, 및 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2(단, X는 0 또는 1임), 및 양방향 예측 가중치 인덱스들 bcwIdxA0, bcwIdxA1, bcwIdxB0, bcwIdxB1, bcwIdxB2이다.
2. 시간 병합 후보 Col에 대한 참조 인덱스들 refIdxLXCol(단, X는 0 또는 1임) 및 양방향 예측 가중치 인덱스 bcwIdxCol은 0과 동일하게 설정된다.
3. 8.5.2.11 절에 명시된 바와 같은 시간 루마 모션 벡터 예측을 위한 도출 프로세스는 루마 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 및 변수 refIdxL0Col을 입력들로 하여 호출되고, 출력은 이용 가능성 플래그 availableFlagL0Col 및 시간 모션 벡터 mvL0Col이다. 변수들 availableFlagCol, predFlagL0Col 및 predFlagL1Col은 다음과 같이 도출된다:
Figure pct00031
4. slice_type이 B와 동일할 때, 8.5.2.11 절에 명시된 바와 같은 시간 루마 모션 벡터 예측을 위한 도출 프로세스는 루마 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 및 변수 refIdxL1Col을 입력들로 하여 호출되고, 출력은 이용 가능성 플래그 availableFlagL1Col 및 시간 모션 벡터 mvL1Col이다. 변수들 availableFlagCol 및 predFlagL1Col은 다음과 같이 도출된다:
Figure pct00032
5. 병합 후보 리스트 mergeCandList는 다음과 같이 구성된다:
Figure pct00033
6. 변수 numCurrMergeCand 및 numOrigMergeCand는 mergeCandList에 있는 병합 후보들의 수와 동일하게 설정된다.
7. numCurrMergeCand가 (MaxNumMergeCand - 1)보다 작고 NumHmvpCand가 0보다 클 때, 다음이 적용된다:
- 8.5.2.6에 명시된 바와 같은 히스토리 기반 병합 후보들의 도출 프로세스는 mergeCandList 및 numCurrMergeCand를 입력들로 하고 수정된 mergeCandList 및 numCurrMergeCand를 출력들로 하여 호출된다.
- numOrigMergeCand는 numCurrMergeCand와 동일하게 설정된다.
8. numCurrMergeCand가 MaxNumMergeCand보다 작고 1보다 클 때, 다음이 적용된다:
- 8.5.2.4 절에 명시된 쌍별 평균 병합 후보에 대한 도출 프로세스는 mergeCandList, 참조 인덱스들 refIdxL0N 및 refIdxL1N, 예측 리스트 활용 플래그들 predFlagL0N 및 predFlagL1N, mergeCandList에 있는 모든 후보 N의 모션 벡터들 mvL0N 및 mvL1N, 및 numCurrMergeCand를 입력들로 하여 호출되고, 출력은 mergeCandList, numCurrMergeCand, 참조 인덱스들 refIdxL0avgCand 및 refIdxL1avgCand, 예측 리스트 활용 플래그들 predFlagL0avgCand 및 predFlagL1avgCand, 및 mergeCandList에 추가되는 후보 avgCand의 모션 벡터들 mvL0avgCand 및 mvL1avgCand에 할당된다. mergeCandList에 추가되는 후보 avgCand의 양방향 예측 가중치 인덱스 bcwIdx는 0과 동일하게 설정된다.
- numOrigMergeCand는 numCurrMergeCand와 동일하게 설정된다.
9. 8.5.2.5 절에 명시된 제로 모션 벡터 병합 후보들에 대한 도출 프로세스는 mergeCandList, 참조 인덱스들 refIdxL0N 및 refIdxL1N, 예측 리스트 활용 플래그들 predFlagL0N 및 predFlagL1N, mergeCandList에 있는 모든 후보 N의 모션 벡터들 mvL0N 및 mvL1N, 및 numCurrMergeCand를 입력들로 하여 호출되고, 출력은 mergeCandList, numCurrMergeCand, 참조 인덱스들 refIdxL0zeroCandm 및 refIdxL1zeroCandm, 예측 리스트 활용 플래그들 predFlagL0zeroCandm 및 predFlagL1zeroCandm, 및 mergeCandList에 추가되는 모든 새로운 후보 zeroCandm의 모션 벡터들 mvL0zeroCandm 및 mvL1zeroCandm에 할당된다. mergeCandList에 추가되는 모든 새로운 후보 zeroCandm의 양방향 예측 가중치 인덱스 bcwIdx는 0과 동일하게 설정된다. 추가되는 후보들의 수 numZeroMergeCand는 ( numCurrMergeCand - numOrigMergeCand )와 동일하게 설정된다. numZeroMergeCand가 0보다 클 때, m은 0 내지 numZeroMergeCand - 1(경계 포함)의 범위에 있다.
10. 이하의 할당들이 행해지고, N은 병합 후보 리스트 mergeCandList에서 위치 merge_idx[ xCb ][ yCb ]에 있는 후보이고( N = mergeCandList[ merge_idx[ xCb ][ yCb ] ], X는 0 또는 1로 대체된다:
Figure pct00034
11. mmvd_merge_flag[ xCb ][ yCb ]가 1과 동일한 경우, 다음이 적용된다:
- 8.5.2.7에 명시된 바와 같은 병합 모션 벡터 차이에 대한 도출 프로세스는 루마 위치( xCb, yCb ), 참조 인덱스들 refIdxL0, refIdxL1 및 예측 리스트 활용 플래그들 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]을 입력들로 하고 모션 벡터 차이들 mMvdL0 및 mMvdL1을 출력들로 하여 호출된다.
- 모션 벡터 차이 mMvdLX는 다음과 같이 병합 모션 벡터 mvLX(단, X가 0과 1임)에 추가된다:
Figure pct00035
8.5.2.3 공간 병합 후보들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같으며, X는 0 또는 1이다:
- 이웃 코딩 유닛들의 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2,
- 이웃 코딩 유닛들의 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2,
- 이웃 코딩 유닛들의 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2,
- 이웃 코딩 유닛들의 1/16 분수 샘플 정확도의 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2,
- 양방향 예측 가중치 인덱스들 gbiIdxA0, gbiIdxA1, gbiIdxB0, gbiIdxB1, 및 gbiIdxB2.
availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbA1, yNbA1 )은 ( xCb - 1, yCb + cbHeight - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA1, yNbA1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA1에 할당된다.
- 변수들 availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1은 다음과 같이 도출된다:
- availableA1이 FALSE와 동일한 경우, availableFlagA1은 0과 동일하게 설정되고, mvLXA1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA1은 -1과 동일하게 설정되고, predFlagLXA1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA1은 0과 동일하게 설정된다.
- 그렇지 않은 경우, availableFlagA1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00036
availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB1, yNbB1 )은 ( xCb + cbWidth - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB1, yNbB1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB1에 할당된다.
- 변수들 availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB1은 0과 동일하게 설정되고, mvLXB1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB1은 -1과 동일하게 설정되고, predFlagLXB1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB1은 0과 동일하게 설정된다.
- availableB1은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB1, yNbB1 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- 그렇지 않은 경우, availableFlagB1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00037
availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB0, yNbB0 )은 ( xCb + cbWidth, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB0, yNbB0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB0에 할당된다.
- 변수들 availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB0은 0과 동일하게 설정되고, mvLXB0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB0은 -1과 동일하게 설정되고, predFlagLXB0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB0은 0과 동일하게 설정된다.
- availableB0은 FALSE와 동일하다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB0, yNbB0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB0, yNbB0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagB0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00038
availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치 ( xNbA0, yNbA0 )은 ( xCb - 1,  yCb + cbWidth )와 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA0, yNbA0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA0에 할당된다.
- 변수들 availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagA0은 0과 동일하게 설정되고, mvLXA0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA0은 -1과 동일하게 설정되고, predFlagLXA0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA0은 0과 동일하게 설정된다.
- availableA0은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagA0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00039
availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB2, yNbB2 )는 ( xCb - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB2, yNbB2 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB2에 할당된다.
- 변수들 availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2는 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB2는 0과 동일하게 설정되고, mvLXB2의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB2는 -1과 동일하게 설정되고, predFlagLXB2는 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB2는 0과 동일하게 설정된다.
- availableB2는 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableA0은 TRUE와 동일하고, 루마 위치들 ( xNbA0, yNbA0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableFlagA0 + availableFlagA1 + availableFlagB0 + availableFlagB1은 4와 동일하고 merge_triangle_flag[ xCb ][ yCb ]는 0과 동일하다.
- 그렇지 않은 경우, availableFlagB2는 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00040
2.2.5 MMVD
JVET-L0054에서는 궁극적인 모션 벡터 표현(UMVE, MMVD라고도 함)이 제시된다. UMVE는 제안된 모션 벡터 표현 방법으로 스킵 또는 병합 모드들에 사용된다.
UMVE는 VVC에서 일반 병합 후보 리스트에 포함된 것들과 동일한 병합 후보를 재사용한다. 병합 후보들 중에서, 기본 후보가 선택될 수 있으며, 제안된 모션 벡터 표현 방법에 의해 더 확장된다.
UMVE는 시작 포인트, 모션 크기 및 모션 방향이 MVD를 표현하는 데 사용되는 새로운 MVD(motion vector difference) 표현 방법을 제공한다.
이 제안된 기술은 병합 후보 리스트를 그대로 사용한다. 그러나 UMVE의 확장을 위해 디폴트 병합 유형(MRG_TYPE_DEFAULT_N)인 후보들만이 고려된다.
기본 후보 인덱스는 시작 포인트를 정의한다. 기본 후보 인덱스는 다음과 같이 리스트에 있는 후보들 중 최상의 후보를 나타낸다.
[표 4]
기본 후보 IDX
Figure pct00041
기본 후보의 수가 1인 경우, 기본 후보 IDX는 시그널링되지 않는다.
거리 인덱스는 모션 크기 정보이다. 거리 인덱스는 시작 포인트 정보로부터의 미리 정의된 거리를 나타낸다. 미리 정의된 거리는 다음과 같다.
[표 5]
거리 IDX
Figure pct00042
방향 인덱스는 시작 포인트를 기준으로 MVD의 방향을 나타낸다. 방향 인덱스는 아래에 나타낸 바와 같이 4 가지 방향을 나타낼 수 있다.
[표 6]
방향 IDX
Figure pct00043
UMVE 플래그는 스킵 플래그 또는 병합 플래그를 송신한 직후에 시그널링된다. 스킵 또는 병합 플래그가 참인 경우, UMVE 플래그가 파싱된다. UMVE 플래그가 1과 동일한 경우, UMVE 신택스가 파싱된다. 그러나, 1이 아닌 경우, AFFINE 플래그가 파싱된다. AFFINE 플래그가 1인 경우, 이는 AFFINE 모드이다. 그러나 1이 아닌 경우, VTM의 스킵/병합 모드에 대해 스킵/병합 인덱스가 파싱된다.
UMVE 후보들로 인한 추가적인 라인 버퍼는 필요하지 않다. 소프트웨어의 스킵/병합 후보가 기본 후보로서 직접 사용되기 때문이다. 입력 UMVE 인덱스를 사용하여, 모션 보상 직전에 MV의 보완이 결정된다. 이를 위해 긴 라인 버퍼를 보유할 필요가 없다.
현재 공통 테스트 조건에서, 병합 후보 리스트에서의 첫 번째 또는 두 번째 병합 후보가 기본 후보로서 선택될 수 있다.
UMVE는 MMVD(Merge with MV Differences)라고도 한다.
2.2.6 결합된 인트라 인터 예측(CIIP)
JVET-L0100에서는, 다중 가설 예측이 제안되며, 여기서 결합된 인트라 및 인터 예측은 다수의 가설들을 생성하는 한 가지 방법이다.
다중 가설 예측이 인트라 모드를 개선시키기 위해 적용될 때, 다중 가설 예측은 하나의 인트라 예측과 하나의 병합 인덱싱된 예측을 결합시킨다. 병합 CU에서, 플래그가 참일 때 인트라 후보 리스트로부터 인트라 모드를 선택하기 위해 병합 모드에 대해 하나의 플래그가 시그널링된다. 루마 성분의 경우, 인트라 후보 리스트는 단지 하나의 인트라 예측 모드, 즉 플래너 모드(planar mode)로부터 도출된다. 인트라 및 인터 예측으로부터의 예측 블록에 적용되는 가중치들은 2 개의 이웃 블록(A1 및 B1)의 코딩된 모드(인트라 또는 비인트라)에 의해 결정된다.
2.2.7 서브블록 기반 기술들에 대한 병합
모든 서브블록 관련 모션 후보들이 비-서브블록 병합 후보들에 대한 일반 병합 리스트 이외의 별도의 병합 리스트에 넣어지는 것이 제안된다.
서브블록 관련 모션 후보들은 '서브블록 병합 후보 리스트'라고 하는 별도의 병합 리스트에 넣어진다.
일 예에서, 서브블록 병합 후보 리스트는 ATMVP 후보 및 아핀 병합 후보들을 포함한다.
서브블록 병합 후보 리스트는 이하의 순서로 후보들로 채워진다:
a. ATMVP 후보(이용 가능하거나 이용 불가능할 수 있음)
b. 아핀 병합 리스트들(상속된 아핀 후보들; 및 구성된 아핀 후보들을 포함함)
c. 제로 MV 4-파라미터 아핀 모델로서 패딩
2.2.7.1.1 ATMVP(서브블록 시간 모션 벡터 예측자, SbTMVP라고도 함)
ATMVP의 기본 아이디어는 하나의 블록에 대해 다수의 시간 모션 벡터 예측자 세트들을 도출하는 것이다. 각각의 서브블록에 하나의 모션 정보 세트가 할당된다. ATMVP 병합 후보가 생성될 때, 전체 블록 레벨이 아닌 8x8 레벨에서 모션 보상이 행해진다.
현재 설계에서, ATMVP는 이하의 2 개의 하위 섹션 2.2.7.1.1.1 및 2.2.7.1.1.2에, 제각기, 설명된 2 개의 단계에서 CU 내의 서브 CU의 모션 벡터들을 예측한다.
2.2.7.1.1.1 초기화된 모션 벡터의 도출
초기화된 모션 벡터를 tempMv로 표시한다. 블록 A1이 이용 가능하고 인트라 코딩되지 않을 때(즉, 인터 또는 IBC 모드로 코딩될 때), 초기화된 모션 벡터를 도출하기 위해 다음이 적용된다.
- 이하의 조건들 모두가 참인 경우, tempMv는, mvL1A1로 표시된, 리스트 1로부터의 블록 A1의 모션 벡터와 동일하게 설정된다:
- 리스트 1의 참조 픽처 인덱스가 이용 가능하며(-1과 동일하지 않음), 이는 동일 위치 픽처와 동일한 POC 값을 갖는다(즉, DiffPicOrderCnt(ColPic, RefPicList[ 1 ][refIdxL1A1])이 0과 동일하다).
- 모든 참조 픽처들은 현재 픽처와 비교하여 더 큰 POC를 갖지 않는다(즉, DiffPicOrderCnt(aPic, currPic)가 현재 슬라이스의 모든 참조 픽처 리스트에서의 모든 픽처 aPic에 대해 0보다 작거나 같다).
- 현재 슬라이스는 B 슬라이스와 동일하다.
- collocated_from_l0_flag는 0과 동일하다.
- 그렇지 않고, 이하의 조건들 모두가 참인 경우, tempMv는, mvL0A1로 표시된, 리스트 0으로부터의 블록 A1의 모션 벡터와 동일하게 설정된다:
- 리스트 0의 참조 픽처 인덱스가 이용 가능하다(-1과 동일하지 않음).
- 이는 동일 위치 픽처와 동일한 POC 값을 갖는다(즉, DiffPicOrderCnt(ColPic, RefPicList[ 0 ][refIdxL0A1]이 0과 동일하다).
- 그렇지 않은 경우, 제로 모션 벡터가 초기화된 MV로서 사용된다.
대응하는 블록(현재 블록의 중심 위치에 반올림된 MV를 더한 것을 가짐, 필요에 따라 특정 범위들로 클리핑됨)은 초기화된 모션 벡터와 함께 슬라이스 헤더에서 시그널링되는 동일 위치 픽처에서 식별된다.
블록이 인터 코딩된 경우, 제2 단계로 간다. 그렇지 않은 경우, ATMVP 후보는 이용 불가능으로 설정된다.
2.2.7.1.1.2 서브 CU 모션 도출
제2 단계는 현재 CU를 서브 CU들로 분할하고 동일 위치 픽처에서의 각각의 서브 CU에 대응하는 블록으로부터 각각의 서브 CU의 모션 정보를 획득하는 것이다.
서브 CU에 대한 대응하는 블록이 인터 모드로 코딩된 경우, 모션 정보는 종래의 TMVP 프로세스에 대한 프로세스와 상이하지 않은 동일 위치 MV들에 대한 도출 프로세스를 호출하는 것에 의해 현재 서브 CU의 최종 모션 정보를 도출하는 데 활용된다. 기본적으로, 대응하는 블록이 단방향 예측 또는 양방향 예측을 위해 타깃 리스트 X로부터 예측되는 경우, 모션 벡터가 활용되고; 그렇지 않고, 그것이 단방향 예측 또는 양방향 예측을 위해 리스트 Y(Y=1-X)로부터 예측되고 NoBackwardPredFlag가 1과 동일한 경우, 리스트 Y에 대한 MV가 활용된다. 그렇지 않은 경우, 모션 후보가 발견되지 않을 수 있다.
초기화된 MV 및 현재 서브 CU의 위치에 의해 식별되는 동일 위치 픽처에서의 블록이 인트라 또는 IBC 코딩된 경우, 또는 전술한 바와 같이 모션 후보가 발견될 수 없는 경우, 이하가 추가로 적용된다:
동일 위치 픽처 Rcol에서의 모션 필드를 페치하는 데 사용되는 모션 벡터를 MVcol로서 표시한다. MV 스케일링으로 인한 영향을 최소화하기 위해, MVcol을 도출하는 데 사용되는 공간 후보 리스트에서의 MV는 다음과 같은 방법으로 선택된다: 후보 MV의 참조 픽처가 동일 위치 픽처인 경우, 이 MV가 선택되고 어떠한 스케일링도 없이 MVcol로서 사용된다. 그렇지 않은 경우, 동일 위치 픽처에 가장 가까운 참조 픽처를 갖는 MV가 스케일링을 사용하여 MVcol을 도출하는 데 선택된다.
JVET-N1001에서의 동일 위치 모션 벡터 도출 프로세스에 대한 관련된 디코딩 프로세스는 다음과 같이 설명되며, ATMVP에 관련된 부분들은 굵은 대문자 글꼴로 강조 표시된다.
8.5.2.12 동일 위치 모션 벡터들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록을 지정하는 변수 currCb,
- ColPic에 의해 지정되는 동일 위치 픽처 내부의 동일 위치 코딩 블록을 지정하는 변수 colCb,
- ColPic에 의해 지정되는 동일 위치 픽처의 좌측 상단 루마 샘플을 기준으로 colCb에 의해 지정되는 동일 위치 루마 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치 ( xColCb, yColCb ),
- 참조 인덱스 refIdxLX, 단, X는 0 또는 1임,
- 서브블록 시간 병합 후보를 나타내는 플래그 sbFlag.
이 프로세스의 출력들은 다음과 같다.
- 1/16 분수 샘플 정확도의 모션 벡터 예측 mvLXCol,
- 이용 가능성 플래그 availableFlagLXCol.
변수 currPic은 현재 픽처를 지정한다.
어레이들 predFlagL0Col[ x ][ y ], mvL0Col[ x ][ y ], 및 refIdxL0Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL0[ x ][ y ], MvDmvrL0[ x ][ y ], 및 RefIdxL0[ x ][ y ]와 동일하게 설정되고, 어레이들 predFlagL1Col[ x ][ y ], mvL1Col[ x ][ y ], 및 refIdxL1Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL1[ x ][ y ], MvDmvrL1[ x ][ y ], 및 RefIdxL1[ x ][ y ]와 동일하게 설정된다.
변수들 mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- colCb가 인트라 또는 IBC 예측 모드로 코딩된 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고, availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 모션 벡터 mvCol, 참조 인덱스 refIdxCol 및 참조 리스트 식별자 listCol은 다음과 같이 도출된다:
- sbFlag가 0과 동일한 경우, availableFlagLXCol은 1로 설정되고 다음이 적용된다:
- predFlagL0Col[ xColCb ][ yColCb ]가 0과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvL1Col[ xColCb ][ yColCb ], refIdxL1Col[ xColCb ][ yColCb ] 및 L1과 동일하게 설정된다.
- 그렇지 않고, predFlagL0Col[ xColCb ][ yColCb ]가 1과 동일하고 predFlagL1Col[ xColCb ][ yColCb ]가 0과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvL0Col[ xColCb ][ yColCb ], refIdxL0Col[ xColCb ][ yColCb ] 및 L0과 동일하게 설정된다.
- 그렇지 않은 경우(predFlagL0Col[ xColCb ][ yColCb ]가 1과 동일하고 predFlagL1Col[ xColCb ][ yColCb ]가 1과 동일한 경우), 이하의 할당들이 이루어진다:
- NoBackwardPredFlag가 1과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvLXCol[ xColCb ][ yColCb ], refIdxLXCol[ xColCb ][ yColCb ] 및 LX와 동일하게 설정된다.
- 그렇지 않은 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvLNCol[ xColCb ][ yColCb ], refIdxLNCol[ xColCb ][ yColCb ] 및 LN과 동일하게 설정되고, N은 collocated_from_l0_flag의 값이다.
- 그렇지 않은 경우(sbFlag가 1인 경우), 다음이 적용된다:
- PredFlagLXCol[ xColCb ][ yColCb ]가 1과 동일한 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvLXCol[ xColCb ][ yColCb ], refIdxLXCol[ xColCb ][ yColCb ], 및 LX와 동일하게 설정되고, availableFlagLXCol은 1로 설정된다.
- 그렇지 않은 경우(PredFlagLXCol[ xColCb ][ yColCb ]가 0인 경우), 다음이 적용된다:
- DiffPicOrderCnt( aPic, currPic )가 현재 슬라이스의 모든 참조 픽처 리스트에 있는 모든 픽처 aPic에 대해 0보다 작거나 같고 PredFlagLYCol[ xColCb ][ yColCb ]가 1과 동일한 경우, mvCol, refIdxCol, listCol은, 제각기, mvLYCol[ xColCb ][ yColCb ], refIdxLYCol[ xColCb ][ yColCb ] 및 LY로 설정되며, Y는 !X와 동일하고 여기서 X는 이 프로세스가 호출되는 X의 값이며, availableFlagLXCol은 1로 설정된다.
- mvLXCol의 양쪽 성분들은 0으로 설정되고, availableFlagLXCol은 0과 동일하게 설정된다.
- availableFlagLXCol이 TRUE와 동일할 때, mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- LongTermRefPic( currPic, currCb, refIdxLX, LX )가 LongTermRefPic( ColPic, colCb, refIdxCol, listCol )과 동일하지 않은 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고 availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 변수 availableFlagLXCol은 1과 동일하게 설정되고, refPicList[ listCol ][ refIdxCol ]은 ColPic에 의해 지정되는 동일 위치 픽처에서 코딩 블록 colCb를 포함하는 슬라이스의 참조 픽처 리스트 listCol에서 참조 인덱스 refIdxCol을 갖는 픽처로 설정되며, 다음이 적용된다:
colPocDiff = DiffPicOrderCnt( ColPic, refPicList[ listCol ][ refIdxCol ] ) (8-402)
currPocDiff = DiffPicOrderCnt( currPic, RefPicList[ X ][ refIdxLX ] ) (8-403)
- 8.5.2.15 절에 명시된 바와 같이 동일 위치 모션 벡터들에 대한 시간 모션 버퍼 압축 프로세스는 mvCol을 입력으로 하고 수정된 mvCol을 출력으로 하여 호출된다.
- RefPicList[ X ][ refIdxLX ]가 장기 참조 픽처이거나 colPocDiff가 currPocDiff와 동일한 경우, mvLXCol은 다음과 같이 도출된다:
Figure pct00044
- 그렇지 않은 경우, mvLXCol은 다음과 같이 모션 벡터 mvCol의 스케일링된 버전으로서 도출된다:
Figure pct00045
여기서 td 및 tb는 다음과 같이 도출된다:
Figure pct00046
2.2.8 일반 인터 모드(AMVP)
2.2.8.1 AMVP 모션 후보 리스트
HEVC에서의 AMVP 설계와 유사하게, 최대 2 개의 AMVP 후보가 도출될 수 있다. 그렇지만, HMVP 후보들은 또한 TMVP 후보 이후에 추가될 수 있다. HMVP 테이블에서의 HMVP 후보들은 인덱스의 오름차순으로(즉, 가장 오래된 것인, 0과 동일한 인덱스부터) 순회된다. 그 자신의 참조 픽처가 타깃 참조 픽처와 동일한지(즉, 동일한 POC 값인지) 여부를 알기 위해 최대 4 개의 HMVP 후보가 검사될 수 있다.
2.2.8.2 AMVR
HEVC에서, 슬라이스 헤더에서 use_integer_mv_flag가 0과 동일할 때 (PU의 모션 벡터와 예측된 모션 벡터 사이의) 모션 벡터 차이들(MVD들)은 1/4 루마 샘플 단위로 시그널링된다. VVC에서, 로컬 AMVR(locally adaptive motion vector resolution)이 도입된다. VVC에서, MVD는 1/4 루마 샘플, 정수 루마 샘플 또는 4 개의 루마 샘플(즉, 1/4 펠, 1 펠, 4 펠) 단위로 코딩될 수 있다. MVD 해상도는 코딩 유닛(CU) 레벨에서 제어되고, MVD 해상도 플래그들은 적어도 하나의 0이 아닌 MVD 성분을 갖는 각각의 CU에 대해 조건부로 시그널링된다.
적어도 하나의 영이 아닌 MVD 성분을 갖는 CU의 경우, 1/4 루마 샘플 MV 정밀도가 CU에 사용되는지 여부를 나타내기 위해 제1 플래그가 시그널링된다. 제1 플래그(1과 동일함)가 1/4 루마 샘플 MV 정밀도가 사용되지 않다는 것을 나타낼 때, 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도가 사용되는지를 나타내기 위해 다른 플래그가 시그널링된다.
CU의 제1 MVD 해상도 플래그가 0이거나 CU에 대해 코딩되지 않을 때(CU 내의 모든 MVD들이 0임을 의미함), 1/4 루마 샘플 MV 해상도가 CU에 사용된다. CU가 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도를 사용할 때, CU에 대한 AMVP 후보 리스트에서의 MVP들은 대응하는 정밀도로 반올림된다.
2.2.8.3 JVET-N1001-v2에서의 대칭 모션 벡터 차이
JVET-N1001-v2에서, 양방향 예측에서의 모션 정보 코딩을 위해 SMVD(symmetric motion vector difference)가 적용된다.
먼저, 슬라이스 레벨에서, SMVD 모드에서 사용되는 리스트 0/1의 참조 픽처 인덱스를 나타내는 변수들 RefIdxSymL0 및 RefIdxSymL1은 N1001-v2에 지정된 바와 같이 이하의 단계들로 도출된다. 2 개의 변수 중 적어도 하나가 -1과 동일할 때, SMVD 모드가 디스에이블되어야 한다.
2.2.9 모션 정보의 정제
2.2.9.1 디코더 측 DMVR(Motion Vector Refinement)
양방향 예측 동작에서, 하나의 블록 영역의 예측을 위해, list0의 모션 벡터(MV)와 list1의 모션 벡터(MV)를 사용하여 제각기 형성되는, 2 개의 예측 블록이 결합되어 단일의 예측 신호를 형성한다. DMVR(decoder-side motion vector refinement) 방법에서, 양방향 예측의 2 개의 모션 벡터가 더 정제된다.
VVC에서의 DMVR의 경우, 리스트 0과 리스트 1 간의 MVD 미러링이 도 19에 도시된 바와 같이 가정되고, MV들을 정제하기 위해, 즉 여러 MVD 후보들 중에서 최상의 MVD를 찾기 위해 양방향 매칭(bilateral matching)이 수행된다. 2 개의 참조 픽처 리스트에 대한 MV들을 MVL0(L0X, L0Y) 및 MVL1(L1X, L1Y)로 표시한다. 비용 함수(예를 들면, SAD)를 최소화할 수 있는 리스트 0에 대한 (MvdX, MvdY)로 표시된 MVD는 최상의 MVD라고 정의한다. SAD 함수의 경우, 이는 리스트 0 참조 픽처에서 모션 벡터 (L0X+MvdX, L0Y+MvdY)로 도출되는 리스트 0의 참조 블록과 리스트 1 참조 픽처에서의 모션 벡터 (L1X-MvdX, L1Y-MvdY)로 도출되는 리스트 1의 참조 블록 사이의 SAD로서 정의된다.
모션 벡터 정제 프로세스는 두 번 반복될 수 있다. 각각의 반복에서, 최대 6 개의 MVD(정수 펠 정밀도를 가짐)가, 도 20에 도시된 바와 같이, 2 개의 단계에서 검사될 수 있다. 제1 단계에서, MVD (0, 0), (-1, 0), (1, 0), (0, -1), (0, 1)이 검사된다. 제2 단계에서, MVD (-1, -1), (-1, 1), (1, -1) 또는 (1, 1) 중 하나가 선택되고 더 검사될 수 있다. 함수 Sad(x, y)가 MVD (x, y)의 SAD 값을 반환한다고 가정한다. 제2 단계에서 검사되는 (MvdX, MvdY)로 표시되는 MVD는 다음과 같이 결정된다:
Figure pct00047
첫 번째 반복에서, 시작 포인트는 시그널링된 MV이고, 두 번째 반복에서, 시작 포인트는 시그널링된 MV에 첫 번째 반복에서 선택된 최상의 MVD를 더한 것이다. DMVR은 하나의 참조 픽처가 선행 픽처이고 다른 참조 픽처가 후속 픽처이며, 2 개의 참조 픽처가 현재 픽처로부터 동일한 픽처 순서 카운트 거리에 있을 때에만 적용된다.
DMVR의 프로세스를 더욱 단순화시키기 위해, JVET-M0147은 JEM에서의 설계에 대한 여러 변경 사항들을 제안하였다. 보다 구체적으로, VTM-4.0(곧 발표될 예정임)에 채택된 DMVR 설계는 다음과 같은 주요 특징들을 갖는다:
Figure pct00048
list0과 list1 사이의 (0,0) 위치 SAD가 임계치보다 작을 때 조기 종료.
Figure pct00049
어떤 위치에 대해 list0과 list1 사이의 SAD가 0일 때 조기 종료.
Figure pct00050
DMVR에 대한 블록 크기들: W*H>=64 && H>=8, 여기서 W 및 H는 블록의 폭과 높이이다.
Figure pct00051
16*16 초과의 CU 크기의 DMVR에 대해 CU를 다수의 16x16 서브블록들로 분할한다. CU의 폭 또는 높이만이 16 초과인 경우, 이는 수직 또는 수평 방향으로만 분할된다.
Figure pct00052
참조 블록 크기 (W+7)*(H+7)(루마의 경우).
Figure pct00053
25 포인트 SAD 기반 정수 펠 탐색(즉, (+-) 2 정제 탐색 범위, 단일 스테이지)
Figure pct00054
이중선형 보간 기반 DMVR.
Figure pct00055
"파라미터 오차 표면 방정식" 기반 서브펠 정제. 이 절차는 마지막 MV 정제 반복에서 최소 SAD 비용이 0과 동일하지 않고 최상의 MVD가 (0, 0)일 때에만 수행된다.
Figure pct00056
(필요한 경우) 참조 블록 패딩을 갖는 루마/크로마 MC.
Figure pct00057
MC 및 TMVP들에만 사용되는 정제된 MV들.
2.2.9.1.1 DMVR의 사용
이하의 조건들이 모두 참일 때, DMVR이 인에이블될 수 있다:
- SPS에서의 DMVR 인에이블 플래그(즉, sps_dmvr_enabled_flag)는 1과 동일하다.
- TPM 플래그, 인터-아핀 플래그 및 서브블록 병합 플래그(ATMVP 또는 아핀 병합), MMVD 플래그는 모두 0과 동일하다.
- 병합 플래그는 1과 동일하다.
- 현재 블록은 양방향 예측되며, 현재 픽처와 리스트 1에서의 참조 픽처 사이의 POC 거리는 리스트 0에서의 참조 픽처와 현재 픽처 사이의 POC 거리와 동일하다.
- 현재 CU 높이가 8 이상이다.
- 루마 샘플 샘플들의 수(CU 폭*높이)는 64 이상이다
2.2.9.1.2 "파라미터 오차 표면 방정식" 기반 서브펠 정제
이 방법은 아래에 요약되어 있다:
1. 중심 위치가 주어진 반복에서 최상의 비용 위치인 경우에만 파라미터 오차 표면 피팅(parametric error surface fit)이 계산된다.
2. 중심 위치 비용 및 중심으로부터 (-1,0), (0,-1), (1,0) 및 (0,1) 위치들에서의 비용들은 다음 형태의 2-D 포물선 오차 표면 방정식을 피팅하는 데 사용되고
Figure pct00058
여기서
Figure pct00059
은 가장 적은 비용을 갖는 위치에 대응하고 C는 최소 비용 값에 대응한다. 5 개의 미지수로 된 5 개의 방정식을 푸는 것에 의해,
Figure pct00060
은 다음과 같이 계산된다:
Figure pct00061
Figure pct00062
은 나눗셈이 수행되는 정밀도(즉, 몇 비트의 몫이 계산되는지)를 조정하는 것에 의해 임의의 요구된 서브픽셀 정밀도로 계산될 수 있다. 1/16 펠 정확도의 경우, 몫의 절댓값에서의 4 비트만이 계산되면 되며, 이는 CU당 필요한 2 번의 나눗셈의 고속 시프트 감산(fast-shifted subtraction) 기반 구현에 적합하다.
3. 계산된
Figure pct00063
은 서브픽셀 정밀 정제 델타 MV를 얻기 위해 정수 거리 정제 MV에 가산된다.
2.3 인트라 블록 복사
현재 픽처 참조라고도 하는 인트라 블록 복사(IBC)는 HEVC 화면 콘텐츠 코딩 확장(HEVC-SCC) 및 현재 VVC 테스트 모델(VTM-4.0)에 채택되었다. IBC는 모션 보상의 개념을 프레임 간(inter-frame) 코딩으로부터 프레임 내(intra-frame) 코딩으로 확장한다. 도 21에 나타낸 바와 같이, IBC가 적용될 때 현재 블록이 동일한 픽처 내의 참조 블록에 의해 예측된다. 참조 블록 내의 샘플들은 현재 블록이 코딩되거나 디코딩되기 전에 이미 재구성되어 있어야 한다. IBC는, 대부분의 카메라로 캡처된 시퀀스들에 대해서는 그다지 효율적이지 않지만, 화면 콘텐츠에 대해서는 상당한 코딩 이득을 보여준다. 그 이유는, 화면 콘텐츠 픽처에서의 아이콘들 및 텍스트 문자들과 같은, 많은 반복 패턴들이 있기 때문이다. IBC는 이러한 반복 패턴들 사이의 중복성을 효과적으로 제거할 수 있다. HEVC-SCC에서, 인터 코딩된 코딩 유닛(CU)은 현재 픽처를 그의 참조 픽처로서 선택하는 경우 IBC를 적용할 수 있다. 이 경우 MV는 블록 벡터(BV)라고 재명명되고, BV는 항상 정수 픽셀 정밀도를 갖는다. 메인 프로필 HEVC와 호환되도록, 현재 픽처는 DPB(Decoded Picture Buffer)에서 "장기" 참조 픽처로서 마킹된다. 유사하게, 다수의 뷰/3D 비디오 코딩 표준들에서, 뷰 간(inter-view) 참조 픽처가 또한 "장기" 참조 픽처로서 마킹된다는 점에 유의해야 한다.
BV를 따라가서 그의 참조 블록을 찾은 후에, 참조 블록을 복사하는 것에 의해 예측이 생성될 수 있다. 잔차는 원래 신호들로부터 참조 픽셀들을 감산하는 것에 의해 얻어질 수 있다. 이어서 다른 코딩 모드들에서와 같이 변환 및 양자화가 적용될 수 있다.
그렇지만, 참조 블록이 픽처 외부에 있거나, 현재 블록과 중첩되거나, 재구성된 영역 외부에 있거나, 또는 일부 제약조건들에 의해 제한된 유효 영역 외부에 있을 때, 일부 또는 모든 픽셀 값들이 정의되지 않는다. 기본적으로, 그러한 문제를 처리하는 두 가지 해결책이 있다. 하나는, 예를 들면, 비트스트림 적합성에서, 그러한 상황을 허용하지 않는 것이다. 다른 하나는 그 정의되지 않은 픽셀 값들에 대해 패딩을 적용하는 것이다. 이하의 하위 섹션들은 해결책들에 대해 대해 상세히 설명한다.
2.3.1 VVC 테스트 모델(VTM4.0)에서의 IBC
현재 VVC 테스트 모델, 즉 VTM-4.0 설계에서, 전체 참조 블록은 현재 CTU(coding tree unit)와 함께 있어야 하며, 현재 블록과 중첩하지 않는다. 따라서, 참조 또는 예측 블록을 패딩할 필요가 없다. IBC 플래그는 현재 CU의 예측 모드로서 코딩된다. 따라서, 각각의 CU에 대해 총 세 가지 예측 모드, 즉 MODE_INTRA, MODE_INTER 및 MODE_IBC가 있다.
2.3.1.1 IBC 병합 모드
IBC 병합 모드에서, IBC 병합 후보 리스트에서의 엔트리를 가리키는 인덱스가 비트스트림으로부터 파싱된다. IBC 병합 리스트의 구성은 이하의 단계들의 시퀀스에 따라 요약될 수 있다:
Figure pct00064
단계 1: 공간 후보들의 도출
Figure pct00065
단계 2: HMVP 후보들의 삽입
Figure pct00066
단계 3: 쌍별 평균 후보들의 삽입
공간 병합 후보들의 도출에서, 도 2에 묘사된 바와 같이 A1, B1, B0, A0 및 B2에 묘사된 위치들에 위치하는 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 도출 순서는 A1, B1, B0, A0 및 B2이다. 위치 A1, B1, B0, A0의 임의의 PU가 (예를 들면, 다른 슬라이스 또는 타일에 속하기 때문에) 이용 가능하지 않거나 또는 IBC 모드로 코딩되지 않을 때에만 위치 B2가 고려된다. 위치 A1에 있는 후보가 추가된 후에, 나머지 후보들의 삽입은 중복성 검사를 거치며, 이는 동일한 모션 정보를 가진 후보들이 리스트로부터 제외됨으로써 코딩 효율성이 개선되도록 보장한다.
공간 후보들의 삽입 이후에, IBC 병합 리스트 크기가 최대 IBC 병합 리스트 크기보다 여전히 더 작은 경우, HMVP 테이블로부터의 IBC 후보들이 삽입될 수 있다. HMVP 후보들을 삽입할 때 중복성 검사가 수행된다.
마지막으로, 쌍별 평균 후보들이 IBC 병합 리스트에 삽입된다.
병합 후보에 의해 식별되는 참조 블록이 픽처 외부에 있거나, 현재 블록과 중첩되거나, 재구성된 영역 외부에 있거나 또는 일부 제약조건들에 의해 제한된 유효 영역 외부에 있을 때, 병합 후보는 유효하지 않은 병합 후보라고 한다.
유효하지 않은 병합 후보들이 IBC 병합 리스트에 삽입될 수 있다는 점에 유의한다.
2.3.1.2 IBC AMVP 모드
IBC AMVP 모드에서, IBC AMVP 리스트에서의 엔트리를 가리키는 AMVP 인덱스가 비트스트림으로부터 파싱된다. IBC AMVP 리스트의 구성은 이하의 단계들의 시퀀스에 따라 요약될 수 있다:
Figure pct00067
단계 1: 공간 후보들의 도출
o 이용 가능한 후보가 발견될 때까지 A0, A1을 검사한다.
o 이용 가능한 후보가 발견될 때까지 B0, B1, B2를 검사한다.
Figure pct00068
단계 2: HMVP 후보들의 삽입
Figure pct00069
단계 3: 제로 후보들의 삽입
공간 후보들의 삽입 이후에, IBC AMVP 리스트 크기가 최대 IBC AMVP 리스트 크기보다 여전히 더 작은 경우, HMVP 테이블로부터의 IBC 후보들이 삽입될 수 있다.
마지막으로, 제로 후보들이 IBC AMVP 리스트에 삽입된다.
2.3.1.3 크로마 IBC 모드
현재 VVC에서, 크로마 IBC 모드에서의 모션 보상은 서브블록 레벨에서 수행된다. 크로마 블록은 여러 서브블록들로 파티셔닝될 것이다. 각각의 서브블록은 대응하는 루마 블록이 블록 벡터를 갖는지 여부 및 존재하는 경우 유효성을 결정한다. 현재 VTM에는 인코더 제약조건이 있으며, 여기서 현재 크로마 CU에서의 모든 서브블록들이 유효한 루마 블록 벡터들을 갖는 경우 크로마 IBC 모드가 테스트될 것이다. 예를 들어, YUV 420 비디오에서, 크로마 블록은 NxM이고 그러면 동일 위치 루마 영역은 2Nx2M이다. 크로마 블록의 서브블록 크기는 2x2이다. 크로마 mv 도출을 수행한 다음 블록 복사 프로세스를 수행하기 위해 여러 단계들이 있다.
1) 크로마 블록이 먼저 (N >> 1)*(M >> 1) 개의 서브블록으로 파티셔닝될 것이다.
2) (x, y) 좌표에 있는 좌측 상단 샘플을 갖는 각각의 서브블록은 (2x, 2y) 좌표에 있는 동일한 좌측 상단 샘플을 커버하는 대응하는 루마 블록을 페치한다.
3) 인코더는 페치된 루마 블록의 블록 벡터(bv)를 검사한다. 이하의 조건들 중 하나가 충족되는 경우, bv는 유효하지 않은 것으로 간주된다.
a. 대응하는 루마 블록의 bv가 존재하지 않는다.
b. bv에 의해 식별되는 예측 블록이 아직 재구성되어 있지 않다.
c. bv에 의해 식별되는 예측 블록이 현재 블록과 부분적으로 또는 완전히 중첩된다.
4) 서브블록의 크로마 모션 벡터가 대응하는 루마 서브블록의 모션 벡터로 설정된다.
모든 서브블록들이 유효한 bv를 발견할 때 인코더에서 IBC 모드가 허용된다.
2.3.2 (VTM5.0에서의) IBC에 대한 단일 BV 리스트
JVET-N0843이 VVC에 채택되었다. JVET-N0843에서, IBC에서의 병합 모드 및 AMVP 모드에 대한 BV 예측자들은 이하의 요소들로 구성되는 공통 예측자 리스트를 공유할 것이다:
Figure pct00070
2 개의 공간 이웃 위치(도 2에서와 같이 A1, B1)
Figure pct00071
5 개의 HMVP 엔트리
Figure pct00072
기본적으로 제로 벡터들
리스트 내의 후보들의 수는 슬라이스 헤더로부터 도출되는 변수에 의해 제어된다. 병합 모드의 경우, 이 리스트의 최대 처음 6 개의 엔트리가 사용될 것이고; AMVP 모드의 경우, 이 리스트의 처음 2 개의 엔트리가 사용될 것이다. 그리고 리스트는 공유 병합 리스트 영역 요구사항을 준수한다(SMR 내에서 동일한 리스트를 공유).
위에서 언급된 BV 예측자 후보 리스트 외에도, JVET-N0843은 또한 HMVP 후보들과 기존 병합 후보들(A1, B1) 간의 프루닝 동작들을 단순화할 것을 제안했다. 단순화에서, 첫 번째 HMVP 후보와 공간 병합 후보(들)만을 비교하기 때문에 최대 2 개의 프루닝 동작이 있을 것이다.
3. 문제들
병합 모드들의 현재 설계는 다음과 같은 문제들을 가질 수 있다:
1. 일반 병합 리스트 구성 프로세스는 현재 블록에 대한 TPM의 사용에 의존한다.
a. TPM 코딩된 블록들의 경우, 공간 병합 후보들 간에 전체 프루닝이 적용된다.
b. 비-TPM 코딩된 블록들의 경우, 공간 병합 후보들 간에 부분 프루닝이 적용된다.
2. 현재 설계에 따르면, 모든 병합 관련 툴들(IBC 병합, 일반 병합, MMVD, 서브블록 병합, CIIP, TPM을 포함함)은 general_merge_flag라는 하나의 플래그에 의해 시그널링된다. 그에 따라, 이 플래그가 참일 때, 모든 병합 관련 툴들이 시그널링되거나 디스에이블되는 것으로 도출되는 것이 가능하다. 이 경우를 어떻게 처리할지는 알려져 있지 않다. 추가적으로, 병합 모드를 끄는 것이 허용되지 않으며, 즉, 병합 후보의 최대 수가 0과 동일하지 않아야 한다. 그렇지만, 고 처리량 인코더/디코더의 경우, 병합 모드를 강제로 디스에이블하는 것이 필요할 수 있다.
3. ATMVP 프로세스를 위한 초기화된 MV의 결정은 슬라이스 유형, 모든 참조 픽처들의 POC 값들, collocated_from_l0_flag 등에 의존하며, 이는 MV들의 처리량을 지연시킨다.
4. 동일 위치 MV들의 도출 프로세스는, 추가적인 로직을 필요로 하는 종래의 TMVP 프로세스 또는 ATMVP 프로세스와 같은, 서브블록 기술의 사용에 의존한다.
5. ATMVP 코딩된 블록에서의 서브 CU의 경우, 그의 대응하는 동일 위치 블록이 인터 코딩되더라도, 서브 CU의 모션 정보가 대응하는 동일 위치 블록으로부터 도출되지 않고 다른 모션 정보로 채워질 수 있는 것이 가능하다. 그러한 설계는 코딩 효율성 및 처리량 둘 모두에 대해 차선책이다.
6. HEVC 사양은 블록이 구성되는지 또는 상이한 CTU 행/슬라이스 등에 있는지에 기초하여 현재 또는 참조 픽처에서 하나의 이웃 블록의 이용 가능성을 정의한다. 그렇지만, VVC에서, 다수의 코딩 방법들이 도입되었다. 블록의 이용 가능성에 대한 상이한 정의들이 정의될 필요가 있을 수 있다.
7. JVET-O0545는 sps_sbt_max_size_64_flag를 송신하는 것에 의해 최대 변환 블록 크기 표시를 시그널링할 것을 제안한다.
sps_sbt_max_size_64_flag가 0과 동일한 것은 서브블록 변환을 가능하게 하기 위한 최대 CU 폭 및 높이가 32 루마 샘플이라는 것을 지정한다. sps_sbt_max_size_64_flag가 1과 동일한 것은 서브블록 변환을 가능하게 하기 위한 최대 CU 폭 및 높이가 64 루마 샘플이라는 것을 지정한다.
Figure pct00073
64보다 작은 최대 변환 크기(MaxTransformSize로 표시됨)를 지원하기 위해, MaxSbtSize의 도출은 아래와 같이 수정된다,
Figure pct00074
8. 적응적 루프 필터(ALF) 계수들은 고정된 범위 내로 제한된다. 예를 들어: AlfCoeffC로 표시되는 크로마 ALF 필터 계수 및 AlfCoeffL로 표시되는 루마 ALF 필터 계수는 -27 내지 27 - 1(경계 포함)의 범위에 있어야 한다. 그러한 제한은 8 비트 깊이의 가정에 기초한다.
9. ALF 필터들의 예측자들의 표시는 다음과 같이 시그널링된다:
Figure pct00075
그러한 방법이 고정된 필터들로부터의 필터들 또는 APS가 설정하는 필터들을 사용하기로 결정하기 위해 다수의 신택스 요소들을 파싱할 필요가 있음을 알 수 있다.
10. 병합 관련 코딩 툴들은 다음과 같다:
Figure pct00076
Figure pct00077
서브블록 병합 관련 신택스 요소들이 먼저 시그널링되고; 뒤이어서 일반 병합 모드(HEVC에서와 같이 MMVP 및 종래의 병합 둘 모두를 제어함)의 표시가 시그널링된다는 점에 유의한다. 그러한 표시가 거짓일 때, CIIP 또는 TPM 모드인지를 나타내기 위해 추가적인 비트들이 더 시그널링될 수 있다.
그렇지만, 그러한 정보는 허용된 TPM 후보들의 수가 2 개 미만인 경우를 고려하지 않는다.
4. 기술들 및 실시예들의 예들
아래의 상세한 목록은 일반 개념들을 설명하기 위한 예들로서 간주되어야 한다. 이러한 실시예들이 좁은 의미로 해석되어서는 안된다. 게다가, 이러한 기술들은 임의의 방식으로 조합될 수 있다.
A0, A1, B0, B1, B2 등으로 표시된 이웃 블록들은 도 2에 도시되어 있다.
1. 종래의 병합 및 TPM 코딩된 블록들에 대한 일반 병합 리스트 구성 프로세스는 현재 블록의 코딩 방법으로부터 분리된다.
a. 일 예에서, TPM이 하나의 블록에 적용될 때 부분 프루닝이 공간 병합 후보들에 적용된다.
i. 일 예에서, 2 개의 후보가 서로 비교되는지 여부는 비-TPM 병합 코딩된 블록들에 사용되는 것과 동일한 방식으로 결정된다.
ii. 일 예에서, B1은 A1과 비교되고, B0은 B1과 비교되며, A0은 A1과 비교되고, B2는 B1 및 A1과 비교된다.
iii. 대안적으로, TPM이 하나의 블록에 사용되지 않더라도 공간 병합 후보들에 전체 프루닝이 적용된다.
iv. 대안적으로, 게다가, 일부 특정 블록 치수들에 전체 프루닝이 적용될 수 있다.
1. 예를 들어, 블록 치수들에 전체 프루닝이 적용될 수 있으며, 여기서 TPM이 허용된다.
2. 예를 들어, 블록 크기가 M*H 개 미만의 샘플, 예를 들면, 16 개 또는 32 개 또는 64 개의 루마 샘플을 포함할 때, 전체 프루닝이 허용되지 않는다.
3. 예를 들어, 블록의 폭이 th1 초과이거나 th1 이상이고/이거나 블록의 높이가 th2 초과이거나 th2 이상일 때, 전체 프루닝이 허용되지 않는다.
b. 일 예에서, TPM이 하나의 블록에 적용될 때 B2를 검사할지 여부는 B2를 검사하기 전에 이용 가능한 병합 후보들의 수에 기초한다.
i. 대안적으로, 비-TPM 병합 코딩된 블록들에 대해 이용 가능한 병합 후보들의 수에 관계없이 B2는 항상 검사된다.
2. ATMVP가 이용 가능한지 여부를 결정하기 위해 블록을 식별하는 데 사용되는 초기화된 MV는 공간 이웃 블록(예를 들면, A1)의 리스트 X 정보에만 의존할 수 있으며 X는 시간 모션 벡터 예측에 사용되는 동일 위치 픽처가 도출되는 위치(예를 들면, collocated_from_l0_flag)로 설정된다.
a. 대안적으로, X는 모든 참조 리스트들에서의 모든 참조 픽처들이 현재 픽처와 비교하여 더 작은 POC 값들을 갖는지 또는 더 큰 POC 값들을 갖지 않는지에 따라 결정된다.
i. 일 예에서, 그것이 참인 경우, X는 1로 설정된다. 그렇지 않은 경우, X는 0으로 설정된다.
b. 대안적으로, 공간 이웃 블록(예를 들면, A1)의 리스트 X와 연관된 참조 픽처가 이용 가능하고 동일 위치 픽처와 동일한 POC 값을 갖는 경우, 초기화된 MV는 공간 이웃 블록의 리스트 X와 연관된 MV로 설정된다. 그렇지 않은 경우, 디폴트 MV(예를 들면, (0, 0))가 활용된다.
c. 대안적으로, HMVP 테이블에 저장된 모션 정보는 ATMVP에서 초기화된 MV로서 사용될 수 있다.
i. 예를 들어, HMVP 테이블에 저장된 첫 번째 이용 가능한 모션 정보가 사용될 수 있다.
ii. 예를 들어, 특정 참조 픽처(예를 들면, 동일 위치 픽처)와 연관된 HMVP 테이블에 저장된 첫 번째 이용 가능한 모션 정보가 사용될 수 있다.
d. 대안적으로, X는, 0 또는 1과 같은, 고정된 숫자이다.
3. 서브블록 기반 코딩 툴들 및 비-서브블록 기반 코딩 툴들에 사용되는 동일 위치 MV들의 도출 프로세스는 정렬될 수 있다, 즉, 프로세스는 특정 코딩 툴의 사용과 무관한다.
a. 일 예에서, 서브블록 기반 코딩 툴들에 대한 동일 위치 MV들의 도출 프로세스의 전체 또는 부분은 TMVP에 사용되는 프로세스에 정렬된다.
i. 일 예에서, 그것이 리스트 Y로부터의 단방향 예측인 경우, 리스트 Y의 모션 벡터는 타깃 참조 픽처 리스트 X로 스케일링된다;
ii. 일 예에서, 그것이 양방향 예측이고 타깃 참조 픽처 리스트가 X인 경우, 리스트 Y의 모션 벡터는 타깃 참조 픽처 리스트 X로 스케일링되고, Y는 이하의 규칙들에 따라 결정될 수 있다:
- 참조 픽처들 중 어느 것도 현재 픽처와 비교하여 더 큰 POC 값들을 갖지 않거나 모든 참조 픽처들이 더 작은 POC 값들을 갖는 경우, Y는 X와 동일하게 설정된다.
- 그렇지 않은 경우, Y는 collocated_from_l0_flag와 동일하게 설정된다.
b. 일 예에서, TMVP에 대한 동일 위치 MV들의 도출 프로세스의 전체 또는 부분은 서브블록 기반 코딩 툴들에 사용되는 프로세스에 정렬된다.
4. 모션 후보 리스트 구성 프로세스(예를 들면, 일반 병합 리스트, IBC 병합/AMVP 리스트)는 블록 치수들 및/또는 병합 공유 조건들에 의존할 수 있다. 블록의 폭 및 높이는, 제각기, W와 H로 표시된다. 조건 C는 W 및 H 및/또는 병합 공유 조건들에 의존할 수 있다.
a. 일 예에서, 조건 C가 충족되는 경우 공간 병합 후보들의 도출이 스킵된다.
b. 일 예에서, 조건 C가 충족되는 경우 HMVP 후보들의 도출이 스킵된다.
c. 일 예에서, 조건 C가 충족되는 경우 쌍별 병합 후보들의 도출이 스킵된다.
d. 일 예에서, 조건 C가 충족되는 경우 최대 프루닝 동작들의 수가 감소되거나 0으로 설정된다.
e. 일 예에서, W*H가 임계치(예를 들면, 64 또는 32)보다 작거나 크지 않을 때 조건 C가 충족된다.
f. 일 예에서, W 및/또는 H가 임계치(예를 들면, 4 또는 8)보다 작거나 크지 않을 때 조건 C가 충족된다.
g. 일 예에서, 현재 블록이 공유 노드 아래에 있을 때 조건 C가 충족된다.
5. 허용된 일반 병합 후보들의 최대 수/허용된 IBC 후보들의 최대 수/허용된 서브블록 병합 후보들의 최대 수는 0으로 설정될 수 있다. 따라서, 특정 툴들이 디스에이블될 수 있고, 관련된 신택스 요소들이 시그널링될 필요가 없다.
a. 일 예에서, 허용된 일반 병합 후보들의 최대 수가 0과 동일할 때, 일반 병합 리스트에 의존하는 코딩 툴이 디스에이블될 수 있다. 코딩 툴은 일반 병합, MMVD, CIIP, TPM, DMVR 등일 수 있다.
b. 일 예에서, 허용된 IBC 후보들의 최대 수가 0과 동일할 때, IBC AMVP 및/또는 IBC 병합이 디스에이블될 수 있다.
c. 일 예에서, 허용된 서브블록 기반 병합 후보들의 최대 수가 0과 동일할 때, 서브블록 기반 기술들, 예를 들면, ATMVP, 아핀 병합 모드가 디스에이블될 수 있다.
d. 허용된 후보들의 최대 수에 따라 툴이 디스에이블될 때, 관련된 신택스 요소들의 시그널링이 스킵된다.
i. 대안적으로, 또한, 병합 관련 툴들의 시그널링은 허용된 후보들의 최대 수가 0과 동일하지 않은지 여부를 검사할 필요가 있을 수 있다.
ii. 대안적으로, 게다가, 병합 관련 툴들에 대한 프로세스를 호출하는 것은 허용된 후보들의 최대 수가 0과 동일하지 않은지 여부를 검사할 필요가 있을 수 있다.
6. general_merge_flag 및/또는 cu_skip_flag의 시그널링은 허용된 일반 병합 후보들의 최대 수/허용된 IBC 후보들의 최대 수/허용된 서브블록 병합 후보들의 최대 수/병합 관련 코딩 툴들의 사용에 의존할 수 있다.
a. 일 예에서, 병합 관련 코딩 툴들은 IBC 병합, 일반 병합, MMVD, 서브블록 병합, CIIP, TPM, DMVR 등을 포함할 수 있다.
b. 일 예에서, 허용된 일반 병합 후보들의 최대 수, 허용된 IBC 병합/AMVP 후보들의 최대 수, 허용된 서브블록 병합 후보의 최대 수가 0과 동일할 때, general_merge_flag 및/또는 cu_skip_flag는 시그널링되지 않는다.
i. 대안적으로, 게다가, general_merge_flag 및/또는 cu_skip_flag는 0인 것으로 추론된다.
7. 현재 블록의 general_merge_flag 또는 cu_skip_flag가 참일 때 적합성 비트스트림은 IBC 병합, 일반 병합, MMVD, 서브블록 병합, CIIP, TPM, DMVR 등을 포함하는 병합 관련 툴들 중 적어도 하나가 인에이블된다는 것을 충족시켜야 한다.
8. 현재 블록의 (general_merge_flag 또는 cu_skip_flag)가 참이고 IBC가 하나의 슬라이스/타일/브릭/픽처/현재 블록에 대해 디스에이블될 때 적합성 비트스트림은 일반 병합, MMVD, 서브블록 병합, CIIP, TPM, DMVR 등을 포함한 병합 관련 툴들 중 적어도 하나가 인에이블된다는 것을 충족시켜야 한다.
9. 현재 블록의 (general_merge_flag 또는 cu_skip_flag)가 참이고 MMVD가 하나의 슬라이스/타일/브릭/픽처/현재 블록에 대해 디스에이블될 때 적합성 비트스트림은 IBC 병합, 일반 병합, 서브블록 병합, CIIP, TPM을 포함한 병합 관련 툴들 중 적어도 하나가 인에이블된다는 것을 충족시켜야 한다.
10. 현재 블록의 (general_merge_flag 또는 cu_skip_flag)가 참이고 CIIP가 하나의 슬라이스/타일/브릭/픽처/현재 블록에 대해 디스에이블될 때 적합성 비트스트림은 IBC 병합, 일반 병합, MMVD, 서브블록 병합, TPM을 포함한 병합 관련 툴들 중 적어도 하나가 인에이블된다는 것을 충족시켜야 한다.
11. 현재 블록의 (general_merge_flag 또는 cu_skip_flag)가 참이고 TPM가 하나의 슬라이스/타일/브릭/픽처/현재 블록에 대해 디스에이블될 때 적합성 비트스트림은 IBC 병합, 일반 병합, MMVD, 서브블록 병합, CIIP을 포함한 병합 관련 툴들 중 적어도 하나가 인에이블된다는 것을 충족시켜야 한다.
12. 현재 블록의 general_merge_flag 또는 cu_skip_flag가 참일 때 적합성 비트스트림은 IBC 병합, 일반 병합, MMVD, 서브블록 병합, CIIP, TPM을 포함한 인에이블된 병합 관련 툴들 중 적어도 하나가 적용된다는 것을 충족시켜야 한다. 제1 블록을 코딩할 때, 제2 블록의 이용 가능성의 검사는 제1 블록의 코딩된 모드 정보에 의존할 수 있다, 예를 들어, 제1 및 제2 블록에서 상이한 모드들이 사용되는 경우, 제2 블록은 다른 조건 검사 결과들(예를 들면, 구성되었음)와 관계없이 이용 불가능한 것으로 취급될 수 있다.
a. 일 예에서, 제1 블록은 인터 코딩되고 제2 블록은 IBC 코딩될 때, 제2 블록은 이용 불가능한 것으로 표시된다.
b. 일 예에서, 제1 블록은 IBC 코딩되고 제2 블록은 인터 코딩될 때, 제2 블록은 이용 불가능한 것으로 표시된다.
c. 제2 블록이 이용 불가능한 것으로 표시될 때, 관련된 코딩된 정보(예를 들면, 모션 정보)는 제1 블록을 코딩하는 데 활용되도록 허용되지 않는다.
13. TPM 부가 정보에 관련 없는 신택스 요소들의 시그널링이 또한 허용된 TPM 후보들의 수에 대한 조건 검사에 따를 수 있다.
a. 일 예에서, CIIP 관련 신택스 요소들(예를 들면, ciip_flag)의 시그널링은 허용된 TPM 후보의 수가 임계치 K보다 큰 것에 의존할 수 있다.
b. 일 예에서, 일반 병합 모드 플래그(예를 들면, regular_merge_flag)의 시그널링은 허용된 TPM 후보의 수가 임계치 K보다 큰 것에 의존할 수 있다.
c. 일 예에서, K는 1로 설정된다.
d. 대안적으로, 게다가, 허용된 TPM 후보의 수가 임계치 K보다 크지 않을 때 특정 신택스 요소들이 시그널링되지 않을 수 있다.
14. 적합성 비트스트림은 최대 변환 블록 크기들이 최대 CTU 크기들을 초과하지 않아야 한다는 것을 충족시켜야 한다.
a . 대안적으로, 최대 변환 블록 크기의 표시가 최대 CTU 크기들 하에서 조건부로 시그널링될 수 있거나 그 반대의 경우도 마찬가지이다.
i. 일 예에서, 최대 CTU 크기가 MxN(예를 들면, M=N=32)보다 크거나 같지 않은 경우, 최대 변환 블록 크기의 표시를 시그널링할 필요가 없다.
15. ALF 필터 계수들 범위는 고정된 범위에 있는 대신에 샘플 깊이(예를 들면, 내부 비트 깊이 또는 입력 비트 깊이)에 의존할 수 있다.
16. 하나의 플래그는 고정된 필터들에 대해 ALF APS에서의 ALF 필터들을 사용할지 여부를 나타내기 위해 직접 시그널링될 수 있다.
a. 추가적으로, 그러한 플래그는 이용 가능한 ALF APS의 수가 0보다 크다는 조건 하에서 시그널링될 수 있다.
b. 대안적으로, 게다가, APS로부터의 ALF 필터들이 시그널링될 때, ALF APS의 인덱스를 지시하기 위해 하나의 추가적인 신택스가 더 시그널링될 수 있다. 그러한 인덱스는 고정 길이 코딩, 단항 코딩, 절단된 단항 코딩, 절단된 이진 코딩, 지수-골롬 코딩으로 코딩될 수 있다.
5. 실시예
최신 VVC 작업 초안(JVET-N1001_v7) 외에 제안된 변경 사항들은 다음과 같다. 삭제된 텍스트는 밑줄친 이탤릭체 글꼴로 표시되어 있다. 새로 추가된 부분들은 굵은 대문자 글꼴로 강조 표시되어 있다.
5.1 실시예 #1
이 실시예는 비-TPM 코딩된 블록에 대한 프루닝 프로세스를 TPM 코딩된 블록들에 대한 프루닝 프로세스에 정렬시키는 것, 즉 비-TPM 코딩된 블록들에 대한 전체 프루닝 동작들이다.
8.5.2.3 공간 병합 후보들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같으며, X는 0 또는 1이다:
- 이웃 코딩 유닛들의 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2,
- 이웃 코딩 유닛들의 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2,
- 이웃 코딩 유닛들의 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2,
- 이웃 코딩 유닛들의 1/16 분수 샘플 정확도의 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2,
- 양방향 예측 가중치 인덱스들 gbiIdxA0, gbiIdxA1, gbiIdxB0, gbiIdxB1, 및 gbiIdxB2.
availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbA1, yNbA1 )은 ( xCb - 1, yCb + cbHeight - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA1, yNbA1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA1에 할당된다.
- 변수들 availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1은 다음과 같이 도출된다:
- availableA1이 FALSE와 동일한 경우, availableFlagA1은 0과 동일하게 설정되고, mvLXA1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA1은 -1과 동일하게 설정되고, predFlagLXA1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA1은 0과 동일하게 설정된다.
- 그렇지 않은 경우, availableFlagA1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00078
availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB1, yNbB1 )은 ( xCb + cbWidth - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB1, yNbB1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB1에 할당된다.
- 변수들 availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB1은 0과 동일하게 설정되고, mvLXB1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB1은 -1과 동일하게 설정되고, predFlagLXB1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB1은 0과 동일하게 설정된다.
- availableB1은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB1, yNbB1 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- 그렇지 않은 경우, availableFlagB1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00079
availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB0, yNbB0 )은 ( xCb + cbWidth, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB0, yNbB0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB0에 할당된다.
- 변수들 availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB0은 0과 동일하게 설정되고, mvLXB0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB0은 -1과 동일하게 설정되고, predFlagLXB0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB0은 0과 동일하게 설정된다.
- availableB0은 FALSE와 동일하다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB0, yNbB0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB0, yNbB0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagB0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00080
availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치 ( xNbA0, yNbA0 )은 ( xCb - 1,  yCb + cbWidth )와 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA0, yNbA0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA0에 할당된다.
- 변수들 availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagA0은 0과 동일하게 설정되고, mvLXA0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA0은 -1과 동일하게 설정되고, predFlagLXA0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA0은 0과 동일하게 설정된다.
- availableA0은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagA0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00081
Figure pct00082
availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB2, yNbB2 )는 ( xCb - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB2, yNbB2 )를 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB2에 할당된다.
- 변수들 availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2는 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB2는 0과 동일하게 설정되고, mvLXB2의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB2는 -1과 동일하게 설정되고, predFlagLXB2는 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB2는 0과 동일하게 설정된다.
- availableB2는 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableA0은 TRUE와 동일하고, 루마 위치들 ( xNbA0, yNbA0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableFlagA0 + availableFlagA1 + availableFlagB0 + availableFlagB1은 4와 동일하고 merge_triangle_flag[ xCb ][ yCb ]는 0과 동일하다.
- 그렇지 않은 경우, availableFlagB2는 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00083
Figure pct00084
5.2 실시예 #2
이 실시예는 TPM 코딩된 블록에 대한 프루닝 프로세스를 비-TPM 코딩된 블록들에 대한 프루닝 프로세스에 정렬시키는 것, 즉 TPM 코딩된 블록들에 대한 제한된 프루닝 동작들이다.
8.5.2.3 공간 병합 후보들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같으며, X는 0 또는 1이다:
- 이웃 코딩 유닛들의 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2,
- 이웃 코딩 유닛들의 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2,
- 이웃 코딩 유닛들의 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2,
- 이웃 코딩 유닛들의 1/16 분수 샘플 정확도의 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2,
- 양방향 예측 가중치 인덱스들 gbiIdxA0, gbiIdxA1, gbiIdxB0, gbiIdxB1, 및 gbiIdxB2.
availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbA1, yNbA1 )은 ( xCb - 1, yCb + cbHeight - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA1, yNbA1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA1에 할당된다.
- 변수들 availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1은 다음과 같이 도출된다:
- availableA1이 FALSE와 동일한 경우, availableFlagA1은 0과 동일하게 설정되고, mvLXA1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA1은 -1과 동일하게 설정되고, predFlagLXA1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA1은 0과 동일하게 설정된다.
- 그렇지 않은 경우, availableFlagA1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00085
availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB1, yNbB1 )은 ( xCb + cbWidth - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB1, yNbB1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB1에 할당된다.
- 변수들 availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB1은 0과 동일하게 설정되고, mvLXB1의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB1은 -1과 동일하게 설정되고, predFlagLXB1은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB1은 0과 동일하게 설정된다.
- availableB1은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB1, yNbB1 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- 그렇지 않은 경우, availableFlagB1은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00086
availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB0, yNbB0 )은 ( xCb + cbWidth, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB0, yNbB0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB0에 할당된다.
- 변수들 availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB0은 0과 동일하게 설정되고, mvLXB0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB0은 -1과 동일하게 설정되고, predFlagLXB0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB0은 0과 동일하게 설정된다.
- availableB0은 FALSE와 동일하다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB0, yNbB0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableA 1 은 TRUE와 동일하고, 루마 위치들 ( xNbA 1 , yNbA 1 ) 및 ( xNbB 0 , yNbB 0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며 merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagB0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00087
availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치 ( xNbA0, yNbA0 )은 ( xCb - 1,  yCb + cbWidth )와 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA0, yNbA0 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA0에 할당된다.
- 변수들 availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0은 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagA0은 0과 동일하게 설정되고, mvLXA0의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXA0은 -1과 동일하게 설정되고, predFlagLXA0은 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxA0은 0과 동일하게 설정된다.
- availableA0은 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbA0, yNbA0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB 1 은 TRUE와 동일하고, 루마 위치들 ( xNbB 1 , yNbB 1 ) 및 ( xNbA 0 , yNbA 0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며 merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableB 0 은 TRUE와 동일하고, 루마 위치들 ( xNbB 0 , yNbB 0 ) 및 ( xNbA 0 , yNbA 0 )은 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며 merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- 그렇지 않은 경우, availableFlagA0은 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00088
availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB2, yNbB2 )는 ( xCb - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB2, yNbB2 )를 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB2에 할당된다.
- 변수들 availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2는 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB2는 0과 동일하게 설정되고, mvLXB2의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB2는 -1과 동일하게 설정되고, predFlagLXB2는 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB2는 0과 동일하게 설정된다.
- availableB2는 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB 0 은 TRUE와 동일하고, 루마 위치들 ( xNbB 0 , yNbB 0 ) 및 ( xNbB 2 , yNbB 2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며 merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableA 0 은 TRUE와 동일하고, 루마 위치들 ( xNbA 0 , yNbA 0 ) 및 ( xNbB 2 , yNbB 2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며 merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableFlagA0 + availableFlagA1 + availableFlagB0 +  availableFlagB1은 4와 동일하고 merge_triangle_flag[ xCb ][ yCb ]는 0과 동일하다.
- 그렇지 않은 경우, availableFlagB2는 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00089
5.3 실시예 #3
이 실시예는 B2의 검사를 호출하기 위한 조건들을 정렬시키는 것이다.
8.5.2.3 공간 병합 후보들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같으며, X는 0 또는 1이다:
- 이웃 코딩 유닛들의 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2,
- 이웃 코딩 유닛들의 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2,
- 이웃 코딩 유닛들의 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2,
- 이웃 코딩 유닛들의 1/16 분수 샘플 정확도의 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2,
- 양방향 예측 가중치 인덱스들 gbiIdxA0, gbiIdxA1, gbiIdxB0, gbiIdxB1, 및 gbiIdxB2.
availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbA1, yNbA1 )은 ( xCb - 1, yCb + cbHeight - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA1, yNbA1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA1에 할당된다.
- 변수들 availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1은 다음과 같이 도출된다:
...
availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB1, yNbB1 )은 ( xCb + cbWidth - 1, yCb - 1 )과 동일하게 설정된다.
...
availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB0, yNbB0 )은 ( xCb + cbWidth, yCb - 1 )과 동일하게 설정된다.
...
availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치 ( xNbA0, yNbA0 )은 ( xCb - 1,  yCb + cbWidth )와 동일하게 설정된다.
...
availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB2, yNbB2 )는 ( xCb - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB2, yNbB2 )를 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB2에 할당된다.
- 변수들 availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2는 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB2는 0과 동일하게 설정되고, mvLXB2의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB2는 -1과 동일하게 설정되고, predFlagLXB2는 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB2는 0과 동일하게 설정된다.
- availableB2는 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableA0은 TRUE와 동일하고, 루마 위치들 ( xNbA0, yNbA0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableFlagA0 + availableFlagA1 + availableFlagB0 + availableFlagB1은 4와 동일하고 merge_triangle_flag[ xCb ][ yCb ]는 0과 동일하다.
- 그렇지 않은 경우, availableFlagB2는 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00090
Figure pct00091
5.4 실시예 #4
이 실시예는 B2의 검사를 호출하기 위한 조건들을 정렬시키는 것이다.
8.5.2.3 공간 병합 후보들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 코딩 블록의 좌측 상단 샘플의 루마 위치 ( xCb , yCb ),
- 루마 샘플들에서의 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플들에서의 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
이 프로세스의 출력들은 다음과 같으며, X는 0 또는 1이다:
- 이웃 코딩 유닛들의 이용 가능성 플래그들 availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2,
- 이웃 코딩 유닛들의 참조 인덱스들 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2,
- 이웃 코딩 유닛들의 예측 리스트 활용 플래그들 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2,
- 이웃 코딩 유닛들의 1/16 분수 샘플 정확도의 모션 벡터들 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2,
- 양방향 예측 가중치 인덱스들 gbiIdxA0, gbiIdxA1, gbiIdxB0, gbiIdxB1, 및 gbiIdxB2.
availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbA1, yNbA1 )은 ( xCb - 1, yCb + cbHeight - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbA1, yNbA1 )을 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableA1에 할당된다.
- 변수들 availableFlagA1, refIdxLXA1, predFlagLXA1 및 mvLXA1은 다음과 같이 도출된다:
...
availableFlagB1, refIdxLXB1, predFlagLXB1 및 mvLXB1의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB1, yNbB1 )은 ( xCb + cbWidth - 1, yCb - 1 )과 동일하게 설정된다.
...
availableFlagB0, refIdxLXB0, predFlagLXB0 및 mvLXB0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB0, yNbB0 )은 ( xCb + cbWidth, yCb - 1 )과 동일하게 설정된다.
...
availableFlagA0, refIdxLXA0, predFlagLXA0 및 mvLXA0의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치 ( xNbA0, yNbA0 )은 ( xCb - 1,  yCb + cbWidth )와 동일하게 설정된다.
...
availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2의 도출을 위해, 다음이 적용된다:
- 이웃 루마 코딩 블록 내부의 루마 위치( xNbB2, yNbB2 )는 ( xCb - 1, yCb - 1 )과 동일하게 설정된다.
- 6.4.X 절 [Ed. (BB): 이웃 블록 이용 가능성 검사 프로세스(추후 결정)]에 명시된 바와 같은 블록에 대한 이용 가능성 도출 프로세스는 ( xCb, yCb )와 동일하게 설정된 현재 루마 위치 ( xCurr, yCurr ) 및 이웃 루마 위치 ( xNbB2, yNbB2 )를 입력들로 하여 호출되고, 출력은 블록 이용 가능성 플래그 availableB2에 할당된다.
- 변수들 availableFlagB2, refIdxLXB2, predFlagLXB2 및 mvLXB2는 다음과 같이 도출된다:
- 이하의 조건들 중 하나 이상이 참인 경우, availableFlagB2는 0과 동일하게 설정되고, mvLXB2의 양쪽 성분들은 0과 동일하게 설정되며, refIdxLXB2는 -1과 동일하게 설정되고, predFlagLXB2는 0과 동일하게 설정되며(단, X는 0 또는 1임), gbiIdxB2는 0과 동일하게 설정된다.
- availableB2는 FALSE와 동일하다.
- availableA1은 TRUE와 동일하고, 루마 위치들 ( xNbA1, yNbA1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB1은 TRUE와 동일하고, 루마 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 갖는다.
- availableB0은 TRUE와 동일하고, 루마 위치들 ( xNbB0, yNbB0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableA0은 TRUE와 동일하고, 루마 위치들 ( xNbA0, yNbA0 ) 및 ( xNbB2, yNbB2 )는 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지며, merge_triangle_flag[ xCb ][ yCb ]는 1과 동일하다.
- availableFlagA 0  + availableFlagA 1  + availableFlagB 0  +  availableFlagB 1 은 4와 동일하고, merge_triangle_flag[ xCb ][ yCb ]는 0과 동일하다.
- 그렇지 않은 경우, availableFlagB2는 1과 동일하게 설정되고 이하의 할당들이 행해진다:
Figure pct00092
5.5 실시예 #5
이 실시예는 ATMVP 프로세스에서 초기화된 MV의 결정을 단순화하는 것이다.
8.5.5.4 서브블록 기반 시간 병합 기본 모션 데이터에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록을 포함하는 루마 코딩 트리 블록의 좌측 상단 샘플의 위치( xCtb, yCtb ),
- 우측 아래 중심 샘플을 커버하는 동일 위치 루마 코딩 블록의 좌측 상단 샘플의 위치( xColCtrCb, yColCtrCb ).
- 이웃 코딩 유닛의 이용 가능성 플래그 availableFlagA1,
- 이웃 코딩 유닛의 참조 인덱스 refIdxLXA1,
- 이웃 코딩 유닛의 예측 리스트 활용 플래그 predFlagLXA1,
- 이웃 코딩 유닛의 1/16 분수 샘플 정확도의 모션 벡터 mvLXA1.
이 프로세스의 출력들은 다음과 같다.
- 모션 벡터들 ctrMvL0 및 ctrMvL1,
- 예측 리스트 활용 플래그들 ctrPredFlagL0 및 ctrPredFlagL1,
- 시간 모션 벡터 tempMv.
변수 tempMv는 다음과 같이 설정된다:
Figure pct00093
변수 currPic은 현재 픽처를 지정한다.
availableFlagA1이 TRUE와 동일할 때, 다음이 적용된다:
변수 X를 collocated_from_l0_flag로 설정한다.
predFlagLXA1이 1과 동일하고 DiffPicOrderCnt(ColPic, RefPicList[ X ][refIdxLXA1])가 0과 동일한 것이 참인 경우, tempMv는 mvLXA1과 동일하게 설정된다.
- 이하의 조건들 모두가 참인 경우, tempMv는 mvL1A 1 과 동일하게 설정된다:
- predFlagL1A 1 은 1과 동일하다.
- DiffPicOrderCnt(ColPic, RefPicList[ 1 ][refIdxL1A 1 ])는 0과 동일하다,
- DiffPicOrderCnt(aPic, currPic)는 현재 슬라이스의 모든 참조 픽처 리스트에 있는 모든 픽처 aPic에 대해 0보다 작거나 같다,
- slice_type은 B와 동일하다,
- collocated_from_l0_flag는 0과 동일하다.
- 그렇지 않고 이하의 조건들 모두가 참인 경우, tempMv는 mvL0A 1 과 동일하게 설정된다:
- predFlagL0A 1 은 1과 동일하다.
- DiffPicOrderCnt(ColPic, RefPicList[ 0 ][refIdxL0A 1 ])는 0과 동일하다,
ColPic 내부의 동일 위치 블록의 위치( xColCb, yColCb )는 다음과 같이 도출된다:
Figure pct00094
Figure pct00095
어레이 colPredMode는 ColPic에 의해 지정되는 동일 위치 픽처의 예측 모드 어레이 CuPredMode와 동일하게 설정된다.
모션 벡터들 ctrMvL0 및 ctrMvL1 및 예측 리스트 활용 플래그들 ctrPredFlagL0 및 ctrPredFlagL1은 다음과 같이 도출된다.
...
5.6 실시예 #6
서브블록 및 비-서브블록 기반 방법들에 대한 동일 위치 MV들의 도출 프로세스의 정렬에 대한 예들.
8.5.2.12 동일 위치 모션 벡터들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록을 지정하는 변수 currCb,
- ColPic에 의해 지정되는 동일 위치 픽처 내부의 동일 위치 코딩 블록을 지정하는 변수 colCb,
- ColPic에 의해 지정되는 동일 위치 픽처의 좌측 상단 루마 샘플을 기준으로 colCb에 의해 지정되는 동일 위치 루마 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치 ( xColCb, yColCb ),
- 참조 인덱스 refIdxLX, 단, X는 0 또는 1임,
- 서브블록 시간 병합 후보를 나타내는 플래그 sbFlag.
이 프로세스의 출력들은 다음과 같다.
- 1/16 분수 샘플 정확도의 모션 벡터 예측 mvLXCol,
- 이용 가능성 플래그 availableFlagLXCol.
변수 currPic은 현재 픽처를 지정한다.
어레이들 predFlagL0Col[ x ][ y ], mvL0Col[ x ][ y ], 및 refIdxL0Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL0[ x ][ y ], MvDmvrL0[ x ][ y ], 및 RefIdxL0[ x ][ y ]와 동일하게 설정되고, 어레이들 predFlagL1Col[ x ][ y ], mvL1Col[ x ][ y ], 및 refIdxL1Col[ x ][ y ]는, 제각기, ColPic에 의해 지정되는 동일 위치 픽처의 PredFlagL1[ x ][ y ], MvDmvrL1[ x ][ y ], 및 RefIdxL1[ x ][ y ]와 동일하게 설정된다.
변수들 mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- colCb가 인트라 또는 IBC 예측 모드로 코딩된 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고, availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 모션 벡터 mvCol, 참조 인덱스 refIdxCol 및 참조 리스트 식별자 listCol은 다음과 같이 도출된다:
- sbFlag가 0과 동일한 경우, availableFlagLXCol은 1로 설정되고 다음이 적용된다:
- predFlagL0Col[ xColCb ][ yColCb ]가 0과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvL1Col[ xColCb ][ yColCb ], refIdxL1Col[ xColCb ][ yColCb ] 및 L1과 동일하게 설정된다.
- 그렇지 않고, predFlagL0Col[ xColCb ][ yColCb ]가 1과 동일하고 predFlagL1Col[ xColCb ][ yColCb ]가 0과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvL0Col[ xColCb ][ yColCb ], refIdxL0Col[ xColCb ][ yColCb ] 및 L0과 동일하게 설정된다.
- 그렇지 않은 경우(predFlagL0Col[ xColCb ][ yColCb ]가 1과 동일하고 predFlagL1Col[ xColCb ][ yColCb ]가 1과 동일한 경우), 이하의 할당들이 이루어진다:
- NoBackwardPredFlag가 1과 동일한 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvLXCol[ xColCb ][ yColCb ], refIdxLXCol[ xColCb ][ yColCb ] 및 LX와 동일하게 설정된다.
- 그렇지 않은 경우, mvCol, refIdxCol 및 listCol은, 제각기, mvLNCol[ xColCb ][ yColCb ], refIdxLNCol[ xColCb ][ yColCb ] 및 LN과 동일하게 설정되고, N은 collocated_from_l0_flag의 값이다.
- 그렇지 않은 경우(sbFlag가 1인 경우), 다음이 적용된다:
- PredFlagLXCol[ xColCb ][ yColCb ]가 1과 동일한 경우, mvCol, refIdxCol, 및 listCol은, 제각기, mvLXCol[ xColCb ][ yColCb ], refIdxLXCol[ xColCb ][ yColCb ], 및 LX와 동일하게 설정되고, availableFlagLXCol은 1로 설정된다.
- 그렇지 않은 경우(PredFlagLXCol[ xColCb ][ yColCb ]가 0인 경우), 다음이 적용된다:
- DiffPicOrderCnt( aPic, currPic )가 현재 슬라이스의 모든 참조 픽처 리스트에 있는 모든 픽처 aPic에 대해 0보다 작거나 같고 PredFlagLYCol[ xColCb ][ yColCb ]가 1과 동일한 경우, mvCol, refIdxCol, listCol은, 제각기, mvLYCol[ xColCb ][ yColCb ], refIdxLYCol[ xColCb ][ yColCb ] 및 LY로 설정되며, Y는 !X와 동일하고 여기서 X는 이 프로세스가 호출되는 X의 값이며, availableFlagLXCol은 1로 설정된다.
- mvLXCol의 양쪽 성분들은 0으로 설정되고, availableFlagLXCol은 0과 동일하게 설정된다.
- availableFlagLXCol이 TRUE와 동일할 때, mvLXCol 및 availableFlagLXCol은 다음과 같이 도출된다:
- LongTermRefPic( currPic, currCb, refIdxLX, LX )가 LongTermRefPic( ColPic, colCb, refIdxCol, listCol )과 동일하지 않은 경우, mvLXCol의 양쪽 성분들은 0과 동일하게 설정되고 availableFlagLXCol은 0과 동일하게 설정된다.
- 그렇지 않은 경우, 변수 availableFlagLXCol은 1과 동일하게 설정되고, refPicList[ listCol ][ refIdxCol ]은 ColPic에 의해 지정되는 동일 위치 픽처에서 코딩 블록 colCb를 포함하는 슬라이스의 참조 픽처 리스트 listCol에서 참조 인덱스 refIdxCol을 갖는 픽처로 설정되며, 다음이 적용된다:
...
도 22는 비디오 프로세싱 장치(2200)의 블록 다이어그램이다. 장치(2200)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(2200)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(2200)는 하나 이상의 프로세서(2202), 하나 이상의 메모리(2204) 및 비디오 프로세싱 하드웨어(2206)를 포함할 수 있다. 프로세서(들)(2202)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(2204)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(2206)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(2206)는 전용 하드웨어, 또는 그래픽 프로세서 유닛(GPU) 또는 특수 신호 프로세싱 블록들의 형태로 프로세서(들)(2202) 내에 부분적으로 또는 완전히 포함될 수 있다.
일부 실시예들은 이하의 조항 기반 설명을 사용하여 설명될 수 있다.
섹션 4의 항목 1에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법(예를 들면, 도 23에 묘사된 방법(2300))으로서, 현재 비디오 블록이 적어도 2 개의 비직사각형 서브블록으로 분할되는 삼각형 분할 모드(TMP)를 사용하여 분할되는 현재 비디오 블록의 병합 리스트 구성에 프루닝 프로세스를 적용하는 단계(2302) - 프루닝 프로세스는 비-TMP 파티션을 사용하여 분할되는 다른 비디오 블록에 대한 다른 프루닝 프로세스와 동일함 -; 및 병합 리스트 구성에 기초하여 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환을 수행하는 단계(2304)를 포함하는, 방법.
2. 조항 1의 방법으로서, 프루닝 프로세스는 현재 비디오 블록의 공간 병합 후보들에 대해 부분 프루닝을 사용하는 단계를 포함하는, 방법.
3. 조항 1의 방법으로서, 프루닝 프로세스는 현재 비디오 블록의 치수에 기초하여 전체 또는 부분 프루닝을 사용하도록 지정하는 블록 치수 규칙에 기초하여 현재 비디오 블록에 전체 또는 부분 프루닝을 적용하는 단계를 포함하는, 방법.
4. 조항 1의 방법으로서, 프루닝 프로세스는 병합 리스트 구성 프로세스 동안 상이한 순서의 이웃 블록들을 사용하는 것을 포함하는, 방법.
섹션 4의 항목 2에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법으로서, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안, 현재 비디오 블록의 이웃 블록의 리스트 X에 기초하여 변환을 위한 ATMVP(alternative temporal motion vector predictor coding) 모드의 이용 가능성에 관해 결정하는 단계 - X는 정수이고 X의 값은 현재 비디오 블록의 인코딩 조건에 의존함 -, 및 ATMVP 모드의 이용 가능성에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, X는 현재 비디오 블록과 비트스트림 표현 간의 변환에 사용되는 시간 모션 벡터 예측이 수행되는 동일 위치 비디오 픽처의 위치를 나타내는, 방법.
3. 조항 1의 방법으로서, X는 현재 비디오 블록에 대한 모든 참조 리스트들에 있는 모든 참조 픽처들의 픽처 순서 카운트들(POC들)을 현재 비디오 블록의 현재 비디오 픽처의 POC와 비교하는 것에 의해 결정되는, 방법.
4. 조항 3의 방법으로서, 비교하는 것이 POC들이 현재 픽처의 POC보다 작거나 같다고 나타내는 경우에, X=1로 설정하고, 그렇지 않은 경우에, X=0으로 설정하는, 방법.
5. 조항 1의 방법으로서, 히스토리 기반 모션 벡터 예측자 테이블에 저장된 모션 정보는 ATMVP 모드에서 모션 벡터를 초기화하는 데 사용되는, 방법.
섹션 4의 항목 3에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법으로서, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안, 현재 비디오 블록이 적어도 2 개의 서브블록으로 분할되는 서브블록 기반 코딩 기술을 결정하는 단계 - 그 자신의 모션 정보를 도출할 수 있는 각각의 서브블록이 변환에 사용됨 -; 및 동일 위치 모션 벡터들에 대한 블록 기반 도출 프로세스와 정렬되는 현재 비디오 블록에 대한 병합 리스트 구성 프로세스를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 병합 리스트 구성 프로세스 및 도출 프로세스는 리스트 Y로부터 단방향 예측을 수행하는 단계를 포함하고, 리스트 Y의 모션 벡터들은 타깃 참조 픽처 리스트 X로 스케일링되는, 방법.
3. 조항 1의 방법으로서, 병합 리스트 구성 프로세스 및 도출 프로세스는 타깃 참조 픽처 리스트 X를 사용하여 양방향 예측을 수행하는 단계를 포함하고, 리스트 Y의 모션 벡터들은 리스트 X의 모션 벡터로 스케일링되며, Y는 규칙에 따라 결정되는, 방법.
섹션 4의 항목 4에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법으로서, 비디오 픽처의 현재 비디오 블록의 치수 및/또는 상이한 코딩 툴들로부터의 병합 후보들이 공유되는 병합 공유 상태의 인에이블에 기초하여, 조건이 충족되는 것과 조건이 충족되지 않는 것 사이에서 결정하는 단계; 및 조건에 기초하여 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 변환을 수행하는 단계는 조건이 충족되는 경우에 공간 병합 후보들을 도출하는 것을 스킵하는 단계를 포함하는, 방법.
3. 조항 1의 방법으로서, 변환을 수행하는 단계는 조건이 충족되는 경우에 히스토리 기반 모션 벡터 후보들을 도출하는 것을 스킵하는 단계를 포함하는, 방법.
4. 조항 1 내지 조항 3 중 어느 한 조항의 방법으로서, 현재 비디오 블록이 비디오 픽처에서 공유 노드 아래에 있는 것에 기초하여 조건이 충족되는 것으로 결정되는, 방법.
섹션 4의 항목 5에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법으로서, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안, 코딩 툴이 변환에 대해 디스에이블된다고 결정하는 단계 - 비트스트림 표현은 코딩 툴에 대한 병합 후보들의 최대 수가 0이라는 표시를 제공하도록 구성됨 -; 및 코딩 툴이 디스에이블된다는 결정을 사용하여 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 코딩 툴은 현재 비디오 블록의 픽셀들이 현재 비디오 블록의 비디오 영역 내의 다른 픽셀들로부터 코딩되는 인트라 블록 복사에 대응하는, 방법.
3. 조항 1의 방법으로서, 코딩 툴은 서브블록 코딩 툴인, 방법.
4. 조항 3의 방법으로서, 서브블록 코딩 툴은 아핀 코딩 툴 또는 대안 모션 벡터 예측자 툴인, 방법.
5. 조항 1 내지 조항 4 중 어느 한 조항의 방법으로서, 변환을 수행하는 단계는 코딩 툴에 관련된 신택스 요소들을 스킵하는 것에 의해 비트스트림을 프로세싱하는 단계를 포함하는, 방법.
섹션 4의 항목 6에 설명된 기술들의 일부 예시적인 실시예들은 이하를 포함한다:
1. 비디오 프로세싱 방법으로서, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안, 비트스트림 표현 내의 제1 신택스 요소가 변환 동안 사용되는 코딩 툴에 의해 사용되는 병합 후보들의 최대 수를 나타내는 제2 신택스 요소에 기초하여 조건부로 존재한다는 것을 지정하는 규칙을 사용하여 결정하는 단계; 및 결정에 기초하여 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 제1 신택스 요소는 병합 플래그에 대응하는, 방법.
3. 조항 1의 방법으로서, 제1 신택스 요소는 스킵 플래그에 대응하는, 방법.
4. 조항 1 내지 조항 3 중 어느 한 조항의 방법으로서, 코딩 툴은 서브밴드 코딩 툴이고, 제2 신택스 요소는 서브밴드 코딩 툴에 대한 최대 허용 병합 후보들에 대응하는, 방법.
34. 조항 1 내지 조항 33 중 어느 한 조항의 방법으로서, 변환은 현재 비디오 블록으로부터 비트스트림 표현을 생성하는 것을 포함하는, 방법.
35. 조항 1 내지 조항 33 중 어느 한 조항의 방법으로서, 변환은 비트스트림 표현으로부터 현재 비디오 블록의 샘플들을 생성하는 것을 포함하는, 방법.
36. 조항 1 내지 조항 35 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
37. 코드가 저장된 컴퓨터 판독 가능 매체로서, 코드는, 실행 시에, 프로세서로 하여금 조항 1 내지 조항 35 중 어느 하나 이상의 조항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
도 24는 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(2400)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(2400)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(2400)은 비디오 콘텐츠를 수신하기 위한 입력(2402)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(2402)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(2400)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(2404)를 포함할 수 있다. 코딩 컴포넌트(2404)는 비디오의 코딩된 표현을 생성하기 위해 입력(2402)으로부터 코딩 컴포넌트(2404)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(2404)의 출력은, 컴포넌트(2406)에 의해 표현된 바와 같이, 저장되거나 연결된 통신을 통해 전송될 수 있다. 입력(2402)에 수신되는 비디오의 저장된 또는 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(2410)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(2408)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 동작들이 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들이 인코더에서 사용되고 코딩의 결과들을 반대로 행하는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
도 25는 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다. 이 플로차트의 단계들은 이 문서의 섹션 4에서 예 5d와 관련하여 논의된다. 단계(2502)에서, 프로세스는 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하며, 여기서 비트스트림 표현은 코딩 툴에 대한 병합 후보들의 최대 수를 나타내는 신택스 요소가 비트스트림 표현에 선택적으로 포함되거나 제외되고, 이에 의해 코딩 툴이 변환에 대해 인에이블 또는 디스에이블되는지를 나타낸다는 것을 지정하는 포맷 규칙에 따라 구성되고, 여기서 코딩 툴에 대한 병합 후보들의 최대 수는 0 또는 양수이다.
도 26은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다. 이 플로차트의 단계들은 이 문서의 섹션 4에서 예 13와 관련하여 논의된다. 단계(2602)에서, 프로세스는 다수의 비디오 블록들을 포함하는 하나 이상의 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 표현 사이의 변환을 수행하며, 여기서 비트스트림 표현은 허용되는 기하학적 분할 모드(GPM) 모션 후보들의 수가 비디오 영역에 대한 코딩 툴의 적용 가능성에 관련된 신택스 요소가 비트스트림 표현에 포함되는지 여부를 결정한다는 것을 지정하는 포맷 규칙을 준수하고, 여기서 코딩 툴은 GPM 코딩 툴과 상이하며, 여기서 GPM은 모션 예측을 개별적으로 적용하기 위해 비디오 블록을 다수의 예측 파티션들로 분할하는 것을 포함하며, 적어도 하나의 파티션은 비직사각형 형상을 갖는다.
도 27은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다. 이 플로차트의 단계들은 이 문서의 섹션 4에서 예 14와 관련하여 논의된다. 단계(2702)에서, 프로세스는 비주얼 미디어 데이터의 현재 비디오 유닛과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하며, 여기서 비트스트림 표현은 최대 변환 블록 크기가 변환에 사용되는 최대 코딩 트리 유닛(CTU) 크기보다 작거나 같다는 것을 지정하는 포맷 규칙에 따라 구성된다.
도 28은 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다. 이 플로차트의 단계들은 이 문서의 섹션 4에서 예 15와 관련하여 논의된다. 단계(2802)에서, 프로세스는 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하며, 여기서 변환은 ALF 필터의 계수들이 현재 비디오 블록의 비디오 영역에서의 샘플의 깊이에 기초하는 적응적 루프 필터(ALF)를 사용한다.
도 29는 비주얼 미디어 프로세싱 방법의 예에 대한 플로차트이다. 이 플로차트의 단계들은 이 문서의 섹션 4에서 예 16와 관련하여 논의된다. 단계(2902)에서, 프로세스는 적응적 루프 필터(ALF)를 사용하여 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하며, 여기서 비트스트림 표현은 현재 비디오 블록에 적용되는 ALF 필터가 적응 파라미터 세트(APS)에 기초하여 결정되는지 또는 고정 필터 세트들에 기초하여 결정되는지를 나타내는 하나 이상의 신택스 요소가 비트스트림 표현에 포함된다는 것을 지정하는 포맷 규칙에 따라 구성된다.
본 문서의 일부 실시예들이 조항 기반 포맷으로 제공된다.
A1. 비주얼 미디어 프로세싱 방법으로서,
비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 비트스트림 표현은 코딩 툴에 대한 병합 후보들의 최대 수를 나타내는 신택스 요소가 비트스트림 표현에 선택적으로 포함되거나 제외되고, 이에 의해 코딩 툴이 변환에 대해 인에이블 또는 디스에이블되는지를 나타낸다는 것을 지정하는 포맷 규칙에 따라 구성되고,
코딩 툴에 대한 병합 후보들의 최대 수는 0 또는 양수인, 방법.
A2. 조항 A1의 방법으로서, 포맷 규칙은 코딩 툴이 변환에 대해 디스에이블된다는 결정에 응답하여 신택스 요소가 비트스트림 표현에서 제외된다는 것을 지정하는, 방법.
A3. 조항 A2의 방법으로서, 코딩 툴에 대한 병합 후보들의 최대 수가 0인 경우에, 포맷 규칙은 비트스트림 표현에서 신택스 요소를 제외시키는 것을 지정하는, 방법.
A4. 조항 A3의 방법으로서, 코딩 툴은 현재 비디오 블록의 픽셀들이 현재 비디오 블록의 비디오 영역 내의 다른 픽셀들로부터 코딩되는 인트라 블록 복사에 대응하는, 방법.
A5. 조항 A1 내지 조항 A4 중 어느 하나 이상의 조항의 방법으로서, 코딩 툴은 일반 병합, MMVD(merge with motion vector differences), CIIP(combined intra-inter prediction), TPM(triangular partition mode), DMVR(decoder side motion vector refinement)에 대응하는, 방법.
A6. 조항 A1 내지 조항 A4 중 어느 하나 이상의 조항의 방법으로서, 코딩 툴은 서브블록 코딩 툴인, 방법.
A7. 조항 A6의 방법으로서, 서브블록 코딩 툴은 아핀 코딩 툴 또는 대안 모션 벡터 예측자 툴인, 방법.
A8. 조항 A1 내지 조항 A4 중 어느 하나 이상의 조항의 방법으로서, 변환을 수행하는 단계는 코딩 툴에 관련된 신택스 요소들을 스킵하는 것에 의해 비트스트림을 프로세싱하는 단계를 포함하는, 방법.
A9. 조항 A1 내지 조항 A4 중 어느 하나 이상의 조항의 방법으로서, 변환을 수행하는 단계는 비트스트림을 프로세싱하여 코딩 툴에 대한 병합 후보들의 최대 수가 0과 동일하지 않다고 결정하는 단계를 포함하는, 방법.
A10. 조항 A1 내지 조항 A9 중 어느 하나 이상의 조항의 방법으로서, 변환은 코딩 툴에 대한 병합 후보들의 최대 수가 0과 동일하지 않다고 결정하는 것을 포함하는, 방법.
E1. 비주얼 미디어 프로세싱 방법으로서,
다수의 비디오 블록들을 포함하는 하나 이상의 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며,
비트스트림 표현은 허용되는 기하학적 분할 모드(GPM) 모션 후보들의 수가 비디오 영역에 대한 코딩 툴의 적용 가능성에 관련된 신택스 요소가 비트스트림 표현에 포함되는지 여부를 결정한다는 것을 지정하는 포맷 규칙을 준수하고, 코딩 툴은 GPM 코딩 툴과 상이하며, GPM은 모션 예측을 개별적으로 적용하기 위해 비디오 블록을 다수의 예측 파티션들로 분할하는 것을 포함하며, 적어도 하나의 파티션은 비직사각형 형상을 갖는, 방법.
E2. 조항 E1의 방법으로서, 코딩 툴은 CIIP(combined inter-intra prediction) 모드에 대응하고, 허용된 GPM 모션 후보들의 수가 임계 값을 초과하는 경우에, 포맷 규칙은 비트스트림 표현에 하나 이상의 신택스 요소를 포함시키는 것을 지정하는, 방법.
E3. 조항 E1 내지 조항 E2 중 어느 하나 이상의 조항의 방법으로서, 임계 값이 1과 동일한, 방법.
E4. 조항 E1 내지 조항 E3 중 어느 하나 이상의 조항의 방법으로서, 허용된 GPM 모션 후보들의 수가 임계 값 이하인 경우에, 포맷 규칙은 비트스트림 표현에서 신택스 요소를 제외시키는 것을 지정하는, 방법.
B1. 비주얼 미디어 프로세싱 방법으로서,
비주얼 미디어 데이터의 현재 비디오 유닛과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 비트스트림 표현은 최대 변환 블록 크기가 변환에 사용되는 최대 코딩 트리 유닛(CTU) 크기보다 작거나 같다는 것을 지정하는 포맷 규칙에 따라 구성되는, 방법.
B2. 조항 B1의 방법으로서, 포맷 규칙은 최대 CTU 크기에 기초하여 비트스트림 표현에 최대 변환 블록 크기를 나타내는 신택스 요소를 선택적으로 포함시키는 것을 지정하는, 방법.
B3. 조항 B2의 방법으로서, 포맷 규칙은 최대 CTU 크기가 정의된 MxN 블록 크기보다 작거나 같다는 결정에 기초하여 비트스트림 표현에서 최대 변환 블록 크기를 나타내는 신택스 요소를 제외시키는 것을 지정하는, 방법.
B4. 조항 B3의 방법으로서, M =32이고 N=32인, 방법.
C1. 비주얼 미디어 프로세싱 방법으로서,
비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환은 ALF 필터의 계수들이 현재 비디오 블록의 비디오 영역에서의 샘플의 깊이에 기초하는 적응적 루프 필터(ALF)를 사용하는, 방법.
C2. 조항 C1의 방법으로서, ALF 필터 계수들은 크로마 ALF 필터 계수들에 대응하는, 방법.
C3. 조항 C1의 방법으로서, ALF 필터 계수들은 루마 ALF 필터 계수들에 대응하는, 방법.
D1. 비주얼 미디어 프로세싱 방법으로서,
적응적 루프 필터(ALF)를 사용하여 비주얼 미디어 데이터의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 비트스트림 표현은 현재 비디오 블록에 적용되는 ALF 필터가 적응 파라미터 세트(APS)에 기초하여 결정되는지 또는 고정 필터 세트들에 기초하여 결정되는지를 나타내는 하나 이상의 신택스 요소가 비트스트림 표현에 포함된다는 것을 지정하는 포맷 규칙에 따라 구성되는, 방법.
D2. 조항 D1의 방법으로서, 이용 가능한 ALF APS들의 수가 0보다 큰 경우에, 포맷 규칙은 하나 이상의 신택스 요소가 비트스트림 표현에 포함된다는 것을 더 지정하는, 방법.
D3. 조항 D1의 방법으로서, ALF가 APS에 기초하는 경우에, 포맷 규칙은 APS의 인덱스를 나타내는 하나 이상의 신택스 요소가 비트스트림 표현에 포함된다는 것을 더 지정하는, 방법.
D4. 조항 D3의 방법으로서, APS의 인덱스가 코딩 기술을 사용하여 비트스트림 표현에 포함되는, 방법.
D5. 조항 D1의 방법으로서, 코딩 기술은 고정 길이 코딩, 단항 코딩, 절단된 단항 코딩, 절단된 이진 코딩, 또는 지수 골롬 코딩 중 하나를 포함하는, 방법.
L1. 조항 A1 내지 조항 D5 중 어느 하나 이상의 조항의 방법으로서, 변환은 현재 비디오 블록으로부터 비트스트림 표현을 생성하는 것을 포함하는, 방법.
L2. 조항 A1 내지 조항 D5 중 어느 하나 이상의 조항의 방법으로서, 변환은 비트스트림 표현으로부터 현재 비디오 블록의 샘플들을 생성하는 것을 포함하는, 방법.
L3. 조항 A1 내지 조항 D5 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
L4. 코드가 저장된 컴퓨터 판독 가능 매체로서, 코드는, 실행 시에, 프로세서로 하여금 조항 A1 내지 조항 D5 중 어느 하나 이상의 조항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
본 문서에서, "비디오 프로세싱" 또는 "비디오 미디어 프로세싱"이라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제를 지칭할 수 있다. 예를 들어, 비디오의 픽셀 표현으로부터 대응하는 비트스트림 표현으로 또는 그 반대로 변환하는 동안 비디오 압축 알고리즘들이 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이, 비트스트림 내에서 동일 위치에 있거나 상이한 위치들에 분산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록은 변환되고 코딩된 오차 잔차 값들의 관점에서 그리고 또한 헤더들 내의 비트들 및 비트스트림 내의 다른 필드들을 사용하여 인코딩될 수 있다. 게다가, 변환 동안, 디코더는, 위의 해결책들에 설명된 바와 같이, 결정에 기초하여, 일부 필드들이 존재하거나 존재하지 않을 수 있다는 것에 대한 지식으로 비트스트림을 파싱할 수 있다. 유사하게, 인코더는 특정 신택스 필드들이 포함되어야 하는지 여부를 결정할 수 있고, 그에 따라 코딩된 표현에 신택스 필드들을 포함시키거나 그로부터 제외시키는 것에 의해 코딩된 표현을 생성할 수 있다. 개시된 기술들이 서브블록 기반 모션 벡터 개선의 사용을 포함하는 기술들을 사용하여 압축 효율을 개선시키기 위해 비디오 인코더들 또는 디코더들에서 구체화될 수 있다는 것이 이해될 것이다.
전술한 내용으로부터, 현재 개시된 기술의 특정 실시예들이 예시 목적으로 본 명세서에 설명되었지만, 본 발명의 범위를 벗어나지 않고 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 그에 따라, 현재 개시된 기술은 첨부된 청구항들에 의한 경우를 제외하고는 제한되지 않는다.
본 문서에 설명된 개시된 및 다른 해결책들, 예들, 실시예들, 모듈들 및 기능 동작들은 디지털 전자 회로로, 또는 본 문서에 개시된 구조 및 그의 구조적 등가물을 포함한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 다른 실시예들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉 데이터 프로세싱 장치에 의한 실행을 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함한, 데이터를 프로세싱하기 위한 모든 장치, 디바이스, 및 머신을 포괄한다. 장치는, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파 신호는 인공적으로 생성된 신호, 예를 들면, 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성되는 머신 생성 전기, 광학, 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들을 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함한, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 문서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 동작하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 로직 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치가 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크, 또는 광학 디스크를 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 동작 가능하게 결합될 수 있거나, 또는 둘 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들과 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서, 반도체 메모리 디바이스, 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기 디스크, 예를 들면, 내장형 하드 디스크 또는 이동식 디스크; 자기 광학 디스크; 및 CD ROM과 DVD-ROM 디스크를 포함한, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 주제의 범위 또는 청구될 수 있는 것의 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정 기술들의 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명으로서 해석되어야 한다. 개별적인 실시예들의 맥락에서 본 특허 문서에 설명되는 특정한 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과를 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안된다. 더욱이, 본 특허 문서에 설명된 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (8)

  1. 비주얼 미디어 프로세싱 방법으로서,
    비주얼 미디어 데이터의 현재 비디오 유닛과 상기 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며, 상기 비트스트림 표현은 최대 변환 블록 크기가 상기 변환에 사용되는 최대 코딩 트리 유닛(CTU) 크기보다 작거나 같다는 것을 지정하는 포맷 규칙에 따라 구성되는, 방법.
  2. 제1항에 있어서, 상기 포맷 규칙은 상기 최대 CTU 크기에 기초하여 상기 비트스트림 표현에 상기 최대 변환 블록 크기를 나타내는 신택스 요소를 선택적으로 포함시키는 것을 지정하는, 방법.
  3. 제2항에 있어서, 상기 포맷 규칙은 상기 최대 CTU 크기가 정의된 MxN 블록 크기보다 작거나 같다는 결정에 기초하여 상기 비트스트림 표현에서 상기 최대 변환 블록 크기를 나타내는 신택스 요소를 제외시키는 것을 지정하는, 방법.
  4. 제3항에 있어서, M =32이고 N=32인, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 변환은 상기 현재 비디오 블록으로부터 상기 비트스트림 표현을 생성하는 것을 포함하는, 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 변환은 상기 비트스트림 표현으로부터 상기 현재 비디오 블록의 샘플들을 생성하는 것을 포함하는, 방법.
  7. 비디오 프로세싱 장치로서,
    제1항 내지 제4항 중 어느 한 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
  8. 코드가 저장된 컴퓨터 판독 가능 매체로서, 상기 코드는, 실행 시에, 프로세서로 하여금 제1항 내지 제4항 중 어느 한 항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
KR1020227000455A 2019-07-14 2020-07-14 비디오 코딩에서 변환 블록 크기 제한 KR20220030995A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/095921 2019-07-14
CN2019095921 2019-07-14
PCT/CN2020/101819 WO2021008513A1 (en) 2019-07-14 2020-07-14 Transform block size restriction in video coding

Publications (1)

Publication Number Publication Date
KR20220030995A true KR20220030995A (ko) 2022-03-11

Family

ID=74210199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000455A KR20220030995A (ko) 2019-07-14 2020-07-14 비디오 코딩에서 변환 블록 크기 제한

Country Status (6)

Country Link
US (3) US11509893B2 (ko)
EP (1) EP3984215A4 (ko)
JP (2) JP7318099B2 (ko)
KR (1) KR20220030995A (ko)
CN (4) CN114128295B (ko)
WO (3) WO2021008514A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112840654B (zh) * 2018-10-12 2024-04-16 韦勒斯标准与技术协会公司 使用多假设预测的视频信号处理方法和装置
CN113994698B (zh) 2019-06-04 2023-11-24 北京字节跳动网络技术有限公司 有条件地实施运动候选列表构建过程
EP3963890A4 (en) 2019-06-04 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. BUILDING A LIST OF MOVEMENT CANDIDATES USING NEIGHBOR BLOCK INFORMATION
CN114128295B (zh) 2019-07-14 2024-04-12 北京字节跳动网络技术有限公司 视频编解码中几何分割模式候选列表的构建
WO2021057996A1 (en) 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
US20230101542A1 (en) * 2021-09-29 2023-03-30 Tencent America LLC Techniques for constraint flag signaling for range extension with coding for last significant coefficient
CN117957841A (zh) * 2021-10-01 2024-04-30 Lg 电子株式会社 基于gpm的图像编译方法和装置
WO2023200237A1 (ko) * 2022-04-12 2023-10-19 엘지전자 주식회사 기하 분할된 블록에 대한 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체

Family Cites Families (162)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050111545A1 (en) 2003-11-25 2005-05-26 Ram Prabhakar Dynamic packet size control for MPEG-4 data partition mode
CN101502119B (zh) * 2006-08-02 2012-05-23 汤姆逊许可公司 用于视频编码的自适应几何分割方法和设备
CN101415121B (zh) 2007-10-15 2010-09-29 华为技术有限公司 一种自适应的帧预测的方法及装置
EP2173101A3 (en) * 2008-10-06 2010-08-18 LG Electronics Inc. A method and an apparatus for decoding a video signal
TWI428023B (zh) * 2008-11-18 2014-02-21 Ind Tech Res Inst 解碼方法及裝置
KR101098739B1 (ko) * 2008-11-24 2011-12-23 한국전자통신연구원 비디오 신호의 부호화/복호화 장치 및 방법
US9036692B2 (en) 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
KR101500914B1 (ko) 2010-04-09 2015-03-10 미쓰비시덴키 가부시키가이샤 동화상 복호 장치
US9819966B2 (en) * 2010-09-01 2017-11-14 Qualcomm Incorporated Filter description signaling for multi-filter adaptive filtering
US9807424B2 (en) 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
CN102611880B (zh) * 2011-01-19 2015-02-04 华为技术有限公司 标识图像块几何划分模式的编解码方法和设备
US9001883B2 (en) * 2011-02-16 2015-04-07 Mediatek Inc Method and apparatus for slice common information sharing
US9826238B2 (en) * 2011-06-30 2017-11-21 Qualcomm Incorporated Signaling syntax elements for transform coefficients for sub-sets of a leaf-level coding unit
JP5884697B2 (ja) 2011-09-28 2016-03-15 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム
US20130107973A1 (en) 2011-10-28 2013-05-02 Qualcomm Incorporated Loop filtering control over tile boundaries
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
US9538200B2 (en) * 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9549180B2 (en) 2012-04-20 2017-01-17 Qualcomm Incorporated Disparity vector generation for inter-view prediction for video coding
US20130294513A1 (en) 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
US20130329007A1 (en) 2012-06-06 2013-12-12 Qualcomm Incorporated Redundancy removal for advanced motion vector prediction (amvp) in three-dimensional (3d) video coding
US20130336406A1 (en) 2012-06-14 2013-12-19 Qualcomm Incorporated Redundancy removal for merge/skip mode motion information candidate list construction
US9749645B2 (en) 2012-06-22 2017-08-29 Microsoft Technology Licensing, Llc Coded-block-flag coding and derivation
US9088770B2 (en) 2012-08-15 2015-07-21 Intel Corporation Size based transform unit context derivation
US20140071235A1 (en) 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
US9491461B2 (en) 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
US9699450B2 (en) 2012-10-04 2017-07-04 Qualcomm Incorporated Inter-view predicted motion vector for 3D video
US9924168B2 (en) 2012-10-05 2018-03-20 Hfi Innovation Inc. Method and apparatus of motion vector derivation 3D video coding
US9357214B2 (en) 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced merge/skip mode and advanced motion vector prediction (AMVP) mode for 3D video
US9948939B2 (en) 2012-12-07 2018-04-17 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US9538180B2 (en) 2012-12-17 2017-01-03 Qualcomm Incorporated Motion vector prediction in video coding
WO2014165555A1 (en) 2013-04-02 2014-10-09 Vid Scale, Inc. Enhanced temporal motion vector prediction for scalable video coding
US9609347B2 (en) 2013-04-04 2017-03-28 Qualcomm Incorporated Advanced merge mode for three-dimensional (3D) video coding
WO2014170547A1 (en) * 2013-04-17 2014-10-23 Nokia Corporation An apparatus, a method and a computer program for video coding and decoding
US9225991B2 (en) * 2013-05-30 2015-12-29 Apple Inc. Adaptive color space transform coding
US9288507B2 (en) 2013-06-21 2016-03-15 Qualcomm Incorporated More accurate advanced residual prediction (ARP) for texture coding
US9800895B2 (en) 2013-06-27 2017-10-24 Qualcomm Incorporated Depth oriented inter-view motion vector prediction
WO2015003383A1 (en) 2013-07-12 2015-01-15 Mediatek Singapore Pte. Ltd. Methods for inter-view motion prediction
US10045014B2 (en) 2013-07-15 2018-08-07 Mediatek Singapore Pte. Ltd. Method of disparity derived depth coding in 3D video coding
CA2917419C (en) 2013-07-24 2020-07-14 Microsoft Technology Licensing, Llc Scanning orders for non-transform coding
US20150078457A1 (en) * 2013-09-13 2015-03-19 Qualcomm Incorporated Representation format signaling in multi-layer video coding
US9762927B2 (en) * 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
WO2015053697A1 (en) * 2013-10-11 2015-04-16 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for transcoding a video bitstream
CN105794206B (zh) 2013-11-15 2018-12-28 联发科技股份有限公司 用于重建视频的自适应环路滤波方法
US9432685B2 (en) 2013-12-06 2016-08-30 Qualcomm Incorporated Scalable implementation for parallel motion estimation regions
KR101847899B1 (ko) * 2014-02-12 2018-04-12 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
WO2015131387A1 (en) 2014-03-07 2015-09-11 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
CA2939170A1 (en) 2014-03-13 2015-09-17 Qualcomm Incorporated Constrained depth intra mode coding for 3d video coding
CN103942793B (zh) 2014-04-16 2016-11-16 上海交通大学 基于热扩散的视频一致运动区域检测方法
CN105409221B (zh) * 2014-04-29 2020-03-06 微软技术许可有限责任公司 用于样本自适应偏移滤波的编码器侧决策
EP3155812B1 (en) 2014-06-16 2023-04-05 QUALCOMM Incorporated Simplified shifting merge candidate and merge list derivation in 3d-hevc
US10327001B2 (en) * 2014-06-19 2019-06-18 Qualcomm Incorporated Systems and methods for intra-block copy
CN106464921B (zh) 2014-06-19 2019-10-15 Vid拓展公司 用于块内复制搜索增强的方法和***
EP3180917B1 (en) * 2014-09-01 2022-04-20 HFI Innovation Inc. Method of intra picture block copy for screen content and video coding
CN107079157B (zh) 2014-09-12 2020-12-22 Vid拓展公司 用于视频编码的分量间去相关
JP2017532885A (ja) 2014-09-26 2017-11-02 ヴィド スケール インコーポレイテッド 時間ブロックベクトル予測を用いたイントラブロックコピー符号化
GB2531003A (en) 2014-10-06 2016-04-13 Canon Kk Method and apparatus for vector encoding in video coding and decoding
US9918105B2 (en) * 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US9854237B2 (en) 2014-10-14 2017-12-26 Qualcomm Incorporated AMVP and merge candidate list derivation for intra BC and inter prediction unification
US11477477B2 (en) 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
EP3251353A1 (en) 2015-01-29 2017-12-06 VID SCALE, Inc. Palette coding modes and palette flipping
US10057574B2 (en) * 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
US10362331B2 (en) * 2015-03-02 2019-07-23 Hfi Innovation Inc. Method and apparatus for intraBC mode with fractional-pel block vector resolution in video coding
US10356416B2 (en) 2015-06-09 2019-07-16 Qualcomm Incorporated Systems and methods of determining illumination compensation status for video coding
CN105141957B (zh) * 2015-07-31 2019-03-15 广东中星电子有限公司 图像和视频数据编解码的方法和设备
US10511835B2 (en) 2015-09-02 2019-12-17 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
US10218975B2 (en) 2015-09-29 2019-02-26 Qualcomm Incorporated Transform precision manipulation in video coding
US10812822B2 (en) 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
WO2017059415A1 (en) 2015-10-02 2017-04-06 Vid Scale, Inc. Color correction with a lookup table
US20170150186A1 (en) 2015-11-25 2017-05-25 Qualcomm Incorporated Flexible transform tree structure in video coding
US11405611B2 (en) 2016-02-15 2022-08-02 Qualcomm Incorporated Predicting filter coefficients from fixed filters for video coding
EP3430808A4 (en) * 2016-03-16 2020-01-15 Mediatek Inc. METHOD AND DEVICE FOR PROCESSING VIDEO DATA WITH RESTRICTED BLOCK SIZE IN VIDEO CODING
JP2019519972A (ja) 2016-05-05 2019-07-11 ヴィド スケール インコーポレイテッド イントラコーディングのための制御点ベースのイントラ方向表現
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US10419755B2 (en) * 2016-05-16 2019-09-17 Qualcomm Incorporated Confusion of multiple filters in adaptive loop filtering in video coding
US20180041778A1 (en) 2016-08-02 2018-02-08 Qualcomm Incorporated Geometry transformation-based adaptive loop filtering
US10326986B2 (en) 2016-08-15 2019-06-18 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10271069B2 (en) * 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention
US10721489B2 (en) 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10448010B2 (en) 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
CN109983773A (zh) 2016-11-29 2019-07-05 联发科技股份有限公司 用于合并模式推导的视频编解码方法和装置
US20180184127A1 (en) 2016-12-22 2018-06-28 Qualcomm Incorporated Determining neighboring samples for bilateral filtering in video coding
US10506230B2 (en) 2017-01-04 2019-12-10 Qualcomm Incorporated Modified adaptive loop filter temporal prediction for temporal scalability support
US11025903B2 (en) 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
CN106961606B (zh) * 2017-01-26 2020-04-07 浙江工业大学 基于纹理划分特征的hevc帧内编码模式选择方法
US20180242024A1 (en) * 2017-02-21 2018-08-23 Mediatek Inc. Methods and Apparatuses of Candidate Set Determination for Quad-tree Plus Binary-tree Splitting Blocks
KR102559063B1 (ko) * 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
AU2018230328B2 (en) * 2017-03-10 2021-05-06 Hfi Innovation Inc. Method and apparatus of implicit intra coding tool settings with intra directional prediction modes for video coding
US10778974B2 (en) 2017-07-05 2020-09-15 Qualcomm Incorporated Adaptive loop filter with enhanced classification methods
US11172203B2 (en) 2017-08-08 2021-11-09 Mediatek Inc. Intra merge prediction
CN116744018A (zh) 2017-08-29 2023-09-12 Sk电信有限公司 视频编码方法、视频解码方法和传输比特流的方法
CN111567045A (zh) 2017-10-10 2020-08-21 韩国电子通信研究院 使用帧间预测信息的方法和装置
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
CN117478880A (zh) 2017-10-16 2024-01-30 数字洞察力有限公司 用于将图像编码/解码的方法和存储比特流的记录介质
US20190116374A1 (en) 2017-10-17 2019-04-18 Qualcomm Incorporated Coding motion information of video data using coding structure-based candidate list construction
WO2019079611A1 (en) 2017-10-18 2019-04-25 Huawei Technologies Co., Ltd. GENERATION OF MOVEMENT VECTOR CANDIDATES LIST DEPENDING ON THE AVAILABILITY OF A NEIGHBORING BLOCK
JP2021016016A (ja) 2017-10-20 2021-02-12 シャープ株式会社 動画像符号化装置及び動画像復号装置
EP3704858A1 (en) 2017-11-01 2020-09-09 Vid Scale, Inc. Methods for simplifying adaptive loop filter in video coding
EP3711299A1 (en) 2017-11-14 2020-09-23 Qualcomm Incorporated Unified merge candidate list usage
US10721469B2 (en) 2017-11-28 2020-07-21 Qualcomm Incorporated Line buffer reduction for adaptive loop filtering in video coding
US20190208225A1 (en) * 2018-01-02 2019-07-04 Qualcomm Incorporated Sign prediction in video coding
US11388398B2 (en) 2018-01-11 2022-07-12 Qualcomm Incorporated Video coding using local illumination compensation
US20190238845A1 (en) 2018-01-26 2019-08-01 Qualcomm Incorporated Adaptive loop filtering on deblocking filter results in video coding
JP2021514162A (ja) 2018-02-22 2021-06-03 エルジー エレクトロニクス インコーポレイティド 映像コーディングシステムにおけるブロック分割構造による映像デコーディング方法及び装置
US20190306502A1 (en) 2018-04-02 2019-10-03 Qualcomm Incorporated System and method for improved adaptive loop filtering
CN117294837A (zh) 2018-04-02 2023-12-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
US10506251B2 (en) 2018-05-08 2019-12-10 Tencent America LLC Method and apparatus for video coding
US10397603B1 (en) 2018-05-08 2019-08-27 Tencent America LLC Method and apparatus for video coding
WO2020003258A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Virtual merge candidates
CN110662059B (zh) 2018-06-29 2021-04-20 北京字节跳动网络技术有限公司 使用查找表存储先前编码的运动信息并用其编码后续块的方法和装置
CN110662054B (zh) 2018-06-29 2023-01-06 北京字节跳动网络技术有限公司 用于视频处理的方法、装置、计算机可读存储介质
WO2020008330A1 (en) 2018-07-01 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Priority-based non-adjacent merge design
TWI734133B (zh) 2018-07-02 2021-07-21 大陸商北京字節跳動網絡技術有限公司 更新查找表的規則
US10531090B1 (en) 2018-07-02 2020-01-07 Tencent America LLC Method and apparatus for video coding
US11051010B2 (en) 2018-07-18 2021-06-29 Mediatek Inc. Merge candidates with multiple hypothesis
US10523963B1 (en) 2018-07-30 2019-12-31 Tencent America LLC Method and apparatus for merge mode in video coding
US10362330B1 (en) 2018-07-30 2019-07-23 Tencent America LLC Combining history-based motion vector prediction and non-adjacent merge prediction
CN110858906B (zh) 2018-08-26 2023-05-30 北京字节跳动网络技术有限公司 组合的基于历史的运动矢量预测符和多运动模型解码
TW202025760A (zh) 2018-09-12 2020-07-01 大陸商北京字節跳動網絡技術有限公司 要檢查多少個hmvp候選
CN112740685B (zh) * 2018-09-19 2024-06-07 韩国电子通信研究院 图像编码/解码方法和装置以及存储有比特流的记录介质
CN110944183B (zh) 2018-09-23 2023-09-05 北京字节跳动网络技术有限公司 在帧间模式下利用非子块空时运动矢量预测
TWI822863B (zh) 2018-09-27 2023-11-21 美商Vid衡器股份有限公司 360度視訊寫碼樣本導出
WO2020084556A1 (en) 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block motion candidate list in video coding
WO2020088689A1 (en) 2018-11-02 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Usage of hmvp candidates in geometry partition prediction mode
WO2020094049A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Extensions of inter prediction with geometric partitioning
EP3847814A4 (en) 2018-11-06 2021-07-14 Beijing Bytedance Network Technology Co. Ltd. POSITION DEPENDENT STORAGE, MOVEMENT INFORMATION
WO2020094151A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in pairwise average candidate calculations
WO2020098695A1 (en) 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
WO2020098713A1 (en) 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for prediction
WO2020098810A1 (en) 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with motion vector difference in video processing
CN117528076A (zh) 2018-11-22 2024-02-06 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的构建方法
CN113170106A (zh) 2018-11-28 2021-07-23 北京字节跳动网络技术有限公司 帧内块复制模式中运动参考的扩展方法
CN113170182B (zh) 2018-12-03 2024-01-26 北京字节跳动网络技术有限公司 不同预测模式下的修剪方法
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
JP7343097B2 (ja) 2018-12-29 2023-09-12 エスゼット ディージェイアイ テクノロジー カンパニー リミテッド 動画処理方法、装置、およびコンピュータプログラム
WO2020140242A1 (zh) 2019-01-03 2020-07-09 北京大学 视频处理方法和装置
JP7275286B2 (ja) 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302919A (zh) 2019-01-17 2021-08-24 北京字节跳动网络技术有限公司 在视频处理中使用虚拟候选预测和加权预测
US10904557B2 (en) 2019-01-22 2021-01-26 Tencent America LLC Method and apparatus for video coding
CN113647109A (zh) 2019-02-17 2021-11-12 北京字节跳动网络技术有限公司 帧内块复制(ibc)模式和非ibc帧间模式的运动候选列表构建
BR112021016925A2 (pt) 2019-02-27 2021-11-03 Huawei Tech Co Ltd Codificador, decodificador e métodos correspondentes
WO2020175893A1 (ko) 2019-02-28 2020-09-03 엘지전자 주식회사 Aps 시그널링 기반 비디오 또는 영상 코딩
WO2020185889A1 (en) 2019-03-11 2020-09-17 Futurewei Technologies, Inc. Sub-picture level filtering in video coding
KR20210134038A (ko) 2019-03-13 2021-11-08 에스지 디제이아이 테크놀러지 코., 엘티디 비디오 처리 방법 및 기기
CN117499644A (zh) 2019-03-14 2024-02-02 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
BR112021018509A2 (pt) 2019-03-24 2021-11-23 Beijing Bytedance Network Tech Co Ltd Método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador
KR20230157529A (ko) 2019-04-01 2023-11-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 히스토리 기반 움직임 벡터 예측을 위한 보간 필터 사용
CN115914627A (zh) 2019-04-15 2023-04-04 北京字节跳动网络技术有限公司 自适应环路滤波器中的裁剪参数推导
CN113767623B (zh) 2019-04-16 2024-04-02 北京字节跳动网络技术有限公司 用于视频编解码的自适应环路滤波
US11284114B2 (en) 2019-04-23 2022-03-22 Qualcomm Incorporated Adaptive loop filter set index signaling
KR20210135337A (ko) 2019-05-14 2021-11-12 엘지전자 주식회사 적응적 루프 필터 기반 비디오 또는 영상 코딩
US11019334B2 (en) 2019-05-17 2021-05-25 Qualcomm Incorporated Multiple adaptive loop filter sets for video coding
EP3963890A4 (en) 2019-06-04 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. BUILDING A LIST OF MOVEMENT CANDIDATES USING NEIGHBOR BLOCK INFORMATION
CN113994698B (zh) 2019-06-04 2023-11-24 北京字节跳动网络技术有限公司 有条件地实施运动候选列表构建过程
US11166033B2 (en) 2019-06-06 2021-11-02 Qualcomm Incorporated Adaptation parameter set in access unit in video coding
US11736688B2 (en) 2019-06-21 2023-08-22 Qualcomm Incorporated Adaptive loop filter signalling
CN114128295B (zh) 2019-07-14 2024-04-12 北京字节跳动网络技术有限公司 视频编解码中几何分割模式候选列表的构建
WO2021057996A1 (en) 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
US11432016B2 (en) 2019-12-05 2022-08-30 Hfi Innovation Inc. Methods and apparatuses of syntax signaling constraint for cross-component adaptive loop filter in video coding system
US11563980B2 (en) * 2020-04-02 2023-01-24 Qualcomm Incorporated General constraint information syntax in video coding

Also Published As

Publication number Publication date
CN114128295B (zh) 2024-04-12
CN114175636B (zh) 2024-01-12
WO2021008513A1 (en) 2021-01-21
CN114128258A (zh) 2022-03-01
US11647186B2 (en) 2023-05-09
CN114128295A (zh) 2022-03-01
JP7318099B2 (ja) 2023-07-31
EP3984215A1 (en) 2022-04-20
JP2023126565A (ja) 2023-09-07
CN117354547A (zh) 2024-01-05
WO2021008514A1 (en) 2021-01-21
CN114175636A (zh) 2022-03-11
JP2022541012A (ja) 2022-09-21
EP3984215A4 (en) 2022-08-24
US20220132119A1 (en) 2022-04-28
US20220132118A1 (en) 2022-04-28
US20230231997A1 (en) 2023-07-20
US11509893B2 (en) 2022-11-22
CN114128258B (zh) 2023-12-22
WO2021008511A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
KR102662449B1 (ko) 디코더 측 정제 툴들의 크기 선택 적용
JP7446339B2 (ja) 幾何学的分割モードコーディングを用いた動き候補リスト
WO2020259426A1 (en) Motion candidate list construction for intra block copy mode
CN114128258B (zh) 视频编解码中的变换块尺寸的限制
WO2020244659A1 (en) Interactions between sub-block based intra block copy and different coding tools
WO2020244660A1 (en) Motion candidate list construction for video coding
KR102627821B1 (ko) 이웃 블록 정보를 사용한 모션 후보 리스트 구성
WO2020248925A1 (en) History-based motion vector prediction with default parameters

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal