KR20220061969A - 팔레트 모드에 대한 양자화 파라미터 도출 - Google Patents

팔레트 모드에 대한 양자화 파라미터 도출 Download PDF

Info

Publication number
KR20220061969A
KR20220061969A KR1020227007776A KR20227007776A KR20220061969A KR 20220061969 A KR20220061969 A KR 20220061969A KR 1020227007776 A KR1020227007776 A KR 1020227007776A KR 20227007776 A KR20227007776 A KR 20227007776A KR 20220061969 A KR20220061969 A KR 20220061969A
Authority
KR
South Korea
Prior art keywords
video
palette
block
current
quantization parameter
Prior art date
Application number
KR1020227007776A
Other languages
English (en)
Other versions
KR102624438B1 (ko
Inventor
웨이자 주
지정 쉬
리 장
Original Assignee
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 바이트댄스 아이엔씨 filed Critical 바이트댄스 아이엔씨
Publication of KR20220061969A publication Critical patent/KR20220061969A/ko
Application granted granted Critical
Publication of KR102624438B1 publication Critical patent/KR102624438B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

팔레트 모드 코딩 및 디코딩에서 양자화 파라미터 도출을 위한 방법들, 시스템들 및 디바이스들이 설명된다. 예시적인 비디오 프로세싱 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계, 및 결정에 기초하여, 변환을 수행하는 단계를 포함하며, 여기서 현재 블록에 대한 클리핑된 양자화 파라미터는 변환에서 사용되고, 여기서 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이후의 양자화 파라미터에 기초하여 도출된다.

Description

팔레트 모드에 대한 양자화 파라미터 도출
관련 출원에 대한 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2019년 9월 19일에 출원된 국제 특허 출원 제PCT/CN2019/106700호 및 2019년 9월 27일에 출원된 국제 특허 출원 제PCT/CN2019/108736호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원들의 전체 개시들은 본 출원의 개시의 일부로서 참고로 포함된다.
기술 분야
본 문서는 비디오 및 이미지 코딩 및 디코딩 기술들에 관한 것이다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크들에서 가장 많은 대역폭 사용을 차지한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
개시된 기술들은 팔레트 모드 코딩 및 디코딩에서 양자화 파라미터 도출을 위해 비디오 또는 이미지 디코더 또는 인코더 실시예들에 의해 사용될 수 있다.
예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계, 및 결정에 기초하여, 변환을 수행하는 단계를 포함하며, 여기서 현재 블록에 대한 클리핑된 양자화 파라미터가 변환에서 사용되며, 여기서 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 현재 비디오 블록을 표현하고, 여기서 이스케이프 값은 대표 색상 값들을 사용하지 않고 코딩되는 현재 비디오 블록의 샘플에 대해 사용되며, 여기서 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이후의 양자화 파라미터에 기초하여 도출된다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계, 및 결정에 기초하여, 변환을 수행하는 단계를 포함하며, 여기서 현재 블록에 대한 클리핑된 양자화 파라미터가 변환에서 사용되며, 여기서 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 현재 비디오 블록을 표현하고, 여기서 이스케이프 값은 대표 색상 값들을 사용하지 않고 코딩되는 현재 비디오 블록의 샘플에 대해 사용되며, 여기서 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이전의 양자화 파라미터에 기초하여 도출된다.
또 다른 예시적인 양태에서, 위에서 설명된 방법은 프로세서를 포함하는 비디오 인코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 양태에서, 위에서 설명된 방법은 프로세서를 포함하는 비디오 디코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 양태에서, 이러한 방법들은 프로세서 실행 가능 명령어들의 형태로 구체화되고 컴퓨터 판독 가능 프로그램 매체에 저장될 수 있다.
이들 및 다른 양태들이 본 문서에서 더 설명된다.
도 1은 팔레트 모드로 코딩되는 블록의 예를 도시한다.
도 2는 팔레트 엔트리들을 시그널링하는 데 팔레트 예측자를 사용하는 것의 예를 도시한다.
도 3은 수평 트래버스 스캔 및 수직 트래버스 스캔의 예들을 도시한다.
도 4는 팔레트 인덱스들의 예시적인 코딩을 도시한다.
도 5a 및 도 5b는 최소 크로마 인트라 예측 유닛(smallest chroma intra prediction unit, SCIPU)의 예들을 도시한다.
도 6은 로컬 이중 트리 경우에서의 반복되는 팔레트 엔트리들의 예를 도시한다.
도 7은 콘텍스트 도출 프로세스에서 좌측 블록 및 위쪽 블록의 예를 도시한다.
도 8은 본 문서에 설명된 기술들을 구현하는 데 사용되는 하드웨어 플랫폼의 예의 블록 다이어그램이다.
도 9는 개시된 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템의 블록 다이어그램이다.
도 10은 본 개시의 일부 실시예들에 따른 비디오 코딩 시스템을 예시하는 블록 다이어그램이다.
도 11은 본 개시의 일부 실시예들에 따른 인코더를 예시하는 블록 다이어그램이다.
도 12는 본 개시의 일부 실시예들에 따른 디코더를 예시하는 블록 다이어그램이다.
도 13은 예시적인 비디오 프로세싱 방법의 플로차트를 도시한다.
도 14는 다른 예시적인 비디오 프로세싱 방법의 플로차트를 도시한다.
본 문서는 압축 해제되거나 디코딩된 디지털 비디오 또는 이미지들의 품질을 개선시키기 위해 이미지 또는 비디오 비트스트림들의 디코더에 의해 사용될 수 있는 다양한 기술들을 제공한다. 간결함을 위해, "비디오"라는 용어는 본 명세서에서 픽처들의 시퀀스(전통적으로 비디오라고 불림) 및 개별 이미지들 양쪽 모두를 포함하도록 사용된다. 게다가, 비디오 인코더는 또한 추가의 인코딩에 사용되는 디코딩된 프레임들을 재구성하기 위해 인코딩 프로세스 동안 이러한 기술들을 구현할 수 있다.
섹션 표제들은 이해의 편의를 위해 본 문서에서 사용되며 실시예들 및 기술들을 대응하는 섹션들로 제한하지 않는다. 이에 따라, 하나의 섹션으로부터의 실시예들은 다른 섹션들로부터의 실시예들과 결합될 수 있다.
1. 요약
이 문서는 비디오 코딩 기술들에 관한 것이다. 구체적으로, 이는 팔레트 코딩에서의 인덱스 및 이스케이프 심벌들 코딩에 관한 것이다. 이는 HEVC와 같은 기존의 비디오 코딩 표준, 또는 완성될 표준(다목적 비디오 코딩(Versatile Video Coding))에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준들 또는 비디오 코덱에 적용 가능할 수 있다.
2. 배경
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래의 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET(Joint Video Expert Team)가 만들어졌다.
VVC 초안의 최신 버전, 즉 Versatile Video Coding (Draft 6)은 http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET-O2001-v14.zip에 나와 있을 수 있다.
VTM이라는 이름의 VVC의 최신 참조 소프트웨어는 https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-5.0에 나와 있을 수 있다.
2.1 HEVC 스크린 콘텐츠 코딩 확장들( HEVC - SCC )에서의 팔레트 모드
2.1.1 팔레트 모드의 개념
팔레트 모드를 뒷받침하는 기본 아이디어는 CU에서의 픽셀들이 작은 대표 색상 값 세트에 의해 표현된다는 것이다. 이 세트는 팔레트라고 지칭된다. 이스케이프 심벌에 뒤이어 (어쩌면 양자화된) 성분 값들을 시그널링하는 것에 의해 팔레트 외부에 있는 샘플을 나타내는 것도 가능하다. 이러한 종류의 픽셀은 이스케이프 픽셀이라고 불린다. 팔레트 모드는 도 1에 예시되어 있다. 도 1에 묘사된 바와 같이, 3 개의 색상 성분(루마 및 2 개의 크로마 성분)을 갖는 각각의 픽셀에 대해, 팔레트에 대한 인덱스가 구축되고, 블록은 팔레트에서의 구축된 값들에 기초하여 재구성될 수 있다.
2.1.2 팔레트 엔트리들의 코딩
팔레트 엔트리들의 코딩을 위해, 팔레트 예측자가 유지된다. 팔레트는 물론 팔레트 예측자의 최대 크기는 SPS에서 시그널링된다. HEVC-SCC에서, palette_predictor_initializer_present_flag가 PPS에 도입된다. 이 플래그가 1일 때, 팔레트 예측자를 초기화하기 위한 엔트리들은 비트스트림에서 시그널링된다. 팔레트 예측자는 각각의 CTU 행, 각각의 슬라이스 및 각각의 타일의 시작 부분에서 초기화된다. palette_predictor_initializer_present_flag의 값에 따라, 팔레트 예측자는 0으로 리셋되거나 PPS에서 시그널링되는 팔레트 예측자 초기화기 엔트리들을 사용하여 초기화된다. HEVC-SCC에서, PPS 레벨에서의 팔레트 예측자 초기화의 명시적인 디스에이블을 가능하게 하기 위해 크기 0의 팔레트 예측자 초기화기가 인에이블되었다.
팔레트 예측자 내의 각각의 엔트리에 대해, 그것이 현재 팔레트의 일부인지 여부를 나타내기 위해 재사용 플래그가 시그널링된다. 이것은 도 2에 예시되어 있다. 재사용 플래그들은 제로들의 런 길이 코딩을 사용하여 송신된다. 이후에, 새로운 팔레트 엔트리들의 수가 차수 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)이 시그널링된다.
팔레트 모드에서, 이스케이프 심벌에 대한 인덱스의 값은 팔레트 엔트리들의 수이다. 그리고 이스케이프 심벌이 'COPY_LEFT’ 또는 'COPY_ABOVE' 모드에서 런의 일부일 때, 각각의 이스케이프 심벌에 대한 이스케이프 성분 값들이 시그널링된다. 팔레트 인덱스들의 코딩은 도 4에 예시되어 있다.
이 신택스 순서는 다음과 같이 달성된다. 먼저 CU에 대한 인덱스 값들의 수가 시그널링된다. 이에 이어서 절단된 이진 코딩(truncated binary coding)을 사용하는 전체 CU에 대한 실제 인덱스 값들의 시그널링이 뒤따른다. 인덱스들의 수는 물론 인덱스 값들 양쪽 모두는 바이패스 모드로 코딩된다. 이는 인덱스 관련 바이패스 빈들을 함께 그룹화한다. 이어서 팔레트 샘플 모드(필요한 경우)와 런이 인터리빙된 방식으로 시그널링된다. 마지막으로, 전체 CU에 대한 이스케이프 심벌들에 대응하는 성분 이스케이프 값들이 함께 그룹화되고 바이패스 모드로 코딩된다. 이스케이프 심벌들의 이진화는 차수 3의 EG 코딩, 즉 EG-3이다.
추가적인 신택스 요소인 last_run_type_flag는 인덱스 값들을 시그널링한 후에 시그널링된다. 이 신택스 요소는, 인덱스들의 수와 함께, 블록에서의 마지막 런에 대응하는 런 값을 시그널링할 필요성을 없애준다.
HEVC-SCC에서, 팔레트 모드는 또한 4:2:2, 4:2:0 및 단색(monochrome) 크로마 포맷들에 대해 인에이블된다. 팔레트 엔트리들 및 팔레트 인덱스들의 시그널링은 모든 크로마 포맷들에 대해 거의 동일하다. 비단색(non-monochrome) 포맷들의 경우, 각각의 팔레트 엔트리는 3 개의 성분으로 구성된다. 단색 포맷의 경우, 각각의 팔레트 엔트리는 단일 성분으로 구성된다. 서브샘플링된 크로마 방향들의 경우, 크로마 샘플들은 2로 나누어질 수 있는 루마 샘플 인덱스들과 연관된다. CU에 대한 팔레트 인덱스들을 재구성한 후에, 샘플이 그와 연관된 단일 성분만을 갖는 경우, 팔레트 엔트리의 첫 번째 성분만이 사용된다. 시그널링에서의 유일한 차이점은 이스케이프 성분 값들에 대한 것이다. 각각의 이스케이프 심벌에 대해, 시그널링되는 이스케이프 성분 값들의 수는 해당 심벌과 연관된 성분들의 수에 따라 상이할 수 있다.
추가적으로, 팔레트 인덱스 코딩에는 인덱스 조정 프로세스가 있다. 팔레트 인덱스를 시그널링할 때, 좌측 이웃 인덱스 또는 위쪽 이웃 인덱스는 현재 인덱스와 상이해야 한다. 따라서, 현재 팔레트 인덱스의 범위가 하나의 가능성을 제거하는 것에 의해 1만큼 감소될 수 있다. 그 후에, 인덱스는 절단된 이진(TB) 이진화를 사용하여 시그널링된다.
이 부분에 관련된 텍스트들은 다음과 같이 표시되며, 여기서 CurrPaletteIndex는 현재 팔레트 인덱스이고 adjustedRefPaletteIndex는 예측 인덱스이다.
변수 PaletteIndexMap[ xC ][ yC ]는 CurrentPaletteEntries에 의해 표현되는 어레이에 대한 인덱스인 팔레트 인덱스를 지정한다. 어레이 인덱스들 xC, yC는 픽처의 좌측 상단 루마 샘플을 기준으로 샘플의 위치 (xC, yC)를 지정한다. PaletteIndexMap[ xC ][ yC ]의 값은 0 내지 MaxPaletteIndex의 범위(경계 포함)에 있어야 한다.
변수 adjustedRefPaletteIndex는 다음과 같이 도출된다:
Figure pct00001
CopyAboveIndicesFlag[ xC ][ yC ]가 0과 동일할 때, 변수 CurrPaletteIndex는 다음과 같이 도출된다:
Figure pct00002
추가적으로, 팔레트 모드에서의 런 길이 요소들은 콘텍스트 코딩된다. 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는 다음과 같이 도출된다:
Figure pct00003
- 그렇지 않은 경우, ctxInc는 표 1에 의해 제공된다:
표 1 - ctxIdxMap[ copy_above_palette_indices_flag ][ binIdx ]의 명세
Figure pct00004
2.2 VVC에서의 팔레트 모드
2.2.1 이중 트리에서의 팔레트
VVC에서, 이중 트리 코딩 구조는 인트라 슬라이스들을 코딩하는 데 사용되며, 따라서 루마 성분과 2 개의 크로마 성분이 상이한 팔레트 및 팔레트 인덱스들을 가질 수 있다. 추가적으로, 2 개의 크로마 성분은 동일한 팔레트 및 팔레트 인덱스들을 공유한다.
2.2.2 별도의 모드로서의 팔레트
JVET-N0258 및 현재 VTM에서, 코딩 유닛에 대한 예측 모드들은 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임을 나타내는 데 이용된다.
JVET-O2001-vE에서의 관련 텍스트들은 다음과 같다.
코딩 유닛 신택스
Figure pct00005
2.2.3 팔레트 모드 신택스
Figure pct00006
Figure pct00007
Figure pct00008
2.2.4 팔레트 모드 시맨틱스
이하의 시맨틱스에서, 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다. 어레이 인덱스들 xC, yC는 픽처의 좌측 상단 루마 샘플을 기준으로 샘플의 위치 (xC, yC)를 지정한다. 어레이 인덱스 startComp는 현재 팔레트 테이블의 첫 번째 색상 성분을 지정한다. 0과 동일한 startComp는 Y 성분을 나타낸다; 1과 동일한 startComp는 Cb 성분을 나타낸다; 2와 동일한 startComp는 Cr 성분을 나타낸다. numComps는 현재 팔레트 테이블에서의 색상 성분들의 수를 지정한다.
예측자 팔레트는 현재 팔레트에서의 엔트리들을 예측하는 데 사용되는 이전 코딩 유닛들로부터의 팔레트 엔트리들로 구성된다.
변수 PredictorPaletteSize[ startComp ]는 현재 팔레트 테이블 startComp의 첫 번째 색상 성분에 대한 예측자 팔레트의 크기를 지정한다. PredictorPaletteSize는 8.4.5.3 절에 명시된 바와 같이 도출된다.
변수 PalettePredictorEntryReuseFlags[ i ]가 1과 동일한 것은 예측자 팔레트에서의 i 번째 엔트리가 현재 팔레트에서 재사용된다는 것을 지정한다. PalettePredictorEntryReuseFlags[ i ]가 0과 동일한 것은 예측자 팔레트에서의 i 번째 엔트리가 현재 팔레트에서의 엔트리가 아님을 지정한다. 어레이 PalettePredictorEntryReuseFlags[ i ]의 모든 요소들은 0으로 초기화된다.
palette_predictor_run은 어레이 PalettePredictorEntryReuseFlags에서 영이 아닌 엔트리에 선행하는 제로들의 수를 결정하는 데 사용된다.
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의 첫 번째 색상 성분에 대한 현재 팔레트의 크기를 지정하고 다음과 같이 도출된다:
Figure pct00009
CurrentPaletteSize [startComp]의 값은 0 내지 palette_max_size의 범위(경계 포함)에 있어야 한다.
new_palette_entries[ cIdx ][ i ]는 색상 성분 cIdx에 대한 i 번째 시그널링된 팔레트 엔트리에 대한 값을 지정한다.
변수 PredictorPaletteEntries[ cIdx ][ i ]는 색상 성분 cIdx에 대한 예측자 팔레트에서의 i 번째 요소를 지정한다.
변수 CurrentPaletteEntries[ cIdx ][ i ]는 색상 성분 cIdx에 대한 현재 팔레트에서의 i 번째 요소를 지정하며, 다음과 같이 도출된다:
Figure pct00010
palette_escape_val_present_flag가 1과 동일한 것은 현재 코딩 유닛이 적어도 하나의 이스케이프 코딩된 샘플을 포함한다는 것을 지정한다. escape_val_present_flag가 0과 동일한 것은 현재 코딩 유닛에 이스케이프 코딩된 샘플들이 없음을 지정한다. 존재하지 않을 때, 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으로 초기화된다.
copy_above_indices_for_final_run_flag가 1과 동일한 것은 코딩 유닛에서의 마지막 위치들의 팔레트 인덱스들이 수평 트래버스 스캔이 사용되는 경우 위쪽 행에 있는 팔레트 인덱스들로부터 복사되거나 또는 수직 트래버스 스캔이 사용되는 경우 좌측 열에 있는 팔레트 인덱스들로부터 복사된다는 것을 지정한다. copy_above_indices_for_final_run_flag가 0과 동일한 것은 코딩 유닛에서의 마지막 위치들의 팔레트 인덱스들이 PaletteIndexIdc[ num_palette_indices_minus1 ]로부터 복사된다는 것을 지정한다.
copy_above_indices_for_final_run_flag가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
palette_transpose_flag가 1과 동일한 것은 현재 코딩 유닛에서의 샘플들에 대한 인덱스들을 스캔하기 위해 수직 트래버스 스캔이 적용된다는 것을 지정한다. palette_transpose_flag가 0과 동일한 것은 현재 코딩 유닛에서의 샘플들에 대한 인덱스들을 스캔하기 위해 수평 트래버스 스캔이 적용된다는 것을 지정한다. 존재하지 않을 때, palette_transpose_flag의 값은 0과 동일한 것으로 추론된다.
어레이 TraverseScanOrder는 팔레트 코딩을 위한 스캔 순서 어레이를 지정한다. palette_transpose_flag가 0과 동일한 경우 TraverseScanOrder는 수평 스캔 순서 HorTravScanOrder를 할당받고, palette_transpose_flag가 1과 동일한 경우 TraverseScanOrder는 수직 스캔 순서 VerTravScanOrder를 할당받는다.
copy_above_palette_indices_flag가 1과 동일한 것은 수평 트래버스 스캔이 사용되는 경우 팔레트 인덱스가 위쪽 행에서의 동일한 위치에 있는 팔레트 인덱스와 동일하거나 수직 트래버스 스캔이 사용되는 경우 좌측 열에서의 동일한 위치에 있는 팔레트 인덱스와 동일하다는 것을 지정한다. copy_above_palette_indices_flag가 0과 동일한 것은 샘플의 팔레트 인덱스의 표시가 비트스트림에 코딩되거나 추론된다는 것을 지정한다.
변수 CopyAboveIndicesFlag[ xC ][ yC ]가 1과 동일한 것은 팔레트 인덱스가 위쪽 행에 있는 팔레트 인덱스로부터 복사(수평 스캔)되거나 좌측 열에 있는 팔레트 인덱스로부터 복사(수직 스캔)된다는 것을 지정한다. CopyAboveIndicesFlag[ xC ][ yC ]가 0과 동일한 것은 팔레트 인덱스가 비트스트림에 명시적으로 코딩되거나 추론된다는 것을 지정한다. 어레이 인덱스들 xC, yC는 픽처의 좌측 상단 루마 샘플을 기준으로 샘플의 위치 ( xC, yC )를 지정한다. PaletteIndexMap[ xC ][ yC ]의 값은 0 내지 ( MaxPaletteIndex - 1)의 범위(경계 포함)에 있어야 한다.
변수 PaletteIndexMap[ xC ][ yC ]는 CurrentPaletteEntries에 의해 표현되는 어레이에 대한 인덱스인 팔레트 인덱스를 지정한다. 어레이 인덱스들 xC, yC는 픽처의 좌측 상단 루마 샘플을 기준으로 샘플의 위치 ( xC, yC )를 지정한다. PaletteIndexMap[ xC ][ yC ]의 값은 0 내지 MaxPaletteIndex의 범위(경계 포함)에 있어야 한다.
변수 adjustedRefPaletteIndex는 다음과 같이 도출된다:
Figure pct00011
Figure pct00012
CopyAboveIndicesFlag[ xC ][ yC ]가 0과 동일할 때, 변수 CurrPaletteIndex는 다음과 같이 도출된다:
Figure pct00013
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보다 작은 경우, 다음이 적용된다:
Figure pct00014
- 그렇지 않은 경우(palette_run_prefix가 2보다 크거나 같은 경우), 다음이 적용된다:
Figure pct00015
변수 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 ]가, 0과 동일한 cIdx에 대해, 0 내지 (1  <<  ( BitDepthY + 1 ) ) - 1의 범위(경계 포함)에 있어야 하고, 0과 동일하지 않은 cIdx에 대해, 0 내지 (1  <<  ( BitDepthC + 1 ) ) - 1의 범위(경계 포함)에 있어야 한다는 것이 비트스트림 적합성의 요구사항이다.
2.3 VVC에서의 로컬 이중 트리
전형적인 하드웨어 비디오 인코더들 및 디코더들에서, 이웃하는 인트라 블록들 간의 샘플 프로세싱 데이터 의존성으로 인해 픽처가 보다 많은 작은 인트라 블록들을 가질 때 프로세싱 처리율이 떨어진다. 인트라 블록의 예측자 생성은 이웃 블록들로부터의 상단 및 좌측 경계 재구성된 샘플들을 필요로 한다. 따라서, 인트라 예측은 블록 단위로 순차적으로 프로세싱되어야 한다.
HEVC에서, 가장 작은 인트라 CU는 8x8 루마 샘플들이다. 가장 작은 인트라 CU의 루마 성분은 4 개의 4x4 루마 인트라 예측 유닛(PU)으로 더 분할될 수 있지만, 가장 작은 인트라 CU의 크로마 성분들은 더 분할될 수 없다. 따라서, 4x4 크로마 인트라 블록들 또는 4x4 루마 인트라 블록들이 프로세싱될 때 최악의 하드웨어 프로세싱 처리율이 발생한다.
VTM5.0에서, 단일 코딩 트리에서, 크로마 파티션들이 항상 루마를 뒤따르고 가장 작은 인트라 CU가 4x4 루마 샘플들이기 때문에, 가장 작은 크로마 인트라 CB는 2x2이다. 따라서, VTM5.0에서, 단일 코딩 트리에서의 가장 작은 크로마 인트라 CB들은 2x2이다. VVC 디코딩에 대한 최악의 하드웨어 프로세싱 처리율은 HEVC 디코딩에 대한 것의 1/4에 불과하다. 더욱이, 크로마 인트라 CB의 재구성 프로세스는 CCLM(cross-component linear model), 4-탭 보간 필터들, PDPC(position-dependent intra prediction combination) 및 CIIP(combined inter intra prediction)를 포함한 툴들을 채택한 후의 HEVC에서의 것보다 훨씬 더 복잡해진다. 하드웨어 디코더들에서 높은 프로세싱 처리율을 달성하는 것은 어렵다. 이 섹션에서는, 최악의 하드웨어 프로세싱 처리율을 개선시키는 방법이 제안된다.
이 방법의 목표는 크로마 인트라 CB들의 분할을 제약하는 것에 의해 16 개의 크로마 샘플보다 작은 크로마 인트라 CB들을 허용하지 않는 것이다.
단일 코딩 트리에서, SCIPU는 크로마 블록 크기가 TH 개의 크로마 샘플보다 크거나 같고 4TH 개의 루마 샘플보다 작은 적어도 하나의 자식 루마 블록을 가지는 코딩 트리 노드로서 정의되며, 여기서 TH는 이 기고문에서 16으로 설정된다. 각각의 SCIPU에서, 모든 CB들이 인터이거나, 또는 모든 CB들이 비-인터(non-inter), 즉, 인트라 또는 IBC인 것이 요구된다. 비-인터 SCIPU의 경우에, 비-인터 SCIPU의 크로마는 더 분할되지 않아야 하고 SCIPU의 루마는 더 분할되도록 허용되는 것이 더 요구된다. 이러한 방식으로, 가장 작은 크로마 인트라 CB 크기는 16 개의 크로마 샘플이며, 2x2, 2x4, 및 4x2 크로마 CB들은 제거된다. 추가적으로, 비-인터 SCIPU의 경우에 크로마 스케일링이 적용되지 않는다. 추가적으로, 루마 블록들이 더 분할되고 크로마 블록들이 분할되지 않을 때, 로컬 이중 트리 코딩 구조가 구성된다.
2 개의 SCIPU 예가 도 5a 및 도 5b에 도시되어 있다. 도 5a에서, 8x4 크로마 샘플들의 하나의 크로마 CB 및 3 개의 루마 CB(4x8, 8x8, 4x8 루마 CB들)가 하나의 SCIPU를 형성하는데, 왜냐하면 8x4 크로마 샘플들로부터 삼진 트리(TT) 분할이 16 개의 크로마 샘플보다 작은 크로마 CB들을 결과할 것이기 때문이다. 도 5b에서, 4x4 크로마 샘플들의 하나의 크로마 CB(8x4 크로마 샘플들의 좌측) 및 3 개의 루마 CB(8x4, 4x4, 4x4 루마 CB들)가 하나의 SCIPU를 형성하고 4x4 샘플들의 다른 하나의 크로마 CB(8x4 크로마 샘플들의 우측) 및 2 개의 루마 CB(8x4, 8x4 루마 CB들)가 하나의 SCIPU를 형성하는데, 왜냐하면 4x4 크로마 샘플들로부터의 이진 트리(BT) 분할이 16 개의 크로마 샘플보다 작은 크로마 CB들을 결과할 것이기 때문이다.
제안된 방법에서, SCIPU의 유형은 현재 슬라이스가 I-슬라이스이거나 (VVC에서 인터 4x4가 허용되지 않기 때문에) 현재 SCIPU가 한 번 더 분할된 후에 그 내에 4x4 루마 파티션을 갖는 경우 비-인터인 것으로 추론되고; 그렇지 않은 경우, SCIPU의 유형(인터 또는 비-인터)은 SCIPU 내의 CU들을 파싱하기 전에 하나의 시그널링된 플래그에 의해 표시된다.
위의 방법을 적용하는 것에 의해, 2x2 크로마 블록들 대신에, 4x4, 2x8, 또는 8x2 크로마 블록들이 프로세싱될 때 최악의 하드웨어 프로세싱 처리율이 발생한다. 최악의 하드웨어 프로세싱 처리율은 HEVC에서의 것과 동일하며 VTM5.0에서의 것의 4배이다.
2.4 변환 스킵 (TS)
HEVC에서와 같이, 블록의 잔차는 변환 스킵 모드로 코딩될 수 있다. 신택스 코딩의 중복성을 피하기 위해, CU 레벨 MTS_CU_flag가 0과 동일하지 않을 때 변환 스킵 플래그는 시그널링되지 않는다. 변환 스킵에 대한 블록 크기 제한은 JEM4에서의 MTS에 대한 것과 동일하며, 이는 블록 폭 및 높이 양쪽 모두가 32보다 작거나 같을 때 변환 스킵이 CU에 대해 적용 가능하다는 것을 나타낸다. 현재 CU에 대해 LFNST 또는 MIP가 활성화될 때 암시적 MTS 변환이 DCT2로 설정된다는 점에 유의한다. 또한 MTS가 인터 코딩된 블록들에 대해 인에이블될 때 암시적 MTS가 여전히 인에이블될 수 있다.
추가적으로, 변환 스킵 블록의 경우, 최소 허용 양자화 파라미터(QP)는 6*(internalBitDepth - inputBitDepth) + 4로서 정의된다.
2.5 대안적인 루마 1/2 펠 보간 필터들
JVET-N0309에서, 대안적인 1/2 펠 보간 필터들이 제안된다.
1/2 펠 루마 보간 필터의 전환은 모션 벡터 정확도에 따라 행해진다. 기존의 1/4 펠, 전체 펠 및 4 펠 AMVR 모드들 외에도, 새로운 1/2 펠 정확도 AMVR 모드가 도입된다. 1/2 펠 모션 벡터 정확도의 경우에만, 대안적인 1/2 펠 루마 보간 필터가 선택될 수 있다.
1/2 펠 모션 벡터 정확도(즉, 1/2 펠 AMVR 모드)를 사용하는 비-아핀 비-병합 인터 코딩된 CU의 경우, HEVC/VVC 1/2 펠 루마 보간 필터와 하나 이상의 대안적인 1/2 펠 보간 사이의 전환은 새로운 신택스 요소 hpelIfIdx의 값에 기초하여 이루어진다. 신택스 요소 hpelIfIdx는 1/2 펠 AMVR 모드의 경우에만 시그널링된다. 공간적 병합 후보를 사용하는 스킵/병합 모드의 경우에, 신택스 요소 hpelIfIdx의 값은 이웃 블록으로부터 상속된다.
3. 본 명세서에 설명된 기술적 해결책들 및 실시예들에 의해 해결되는 기술적 문제들
1. 이스케이프 심벌들의 현재 이진화는 고정 길이가 아닌데, 고정 길이는 균일 분포를 갖는 소스에 적합할 수 있다.
2. 현재 팔레트 코딩 설계는 가능한 중복성을 제거하기 위해 인덱스 조정 프로세스를 수행하는데, 이는, 예를 들면, 이스케이프 값 인덱스가 잘못 도출될 때, 파싱 의존성을 도입할 수 있다.
3. 현재 인덱스를 도출하는 데 이용되는 참조 인덱스는 인코더 제약을 필요로 할 수 있으며, 인코더 제약은 현재 설계에서 고려되지 않고 코덱 설계에 바람직하지 않다.
4. 로컬 이중 트리가 인에이블될 때, 이전 블록과 현재 블록의 팔레트 엔트리들은 상이한 수의 색상 성분들을 가질 수 있다. 그러한 경우를 어떻게 처리할지는 명확하지 않다.
5. 단일 트리 영역으로부터 이중 트리 영역으로 코딩할 때 일부 팔레트 엔트리들이 반복될 수 있으므로 로컬 이중 트리와 PLT가 동시에 적용될 수 없다. 일 예가 도 6에 도시되어 있다.
6. joint_cbcr 모드에 대한 크로마 QP 테이블이 제한될 수 있다.
4. 실시예들 및 해결책들의 목록
아래의 리스트는 일반 개념들을 설명하기 위한 예들로서 간주되어야 한다. 이러한 항목들이 좁은 의미로 해석되어서는 안 된다. 게다가, 이러한 항목들은 임의의 방식으로 조합될 수 있다.
이하의 예들은 VVC에서의 팔레트 방식 및 다른 모든 팔레트 관련 방식들에 적용될 수 있다.
Modulo(x, M)는 x가 양의 정수일 때 (x%M)으로서 정의되고; 그렇지 않은 경우, 이는 M-((-x)%M)로서 정의된다.
이하의 예들은 VVC에서의 팔레트 방식 및 다른 모든 팔레트 관련 방식들에 적용될 수 있다.
1. 이스케이프 심벌들을 코딩하기 위해 고정 길이 코딩이 적용될 수 있다.
a. 일 예에서, 이스케이프 심벌들은 고정 길이 이진화를 사용하여 시그널링될 수 있다.
b. 일 예에서, 이스케이프 심벌은 고정 길이 이진화에서 N 비트를 사용하여 시그널링될 수 있다.
c. 일 예에서, 이스케이프 심벌을 시그널링하기 위한 코드 길이(예를 들면, 글머리 기호 1.b에서 언급된 N)는 내부 비트 깊이에 의존할 수 있다.
i. 대안적으로, 이스케이프 심벌을 시그널링하기 위한 코드 길이는 입력 비트 깊이에 의존할 수 있다.
ii. 대안적으로, 이스케이프 심벌을 시그널링하기 위한 코드 길이는 내부 비트 깊이와 입력 비트 깊이 사이의 차이에 의존할 수 있다.
iii. 일 예에서, N은 입력/내부 비트 깊이와 동일하게 설정된다.
d. 일 예에서, 이스케이프 심벌을 시그널링하기 위한 코드 길이(예를 들면, 글머리 기호 1.b에서 언급된 N)는 양자화 파라미터, 즉 Qp에 의존할 수 있다.
i. 일 예에서, 이스케이프 심벌을 시그널링하기 위한 코드 길이는, f(Qp)에 의해 표기되는 것과 같은, 양자화 파라미터의 함수일 수 있다.
1. 일 예에서, 함수 f는 (internal bitdepth - g(Qp))로서 정의될 수 있다.
2. 일 예에서, N은 (internal bitdepth - max (16, (Qp - 4)/6))으로 설정될 수 있다.
3. 일 예에서, N은 (internal bitdepth - max (QpPrimeTsMin, (Qp - 4)/6))으로 설정될 수 있으며, 여기서 qP는 디코딩된 양자화 파라미터이고 QpPrimeTsMin은 변환 스킵 모드에 대한 최소 허용 양자화 파라미터이다.
4. 대안적으로, 게다가, 코드 길이 N은 max(A, internal bitDepth - (Max(QpPrimeTsMin, Qp ) - 4)/6)으로 설정될 수 있으며, 여기서 A는, 0 또는 1과 같은, 음이 아닌 정수 값이다.
e. 위의 예들에서, N은 0보다 크거나 같을 수 있다.
2. 하나의 비디오 유닛(예를 들면, CU)에서 이스케이프 심벌들의 사용을 디스에이블시키는 것이 제안된다.
a. 대안적으로, 게다가, 이스케이프 심벌 존재의 표시의 시그널링이 스킵된다.
b. 일 예에서, 이스케이프 심벌들의 사용을 인에이블/디스에이블시킬지는 양자화 파라미터들 및/또는 비트 깊이에 의존할 수 있다.
i. 일 예에서, (internal bitDepth - (Max(QpPrimeTsMin, Qp ) - 4)/6)이 0보다 크지 않은 경우, 이스케이프 심벌들의 사용이 디스에이블될 수 있다.
3. 차수 3의 EG를 제외한 가변 길이 코딩이 이스케이프 심벌들을 코딩하는 데 적용될 수 있다.
a. 일 예에서, 이스케이프 심벌의 이진화는 입력 파라미터 K를 갖는 절단된 이진(TB)일 수 있다.
b. 일 예에서, 이스케이프 심벌의 이진화는 차수 K의 EG일 수 있으며, 여기서 K는 3과 동일하지 않다.
i. 일 예에서, 이스케이프 심벌의 이진화는 차수 0의 EG일 수 있다.
1. 대안적으로, 일 예에서, 이스케이프 심벌의 이진화는 차수 1의 EG일 수 있다.
2. 대안적으로, 일 예에서, 이스케이프 심벌의 이진화는 차수 2의 EG일 수 있다.
c. 위의 예들에서, K는 정수일 수 있으며 다음에 의존할 수 있다.
i. SPS/VPS/PPS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU 행/LCU들의 그룹/브릭들에서 시그널링되는 메시지.
ii. 내부 비트 깊이
iii. 입력 비트 깊이
iv. 내부 비트 깊이와 입력 깊이 사이의 차이
v. 현재 블록의 블록 치수
vi. 현재 블록의 현재 양자화 파라미터
vii. 색상 포맷의 표시(예컨대, 4:2:0, 4:4:4, RGB 또는 YUV)
ⅷ. 코딩 구조(예컨대, 단일 트리 또는 이중 트리)
ix. 색상 성분(예컨대, 루마 성분 및/또는 크로마 성분들)
4. 이스케이프 심벌들을 코딩하기 위한 다수의 이진화 방법들이 비디오 유닛(예를 들면, 시퀀스/픽처/슬라이스/타일/브릭/서브픽처/CTU 행/CTU/CTB/CB/CU/픽처 내의 서브영역)에 그리고/또는 이스케이프 심벌들의 하나 또는 다수의 값에 대해 적용될 수 있다.
a. 일 예에서, 비디오 유닛에 대해 그리고/또는 이스케이프 심벌들의 하나 또는 다수의 값에 대해 다수의 이진화 방법들 중 하나를 어떻게 선택할지가 시그널링될 수 있다.
b. 일 예에서, 비디오 유닛에 대해 그리고/또는 이스케이프 심벌들의 하나 또는 다수의 값에 대해 다수의 이진화 방법들 중 하나를 어떻게 선택할지가 도출될 수 있다.
c. 일 예에서, 하나의 비디오 유닛에 대해 그리고/또는 이스케이프 심벌들의 하나 또는 다수의 값에 대해, 2 개 이상의 이진화 방법이 적용될 수 있다.
i. 일 예에서, 선택된 이진화 방법을 알려주기 위해 인덱스 또는 플래그가 인코딩/디코딩될 수 있다.
이하의 글머리 기호들에서, p는 색상 성분의 심벌 값을 나타낼 수 있고, bd는 비트 깊이(예를 들면, 내부 비트 깊이 또는 입력 비트 깊이)를 나타낼 수 있으며, ibd는 입력 비트 깊이를 나타낼 수 있고, Qp는 변환 스킵 블록들 또는 변환 블록들에 대한 양자화 파라미터를 나타낼 수 있다. 추가적으로, 루마 성분과 크로마 성분에 대한 QP들은 상이하거나 동일할 수 있다. 비트 깊이는 주어진 색상 성분과 연관될 수 있다.
5. 양자화 및/또는 역양자화 프로세스를 어떻게 적용할지는 블록이 팔레트 모드로 코딩되는지 여부에 의존할 수 있다.
a. 일 예에서, 이스케이프 심벌들에 대한 양자화 및/또는 역양자화 프로세스는 양자화가 적용된 정상 인트라/인터 코딩된 블록들에 사용되는 것과 상이할 수 있다.
6. 이스케이프 심벌들에 대한 양자화 및/또는 역양자화 프로세스는 비트 시프트를 사용할 수 있다.
a. 일 예에서, 우측 비트 시프트는 이스케이프 심벌들을 양자화하는 데 사용될 수 있다.
i. 일 예에서, 이스케이프 심벌은 f(p, Qp)로서 시그널링될 수 있으며, 여기서 p는 입력 심벌 값(예를 들면, 입력 루마/크로마 샘플 값)이고, Qp는 대응하는 색상 성분에 대한 도출된 양자화 파라미터이다.
1. 일 예에서, 함수 f는 p>> g(Qp)로서 정의될 수 있다.
2. 일 예에서, 함수 f는 (p + (1 << (g(QP) - 1)))>> g(Qp)로서 정의될 수 있다.
3. 일 예에서, 함수 f는 (0, (1<< bd)-1, (p + (1 << (g(QP) - 1)))>> g(Qp))로서 정의될 수 있다.
ii. 일 예에서, 이스케이프 심벌은 h(p)로서 시그널링될 수 있다.
1. 일 예에서, 함수 h는 p >> N으로서 정의될 수 있다.
2. 일 예에서, 함수 h는 (p + (1 << (N - 1))) >> N으로서 정의될 수 있다.
3. 일 예에서, cu_transquant_bypass_flag가 1과 동일할 때, N은 0으로 설정될 수 있다.
4. 일 예에서, cu_transquant_bypass_flag가 1과 동일할 때, N은 (bd-ibd)와 동일할 수 있으며, 여기서 bd는 내부 비트 깊이이고 ibd는 입력 비트 깊이이다.
5. 일 예에서, 함수 h는 clip(0, (1<<(bd-N)-1, p>>N)으로서 정의될 수 있으며, 여기서 bd는 현재 색상 성분에 대한 내부 비트 깊이이다.
6. 일 예에서, 함수 h는 clip(0, (1<<(bd-N)-1, (p + (1 << (N - 1))) >> N)으로서 정의될 수 있으며, 여기서 bd는 현재 색상 성분에 대한 내부 비트 깊이이다.
7. 위의 예에서, N은 [0, (bd - 1)]의 범위에 있을 수 있다.
b. 일 예에서, 좌측 비트 시프트는 이스케이프 심벌들을 역양자화하는 데 사용될 수 있다.
i. 일 예에서, 이스케이프 심벌은 f(p,Qp)로서 역양자화될 수 있으며, 여기서 p는 디코딩된 이스케이프 심벌이고, Qp는 대응하는 색상 성분에 대한 도출된 양자화 파라미터이다.
1. 일 예에서, f는 p<<g(Qp)로서 정의될 수 있다.
2. 일 예에서, f는 (p<<g(Qp)) + (1 << (g(Qp) - 1))로서 정의될 수 있다.
ii. 일 예에서, 이스케이프 심벌은 f(p,Qp)로서 재구성될 수 있으며, 여기서 p는 디코딩된 이스케이프 심벌이다.
1. 일 예에서, f는 clip (0, (1<<bd)-1, p<< g(Qp))로서 정의될 수 있다.
2. 일 예에서, f는 clip (0, (1<<bd)-1, (p<<g(Qp))+ (1 << (g(Qp) - 1)))로서 정의될 수 있다.
iii. 일 예에서, 이스케이프 심벌은 h(p)로서 재구성될 수 있다.
1. 일 예에서, 함수 h는 p << N으로서 정의될 수 있다.
2. 일 예에서, 함수 h는 (p << N) + (1 << (N - 1))로서 정의될 수 있다.
3. 일 예에서, cu_transquant_bypass_flag가 1과 동일할 때, N은 0으로 설정될 수 있다.
4. 일 예에서, cu_transquant_bypass_flag가 1과 동일할 때, N은 (bd-ibd)와 동일할 수 있으며, 여기서 bd는 내부 비트 깊이이고 ibd는 입력 비트 깊이이다.
5. 일 예에서, N은 (max (QpPrimeTsMin, qP) - 4)/6으로 설정되며, 여기서 qP는 디코딩된 양자화 파라미터이고 QpPrimeTsMin은 변환 스킵 모드에 대한 최소 허용 양자화 파라미터이다.
a) 위의 예에서, 루마와 크로마 양쪽 모두가 변환 스킵 모드들을 갖는 경우, 변환 스킵 모드에 대한 상이한 최소 허용 양자화 파라미터들이 상이한 색상 성분들에 적용될 수 있다.
6. 대안적으로, 위의 예들의 경우, N은, min(bd - 1, N)과 같이, 더 클리핑될 수 있다.
7. 위의 예에서, N은 [0, (bd - 1)]의 범위에 있을 수 있다.
7. 좌측 시프트를 역양자화로서 적용할 때, 이스케이프 심벌 p의 재구성 오프셋은 비트 깊이 정보에 의존할 수 있다.
a. 일 예에서, 이는 내부 비트 깊이와 입력 비트 깊이 사이의 차이, 즉 deltaBD = 내부 비트 깊이 - 입력 비트 깊이에 의존할 수 있다.
b. K가 deltaBD보다 작거나 같을 때, 재구성된 값은 p<<K일 수 있다.
c. K가 deltaBD보다 클 때, 재구성 값은 (p<<K) + (1<<(K-1))일 수 있다.
d. K가 T0(예를 들면, T0=2)보다 작거나 같을 때, 재구성된 값은 p<<K일 수 있다.
e. K가 T1(예를 들면, T1=2)보다 클 때, 재구성 값은 (p<<K) + (1<<(K-1))일 수 있다.
f. 일 예에서, 글머리 기호 d 및 글머리 기호 e에서의 T0 및 T1은 비트스트림에서, 예컨대, 시퀀스/픽처/슬라이스/타일/브릭/서브픽처 레벨에서 시그널링될 수 있다.
g. 일 예에서, 재구성 값은 (p<<K) + ((1<<(K-1))>>deltaBD<<deltaBD)일 수 있다.
h. 일 예에서, 재구성 값은 ((p<<(K+1)) + (1<<K))>>(deltaBD+1)<<deltaBD일 수 있다.
i. 일 예에서, deltaBD는 비트스트림에서, 예컨대, 시퀀스/픽처/슬라이스/타일/브릭/서브픽처 레벨에서 시그널링될 수 있다.
j. 일 예에서, 어느 재구성 값이 사용되어야 하는지(예를 들면, 글머리 기호 b 내지 글머리 기호 e)는 현재 블록의 양자화 파라미터에 의존할 수 있다.
k. 일 예에서, 어느 재구성 값이 사용되어야 하는지(예를 들면, 글머리 기호 b 내지 글머리 기호 e)는 deltaBD의 값에 의존할 수 있다.
l. 일 예에서, K는 g(Qp)로 설정될 수 있다.
8. 위의 예들에서, 다음이 적용될 수 있다:
a. 일 예에서, 이스케이프 심벌들은 콘텍스트 코딩될 수 있다.
b. 일 예에서, 이스케이프 심벌들은 바이패스 코딩될 수 있다.
c. 일 예에서, g(Qp)는 (Qp-4)/6 또는 QP/8로서 정의될 수 있다.
i. 대안적으로, g(Qp)는 Qp/6 또는 QP/8로서 정의될 수 있다.
ii. 대안적으로, g(Qp)는 max(16, Qp/6))으로서 정의될 수 있다.
iii. 대안적으로, g(Qp)는 max(16, (Qp-4)/6)으로서 정의될 수 있다.
iv. 대안적으로, g(Qp)는 max ((bd- ibd)*6 + 4, (Qp-4)/6)으로서 정의될 수 있다.
v. 대안적으로, g(Qp)는 max (M, (Qp-4)/6)으로서 정의될 수 있다.
1. 일 예에서, M은 디코더에 시그널링될 수 있다.
vi. 대안적으로, g(Qp)는 max ((M,Qp)-4)/6으로서 정의될 수 있다.
1. 일 예에서, M은 SPS에 표시될 수 있다.
2. 일 예에서, 동일하거나 상이한 M이 루마 및 크로마 성분들에 적용될 수 있다.
3. 일 예에서, M은 (bd - ibd)*6 + 4와 동일할 수 있다.
vii. 대안적으로, g(Qp)는 Qp/6 또는 QP/8로서 정의될 수 있다.
ⅷ. 대안적으로, g(Qp)는 (max (16, Qp)/6)으로서 정의될 수 있다.
ix. 대안적으로, g(Qp)는 (max (16, Qp) -4)/6으로서 정의될 수 있다.
d. 일 예에서, g(Qp)의 값은 [0, (bd - 1)]의 범위에 있을 수 있다.
e. 일 예에서, max 함수 max (a,i)는 (i <= a ? a : i)로서 정의될 수 있다.
i. 대안적으로, 일 예에서, max 함수 max (a,i)는 (i < a ? a : i)로서 정의될 수 있다.
f. 일 예에서, N은 정수(예를 들면, 8 또는 10)일 수 있으며 다음에 의존할 수 있다.
i. SPS/VPS/PPS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU 행/LCU들의 그룹/브릭들에서 시그널링되는 메시지.
ii. 내부 비트 깊이
iii. 입력 비트 깊이
iv. 내부 비트 깊이와 입력 깊이 사이의 차이
v. 현재 블록의 블록 치수
vi. 현재 블록의 현재 양자화 파라미터
vii. 색상 포맷의 표시(예컨대, 4:2:0, 4:4:4, RGB 또는 YUV)
ⅷ. 코딩 구조(예컨대, 단일 트리 또는 이중 트리)
ix. 색상 성분(예컨대, 루마 성분 및/또는 크로마 성분들)
x. 슬라이스/타일 그룹 유형 및/또는 픽처 유형
g. 일 예에서, N은 디코더에 시그널링될 수 있다.
9. 이스케이프 값들에 대한 Qp가 클리핑될 수 있다.
a. 일 예에서, 이스케이프 값들에 적용되는 가장 낮은 Qp는 min_qp_prime_ts_ minus4와 동일할 수 있다.
b. 일 예에서, 이스케이프 값들에 적용되는 가장 낮은 Qp는 min_qp_prime_ts_ minus4에 관련될 수 있다.
i. 일 예에서, 이스케이프 값들에 적용되는 가장 낮은 Qp는 min_qp_prime_ts_ minus4 + 4와 동일할 수 있다.
c. 일 예에서, 각각의 색상 성분에 대한 가장 낮은 Qp는 SPS/PPS/VPD/DPS/타일/슬라이스 헤더에 표시될 수 있다.
d. 일 예에서, 이스케이프 값들에 적용되는 가장 낮은 Qp는 (bd-ibd)*6 + 4일 수 있으며, 여기서 bd는 내부 비트 깊이이고 ibd는 특정 색상 성분에 대한 입력 비트 깊이를 나타낸다.
e. 일 예에서, 위의 예들은 특정 색상 성분에 적용될 수 있다.
10. 위의 예들에서, 이스케이프 값들에 대한 크로마 Qp는 매핑 이전/이후의 Qp를 사용할 수 있다.
11. 팔레트 모드에서 현재 팔레트 인덱스를 도출할 때 참조 인덱스를 사용하지 않는 것이 제안된다.
a. 일 예에서, 팔레트 인덱스는 참조 인덱스(예를 들면, adjustedRefPaletteIndex)의 가능성을 배제하지 않고 직접 시그널링될 수 있다.
i. 대안적으로, 일 예에서, 인코더는 참조 인덱스가 현재 인덱스와 항상 상이할 수 있도록 제약될 수 있다. 그러한 경우에, 팔레트 인덱스는 참조 인덱스의 가능성을 배제하는 것에 의해 시그널링될 수 있다.
b. 일 예에서, 팔레트 인덱스의 이진화는 최대 팔레트 인덱스를 이진화 입력 파라미터로서 사용하는 절단된 이진(TB)일 수 있다.
c. 일 예에서, 팔레트 인덱스의 이진화는 고정 길이일 수 있다.
d. 일 예에서, 팔레트 인덱스의 이진화는 차수 K의 EG일 수 있다.
i. 일 예에서, K는 정수(예를 들면, 1, 2 또는 3)일 수 있으며 다음에 의존할 수 있다.
1. SPS/VPS/PPS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU 행/LCU들의 그룹/브릭들에서 시그널링되는 메시지.
2. 내부 비트 깊이
3. 입력 비트 깊이
4. 내부 비트 깊이와 입력 깊이 사이의 차이
5. 현재 블록의 블록 치수
6. 현재 블록의 현재 양자화 파라미터
7. 색상 포맷의 표시(예컨대, 4:2:0, 4:4:4, RGB 또는 YUV)
8. 코딩 구조(예컨대, 단일 트리 또는 이중 트리)
9. 색상 성분(예컨대, 루마 성분 및/또는 크로마 성분들)
e. 일 예에서, 위의 예들은 현재 블록이 하나의 이스케이프 샘플을 적어도 가질 때에만 적용될 수 있다.
12. 현재 팔레트 인덱스는 이전 팔레트 인덱스들과 독립적으로 시그널링될 수 있다.
a. 일 예에서, 이전 팔레트 인덱스들을 사용할지 여부 및/또는 어떻게 사용할지는 현재 블록에 이스케이프 샘플(들)이 있는지 여부에 의존할 수 있다.
13. 이스케이프 심벌들에 대한 인덱스로부터 비-이스케이프 심벌들에 대한 인덱스로의 도출이 허용되지 않을 수 있다.
a. 일 예에서, 이스케이프 심벌들이 적용되고 팔레트 인덱스가 이스케이프 심벌들에 대한 인덱스와 동일하지 않을 때, 심벌들을 이스케이프 심벌로서 디코딩하는 것이 허용되지 않을 수 있다.
14. 비-이스케이프 심벌들에 대한 인덱스로부터 이스케이프 심벌들에 대한 인덱스로의 도출이 허용되지 않을 수 있다.
a. 일 예에서, 이스케이프 심벌들이 적용되고 팔레트 인덱스가 이스케이프 심벌들에 대한 인덱스와 동일할 때, 심벌들을 비-이스케이프 심벌로서 디코딩하는 것이 허용되지 않을 수 있다.
15. 도출된 팔레트 인덱스는 현재 팔레트 테이블 크기에 의해 제한될 수 있다.
a. 일 예에서, 팔레트 인덱스가 MaxPaletteIndex보다 클 때, 이는 MaxPaletteIndex와 동일하도록 수정될 수 있다.
16. 도출된 팔레트 인덱스는 이스케이프 심벌들에 대한 인덱스를 제외한 현재 팔레트 테이블 크기에 의해 제한될 수 있다.
a. 일 예에서, 이스케이프 심벌들이 적용되지 않고 팔레트 인덱스가 MaxPaletteIndex보다 클 때, 이는 MaxPaletteIndex와 동일하게 수정될 수 있다.
b. 일 예에서, 이스케이프 심벌들이 적용되고 팔레트 인덱스가 (MaxPaletteIndex - 1)보다 클 때, 이는 (MaxPaletteIndex - 1)과 동일하도록 수정될 수 있다.
17. 이스케이프 심벌을 나타내는 인덱스는 수정되도록 허용되지 않을 수 있다.
a. 일 예에서, MaxPaletteIndex와 동일한 인덱스는 현재 블록에 이스케이프 심벌들이 존재할 때 항상 이스케이프 심벌을 나타낼 수 있다.
b. 일 예에서, MaxPaletteIndex와 동일하지 않은 인덱스는 이스케이프 심벌을 나타내는 인덱스로서 디코딩될 수 없다.
18. 참조 인덱스와 현재 인덱스 사이의 차이를 코딩하는 것이 제안된다.
a. 일 예에서, 0과 동일한 차이는 코딩되도록 허용되지 않을 수 있다.
b. 대안적으로, 팔레트 코딩된 블록에서의 첫 번째 인덱스에 대해, 인덱스가 직접 코딩될 수 있다.
19. 참조 인덱스(R로서 표기됨)와 현재 인덱스(C로서 표기됨) 사이의 차이의 모듈로(modulo)를 코딩하는 것이 제안된다.
a. 일 예에서, I = Modulo(C-R, MaxPaletteIndex)가 코딩될 수 있다.
i. 일 예에서, 인덱스는 Modulo(I+R, MaxPaletteIndex)로서 재구성될 수 있다.
ii. 일 예에서, 0과 동일한 Modulo(C-R, MaxPaletteIndex)는 비트스트림에서 허용되지 않을 수 있다.
iii. 일 예에서, cMax = MaxPaletteIndex인 절단된 이진 코드가 값을 코딩하는 데 사용될 수 있다.
iv. 대안적으로, 팔레트 코딩된 블록에서의 첫 번째 인덱스에 대해, 인덱스가 직접 코딩될 수 있다.
b. 일 예에서, I = Modulo(C-R, MaxPaletteIndex) - 1이 코딩될 수 있다.
i. 일 예에서, 인덱스는 Modulo(I+1+R, MaxPaletteIndex)로서 재구성될 수 있다.
ii. 일 예에서, 0보다 작은 Modulo(C-R, MaxPaletteIndex) - 1은 비트스트림에서 허용되지 않을 수 있다.
iii. 일 예에서, cMax = (MaxPaletteIndex - 1)인 절단된 이진 코드가 값 I를 코딩하는 데 사용될 수 있다.
iv. 대안적으로, 팔레트 코딩된 블록에서의 첫 번째 인덱스에 대해, Modulo(C-R, MaxPaletteIndex)가 코딩될 수 있다.
v. 대안적으로, 팔레트 코딩된 블록에서의 첫 번째 인덱스에 대해, 인덱스가 직접 코딩될 수 있다.
20. 팔레트 블록의 디코딩의 시작에서, 참조 인덱스 R은 -1과 동일하게 설정될 수 있다.
a. 대안적으로, 참조 인덱스 R은 0과 동일하게 설정될 수 있다.
21. 팔레트 모드와 로컬 이중 트리를 배타적으로 인에이블시키는 것이 제안된다.
a. 일 예에서, 팔레트 모드가 인에이블될 때 로컬 이중 트리가 허용되지 않을 수 있다.
i. 대안적으로, 일 예에서, 로컬 이중 트리가 인에이블될 때 팔레트 모드가 허용되지 않을 수 있다.
b. 일 예에서, 로컬 이중 트리가, 4:4:4와 같은, 특정 색상 포맷에 대해 인에이블되지 않는다.
c. 일 예에서, 코딩 트리가 MODE_TYPE_INTRA일 때 팔레트 모드가 허용되지 않을 수 있다.
22. 로컬 이중 트리가 적용될 때 팔레트 예측 테이블 내의 반복되는 팔레트 엔트리들을 제거하는 것이 제안된다.
a. 일 예에서, 로컬 이중 트리가 적용될 때 팔레트 예측 테이블이 리셋될 수 있다.
i. 대안적으로, 일 예에서, 디코더는 예측 테이블 내의 모든 팔레트 엔트리들을 검사하고 로컬 이중 트리가 적용될 때 반복되는 팔레트 엔트리들을 제거할 수 있다.
ii. 대안적으로, 일 예에서, 인코더는 2 개의 팔레트 엔트리의 3 개의 성분이 상이할 때 2 개의 팔레트 엔트리를 상이한 것으로 간주하는 제약을 추가할 수 있다.
23. 현재 팔레트 엔트리가 팔레트 예측 테이블 내의 엔트리와 상이한 수의 색상 성분들을 가질 때, 팔레트 예측 테이블은 사용되도록 허용되지 않을 수 있다.
a. 일 예에서, 현재 팔레트 엔트리가 예측과 상이한 수의 색상 성분들을 가질 때 팔레트 예측 테이블 내의 모든 엔트리들에 대한 재사용됨(reused) 플래그들이 참으로서 표시될 수 있지만 현재 블록에 대해 사용되지 않을 수 있다.
b. 일 예에서, 현재 팔레트 엔트리가 예측과 상이한 수의 색상 성분들을 가질 때 팔레트 예측 테이블 내의 모든 엔트리들에 대한 재사용됨 플래그들이 거짓으로서 표시될 수 있다.
24. 예측 테이블과 현재 팔레트 테이블이 상이한 색상 성분(들)을 가질 때, 팔레트 예측 테이블이 사용되도록 허용되지 않을 수 있다.
a. 일 예에서, 예측 테이블과 현재 팔레트 테이블이 상이한 색상 성분들을 가질 때 팔레트 예측 테이블 내의 모든 엔트리들에 대한 재사용됨 플래그들이 참으로서 표시될 수 있지만 현재 블록에 대해 사용되지 않을 수 있다.
b. 일 예에서, 예측 테이블과 현재 팔레트 테이블이 상이한 색상 성분들을 가질 때 팔레트 예측 테이블 내의 모든 엔트리들에 대한 재사용됨 플래그들이 거짓으로서 표시될 수 있다.
25. 이스케이프 심벌들이 예측 코딩될 수 있다, 예컨대, 이전에 코딩된 이스케이프 심벌들에 기초하여 코딩될 수 있다.
a. 일 예에서, 하나의 성분의 이스케이프 심벌이 동일한 색상 성분에서의 코딩된 값들에 의해 예측될 수 있다.
i. 일 예에서, 이스케이프 심벌은 예측자와 동일한 성분에서의 하나의 이전에 코딩된 이스케이프 심벌을 이용할 수 있으며 그들 사이의 잔차가 시그널링될 수 있다.
ii. 대안적으로, 이스케이프 심벌은 예측자와 동일한 성분에서의 이전에 K 번째 코딩된 이스케이프 심벌을 이용할 수 있으며 그들 사이의 잔차가 시그널링될 수 있다.
iii. 대안적으로, 이스케이프 심벌은 동일한 성분에서의 다수의(예를 들면, K 개의) 코딩된 이스케이프 심벌들로부터 예측될 수 있다.
1. 일 예에서, K는 정수(예를 들면, 1, 2 또는 3)일 수 있으며 다음에 의존할 수 있다.
a) SPS/VPS/PPS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU 행/LCU들의 그룹/브릭들에서 시그널링되는 메시지.
b) 내부 비트 깊이
c) 입력 비트 깊이
d) 내부 비트 깊이와 입력 깊이 사이의 차이
e) 현재 블록의 블록 치수
f) 현재 블록의 현재 양자화 파라미터
g) 색상 포맷의 표시(예컨대, 4:2:0, 4:4:4, RGB 또는 YUV)
h) 코딩 구조(예컨대, 단일 트리 또는 이중 트리)
i) 색상 성분(예컨대, 루마 성분 및/또는 크로마 성분들)
b. 일 예에서, 하나의 성분의 이스케이프 심벌이 다른 성분의 코딩된 값들에 의해 예측될 수 있다.
c. 일 예에서, 픽셀은 다수의 색상 성분들을 가질 수 있고, 픽셀이 이스케이프 심벌로서 취급되는 경우, 하나의 성분의 값이 다른 성분들의 샘플들의 값들에 의해 예측될 수 있다.
i. 일 예에서, 이스케이프 심벌의 U 성분이 해당 심벌의 V 성분에 의해 예측될 수 있다.
d. 일 예에서, 위의 방법들은 특정 색상 성분(예를 들면, 루마 성분 또는 크로마 성분들)에만, 또는, 코딩된 정보에 기초하는 것과 같은, 특정 조건들 하에서만 적용될 수 있다.
26. 팔레트 모드에서의 런 길이 코딩을 위한 콘텍스트들은 팔레트 엔트리들을 인덱싱하기 위한 팔레트 인덱스에 의존할 수 있다.
a. 일 예에서, 디코더에서의 인덱스 조정 프로세스 이후의 팔레트 인덱스(섹션 2.1.3에서 언급됨)는 길이 요소의 프리픽스(예를 들면, palette_run_prefix)에 대한 콘텍스트들을 도출하는 데 이용될 수 있다.
b. 대안적으로, 일 예에서, 글머리 기호 13에서 정의되는 I는 길이 요소의 프리픽스(예를 들면, palette_run_prefix)에 대한 콘텍스트들을 도출하기 위해 팔레트 인덱스를 대체할 수 있다.
27. 양자화 파라미터 예측자들에 대한 도출 프로세스에서 이용되는 좌측 이웃 블록 및/또는 위쪽 이웃 블록의 위치들을 모드/MV(예를 들면, MPM) 도출에서 사용되는 좌측 이웃 블록 및/또는 위쪽 이웃 블록의 위치들과 정렬시키는 것이 제안된다.
a. 양자화 파라미터에 대한 도출 프로세스에서 이용되는 좌측 이웃 블록 및/또는 위쪽 이웃 블록의 위치들이 병합/AMVP 후보 리스트 도출 프로세스에서 사용되는 것과 정렬될 수 있다.
b. 일 예에서, 양자화 파라미터에 대한 도출 프로세스에서 이용되는 좌측 이웃 블록 및/또는 위쪽 이웃 블록의 위치들은 도 7에 도시된 좌측/위쪽 이웃 블록들일 수 있다.
28. 이스케이프 샘플들이 현재 블록에 존재하는지 여부와 독립적으로 블록 레벨 QP 차이가 전송될 수 있다.
a. 일 예에서, 블록 레벨 QP 차이를 송신할지 여부 및/또는 어떻게 송신할지는 팔레트 이외의 다른 모드들에서 코딩되는 블록들을 뒤따를 수 있다.
b. 일 예에서, 팔레트 블록에 대해 블록 레벨 QP 차이가 항상 송신되는 것은 아닐 수 있다.
c. 일 예에서, 블록 폭이 임계치보다 클 때 팔레트 블록에 대해 블록 레벨 QP 차이가 송신될 수 있다.
d. 일 예에서, 블록 높이가 임계치보다 클 때 팔레트 블록에 대해 블록 레벨 QP 차이가 송신될 수 있다.
e. 일 예에서, 블록 크기가 임계치보다 클 때 팔레트 블록에 대해 블록 레벨 QP 차이가 송신될 수 있다.
f. 일 예에서, 위의 예들은 루마 또는 크로마 블록들에만 적용될 수 있다.
29. 팔레트 블록에 대한 코딩된 블록 플래그들(CBF들)(예를 들면, cbf_luma, cbf_cb, cbf_cr) 중 하나 이상은 1과 동일하게 설정될 수 있다.
a. 일 예에서, 팔레트 블록에 대한 CBF는 항상 1과 동일하게 설정될 수 있다.
b. 팔레트 블록에 대한 CBF들 중 하나 이상은 이스케이프 픽셀들이 현재 블록에 존재하는지 여부에 의존할 수 있다.
i. 일 예에서, 팔레트 블록이 이스케이프 샘플들을 가질 때, 그의 cbf는 1과 동일하게 설정될 수 있다.
ii. 대안적으로, 팔레트 블록이 이스케이프 샘플들을 갖지 않을 때, 그의 cbf는 0과 동일하게 설정될 수 있다.
c. 대안적으로, 이웃하는 팔레트 코딩된 블록에 액세스할 때, 이는 CBF가 1과 동일한 인트라 코딩된 블록으로서 취급될 수 있다.
30. 팔레트 블록에 적용되는 루마 및/또는 크로마 QP와 블록에 대해 도출되는 QP(예를 들면, JVET-O2001-vE 명세에서의 QpY 또는 Qp′Y) 사이의 차이는 팔레트 블록들에 대한 고정 값과 동일하게 설정될 수 있다.
a. 일 예에서, 루마 및/또는 크로마 QP 오프셋은 0과 동일하게 설정될 수 있다.
b. 일 예에서, Cb 및 Cr에 대한 크로마 QP 오프셋들은 상이할 수 있다.
c. 일 예에서, 루마 QP 오프셋 및 크로마 QP 오프셋들은 상이할 수 있다.
d. 일 예에서, 크로마 QP 오프셋(들)은 DPS/VPS/SPS/PPS/슬라이스/브릭/타일 헤더에 표시될 수 있다.
31. NumPltIdx에 의해 표기되는 현재 블록에 대해 명시적으로 시그널링되거나 추론되는 팔레트 인덱스들의 수(예를 들면, num_palette_indices_minus1+1)는 K보다 크거나 같도록 제한될 수 있다.
a. 일 예에서, K는 현재 팔레트 크기, 이스케이프 플래그 및/또는 팔레트 코딩된 블록들의 다른 정보에 기초하여 결정될 수 있다. S를 현재 블록의 현재 팔레트 크기라고 하고 E를 이스케이프 존재 플래그의 값(예를 들면, palette_escape_val_present_flag)이라고 하자. BlkS를 현재 블록 크기라고 하자.
i. 일 예에서, K는 S와 동일하게 설정될 수 있다.
ii. 대안적으로, 일 예에서, K는 S + E와 동일하게 설정될 수 있다.
iii. 대안적으로, 일 예에서, K는 (예측된 팔레트 엔트리들의 수 + 시그널링된 팔레트 엔트리들의 수 + palette_escape_val_present_flag) (예를 들면, NumPredictedPaletteEntries + num_signalled_palette_entries + palette_escape_val_present_flag)와 동일하게 설정될 수 있다.
b. 일 예에서, num_palette_indices_minus1 대신에 (NumPltIdx - K)가 시그널링/파싱될 수 있다.
i. 대안적으로, 게다가, 이는 (S+E)가 1보다 작지 않을 때에만 시그널링될 수 있다.
ii. 일 예에서, (NumPltIdx - K)의 값은 이진화된 빈 스트링(bin string)이 프리픽스(예를 들면, 절단된 단항) 및/또는 m차 EG 코드를 갖는 서픽스를 가질 수 있는 이진화 방법으로 시그널링될 수 있다.
iii. 일 예에서, (NumPltIdx - K)의 값은 절단된 이진 이진화 방법으로 시그널링될 수 있다.
iv. 일 예에서, (NumPltIdx - K)의 값은 절단된 단항 이진화 방법으로 시그널링될 수 있다.
v. 일 예에서, (NumPltIdx - K)의 값은 m차 EG 이진화 방법으로 시그널링될 수 있다.
c. 일 예에서, 적합성 비트스트림은 NumPltIdx가 K보다 크거나 같다는 것을 충족시켜야 한다.
d. 일 예에서, 적합성 비트스트림은 NumPltIdx가 K'보다 작거나 같다는 것을 충족시켜야 한다.
i. 일 예에서, K'는 (블록 폭 * 블록 높이)로 설정된다.
32. 위의 방법들을 적용할지 여부 및/또는 어떻게 적용할지는 다음에 기초할 수 있다:
a. 비디오 콘텐츠(예를 들면, 스크린 콘텐츠 또는 자연 콘텐츠)
b. DPS/SPS/VPS/PPS/APS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/LCU(Largest coding unit)/CU(Coding unit)/LCU 행/LCU들의 그룹/TU/PU 블록/비디오 코딩 유닛에서 시그널링되는 메시지
c. CU/PU/TU/블록/비디오 코딩 유닛의 위치
d. 현재 블록 및/또는 그의 이웃 블록들의 블록 치수
e. 현재 블록 및/또는 그의 이웃 블록들의 블록 형상
f. 색상 포맷의 표시(예컨대, 4:2:0, 4:4:4, RGB 또는 YUV)
g. 코딩 트리 구조(예컨대, 이중 트리 또는 단일 트리)
h. 슬라이스/타일 그룹 유형 및/또는 픽처 유형
i. 색상 성분(예를 들면, 루마 성분 및/또는 크로마 성분에만 적용될 수 있음)
j. 시간 계층 ID
k. 표준의 프로필들/레벨들/티어들
l. 현재 블록이 하나의 이스케이프 샘플을 갖는지 여부.
i. 일 예에서, 위의 방법들은 현재 블록이 하나의 이스케이프 샘플을 적어도 가질 때에만 적용될 수 있다.
m. 현재 블록이 무손실 모드로 코딩되는지 여부(예를 들면, cu_transquant_bypass_flag)
i. 일 예에서, 위의 방법들은 현재 블록이 무손실 모드로 코딩되지 않을 때에만 적용될 수 있다.
n. 무손실 코딩이 인에이블되는지 여부(예를 들면, transquant_bypass_enabled, cu_transquant_bypass_flag)
i. 일 예에서, 위의 방법들은 무손실 코딩이 디스에이블될 때에만 적용될 수 있다.
BDPCM 관련
33. 하나의 블록이 BDPCM으로 코딩되고 다수의 변환 블록들 또는 서브블록들로 분할될 때, 잔차 예측은 블록 레벨에서 행해질 수 있고, 잔차들의 시그널링은 서브블록/변환 블록 레벨에서 행해진다.
a. 대안적으로, 게다가, 다른 서브블록의 재구성 프로세스에서 하나의 서브블록의 재구성이 허용되지 않는다.
b. 대안적으로, 잔차 예측 및 잔차들의 시그널링은 서브블록/변환 블록 레벨에서 행해진다.
i. 이러한 방식으로, 하나의 서브블록의 재구성이 다른 서브블록의 재구성 프로세스에서 활용될 수 있다.
크로마 QP 테이블 관련
34. 주어진 인덱스에 대해, joint_cb_cr 모드에 대한 크로마 QP 테이블의 값은 Cb에 대한 크로마 QP 테이블의 값과 Cr에 대한 크로마 QP 테이블의 값 양쪽 모두에 의해 제약될 수 있다.
c. 일 예에서, joint_cb_cr 모드에 대한 크로마 QP 테이블의 값은 Cb에 대한 크로마 QP 테이블의 값과 Cr에 대한 크로마 QP 테이블의 값 사이(경계 포함)로 제약될 수 있다.
디블로킹 관련
35. 디블록킹에서의 MV 비교는 대안적인 1/2 펠 보간 필터가 사용되는지 여부(예를 들면, JVET-O2001-vE 명세에서 hpelIfIdx로 표시됨)에 의존할 수 있다.
d. 일 예에서, 상이한 보간 필터들을 사용하는 블록들은 상이한 MV들을 갖는 것으로 취급될 수 있다.
e. 일 예에서, 대안적인 1/2 펠 보간 필터가 관여될 때 디블록킹 비교를 위해 일정한 오프셋이 MV 차이에 가산될 수 있다.
5. 실시예들
실시예는 JVET-O2001-vE를 기반으로 한다. 새로 추가된 텍스트들은 굵은 이중 괄호들로 묶여 있으며, 예를 들면, {{a}}는 "a"가 추가되었음을 나타낸다. 삭제된 텍스트들은 굵은 이중 대괄호들로 묶여 있으며, 예를 들면, [[b]]는 "b"가 삭제되었음을 나타낸다.
5.1 실시예 #1
팔레트 모드에 대한 디코딩 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 블록의 좌측 상단 루마 샘플을 지정하는 위치( xCb, yCb ),
- 변수 startComp는 팔레트 테이블에서의 첫 번째 색상 성분을 지정한다.
- 현재 블록의 색상 성분을 지정하는 변수 cIdx,
- 현재 블록의 폭 및 높이를, 제각기, 지정하는 2 개의 변수 nCbW 및 nCbH.
이 프로세스의 출력은 블록에 대한 재구성된 샘플 값들을 지정하는 어레이 recSamples[ x ][ y ](단, x = 0.. nCbW - 1, y = 0.. nCbH - 1)이다.
cIdx의 값에 따라, 변수들 nSubWidth 및 nSubHeight는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우, nSubWidth는 1로 설정되고 nSubHeight는 1로 설정된다.
- 그렇지 않은 경우, nSubWidth는 SubWidthC로 설정되고 nSubHeight는 SubHeightC로 설정된다.
위치 ( xCb, yCb )에 있는 재구성된 샘플 어레이 recSamples의 ( nCbW x nCbH ) 블록은 recSamples[ x ][ y ](단, x = 0..nCTbW - 1이고 y = 0..nCbH - 1임)에 의해 표현되고, 0 내지 nCbW - 1의 범위(경계 포함)에 있는 각각의 x 및 0 내지 nCbH - 1의 범위(경계 포함)에 있는 각각의 y에 대한 recSamples[ x ][ y ]의 값은 다음과 같이 도출된다:
- 변수들 xL 및 yL은 다음과 같이 도출된다:
Figure pct00016
- 변수 bIsEscapeSample은 다음과 같이 도출된다:
- PaletteIndexMap[ xCb + xL ][ yCb + yL ]이 MaxPaletteIndex와 동일하고 palette_escape_val_present_flag가 1과 동일한 경우, bIsEscapeSample은 1과 동일하게 설정된다.
- 그렇지 않은 경우, bIsEscapeSample은 0과 동일하게 설정된다.
- bIsEscapeSample이 0과 동일한 경우, 다음이 적용된다:
Figure pct00017
- 그렇지 않고, cu_transquant_bypass_flag가 1과 동일한 경우, 다음이 적용된다:
Figure pct00018
- 그렇지 않은 경우(bIsEscapeSample이 1과 동일하고 cu_transquant_bypass_flag가 0과 동일함), 다음과 같은 순서의 단계들이 적용된다:
1. 양자화 파라미터 qP는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우,
Figure pct00019
- 그렇지 않고, cIdx가 1과 동일한 경우,
Figure pct00020
- 그렇지 않은 경우(cIdx가 2와 동일한 경우),
Figure pct00021
2. 변수 bitDepth는 다음과 같이 도출된다:
Figure pct00022
3. [[리스트 levelScale[ ]은 levelScale[ k ] = { 40, 45, 51, 57, 64, 72 }(단, k = 0..5)로서 지정된다.]]
4. 다음이 적용된다:
Figure pct00023
{{ T는 성분 cIdx에 대해 (internal_bit_depth - input_bit_depth)와 동일하게 설정된다
Nbits = max(T, (qP - 4) / 6)
- Nbits가 T와 동일한 경우
recSamples[ x ][ y ] = PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] << Nbits
- 그렇지 않은 경우
recSamples[ x ][ y ] = (PaletteEscapeVal[ cIdx ][ xCb + xL ][ yCb + yL ] << Nbits) + (1 << (Nbits - 1) }}
[[recSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, tmpVal ) (8-277)]]
- 다음 조건들 중 하나가 참일 때:
- cIdx가 0과 동일하고 numComps가 1과 동일하다;
- cIdx가 2와 동일하다;
변수 PredictorPaletteSize[startComp] 및 어레이 PredictorPaletteEntries는 다음과 같이 도출되거나 수정된다:
Figure pct00024
Figure pct00025
PredictorPaletteSize[startComp]의 값이 0 내지 PaletteMaxPredictorSize의 범위(경계 포함)에 있어야 하는 것이 비트스트림 적합성의 요구사항이다.
5.2 실시예 #2
이 실시예는 팔레트 인덱스 도출을 설명한다.
팔레트 코딩 시맨틱스
[[변수 adjustedRefPaletteIndex는 다음과 같이 도출된다:
Figure pct00026
CopyAboveIndicesFlag[ xC ][ yC ]가 0과 동일할 때, 변수 CurrPaletteIndex는 다음과 같이 도출된다:
Figure pct00027
palette_idx_idc에 대한 이진화 프로세스
이 프로세스에 대한 입력은 신택스 요소 palette_idx_idc 및 변수 MaxPaletteIndex에 대한 이진화의 요청이다.
이 프로세스의 출력은 신택스 요소의 이진화이다.
변수 cMax는 다음과 같이 도출된다:
- [[이 프로세스가 현재 블록에 대해 처음으로 호출되는 경우, ]]cMax는 MaxPaletteIndex와 동일하게 설정된다.
- [[그렇지 않은 경우(이 프로세스가 현재 블록에 대해 처음으로 호출되지 않은 경우), cMax는 MaxPaletteIndex에서 1을 뺀 것과 동일하게 설정된다.]]
palette_idx_idc에 대한 이진화는 cMax를 사용하여 9.3.3.4 절에 명시된 TB 이진화 프로세스를 호출하는 것에 의해 도출된다.
5.3 실시예 #3
표 9- 77 - 신택스 요소들 및 관련 이진화들
Figure pct00028
8.4.5.3 팔레트 모드에 대한 디코딩 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 블록의 좌측 상단 루마 샘플을 지정하는 위치( xCb, yCb ),
- 변수 startComp는 팔레트 테이블에서의 첫 번째 색상 성분을 지정한다.
- 현재 블록의 색상 성분을 지정하는 변수 cIdx,
- 현재 블록의 폭 및 높이를, 제각기, 지정하는 2 개의 변수 nCbW 및 nCbH.
이 프로세스의 출력은 블록에 대한 재구성된 샘플 값들을 지정하는 어레이 recSamples[ x ][ y ](단, x = 0.. nCbW - 1, y = 0.. nCbH - 1)이다.
cIdx의 값에 따라, 변수들 nSubWidth 및 nSubHeight는 다음과 같이 도출된다:
...
- 그렇지 않은 경우(bIsEscapeSample이 1과 동일하고 cu_transquant_bypass_flag가 0과 동일한 경우), 다음과 같은 순서의 단계들이 적용된다:
5. 양자화 파라미터 qP는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우,
Figure pct00029
- 그렇지 않고, cIdx가 1과 동일한 경우,
Figure pct00030
- 그렇지 않은 경우(cIdx가 2와 동일한 경우),
Figure pct00031
6. 변수 bitDepth는 다음과 같이 도출된다:
Figure pct00032
7. [[리스트 levelScale[ ]은 levelScale[ k ] = { 40, 45, 51, 57, 64, 72 }(단, k = 0..5)로서 지정된다.]]
8. 다음이 적용된다:
Figure pct00033
5.4 실시예 #4
copy_above_palette_indices_flag가 1과 동일한 것은 수평 트래버스 스캔이 사용되는 경우 팔레트 인덱스가 위쪽 행에서의 동일한 위치에 있는 팔레트 인덱스와 동일하거나 수직 트래버스 스캔이 사용되는 경우 좌측 열에서의 동일한 위치에 있는 팔레트 인덱스와 동일하다는 것을 지정한다. copy_above_palette_indices_flag가 0과 동일한 것은 샘플의 팔레트 인덱스의 표시가 비트스트림에 코딩되거나 추론된다는 것을 지정한다.
...
변수 adjustedRefPaletteIndex는 다음과 같이 도출된다:
Figure pct00034
CopyAboveIndicesFlag[ xC ][ yC ]가 0과 동일할 때, 변수 CurrPaletteIndex는 다음과 같이 도출된다:
Figure pct00035
5.5 실시예 #5
표 9-77 - 신택스 요소들 및 관련 이진화들
Figure pct00036
8.4.5.3 팔레트 모드에 대한 디코딩 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 블록의 좌측 상단 루마 샘플을 지정하는 위치( xCb, yCb ),
- 변수 startComp는 팔레트 테이블에서의 첫 번째 색상 성분을 지정한다,
- 현재 블록의 색상 성분을 지정하는 변수 cIdx,
- 현재 블록의 폭 및 높이를, 제각기, 지정하는 2 개의 변수 nCbW 및 nCbH.
이 프로세스의 출력은 블록에 대한 재구성된 샘플 값들을 지정하는 어레이 recSamples[ x ][ y ](단, x = 0.. nCbW - 1, y = 0.. nCbH - 1)이다.
cIdx의 값에 따라, 변수들 nSubWidth 및 nSubHeight는 다음과 같이 도출된다:
...
- 그렇지 않은 경우(bIsEscapeSample이 1과 동일하고 cu_transquant_bypass_flag가 0과 동일한 경우), 다음과 같은 순서의 단계들이 적용된다:
9. 양자화 파라미터 qP는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우,
Figure pct00037
- 그렇지 않고, cIdx가 1과 동일한 경우,
Figure pct00038
- 그렇지 않은 경우(cIdx가 2와 동일한 경우),
Figure pct00039
10. 변수 bitDepth는 다음과 같이 도출된다:
Figure pct00040
11. [[리스트 levelScale[ ]은 levelScale[ k ] = { 40, 45, 51, 57, 64, 72 }(단, k = 0..5)로서 지정된다.]]
12. 다음이 적용된다:
Figure pct00041
5.6 실시예 #6
이 실시예는 변환 스킵을 위해 변환 시프트를 스킵하는 설계를 예시하고, JVET-O2001-vE를 기반으로 한다.
8.7.2 스케일링 및 변환 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 루마 변환 블록의 좌측 상단 샘플을 지정하는 루마 위치 ( xTbY, yTbY ),
- 현재 블록의 색상 성분을 지정하는 변수 cIdx,
- 변환 블록 폭을 지정하는 변수 nTbW,
- 변환 블록 높이를 지정하는 변수 nTbH.
이 프로세스의 출력은 잔차 샘플들 resSamples[ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)의 (nTbW)x(nTbH) 어레이이다.
변수들 bitDepth, bdShift 및 tsShift는 다음과 같이 도출된다:
Figure pct00042
변수 codedCIdx는 다음과 같이 도출된다:
- cIdx가 0과 동일하거나 TuCResMode[ xTbY ][ yTbY ]가 0과 동일한 경우, codedCIdx는 cIdx와 동일하게 설정된다.
- 그렇지 않고, TuCResMode[ xTbY ][ yTbY ]가 1 또는 2와 동일한 경우 codedCIdx는 1과 동일하게 설정된다.
- 그렇지 않은 경우, codedCIdx는 2와 동일하게 설정된다.
변수 cSign은 ( 1 - 2 * slice_joint_cbcr_sign_flag )와 동일하게 설정된다.
잔차 샘플들 resSamples의 (nTbW)x(nTbH) 어레이는 다음과 같이 도출된다:
1. 8.7.3 절에 명시된 바와 같은 변환 계수들에 대한 스케일링 프로세스는 변환 블록 위치 ( xTbY, yTbY ), 변환 블록 폭 nTbW 및 변환 블록 높이 nTbH, codedCIdx와 동일하게 설정된 색상 성분 변수 cIdx 및 현재 색상 성분의 비트 깊이 bitDepth를 입력들로 하여 호출되고, 출력은 스케일링된 변환 계수들 d의 (nTbW)x(nTbH) 어레이이다.
2. 잔차 샘플들 r의 (nTbW)x(nTbH) 어레이는 다음과 같이 도출된다:
- [[transform_skip_flag[ xTbY ][ yTbY ]가 1과 동일하고 cIdx가 0과 동일한 경우, 잔차 샘플 어레이 값들 r[ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)는 다음과 같이 도출된다:
Figure pct00043
- [[그렇지 않은 경우(transform_skip_flag[ xTbY ][ yTbY ]가 0과 동일하거나 cIdx가 0과 동일하지 않은 경우),]] 8.7.4.1 절에 명시된 바와 같은 스케일링된 변환 계수들에 대한 변환 프로세스는 변환 블록 위치 ( xTbY, yTbY ), 변환 블록 폭 nTbW 및 변환 블록 높이 nTbH, 색상 성분 변수 cIdx 및 스케일링된 변환 계수들 d의 (nTbW)x(nTbH) 어레이를 입력들로 하여 호출되고, 출력은 잔차 샘플들 r의 (nTbW)x(nTbH) 어레이이다.
3. 중간 잔차 샘플들 res [ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)는 다음과 같이 도출된다:
- {{transform_skip_flag[ xTbY ][ yTbY ]가 1과 동일하고 cIdx가 0과 동일한 경우, 다음이 적용된다:
Figure pct00044
- {{그렇지 않은 경우(transform_skip_flag[ xTbY ][ yTbY ]가 0과 동일하고/하거나 cIdx가 0과 동일하지 않은 경우), 다음이 적용된다:}}
Figure pct00045
4. 잔차 샘플들 resSamples[ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)는 다음과 같이 도출된다:
- cIdx가 codedCIdx와 동일한 경우, 다음이 적용된다:
Figure pct00046
- 그렇지 않고, TuCResMode[ xTbY ][ yTbY ]가 2와 동일한 경우, 다음이 적용된다:
Figure pct00047
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00048
8.7.3 변환 계수들에 대한 스케일링 프로세스
...
변수 rectNonTsFlag는 다음과 같이 도출된다:
Figure pct00049
변수들 bdShift, rectNorm 및 bdOffset은 다음과 같이 도출된다:
- {{transform_skip_flag[ xTbY ][ yTbY ]가 1과 동일하고 cIdx가 0과 동일한 경우, 다음이 적용된다:
bdShift = 10}}
- {{그렇지 않은 경우, 다음이 적용된다:}}
Figure pct00050
리스트 levelScale[ ][ ]은 levelScale[ j ][ k ] = { { 40, 45, 51, 57, 64, 72 }, { 57, 64, 72, 80, 90, 102 } }(단, j = 0..1, k = 0..5)로서 지정된다.
(nTbW)x(nTbH) 어레이 dz는 (nTbW)x(nTbH) 어레이 TransCoeffLevel[ xTbY ][ yTbY ][ cIdx ]와 동일하게 설정된다.
스케일링된 변환 계수들 d[ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)의 도출에 대해, 다음이 적용된다:
- 중간 스케일링 인자 m[ x ][ y ]는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, m[ x ][ y ]는 16과 동일하게 설정된다:
- sps_scaling_list_enabled_flag가 0과 동일하다.
- transform_skip_flag[ xTbY ][ yTbY ]가 1과 동일하다.
- 그렇지 않은 경우, 다음이 적용된다:
m[ x ][ y ] = ScalingFactor[ Log2( nTbW ) ][ Log2( nTbH ) ][ matrixId ][ x ][ y ],
단, matrixId는 표 7-5에 명시된 바와 같음 (8-958)
- 스케일링 인자 ls[ x ][ y ]는 다음과 같이 도출된다:
- dep_quant_enabled_flag가 1과 동일한 경우, 다음이 적용된다:
Figure pct00051
- 그렇지 않은 경우(dep_quant_enabled_flag가 0과 동일한 경우), 다음이 적용된다:
Figure pct00052
- BdpcmFlag[ xTbY ][ yYbY ]가 1과 동일할 때, dz[ x ][ y ]는 다음과 같이 수정된다:
- BdpcmDir[ xTbY ][ yYbY ]가 0과 동일하고 x가 0보다 큰 경우, 다음이 적용된다:
Figure pct00053
- 그렇지 않고, BdpcmDir[ xTbY ][ yYbY ]가 1과 동일하고 y가 0보다 큰 경우, 다음이 적용된다:
Figure pct00054
- 값 dnc[ x ][ y ]는 다음과 같이 도출된다:
Figure pct00055
- 스케일링된 변환 계수 d[ x ][ y ]는 다음과 같이 도출된다:
Figure pct00056
도 8은 비디오 프로세싱 장치(800)의 블록 다이어그램이다. 장치(800)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(800)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(800)는 하나 이상의 프로세서(802), 하나 이상의 메모리(804) 및 비디오 프로세싱 하드웨어(806)를 포함할 수 있다. 프로세서(들)(802)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(804)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(806)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다. 일부 구현들에서, 하드웨어(806)는 부분적으로 또는 전체적으로 프로세서(802), 예를 들면, 그래픽 프로세서의 일부일 수 있다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 인에이블시키기로 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 인코더는 비디오 블록의 프로세싱에서 툴 또는 모드를 사용하거나 구현할 것이지만, 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정하는 것은 아닐 수 있다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은 의사 결정 또는 결정에 기초하여 비디오 프로세싱 툴 또는 모드가 인에이블될 때 이를 사용할 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 디코더는 비디오 프로세싱 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 지식을 사용하여 비트스트림을 프로세싱할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 디스에이블시키도록 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는 데 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 디코더는 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 비트스트림이 수정되지 않았다는 지식을 사용하여 비트스트림을 프로세싱할 것이다.
도 9는 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(900)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(900)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(900)은 비디오 콘텐츠를 수신하기 위한 입력(902)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(902)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(900)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(904)를 포함할 수 있다. 코딩 컴포넌트(904)는 비디오의 코딩된 표현을 생성하기 위해 입력(902)으로부터 코딩 컴포넌트(904)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(904)의 출력은 저장되거나, 컴포넌트(906)에 의해 표현된 바와 같은, 연결된 통신을 통해 전송될 수 있다. 입력(902)에 수신되는 비디오의 저장되거나 통신되는 비트스트림 표현(또는 코딩된 표현)은 디스플레이 인터페이스(910)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(908)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 연산들이 "코딩" 연산들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 연산들이 인코더에서 사용되고 코딩의 결과들을 반대로 하는 대응하는 디코딩 툴들 또는 연산들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
도 10은 본 개시의 기술들을 활용할 수 있는 예시적인 비디오 코딩 시스템(100)을 예시하는 블록 다이어그램이다.
도 10에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(120)를 포함할 수 있다. 비디오 인코딩 디바이스라고 지칭될 수 있는 소스 디바이스(110)는 인코딩된 비디오 데이터를 생성한다. 비디오 디코딩 디바이스라고 지칭될 수 있는 목적지 디바이스(120)는 소스 디바이스(110)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다.
소스 디바이스(110)는 비디오 소스(112), 비디오 인코더(114), 및 입출력(I/O) 인터페이스(116)를 포함할 수 있다.
비디오 소스(112)는 비디오 캡처 디바이스와 같은 소스, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 그러한 소스들의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)로부터의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트 시퀀스를 포함할 수 있다. 비트스트림은 코딩된 픽처들 및 관련 데이터를 포함할 수 있다. 코딩된 픽처는 픽처의 코딩된 표현이다. 관련 데이터는 시퀀스 파라미터 세트, 픽처 파라미터 세트, 및 다른 신택스 구조를 포함할 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 인코딩된 비디오 데이터는 I/O 인터페이스(116)를 통해 네트워크(130a)를 거쳐 목적지 디바이스(120)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 또한 목적지 디바이스(120)에 의한 액세스를 위해 저장 매체/서버(130b)에 저장될 수 있다.
목적지 디바이스(120)는 I/O 인터페이스(126), 비디오 디코더(124), 및 디스플레이 디바이스(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 디바이스(110) 또는 저장 매체/서버(130b)로부터 인코딩된 비디오 데이터를 취득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 디바이스(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이할 수 있다. 디스플레이 디바이스(122)는 목적지 디바이스(120)와 통합될 수 있거나, 또는 외부 디스플레이 디바이스와 인터페이싱하도록 구성된 목적지 디바이스(120)의 외부에 있을 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는, HEVC(High Efficiency Video Coding) 표준, VVM(Versatile Video Coding) 표준 및 다른 현재 및/또는 추가 표준들과 같은, 비디오 압축 표준에 따라 동작할 수 있다.
도 11은 도 10에 예시된 시스템(100) 내의 비디오 인코더(114)일 수 있는, 비디오 인코더(200)의 예를 예시하는 블록 다이어그램이다.
비디오 인코더(200)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 11의 예에서, 비디오 인코더(200)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 인코더(200)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
비디오 인코더(200)의 기능 컴포넌트들은 분할 유닛(201), 모드 선택 유닛(203), 모션 추정 유닛(204), 모션 보상 유닛(205) 및 인트라 예측 유닛(206)을 포함할 수 있는 예측 유닛(202), 잔차 생성 유닛(207), 변환 유닛(208), 양자화 유닛(209), 역양자화 유닛(210), 역변환 유닛(211), 재구성 유닛(212), 버퍼(213), 및 엔트로피 인코딩 유닛(214)을 포함할 수 있다.
다른 예들에서, 비디오 인코더(200)는 보다 많은, 보다 적은 또는 상이한 기능 컴포넌트들을 포함할 수 있다. 예에서, 예측 유닛(202)은 인트라 블록 복사(intra block copy, IBC) 유닛을 포함할 수 있다. IBC 유닛은 적어도 하나의 참조 픽처가 현재 비디오 블록이 위치하는 픽처인 IBC 모드에서 예측을 수행할 수 있다.
게다가, 모션 추정 유닛(204) 및 모션 보상 유닛(205)과 같은 일부 컴포넌트들은 고도로 통합될 수 있지만, 설명의 목적을 위해 도 11의 예에서 개별적으로 표현되어 있다.
분할 유닛(201)은 픽처를 하나 이상의 비디오 블록으로 분할할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기들을 지원할 수 있다.
모드 선택 유닛(203)은, 예를 들어, 오차 결과들에 기초하여, 코딩 모드들, 즉 인트라(intra) 또는 인터(inter) 중 하나를 선택할 수 있고, 결과적인 인트라 코딩된 또는 인터 코딩된 블록을 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하도록 하고 재구성 유닛(212)에 제공하여 참조 픽처로서 사용하기 위한 인코딩된 블록을 재구성하도록 할 수 있다. 일부 예에서, 모드 선택 유닛(203)은 예측이 인터 예측 신호 및 인트라 예측 신호에 기초하는 CIIP(combination of intra and inter predication) 모드를 선택할 수 있다. 모드 선택 유닛(203)은 또한 인터 예측의 경우에 블록에 대한 모션 벡터의 분해능(예를 들면, 서브 픽셀 또는 정수 픽셀 정밀도)을 선택할 수 있다.
현재 비디오 블록에 대한 인터 예측을 수행하기 위해, 모션 추정 유닛(204)은 버퍼(213)로부터의 하나 이상의 참조 프레임을 현재 비디오 블록과 비교하는 것에 의해 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 픽처들의 디코딩된 샘플들 및 모션 정보에 기초하여 현재 비디오 블록에 대한 예측된 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)은, 예를 들어, 현재 비디오 블록이 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지 여부에 따라, 현재 비디오 블록에 대해 상이한 동작들을 수행할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 단방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 또는 리스트 1의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록을 포함하는 리스트 0 또는 리스트 1 내의 참조 픽처를 나타내는 참조 인덱스 및 현재 비디오 블록과 참조 비디오 블록 사이의 공간적 변위를 나타내는 모션 벡터를 생성할 수 있다. 모션 추정 유닛(204)은 참조 인덱스, 예측 방향 지시자, 및 모션 벡터를 현재 비디오 블록의 모션 정보로서 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대해 양방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 내의 참조 픽처들을 탐색할 수 있고, 또한 현재 비디오 블록에 대한 다른 참조 비디오 블록에 대해 리스트 1 내의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록들을 포함하는 리스트 0 및 리스트 1 내의 참조 픽처들을 나타내는 참조 인덱스들 및 참조 비디오 블록들과 현재 비디오 블록 사이의 공간적 변위들을 나타내는 모션 벡터들을 생성할 수 있다. 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보로서 참조 인덱스들 및 현재 비디오 블록의 모션 벡터들을 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록들에 기초하여 현재 비디오 블록의 예측된 비디오 블록을 생성할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 디코더의 디코딩 프로세싱을 위한 모션 정보의 전체 세트를 출력할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오에 대한 모션 정보의 전체 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)은 다른 비디오 블록의 모션 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 모션 정보와 충분히 유사하다고 결정할 수 있다.
일 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에, 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 갖는다는 것을 비디오 디코더(300)에 알려주는 값을 표시할 수 있다.
다른 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 간의 차이를 나타낸다. 비디오 디코더(300)는 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 이용하여 현재 비디오 블록의 모션 벡터를 결정할 수 있다.
위에서 논의된 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측적 시그널링 기술의 두 가지 예는 AMVP(advanced motion vector predication) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대해 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대해 인트라 예측을 수행할 때, 인트라 예측 유닛(206)은 동일한 픽처 내의 다른 비디오 블록들의 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터는 예측된 비디오 블록 및 다양한 신택스 요소들을 포함할 수 있다.
잔차 생성 유닛(207)은 현재 비디오 블록으로부터 현재 비디오 블록의 예측된 비디오 블록(들)을 차감(예를 들면, 마이너스 부호로 표시됨)하는 것에 의해 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록 내의 샘플들의 상이한 샘플 성분들에 대응하는 잔차 비디오 블록들을 포함할 수 있다.
다른 예들에서, 예를 들어, 스킵 모드에서 현재 비디오 블록에 대한 현재 비디오 블록의 잔차 데이터가 없을 수 있고, 잔차 생성 유닛(207)은 차감 동작을 수행하지 않을 수 있다.
변환 프로세싱 유닛(208)은 현재 비디오 블록과 연관된 잔차 비디오 블록에 하나 이상의 변환을 적용하는 것에 의해 현재 비디오 블록에 대한 하나 이상의 변환 계수 비디오 블록을 생성할 수 있다.
변환 프로세싱 유닛(208)이 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 생성한 후에, 양자화 유닛(209)은 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210) 및 역변환 유닛(211)은, 제각기, 변환 계수 비디오 블록에 역양자화 및 역변환을 적용하여 변환 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성할 수 있다. 재구성 유닛(212)은 버퍼(213)에 저장할 현재 블록과 연관된 재구성된 비디오 블록을 생성하기 위해 예측 유닛(202)에 의해 생성되는 하나 이상의 예측된 비디오 블록으로부터의 대응하는 샘플들에 재구성된 잔차 비디오 블록을 가산할 수 있다.
재구성 유닛(212)이 비디오 블록을 재구성한 후에, 비디오 블록에서의 비디오 블로킹 아티팩트를 감소시키기 위해 루프 필터링 동작이 수행될 수 있다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 기능 컴포넌트들로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)이 데이터를 수신할 때, 엔트로피 인코딩 유닛(214)은 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 12는 도 10에 예시된 시스템(100) 내의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록 다이어그램이다.
비디오 디코더(300)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 12의 예에서, 비디오 디코더(300)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 디코더(300)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
도 12의 예에서, 비디오 디코더(300)는 엔트로피 디코딩 유닛(301), 모션 보상 유닛(302), 인트라 예측 유닛(303), 역양자화 유닛(304), 역변환 유닛(305), 및 재구성 유닛(306) 및 버퍼(307)를 포함한다. 비디오 디코더(300)는, 일부 예들에서, 비디오 인코더(200)(도 11)와 관련하여 설명된 인코딩 패스(encoding pass)와 일반적으로 반대인 디코딩 패스(decoding pass)를 수행할 수 있다.
엔트로피 디코딩 유닛(301)은 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림은 엔트로피 코딩된 비디오 데이터(예를 들면, 비디오 데이터의 인코딩된 블록들)를 포함할 수 있다. 엔트로피 디코딩 유닛(301)은 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터, 모션 보상 유닛(302)은 모션 벡터, 모션 벡터 정밀도, 참조 픽처 리스트 인덱스, 및 다른 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어, AMVP 및 병합 모드를 수행하는 것에 의해 그러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은 모션 보상된 블록들을 생성할 수 있으며, 어쩌면 보간 필터들에 기초하여 보간을 수행할 수 있다. 사용될 보간 필터들에 대한 식별자들이 서브픽셀 정밀도와 함께 신택스 요소들에 포함될 수 있다.
모션 보상 유닛(302)은 참조 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안 비디오 인코더(20)에 의해 사용되는 바와 같이 보간 필터들을 사용할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에 의해 사용되는 보간 필터들을 결정할 수 있고 예측 블록들을 생성하기 위해 보간 필터들을 사용할 수 있다.
모션 보상 유닛(302)은 인코딩된 비디오 시퀀스의 프레임(들) 및/또는 슬라이스(들)를 인코딩하는 데 사용되는 블록들의 크기들, 인코딩된 비디오 시퀀스의 픽처의 각각의 매크로블록이 어떻게 분할되는지를 기술하는 분할 정보, 각각의 분할이 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터 인코딩된 블록에 대한 하나 이상의 참조 프레임(및 참조 프레임 리스트), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정하기 위해 신택스 정보의 일부를 사용할 수 있다.
인트라 예측 유닛(303)은 공간적으로 인접한 블록들로부터 예측 블록을 형성하기 위해, 예를 들어, 비트스트림에서 수신되는 인트라 예측 모드들을 사용할 수 있다. 역양자화 유닛(303)은 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에 의해 디코딩되는 양자화된 비디오 블록 계수들을 역양자화(inverse quantize), 즉 양자화 해제(de-quantize)한다. 역변환 유닛(303)은 역변환을 적용한다.
재구성 유닛(306)은 디코딩된 블록들을 형성하기 위해 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성되는 대응하는 예측 블록들과 잔차 블록들을 합산할 수 있다. 원하는 경우, 디코딩된 블록들을 필터링하여 블록성 아티팩트(blockiness artifact)를 제거하기 위해 디블록킹 필터가 또한 적용될 수 있다. 디코딩된 비디오 블록들은 이어서 버퍼(307)에 저장되고, 버퍼(307)는 후속하는 모션 보상/인트라 예측을 위한 참조 블록들을 제공하고 또한 디스플레이 디바이스 상에 제시할 디코딩된 비디오를 생성한다.
일부 실시예들에서, 다음 방법들은 위에 열거된 예들 및 실시예들의 목록을 기반으로 한다. 예에서, 이러한 방법들은 도 8 내지 도 12에 도시된 구현들을 사용하여 구현될 수 있지만 이에 제한되지 않는다.
도 13은 예시적인 비디오 프로세싱 방법의 플로차트이다. 동 도면에 도시된 바와 같이, 방법(1300)은, 동작(1310)에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록에 대한 클리핑된 양자화 파라미터가 변환에서 사용되고 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터가 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이후의 양자화 파라미터에 기초하여 도출되도록, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계를 포함한다.
방법(1300)은, 동작(1320)에서, 결정에 기초하여, 변환을 수행하는 단계를 더 포함한다.
도 14는 예시적인 비디오 프로세싱 방법의 플로차트이다. 동 도면에 도시된 바와 같이, 방법(1400)은, 동작(1410)에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록에 대한 클리핑된 양자화 파라미터가 변환에서 사용되고 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터가 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이전의 양자화 파라미터에 기초하여 도출되도록, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계를 포함한다.
방법(1400)은, 동작(1420)에서, 결정에 기초하여, 변환을 수행하는 단계를 더 포함한다.
다음 해결책들은 일부 실시예들의 바람직한 특징들로서 이전 섹션에 나열된 항목들(예를 들면, 항목 1)에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
1. 비디오 프로세싱 방법으로서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계; 및 결정에 기초하여, 변환을 수행하는 단계를 포함하며, 현재 블록에 대한 클리핑된 양자화 파라미터는 변환에서 사용되며, 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 현재 비디오 블록을 표현하고, 이스케이프 값은 대표 색상 값들을 사용하지 않고 코딩되는 현재 비디오 블록의 샘플에 대해 사용되며, 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이후의 양자화 파라미터에 기초하여 도출되는, 방법.
2. 비디오 프로세싱 방법으로서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 비트스트림 표현에서 시그널링된다고 결정하는 단계; 및 결정에 기초하여, 변환을 수행하는 단계를 포함하며, 현재 블록에 대한 클리핑된 양자화 파라미터는 변환에서 사용되며, 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 현재 비디오 블록을 표현하고, 이스케이프 값은 대표 색상 값들을 사용하지 않고 코딩되는 현재 비디오 블록의 샘플에 대해 사용되며, 비디오의 크로마 성분에 대해 사용되는 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이전의 양자화 파라미터에 기초하여 도출되는, 방법.
3. 해결책 1 또는 해결책 2의 방법으로서, 클리핑된 양자화 파라미터의 가장 낮은 값은 변환 스킵 모드에 대한 최소 허용 양자화 파라미터에 기초하는, 방법.
4. 해결책 3의 방법으로서, 클리핑된 양자화 파라미터의 가장 낮은 값은 sps_min_qp_prime_ts에 기초하는, 방법.
5. 해결책 4의 방법으로서, 클리핑된 양자화 파라미터의 가장 낮은 값이 QpPrimeTsMin과 동일한, 방법.
6. 해결책 1 또는 해결책 2의 방법으로서, 비디오의 각각의 색상 성분에 대한 클리핑된 양자화 파라미터의 가장 낮은 값의 표시는 비트스트림 표현 내의 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 비디오 파라미터 세트(VPS), 디코딩 파라미터 세트(DPS), 타일 또는 슬라이스 헤더에서 시그널링되는, 방법.
7. 해결책 1 또는 해결책 2의 방법으로서, 클리핑된 양자화 파라미터의 가장 낮은 값은 (bd-ibd)×6 + 4이고, bd는 내부 비트 깊이이고 ibd는 비디오의 색상 성분에 대한 입력 비트 깊이인, 방법.
8. 해결책 1 내지 해결책 7 중 어느 한 해결책의 방법으로서, 팔레트 모드 코딩 툴은 비디오의 특정 색상 성분에 적용되는, 방법.
9. 해결책 1 내지 해결책 8 중 어느 한 해결책의 방법으로서, 변환을 수행하는 단계는 현재 블록으로부터 비트스트림 표현을 생성하는 단계를 포함하는, 방법.
10. 해결책 1 내지 해결책 8 중 어느 한 해결책의 방법으로서, 변환을 수행하는 단계는 비트스트림 표현으로부터 현재 블록을 생성하는 단계를 포함하는, 방법.
11. 비디오 시스템에서의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하며, 명령어들은, 프로세서에 의한 실행 시에, 프로세서로 하여금 해결책 1 내지 해결책 10 중 어느 한 해결책에서의 방법을 구현하게 하는, 장치.
12. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 제품으로서, 컴퓨터 프로그램 제품은 해결책 1 내지 해결책 10 중 어느 한 해결책에서의 방법을 수행하기 위한 프로그램 코드를 포함하는, 컴퓨터 프로그램 제품.
본 문서에 설명된 개시된 및 다른 해결책들, 예들, 실시예들, 모듈들 및 기능 동작들은 디지털 전자 회로로, 또는 본 문서에 개시된 구조 및 그의 구조적 등가물을 포함한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 다른 실시예들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉 데이터 프로세싱 장치에 의해 실행하기 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 장치들, 디바이스들, 및 머신들을 포괄한다. 장치들은, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파 신호는 인공적으로 생성된 신호, 예를 들면, 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성되는 머신 생성(machine-generated) 전기, 광학, 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들을 포함하여, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함하여, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들 상에서 실행되도록 배포될 수 있다.
본 문서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 작동하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 논리 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치들이 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서들 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 작동 가능하게 결합될 것이거나, 또는 양쪽 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들과 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서, 반도체 메모리 디바이스들, 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들면, 내장형 하드 디스크들 또는 이동식 디스크들; 자기 광학 디스크들; 및 CD ROM과 DVD-ROM 디스크들을 포함한, 모든 형태들의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 그에 통합될 수 있다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 주제의 범위 또는 청구될 수 있는 것의 범위에 대한 제한으로서 해석되어서는 안 되며, 오히려 특정 기술들의 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명으로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 특허 문서에 설명되는 특정 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 설명된 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (12)

  1. 비디오 프로세싱 방법으로서,
    비디오의 현재 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 상기 비트스트림 표현에서 시그널링된다고 결정하는 단계; 및
    상기 결정에 기초하여, 상기 변환을 수행하는 단계
    를 포함하며,
    상기 현재 블록에 대한 클리핑된 양자화 파라미터는 상기 변환에서 사용되며,
    상기 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 상기 현재 비디오 블록을 표현하고, 상기 이스케이프 값은 상기 대표 색상 값들을 사용하지 않고 코딩되는 상기 현재 비디오 블록의 샘플에 대해 사용되며,
    상기 비디오의 크로마 성분에 대해 사용되는 상기 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이후의 양자화 파라미터에 기초하여 도출되는, 방법.
  2. 비디오 프로세싱 방법으로서,
    비디오의 현재 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 현재 블록이 팔레트 모드를 사용하여 코딩되고 이스케이프 심벌 값이 상기 비트스트림 표현에서 시그널링된다고 결정하는 단계; 및
    상기 결정에 기초하여, 상기 변환을 수행하는 단계
    를 포함하며,
    상기 현재 블록에 대한 클리핑된 양자화 파라미터는 상기 변환에서 사용되며,
    상기 팔레트 모드 코딩 툴은 대표 색상 값들의 팔레트를 사용하여 상기 현재 비디오 블록을 표현하고, 상기 이스케이프 값은 상기 대표 색상 값들을 사용하지 않고 코딩되는 상기 현재 비디오 블록의 샘플에 대해 사용되며,
    상기 비디오의 크로마 성분에 대해 사용되는 상기 클리핑된 양자화 파라미터는 양자화 프로세스 또는 역양자화 프로세스의 매핑 연산 이전의 양자화 파라미터에 기초하여 도출되는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 클리핑된 양자화 파라미터의 가장 낮은 값은 변환 스킵 모드에 대한 최소 허용 양자화 파라미터에 기초하는, 방법.
  4. 제3항에 있어서, 상기 클리핑된 양자화 파라미터의 가장 낮은 값은 sps_min_qp_prime_ts에 기초하는, 방법.
  5. 제4항에 있어서, 상기 클리핑된 양자화 파라미터의 상기 가장 낮은 값은 QpPrimeTsMin과 동일한, 방법.
  6. 제1항 또는 제2항에 있어서, 상기 비디오의 각각의 색상 성분에 대한 상기 클리핑된 양자화 파라미터의 가장 낮은 값의 표시는 상기 비트스트림 표현 내의 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 비디오 파라미터 세트(VPS), 디코딩 파라미터 세트(DPS), 타일 또는 슬라이스 헤더에서 시그널링되는, 방법.
  7. 제1항 또는 제2항에 있어서, 상기 클리핑된 양자화 파라미터의 가장 낮은 값은 (bd-ibd)×6 + 4이고, bd는 내부 비트 깊이이고 ibd는 상기 비디오의 색상 성분에 대한 입력 비트 깊이인, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 팔레트 모드 코딩 툴은 상기 비디오의 특정 색상 성분에 적용되는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 현재 블록으로부터 상기 비트스트림 표현을 생성하는 단계를 포함하는, 방법.
  10. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 비트스트림 표현으로부터 상기 현재 블록을 생성하는 단계를 포함하는, 방법.
  11. 비디오 시스템에서의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하며, 상기 명령어들은, 상기 프로세서에 의한 실행 시에, 상기 프로세서로 하여금 제1항 내지 제10항 중 하나 이상의 항에 기재된 방법을 구현하게 하는, 장치.
  12. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 제1항 내지 제10항 중 하나 이상의 항에 기재된 방법을 수행하기 위한 프로그램 코드를 포함하는, 컴퓨터 프로그램 제품.
KR1020227007776A 2019-09-19 2020-09-18 팔레트 모드에 대한 양자화 파라미터 도출 KR102624438B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN2019106700 2019-09-19
CNPCT/CN2019/106700 2019-09-19
CNPCT/CN2019/108736 2019-09-27
CN2019108736 2019-09-27
PCT/US2020/051540 WO2021055782A1 (en) 2019-09-19 2020-09-18 Quantization parameter derivation for palette mode

Publications (2)

Publication Number Publication Date
KR20220061969A true KR20220061969A (ko) 2022-05-13
KR102624438B1 KR102624438B1 (ko) 2024-01-15

Family

ID=74883244

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227007776A KR102624438B1 (ko) 2019-09-19 2020-09-18 팔레트 모드에 대한 양자화 파라미터 도출

Country Status (7)

Country Link
US (1) US11563946B2 (ko)
EP (1) EP4032275A4 (ko)
JP (1) JP2022548737A (ko)
KR (1) KR102624438B1 (ko)
CN (1) CN114424545A (ko)
BR (1) BR112022005150A2 (ko)
WO (1) WO2021055782A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220044279A (ko) 2019-08-15 2022-04-07 바이트댄스 아이엔씨 팔레트 이스케이프 심벌에 대한 엔트로피 코딩
WO2021030786A1 (en) 2019-08-15 2021-02-18 Bytedance Inc. Palette mode with different partition structures

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180288415A1 (en) * 2015-06-09 2018-10-04 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008129855A1 (ja) * 2007-04-11 2010-07-22 パナソニック株式会社 画像データ復号化装置、画像データ復号化方法
WO2011142291A1 (ja) * 2010-05-12 2011-11-17 日本電信電話株式会社 動画像符号化制御方法,動画像符号化装置および動画像符号化プログラム
EP2574056A4 (en) * 2010-05-19 2016-03-30 Sk Telecom Co Ltd DEVICE AND METHOD FOR IMAGE ENCODING / DECODING
US20130272390A1 (en) * 2012-04-16 2013-10-17 Qualcomm Incorporated Uniform granularity for quantization matrix in video coding
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9426466B2 (en) * 2012-06-22 2016-08-23 Qualcomm Incorporated Transform skip mode
US9426462B2 (en) * 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding
US9805442B2 (en) * 2012-10-03 2017-10-31 Avago Technologies General Ip (Singapore) Pte. Ltd. Fine-grained bit-rate control
GB2513110A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
JP2017501599A (ja) * 2013-10-07 2017-01-12 ヴィド スケール インコーポレイテッド マルチレイヤビデオコーディングのコンバインドスケーラビリティ処理
US10055189B2 (en) 2014-01-02 2018-08-21 Vid Scale, Inc. Two-dimensional palette coding for screen content coding
KR102494913B1 (ko) 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
EP3117608B1 (en) 2014-03-14 2021-05-12 HFI Innovation Inc. Method for palette management
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
EP3130148A4 (en) 2014-05-23 2017-06-21 HFI Innovation Inc. Methods for palette size signaling and conditional palette escape flag signaling
US10136141B2 (en) * 2014-06-11 2018-11-20 Qualcomm Incorporated Determining quantization parameter (QP) values and delta QP values for palette coded blocks in video coding
US9900617B2 (en) 2014-06-20 2018-02-20 Qualcomm Incorporated Single color palette mode in video coding
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
CN106797469A (zh) 2014-10-06 2017-05-31 Vid拓展公司 改进的用于屏幕内容编码的调色板编码
US20160100177A1 (en) 2014-10-06 2016-04-07 Qualcomm Incorporated Non-uniform exponential-golomb codes for palette mode coding
US10687069B2 (en) * 2014-10-08 2020-06-16 Microsoft Technology Licensing, Llc Adjustments to encoding and decoding when switching color spaces
WO2016100424A1 (en) * 2014-12-19 2016-06-23 Mediatek Inc. Methods of palette based prediction for non-444 color format in video and image coding
US20170374384A1 (en) 2015-01-14 2017-12-28 Vid Scale, Inc. Palette coding for non-4:4:4 screen content video
CN107431817B (zh) 2015-01-29 2020-03-24 Vid拓展公司 用于调色板译码的方法及装置
CN111601110B (zh) 2015-01-29 2023-11-07 Vid拓展公司 用于调色编码模式的逃逸色彩编码
US20160234498A1 (en) 2015-02-05 2016-08-11 Sharp Laboratories Of America, Inc. Methods and systems for palette table coding
US10148981B2 (en) 2015-03-20 2018-12-04 Mediatek Singapore Pte. Ltd. Methods of palette coding with inter-prediction in video coding
KR102060871B1 (ko) 2015-04-08 2019-12-30 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 팔레트 모드 콘텍스트 코딩 및 이진화를 위한 방법
US11146788B2 (en) 2015-06-12 2021-10-12 Qualcomm Incorporated Grouping palette bypass bins for video coding
US10097842B2 (en) 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
ES2935261T3 (es) * 2016-05-28 2023-03-03 Hfi Innovation Inc Método y aparato de codificación de modo de paleta para datos de video de color
EP4064701A1 (en) * 2017-06-29 2022-09-28 Dolby Laboratories Licensing Corporation Integrated image reshaping and video decoding
EP3662664A4 (en) 2017-08-03 2020-11-25 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR DIVIDING VIDEO BLOCKS INTO AN INTERPREDICTION SLICE OF VIDEO DATA
US20190238845A1 (en) * 2018-01-26 2019-08-01 Qualcomm Incorporated Adaptive loop filtering on deblocking filter results in video coding
US20190246122A1 (en) 2018-02-08 2019-08-08 Qualcomm Incorporated Palette coding for video coding
US20210321098A1 (en) * 2018-08-16 2021-10-14 Mediatek Inc. Methods and Apparatuses of Signaling Quantization Parameter in Video Processing System
US11025905B2 (en) 2018-09-14 2021-06-01 Tencent America LLC Method and device for decoding with palette mode
WO2020156528A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Filtering processes based on in-loop reshaping
US11277611B2 (en) * 2019-07-24 2022-03-15 Qualcomm Incorporated Delta quantization parameter (QP) signaling in palette mode
US11206413B2 (en) 2019-08-13 2021-12-21 Qualcomm Incorporated Palette predictor updates for local dual trees
WO2021030786A1 (en) 2019-08-15 2021-02-18 Bytedance Inc. Palette mode with different partition structures

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180288415A1 (en) * 2015-06-09 2018-10-04 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Benjamin Bross et al., "Versatile Video Coding (Draft 6)", JVET of ITU-T and ISO/IEC, JVET-O2001-v14(2019.07.31.) *

Also Published As

Publication number Publication date
EP4032275A1 (en) 2022-07-27
JP2022548737A (ja) 2022-11-21
BR112022005150A2 (pt) 2022-06-14
US20220210419A1 (en) 2022-06-30
WO2021055782A1 (en) 2021-03-25
US11563946B2 (en) 2023-01-24
EP4032275A4 (en) 2022-11-30
KR102624438B1 (ko) 2024-01-15
CN114424545A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
US11528497B2 (en) Palette mode with different partition structures
JP7451731B2 (ja) クロマ成分のためのデブロッキングパラメータ
US11943481B2 (en) Entropy coding for palette escape symbol
US11563946B2 (en) Quantization parameter derivation for palette mode
KR20220115965A (ko) 비디오 코딩을 위한 일반적인 제약 정보
US20240107037A1 (en) Palette Mode For Local Dual Tree
KR20230003061A (ko) 모션 정밀 신택스을 위한 엔트로피 코딩
WO2021136470A1 (en) Clustering based palette mode for video coding
WO2021136486A1 (en) Palette size signaling in video coding
US20220286672A1 (en) Dictionary based coding of video data

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant