KR20220057544A - 비디오 코딩에서 팔레트 예측자 사용 - Google Patents

비디오 코딩에서 팔레트 예측자 사용 Download PDF

Info

Publication number
KR20220057544A
KR20220057544A KR1020227007400A KR20227007400A KR20220057544A KR 20220057544 A KR20220057544 A KR 20220057544A KR 1020227007400 A KR1020227007400 A KR 1020227007400A KR 20227007400 A KR20227007400 A KR 20227007400A KR 20220057544 A KR20220057544 A KR 20220057544A
Authority
KR
South Korea
Prior art keywords
palette
video
predictor
current block
unit
Prior art date
Application number
KR1020227007400A
Other languages
English (en)
Inventor
리 장
웨이지아 주
지장 수
Original Assignee
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 바이트댄스 아이엔씨 filed Critical 바이트댄스 아이엔씨
Publication of KR20220057544A publication Critical patent/KR20220057544A/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods 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 pixel
    • 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/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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

일 예시적 측면에서, 비디오 처리 방법은 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 수행하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 상기 현재 블록에 대한 대표적인 샘플 값들의 팔레트를 상기 팔레트 모드로 예측하기 위해 사용된다. 상기 현재 블록의 상기 변환 후의 상기 예측자 팔레트의 업데이트는 상기 현재 블록의 특성에 기반하는 규칙에 따라 비활성화된다.

Description

비디오 코딩에서 팔레트 예측자 사용
관련 출원들에 대한 상호 참조
파리협약에 따른 적용가능한 특허법 및/또는 규칙에 따라, 본 출원은 2019년 9월 12일에 제출된 국제출원 번호 PCT/CN2019/105554의 우선권과 혜택을 적시에 주장하기 위해 만들어졌다. 상기 법 하의 모든 목적을 위해, 상기 출원의 전체 개시물은 본 출원의 개시의 일부로서 참고로 통합된다.
본 특허 문서는 비디오 코딩 기술들, 디바이스들 및 시스템들에 관한 것이다.
현재 비디오 코덱 기술들의 성과를 향상시켜 더 나은 압축 효율들을 제공하거나 더 낮은 복잡성 또는 병렬화된 구현들을 허용하는 비디오 코딩 및 디코딩 방식들을 제공하려는 노력들이 현재 진행 중이다. 산업계의 전문가들은 몇 가지 새로운 비디오 코딩 툴들을 제안하였고, 그것들의 실효성을 결정하기 위한 시험들이 현재 진행 중에 있다.
디지털 비디오 코딩, 구체적으로 움직임 벡터들의 관리에 관련된 디바이스들, 시스템들 및 방법들이 기술된다. 상기 기술된 방법들은 기존 비디오 코딩 표준들 (예를 들어, 고효율 비디오 코딩(High Efficiency Coding (HEVC)) 또는 다목적 비디오 코딩 (Versatile Video Coding (VVC)) 및 미래의 비디오 코딩 표준들 또는 비디오 코덱들에 적용될 수 있다.
하나의 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용된다. 상기 현재 블록의 변환 후 상기 예측자 팔레트의 업데이트는 상기 현재 블록의 특성에 기반한 규칙에 따라 비활성화된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 변환 동안 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용된다. 상기 예측자 팔레트에 대한 변경이 실시될 것인지 여부는 상기 현재 블록의 컬러 성분에 따라 결정된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 변환 동안 복수의 예측자 팔레트들이 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다 상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용된다. 상기 예측자 팔레트는 상기 비디오 유닛 내의 첫 번째 블록에 앞서 또는 이전 비디오의 마지막 비디오 블록의 변환 후에 규칙에 따라 재설정되거나 재초기화된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오의 비디오 유닛과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 비디오 유닛은 복수의 블록들을 포함한다. 상기 변환 동안, 공유된 예측자 팔레트가 상기 복수의 블록들 모두에 의해 사용되어 상기 팔레트 모드에서 상기 복수의 블록들 각각에 대한 대표적인 샘플값들의 팔레트를 예측한다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트가 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용되며, 상기 예측자 팔레트의 각 엔트리에 대해 카운터가 유지되어 해당 엔트리가 얼마나 빈번하게 사용되는지를 지시한다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 현재 블록에 대한 대표적인 샘플 값들의 팔레트를 예측하기 위해, 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다. 상기 코딩된 표현에서 시그널링되는 상기 팔레트의 엔트리들의 수는 [0, 팔레트에 허용된 최대 크기 - 상기 변환 동안 유도된 팔레트 엔트리들의 수]의 범위 내에 있다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다 상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용되며, 상기 예측자 팔레트의 크기는 규칙에 따라 적응적으로 조정된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다 상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용되고, 대표적인 샘플 값들의 상기 팔레트 또는 상기 예측자 팔레트의 크기는 상기 크기가 상기 비디오의 비디오 유닛들 사이에서 변화하도록 허용하는 규칙에 따라 결정된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 대표적인 샘플 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 비디오 유닛 내의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함한다 상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용된다. 상기 예측자 팔레트는 충족되는 조건에 따라 재초기화되며, 이때 상기 비디오 유닛이 비디오 유닛 행(row)에서 첫 번째 비디오 유닛이고 파면 병렬 처리가 상기 비디오 유닛에 대해 활성화됨을 지시하는 신택스 요소가 상기 코딩된 표현에 포함되는 경우 상기 조건이 충족된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛에서의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 상기 예측자 팔레트는 상기 비디오 블록과 상기 비디오 블록의 비트스트림 표현 간의 변환에 앞서 선택적으로 재설정된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛에서의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 상기 예측자 팔레트는 상기 비디오 유닛 내의 복수의 코딩 유닛들이 공통적으로 공유되는 영역을 가지는 경우 공유되는 예측자 팔레트이다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 또 다른 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 예측자 팔레트의 크기는 하나 또는 그 이상의 조건들에 따라 적응적으로 변화한다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 또 다른 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 상기 예측자 팔레트는 상기 예측자 팔레트 내의 엔트리들의 크기 또는 수에 기반하여 업데이트 된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 또 다른 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 상기 예측자 팔레트의 엔트리들은 재배열되거나 변경된다.
다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 또 다른 방법을 제공하는 데에 사용될 수 있다. 이 방법은 팔레트 모드를 이용하여 비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 수행하는 단계를 포함하며, 이때, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 이때 상기 예측자 팔레트의 사용은 상기 예측자 팔레트가 사용되는 횟수를 기록하는 카운터를 유지함으로써 지시된다.
다른 예시적 측면에서, 상기 기술된 방법들은 프로세서를 포함하는 비디오 디코더 장치에 의해 실시될 수 있다.
다른 예시적 측면에서, 상기 기술된 방법들은 프로세서를 포함하는 비디오 인코더 장치에 의해 실시될 수 있다.
더 나아가, 하나의 대표적인 측면에서, 프로세서 및 명령들을 포함하는 비 일시적 메모리를 포함하는 비디오 시스템 내의 장치가 개시된다. 상기 프로세서에 의해 실행될 경우, 상기 명령들은 상기 프로세서로 하여금 상기 개시된 방법들 중 어느 하나 또는 그 이상을 실시하도록 한다.
또한, 상기 개시된 방법들 중 어느 하나 또는 그 이상을 실행하기 위한 프로그램 코드를 포함하는, 비 일시적인 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 프로그램 제품이 개시된다.
개시된 기술의 상기 및 기타 측면들 및 특징들은 도면, 발명의 설명 및 청구항들에서 훨씬 상세하게 기술된다.
비디오 코딩을 위한 다양한 관련 기술이 제공된다. 상기 기술된 방법들은 기존 비디오 코딩 표준들 (예를 들어, 고효율 비디오 코딩(High Efficiency Coding (HEVC)) 또는 다목적 비디오 코딩 (Versatile Video Coding (VVC)) 및 미래의 비디오 코딩 표준들 또는 비디오 코덱들에 적용될 수 있다.
도 1은 팔레트 모드로 코딩된 블록의 예를 도시한다.
도 2는 팔레트 엔트리들을 시그널링하기 위해 팔레트 예측자를 사용하는 일 예를 도시한다.
도 3은 수평 횡단 스캔 및 수직 횡단 스캔의 일 예를 도시한다.
도 4는 팔레트 인덱스들의 코딩의 일 예를 도시한다.
도 5는 18 x 12 휘도 CTU들을 가지며 12개의 타일들 및 3개의 래스터 스캔 슬라이스들로 분할된 픽처의 일 예를 도시한다.
도 6은 18 x 12 휘도 CTU들을 가지며 24개의 타일들 및 9개의 직사각형 슬라이스들로 분할된 픽처의 일 예를 도시한다.
도 7은 4개의 타일, 11개의 브릭 및 4개의 직사각형 슬라이스로 분할된 픽처의 일 예를 도시한다.
도 8은 28개의 서브 픽처를 가지는 픽처의 일 예를 도시한다.
도 9는 본 문서에서 기술된 시각 미디어 디코딩 또는 시각 미디어 인코딩 기술을 실시하기 위한 하드웨어 플랫폼의 일 예의 블록도이다.
도 10은 개시된 기술들이 실시될 수 있는 예시적 비디오 처리 시스템의 블록도이다.
도 11은 비디오 코딩을 위한 예시적 방법의 순서도이다.
도 12는 본 기술에 따른 비디오 처리 방법의 순서도 표현이다.
도 13은 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 14는 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 15는 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 16은 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 17은 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 18은 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 19는 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 20은 본 기술에 따른 다른 비디오 처리 방법의 순서도 표현이다.
도 21은 본 기술에 따른 또 다른 비디오 처리 방법의 순서도 표현이다.
1. HEVC/H.265에서의 비디오 코딩
비디오 코딩 표준들은 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 주로 발전해 왔다. ITU-T는 H.261및 H.263을 제작했으며, ISO/IEC는 MPEG-1 및 MPEG-4 Visual을 제작하였다. 두 기관은 H.262/MPEG-2 Video, H.264/MPEG-4 Advanced Video Coding (AVC) 그리고 H.265/HEVC 표준들을 공동으로 제작하였다. H.262 이후, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 함께 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC를 넘어서는 미래형 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG는 공동 비디오 탐사 팀 (Joint Video Exploration Team (JVET))를 공동 설립하였다. 그 이후로, 많은 새로운 기법들이 JVET에 의해 채택되어 공동 탐사 모델 (Joint Exploration Model (JEM))이라는 참조 소프트웨어에 포함되었다. 2018년 4월, HEVC 대비 비트 레이트 50% 감소를 목표로하는 VVC 표준 작업을 위해, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 공동 비디오 전문가 팀 (Joint Video Expert Team (JVET))이 결성되었다.
2. 팔레트 모드 (Palette Mode)
2.1 HEVC 화면 콘텐츠 코딩 확장 (HEVC-SCC)에서의 팔레트 모드
2.1.1. 팔레트 모드의 개념
팔레트 모드의 기본 아이디어는 CU 내의 화소들이 대표 칼라 값들의 작은 세트에 의해 표현된다는 것이다. 이 세트를 팔레트라 한다. (어쩌면 양자화된) 성분 값들이 뒤따르는 이스케이프(escape) 심볼을 시그널링함으로써 팔레트 밖에 있는 샘플 또한 나타낼 수 있다. 이러한 종류의 화소를 이스케이프 화소라 한다. 팔레트 모드는 도 1에 도시된다. 도 1에서 기술되듯이, 3개의 칼라 성분(휘도 및 2개의 색차 성분)을 가지는 각각의 화소에 대해, 팔레트에 대한 인덱스가 발견되며, 팔레트에서 발견된 값들에 기반하여 블록이 복원될 수 있다.
2.1.2. 팔레트 엔트리들의 코딩
팔레트 코딩된 블록들에 대해, 아래와 같은 핵심 측면들이 도입되었다.
1) 예측자 팔레트에 기반하여 그리고 현재 팔레트에 대해 시그널링되는 새로운 엔트리들이 있는 경우 이 엔트리들에 기반하여, 상기 현재 팔레트를 구성한다.
2) 현재 샘플들/화소들을 2개의 범주로 분류한다: 하나(제1 범주)는 상기 현재 팔레트 내의 샘플들/화소들을 포함하고, 다른 하나(제2 범주)는 상기 현재 팔레트 너머의 샘플들/화소들을 포함.
a. 상기 제2 범주의 샘플들/화소들에 대해, (인코더 측) 양자화가 샘플들/화소들에 적용되고, 양자화된 값들이 시그널링되며, (디코더 측) 역양자화가 적용된다.
2.1.2.1. 예측자 팔레트 (Predictor palette)
팔레트 엔트리들의 코딩을 위해, 예측자 팔레트가 유지되며, 팔레트 코딩된 블록을 디코딩한 후에 업데이트된다.
2.1.2.1.1. 예측자 팔레트의 초기화
예측자 팔레트는 각 슬라이스 및 각 타일의 시작 부분에서 초기화된다.
예측자 팔레트뿐 아니라 팔레트의 최대 크기도 SPS에서 시그널링된다. HEVC-SCC에서는, PSS에 pallet_predictor_intializer_present_flag가 도입된다. 이 플래그가 1이면, 예측자 팔레트를 초기화하기 위한 엔트리들은 비트스트림에서 시그널링된다.
palette_predictor_initializer_present_flag의 값에 따라, 팔레트 예측자의 크기는 PPS에서 시그널링되는 팔레트 예측자 이니셜라이저 엔트리들을 이용하여 초기화되거나 0으로 재설정된다. HEVC-SCC에서는, 크기 0의 예측자 팔레트 이니셜라이저가 활성화되어 PPS 레벨에서의 예측자 팔레트 초기화의 명시적 비활성화가 허용되었다.
해당 신택스, 시맨틱스 그리고 디코딩 과정은 아래와 같이 정의된다. 새로 추가된 텍스트는 굵은 이탤릭체의 밑줄 친 텍스트이다. 삭제된 텍스는 [[]]로 표시된다.
7.3.2.2.3 시퀀스 파라미터 세트 화면 콘텐츠 확장 신택스
sps_scc_extension( ) { 기술어
sps_curr_pic_ref_enabled_flag u(1)
palette_mode_enabled_flag u(1)
if( palette_mode_enabled_flag ) {
palette_max_size ue(v)
delta_palette_max_predictor_size ue(v)
sps_palette_predictor_initializer_present_flag u(1)
if( sps_palette_predictor_initializer_present_flag ) {
sps_num_palette_predictor_initializer_minus1 ue(v)
numComps = ( chroma_format_idc = = 0 ) ? 1 : 3
for( comp = 0; comp < numComps; comp++ )
for( i = 0; i <= sps_num_palette_predictor_initializer_minus1; i++ )
sps_palette_predictor_initializers[ comp ][ i ] u(v)
}
}
motion_vector_resolution_control_idc u(2)
intra_boundary_filtering_disabled_flag u(1)
}
palette_mode_enabled_flag가 1이면 팔레트 모드를 위한 디코딩 과정이 화면내 블록들에 대해 사용될 수 있음을 명시한다. palette_mode_enabled_flag가 0 이면 팔레트 모드를 위한 디코딩 과정이 적용되지 않음을 명시한다. 존재하지 않는 경우, palette_mode_enabled_flag의 값은 0과 같은 것으로 추론된다.
palette_max_size는 허용된 최대 팔레트 크기를 명시한다. 존재하지 않는 경우, palette_max_size의 값은 0과 같은 것으로 추론된다.
delta_palette_max_predictor_size는 허용된 최대 팔레트 예측자 크기와 허용된 최대 팔레트 크기 사이의 차분을 명시한다. 존재하지 않는 경우, delta_palette_max_predictor_size의 값은 0과 같은 것으로 추론된다. 변수PaletteMaxPredictorSize는 아래와 같이 유도된다.
PaletteMaxPredictorSize = palette_max_size + delta_palette_max_predictor_size (2-1)
비트스트림 적합성(conformance)의 요건으로, palette_max_size 가 0과 같은 경우 delta_palette_max_predictor_size의 값은 0과 같아야 한다.
sps_palette_predictor_initializer_present_flag 가 1 이면, sps_palette_predictor_initializer_flag가 0인 경우 시퀀스 팔레트 예측자 상의 엔트리들이 0으로 초기화된다는 것을 명시하는 조항에서 명시된 sps_palette_predictor_initializers를 사용하여 시퀀스 팔레트 예측자들이 초기화됨을 명시한다. 존재하지 않는 경우, sps_palette_predictor_initializer_flag의 값이 0과 같다고 추론된다.
비트스트림 적합성(conformance)의 요건으로, palette_max_size가 0과 같은 경우 sps_palette_predictor_initializer_present_flag의 값은 0과 같아야 한다.
sps_num_palette_predictor_initializer_minus1 플러스 1은 시퀀스 팔레트 예측자 이니셜라이저 내의 엔트리들의 수를 명시한다.
비트스트림 적합성(conformance)의 요건으로, sps_num_palette_predictor_initializer_minus1 플러스 1의 값은 PaletteMaxPredictorSize 보다 적거나 같아야 한다.
sps_palette_predictor_initializers[comp][i]는 어레이 PredictorPaletteEntries를 초기화하는 데에 사용되는 SPS 상의 i번째 팔레트의 comp 번째 구성품의 값을 명시한다. 0 부터 sps_num_palette_predictor_initializer_minus1까지를 포함한 범위에서 i의 값들에 대해, sps_palette_predictor_initializers[0][i]의 값은 0 부터 (1 << BitDepthY) - 1까지를 포함한 범위 내에 있어야 하며, sps_palette_predictor_initializers[1][i] 및 sps_palette_predictor_initializers[2][i]의 값들은 0 부터 (1 << BitDepthC) - 1까지를 포함한 범위 내에 있어야 한다.
7.3.2.3.3 픽처 파라미터 세트 화면 콘텐츠 코딩 확장 신택스
pps_scc_extension( ) { 기술어
pps_curr_pic_ref_enabled_flag u(1)
residual_adaptive_colour_transform_enabled_flag u(1)
if( residual_adaptive_colour_transform_enabled_flag ) {
pps_slice_act_qp_offsets_present_flag u(1)
pps_act_y_qp_offset_plus5 se(v)
pps_act_cb_qp_offset_plus5 se(v)
pps_act_cr_qp_offset_plus3 se(v)
}
pps_palette_predictor_initializer_present_flag u(1)
if( pps_palette_predictor_initializer_present_flag ) {
pps_num_palette_predictor_initializer ue(v)
if( pps_num_palette_predictor_initializer > 0 ) {
monochrome_palette_flag u(1)
luma_bit_depth_entry_minus8 ue(v)
if( !monochrome_palette_flag )
chroma_bit_depth_entry_minus8 ue(v)
numComps = monochrome_palette_flag ? 1 : 3
for( comp = 0; comp < numComps; comp++ )
for( i = 0; i < pps_num_palette_predictor_initializer; i++ )
pps_palette_predictor_initializers[ comp ][ i ] u(v)
}
}
}
pps_palette_predictor_initializer_present_flag가 1 이면 PPS를 참조하는 픽처들을 위해 사용되는 팔레트 예측자 이니셜라이저들이 PPS에 의해 명시되는 팔레트 예측자 이니셜라이저들에 기반하여 유도됨을 명시한다. pps_palette_predictor_initializer_flag가 0 이면 PPS를 참조하는 픽처들을 위해 사용되는 팔레트 예측자 이니셜라이저들이 활성 SPS에 의해 명시되는 것들과 같은 것으로 추론됨을 명시한다. 존재하지 않는 경우, pps_palette_predictor_initializer_present_flag의 값이 0과 같은 것으로 추론된다.
비트스트림 적합성(conformance)의 요건으로, palette_max_siz가 0과 같거나 palette_mode_enabled_flag가 0과 같은 경우 pps_palette_predictor_initializer_present_flag의 값이 0과 같아야 한다.
pps_num_palette_predictor_initializer는 픽처 팔레트 예측자 이니셜라이저 내의 엔트리들의 수를 명시한다.
비트스트림 적합성(conformance)의 요건으로, pps_num_palette_predictor_initializer의 값은 PaletteMaxPredictorSize 보다 적거나 같아야 한다.
팔레트 예측자 변수들은 다음과 같이 초기화된다.
- 코딩 트리 유닛이 타일 내의 첫 번째 코딩 트리 유닛이라면, 다음이 적용된다.
- 팔레트 예측자 변수들에 대한 초기화 과정은 조항 9.3.2.3에 명시된 바와 같이 호출된다(invoked).
- 그렇지 않고, 만약 entropy_coding_sync_enabled_flag가 1과 같고 CtbAddrInRs % PicWidthInCtbsY가 0과 같거나 TileId[ CtbAddrInTs ]가 TileId[ CtbAddrRsToTs[ CtbAddrInRs - 1 ] ]와 같지 않으면, 다음이 적용된다.
- 공간적 이웃 블록 T (도 2)의 좌측 상단 휘도 샘플의 위치 (xNbT, yNbT)는 아래와 같이 현재 코딩 트리의 좌측 상단 휘도 샘플의 위치 ( x0, y0 )를 이용하여 유도된다.
( xNbT, yNbT ) = ( x0 + CtbSizeY, y0 - CtbSizeY ) (9-3)
- 조항 6.4.1에서 명시된 바와 같은 z 스캔 순서에서 블록에 대한 가용성 유도 과정은 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ) 및 ( xNbT, yNbT )와 동일하게 설정된 주변 위치( xNbY, yNbY)를 입력들로 하여 호출되며, 출력은 availableFlagT로 할당된다.
- 문맥 변수들, 라이스(Rice) 파라미터 초기화 상태들 및 팔레트 예측자 변수들에 대한 동기화 과정은 아래와 같이 호출된다.
- 만약 availableFlagT가 1과 같으면, 조항 9.3.2.5에 명시된 것과 같은 문맥 변수들, 라이스(Rice) 파라미터 초기화 상태들 및 팔레트 예측자 변수들에 대한 동기화 과정은 TableStateIdxWpp, TableMpsValWpp, TableStatCoeffWpp, PredictorPaletteSizeWpp 및 TablePredictorPaletteEntriesWpp를 입력으로 하여 호출된다.
- 그렇지 않은 경우, 다음이 적용된다.
- 팔레트 예측자 변수들에 대한 초기화 과정은 조항 9.3.2.3에 명시된 것과 같이 호출된다.
- 그렇지 않고, 만약 CtbAddrInRs가 slice_segment_address와 같고 dependent_slice_segment_flag가 1과 같으면, 조항 9.3.2.5에 명시된 바와 같은 문맥 변수들 및 라이스 파라미터 초기화 상태들에 대한 동기화 과정은 TableStateIdxDs, TableMpsValDs, TableStatCoeffDs, PredictorPaletteSizeDs, 그리고 TablePredictorPaletteEntriesDs를 입력으로 하여 호출된다.
- 그렇지 않은 경우, 다음이 적용된다.
- 팔레트 예측자 변수들에 대한 초기화 과정은 조항 9.3.2.3에 명시된 바와 같이 호출된다.
9.3.2.3 팔레트 예측자 엔트리들에 대한 초기화 과정
이 과정의 출력들은 초기화된 팔레트 예측자 변수들인 PredictorPaletteSize 및 PredictorPaletteEntries이다.
변수 numComps는 다음과 같이 유도된다.
numComps = ( ChromaArrayType = = 0 ) ? 1 : 3 (9-8)
- 만약 pps_palette_predictor_initializer_present_flag가 1과 같으면, 다음이 적용된다:
- PredictorPaletteSize는 pps_num_palette_predictor_initializer와 같은 것으로 설정된다.
- 어레이 PredictorPaletteEntries는 다음과 같이 유도된다.
for( comp = 0; comp < numComps; comp++ )
for( i = 0; i < PredictorPaletteSize; i++ ) (9-9)
PredictorPaletteEntries[ comp ][ i ] = pps_palette_predictor_initializers[ comp ][ i ]
- 그렇지 않으면 (pps_palette_predictor_initializer_present_flag가 0과 같은 경우), 만약 sps_palette_predictor_initializer_present_flag가 1과 같으면, 다음이 적용된다.
- PredictorPaletteSize는 sps_num_palette_predictor_initializer_minus1 플러스 1과 같은 것으로 설정된다.
- 어레이 PredictorPaletteEntries는 다음과 같이 유도된다.
for( comp = 0; comp < numComps; comp++ )
for( i = 0; i < PredictorPaletteSize; i++ ) (9-10)
PredictorPaletteEntries[ comp ][ i ] = sps_palette_predictor_initializers[ comp ][ i ]
- 그렇지 않으면 (pps_palette_predictor_initializer_present_flag가 0과 같고 sps_palette_predictor_initializer_present_flag가 0과 같으면), PredictorPaletteSize는 0과 같은 것으로 설정된다.
2.1.2.1.2. 예측자 팔레트의 사용
팔레트 예측자의 각각 엔트리에 대해, 재사용 플래그가 시그널링되어 현재 팔레트의 부분인지 여부를 지시한다. 이것을 도 2에 예시되었다. 재사용 플래그들은 0값의 런-길이 코딩을 이용하여 보내질 수 있다. 이후, 새로운 팔레트 엔트리들의 수가 EG-0과 같은 0차 지수 골롬(Exponential Golomb (EG)) 코드를 이용하여 시그널링된다. 최종적으로, 상기 새로운 팔레트 엔트리들을 위한 성분 값들이 시그널링된다.
2.1.2.2. 예측자 팔레트의 업데이트
예측자 팔레트의 업데이트는 다음과 같은 단계들로 실시된다.
(1) 현재 블록을 디코딩하기 전에, PltPred0로 표시되는 예측자 팔레트가 있다.
(2) PltPred0로부터의 엔트리들을 먼저 삽입하고 그 다음으로 현재 팔레트를 위한 새로운 엔트리들을 삽입하여 현재 팔레트 테이블을 구성한다.
(3) PltPred1을 구성한다.
a. 우선 (PltPred0의 엔트리들을 포함할 수 있는) 현재 팔레트 테이블의 엔트리들을 추가한다.
b. 채워지지 않으면, 엔트리 인덱스의 오름차순으로 PltPred0에서 참조되지 않은 엔트리를 추가한다.
2.1.3. 팔레트 인덱스들의 코딩
팔레트 인덱스들은 도 3에 보이는 것과 같은 수평 및 수직 횡단 스캔들을 사용하여 코딩된다. 스캔 순서는 palette_transpose_flag를 사용하여 비트스트림에서 명시적으로 시그널링된다. 이하 세부 항목에서는 스캔이 수평 방향임을 가정한다.
팔레트 인덱스들은 2개의 팔레트 샘플 모드 'COPY_LEFT' 및 'COPY_ABOVE'를 사용하여 코딩된다. 'COPY_LEFT' 모드에서, 팔레트 인덱스는 디코딩된 인덱스로 할당된다. 'COPY_ABOVE' 모드에서는 위 행에 있는 샘플의 팔레트 인덱스가 복사된다. 'COPY_LEFT' 및 'COPY_ABOVE' 모드 모두에 대해, 동일한 모드를 사용하여 마찬가지로 코딩되는 뒤따르는 샘플들의 수를 명시하는 런 값이 시그널링된다.
팔레트 모드에서, 이스케이프 샘플에 대한 인덱스의 값은 팔레트 엔트리들의 수이다. 또한, 이스케이프 심볼이 'COPY_LEFT' 또는 'COPY_ABOVE' 모드에서 런의 부분인 경우, 이스케이프 성분 값들은 각각의 이스케이프 심볼에 대해 시그널링된다. 팔레트 인덱스들의 코딩은 도 4에 예시된다.
이 신택스 순서는 다음과 같이 완성된다. 우선, CU에 대한 인덱스 값들의 수가 시그널링된다. 그 다음으로, 절삭된(truncated) 바이너리 코딩을 사용하여 전체 CU에 대한 실제 인덱스 값들을 시그널링한다. 상기 인덱스 값들 및 인덱스들의 수가 모두 바이패스 모드로 코딩된다. 이것은 인덱스와 관련된 바이패스 빈들을 함께 모은다. 그 다음으로, (필요한 경우) 팔레트 샘플 모드 및 런(run)이 인터리브 방식으로 시그널링된다. 마지막으로, 전체 CU에 대한 이스케이프 샘플들에 해당하는 성분 이스케이프 값들이 바이패스 모드로 함께 코딩된다. 이스케이프 샘플들의 이진화는 EG-3과 같은 3차 EG 코딩이다.
추가적인 신택스 요소 last_run_type_flag는 상기 인덱스 값들을 시그널링한 후에 시그널링된다. 상기 인덱스들의 수와 함께, 이 신택스 요소는 블록 내의 마지막 런에 해당하는 런 값을 시그널링할 필요를 제거한다.
HEVC-SCC에서, 팔레트 모드는 4:2:2, 4:2:0 및 모노크롬(monochrome) 색차 포맷들에 대해서도 활성화된다. 팔레트 엔트리들 및 팔레트 인덱스들의 시그널링은 모든 색차 포맷들에 대해 거의 동일하다. 비-모노크롬 포맷들의 경우, 각각의 팔레트 엔트리는 3개의 성분으로 구성된다. 모노크롬 포맷에 대해, 각각의 팔레트 엔트리는 하나의 성분으로 구성된다. 서브샘플링된 색차들의 경우, 색차 샘플들은 2로 나눌 수 있는 휘도 샘플 인덱스들과 연관된다. CU에 대한 팔레트 인덱스들을 재구성한 후, 샘플이 그것과 연관된 단일 성분만을 가지는 경우, 팔레트 엔트리의 첫번째 성분만이 사용된다. 시그널링의 유일한 차이는 이스케이프 성분 값에 관한 것이다. 각 이스케이프 샘플에 대해서, 시그널링된 이스케이프 성분 값들의 수는 해당 샘플과 연관된 성분들의 수에 따라서 달라질 수 있다.
또한, 팔레트 인덱스 코딩에는 인덱스 조정 과정이 존재한다. 팔레트 인덱스를 시그널링하는 경우, 좌측 이웃 인덱스 또는 상측 이웃 인덱스는 현재 인덱스와 달라야 한다. 따라서, 현재 팔레트 인덱스의 범위는 한 가지 가능성을 제거함으로써 1 만큼 감소될 수 있다. 그 후에, 상기 인덱스는 절삭된 바이너리 (truncated binary (TB)) 이진화로 시그널링된다.
이 부분과 관련된 텍스트들은 다음과 같으며, 이때 CurrPaletteIndex는 현재 팔레트 인덱스이고, adjustedRefPaletteIndex는 예측 인덱스이다.
변수 PaletteIndexMap[ xC ][ yC ]는 CurrentPaletteEntries가 나타내는 어레이에 대한 인덱스인 팔레트 인덱스를 명시한다. 어레이 인덱스들인 xC 및 yC는 픽처의 좌상측 휘도 샘플에 대한 샘플의 위치 ( xC, yC )를 명시한다. PaletteIndexMap[ xC ][ yC ]의 값은 0 부터 MaxPaletteIndex까지를 포함하는 범위 안에 있어야 한다.
변수 adjustedRefPaletteIndex는 다음과 같이 유도된다.
Figure pct00001
CopyAboveIndicesFlag[ xC ][ yC ]가 0과 같은 경우, 변수 CurrPaletteIndex는 다음과 같이 유도된다.
if( CurrPaletteIndex >= adjustedRefPaletteIndex )
CurrPaletteIndex++
2.1.3.1. 팔레트 코딩된 블록의 디코딩 과정
1) 예측 정보를 판독하여 예측자 팔레드의 엔트리들 가운데 어떤 것이 재사용될 것인지를 표시한다. (palette_predictor_run)
2) 현재 블록에 대한 새로운 팔레트 엔트리들을 판독한다.
a. num_signaled_palette_entries
b. new_palette_entries
3) a) 및 b)에 기반하여 CurrentPaletteEntries를 구성한다.
4) 이스케이프 심볼 존재 플래그 palette_escape_val_present_flag를 판독하여 MaxPaletteIndex를 유도한다.
5) 카피 모드/런 모드로 코딩되지 않는 샘플들이 몇 개인지를 코딩한다.
a. num_palette_indices_minus1
b. 카피 모드/런 모드로 코딩되지 않는 각각의 샘플에 대해, 현재 plt 테이블에서 palette_idx_idc를 코딩한다.
2.2. VVC에서의 팔레트 모드
2.2.1. 듀얼 트리의 팔레트
VVC에서, 듀얼 트리 코딩 구조는 화면내 슬라이스들을 코딩하는 데에 사용되어, 휘도 성분 및 2개의 색차 성분들은 상이한 팔레트 및 팔레트 인덱스들을 가질 수 있다. 또한, 상기 2개의 색차 성분들은 동일한 팔레트 및 팔레트 인덱스들을 공유한다.
2.2.2. 별도의 모드로서의 팔레트
일부 실시예들에서, 코딩 유닛을 위한 예측 모드들은 MODE_INTRA, MODE_INTER, MODE_IBC 그리고 MODE_PLT일 수 있다. 예측 모드들의 이진화는 그에 따라 변동된다.
IBC가 꺼져 있으면(turned off), I 타일들에서, 첫 번째 하나의 빈이 채용되어 현재 예측 모드가 MODE_PLT인지 여부를 지시한다. 반면에, P/B 타일들에서는, 상기 첫 번째 빈은 현재 예측 모드가 MODE_INTRA인지 여부를 지시하기 위해 채용된다. 만약 그렇지 않으면, 하나의 추가적인 빈이 채용되어 현재 예측 모드가 MODE_PLT 인지 또는 MODE_INTER 인지를 지시한다.
IBC가 켜져 있으면, I 타일들에서, 첫 번째 빈은 현재 예측 모드가 MODE_IBC인지 여부를 지시하기 위해 채용된다. 만약 그렇지 않으면, 두 번째 빈이 채용되어 현재 예측 모드가 MODE_PLT인지 MODE_INTRA인지 여부를 지시한다. 반면에, P/B 타일들에서는, 첫 번째 빈은 현재 예측 모드가 MODE_INTRA인지 여부를 지시하기 위해 채용된다. 만약 그것이 화면 내 모드라면, 두 번째 빈은 현재 예측 모드가 MODE_INTRA 인지 여부를 지시하기 위해 채용된다. 만약 그것이 화면내 예측 모드이면, 두 번째 빈은 현재 예측 모드가 MODE_PLT 또는 MODE_INTRA임을 지시하기 위해 채용된다. 만약 그렇지 않다면, 두 번째 빈은 현재 예측 모드가 MODE_IBC 또는 MODE_INTER임을 지시하기 위해 채용된다.
예시적인 신택스 텍스트들은 아래와 같다.
코딩 유닛 신택스
coding_unit( x0, y0, cbWidth, cbHeight, cqtDepth, treeType, modeType ) { 기술어
chType = treeType = = DUAL_TREE_CHROMA? 1 : 0
if( slice_type != I | | sps_ibc_enabled_flag | | sps_palette_enabled_flag) {
if( treeType != DUAL_TREE_CHROMA &&
!( ( ( cbWidth = = 4 && cbHeight = = 4 ) | | modeType = = MODE_TYPE_INTRA )
&& !sps_ibc_enabled_flag ) )
cu_skip_flag[ x0 ][ y0 ] ae(v)
if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I
&& !( cbWidth = = 4 && cbHeight = = 4 ) && modeType = = MODE_TYPE_ALL )
pred_mode_flag ae(v)
if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | | ( slice_type != I && ( CuPredMode[ chType ][ x0 ][ y0 ] != MODE_INTRA | | ( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] = = 0 ) ) ) ) && cbWidth <= 64 && cbHeight <= 64 && modeType != MODE_TYPE_INTER && sps_ibc_enabled_flag && treeType != DUAL_TREE_CHROMA )
pred_mode_ibc_flag ae(v)
if( ( ( ( slice_type = = I | | ( cbWidth = = 4 && cbHeight = = 4 ) | | sps_ibc_enabled_flag ) && CuPredMode[ x0 ][ y0 ] = = MODE_INTRA ) | | ( slice_type != I && !( cbWidth = = 4 && cbHeight = = 4 ) && !sps_ibc_enabled_flag && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) && sps_palette_enabled_flag && cbWidth <= 64 && cbHeight <= 64 && && cu_skip_flag[ x0 ][ y0 ] = = 0 && modeType != MODE_INTER )
pred_mode_plt_flag ae(v)
}
...
}
2.3. 픽처, 서브 픽처, 슬라이스, 타일, 브릭 및 CTU의 분할
서브 픽처: 한 픽처 내에 하나 또는 그 이상의 슬라이스들의 직사각형 영역.
슬라이스: 단일 NAL 유닛에만 포함되는, 픽처의 정수개의 브릭들. 하나의 슬라이스는 다수의 완전한 타일들로 구성되거나 또는 하나의 타일의 완전한 브릭들의 연속적인 시퀀스로만 구성된다.
타일: 픽처에서 특정한 타일 열(column) 및 특정한 타일 행(row) 내부의 CTU들의 직사각형 영역
브릭: 픽처에서 특정한 타일 내의 CTU 행들의 직사각형 영역. 타일은 복수의 브릭들로 분할될 수 있으며, 각각의 브릭은 상기 타일 내의 하나 또는 그 이상의 CTU 행들로 구성된다. 복수의 브릭들로 분할되지 않는 타일은 브릭으로도 불린다. 하지만 타일의 실제 서브 세트인 브릭은 타일로 불리지 않는다.
브릭 스캔: 픽처를 분할하는 CTU들의 특정한 연속적 배치(ordering)로, 상기 픽처에서 상기 CTU들은 브릭 안에서 CTU 래스터 스캔으로 연속적으로 배치되며, 타일 내에서 브릭들은 상기 타일의 상기 브릭들의 래스터 스캔으로 연속적으로 배치되고, 픽처 내의 타일들은 상기 픽처의 상기 타일들의 래스터 스캔으로 연속적으로 배치된다.
픽처는 하나 또는 그 이상의 타일 행들과 하나 또는 그 이상의 타일 열들로 나누어진다. 타일은 픽처의 직사각형 영역을 덮는 CTU들의 시퀀스이다.
타일은 하나 또는 그 이상의 브릭들로 나뉘며, 브릭들 각각은 상기 타일 내의 여러 CTU 행들로 구성된다.
복수의 브릭들로 분할되지 않는 타일은 브릭으로도 불린다. 하지만, 타일의 실제 서브 세트인 브릭은 타일로 불리지 않는다.
슬라이스는 픽처의 여러 타일들 또는 타일의 여러 브릭들을 포함한다.
서브 픽처는 픽처의 직사각형 영역을 일괄적으로(collectively) 덮는 하나 또는 그 이상의 슬라이스들을 포함한다.
슬라이스들의 2 모드, 즉 래스터 스캔 슬라이스 모드와 직사각형 슬라이스 모드가 지원된다. 래스터 스캔 슬라이스 모드에서, 슬라이스는 픽처의 타일 래스터 스캔에 타일들의 시퀀스를 포함한다. 직사각형 슬라이스 모드에서, 슬라이스는 픽처의 직사각형 영역을 일괄적으로 형성하는 퍽처의 다수의 브릭들을 포함한다. 직사각형 슬라이스 내의 브릭들은 상기 슬라이스의 브릭 래스터 스캔의 순서로 있다.
도 5는 12개의 타일들 및 3개의 래스터 스캔 슬라이스들로 분할된 픽처의 래스터 스캔 슬라이스 분할의 일 예를 도시한다.
도 6은 24개의 타일들 (6개의 타일 열 및 4개의 타일 행) 및 9개의 직사각형 슬라이스들로 분할된 픽처의 직사각형 슬라이스 분할의 일 예를 도시한다.
도 7은 타일, 브릭 및 직사각형 슬라이스로 분할된 픽처의 일 예를 도시하며, 상기 픽처는 4개의 타일 (2개의 타일 열 및 2개의 타일 행), 11개의 브릭 (좌상측 타일은 브릭 한 개를 포함하고, 우상측 타일은 5개의 브릭을 포함하고, 좌측 하단 타일은 2개의 브릭을 포함하고, 우측 하단 타일은 3개의 브릭을 포함) 및 4개의 직사각형 슬라이스로 된다.
도 8은 다양한 치수를 가지는 28개의 서브 픽처로 분할된 픽처의 서브 픽처 분할의 일 예를 도시한다.
3개의 별개의 색 평면들을 이용하여 픽처가 코딩되는 경우 (separate_colour_plane_flag가 1과 같음), 슬라이스는 colour_plane_id의 해당 값으로 식별되는 하나의 컬러 성분의 CTU들만을 포함하며, 픽처의 각 컬러 성분 어레이는 동일한 colour_plane_id 값을 가지는 슬라이스들로 구성된다. 픽처 내에서 colour_plane_id의 상이한 값들을 가지는 코딩된 슬라이스들은 서로 인터리빙될 수 있으며, 이때 제약 조건은 colour_plane_id의 각 값에 대해 colour_plane_id의 해당 값을 가지는 코딩된 슬라이스 NAL 유닛들이 각각의 코딩된 슬라이스 NAL 유닛의 첫 번째 CTU에 대한 브릭 스캔 차수에서 증가하는 CTU 어드레스의 순서로 있어야 한다는 것이다.
separate_colour_plane_flag가 0과 같은 경우, 픽처의 각 CTU는 정확히 하나의 슬라이스에 포함된다. separate_colour_plane_flag가 1과 같은 경우, 컬러 성분의 각 CTU는 정확히 하나의 슬라이스에 포함된다(예를 들어, 픽처의 각 CTU에 대한 정보는 정확히 3개의 슬라이스들에 있으며, 이 3 슬라이스들은 colour_plane_id의 상이한 값들을 가진다).
2.4. 1-CTU 지연을 가지는 파면
VVC에서는, HEVC 설계와 같은 2-CTU 지연 대신 1-CTU 지연 파면 병렬 처리(wavefront parallel processing (WPP))가 채용된다. 상기 WPP 처리는 제한된 코딩 손실로 여러 개의 병렬 처리를 할 수 있지만, 2-CTU 지연은 상기 병렬 처리 능력에 방해가 될 수 있다. 타겟 해상도가 점점 높아지고 있고 CPU의 수가 증가하고 있기 때문에, 제안된 1-CTU 지연을 활용하여 병렬 처리 능력을 향상시키면 코딩 지연을 줄이는 데에 이득이 되며, 이것은 CTU 능력을 충분히 활용하게 될 것이라고 주장된다.
3. 기존 구현들에서의 예시적 문제들
DMVR 및 BIO는 움직임 벡터들을 개선하는 동안 원본 시그널을 포함하지 않으며, 그 결과 코딩 블록들은 부정확한 움직임 정보를 가질 수 있다. 또한, DMVR 및 BIO는 종종 움직임 개선 후에 분수 움직임 벡터들을 채용하는 경우가 있는 반면에, 스크린 비디오들은 대개 정수 모션 벡터들을 가지므로, 현재 움직임 정보는 더 부정확해지고 코딩 성능은 더 나빠진다.
(1) 현재 팔레트는 이전에 코딩된 것으로부터의 예측으로 구성된다. entropy_coding_sync_enabled_flag가 1과 같은 경우에만, 새로운 CTU 행 또는 새로운 타일을 디코딩하기 전에 재초기화된다. 하지만, 실제 적용에서는, 병렬 인코더가 선호되며, 이때 상이한 CTU 행들이 다른 CTU 행들의 정보를 참조하지 않고서 미리 코딩될 수 있다.
(2) 예측자 팔레트 업데이트 과정을 다루는 방식은 고정되어 있다. 즉, 이전 예측자 팔레트에서 계승된 엔트리들 및 현재 팔레트의 새로운 엔트리들이 순서대로 삽입된다. 만약 엔트리들의 수가 예측자 팔레트의 크기 보다 여전히 적다면, 이전 예측자 팔레트로부터 계승되지 않은 엔트리들이 더 추가된다. 이러한 설계는 현재 및 이전 예측자 팔레트에서의 상이한 엔트리들의 중요성을 고려하지 않는다.
(3) 예측자 팔레트의 크기는 고정되어 있고, 블록을 디코딩한 후에 그것은 업데이트 되어 모든 엔트리들을 채워야 하며, 이는 하위 선택 사항일 수 있다. 왜냐하면 그것들 중 일부는 한 번도 참조되지 않을 수 있기 때문이다.
(4) 현재 팔레트의 크기는 컬러 성분들과 상관없이 고정되며, 예를 들어 휘도와 비교하여 색차 샘플들이 적게 사용될 수 있다.
4. 예시적인 기술들 및 실시예들
아래에 설명되는 상세한 실시예들은 일반적인 개념들을 설명하기 위한 예시들로 고려되어야 한다. 이 실시예들은 좁은 방식으로 해석되어서는 안 된다. 더욱이, 이 실시예들은 어떠한 방식으로도 조합될 수 있다.
아래에 설명되는 방법들은 아래에서 언급되는 DMVR 및 BIO에 추가로 다른 디코더 움직임 정보 유도 기술들에도 적용될 수 있다.
예측자 팔레트 관련
1. 새로운 비디오 유닛에서 첫 번째 블록을 디코딩하기 전에 예측자 팔레트(예를 들어, 예측자 팔레트의 엔트리들 및/또는 크기)를 재설정하거나 재초기화할 것이 제안된다.
a. 또는, 상기 비디오 유닛에서 마지막 블록을 디코딩한 후에 예측자 팔레트(예를 들어, 예측자 팔레트의 엔트리들 및/또는 크기)가 재설정되거나 재초기화될 수 있다.
b. 일 예에서, 상기 비디오 유닛은 CTU(예를 들어, VPDU)/CTU/CTB/복수의 CTU/복수의 CU/CTU 행/타일/브릭/서브 픽처/뷰 등의 하위 영역(sub-region)이다.
i. 또는, 더 나아가, 상기 방법은 파면이 비활성되었을 때에도 호출된다(예를 들어, entropy_coding_sync_enabled_flag가 0과 같음).
c. 일 예에서, 상기 비디오 유닛은 색차 CTU 행이다.
i. 또는, 더 나아가서, 예측자 팔레트는 새로운 색차 CTU 행에서 첫 번째 CTB를 디코딩하기 전에 재설정되거나 재초기화될 수 있다.
ii. 또는, 더 나아가서, 상기 방법은 듀얼 트리가 적용되고 현재 파티션 트리가 색차 코딩 트리인 경우 호출된다.
d. 일 예에서, 예측자 팔레트의 크기(예를 들어, 명세서에서 PredictorPaletteSize)는 0으로 재설정된다.
e. 일 예에서, 예측자 팔레트의 크기(예를 들어, 명세서에서 PredictorPaletteSize)는 시퀀스 팔레트 예측자 이니셜라이저 내의 엔트리들의 수(예를 들어, sps_num_palette_predictor_initializer_minus1 플러스 1) 또는 예측자 팔레트에서 허용된 엔트리들의 최대 수(예를 들어, PaletteMaxPredictorSize)로 재설정된다.
f. 새로운 시퀀스/픽처를 디코딩하기 전의 예측자 팔레트(예를 들어, PredictorPaletteEntries)의 초기화는 상기 새로운 비디오 유닛을 인코딩/디코딩하기 전에 예측자 팔레트를 초기화하기 위해 활용될 수 있다.
g. 일 예에서, entropy_coding_sync_enabled_flag가 1과 같은 경우, 상부 CTB/CTU를 인코딩/디코딩한 후의 예측자 팔레트는 현재 CTB/CTU를 인코딩/디코딩하기 전에 예측자 팔레트를 초기화하는 데에 사용될 수 있다.
2. 팔레트 코딩된 특정 블록을 인코딩/디코딩 한 후에 예측자 팔레트의 업데이트를 비활성화할 것이 제안된다.
a. 일 예에서, 예측자 팔레트를 업데이트할지 여부는 현재 블록의 디코딩된 정보에 의존할 수 있다.
i. 일 예에서, 예측자 팔레트를 업데이트할지 여부는 현재 블록의 블록 정보에 의존할 수 있다.
1. 일 예에서, 만약 현재 블록의 폭(width)이 (T1에 의해 지시되는) 제1 임계값 보다 크지 않고 현재 블록의 높이가 (T2에 의해 지시되는) 제2 임계값 보다 크지 않다면, 업데이트 과정은 비활성화된다.
2. 일 예에서, 만약 현재 블록의 폭과 블록의 높이의 곱이 (T1에 의해 지시되는) 제1 임계값 보다 크지 않다면, 업데이트 과정은 비활성화된다.
3. 일 예에서, 만약 현재 블록의 폭이 (T1에 의해 지시되는) 제1 임계값 보다 작지 않고 현재 블록의 높이가 (T2에 의해 지시되는) 제2 임계값 보다 작지 않다면, 업데이트 과정은 비활성화된다.
4. 일 예에서, 만약 현재 블록의 폭과 블록의 높이의 곱이 (T1에 의해 지시되는) 제1 임계값 보다 작지 않다면, 업데이트 과정은 비활성화된다.
5. 상기 예들에서, T1/T2는 미리 정의되거나 시그널링될 수 있다.
a) 일 예에서, T1/T2는 4, 16 또는 1024로 설정될 수 있다.
b) 일 예에서, T1/T2는 컬러 성분들에 의존할 수 있다.
3. 공유된 영역 하의 모든 CU/PU가 동일한 예측자 팔레트를 사용하는 것으로 상기 예측자 팔레트가 정의될 수 있다.
a. 일 예에서, 상기 공유된 영역은 TT 분할을 가지는 MxN 영역(예를 들어, 16x4 또는 4x16 영역)에 대해 정의될 수 있다.
b. 일 예에서, 상기 공유된 영역은 BT 분할을 가지는 MxN 영역(예를 들어, 8x8 영역)에 대해 정의될 수 있다.
c. 일 예에서, 상기 공유된 영역은 QT 분할을 가지는 MxN 영역(예를 들어, 8x8 영역)에 대해 정의될 수 있다.
d. 또는, 더 나아가, 상기 공유된 예측자 팔레트는 상기 공유된 영역을 가지는 모든 블록들을 인코딩/디코딩하기 전에 한 번 구성될 수 있다.
e. 일 예에서, 상기 예측자 팔레트에서 예측된 엔트리들의 지시들은(예를 들어, palette_predictor_run) 상기 공유된 영역 내의 제1 팔레트 코딩된 블록과 함께 시그널링 될 수 있다.
i. 또는, 더 나아가, 상기 예측자 팔레트에서 예측된 엔트리들의 지시들은(예를 들어, palette_predictor_run) 상기 공유된 영역 내의 나머지 코딩된 블록들에 대해 생략될 수 있다.
f. 또는, 더 나아가, 상기 공유된 영역 내의 블록을 디코딩/인코딩한 후에, 예측자 팔레트의 업데이트는 항상 생략될 수 있다.
4. 예측자 팔레트의 각 엔트리에 대해 카운터가 유지되어 그것이 얼마나 빈번하게 사용되는지를 지시할 수 있다.
a. 일 예에서, 상기 카운터는 상기 예측자 팔레트에 추가된 각각의 새로운 엔트리에 대해 상수 K로 설정될 수 있다.
i. 일 예에서, K는 0으로 설정될 수 있다.
b. 일 예에서, 팔레트 블록을 인코딩/디코딩할 때 엔트리가 재사용되는 것으로 표시되면, 해당 카운터는 상수 N 만큼 증가할 수 있다.
i. 일 예에서, N은 1로 설정될 수 있다.
5. 예측자 팔레트의 고정된 크기를 사용하는 대신, 예측자 팔레트의 크기를 적응적으로 변경할 것이 제안된다.
a. 일 예에서, 그것은 한 비디오 유닛(블록/CU/CTU/타일/브릭/서브픽처)에서 다른 비디오 유닛으로 변경될 수 있다.
b. 일 예에서, 예측자 팔레트의 크기는 현재 팔레트의 크기에 따라 업데이트될 수 있다.
i. 일 예에서, 예측자 팔레트의 크기는 현재 블록을 디코딩/인코딩한 후에 현재 팔레트의 크기로 설정될 수 있다.
ii. 일 예에서, 예측자 팔레트의 크기는 현재 블록을 디코딩/인코딩 한 후 현재 팔레트의 크기에 K로 나타내는 정수 값을 빼거나 더한 값으로 설정될 수 있다.
1. 일 예에서, K는 수시로 시그널링/유도될 수 있다.
c. 일 예에서, 예측자 팔레트의 크기는 블록 크기에 의존할 수 있다. S를 팔레트 코딩된 블록에 대한 예측자 팔레트의 미리 정의된 크기라 하자.
i. 일 예에서, T 이하의 크기를 가진 팔레트 코딩된 블록은 S보다 작은 크기를 가진 예측자 팔레트를 사용할 수 있다.
1. 일 예에서, 상기 예측자 팔레트에서 첫 K개의 엔트리들이(K <= S) 사용될 수 있다.
2. 일 예에서, 상기 팔레트 예측자의 서브 샘플링된 버전이 사용될 수 있다.
ii. 일 예에서, T 보다 크거나 같은 크기를 가지는 팔레트 코딩된 블록은 S와 같은 크기를 가진 예측자 팔레트를 사용할 수 있다.
iii. 상기 예들에서, K 및/또는 T는 정수들이며, 다음에 기반할 수 있다.
1. 비디오 콘텐츠 (예를 들어, 화면 콘텐츠 또는 자연 콘텐츠)
2. DPS/SPS/VPS/PPS/APS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/최대 코딩 유닛(Largest Coding Unit (LCU))/코딩 유닛 (Coding Unit(CU))/LCU 행/ LCU들의 그룹/TU/PU 블록/비디오 코딩 유닛에서 시그널링된 메시지
3. CU/PU/TU/블록/비디오 코딩 유닛의 위치
4. (4:2:0, 4:4:4, RGB 또는 YUV 등의) 컬러 포맷의 지시
5. (듀얼 트리 또는 싱글 트리 등의) 코딩 트리 구조
6. 슬라이스/타일 그룹 타입 및/또는 픽처 타입
7. 컬러 성분
8. 시간적 계층 ID
9. 표준의 프로파일/레벨/단(tier)
d. 일 예에서, 팔레트 블록을 인코딩/디코딩한 후에, 예측자 팔레트는 엔트리들의 카운터들에 따라 조정될(tailored) 수 있다.
i. 일 예에서, 임계값 T 보다 작은 카운터를 가진 엔트리는 폐기될 수 있다.
ii. 일 예에서, 가장 작은 카운터 값들을 가지는 엔트리들은 예측자 팔레트의 크기가 임계값 T 보다 작아질 때까지 폐기될 수 있다.
e. 또는, 더 나아가, 팔레트 코딩된 블록을 디코딩/인코딩한 후, 예측자 팔레트는 현재 팔레트에만 기반하여 업데이트될 수 있다.
i. 또는, 더 나아가, 팔레트 코딩된 블록을 디코딩/인코딩한 후, 예측자 팔레트는 업데이트되어 현재 팔레트가 될 수 있다.
6. 현재 블록을 인코딩/디코딩 하기 전의 현재 팔레트 및 예측자 팔레트의 엔트리들은 상기 예측자 팔레트를 업데이트하는 데에 사용되기 전에 재배열(re-ordered)/변경될 수 있다.
a. 일 예에서, 재배열은 현재 샘플의 디코딩된 정보/재구성에 따라 적용될 수 있다.
b. 일 예에서, 재배열은 엔트리들의 카운터 값들에 따라 적용될 수 있다.
c. 또는, 더 나아가, (현재 팔레트 내 및/또는 현재 팔레트 바깥에서) 샘플/화소가 몇 번 발생하는지가 카운트될 수 있다.
i. 또는, 더 나아가, 더 큰 카운터를 가지는(예를 들어, 더 빈번하게 발생하는) 샘플/화소는 더 작은 카운터를 가지는 다른 것 보다 앞에 놓일 수 있다.
7. 이스케이프된 샘플들의 정보는 예측자 팔레트를 업데이트 하는 데에 활용될 수 있다.
a. 또는, 더 나아가, 이스케이프된 정보로 예측자 팔레트를 업데이트하는 것을 조건적으로 호출될 수 있다.
i. 일 예에서, 현재 팔레트를 삽입한 후에 예측자 팔레트가 채워지지 않는 경우, 상기 이스케이프된 샘플/화소 정보는 상기 예측자 팔레트에 추가될 수 있다.
8. 예측자 팔레트의 업데이트/초기화/재설정은 컬러 성분에 의존할 수 있다.
a. 일 예에서, 예측자 팔레트를 업데이트 할 것인지 여부를 결정하기 위한 규칙은 휘도 또는 색차와 같은 컬러 성분들에 의존할 수 있다.
9. 복수의 예측자 팔레트들로 구성된 세트가 유지 및/또는 업데이트 될 수 있다.
a. 일 예에서, 하나의 예측자 팔레트는 하나 또는 모든 컬러 성분들에 대한 정보를 가질 수 있다.
b. 일 예에서, 하나의 예측자 팔레트는 2개의 컬러 성분들에 대한 정보를(예를 들어, Cb 및 Cr) 가질 수 있다.
c. 일 예에서, 적어도 하나의 글로벌 팔레트 및 적어도 하나의 로컬 팔레트가 유지될 수 있다.
i. 일 예에서, 예측자 팔레트는 상기 글로벌 팔레트 및 로컬 팔레트에 따라 업데이트될 수 있다.
d. 일 예에서, (인코딩/디코딩 순서로) 마지막 K개의 팔레트 코딩된 블록들과 관련된 팔레트들이 유지될 수 있다.
e. 일 예에서, 휘도 및 색차 성분들에 대한 팔레트는 상이한 예측자 팔레트들로부터, 가령 복수의 예측자 팔레트들의 상기 세트에 대한 상이한 인덱스들로 예측될 수 있다.
f. 또는, 더 나아가, 불릿 1이 상기 예측자 팔레트들의 세트에 대해 적용될 수 있다.
g. 또는, 더 나아가, 상기 예측자 팔레트들의 세트 내의 예측자 팔레트의 인덱스/인덱스들은 CU/PU/CTU/CTB/CUT 또는 CTB의 서브 영역에 대해 시그널링될 수 있다.
팔레트/예측자 팔레트 크기 관련
10. 팔레트의 크기는 하나의 비디오 유닛에서 다른 비디오 유닛으로 변경될 수 있다.
a. 일 예에서, 그것은 하나의 비디오 유닛(블록/CU/CTU/타일/브릭/서브 픽처)에서 다른 비디오 유닛으로 변경될 수 있다.
b. 일 예에서, 그것은 현재 블록 및/또는 이웃(인접 또는 비-인접) 블록들의 디코딩된 정보에 의존적일 수 있다.
11. 팔레트 및/또는 예측자 팔레트의 크기는 블록 치수 및/또는 양자화 파라미터들에 의존적일 수 있다.
12. 팔레트 및/또는 예측자 팔레트의 크기(또는 그것 안의 엔트리들의 수)는 상이한 컬러 성분들에 대해 상이할 수 있다.
a. 일 예에서, 휘도 및 색차 성분들에 대한 팔레트 및/또는 예측자 팔레트의 크기들의 지시들이 명시적으로 또는 묵시적으로 시그널링될 수 있다.
b. 일 예에서, 각각의 컬러 성분에 대한 팔레트 및/또는 예측자 팔레트의 크기들의 지시들이 명시적으로 또는 묵시적으로 시그널링될 수 있다.
c. 일 예에서, 복수의 크기들의 지시들을 시그널링할 것인지 여부는 듀얼 트리 및/또는 슬라이스/픽처 타입들의 사용에 의존할 수 있다.
팔레트의 시그널링
13. 적합성 비트스트림은 현재 블록에 대해 직접적으로 시그널링된 엔트리들의 수(예를 들어, num_signaled_palette_entries)가 0과 palette_max_size- NumPredictedPaletteEntries를 포함하는 닫힌 범위인 [0, palette_max_size- NumPredictedPaletteEntries] 이내에 있어야 한다는 조건을 만족해야 한다.
a. num_signaled_palette_entries를 어떻게 이진화할 것인지는 상기 허용된 범위에 의존할 수 있다.
i. 절삭된 이진화 코딩이 EG-0th 대신 활용될 수 있다.
b. num_signaled_palette_entries를 어떻게 이진화할 것인지는 디코딩된 정보(예를 들어, 블록 치수)에 의존할 수 있다.
1-CTU를 가지는 파면 관련
14. CTU 신택스의 파싱을 종결하고 (예를 들어, VVC 7.3.8.2항), entropy_coding_sync_enabled_flag가 1과 같고, 현재 CTB가 새로운 CTU 행에서 첫 번째 것이거나 현재 CTB가 그것의 이전 CTB와 동일한 브릭에 있지 않는 경우, 예측자 팔레트(예를 들어, 엔트리들 및/또는 크기)를 재초기화할 것이 제안된다.
a. 또는, 더 나아가, PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp는 상기 CTU를 인코딩/디코딩하는 것을 종결한 후 예측자 팔레트의 업데이트된 크기 및 엔트리들을 기록하기 위해 유지된다.
i. 또는, 더 나아가, PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp는 현재 CTU 내의 현재 블록을 인코딩/디코딩하는 데에 활용될 수 있다.
b. 일 예에서, 7.3.8.2항의 CTU 신택스 파싱을 종결하고, entropy_coding_sync_enabled_flag가 1과 같고, CtbAddrInRs % PicWidthInCtbsY가 0과 같거나 BrickId[ CtbAddrInBs ]가 BrickId[ CtbAddrRsToBs[ CtbAddrInRs - 1 ] ]와 같지 않은 경우, palette_mode_enabled_flag 가 1과 같으면, 9.3.2.3에 명시된 것과 같은 문맥 변수들을 위한 저장 과정이 TableStateIdx0Wpp, TableStateIdx1Wpp, TableMpsValWpp, PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp를 출력들로 하여 호출된다.
일반사항
15. 상기 방법들의 적용여부 및/또는 적용 방식은 아래에 기반한다.
a. 비디오 콘텐츠 (예를 들어, 화면 콘텐츠 또는 자연 콘텐츠)
b. DPS/SPS/VPS/PPS/APS/픽처 헤더/슬라이스 헤더/타일 그룹 헤더/최대 코딩 유닛(Largest Coding Unit (LCU))/코딩 유닛 (Coding Unit(CU))/LCU 행/ LCU들의 그룹/TU/PU 블록/비디오 코딩 유닛에서 시그널링된 메시지
c. CU/PU/TU/블록/비디오 코딩 유닛의 위치
d. 현재 블록 및/또는 그것의 이웃 블록들의 디코딩된 정보
i. 현재 블록 및/또는 그것의 이웃 블록들의 블록 치수/블록 모양
e. (4:2:0, 4:4:4, RGB 또는 YUV와 같은) 컬러 포맷
f. (듀얼 트리 또는 싱글 트리와 같은) 코딩 트리 구조
g. 슬라이스/타일 그룹 타입 및/또는 픽처 타입
h. 컬러 성분 (예를 들어, 휘도 성분 및/또는 색차 성분에만 적용될 수 있음)
i. 시간적 계층 ID
j. 표준의 프로파일/레벨/단(tier)
5. 추가적인 실시예들
아래 실시예들에서, 새로 추가된 텍스트는 굵은 이탤릭체의 밑줄 친 텍스트이다. 삭제된 텍스는 [[]]로 표시된다.
5.1. 실시예 #1
9.3.1 일반사항
이 과정은 7.3.8.1항부터 7.3.8.12항까지에서 기술어 ae(v)를 가지는 신택스 요소들을 파싱할 때 호출된다.
이 과정의 입력들은 신택스 요소의 값에 대한 요청 및 이전에 파싱된 신택스 요소들의 값들이다.
이 과정의 출력은 상기 신택스 요소의 값이다.
9.3.2항에 명시된 것과 같은 초기화 과정은 다음 중 하나 또는 그 이상의 파싱을 시작할 때 호출된다.
1. 7.3.8.1항에 명시된 슬라이스 세그먼트 데이터 신택스,
2. 7.3.8.2항에 명시된 CTU 신택스 및 CTU는 브릭 [[타일]]에서 첫 번째 CTU,
3. 7.3.8.2항에 명시된 CTU 신택스, [[entropy_coding_sync_enabled_flag는 1과 같고]] 연관된 휘도 CTB는 브릭 [[타일]]의 CTU행에서 첫 번째 휘도 CTB.
신택스 요소들의 파싱은 다음과 같이 진행된다.
cabac_bypass_alignment_enabled_flag가 1과 같고, 신택스 요소의 값에 대한 요청이 신택스 요소 coeff_abs_level_remaining[ ] 또는 coeff_sign_flag[ ]에 대한 것이고 escapeDataPresent가 1과 같은 경우, 정렬된 바이패스 디코딩에 앞서 9.3.4.3.6항에 명시된 것과 같은 정렬 과정이 호출된다.
신택스 요소의 각각의 요청된 값에 대해, 이진화는 9.3.3항에 명시된 바와 같이 유도된다.
신택스 요소 및 파싱된 빈들의 시퀀스에 대한 이진화는 9.3.4항에 기술된 디코딩 과정의 흐름을 결정한다.
신택스 요소의 값에 대한 요청이 신택스 요소 pcm_flag에 대해 처리되고 pcm_flag의 디코딩된 값이 1과 같은 경우, 디코딩 엔진은 9.3.2.6항에 명시된 바와 같이 임의의 pcm_alignment_zero_bit 및 모든 pcm_sample_luma 및 pcm_sample_chroma 데이터의 디코딩 후에 초기화된다.
문맥 변수들에 대한 저장 절차는 아래와 같이 적용된다.
-7.3.8.2항의 CTU 신택스 파싱을 종결하고, entropy_coding_sync_enabled_flag가 1과 같고, CtbAddrInRs % PicWidthInCtbsY가 1과 같거나 CtbAddrInRs가 1보다 크면서 동시에 TileId[ CtbAddrInTs ]가 TileId[ CtbAddrRsToTs[ CtbAddrInRs 2 ] ]와 같지 않은 경우, 9.3.2.4항에 명시된 문맥 변수들, 라이스 파라미터 초기화 상태들 및 팔레트 예측자 변수들에 대한 저장 과정은, persistent_rice_adaptation_enabled_flag가 1과 같으면 TableStateIdxWpp, TableMpsValWpp 및 TableStatCoeffWpp를 출력으로 하고, palette_mode_enabled_flag가 1과 같으면 PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp를 출력으로 하여 호출된다.
- 7.3.8.1항의 일반 슬라이스 세그먼트 데이터 신택스의 파싱을 종결하고, dependent_slice_segments_enabled_flag가 1과 같고 end_of_slice_segment_flag가 1과 같은 경우, 9.3.2.4항에 명시된 문맥 변수들, 라이스 파라미터 초기화 상태들 및 팔레트 예측자 변수들에 대한 저장 과정은, persistent_rice_adaptation_enabled_flag가 1과 같으면 TableStateIdxDs, TableMpsValDs 및 TableStatCoeffDs를 출력으로 하고, palette_mode_enabled_flag가 1과 같으면 PredictorPaletteSizeDs 및 PredictorPaletteEntriesDs를 출력으로 하여 호출된다.
5.2. 실시예 #2
9.3 슬라이스 데이터에 대한 CABAC 파싱 과정
9.3.1 일반사항
이 과정의 입력들은 신택스 요소의 값에 대한 요청 및 이전에 파싱된 신택스 요소들의 값들이다.
이 과정의 출력은 상기 신택스 요소의 값이다.
9.3.2항에 명시된 것과 같은 초기화 과정은 7.3.8.2항에 명시된 CTU 신택스의 파싱을 개시하고 다음 조건 중 하나 또는 그 이상이 참일 때 호출된다.
- CTU가 브릭 안에서 첫 번째 CTU이다.
- entropy_coding_sync_enabled_flag의 값이 1과 같고, CTU가 브릭의 CTU 행에서 첫 번째 CTU이다.
신택스 요소들의 파싱은 다음과 같이 진행된다.
신택스 요소의 각각의 요청된 값에 대해, 이진화는 하위 조항 9.3.3에 명시된 바와 같이 유도된다.
신택스 요소 및 파싱된 빈들의 시퀀스에 대한 이진화는 하위 조항 9.3.4에 기술된 디코딩 과정의 흐름을 결정한다.
문맥 변수들에 대한 저장 절차는 아래와 같이 적용된다.
- 7.3.8.2항의 CTU 신택스 파싱을 종결하고, entropy_coding_sync_enabled_flag가 1과 같고, CtbAddrInRs % PicWidthInCtbsY가 0 같거나 BrickId[ CtbAddrInBs ]가 BrickId[ CtbAddrRsToBs[ CtbAddrInRs - 1 ] ]와 같지 않은 경우, 9.3.2.3항에 명시된 문맥 변수들에 대한 저장 과정은 TableStateIdx0Wpp, TableStateIdx1Wpp 및 TableMpsValWpp, 그리고 palette_mode_enabled_flag가 1과 같을 때 PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp 를 출력들로 호출된다.
9.3.2 초기화 과정
9.3.2.1 일반사항
- 이 과정의 출력들은 초기화된 CABAC 내부 변수들이다.
- 산술적 디코딩 엔진의 문맥 변수들은 다음과 같이 초기화된다.
- 만약 CTU가 브릭에서 첫 번째 CTU이면, 문맥 변수들에 대한 초기화 과정은 9.3.2.2항에 명시된 것과 같이 호출되며, 변수 PredictorPaletteSize[0/1/2]는 0로 초기화된다.
- 그렇지 않고, 만약 entropy_coding_sync_enabled_flag가 1과 같고 CtbAddrInRs % PicWidthInCtbsY가 0과 같거나 또는 BrickId[CtbAddrInBs]가 BrickId[CtbAddrRsToBs[CtbAddrInRs-1]]와 같지 않다면, 다음이 적용된다.
- 공간적인 이웃 블록 T (도 9-2)의 좌측 상단 휘도 샘플의 위치(xNbT, yNbT)는 아래와 같이 현재 CTB의 좌측 상단 휘도 샘플의 위치 ( x0, y0 )를 사용하여 유도된다.
- (xNbT, yNbT) = (x0, y0 - CtbSizeY) (9-3)
- 6.4.4항에 명시된 것과 같은 이웃 블록 가능성에 대한 유도 과정은 (x0, y0)와 같은 것으로 설정된 위치(xCurr, yCurr), (xNbT, yNbT)와 같은 것으로 설정된 이웃 위치(xNbY, yNbY), FALSE로 설정된 checkPredModeY, 그리고 0과 같은 것으로 설정된 cIdx를 입력들로 하여 호출되며, 출력은 availableFlagT로 할당된다.
- 문맥 변수들에 대한 동기화 과정은 아래와 같이 호출된다.
- 만약 availableFlagT가 1과 같으면, 9.3.2.4항에 명시된 것과 같은 문맥 변수들에 대한 동기화 과정은 TableStateIdx0Wpp, TableStateIdx1Wpp 및 TableMpsValWpp를 입력들로 하여 호출되고, 변수PredictorPaletteSize는 0으로 초기화된다.
- 그렇지 않은 경우, 문맥 변수들에 대한 초기화 과정은 9.3.2.2항에 명시된 것과 같이 호출되며, 변수PredictorPaletteSize는 0으로 초기화된다.
- 그렇지 않은 경우, 문맥 변수들에 대한 초기화 과정은 9.3.2.2항에 명시된 것과 같이 호출되며, 변수PredictorPaletteSize는 0으로 초기화된다.
- 둘 다 16 비트 레지스터 정밀도를 가지는 디코딩 엔진 레지스터들인 ivlCurrRange 및 ivlOffset은 하위조항 9.3.2.5에서 명시된 것과 같은 산술적 디코딩 엔진을 위한 초기화 과정을 호출함으로써 초기화된다.
9.3.2.3 문맥 변수들에 대한 저장 과정
이 과정의 입력들은 다음과 같다.
- ctxTable 및 ctxIdx에 의해 색인을 단 CABAC 문맥 변수들
이 과정의 출력들은 다음과 같다.
- end_of_brick_one_bit 및 end_of_subset_one_bit를 제외한, 7.3.8.1항부터 7.3.8.11항까지에서 모든 신택스 요소들에 할당된 문맥 변수들의 초기화 과정에 사용되는 변수 pStateIdx0, pStateIdx1 및 valMps의 값들을 포함하는 변수 tableStateSync0, tableStateSync1 및 tableMPSSync.
palette_mode_enabled_flag가 1과 같은 경우 PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp
각각의 문맥 변수에 대해, 표 tableStateSync0, tableStateSync1 및 tableMPSSync의 해당 엔트리들 pStateIdx0, pStateIdx1 및 valMps은 상응하는 pStateIdx0, pStateIdx1 및 valMps로 초기화된다.
PredictorPaletteSizeWpp는 0으로 설정되고, PredictorPaletteEntriesWpp는 empty로 설정된다.
또는 다음이 적용될 수 있다.
PredictorPaletteSizeWpp 및 PredictorPaletteEntriesWpp는 예측자 팔레트의 해당 PredictorPaletteSize 및 엔트리들로 각각 설정된다.
5.3. 실시예 #3
slice_data( ) { 기술어
for( i = 0; i < NumBricksInCurrSlice; i++ ) {
CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]
for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {
if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {
NumHmvpCand = 0
NumHmvpIbcCand = 0
PredictorPaletteSize[0] = 0
PredictorPaletteSize[1] = 0
PredictorPaletteSize[2] = 0
ResetIbcBuf = 1
}
CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]
coding_tree_unit( )
if( entropy_coding_sync_enabled_flag &&
( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] - 1 ) &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */ ae(v)
byte_alignment( )
}
}
end_of_brick_one_bit /* equal to 1 */ ae(v)
if( i < NumBricksInCurrSlice - 1 )
byte_alignment( )
}
}
또는 위의 표에서 PredictorPaletteSize 는 고정된 값과 같은 다른 정수 값으로 설정되거나 예측자 팔레트 크기로 설정될 수 있다.
6. 개시된 기술의 예시적 구현들
도 9는 비디오 처리 장치(900)의 블록도이다. 장치(900)은 여기에 기재된 방법들 중 하나 또는 그 이상을 구현하는데 사용될 수 있다. 장치(900)은 스마트폰, 태블릿, 컴퓨터, 사물인터넷(IoT: Internet of Things) 수신기 등에서 구현될 수 있다. 장치(900)은 하나 이상의 프로세서(902), 하나 이상의 메모리(904) 및 비디오 처리 하드웨어(906)를 포함할 수 있다. 프로세서(들)(902)는 본 문서에 기재된 하나 또는 그 이상의 방법들을 구현하도록 구성될 수 있다. 메모리(메모리들)(904)는 여기에 기재된 방법들 및 기술들을 구현하는데 사용되는 데이터 및 코드를 저장하는데 사용될 수 있다. 비디오 처리 하드웨어(906)는 하드웨어 회로에서 본 문서에 기술된 일부 기술들을 구현하는데 사용될 수 있으며, 일부 실시예에서, 프로세서(902) (예를 들어, 그래픽 프로세서 코어(GPU) 또는 기타 신호 처리 회로)에 부분적으로 또는 완전히 내장될 수 있다.
본 문서에서, 용어 "비디오 처리"는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제를 가리킬 수 있다. 예를 들어, 비디오 압축 알고리즘들은 비디오의 화소 표현으로부터 상응하는 비트스트림 표현으로 변환하거나 그 반대의 경우에 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스의 의해 정의되는 대로, 비트스트림 내에서 같은 위치에 있거나(co-located) 상이한 곳에 분산되어 있는 비트들에 해당할 수 있다. 예를 들어, 매크로블록은 변환되고 코딩된 오류 잔차 값들로 그리고 헤더들 및 비트스트림의 다른 필드들의 비트들을 사용하여 인코딩될 수 있다.
상기 개시된 방법들 및 기술들은 본 문서에 개시된 기술들의 사용을 가능하게 함으로써 스마트폰, 노트북 컴퓨터, 데스크탑 컴퓨터 및 기타 유사한 장치들과 같은 비디오 처리 장치들 내부에 포함된 비디오 인코더 및/또는 디코더 실시예들에 유용하다는 것이 이해될 것이다.
도 10은 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(1000)을 나타내는 블록도이다. 다양한 구현예들은 시스템(1000)의 구성요소들을 일부 또는 전부를 포함할 수 있다. 시스템(1000)은 비디오 컨텐츠를 수신하는 입력(1002)을 포함할 수 있다. 상기 비디오 컨텐츠는 로우(raw) 또는 압축되지 않은 포맷, 예를 들어 8 또는 10비트 멀티 컴포넌트 화소 값들로 수신되거나 압축 또는 인코딩된 포맷일 수 있다. 입력(1002)은 네트워크 인터페이스, 주변 버스 인터페이스 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들로는 이더넷, PON(passive optical network) 등의 유선 인터페이스 및 Wi-Fi 또는 셀룰러 인터페이스 등의 무선 인터페이스를 포함한다.
시스템(1000)은 본 문서에 기술된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 구성요소(1004)를 포함할 수 있다. 코딩 구성요소(1004)는 입력(1002)으로부터의 비디오의 평균 비트레이트를 코딩 구성요소(1004)의 출력으로 감소시켜 상기 비디오의 코딩된 표현을 생성할 수 있다. 그러므로, 코딩 기술은 종종 비디오 압축 또는 비디오 트랜스코딩 기술이라 불리운다. 코딩 구성요소(1004)의 출력은 구성요소 (1006)으로 표현된 바와 같이 연결된 통신을 통해 전송되거나 저장될 수 있다. 입력(1002)에서 수신된 상기 비디오의 저장 또는 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(1010)로 전송된 디스플레이가능한 비디오 또는 화소 값들을 생성하기 위한 구성요소(1008)에 의해 사용될 수 있다. 상기 비트스트림 표현으로부터 사용자 시청가능 비디오를 생성하는 과정은 종종 비디오 압축해제라 불리운다. 더욱이, 어떤 비디오 처리 동작들은 "코딩” 동작 또는 툴로 지칭되지만, 코딩 툴 또는 동작들은 인코더에서 사용되고, 코딩의 결과를 반전시키는 해당 디코딩 툴 또는 동작들은 디코더에 의해 수행될 것이 이해될 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 범용 직렬 버스(universal serial bus(USB)) 또는 고해상도 멀티미디어 인터페이스 (high definition multimedia interface (HDMI)) 또는 디스플레이포트 등을 포함할 수 있다. 스토리지 인터페이스의 예들은 SATA(직렬 고급 기술 연결), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 개시되는 기술들은 이동 전화, 노트북, 스마트폰, 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 실행할 수 있는 기타 디바이스들과 같은 다양한 전자 디바이스들에서 구현될 수 있다.
도 11은 비디오 처리의 예시적인 방법(1100)을 위한 순서도이다. 방법(1100)은, 동작(1110)에서, 비디오 유닛에서의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간에 팔레트 모드를 이용하여 변환을 실시하는 단계를 포함하며, 이때, 상기 변환 동안 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하기 위해 사용되고, 또한 상기 예측자 팔레트는 상기 비디오 블록 및 상기 비디오 블록의 비트스트림 표현 간의 상기 변환에 앞서 선택적으로 재설정된다.
일부 실시예들은 아래의 조항 기반 포맷을 사용하여 기술될 수 있다.
1. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 상기 변환 동안, 예측자 팔레트는 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되고, 또한 상기 예측자 팔레트는 상기 비디오 블록과 상기 비디오 블록의 비트스트림 표현 간의 변환에 앞서 선택적으로 재설정되는, 비디오 처리 방법.
2. 제1항에 있어서, 상기 비디오 유닛은 하나 또는 그 이상의 코딩 트리 유닛들, 하나 또는 그 이상의 코딩 트리 블록들, 코딩 트리 유닛 또는 코딩 트리 블록의 서브 영역, 또는 코딩 트리 유닛의 코딩 트리 블록 행/타일/브릭/서브 픽처/뷰 가운데 하나를 포함하는, 비디오 처리 방법.
3. 제1항 내지 제2항 중 어느 항에 있어서, 지연 파면 병렬 처리가 상기 변환 동안 비활성화되는, 비디오 처리 방법.
4. 제3항에 있어서, entropy_coding_sync_enabled_flag가 0과 같은 것으로 설정되는, 비디오 처리 방법.
5. 제1항에 있어서, 상기 비디오 유닛은 색차 코딩 트리 유닛의 행(row)인, 비디오 처리 방법.
6. 제5항에 있어서, 상기 예측자 팔레트는 새로운 색차 CTU 행 내의 첫 번째 색차 코딩 트리 블록 (coding tree block (CTB))을 디코딩한 후에 재설정되는, 비디오 처리 방법.
7. 제5항에 있어서, 듀얼 코딩 트리가 적용되고 상기 듀얼 코딩 트리의 현재 파티션이 상기 색차 코딩 트리 유닛인 경우, 상기 예측자 팔레트가 재설정되는, 비디오 처리 방법.
8. 제1항에 있어서, 상기 예측자 팔레트의 크기가 제로로 재설정되는, 비디오 처리 방법.
9. 제1항에 있어서, 상기 예측자 팔레트의 크기가 시퀀스 팔레트 예측자 이니셜라이저 내의 엔트리들의 수 또는 허용가능한 엔트리들의 최대 수로 재설정되는, 비디오 처리 방법.
10. 제9항에 있어서, 상기 시퀀스 팔레트 예측자 이니셜라이저는 상기 비디오 유닛에의 적용 이전에 상기 팔레트 예측자를 초기화하는 데에 사용되는, 비디오 처리 방법.
11. 제1항에 있어서, entropy_coding_sync_enabled_flag가 1과 같은 것으로 설정되면, 이전 비디오 블록에 적용된 상기 팔레트 예측자가 상기 비디오 유닛에의 적용 이전에 재초기화되는, 비디오 처리 방법.
12. 제1항에 있어서, 상기 비디오 유닛과 연관된 코딩된 정보에 기반하여 상기 예측자 팔레트의 업데이트가 비활성화되는, 비디오 처리 방법.
13. 제12항에 있어서, 상기 코딩된 정보는 상기 비디오 유닛의 치수(dimension)를 포함하는, 비디오 처리 방법.
14. 제13항에 있어서, 하나 또는 그 이상의 임계 조건들을 달성하는 상기 비디오 유닛의 상기 치수에 기반하여 상기 예측자 팔레트의 업데이트가 비활성화되는, 비디오 처리 방법.
15. 제14항에 있어서, 상기 하나 또는 그 이상의 임계 조건들은 미리 정의되는, 비디오 처리 방법.
16. 제14항에 있어서, 상기 하나 또는 그 이상의 임계 조건들은 상기 비디오 유닛의 상기 코딩된 표현에서 명시적으로 또는 묵시적으로 시그널링되는, 비디오 처리 방법.
17. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 예측자 팔레트가 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 상기 비디오 유닛의 복수의 코딩 유닛들이 공통적으로 공유된 영역을 가질 때, 상기 예측자 팔레트는 공유된 예측자 팔레트인, 비디오 처리 방법.
18. 제17항에 있어서, 상기 공유된 영역은 TT 분할, BT 분할 그리고 QT 분할 중 어느 것과 연관되는, 비디오 처리 방법.
19. 제17항에 있어서, 상기 공유된 예측자 팔레트는 상기 복수의 코딩 유닛들에의 적용 이전에 구성되는, 비디오 처리 방법.
20. 제17항에 있어서, 상기 공유된 예측자 팔레트의 사용의 지시들이 상기 공유된 영역의 첫 번째 팔레트 코딩된 유닛과 관련되어 상기 코딩된 표현에서 명시적으로 또는 묵시적으로 시그널링되는, 비디오 처리 방법.
21. 제17항에 있어서,
상기 복수의 코딩된 유닛들의 코딩된 유닛에의 적용 후에 상기 공유된 예측자 팔레트의 업데이트를 생략하는 단계를 더 포함하는, 비디오 처리 방법.
22. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 예측자 팔레트가 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 예측자 팔레트의 크기가 하나 또는 그 이상의 조건들에 따라 적응적으로 변경되는, 비디오 처리 방법.
23. 제22항에 있어서, 상기 하나 또는 그 이상의 조건들은 적어도 상기 이전 팔레트 정보의 크기, 상기 비디오 유닛의 치수들, 상기 비디오 유닛의 콘텐츠, 상기 비디오 유닛의 컬러 포맷, 상기 비디오 유닛의 컬러 성분, 상기 비디오 블록의 코딩 트리 구조, 상기 코딩된 표현 내의 상기 비디오 블록의 상대적인 위치, 상기 비디오 블록의 시간적 계층 ID, 상기 비디오 블록의 슬라이스/타일 그룹 타입 및/또는 픽처 타입, 또는 상기 비디오 블록의 프로파일/레벨/단과 연관되는, 비디오 처리 방법.
24. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 예측자 팔레트가 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 상기 예측자 팔레트는 상기 예측자 팔레트 내의 엔트리들의 크기 또는 수에 기반하여 업데이트되는, 비디오 처리 방법.
25. 제24항에 있어서, 상기 예측자 팔레트의 상기 크기는 이전 비디오 블록으로부터 상기 현재 비디오 블록으로 업데이트되는, 비디오 처리 방법.
26. 제24항에 있어서, 상기 예측자 팔레트의 상기 크기는 상기 코딩된 표현에서 명시적으로 또는 묵시적으로 시그널링 되는, 비디오 처리 방법.
27. 제24항에 있어서, 상기 예측자 팔레트의 상기 크기는 상기 비디오 블록의 치수들, 상기 비디오 블록의 양자화 파라미터들, 또는 상기 비디오 블록의 하나 또는 그 이상의 컬러 성분들 가운데 하나 또는 그 이상에 의존하는, 비디오 처리 방법.
28. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 예측자 팔레트가 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 상기 예측자 팔레트의 엔트리들이 재배열되거나 변경되는, 비디오 처리 방법.
29. 제28항에 있어서, 상기 예측자 팔레트의 상기 엔트리들은 entropy_coding_sync_enabled_flag가 1과 같을 때 재배열되거나 변경되는, 비디오 처리 방법.
30. 제28항에 있어서, 상기 예측자 팔레트의 상기 엔트리들은 상기 코딩 트리 유닛 신택스의 끝을 마주치게 될 때 재배열되거나 변경되는, 비디오 처리 방법.
31. 제28항에 있어서, 현재 CTB가 새로운 CTU 행에서 첫 번째 것이거나 현재 CTB가 이전 CTB와 동일한 브릭에 있지 않는 경우, 상기 예측자 팔레트의 상기 엔트리들이 재배열되거나 변경되는, 비디오 처리 방법.
32. 비디오 처리 방법으로서,
비디오 유닛 내의 비디오 블록과 상기 비디오 블록의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함하고, 상기 변환 동안, 예측자 팔레트가 상기 비디오 블록의 현재 팔레트 정보를 예측하는 데에 사용되며, 또한 상기 예측자 팔레트가 사용되는 횟수를 기록하는 카운터를 유지함으로써 상기 예측자 팔레트의 사용이 지시되는, 비디오 처리 방법.
33. 위에 언급된 항들 중 어느 항에 있어서, 상기 예측자 팔레트의 활성화 또는 비활성화가 상기 이전 팔레트 정보의 크기, 상기 비디오 블록의 치수들, 상기 비디오 블록의 콘텐츠, 상기 비디오 블록의 컬러 포맷, 상기 비디오 블록의 컬러 성분, 상기 비디오 블록의 코딩 트리 구조, 상기 코딩된 표현 내의 상기 비디오 블록의 상대적인 위치, 상기 비디오 블록의 시간적 계층 ID, 상기 비디오 블록의 슬라이스/타일 그룹 타입 및/또는 픽처 타입, 또는 상기 비디오 블록의 프로파일/레벨/단 가운데 적어도 하나와 연관되는, 비디오 처리 방법.
34. 위에 언급된 항들 중 어느 항에 있어서, 하나 이상의 예측자 팔레트가 상기 변환 동안 사용되는, 비디오 처리 방법.
35. 비디오 처리 장치로서, 제1항 내지 제34항 중 하나 또는 그 이상에서의 방법을 구현하기 위해 구성된 프로세서를 포함하는, 비디오 처리 장치.
36. 비디오 인코딩 장치로서, 제1항 내지 제34항 중 하나 또는 그 이상에서의 방법을 구현하기 위해 구성된 프로세서를 포함하는, 비디오 인코딩 장치.
37. 저장된 컴퓨터 코드를 가지는 컴퓨터 프로그램 제품으로, 상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서가 제1항 내지 제34항 중 어느 한 항의 방법을 실행하도록 하는 컴퓨터 프로그램 제품.
38. 분 문서에 설명된 방법, 장치 또는 시스템.
도 12는 본 기술에 따른 비디오 처리 방법(1200)의 순서도 표현이다. 방법(1200)은, 동작(1210)에서, 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되며, 상기 현재 블록의 상기 변환 후에 상기 예측자 팔레트의 업데이트가 상기 현재 블록의 특성에 기반한 규칙에 따라 비활성화된다.
일부 실시예들에서, 상기 현재 블록의 상기 특성은 상기 현재 블록과 연관된 코딩된 정보를 포함한다. 일부 실시예들에서, 상기 현재 블록의 상기 특성은 상기 현재 블록의 치수를 포함한다. 일시 실시예들에서, 상기 규칙은, 상기 현재 블록의 폭이 제1 임계값 보다 적거나 같고 상기 현재 블록의 높이가 제2 임계값 보다 적거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시한다. 일부 실시예들에서, 상기 규칙은, 상기 현재 블록의 높이가 제1 임계값 보다 적거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시한다. 일부 실시예들에서, 상기 규칙은, 상기 현재 블록의 폭이 제1 임계값 보다 크거나 같고 상기 현재 블록의 높이가 제2 임계값 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시한다. 일부 실시예들에서, 상기 규칙은, 상기 현재 블록의 높이가 제1 임계값 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시한다.
일부 실시예들에서, 상기 제1 임계값 또는 상기 제2 임계값은 상기 코딩된 표현에서 미리 정의되거나 시그널링된다. 일부 실시예들에서, 상기 제1 임계값은 4, 16 또는 1024이다. 일부 실시예들에서, 상기 제2 임계값은 4, 16 또는 1024이다. 일부 실시예들에서, 상기 제1 임계값 또는 상기 제2 임계값은 상기 현재 블록의 컬러 성분에 기반한다.
도 13은 본 기술에 따른 비디오 처리 방법(1300)의 순서도 표현이다. 방법(1300)은, 동작(1310)에서, 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되며, 상기 예측자 팔레트에 대한 변경이 실시될지 여부는 상기 현재 블록의 컬러 성분에 따라 결정된다.
일부 실시예들에서, 상기 예측자 팔레트에 대한 상기 변경은 상기 예측자 팔레트의 업데이트, 초기화 또는 재설정을 포함한다. 일부 실시예들에서, 상기 컬러 성분은 휘도 또는 색차 성분을 포함한다. 일부 실시예들에서, 상기 예측자 팔레트는 상기 현재 블록의 상기 컬러 성분에 해당하는 정보를 포함한다. 일부 실시예들에서, 상기 예측자 팔레트는 상기 현재 블록의 모든 컬러 성분들에 해당하는 정보를 포함한다. 일부 실시예들에서, 상기 예측자 팔레트는 상기 현재 블록의 2개의 색차 성분들에 해당하는 정보를 포함한다.
도 14는 본 기술에 따른 비디오 처리 방법(1400)의 순서도 표현이다. 방법(1400)은, 동작(1410)에서, 비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 복수의 예측자 팔레트들이 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용된다.
일부 실시예들에서, 상기 현재 블록의 예측자 팔레트는 적어도 글로벌 팔레트 및 로컬 팔레트에 따라 업데이트된다. 일부 실시예들에서, 상기 복수의 예측자 팔레트들은 상기 팔레트 모드를 사용하여 코딩된, 상기 비디오 유닛 내의 K개의 블록들과 연관된다. 일부 실시예들에서, 상이한 컬러 성분들에 대한 팔레트들은 상기 복수의 예측자 팔레트들의 상이한 예측자 팔레트들에 따라 결정된다. 일부 실시예들에서, 상기 복수의 예측자 팔레트들은 상기 비디오 유닛 내의 첫 번째 블록의 변환 이전에 또는 앞서 변환된 비디오 유닛 내의 마지막 블록의 변환 이후에 재설정되거나 재초기화된다. 일부 실시예들에서, 상기 복수의 예측자 팔레트들의 예측자 팔레트의 인덱스는 상기 코딩된 표현에서 코딩 유닛, 예측 유닛, 코딩 트리 유닛, 코딩 트리 블록, 코딩 트리 유닛의 하위 영역, 또는 코딩 트리 블록의 하위 영역에서 시그널링된다.
도 15는 본 기술에 따른 비디오 처리 방법(1500)의 순서도 표현이다. 방법(1500)은, 동작(1510)에서, 비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용된다. 상기 예측자 팔레트는 규칙에 따라 상기 비디오 유닛 내의 첫 번째 블록의 변환 이전에 또는 이전 비디오 유닛 내의 마지막 블록의 변환 이후에 재설정되거나 재초기화된다.
일부 실시예들에서, 상기 비디오 유닛은 코딩 트리 유닛의 하위 영역, 가상 파이프라인 데이터 유닛, 하나 또는 그 이상의 코딩 트리 유닛들, 코딩 트리 블록, 하나 또는 그 이상의 코딩 유닛들, 코딩 트리 유닛 행, 타일, 브릭, 서브 픽처, 또는 상기 비디오의 뷰를 포함한다. 일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트의 재설정 또는 재초기화가 복수의 비디오 유닛들의 파면 병렬 처리가 활성화되는지 여부와 상관없이 상기 비디오 유닛에 적용 가능함을 명시한다. 일부 실시예들에서, 상기 비디오 유닛은 색차 성분에 해당하는 코딩 트리 유닛 행을 포함한다. 일부 실시예들에서, 상기 첫 번째 블록은 상기 코딩 트리 유닛 행 내의 상기 색차 성분에 해당하는 첫 번째 코딩 트리 블록을 포함한다. 일부 실시예들에서, 상기 규칙은, 듀얼 트리 파티션이 적용되고 현재 파티션 트리가 상기 색차 성분에 해당하는 코딩 트리인 경우, 상기 예측자 팔레트의 재설정 또는 재초기화가 상기 비디오 유닛에 적용 가능함을 명시한다. 일부 실시예들에서, 상기 예측자 팔레트의 크기는 0으로 재설정 또는 재초기화된다. 일부 실시예들에서, 상기 예측자 팔레트의 크기는 시퀀스 팔레트 예측자 이니셜라이저 내의 엔트리들의 수 또는 상기 코딩된 표현에서 시그널링된 예측자 팔레트에서 허용된 엔트리들의 최대 수로 재설정 또는 재초기화된다.
일부 실시예들에서, 상기 예측자 팔레트는 새로운 비디오 유닛을 변환하기 전에 더 재설정 또는 재초기화될 수 있다. 일부 실시예들에서, 복수의 비디오 유닛들의 파면 병렬 처리가 활성화되는 경우, 현재 코딩 트리 블록 또는 현재 코딩 트리 유닛의 변환을 위해 사용되는 상기 예측자 팔레트는 변환된 코딩 트리 블록 또는 코딩 트리 유닛에 기반하여 결정된다.
도 16은 본 기술에 따른 비디오 처리 방법(1600)의 순서도 표현이다. 방법(1600)은, 동작(1610)에서, 비디오의 비디오 유닛과 상기 비디오의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 실시하는 단계를 포함한다. 상기 비디오 유닛은 복수의 블록들을 포함한다. 상기 변환 동안, 상기 복수의 블록들 각각에 대해 대표적인 샘플값들의 팔레트를 상기 팔레트 모드에서 예측하기 위해, 공유된 예측자 팔레트가 상기 복수의 블록들 모두에 의해 사용된다.
일부 실시예들에서, 삼진 트리 분할이 상기 비디오 유닛에 적용되며, 이때 상기 공유된 예측자 팔레트는 16x4 또는 4x16의 치수를 가지는 비디오 유닛에 대해 사용된다. 일부 실시예들에서, 이진 트리 분할이 상기 비디오 유닛에 적용되며, 상기 공유된 예측자 팔레트는 8x4 또는 4x8의 치수를 가지는 비디오 유닛에 대해 사용된다. 일부 실시예들에서, 쿼드 트리 분할이 상기 비디오 유닛에 적용되며, 상기 공유된 예측자 팔레트는 8x8의 치수를 가지는 비디오 유닛에 대해 사용된다. 일부 실시예들에서, 상기 공유된 예측자 팔레트는 상기 비디오 유닛 내부의 상기 복수의 블록들 모두의 변환들에 앞서 구성된 것이다.
일부 실시예들에서, 상기 공유된 예측자 팔레트에서 예측된 엔트리의 지시는 상기 영역에서 상기 복수의 블록들의 첫 번째 코딩된 블록과 함께 상기 코딩된 표현에서 시그널링된다. 일부 실시예들에서, 상기 공유된 예측자 팔레트에서 예측된 엔트리의 지시는 상기 영역에서 상기 복수의 블록들의 나머지에 대해 상기 코딩된 표현에서 생략된다. 일부 실시예들에서, 상기 공유된 예측자 팔레트의 업데이트는 상기 영역에서 상기 복수의 블록들 중 하나의 변환 이후에 건너뛴다.
도 17은 본 기술에 따른 비디오 처리 방법(1700)의 순서도 표현이다. 방법(1700)은, 동작(1710)에서, 비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되며, 상기 예측자 팔레트의 각 엔트리에 대해 카운터가 유지되어 해당 엔트리가 얼마나 빈번하게 사용되는지를 지시한다.
일부 실시예들에서, 상기 카운터는 상기 예측자 팔레트에 추가될 새로운 엔트리에 대해 K로 설정되며, K는 정수이다. 일부 실시예들에서, K = 0이다. 일부 실시예들에서, 상기 현재 블록의 변환 동안 해당 엔트리가 재사용될 때 마다 상기 카운터는 N씩 증가되며, N은 양의 정수이다. 일부 실시예들에서, N = 1이다.
일부 실시예들에서, 상기 예측자 팔레트의 엔트리들은 상기 예측자 팔레트가 상기 변환을 위해 사용되기 전에 규칙에 따라 재배열될 수 있다. 일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트의 상기 엔트리들이 현재 샘플의 코딩된 정보에 따라 재배열됨을 명시한다. 일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트의 상기 엔트리들이 상기 예측자 팔레트 내의 상기 엔트리들의 각각의 해당 엔트리에 대한 상기 카운터에 따라 재배열됨을 명시한다.
일부 실시예들에서, 제2 카운터가 샘플의 발생 빈도를 지시하기 위해 사용된다. 일부 실시예들에서, 더 높은 발생 빈도를 가지는 제1 샘플은 상기 예측자 팔레트에서 더 낮은 발생 빈도를 가지는 제2 샘플 앞에 위치한다. 일부 실시예들에서, 상기 예측자 팔레트는 규칙에 따라 상기 현재 블록 내의 이스케이프된(escaped) 샘플들을 사용하여 업데이트된다. 일부 실시예들에서, 상기 규칙은 조건이 충족되는 경우 상기 예측자 팔레트가 상기 이스케이프된 샘플들을 사용하여 업데이트됨을 규정한다. 일부 실시예들에서, 상기 현재 블록의 현재 블록을 삽입한 후에 상기 예측자 팔레트가 채워지지 않는 경우 상기 조건이 충족된다.
도 18은 본 기술에 따른 비디오 처리 방법(1800)의 순서도 표현이다. 방법(1800)은, 동작(1810)에서, 대표적인 샘플 값들의 팔레트가 현재 블록에 대한 대표적인 샘플 값들의 팔레트를 예측하기 위해서 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 실시하는 단계를 포함한다. 상기 코딩된 표현에서 시그널링되는 상기 팔레트의 엔트리들의 수는 0과 팔레트의 최대 허용 크기 - 상기 변환 동안 유도되는 팔레트 엔트리들의 수를 포함하는 닫힌 범위인, 범위 [0, 팔레트의 최대 허용 크기 - 상기 변환 동안 유도되는 팔레트 엔트리들의 수] 이내에 있다.
일부 실시예들에서, 상기 코딩된 표현에서 시그널링되는 상기 팔레트의 엔트리들의 수는 상기 범위에 기반하여 이진화된다. 일부 실시예들에서, 상기 코딩된 표현에서 시그널링되는 엔트리들의 수는 절삭된 이진화 코딩 과정을 사용하여 이진화된다. 일부 실시예들에서, 상기 코딩된 표현에서 시그널링되는 엔트리들의 수는 상기 현재 블록의 특성에 기반하여 이진화된다. 일부 실시예들에서, 상기 특성은 상기 현재 블록의 치수를 포함한다.
도 19는 본 기술에 따른 비디오 처리 방법(1900)의 순서도 표현이다. 방법(1900)은, 동작(1910)에서, 비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하기 위해 사용되며, 이때 상기 예측자 팔레트의 크기는 규칙에 따라 적응적으로 조정된다.
일부 실시예들에서, 듀얼 트리 파티션에서의 상기 예측자 팔레트의 상기 크기는 싱글 트리 파티션에서의 것과 상이하다. 일부 실시예들에서, 상기 비디오 유닛은 블록, 코딩 유닛, 코딩 트리 유닛, 타일, 브릭, 또는 서브 픽처를 포함한다. 일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트가 상기 비디오 유닛에 대해서는 제1 크기를 가지고 그 다음 비디오 유닛의 변환에 대해서는 상이한 제2 크기를 가진다고 명시한다. 일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트의 상기 크기가 상기 변환을 위한 현재 팔레트의 크기에 따라 조정된다고 명시한다. 일부 실시예들에서, 상기 예측자 팔레트의 상기 크기는 상기 현재 블록의 상기 변환 후에 결정되는 상기 현재 팔레트의 크기와 같다고 명시한다. 일부 실시예들에서, 상기 예측자 팔레트의 상기 크기는 상기 현재 블록의 상기 변환 후에 결정되는 상기 현재 팔레트의 크기에 오프셋을 더하거나 뺀 것과 같으며, 이때 상기 오프셋은 정수이다. 일부 실시예들에서, 상기 오프셋은 상기 코딩된 표현에서 시그널링된다. 일부 실시예들에서, 상기 오프셋은 상기 변환 동안 유도된다.
일부 실시예들에서, 상기 규칙은 상기 현재 블록에 대해 상기 예측자 팔레트의 미리 정의된 크기를 S로 명시하며, 또한 상기 규칙은 상기 예측자 팔레트의 상기 크기가 상기 현재 블록의 크기에 따라 조정된다고 명시한다. 일부 실시예들에서, 상기 현재 블록의 상기 크기가 T보다 작거나 같은 경우, 상기 예측자 팔레트의 상기 크기는 상기 미리 정의된 크기 S 보다 작도록 조정되며, T와 S는 정수이다.
일부 실시예들에서, 상기 예측자 팔레트에서 처음 K개 엔트리들은 상기 변환을 위해 사용되며, K는 정수이고, K는 S 보다 적거나 같다(K <= S). 일부 실시예들에서, 상기 미리 정의된 크기 S 보다 작은 크기를 가지는 서브 샘플링된 예측자 팔레트는 상기 변환을 위해 사용된다. 일부 실시예들에서, 상기 현재 블록의 상기 크기가 T 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 크기는 상기 미리 정의된 크기 S가 되도록 조정된다.
일부 실시예들에서, K 또는 T는 상기 비디오의 특성에 기반하여 결정된다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 콘텐트를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 디코더 파라미터 세트, 슬라이스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 적응 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 최대 코딩 유닛(largest coding unit (LCU)), 코딩 유닛, LCU 행, LCU들의 그룹, 변환 유닛, 픽처 유닛, 또는 비디오 코딩 유닛에서 시그널링된 정보를 상기 코딩된 표현 내에서 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오 내의 코딩 유닛, 픽처 유닛, 변환 유닛, 블록 또는 비디오 코딩 유닛의 위치를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 컬러 포맷의 지시를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오에 적용가능한 코딩 트리 구조를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 슬라이스 타입, 타일 그룹 타입, 또는 픽처 타입을 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 컬러 성분을 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 시간적 계층 식별자를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 비디오 표준의 프로파일, 레벨 또는 단(tier)을 포함한다.
일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트의 상기 크기가 상기 예측자 팔레트 내의 각 엔트리의 하나 또는 그 이상의 카운터들에 따라 조정된다. 일부 실시예들에서, 임계값 T 보다 적은 카운터를 가지는 엔트리는 상기 변환 동안 폐기되며, T는 정수이다. 일부 실시예들에서, 가장 적은 카운터들을 가지는 엔트리들은 상기 예측자 팔레트의 상기 크기가 임계값 T 보다 적을 때까지 폐기되며, T는 정수이다.
일부 실시예들에서, 상기 규칙은 상기 예측자 팔레트가 상기 변환에 대해 사용되는 현재 팔레트에만 기반하여 업데이트된다고 명시한다. 일부 실시예들에서, 상기 예측자 팔레트는 상기 변환 후에 다음 블록을 위한 현재 팔레트가 되도록 업데이트 된다.
도 20은 본 기술에 따른 비디오 처리 방법(2000)의 순서도 표현이다. 방법(2000)은, 동작(2010)에서, 비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하기 위해 사용되며, 대표 샘플들의 상기 팔레트 또는 상기 예측자 팔레트의 크기는 상기 크기가 상기 비디오의 비디오 유닛들 사이에서 변동되도록 허용하는 규칙에 따라 결정된다.
일부 실시예들에서, 상기 비디오 유닛은 블록, 코딩 유닛, 코딩 트리 유닛, 타일, 브릭, 또는 서브 픽처를 포함한다. 일부 실시예들에서, 대표 샘플들의 상기 팔레트 또는 상기 예측자 팔레트의 상기 크기는 상기 현재 블록 또는 상기 현재 블록의 이웃 블록의 특성에 더 기반하여 결정된다. 일부 실시예들에서, 상기 특성은 상기 현재 블록 또는 상기 이웃 블록의 치수를 포함한다. 일부 실시예들에서, 상기 특성은 상기 현재 블록 또는 상기 이웃 블록의 양자화 파라미터를 적어도 포함한다. 일부 실시예들에서, 상기 특성은 상기 현재 블록 또는 상기 이웃 블록의 컬러 성분을 포함한다.
일부 실시예들에서, 대표 샘플들의 상기 팔레트 또는 상기 예측자 팔레트의 상이한 크기들은 상이한 컬러 성분들에 대해 사용된다. 일부 실시예들에서, 대표 샘플들의 상기 팔레트 또는 상기 예측자 팔레트의 휘도 성분 및 색차 성분들에 대한 크기들은 상기 코딩된 표현에서 지시된다. 일부 실시예들에서, 대표 샘플들의 상기 팔레트 또는 상기 예측자 팔레트의 각 컬러 성분에 대한 상기 크기는 상기 코딩된 표현에서 지시된다. 일부 실시예들에서, 상기 코딩된 표현에서의 상기 상이한 크기들의 시그널링은 상기 변환에 대한 듀얼 트리 파티션, 슬라이스 타입 또는 픽처 타입의 사용에 기반한다.
도 21은 본 기술에 따른 비디오 처리 방법(2100)의 순서도 표현이다. 방법(2100)은, 동작(2110)에서, 비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함한다. 상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하기 위해 사용된다. 상기 예측자 팔레트는 조건이 충족되면 재초기화되며, 이때 상기 비디오 유닛이 비디오 유닛 행의 첫 번째 비디오 유닛이고 구문 요소가 상기 코딩된 표현에 포함되어 파면 병렬 처리가 상기 비디오 유닛에 대해 활성화됨을 지시하는 경우, 상기 조건이 충족된다.
일부 실시예들에서, 상기 비디오 유닛은 코딩 트리 유닛 또는 코딩 트리 블록을 포함한다. 일부 실시예들에서, 상기 블록 및 이전 블록이 동일한 브릭에 있지 않는 경우, 상기 조건이 충족된다. 일부 실시예들에서, 상기 비디오 유닛의 상기 변환 후에, 적어도 하나의 신택스 요소가 유지되어 상기 예측자 팔레트의 크기 및/또는 상기 예측자 팔레트 내의 엔트리들의 수를 기록한다. 일부 실시예들에서, 상기 적어도 하나의 신택스 요소는 상기 현재 블록의 상기 변환을 위해 사용된다.
일부 실시예들에서, (1) 상기 현재 블록이 픽처의 첫 번째 열에 있거나 (2) 상기 현재 블록 및 이전 블록이 동일한 브릭에 있지 않는 경우, 상기 비디오의 문맥 변수들에 대한 저장 과정이 호출된다. 일부 실시예들에서, 상기 저장 과정의 출력들은 상기 예측자 팔레트의 크기 또는 상기 예측자 팔레트의 엔트리들의 수를 적어도 포함한다.
일부 실시예들에서, 상기 방법들 중 하나 또는 그 이상의 적용 가능성은 상기 비디오의 특성에 기반한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 콘텐트를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 디코더 파라미터 세트, 슬라이스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 적응 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 최대 코딩 유닛(largest coding unit (LCU)), 코딩 유닛, LCU 행, LCU들의 그룹, 변환 유닛, 픽처 유닛, 또는 비디오 코딩 유닛에서 시그널링된 정보를 상기 코딩된 표현 내에서 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오 내의 코딩 유닛, 픽처 유닛, 변환 유닛, 블록 또는 비디오 코딩 유닛의 위치를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 현재 블록 또는 상기 현재 블록의 이웃 블록의 특성을 포함한다. 일부 실시예들에서, 현재 블록 또는 상기 현재 블록의 이웃 블록들의 상기 특성은 상기 현재 블록의 치수 또는 상기 현재 블록의 상기 이웃 블록의 치수를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 컬러 성분의 지시를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오에 적용가능한 코딩 트리 구조를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 슬라이스 타입, 타일 그룹 타입 또는 픽처 타입을 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 컬러 성분을 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 상기 비디오의 시간적 계층 식별자를 포함한다. 일부 실시예들에서, 상기 비디오의 상기 특성은 비디오 표준의 프로파일, 레벨 또는 단을 포함한다.
일부 실시예들에서, 상기 변환은 상기 비디오를 상기 코딩된 표현으로 인코딩하는 단계를 포함한다. 일부 실시예들에서, 상기 변환은 상기 비디오의 화소 값들을 생성하기 위해 상기 코딩된 표현을 디코딩하는 단계를 포함한다.
개시된 기술의 일부 실시예들은 비디오 처리 툴 또는 모드를 활성화하는 것에 대한 결정 또는 판단하는 단계를 포함한다. 일 예에서, 상기 비디오 처리 툴 또는 모드가 활성화되면, 인코더는 비디오의 블록의 처리에서 상기 툴 또는 모드를 사용하거나 구현할 것이지만, 상기 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정할 필요는 없다. 즉, 상기 비디오의 블록으로부터 상기 비디오의 비트스트림 표현으로의 변환은 상기 결정 또는 판단에 기초하여 활성화될 때 상기 비디오 처리 툴 또는 모드를 사용할 것이다. 또 다른 예에서, 상기 비디오 처리 툴 또는 모드가 활성화되면, 디코더는 상기 비트스트림이 상기 비디오 처리 툴 또는 모드에 기초하여 수정되었다는 지식으로 상기 비트스트림을 처리할 것이다. 즉, 상기 비디오의 비트스트림 표현으로부터 상기 비디오의 블록으로의 변환은 상기 결정 또는 판단에 기초하여 활성화된 상기 비디오 처리 툴 또는 모드를 이용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 처리 툴 또는 모드를 비활성화하는 것에 대한 결정 또는 판단을 포함한다. 일 예에서, 상기 비디오 처리 툴 또는 모드가 비활성화되면, 인코더는 상기 비디오의 비트스트림 표현으로의 상기 비디오의 블록의 변환에 상기 툴 또는 모드를 사용하지 않을 것이다. 또 다른 예에서, 상기 비디오 처리 툴 또는 모드가 비활성화되면, 상기 결정 또는 판단에 기초하여 활성화된 상기 비디오 프로세싱 툴 또는 모드를 이용하여 상기 비트스트림이 수정되지 않았다는 지식으로 디코더가 상기 비트스트림을 처리할 것이다.
개시된 그리고 기타 솔루션들, 예들, 실시예들, 모듈들 및 본 문서에 기술된 기능적 동작들은 디지털 전자 회로, 본 문서에 개시된 구조들, 그것들의 구조적 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어 또는 이들 중의 하나 이상의 조합으로 구현될 수 있다. 개시된 그리고 기타 실시예들은 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 프로세싱 장치에 의한 실행 또는 그의 동작의 제어를 위해 컴퓨터 판독가능 매체 상에 인코딩되는 컴퓨터 프로그램 명령들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독가능 매체는 머신-판독가능 저장 장치, 머신-판독가능 저장 기판, 메모리 장치, 머신-판독가능 전파 신호에 영향을 주는 물질의 구성 또는 그들 중의 하나 이상의 조합일 수 있다. 용어 "데이터 프로세싱 장치"는 데이터 처리를 위한 모든 장치, 디바이스 및 머신을 포함하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함한다. 장치는 하드웨어에 더하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나의 조합을 구성하는 코드를 포함할 수 있다. 전파되는 신호는 인공적으로 생성된 신호, 예를 들어, 머신 생성 전기, 광, 또는 전자기 신호이며, 이는 적절한 수신기 장치로의 전송을 위한 정보를 인코딩하기 위해 생성된다.
컴퓨터 프로그램 (프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 알려짐)은 컴파일 되거나 해석된 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램 또는 컴퓨터 환경에서 사용되기에 적합한 모듈, 컴포넌트, 서브루틴 또는 다른 유닛으로서 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 반드시 대응되는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터를 보유하는 파일의 일부(예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트) 또는 문제의 프로그램의 전용인 단일 파일 또는 다중 편성(coordinated) 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 상에서 또는 한 사이트에 위치하거나 다수의 사이트에 걸쳐 분배되고 통신 네트워크에 의해 상호 접속되는 다수의 컴퓨터 상에서 실행되도록 배치될 수 있다.
본 문서에 설명된 과정들 및 논리 흐름들은 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍가능한 프로세서들에 의해 수행될 수 있다. 과정들 및 논리 흐름들 그리고 장치는 FPGA (필드 프로그래밍 가능 게이트 어레이) 또는 ASIC (애플리케이션 특정 집적 회로)와 같은 특수 목적 논리회로로 실시될 수 있고, 구현될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은 예를 들어 범용 및 특수 목적의 마이크로 프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리(ROM), 또는 랜덤 액세스 메모리(RAM), 또는 둘 다로부터 명령어들과 데이터를 수신할 것이다. 컴퓨터의 필수 구성요소는 명령들을 실행하는 프로세서 및 명령들 및 데이터를 저장하는 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어, 자기 디스크, 광자기 디스크, 또는 광디스크를 포함하거나, 또는 이 디바이스들과 데이터를 송수신하기 위하여 동작적으로(operatively) 결합될 것이다. 하지만 컴퓨터는 이러한 디바이스를 구비할 필요는 없다. 컴퓨터 프로그램 명령어들과 데이터를 저장하기 적합한 컴퓨터 판독가능 매체에는, 예를 들어, 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM, 플래시 메모리 디바이스), 자기 디스크(예를 들어, 내부 하드디스크, 착탈식 디스크), 광자기 디스크 및 CD ROM과 DVD-ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스가 포함된다. 프로세서와 메모리는 전용 논리 회로에 의해 보완되거나 또는 전용 논리 회로에 통합될 수 있다.
본 특허문서가 다수의 특정한 구현 세부사항을 포함하고 있지만, 이는 임의 발명의 범위나 청구할 사항의 범위에 대한 어떠한 제한으로도 이해되어서는 안 되며, 특정한 기술들의 특정한 실시예들에 고유할 수 있는 특징들의 설명으로서 이해되어야 한다. 별개의 실시예들의 맥락에서 본 특허 문서에서 설명된 소정의 특징들은 조합되어 단일 실시예로 구현될 수도 있다. 반대로, 단일 실시예의 맥락에서 설명한 다양한 특징들은 복수의 실시예에서 별개로 구현되거나 어떤 적당한 하위 조합으로도 구현 가능하다. 또한, 앞에서 특징들이 특정 조합에서 동작하는 것으로서 설명되고 그와 같이 청구되기까지 하였지만, 청구된 조합으로부터의 하나 또는 그 이상의 특징들은 일부 경우에 해당 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위 조합이나 하위 조합의 변형으로 될 수 있다.
마찬가지로, 동작들이 도면들에서 특정한 순서로 묘사되고 있지만, 이는 그러한 동작들이 바람직한 결과를 얻기 위해, 도시한 특정 순서나 순차적인 순서로 수행되어야 한다거나, 도시된 모든 동작들이 수행되어야 한다는 것을 의미하지 않는다. 더욱이, 본 특허 문서에 기재된 실시예들에 있어서 다양한 시스템 구성요소들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예시들이 설명되었을 뿐이며, 기타 구현, 개선 및 변형은 본 특허 문서에 설명되고 도시된 것에 기초하여 이루어질 수 있다.

Claims (76)

  1. 비디오 처리 방법에 있어서,
    대표적인 샘플(representative sample) 값들의 팔레트가 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 이용하여 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함하되,
    상기 변환 동안 예측자 팔레트는 대표적인 샘플값들의 상기 팔레트를 예측하는 데에 사용되고,
    상기 현재 블록의 상기 변환 후 상기 예측자 팔레트의 업데이트는 상기 현재 블록의 특성에 기반한 규칙에 따라 비활성화되는, 비디오 처리 방법.
  2. 제1항에 있어서,
    상기 현재 블록의 상기 특성은 상기 현재 블록과 연관된 코딩된 정보를 포함하는, 비디오 처리 방법.
  3. 제1항에 있어서,
    상기 현재 블록의 상기 특성은 상기 현재 블록의 치수를 포함하는, 비디오 처리 방법.
  4. 제3항에 있어서,
    상기 규칙은, 상기 현재 블록의 폭이 제1 임계값 보다 크거나 같고 상기 현재 블록의 높이가 제2 임계값 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시하는, 비디오 처리 방법.
  5. 제3항에 있어서,
    상기 규칙은, 상기 현재 블록의 높이가 제1 임계값 보다 적거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시하는, 비디오 처리 방법.
  6. 제3항에 있어서,
    상기 규칙은, 상기 현재 블록의 폭이 제1 임계값 보다 크거나 같고 상기 현재 블록의 높이가 제2 임계값 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시하는, 비디오 처리 방법.
  7. 제3항에 있어서,
    상기 규칙은, 상기 현재 블록의 높이가 제1 임계값 보다 크거나 같은 경우, 상기 예측자 팔레트의 상기 업데이트가 비활성화됨을 명시하는, 비디오 처리 방법.
  8. 제4항 내지 제7항 중 어느 항에 있어서,
    상기 제1 임계값 또는 상기 제2 임계값은 상기 코딩된 표현에서 미리 정의되거나 시그널링되는, 비디오 처리 방법.
  9. 제4항 내지 제8항 중 어느 항에 있어서,
    상기 제1 임계값이 4, 16 또는 1024인, 비디오 처리 방법.
  10. 제4항 내지 제8항 중 어느 항에 있어서,
    상기 제2 임계값이 4, 16 또는 1024인, 비디오 처리 방법.
  11. 제4항 내지 제7항 중 어느 항에 있어서,
    상기 제1 임계값 또는 상기 제2 임계값은 상기 현재 블록의 컬러 성분에 기반하는, 비디오 처리 방법.
  12. 비디오 처리 방법에 있어서,
    비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 수행하는 단계를 포함하되,
    상기 변환 동안 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되고,
    상기 예측자 팔레트에 대한 변경이 실시될지 여부는 상기 현재 블록의 컬러 성분에 따라 결정되는, 비디오 처리 방법.
  13. 제11항에 있어서,
    상기 예측자 팔레트에 대한 상기 변경은 상기 예측자 팔레트의 업데이트, 초기화 또는 재설정을 포함하는, 비디오 처리 방법.
  14. 제11항에 있어서,
    상기 컬러 성분은 휘도 또는 색차 성분을 포함하는, 비디오 처리 방법.
  15. 제12항 내지 제14항 중 어느 항에 있어서,
    상기 예측자 팔레트는 상기 현재 블록의 상기 컬러 성분에 해당하는 정보를 포함하는, 비디오 처리 방법.
  16. 제12항 내지 제14항 중 어느 항에 있어서,
    상기 예측자 팔레트는 상기 현재 블록의 모든 컬러 성분들에 해당하는 정보를 포함하는, 비디오 처리 방법.
  17. 제12항 내지 제14항 중 어느 항에 있어서,
    상기 예측자 팔레트는 상기 현재 블록의 2개의 색차 성분들에 해당하는 정보를 포함하는, 비디오 처리 방법.
  18. 비디오 처리 방법에 있어서,
    비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 수행하는 단계를 포함하되,
    상기 변환 동안, 복수의 예측자 팔레트들이 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되는, 비디오 처리 방법.
  19. 제18항에 있어서,
    상기 현재 블록의 예측자 팔레트는 적어도 글로벌 팔레트 및 로컬 팔레트에 따라 업데이트되는, 비디오 처리 방법.
  20. 제18항에 있어서,
    상기 복수의 예측자 팔레트들은 상기 팔레트 모드를 사용하여 코딩된, 상기 비디오 유닛 내의 K개의 블록들과 연관되는, 비디오 처리 방법.
  21. 제18항 내지 제20항 중 어느 항에 있어서,
    상이한 컬러 성분들에 대한 팔레트들은 상기 복수의 예측자 팔레트들의 상이한 예측자 팔레트들에 따라 결정되는, 비디오 처리 방법.
  22. 제18항 내지 제21항 중 어느 항에 있어서,
    상기 복수의 예측자 팔레트들은 상기 비디오 유닛 내의 첫 번째 블록의 변환 이전에 또는 앞서 변환된 비디오 유닛 내의 마지막 블록의 변환 이후에 재설정되거나 재초기화되는(re-initialized), 비디오 처리 방법.
  23. 제18항 내지 제21항 중 어느 항에 있어서,
    상기 복수의 예측자 팔레트들의 예측자 팔레트의 인덱스는 상기 코딩된 표현에서 코딩 유닛, 예측 유닛, 코딩 트리 유닛, 코딩 트리 블록, 코딩 트리 유닛의 하위 영역, 또는 코딩 트리 블록의 하위 영역에서 시그널링 되는, 비디오 처리 방법.
  24. 비디오 처리 방법에 있어서,
    비디오의 비디오 유닛 내의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 실시하는 단계를 포함하되,
    상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되고,
    상기 예측자 팔레트는 규칙에 따라 상기 비디오 유닛 내의 첫 번째 블록의 변환 이전에 또는 이전 비디오 유닛 내의 마지막 블록의 변환 이후에 재설정되거나 재초기화되는, 비디오 처리 방법.
  25. 제24항에 있어서,
    상기 비디오 유닛은 코딩 트리 유닛의 하위 영역, 가상 파이프라인 데이터 유닛, 하나 또는 그 이상의 코딩 트리 유닛들, 코딩 트리 블록, 하나 또는 그 이상의 코딩 유닛들, 코딩 트리 유닛 행, 타일, 브릭, 서브 픽처, 또는 상기 비디오의 뷰를 포함하는, 비디오 처리 방법.
  26. 제24항 또는 제25항에 있어서,
    상기 규칙은 상기 예측자 팔레트의 재설정 또는 재초기화가 복수의 비디오 유닛들의 파면 병렬 처리가 활성화되는지 여부와 상관없이 상기 비디오 유닛에 적용 가능함을 명시하는, 비디오 처리 방법.
  27. 제25항에 있어서,
    상기 비디오 유닛은 색차 성분에 해당하는 코딩 트리 유닛 행을 포함하는, 비디오 처리 방법.
  28. 제27항에 있어서,
    상기 첫 번째 블록은 상기 코딩 트리 유닛 행 내의 상기 색차 성분에 해당하는 첫 번째 코딩 트리 블록을 포함하는, 비디오 처리 방법.
  29. 제27항 또는 제28항에 있어서,
    상기 규칙은, 듀얼 트리 파티션이 적용되고 현재 파티션 트리가 상기 색차 성분에 해당하는 코딩 트리인 경우, 상기 예측자 팔레트의 재설정 또는 재초기화가 상기 비디오 유닛에 적용 가능함을 명시하는, 비디오 처리 방법.
  30. 제24항 내지 제29항 중 어느 항에 있어서,
    상기 예측자 팔레트의 크기는 0으로 재설정 또는 재초기화되는, 비디오 처리 방법.
  31. 제24항 내지 제29항 중 어느 항에 있어서,
    상기 예측자 팔레트의 크기는 시퀀스 팔레트 예측자 이니셜라이저 내의 엔트리들의 수 또는 상기 코딩된 표현에서 시그널링된 예측자 팔레트에서 허용된 엔트리들의 최대 수로 재설정 또는 재초기화되는, 비디오 처리 방법.
  32. 제24항 내지 제31항 중 어느 항에 있어서,
    상기 예측자 팔레트는 새로운 비디오 유닛을 변환하기 전에 더 재설정 또는 재초기화되는, 비디오 처리 방법.
  33. 제24항 내지 제32항 중 어느 항에 있어서,
    복수의 비디오 유닛들의 파면 병렬 처리가 활성화되는 경우, 현재 코딩 트리 블록 또는 현재 코딩 트리 유닛의 변환을 위해 사용되는 상기 예측자 팔레트는 변환된 코딩 트리 블록 또는 코딩 트리 유닛에 기반하여 결정되는, 비디오 처리 방법.
  34. 비디오 처리 방법에 있어서,
    비디오의 비디오 유닛과 상기 비디오의 코딩된 표현 간의 변환을 팔레트 모드를 사용하여 수행하는 단계를 포함하되,
    상기 비디오 유닛은 복수의 블록들을 포함하고,
    상기 변환 동안, 상기 복수의 블록들 각각에 대해 대표적인 샘플값들의 팔레트를 상기 팔레트 모드에서 예측하기 위해, 공유된 예측자 팔레트가 상기 복수의 블록들 모두에 의해 사용되는, 비디오 처리 방법.
  35. 제34항에 있어서,
    삼진 트리 분할이 상기 비디오 유닛에 적용되고,
    상기 공유된 예측자 팔레트는 16x4 또는 4x16의 치수를 가지는 비디오 유닛에 대해 사용되는, 비디오 처리 방법.
  36. 제34항에 있어서,
    이진 트리 분할이 상기 비디오 유닛에 적용되고,
    상기 공유된 예측자 팔레트는 8x4 또는 4x8의 치수를 가지는 비디오 유닛에 대해 사용되는, 비디오 처리 방법.
  37. 제34항에 있어서,
    쿼드 트리 분할이 상기 비디오 유닛에 적용되고,
    상기 공유된 예측자 팔레트는 8x8의 치수를 가지는 비디오 유닛에 대해 사용되는, 비디오 처리 방법.
  38. 제34항 내지 제37항 중 어느 항에 있어서,
    상기 공유된 예측자 팔레트는 상기 비디오 유닛 내의 상기 복수의 블록들 모두의 변환들에 앞서 구성된 것인, 비디오 처리 방법.
  39. 제34항 내지 제38항 중 어느 항에 있어서,
    상기 공유된 예측자 팔레트에서 예측된 엔트리의 지시는 상기 영역에서 상기 복수의 블록들의 첫 번째 코딩된 블록과 함께 상기 코딩된 표현에서 시그널링되는, 비디오 처리 방법.
  40. 제39항에 있어서,
    상기 공유된 예측자 팔레트에서 예측된 엔트리의 지시는 상기 영역에서 상기 복수의 블록들의 나머지에 대해 상기 코딩된 표현에서 생략되는, 비디오 처리 방법.
  41. 제34항 내지 제40항 중 어느 항에 있어서,
    상기 공유된 예측자 팔레트의 업데이트는 상기 영역에서 상기 복수의 블록들 중 하나의 변환 이후에 건너뛰게 되는, 비디오 처리 방법.
  42. 비디오 처리 방법에 있어서,
    비디오의 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을, 대표적인 샘플 값들의 팔레트가 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 수행하는 단계를 포함하되,
    상기 변환 동안, 예측자 팔레트는 대표적인 샘플 값들의 상기 팔레트를 예측하는 데에 사용되고,
    상기 예측자 팔레트의 각 엔트리에 대해 카운터가 유지되어 해당 엔트리가 얼마나 빈번하게 사용되는지를 지시하는, 비디오 처리 방법.
  43. 제42항에 있어서,
    상기 카운터는 상기 예측자 팔레트에 추가될 새로운 엔트리에 대해 K로 설정되며, K는 정수인, 비디오 처리 방법.
  44. 제43항에 있어서,
    K는 0인(K = 0), 비디오 처리 방법.
  45. 제42항 내지 제44항 중 어느 항에 있어서,
    상기 현재 블록의 상기 변환 동안 해당 엔트리가 재사용될 때 마다 상기 카운터는 N씩 증가되며, N은 양의 정수인, 비디오 처리 방법.
  46. 제45항에 있어서,
    N은 1인(N = 1), 비디오 처리 방법.
  47. 제42항 내지 제46항 중 어느 항에 있어서,
    상기 예측자 팔레트의 엔트리들은 상기 예측자 팔레트가 상기 변환을 위해 사용되기 전에 규칙에 따라 재배열되는, 비디오 처리 방법.
  48. 제47항에 있어서,
    상기 규칙은 상기 예측자 팔레트의 상기 엔트리들이 현재 샘플의 코딩된 정보에 따라 재배열됨을 명시하는, 비디오 처리 방법.
  49. 제47항에 있어서,
    상기 규칙은 상기 예측자 팔레트의 상기 엔트리들이 상기 예측자 팔레트 내의 상기 엔트리들의 각각의 해당 엔트리에 대한 상기 카운터에 따라 재배열됨을 명시하는, 비디오 처리 방법.
  50. 제47항 내지 제49항 중 어느 항에 있어서,
    제2 카운터가 샘플의 발생 빈도를 지시하기 위해 사용되는, 비디오 처리 방법.
  51. 제50항에 있어서,
    더 높은 발생 빈도를 가지는 제1 샘플은 상기 예측자 팔레트에서 더 낮은 발생 빈도를 가지는 제2 샘플 앞에 위치하는, 비디오 처리 방법.
  52. 제43항 내지 제51항 중 어느 항에 있어서,
    상기 예측자 팔레트는 규칙에 따라 상기 현재 블록 내의 이스케이프된(escaped) 샘플들을 사용하여 업데이트되는, 비디오 처리 방법.
  53. 제52항에 있어서,
    상기 규칙은 조건이 충족되는 경우 상기 예측자 팔레트가 상기 이스케이프된 샘플들을 사용하여 업데이트됨을 규정하는, 비디오 처리 방법.
  54. 제53항에 있어서,
    상기 현재 블록의 현재 블록을 삽입한 후에 상기 예측자 팔레트가 채워지지 않는 경우 상기 조건이 충족되는, 비디오 처리 방법.
  55. 비디오 처리 방법에 있어서,
    대표적인 샘플 값들의 팔레트가 현재 블록에 대한 대표적인 샘플 값들의 팔레트를 예측하기 위해서 상기 현재 블록을 코딩하는 데에 사용되는 팔레트 모드를 사용하여, 비디오의 상기 현재 블록과 상기 비디오의 코딩된 표현 간의 변환을 수행하는 단계를 포함하되,
    상기 코딩된 표현에서 시그널링되는 상기 팔레트의 엔트리들의 수는 범위 [0, 팔레트의 최대 허용 크기 - 상기 변환 동안 유도되는 팔레트 엔트리들의 수] 이내에 있는, 비디오 처리 방법.
  56. 제55항에 있어서,
    상기 코딩된 표현에서 시그널링되는 상기 팔레트의 엔트리들의 수는 상기 범위에 기반하여 이진화되는, 비디오 처리 방법.
  57. 제56항에 있어서,
    상기 코딩된 표현에서 시그널링되는 엔트리들의 수는 절삭된 이진화 코딩 과정을 사용하여 이진화되는, 비디오 처리 방법.
  58. 제56항에 있어서,
    상기 코딩된 표현에서 시그널링되는 엔트리들의 수는 상기 현재 블록의 특성에 기반하여 이진화되는, 비디오 처리 방법.
  59. 제58항에 있어서,
    상기 특성은 상기 현재 블록의 치수를 포함하는, 비디오 처리 방법.
  60. 제1항 내지 제59항 중 어느 항에 있어서,
    방법의 적용 가능성은 상기 비디오의 특성에 기반하는, 비디오 처리 방법.
  61. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오의 콘텐트를 포함하는, 비디오 처리 방법.
  62. 제60항에 있어서,
    상기 비디오의 상기 특성은 디코더 파라미터 세트, 슬라이스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 적응 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 최대 코딩 유닛(largest coding unit (LCU)), 코딩 유닛, LCU 행, LCU들의 그룹, 변환 유닛, 픽처 유닛, 또는 비디오 코딩 유닛에서 시그널링된 정보를 상기 코딩된 표현 내에서 포함하는, 비디오 처리 방법.
  63. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오 내의 코딩 유닛, 픽처 유닛, 변환 유닛, 블록 또는 비디오 코딩 유닛의 위치를 포함하는, 비디오 처리 방법.
  64. 제60항에 있어서,
    상기 비디오의 상기 특성은 현재 블록 또는 상기 현재 블록의 이웃 블록의 특성을 포함하는, 비디오 처리 방법.
  65. 제64항에 있어서,
    현재 블록 또는 상기 현재 블록의 이웃 블록들의 상기 특성은 상기 현재 블록의 치수 또는 상기 현재 블록의 상기 이웃 블록의 치수를 포함하는, 비디오 처리 방법.
  66. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오의 컬러 포맷의 지시를 포함하는, 비디오 처리 방법.
  67. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오에 적용가능한 코딩 트리 구조를 포함하는, 비디오 처리 방법.
  68. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오의 슬라이스 타입, 타일 그룹 타입, 또는 픽처 타입을 포함하는, 비디오 처리 방법.
  69. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오의 컬러 성분을 포함하는, 비디오 처리 방법.
  70. 제60항에 있어서,
    상기 비디오의 상기 특성은 상기 비디오의 시간적 계층 식별자를 포함하는, 비디오 처리 방법.
  71. 제60항에 있어서,
    상기 비디오의 상기 특성은 비디오 표준의 프로파일, 레벨 또는 단을 포함하는, 비디오 처리 방법.
  72. 제1항 내지 제71항 중 어느 항에 있어서,
    상기 변환은 상기 비디오를 상기 코딩된 표현으로 인코딩하는 단계를 포함하는, 비디오 처리 방법.
  73. 제1항 내지 제71항 중 어느 항에 있어서,
    상기 변환은 상기 비디오의 화소 값들을 생성하기 위해 상기 코딩된 표현을 디코딩하는 단계를 포함하는, 비디오 처리 방법.
  74. 비디오 처리 장치로서, 제1항 내지 제73항 중 하나 또는 그 이상에서의 방법을 구현하기 위해 구성된 프로세서를 포함하는, 비디오 처리 장치.
  75. 컴퓨터 프로그램 제품으로, 그것에 저장된 컴퓨터 코드를 가지며, 상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서가 제1항 내지 제73항 중 어느 한 항의 방법을 실행하도록 하는, 컴퓨터 프로그램 제품.
  76. 컴퓨터 판독 가능한 매체로서, 제1항 내지 제73항 중 어느 한 항에 따라 생성된 코딩된 표현을 저장하는, 컴퓨터 판독 가능한 매체.
KR1020227007400A 2019-09-12 2020-09-10 비디오 코딩에서 팔레트 예측자 사용 KR20220057544A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/105554 2019-09-12
CN2019105554 2019-09-12
PCT/US2020/050181 WO2021050715A1 (en) 2019-09-12 2020-09-10 Using palette predictor in video coding

Publications (1)

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

Family

ID=74866017

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227007400A KR20220057544A (ko) 2019-09-12 2020-09-10 비디오 코딩에서 팔레트 예측자 사용
KR1020227007410A KR20220054807A (ko) 2019-09-12 2020-09-11 비디오 코딩에서 팔레트 예측자 크기 적응

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227007410A KR20220054807A (ko) 2019-09-12 2020-09-11 비디오 코딩에서 팔레트 예측자 크기 적응

Country Status (8)

Country Link
US (4) US11736722B2 (ko)
EP (2) EP4011080A4 (ko)
JP (3) JP2022548582A (ko)
KR (2) KR20220057544A (ko)
CN (4) CN114375581A (ko)
BR (1) BR112022004606A2 (ko)
MX (1) MX2022002617A (ko)
WO (3) WO2021050715A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2022002617A (es) 2019-09-12 2022-03-25 Bytedance Inc Uso de predictor de paleta en codificacion de video.

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5936606A (en) 1996-04-15 1999-08-10 Winbond Electronics Corp. On-screen edit/display controller
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6208350B1 (en) 1997-11-04 2001-03-27 Philips Electronics North America Corporation Methods and apparatus for processing DVD video
US6347157B2 (en) * 1998-07-24 2002-02-12 Picsurf, Inc. System and method for encoding a video sequence using spatial and temporal transforms
US7414632B1 (en) 2000-01-07 2008-08-19 Intel Corporation Multi-pass 4:2:0 subpicture blending
US7634011B2 (en) * 2000-04-21 2009-12-15 Microsoft Corporation Application program interface (API) facilitating decoder control of accelerator resources
US7649943B2 (en) 2000-04-21 2010-01-19 Microsoft Corporation Interface and related methods facilitating motion compensation in media processing
US6940912B2 (en) 2000-04-21 2005-09-06 Microsoft Corporation Dynamically adaptive multimedia application program interface and related methods
US6891893B2 (en) * 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US7143353B2 (en) 2001-03-30 2006-11-28 Koninklijke Philips Electronics, N.V. Streaming video bookmarks
US6937759B2 (en) 2002-02-28 2005-08-30 Nokia Corporation Method and device for reducing image by palette modification
US7302006B2 (en) * 2002-04-30 2007-11-27 Hewlett-Packard Development Company, L.P. Compression of images and image sequences through adaptive partitioning
US7433526B2 (en) 2002-04-30 2008-10-07 Hewlett-Packard Development Company, L.P. Method for compressing images and image sequences through adaptive partitioning
US7072512B2 (en) * 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
JP4496170B2 (ja) * 2004-02-17 2010-07-07 パナソニック株式会社 記録方法、再生装置、プログラム、再生方法
JP2008244981A (ja) * 2007-03-28 2008-10-09 Seiko Epson Corp 映像合成装置および映像出力装置
KR101540899B1 (ko) 2010-04-09 2015-07-30 미쓰비시덴키 가부시키가이샤 화상 부호화 장치
JP5863830B2 (ja) * 2011-02-16 2016-02-17 ドルビー ラボラトリーズ ライセンシング コーポレイション フィルタ係数を生成してフィルタを設定する方法、エンコーダ及びデコーダ
US9116634B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
KR102101304B1 (ko) * 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US11259020B2 (en) * 2013-04-05 2022-02-22 Qualcomm Incorporated Determining palettes in palette-based video coding
US9609336B2 (en) 2013-04-16 2017-03-28 Fastvdo Llc Adaptive coding, transmission and efficient display of multimedia (acted)
US20150010087A1 (en) * 2013-07-05 2015-01-08 Parabola Research Limited Image Processing Method and Apparatus
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
CN112383780B (zh) * 2013-08-16 2023-05-02 上海天荷电子信息有限公司 点匹配参考集和索引来回扫描串匹配的编解码方法和装置
WO2015041647A1 (en) * 2013-09-19 2015-03-26 Entropic Communications, Inc. Parallel decode of a progressive jpeg bitstream
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
US9477423B2 (en) * 2013-11-26 2016-10-25 Seagate Technology Llc Eliminating or reducing programming errors when programming flash memory cells
EP3926955A1 (en) * 2013-12-10 2021-12-22 Canon Kabushiki Kaisha Method and apparatus for encoding or decoding blocks of pixel
EP3085068A4 (en) * 2013-12-18 2016-12-21 Hfi Innovation Inc PALETTE PREDICTION AND SHARING IN VIDEO CODING
KR101782280B1 (ko) * 2013-12-18 2017-10-23 에이치에프아이 이노베이션 인크. 팔레트 테이블 예측을 위한 방법 및 장치
EP3085083B1 (en) 2013-12-18 2021-12-15 HFI Innovation Inc. Method and apparatus for palette initialization and management
US20150181208A1 (en) 2013-12-20 2015-06-25 Qualcomm Incorporated Thermal and power management with video coding
GB2521606A (en) 2013-12-20 2015-07-01 Canon Kk Method and apparatus for transition encoding in video coding and decoding
US10182242B2 (en) * 2013-12-27 2019-01-15 Mediatek Inc. Method and apparatus for palette coding with cross block prediction
CN106105229B (zh) * 2014-03-14 2019-03-15 寰发股份有限公司 使用调色板编码来编码视频数据的块的方法及装置
KR102494913B1 (ko) 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
US9681135B2 (en) 2014-03-14 2017-06-13 Hfi Innovation Inc. Method for palette table initialization and management
EP3055830A4 (en) 2014-03-21 2017-02-22 Huawei Technologies Co., Ltd. Advanced screen content coding with improved color table and index map coding methods
US10362336B2 (en) * 2014-03-25 2019-07-23 Qualcomm Incorporated Palette predictor signaling with run length code for video coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10091512B2 (en) * 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US9900617B2 (en) 2014-06-20 2018-02-20 Qualcomm Incorporated Single color palette mode in video coding
US10237557B2 (en) 2014-06-20 2019-03-19 Hfi Innovation Inc. Method of run-length coding for palette predictor
WO2015194187A1 (en) * 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding
US20150381994A1 (en) * 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
KR20160037111A (ko) * 2014-09-26 2016-04-05 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10812817B2 (en) * 2014-09-30 2020-10-20 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US10356440B2 (en) * 2014-10-01 2019-07-16 Qualcomm Incorporated Scalable transform hardware architecture with improved transpose buffer
EP3205107A2 (en) 2014-10-06 2017-08-16 VID SCALE, Inc. Improved palette coding for screen content coding
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
US10687069B2 (en) 2014-10-08 2020-06-16 Microsoft Technology Licensing, Llc Adjustments to encoding and decoding when switching color spaces
WO2016064123A1 (ko) * 2014-10-20 2016-04-28 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN106797478B (zh) 2014-11-06 2019-09-24 联发科技股份有限公司 调色板编码的方法
WO2016074627A1 (en) * 2014-11-12 2016-05-19 Mediatek Inc. Methods of escape pixel coding in index map coding
EP3219099B1 (en) * 2014-12-19 2021-04-28 HFI Innovation Inc. Methods of palette based prediction for non-444 color format in video and image coding
EP3245788A2 (en) * 2015-01-14 2017-11-22 VID SCALE, Inc. Palette coding for non-4:4:4 screen content video
CN111800632B (zh) * 2015-01-15 2024-03-29 株式会社Kt 对编码视频信号解码的方法和对视频信号编码的方法
CN107211122B (zh) 2015-01-29 2020-05-05 佳能株式会社 对自包含式编码结构进行编码或解码时的调色板预测结果初始化程序
WO2016123262A1 (en) 2015-01-29 2016-08-04 Vid Scale, Inc. Escape color coding for palette coding mode
WO2016122251A1 (ko) * 2015-01-29 2016-08-04 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2016123388A1 (en) 2015-01-29 2016-08-04 Vid Scale, Inc. Palette coding modes and palette flipping
US9986248B2 (en) * 2015-01-29 2018-05-29 Qualcomm Incorporated Palette mode coding for video coding
WO2016122253A1 (ko) * 2015-01-29 2016-08-04 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2016124158A1 (en) * 2015-02-05 2016-08-11 Mediatek Inc. Methods and apparatus of decoding process for palette syntax
US10397568B2 (en) 2015-02-17 2019-08-27 Hfi Innovation Inc. Method and apparatus for palette coding of monochrome contents in video and image compression
CN107409227B (zh) 2015-03-20 2020-01-21 联发科技(新加坡)私人有限公司 视频编解码方法及装置
EP3282706A4 (en) * 2015-04-02 2019-01-30 KT Corporation METHOD AND APPARATUS FOR PROCESSING VIDEO SIGNAL
CN112235575B (zh) * 2015-04-08 2024-01-12 寰发股份有限公司 编码方法、编码装置和相应地计算机可读存储介质
CN107431824B (zh) * 2015-04-08 2020-10-02 寰发股份有限公司 视频编解码中调色板模式上下文编解码和二值化的方法
US10448058B2 (en) 2015-05-21 2019-10-15 Qualcomm Incorporated Grouping palette index at the end and index coding using palette size and run value
CN107637057A (zh) * 2015-06-03 2018-01-26 联发科技股份有限公司 图像和视频数据的调色板编解码方法
CN106254865B (zh) * 2015-06-08 2020-06-09 同济大学 一种图像编码及解码方法、图像处理设备
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10356432B2 (en) 2015-09-14 2019-07-16 Qualcomm Incorporated Palette predictor initialization and merge for video coding
US11039147B2 (en) * 2016-05-28 2021-06-15 Mediatek Inc. Method and apparatus of palette mode coding for colour video data
US10230961B2 (en) * 2016-06-03 2019-03-12 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding
US10445412B1 (en) * 2016-09-21 2019-10-15 Amazon Technologies, Inc. Dynamic browsing displays
JP2021010046A (ja) * 2017-10-06 2021-01-28 シャープ株式会社 画像符号化装置及び画像復号装置
US20190246122A1 (en) 2018-02-08 2019-08-08 Qualcomm Incorporated Palette coding for video coding
US10694195B2 (en) * 2018-03-07 2020-06-23 Tencent America LLC Methods and apparatus for palette coding
US11025905B2 (en) * 2018-09-14 2021-06-01 Tencent America LLC Method and device for decoding with palette mode
US10652537B1 (en) * 2018-11-21 2020-05-12 Alibaba Group Holding Limited Coding unit size adaptive palette mode for video compression system
US10951895B2 (en) * 2018-12-31 2021-03-16 Alibaba Group Holding Limited Context model selection based on coding unit characteristics
MX2022002617A (es) 2019-09-12 2022-03-25 Bytedance Inc Uso de predictor de paleta en codificacion de video.

Also Published As

Publication number Publication date
EP4011080A4 (en) 2023-04-12
EP4011080A1 (en) 2022-06-15
JP2024050704A (ja) 2024-04-10
US20220201311A1 (en) 2022-06-23
EP4011078A1 (en) 2022-06-15
CN114375581A (zh) 2022-04-19
US20240129527A1 (en) 2024-04-18
WO2021050715A1 (en) 2021-03-18
WO2021050919A1 (en) 2021-03-18
CN114402612A (zh) 2022-04-26
CN117615126A (zh) 2024-02-27
JP2022548582A (ja) 2022-11-21
KR20220054807A (ko) 2022-05-03
MX2022002617A (es) 2022-03-25
CN114365483A (zh) 2022-04-15
WO2021050911A1 (en) 2021-03-18
EP4011078A4 (en) 2023-01-25
US20220210447A1 (en) 2022-06-30
JP2022548042A (ja) 2022-11-16
BR112022004606A2 (pt) 2022-05-31
US11736722B2 (en) 2023-08-22
US20220201300A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
KR102082548B1 (ko) 팔레트-기반 비디오 코딩에서의 최대 팔레트 파라미터들
KR102095086B1 (ko) 팔레트-기반 비디오 코딩에서의 탈출 샘플 코딩
US11528497B2 (en) Palette mode with different partition structures
US11943481B2 (en) Entropy coding for palette escape symbol
KR20220131250A (ko) 크로마 컴포넌트에 대한 디블로킹 파라미터
US20230171415A1 (en) Tile and slice partitioning in video processing
US11563946B2 (en) Quantization parameter derivation for palette mode
US20240129527A1 (en) Initialization Of Palette For Wavefront Parallel Processing
JP2024014958A (ja) ローカルデュアルツリー向けのパレットモード
CN113966611A (zh) 视频编解码中的重要系数信令
WO2021136486A1 (en) Palette size signaling in video coding
CN115088192A (zh) 视频数据的基于字典的编解码
CN115152210A (zh) 子图片的高度的推导