KR20220113379A - 비디오 픽처 헤더의 슬라이스 유형의 시그널링 - Google Patents

비디오 픽처 헤더의 슬라이스 유형의 시그널링 Download PDF

Info

Publication number
KR20220113379A
KR20220113379A KR1020227018951A KR20227018951A KR20220113379A KR 20220113379 A KR20220113379 A KR 20220113379A KR 1020227018951 A KR1020227018951 A KR 1020227018951A KR 20227018951 A KR20227018951 A KR 20227018951A KR 20220113379 A KR20220113379 A KR 20220113379A
Authority
KR
South Korea
Prior art keywords
picture
video
slice
slices
bitstream
Prior art date
Application number
KR1020227018951A
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 KR20220113379A publication Critical patent/KR20220113379A/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/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/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/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/172Methods 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 picture, frame or field
    • 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

Landscapes

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

Abstract

디지털 비디오 코딩, 특히 비디오 픽처 헤더에서 슬라이스 유형의 시그널링과 관련된 장치, 시스템 및 방법이 설명된다. 비디오 프로세싱의 하나의 예시적인 방법은 하나 이상의 슬라이스(slice)를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은 포맷 규칙을 따르고, 포맷 규칙은 I 슬라이스로서 코딩된 모든 슬라이스를 갖는 하나 이상의 비디오 픽처의 비디오 픽처에 대해, P 슬라이스 및 B 슬라이스 관련 신택스 요소가 상기 비디오 픽처에 대한 픽처 헤더로부터 생략되는 것을 지정한다.

Description

비디오 픽처 헤더의 슬라이스 유형의 시그널링
이 특허 문서는 비디오 코딩 기술, 장치 및 시스템과 관련이 있다.
적용 가능한 특허법 및/또는 파리 협약에 따른 규칙에 따라, 본 출원은 2019년 12월 27일에 출원된 국제 특허 출원 PCT/CN2019/129069에 대한 우선권 및 혜택을 적시에 주장하기 위해 만들어졌다. 법에 따라 모든 목적을 위해, 상기 출원의 전체 공개는 이 출원의 공개의 일환으로 참조에 의해 통합된다.
현재, 더 나은 압축 비율을 제공하거나 더 낮은 복잡성 또는 병렬 구현을 허용하는 비디오 코딩 및 디코딩 방식을 제공하기 위해 현재 비디오 코덱 기술의 성능을 개선하려는 노력이 진행 중이다. 업계 전문가들은 최근 몇 가지 새로운 비디오 코딩 툴(video coding tool)을 제안했고, 효과를 확인하기 위한 테스트가 현재 진행 중이다.
디지털 비디오 코딩, 특히 비디오 픽처 헤더에서 슬라이스 유형의 시그널링과 관련된 장치, 시스템 및 방법이 설명된다. 설명된 방법은 기존 비디오 코딩 표준(예를 들어, 고효율 비디오 코딩(High Efficiency Video Coding)(HEVC) 또는 범용 비디오 코딩(Versatile Video Coding)) 및 향후 비디오 코딩 표준 또는 비디오 코덱에 적용될 수 있다.
대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은 하나 이상의 슬라이스(slice)를 포함하는 하나 이상의 비디오 픽처(video picture)를 포함하는 비디오와 비디오의 비트스트림(bitstream) 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은 포맷 규칙(format rule)을 따르고, 포맷 규칙은 I 슬라이스로서 코딩된 모든 슬라이스를 갖는 상기 하나 이상의 비디오 픽처의 비디오 픽처에 대해, P 슬라이스 및 B 슬라이스 관련 신택스 요소(syntax element)가 상기 비디오 픽처에 대한 픽처 헤더로부터 생략되는 것을 지정한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리 방법을 제공하는 데 사용될 수 있다. 이 방법은 하나 이상의 슬라이스를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은 포맷 규칙을 따르고, 포맷 규칙은 각각의 비디오 픽처에 대한 픽처 헤더가 비디오 픽처의 모든 슬라이스가 동일한 코딩 유형으로 코딩되는지 여부를 나타내는 신택스 요소를 포함하는 것을 지정한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은 포맷 규칙을 따르고, 포맷 규칙은 하나 이상의 비디오 픽처 각각에 대한 픽처 헤더(picture header)가 픽처 유형(picture type)을 나타내는 신택스 요소를 포함하는 것을 지정한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서 포맷 규칙은 픽처에 대한 픽처 유형을 나타내는 신택스 요소가 액세스 유닛(access unit)(AU) 구분 문자(delimiter) 원시 바이트 시퀀스 페이로드(raw byte sequence payload)(RBSP)에서 시그널링되는 것을 지정하고, 여기서 신택스 요소는 픽처의 모든 슬라이스가 I-슬라이스인지 여부를 나타낸다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은 하나 이상의 비디오 슬라이스를 포함하는 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서, 비트스트림은 포맷 규칙을 따르고, 픽처의 복수의 슬라이스 각각을 갖는 픽처는 I-슬라이스이고, 포맷 규칙은 슬라이스 유형의 표시가 인코딩 동안 비트스트림의 복수의 슬라이스의 슬라이스 헤더로부터 제외되거나 디코딩 동안 I-슬라이스인 것으로 추론되는 것을 지정한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은, W-슬라이스 또는 W-픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환에 대해, 하나 이상의 비-W 관련 신택스 요소가 W-슬라이스의 슬라이스 헤더 또는 W-픽처의 픽처 헤더에서 시그널링되는지 여부에 관하여 결정을 내리는 단계를 포함하고, 여기서 W는 I, B 또는 P이고, 결정에 기초하여 변환을 수행한다.
또 다른 예시적인 측면에서, 비디오 인코더 장치(video encoder apparatus)가 개시된다. 비디오 인코더는 전술한 방법을 구현하도록 구성된 프로세서(processor)를 포함한다.
또 다른 예시적인 측면에서, 비디오 디코더 장치(video decoder apparatus)가 개시된다. 비디오 디코더는 전술한 방법을 구현하도록 구성된 프로세서를 포함한다.
또 다른 대표적인 측면에서, 코드(code)가 저장된 컴퓨터 판독 가능 매체(computer readable medium)가 개시된다. 코드는 프로세서 실행 가능 코드의 형태로 여기에 설명된 방법 중 하나를 구현한다.
이러한 기능 및 기타 기능은 본 문서 전체에 걸쳐 설명되어 있다.
도 1은 서브 블록 모션 벡터(sub-block motion vector)(VSB)와 모션 벡터 차이의 예를 나타낸다.
도 2는 16개의 4x4 영역으로 분할된 16x16 비디오 블록의 예를 나타낸다.
도 3a-3c는 샘플의 특정 위치의 예를 보여줍니다.
도 4a 및 도 4b는 현재 픽처에서의 현재 샘플 및 레퍼런스 픽처에서의 레퍼런스 샘플의 위치의 예를 도시한다.
도 5는 디코더 측 모션 비디오 정제(decoder side motion vector refinement)(DMVR)의 예를 도시한다.
도 6은 VTM5.0에서 DMVR 및 BDOF 프로세스를 캐스케이딩하는 흐름의 예를 나타낸다. DMVR SAD 동작과 BDOF SAD 동작은 상이하고 공유되지 않는다.
도 7은 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템을 도시한 블록도이다.
도 8은 비디오 처리에 사용되는 예시적인 하드웨어 플랫폼의 블록도이다.
도 9는 본 개시의 일부 실시예를 구현할 수 있는 예시적인 비디오 코딩 시스템을 예시하는 블록도이다.
도 10은 본 개시의 일부 실시예를 구현할 수 있는 인코더의 예를 예시하는 블록도이다.
도 11은 본 개시의 일부 실시예를 구현할 수 있는 디코더의 예를 예시하는 블록도이다.
도 12 내지 17은 비디오 처리의 예시적인 방법에 대한 흐름도를 도시한다.
1. HEVC/H.265의 비디오 코딩
비디오 코딩 표준은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준의 개발을 통해 발전해 왔다. ITU-T는 H.261및 H.263을 제작했으며, ISO/IEC는 MPEG-1 및 MPEG-4 비주얼을 제작했으며, 두 조직은 H.262/MPEG-2 비디오 및 H.264/MPEG-4 고급 비디오 코딩(AVC) 및 H.265/HEVC 표준을 공동 제작했다. H.262 이후, 비디오 코딩 표준은 시간적 예측(temporal prediction)과 트랜스폼 코딩(transform coding)이 활용되는 하이브리드 비디오 코딩 구조에 기초한다. HEVC를 넘어 미래의 비디오 코딩 기술을 연구하기 위해, 공동 비디오 연구팀(JVET: Joint Video Exploration Team)이 2015년에 VCEG와 MPEG의 공동으로 설립되었다. 그 이후로, JVET에 의해 많은 새로운 방법들이 채택되었고, 공동 연구 모델 (JEM: Joint Exploration Model)이라고 명명된 레퍼런스 픽처소프트웨어(reference software)에 적용되었다. 2018년 4월, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 사이의 공동 비디오 전문가 팀(Joint Video Expert Team)(JVET)는 HEVC에 비해 50% 비트 전송률 감소를 목표로 하는 VVC 표준 작업을 위해 만들어졌다.
VVC 초안의 최신 버전, 즉 다목적 비디오 코딩(초안 4)는 다음에서 찾을 수 있다: http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET-O2001-v14.zip. VTM이라는 VVC의 최신 참조 소프트웨어는 다음에서 찾을 수 있다: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-6.0.
AVC 및 HEVC는 IDR 또는 인트라 랜덤 액세스 포인트(Intra Random Access Point)(IRAP) 픽처를 도입하지 않고 해상도를 변경할 수 없고; 이러한 능력을 적응형 해상도 변경(Adaptive Resolution Change)(ARC)라고 할 수 있다. 다음을 포함하여 ARC 기능의 이점을 얻을 수 있는 사용 사례 또는 애플리케이션 시나리오가 있다:
- 화상 통화 및 회의의 속도 조정: 코딩된 비디오를 변화하는 네트워크 조건에 적응시키기 위해, 네트워크 조건이 악화되어 가용 대역폭이 낮아지면 인코더는 더 작은 해상도의 픽처를 인코딩하여 적응할 수 있다. 현재, 픽처 해상도 변경은 IRAP 픽처 후에만 수행할 수 있고; 이것은 몇 가지 문제가 있다. 합리적인 품질의 IRAP 픽처는 인터 코딩된 픽처보다 훨씬 크고, 그에 따라 디코딩이 더 복잡한다: 여기에는 시간과 리소스가 소요된다. 이것은 로딩상의 이유로 디코더에서 해상도 변경을 요청하는 경우에 문제이다. 또한 지연 시간이 짧은 버퍼 조건을 깨고 오디오 재동기화를 강제할 수 있고, 스트림의 종단 간 지연이 적어도 일시적으로 증가한다. 이로 인해 사용자 환경이 좋지 않을 수 있다.
- 다자간 픽처 회의에서 발표자 활성 변경: 다자간 픽처 회의에서 활성 발언자 변경: 다자간 픽처 회의의 경우 현재 발언자가 나머지 회의 참가자의 비디오보다 큰 비디오 크기로 표시되는 것이 일반적이다. 현재 발언자가 변경되면, 각 참가자의 픽처 해상도도 조정해야 할 수 있다. 이러한 활성 스피커의 변경이 자주 발생하는 경우 ARC 기능의 필요성이 더욱 중요해진다.
- 스트리밍의 빠른 시작: 스트리밍 애플리케이션의 경우, 애플리케이션이 표시를 시작하기 전에 디코딩된 픽처의 특정 길이까지 버퍼링하는 것이 일반적이다. 더 작은 해상도로 비트스트림을 시작하면 애플리케이션이 버퍼에 더 빨리 표시할 수 있는 충분한 픽처를 가질 수 있다.
스트리밍의 적응형 스트림 전환: HTTP상의 동적 적응형 스트리밍(Dynamic Adaptive Streaming over HTTP)(DASH) 사양에는 @mediaStreamStructureId라는 기능이 포함되어 있다. 이것은 디코딩 불가능한 리딩 픽처, 예들 들어, HEVC에서 연관된 RASL 픽처를 갖는 CRA 픽처를 갖는 개방형 GOP 랜덤 액세스 포인트에서의 상이한 표현 사이의 스위칭을 가능하게 한다. 동일한 비디오의 두 가지 다른 표현이 @mediaStreamStructureId의 동일한 값을 갖는 동안 다른 비트레이트를 갖지만 동일한 공간 해상도를 갖는 경우, 연관된 RASL 픽처가 있는 CRA 픽처에서 두 표현 사이의 전환이 수행될 수 있고, 전환 CRA 픽처(switching-at CRA picture)는 허용 가능한 품질로 디코딩될 수 있으므로 원활한 전환이 가능하다. ARC를 사용하면, @mediaStreamStructureId 기능을 사용하여 공간 해상도가 다른 DASH 표현을 전환할 수도 있다.
ARC는 동적 해상도 변환(Dynamic resolution conversion)이라고도 한다.
ARC는 H.263 Annex P와 같은 레퍼런스 픽처 리샘플링(Reference Picture Resampling)(RPR)의 특수한 경우로 간주될 수도 있다.
2.1. H.263 부록 P의 레퍼런스 픽처 리샘플링(Reference picture resampling)
이 모드는 레퍼런스 픽처를 예측에 사용하기 전에 워프(warp)하는 알고리즘을 설명한다. 예측되는 픽처와 다른 소스 포맷을 갖는 레퍼런스 픽처를 리샘플링하는 데 유용할 수 있다. 또한 레퍼런스 픽처의 모양, 크기 및 위치를 워핑(warping)하여 글로벌 모션 추정 또는 회전 모션 추정에 사용할 수도 있다. 신택스는 사용할 워핑 파라미터와 리샘플링 알고리즘을 포함한다. 레퍼런스 픽처 리샘플링 모드의 가장 간단한 동작(operation) 레벨은 업샘플링 및 다운샘플링 프로세스에 FIR 필터만 적용하면 되므로 4 리샘플링의 암시적 요소이다. 이 경우, 새로운 픽처(픽처 헤더에 표시됨)의 크기가 이전 픽처와 다를 때 사용을 이해하므로 추가적인 시그널링 오버헤드가 필요하지 않다.
2.2. ARC에서 VVC로의 기여
아래에 나열된 것처럼, ARC를 해결하기 위한 몇 가지 기여가 제안되었다:
JVET-M0135, JVET-M0259, JVET-N0048, JVET-N0052, JVET-N0118, JVET-N0279.
2.3. VVC의 적합성 윈도우(conformance window)
VVC의 적합성 윈도우는 직사각형을 정의한다. 적합성 윈도우 내부의 샘플은 관심 이미지에 속한다. 적합성 윈도우 외부의 샘플은 출력 시 폐기될 수 있다.
적합성 윈도우가 적용되면 RPR의 스케일링 비율은 적합성 윈도우에 기초하여 유도된다.
픽처 파라미터 세트 RBSP 신택스
Figure pct00001
pic_width_in_luma_samples는 루마 샘플 유닛에서 PPS를 참조하는 각 디코딩 픽처의 너비를 지정한다. pic_width_in_luma_samples는 0이 아니어야 하고, Max(8, MinCbSizeY)의 정수배여야 하고, pic_width_max_in_luma_samples보다 작거나 동일해야 한다.
subpics_present_flag가 1과 같을 때, pic_width_in_luma_samples의 값은 pic_width_max_in_luma_samples와 동일해야 한다.
pic_height_in_luma_samples는 루마 샘플 유닛에서 PPS를 참조하는 각 디코딩 픽처의 높이를 지정한다. pic_height_in_luma_samples는 0이 아니어야 하고, Max( 8, MinCbSizeY )의 정수 배수여야 하고, pic_height_max_in_luma_samples보다 작거나 동일해야 한다.
subpics_present_flag가 1과 같을 때, pic_height_in_luma_samples의 값은 pic_height_max_in_luma_samples와 동일해야 한다.
refPicWidthInLumaSamples 및 refPicHeightInLumaSamples를 각각 이 PPS를 참조하는 현재 픽처의 레퍼런스 픽처의 pic_width_in_luma_samples 및 pic_height_in_luma_samples라고 하자. 다음 조건이 모두 충족되는 비트스트림 적합성의 요구 사항이다:
- pic_width_in_luma_samples * 2는 refPicWidthInLumaSamples보다 크거나 동일해야 한다.
- pic_height_in_luma_samples * 2는 refPicHeightInLumaSamples보다 크거나 동일해야 한다.
- pic_width_in_luma_samples는 refPicWidthInLumaSamples * 8보다 작거나 동일해야 한다.
- pic_height_in_luma_samples는 refPicHeightInLumaSamples * 8보다 작거나 동일해야 한다.
1과 동일한 conformance_window_flag는 SPS에서 적합성 자르기 윈도우 오프셋 파라미터가 다음에 따른다는 것을 나타낸다. 0과 동일한 conformance_window_flag는 적합성 자르기 윈도우 오프셋 파라미터가 존재하지 않음을 나타낸다.
conf_win_left_offset, conf_win_right_offset, conf_win_top_offset 및 conf_win_bottom_offset은 출력을 위한 픽처 좌표에 지정된 직사각형 영역의 관점에서 디코딩 프로세스에서 출력되는 CVS의 픽처 샘플을 지정한다. conformance_window_flag가 0과 같을 때 conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, conf_win_bottom_offset의 값은 0과 같은 것으로 유추된다.
적합성 크로핑 윈도우는 SubWidthC * conf_win_left_offset to pic_width_in_luma_samples - ( SubWidthC * conf_win_right_offset + 1 의 수평 픽처 좌표 및 SubHeightC * conf_win_top_offset to pic_height_in_luma_samples - ( SubHeightC * conf_win_bottom_offset + 1 )의 수직 픽처 좌표가 포함되는 좌표를 갖는 루마 샘플을 포함한다.
SubWidthC * ( conf_win_left_offset + conf_win_right_offset ) 의 값은 pic_width_in_luma_samples 보다 작아야 하고, SubHeightC * ( conf_win_top_offset + conf_win_bottom_offset ) 의 값은 pic_height_in_luma_samples 보다 작아야 한다.
PicOutputWidthL 및 PicOutputHeightL 변수는 다음과 같이 유도된다:
PicOutputWidthL = pic_width_in_luma_samples - (7-43)
SubWidthC * ( conf_win_right_offset + conf_win_left_offset )
PicOutputHeightL = pic_height_in_pic_size_units - (7-44) SubHeightC * ( conf_win_bottom_offset + conf_win_top_offset )
ChromaArrayType이 0이 아닐 때, 두 크로마 어레이의 해당하는 지정된 샘플은 픽처 좌표( x / SubWidthC, y / SubHeightC )를 갖는 샘플이고, 여기서 ( x, y )는 지정된 루마 샘플의 픽처 좌표이다.
참고 - 적합성 크로핑 윈도우 오프셋 파라미터는 출력에만 적용된다. 모든 내부 디코딩 프로세스는 크롭되지 않은 픽처 크기에 적용된다.
ppsA 및 ppsB를 동일한 SPS를 참조하는 임의의 두 PPS라고 가정한다. ppsA 및 ppsB가 각각 pic_width_in_luma_samples 및 pic_height_in_luma_samples의 동일한 값을 가질 때, ppsA 및 ppsB는 각각 conf_win_left_offset, conf_win_right_offset, conf_win_right_offset, _offset_win,_conf의 동일한 값을 가져야 하는 것이 비트스트림 적합성의 요구사항이다.
2.4. JVET-O2001-v14의 RPR
ARC, 일명 레퍼런스 픽처 리샘플링(Reference Picture Resampling)(RPR)이 JVET-O2001-v14에 통합되었다.
RPR의 일부 구현 예에서, 병치된 픽처의 해상도가 현재 픽처와 다른 경우 TMVP가 비활성화된다. 또한 레퍼런스 픽처의 해상도가 현재 픽처와 다른 경우 BDOF 및 DMVR이 비활성화된다.
레퍼런스 픽처가 현재 픽처와 다른 해상도를 가질 때 일반 MC를 처리하기 위해, 보간 섹션은 다음과 같이 정의된다:
8.5.6.3 분수 샘플 보간 프로세스
8.5.6.3.1 일반
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플을 기준으로 현재 코딩 서브블록의 왼쪽 상단 샘플을 지정하는 루마 위치(xSb, ySb),
- 현재 코딩 서브블록의 너비를 지정하는 변수 sbWidth,
- 현재 코딩 서브블록의 높이를 지정하는 변수 sbHeight,
- 모션 벡터 오프셋 mvOffset,
- 세련된 모션 벡터 refMvLX,
- 선택한 레퍼런스 픽처 샘플 어레이 refPicLX,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 양방향 광학 흐름 플래그 bdofFlag,
- 현재 블록의 컬러 컴포넌트 인덱스를 지정하는 가변 cIdx이다.
이 프로세스의 출력은 다음과 같다:
- 예측 샘플 값의 (sbWidth + brdExtSize)x(sbHeight + brdExtSize) array predSamplesLX of prediction
예측 블록 경계 확장 크기 brdExtSize는 다음과 같이 유도된다:
brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 (8-752)
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다.
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ( ( xSb  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC =  ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-764)
refySbC =  ( ( ySb / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-766)
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
- 예측 샘플 값 predSamplesLX [xC] [yC]는 (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight 및 refPicLX을 입력으로 하여 8.5.6.3.4에 지정된 프로세스를 호출하여 유도된다:
8.5.6.3.2 루마 샘플 보간 필터링 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 루마 위치(xIntL, yIntL)
- 분수 샘플 유닛의 루마 위치 (xFracL, yFracL),
- 레퍼런스 픽처의 왼쪽 상단 루마 샘플을 기준으로 레퍼런스 샘플 패딩에 대한 경계 블록의 왼쪽 상단 샘플을 지정하는 전체 샘플 유닛(xSbIntL, ySbIntL)의 루마 위치,
- 루마 레퍼런스 샘플 어레이 refPicLXL,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 현재 서브블록의 너비를 지정하는 변수 sbWidth,
- 현재 서브블록의 높이를 지정하는 변수 sbHeight,
- 현재 픽처의 왼쪽 상단 루마 샘플에 상대적인 현재 서브블록의 왼쪽 상단 샘플을 지정하는 루마 위치 (xSb, ySb),
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL 이다.
shift1, shift2 및 shift3 변수는 다음과 같이 유도된다:
- 변수 shift1은 Min(4, BitDepthY - 8)과 동일하게 설정되고, 변수 shift2는 6과 동일하게 설정되고, 변수 shift3는 Max(2, 14 - BitDepthY)와 동일하게 설정된다.
- 변수 picW는 pic_width_in_luma_samples 동일하게 설정되고, 변수 picH는 pic_height_in_luma_samples 동일하게 설정된다.
xFracL 또는 yFracL과 같은 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL[p]는 다음과 같이 유도된다:
- MotionModelIdc [xSb] [ySb]가 0보다 크고, sbWidth와 sbHeight가 모두 4이면 루마 보간 필터 계수 fL[p]가 표 2에 지정된다.
- 그렇지 않으면, 루마 보간 필터 계수 fL[p]는 hpelIfIdx에 따라 표 1에 지정된다.
전체 샘플 유닛(xInti, yInti)의 루마 위치는 i = 0..7에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i - 3 ) (8-771)
yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3 ) (8-772)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 동일함), 다음이 적용된다:
xInti = Clip3( 0, picW - 1, sps_ref_wraparound_enabled_flag
ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL + i - 3 ) : (8-773)
xIntL + i - 3)
yInti = Clip3(0, picH - 1, yIntL + i - 3) (8-774)
전체 샘플 유닛의 루마 위치는 i = 0..7에 대해 다음과 같이 추가로 수정된다:
xInti = Clip3(xSbIntL - 3, xSbIntL + sbWidth + 4, xInti) (8-775)
yInti = Clip3(ySbIntL - 3, ySbIntL + sbHeight + 4, yInti) (8-776)
예측된 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
- xFracL과 yFracL이 모두 0이면, predSampleLXL의 값은 다음과 같이 유도된다:
predSampleLXL = refPicLXL[ xInt3 ][ yInt3 ] << shift3 (8-777)
- 그렇지 않으면, xFracL이 0이 아니고 yFracL이 0이면 predSampleLXL의 값은 다음과 같이 유도된다:
predSampleLXL =
Figure pct00002
  >>  shift1 (8-778)
그렇지 않으면, xFracL이 0이고 yFracL이 0이 아닌 경우, predSampleLXL의 값은 다음과 같이 유도된다:
predSampleLXL =
Figure pct00003
  >>  shift1 (8-779)
- 그렇지 않으면, xFracL이 0이 아니고, yFracL이 0이 아닌 경우, predSampleLXL의 값은 다음과 같이 유도된다:
- n = 0..7 인 샘플 어레이 temp [n]은 다음과 같이 유도된다:
temp[ n ] =
Figure pct00004
  >>  shift1 (8-780)
- 예측된 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
predSampleLXL =
Figure pct00005
  >>  shift2 (8-781)
각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL[p]의 사양.
분수 샘플
위치 p
보간 필터 계수
f L [p][0] f L [p][1] f L [p][2] f L [p][3] f L [p][4] f L [p][5] f L [p][6] f L [p][7]
1 0 1 -3 63 4 -2 1 0
2 -1 2 -5 62 8 -3 1 0
3 -1 3 -8 60 13 -4 1 0
4 -1 4 -10 58 17 -5 1 0
5 -1 4 -11 52 26 -8 3 -1
6 -1 3 -9 47 31 -10 4 -1
7 -1 4 -11 45 34 -10 4 -1
8 (hpelIfIdx = = 0) -1 4 -11 40 40 -11 4 -1
8 (hpelIfIdx = = 1) 0 3 9 20 20 9 3 0
9 -1 4 -10 34 45 -11 4 -1
10 -1 4 -10 31 47 -9 3 -1
11 -1 3 -8 26 52 -11 4 -1
12 0 1 -5 17 58 -10 4 -1
13 0 1 -4 13 60 -8 3 -1
14 0 1 -3 8 62 -5 2 -1
15 0 1 -2 4 63 -3 1 0
아핀 모션 모드에 대한 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]의 사양.
분수 샘플 위치 p 보간 필터 계수
f L [p][0] f L [p][1] f L [p][2] f L [p][3] f L [p][4] f L [p][5] f L [p][6] f L [p][7]
1 0 1 -3 63 4 -2 1 0
2 0 1 -5 62 8 -3 1 0
3 0 2 -8 60 13 -4 1 0
4 0 3 -10 58 17 -5 1 0
5 0 3 -11 52 26 -8 2 0
6 0 2 -9 47 31 -10 3 0
7 0 3 -11 45 34 -10 3 0
8 0 3 -11 40 40 -11 3 0
9 0 3 -10 34 45 -11 3 0
10 0 3 -10 31 47 -9 2 0
11 0 2 -8 26 52 -11 3 0
12 0 1 -5 17 58 -10 3 0
13 0 1 -4 13 60 -8 2 0
14 0 1 -3 8 62 -5 1 0
15 0 1 -2 4 63 -3 1 0
8.5.6.3.3 루마 정수 샘플 패치 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 루마 위치(xIntL, yIntL)
- 루마 레퍼런스 샘플 어레이 refPicLXL,
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL 이다.
변수 shift는 Max(2, 14 - BitDepthY)와 동일하게 설정된다.
변수 picW는 pic_width_in_luma_samples 동일하게 설정되고, 변수 picH는 pic_height_in_luma_samples 동일하게 설정된다.
전체 샘플 유닛(xInt, yInt)의 루마 위치는 다음과 같이 유도된다:
xInt = Clip3( 0, picW - 1, sps_ref_wraparound_enabled_flag (8-782)
ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL ) : xIntL )
yInt = Clip3( 0, picH - 1, yIntL ) (8-783)
예측된 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
predSampleLXL = refPicLXL[ xInt ][ yInt ] << shift3 (8-784)
8.5.6.3.4 크로마 샘플 보간 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 크로마 위치 (xIntC, yIntC),
- 1/32 부분 샘플 유닛(xFracC, yFracC)의 크로마 위치,
- 레퍼런스 픽처의 왼쪽 상단 크로마 샘플에 대한 레퍼런스 샘플 패딩에 대한 경계 블록의 왼쪽 상단 샘플을 지정하는 전체 샘플 유닛(xSbIntC, ySbIntC)의 크로마 위치,
- 현재 서브블록의 너비를 지정하는 변수 sbWidth,
- 현재 서브블록의 높이를 지정하는 변수 sbHeight,
- 크로마 레퍼런스 샘플 어레이 refPicLXC
이 프로세스의 출력은 예측된 크로마 샘플 값 predSampleLXC이다.
shift1, shift2 및 shift3 변수는 다음과 같이 유도된다:
- 변수 shift1은 Min(4, BitDepthC - 8)과 동일하게 설정되고, 변수 shift2는 6과 동일하게 설정되고, shift3 변수는 Max(2, 14 - BitDepthC)와 동일하게 설정된다.
- 변수 picWC는 pic_width_in_luma_samples/SubWidthC와 동일하게 설정되고 변수 picHC는 pic_height_in_luma_samples/SubHeightC와 동일하게 설정된다.
xFracC 또는 yFracC와 같은 각 1/32 부분 샘플 위치 p에 대한 크로마 보간 필터 계수 fC [p]는 표 3에 지정되어 있다.
변수 xOffset는 (sps_ref_wraparound_offset_minus1 + 1) * MinCbSizeY)/SubWidthC와 동일하게 설정된다.
전체 샘플 유닛(xInti, yInti)의 크로마 위치는 i = 0..3에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInti = Clip3( SubPicLeftBoundaryPos / SubWidthC, SubPicRightBoundaryPos / SubWidthC, xIntL + i ) (8-785)
yInti = Clip3( SubPicTopBoundaryPos / SubHeightC, SubPicBotBoundaryPos / SubHeightC, yIntL + i ) (8-786)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 동일함), 다음이 적용된다:
xInti = Clip3( 0, picWC - 1, sps_ref_wraparound_enabled_flag ? ClipH( xOffset, picWC, xIntC + i - 1 ) : (8-787)
xIntC + i - 1 )
yInti = Clip3( 0, picHC - 1, yIntC + i - 1 ) (8-788)
전체 샘플 유닛( xInti, yInti )의 크로마 위치는 i = 0..3에 대해 다음과 같이 추가로 수정된다:
xInti = Clip3( xSbIntC - 1, xSbIntC + sbWidth + 2, xInti ) (8-789)
yInti = Clip3( ySbIntC - 1, ySbIntC + sbHeight + 2, yInti ) (8-790)
예측된 크로마 샘플 값 predSampleLXC는 다음과 같이 유도된다:
- xFracC 및 yFracC가 모두 0이면, predSampleLXC의 값은 다음과 같이 유도된다:
predSampleLXC = refPicLXC[ xInt1 ][ yInt1 ] << shift3 (8-791)
- 그렇지 않으면, xFracC가 0이 아니고 yFracC가 0이면 predSampleLXC의 값은 다음과 같이 유도된다:
predSampleLXC =
Figure pct00006
  >>  shift1 (8-792)
- 그렇지 않으면, xFracC가 0이고 yFracC가 0이 아니면, predSampleLXC의 값은 다음과 같이 유도된다:
predSampleLXC =
Figure pct00007
  >>  shift1 (8-793)
- 그렇지 않으면, xFracC가 0이 아니고 yFracC가 0이 아니면, predSampleLXC의 값은 다음과 같이 유도된다:
n = 0..3 인 샘플 어레이 temp [n]은 다음과 같이 유도된다:
temp[ n ] =
Figure pct00008
  >>  shift1 (8-794)
예측된 크로마 샘플 값 predSampleLXC는 다음과 같이 유도된다:
predSampleLXC =( fC[ 
Figure pct00009
][ 0 ] * temp[ 0 ] +
 fC[ 
Figure pct00010
 ][ 1 ] * temp[ 1 ] +
 fC[ 
Figure pct00011
 ][ 2 ] * temp[ 2 ] + (8-795)
 fC[ 
Figure pct00012
 ][ 3 ] * temp[ 3 ] ) >> shift2
각 1/32 분수 샘플 위치 p에 대한 크로마 보간 필터 계수 f C [p] 의 사양
분수 샘플 위치 p 보간 필터 계수
f C [ p ][ 0 ] f C [ p ][ 1 ] f C [ p ][ 2 ] f C [ p ][ 3 ]
1 -1 63 2 0
2 -2 62 4 0
3 -2 60 7 -1
4 -2 58 10 -2
5 -3 57 12 -2
6 -4 56 14 -2
7 -4 55 15 -2
8 -4 54 16 -2
9 -5 53 18 -2
10 -6 52 20 -2
11 -6 49 24 -3
12 -6 46 28 -4
13 -5 44 29 -4
14 -4 42 30 -4
15 -4 39 33 -4
16 -4 36 36 -4
17 -4 33 39 -4
18 -4 30 42 -4
19 -4 29 44 -5
20 -4 28 46 -6
21 -3 24 49 -6
22 -2 20 52 -6
23 -2 18 53 -5
24 -2 16 54 -4
25 -2 15 55 -4
26 -2 14 56 -4
27 -2 12 57 -3
28 -2 10 58 -2
29 -1 7 60 -2
30 0 4 62 -2
31 0 2 63 -1
2.5. JVET-N0236
이 기여는 광학 흐름으로 서브블록 기반 아핀 모션 보상 예측을 구체화하는 방법을 제안한다. 서브블록 기반 아핀 모션 보상이 수행된 후, 예측 샘플은 광학 흐름(PROF)을 사용하여 예측 정제라고 하는 광학 흐름 식에 의해 유도된 차이를 추가하여 정제된다. 제안된 메서드는 메모리 액세스 대역폭을 증가하지 않고도 픽셀 레벨 세분성(granularity)으로 인터 예측을 달성할 수 있다.
모션 보상의 세분성을 달성하기 위해, 이 기여는 광학 흐름으로 예측을 보상하는 서브블록 기반 아핀 모션을 구체화하는 방법을 제안한다. 서브블록 기반 아핀 모션 보상이 수행된 후, 루마 예측 샘플은 광학 흐름 식에 의해 유도된 차이를 추가하여 정제된다. 제안된 PROF(광학 흐름을 위한 예측 정제)는 다음 4단계로 설명된다.
단계 1) 서브 블록 기반 아핀 모션 보상은 서브 블록 예측을 생성하기 위해 수행된다.
단계 2) 3-탭 필터 [-1, 0, 1] 을 사용하여 각 샘플 위치에서 서브블록
Figure pct00013
예측의 공간 그레디언트
Figure pct00014
및 서브블록 예측이 계산된다.
Figure pct00015
Figure pct00016
서브블록 예측은 그레디언트 계산을 위해 각 면에서 1픽셀씩 확장된다. 메모리 대역폭과 복잡성을 줄이기 위해 확장된 테두리의 픽셀은 레퍼런스 픽처에서 가장 가까운 정수 픽셀 위치에서 복사된다. 따라서 패딩 영역에 대한 추가 보간을 피할 수 있다.
단계 3) 광학 흐름 식에 의해 계산되는 바와 같이 루마 예측 정제(ΔI로 표시됨).
Figure pct00017
여기서 delta MV(Δv(i,j)로 표시됨)는 v(i,j)로 표시되는 샘플 위치(i,j)에 대해 계산된 픽셀 MV와 도 25에 도시된 바와 같이, 픽셀 (i,j)가 속하는 서브 블록의 서브 블록 MV사이의 차이이다.
아핀 모델 파라미터와 서브블록 중심에 대한 픽셀 위치는 서브블록에서 서브블록으로 변경되지 않으므로, Δv(i,j)는 제1 서브블록에 대해 계산될 수 있고, 동일한 CU의 다른 서브블록에 대해 재사용될 수 있다. x와 y를 픽셀 위치에서 서브블록의 중심까지의 수평 및 수직 오프셋이라고 하자, Δv(i,j)는 다음 식에 의해 유도될 수 있다:
Figure pct00018
4파라미터 아핀 모델의 경우
Figure pct00019
6 파라미터 아핀 모델의 경우
Figure pct00020
여기서,
Figure pct00021
,
Figure pct00022
는 왼쪽 상단, 오른쪽 상단 및 왼쪽 아래 제어점 모션 벡터이고, w 및 h는 CU의 너비와 높이이다.
단계 4) 마지막으로, 루마 예측 구체화가 서브블록 예측 I(i, j)에 추가된다. 최종 예측I'는 다음 식으로 생성된다:
Figure pct00023
JVET-N0236의 일부 세부 사항
a) PROF의 그레디언트를 유도하는 방법
JVET-N0263에서 그레디언트는 각 레퍼런스 목록에 대해 각 서브 블록(VTM-4.0의 4Х4 서브 블록)에 대해 계산된다. 각 서브블록에 대해, 레퍼런스 블록의 가장 가까운 정수 샘플은 샘플의 4측 외부 라인을 패딩 하기 위해 패치된다.
현재 서브블록에 대한 MV가 (MVx, MVy)라고 가정한다. 그런 다음 분수 부분(FracX, FracY)==(MVx&15, MVy&15)로 계산된다. 정수 부분은 (IntX, IntY)==(MVx>>4, MVy>>4)로 계산된다. offset(OffsetX, OffsetY)은 다음과 같이 유도된다:
OffsetX = FracX > 7 ? 1 : 0;
OffsetY = FracY > 7 ? 1 : 0;
현재 서브 블록의 왼쪽 좌표가 (xCur, yCur) 및 현재 서브 블록의 치수는 WxH라고 가정한다.
그런 다음 (xCor0, yCor0), (xCor1, yCor1), (xCor2, yCor2) 및 (xCor3, yCor3)는 다음과 같이 계산된다:
(xCor0, yCor0) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY-1);
(xCor1, yCor1) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY+H);
(xCor2, yCor2) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY);
(xCor3, yCor3) = (xCur+IntX+OffsetX+W, yCur+IntY+OffsetY);
x=0..W-1, y=0. H-1을 갖는 PredSample[x][y]가 서브 블록에 대한 예측 샘플을 저장한다고 가정하자. 그런 다음 패딩 샘플은:
PredSample[x][-1] = (Ref (xCor0+x, yCor0) << Shift0) - Rounding, x=-1..W;
PredSample[x][H] = (Ref (xCor1+x, yCor1) << Shift0) - Rounding, x=-1..W;
PredSample[-1][-1][y] = (Ref (xCor2, yCor2+y) << Shift0) - Rounding, y=0.H-1;
PredSample[W][y] = (Ref (xCor3, yCor3+y) << Shift0) - Rounding, y=0..H-1;
Rec가 레퍼런스 픽처를 나타내는 위치이다. 반올림은 예시적인 PROF 구현에서 213과 동일한 정수이다. Shift0 = Max(2, (14 - BitDepth));
PROF는 그레디언트가 입력 루마 샘플과 동일한 정밀도로 출력되는 VTM-4.0의 BIO와 달리 그레디언트의 정밀도를 높이려고 시도한다.
PROF의 그레디언트는 다음과 같이 계산된다.
Shift1 = Shift0-4.
gradientH [ x ][ y ]  =  (predSamples [ x + 1 ][y] - predSample [ x - 1 ][ y ] ) >> Shift1
gradientV [ x ][ y ]  =   (predSample[ x ][ y + 1 ] - predSample [ x ][y - 1 ] ) >> Shift1
predSamples[x][y]는 보간 후 정밀도를 유지한다는 점에 유의해야 한다.
b) PROF를 위한 Δv를 유도하는 방법
의 유도 (dMvH [posX][posY][posY][posX][posX][posY] [posY] [posY] 와 posY= 0..H-1) 아래와 같이 설명할 수 있다
현재 블록의 차원이 cbWidth Х cbHeight, 제어 점 모션 벡터의 수는 numCpMv이고, 제어 지점 모션 벡터는 cpIdx = 0.numCpMv - 1 및 X가 두 개의 레퍼런스 목록을 나타내는 0 또는 1인 cpMVX[cpIdx]라고 가정한다.
변수 log2CbW 및 log2CbH는 다음과 같이 유도된다:
log2CbW = Log2( cbWidth )
log2CbH = Log2( cbHeight )
변수 mvScaleHor, mvScaleVer, dHorX 및 dVerX는 다음과 같이 유도된다:
mvScaleHor = cpMvLX[ 0 ][ 0 ] << 7
mvScaleVer = cpMvLX[ 0 ][ 1 ] << 7
dHorX = ( cpMvLX[ 1 ][ 0 ] - cpMvLX[ 0 ][ 0 ] ) << ( 7 - log2CbW )
dVerX = ( cpMvLX[ 1 ][ 1 ] - cpMvLX[ 0 ][ 1 ] ) << ( 7 - log2CbW )
변수 dHorY 및 dVerY는 다음과 같이 유도된다:
- numCpMv가 3과 같으면 다음이 적용된다:
dHorY = ( cpMvLX[ 2 ][ 0 ] - cpMvLX[ 0 ][ 0 ] ) << ( 7 - log2CbH )
dVerY = ( cpMvLX[ 2 ][ 1 ] - cpMvLX[ 0 ][ 1 ] ) << ( 7 - log2CbH )
- 그렇지 않으면 (numCpMv는 2와 같음) 다음과 같은 적용 :
dHorY = - dVerX
dVerY = dHorX
변수 qHorX, qVerX, qHorY 및 qVerY는
qHorX = dHorX << 2;
qVerX = dVerX << 2;
qHorY = dHorY << 2;
qVerY = dVerY << 2;
dMvH[0][0][0] 및 dMvV[0][0][0]는 다음과 같이 계산된다:
dMvH[0][0] = ((dHorX + dHorY) << 1) - ((qHorX + qHorY) << 1);
dMvV[0][0] = ((dVerX + dVerY) << 1) - ((qVerX + qVerY) << 1);
1에서 W-1까지의 xPos에 대한 dMvH[xPos][0] 및 dMvV[xPos][0]는 다음과 같이 유도된다:
dMvH[xPos][0] = dMvH[xPos-1][0] + qHorX;
dMvV[xPos][0] = dMvV[xPos-1][0] + qVerX;
1에서 H-1까지의 yPos의 경우 다음과 같은 것이 적용된다:
dMvH[xPos][yPos] = dMvH[xPos][yPos-1] + qHorY with xPos=0..W-1
dMvV[xPos][yPos] = dMvV[xPos][yPos-1] + qVerY with xPos=0..W-1
마지막으로, dMvH[xPos][yPos][yPos][xPos][yPos] [yPos] posX = 0.W-1, posY=0..H-1은 다음과 같이 오른쪽으로 이동
dMvH[xPos][yPos] = SatShift( dMvH[xPos][yPos], 7+2-1);
dMvV[xPos][yPos] = SatShift( dMvV[xPos][yPos], 7+2-1);
SatShift(x, n) 및 shift(x,n)는 다음과 같이 정의된 위치
Figure pct00024
shift(x,, n)=(x+ offset0)>>n
하나의 예에서, 오프셋0 및/또는 오프셋1은 (1<<n)>>1로설정된다.
c) PROF를 위한 를 유도하는 방법
서브 블록 내부의 위치(posX, posY)의 경우, 대응하는 Δv(i,j)는 (dMvH[posX][posY], dMvV[posX][posY]로 표시된다. 대응하는 그레디언트는 (gradientH[posX][posY], gradientV[posX][posY]로 표시된다.
그런 다음 ΔI(posX, posY)는 다음과 같이 유도된다.
(dMvH[posX][posY], dMvV[posX][posY]는 다음과 같이 클리핑 된다
dMvH[posX][posY] = Clip3( -32768, 32767, dMvH[posX][posY]);
dMvV[posX][posY] = Clip3( -32768, 32767, dMvV[posX][posY]);
ΔI(posX, posY)= dMvH[posX][posY] Х gradientH[posX][posY] + dMvV[posX][posY] Х gradientV[posX][posY];
ΔI(posX, posY) = Shift( ΔI(posX, posY), 1+1+4);
ΔI(posX, posY) = Clip3( -(213-1), 213-1, ΔI(posX, posY));
d) PROF를 위한 I를 유도하는 방법
현재 블록이 이중 예측 또는 가중 예측으로 코딩 되지 않은 경우
I'(posX, posY) = Shift((I(posX, posY) + ΔI(posX, posY)), Shift0),
I'(posX, posY) = ClipSample(I'(posX, posY)),
여기서 ClipSample은 샘플 값을 유효한 출력 샘플 값으로 클립 한다.
그런 다음 I'(posX, posY)는 상호 예측 값으로 출력된다.
그렇지 않으면(현재 블록은 이중 예측 또는 가중 예측으로 코딩 된다)
I'(posX, posY)는 저장되어 다른 예측 값 및/또는 가중치값에 따라 상호 예측 값을 생성하는 데 사용된다.
2.6. JVET-O2001-vE의 슬라이스 헤더
Figure pct00025
Figure pct00026
Figure pct00027
Figure pct00028
Figure pct00029
Figure pct00030
2.7. JVET-O2001-vE의 시퀀스 파라미터 세트
Figure pct00031
Figure pct00032
Figure pct00033
Figure pct00034
Figure pct00035
Figure pct00036
2.8 JVET-O2001-vE에서 설정한 픽처 파라미터
Figure pct00037
Figure pct00038
Figure pct00039
Figure pct00040
Figure pct00041
2.9. JVET-O2001-vE의 적응형 파라미터 세트
Figure pct00042
Figure pct00043
Figure pct00044
Figure pct00045
Figure pct00046
2.10. VVC에서 제안된 픽처 헤더
픽처 헤더는 JVET-P0120 및 JVET-P0239에서 VVC에 제안된다.
JVET-P0120에서, 픽처 헤더는 다음 속성을 갖도록 설계되었다:
1. 픽처 헤더 NAL 유닛의 사간적 Id 및 계층 Id는 픽처 헤더를 포함하는 계층 액세스 유닛의 시간적 Id 및 계층 Id와 동일하다.
2. 픽처 헤더 NAL 유닛은 연관된 픽처의제1 슬라이스를 포함하는 NAL 유닛보다 선행해야 한다. 이것은 픽처 헤더에서 시그널링되고 슬라이스 헤더로부터 참조되는 픽처 헤더 Id를 가질 필요 없이 픽처 헤더와 픽처 헤더와 연관된 픽처 슬라이스 사이의 연관을 확립하였다.
3. 픽처 헤더 NAL 유닛은 DPS, VPS, SPS, PPS 등과 같은 픽처 레벨 파라미터 세트 또는 상위 레벨을 따라야 한다. 이것은 결과적으로 이러한 파라미터 세트가 반복되지 않거나 픽처 내 또는 액세스 유닛 내에서 존재하도록 요구한다.
4. 픽처 헤더는 연결된 픽처의 픽처 유형에 대한 정보를 포함한다. 픽처 유형을 사용하여 다음을 정의할 수 있다(전체 목록이 아님).
a. 픽처는 IDR 픽처다
b. 픽처는 CRA 픽처다
c. 픽처는 GDR 픽처다.
d. 픽처는 IRAP, GDR 이외 픽처고 I-슬라이스만 포함한다.
e. 픽처는 IRAP가 아닌 GDR 픽처고 P 및 I-슬라이스만 포함할 수 있다.
f. 픽처는 비 IRAP, 비 GDR 픽처고 B-, P- 및/또는 I-슬라이스를 포함한다.
5. 슬라이스 헤더에 있는 픽처 레벨 신택스 요소의 시그널링을 픽처 헤더로 이동한다.
6. 동일한 픽처 인 픽처 헤더의 모든 슬라이스에 대해 일반적으로 동일한 슬라이스 헤더의 신호 비-픽처 레벨 신택스 요소. 이러한 신택스 요소가 픽처 헤더에 존재하지 않는 경우, 슬라이스 헤더에서 시그널링될 수 있다.
일부 구현에서, 필수 픽처 헤더 개념은 픽처의제1 VCL NAL 유닛으로서 픽처당 한 번 전송되도록 사용된다. 또한 현재 슬라이스 헤더에 있는 신택스 요소를 이 픽처 헤더로 이동하는 것이 제안된다. 기능적으로 픽처당 한 번만 전송하면 되는 신택스 요소는 주어진 픽처에 대해 여러 번 전송되는 대신 픽처 헤더로 이동될 수 있고, 예를 들어, 슬라이스 헤더의 신택스 요소는 슬라이스당 한 번 전송된다. 저자는 슬라이스 헤더 처리에 필요한 계산이 전체 처리량을 제한하는 요인이 될 수 있으므로 슬라이스 헤더에서 신택스 요소를 이동하는 것이 이점이 있다고 주장한다.
이동하는 슬라이스 헤더 신택스 요소는 픽처 내에서 동일하도록 제약된다.
이 섹션의 신택스 요소는 이미 픽처의 모든 슬라이스에서 동일하도록 제한되어 있다. 이러한 필드를 픽처 헤더로 이동하여 슬라이스당 한 번 대신 픽처당 한 번만 신호를 받으면 이러한 신택스 요소의 기능에 대한 변경 없이 비트의 불필요한 중복 전송을 방지할 수 있다.
1. 현재 JVET-O2001-vE 초안의 섹션 7.4.7.1에, 다음과 같은 의미 제약이 있다:
존재하는 경우, 슬라이스 헤더 신택스 요소인 slice_pic_parameter_set_id, non_reference_picture_flag, color_plane_id, slice_pic_order_cnt_lsb, recovery_poc_cnt, no_output_of_prior_pics_flag, pic_output_flag 및 slice_temporal_mvp_enabled_flag의 각 슬라이스 헤더의 값은 aflag에서 동일한 슬라이스 헤더가 되어야 한다.
따라서 이러한 신택스 요소 각각은 불필요한 중복 비트를 피하기 위해 픽처 헤더로 이동할 수 있다.
Recovery_poc_cnt 및 no_output_of_prior_pics_flag는 이 기여에서 픽처 헤더로 이동되지 않는다. 슬라이스 헤더에서의 존재 여부는 슬라이스 헤더 nal_unit_type의 조건부 검사에 의존하므로, 이러한 신택스 요소를 픽처 헤더로 이동하려는 경우 연구하는 것이 좋다.
2. 현재 JVET-O2001-vE 초안의 섹션 7.4.7.1에서, 다음과 같은 의미 제약이 있다.
존재하는 경우, slice_lmcs_aps_id의 값은 픽처의 모든 슬라이스에 대해 동일해야 한다.
존재하는 경우, slice_scaling_list_aps_id의 값은 픽처의 모든 슬라이스에 대해 동일해야 한다.
따라서 이러한 신택스 요소 각각은 불필요한 중복 비트를 피하기 위해 픽처 헤더로 이동할 수 있다.
픽처 내에서 동일하도록 제한되지 않는 이동 슬라이스 헤더 신택스 요소
이 섹션의 신택스 요소는 현재 픽처의 모든 조각에서 동일하도록 제한되지 않는다. 모든 슬라이스 헤더에서 많은 수의 신택스 요소를 처리하는 데 복잡성 영향이 있다고 주장되기 때문에 전체 VVC 설계를 단순화하기 위해 픽처 헤더로 이동할 수 있는 항목을 결정하기 위해 이러한 신택스 요소의 예상 사용을 평가하는 것이 좋다.
1. 픽처 헤더로 이동하기 위해 다음과 같은 신택스 요소가 제안된다. 현재 서로 다른 슬라이스에 대해 서로 다른 값을 갖는 것에 대한 제한은 없지만 예상되는 사용이 픽처 레벨에서 변경되기 때문에 모든 슬라이스 헤더에서 전송하는 것에 대한 이점과 코딩 손실이 없거나 최소화된다고 주장된다.
a. six_minus_max_num_merge_cand
b. five_minus_max_num_subblock_merge_cand
c. slice_fpel_mmvd_enabled_flag
d. slice_disable_bdof_dmvr_flag
e. max_num_merge_cand_minus_max_num_triangle_cand
f. slice_six_minus_max_num_ibc_merge_cand
2. 픽처 헤더로 이동하기 위해 다음과 같은 신택스 요소가 제안된다. 현재 서로 다른 슬라이스에 대해 서로 다른 값을 갖는 것에 대한 제한은 없지만 예상되는 사용이 픽처 레벨에서 변경되기 때문에 모든 슬라이스 헤더에서 전송하는 것에 대한 이점과 코딩 손실이 없거나 최소화된다고 주장된다.
a. partition_constraints_override_flag
b. slice_log2_diff_min_qt_min_cb_luma
c. slice_max_mtt_hierarchy_depth_luma
d. slice_log2_diff_max_bt_min_qt_luma
e. slice_log2_diff_max_tt_min_qt_luma
f. slice_log2_diff_min_qt_min_cb_chroma
g. slice_max_mtt_hierarchy_depth_chroma
h. slice_log2_diff_max_bt_min_qt_chroma
i. slice_log2_diff_max_tt_min_qt_chroma
이러한 신택스 요소 중 일부와 연관된 조건부 검사 "slice_type == I"이 픽처 헤더로 이동하면서 제거되었다.
3. 픽처 헤더로 이동하기 위해 다음과 같은 신택스 요소가 제안된다. 현재 서로 다른 슬라이스에 대해 서로 다른 값을 갖는 것에 대한 제한은 없지만 예상되는 사용이 픽처 레벨에서 변경되기 때문에 모든 슬라이스 헤더에서 전송하는 것에 대한 이점과 코딩 손실이 없거나 최소화된다고 주장된다.
a. mvd_l1_zero_flag
이러한 신택스 요소 중 일부와 연관된 조건부 검사 "slice_type == B"는 픽처 헤더로 이동하면서 제거되었다.
4. 픽처 헤더로 이동하기 위해 다음과 같은 신택스 요소가 제안된다. 현재 서로 다른 슬라이스에 대해 서로 다른 값을 갖는 것에 대한 제한은 없지만 예상되는 사용이 픽처 레벨에서 변경되기 때문에 모든 슬라이스 헤더에서 전송하는 것에 대한 이점과 코딩 손실이 없거나 최소화된다고 주장된다.
a. dep_quant_enabled_flag
sign_data_hiding_enabled_flag
2.10.1. JVET-P1006에 정의된 신택스 테이블
7.3.2.8 픽처 헤더 RBSP 신택스
Figure pct00047
Figure pct00048
Figure pct00049
Figure pct00050
Figure pct00051
Figure pct00052
2.11. VVC 초안 6의 DMVR
디코더측 모션 벡터 정제(Decoder-side Motion Vector Refinement)(DMVR)는 두 개의 상이한 레퍼런스 픽처에서 현재 CU의 모션 궤적을 따라 두 블록 사이의 가장 가까운 매치를 찾아 현재 CU의 모션 정보를 유도하기 위해 양방향 매칭(bilateral matching)(BM)을 활용한다. BM 방법은 레퍼런스 픽처 목록 L0과 목록 L1의 두 후보 블록 사이의 왜곡(distortion)을 계산한다. 도 1과 같이, 초기 MV 주변의 각 MV 후보에 기초하여 레드 블록 사이의 SAD를 계산한다. 가장 ˆž은 SAD의 MV 후보는 정제된 MV가 되고 양방향 예측 신호를 생성하는 데 사용된다. 매칭 프로세스(matching process)에 사용되는 비용 함수는 행 부분 샘플링된 SAD(절대차의 합)이다. DMVR의 예는 도 5에 도시되어 있다.
VTM5.0에서, DMVR은 CU가 일반 병합/스킵 모드 및 양방향 예측으로 코딩될 때 CU(코딩 유닛)에 대한 디코더에서 모션 벡터(MV)를 개선하기 위해 채택되고, 하나의 레퍼런스 픽처는 현재 픽처 앞에 있고 다른 레퍼런스 픽처는 디스플레이 순서에서 현재 픽처 뒤에 있고, 현재 픽처와 하나의 레퍼런스 픽처 사이의 시간적 거리는 현재 픽처와 다른 레퍼런스 픽처 사이의 거리와 동일하고, CU 가중치(BCW)에 의한 양방향 예측은 동일한 가중치를 선택한다. DMVR이 적용될 때, 하나의 루마 코딩 블록(CB)은 min(cbWidth,16)Хmin(cbHeight,16) 크기의 독립적으로 처리된 여러 서브블록으로 나뉜다. DMVR은 이중 선형 보간에 의해 생성된 1/2 서브샘플링된 10비트 L0 및 L1 예측 샘플 사이의 SAD를 최소화하여 각 서브블록의 MV를 정제한다. 각 서브블록에 대해, 초기 MV(즉, 선택된 일반 병합/스킵 후보의 MV)를 중심으로 정수 ΔMV 탐색을 먼저 SAD를 이용하여 수행한 후, 분수 ΔMV 유도가 최종 MV를 획득하기 위해 수행된다.
BDOF는 CU가 양방향 예측으로 코딩될 때 CU에 대한 루마 예측 샘플을 정제하고, 하나의 레퍼런스 픽처는 현재 픽처 이전이고 다른 레퍼런스 픽처는 디스플레이 순서로 현재 픽처 뒤에 있고 BCW는 동일한 가중치를 선택한다. 8-탭 보간은 입력 MV(예를 들어, DMVR을 활성화하는 경우 DMVR의 최종 MV)에 따라 초기 L0 및 L1 예측 샘플을 생성하는 데 사용된다. 다음으로, 2-레벨 조기 종료 프로세스(early termination process)가 수행된다. 첫 번째 조기 종료는 서브블록 레벨이고, 두 번째 조기 종료는 4Х4 블록 레벨이고, 첫 번째 조기 종료가 발생하지 않을 때 확인된다. 각 레벨에서 각 서브블록/4x4 블록의 전체 샘플링된 14비트 L0 및 L1 예측 샘플 사이의 SAD가 먼저 계산된다. SAD가 하나의 임계값보다 작으면, BDOF는 서브블록/4x4 블록에 적용되지 않는다. 그렇지 않으면, BDOF 파라미터가 유도되어 각 4x4 블록에 대한 최종 루마 샘플 예측자(predictor)를 생성하는 데 사용된다. BDOF에서, 서브블록 크기는 DMVR과 동일하며, 즉 min(cbWidth,16)Хmin(cbHeight,16)이다.
CU가 일반 병합/스킵 모드로 코딩된 경우, 하나의 레퍼런스 픽처는 현재 픽처 앞에 있고 다른 레퍼런스 픽처는 디스플레이 순서에서 현재 픽처 뒤에 있고, 현재 픽처와 하나의 레퍼런스 픽처 사이의 시간적 거리가 현재 픽처와 다른 레퍼런스 픽처 사이의 시간적 거리와 같고 BCW가 동일한 가중치를 선택하면 DMVR과 BDOF가 모두 적용된다. DMVR 및 BDOF 프로세스의 캐스케이딩 흐름은 도 6에 나와 있다.
도 6은 VTM5.0에서 DMVR 및 BDOF 프로세스를 케스케이딩 흐름을 나타낸다. DMVR SAD 동작과 BDOF SAD 동작은 상이하고 공유되지 않는다.
이 임계 경로에서 지연 및 동작을 줄이기 위해, DMVR과 BDOF가 모두 적용될 때, 최신 VVC 작업 초안이 BDOF의 서브블록 조기 종료에 대해 DMVR에서 계산된 서브블록 SAD를 재사용하도록 수정되었다.
SAD 계산은 다음과 같이 정의된다:
Figure pct00053
여기서 두 개의 변수 nSbW 및 nSbH는 현재 서브블록의 너비와 높이를 지정하고, 각각 L0 및 L1에 대한 예측 샘플을 포함하는 두 개의 ( nSbW + 4 ) x ( nSbH + 4 ) array pL0 및 pL1, 및 예측 목록 L0의 정수 샘플 오프셋( dX, dY )이다.
DMVR 정제의 불확실성에 대한 페널티를 줄이기 위해 DMVR 프로세스 동안 원본 MV를 선호하는 것이 제안된다. 초기(또는 원본이라고 하는) MV 후보가 참조하는 레퍼런스 블록들 사이의 SAD는 SAD 값의 1/4만큼 감소한다. 즉, 위의 식에서 dX와 dY가 모두 0일 때, sad 값은 다음과 같이 수정된다:
sad = sad - ( sad >> 2 )
SAD 값이 임계값(2*subblock width* subblock height)보다 작으면 더 이상 BDOF를 수행할 필요가 없다.
3. 기존 구현의 단점
DMVR 및 BIO는 모션 벡터를 정제하는 동안 원래 신호를 포함하지 않으므로 부정확한 모션 정보로 블록을 코딩할 수 있다. 또한, DMVR과 BIO는 모션 정제 후에 분수 모션 벡터를 사용하는 경우가 있지만 화면 비디오는 일반적으로 정수 모션 벡터를 사용하므로 현재 모션 정보가 더 정확하지 않고 코딩 성능이 저하된다.
VVC에서 RPR을 적용할 때, RPR(ARC)은 다음과 같은 문제가 있을 수 있다:
1. RPR을 사용하면 블록의 인접 샘플에 대해 보간 필터가 다를 수 있고, 이는 단일 명령 다중 데이터(Single Instruction Multiple Data)(SIMD) 구현에서 바람직하지 않다.
2. 경계 영역(bounding region)은 RPR을 고려하지 않는다.
3. "적합성 크로핑 윈도우 오프셋 파라미터는 출력에만 적용된다. 모든 내부 디코딩 프로세스는 크롭되지 않은 픽처 크기에 적용된다."고 나타낸다. 그러나, 이러한 파라미터는 RPR이 적용될 때 디코딩 프로세스에서 사용될 수 있다.
4. 레퍼런스 샘플 위치를 유도할 때 RPR은 두 적합성 윈도우 사이의 비율만 고려한다. 그러나 두 적합성 윈도우 사이의 왼쪽 상단 오프셋 차이도 고려해야 한다.
5. 레퍼런스 픽처의 너비/높이와 현재 픽처의 너비/높이 사이의 비율은 VVC에서 제약된다. 그러나, 레퍼런스 픽처의 적합성 윈도우의 너비/높이와 현재 픽처의 적합성 윈도우의 너비/높이 사이의 비율은 제약되지 않는다.
6. 모든 신택스 요소가 픽처 헤더에서 제대로 처리되는 것은 아니다.
7. 현재 VVC에서, TPM, GEO 예측 모드에 대해 크로마 블렌딩 가중치는 비디오 시퀀스의 크로마 샘플 위치 유형에 관계없이 유도된다. 예를 들어, TPM/GEO에서 크로마 가중치가 루마 가중치(luma weight)로부터 유도되는 경우, 크로마 신호의 샘플링과 일치하도록 루마 가중치를 다운샘플링해야 할 수 있다. 크로마 다운샘플링은 일반적으로 ITU-R BT.601 또는 ITU-R BT.709 컨테이너에서 널리 사용되는 크로마 샘플 위치 유형 0을 가정하여 적용된다. 그러나, 다른 크로마 샘플 위치 유형이 사용되는 경우, 이는 크로마 샘플과 다운샘플링된 루마 샘플 사이의 정렬 불량을 초래할 수 있고, 이는 코딩 성능을 감소시킬 수 있다.
8. SAD 계산/SAD 임계값은 비트 심도 영향(bit-depth impact)을 고려하지 않는다. 따라서, 더 높은 비트 심도(bit-depth)(예를 들어, 14 또는 16비트 입력 시퀀스)의 경우, 조기 종료에 대한 임계값이 너무 작을 수 있다.
9. 비-RPR의 경우, 1/2-펠(pel) MV 정밀도를 갖는 AMVR(즉, 대체 보간 필터/전환 가능한 보간 필터)은 6-탭 모션 보상 필터와 함께 적용되지만 다른 경우(예를 들어, 1/16-펠(pel))에는 8-탭이 적용된다. 그러나, RPR의 경우 mv/mvd 정밀도를 고려하지 않고 모든 경우에 동일한 보간 필터가 적용된다. 따라서, 1/2-펠(pel) 경우(대체 보간 필터/전환 가능한 보간 필터)의 시그널링은 비트를 낭비하고 있다.
10. 파티션 트리 파티션 결정의 허용 여부는 출력 픽처 해상도 대신 코딩된 픽처 해상도에 따라 결정된다.
11. RPR 경우를 고려하지 않은 SMVD/MMVD가 적용된다. 이러한 방법은 두 개의 레퍼런스 픽처에 대칭 MVD가 적용된다는 가정에 기초한다. 그러나, 출력 픽처의 해상도가 상이한 경우, 이러한 가정은 사실이 아니다.
12. 쌍별 병합 후보(pairwise merge candidate)는 동일한 레퍼런스 픽처 목록에 있는 두 개의 병합 후보로부터 두 개의 MV를 평균화하여 생성된다. 그러나 ,두 개의 병합 후보와 관련된 두 개의 레퍼런스 픽처가 해상도가 다른 경우 평균화는 의미가 없다.
13. 현재 픽처의 모든 슬라이스가 I(인트라) 슬라이스인 경우 픽처 헤더의 여러 인터 슬라이스 관련 신택스 요소가 코딩될 필요가 없을 수 있다. 조건부로 신호는 특히 모든 인트라 코딩의 저해상도 시퀀스에 대한 신택스 오버헤드를 줄일 수 있다.
14. 현재 VVC에서, 타일/슬라이스의 크기에 제한이 없다. 적절한 제한을 추가하는 것은 실시간 소프트웨어/하드웨어 디코더의 병렬 처리, 특히 각 프레임이 4K/8K보다 클 수 있는 초고해상도 시퀀스에 유용하다.
4. 예시적인 기술 및 실시예
아래 나열된 세부 기술은 일반적인 개념을 설명하기 위한 예로 고려되어야 한다. 이러한 실시예는 좁은 방법으로 해석되어서는 안 된다. 또한, 이들 실시예는 임의의 방식으로 조합될 수 있다.
후술하는 방법들은 후술하는 DMVR 및 BIO 외에도 다른 디코더 모션 정보 유도 기술(decoder motion information derivation technology)에도 적용될 수 있다.
모션 벡터는 (mv_x, mv_y)로 표시되고, 여기서 mv_x는 수평 컴포넌트고 mv_y는 수직 컴포넌트다.
본 개시에서, 픽처의 해상도(또는 차원, 또는 너비/높이, 또는 크기)는 코딩/디코딩된 픽처의 해상도(또는 차원, 또는 너비/높이, 또는 크기)를 의미할 수 있고, 또는 코딩된/디코딩된 픽처에서 적합성 윈도우의 해상도(또는 차원, 또는 너비/높이, 또는 크기)를 참조할 수 있다. 하나의 예에서, 픽처의 해상도(또는 차원, 또는 폭/높이, 또는 크기)는 스케일링 윈도우/위상 오프셋 윈도우와 같은 RPR(레퍼런스 픽처 리샘플링) 프로세스와 관련된 파라미터를 참조할 수 있다. 하나의 예에서, 픽처의 해상도(또는 차원, 또는 너비/높이, 또는 크기)는 출력 픽처와 연관된 것와 관련된다.
RPR의 모션 보상
1. 레퍼런스 픽처의 해상도가 현재 픽처와 상이하거나 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처보다 클 경우, 현재 블록의 샘플 그룹(적어도 두 개의 샘플)에 대한 예측 값은 동일한 수평 및/또는 수직 보간 필터로 생성될 수 있다.
a. 하나의 예에서, 그룹은 블록의 영역에 있는 모든 샘플을 포함할 수 있다.
i. 예를 들어, 블록은 서로 겹치지 않는 S MxN 직사각형으로 분할될 수 있다. 각 MxN 직사각형은 그룹이다. 도 2에 도시된 바와 같은 예에서, 16x16 블록은 각각이 그룹인 16개의 4x4 직사각형으로 분할될 수 있다.
ii. 예를 들어, N개의 샘플이 있는 행은 그룹이다. N은 블록 너비보다 크지 않은 정수이다. 하나의 예에서, N은 4 또는 8 또는 블록 너비이다.
iii. 예들 들어, N개의 샘플이 있는 열은 그룹이다. N은 블록 높이보다 크지 않은 정수이다. 하나의 예에서, N은 4 또는 8 또는 블록 높이이다.
iv. M 및/또는 N은 미리 정의되거나 블록 차원/코딩된 정보에 기초하여 하는 것과 같이, 즉석에서 유도되거나 시그널링될 수 있다.
b. 하나의 예에서, 그룹의 샘플은 동일한 MV(공유 MV로 표시됨)를 가질 수 있다.
c. 하나의 예에서, 그룹의 샘플은 동일한 수평 컴포넌트(공유 수평 컴포넌트로 표시됨)를 갖는 MV를 가질 수 있다.
d. 하나의 예에서, 그룹의 샘플은 동일한 수직 컴포넌트(공유 수직 컴포넌트로 표시됨)을 갖는 MV를 가질 수 있다.
e. 하나의 예에서, 그룹의 샘플은 수평 컴포넌트의 동일한 분수 부분(공유 분수 수평 컴포넌트로 표시됨)을 갖는 MV를 가질 수 있다.
i. 예를 들어, 제1 샘플의 MV가 (MV1x, MV1y)이고 제2 샘플의 MV가 (MV2x, MV2y)라고 가정하면, MV1x & (2M-1)이 MV2x & (2M-1)와 동일함을 충족해야 하고, 여기서 M은 MV 정밀도를 나타낸다. 예를 들어, M=4이다.
f. 하나의 예에서, 그룹의 샘플은 수직 컴포넌트의 동일한 분수 부분(공유 분수 수직 컴포넌트로 표시됨)을 갖는 MV를 가질 수 있다.
i. 예를 들어, 제1 샘플의 MV가 (MV1x, MV1y)이고 제2 샘플의 MV가 (MV2x, MV2y)라고 가정하면, MV1y & (2M-1)가 MV2y & (2M- 1)와 동일함을 충족해야 하고, 여기서 M은 MV 정밀도를 나타낸다. 예를 들어, M=4이다.
g. 하나의 예에서, 예측할 그룹 내의 샘플에 대해, MVb로 표시되는 모션 벡터는 현재 픽처 및 레퍼런스 픽처의 해상도에 따라 먼저 유도될 수 있다(예를 들어, JVET-O2001-v14의 8.5.6.3.1에서 유도된 (refxL , refyL)). 그런 다음, MVb는 위의 항목과 같은 요구 사항을 충족하기 위해 MV'로 추가 수정(예를 들어, 반올림/잘림/클리핑)될 수 있고, MV'는 샘플에 대한 예측 샘플을 유도하는 데 사용된다.
i. 하나의 예에서, MV'는 MVb와 동일한 정수 부분을 가지고, MV'의 소수 부분은 공유된 소수 수평 및/또는 수직 컴포넌트로 설정된다.
ii. 하나의 예에서, MV'는 공유 분수 수평 및/또는 수직 컴포넌트를 갖고 MVb에 가장 가까운 것으로 설정된다.
h. 공유 모션 벡터(및/또는 공유 수평 컴포넌트 및/또는 공유 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트)는 그룹 내 특정 샘플의 모션 벡터(및/또는 수평 컴포넌트 및/또는 수직 컴포넌트 및/또는 분수 수직 컴포넌트 및/또는 분수 수직 컴포넌트)로 설정될 수 있다.
i. 예를 들어, 특정 샘플은 도 3a에 도시된 "A", "B', "C" 및 "D"와 같은 직사각형 그룹의 모서리에 있을 수 있다.
ii. 예를 들어, 특정 샘플은 도 3a에 도시된 "E", "F', "G", "H"와 같은 직사각형 그룹의 중앙에 있을 수 있다.
iii. 예를 들어, 특정 샘플은 도 3b 및 3c에 도시된 "A" 및 "D"와 같은 행 또는 열 형태의 그룹의 끝에 있을 수 있다.
iv. 예를 들어, 특정 샘플은 도 3b 및 도 3c에 도시된 "B" 및 "C"와 같은 행형 또는 열형 그룹의 중간에 있을 수 있다.
v. 하나의 예에서, 특정 샘플의 모션 벡터는 항목 g에서 언급된 MVb일 수 있다.
i. 공유 모션 벡터(및/또는 공유 수평 컴포넌트 및/또는 공유 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트)는 이 그룹의 모든 샘플과 다른 위치에 있는 가상 샘플의 모션 벡터(및/또는 수평 컴포넌트 및/또는 수직 컴포넌트 및/또는 분수 수직 컴포넌트 및/또는 분수 수직 컴포넌트)로 설정될 수 있다.
i. 하나의 예에서, 가상 샘플은 그룹에 없지만 그룹의 모든 샘플을 포함하는 영역에 있다.
1) 대안적으로, 가상 샘플은 그룹의 모든 샘플을 포함하는 영역 외부, 예들 들어, 영역의 오른쪽 하단 위치 옆에 위치한다.
ii. 하나의 예에서, 가상 샘플의 MV는 실제 샘플과 동일한 방식으로 유도되지만 위치는 다르다.
iii. 도 3a-3c의 "V"는 가상 샘플의 세 가지 예를 보여준다.
j. 공유 MV(및/또는 공유 수평 컴포넌트 및/또는 공유 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트)는 다중 샘플 및/또는 가상 샘플의 MV의 함수(및/또는 수평 컴포넌트 및/또는 수직 컴포넌트 및/또는 분수 수직 컴포넌트 및/또는 분수 수직 컴포넌트)로 설정될 수 있다.
i. 예를 들어, 공유 MV(및/또는 공유 수평 컴포넌트 및/또는 공유 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트 및/또는 공유 분수 수직 컴포넌트)는 그룹 내 샘플 전체 또는 일부, 또는 도 3a의 샘플 "E", "F", "G", "H", 또는 도 3a의 샘플 "E", "H", 또는 도 3a의 샘플 "A", "B", "C", "D", 또는 도 3a의 샘플 "A", "D", 또는 도 3b의 샘플 "B", "C", 또는 도 3b의 샘플 "A", "D", 또는 도 3c의 샘플 "B", "C", 또는 도 3c의 샘플 "A", "D"의 MV의 평균(및/또는 수평 컴포넌트 및/또는 수직 컴포넌트 및/또는 분수 수직 컴포넌트 및/또는 분수 수직 컴포넌트)으로 설정될 수 있다.
2. 현재 블록의 예측 블록을 유도하기 위해 모션 보상 프로세스에서 사용되는 보간 필터는 레퍼런스 픽처의 해상도가 현재 픽처와 다른지 또는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 큰지 여부에 의존하여 선택될 수 있다고 제안한다.
a. 하나의 예에서, 예측될 샘플에 대한 디코딩된 모션 벡터는 사용되기 전에 정수 MV로 반올림된다.
b. 하나의 예에서, 예측될 샘플에 대한 디코딩된 모션 벡터는 디코딩된 모션 벡터에 가장 가까운 정수 MV로 반올림된다.
c. 하나의 예에서, 예측될 샘플에 대한 디코딩된 모션 벡터는 수평 방향에서 디코딩된 모션 벡터에 가장 가까운 정수 MV로 반올림된다.
d. 하나의 예에서, 예측될 샘플에 대한 디코딩된 모션 벡터는 수직 방향에서 디코딩된 모션 벡터에 가장 가까운 정수 MV로 반올림된다.
3. 현재 블록의 샘플에 대한 모션 보상 프로세스에서 활용되는 모션 벡터(예를 들어, 공유 MV / 공유 수평 또는 수직 또는 분수 컴포넌트 / MV ' 위의 항목에 언급)는 디코딩된 픽처 버퍼에 저장될 수 있고 현재/다른 픽처에서 후속 블록의 모션 벡터 예측을 위해 활용될 수 있다.
a. 대안적으로, 현재 블록(예를 들어, 공유 MV / 공유 수평 또는, 수직 또는, 분수 컴포넌트/MV' 위의 항목에 언급)의 샘플에 대한 모션 보상 프로세스에서 활용되는 모션 벡터는 현재/다른 픽처의 후속 블록의 모션 벡터 예측에 활용되는 것이 허용되지 않을 수 있다.
i. 하나의 예에서, 디코딩된 모션 벡터(예를 들어, 위의 항목의 MVb)는 현재/상이한 픽처에서 후속 블록의 모션 벡터 예측을 위해 활용될 수 있다.
b. 하나의 예에서, 현재 블록의 샘플에 대한 모션 보상 프로세스에서 활용되는 모션 벡터는 필터링 프로세스(예를 들어, 디블로킹 필터/SAO/ALF)에서 활용될 수 있다.
i. 대안적으로, 디코딩된 모션 벡터(예를 들어, 위의 항목의 MVb)는 필터링 프로세스에서 이용될 수 있다.
c. 하나의 예에서, 그러한 MV는 서브블록 레벨에서 유도될 수 있고 각각의 서브블록에 대해 저장될 수 있다.
4. 현재 블록의 예측 블록을 유도하기 위해 모션 보상 프로세스에서 사용되는 보간 필터는 레퍼런스 픽처의 해상도가 현재 픽처와 다른지 또는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 큰지 여부에 의존하여 선택될 수 있다고 제안한다.
a. 하나의 예에서, 더 적은 탭을 갖는 보간 필터는 조건 A가 충족될 때 적용될 수 있고, 조건 A는 현재 픽처 및/또는 레퍼런스 픽처의 차원에 의존한다.
i. 하나의 예에서, 조건 A는 레퍼런스 픽처의 해상도가 현재 픽처와 상이하다.
ii. 하나의 예에서, 조건 A는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 너비보다 크다.
iii. 하나의 예에서, 조건 A는 W1> a * W2 및/또는 H1> b * H2이고, 여기서 (W1, H1)은 레퍼런스 픽처의 너비와 높이를 나타내고, (W2, H2)는 현재 픽처의 너비와 높이를 나타내고, a와 b는 두 가지 인자(factor)이고, 예들 들어, a = b = 1.5이다.
iv. 하나의 예에서, 조건 A는 또한 이중 예측이 사용되는지 여부에 따라 달라질 수 있다.
v. 하나의 예에서, 1- 탭 필터가 적용된다. 즉, 필터링이 없는 정수 픽셀이 보간 결과로 출력된다.
vi. 하나의 예에서, 레퍼런스 픽처의 해상도가 현재 픽처와 다를 때 이중 선형 필터가 적용된다.
vii. 하나의 예에서, 레퍼런스 픽처의 해상도가 현재 픽처와 다르거나 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 클 때, 4 탭 필터 또는 6 탭 필터가 적용된다.
1) 6 탭 필터는 아핀 모션 보상에도 사용할 수 있다.
2) 4 탭 필터는 크로마 샘플의 보간에도 사용할 수 있다.
b. 하나의 예에서, 레퍼런스 픽처의 해상도가 현재 픽처와 다르거나 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 클 때, 4 탭 필터 또는 6 탭 필터가 적용된다.
c. 항목 4에 개시된 방법을 적용할지 여부 및/또는 적용 방법은 컬러 컴포넌트에 따라 달라질 수 있다.
i. 예를 들어, 방법은 루마 컴포넌트에만 적용된다.
d. 항목 4에 개시된 방법을 적용할지 여부 및/또는 적용 방법은 보간 필터링 방향에 따라 달라질 수 있다.
i. 예를 들어, 방법은 수평 필터링에만 적용된다.
ii. 예를 들어, 방법은 수직 필터링에만 적용된다.
5. 레퍼런스 픽처의 해상도가 현재 픽처와 다를 때, 또는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처보다 클 때 예측 블록 생성을 위한 2단계 과정을 적용하는 것을 제안한다.
a. 제1 단계에서, 현재 픽처와 레퍼런스 픽처의 너비 및/또는 높이에 따라 레퍼런스 픽처 내 영역을 업샘플링 또는 다운샘플링하여 가상 레퍼런스 블록이 생성된다.
b. 제2 단계에서, 현재 픽처 및 레퍼런스 픽처의 너비 및/또는 높이에 관계없이 보간 필터링을 적용하여 가상 레퍼런스 블록으로부터 예측 샘플이 생성된다.
6. JVET-O2001-v14의 8.5.6.3.1에 정의된 레퍼런스 샘플 패딩( xSbIntL, ySbIntL )에 대한 경계 블록의 왼쪽 상단 좌표 계산은 현재 픽처 및 레퍼런스 픽처의 너비 및/또는 높이에 따라 유도될 수 있다고 제안되었다.
a. 하나의 예에서, 전체 샘플 유닛의 루마 위치는 다음과 같이 수정된다:
xInti = Clip3( xSbIntL - Dx, xSbIntL + sbWidth + Ux, xInti ),
yInti = Clip3( ySbIntL - Dy, ySbIntL + sbHeight + Uy, yInti ),
여기서 Dx 및/또는 Dy 및/또는 Ux 및/또는 Uy는 현재 픽처와 레퍼런스 픽처의 너비 및/또는 높이에 따라 달라질 수 있다.
b. 하나의 예에서, 전체 샘플 유닛의 크로마 위치는 다음과 같이 수정된다.
xInti = Clip3( xSbIntC - Dx, xSbIntC + sbWidth + Ux, xInti )
yInti = Clip3( ySbIntC - Dy, ySbIntC + sbHeight + Uy, yInti )
여기서 Dx 및/또는 Dy 및/또는 Ux 및/또는 Uy는 현재 픽처와 레퍼런스 픽처의 너비 및/또는 높이에 따라 달라질 수 있다.
7. 현재 픽처와 동일한 레퍼런스 픽처 해상도에 기초하여 블록에 대한 모션 벡터를 저장/사용하는 대신, 해상도 차이를 고려한 실제 모션 벡터를 사용하는 것을 제안한다.
a. 또한, 모션 벡터를 이용하여 예측 블록을 생성할 때, 현재 픽처와 레퍼런스 픽처(예를 들어, JVET-O2001-v14의 8.5.6.3.1에서 도출된 (refxL, refyL))의 해상도에 따라 모션 벡터를 더 변경할 필요가 없다.
RPR과 다른 코딩 툴 사이의 상호 작용
8. 필터링 프로세스(예를 들어, 디블로킹 필터)를 적용할지 여부는 레퍼런스 픽처의 해상도 및/또는 현재 픽처의 해상도에 따라 달라질 수 있다.
a. 하나의 예에서, 디블로킹 필터의 경계 강도(BS) 설정은 모션 벡터 차이에 더하여 해상도 차이를 고려할 수 있다.
i. 하나의 예에서, 현재 및 레퍼런스 픽처의 해상도에 따른 스케일링된 모션 벡터 차이는 경계 강도를 결정하기 위해 사용될 수 있다.
b. 하나의 예에서, 블록 A의 적어도 하나의 레퍼런스 픽처의 해상도가 두 블록에 대해 동일한 해상도가 활용되는 경우와 비교하여 블록 B의 적어도 하나의 레퍼런스 픽처의 해상도와 다른 경우(또는 보다 작거나 크거나 같은 경우), 블록 A와 블록 B 사이의 경계에 대한 디블록킹 필터의 세기가 다르게 설정될 수 있다(예를 들어, 증가/감소).
c. 하나의 예에서, 블록 A의 적어도 하나의 레퍼런스 픽처의 해상도가 블록 B의 적어도 하나의 레퍼런스 픽처의 해상도와 다른 경우(또는 보다 작거나 큰 경우), 블록 A와 블록 B 사이의 경계가 필터링되는 것으로 표시된다(예를 들어, BS가 2로 설정됨).
d. 하나의 예에서, 블록 A 및/또는 블록 B의 적어도 하나의 레퍼런스 픽처의 해상도가 레퍼런스 픽처 및 현재 픽처의 동일한 해상도가 활용되는 경우와 비교하여 현재 픽처의 해상도와 다른 경우(또는 보다 작거나 크거나 같은 경우), 블록 A와 블록 B 사이의 경계에 대한 디블록킹 필터의 세기가 다르게 설정될 수 있다(예를 들어, 증가/감소).
e. 하나의 예에서, 둘 중 적어도 하나의 블록의 적어도 하나의 레퍼런스 픽처가 현재 픽처와 다른 해상도를 갖는 경우, 두 블록 사이의 경계는 필터링되는 것으로 표시된다(예를 들어, BS는 2로 설정됨).
9. 서브 픽처가 존재하는 경우, 적합성 비트스트림(conformance bitstream)은 레퍼런스 픽처가 현재 픽처와 동일한 해상도를 가져야 함을 만족해야 할 수 있다.
a. 대안적으로, 레퍼런스 픽처가 현재 픽처와 다른 해상도를 가질 때, 현재 픽처에 서브 픽처가 없어야 한다.
b. 대안적으로, 현재 픽처의 서브 픽처에 대해 현재 픽처와 다른 해상도의 레퍼런스 픽처를 사용하는 것은 허용되지 않는다.
i. 대안적으로, 또한, 레퍼런스 픽처 관리가 상이한 해상도를 갖는 레퍼런스 픽처를 제외하기 위해 호출될 수 있다.
10. 하나의 예에서, 서브 픽처(예를 들어, 하나의 픽처를 다수의 서브 픽처로 분할하는 방법)는 상이한 해상도를 갖는 픽처에 대해 별도로 정의될 수 있다.
하나의 예에서, 레퍼런스 픽처의 대응하는 서브 픽처는, 레퍼런스 픽처가 현재 픽처와 상이한 해상도를 갖는 경우, 현재 픽처의 서브 픽처를 스케일링 및/또는 오프셋함으로써 유도될 수 있다.
11. 레퍼런스 픽처가 현재 픽처와 다른 해상도를 가질 때 광학 흐름 예측 정제(Prediction Refinement with Optical Flow)(PROF)가 활성화될 수 있다.
a. 하나의 예에서, MV의 한 세트(MVg로 표시됨)는 샘플 그룹에 대해 생성될 수 있고 항목 1에 설명된 바와 같이 모션 보상을 위해 사용될 수 있다. 한편, MV(MVp로 표기)는 각 샘플에 대해 유도될 수 있고, MVp와 MVg 사이의 차이(예를 들어, PROF에서 사용되는 Δv에 대응함)는 그라디언트(예를 들어, 모션 보상된 블록의 공간 그레디언트)와 함께 예측 정제를 유도하는 데 사용될 수 있다.
b. 하나의 예에서, MVp는 MVg와 다른 정밀도를 가질 수 있다. 예를 들어, MVp는 1/N-pel(N > 0) 정밀도, N = 32, 64 등일 수 있다.
c. 하나의 예에서, MVg는 내부 MV 정밀도(예를 들어, 1/16-펠(pel))와 상이한 정밀도를 가질 수 있다.
d. 하나의 예에서, 예측 정제는 정제된 예측 블록을 생성하기 위해 예측 블록에 추가된다.
e. 하나의 예에서, 이러한 방법은 각각의 예측 방향에 적용될 수 있다.
f. 하나의 예에서, 이러한 방법은 단일 예측의 경우에만 적용될 수 있다.
g. 하나의 예에서, 이러한 방법은 단일 예측 또는/및 이중 예측에 적용될 수 있다.
h. 하나의 예에서, 이러한 방법은 레퍼런스 픽처가 현재 픽처와 해상도가 다른 경우에만 적용될 수 있다.
12. 레퍼런스 픽처의 해상도가 현재 픽처의 해상도와 다른 경우 현재 블록의 예측 블록을 유도하기 위해 모션 보상 프로세스를 수행하기 위해 블록/서브블록에 대해 하나의 MV만이 활용될 수 있음을 제안한다.
a. 하나의 예에서, 블록/서브블록에 대한 유일한 MV는 블록/서브블록 내의 각 샘플과 연관된 모든 MV의 함수(예를 들어, 평균)로서 정의될 수 있다.
b. 하나의 예에서, 블록/서브블록에 대한 유일한 MV는 블록/서브블록 내에서 선택된 샘플(예를 들어, 중앙 샘플)과 연관된 선택된 MV로서 정의될 수 있다.
c. 하나의 예에서, 하나의 MV만이 4x4 블록 또는 서브블록(예를 들어, 4x1)에서 활용될 수 있다.
d. 하나의 예에서, 블록 기반 모션 벡터로 인한 정밀도 손실을 보상하기 위해 BIO가 더 적용될 수 있다.
13. 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 너비 및/또는 높이와 다른 경우 블록 기반 모션 벡터를 시그널링하지 않는 레이지 모드가 적용될 수 있다.
a. 하나의 예에서, 모션 벡터는 시그널링되지 않을 수 있고 모션 보상 프로세스는 정지 이미지의 순수한 해상도 변화의 경우에 근사하는 것이다.
b. 하나의 예에서, 픽처/타일/브릭/CTU 레벨에서의 모션 벡터만이 신호일 수 있고 관련 블록은 해상도가 변경될 때 모션 벡터를 사용할 수 있다.
14. PROF는 레퍼런스 픽처의 너비 및/또는 높이가 아핀 예측 모드 및/또는 비-아핀 예측 모드로 코딩된 블록에 대한 현재 픽처의 너비 및/또는 높이와 다를 때 대략적인 모션 보상에 적용될 수 있다.
a. 하나의 예에서, 레퍼런스 픽처의 너비 및/또는 높이와 현재 픽처의 너비 및/또는 높이가 다른 경우 PROF가 활성화될 수 있다.
b. 하나의 예에서, 아핀 모션 세트는 표시된 모션 및 해상도 스케일링을 결합하여 생성되고 PROF에 의해 사용될 수 있다.
15. 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 너비 및/또는 높이와 다를 때 대략적인 모션 보상에 인터위브드 예측(예를 들어, JVET-K0102에서 제안됨)이 적용될 수 있다.
a. 하나의 예에서, 해상도 변화(줌)는 아핀 모션으로 표현되고, 인터위브 모션 예측이 적용될 수 있다.
16. LMCS 및/또는 크로마 잔차 스케일링은 현재 픽처의 너비 및/또는 높이가 동일한 IRAP 주기에서 IRAP 픽처의 너비 및/또는 높이와 다른 경우 비활성화될 수 있다.
a. 하나의 예에서, LMCS가 비활성화될 때, slice_lmcs_enabled_flag, slice_lmcs_aps_id, 및 slice_chroma_residual_scale_flag와 같은 슬라이스 레벨 플래그는 시그널링되지 않고 0으로 유추될 수 있다.
b. 하나의 예에서, 크로마 잔차 스케일링이 비활성화될 때, slice_chroma_residual_scale_flag와 같은 슬라이스 레벨 플래그는 시그널링되지 않고 0으로 유추될 수 있다.
RPR에 대한 제약
17. RPR은 블록 차원 제약이 있는 코딩 블록에 적용될 수 있다.
a. 하나의 예에서, MХN 코딩 블록에 대해, M이 블록 폭이고 N이 블록 높이인 경우, M*N < T 또는 M*N <=T(예를 들어, T = 256)일 때, RPR은 사용 된.
b. 하나의 예에서, M < K(또는 M<=K)(예를 들어, K = 16) 및/또는 N < L(또는 N <= L)(예를 들어, L = 16)일 때, RPR은 사용되지 않을 수 있다.
18. 비트스트림 일치는 활성 레퍼런스 픽처(또는 그 적합성 윈도우)의 너비 및/또는 높이와 현재 픽처(또는 적합성 윈도우)의 너비 및/또는 높이 사이의 비율을 제한하기 위해 추가될 수 있다. refPicW 및 refPicH가 레퍼런스 픽처의 너비와 높이를 나타내고, curPicW 및 curPicH가 현재 픽처의 너비와 높이를 나타낸다고 가정하고,
a. 하나의 예에서, (refPicW χ curPicW)가 정수인 경우, 레퍼런스 픽처는 활성 레퍼런스 픽처로 표시될 수 있다.
i. 대안적으로, (refPicW χ curPicW)가 분수와 같을 때, 레퍼런스 픽처는 이용 불가로 표시될 수 있다.
b. 하나의 예에서, (refPicW χ curPicW)가 (X * n)과 같을 때, 여기서 X는 X = 1/2와 같은 소수를 나타내고 n은 n = 1, 2, 3, 4 ...., 와 같은 정수를 나타내고, 레퍼런스 픽처는 활성 레퍼런스 픽처로 표시될 수 있다.
i. 하나의 예에서, (refPicW χ curPicW)가 (X * n)과 같지 않은 경우, 레퍼런스 픽처는 이용 불가로 표시될 수 있다.
19. MxN 블록에 대한 코딩 툴(예를 들어, 이중 예측/전체 삼각 예측 모드(TPM)/TPM의 혼합 프로세스)을 활성화할지 여부 및/또는 방법은 레퍼런스 픽처(또는 그 적합성 윈도우)의 해상도 및/또는 현재 픽처(또는 적합성 윈도우)의 해상도에 따라 달라질 수 있다.
a. 하나의 예에서, M*N < T 또는 M*N <=T(예를 들어, T = 64)이다.
b. 하나의 예에서, M < K(또는 M<=K)(예를 들어, K = 16) 및/또는 N < L(또는 N <= L)(예를 들어, L = 16)이다.
c. 하나의 예에서, 적어도 하나의 레퍼런스 픽처의 너비/높이가 현재 픽처와 다른 경우 코딩 툴이 허용되지 않는다.
i. 하나의 예에서, 블록의 적어도 하나의 레퍼런스 픽처의 폭/높이가 현재 픽처의 폭/높이가 더 클 때 코딩 툴은 허용되지 않는다.
d. 하나의 예에서, 블록의 각 레퍼런스 픽처의 너비/높이가 현재 픽처의 너비/높이와 다를 경우 코딩 툴이 허용되지 않는다.
i. 하나의 예에서, 각 레퍼런스 픽처의 너비/높이가 현재 픽처의 너비/높이가 더 클 경우 코딩 툴이 허용되지 않는다.
e. 대안적으로, 코딩 툴이 허용되지 않는 경우, 단일 예측으로 하나의 MV로 모션 보상을 수행할 수도 있다.
적합성 윈도우 관련
20. 적합성 크로핑 윈도우 오프셋 파라미터(예를 들어, conf_win_left_offset)는 1-pel 대신에 N-pel 정밀도로 시그널링되고, 여기서 N은 1보다 큰 양의 정수이다.
a. 하나의 예에서, 실제 오프셋은 시그널링된 오프셋에 N을 곱한 것으로 유도될 수 있다.
b. 하나의 예에서, M은 32 또는 16으로 설정된다.
21. 적합성 크로핑 윈도우 오프셋 파라미터는 출력에만 적용되지 않는 것이 좋다. 특정 내부 디코딩 프로세스는 크롭된 픽처 크기(즉, 픽처의 적합성 윈도우의 해상도)에 따라 달라질 수 있다.
22. 제1 비디오 유닛 및 제2 비디오 유닛의 (pic_width_in_luma_samples, pic_height_in_luma_samples)로 표시된 픽처의 너비 및/또는 높이가 동일할 때 제1 비디오 유닛(예를 들어, PPS) 및 제2 비디오 유닛의 적합성 크로핑 윈도우 오프셋 파라미터는 상이할 수 있다고 제안된다.
23. 제1 비디오 유닛과 제2 비디오 유닛에서 (pic_width_in_luma_samples, pic_height_in_luma_samples)로 표시되는 픽처의 너비 및/또는 높이가 상이할 때 제1 비디오 유닛(예를 들어, PPS)와 제2 비디오 유닛의 적합성 크롭 윈도우 오프셋 파라미터는 적합성 비트스트림에서 동일해야 한다고 제안된다.
a. 제1 비디오 유닛(예를 들어, PPS)와 제2 비디오 유닛의 적합성 크롭 윈도우 오프셋 파라미터는 제1 비디오 유닛 및 제2 비디오 유닛에서 (pic_width_in_luma_samples, pic_height_in_luma_samples)로 표시된 픽처의 너비 및/또는 높이가 동일하거나 동일하지 않더라도 상관없이 적합성 비트스트림에서 동일해야 한다고 제안된다.
24. 제1 비디오 유닛(예를 들어, PPS)에 정의된 적합성 윈도우의 너비와 높이가 각각 W1 및 H1으로 표시된다고 가정한다. 제2 비디오 유닛(예를 들어, PPS)에서 정의된 적합성 윈도우의 너비와 높이는 각각 W2 및 H2로 표시된다. 제1 비디오 유닛(예를 들어, PPS)에 정의된 적합성 윈도우의 왼쪽 상단 위치는 X1 및 Y1로 표시된다. 제2 비디오 유닛(예를 들어, PPS)에 정의된 적합성 윈도우의 왼쪽 상단 위치는 X2 및 Y2로 표시된다. 제1 비디오 유닛(예를 들어, PPS)에서 정의된 코딩/디코딩된 픽처(예를 들어, pic_width_in_luma_samples 및 pic_height_in_luma_samples)의 너비 및 높이는 각각 PW1 및 PH1로 표시된다. 제2 비디오 유닛(예를 들어, PPS)에서 정의되는 코딩/디코딩 픽처의 너비와 높이는 PW2와 PH2로 표시된다.
a. 하나의 예에서, W1/W2는 적합성 비트스트림에서 X1/X2와 동일해야 한다.
i. 대안적으로, W1/X1은 적합성 비트스트림에서 W2/X2와 동일해야 한다.
ii. 대안적으로, W1 * X2는 적합성 비트스트림에서 W2 * X1과 동일해야 한다.
b. 하나의 예에서, H1/H2는 적합성 비트스트림에서 Y1/Y2와 동일해야 한다.
i. 대안적으로, H1/Y1은 적합성 비트스트림에서 H2/Y2와 동일해야 한다.
ii. 대안적으로, H1 * Y2는 적합성 비트스트림에서 H2 * Y1과 동일해야 한다.
c. 하나의 예에서, PW1/PW2는 적합성 비트스트림에서 X1/X2와 동일해야 한다.
i. 대안적으로, PW1/X1은 적합성 비트스트림에서 PW2/X2와 동일해야 한다.
ii. 대안적으로, PW1 * X2는 적합성 비트스트림에서 PW2 * X1과 동일해야 한다.
d. 하나의 예에서, PH1/PH2는 적합성 비트스트림에서 Y1/Y2와 동일해야 한다.
i. 대안적으로, PH1/Y1은 적합성 비트스트림에서 PH2/Y2와 동일해야 한다.
ii. 대안적으로, PH1 * Y2는 적합성 비트스트림에서 PH2 * Y1과 동일해야 한다.
e. 하나의 예에서, PW1/PW2는 적합성 비트스트림에서 W1/W2와 동일해야 한다.
i. 대안적으로, PW1/W1은 적합성 비트스트림에서 PW2/W2와 동일해야 한다.
ii. 대안적으로, PW1 * W2는 적합성 비트스트림에서 PW2 * W1과 동일해야 한다.
f. 하나의 예에서, PH1/PH2는 적합성 비트스트림에서 H1/H2와 동일해야 한다.
i. 대안적으로, PH1/H1은 적합성 비트스트림에서 PH2/H2와 동일해야 한다.
ii. 대안적으로, PH1 * H2는 적합성 비트스트림에서 PH2 * H1과 동일해야 한다.
g. 적합성 비트스트림에서, PW1이 PW2보다 크면 W1은 W2보다 커야 한다.
h. 적합성 비트스트림에서, PW1이 PW2보다 작으면 W1은 W2보다 작아야 한다.
i. 적합성 비트스트림에서, (PW1-PW2) * (W1-W2)는 0보다 작지 않아야 한다.
j. 적합성 비트스트림에서, PH1이 PH2보다 크면 H1은 H2보다 커야 한다.
k. 적합성 비트스트림에서, PH1이 PH2보다 작으면 H1은 H2보다 작아야 한다.
l. 적합성 비트스트림에서, (PH1-PH2) * (H1-H2)는 0보다 작지 않아야 한다.
m. 적합성 비트스트림에서, W1/W2는 PW1 >= PW2인 경우 PW1/PW2보다 커서는 안된다(작아야 한다.).
n. 적합성 비트스트림에서, H1/H2는 PH1 >= PH2인 경우 PH1/PH2보다 커서는 안된다(작아야 한다)
25. 현재 픽처(의 적합성 윈도우)의 너비와 높이는 각각 W2와 H2로 표시된다. 레퍼런스 픽처의 적합성 윈도우의 너비와 높이는 각각 W'와 H'로 표시된다. 그런 다음 아래의 적어도 하나의 제약 조건 뒤에는 적합성 비트 스트림이 따라야 한다.
a. W * pw >= W'; pw는 2와 같은 정수이다.
b. W * pw > W'; pw는 2와 같은 정수이다.
c. W' * pw' >= W; pw'는 8과 같은 정수이다.
d. W' * pw' > W; pw'는 8과 같은 정수이다.
e. H * ph >= H'; ph는 2와 같은 정수이다.
f. H * ph > H'; ph는 2와 같은 정수이다.
g. H' * ph' >= H; ph'는 8과 같은 정수이다.
h. H' * ph' > H; ph'는 8과 같은 정수이다.
i. 하나의 예에서, pw는 pw'와 동일하다.
j. 하나의 예에서, ph는 ph'와 동일하다.
k. 하나의 예에서, pw는 ph와 동일하다.
l. 하나의 예에서, pw'는 ph'와 동일하다.
m. 하나의 예에서, W 및 H가 각각 현재 픽처의 폭 및 높이를 나타낼 때 위의 서브 항목은 적합성 비트스트림에 의해 충족되도록 요구될 수 있다. W'와 H'는 레퍼런스 픽처의 너비와 높이를 나타낸다.
26. 적합성 윈도우 파라미터들은 부분적으로 시그널링되는 것이 제안된다.
a. 하나의 예에서, 픽처의 적합성 윈도우에 있는 왼쪽 상단 샘플은 픽처의 샘플과 동일한 것이다.
b. 예를 들어, VVC에 정의된 conf_win_left_offset은 시그널링 되지 않고 0으로 유추된다.
c. 예를 들어, VVC에 정의된 conf_win_top_offset은 시그널링 되지 않고 0으로 유추된다.
27. 레퍼런스 샘플의 위치 유도(예를 들어, VVC에 정의된 (refxL, refyL))는 현재 픽처 및/또는 레퍼런스 픽처의 적합성 윈도우의 왼쪽 상단 위치(예를 들어, VVC에 정의된 (conf_win_left_offset, conf_win_top_offset))에 의존할 수 있다고 제안된다. 도 4a 및 4b는 VVC(a) 및 제안 방법(b)에서와 같이 유도된 샘플 위치의 예를 도시한다. 점선 직사각형은 적합성 윈도우를 나타낸다.
a. 하나의 예에서, 의존성은 현재 픽처의 너비 및/또는 높이와 레퍼런스 픽처의 너비 및/또는 높이가 다른 경우에만 존재한다.
b. 하나의 예에서, 레퍼런스 샘플의 수평 위치(예를 들어, VVC에 정의된 refxL)의 유도는 현재 픽처 및/또는 레퍼런스 픽처의 적합성 윈도우의 왼쪽 위치(예를 들어, VVC에 정의된 conf_win_left_offset)에 따라 달라질 수 있다.
i. 하나의 예에서, 현재 픽처에서 적합성 윈도우의 왼쪽 상단 위치에 대한 현재 샘플의 수평 위치(xSb'로 표시됨)가 계산되고 레퍼런스 샘플의 위치를 유도하는 데 사용된다.
1) 예를 들어, xSb'= xSb - (conf_win_left_offset << Prec)는 레퍼런스 샘플의 위치를 유도하기 위해 계산되고 사용되고, 여기서 xSb는 현재 픽처에서 현재 샘플의 수평 위치를 나타낸다. conf_win_left_offset은 현재 픽처의 일치 윈도우에서 왼쪽 상단 샘플의 수평 위치를 나타낸다. Prec는 xSb 및 xSb'의 정밀도를 나타내고, 여기서 (xSb>>Prec)는 현재 픽처에 대한 현재 샘플의 실제 수평 좌표를 나타낼 수 있다. 예들 들어, Prec = 0 또는 Prec = 4이다.
ii. 하나의 예에서, 레퍼런스 픽처에서 적합성 윈도우의 왼쪽 상단 위치에 대한 레퍼런스 샘플의 수평 위치(Rx'로 표시됨)가 계산된다.
1) Rx'의 계산은 xSb' 및/또는 모션 벡터, 및/또는 리샘플링 비율에 따라 달라질 수 있다.
iii. 하나의 예에서, 레퍼런스 픽처에서 상대적인 레퍼런스 샘플의 수평 위치(Rx로 표시됨)는 Rx'에 따라 계산된다.
1) 예를 들어, Rx = Rx' + (conf_win_left_offset_ref << Prec)가 계산되고, 여기서 conf_win_left_offset_ref는 레퍼런스 픽처의 적합성 윈도우에서 왼쪽 상단 샘플의 수평 위치를 나타낸다. Prec는 Rx 및 Rx'의 정밀도를 나타낸다. 예들 들어, Prec = 0 또는 Prec = 4이다.
iv. 하나의 예에서, Rx는 xSb', 및/또는 모션 벡터, 및/또는 리샘플링 비율에 따라 직접적으로 계산될 수 있다. 다시 말해서, Rx'와 Rx에 대한 두 단계의 유도가 한 단계 계산으로 결합된다.
v. 현재 픽처 및/또는 레퍼런스 픽처의 적합성 윈도우의 왼쪽 위치(예를 들어, VVC에 정의된 conf_win_left_offset)를 사용할지 여부 및/또는 방법은컬러 컴포넌트 및/또는 컬러 포맷에 따라 달라질 수 있다.
1) 예를 들어, conf_win_left_offset은 conf_win_left_offset = conf_win_left_offset * SubWidthC로 수정될 수 있고, 여기서 SubWidthC는 컬러 컴포넌트의 수평 샘플링 단계를 정의한다. 예들 들어, SubWidthC는 루마 컴포넌트에 대해 1과 동일하다. SubWidthC는 컬러 포맷이 4:2:0 또는 4:2:2일 때 크로마 컴포넌트에 대해 2와 동일하다.
2) 예를 들어, conf_win_left_offset은 conf_win_left_offset = conf_win_left_offset / SubWidthC로 수정될 수 있고, 여기서 SubWidthC는 컬러 컴포넌트의 수평 샘플링 단계를 정의한다. 예들 들어, SubWidthC는 루마 컴포넌트에 대해 1과 동일하다. SubWidthC는 컬러 포맷이 4:2:0 또는 4:2:2일 때 크로마 컴포넌트에 대해 2와 동일하다.
c. 하나의 예에서, 레퍼런스 샘플의 수직 위치(예를 들어, VVC에서 정의된 refyL)의 유도는 현재 픽처 및/또는 레퍼런스 픽처의 적합성 윈도우의 상단 위치(예를 들어, VVC에서 정의된 conf_win_top_offset)에 의존할 수 있다.
i. 하나의 예에서, 현재 픽처에서 적합성 윈도우의 왼쪽 상단 위치에 대한 현재 샘플의 수직 위치(ySb'로 표시됨)가 계산되고 레퍼런스 샘플의 위치를 유도하기 위해 사용된다.
1) 예를 들어, ySb'= ySb - (conf_win_top_offset << Prec)가 계산되어 레퍼런스 샘플의 위치를 유도하기 위해 사용되고, 여기서 ySb는 현재 픽처에서 현재 샘플의 수직 위치를 나타낸다. conf_win_top_offset은 현재 픽처의 적합성 윈도우에서 왼쪽 상단 샘플의 수직 위치를 나타낸다. Prec는 ySb 및 ySb'의 정밀도를 나타낸다. 예들 들어, Prec = 0 또는 Prec = 4이다.
ii. 하나의 예에서, 레퍼런스 픽처에서 적합성 윈도우의 왼쪽 상단 위치에 대한 레퍼런스 샘플의 수직 위치(Ry'로 표시됨)가 계산된다.
1) Ry'의 계산은 ySb' 및/또는 모션 벡터, 및/또는 리샘플링 비율에 따라 달라질 수 있다.
iii. 하나의 예에서, 레퍼런스 픽처에서 상대적인 레퍼런스 샘플의 수직 위치(Ry로 표시됨)는 Ry'에 따라 계산된다.
1) 예를 들어, Ry = Ry' + (conf_win_top_offset_ref << Prec)가 계산되고, 여기서 conf_win_top_offset_ref는 레퍼런스 픽처의 적합성 윈도우에서 왼쪽 상단 샘플의 수직 위치를 나타낸다. Prec는 Ry와 Ry'의 정밀도를 나타낸다. 예들 들어, Prec = 0 또는 Prec = 4이다.
iv. 하나의 예에서, Ry는 ySb' 및/또는 모션 벡터, 및/또는 리샘플링 비율에 따라 직접 계산될 수 있다. 즉, Ry' 및 Ry에 대한 두 가지 유도 단계가 한 단계 계산으로 결합된다.
v. 현재 픽처 및/또는 레퍼런스 픽처의 적합성 윈도우의 최상위 위치(예를 들어, VVC에 정의된 conf_win_top_offset)를 사용할지 여부 및/또는 방법은 컬러 컴포넌트 및/또는 컬러 포맷에 따라 달라질 수 있다.
1) 예를 들어, conf_win_top_offset은 conf_win_top_offset = conf_win_top_offset * SubHeightC로 수정될 수 있고, 여기서 SubHeightC는 컬러 컴포넌트의 수직 샘플링 단계를 정의한다. 예들 들어, SubHeightC는 루마 컴포넌트에 대해 1과 동일하다. SubHeightC는 컬러 포맷이 4:2:0인 경우 크로마 컴포넌트에 대해 2와 동일하다.
2) 예를 들어, conf_win_top_offset은 conf_win_top_offset = conf_win_top_offset / SubHeightC로 수정될 수 있고, 여기서 SubHeightC는 컬러 컴포넌트의 수직 샘플링 단계를 정의한다. 예들 들어, SubHeightC는 루마 컴포넌트에 대해 1과 동일하다. SubHeightC는 컬러 포맷이 4:2:0인 경우 크로마 컴포넌트에 대해 2와 동일하다.
28. 레퍼런스 샘플의 수평 좌표의 정수 부분은 [minW, maxW]로 클리핑될 수 있음을 제안한다. 레퍼런스 픽처의 적합성 윈도우의 너비와 높이가 각각 W1과 H1로 표시된다고 가정한다. 레퍼런스 픽처의 적합성 윈도우의 너비와 높이는 W'와 H'로 표기된다. 레퍼런스 픽처에서 적합성 윈도우의 왼쪽 상단 위치는 (X0, Y0)로 표기된다.
a. 하나의 예에서, minW는 0과 동일하다.
b. 하나의 예에서, minW는 X0와 동일하다.
c. 하나의 예에서, maxW는 W-1과 동일하다.
d. 하나의 예에서, maxW는 W'-1과 동일하다.
e. 하나의 예에서, maxW는 X0+W'-1과 동일하다.
f. 하나의 예에서, minW 및/또는 maxW는 컬러 포맷 및/또는 컬러 컴포넌트에 기초하여 수정될 수 있다.
i. 예를 들어, minW는 minW *SubC로 수정된다.
ii. 예를 들어 minW는 minW /SubC로 수정된다.
iii. 예를 들어, maxW는 maxW *SubC로 수정된다.
iv. 예를 들어, maxW는 maxW /SubC로 수정된다.
v. 하나의 예에서, SubC는 루마 컴포넌트에 대해 1과 동일하다.
vi. 하나의 예에서, SubC는 컬러 포맷이 4:2:0일 때 크로마 컴포넌트에 대해 2와 동일하다.
vii. 하나의 예에서, SubC는 컬러 포맷이 4:2:2일 때 크로마 컴포넌트에 대해 2와 동일하다.
viii. 하나의 예에서, SubC는 컬러 포맷이 4:4:4일 때 크로마 컴포넌트에 대해 1과 동일하다.
g. 하나의 예에서, 클리핑을 수행할지 여부 및/또는 방법은 현재 픽처(또는 그 안의 적합성 윈도우)의 차원과 레퍼런스 픽처(또는 그 안의 적합성 윈도우)의 차원에 따라 달라질 수 있다.
i. 하나의 예에서, 클리핑은 현재 픽처(또는 그 안의 적합성 윈도우)의 차원과 레퍼런스 픽처(또는 그 안의 적합성 윈도우)의 차원이 다른 경우에만 수행된다.
29. 레퍼런스 샘플의 수직 좌표의 정수 부분은 [minH, maxH]로 클리핑될 수 있음을 제안한다. 레퍼런스 픽처의 적합성 윈도우의 너비와 높이가 각각 W1과 H1로 표시된다고 가정한다. 레퍼런스 픽처의 적합성 윈도우의 너비와 높이는 W'와 H'로 표기된다. 레퍼런스 픽처에서 적합성 윈도우의 왼쪽 상단 위치는 (X0, Y0)로 표기된다.
a. 하나의 예에서, minH는 0과 동일하다.
b. 하나의 예에서, minH는 Y0와 동일하다.
c. 하나의 예에서, maxH는 H-1과 동일한다.
d. 하나의 예에서, maxH는 H'-1과 동일하다.
e. 하나의 예에서, maxH는 Y0+H'-1과 동일하다.
f. 하나의 예에서, minH 및/또는 maxH는 컬러 포맷 및/또는 컬러 컴포넌트에 기초하여 수정될 수 있다.
i. 예를 들어, minH는 minH *SubC로 수정된다.
ii. 예를 들어 minH는 minH/SubC로 수정된다.
iii. 예를 들어, maxH는 maxH *SubC로 수정된다.
iv. 예를 들어, maxH는 maxH /SubC로 수정된다.
v. 하나의 예에서, SubC는 루마 컴포넌트에 대해 1과 동일하다.
vi. 하나의 예에서, SubC는 컬러 포맷이 4:2:0일 때 크로마 컴포넌트에 대해 2와 동일하다.
vii. 하나의 예에서, SubC는 컬러 포맷이 4:2:2일 때 크로마 컴포넌트에 대해 1과 동일하다.
viii. 하나의 예에서, SubC는 컬러 포맷이 4:4:4일 때 크로마 컴포넌트에 대해 1과 동일하다.
g. 하나의 예에서, 클리핑을 수행할지 여부 및/또는 방법은 현재 픽처(또는 그 안의 적합성 윈도우)의 차원과 레퍼런스 픽처(또는 그 안의 적합성 윈도우)의 차원에 따라 달라질 수 있다.
i. 하나의 예에서, 클리핑은 현재 픽처(또는 그 안의 적합성 윈도우)의 차원과 레퍼런스 픽처(또는 그 안의 적합성 윈도우)의 차원이 다른 경우에만 수행된다.
다음 논의에서, 두 신택스 요소가 동등한 기능을 갖지만 다른 비디오 유닛(예를 들어, VPS/SPS/PPS/슬라이스 헤더/픽처 헤더 등)에서 시그널링될 수 있는 경우, 제1 신택스 요소는 제2 신택스 요소에 "대응하는" 것으로 주장된다.
30. 신택스 요소는 제1 비디오 유닛(예를 들어, 픽처 헤더 또는 PPS)에서 시그널링될 수 있고 대응하는 신택스 요소는 더 높은 레벨(예를 들어, SPS) 또는 더 낮은 레벨(예를 들어, 슬라이스 헤더)에서 제2 비디오 유닛에서 시그널링되지 않는 것으로 제안된다.
a. 대안적으로, 제1 신택스 요소는 제1 비디오 유닛(예를 들어, 픽처 헤더 또는 PPS)에서 시그널링될 수 있고 대응하는 제2 신택스 요소는 더 낮은 레벨(슬라이스 헤더와 같은)에서 제2 비디오 유닛에서 시그널링될 수 있다.
i. 대안적으로, 표시자(indicator)는 제2 신택스 요소가 이후에 시그널링되는지 여부를 알리기 위해 제2 비디오 유닛에서 시그널링될 수 있다.
ii. 하나의 예에서, (슬라이스 헤더와 같은) 제2 비디오 유닛과 연관된 슬라이스는 제2 신택스 요소가 시그널링되는 경우 제1 신택스 요소 대신에 제2 신택스 요소의 표시를 따를 수도 있다.
iii. 제1 신택스 요소와 연관된 표시자는 제2 신택스 요소가 제1 비디오 유닛과 연관된 임의의 슬라이스(또는 다른 비디오 유닛)에서 시그널링되는지 여부를 알리기 위해 제1 비디오 유닛에서 시그널링될 수도 있다.
b. 대안적으로, 제1 신택스 요소는 더 높은 레벨(예를 들어, VPS/SPS/PPS)의 제1 비디오 유닛에서 시그널링될 수 있고, 대응하는 제2 신택스 요소는 제2 비디오 유닛(예를 들어, 픽처 헤더)에서 시그널링될 수 있다.
i. 대안적으로, 표시자는 이후에 제2 신택스 요소가 시그널링되는지 여부를 알리기 위해 시그널링될 수 있다.
ii. 하나의 예에서, 제2 비디오 유닛과 연관된 픽처(슬라이스들로 파티션될 수 있음)는 제2 신택스 요소가 시그널링되는 경우 제1 신택스 요소 대신에 제2 신택스 요소의 표시를 따를 수 있다.
c. 픽처 헤더의 제1 신텍스 요소는 섹션 2.6에 지정된 슬라이스 헤더의 제2 신텍스 요소로서 동등한 기능을 가질 수 있으나( slice_temporal_mvp_enabled_flag, cabac_init_flag, six_minus_max_num_merge_cand, five_minus_max_num_subblock_merge_cand, slice_fpel_mmvd_enabled_flag, slice_disable_bdof_dmvr_flag, max_num_merge_cand_minus_max_num_triangle_cand, slice_fpel_mmvd_enabled_flag, slice_six_minus_max_num_ibc_merge_cand, slice_joint_cbcr_sign_flag, slice_qp_delta, ... 와 같은, 그러나 이에 제한되지 않는) 픽처의 모든 슬라이스를 제어한다.
d. 섹션 2.6에 지정된 SPS의 제1 신텍스 요소는 픽처 헤더의 제2 신텍스 요소와 동등한 기능을 가질 수 있으나 (sps_bdof_dmvr_slice_present_flag, sps_mmvd_enabled_flag, sps_isp_enabled_flag, sps_mrl_enabled_flag, sps_mip_enabled_flag, sps_cclm_enabled_flag, sps_mts_enabled_flag ... 와 같은, 그러나 이에 제한되지 않는) 단지 연관된 픽처(슬라이로 파티션될 수 있는)만 제어한다.
e. 섹션 2.7에 명시된 PPS의 제1 신텍스 요소는 픽처 헤더의 제2 신텍스 요소로서 동등한 기능을 가질 수 있으나entropy_coding_sync_enabled_flag, entry_point_offsets_present_flag, cabac_init_present_flag, rpl1_idx_present_flag ... 와 같은, 그러나 이에 제한되지 않는) 단지 연관된 픽처(슬라이로 파티션될 수 있는)만 제어한다.
31. 픽처 헤더에서 시그널링되는 신택스 요소는 SPS/VPS/DPS에서 시그널링되거나 유도된 다른 신택스 요소로부터 분리된다.
32. DMVR 및 BDOF의 활성화/비활성화 표시는 동일한 플래그(예를 들어, pic_disable_bdof_dmvr_flag)에 의해 제어되는 대신 픽처 헤더에서 별도로 시그널링될 수 있다.
33. PROF/크로스 컴포넌트 ALF/기하학적 파티션(GEO)을 통한 인터 예측의 활성화/비활성화 표시는 픽처 헤더에서 시그널링될 수 있다.
a. 대안적으로, 픽처 헤더의 PROF 활성화/비활성화의 표시는 SPS의 PROF 활성화 플래그에 따라 조건부로 시그널링될 수 있다.
b. 대안적으로, 픽처 헤더의 CCALF(Cross-Component ALF) 활성화/비활성화 표시는 SPS의 CCALF 활성화 플래그에 따라 조건부로 시그널링될 수 있다.
c. 대안적으로, 픽처 헤더에서 GEO를 활성화/비활성화하는 표시는 SPS의 GEO 활성화 플래그에 따라 조건부로 시그널링될 수 있다.
d. 대안적으로, 또한, 슬라이스 헤더에서 기하학적 파티션(GEO)을 통한 PROF/크로스 컴포넌트 ALF/인터페이스의 활성화/비활성화 표시는 SPS 대신 픽처 헤더에서 시그널링된 신택스 요소에 따라 조건부로 시그널링될 수 있다.
34. 동일한 픽처에서 슬라이스/브릭/타일(또는 픽처보다 작은 다른 비디오 유닛)의 예측 유형의 표시는 픽처 헤더에서 시그널링될 수 있다.
a. 하나의 예에서, 모든 슬라이스/브릭/타일(또는 픽처보다 작은 다른 비디오 유닛)이 모두 인트라 코딩되는지(예를 들어, 모든 I 슬라이스)의 표시는 픽처 헤더에서 시그널링될 수 있다.
i. 대안적으로, 또한, 표시가 픽처 내의 모든 슬라이스가 I 슬라이스임을 알려주는 경우 슬라이스 유형은 슬라이스 헤더에서 시그널링되지 않을 수 있다.
b. 대안적으로, 슬라이스/브릭/타일(또는 픽처보다 작은 다른 비디오 유닛) 중 적어도 하나가 인트라 코딩되지 않았는지(예를 들어, 적어도 하나의 비-I 슬라이스)의 표시는 픽처 헤더에서 시그널링될 수 있다.
c. 대안적으로, 모든 슬라이스/브릭/타일(또는 픽처보다 작은 다른 비디오 유닛)이 모두 동일한 예측 유형(예를 들어, I/P/B 슬라이스)을 갖는지 여부의 표시가 픽처 헤더에서 시그널링될 수 있다.
i. 대안적으로, 슬라이스 헤더에 슬라이스 유형이 시그널링되지 않을 수도 있다.
ii. 대안적으로, 또한, 특정 예측 유형 (예를 들어, DMVR/BDOF/TPM/GEO는 B 슬라이스에 대해서만 허용되고, 이중 트리는 I 슬라이스에만 허용됨) 에 대해 허용되는 툴의 표시는 예측 유형의 표시에 따라 조건부로 시그널링될 수 있다.
d. 대안적으로, 더욱이, 활성화/비활성화 툴의 표시의 시그널링은 상기 하위 항목에서 언급된 예측 유형의 표시에 의존할 수 있다.
i. 대안적으로, 또한, 활성화/비활성화 툴의 표시는 상기 하위 항목에서 언급된 예측 유형의 표시에 따라 유도될 수 있다.
35. 본 명세서(항목 1 내지 항목 29)에서 "적합성 윈도우(conformance window)"이라는 용어는 "스케일링 윈도우(scaling window)"와 같이 다른 용어로 대체될 수 있다. 스케일링 윈도우는 적합성 윈도우와 상이하게 시그널링될 수 있고, 스케일링 비율 및/또는 RPR에 대한 레퍼런스 샘플 위치를 유도하는 데 사용되는 왼쪽 상단 오프셋을 유도하는 데 사용된다.
a. 하나의 예에서, 스케일링 윈도우는 적합성 윈도우에 의해 제약될 수 있다. 예를 들어, 적합성 비트스트림에서, 스케일링 윈도우는 적합성 윈도우에 포함되어야 한다.
36. 트랜스폼 스킵 코딩된 블록에 대해 허용된 최대 블록 크기를 시그널링할지 여부 및/또는 방법은 트랜스폼 코딩된 블록에 대한 최대 블록 크기에 따라 달라질 수 있다.
a. 대안적으로, 트랜스폼 스킵 코딩된 블록에 대한 최대 블록 크기는 적합성 비트스트림에서 트랜스폼 코딩된 블록에 대한 최대 블록 크기보다 클 수 없다.
37. 공동 Cb-Cr 잔차(Joint Cb-Cr Residue)(JCCR) 코딩(예를 들어, sps_joint_cbcr_enabled_flag)을 활성화하는 표시를 활성화할지 여부와 시그널링 하는 방법은 컬러 포맷(예를 들어, 4:0:0, 4:2:0 등)에 따라 달라질 수 있다.
a. 예를 들어, 공동 Cb-Cr 잔차(JCCR) 활성화 표시는 컬러 포맷이 4:0:0인 경우 시그널링되지 않을 수 있다. 예시적인 신택스 설계는 다음과 같다:
Figure pct00054
TPM/GEO에서 크로마 블렌딩 마스크 생성을 위한 다운샘플링 필터 유형
38. 크로마 샘플에 대한 블렌딩 가중치 유도(blending weights derivation)에 사용되는 다운샘플링 필터의 유형은 비디오 유닛 레벨(예를 들어, SPS/VPS/PPS/Picture header/Subpicture/Slice/Slice 헤더/Tile/Brick/CTU/VPDU 레벨)에서 시그널링될 수 있다.
a. 하나의 예에서, 상이한 크로마 포맷 유형들의 콘텐츠 사이를 전환하기 위해 하이 레벨 플래그(high level flag)가 시그널링될 수 있다.
i. 하나의 예에서, 크로마 포맷 유형 0과 크로마 포맷 유형 2 사이를 전환하기 위해 하이 레벨 플래그가 시그널링될 수 있다.
ii. 하나의 예에서, TPM/GEO 예측 모드에서 왼쪽 상단 다운샘플링된 루마 가중치가 왼쪽 상단 루마 가중치와 함께 배치되는지 여부(즉, 크로마 샘플 위치 유형 0)를 지정하기 위한 플래그가 시그널링될 수 있다.
iii. 하나의 예에서, TPM/GEO 예측 모드에서 왼쪽 상단 다운샘플링된 루마 샘플이 왼쪽 상단 루마 샘플과 수평으로 공존하지만 왼쪽 상단 루마 샘플에 대해 0.5 유닛의 루마 샘플(즉, 크로마 샘플 위치 유형 2)만큼 수직으로 시프트 되는지 여부를 지정하기 위해 플래그가 시그널링될 수 있다.
b. 하나의 예에서, 다운샘플링 필터의 유형은 4:2:0 크로마 포맷 및/또는 4:2:2 크로마 포맷에 대해 시그널링될 수 있다.
c. 하나의 예에서, 플래그는 TPM/GEO 예측에 사용되는 크로마 다운샘플링 필터의 유형을 지정하기 위해 시그널링될 수 있다.
i. 하나의 예에서, 플래그는 TPM/GEO 예측 모드에서 크로마 가중치 유도을 위해 다운샘플링 필터 A 또는 다운샘플링 필터 B를 사용할지 여부에 대해 시그널링될 수 있다.
39. 크로마 샘플에 대한 블렌딩 가중치 유도에 사용되는 다운샘플링 필터의 유형은 비디오 유닛 레벨(예를 들어, SPS/VPS/PPS/픽처 헤더/서브 픽처/슬라이스/슬라이스 헤더/타일/브릭/CTU/VPDU 레벨)에서 유도될 수 있다.
a. 하나의 예에서, 크로마 서브샘플링 필터 유형과 컨텐츠의 크로마 포맷 유형 사이의 대응 관계를 지정하기 위해 룩업 테이블이 정의될 수 있다.
40. 크로마 샘플 위치 유형이 다른 경우 지정된 다운샘플링 필터가 TPM/GEO 예측 모드에 사용될 수 있다.
a. 하나의 예에서, TPM/GEO의 크로마 가중치는 특정 크로마 샘플 위치 유형(예를 들어, 크로마 샘플 위치 유형 0)의 경우 배치된 왼쪽 상단 루마 가중치로부터 서브샘플링될 수 있다.
b. 하나의 예에서, 특정 크로마 샘플 위치 유형(예를 들어, 크로마 샘플 위치 유형 0 또는 2)의 경우, 지정된 X-탭 필터(X는 X = 6 또는 5와 같은 상수)가 TPM/GEO 예측 모드에서 크로마 가중치 서브샘플링에 사용될 수 있다.
41. 비디오 유닛(예를 들어, SPS, PPS, 픽처 헤더, 슬라이스 헤더 등)에서, 제1 신택스 요소(플래그와 같은)는 모든 블록(슬라이스/픽처)에 대해 MTS가 비활성화되는지 여부를 나타내기 위해 시그널링될 수 있다.
a. 인트라 코딩 블록(슬라이스/픽처)에 MTS(예를 들어, MTS 활성화/비활성화 MTS/암시적 MTS/명시적 MTS)를 적용하는 방법을 나타내는 제2 신택스 요소는제1 신택스 요소에 대해 조건부로 시그널링된다. 예를 들어, 제2 신택스 요소는제1 신택스 요소가 모든 블록(슬라이스/픽처)에 대해 MTS가 비활성화되지 않음을 나타낼 때만 시그널링된다.
b. 인터 코딩 블록(슬라이스/픽처)에 MTS(예를 들어, MTS 활성화/비활성화 MTS/암시적 MTS/명시적 MTS)를 적용하는 방법을 나타내는 제3 신택스 요소는제1 신택스 요소에 대해 조건부로 시그널링된다. 예를 들어, 제3 신택스 요소는제1 신택스 요소가 모든 블록(슬라이스/픽처)에 대해 MTS가 비활성화되지 않음을 나타낼 때만 시그널링된다.
c. 예시적인 신택스 설계는 다음과 동일하다.
Figure pct00055
d. 제3 신택스 요소는 서브블록 트랜스폼(Sub-Block Transform)(SBT) 적용 여부에 따라 조건부로 시그널링될 수 있다. 예시적인 신택스 설계는 다음과 동일하다.
Figure pct00056
e. 예시적인 신택스 설계는 다음과 동일하다.
Figure pct00057
코딩 툴 X 사용 결정
42. 코딩 툴 X를 활성화할지 여부 및/또는 활성화하는 방법의 결정은 하나 또는 다수의 레퍼런스 픽처 및/또는 현재 픽처의 고려 픽처의 폭 및/높이에 의존할 수 있다.
a. 하나 또는 다수의 레퍼런스 픽처 및/또는 현재 픽처의 고려 픽처(considering picture)의 폭 및/높이는 결정을 내리기 위해 수정될 수 있다.
b. 고려 픽처는 JVET-P0590에 정의된 것과 같이 적합성 윈도우 또는 스케일링 윈도우에 의해 정의될 수 있다.
i. 고려 픽처는 전체 픽처일 수 있다.
c. 하나의 예에서, 코딩 툴 X를 활성화하는지 여부 및/또는 방법은 픽처의 너비에서 수평으로 하나 또는 다중 오프셋을 뺀 값 및/또는 픽처의 높이에서 수직 방향으로 오프셋을 뺀 값에 따라 달라질 수 있다.
i. 하나의 예에서, 수평 오프셋은 scaling_win_left_offset으로 정의될 수 있으며, 여기서 scaling_win_left_offset은 JVET-P0590에서와 같이 정의될 수 있다.
ii. 하나의 예에서, 수직 오프셋은 scaling_win_top_offset으로 정의될 수 있으며, 여기서 scaling_win_top_offset은 JVET-P0590에서와 같이 정의될 수 있다.
iii. 하나의 예에서, 수평 오프셋은 (scaling_win_right_offset + scaling_win_left_offset)로 정의될 수 있으며, 여기서 scaling_win_right_offset 및 scaling_win_left_offset은 JVET-P0590에서와 같이 정의될 수 있다.
iv. 하나의 예에서, 수직 오프셋은 (scaling_win_bottom_offset + scaling_win_top_offset)로 정의될 수 있으며, 여기서 scaling_win_bottom_offset 및 scaling_win_top_offset은 JVET-P0590에서와 같이 정의될 수 있다.
v. 하나의 예에서, 수평 오프셋은 SubWidthC * ( scaling_win_right_offset + scaling_win_left_offset )로 정의될 수 있으며, 여기서 SubWidthC, scaling_win_right_offset 및 scaling_win_left_offset은 JVET-P0590에서와 같이 정의될 수 있다.
vi. 하나의 예에서, 수직 오프셋은 SubHeightC * ( scaling_win_bottom_offset + scaling_win_top_offset )로 정의될 수 있으며, 여기서 SubHeightC, scaling_win_bottom_offset 및 scaling_win_top_offset은 JVET-P0590에서와 같이 정의될 수 있다.
d. 하나의 예에서, 레퍼런스 픽처를 고려하는 두 개 중 적어도 하나가 현재 픽처와 다른 해상도(폭 또는 높이)를 갖는 경우, 코딩 툴 X는 비활성화된다.
i. 대안적으로, 두 개의 출력 레퍼런스 픽처 중 적어도 하나가 현재 픽처보다 큰 치수(폭 또는 높이)를 갖는 경우, 코딩 툴 X는 비활성화된다.
e. 하나의 예에서, 레퍼런스 픽처 목록 L에 대한 레퍼런스 픽처를 고려하는 것이 현재 픽처와 다른 해상도를 갖는 경우, 코딩 툴 X는 레퍼런스 픽처 목록 L에 대해 비활성화된다.
i. 대안적으로, 레퍼런스 픽처 목록 L에 대한 레퍼런스 픽처를 고려하는 것이 현재 픽처보다 큰 차원(폭 또는 높이)을 갖는 경우, 코딩 툴 X는 레퍼런스 픽처 목록 L에 대해 비활성화된다.
f. 하나의 예에서, 두 개의 레퍼런스 픽처 목록의 두 개의 고려하는 레퍼런스 픽처가 다른 해상도를 갖는 경우, 코딩 툴은 비활성화될 수 있다.
i. 대안적으로, 코딩 툴의 표시는 해상도에 따라 조건부로 시그널링될 수 있다.
ii. 대안적으로, 코딩 툴의 표시의 시그널링은 스킵될 수 있다.
g. 하나의 예에서, 두 개의 병합 후보의 두 개의 고려 레퍼런스 픽처가 적어도 하나의 레퍼런스 픽처 목록에 대한 제1 쌍별 병합 후보(first pairwise merge candidate)를 유도하기 위해 활용되는 경우, 코딩 툴은 비활성화될 수 있으며, 즉 제1 쌍별 병합 후보가 이용 불가능한 것으로 표시된다.
i. 대안적으로, 두 개의 병합 후보의 두 개의 고려 레퍼런스 픽처가 두 개의 레퍼런스 픽처 목록 모두에 대한 제1 쌍별 병합 후보를 유도하기 위해 활용되는 경우, 코딩 툴은 비활성화될 수 있으며, 즉, 제1 쌍별 병합 후보는 이용 불가능한 것으로 표시된다.
h. 하나의 예에서, 코딩 툴의 디코딩 프로세스는 픽처 차원을 고려하여 수정될 수 있다.
i. 하나의 예에서, SMVD의 다른 레퍼런스 픽처 목록(예를 들어, 목록 1)에 대한 MVD의 유도는 두 개의 목표 SMVD 레퍼런스 픽처 중 적어도 하나의 해상도 차이(예를 들어, 스케일링 인자)에 기초할 수 있다.
ii. 하나의 예에서, 쌍별 병합 후보의 유도는 두 개의 레퍼런스 픽처와 연관된 두 개의 레퍼런스 픽처 중 적어도 하나의 해상도 차이(예를 들어, 스케일링 인자)에 기초할 수 있으며, 예를 들어, 동일한 가중치 대신 선형 가중 평균이 적용될 수 있다.
i. 하나의 예에서, X는 다음과 같을 수 있다.
i. 디코더 측에서 모션/예측을 개선하는 DMVR/BDOF/PROF/SMVD/MMVD/기타 코딩 툴
ii. TMVP/기타 코딩 툴은 시간적 모션 정보에 의존
iii. MTS 또는 다른 트랜스폼 코딩 툴
iv. CC-ALF
v. TPM
vi. GEO
vii. 전환 가능한 보간 필터(Switchable interpolation filter)(예를 들어, 반픽셀(half-pel) 모션 보상을 위한 대체 보간 필터)
viii. 하나의 블록을 여러 파티션으로 파티션하는 TPM/GEO/기타 코딩 툴의 혼합 프로세스(blending process).
ix. 현재 픽처와 다른 픽처에 저장된 정보에 응답하는 코딩 툴
x. 쌍별 병합 후보(해상도와 관련된 특정 조건이 충족되지 않으면 쌍별 병합 후보가 생성되지 않음)
xi. CU 레벨 가중치(BCW)를 사용한 이중 예측.
xii. 가중 예측.
xiii. 아핀 예측(Affine Prediction)
xiv. 적응형 모션 벡터 해상도(AMVR)
43. 코딩 툴의 사용을 시그널링할지 여부 및/또는 시그널링하는 방법은 하나 또는 다중 레퍼런스 픽처 및/또는 현재 픽처의 고려 픽처의 폭 및/또는 높이에 따라 달라질 수 있다.
j. 하나 또는 다수의 레퍼런스 픽처 및/또는 현재 픽처의 고려 픽처(considering picture)의 폭 및/높이는 결정을 내리기 위해 수정될 수 있다.
k. 고려 픽처는 JVET-P0590에 정의된 것과 같이 적합성 윈도우 또는 스케일링 윈도우에 의해 정의될 수 있다.
i. 고려 픽처는 전체 픽처일 수 있다.
l. 하나의 예에서, X는 적응 모션 벡터 해상도(AMVR)일 수 있다.
m. 하나의 예에서, X는 MV 차이의 병합(merge with MV difference)(MMVD) 방법일 수 있다.
i. 하나의 예에서, 대칭 모션 벡터 차이 레퍼런스 인덱스의 구성은 상이한 레퍼런스 픽처에 대한 RPR 경우의 픽처 해상도/표시에 의존할 수 있다.
n. 하나의 예에서, X는 대칭 MVD(Symmetric MVD)(SMVD) 방법일 수 있다.
o. 하나의 예에서, X는 QT/BT/TT 또는 다른 파티셔닝 유형일 수 있다.
p. 하나의 예에서, X는 CU-레벨 가중치(BCW)를 사용한 양방향 예측일 수 있다.
q. 하나의 예에서, X는 가중 예측일 수 있다.
r. 하나의 예에서, X는 아핀 예측일 수 있다.
s. 하나의 예에서, 반픽셀 모션 벡터 정밀도/전환 가능한 보간 필터의 사용 표시를 시그널링할지 여부는 해상도 정보/RPR이 현재 블록에 대해 활성화되는지 여부에 따라 달라질 수 있다.
t. 하나의 예에서, amvr_precision_idx의 시그널링은 해상도 정보/RPR이 현재 블록에 대해 활성화되었는지 여부에 따라 달라질 수 있다.
u. 하나의 예에서, sym_mvd_flag/mmvd_merge_flag의 시그널링은 해상도 정보/RPR이 현재 블록에 대해 활성화되는지 여부에 따라 달라질 수 있다.
v. 적합성 비트스트림은 하나 또는 여러 레퍼런스 픽처의 고려 픽처의 너비 및/높이가 현재 출력 픽처의 너비 및/높이와 다를 때 1/2-펠 MV 및/또는 MVD 정밀도(예를 들어, 대체 보간 필터/전환 가능한 보간 필터)가 허용되지 않음을 충족해야 한다.
44. 1/2 픽셀 MV 및/또는 MVD 정밀도(또는 대체 보간 필터/전환 가능한 보간 필터)를 갖는 AMVR이 RPR의 블록에 대해 여전히 활성화될 수 있다고 제안된다.
w. 대안적으로, 또한, 1/2-펠 또는 다른 정밀도를 갖는 블록에 대해 다른 보간 필터가 적용될 수 있다.
45. 위의 항목에서 동일/다른 해상도의 조건 확인은 레퍼런스 픽처에 대한 플래그를 추가하고 레퍼런스 픽처와 연관된 플래그를 확인하여 대체될 수 있다.
x. 하나의 예에서, (즉, 레퍼런스 픽처가 RPR 케이스인지 비-RPR 케이스인지를 나타내기 위해) 플래그를 참 또는 거짓으로 설정하는 프로세스가 레퍼런스 픽처 목록 구성 프로세스 동안 호출될 수 있다.
i. 예를 들어, 다음이 적용될 수 있다:
fRefWidth는 루마 샘플에서 레퍼런스 픽처 RefPicList[ i ][ j ]의 PicOutputWidthL과 동일하게 설정되고, 여기서 PicOutputWidthL은 레퍼런스 픽처의 고려 픽처의 너비를 나타낸다.
fRefWidth는 루마 샘플에서 레퍼런스 픽처 RefPicList[ i ][ j ]의 PicOutputHeightL과 동일하게 설정되고, 여기서 PicOutputHeightL은 레퍼런스 픽처의 고려 픽처의 높이를 나타낸다.
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL, 여기서
PicOutputWidthL은 현재 픽처의 고려 픽처의 너비를 나타낸다.
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL, 여기서 PicOutputWidthL은 현재 픽처의 고려 중인 픽처의 높이를 나타낸다.
RefPicIsScaled[ i ][ j ] = ( RefPicScale[ i ][ j ][ 0 ] != ( 1 << 14 ) ) | |
( RefPicScale[ i ][ j ][ 1 ] != ( 1 << 14 ) )
여기서 RefPicList[ i ][ j ]는 레퍼런스 픽처 목록 i에서 j번째 레퍼런스 픽처를 나타낸다.
y. 하나의 예에서, RefPicIsScaled[ 0 ][ refIdxL0 ]이 0과 같지 않거나 RefPicIsScaled[ 1 ][ refIdxL1 ]이 0과 같지 않을 때, 코딩 툴 X(예를 들어, DMVR/BDOF/SMVD/MMVD/thoseD/PROF 위의 글머리 기호에 언급됨)이 비활성화될 수 있다.
z. 하나의 예에서, RefPicIsScaled[ 0 ][ refIdxL0 ] 및 RefPicIsScaled[ 1 ][ refIdxL1 ]이 모두 0과 같지 않은 경우, 코딩 툴 X(예를 들어, DMVR/BDOF/SMVD/MMVD/SMVD/PROF/위의 글머리 기호에서 언급된 항목) ) 비활성화될 수 있다.
aa. 하나의 예에서, RefPicIsScaled[ 0 ][ refIdxL0 ]이 0과 같지 않을 때, 코딩 툴 X(예를 들어, PROF 또는 위의 글머리 기호에서 언급된 것들)는 레퍼런스 픽처 목록 0에 대해 비활성화될 수 있다.
bb. 하나의 예에서, RefPicIsScaled[ 1 ][ refIdxL1 ]이 0과 같지 않을 때, 코딩 툴 X(예를 들어, PROF 또는 위의 글머리 기호에서 언급된 것들)는 레퍼런스 픽처 목록 1에 대해 비활성화될 수 있다.
46. BDOF/DMVR에 의해 사용되는 SAD 및/또는 임계값은 비트 심도에 따라 달라질 수 있다.
a. 하나의 예에서, 계산된 SAD 값은 임계값과 비교되는 데 활용되기 전에 먼저 비트 심도의 함수에 의해 시프트될 수 있다.
b. 하나의 예에서, 계산된 SAD 값은 비트 심도의 함수에 의존할 수 있는 수정된 임계값과 직접 비교될 수 있다.
42. 픽처의 모든 슬라이스에 대한 slice_type 값이 I(I 슬라이스)인 경우, P/B 슬라이스 관련 신택스 요소는 픽처 헤더에서 시그널링되지 않을 수 있다.
a. 하나의 예에서, 지정된 픽처에 포함된 모든 슬라이스의 slice_type이 I(I 슬라이스)와 동일한지 여부를 나타내기 위해 신택스 요소(들)가 픽처 헤더에 추가될 수 있다.
i. 하나의 예에서, 제1 신택스 요소는 픽처 헤더에서 시그널링될 수 있다. 픽처 헤더와 연관된 슬라이스의 슬라이스 헤더의 슬라이스 유형 정보를 알리는 제2 신택스 요소를 시그널링/해석할지 여부 및/또는 방법은 제1 신택스 요소에 의존할 수 있다.
1) 하나의 예에서, 제2 신택스 요소는 제1 신택스 요소에 따라 시그널링되지 않고 슬라이스 유형인 것으로 추론될 수 있다.
2) 하나의 예에서, 제2 신택스 요소가 시그널링될 수 있지만, 제2 신택스 요소가 제1 신택스 요소에 따라 여러 주어진 값 중 하나여야 한다는 것이 적합성 요구사항이다.
3) 대안적으로, 제1 신택스 요소는 슬라이스와 연관된 AU 구분 문자 RBSP에서 시그널링될 수 있다.
ii. 하나의 예에서, 새로운 신택스 요소(예를 들어, pic_all_X_slices_flag)는 이 픽처에 대해 X 슬라이스만 허용되는지 또는 이 픽처의 모든 슬라이스가 X 슬라이스인지 여부를 나타내기 위해 픽처 헤더에서 시그널링될 수 있다. 예를 들어, X는 I, P 또는 B일 수 있다.
1) 하나의 예에서, 슬라이스 유형 정보는 슬라이스 헤더에서 시그널링되지 않고 모든 슬라이스가 연관된 픽처 헤더에서 I-슬라이스임을 나타내면 I-슬라이스인 것으로 추론된다.
iii. 하나의 예에서, 새로운 신택스 요소(예를 들어, ph_pic_type)는 이 픽처의 픽처 유형을 나타내기 위해 픽처 헤더에서 시그널링될 수 있다.
1) 예를 들어, ph_pic_type이 I-picture와 같으면(예를 들어, 0과 같으면), 픽처의 슬라이스의 slice_type은 I와 동일하도록만 허용될 수 있다.
2) 다른 예를 들어, ph_pic_type이 비-I 픽처(예를 들어, 1 또는 2)와 동일한 경우, 픽처의 슬라이스의 slice_type은 I 및/또는 P 및/또는 B와 동일하도록 허용될 수 있다.
b. 하나의 예에서, AU 구분 문자 RBSP의 신택스 요소 pic_type은 지정된 픽처의 모든 슬라이스가 I와 동일한지 여부를 나타내는 데 사용될 수 있다.
c. 하나의 예에서, 픽처의 모든 슬라이스가 I 슬라이스라면, 이 픽처의 모든 슬라이스에 대해 슬라이스 헤더의 신택스 요소 slice_type은 시그널링되지 않고 I 슬라이스(2와 같은)인 것으로 추론될 수 있다.
i. 하나의 예에서, 신택스 요소(pic_all_I_slices_flag, ph_pic_type, pic_type과 같으나 이에 제한되지 않음)가 지정된 픽처에 포함된 모든 슬라이스가 I와 동일함을 나타내는 경우, 비트스트림 제약이 추가되어 지정된 픽처는 I 슬라이스와 동일해야 한다.
ii. 대안적으로, 신택스 요소(pic_all_I_slices_flag, ph_pic_type, pic_type과 같으나 이에 제한되지 않음)가 지정된 픽처에 포함된 모든 슬라이스가 I와 동일함을 나타내면, P 또는 B 슬라이스가 지정된 픽처에서 허용되지 않음을 지정하기 위해 비트스트림 제약이 추가될 수 있다.
d. 슬라이스/픽처가 W-슬라이스/W-픽처인 경우, W-슬라이스가 아닌 슬라이스에 허용되는 슬라이스 헤더/픽처 헤더의 하나 이상의 신택스 요소(아래에 지정되는 신택스 요소 세트 X로 표시됨)는 시그널링되지 않을 수 있다. 예를 들어, W는 I일 수 있고, 비-W는 B 또는 P일 수 있다. 다른 예에서, W는 B일 수 있고, 비-W는 I 또는 P일 수 있다.
i. 하나의 예에서, 픽처의 모든 슬라이스가 W-슬라이스인 경우, W가 아닌 슬라이스에 대해 허용되는 픽처 헤더의 신택스 요소 세트 X는 시그널링되지 않을 수 있다.
ii. 대안적으로, 픽처의 모든 슬라이스가 W-슬라이스인지 여부에 따라 픽처 헤더의 여러 신택스 요소(아래에 명시된 바와 같이 세트 X로 표시됨)가 조건부로 시그널링될 수 있다.
iii. 신택스 요소 세트 X는 다음 중 하나 이상일 수 있다:
1) 하나의 예에서, X는, pic_rpl_present_flag, pic_rpl_sps_flag, pic_rpl_idx, pic_poc_lsb_lt, pic_delta_poc_msb_present_flag, pic_delta_poc_msb_cycle_lt, ...와 같으나 이에 제한되지 않는, 픽처 헤더의 레퍼런스 픽처 관련 신택스 요소일 수 있다.
슬라이스/픽처가 비인터 슬라이스/픽처인 것으로 시그널링되거나 추론되는 경우 X는 시간링되지 않고 사용되지 않는 것으로 추론될 수 있다.
2) 하나의 예에서, X는 pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, pic_log와 같은, 그러나 이에 제한되지 않는, 픽처 헤더의 인터 슬라이스 관련 신택스 요소일 수 있다.
슬라이스/픽처가 비인터 슬라이스/픽처인 것으로 시그널링되거나 추론되는 경우 X는 시간링되지 않고 사용되지 않는 것으로 추론될 수 있다.
3) 하나의 실시예에서, X는, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_six_minus_max_num_merge_cand, pic_five_minus_max_num_subblock_merge_cand, pic_fpel_mmvd_enabled_flag, pic_disable_bdof_flag, pic_disable_dmvr_flag, pic_disable_prof_flag, pic_max_num_merge_cand_minus_max_num_triangle_cand ...와 같은 그러나 이에 한정되지 않는, 픽처 헤더의 인터 예측과 관련된 신택스 요소일 수 있다.
슬라이스/픽처가 비-인터 슬라이스/픽처인 것으로 시그널링되거나 추론되는 경우 X는 시간링되지 않고 사용되지 않는 것으로 추론될 수 있다.
4) 하나의 예에서, X는,
pic_disable_bdof_flag,
pic_disable_dmvr_flag,
mvd_l1_zero_flag...와 같은, 그러나 이에 제한되지 않는, 픽처 헤더의 양방향 예측 관련 신택스 요소일 수 있지만 이에 제한되지는 않다.
슬라이스/픽처가 비-B 슬라이스/픽처로 시그널링되거나 추론되는 경우 X는 신호화되지 않고 사용되지 않는 것으로 추론될 수 있다.
타일/슬라이스 관련 치수 제한
43. 최대 타일 너비는 사양에서 지정할 수 있다.
a. 예를 들어, 최대 타일 너비는 CTB에서 최대 루마 타일 너비로 정의될 수 있다.
b. 하나의 예에서, 비디오 유닛(예를 들어, SPS, PPS, 픽처 헤더, 슬라이스 헤더 등)에서, 새로운 신택스 요소(들)는 현재 시퀀스/픽처/슬라이스/서브 픽처에서 허용되는 최대 타일 폭을 나타내기 위해 시그널링될 수 있다.
c. 하나의 예에서, 최대 루마 타일 폭, 또는 CTB에서의 최대 루마 타일 폭이 시그널링될 수 있다.
d. 하나의 예에서, 최대 루마 타일 폭은 N으로 고정될 수 있다(예를 들어, N = 1920 또는 4096 등).
e. 하나의 예에서, 다른 최대 타일 너비는 다른 프로필/레벨/계층에서 지정될 수 있다.
44. 최대 슬라이스/서브 픽처/타일 치수(예를 들어, 너비 및/또는 크기, 및/또는 길이 및/또는 높이)는 사양에서 지정될 수 있다.
a. 예를 들어, 최대 슬라이스/서브 픽처/타일 차원은 CTB에서 최대 루마 차원으로 정의될 수 있다.
b. 예를 들어, 슬라이스/서브 픽처/타일의 크기는 슬라이스 내의 CTB의 수로 정의될 수 있다.
c. 하나의 예에서, 비디오 유닛(예를 들어, SPS, PPS, 픽처 헤더, 슬라이스 헤더 등)에서, 새로운 신택스 요소(들)는 현재 시퀀스/픽처/슬라이스/서브 픽처에서 허용되는 최대 루마 슬라이스/서브 픽처/타일 치수를 나타내기 위해 시그널링될 수 있다.
d. 하나의 예에서, CTB에서의 최대 루마 슬라이스/서브 픽처 폭/높이 또는 최대 루마 슬라이스/서브 픽처 폭/높이는 직사각형 슬라이스/서브 픽처에 대해 시그널링될 수 있다.
e. 하나의 예에서, 최대 루마 슬라이스 크기(예를 들어, 너비 * 높이) 또는 CTB의 최대 루마 슬라이스 크기는 래스터 스캔 슬라이스에 대해 시그널링될 수 있다.
f. 하나의 예에서, CTB의 최대 루마 슬라이스/서브 픽처 크기(예를 들어, 폭 * 높이) 또는 최대 루마 슬라이스/서브 픽처 크기는 직사각형 슬라이스/서브 픽처 및 래스터 스캔 슬라이스 모두에 대해 시그널링될 수 있다.
g. 하나의 예에서, CTB의 최대 루마 슬라이스 길이 또는 최대 루마 슬라이스 길이는 래스터 스캔 슬라이스에 대해 시그널링될 수 있다.
h. 하나의 예에서, 최대 루마 슬라이스/서브 픽처 폭/높이는 N으로 고정될 수 있다(예를 들어, N = 1920 또는 4096 등).
i. 하나의 예에서, 최대 루마 슬라이스/서브 픽처 크기(예를 들어, 너비 * 높이)는 N(예를 들어, N = 2073600 또는 83388608 등)으로 고정될 수 있다.
j. 하나의 예에서, 상이한 최대 슬라이스/서브 픽처 치수가 상이한 프로파일/레벨/티어에서 지정될 수 있다.
k. 하나의 예에서, 픽처/서브 픽처에서 파티션될 슬라이스/서브 픽처/타일의 최대 개수는 사양에서 지정될 수 있다.
i. 최대 개수가 시그널링될 수 있다.
ii. 최대 수는 프로필/레벨/계층에 따라 다를 수 있다.
45. 현재 픽처의 너비와 높이가 각각 PW 및 PH로 표시되고; 현재 픽처의 크기 스케일링 윈도우의 너비와 높이는 각각 SW 및 SH로 표시되고; 레퍼런스 픽처의 스케일링 윈도우의 너비와 높이는 각각 SW' 및 SH'로 표시되고; 허용되는 최대 화면의 너비와 높이는 Wmax 및 Hmax로 표시된다고 가정한다. 편의상,
Figure pct00058
이다.
아래의 제약 조건 중 적어도 하나는 적합성 비트 스트림이 뒤따라야 한다. 아래의 제약 조건을 좁은 의미로 이해해서는 안 된다. 예를 들어, 제약 조건 (a / b) >= (c /d), 여기서 a, b, c, d는 0보다 큰 정수이며 (a / b) - (c /d) >= 0 또는 a*d >= c*b 또는 a*d-c*d >=0이다.
a.
Figure pct00059
이고, 여기서 a, b, c 및 offw는 정수이다. 예를 들어, a 135, b = 128, c = 7 및 offw = 0이다.
b.
Figure pct00060
이고, 여기서 d, e, f는 정수이다. 예를 들어, d 135, e = 128, f = 7 및 offh = 0이다.
c.
Figure pct00061
이고, 여기서 a, b는 정수이다. 예를 들어, a 1, b = 1 및 offw = 0이다.
d.
Figure pct00062
이고, 여기서 d, e는 정수이다. 예를 들어, d 1, e = 1 및 offh = 0이다.
e.
Figure pct00063
이고, 여기서 Lw, Bw 및 offw는 정수이다. 예를 들어, Lw=7, Bw=128 및 offw=0이다.
f.
Figure pct00064
이고, 여기서 Lh, Bh 및 offh는 정수이다. 예를 들어, Lh=7, Bh=128 및 offh=0이다.
g.
Figure pct00065
이고, 여기서 a 및 offw는 정수이다. 예를 들어, a 1이고 offw=0이다.
h.
Figure pct00066
이고, 여기서 b 및 offh는 정수이다. 예를 들어 b 1이고 offh=0이다.
i.
Figure pct00067
이고, 여기서 a 및 offw는 정수이다. 예를 들어, a 1이고 offw=0이다.
j.
Figure pct00068
이고, 여기서 b 및 offh는 정수이다. 예를 들어 b 1이고 offh=0이다.
46. Δ QP와 같은 QP 관련 정보는 픽처 헤더에서 시그널링될 수 있지만 PPS에서는 시그널링되지 않을 수 있다.
a. 하나의 예에서, QP 관련 정보(Δ QP와 같은)는 ACT(Adaptive Color Transform)와 같은 특정 코딩 툴에 대해 지정된다.
5. 추가 실시예
JVET-O2001-vE에 명시된 작업 초안은 실시예에서 아래와 같이 변경될 수 있다. VVC 초안의 텍스트 변경 사항은 아래 표에서 밑줄이 그어진 굵은 기울임꼴 글꼴로 표시되고 삭제 내용은 이중 굵은 괄호 안에 표시되고, 예를 들어 [[a]]는 "a"가 삭제되었음을 나타낸다.
5.1. 적합성 윈도우에 대한 제약의 구현
conf_win_left_offset, conf_win_right_offset, conf_win_top_offset 및 conf_win_bottom_offset은 출력을 위한 픽처 좌표에 지정된 직사각형 영역의 관점에서 디코딩 프로세스에서 출력되는 CVS의 픽처 샘플을 지정한다. conformance_window_flag가 0과 같을 때 conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, conf_win_bottom_offset의 값은 0과 같은 것으로 유추된다.
적합성 크로핑 윈도우는 SubWidthC * conf_win_left_offset to pic_width_in_luma_samples - ( SubWidthC * conf_win_right_offset + 1 의 수평 픽처 좌표 및 SubHeightC * conf_win_top_offset to pic_height_in_luma_samples - ( SubHeightC * conf_win_bottom_offset + 1 )의 수직 픽처 좌표가 포함되는 좌표를 갖는 루마 샘플을 포함한다.
SubWidthC * ( conf_win_left_offset + conf_win_right_offset ) 의 값은 pic_width_in_luma_samples 보다 작아야 하고, SubHeightC * ( conf_win_top_offset + conf_win_bottom_offset ) 의 값은 pic_height_in_luma_samples 보다 작아야 한다.
PicOutputWidthL 및 PicOutputHeightL 변수는 다음과 같이 유도된다:
PicOutputWidthL = pic_width_in_luma_samples - (7-43)
SubWidthC * ( conf_win_right_offset + conf_win_left_offset )
PicOutputHeightL = pic_height_in_pic_size_units - (7-44) SubHeightC * ( conf_win_bottom_offset + conf_win_top_offset )
ChromaArrayType이 0이 아닐 때, 두 크로마 어레이의 해당하는 지정된 샘플은 픽처 좌표( x / SubWidthC, y / SubHeightC )를 갖는 샘플이고, 여기서 ( x, y )는 지정된 루마 샘플의 픽처 좌표이다.
refPicOutputWidthL 및 refPicOutputHeightL는, 각각 이 PPS를 참조하는 현재 픽처의 레퍼런스 픽처의 PicOutputWidthL과 PicOutputHeightL로 설정한다. 다음 조건이 모두 충족되는 비트스트림 적합성의 요구 사항이다:
- PicOutputWidthL* 2는 refPicOutputWidthL 보다 크거나 동일해야 한다.
- PicOutputHeightL* 2는 efPicOutputHeightL 보다 크거나 동일해야 한다.
- PicOutputWidthL는 refPicOutputWidthL* 8보다 작거나 동일해야 한다.
- PicOutputHeightL은 refPicOutputHeightL* 8보다 작거나 동일해야 한다.
5.2. 레퍼런스 샘플 위치 유도의 실시예 1
8.5.6.3.1 일반
...
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
변수 frefleftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_left_offset과 동일하게 설정된다.
변수 freftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_top_offset과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다:
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ((  ( xSb - conf_win_left_offset)  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL = ( (  (ySb - conf_win_top_offset) << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-758)
- refx L = refx L +( fRefLeftOff<<4).
- refy L = refy L +( fRefTopOff<<4).
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은
- (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC = ( ((xSB - conf_win_left_offset) /SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-764)
refySbC =  ( (  (ySb - conf_win_top_offset)  / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-766)
- refx C = refx C +( fRefLeftOff/ SubWidthC <<5).
- refy C = refy C +( fRefTopOff/ SubHeightC <<5).
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
5.3. 레퍼런스 샘플 위치 유도의 실시예 2
8.5.6.3.1 8.5.6.3.1 일반
...
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
변수 frefleftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_left_offset과 동일하게 설정된다.
변수 freftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_top_offset과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다.
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ((  ( xSb - conf_win_left_offset)  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) )  +( fRefLeftOff<<10) + 32 ) >> 6 (8-756)
refySbL = ( (  (ySb - conf_win_top_offset) << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) )  +( fRefTopOff<<10) + 32 ) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC =  (  (( xSb - conf_win_left_offset)  / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-764)
refySbC =  ( (  (ySb - conf_win_top_offset)  / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-766)
- refx C = refx C +( fRefLeftOff/ SubWidthC <<5).
- refy C = refy C +( fRefTopOff/ SubHeightC <<5).
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
5.4. 레퍼런스 샘플 위치 유도의 실시예 3
8.5.6.3.1 8.5.6.3.1 일반
...
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
변수 frefleftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_left_offset과 동일하게 설정된다.
변수 freftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_top_offset과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다.
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ((  ( xSb - conf_win_left_offset)  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) )  +( fRefLeftOff<<10) + 32 ) >> 6 (8-756)
refySbL = ( (  (ySb - conf_win_top_offset) << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) )  +( fRefTopOff<<10) + 32 ) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC =  ( ( ( xSb - conf_win_left_offset)  / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) )  + ( fRefLeftOff/ SubWidthC <<10) + 16 ) >> 5 (8-764)
refySbC =  ( (  (ySb - conf_win_top_offset)  / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) )  + ( fRefTopOff/ SubHeightC <<10) + 16 ) >> 5 (8-766)
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
5.5. 레퍼런스 샘플 위치 클리핑의 실시예 1
8.5.6.3.1 일반
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플을 기준으로 현재 코딩 서브블록의 왼쪽 상단 샘플을 지정하는 루마 위치(xSb, ySb),
- 현재 코딩 서브블록의 너비를 지정하는 변수 sbWidth,
- 현재 코딩 서브블록의 높이를 지정하는 변수 sbHeight,
- 모션 벡터 오프셋 mvOffset,
- 세련된 모션 벡터 refMvLX,
- 선택한 레퍼런스 픽처 샘플 어레이 refPicLX,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 양방향 광학 흐름 플래그 bdofFlag,
- 현재 블록의 컬러 컴포넌트 인덱스를 지정하는 가변 cIdx이다.
이 프로세스의 출력은 다음과 같다:
- 예측 샘플 값의 (sbWidth + brdExtSize)x(sbHeight + brdExtSize) array predSamplesLX of prediction
예측 블록 경계 확장 크기 brdExtSize는 다음과 같이 유도된다:
brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 (8-752)
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다.
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ( ( xSb  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = Clip3( 0, fRefWidth -1, refxL  >>  4) (8-759)
yIntL = Clip3( 0, fRefHeight -1, refyL  >>  4) (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC =  ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-764)
refySbC =  ( ( ySb / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-766)
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = Clip3( 0, fRefWidth/ SubWidthC -1, refxC  >>  5) (8-767)
yIntC = Clip3( 0, fRefHeight/ SubHeightC -1, refyC  >>  5) (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
- 예측 샘플 값 predSamplesLX [xC] [yC]는 (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight 및 refPicLX을 입력으로 하여 8.5.6.3.4에 지정된 프로세스를 호출하여 유도된다:
5.6. 레퍼런스 샘플 위치 클리핑의 실시예 2
8.5.6.3.1 일반
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플을 기준으로 현재 코딩 서브블록의 왼쪽 상단 샘플을 지정하는 루마 위치(xSb, ySb),
- 현재 코딩 서브블록의 너비를 지정하는 변수 sbWidth,
- 현재 코딩 서브블록의 높이를 지정하는 변수 sbHeight,
- 모션 벡터 오프셋 mvOffset,
- 세련된 모션 벡터 refMvLX,
- 선택한 레퍼런스 픽처 샘플 어레이 refPicLX,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 양방향 광학 흐름 플래그 bdofFlag,
- 현재 블록의 컬러 컴포넌트 인덱스를 지정하는 가변 cIdx이다.
이 프로세스의 출력은 다음과 같다:
- 예측 샘플 값의 (sbWidth + brdExtSize)x(sbHeight + brdExtSize) array predSamplesLX of prediction
예측 블록 경계 확장 크기 brdExtSize는 다음과 같이 유도된다:
brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 (8-752)
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
변수 frefleftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_left_offset과 동일하게 설정된다.
변수 freftOff는 루마 샘플에서 레퍼런스 픽처의 conf_win_top_offset과 동일하게 설정된다.
모션 벡터 mvLX (refMvLX - mvOffset)와 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다.
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)은 전체 샘플 유닛으로 주어진 루마 위치로 하고 (xFracL, yFracL)는 1/16 샘플 유닛으로 주어진 오프셋으로 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내부의 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치라 한다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL = ( ( xSb  <<  4 ) + refMvLX[ 0 ] ) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = Clip3( fRefLeftOff, fRefLeftOff +fRefWidth -1, refxL  >>  4) (8-759)
yIntL = Clip3( fRefTopOff, fRefTopOff +fRefHeight -1, refyL  >>  4) (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참(TRUE)과 같거나( sps_affine_prof_enabled_flag가 참(TRUE)이고 inter_affine_flag[ xSb ][ ySb ]가 참(TRUE)과 같고, 다음 조건 중 하나 이상이 참이면, 예측 루마 샘플 값 predSamplesLX[ xL ][ yL ] ( xIntL + ( xFracL >> 3) - 1), yIntL + ( yFracL >> 3 ) - 1 ) 및 refPicLX 를 입력으로 사용하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 가져오기 프로세스를 호출하여 유도된다.
- xL은 0과 동일하다.
- xL은 sbWidth + 1과 동일하다.
- yL은 0과 동일하다.
- yL은 sbHeight + 1과 동일하다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.    
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5))와 동일하게 설정된다.
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
- (refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. 변수 refxSbC, refySbC, refxC 및 refyC는 다음과 같이 유도된다:
refxSbC =  ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp (8-763)
refxC=((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-764)
refySbC =  ( ( ySb / SubHeightC  <<  5 )  + mvLX[ 1 ] ) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 (8-766)
xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = Clip3( fRefLeftOff / SubWidthC, (fRefWidth + fRefLeftOff )/ SubWidthC -1, refxC  >>  5) (8-767)
yIntC = Clip3( fRefTopOff / SubHeightC, (fRefHeight + fRefTopOff )/ SubHeightC -1, refyC  >>  5) (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
- 예측 샘플 값 predSamplesLX [xC] [yC]는 (xIntC, yIntC), (xFracC, y-FracC), (xSbIntC, ySbIntC), sbWidth, sbHeight 및 refPicLX을 입력으로 하여 8.5.6.3.4에 지정된 프로세스를 호출하여 유도된다:
5.7 코딩 툴 사용의 실시예
5.7.1 BDOF 켜기/끄기 제어
- 변수 currPic은 현재 픽처를 지정하고 변수 bdofFlag는 다음과 같이 유도된다.
- 다음 조건이 모두 참이면, bdofFlag가 참과 동일하게 설정된다.
- sps_bdof_enabled_flag는 1이고 slice_disable_bdof_dmvr_flag는 0이다.
- predFlagL0[ xSbIdx ][ ySbIdx ] 및 predFlagL1[ xSbIdx ][ ySbIdx ]는 모두 1이다.
- DiffPicOrderCnt( currPic, RefPicList[ 0 ][ refIdxL0 ] )는 DiffPicOrderCnt( RefPicList[ 1 ][ refIdxL1 ], currPic)와 동일하다.
- RefPicList[ 0 ][ refIdxL0 ]은 단기 레퍼런스 픽처고 RefPicList[ 1 ][ refIdxL1 ]은 단기 레퍼런스 픽처다.
- MotionModelIdc[ xCb ][ yCb ]는 0과 동일하다.
- merge_subblock_flag[ xCb ][ yCb ]는 0과 동일하다.
- sym_mvd_flag[ xCb ][ yCb ]는 0과 동일하다.
- ciip_flag[ xCb ][ yCb ]는 0과 동일하다.
- BcwIdx[ xCb ][ yCb ]는 0과 동일하다.
- luma_weight_l0_flag[ refIdxL0 ] 및 luma_weight_l1_flag[ refIdxL1 ]은 모두 0과 동일하다.
- cbWidth는 8보다 크거나 동일하다.
- cbHeight는 8보다 크거나 동일하다.
- cbHeight * cbWidth는 128보다 크거나 동일하다.
- RefPicIsScaled[ 0 ][ refIdxL0 ]은 0과 동일하고 RefPicIsScaled[ 1 ][ refIdxL1 ]은 0과 동일하다.
- cIdx는 0과 동일하다.
- 그렇지 않으면 bdofFlag가 FALSE와 동일하게 설정된다.
5.7.2 DMVR 켜기/끄기 제어
- 다음 조건이 모두 참이면, dmvrFlag가 1과 동일하게 설정된다:
- sps_dmvr_enabled_flag는 1과 동일하고 slice_disable_bdof_dmvr_flag는 0과 동일하다.
- general_merge_flag[ xCb ][ yCb ]는 1과 동일하다.
- predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ] 모두 1과 동일하다.
- mmvd_merge_flag[ xCb ][ yCb ]는 0과 동일하다.
- ciip_flag[ xCb ][ yCb ]는 0과 동일하다.
- DiffPicOrderCnt( currPic, RefPicList[ 0 ][ refIdxL0 ])는 DiffPicOrderCnt( RefPicList[ 1 ][ refIdxL1 ], currPic )와 동일하다.
- RefPicList[ 0 ][ refIdxL0 ]은 단기 레퍼런스 픽처고 RefPicList[ 1 ][ refIdxL1 ]은 단기 레퍼런스 픽처다.
- BcwIdx[ xCb ][ yCb ]는 0과 동일하다.
- luma_weight_l0_flag[ refIdxL0 ] 및 luma_weight_l1_flag[ refIdxL1 ] 모두 0과 동일하다.
- cbWidth가 8보다 크거나 동일하다.
- cbHeight가 8보다 크거나 동일하다.
- cbHeight*cbWidth는 128보다 크거나 동일하다.
- RefPicIsScaled[ 0 ][ refIdxL0 ]은 0과 동일하고 RefPicIsScaled[ 1 ][ refIdxL1 ]은 0과 동일하다.
5.7.3 레퍼런스 픽처 목록 X에 대한 PROF 켜짐/꺼짐 제어
변수 cbProfFlagLX는 다음과 같이 유도된다:
- 다음 조건 중 하나 이상이 참이면 cbProfFlagLX는 거짓(FALSE)과 동일하게 설정된다.
- sps_affine_prof_enabled_flag는 0과 동일하다.
- fallbackModeTriggered는 1과 동일하다.
- numCpMv는 2이고 cpMvLX[ 1 ][ 0 ]은 cpMvLX[ 0 ][ 0 ]이고 cpMvLX[ 1 ][ 1 ]은 cpMvLX[ 0 ][ 1 ]과 동일하다.
- numCpMv는 3이고 cpMvLX[ 1 ][ 0 ]은 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ]은 cpMvLX[ 0 ][ 1 ]과 동일하고 cpMvLX[ 2 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 2 ][ 1 ]는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- RefPicIsScaled[ X ][ refIdxLX ]는 0과 동일하다.
- [[refIdxLX와 연관된 레퍼런스 픽처 refPicLX의 pic_width_in_luma_samples는 각각 각각 현재 픽처의 pic_width_in_luma_samples와 동일하지 않다.
- refIdxLX와 연관된 레퍼런스 픽처 refPicLX의 pic_height_in_luma_samples는 각각 현재 픽처의 pic_height_in_luma_samples와 동일하지 않다.]]
- 그렇지 않으면 cbProfFlagLX가 참(TRUE)과 동일하게 설정된다.
5.7.4 레퍼런스 픽처 목록 X에 대한 PROF 켜기/끄기 제어(제2 실시예)
변수 cbProfFlagLX는 다음과 같이 유도된다:
- 다음 조건 중 하나 이상이 참이면 cbProfFlagLX는 거짓(FALSE)과 동일하게 설정된다.
- sps_affine_prof_enabled_flag는 0과 동일하다.
- fallbackModeTriggered는 1과 동일하다.
- numCpMv는 2이고 cpMvLX[ 1 ][ 0 ]은 cpMvLX[ 0 ][ 0 ]이고 cpMvLX[ 1 ][ 1 ]은 cpMvLX[ 0 ][ 1 ]과 동일하다.
- numCpMv는 3이고 cpMvLX[ 1 ][ 0 ]은 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ]은 cpMvLX[ 0 ][ 1 ]과 동일하고 cpMvLX[ 2 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 2 ][ 1 ]는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- RefPicIsScaled[ 0 ][ refIdxL0 ] 및 RefPicIsScaled[ 1 ][ refIdxL1 ]은 0과 동일하다.
- [[refIdxLX와 연관된 레퍼런스 픽처 refPicLX의 pic_width_in_luma_samples는 각각 각각 현재 픽처의 pic_width_in_luma_samples와 동일하지 않다.
- refIdxLX와 연관된 레퍼런스 픽처 refPicLX의 pic_height_in_luma_samples는 각각 현재 픽처의 pic_height_in_luma_samples와 동일하지 않다.]]
그렇지 않으면 cbProfFlagLX가 참(TRUE)과 동일하게 설정된다.
5.8 픽처 헤더(JVET-P2001-v9 상단)에서 상호 관련된 신택스 요소를 조건부로 시그널링하는 실시예
7.3.2.6 픽처 헤더 RBSP 신택스
Figure pct00069
Figure pct00070
Figure pct00071
Figure pct00072
Figure pct00073
Figure pct00074
Figure pct00075
7.4.3.6 픽처 헤더 RBSP 시맨틱
1과 동일한 pic_all_intra_slices_flag는 픽처의 모든 슬라이스가 I 슬라이스임을 지정한다. 0과 동일한 pic_all_intra_slices_flag는 픽처에 적어도 하나의 P 또는 B 슬라이스가 있음을 지정한다.
7.3.7 슬라이스 헤더 신택스
7.3.7.1 일반 슬라이스 헤더 신택스
Figure pct00076
5.9 RPR에 대한 제약의 구현(JVET-P2001-v14 상단)
refPicWidthInLumaSamples 및 refPicHeightInLumaSamples를 각각 이 PPS를 참조하는 현재 픽처의 레퍼런스 픽처의 pic_width_in_luma_samples 및 pic_height_in_luma_samples라고 하자. refPicOutputWidthL 및 refPicOutputHeightL을 레퍼런스 픽처의 PicOutputWidthL 및 PicOutputHeightL로 각각 설정한다. 다음 조건이 모두 충족되는 비트스트림 적합성의 요구 사항이다:
- PicOutputWidthL* 2는 refPicOutputWidthL 보다 크거나 동일해야 한다.
- PicOutputHeightL* 2는 efPicOutputHeightL 보다 크거나 동일해야 한다.
- PicOutputWidthL는 refPicOutputWidthL* 8보다 작거나 동일해야 한다.
- PicOutputHeightL은 refPicOutputHeightL* 8보다 작거나 동일해야 한다.
- ( PicOutputWidthL - refPicOutputWidthL ) * ( PicWidthInLumaSamples - refPicWidthInLumaSamples )는 0보다 크거나 동일해야 한다.
- ( PicOutputHeightL - refPicOutputHeightL ) * ( PicHeightInLumaSamples - refPicHeightInLumaSamples )는 0보다 크거나 동일해야 한다.
- 135 * pic_width_max_in_luma_samples * PicOutputWidthL - (128* refPicOutputWidthL + 7 * PicOutputWidthL ) * PicWidthInLumaSamples는 0보다 크거나 동일해야 한다.
- 135 * pic_height_max_in_luma_samples * PicOutputHeightL - (128* refPicOutputHeightL + 7 * PicOutputHeightL ) * PicHeightInLumaSamples는 0보다 크거나 동일해야 한다.
5.10 랩어라운드 오프셋 신호의 실시예(JVET-P2001-v14 상단)
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00077
7.3.2.3 픽처 파라미터 세트 RBSP 신택스.
Figure pct00078
1과 동일한 pps_ref_wraparound_enabled_flag는 수평 랩-어라운드(wrap-around) 모션 보상이 인터 예측에 적용됨을 지정한다. 0과 동일한 pps_ref_wraparound_enabled_flag는 수평 랩-어라운드 모션 보상이 적용되지 않음을 지정한다. ( CtbSizeY / MinCbSizeY + 1)의 값이 ( pic_width_in_luma_samples / MinCbSizeY - 1 )보다 작거나 같을 때, pps_ref_wraparound_enabled_flag의 값은 0과 같아야 한다.
pps_ref_wraparound_offset_minus1 더하기 1은 MinCbSizeY 루마 샘플 유닛로 수평 랩-어라운드 위치를 계산하는 데 사용되는 오프셋을 지정한다. pps_ref_wraparound_offset_minus1의 값은 ( CtbSizeY / MinCbSizeY ) + 1 ~ ( pic_width_in_luma_samples / MinCbSizeY ) - 1을 포함하는 범위에 있어야 한다.
7.4.4.2 일반 제약 정보 시맨틱
...
1과 동일한 no_ref_wraparound_constraint_flag는 [[sps_ref_wraparound_enabled_flag]] pps_ref_wraparound_enabled_flag가 0과 같아야 함을 지정한다. 0과 동일한 no_ref_wraparound_constraint_flag는 이러한 제약을 부과하지 않는다.
8.5.3.2.2 루마 샘플 쌍선형 보간 과정
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 루마 위치(xIntL, yIntL)
- 분수 샘플 유닛의 루마 위치 (xFracL, yFracL),
- 루마 레퍼런스 샘플 어레이 refPicLXL,
...
전체 샘플 유닛(xInti, yInti)의 루마 위치는 i = 0..1에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i ) (642)
yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i ) (643)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 동일함), 다음이 적용된다:
xInti = Clip3( 0, picW - 1, [[sps_ref_wraparound_enabled_flag]] pps_ref_wraparound_enabled_flag ?
ClipH( ( [[pps_ref_wraparound_offset_minus1]] pps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, ( xIntL + i ) ) : (644)
xIntL + i )
yInti = Clip3( 0, picH - 1, yIntL + i ) (645)
...
8.5.6.3.2 루마 샘플 보간 필터링 프로세스
...
전체 샘플 유닛(xInti, yInti)의 루마 위치는 i = 0..7에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i - 3 ) (955)
yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3 ) (956)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 동일함), 다음이 적용된다:
xInti = Clip3( 0, picW - 1, [[sps_ref_wraparound_enabled_flag]] pps_ref_wraparound_enabled_flag ?
ClipH( ( [[pps_ref_wraparound_offset_minus1]] pps_ref_wraparound_offset_minus1  + 1 ) * MinCbSizeY, picW, xIntL + i - 3 ) : (957)
xIntL + i - 3)
yInti = Clip3(0, picH - 1, yIntL + i - 3) (958)
...
8.5.6.3.3 루마 정수 샘플 가져오기 프로세스(Luma integer sample fetching process)
...
전체 샘플 유닛(xInt, yInt)의 루마 위치는 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInt = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL ) (966)
yInt = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL ) (967)
- 그렇지 않으면, 다음이 적용된다:
xInt = Clip3( 0, picW - 1, [[sps_ref_wraparound_enabled_flag]] pps_ref_wraparound_enabled_flag ? (968)
ClipH( ( [[pps_ref_wraparound_offset_minus1]] pps_ref_wraparound_offset_minus1  + 1 ) * MinCbSizeY, picW, xIntL ) : xIntL )
yInt = Clip3( 0, picH - 1, yIntL ) (969)
...
8.5.6.3.4 크로마 샘플 보간 프로세스(Chroma sample interpolation process)
...
변수 xOffset은( [[pps_ref_wraparound_offset_minus1]] pps_ref_wraparound_offset_minus1  + 1 ) * MinCbSizeY ) / SubWidthC와 동일하게 설정된다.
전체 샘플 유닛(xInti, yInti)의 크로마 위치는 i = 0..3에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xInti = Clip3( SubPicLeftBoundaryPos / SubWidthC, SubPicRightBoundaryPos / SubWidthC, xIntL + i ) (971)
yInti = Clip3( SubPicTopBoundaryPos / SubHeightC, SubPicBotBoundaryPos / SubHeightC, yIntL + i ) (972)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 동일함), 다음이 적용된다:
xInti = Clip3( 0, picWC - 1, [[sps_ref_wraparound_enabled_flag]] pps_ref_wraparound_enabled_flag  ? ClipH( xOffset, picWC, xIntC + i - 1 ) : (973)
xIntC + i - 1 )
yInti = Clip3( 0, picHC - 1, yIntC + i - 1 )
...
5.11 (JVET-P2001-v14 상단) 서브 픽처 사이의 디블록킹 필터링의 실시예
8.8.3 디블로킹 필터 프로세스
8.8.3.1 일반
이 프로세스의 입력은 디블로킹 전에 재구성 된 픽처, 즉 어레이 recPictureL 이고, ChromaArrayType0과 같지 않을 때, 어레이 recPictureCb 및 recPictureCr.이다.
이 프로세스의 출력은 디블로킹 후 수정된 재구성된 픽처, 즉 어레이 recPictureL 이고 ChromaArrayType이 0과 같지 않을 때, 어레이 recPictureCb 및 recPictureCr이다.
...
디블로킹 필터 프로세스(deblocking filter process)는 모든 코딩 서브블록 가장자리에 적용되고 다음과 같은 유형의 가장자리를 제외하고, 픽처의 블록 가장자리를 트랜스폼한다:
픽처의 경계에 있는 가장자리,
[[loop_filter_across_subpic_enabled_flag[ SubPicIdx ]가 0인 서브 픽처의 경계와 일치하는 에지,]]
VirtualBoundariesDisabledFlag가 1일 때 픽처의 가상 경계와 일치하는 가장자리,
...
8.8.3.2 한 방향에 대한 디블로킹 필터 프로세스
이 프로세스에 대한 입력은 다음과 같다:
루마(DUAL_TREE_LUMA) 또는 크로마 컴포넌트(DUAL_TREE_CHROMA)이 현재 처리되는지 여부를 지정하는 변수 treeType,
...
1. filterEdgeFlag 변수는 다음과 같이 유도된다.
edgeType이 EDGE_VER와 같고 다음 조건 중 하나 이상이 참이면 filterEdgeFlag는 0으로 설정된다.
현재 코딩 블록의 왼쪽 경계는 픽처의 왼쪽 경계이다.
[[현재 코딩 블록의 왼쪽 경계는 서브 픽처의 왼쪽 또는 오른쪽 경계이고 loop_filter_across_subpic_enabled_flag[ SubPicIdx ]는 0과 같다.]]
...
그렇지 않고 edgeType이 EDGE_HOR와 같고 다음 조건 중 하나 이상이 참이면 filterEdgeFlag 변수는 0으로 설정된다.
현재 루마 코딩 블록의 상단 경계는 픽처의 상단 경계이다.
[[현재 코딩 블록의 상단 경계는 서브 픽처의 상단 또는 하단 경계이고 loop_filter_across_subpic_enabled_flag[ SubPicIdx ]는 0과 같다.]]
...
8.8.3.6.6 짧은 필터를 사용한 루마 샘플의 필터링 프로세스
...
nDp가 0보다 크고 샘플 p0를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, nDp는 0으로 설정된다.
nDq가 0보다 크고 샘플 q0를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, nDq는 0과 동일하게 설정된다:
nDp가 0보다 크고 loop_filter_across_subpic_enabled_flag[ subPicIdxP ]가 0과 같을 때, nDp는 0과 동일하게 설정되고, 여기서 subPicIdxP는 샘플 p 0 을 포함하는 서브 픽처의 서브 픽처 인덱스이다.
nDq가 0보다 크고 loop_filter_across_subpic_enabled_flag[ subPicIdxQ]가 0과 같을 때, nDq는 0과 동일하게 설정되고, 여기서 subPicIdxQ는 샘플 q0을 포함하는 서브 픽처의 서브 픽처 인덱스이다.
8.8.3.6.7 긴 필터를 사용한 루마 샘플의 필터링 프로세스
...
샘플 pi를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, 필터링된 샘플 값 pi'는 i = 0..maxFilterLengthP - 1인 대응하는 입력 샘플 값 pi로 대체된다.
샘플 qi를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, 필터링된 샘플 값 qi'는 j = 0..maxFilterLengthQ - 1인 대응하는 입력 샘플 값 qj로 대체된다.
loop_filter_across_subpic_enabled_flag[ subPicIdxP ]가 0과 같을 때, 여기서 subPicIdxP는 샘플 p0를 포함하는 서브 픽처의 서브 픽처 인덱스이고, 필터링된 샘플 값 pi'는 i = 0..maxFilterLengthP - 1인 대응하는 입력 샘플 값 pi로 대체된다.
loop_filter_across_subpic_enabled_flag[ subPicIdxQ ]가 0과 같을 때, 여기서 subPicIdxQ는 샘플 q0을 포함하는 서브 픽처의 서브 픽처 인덱스이고, 필터링된 샘플 값 qi'는 j = 0..maxFilterLengthQ - 1인 대응하는 입력 샘플 값 qj로 대체된다.
8.8.3.6.9 크로마 샘플에 대한 필터링 프로세스
...
샘플 pi를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, 필터링된 샘플 값 pi'는 i = 0..maxFilterLengthP - 1인 대응하는 입력 샘플 값 pi로 대체된다.
샘플 qi를 포함하는 코딩 블록을 포함하는 코딩 유닛의 pred_mode_plt_flag가 1과 같을 때, 필터링된 샘플 값 qi'는 i = 0..maxFilterLengthQ - 1인 해당 입력 샘플 값 qi로 대체된다.
loop_filter_across_subpic_enabled_flag[ subPicIdxP ]가 0과 같을 때, 여기서 subPicIdxP는 샘플 p 0 를 포함하는 서브 픽처의 서브 픽처 인덱스이고, 필터링된 샘플 값 pi'는 i = 0..maxFilterLengthP - 1인 대응하는 입력 샘플 값 pi로 대체된다.
loop_filter_across_subpic_enabled_flag[ subPicIdxQ ]가 0과 같을 때, 여기서 subPicIdxQ는 샘플 q 0 을 포함하는 서브 픽처의 서브 픽처 인덱스이고, 필터링된 샘플 값 qi'는 i = 0..maxFilterLengthQ - 1인 해당 입력 샘플 값 qi로 대체된다.
6. 개시된 기술의 구현 예
도 7은 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(video processing system)(7000)을 도시하는 블록도이다. 다양한 구현은 시스템(system)(7000)의 구성요소 중 일부 또는 전부를 포함할 수 있다. 시스템(7000)은 비디오 콘텐츠를 수신하기 위한 입력(input)(7002)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들어, 8 또는 10비트 다중 컴포넌트 픽셀 값으로 수신될 수 있거나 압축 또는 인코딩된 포맷일 수 있다. 입력(7002)은 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예로는 이더넷, 수동 광 네트워크(PON) 등과 같은 유선 인터페이스와 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스가 있다.
시스템(7000)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(coding component)(7004)를 포함할 수 있다. 코딩 컴포넌트(7004)는 비디오의 코딩된 표현을 생성하기 위해 입력(7002)으로부터 코딩 컴포넌트(7004)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술은 비디오 압축 또는 비디오 트랜스코딩 기술이라고도 한다. 코딩 컴포넌트(7004)의 출력은 컴포넌트(component)(7006)에 의해 표현되는 바와 같이, 연결된 통신을 통해 저장되거나 전송될 수 있다. 입력(7002)에서 수신된 비디오의 저장되거나 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(7010)로 전송되는 픽셀 값 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(7008)에 의해 사용될 수 있다. 비트스트림 표현(또는 비트스트림)에서 사용자가 볼 수 있는 비디오를 생성하는 프로세스를 비디오 압축 해제라고도 합니다. 또한, 특정 비디오 처리 작업을 "코딩" 작업(coding operation) 또는 툴(tools)로 지칭하지만, 코딩 툴 또는 작업이 인코더에서 사용되고 코딩 결과를 되돌리는 대응하는 디코딩 툴 또는 작업이 디코더에 의해 수행된다는 점을 이해할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예로는 범용 직렬 버스(USB) 또는 고화질 멀티미디어 인터페이스(HDMI) 또는 디스플레이포트 등이 포함될 수 있다. 스토리지 인터페이스의 예로는 SATA(직렬 첨단 기술 첨부 파일), PCI, IDE 인터페이스 등이 있다. 본 문서에 기재된 기술은 휴대전화, 노트북, 스마트폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 기타 장치와 같은 다양한 전자 기기에 구현될 수 있다.
도 8은 비디오 처리 장치(video processing apparatus)(8000)의 블록도이다. 장치(apparatus)(8000)는 여기에 설명된 방법 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(8000)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(8000)는 하나 이상의 프로세서(processor)(8002), 하나 이상의 메모리(memory)(8004) 및 비디오 처리 하드웨어(video processing hardware)(8006)를 포함할 수 있다. 프로세서(들)(8002)는 본 문서(예를 들어, 도 12-13)에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있습니다. 메모리(메모리들)(8004)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있습니다. 비디오 처리 하드웨어(video processing hardware)(8006)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있습니다.
도 9는 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템(video coding system)(100)을 예시하는 블록도이다. 도 9에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 장치(source device)(110) 및 목적 장치(destination device)(120)를 포함할 수 있다. 소스 장치(110)는 인코딩된 비디오 데이터를 생성하고, 비디오 인코딩 장치로 참조될 수 있다. 목적 장치(120)는 소스 장치(110)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있고, 비디오 디코딩 장치로 참조될 수 있다. 소스 장치(110)에는 비디오 소스(112), 비디오 인코더(114) 및 입력/출력(I/O) 인터페이스(116)가 포함될 수 있다.
비디오 소스(112)에는 비디오 캡처 장치, 비디오 컴텐츠 공급자로부터 비디오 데이터를 수신하는 인터페이스, 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템 또는 이러한 소스의 조합을 포함할 수 있다. 상기 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림에는 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스가 포함될 수 있다. 비트스트림에는 코딩된 픽처 및 관련 데이터가 포함될 수 있다. 코딩된 픽처는 픽처의 코딩된 표현(representation)이다. 관련 데이터에는 시퀀스 파라미터 세트, 픽처 파라미터 세트 및 기타 신택스 구조가 포함될 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기(transmitter)를 포함할 수 있다. 인코딩된 비디오 데이터는 네트워크(130a)를 거쳐, I/O 인터페이스(116)를 통해 목적 장치(120)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 목적 장치(120)에 의한 액세스를 위해 저장 매체/서버(130b)에 저장될 수도 있다.
목적 장치(120)는 I/O 인터페이스(126), 비디오 디코더(124) 및 디스플레이 장치(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 장치(110) 또는 저장 매체/서버(130b)로부터 인코딩된 비디오 데이터를 획득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 장치(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이 할 수 있다. 디스플레이 장치(122)는 목적 장치(120)와 통합될 수 있거나, 외부 디스플레이 장치와 인터페이스 하도록 구성된 목적 장치(120)의 외부에 위치할 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는 고효율 비디오 코딩(HEVC) 표준, 다목적 비디오 코딩(VVC) 표준 및 기타 현재 및/또는 추가 표준과 같은 비디오 압축 표준에 따라 동작할 수 있다.
도 10은 도 9에 예시된 시스템(100)의 비디오 인코더(video encoder)(114)일 수 있는 비디오 인코더(video encoder)(200)의 예를 예시하는 블록도이다.
비디오 인코더(200)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 10의 예에서, 비디오 인코더(200)는 복수의 기능적 컴포넌트들을 포함한다. 본 개시에 기재된 기술은 비디오 인코더(200)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
비디오 인코더(video encoder)(200)의 기능적 컴포넌트는 파티션 유닛(partition unit)(201)와, 모드 선택 유닛(mode select unit)(203), 모션 추정 유닛(motion estimation unit)(204), 모션 보상 유닛(motion compensation unit)(205) 및 인트라 예측 유닛(intra prediction unit)(206)을 포함할 수 있는 예측 유닛(predication unit)(202)과, 잔차 생생 유닛(residual generation unit)(207), 트랜스폼 유닛(transform unit)(208), 양자화 유닛(quantization unit)(209), 역양자화 유닛(inverse quantization unit)(210), 역트랜스폼 유닛(inverse transform unit)(211), 재구성 유닛(reconstruction unit)(212), 버퍼(buffer)(213), 및 엔트로피 인코딩 유닛(entropy encoding unit)(214)를 포함할 수 있다.
다른 예에서, 비디오 인코더(200)에는 더 많거나, 적거나, 다른 기능적 컴포넌트가 포함될 수 있다. 예를 들어, 예측 유닛(202)는 인트라 블록 카피(IBC) 유닛을 포함할 수 있다. IBC 유닛은 IBC 모드에서 적어도 하나의 레퍼런스 픽처가 현재 비디오 블록이 있는 픽처인 경우 의 예측을 수행할 수 있다.
또한, 모션 추정 유닛(204) 및 모션 보정 유닛(205)과 같은 일부 컴포넌트는 고집적될 수 있으나, 도 10의 예에서는 설명의 목적을 위해 분리된 것으로 표현되었다.
파티션 장치(201)는 픽처를 하나 이상의 비디오 블록으로 파티셔닝할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기를 지원할 수 있다.
모드 선택 유닛(203)는 오류 결과에 기초하여 코딩 모드, 예를 들면, 인트라 또는 인터 등을 선택하고, 결과인 인트라 또는 인터 코딩된 블록을, 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하고, 재구성 유닛(212)으로 제공하여 레퍼런스 픽처로 사용하기 위한 인커딩된 블록을 재구성한다. 일부 예에서, 모드 선택 유닛(203)는 인트라 및 인터 예측(CIIP) 모드의 조합을 선택할 수 있고, 이 모드에서 예측은 인터 예측 시그널 및 인트라 예측 시그널에 기초한다. 모드 선택 유닛(203)는 또한, 인터 예측의 경우 블록에 대한 모션 벡터의 해상도(예를 들어, 서브 픽셀 또는 정수 픽셀 정밀도)를 선택할 수 있다.
현재 비디오 블록에서 인터 예측을 수행하기 위해, 모션 추정 유닛(204)는 버퍼(213)에서 현재 비디오 블록에 하나 이상의 레퍼런스 프레임을 비교하여 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 모션 정보 및 디코딩된 픽처 샘플에 기초하여 현재 비디오 블록에 대한 예측 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)는 현재 비디오 블록이 I 슬라이스, P 슬라이스 또는 B 슬라이스에 있는지 여부에 따라 현재 비디오 블록에 대해 서로 다른 작업을 수행할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 유니-디렉셔널(uni-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 list 0 또는 list 1의 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 현재 비디오 블록과 레퍼런스 비디오 블록 사이의 공간 변위(spatial displacement)를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 또는 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스를 생성할 수 있다. 모션 추정 유닛(204)는 레퍼런스 인덱스, 예측 디렉션 표시기 및 모션 벡터를 현재 비디오 블록의 모션 정보로 출력할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 바이-디렉셔널(bi-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 목록 0에서 레퍼런스 픽처를 검색할 수 있으며, 또한 현재 비디오 블록에 대한 다른 레퍼런스 비디오 블록에 대한 목록 1에서 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 레퍼런스 비디오 블록과 현재 비디오 블록 사이의 공간 변위를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 및 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스를 생성할 수 있다. 모션 추정 유닛(204)는 현재 비디오 블록의 모션 정보로서 현재 비디오 블록의 레퍼런스 인덱스 및 모션 벡터를 출력할 수 있다. 모션 보정 유닛(205)는 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 비디오 블록의 예측 비디오 블록을 생성할 수 있다.
일부 예에서, 모션 추정 유닛(204)는 디코더의 디코딩 처리를 위한 전체 모션 정보 세트를 출력할 수 있다.
일부 예에서, 모션 추정 유닛(204)는 현재 비디오에 대한 전체 모션 정보 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)는 다른 비디오 블록의 동작 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(motion estimation unit)(204)는 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 동작 정보와 충분히 유사하다고 결정할 수 있다.
하나의 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연결된 신택스 구조에서 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 가지고 있음을 비디오 디코더(300)에 나타내는 값을 나타낼 수 있다.
또 다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 사이의 차이를 나타낸다. 비디오 디코더(300)는 현재 비디오 블록의 모션 벡터를 결정하기 위해 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 사용할 수 있다.
위에서 설명한 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측 시그널링 기술의 두 가지 예는, 어드밴스드 모션 벡터 예측(AMVP) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대한 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대한 인트라 예측을 수행하는 경우, 인트라 예측 유닛(206)는 동일 픽처에서 다른 비디오 블록의 디코딩된 샘플에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터에는 예측된 비디오 블록 및 다양한 신택스 요소가 포함될 수 있다.
잔차 생성 유닛(207)는 현재 비디오 블록으로부터 예측된 비디오 블록의 예측 비디오 블록(예를 들어, 마이너스 기호로 표시)을 빼서 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록에서 샘플의 상이한 샘플 컴포넌트에 대응하는 잔차 비디오 블록을 포함할 수 있다.
다른 예에서, 현재 비디오 블록에 대한 현재 비디오 블록에 대한 잔차 데이터가 없을 수 있고, 예를 들어 스킵(skip) 모드에서, 잔차 생성 유닛(207)는 빼기 동작을 수행하지 않을 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 연결된 잔차 비디오 블록에 하나 이상의 트랜스폼을 적용하여 현재 비디오 블록에 대해 하나 이상의 트랜스폼 계수 비디오 블록을 생성할 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 관련된 트랜스폼 계수 비디오 블록을 생성한 후, 양자화 유닛(209)는 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 관련된 트랜스폼 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210)와 역트랜스폼부 유닛(211)는 트랜스폼 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성하기 위해, 트랜스폼 계수 비디오 블록에 역양자화 유닛 및 역트랜스폼 유닛을 각각 적용할 수 있다. 재구성 유닛(212)는 예측 유닛(202)에 의해 생성된 하나 이상의 예측된 비디오 블록으로부터 대응하는 샘플에 재구성된 잔차 비디오 블록을 추가하여 버퍼(213)에 저장하기 위한 현재 블록과 연관된 재구성된 비디오 블록을 생성할 수 있다.
재구성 유닛(212)가 비디오 블록을 재구성한 후, 비디오 블록에서 비디오 차단 아티팩트를 줄이기 위해 루프 필터링 동작이 수행된다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 함수 컴포넌트로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)가 데이터를 수신하는 경우, 엔트로피 인코딩 유닛(214)는 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 11은 도 9에 예시된 시스템(100)의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록도이다.
비디오 디코더(300)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 11의 예에서, 비디오 디코더(300)는 복수의 기능적 컴포넌트를 포함한다. 본 개시에 기재된 기술은 비디오 디코더(300)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
도 11의 예에서, 비디오 디코더(video decoder)(300)는 엔트로피 디코딩 유닛(entropy decoding unit)(301), 모션 보상 유닛(motion compensation unit)(302), 인트라 예측 유닛(intra prediction unit)(303), 역양자화 유닛(inverse quantization unit)(304), 역트랜스폼 유닛(inverse transformation uni)(305), 및 재구성 유닛( 305 , and a reconstruction unit)(306) 및 버퍼(buffer)(307)를 포함한다. 비디오 디코더(300)는, 일부 예에서, 비디오 인코더(200)에 대하여 기술된 인코딩 패스(pass)와 일반적으로 서로 주고 받는(reciprocal) 디코딩 패스를 수행할 수 있다(도 10).
엔트로피 디코딩 유닛(301)는 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림에는 엔트로피 코딩된 비디오 데이터(예를 들어, 비디오 데이터의 인코딩된 블록)가 포함될 수 있다. 엔트로피 디코딩 유닛(301)는 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터 모션 보상 유닛(302)는 모션 벡터, 모션 벡터 정밀도, 레퍼런스 픽처 목록 인덱스 및 기타 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)는, 예를 들어 AMVP 및 병합 모드를 수행하여 이러한 정보를 결정할 수 있다.
모션 보상 유닛(302)는 보간 필터에 기초하여 보간(interpolation)을 수행하여 모션 보정 블록을 생성할 수 있다. 서브 픽셀 정밀도와 함께 사용되는 보간 필터에 대한 식별자가 신택스 요소에 포함될 수 있다.
모션 보상 유닛(302)는 비디오 블록을 인코딩하는 동안 비디오 인코더(20)에서 사용하는 보간 필터를 사용하여 레퍼런스 블록의 서브 정수 픽셀에 대한 보간 값을 계산할 수 있다. 모션 보상 유닛(302)는 수신된 신택스 정보에 따라 비디오 인코더(200)에서 사용하는 보간 필터를 결정하고 보간 필터를 사용하여 예측 블록을 생성할 수 있다.
모션 보상 유닛(302)는 인코딩된 비디오 시퀀스의 프레임 및/또는 슬라이스를 인코딩하는 데 사용되는 블록의 크기, 인코딩된 비디오 시퀀스의 각 매크로 블록이 파티셔닝되는 방식을 설명하는 파티션 정보, 각 파티션이 인코딩된 방법, 각 파티션이 인코딩되는 방식을 나타내는 모드, 각 인터-인코딩된 블록에 대한 하나 이상의 레퍼런스 프레임(및 레퍼런스 프레임 목록) 및 인코딩된 비디오 시퀀스를 디코딩하는 다른 정보들을 결정하기 위해 일부 신택스 정보를 사용할 수 있다.
인트라 예측 유닛(303)는, 예를 들어 비트스트림에서 수신된 인트라 예측 모드를 사용하여 공간적으로 인접한 블록으로부터 예측 블록을 형성할 수 있다. 역양자화 유닛(303)는 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에서 디코딩된 양자화된 비디오 블록 계수를 역양자화(예를 들어, 비양자화(de-quantize))한다. 역트랜스폼 유닛(Inverse transform unit)(303)은 역트랜스폼을 적용한다.
재구성 유닛(Reconstruction unit)(306)은 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성된 대응하는 예측 블록과 잔차 블록을 합산하여 디코딩된 블록을 형성할 수 있다. 원하는 경우, 디블로킹 필터(deblocking filter)를 적용하여 차단 아티팩트를 제거하기 위해 디코딩된 블록을 필터링할 수도 있다. 디코딩된 비디오 블록은 버퍼(307)에 저장되고, 이는 이후의 모션 보상/인트라 예측에 대한 레퍼런스 블록을 제공하고, 디스플레이 장치에서 재생하기 위한 디코딩된 비디오를 생성한다.
도 12 내지 17은 예를 들어, 도 1 내지 5에 도시된 실시예에서 위에서 설명된 기술적 솔루션을 구현할 수 있는 예시적인 방법을 도시한다.
도 12는 비디오 처리의 예시적인 방법(1200)에 대한 흐름도를 도시한다. 이 방법(1200)은, 동작(1210)에서, 하나 이상의 슬라이스(slice)를 포함하는 하나 이상의 비디오 픽처(video picture)를 포함하는 비디오와 비디오의 비트스트림(bitstream) 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은, I 슬라이스로서 코딩된 모든 슬라이스를 갖는 상기 하나 이상의 비디오 픽처의 비디오 픽처에 대해, P 슬라이스 및 B 슬라이스 관련 신택스 요소(syntax element)가 상기 비디오 픽처에 대한 픽처 헤더로부터 생략되는 것을 지정하는, 포맷 규칙(format rule)을 따른다
도 13은 비디오 처리를 위한 예시적인 방법(1300)에 대한 흐름도를 도시한다. 방법(1300)은, 동작(1310)에서, 하나 이상의 슬라이스를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은, 각 비디오 픽처에 대한 픽처 헤더가 비디오 픽처의 모든 슬라이스가 동일한 코딩 유형으로 코딩되는지 여부를 나타내는 신택스 요소를 포함하는 것을 지정하는, 포맷 규칙(format rule)을 따른다.
도 14는 비디오 처리의 예시적인 방법(1400)에 대한 흐름도를 도시한다. 방법(1400)은 동작(1410)에서, 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은 하나 이상의 비디오 픽처 각각에 대한 픽처 헤더가 그 픽처 유형을 나타내는 신택스 요소를 포함하는 것을 지정하는 포맷 규칙을 따른다.
도 15는 비디오 처리의 예시적인 방법(1500)에 대한 흐름도를 도시한다. 방법(1500)은, 동작(1510)에서, 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은 픽처에 대한 픽처 유형을 나타내는 신택스 요소가 액세스 유닛(AU) 구분 문자 원시 바이트 시퀀스 페이로드(RBSP)에서 시그널링 되는 것을 지정하는 규칙을 따르고, 상기 신택스 요소는 픽처의 모든 슬라이스가 I-슬라이스인지 여부를 나타낸다.
도 16은 비디오 처리의 예시적인 방법(1600)에 대한 흐름도를 도시한다. 방법(1600)은, 동작(1610)에서, 하나 이상의 비디오 슬라이스를 포함하는 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은, I-슬라이스인 픽처의 복수의 슬라이스의 각각을 갖는 픽처에 대해, 슬라이스 유형의 표시는 인코딩 동안 비트스트림의 복수의 슬라이스의 슬라이스 헤더로부터 제외되거나 디코딩 동안 I-슬라이스로 추론되는 것으로 지정하는 포맷 규칙을 따른다.
도 17은 비디오 처리의 예시적인 방법(1700)에 대한 흐름도를 도시한다. 방법(1700)은, 동작(1710)에서, W-슬라이스 또는 W-픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환에 대해, 하나 이상의 비-W 관련 신택스 요소가 W-슬라이스의 슬라이스 헤더 또는 W 픽처의 픽처 헤더에서 시그널링 되는지 여부에 관하여 결정을 내리는 단계를 포함하고, 여기서 W는 I, B 또는 P이다.
방법(1700)은, 동작(1720)에서, 결정에 기초하여 변환을 수행하는 단계를 포함한다.
일부 실시예에서 선호하는 솔루션 목록이 다음에 제공된다.
1. 비디오 프로세싱 방법으로서, 하나 이상의 슬라이스(slice)를 포함하는 하나 이상의 비디오 픽처(video picture)를 포함하는 비디오와 비디오의 비트스트림(bitstream) 사이의 변환을 수행하는 단계를 포함하고, 여기서 비트스트림은 포맷 규칙(format rule)을 따르고, 포맷 규칙은 I 슬라이스로서 코딩된 모든 슬라이스를 갖는 상기 하나 이상의 비디오 픽처의 비디오 픽처에 대해, P 슬라이스 및 B 슬라이스 관련 신택스 요소가 상기 비디오 픽처에 대한 픽처 헤더로부터 생략되는 것을 지정한다.
2. 솔루션 1의 방법에서, 비디오 유닛의 모든 슬라이스가 I 슬라이스임을 나타내는 제1 신택스 요소가 픽처 헤더에서 시그널링된다.
3. 솔루션 2의 방법에서, 비트스트림에서 제2 신택스 요소를 시그널링할지 여부는 제1 신택스 요소에 기초하고, 제2 신택스 요소는 픽처 헤더와 연관된 슬라이스의 슬라이스 헤더에서 슬라이스 유형 정보를 표시한다.
4. 솔루션 3의 방법에서, 제2 신택스 요소는 비트스트림에서 제외되고 슬라이스 유형인 것으로 추론된다.
5. 솔루션 3의 방법에서, 제2 신택스 요소는 비트스트림에서 시그널링되고 적합성 요건에 기초하여 다수의 미리 결정된 값 중 하나와 동일하다.
6. 솔루션 3의 방법에서, 비디오 유닛이 모든 I 슬라이스를 포함하는 것을 나타내는 제1 신택스 요소는 I 슬라이스 중 적어도 하나와 연관된 액세스 유닛(AU) 구분 문자 원시 바이트 시퀀스 페이로드(RBSP)에서 시그널링된다.
7. 비디오 프로세싱 방법으로서, 하나 이상의 슬라이스를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은 포맷 규칙을 따르고, 포맷 규칙은 각각의 비디오 픽처에 대한 픽처 헤더가 비디오 픽처의 모든 슬라이스가 동일한 코딩 유형으로 코딩되는지 여부를 나타내는 신택스 요소를 포함하는 것을 지정한다.
8. 솔루션 7의 방법에서, 모든 슬라이스는 I 슬라이스, P 슬라이스 또는 B 슬라이스로 코딩된다.
9. 솔루션 7의 방법에서, 슬라이스에 대한 슬라이스 헤더는 슬라이스 유형 정보를 제외하고, 모든 슬라이스가 I 슬라이스임을 나타내는 픽처 헤더의 신택스 요소로 인해 슬라이스가 I 슬라이스인 것으로 추론된다.
10. 비디오 프로세싱 방법으로서, 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 비트스트림은 포맷 규칙을 따르고, 포맷 규칙은 하나 이상의 비디오 픽처 각각에 대한 픽처 헤더가 픽처 유형을 나타내는 신택스 요소를 포함하는 것을 지정한다.
11. 솔루션 10의 방법에서, 픽처의 하나 이상의 슬라이스의 슬라이스 유형은 픽처가 I-픽처임을 나타내는 신택스 요소로 인해 I-슬라이스만을 나타내도록 허용된다.
12. 솔루션 10의 방법에서, 픽처에서 하나 이상의 슬라이스의 슬라이스 유형은 픽처가 비-I 픽처임을 나타내는 신택스 요소로 인해 I-슬라이스 및/또는 B-슬라이스 및/또는 P-슬라이스를 나타낸다.
13. 비디오 처리 방법으로서, 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비트스트림은 포맷 규칙을 따르고, 상기 포맷 규칙은 픽처에 대한 픽처 유형을 나타내는 신택스 요소가 액세스 유닛(access unit)(AU) 구분 문자(delimiter) 원시 바이트 시퀀스 페이로드(raw byte sequence payload)(RBSP)에서 시그널링되는 것을 지정하고, 여기서 신택스 요소는 픽처의 모든 슬라이스가 I-슬라이스인지 여부를 나타낸다.
14. 비디오 프로세싱 방법으로서, 하나 이상의 비디오 슬라이스를 포함하는 비디오 픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 여기서, 비트스트림은 포맷 규칙을 따르고, 픽처의 복수의 슬라이스 각각을 갖는 픽처는 I-슬라이스이고, 포맷 규칙은 슬라이스 유형의 표시가 인코딩 동안 비트스트림의 복수의 슬라이스의 슬라이스 헤더로부터 제외되거나 디코딩 동안 I-슬라이스인 것으로 추론되는 것을 지정한다.
15. 솔루션 14의 방법에서, 비트스트림은 픽처의 복수의 슬라이스 각각이 I-슬라이스이도록 구성된다.
16. 솔루션 14의 방법에서, 비트스트림은 B-슬라이스 또는 P-슬라이스가 픽처에 포함되지 않도록 구성된다.
17. 비디오 처리 방법에서, W-슬라이스 또는 W-픽처를 포함하는 비디오와 비디오의 비트스트림 사이의 변환에 대해, 하나 이상의 비-W 관련 신택스 요소가 W-슬라이스의 슬라이스 헤더 또는 W-픽처의 픽처 헤더에서 시그널링되는지 여부에 관하여 결정을 내리는 단계를 포함하고, 여기서 W는 I, B 또는 P이고, 결정에 기초하여 변환을 수행한다.
18. 솔루현 17의 방법에서, W가 I이고 비-W가 B 또는 P이다.
19. 솔루현 17의 방법에서, W가 B이고, 비-W은 I 또는 P이다.
20. 솔루션 17 내지 솔루션 19 중 어느 하나에 있어서, 하나 이상의 신택스 요소는 W-슬라이스인 픽처의 모든 슬라이스로 인하여 비트스트림으로부터 제외된다.
21. 솔루션 17 내지 솔루션 19 중 어느 하나에 있어서, 하나 이상의 신택스 요소는 W-슬라이스인 픽처의 모든 슬라이스로 인하여 비트스트림에서 조건부로 시그널링된다.
22. 솔루션 17 내지 솔루션 21 중 어느 하나의 방법에 있어서, 하나 이상의 신택스 요소는 픽처 헤더의 레퍼런스 픽처 관련 신택스 요소를 포함한다.
23. 솔루션 17 내지 솔루션 21 중 어느 하나의 방법에 있어서, 하나 이상의 신택스 요소는 픽처 헤더의 인터 슬라이스 관련 신택스 요소를 포함한다.
24. 솔루션 17 내지 솔루션 21 중 어느 하나의 방법에서, 하나 이상의 신택스 요소는 픽처 헤더의 인터 예측 관련 신택스 요소를 포함한다.
25. 솔루션 17 내지 솔루션 21 중 어느 하나의 방법에 있어서, 하나 이상의 신택스 요소는 픽처 헤더의 양방향 예측 관련 신택스 요소를 포함한다.
26. 솔루션 1 내지 솔루션 25 중 어느 하나에 있어서, 변환은 비트스트림으로부터 비디오를 디코딩하는 단계를 포함한다.
27. 솔루션 1 내지 솔루션 25 중 어느 하나에 있어서, 변환은 비디오를 비트스트림으로 인코딩하는 단계를 포함한다.
28. 비디오를 나타내는 비트스트림을 컴퓨터 판독 가능한 기록 매체에 기록하는 방법에 있어서, 솔루션 1 내지 솔루션 25 중 어느 하나에 기재된 방법에 따라 비디오로부터 비트스트림을 생성하는 단계; 및 컴퓨터가 읽을 수 있는 기록매체에 비트스트림을 기록하는 단계를 포함한다.
29. 솔루션 1 내지 솔루션 28 중 어느 하나 이상에 언급된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
30. 실행될 때 프로세서로 하여금 솔루션 1 내지 솔루션 27 중 어느 하나 이상에 인용된 방법을 구현하게 하는 명령이 저장된 컴퓨터 판독 가능 매체.
31. 솔루션 1 내지 솔루션 28 중 어느 하나에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
32. 비트스트림을 저장하기 위한 비디오 처리 장치로서, 상기 비디오 처리 장치는 솔루션 1 내지 솔루션 28 중 어느 하나 이상에 언급된 방법을 구현하도록 구성된다.
본 문서에서 "비디오 처리(video processing)"라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제(decompression)를 의미할 수 있다. 예를 들어, 비디오 압축 알고리즘은 비디오의 픽셀 표현에서 대응하는 비트스트림으로 또는 그 반대로 변환 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림은, 예를 들어, 신택스에 의해 정의된 바와 같이 비트스트림 내의 다른 위치들에 함께 배치(병치)(co-located)되거나 확산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록(macroblock)은 트랜스폼되고 코딩된 오류 잔차 값의 관점에서 그리고 또한 헤더의 비트 및 비트스트림의 다른 필드를 사용하여 인코딩될 수 있다.
본 문서에 기재된 개시 및 기타 솔루션, 예, 실시예, 모듈 및 기능적 작업은 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 여기에는 이 문서 및 그 구조적 등가물 또는 그 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 기타 실시예는 하나 이상의 컴퓨터 프로그램 제품으로 구현될 수 있고, 즉, 컴퓨터 프로그램 지침의 하나 이상의 모듈을 컴퓨터 판독 가능한 매체에 인코딩 하여 실행하거나, 데이터 처리 장치의 작동을 제어할 수 있다. 컴퓨터가 읽을 수 있는 매체는 기계가 읽을 수 있는 저장 장치, 기계가 읽을 수 있는 스토리지 기판, 메모리 장치, 기계가 읽을 수 있는 전파 신호에 영향을 미치는 물질의 조성 또는 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치"는 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 장치, 장치 및 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 대응 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 기계에서 생성된 전기, 광학 또는 전자기 신호이고, 이는 적합한 수신기 장치로 전송하기 위한 정보를 인코딩 하기 위해 생성된다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 된 언어를 비롯한 모든 형태의 프로그래밍 언어로 작성할 수 있으며 독립 실행형 프로그램 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴 또는 기타 유닛으로 모든 형태로 배포할 수 있다. 컴퓨터 프로그램이 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트), 대응하는 프로그램에 전용되는 단일 파일 또는 여러 조정된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장할 수 있다. 컴퓨터 프로그램은 한 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행하도록 배포할 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 프로그래밍 가능한 프로세서가 하나 이상의 프로그래밍 가능한 프로세서에서 수행하여 입력 데이터에서 작동하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름도 수행될 수 있으며, 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능한 게이트 어레이) 또는 ASIC(애플리케이션 별 집적 회로)로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서에는 예를 들어, 일반 및 특수 목적 마이크로프로세서와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서가 포함된다. 일반적으로 프로세서는 읽기 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다에서 지침과 데이터를 받게 된다. 컴퓨터의 필수 요소는 지침과 데이터를 저장하기 위한 하나 이상의 메모리 장치를 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 전체를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에 이러한 장치가 필요하지 않다. 컴퓨터 프로그램 지침 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능한 미디어에는 반도체 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치, 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동식 디스크; 마그네토 광학 디스크; 및 CD ROM 및 DVD-ROM 디스크를 비롯한 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치가 포함된다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보충되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이는 어떤 주제의 범위 나 청구 될 수 있는 것에 대한 제한으로 해석되어서는 안되고, 오히려 특정 기술의 특정 구현예에 특정할 수 있는 특징에 대한 설명으로 해석되어서는 안 된다. 이 특허 문서에 기재된 특정 특징은 별도의 실시예의 맥락에서 또한 단일 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 조합으로 다중 실시예들에서도 구현될 수 있다. 더욱이, 앞서와 같이 특징들은 특정 조합으로 작용하는 것으로 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징은 어떤 경우에는 조합으로부터 제외될 수 있고, 주장된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
마찬가지로, 동작은 특정 순서로 도면에 묘사되어 있지만, 바람직한 결과를 달성하기 위하여, 이러한 동작이 표시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 기재된 실시예들에서, 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
몇 가지 구현 및 예제만 설명되고 이 특허 문서에 설명되고 도시된 내용에 따라 다른 구현, 개선 및 변형을 만들 수 있다.

Claims (32)

  1. 비디오 처리 방법에 있어서,
    하나 이상의 슬라이스를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고,
    상기 비트스트림은 포맷 규칙을 따르고,
    상기 포맷 규칙은 I 슬라이스로서 코딩된 모든 슬라이스를 갖는 상기 하나 이상의 비디오 픽처의 비디오 픽처에 대해, P 슬라이스 및 B 슬라이스 관련 신택스 요소가 상기 비디오 픽처에 대한 픽처 헤더로부터 생략되는 것을 지정하는
    방법.
  2. 제1항에 있어서,
    상기 비디오 유닛의 모든 슬라이스가 I 슬라이스임을 나타내는 제1 신택스 요소가 상기 픽처 헤더에서 시그널링되는
    방법.
  3. 제2항에 있어서,
    상기 비트스트림에서 제2 신택스 요소를 시그널링할지 여부는 상기 제1 신택스 요소에 기초하고, 상기 제2 신택스 요소는 상기 픽처 헤더와 연관된 슬라이스의 슬라이스 헤더의 슬라이스 유형 정보를 나타내는
    방법.
  4. 제3항에 있어서,
    상기 제2 신택스 요소는 상기 비트스트림에서 제외되고 슬라이스 유형으로 추론되는
    방법.
  5. 제3항에 있어서,
    상기 제2 신택스 요소는 상기 비트스트림에서 시그널링되고, 적합성 요건에 기초한 다수의 미리 결정된 값 중 하나와 동일한
    방법.
  6. 제3항에 있어서,
    상기 비디오 유닛이 모든 I 슬라이스를 포함하는 것을 나타내는 제1 신택스 요소는 상기 I 슬라이스 중 적어도 하나와 연관된 액세스 유닛(AU) 구분 문자 원시 바이트 시퀀스 페이로드(RBSP)에서 시그널링되는
    방법.
  7. 비디오 처리 방법에 있어서,
    하나 이상의 슬라이스를 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고,
    상기 비트스트림은 포맷 규칙을 따르고,
    상기 포맷 규칙은 각각의 비디오 픽처에 대한 픽처 헤더가 상기 비디오 픽처의 모든 슬라이스가 동일한 코딩 유형으로 코딩되는지 여부를 나타내는 신택스 요소를 포함하는 것을 지정하는
    방법.
  8. 제7항에 있어서,
    모든 슬라이스는 I 슬라이스, P 슬라이스 또는 B 슬라이스로 코딩되는
    방법.
  9. 제7항에 있어서,
    상기 슬라이스에 대한 슬라이스 헤더는 슬라이스 유형 정보를 제외하고, 상기 픽처 헤더의 모든 슬라이스가 I 슬라이스임을 나타내는 신택스 요소로 인해 슬라이스가 I 슬라이스인 것으로 유추되는
    방법.
  10. 비디오 처리 방법에 있어서,
    하나 이상의 비디오 픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계,
    상기 비트스트림은 포맷 규칙을 따르고,
    상기 포맷 규칙은 상기 하나 이상의 비디오 픽처 각각에 대한 픽처 헤더가 픽처 유형을 나타내는 신택스 요소를 포함하는 것을 지정하는
    방법.
  11. 제10항에 있어서,
    상기 픽처에서 하나 이상의 슬라이스의 슬라이스 유형은 상기 픽처가 I-픽처임을 나타내는 신택스 요소로 인해 I-슬라이스만을 나타내도록 허용되는
    방법.
  12. 제10항에 있어서,
    상기 픽처에서 하나 이상의 슬라이스의 슬라이스 유형은 상기 픽처가 비-I 픽처임을 나타내는 신택스 요소로 인해 I-슬라이스 및/또는 B-슬라이스 및/또는 P-슬라이스를 나타내는
    방법.
  13. 비디오 처리 방법에 있어서,
    하나 이상의 비디오 픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계,
    상기 비트스트림은 포맷 규칙을 따르고,
    상기 포맷 규칙은 픽처에 대한 픽처 유형을 나타내는 신택스 요소가 액세스 유닛(AU) 구분 문자 원시 바이트 시퀀스 페이로드(RBSP)에서 시그널링되는 것을 지정하고, 상기 신택스 요소는 상기 픽처의 모든 슬라이스가 I-슬라이스인지 여부를 나타내는
    방법.
  14. 비디오 처리 방법에 있어서,
    하나 이상의 비디오 슬라이스를 포함하는 비디오 픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계,
    상기 비트스트림은 포맷 규칙을 따르고,
    상기 픽처의 복수의 슬라이스 각각을 갖는 픽처는 I-슬라이스이고, 상기 포맷 규칙은 슬라이스 유형의 표시가 인코딩 동안 상기 비트스트림의 복수의 슬라이스의 슬라이스 헤더로부터 제외되거나 디코딩 동안 I-슬라이스인 것으로 추론되는 것을 지정하는
    방법.
  15. 제14항에 있어서,
    상기 비트스트림은 상기 픽처의 상기 복수의 슬라이스 각각이 I-슬라이스이도록 구성되는
    방법.
  16. 제14항에 있어서,
    상기 비트스트림은 B-슬라이스 또는 P-슬라이스가 상기 픽처에 포함되지 않도록 구성되는
    방법.
  17. 비디오 처리 방법에 있어서,
    W-슬라이스 또는 W-픽처를 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환에 대해, 하나 이상의 비-W 관련 신택스 요소가 상기 W-슬라이스의 슬라이스 헤더 또는 상기 W-픽처의 픽처 헤더에서 시그널링되는지 여부에 관하여 결정을 내리는 단계 - 여기서 W는 I, B 또는 P임 -; 및
    상기 결정에 기초하여, 상기 변환을 수행하는 단계를 포함하는
    방법.
  18. 제17항에 있어서,
    W는 I이고, 비-W는 B 또는 P인
    방법.
  19. 제17항에 있어서,
    W는 B이고, 비-W는 I 또는 P인
    방법.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 W-슬라이스인 상기 픽처의 모든 슬라이스로 인하여 비트스트림으로부터 제외되는
    방법.
  21. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 W-슬라이스인 상기 픽처의 모든 슬라이스로 인하여 상기 비트스트림에서 조건부로 시그널링되는
    방법.
  22. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 상기 픽처 헤더의 레퍼런스 픽처 관련 신택스 요소를 포함하는
    방법.
  23. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 상기 픽처 헤더의 인터 슬라이스 관련 신택스 요소를 포함하는
    방법.
  24. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 상기 픽처 헤더의 인터 예측 관련 신택스 요소를 포함하는
    방법.
  25. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 하나 이상의 신택스 요소는 상기 픽처 헤더의 양방향 예측 관련 신택스 요소를 포함하는
    방법.
  26. 제1항 내지 제25항 중 어느 한 항에 있어서,
    상기 변환은 상기 비트스트림으로부터 상기 비디오를 디코딩하는 단계를 포함하는
    방법.
  27. 제1항 내지 제25항 중 어느 한 항에 있어서,
    상기 변환은 상기 비디오를 상기 비트스트림으로 인코딩하는 단계를 포함하는
    방법.
  28. 비디오를 나타내는 비트스트림을 컴퓨터 판독 가능 기록 매체에 기록하는 방법에 있어서,
    제1항 내지 제25항 중 어느 한 항에 기재된 방법에 따라 비디오로부터 비트스트림을 생성하는 단계; 및
    컴퓨터 판독 가능기록 매체에 상기 비트스트림을 기록하는 단계를 포함하는
    방법.
  29. 제1항 내지 제27항 중 어느 한 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
  30. 저장된 명령을 갖는 컴퓨터 판독 가능 매체에 있어서,
    상기 명령이, 실행될 때, 프로세서로 하여금 제1항 내지 제28항 중 어느 한 항에 기재된 방법을 구현하게 하는
    컴퓨터 판독 가능 매체.
  31. 제1항 내지 제28항 중 어느 한 항에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
  32. 비트스트림을 저장하기 위한 비디오 처리 장치에 있어서,
    상기 비디오 처리 장치는 제1항 내지 제28항 중 어느 한 항에 기재된 방법을 구현하도록 구성되는
    비디오 처리 장치.
KR1020227018951A 2019-12-27 2020-12-28 비디오 픽처 헤더의 슬라이스 유형의 시그널링 KR20220113379A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2019129069 2019-12-27
CNPCT/CN2019/129069 2019-12-27
PCT/CN2020/140044 WO2021129866A1 (en) 2019-12-27 2020-12-28 Signaling of slice types in video pictures headers

Publications (1)

Publication Number Publication Date
KR20220113379A true KR20220113379A (ko) 2022-08-12

Family

ID=76573740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227018951A KR20220113379A (ko) 2019-12-27 2020-12-28 비디오 픽처 헤더의 슬라이스 유형의 시그널링

Country Status (8)

Country Link
US (2) US12015795B2 (ko)
EP (1) EP4066502A4 (ko)
JP (2) JP2023508427A (ko)
KR (1) KR20220113379A (ko)
CN (1) CN115152230A (ko)
BR (1) BR112022012807A2 (ko)
MX (1) MX2022007503A (ko)
WO (1) WO2021129866A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2022002916A (es) 2019-09-19 2022-04-06 Beijing Bytedance Network Tech Co Ltd Derivacion de posiciones de muestra de referencia en codificacion de video.
JP7391199B2 (ja) 2019-10-05 2023-12-04 北京字節跳動網絡技術有限公司 映像コーディングツールのレベルベースシグナリング
WO2021091253A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 슬라이스 타입 기반 영상/비디오 코딩 방법 및 장치
US20230058283A1 (en) * 2020-02-17 2023-02-23 Hyundai Motor Company Video encoding and decoding based on resampling chroma signals
US12008728B2 (en) * 2022-08-31 2024-06-11 Qualcomm Incorporated Apparatuses and methods for processing single instruction for image transformation from non-integral locations

Family Cites Families (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804403B1 (en) 1998-07-15 2004-10-12 Digital Accelerator Corporation Region-based scalable image coding
US7627037B2 (en) 2004-02-27 2009-12-01 Microsoft Corporation Barbell lifting for multi-layer wavelet coding
CN101507281B (zh) 2006-07-12 2013-06-05 诺基亚公司 媒体文件中的兴趣区域可缩放性信息的信号发送
BRPI0818649A2 (pt) 2007-10-16 2015-04-07 Thomson Licensing Métodos e aparelho para codificação e decodificação de vídeo em superblocos geometricamente particionados.
CN101309409A (zh) * 2008-02-22 2008-11-19 华为技术有限公司 一种解码方法和装置
KR101500914B1 (ko) 2010-04-09 2015-03-10 미쓰비시덴키 가부시키가이샤 동화상 복호 장치
US20110310976A1 (en) 2010-06-17 2011-12-22 Qualcomm Incorporated Joint Coding of Partition Information in Video Coding
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
JP5890520B2 (ja) 2011-06-28 2016-03-22 サムスン エレクトロニクス カンパニー リミテッド 画像の輝度成分を用いて画像の色差成分を予測する方法及び予測装置
CN103096047B (zh) 2011-11-01 2018-06-19 中兴通讯股份有限公司 一种分片层参数集解码及编码方法和装置
US20130177084A1 (en) 2012-01-10 2013-07-11 Qualcomm Incorporated Motion vector scaling in video coding
ES2571863T3 (es) * 2012-01-17 2016-05-27 ERICSSON TELEFON AB L M (publ) Gestión de listas de imágenes de referencia
WO2013128010A2 (en) 2012-03-02 2013-09-06 Canon Kabushiki Kaisha Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream
CN104169971B (zh) 2012-03-15 2020-08-25 英特尔公司 使用非线性缩放和自适应源块大小的分层运动估计
US20130259446A1 (en) 2012-03-28 2013-10-03 Nokia Corporation Method and apparatus for user directed video editing
KR102096566B1 (ko) * 2012-04-13 2020-04-02 지이 비디오 컴프레션, 엘엘씨 저지연 화상 코딩
US9357211B2 (en) 2012-12-28 2016-05-31 Qualcomm Incorporated Device and method for scalable and multiview/3D coding of video information
US9294777B2 (en) 2012-12-30 2016-03-22 Qualcomm Incorporated Progressive refinement with temporal scalability support in video coding
CN104885454B (zh) 2013-01-04 2017-09-15 维迪奥股份有限公司 用于视频解码的方法、装置以及***
AU2013381041A1 (en) 2013-03-05 2015-08-06 Halliburton Energy Services Inc. System, method and computer program product for photometric system design and environmental ruggedization
US9521425B2 (en) 2013-03-19 2016-12-13 Qualcomm Incorporated Disparity vector derivation in 3D video coding for skip and direct modes
US9998735B2 (en) 2013-04-01 2018-06-12 Qualcomm Incorporated Inter-layer reference picture restriction for high level syntax-only scalable video coding
JP2016519854A (ja) 2013-04-05 2016-07-07 シャープ株式会社 色ビット深度スケーリングを用いたビデオ圧縮
EP2984831A4 (en) 2013-04-08 2016-12-07 Nokia Technologies Oy METHOD AND TECHNICAL APPARATUS FOR VIDEO CODING AND DECODING
US9485508B2 (en) 2013-04-08 2016-11-01 Qualcomm Incorporated Non-entropy encoded set of profile, tier, and level syntax structures
US9813723B2 (en) 2013-05-03 2017-11-07 Qualcomm Incorporated Conditionally invoking a resampling process in SHVC
KR20140138538A (ko) 2013-05-24 2014-12-04 주식회사 케이티 복수의 레이어를 지원하는 비디오 코딩 방법 및 장치
US9432667B2 (en) 2013-06-11 2016-08-30 Qualcomm Incorporated Processing bitstream constraints relating to inter-layer prediction types in multi-layer video coding
US9628792B2 (en) 2013-07-15 2017-04-18 Qualcomm Incorporated Cross-layer parallel processing and offset delay parameters for video coding
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
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
US9906804B2 (en) 2014-01-16 2018-02-27 Qualcomm Incorporated Reference layer sample position derivation for scalable video coding
WO2015123806A1 (en) 2014-02-18 2015-08-27 Mediatek Singapore Pte. Ltd. Methods for depth based block partitioning
US20150264348A1 (en) 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
US10158884B2 (en) 2014-03-19 2018-12-18 Qualcomm Incorporated Simplified merge list construction process for 3D-HEVC
CA2940015C (en) 2014-03-27 2020-10-27 Microsoft Technology Licensing, Llc Adjusting quantization/scaling and inverse quantization/scaling when switching color spaces
US9641851B2 (en) 2014-04-18 2017-05-02 Qualcomm Incorporated Conformance window information in multi-layer coding
US10390087B2 (en) 2014-05-01 2019-08-20 Qualcomm Incorporated Hypothetical reference decoder parameters for partitioning schemes in video coding
WO2015168581A1 (en) 2014-05-01 2015-11-05 Arris Enterprises, Inc. Reference layer and scaled reference layer offsets for scalable video coding
US10142642B2 (en) 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
US20150373362A1 (en) 2014-06-19 2015-12-24 Qualcomm Incorporated Deblocking filter design for intra block copy
US9788007B2 (en) 2014-06-20 2017-10-10 Qualcomm Incorporated Profile, tier, level for the 0-th output layer set in video coding
US10200700B2 (en) 2014-06-20 2019-02-05 Qualcomm Incorporated Cross-component prediction in video coding
US9918091B2 (en) 2014-06-20 2018-03-13 Qualcomm Incorporated Systems and methods for assigning a minimum value to a syntax structure in a parameter set
US10306269B2 (en) 2014-10-10 2019-05-28 Qualcomm Incorporated Operation point for carriage of layered HEVC bitstream
US10455249B2 (en) 2015-03-20 2019-10-22 Qualcomm Incorporated Downsampling process for linear model prediction mode
CN107409227B (zh) 2015-03-20 2020-01-21 联发科技(新加坡)私人有限公司 视频编解码方法及装置
US9736335B2 (en) 2015-04-15 2017-08-15 Apple Inc. Techniques for advanced chroma processing
US10638140B2 (en) * 2015-05-29 2020-04-28 Qualcomm Incorporated Slice level intra block copy and other video coding improvements
TWI816224B (zh) 2015-06-08 2023-09-21 美商Vid衡器股份有限公司 視訊解碼或編碼方法及裝置
KR20230128138A (ko) 2015-07-08 2023-09-01 인터디지털 매디슨 페턴트 홀딩스 에스에이에스 교차 평면 필터링을 이용한 향상된 크로마 코딩
US20170150186A1 (en) 2015-11-25 2017-05-25 Qualcomm Incorporated Flexible transform tree structure in video coding
US9955186B2 (en) 2016-01-11 2018-04-24 Qualcomm Incorporated Block size decision for video coding
CN108781294B (zh) 2016-02-05 2021-08-31 联发科技股份有限公司 视频数据的运动补偿方法及装置
US10397443B2 (en) 2016-03-01 2019-08-27 Qualcomm Incorporated Methods and systems for generating color remapping information supplemental enhancement information messages for video
US10455228B2 (en) 2016-03-21 2019-10-22 Qualcomm Incorporated Determining prediction parameters for non-square blocks in video coding
WO2017173593A1 (en) 2016-04-06 2017-10-12 Mediatek Singapore Pte. Ltd. Separate coding secondary transform syntax elements for different color components
WO2017188566A1 (ko) 2016-04-25 2017-11-02 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
CN109076241B (zh) 2016-05-04 2023-06-23 微软技术许可有限责任公司 利用样本值的非相邻参考线进行帧内图片预测
WO2017192995A1 (en) 2016-05-06 2017-11-09 Vid Scale, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
US10382781B2 (en) 2016-09-28 2019-08-13 Qualcomm Incorporated Interpolation filters for intra prediction in video coding
EP3306938A1 (en) 2016-10-05 2018-04-11 Thomson Licensing Method and apparatus for binary-tree split mode coding
KR20180042098A (ko) 2016-10-17 2018-04-25 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
KR20180043149A (ko) 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
US20180192071A1 (en) 2017-01-05 2018-07-05 Mediatek Inc. Decoder-side motion vector restoration for video coding
US10715827B2 (en) 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
US10701366B2 (en) 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder
US10523964B2 (en) 2017-03-13 2019-12-31 Qualcomm Incorporated Inter prediction refinement based on bi-directional optical flow (BIO)
US10362332B2 (en) 2017-03-14 2019-07-23 Google Llc Multi-level compound prediction
US10402689B1 (en) 2017-04-04 2019-09-03 Snap Inc. Generating an image mask using machine learning
US10805641B2 (en) 2017-06-15 2020-10-13 Qualcomm Incorporated Intra filtering applied together with transform processing in video coding
US10904565B2 (en) 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
WO2019009618A1 (ko) 2017-07-04 2019-01-10 삼성전자 주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
GB2564466B (en) 2017-07-13 2020-01-08 Advanced Risc Mach Ltd Storing YUV texture data in a cache in a graphics processing system
US11290716B2 (en) 2017-08-03 2022-03-29 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks in an inter prediction slice of video data
CN107483934B (zh) 2017-08-17 2019-12-10 西安万像电子科技有限公司 编解码方法、装置和***
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
CN117294837A (zh) 2018-04-02 2023-12-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
US20190306502A1 (en) 2018-04-02 2019-10-03 Qualcomm Incorporated System and method for improved adaptive loop filtering
WO2019195643A1 (en) 2018-04-06 2019-10-10 Vid Scale, Inc. A bi-directional optical flow method with simplified gradient derivation
US10779002B2 (en) 2018-04-17 2020-09-15 Qualcomm Incorporated Limitation of the MVP derivation based on decoder-side motion vector derivation
CN108511625B (zh) 2018-04-17 2020-03-06 京东方科技集团股份有限公司 一种封装盖板、显示装置
CN111684796B (zh) * 2018-05-16 2024-04-09 华为技术有限公司 一种视频编解码方法和装置
WO2019230670A1 (en) 2018-05-31 2019-12-05 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks in an inter prediction slice of video data
WO2019234578A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Asymmetric weighted bi-predictive merges
AU2019295574B2 (en) 2018-06-27 2023-01-12 Vid Scale, Inc. Methods and apparatus for reducing the coding latency of decoder-side motion refinement
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
CN116320413A (zh) 2018-07-02 2023-06-23 Lg电子株式会社 对视频信号进行编解码的设备和发送图像的数据的设备
CN116095312A (zh) 2018-08-04 2023-05-09 北京字节跳动网络技术有限公司 视频处理方法、装置和计算机可读介质
TWI822863B (zh) 2018-09-27 2023-11-21 美商Vid衡器股份有限公司 360度視訊寫碼樣本導出
JP7450611B2 (ja) 2018-10-02 2024-03-15 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 一般化された双予測および重み付き予測
WO2020070612A1 (en) 2018-10-06 2020-04-09 Beijing Bytedance Network Technology Co., Ltd. Improvement for temporal gradient calculating in bio
WO2020084474A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Gradient computation in bi-directional optical flow
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
CN112913240A (zh) 2018-10-22 2021-06-04 北京字节跳动网络技术有限公司 解码器侧运动矢量推导和其他编解码工具之间的并置
WO2020084461A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on decoder side motion vector derivation based on coding information
JP7231727B2 (ja) 2018-11-05 2023-03-01 北京字節跳動網絡技術有限公司 精緻化を伴うインター予測のための補間
JP7460616B2 (ja) * 2018-11-08 2024-04-04 オッポ広東移動通信有限公司 ビデオエンコーディング/デコーディング方法、ビデオエンコーダ、ビデオデコーダ、ビデオエンコーディング装置、ビデオデコーディング装置及びコンピュータ可読記憶媒体
US11936868B2 (en) 2018-11-08 2024-03-19 Interdigital Vc Holdings, Inc. Quantization for video encoding or decoding based on the surface of a block
CN113170097B (zh) 2018-11-20 2024-04-09 北京字节跳动网络技术有限公司 视频编解码模式的编解码和解码
KR20240010542A (ko) 2018-12-17 2024-01-23 삼성전자주식회사 예측 모드를 시그널링하는 비디오 신호 처리 방법 및 장치
CN113366841A (zh) 2019-02-01 2021-09-07 北京字节跳动网络技术有限公司 配置用于视频编解码的依赖于亮度的色度残差缩放
CN113396592B (zh) 2019-02-02 2023-11-14 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区管理
WO2020156547A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer resetting for intra block copy in video coding
WO2020164543A1 (en) 2019-02-13 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Motion prediction based on shared merge list
CN113424525B (zh) 2019-02-14 2023-11-10 北京字节跳动网络技术有限公司 解码器侧细化工具的尺寸选择性应用
CN116366840A (zh) * 2019-02-26 2023-06-30 苹果公司 用于对视频信号进行编码/解码的方法及其设备
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
WO2020177684A1 (en) 2019-03-03 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Enabling dmvr based on the information in the picture header
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
WO2020177665A1 (en) 2019-03-05 2020-09-10 Mediatek Inc. Methods and apparatuses of video processing for bi-directional prediction with motion refinement in video coding systems
KR20220147731A (ko) 2019-03-11 2022-11-03 엘지전자 주식회사 Ibc 모드를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
EP3939311A1 (en) 2019-03-11 2022-01-19 Vid Scale, Inc. Methods and apparatus for sub-picture adaptive resolution change
WO2020185879A1 (en) 2019-03-11 2020-09-17 Dolby Laboratories Licensing Corporation Video coding using reference picture resampling supporting region of interest
WO2020185022A1 (ko) 2019-03-12 2020-09-17 주식회사 엑스리스 영상 신호 부호화/복호화 방법 및 이를 위한 장치
CN113661708B (zh) 2019-04-02 2023-12-15 北京字节跳动网络技术有限公司 基于双向光流的视频编解码和解码
JP7307192B2 (ja) 2019-04-02 2023-07-11 北京字節跳動網絡技術有限公司 デコーダ側の動きベクトルの導出
KR102662024B1 (ko) 2019-04-19 2024-05-21 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 상이한 모션 벡터 정제의 그레디언트 계산
WO2020211866A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Applicability of prediction refinement with optical flow process
CN113711609B (zh) 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
US11233988B2 (en) 2019-05-17 2022-01-25 Qualcomm Incorporated Reference picture resampling and inter-coding tools for video coding
US11134275B2 (en) 2019-06-04 2021-09-28 Tencent America LLC Method and apparatus for performing primary transform based on filtering of blocks
US11252410B2 (en) 2019-06-11 2022-02-15 Tencent America LLC Method and apparatus for video coding
JP7471328B2 (ja) 2019-06-21 2024-04-19 ホアウェイ・テクノロジーズ・カンパニー・リミテッド エンコーダ、デコーダ、および対応する方法
US20220272378A1 (en) 2019-06-23 2022-08-25 Sharp Kabushiki Kaisha Systems and methods for performing an adaptive resolution change in video coding
JP2022544164A (ja) 2019-08-06 2022-10-17 オーピー ソリューションズ, エルエルシー フレームタイプに基づく適応分解能管理の暗示的信号伝達
WO2021026363A1 (en) 2019-08-06 2021-02-11 Op Solutions, Llc Implicit signaling of adaptive resolution management based on frame type
CN114208202A (zh) 2019-08-06 2022-03-18 杜比实验室特许公司 画布尺寸可伸缩的视频编码
EP3987795A4 (en) 2019-08-15 2023-02-08 Alibaba Group Holding Limited BLOCK PARTITION METHODS FOR VIDEO CODING
US11659201B2 (en) 2019-08-16 2023-05-23 Qualcomm Incorporated Systems and methods for generating scaling ratios and full resolution pictures
EP4018670A4 (en) 2019-08-22 2023-08-16 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR SIGNALING IMAGE INFORMATION IN VIDEO CODING
US11356684B2 (en) 2019-08-30 2022-06-07 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter table
US11641475B2 (en) 2019-09-12 2023-05-02 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video
US11647215B2 (en) 2019-09-12 2023-05-09 Alibaba Group Holding Limited Method and apparatus for signaling video coding information
US11303909B2 (en) 2019-09-18 2022-04-12 Qualcomm Incorporated Scaling ratio and output full resolution picture in video coding
MX2022002916A (es) 2019-09-19 2022-04-06 Beijing Bytedance Network Tech Co Ltd Derivacion de posiciones de muestra de referencia en codificacion de video.
EP4018659A4 (en) 2019-09-19 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SCALE WINDOW IN VIDEO CODING
WO2021054676A1 (ko) 2019-09-19 2021-03-25 엘지전자 주식회사 Prof를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
JP7391199B2 (ja) 2019-10-05 2023-12-04 北京字節跳動網絡技術有限公司 映像コーディングツールのレベルベースシグナリング
WO2021071183A1 (ko) 2019-10-06 2021-04-15 현대자동차주식회사 현재블록의 변환계수들을 역변환하는 방법 및 장치
WO2021068956A1 (en) 2019-10-12 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Prediction type signaling in video coding
KR20220073740A (ko) 2019-10-13 2022-06-03 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 레퍼런스 픽처 리샘플링 및 비디오 코딩 툴 사이의 상호 작용
US11758193B2 (en) * 2019-11-04 2023-09-12 Hfi Innovation Inc. Signaling high-level information in video and image coding
JP2023500732A (ja) 2019-11-11 2023-01-10 エルジー エレクトロニクス インコーポレイティド 変換に基づく映像コーディング方法及びその装置
GB2590634A (en) * 2019-12-20 2021-07-07 Canon Kk High Level syntax for video coding and decoding
US20210195179A1 (en) * 2019-12-23 2021-06-24 Qualcomm Incorporated Picture header signaling for video coding
US11503342B2 (en) 2020-06-10 2022-11-15 Sharp Kabushiki Kaisha Systems and methods for signaling sequence parameter information in video coding
WO2022035687A1 (en) 2020-08-13 2022-02-17 Beijing Dajia Internet Information Technology Co., Ltd. Chroma coding enhancement in cross-component sample adaptive offset

Also Published As

Publication number Publication date
CN115152230A (zh) 2022-10-04
WO2021129866A1 (en) 2021-07-01
BR112022012807A2 (pt) 2022-09-27
MX2022007503A (es) 2022-07-04
EP4066502A4 (en) 2023-01-18
JP2023508427A (ja) 2023-03-02
EP4066502A1 (en) 2022-10-05
US12015795B2 (en) 2024-06-18
JP2024060057A (ja) 2024-05-01
US20240089483A1 (en) 2024-03-14
US20230046994A1 (en) 2023-02-16

Similar Documents

Publication Publication Date Title
US11722660B2 (en) Interplay between reference picture resampling and video coding tools
KR102637881B1 (ko) 정제 비디오 코딩 툴의 사용 및 시그널링
JP7324940B2 (ja) ビデオコーディングにおけるスケーリングウインドウ
US11611780B2 (en) Level-based signaling of video coding tools
JP7328445B2 (ja) ビデオコーディングにおける参照サンプル位置の導出
WO2021129866A1 (en) Signaling of slice types in video pictures headers
WO2021129867A1 (en) Restricting tile width in video coding

Legal Events

Date Code Title Description
A201 Request for examination