KR20220064968A - 가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정 - Google Patents

가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정 Download PDF

Info

Publication number
KR20220064968A
KR20220064968A KR1020227008788A KR20227008788A KR20220064968A KR 20220064968 A KR20220064968 A KR 20220064968A KR 1020227008788 A KR1020227008788 A KR 1020227008788A KR 20227008788 A KR20227008788 A KR 20227008788A KR 20220064968 A KR20220064968 A KR 20220064968A
Authority
KR
South Korea
Prior art keywords
video
block
picture
rule
current
Prior art date
Application number
KR1020227008788A
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 KR20220064968A publication Critical patent/KR20220064968A/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 프로세싱 방법이 설명된다. 이 방법은 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 현재 비디오 블록을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 참조 샘플 값들을 리셋할지 여부 또는 어떻게 리셋할지를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.

Description

가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정
관련 출원들의 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2019년 9월 23일에 출원된 국제 특허 출원 번호 제PCT/CN2019/107380호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원의 전체 개시는 본 출원의 개시의 일부로서 참고로 포함된다.
기술 분야
본 특허 문서는 비디오 코딩 및 디코딩 기술들, 디바이스들 및 시스템들에 관한 것이다.
비디오 압축의 발전에도 불구하고, 디지털 비디오는 여전히 인터넷 및 다른 디지털 통신 네트워크들에서 가장 많은 대역폭 사용을 차지한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
디바이스들, 시스템들 및 방법들은 디지털 비디오 코딩 및 디코딩에 관한 것으로서, 구체적으로는, 인트라 블록 복사(intra block copy, IBC)를 위한 일반 가상 버퍼들에 관한 것이다. 설명된 방법들은 기존의 비디오 코딩 표준들(예를 들면, HEVC(High Efficiency Video Coding)) 및 미래의 비디오 코딩 표준들 또는 비디오 코덱들 둘 모두에 적용될 수 있다.
하나의 대표적인 양태에서, 개시된 기술은 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 현재 비디오 블록을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 참조 샘플 값들을 리셋할지 여부 또는 어떻게 리셋할지를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 루마 블록 및 대응하는 하나 이상의 크로마 블록을 포함하는 비디오의 비디오 픽처의 현재 비디오 영역과 비디오의 코딩된 표현 사이의 변환을 위해, 하나 이상의 크로마 블록의 위치에 독립적인 규칙에 기초하여 현재 비디오 영역을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 가장 최근에 프로세싱된 가상 파이프라인 데이터 유닛(VPDU)의 위치 및 VPDU의 크기에 의존하는 규칙에 기초하여 현재 비디오 블록을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 현재 비디오 블록을 예측하는 데 사용되는 블록 벡터에 대한 제약을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며, 여기서 블록 벡터는 현재 비디오 블록과 현재 비디오 블록을 예측적으로 코딩하는 데 사용되는 비디오 픽처 내의 참조 영역 사이의 변위를 나타내고, 여기서 규칙은 비디오 픽처의 코딩 트리 유닛(CTU) 행과 교차하는 블록 벡터가 허용되지 않는다는 것을 지정한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 기초하여, 비디오 픽처의 코딩 트리 유닛(CTU) 행에 걸쳐 있는 다른 블록과 현재 비디오 블록의 에지의 적어도 일부 샘플들에 디블로킹 필터를 적용할지 여부를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며; 여기서 현재 비디오 블록은 현재 비디오 블록의 예측이 현재 비디오 블록의 비디오 슬라이스로부터의 샘플 값들에 기초하여 도출되는 인트라 블록 복사(IBC) 모드를 사용하여 코딩된다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 비디오 픽처의 제1 서브픽처 또는 제2 서브픽처 중 적어도 하나를 사용하여 현재 비디오 블록에 대한 예측 블록을 생성하는 서브픽처 예측의 적용 가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은 규칙에 따라 비디오의 크로마 성분의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 규칙은 변환에 사용되는 크로마 양자화 파라미터(QP) 테이블의 가장 작은 인덱스가 크로마 성분의 샘플들의 비트 깊이에 독립적이라는 것을 지정한다.
또 다른 대표적인 양태에서, 위에서 설명된 방법은 프로세서 실행 가능 코드의 형태로 구체화되고 컴퓨터 판독 가능 프로그램 매체에 저장된다.
또 다른 대표적인 양태에서, 위에서 설명된 방법을 수행하도록 구성되거나 작동 가능한 디바이스가 개시된다. 이 디바이스는 이 방법을 구현하도록 프로그래밍된 프로세서를 포함할 수 있다.
또 다른 대표적인 양태에서, 비디오 디코더 장치는 본 명세서에 설명된 바와 같은 방법을 구현할 수 있다.
개시된 기술의 이상의 양태들과 특징들 및 다른 양태들과 특징들은 도면들, 설명 및 청구항들에서 보다 상세히 설명된다.
도 1은 현재 픽처 참조의 예를 도시한다.
도 2는 JVET-M0407에서의 동적 참조 영역의 예를 도시한다.
도 3은 리셰이핑을 갖는 디코딩 흐름의 플로차트를 도시한다.
도 4a, 도 4b 및 도 4c는 예시적인 비디오 프로세싱 방법들의 플로차트들을 도시한다.
도 5는 본 문서에 설명되는 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예의 블록 다이어그램이다.
도 6은 VPDU 열 및 VPDU 행과 교차하는 참조 블록들의 예들을 도시한다.
도 7은 개시된 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템의 블록 다이어그램이다.
도 8은 예시적인 비디오 코딩 시스템을 예시하는 블록 다이어그램이다.
도 9는 본 개시의 일부 실시예들에 따른 인코더를 예시하는 블록 다이어그램이다.
도 10은 본 개시의 일부 실시예들에 따른 디코더를 예시하는 블록 다이어그램이다.
도 11a 내지 도 11g는 개시된 기술의 일부 구현들에 기초한 비디오 프로세싱 방법의 예시적인 플로차트들을 도시한다.
개시된 기술의 실시예들은 압축 성능을 개선시키기 위해 기존의 비디오 코딩 표준들(예를 들면, HEVC, H.265) 및 미래의 표준들에 적용될 수 있다. 섹션 표제들은 설명의 가독성을 개선시키기 위해 본 문서에서 사용되며 논의 또는 실시예들(및/또는 구현들)을 각자의 섹션들로만 결코 제한하지 않는다.
2 비디오 코딩 소개
보다 높은 해상도의 비디오에 대한 수요가 증가하는 것으로 인해, 현대 기술에서 비디오 코딩 방법들 및 기술들이 보편화되어 있다. 비디오 코덱들은 전형적으로 디지털 비디오를 압축하거나 압축 해제하는 전자 회로 또는 소프트웨어를 포함하며, 보다 높은 코딩 효율을 제공하기 위해 지속적으로 개선되고 있다. 비디오 코덱은 압축되지 않은 비디오를 압축된 포맷으로 또는 그 반대로 변환한다. 비디오 품질, 비디오를 표현하는 데 사용되는 데이터 양(비트 레이트에 의해 결정됨), 인코딩 및 디코딩 알고리즘들의 복잡성, 데이터 손실 및 오류에 대한 민감도, 편집 용이성, 랜덤 액세스, 및 종단간 지연(레이턴시) 사이에 복잡한 관계들이 있다. 압축된 포맷은 일반적으로 표준 비디오 압축 사양, 예를 들면, HEVC(High Efficiency Video Coding) 표준(H.265 또는 MPEG-H Part 2라고도 함), 완성될 다목적 비디오 코딩(Versatile Video Coding) 표준, 또는 다른 현재 및/또는 미래의 비디오 코딩 표준들을 준수한다.
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래의 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET(Joint Video Expert Team)가 만들어졌다.
2.1 HEVC/H.265에서의 인터 예측
각각의 인터 예측된 PU는 하나 또는 2 개의 참조 픽처 리스트에 대한 모션 파라미터들을 갖는다. 모션 파라미터들은 모션 벡터 및 참조 픽처 인덱스를 포함한다. 2 개의 참조 픽처 리스트 중 하나의 사용은 또한 inter_pred_idc를 사용하여 시그널링될 수 있다. 모션 벡터들은 예측자들을 기준으로 델타들로서 명시적으로 코딩될 수 있다.
CU가 스킵 모드로 코딩될 때, 하나의 PU는 CU와 연관되고, 유의미한 잔차 계수들, 코딩된 모션 벡터 델타 또는 참조 픽처 인덱스가 없다. 현재 PU에 대한 모션 파라미터들이, 공간 및 시간 후보들을 포함한, 이웃 PU들로부터 획득되는 병합 모드가 지정된다. 병합 모드는, 스킵 모드에 대해서뿐만 아니라, 임의의 인터 예측된 PU에 적용될 수 있다. 병합 모드에 대한 대안은 모션 파라미터들의 명시적 전송이며, 여기서 모션 벡터(보다 정확하게 말하면, 모션 벡터 예측자와 비교한 모션 벡터 차이(MVD)), 각각의 참조 픽처 리스트에 대한 대응하는 참조 픽처 인덱스 및 참조 픽처 리스트 사용이 각각의 PU마다 명시적으로 시그널링된다. 그러한 모드는 본 개시에서 AMVP(Advanced motion vector prediction)라고 명명된다.
시그널링이 2 개의 참조 픽처 리스트 중 하나가 사용될 것임을 나타낼 때, PU는 하나의 샘플 블록으로부터 생성된다. 이것은 '단방향 예측'이라고 지칭된다. 단방향 예측은 P-슬라이스들 및 B-슬라이스들 둘 모두에 대해 이용 가능하다.
시그널링이 참조 픽처 리스트들 둘 모두가 사용될 것임을 나타낼 때, PU는 2 개의 샘플 블록으로부터 생성된다. 이것은 '양방향 예측'이라고 지칭된다. 양방향 예측은 B-슬라이스들에 대해서만 이용 가능하다.
이하의 텍스트는 HEVC에서 지정되는 인터 예측 모드들에 대한 세부 사항들을 제공한다. 설명은 병합 모드로 시작될 것이다.
2.2 현재 픽처 참조
현재 픽처 참조(CPR), 또는 한때 인트라 블록 복사(IBC)라고 명명된 것이 HEVC 스크린 콘텐츠 코딩 확장들(HEVC-SCC) 및 현재 VVC 테스트 모델(VTM-3.0)에서 채택되었다. IBC는 모션 보상의 개념을 인터 프레임 코딩(inter-frame coding)으로부터 인트라 프레임 코딩(intra-frame coding)으로 확장시킨다. 도 1에 나타낸 바와 같이, CPR이 적용될 때 현재 블록이 동일한 픽처 내의 참조 블록에 의해 예측된다. 참조 블록 내의 샘플들은 현재 블록이 코딩되거나 디코딩되기 전에 이미 재구성되어 있어야만 한다. CPR이, 대부분의 카메라로 캡처된 시퀀스들에 대해서는 그다지 효율적이지 않지만, 스크린 콘텐츠에 대해서는 유의미한 코딩 이득을 보여준다. 그 이유는, 스크린 콘텐츠 픽처에서의 아이콘들 및 텍스트 문자들과 같은, 많은 반복 패턴들이 있기 때문이다. CPR은 이러한 반복 패턴들 사이의 중복성을 효과적으로 제거할 수 있다. HEVC-SCC에서, 인터 코딩된 코딩 유닛(CU)은, 현재 픽처를 그의 참조 픽처로서 선택하는 경우, CPR을 적용할 수 있다. 이 경우에 MV는 블록 벡터(BV)라고 재명명되고, BV는 항상 정수 픽셀 정밀도를 갖는다. 메인 프로필 HEVC와 호환되도록, 현재 픽처는 디코딩된 픽처 버퍼(Decoded Picture Buffer, DPB)에서 "장기(long-term)" 참조 픽처로서 표시된다. 유사하게, 다수의 뷰/3D 비디오 코딩 표준들에서, 인터 뷰(inter-view) 참조 픽처가 또한 "장기" 참조 픽처로서 표시된다는 점에 유의해야 한다.
BV를 따라가서 그의 참조 블록을 찾은 후에, 참조 블록을 복사하는 것에 의해 예측이 생성될 수 있다. 잔차는 원래 신호들로부터 참조 픽셀들을 감산하는 것에 의해 얻어질 수 있다. 이어서 다른 코딩 모드들에서와 같이 변환 및 양자화가 적용될 수 있다.
그렇지만, 참조 블록이 픽처 외부에 있거나, 현재 블록과 중첩되거나, 재구성된 영역 외부에 있거나, 또는 일부 제약조건들에 의해 제한된 유효 영역 외부에 있을 때, 일부 또는 모든 픽셀 값들이 정의되지 않는다. 기본적으로, 그러한 문제를 처리하는 두 가지 해결책이 있다. 하나는, 예를 들면, 비트스트림 적합성에서, 그러한 상황을 허용하지 않는 것이다. 다른 하나는 그 정의되지 않은 픽셀 값들에 대해 패딩을 적용하는 것이다. 이하의 하위 섹션들은 해결책들에 대해 대해 상세히 설명한다.
2.3 HEVC 스크린 콘텐츠 코딩 확장들에서의 CPR
HEVC의 스크린 콘텐츠 코딩 확장들에서, 블록이 현재 픽처를 참조로서 사용할 때, 이하의 사양 텍스트에 나타낸 바와 같이, 전체 참조 블록이 이용 가능한 재구성된 영역 내에 있도록 보장되어야 한다.
변수들 offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00001
참조 픽처가 현재 픽처일 때, 루마 모션 벡터 mvLX가 다음 제약조건들을 준수해야 한다는 것은 비트스트림 적합성의 요구사항이다:
- ( xCb, yCb )와 동일하게 설정된 ( xCurr, yCurr ) 및 ( xPb + (mvLX[ 0 ] >> 2) - offsetX, yPb + ( mvLX[ 1 ] >> 2 ) - offsetY )와 동일하게 설정된 이웃 루마 위치 ( xNbY, yNbY )를 입력들로 하여 6.4.1절에 명시된 바와 같은 z-스캔 순서 블록 이용 가능성에 대한 도출 프로세스가 호출될 때, 출력은 TRUE와 동일해야 한다.
- ( xCb, yCb )와 동일하게 설정된 ( xCurr, yCurr ) 및 ( xPb + (mvLX[ 0 ] >> 2) + nPbW - 1 + offsetX, yPb + (mvLX[ 1 ] >> 2) + nPbH - 1 + offsetY)와 동일하게 설정된 이웃 루마 위치 ( xNbY, yNbY )를 입력들로 하여 6.4.1절에 명시된 바와 같은 z-스캔 순서 블록 이용 가능성에 대한 도출 프로세스가 호출될 때, 출력은 TRUE와 동일해야 한다.
- 다음 조건들 중 하나 또는 둘 모두가 참이어야 한다:
- ( mvLX[ 0 ] >> 2 ) + nPbW + xB1 + offsetX의 값은 0보다 작거나 같다.
- ( mvLX[ 1 ] >> 2 ) + nPbH + yB1 + offsetY의 값은 0보다 작거나 같다.
- 다음 조건이 참이어야 한다:
Figure pct00002
따라서, 참조 블록이 현재 블록과 중첩되거나 참조 블록이 픽처 외부에 있는 경우는 발생하지 않을 것이다. 참조 또는 예측 블록을 패딩할 필요가 없다.
2.4 VVC 테스트 모델의 CPR/IBC
현재 VVC 테스트 모델, 즉 VTM-3.0 설계에서, 전체 참조 블록은 현재 코딩 트리 유닛(CTU)과 함께 있어야 하며, 현재 블록과 중첩하지 않는다. 따라서, 참조 또는 예측 블록을 패딩할 필요가 없다.
이중 트리가 인에이블될 때, 루마 CTU와 크로마 CTU 간에 분할 구조(partition structure)가 상이할 수 있다. 따라서, 4:2:0 색상 포맷에 대해, 하나의 크로마 블록(예를 들면, CU)은 다수의 루마 CU들로 분할된 하나의 동일 위치(collocated) 루마 영역에 대응할 수 있다.
크로마 블록은 다음 조건들이 참일 때에만 CPR 모드로 코딩될 수 있다:
(1) 동일 위치 루마 블록 내의 루마 CU 각각이 CPR 모드로 코딩되어야 한다.
(2) 루마 4×4 블록의 BV 각각이 먼저 크로마 블록의 BV로 변환되고 크로마 블록의 BV가 유효한 BV이다.
두 가지 조건 중 어느 것이라도 거짓인 경우, 크로마 블록이 CPR 모드로 코딩되지 않아야 한다.
'유효한 BV'의 정의가 다음과 같은 제약조건들을 갖는다는 점에 유의한다:
(1) BV에 의해 식별되는 참조 블록 내의 모든 샘플들이 제한된 탐색 범위 내에 있어야 한다(예를 들면, 현재 VVC 설계에서 동일한 CTU 내에 있어야 함).
(2) BV에 의해 식별되는 참조 블록 내의 모든 샘플들이 재구성되었다.
2.5 JVET-L0297/JVET-M0407/JVET-M0408에서의 CPR/IBC
VTM3.0에서, CPR/IBC에 대한 참조 영역은, 최대 128x128인, 현재 CTU로 제한된다. JVET-L0297/JVET-M0407/JVET-M0408은 CPR/IBC에 대한 참조 버퍼가 유지되거나 하나의 CTU로부터 감소될 수 있으면서 CPR/IBC 블록이 보다 많은 참조 후보를 가질 수 있도록 CPR/IBC에 대한 참조 샘플들을 저장하기 위해 메모리를 재사용하도록 참조 영역을 동적으로 변경하는 방법들을 제시한다.
도 2는 블록이 64x64이고 CTU가 4 개의 64x64 블록을 포함하는 방법을 도시한다. 64x64 블록들을 코딩할 때, 이전 3 개의 64x64 블록이 참조로서 사용될 수 있다. 그렇게 하는 것에 의해, 디코더는 CPR/IBC를 지원하기 위해 4 개의 64x64 블록만을 저장하면 된다. 위의 방법은 VTM4.0에 채택되었다.
픽처의 좌측 상부 코너를 기준으로 현재 루마 CU의 위치가 (x, y)이고 블록 벡터가 (BVx, BVy)라고 가정한다. 현재 설계에서, BV가 유효한 경우는 루마 위치 ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<<6)가 재구성되지 않았고 ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<<6)이 (x>>6<<6, y>>6<<6)과 동일하지 않는 것으로 알 수 있다.
2.6 JVET-O1170에서 제안된 가상 IBC 버퍼
IBC 예측 모드에 대한 참조 영역을 설명하는 데 도움을 주기 위해 가상 버퍼 개념이 도입된다. CTU 크기가 ctbSize인 경우, wIbcBuf = 128*128/ctbSize로 표기하고, 폭이 wIbcBuf이고 높이가 ctbSize인, 가상 IBC 버퍼 ibcBuf를 정의한다. 따라서,
- CTU 크기가 128x128인 경우, ibcBuf의 크기도 128x128이다.
- CTU 크기가 64x64인 경우, ibcBuf의 크기는 256x64이다.
- CTU 크기가 32x32인 경우, ibcBuf의 크기는 512x32이다.
VPDU 폭 및 높이가 min(ctbSize, 64)임에 유의한다. Wv = min(ctbSize, 64)로 표기한다.
가상 IBC 버퍼 ibcBuf는 다음과 같이 유지된다.
(1) 각각의 CTU 행의 디코딩의 시작에서, 값 (-1)로 전체 ibcBuf를 새로고침한다.
(2) 픽처의 좌측 상단 코너를 기준으로 VPDU(xVPDU, yVPDU)의 디코딩의 시작에서, ibcBuf[ x ][ y ] = -1(단, x = xVPDU%wIbcBuf, ..., xVPDU% wIbcBuf + Wv - 1; y = yVPDU%ctbSize, …, yVPDU%ctbSize + Wv - 1)로 설정한다.
(3) 디코딩 이후에, CU는 픽처의 좌측 상단을 기준으로 (x, y)를 포함하며, ibcBuf[ x % wIbcBuf ][ y % ctbSize ] = recSample[ x ][ y ]로 설정한다.
따라서 비트스트림 제약조건은 다음과 같이 간단히 기술될 수 있다.
bv의 경우, ibcBuf[ (x + bv[0])% wIbcBuf] [ (y + bv[1]) % ctbSize ]가 -1과 동일하지 않아야 한다는 것이 비트스트림 적합성의 요구사항이다.
IBC 참조 버퍼의 개념을 사용하여, 이는 또한, 서브블록 프로세스를 포함한, 인터 보간(inter interpolation) 및 모션 보상 프로세스에 대한 언급을 피하는 것에 의해 디코딩 프로세스에 대한 텍스트를 단순화시킨다.
2.7 VPDU
가상 파이프라인 데이터 유닛들(VPDU들)은 픽처 내의 중첩하지 않는 유닛들로서 정의된다. 하드웨어 디코더들에서, 연속적인 VPDU들이 다수의 파이프라인 스테이지들에 의해 동시에 프로세싱된다. VPDU 크기는 대부분의 파이프라인 스테이지들에서 버퍼 크기에 대략 비례하며, 따라서 VPDU 크기를 작게 유지하는 것이 중요하다. 대부분의 하드웨어 디코더들에서, VPDU 크기는 최대 변환 블록(TB) 크기로 설정될 수 있다. 그렇지만, VVC에서, 삼진 트리(ternary tree, TT) 및 이진 트리(binary tree, BT) 분할은 VPDU 크기의 증가를 가져올 수 있다.
VPDU 크기를 64x64 루마 샘플들로서 유지하기 위해, (신택스 시그널링 수정을 이용한) 다음과 같은 규범적 분할 제한들이 VTM5에서 적용된다:
- 폭 또는 높이 중 어느 하나, 또는 폭과 높이 둘 모두가 128과 동일한 CU에 대해 TT 분할이 허용되지 않는다.
- 128xN CU(단, N ≤ 64)(즉, 폭이 128과 동일하고 높이가 128보다 작음)에 대해, 수평 BT가 허용되지 않는다.
- Nx128 CU(단, N ≤ 64)(즉, 높이가 128과 동일하고 폭이 128보다 작음)에 대해, 수직 BT가 허용되지 않는다.
VVC에서, 일반적으로 루마 샘플들에서 VPDU의 폭 및 높이가 min(64, CtbSizeY)이도록 합의되어 있다. 따라서 CTB/CTU 크기가 64x64, 128x128 또는 256x256인 경우, VPDU 크기는 64x64이다. CTB/CTU 크기가 32x32인 경우, VPDU 크기는 32x32이다.
2.8 인트라 블록 복사에 대한 버퍼 관리 및 블록 벡터 코딩
다양한 IBC 버퍼 특징들 및 그의 대응하는 관리에 대한 세부 사항들은, 참고로 포함되는, PCT/CN2019/093552에 설명되어 있다.
2.9 JVET-M0427에서의 인루프 리셰이핑(ILR)
인루프 리셰이핑(in-loop reshaping, ILR)의 기본 착상은 원래(제1 도메인에서의) 신호(예측/재구성 신호)를 제2 도메인(리셰이핑된 도메인)으로 변환하는 것이다.
인루프 루마 리셰이퍼(in-loop luma reshaper)는 한 쌍의 룩업 테이블들(LUT들)로서 구현되지만, 2 개의 LUT 중 하나만이 시그널링되면 되는데, 그 이유는 다른 하나는 시그널링된 LUT로부터 계산될 수 있기 때문이다. 각각의 LUT는 1차원, 10 비트, 1024 엔트리 매핑 테이블(1D-LUT)이다. 하나의 LUT는 입력 루마 코드 값들
Figure pct00003
를 변경된 값들
Figure pct00004
에 매핑하는 순방향 LUT(forward LUT) FwdLUT이다, 즉
Figure pct00005
이다. 다른 LUT는 변경된 코드 값들
Figure pct00006
Figure pct00007
에 매핑하는 역방향 LUT(inverse LUT) InvLUT이다, 즉
Figure pct00008
이다. (
Figure pct00009
Figure pct00010
의 재구성 값들을 나타낸다.).
2.9.1 PWL 모델
개념적으로, 구간별 선형(piece-wise linear, PWL)은 다음과 같은 방식으로 구현된다:
x1, x2를 2 개의 입력 피벗 포인트라고 하고, y1, y2를 하나의 구간(piece)에 대한 그들의 대응하는 출력 피벗 포인트들이라고 하자. x1과 x2 사이의 임의의 입력 값 x에 대한 출력 값 y는 다음 방정식에 의해 보간될 수 있다:
Figure pct00011
고정 소수점 구현에서, 방정식은 다음과 같이 고쳐 써질 수 있다.
Figure pct00012
여기서, m은 스칼라이고, c는 오프셋이며, FP_PREC는 정밀도를 지정하는 상수 값이다.
CE-12 소프트웨어에서, PWL 모델은 1024 엔트리 FwdLUT 및 InvLUT 매핑 테이블들을 미리 계산하는 데 사용되지만; PWL 모델은 또한 구현들이 LUT들을 미리 계산하지 않고 즉석에서(on-the-fly) 동일한 매핑 값들을 계산할 수 있게 한다는 점에 유의한다.
2.9.2 테스트 CE12-2
2.9.2.1 루마 리셰이핑
인루프 루마 리셰이핑의 테스트 2(즉, 제안에서의 CE12-2)는 인터 슬라이스(inter slice) 재구성에서 블록 단위 인트라 예측에 대한 디코딩 레이턴시를 또한 제거하는 보다 낮은 복잡도의 파이프라인을 제공한다. 인트라 예측은 인터 슬라이스 및 인트라 슬라이스 둘 모두에 대해 리셰이핑된 도메인에서 수행된다.
인트라 예측은 슬라이스 유형에 관계없이 항상 리셰이핑된 도메인에서 수행된다. 그러한 구성의 경우, 이전 TU 재구성이 행해진 직후에 인트라 예측이 시작될 수 있다. 그러한 구성은 또한 슬라이스 종속적이 아니라 인트라 모드에 대한 통일된 프로세스를 제공할 수 있다. 도 3은 모드에 기초한 CE12-2 디코딩 프로세스의 블록 다이어그램을 도시한다.
CE12-2는 또한 CE12-1의 32 구간 PWL 모델들 대신에 루마 및 크로마 잔차 스케일링에 대해 16 구간 PWL(piece-wise linear) 모델들을 테스트한다.
CE12-2에서 인루프 루마 리셰이퍼를 이용한 인터 슬라이스 재구성(보다 밝게 음영 처리된 블록들은 리셰이핑된 도메인에서의 신호, 즉 루마 잔차; 인트라 루마 예측됨; 및 인트라 루마 재구성됨을 나타낸다)
2.9.2.2 루마 종속적 크로마 잔차 스케일링
루마 종속적 크로마 잔차 스케일링은 고정 소수점 정수 연산으로 구현되는 곱셈 프로세스이다. 크로마 잔차 스케일링은 크로마 신호와의 루마 신호 상호작용을 보상한다. 크로마 잔차 스케일링은 TU 레벨에서 적용된다. 보다 구체적으로, 다음이 적용된다:
- 인트라의 경우, 재구성된 루마가 평균화된다.
- 인터의 경우, 예측 루마가 평균화된다.
평균은 PWL 모델에서 인덱스를 식별하는 데 사용된다. 인덱스는 스케일링 인자 cScaleInv를 식별해 준다. 크로마 잔차가 해당 숫자와 곱해진다.
크로마 스케일링 인자가 재구성된 루마 값들보다는 순방향 매핑된 예측된 루마 값들로부터 계산된다는 점에 유의한다.
2.9.2.3 ILR 보조 정보의 시그널링
파라미터들은 (현재) 타일 그룹 헤더에서 전송된다(ALF와 유사함). 이들은 40 내지 100 비트를 필요로 한다고 한다.
다음 사양은 JVET -L1001의 버전 9를 기반으로 한다. 추가된 신택스 앞에는 “++”가 붙어 있다.
Figure pct00013
Figure pct00014
Figure pct00015
++일반 시퀀스 파라미터 세트 RBSP 시맨틱스에서, 다음 시맨틱스를 추가한다:
sps_reshaper_enabled_flag가 1과 동일한 것은 리셰이퍼가 코딩된 비디오 시퀀스(CVS)에서 사용된다는 것을 지정한다. sps_reshaper_enabled_flag가 0과 동일한 것은 리셰이퍼가 CVS에서 사용되지 않는다는 것을 지정한다.
++타일 그룹 헤더 신택스에, 다음 시맨틱스를 추가한다
tile_group_reshaper_model_present_flag가 1과 동일한 것은 tile_group_reshaper_model()이 타일 그룹 헤더에 존재한다는 것을 지정한다. tile_group_reshaper_model_present_flag가 0과 동일한 것은 tile_group_reshaper_model()이 타일 그룹 헤더에 존재하지 않는다는 것을 지정한다. tile_group_reshaper_model_present_flag가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
tile_group_reshaper_enabled_flag가 1과 동일한 것은 리셰이퍼가 현재 타일 그룹에 대해 인에이블되어 있다는 것을 지정한다. tile_group_reshaper_enabled_flag가 0과 동일한 것은 리셰이퍼가 현재 타일 그룹에 대해 인에이블되어 있지 않다는 것을 지정한다. tile_group_reshaper_enable_flag가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
tile_group_reshaper_chroma_residual_scale_flag가 1과 동일한 것은 크로마 잔차 스케일링이 현재 타일 그룹에 대해 인에이블되어 있다는 것을 지정한다. tile_group_reshaper_chroma_residual_scale_flag가 0과 동일한 것은 크로마 잔차 스케일링이 현재 타일 그룹에 대해 인에이블되어 있지 않다는 것을 지정한다. tile_group_reshaper_chroma_residual_scale_flag가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
++ tile_group_reshaper_model( ) 신택스를 추가한다
reshape_model_min_bin_idx는 리셰이퍼 구성 프로세스에서 사용될 최소 빈(또는 구간) 인덱스를 지정한다. reshape_model_min_bin_idx의 값은 0 내지 MaxBinIdx의 범위(경계 포함)에 있어야 한다. MaxBinIdx의 값은 15와 동일해야 한다.
reshape_model_delta_max_bin_idx는 최대 허용 빈(또는 구간) 인덱스 MaxBinIdx에서 리셰이퍼 구성 프로세스에 사용될 최대 빈 인덱스를 뺀 값을 지정한다. reshape_model_max_bin_idx의 값은 MaxBinIdx - reshape_model_delta_max_bin_idx와 동일하게 설정된다.
reshaper_model_bin_delta_abs_cw_prec_minus1 + 1은 신택스 reshape_model_bin_delta_abs_CW[ i ]의 표현에 사용되는 비트 수를 지정한다.
reshape_model_bin_delta_abs_CW[ i ]는 i 번째 빈에 대한 절대 델타 코드워드 값을 지정한다.
reshaper_model_bin_delta_sign_CW_flag[ i ]는 다음과 같이 reshape_model_bin_delta_abs_CW[ i ]의 부호를 지정한다.
- reshape_model_bin_delta_sign_CW_flag[ i ]가 0과 동일한 경우, 대응하는 변수 RspDeltaCW[ i ]는 양수 값이다.
- 그렇지 않은 경우(reshape_model_bin_delta_sign_CW_flag[ i ]가 0과 동일하지 않은 경우), 대응하는 변수 RspDeltaCW[ i ]는 음수 값이다.
reshape_model_bin_delta_sign_CW_flag[ i ]가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
변수 RspDeltaCW[ i ] = (1  2*reshape_model_bin_delta_sign_CW [ i ]) * reshape_model_bin_delta_abs_CW [ i ];
변수 RspCW[ i ]는 다음 단계들에 따라 도출된다:
변수 OrgCW가 (1 << BitDepthY ) / ( MaxBinIdx + 1)과 동일하게 설정된다.
- reshaper_model_min_bin_idx < = i <= reshaper_model_max_bin_idx인 경우
RspCW[ i ] = OrgCW + RspDeltaCW[ i ].
- 그렇지 않은 경우, RspCW[ i ] = 0.
BitDepthY의 값이 10과 동일한 경우 RspCW [ i ]의 값은 32 내지 2 * OrgCW - 1의 범위에 있어야 한다.
변수들 InputPivot[ i ] (단, i는 0 내지 MaxBinIdx + 1의 범위(경계 포함)에 있음)는 다음과 같이 도출된다
InputPivot[ i ] = i * OrgCW
변수 ReshapePivot[ i ] (단, i는 0 내지 MaxBinIdx + 1의 범위(경계 포함)에 있음), 변수 ScaleCoef[ i ] 및 InvScaleCoeff[ i ](단, i는 0 내지 MaxBinIdx의 범위(경계 포함)에 있음)는 다음과 같이 도출된다:
Figure pct00016
Figure pct00017
변수 ChromaScaleCoef[ i ](단, i는 0 내지 MaxBinIdx의 범위(경계 포함)에 있음)는 다음과 같이 도출된다:
Figure pct00018
- ( RspCW[ i ] == 0 )인 경우
ChromaScaleCoef [ i ] = (1 << shiftC)
- 그렇지 않은 경우(RspCW[ i ] != 0인 경우), ChromaScaleCoef[ i ] = ChromaResidualScaleLut[RspCW[ i ] >> 1]
2.9.2.4 ILR의 사용
인코더 측에서, 각각의 픽처(또는 타일 그룹)이 먼저 리셰이핑된 도메인으로 변환된다. 그리고 모든 코딩 프로세스는 리셰이핑된 도메인에서 수행된다. 인트라 예측의 경우, 이웃 블록은 리셰이핑된 도메인에 있고; 인터 예측의 경우, (디코딩된 픽처 버퍼로부터의 원래 도메인으로부터 생성되는) 참조 블록들이 먼저 리셰이핑된 도메인으로 변환된다. 이어서 잔차가 생성되고 비트스트림으로 코딩된다.
전체 픽처(또는 타일 그룹)가 인코딩/디코딩을 완료한 후에, 리셰이핑된 도메인에서의 샘플들이 원래 도메인으로 변환되고, 이어서 디블로킹 필터 및 다른 필터들이 적용된다.
예측 신호에 대한 순방향 리셰이핑은 다음과 같은 경우들에 대해 디스에이블된다:
○ 현재 블록이 인트라 코딩된다
○ 현재 블록이 CPR(현재 픽처 참조, 인트라 블록 복사(IBC)라고도 함)로서 코딩된다
○ 현재 블록이 CIIP(combined inter-intra mode)로서 코딩되고 순방향 리셰이핑이 인트라 예측 블록에 대해 디스에이블된다
3 기존의 구현들의 단점들
IBC 가상 버퍼의 현재 설계에는, 몇 가지 문제들이 존재한다.
(1) CTU 크기가 128x128보다 클 때 IBC 가상 버퍼를 어떻게 유지할지가 정의되어 있지 않다.
(2) 가상 버퍼 크기와 참조 샘플들의 크기 사이의 관계가 명확하지 않다.
(3) IBC 모드에 대한 라인 버퍼와 CTU 행에 대한 BV가 감소될 수 있다.
(4) 서브픽처가 너무 제한될 수 있다.
(5) 크로마 QP 테이블이 올바른 방식으로 설계되지 않을 수 있다.
4 IBC에 대한 일반 가상 버퍼들에 대한 예시적인 방법들
VPDU의 폭 및 높이를 vSize로 표기하며, 예를 들면, vSize = min(64, ctbSizeY))이고, 여기서 ctbSizeY는 루마 CTB/CTU 폭/높이이다.
현재 개시된 기술의 실시예들은 기존의 구현들의 단점들을 극복하고, 이에 의해 보다 높은 코딩 효율들을 갖는 비디오 코딩을 제공한다. 개시된 기술에 기초한, IBC에 대한 일반 가상 버퍼들에 대한 방법들은 기존의 비디오 코딩 표준들 및 미래의 비디오 코딩 표준들 둘 모두를 향상시킬 수 있으며, 다양한 구현들에 대해 설명되는 다음 예들에서 설명된다. 아래에서 제공되는 개시된 기술의 예들은 일반 개념들을 설명하며, 제한하는 것으로 해석되도록 의도되지 않는다. 예에서, 반대로 명시적으로 나타내지 않는 한, 이러한 예들에 설명된 다양한 특징들이 결합될 수 있다.
IBC 버퍼 관련
1. IBC 가상 버퍼의 크기(예를 들면, 블록 벡터 또는 매핑된 샘플의 유효성을 결정하는 데 사용됨)는 VPDU 크기, CTB/CTU 크기에 의존할 수 있다.
a. 일 예에서, 가상 버퍼의 폭 x 높이는 고정될 수 있지만, 가상 버퍼의 폭 및/또는 높이는 VPDU 크기 및/또는 CTB/CTU 크기에 의존할 수 있다.
b. 일 예에서, 가상 버퍼의 높이는 CTB/CTU의 높이와 동일할 수 있다.
i. 대안적으로, 게다가, 가상 버퍼의 폭은 (IBC 가상 버퍼 크기/CTB의 높이)로 설정될 수 있다.
c. 일 예에서, 가상 버퍼의 폭은 CTB/CTU의 폭과 동일할 수 있다.
d. 일 예에서, 가상 버퍼의 폭은 VPDU 폭의 1배 또는 몇 배일 수 있다.
e. 일 예에서, 가상 버퍼의 높이는 VPDU 높이의 1배 또는 몇 배일 수 있다.
2. IBC BV 탐색 영역에 필요한 메모리 크기에 비해 더 큰 IBC 가상 버퍼 크기를 할당하는 것이 제안된다.
a. 일 예에서, IBC 가상 버퍼 크기는 IBC에 사용되는 VPDU 메모리의 총 크기보다 클 수 있다.
i. 일 예에서, 하나 이상의 CTU가 IBC 가상 버퍼에 할당될 수 있다.
b. 일 예에서, IBC 가상 버퍼 크기의 폭은 (128*128/ctbSizeY + ctbSizeY)일 수 있다.
c. 일 예에서, IBC 가상 버퍼 크기의 폭은 (128*128/ctbSizeY + ctbSizeY)일 수 있고 IBC 가상 버퍼 크기의 높이는 ctbSizeY일 수 있다.
3. IBC 블록에 대한 참조 블록은 특정 VPDU 행 또는 VPDU 열 내에 완전히 있도록 제약될 수 있다.
a. 일 예에서, 참조 블록은 상이한 VPDU 행들에 걸쳐 있도록 허용되지 않을 수 있다.
b. 일 예에서, 참조 블록은 상이한 VPDU 열들에 걸쳐 있도록 허용되지 않을 수 있다.
c. 일 예에서, 위쪽의 VPDU 행 또는 열은 픽처를 기준으로 할 수 있다.
d. 일 예에서, 위쪽의 VPDU 행 또는 열은 IBC 가상 버퍼를 기준으로 할 수 있다.
e. 대안적으로, 게다가, BV가 가리키는 참조 블록이 2 개 이상의 CTU/CTB에 걸쳐 있을 때 위의 방법들이 호출될 수 있다.
4. IBC 블록에 대한 참조 블록은 다수의 VPDU들에 걸쳐 있을 수 있고/상이한 VPDU 행들/VPDU 열들에 걸쳐 있을 수 있다. 그렇지만, 참조 블록에 일부 예측 값들을 채우기 위해서는 추가적인 동작들이 필요할 수 있다.
a. 일 예에서, 일부 예측 값들을 채우기 위해 일부 디폴트 값들이 활용될 수 있다.
5. IBC 모드에서 사용되는 블록 벡터들(BV들) 및/또는 블록 벡터 차이들(BVD)에 범위 제약이 적용될 수 있다.
a. 일 예에서, BV/BVD들의 허용 범위는, 현재 블록을 커버하는 CTU/CTB와 관련한 코디네이터들과 같은, 현재 IBC 코딩된 블록의 위치에 의존할 수 있다.
b. 일 예에서, 블록 벡터들은 [-2m,2m-1]의 범위로 제약될 수 있다.
c. 일 예에서, 정밀도 변환 이후의 블록 벡터 차이들은 [-2n,2n-1]의 범위로 제약될 수 있다.
d. 일 예에서, 정밀도 변환 이후의 블록 벡터 차이들은 [-2n+1,2n-1]의 범위로 제약될 수 있다.
e. 일 예에서, 비트스트림들에서 시그널링되는 블록 벡터 차이들은 [-2n,2n-1]의 범위로 제약될 수 있다.
f. 일 예에서, 비트스트림들에서 시그널링되는 블록 벡터 차이들은 [-2n+1,2n-1]의 범위로 제약될 수 있다.
g. 일 예에서, m은 18 또는 17 또는 15로 설정된다.
h. 일 예에서, n은 17 또는 16 또는 14로 설정된다.
i. 일 예에서, m 및/또는 n은 BV/모션 벡터 저장에 대한 정밀도 및/또는 블록 벡터 차이들과 연관된 정밀도에 의존할 수 있다.
j. 일 예에서, 블록 벡터들은 인터 예측 모드에 사용되는 모션 벡터들과 동일한 범위로 제약될 수 있다.
k. 일 예에서, 블록 벡터 차이들은 인터 예측 모드에 사용되는 모션 벡터 벡터들과 동일한 범위로 제약될 수 있다.
l. 일 예에서, 적합성 비트스트림은 위의 하위 글머리 기호가 충족된다는 것을 충족시켜야 한다.
i. 대안적으로, BV/BVD들이 블록을 인코딩/디코딩하는 데 활용되기 전에 BV/BVD에 대한 클리핑 프로세스가 디코딩된 BV/BVD에 적용될 수 있다.
6. IBC 가상 버퍼에 매핑되는 이용 가능한 샘플들의 수가 제한될 수 있다.
a. 일 예에서, 버퍼에 매핑되는 이용 가능한 샘플들의 최대 수는 IBC 가상 버퍼 크기보다 작을 수 있다.
b. 일 예에서, CTB/CTU 크기가 64x64보다 클 때 IBC 가상 버퍼에 매핑되는 이용 가능한 샘플들의 최대 수는 고정될 수 있다.
c. 일 예에서, IBC 가상 버퍼에 매핑되는 이용 가능한 샘플들의 수는 VPDU에서의 샘플들의 수의 1배 또는 몇 배보다 작거나 같도록 제한될 수 있다.
i. 일 예에서, CTU/CTB 크기가 64x64보다 클 때, IBC 가상 버퍼에 매핑되는 이용 가능한 샘플들의 수는 VPDU에서의 샘플들의 수의 3배보다 작거나 같도록 제한될 수 있다.
7. IBC 가상 버퍼에 매핑되는 IBC 참조 샘플들에 대한 이용 불가능성 표시는 VPDU의 입도로 수행될 수 있다.
a. 일 예에서, 샘플들이 이용 불가능으로 표시될 필요가 있을 때, 동일한 VPDU 내의 샘플들이 또한 이용 불가능으로 표시될 수 있다.
b. 일 예에서, 하나 또는 다수의 VPDU가 동시에 이용 불가능으로 표시될 수 있다.
c. 일 예에서, 어느 VPDU의 샘플들이 이용 불가능으로 표시되는지는 현재 VPDU의 위치에 의존할 수 있다.
d. 일 예에서, 어느 VPDU의 샘플들이 이용 불가능으로 표시되는지는 이전 또는 가장 최근에 디코딩된 VPDU의 위치에 의존할 수 있다.
8. CTU/CTB 크기가 64x64보다 클 때, IBC 참조는 현재 VPDU 및 3 개의 가장 최근에 디코딩된 VPDU일 수 있다.
a. 일 예에서, 각각의 VPDU의 디코딩 순서를 추적하기 위해 가상 IBC 버퍼에 매핑되는 각각의 VPDU에 대해 인덱스가 유지될 수 있다.
9. 버퍼에 매핑되는 이용 가능한 VPDU들의 수를 추적하기 위해 카운터가 유지될 수 있다.
a. 일 예에서, 카운터는 각각의 CTU 행의 디코딩의 시작에서 0으로 리셋되고 버퍼에 매핑되는 하나의 VPDU가 디코딩되었을 때 1만큼 증가된다.
b. 일 예에서, 카운터가 특정 값, 예를 들면, 3보다 클 때, 버퍼에 매핑되는 하나의 VPDU의 샘플들은 이용 불가능으로 표시될 수 있고, 카운터가 1만큼 감소될 수 있다.
10. CTU/CTB 크기가 128x128일 때, 대응하는 IBC 가상 버퍼는 크키가 256x128일 수 있다.
a. 대안적으로, IBC 가상 버퍼는 크기가 (k*64)x128일 수 있으며, 여기서 k>2이다.
11. CTU/CTB 크기가 256x256일 때, 대응하는 IBC 가상 버퍼는 참조 샘플들의 이용 가능성을 추적하기 위해 크기가 64x256일 수 있다, 즉, ibcBufW = 64이고, ibcBufH = 256일 수 있다.
a. 일 예에서, 좌측 상단 위치 (x0, y0)을 갖는 VPDU를 디코딩하기 전에, IBC 버퍼 내의 대응하는 VPDU 행 (0, y0%256)은 -1로 설정될 것이다.
12. CTU/CTB 크기가 256x256일 때, 대응하는 IBC 가상 버퍼는 참조 샘플들의 이용 가능성을 추적하기 위해 크기가 128x256일 수 있다, 즉, ibcBufW = 128이고, ibcBufH = 256일 수 있다.
a. 일 예에서, 특정 VPDU 행을 제외한 버퍼 내의 각각의 VPDU 행에 대해 (현재 VPDU를 제외한) 단지 하나의 VPDU가 유지될 수 있다.
i. 일 예에서, 마지막 VPDU 행을 제외한 버퍼 내의 각각의 VPDU 행에 대해 (현재 VPDU를 제외한) 단지 하나의 VPDU가 유지될 수 있다.
13. IBC 버퍼는 CTU 행의 시작 부분에서 리셋되지 않을 수 있다.
a. 일 예에서, 위쪽의 CTU 행으로부터 상속되는 IBC 가상 버퍼는 현재 CTU 행의 초기 상태로서 사용될 수 있다.
b. 대안적으로, IBC 가상 버퍼는 CTU 행의 시작 부분에서 부분적으로 리셋될 수 있다.
i. 일 예에서, 위쪽의 CTU 행에 있는 VPDU는 현재 IBC 버퍼에 상속될 수 있는 반면 다른 버퍼 영역은 리셋될 수 있다.
ii. 일 예에서, 위쪽의 CTU 행의 최하단 좌측 VPDU는 현재 IBC 버퍼에 상속될 수 있는 반면 다른 버퍼 영역은 리셋될 수 있다.
14. 버퍼 내의 샘플들을 이용 불가능으로 표시할지 여부 및/또는 어떻게 표시할지는 크로마 블록 위치와 무관할 수 있다.
a. 일 예에서, 루마 블록이 VPDU에서의 첫 번째 블록일 때만, IBC 버퍼 내의 대응하는 샘플들이 이용 불가능으로 표시될 수 있다.
b. 일 예에서, 크로마 코딩 유닛을 디코딩할 때 버퍼 내의 샘플들을 리셋시키거나 이용 불가능으로 표시하는 것이 허용되지 않을 수 있다.
15. IBC 가상 버퍼 내의 샘플들을 표시할지 여부 및/또는 어떻게 표시할지는 가장 최근에 디코딩된 VPDU의 위치 및 VPDU 크기에 의존할 수 있다.
a. 일 예에서, IBC 가상 버퍼 내의 샘플들을 이용 불가능으로 표시할지 여부 및/또는 어떻게 표시할지는 브릭/슬라이스/타일/픽처의 가장 최근에 디코딩된 VPDU의 위치에 의존할 수 있다.
b. 일 예에서, IBC 가상 버퍼 내의 샘플들을 이용 불가능으로 표시할지 여부 및/또는 어떻게 표시할지는 브릭/슬라이스/타일/픽처의 CTU 행에서의 가장 최근에 디코딩된 VPDU의 위치에 의존할 수 있다.
c. 일 예에서, IBC 가상 버퍼 내의 어떤 샘플들이 이용 불가능으로 표시되어야 하는지는 현재 블록의 위치와 무관할 수 있다.
IBC 라인 버퍼 관련
16. CTU 행에 걸친 블록 벡터 예측이 허용되지 않을 수 있다.
a. 일 예에서, 블록 벡터 예측이 현재 CTU 행과 비교하여 상이한 CTU 행으로부터 이루어질 때, 이는 이용 불가능한 것으로 간주될 수 있다.
17. CTU 행에 걸친 현재 IBC 블록들에 대한 디블록킹 결정은 다른 블록의 블록 벡터 또는 모션 벡터와 무관할 수 있다.
a. 일 예에서, 2 개의 블록이 상이한 CTU 행으로부터의 것이며 하나의 블록이 IBC 모드로 코딩되고 다른 블록이 IBC 또는 인터 모드로 코딩될 때, 디블록킹 경계 강도는 항상 1과 동일하게 설정될 수 있다.
b. 일 예에서, 2 개의 블록이 상이한 CTU 행으로부터의 것이며 하나의 블록이 IBC 모드로 코딩되고 다른 블록이 IBC 또는 인터 모드로 코딩될 때, 디블록킹 경계 강도는 항상 0과 동일하게 설정될 수 있다.
18. CTU 행에 걸친 현재 IBC 블록들에 대한 디블록킹 결정은 다른 블록이 IBC 모드로 코딩되는지 또는 인터 모드로 코딩되는지와 무관할 수 있다.
a. 일 예에서, 2 개의 블록이 상이한 CTU 행으로부터의 것이며 하나의 블록이 IBC 모드로 코딩되고 다른 블록이 인트라 모드로 코딩되지 않을 때, 디블록킹 경계 강도는 항상 1과 동일하게 설정될 수 있다.
서브픽처 관련
19. 특정 조건들 하에서 2 개의 서브픽처 간의 예측(예를 들면, 모션/샘플 예측)을 허용하는 것이 제안된다.
a. 일 예에서, 제1 서브픽처의 경계가 픽처 경계(또는 적합성 창 경계(conformance window boundary))와 일치하는 경우, 제2 서브픽처로부터의 정보를 사용하는 것이 허용될 수 있다.
i. 대안적으로, 게다가, 서브픽처 경계는 좌측 또는 우측 서브픽처 경계이다.
ii. 대안적으로, 게다가, 픽처 경계는 좌측 또는 우측 픽처 경계이다.
iii. 일 예에서, 제2 서브픽처의 좌측(또는 우측) 경계는 픽처의 좌측(또는 우측) 경계와 일치할 수 있다.
b. 이 조건은 픽처 래핑(picture wrapping)이 허용되는(예를 들면, sps_ref_wraparound_enabled_flag가 1과 동일한) 경우에만 참이다.
20. 픽처 래핑은 서브픽처들을 제외한다.
a. 일 예에서, 서브픽처들이 사용되는 경우 픽처 래핑이 인에이블된다.
b. 일 예에서, 픽처 래핑이 인에이블되는 경우 서브픽처들이 사용될 수 없다.
c. 대안적으로, 서브픽처가 사용될 때 픽처 래핑이 인에이블될 수 있다.
iv. 일 예에서, 픽처 경계와 일치하는 경계를 갖는 서브픽처에 대해 픽처 래핑이 인에이블될 수 있다.
크로마 QP 테이블 관련
21. 크로마 QP 테이블의 가장 작은 인덱스는 크로마 성분에 대한 비트 깊이와 무관할 수 있다.
a. 일 예에서, 크로마 QP 테이블의 가장 작은 인덱스는 루마 성분의 비트 깊이에 의존할 수 있다.
b. 일 예에서, 크로마 QP 테이블의 가장 작은 인덱스는 QpBdOffsetY, 즉 6*bit_depth_luma_minus8일 수 있다.
위에서 설명된 예들은 아래에서 설명되는 방법들, 예를 들면, 비디오 디코더 또는 비디오 인코더에서 구현될 수 있는 방법(400)의 맥락에서 통합될 수 있다.
도 4a는 예시적인 비디오 프로세싱 방법(400)의 플로차트를 도시한다. 방법(400)은, 단계(402)에서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록과 연관된 가상 버퍼의 크기에 기초하여, 가상 버퍼에 매핑되는 하나 이상의 샘플 또는 블록 벡터의 유효성에 관한 결정을 내리는 단계를 포함하며, 현재 픽처는 현재 블록 및 참조 블록을 포함하고, 가상 버퍼의 크기는 가상 파이프라인 데이터 유닛(VPDU)의 크기, 코딩 트리 블록(CTB)의 크기 또는 코딩 트리 유닛(CTU)의 크기에 기초한다.
방법(400)은, 단계(404)에서, 결정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 4b는 예시적인 비디오 프로세싱 방법(420)의 플로차트를 도시한다. 방법(420)은, 단계(422)에서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록에 대해, 참조 블록의 하나 이상의 참조 샘플을 이용 불가능한 것으로 지정하는 단계를 포함하며, 하나 이상의 참조 샘플 각각은 가상 버퍼에 매핑되고 참조 블록과 연관된 적어도 현재 가상 파이프라인 데이터 유닛(VPDU) 내의 대응하는 샘플을 가지며, 현재 픽처는 현재 블록 및 참조 블록을 포함한다.
방법(420)은, 단계(424)에서, 지정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 4c는 예시적인 비디오 프로세싱 방법(440)의 플로차트를 도시한다. 방법(440)은, 단계(442)에서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록에 대해, 현재 블록의 코딩 트리 블록(CTB)의 크기 또는 코딩 트리 유닛(CTU)의 크기에 기초하여, 참조 블록과 연관된 가상 버퍼의 크기를 결정하는 단계를 포함하며, 현재 픽처는 현재 블록 및 참조 블록을 포함한다.
방법(440)은, 단계(444)에서, 결정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
5 개시된 기술의 예시적인 구현들
5.1 실시예 #1
CTU 크기가 256x256일 때, 64x256 IBC 가상 버퍼 ibcBuf가 유지된다, 즉, ibcBufW = 64이고, ibcBufH = 256이다. VPDU 크기는 64x64이며, 현재 VPDU 외에, 3 개의 추가적인 VPDU의 온칩 메모리가 IBC 참조 샘플들을 저장하는 데 사용된다.
CTU 행의 디코딩의 시작에서 버퍼 ibcBuf는 -1로 리셋된다.
픽처의 좌측 상단 코너를 기준으로 좌측 상단 위치 (x0, y0)을 갖는 새로운 VPDU의 디코딩의 시작에서, 다음이 적용된다
1) x = x0..x0+63, y = y0..y0+63에 대해, ibcBuf[x%ibcBufW][y%ibcBufH] = -1이다
2) CU를 디코딩한 후에, 픽처의 좌측 상단 코너를 기준으로 해당 CU에서의 (x, y)에 대해, 인루프 필터링, 예를 들면, SAO, 디블록킹, ALF 이전에 ibcBuf[x%ibcBufW][y%ibcBufH]를 샘플 (x, y)의 재구성된 값으로서 설정한다.
3) bv가 주어지면, (x, y)에 대한 참조는 ibcBuf[(x+bv[0])%ibcBufW][(y+bv[1])%ibcBufH]이다.
다음 2 개의 조건이 참이어야 한다는 것은 비트스트림 제약조건이다.
1) 픽처의 좌측 상단을 기준으로 좌측 상단 위치 (x, y)를 갖는 WxH 블록이 주어지면, (y%ibcBufH)+H <= ibcBufH이다.
2) x=0..W-1, y=0..,H-1에 대해 ibcBuf[(x+bv[0])%ibcBufW][(y+bv[1])%ibcBufH]는 유효하지 않은 픽셀 값, 예를 들면, -1을 포함해서는 안 된다.
5.2 실시예 #2
CTU 크기가 256x256일 때, 128x256 IBC 가상 버퍼 ibcBuf가 유지된다, 즉, ibcBufW = 128이고, ibcBufH = 256이다. VPDU 크기는 64x64이며, 현재 VPDU 외에, 3 개의 추가적인 VPDU의 온칩 메모리가 IBC 참조 샘플들을 저장하는 데 사용된다.
CTU 행의 디코딩의 시작에서 버퍼 ibcBuf는 -1로 리셋된다. xPrevVPDU = 0이고 yPrevVPDU =0이다.
픽처의 좌측 상단 코너를 기준으로 좌측 상단 위치 (x0, y0)을 갖는 새로운 VPDU의 디코딩의 시작에서, 다음이 적용된다
1) (yPrevVPDU+64)%ibcBufH가 0과 동일하지 않은 경우,
x = x0..x0+63, y = y0..y0+63에 대해, ibcBuf[(x+xPrevVPDU-64)%ibcBufW][(y+yPrevVPDU)%ibcBufH] = -1이다
2) 그렇지 않은 경우((yPrevVPDU+64)%ibcBufH가 0과 동일한 경우),
x = x0..x0+63, y = y0..y0+63에 대해, ibcBuf[(x+xPrevVPDU)%ibcBufW][(y+yPrevVPDU)%ibcBufH] = -1이다
3) xPrevVPDU = x0이고 yPrevVPDU = y0이다
다음 2 개의 조건이 참이어야 한다는 것은 비트스트림 제약조건이다.
1) 픽처의 좌측 상단을 기준으로 좌측 상단 위치 (x, y)를 갖는 WxH 블록이 주어지면, (y%ibcBufH)+H <= ibcBufH이다.
2) x=0..W-1, y=0..,H-1에 대해 ibcBuf[(x+bv[0])%ibcBufW][(y+bv[1])%ibcBufH]는 유효하지 않은 픽셀 값, 예를 들면, -1을 포함해서는 안 된다.
5.3 실시예 #3
이 실시예는 글머리 기호 2를 반영한다. 굵은 기울임꼴 로 표시된 변경 사항들은 VVC 초안 6 문서 JVET-O2001-vE를 기반으로 한다.
log2_min_luma_coding_block_size_minus2 + 2는 최소 루마 코딩 블록 크기를 지정한다.
변수들 CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC 및 Vsize는 다음과 같이 도출된다:
Figure pct00019
5.4 실시예 #4
이 실시예는 글머리 기호 3을 반영한다.
(xCb, yCb)를 픽처의 좌측 상단을 기준으로 현재 블록의 좌측 상단 위치로서 표기한다. 블록 폭과 높이는, 제각기, W와 H이다. 블록에 대한 블록 벡터는 (xBv, yBv)이다.
픽처와 관련한 VPDU 행의 제약조건:
(xCb+xBv)/vSize가 (xCb+xBv+W-1/vSize)와 동일해야 하는 것이 비트스트림 제약조건이다.
픽처와 관련한 VPDU 열의 제약조건:
(yCb+yBv)/vSize가 (yCb+yBv+H-1/vSize)와 동일해야 하는 것이 비트스트림 제약조건이다.
IBC 버퍼와 관련한 VPDU 행의 제약조건:
((xCb+xBv)%IbcBufWidthY)/vSize가 (((xCb+xBv+W-1)%IbcBufWidthY)/vSize)와 동일해야 하는 것이 비트스트림 제약조건이다.
IBC 버퍼와 관련한 VPDU 열의 제약조건:
((yCb+yBv)%IbcBufHeightY)/vSize가 (((yCb+yBv+H-1)% IbcBufHeightY)/vSize)와 동일해야 하는 것이 비트스트림 제약조건이다.
5.5 실시예 #5
이 실시예는 IBC 가상 버퍼 내의 샘플들을 이용 불가능으로 표시하는 것이 크로마 블록들과 무관해야 한다는 것을 반영한다.
굵은 기울임꼴 로 표시된 변경 사항들은 JVET-O2001-vE를 기반으로 한다. 삭제된 텍스트들은 이중 대괄호들로 표시된다(예를 들면, [[a]]는 문자 "a"의 삭제를 표기한다).
7.4.9.5 코딩 유닛 시맨틱스
ResetIbcBuf가 1과 동일할 때, 다음이 적용된다:
- x = 0..IbcBufWidthY - 1 및 y = 0..CtbSizeY - 1에 대해, 다음 할당들이 이루어진다:
Figure pct00020
- 변수 ResetIbcBuf는 0과 동일하게 설정된다.
x0 % VSize가 0과 동일하고 y0 % VSize가 0과 동일하며 cIdx가 0과 동일할 때 , x = x0..x0 + VSize - 1 및 y = y0..y0 + VSize - 1에 대해 다음 할당들이 이루어진다:
Figure pct00021
5.6 실시예 #6
7.4.9.5 코딩 유닛 시맨틱스
...
ResetIbcBuf가 1과 동일할 때, 다음이 적용된다:
- x = 0..IbcBufWidthY - 1 및 y = 0..CtbSizeY - 1에 대해, 다음 할당들이 이루어진다:
Figure pct00022
Figure pct00023
- 변수 ResetIbcBuf는 0과 동일하게 설정된다.
x0 % VSize가 0과 동일하고 y0 % VSize가 0과 동일하며 cIdx가 0과 동일할 때, 다음이 적용된다: [[x =  x0..x0  +  VSize  - 1 및 y =  y0..y0  +  VSize  - 1에 대해 할당들이 이루어진다:]]
- yPrevV % VSize가 0과 동일한 경우, xP는 xPrevV - ( CtbLog2SizeY = = 7 ) ? 128 : (-VSize)와 동일하게 설정되고, 그렇지 않은 경우 xP는 xPrevV - ( CtbLog2SizeY = = 7 ) ? 64 : (-VSize)와 동일하게 설정된다.
- x = xP..xP + max(VSize, cbWidth) -1 및 y = yPrevV.. yPrevV + max(VSize, cbHeight) -1에 대해, 다음 할당이 이루어진다
Figure pct00024
- 변수 xPrevV는 (x0 + cbWidth - 1) / VSize * VSize와 동일하게 설정되고 변수 yPrevV는 (y0 + cbHeight - 1) / VSize * VSize와 동일하게 설정된다.
5.7 실시예 #7
이 실시예는 서브픽처 예측을 허용하는 것의 예를 제공한다. JVET-O2001-vE와 비교한 변경 사항들은 굵은 기울임꼴 로 강조 표시되어 있고, 삭제된 텍스트들은 이중 대괄호로 표시된다(예를 들면, [[a]]는 문자 "a"의 삭제를 나타낸다).
8.5.6.3.3 루마 정수 샘플 페치 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 완전 샘플(full-sample) 유닛들에서의 루마 위치 ( xIntL, yIntL ),
- 루마 참조 샘플 어레이 refPicLXL,
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL이다
변수 shift는 Max( 2, 14 - BitDepthY )와 동일하게 설정된다.
변수 picW는 pic_width_in_luma_samples와 동일하게 설정되고 변수 picH는 pic_height_in_luma_samples와 동일하게 설정된다.
완전 샘플 유닛들에서의 루마 위치들 (xInt, yInt)는 다음과 같이 도출된다:
- subpic_treated_as_pic_flag[ SubPicIdx ]가 1과 동일한 경우, 다음이 적용된다:
Figure pct00025
- 그렇지 않은 경우:
Figure pct00026
예측된 루마 샘플 값 predSampleLXL은 다음과 같이 도출된다:
Figure pct00027
5.8 실시예 #8
이 실시예는 크로마 QP 테이블의 예시적인 설계를 보여준다. 굵은 기울임꼴 로 표시된 변경 사항들은 JVET-O2001-vE를 기반으로 한다.
7.4.3.3 시퀀스 파라미터 세트 RBSP 시맨틱스
...
i = 0..same_qp_table_for_chroma ? 0 : 2에 대해 i 번째 크로마 QP 매핑 테이블 ChromaQpTable[ i ]는 다음과 같이 도출된다:
Figure pct00028
same_qp_table_for_chroma가 1과 동일할 때, ChromaQpTable[ 1 ][ k ] 및 ChromaQpTable[ 2 ][ k ]는 ChromaQpTable[ 0 ][ k ](단, k = [[QpBdOffset C ]]QpBdOffset Y ..63)와 동일하게 설정된다.
i = 0..same_qp_table_for_chroma ? 0 : 2 및 j = 0..num_points_in_qp_table_minus1[ i ]에 대해 qpInVal[ i ][ j ]의 값들은 -QpBdOffset Y 내지 63 의 범위(경계 포함)에 있어야 하고, qpOutVal[ i ][ j ]의 값들은 -QpBdOffsetC 내지 63의 범위(경계 포함)에 있어야 하는 것이 비트스트림 적합성의 요구사항이다.
...
도 6은 VPDU 열 및 VPDU 행과 교차하는 참조 블록들의 예들을 도시한다. 도 6에 도시된 바와 같이, 현재 CU(체크무늬의 블록(602))에 대해, 적색으로 채워진 블록(패턴이 없는 블록((604)))은 교차하는 VPDU 열 참조 블록이고 블록(대각선 줄무늬가 있는 블록(606))은 교차하는 VPDU 행 참조 블록이다. 각각의 큰 블록은 64x64 VPDU를 나타내고 영역(608)은 IBC 참조에 사용될 수 있는 재구성된 픽셀들을 나타낸다.
도 5는 비디오 프로세싱 장치(500)의 블록 다이어그램이다. 장치(500)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(500)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(500)는 하나 이상의 프로세서(502), 하나 이상의 메모리(504) 및 비디오 프로세싱 하드웨어(506)를 포함할 수 있다. 프로세서(들)(502)는 본 문서에 설명된 하나 이상의 방법(방법(400)을 포함하지만 이에 제한되지 않음)을 구현하도록 구성될 수 있다. 메모리(메모리들)(504)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(506)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다. 일부 실시예들에서, 하드웨어(506)는 부분적으로 또는 전체적으로 프로세서들(502), 예를 들면, 그래픽 코프로세서 내에 있을 수 있다.
도 7은 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(700)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(700)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(700)은 비디오 콘텐츠를 수신하기 위한 입력(1902)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(702)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(700)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(704)를 포함할 수 있다. 코딩 컴포넌트(704)는 비디오의 코딩된 표현을 생성하기 위해 입력(702)으로부터 코딩 컴포넌트(704)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(704)의 출력은 저장되거나, 컴포넌트(706)에 의해 표현된 바와 같은, 연결된 통신을 통해 전송될 수 있다. 입력(702)에 수신되는 비디오의 저장되거나 통신되는 비트스트림 표현(또는 코딩된 표현)은 디스플레이 인터페이스(710)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(708)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 동작들이 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들이 인코더에서 사용되고 코딩의 결과들을 반대로 하는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
도 8은 본 개시의 기술들을 활용할 수 있는 예시적인 비디오 코딩 시스템(100)을 예시하는 블록 다이어그램이다.
도 8에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(120)를 포함할 수 있다. 비디오 인코딩 디바이스라고 지칭될 수 있는 소스 디바이스(110)는 인코딩된 비디오 데이터를 생성한다. 비디오 디코딩 디바이스라고 지칭될 수 있는 목적지 디바이스(120)는 소스 디바이스(110)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다.
소스 디바이스(110)는 비디오 소스(112), 비디오 인코더(114), 및 입출력(I/O) 인터페이스(116)를 포함할 수 있다.
비디오 소스(112)는 비디오 캡처 디바이스와 같은 소스, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 그러한 소스들의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)로부터의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트 시퀀스를 포함할 수 있다. 비트스트림은 코딩된 픽처들 및 관련 데이터를 포함할 수 있다. 코딩된 픽처는 픽처의 코딩된 표현이다. 관련 데이터는 시퀀스 파라미터 세트들, 픽처 파라미터 세트들, 및 다른 신택스 구조들을 포함할 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 인코딩된 비디오 데이터는 I/O 인터페이스(116)를 통해 네트워크(130a)를 거쳐 목적지 디바이스(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(High Efficiency Video Coding) 표준, VVC(Versatile Video Coding) 표준 및 다른 현재 및/또는 추가 표준들과 같은, 비디오 압축 표준에 따라 동작할 수 있다.
도 9는 도 8에 예시된 시스템(100) 내의 비디오 인코더(114)일 수 있는, 비디오 인코더(200)의 예를 예시하는 블록 다이어그램이다.
비디오 인코더(200)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 9의 예에서, 비디오 인코더(200)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 인코더(200)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
비디오 인코더(200)의 기능 컴포넌트들은 분할 유닛(201), 모드 선택 유닛(203), 모션 추정 유닛(204), 모션 보상 유닛(205) 및 인트라 예측 유닛(206)을 포함할 수 있는 예측 유닛(202), 잔차 생성 유닛(207), 변환 유닛(208), 양자화 유닛(209), 역양자화 유닛(210), 역변환 유닛(211), 재구성 유닛(212), 버퍼(213), 및 엔트로피 인코딩 유닛(214)을 포함할 수 있다.
다른 예들에서, 비디오 인코더(200)는 보다 많은, 보다 적은 또는 상이한 기능 컴포넌트들을 포함할 수 있다. 예에서, 예측 유닛(202)은 인트라 블록 복사(intra block copy, IBC) 유닛을 포함할 수 있다. IBC 유닛은 적어도 하나의 참조 픽처가 현재 비디오 블록이 위치하는 픽처인 IBC 모드에서 예측을 수행할 수 있다.
게다가, 모션 추정 유닛(204) 및 모션 보상 유닛(205)과 같은 일부 컴포넌트들은 고도로 통합될 수 있지만, 설명의 목적을 위해 도 5의 예에서 개별적으로 표현되어 있다.
분할 유닛(201)은 픽처를 하나 이상의 비디오 블록으로 분할할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기들을 지원할 수 있다.
모드 선택 유닛(203)은, 예를 들어, 오차 결과들에 기초하여, 코딩 모드들, 즉 인트라(intra) 또는 인터(inter) 중 하나를 선택할 수 있고, 결과적인 인트라 코딩된 또는 인터 코딩된 블록을 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하도록 하고 재구성 유닛(212)에 제공하여 참조 픽처로서 사용하기 위한 인코딩된 블록을 재구성하도록 할 수 있다. 일부 예에서, 모드 선택 유닛(203)은 예측이 인터 예측 신호 및 인트라 예측 신호에 기초하는 CIIP(combination of intra and inter predication) 모드를 선택할 수 있다. 모드 선택 유닛(203)은 또한 인터 예측의 경우에 블록에 대한 모션 벡터의 분해능(예를 들면, 서브픽셀 또는 정수 픽셀 정밀도)을 선택할 수 있다.
현재 비디오 블록에 대한 인터 예측을 수행하기 위해, 모션 추정 유닛(204)은 버퍼(213)로부터의 하나 이상의 참조 프레임을 현재 비디오 블록과 비교하는 것에 의해 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 픽처들의 디코딩된 샘플들 및 모션 정보에 기초하여 현재 비디오 블록에 대한 예측된 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)은, 예를 들어, 현재 비디오 블록이 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지에 따라, 현재 비디오 블록에 대해 상이한 동작들을 수행할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 단방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 또는 리스트 1의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록을 포함하는 리스트 0 또는 리스트 1 내의 참조 픽처를 나타내는 참조 인덱스 및 현재 비디오 블록과 참조 비디오 블록 사이의 공간적 변위를 나타내는 모션 벡터를 생성할 수 있다. 모션 추정 유닛(204)은 참조 인덱스, 예측 방향 지시자, 및 모션 벡터를 현재 비디오 블록의 모션 정보로서 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대해 양방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 내의 참조 픽처들을 탐색할 수 있으며, 또한 현재 비디오 블록에 대한 다른 참조 비디오 블록에 대해 리스트 1 내의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록들을 포함하는 리스트 0 및 리스트 1 내의 참조 픽처들을 나타내는 참조 인덱스들 및 참조 비디오 블록들과 현재 비디오 블록 사이의 공간적 변위들을 나타내는 모션 벡터들을 생성할 수 있다. 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보로서 참조 인덱스들 및 현재 비디오 블록의 모션 벡터들을 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록들에 기초하여 현재 비디오 블록의 예측된 비디오 블록을 생성할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 디코더의 디코딩 프로세싱을 위한 모션 정보의 전체 세트를 출력할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오에 대한 모션 정보의 전체 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)은 다른 비디오 블록의 모션 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 모션 정보와 충분히 유사하다고 결정할 수 있다.
일 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에, 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 갖는다는 것을 비디오 디코더(300)에 알려주는 값을 표시할 수 있다.
다른 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 간의 차이를 나타낸다. 비디오 디코더(300)는 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 이용하여 현재 비디오 블록의 모션 벡터를 결정할 수 있다.
위에서 논의된 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측적 시그널링 기술의 두 가지 예는 AMVP(advanced motion vector predication) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대해 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대해 인트라 예측을 수행할 때, 인트라 예측 유닛(206)은 동일한 픽처 내의 다른 비디오 블록들의 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터는 예측된 비디오 블록 및 다양한 신택스 요소들을 포함할 수 있다.
잔차 생성 유닛(207)은 현재 비디오 블록으로부터 현재 비디오 블록의 예측된 비디오 블록(들)을 차감(예를 들면, 마이너스 부호로 표시됨)하는 것에 의해 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록 내의 샘플들의 상이한 샘플 성분들에 대응하는 잔차 비디오 블록들을 포함할 수 있다.
다른 예들에서, 예를 들어, 스킵 모드에서 현재 비디오 블록에 대한 현재 비디오 블록의 잔차 데이터가 없을 수 있고, 잔차 생성 유닛(207)은 차감 동작을 수행하지 않을 수 있다.
변환 프로세싱 유닛(208)은 현재 비디오 블록과 연관된 잔차 비디오 블록에 하나 이상의 변환을 적용하는 것에 의해 현재 비디오 블록에 대한 하나 이상의 변환 계수 비디오 블록을 생성할 수 있다.
변환 프로세싱 유닛(208)이 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 생성한 후에, 양자화 유닛(209)은 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210) 및 역변환 유닛(211)은, 제각기, 변환 계수 비디오 블록에 역양자화 및 역변환을 적용하여 변환 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성할 수 있다. 재구성 유닛(212)은 버퍼(213)에 저장할 현재 블록과 연관된 재구성된 비디오 블록을 생성하기 위해 예측 유닛(202)에 의해 생성되는 하나 이상의 예측된 비디오 블록으로부터의 대응하는 샘플들에 재구성된 잔차 비디오 블록을 가산할 수 있다.
재구성 유닛(212)이 비디오 블록을 재구성한 후에, 비디오 블록에서의 비디오 블로킹 아티팩트를 감소시키기 위해 루프 필터링 동작이 수행될 수 있다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 기능 컴포넌트들로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)이 데이터를 수신할 때, 엔트로피 인코딩 유닛(214)은 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 10은 도 8에 예시된 시스템(100) 내의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록 다이어그램이다.
비디오 디코더(300)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 10의 예에서, 비디오 디코더(300)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 디코더(300)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
도 10의 예에서, 비디오 디코더(300)는 엔트로피 디코딩 유닛(301), 모션 보상 유닛(302), 인트라 예측 유닛(303), 역양자화 유닛(304), 역변환 유닛(305), 및 재구성 유닛(306) 및 버퍼(307)를 포함한다. 비디오 디코더(300)는, 일부 예들에서, 비디오 인코더(200)(예를 들면, 도 9)와 관련하여 설명된 인코딩 패스(encoding pass)와 일반적으로 반대인 디코딩 패스(decoding pass)를 수행할 수 있다.
엔트로피 디코딩 유닛(301)은 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림은 엔트로피 코딩된 비디오 데이터(예를 들면, 비디오 데이터의 인코딩된 블록들)를 포함할 수 있다. 엔트로피 디코딩 유닛(301)은 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터, 모션 보상 유닛(302)은 모션 벡터, 모션 벡터 정밀도, 참조 픽처 리스트 인덱스, 및 다른 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어, AMVP 및 병합 모드를 수행하는 것에 의해 그러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은 모션 보상된 블록들을 생성할 수 있으며, 어쩌면 보간 필터들에 기초하여 보간을 수행할 수 있다. 사용될 보간 필터들에 대한 식별자들이 서브픽셀 정밀도와 함께 신택스 요소들에 포함될 수 있다.
모션 보상 유닛(302)은 참조 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안 비디오 인코더(20)에 의해 사용되는 바와 같이 보간 필터들을 사용할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에 의해 사용되는 보간 필터들을 결정할 수 있고 예측 블록들을 생성하기 위해 보간 필터들을 사용할 수 있다.
모션 보상 유닛(302)은 인코딩된 비디오 시퀀스의 프레임(들) 및/또는 슬라이스(들)를 인코딩하는 데 사용되는 블록들의 크기들, 인코딩된 비디오 시퀀스의 픽처의 각각의 매크로블록이 어떻게 분할되는지를 기술하는 분할 정보, 각각의 분할이 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터 인코딩된 블록에 대한 하나 이상의 참조 프레임(및 참조 프레임 리스트), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정하기 위해 신택스 정보의 일부를 사용할 수 있다.
인트라 예측 유닛(303)은 공간적으로 인접한 블록들로부터 예측 블록을 형성하기 위해, 예를 들어, 비트스트림에서 수신되는 인트라 예측 모드들을 사용할 수 있다. 역양자화 유닛(303)은 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에 의해 디코딩되는 양자화된 비디오 블록 계수들을 역양자화(inverse quantize), 즉 양자화 해제(de-quantize)한다. 역변환 유닛(303)은 역변환을 적용한다.
재구성 유닛(306)은 디코딩된 블록들을 형성하기 위해 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성되는 대응하는 예측 블록들과 잔차 블록들을 합산할 수 있다. 원하는 경우, 디코딩된 블록들을 필터링하여 블록성 아티팩트(blockiness artifact)를 제거하기 위해 디블록킹 필터가 또한 적용될 수 있다. 디코딩된 비디오 블록들은 이어서 버퍼(307)에 저장되며, 버퍼(307)는 후속 모션 보상을 위한 참조 블록들을 제공한다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 인에이블시키도록 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 인코더는 비디오 블록의 프로세싱에서 툴 또는 모드를 사용하거나 구현할 것이지만, 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정하는 것은 아닐 수 있다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은 의사 결정 또는 결정에 기초하여 비디오 프로세싱 툴 또는 모드가 인에이블될 때 이를 사용할 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 디코더는 비디오 프로세싱 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 지식을 사용하여 비트스트림을 프로세싱할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 디스에이블시키도록 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는 데 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 디코더는 의사 결정 또는 결정에 기초하여 디스에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 비트스트림이 수정되지 않았다는 지식을 사용하여 비트스트림을 프로세싱할 것이다.
본 문서에서, "비디오 프로세싱"이라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제를 지칭할 수 있다. 예를 들어, 비디오의 픽셀 표현으로부터 대응하는 비트스트림 표현으로 또는 그 반대로 변환하는 동안 비디오 압축 알고리즘들이 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이, 비트스트림 내에서 동일 위치에 있거나 상이한 위치들에 분산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록은 변환 및 코딩된 오차 잔차 값들의 관점에서 그리고 또한 비트스트림 내의 헤더들 및 다른 필드들 내의 비트들을 사용하여 인코딩될 수 있다.
다음 목록은, 문제들 중에서도, 본 문서에 설명된 기술적 문제들을 해결할 수 있는 실시예들을 제공한다. 제1 세트의 조항들은 이전 섹션에서의 개시된 기술들의 특정 특징들 및 양태들을 설명한다.
1. 비디오 프로세싱 방법으로서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록과 연관된 가상 버퍼의 크기에 기초하여, 가상 버퍼에 매핑되는 하나 이상의 샘플 또는 블록 벡터의 유효성에 관해 결정을 내리는 단계 - 현재 픽처는 현재 블록 및 참조 블록을 포함하고, 가상 버퍼의 크기는 가상 파이프라인 데이터 유닛(VPDU)의 크기, 코딩 트리 블록(CTB)의 크기 또는 코딩 트리 유닛(CTU)의 크기에 기초함 -; 및 결정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 가상 버퍼의 높이와 폭의 곱은 고정되어 있고, 높이 또는 폭은 VPDU의 크기, CTB의 크기 또는 CTU의 크기에 기초하는, 방법.
3. 조항 1의 방법으로서, 가상 버퍼의 폭은 CTB의 폭 또는 CTU의 폭과 동일한, 방법.
4. 조항 1의 방법으로서, 가상 버퍼의 폭 또는 높이는, 제각기, VPDU의 폭 또는 높이의 N배이고, N ≥ 1은 정수인, 방법.
5. 조항 1의 방법으로서, 하나 이상의 샘플의 최대 수는 가상 버퍼의 크기보다 작은, 방법.
6. 조항 1의 방법으로서, CTB의 크기 또는 CTU의 크기가 64×64보다 크다는 결정 시에 하나 이상의 샘플의 최대 수는 고정되어 있는, 방법.
7. 조항 1의 방법으로서, 하나 이상의 샘플의 수는 VPDU 내의 샘플들의 수의 N배보다 작거나 같고, N ≥ 1은 정수인, 방법.
8. 조항 7의 방법으로서, CTB의 크기 또는 CTU의 크기가 64×64보다 크다는 결정 시에 N = 3인, 방법.
9. 비디오 프로세싱 방법으로서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록에 대해, 참조 블록의 하나 이상의 참조 샘플을 이용 불가능으로 지정하는 단계 - 하나 이상의 참조 샘플 각각은 가상 버퍼에 매핑되고 참조 블록과 연관된 적어도 현재 가상 파이프라인 데이터 유닛(VPDU) 내의 대응하는 샘플을 가지며, 현재 픽처는 현재 블록 및 참조 블록을 포함함 -; 및 지정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
10. 조항 9에 있어서, 현재 VPDU 내의 대응하는 샘플을 이용 불가능으로 지정하는 단계를 더 포함하는, 방법.
11. 조항 10의 방법으로서, 대응하는 샘플을 지정하는 단계는 현재 VPDU의 위치에 기초하는, 방법.
12. 조항 10의 방법으로서, 대응하는 샘플을 지정하는 단계는 이전 VPDU 또는 최근에 디코딩된 VPDU의 위치에 기초하는, 방법.
13. 조항 9의 방법으로서, 하나 이상의 참조 샘플 각각은 3 개의 가장 최근에 디코딩된 VPDU 각각 내의 대응하는 샘플을 갖는, 방법.
14. 비디오 프로세싱 방법으로서, 참조 블록 내의 픽셀들에 기초하여 코딩되는 현재 블록에 대해, 현재 블록의 코딩 트리 유닛(CTU)의 크기 또는 코딩 트리 블록(CTB)의 크기에 기초하여, 참조 블록과 연관된 가상 버퍼의 크기를 결정하는 단계 - 현재 픽처는 현재 블록 및 참조 블록을 포함함 -; 및 결정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
15. 조항 14의 방법으로서, CTB 또는 CTU의 크기가 128x128이라는 결정 시에 가상 버퍼의 크기는 256x128인, 방법.
16. 조항 14의 방법으로서, CTB 또는 CTU의 크기가 256x256이라는 결정 시에 가상 버퍼의 크기는 64x256인, 방법.
17. 조항 14의 방법으로서, CTB 또는 CTU의 크기가 256x256이라는 결정 시에 가상 버퍼의 크기는 128x256인, 방법.
18. 조항 1 내지 조항 17 중 임의의 조항의 방법으로서, 현재 블록을 포함하는 현재 픽처 내의 참조 블록 내의 픽셀들에 기초하여 현재 블록을 코딩하는 것은 인트라 블록 복사(IBC) 동작이고, 가상 버퍼는 IBC 가상 버퍼인, 방법.
19. 비디오 프로세싱 방법으로서, 비디오의 현재 블록의 비트스트림 표현과 현재 블록 사이의 변환을 위해, 변환을 위한 블록 벡터 탐색 영역의 최소 크기보다 큰 인트라 블록 코딩(IBC) 가상 버퍼 크기를 할당하는 단계; 및 할당에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
20. 조항 19의 방법으로서, IBC 버퍼 크기는 변환을 위해 사용되는 가상 파이프라인 데이터 유닛 메모리의 총 크기보다 큰, 방법.
21. 조항 19 또는 조항 20의 방법으로서, IBC 가상 버퍼 크기의 폭은 (128*128/ctbSizeY + ctbSizeY)인, 방법.
22. 비디오 프로세싱 방법으로서, 비디오의 현재 블록의 비트스트림 표현과 현재 블록 사이의 변환을 위해, 규칙에 기초한 인트라 블록 예측 코딩에 기초하여 변환을 위한 참조 블록의 크기를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며; 규칙은 참조 블록을 가상 파이프라인 데이터 유닛(VPDU) 열 또는 가상 파이프라인 데이터 유닛 행 내에 있도록 제약하는, 방법.
23. 조항 22의 방법으로서, 규칙은 참조 블록이 상이한 VPDU 행들에 걸쳐 있도록 허용하지 않는, 방법.
24. 조항 22의 방법으로서, 규칙은 참조 블록이 상이한 VPDU 열들에 걸쳐 있도록 허용하지 않는, 방법.
25. 조항 22 내지 조항 24 중 임의의 조항의 방법으로서, VPDU 열 또는 VPDU 행은 현재 블록을 포함하는 픽처를 기준으로 하는, 방법.
26. 조항 22 내지 조항 24 중 임의의 조항의 방법으로서, VPDU 열 또는 VPDU 행은 인트라 블록 복사 가상 버퍼를 기준으로 하는, 방법.
27. 조항 1 내지 조항 26 중 임의의 조항의 방법으로서, 변환은 현재 블록으로부터 비트스트림 표현을 생성하기 위한 비디오 코딩을 포함하는, 방법.
28. 조항 1 내지 조항 26 중 임의의 조항의 방법으로서, 변환은 비트스트림 표현으로부터 현재 블록을 생성하기 위한 비디오 디코딩을 포함하는, 방법.
29. 비디오 시스템에서의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하며, 명령어들은, 프로세서에 의한 실행 시에, 프로세서로 하여금 조항 1 내지 조항 28 중 어느 한 조항에서의 방법을 구현하게 하는, 장치.
30. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 제품으로서, 컴퓨터 프로그램 제품은 조항 1 내지 조항 28 중 어느 한 조항에서의 방법을 수행하기 위한 프로그램 코드를 포함하는, 컴퓨터 프로그램 제품.
31. 본 명세서에 설명된 방법, 장치 또는 시스템.
제2 세트의 조항들은 이전 섹션(예를 들어, 예시적인 항목 13 내지 예시적인 항목 21)에 개시된 기술들의 특정 특징들 및 양태들을 설명한다.
1. 비디오 프로세싱 방법(예를 들면, 도 11a에 도시된 방법(1110))으로서, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 현재 비디오 블록을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 참조 샘플 값들을 리셋할지 여부 또는 어떻게 리셋할지를 결정하는 단계(1112); 및 결정에 기초하여 변환을 수행하는 단계(1114)를 포함하는, 방법.
2. 조항 1의 방법으로서, 규칙은 참조 영역의 참조 샘플 값들이 비디오 픽처의 코딩 트리 유닛(CTU) 행의 시작 부분에서 리셋되지 않는다는 것을 지정하는, 방법.
3. 조항 1의 방법으로서, 현재 CTU 행 위쪽에 있는 위쪽 CTU 행으로부터 상속되는 참조 영역은 비디오 픽처의 현재 CTU 행의 초기 상태로서 사용되는, 방법.
4. 조항 1의 방법으로서, 규칙은 참조 영역의 참조 샘플 값들이 비디오 픽처의 코딩 트리 유닛(CTU) 행의 시작 부분에서 부분적으로 리셋된다는 것을 지정하는, 방법.
5. 조항 4의 방법으로서, 규칙은 CTU 행 위쪽에 위치하는 위쪽 CTU 행의 가상 파이프라인 데이터 유닛(VPDU)이 참조 영역에 상속되고 나머지 참조 영역이 리셋된다는 것을 더 지정하는, 방법.
6. 조항 4의 방법으로서, 규칙은 CTU 행 위쪽에 위치하는 위쪽 CTU 행의 최좌측 하단 가상 파이프라인 데이터 유닛(VPDU)이 참조 영역에 상속되고 나머지 참조 영역이 리셋된다는 것을 더 지정하는, 방법.
7. 비디오 프로세싱 방법(예를 들면, 도 11b에 도시된 방법(1120))으로서, 루마 블록 및 대응하는 하나 이상의 크로마 블록을 포함하는 비디오의 비디오 픽처의 현재 비디오 영역과 비디오의 코딩된 표현 사이의 변환을 위해, 하나 이상의 크로마 블록의 위치에 독립적인 규칙에 기초하여 현재 비디오 영역을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계(1122); 및 결정에 기초하여 변환을 수행하는 단계(1124)를 포함하는, 방법.
8. 조항 7의 방법으로서, 규칙은 루마 블록이 현재 가상 파이프라인 데이터 유닛(VPDU) 내의 첫 번째 블록인 경우에만 참조 영역 내의 하나 이상의 대응하는 샘플을 이용 불가능한 것으로 표시하도록 지정하는, 방법.
9. 조항 7의 방법으로서, 규칙은, 변환 동안 하나 이상의 크로마 블록을 프로세싱하는 동안, 참조 영역의 하나 이상의 참조 샘플을 리셋하거나 이용 불가능한 것으로 표시하는 것이 허용되지 않는다는 것을 지정하는, 방법.
10. 비디오 프로세싱 방법(예를 들면, 도 11c에 도시된 방법(1130))으로서, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 가장 최근에 프로세싱된 가상 파이프라인 데이터 유닛(VPDU)의 위치 및 VPDU의 크기에 의존하는 규칙에 기초하여 현재 비디오 블록을 예측하는 데 사용되는 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계(1132); 및 결정에 기초하여 변환을 수행하는 단계(1134)를 포함하는, 방법.
11. 조항 10의 방법으로서, 규칙은 참조 영역의 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지가 비디오의 브릭, 슬라이스, 타일, 또는 픽처에서의 가장 최근에 디코딩된 VPDU의 위치에 의존한다는 것을 지정하는, 방법.
12. 조항 10의 방법으로서, 규칙은 참조 영역의 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지가 비디오의 브릭, 슬라이스, 타일, 또는 픽처의 코딩 트리 유닛(CTU) 행에서의 가장 최근에 디코딩된 VPDU의 위치에 의존한다는 것을 지정하는, 방법.
13. 조항 10의 방법으로서, 규칙은 표시될 참조 블록의 하나 이상의 참조 샘플이 현재 비디오 블록의 위치에 독립적으로 결정된다는 것을 지정하는, 방법.
14. 비디오 프로세싱 방법(예를 들면, 도 11d에 도시된 방법(1140))으로서, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 현재 비디오 블록을 예측하는 데 사용되는 블록 벡터에 대한 제약을 결정하는 단계(1142); 및 결정에 기초하여 변환을 수행하는 단계(1144)를 포함하며, 블록 벡터는 현재 비디오 블록과 현재 비디오 블록을 예측적으로 코딩하는 데 사용되는 비디오 픽처 내의 참조 영역 사이의 변위를 나타내고, 규칙은 비디오 픽처의 코딩 트리 유닛(CTU) 행과 교차하는 블록 벡터가 허용되지 않는다는 것을 지정하는, 방법.
15. 조항 14의 방법으로서, 규칙은 CTU 행과 상이한 다른 CTU 행으로부터의 블록 벡터가 현재 비디오 블록의 예측에 적용되지 않는다는 것을 더 지정하는, 방법.
16. 비디오 프로세싱 방법(예를 들면, 도 11e에 도시된 방법(1150))으로서, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 기초하여, 비디오 픽처의 코딩 트리 유닛(CTU) 행에 걸쳐 있는 다른 블록과 현재 비디오 블록의 에지의 적어도 일부 샘플들에 디블로킹 필터를 적용할지 여부를 결정하는 단계(1152); 및 결정에 기초하여 변환을 수행하는 단계(1154)를 포함하며, 현재 비디오 블록은 현재 비디오 블록의 예측이 현재 비디오 블록의 비디오 슬라이스로부터의 샘플 값들에 기초하여 도출되는 인트라 블록 복사(IBC) 모드를 사용하여 코딩되는, 방법.
17. 조항 16의 방법으로서, 규칙은, 현재 비디오 블록을 코딩하는 데 IBC 모드를 사용하는 것으로 인해, 결정이 다른 블록에 대응하는 모션 벡터 및/또는 다른 블록의 코딩 모드에 독립적이라는 것을 지정하는, 방법.
18. 조항 17의 방법으로서, 규칙은 1) 현재 비디오 블록 및 다른 블록이 상이한 CTU 행들을 갖고 2) 다른 비디오 블록이 IBC 모드 또는 인터 모드로 코딩되는 경우에 디블로킹 경계 강도가 항상 1로 설정된다는 것을 지정하는, 방법.
19. 조항 17의 방법으로서, 규칙은 1) 현재 비디오 블록 및 다른 블록이 상이한 CTU 행들을 갖고 2) 다른 비디오 블록이 IBC 모드 또는 인터 모드로 코딩되는 경우에 디블로킹 경계 강도가 항상 0으로 설정된다는 것을 지정하는, 방법.
20. 조항 16의 방법으로서, 규칙은 결정이 다른 블록이 IBC 모드를 사용하여 코딩되는지 인터 모드를 사용하여 코딩되는지에 독립적이라는 것을 지정하는, 방법.
21. 조항 20의 방법으로서, 규칙은 1) 현재 비디오 블록 및 다른 블록이 상이한 CTU 행들을 갖고 2) 다른 블록이 인터 모드로 코딩되지 않는 경우에 디블로킹 경계 강도가 항상 1으로 설정된다는 것을 지정하는, 방법.
22. 비디오 프로세싱 방법(예를 들면, 도 11f에 도시된 바와 같은 방법(1160))으로서, 비디오의 비디오 픽처의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 비디오 픽처의 제1 서브픽처 또는 제2 서브픽처 중 적어도 하나를 사용하여 현재 비디오 블록에 대한 예측 블록을 생성하는 서브픽처 예측의 적용 가능성을 결정하는 단계(1162); 및 결정에 기초하여 변환을 수행하는 단계(1164)를 포함하는, 방법.
23. 조항 22의 방법으로서, 규칙은 제1 서브픽처의 경계가 비디오 픽처의 경계와 일치하는 경우에 비디오의 제2 서브픽처로부터의 정보를 사용하는 것을 허용하도록 지정하는, 방법.
24. 조항 23의 방법으로서, 제1 서브픽처의 경계는 제1 서브픽처의 좌측 또는 우측 경계인, 방법.
25. 조항 23의 방법으로서, 비디오 픽처의 경계는 비디오 픽처의 좌측 또는 우측 경계인, 방법.
26. 조항 24의 방법으로서, 제2 서브픽처의 좌측 또는 우측 경계는 비디오 픽처의 좌측 또는 우측 경계와 일치하는, 방법.
27. 조항 22의 방법으로서, 규칙은 픽처 래핑이 허용되는 경우에만 서브픽처 예측이 적용된다는 것을 지정하는, 방법.
28. 조항 27의 방법으로서, 코딩된 표현은 1과 동일한 신택스 요소 sps_ref_wraparound_enabled_flag를 포함하는, 방법.
29. 조항 22의 방법으로서, 규칙은 픽처 래핑이 제1 서브픽처 및 제2 서브픽처를 배제한다는 것을 더 지정하는, 방법.
30. 조항 29의 방법으로서, 규칙은 픽처 래핑이 인에이블되는 경우 제1 픽처 및 제2 픽처가 사용되지 않는다는 것을 더 지정하는, 방법.
31. 조항 22의 방법으로서, 규칙은 제1 서브픽처 또는 제2 서브픽처 중 적어도 하나가 사용되는 경우에 픽처 래핑이 인에이블된다는 것을 더 지정하는, 방법.
32. 조항 31의 방법으로서, 규칙은 비디오 픽처의 경계와 일치하는 경계를 갖는 제1 서브픽처 또는 제2 서브픽처 중 적어도 하나에 대해 픽처 래핑이 인에이블된다는 것을 더 지정하는, 방법.
33. 비디오 프로세싱 방법(예를 들면, 도 11g에 도시된 바와 같은 방법(1170))으로서, 규칙에 따라 비디오의 크로마 성분의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계(1172)를 포함하며, 규칙은 변환에 사용되는 크로마 양자화 파라미터(QP) 테이블의 가장 작은 인덱스가 크로마 성분의 샘플들의 비트 깊이에 독립적이라는 것을 지정하는, 방법.
34. 조항 33의 방법으로서, 규칙은 크로마 QP 테이블의 가장 작은 인덱스가 비디오의 루마 성분의 샘플들의 비트 깊이에 의존한다는 것을 지정하는, 방법.
35. 조항 33의 방법으로서, 규칙은 크로마 QP 테이블의 가장 작은 인덱스가 6*bit_depth_luma_minus8의 값과 동일한 QpBdOffsetY라는 것을 지정하며, bit_depth_luma_minus8은 루마 어레이의 샘플의 비트 깊이 BitDepthY를 나타내는, 방법.
36. 조항 1 내지 조항 35 중 임의의 조항의 방법으로서, 변환은 비디오를 코딩된 표현으로 인코딩하는 것을 포함하는, 방법.
37. 조항 1 내지 조항 35 중 임의의 조항의 방법으로서, 변환은 코딩된 표현을 디코딩하여 비디오를 생성하는 것을 포함하는, 방법.
38. 조항 1 내지 조항 37 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
39. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서, 프로그램 코드는, 실행될 때, 프로세서로 하여금 조항 1 내지 조항 37 중 어느 하나 이상의 조항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
40. 컴퓨터 판독 가능 매체로서, 위에서 설명된 방법들 중 임의의 것에 따라 생성되는 코딩된 표현 또는 비트스트림 표현을 저장하는, 컴퓨터 판독 가능 매체.
전술한 내용으로부터, 현재 개시된 기술의 특정 실시예들이 예시 목적으로 본 명세서에 설명되었지만, 본 발명의 범위를 벗어나지 않으면서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 그에 따라, 현재 개시된 기술은 첨부된 청구항들에 의한 경우를 제외하고는 제한되지 않는다.
본 특허 문서에 설명되는 주제 및 기능적 동작들의 구현들은, 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들, 또는 이들 중 하나 이상의 조합들을 포함하여, 다양한 시스템들, 디지털 전자 회로로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로 구현될 수 있다. 본 명세서에 설명된 주제의 구현들은 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 프로세싱 장치에 의해 실행하기 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한, 유형적(tangible)이고 비일시적인 컴퓨터 판독 가능 매체 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 프로세싱 유닛" 또는 “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함하여, 데이터를 프로세싱하기 위한 모든 장치들, 디바이스들, 및 머신들을 포괄한다. 장치는, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들을 포함하여, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함하여, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 작동하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 로직 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치들이 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 동작 가능하게 결합될 것이거나, 또는 둘 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서, 반도체 메모리 디바이스들, 예를 들면, EPROM, EEPROM 및 플래시 메모리 디바이스들을 포함하여, 모든 형태들의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
본 명세서가, 도면과 함께, 단지 예시적인 것으로 간주되는 것으로 의도되며, 여기서 예시적인은 예를 의미한다. 본 명세서에서 사용되는 바와 같이, "또는"의 사용은, 맥락이 명확하게 달리 나타내지 않는 한, "및/또는"을 포함하는 것으로 의도된다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되어서는 안 되며, 오히려 특정 발명들의 특정 실시예들에 특정적일 수 있는 특징들에 대한 설명으로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 특허 문서에 설명되는 특정 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 설명된 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (40)

  1. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 상기 현재 비디오 블록을 예측하는 데 사용되는 상기 비디오 픽처의 참조 영역의 참조 샘플 값들을 리셋할지 여부 또는 어떻게 리셋할지를 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 규칙은 상기 참조 영역의 상기 참조 샘플 값들이 상기 비디오 픽처의 코딩 트리 유닛(CTU) 행의 시작 부분에서 리셋되지 않는다는 것을 지정하는, 방법.
  3. 제1항에 있어서, 현재 CTU 행 위쪽에 있는 위쪽 CTU 행으로부터 상속되는 상기 참조 영역은 상기 비디오 픽처의 상기 현재 CTU 행의 초기 상태로서 사용되는, 방법.
  4. 제1항에 있어서, 상기 규칙은 상기 참조 영역의 상기 참조 샘플 값들이 상기 비디오 픽처의 코딩 트리 유닛(CTU) 행의 시작 부분에서 부분적으로 리셋된다는 것을 지정하는, 방법.
  5. 제4항에 있어서, 상기 규칙은 상기 CTU 행 위쪽에 위치하는 위쪽 CTU 행의 가상 파이프라인 데이터 유닛(VPDU)이 상기 참조 영역에 상속되고 나머지 참조 영역이 리셋된다는 것을 더 지정하는, 방법.
  6. 제4항에 있어서, 상기 규칙은 상기 CTU 행 위쪽에 위치하는 위쪽 CTU 행의 최좌측 하단 가상 파이프라인 데이터 유닛(VPDU)이 상기 참조 영역에 상속되고 나머지 참조 영역이 리셋된다는 것을 더 지정하는, 방법.
  7. 비디오 프로세싱 방법으로서,
    루마 블록 및 대응하는 하나 이상의 크로마 블록을 포함하는 비디오의 비디오 픽처의 현재 비디오 영역과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 상기 하나 이상의 크로마 블록의 위치에 독립적인 규칙에 기초하여 상기 현재 비디오 영역을 예측하는 데 사용되는 상기 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  8. 제7항에 있어서, 상기 규칙은 상기 루마 블록이 현재 가상 파이프라인 데이터 유닛(VPDU) 내의 첫 번째 블록인 경우에만 상기 참조 영역 내의 상기 하나 이상의 대응하는 샘플을 이용 불가능한 것으로 표시하도록 지정하는, 방법.
  9. 제7항에 있어서, 상기 규칙은, 상기 변환 동안 상기 하나 이상의 크로마 블록을 프로세싱하는 동안, 상기 참조 영역의 상기 하나 이상의 참조 샘플을 리셋하거나 이용 불가능한 것으로 표시하는 것이 허용되지 않는다는 것을 지정하는, 방법.
  10. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 가장 최근에 프로세싱된 가상 파이프라인 데이터 유닛(VPDU)의 위치 및 VPDU의 크기에 의존하는 규칙에 기초하여 상기 현재 비디오 블록을 예측하는 데 사용되는 상기 비디오 픽처의 참조 영역의 하나 이상의 참조 샘플을 표시할지 여부 및/또는 어떻게 표시할지를 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서, 상기 규칙은 상기 참조 영역의 상기 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지가 상기 비디오의 브릭, 슬라이스, 타일, 또는 픽처에서의 상기 가장 최근에 디코딩된 VPDU의 상기 위치에 의존한다는 것을 지정하는, 방법.
  12. 제10항에 있어서, 상기 규칙은 상기 참조 영역의 상기 하나 이상의 참조 샘플을 이용 불가능한 것으로 표시할지 여부 및/또는 어떻게 표시할지가 상기 비디오의 브릭, 슬라이스, 타일, 또는 픽처의 코딩 트리 유닛(CTU) 행에서의 상기 가장 최근에 디코딩된 VPDU의 상기 위치에 의존한다는 것을 지정하는, 방법.
  13. 제10항에 있어서, 상기 규칙은 표시될 상기 참조 블록의 상기 하나 이상의 참조 샘플이 상기 현재 비디오 블록의 위치에 독립적으로 결정된다는 것을 지정하는, 방법.
  14. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 상기 현재 비디오 블록을 예측하는 데 사용되는 블록 벡터에 대한 제약을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하며,
    상기 블록 벡터는 상기 현재 비디오 블록과 상기 현재 비디오 블록을 예측적으로 코딩하는 데 사용되는 상기 비디오 픽처 내의 참조 영역 사이의 변위를 나타내고,
    상기 규칙은 상기 비디오 픽처의 코딩 트리 유닛(CTU) 행과 교차하는 상기 블록 벡터가 허용되지 않는다는 것을 지정하는, 방법.
  15. 제14항에 있어서, 상기 규칙은 상기 CTU 행과 상이한 다른 CTU 행으로부터의 상기 블록 벡터가 상기 현재 비디오 블록의 상기 예측에 적용되지 않는다는 것을 더 지정하는, 방법.
  16. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 기초하여, 상기 비디오 픽처의 코딩 트리 유닛(CTU) 행에 걸쳐 있는 다른 블록과 상기 현재 비디오 블록의 에지의 적어도 일부 샘플들에 디블로킹 필터를 적용할지 여부를 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하며;
    상기 현재 비디오 블록은 상기 현재 비디오 블록의 예측이 상기 현재 비디오 블록의 비디오 슬라이스로부터의 샘플 값들에 기초하여 도출되는 인트라 블록 복사(IBC) 모드를 사용하여 코딩되는, 방법.
  17. 제16항에 있어서, 상기 규칙은, 상기 현재 비디오 블록을 코딩하는 데 상기 IBC 모드를 사용하는 것으로 인해, 상기 결정이 상기 다른 블록에 대응하는 모션 벡터 및/또는 상기 다른 블록의 코딩 모드에 독립적이라는 것을 지정하는, 방법.
  18. 제17항에 있어서, 상기 규칙은 1) 상기 현재 비디오 블록 및 상기 다른 블록이 상이한 CTU 행들을 갖고 2) 상기 다른 비디오 블록이 상기 IBC 모드 또는 인터 모드로 코딩되는 경우에 디블로킹 경계 강도가 항상 1로 설정된다는 것을 지정하는, 방법.
  19. 제17항에 있어서, 상기 규칙은 1) 상기 현재 비디오 블록 및 상기 다른 블록이 상이한 CTU 행들을 갖고 2) 상기 다른 비디오 블록이 상기 IBC 모드 또는 인터 모드로 코딩되는 경우에 디블로킹 경계 강도가 항상 0으로 설정된다는 것을 지정하는, 방법.
  20. 제16항에 있어서, 상기 규칙은 상기 결정이 상기 다른 블록이 상기 IBC 모드를 사용하여 코딩되는지 인터 모드를 사용하여 코딩되는지에 독립적이라는 것을 지정하는, 방법.
  21. 제20항에 있어서, 상기 규칙은 1) 상기 현재 비디오 블록 및 상기 다른 블록이 상이한 CTU 행들을 갖고 2) 상기 다른 블록이 상기 인터 모드로 코딩되지 않는 경우에 디블로킹 경계 강도가 항상 1으로 설정된다는 것을 지정하는, 방법.
  22. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 상기 비디오 픽처의 제1 서브픽처 또는 제2 서브픽처 중 적어도 하나를 사용하여 상기 현재 비디오 블록에 대한 예측 블록을 생성하는 서브픽처 예측의 적용 가능성을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  23. 제22항에 있어서, 상기 규칙은 상기 제1 서브픽처의 경계가 상기 비디오 픽처의 경계와 일치하는 경우에 상기 비디오의 상기 제2 서브픽처로부터의 정보를 사용하는 것을 허용하도록 지정하는, 방법.
  24. 제23항에 있어서, 상기 제1 서브픽처의 상기 경계는 상기 제1 서브픽처의 좌측 또는 우측 경계인, 방법.
  25. 제23항에 있어서, 상기 비디오 픽처의 상기 경계는 상기 비디오 픽처의 좌측 또는 우측 경계인, 방법.
  26. 제24항에 있어서, 상기 제2 서브픽처의 좌측 또는 우측 경계는 상기 비디오 픽처의 좌측 또는 우측 경계와 일치하는, 방법.
  27. 제22항에 있어서, 상기 규칙은 픽처 래핑이 허용되는 경우에만 상기 서브픽처 예측이 적용된다는 것을 지정하는, 방법.
  28. 제27항에 있어서, 상기 코딩된 표현은 1과 동일한 신택스 요소 sps_ref_wraparound_enabled_flag를 포함하는, 방법.
  29. 제22항에 있어서, 상기 규칙은 픽처 래핑이 상기 제1 서브픽처 및 상기 제2 서브픽처를 배제한다는 것을 더 지정하는, 방법.
  30. 제29항에 있어서, 상기 규칙은 상기 픽처 래핑이 인에이블되는 경우 상기 제1 픽처 및 상기 제2 픽처가 사용되지 않는다는 것을 더 지정하는, 방법.
  31. 제22항에 있어서, 상기 규칙은 상기 제1 서브픽처 또는 상기 제2 서브픽처 중 적어도 하나가 사용되는 경우에 픽처 래핑이 인에이블된다는 것을 더 지정하는, 방법.
  32. 제31항에 있어서, 상기 규칙은 상기 비디오 픽처의 경계와 일치하는 경계를 갖는 상기 제1 서브픽처 또는 상기 제2 서브픽처 중 적어도 하나에 대해 상기 픽처 래핑이 인에이블된다는 것을 더 지정하는, 방법.
  33. 비디오 프로세싱 방법으로서,
    규칙에 따라 비디오의 크로마 성분의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 규칙은 상기 변환에 사용되는 크로마 양자화 파라미터(QP) 테이블의 가장 작은 인덱스가 상기 크로마 성분의 샘플들의 비트 깊이에 독립적이라는 것을 지정하는, 방법.
  34. 제33항에 있어서, 상기 규칙은 상기 크로마 QP 테이블의 상기 가장 작은 인덱스가 상기 비디오의 루마 성분의 샘플들의 비트 깊이에 의존한다는 것을 지정하는, 방법.
  35. 제33항에 있어서, 상기 규칙은 상기 크로마 QP 테이블의 상기 가장 작은 인덱스가 6*bit_depth_luma_minus8의 값과 동일한 QpBdOffsetY라는 것을 지정하며, bit_depth_luma_minus8은 루마 어레이의 샘플의 비트 깊이 BitDepthY를 나타내는, 방법.
  36. 제1항 내지 제35항 중 어느 한 항에 있어서, 상기 변환은 상기 비디오를 상기 코딩된 표현으로 인코딩하는 것을 포함하는, 방법.
  37. 제1항 내지 제35항 중 어느 한 항에 있어서, 상기 변환은 상기 코딩된 표현을 디코딩하여 상기 비디오를 생성하는 것을 포함하는, 방법.
  38. 비디오 프로세싱 장치로서,
    제1항 내지 제37항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
  39. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서,
    상기 프로그램 코드는, 실행될 때, 프로세서로 하여금 제1항 내지 제37항 중 어느 하나 이상의 항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
  40. 컴퓨터 판독 가능 매체로서,
    위에서 설명된 방법들 중 임의의 것에 따라 생성되는 코딩된 표현 또는 비트스트림 표현을 저장하는, 컴퓨터 판독 가능 매체.
KR1020227008788A 2019-09-23 2020-09-23 가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정 KR20220064968A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/107380 2019-09-23
CN2019107380 2019-09-23
PCT/CN2020/116959 WO2021057751A1 (en) 2019-09-23 2020-09-23 Setting intra-block copy virtual buffer based on virtual pipeline data unit

Publications (1)

Publication Number Publication Date
KR20220064968A true KR20220064968A (ko) 2022-05-19

Family

ID=75165120

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008788A KR20220064968A (ko) 2019-09-23 2020-09-23 가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정

Country Status (6)

Country Link
US (2) US11638004B2 (ko)
EP (1) EP4018664A4 (ko)
JP (2) JP7307274B2 (ko)
KR (1) KR20220064968A (ko)
CN (2) CN114503580A (ko)
WO (1) WO2021057751A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220036936A (ko) 2019-07-25 2022-03-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 블록 복사 가상 버퍼에 대한 크기 제한
CN114342410A (zh) 2019-09-05 2022-04-12 北京字节跳动网络技术有限公司 帧内块复制模式下块矢量的范围约束
WO2021185306A1 (en) * 2020-03-18 2021-09-23 Beijing Bytedance Network Technology Co., Ltd. Intra block copy buffer and palette predictor update
US11849129B2 (en) 2022-03-18 2023-12-19 Qualcomm Incorporated Intra-block copy decoding using dynamic re-mapping of on-chip memory
WO2023183496A1 (en) * 2022-03-25 2023-09-28 Bytedance Inc. Method, apparatus, and medium for video processing

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012152174A1 (en) * 2011-05-10 2012-11-15 Mediatek Inc. Method and apparatus for reduction of in-loop filter buffer
KR102254118B1 (ko) 2013-10-12 2021-05-20 삼성전자주식회사 인트라 블록 복사 예측을 이용한 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US9860559B2 (en) 2014-03-17 2018-01-02 Mediatek Singapore Pte. Ltd. Method of video coding using symmetric intra block copy
CN111432220B (zh) 2014-06-19 2022-05-06 Vid拓展公司 采用块向量导出的帧内块复制编码的方法和***
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
KR20170066457A (ko) 2014-09-26 2017-06-14 브이아이디 스케일, 인크. 시간적 블록 벡터 예측을 갖는 인트라 블록 카피 코딩
GB2531001B (en) 2014-10-06 2019-06-05 Canon Kk Method and apparatus for vector encoding in video coding and decoding
US9832467B2 (en) * 2014-10-07 2017-11-28 Qualcomm Incorporated Deblock filtering for intra block copying
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
US9591325B2 (en) * 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
EP3251350B1 (en) 2015-01-29 2023-04-19 VID SCALE, Inc. Intra-block copy searching
US10165292B2 (en) 2015-02-02 2018-12-25 Mediatek Inc. Method and apparatus for intra block copy mode in video coding system with pipeline architecture
SG11201706978TA (en) * 2015-03-02 2017-09-28 Hfi Innovation Inc Method and apparatus for intrabc mode with fractional-pel block vector resolution in video coding
KR102390073B1 (ko) * 2015-06-08 2022-04-25 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 인트라 블록 카피 모드
US10178403B2 (en) 2015-06-23 2019-01-08 Qualcomm Incorporated Reference picture list construction in intra block copy mode
US20170099490A1 (en) * 2015-10-02 2017-04-06 Qualcomm Incorporated Constrained intra-prediction for block copy mode
US10200719B2 (en) 2015-11-25 2019-02-05 Qualcomm Incorporated Modification of transform coefficients for non-square transform units in video coding
GB2547053B (en) 2016-02-08 2020-07-08 Canon Kk Methods, devices, and computer programs for combining the use of intra-layer prediction and inter-layer prediction with scalability & screen content features
US9866862B2 (en) * 2016-03-18 2018-01-09 Google Llc Motion vector reference selection through reference frame buffer tracking
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
US10944963B2 (en) 2016-05-25 2021-03-09 Arris Enterprises Llc Coding weighted angular prediction for intra coding
US10382781B2 (en) 2016-09-28 2019-08-13 Qualcomm Incorporated Interpolation filters for intra prediction in video coding
US10880570B2 (en) 2016-10-05 2020-12-29 Qualcomm Incorporated Systems and methods of adaptively determining template size for illumination compensation
US20180146191A1 (en) 2016-11-22 2018-05-24 Futurewei Technologies, Inc. System and Method for Coding Intra Prediction Mode using a Second Set of Most Probable Modes
CN116389731A (zh) 2017-12-22 2023-07-04 数码士有限公司 视频信号处理方法和设备
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
EP3741115A1 (en) * 2018-01-16 2020-11-25 Vid Scale, Inc. Motion compensated bi-prediction based on local illumination compensation
US11722694B2 (en) * 2018-01-26 2023-08-08 Interdigital Vc Holdings, Inc. Method and apparatus for video encoding and decoding based on a linear model responsive to neighboring samples
US10638133B2 (en) 2018-01-31 2020-04-28 Qualcomm Incorporated Delta quantization parameter (QP) coding options for video
US11012715B2 (en) 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
CN113016187B (zh) 2018-11-07 2023-06-06 寰发股份有限公司 利用当前画面参照编码方式的视频区块编码或解码方法和装置
KR102621959B1 (ko) 2019-03-04 2024-01-05 후아웨이 테크놀러지 컴퍼니 리미티드 임의의 ctu 크기에 대한 ibc 검색 범위 최적화를 사용하는 인코더, 디코더 및 대응하는 방법
US11985348B2 (en) 2019-03-11 2024-05-14 Electronics And Telecommunications Research Institute Intra block copy-based encoding/decoding method and device, and bitstream storage medium
MX2021001663A (es) * 2019-05-16 2021-05-12 Huawei Tech Co Ltd Un codificador, un decodificador y metodos correspondientes usando bufer dedicado de ibc y actualizacion de valor predeterminado para componente luma y croma.
AU2020282086A1 (en) 2019-05-24 2021-11-04 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods using for ibc merge list
KR20200145785A (ko) 2019-06-20 2020-12-30 한국전자통신연구원 비디오 부호화/복호화 방법, 장치 및 비트스트림 저장 매체
KR20230170800A (ko) * 2019-07-06 2023-12-19 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼
CN113661703A (zh) 2019-07-11 2021-11-16 腾讯美国有限责任公司 视频编解码的方法和装置
KR20220036936A (ko) * 2019-07-25 2022-03-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 블록 복사 가상 버퍼에 대한 크기 제한
AU2020316548A1 (en) * 2019-07-25 2022-02-24 Beijing Bytedance Network Technology Co., Ltd. Mapping restriction for intra-block copy virtual buffer
EP3997868A4 (en) * 2019-08-10 2023-02-22 Beijing Bytedance Network Technology Co., Ltd. BUFFER MANAGEMENT DURING SUBPICTURE DECODING
CN114342410A (zh) * 2019-09-05 2022-04-12 北京字节跳动网络技术有限公司 帧内块复制模式下块矢量的范围约束
US11394957B2 (en) 2019-09-23 2022-07-19 Tencent America LLC Constraints on reference sample locations in the dedicated buffer for intra picture block compensation

Also Published As

Publication number Publication date
US20220224887A1 (en) 2022-07-14
EP4018664A1 (en) 2022-06-29
CN117459723A (zh) 2024-01-26
US20230247192A1 (en) 2023-08-03
CN114503580A (zh) 2022-05-13
US11638004B2 (en) 2023-04-25
JP7307274B2 (ja) 2023-07-11
WO2021057751A1 (en) 2021-04-01
JP2023126864A (ja) 2023-09-12
JP2022548772A (ja) 2022-11-21
EP4018664A4 (en) 2022-11-16

Similar Documents

Publication Publication Date Title
WO2021013240A1 (en) Mapping restriction for intra-block copy virtual buffer
CN113396592B (zh) 用于视频编解码中的帧内块复制的缓冲区管理
JP7482220B2 (ja) サブピクチャのパラメータセットシグナリングにおける構文制約
WO2021057751A1 (en) Setting intra-block copy virtual buffer based on virtual pipeline data unit
WO2021013239A1 (en) Size restriction for intra-block copy virtual buffer
KR20220042125A (ko) 서브픽처 디코딩에서의 버퍼 관리
CN114556924A (zh) 视频处理中色度残差的联合编解码与滤波
KR20210132658A (ko) 비디오 코딩에서 인트라 블록 복사를 위한 방향 기반 예측
US11575889B2 (en) Range constrains for block vector in intra-block copy mode
JP2023143947A (ja) ビデオビットストリームにおけるサブピクチャシグナリングのための構文
CN117544777A (zh) 用于视频编解码的跨分量自适应环路滤波
RU2818521C2 (ru) Ограничение сопоставления для виртуального буфера внутриблочного копирования
CN115362674A (zh) 帧内块复制缓冲区和调色板预测值更新

Legal Events

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