KR20220058551A - 비디오 코딩의 양 예측 가중 샘플 - Google Patents

비디오 코딩의 양 예측 가중 샘플 Download PDF

Info

Publication number
KR20220058551A
KR20220058551A KR1020227007458A KR20227007458A KR20220058551A KR 20220058551 A KR20220058551 A KR 20220058551A KR 1020227007458 A KR1020227007458 A KR 1020227007458A KR 20227007458 A KR20227007458 A KR 20227007458A KR 20220058551 A KR20220058551 A KR 20220058551A
Authority
KR
South Korea
Prior art keywords
block
prediction
video
sample
weights
Prior art date
Application number
KR1020227007458A
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 KR20220058551A publication Critical patent/KR20220058551A/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/103Selection of coding mode or of prediction mode
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

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

Abstract

비디오 처리 방법이 개시된다. 이 방법은: 비디오의 현재 블록과 비디오의 코딩 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출하는 단계 및 이 예측 블록을 사용하여 변환을 수행하는 단계를 포함하되, 상기 예측 블록의 도출 단계는: 각각 2개의 초기 예측 블록들에 속하는 2개의 중간 예측 샘플들에 가중치를 적용하여 최종 예측 샘플을 도출하는 단계 및 최종 예측 샘플에 대해 우측 시프트 연산을 수행하여 최종 예측 샘플의 비트심도를 변환하는 단계- 우측 시프트 연산이 bSample >> (shift1+3))이고, 여기서 pbSample은 상기 최종 예측 샘플을 나타내고, shift1이 Max(2, 14 - bitDepth)로 설정됨-; 및 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함한다.

Description

비디오 코딩의 양 예측 가중 샘플
관련 출원들과의 상호 참조
파리 조약에 따른 적용 가능한 특허법 및/또는 법령들에 따라, 본원은 2019년 9월 13일 출원된 국제특허출원 제PCT/CN2019/105825호에 대한 우선권을 기한 내에 주장한다. 법률에 따른 모든 목적들을 위해, 전술한 출원의 전체 개시내용은 본원의 개시의 일부에 참고로 포함된다.
본 발명은 비디오 및 이미지 코딩 및 디코딩 기술에 관한 것이다.
디지털 비디오는 인터넷과 다른 디지털 통신 네트워크들에 사용되는 최대 대역폭을 차지한다. 비디오를 수신 및 표시할 수 있는 연결된 사용자 기기들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 요구는 계속 증가할 것이다.
디지털 비디오 처리에 관련되고, 구체적으로 비디오 처리에서 병치 움직임 벡터(allocated motion vector)에 관련된 장치, 시스템, 및 방법들이 설명된다. 설명된 (본 발명) 방법은 (예를 들어 고효율 비디오 코딩(High Efficiency Video Coding; HEVC) 등) 기존의 비디오 코딩 표준뿐 아니라 (예를 들어 다용도 비디오 코딩(Versatile Video Coding; VVC) 등) 미래의 비디오 코딩 표준 또는 코덱(codec)들의 양자에 적용될 수 있다.
하나의 예시적 국면(aspect)에서, 비디오 처리 방법이 개시된다. 방법은 비디오의 비디오 블록의 병치 비디오 블록이 인터 코딩 모드(inter coding mode) 또는 비 인터 코딩 모드(non-inter coding mode)로 코딩되었는지 여부에 대해 제1 판단하는 단계; 제1 판단에 기반하여 병치 비디오 블록에 대한 움직임 벡터(motion vector)의 사용 가능성(availability) 또는 병치 벡터에 대한 움직임 벡터의 도출 모드(derivation mode)에 대해 제2 판단하는 단계; 및 제2 판단에 기반하여 비디오 블록과 이 비디오의 코딩된 표현(coded representation) 간의 변환(conversion)을 수행하는 단계를 포함한다.
다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 비디오 블록과 이 비디오의 코딩된 표현 간의 변환을 위해 비디오 블록의 병치된 비디오 블록의 참조 인덱스(reference index) 또는 참조 목록에 기반하여 하나 이상의 병치된 움직임 벡터들을 결정하는 단계; 및 결정에 기반하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기(initial) 예측 블록들의 가중합(weighted sum)의 결정에 가중치들이 사용되는 양방향 코딩 유닛 수준 가중(bi-directional coding unit level weighting; BCW) 툴에 따라 결정된 예측 블록(prediction block)을 도출하는 단계 및 이 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는데, 여기서 예측 블록의 도출 단계가: 최종 예측 샘플을 도출할 2개의 초기 예측 블록들에 각각 속하는 2개의 중간(intermediate) 예측 샘플들에 가중치들을 적용하는 단계로, 최종 예측 샘플의 비트심도(bit depth)를 변환하기 위해 최종 예측 샘플에 우측 시프트 연산(right shift operation)을 수행하는 단계 - pbSample은 최종 예측 샘플을 나타내고 shift1이 Max(2, 14 - bitDepth)로 설정될 때 우측 시프트 연산은 pbSample>> (shift1+3)임-, 및 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기 예측 블록들의 가중합의 결정에 가중치들이 사용되는 양방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정된 예측 블록을 도출하는 단계와, 및 이 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는데, 여기서 예측 블록의 도출 단계는: 최종 예측 샘플을 도출할 2개의 초기 예측 블록들에 각각 속하는 2개의 중간 예측 샘플들에 가중치들을 적용하는 단계 및 최종 예측 샘플에 오프셋을 가산하는 단계를 포함하되, 오프셋은 1 << ( shift1 + 2 )이고, shift1은 Max(2, 14 - bitDepth)로 설정되며, 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 현재 블록에 대한 병합 모드 움직임 벡터 예측자(predictor)에 대한 움직임 벡터 차이를 규칙에 따라 도출하는 단계와; 및 이 도출 단계에 기반하여 변환을 수행하는 단계를 포함하는데, 여기서 규칙은 움직임 벡터 차이를 움직임 벡터들의 클리핑(clipping)에 사용한 범위와 동일한 범위로 클리핑(clip)할지 여부를 규정한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기 예측 블록들의 가중합의 결정에 가중치들이 사용되는 양방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정된 예측 블록을 도출하는 단계-이 가중치들의 적어도 하나가 가중치 테이블(weight table)에 속하고, 이 가중치 테이블은 규칙에 따라 조직됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는데, 여기서 규칙은 가중치 테이블의 엔트리(entry)들이 단조 증가(non-monotonically increasing)하지 않도록 규정한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기 예측 블록들의 가중합의 결정에 가중치들이 사용되는 양방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정된 예측 블록을 도출하는 단계- 이 가중치들의 적어도 하나가 가중치 테이블에 속하고, 이 가중치 테이블은 복수의 가중치 테이블들 중에서 선택됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기 예측 블록들의 가중합의 결정에 가중치들이 사용되는 양방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정된 예측 블록을 도출하는 단계와; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는데, 여기서 예측 블록의 도출 단계는: 중간 예측 샘플을 제1 비트심도로 변환하는 단계; 최종 예측 샘플을 도출하기 위해 중간 예측 샘플에 가중치를 적용하는 단계; 및 이 최종 예측 샘플을 제2 비트심도로 변환하는 단계를 포함한다.
또 다른 예시적 국면에서, 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록을 결정하는 데 사용되는 2개의 초기 예측 블록들의 가중합의 결정에 제1 가중치와 제2 가중치가 사용되는 양방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정된 예측 블록을 도출하는 단계 -여기서 제1 가중치 및 제2 가중치 중의 적어도 하나가 가중치 테이블에 포함되고, 이 가중치 테이블은 규칙에 따라 조직됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는데, 규칙은 가중치 테이블이 비대칭이라고 규정한다.
또 다른 예시적 국면에서, 전술한 방법은 프로세서를 포함하는 비디오 인코더 장치로 구현될 수 있다.
또 다른 예시적 국면에서, 이 방법들은 프로세서로 실행 가능한(processor-executable) 명령(instruction)들의 형태로 구현되어 컴퓨터 독출 가능한(computer-readable) 프로그램 매체에 저장될 수 있다.
이들 및 다른 국면들은 이 명세서에 더 상세히 기재되어 있다.
도 1은 예시적 인코더의 블록도를 보여준다.
도 2는 67개의 인트라 예측 모드들을 보여준다.
도 3은 수평 및 수직 횡단 주사의 예를 보여준다.
도 4는 시간 병합 후보들에 대한 움직임 벡터 스케일링의 예를 보여준다.
도 5는 시간 병합 후보의 후보 위치를 보여준다.
도 6a는 대체적 시간 움직임 벡터 예측(Alternative Temporal Motion Vector Prediction; ATMVP)에 사용되는 공간적 이웃 블록들의 예를 보여준다.
도 6b는 도출 서브 CU 동작 필드의 예를 보여준다.
도 7은 움직임 벡터 차이에 의한 병합(MMVD) 모드에 대한 탐색점의 예를 보여준다.
도 8은 비디오 처리 방법의 하나의 예를 보이는 흐름도이다.
도 9는 비디오 처리 방법의 다른 예를 보이는 흐름도이다.
도 10은 비디오 처리 방법의 또 다른 예를 보이는 흐름도이다.
도 11은 비디오 처리 방법의 또 다른 예를 보이는 흐름도이다.
도 12는 비디오 처리 방법의 또 다른 예를 보이는 흐름도이다.
도 13은 비디오 처리 방법의 또 다른 예를 보이는 흐름도이다.
도 14a 및 14b는 이 명세서에 기재된 시각 매체 디코딩 또는 시각 매체 인코딩 기법을 구현하는 하드웨어 플랫폼의 예의 블록도들이다.
도 15a 내지 15e는 본 발명 기술의 일부 구현예들에 기반한 예시적 비디오 처리의 흐름도들이다.
이 명세서는 이미지 또는 비디오 비트스트림(bitstream)의 디코더에 사용되어 압축 해제(decompressed) 또는 디코딩된(decoded) 디지털 비디오 또는 이미지들의 화질을 개선하는 여러 가지 기법들을 제공한다. 간결성을 위해, 이 명세서에 사용된 "비디오(video)"라는 용어는 화면들의 시퀀스(sequence)(전통적으로 비디오로 지칭) 및 개별적인 이미지들 양자를 포함한다. 뿐만 아니라, 비디오 인코더 역시 추가적 인코딩을 위해 디코딩된 프레임들의 복원(reconstruct)을 위해 인코딩 프로세스 동안 이 기법들을 구현할 수 있다.
이 명세서에 사용된 섹션의 제목들은 이해의 편의를 위한 것이며 실시예와 기법들을 해당 섹션으로 제한하는 것이 아니다. 이에 따라 한 섹션으로부터의 실시예들이 다른 섹션들로부터의 실시예들과 조합될 수도 있다.
1. 요약(Summary)
본 발명은 비디오 코딩 기술에 관련된다. 구체적으로, 본 발명은 병치 움직임 벡터 및 다른 코딩 툴들에 관련된다. 이는 HEVC 등 기존의 비디오 코딩 표준, 또는 최종화될 표준(다용도 비디오 코딩; Versatile Video Coding)에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준 또는 비디오 코덱에 적용될 수 있다.
2. 서론(Initial Discussion)
비디오 코딩 표준은 주로 잘 알려진 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 고도 비디오 코딩(Advanced Video Coding; AVC) 및 H.265/HEVC 표준들을 산출했다. 비디오 코딩 표준 H.262부터, 비디오 코딩 표준들은 시간적 예측(temporal prediction) 더하기 변환 코딩(transform coding)이 사용되는 하이브리드 비디오 코딩 구조에 기반했다. HVEC 너머의 미래 비디오 기술의 탐색을 위해, 협동 비디오 탐색 팀(Joint Video Exploration Team; JVET)이 2015년 VCEG와 MPEG에 의해 공동으로 설립되었다. 그 이후, 많은 새로운 방법들이 JVET에 채택되어 협동 탐색 모델(Joint Exploration Model; JEM)로 명명된 기준 소프트웨어에 편입되었다. 2018년 4월에, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간에, HEVC에 비해 50% 비트속도(bitrate) 저감을 목표로 VVC 표준에 대해 작업하는 협동 비디오 전문가 팀(Joint Video Expert Team; JVET)이 결성되었다.
2.1 색 공간과 크로마 서브샘플링(Color space and chroma subsampling)
색 모델(또는 색 시스템)로도 지칭되는 색 공간은 색의 범위를 전형적으로 3 또는 4개의 값들 또는 (예를 들어 RGB 등의) 색 요소들의 수들의 투플(tuple)들로 간단히 기술하는 추상적(abstract) 수학 모델이다. 기본적으로 말해, 색 공간은 좌표계와 서브공간(sub-space)의 합작(elaboration)이다.
비디오 압축을 위해 가장 흔하게 사용되는 색 공간은 YCbCr 및 RGB이다. YCBCR 또는 Y'CBCR로도 표기되는 YCbCr, Y′CbCr, 또는 Y Pb/Cb Pr/Cr는 비디오 및 디지털 사진 시스템에서 컬러 이미지 파이프라인(pipeline)의 일부로 사용되는 색 공간들의 패밀리(family)이다. Y′는 루마 성분(luma component)이고 CB 및 CR들은 청색 색차(blue-difference) 및 적색 색차(red-difference) 크로마 성분(chroma component)들이다. (콤마(prime)가 찍힌) Y′는 Y와 구별되는데, 이는 루마(luminance, 루미넌스)를 나타내고, 광도(light intensity)가 감마 수정된(gamma corrected) RGB 원색(primary)들에 기반하여 비선형적으로 인코딩되었음을 의미한다.
크로마 서브샘플링은 루마 차이보다 색상 차이에 덜 민감한 인간 시각계를 이용하여 크로마 정보에 대한 해상도를 루마 정보보다 더 낮게 하여 이미지들을 인코딩하는 관행(practice)이다.
2.1.1 4:4:4
3개의 Y'CbCr 성분들의 각각은 동일한 샘플링 속도(sample rate)를 가지며, 이에 따라 크로마 서브샘플링이 존재하지 않는다. 이 체계는 때로 고급(high-end) 필름 스캐너 및 영화 후반 작업(cinematic post production)에 사용된다.
2.1.2 4:2:2
2개의 크로마 성분들이 루마의 절반의 샘플링 속도로 샘플링되는데(sampled): 수평 크로마 해상도가 반감된다. 이는 거의 없는(little to no) 시각적 차이로 압축되지 않은 비디오 신호의 대역폭(bandwidth)을 1/3만큼 축소시킨다.
2.1.3 4:2:0
4:2:0에서는, 수평 샘플링이 4:1:1에 비해 배증되지만, 이 체계에서 Cb 및 Cr 채널들이 한 라인(line) 걸러마다 샘플링되므로 수직 해상도가 반감된다. Cb 및 Cr들은 각각 수평 및 수직 양자에서 2의 인자(factor)로 서브샘플링 된다(subsampled). 다른 수평 및 수직 위치(siting)들을 갖는 4:2:0 체계의 3개의 변형들이 존재한다.
MPEG-2에서, Cb 및 Cr들은 수평으로 병치된다(cosite). Cb 및 Cr는 수직 방향으로 픽셀(pixel)들 간에 위치된다(사이에(interstitially) 위치된다).
JPEG/JFIF, H.261, 및 MPEG-1에서는, Cb 및 Cr들이 하나 걸러(alternate)의 루마 샘플들 간의 중간 사이에 위치된다.
4:2:0 DV에서는, Cb 및 Cr들이 수평 방향으로 병치된다. 수직 방향으로는 이들이 번갈아가며 라인들 상에 병치된다.
2.2 전형적 비디오 코덱의 코딩 흐름(Coding flow of a typical video codec)
도 1은 VVC의 인코더 블록의 예를 보이는데, 이는 3개의 인루프(in-loop) 필터링 블록들: 디블록킹 필터(deblocking filter; DF), 적응적 샘플 오프셋(sample adaptive offset; SAO), 및 ALF을 포함한다. 사전 정의된 필터들을 사용하는 DF와 달리, SAO 및 ALF는 현재 화면(picture)의 원래의 샘플들을 사용하여, 오프셋 및 필터 계수를 시그널링하는 코딩된 부가 정보로 각각 오프셋을 가산하고 유한 임펄스 응답(finite impulse response; FIR) 필터를 적용함으로써 원래의 샘플들과 복원 샘플들 간의 평균 제곱 오차(mean square error)를 감소시킨다. ALF는 각 화면의 마지막 처리 스테이지(processing stage)에 위치하며 이전 스테이지들에서 생성된 아티팩트(artifact)들을 포착 및 수정하여 노력하는 툴(tool)로 간주될 수 있다.
2.3 67개의 인트라 예측 모드들을 갖는 인트라 모드 코딩(Intra mode coding with 67 intra prediction modes)
자연스러운 비디오의 임의의 윤곽 방향(edge direction)들을 포착하기 위해, HEVC에서 사용되던 33개의 방향성(directional) 인트라 모드들의 수가 65개로 확장되었다. 추가적인 방향성 모드들은 도 2에서 적색 점선 화살표들로 묘사 되고, 평면(planar) 모드와 DC 모드는 동일하게 남아있다. 이 더 밀집한 방향성 예측 모드들이 모든 블록 크기들과 루마 및 크로마 인트라 예측의 양자에 적용된다.
기존(conventional) 각(angular) 인트라 예측 방향들은 도 2에 보인 바와 같이 45도 내지 -135도의 시계방향으로 정의된다. VTM6에서는, 정사각형이 아닌(non-square) 블록들에 대해 몇 개의 전통적 각 인트라 예측 모드들이 광각(wide-angle) 인트라 예측 모드들로 적응적 대체된다(adaptively replaced). 대체된 모드들은 원래의 방법을 사용하여 시그널링되고 파싱(parsing) 후 광각 모드들의 인덱스들로 리매핑된다(remapped). 인트라 예측 모드들의 전체 수는 불변, 즉 67이고 인트라 모드 코딩도 불변이다.
HEVC에서는, 모든 인트라 코딩된 블록들은 정사각형 형태를 가지고 각 측변의 길이는 2의 멱(power)이다. 이에 따라, DC 모드를 사용하여 인트라 예측자(intra-predictor)를 생성하는 데 분할 연산이 필요하지 않다. VVC에서는, 일반적인 경우 블록들은 블록 당 나눗셈 연산을 필요로 하는 직사각형 형태를 가질 수 있다. DC 예측을 위한 나눗셈 연산을 피하기 위해 정사각형이 아닌 블록들의 평균을 연산하는 데 더 긴 측변만이 사용된다.
2.4 인터 예측(Inter prediction)
각 인터 예측된 CU에 대해, 동작(혹은 움직임) 파라미터(motion parameter)들은 움직임 벡터들, 참조 화면 인덱스들과 참조 화면 목록 사용(usage) 인덱스, 및 인터 예측된 샘플 생성에 사용될 VVC의 새로운 코딩 특징에 필요한 추가적 정보로 구성된다. 동작 파라미터는 명시적 또는 암묵적 방식으로 시그널링될 수 있다. CU가 스킵 모드(skip mode)로 코딩되면, CU는 하나의 PU와 연계되고, 주요(significant) 잔차 계수도, 코딩된 움직임 벡터 델타(delta)도, 참조 화면 인덱스(reference picture index)도 갖지 않는다. 병합 모드(merge mode)가 규정됨으로써, 공간적 및 시간적 후보를 포함하여 이웃 CU와 VVC에 도입된 추가적인 스케줄로부터 현재 CU에 대한 동작 파라미터가 획득될 수 있다. 병합 모드는 스킵 모드에 대해서 뿐 아니라 어떤 인터 예측된 CU에도 적용될 수 있다. 병합 모드에 대한 대안은 동작 파라미터들의 명시적인 전송인데, 움직임 벡터와, 각 참조 화면 목록에 대한 대응 참조 화면 인덱스와 참조 화면 목록 사용 플래그(flag)와, 및 다른 필요한 정보가 각 CU 당(per) 명시적으로 시그널링된다.
2.5 인트라 블록 복사(Intra block copy; IBC)
인트라 블록 복사(IBC)는 SCC에 대한 HEVC 확장에 채택된 툴이다. 이것이 화면 콘텐츠 자료(screen content materials)의 코딩 효율을 현저히 개선한다는 것이 잘 알려져 있다. IBC 모드가 블록 수준의 코딩 모드에서 구현되므로, 각 CU에 대한 최적 블록 벡터(또는 움직임 벡터)를 파악하기 위해 블록 정합(block matching; BM)이 인코더에서 수행된다. 여기서 블록 벡터는 현재 블록으로부터, 이미 현재 화면 내부에 복원된 참조 블록까지의 변위(displacement)를 표시하는 데 사용된다. IBC 코딩된 CU의 루마 블록 벡터는 정수 정도(integer precision)이다. 크로마 블록 벡터 역시 마찬가지로 정수 정도(혹은 정밀도)를 갖는다. AMVR과 조합될 때, IBC 모두는 1-픽셀과 4-픽셀 움직임 벡터 정도들 간에 전환될 수 있다. IBC 코딩된 CU는 인트라 또는 인터 예측 모드들 이외의 제3의 예측 모드로 취급된다. IBC 모드는 폭과 높이 양자가 64 루마 샘플 이하인 CU들에 적용 가능하다.
인코더 측에서, 해시 기반(hash-based) 동작 추정(motion estimation)이 IBC에 대해 수행된다. 인코더는 16 루마 샘플보다 크지 않은 폭 또는 높이의 블록들에 대한 RD 점검(check)을 수행한다. 비 병합 모드에 대해, 해시 기반 탐색을 먼저 사용하여 블록 벡터 탐색이 수행된다. 해시 탐색이 유효한 후보를 회신(return)하지 않으면, 블록 정합 기반 국부적(local) 탐색이 수행될 것이다.
해시 기반 탐색에서, 현재 블록과 참조 블록 간의 해시 키 정합(hash key matching)(32-bit CRC)이 모든 허용된 블록 크기들로 확장된다. 현재 화면 내의 모든 위치들에 대한 해시 키 연산은 4x4 서브블록(sub-block)들에 기반한다. 더 큰 크기의 현재 블록에 대해서는, 모든 4x4 서브 블록들의 해시 키들이 대응 참조 위치들의 해시 키들과 정합될 때 해시 키가 참조 블록의 그것과 정합되도록 결정된다. 복수의 참조 블록들의 해시 키들이 현재 블록의 그것과 정합되는 것으로 파악되면, 각 정합된 참조의 블록 벡터 경비(cost)들이 연산되고, 최저 경비의 것이 선택된다.
블록 정합 탐색에서, 탐색 범위는 이전 및 현재 CTU들의 양자를 포괄하도록 설정된다.
CU 수준에서, IBC 모드는 플래그와 함께 시그널링되며, 이는 다음과 같이 IBC AMVP 모드 또는 IBC 스킵/병합 모드로 시그널링될 수 있다:
- IBC 스킵/병합 모드: 병합 후보 인덱스가 이웃 후보 IBC 코딩된 블록들로부터의 목록 내의 블록 벡터들 중의 어느 것이 현재 블록의 예측에 사용될지를 표시하는 데 사용된다.
- IBC AMVP 모드: 블록 벡터 차이들이 움직임 벡터 차이로서와 동일한 방식으로 코딩된다. 블록 벡터 예측 모드는 2개의 후보들을 예측자들로 사용하는데, (IBC코딩이라면) 하나는 좌측 이웃으로부터이고 하나는 위 이웃으로부터이다. 어느 이웃이건 사용이 불가능하면, 디폴트(default) 블록 벡터가 예측자로 사용될 것이다. 플래그가 시그널링되어 블록 벡터 예측자 인덱스를 표시한다.
2.6 팔레트 모드(Palette Mode)
팔레트 모드 시그널링(signaling)을 위해, 팔레트 모드가 코딩 유닛에 대한 예측 모드로 코딩, 즉 코딩 유닛에 대한 예측 모드들이 MODE_INTRA, MODE_INTER, MODE_IBC, 및 MODE_PLT가 될 수 있다. 팔레트 모드가 사용되면, CU 내의 픽셀 값(pixel value)들은 대표적 색 값(representative colour value)들의 작은 집합(set)으로 표현된다. 이 집합은 팔레트로 지칭된다. 팔레트 색들에 가까운 색들을 갖는 픽셀들에 대해 팔레트 인덱스들이 시그널링된다. 팔레트 밖의 값들을 가지는 픽셀들에 대해서는, 픽셀이 이탈 심볼(escape symbol)로 표기되고 양자화된(quantized) 픽셀 값들이 직접 시그널링된다.
팔레트 인코딩된 블록을 디코딩하기 위해서는, 디코더가 팔레트 색과 인덱스들을 디코딩할 필요가 있다. 팔레트 색들은 팔레트 테이블로 기재되고, 팔레트 테이블 코딩 툴에 의해 인코딩된다. 이탈 플래그(escape flag)가 현재 CU에 이탈 심볼들이 존재하는지 표시하도록 각 CU에 대해 시그널링된다. 이탈 심볼이 존재하면, 팔레트 테이블은 1만큼 증가되고 마지막 인덱스가 이탈 모드에 할당된다. CU 내의 모든 픽셀들의 팔레트 인덱스들이 팔레트 인덱스 맵을 형성하고 팔레트 인덱스 맵 코딩 툴에 의해 인코딩된다.
팔레트 테이블의 코딩을 위해, 팔레트 예측자가 유지된다. 이 예측자는 예측자가 0으로 리셋되는 각 슬라이스(slice)의 시작에서 초기화된다. 팔레트 예측자의 각 엔트리에 대해, 재사용 플래그(reuse flag)가 시그널링되어 이 엔트리가 현재 팔레트의 일부인지 여부를 표시한다. 재사용 플래그는 0들(zeros)의 연장 길이(run-length) 코딩을 사용하여 송신된다. 이에 이어 새로운 팔레트 엔트리들의 수가 0차(order) 지수 골롬 코드(exponential Golomb code)를 사용하여 시그널링된다. 마지막으로, 새로운 팔레트 엔트리들의 성분 값들이 시그널링된다. 현재 CU를 인코딩한 다음, 현재 팔레트를 사용하여 이전 팔레트 예측자가 갱신되고, 현재 팔레트에서 재사용되지 않는 이전 팔레트 예측자로부터의 엔트리들은 허용된 최대 크기에 도달할 때까지 새로운 팔레트 예측자의 끝에 추가될 것이다(팔레트 채우기; palette stuffing).
팔레트 인덱스 맵의 코딩을 위해, 인덱스들은 도 3에 보인 바와 같이 수평 및 수직 횡단 주사(scan)들을 사용하여 코딩된다. 이 주사 순서는 palette_transpose_flag을 사용하여 비트스트림 내에 명시적으로 시그널링된다.
팔레트 인덱스들은 2개의 주된 팔레트 샘플 모드: 'INDEX' 및 'COPY_ABOVE'들을 사용하여 코딩된다. 이 모드는 수평 주사가 사용될 때 상단(top) 행(row)을, 수직 주사가 사용되거나 이전 모드가 'COPY_ABOVE'였을 때 제1 열을 제외한 플래그를 사용하여 시그널링된다. 'COPY_ABOVE' 모드에서는, 위 행의 샘플의 팔레트 인덱스가 복사된다. 'INDEX' 모드에서는, 팔레트 인덱스가 명시적으로 시그널링된다. 'INDEX' 및 'COPY_ABOVE' 모드 양자에 대해, 동일한 모드를 사용하여 코딩되는 픽셀 수를 규정하는 연장 값(run value)이 시그널링된다.
인덱스 맵에 대한 인코딩 순서는 다음과 같다: 먼저 CU에 대한 인덱스 값들의 수가 시그널링된다. 이어서 전체 CU에 대한 실제 인덱스 값들이 절단 2진 코딩(truncated binary coding)을 사용하여 시그널링된다. 인덱스들의 수와 함께 인덱스 값들의 양자가 우회 모드(bypass mode)로 코딩된다. 이는 인덱스 관련 우회 빈(bin)들을 함께 그룹으로 묶는다. 이어서 팔레트 모드(INDEX 또는 COPY_ABOVE) 및 연장(run)들이 인터리브 방식(interleaved manner)으로 시그널링된다. 마지막으로, 전체 CU에 대한 이탈 샘플들에 해당하는 성분 이탈 값들이 그룹으로 묶여 우회 모드로 코딩된다. 추가적인 신택스 요소(syntax element), last_run_type_flag이 인덱스 값들을 시그널링한 다음 시그널링된다. 이 신택스 요소는 인덱스들과 함께 블록 내의 마지막 연장(run)에 대한 연장 값을 시그널링할 필요를 제거한다.
VTM5.0에서, 이중 트리(dual tree)가 루마(Luma) 및 크로마(Chroma)에 대한 코딩 유닛 구획(coding unit partitioning)을 분리하는 I 슬라이스에 대해 이네이블된다(enabled). 이에 따라, 이 제안에서 팔레트는 루마(Y 성분)와 크로마(Cb 및 Cr 성분들)에 별도로 적용된다. 이중 트리가 디스에이블 되면, 팔레트는 HEVC 팔레트에서와 같이 Y, Cb, Cr 성분들에 공통으로 적용될 것이다.
2.7 VVC에서 시간적 움직임 벡터 예측(Temporal motion vector prediction(TMVP) in VVC)
이 시간적 병합 후보들의 도출에서, 스케일링(크기 조정)된(scaled) 움직임 벡터가 병치된(collocated) 참조 화면에 속하는 병치(co-located) CU에 기반하여 도출된다. 병치 CU의 도출에 사용될 참조 화면 목록이 슬라이스 헤더(slice header)에 명시적으로 시그널링된다. 시간적 병합 후보를 위한 크기 조정된 움직임 벡터가 도 4에 점선으로 도시된 바와 같이 얻어지는데, 이는 병치 CU의 움직임 벡터로부터 POC 거리, tb 및 td를 사용하여 크기 조정되는데, 여기서 tb는 현재 화면의 참조 화면과 현재 화면 간의 POC 차이가 되도록 정의되고, td는 병치 화면의 참조 화면과 병치 화면 간의 POC 차이가 되도록 정의된다. 시간적 병합 후보의 참조 화면 인덱스는 0으로 설정된다.
시간적 후보에 대한 위치가 도 5에 보인 바와 같이 후보 C0 및 C1, 간에서 선택된다. 위치 C0에서의 CU가 사용 불가능하면, 인트라 코딩되거나, 또는 CTU들의 현재 행 외부에 있으면 위치 C1이 사용된다. 그렇지 않으면 위치 C0가 시간적 병합 후보의 도출에 사용된다.
2.8 VVC에서 서브블록 기반 시간적 움직임 벡터 예측(Subblock-based temporal motion vector prediction (SbTMVP) in VVC)
VTM은 서브블록 기반 시간적 움직임 벡터 예측(subblock-based temporal motion vector prediction; SbTMVP) 방법을 지원한다. HEVC에서의 시간적 움직임 벡터 예측(temporal motion vector prediction; TMVP)과 마찬가지로, SbTMVP는 병치 화면의 동작 필드(motion field)를 사용하여 움직임 벡터 예측과 현재 화면 내의 CU들에 대한 병합 모드를 향상시킨다. TMVP에 사용되는 동일한 병치 화면이 SbTVMP에 사용된다. SbTMVP는 TMVP와 다음 2가지 주된 국면들에서 다르다:
1. TMVP는 CU 수준에서 동작을 예측하지만 SbTMVP는 서브 CU 수준에서 동작을 예측한다.
2. TMVP가 병치 화면의 병치 블록(병치 블록은 현재 CU에 대해 하단(bottom)-좌측 또는 중앙 블록)으로부터 시간적 움직임 벡터를 페치(fetch)하는 반면, SbTMVP는 병치 화면으로부터 시간적 동작 정보를 페치하기 전에 동작 시프트(motion shift)를 적용하는데, 이 동작 시프트는 현재 CU의 공간적 이웃 블록들 중의 하나로부터의 움직임 벡터에서 얻어진다.
SbTVMP 프로세스는 도 6에 도시되어 있다. SbTMVP는 현재 CU 내의 서브CU들의 움직임 벡터들을 2단계로 예측한다. 제1 단계에서 도 6a의 공간적 이웃 A1이 시험된다(examined). A1이 병치 화면을 그 참조 화면으로 사용하는 움직임 벡터를 갖는다면, 이 움직임 벡터는 적용될 동작 시프트가 되도록 선택된다, 이러한 동작이 식별되지 않으면 동작 시프트는 (0, 0)으로 설정된다.
제2 단계에서, 단계 1에서 식별된 동작 시프트가 적용(즉 현재 블록의 좌표에 가산)되는데, 이는 도 6b에 도시된 바와 같이 병치 화면으로부터 서브CU 수준의 동작 정보(움직임 벡터와 참조 인덱스들)를 얻기 위함이다. 도 6b의 예는 동작 시프트가 블록 A1의 동작으로 설정된다고 가정한다. 이어서 각 서브CU에 대해, 병치 화면의 그 대응 블록(중앙 샘플을 포괄하는 최소 동작 격자(grid))이 서브CU에 대한 동작 정보를 도출하는 데 사용된다. 병치 서브CU의 동작 정보가 식별된 후, 이는 HEVC의 TMVP 프로세스와 유사한 방식으로 현재 서브CU의 움직임 벡터와 참조 인덱스로 변환되는데, 시간적 움직임 벡터의 참조 화면을 현재 CU의 그것과 정렬시키도록 시간적 동작 크기 조정(scaling)이 적용된다.
VTM6에서, SbTVMP 후보와 아핀(affine) 병합 후보 양자를 포함하는 조합 서브블록 기반 병합 목록이 서브블록 기반 병합 모드의 시그널링에 사용된다. SbTVMP 모드는 시퀀스 파라미터 집합(sequence parameter set; SPS) 플래그에 의해 이네이블/디스에이블 된다. SbTMVP 모드가 이네이블되면, SbTMVP 예측자가 서브블록 기반 병합 후보들의 목록의 제1 엔트리로 추가되고, 아핀 병합 후보들이 이어진다. 서브블록 기반 병합 목록의 크기가 SPS에서 시그널링되는데, 서브블록 기반 병합 목록의 허용 가능한 최대 크기는 VTM6에서 5이다.
SbTMVP에서 사용되는 서브CU는 8x8로 고정되고, 아핀 병합 모드에서 수행된 바와 같이, SbTMVP 모드는 폭 및 높이 모두 8 이상인 CU에만 적용 가능하다.
추가적인 SbTMVP 병합 후보의 인코딩 로직은 다른 병합 후보들에 대한 것과 동일, 즉 P 또는 B 슬라이스의 각 CU에 대해 추가적인 RD 점검이 수행하는데, 이는SbTMVP 후보를 사용할지 여부를 결정하기 위함이다.
작업 초안에서의 TMVP 및 SbTMVP의 설명(Description of TMVP and SbTMVP in working Draft)
8.5.2.11 시간적 루마 움직임 벡터 예측의 도출 프로세스(Derivation process for temporal luma motion vector prediction)
이 프로세스에 대한 입력들은:
- 현재 화면의 상단-좌측 루마 샘플에 대한 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치(xCb, yCb),
- 루마 샘플들의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,
- 루마 샘플들의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight,
- X가 0 또는 1인 참조 인덱스 refIdxLX.
이 프로세스의 출력들은:
- 1/16 분수 샘플 정도(혹은 정확도)(fractional-sample accuracy)에서의 움직임 벡터 예측 mvLXCol,
- 사용 가능성(availability) 플래그 availableFlagLXCol.
변수 currCb는 루마 위치(xCb, yCb)에서의 현재 루마 코딩 블록을 규정한다.
변수 mvLXCol 및 availableFlagLXCol들은 다음과 같이 도출된다:
- slice_temporal_mvp_enabled_flag이 0이거나 (cbWidth * cbHeight)가 32 이하이면, mvLXCol의 양 성분들 모두 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
- 그 외의 경우(slice_temporal_mvp_enabled_flag이 1이면), 다음 순서의 단계들이 적용된다:
1. 하단 우측 병치 움직임 벡터와 하단 및 우측 경계(boundary) 샘플 위치들이 다음과 같이 적용된다:
xColBr = xCb + cbWidth (8-421)
yColBr = yCb + cbHeight (8-422)
rightBoundaryPos = subpic_treated_as_pic_flag[SubPicIdx] ?
SubPicRightBoundaryPos : pic_width_in_luma_samples - 1 (8-423)
botBoundaryPos = subpic_treated_as_pic_flag[SubPicIdx] ?
SubPicBotBoundaryPos : pic_height_in_luma_samples - 1 (8-424)
yCb >> CtbLog2SizeY가 yColBr >> CtbLog2SizeY와 같고, yColBr이 botBoundaryPos이하이며 xColBr이 rightBoundaryPos 이하이면, 다음이 적용된다:
변수 colCb는 ColPic으로 규정되는 병치 화면 내부의 ((xColBr >> 3) << 3, (yColBr >> 3) << 3)로 주어지는 수정 위치를 포괄하는 루마 코딩 블록을 규정한다.
루마 위치(xColCb, yColCb)는 ColPic으로 규정되는 병치 화면의 상단 좌측 루마 샘플에 대한, colCb로 규정되는 병치 루마 코딩 블록의 상단-좌측 샘플과 동일하게 설정된다.
조항(clause) 8.5.2.12에 규정되는 병치 움직임 벡터들에 대한 도출 프로세스는 currCb, colCb, (xColCb, yColCb), refIdxLX, 및 sbFlag가 입력으로서 0으로 설정될 것을 요구하고, 출력은 mvLXCol 및 availableFlagLXCol로 설정된다.
그렇지 않으면, mvLXCol의 양 성분들 모두가 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
2. availableFlagLXCol이 0이면, 중앙 병치 움직임 벡터는 다음과 같이 도출된다:
xColCtr = xCb + (cbWidth >> 1) (8-425)
yColCtr = yCb + (cbHeight >> 1) (8-426)
변수 colCb는 ColPic으로 규정되는 병치 화면 내부의 ((xColCtr >> 3) << 3, (yColCtr >> 3) << 3)로 주어지는 수정 위치를 포괄하는 루마 코딩 블록을 규정한다.
루마 위치(xColCb, yColCb)는 ColPic으로 규정되는 병치 화면의 상단 좌측 루마 샘플에 대한, colCb로 규정되는 병치 루마 코딩 블록의 상단-좌측 샘플과 동일하게 설정된다.
조항 8.5.2.12에 규정되는 병치 움직임 벡터들에 대한 도출 프로세스는 currCb, colCb, (xColCb, yColCb), refIdxLX, 및 sbFlag가 입력으로서 0으로 설정될 것을 요구하고, 출력은 mvLXCol 및 availableFlagLXCol로 설정된다.
8.5.2.12 병치 움직임 벡터들의 도출 프로세스(Derivation process for collocated motion vectors)
이 프로세스에 대한 입력들은:
- 현재 코딩 블록을 규정하는 변수 currCb,
- ColPic으로 규정되는 병치 화면 내부의 병치 코딩 블록을 규정하는 변수 colCb,
- ColPic으로 규정되는 병치 화면의 상단-좌측 루마 샘플에 대한, ColCb로 규정되는 병치 코딩 블록의 상단-좌측 샘플로 규정되는 루마 위치(xColCb, yColCb),
- X가 0 또는 1인, 참조 인덱스 refIdxLX,
- 서브블록 시간적 병합 후보 sbFlag를 표시하는 플래그.
이 프로세스의 출력들은:
- 1/16 분수 샘플 정도의 움직임 벡터 예측 mvLXCol,
- 사용 가능성 플래그 availableFlagLXCol.
변수 currPic는 현재 화면을 규정한다.
배열 predFlagL0Col[x][y], mvL0Col[x][y], 및 refIdxL0Col[x][y]들은 PredFlagL0[x][y]와 같게 설정되고, 병치 화면의 MvDmvrL0[x][y] 및 RefIdxL0[x][y]들은 각각 ColPic으로 규정되며, 그리고 행렬 predFlagL1Col[x][y], mvL1Col[x][y], 및 refIdxL1Col[x][y]들은 PredFlagL1[x][y]와 같게 설정되고, 병치 화면의 MvDmvrL1[x][y] 및 RefIdxL1[x][y]들은 각각 ColPicd로 규정된다.
변수 mvLXCol 및 availableFlagLXCol들은 다음과 같이 도출된다:
- colCb가 인트라 또는 IBC 예측 모드로 코딩되면, mvLXCol의 양 성분들 모두 0으로 설정되고 availableFlagLXCol가 0으로 설정된다.
- 그 외의 경우, 움직임 벡터 mvCol, 참조 인덱스 refIdxCol, 및 참조 목록 식별자(identifier) listCol들이 다음과 같이 도출된다.
2.8.1 ColCb가 인터 블록으로 코딩되는 때 병치 움직임 벡터들의 도출(Derivation for collocated motion vectors when colCb is coded in an inter block)
- 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들은 각각 N이 collocated_from_l0_flag의 값인 mvLNCol[xColCb][yColCb], refIdxLNCol[xColCb][yColCb] 및 LN과 동일하게 설정된다.
- 그렇지 않으면(sbFlag이 1이면), 다음이 적용된다:
- PredFlagLXCol[xColCb][yColCb]가 1이면, mvCol, refIdxCol, 및 listCol들은 각각 mvLXCol[xColCb][yColCb], refIdxLXCol[xColCb][yColCb], 및 LX로 설정되고, availableFlagLXCol이 1로 설정된다.
- 그렇지 않으면(PredFlagLXCol[xColCb][yColCb]가 0이면), 다음이 적용된다:
- NoBackwardPredFlag 이 1이고 PredFlagLYCol[xColCb][yColCb]가 1이면, mvCol, refIdxCol, 및 listCol들은 Y가 !X일 때 각각 mvLYCol[xColCb][yColCb], refIdxLYCol[xColCb][yColCb] 및 LY와 동일하게 설정되는데, 여기서 X는 이 프로세스가 availableFlagLXCol이 1과 동일할 것을 요구할 때의 X의 값이다.
- 그렇지 않으면, 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-427)
currPocDiff = DiffPicOrderCnt(currPic, RefPicList[X][refIdxLX]) (8-428)
- 조항 8.5.2.15에 규정된 병치 움직임 벡터들에 대한 시간적 동작 버퍼 압축 프로세스는 mvCol를 입력으로 요구하고 수정(modified) mvCol을 출력으로 한다.
- RefPicList[X][refIdxLX]가 장기(long-term) 참조 화면이거나 colPocDiff가 currPocDiff와 동일하면, mvLXCol은 다음과 같이 도출된다:
mvLXCol=mvCol (8-429)
- 그렇지 않으면, mvLXCol는 다음과 같이 움직임 벡터 mvCol의 크기 조정된 버전(scaled version)(스케일링된 버전)으로 도출된다:
tx=(16384+(Abs(td)>>1))/td (8-430)
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6) (8-431)
mvLXCol = Clip3(-131072,131071,(distScaleFactor*mvCol + 128 - (distScaleFactor*mvCol >= 0))>>8)) (8-432)
여기서 td 및 tb들은 다음과 같이 도출된다:
td=Clip3(-128,127,colPocDiff) (8-433)
tb=Clip3(-128,127,currPocDiff) (8-434)
2.9 CU 수준 가중치를 갖는 양 예측(BCW)(Bi-prediction with CU-level weight(BCW))
HEVC에서, 양 예측(bi-prediction) 신호는 2개의 다른 참조 화면들로부터 얻어진 2개의 예측 신호들을 평균하거나 및/또는 2개의 다른 움직임 벡터들을 사용하여 생성된다. VTM6에서, 양 예측 모드는 2개의 예측 신호들의 가중 평균을 허용하기 위해 단순한 평균 이상으로 확장된다.
P bi-ped = ((8-w)*P 0 + w*P 1 +4) >> 3 (3-19)
5개의 가중치 w∈{-2,3,4,5,10}들이 가중 평균 양 예측에 허용된다. 각 양 예측 CU에 대해, 가중치(w)는 다음 두 방식 중 하나로 결정되는데: 1) 비 병합 CU에 대해서는 가중치 인덱스가 움직임 벡터 차이 다음에 시그널링되고; 2) 병합 CU에 대해서는 가중치 인덱스는 병합 후보 인덱스에 기반하여 이웃 블록들로부터 추론(infer)된다. 가중 평균 양 예측은 256개 이상의 루마 샘플들을 갖는 CU(즉 CU 폭 곱하기 CU 높이가 256 이상인 CU)들에만 적용된다. 저지연(low-delay) 화면에 대해서는 모두 5개의 가중치들이 사용된다. 저지연이 아닌 화면들에 대해서는 단지 3개의 가중치(w∈{3,4,5})들이 사용된다.
- 인코더에서, 인코더 복잡성을 현저히 증가시키지 않고 가중치 인덱스를 파악하는 고속 탐색 알고리즘(fast search algorithm)들이 적용된다. 이 알고리즘들은 다음과 같이 요약된다. 추가적 상세에 대해서는 VTM 소프트웨어와 문서 JVET-L0646를 참조할 수 있다. AMVR과 조합할 때, 같지 않은(unequal) 가중치들은 현재 화면이 저지연 화면이라면 1 픽셀 및 4 픽셀 움직임 벡터 정도들에 대해서만 조건부로(conditionally) 점검된다.
- 아핀과 조합될 때, 아핀 모드가 현재 최선인 모드로 선택될 때만(if and only if) 같지 않은 가중치들에 대해 아핀 ME가 수행될 것이다.
- 양 예측에서 2개의 참조 화면들이 동일하면, 같지 않은 가중치들만 조건적으로 검사된다.
- 현재 화면과 그 참조 화면, 코딩 QP, 및 시간적 수준에 따른 어떤 조건들이 충족되면, 같지 않은 가중치들이 탐색되지 않는다.
BCW 가중치 인덱스들은 하나의 컨텍스트 코딩된(context coded) 빈에 이어 우회 코딩된 빈들을 사용하여 코딩된다. 제1의 컨텍스트 코딩된 빈은 같은 가중치가 사용되었는지 표시하고; 같지 않는 가중치들이 사용되면 같지 않은 가중치가 사용되었음을 표시하는 우회 코딩을 사용하여 추가적인 빈들이 시그널링된다.
가중 예측(weighted prediction; WP)은 H.264/AVC 및 HEVC 표준들에 지원되어 페이딩(fading)을 갖는 비디오 콘텐츠(content)를 효율적으로 코딩하는 코딩 툴이다. WP에 대한 지원은 VVC 표준에도 역시 추가되었다. WP는 가중 파라미터들(가중치와 오프셋)이 참조 화면 목록 L0 및 L1 각각의 각 참조 화면에 대해 시그널링되도록 해준다. 이어서 동작 보상(motion compensation) 동안, 해당 참조 화면(들)이 가중치(들)와 오프셋(들)이 적용된다. WP 및 BCW들은 다른 종류의 비디오 콘텐츠에 대해 설계된다. VVC 디코더 설계를 복잡하게 할 WP와 BCW 간의 상호작용을 방지하기 위해, CU가 WP를 사용한다면 BCW 가중치 인덱스는 시그널링되지 않고 w가 4로 추론된다(즉 동일한 가중치가 적용된다). 병합 CU에 대해서는, 가중치 인덱스가 병합 후보 인덱스에 기반하여 이웃 블록들로부터 추론된다. 이는 정상적인 병합 모드와 고유(inherited) 아핀 병합 모드 양자에 적용될 수 있다. 구성(constructed) 아핀 병합 모드에 대래서는, 아핀 동작 정보가 최대 3개의 블록들의 동작 정보에 기반하여 구성된다. 다음 프로세스는 구성 아핀 병합 모드를 사용하여 BCW 인덱스를 도출하는 데 사용된다.
1. BCW 인덱스의 범위 {0,1,2,3,4}를 3개의 그룹들 {0},{1,2,3} 및 {4}로 분할한다. 제어점(control point)의 모든 BCW 인덱스들이 동일한 그룹에서 유래한다면 BCW 인덱스는 단계 2와 같이 도출되고; 그렇지 않으면 2로 설정된다.
적어도 2개의 제어점들이 동일한 BCW 인덱스를 가지면 이 BCW 인덱스 값이 후보에 할당되고; 그렇지 않으면 현재 구성 후보의 BCW 인덱스가 2로 설정된다.
2.10 MVD를 갖는 병합 모드(MMVD)(Merge mode with MVD; MMVD)
병합 모드에 추가하여, 암묵적으로 도출된 동작 정보가 현재 CU의 예측 샘플들의 생성에 직접 사용되면, 움직임 벡터 차이를 갖는 병합 모드(merge mode with motion vector differences; MMVD)가 VVC에 도입된다. MMVD 플래그가 스킵 플래그과 병합 플래그 직후에 시그널링되어 MMVD 모드가 CU에 사용될지 여부를 규정한다.
MMVD에서는, 병합 후보가 선택된 다음, 시그널링된 MVD들의 정보에 의해 더욱 정제(refine)된다. 이 추가적 정보는 병합 후보 플래그와, 동작 크기를 규정하는 인덱스와, 및 동작 방향의 표시를 위한 인덱스를 포함한다. MMVD 모드에서는, 병합 목록의 첫 번째 2개의 후보들에 대한 하나가 선택되어 MV 베이시스(basis)로 사용된다. 병합 플래그는 어는 것이 사용될지를 규정하도록 시그널링된다.
거리 인덱스는 동작 크기 정보를 규정하고 시작점으로부터의 소정의(pre-defined) 오프셋을 표시한다. 도 7에 보인 바와 같이, 시작 MV의 수평 성분 또는 수직 성분의 어느 하나에 오프셋이 가산된다. 거리 인덱스와 소정의 오프셋의 관계는 테이블 1에 규정된다.
테이블 1: 거리 인덱스와 소정의 오프셋의 관계
거리 IDX 0 1 2 3 4 5 6 7
오프셋 (루마 샘플의 단위로) 1/4 1/2 1 2 4 8 16 32
방향 인덱스는 시작점에 대한 MVD의 방향을 나타낸다. 방향 인덱스는 테이블 2에 보인 바와 같이 4개의 방향들을 나타낼 수 있다. MVD 부호(sign)의 의미는 시작 MV들의 정보에 따른 변형(variant)이 될 수 있다. 시작 MV들이 현재 화면의 동일한 측변을 가리키는 양 목록들 모두와 단일 예측(uni-prediction) MV 또는 양 예측(bi-prediction) MV들이면(즉 2개의 참조들이 POC들이 모두 현재 화면의 POC보다 더 크거나, 또는 모두 현재 화면의 POC보다 더 작으면), 테이블 2의 부호는 시작 MV에 가산되는 MV 오프셋의 부호를 규정한다. 시작 MV들이 현재 화면의 다른 측변들을 가리키는 2개의 MV들과 양 예측 MV들이면(즉 한 참조의 POC가 현재 화면의 POC보다 더 크고, 다른 참조의 POC가 현재 화면의 POC보다 더 작으면), 테이블 2의 부호는 시작 MV의 목록 0(list0) MV 성분에 가산되는 MV 오프셋의 부호를 규정하고 목록 1(list1) MV에 대한 부호는 반대 값을 갖는다.
테이블 2: 방향 인덱스로 규정되는 MV 오프셋의 부호
방향 IDX 00 01 10 11
x-축 + - N/A N/A
y-축 N/A N/A + -
2.11 대체적 루마 반 픽셀 보간 필터(Alternative luma half-pel interpolation filters)
JVET-N0309에서는, 대체적인 반 픽셀 보간 필터들이 제안된다.
반 픽셀 루마 보간 필터의 전환은 움직임 벡터 정도(혹은 정확도)(accuracy)에 따라 수행된다. 기존의 1/4 픽셀(quarter-pel), 전체 픽셀(full-pel), 및 4 픽셀 AMVR 모드들에 추가하여, 새로운 반 픽셀 정도(half-pel accuracy) AMVR 모드가 도입된다. 반 픽셀 움직임 벡터 정도의 경우에만, 대체적 반 픽셀 루마 보간 필터가 선택될 수 있다.
2.11.1 반 픽셀 AMVR 모드(Half-pel AMVR mode)
비 아핀 비 병합 인터 코딩된 CU들에 대한 추가적인 AMVR 모드가 제안되었는데, 이는 움직임 벡터 차이를 반 픽셀 정도로 시그널링할 수 있게 해준다. 현재 VVC 초안(draft)에 대한 기존의 AMVR 체계는 다음과 같이 간단하게 확장된다: amvr_flag == 1이면 신택스 요소 amvr_flag을 직접 따르는데, hpel_amvr_flag == 1이면 새로운 반 픽셀 AMVR 모드의 사용을 표시하는 새로운 콘텍스트 모델링된(context-modeled) 이진 신택스 요소 hpel_amvr_flag이 존재한다. 그렇지 않으면, 즉 hpel_amvr_flag == 0이면, 전체 픽셀 및 4 픽셀 AMVR 모드 간의 선택이 현재의 VVC 초안에서와 같이 신택스 요소 amvr_precision_flag으로 표시된다.
2.11.2 대체적 루마 반 픽셀 보간 필터(Alternative luma half-pel interpolation filters)
반 픽셀 움직임 벡터 정도를 사용하는(즉 반 픽셀 AMVR 모드) 비 아핀 비 병합 인터 코딩된 CU들에 대해, HEVC/VVC 반 픽셀 루마 보간 필터와 하나 이상의 대체적인 반 픽셀 보간 간의 전환이 새로운 신택스 요소 if_idx의 값에 기반하여 구성된다. 이 신택스 요소 if_idx는 반 픽셀 AMVR 모드의 경우에만 시그널링된다. 공간적 병합 후보를 사용하는 스킵/병합 모드의 경우, 신택스 요소 if_idx의 값은 이웃 블록으로부터 상속된다(inherited).
2.11.2.1 시험 1: 1개의 대체적 루마 반 픽셀 보간 필터(Test 1: One alternative half-pel interpolation filter)
이 시험의 경우, 보통의 HEVC/VVC 반 픽셀 보간 필터에 대한 대안으로 하나의 6-탭(tap) 보간 필터가 존재한다. 다음 표는 신택스 요소 if_idx의 값과 선택된 반 픽셀 루마 보간 필터 간의 매핑을 보여준다:
if_idx 이진화 필터 보간 필터 계수
0 0 Gauss (6-tap) [0, 3, 9, 20, 20, 9, 3, 0]
1 1 HEVC/VVC (8-tap) [-1, 4, -11, 40, 40, -11, 4, -1]
2.11.2.1 시험 2: 2개의 대체적 루마 반 픽셀 보간 필터들(Test 2: Two alternative half-pel interpolation filters)
이 시험의 경우, 보통의 HEVC/VVC 반 픽셀 보간 필터에 대한 대안으로 2개의 8-탭 보간 필터들이 존재한다. 다음 표는 신택스 요소 if_idx의 값과 선택된 반 픽셀 루마 보간 필터 간의 매핑을 보여준다:
if_idx 이진화 필터 보간 필터 계수
0 0 Filter 1 (8-tap) [3, 6, 10, 13, 13, 10, 6, 3]
1 10 Filter 2 (8-tap) [-1, -1, 9, 25, 25, 9, -1, -1]
2 11 HEVC/VVC (8-tap) [-1, 4, -11, 40, 40, -11, 4, -1]
현재의 CU가 1/2 픽셀, 1 픽셀, 또는 4 픽셀 MV 정도를 채택하는지 여부를 표시하는 amvr_precision_idx가 시그널링된다. 코딩될 2개의 빈들이 존재한다.
디폴트 반 픽셀 보간 필터 또는 대체적 반 픽셀 보간 필터가 사용될지 여부를 표시하는 hpel_if_idx가 시그널링된다. 2개의 대체적 반 픽셀 보간 필터들이 사용된다면, 코딩될 3개의 빈들이 존재한다.
3. 기존의 구현예들의 단점들(Drawbacks of existing implementations)
인터 예측에서 병치 동작 필터의 도출에 대한 현재의 설계는 다음 문제들을 갖는다:
1, TMVP 및 SbTMVP에서의 병치 움직임 벡터들의 도출이 병치 코딩 블록의 예측 모드에 좌우된다. 현재의 VVC에서, 병치 코딩 블록이 인트라 또는 IBC 예측 모드로 코딩되었다면, 병치 움직임 벡터들은 제로(zero) 움직임 벡터와 동일하게 설정된다. 이에 따라, 병치 블록이 팔레트 코딩되더라도, 팔레트 예측 모드에 연계된 움직임 벡터기 없으므로 여전히 정의되지 않은(undefined) 병치 움직임 벡터를 회신(return)할 수 있을 것이다.
2. BCW에서는 가중 샘플 예측의 도출이 효율적이지 않을 수 있다.
3. 현재의 VVC에서는, MV가 18 비트로 클리핑 된다(clipped). 그러나 병합 움직임 벡터 차이는 16 비트로 클리핑 되므로, 정도 손실이라는 결과를 초래할 수 있다.
4. 시그널링된 cu_skip_flag이 부가 비트(overhead bit)들을 유발할 수 있다. 현재의 VVC에서는, IBC에 대한 코딩 유닛의 최대 폭 및 높이는 64이다. I 슬라이스에서 64보다 더 큰 폭 또는 높이의 블록들에 대해서는 cu_skip_flag을 시그널링할 필요가 없다.
5. CU/PU/block이 반 픽셀 또는 해상도가 더 낮은(coarser) MV 성분을 갖지 않을 때라도 대체적 루마 반 픽셀 보간 필터 플래그가 참(true)으로 설정될 수 있다.
4. 비디오 코딩에서 움직임 벡터들을 병치시키는 예시적 방법(Example methods for collocated motion vectors in video coding)
이하의 상세한 실시예들은 (본 발명의) 일반적 개념들을 설명하는 예들로 간주되어야 한다. 이 실시예들은 좁은 방식으로 해석되어서는 안 된다. 뿐만 아니라 이 실시예들은 어떤 방식으로 조합될 수 있다.
병치 움직임 벡터들의 도출(Derivation of the collocated motion vectors)
1. 병치 코딩 블록이 인트라 또는 IBC 코딩되었는지 여부를 점검하는 대신, 병치 움직임 벡터를 도출하는 방법 및/또는 병치 움직임 벡터의 사용 가능성은 병치 코딩 블록의 예측 모드가 인터인지 아닌지 여부에 기반할 수 있다. 이 경우, 각 블록에 대해 4개의 예측 모드들을 저장할 필요 없고, 단지 하나의 1 비트만이 그 블록이 인터인지 비 인터인지 가리키는 데 요구된다.
a. 하나의 예에서, 팔레트 예측 모드로 코딩된 병치 코딩 블록의 경우에 대한 병치 움직임 벡터를 도출하는 방법 및/또는 병치 움직임 벡터의 사용 가능성은 병치 코딩 블록이 인트라/IBC 예측 모드로 코딩된 경우의 그것과 동일할 수 있다.
b. 하나의 예에서, 병치 코딩 블록이 (예를 들어 인트라, 팔레트, 또는 IBC 등의) 비 인터 모드일 때, 병치 움직임 벡터는 사용 불가능한 것으로 설정될 수 있다.
c. 이와는 달리, 병치 코딩 블록이 (예를 들어 인트라, 팔레트, 또는 IBC 등의) 비 인터 모드로 코딩되었을 때, 병치 움직임 벡터가 사용 가능한 것으로 마킹되고(marked), 디폴트 움직임 벡터가 병치 움직임 벡터로 할당될 수 있다.
d. 이와는 달리, 병치 코딩 블록이 비 인터 예측 모드로 코딩되었을 때, (예를 들어 병치 코딩 블록의 하나의 이웃하는 인터 코딩된 블록 등의) 다른 블록들이 대신 점검될 수 있다.
i. 하나의 예에서, 이웃 블록은 가장 가까운 인터 코딩된 좌측/우측/상단/하단 병치 코딩 블록이 될 수 있다.
2. 병치 움직임 벡터들의 결정은 병치 코딩 블록의 참조 목록 및/또는 참조 인덱스들에 따를 수 있다.
a. 하나의 예에서, 병치 코딩 블록의 (예를 들어 L1 등의) 참조 목록(X)의 참조 인덱스가 (예를 들어 0 등의) 특정한 값과 같지 않을 때, (예를 들어 2.8.1에 설명된 종래기술을 사용하여) 움직임 벡터들이 도출될 수 있다.
b. 하나의 예에서, 병치 코딩 블록의 (예를 들어 L1 등의) 참조 목록(X)의 참조 인덱스가 (예를 들어 0 등의) 특정한 값과 같을 때, 병치 움직임 벡터들의 도출이 호출될(invoked) 수 있다.
c. 이와는 달리, 추가적으로 병치 코딩 블록이 (IBC를 포함 또는 제외하여) 비 인터 예측 모드로 코딩되거나, 그 참조 화면이 주어진 조건을 충족하지 못하는 경우, 병치 MV는 사용 불가능한 것으로 설정될 수 있다.
i. 이와는 달리, 병치 MV가 디폴트값으로 설정된다.
BCW의 샘플 예측(Sample prediction of BCW)
3. BCW 코딩 모드에 적용되는 가중치 테이블은 비대칭일 수 있다.
a. 하나의 예에서, 표의 엔트리인 가중치 W에 대해, W가 [a, b]의 범위에 있고 (a+b)가 1이면, (1-W)는 표(테이블)의 엔트리가 될 수 없다.
b. 하나의 예에서, 표의 엔트리인 가중치 W에 대해, W0 및 W1이 각각 2개의 예측 블록(P0, P1)들에 적용되는 2개의 가중치들이고; (W0+W1)이 (1<<N)일 때, (2N-W)은 표의 엔트리가 될 수 없다.
4. BCW 코딩 모드에 적용되는 가중치 표의 가중치들은 단조 증가하는(monotonically increasing) 순서가 아닐 수 있다.
a. 하나의 예에서, 표의 (i+1)번 째 엔트리는 표의 i번 째 엔트리보다 더 작은 값을 가질 수 있다.
5. 하나의 예에서, BCW의 가중 샘플 예측 프로세스는 다른 가중치 룩업 테이블(look up table)에 좌우될 수 있다.
a. 하나의 예에서, {4, 5, 3, 10, 2}/{4, 3, 5, 10, 2}/{4, 5, 3, 10, 1}/{4, 3, 5, 10, 1}/{4, 5, 3, 10, -1}가 BCW의 가중치 룩업 테이블로 사용될 수 있다.
6. 하나의 예에서, BCW의 가중 샘플 예측 프로세스에서 각 예측 방향의 중간(intermediate) 예측 샘플 예측 프로세스는 (예를 들어 제1 비트심도(bit depth)가 중간 예측 샘플의 비트심도와 동일하지 않을 때 필요한 경우) 제1 비트심도로 변환된 다음, 가중 예측이 적용되고 최종 예측 샘플이 제2 비트심도로 변환될 수 있다.
a. 하나의 예에서, 제2 비트심도는 현재 색 성분의 입력 비트심도와 동일하다.
b. 하나의 예에서, 다른 비트심도들 간의 변환에서, (예를 들어 더 깊은 비트심도로부터 더 얕은 비트심도로 샘플을 변환하는 등의) 우측 시프트 또는 (예를 들어 더 얕은 비트심도로부터 더 깊은 비트심도로 샘플을 변환하는 등의) 좌측 시프트가 적용될 수 있다.
i. 이와는 달리, 추가적으로 우측 시프트 또는 좌측 시프트 전에 오프셋이 가산될 수 있다.
c. 하나의 예에서, 제1 비트심도는 중간 예측 샘플의 비트심도와 동일하다. BCW의 가중 샘플 예측은 다음과 같이 도출된다: pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y]+offset3)>>(shift1+3)), 여기서 shift1은 Max(2,14-bitDepth)로 설정되고, 변수 offset3은 1<<(shift1+2)로 설정되며, bitDepth는 현재 색 성분의 비트심도로 설정된다.
d. 하나의 예에서, 제1 비트심도는 현재 색 성분의 입력 비트심도와 동일하다. BCW의 가중 샘플 예측은 다음과 같이 도출될 수 있다: pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (w0 * ((predSamplesL0[x][y] + offset1) >> shift1) + w1*((predSamplesL1[x][y] + offset1) >> shift1)+4)>>3), 여기서 shift1은 Max(2,14-bitDepth)으로 설정되고, 변수 offset1은 1 << (shift1 - 1)로 설정된다.
MMVD 범위(MMVD range)
7. 하나의 예에서, 병합 움직임 벡터 차이는 움직임 벡터와 동일한 범위로 클리핑될 수 있다.
a. 하나의 예에서, 병합 움직임 벡터 차이는 예를 들어 [-217, 217 - 1]인 18 비트로 클리핑될 수 있는데, 이는 VVC에서의 움직임 벡터 범위와 동일하다.
b. 하나의 예에서, 병합 움직임 벡터 차이는 [-217+1, 217 - 1]로 클리핑될 수 있다.
c. 하나의 예에서, 병합 움직임 벡터 차이는 클리핑되지 않을 수 있다.
i. 예를 들어, 병합 움직임 벡터 차이가 움직임 벡터 예측 후보에 가산된 후, 움직임 벡터의 결과는 18 비트로 클리핑된다.
cu_skip_flag의 신호(Signal of the cu_skip_flag)
8. (예를 들어 cu_skip_flag 등) CU/PU/블록이 스킵 모드로 코딩되었는지 여부의 표시가 코딩 블록의 치수(dimensions)에 따라 조건부로 시그널링될 수 있다.
a. 하나의 예에서, 현재 슬라이스 종류가 I 슬라이스이고 sps_ibc_enabled_flag이 참이며, 블록 폭과 블록 높이 양자가 N(N은 정수) 이하이면 (예를 들어 cu_skip_flag 등의) 표시가 시그널링될 수 있다. 예를 들어 N = 64이다.
b. 하나의 예에서, 현재 블록이 IBC 모드로 코딩될 때, 블록 폭과 블록 높이 양자가 N(N은 정수) 이하이면 (예를 들어 cu_skip_flag 등의) 표시가 시그널링될 수 있다. 예를 들어 N = 64이다.
크로마 성분들에 대한 코딩 툴(Coding tools on chroma components)
9. 코딩 툴 X(예를 들어 X는 TMVP/ATMVP/BCW/MMVD/PDPC)가 제1 색 성분의 하나의 블록에 적용될 수 있는지 여부는 이것이 제2 색 성분의 하나 또는 복수의 대응 블록들에 적용될 수 있을지 여부에 따를 수 있다.
a. 하나의 예에서, (예를 들어 크로마 등의) 제1 색 성분 블록에 대한 코딩 툴 X의 사용은 코딩 툴이 (예를 들어 루마 등의) 대응 제2 색 성분에 적용될 때 디스에이블될 수 있다.
b. 하나의 예에서, 예를 들어 크로마 등의) 제1 색 성분 블록에 대한 코딩 툴 X의 사용은 코딩 툴 Y(Y는 X와 다름)가 대응 제2 색 성분에 적용될 때 디스에이블될 수 있다.
c. 하나의 예에서, (플래그 또는 인덱스 등의) 메시지가 조건부로 시그널링되어 코딩 툴 X가 블록의 제1 색 성분에 적용되었는지 여부를 표시할 수 있다. 이 조건은 이것이 대응 제2 색 성분 블록들에 적용되는지 여부로 정의될 수 있다. 이와는 달리, 추가적으로 대응 제2 색 성분에 적용되지 않았다면, 이는 시그널링 없이 블록의 제1 성분들에 적용되지 않는다.
i. 하나의 예에서, 코딩 툴 X는 다른 색 성분들에 다른 방식들로 적용될 수 있다.
1) 코딩 툴 X를 루마 성분과 크로마 성분들에 별도로 적용할 방법에 대해 시그널링 될 수 있다.
d. 하나의 예에서, 제1 색 성분은 크로마 성분이고 제2 색 성분은 루마 성분이다.
e. 하나의 예에서, 제1 색 성분은 하나의 크로마 성분이고 제2 색 성분은 다른 크로마 성분이다.
f. 하나의 예에서, 제1 색 성분은 루마 성분이고 제2 색 성분은 크로마 성분이다.
g. 이상의 논의에서, " 대응 제2 색 성분 블록(corresponding second color component block)"는 제1 색 성분 블록의 적어도 하나의 "대응 샘플(corresponding sample)"을 포괄하는 제2 색 성분을 지칭한다.
i. 하나의 예에서, 제1 색 성분은 크로마 성분이고 제2 색 성분은 루마 성분이다.
ii. 샘플 위치들은 4:4:4 또는 4:2:0 등의 색 포맷(color format)에 따라 스케일링될(scaled) 수 있다. 크로마 블록의 상단-좌측 위치가 (x0, y0)이고, 크로마 블록의 폭 및 높이가 W 및 H라고 가정하면, 그 모든 것이 루마 샘플 단위로 스케일링된다.
iii. 하나의 예에서, 대응 샘플이 (x0, y0)에 위치할 수 있다;
iv. 하나의 예에서, 대응 샘플이 (x0+W-1, y0+H-1)에 위치할 수 있다;
v. 하나의 예에서, 대응 샘플이 (x0+W/2-1, y0+H/2-1)에 위치할 수 있다;
vi. 하나의 예에서, 대응 샘플이 (x0+W/2, y0+H/2)에 위치할 수 있다;
vii. 하나의 예에서, 대응 샘플이 (x0+W/2, y0+H/2-1)에 위치할 수 있다;
viii. 하나의 예에서, 대응 샘플이 (x0+W/2-1, y0+H/2)에 위치할 수 있다;
h. 이상의 논의에서, "크로마 성분들(chroma components)"은 하나 또는 복수의 크로마 성분(one or multiple chroma components)"을 지칭할 수 있다.
10. 크로마 블록의 병치 루마 블록이 어떤 모드들로 코딩되었을 때, 위치 종속 인트라 예측 샘플 필터링 프로세스(일명 PDPC)가 일부 크로마 성분들에 대해 디스에이블될 수 있다.
a. 하나의 예에서, 크로마 블록의 병치 루마 블록이 MIP(매트릭스 기반 인트라 예측; Matrix-based Intra Prediction) 모드로 코딩되었을 때, 이러한 프로세스가 디스에이블될 수 있다.
b. 하나의 예에서, 크로마 블록의 병치 루마 블록이 MRL(다중 참조선; Multiple Reference Line) 모드로 코딩되었을 때, 이러한 프로세스가 디스에이블될 수 있다.
11. CU/PU/블록이 (예를 들어 1/4 픽셀, 1/8 픽셀 등) 반 픽셀보다 더 미세한 정도(finer precision)의 MV 성분만을 가지면 대체적 반 픽셀 보간 필터가 사용되었는지 여부의 표시가 거짓(false)으로 설정될 수 있다. 다시 말해, 대체적 반 픽셀 보간 필터 대신 디폴트 반 픽셀 보간 필터가 사용될 수 있다.
a. 하나의 예에서, MMVD 모드에서 복원 MV가 반 픽셀보다 더 미세한 정도의 MV 성분만을 가지면 이러한 표시가 거짓으로 설정될 수 있다.
b. 하나의 예에서, 쌍별(pair-wise) 병합 모드가 반 픽셀보다 더 미세한정도의 MV 성분만을 가지면 이들에 대한 이러한 표시가 거짓으로 설정될 수 있다.
c. 하나의 예에서, 복원 양(bi-) 예측 동작 정보가 반 픽셀보다 더 미세한정도의 MV 성분만을 가지는 단일(uni-) 예측 동작 정보로 변환되면(예를 들어 4*8 및/또는 8*4 블록 등의 작은 블록들에 적용되면) 이러한 표시가 거짓으로 설정될 수 있다.
12. 일부 경우들에는 대체적 반 픽셀 보간 필터의 사용되었는지 여부의 표시가 항상 거짓으로 설정될 수 있다. 다시 말해, 이 경우들에는 디폴트 반 픽셀 보간 필터가 항상 사용될 수 있다.
a. 하나의 예에서, MMVD 모드에서는 이러한 표시가 항상 거짓으로 설정될 수 있다.
b. 하나의 예에서, MMVD 모드에서 일부 특정한 MVD들이 선택되면 이러한 표시가 항상 거짓으로 설정될 수 있다.
i. 예를 들어, 1/4 픽셀 정도를 갖는 MVD가 선택되면 리허한 표시는 거짓으로 설정될 수 있다.
c. 하나의 예에서, 쌍별 병합 후보들에 대해 이러한 표시가 항상 거짓으로 설정될 수 있다.
d. 하나의 예에서, 복원 양 예측 동작 정보가 단일 예측 정보로 변환되면(예를 들어 4*8 및/또는 8*4 블록 등의 작은 블록들에 적용되면) 이러한 표시가 항상 거짓으로 설정될 수 있다.
일반적 해법들(General solutions)
13. 이상에 개시된 방법들을 적용했는지 및/또는 적용하는 방법이 시퀀스 헤더(header)/화면 헤더/SPS/VPS/DPS/PPS/APS/슬라이스 헤더/타일 그룹(tile group) 헤더 등의 시퀀스 수준/화면 수준/슬라이스 수준/타일 그룹(tile group) 수준으로 시그널링될 수 있다.
전술한 예들은 비디오 디코더 또는 비디오 인코더에 구형될 수 있는 예를 들어 방법 800, 900, 1000, 1100, 1200 및 1300 등 이하에 설명될 방법들의 콘텍스트에 포함될 수 있다.
도 8은 비디오를 처리하는 예시적 방법의 흐름도를 보여준다. 이 방법(800)은 단계 810에서 현재 비디오 블록에 대한 병치 비디오 블록의 예측 모드에 기반하여 하나 이상의 병치 움직임 벡터들의 사용 가능성에 대한 결정(혹은 판단)을 포함한다.
방법(800)은 단계 820에서 하나 이상의 병치 움직임 벡터들에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 포함하는데, 예측 모드의 표시는 현재 비디오 블록이 인터 모드 또는 비 인터 모드로 코딩되었는지 여부를 표시하는 하나의 비트를 포함한다.
도 9는 비디오 처리를 위한 예시적 방법의 흐름도를 보여준다. 방법(900)은 단계 910에서 비디오 블록의 코딩된 표현과 비디오 블록 간의 변환을 위해 비디오 블록의 병치 비디오 블록의 종류의 판단을 포함하는데, 이 종류는 2개의 가능한 값들 중의 하나에만 해당한다.
방법(900)은 단계 920에서 판단에 기반한 변환의 수행을 포함한다.
도 10은 비디오 처리를 위한 예시적 방법의 흐름도를 보여준다. 방법(1000)은 단계 1010에 코딩 유닛(CU) 수준 가중치(BCW) 프로세스를 수반하는 양 예측 모드에 연계된 제1 가중치 테이블에 기반하여 현재 블록에 대한 예측 샘플의 도출을 포함하는데, 제1 가중치 테이블은 비대칭이다.
방법(1000)은 단계 1020에서 예측 샘플에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환의 수행을 포함한다.
도 11은 비디오를 처리하는 예시적 방법의 흐름도를 보여준다. 이 방법(1100)은 단계 1110에 현재 비디오 블록의 치수에 기반하여 현재 비디오 블록의 비트스트림 표현 내의 현재 블록의 스킵 모드 코딩의 표시의 선택적 시그널링에 관한 결정을 포함한다.
방법(1100)은 단계 1120에서 위 판단에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환의 수행을 포함한다.
도 12는 비디오를 처리하는 예시적 방법의 흐름도를 보여준다. 방법(1200)은 단계 1210에서 현재 비디오 블록의 제1 색 성분의 하나 이상의 블록들에 대한 제1 코딩 툴의 적용에 기반하여, 현재 비디오 블록의 제2 색 성분의 적어도 하나의 블록에 대한 제2 코딩 툴의 선택적 적용에 관한 결정을 포함한다.
방법(1200)은 단계 1220에서 위 결정에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환의 수행을 포함한다.
도 13은 비디오를 처리하는 예시적 방법의 흐름도를 보여준다. 방법(1300)은 단계 1310에서 현재 비디오 블록의 움직임 벡터의 정도(precision, 혹은 정밀도)에 기반하여, 디폴트 반 픽셀 보간 필터 대신 대체적 반 픽셀 보간 필터의 사용의 표시의 선택적 시그널링에 관한 결정을 포함한다.
방법(1300)은 단계 1320에서 위 결정에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환의 수행을 포함한다.
본 발명(disclosed technology)의 일부 실시예들은 비디오 처리 툴 또는 모드를 이네이블하는 결정 또는 판단의 수행을 포함한다. 하나의 예에서, 비디오 처리 툴 또는 모드가 이네이블되면, 인코더는 비디오의 블록의 처리에 툴 또는 모드를 사용 또는 구현할 것이나, 툴 또는 모드의 사용에 기반하여 결과적인 비트스트림을 반드시 수정하는 것은 아닐 수 있다. 즉 비디오의 블록으로부터 비디오의 비트스트림으로의 변환은 결정 또는 판단에 기반하여 이네이블될 때 비디오 처리 툴 또는 모드를 사용할 것이다. 다른 예에서, 비디오 처리 툴 또는 모드가 이네이블되면, 디코더는 비트스트림이 비디오 처리 툴 또는 모드에 기반하여 수정되었음을 알고 비트스트림을 처리할 것이다. 즉 비디오의 비트스트림 표현으로부터 비디오의 블록으로의 변환이, 결정 또는 판단에 기반하여 이네이블된 비디오 처리 툴 또는 모드를 사용하여 수행될 것이다.
본 발명의 일부 실시예들은 비디오 처리 툴 또는 모드를 디스에이블하는 결정 또는 판단의 수행을 포함한다. 하나의 예에서, 비디오 처리 툴 또는 모드가 디스에이블되면 인코더는 비디오의 블록으로부터 비디오의 비트스트림 표현으로의 변환에 이 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 처리 툴 또는 모드가 디스에이블되면, 디코더는 결정 또는 판단에 기반하여 디스에이블된 비디오 처리 툴 또는 모드를 사용하여 그 비트스트림이 수정되지 않았음을 알고 비트스트림을 처리할 것이다.
이 명세서에서, "비디오 처리(video processing)"이라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축, 또는 비디오 압축해제를 지칭할 수 있다. 예를 들어, 비디오 압축 알고리즘이 비디오의 픽셀 표현으로부터 대응 비디오 표현으로의 변환 또는 그 역 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은 예를 들어 신택스로 정의된 바와 같이 비트스트림 내의 다른 위치들에 병치 또는 분산된 비트들에 대응된다. 예를 들어, 매크로블록(macroblock)은 변환 및 코딩된 오류 잔차 값(error residual value)에 관해, 또한 비트스트림의 헤더와 다른 필드(field)들의 비트들을 사용하여 인코딩된다.
5. 본 발명의 예시적 실시예들(Exemplary embodiments of the disclosed technology)
변경들은 굵은 이탤릭체로 강조된다. 삭제된 텍스트들은 이중 브래킷으로 표기된다(예를 들어 [[a]]는 문자 "a"의 삭제를 표기한다).
5.1 실시예 #1(Embodiment #1)
JVET-O2001-vE로 규정된 작업 초안(working draft)이 다음과 같이 변경될 수 있다.
8.5.2.12 병치 움직임 벡터의 도출 프로세스(Derivation process for collocated motion vectors)
...
변수 mvLXCol 및 availableFlagLXCol들이 다음과 같이 도출된다:
- colCb가 인트라 또는 팔레트 또는 IBC 예측 모드로 코딩되면, mvLXCol의 양 성분들 모두가 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
- 그렇지 않으면, 움직임 벡터 mvCol, 참조 인덱스 refIdxCol, 참조 목록 식별자 listCol들이 다음과 같이 도출된다:
...
이와는 달리, 다음이 적용될 수 있다:
변수 mvLXCol 및 availableFlagLXCol들이 다음과 같이 도출된다:
- colCb가 [[인트라 또는 IBC]] 인터 예측 모드로 코딩되 지 않으 면, mvLXCol의 양 성분들이 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
- 그렇지 않으면, 움직임 벡터 mvCol, 참조 인덱스 refIdxCol, 및 참조 목록 식별자 listCol들이 다음과 같이 도출된다:
...
5.2 실시예 #2(Embodiment #2)
JVET-O2001-vE에 규정된 작업 초안이 아래와 같이 변경될 수 있다.
8.5.1 인터 예측 모드로 코딩된 코딩 유닛에 대한 일반적 디코딩 프로세스(General decoding process for coding units coded in inter prediction mode)
...
3. 디코더 측 움직임 벡터 정제 후의 루마 및 크로마 움직임 벡터들의 배열(array)들, refMvLX[xSbIdx][ySbIdx] 및 refMvCLX[xSbIdx][ySbIdx], 여기서 X는 0과 1, 들은 xSbIdx=0..numSbX-1, ySbIdx=0..numSbY-1에 대해 다음과 같이 도출된다:
- dmvrFlag이 1이고, 조항 8.5.2.13의 크로마 움직임 벡터들에 대한 도출 프로세스가 refMvLX[xSbIdx][ySbIdx] 및 refIdxLX를 입력으로, refMvCLX[xSbIdx][ySbIdx]를 출력으로 요구하면, 입력 refMvLX[xSbIdx][ySbIdx]는 다음과 같이 도출되는데;
refMvLX[xSbIdx][ySbIdx] = mvLX[xSbIdx][ySbIdx] + dMvLX[xSbIdx][ySbIdx] (8-287)
refMvLX[xSbIdx][ySbIdx][0]=Clip3(-217,217-1,refMvLX[xSbIdx][ySbIdx][0]) (8-288)
refMvLX[xSbIdx][ySbIdx][1]=Clip3(-217,217-1,refMvLX[xSbIdx][ySbIdx][1]) (8-289)
- 그렇지 않으면(dmvrFlag이 0이면), 다음이 적용된다:
refMvLX[xSbIdx][ySbIdx] = mvLX[xSbIdx][ySbIdx] (8-290)
refMvCLX [xSbIdx][ySbIdx] = mvCLX[xSbIdx][ySbIdx] (8-291)
노트 - 배열 refMvLX는 MvDmvrLX에 저장되어 조항 8.5.2.12의 병치 동작 벡토등의 도출 프로세스에 사용된다. 코딩 블록 Cb[xSbIdx][ySbIdx]가 IBC 예측 모드로 코딩되면 하나의 슬라이스를 디코딩한 다음, MvDmvrLX[xSbIdx][ySbIdx]와 대응 참조 인덱스들은 모두 -1로 설정된다. 정제되지 않은(non-refine) 루마 움직임 벡터 MvLX들의 배열이 공간적 움직임 벡터 예측과 디블록킹 경계 강도(deblocking boundary strength) 도출 프로세스들에 사용된다.
...
8.5.2.12 병치 움직임 벡터들의 도출 프로세스(Derivation process for collocated motion vectors)
...
변수 mvLXCol 및 availableFlagLXCol들은 다음과 같이 도출된다:
- colCb가 인트라 또는 IBC 예측 모드로 코딩되면, mvLXCol의 양 성분들 모두가 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
- 그렇지 않으면, 움직임 벡터 mvCol, 참조 인덱스 refIdxCol, 및 참조 목록 식별자 listCol들이 다음과 같이 도출된다:
predFlagL0Col[xColCb][yColCb]가 0이고 predFlagL1Col[xColCb][yColCb]가 0이면, mvLXCol의 양 성분들 모두가 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
그렇지 않으면, 다음이 적용된다:
- 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이면), 다음이 적용된다:
- NoBackwardPredFlag이 1이고 PredFlagLYCol[xColCb][yColCb]가 1이면, mvCol, refIdxCol, 및 listCol들은 각각 mvLYCol[xColCb][yColCb], refIdxLYCol[xColCb][yColCb] 및 LY로 설정되는데, 여기서 Y는 !X이고 X는 이 프로세스가 호출되는 X의 값이다. availableFlagLXCol는 1로 설정된다.
- 그렇지 않으면, mvLXCol의 양 성분들 모두가 0으로 설정되고 availableFlagLXCol이 0으로 설정된다.
...
5.3 실시예 #3(Embodiment #3)
JVET-O2001-vE에 규정된 작업 초안이 아래와 같이 변경될 수 있다.
8.5.6.6.2 디폴트 가중 샘플 예측 프로세스(Default weighted sample prediction process)
...
변수 shift1, shift2, offset1, offset2, 및 offset3들이 다음과 같이 도출된다:
- 변수 shift1이 Max(2,14-bitDepth)로 설정되고 변수 shift2가 Max(3,15-bitDepth)로 설정된다.
- 변수 offset1이 1<<(shift1-1)로 설정된다.
- 변수 offset2가 1<<(shift2-1)로 설정된다.
변수 offset3이 1<<(shift2+1[[2]])로 설정된다.
...
- 그렇지 않으면(predFlagL0이 1이고 predFlagL1이 1이면), 다음이 적용된다:
- bcwIdx가 0이거나 ciip_flag[xCb][yCb]가 1이면, 예측 샘플값들이 다음과 같이 도출된다:
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (8-823) (predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)>>shift2)
- 그렇지 않으면(bcwIdx가 0이 아니고 ciip_flag[xCb][yCb]가 1이면) 다음이 적용된다:
- bcwWLut[k] = {4,5,3,10,-2}일 때 변수 w1가 bcwWLut[bcwIdx]와 동일하게 설정된다.
- 변수 w0이 (8-w1)로 설정된다.
- 예측 샘플값들은 다음과 같이 도출된다.
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1 (8-824) (w0*predSamplesL0[x][y]+w1*predSamplesL1[x][y]+offset3)>>(shift2+[[3]] 2 ))
...
이와는 달리 다음이 적용될 수 있는데:
...
변수 shift1, shift2, offset1, offset2, 및 offset3들이 다음과 같이 도출된다:
- 변수 shift1이 Max(2,14-bitDepth)로 설정[[되고 변수 shift2가 Max(3,15-bitDepth)로 설정]]된다.
- 변수 offset1이 1<<(shift1-1)로 설정된다.
- 변수 offset2가 1<<(shift 1 + [[2-]]1)로 설정된다.
변수 offset3이 1<<(shift[[2]] 1 +2)로 설정된다.
...
- 그렇지 않으면(predFlagL0이 1이고 predFlagL1이 1이면), 다음이 적용된다:
- bcwIdx가 0이거나 ciip_flag[xCb][yCb]가 1이면, 예측 샘플값은 다음과 같이 도출된다:
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (8-823) (predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)>>(shift 1 + 1 )[[2]])
- 그렇지 않으면(bcwIdx가 0이 아니고 ciip_flag[xCb][yCb]가 0이면) 다음이 적용된다:
- bcwWLut[k] = {4,5,3,10,-2}일 때 변수 w1이 bcwWLut[bcwIdx]으로 설정된다.
- 변수 w0이 (8-w1)으로 설정된다.
- 예측 샘플값들이 다음과 같이 도출된다.
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1 (8-824) (w0*predSamplesL0[x][y]+w1*predSamplesL1[x][y]+offset3)>>(shift 1 + 3 [[2+3]]))
...
이와는 달리, 다음이 적용된다:
...
변수 shift1, shift2, offset1, offset2, 및 offset3들은 다음과 같이 도출된다:
- 변수 shift1이 Max(2,14-bitDepth)로 설정되고 변수 shift2가 Max(3,15-bitDepth)로 설정된다.
- 변수 offset1이 1<<(shift1-1)로 설정된다.
- 변수 offset2가 1<<(shift2-1)로 설정된다.
- [[변수 offset3이 1<<(shift2+2)로 설정된다.]]
...
- 그렇지 않으면(predFlagL0이 1이고 predFlagL1이 1이면), 다음이 적용된다:
- bcwIdx가 0이거나 ciip_flag[xCb][yCb]가 1이면 예측 샘플값들이 다음과 같이 도출된다:
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (8-823) (predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)>>shift2)
- 그렇지 않으면(bcwIdx가 0이 아니고 ciip_flag[xCb][yCb]가 0이면), 다음이 적용된다:
- bcwWLut[k] = {4,5,3,10,-2}일 때 변수 w1이 bcwWLut[bcwIdx]로 설정된다.
- 변수 w0이 (8-w1)로 설정된다.
- 예측 샘플값들이 다음과 같이 도출된다.
pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1, (8-824)
(w0*((predSamplesL0[x][y] + offset1 ) >> shift1 )+w1*((predSamplesL1[x][y] + offset1 ) >> shift1 )+4)>>(8[[shift2+3)]])
...
5.4 실시예 #4(Embodiment #4)
JVET-O2001-vE에 규정된 작업 초안이 다음과 같이 변경될 수 있다.
8.5.6.6.2 디폴트 가중 샘플 예측 프로세스(Default weighted sample prediction process)
...
- 그렇지 않으면(bcwIdx가 0이 아니고 ciip_flag[xCb][yCb]가 0이면), 다음이 적용된다:
bcwWLut[k] = {4,5,3,10, 2 [[-2]]} / {4,5,3,10,1} / {4,3,5,10,2} / {4,3,5,10,1} / {4,5,3,10,-1} 일 때 변수 w1이 bcwWLut[bcwIdx]로 설정된다.
...
5.5 실시예#5(Embodiment #5)
JVET-O2001-vE에 규정된 작업 초안이 다음과 같이 변경될 수 있다.
8.5.2.7 병합 움직임 벡터 차이의 도출 프로세스(Derivation process for merge motion vector difference)
...
mMvdL1[0] = Clip3(-2[[15]] 17 ,2[[15]] 17 -1,(distScaleFactor * mMvdL0[0] + (8-394)
128-(distScaleFactor * mMvdL0[0] >= 0) ) >> 8 )
mMvdL1[1] = Clip3(-2[[15]] 17 ,2[[15]] 17 -1,(distScaleFactor * mMvdL0[1] + (8-395)
128 - (distScaleFactor * mMvdL0[1] >= 0) ) >> 8 )
...
mMvdL0[0] = Clip3(-2[[15]] 17 ,2[[15]] 17 -1,(distScaleFactor * mMvdL1[0] + (8-404)
128 - (distScaleFactor * mMvdL1[0] >= 0) ) >> 8 )
mMvdL0[1] = Clip3(-2[[15]] 17 ,2[[15]] 17 -1, ,(distScaleFactor * mMvdL1[1] + (8-405)
128 - (distScaleFactor * mMvdL1[1] >= 0) ) >> 8 ))
...
5.6 실시예 #6(Embodiment #6)
JVET-O2001-vE에 규정된 작업 초안이 다음과 같이 변경될 수 있다.
7.3.8.5 코딩 유닛 신택스(Coding unit syntax)
...
coding_unit( x0, y0, cbWidth, cbHeight, cqtDepth, treeType, modeType ) { Descriptor
chType = treeType = = DUAL_TREE_CHROMA? 1 : 0
if( slice_type != I | | sps_ibc_enabled_flag[[ | | sps_palette_enabled_flag]]) {
if( treeType != DUAL_TREE_CHROMA && !( ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA ) && !(sps_ibc_enabled_flag && cbWidth <=64 && cbHeight <= 64) ) )
cu_skip_flag[ x0 ][ y0 ] ae(v)
if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL )
pred_mode_flag ae(v)
if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ chType ][ x0 ][ y0 ] != MODE_INTRA | | ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] = = 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 && modeType != MODE_TYPE_INTER && sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA )
pred_mode_ibc_flag ae(v)
}
if( ( ( ( slice_type = = I | | ( cbWidth = = 4 && cbHeight = = 4 ) | | sps_ibc_enabled_flag ) && CuPredMode[ x0 ][ y0 ] = = MODE_INTRA ) | | ( slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && sps_palette_enabled_flag && cbWidth <= 64 && cbHeight <= 64 && && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER )
pred_mode_plt_flag ae(v)
[[}]]
도 14a는 비디오 처리 장치(1400)의 블록도이다. 장치(1400)는 이 명세서에 기재된 방법들 중의 하나 이상을 구현하는 데 사용될 수 있다. 장치(1400)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(Internet of Things; IoT) 수신기 등으로 구현될 수 있다. 장치(1400)는 하나 이상의 프로세서(1402)들과, 하나 이상의 메모리(1404)들과, 및 비디오 처리 하드웨어(1406)를 포함할 수 있다. 프로세서(1402)(들)는 이 명세서에 기재된 방법들(방법 800, 900, 1000, 1100, 1200 및 1300을 제한 없이 포함)의 하나 이상을 구현하도록 구성될 수 있다. 메모리(메모리들)(1404)는 이 명세서에 기재된 방법과 기법들을 구현하는 데이터와 코드들을 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(1406)는 이 명세서에 기재된 일부 기법들을 하드웨어 회로에서 구현하는 데 사용될 수 있다. 일부 실시예들에서, 하드웨어(1406)는 전체적 또는 부분적으로 예를 들어 그래픽 코프로세서(graphics co-processor) 등의 프로세서(1402)에 구현될 수 있다.
도 14b는 이 명세서에 기재된 다양한 기법들이 구현될 수 있는 예시적 비디오 처리 시스템(1410)을 보이는 블록도이다. 다양한 구현예들은 시스템(1410)의 컴포넌트들 중의 일부 또는 전부를 포함할 수 있다. 시스템(1410)은 비디오 콘텐츠(video content)를 수신하는 입력(1412)을 포함할 수 있다. 이 비디오 콘텐츠는 예를 들어 8 또는 10 비트의 다중 성분(multi-component) 픽셀 값 등의 미가공(raw) 또는 압축되지 않은 포맷으로 수신되거나 압축 또는 인코딩된 포맷이 될 수 있다. 입력(1412)은 네트워크 인터페이스, 주변 버스 인터페이스(peripheral bus interface), 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예는 이더넷(Ethernet), 수동 광통신망(passive optical network; PON) 등의 유선 인터페이스와, Wi-Fi 또는 휴대폰 인터페이스(cellular interfaces) 등의 무선 인터페이스를 포함한다.
시스템(1410)은 이 명세서에 기재된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(coding component; 1414)를 포함할 수 있다. 이 코딩 컴포넌트(1414)는 입력(1412)로부터의 비디오의 평균 비트속도(average bitrate)를 감소시켜 코딩 컴포넌트(1414)의 출력에 비디오의 코딩된 표현을 산출할 수 있다. 이에 따라, 코딩 기법들은 때로 비디오 압축 또는 비디오 변환 코딩(transcoding)으로 지칭된다. 코딘 컴포넌트(1414)의 출력은 저장되거나, 컴포넌트(1416)로 표현된 바와 같이 통신 연결을 통해 전송될 수 있다. 입력(1412)에 수신되는 비디오의 저장 또는 통신되는 비트스트림(또는 코딩) 표현은 컴포넌트(1418)에 사용되어 디스플레이 인터페이스(1420)로 전송될 수 있는 픽셀 값들 또는 화상표시 가능한(displayable) 비디오를 생성할 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때로 비디오 압축해제로 지칭된다. 뿐만 아니라, 어떤 비디오 처리 동작들은 "코딩(coding)" 동작 또는 툴(tool)로 지칭되지만, 토딩 툴 또는 동작은 인코더에 사용되고 코딩의 결과를 반전시키는 대응 디코딩 툴 또는 작동은 디코더에서 수행될 것임을 이해해야 할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예는 범용 직렬 버스(universal serial bus; USB) 또는 고해상도 멀티미디어 인터페이스(high definition multimedia interface; HDMI) 또는 디스플레이 포트(display port) 등을 포함할 수 있다. 저장 인터페이스의 예는 SATA(직렬 고급 부착 기술; serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 이 명세서에 기재된 기법들은 모바일 폰, 랩탑, 스마트폰, 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 다른 장치 등 다양한 전자기기들에 구현될 수 있다
일부 실시예들에서, 비디오 코딩 방법들은 도 14a 또는 14b에 관련하여 기재된 하드웨어 플랫폼 상에 구현되는 장치를 사용하여 구현될 수 있다.
다음의 목록은 다른 문제들 중에서 이 명세서에 기재된 기술적 문제들을 해결할 수 있는 실시예들을 제공한다, 조항들의 첫 번째 집합은 이전 섹션에 기재된 기법들의 어떤 특징과 국면(aspect)들을 설명한다.
1. 현재 비디오 블록에 대한 병치 비디오 블록의 예측 모드에 기반하여 하나 이상의 병치 움직임 벡터들의 사용 가능성을 판단(혹은 결정)하는 단계와; 및 하나 이상의 병치 움직임 벡터들에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하고, 여기서 예측 모드의 표시는 현재 비디오 블록이 인터 모드 또는 비 인터 모드로 코딩되었는지 여부를 표시하는 하나의 비트를 포함하는 비디오 처리 방법.
2. 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 위해, 비디오 블록의 병치 비디오 블록의 종류를 판단하는 단계, 상기 종류는 단지 2개의 가능한 값들 중 하나에 해당함; 및 판단에 기반하여 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
3. 조항 1의 방법에서, 2개의 가능한 값들은 병치 비디오 블록이 인터 코딩되었음을 표시하는 제1 값과, 병치 비디오 블록이 인터 코딩이 아닌 방법으로 코딩되었음을 표시하는 제2 값을 포함하는 비디오 처리 방법.
4. 조항 1 내지 3 중의 어느 하나의 방법에서, 현재 비디오 블록이 팔레트 예측 모드로 코딩되었을 때와 현재 비디오 블록이 인트라 또는 인트라 블록 복사(intra block copy; IBC) 모드로 코딩되었을 때의 판단은 동일한 비디오 처리 방법.
5. 조항 1 내지 3 중의 어느 하나의 방법에서, 병치 비디오 블록이 비 인터 예측 모드로 코딩되면, 하나 이상의 병치 움직임 벡터들은 사용 불가능한 것으로 판단되는 비디오 처리 방법.
6. 조항 1 내지 3 중의 어느 하나의 방법에서, 병치 비디오 블록이 비 인터 예측 모드로 코딩되면, 하나 이상의 병치 움직임 벡터들은 사용 가능하다고 판단되고 디폴트 움직임 벡터를 포함하는 비디오 처리 방법.
7. 조항 5 또는 6의 방법에서, 비 인터 예측 모드는 인트라 예측 모드, 팔레트 예측 모드, 또는 인트라 블록 복사(IBC) 예측 모드인 비디오 처리 방법.
8. 조항 1 내지 3 중의 어느 하나의 방법에서, 상기 판단은 병치 비디오 블록의 참조 인덱스 또는 참조 목록에 기반하는 비디오 처리 방법.
9. 조항 8의 방법에서, 참조 인덱스는 소정값(predetermined value)인 비디오 처리 방법.
10. 조항 8의 방법에서, 참조 인덱스는 소정값을 제외하는 비디오 처리 방법,
11. 조항 9 또는 10의 방법에서, 소정값은 0인 비디오 처리 방법.
12. 코딩 유닛(CU) 수준 가중치(BCW) 프로세스에 의한 양 예측 모드에 연계된 제1 가중치 테이블에 기반하여 현재 블록에 대한 예측 샘플을 도출하는 단계-, 제1 가중치 테이블이 비대칭임-; 예측 샘플에 기반하여 현재 블록과 현재 블록의 비트 스트림 표현 간의 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
13. 조항 12의 방법에서, 제1 가중치 테이블의 엔트리들이 단조 증가하지 않는 비디오 처리 방법.
14. 조항 12의 방법에서, BCW 프로세스가 제1 가중치 테이블과 다른 제2 가중치 테이블에 더 기반하는 비디오 처리 방법.
15. 조항 12의 방법에서, 예측 샘플의 도출 단계가: 중간 예측 샘플을 제1 비트심도로 변환하는 단계와; 예측 샘플을 도출하기 위해 제1 가중치 테이블로부터의 가중치를 중간 예측 샘플에 적용하는 단계와 및 예측 샘플을 제2 비트심도로 변환하는 단계를 포함하는 비디오 처리 방법.
16. 조항 15의 방법에서, 제2 비트심도는 현재 비디오 블록의 색 성분의 비트심도인 비디오 처리 방법.
17. 현재 비디오 블록의 치수에 기반하여 현재 비디오 블록의 비트스트림 표현 내의 현재 비디오 블록의 스킵 모드 코딩의 표시의 선택적 시그널링에 관해 결정하는 단계; 및 위 결정에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
18. 조항 17의 방법에서, 슬라이스의 슬라이스 종류가 I 슬라이스이고, sps_ibc_enabled_flag이 참으로 설정되며, 현재 비디오 블록의 높이와 폭이 N 이하라고 판단되면 위 표시가 시그널링되는 방법.
19. 조항 17의 방법에서, 현재 비디오 블록이 인트라 블록 복사(IBC) 모드로 코딩되고, 현재 비디오 블록의 높이와 폭이 N 이하라고 판단되면 위 표시가 시그널링되는 비디오 처리 방법.
20. 조항 18 또는 19의 방법에서, N = 64인 비디오 처리 방법.
21. 제1 코딩 툴의 현재 비디오 블록의 제1 색 성분의 하나 이상의 블록들에의 적용에 기반하여, 제2 코딩 툴의 현재 비디오 블록의 제2 색 성분의 적어도 하나의 블록들에의 선택적 적용을 결정하는 단계; 및 위 결정에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
22. 조항 21의 방법에서, 제2 코딩 툴이 제1 코딩 툴과 동일하다고 판단되면 제2 코딩 툴이 적용되는 비디오 처리 방법.
23. 조항 21의 방법에서, 제2 코딩 툴이 제1 코딩 툴과 다르다고 판단되면 제2 코딩 툴이 적용되지 않는 비디오 처리 방법.
24. 조항 21의 방법에서, 위 결정은 비트스트림 표현의 표시에 더 기반하는 비디오 처리 방법.
25. 조항 21 내지 24 중의 어느 하나의 방법에서, 제1 색 성분이 루마 성분이고 제2 색 성분이 크로마 성분인 방법.
26. 조항 21 내지 24 중의 어느 하나의 방법에서, 제1 색 성분이 제1 크로마 색 성분이고 제2 색 성분이 제2 크로마 색 성분인 비디오 처리 방법.
27. 조항 21 내지 26 중의 어느 하나의 방법에서, 제1 코딩 툴과 제2 코딩 툴은 시간적 움직임 벡터 예측(temporal motion vector prediction; TMVP), 대체적 시간적 움직임 벡터 예측(alternative temporal motion vector prediction; ATMVP), 코딩 유닛(CU) 수준 가중치(BCW) 프로세스에 의한 양 예측, 움직임 벡터 차이를 갖는 병합 모드(merge mode with motion vector differences; MMVD) 또는 위치 종속 예측 조합(position-dependent prediction combination; PDPC) 프로세스 중의 하나인 방법.
28. 현재 비디오 블록의 움직임 벡터의 정도(혹은 정밀도, precision)에 기반하여 디폴트 반 픽셀 보간 필터 대신 대체적 반 픽셀 보간 필터를 사용한다는 표시의 선택적 시그널링에 관해 결정하는 단계; 및 위 결정에 기반하여 현재 블록과 현재 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
29. 조항 28의 방법에서, 현재 비디오 블록이 움직임 벡터 차이를 갖는 병합 모드(MMVD)로 코딩되고 복원 움직임 벡터의 정도가 반 픽셀보다 낮다고 판단되면 디폴트 반 픽셀 보간 필터가 사용되는 비디오 처리 방법.
30. 조항 1 내지 29 중의 어느 하나의 방법에서, 변환의 수행이 디코더 파라미터 세트(decoder parameter set; DPS), 시퀀스 파라미터 세트(sequence parameter set; SPS), 화면 파라미터 세트(picture parameter set; PPS), 적응형 파라미트 세트(adaptive parameter set; APS), 비디오 파라미터 세트(video parameter set; VPS), 시퀀스 헤더, 화면 헤더, 슬라이스 헤더, 또는 타일 그룹 헤더의 시그널링(signaling)에 더 기반하는 비디오 처리 방법.
31. 조항 1 내지 30 중의 어느 하나의 방법에서, 변환을 수행하는 단계는 현재 비디오 블록으로부터 비트스트림 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
32. 조항 1 내지 30 중의 어느 하나의 방법에서, 변환을 수행하는 단계는 비트스트림 표현으로부터의 현재 비디오 블록을 생성하는 단계를 포함하는 방법.
33. 조항 1 내지 32의 어느 것에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
34. 비 일시적 컴퓨터 독출 가능한 매체에 저장된 컴퓨터 프로그램 제품으로, 조항 1 내지 32 중 어느 조항에 기재된 방법을 실행하는 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
조항들의 두 번째 집합은 (예를 들어 항목 1 및 2 등) 이전 섹션에 기재된 기법들의 어떤 특징과 국면들을 설명한다.
1. 비디오의 비디오 블록의 병치 비디오 블록이 인터 코딩 모드 또는 비 인터 코딩 모드를 사용하여 코딩되는지 여부에 대한 제1 판단을 수행하는 단계와; 제1 판단에 기반하여 병치 비디오 블록의 움직임 벡터들의 사용 가능성 또는 병치 비디오 블록에 대한 움직임 벡터들의 도출 모드에 대한 제2 판단을 수행하는 단계와; 및 제2 판단에 기반하여 비디오 블록과 이 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
2. 조항 1의 방법에서, 비 인터 코딩 모드는 인트라 모드, 팔레트 모드, 또는 인트라 블록 복사(IBC) 모드인 비디오 처리 방법.
3. 조항 1의 방법에서, 제2 판단을 수행하는 단계는 제2 판단이 팔레트 모드로 코딩된 병치 비디오 블록과 인트라 모드로 코딩된 병치 비디오 블록에 대해 동일해지도록 수행되는 비디오 처리 방법.
4. 조항 1의 방법에서, 제2 판단을 수행 단계는, 제2 판단이 팔레트 모드로 코딩된 병치 비디오 블록과 인트라 블록 복사 모드로 코딩된 병치 비디오 블록에 대해 동일해지도록 수행되는 비디오 처리 방법.
5. 조항 1의 방법에서, 제2 판단의 수행 단계는, 제2 판단이 인트라 모드로 코딩된 병치 비디오 블록과 인트라 블록 복사 모드로 코딩된 병치 비디오 블록에 대해 동일해지도록 수행되는 비디오 처리 방법.
6. 조항 1의 방법에서, 제1 판단을 수행하는 단계는: 병치 비디오 블록이 인터 코딩 모드 또는 비 인터 코딩 모드를 사용하여 코딩되었는지 여부를 표시하는 하나의 비트를 생성하는 단계를 포함하는 비디오 처리 방법.
7. 조항 1의 방법에서, 제2 판단을 수행하는 단계는, 병치 비디오 블록이 비 인터 코딩 모드를 사용하여 코딩되었다는 제1 판단에 기반하여 병치 비디오 블록의 움직임 벡터들이 사용 불가능한 것으로 결정하는 비디오 처리 방법.
8. 조항 1의 방법에서, 제2 판단을 수행하는 단계는, 병치 비디오 블록이 비 인터 코딩 모드를 사용하여 코딩되었다는 제1 판단에 기반하여 병치 비디오 블록의 움직임 벡터들이 사용 가능한 것으로 결정하고, 디폴트 움직임 벡터는 병치 비디오 블록의 움직임 벡터들로서 할당되는 비디오 처리 방법.
9. 조항 1의 방법에서, 병치 비디오 블록이 비 인터 코딩 모드를 사용하여 코딩된 경우 병치 비디오 블록 대신 다른 비디오 블록이 점검되는 비디오 처리 방법.
10. 조항 9의 방법에서, 다른 비디오 블록은 병치 비디오 블록의 좌측, 우측, 위, 또는 아래의 가장 가까운 인터 코딩된 블록인 이웃 블록인 비디오 처리 방법.
11. 비디오의 비디오 블록과 이 비디오의 코딩된 표현 간의 변환을 위해 비디오 블록의 병치 비디오 블록의 참조 인덱스 또는 참조 목록에 기반하여 하나 이상의 병치 움직임 벡터들을 결정하는 단계; 및 이 결정에 기반하여 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
12. 조항 11의 방법에서, 병치 비디오 블록의 참조 목록의 참조 인덱스가 소정값과 같지 않을 경우 하나 이상의 병치 움직임 벡터들이 도출되는 비디오 처리 방법.
13. 조항 11의 방법에서, 병치 비디오 블록의 참조 목록의 참조 인덱스가 소정값과 같을 경우 하나 이상의 병치 움직임 벡터들이 도출되는 비디오 처리 방법.
14. 조항 12 또는 13의 방법에서, 소정값이 0인 비디오 처리 방법.
15. 조항 11의 방법에서, 병치 비디오 블록이 비 인터 코딩 모드로 코딩되거나 병치 비디오 블록의 참조 화면이 주어진 조건을 충족하지 않는 경우, 하나 이상의 병치 움직임 벡터들은 사용 불가능한 것으로 설정되는 비디오 처리 방법.
16. 조항 11의 방법에서, 병치 비디오 블록이 비 인터 코딩 모드로 코딩되거나 병치 비디오 블록의 참조 화면이 주어진 조건을 충족하지 않는 경우, 하나 이상의 병치 움직임 벡터들은 디폴트값으로 설정되는 비디오 처리 방법.
17. 조항 1 내지 16 중의 어느 하나의 방법에서, 위 변환은 비디오를 코딩된 표현으로 인코딩하는 것을 포함하는 비디오 처리 방법.
18. 조항 1 내지 16 중의 어느 하나의 방법에서, 위 변환이 비디오를 생성하기 위해 코딩된 표현을 디코딩하는 것을 포함하는 비디오 처리 방법.
19. 조항 1 내지 16 중의 어느 하나에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
20. 실행시 프로세서가 조항 1 내지 16 중의 어느 하나에 기재된 방법을 구현하도록 시키는 프로그램 코드를 저장한 컴퓨터 독출 가능한 매체.
21. 조항 1 내지 16 중의 어느 하나에 따라 생성된 코딩된 표현 또는 비트스트림 표현을 저장한 컴퓨터 독출 가능한 매체.
조항들의 세 번째 집합은 (예들 들어 항목 3 내지 7 등의) 이전 섹션에 기재된 기법들의 어떤 특징과 국면들을 설명한다.
1. (예를 들어 도 15c에 보인 방법(1530) 등의) 비디오 처리 방법에 있어서: 비디오의 현재 블록과 이 비디오의 코딩 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출(1532)하는 단계; 및 이 예측 블록을 사용하여 변환을 수행(1534)하는 단계를 포함하고, 예측 블록의 도출 단계는: 최종 예측 샘플을 도출하기 위해 각각 2개의 초기 예측 블록들에 속하는 2개의 중간 예측 샘플들에 가중치를 적용하는 단계와; 및 최종 예측 샘플의 비트심도를 변환하기 위해 최종 예측 샘플에 대해 우측 시프트 연산을 수행하는 단계 -우측 시프트 연산이 pbSample >> (shift1+3))이고, pbSample은 최종 예측 샘플을 나타내고, shift1이 Max(2, 14 - bitDepth)로 설정됨-; 및 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함하는 비디오 처리 방법.
2. 조항 1의 방법에서, 우측 시프트 연산을 수행하기 전에 최종 예측 샘플에 오프셋이 가산되는 비디오 처리 방법.
3. 조항 1의 방법에서, 오프셋이 1 << (shift1 + 2)인 비디오 처리 방법.
4. 조항 3의 방법에서, 최종 예측 샘플 pbSamples[x][y]은, w0 및 w1이 가중치이고 predSamplesL0[x][y] 및 predSamplesL1[x][y]들이 2개의 중간 예측 샘플들일 때 pbSamples[x][y] = Clip3(0, (1 << bitDepth) -1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y] + offset3) >> (shift1 + 3))로 도출되는 비디오 처리 방법.
5. 조항 1의 방법에서, 가중치들의 적어도 하나가 가중치 테이블에 속하고, 이 가중치 테이블의 엔트리들은 단조 증가하지 않는 비디오 처리 방법.
6. 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출하는 단계; 및 이 예측 블록을 기반으로 변환을 수행하는 단계를 포함하고, 예측 블록의 도출 단계는: 최종 예측 샘플을 도출하기 위해 각각 2개의 초기 예측 블록들에 속하는 2개의 중간 예측 샘플에 가중치들을 적용하는 단계; 및 최종 예측 샘플에 오프셋을 가산하는 단계 -오프셋이 1 << (shift1 + 2)이고 shift1이 Max(2, 14 - bitDepth)로 설정됨-; 및 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함하는 비디오 처리 방법.
7. 조항 6의 방법에서, 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계는: 최종 예측 샘플의 비트 심도를 변환하기 위해 최종 예측 샘플에 대해 우측 시프트 연산을 수행하는 비디오 처리 방법.
8. 조항 1 또는 7의 방법에서, 우측 시프트 연산은 pbSample >> (shift1+3)이고, pbSample은 최종 예측 샘플을 나타내는 비디오 처리 방법.
9. 조항 8의 방법에서, 최종 예측 샘플 pbSamples[x][y]은, w0 및 w1이 가중치이고 predSamplesL0[x][y] 및 predSamplesL1[x][y]들이 2개의 중간 예측 샘플들일 때 pbSamples[x][y] = Clip3(0, (1 << bitDepth) - 1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y] + offset3) >> (shift1+3))로 도출되는 비디오 처리 방법.
10. 조항 6의 방법에서, 가중치들의 적어도 하나는 가중치 테이블에 속하고, 이 가중치 테이블의 엔트리들은 단조 증가하지 않는 비디오 처리 방법.
11. (예를 들어 도 15d에 보인 방법(1540) 등의) 비디오 처리 방법에 있어서: 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해 현재 블록에 대한 병합 모드 움직임 벡터 예측자에 대한 움직임 벡터 차이를 규칙에 따라 도출(1542)하는 단계와; 및 이 도출에 기반하여 변환을 수행(1544)하는 단계를 포함하고, 위 규칙은 움직임 벡터 차이를 움직임 벡터들의 클리핑에 사용된 것과 동일한 범위로 클리핑할지 여부를 규정하는 비디오 처리 방법.
12. 조항 11의 방법에서, 규칙이 움직임 벡터 차이를 움직임 벡터들의 클리핑에 사용된 것과 동일한 범위로 클리핑하도록 규정하는 비디오 처리 방법.
13. 조항 11의 방법에서, 움직임 벡터들의 클리핑에 사용되는 범위는 18 비트인 비디오 처리 방법.
14. 조항 13의 방법에서, 움직임 벡터들의 클리핑에 사용되는 범위는 [-217, 217 - 1]인 비디오 처리 방법.
15. 조항 11의 방법에서, 규칙은, 움직임 벡터 차이가 [-217+1, 217 - 1]로 클리핑되도록 규정하는 비디오 처리 방법.
16. 조항 11의 방법에서, 규칙은 움직임 벡터 차이가 클리핑되지 않도록 규정하는 비디오 처리 방법.
17. 조항 16의 방법에서, 규칙은, 움직임 벡터 차이를 움직임 벡터 예측 후보들에 가산하여 얻어진 결과를 18 비트로 클리핑하도록 규정하는 비디오 처리 방법.
18. 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출하는 단계-가중치들의 적어도 하나가 가중치 테이블에 속하고, 가중치 테이블이 규칙에 따라 조직됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하고, 규칙은 가중치 테이블의 엔트리들이 단조 증가하지 않는다고 규정하는 비디오 처리 방법.
19. 조항 18의 방법에서, 가중치 테이블이 그 값이 i번째 엔트리보다 더 작은 (i+1)번째 엔트리를 포함하는 비디오 처리 방법.
20. 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출하는 단계-가중치들의 적어도 하나가 가중치 테이블에 속하고, 가중치 테이블이 복수의 가중치 테이블들로부터 선택됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
21. 조항 20의 방법에서, 복수의 가중치 테이블들은 {4, 5, 3, 10, 2}, {4, 3, 5, 10, 2}, {4, 5, 3, 10, 1}, {4, 3, 5, 10, 1}, 또는 {4, 5, 3, 10, -1}을 포함하는 비디오 처리 방법.
22. 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출하는 단계; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하고, 예측 블록의 도출 단계는: 중간 예측 샘플을 제1 비트심도로 변환하는 단계와; 최종 예측 샘플을 도출하기 위해 중간 예측 샘플에 가중치들을 적용하는 단계와; 및 최종 예측 샘플을 제2 비트심도로 변환하는 단계를 포함하는 비디오 처리 방법.
23. 조항 22의 방법에서, 제2 비트심도가 현재 비디오 블록의 색 성분의 비트심도인 비디오 처리 방법.
24. 조항 22의 방법에서, 제1 비트심도가 중간 예측 샘플의 비트심도와 같지 않은 비디오 처리 방법.
25. 조항 22의 방법에서, 예측 블록의 도출 단계가 더 높은 비트심도를 더 낮은 비트심도로 변환하는 우측 시프트 연산 또는 더 낮은 비트심도를 더 높은 비트심도로 변환하는 좌측 시프트 연산을 포함하는 비디오 처리 방법.
26. 조항 25의 방법에서, 우측 시프트 연산 또는 좌측 시프트 연산 전에 오프셋이 가산되는 비디오 처리 방법.
27. 조항 22의 방법에서, 최종 예측 샘플 pbSamples[x][y]은, w0 및 w1이 가중치들이고 shift1이 Max(2, 14 - bitDepth)로 설정되고 offset1이 1 << (shift1 - 1)로 설정될 때, pbSamples[x][y] = Clip3(0, (1 << bitDepth) - 1, (w0 * ((predSamplesL0[x][y] + offset1) >> shift1) + w1 * ((predSamplesL1[x][y] + offset1) >> shift1) + 4) >> 3)로 도출되는 비디오 처리 방법.
28. (예를 들어 도 15e에 보인 방법(1550) 등의) 비디오 처리 방법에 있어서: 비디오의 현재 블록과 이 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 제1 가중치와 제2 가중치가 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 현재 블록에 대한 예측 블록을 도출(1552)하는 단계-제1 가중치 및 제2 가중치의 적어도 하나가 가중치 테이블에 포함되고, 이 가중치 테이블이 규칙에 따라 조직됨-; 및 예측 블록을 사용하여 변환을 수행하는 단계를 포함하고, 위 규칙이 가중치 테이블이 비대칭이라고 규정하는 비디오 처리 방법.
29. 조항 28의 방법에서, 가중치 테이블은, 그 값이 제1 가중치(W)에 해당하는 엔트리를 포함하고 그 값이 제2 가중치(1-W)에 해당하는 엔트리를 포함하지 않음으로써 W가 [a, b]의 범위에 있고 a와 b의 합(a+b)이 1인 비디오 처리 방법.
30. 조항 28의 방법에서, 예측 샘플이 (W0*P0 + W1*P1)>>N에 의해 생성되는 경우, 가중치 테이블은, 그 값이 제1 가중치(W)에 해당하는 엔트리를 포함하고 그 값이 제2 가중치(2N-W))에 해당하는 엔트리를 포함하지 않되, W0 및 W1이 각각 초기 2개의 예측 블록 P0 및 P1에 적용되는 제1 및 제2 가중치이고; (W0+W1)는 (1<<N)인 비디오 처리 방법.
31. 조항 1 내지 30 중의 어느 하나의 방법에서, 변환을 수행하는 단계는 현재 비디오 블록으로부터 코딩된 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
32. 조항 1 내지 30 중의 어느 하나의 방법에서, 변환을 수행하는 단계는 코딩된 표현으로부터 현재 비디오 블록을 생성하는 단계를 포함하는 비디오 처리 방법.
33. 조항 1 내지 32 중의 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
34. 실행시 조항 1 내지 32 중의 어느 하나 이상에 기재된 방법을 구현하도록 시키는 프로그램 코드를 저장한 컴퓨터 독출 가능한 매체
35. 이상에 기재된 방법들 중의 어느 것에 따라 생성된 코딩된 표현 또는 비트스트림 표현을 저장한 컴퓨터 독출 가능한 매체.
이상으로부터, 본 발명(presently disclosed technology)의 구체적 실시예들은 이 명세서에서 설명의 목적으로 기재되었지만, 본 발명의 범위로부터 이탈하지 않고도 다양한 수정이 이뤄질 수 있다. 이에 따라, 본 발명은 첨부된 청구항들을 제외하고는 제한되지 않는다.
이 명세서에 기재된 본 발명(subject matter)의 구현예들과 기능적 작동들은 이 명세서에 개시된 구조들 및 그 구조적 등가물, 또는 그 하나 이상의 조합들을 포함하는 다양한 시스템, 디지털 전자회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로 구현될 수 있다. 이 명세서에 기재된 본 발명의 구현예들은 하나 이상의 컴퓨터 프로그램 제품, 즉 데이터 처리 장치의 작동으로 실행되거나 이를 제어하는 유형 및 비일시적 컴퓨터 독출 가능한 매체 상에 인코딩된 하나 이상의 컴퓨터 프로그램 제품들로 구현될 수 있다. 이 컴퓨터 독출 가능한 매체는 기계 독출 가능한 저장 장치, 기계 독출 가능한 저장 기판, 메모리 장치, 기계 독출 가능한 전파 신호를 생성하는(effecting) 물질 조성(composition of matter), 또는 그 하나 이상의 조합들이 될 수 있다. "데이터 처리 유닛(data processing unit)" 또는 "데이터 처리 장치(data processing apparatus)"라는 용어는 프로그래밍 가능한 프로세서, 컴퓨터, 또는 복수의 프로세서들 또는 컴퓨터들을 예로 포함하는 데이터를 처리하는 모든 장치(apparatus), 장치(device), 및 기계들을 포괄한다. 장치는 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 예를 들어 프로세서 펌웨어, 프로토콜 스택(protocol stack), 데이터베이스 관리 시스템, 운영체제, 또는 그 하나 이상의 조합을 구성하는 코드 등의 코드를 포함할 수 있다.
(프로그램, 소프트웨어, 소프트웨어 응용프로그램, 스크립트(script), 또는 코드로도 알려진) 컴퓨터 프로그램은 컴파일러형 및 해석형 언어를 포함하는 임의 형태의 프로그래밍 언어로 작성될 수 있고, 독립(stand-alone) 프로그램, 또는 모듈, 컴포넌트, 서브루틴, 또는 연산 환경에 사용되기에 적합한 어떤 유닛을 포함하는 임의 형태로 배포될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일에 대응하는 것은 아니다. 프로그램은 (예를 들어 마크업 언어(markup language) 문서의 하나 이상의 스크립트들 등) 다른 프로그램 또는 데이터를 보유하는 파일의 일부로 저장되거나, 문제의 프로그램 전용인 단일한 파일로 저장되거나, 또는 (예를 들어 하나 이상의 모듈, 서브프로그램, 또는 코드의 부분들 등) 복수의 협조되는 파일들로 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 장소 또는 복수의 장소들에 분포되어 통신망으로 연결되는 복수의 컴퓨터들 상에서 실행되도록 배포될 수 있다.
이 명세서에 기재된 프로세스와 로직 흐름들은 입력 데이터 상에서 작동하여 출력을 생성하도록 작동함으로써 기능들을 수행하는 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍 가능한 프로세서들로 실행될 수 있다. 이 프로세스들과 로직 흐름들은 또한 예를 들어 FPGA(현장 프로그래밍 가능한 게이트 어레이; field programmable gate array) 또는 ASIC(주문형 집적회로; application specific integrated circuit) 등의 전용 로직 회로로 구현될 수 있는 장치에 의해 수행될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어 범용 및 전용 마이크로프로세서, 또는 어느 종류의 디지털 컴퓨터의 하나 이상의 프로세서들을 포함할 수 있다. 일반적으로, 프로세서는 독출 전용 메모리 또는 랜덤 액세스 메모리, 또는 양자로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소는 명령들을 수행하는 프로세서와 명령들 및 데이터를 저장하는 하나 이상의 메모리 장치들이다. 일반적으로, 컴퓨터는 또한 예를 들어, 자기, 광자기 디스크(magneto optical disk), 또는 광디스크 등 데이터를 저장하는 하나 이상의 대용량 저장 장치(mass storage device)들을 포함하거나, 이로부터 데이터를 수신하거나 이로 데이터를 전송하도록 작동상 연결된다. 그러니 컴퓨터가 이러한 장치를 가질 필요는 없다. 컴퓨터 프로그램 명령들과 데이터를 저장하기에 적합한 컴퓨터 독출 가능한 매체는 예를 들어 EPROM, EEPROM, 및 플래시 메모리 장치 등의 반도체 메모리 장치들을 포함하여 모든 형태의 비휘발성 메모리, 매체, 및 메모리 장치들을 포함한다. 프로세서와 메모리는 전용 로직 회로로 보충되거나 이를 포함할 수 있다.
이 명세서는 도면들과 함께 예시로만 간주될 것을 의도한 것인데, 여기서 예시는 예를 의미한다. 이 명세서에 사용된 단수형 "a", "an" 및 "the"들은 문맥이 명확히 달리 표시하지 않는 한, 복수형들 역시 포함하고자 의도한 것이다. 또한 "또는(or)"의 사용은 문맥이 명확히 달리 표시하지 않는 한, "및/또는(and/or)"을 포함하고자 의도한 것이다.
이 명세서가 많은 상세들을 포함하고 있지만, 이들이 본 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안 되며, 대신 특정한 발명들의 특정한 실시예들에 특정될 수 있는 특징들의 설명으로 해석되어야 한다. 이 명세서에 분리된 실시예의 맥락으로 기재된 어떤 특징들은 단일한 실시예에 조합되어 구현될 수 있다. 역으로, 단일한 실시예의 맥락에서 기재된 여러 가지 특징들이 복수의 실시예들에 별도로 또는 적절한 하부 조합(subcombination)으로 구현될 수도 있다. 뿐만 아니라, 특징들이 어떤 조합들로 작동하는 것으로 기재되고 처음 그렇게 청구되었다고 하더라도, 청구된 조합으로부터의 하나 이상의 특징들은 어떤 경우 조합에서 제외될 수 있고, 청구된 조합이 하부 조합 또는 하부 조합의 변형을 지향할 수 있다.
마찬가지로, 동작들이 도면들에서 특정한 순서로 묘사되어 있지만, 바람직한 결과를 달성하기 위해 이러한 작동들이 도시된 특정한 순서 또는 순차적 순서로 수행되거나, 또는 모든 도시된 작동들이 수행될 것을 요구하는 것으로 이해해서는 안 된다. 뿐만 아니라, 이 명세서에 기재된 실시예들의 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 이러한 불리를 요구하는 것으로 이해되어서는 안 된다.
약간의 구현예와 예들이 설명되었는데, 이 명세서에 기재 및 도시된 내용에 기반하여 다른 구현예, 개선, 및 변형들이 이뤄질 수 있을 것이다.

Claims (35)

  1. 비디오의 현재 블록과 상기 비디오의 코딩 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 상기 예측 블록을 도출하는 단계; 및
    상기 예측 블록을 사용하여 상기 변환을 수행하는 단계;를 포함하되,
    상기 예측 블록의 도출 단계는:
    각각 상기 2개의 초기 예측 블록들에 속하는 2개의 중간 예측 샘플들에 상기 가중치를 적용하여 최종 예측 샘플을 도출하는 단계; 및
    상기 최종 예측 샘플에 대해 우측 시프트 연산을 수행하여 최종 예측 샘플의 비트심도를 변환하는 단계, -상기 우측 시프트 연산이 bSample >> (shift1+3))이고, 여기서 pbSample은 상기 최종 예측 샘플을 나타내고, 상기 shift1이 Max(2, 14 - bitDepth)로 설정됨-; 및
    상기 최종 예측 샘플에 기반하여 예측 블록을 결정하는 단계를 포함하는 비디오 처리 방법.
  2. 제1항에 있어서,
    상기 우측 시프트 연산을 수행하기 전에 상기 최종 예측 샘플에 오프셋이 가산되는 비디오 처리 방법.
  3. 제1항에 있어서,
    상기 오프셋은 1 << (shift1 + 2)인 비디오 처리 방법.
  4. 제3항에 있어서,
    상기 최종 예측 샘플 pbSamples[x][y]는,
    w0 및 w1이 가중치이고 predSamplesL0[x][y] 및 predSamplesL1[x][y]들이 상기 2개의 중간 예측 샘플들일 때,
    pbSamples[x][y] = Clip3(0, (1 << bitDepth) -1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y] + offset3) >> (shift1 + 3))로 도출되는 비디오 처리 방법.
  5. 제1항에 있어서,
    상기 가중치들 중 적어도 하나가 가중치 테이블에 속하고, 상기 가중치 테이블의 엔트리들은 단조 증가하지 않는 비디오 처리 방법.
  6. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 상기 예측 블록을 도출하는 단계; 및
    상기 예측 블록을 기반으로 변환을 수행하는 단계;를 포함하되,
    상기 예측 블록의 도출 단계는:
    상기 2개의 초기 예측 블록들에 각각 속하는 2개의 중간 예측 샘플에 상기 가중치들을 적용하여 최종 예측 샘플을 도출하는 단계; 및
    상기 최종 예측 샘플에 오프셋을 가산하는 단계 -상기 오프셋이 1 << (shift1 + 2)이고 shift1이 Max(2, 14 - bitDepth)로 설정됨-; 및
    상기 최종 예측 샘플에 기반하여 상기 예측 블록을 결정하는 단계를 포함하는 비디오 처리 방법.
  7. 제6항에 있어서,
    상기 최종 예측 샘플에 기반하여 상기 예측 블록을 결정하는 단계는:
    상기 최종 예측 샘플의 비트 심도를 변환하기 위해 상기 최종 예측 샘플에 대해 우측 시프트 연산을 수행하는 단계를 포함하는 비디오 처리 방법.
  8. 제1항 또는 제7항에 있어서,
    상기 우측 시프트 연산은 pbSample >> (shift1+3)이고, pbSample은 상기 최종 예측 샘플을 나타내는 비디오 처리 방법.
  9. 제8항에 있어서,
    상기 최종 예측 샘플 pbSamples[x][y]은,
    w0 및 w1이 상기 가중치이고 predSamplesL0[x][y] 및 predSamplesL1[x][y]들이 상기 2개의 중간 예측 샘플들일 때,
    pbSamples[x][y] = Clip3(0, (1 << bitDepth) - 1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y] + offset3) >> (shift1+3))로 도출되는 비디오 처리 방법.
  10. 제6항에 있어서,
    상기 가중치들 중 적어도 하나는 가중치 테이블에 속하고, 상기 가중치 테이블의 엔트리들은 단조 증가하지 않는 비디오 처리 방법.
  11. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해 상기 현재 블록에 대한 병합 모드 움직임 벡터 예측자에 대한 움직임 벡터 차이를 규칙에 따라 도출하는 단계; 및
    상기 도출에 기반하여 상기 변환을 수행하는 단계;를 포함하고,
    상기 규칙은 상기 움직임 벡터 차이를 움직임 벡터들의 클리핑에 사용된 것과 동일한 범위로 클리핑할지 여부를 규정하는 비디오 처리 방법.
  12. 제11항에 있어서,
    상기 규칙은 상기 움직임 벡터 차이를 상기 움직임 벡터들의 상기 클리핑에 사용된 것과 동일한 범위로 클리핑하도록 규정하는 비디오 처리 방법.
  13. 제11항에 있어서,
    상기 움직임 벡터들의 상기 클리핑에 사용되는 범위는 18 비트인 비디오 처리 방법.
  14. 제13항에 있어서,
    상기 움직임 벡터들의 상기 클리핑에 사용되는 범위는 [-217, 217 - 1]인 비디오 처리 방법.
  15. 제11항에 있어서,
    상기 규칙은, 상기 움직임 벡터 차이가 [-217+1, 217 - 1]로 클리핑되도록 규정하는 비디오 처리 방법.
  16. 제11항에 있어서,
    상기 규칙은, 상기 움직임 벡터 차이가 클리핑되지 않도록 규정하는 비디오 처리 방법.
  17. 제16항에 있어서,
    상기 규칙은, 상기 움직임 벡터 차이를 움직임 벡터 예측 후보들에 가산하여 얻어진 결과를 18 비트로 클리핑하도록 규정하는 비디오 처리 방법.
  18. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 상기 예측 블록을 도출하는 단계 -상기 가중치들의 적어도 하나가 가중치 테이블에 속하고, 상기 가중치 테이블이 규칙에 따라 조직됨-; 및
    상기 예측 블록을 사용하여 상기 변환을 수행하는 단계;를 포함하되,
    상기 규칙은 상기 가중치 테이블의 엔트리들이 단조 증가하지 않는다고 규정하는 비디오 처리 방법.
  19. 제18항에 있어서,
    상기 가중치 테이블은 그 값이 i번째 엔트리 값 보다 작은 (i+1)번째 엔트리를 포함하는 비디오 처리 방법.
  20. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 상기 예측 블록을 도출하는 단계, -상기 가중치들의 적어도 하나가 가중치 테이블에 속하고, 상기 가중치 테이블이 복수의 가중치 테이블들로부터 선택됨-; 및
    상기 예측 블록을 사용하여 상기 변환을 수행하는 단계;를 포함하는 비디오 처리 방법.
  21. 제20항에 있어서,
    상기 복수의 가중치 테이블들은 {4, 5, 3, 10, 2}, {4, 3, 5, 10, 2}, {4, 5, 3, 10, 1}, {4, 3, 5, 10, 1}, 또는 {4, 5, 3, 10, -1}을 포함하는 비디오 처리 방법.
  22. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 가중치들이 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 상기 예측 블록을 도출하는 단계; 및
    상기 예측 블록을 사용하여 변환을 수행하는 단계;를 포함하되,
    상기 예측 블록의 도출 단계는,
    중간 예측 샘플을 제1 비트심도로 변환하는 단계;
    최종 예측 샘플을 유도하기 위해 상기 중간 예측 샘플에 상기 가중치들을 적용하는 단계; 및
    상기 최종 예측 샘플을 제2 비트심도로 변환하는 단계;를 포함하는 비디오 처리 방법.
  23. 제22항에 있어서,
    상기 제2 비트심도는 상기 현재 비디오 블록의 색 성분의 비트심도인 비디오 처리 방법.
  24. 제22항에 있어서,
    상기 제1 비트심도는 상기 중간 예측 샘플의 비트심도와 같지 않은 비디오 처리 방법.
  25. 제22항에 있어서,
    상기 예측 블록의 도출 단계는 더 높은 비트심도를 더 낮은 비트심도로 변환하는 우측 시프트 연산 또는 더 낮은 비트심도를 더 높은 비트심도로 변환하는 좌측 시프트 연산을 포함하는 비디오 처리 방법.
  26. 제25항에 있어서,
    상기 우측 시프트 연산 또는 좌측 시프트 연산 전에 오프셋이 가산되는 비디오 처리 방법.
  27. 제22항에 있어서,
    상기 최종 예측 샘플 pbSamples[x][y]은,
    w0 및 w1이 상기 가중치들이고 shift1이 Max(2, 14 - bitDepth)로 설정되고 offset1이 1 << (shift1 - 1)로 설정될 때,
    pbSamples[x][y] = Clip3(0, (1 << bitDepth) - 1, (w0 * ((predSamplesL0[x][y] + offset1) >> shift1) + w1 * ((predSamplesL1[x][y] + offset1) >> shift1) + 4) >> 3)로 도출되는 비디오 처리 방법.
  28. 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 위해, 예측 블록의 결정에 사용되는 2개의 초기 예측 블록들의 가중합을 결정하는 데 제1 가중치와 제2 가중치가 사용되는 양 방향 코딩 유닛 수준 가중(BCW) 툴에 따라 결정되는 상기 현재 블록에 대한 예측 블록을 도출하는 단계, -상기 제1 가중치 및 제2 가중치의 적어도 하나가 가중치 테이블에 포함되고, 상기 가중치 테이블이 규칙에 따라 조직됨-; 및
    상기 예측 블록을 사용하여 상기 변환을 수행하는 단계를 포함하되,
    상기 규칙은, 상기 가중치 테이블이 비대칭이라고 규정하는 비디오 처리 방법.
  29. 제28항에 있어서,
    상기 가중치 테이블은,
    그 값이 제1 가중치(W)에 해당하는 엔트리를 포함하고
    그 값이 제2 가중치(1-W)에 해당하는 엔트리를 포함하지 않되,
    W는 [a, b]의 범위에 있고 a와 b의 합(a+b)은 1인 비디오 처리 방법.
  30. 제28항에 있어서,
    상기 예측 샘플이 (W0*P0 + W1*P1)>>N에 의해 생성되는 경우, 상기 가중치 테이블은, 그 값이 제1 가중치(W)에 해당하는 엔트리를 포함하고 그 값이 제2 가중치(2N-W))에 해당하는 엔트리를 포함하지 않되,
    상기 W0 및 W1은 각각 상기 초기 2개의 예측 블록 P0 및 P1에 적용되는 상기 제1 및 제2 가중치이고, (W0+W1)이 (1<<N)인 비디오 처리 방법.
  31. 제1항 내지 제30항 중의 어느 한 항에 있어서,
    상기 변환의 수행 단계는 상기 현재 비디오 블록으로부터 상기 코딩된 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
  32. 제1항 내지 제30항 중의 어느 한 항에 있어서,
    상기 변환의 수행 단계는 상기 코딩된 표현으로부터 상기 현재 비디오 블록을 생성하는 단계를 포함하는 비디오 처리 방법.
  33. 제1항 내지 제32항 중 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
  34. 실행시 프로세서가 제1항 내지 제32항 중 하나 이상의 항에 기재된 방법을 구현하도록 시키는 프로그램 코드를 저장하는 컴퓨터 독출 가능한 매체.
  35. 제1항 내지 제34항 중의 어느 한 항에 따라 생성된 코딩된 표현 또는 비트스트림 표현을 저장하는 컴퓨터 독출 가능한 매체.
KR1020227007458A 2019-09-13 2020-09-11 비디오 코딩의 양 예측 가중 샘플 KR20220058551A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2019105825 2019-09-13
CNPCT/CN2019/105825 2019-09-13
PCT/CN2020/114761 WO2021047632A1 (en) 2019-09-13 2020-09-11 Weighted sample bi-prediction in video coding

Publications (1)

Publication Number Publication Date
KR20220058551A true KR20220058551A (ko) 2022-05-09

Family

ID=74866100

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227007458A KR20220058551A (ko) 2019-09-13 2020-09-11 비디오 코딩의 양 예측 가중 샘플

Country Status (7)

Country Link
US (3) US12063348B2 (ko)
EP (1) EP4011077A4 (ko)
JP (2) JP7323710B2 (ko)
KR (1) KR20220058551A (ko)
CN (2) CN114402610A (ko)
BR (1) BR112022004553A2 (ko)
WO (2) WO2021047631A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7323710B2 (ja) 2019-09-13 2023-08-08 北京字節跳動網絡技術有限公司 映像符号化における重み付けサンプルの双予測
US12069305B2 (en) * 2021-04-16 2024-08-20 Tencent America LLC Low memory design for multiple reference line selection scheme
US20230171405A1 (en) * 2021-11-30 2023-06-01 Tencent America LLC Scene transition detection based encoding methods for bcw
WO2024125617A1 (en) * 2022-12-15 2024-06-20 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003063503A1 (en) * 2002-01-24 2003-07-31 Hitachi, Ltd. Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus
KR101211665B1 (ko) * 2005-08-12 2012-12-12 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
JP2012504925A (ja) 2008-10-06 2012-02-23 エルジー エレクトロニクス インコーポレイティド ビデオ信号の処理方法及び装置
KR101675118B1 (ko) 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
PL3367687T3 (pl) * 2011-06-24 2021-08-02 Ntt Docomo, Inc. Sposób i urządzenie do predykcji z kompensacją ruchu
US9503720B2 (en) * 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
CA3160230A1 (en) * 2012-06-27 2014-01-03 Kabushiki Kaisha Toshiba Video encoding and decoding using weighting factor with predetermined bit precision
CN104396250B (zh) 2012-07-02 2018-04-03 高通股份有限公司 用于3d视频译码的深度图的帧内译码的方法和装置
US9325990B2 (en) 2012-07-09 2016-04-26 Qualcomm Incorporated Temporal motion vector prediction in video coding extensions
US9491461B2 (en) 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
US9648318B2 (en) * 2012-09-30 2017-05-09 Qualcomm Incorporated Performing residual prediction in video coding
US9924168B2 (en) * 2012-10-05 2018-03-20 Hfi Innovation Inc. Method and apparatus of motion vector derivation 3D video coding
US9438926B2 (en) 2012-12-21 2016-09-06 Qualcomm Incorporated Constraints on neighboring block based disparity vector (NBDV) techniques for 3D video
JP6149151B2 (ja) 2013-04-02 2017-06-14 ヴィド スケール インコーポレイテッド スケーラブルビデオコーディングのための拡張時間的動きベクトル予測
EP3410715A1 (en) 2013-04-05 2018-12-05 Vid Scale, Inc. Inter-layer reference picture enhancement for multiple layer video coding
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
US9554150B2 (en) 2013-09-20 2017-01-24 Qualcomm Incorporated Combined bi-predictive merging candidates for 3D video coding
US9497473B2 (en) * 2013-10-03 2016-11-15 Qualcomm Incorporated High precision explicit weighted prediction for video coding
US9571837B2 (en) 2013-11-01 2017-02-14 Broadcom Corporation Color blending prevention in video coding
WO2015085575A1 (en) 2013-12-13 2015-06-18 Mediatek Singapore Pte. Ltd. Methods for background residual prediction
WO2015109598A1 (en) 2014-01-27 2015-07-30 Mediatek Singapore Pte. Ltd. Methods for motion parameter hole filling
EP3114839A4 (en) 2014-03-07 2018-02-14 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
EP3198872A1 (en) 2014-09-26 2017-08-02 VID SCALE, Inc. Intra block copy coding with temporal block vector prediction
US10075692B2 (en) * 2015-01-28 2018-09-11 Hfi Innovation Inc. Method of simple intra mode for video coding
WO2017131908A1 (en) * 2016-01-29 2017-08-03 Google Inc. Dynamic reference motion vector coding mode
JP2019519148A (ja) 2016-05-13 2019-07-04 ヴィド スケール インコーポレイテッド ビデオ符号化のための一般化された多重仮説予測(Generalized Multi−Hypothesis Prediction)のためのシステムおよび方法
KR102516067B1 (ko) * 2016-07-14 2023-03-30 삼성전자주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치
US10477238B2 (en) * 2016-09-07 2019-11-12 Qualcomm Incorporated Sub-PU based bi-directional motion compensation in video coding
US10951912B2 (en) 2016-10-05 2021-03-16 Qualcomm Incorporated Systems and methods for adaptive selection of weights for video coding
CN109983773A (zh) * 2016-11-29 2019-07-05 联发科技股份有限公司 用于合并模式推导的视频编解码方法和装置
US10779007B2 (en) 2017-03-23 2020-09-15 Mediatek Inc. Transform coding of video data
US10582209B2 (en) * 2017-03-30 2020-03-03 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-PU TMVP) for video coding
US10805630B2 (en) 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US20200236361A1 (en) * 2017-07-18 2020-07-23 Lg Electronics Inc. Intra prediction mode based image processing method, and apparatus therefor
CN109587479B (zh) * 2017-09-29 2023-11-10 华为技术有限公司 视频图像的帧间预测方法、装置及编解码器
US11558633B2 (en) * 2017-11-01 2023-01-17 Vid Scale, Inc. Sub-block motion derivation and decoder-side motion vector refinement for merge mode
WO2019143602A1 (en) 2018-01-16 2019-07-25 Vid Scale, Inc. Motion compensated bi-prediction based on local illumination compensation
US11153602B2 (en) 2018-01-24 2021-10-19 Vid Scale, Inc. Generalized bi-prediction for video coding with reduced coding complexity
CA3090562C (en) * 2018-02-12 2023-03-14 Mediatek Inc. Method and apparatus of current picture referencing for video coding using adaptive motion vector resolution and sub-block prediction mode
CN110419217B (zh) 2018-04-02 2023-09-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
WO2019234578A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Asymmetric weighted bi-predictive merges
MX2021000129A (es) 2018-06-27 2021-03-25 Vid Scale Inc Métodos y aparato para reducir la latencia de codificación del refinamiento de movimiento lateral de decodificador.
TWI750486B (zh) 2018-06-29 2021-12-21 大陸商北京字節跳動網絡技術有限公司 運動資訊共用的限制
TW202029755A (zh) 2018-09-26 2020-08-01 美商Vid衡器股份有限公司 視訊編碼雙預測
KR20240007302A (ko) 2018-11-12 2024-01-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인터 및 인트라 통합 예측의 단순화
SG11202104586XA (en) * 2018-11-16 2021-06-29 Sharp Kk Systems and methods for deriving a motion vector prediction in video coding
CN113039801B (zh) 2018-11-17 2023-12-19 北京字节跳动网络技术有限公司 用运动矢量差候选构建Merge
MX2021007631A (es) 2018-12-27 2021-08-11 Sharp Kk Aparato generador de imagenes de prediccion, aparato de decodificacion de video, aparato de codificacion de video, y metodo de generacion de imagenes de prediccion.
CN118474390A (zh) * 2019-01-02 2024-08-09 Lg 电子株式会社 基于sbtmvp的帧间预测方法和设备
CN113316933A (zh) 2019-01-17 2021-08-27 北京字节跳动网络技术有限公司 使用运动预测进行去方块滤波
US11909960B2 (en) * 2019-03-07 2024-02-20 Lg Electronics Inc. Method and apparatus for processing video signal
US11323731B2 (en) * 2019-03-08 2022-05-03 Tencent America LLC Method and apparatus for video coding
KR102695896B1 (ko) * 2019-03-12 2024-08-19 엘지전자 주식회사 쌍 예측을 위한 가중치 인덱스 정보를 유도하는 비디오 또는 영상 코딩
CN113826397A (zh) * 2019-03-15 2021-12-21 交互数字Vc控股公司 用于图像编码和解码的方法和设备
JP7259090B2 (ja) * 2019-06-13 2023-04-17 エルジー エレクトロニクス インコーポレイティド サブブロック単位の時間動きベクトル予測子候補に基づく映像またはビデオコーディング
WO2020251319A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 Sbtmvp를 이용한 인터 예측 기반 영상 또는 비디오 코딩
WO2020251321A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 Sbtmvp 기반 영상 또는 비디오 코딩
EP3985980A4 (en) * 2019-06-14 2023-06-28 Lg Electronics Inc. Image decoding method and device for deriving weight index information for generation of prediction sample
JP7323710B2 (ja) 2019-09-13 2023-08-08 北京字節跳動網絡技術有限公司 映像符号化における重み付けサンプルの双予測

Also Published As

Publication number Publication date
EP4011077A4 (en) 2022-11-30
WO2021047631A1 (en) 2021-03-18
WO2021047632A1 (en) 2021-03-18
US11595658B2 (en) 2023-02-28
CN114402591A (zh) 2022-04-26
US20220201310A1 (en) 2022-06-23
US20240098267A1 (en) 2024-03-21
JP7323710B2 (ja) 2023-08-08
EP4011077A1 (en) 2022-06-15
CN114402591B (zh) 2024-08-02
CN114402610A (zh) 2022-04-26
JP2022548580A (ja) 2022-11-21
US20220201314A1 (en) 2022-06-23
JP2023145592A (ja) 2023-10-11
US12063348B2 (en) 2024-08-13
BR112022004553A2 (pt) 2022-06-07

Similar Documents

Publication Publication Date Title
US11706443B2 (en) Construction of affine candidates in video processing
KR102639936B1 (ko) 비디오 처리에서 모델-기반 변형에 대한 제약들
KR102662616B1 (ko) 어파인 모드를 위한 적응적 모션 벡터 차이 해상도
US11595658B2 (en) Derivation of collocated motion vectors
JP2023501191A (ja) クロス成分映像コーディングにおける線形パラメータの導出
WO2020236719A2 (en) Transform design for large blocks in video coding
KR20220023338A (ko) 모션 벡터 차이에 대한 제약
US20220217341A1 (en) Adaptive resolution change and scalable coding for screen contents
WO2021219144A1 (en) Entropy coding for partition syntax
CN114747217A (zh) 调色板编解码模式
WO2021047633A1 (en) Skip mode signaling
JP7556980B2 (ja) クロスコンポーネント映像コーディングの信号通知のための構文
JP7473680B2 (ja) クロスコンポーネント予測のための利用制約