KR20240049359A - 비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도 - Google Patents

비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도 Download PDF

Info

Publication number
KR20240049359A
KR20240049359A KR1020247009923A KR20247009923A KR20240049359A KR 20240049359 A KR20240049359 A KR 20240049359A KR 1020247009923 A KR1020247009923 A KR 1020247009923A KR 20247009923 A KR20247009923 A KR 20247009923A KR 20240049359 A KR20240049359 A KR 20240049359A
Authority
KR
South Korea
Prior art keywords
ctu
cidx
statcoeff
partition
history counter
Prior art date
Application number
KR1020247009923A
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 KR20240049359A publication Critical patent/KR20240049359A/ko

Links

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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

일부 실시예에서, 비디오 디코더는 히스토리 기반한 라이스 파라미터 유도 및 파면 병렬 프로세싱(WPP)을 사용하여 비디오의 비트 스트림에 따라 비디오를 디코딩한다. 비디오 디코더는 비디오의 파티션을 나타내는 이진 스트링을 액세스하고, 파티션에서의 각 코딩 트리 유닛(CTU)을 처리하여 CTU 중 이미 디코딩된 계수값을 생성한다. 상기 과정은, CTU를 디코딩하기 전, WPP를 인에이블하는지 여부 및 CTU가 파티션에서의 현재 CTU 행의 첫 번째 CTU인지 여부를 결정하고; WPP가 인에이블되고 CTU가 파티션에서의 현재 CTU 행의 첫 번째 CTU이면, 히스토리 카운터를 초기값으로 설정하는 것을 포함한다. 상기 과정은, 히스토리 카운터의 값에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것을 통해, CTU를 디코딩하고; 계산된 라이스 파라미터에 기반하여, CTU에서의 TU에 대응되는 이진 스트링을 TU의 계수값으로 디코딩하는 것을 추가로 포함한다.

Description

비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도
관련 출원에 대한 상호 참조
본 출원은 2021년 8월 26일에 제출한, 제목이 “비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도(History-Based Rice Parameter Derivations for Wavefront Parallel Processing in Video Coding)”인 제63/260,600호 미국 임시 출원, 2021년 10월 4일에 제출한, 제목이 “비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도(History-Based Rice Parameter Derivations for Wavefront Parallel Processing in Video Coding)”인 제63/262,078호 미국 임시 출원 및 2021년 10월 1일에 제출한, 제목이 “VVC동작 범위가 확장된 비트 깊이 범위 표현(Representation of Bit Depth Range for VVC Operation Range Extension)”인 제63/251,385호 미국 임시 출원의 우선권을 주장하는 바, 상기 출원의 모든 내용은 인용되어 본 출원에 결합된다.
본 발명은 전체적으로, 비디오 처리에 사용되는 컴퓨터에 의해 구현되는 방법 및 시스템에 관한 것이다. 구체적으로, 본 발명은 비디오 코딩에서 파면 병렬 프로세싱(Wavefront Parallel Processing)에 사용되는 히스토리 기반한 라이스 파라미터(Rice Parameter) 유도에 관한 것이다.
일반적으로 존재하는, 스마트폰, 태블릿 컴퓨터 및 컴퓨터와 같은 카메라를 지원하는 기기는, 비디오 또는 이미지를 캡처하는 것이 이전보다 더욱 용이하도록 한다. 그러나, 짧은 비디오라도, 그 데이터 양이 매우 크다. 비디오 코딩 기술(비디오 코딩 및 디코딩을 포함함)은 비디오 데이터로 하여금 더욱 작은 사이즈로 압축될 수 있도록 함으로써, 다양한 비디오로 하여금 저장 및 전송될 수 있도록 한다. 비디오 코딩은 광범위한 애플리케이션(예컨대 디지털 TV 브로드캐스트, 인터넷 및 모바일 네트워크에서의 비디오 전송, 실시간 애플리케이션(예컨대 비디오 채팅, 비디오 회의), DVD, 블루-레이 디스크 등)에서 이미 사용된다. 비디오를 저장하기 위한 저장 공간 및 비디오를 전송하기 위한 네트워크 대역폭 소모 중 적어도 하나를 감소하기 위해, 비디오 코딩 방안의 효율을 향상시킬 것을 요망한다.
일부 실시예는 비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도에 관한 것이다. 하나의 예에서, 비디오를 디코딩하기 위한 방법으로서, 비디오의 파티션을 나타내는 이진 스트링을 액세스하는 단계 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고, 및 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며, CTU를 디코딩하고, CTU를 디코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, CTU에서의 TU에 대응되는 이진 스트링을 TU의 계수값으로 디코딩하는 것, 계수값에 따라 CTU에서의 TU의 픽셀값을 결정하는 것을 포함하는 단계; 및 비디오의 디코딩 파티션을 출력하는 단계 - 디코딩 파티션은 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 를 포함한다.
다른 하나의 예에서, 비 일시적 컴퓨터 판독 가능한 매체로서, 상기 비 일시적 컴퓨터 판독 가능한 매체에는 프로그램 코드가 저장되어 있고, 프로그램 코드는 하나 또는 복수 개의 처리 기기에 의해 실행되어 복수 개의 동작을 실행할 수 있으며, 복수 개의 동작은, 비디오의 파티션을 나타내는 이진 스트링을 액세스하는 동작 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며, CTU를 디코딩하고, 상기 CTU를 디코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, CTU에서의 TU에 대응되는 이진 스트링을 TU의 계수값으로 디코딩하는 것, 계수값에 따라 CTU에서의 TU의 픽셀값을 결정하 것을 포함하는 동작; 및 비디오의 디코딩 파티션을 출력하는 동작 - 디코딩 파티션은 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 을 포함한다.
다른 하나의 예에서, 시스템으로서, 처리 기기 및 처리 기기에 통신적으로 연결된 비 일시적 컴퓨터 판독 가능한 매체를 포함한다. 처리 기기는, 비 일시적 컴퓨터 판독 가능한 매체에 저장된 프로그램 코드를 실행함으로써, 복수 개의 동작을 실행하도록 구성되고, 복수 개의 동작은, 비디오의 파티션을 나타내는 이진 스트링을 액세스하는 동작 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고; 및 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며; CTU를 디코딩하고, 상기 CTU를 디코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, CTU에서의 TU에 대응되는 이진 스트링을 TU의 계수값으로 디코딩하는 것, 계수값에 따라 CTU에서의 TU의 픽셀값을 결정하는 것을 포함하는 동작; 및 비디오의 디코딩 파티션을 출력하는 동작 - 디코딩 파티션은 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 을 포함한다.
다른 하나의 예에서, 비디오를 인코딩하기 위한 방법으로서, 비디오의 파티션을 액세스하는 단계 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 비디오의 파티션을 처리하여, 파티션의 이진 표현을 생성하며, 상기 비디오의 파티션을 처리하는 것은, 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것; 및 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것; CTU를 인코딩하는 것을 포함하고, 상기 CTU를 인코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, TU의 계수값을 CTU에서의 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 단계; 및 파티션의 이진 표현을 비디오의 비트 스트림에 인코딩하는 단계를 포함한다.
다른 하나의 예에서, 비 일시적 컴퓨터 판독 가능한 매체로서, 상기 비 일시적 컴퓨터 판독 가능한 매체에는 프로그램 코드가 저장되어 있고, 프로그램 코드는 하나 또는 복수 개의 처리 기기에 의해 실행되어 복수 개의 동작을 실행할 수 있으며, 복수 개의 동작은, 비디오의 파티션을 액세스하는 동작 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 비디오의 파티션을 처리하여, 파티션의 이진 표현을 생성하며, 상기 비디오의 파티션을 처리하는 것은, 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것; 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것, CTU를 인코딩하는 것을 포함하고, CTU를 인코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, TU의 계수값을 CTU에서의 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 동작; 및 파티션의 이진 표현을 비디오의 비트 스트림에 인코딩하는 동작을 포함한다.
다른 하나의 예에서, 시스템으로서, 처리 기기 및 처리 기기에 통신적으로 연결된 비 일시적 컴퓨터 판독 가능한 매체를 포함한다. 처리 기기는 비 일시적 컴퓨터 판독 가능한 매체에 저장된 프로그램 코드를 실행함으로써, 복수 개의 동작을 실행하도록 구성되고, 복수 개의 동작은, 비디오의 파티션을 액세스하는 동작 - 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ; 비디오의 파티션을 처리하여, 파티션의 이진 표현을 생성하며, 상기 비디오의 파티션을 처리하는 것은, 파티션에서의 복수 개의 CTU 중의 각 CTU의 경우, CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것, 병렬 코딩이 인에이블되고 CTU는 파티션에서의 현재 CTU 행의 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것, CTU를 인코딩하는 것을 포함하고, CTU를 인코딩하는 것은, 히스토리 카운터에 기반하여, CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것, 계산된 라이스 파라미터에 기반하여, TU의 계수값을 CTU에서의 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 동작; 및 파티션의 이진 표현을 비디오의 비트 스트림에 인코딩하는 동작을 포함한다.
이러한 설명성 실시예를 언급하는 것은 본 발명을 제한하거나 한정하기 위한 것이 아니라, 예를 제공하여 본 발명을 이해하는데 도움을 주기 위해서이다. 구체적인 실시형태에서 다른 실시예를 논의하였으며, 구체적인 실시형태에서 추가적인 설명을 제공한다.
도면을 참조하여 아래의 구체적인 실시형태를 열독할 경우, 본 발명의 특징, 실시예 및 장점을 더욱 잘 이해할 수 있다.
도 1은 본 문에서 제출한 실시예를 구현하도록 구성된 비디오 인코더의 예의 블록도를 도시한다.
도 2는 본 문에서 제출한 실시예를 구현하도록 구성된 비디오 디코더의 예의 블록도를 도시한다.
도 3은 본 발명의 일부 실시예를 따른 비디오 중 픽쳐의 코딩 트리 유닛 분할의 예를 설명한다.
도 4는 본 발명의 일부 실시예를 따른 코딩 트리 유닛의 코딩 유닛 분할의 예를 설명한다.
도 5는 코딩 블록의 예를 설명하고, 여기서, 기설정된 순서에 따라 코딩 블록의 요소를 처리한다.
도 6은 변환 유닛 경계 부근에 위치한 계수의 로컬 합 변수를 계산하기 위한 템플릿 패턴의 예를 설명한다.
도 7은 타일의 예를 설명하고, 여기서, 상기 타일에 대해 파면 병렬 프로세싱을 인에이블한다.
도 8은 본 발명의 일부 실시예를 따른 프레임, 상기 프레임에 포함된 타일 및 코딩 트리 유닛의 예를 설명하고, 여기서, 상기 프레임, 상기 프레임에 포함된 타일 및 코딩 트리 유닛에 대해 히스토리 카운터를 계산한다.
도 9는 본 발명의 일부 실시예를 따른 비디오의 파티션을 인코딩하기 위한 과정의 예를 설명한다.
도 10은 본 발명의 일부 실시예를 따른 비디오의 파티션을 디코딩하기 위한 과정의 예를 설명한다.
도 11은 본 발명의 일부 실시예를 따른 비디오의 파티션을 인코딩하기 위한 과정의 다른 하나의 예를 설명한다.
도 12는 본 발명의 일부 실시예를 따른 비디오의 파티션을 디코딩하기 위한 과정의 다른 하나의 예를 설명한다.
도 13은 본 발명의 일부 실시예를 구현하는데 사용될 수 있는 컴퓨팅 시스템의 예를 설명한다.
각 실시예는 비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스(Rice) 파라미터 유도를 제공한다. 위에서 논의한 바와 같이, 점점 더 많은 비디오 데이터가 생성, 저장 및 전송된다. 유리한 것은 비디오 코딩 기술의 효율을 향상시킴으로써, 비디오 디코딩의 시각적 품질을 손상하지 않는 전제 하에 더욱 적은 데이터를 사용하여 비디오를 나타낸다. 코딩 효율을 향상시키는 하나의 방식은 엔트로피 코딩을 통해, 가능한 적은 비트를 사용하여 처리된 후의 비디오 샘플을 이진 비트 스트림으로 압축하는 것이다. 다른 하나의 측면에 있어서, 비디오는 일반적으로 대량의 데이터를 포함하므로, 유익한 것은 코딩(인코딩 및 디코딩) 기간의 처리 시간을 감소시키는 것이다. 이를 위해, 비디오 인코딩 및 디코딩에서 병렬 프로세싱(Parallel Processing)을 사용할 수 있다.
엔트로피 코딩(entropy coding)에서, 비디오 샘플을 이진 bin으로 이진화되고, 컨텍스트 적응 이진 산술 코딩(CABAC)과 같은 코딩 알고리즘은 추가로 bin을 비트로 압축할 수 있다. 이진화는, 다기능 비디오 코딩(VVC) 규범에서 규정된 트렁케이티드 라이스(TR) 및 제한된 k차 지수 골롬(EGk) 이진화 과정의 조합에서 사용되는 라이스 파라미터와 같은 이진화 파라미터를 계산해야 한다. 코딩 효율을 향상시키 위해, 히스토리 기반한 라이스 파라미터 유도를 사용한다. 이러한 히스토리 기반한 라이스 파라미터 유도에서, 히스토리 카운터(StatCoeff로 나타냄)에 기반하여 파티션(예컨대 픽쳐, 슬라이스(slice) 또는 타일(tile))의 현재 코딩 트리 유닛(CTU)에서의 변환 유닛(TU)의 라이스 파라미터를 유도하며, 상기 히스토리 카운터는 파티션에서의 현재 CTU 및 이전 CTU에서의 이전 TU 중의 계수에 따라 계산된다. 다음, 히스토리 카운터를 사용하여 대체 변수(HistValue로 나타냄)를 유도하여, 라이스 파라미터를 유도한다. 히스토리 카운터는 TU를 처리할 경우 업데이트될 수 있다. 일부 예에서, 히스토리 카운터가 이미 업데이트되어도, TU의 대체 변수는 여전히 동일하게 유지된다.
히스토리 카운터를 계산하기 위한 파티션에서의 이전 CTU와 현재 CTU 사이의 의존성은 병렬 프로세싱의 사용과 서로 충돌되거나, 병렬 프로세싱의 사용을 한정하거나 심지어 병렬 프로세싱의 사용을 저해할 수 있음으로써, 불안정하거나 저효율적인 비디오 코딩을 초래할 수 있다. 본 문에서 설명된 다양한 실시예는 아래와 같이 이러한 문제를 해결하며, 즉 파티션에서의 일부 CTU 사이의 의존성을 감소하거나 소거하는 것을 통해, 병렬 프로세싱을 인에이블하여 비디오 처리 과정을 가속할 수 있도록 하거나, 충돌이 발생하기 전 검출하여 충돌을 피할 수 있다. 아래와 같은 비 한정적인 예를 제공하여 일부 실시예를 소개한다.
일 실시예에서, 히스토리 카운터를 계산할 경우의 상이한 CTU 행에서의 CTU 사이의 의존성을 제거함으로써, 병렬 프로세싱과의 의존성 충돌을 소거한다. 예컨대, 파티션의 각 CTU 행에 대해 히스토리 카운터를 재초기화할 수 있다. CTU 행에서의 첫 번째 CTU의 라이스 파라미터를 계산하기 전, 히스토리 카운터를 초기값으로 설정할 수 있다. 후속의 히스토리 카운터는 동일한 CTU 행에서의 이전 TU 중의 히스토리 카운터값에 기반하여 계산될 수 있다. 이로써, 히스토리 기반한 라이스 파라미터 유도에서, CTU의 의존성은 동일한 CTU 행 내에 제한되어, 상이한 CTU 행에서의 병렬 프로세싱을 간섭하지 않는 동시에, 히스토리 기반한 라이스 파라미터 유도를 통해 구현되는 코딩 게인으로부터 여전히 이득을 얻는다. 또한, 히스토리 기반한 라이스 파라미터 유도 과정이 간소화되므로, 계산 복잡도가 저하된다.
다른 하나의 실시예에서, 히스토리 카운터를 계산할 경우 CTU 사이의 의존성은 병렬 프로세싱 중 CTU 사이의 의존성과 일치하다. 예컨대, 파티션의 CTU 행에서 병렬 코딩을 구현하고, 두 개의 연속적인 CTU 행 사이에는 N-CTU 지연이 존재할 수 있다. 다시 말해서, 이전 하나의 CTU 행에서의 N 개의 CTU를 처리한 후, CTU 행에 대한 처리를 시작한다. 상기 시나리오에서, 이전 하나의 CTU 행에서의 앞 N 개 또는 더욱 적은 CTU 중의 샘플에 기반하여 CTU 행의 히스토리 카운터를 계산할 수 있다. 이는 스토리지-동기화 과정을 통해 구현될 수 있다. CTU 행의 첫 번째 CTU 에서의 마지막 하나의 TU를 처리한 후, 히스토리 카운터를 스토리지 변수에 저장할 수 있다. 다음, 향후 CTU 행의 첫 번째 CTU에서의 첫 번째 TU를 처리하기 전, 히스토리 카운터와 스토리지 변수에서의 저장값을 동기화할 수 있다.
일부 예에서, 대안적인 히스토리 기반한 라이스 파라미터 유도를 사용한다. 이러한 대안적인 히스토리 기반한 라이스 파라미터 유도에서, 일단 TU를 처리할 경우 히스토리 카운터 StatCoeff를 업데이트하면, 대체 변수 HistValue를 업데이트한다. 병렬 코딩과의 의존성 충돌을 피하기 위해, 유사하게 히스토리 카운터를 계산할 경우의 CTU 사이의 의존성을 N 개의 CTU를 초과하지 않도록 제한할 수 있다. 마찬가지로, 스토리지-동기화 과정을 구현할 수 있다. CTU 행의 첫 번째 CTU에서의 마지막 하나의 TU를 처리한 후, 히스토리 카운터 및 대체 변수 각각은 스토리지 변수에 저장될 수 있다. 다음, 향후 CTU 행의 첫 번째 CTU에서의 첫 번째 TU를 처리하기 전, 히스토리 카운터 및 대체 변수와, 상응한 스토리지 변수에서의 저장값을 동기화할 수 있다.
이로써, 히스토리 카운터를 계산할 경우 두 개의 연속적인 CTU 행에서의 CTU 사이의 의존성은 병렬 코딩을 실행할 경우 CTU 사이의 의존성보다 크지 않도록 제한된다(즉, 병렬 코딩을 실행할 경우의 CTU 사이의 의존성과 정렬된다). 따라서, 히스토리 카운터 계산은 병렬 프로세싱을 간섭하지 않고, 동시에 히스토리 기반한 라이스 파라미터 유도를 통해 구현되는 코딩 게인(coding gain)으로부터 연전히 이득을 얻는다.
대안적으로, 병렬 프로세싱 및 히스토리 기반한 라이스 파라미터 유도가 비트 스트림에서 공존하는 것을 방지한다. 예컨대, 비디오 인코더는 병렬 프로세싱을 인에이블하는지 여부를 결정할 수 있다. 병렬 프로세싱을 인에이블하면, 히스토리 기반한 라이스 파라미터 유도를 디스에이블하고; 그렇지 않은 경우, 히스토리 기반한 라이스 파라미터 유도를 인에이블한다. 유사하게, 비디오 인코더가 히스토리 기반한 라이스 파라미터 유도를 인에이블하는 것으로 결정하면, 병렬 프로세싱을 디스에이블하고, 그 반대의 경우도 마찬가지이다.
위에서 논의된 바와 같이 결정된 라이스 파라미터를 사용하여, 비디오 인코더는 예측 잔차 데이터(prediction residual data)(예컨대 잔차의 양자화 변환 계수(quantized transform coefficients of residuals))를 이진 bin으로 이진화하고, 엔트로피 코딩 알고리즘을 사용하여 bin을 비디오 비트 스트림에 포함되는 비트로 추가로 압축시킬 수 있다. 디코더측에서, 디코더는 비트 스트림을 이진 bin으로 역방향 디코딩하고, 상기 임의의 방법 또는 방법의 임의의 조합을 사용하여 라이스 파라미터를 결정한 다음, 이진 bin에 따라 계수를 결정할 수 있다. 계수에 대해 약양자화 및 역변환을 추가로 수행하여, 디스플레이에 사용되는 비디오 블록을 재구성할 수 있다.
일부 실시예에서, 비디오의 샘플의 비트 깊이(bit depth)(예컨대, 히스토리 카운터 StatCoeff의 초기값을 결정하기 위한 비트 깊이)는 시퀀스 파라미터 세트(SPS) 신택스 요소 sps_bitdepth_minus8에 따라 결정될 수 있다. SPS 신택스 요소 sps_bitdepth_minus8의 값은 0 내지 8의 범위 내에 있다. 유사하게, 디코딩 픽쳐를 저장하기 위한 디코딩 픽쳐 버퍼(DPB)의 크기는 비디오 파라미터 세트(VPS) 신택스 요소 vps_ols_dpb_bitdepth_minus8에 기반하여 결정될 수 있다. VPS 신택스 요소 vps_ols_dpb_bitdepth_minus8의 값은 0 내지 8의 범위 내에 있다. 결정된 DPB 크기에 따라, DPB에 저장 공간에 할당할 수 있다. 결정된 비트 깊이 및 DPB는 비디오 비트 스트림을 픽쳐로 디코딩하는 전체 과정에서 사용될 수 있다.
본 문에서 설명된 바와 같이, 일부 실시예는 히스토리 기반한 라이스 파라미터 유도와 병렬 코딩을 조정하는 것을 통해 비디오 코딩 효율 및 계산 효율에 대한 개진을 제공한다. 이러함으로써, 히스토리 기반한 라이스 파라미터 유도와 병렬 코딩 사이의 충돌을 피할 수 있음으로써, 코딩 과정의 안정성을 향상시킬 수 있다. 더 나아가, 히스토리 기반한 라이스 파라미터 유도 중 CTU 사이의 의존성을 병렬 코딩에서의 의존성보다 크지 않도록 제한하는 것을 통해, 코딩 과정의 계산 효율을 희생시키지 않는 전제 하에 히스토리 기반한 라이스 파라미터 유도를 통해 코딩 게인을 연전히 구현할 수 있다. 이러한 기술은 미래 비디오 코딩 표준에서의 유효한 코딩 툴이 될 수 있다.
도면을 참조하면, 도 1은 본 문에서 제출한 실시예를 구현하도록 구성된 비디오 인코더(100)의 예의 블록도를 도시한다. 도 1에 도시된 예에서, 비디오 인코더(100)는 파티션(partition) 모듈(112), 변환(transform) 모듈(114), 양자화 (quantization) 모듈(115), 역양자화 (inverse quantization) 모듈(118), 역변환(inverse transform) 모듈(119), 인루프 필터(in-loop filter) 모듈(120), 인트라 예측 (intra prediction) 모듈(126), 인터 예측 (inter prediction)모듈(124), 모션 추정(motion estimation) 모듈(122), 디코딩 픽쳐 버퍼(decoded picture buffer)(130) 및 엔트로피 코딩(entropy coding) 모듈(116)을 포함한다.
비디오 인코더(100)의 입력은 픽쳐(프레임 또는 이미지로도 지칭됨) 시퀀스를 포함하는 입력 비디오(102)이다. 블록에 기반한 비디오 인코더에서, 각 픽쳐에 대해, 비디오 인코더(100)는 파티션 모듈(112)을 사용하여 픽쳐를 블록(104)으로 분할하고, 각 블록은 복수 개의 픽셀(pixel)을 포함한다. 블록은 매크로 블록(macroblock), 코딩 트리(coding tree) 유닛, 코딩 유닛, 예측 유닛 및 예측 블록 중 적어도 하나이다. 하나의 픽쳐는 상이한 크기의 블록을 포함할 수 있고, 비디오의 상이한 픽쳐의 블록 파티션도 상이할 수 있다. 각 블록은 상이한 예측(예컨대 인트라 예측 또는 인터 예측 또는 인트라 예측 및 인터 예측의 혼합 예측)을 사용하여 인코딩될 수 있다.
일반적으로, 비디오 신호의 첫 번째 픽쳐는 인트라 예측 픽쳐이고, 상기 픽쳐는 다만 인트라 예측을 사용하여 인코딩된다. 인트라 예측 모드에서, 동일한 픽쳐로부터의 데이터만 사용하여 픽쳐의 블록을 예측한다. 인트라 예측의 픽쳐는 다른 픽쳐로부터의 정보가 존재하지 않는 경우에 디코딩될 수 있다. 인트라 예측을 실행하기 위해, 도 1에 도시된 비디오 인코더(100)는 인트라 예측 모듈(126)을 사용할 수 있다. 인트라 예측 모듈(126)은 동일한 픽쳐의 인접된 블록의 재구성 블록(136)에서의 재구성 샘플을 사용하여 인트라 예측 블록(예측 블록(134))을 생성하도록 구성된다. 블록에 대해 선택된 인트라 예측 모드에 따라 인트라 예측을 실행한다. 다음, 비디오 인코더(100)는 블록(104)과 인트라 예측 블록(134) 사이의 차이를 계산한다. 상기 차이를 잔차 블록(106)으로 지칭한다.
블록으로부터 리던던시(redundancy)를 추가로 제거하기 위해, 변환 모듈(114)은 블록에서의 샘플에 대해 변환을 적용하는 것을 통해 잔차 블록(106)을 변환 도메인에 변환한다. 변환의 예는 이산 코사인 변환(DCT) 또는 이산 사인 변환(DST)을 포함하지만 이에 한정되지 않는다. 변환된 후의 값을 변환 계수로 지칭할 수 있고, 변환 계수는 변환 도메인에서의 잔차 블록으로 나타낸다. 일부 예에서, 잔차 블록은, 변환 모듈(114)을 통해 변환될 필요가 없이 직접 양자화될 수 있다. 이를 변환 스킵 모드로 지칭한다.
비디오 인코더(100)는 양자화 모듈(115)을 추가로 사용하여 변환 계수를 양자화하여 양자화 계수를 획득할 수 있다. 양자화는 샘플을 양자화 스텝 크기로 나눈 다음, 반올림하는 것을 포함하지만, 역양자화는 양자화 값에 양자화 스텝 크기를 곱하는 것을 포함한다. 이러한 양자화 과정을 스칼라 양자화(scalar quantization)로 지칭한다. 양자화는 (이미 변환되거나 변환되지 않은) 비디오 샘플의 동적 범위를 감소하여, 더욱 적은 비트를 사용하여 비디오 샘플을 나타내도록 하기 위한 것이다.
블록 내의 계수/샘플의 양자화는 독립적으로 수행될 수 있고, 이러한 양자화 방법은 일부 기존의 비디오 압축 표준(예컨대 H.264 및 HEVC)에서 사용된다. N×M 블록의 경우, 특정 스캔 순서를 사용하여 블록의 2D 계수를 1-D 어레이로 전환하여, 계수 양자화 및 코딩에 사용할 수 있다. 블록 내의 계수의 양자화는 스캔 순서 정보를 사용할 수 있다. 예컨대, 블록 중 주어진 계수의 양자화는 스캔 순서를 따른 이전 양자화 값의 상태에 따라 결정된다. 코딩 효율을 추가로 향상시키기 위해, 하나보다 많은 양자화기를 사용할 수 있다. 어느 양자화기를 사용하여 현재 계수를 양자화할지는, 인코딩/디코딩 스캔 순서에 따라 현재 계수 이전에 위치한 정보에 의해 결정된다. 이러한 양자화 방법을 종속 양자화(dependent quantization)로 지칭한다.
양자화 스텝 크기를 사용하여 양자화 정도를 조절할 수 있다. 예컨대, 스칼라 양자화의 경우, 상이한 양자화 스텝 크기를 적용하여 비교적 정밀하거나 비교적 조악한 양자화를 구현할 수 있다. 비교적 작은 양자화 스텝 크기는 비교적 정밀한 양자화에 대응되고, 비교적 큰 양자화 스텝 크기는 비교적 조악한 양자화에 대응된다. 양자화 스텝 크기는 양자화 파라미터(quantization parameter, QP)에 의해 지시된다. 비디오의 인코딩 비트 스트림에서 양자화 파라미터를 제공하여, 비디오 디코더로 하여금 동일한 양자화 파라미터를 적용하여 디코딩을 수행할 수 있도록 한다.
다음, 엔트로피 코딩 모듈(116)을 통해 양자화 샘플을 코딩하여, 비디오 신호의 크기를 추가로 감소한다. 엔트로피 코딩 모듈(116)은 엔트로피 코딩 알고리즘을 양자화 샘플에 적용하도록 구성된다. 일부 예에서, 양자화 샘플은 이진 bin으로 이진화되고, 인코딩 알고리즘은 추가로 이진 bin을 비트로 압축한다. 이진화 방법의 예는 트렁케이티드 라이스(TR) 및 제한된 k차 지수 골롬(EGk) 이진화를 포함하지만 이에 한정되지 않는다. 코딩 효율을 향상시키기 위해, 히스토리 기반한 라이스 파라미터 유도 방법을 사용하고, 여기서, 변환 유닛(TU)에 대해 유도된 라이스 파라미터는 이전 TU로부터 획득되거나 업데이트된 변수에 기반한다. 엔트로피 코딩 알고리즘의 예는 가변 길이 코딩(VLC) 방안, 컨텍스트 적응 VLC 방안(CAVLC), 산술 코딩 방안, 이진화, 컨텍스트 적응 이진 산술 코딩(CABAC), 신택스에 기반한 컨텍스트 적응 이진 산술 코딩(SBAC), 확률 구간 분할 엔트로피(PIPE) 코딩 또는 다른 엔트로피 코딩 기술을 포함하지만 이에 한정되지 않는다. 엔트로피 코딩 데이터는 출력 인코딩 비디오(132)의 비트 스트림(bitstream)에 추가된다.
위에서 논의된 바와 같이, 픽쳐의 블록의 인트라 예측에서 인접된 블록으로부터의 재구성 블록(136)을 사용한다. 블록의 재구성 블록(136)을 생성하는 것은 상기 블록의 재구성 잔차를 계산하는데 관한 것이다. 블록의 양자화 잔차에 역양자화 및 역변환을 적용하여 재구성 잔차를 결정할 수 있다. 역양자화 모듈(118)은 양자화 샘플에 역양자화를 적용하여 탈양자화 계수를 획득하도록 구성된다. 역양자화 모듈(118)은 양자화 모듈(115)과 동일한 양자화 스텝 크기를 사용하는 것을 통해 양자화 모듈(115)에 적용된 양자화 방안의 역방안을 적용한다. 역변환 모듈(119)은 변환 모듈(114)에 적용된 변환의 역변환을, 역 DCT 또는 역 DST와 같은 탈양자화된 샘플에 적용하도록 구성된다. 역변환 모듈(119)의 출력은 픽셀 도메인에서의 블록의 재구성 잔차이다. 재구성 잔차는 블록의 예측 블록(134)에 추가되어 픽셀 도메인에서의 재구성 블록(136)을 획득할 수 있다. 이미 스킵 변환된 블록의 경우, 역변환 모듈(119)은 이러한 블록에 적용되지 않는다. 탈양자화 샘플은 블록의 재구성 잔차이다.
인터 예측 또는 인트라 예측을 사용하여 제1 인트라 예측 픽쳐 이후의 향후 픽쳐에서의 블록을 코딩할 수 있다. 인터 예측에서, 픽쳐에서의 블록의 예측은 하나 또는 복수 개의 이전 인코딩된 비디오 픽쳐로부터 얻은 것이다. 인터 예측을 실행하기 위해, 비디오 인코더(100)는 인터 예측 모듈(124)을 사용한다. 인터 예측 모듈(124)은 모션 추정 모듈(122)에 의해 제공된 모션 추정에 기반하여 블록에 대해 모션 보상을 실행하도록 구성된다.
모션 추정 모듈(122)은 현재 픽쳐의 현재 블록(104)과 디코딩 참조 픽쳐(108)를 비교하여 모션 추정을 수행한다. 디코딩 참조 픽쳐(108)는 디코딩 픽쳐 버퍼(130)에 저장된다. 모션 추정 모듈(122)은 디코딩 참조 픽쳐(108)로부터 현재 블록과 가장 매칭되는 참조 블록을 선택한다. 모션 추정 모듈(122)은 참조 블록의 위치(예컨대 x, y 좌표)와 현재 블록의 위치 사이의 오프셋을 추가로 식별한다. 상기 오프셋은 모션 벡터(motion vector, MV)로 지칭되고 인터 예측 모듈(124)에 제공된다. 일부 경우, 복수 개의 디코딩 참조 픽쳐(108)에서의 블록에 대해 복수 개의 참조 블록을 식별한다. 따라서, 복수 개의 모션 벡터를 생성하고 모션 벡터를 인터 예측 모듈(124)에 제공한다.
인터 예측 모듈(124)은 모션 벡터 및 다른 인터 예측 파라미터를 사용하여 모션 보상을 실행하여, 현재 블록(즉, 인터 예측 블록(134))의 예측을 생성한다. 예컨대, 모션 벡터에 기반하여, 인터 예측 모듈(124)은 대응되는 참조 픽쳐에서 모션 벡터가 가리킨 예측 블록을 로케이팅할 수 있다. 하나보다 많은 예측 블록이 존재하면, 이러한 예측 블록과 일부 가중치를 조합하여 현재 블록의 예측 블록(134)을 생성한다.
인터 예측 블록의 경우, 비디오 인코더(100)는 블록(104)에서 인터 예측 블록(134)을 감하여 잔차 블록(106)을 생성할 수 있다. 위에서 논의된 바와 같은 인트라 예측 블록의 잔차와 동일한 방식에 따라 잔차 블록(106)을 변환, 양자화 및 엔트로피 코딩할 수 있다. 마찬가지로, 인터 예측 블록의 재구성 블록(136)은, 잔차에 대해 역양자화 및 역변환을 수행한 다음, 대응되는 예측 블록(134)과 조합하는 것을 통해 획득될 수 있다.
모션 추정에 사용되는 디코딩 픽쳐(108)를 획득하기 위해, 인루프 필터 모듈(120)을 통해 재구성 블록(136)을 처리한다. 인루프 필터 모듈(120)은 픽셀 전환으로 하여금 스무딩하도록 구성됨으로써, 비디오 품질이 향상된다. 인루프 필터 모듈(120)은, 디-블록 필터(de-blocking filter), 또는 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터, 또는 적응 인루프 필터(adaptive loop filter, ALF) 등과 같은 하나 또는 복수 개의 인루프 필터를 구현하도록 구성될 수 있다.
도 2는 본 문에서 제출한 실시예를 구현하도록 구성된 비디오 디코더(200)의 예를 설명한다. 비디오 디코더(200)는 비트 스트림에서의 인코딩 비디오(202)를 처리하고 디코딩 픽쳐(208)를 생성한다. 도 2에 도시된 예에서, 비디오 디코더(200)는 엔트로피 디코딩 모듈(216), 역양자화 모듈(218), 역변환 모듈(219), 인루프 필터 모듈(220), 인트라 예측 모듈(226), 인터 예측 모듈(224) 및 디코딩 픽쳐 버퍼(230)를 포함한다.
엔트로피 디코딩 모듈(216)은 인코딩 비디오(202)의 엔트로피 디코딩을 실행하도록 구성된다. 엔트로피 디코딩 모듈(216)은 양자화 계수, 인트라 예측 파라미터와 인터 예측 파라미터를 포함하는 코딩 파라미터 및 다른 정보를 디코딩한다. 일부 예에서, 엔트로피 디코딩 모듈(216)은 인코딩 비디오(202)의 비트 스트림을 이진 표현으로 디코딩한 다음, 이진 표현을 계수의 양자화 레벨로 전환한다. 다음, 엔트로피 디코딩의 계수는 역양자화 모듈(218)을 통해 역양자화된 다음, 역변환 모듈(219)을 통해 픽셀 도메인으로 역변환된다. 역양자화 모듈(218) 및 역변환 모듈(219)의 기능은 각각 위에서 도 1을 참조하여 설명된 역양자화 모듈(118) 및 역변환 모듈(119)과 유사하다. 역변환의 잔차 블록은 대응되는 예측 블록(234)에 추가되어 재구성 블록(236)을 생성할 수 있다. 이미 스킵 변환된 블록의 경우, 역변환 모듈(219)은 이러한 블록에 적용되지 않는다. 역양자화 모듈(118)에 의해 생성된 탈양자화 샘플은 재구성 블록(236)을 생성하는데 사용된다.
특정 블록의 예측 블록(234)은 블록의 예측 모드에 기반하여 생성된다. 블록의 코딩 파라미터가 블록에 대해 인트라 예측을 수행하도록 지시하면, 동일한 픽쳐에서의 참조 블록의 재구성 블록(236)은 인트라 예측 모듈(226)에 피드되어, 블록의 예측 블록(234)을 생성한다. 블록의 코딩 파라미터가 블록에 대해 인터 예측을 수행하도록 지시하면, 인터 예측 모듈(224)을 통해 예측 블록(234)을 생성한다. 인트라 예측 모듈(226) 및 인터 예측 모듈(224)의 기능은 각각 도 1의 인트라 예측 모듈(126) 및 인터 예측 모듈(124)과 유사하다.
위에서 도 1에 대해 논의한 바와 같이, 인터 예측은 하나 또는 복수 개의 참조 픽쳐에 관한 것이다. 비디오 디코더(200)는 인루프 필터 모듈(220)을 참조 픽쳐의 재구성 블록에 적용하는 것을 통해 참조 픽쳐의 디코딩 픽쳐(208)를 생성한다. 디코딩 픽쳐(208)는 디코딩 픽쳐 버퍼(230)에 저장되어, 인터 예측 모듈(224)에 의해 사용되고 또한 출력에 사용된다.
도 3을 참조하면, 도 3은 본 발명의 일부 실시예를 따른 비디오에서의 픽쳐의 코딩 트리 유닛 분할의 예를 설명한다. 위에서 도 1 및 도 2에 대해 논의한 바와 같이, 비디오의 픽쳐를 인코딩하기 위해, 도 3에 도시된 바와 같이, 픽쳐를 VVC에서의 CTU(코딩 트리 유닛)(302)와 같은 블록으로 분할한다. 예컨대, CTU(302)는 128×128 픽셀의 블록일 수 있다. 일정한 순서(예컨대 도 3에 도시된 순서)에 따라 CTU를 처리한다. 일부 예에서, 도 4에 도시된 바와 같이, 픽쳐에서의 각 CTU(302)는 하나 또는 복수 개의 CU(코딩 유닛)(402)로 분할될 수 있고, CU(402)는 예측 유닛 또는 변환 유닛(TU)으로 추가로 분할되어 예측 및 변환에 사용될 수 있다. 코딩 방안에 따라, CTU(302)는 상이한 방식으로 CU(402)로 분할될 수 있다. 예컨대, VVC에서, CU(402)는 직사각형 또는 정사각형일 수 있고, 예측 유닛 또는 변환 유닛으로 추가로 분할되지 않은 경우에 코딩될 수 있다. 각 CU(402)는 루트 CTU(302)만큼 크거나, 루트 CTU(302)의 세분화일 수 있고, 4×4 블록만큼 작을 수 있다. 도 4에 도시된 바와 같이, VVC에서 CTU(302)를 CU(402)로 분할하는 것은, 사진 트리 분할 또는 이진 트리 분할 또는 삼진 트리 분할일 수 있다. 도 4에서, 실선은 사진 트리 분할을 지시하고, 점선은 이진 트리 또는 삼진 트리 분할을 지시한다.
위에서 도 1 및 도 2에 대해 논의한 바와 같이, 양자화는 비디오 신호에서의 블록의 요소의 동적 범위를 감소하는데 사용되어, 더욱 작은 비트를 사용하여 비디오 신호를 나타내도록 한다. 일부 예에서, 양자화하기 전, 블록의 특정 위치에 위치한 요소를 계수로 지칭한다. 양자화한 후, 계수의 양자화 값을 양자화 레벨 또는 레벨로 지칭한다. 양자화는 일반적으로 양자화 스텝 크기(quantization step size)로 나눈 다음, 반올림하는 것을 포함하지만, 역양자화는 양자화 스텝 크기를 곱하는 것을 포함한다. 이러한 양자화 과정은 또한 스칼라 양자화로 지칭된다. 블록 내의 계수의 양자화는 독립적으로 수행될 수 있고, 이러한 독립적인 양자화 방법은 일부 기존의 비디오 압축 표준(예컨대 H.264, HEVC 등)에서 사용된다. 다른 예에서, 예컨대 VVC에서, 종속 양자화를 사용한다.
N×M 블록의 경우, 특정 스캔 순서를 사용하여 블록의 2-D 계수를 1-D 어레이로 전환하여, 계수 양자화 및 코딩에 사용할 수 있고, 동일한 스캔 순서는 인코딩 및 디코딩에 사용된다. 도 5는 코딩 블록(예컨대 변환 유닛(TU))의 예를 도시하고, 여기서, 기설정된 스캔 순서를 이용하여 코딩 블록의 계수를 처리한다. 상기 예에서, 코딩 블록(500)의 크기는 8×8이고, 상기 처리는 L0의 오른쪽 아래 모서리 위치로부터 시작하여 L63의 왼쪽 위 모서리 위치에서 종료된다. 블록(500)이 변환 블록이면, 도 5에 도시된 기설정된 순서는 최고 주파수로부터 시작하여, 최저 주파수까지이다. 일부 예에서, 블록에 대한 처리(예컨대 양자화 및 이진화)는 기설정된 스캔 순서에 따라 블록의 첫 번째 비 제로 요소로부터 시작한다. 예컨대, L0 위치로부터 L17 위치의 계수가 모두 0이고 L18 위치의 계수가 0이 아니면, 상기 처리는 L18 위치의 계수로부터 시작하고, 스캔 순서에 따라 L18 이후의 각 계수에 대해 상기 처리를 수행한다.
잔차 코딩(residual Coding)
비디오 코딩에서, 잔차 코딩은 양자화 레벨을 비트 스트림으로 전환하는데 사용된다. 양자화한 후, N×M 변환 유닛(TU) 코딩 블록의 경우, N×M 개의 양자화 레벨이 존재한다. 상기 N×M 개의 레벨은 0이거나 0이 아닌 값일 수 있다. 레벨이 이진 형태인 것이 아니면, 비 제로 레벨은 이진 bin으로 추가로 이진화된다. 컨텍스트 적응 이진 산술 코딩(CABAC)은 bin을 비트로 추가로 압축할 수 있다. 또한, 컨텍스트 모델링에 기반한 코딩 방법이 두 가지 존재한다. 구체적으로, 그 중의 한 가지 방법은, 인접된 코딩 정보에 따라 컨텍스트 모델을 적응적으로 업데이트한다. 이러한 방법을 컨텍스트 코딩 방법으로 지칭하고, 이러한 방식으로 코딩된 bin을 컨텍스트 코딩 bin으로 지칭한다. 반면, 다른 하나의 방법은, 1 또는 0의 확률이 시종 50%인 것으로 가정하므로, 고정적인 컨텍스트 모델링을 시종 사용하고, 적응을 수행하지 않는다. 이러한 방법을 바이패스 방법으로 지칭하고, 이러한 방법을 통해 코딩된 bin을 바이패스 bin으로 지칭한다.
VVC에서의 정규 잔차 코딩(RRC) 블록의 경우, 마지막 하나의 비 제로 레벨의 위치를 코딩 스캔 순서에 따라 마지막 하나의 비 제로 레벨의 위치로 정의한다. 마지막 하나의 비 제로 레벨의 2D 좌표(last_sig_coeff_x 및 last_sig_coeff_y)의 표현은 총 4 개의 프리픽스 및 서픽스 신택스 요소를 포함하고, 이들은 각각 last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix이다. 먼저 컨텍스트 코딩 방법을 사용하여 신택스 요소 last_sig_coeff_x_prefix 및 last_sig_coeff_y_prefix를 코딩한다. last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix가 존재하면, 바이패스 방법을 사용하여 last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix를 코딩한다. RRC 블록은 사전 정의된 복수 개의 서브 블록으로 구성될 수 있다. 신택스 요소 sb_coded_flag는 현재 서브 블록의 모든 레벨이 0과 같은지 여부를 지시하기 위한 것이다. sb_coded_flag가 1과 같으면, 현재 서브 블록에 적어도 하나의 비 제로 계수가 존재한다. sb_coded_flag가 0과 같으면, 현재 서브 블록에서의 모든 계수는 모두 0이다. 그러나, 코딩 스캔 순서에 따라 last_sig_coeff_x 및 last_sig_coeff_y로부터, 마지막 하나의 비 제로 레벨을 구비하는 마지막 하나의 비 제로 서브 블록의 sb_coded_flag는 1이고, 비트 스트림에 코딩되지 않는 것으로 유도된다. 또한, DC 위치를 포함하는 왼쪽 위 서브 블록의 sb_coded_flag는 1이고, 비트 스트림에 코딩되지 않는 것으로 유도된다. 컨텍스트 코딩 방법을 통해 비트 스트림에서의 sb_coded_flag의 신택스 요소를 코딩한다. RRC는 마지막 하나의 비 제로 서브 블록으로부터 시작하여, 위에서 도 5에 대해 논의한 바와 같은 역방향 코딩 스캔 순서로 서브 블록별로 점차 코딩한다.
최악의 경우의 쓰루풋을 보장하기 위해, 미리 정의된 값 remBinsPassl을 사용하여 컨텍스트 코딩 bin의 최대 개수를 제한한다. 하나의 서브 블록 내에서, RRC는 역방향 코딩 스캔 순서를 사용하여 각 위치의 레벨을 코딩한다. remBinsPassl가 4보다 크면, 현재 레벨을 인코딩할 경우, 먼저 명칭이 sig_coeff_flag인 플래그를 비트 스트림에 코딩하여, 레벨이 0인지 여부를 지시한다. 레벨이 0이 아니면, abs_level_gtx_flag[n][0]을 코딩하여 절대 레벨이 1인지 1보다 큰지를 지시하고, 여기서 n은 서브 블록 내의 현재 위치가 스캔 순서를 따른 인덱스이다. 절대 레벨이 1보다 크면, par_level_flag를 코딩하여 레벨이 VVC에서 홀수인지 짝수인지를 지시하고, abs_level_gtx_flag[n][l]가 존재한다. 플래그 par_level_flag 및 abs_level_gtx_flag[n][l]는 또한 같이 사용되어 레벨이 2, 또는 3, 또는 3보다 큰 것을 지시한다. 상기 각 신택스 요소를 컨텍스트 코딩된 bin으로 코딩한 후, remBinsPassl의 값은 1 감소된다.
절대 레벨이 3보다 크거나 remBinsPassl의 값이 4보다 크지 않으면, 컨텍스트 코딩 방법을 통해 전술한 bin을 코딩한 후, 다른 두 개의 신택스 요소 abs_remainder 및 dec_abs_level을 바이패스 코딩 bin으로 코딩하여 나머지 레벨에 사용한다. 또한, 블록 내의 각 레벨의 심볼을 코딩하여, 양자화 레벨을 나타내고, 블록 내의 각 레벨의 심볼을 바이패스 코딩 bin으로 코딩한다.
다른 하나의 잔차 코딩 방법은 abs_level_gtxX_flag 및 나머지 레벨을 사용하여 조건부로 신택스 요소를 파싱하여 잔차 블록의 레벨 코딩에 사용하고, 레벨의 절대값의 상응한 이진화는 표 1에 도시된 바와 같다. 여기서, abs_level_gtxX_flag는 레벨의 절대값이 X보다 큰지 여부를 설명하고, 여기서 X는 0, 1, 2 또는 N와 같은 정수이다. abs_level_gtxY_flag가 0이면, 플래그 abs_level_gtx(Y+1)가 존재하지 않으며, 여기서 Y는 0 내지 N-1 사이의 정수이다. abs_level_gtxY_flag가 1이면, 플래그 abs_level_gtx(Y+1)이 존재한다. 또한, abs_level_gtxN_flag가 0이면, 나머지 레벨이 존재하지 않는다. abs_level_gtxN_flag가 1일 경우, 나머지 레벨이 존재하고, 이는 레벨로부터 (N+1)을 삭제한 후의 값을 나타낸다. 일반적으로, 컨텍스트 코딩 방법을 각각 사용하여 abs_level_gtxX_flag를 코딩하고, 바이패스 방법을 사용하여 나머지 레벨을 코딩한다.
표 1 abs_level_gtxX_flag 및 리메인더(remainder)에 기반한 잔차 코딩
변환 스킵 잔차 코딩 모드(TSRC)로 코딩된 블록의 경우, TSRC는 왼쪽 위의 서브 블록으로부터 시작하여, 코딩 스캔 순서에 따라 서브 블록별로 점차 코딩한다. 유사하게, 신택스 요소sb_coded_flag는 현재 서브 블록의 모든 잔차가 0인지 여부를 지시하기 위한 것이다. 특정 조건이 발생할 경우, 마지막 하나의 서브 블록을 제외한 모든 서브 블록의 sb_coded_flag의 모든 신택스 요소는 모두 비트 스트림에 코딩된다. 마지막 하나의 서브 블록 이전의 모든 서브 블록의 모든 sb_coded_flag가 1과 같지 않으면, 마지막 하나의 서브 블록의 sb_coded_flag는 1이고, 상기 플래그는 비트 스트림에 코딩되지 않는 것으로 유도된다. 최악의 경우의 쓰루풋을 보장하기 위해, 미리 정의된 값 RemCcbs를 사용하여 최대 컨텍스트 코딩 bin을 제한다. 현재 서브 블록이 비 제로 레벨을 구비하면, TSRC는 코딩 스캔 순서로 각 위치의 레벨을 코딩한다. RemCcbs가 4보다 크면, 컨텍스트 코딩 방법을 사용하여 아래의 신택스 요소를 코딩한다. 각 레벨에 대해, 먼저 sig_coeff_flag를 비트 스트림에 코딩하여, 레벨이 0인지 여부를 지시한다. 레벨이 0이 아니면, coeff_sign_flag를 코딩하여 레벨이 양수인지 음수인지를 지시한다. 다음, abs_level_gtx_flag[n][0]을 코딩하여, 현재 위치의 현재 절대 레벨이 1보다 큰지 여부를 지시하며, 여기서 n은 서브 블록 내의 현재 위치가 스캔 순서를 따른 인덱스이다. abs_level_gtx_flag[n][0]이 0이 아니면, par_level_flag를 코딩한다. 컨텍스트 코딩 방법을 사용하여 상기 각 신택스 요소를 코딩한 후, RemCcbs의 값은 1이 감소된다.
현재 서브 블록 내의 모든 위치에 대해 상기 신택스 요소를 코딩한 후, RemCcbs가 여전히 4보다 크면, 컨텍스트 코딩 방법을 사용하여 최대 4 개의 다른 abs_level_gtx_flag[n][j]를 코딩하며, 여기서 n은 서브 블록 내의 현재 위치가 스캔 순서를 따른 인덱스이고; j는 1부터 4이다. 각 abs_level_gtx_flag[n][j]를 코딩한 후, RemCcbs의 값은 1 감소된다. RemCcbs가 4보다 크지 않으면, 필요할 경우, 서브 블록 내의 현재 위치의 경우, 바이패스 방법을 사용하여 신택스 요소 abs_remainder을 코딩한다. 왼전히 바이패스 방법을 통해 신택스 요소 abs_remainder를 사용하여 절대 레벨을 코딩하는 위치의 경우, 또한 바이패스 방법을 통해 coeff_sign_flag를 코딩한다. 요컨대, RRC에 미리 정의된 카운터 remBinsPassl가 존재하거나 TSRC에 RemCcbs가 존재하여, 컨텍스트 코딩 bin의 총개수를 제한하고 최악의 경우의 쓰루풋을 보장한다.
라이스 파라미터 유도
VVC에서의 현재 RRC 설계에서, 바이패스(bypass) bin으로 코딩된 두 개의 신택스 요소 abs_remainder 및 dec_abs_level은 나머지 레벨의 비트 스트림에 존재할 수 있다. VVC 규범에서 규정된 트렁케이티드 라이스(truncated Rice, TR) 및 제한된 k차 지수 골롬(EGk) 이진화 과정의 조합을 통해, abs_remainder 및 dec_abs_level을 이진화하되, 이는 라이스 파라미터로 주어진 레벨을 이진화해야 한다. 아래에서 설명된 바와 같이, 최적의 라이스 파라미터를 획득하기 위해, 로컬 합 방법을 사용한다.
어레이 AbsLevel[xC][yC]는 색상 성분 인덱스 cIdx의 현재 변환 블록의 변환 계수 레벨의 절대값의 어레이를 나탠낸다. 색상 성분 인덱스 cIdx 및 왼쪽 위 모서리 루마 위치(x0, y0)가 구비된 변환 블록의 어레이 AbsLevel[x][y]가 주어지면, 아래와 같은 의사 코드 과정에서 규정된 방식을 통해 로컬 합 변수 locSumAbs를 유도한다.
locSumAbs = 0
if( xC < ( 1 << log2TbWidth ) - 1 ) {
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
if( xC < ( 1 << log2TbWidth ) - 2 )
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
if( yC < ( 1 << log2TbHeight ) - 1 )
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ]
}
if( yC < ( 1 << log2TbHeight ) - 1 ) {
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
if( yC < ( 1 << log2TbHeight ) - 2 )
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
}
locSumAbs = Clip3( 0, 31, locSumAbs - baseLevel * 5 )
여기서 log2TbWidth 및 log2TbHeight는 각각2를 베이스로한 변환 블록의 높이의 대수 및 2를 베이스로한 변환 를록의 너비의 대수이다. abs_remainder 및 dec_abs_level의 경우, 변수 baseLevel은 각각 4 및 0이다. 로컬 합 변수 locSumAbs가 주어지면, 표 2에서 규정된 것과 같은 방식으로 라이스 파라미터 cRiceParam를 유도한다.
표 2 ― locSumAbs에 기반한 cRiceParam의 규격
히스토리 기반한 라이스 파라미터 유도
계수가 TU 경계에 위치하거나, 먼저 라이스 방법을 사용하여 디코딩하면, 라이스 파라미터 유도에 사용되는 템플릿 계산(template computation)은 정확하지 않은 계수 추정을 생성할 수 있다. 이러한 계수의 경우, 특정된 템플릿 위치는 TU 바깥에 위치하고 값 0으로 해석되거나 초기화될 수 있기 때문에, 템플릿 계산은 0으로 편향된다. 도 6은 TU 경계 부근에 위치한 계수의 locSumAbs를 계산하기 위한 템플릿 패턴의 예를 도시한다. 도 6은 복수 개의 CU로 분할된 CTU(602)를 도시하고, 각 CU는 복수 개의 TU를 포함한다. TU(604)의 경우, 현재 계수의 위치는 솔리드 블록으로 디스플레이되고, 그 인접된 샘플이 템플릿 패턴에서의 위치는 패턴화된 블록으로 디스플레이된다. 패턴화된 블록은 로컬 합 변수locSumAbs의 현재 계수를 계산하기 위한 기설정된 인접 영역을 지시한다.
도 6에서, 현재 계수(606)가 TU(604)의 경계(boundary)에 가까우므로, 템플릿 패턴에서 현재 계수(606)의 일부 인접된 샘플(예컨대 인접된 샘플 608B 및 608E)은 TU 경계 바깥에 위치한다. 상기 라이스 파라미터 유도에서, 로컬 합 변수 locSumAbs를 계산할 경우, 경계 바깥에 위치한 이러한 인접된 샘플을 0으로 설치하므로, 라이스 파라미터 유도가 정확하지 않다. 고 비트 깊이 샘플(예컨대, 10 비트보다 큼)의 경우, TU 경계 바깥에 위치한 인접된 샘플은 큰 숫자일 수 있다. 이러한 큰 숫자를 0으로 설정하면, 라이스 파라미터 유도에 더욱 많은 오차가 도입된다.
템플릿을 계산하는 것에 따른 라이스 추정의 정확성을 향상시키기 위해, 현재 TU 바깥에 위치하는 템플릿 위치의 경우, 0으로 초기화하는 것이 아나라, 히스토리 유도값을 사용하여 로컬 합 변수 locSumAbs를 업데이트하는 것을 건의한다. 아래에서 제9.3.3.2항에서 발췌한 VVC 규범 텍스트를 사용하여 상기 방법의 구현 방식을 설명하며, 여기서 건의된 텍스트는 밑줄이 그어져 있다.
인접된 계수/샘플값의 히스토리를 유지하기 위해, 각 색상 성분의 히스토리 카운터 StatCoeff[cIdx]를 이용하며, 여기서 cIdx=0, 1, 2이고, 각각 3 개의 색상 성분 Y, U, V를 나타낸다. CTU가 파티션(예컨대 픽쳐, 슬라이스 또는 타일)에서의 첫 번째 CTU이면, 아래와 같이 StatCoeff[cIdx]를 초기화한다.
StatCoeff[idx] = 2 * Floor(Log2( BitDepth - 10) (1)
여기서, BitDepth는 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이를 규정하고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이로 한 x의 대수이다. TU가 디코딩되고 히스토리 카운터가 업데이트되기 전, 대체 변수 HistValue를 아래와 같이 초기화한다.
HistValue[cIdx] = 1 << StatCoeff[cIdx] (2)
대체 변수 HistValue는 TU 경계 바깥에 위치한 인접된 샘플(예컨대, 인접된 샘플은 TU 바깥에 위치한 수평 좌표 또는 수직 좌표를 구비함)에 대한 추정으로 사용된다. 아래와 같은 의사 코드에 의해 규정된 방식에 따라 로컬 합 변수 locSumAbs를 재유도하며, 여기서 변경 사항은 밑줄이 그어져 있다.
locSumAbs = 0
if( xC < ( 1 << log2TbWidth ) - 1 ) {
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
if( xC < ( 1 << log2TbWidth ) - 2 )
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
else
locSumAbs += HistValue
if( yC < ( 1 << log2TbHeight ) - 1 )
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ]
else
locSumAbs += HistValue
}
else
locSumAbs += 2 * HistValue
if( yC < ( 1 << log2TbHeight ) - 1 ) {
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
if( yC < ( 1 << log2TbHeight ) - 2 )
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
else
locSumAbs += HistValue
}
else
locSumAbs += HistValue
각 TU에 대해, 지수 이동 평균 과정을 통해 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수(abs_remainder[cIdx] 또는 dec_abs_level[cIdx])로부터, 히스토리 카운터 StatCoeff를 한 회 업데이트한다. TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩될 경우, 아래와 같이 색상 성분 cIdx의 히스토리 카운터 StatCoeff를 업데이트한다.
StatCoeff[cIdx] = (StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1 (3)
TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩될 경우, 아래와 같이 색상 성분 cIdx의 히스토리 카운터 StatCoeff를 업데이트한다.
StatCoeff[cIdx] = (StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1 (4)
업데이트된 후의 StatCoeff는 다음 TU를 디코딩하기 전, 공식 (2)에 따라 다음 TU의 대체 변수 HistValue를 계산하는데 사용될 수 있다.
파면 병렬 프로세싱(WPP)
WPP는 병렬 코딩 메커니즘을 제공하도록 설계된다. VVC에서 WPP를 인에이블할 경우, 프레임 또는 타일 또는 슬라이스의 각 CTU 행은 단독적인 파티션을 구성한다. SPS 요소 sps_entropy_coding_sync_enabled_flag를 통해 WPP를 인에이블/디스에이블한다. 도 7은 타일의 예를 도시하고, 여기서, 상기 타일에 대해 WPP를 인에이블한다. 도 7에서, 타일의 각 CTU 행은 그 이전 하나의 CTU 행에 비해 하나의 CTU의 지연으로 처리된다. 이로써, 각 CTU 행의 끝에서 팔레트 코딩이 인에이블되면, CABAC 컨텍스트 변수 및 팔레트 예측기 이외, 파티션 경계 위치에서 연속적인 CTU 행 사이의 의존성을 파괴하지 않는다. 인코딩 효율의 잠재적인 손실을 줄이기 위해, 적응된 CABAC 컨텍스트 변수 및 팔레트 예측기의 내용은 이전 하나의 CTU 행의 첫 번째 코딩 CTU로부터 현재 CTU 행의 첫 번째 CTU로 전파된다. WPP는 CTU의 일반적인 래스터 스캔 순서를 개변하지 않는다.
WPP가 인에이블될 경우, 복수 개의 스레드(파티션(예컨대 타일, 슬라이스 또는 프레임)에서의 CTU 행의 개수만큼)는 병렬로 동작하여 각 CTU 행을 처리할 수 있다. 디코더에서 WPP를 사용하는 것을 통해, 각 디코딩 스레드는 파티션의 단일 CTU 행을 처리한다. 스레드 처리에 대한 스케줄링을 무조건 조직하여, 각 CTU의 경우, 그 이전 하나의 CTU 행에서의 상단에서 인접된 CTU의 디코딩으로 하여금 무조건 이미 완료되도록 한다. WPP의 추가적인 작은 오버헤드를 추가하여, 마지막 하나의CTU 행을 제외한 각 CTU 행에서의 첫 번째 CTU에 대한 코딩을 완료한 후, 모든 CABAC 컨텍스트 변수 및 팔레트 예측기의 내용을 저장할 수 있도록 한다.
고 비트 깊이 및 고 비트율 비디오 코딩에 대해, 위에서 논의된 히스토리 기반한 라이스 파라미터 유도를 인에이블할 경우, 이전 하나의 CTU 행에서의 마지막 하나의 StatCoeff는 현재 CTU 행에서의 첫 번째 TU에 전달된다. 따라서, WPP를 동시에 인에이블할 경우, 상기 과정은 WPP를 간섭하고 WPP의 병렬성을 파괴한다. 본 발명에서, 병렬 코딩(예컨대 WPP)을 인에이블할 경우 상기 문제를 해결하기 위해 복수 개의 해결 방안을 제출하였다.
하나의 실시예에서, 히스토리 카운터 StatCoeff를 계산할 경우 상이한 CTU 행에서의 CTU 사이의 의존성을 제거함으로써, 병렬 코딩에 대한 히스토리 기반한 라이스 파라미터 유도의 갑섭을 소거한다. 상기 실시예에서, 이전 하나의 CTU 행으로부터 획득된 히스토리 카운터 StatCoeff 값을 사용하는 것이 아니라, StatCoeff[cIdx]의 초기값을 사용하여 파티션(예컨대, 프레임 또는 타일 또는 슬라이스)의 각 CTU 행에서의 첫 번째 abs_remainder[cIdx] 또는 dec_abs_level[cIdx]를 코딩하며, 여기서 cIdx는 색상 성분의 인덱스이다.
예로서, 아래와 같이 StatCoeff[cIdx]의 초기값을 결정할 수 있다.
StatCoeff[idx] = 2 * Floor(Log2(BitDepth - 10)) (5)
여기서, BitDepth는 루마 또는 크로마 어레이의 샘플의 비트 깊이를 규정하고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타낸다. 다른 하나의 예로서, StatCoeff[cIdx]의 초기값은 아래와 같이 결정될 수 있다.
StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l (6)
여기서, MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는 아래와 같이 정의된 연산이다.
Clip(x, y, z) = (7)
파티션(예컨대, 프레임, 타일 또는 슬라이스)의 각 CTU 행의 첫 번째 TU를 코딩하기 전, 아래와 같이 대체 변수 HistValue를 계산한다.
HistValue[cIdx] = 1 << StatCoeff[cIdx] (8)
HistValue는 위에서 전술한 로컬 합 변수 locSumAbs를 계산하기 위한 것이다. 각 TU의 경우, 지수 이동 평균 과정을 통해 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수(abs_remainder[cIdx] 또는 dec_abs_level[cIdx])로부터, HistValue를 한 회 업데이트할 수 있다. TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩될 경우, 아래와 같이 색상 성분 cIdx의 히스토리 카운터 StatCoeff[cIdx]를 업데이트한다.
StatCoeff[cIdx] = (StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1 (9)
TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩될 경우, 아래와 같이 색상 성분 cIdx의 히스토리 카운터 StatCoeff[cIdx]를 업데이트한다.
StatCoeff[cIdx] = (StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1 (10)
공식 (8)에서와 같이, 업데이트된 후의 StatCoeff[cIdx]는 현재 CTU의 다음 TU 또는 현재 CTU 행에서의 다음 CTU의 첫 번째 TU에 대해 대체 변수 HistValue를 계산한다.
도 8은 프레임(802) 및 상기 프레임에 포함된 CTU의 예를 도시한다. 상기 예에서, 프레임(802)은 두 개의 타일, 즉 타일 804A 및 타일 804B를 포함한다. 타일 804A는 4 개의 CTU 행, 즉 CTU 행 1 내지 CTU 행 4를 포함한다. 첫 번째 CTU 행은 CTU 0 내지 CTU 9를 포함하고, 두 번째 CTU 행은 CTU 10 내지 CTU 19를 포함하며, 이런 식으로 차례로 유추할 수 있다. 마찬가지로, 블록 804B도 4 개의 CTU 행, 즉 CTU 행 1' 내지 CTU 행 4'를 포함한다. 첫 번째 CTU 행은 10 개의 CTU, 즉 CTU 0' 내지 CTU 9'를 포함하고, 두 번째 CTU 행은 CTU 10’ 내지 CTU 19'를 포함하며, 이런 식으로 차례로 유추할 수 있다.
상기 실시예에 따라, 공식 (5) 또는 (6)에 따라 타일 804A의 StatCoeff[cIdx]의 초기값을 결정할 수 있다. CTU 행 1 내지 CTU 행 4에서의 각 CTU 행의 첫 번째 TU를 코딩하기 전, 공식 (8)을 사용하여 StatCoeff[cIdx]의 초기값을 이용하여 대체 변수 HistValue[cIdx]를 계산한다. 예컨대, CTU 0의 첫 번째 TU를 코딩하기 전, 공식 (8)을 사용하여 변수 HistValue를 계산한다. HistValue의 상기 값은 첫 번째 TU에서의 계수의 로컬 합 변수 locSumAbs를 결정하는데 사용되고, 로컬 합 변수 locSumAbs는 첫 번째 TU의 각 계수의 라이스 파라미터를 결정하는데 추가로 사용된다. 현재 CTU 0의 첫 번째 TU를 처리할 경우, 히스토리 카운터 StatCoeff는 공식 (9) 또는 공식 (10)에 따라 업데이트될 수 있다. CTU 0에서의 두 번째 TU를 처리하기 전, StatCoeff의 현재 값은 공식 (8)에 따라 두 번째 TU의 HistValue를 결정하는데 사용된다. 다음, 두 번째 TU에 대해 유사한 과정을 사용하며, 즉 HistValue를 사용하여 라이스 파라미터를 결정하고 StatCoeff를 업데이트한다. CTU 1에서의 첫 번째 TU의 경우, 공식 (8)에 따라 CTU 0 중의 TU로부터의 최신 StatCoeff를 이용하여 HistValue를 계산한다. 현재 CTU 행 1에서의 마지막 하나의 CTU(즉 CTU 9)가 처리될 때가지, 상기 과정은 중복될 수 있다.
타일 804A의 두 번째 CTU 행의 경우, CTU 10의 첫 번째 TU(즉, 두 번째 CTU 행의 첫 번째 CTU)를 코딩하기 전, 공식 (5) 또는 공식 (6)에 따라 히스토리 카운터 StatCoeff를 초기화한다. 두 번째 CTU 행의 CTU에서의 TU의 경우, 위에서 CTU 행 1에 대해 설명한 과정과 유사한 과정을 실행한다. 마찬가지로, CTU 20 및 CTU 30에서의 각각의 첫 번째 TU를 코딩하기 전, 변수 StatCoeff는 공식 (5)또는 공식 (6)에 따라 재차 한 회 초기화된다.
유산한 방식으로 타일 804B를 처리할 수 있다. CTU 행 l’ 내지 CTU 행 4'(즉, CTU 0', CTU 10', CTU 20' 및 CTU 30')에서의 각각의 첫 번째 TU를 코딩하기 전, 공식 (5) 또는 공식 (6)에 따라 StatCoeff[cIdx]의 값을 초기화하고, 공식 (8)을 사용하여 히스토리 카운터 HistValue를 계산한다. 계산된 히스토리 카운터 HistValue는 각 CTU 행의 첫 번째 CTU와 나머지 CTU에서의 TU의 locSumAbs 및 라이스 파라미터를 계산하는데 사용된다. 또한, 각 TU에서, 히스토리 카운터 StatCoeff는 공식 (9) 또는 공식 (10)에 따라 최대 한회 업데이트될 수 있고, StatCoeff의 업데이트값은 동일한 CTU 행 중 다음 TU의 HistValue를 결정하는데 사용된다.
도 8은 두 개의 타일 804A 및 804B를 포함한 프레임(802)으로 설명되었지만, 동일한 과정은 복수 개의 타일을 포함하는 슬라이스, 복수 개의 슬라이스를 포함한 프레임 등과 같은 다른 시나리오에 적용될 수 있다. 이러한 시나리오에서의 임의의 시나리오에서, 파티션(예컨대 프레임, 타일 또는 슬라이스)의 각 CTU 행에서의 첫 번째 TU를 코딩하기 전, 히스토리 카운터 StatCoeff[cIdx]의 값은 초기값으로 리셋되어, 라이스 파라미터 유도 중 CTU 행의 의존성을 소거한다.
밑줄로 표시된, VVC의 가능하게 규범이 변경되는 부분은 아래와 같이 규정된다.
9.3.2.1의 경우, VVC의 다른 하나의 가능하게 규범이 변경되는 부분은 아래와 같이 규정된다.
비디오 샘플의 비트 깊이
VVC 제2 버전에 의해 지원되는 입력 비디오의 비트 깊이는 10 비트를 초과할 수 있다. 더욱 높은 비디오 비트 깊이는 비디오 디코딩에 더욱 높은 시각 품질을 제공하고, 그 압축 왜곡이 비교적 낮다. 입력 비디오의 고 비트 깊이를 지원하기 위해, 아래와 같이 대응되는 SPS(시퀀스 파라미터 세트) 신택스 요소 sps_bitdepth_minus8 및 VPS(비디오 파라미터 세트) 신택스 요소 vps_ols_dpb_bitdepth_minus8[i]의 시맨틱을 변경할 수 있다.
sps_bitdepth_minus8은 루마 및 크로마 어레이의 샘플의 비트 깊이 BitDepth와, 루마 및 크로마 양자화 파라미터 범위 오프셋의 값 QpBdOffset을 아래와 같이 지정한다.
BitDepth = 8 + sps_bitdepth_minus8 (x1)
QpBdOffset = 6 * sps_bitdepth_minus8 (x2)
sps_bitdepth_minus8은 0 내지 8의 범위 내(엔드 포인트를 포함함)에 있어야 한다.
sps_video_parameter_set_id가 0보다 크고 SPS가 VPS에 의해 지정된 i 번째 멀티층 OLS에 포함된 층에 의해 인용될 경우(임의의 i의 경우, 0 내지 NumMultiLayerOlss - 1(엔드 포인트를 포함함)의 범위 내에 포함됨), 비트 스트림에 대한 일치적인 요구는, sps_bitdepth_minus8의 값이 vps_ols_dpb_bitdepth_minus8[i]의 값보다 작거나 같아야 하는 것이다.
vps_ols_dpb_bitdepth_minus8[i]는 i 번째 멀티층 OLS의 CVS에서의 CLVS에 의해 인용된 모든 SPS를 위해, sps_bitdepth_minus8의 최대 허용값을 지정한다. vps_ols_dpb_bitdepth_minus8[i]의 값은 0 내지 8의 범위 내(엔드 포인트를 포함함)에 있어야 한다.
노트 2 ― i 번째 멀티층 OLS를 디코딩하기 위해, 디코더는 신택스 요소 vps_ols_dpb_pic_width[i], vps_ols_dpb_pic_height[i], vps_ols_dpb_chroma_format[i] 및 vps_ols_dpb_bitdepth_minus8[i]의 값에 따라 DPB에 메모리를 안전하게 할당한다.
위에서로부터 알 수 있다 시피, 루마 및 크로마 어레이의 샘플의 비트 깊이 BitDepth는 공식 (x1)에 따라, SPS 신택스 요소 sps_bitdepth_minus8에 기반하여 유도될 수 있다. 결정된 BitDepth 값을 이용하여, 위에서 논의된 바와 같이 히스토리 카운터 StatCoeff, 대체 변수 HistValue 및 라이스 파라미터를 유도할 수 있다.
VPS 신택스 요소 vps_ols_dpb_bitdepth_minus8[i]는 디코딩 픽쳐 버퍼(DPB)의 크기를 유도하는데 사용될 수 있다. 코딩 비트 스트림의 경우, 복수 개의 비디오층이 존재할 수 있다. 비디오 파라미터 세트는 대응되는 신택스 요소를 지정하는데 사용된다. 비디오 디코딩의 경우, DPB는 참조 픽쳐를 저장하는데 사용되어, 이전 코딩된 픽쳐로 하여금 다른 픽쳐를 코딩할 경우 사용되기 위한 예측 신호를 생성하는데 사용되도록 할 수 있다. DPB는 또한 디코딩 픽쳐를 재배열하는데 사용되어, 디코딩 픽쳐로 하여금 정확한 순서로 출력 및/또는 디스플레이되도록 할 수 있다. DPB는 또한 가상 참조 디코더를 위해 지정된 출력을 지연하는데 사용될 수 있다. 디코딩 픽쳐는 가상 참조 디코더를 위해 지정된 기설정된 시간대 동안 DPB에 지속적으로 저장되고, 기설정된 시간대 지난 후 출력될 수 있다.
DPB에 메모리를 안전하게 할당하기 위해, 상기 DPB의 크기는 신택스 요소 vps_ols_dpb_pic_width[i], vps_ols_dpb_pic_height[i], vps_ols_dpb_chroma_format[i] 및 vps_ols_dpb_bitdepth_minus8[i]에 의해 아래와 같이 결정된다.
Picture_size1(단위는 비트임)= vps_ols_dpb_pic_width[i] * vps_ols_dpb_pic_height[i] * (vps_ols_dpb_bitdepth_minus8[i]+8)
(vps_ols_dpb_chroma_format[ i ]== 0) //단일색이면,
picture_size = picture_size1이고;
그렇지 않은 경우, (vps_ols_dpb_chroma_format[ i ]== 1) // 4:2:0이면,
picture_size = 1.5 * picture_size1이며;
그렇지 않은 경우, (vps_ols_dpb_chroma_format[ i ]== 2 // 4:2:2이면,
picture_size = 2 * picture_size1이고;
그렇지 않은 경우, (vps_ols_dpb_chroma_format[ i ]== 3 // 4:4:4이면,
picture_size = 3 * picture_size1이며;
따라서, DPB의 크기는 picture_size에 의해 결정된다. 다시 말해서, DPB의 크기는 샘플의 크로마 포맷에 따라 결정될 수 있다. 비디오 프레임이 단일색 프레임이면, 완충될 프레임의 크기는 기본 픽쳐 크기picture_size1인 것으로 결정된다. 컬러 비디오 프레임의 색상 서브 샘플링이 4:2:0이면, 프레임의 크기는 기본 픽쳐 크기 picture_sizel의 1.5 배인 것으로 결정되고; 컬러 비디오 프레임의 색상 서브 샘플링이 4:2:2이면, 프레임의 크기는 기본 픽쳐 크기 picture_sizel의 2 배인 것으로 결정되며; 컬러 비디오 프레임의 색상 서브 샘플링이 4:4:4이면, 프레임의 크기는 기본 픽쳐 크기 picture_sizel의 3 배인 것으로 결정된다. 색상 서브 샘플링에 따라, DPB의 크기는 DPB에 저장할 프레임의 개수와 프레임의 크기의 곱인 것으로 결정될 수 있다.
도 9는 본 발명의 일부 실시예를 따른 비디오의 파티션을 코딩하기 위한 과정(900)의 예를 설명한다. 하나 또는 복수 개의 컴퓨팅 기기(예컨대, 비디오 인코더(100)를 구현하는 컴퓨팅 기기)는 적합한 프로그램 코드(예컨대, 엔트로피 코딩 모듈(116)을 구현하는 프로그램 코드)를 실행하는 것을 통해 도 9에서 설명된 동작을 실행한다. 설명의 목적을 위해, 도면에서 설명된 일부 예를 참조하여 과정(900)을 설명한다. 그러나, 다른 구현 방식도 가능하다.
블록 902에서, 과정(900)은 비디오 신호의 파티션을 액세스하는 것을 포함한다. 파티션은 비디오 프레임, 슬라이스, 또는 타일, 또는 인코딩을 수행할 경우 비디오 인코더에 의해 유닛으로서 처리되는 임의의 타입의 파티션일 수 있다. 파티션은 도 8에 도시된 바와 같은 CTU 행으로 배열된 CTU 세트를 포함한다. 도 6의 예에 도시된 바와 같이, 각 CTU 세트는 하나 또는 복수 개의 CTU를 포함하고, 각 CTU는 복수 개의 TU를 포함하여 인코딩에 사용된다.
블록 904에서, 과정(900)은 파티션에서의 CTU 세트 중의 각 CTU를 처리하여, 파티션을 비트로 인코딩하는데 관한 것이고, 블록 904는 블록 906 내지 블록 914를 포함한다. 블록 906에서, 과정(900)은 병렬 코딩 메커니즘을 인에이블하는지 여부 및 현재 CTU가 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 일부 예에서, 병렬 코딩은 플래그에 의해 지시되고, 상기 플래그의 값 0은 병렬 코딩을 디스에이블하는 것을 지시하고, 상기 플래그의 값 1은 병렬 코딩을 인에이블하는 것을 지시한다. 병렬 코딩 메커니즘이 인에이블되고 현재 CTU가 CTU 행의 첫 번째 CTU인 것으로 결정되면, 과정(900)은 블록 908에서, 히스토리 카운터 StatCoeff를 초기값으로 설정하는데 관한 것이다. 위에서 논의된 바와 같이, 히스토리 기반한 라이스 파라미터 유도가 인에이블되면, 공식 (5) 또는 공식 (6)에 따라 히스토리 카운터의 초기값을 설정할 수 있고; 그렇지 않은 경우, 히스토리 카운터의 초기값은 0으로 설정된다.
병렬 코딩 메커니즘이 인에이블되지 않은 것으로 결정되거나 현재 CTU가 CTU 행의 첫 번째 CTU가 아닌 것으로 결정되거나, 블록 908에서 히스토리 카운터를 설정한 후, 과정(900)은 블록 910에서, 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산하는데 관한 것이다. 위에서 도 6 내지 도 8을 참조하여 상세히 설명한 것과 같이, 블록 908에서 히스토리 카운터를 리셋하면, 리셋된 히스토리 카운터 또는 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다. 블록 908에서 히스토리 카운터를 리셋하지 않으면, 이전 하나의 CTU에서 업데이트된 히스토리 카운터 또는 현재 CTU에서 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다.
블록 912에서, 과정(900)은 계산된 라이스 파라미터에 기반하여, CTU에서의 TU를 이진 표현으로 인코딩하는데 관한 것이며, 예컨대 VVC 규범에서 규정된 트렁케이티드 라이스(TR) 및 제한된 k차 EGk의 조합을 통해 인코딩한다. 블록 914에서, 과정(900)은 CTU의 이진 표현을 비트로 인코딩하여 비디오의 비트 스트림에 포함시키는데 관한 것이다. 예컨대, 위에서 논의된 바와 같은 컨텍스트 적응 이진 산술 코딩(CABAC)을 사용하여 인코딩을 실행할 수 있다. 블록 916에서, 과정(900)은 이미 인코딩된 비디오 비트 스트림을 출력하는데 관한 것이다.
도 10은 본 발명의 일부 실시예를 따른 비디오의 파티션을 디코딩하기 위한 과정(1000)의 예를 설명한다. 하나 또는 복수 개의 컴퓨팅 기기는 적합한 프로그램 코드를 실행하는 것을 통해 도 10에서 설명된 동작을 구현한다. 예컨대, 비디오 디코더(200)를 구현하는 컴퓨팅 기기는 엔트로피 디코딩 모듈(216), 역양자화 모듈(218) 및 역변환 모듈(219)에 사용되는 프로그램 코드를 실행하는 것을 통해 도 10에서 설명된 동작을 구현할 수 있다. 설명 목적을 위해, 도면에서 설명된 일부 예를 참조하여 과정(1000)을 설명한다. 그러나, 다른 구현 방식도 가능하다.
블록 1002에서, 과정(1000)은 비디오 신호의 파티션을 나타내는 이진 스트링 또는 이진 표현을 액세스하는데 관한 것이다. 파티션은 비디오 프레임, 슬라이스, 또는 타일, 또는 인코딩을 수행할 경우 비디오 인코더에 의해 유닛으로서 처리되는 임의의 타입의 파티션일 수 있다. 파티션은 도 8에 도시된 바와 같은 CTU 행으로 배열된 CTU 세트를 포함한다. 도 6의 예에 도시된 바와 같이, 각 CTU 세트는 하나 또는 복수 개의 CTU를 포함하고, 각 CTU는 복수 개의 TU를 포함하여 인코딩에 사용된다.
블록 1004에서, 과정(1000)은 파티션에서의 CTU 세트 중의 각 CTU의 이진 스트링을 처리하여, 파티션의 디코딩 샘플을 생성하는데 관한 것이고, 블록 1004은 블록 1006 내지 블록 1014를 포함한다. 블록 1006에서, 과정(1000)은 병렬 코딩 메커니즘을 인에이블하는지 여부 및 현재 CTU가 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 병렬 코딩은 플래그에 의해 지시될 수 있고, 상기 플래그의 값 0은 병렬 코딩을 디스에이블하는 것을 지시하고, 상기 플래그의 값 1은 병렬 코딩을 인에이블하는 것을 지시한다. 병렬 코딩 메커니즘이 인에이블되고 현재 CTU가 CTU 행의 첫 번째 CTU인 것으로 결정되면, 과정(1000)은 블록 1008에서, 히스토리 카운터 StatCoeff를 초기값으로 설정하는데 관한 것이다. 위에서 논의된 바와 같이, 히스토리 기반한 라이스 파라미터 유도가 인에이블되면, 공식 (5) 또는 공식 (6)에 따라 히스토리 카운터의 초기값을 설정할 수 있고; 그렇지 않은 경우, 히스토리 카운터의 초기값은 0으로 설정된다.
병렬 코딩 메커니즘이 인에이블되지 않은 것으로 결정되거나 현재 CTU가 CTU 행의 첫 번째 CTU가 아닌 것으로 결정되거나, 블록 1008에서 히스토리 카운터를 설정한 후, 과정(1000)은 블록 1010에서, 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산하는데 관한 것이다. 위에서 도 6 내지 도 8을 참조하여 상세히 설명한 것과 같이, 블록 1008에서 히스토리 카운터를 리셋하면, 리셋된 히스토리 카운터 또는 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다. 블록 1008에서 히스토리 카운터를 리셋하지 않으면, 이전 하나의 CTU에서 업데이트된 히스토리 카운터 또는 현재 CTU에서 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다.
블록 1012에서, 과정(1000)은 계산된 라이스 파라미터에 기반하여, CTU에서의 TU의 이진 스트링 또는 이진 표현을 계수값으로 디코딩하는데 관한 것이고, 예컨대 VVC 규범에서 규정된 트렁케이티드 라이스(TR) 및 제한된 k차 EGK의 조합을 통해 디코딩한다. 블록 1014에서, 과정(1000)은 CTU에서의 TU의 픽셀값을 재구성하는데 관한 것이고, 예컨대 위에서 도 2에 대해 논의한 바와 같은 역양자화 및 역변환을 통해 재구성한다. 블록 1016에서, 과정(1000)은 비디오의 디코딩 파티션을 출력하는데 관한 것이다.
다른 하나의 실시예에서, 히스토리 카운터 StatCoeff를 계산할 경우 CTU 사이의 의존성과, 병렬 코딩 메커니즘(예컨대 WPP) 중 CTU 사이의 의존성은 정렬된다. 예컨대, 이전 하나 CTU 행에서의 앞 N 개 또는 더욱 적은 CTU에서의 계수값에 기반하여 파티션(예컨대 프레임, 타일 또는 슬라이스)의 CTU 행의 히스토리 카운터 StatCoeff를 계산하고, 여기서 N은 병렬 코딩 메커니즘 중 허용된 두 개의 연속적인 CTU 행 사이의 최대 지연이다. 이로써, 히스토리 카운터 StatCoeff를 계산할 경우 두 개의 연속적인 CTU 행에서의 CTU 사이의 의존성은, 병렬 프로세싱을 실행할 경우 CTU 사이의 의존성보다 크지 않도록 제한된다(따라서, 병렬 프로세싱을 실행할 경우 CTU 사이의 의존성과 정렬됨).
상기 실시예는 스토리지-동기화 과정을 사용하여 구현될 수 있다. 예컨대, 상기 WPP에서, 두 개의 연속적인 CTU 행 사이의 지연은 1 개의 CTU이므로, N=1이다. 저장 과정에서, 각 CTU 행(마지막 하나의CTU 행을 제외)에서의 첫 번째 CTU의 마지막 하나의 TU를 코딩한 후, StatCoeff[cIdx]는 스토리지 변수 StatCoeffWpp[cIdx]에 저장될 수 있으며, 첫 번째 CTU 행 이외의 각 CTU 행의 경우, 첫 번째 TU를 코딩하기 전, 라이스 파라미터 유도의 동기화 과정을 적용한다. 동기화 과정에서, StatCoeff[cIdx]는 이전 하나의 CTU 행으로부터 저장된 StatCoeffWpp[cIdx]와 동기화된다.
위에서 논의된 바와 같이, 각 CTU 행에서의 첫 번째 TU를 코딩하기 전, 아래와 같이 변수 HistValue를 계산한다.
HistValue[cIdx] = 1 << StatCoeff[cIdx] (11)
현재 CTU 행이 파티션의 첫 번째 CTU 행이면, 공식 (5) 또는 공식 (6)에 따라 StatCoeff[cIdx]를 초기화할 수 있다. 계산된 HistValue는 로컬 합 변수 locSumAbs를 결정하는데 사용되고, locSumAbs는 현재 CTU에서의 TU의 라이스 파라미터를 결정하는데 사용된다. 각 TU의 경우, 위에서 공식 (9) 및 공식 (10)에 대해 설명한 것과 같이, 지수 이동 평균 과정을 통해 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수(abs_remainder[cIdx] 또는 dec_abs_level[cIdx])로부터, StatCoeff를 한 회 업데이트한다.
첫 번째 CTU 행에서의 첫 번째 CTU의 마지막 하나의 TU를 코딩한 후, 아래와 같이 저장 단계에서 StatCoeff[cIdx]를 StatCoeffWpp[cIdx]로 저장할 수 있다.
StatCoeffWpp[cIdx] = StatCoeff[cIdx] (12)
첫 번째 CTU 행에서의 나머지 CTU에 대한 코딩은, 위에서 제1 실시예에 대해 설명한 방식과 유사한 방식으로 실행할 수 있다.
두 번째 CTU 행 및 임의의 향후 CTU 행에서의 첫 번째 TU를 코딩하기 전, 동기화 단계를 통해 StatCoeff[cIdx]를 획득할 수 있다.
StatCoeff[cIdx] = StatCoeffWpp[cIdx](13)
획득된 StatCoeff[cIdx] 값을 사용하여, 공식 (11)에 따라 HistValue를 계산한다. CTU 행의 나머지 과정과 첫 번째 CTU 행의 과정은 동일하다.
VVC 규범의 가능하게 변경되는 부분을 아래와 같이 지정한다(변경되는 부분은 밑줄로 나타낸 것과 같음).
대안적인 히스토리 기반한 라이스 파라미터 유도
히스토리 기반한 라이스 파라미터 유도는 대안적인 방식으로 구현될 수 있다. 상기 대안적인 구현 방식에서, CTU가 파티션(예컨대 픽쳐, 슬라이스 또는 타일)에서의 첫 번째 CTU이면, StatCoeff[cIdx]의 초기값을 사용하여 아래와 같이 HistValue를 초기화한다.
HistValue=sps_persistent_Rice_adaptation_enabled_flag?1<<StatCoeff[cIdx]:0 (14)
상기 초기 HistValue는, 아래의 규칙에 따라 HistValue를 업데이트할 때까지, 첫 번째 abs_remainder[cIdx] 또는 dec_abs_level[cIdx]를 코딩하는데 사용된다. TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩될 경우, 아래와 같이 색상 성분 cIdx의 히스토리 카운터를 업데이트한다.
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1 (15)
TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩되면, 아래와 같이 색상 성분 cIdx의 히스토리 카운터를 업데이트한다.
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1 (16)
일단 히스토리 카운터 StatCoeff[cIdx]가 이미 업데이트되면, 공식 (17)에서 지시된 바와 같이 HistValue를 업데이트하고, 업데이트된 후의 HistValue는, 새로운 StatCoeff[cIdx] 및 HistValue[cIdx]가 재차 업데이트될 때까지, 나머지 신택스 요소 abs_remainder 및 dec_abs_level의 라이스 파라미터를 유도하는데 사용된다.
HistValue[cIdx] = 1 << StatCoeff[cIdx] (17)
현재 VVC 규범에 기반하여, 가능하게 규범이 변경되는 부분은 아래와 같이 지정된다.
제7.3.11.11 조항(잔차 코딩 신택스)은 아래와 같이 변경(추가된 내용은 밑줄이 그어져 있음)된다.
병렬 코딩 및 대안적인 히스토리 기반한 라이스 파라미터 유도 사이의 의존성 충돌을 해결하기 위해, 각 CTU 행에서의 첫 번째 CTU의 마지막 하나의 TU를 코딩한 후, 각 색상 성분의 StatCoeff[cIdx] 및 HistValue[cIdx]를 저장한다. 저장된 StatCoeff[cIdx] 및 HistValue[cIdx]의 값은 향후 CTU 행의 첫 번째 CTU의 첫 번째 TU를 처리하기 전 StatCoeff[cIdx] 및 HistValue[cIdx]를 초기화하는데 사용될 수 있다.
상기 실시예는 또한 스토리지-동기화 과정을 사용하여 구현될 수 있다. 예컨대, 저장 과정에서, 각 CTU 행에서의 첫 번째 CTU의 마지막 하나의 TU를 처리한 후, StatCoeff[cIdx] 및 HistValue[cIdx]는, 각각 공식 (18) 및 공식 (19)에 도시된 StatCoeffWpp[cIdx] 및 HistValueWpp[cIdx]와 같은 스토리지 변수에 저장될 수 있다.
StatCoeffWpp[cIdx] = StatCoeff[cIdx] (18)
HistValueWpp[cIdx] = HistValue[cIdx] (19)
첫 번째 CTU 행을 제외한 각 CTU 행의 경우, 첫 번째 TU를 코딩하기 전, 라이스 파라미터 유도의 동기화 과정을 적용한다. 예컨대, 공식 (20) 및 (21)에 도시된 바와 같이, StatCoeff[cIdx] 및 HistValue[cIdx]는 각각 이전 하나의 CTU 행으로부터 저장된 StatCoeffWpp[cIdx] 및 HistValueWpp[cIdx]와 동기화된다.
StatCoeff[cIdx] = StatCoeffWpp[cIdx] (20)
HistValue[cIdx] = HistValueWpp[cIdx] (21)
동기화 변수 HistValue는 HistValue가 업데이트될 때까지, 첫 번째 abs_remainder[cIdx] 또는 dec_abs_level[cIdx]를 코딩하는데 사용된다.
위에서 논의된 바와 같이, 각 TU의 경우, 공식 (15) 또는 공식 (16)에 도시된 바와 같이, 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수(abs_remainder[cIdx] 또는 dec_abs_level[cIdx])로부터, StatCoeff[cIdx]를 한 회 업데이트할 수 있다. 일단 히스토리 카운터 StatCoeff[cIdx]가 이미 업데이트되면, 공식 (17)에 따라 HistValue를 업데이트하고, 업데이트된 후의 HistValue는, 새로운 StatCoeff[cIdx] 및 HistValue가 재차 업데이트될 때까지, 나머지 신택스 요소 abs_remainder 및 dec_abs_level의 라이스 파라미터를 유도하는데 사용된다.
현재 VVC 규범에 기반하여, 밑줄로 표시된 가능하게 규범이 변경되는 부분은 아래와 같이 규정된다.
도 11은 본 발명의 일부 실시예를 따른 비디오의 파티션을 코딩하기 위한 과정(1100)의 예를 설명한다. 하나 또는 복수 개의 컴퓨팅 기기(예컨대, 비디오 인코더(100)를 구현하는 컴퓨팅 기기)는 적합한 프로그램 코드(예컨대, 엔트로피 코딩 모듈(116)을 구현하는 프로그램 코드)를 실행하는 것을 통해 도 11에서 설명된 동작을 실행한다. 설명 목적을 위해, 도면에서 설명된 일부 예를 참조하여 과정(1100)을 설명한다. 그러나, 다른 구현 방식도 가능하다.
블록 1102에서, 과정(1100)은 비디오 신호의 파티션을 액세스하는 것을 포함한다. 파티션은 비디오 프레임, 슬라이스, 또는 타일, 또는 인코딩을 수행할 경우 비디오 인코더에 의해 유닛으로서 처리되는 임의의 타입의 파티션일 수 있다. 파티션은 도 8에 도시된 바와 같은 CTU 행으로 배열된 CTU 세트를 포함한다. 도 6의 예에 도시된 바와 같이 각 CTU 세트는 하나 또는 복수 개의 CTU를 포함하고, 각 CTU는 복수 개의 TU를 포함하여 인코딩에 사용된다.
블록 1104에서, 과정(1100)은 파티션에서의 CTU 세트 중의 각 CTU를 처리하여, 파티션을 비트로 인코딩하는데 관한 것이고, 블록 1104는 블록 1106 내지 블록 1118를 포함한다. 블록 1106에서, 과정(1100)은 병렬 코딩 메커니즘을 인에이블하는지 여부 및 현재 CTU가 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 일부 예에서, 병렬 코딩은 플래그에 의해 지시되고, 상기 플래그의 값 0은 병렬 코딩을 디스에이블하는 것을 지시하며, 상기 플래그의 값 1은 병렬 코딩을 인에이블하는 것을 지시한다. 병렬 코딩 메커니즘이 인에이블되고 현재 CTU가 CTU 행의 첫 번째 CTU인 것으로 결정되면, 과정(1100)은 블록 1107에서, 현재 CTU 행이 파티션에서의 첫 번째 CTU 행인지 여부를 결정하는데 관한 것이다. 현재 CTU 행이 파티션에서의 첫 번째 CTU 행이면, 과정(1100)은 블록 1108에서, 히스토리 카운터 StatCoeff를 초기값으로 설정하는데 관한 것이다. 위에서 논의된 바와 같이, 공식 (5) 또는 공식 (6)에 따라 히스토리 카운터의 초기값을 설정할 수 있다. 현재 CTU 행이 파티션에서의 제1 CTU 행이 아니면, 공식 (13) 또는 공식 (20)에 도시된 바와 같이, 과정(1100)은 블록 1109에서, 히스토리 카운터 StatCoeff를 히스토리 카운터 스토리지 변수에서 저장된 값으로 설정하는데 관한 것이다. 일부 예에서, 예컨대 공식 (21)에 도시된 바와 같이, 대안적인 라이스 파라미터 유도를 이용할 경우, 대체 변수 HistValue의 값은 저장된 값으로 리셋될 수도 있다.
병렬 코딩 메커니즘이 인에이블되지 않은 것으로 결정되거나 현재 CTU가 CTU 행의 첫 번째 CTU가 아닌 것으로 결정되거나, 블록 1108 또는 블록 1109에서 히스토리 카운터의 값을 설정한 후, 과정(1100)은 블록 1110에서, 히스토리 카운터(HistValue가 리셋된면, 대체 변수 HistValue와 함께)에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다. 위에서 전술한 바와 같이(예컨대 도 8를 참조하거나, 대안적인 라이스 파라미터 유도에서), 블록 1108 또는 블록 1109에서 히스토리 카운터의 값이 리셋되면, 리셋된 히스토리 카운터 또는 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다. 블록 1108 또는 블록 1109에서 히스토리 카운터가 리셋되지 않으면, 이전 하나의 CTU에서 업데이트된 히스토리 카운터 또는 현재 CTU에서 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다.
블록 1112에서, 과정(1100)은 계산된 라이스 파라미터에 기반하여, CTU에서의 TU를 이진 표현으로 인코딩하는데 관한 것이고, 예컨대 VVC 규범에서 규정된 트렁케이티드 라이스(TR) 및 제한된 k차 EGK의 조합을 통해 인코딩한다. 블록 1114에서, 과정(1100)은 CTU의 이진 표현을 비트로 인코딩하여 비디오 비트 스트림에 포함시키는데 관한 것이다. 예컨대, 위에서 논의된 바와 같은 컨텍스트 적응 이진 산술 코딩(CABAC)을 사용하여 인코딩을 실행할 수 있다.
블록 1116에서, 과정(1100)은 병렬 코딩을 인에이블하는지 여부 및 CTU가 현재 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 병렬 코딩을 인에이블하고 CTU가 현재 CTU 행의 첫 번째 CTU이면, 공식 (12) 또는 공식 (18)에 도시된 바와 같이, 과정(1100)은 블록 1118에서, 히스토리 카운터의 값을 히스토리 카운터 스토리지 변수에 저장하는데 관한 것이다. 일부 예에서, 예컨대 공식 (19)에 도시된 바와 같이, 대안적인 라이스 파라미터 유도를 이용할 경우, 대체 변수 HistValue의 값은 스토리지 변수에 저장될 수도 있다. 블록 1120에서, 과정(1100)은 이미 인코딩된 비디오 비트 스트림을 출력하는데 관한 것이다.
일부 시나리오에서, 비 첫 번째 CTU 행에서의 CTU는 파티션의 경계 위치에 위치할 수 있다. 예컨대, 두 번째 CTU 행에서의 첫 번째 CTU는 상기 CTU의 상단에 위치하는 파티션에서 TU를 구비하지 않는다. 이러한 시나리오에서, 상기 CTU의 히스토리 카운터는 저장된 값으로 설정되는 것이 아니라 초기값으로 설정될 수 있다. 이러한 경우, 도 11에서 블록 1107과 블록 1109 사이에 새로운 블록 1107'을 추가하여, CTU가 파티션의 경계 위치(예컨대, CTU는 파티션 내에서 상단이 인접된 TU가 구비되지 않음)에 위치하는지 여부를 결정할 수 있다. CTU가 파티션의 경계 위치에 위치하면, 과정(1100)은 블록 1108까지 수행되어, 히스토리 카운터를 초기값으로 설정하고; CTU가 파티션의 경계 위치에 위치하지 않으면, 과정(1100)은 블록 1109까지 수행되어, 히스토리 카운터를 저장된 값으로 설정한다. 도 11의 나머지 블록은 그대로 유지될 수 있다.
도 12는 본 발명의 일부 실시예를 따른 비디오의 파티션을 디코딩하기 위한 과정(1200)의 예를 설명한다. 하나 또는 복수 개의 컴퓨팅 기기는 적합한 프로그램 코드를 실행하는 것을 통해 도 12에서 설명된 동작을 구현한다. 예컨대, 비디오 디코더(200)를 구현하는 컴퓨팅 기기는 엔트로피 디코딩 모듈(216), 역양자화 모듈(218) 및 역변환 모듈(219)에 사용되는 프로그램 코드를 실행하는 것을 통해 도 12에서 설명된 동작을 구현할 수 있다. 설명의 목적을 위해, 도면에서 설명된 일부 예를 참조하여 과정(1200)을 설명한다. 그러나, 다른 구현 방식도 가능하다.
블록 1202에서, 과정(1000)은 비디오 신호의 파티션을 나타내는 이진 스트링 또는 이진 표현을 액세스하는 것을 포함한다. 파티션은 비디오 프레임, 슬라이스, 또는 타일, 또는 인코딩을 수행할 경우 비디오 인코더에 의해 유닛으로서 처리되는 임의의 타입의 파티션일 수 있다. 파티션은 도 8에 도시된 바와 같은 CTU 행으로 배열된 CTU 세트를 포함한다. 도 6의 예에 도시된 바와 같이, 각 CTU 세트는 하나 또는 복수 개의 CTU를 포함하고, 각 CTU는 복수 개의 TU를 포함하여 인코딩에 사용된다.
블록 1204에서, 과정(1200)은 파티션에서의 CTU 세트 중의 각 CTU의 이진 스트링을 처리하여, 파티션의 디코딩 샘플을 생성하는데 관한 것이고, 블록 1204은 블록 1206 내지 블록 1218를 포함한다. 블록 1206에서, 과정(1200)은 병렬 코딩 메커니즘을 인에이블하는지 여부 및 현재 CTU가 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 병렬 코딩은 플래그에 의해 지시될 수 있고, 상기 플래그의 값 0은 병렬 코딩을 디스에이블하는 것을 지시하고, 상기 플래그의 값 1은 병렬 코딩을 인에이블하는 것을 지시한다. 병렬 코딩 메커니즘이 인에이블되고 현재 CTU가 CTU 행의 첫 번째 CTU인 것으로 결정되면, 과정(1200)은 블록 1207에서, 현재 CTU 행이 파티션에서의 첫 번째 CTU 행인지 여부를 결정하는데 관한 것이다. 현재 CTU 행이 파티션에서의 첫 번째 CTU 행이면, 과정(1200)은 블록 1208에서, 히스토리 카운터 StatCoeff를 초기값으로 설정하는데 관한 것이다. 위에서 논의된 바와 같이, 공식 (5) 또는 공식 (6)에 따라 히스토리 카운터의 초기값을 설정할 수 있다. 현재 CTU 행이 파티션에서의 첫 번째 CTU 행이 아니면, 공식 (13) 또는 공식 (20)에 도시된 바와 같이, 과정(1200)은 블록 1209에서, 히스토리 카운터 StatCoeff를 히스토리 카운터 스토리지 변수에 저장된 값으로 설정하는데 관한 것이다. 일부 예에서, 예컨대 공식 (21)에 도시된 바와 같이, 대안적인 라이스 파라미터 유도를 이용할 경우, 대체 변수 HistValue의 값은 저장된 값으로 리셋될 수도 있다.
병렬 코딩 메커니즘이 인에이블되지 않은 것으로 결정되거나 현재 CTU가 CTU 행의 첫 번째 CTU가 아닌 것으로 결정되거나, 블록 1208 또는 블록 1209에서 히스토리 카운터를 설정한 후, 과정(1200)은 블록 1210에서, 히스토리 카운터에 기반하여(HistValue의 값을 더 설정하면, 대체 변수 HistValue와 함께) CTU에서의 TU의 라이스 파라미터를 계산하는 것에 관한 것이다. 위에서 전술한 바와 같이(예컨대 도 8를 참조하거나, 대안적인 라이스 파라미터 유도에서), 블록 1208 또는 블록 1209에서 히스토리 카운터의 값이 리셋되면, 리셋된 히스토리 카운터 또는 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다. 블록 1208 또는 블록 1209에서 히스토리 카운터가 리셋되지 않으면, 이전 하나의 CTU에서 업데이트된 히스토리 카운터 또는 현재 CTU에서 후속 업데이트된 히스토리 카운터에 기반하여 CTU에서의 TU의 라이스 파라미터를 계산한다.
블록 1212에서, 과정(1200)은 계산된 라이스 파라미터에 기반하여, CTU에서의 TU의 이진 스트링 또는 이진 표현을 계수값으로 디코딩하는데 관한 것이고, 예컨대 VVC 규범에서 규정된 트렁케이티드 라이스(TR) 및 제한된 k차 EGK의 조합을 통해 디코딩한다. 블록 1214에서, 과정(1200)은 CTU에서의 TU의 픽셀값을 재구성하는데 관한 것이고, 예컨대 위에서 도 2에 대해 논의한 바와 같은 역양자화 및 역변환을 통해 재구성한다.
블록 1216에서, 과정(1200)은 병렬 코딩을 인에이블하는지 여부 및 CTU가 현재 CTU 행의 첫 번째 CTU인지 여부를 결정하는데 관한 것이다. 병렬 코딩이 인에이블되고 CTU가 현재 CTU 행의 첫 번째 CTU이면, 공식 (12) 또는 (18)에 도시된 바와 같이, 과정(1200)은 블록 1218에서, 히스토리 카운터의 값을 히스토리 카운터 스토리지 변수에 저장하는데 관한 것이다. 일부 예에서, 예컨대 공식 (19)에 도시된 바와 같이, 대안적인 라이스 파라미터 유도를 이용할 경우, 대체 변수 HistValue의 값은 스토리지 변수에 저장될 수도 있다. 블록 1216에서, 과정(1200)은 비디오의 디코딩 파티션을 출력하는데 관한 것이다.
다른 하나의 실시예에서, WPP 또는 다른 병렬 코딩 메커니즘이 히스토리 기반한 라이스 파라미터 유도와 함께 비트 스트림에서 공존하는 것을 방지한다. 예컨대, WPP가 인에이블되면, 히스토리 기반한 라이스 파라미터 유도를 인에이블하지 않을 수 있다. WPP가 인에이블되지 않으면, 히스토리 기반한 라이스 파라미터 유도를 인에이블할 수 있다. 유사하게, 히스토리 기반한 라이스 파라미터 유도가 인에이블되면, WPP를 인에이블하지 않을 수 있다. 예로서, 아래와 같이 신택스 변경을 수행할 수 있다.
7.3.2.22 시퀀스 파라미터 세트 범위 확장 신택스(추가된 내용은 밑줄이 그어져 있음)
다른 하나의 예로서, 아래와 같이 대응되는 시맨틱을 변경한다(변경된 부분은 밑줄이 그어져 있음).
위에서의 설명에서, 도면(예컨대 도 6)에서 TU를 도시하고 설명하였지만, 동일한 기술은 변환 블록(TB)에 적용될 수 있다. 다시 말해서, 위에서 제출한 실시예(도면을 포함함)에서, TU는 또한 TB를 나태낼 수 있다.
비디오 코딩된 종속 양자화를 구현하기 위한 컴퓨팅 시스템 예
임의의 적합한 컴퓨팅 시스템은 본 문에서 설명된 동작을 실행하는데 사용될 수 있다. 예컨대, 도 13은 도 1의 비디오 인코더(100) 또는 도 2의 비디오 디코더(200)를 구현할 수 있는 컴퓨팅 기기(1300)의 예를 설명한다. 일부 실시예에서, 컴퓨팅 기기(1300)는 프로세서(1312)를 포함할 수 있고, 프로세서(1312)는 메모리(1314)에 통신적으로 연결되어 메모리(1314)에 저장된 컴퓨터 실행 가능한 프로그램 코드 및 액세스 정보 중 적어도 하나를 실행한다. 프로세서(1312)는 마이크로 프로세서, 전용 집적 회로(ASIC), 상태 머신, 또는 다른 처리 기기를 포함할 수 있다. 프로세서(1312)는 복수 개의 처리 기기(하나의 처리 기기를 포함함) 중의 어느 하나를 포함할 수 있다. 이러한 프로세서는 명령어를 저장하는 컴퓨터 판독 가능한 매체를 포함할 수 있거나 명령어를 저장하는 컴퓨터 판독 가능한 매체와 통신될 수 있으며, 명령어가 프로세서(1312)에 의해 실행될 경우, 명령어는 프로세서로 하여금 본 문에서 설명된 동작을 실행하도록 한다.
메모리(1314)는 임의의 적합한 비 일시적 컴퓨터 판독 가능한 매체를 포함할 수 있다. 컴퓨터 판독 가능한 매체는 프로세서에 컴퓨터 판독 가능한 명령어 또는 다른 프로그램 코드를 제공할 수 있는 임의의 전자, 광학, 자기 또는 다른 저장 기기를 포함할 수 있다. 컴퓨터 판독 가능한 매체의 비 제한적인 예는 자기 디스크, 메모리 칩, ROM, RAM, ASIC, 구성된 프로세서, 광학 메모리, 자기 테이프 또는 다른 자기 메모리, 또는 컴퓨터 프로세서가 명령어를 판독할 수 있는 임의의 다른 매체를 포함한다. 명령어는 컴파일러 및 인터프리터 중 적어도 하나에 의해 임의의 적합한 컴퓨터 프로그래밍 언어로 작성된 코드에 의해 생성된 프로세서 특정 명령어를 포함하고, 임의의 적합한 컴퓨터 프로그래밍 언어는 예컨대 C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript 및 ActionScript를 포함한다.
컴퓨팅 기기(1300)는 또한 버스(1316)를 포함할 수 있다. 버스(1316)는 컴퓨팅 기기(1300)의 하나 또는 복수 개의 컴포넌트에 통신적으로 연결될 수 있다. 컴퓨팅 기기(1300)는 또한 입력 기기 또는 출력 기기와 같은 복수 개의 외부 기기 또는 내부 기기를 포함할 수 있다. 예컨대, 컴퓨팅 기기(1300)는 입력/출력(I/O) 인터페이스(1318)로 도시되고, I/O 인터페이스(1318)는 하나 또는 복수 개의 입력 기기(1320)로부터 입력을 수신하거나 하나 또는 복수 개의 출력 기기(1322)에 출력을 제공한다. 하나 또는 복수 개의 입력 기기(1320) 및 하나 또는 복수 개의 출력 기기(1322)는 I/O 인터페이스(1318)에 통신적으로 연결될 수 있다. 통신적인 연결은 임의의 적합한 방식(예컨대, 인쇄 회로 기판에 의해 연결되는 것, 케이블에 의해 연결되는 것, 무선 통신에 의해 통신되는 것 등)을 통해 구현될 수 있다. 입력 기기(1320)의 비 제한적인 예는 터치 스크린(예컨대, 터치 영역을 이미징하기 위한 하나 또는 복수 개의 카메라, 또는 터치로 인한 압력 변환을 검출하기 위한 압력 센서), 마우스, 키보드, 또는 컴퓨팅 기기의 사용자의 물리적 동작에 응답하여 입력 이벤트를 생성하기 위한 임의의 다른 기기를 포함한다. 출력 기기(1322)의 비 제한적인 예는 LCD 스크린, 외부 모니터, 스피커, 또는 컴퓨팅 기기에 의해 생성된 출력을 디스플레이하거나 다른 방식으로 나타내기 위한 임의의 다른 기기를 포함한다.
컴퓨팅 기기(1300)는 프로그램 코드를 실행할 수 있고, 프로그램 코드는 프로세서(1312)로 하여금 위에서 도 1 내지 도 12에 대해 설명한 동작 중의 하나 또는 복수 개의 동작을 실행하도록 구성된다. 프로그램 코드는 비디오 인코더(100) 또는 비디오 디코더(200)를 포함할 수 있다. 프로그램 코드는 메모리(1314) 또는 임의의 적합한 컴퓨터 판독 가능한 매체에 상주하고, 프로세서(1312) 또는 임의의 다른 적합한 프로세서에 의해 실행될 수 있다.
컴퓨팅 기기(1300)는 또한 적어도 하나의 네트워크 인터페이스 기기(1324)를 포함할 수 있다. 네트워크 인터페이스 기기(1324)는 하나 또는 복수 개의 데이터 네트워크(1328)의 유선 또는 무선 데이터와 연결을 구축하기에 적합한 임의의 기기 또는 기기 그룹을 포함할 수 있다. 네트워크 인터페이스 기기(1324)의 비 제한적인 예는 이더넷 네트워크 어댑터, 모뎀 등을 포함한다. 컴퓨팅 기기(1300)는 네트워크 인터페이스 기기(1324)를 거쳐 전자 신호 또는 광학 신호로서 메시지를 전송한다.
총체적 고려
청구되는 주제에 대한 전면적인 이해를 제공하기 위해, 본 문에서 많은 구체적인 세부 사항을 설명하였다. 그러나, 본 분야의 통상의 기술자는, 이러한 구체적인 세부 사항이 없는 경우에도, 청구되는 주제를 실시할 수 있음을 이해할 수 있다. 다른 경우, 청구되는 주제가 모호해지는 것을 피하기 위해, 통상의 기술자가 이미 알고 있는 방법, 장치 또는 시스템을 상세히 설명하지 않았다.
특별히 설명하지 않는 한, 본 명세서의 전체 논의에서 사용되는 “처리”, “컴퓨팅”, “계산”, “결정”, “식별” 등 용어는 컴퓨팅 기기(예컨대 하나 또는 복수 개의 컴퓨터 또는 유사한 하나 또는 복수 개의 전자 컴퓨팅 기기)의 동작 또는 과정을 지칭하며, 이러한 타입의 동작 또는 과정은 컴퓨팅 플랫폼의 메모리, 레지스터 또는 다른 정보 저장 기기, 전송 기기 또는 디스플레이 기기 내의 물리적 전자 또는 자기 양으로 나타내는 데이터를 조작하거나 전환한다.
본 문에서 논의된 하나 또는 복수 개의 시스템은 임의의 특정된 하드웨어 아키텍처 또는 구성에 한정되지 않는다. 컴퓨팅 기기는 하나 또는 복수 개의 입력으로서 조건적인 결과를 제공하는 컴포넌트의 임의의 적합한 배치를 포함한다. 적합한 컴퓨팅 기기는 저장된 소프트웨어를 액세스하는, 다용도 마이크로 프로세서에 기반한 컴퓨터 시스템을 포함하고, 저장된 소프트웨어는 컴퓨팅 시스템을 프로그래밍하거나 구성하여, 컴퓨터 시스템으로 하여금 범용 컴퓨팅 장치로부터 전용 컴퓨팅 장치로 변하도록 함으로써, 본 문의 주제의 하나 또는 복수 개의 실시예를 구현한다. 임의의 적합한 프로그램, 스크립트, 또는 다른 타입의 언어 또는 언어의 그룹은 컴퓨팅 기기를 프로그래밍하거나 구성하기 위한 소프트웨어에서 본 문에 포함된 교시를 구현하는데 사용될 수 있다.
본 문에서 개시된 방법의 실시예는 이러한 컴퓨팅 기기의 동작에서 실행될 수 있다. 상기 예에서 나타난 블록의 순서는 개변될 수 있으며, 예컨대, 블록은 서브 블록으로 재배열, 조합 및/또는 분해될 수 있다. 일부 블록 또는 과정은 병렬적으로 실행될 수 있다.
본 문에서“적합” 또는 “구성”의 사용은 추가 임무 또는 단계를 수행하는데 적합하거나 수행하도록 구성된 장비를 배제하지 않는 개방적이고 포괄적인 언어를 의미한다. 또한, “기반”의 사용은, 하나 또는 복수 개의 열거된 조건 또는 값에 “기반”한 과정, 단계, 계산 또는 다른 동작은, 실제로 추가적인 조건 또는 열거된 것을 초과한 값에 기반할 수 있으므로, 개방적이고 포괄적인 것을 의미한다. 본 문에 포함된 제목, 리스트 및 번호는 다만 설명의 편의를 위한 것일 뿐, 한정을 의미하는 것이다.
비록 본 문의 주제에 대한 구체적인 실시예에서 본 문의 주제를 상세히 설명하였지만, 본 분야의 통상의 기술자는 전술한 내용을 이해한 후, 이러한 실시예를 용이하게 개변, 변화 및 동등하게 교체할 수 있음을 이해해야 한다. 따라서, 본 발명은 제한적이 아닌 예시의 목적으로 제출된 것이고, 본 분야의 통상의 기술자에게 있어서 자명한, 본 문의 주제에 대한 이러한 수정, 변화 및 추가 중 적어도 하나를 포함하는 것을 배제하지 않는다.

Claims (40)

  1. 비디오를 디코딩하기 위한 방법으로서,
    상기 비디오의 파티션을 나타내는 이진 스트링을 액세스하는 단계 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여,
    라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며;
    상기 CTU를 디코딩하고, 상기 CTU를 디코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 상기 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 CTU에서의 상기 TU에 대응되는 이진 스트링을 상기 TU의 계수값으로 디코딩하는 것;
    상기 계수값에 따라 상기 CTU에서의 상기 TU의 픽셀값을 결정하는 것을 포함하는 단계; 및
    상기 비디오의 디코딩 파티션을 출력하는 단계 - 상기 디코딩 파티션은 상기 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 를 포함하는 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  2. 제1항에 있어서,
    상기 파티션은 프레임, 또는 슬라이스, 또는 타일인 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  3. 제1항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 단계는,
    히스토리 기반한 라이스 파라미터 유도가 인에이블되는 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 단계; 또는
    아래와 같이 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 단계; 중 하나 또는 복수 개의 단계를 포함하는 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  4. 제1항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 단계는,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 단계;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 단계; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 상기 라이스 파라미터를 유도하는 단계를 포함하는 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  5. 제4항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 단계는 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 단계를 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  6. 제4항에 있어서,
    상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 단계는,
    상기 계수의 상기 기설정된 인접 영역에서의 복수 개의 인접된 계수 중의 하나의 인접된 계수가 상기 TU 바깥에 위치하는 것으로 결정하는 단계; 및
    상기 대체 변수(HistValue)를 상기 TU 바깥에 위치하는 상기 인접된 계수의 값으로 사용하여, 상기 로컬 합 변수(locSumAbs)를 계산하는 단계를 포함하는 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  7. 제1항에 있어서,
    상기 CTU를 디코딩하는 단계는,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 단계; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 상기 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 단계를 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 비디오를 디코딩하기 위한 방법.
  8. 비 일시적 컴퓨터 판독 가능한 매체로서,
    상기 비 일시적 컴퓨터 판독 가능한 매체에는 프로그램 코드가 저장되고, 상기 프로그램 코드는 하나 또는 복수 개의 처리 기기에 의해 실행되어 복수 개의 동작을 실행하며, 상기 복수 개의 동작은,
    비디오의 파티션을 나타내는 이진 스트링을 액세스하는 동작 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며;
    상기 CTU를 디코딩하고, 상기 CTU를 디코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 CTU에서의 상기 TU에 대응되는 이진 스트링을 상기 TU의 계수값으로 디코딩하는 것;
    상기 계수값에 따라 상기 CTU에서의 상기 TU의 픽셀값을 결정하는 것을 포함하는 동작; 및
    상기 비디오의 디코딩 파티션을 출력하는 동작 - 상기 디코딩 파티션은 상기 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  9. 제8항에 있어서,
    상기 파티션은 프레임, 또는 슬라이스, 또는 타일인 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  10. 제8항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 동작은,
    히스토리 기반한 라이스 파라미터 유도가 인에이블되는 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 동작; 또는
    아래와 같이 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 동작; 중의 하나 또는 복수 개의 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  11. 제8항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 동작은,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 상기 라이스 파라미터를 유도하는 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  12. 제11항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작은 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 동작을 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  13. 제11항에 있어서,
    상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작은,
    상기 계수의 상기 기설정된 인접 영역에서의 복수 개의 인접된 계수 중의 하나의 인접된 계수가 상기 TU 바깥에 위치하는 것으로 결정하는 동작; 및
    상기 대체 변수(HistValue)를 상기 TU 바깥에 위치하는 상기 인접된 계수의 값으로 사용하여, 상기 로컬 합 변수(locSumAbs)를 계산하는 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  14. 제8항에 있어서,
    상기 CTU를 디코딩하는 동작은,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 동작; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 상기 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 동작을 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  15. 시스템으로서,
    처리 기기; 및
    상기 처리 기기에 통신적으로 연결된 비 일시적 컴퓨터 판독 가능한 매체를 포함하고, 상기 처리 기기는 상기 비 일시적 컴퓨터 판독 가능한 매체에 저장된 프로그램 코드를 실행함으로써, 복수 개의 동작을 실행하도록 구성되며, 상기 복수 개의 동작은,
    비디오의 파티션을 나타내는 이진 스트링을 액세스하는 동작 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 디코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하고;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하며;
    상기 CTU를 디코딩하고, 상기 CTU를 디코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 CTU에서의 상기 TU에 대응되는 이진 스트링을 상기 TU의 계수값으로 디코딩하는 것;
    상기 계수값에 따라 상기 CTU에서의 상기 TU의 픽셀값을 결정하는 것을 포함하는 동작; 및
    상기 비디오의 디코딩 파티션을 출력하는 동작 - 상기 디코딩 파티션은 상기 파티션 중 이미 디코딩된 복수 개의 CTU를 포함함 - 을 포함하는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 파티션은 프레임, 슬라이스, 또는 타일인 것을 특징으로 하는 시스템.
  17. 제15항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 동작은,
    히스토리 기반한 라이스 파라미터 유도가 인에이블되는 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 동작; 또는
    아래와 같은 공식으로 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 동작; 중의 하나 또는 복수 개의 동작을 포함하는 것을 특징으로 하는 시스템.
  18. 제15항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 동작은,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 상기 라이스 파라미터를 유도하는 동작을 포함하는 것을 특징으로 하는 시스템.
  19. 제18항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작은 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 동작을 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 시스템.
  20. 제15항에 있어서,
    상기 CTU를 디코딩하는 동작은,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 동작; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 상기 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 동작을 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 시스템.
  21. 비디오를 인코딩하기 위한 방법으로서,
    상기 비디오의 파티션을 액세스하는 단계 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 비디오의 상기 파티션을 처리하여, 상기 파티션의 이진 표현을 생성하며,
    상기 비디오의 상기 파티션을 처리하는 것은,
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것;
    상기 CTU를 인코딩하는 것을 포함하고,
    상기 CTU를 인코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 TU의 계수값을 상기 CTU에서의 상기 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 단계; 및
    상기 파티션의 상기 이진 표현을 상기 비디오의 비트 스트림에 인코딩하는 단계를 포함하는 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  22. 제21항에 있어서,
    상기 파티션은 프레임, 또는 슬라이스, 또는 타일인 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  23. 제21항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 단계는,
    히스토리 기반한 라이스 파라미터 유도가 인에이블되는 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 단계; 또는
    아래와 같이 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 단계; 중의 하나 또는 복수 개의 단계를 포함하는 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  24. 제21항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 단계는,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 단계;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 단계; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 상기 라이스 파라미터를 유도하는 단계를 포함하는 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  25. 제24항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 단계는 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 단계를 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  26. 제24항에 있어서,
    상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 단계는,
    상기 계수의 상기 기설정된 인접 영역에서의 복수 개의 인접된 계수 중의 하나의 인접된 계수가 상기 TU 바깥에 위치하는 것으로 결정하는 단계; 및
    상기 대체 변수(HistValue)를 상기 TU 바깥에 위치하는 상기 인접된 계수의 값으로 사용하여, 상기 로컬 합 변수(locSumAbs)를 계산하는 단계를 포함하는 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  27. 제21항에 있어서,
    상기 CTU를 인코딩하는 단계는,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 단계; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 상기 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 단계를 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 비디오를 인코딩하기 위한 방법.
  28. 비 일시적 컴퓨터 판독 가능한 매체로서,
    상기 비 일시적 컴퓨터 판독 가능한 매체에는 프로그램 코드가 저장되고, 상기 프로그램 코드는 하나 또는 복수 개의 처리 기기에 의해 실행되어 복수 개의 동작을 실행하며, 상기 복수 개의 동작은,
    비디오의 파티션을 액세스하는 동작 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 비디오의 상기 파티션을 처리하여, 상기 파티션의 이진 표현을 생성하며;
    상기 비디오의 상기 파티션을 처리하는 것은,
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것;
    상기 CTU를 인코딩하는 것을 포함하고,
    상기 CTU를 인코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 TU의 계수값을 상기 CTU에서의 상기 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 동작; 및
    상기 파티션의 상기 이진 표현을 상기 비디오의 비트 스트림에 인코딩하는 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  29. 제28항에 있어서,
    상기 파티션은 프레임, 또는 슬라이스, 또는 타일인 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  30. 제28항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 동작은,
    히스토리 기반한 라이스 파라미터 유도가 인에이블되는 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 동작; 또는
    아래와 같이 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 동작; 중의 하나 또는 복수 개의 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  31. 제28항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 동작은,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 라이스 파라미터를 유도하는 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  32. 제31항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작은 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 동작을 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  33. 제31항에 있어서,
    상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작은,
    상기 계수의 상기 기설정된 인접 영역에서의 복수 개의 인접된 계수 중의 하나의 인접된 계수가 상기 TU 바깥에 위치하는 것으로 결정하는 동작; 및
    상기 대체 변수(HistValue)를 상기 TU 바깥에 위치하는 상기 인접된 계수의 값으로 사용하여, 상기 로컬 합 변수(locSumAbs)를 계산하는 동작을 포함하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  34. 제28항에 있어서,
    상기 CTU를 인코딩하는 동작은,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 동작; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 상기 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 동작을 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능한 매체.
  35. 시스템으로서,
    처리 기기; 및
    상기 처리 기기에 통신적으로 연결된 비 일시적 컴퓨터 판독 가능한 매체를 포함하고, 상기 처리 기기는 상기 비 일시적 컴퓨터 판독 가능한 매체에 저장된 프로그램 코드를 실행함으로써, 복수 개의 동작을 실행하도록 구성되며, 상기 복수 개의 동작은,
    비디오의 파티션을 액세스하는 동작 - 상기 파티션은 복수 개의 코딩 트리 유닛(CTU)을 포함하고, 상기 복수 개의 CTU는 하나 또는 복수 개의 CTU 행을 형성함 - ;
    상기 비디오의 상기 파티션을 처리하여, 상기 파티션의 이진 표현을 생성하며,
    상기 비디오의 상기 파티션을 처리하는 것은,
    상기 파티션에서의 상기 복수 개의 CTU 중의 각 CTU의 경우,
    상기 CTU를 인코딩하기 전, 병렬 코딩이 인에이블되고 상기 CTU는 상기 파티션에서의 상기 하나 또는 복수 개의 CTU 행 중의 현재 CTU 행의 첫 번째 CTU인 것으로 결정하는 것;
    상기 병렬 코딩이 인에이블되고 상기 CTU가 상기 파티션에서의 상기 현재 CTU 행의 상기 첫 번째 CTU인 것으로 결정된 것에 응답하여, 라이스 파라미터를 계산하기 위한 색상 성분의 히스토리 카운터를 초기값으로 설정하는 것;
    상기 CTU를 인코딩하는 것을 포함하고,
    상기 CTU를 인코딩하는 것은,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 변환 유닛(TU)의 라이스 파라미터를 계산하는 것;
    계산된 라이스 파라미터에 기반하여, 상기 TU의 계수값을 상기 CTU에서의 상기 TU에 대응되는 이진 표현으로 인코딩하는 것을 포함하는 동작; 및
    상기 파티션의 상기 이진 표현을 상기 비디오의 비트 스트림에 인코딩하는 동작을 포함하는 것을 특징으로 하는 시스템.
  36. 제35항에 있어서,
    상기 파티션은 프레임, 또는 슬라이스, 또는 타일인 것을 특징으로 하는 시스템.
  37. 제35항에 있어서,
    상기 라이스 파라미터를 계산하기 위한 색상 성분(cIdx)의 히스토리 카운터를 초기값으로 설정하는 동작은,
    히스토리 기반한 라이스 파라미터 유도가 인에이블된 것으로 결정된 것에 응답하여, 아래와 같이 상기 초기값을 계산하되,
    StatCoeff[cIdx] = 2 * Floor(Log2(BitDepth - 10)),
    StatCoeff는 상기 히스토리 카운터를 나타내고, BitDepth는 상기 비디오의 루마 및 크로마 어레이의 샘플의 비트 깊이을 규정하며, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내고, Log2(x)는 2를 베이스로 한 x의 대수인 동작; 또는
    아래와 같이 상기 초기값을 계산하되,
    StatCoeff[idx] = Clip(MIN_Stat, MAX_Stat, (int) ((19 - QP)/6))-l,
    MIN_Stat 및 MAX_Stat는 사전 정의된 두 개의 정수이고, QP는 각 슬라이스의 초기 QP이며, Clip()는,
    Clip(x, y, z) =
    로 정의된 연산인 동작; 중의 하나 또는 복수 개의 동작을 포함하는 것을 특징으로 하는 시스템.
  38. 제35항에 있어서,
    상기 히스토리 카운터에 기반하여, 상기 CTU에서의 TU의 라이스 파라미터를 계산하는 동작은,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작;
    상기 계수의 기설정된 인접 영역에서의 인접된 계수의 값 및 상기 대체 변수(HistValue)를 사용하여, 상기 CTU의 TU에서의 계수의 로컬 합 변수(locSumAbs)를 계산하는 동작; 및
    상기 로컬 합 변수(locSumAbs)에 기반하여, 상기 TU의 라이스 파라미터를 유도하는 동작을 포함하는 것을 특징으로 하는 시스템.
  39. 제38항에 있어서,
    상기 히스토리 카운터에 기반하여, 대체 변수(HistValue)를 결정하는 동작은 아래와 같이 계산하는 것을 통해 색상 성분(cIdx)의 대체 변수(HistValue)를 결정하는 동작을 포함하고,
    HistValue[cIdx] = 1<<StatCoeff[cIdx],
    StatCoeff는 상기 히스토리 카운터를 나타내는 것을 특징으로 하는 시스템.
  40. 제35항에 있어서,
    상기 CTU를 인코딩하는 동작은,
    TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 abs_remainder로 코딩된 것으로 결정된 것에 응답하여, 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1로 업데이트하는 동작; 및
    상기 TU에서의 첫 번째 비 제로의 골롬-라이스 코딩된 변환 계수가 dec_abs_level로 인코딩된 것으로 결정된 것에 응답하여, 상기 색상 성분(cIdx)의 히스토리 카운터를,
    StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1로 업데이트하는 동작을 추가로 포함하고,
    StatCoeff는 상기 히스토리 카운터를 나타내고, Floor(x)는 x보다 작거나 같은 최대 정수를 나타내며, Log2(x)는 2를 베이스로 한 x의 대수인 것을 특징으로 하는 시스템.
KR1020247009923A 2021-08-26 2022-08-26 비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도 KR20240049359A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202163260600P 2021-08-26 2021-08-26
US63/260,600 2021-08-26
US202163251385P 2021-10-01 2021-10-01
US63/251,385 2021-10-01
US202163262078P 2021-10-04 2021-10-04
US63/262,078 2021-10-04
PCT/US2022/075502 WO2023028578A2 (en) 2021-08-26 2022-08-26 History-based rice parameter derivations for wavefront parallel processing in video coding

Publications (1)

Publication Number Publication Date
KR20240049359A true KR20240049359A (ko) 2024-04-16

Family

ID=85322280

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247009923A KR20240049359A (ko) 2021-08-26 2022-08-26 비디오 코딩에서 파면 병렬 프로세싱에 사용되는 히스토리 기반한 라이스 파라미터 유도
KR1020247007116A KR20240049294A (ko) 2021-08-26 2022-08-26 다용도 비디오 코딩을 위한 조작 범위 확장

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020247007116A KR20240049294A (ko) 2021-08-26 2022-08-26 다용도 비디오 코딩을 위한 조작 범위 확장

Country Status (6)

Country Link
US (1) US20240179323A1 (ko)
EP (1) EP4393152A2 (ko)
KR (2) KR20240049359A (ko)
AU (2) AU2022333140A1 (ko)
CA (2) CA3229953A1 (ko)
WO (3) WO2023028578A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11997317B2 (en) * 2021-09-29 2024-05-28 Tencent America LLC Techniques for constraint flag signaling for range extension with persistent rice adaptation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017535145A (ja) * 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
US10616604B2 (en) * 2015-09-01 2020-04-07 Qualcomm Incorporated Coefficient level coding in video coding
KR20220063273A (ko) * 2019-09-24 2022-05-17 후아웨이 테크놀러지 컴퍼니 리미티드 다층 비디오 비트스트림에 대한 dpb 파라미터의 시그널링 기법
CN115567717B (zh) * 2019-12-31 2023-11-28 华为技术有限公司 编码器、解码器及对应方法和装置
JP7270012B2 (ja) * 2020-09-17 2023-05-09 レモン インコーポレイテッド 映像動作点レコード構文及びセマンティクス
EP4218244A4 (en) * 2020-10-26 2024-03-13 Beijing Bytedance Network Technology Co., Ltd. DECODER CONFIGURATION INFORMATION IN VCP VIDEO ENCODING
WO2022131870A1 (ko) * 2020-12-17 2022-06-23 엘지전자 주식회사 Nal 유닛 어레이 정보를 포함하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일 전송 방법
WO2022139260A1 (ko) * 2020-12-21 2022-06-30 엘지전자 주식회사 미디어 파일을 생성하고 처리하는 방법 및 장치

Also Published As

Publication number Publication date
CA3229953A1 (en) 2023-03-02
EP4393152A2 (en) 2024-07-03
KR20240049294A (ko) 2024-04-16
AU2022333140A1 (en) 2024-02-08
WO2023028578A3 (en) 2023-04-06
AU2022334740A1 (en) 2024-03-14
WO2023028576A2 (en) 2023-03-02
WO2023028576A3 (en) 2023-03-30
WO2023028578A2 (en) 2023-03-02
WO2023028580A1 (en) 2023-03-02
CA3226431A1 (en) 2023-03-02
US20240179323A1 (en) 2024-05-30

Similar Documents

Publication Publication Date Title
JP2018110405A (ja) 係数走査のための係数グループおよび係数コーディング
CN110199524B (zh) 一种在计算设备中实现的方法
US9860560B2 (en) Method for palette mode coding
EP2777258A1 (en) Binarization of prediction residuals for lossless video coding
KR20210031776A (ko) 영상 정보 부호화 및 복호화 방법
KR102586674B1 (ko) 경계 강제 파티션에 대한 개선
EP3251365A1 (en) Coding escape pixels for palette mode coding
CN114009015A (zh) 转换省略块的传讯编码技术
US20240179323A1 (en) Operation range extension for versatile video coding
WO2023028555A1 (en) Independent history-based rice parameter derivations for video coding
WO2021263251A1 (en) State transition for dependent quantization in video coding
CN117837140A (zh) 用于视频编码中波前并行处理的基于历史的莱斯参数推导
WO2023060140A1 (en) History-based rice parameter derivations for video coding
CN118264807A (en) Video decoding method, encoding method, decoding device, and encoding device
WO2023023608A2 (en) History-based rice parameter derivations for video coding
CN117837148A (zh) 用于视频编解码的基于历史的莱斯编码参数推导
WO2023086956A1 (en) Initialization processing for video coding
CN117981306A (zh) 用于视频编码的独立基于历史的莱斯参数推导
WO2022217245A1 (en) Remaining level binarization for video coding
WO2023212684A1 (en) Subblock coding inference in video coding
WO2023200933A1 (en) Cross-component model adjustment for video coding
WO2022213122A1 (en) State transition for trellis quantization in video coding
WO2022192902A1 (en) Remaining level binarization for video coding
WO2023172851A1 (en) Model adjustment for local illumination compensation in video coding
WO2023168257A2 (en) State transition of dependent quantization for aom enhanced compression model