KR20220131249A - 로컬 이중 트리용 팔레트 모드 - Google Patents
로컬 이중 트리용 팔레트 모드 Download PDFInfo
- Publication number
- KR20220131249A KR20220131249A KR1020227025852A KR20227025852A KR20220131249A KR 20220131249 A KR20220131249 A KR 20220131249A KR 1020227025852 A KR1020227025852 A KR 1020227025852A KR 20227025852 A KR20227025852 A KR 20227025852A KR 20220131249 A KR20220131249 A KR 20220131249A
- Authority
- KR
- South Korea
- Prior art keywords
- video
- bitstream
- way
- palette
- block
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 343
- 238000003672 processing method Methods 0.000 claims abstract description 50
- 230000009466 transformation Effects 0.000 claims abstract description 40
- 238000006243 chemical reaction Methods 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims description 107
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 72
- 241000023320 Luma <angiosperm> Species 0.000 claims description 68
- 230000003044 adaptive effect Effects 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 40
- 230000011664 signaling Effects 0.000 claims description 34
- 238000013139 quantization Methods 0.000 claims description 33
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 230000002123 temporal effect Effects 0.000 claims description 9
- 230000001131 transforming effect Effects 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 10
- 238000009795 derivation Methods 0.000 description 9
- 230000009977 dual effect Effects 0.000 description 8
- 230000015654 memory Effects 0.000 description 7
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 4
- 244000046052 Phaseolus vulgaris Species 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Breeding Of Plants And Reproduction By Means Of Culturing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
비디오 처리 방법, 시스템 및 장치에 대해 설명된다. 방법은 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록의 팔레트의 크기는 변환 동안 로컬 이중 트리 적용 여부에 따라 결정된다.
Description
이 특허 문서는 이미지 및 비디오 코딩(video coding) 및 디코딩(decoding)에 관한 것이다.
적용 가능한 특허법 및/또는 파리 협약에 따른 규칙에 따라, 본 출원은, 2020년 2월 5일에 출원된 국제 특허 출원 PCT/CN2020/074316 및 2020년 5월 21일에 출원된 국제 특허 출원 PCT/CN2020/091661에 대한 우선권 및 혜택을 적시에 주장하기 위해 만들어졌다. 법에 따른 모든 목적을 위해, 상기 출원의 전체 개시는 본 출원의 개시의 일부로 참조로 통합된다.
디지털 비디오(Digital video)는 인터넷 및 다른 디지털 통신 네트워크(digital communication network)에서 가장 많은 대역폭을 사용한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 장치의 수가 증가함에 따라 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
본 문서는 대표 샘플 값(representative sample value)의 팔레트(palette)가 비디오의 표현에 사용되는 팔레트 모드를 사용하여 비디오 처리(video processing)를 위해 비디오 인코더(video encoder) 및 디코더에 의해 사용될 수 있는 기술을 개시한다.
하나의 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오 블록(video block)의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림(bitstream) 사이의 변환(conversion)을 수행하는 단계를 포함한다. 비디오 블록의 팔레트의 크기는 비디오 블록에 로컬 이중 트리(local dual tree) 적용 여부에 따라 결정된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드(palette mode)를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록의 팔레트 예측자(palette predictor)의 크기는 로컬 이중 트리가 비디오 블록에 적용되는지 여부에 기초한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오 블록(video block)의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림(bitstream) 사이의 변환(conversion)을 수행하는 단계를 포함한다. 비트스트림은 이스케이프 샘플(escape sample)의 값이 적어도 최대 허용 값 또는 최소 허용 값에 의해 제한되는 양자화 파라미터(quantization parameter)를 사용하여 비트스트림에서 코딩된다는 것을 지정하는 규칙을 따른다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 크로마 코딩 툴(chroma coding tool)과 연관된 파라미터가 비트스트림의 적응형 파라미터 세트(adaptation parameter set)에 존재하는지 여부가 적응형 파라미터 세트의 제어 플래그(control flag)에 기초한다는 것을 지정하는 포맷 규칙(format rule)에 따라 비디오의 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은 비디오의 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비트스트림은 비디오가 단색(monochromatic)이거나 비디오의 컬러 컴포넌트(color component)가 별도로 처리되는 경우, 비트스트림의 픽처 헤더에서 양자화 파라미터와 관련된 신택스 요소가 생략되도록 지정하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은, 변환을 위해, 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드와 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드(adaptive color transform mode)가 상호 배타적으로 활성화되는 것으로 지정하는 규칙에 따라 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 잔차 영역에서 컬러 공간 변환(color space conversion)이 수행되는 적응형 컬러 트랜스폼 모드(adaptive color transform mode)가 잔차 블록(residual block)의 컬러 공간(color space)에 관계없이 비디오 블록의 잔차 블록에 적용된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록은 비디오 블록의 트랜스폼 스킵된 코딩의 잔차 계수(residual coefficient)가 컨텍스트 코딩 프로세스(context coding process) 또는 바이패스 코딩 프로세스(bypass coding process)를 사용하여 코딩되는 트랜스폼 스킵 잔차 코딩 툴(transform skip residual coding tool)을 사용하여 코딩된다. 변환 동안, 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 지정하는 변수(variable)에 대한 바이패스 코딩 프로세스의 시작 또는 끝에서 동작(operation)이 적용된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 트랜스폼 스킵 잔차 코딩 프로세스(transform skip residual coding process)를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 동작(operation)은 신택스 요소가 특정 스캔 패스(scan pass)에 속하는지 여부를 나타내는 변수에 적용된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 계수 레벨(coefficient level)의 부호를 나타내는 신택스 요소가 상기 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록의 영역에서 하나 이상의 계수의 동일한 신택스 요소가 순서대로 코딩되는 스캔 패스의 인덱스에 기초한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 트랜스폼 스킵 잔차 코딩 프로세스(transform skip residual coding process)를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 신택스 요소가 다른 신택스 요소와 동일한 스캔 패스에서 시그널링되는지 여부에 기초한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트 외부의 샘플은 규칙에 의해 결정되는 최소 허용 값과 최대 허용 값 사이의 범위에 있는 양자화 파라미터를 사용하여 양자화된 값 및 이스케이프 기호(escape symbol)를 사용하여 코딩된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트의 크기는 비디오 블록과 코딩된 표현 사이의 변환을 위해 로컬 이중 트리가 사용되는지 여부에 대한 규칙에 따라 달라진다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트 예측자(palette predictor)의 크기는 비디오 블록과 코딩된 표현 사이의 변환을 위해 로컬 이중 트리가 사용되는지 여부에 대한 규칙에 따라 달라진다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 코딩 조건에 기초하여, 비디오의 크로마 컴포넌트(chroma component)에 대한 디블로킹 오프셋(deblocking offset)을 식별하는 신택스 요소가 비디오 영역 레벨에서 코딩된 표현에 포함되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함하고; 디블로킹 오프셋은 비디오 블록에 대한 디블로킹 동작을 선택적으로 활성화하는데 사용된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 코딩 조건에 기초하여, 크로마 코딩 툴(chroma coding tool)의 사용을 식별하는 신택스 요소가 비디오 영역 레벨에서 코딩된 표현에 포함되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함하고; 디블로킹 오프셋은 비디오 블록에 대한 디블로킹 동작을 선택적으로 활성화하는데 사용된다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서 포맷은 비디오의 크로마 성분에 대한 디블로킹 오프셋을 나타내는 제1 플래그가 코딩된 표현에 포함되는지 여부가 크로마 성분의 양자화 파라미터 오프셋을 나타내는 제2 플래그가 코딩된 표현에 포함되는지 여부에 기초한다는 것을 지정한다.
다른 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 방법은 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계 - 코딩된 표현은 포맷 규칙을 따르는 것 - 를 포함하고; 여기서 포맷 규칙은 코딩된 표현의 신택스 요소가 하나 이상의 크로마 코딩 툴의 적용 가능성을 나타내는 하나 이상의 파라미터가 비디오 영역 또는 비디오 블록 레벨에서 코딩된 표현에 포함되는지 여부를 제어하는 것을 지정한다.
또 다른 예시적인 측면에서, 비디오 인코더 장치(video encoder apparatus)가 개시된다. 비디오 인코더는 전술한 방법을 구현하도록 구성된 프로세서(processor)를 포함한다.
또 다른 예시적인 측면에서, 비디오 디코더 장치(video decoder apparatus)가 개시된다. 비디오 디코더는 전술한 방법을 구현하도록 구성된 프로세서를 포함한다.
또 다른 실시예 측면에서, 코드(code)가 저장된 컴퓨터 판독 가능 매체(computer readable medium)가 개시된다. 코드는 프로세서 실행 가능 코드의 형태로 여기에 설명된 방법 중 하나를 구현한다.
이러한 기능 및 기타 기능은 본 문서 전체에 걸쳐 설명되어 있다.
도 1은 팔레트 모드에서 코딩된 블록의 예를 나타낸다.
도 2는 팔레트 항목을 시그널링하기 위한 팔레트 예측자의 사용을 예시한다.
도 3은 수평 및 수직 횡단 스캔의 예를 나타낸다.
도 4는 팔레트 인덱스의 예시적인 코딩을 도시한다.
도 5a-5b는 최소 크로마 인터 예측 유닛(smallest chroma inter prediction unit)(SCIPU)의 예를 도시한다.
도 6은 ACT를 이용한 디코딩 프로세스(decoding process)를 도시한다.
도 7은 예시적인 비디오 처리 시스템의 블록도이다.
도 8은 비디오 처리 장치의 블록도이다.
도 9는 비디오 처리 방법의 하나의 예의 방법에 대한 흐름도이다.
도 10은 본 개시의 일부 실시예에 따른 비디오 코딩 시스템을 예시하는 블록도이다.
도 11은 본 개시내용의 일부 실시예에 따른 인코더를 예시하는 블록도이다.
도 12는 본 개시의 일부 실시예에 따른 디코더를 예시하는 블록도이다.
도 13은 본 기술에 따른 비디오 처리 방법에 대한 흐름도 표현이다.
도 14는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 15는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 16은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 17은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 18은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 19는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 20은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 21은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 22는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 23은 본 기술에 따른 비디오 처리의 또 다른 방법에 대한 흐름도 표현이다.
도 2는 팔레트 항목을 시그널링하기 위한 팔레트 예측자의 사용을 예시한다.
도 3은 수평 및 수직 횡단 스캔의 예를 나타낸다.
도 4는 팔레트 인덱스의 예시적인 코딩을 도시한다.
도 5a-5b는 최소 크로마 인터 예측 유닛(smallest chroma inter prediction unit)(SCIPU)의 예를 도시한다.
도 6은 ACT를 이용한 디코딩 프로세스(decoding process)를 도시한다.
도 7은 예시적인 비디오 처리 시스템의 블록도이다.
도 8은 비디오 처리 장치의 블록도이다.
도 9는 비디오 처리 방법의 하나의 예의 방법에 대한 흐름도이다.
도 10은 본 개시의 일부 실시예에 따른 비디오 코딩 시스템을 예시하는 블록도이다.
도 11은 본 개시내용의 일부 실시예에 따른 인코더를 예시하는 블록도이다.
도 12는 본 개시의 일부 실시예에 따른 디코더를 예시하는 블록도이다.
도 13은 본 기술에 따른 비디오 처리 방법에 대한 흐름도 표현이다.
도 14는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 15는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 16은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 17은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 18은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 19는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 20은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 21은 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 22는 본 기술에 따른 비디오 처리의 다른 방법에 대한 흐름도 표현이다.
도 23은 본 기술에 따른 비디오 처리의 또 다른 방법에 대한 흐름도 표현이다.
섹션 제목은 이해의 편의를 위해 본 문서에서 사용되며 각 섹션에 개시된 기술 및 실시예의 적용 가능성을 해당 섹션에만 제한하지 않는다. 또한, H.266 용어는 일부 설명에서 이해의 편의를 위해서만 사용되며 개시된 기술의 범위를 제한하기 위한 것이 아니다. 이와 같이, 여기에 설명된 기술은 다른 비디오 코덱 프로토콜 및 설계에도 적용할 수 있다.
1. 개요
이 문서는 비디오 코딩 기술(video coding technologies)과 관련이 있다. 특히, 팔레트 코딩, 크로마 포맷 시그널링(chroma format signalling) 및 잔차 코딩에서의 인덱스 및 이스케이프 기호 코딩(escape symbols coding)과 관련이 있다. HEVC와 같은 기존 비디오 코딩 표준 또는 최종 확정될 표준(다목적 비디오 코딩)에 적용될 수 있다. 미래의 비디오 코딩 표준이나 비디오 코덱에도 적용 가능(applicable)하다.
2. 비디오 코딩 표준(Video Coding Standards)
비디오 코딩 표준은 주로 잘 알려진 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 표준 작업을 위해 만들어졌다.
2.1 HEVC 화면 콘텐츠 코딩 확장의 2.5 팔레트 모드(HEVC-SCC)
2.1.1 팔레트 모드의 개념
팔레트 모드(palette mode)의 기본 아이디어는 CU의 픽셀이 작은 대표 컬러 값 세트로 표현된다는 것이다. 이 세트를 팔레트라고 한다. 그리고 또한 이스케이프 기호(escape symbol)에 이어 (가능한 양자화된) 컴포너트 값을 시그널링 하여 팔레트 외부에 있는 샘플을 나타낼 수도 있다. 이러한 종류의 픽셀을 이스케이프 픽셀(escape pixel)이라고 한다. 팔레트 모드는 도 1에 도시되어 있다. 도 1에 도시된 바와 같이, 3개의 콜록 컴포넌트(coloc component)(루마 및 2개의 크로마 컴포넌트)을 갖는 각각의 픽셀에 대해, 팔레트에 대한 인덱스가 구축되고, 블록은 팔레트에서 구축된 값에 기초하여 재구성될 수 있다.
2.1.2 팔레트 항목의 코딩
팔레트 항목의 코딩을 위해, 팔레트 예측자(palette predictor)가 유지된다. 팔레트 예측자(palette predictor)뿐만 아니라 팔레트의 최대 크기는 SPS에서 시그널링 된다. HEVC-SCC에서는, PPS에 palette_predictor_initializer_present_flag가 도입된다. 이 플래그가 1이면, 팔레트 예측자를 초기화하기 위한 항목들이 비트스트림에서 시그널링 된다. 팔레트 예측 변수는 각 CTU 행, 각 슬라이스 및 각 타일의 시작 부분에 초기화된다. palette_predictor_initializer_present_flag의 값에 따라, 팔레트 예측자는 0으로 재설정되거나 PPS에서 시그널링 된 팔레트 예측자 초기화 항목을 사용하여 초기화된다. HEVC-SCC에서, 크기 0의 팔레트 예측자 초기화가 활성화되어 PPS 레벨에서 팔레트 예측자 초기화를 명시적으로 비활성화할 수 있다.
팔레트 예측자의 각 항목에 대해 재사용 플래그(reuse flag)가 시그널링 하여 현재 팔레트의 일부인지 여부를 나타낸다. 이것은 도 2에 설명되어 있다. 재사용 플래그는 0의 실행 길이 코딩(run-length coding)을 사용하여 전송된다. 그 후, 새로운 팔레트 엔트리의 수는 차수 0의 지수 골롬(EG) 코드, 즉 EG-0을 사용하여 시그널링된다. 마지막으로 새 팔레트 항목에 대한 컴포넌트 값이 표시된다.
2.1.3 팔레트 인덱스 코딩
팔레트 인덱스는 도 3에 도시된 대로 수평 및 수직 횡단 스캔을 사용하여 코딩된다. 스캔 순서는 palette_transpose_flag 사용하여 비트스트림에 명시적으로 시그널링 된다. 서브 섹션의 나머지 부분에 대해 스캔이 수평이라고 가정한다.
팔레트 인덱스는 두 가지 팔레트 샘플 모드를 사용하여 코딩된다: 'COPY_LEFT' 및 'COPY_ABOVE'. 'COPY_LEFT' 모드에서 팔레트 인덱스는 디코딩된 인덱스에 할당된다. COPY_ABOVE' 모드에서, 위의 행에 있는 샘플의 팔레트 인덱스가 복사된다. 'COPY_LEFT' 및 'COPY_ABOVE' 모드 모두에 대해, 동일한 모드를 사용하여 코딩된 후속 샘플의 수를 지정하는 실행 값(run value)이 시그널링 된다.
팔레트 모드에서, 이스케이프 기호에 대한 인덱스 값은 팔레트 항목(palette entry)의 수이다. 그리고, 이스케이프 기호가 'COPY_LEFT' 또는 'COPY_ABOVE' 모드에서 실행의 일부인 경우, 이스케이프 컴포넌트 값은 각 이스케이프 기호에 대해 시그널링 된다. 팔레트 인덱스의 코딩은 도 4에 설명되어 있다.
이 신택스 순서(syntax order)는 다음과 같이 수행된다. 먼저 CU에 대한 인덱스 값의 개수가 시그널링 된다. 그 다음에는 잘린 이진 코딩(truncated binary coding)을 사용하여 전체 CU에 대한 실제 인덱스 값의 시그널링이 이어진다. 인덱스 값뿐만 아니라 인텍스 개수 모두 바이패스 모드(bypass mode)에서 코딩된다. 인덱스 관련 바이패스 빈(bypass bins)을 함께 그룹화한다. 그런 다음 팔레트 샘플 모드(필요한 경우)와 실행이 인터리브 방식으로 시그널링 된다. 마지막으로 전체 CU의 이스케이프 기호에 해당하는 컴포넌트 이스케이프 값은 함께 그룹화되고 바이패스 모드에서 코딩된다. 이스케이프 기호의 이진화는 3차 EG 코딩, 즉 EG-3이다.
추가 신택스 요소인 last_run_type_flag 인덱스 값을 시그널링 한 후 시그널링 된다. 이 신택스 요소는 인덱스 수와 함께 블록의 마지막 실행에 해당하는 실행 값을 시그널링 할 필요가 없다.
HEVC-SCC에서는 팔레트 모드가 4:2:2, 4:2:0 및 흑백 크로마 형식에도 사용할 수 있다. 팔레트 항목 및 팔레트 인덱스의 시그널링은 모든 크로마 포맷에 대해 거의 동일하다. 흑백 포맷이 아닌(non-monochrome formats) 경우, 각각의 팔레트 항목은 3개의 컴포넌트들로 구성된다. 흑백 포맷의 경우, 각 팔레트 항목은 단일 컴포넌트로 구성된다. 서브 샘플링된 크로마 방향(chroma directions)에 대해, 크로마 샘플은 2로 나눌 수 있는 루마 샘플 인덱스들과 연관된다. CU에 대한 팔레트 인덱스를 재구성한 후, 샘플이 샘플에 연관된 단일 컴포넌트만 가지고 있는 경우 팔레트 항목의 제1 컴포넌트만 사용된다. 시그널링의 유일한 차이점은 이스케이프 컴포넌트 값이다. 각 이스케이프 기호에 대해, 신호되는 이스케이프 컴포넌트 값의 수는 해당 기호와 연관된 컴포넌트의 수에 따라 다를 수 있다.
도 4는 팔레트 인덱스의 예시적인 코딩을 도시한다.
또한, 팔레트 인덱스 코딩(palette index coding)에는 인덱스 조정 프로세스(index adjustment process)가 있다. 팔레트 인덱스를 시그널링할 때, 왼쪽 이웃 인덱스 또는 위쪽 이웃 인덱스는 현재 인덱스와 달라야 한다. 따라서, 현재 팔레트 인덱스의 범위는 하나의 가능성을 제거하여 1만큼 줄일 수 있다. 그 후, 인덱스는 잘린 이진(TB) 이진화로 시그널링된다.
이 부분과 관련된 텍스트는 다음과 같이 도시되고, 여기서 CurrPaletteIndex는 현재 팔레트 인덱스이고 adjustRefPaletteIndex는 예측 인덱스이다.
PaletteIndexMap [xC] [yC] 변수는 CurrentPaletteEntries가 나타내는 어레이에 대한 인덱스인 팔레트 인덱스를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. PaletteIndexMap [xC] [yC]의 값은 0에서 MaxPaletteIndex까지의 범위에 있어야 한다.
조정된RefPaletteIndex 변수는 다음과 같이 유도된다:
CopyAboveIndicesFlag [xC] [yC]가 0일 때, 변수 CurrPaletteIndex는 다음과 같이 유도된다:
if (CurrPaletteIndex >= adjustRefPaletteIndex)
CurrPaletteIndex++
또한, 팔레트 모드의 실행 길이 요소(run length element)는 컨텍스트 코딩(context coded)된다. JVET-O2011-vE에 설명된 관련 컨텍스트 유도 프로세스는 다음과 같다.
신택스 요소 palette_run_prefix에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 빈 인덱스 binIdx 및 신택스 요소 copy_above_palette_indices_flag 및 palette_idx_idc이다.
이 프로세스의 출력은 변수 ctxInc이다.
변수 ctxInc는 다음과 같이 유도된다:
- copy_above_palette_indices_flag가 0이고 binIdx가 0으면, ctxInc는 다음과 같이 유도된다:
ctxInc = (palette_idx_idc < 1) ? 0 : ( (palette_idx_idc < 3) ? 1 : 2) (9-69)
- 그렇지 않으면, ctxInc가 표 1에 의해 제공된다:
binIdx | 0 | 1 | 2 | 3 | 4 | > 4 |
copy_above_palette_indices_flag = = 1 | 5 | 6 | 6 | 7 | 7 | 바이패스 |
copy_above_palette_indices_flag = = 0 | 0, 1, 2 | 3 | 3 | 4 | 4 | 바이패스 |
2.2 VVC의 팔레트 모드
2.2.1 이중 트리의 팔레트
VVC에서, 이중 트리 코딩 구조는 인트라 슬라이스를 코딩하는 데 사용되므로 루마 컴포넌트와 두 개의 크로마 컴포넌트는 다른 팔레트 및 팔레트 인덱스를 가질 수 있다. 또한, 두 크로마 컴포넌트는 동일한 팔레트 및 팔레트 인덱스를 공유한다.
2.2.2 별도 모드로서의 팔레트
일부 실시예에서, 코딩 유닛에 대한 예측 모드는 MODE_INTRA, MODE_INTER, MODE_IBC 및 MODE_PLT일 수 있다. 이에 따라 예측 모드의 이진화가 변경된다.
IBC가 꺼지면, I 타일에서 현재 예측 모드가 MODE_PLT인지 여부를 나타내는 첫 번째 빈이 사용된다. P/B 타일에 있는 동안 첫 번째 빈은 현재 예측 모드가 MODE_INTRA인지 여부를 나타내는 데 사용된다. 그렇지 않은 경우, 현재 예측 모드가 MODE_PLT 또는 MODE_INTER임을 나타내기 위해 하나의 추가 빈이 사용된다.
IBC가 켜져 있을 때 I 타일에서 첫 번째 빈은 현재 예측 모드가 MODE_IBC인지 여부를 나타내는 데 사용된다. 그렇지 않은 경우, 현재 예측 모드가 MODE_PLT 또는 MODE_INTRA인지 여부를 나타내기 위해 두 번째 빈이 사용된다. P/B 타일에 있는 동안 첫 번째 빈은 현재 예측 모드가 MODE_INTRA인지 여부를 나타내는 데 사용된다. 인트라 모드인 경우 현재 예측 모드가 MODE_PLT 또는 MODE_INTRA임을 나타내기 위해 두 번째 빈이 사용된다. 그렇지 않은 경우, 현재 예측 모드가 MODE_IBC 또는 MODE_INTER임을 나타내기 위해 두 번째 빈이 사용된다.
예제 텍스트는 다음과 같이 도시된다.
2.2.3 팔레트 모드 신택스
2.2.4 팔레트 모드 시맨틱
다음 시맨틱에서, 어레이 인덱스 x0, y0은 픽처의 왼쪽 상단 루마 샘플을 기준으로 고려된 코딩 블록의 왼쪽 상단 루마 샘플의 위치(x0, y0)를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. 어레이 인덱스 startComp는 현재 팔레트 테이블의 첫 번째 컬러 컴포넌트를 지정한다. startComp가 0으면, Y 컴포넌트를 나타내고; 1과 동일한 startComp는 Cb 컴포넌트를 나타내고; 2와 동일한 startComp는 Cr 컴포넌트를 나타낸다. numComps는 현재 팔레트 테이블의 컬러 컴포넌트 수를 지정한다.
예측자 팔레트(predictor palette)는 현재 팔레트의 항목을 예측하는 데 사용되는 이전 코딩 유닛의 팔레트 항목으로 구성된다.
변수 PredictorPaletteSize [startComp]는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대한 예측 팔레트의 크기를 지정한다. PredictorPaletteSize는 8.4.5.3절에 지정된 대로 유도된다.
1과 동일한 변수 PalettePredictorEntryReuseFlags [i]는 예측자 팔레트의 i번째 항목이 현재 팔레트에서 재사용됨을 지정한다. 0과 동일한 PalettePredictorEntryReuseFlags [i]는 예측자 팔레트의 i번째 항목이 현재 팔레트의 항목이 아님을 지정한다. PalettePredictorEntryReuseFlags [i] 어레이의 모든 요소는 0으로 초기화된다.
palette_predictor_run은 PalettePredictorEntryReuseFlags 어레이에서 0이 아닌 항목 앞에 오는 0의 수를 결정하는 데 사용된다.
palette_predictor_run의 값이 0에서 (PredictorPaletteSize-predictorEntryIdx)까지의 범위에 있어야 하는 것은 비트스트림 적합성의 요구사항이고, 여기서 predictorEntryIdx는 PalettePredictorEntryReuseFlags 어레이의 현재 위치에 해당한다. NumPredictedPaletteEntries 변수는 예측자 팔레트에서 재사용되는 현재 팔레트의 항목 수를 지정한다. NumPredictedPaletteEntries의 값은 0에서 palette_max_size의 범위에 포함되어 있어야 한다.
num_signalled_palette_entries는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대해 명시적으로 시그널링되는 현재 팔레트의 항목 수를 지정한다.
num_signalled_palette_entries가 없으면, 0과 같은 것으로 유추된다.
CurrentPaletteSize [startComp] 변수는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대한 현재 팔레트의 크기를 지정하며 다음과 같이 유도된다:
CurrentPaletteSize [startComp] = NumPredictedPaletteEntries + num_signalled_palette_entries (7-155)
CurrentPaletteSize [startComp]의 값은 0에서 palette_max_size를 포함하는 범위에 있어야 한다.
new_palette_entries [cIdx] [i]는 컬러 컴포넌트 cIdx에 대한 i번째 시그널링된 팔레트 항목에 대한 값을 지정한다.
변수 PredictorPaletteEntries [cIdx] [i]는 컬러 컴포넌트 cIdx에 대한 예측자 팔레트의 i번째 요소를 지정한다.
CurrentPaletteEntries [cIdx] [i] 변수는 컬러 컴포넌트 cIdx에 대한 현재 팔레트의 i번째 요소를 지정하고, 다음과 같이 유도된다:
1과 동일한 palette_escape_val_present_flag는 현재 코딩 유닛이 적어도 하나의 이스케이프 코딩된 샘플을 포함함을 지정한다. 0과 동일한 escape_val_present_flag는 현재 코딩 유닛에 이스케이프 코딩된 샘플이 없음을 지정한다. 존재하지 않는 경우, palette_escape_val_present_flag의 값은 1과 동일한 것으로 유추된다.
MaxPaletteIndex 변수는 현재 코딩 유닛에 대한 팔레트 인덱스에 대해 가능한 최대 값을 지정한다. MaxPaletteIndex의 값은 CurrentPaletteSize [startComp] -1+palette_escape_val_present_flag와 동일하게 설정된다.
num_palette_indices_minus1 더하기 1은 현재 블록에 대해 명시적으로 시그널링되거나 유추된 팔레트 인덱스의 수이다.
num_palette_indices_minus1이 없으면, 0과 같은 것으로 유추된다.
palette_idx_idc는 팔레트 표, CurrentPaletteEntries에 대한 인덱스의 표시이다. palette_idx_idc의 값은 블록의 첫 번째 인덱스에 대해 0에서 MaxPaletteIndex까지의 범위에 포함되어 있어야 하고 블록의 나머지 인덱스에 대해 0에서 (MaxPaletteIndex-1)까지의 범위에 포함되어 있어야 한다.
palette_idx_idc가 존재하지 않으면, 0과 같은 것으로 유추된다.
PaletteIndexIdc [i] 변수는 명시적으로 시그널링되거나 유추된 i번째 palette_idx_idc를 저장한다. 어레이 PaletteIndexIdc [i]의 모든 요소는 0으로 초기화된다.
1과 동일한 copy_above_indices_for_final_run_flag는 코딩 유닛의 마지막 위치의 팔레트 인덱스가 수평 횡단 스캔이 사용되는 경우 위쪽 행의 팔레트 인덱스 또는 수직 횡단 스캔이 사용되는 경우 왼쪽 열의 팔레트 인덱스로부터 복사되는 것을 지정한다. 0과 동일한 copy_above_indices_for_final_run_flag는 코딩 유닛의 마지막 위치의 팔레트 인덱스가 PaletteIndexIdc [num_palette_indices_minus1]로부터 복사되는 것을 지정한다.
copy_above_indices_for_final_run_flag가 존재하지 않는 경우, 0과 동일한 것으로 유추된다.
1과 동일한 palette_transpose_flag는 현재 코딩 유닛의 샘플에 대한 인덱스를 스캔하기 위해 수직 횡단 스캔이 적용됨을 지정한다. 0과 동일한 palette_transpose_flag는 현재 코딩 유닛의 샘플에 대한 인덱스를 스캔하기 위해 수평 횡단 스캔이 적용됨을 지정한다. 존재하지 않는 경우, palette_transpose_flag의 값은 0과 동일한 것으로 유추된다.
TraverseScanOrder 어레이는 팔레트 코딩을 위한 스캔 순서 어레이(scan order array)를 지정한다. palette_transpose_flag가 0과 같으면, TraverseScanOrder에 수평 스캔 순서 HorTravScanOrder가 할당되고 palette_transpose_flag가 1과 같으면, TraverseScanOrder에 수직 스캔 순서 VerTravScanOrder가 할당된다.
1과 동일한 copy_above_palette_indices_flag는 팔레트 인덱스가 수평 횡단 스캔이 사용되는 경우 위쪽 행의 동일한 위치 또는 수직 횡단 스캔이 사용되는 경우 왼쪽 열의 동일한 위치에서 팔레트 인덱스와 동일함을 지정한다. 0과 동일한 copy_above_palette_indices_flag는 샘플의 팔레트 인덱스의 표시가 비트스트림에서 코딩되거나 유추됨을 지정한다.
1과 동일한 변수 CopyAboveIndicesFlag [xC] [yC]는 팔레트 인덱스가 위의 행(수평 스캔) 또는 왼쪽 열(수직 스캔)의 팔레트 인덱스에서 복사됨을 지정한다. 0과 동일한 CopyAboveIndicesFlag [xC] [yC]는 팔레트 인덱스가 비트스트림에서 명시적으로 코딩되거나 유추됨을 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. PaletteIndexMap [xC] [yC]의 값은 0에서 (MaxPaletteIndex -1)까지의 범위에 있어야 한다.
PaletteIndexMap [xC] [yC] 변수는 CurrentPaletteEntries가 나타내는 어레이에 대한 인덱스인 팔레트 인덱스를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. PaletteIndexMap [xC] [yC]의 값은 0에서 MaxPaletteIndex까지의 범위에 있어야 한다.
조정된RefPaletteIndex 변수는 다음과 같이 유도된다:
CopyAboveIndicesFlag [xC] [yC]가 0일 때, 변수 CurrPaletteIndex는 다음과 같이 유도된다:
if (CurrPaletteIndex >= adjustRefPaletteIndex)
CurrPaletteIndex++ (7-158)
palette_run_prefix가 있는 경우, PaletteRunMinus1의 이진화에서 접두사 부분을 지정한다.
palette_run_suffix는 PaletteRunMinus1 변수의 유도에 사용된다. 존재하지 않는 경우, palette_run_suffix의 값은 0과 같은 것으로 유추된다.
RunToEnd가 0이면, PaletteRunMinus1 변수는 다음과 같이 유도된다:
- PaletteMaxRunMinus1이 0이면, PaletteRunMinus1은 0으로 설정된다.
- 그렇지 않으면(PaletteMaxRunMinus1이 0보다 큼) 다음이 적용된다:
- palette_run_prefix가 2보다 작으면, 다음이 적용된다:
PaletteRunMinus1= palette_run_prefix (7-159)
- 그렇지 않으면(palette_run_prefix가 2보다 크거나 같음) 다음이 적용된다:
PrefixOffset = 1<< (palette_run_prefix-1)
PaletteRunMinus1= PrefixOffset + palette_run_suffix (7-160)
PaletteRunMinus1 변수는 다음과 같이 사용된다:
- CopyAboveIndicesFlag [xC] [yC]가 0과 같으면, PaletteRunMinus1은 동일한 팔레트 인덱스를 가진 연속 위치의 수에서 1을 뺀 값을 지정한다.
- 그렇지 않고 palette_transpose_flag가 0과 같으면, PaletteRunMinus1은 위쪽 행의 해당 위치에서 사용된 것과 동일한 팔레트 인덱스를 사용하여 연속 위치 수에서 1을 뺀 값을 지정한다.
- 그렇지 않으면, PaletteRunMinus1은 왼쪽 열의 해당 위치에 사용된 것과 동일한 팔레트 인덱스를 사용하여 연속 위치 수에서 1을 뺀 값을 지정한다.
RunToEnd가 0과 같을 때, 변수 PaletteMaxRunMinus1은 PaletteRunMinus1에 대해 가능한 최대 값을 나타내고 PaletteMaxRunMinus1의 값이 0보다 크거나 같아야 하는 비트스트림 적합성의 요구 사항이다.
palette_escape_val은 컴포넌트에 대한 양자화된 이스케이프 코딩된 샘플 값을 지정한다.
PaletteEscapeVal [cIdx] [xC] [yC] 변수는 PaletteIndexMap [xC] [yC]가 MaxPaletteIndex와 동일하고 palette_escape_val_present_flag가 1과 동일한 샘플의 이스케이프 값을 지정한다. 어레이 인덱스 cIdx는 컬러 컴포넌트를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다.
PaletteEscapeVal [cIdx] [xC] [yC]는, cIdx가 0인 경우, 0에서 (1<< (BitDepthY+1) ) -1의 범위, 및 cIdx가 0이 아닌 경우, 0에서 (1<< (BitDepthC+1) ) -1의 범위에 포함되어 있어야 하는 비트스트림 적합성의 요구 사항이다.
2.2.5 라인 기반 CG 팔레트 모드(Line based CG palette mode)
라인 기반 CG 팔레트 모드는 VVC에 채택되었다. 이 방법에서, 팔레트 모드의 각 CU는 횡단 스캔 모드를 기반으로 m 샘플(이 테스트에서는 m=16)의 여러 세그먼트로 나뉜다. 각 세그먼트에서 팔레트 실행 코딩(run coding)을 위한 인코딩 순서(encoding order)는 다음과 같다: 각 픽셀에 대해, 1 컨텍스트 코딩된 bin run_copy_flag = 0은 픽셀이 이전 픽셀과 동일한 모드인지, 즉 이전 스캔 픽셀과 현재 픽셀이 모두 실행 유형 COPY_ABOVE이거나 또는 이전 스캔 픽셀 및 현재 픽셀이 모두 실행 유형 INDEX이고 동일한 인덱스 값인지를 나타내는 시그널링된다. 그렇지 않으면, run_copy_flag = 1이 신호된다. 픽셀과 이전 픽셀이 다른 모드이면, 픽셀의 실행 유형, 즉 INDEX 또는 COPY_ABOVE를 나타내는 하나의 컨텍스트 코딩된 빈 copy_above_palette_indices_flag가 시그널링된다. VTM6.0의 팔레트 모드와 동일하게, INDEX 모드가 기본적으로 사용되기 때문에, 샘플이 첫 번째 행(수평 횡단 스캔) 또는 첫 번째 열(수직 횡단 스캔)에 있는 경우 디코더는 실행 유형을 신택스 분석할 필요가 없다. 또한, 디코더는 이전에 신택스 분석된 실행 유형이 COPY_ABOVE인 경우 실행 유형을 신택스 분석할 필요가 없다. 한 세그먼트에서 픽셀의 팔레트 실행 코딩 후, 인덱스 값(INDEX 모드의 경우) 및 양자화된 이스케이프 컬러는, 각 라인 CG 내의 처리량을 향상시키기 위해, 바이패스 코딩되고 컨텍스트 코딩된 빈의 인코딩/파싱과 별도로 그룹화된다. 인덱스 값은 이제 VTM에서와 같이 팔레트 실행 코딩 전에 처리되는 대신 실행 코딩 후에 코딩/파싱되므로, 인코더는 인덱스 값 num_palette_indices_minus1의 수와 마지막 실행 유형 copy_above_indices_for_final_run_flag를 시그널링할 필요가 없다.
일부 실시예에서 라인 기반 CG 팔레트 모드의 텍스트는 다음과 같이 도시된다.
팔레트 코딩 신택스
7.4.9.6 팔레트 코딩 시맨틱
다음 시맨틱에서, 어레이 인덱스 x0, y0은 픽처의 왼쪽 상단 루마 샘플을 기준으로 고려된 코딩 블록의 왼쪽 상단 루마 샘플의 위치(x0, y0)를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. 어레이 인덱스 startComp는 현재 팔레트 테이블의 첫 번째 컬러 컴포넌트를 지정한다. startComp가 0으면, Y 컴포넌트를 나타내고; 1과 동일한 startComp는 Cb 컴포넌트를 나타내고; 2와 동일한 startComp는 Cr 컴포넌트를 나타낸다. numComps는 현재 팔레트 테이블의 컬러 컴포넌트 수를 지정한다.
예측자 팔레트(predictor palette)는 현재 팔레트의 항목을 예측하는 데 사용되는 이전 코딩 유닛의 팔레트 항목으로 구성된다.
변수 PredictorPaletteSize [startComp]는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대한 예측 팔레트의 크기를 지정한다. PredictorPaletteSize는 8.4.5.3절에 지정된 대로 유도된다.
1과 동일한 변수 PalettePredictorEntryReuseFlags [i]는 예측자 팔레트의 i번째 항목이 현재 팔레트에서 재사용됨을 지정한다. 0과 동일한 PalettePredictorEntryReuseFlags [i]는 예측자 팔레트의 i번째 항목이 현재 팔레트의 항목이 아님을 지정한다. PalettePredictorEntryReuseFlags [i] 어레이의 모든 요소는 0으로 초기화된다.
palette_predictor_run은 PalettePredictorEntryReuseFlags 어레이에서 0이 아닌 항목 앞에 오는 0의 수를 결정하는 데 사용된다.
palette_predictor_run의 값이 0에서 (PredictorPaletteSize-predictorEntryIdx)까지의 범위에 있어야 하는 것은 비트스트림 적합성의 요구사항이고, 여기서 predictorEntryIdx는 PalettePredictorEntryReuseFlags 어레이의 현재 위치에 해당한다. NumPredictedPaletteEntries 변수는 예측자 팔레트에서 재사용되는 현재 팔레트의 항목 수를 지정한다. NumPredictedPaletteEntries의 값은 0에서 palette_max_size의 범위에 포함되어 있어야 한다.
num_signalled_palette_entries는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대해 명시적으로 시그널링되는 현재 팔레트의 항목 수를 지정한다.
num_signalled_palette_entries가 없으면, 0과 같은 것으로 유추된다.
CurrentPaletteSize [startComp] 변수는 현재 팔레트 테이블 startComp의 첫 번째 컬러 컴포넌트에 대한 현재 팔레트의 크기를 지정하며 다음과 같이 유도된다:
CurrentPaletteSize [startComp] = NumPredictedPaletteEntries + num_signalled_palette_entries (7-155)
CurrentPaletteSize [startComp]의 값은 0에서 palette_max_size를 포함하는 범위에 있어야 한다.
new_palette_entries [cIdx] [i]는 컬러 컴포넌트 cIdx에 대한 i번째 시그널링된 팔레트 항목에 대한 값을 지정한다.
변수 PredictorPaletteEntries [cIdx] [i]는 컬러 컴포넌트 cIdx에 대한 예측자 팔레트의 i번째 요소를 지정한다.
CurrentPaletteEntries [cIdx] [i] 변수는 컬러 컴포넌트 cIdx에 대한 현재 팔레트의 i번째 요소를 지정하고, 다음과 같이 유도된다:
numPredictedPaletteEntries = 0
for( i = 0; i < PredictorPaletteSize[ startComp ]; i++ )
if( PalettePredictorEntryReuseFlags[ i ] ) {
for( cIdx =startComp; cIdx < ( startComp + numComps ); cIdx++ )
CurrentPaletteEntries[ cIdx ][ numPredictedPaletteEntries ] = PredictorPaletteEntries[ cIdx ][ i ]
numPredictedPaletteEntries++
}
for( cIdx = startComp; cIdx < (startComp + numComps); cIdx++)
(7-156)
for( i = 0; i < num_signalled_palette_entries[startComp]; i++ )
CurrentPaletteEntries[ cIdx ][ numPredictedPaletteEntries + i ] = new_palette_entries[ cIdx ][ i ]
1과 동일한 palette_escape_val_present_flag는 현재 코딩 유닛이 적어도 하나의 이스케이프 코딩된 샘플을 포함함을 지정한다. 0과 동일한 escape_val_present_flag는 현재 코딩 유닛에 이스케이프 코딩된 샘플이 없음을 지정한다. 존재하지 않는 경우, palette_escape_val_present_flag의 값은 1과 동일한 것으로 유추된다.
MaxPaletteIndex 변수는 현재 코딩 유닛에 대한 팔레트 인덱스에 대해 가능한 최대 값을 지정한다. MaxPaletteIndex의 값은 CurrentPaletteSize [startComp] -1+palette_escape_val_present_flag와 동일하게 설정된다. palette_idx_idc는 팔레트 테이블 CurrentPaletteEntries에 대한 인덱스의 표시이다. palette_idx_idc의 값은 블록의 첫 번째 인덱스에 대해 0에서 MaxPaletteIndex까지의 범위에 포함되어 있어야 하고 블록의 나머지 인덱스에 대해 0에서 (MaxPaletteIndex-1)까지의 범위에 포함되어 있어야 한다.
palette_idx_idc가 존재하지 않으면, 0과 같은 것으로 유추된다.
1과 동일한 palette_transpose_flag는 현재 코딩 유닛의 샘플에 대한 인덱스를 스캔하기 위해 수직 횡단 스캔이 적용됨을 지정한다. 0과 동일한 palette_transpose_flag는 현재 코딩 유닛의 샘플에 대한 인덱스를 스캔하기 위해 수평 횡단 스캔이 적용됨을 지정한다. 존재하지 않는 경우, palette_transpose_flag의 값은 0과 동일한 것으로 유추된다.
TraverseScanOrder 어레이는 팔레트 코딩을 위한 스캔 순서 어레이(scan order array)를 지정한다. palette_transpose_flag가 0과 같으면, TraverseScanOrder에 수평 스캔 순서 HorTravScanOrder가 할당되고 palette_transpose_flag가 1과 같으면, TraverseScanOrder에 수직 스캔 순서 VerTravScanOrder가 할당된다.
1과 동일한 run_copy_flag는, copy_above_palette_indices_flag가 0인 경우 팔레트 실행 유형은 이전에 스캔한 위치의 실행 유형과 동일하고 팔레트 실행 인덱스는 이전 위치의 인덱스와 동일한 것으로 지정한다. 그렇지 않으면, run_copy_flag가 0이다.
1과 동일한 copy_above_palette_indices_flag는, 팔레트 인덱스가 수평 횡단 스캔이 사용되는 경우, 위쪽 행의 동일한 위치 또는 수직 횡단 스캔이 사용되는 경우 왼쪽 열의 동일한 위치에서 팔레트 인덱스와 동일함을 지정한다. 0과 동일한 copy_above_palette_indices_flag는 샘플의 팔레트 인덱스의 표시가 비트스트림에서 코딩되거나 유추됨을 지정한다.
1과 동일한 변수 CopyAboveIndicesFlag [xC] [yC]는 팔레트 인덱스가 위의 행(수평 스캔) 또는 왼쪽 열(수직 스캔)의 팔레트 인덱스에서 복사됨을 지정한다. 0과 동일한 CopyAboveIndicesFlag [xC] [yC]는 팔레트 인덱스가 비트스트림에서 명시적으로 코딩되거나 유추됨을 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다.
PaletteIndexMap [xC] [yC] 변수는 CurrentPaletteEntries가 나타내는 어레이에 대한 인덱스인 팔레트 인덱스를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다. PaletteIndexMap [xC] [yC]의 값은 0에서 MaxPaletteIndex까지의 범위에 있어야 한다.
조정된RefPaletteIndex 변수는 다음과 같이 유도된다:
CopyAboveIndicesFlag [xC] [yC]가 0일 때 변수 CurrPaletteIndex는 다음과 같이 유도된다:
if (CurrPaletteIndex >= adjustRefPaletteIndex)
CurrPaletteIndex++ (7-158)
palette_escape_val은 컴포넌트에 대한 양자화된 이스케이프 코딩된 샘플 값을 지정한다.
PaletteEscapeVal [cIdx] [xC] [yC] 변수는 PaletteIndexMap [xC] [yC]가 MaxPaletteIndex와 동일하고 palette_escape_val_present_flag가 1과 동일한 샘플의 이스케이프 값을 지정한다. 어레이 인덱스 cIdx는 컬러 컴포넌트를 지정한다. 어레이 인덱스 xC, yC는 픽처의 왼쪽 상단 루마 샘플을 기준으로 샘플의 위치(xC, yC)를 지정한다.
PaletteEscapeVal [cIdx] [xC] [yC]는, cIdx가 0인 경우, 0에서 (1<< (BitDepthY+1) ) -1의 범위, 및 cIdx가 0이 아닌 경우, 0에서 (1<< (BitDepthC+1) ) -1의 범위에 포함되어 있어야 하는 비트스트림 적합성의 요구 사항이다.
2.3 VVC의 로컬 이중 트리
일반적인 하드웨어 비디오 인코더 및 디코더에서, 이웃 인트라 블록 사이의 샘플 처리 데이터 종속성으로 인해 픽처가 더 작은 인트라 블록을 가질 때 처리량이 떨어진다. 인트라 블록의 예측자 생성은 이웃 블록의 상단 및 왼쪽 경계 재구성된 샘플을 필요로 한다. 따라서, 인트라 예측은 블록별로 순차적으로 처리되어야 한다.
HEVC에서, 가장 작은 내부 CU는 8x8 루마 샘플(luma sample)이다. 가장 작은 인트라 CU의 루마 컴포넌트는 4개의 4x4 루마 인트라 예측 유닛(PU)로 더 분할될 수 있지만, 가장 작은 인트라 CU의 크로마 컴포넌트는 더 이상 분할될 수 없다. 따라서, 4x4 크로마 인트라 블록 또는 4x4 루마 인트라 블록이 처리될 때 최악의 하드웨어 처리량이 발생한다.
VTM5.0에서, 단일 코딩 트리에서 크로마 파티션은 항상 루마를 따르고 가장 작은 인트라 CU는 4x4 루마 샘플이기 때문에, 가장 작은 크로마 인트라 CB는 2x2이다. 따라서, VTM5.0에서, 단일 코딩 트리(single coding tree)에서 가장 작은 크로마 인트라(chroma intra) CB는 2x2이다. VVC 디코딩에 대한 최악의 하드웨어 처리 처리량은 HEVC 디코딩의 경우의 1/4에 불과한다. 더욱이, 크로마 인트라 CB의 재구성 프로세스(reconstruction process)는, CCLM(크로스 컴포넌트 선형 모델), 4탭 보간 필터, PDPC(위치 종속 인트라 예측 조합) 및 CIIP(결합 인트라 예측)를 포함하는, 도구를 채택한 후 HEVC에서보다 훨씬 더 복잡해진다. 하드웨어 디코더(hardware decoder)에서 높은 처리량을 달성하는 것은 어렵다. 이 절에서, 최악의 경우 하드웨어 처리량을 향상시키는 방법을 제안한다.
이 방법의 목표는 크로마 인트라 CB의 분할을 제한하여 16개 크로마 샘플보다 작은 크로마 인트라 CB를 허용하지 않는 것이다.
단일 코딩 트리에서, SCIPU는 크로마 블록 크기가 TH 크로마 샘플보다 크거나 같고 4TH 루마 샘플보다 작은 자식 루마 블록(child luma block)이 하나 이상 있는 코딩 트리 노드로 정의되고, 여기서 TH는 이 기여에서 16으로 설정된다. 각 SCIPU에서 모든 CB가 인터이거나 모든 CB가 비인터, 즉, 인트라 또는 IBC이어야 한다. 비인터(non-inter) SCIPU의 경우, 비인터 SCIPU의 크로마가 더 이상 분할되지 않아야 하고 SCIPU의 루마가 더 분할될 수 있어야 한다. 이와 같이 하여, 가장 작은 크로마 인트라 CB 크기는 16개의 크로마 샘플이고, 2x2, 2x4, 4x2 크로마 CB가 제거된다. 또한, 비인터(non-inter) SCIPU의 경우, 크로마 스케일링(chroma scaling)을 적용하지 않는다. 또한, 루마 블록이 더 분할되고 크로마 블록이 분할되지 않으면, 로컬 이중 트리 코딩 구조(local dual tree coding structure)가 구성된다.
2개의 SCIPU 예가 도 5a-5b에 나와 있다. 도 5a에서, 8x4 크로마 샘플의 1개 크로마 CB와 3개의 루마 CB(4x8, 8x8, 4x8 루마 CB)는, 8x4 크로마 샘플에서 분할된 삼진 트리(ternary tree)(TT)가 16개 크로마 샘플보다 작은 크로마 CB를 생성하기 때문에, 하나의 SCIPU를 형성한다. 도 5b에서, 4x4 크로마 샘플(8x4 크로마 샘플의 왼쪽)의 크로마 CB 하나와 3개의 루마 CB(8x4, 4x4, 4x4 루마 CB)가 하나의 SCIPU를 형성하고, 4x4 샘플의 다른 하나의 크로마 CB(8x4 크로마 샘플의 오른쪽)와 2개의 루마 CB(8x4, 8x4 루마 CB)는, 4x4 크로마 샘플에서 BT(바이너리 트리) 분할로 인해 16개 크로마 샘플보다 작은 크로마 CB가 생성되기 때문에, 하나의 SCIPU를 형성한다.
제안된 방법에서, SCIPU의 유형은 현재 슬라이스가 I-슬라이스이거나 한 번 더 분할한 후 현재 SCIPU에 4x4 루마 파티션이 있는 경우 비인터(non-inter)로 유추된다(인터(inter) 4x4가 허용되지 않기 때문에 VVC); 그렇지 않으면, SCIPU의 유형(인터 또는 비인터)은 SCIPU의 CU를 신택스 분석하기 전에 하나의 시그널링된 플래그로 표시된다.
위의 방법을 적용하면, 2x2 크로마 블록 대신, 4x4, 2x8 또는 8x2 크로마 블록을 처리할 때 최악의 하드웨어 처리량이 발생한다. 최악의 경우 하드웨어 처리량은 HEVC와 동일하며 VTM5.0의 4배이다.
2.4 트랜스폼 스킵(TS)
HEVC에서와 같이, 블록의 잔차(residual)는 트랜스폼 스킵 모드(transform skip mode)로 코딩 될 수 있다. 신택스 코딩(syntax coding)의 중복을 방지하려면, 변현 스킵 플래그(transform skip flag)는 CU 레벨 AMT 플래그가 0이 아닐 때 시그널링 하지 않는다. 트랜스폼 스킵(transform skip)에 대한 블록 크기 제한은 JEM4의 MTS와 동일하고, 이는 블록 너비와 높이가 32미만일 때 트랜스폼 스킵이 CU에 적용가능하다는 것을 나타낸다. 현재 CU에 대해 LFNST 또는 MIP가 활성화되면 암시적 MTS 트랜스폼이 DCT2로 설정되는 것에 유의하라. 또한, MTS가 인터 코딩된 블록에 대해 활성화된 경우에도 암시적 MTS가 활성화될 수 있다.
또한, 트랜스폼 스킵 블록(transform skip block)의 경우, 최소 허용 양자화 파라미터(Quantization Parameter)(QP)는 6*(internalBitDepth - inputBitDepth) + 4로 정의된다.
2.5 대체 루마 반픽셀 보간 필터(Alternative luma half-pel interpolation filters)
일부 실시예에서, 대체 반픽셀 보간 필터(alternative half-pel interpolation filter)가 제안된다.
반픽셀 루마 보간 필터의 전환은 모션 벡터 정확도에 따라 수행된다. 기존의 1/4 픽셀, 전체 픽셀 및 4 픽셀 AMVR 모드에 추가하여, 새로운 반픽셀 정확도(half-pel accuracy) AMVR 모드가 도입되었다. 반픽셀 모션 벡터 정확도의 경우에만, 대체 반픽셀 루마 보간 필터를 선택할 수 있다.
반픽셀 모션 벡터 정확도(즉, 반픽셀 AMVR 모드)를 사용하는 비-아핀 비-병합 인터 코딩된(non-affine non-merge inter-coded) CU의 경우, HEVC/VVC 반픽셀 루마 보간 필터(half-pel luma interpolation filter)와 하나 이상의 대체 반픽셀 보간(alternative half-pel interpolation) 사이의 전환은 새로운 신택스 요소 hpelIfIdx의 값에 기초한다. 신택스 요소 hpelIfIdx는 반픽셀 AMVR 모드의 경우에만 시그널링된다. 공간적 병합 후보를 사용하는 스킵/머지 모드의 경우, 신택스 요소 hpelIfIdx의 값은 이웃 블록으로부터 상속된다.
2.6 적응형 컬러 트랜스폼(Adaptive Color Transform)(ACT)
도 6은 ACT가 적용된 디코딩 흐름도를 도시한다. 도 6에 도시된 바와 같이, 컬러 공간 변환(color space conversion)은 잔차 영역(residual domain)에서 수행된다. 특히, YCgCo 도메인의 잔차를 다시 원래 도메인으로 변환하기 위해 역트랜스폼 후에 하나의 추가 디코딩 모듈, 즉 역 ACT가 도입된다.
VVC에서, 최대 트랜스폼 크기가 하나의 코딩 유닛(Coding Unit)(CU)의 너비 또는 높이보다 작지 않는 한, 하나의 CU 리프 노드(leaf node)도 트랜스폼 처리의 유닛으로 사용된다. 따라서, 제안된 구현에서 ACT 플래그는 하나의 CU가 해당 잔차를 코딩하기 위한 컬러 공간을 선택하도록 시그널링된다. 또한, HEVC ACT 설계에 따라, 인터(inter) 및 IBC CU에 대해 ACT는 CU에 0이 아닌 계수가 하나 이상 있는 경우에만 활성화된다. 인트라 CU의 경우, ACT는 크로마 컴포넌트가 루마 컴포넌트의 동일한 인트라 예측 모드, 즉 DM 모드를 선택할 때만 활성화된다.
컬러 공간 트랜스폼에 사용되는 핵심 트랜스폼은 HEVC에 사용된 것과 동일하게 유지된다. 구체적으로, 다음과 같이 설명된 대로 다음과 같은 순방향 및 역방향 YCgCo 컬러 트랜스폼 행렬이 적용된다.
또한, 컬러 트랜스폼 전후에 잔차 신호의 동적 범위 변화를 보상하기 위해 트랜스폼 잔차에 (-5, -5, -3)의 QP 조정이 적용된다.
반면에, 순방향 및 역방향 트랜스폼은 세 가지 컴포넌트 모두의 잔차에 액세스해야 한다. 이에 따라, 제안된 구현에서, ACT는 세 컴포넌트의 모든 잔차를 사용할 수 없는 다음 두 시나리오에서 비활성화된다.
1. 분리 트리 파티션(Separate-tree partition): 분리 트리가 적용되면 하나의 CTU 내부에 있는 루마 및 크로마 샘플이 서로 다른 구조로 파티션된다. 결과적으로 루마 트리의 CU에는 루마 컴포넌트만 포함되고 크로마 트리의 CU에는 두 개의 크로마 컴포넌트만 포함된다.
2. 내부 서브 파티션 예측(ISP): ISP 서브 파티션은 루마에만 적용되는 반면 크로마 신호는 파티션 없이 코딩된다. 현재 ISP 디자인에서 마지막 ISP 서브 파티션을 제외하고 다른 서브 파티션에는 루마 컴포넌트만 포함된다.
2.7 EG(k)를 사용한 이스케이프 값 이진화
이스케이프 값 이진화(escape value binarization)를 위해 EG(k)를 사용할 때, 기본 Qp가 충분히 크면(또는 코딩할 심볼이 충분히 작으면), EG(k)의 비트 길이는 더 이상 줄어들 수 없다. 예를 들어, 베이스 Qp >= 23일 때, EG(5)에 대해, 비트 길이는 6에 도달하는데, 이는 EG5에 대한 최소 비트 길이이다. 마찬가지로, 베이스 Qp >= 35일 때, 비트 길이는 EG3의 최소값에 도달한다. 베이스 Qp >= 29일 때, 비트 길이는 EG4의 최소값에 도달한다. 이 경우, Qp를 더 높으면, 비트 레이트(bit rate)가 줄어들지 않고 왜곡(distortion)이 증가한다. 이는 비트 낭비이다.
2.8 트랜스폼 스킵 모드의 계수 코딩
현재 VVC 초안에서, 트랜스폼 스킵 레벨의 통계 및 신호 특성에 잔차 코딩을 적응시키기 위해 비-TS 계수 코딩과 비교하여 트랜스폼 스킵(TS) 모드에서 계수 코딩(coefficients coding)에 대해 몇 가지 수정이 제안된다.
현재 VVC에서, 계수를 코딩하기 위해 트랜스폼 스킵 잔차 코딩 프로세스에서 3개의 스캔 패스가 사용된다. 제1 스캔 패스는 트랜스폼 계수 레벨(transform coefficient level)이 0보다 큰지 여부를 나타내는 신택스 요소 및 기타 관련 신택스 요소(예를 들어, sig_coeff_flag, coeff_sign_flag 및 par_level_flag)를 코딩하는 데 사용된다. 제2/X보다 큰 스캔 패스는 트랜스폼 계수 레벨이 X보다 큰지 여부를 나타내는 신택스 요소를 코딩하는 데 사용된다(예를 들어, X = 1, 2, 3, 4, 5). 제3/나머지 스캔 패스는 나머지 신택스 요소(예를 들어, abs_remainder 및 coeff_sign_flag)를 코딩하는 데 사용된다.
현재 VVC에서, 표 131과 같이 트랜스폼 계수 레벨의 부호를 나타내는 신택스 요소(예, coeff_sign_flag)가 바이패스 모드 또는 컨텍스트 코딩 모드로 코딩되는지 여부는 트랜스폼이 연관된 트랜스폼 블록에 적용되는지 또는 안되는지(예를 들어, transform_skip_flag)를 나타내는 신택스 요소, 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수, 현재 슬라이스(예를 들어, sh_ts_residual_coding_disabled_flag)에 대한 트랜스폼 스킵 블록의 잔여 샘플을 파싱(parsing)하기 위해 residual_coding () 신택스 구조가 사용되는지 여부를 나타내는 신택스 요소에 의존한다.
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
2.8.1 부호 플래그 coeff_sign_flag의 컨텍스트 모델링 및 컨텍스트 인덱스 오프셋 유도
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연관
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연관
표 125 - coeff_sign_flag의 ctxInc에 대한 initValue 및 shiftIdx 지정
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 ctxInc 할당
9.3.4.2.10 트랜스폼 스킵 모드에 대한 신택스 요소 coeff_sign_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 컬러 컴포넌트 인덱스 cIdx, 현재 픽처의 왼쪽 상단 샘플에 상대적인 현재 트랜스폼 블록의 왼쪽 상단 샘플을 지정하는 루마 위치(x0, y0), 현재 계수 스캔 위치(xC, yC)이다.
이 프로세스의 출력은 변수 ctxInc이다.
변수 leftSign 및 aboveSign은 다음과 같이 유도된다:
leftSign= (xC == 0) ? 0 : CoeffSignLevel [xC-1] [yC] (1594)
aboveSign = (yC == 0) ? 0 : CoeffSignLevel [xC] [yC-1] (1595)
변수 ctxInc는 다음과 같이 유도된다:
- leftSign이 0이고 aboveSign이 0인 경우, 또는 leftSign이 -aboveSign과 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ==0? 0: 3) (1596)
- 그렇지 않고, leftSign이 0보다 크거나 같고 aboveSign이 0보다 크거나 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ? 1: 4) (1597)
- 그렇지 않으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ? 2: 5) (1598)
3 여기에 설명된 기술 솔루션으로 해결된 기술적 문제 예
(1) 이스케이프 값에 대한 이진화 방법인 EG(k)는 Qp가 임계값보다 클 때 비트를 낭비할 수 있다.
(2) 팔레트 크기가 로컬 이중 트리에 너무 클 수 있다.
(3) 크로마 툴이 적용되지 않은 경우 크로마 파라미터를 시그널링될 필요가 없다.
(4) JVET-R2001-vA의 계수 코딩이 화면 콘텐츠 코딩에서 코딩 이점을 얻을 수 있지만, 계수 코딩 및 TS(트랜스폼 스킵) 모드에는 여전히 몇 가지 단점들이 있을 수 있다.
a. 다음의 경우에는 부호 플래그에 대해 바이패스 코딩 또는 컨텍스트 코딩을 사용할지 여부가 명확하지 않다:
i. 나머지 허용된 컨텍스트 코딩된 빈(RemCcbs로 표시)의 수는 0과 같다.
ii. 현재 블록은 TS 모드로 코딩된다.
iii. sh_ts_residual_coding_disabled_flag is false.
4. 예시적인 실시예 및 기술들
아래 항목 목록은 일반적인 개념을 설명하는 예로 간주해야 한다. 이러한 항목을 좁은 의미로 해석해서는 안 된다. 또한, 이러한 항목은 어떤 방식으로든 결합할 수 있다.
다음 예는 VVC의 팔레트 방식 및 기타 모든 팔레트 관련방식에 적용될 수 있다.
1. 이스케이프 값 재구성을 위한 Qp는 최대 및/또는 최소 허용 값을 가질 수 있다.
a. 하나의 예에서, QP는 최대 허용 값보다 크지 않고/하거나 최소 허용 값보다 작지 않도록 클리핑될 수 있다.
b. 하나의 예에서, 이스케이프 값 재구성을 위한 최대 허용 Qp는 이진화 방법에 따라 달라질 수 있다.
c. 하나의 예에서, 이스케이프 값 재구성을 위해 허용되는 최대 Qp는 (T + B)일 수 있으며, 여기서 B는 비트 깊이(bit depth)에 기초한다.
i, 하나의 예에서, T는 정수일 수 있다.
1. 하나의 예에서, T는 23일 수 있다.
2. 하나의 예에서, T는 23보다 작은 숫자일 수 있다.
3. 하나의 예에서, T는 35일 수 있다.
4. 하나의 예에서, T는 35보다 작은 숫자일 수 있다.
5. 하나의 예에서, T는 29일 수 있다.
6. 하나의 예에서, T는 29보다 작은 숫자일 수 있다.
ii. 하나의 예에서, T는 비디오 영역(예를 들어, 시퀀스, 픽처, 슬라이스/타일/서브픽쳐)에서 표시될 수 있다.
1. 하나의 예에서, T는 VPS/SPS/PPS/PH/SH로 표시될 수 있다.
iii. 하나의 예에서, B는 QpBdOffset(예를 들어, 6 *bit_depth_minus8)으로 설정될 수 있다.
d. 하나의 예에서, 이스케이프 값 재구성을 위한 최대 허용 Qp는 (23+ QpBdOffset)일 수 있다.
i. 대안적으로, 또한, EG5를 사용하여 이스케이프 값을 코딩한다.
ii. 대안적으로, 이스케이프 값 재구성을 위해 허용되는 최대 Qp는 (K + QpBdOffset)일 수 있으며, 여기서 K는 23보다 작은 숫자이다.
e. 하나의 예에서, 이스케이프 값 재구성을 위한 최대 허용 Qp는 (35 + QpBdOffset)일 수 있다.
i. 대안적으로, 또한, EG3을 사용하여 이스케이프 값을 코딩한다.
ii. 대안적으로, 이스케이프 값 재구성을 위해 허용되는 최대 Qp는 (K + QpBdOffset)일 수 있으며, 여기서 K는 35보다 작은 숫자이다.
f. 대안적으로, 이스케이프 값 재구성을 위해 허용되는 최대 Qp는 (29 + QpBdOffset)일 수 있다.
i. 대안적으로, 또한, EG4를 사용하여 이스케이프 값을 코딩한다.
ii. 대안적으로, 이스케이프 값 재구성을 위해 허용되는 최대 Qp는 (K + QpBdOffset)일 수 있으며, 여기서 K는 29보다 작은 숫자이다.
팔레트 크기 관련
2. 로컬 이중 트리 적용 여부에 따라 팔레트 크기가 다를 수 있음을 제안한다.
a. 하나의 예에서, 로컬 이중 트리의 경우, 팔레트 크기가 감소될 수 있다고 제안된다.
b. 하나의 예에서, 루마 CU 및 크로마 CU에 대한 팔레트 크기는 로컬 이중 트리가 적용될 때 상이할 수 있다.
c. 하나의 예에서, 크로마 CU에 대한 팔레트 크기는 로컬 이중 트리의 루마 CU에 대한 팔레트 크기와 비교하여 감소될 수도 있고, 또는 로컬 이중 트리가 적용되지 않을 때 팔레트 크기와 비교될 수도 있다.
i. 하나의 예에서, 크로마에 대한 팔레트 크기는 절반으로 감소될 수 있다.
3. 팔레트 예측자 크기는 로컬 이중 트리 적용 여부에 따라 다를 수 있음을 제안한다.
a. 하나의 예에서, 로컬 이중 트리의 경우 팔레트 예측자 크기가 감소될 수 있다고 제안된다.
b. 하나의 예에서, 루마 CU 및 크로마 CU에 대한 팔레트 예측자 크기는 로컬 이중 트리가 적용될 때 상이할 수 있다.
c. 하나의 예에서, 크로마 CU에 대한 팔레트 예측자 크기는 로컬 이중 트리의 루마 CU에 대한 팔레트 예측자 크기와 비교하여 감소될 수도 있거나, 로컬 이중 트리가 적용되지 않을 때 팔레트 예측자 크기와 비교할 수도 있다.
i. 하나의 예에서, 크로마에 대한 팔레트 예측자 크기는 절반으로 감소될 수 있다.
크로마 디블로킹 관련
4. 슬라이스 레벨 및/또는 더 높은 레벨(즉, 영역 크기가 슬라이스보다 큼)(예를 들어, PPS 또는 픽처 헤더)에서 크로마 디블로킹 오프셋을 시그널링/파싱할지 여부는 컬러 포맷 및/또는 플래그 및/또는 ChromaArrayType을 활성화하는 개별 평면 코딩 및/또는 크로마 디블로킹 오프셋이 존재하는지 여부를 나타내는 플래그 및/또는 크로마 디블로킹 오프셋 또는 일부 다른 크로마 툴 파라미터가 존재하는지 여부를 나타내는 플래그에 따라 달라질 수 있다.
a. 하나의 예에서, 슬라이스 레벨 및/또는 더 높은 레벨(즉, 영역 크기가 슬라이스보다 큼)에서 크로마 디블로킹 오프셋의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 또는 개별 평면 코딩이 적용되거나 또는 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
b. 하나의 예에서, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 또는 개별 평면 코딩이 적용되거나 또는 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
c. 하나의 예에서, ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 또는 개별 평면 코딩이 적용되거나 또는 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
d. 하나의 예에서, slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 또는 개별 평면 코딩이 적용되거나 또는 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
e. 대안적으로, 적합성 비트스트림(conformance bitstream)은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0이거나 개별 평면 코딩이 적용될 때, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2는 0과 같아야 하는 것을 충족해야 한다.
f. 하나의 예에서, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2의 시그널링/파싱은, chroma_format_idc가 0과 동일하고 Separate_colour_plane_flag가 1과 동일하지 않거나 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타내는 경우, 항상 스킵될 수 있다.
g. 하나의 예에서, pps_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2의 시그널링/파싱은, chroma_format_idc가 0과 동일하고 Separate_colour_plane_flag가 1과 동일하지 않거나 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타내는 경우, 항상 스킵될 수 있다.
h. 하나의 예에서, slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2의 시그널링/파싱은, chroma_format_idc가 0과 동일하고 Separate_colour_plane_flag가 1과 동일하지 않거나 플래그가 크로마 디블로킹 오프셋이 존재하지 않음을 나타내는경우, 항상 스킵될 수 있다.
i. 대안적으로, 신택스 요소의 시그널링이 스킵되는 경우, 신택스 요소의 값은 0과 동일한 것으로 유추된다.
5. 컬러 포맷 및/또는 개별 평면 코딩 활성화 플래그 및/또는 ChromaArrayType 및/또는 크로마 디블로킹 오프셋이 존재하는지 여부를 나타내는 플래그 및/또는 크로마 디블로킹 오프셋 또는 일부 다른 크로마 툴 파라미터가 존재하는지 여부를 나타내는 플래그(예를 들어, pps_chroma_tool_params_present_flag )는 PPS 및/또는 SPS 및/또는 APS로 표시될 수 있다.
a. 하나의 예에서, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 및 또는 플래그가 거짓일 때 항상 스킵될 수 있다.
b. 하나의 예에서, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0 및 또는 플래그가 거짓일 때 항상 스킵될 수 있다.
c. 하나의 예에서, 크로마 툴 오프셋 관련 신택스 요소(예를 들어, pps_cb_qp_offset, pps_cr_qp_offset, pps_joint_cbcr_qp_offset_present_flag, pps_slice_chroma_qp_offsets_present_flag, pps_cu_chroma_qp_offset_list_enabled_flag)는, ChromaArrayType이 0과 같이 않고/않거나 플래그가 거짓이라는 조건 검사하에서 시그널링된다.
d. 적합성 비트스트림에서, PPS에서 시그널링되는 플래그 및/또는 ChromaArrayType을 활성화하는 컬러 포맷 및/또는 개별 평면 코딩은 연관 SPS에서 시그널링되는 해당 정보와 동일해야 한다.
6. 크로마 qp 오프셋이 시그널링/파싱되어야 하는지 여부를 제어하는 플래그는 크로마 디블로킹 오프셋이 시그널링/파싱되어야 하는지 여부도 제어할 수 있다고 제안된다.
a. 하나의 예에서, pps_chroma_tool_params_present_flag 플래그는 크로마 qp 오프셋이 파싱되어야 하는지 여부 및 크로마 디블로킹 오프셋이 시그널링/파싱되어야 하는지 여부를 제어하는 데 사용될 수 있다.
7. 제어 플래그(controlling flag), 예를 들어 pps_chroma_deblocking_params_present_flag는 크로마 디블로킹 오프셋이 시그널링/파싱되어야 하는지 여부를 제어하기 위해 PPS에 추가될 수 있다.
a. 하나의 예에서, 플래그가 0인 경우, pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, pps_cr_tc_offset_div2의 시그널링/파싱은 항상 스킵될 수 있다.
b. 하나의 예에서, 플래그가 0일 때, ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, ph_cr_tc_offset_div2의 시그널링/파싱은 항상 스킵될 수 있다.
c. 하나의 예에서, 플래그가 0인 경우, slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, slice_cr_tc_offset_div2의 시그널링/파싱은 항상 스킵될 수 있다.
d. 대안적으로, 또한, 적합성 비트스트림에서 ChromaArrayType이 0일 때 플래그가 0이어야 한다.
APS의 크로마 툴 관련 파라미터
8. 제어 플래그, 예를 들어 aps_chroma_tool_params_present_flag는 크로마 툴 관련 파라미터가 APS에서 시그널링/파싱되어야 하는지 여부를 제어하기 위해 APS에 추가될 수 있다.
a. 하나의 예에서, aps_chroma_tool_params_present_flag가 0과 같을 때, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag 및 alf_cc_cr_filter_signal_flag는 항상 스킵되고 0과 같은 것으로 유추될 수 있다.
b. 하나의 예에서, aps_chroma_tool_params_present_flag가 0과 같을 때, scaling_list_chroma_present_flag는 항상 스킵되고 0과 같은 것으로 유추될 수 있다.
픽처 헤더의 다른 크로마 툴 관련 파라미터
9. 하나의 예에서, ph_log2_diff_min_qt_min_cb_intra_slice_luma의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0이거나 또는 개별 평면 코딩이 적용되거나 또는 플래그가 이 신택스 요소(및 아마도 다른 신택스 요소)가 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
10. 하나의 예에서, ph_log2_diff_min_qt_min_cb_intra_slice_luma의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0이거나 또는 개별 평면 코딩이 적용되거나 또는 플래그가 이 신택스 요소(및 아마도 다른 신택스 요소)가 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
11. 하나의 예에서, ph_log2_diff_min_qt_min_cb_intra_slice의 시그널링/파싱은 ChromaArrayType이 0과 같거나 컬러 포맷이 4:0:0이거나 또는 개별 평면 코딩이 적용되거나 또는 플래그가 이 신택스 요소(및 아마도 다른 신택스 요소)가 존재하지 않음을 나타낼 때 항상 스킵될 수 있다.
적응형 컬러 트랜스폼(ACT) 관련(Adaptive colour transform (ACT) related)
12. 팔레트 모드 및 적응형 컬러 트랜스폼(adaptive colour transform)은 블록에만 적용될 수 있다.
a. 한 가지 예에서, 팔레트 모드가 블록에 사용될 때 적응형 컬러 트랜스폼은 해당 블록에 사용되지 않는다.
i. 하나의 예에서, 팔레트 모드가 블록에 적용될 때 ACT 사용의 시그널링이 스킵될 수 있다.
1. 대안적으로, 또한, ACT의 사용이 거짓으로 유추된다.
b. 하나의 예에서, 블록에 적응형 컬러 트랜스폼이 사용될 때, 팔레트 모드는 해당 블록에 사용되지 않는다.
i. 하나의 예에서, 팔레트 모드 사용의 시그널링은 ACT가 블록에 적용될 때 스킵될 수 있다.
1. 대안적으로, 또한, 팔레트 모드의 사용이 거짓으로 유추된다.
c. ACT 온/오프 플래그의 표시를 시그널링할지 여부는 예측 모드가 MODE_PLT와 동일하지 않은지 여부에 따라 달라질 수 있다.
]
d. ACT 온/오프 플래그의 표시를 시그널링할지 여부는 팔레트 모드의 표시가 사용되지 않는지 여부(예를 들어, !pred_mode_plt_flag)에 의존할 수 있다.
13. 적응형 컬러 트랜스폼은 컬러 공간에 관계없이 코딩 유닛의 잔차 블록에 적용될 수 있다.
e. 하나의 예에서, 적응형 컬러 트랜스폼은 GBR 컬러 공간에서 코딩 유닛의 잔차 블록에 적용될 수 있다.
f. 하나의 예에서, 적응형 컬러 트랜스폼은 YCbCr 컬러 공간에서 코딩 유닛의 잔차 블록에 적용될 수 있다.
계수 부호 플래그에 대해 바이패스 코딩 또는 컨텍스트 코딩을 사용하는 방법
14. 트랜스폼 스킵 잔차 코딩 프로세스의 제3/나머지 계수 스캔 패스에서 나머지 신택스 요소(예를 들어, 신택스 요소 abs_remainder 및 coeff_sign_flag)에 대한 바이패스 코딩의 시작(또는/및 바이패스 코딩의 끝)에서, 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수를 지정하는 변수에 동작(operation)이 적용될 수 있다.
g. 하나의 예에서, 동작(operation)은 RemCcbs를 특정 값(예를 들어, 0)과 동일하게 설정하기 위해 및 RemCcbs를 저장하기 위해 시간적 변수(예를 들어, tempRemCcbs)를 사용하는 것일 수 있다. 바이패스 코딩이 끝나면, RemCcbs를 tempRemCcbs와 동일하게 설정한다.
i. 하나의 예에서, 동작은 RemCcbs를 특정 값 N과 같도록 설정하는 것일 수 있으며, 여기서 값은 정수이고 M보다 작다.
1. 하나의 예에서, S는 T와 동일하다.
h. 계수 레벨의 부호를 나타내는 신택스 요소(예를 들어, coeff_sign_flag)가 바이패스 모드 또는 컨텍스트 코딩 모드로 코딩되는지 여부는 남아 있는 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수에 의존할 수 있다.
i. 하나의 예에서, 계수 레벨(예를 들어, coeff_sign_flag)의 부호는 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 나머지의 수가 N(예를 들어, N = 0)일 때 바이패스 모드로 코딩된다.
ii. 하나의 예에서, 부호 플래그는 RemCcbs가 M보다 크거나 같을 때 컨텍스트 코딩 모드로 코딩된다.
i. 하나의 예에서, 동작은 RemCcbs를 제외한 적어도 하나의 변수 또는 신택스 요소에 따른 값과 같도록 RemCcbs를 설정하는 것일 수 있다.
15. 트랜스폼 스킵 잔차 코딩 프로세스에서, 신택스 요소(예를 들어, coeff_sign_flag)가 특정 스캔 패스(예를 들어, 제1 스캔 패스 또는/및 제3/나머지 계수 스캔 패스)에 속하는지 여부를 나타내는 변수에 동작(operation)이 적용될 수 있다.
j. 하나의 예에서, 동작은 현재 스캔 패스가 제3/나머지 스캔 패스인지 여부를 표시하기 위해 변수(예를 들어, remScanPass)를 사용할 수 있다.
i. 하나의 예에서, 제1 스캔 패스의 시작 부분에서 remScanPass는 A와 동일하게 설정되고 제3/나머지 스캔 패스의 시작 부분에서 remScanPass는 B와 동일하게 설정된다. 여기서 A는 B와 동일하지 않다.
ii. 계수 레벨의 부호를 나타내는 신택스 요소(예, coeff_sign_flag)가 바이패스 모드 또는 컨텍스트 코딩 모드로 코딩되는지 여부는 remScanPass에 따라 달라질 수 있다.
1. 하나의 예에서 계수 레벨의 부호는 remScanPass가 B와 같을 때 바이패스 모드로 코딩된다.
2. 하나의 예에서, 계수 레벨의 부호는 remScanPass가 A와 같을 때 컨텍스트 코딩 모드로 코딩된다.
k. 대안적으로, 동작(operation)은 현재 스캔 패스가 제1 스캔 패스인지 여부를 나타내기 위해 변수를 사용할 수 있다.
l. 대안적으로, 동작(operation)은 현재 스캔 패스가 제2/X 스캔 패스보다 큰지 여부를 나타내기 위해 변수를 사용할 수 있다.
16. 계수 레벨의 부호를 나타내는 신택스 요소(SE)가 바이패스 모드 또는 컨텍스트 코딩 모드로 코딩되는지 여부는 스캔 패스의 인덱스에 의존할 수 있고, 여기서 스캔 패스 내에서 영역 내 하나 또는 다중 계수의 동일한 신택스 요소 블록은 순서대로 코딩된다.
m. 하나의 예에서, SE는 그것이 제1 스캔 패스에서 시그널링될 때 컨텍스트 코딩 모드로 코딩될 수 있다.
n. 하나의 예에서, SE는 제3/나머지 스캔 패스에서 시그널링될 때 바이패스 모드로 코딩될 수 있다.
o. 하나의 예에서, 위의 방법은 비-TS 코딩된 블록에 대한 트랜스폼 스킵(TS, BDPCM/QR-BDPCM 포함 또는 제외) 잔차 코딩 프로세스 및/또는 계수 코딩 프로세스에 적용 가능하다.
17. 계수 레벨의 부호를 나타내는 신택스 요소(SE)가 바이패스 모드 또는 컨텍스트 코딩 모드로 코딩되는지 여부는 트랜스폼 스킵 잔차 코딩 프로세스의 동일한 스캔 패스에서 다른 신택스 요소(예를 들어, sig_coeff_flag, par_level_flag, abs_remainder)로서 시그널링되는지 여부에 따라 달라질 수 있다.
p. 하나의 예에서, SE는 sig_coeff_flag 또는/및 par_level_flag와 동일한 스캔 패스에서 시그널링될 때 컨텍스트 코딩 모드로 코딩될 수 있다.
q. 하나의 예에서, SE는 abs_remainder와 동일한 스캔 패스에서 시그널링될 때 바이패스 모드로 코딩될 수 있다.
일반 기능
18. 위의 방법을 적용할지 여부 및/또는 적용 방법은 다음을 기반으로 할 수 있다:
a. 비디오 콘텐츠(예를 들어, 화면 콘텐츠 또는 자연 콘텐츠)
b. DPS/SPS/VPS/PPS/APS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU(최대 코딩 유닛)/CU(코딩 유닛)/LCU 행/LCU의 그룹/TU/PU 블록/비디오 코딩 유닛에서 시그널링되는 메시지
c. CU/PU/TU/블록/비디오 코딩 유닛의 위치
d. 현재 블록 및/또는 이웃 블록의 블록 차원
e. 현재 블록 및/또는 이웃 블록의 블록 형태
f. 현재 블록의 양자화 파라미터
g. 컬러 포맷 표시(예를 들어, 4:2:0, 4:4:4, RGB 또는 YUV)
h. 코딩 트리 구조(예를 들어, 이중 트리 또는 단일 트리)
i. 슬라이스/타일 그룹 유형 및/또는 픽처 유형
j. 컬러 컴포넌트(color component)(예를 들어, 루마 컴포넌트 및/또는 크로마 컴포넌트에만 적용될 수 있음)
k. 시간적 계층(Temporal layer) ID
l. 표준의 프로파일/레벨/티어(tier)
m. 현재 블록에 하나의 이스케이프 샘플이 있는지 여부.
i. 하나의 예에서, 현재 블록이 적어도 하나의 이스케이프 샘플을 가지고 있는 경우에만 위의 방법들이 적용될 수 있다.
n. 현재 블록이 무손실 모드(lossless mode)로 코딩되었는지 여부(예를 들어, cu_transquant_bypass_flag)
ii. 하나의 예에서, 위의 방법은 현재 블록이 무손실 모드로 코딩되지 않은 경우에만 적용될 수 있다.
o. 무손실 코딩 활성화 여부(예를 들어, transquant_bypass_enabled, cu_transquant_bypass_flag)
5. 실시예
아래의 실시예에서, 추가된 부분은 볼드체, 밑줄체 및 이탤릭체로 표시된다. 삭제된 부분은 [ [] ] 안에 표시된다.
5.1 실시예 #1
8.4.5.3 팔레트 모드의 디코딩 프로세스
- bIsEscapeSample이 0으면, 다음이 적용된다.
recSamples [x] [y] = CurrentPaletteEntries [cIdx] [PaletteIndexMap [xCbL+xL] [yCbL+yL] ] (443)
- 그렇지 않으면(bIsEscapeSample이 1과 같음), 다음과 같은 순서화된 단계가 적용된다:
1. 양자화 파라미터 qP는 다음과 같이 유도된다:
- cIdx가 0인 경우,
qP = Min (Max (QpPrimeTsMin, Qp'Y) , 23+QpBdOffset) (444)
- 그렇지 않고, cIdx가 1이면,
qP = Min (Max (QpPrimeTsMin, Qp'Cb), 23+QpBdOffset) (445)
- 그렇지 않은 경우(cIdx는 2임),
qP = Min (Max (QpPrimeTsMin, Qp'Cr), 23+QpBdOffset) (446)
2. 목록 levelScale []은 k = 0.. 5와 함께 levelScale [k] = {40, 45, 51, 57, 64, 72}로 지정된다.
3. 다음 사항이 적용된다:
tmpVal = (PaletteEscapeVal [cIdx] [xCbL + xL] [yCbL + yL] *levelScale [qP%6] ) << (qP/6) + 32) >> 6 (447)
recSamples [x] [y] = Clip3 (0, (1 << BitDepth) -1, tmpVal) (448)
5.2 실시예 #2
7.3.2.4 픽처 파라미터 세트 RBSP 신택스(Picture parameter set RBSP syntax)
7.3.2.7 픽처 헤더 구조 신택스
7.3.7.1 일반 슬라이스 헤더 신택스
5.3 실시예 #3
7.4.2.4 픽처 파라미터 세트 RBSP 신택스
7.3.2.5 적응형 파라미터 세트 RBSP 신택스
7.3.2.7 픽처 헤더 구조 신택스
7.3.2.19 적응형 루프 필터 데이터 신택스
7.3.2.21 스케일링 목록 데이터 신택스(Scaling list data syntax)
7.3.7.1 일반 슬라이스 헤더 신택스
7.4.3.4 픽처 파라미터 세트 RBSP 시맨틱
....
pps_chroma_tool_params[ [offsets] ] _present_flag와 동일한 1은 크로마 툴 [ [offsets] ] 관련 신택스 요소가 PPS RBSP 신택스 구조에 존재함을 지정한다. pps_chroma_tool_params [ [offsets] ] 0과 동일한 _present_flag는 크로마 툴 [ [offsets] ] 관련 신택스 요소가 PPS RBSP 신택스 구조에 존재하지 않음을 지정한다. ChromaArrayType이 0과 같을 때, pps_chroma_tool_params[ [offsets] ] _present_flag의 값은 0과 같아야 한다.
....
7.4.3.5 적응형 파라미터 세트 시맨틱
....
1과 동일한 aps_chroma_tool_params_present_flag는 크로마 툴 관련 신택스 요소가APS RBSP 신택스 구조에 존재함을 지정한다. 0과 동일한 aps_chroma_tool_params_present_flag는 크로마 툴 관련 신택스 요소가 APS RBSP 신택스 구조에 존재하지 않음을 지정한다. ChromaArrayType이 0과 같을 때 aps_chroma_tool_params_present_flag의 값은 0과 같아야 한다.
....
5.4 실시예 #4
7.4.2.4 픽처 파라미터 세트 RBSP 신택스
7.3.2.7 픽처 헤더 구조 신택스
7.3.7.1 일반 슬라이스 헤더 신택스
7.4.3.4 픽처 파라미터 세트 RBSP 시맨틱
....
1과 동일한 pps_chroma_deblocking_params_present_flag는 크로마 디블로킹 관련 신택스 요소가 PPS RBSP 신택스 구조에 존재함을 지정한다. 0과 동일한 pps_chroma_deblocking_params_present_flag는 크로마 디블로킹 관련 신택스 요소가 PPS RBSP 신택스 구조에 존재하지 않음을 지정한다. ChromaArrayType이 0과 같을 때, pps_chroma_deblocking_params_present_flag의 값은 0과 같아야 한다.
....
5.5 실시예 #5
5.5.1 실시예 #5.1
7.3.10.5 코딩 유닛 신택스
대안적으로, 다음이 적용될 수 있다.
5.6 실시예 #6
코딩 유닛 시멘틱
. . .
1과 동일한 cu_act_enabled_flag는 절 8.7.4.6에 명시된 잔차 수정 프로세스가 현재 코딩 유닛 [[YCgCo 컬러 공간으로 코딩됨] ]의 잔차에 적용됨을 지정한다. 0과 동일한 cu_act_enabled_flag는 절 8.7.4.6에 명시된 잔차 수정 프로세스가 현재 코딩 유닛 [[원래 컬러 공간에서 코딩됨]]의 잔차에 적용되지 않음을 지정한다. cu_act_enabled_flag가 없으면, 0과 같은 것으로 유추된다.
5.7 실시예 #7
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
9.3.4 디코딩 프로세스 흐름
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 ctxInc 할당
5.8 실시예 #8
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
여기서 A는 B와 같지 않다. 예를 들어 A = 0, B = 1이다.
대안적으로, A = 1, B = 0이다.
대안적으로, A = -1, B = 0이다.
대안적으로, A = 0, B = -1이다.
9.3.4 디코딩 프로세스 흐름
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 ctxInc 할당
5.9 실시예 #9
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
7.4.11.11 잔차 코딩 시맨틱
coeff_sign_flag [n]은 스캐닝 위치 n에 대한 트랜스폼 계수 레벨의 부호를 다음과 같이 지정한다:
- coeff_sign_flag[n]이 0으면, 해당 트랜스폼 계수 레벨은 양의 값을 갖는다.
- 그렇지 않으면(coeff_sign_flag[n]이 1과 같음), 해당 트랜스폼 계수 레벨은 음의 값을 갖다.
coeff_sign_flag [n]이 존재하지 않는 경우, 0과 동일한 것으로 유추된다.
coeff_sign_ctx_coding_flag [n]은 다음과 같이 스캐닝 위치 n에 대한 트랜스폼 계수 레벨의 부호를 지정한다.
-coeff_sign_ctx_coding_flag[n]이 0으면, 해당 트랜스폼 계수 레벨은 양의값을 갖는다.
그렇지 않으면(coeff_sign_ctx_coding_flag[n]이 1과 동일), 해당 트랜스폼 계수 레벨은음의 값을 갖는다.
coeff_sign_ctx_coding_flag [n]이 존재하지 않는 경우, 0과 동일한 것으로 유추된다.
CoeffSignLevel [xC] [yC]의 값은 다음과 같이 위치 (xC, yC)에서 트랜스폼 계수 레벨의 부호를 지정한다.
- CoeffSignLevel [xC] [yC]가 0과 같으면, 해당 트랜스폼 계수 레벨은 0과 같다.
- 그렇지 않고 CoeffSignLevel [xC] [yC]가 1이면, 해당 트랜스폼 계수 레벨은 양의 값을 갖다.
- 그렇지 않으면(CoeffSignLevel[xC][yC]가 -1과 같음), 해당 트랜스폼 계수 레벨은 음수 값을 갖다.
9.3.2 초기화 프로세스
9.3.2.2 컨텍스트 변수의 초기화 프로세스
표 125 - coeff_sign_ctx_coding_플래그의 ctxInc에 대한 initValue 및 shiftIdx 사양
9.3.3 이진화 프로세스
9.3.3.1 일반
표 126 - 신택스 요소 및 관련 이진화
9.3.4 디코딩 프로세스 흐름
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 ctxInc 할당
9.3.4.2.10 트랜스폼 스킵 모드에 대한 신택스 요소 coeff_sign
_ctx_coding_
플래그에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 컬러 컴포넌트 인덱스 cIdx, 현재 픽처의 왼쪽 상단 샘플에 상대적인 현재 트랜스폼 블록의 왼쪽 상단 샘플을 지정하는 루마 위치(x0, y0), 현재 계수 스캔 위치(xC, yC)이다.
이 프로세스의 출력은 변수 ctxInc이다.
변수 leftSign 및 aboveSign은 다음과 같이 유도된다:
leftSign= (xC == 0) ? 0 : CoeffSignLevel [xC-1] [yC] (1594)
aboveSign = (yC == 0) ? 0 : CoeffSignLevel [xC] [yC-1] (1595)
변수 ctxInc는 다음과 같이 유도된다:
- leftSign이 0이고 aboveSign이 0인 경우, 또는 leftSign이 -aboveSign과 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ==0? 0: 3) (1596)
- 그렇지 않고, leftSign이 0보다 크거나 같고 aboveSign이 0보다 크거나 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ? 1: 4) (1597)
- 그렇지 않으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ? 2: 5) (1598)
5.10 실시예 #10
9.3.4.2.10 트랜스폼 스킵 모드에 대한 신택스 요소 coeff_sign_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 컬러 컴포넌트 인덱스 cIdx, 현재 픽처의 왼쪽 상단 샘플에 상대적인 현재 트랜스폼 블록의 왼쪽 상단 샘플을 지정하는 루마 위치(x0, y0), 현재 계수 스캔 위치(xC, yC)이다.
이 프로세스의 출력은 변수 ctxInc이다.
변수 leftSign 및 aboveSign은 다음과 같이 유도된다:
leftSign= (xC == 0) ? 0 : CoeffSignLevel [xC-1] [yC] (1594)
aboveSign = (yC == 0) ? 0 : CoeffSignLevel [xC] [yC-1] (1595)
변수 ctxInc는 다음과 같이 유도된다:
- leftSign이 0이고 aboveSign이 0인 경우, 또는 leftSign이 -aboveSign과 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] ==0? 0: 3) (1596)
- 그렇지 않고, leftSign이 0보다 크거나 같고 aboveSign이 0보다 크거나 같으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] == 0? 1: 4) (1597)
- 그렇지 않으면, 다음이 적용된다:
ctxInc = (BdpcmFlag [x0] [y0] [cIdx] == 0? 2: 5) (1598)
도 7은 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(video processing system)(2100)을 도시하는 블록도이다. 다양한 구현은 시스템(system)(1900)의 컴포넌트 중 일부 또는 전부를 포함할 수 있다. 시스템(1900)은 비디오 콘텐츠를 수신하기 위한 입력(input)(1902)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들어, 8 또는 10비트 다중 컴포넌트 픽셀 값으로 수신될 수 있거나 압축 또는 인코딩된 포맷일 수 있다. 입력(1902)은 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예로는 이더넷, 수동 광 네트워크(PON) 등과 같은 유선 인터페이스와 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스가 있다.
시스템(1900)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(coding component)(1904)를 포함할 수 있다. 코딩 컴포넌트(1904)는 비디오의 코딩된 표현을 생성하기 위해 입력(1902)으로부터 코딩 컴포넌트(1904)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술은 비디오 압축 또는 비디오 트랜스코딩 기술이라고도 한다. 코딩 컴포넌트(1904)의 출력은 컴포넌트(component)(1906)에 의해 표현되는 바와 같이, 연결된 통신을 통해 저장되거나 전송될 수 있다. 입력(1902)에서 수신된 비디오의 저장되거나 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(1910)로 전송되는 픽셀 값 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(1908)에 의해 사용될 수 있다. 비트스트림 표현(bitstream representation)에서 사용자가 볼 수 있는 비디오를 생성하는 프로세스를 비디오 압축 해제(decompression)라고도 한다. 또한, 특정 비디오 처리 동작(operation)을 "코딩" 동작(coding operation) 또는 툴(tools)로 지칭하지만, 코딩 툴 또는 동작(operation)이 인코더에서 사용되고 코딩 결과를 되돌리는 대응하는 디코딩 툴 또는 동작(operation)이 디코더에 의해 수행된다는 점을 이해할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예로는 범용 직렬 버스(USB) 또는 고화질 멀티미디어 인터페이스(HDMI) 또는 디스플레이포트 등이 포함될 수 있다. 스토리지 인터페이스의 예로는 SATA(직렬 첨단 기술 첨부 파일), PCI, IDE 인터페이스 등이 있다. 본 문서에 기재된 기술은 휴대전화, 노트북, 스마트폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 기타 장치와 같은 다양한 전자 기기에 구현될 수 있다.
도 8은 비디오 처리 장치(video processing apparatus)(3600)의 블록도이다. 장치(apparatus)(3600)는 여기에 설명된 방법 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(3600)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(3600)는 하나 이상의 프로세서(processor)(3602), 하나 이상의 메모리(memory)(3604) 및 비디오 처리 하드웨어(video processing hardware)(3606)를 포함할 수 있다. 프로세서(들)(3602)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(3604)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(video processing hardware)(3606)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있다.
도 10는 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템(video coding system)(100)을 예시하는 블록도이다.
도 10에 도시된 바와 같이, 비디오 코딩 시스템(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) 표준 및 기타 현재 및/또는 추가 표준과 같은 비디오 압축 표준에 따라 동작할 수 있다.
도 11은 도 10에 예시된 시스템(100)의 비디오 인코더(video encoder)(114)일 수 있는 비디오 인코더(video encoder)(200)의 예를 예시하는 블록도이다.
비디오 인코더(200)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 11의 예에서, 비디오 인코더(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)과 같은 일부 컴포넌트는 고집적될 수 있으나, 도 11의 예에서는 설명의 목적을 위해 분리된 것으로 표현되었다.
파티션 장치(201)는 픽처를 하나 이상의 비디오 블록으로 파티셔닝할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기를 지원할 수 있다.
모드 선택 유닛(203)는 오류 결과에 기초하여 코딩 모드, 예를 들면, 인트라 또는 인터 등을 선택하고, 결과인 인트라 또는 인터 코딩된 블록을, 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하고, 재구성 유닛(212)으로 제공하여 레퍼런스 픽처로 사용하기 위한 인커딩된 블록을 재구성한다. 일부 예에서, 모드 선택 유닛(203)는 인트라 및 인터 예측(CIIP) 모드의 조합을 선택할 수 있고, 이 모드에서 예측은 인터 예측 시그널 및 인트라 예측 시그널에 기초한다. 모드 선택 유닛(203)는 또한, 인터 예측의 경우 블록에 대한 모션 벡터의 해상도(예를 들어, 서브 픽셀 또는 정수 픽셀 정밀도)를 선택할 수 있다.
현재 비디오 블록에서 인터 예측을 수행하기 위해, 모션 추정 유닛(204)는 버퍼(213)에서 현재 비디오 블록에 하나 이상의 레퍼런스 프레임을 비교하여 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 모션 정보 및 디코딩된 픽처 샘플에 기초하여 현재 비디오 블록에 대한 예측 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)는 현재 비디오 블록이 I 슬라이스, P 슬라이스 또는 B 슬라이스에 있는지 여부에 따라 현재 비디오 블록에 대해 서로 다른 동작(operation)을 수행할 수 있다.
일부 예에서, 모션 추정 유닛(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)는 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 12는 도 10에 예시된 시스템(100)의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록도이다.
비디오 디코더(300)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 12의 예에서, 비디오 디코더(300)는 복수의 기능적 컴포넌트를 포함한다. 본 개시에 기재된 기술은 비디오 디코더(300)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
도 12의 예에서, 비디오 디코더(video decoder)(300)는 엔트로피 디코딩 유닛(entropy decoding unit)(301), 모션 보상 유닛(motion compensation unit)(302), 인트라 예측 유닛(intra prediction unit)(303), 역양자화 유닛(inverse quantization unit)(304), 역트랜스폼 유닛(inverse transformation uni)(305), 및 재구성 유닛(reconstruction unit)(306) 및 버퍼(buffer)(307)를 포함한다. 비디오 디코더(300)는, 일부 예에서, 비디오 인코더(200)에 대하여 기술된 인코딩 패스(pass)와 일반적으로 서로 주고받는(reciprocal) 디코딩 패스를 수행할 수 있다(도 11).
엔트로피 디코딩 유닛(301)는 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림에는 엔트로피 코딩된 비디오 데이터(예를 들어, 비디오 데이터의 인코딩된 블록)가 포함될 수 있다. 엔트로피 디코딩 유닛(301)는 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터 모션 보상 유닛(302)는 모션 벡터, 모션 벡터 정밀도, 레퍼런스 픽처 목록 인덱스 및 기타 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)는, 예를 들어 AMVP 및 병합 모드를 수행하여 이러한 정보를 결정할 수 있다.
모션 보상 유닛(302)는 보간 필터에 기초하여 보간(interpolation)을 수행하여 모션 보정 블록을 생성할 수 있다. 서브 픽셀 정밀도와 함께 사용되는 보간 필터에 대한 식별자가 신택스 요소에 포함될 수 있다.
모션 보상 유닛(302)는 비디오 블록을 인코딩하는 동안 비디오 인코더(20)에서 사용하는 보간 필터를 사용하여 레퍼런스 블록의 서브 정수 픽셀에 대한 보간 값을 계산할 수 있다. 모션 보상 유닛(302)는 수신된 신택스 정보에 따라 비디오 인코더(200)에서 사용하는 보간 필터를 결정하고 보간 필터를 사용하여 예측 블록을 생성할 수 있다.
모션 보상 유닛(302)는 인코딩된 비디오 시퀀스의 프레임 및/또는 슬라이스를 인코딩하는 데 사용되는 블록의 크기, 인코딩된 비디오 시퀀스의 각 매크로 블록이 파티셔닝되는 방식을 설명하는 파티션 정보, 각 파티션이 인코딩된 방법, 각 파티션이 인코딩되는 방식을 나타내는 모드, 각 인터-인코딩된 블록에 대한 하나 이상의 레퍼런스 프레임(및 레퍼런스 프레임 목록) 및 인코딩된 비디오 시퀀스를 디코딩하는 다른 정보들을 결정하기 위해 일부 신택스 정보를 사용할 수 있다.
인트라 예측 유닛(303)는, 공간적으로 인접한 블록(adjacent block)으로부터 예측 블록을 형성하기 위해 예를 들어 비트스트림에서 수신된 인트라 예측 모드를 사용할 수 있다. 역양자화 유닛(303)는 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에서 디코딩된 양자화된 비디오 블록 계수를 역양자화(예를 들어, 비양자화(de-quantize))한다. 역트랜스폼 유닛(Inverse transform unit)(303)은 역트랜스폼을 적용한다.
재구성 유닛(Reconstruction unit)(306)은 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성된 대응하는 예측 블록과 잔차 블록을 합산하여 디코딩된 블록을 형성할 수 있다. 원하는 경우, 디블로킹 필터(deblocking filter)를 적용하여 차단 아티팩트를 제거하기 위해 디코딩된 블록을 필터링할 수도 있다. 디코딩된 비디오 블록은 버퍼(307)에 저장되고, 이는 이후의 모션 보상/인트라 예측에 대한 레퍼런스 블록을 제공하고, 디스플레이 장치에서 재생하기 위한 디코딩된 비디오를 생성한다.
일부 실시예에서 선호하는 솔루션 목록이 다음에 제공된다.
다음 솔루션은 이전 섹션(예를 들어, 항목 1)에서 논의된 기술의 예시적인 실시예를 보여준다.
1. 비디오 처리 방법(예를 들어, 도 9에 도시된 방법(900))에서, 방법은: 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계(902)를 포함하고, 여기서 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트 외부의 샘플은 규칙에 의해 결정되는 최소 허용 값과 최대 허용 값 사이의 범위에 있는 양자화 파라미터를 사용하여 양자화된 값 및 이스케이프 기호(escape symbol)를 사용하여 코딩된다.
2. 1항의 방법에서, 최대 허용 값은 비디오 블록의 코딩된 표현에 사용되는 이진화 방법에 의존한다.
3. 1항의 방법에서, 최대 허용 값은 T+B로 표시되고, 여기서 B는 비디오 블록의 샘플의 표현의 비트 레벨에 기초한 숫자이고 T는 미리 정의된 숫자이다.
다음 솔루션은 이전 섹션(예를 들어, 항목 2)에서 논의된 기술의 예시적인 실시예를 보여준다.
4. 비디오 처리 방법에서, 방법은: 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트의 크기는 비디오 블록과 코딩된 표현 사이의 변환을 위해 로컬 이중 트리가 사용되는지 여부에 대한 규칙에 따라 달라진다.
5. 4항의 방법에서, 팔레트의 크기는 로컬 이중 트리의 사용으로 인해 비디오의 컬러 컴포넌트에 따라 달라진다.
6. 5항의 방법에서, 규칙은 비디오 블록이 루마 블록인 경우보다 비디오 블록이 크로마 블록인 경우, 더 작은 팔레트 크기를 사용하도록 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 3)에서 논의된 기술의 예시적인 실시예를 보여준다.
7. 비디오 처리 방법에서, 방법은: 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 팔레트 모드는 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 비디오 블록의 코딩된 표현에 사용되고; 및 팔레트 예측자의 크기는 비디오 블록과 코딩된 표현 사이의 변환을 위해 로컬 이중 트리가 사용되는지 여부에 대한 규칙에 따라 달라진다.
8. 7항의 방법에서, 팔레트 예측자의 크기는 로컬 이중 트리의 사용으로 인한 비디오 블록의 컬러 컴포넌트에 의존한다.
9. 8항의 방법에서, 규칙은 비디오 블록이 루마 블록인 경우보다 비디오 블록이 크로마 블록인 경우, 더 작은 팔레트 크기를 사용하도록 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 4)에서 논의된 기술의 예시적인 실시예를 보여준다.
10. 비디오 처리 방법에서, 방법은: 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 코딩 조건에 기초하여, 비디오의 크로마 컴포넌트에 대한 디블로킹 오프셋을 식별하는 신택스 요소가 비디오 영역 레벨에서 코딩된 표현에 포함되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함하고; 디블로킹 오프셋은 비디오 블록에 대한 디블로킹 동작을 선택적으로 활성화하는데 사용된다.
11. 10항의 방법에 있어서, 비디오 영역은 비디오 슬라이스 또는 비디오 픽처다.
12. 10항 또는 11항의 방법에서, 코딩 조건은 비디오의 컬러 포맷을 포함한다.
13. 10항 내지 12항의 방법 중 어느 한 항에서, 코딩 조건은 변환을 위해 개별 평면 코딩이 가능한지 여부에 기초한다.
14. 10항 내지 13항의 방법 중 어느 한 항에서, 코딩 조건은 크로마 어레이 유형이 코딩된 표현에 포함되는지 여부에 기초한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 5)에서 논의된 기술의 예시적인 실시예를 보여준다.
15. 비디오 처리 방법에서, 방법은: 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 코딩 조건에 기초하여, 크로마 코딩 툴(chroma coding tool)의 사용을 식별하는 신택스 요소가 비디오 영역 레벨에서 코딩된 표현에 포함되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함하고; 디블로킹 오프셋은 비디오 블록에 대한 디블로킹 동작을 선택적으로 활성화하는데 사용된다.
16. 15항의 방법에서, 비디오 영역은 비디오 슬라이스 또는 비디오 픽처다.
17. 15항 내지 16항의 방법 중 어느 한 항에서, 코딩 조건은 적응형 파라미터 세트의 신택스 요소의 포함에 대응한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 6, 7)에서 논의된 기술의 예시적인 실시예를 보여준다.
18. 비디오 처리 방법에서, 방법은: 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서 포맷은 비디오의 크로마 성분에 대한 디블로킹 오프셋을 나타내는 제1 플래그가 코딩된 표현에 포함되는지 여부가 크로마 성분의 양자화 파라미터 오프셋을 나타내는 제2 플래그가 코딩된 표현에 포함되는지 여부에 기초한다는 것을 지정한다.
19. 18항의 방법에서, 포맷 규칙은 코딩된 표현이 제1 플래그 및 제2 플래그가 코딩된 표현에 포함되는지 여부를 나타내는 제3 플래그를 포함함을 지정한다.
20. 18항 내지 19항의 방법 중 어느 한 항에서, 제3 플래그는 픽처 파라미터 세트의 코딩된 표현에 포함된다.
다음 솔루션은 이전 섹션(예를 들어, 항목 8-12)에서 논의된 기술의 예시적인 실시예를 보여준다.
21. 비디오 처리 방법에서, 방법은: 비디오의 비디오 영역의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계 - 코딩된 표현은 포맷 규칙을 따르는 것 - 를 포함하고; 여기서 포맷 규칙은 코딩된 표현의 신택스 요소가 하나 이상의 크로마 코딩 툴의 적용 가능성을 나타내는 하나 이상의 파라미터가 비디오 영역 또는 비디오 블록 레벨에서 코딩된 표현에 포함되는지 여부를 제어하는 것을 지정한다.
22. 21항의 방법에서, 신택스 요소가 적응형 파라미터 세트에 포함된다.
23. 21항 내지 22항의 방법 중 어느 한 항에서, 포맷 규칙은 신택스 요소의 제1 값이 하나 이상의 파라미터가 코딩된 표현으로부터 제외되고 코딩된 표현의 신택스 분석 동안 스킵된다는 것을 나타내도록 지정한다.
24. 1항 내지 23항의 방법 중 어느 하나에서, 변환은 비디오가 조건을 충족하기 때문에 방법을 사용한다.
25. 24항의 방법에서, 조건은 비디오 콘텐츠의 유형 또는 프로파일 또는 코딩된 표현에 의해 사용되는 티어(tier) 또는 레벨을 포함한다.
26. 1항 내지 25항의 방법 중 어느 하나에서, 조건은 비디오 블록 및/또는 이웃 비디오 블록의 블록 차원 또는 비디오 블록의 변환에 사용되는 코딩 트리 구조 또는 비디오 영역의 유형을 포함한다.
27. 1항 내지 26항의 방법 중 어느 하나에서, 변환은 비디오를 코딩된 표현으로 인코딩하는 단계를 포함한다.
28. 1항 내지 26항의 방법 중 어느 하나에서, 변환은 비디오의 픽셀 값을 생성하기 위해 코딩된 표현을 디코딩하는 단계를 포함한다.
29. 1항 내지 28항의 방법 중 하나에서 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
30. 1항 내지 28항의 방법 중 어느 하나에서 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
31. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램에서, 코드는, 프로세서에 의해 실행 시, 프로세서로 하여금 솔루션 1 내지 28 중 어느 하나 이상에 인용된 방법을 구현하도록 한다.
32. 본 문서에 기술된 방법, 장치 및 시스템.
도 13은 본 기술에 따른 비디오 처리 방법(1300)에 대한 흐름도 표현이다. 방법(1300)은, 동작(1310)에서, 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록의 팔레트의 크기는 비디오 블록에 로컬 이중 트리 적용 여부에 따라 결정된다.
일부 실시예에서, 로컬 이중 트리가 코딩 유닛에 적용되는 경우, 파티션 동작은 코딩 유닛의 파티션 파라미터에 기초하여 코딩 유닛의 루마 블록에만 적용되고, 파티션 동작은 코딩 유닛의 모드 유형에 따라 코딩 유닛의 적어도 하나의 크로마 블록에 적용되지 않는다. 일부 실시예에서, 로컬 이중 트리가 비디오 블록에 적용되는 경우, 팔레트의 크기가 감소된다. 일부 실시예에서, 로컬 이중 트리가 비디오 블록에 적용되는 경우, 비디오 블록에 로컬 이중 트리가 적용되지 않는 경우, 팔레트의 크기에 비해 팔레트의 크기가 감소된다. 일부 실시예에서, 로컬 이중 트리가 비디오 블록에 적용되는 경우, 비디오 블록에 일반 단일 트리(regular single tree)가 적용되는 경우에 비해 팔레트의 크기에 비해 팔레트의 크기가 감소된다. 일부 실시예에서, 팔레트의 크기는 절반으로 감소된다.
일부 실시예에서, 로컬 이중 트리가 적용되는 경우, 크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기와 상이하다. 일부 실시예에서, 크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기보다 더 작다. 일부 실시예에서, 크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트 크기의 절반이다.
도 14는 본 기술에 따른 비디오 처리 방법(1400)에 대한 흐름도 표현이다. 방법(1400)은, 동작(1410)에서, 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록의 팔레트 예측자(palette predictor)의 크기는 로컬 이중 트리가 비디오 블록에 적용되는지 여부에 기초한다.
일부 실시예에서, 로컬 이중 트리가 변환에 적용되는 경우, 팔레트 예측자의 크기가 감소된다. 일부 실시예에서, 로컬 이중 트리가 적용되는 경우, 크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기와 상이하다. 일부 실시예에서, 크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기보다 더 작다. 일부 실시예에서, 크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기와 비교하여 절반으로 감소된다.
도 15는 본 기술에 따른 비디오 처리 방법(1500)에 대한 흐름도 표현이다. 방법(1500)은, 동작(1510)에서, 비디오 블록의 샘플들이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환은 이스케이프 샘플의 값이 적어도 최대 허용 값 또는 최소 허용 값으로 제한되는 양자화 파라미터를 사용하여 비트스트림에서 코딩된다는 것을 지정하는 규칙을 따른다.
일부 실시예에서, 이스케이프 샘플은 팔레트의 대표 컬러 값으로 분류되지 않은 샘플의 서브세트를 포함하고, 양자화 파라미터는 최대 허용 값보다 크지 않거나 최소 허용 값보다 작지 않도록 제한된다. 일부 실시예에서, 최대 허용 값은 변환에 사용된 이진화 방법에 기초하여 결정된다. 일부 실시예에서, 최대 허용 값은 (T+B)로 표현되고, 여기서 B는 비트 깊이를 나타낸다. 일부 실시예에서, T는 비트스트림의 비디오 영역에 표시된다. 일부 실시예에서, T는 비디오 파라미터 세트(video parameter set), 시퀀스 파라미터 세트(sequence parameter set), 픽처 파라미터 세트(picture parameter set), 픽처 헤더(picture header), 또는 슬라이스 헤더(a slice header)에서 시그널링된다. 일부 실시예에서, B는 양자화 파라미터와 연관된 비트 깊이 오프셋과 동일하다. 일부 실시예에서, 최대 허용 값은 양자화 파라미터에 T를 더한 것과 연관된 비트 깊이 오프셋과 동일하다. 일부 실시예에서, T는 상수이다. 일부 실시예에서, T는 23, 35 또는 39와 동일하다. 일부 실시예에서, T는 23보다 작거나, 35보다 작거나, 29보다 작은 상수이다. 일부 실시예에서, 이스케이프 샘플의 값은 EG5, EG3 또는 EG4의 비트 길이를 사용하여 코딩된다.
도 16은 본 기술에 따른 비디오 처리 방법(1600)에 대한 흐름도 표현이다. 방법(1600)은, 동작(1610)에서, 비디오의 제1 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환은 크로마 코딩 툴과 연관된 파라미터가 비트스트림의 적응형 파라미터 세트에 존재하는지 여부가 적응형 파라미터 세트의 제어 플래그에 기초한다는 것을 지정하는 포맷 규칙을 따른다.
일부 실시예에서, 제어 플래그가 0인 경우, 파라미터는 적응형 파라미터 세트에서 생략된다. 일부 실시예에서, 파라미터는 적응형 루프 필터의 크로마 컴포넌트에 대한 신호 플래그, 적응형 루프 필터(adaptive loop filter)의 Cb 컴포넌트에 대한 신호 플래그, 적응형 루프 필터의 Cr 컴포넌트에 대한 신호 플래그, 또는 크로마 컴포넌트에 대한 스케일링 목록이 존재하는지 여부를 나타내는 신호 플래그를 포함한다.
도 17은 본 기술에 따른 비디오 처리 방법(1700)에 대한 흐름도 표현이다. 방법(1700)은, 동작(1710)에서, 비디오의 제1 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비트스트림은 비디오가 단색(monochromatic)이거나 비디오의 컬러 컴포넌트(color component)가 별도로 처리되는 경우, 비트스트림의 픽처 헤더에서 양자화 파라미터와 관련된 신택스 요소가 생략되도록 지정하는 포맷 규칙을 따른다. 일부 실시예에서, 단색인 비디오는 (1) 0과 동일한 신택스 요소 ChromaArrayType, (2) 4:0:0와 동일한 비디오의 컬러 포맷에 기초하여 결정된다. 일부 실시예에서, 신택스 요소는 ph_log2_diff_min_qt_min_cb_intra_slice_luma, ph_log2_diff_min_qt_min_cb_intra_slice_chroma, 또는 ph_log2_diff_min_qt_min_cb_inter_slice를 포함한다.
도 18은 본 기술에 따른 비디오 처리 방법(1800)에 대한 흐름도 표현이다. 방법(1800)은, 동작(1810)에서, 변환을 위해, 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드와 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상호 배타적으로 활성화되는 것으로 지정하는 규칙에 따라 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예에서, 팔레트 모드가 변환을 위해 적용된 경우, 적응형 컬러 트랜스폼 모드는 비활성화된다. 일부 실시예에서, 적응형 컬러 트랜스폼 모드의 정보의 시그널링은 변환을 위해 생략된다. 일부 실시예에서, 적응형 컬러 트랜스폼 모드의 사용은 비활성화되는 것으로 유추된다. 일부 실시예에서, 적응형 컬러 트랜스폼 모드가 변환에 적용되는 경우, 팔레트 모드는 비활성화된다. 일부 실시예에서, 팔레트 모드의 정보의 시그널링은 변환을 위해 생략된다. 일부 실시예에서, 팔레트 모드의 사용은 비활성화되는 것으로 유추된다.
도 19는 본 기술에 따른 비디오 처리 방법(1900)에 대한 흐름도 표현이다. 방법(1900)은, 동작(1910)에서, 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 잔차 영역에서 컬러 공간 변환(color space conversion)이 수행되는 적응형 컬러 트랜스폼 모드(adaptive color transform mode)가 잔차 블록(residual block)의 컬러 공간(color space)에 관계없이 비디오 블록의 잔차 블록에 적용된다. 일부 실시예에서, 잔차 블록의 컬러 공간은 녹색-청색-적색(Green-Blue-Red)(GBR) 컬러 공간 또는 YCbCr 컬러 공간을 포함한다.
도 20은 본 기술에 따른 비디오 처리 방법(2000)에 대한 흐름도 표현이다. 방법(2000)은, 동작(2010)에서, 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 비디오 블록은 비디오 블록의 트랜스폼 스킵된 코딩의 잔차 계수(residual coefficient)가 컨텍스트 코딩 프로세스(context coding process) 또는 바이패스 코딩 프로세스(bypass coding process)를 사용하여 코딩되는 트랜스폼 스킵 잔차 코딩 툴(transform skip residual coding tool)을 사용하여 코딩된다. 변환 동안, 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 지정하는 변수(variable)에 대한 바이패스 코딩 프로세스의 시작 또는 끝에서 동작(operation)이 적용된다.
일부 실시예에서, 동작은 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 시간적 변수에 저장하는 단계; 및 상기 시간적 변수에 기초하여 변수를 설정하는 단계를 포함한다. 일부 실시예에서, 동작은 변수를 값 N으로 설정하는 단계를 포함하고, 여기서 N은 정수이다. 일부 실시예에서, N은 M보다 작고, M은 3과 동일하다. 일부 실시예에서, N은 다른 변수 또는 다른 신택스 요소에 기초한다. 일부 실시예에서, 계수 레벨의 부호를 표시하는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수에 기초한다.
일부 실시예에서, 계수 레벨의 부호는, 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수가 N이고, N은 0 이상의 정수인 경우, 바이패스 코딩 프로세스를 사용하여 코딩된다. 일부 실시예에서, 계수 레벨의 부호는, 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수가 M 이상이고, N은 정수인 경우, 컨텍스트 코딩 프로세스를 사용하여 코딩된다.
도 21은 본 기술에 따른 비디오 처리 방법(2100)에 대한 흐름도 표현이다. 방법(2100)은, 동작(2110)에서, 트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 동작(operation)은 신택스 요소가 특정 스캔 패스(scan pass)에 속하는지 여부를 나타내는 변수에 적용된다.
일부 실시예에서, 동작은 현재 스캔 패스가 제3 또는 나머지 스캔 패스임을 나타내는 변수에 값을 할당하는 단계를 포함한다. 일부 실시예에서, 동작은 현재 스캔 패스가 제1 스캔 패스임을 나타내는 변수에 값을 할당하는 단계를 포함한다. 일부 실시예에서, 동작은 현재 스캔 패스가 제2 패스 또는 X보다 큰 스캔 패스임을 나타내는 변수에 값을 할당하는 단계를 포함한다. 일부 실시예에서, 동작은 제1 스캔 패스의 시작에서 변수에 제1 값을 할당하는 단계 및 제3 또는 나머지 스캔 패스의 시작에서 변수에 제2 값을 할당하는 단계를 포함하며, 여기서 제1 값은 제2 값과 같지 않다.
일부 실시예에서, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 변수에 기초한다. 일부 실시예에서, 변수가 특정 스캔 패스가 제3 또는 나머지 스캔 패스임을 나타내는 경우, 계수 레벨의 부호는 바이패스 코딩 프로세스를 사용하여 코딩된다. 일부 실시예에서, 변수가 특정 스캔 패스가 제1 스캔 패스임을 나타내는 경우에 계수 레벨의 부호는 컨텍스트 코딩 프로세스를 사용하여 코딩된다.
도 22는 본 기술에 따른 비디오 처리 방법(2200)에 대한 흐름도 표현이다. 방법(2200)은, 동작(2210)에서, 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 계수 레벨(coefficient level)의 부호를 나타내는 신택스 요소가 상기 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록의 영역에서 하나 이상의 계수의 동일한 신택스 요소가 순서대로 코딩되는 스캔 패스의 인덱스에 기초한다. 일부 실시예에서, 변환은 트랜스폼 스킵 잔차 코딩 프로세스 또는 비디오 블록이 비트랜스폼 스킵 코딩되는 계수 코딩 프로세스를 사용하여 수행된다.
도 23은 본 기술에 따른 비디오 처리 방법(2300)에 대한 흐름도 표현이다. 방법(2300)은, 동작(2310)에서, 트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 신택스 요소가 다른 신택스 요소와 동일한 스캔 패스에서 시그널링되는지 여부에 기초한다.
일부 실시예에서, 신택스 요소는 sig_coeff_flag 또는 par_level_flag로서 시그널링된다. 일부 실시예에서, 신택스 요소는 신택스 요소가 abs_remainder와 동일한 스캔 패스에서 시그널링되는 경우에 바이패스 코딩 프로세스를 사용하여 코딩된다.
일부 실시예에서, 위의 방법 중 하나 이상의 적용 가능성은 비디오의 특성을 기반으로 한다. 일부 실시예에서, 비디오의 특성은 비디오의 콘텐츠를 포함한다. 일부 실시예에서, 특성은 디코더 파라미터 세트(Decoder Parameter Set), 시퀀스 파라미터 세트(Sequence Paramete Set), 비디오 파라미터 세트(Video Paramter Set), 픽처 파라미터 세트(Picture Parameter Set), 적응형 파라미터 세트(Adaptation Paraemter Set), 픽처 헤더(picture header), 슬라이스 헤더(slice header), 타일 그룹 헤더(tile group header), 최대 코딩 유닛(Largest coding unit)(LCU), 코딩 유닛(Coding unit)(CU), LCU 행(row), LCU의 그룹, 트랜스폼 유닛(Transform Unit)(TU), 픽처 유닛(Picture Unit)(PU) 블록, 또는 비디오 코딩 유닛(video coding unit)에서 시그널링된 메시지를 포함한다. 일부 실시예에서, 특성은 코딩 유닛, 픽처 유닛, 트랜스폼 유닛, 또는 블록의 위치를 포함한다. 일부 실시예에서, 특성은 비디오 블록 및/또는 비디오 블록의 이웃 블록의 차원 또는 형상을 포함한다. 일부 실시예에서, 특성은 비디오 블록의 양자화 파라미터를 포함한다. 일부 실시예에서, 특성은 비디오의 컬러 포맷을 포함한다. 일부 실시예에서, 특성은 비디오의 코딩 트리 구조를 포함한다. 일부 실시예에서, 특성은 슬라이스의 유형, 타일 그룹, 또는 픽처를 포함한다. 일부 실시예에서, 비디오의 특성은 비디오의 컬러 컴포넌트를 포함한다. 일부 실시예에서, 특성은 시간적 계층 식별자(temporal layer identifier)를 포함한다. 일부 실시예에서, 특성은 비디오 표준의 프로파일, 레벨 또는 티어를 포함한다. 일부 실시예에서, 특성은 비디오 블록이 이스케이프 샘플을 포함하는지 여부를 포함한다. 일부 실시예에서, 방법은 비디오 블록이 적어도 하나의 이스케이프 샘플을 포함하는 경우에만 적용 가능하다. 일부 실시예에서, 특성은 비디오 블록이 무손실 모드를 사용하여 코딩되는지 여부를 포함한다. 일부 실시예에서, 방법은 비디오 블록이 무손실 모드를 사용하여 코딩되지 않은 경우에만 적용 가능하다.
일부 실시예에서, 변환은 비디오를 비트스트림으로 인코딩하는 단계를 포함한다. 일부 실시예에서, 변환은 비트스트림으로부터 비디오를 디코딩하는 단계를 포함한다.
본 문서에서 "비디오 처리(video processing)"라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제(decompression)를 의미할 수 있다. 예를 들어, 비디오 압축 알고리즘은 비디오의 픽셀 표현에서 대응하는 비트스트림 표현으로 또는 그 반대로 변환 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이 비트스트림 내의 다른 위치들에 함께 배치(병치)(co-located)되거나 확산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록(macroblock)은 트랜스폼되고 코딩된 오류 잔차 값의 관점에서 그리고 또한, 헤더의 비트 및 비트스트림의 다른 필드를 사용하여 인코딩될 수 있다.
본 문서에 기재된 개시 및 기타 솔루션, 예, 실시예, 모듈 및 기능적 동작(operation)은 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 여기에는 이 문서 및 그 구조적 등가물 또는 그 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 기타 실시예는 하나 이상의 컴퓨터 프로그램 제품으로 구현될 수 있고, 즉, 컴퓨터 프로그램 지침의 하나 이상의 모듈을 컴퓨터 판독 가능한 매체에 인코딩 하여 실행하거나, 데이터 처리 장치의 작동을 제어할 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 조성 또는 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치"는 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 장치, 장치 및 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 대응 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 기계에서 생성된 전기, 광학 또는 전자기 신호이고, 이는 적합한 수신기 장치로 전송하기 위한 정보를 인코딩 하기 위해 생성된다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 된 언어를 비롯한 모든 형태의 프로그래밍 언어로 작성할 수 있으며 독립 실행형 프로그램 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴 또는 기타 유닛으로 모든 형태로 배포할 수 있다. 컴퓨터 프로그램이 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트), 대응하는 프로그램에 전용되는 단일 파일 또는 여러 조정된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장할 수 있다. 컴퓨터 프로그램은 한 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행하도록 배포할 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 프로그래밍 가능한 프로세서가 하나 이상의 프로그래밍 가능한 프로세서에서 수행하여 입력 데이터에서 작동하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름도 수행될 수 있으며, 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능한 게이트 어레이) 또는 ASIC(애플리케이션 별 집적 회로)로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서에는 예를 들어, 일반 및 특수 목적 마이크로프로세서와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서가 포함된다. 일반적으로 프로세서는 읽기 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다에서 지침과 데이터를 받게 된다. 컴퓨터의 필수 요소는 지침과 데이터를 저장하기 위한 하나 이상의 메모리 장치를 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 전체를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에 이러한 장치가 필요하지 않다. 컴퓨터 프로그램 지침 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능한 미디어에는 반도체 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치, 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동식 디스크; 마그네토 광학 디스크; 및 CD ROM 및 DVD-ROM 디스크를 비롯한 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치가 포함된다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보충되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이는 어떤 주제의 범위 나 청구될 수 있는 것에 대한 제한으로 해석되어서는 안 되고, 오히려 특정 기술의 특정 구현예에 특정할 수 있는 특징에 대한 설명으로 해석되어서는 안 된다. 이 특허 문서에 기재된 특정 특징은 별도의 실시예의 맥락에서 또한 단일 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 조합으로 다중 실시예에서도 구현될 수 있다. 더욱이, 앞서와 같이 특징들은 특정 조합으로 작용하는 것으로 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징은 어떤 경우에는 조합으로부터 제외될 수 있고, 주장된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
마찬가지로, 동작은 특정 순서로 도면에 묘사되어 있지만, 바람직한 결과를 달성하기 위하여, 이러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 기재된 실시예에서, 다양한 시스템 컴포넌트들의 분리가 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
몇 가지 구현 및 예제만 설명되고 이 특허 문서에 설명되고 도시된 내용에 따라 다른 구현, 개선 및 변형을 만들 수 있다.
Claims (105)
- 비디오 처리 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비디오 블록의 팔레트의 크기는 상기 비디오 블록에 로컬 이중 트리 적용 여부에 따라 결정되는
방법.
- 제1항에 있어서,
로컬 이중 트리가 코딩 유닛에 적용되는 경우, 파티션 동작은 상기 코딩 유닛의 파티션 파라미터에 기초하여 상기 코딩 유닛의 루마 블록에만 적용되고; 및 상기 파티션 동작은 상기 코딩 유닛의 모드 유형에 따라 상기 코딩 유닛의 적어도 하나의 크로마 블록에 적용가능하지 않은
방법.
- 제1항 또는 제2항에 있어서,
상기 로컬 이중 트리가 상기 비디오 블록에 적용되는 경우, 상기 비디오 블록에 상기 로컬 이중 트리가 적용되지 않는 경우, 상기 팔레트의 크기에 비해 상기 팔레트의 크기가 감소되는
방법.
- 제1항 또는 제2항에 있어서,
상기 로컬 이중 트리가 상기 비디오 블록에 적용되는 경우, 상기 비디오 블록에 일반 단일 트리가 적용되는 경우에 비해 상기 팔레트의 크기가 감소되는
방법.
- 제3항 또는 제4항에 있어서,
상기 팔레트의 크기는 절반으로 감소되는
방법.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 로컬 이중 트리가 적용되는 경우, 크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기와 상이한
방법.
- 제6항에 있어서,
크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기보다 작은
방법.
- 제7항에 있어서,
크로마 컴포넌트의 비디오 블록의 팔레트의 크기는 루마 컴포넌트의 비디오 블록의 팔레트 크기의 절반인
방법.
- 비디오 처리 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비디오 블록의 팔레트 예측자의 크기는 로컬 이중 트리가 상기 비디오 블록에 적용되는지 여부에 기초하는
방법.
- 제9항에 있어서,
상기 변환을 위해 상기 로컬 이중 트리를 적용하는 경우, 상기 팔레트 예측자의 크기는 감소되는
방법.
- 제9항 또는 제10항에 있어서,
상기 로컬 이중 트리가 적용되는 경우, 크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기와 상이한
방법.
- 제11항에 있어서,
크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기보다 작은
방법.
- 제12항에 있어서,
크로마 컴포넌트의 비디오 블록의 팔레트 예측자의 크기는 루마 컴포넌트의 비디오 블록의 팔레트의 크기에 비해 절반으로 감소되는
방법.
- 비디오 처리 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 변환은 이스케이프 샘플의 값이 적어도 최대 허용 값 또는 최소 허용 값으로 제한되는 양자화 파라미터를 사용하여 상기 비트스트림에서 코딩된다는 것을 지정하는 규칙을 따르는
방법.
- 제14항에 있어서,
상기 이스케이프 샘플은 상기 팔레트의 대표 컬러 값으로 분류되지 않은 샘플의 서브세트를 포함하고, 상기 양자화 파라미터는 상기 최대 허용 값보다 크지 않거나 상기 최소 허용 값보다 작지 않도록 제한되는
방법.
- 제14항 또는 제15항에 있어서,
상기 최대 허용 값은 상기 변환에 사용된 이진화 방법에 기초하여 결정되는
방법.
- 제14항 또는 제15항에 있어서,
상기 최대 허용 값은 (T+B)로 표시되고, B는 비트 깊이를 나타내는
방법.
- 제17항에 있어서,
상기 비트스트림의 비디오 영역에 T가 표시되는
방법.
- 제18항에 있어서,
T는 비디오 파라미터 세트, 시퀀스 파라미터 세트, 픽처 파라미터 세트, 픽처 헤더, 또는 슬라이스 헤더에서 시그널링되는
방법.
- 제17항 내지 제19항 중 어느 한 항에 있어서,
B는 양자화 파라미터와 연관된 비트 깊이 오프셋과 동일한
방법.
- 제20항에 있어서,
상기 최대 허용 값은 상기 양자화 파라미터와 연관된 비트 깊이 오프셋에 T를 더한 값과 동일한
방법.
- 제17항 내지 제21항 중 어느 한 항에 있어서,
T가 상수인
방법.
- 제22항에 있어서,
T는 23, 35 또는 39인
방법.
- 제22항에 있어서,
T는 23보다 작거나, 35보다 작거나, 29보다 작은 상수인
방법.
- 제14항 내지 제24항 중 어느 한 항에 있어서,
상기 이스케이프 샘플의 값은 EG5, EG3 또는 EG4의 비트 길이를 사용하여 코딩되는
방법.
- 비디오 처리 방법에 있어서,
규칙에 따라 비디오의 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 규칙은 크로마 코딩 툴과 연관된 파라미터가 상기 비트스트림의 적응형 파라미터 세트에 존재하는지 여부가 상기 적응형 파라미터 세트의 제어 플래그에 기초한다는 것을 지정하는
방법.
- 제26항에 있어서,
상기 제어 플래그가 0인 경우, 상기 적응형 파라미터 세트에서 상기 파라미터들은 생략되는
방법.
- 제26항 또는 제27항에 있어서,
상기 파라미터는 적응형루프 필터의 크로마 컴포넌트에 대한 신호 플래그, 적응형루프 필터의 Cb 컴포넌트에 대한 신호 플래그, 적응형루프 필터의 Cr 컴포넌트에 대한 신호 플래그, 또는 크로마 컴포넌트에 대한 스케일링 목록이 존재하는지 여부를 나타내는 신호 플래그를 포함하는
방법.
- 비디오 처리 방법에 있어서,
비디오의 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비트스트림은 포맷 규칙을 따르고, 상기 포맷 규칙은 양자화 파라미터와 연관된 신택스 요소가, 상기 비디오가 단색이거나 상기 비디오의 컬러 컴포넌트가 별도로 처리되는 경우, 상기 비트스트림의 픽처 헤더에서 생략되는
방법.
- 제29항에 있어서,
단색인 상기 비디오는 (1) 0과 동일한 신택스 요소 ChromaArrayType, (2) 4:0:0과 동일한 상기 비디오의 컬러 포맷에 기초하여 결정되는
방법.
- 제29항 또는 제30항에 있어서,
상기 신택스 요소는 ph_log2_diff_min_qt_min_cb_intra_slice_luma, ph_log2_diff_min_qt_min_cb_intra_slice_chroma, 또는 ph_log2_diff_min_qt_min_cb_inter_slice를 포함하는
방법.
- 비디오 처리 방법에 있어서,
규칙에 따라 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 규칙은, 상기 변환을 위해, 상기 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드와 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상호 배타적으로 활성화되는 것으로 지정하는
방법.
- 제32항에 있어서,
상기 변환을 위해 상기 팔레트 모드가 적용되는 경우, 상기 적응형 컬러 트랜스폼 모드가 비활성화되는
방법.
- 제33항에 있어서,
상기 적응형 컬러 트랜스폼 모드의 정보의 시그널링은 상기 변환을 위해 생략되는
방법.
- 제34항에 있어서,
상기 적응형 컬러 트랜스폼 모드의 사용은 비활성화되는 것으로 유추되는
방법.
- 제34항에 있어서,
상기 변환을 위해 상기 적응형 컬러 트랜스폼 모드가 적용되는 경우, 상기 팔레트 모드는 비활성화되는
방법.
- 제36항에 있어서,
상기 변환을 위해 상기 팔레트 모드의 정보의 시그널링이 생략되는
방법.
- 제37항에 있어서,
상기 팔레트 모드의 사용은 비활성화되는 것으로 유추되는
방법.
- 비디오 처리 방법에 있어서,
비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 잔차 블록의 컬러 공간에 관계없이 상기 비디오 블록의 잔차 블록에 적용되는
방법.
- 제39항에 있어서,
상기 잔차 블록의 컬러 공간은 녹색-청색-적색(GBR) 컬러 공간 또는 YCbCr 컬러 공간을 포함하는
방법.
- 비디오 처리 방법에 있어서,
비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비디오 블록은 상기 비디오 블록의 트랜스폼 스킵된 코딩의 잔차 계수가 컨텍스트 코딩 프로세스 또는 바이패스 코딩 프로세스를 사용하여 코딩되는 트랜스폼 스킵 잔차 코딩 툴을 사용하여 코딩되고; 및 상기 변환 동안, 상기 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 지정하는 변수에 바이패스 코딩 프로세스의 시작 또는 끝에서 동작이 적용되는
방법.
- 제41항에 있어서,
상기 동작은: 상기 비디오 블록에 허용된 나머지 컨텍스트 코딩된 빈의 수를 시간적 변수에 저장하는 단계; 및 상기 시간적 변수에 기초하여 상기 변수를 설정하는 단계를 포함하는
방법.
- 제41항 또는 제42항에 있어서,
상기 동작은: 상기 변수를 값 N으로 설정하는 단계를 포함하고, N은 정수인
방법.
- 제43항에 있어서,
N은 M보다 작고, M은 3인
방법.
- 제43항에 있어서,
N은 다른 변수 또는 다른 신택스 요소에 기초하는
방법.
- 제41항 내지 제45항 중 어느 한 항에 있어서,
계수 레벨의 부호를 나타내는 신택스 요소가 상기 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수에 기초하는
방법.
- 제46항에 있어서,
상기 계수 레벨의 부호는, 상기 비디오 블록에 허용되는 나머지 컨텍스트 코딩된 빈의 수가 N이고, N은 0 이상의 정수인 경우, 상기 바이패스 코딩 프로세스를 사용하여 코딩되는
방법.
- 제46항에 있어서,
상기 계수 레벨의 부호는 상기 비디오 블록에 허용되는 나머지 컨텍스트 코딩된 빈의 수가 M 이상이고, N은 정수인 경우, 상기 컨텍스트 코딩 프로세스를 사용하여 코딩되는
방법.
- 비디오 처리 방법에 있어서,
트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 변환 동안, 동작은 신택스 요소가 특정 스캔 패스에 속하는지 여부를 나타내는 변수에 적용되는
방법.
- 제49항에 있어서,
상기 동작은: 현재 스캔 패스가 제3 스캔 패스 또는 나머지 스캔 패스임을 나타내는 상기 변수에 값을 할당하는 단계를 포함하는
방법.
- 제49항에 있어서,
상기 동작은: 현재 스캔 패스가 제1 스캔 패스임을 나타내는 상기 변수에 값을 할당하는 단계를 포함하는
방법.
- 제49항에 있어서,
상기 동작은: 현재 스캔 패스가 제2 패스 또는 X보다 큰 스캔 패스임을 나타내는 상기 변수에 값을 할당하는 단계를 포함하는
방법.
- 제49항 내지 제52항 중 어느 한 항에 있어서,
상기 동작은, 제1 스캔 패스의 시작에서 상기 변수에 제1 값을 할당하는 단계; 및 제3 또는 나머지 스캔 패스의 시작에서 상기 변수에 제2 값을 할당하는 단계를 포함하고, 상기 제1 값은 상기 제2 값과 동일하지 않은
방법.
- 제49항 내지 제53항 중 어느 한 항에 있어서,
계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 변수에 기초하는
방법.
- 제54항에 있어서,
상기 변수가 상기 특정 스캔 패스가 제3 또는 나머지 스캔 패스임을 나타내는 경우, 상기 계수 레벨의 부호는 상기 바이패스 코딩 프로세스를 사용하여 코딩되는
방법.
- 제54항에 있어서,
상기 변수가 상기 특정 스캔 패스가 제1 스캔 패스임을 나타내는 경우, 상기 계수 레벨의 부호는 상기 컨텍스트 코딩 프로세스를 사용하여 코딩되는
방법.
- 비디오 처리 방법에 있어서,
비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록의 영역에서 하나 이상의 계수의 동일한 신택스 요소가 순서대로 코딩되는 스캔 패스의 인덱스에 기초하는
방법.
- 제57항에 있어서,
상기 변환은 트랜스폼 스킵 잔차 코딩 프로세스 또는 상기 비디오 블록이 비트랜스폼 스킵 코딩되는 계수 코딩 프로세스를 사용하여 수행되는
방법.
- 비디오 처리 방법에 있어서,
트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 신택스 요소가 다른 신택스 요소와 동일한 스캔 패스에서 시그널링되는지 여부에 기초하는
방법.
- 제59항에 있어서,
상기 신택스 요소는 sig_coeff_flag 또는 par_level_flag로서 시그널링되는
방법.
- 제59항에 있어서,
상기 신택스 요소는 상기 신택스 요소가 abs_remainder와 동일한 스캔 패스에서 시그널링되는 경우, 상기 바이패스 코딩 프로세스를 사용하여 코딩되는
방법.
- 제1항 내지 제61항 중 어느 한 항에 있어서,
상기 방법의 적용 가능성은 상기 비디오의 특성에 기초하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오의 콘텐츠를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 디코더 파라미터 세트, 시퀀스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 적응형 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 최대 코딩 유닛(LCU), 코딩 유닛(CU), LCU 행, LCU의 그룹, 트랜스폼 유닛(TU), 픽처 유닛(PU) 블록, 또는 비디오 코딩 유닛에서 시그널링된 메시지를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 코딩 유닛, 픽처 유닛, 트랜스폼 유닛 또는 블록의 위치를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오 블록 및/또는 상기 비디오 블록의 이웃 블록의 차원 또는 형상을 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오 블록의 양자화 파라미터를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오의 컬러 포맷을 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오의 코딩 트리 구조를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 슬라이스, 타일 그룹 또는 픽처의 유형을 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오 블록의 컬러 컴포넌트를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 시간적 계층 식별자를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 비디오 표준의 프로파일, 레벨 또는 티어를 포함하는
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오 블록이 이스케이프 샘플을 포함하는지 여부를 포함하는 방법.
- 제74항에 있어서,
상기 방법은 상기 비디오 블록이 적어도 하나의 이스케이프 샘플을 포함하는 경우에만 적용 가능한
방법.
- 제62항에 있어서,
상기 특성은 상기 비디오 블록이 무손실 모드를 사용하여 코딩되는지 여부를 포함하는
방법.
- 제76항에 있어서,
상기 방법은 상기 비디오 블록이 무손실 모드를 사용하여 코딩되지 않은 경우에만 적용가능한
방법.
- 제1항 내지 제77항 중 어느 한 항에 있어서,
상기 변환은 상기 비디오를 상기 비트스트림으로 인코딩하는 단계를 포함하는
방법.
- 제1항 내지 제77항 중 어느 한 항에 있어서,
상기 변환은 상기 비트스트림으로 부터 상기 비디오를 디코딩하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 상기 비디오 블록의 팔레트의 크기는 로컬 이중 트리가 상기 생성하는 단계에 대해 적용되는지 여부에 기초하여 결정됨 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 상기 비디오 블록의 팔레트 예측자의 크기는 상기 생성하는 단계을 위해 로컬 이중 트리가 적용되는지 여부에 기초함 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 팔레트의 대표 컬러 값으로 분류되지 않은 샘플의 서브세트를 이스케이프 샘플이라고 하고, 상기 비트스트림은 상기 이스케이프 샘플의 값이 적어도 최대 허용 값 또는 최소 허용 값에 의해 제한되는 양자화 파라미터에 기초하여 결정된다는 것을 지정하는 규칙을 따름 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
크로마 코딩 툴과 연관된 파라미터가 상기 비트스트림의 적응형 파라미터 세트에 존재하는지 여부가 상기 적응형 파라미터 세트의 제어 플래그에 기초하는 것을 지정하는 포맷 규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
상기 비디오가 단색이거나 상기 비디오의 컬러 컴포넌트가 별도로 처리되는 경우 양자화 파라미터와 연관된 신택스 요소가 상기 비트스트림의 픽처 헤더에서 생략되도록 지정하는 포맷 규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
상기 비디오의 블록에서 상기 비디오의 비트스트림을 생성하는 단계 - 상기 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드와 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상호 배타적임 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
상기 비디오의 블록에서 상기 비디오의 비트스트림을 생성하는 단계 - 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상기 잔차 블록의 컬러 공간에 관계없이 상기 비디오 블록의 잔차 블록에 적용됨 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 상기 생성하는 단계 동안, 상기 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 지정하는 변수에 바이패스 코딩 프로세스의 시작 또는 끝에서 동작이 적용됨 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 상기 생성하는 단계 동안, 동작은 신택스 요소가 특정 스캔 패스에 속하는지 여부를 나타내는 변수에 적용됨 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록의 영역에서 하나 이상의 계수의 동일한 신택스 요소가 순서대로 코딩되는 스캔 패스의 인덱스에 기초함 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계 - 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 신택스 요소가 다른 신택스 요소와 동일한 스캔 패스에서 시그널링되는지 여부에 기초함 -; 및 비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하는
방법.
- 제1항 내지 제90항 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
- 제1항 내지 제90항 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
- 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램에 있어서,
상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제90항 중 어느 한 항에서 인용된 방법을 구현하게 하는 컴퓨터프로그램.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 상기 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 비디오 블록의 팔레트의 크기는 상기 비디오 블록에 로컬 이중 트리 적용 여부에 따라 결정되는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 상기 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 비디오 블록의 팔레트 예측자의 크기는 로컬 이중 트리가 상기 비디오 블록에 적용되는지 여부에 기초하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드를 사용하여 상기 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 비트스트림은 이스케이프 샘플의 값이 적어도 최대 허용 값 또는 최소 허용 값에 의해 제한되는 양자화 파라미터를 사용하여 상기 비트스트림에서 코딩된다는 것을 지정하는 규칙을 따르는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 포맷 규칙에 따라 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 포맷 규칙은 크로마 코딩 툴과 연관된 파라미터가 상기 비트스트림의 적응형 파라미터 세트에 존재하는지 여부가 상기 적응형 파라미터 세트의 제어 플래그에 기초한다는 것을 지정하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 비트스트림은 포맷 규칙을 따르고, 상기 포맷 규직은 상기 비디오가 단색이거나 상기 비디오의 컬러 컴포넌트가 별도로 처리되는 경우, 픽처 헤더에서 양자화 파라미터와 연관된 신택스 요소가 생략되도록 지정하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 규칙에 따라 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 규칙은, 변환을 위해, 상기 비디오 블록의 샘플이 대표 컬러 값의 팔레트를 사용하여 표현되는 팔레트 모드와 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상호 배타적으로 활성화되는 것으로 지정하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 잔차 영역에서 컬러 공간 변환이 수행되는 적응형 컬러 트랜스폼 모드가 상기 잔차 블록의 컬러 공간에 관계없이 상기 비디오 블록의 잔차 블록에 적용되는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 상기 비디오 블록은 상기 비디오 블록의 트랜스폼 스킵된 코딩의 잔차 계수가 컨텍스트 코딩 프로세스 또는 바이패스 코딩 프로세스를 사용하여 코딩되는 트랜스폼 스킵 잔차 코딩 툴을 사용하여 코딩되고; 및 변환 동안, 상기 비디오 블록에서 허용되는 나머지 컨텍스트 코딩된 빈의 수를 지정하는 변수에 바이패스 코딩 프로세스의 시작 또는 끝에서 동작이 적용되는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 변환 동안, 동작은 신택스 요소가 특정 스캔 패스에 속하는지 여부를 나타내는 변수에 적용되는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 비디오의 비디오 블록과 상기 비디오의 비트스트림으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 비디오 블록의 영역에서 하나 이상의 계수의 동일한 신택스 요소가 순서대로 코딩되는 스캔 패스의 인덱스에 기초하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
상기 방법은: 트랜스폼 스킵 잔차 코딩 프로세스를 사용하여 비디오의 비디오 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계를 포함하고, 변환 동안, 계수 레벨의 부호를 나타내는 신택스 요소가 바이패스 코딩 프로세스 또는 컨텍스트 코딩 프로세스를 사용하여 코딩되는지 여부는 상기 신택스 요소가 다른 신택스 요소와 동일한 스캔 패스에서 시그널링되는지 여부에 기초하는
비일시적 컴퓨터 판독 가능 기록 매체.
- 본 문서에 기술된 방법, 장치, 방법, 또는 시스템에 따라 생성된 방법, 장치, 비트스트림.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2020/074316 | 2020-02-05 | ||
CN2020074316 | 2020-02-05 | ||
CNPCT/CN2020/091661 | 2020-05-21 | ||
CN2020091661 | 2020-05-21 | ||
PCT/CN2021/075408 WO2021155833A1 (en) | 2020-02-05 | 2021-02-05 | Palette mode for local dual tree |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220131249A true KR20220131249A (ko) | 2022-09-27 |
Family
ID=77199712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227025852A KR20220131249A (ko) | 2020-02-05 | 2021-02-05 | 로컬 이중 트리용 팔레트 모드 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11917169B2 (ko) |
EP (1) | EP4088456A4 (ko) |
JP (2) | JP2023513518A (ko) |
KR (1) | KR20220131249A (ko) |
CN (2) | CN117376567A (ko) |
WO (1) | WO2021155833A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021158633A (ja) * | 2020-03-30 | 2021-10-07 | Kddi株式会社 | 画像復号装置、画像復号方法及びプログラム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107046644B (zh) | 2010-04-09 | 2020-03-24 | 三菱电机株式会社 | 运动图像编码装置以及运动图像解码装置 |
US9756327B2 (en) | 2012-04-03 | 2017-09-05 | Qualcomm Incorporated | Quantization matrix and deblocking filter adjustments for video coding |
US9451258B2 (en) | 2012-04-03 | 2016-09-20 | Qualcomm Incorporated | Chroma slice-level QP offset and deblocking |
US11330297B2 (en) * | 2014-08-19 | 2022-05-10 | Qualcomm Incorporated | Methods incorporating extensions to copy-above mode for palette mode coding |
US20160234498A1 (en) * | 2015-02-05 | 2016-08-11 | Sharp Laboratories Of America, Inc. | Methods and systems for palette table coding |
KR102247664B1 (ko) * | 2018-05-10 | 2021-05-03 | 삼성전자주식회사 | 영상의 부호화 및 복호화를 위한 영상의 분할 방법 및 장치 |
WO2020003266A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Resetting of look up table per slice/tile/lcu row |
JP7100200B2 (ja) * | 2018-06-29 | 2022-07-12 | 北京字節跳動網絡技術有限公司 | マージ/amvpにhmvp候補を追加する際の一部/全部プルーニング |
KR20240007299A (ko) * | 2018-06-29 | 2024-01-16 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 룩업 테이블의 업데이트: fifo, 제약된 fifo |
TWI826486B (zh) * | 2018-07-14 | 2023-12-21 | 大陸商北京字節跳動網絡技術有限公司 | 用時間資訊擴展基於查找表的運動向量預測 |
US10848787B2 (en) * | 2018-08-28 | 2020-11-24 | Google Llc | Lossy image compression using palettization of locally mixed colors |
US11025905B2 (en) * | 2018-09-14 | 2021-06-01 | Tencent America LLC | Method and device for decoding with palette mode |
JP7197720B2 (ja) * | 2019-02-24 | 2022-12-27 | 北京字節跳動網絡技術有限公司 | パレットモードの使用の指示の独立した符号化 |
WO2020182113A1 (en) * | 2019-03-10 | 2020-09-17 | Beijing Bytedance Network Technology Co., Ltd. | Combined screen content coding mode |
AU2021206074A1 (en) | 2020-01-10 | 2022-08-18 | Samsung Electronics Co., Ltd. | Video decoding method and apparatus for obtaining quantization parameter, and video encoding method and apparatus for transmitting quantization parameter |
US11184632B2 (en) * | 2020-01-20 | 2021-11-23 | Tencent America LLC | Method and apparatus for palette based coding mode under local dual tree structure |
-
2021
- 2021-02-05 CN CN202311524935.5A patent/CN117376567A/zh active Pending
- 2021-02-05 EP EP21750205.3A patent/EP4088456A4/en active Pending
- 2021-02-05 JP JP2022547710A patent/JP2023513518A/ja active Pending
- 2021-02-05 CN CN202180013088.9A patent/CN115176460A/zh active Pending
- 2021-02-05 WO PCT/CN2021/075408 patent/WO2021155833A1/en unknown
- 2021-02-05 KR KR1020227025852A patent/KR20220131249A/ko unknown
-
2022
- 2022-08-05 US US17/882,359 patent/US11917169B2/en active Active
-
2023
- 2023-11-15 JP JP2023194713A patent/JP2024014958A/ja active Pending
- 2023-11-17 US US18/513,020 patent/US20240107037A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115176460A (zh) | 2022-10-11 |
WO2021155833A1 (en) | 2021-08-12 |
JP2024014958A (ja) | 2024-02-01 |
US20220394282A1 (en) | 2022-12-08 |
EP4088456A1 (en) | 2022-11-16 |
US20240107037A1 (en) | 2024-03-28 |
CN117376567A (zh) | 2024-01-09 |
US11917169B2 (en) | 2024-02-27 |
EP4088456A4 (en) | 2023-06-21 |
JP2023513518A (ja) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11528497B2 (en) | Palette mode with different partition structures | |
WO2021155834A1 (en) | Deblocking parameters for chroma component | |
US11503344B2 (en) | Entropy coding for palette escape symbol | |
KR20220115965A (ko) | 비디오 코딩을 위한 일반적인 제약 정보 | |
US11563946B2 (en) | Quantization parameter derivation for palette mode | |
US20240107037A1 (en) | Palette Mode For Local Dual Tree | |
US20230362375A1 (en) | Adaptive Colour Transform in Image/Video Coding | |
WO2021139707A1 (en) | Joint coding of chroma residuals and adaptive color transforms | |
WO2021197407A1 (en) | Video coding using adaptation parameter sets | |
JP2024096202A (ja) | パレット・モードのための量子化パラメータ導出 |