KR20240027581A - 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체 - Google Patents

인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체 Download PDF

Info

Publication number
KR20240027581A
KR20240027581A KR1020237040066A KR20237040066A KR20240027581A KR 20240027581 A KR20240027581 A KR 20240027581A KR 1020237040066 A KR1020237040066 A KR 1020237040066A KR 20237040066 A KR20237040066 A KR 20237040066A KR 20240027581 A KR20240027581 A KR 20240027581A
Authority
KR
South Korea
Prior art keywords
last
identifier information
zero coefficient
component
value
Prior art date
Application number
KR1020237040066A
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 KR20240027581A publication Critical patent/KR20240027581A/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/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/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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
    • 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/18Methods 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 set of transform coefficients
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 출원의 실시예는 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체를 공개하였고, 상기 방법은, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하는 단계; 및 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하는 단계를 포함한다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 압축 효율을 향상시킬 수 있다.

Description

인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체
본 출원의 실시예는 비디오 인코딩 및 디코딩 기술 분야에 관한 것으로서, 특히 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체에 관한 것이다.
비디오 디스플레이 품질에 대한 사람들의 요구가 향상됨에 따라, 컴퓨터 시각 관련 분야는 점점 더욱 많이 주목받고 있다. 근래에 들어, 이미지 처리 기술은 다양한 산업 분야에서 모두 성공적으로 적용되고 있다. 비디오 이미지의 인코딩 및 디코딩 과정의 경우, 인코딩단에서, 인코딩될 이미지 데이터에 대해, 변환 및 양자화 처리를 거친 후 엔트로피 코딩 유닛을 통해 압축 인코딩을 수행하고, 엔트로피 코딩 처리 후 생성된 비트 스트림을 디코딩단에 송신하며; 다음, 비트 스트림을 파싱한 다음, 역양자화 및 역변환 처리를 거친 후, 원시 입력된 이미지 데이터를 획복할 수 있다.
현재, 고 비트 폭, 고 품질 및 고 비트 레이트의 비디오 인코딩 및 디코딩(약칭으로 “3 고 비디오”임)은 비교적 낮은 비트 폭, 저 품질 및 저 비트 레이트의 비디오 인코딩 및 디코딩(“일반적인 비디오”로 지칭할 수 있음)에 비해, 일반적으로 인코딩 및 디코딩해야 하는 계수가 더욱 많고, 계수가 더욱 크다. 이로써, 3 고 비디오의 경우, 이미 존재하는 관련 방안은 비트 스트림에서 더욱 큰 오버헤드를 초래하여, 낭비될 수 있다.
본 출원의 실시예는, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실 압축의 비디오 인코딩 및 디코딩 시나리오에 적용될 수 있고, 압축 효율을 향상시킬 수 있는, 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체를 제공한다.
본 출원의 실시예의 기술 방안은 아래와 같이 구현될 수 있다.
제1 측면에 있어서, 본 출원의 실시예는 디코더에 적용되는 디코딩 방법을 제공하고, 상기 방법은,
비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계;
성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하는 단계; 및
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하는 단계를 포함한다.
제2 측면에 있어서, 본 출원의 실시예는 인코더에 적용되는 인코딩 방법을 제공하고, 상기 방법은,
현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계;
성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계; 및
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하는 단계를 포함한다.
제3 측면에 있어서, 본 출원의 실시예는 비트 스트림을 제공하고, 상기 비트 스트림은 인코딩될 정보에 따라 비트 인코딩을 수행하여 생성된 것이고, 인코딩될 정보는, 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보, 제3 신택스 요소 식별자 정보, 성분 식별자 정보, 마지막 하나의 계수 인에이블 식별자 정보 및 서브 블록 디폴트 인코딩 식별자 정보 중 적어도 하나를 포함하며; 여기서,
제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는지 여부를 지시하기 위한 것이고, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 지시하기 위한 것이며, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하는지 여부를 지시하기 위한 것이고, 성분 식별자 정보는 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하기 위한 것이며, 마지막 하나의 계수 인에이블 식별자 정보는 현재 블록이 마지막 하나의 계수 위치를 사용하는지 여부를 지시하기 위한 것이고, 서브 블록 디폴트 인코딩 식별자 정보는 현재 블록 내의 인코딩될 서브 블록에 대한 인코딩이 디폴트인지 여부를 지시하기 위한 것이며; 여기서, 현재 시퀀스는 현재 슬라이스를 포함하고, 현재 슬라이스는 현재 블록을 포함한다.
제4 측면에 있어서, 본 출원의 실시예는 인코더를 제공하고, 상기 인코더는 제1 결정 유닛 및 코딩 유닛을 포함하며; 여기서,
제1 결정 유닛은, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하도록 구성되고;
제1 결정 유닛은 또한, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되며;
코딩 유닛은, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하도록 구성된다.
제5 측면에 있어서, 본 출원의 실시예는 인코더를 제공하고, 상기 인코더는 제1 메모리 및 제1 프로세서를 포함하며; 여기서,
제1 메모리는, 제1 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이고;
제1 프로세서는, 컴퓨터 프로그램을 작동할 경우, 제2 측면에 따른 방법을 실행하기 위한 것이다.
제6 측면에 있어서, 본 출원의 실시예는 디코더를 제공하고, 상기 디코더는 파싱 유닛 및 제2 결정 유닛을 포함하며; 여기서,
파싱 유닛은, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되고;
제2 결정 유닛은, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하도록 구성되며;
파싱 유닛은 또한, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하도록 구성된다.
제7 측면에 있어서, 본 출원의 실시예는 디코더를 제공하고, 상기 디코더는 제2 메모리 및 제2 프로세서를 포함하며; 여기서,
제2 메모리는, 제2 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이고;
제2 프로세서는, 컴퓨터 프로그램을 작동할 경우, 제1 측면에 따른 방법을 실행하기 위한 것이다.
제8 측면에 있어서, 본 출원의 실시예는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되어 있으며, 상기 컴퓨터 프로그램이 실행될 경우 제1 측면에 따른 방법을 구현하거나, 제2 측면에 따른 방법을 구현한다.
본 출원의 실시예는 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체를 제공하고, 인코더에서, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하며; 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하고; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입한다. 디코더에서, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하며; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하고; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정한다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 또한 성분 식별자 정보를 이용하여 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식을 각각 제어할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
도 1은 관련 기술에서 제공한 인코딩 프레임워크의 응용 예시도이다.
도 2는 관련 기술에서 제공한 현재 계수와, 서로 인접된 계수의 위치 관계 예시도이다.
도 3은 관련 기술에서 제공한 bin의 산술 디코딩 과정의 흐름 예시도이다.
도 4는 관련 기술에서 제공한 이진 심볼의 산술 디코딩 과정의 흐름 예시도이다.
도 5는 관련 기술에서 제공한 산술 디코딩 엔진의 재정규화의 흐름 예시도이다.
도 6은 관련 기술에서 제공한 바이패스 디코딩 과정의 흐름 예시도이다.
도 7은 관련 기술에서 제공한 비제로 계수가 가능하게 있는 영역과 강제로 0인 영역의 위치 관계 예시도이다.
도 8a는 본 출원의 실시예에서 제공한 인코더의 시스템 구성 예시도이다.
도 8b는 본 출원의 실시예에서 제공한 디코더의 시스템 구성 예시도이다.
도 9는 본 출원의 실시예에서 제공한 디코딩 방법의 흐름 예시도이다.
도 10a는 본 출원의 실시예에서 제공한 마지막 하나의 비제로 계수의 위치가 현재 블록 왼쪽 위 모서리에 대한 위치 예시도이다.
도 10b는 본 출원의 실시예에서 제공한 마지막 하나의 비제로 계수의 위치가 현재 블록 오른쪽 아래 모서리에 대한 위치 예시도이다.
도 11은 본 출원의 실시예에서 제공한 인코딩 방법의 흐름 예시도이다.
도 12는 본 출원의 실시예에서 제공한 인코더의 구성 구조 예시도이다.
도 13은 본 출원의 실시예에서 제공한 인코더의 구체적인 하드웨어 구조 예시도이다.
도 14는 본 출원의 실시예에서 제공한 디코더의 구성 구조 예시도이다.
도 15는 본 출원의 실시예에서 제공한 디코더의 구체적인 하드웨어 구조 예시도이다.
본 출원의 실시예의 특징과 기술적 내용을 더욱 상세하게 이해하기 위해, 아래에서 첨부 도면을 결합하여 본 출원의 실시예의 구현에 대해 상세히 설명하며, 첨부된 도면은 다만 설명의 참조를 위한 것일 뿐, 본 출원의 실시예를 한정하려는 것은 아니다.
별도로 정의되지 않은 한, 본 문에서 사용되는 모든 기술 용어 및 과학 용어는 본 출원의 기술 분야에 속하는 통상의 기술자가 일반적으로 이해하는 의미와 동일하다. 본 문에서 사용되는 용어는 다만 본 출원의 실시예의 목적을 설명하기 위한 것일 뿐, 본 출원을 한정하려는 것이 아니다.
아래의 설명에서, "일부 실시예"가 언급되며, 이는 모든 가능한 실시예의 서브 세트를 설명하지만, 이해해야 할 것은, “일부 실시예”는 모든 가능한 실시예의 동일한 서브 세트 또는 상이한 서브 세트일 수 있고, 충돌되지 않는 경우 서로 결합될 수 있다. 더 유의해야 할 것은, 본 출원에서 언급된 용어 “제1/제2/제3”은 다만 유사한 대상을 구별하기 위한 것일 뿐, 대상에 대한 특정 배열 순서를 의미하지 않으며, 이해할 수 있는 것은, “제1/제2/제3”은 허용되는 경우 특정된 순서 또는 선후 순서를 호환하여, 여기서 설명된 본 출원의 실시예로 하여금 여기서 도시되거나 설명된 것 이외의 순서로 실시될 수 있도록 할 수 있다.
비디오 이미지에서, 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 사용하여 코딩 블록(Coding Block, CB)을 나타낸다. 여기서, 상기 3 개의 이미지 성분은 각각 하나의 휘도 성분, 하나의 청색 색도 성분 및 하나의 적색 색도 성분이고, 구체적으로, 휘도 성분은 일반적으로 심볼 Y를 사용하여 나타내고, 청색 색도 성분은 일반적으로 심볼 Cb 또는 U를 사용하여 나타내며, 적색 색도 성분은 일반적으로 심볼 Cr 또는 V를 사용하여 나타냄으로써; 비디오 이미지는 YCbCr 포맷으로 나타낼 수 있고, YUV 포맷으로 나타낼 수도 있다.
본 출원의 실시예를 상세히 설명하기 전, 먼저 본 출원의 실시예에서 언급되는 명사 및 용어에 대해 설명하며, 본 출원의 실시예에서 언급되는 명사 및 용어는 아래와 같은 해석에 적용된다.
동적 이미지 전문가 그룹(Moving Picture Experts Group, MPEG)
연합 비디오 전문가 그룹(Joint Video Experts Team, JVET)
오픈 미디어 연합(Alliance for Open Media, AOM)
차세대 비디오 인코딩 표준 H.266/다기능 비디오 인코딩(Versatile Video Coding, VVC)
VVC의 참조 소프트웨어 테스트 플랫폼(VVC Test Model, VTM)
오디오 비디오 인코딩 표준(Audio Video Standard, AVS)
AVS의 고성능 테스트 모델(High-Performance Model, HPM)
콘텍스트에 기반한 적응적 2진 산술 인코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC)
원시 바이트 시퀀스 페이로드(Raw Byte Sequence Payload, RBSP)
일반 잔차 코딩(Regular Residual Coding, RRC)
변환 스킵 잔차 코딩(Transform Skip Residual Coding, TSRC)
이해할 수 있는 것은, 현재 범용적인 비디오 인코딩 및 디코딩 표준(예컨대 VVC)은 모두 블록에 기반한 혼합 인코딩 프레임워크를 사용한다. 비디오 이미지에서의 각 프레임은 동일한 크기(예컨대 128×128, 64×64 등)의 정사각형의 최대 코딩 유닛(Largest Coding Unit, LCU)으로 분할되고, 각 최대 코딩 유닛은 또한 규칙에 따라 직사각형의 코딩 유닛(Coding Unit, Cu)으로 구획될 수 있으며; 또한 코딩 유닛은 더욱 작은 예측 유닛(Prediction Unit, PU), 변환 유닛(Transform Unit, TU) 등으로 구획될 수 있다. 구체적으로, 도 1에 도시된 바와 같이, 혼합 인코딩 프레임워크는 예측(Prediction), 변환(Transform), 양자화 (Quantization), 엔트로피 코딩(Entropy Coding), 인 루프 필터링(In Loop Filter) 등 모듈을 포함할 수 있다. 여기서, 예측 모듈은 프레임 내 예측(Intra Prediction) 및 프레임 간 예측(Inter Prediction)을 포함할 수 있고, 프레임 간 예측은 모션 추정(Motion Estimation) 및 모션 보상(Motion Compensation)을 포함할 수 있다. 비디오 이미지의 하나의 프레임 내의 서로 인접된 픽셀 사이에 매우 강한 연관성이 존재하므로, 비디오 인코딩 및 디코딩 기술에서 프레임 내 예측 방식을 사용하여 서로 인접된 픽셀 사이의 공간 중복을 소거할 수 있으며; 그러나 비디오 이미지에서의 서로 인접된 프레임 사이에도 매우 강한 유사성이 존재하므로, 비디오 인코딩 및 디코딩 기술에서 프레임 간 예측 방식을 사용하여 서로 인접된 프레임 사이의 시간 중복을 소거함으로써, 인코딩 및 디코딩 효율을 향상시킬 수 있다.
비디오 코덱의 기본 프로세스는 아래와 같으며, 즉 인코더에서, 하나의 프레임 이미지를 블록으로 구획하고, 현재 블록에 대해 프레임 내 예측 또는 프레임 간 예측을 사용하여 현재 블록의 예측 블록을 생성하며, 현재 블록의 원시 블록에서 예측 블록을 감하여 잔차 블록을 획득하고, 잔차 블록에 대해 변환 및 양자화를 수행하여 양자화 계수 매트릭스를 획득하며, 양자화 계수 매트릭스에 대해 엔트로피 코딩을 수행하고 비트 스트림에 출력한다. 디코더에서, 현재 블록에 대해 프레임 내 예측 또는 프레임 간 예측을 사용하여 현재 블록의 예측 블록을 생성하고, 다른 한 측면으로 비트 스트림을 디코딩하여 양자화 계수 매트릭스를 획득하고, 양자화 계수 매트릭스에 대해 역양자화 및 역변환을 수행하여 잔차 블록을 획득하며, 예측 블록 및 잔차 블록을 서로 가하여 재구성 블록을 획득한다. 재구성 블록은 재구성 이미지를 구성하며, 이미지 또는 블록에 기반하여 재구성 이미지에 대해 인 루프 필터링을 수행하여 디코딩 이미지를 획득한다. 인코더도 마찬가지로 디코더와 유사한 조작으로 디코딩 이미지를 획득해야 한다. 디코딩 이미지는 향후의 프레임을 위해 프레임 간 예측의 참조 프레임으로 사용될 수 있다. 인코더에 의해 결정된 블록 구획 정보, 예측, 변환, 양자화, 엔트로피 코딩, 인 루프 필터링 등 모드 정보 또는 파라미터 정보는 필요할 경우 비트 스트림에 출력되어야 하고; 다음 디코더는 파싱을 통해 기존의 정보에 따라 분석하여 인코더와 동일한 블록 구획 정보, 예측, 변환, 양자화, 엔트로피 코딩, 인 루프 필터링 등 모드 정보 또는 파라미터 정보를 결정함으로써, 인코더에 의해 획득된 디코딩 이미지와 디코더에 의해 획득된 디코딩 이미지가 동일하도록 보장한다. 인코더에 의해 획득된 디코딩 이미지는 일반적으로 재구성 이미지로 지칭될 수도 있다. 예측할 경우 현재 블록을 예측 유닛으로 구획할 수 있고, 변환할 경우 현재 블록을 변환 유닛으로 구획할 수 있으며, 예측 유닛 및 변환 유닛의 구획은 상이할 수 있다. 전술한 것은 블록에 기반한 혼합 인코딩 프레임워크 하에서의 비디오 인코더 및 디코더의 기본 프로세스이고, 기술이 발전함에 따라, 상기 프레임워크 또는 프로세스의 일부 모듈 또는 단계는 최적화될 수 있으며, 본 출원의 실시예는 상기 블록에 기반한 혼합 인코딩 프레임워크 하에서의 비디오 코덱의 기본 프로세스에 적용되지만, 상기 프레임워크 및 프로세스에 한정되지 않는다.
본 출원의 실시예에서, 현재 블록(Current Block)은 현재 코딩 유닛(CU), 현재 예측 유닛(PU), 또는 현재 변환 블록(TU) 등일 수 있다. 여기서, 블록 구획 정보, 예측, 변환, 양자화의 다양한 모드 및 파라미터 정보, 계수 등은 엔트로피 코딩을 통해 비트 스트림에 기입된다. 상이한 요소의 확률이 상이한 것으로 가정하고, 출현되는 확률이 비교적 큰 요소를 위해 비교적 짧은 코드 워드를 할당하고, 출현되는 확률이 비교적 작은 요소를 위해 비교적 작은 코드 워드를 할당하면, 고정 길이 인코딩에 비해 더욱 높은 인코딩 효율을 획득할 수 있다. 그러나 상이한 요소의 확률이 비슷하거나 기본적으로 동일하면, 엔트로피 코딩의 압축 공간이 제한된다. CABAC는 일반적으로 사용되는 엔트로피 코딩 방법이고, HEVC 및 VVC 등은 모두 CABAC를 사용하여 엔트로피 코딩을 수행한다. CABAC는 콘텍스트 모델을 사용하여 압축 효율을 향상시킬 수 있지만, 콘텍스트 모드의 사용 및 업데이트는 조작이 더욱 복잡해지도록 한다. CABAC에는 바이패스(bypass) 모드가 있고, 바이패스 모드에서 콘텍스트 모델을 사용하고 콘텍스트 모델을 업데이트할 필요가 없으므로, 더욱 높은 스루풋(throughput)을 달성할 수 있다. 본 출원의 실시예에서, CABAC 중 사용 및 업데이트해야 하는 콘텍스트 모델의 모드를 콘텍스트 모드로 지칭한다.
일반적인 경우, 먼저 정의된 방법에 따라 콘텍스트 모델을 결정하고, 정의된 이진 심볼의 산술 디코딩 과정을 호출할 경우, 콘텍스트 모델의 파라미터는 입력으로 사용될 수 있다. 콘텍스트 모델의 선택은 서로 인접된 계수 사이에서 의존 관계가 존재할 수 있다. 예컨대, 도 2는 관련 기술에서 제공한 현재 계수와, 서로 인접된 계수의 위치 관계 예시도를 도시한다. 도 2에서, 흑색으로 충진한 블록은 현재 계수를 나타내고, 그리드 선으로 충진된 블록은 서로 인접된 계수를 나타내며; 도 2에 도시된 바와 같이, 현재 계수의 sig_coeff_flag가 어느 콘텍스트 모델을 선택할 지는 오른 쪽과 아래 쪽 및 오른 쪽 아래의 서로 인접된 5 개의 계수의 정보에 따라 결정해야 한다. 도 2에 따라 추가로 볼 수 있다 시피, 콘텍스트 모드의 조작은 바이패스 모드의 조작에 비해 더욱 많이 복잡하고, 서로 인접된 계수 사이의 의존성이 있다.
CABAC의 산술 인코딩 엔진의 경우, 콘텍스트 모드를 사용해야 하면, 정의된 이진 심볼의 산술 디코딩 과정을 호출해야 하며, 여기서 상태 전이 과정 즉 콘텍스트 모델의 업데이트가 포함된다. 이진 심볼의 산술 디코딩 과정에서 산술 디코딩 엔진의 재정규화 과정을 호출한다. 바이패스 모드를 사용할 경우 바이패스 디코딩 과정을 호출해야 한다.
아래에서 VVC에서 CABAC를 사용하는 것을 예로 들어 소개한다.
CABAC의 산술 인코딩 엔진의 경우, 산술 디코딩 과정의 입력은 ctxTable, ctxIdx, bypassFlag 및 산술 디코딩 엔진의 상태 변수 ivlCurrRange 및 ivlOffset이고, 산술 디코딩 과정의 출력은 bin의 값이다.
여기서, ctxTable은 콘텍스트 모드를 선택할 경우 사용한 테이블이고, ctxIdx는 콘텍스트 모델 인덱스이다.
도 3은 관련 기술에서 제공한 bin의 산술 디코딩 과정의 흐름 예시도를 도시한다. 도 3에 도시된 바와 같이, bin의 값을 디코딩하기 위해, 콘텍스트 인덱스 테이블 ctxTable, 콘텍스트 모델 인덱스ctxIdx, 바이패스 모드 인에이블 플래그 bypassFlag를 입력으로서 산술 디코딩 과정 DecodeBin(ctxTable, ctxIdx, bypassFlag)에 전송되며, 구체적으로 아래와 같다.
bypassFlag의 값이 1이면, 바이패스 디코딩 과정DecodeBypass()을 호출하고;
그렇지 않은 경우, bypassFlag의 값은 0이고, ctxTable의 값은 0이며, ctxIdx의 값이 0이면, 디코딩 종료 과정 DecodeTerminate()을 호출하며;
그렇지 않은 경우(bypassFlag의 값이 0이고 ctxTable의 값이 0이 아님), 정의된 이진 심볼의 산술 디코딩 과정DecodeDecision(ctxTable, ctxIdx)을 호출한다.
더 나아가, 이진 심볼의 산술 디코딩 과정의 경우, 상기 과정의 입력은 변수 ctxTable, ctxIdx, ivlCurrRange 및 ivlOffset이고, 상기 과정의 출력은 디코딩된 값 binVal과, 업데이트된 후의 변수 ivlCurrRange 및 ivlOffset이다.
도 4는 관련 기술에서 제공한 이진 심볼의 산술 디코딩 과정의 흐름 예시도를 도시한다. 도 4에 도시된 바와 같이, DecodeDecision(ctxTable, ctxIdx)을 이용하여 콘텍스트 인덱스 테이블 ctxTable, 콘텍스트 모델 인덱스ctxIdx, 산술 디코딩 엔진의 상태 변수 ivlCurrRange 및 ivlOffset를 입력할 수 있다. 여기서, pStateIdx0 및 pStateIdx1은 현재 콘텍스트 모델의 두 개의 상태이다.
(1) 변수 ivlLpsRange의 값은 아래와 같은 방법에 따라 도출된다.
ivlCurrRange의 현재값이 주어지면, 변수 qRangeIdx는 아래와 같은 방법에 따라 도출된다.
qRangeIdx=ivlCurrRange >>5
qRangeIdx과, ctxTable 및 ctxIdx에 대응되는 pStateIdx0 및 pStateIdx1이 주어지면, valMps 및 ivlLpsRange는 아래와 같은 방법에 따라 도출된다.
pState=pStateIdx1+16ХpStateIdx0;
valMps=pState >>14;
ivlLpsRange=(qRangeIdx×((valMps?32767-pState:pState)>>9)>>1)+4.
(2) 변수 ivlCurrRange의 값을 ivlCurrRange-ivlLpsRange로 설정하고, 아래와 같은 조작을 실행한다.
ivlOffset가 ivlCurrRange보다 크거나 같으면, 변수 binVal의 값은 1-valMps이고, 변수 ivlOffset 및 ivlCurrRange를 업데이트하며, 여기서, ivlOffset의 값은 ivlOffset에서 ivlCurrRange를 감한 것이고, ivlCurrRange의 값은 ivlLpsRange이며;
그렇지 않은 경우(ivlOffset가 ivlCurrRange보다 작음), 변수 binVal의 값은 valMps이다.
binVal의 값이 주어지고, 정의된 상태 전이(statetransition)를 실행한다. ivlCurrRange의 현재값에 기반하여, 정의된 재정규화(renormalization)를 실행할 수 있다.
더 나아가, 상태 전이 과정의 경우, 상기 과정의 입력은 현재의 pStateIdx0 및 pStateIdx1과, 해제한 값 binVal이고; 출력은 업데이트된 ctxTable 및 ctxIdx에 대응되는 콘텍스트 변수 pStateIdx0 및 pStateIdx1이다. 여기서, 변수 shift0 및 shift1은 shiftIdx에 의해 도출되고, 여기서 shiftIdx와 ctxTable 및 ctxIdx의 대응 관계를 정의하였으며, 아래와 같다.
shift0=(shiftIdx >>2)+2;
shift1=(shiftIdx& 3)+3+shift0.
해제된 값 binVal에 기반하여, ctxTable 및 ctxIdx에 대응되는 두 개의 변수 pStateIdx0 및 pStateIdx1의 업데이트는 아래와 같다.
pStateIdx0=pStateIdx0-(pStateIdx0 >>shift0)+(1023ХbinVal >>shift0);
pStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383ХbinVal >>shift1).
더 나아가, 산술 디코딩 엔진의 재정규화 과정의 입력은 슬라이스 데이터 중의 bits와, 변수 ivlCurrRange 및 ivlOffset이고, 출력은 업데이트된 변수 ivlCurrRange 및 ivlOffset이다.
도 5는 관련 기술에서 제공한 산술 디코딩 엔진의 재정규화의 흐름 예시도를 도시하며, 도 5에 도시된 바와 같이, ReNormD 과정에 진입하고, ivlCurrRange의 현재값은 우선적으로 256과 비교하며, 향후 단계는 아래와 같다.
ivlCurrRange가 256보다 크거나 같으면, 재정규화할 필요가 없고, RenormD 과정이 종료되며;
그렇지 않은 경우(ivlCurrRange가 256보다 작음), 재정규화 순환에 진입한다. 이 순환에서, ivlCurrRange의 값에 2를 곱하며, 즉 왼쪽으로 한 비트 이동한다. ivlOffset의 값에 2를 곱하고, 즉 왼쪽으로 한 비트 이동한다. read_bits(1)를 사용하여 획득된 한 비트는 vlOffset에 옮겨지며, 구체적으로 아래와 같다.
ivlCurrRange=ivlCurrRange<<1;
ivlOffset=ivlOffset<<1;
ivlOffset=ivlOffset |read_bits(1).
전체 과정에서 비트 스트림 중의 데이터는 ivlOffset가 ivlCurrRange보다 크거나 같도록 하지 않아야 한다.
더 나아가, 이진 심볼의 바이패스 디코딩 과정의 입력은 슬라이스 데이터의 bits와, 변수 ivlCurrRange 및 ivlOffset이고, 출력은 업데이트된 변수 ivlOffset 및 해제된 값 binVal이다.
bypassFlag가 1일 경우 바이패스 디코딩 과정이 호출되고, 도 6은 관련 기술에서 제공한 바이패스 디코딩 과정의 흐름 예시도를 도시하며, 도 6에 도시된 바와 같이, 먼저 변수 ivlOffset를 업데이트하고, 즉 ivlOffset의 값에 2를 곱하며, 다시 말해서 왼쪽으로 한 비트 이동한다. read_bits(1)를 사용하여 획득된 한 비트는 ivlOffset에 옮겨지며, 구체적으로 아래와 같다.
ivlOffset=ivlOffset<<1;
ivlOffset=ivlOffset |read_bits(1).
다음, ivlOffset의 값은 ivlCurrRange의 값과 비교되며, 향후 단계는 아래와 같다.
ivlOffset가 ivlCurrRange보다 크거나 같으면, binVal의 값은 1로 설정되고, ivlOffset는 ivlOffset에서 ivlCurrRange를 감한 것과 같으며;
그렇지 않은 경우(ivlOffset가 ivlCurrRange보다 작음), binVal의 값은 0으로 설정된다.
전체 과정에서 비트 스트림 중의 데이터는 ivlOffset가 ivlCurrRange보다 크거나 같도록 하지 않아야 한다.
더 이해해야 할 것은, 현재의 비디오 인코딩 및 디코딩 표준에서, 잔차에 대해 일반적으로 하나 또는 복수 개의 변환(transform) 및 변환 스킵(transform skip)을 지원한다. 변환은 이산 코사인 변환(Discrete Cosine Transform, DCT) 등이 있고, 변환된 잔차 블록을 사용하여 변환(및 양자화) 이후 일반적으로 일정한 특성을 반영하며, 예컨대 특정된 변환(및 양자화) 후 에너지가 저주파 영역에 대부분 집중되므로 인해 왼쪽 위 모서리의 영역 계수가 비교적 크고, 오른쪽 아래 모서리의 영역 계수가 비교적 작으며 심지어 많은 0 계수가 출현될 수 있다. 변환 스킵의 경우, 말 그대로 변환하지 않으며, 변환 스킵 후의 계수의 분포 규칙과 변환 후의 계수는 상이하므로, 상이한 계수 인코딩 방법을 사용할 수 있다. 예컨대 VVC에서 변환 스킵 후의 계수에 대해 RRC를 사용하고, 변환 스킵한 계수에 대해 TSRC를 사용한다.
DCT 변환과 같은 일반적인 변환의 경우, 이때 변환된 후의 블록은, 왼쪽으로부터 오른쪽으로 대표된 주파수는 낮은 데로부터 높아지고, 아래로부터 위로 대표된 주파수는 낮은 데로부터 높아진다. 왼쪽 위 모서리는 저주파를 대표하고, 오른쪽 아래 모서리는 고주파를 대표한다. 사람 눈은 저주파의 정보에 대해 더욱 민간하고, 고주파의 정보에 대해서는 민감하지 않다. 이러한 특성을 이용하여, 일부 고주파의 정보가 더욱 많이 처리되거나 제거되어도 시각에 대한 영향이 작다. 강제 제로 아웃(zero-out)과 같은 일부 기술에서, 특정된 고주파 정보를 강제로 제로 아웃시킬 수 있다. 예컨대 64x64의 블록에 대해, 횡좌표가 32보다 크거나 같고, 또는 종좌표가 32보다 크거나 같은 위치의 계수를 강제적으로 제로 아웃시킬 수 있다. 전술한 것은 다만 하나의 간단한 예일 뿐이고, zero-out의 범위는 더욱 많은 복잡한 도출 방법이 있을 수 있으며, 여기서 더이상 반복하여 설명하지 않는다. 도 7에 도시된 바와 같이, 왼쪽 위 모서리 부분에는 비제로 계수(즉 비제로 계수가 가능하게 있는 영역)가 존재할 수 있고, 오른쪽 아래 모서리 부분은 모두 제로 아웃(즉 강제로 0인 영역)된다. 이로써, 뒤쪽의 계수 인코딩의 경우, 강제 제로 아웃(zero-out)된 영역의 계수가 무조건 0이므로 인코딩할 필요가 없다.
더 나아가, 일반적인 비디오의 잔차를 변환(및 양자화)한 후 계수 분포는 왼쪽 위 모서리 계수가 비교적 크고 오른쪽 아래 모서리는 0 계수가 많은 특성을 나타내고, 계수를 인코딩할 경우 일반적으로 일부 방법을 사용하여 왼쪽 위 모서리의 일정한 범위 내의 계수는 인코딩되어야 하도록 하고, 오른쪽 아래 모서리의 일정한 범위 내의 계수는 인코딩될 필요가 없도록 하며, 다시 말해서 이러한 계수가 0인 것으로 디폴트한다. 하나의 방법으로서, 하나의 블록의 계수를 인코딩할 경우, 먼저, 상기 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 위치를 결정한다. 상기 위치를 결정한 후, 스캔 순서에서의 마지막 하나의 비제로 계수의 위치 뒤쪽의 계수는 모두 0인 것으로 간주하고, 즉 인코딩될 필요가 없으며; 다만 마지막 하나의 비제로 계수 위치 및 이전의 계수를 인코딩해야 한다. 예컨대 VVC에서, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix를 사용하여 마지막 하나의 비제로 계수의 위치(LastSignificantCoeffX, LastSignificantCoeffY)를 결정한다.
(a) last_sig_coeff_x_prefix는 현재 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수평(또는 열) 좌표의 프리픽스(prefix)를 결정한다. last_sig_coeff_x_prefix의 값은 0으로부터 (log2ZoTbWidth<<1)-1 및 이 두 개의 경계 값을 포함하는 범위 내에 있어야 한다.
last_sig_coeff_x_prefix가 존재하지 않으면, last_sig_coeff_x_prefix의 값은 0이다.
(b) last_sig_coeff_y_prefix는 현재 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수직(또는 열) 좌표의 프리픽스(prefix)를 결정한다. last_sig_coeff_y_prefix의 값은 0으로부터 (log2ZoTbHeight<<1)-1 및 이 두 개의 경계값을 포함하는 범위 내에 있어야 한다.
last_sig_coeff_y_prefix가 존재하지 않으면, last_sig_coeff_y_prefix의 값은 0이다.
(c) last_sig_coeff_x_suffix는 현재 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수평(또는 열) 좌표의 서픽스(suffix)를 결정한다. last_sig_coeff_x_suffix의 값은 0으로부터 (1<< ((last_sig_coeff_x_prefix>>1)-1))-1 및 이 두 개의 경계값을 포함하는 범위 내에 있어야 한다.
현재 변환 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수평(또는 열) 좌표의 값 LastSignificantCoeffX는 아래와 같은 방법에 따라 도출된다.
last_sig_coeff_x_suffix가 존재하지 않으면,
LastSignificantCoeffX = last_sig_coeff_x_prefix이고;
그렇지 않은 경우 (last_sig_coeff_x_suffix가 존재함),
LastSignificantCoeffX=(1<<((last_sig_coeff_x_prefix>>1)-1)) *(2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix이다.
(d) last_sig_coeff_y_suffix는 현재 변환 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수직(또는 열) 좌표의 서픽스(suffix)를 결정한다. last_sig_coeff_x_suffix의 값은 0으로부터 (1<< ((last_sig_coeff_y_prefix>>1)-1))-1 및 이 두 개의 경계값을 포함하는 범위 내에 있어야 한다.
현재 변환 블록 중 스캔 순서에서의 마지막 하나의 비제로 계수의 수직(또는 열) 좌표의 값 LastSignificantCoeffY는 아래와 같은 방법에 따라 도출된다.
last_sig_coeff_y_suffix가 존재하지 않으면,
LastSignificantCoeffY = last_sig_coeff_y_prefix이고;
그렇지 않은 경우 (last_sig_coeff_y_suffix가 존재함),
LastSignificantCoeffY=(1<<((last_sig_coeff_y_prefix>>1)-1))*(2+(last_ sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix이다.
더 나아가, 마지막 하나의 비제로 계수 및 이전의 계수를 모두 인코딩해야 하지만, 일반적인 비디오에서, 이러한 계수에서 일정한 비례의 계수는 여전히 0이며, VVC에서 현재 서브 블록이 인코딩되었는지 여부를 나타내는 플래그 sb_coded_flag를 사용하여 현재 서브 블록 중의 계수를 인코딩해야 하는지 여부를 결정한다. 인코딩할 필요가 없으면 현재 서브 블록 중의 계수가 모두 0인 것으로 간주한다. 여기서, 서브 블록은 일반적으로 n×n인 서브 블록이고, 예컨대 4×4인 서브 블록이다.
sb_coded_flag[xS][yS]는 현재 변환 블록 중 (xS, yS)에 위치한 서브 블록의 아래와 같은 정보를 결정하고, 여기서, 서브 블록은 변환 계수값의 어레이이다.
sb_coded_flag[xS][yS]의 값이 0이면, 현재 변환 블록 중 (xS, yS)에 위치한 서브 블록 내의 모든 변환 계수의 값은 0이고;
sb_coded_flag[xS][yS]가 존재하지 않으면, sb_coded_flag[xS][yS]의 값은 1이다.
더 나아가, 계수 인코딩을 처리할 경우, 계수의 특성을 이용하여 압축 효율을 향상시킬 수 있다. 예컨대, 일반적인 비디오의 경우, 인코딩해야 하는 계수에서, 일정한 비례의 계수는 0이므로, 하나의 신택스 요소를 사용하여 현재 계수가 0인지 여부를 나타낼 수 있으며, 상기 신택스 요소는 일반적으로 하나의 이진 심볼이다. 현재 계수가 0이면, 현재 계수에 대한 인코딩이 이미 종료된 것을 의미하고; 그렇지 않은 경우, 현재 계수를 계속하여 인코딩해야 한다. 또 예컨대, 일반적인 비디오의 경우, 0이 아닌 계수에서, 일정한 비례의 계수의 절대값은 1이므로, 하나의 신택스 요소를 사용하여 현재 계수의 절대값이 1보다 큰지 여부를 나타낼 수 있으며, 상기 신택스 요소는 일반적으로 하나의 이진 심볼이다. 현재 계수의 절대값이 1보다 크지 않으면, 현재 계수에 대한 인코딩이 이미 종료된 것을 의미하고; 그렇지 않은 경우, 현재 계수를 계속하여 인코딩해야 한다. 예컨대, VVC에서 언급된 신택스 요소는 아래와 같다.
sig_coeff_flag[xC][yC]는 현재 변환 블록이 변환 계수 위치(xC, yC)에서의 대응되는 변환 계수가 비제로 계수인지 여부를 결정하는데 사용된다.
sig_coeff_flag[xC][yC]의 값이 0이면, (xC, yC) 위치의 변환 계수의 값은 0으로 설정되고;
그렇지 않은 경우(sig_coeff_flag[xC][yC]의 값이 1임), (xC, yC) 위치의 변환 계수는 비제로 계수이다.
sig_coeff_flag[xC][yC]가 존재하지 않으면, 아래와 같은 판단을 한다.
transform_skip_flag[x0][y0][cIdx]의 값이 0이거나 sh_ts_residual_ coding_disabled_flag의 값이 1이면,
(xC, yC)가 스캔 순서에서의 마지막 하나의 비제로 계수의 위치(LastSignificantCoeffX, LastSignificantCoeffY)이거나 아래의 조건이 모두 진실이면, sig_coeff_flag[xC][yC]의 값이 1인 것으로 추단하고;
(xC&((1<<log2SbW)-1), yC& ((1<<log2SbH)-1))은 (0, 0)과 같고;
inferSbDcSigCoeffFlag의 값은 1과 같으며;
sb_coded_flag[xS][yS]의 값은 1이고;
그렇지 않은 경우, sig_coeff_flag[xC][yC]의 값은 0인 것으로 추단되며;
그렇지 않은 경우(transform_skip_flag[x0][y0][cIdx]의 값이 1이고 sh_ts_residual_coding _disabled_flag의 값이 0임),
아래의 조건의 모두 진실이면, sig_coeff_flag[xC][yC]의 값은 1인 것으로 추단되고;
(xC&((1<<log2SbW)-1), yC&((1<<log2SbH)-1))은 ((1<<log2SbW)-1, (1<<
log2SbH)-1)과 같고;
inferSbSigCoeffFlag의 값은 1이며;
sb_coded_flag[xS][yS]의 값은 1이고;
그렇지 않은 경우, sig_coeff_flag[xC][yC]의 값은 0으로 추단된다.
Abs_level_gtx_flag[n][j]는 (스캔 순서 n 번째)변환 계수의 절대값이 (j<<1)+1보다 큰지 여부를 결정하는데 사용된다. Abs_level_gtx_flag[n][j]가 존재하지 않으면, abs_level_gtx_flag[n][j]의 값은 0이다.
이로써, 상기 플래그(또는 신택스 요소로 지칭됨)를 처리한 후, 현재 계수가 인코딩 종료되지 않으면, 계수 절대값의 나머지 값을 인코딩해야 한다. VVC에서의 abs_remainder와 같다.
abs_remainder[n]은 스캔 순서 n 번째 변환 계수의, Golomb-Rice로 인코딩된 나머지 절대값을 결정하는데 사용된다. abs_remainder[n]가 존재하지 않으면, abs_remainder[n]의 값은 0이다.
더 나아가, VVC에서, sig_coeff_flag 및 abs_level_gtx_flag 등 신택스 요소는 콘텍스트 모드를 사용하여 인코딩되고, abs_remainder은 바이패스 모드를 사용하여 인코딩된다. 위에서 제기된 콘텍스트 모드 인코딩은 바이패스 모드 인코딩에 비해 더욱 복잡하며, 즉 직관적으로 이해하면 처리가 더욱 느리며, 인코딩해야 하는 계수가 많고, 많은 콘텍스트 모드를 사용하여 인코딩하면 디코딩 속도에 양향을 준다. 따라서 콘텍스트 모드를 사용하여 인코딩된 신택스 요소의 개수를 한정할 수 있으며, 예컨대 콘텍스트 모드를 사용하여 인코딩된 이진 심볼의 개수가 하나의 임계값을 초과한 후, 향후의 계수 인코딩은 바이패스 모드를 강제적으로 사용하여 인코딩된다. VVC에서의 dec_abs_level와 같다.
dec_abs_level[n]은 스캔 위치 n에서의, Golomb-Rice를 사용하여 인코딩된 하나의 중간값이다. dec_abs_level[n]을 파싱할 경우 ZeroPos[n]을 도출할 수 있고, 위치 (xC, yC)에서의 양자화 계수의 절대값 AbsLevel[xC][yC]은 아래와 같은 방법에 따라 도출된다.
dec_abs_level[n]가 존재하지 않거나 dec_abs_level[n]의 값이 ZeroPos[n]과 동일하면, AbsLevel[xC][yC]의 값은 0이고;
그렇지 않은 경우, dec_abs_level[n]의 값이 ZeroPos[n]보다 작으면, AbsLevel[xC][yC]의 값은 dec_abs_level[n]+1이며;
그렇지 않은 경우(dec_abs_level[n]의 값이 ZeroPos[n]보다 큼), AbsLevel[xC][yC]의 값은 dec_abs_level[n]이다.
위에서 언급된 것은 모두 계수의 절대값이고, 비제로 계수의 사인은 계수 사인 플래그(coeff_sign_flag) 또는 일부 사인 도출 방법을 사용하여 결정될 수 있다. coeff_sign_flag[n]은 아래와 같은 방법에 따라 스캔 위치 n의 변환 계수의 사인을 결정할 수 있다.
coeff_sign_flag[n]의 값이 0이면, 대응되는 변환 계수는 양의 값이고;
그렇지 않은 경우(coeff_sign_flag[n]의 값이 1임), 대응되는 변환 계수는 음의 값이다.
coeff_sign_flag[n]가 존재하지 않으면, coeff_sign_flag[n]의 값은 0이며; 이 경우 CoeffSignLevel[xC][yC]에 따라 좌표(xC, yC)에서의 변환 계수의 사인을 결정한다.
coeffSignLevel[xC][yC]의 값이 0이면, 대응되는 변환 계수는 0이고;
그렇지 않은 경우, CoeffSignLevel[xC][yC]의 값이 1이면, 대응되는 변환 계수는 양의 값이고; 그렇지 않은 경우(CoeffSignLevel[xC][yC]의 값이 -1임), 대응되는 변환 계수는 음의 값이다.
더 설명해야 할 것은, CoeffSignLevel[xC][yC]는 또한 다른 일부 방법을 사용하여 도출될 수 있으며, 여기서 더이상 반복하여 설명하지 않는다.
또한, VVC에서 하나의 계수의 값의 기우성 플래그par_level_flag를 더 사용한다. 상기 플래그에 따라 현재 계수의 값의 기우성을 알 수 있고, 현재 계수의 값 및 의존 양자화(Dependent Quantization)를 결정하는데 사용될 수 있다.
par_level_flag[n]은 스캔 순서에 따라 위치 n의 변환 계수의 기우성을 결정한다. par_level_flag[n]가 존재하지 않으면, par_level_flag[n]의 값은 0이다.
par_level_flag는 변환 계수의 기우성을 결정하는 것 이외에 또한 abs_level_gtx_flag, abs_remainder 등과 공동으로 계수의 크기를 결정하는데 사용될 수 있다.
여기서, 콘텍스트 모드 인코딩은, 콘텍스트 모드를 선택, 사용 및 업데이트해야 하지만, 바이패스 모드 인코딩은, 콘텍스트 모드를 선택, 사용 및 업데이트할 필요가 없으므로, 일반적인 방법으로는 일정한 범위 내에서 콘텍스트 모드로 인코딩된 신택스 요소를 함께 놓고, 바이패스 모드로 인코딩된 신택스 요소를 함께 놓으며, 이로써 하드웨어 설계에 더욱 우호적이다. 예컨대 먼저 하나의 블록 중의 콘텍스트 모드로 인코딩된 모든 신택스 요소를 처리 완료한 다음, 바이패스 모드로 인코딩된 신택스 요소를 처리한다. 현재 블록 중의 콘텍스트 모드로 인코딩된 모든 신택스 요소는 몇 개의 그룹으로 나뉠 수 있고, 하나의 블록 중의 바이패스 모드로 인코딩된 모든 신택스 요소는 몇 개의 그룹으로 나뉠 수 있다.
하나의 구체적인 예에서, RRC의 구체적인 신택스는 표 1에서와 같다.
residual_coding(x0,y0,log2TbWidth,log2TbHeight,cIdx){ Descriptor
if(sps_mts_enabled_flag && cu_sbt_flag && cIdx==0 &&
log2TbWidth == 5 && log2TbHeight<6)
log2ZoTbWidth=4
else
log2ZoTbWidth=Min(log2TbWidth,5)
if(sps_mts_enabled_flag && cu_sbt_flag && cIdx==0 &&
log2TbWidth<6 && log2TbHeight == 5)
log2ZoTbHeight=4
else
log2ZoTbHeight=Min(log2TbHeight,5)
if(log2TbWidth >0)
last_sig_coeff_x_prefix ae(v)
if(log2TbHeight >0)
last_sig_coeff_y_prefix ae(v)
if(last_sig_coeff_x_prefix> 3)
last_sig_coeff_x_suffix ae(v)
if(last_sig_coeff_y_prefix> 3)
last_sig_coeff_y_suffix ae(v)
log2TbWidth=log2ZoTbWidth
log2TbHeight=log2ZoTbHeight
remBinsPass1=((1<<(log2TbWidth+log2TbHeight))Х7)>>2
log2SbW=(Min(log2TbWidth,log2TbHeight)< 2 ?1: 2)
log2SbH=log2SbW
if(log2TbWidth+log2TbHeight>3)
if(log2TbWidth<2){
log2SbW=log2TbWidth
log2SbH=4-log2SbW
} elseif(log2TbHeight<2){
log2SbH=log2TbHeight
log2SbW=4-log2SbH
}
numSbCoeff=1<<(log2SbW+log2SbH)
lastScanPos=numSbCoeff
lastSubBlock=(1<<(log2TbWidth+log2TbHeight-(log2SbW+log2SbH)))-1
do {
if(lastScanPos ==0){
lastScanPos=numSbCoeff
lastSubBlock--
}
lastScanPos--
xS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[lastSubBlock][0]
yS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[lastSubBlock][1]
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][lastScanPos][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][lastScanPos][1]
} while((xC != LastSignificantCoeffX) | | (yC != LastSignificantCoeffY))
if(lastSubBlock ==0 && log2TbWidth>=2 && log2TbHeight>=2 &&
!transform_skip_flag[x0][y0][cIdx] && lastScanPos >0)
LfnstDcOnly=0
if((lastSubBlock >0 && log2TbWidth>=2 && log2TbHeight>=2) | |
(lastScanPos>7 && (log2TbWidth == 2 | | log2TbWidth == 3) &&
log2TbWidth == log2TbHeight))
LfnstZeroOutSigCoeffFlag=0
if((lastSubBlock >0 | | lastScanPos >0) && cIdx==0)
MtsDcOnly=0
QState=0
for(i=lastSubBlock; i >=0; i--){
startQStateSb=QState
xS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[i][0]
yS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH]
[i][1]
inferSbDcSigCoeffFlag=0
if(i<lastSubBlock && I >0){
sb_coded_flag[xS][yS] ae(v)
inferSbDcSigCoeffFlag=1
}
if(sb_coded_flag[xS][yS] && (xS>3 | | yS>3) && cIdx==0)
MtsZeroOutSigCoeffFlag=0
firstSigScanPosSb=numSbCoeff
lastSigScanPosSb=-1
firstPosMode0=(i == lastSubBlock ? lastScanPos : numSbCoeff-1)
firstPosMode1=firstPosMode0
for(n=firstPosMode0;n>=0 && remBinsPass1>=4; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if(sb_coded_flag[xS][yS] && (n >0 | | !inferSbDcSigCoeffFlag) &&
(xC != LastSignificantCoeffX | | yC != LastSignificantCoeffY)){
sig_coeff_flag[xC][yC] ae(v)
remBinsPass1--
if(sig_coeff_flag[xC][yC])
inferSbDcSigCoeffFlag=0
}
if(sig_coeff_flag[xC][yC]){
abs_level_gtx_flag[n][0] ae(v)
remBinsPass1--
if(abs_level_gtx_flag[n][0]){
par_level_flag[n] ae(v)
remBinsPass1--
abs_level_gtx_flag[n][1] ae(v)
remBinsPass1--
}
if(lastSigScanPosSb == -1)
lastSigScanPosSb=n
firstSigScanPosSb=n
}
AbsLevelPass1[xC][yC]=sig_coeff_flag[xC][yC]+par_level_flag[n]+
abs_level_gtx_flag[n][0]+2Хabs_level_gtx_flag[n][1]
if(sh_dep_quant_used_flag)
QState=QStateTransTable[QState][AbsLevelPass1[xC][yC]&1]
firstPosMode1=n-1
}
for(n=firstPosMode0; n>firstPosMode1; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if(abs_level_gtx_flag[n][1])
abs_remainder[n] ae(v)
AbsLevel[xC][yC]=AbsLevelPass1[xC][yC]+2Хabs_remainder[n]
}
for(n=firstPosMode1;n>=0; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if(sb_coded_flag[xS][yS])
dec_abs_level[n] ae(v)
if(AbsLevel[xC][yC]>0){
if(lastSigScanPosSb == -1)
lastSigScanPosSb=n
firstSigScanPosSb=n
}
if(sh_dep_quant_used_flag)
QState=QStateTransTable[QState][AbsLevel[xC][yC]&1]
}
signHiddenFlag=sh_sign_data_hiding_used_flag &&
(lastSigScanPosSb-firstSigScanPosSb>3 1:0)
for(n=numSbCoeff-1;n>=0; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if((AbsLevel[xC][yC]>0) &&
(!signHiddenFlag | | (n != firstSigScanPosSb)))
coeff_sign_flag[n] ae(v)
}
if(sh_dep_quant_used_flag){
QState=startQStateSb
for(n=numSbCoeff-1;n>=0; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if(AbsLevel[xC][yC]>0)
TransCoeffLevel[x0][y0][cIdx][xC][yC]=
(2ХAbsLevel[xC][yC]-(QState>1?1:0))Х
(1-2Хcoeff_sign_flag[n])
QState=QStateTransTable[QState][AbsLevel[xC][yC]&1]
}
} else{
sumAbsLevel=0
for(n=numSbCoeff-1;n>=0; n--){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if(AbsLevel[xC][yC]>0){
TransCoeffLevel[x0][y0][cIdx][xC][yC] =
AbsLevel[xC][yC]Х(1-2Хcoeff_sign_flag[n])
if(signHiddenFlag){
sumAbsLevel += AbsLevel[xC][yC]
if(n == firstSigScanPosSb && sumAbsLevel % 2 ==1)
TransCoeffLevel[x0][y0][cIdx][xC][yC] =
-TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
}
}
}
}
}
여기서, 어레이 AbsLevel[xC][yC]는 현재 변환 블록의 변환 계수의 절대값의 어레이를 대표한다. 어레이 AbsLevelPass1[xC][yC]는 현재 변환 블록의 변환 계수의 일부 재구성의 절대값의 어레이를 대표한다. 어레이의 인덱스 xC 및 yC는 현재 변환 블록 중의 (xC, yC) 위치를 나타낸다.
residual_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx)함수에 진입한 후, zero-out 후의 블록 사이즈의 대수 log2ZoTbWidth, log2ZoTbHeight와 같은 일부 블록 사이즈의 정보를 결정해야 하고, 횡좌표가 [0, (1<<log2ZoTbWidth)-1]이고, 종좌표가 [0, (1<<log2ZoTbHeight)-1] 인 범위 내의 계수는 비제로 계수일 수 있다. 여기서, (1<<log2ZoTbWidth)는 zero-out 후의 변환 블록의 너비를 나타내고, (1<< log2ZoTbHeight)는 zero-out 후의 변환 블록의 높이를 나타낸다. 다음 last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix 등에 따라 마지막 하나의 비제로 계수의 위치를 결정한다. 스캔 순서에서의 마지막 하나의 비제로 계수 이전의 계수는 비제로 계수이다. 다음 remBinsPass1의 값을 결정하고, 즉 공식 remBinsPass1=((1<<(log2TbWidth+log2TbHeight))×7)>>2를 사용하여 결정한다. remBinsPass1로 현재 블록 중 콘텍스트 모드를 사용하여 인코딩된 신택스 요소의 개수가 결정될 수 있고, 본 출원의 실시예는 remBinsPass1을 remaining binaries inpass1의 의미로 이해할 수 있으며, 다시 말해서 제1 라운드 중 나머지의 이진 심볼의 개수이다. 스캔 순서에서의 마지막 하나의 비제로 계수 이전의 계수를 인코딩해야 한다. 이러한 계수가 위치한 서브 블록에 대해, 현재 서브 블록을 인코딩해야 하는지 여부를 순차적으로 결정하고, 인코딩해야 하면, 상기 방법에서 하나의 서브 블록 중 콘텍스트 모드로 인코딩된 신택스 요소를 제1 라운드에 놓고, 바이패스 모드로 인코딩된 신택스 요소를 뒤쪽에 놓는다. 각 계수는 콘텍스트 모드로 인코딩된 최대 4 개의 신택스 요소, 즉 1 개의 sig_coeff_flag, 2 개의 abs_level_gtx_flag 및 1 개의 par_level_flag를 처리해야 할 수 있다. 제1 라운드에서, 매 회 하나의 콘텍스트 모드로 인코딩된 신택스 요소를 처리 완료할 때마다 remBinsPass1이 1 감소될 수 있다. 하나의 계수가 충분히 크면, 제1 라운드에서 콘텍스트 모드로 인코딩된 몇 개의 신택스 요소를 처리 완료한 후 나머지 값, 즉 abs_remainder을 처리해야 한다. remBinsPass1이 이미 충분히 작으면(remBinsPass1>=4를 만족하지 않음), 제1 라운드는 종료되고, 나머지의 계수는 바이패스 모드, 즉 dec_abs_level을 직접 사용하여 처리할 수 있다.
다른 하나의 예에서, TSRC의 구체적인 신택스는 표 2에서와 같다.
residual_ts_coding(x0,y0,log2TbWidth,log2TbHeight,cIdx){ Descriptor
log2SbW=(Min(log2TbWidth,log2TbHeight)<2 ?1: 2)
log2SbH=log2SbW
if(log2TbWidth+log2TbHeight>3)
if(log2TbWidth<2){
log2SbW=log2TbWidth
log2SbH=4-log2SbW
} elseif(log2TbHeight<2){
log2SbH=log2TbHeight
log2SbW=4-log2SbH
}
numSbCoeff=1<<(log2SbW+log2SbH)
lastSubBlock=(1<<(log2TbWidth+log2TbHeight-(log2SbW+log2SbH)))-1
inferSbCbf=1
RemCcbs=((1<<(log2TbWidth+log2TbHeight))Х7)>>2
for(i =0; i <= lastSubBlock; i++){
xS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH][i][0]
yS=DiagScanOrder[log2TbWidth-log2SbW][log2TbHeight-log2SbH][i][1]
if(i != lastSubBlock | | !inferSbCbf)
sb_coded_flag[xS][yS] ae(v)
if(sb_coded_flag[xS][yS] && i<lastSubBlock)
inferSbCbf=0
/ХFirstscanpass Х/
inferSbSigCoeffFlag=1
lastScanPosPass1=-1
for(n=0;n <= numSbCoeff-1 && RemCcbs>=4; n++){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
lastScanPosPass1=n
if(sb_coded_flag[xS][yS] &&
(n != numSbCoeff-1 | | !inferSbSigCoeffFlag)){
sig_coeff_flag[xC][yC] ae(v)
RemCcbs--
if(sig_coeff_flag[xC][yC])
inferSbSigCoeffFlag=0
}
CoeffSignLevel[xC][yC]=0
if(sig_coeff_flag[xC][yC]){
coeff_sign_flag[n] ae(v)
RemCcbs--
CoeffSignLevel[xC][yC]=(coeff_sign_flag[n]>0 ?-1:1)
abs_level_gtx_flag[n][0] ae(v)
RemCcbs--
if(abs_level_gtx_flag[n][0]){
par_level_flag[n] ae(v)
RemCcbs--
}
}
AbsLevelPass1[xC][yC]=
sig_coeff_flag[xC][yC]+par_level_flag[n]+abs_level_gtx_flag[n][0]
}
/ХGreater than Xscanpass(numGtXFlags=5)Х/
lastScanPosPass2=-1
for(n=0;n <= numSbCoeff-1 && RemCcbs>=4; n++){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
AbsLevelPass2[xC][yC]=AbsLevelPass1[xC][yC]
for(j=1; j<5; j++){
if(abs_level_gtx_flag[n][j-1]){
abs_level_gtx_flag[n][j] ae(v)
RemCcbs--
}
AbsLevelPass2[xC][yC]+=2Хabs_level_gtx_flag[n][j]
}
lastScanPosPass2=n
}
/Хremainderscanpass Х/
for(n=0;n <= numSbCoeff-1; n++){
xC=(xS<<log2SbW)+DiagScanOrder[log2SbW][log2SbH][n][0]
yC=(yS<<log2SbH)+DiagScanOrder[log2SbW][log2SbH][n][1]
if((n <= lastScanPosPass2 && AbsLevelPass2[xC][yC]>=10) | |
(n>lastScanPosPass2 && n <= lastScanPosPass1 &&
AbsLevelPass1[xC][yC]>= 2) | |
(n>lastScanPosPass1 && sb_coded_flag[xS][yS]))
abs_remainder[n] ae(v)
if(n <= lastScanPosPass2)
AbsLevel[xC][yC]=AbsLevelPass2[xC][yC]+2Хabs_remainder[n]
elseif(n <= lastScanPosPass1)
AbsLevel[xC][yC]=AbsLevelPass1[xC][yC]+2Хabs_remainder[n]
else{ /Хbypass Х/
AbsLevel[xC][yC]=abs_remainder[n]
if(abs_remainder[n])
coeff_sign_flag[n] ae(v)
}
if(BdpcmFlag[x0][y0][cIdx] ==0 && n <= lastScanPosPass1){
absLeftCoeff=xC >0 ? AbsLevel[xC-1][yC]:0
absAboveCoeff =yC >0 ? AbsLevel[xC][yC-1]:0
predCoeff=Max(absLeftCoeff,absAboveCoeff)
if(AbsLevel[xC][yC]==1 && predCoeff >0)
AbsLevel[xC][yC]=predCoeff
elseif(AbsLevel[xC][yC]>0 && AbsLevel[xC][yC] <= predCoeff)
AbsLevel[xC][yC]--
}
TransCoeffLevel[x0][y0][cIdx][xC][yC]=(1-2Хcoeff_sign_flag[n])Х
AbsLevel[xC][yC]
}
}
}
residual_ts_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx) 함수에 진입한 후, 일부 블록 사이즈의 정보를 결정해야 한다. 다음 RemCcbs의 값을 결정하며, 즉 공식 RemCcbs=((1<<(log2TbWidth+log2TbHeight))×7)>>2를 사용하여 결정한다. RemCcbs로 현재 블록 중 콘텍스트 모드를 사용하여 인코딩된 신택스 요소의 개수가 결정되고, 본 출원의 실시예에서 RemCcbs를 remainingcontextcoded binaries의 의미로 이해할 수 있으며, 다시 말해서 콘텍스트 모드로 인코딩된 나머지의 이진 심볼의 개수이다. 각 서브 블록에 대해, 현재 서브 블록을 인코딩해야 하는지 여부를 결정한다. 인코딩해야 하면, 상기 RRC와 상이하게, TSRC 방법에서 하나의 서브 블록 중 콘텍스트 모드로 인코딩된 신택스 요소를 두 개의 라운드에 놓으며, 각 계수는 제1 라운드 및 제2 라운드에서 콘텍스트 모드로 인코딩된 최대 4 개의 신택스 요소를 각각 처리한다. 바이패스 모드로 인코딩된 신택스 요소는 뒤쪽에 놓는다. 제1 라운드 및 제2 라운드에서, 매 회 하나의 콘텍스트 모드로 인코딩된 신택스 요소를 처리 완료할 때마다 remBinsPass1이 1 감소된다. 하나의 계수가 충분히 크면, 제1 라운드 및 제2 라운드에서 콘텍스트 모드로 인코딩된 몇 개의 신택스 요소를 처리한 후 또한 나머지 값, 즉 abs_remainder을 처리해야 한다. remBinsPass1이 이미 충분히 작으면(remBinsPass1>=4를 만족하지 않음), 처음 두 개의 라운드는 종료되고, 나머지의 계수는 바이패스 모드를 직접 사용하여 처리하며, 여기서 여전히 abs_remainder이다.
요컨대, 관련 기술에서, 기존의 이러한 계수 인코딩 방법은 소비 타입의 비디오와 같은 현재 일반적으로 사용되는 비디오에 대해, 압축 효율이 우수하다. 소비 타입 비디오는 일반적으로 각 픽셀의 비트 폭이 8 비트 또는 10 비트이고, 소비 타입 비디오는 일반적으로 비트 레이트가 높지 않으며, 일반적으로 초당 수 메가바이트(MB/s) 또는 더욱 낮다. 그러나 일부 적용되는 비디오의 픽셀은 각 픽셀의 비트 폭이 12 비트, 14 비트 또는 16 비트 또는 그 이상과 같은 더욱 높은 비트 폭이 필요된다. 더욱 높은 비트 폭은 일반적으로 더욱 큰 계수 및 더욱 많은 비제로 계수를 가져다 줌으로써, 더욱 높은 비트 레이트를 가져다 준다. 일부 적용되는 비디오는 더욱 높은 품질이 필요되고, 더욱 높은 품질은 일반적으로 더욱 큰 계수 및 더욱 많은 비제로 계수를 가져다 줌으로써, 더욱 많은 비트 레이트를 가져다 준다. 더욱 높은 비트 레이트는 스루풋과 같은 디코더의 처리 능력에 대한 요구가 더욱 높다.
고 비트 폭, 고 품질, 고 비트 레이트의 비디오(3 고 비디오)는 일반적으로 낮은 비트 폭, 저 품질, 저 비트 레이트의 비디오(일반적인 비디오)에 비해 인코딩 및 디코딩해야 하는 계수 더욱 많고 또한 계수가 더욱 크다. 예컨대 3 고 비디오에서 하나의 블록 중 인코딩 및 디코딩해야 하는 계수는 일반적인 비디오에서 동일한 크기의 하나의 블록 중 인코딩 및 디코딩해야 하는 계수보다 매우 많다. 일반적인 비디오의 블록 중 예측, 변환, 양자화를 거친 후 많은 계수가 0으로 되지만, 3 고 비디오의 블록 중 예측, 변환, 양자화를 거친 후 많은 계수는 여전히 0이 아닌 계수이다. 일반적인 비디오의 블록 중 예측, 변환, 양자화를 거친 후의 계수에서 인코딩해야 하는 계수 중 0인 것이 매우 큰 비례를 차지하므로, 마지막 하나의 비제로 계수 위치(LastSignificantCoeffX, LastSignificantCoeffY)를 사용하여 인코딩한 계수 영역 및 인코딩하지 않은 계수 영역을 구분하는 것이 매우 효과적이다. 마지막 하나의 비제로 계수 위치 이전의 계수도 여전히 0인 것이 매우 큰 비례를 차지므로, 서브 블록이 인코딩되었는지 여부를 나타내는 플래그 sb_coded_flag를 사용하여 현재 서브 블록을 인코딩해야 하는지 여부를 구분하는 것이 매우 효과적이다. 그러나 현재 블록 중의 비제로 계수가 매우 많고, 심지어 대부분 계수 또는 모든 계수가 모두 비제로 계수일 경우, 상기 마지막 하나의 비제로 계수 위치 및 서브 블록이 인코딩되었는지 여부를 나타내는 플래그는 너무 많은 비제로 계수를 필터링하지 않으며, 또한 자체가 비트 스트림에서 비제로 계수 위치 및 서브 블록이 인코딩되었는지 여부를 나타내는 플래그 등을 인코딩하여 일정한 오버헤드를 차지하므로, 낭비가 발생할 수 있다.
다른 한 측면에 있어서, 상기 마지막 하나의 비제로 계수 위치 및 서브 블록이 인코딩되었는지 여부를 나타내는 플래그 등은 모두 콘텍스트 모드를 사용하여 인코딩된 것이고, 콘텍스트 모드 인코딩은 바이패스 모드에 비해 더욱 복잡하며, 이러한 정보를 처리하면 또한 소프트웨어 및 하드웨어의 인코딩 및 디코딩의 속도와 스루풋에 영향을 준다.
또한 다른 하나의 측면에 있어서, 현재의 마지막 하나의 비제로 계수 위치(LastSignificantCoeffX, LastSignificantCoeffY)의 인코딩 방법은 마지막 하나의 비제로 계수 위치의 좌표를 인코딩하는 것이다. 일반적인 비디오에서, 비제로 계수가 왼쪽 위 모서리에 대부분 집중되고 오른쪽 아래 모서리의 대부분 영역은 0이며, LastSignificantCoeffX 및 LastSignificantCoeffY의 값은 일반적으로 비교적 작다. 그러나 3 고 비디오에서, 오른쪽 아래 모서리에도 많은 비제로 계수가 출현되며, 이로 인해 LastSignificantCoeffX 및 LastSignificantCoeffY의 값이 일반적으로 비교적 큼으로써, 비트 스트림에서 비교적 큰 값을 인코딩하므로 더욱 큰 오버헤드를 가져다 준다. 또한, 무손실 압축할 경우 본 방법을 사용할 수도 있으며, 무손실 압축할 경우 양자화를 사용할 수 없으므로, 이 경우 일반적으로 계수가 비교적 많고, 계수가 비교적 크다. 이 경우 기존의 관련 방안을 사용하면 더욱 큰 오버헤드를 가져다 주므로, 낭비가 발생하고, 압축 효율이 낮아질 수 있다.
본 출원의 실시예는 디코딩 방법을 제공하였고, 비트 스트림을 파싱하고, 현재 슬라이스의 성분 식별자 정보를 결정하며, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하고; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하며; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정한다.
본 출원의 실시예는 인코딩 방법을 더 제공하였고, 현재 슬라이스의 성분 식별자 정보를 결정하는 것을 통해, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하고; 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하며; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입한다.
이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 성분 식별자 정보를 이용하여 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식을 각각 제어할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
아래에서 도면을 결합하여 본 출원의 각 실시예를 상세히 설명한다.
도 8a를 참조하면, 도 8a는 본 출원의 실시예에서 제공한 인코더의 시스템 구성 블록도 예를 도시한다. 도 8a에 도시된 바와 같이, 인코더(100)는, 분할 유닛(101), 예측 유닛(102), 제1 가산기(107), 변환 유닛(108), 양자화 유닛(109), 역양자화 유닛(110), 역변환 유닛(111), 제2 가산기(112), 필터링 유닛(113), 디코딩 픽쳐 버퍼(Decoded Picture Buffer, DPB) 유닛(114) 및 엔트로피 코딩 유닛(115)을 포함할 수 있다. 여기서, 인코더(100)의 입력은 일련의 픽쳐 또는 하나의 정적 픽쳐로 구성된 비디오일 수 있고, 인코더(100)의 출력은 입력 비디오의 압축 버전을 나타내기 위한 비트 스트림(“코드 스트림”으로도 지칭됨)일 수 있다.
여기서, 분할 유닛(101)은 입력 비디오 중의 픽쳐를 하나 또는 복수 개의 코딩 트리 유닛(Coding Tree Unit, CTU)으로 분할한다. 분할 유닛(101)은 픽쳐를 하나 또는 복수 개의 픽쳐 블록(또는 타일, tile로 지칭됨)으로 나누고, 또한 추가로 하나의 tile을 하나 또는 복수 개의 브릭(brick)으로 나눌 수 있으며, 여기서, 하나의 tile 또는 하나의 brick는 하나 또는 복수 개의 완전한 CTUs 및 하나 또는 복수 개의 일부분 CTUs 중 적어도 하나를 포함할 수 있다. 또한, 분할 유닛(101)은 하나 또는 복수 개의 슬라이스(slice)를 형성할 수 있고, 여기서 하나의 slice는 픽쳐 중 래스터 순서로 배열된 하나 또는 복수 개의 tiles, 또는 픽쳐 중 직사각형 영역을 커버하는 하나 또는 복수 개의 tiles을 포함할 수 있다. 분할 유닛(101)은 또한 하나 또는 복수 개의 서브 픽쳐를 형성할 수 있고, 여기서, 하나의 서브 픽쳐는 하나 또는 복수 개의 slices, tiles 또는 bricks를 포함할 수 있다.
인코더(100)의 인코딩 과정에서, 분할 유닛(101)은 CTU를 예측 유닛(102)에 송신한다. 일반적으로, 예측 유닛(102)은 블록 분할 유닛(103), 모션 추정(Motion Estimation, ME) 유닛(104), 모션 보상(Motion Compensation, MC) 유닛(105) 및 프레임 내 예측 유닛(106)으로 구성될 수 있다. 구체적으로, 블록 분할 유닛(103)은 사진 트리 분할, 이진 트리 분할 및 삼진 트리 분할을 반복적으로 사용하여 입력 CTU를 더욱 작은 코딩 유닛(Coding Units, Cus)으로 추가로 구획한다. 예측 유닛(102)은 ME 유닛(104) 및 MC 유닛(105)을 사용하여 CU의 프레임 간 예측 블록을 획득할 수 있다. 프레임 내 예측 유닛(106)은 MIP 모드를 포함하는 다양한 프레임 내 예측 모드를 사용하여 CU의 프레임 내 예측 블록을 획득할 수 있다. 예에서, 프레임 간 예측 블록을 획득하기 위해, 레이트 왜곡 최적화의 모션 추정 방식이 ME 유닛(104) 및 MC 유닛(105)에 의해 호출될 수 있고, 프레임 내 예측 블록을 획득하기 위해, 레이트 왜곡 최적화의 모드 결정 방식이 프레임 내 예측 유닛(106)에 의해 호출될 수 있다.
예측 유닛(102)은 CU의 예측 블록을 출력하고, 제1 가산기(107)는 분할 유닛(101)의 출력에서의 CU와 CU의 예측 블록 사이의 차이값, 즉 잔차 CU를 계산한다. 변환 유닛(108)은 잔차 CU를 판독하고 잔차 CU에 대해 하나 또는 복수 개의 변환 조작을 수행하여 계수를 획득한다. 양자화 유닛(109)은 계수를 양자화하고 양자화 계수(즉 levels)를 출력한다. 역양자화 유닛(110)은 양자화 계수에 대해 스케일 조작을 수행하여 재구축 계수를 출력한다. 역변환 유닛(111)은 변환 유닛(108) 중의 변환에 대응되는 하나 또는 복수 개의 역변환을 수행하고 재구축 잔차를 출력한다. 제2 가산기(112)는 재구축 잔차와 예측 유닛(102)으로부터의 CU의 예측 블록을 서로 가하는 것을 통해 재구축 CU를 계산한다. 제2 가산기(112)는 또한 제2 가산기(112)의 출력을 예측 유닛(102)에 송신하여 프레임 내 예측 참조로 사용한다. 픽쳐 또는 서브 픽쳐 중의 모든 CU가 재구축된 후, 필터링 유닛(113)은 재구축 픽쳐 또는 서브 픽쳐에 대해 인 루프 필터링을 수행한다. 여기서, 필터링 유닛(113)은, 디블록킹 필터, 샘플 적응적 오프셋(Sample Adaptive Offset, SAO) 필터, 적응적 인 루프 필터(Adaptive Loop Filter, ALF), 휘도 맵핑 및 색도 스케일링(Luma Mapping with Chroma Scaling, LMCS) 필터 및 신경 네트워크에 기반한 필터 등과 같은 복수 개의 필터를 포함한다. 또는, 필터링 유닛(113)이 CU가 다른 CU를 인코딩할 경우의 참조로 사용되지 않는 것으로 결정할 경우, 필터링 유닛(113)은 CU 중의 하나 또는 복수 개의 타깃 픽셀에 대해 인 루프 필터링을 수행한다.
필터링 유닛(113)의 출력은 디코딩 픽쳐 또는 서브 픽쳐이고, 이러한 디코딩 픽쳐 또는 서브 픽쳐는 DPB 유닛(114)으로 버퍼된다. DPB 유닛(114)은 시계열 및 제어 정보에 따라 디코딩 픽쳐 또는 서브 픽쳐를 출력한다. 여기서, DPB 유닛(114) 중에 저장된 픽쳐는 예측 유닛(102)이 프레임 간 예측 또는 프레임 내 예측을 실행하는 참조로 사용될 수 있다. 마지막으로, 엔트로피 코딩 유닛(115)은 인코더(100)로부터의 픽쳐를 디코딩하는데 필요한 파라미터(예컨대 제어 파라미터 및 보충 정보 등)를 2진 형태로 전환하고, 각 데이터 유닛의 신택스 구조에 따라 이러한 2진 형태를 비트 스트림에 기입하며, 즉 인코더(100)는 최종적으로 비트 스트림을 출력한다.
더 나아가, 인코더(100)는 제1 프로세서 및 컴퓨터 프로그램을 기록하는 제1 메모리를 구비할 수 있다. 제1 프로세서가 컴퓨터 프로그램을 판독하고 작동할 경우, 인코더(100)는 입력 비디오를 판독하고 대응되는 비트 스트림을 생성한다. 또한, 인코더(100)는 또한 하나 또는 복수 개의 칩을 구비한 컴퓨팅 기기일 수 있다. 칩에서 집적 회로로 구현된 이러한 유닛은 도 8a 중 상응한 유닛과 유사한 연결 및 데이터 교환 기능을 구비한다.
도 8b를 참조하면, 도 8b는 본 출원의 실시예에서 제공한 디코더의 시스템 구성 블록도 예를 도시하였다. 도 8b에 도시된 바와 같이, 상기 디코더(200)는, 파싱 유닛(201), 예측 유닛(202), 역양자화 유닛(205), 역변환 유닛(206), 가산기(207), 필터링 유닛(208) 및 디코딩 픽쳐 버퍼 유닛(209)을 포함할 수 있다. 여기서, 디코더(200)의 입력은 비디오 또는 하나의 정적 픽쳐의 압축 버전을 나타내기 위한 비트 스트림이고, 디코더(200)의 출력은 일련의 픽쳐로 구성된 디코딩 비디오 또는 하나의 디코딩된 정적 픽쳐일 수 있다.
여기서, 디코더(200)의 입력 비트 스트림은 인코더(100)에 의해 생성된 비트 스트림일 수 있다. 파싱 유닛(201)은 입력 비트 스트림을 파싱하고 입력 비트 스트림으로부터 신택스 요소의 값을 획득한다. 파싱 유닛(201)은 신택스 요소의 2진 표현을 수치값으로 전환하고 수치값을 디코더(200) 중의 유닛에 송신하여 하나 또는 복수 개의 디코딩 픽쳐를 획득한다. 파싱 유닛(201)은 또한 입력 비트 스트림으로부터 하나 또는 복수 개의 신택스 요소를 파싱하여 디코딩 픽쳐를 디스플레이할 수 있다.
디코더(200)의 디코딩 과정에서, 파싱 유닛(201)은 신택스 요소의 값 및 신택스 요소의 값에 따라 설정되거나 결정된, 하나 또는 복수 개의 디코딩 픽쳐를 획득하기 위한 하나 또는 복수 개의 변수를 디코더(200) 중의 유닛에 송신한다.
예측 유닛(202)은 현재 디코딩 블록(예컨대 CU)의 예측 블록을 결정한다. 여기서, 예측 유닛(202)은 모션 보상 유닛(203) 및 프레임 내 예측 유닛(204)을 포함할 수 있다. 구체적으로, 프레임 간 디코딩 모드가 현재 디코딩 블록을 디코딩하는데 사용되는 것으로 지시할 경우, 예측 유닛(202)은 파싱 유닛(201)으로부터의 관련 파라미터를 모션 보상 유닛(203)에 전달하여 프레임 간 예측 블록을 획득하고; 프레임 내 예측 모드(MIP 모드 인덱스값에 기반한여 지시된 MIP 모드를 포함함)가 현재 디코딩 블록을 디코딩하는데 사용되는 것으로 지시할 경우, 예측 유닛(202)은 파싱 유닛(201)으로부터의 관련 파라미터를 프레임 내 예측 유닛(204)에 송신하여 프레임 내 예측 블록을 획득한다.
역양자화 유닛(205)은 인코더(100) 중의 역양자화 유닛(110)과 동일한 기능을 구비한다. 역양자화 유닛(205)은 파싱 유닛(201)으로부터의 양자화 계수(즉 levels)에 대해 스케일 조작을 실행하여 재구축 계수를 획득한다.
역변환 유닛(206)은 인코더(100) 중의 역변환 유닛(111)과 동일한 기능을 구비한다. 역변환 유닛(206)은 하나 또는 복수 개의 변환 조작(즉 인코더(100) 중의 역변환 유닛(111)을 통해 실행한 하나 또는 복수 개의 변환 조작의 역조작임)을 실행하여 재구축 잔차를 획득한다.
가산기(207)는 가산기(207)의 입력(예측 유닛(202)으로부터의 예측 블록 및 역변환 유닛(206)으로부터의 재구축 잔차)에 대해 서로 가하는 조작을 실행하여 현재 디코딩 블록의 재구축 블록을 획득한다. 재구축 블록은 또한 예측 유닛(202)에 송신되어 프레임 내 예측 모드 하에서 인코딩된 다른 블록의 참조로 사용된다.
픽쳐 또는 서브 픽쳐 중의 모든 CU가 재구축된 후, 필터링 유닛(208)은 재구축 픽쳐 또는 서브 픽쳐에 대해 인 루프 필터링을 실행한다. 필터링 유닛(208)은, 디블록킹 블록 필터, 샘플 적응적 보상 필터, 적응적 인 루프 필터, 휘도 맵핑 및 색도 스케일 필터 및 신경 네트워크에 기반한 필터 등과 같은 하나 또는 복수 개의 필터를 포함한다. 또는, 필터링 유닛(208)이 재구축 블록이 다른 블록을 디코딩할 경우의 참조에 사용되지 않는 것으로 결정할 경우, 필터링 유닛(208)은 재구축 블록 중의 하나 또는 복수 개의 타깃 픽셀에 대해 인 루프 필터링을 실행한다. 여기서, 필터링 유닛(208)의 출력은 디코딩 픽쳐 또는 서브 픽쳐이고, 디코딩 픽쳐 또는 서브 픽쳐는 DPB 유닛(209)으로 버퍼된다. DPB 유닛(209)은 시계열 및 제어 정보에 따라 디코딩 픽쳐 또는 서브 픽쳐를 출력한다. DPB 유닛(209) 중에 저장된 픽쳐는 또한 예측 유닛(202)을 통해 프레임 간 예측 또는 프레임 내 예측을 실행하는 참조로 사용될 수 있다.
더 나아가, 디코더(200)는 제2 프로세서 및 컴퓨터 프로그램을 기록하는 제2 메모리를 구비하는 것일 수 있다. 제1 프로세서가 컴퓨터 프로그램을 판독하고 작동할 경우, 디코더(200)는 입력 비트 스트림을 판독하고 대응되는 디코딩 비디오를 생성한다. 또한, 디코더(200)은 또한 하나 또는 복수 개의 칩을 구비한 컴퓨팅 기기일 수 있다. 칩에서 집적 회로를 구현한 이러한 유닛은 도 8b 중 상응한 유닛과 유사한 연결 및 데이터 교환 기능을 구비한다.
더 설명해야 할 것은, 본 출원의 실시예가 인코더(100)에 적용될 경우, “현재 블록”은 구체적으로 비디오 이미지 중의 현재 인코딩될 블록(“코딩 블록”으로도 약칭될 수 있음)을 의미하고; 본 출원의 실시예가 디코더(200)에 적용될 경우, “현재 블록”은 구체적으로 비디오 이미지 중의 현재 디코딩될 블록(“디코딩 블록”으로도 약칭될 수 있음)을 의미한다.
본 출원의 일 실시예에서, 도 9를 참조하면, 도 9는 본 출원의 실시예에서 제공한 디코딩 방법의 흐름 예시도를 도시한다. 도 9에 도시된 바와 같이, 상기 방법은 아래와 같은 단계를 포함할 수 있다.
단계 S901에 있어서, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정한다.
설명해야 할 것은, 본 출원의 실시예의 디코딩 방법은, 구체적으로 디코더에 적용되는 계수 디코딩 방법을 의미한다. 여기서, 도 8b에 도시된 디코더(200)의 구성 구조에 기반하여, 상기 디코딩 방법은 주로 디코더(200) 중의 “파싱 유닛(201)” 부분에 적용되고, 상기 파싱 유닛(201)의 경우, 콘텍스트 모델에 기반한 적응적 2진 산술 인코딩 모드 또는 바이패스 모드를 사용하여 디코딩을 수행하여, 관련 식별자 정보(또는 신택스 요소)의 값을 획득함으로써, 현재 블록의 계수를 결정할 수 있다.
더 설명해야 할 것은, 비디오 표준에서 일반적으로 말하는 인코딩은 인코딩 및 디코딩 두 개의 부분을 포함하므로, 비디오 인코딩은 인코더측의 인코딩 방법 및 디코더측의 디코딩 방법을 포함할 수 있다. 본 출원의 실시예는 디코더측의 디코딩 방법에 대해 설명한다.
일반적인 경우, 예컨대 일반적인 비디오의 경우, 계수에 대한 디코딩 방법은 관련 기술에서의 기존의 방법과 동일하지만; 특정된 경우, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트 또는 무손실 압축의 비디오 인코딩 및 디코딩 시나리오의 경우, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 보정할 수 있는 도출 방식 제공한다.
본 출원의 실시예에서, 현재 슬라이스의 성분 식별자 정보는 슬라이스(slice) 레벨의 플래그이다. 상기 성분 식별자 정보는 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하기 위한 것이다. 여기서, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 현재 슬라이스의 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 의미하고; 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 현재 슬라이스의 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 의미한다.
이해할 수 있는 것은, 현재 시퀀스는 현재 슬라이스를 포함할 수 있고, 현재 슬라이스 내에는 현재 블록이 포함될 수 있다. 일부 실시예에서, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하기 전, 상기 방법은 또한,
비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계; 및
제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 상기 방법은 또한, 제1 신택스 요소 식별자 정보의 값이 제1 값이면, 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정하는 단계; 또는, 제1 신택스 요소 식별자 정보의 값이 제2 값이면, 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않도록 지시하는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 구체적으로, 제1 신택스 요소 식별자 정보는 프로파일(profile) 중에 기입된 파라미터일 수 있고, 하나의 플래그(flag)의 값일 수도 있으며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
제1 신택스 요소 식별자 정보가 하나의 flag인 것으로 예로 들면, 이때 제1 값 및 제2 값의 경우, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있으며; 또는, 제1 값은 또한 true로 설정될 수 있고, 제2 값은 또한 false로 설정될 수 있으며; 또는, 제1 값은 또한 0으로 설정될 수 있고, 제2 값은 또한 1로 설정될 수 있으며; 또는, 제1 값은 또한 false로 설정될 수 있고, 제2 값은 또한 true로 설정될 수 있다. 예시적으로, flag의 경우, 일반적인 경우, 제1 값은 1일 수 있고, 제2 값은 0일 수 있지만, 어떠한 한정도 한정하지 않는다.
더 설명해야 할 것은, 제1 신택스 요소 식별자 정보는, 시퀀스 레벨의 플래그이고, sps_reverse_last_sig_coeff_flag로 나타내며, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는지 여부를 지시하는데 사용될 수 있다. 이로써, 디코딩하여, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용함을 획득한 경우, slice 레벨의 성분 식별자 정보를 추가로 디코딩하여, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 판단할 수 있다.
더 나아가, 디코딩 하여 제1 신택스 요소 식별자 정보를 획득하기 전, 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하는 단계; 및
제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
디코딩하여 제1 신택스 요소 식별자 정보를 획득하기 전, 다른 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
디코딩 하여 제1 신택스 요소 식별자 정보를 획득하기 전, 또 다른 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하는 단계;
제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
설명해야 할 것은, 제2 신택스 요소 식별자 정보 및 제3 신택스 요소 식별자 정보는 모두 시퀀스 레벨의 플래그이다. 여기서, 제2 신택스 요소 식별자 정보는 sps_extension_flag로 나타내고, 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 지시하는데 사용될 수 있으며; 제3 신택스 요소 식별자 정보는 sps_range_extension_flag로 나타내고, 현재 시퀀스가 범위 확장을 사용하는지 여부를 지시하는데 사용될 수 있다.
다시 말해서, 디코딩하여 제1 신택스 요소 식별자 정보(sps_reverse_last_sig_coeff_flag)를 획득하기 전이거나, 비트 스트림을 파싱하여 sps_extension_flag를 획득한 후, sps_extension_flag는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하면, 디코딩하여 sps_reverse_last_sig_coeff_flag를 획득하고; 또는, 비트 스트림을 파싱하여 sps_range_extension_flag를 획득한 후, sps_range_extension_flag는 현재 시퀀스가 범위 확장을 사용하도록 지시하면, 디코딩하여 sps_reverse_last_sig _coeff_flag를 획득하며; 또는, 심지어 비트 스트림을 파싱하여 sps_extension_flag를 획득한 후, sps_extension_flag는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하면, 비트 스트림을 파싱하여 sps_range_extension_flag를 획득하고; sps_range_extension_flag는 현재 시퀀스가 범위 확장을 사용하도록 지시하면, 다시 디코딩하여 sps_reverse_last_sig_coeff_flag를 획득하지만; 본 출원의 실시예는 어떠한 한정도 하지 않는다.
더 나아가, 일부 실시예에서, 상기 방법은 또한, 제2 신택스 요소 식별자 정보의 값이 제1 값이면, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하는 것으로 결정하는 단계; 또는, 제2 신택스 요소 식별자 정보의 값이 제2 값이면, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하지 않도록 지시하는 것으로 결정하는 단계를 포함할 수 있다.
더 나아가, 일부 실시예에서, 상기 방법은 또한, 제3 신택스 요소 식별자 정보의 값이 제1 값이면, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시하는 것으로 결정하는 단계; 또는, 제3 신택스 요소 식별자 정보의 값이 제2 값이면, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하지 않도록 지시하는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 제2 신택스 요소 식별자 정보는 sps_extension_flag로 나타내고, 제3 신택스 요소 식별자 정보는 sps_range_extension_flag로 나타낸다. 이로써, 시퀀스 레벨에서, sps_extension_flag의 값이 1이면, 즉 현재 시퀀스가 표준 확장 버전을 사용하면, sps_range_extension_flag를 디코딩해야 하고; sps_range_ extension_flag의 값이 1이면, 즉 현재 시퀀스가 범위 확장을 사용하면, sps_reverse_last_sig_coeff_flag를 디코딩해야 하며; sps_reverse_last_sig_coeff_flag의 값이 1이면, 즉 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하면, 또한 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 판단하기 위해, 슬라이스 레벨의 성분 식별자 정보를 추가로 디코딩하여야 한다.
일부 실시예에서, 현재 시퀀스가 범위 확장을 사용하는 것은, 현재 시퀀스가, 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함할 수 있다.
다시 말해서, 일반적인 비디오에 비해, 본 출원의 실시예에서 전술한 비디오는 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 등 특성을 구비한다.
더 나아가, 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보 및 제3 신택스 요소 식별자 정보 등은 시퀀스(sequence) 레벨의 플래그일 수 있고, 심지어 비디오 사용성 정보(Video Usability Information, VUI), 보충 증강 정보(Supplemental Enhancement Information, SEI) 등과 같은 더욱 높은 레벨의 플래그일 수 있다.
하나의 구체적인 예에서, 비디오의 현재 시퀀스의 경우, 제2 신택스 요소 식별자 정보(sps_extension_flag)에 대해, 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 판단하고; 다시 말해서, 현재 시퀀스가 VVC 중 고 비트 폭, 고 비트 레이트 등 인코딩에 대해 제정한 확장 버전과 같은 표준적인 확장 버전에서 오픈될 수 있는지 여부를 판단한다. sps_extension_flag의 값이 1일 경우, 이때 제1 신택스 요소 식별자 정보(sps_reverse_last_sig_coeff_flag)를 디코딩해야 하고, 그렇지 않은 경우 제1 신택스 요소 식별자 정보(sps_reverse_last_sig_coeff_flag)를 디코딩할 필요가 없다.
다른 하나의 구체적인 예에서, 비디오의 현재 시퀀스의 경우, sps_extension_flag의 값이 1일 경우, 이때 또한 고 비트 폭, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 등 플래그와 같은 제3 신택스 요소 식별자 정보(sps_range_ extension_flag)를 디코딩하여, 현재 시퀀스가 범위 확장(range extension)을 사용하는지 여부를 판단해야 한다. 아래에서 4 개의 경우를 예로 들어 각각 설명한다.
하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 비트 폭 식별자 정보일 경우, 상기 방법은 또한, 고 비트 폭 식별자 정보는 현재 시퀀스가 고 비트 폭을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 비트 레이트 식별자 정보일 경우, 상기 방법은 또한, 고 비트 레이트 식별자 정보는 현재 시퀀스가 고 비트 레이트를 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 품질 식별자 정보일 경우, 상기 방법은 또한, 고 품질 식별자 정보는 현재 시퀀스가 고 품질을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 무손실 압축 식별자 정보일 경우, 상기 방법은 또한, 무손실 압축 식별자 정보는 현재 시퀀스가 무손실 압축을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
예시적으로, 시퀀스 레벨로 예를 들면, 제3 신택스 요소 식별자 정보는 또한, 현재 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하기 위한 고 비트 폭 식별자 정보(sps_high_bit_depth_flag로 나타냄)일 수 있고; 또는 현재 시퀀스가 고 비트 레이트 시퀀스인지 여부를 지시하기 위한 고 비트 레이트 식별자 정보(sps_high_bit_rate_flag로 나타냄)로 대체할 수 있으며; 또는 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실 압축을 지시하는 다른 식별자 정보로 대체할 수도 있으며, 본 출원의 실시예는 구체적으로 한정하지 않는다.
더 나아가, 일부 실시예에서, 단계 S901의 경우, 상기 비트 스트림을 파싱하여, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하는 단계;
마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보 및 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 수평 좌표를 결정하는 단계;
마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 수직 좌표를 결정하는 단계; 및
마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보는 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_x_suffix, last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 결정될 수 있다.
더 설명해야 할 것은, last_sig_coeff_x_prefix 및 last_sig_coeff_x_suffix로 결정된 것은 마지막 하나의 비제로 계수의 횡좌표(즉 수평 좌표)이고, last_sig_coeff_y_prefix 및 last_sig_coeff_y_suffix로 결정된 것은 마지막 하나의 비제로 계수의 종좌표(즉 수직 좌표)이며, 이로써 마지막 하나의 비제로 계수의 좌표 정보를 획득한다.
본 출원의 실시예에서, 마지막 하나의 비제로 계수 위치 반전 식별자 정보의 경우, reverse_last_ sig_coeff_flag로 나타낼 수 있다. 여기서, 마지막 하나의 비제로 계수 위치 반전 식별자 정보는, 시퀀스(sequence) 레벨의 식별자 정보, 픽쳐(picture) 레벨의 식별자 정보, 슬라이스(slice) 레벨의 식별자 정보 및 블록(block) 레벨의 식별자 정보 중 적어도 하나일 수 있고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
다시 말해서, reverse_last_sig_coeff_flag는 하나의 시퀀스 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 또는 픽쳐 레벨의 플래그 또는 슬라이스 레벨의 플래그 또는 블록 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있다. 또한, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함할 수 있으며, 본 출원의 실시예는 모두 어떠한 한정도 하지 않는다.
본 출원의 실시예에서, 시퀀스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보는 sps_reverse_last_sig_coeff_flag로 나타낼 수 있고, 슬라이스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보는 sh_reverse_last_sig_coeff_flag로 나타낼 수 있다.
더 설명해야 할 것은, 슬라이스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보의 경우, 또한 현재 슬라이스의 성분 식별자 정보로 지칭될 수 있다. 일부 실시예에서, 상기 방법은 또한,
성분 식별자 정보의 값이 제1 값이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정하는 단계; 또는,
성분 식별자 정보의 값이 제2 값이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 않는 것으로 지시하는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, 디코딩하여 획득된 성분 식별자 정보의 값이 1이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정할 수 있고; 디코딩하여 획득된 성분 식별자 정보의 값이 0이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시하는 것으로 결정할 수 있다.
단계 S902에 있어서, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득한다.
단계 S903에 있어서, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정한다.
설명해야 할 것은, 본 출원의 실시예에서, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 현재 슬라이스의 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 의미하며, 이 경우 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보는 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정할 수 있다.
일부 실시예에서, 상기 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하는 단계는,
현재 블록의 너비 및 높이를 결정하는 단계;
현재 블록의 너비 및 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리에 따라 감법 계산을 수행하여, 상기 마지막 하나의 비제로 계수의 수평 좌표를 획득하는 단계;
현재 블록의 높이 및 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수직 거리에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수직 좌표를 획득하는 단계; 및
마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 마지막 하나의 비제로 계수의 좌표 정보는 일반적으로 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리이다. 일반적인 비디오의 경우, 비제로 계수가 왼쪽 위 모서리에 대부분 집중되어, 오른쪽 아래 모서리의 대부분 영역은 0이지만; 고 비트 폭, 고 품질, 고 비트 레이트의 비디오 인코딩 및 디코딩의 경우, 오른쪽 아래 모서리에도 대량의 비제로 계수가 출현되므로, 마지막 하나의 비제로 계수의 좌표 정보의 값은 일반적으로 비교적 크며, 이 경우 오버헤드를 절약하기 위해, 계수를 인코딩할 경우 좌표 변환(구체적으로 좌표 반전 계산이며, 즉 좌표 반전 후 마지막 하나의 비제로 계수의 좌표 정보는 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리임)을 수행해야 하므로, 계수를 디코딩할 경우 좌표 반전 계산도 수행해야 하며, 재차 반전한 후 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 수평 거리 및 수직 거리인 것으로 회복할 수 있음으로써, 마지막 하나의 비제로 계수의 위치를 결정할 수 있어, 기설정된 스캔 순서에 따라 현재 블록 내의 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하는데 편이하다.
더 설명해야 할 것은, 현재 슬라이스에 속하는 성분에 대응되는 현재 블록의 경우, zero-out 변환이 없는 블록일 수 있고, zero-out 변환 후의 블록일 수도 있다. zero-out 변환 후의 블록을 예로 들면, 이 경우 현재 블록의 너비가 1<<log2ZoTbWidth이고, 현재 블록의 높이가 1<<log2ZoTbHeight이면; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 경우,
LastSignificantCoeffX= (1<<log2ZoTbWidth)-1-LastSignificantCoeffX;
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1-LastSignificantCoeffY이다.
여기서, 공식 오른쪽의 (LastSignificantCoeffX, LastSignificantCoeffY)는 디코딩을 통해 획득된 마지막 하나의 비제로 계수의 좌표 정보을 나타내고, 공식 왼쪽의 (LastSignificantCoeffX, LastSignificantCoeffY)는 마지막 하나의 비제로 계수의 위치(마지막 하나의 비제로 계수의 타깃 좌표 정보로 간주될 수도 있음)를 나타낸다.
이 외에, 일부 실시예에서, 상기 방법은 또한,
성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보는 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계; 및
마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시하면, 현재 슬라이스의 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 의미하고, 디코딩을 통해 획득된 마지막 하나의 비제로 계수의 좌표 정보는 마지막 하나의 비제로 계수의 타깃 좌표 정보로 간주할 수 있다. 본 출원의 실시예에서, 마지막 하나의 비제로 계수의 타깃 좌표 정보는 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리이다.
더 나아가, 일부 실시예에서, 상기 방법은 또한,
성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보에 따라 현재 블록의 마지막 하나의 비제로 계수의 위치를 직접 결정하는 단계; 및
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 기설정된 스캔 순서는 대각선, Zigzag, 수평, 수직, 44 서브 블록 스캔 또는 임의의 다른 스캔 순서일 수 있으며, 본 출원의 실시예는 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 현재 슬라이스의 성분 식별자 정보를 획득한 후, 현재 슬라이스의 성분 식별자 정보의 값이 1이면, 즉 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용해야 하면, 현재 슬라이스에 속하는 성분에 대응되는 현재 블록의 경우, 디코딩하여 마지막 하나의 비제로 계수의 좌표 정보를 획득한 후, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정해야 하며; 다음, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 획득한다. 현재 슬라이스의 성분 식별자 정보의 값이 1이면, 즉 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용할 필요가 없으면, 현재 슬라이스에 속하는 성분에 대응되는 현재 블록의 경우, 디코딩하여 마지막 하나의 비제로 계수의 좌표 정보를 획득한 후, 마지막 하나의 비제로 계수의 좌표 정보에 따라 현재 블록의 마지막 하나의 비제로 계수의 위치를 직접 결정할 수 있으며; 다음, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 획득한다.
이로써, 특정된 경우에 대해, 계수를 인코딩할 경우, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 보정하는 도출 방법을 제공한다. 다시 말해서 일반적인 경우, 계수의 인코딩 및 디코딩 방법은 여전히 관련 기술의 기존의 방법과 동일하다. 특정된 경우, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축된 비디오 인코딩 및 디코딩을 의미할 수 있다. 일반적인 경우, 도 10a에 도시된 바와 같이, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치의 횡좌표, 즉 현재 블록의 왼쪽 위 모서리에 대한 수평 거리이고; last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치의 종좌표, 즉 현재 블록의 쪽 위 모서리에 대한 수직 거리이다. 고 비트 폭 또는 고 품질 또는 고 비트 레이트 또는 무손실 압축의 비디오 인코딩 및 디코딩의 경우, 마지막 하나의 비제로 계수의 위치는 보편적으로 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 접근한다. 이러한 경우, 도 10b에 도시된 바와 같이, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 대한 수평 거리이고; last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 대한 수직 거리이다. 예컨대, 현재 블록의 모든 0이 아닐 수 있는 계수의 영역이 (0, 0)으로부터 ((1<<log2ZoTbWidth)-1, (1<<log2ZoTbHeight)-1)까지의 직사각형 영역이면, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록((1<<log2ZoTbWidth)-1, (1<<log2ZoTbHeight)-1)에 대한 수평 거리이다. last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록((1<<log2ZoTbWidth)-1, (1<<log2ZoTbHeight)-1)에 대한 수직 거리이다.
시멘틱에 대한 보정은 아래와 같다.
현재 블록 중 기설정된 스캔 순서에서의 마지막 하나의 비제로 계수의 수평(또는 열) 좌표의 값 lastSignificantCoeffX은 아래와 같은 방법에 따라 도출된다.
Last_sig_coeff_x_suffix가 존재하지 않으면,
LastSignificantCoeffX= last_sig_coeff_x_prefix이고;
그렇지 않은 경우 (last_sig_coeff_x_suffix가 존재함),
LastSignificantCoeffX= (1<<((last_sig_coeff_x_prefix>>1)-1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix이며;
reverse_last_sig_coeff_flag의 값이 1이면,
LastSignificantCoeffX = (1<<log2ZoTbWidth)-1-LastSignificantCoeffX이다.
현재 블록 중 스캔 순서에에서의 마지막 하나의 비제로 계수의 수직(또는 행) 좌표의 값 LastSignificantCoeffY는 아래와 같은 방법에 따라 도출된다.
last_sig_coeff_y_suffix가 존재하지 않으면,
LastSignificantCoeffY= last_sig_coeff_y_prefix이고;
그렇지 않은 경우(last_sig_coeff_y_suffix가 존재함),
LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1)-1)) * (2+(last_ sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix이며;
reverse_last_sig_coeff_flag의 값이 1이면,
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1-LastSignificantCoeffY이다.
여기서, reverse_last_sig_coeff_flag는 마지막 하나의 비제로 계수 위치 반전 플래그로서, 마지막 하나의 비제로 계수의 위치가 반전되어야 하는지 여부를 나타낸다. reverse_last_sig_ coeff_flag의 값이 1이면, 마지막 하나의 비제로 계수의 위치를 반전해야 하는 것을 나타내고; 그렇지 않은 경우, 마지막 하나의 비제로 계수의 위치는 반전될 필요가 없다.
더 설명해야 할 것은, reverse_last_sig_coeff_flag는 하나의 시퀀스(sequence) 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐(picture) 레벨의 플래그 또는 슬라이스(slice) 레벨의 플래그 또는 블록(block) 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있으며, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함한다. 예시적으로, 시퀀스 레벨의 reverse_last_sig_coeff_flag는 sps_reverse_last_sig_coeff_flag로 나타낼 수 있고, 슬라이스 레벨의 reverse_last_sig_coeff _flag는 sh_reverse_last_sig_coeff_flag로 나타낼 수 있다.
또한, reverse_last_sig_coeff_flag는, 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보 또는 제2 신택스 요소 식별자 정보(SPS 확장 플래그, sps_extension_flag) 등과 같은 일부 다른 플래그에 의존할 수 있으며, SPS 확장 플래그는, VVC가 고 비트 폭 및 고 비트 레이트 인코딩에 대해 제정한 확장 버전과 같은 표준적인 확장 버전에서 오픈될 수 있다. 즉 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보의 값이 1일 경우, 이때 reverse_last_sig_coeff_flag 플래그를 디코딩해야 하고; 그렇지 않은 경우, reverse_last_sig_coeff_flag 플래그를 디코딩할 필요가 없다.
하나의 구체적인 예에서, 시퀀스 레벨의 식별자 정보 sps_extension_flag, sps_range_extension_flag 및 sps_reverse_last_sig_coeff_flag가 존재하는 것으로 가정한다. 시퀀스 레벨에서, sps_extension_flag의 값이 1이면, sps_range_extension_flag를 디코딩해야 한다. sps_range_extension_flag의 값이 1이면, sps_reverse_last_sig_ coeff_flag를 디코딩해야 한다. 여기서, sps_reverse_last_sig_coeff_flag는 현재 시퀀스의 마지막 하나의 비제로 계수 위치 반전을 나타내는 플래그를 나타낸다. sps_reverse_last_sig_coeff_flag의 값이 1이면, 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하고; 그렇지 않은 경우(즉 sps_reverse_last_sig_coeff_flag의 값이 0이면), 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정한다. 종래 신택스 테이블 중의 reverse_last_sig_coeff_flag를 sps_reverse_last_sig_coeff_flag로 보정한다.
이해할 수 있는 것은, sps_extension_flag는 현재 시퀀스가 표준적인 확장 버전을 사용하는지 여부를 나타내는 플래그이다. Sps_range_extension_flag는 현재 시퀀스가 고 비트 폭, 고 비트 레이트 등과 같은 범위 확장을 사용하는지 여부를 나타내는 플래그이다.
하나의 구현 방식에서, 표 3을 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set RBSP syntax).
…… Descriptor
sps_extension_flag u(1)
……
if( sps_extension_flag ) {
sps_range_extension_flag u(1)
……
if( sps_range_extension_flag )
sps_range_extension( )
}
……
다른 하나의 구현 방식에서, 표 4를 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set range extension syntax).
sps_range_extension( ) { Descriptor
……
sps_reverse_last_sig_coeff_flag u(1)
……
}
표 3 및 표 4에서의 신택스 요소에 기반하여, sps_extension_flag의 값은 1과 같고, 신택스 요소sps_range_extension_flag 및 sps_extension_7bits가 SPS RBSP 신택스 구조 중에 출현되는 것을 나타내며; sps_extension_flag의 값은 0과 같고, 이러한 신택스 요소가 출현되지 않는 것을 나타낸다.
여기서, sps_range_extension_flag의 값은 1과 같고, sps_range_extension( ) 신택스 구조가 SPS RBSP 신택스 구조 중에 출현되는 것을 나타내며; sps_range_extension_flag가 출현되지 않으면, sps_range_extension_flag의 값이 0인 것으로 결정할 수 있다.
Sps_reverse_last_sig_coeff_flag의 값은 1과 같고, 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 나타내며; 그렇지 않은 경우(즉 sps_reverse_last_sig_coeff_flag의 값이 0과 같음), 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 나타낸다.
다른 하나의 구체적인 예에서, 시퀀스 레벨의 식별자 정보 sps_extension_flag, sps_range_extension_flag 및 sps_reverse_last_sig_coeff_enabled_flag가 존재하는 것으로 가정한다. 시퀀스(sequence) 레벨에서, sps_extension_flag의 값이 1이면, sps_range_ extension_flag를 디코딩해야 한다. sps_range_extension_flag의 값이 1이면, sps_reverse_last_sig_coeff_enabled_flag를 디코딩해야 한다. 여기서, sps_reverse_last_sig_coeff_ enabled_flag는 현재 시퀀스의 마지막 하나의 비제로 계수 위치 반전 기술이 사용되는 것을 허용함을 나타내는 플래그이다. sps_reverse_last_sig_coeff_enabled_flag의 값이 1이면, 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용함을 나타내고; 그렇지 않은 경우(즉 sps_reverse_last_sig_coeff_enabled _flag의 값이 0임), 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않음을 나타낸다. sps_reverse_last_ sig_coeff_enabled_flag가 출현되지 않으면, sps_reverse_last_sig_coeff_enabled_flag의 값이 0인 것으로 결정한다. 슬라이스(slice) 레벨에서, sps_reverse_last_sig_coeff_enabled_flag의 값이 1이면, sh_reverse_last_sig_coeff_flag를 디코딩해야 한다. 여기서, sh_reverse_last_sig_coeff_flag는 현재 슬라이스의 마지막 하나의 비제로 계수 위치 반전을 나타내는 플래그이다. sh_reverse_last_sig_coeff_flag의 값이 1이면, 현재 슬라이스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용한 것을 나타내고; 그렇지 않은 경우(즉 sh_reverse_last_sig_coeff_flag의 값이 0임), 현재 슬라이스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 나타낸다. sh_reverse_last_sig_coeff_flag가 출현되지 않으면, sh_reverse_last_sig_ coeff_flag의 값이 0인 것으로 결정한다. 종래 신택스 테이블에서의 reverse_last_sig_coeff_flag를 sh_reverse_last_sig_coeff_flag로 보정한다.
유의해야 할 것은, 마지막 하나의 비제로 계수 위치가 반전된 것을 나타내는 플래그의 경우, 시퀀스 레벨에서, 시멘틱은 “사용하는 것을 허용하는지 여부”이고; 슬라이스 레벨에서, 시멘틱은 “사용하는지 여부를 결정”이다.
또 다른 하나의 구현 방식에서, 표 5를 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Slice header syntax).
Descriptor
if(sps_reverse_last_sig_coeff_enabled_flag)
sh_reverse_last_sig_coeff_flag u(1)
표 5 에서의 신택스 요소에 기반하여, sps_reverse_last_sig_coeff_enabled_flag의 값은 1과 같고, 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용함을 나타내며; 그렇지 않은 경우(즉 sps_reverse_last_sig_coeff_enabled_flag의 값이 0과 같음), 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않음을 나타낸다.
sh_reverse_last_sig_coeff_flag의 값은 1과 같고, 현재 슬라이스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 나타내고; 그렇지 않은 경우(즉 sh_reverse_last_sig_coeff_flag의 값이 0과 같음), 현재 슬라이스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 나타낸다. sh_reverse_last_sig_coeff_flag가 출현되지 않으면, sh_reverse_last_sig_coeff_ flag의 값이 0인 것으로 결정한다.
이해할 수 있는 것은, sh_reverse_last_sig_coeff_flag, 즉 현재 슬라이스의 성분 식별자 정보의 경우, 현재 슬라이스 내의 각 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 단독으로 제어할 수 있음을 반영할 수 있다.
본 출원의 실시예에서, 성분은 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 수 있다.
하나의 구체적인 예에서, 제1 이미지 성분은 휘도 성분이고, 제2 이미지 성분은 제1 색도 성분이며, 제2 이미지 성분은 제2 색도 성분이다. 여기서, 휘도 성분은 Y 성분으로 나타내고, 제1 색도 성분은 U(Cb) 성분으로 나타내며, 제2 색도 성분은 V(Cr)로 나타낸다.
다른 하나의 구체적인 예에서, 제1 이미지 성분은 적색 성분이고, 제2 이미지 성분은 녹색 성분이며, 제3 이미지 성분은 청색 성분이다. 여기서, 적색 성분은 R 성분으로 나타내고, 녹색 성분은 G 성분으로 나타내고, 청색 성분은 B로 나타낸다.
더 나아가, 일부 실시예에서, 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 상기 방법은 또한,
제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 사이의 속성 관계에 기반하여, 현재 슬라이스 내의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 사이에 성분 식별자 정보를 공용하는 것이 존재하는지 여부를 판단하는 단계; 및
판단 결과에 따라, 현재 슬라이스의 성분 식별자 정보의 개수를 결정하는 단계를 포함할 수 있고; 여기서, 상기 성분 식별자 정보의 개수는 1 개 또는 2 개 또는 3 개일 수 있다.
구체적으로, 성분 식별자 정보의 개수를 결정하는 단계는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하는 단계; 또는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하는 단계; 또는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 일 측면에 있어서, 각 이미지 성분의 속성이 상이하므로, 이미지 성분은 예컨대 RGB 포맷 비디오의 R, G, B 또는 YUV 포맷의 Y, U, V(Y, Cb, Cr) 및 다른 가능한 포맷일 수 있다. YUV 포맷의 경우, YUV444, YUV422, YUV420 등 포맷이 있을 수 있으며, 사람 눈의 경우, 휘도의 변화가 색도에 비해 더욱 민감하므로, 때로는 YUV422, YUV420 등과 같은 포맷을 사용하여 색도를 다운 심플링하며, 일반적으로 색도의 양자화 스텝 사이즈가 휘도보다 더욱 크므로, 비트 레이트를 저하시키는 효과가 있다.
다른 한 측면에 있어서, 일부 교차 성분의 인코딩 기술은 각 성분 사이의 연관성을 이용하여 인코딩 효율을 향상시킨다. 예컨대 교차 성분 예측 기술에서의 교차 성분 선형 모델 예측 모드(Cross-Component Linear Model, CCLM)는, 휘도 성분의 재구성 값 및 선형 모델을 이용하여 색도 성분을 예측한다. CCLM은 색도 성분의 예측 정확성을 향상킬 수 있음으로써, 색도 성분의 잔차가 감소된다. 또한, 일부 기술은 휘도 성분 및 하나의 색도 성분의 정보를 추가로 이용하여 다른 하나의 성분을 예측함으로써 압축 효율을 추가로 향상시킨다. 교차 성분 적응적 인 루프 필터링 기술(Cross-Component Adaptive Loop Filter, CCALF)은 인 루프 필터링할 경우, 일부 휘도 성분의 세부 사항을 색도 성분에 보충하여, 압축 효율을 향상시킨다. 색도 성분의 세부 사항은 휘도 성분에 의해 일부 보충되므로, 잔차를 인코딩할 경우 더욱 큰 왜곡이 허용되도록 한다.
이로써, 각 이미지 성분 간의 자체의 속성이 상이하고, 일부 교차 성분 기술이 사용되므로, 각 이미지 성분의 잔차 분포 규칙이 시종 일치한 것이 아니도록 한다. 예컨대 비트 레이트가 매우 높고, 품질 요구가 매우 높은 비디오 인코딩 및 디코딩에서, 상이한 성분의 비제로 계수의 분포 상황은 비슷하며, 예컨대 비제로 계수는 비제로 일 수 있는 계수의 영역의 오른쪽 아래 모서리 위치에 모두 접근한다. 그러나 일부 비트 레이트가 높지 않고, 품질 요구가 높지 않은 비디오 인코딩 및 디코딩에서, 상이한 성분의 비제로 계수의 분포 상황은 상이할 수 있으며, 예컨대 Y 성분의 비제로 계수는 비제로 일 수 있는 계수의 영역의 오른쪽 아래 모서리 위치에 모두 접근하고, U/V 성분의 비제로 계수는 왼쪽 위 모서리 위치에만 분포되며; 또는 U 성분의 비제로 계수도 오른쪽 아래 모서리 위치에 접근하고, V 성분의 비제로 계수는 왼쪽 위 모서리 위치에만 분포된다.
따라서, 본 출원의 실시예는 하나 또는 복수 개의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다. 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 휘도 성분을 제어하고, 다른 하나의 성분 식별자 정보로 두 개의 색도 성분을 제어한다. 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 3 개의 이미지 성분은 RGB 중의 R, G, B일 수 있고, 또는 YUV 중의 Y, U, V일 수 있으며, 또는 Y, Cb, Cr일 수 있다.
하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 1 개일 수 있고, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 비트 스트림을 파싱하여, 현재 슬라이스의 제1 성분 식별자 정보를 결정하는 단계를 포함하고;
상응하게, 상기 방법은 또한, 제1 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제1 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
다른 하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 2 개일 경우, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 비트 스트림을 파싱하여, 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하는 단계를 포함하고;
상응하게, 상기 방법은 또한, 제2 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제2 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계; 및
제3 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제3 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 3 개일 경우, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 비트 스트림을 파싱하여, 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하는 단계를 포함하고;
상응하게, 상기 방법은 또한, 제4 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제4 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계;
제5 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제5 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계; 및
제6 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제6 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 여기서의 성분 식별자 정보는 슬라이스 레벨의 플래그로서, sh_reverse_last_sig_coeff_flag[cIdx]로 나타내며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 각각 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_reverse_last_sig_coeff_flag[0], sh_reverse_last_sig_ coeff_flag[1] 및 sh_reverse_last_sig_coeff_flag[2]를 포함할 수 있다. 여기서, 제4 성분 식별자 정보는 sh_reverse_last_sig_coeff_flag[0]로 나타내고, 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용되며; 제5 성분 식별자 정보는 sh_reverse_last_sig_ coeff_flag[1]로 나타내고, 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용되며; 제6 성분 식별자 정보는 sh_reverse_last_sig_coeff_flag[2]로 나타내고, 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용된다.
하나의 구체적인 예에서, YUV 3 개의 이미지 성분 중 각 이미지 성분에 모두 단독으로 하나의 성분 식별자 정보를 설정하여 제어한다. 시퀀스 레벨의 식별자 정보 sps_extension_flag, sps_range_extension_flag 및 sps_reverse_last_sig_coeff_ enabled_flag가 존재하는 것으로 가정한다. 시퀀스 레벨에서, 디코딩하여 sps_extension_flag를 획득하고, sps_extension_flag의 값이 1이면, 디코딩하여 sps_range_extension_flag를 획득해야 하고; sps_range_extension_flag의 값이 1이면, 디코딩하여 sps_reverse_ last_sig_coeff_enabled_flag를 획득해야 한다. 여기서, sps_reverse_last_sig_coeff_enabled_flag는 현재 시퀀스의 마지막 하나의 비제로 계수 위치 반전 기술이 사용되는 것이 허용되는 것을 나타내는 플래그이다. sps_reverse_last_sig_coeff_enabled_flag의 값이 1이면, 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용함을 나타내고; 그렇지 않은 경우(즉 sps_reverse_last_sig_ coeff_enabled_flag의 값이 0임), 현재 시퀀스 내의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 허용하지 않음을 나타낸다. sps_reverse_last_sig_coeff_enabled_flag가 출현되지 않으면, sps_reverse_last_sig_coeff_enabled_flag의 값은 0이다. 슬라이스 레벨에서, sps_reverse_last_sig_coeff_enabled_flag의 값이 1이면, 추가로 디코딩하여 성분 식별자 정보(sh_reverse_last_sig_coeff_flag[0], sh_reverse_last_ sig_coeff_flag[1] 및 sh_reverse_last_sig_coeff_flag[2])를 획득해야 한다. 여기서, sh_reverse_last_ sig_coeff_flag[cIdx], cIdx의 값은 0, 1, 2로서, 현재 슬라이스의 제 cIdx 성분의 마지막 하나의 비제로 계수 위치 반전을 나타내는 플래그이다. sh_reverse_last_sig_coeff_flag[cIdx]의 값이 1이면, 현재 슬라이스 내의 제cIdx 성분의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 나타내고; 그렇지 않은 경우(즉 sh_reverse_last_sig_coeff_flag[cIdx]의 값이 0임), 현재 슬라이스 내의 제cIdx 성분의 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 않는 것을 나타낸다. sh_reverse_last_sig_coeff_flag[cIdx]가 출현되지 않으면, sh_reverse_last_sig_ coeff_flag[cIdx]의 값은 0이다.
하나의 가능한 실시형태에서, YUV 포맷의 경우, 제0 성분은 Y 성분에 대응되고, 제1 성분은 U(Cb) 성분에 대응되며, 제2 성분은 V(Cr) 성분에 대응된다.
다른 하나의 가능한 실시형태에서, RGB 포맷의 경우, 제0 성분은 R 성분에 대응되고, 제1 성분은 G 성분에 대응되며, 제2 성분은 B 성분에 대응된다.
예시적으로, YUV 포맷으로 예를 들어, sh_reverse_last_sig_coeff_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하고; sh_reverse_last_sig_coeff_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하며; sh_reverse_last_sig_coeff_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정한다.
하나의 구현 방식에서, 표 6을 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set RBSP syntax).
…… Descriptor
sps_extension_flag u(1)
……
if( sps_extension_flag ) {
sps_range_extension_flag u(1)
……
if( sps_range_extension_flag )
sps_range_extension( )
}
……
다른 하나의 구현 방식에서, 표 7를 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set range extension syntax).
sps_range_extension( ) { Descriptor
……
sps_reverse_last_sig_coeff_enabled_flag u(1)
……
}
또 다른 하나의 구현 방식에서, 표 8을 참조하면, 그 신택스 요소 테이블의 보정은 아래와 같다(Slice header syntax).
Descriptor
if(sps_ reverse_last_sig_coeff_enabled_flag )
sh_reverse_last_sig_coeff_flag[0] u(1)
sh_reverse_last_sig_coeff_flag[1] u(1)
sh_reverse_last_sig_coeff_flag[2] u(1)
또 다른 하나의 구현 방식에서, 표 9를 참조하면, Slice header syntax에 대해 다른 하나의 보정 형태가 존재하며, 그 신택스 요소 테이블의 보정은 아래와 같다(Slice header syntax).
Descriptor
if(sps_ reverse_last_sig_coeff_enabled_flag )
for( cIdx = startComp; cIdx < ( startComp + numComps ); cIdx++ )
sh_reverse_last_sig_coeff_flag[cIdx] u(1)
여기서, 하나의 가능한 경우로는 startComp가 0이고, numComps가 3이다.
시멘틱에 대한 보정은 아래와 같다.
현재 블록 중 기설정된 스캔 순서에서의 마지막 하나의 비제로 계수의 수평(또는 열) 좌표의 값 lastSignificantCoeffX은 아래와 같은 방법에 따라 도출된다.
Last_sig_coeff_x_suffix가 존재하지 않으면,
LastSignificantCoeffX= last_sig_coeff_x_prefix이고;
그렇지 않은 경우(last_sig_coeff_x_suffix가 존재함),
LastSignificantCoeffX= (1<<((last_sig_coeff_x_prefix>>1)-1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix이며;
sh_reverse_last_sig_coeff_flag[cIdx]의 값이 1이면,
LastSignificantCoeffX = (1<<log2ZoTbWidth)-1-LastSignificantCoeffX이다.
현재 블록 중 스캔 순서에 따라 마지막 하나의 비제로 계수의 수직(또는 행) 좌표의 값 LastSignificantCoeffY는 아래와 같은 방법에 따라 도출된다.
last_sig_coeff_y_suffix가 존재하지 않으면,
LastSignificantCoeffY= last_sig_coeff_y_prefix이고;
그렇지 않은 경우(last_sig_coeff_y_suffix가 존재함),
LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1)-1)) * (2+(last_ sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix이며;
sh_reverse_last_sig_coeff_flag[cIdx]의 값이 1이면,
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1-LastSignificantCoeffY이다.
여기서, sh_reverse_last_sig_coeff_flag[cIdx]는 현재 슬라이스의 제cIdx 성분의 마지막 하나의 비제로 계수 위치 반전을 나타내는 플래그이고, cIdx의 값은 0, 1, 2이다.
더 이해할 수 있는 것은, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 이때 또한, 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트할 수 있으며, 다시 말해서 마지막 하나의 비제로 계수의 위치를 사용하지 않고, 기설정된 스캔 순서에 따라 현재 블록의 모든 0이 아닐 수 있는 계수를 모두 스캔하므로; 본 출원의 실시예는 또한 마지막 하나의 계수 인에이블 식별자 정보를 인입하여, 현재 블록이 마지막 하나의 계수 위치를 사용하는지 여부를 결정하는데 사용할 수 있다.
일부 실시예에서, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 방법은 또한,
비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계; 및
마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 마지막 하나의 계수 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 마지막 하나의 계수 인에이블 식별자 정보의 경우, default_last_coeff_enabled_flag로 나타낼 수 있다. 본 출원의 실시예에서, 마지막 하나의 계수 인에이블 식별자 정보는, 시퀀스 레벨의 식별자 정보, 픽쳐 레벨의 식별자 정보, 슬라이스 레벨의 식별자 정보 및 블록 레벨의 식별자 정보 중 적어도 하나일 수 있고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
다시 말해서, default_last_coeff_enabled_flag는 하나의 시퀀스 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐 레벨의 플래그 또는 슬라이스 레벨의 플래그 또는 블록 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있다. 또한, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함할 수 있으며, 본 출원의 실시예는 어떠한 한정도 하지 않는다.
일부 실시예에서, 상기 방법은 또한,
마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값이면, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시하는 것으로 결정하는 단계; 또는,
마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값이면, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하지 않도록 지시하는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만. 어떠한 한정도 하지 않는다.
이로써, 제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, default_last_coeff_ enabled_flag의 값이 1이면, default_last_coeff_enabled_flag가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시하는 것으로 결정할 수 있고; 또는, default_last_coeff_ enabled_flag의 값이 0이면, default_last_coeff_enabled_flag가 현재 블록이 마지막 하나의 계수 위치를 사용하지 않도록 지시하는 것으로 결정할 수 있다.
현재 블록에서 마지막 하나의 계수 위치를 사용하는 경우, 이때 기설정된 스캔 순서에 따라 마지막 하나의 계수 위치 이전의 모든 계수를 디코딩함으로써, 현재 블록의 계수를 결정할 수 있다.
더 나아가, 현재 블록이 마지막 하나의 계수 위치를 사용하지 않는 경우, 즉 마지막 하나의 계수 인에이블 식별자 정보의 값이 0일 경우, 일부 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하는 단계;
마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하는 단계; 및
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 현재 블록이 마지막 하나의 계수 위치를 사용하지 않으면, 이 경우, 디코딩하여 마지막 하나의 비제로 계수의 위치를 획득해야 한다. 구체적으로, 비트 스트림을 파싱하는 것을 통해, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix 및 last_sig_coeff_y_suffix를 획득한 다음; last_sig_coeff_x_prefix, last_sig_coeff_x_ suffix, last_sig_coeff_y_prefix 및 last_sig_coeff_y_suffix에 따라, 마지막 하나의 비제로 계수의 위치를 결정한다. 그렇지 않은 경우, 현재 블록이 마지막 하나의 계수 위치를 사용하면, 이 경우 마지막 하나의 비제로 계수의 위치를 결정할 필요가 없으며, 다시 말해서 디코딩하여 last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix 및 last_sig_coeff_y_suffix를 획득할 필요가 없다.
더 설명해야 할 것은, 현재 블록이 마지막 하나의 계수 위치를 사용하면, 기설정된 스캔 순서에 따라 마지막 하나의 계수 위치 이전의 모든 계수를 디코딩할 수 있고; 현재 블록이 마지막 하나의 계수 위치를 사용하지 않으면, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩할 수 있다. 여기서, 기설정된 스캔 순서는 대각선, Zigzag, 수평, 수직, 44 서브 블록 스캔 또는 임의의 다른 스캔 순서일 수 있으며, 본 출원의 실시예는 어떠한 한정도 하지 않는다.
더 나아가, 마지막 하나의 계수 위치의 경우, 일부 실시예에서, 마지막 하나의 계수 위치는 현재 블록 중 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는, 마지막 하나의 계수 위치는 현재 블록이 기설정된 스캔 순서에 따라 모든 가능하게 0이 아닌 계수를 스캔하는 것을 실행한 마지막 위치이다.
유의해야 할 것은, 본 출원의 실시예에서의 마지막 하나의 계수 위치는 마지막 하나의 비제로 계수의 위치를 대표하지 않는다. 그 이유는, 마지막 하나의 계수 위치에서의 계수는 0일 수 있지만, 마지막 하나의 비제로 계수의 위치에서의 계수는 무조건 0이 아니기 때문이다.
하나의 특정된 예에서, 상기 방법은 또한, 마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정하는 단계를 포함할 수 있다.
다시 말해서, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 여전히 사용할 수 있으며, 이 경우 마지막 하나의 비제로 계수의 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓아야 한다.
더 나아가, 마지막 하나의 계수 위치는 (LastCoeffX, LastCoeffY)로 나타낼 수 있고, 즉 현재 블록 중 기설정된 스캔 순서에서의 모든 가능하게 0이 아닌 계수의 마지막 위치를 나타낼 수 있다. 일부 실시예에서, 상기 방법은 또한,
현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하는 단계;
변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하는 단계; 및
변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 계수 위치를 결정하는 단계를 포함할 수 있다.
여기서, 기설정된 조작은, 강제 제로 아웃(zero-out) 조작을 적어도 포함한다.
설명해야 할 것은, (LastCoeffX, LastCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 좌표 정보를 나타내고; 여기서, (LastCoeffX, LastCoeffY)의 도출 방법은 아래와 같다.
LastCoeffX= (1<<log2ZoTbWidth)-1;
LastCoeffY= (1<<log2ZoTbHeight)-1.
이로써, default_last_coeff_enabled_flag의 값이 1이면, (LastCoeffX, LastCoeffY)에 따라 마지막 하나의 계수 위치를 결정할 수 있다.
하나의 특정한 예에서, 마지막 하나의 비제로 계수의 위치를 여전히 사용하며, 이 경우 마지막 하나의 비제로 계수의 위치를 현재 블록 중 기설정된 스캔 순서에서의 모든 가능하게 0인 계수의 마지막 위치에 놓을 수 있다. 일부 실시예에서, 상기 방법은 또한,
마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정할 경우, 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 포함할 수 있다.
다시 말해서, 마지막 하나의 비제로 계수의 위치는 (LastSignificantCoeffX, LastSignificantCoeffY)로 나타낼 수 있고, (LastSignificantCoeffX, LastSignificantCoeffY)의 도출 방법은 아래와 같다.
LastSignificantCoeffX= (1 <<log2ZoTbWidth)-1;
LastSignificantCoeffY= (1 <<log2ZoTbHeight)-1.
여기서, (LastSignificantCoeffX, LastSignificantCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 좌표 정보를 나타낸다. default_last_coeff_enabled_flag의 값이 1이면, (LastSignificantCoeffX, LastSignificantCoeffY)에 따라 마지막 하나의 비제로 계수의 위치를 결정할 수 있다.
이로써, 특정된 경우에 대해, 계수를 인코딩할 경우, 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트한다. 다시 말해서 일반적인 경우, 계수의 인코딩 및 디코딩 방법은 여전히 관련 기술에서의 기존의 방법과 동일하다. 특정된 경우는, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩을 의미할 수 있다. 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트하고, 다시 말해서 마지막 하나의 비제로 계수의 위치를 사용하지 않고, 기설정된 스캔 순서에 따라 현재 블록의 모든 가능하게 0이 아닌 계수를 모두 스캔하며; 또는, 인코딩해야 하는 마지막 하나의 계수 위치를 현재 블록 중 기설정된 스캔 순서에서의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓는다. 상기 위치는 일반적으로, 현재 블록 중 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치를 의미한다. 여기서 사용한 것은 마지막 하나의 비제로 계수의 위치가 아니라, 인코딩해야 하는 마지막 하나의 계수 위치이다. 그 이유는, 인코딩해야 하는 마지막 하나의 계수 위치에서의 계수는 0일 수 있지만, 마지막 하나의 비제로 계수의 위치에서의 계수는 무저건 0이 아니기 때문이다.
허나의 특수한 예로서, 마지막 하나의 비제로 계수의 위치를 여전히 사용하며, 이 경우 마지막 하나의 비제로 계수의 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓는다.
또한, 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수는, 마지막 하나의 비제로 계수 이외에 일부 다른 기술이 하나의 블록 중의 특정된 계수로 하여금 0으로 디폴트되도록 하기 때문이다. 예컨대, 전술한 zero-out일 수 있다.
시멘틱에 대한 보정은 표 10에서와 같다.
Descriptor
if(!default_last_coeff_enabled_flag){
if( log2TbWidth > 0 )
last_sig_coeff_x_prefix ae(v)
if( log2TbHeight > 0 )
last_sig_coeff_y_prefix ae(v)
if( last_sig_coeff_x_prefix > 3 )
last_sig_coeff_x_suffix ae(v)
if( last_sig_coeff_y_prefix > 3 )
last_sig_coeff_y_suffix ae(v)
}
본 출원의 실시예에서, 마지막 하나의 비제로 계수를 디코딩하는데 필요한 정보 전에 하나의 조건을 추가할 수 있으며, 즉 default_last_coeff_enabled_flag가 성립되지 않으면(즉 default_last_coeff_ enabled_flag의 값이 0과 같음), last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix 등 신택스 요소를 디코딩해야 한다. default_last_coeff_enabled_flag가 성립되면(즉 default_last_coeff_ enabled_flag의 값이 1과 같음), last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix 및 last_sig_coeff_y_suffix 등 신택스 요소를 디코딩할 필요가 없다.
여기서, default_last_coeff_enabled_flag는 디폴트 마지막 하나의 계수 인에이블을 나타내는 플래그로서, 디폴트 마지막 하나의 계수를 사용하는지 여부를 지시하는데 사용된다. deefault_last_coeff_enabled_flag의 값이 1이면, 디폴트 마지막 하나의 계수 위치를 사용하는 것을 나타내고, 즉 마지막 하나의 코딩해야 하는 계수 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓으며; 그렇지 않은 경우, 디폴트 마지막 하나의 계수 위치를 사용하지 않는 것을 나타낸다.
default_last_coeff_enabled_flag의 값이 1이면, 디폴트 마지막 하나의 계수 위치(LastCoeffX, LastCoeffY)는 현재 블록 중 기설정된 스캔 순서에서의 모든 가능하게 0이 아닌 계수의 마지막 위치이다. 기설정된 스캔 순서에서의 (LastCoeffX, LastCoeffY) 이전의 계수를 모두 스캔해야 한다. 본 출원의 실시예에서, (LastCoeffX, LastCoeffY)의 도출 방법은 아래와 같다.
LastCoeffX= (1<<log2ZoTbWidth)-1;
LastCoeffY= (1<<log2ZoTbHeight)-1.
여기서, (LastCoeffX, LastCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 위치의 좌표 정보이다.
하나의 특정된 예로서, 마지막 하나의 비제로 계수의 위치를 여전히 사용하고, 마지막 하나의 비제로 계수의 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓는다. 본 출원의 실시예에서, 마지막 하나의 비제로 계수의 위치(LastSignificantCoeffX, LastSignificantCoeffY)의 도출 방법은 아래와 같다.
LastSignificantCoeffX= (1<<log2ZoTbWidth)-1;
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1.
여기서, (LastSignificantCoeffX, LastSignificantCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 위치의 좌표 정보이다.
더 설명해야 할 것은, default_last_coeff_enabled_flag는 하나의 시퀀스(sequence) 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐(picture) 레벨의 플래그 또는 슬라이스(slice) 레벨의 플래그 또는 블록(block) 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있으며, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함한다.
또한, default_last_coeff_enabled_flag는 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보 등과 같은 일부 다른 플래그에 의존할 수 있다. 즉 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보의 값이 1일 경우, default_last_coeff_enabled_flag 플래그를 디코딩해야 하고; 그렇지 않은 경우, default_last_coeff_enabled_flag 플래그를 디코딩할 필요가 없다.
하나의 구체적인 예에서, 시퀀스 레벨을 예로 들어, 하나의 시퀀스 레벨의 플래그 sps_high_bit_depth_flag가 현재의 비디오 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하는 것으로 가정한다. sps_high_bit_depth_flag의 값이 1이면, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스인 것을 나타내고; 그렇지 않은 경우, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스가 아닌 것을 나타낸다. 시퀀스 레벨에서, sps_high_ bit_depth_flag의 값이 1이면, sps_default_last_coeff_enabled_flag를 디코딩해야 한다. 여기서, sps_default_last_coeff_enabled_flag는 현재 시퀀스의 디폴트 마지막 하나의 계수 인에이블 플래그이다. sps_default_last_coeff_enabled_flag의 값이 1이면, 현재 시퀀스 내의 블록이 디폴트 마지막 하나의 계수를 사용한 것을 나타내고; 그렇지 않은 경우(즉 sps_default_last_coeff_enabled_ flag의 값이 0임), 현재 시퀀스 내의 블록이 디폴트 마지막 하나의 계수를 사용하지 않는 것을 나탄낸다. 상기 신택스 테이블에서의 default_last_coeff_enabled_flag를 sps_default_last_coeff_ enabled_flag로 변경한다.
표 11을 참조하면, 구현할 경우, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set RBSP syntax).
Descriptor
sps_high_bit_depth_flag u(1)
if( sps_high_bit_depth_flag )
sps_default_last_coeff_enabled_flag u(1)
다른 하나의 구체적인 예에서, 슬라이스(slice) 레벨을 예로 들어, 하나의 시퀀스 레벨의 플래그 sps_high_bit_depth_flag는 현재의 비디오 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하는 것으로 가정한다. sps_high_bit_depth_flag의 값이 1이면, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스인 것으로 나타내고; 그렇지 않은 경우, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스가 아닌 것으로 나타낸다. slice 레벨에서, sps_high_ bit_depth_flag의 값이 1이면, sh_default_last_coeff_enabled_flag를 디코딩해야 한다. 여기서, sh_default_last_coeff_enabled_flag는 현재 슬라이스의 디폴트 마지막 하나의 계수 인에이블 플래그이다. sh_default_last_coeff_enabled_flag의 값이 1이면, 현재 슬라이스 내의 블록이 디폴트 마지막 하나의 계수를 사용한 것을 나타내고; 그렇지 않은 경우(즉 sh_default_last_coeff_enabled_flag의 값이 0임), 현재 슬라이스 내의 블록이 디폴트 마지막 하나의 계수를 사용하지 않는 것을 나타낸다. 상기 신택스 테이블에서의 default_last_coeff_enabled_flag를 sh_default_last_coeff_enabled_flag로 변경한다.
표 12를 참조하면, 구현할 경우, 그 신택스 요소 테이블의 보정은 아래와 같다(Slice header syntax).
Descriptor
if( sps_high_bit_depth_flag )
sh_default_last_coeff_enabled_flag u(1)
본 출원의 실시예에서, sh_default_last_coeff_enabled_flag, 즉 현재 슬라이스의 디폴트 마지막 하나의 계수 인에이블 식별자 정보의 경우, 현재 슬라이스 내의 각 이미지 성분이 모두 디폴트 마지막 하나의 계수를 사용하는지 여부를 단독으로 제어할 수 있음을 반영할 수 있다.
구체적으로, 현재 슬라이스의 디폴트 마지막 하나의 계수 인에이블 식별자 정보는, sh_default_last_coeff_enabled_flag[cIdx]로 나타낼 수도 있으며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 각각 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_default_last_coeff_enabled_flag[0], sh_default_last_coeff_enabled_flag[1] 및 sh_default_last_coeff_enabled_flag[2]를 포함할 수 있다. 여기서, sh_default_last_coeff_enabled_flag[0]은 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하는지 여부를 지시하기 위한 것이고; sh_default_last_coeff_enabled_flag[1]은 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하지 여부를 지시하기 위한 것이며; sh_default_last_coeff_enabled_flag[2]는 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하는지 여부를 지시하기 위한 것이다.
여기서, 본 출원의 실시예는 하나 또는 복수 개의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수도 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다. 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것으로 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 휘도 성분을 제어하고, 다른 하나의 성분 식별자 정보로 두 개의 색도 성분을 제어한다. 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 3 개의 이미지 성분은 RGB 중의 R, G, B, 또는 YUV 중의 Y, U, V, 또는 Y, Cb, Cr일 수 있다.
예시적으로, YUV 포맷을 예로 들면, 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어한다. 여기서, sh_default_last_coeff_enabled_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정하고; sh_default_last_ coeff_enabled_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정하며; sh_default_last_coeff_enabled_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정한다.
더 이해할 수 있는 것은, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 또한 스캔된 서브 블록을 인코딩해야 하는 것이 모두 디폴트일 수 있고, 이 경우 비트 스트림에서 sb_coded_flag를 전송할 필요가 없으며, 즉 인코딩 및 디코딩 속도를 빠르게 하기 위해, 인코더/디코더는 모두 상기 플래그를 처리할 필요가 없다. 따라서, 본 출원의 실시예는 또한, 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인지 여부를 결정하기 위한 서브 블록 디폴트 인코딩 식별자 정보를 인입할 수 있다.
일부 실시예에서, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 방법은,
비트 스트림을 파싱하여, 현재 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계;
서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 단계를 포함할 수 있다.
설명해야 할 것은, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록을 인코딩해야하는 것이 디폴트인 것으로 지시하면, 서브 블록 인코딩 식별자 정보의 값이 제1 값인 것으로 결정할 수 있으며, 이때 디코딩될 서브 블록 내의 모든 계수를 디코딩해야 한다.
더 설명해야 할 것은, 서브 블록 디폴트 식별자 정보의 경우, default_sb_coded _flag로 나타낼 수 있다. 본 출원의 실시예에서, 서브 블록 디폴트 인코딩 식별자 정보는, 시퀀스 레벨의 식별자 정보, 픽쳐 레벨의 식별자 정보, 슬라이스 레벨의 식별자 정보 및 블록 레벨의 식별자 정보 중 적어도 하나이고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
다시 말해서, default_sb_coded_flag는 하나의 시퀀스 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐 레벨의 플래그 또는 슬라이스 레벨의 플래그 또는 블록 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있다. 또한, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함할 수 있으며, 본 출원의 실시예는 모두 어떠한 한정도 하지 않는다.
일부 실시예에서, 상기 방법은 또한, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값이면, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트 인것으로 지시하는 것으로 결정하는 단계; 또는, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값이면, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시하는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 구체적으로, 제1 신택스 요소 식별자 정보는 프로파일(profile) 중에 기입된 파라미터일 수 있고, 하나의 플래그(flag)의 값일 수도 있으며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
제1 신택스 요소 식별자 정보가 하나의 flag인 것으로 예를 들면, 이때 제1 값 및 제2 값의 경우, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있으며; 또는, 제1 값은 또한 true로 설정될 수 있고, 제2 값은 또한 false로 설정될 수 있으며; 또는, 제1 값은 또한 0으로 설정될 수 있고, 제2 값은 또한 1로 설정될 수 있으며; 또는, 제1 값은 또한 false로 설정될 수 있고, 제2 값은 또한 true로 설정될 수 있으며; 여기서 어떠한 한정도 하지 않는다.
이로써, 제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, default_sb_coded_flag의 값이 1이면, default_sb_coded_flag가 디코딩될 서브 블록을 인코딩해야 하는 것이 디폴트인 것으로 지시하는 것으로 결정할 수 있고; 또는, default_sb_coded_flag의 값이 0이면, default_sb_ coded_flag가 디코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트인 것으로 지시하는 것으로 결정할 수 있다.
디코딩될 서브 블록을 인코딩해야 하는 것이 디폴트인 경우, 이때 default_sb_coded_flag의 값이 1이면, sb_coded_flag의 값이 1인 것을 의미하고, 즉 sb_coded_flag를 디코딩할 필요가 없으며, 이때 디코딩될 서브 블록 내의 모든 계수를 디코딩해야 하는 것으로 디폴트한다.
더 나아가, 디코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트인 경우, 즉 default_sb_coded_flag의 값이 0이면, 일부 실시예에서, 상기 방법은,
비트 스트림을 파싱하여, 디코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하는 단계; 및
서브 블록 인코딩 식별자 정보의 값이 제1 값일 경우, 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 단계를 포함할 수 있다.
설명해야 할 것은, 디코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트이면, 이 경우 또한 디코딩하여 서브 블록 인코딩 식별자 정보를 획득한 다음; 서브 블록 인코딩 식별자 정보에 따라 디코딩될 서브 블록 내의 모든 계수를 디코딩해야 하는지 여부를 결정해야 한다.
더 나아가, 서브 블록 인코딩 식별자 정보의 경우, 상기 방법은, 서브 블록 인코딩 식별자 정보의 값이 제1 값이면, 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 것으로 결정하는 단계; 또는, 서브 블록 인코딩 식별자 정보의 값이 제2 값이면, 디코딩될 서브 블록 내의 모든 계수가 모두 0인 것으로 결정하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 서브 블록 인코딩 식별자 정보는 sb_coded_flag로 나타낼 수 있다. 제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, sb_coded_flag의 값이 1이면, 디코딩될 서브 블록 내의 모든 계수를 디코딩해야 하는 것으로 결정할 수 있고; 또는, sb_coded_flag의 값이 0이면, 디코딩될 서브 블록 내의 모든 계수를 디코딩할 필요가 없는 것으로 결정할 수 있으며, 이 경우 디코딩될 서브 블록 내의 모든 계수는 모두 0이다.
이로써, 특정된 경우에서, 계수를 인코딩할 경우, 스캔된 서브 블록을 인코딩해야 하는 것이 모두 디폴트이고, 또는 스캔된 서브 블록에 비제로 계수가 포함되는 것이 모두 디폴트이다. 다시 말해서 일반적인 경우, 계수의 인코딩 및 디코딩 방법은 여전히 관련 기술에서의 기존의 방법과 동일하다. 특정된 경우는, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩을 의미할 수 있다. 이러한 경우 비제로 계수가 매우 많고, 스캔된 서브 블록을 거의 모두 인코딩해야 하며; 또는, 스캔된 서브 블록은 거의 모두 비제로 계수를 포함한다. 이로써 비트 스트림에서 sb_coded_flag를 전송할 필요가 없고, 인코더/디코더도 상기 플래그를 처리할 필요가 없음으로써, 인코딩 및 디코딩 속도를 빠르게 할 수 있다. 하나의 거의 없는 플래그를 제거하였으므로, 이때 압축 성능이 조금 향상된다.
시멘틱에 대한 보정은 표 13에서와 같다.
Descriptor
if( i<lastSubBlock && i>0 ) {
if(!default_sb_coded_flag) {
sb_coded_flag[xS][yS] ae(v)
}
inferSbDcSigCoeffFlag = 1
}
여기서, default_sb_coded_flag는 서브 블록 인코딩 필요 디폴트를 나타내는 플래그이다. default_sb_coded_flag의 값이 1이면, sb_coded_flag[xS][yS]의 값이 1인 것으로 결정할 수 있고, 이 경우 비트 스트림에서 디코딩을 수행할 필요가 없으며; 그렇지 않은 경우(default_sb_coded_flag의 값이 0임), 또한 비트 스트림에서 sb_coded_flag[xS][yS]를 디코딩해야 한다.
더 설명해야 할 것은, default_sb_coded_flag는 하나의 시퀀스(sequence) 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐(picture) 레벨의 플래그 또는 슬라이스(slice) 레벨의 플래그 또는 블록(block) 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있으며, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함한다.
또한, default_sb_coded_flag는 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보 등과 같은 일부 다른 플래그에 의존될 수 있다. 고 비트 폭 식별자 정보 또는 고 비트 레이트 식별자 정보의 값이 1일 경우, default_sb_coded_flag 플래그를 디코딩해야 하고; 그렇지 않은 경우, default_sb_coded_flag 플래그를 디코딩할 필요가 없다.
하나의 구체적인 예에서, 시퀀스 레벨을 예로 들어, 하나의 시퀀스 레벨의 플래그 sps_high_bit_depth_flag가 현재의 비디오 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하는 것으로 가정한다. ps_high_bit_depth_flag의 값이 1이면, 현재의 비디오 시퀀스가 고 비트 폭 시퀀스인 것을 나타내고; 그렇지 않은 경우, 현재의 비디오 시퀀스가 고 비트 폭 시퀀스가 아닌 것을 나타낸다. 시퀀스 레벨에서, sps_high_ bit_depth_flag의 값이 1이면, sps_default_sb_coded_flag를 디코딩해야 한다. 여기서, sps_default_sb_coded_flag는 현재 시퀀스의, 서브 블록을 인코딩해야 하는 것이 디폴트인 것을 나타내는 플래그이다. sps_default_sb_coded_flag의 값이 1이면, 현재 시퀀스 내의 블록이 서브 블록 인코딩 필요 디폴트인 것을 나타내고; 그렇지 않은 경우(즉 sps_default_sb_coded_flag의 값이 0임), 현재 시퀀스 내의 블록이 서브 블록 인코딩 필요 비-디폴트인 것을 나타낸다. 상기 신택스 테이블에서의 default_sb_coded_flag를 sps_default_sb_coded_flag로 변경한다.
표 14를 참조하면, 구현할 경우, 그 신택스 요소 테이블의 보정은 아래와 같다(Sequence parameter set RBSP syntax).
Descriptor
sps_high_bit_depth_flag u(1)
if( sps_high_bit_depth_flag )
sps_default_sb_coded_flag u(1)
다른 하나의 구체적인 예에서, 슬라이스(slice) 레벨로 예를 들어, 하나의 시퀀스 레벨의 플래그 sps_high_bit_depth_flag는 현재의 비디오 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하는 것으로 가정한다. sps_high_bit_depth_flag의 값이 1이면, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스인 것을 나타내고; 그렇지 않은 경우, 현재의 비디오 시퀀스는 고 비트 폭 시퀀스가 아닌 것을 나타낸다. slice 레벨에서, sps_high_ bit_depth_flag의 값이 1이면, sh_default_sb_coded_flag를 디코딩해야 한다. 여기서, sh_default_sb_coded_flag는 현재 슬라이스의, 서브 블록을 인코딩해야 하는 것이 디폴트인 것을 나타내는 플래그이다. sh_default_sb_coded_flag의 값이 1이면, 현재 슬라이스 내의 블록이 서브 블록을 인코딩해야 하는 것을 디폴트인 것을 나타내고; 그렇지 않은 경우(즉 sh_default_sb_coded_flag의 값이 0임), 현재 슬라이스 내의 블록이 서브 블록을 인코딩해야 하는 것이 비-디폴트인 것을 나타낸다. 상기 신택스 테이블에서의 default_sb_coded_flag를 sh_default_sb_coded_flag로 변경한다.
표 15를 참조하면, 구현할 경우, 그 신택스 요소 테이블의 보정은 아래와 같다(Slice header syntax).
Descriptor
if( sps_high_bit_depth_flag )
sh_default_sb_coded_flag u(1)
유의해야 할 것은, 시퀀스 레벨의 플래그 sps_high_bit_depth_flag는 현재 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하는 플래그이고, sps_high_bit_rate_flag로 대체하여 현재 시퀀스가 고 비트 레이트 시퀀스인지 여부를 지시할 수 있으며; 심지어 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실 인코딩 등을 지시하는 다른 플래그로 대체할 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
본 출원의 실시예에서, sh_default_sb_coded_flag, 즉 현재 슬라이스의 서브 블록 인코딩 필요 디폴트 식별자 정보의 경우, 현재 슬라이스 내의 각 이미지 성분은 모두 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 제어할 수 있음을 반영할 수 있다.
구체적으로, 현재 슬라이스의 서브 블록 인코딩 필요 디폴트 식별자 정보는, sh_default_sb_coded_flag[cIdx]로 나타낼 수 있으며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 각각 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_default_sb_coded_flag[0], sh_default_sb_coded_flag[1] 및 sh_default_sb_coded_flag[2]를 포함할 수 있다. 여기서, sh_default_sb_coded_flag[0]은 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이고; sh_default_sb_coded_flag[1]은 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이며; sh_default_sb_coded_flag[2]는 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이다.
여기서, 본 출원의 실시예는 하나 또는 복수 개의의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수도 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다. 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 휘도 성분을 제어하고, 다른 하나의 성분 식별자 정보로 두 개의 색도 성분을 제어한다. 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 3 개의 이미지 성분은 RGB 중의 R, G, B, 또는 YUV 중의 Y, U, V, 또는 Y, Cb, Cr일 수 있다.
예시적으로, YUV 포맷을 예로 들면, 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어한다. 여기서, sh_default_sb_coded_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정하고; sh_default_sb_ coded_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정하며; sh_default_sb_coded_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정하다.
요컨대, 비디오 중의 모든 이미지 성분의 경우, 통일한 식별자 정보를 사용하여 본 출원의 실시예의 방법을 사용하도록 제어하는 것 이외에, 상이한 식별자 정보를 각각 사용하여 각 이미지 성분이 본 출원의 실시예의 방법을 사용하도록 제어할 수 있고, 두 개의 식별자 정보를 사용하여 모든 이미지 성분이 본 출원의 실시예의 방법을 사용하도록 제어할 수도 있으며, 즉 하나 이상의 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수 있다. 여기서, 모든 이미지 성분은 예컨대 RGB 포맷 비디오의 R, G, B, 또는 YUV 포맷의 Y, U, V(Y, Cb, Cr) 등을 의미할 수 있다.
본 실시예는 디코더에 적용되는 디코딩 방법을 제공한다. 비트 스트림을 파싱하고, 현재 슬라이스의 성분 식별자 정보를 결정하며, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하며; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하며; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정한다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 또한 더욱 세분화적으로 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식을 제어할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
본 출원의 다른 하나의 실시예에서, 도 11을 참조하면, 도 11은 본 출원의 실시예에서 제공한 인코딩 방법의 흐름 예시도를 도시하였다. 도 11에 도시된 바와 같이, 상기 방법은,
단계 S1101에 있어서, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정한다.
단계 S1102에 있어서, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정한다.
단계 S1103에 있어서, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입한다.
설명해야 할 것은, 본 출원의 실시예의 인코딩 방법은, 구체적으로 인코더에 적용되는 계수 인코딩 방법을 의미한다. 여기서, 도 8a에 도시된 바와 같은 인코더(100)의 구성 구조에 기반하여, 상기 인코딩 방법은 주로 인코더(100) 중의 “엔트로피 코딩 유닛(115)” 부분에 적용되고, 상기 엔트로피 코딩 유닛(115)의 경우, 콘텍스트 모델에 기반한 적응적 2진 산술 인코딩 모드 또는 바이패스 모드를 사용하여 관련 식별자 정보(또는 신택스 요소)에 대해 엔트로피 코딩을 수생한 다음, 비트 스트림에 기입시킬 수 있다.
더 설명해야 할 것은, 비디오 표준에서 일반적으로 언급되는 인코딩은 인코딩 및 디코딩 두 개의 부분을 포함하므로, 비디오 인코딩은 인코더측의 인코딩 방법 및 디코더측의 디코딩 방법을 포함한다. 본 출원의 실시예는 인코더측에 대한 인코딩 방법을 설명한다.
일반적인 경우, 예컨대 일반적인 비디오의 경우, 계수에 대한 인코딩 방법과 관련 기술에서의 기존의 방법은 동일하지만; 고 비트 폭 또는 고 품질 또는 고 비트 레이트 또는 무손실 압축의 비디오 인코딩 및 디코딩과 같은 특정된 경우에 대해, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 보정하는 도출 방식을 제공하며, 이 경우 본 출원의 실시예는 성분 식별자 정보를 인입하여, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 결정해야 한다.
본 출원의 실시예에서, 성분 식별자 정보는 슬라이스(slice) 레벨의 플래그이다. 상기 성분 식별자 정보는 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하기 위한 것이다. 여기서, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 현재 슬라이스의 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 의미하고; 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 현재 슬라이스의 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것을 의미한다.
이해할 수 있는 것은, 현재 시퀀스는 현재 슬라이스를 포함하고, 현재 슬라이스 내에는 현재 블록이 포함될 수 있다. 일부 실시예에서, 현재 슬라이스의 성분 식별자 정보를 결정하기 전, 상기 방법은 또한,
제1 신택스 요소 식별자 정보를 결정하는 단계; 및
제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 제1 신택스 요소 식별자 정보를 결정하는 단계는, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하면, 제1 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않으면, 제1 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
더 나아가, 상기 방법은 또한, 제1 신택스 요소 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 구체적으로, 제1 신택스 요소 식별자 정보는 프로파일(profile) 중에 기입된 파라미터일 수 있고, 하나의 플래그(flag)의 값일 수도 있으며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
제1 신택스 요소 식별자 정보가 하나의 flag인 것으로 예를 들면, 이때 제1 값 및 제2 값의 경우, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있으며; 또는, 제1 값은 또한 true로 설정될 수 있고, 제2 값은 또한 false로 설정될 수 있으며; 또는, 제1 값은 또한 0으로 설정될 수 있고, 제2 값은 또한 1로 설정될 수 있으며; 또는, 제1 값은 또한 false로 설정될 수 있고, 제2 값은 또한 true로 설정될 수 있다. 예시적으로, flag의 경우, 일반적인 경우, 제1 값은 1일 수 있고, 제2 값은 0일 수 있지만, 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 제1 신택스 요소 식별자 정보는 시퀀스 레벨의 플래그로서, sps_reverse_last_sig_coeff_flag로 나타내고, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는지 여부를 지시하는데 사용될 수 있다. 이로써, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는 것으로 결정한 경우, 슬라이스 레벨의 성분 식별자 정보를 추가로 결정하여, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 판단하는데 편이하다.
더 나아가, 디코딩 하여 제1 신택스 요소 식별자 정보를 획득하기 전, 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하는 단계; 및
제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
디코딩 하여 제1 신택스 요소 식별자 정보를 획득하기 전, 다른 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
디코딩 하여 제1 신택스 요소 식별자 정보를 획득하기 전, 또 다른 하나의 가능한 실시예에서, 상기 방법은 또한,
비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하는 단계;
제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 포함할 수 있다.
설명해야 할 것은, 제2 신택스 요소 식별자 정보 및 제3 신택스 요소 식별자 정보는 모두 시퀀스 레벨의 플래그이다. 여기서, 제2 신택스 요소 식별자 정보는 sps_extension_flag로 나타내고, 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 지시하는데 사용될 수 있으며; 제3 신택스 요소 식별자 정보는 sps_range_extension_flag로 나타내고, 현재 시퀀스가 범위 확장을 사용하는지 여부를 지시하는데 사용될 수 있다.
다시 말해서, 디코딩하여 제1 신택스 요소 식별자 정보(sps_reverse_last_sig _coeff_flag)를 획득하기 전, 또는 비트 스트림을 파싱하여 sps_extension_flag를 획득한 후, sps_extension_flag는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하면, 디코딩하여 sps_reverse_last_sig_coeff_flag를 획득하고; 또는, 비트 스트림을 파싱하여 sps_range_extension_flag를 획득한 후, sps_range_extension_flag는 현재 시퀀스가 범위 확장을 사용하도록 지시하면, 디코딩하여 sps_reverse_last_sig_coeff_flag를 획득하며; 또는, 심지어 비트 스트림을 파싱하여 sps_extension_flag를 획득한 후, sps_extension_flag는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하면, 비트 스트림을 파싱하여 sps_range_extension_flag를 획득하고; sps_range_extension_flag는 현재 시퀀스가 범위 확장을 사용하도록 지시하면, 다시 디코딩하여 sps_reverse_last_sig_coeff_flag를 획득하지만; 본 출원의 실시예는 어떠한 한정도 하지 않는다.
본 출원의 실시예에서, 제2 신택스 요소 식별자 정보를 결정하는 단계는, 현재 시퀀스가 표준 확장 버전을 사용하면, 제2 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 현재 시퀀스가 표준 확장 버전을 사용하지 않으면, 제2 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
더 나아가, 상기 방법은 또한, 제2 신택스 요소 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 제3 신택스 요소 식별자 정보를 결정하는 단계는, 현재 시퀀스가 범위 확장을 사용하면, 제3 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 현재 시퀀스가 범위 확장을 사용하지 않으면, 제3 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
더 나아가, 상기 방법은 또한, 제3 신택스 요소 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 제2 신택스 요소 식별자 정보는 sps_extension_flag로 나타내고, 제3 신택스 요소 식별자 정보는 sps_range_extension_flag로 나타낸다. 이로써, 시퀀스 레벨에서, sps_extension_flag의 값이 1이면, 즉 현재 시퀀스가 표준 확장 버전을 사용하면, sps_range_extension_flag를 결정해야 하고; sps_range_ extension_flag의 값이 1이면, 즉 현재 시퀀스가 범위 확장을 사용하면, sps_reverse_last_sig_coeff_flag를 결정해야 하며; sps_reverse_last_sig_coeff_flag의 값이 1이면, 즉 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하면, 또한 슬라이스 레벨의 성분 식별자 정보를 추가로 결정하여, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 판단해야 한다.
일부 실시예에서, 현재 시퀀스가 범위 확장을 사용하는 것은, 현재 시퀀스가, 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함할 수 있다. 아래에서 4 개의 경우를 예로 들어 각각 설명한다.
하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 비트 폭 식별자 정보일 경우, 상기 방법은 또한, 고 비트 폭 식별자 정보는 현재 시퀀스가 고 비트 폭을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 비트 레이트 식별자 정보일 경우, 상기 방법은 또한, 고 비트 레이트 식별자 정보는 현재 시퀀스가 고 비트 레이트를 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 고 품질 식별자 정보일 경우, 상기 방법은 또한, 고 품질 식별자 정보는 현재 시퀀스가 고 품질을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 제3 신택스 요소 식별자 정보가 무손실 압축 식별자 정보일 경우, 상기 방법은 또한, 무손실 압축 식별자 정보는 현재 시퀀스가 무손실 압축을 만족하는 것으로 지시하면, 현재 시퀀스가 범위 확장을 사용하는 것으로 결정하는 단계를 포함할 수 있다.
예시적으로, 시퀀스 레벨을 예로 들면, 제3 신택스 요소 식별자 정보는 또한, 현재 시퀀스가 고 비트 폭 시퀀스인지 여부를 지시하기 위한 고 비트 폭 식별자 정보(sps_high_bit_depth_flag로 나타냄)일 수 있고; 또는 현재 시퀀스가 고 비트 레이트 시퀀스인지 여부를 지시하기 위한 고 비트 레이트 식별자 정보(sps_high_bit_rate_flag로 나타냄)로 대체할 수 있으며; 또는 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실 압축을 지시하는 다른 식별자 정보로 대체할 수도 있으며, 본 출원의 실시예는 구체적으로 한정하지 않는다.
본 출원의 실시예에서, 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보 및 제3 신택스 요소 식별자 정보 등은 시퀀스(sequence) 레벨의 플래그일 수 있고, 심지어 비디오 사용성 정보(Video Usability Information, VUI), 보충 증강 정보(Supplemental Enhancement Information, SEI) 등과 같은 더욱 높은 레벨의 플래그일 수도 있다.
더 나아가, 마지막 하나의 비제로 계수 위치 반전 식별자 정보의 경우, reverse_last_sig_coeff_flag로 나타낼 수 있다. 여기서, 마지막 하나의 비제로 계수 위치 반전 식별자 정보는, 시퀀스(sequence) 레벨의 식별자 정보, 픽쳐(picture) 레벨의 식별자 정보, 슬라이스(slice) 레벨의 식별자 정보 및 블록(block) 레벨의 식별자 정보 중 적어도 하나일 수 있고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
다시 말해서, reverse_last_sig_coeff_flag는 하나의 시퀀스 레벨 또는 더욱 높은 레벨의 플래그일 수 있고, 픽쳐 레벨의 플래그 또는 슬라이스 레벨의 플래그 또는 블록 레벨의 플래그 또는 다른 레벨의 플래그일 수도 있다. 또한, 블록 레벨의 플래그는 최대 코딩 유닛(LCU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 트리 유닛(CTU) 레벨의 플래그 또는 코딩 유닛(CU) 레벨의 플래그 또는 다른 블록 레벨의 플래그를 포함할 수 있으며, 본 출원의 실시예는 모두 한정하지 않는다.
본 출원의 실시예에서, 시퀀스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보는 sps_reverse_last_sig_coeff_flag로 나타낼 수 있고, 슬라이스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보는 sh_reverse_last_sig_coeff_flag로 나타낼 수 있다.
더 설명해야 할 것은, 슬라이스 레벨의 마지막 하나의 비제로 계수 위치 반전 식별자 정보의 경우, 또한 현재 슬라이스의 성분 식별자 정보로 지칭될 수 있다. 일부 실시예에서, 상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는,
현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 성분 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
제1 값이 1이고, 제2 값이 0인 것으로 예로 들어, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 즉 현재 슬라이스에 속하는 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 성분 식별자 정보의 값이 1인 것으로 결정할 수 있고; 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 즉 현재 슬라이스에 속하는 성분에 대응되는 현재 블록도 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 성분 식별자 정보의 값이 0인 것으로 결정할 수 있다.
더 나아가, 현재 슬라이스에 속하는 성분에 대응되는 현재 블록의 경우, 마지막 하나의 비제로 계수의 위치는 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표를 포함할 수 있다. 초기 수평 좌표 및 초기 수직 좌표가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리일 경우, 상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 위치에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
성분 식별자 정보의 값이 제1 값이면, 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 계산하여, 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계; 또는,
성분 식별자 정보의 값이 제2 값이면, 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 마지막 하나의 비제로 계수의 좌표 정보를 직접 결정하는 단계를 포함할 수 있다.
다시 말해서, 일부 실시예에서, 상기 방법은 또한,
성분 식별자 정보의 값이 제1 값이면, 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계; 또는,
성분 식별자 정보의 값이 제2 값이면, 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계를 포함할 수 있다.
다시 말해서, 마지막 하나의 비제로 계수의 좌표 정보는 일반적으로 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리이다. 일반적인 비디오의 경우, 비제로 계수가 왼쪽 위 모서리에 대부분 집중되어, 오른쪽 아래 모서리의 대부분 영역은 0이지만; 고 비트 폭, 고 품질, 고 비트 레이트의 비디오 인코딩 및 디코딩의 경우, 오른쪽 아래 모서리에도 대량의 비제로 계수가 출현되어, 마지막 하나의 비제로 계수의 좌표 정보의 값으로 하여금 일반적으로 비교적 크도록 하며, 이 경우 오버헤드를 절약하기 위해, 계수를 인코딩할 경우 좌표 변환(구체적으로 좌표 반전 계산일 수 있으며, 즉 좌표 반전 후 마지막 하나의 비제로 계수의 좌표 정보는, 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리임)을 수행하여야 하고, 이러면 향후 디코더에서, 계수를 디코딩할 경우에도 좌표 반전 계산을 수행해야 하며, 재차 반전 후 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 회복할 수 있음으로써, 마지막 하나의 비제로 계수의 위치를 결정할 수 있다.
더 나아가, 일부 실시예에서, 상기 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 계산하여, 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
현재 블록의 너비 및 높이를 결정하는 단계;
현재 블록의 너비와 마지막 하나의 비제로 계수의 초기 수평 좌표에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수평 좌표를 획득하는 단계;
현재 블록의 높이와 마지막 하나의 비제로 계수의 초기 수직 좌표에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수직 좌표를 획득하는 단계; 및
마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 현재 슬라이스에 속하는 성분에 대응되는 현재 블록은, zero-out 변환이 없는 블록일 수 있고, zero-out 변환된 후의 블록일 수도 있다. zero-out 변환된 후의 블록을 예로 들어, 이 경우 현재 블록의 너비가 1<<log2ZoTbWidth이고, 현재 블록의 높이가 1<<log2ZoTbHeight이면; 성분 식별자 정보가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시한 경우,
LastSignificantCoeffX= (1<<log2ZoTbWidth)-1-LastSignificantCoeffX;
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1-LastSignificantCoeffY이다.
여기서, 공식 오른쪽의 (LastSignificantCoeffX, LastSignificantCoeffY)는 직접 결정된 마지막 하나의 비제로 계수의 좌표 정보(즉 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표임)를 나타내고, 공식 왼쪽의 (LastSignificantCoeffX, LastSignificantCoeffY)는 좌표 반전 후 획득된 마지막 하나의 비제로 계수의 좌표 정보(즉 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용한 경우, 비트 스트림에 기입된 마지막 하나의 비제로 계수의 좌표 정보임)를 나타낸다.
일부 실시예에서, 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하는 단계는,
마지막 하나의 비제로 계수의 좌표 정보에 따라, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하는 단계;
상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보는 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_x_suffix, last_sig_coeff_y_prefix 및 last_sig_coeff_y_suffix를 비트 스트림에 기입하여, 디코더가 비트 스트림을 파싱하여 마지막 하나의 비제로 계수의 좌표 정보를 결정할 수 있다.
본 출원의 실시예에서, 기설정된 스캔 순서는 대각선, Zigzag, 수평, 수직, 44 서브 블록 스캔 또는 임의의 다른 스캔 순서일 수 있으며, 여기서 어떠한 한정도 하지 않는다.
이로써, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 보정하는 도출 방식을 제공한다. 다시 말해서일 반적인 경우, 계수의 인코딩 및 디코딩 방법은 여전히 관련 기술의 기존의 방법과 동일하다. 특정된 경우는, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩을 의미할 수 있다. 도 10a 도시된 바와 같이, 일반적인 경우, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치의 횡좌표, 즉 현재 블록의 왼쪽 위 모서리에 대한 수평 거리이고; last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치의 종좌표, 즉 현재 블록의 왼쪽 위 모서리에 대한 수직 거리이다. 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩의 경우, 마지막 하나의 비제로 계수의 위치는 보편적으로 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 접근된다. 이러한 경우, 도 10b에 도시된 바와 같이, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 대한 수평 거리이고; last_sig_coeff_y_prefix, last_sig_coeff_y_suffix로 인코딩된 것은 마지막 하나의 비제로 계수 위치가 현재 블록의 모든 0이 아닐 수 있는 계수의 영역의 오른쪽 아래 모서리에 대한 수직 거리이며; 따라서, 본 출원의 실시예는 reverse_last_sig_coeff_flag를 인입함으로써, 비트 스트림에서 비교적 큰 값을 인코딩함으로 인해 더욱 큰 오버헤드가 초래되는 문제를 해결할 수 있다.
더 나아가, 슬라이스 레벨의 reverse_last_sig_coeff_flag(즉 현재 슬라이스의 성분 식별자 정보, sh_reverse_last_sig_coeff_flag)의 경우, 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 현재 슬라이스 내의 각 이미지 성분이 모두 단독으로 제어할 수 있음을 반영할 수 있다.
본 출원의 실시예에서, 성분은 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 수 있다.
하나의 구체적인 예에서, 제1 이미지 성분은 휘도 성분이고, 제2 이미지 성분은 제1 색도 성분이며, 제2 이미지 성분은 제2 색도 성분이다. 여기서, 휘도 성분은 Y 성분으로 나타내고, 제1 색도 성분은 U(Cb) 성분으로 나타내며, 제2 색도 성분은 V(Cr) 나타낸다.
다른 하나의 구체적인 예에서, 제1 이미지 성분은 적색 성분이고, 제2 이미지 성분은 녹색 성분이며, 제3 이미지 성분은 청색 성분이다. 여기서, 적색 성분은 R 성분으로 나타내고, 녹색 성분은 G 성분으로 나타내며, 청색 성분은 B로 나타낸다.
더 나아가, 일부 실시예에서, 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 상기 방법은 또한,
제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 사이의 속성 관계에 기반하여, 현재 슬라이스 내의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 사이에 성분 식별자 정보를 공용하는 것이 존재하는지 여부를 판단하는 단계; 및
판단 결과에 따라, 현재 슬라이스의 성분 식별자 정보의 개수를 결정하는 단계를 포함할 수 있고; 여기서, 상기 성분 식별자 정보의 개수는 1 개 또는 2 개 또는 3 개이다.
구체적으로, 성분 식별자 정보의 개수를 결정하는 단계는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하는 단계; 또는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하는 단계; 또는,
현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 각 이미지 성분 간의 자체의 속성이 상이하고, 일부 교차 성분 기술이 사용되므로, 각 이미지 성분의 잔차 분포 규칙이 시종 일치한 것이 아니도록 한다. 예컨대 비트 레이트가 매우 높고, 품질 요구가 매우 높은 비디오 인코딩 및 디코딩에서, 상이한 성분의 비제로 계수의 분포 상황은 비슷하며, 예컨대 비제로 계수는 비제로 일 수 있는 계수의 영역의 오른쪽 아래 모서리 위치에 모두 접근한다. 그러나 일부 비트 레이트가 높지 않고, 품질 요구가 높지 않은 비디오 인코딩 및 디코딩에서, 상이한 성분의 비제로 계수의 분포 상황은 상이할 수 있으며, 예컨대 Y 성분의 비제로 계수는 비제로 일 수 있는 계수의 영역의 오른쪽 아래 모서리 위치에 모두 접근하고, U/V 성분의 비제로 계수는 왼쪽 위 모서리 위치에만 분포되며; 또는 U 성분의 비제로 계수도 오른쪽 아래 모서리 위치에 접근하고, V 성분의 비제로 계수는 왼쪽 위 모서리 위치에만 분포된다.
따라서, 본 출원의 실시예는 하나 또는 복수 개의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다. 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 하나의 성분 식별자 정보로 휘도 성분을 제어하고, 다른 하나의 성분 식별자 정보로 두 개의 색도 성분을 제어한다. 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며, 예컨대 3 개의 이미지 성분은 RGB 중의 R, G, B, 또는 YUV 중의 Y, U, V, 또는 Y, Cb, Cr일 수 있다.
하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 1 개일 경우, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 현재 슬라이스의 제1 성분 식별자 정보를 결정하는 단계를 포함할 수 있고;
상응하게, 상기 방법은 또한, 제1 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제1 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
다른 하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 2 개일 경우, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하는 단계를 포함할 수 있고;
상응하게, 상기 방법은 또한, 제2 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제2 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계; 및
제3 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제3 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
또 다른 하나의 가능한 실시형태에서, 성분 식별자 정보의 개수가 3 개일 경우, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하는 단계를 포함할 수 있고;
상응하게, 상기 방법은 또한, 제4 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제4 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계;
제5 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제5 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계; 및
제6 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 또는, 제6 성분 식별자 정보의 값이 제2 값이면, 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않는 것으로 결정하는 단계를 포함할 수 있다.
설명해야 할 것은, 제1 값 및 제2 값은 상이하고, 제1 값 및 제2 값은 파라미터 형태일 수 있고, 수치 형태일 수도 있다. 하나의 구체적인 예에서, 제1 값은 1로 설정될 수 있고, 제2 값은 0으로 설정될 수 있지만, 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 여기서의 성분 식별자 정보는 슬라이스 레벨의 플래그로서, sh_reverse_last_sig_coeff_flag[cIdx]로 나타낼 수 있으며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 각각 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_reverse_last_sig_coeff_flag[0], sh_reverse_last_sig_ coeff_flag[1] 및 sh_reverse_last_sig_coeff_flag[2]를 포함할 수 있다. 여기서, 제4 성분 식별자 정보는 sh_reverse_last_sig_coeff_flag[0]으로 나타내고, 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용되며; 제5 성분 식별자 정보는 sh_reverse_last_sig_ coeff_flag[1]로 나타내고, 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용되며; 제6 성분 식별자 정보는 sh_reverse_last_sig_coeff_flag[2]로 나타내고, 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하는데 사용된다.
예시적으로, YUV 포맷을 예로 들면, 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어한다. 여기서, sh_reverse_last_sig_coeff_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)에 대응되는 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하고; sh_reverse_last_sig_coeff_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)에 대응되는 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하며; sh_reverse_last_sig_coeff_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)에 대응되는 블록이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정한다.
더 이해할 수 있는 것은, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 이때 또한 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트할 수 있으며, 다시 말해서 마지막 하나의 비제로 계수의 위치를 사용하지 않고, 기설정된 스캔 순서에 따라 현재 블록의 모든 0이 아닐 수 있는 계수를 모두 스캔하므로; 본 출원의 실시예는 또한 마지막 하나의 계수 인에이블 식별자 정보를 인입하여, 현재 블록이 마지막 하나의 계수 위치를 사용하는지 여부를 결정하는데 사용할 수 있다.
일부 실시예에서, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 방법은 또한,
현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계; 및
마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 상기 마지막 하나의 계수 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 비디오 식별자 정보 및 마지막 하나의 계수 인에이블 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 마지막 하나의 계수 인에이블 식별자 정보의 경우, default_last_coeff_enabled_flag로 나타낼 수 있다. 본 출원의 실시예에서, 마지막 하나의 계수 인에이블 식별자 정보는, 시퀀스 레벨의 식별자 정보, 픽쳐 레벨의 식별자 정보, 슬라이스 레벨의 식별자 정보 및 블록 레벨의 식별자 정보 중 적어도 하나일 수 있고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 마지막 하나의 계수 인에이블 식별자 정보의 경우, 일부 실시예에서, 상기 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계는,
현재 블록이 상기 마지막 하나의 계수 위치를 사용하면, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
현재 블록이 상기 마지막 하나의 계수 위치를 사용하지 않으면, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
다시 말해서, 제1 값이 1이고, 제2 값이 0인 것으로 예로 들어, 현재 블록이 마지막 하나의 계수 위치를 사용하는 것으로 결정하면, default_last_coeff_enabled_flag의 값은 1이고; 또는, 현재 블록이 마지막 하나의 계수 위치를 사용하지 않는 것으로 결정하면, default_last_coeff_ enabled_flag의 값은 0이다.
더 나아가, 마지막 하나의 계수 위치의 경우, 일부 실시예에서, 마지막 하나의 계수 위치는 현재 블록 중 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는, 마지막 하나의 계수 위치는 현재 블록이 기설정된 스캔 순서에 따라 모든 가능하게 0이 아닌 계수를 스캔하는 것을 실행한 마지막 위치이다.
유의해야 할 것은, 본 출원의 실시예에서의 마지막 하나의 계수 위치는 마지막 하나의 비제로 계수의 위치를 대표하지 않는다. 그 이유는, 마지막 하나의 계수 위치에서의 계수는 0일 수 있지만, 마지막 하나의 비제로 계수의 위치에서의 계수는 무조건 0이 아니기 때문이다.
하나의 특정한 예에서, 상기 방법은 또한, 마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정하는 단계를 포함할 수 있다.
다시 말해서, 본 출원의 실시예는 마지막 하나의 비제로 계수의 위치를 여전히 사용할 수 있으며, 이 경우 마지막 하나의 비제로 계수의 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓아야 한다.
더 나아가, 마지막 하나의 계수 위치는 (LastCoeffX, LastCoeffY)로 나타낼 수 있고, 즉 현재 블록 중 기설정된 스캔 순서에서의 모든 가능하게 0이 아닌 계수의 마지막 위치를 나타낼 수 있다. 일부 실시예에서, 상기 방법은 또한,
상기 현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하는 단계;
상기 변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하는 단계; 및
상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 계수 위치를 결정하는 단계를 포함할 수 있다.
여기서, 기설정된 조작은, 강제 제로 아웃(zero-out) 조작을 적어도 포함할 수 있다.
설명해야 할 것은, (LastCoeffX, LastCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 좌표 정보를 나타내고; 여기서, (LastCoeffX, LastCoeffY)의 도출 방법은 아래와 같다.
LastCoeffX= (1<<log2ZoTbWidth)-1;
LastCoeffY= (1<<log2ZoTbHeight)-1.
이로써, default_last_coeff_enabled_flag의 값이 1이면, (LastCoeffX, LastCoeffY)에 따라 마지막 하나의 계수 위치를 결정할 수 있다.
하나의 특정한 예에서, 마지막 하나의 비제로 계수의 위치를 여전히 사용하며, 이 경우 마지막 하나의 비제로 계수의 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0인 계수의 마지막 위치에 놓을 수 있다. 일부 실시예에서, 상기 방법은 또한,
마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정할 경우, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 포함할 수 있다.
다시 말해서, 마지막 하나의 비제로 계수의 위치는 (LastSignificantCoeffX, LastSignificantCoeffY)로 나타낼 수 있고, (LastSignificantCoeffX, LastSignificantCoeffY)의 도출 방법은 아래와 같다.
LastSignificantCoeffX= (1<<log2ZoTbWidth)-1;
LastSignificantCoeffY= (1<<log2ZoTbHeight)-1.
여기서, (LastSignificantCoeffX, LastSignificantCoeffY)는 zero-out 후의 변환 블록의 오른쪽 아래 모서리 좌표 정보를 나타낸다. default_last_coeff_enabled_flag의 값이 1이면, (LastSignificantCoeffX, LastSignificantCoeffY)에 따라 마지막 하나의 비제로 계수의 위치를 결정할 수 있다.
더 나아가, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하지 않도록 지시할 겨우, 즉 마지막 하나의 계수 인에이블 식별자 정보의 값이 0인 경우, 일부 실시예에서, 상기 방법은 또한,
현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하는 단계;
상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계; 및
기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 현재 블록이 마지막 하나의 계수 위치를 사용하지 않으면, 이 경우 마지막 하나의 비제로 계수의 위치를 결정해야 한다. 구체적으로, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix 및 last_sig_coeff_y_suffix를 결정한 다음; last_sig_coeff_x_prefix, last_sig_coeff_x_ suffix, last_sig_coeff_y_ prefix 및 last_sig_coeff_y_suffix를 비트 스트림에 기입해야 한다.
이로써, 계수를 인코딩할 경우, 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트한다. 다시 말해서 일반적인 경우, 계수 인코딩 및 디코딩 방법은 여전히 관련 기술에서의 기존의 방법과 동일하다. 특정된 경우는, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩을 의미할 수 있고, 가능하게 인코딩해야 하는 모든 계수를 인코딩해야 하는 것으로 디폴트하며, 다시 말해서 마지막 하나의 비제로 계수의 위치를 사용하지 않고, 기설정된 스캔 순서에 따라 현재 블록의 모든 가능하게 0이 아닌 계수를 모두 스캔하며; 또는, 마지막 하나의 인코딩해야 하는 계수 위치를 기설정된 스캔 순서에서의 현재 블록의 모든 가능하게 0이 아닌 계수의 마지막 위치에 놓는다. 상기 위치는 일반적으로, 현재 블록의 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치를 의미한다. 따라서, 본 출원의 실시예는 default_last_coeff_enabled_flag를 인입하는 것을 통해, 마지막 하나의 비제로 계수 위치에 관련된 신택스 요소를 감소하거나 심지어 소거할 수 있으므로, 오버헤드를 절약하고, 낭비되는 것을 피할 수 있다.
더 나아가, sh_default_last_coeff_enabled_flag, 즉 현재 슬라이스의 디폴트 마지막 하나의 계수 인에이블 식별자 정보의 경우, 현재 슬라이스 내의 각 이미지 성분이 모두 디폴트 마지막 하나의 계수를 사용하는지 여부를 단독으로 제어할 수 있음을 반영할 수 있다.
구체적으로, 현재 슬라이스의 디폴트 마지막 하나의 계수 인에이블 식별자 정보도, sh_default_last_coeff_enabled_flag[cIdx]로 나타낼 수 있으며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_default_last_coeff_enabled_flag[0], sh_default_last_coeff_enabled_flag[1] 및 sh_default_last_coeff_enabled_flag[2]를 포함할 수 있다. 여기서, sh_default_last_coeff_enabled_flag[0]은 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하는지 여부를 지시하기 위한 것이고; sh_default_last_coeff_enabled_flag[1]은 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하지 여부를 지시하기 위한 것이며; sh_default_last_coeff_enabled_flag[2]는 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 디폴트 마지막 하나의 계수를 사용하는지 여부를 지시하기 위한 것이다.
여기서, 본 출원의 실시예는 하나 또는 복수 개의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수도 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있고; 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것으로 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며; 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다.
예시적으로, YUV 포맷을 예로 들면, 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어한다. 여기서, sh_default_last_coeff_enabled_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정하고; sh_default_last_coeff_enabled_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정하며; sh_default_last_coeff_enabled_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)에 대응되는 블록이 디폴트 마지막 하나의 계수를 사용하는 것으로 결정한다.
더 이해할 수 있는 것은, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 또한 스캔된 서브 블록을 인코딩해야 하는 것이 모두 디폴트일 수 있고, 이 경우 비트 스트림에서 sb_coded_flag를 전송할 필요가 없으며, 즉 인코딩 및 디코딩 속도를 빠르게 하기 위해, 인코더/디코더는 모두 상기 플래그를 처리할 필요가 없다. 따라서, 본 출원의 실시예는 또한, 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인지 여부를 결정하기 위한, 서브 블록 디폴트 인코딩 식별자 정보를 인입할 수 있다.
일부 실시예에서, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 방법은 또한,
현재 블록 내의 인코딩될 서브 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계;
서브 블록 디폴트 인코딩 식별자 정보가 상기 인코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 인코딩될 서브 블록 내의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보 및 상기 서브 블록 디폴트 인코딩 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
설명해야 할 것은, 서브 블록 디폴트 식별자 정보의 경우, default_sb_coded_ flag로 나타낼 수 있다. 본 출원의 실시예에서, 서브 블록 디폴트 인코딩 식별자 정보는, 시퀀스 레벨의 식별자 정보, 픽쳐 레벨의 식별자 정보, 슬라이스 레벨의 식별자 정보 및 블록 레벨의 식별자 정보 중 적어도 하나이고; 심지어 더욱 높은 레벨(예컨대 VUI, SEI 등)의 식별자 정보일 수도 있으며, 여기서 어떠한 한정도 하지 않는다.
더 설명해야 할 것은, 서브 블록 디폴트 식별자 정보의 경우, 일부 실시예에서, 상기 인코딩될 서브 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계는, 인코딩될 서브 블록에 대한 인코딩이 디폴트이면, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 인코딩될 서브 블록에 대한 인코딩이 비-디폴트이면, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
이로써, 제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, 인코딩될 서브 블록을 인코딩해야 하는 것이 디폴트인 것으로 결정하면, default_sb_coded_flag의 값은 1이고; 또는, 인코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트인 것으로 결정하면, default_sb_coded_flag의 값은 0이다.
인코딩될 서브 블록을 인코딩해야 하는 것이 디폴트인 경우, 이때 default_sb_coded_flag의 값은 1이고, sb_coded_flag의 값이 1인 것을 의미하며, 즉 sb_coded_flag를 인코딩할 필요가 없다. 그러나 인코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트인 경우, 즉 서브 블록 디폴트 인코딩 식별자 정보가 인코딩될 서브 블록을 인코딩해야 하는 것이 비-디폴트인 것으로 지시할 경우, 일부 실시예에서, 상기 방법은 또한, 인코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하고, 서브 블록 인코딩 식별자 정보를 비트 스트림에 기입하는 단계를 포함할 수 있다.
더 나아가, 일부 실시예에서, 상기 인코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하는 단계는, 서브 블록 내를 인코딩해야 하면, 서브 블록 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 서브 블록 내의 모든 계수가 모두 0이면, 서브 블록 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함할 수 있다.
본 출원의 실시예에서, 서브 블록 인코딩 식별자 정보는 sb_coded_flag로 나타낼 수 있다. 제1 값이 1이고, 제2 값이 0인 것으로 예를 들어, 인코딩될 서브 블록을 인코딩해야 하는 것으로 결정하면, 인코딩될 서브 블록 내에는 인코딩될 비제로 계수가 포함되는 것을 의미하고, sb_coded_flag의 값은 1이며; 또는, 인코딩될 서브 블록을 인코딩할 필요가 없는 것으로 결정하면, 인코딩될 서브 블록 내의 모든 계수가 모두 0인 것을 의미하고, sb_coded_flag의 값은 0이다.
이로써, 계수를 인코딩할 경우, 스캔된 서브 블록을 인코딩해야 하는 것이 모두 디폴트이고, 또는 스캔된 서브 블록에 비제로 계수가 포함되는 것이 모두 디폴트이다. 다시 말해서 일반적인 경우, 계수 인코딩의 방법은 여전히 관련 기술에서의 기존의 방법과 동일하다. 특정된 경우는, 예컨대 고 비트 폭 또는 고 품질 또는 고 비트 레이트의 비디오 또는 무손실 압축의 비디오 인코딩 및 디코딩을 의미하며, 이러한 경우 비제로 계수가 매우 많고, 스캔된 서브 블록은 거의 모두 인코딩되어야 하며; 또는, 스캔된 서브 블록은 거의 모두 비제로 계수를 포함한다. 이로써 비트 스트림에서 sb_coded_flag를 전송할 필요가 없고, 인코더도 상기 플래그를 처리할 필요가 없음으로써, 인코딩 및 디코딩 속도를 빠르게 할 수 있다. 하나의 거의 없는 플래그를 제거하였으므로, 이때 압축 성능이 조금 향상된다.
더 나아가, sh_default_sb_coded_flag, 즉 현재 슬라이스의 서브 블록 인코딩 필요 디폴트 식별자 정보의 경우, 현재 슬라이스 내의 각 이미지 성분은 모두 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 제어할 수 있음을 반영할 수 있다.
구체적으로, 현재 슬라이스의 서브 블록 인코딩 필요 디폴트 식별자 정보는, sh_default_sb_coded_flag[cIdx]로 나타낼 수도 있으며, 여기서, cIdx의 값은 0, 1, 2이다. 구체적으로, 3 개의 성분 식별자 정보를 사용하여 3 개의 이미지 성분을 각각 제어할 경우, 상기 3 개의 성분 식별자 정보는, sh_default_sb_coded_flag[0], sh_default_sb_coded_flag[1] 및 sh_default_sb_coded_flag[2]를 포함할 수 있다. 여기서, sh_default_sb_coded_flag[0]은 현재 슬라이스의 제1 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이고; sh_default_sb_coded_flag[1]은 현재 슬라이스의 제2 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이며; sh_default_sb_coded_flag[2]는 현재 슬라이스의 제3 이미지 성분에 대응되는 현재 블록이 서브 블록 인코딩 필요 디폴트를 사용하는지 여부를 지시하기 위한 것이다.
여기서, 본 출원의 실시예는 하나 또는 복수 개의 성분 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수도 있다. 예시적으로, 1 개의 성분 식별자 정보를 사용하여 플래그를 제어하는 것을 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있고; 또는 2 개의 성분 식별자 정보를 각각 사용하여 플래그를 제어하는 것으로 통해 3 개의 이미지 성분이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있으며; 또는 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어할 수 있다.
하나의 구체적인 예에서, YUV 포맷을 예로 들면, 3 개의 성분 식별자 정보를 각각 사용하여 3 개의 이미지 성분 중의 각각이 본 출원의 실시예의 방법을 사용하는지 여부를 제어한다. 여기서, sh_default_sb_coded_flag[0]의 값이 1이면, 현재 슬라이스의 제1 이미지 성분(예컨대 Y 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정하고; sh_default_sb_ coded_flag[1]의 값이 1이면, 현재 슬라이스의 제2 이미지 성분(예컨대 U 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정하며; sh_default_sb_coded_flag[2]의 값이 1이면, 현재 슬라이스의 제3 이미지 성분(예컨대 V 성분)에 대응되는 블록이 서브 블록 인코딩 필요 디폴트를 사용하는 것으로 결정한다.
요컨대, 비디오 중의 모든 이미지 성분의 경우, 통일한 식별자 정보를 사용하여 본 출원의 실시예의 방법을 사용하도록 제어하는 것 이외에, 상이한 식별자 정보를 각각 사용하여 각 이미지 성분이 본 출원의 실시예의 방법을 사용하도록 제어할 수 있고, 두 개의 식별자 정보를 사용하여 모든 이미지 성분이 본 출원의 실시예의 방법을 사용하도록 제어할 수도 있으며, 즉 하나 이상의 식별자 정보를 사용하여 본 출원의 실시예에 대한 상이한 이미지 성분의 사용을 제어할 수 있다. 여기서, 모든 이미지 성분은 예컨대 RGB 포맷 비디오의 R, G, B, 또는 YUV 포맷의 Y, U, V(Y, Cb, Cr) 등을 의미할 수 있다.
본 실시예는 인코더에 적용되는 인코딩 방법을 더 제공한다. 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하며; 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하고; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입한다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 즉 더욱 세분화적으로 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식을 각각 제어하는 것을 사용할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
본 출원의 또 하나의 실시예에서, 본 출원의 실시예는 비트 스트림을 제공하고, 상기 비트 스트림은 인코딩될 정보에 따라 비트 인코딩을 수행하여 생성된 것일 수 있으며, 인코딩될 정보는, 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보, 제3 신택스 요소 식별자 정보, 성분 식별자 정보, 마지막 하나의 계수 인에이블 식별자 정보 및 서브 블록 디폴트 인코딩 식별자 정보 중 적어도 하나를 포함할 수 있고; 여기서,
제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는지 여부를 지시하기 위한 것이고, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 지시하기 위한 것이며, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하는지 여부를 지시하기 위한 것이고, 성분 식별자 정보는 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하기 위한 것이며, 마지막 하나의 계수 인에이블 식별자 정보는 현재 블록이 마지막 하나의 계수 위치를 사용하는지 여부를 지시하기 위한 것이고, 서브 블록 디폴트 인코딩 식별자 정보는 현재 블록 내의 인코딩될 서브 블록에 대한 인코딩이 디폴트인지 여부를 지시하기 위한 것이며; 여기서, 현재 시퀀스는 현재 슬라이스를 포함하고, 현재 슬라이스는 현재 블록을 포함한다.
본 출원의 실시예에서, 여기서 인코딩 및 디코딩 시스템을 더 제공하고, 인코딩 및 디코딩 시스템은 인코더 및 디코더를 포함할 수 있다. 여기서, 인코더는 비트 스트림을 생성한 후, 상기 비트 스트림을 디코더에 전송하여, 디코더가 스트림을 파싱하는 것을 통해 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보, 제3 신택스 요소 식별자 정보, 성분 식별자 정보, 마지막 하나의 계수 인에이블 식별자 정보, 서브 블록 디폴트 인코딩 식별자 정보 및 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보 등과 같은 관련 디코딩 정보를 획득한다.
본 출원의 또 하나의 실시예에서, 전술한 실시예와 동일한 발명 구상에 기반하여, 도 12를 참조하면, 도 12는 본 출원의 실시예에서 제공한 인코더(120)의 구성 구조 예시도를 도시한다. 도 12에 도시된 바와 같이, 상기 인코더(120)는, 제1 결정 유닛(1201) 및 코딩 유닛(1202)을 포함할 수 있고; 여기서,
제1 결정 유닛(1201)은, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하도록 구성되고;
제1 결정 유닛(1201)은 또한, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되며;
코딩 유닛(1202)은, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 제1 신택스 요소 식별자 정보를 결정하고; 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하도록 구성되며; 여기서, 현재 시퀀스는 현재 슬라이스를 포함한다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 제2 신택스 요소 식별자 정보를 결정하고; 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 제3 신택스 요소 식별자 정보를 결정하며; 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 시퀀스가 표준 확장 버전을 사용하면, 제2 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 현재 시퀀스가 표준 확장 버전을 사용하지 않으면, 제2 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 코딩 유닛(1202)은 또한, 제2 신택스 요소 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 시퀀스가 범위 확장을 사용하면, 제3 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 현재 시퀀스가 범위 확장을 사용하지 않으면, 제3 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 코딩 유닛(1202)은, 제3 신택스 요소 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 현재 시퀀스가 범위 확장을 사용하는 것은, 현재 시퀀스가 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함한다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하면, 제1 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않으면, 제1 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 코딩 유닛(1202)은 또한, 제1 신택스 요소 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는, 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 성분 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 성분은, 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함하고; 여기서,
제1 이미지 성분은 휘도 성분이고, 제2 이미지 성분은 제1 색도 성분이며, 제2 이미지 성분은 제2 색도 성분이고; 또는,
제1 이미지 성분은 적색 성분이고, 제2 이미지 성분은 녹색 성분이며, 제3 이미지 성분은 청색 성분이다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하고; 또는, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하며; 또는, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제1 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제1 성분 식별자 정보의 값이 제1 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제2 성분 식별자 정보의 값이 제1 값인 것으로 결정하고; 현재 슬라이스 중의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제3 성분 식별자 정보의 값이 제1 값인 것으로 결정도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제1 결정 유닛(1201)은 또한, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제4 성분 식별자 정보의 값이 제1 값인 것으로 결정하고; 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제5 성분 식별자 정보의 값이 제1 값인 것으로 결정하며; 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 제6 성분 식별자 정보의 값이 제1 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 마지막 하나의 비제로 계수의 위치는 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표를 포함하고, 초기 수평 좌표 및 초기 수직 좌표는 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리이며;
상응하게, 제1 결정 유닛(1201)은 또한, 성분 식별자 정보의 값이 제1 값이면, 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 계산하여, 마지막 하나의 비제로 계수의 좌표 정보를 결정하고; 또는, 성분 식별자 정보의 값이 제2 값이면, 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 마지막 하나의 비제로 계수의 좌표 정보를 직접 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 블록의 너비 및 높이를 결정하고; 현재 블록의 너비와 마지막 하나의 비제로 계수의 초기 수평 좌표에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수평 좌표를 획득하며; 현재 블록의 높이와 마지막 하나의 비제로 계수의 초기 수직 좌표에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수직 좌표를 획득하고; 마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 성분 식별자 정보의 값이 제1 값이면, 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하고; 또는, 성분 식별자 정보의 값이 제2 값이면, 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 마지막 하나의 비제로 계수의 좌표 정보에 따라, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하도록 구성되고;
코딩 유닛(1202)은 또한, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하도록 구성되고;
코딩 유닛(1202)은 또한, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 마지막 하나의 계수 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보 및 마지막 하나의 계수 인에이블 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 블록이 마지막 하나의 계수 위치를 사용하면, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 현재 블록이 마지막 하나의 계수 위치를 사용하지 않으면, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 마지막 하나의 계수 위치는 현재 블록 중 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는, 마지막 하나의 계수 위치는 현재 블록이 기설정된 스캔 순서에 따라 모든 가능하게 0이 아닌 계수를 스캔하는 것을 실행한 마지막 위치이다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하고; 변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하며; 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 마지막 하나의 계수 위치를 결정하도록 구성된다.
일부 실시예에서, 기설정된 조작은, 강제 제로 아웃(zero-out) 조작을 적어도 포함한다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정할 경우, 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하지 않도록 지시할 경우, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하고; 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하도록 구성되며;
코딩 유닛(1202)은 또한, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 현재 블록 내의 인코딩될 서브 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하도록 구성되고;
코딩 유닛(1202)은 또한, 서브 블록 디폴트 인코딩 식별자 정보가 인코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 인코딩될 서브 블록 내의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보 및 서브 블록 디폴트 인코딩 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 서브 블록 디폴트 인코딩 식별자 정보가 인코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시할 경우, 인코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하도록 구성된고;
코딩 유닛(1202)은 또한, 서브 블록 인코딩 식별자 정보를 비트 스트림에 기입하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 인코딩될 서브 블록에 대한 인코딩이 디폴트이면, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 인코딩될 서브 블록에 대한 인코딩이 비-디폴트이면, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 결정 유닛(1201)은 또한, 서브 블록 내를 인코딩해야 하면, 서브 블록 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하고; 또는, 서브 블록 내의 모든 계수가 모두 0이면, 서브 블록 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 값은 1이고, 제2 값은 0이다.
이해할 수 있는 것은, 본 출원의 실시예에서, “유닛”부분 회로, 부분 프로세서, 부분 프로그램 또는 소프트웨어 등일 수 있으며, 물론 모듈일 수도 있고, 또한 비모듈화일 수도 있다. 또한 본 실시예에서의 각 구성 부분은 하나의 처리 유닛에 집적될 수 있고, 각 유닛이 독립적인 물리적 존재일 수도 있으며, 두 개 또는 두 개 이상의 유닛이 하나의 유닛에 집적될 수도 있다. 상기 집적된 유닛은 하드웨어의 형태를 사용하여 구현될 수 있고, 소프트웨어 기능 모듈의 형태를 사용하여 구현될 수도 있다.
상기 집적된 유닛이 독립된 제품으로서 판매되거나 사용되는 것이 아닌 소프트웨어 기능 모듈의 형태로 구현될 경우, 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 이러한 이해에 기반하여, 본 실시예의 기술 방안은 실질적으로 또는 종래 기술에 기여하는 부분이나 상기 기술 방안의 전부 또는 일부는 소프트웨어 제품의 형태로 반영될 수 있으며, 상기 컴퓨터 소프트웨어 제품은 하나의 저장 매체에 저장되며, 하나의 컴퓨터 기기(개인용 컴퓨터, 서버, 또는 네트워크 기기 등) 또는 프로세서(processor)로 하여금 본 실시예에서 설명한 방법의 전부 또는 일부 단계를 실행하도록 하기 위한 복수 개의 명령어를 포함한다. 전술한 저장 매체는, U 디스크, 모바일 하드 디스크, 판독 전용 메모리(ReadOnly Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크 등 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
따라서, 본 출원의 실시예는 인코더(120)에 적용되는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되어 있으며, 상기 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 경우 전술한 실시예 중 어느 하나의 방법을 구현한다.
상기 인코더(120)의 구성 및 컴퓨터 저장 매체에 기반하여, 도 13을 참조하면, 도 13은 본 출원의 실시예에서 제공한 인코더(120)의 구체적인 하드웨어 구조 예시도를 도시한다. 도 13에 도시된 바와 같이, 제1 통신 인터페이스(1301), 제1 메모리(1302) 및 제1 프로세서(1303)를 포함할 수 있고; 각 컴포넌트는 제1 버스 시스템(1304)을 통해 함께 결합된다. 이해할 수 있는 것은, 제1 버스 시스템(1304)은 이러한 컴포넌트 사이의 연결 통신을 구현하기 위한 것이다. 제1 버스 시스템(1304)은 데이터 버스를 포함하는 것 이외에, 전원 버스, 제어 버스 및 상태 신호 버스를 더 포함한다. 그러나, 설명의 명확성을 위해, 도 13에서 다양한 버스를 모두 제1 버스 시스템(1304)으로 표기한다. 여기서,
제1 통신 인터페이스(1301)는, 다른 외부 네트워크 요소 사이에서 정보를 송수신하는 과정에서, 신호를 수신 및 송신하기 위한 것이고;
제1 메모리(1302)는, 제1 프로세서(1303)에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이며;
제1 프로세서(1303)는, 상기 컴퓨터 프로그램을 작동할 경우,
현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하며;
성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하고;
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하는 것을 실행하기 위한 것이다.
이해할 수 있는 것은, 본 출원의 실시예에서의 제1 메모리(1302)는 휘발성 메모리 또는 비휘발성 메모리일 수 있고, 또는 휘발성 메모리 및 비휘발성 메모리를 모두 포함할 수 있다. 여기서, 비휘발성 메모리는 판독 전용 메모리(Read-Only Memory, ROM), 프로그래머블 판독 전용 메모리(Programmable ROM, PROM), 소거 가능한 프로그래머블 판독 전용 메모리(Erasable PROM, EPROM), 전기적 소거 가능한 프로그래머블 판독 전용 메모리(Electrically EPROM, EEPROM) 또는 플래시 메모리일 수 있다. 휘발성 메모리는 외부 캐시 역할을 하는 랜덤 액세스 메모리(Random Access Memory, RAM)일 수 있다. 한정적이 아닌 예시적인 설명을 통해, 정적 랜덤 액세스 메모리(Static RAM, SRAM), 동적 랜덤 액세스 메모리(Dynamic RAM, DRAM), 동기식 동적 랜덤 액세스 메모리(Synchronous DRAM, SDRAM), 더블 데이터 레이트 동기식 동적 랜덤 액세스 메모리(Double Data Rate SDRAM, DDRSDRAM), 증강형 동기식 동적 랜덤 액세스 메모리(Enhanced SDRAM, ESDRAM), 동기식 연결 동적 랜덤 액세스 메모리(Synchlink DRAM, SLDRAM) 및 직접 메모리 버스 랜덤 액세스 메모리(Direct Rambus RAM, DRRAM)와 같은 많은 형태의 RAM이 사용될 수 있다. 본 출원에서 설명된 시스템 및 방법의 제1 메모리(1302)는 이러한 메모리 및 임의의 다른 적합한 타입의 메모리를 포함하지만 이에 한정되는 것은 아니다.
제1 프로세서(1303)는 신호의 처리 능력을 구비한 집적 회로 칩일 수 있다. 구현 과정에서, 상기 방법의 각 단계는 제1 프로세서(1303)에서의 하드웨어의 집적 논리 회로 또는 소프트웨어 형태의 명령어를 통해 완료될 수 있다. 상기 제1 프로세서(1303)는 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP), 전용 집적 회로(Application Specific Integrated Circuit, ASIC), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA) 또는 다른 프로그래머블 논리 소자, 개별 게이트 또는 트랜지스터 논리 소자, 개별 하드웨어 컴포넌트일 수 있다. 본 출원의 실시예에서 개시된 각 방법, 단계 및 논리 블록도를 구현하거나 실행할 수 있다. 범용 프로세서는 마이크로 프로세서일 수 있고 또는 상기 프로세서는 임의의 일반적인 프로세서 등일 수도 있다. 본 출원의 실시예를 결합하여 개시된 방법의 단계는, 하드웨어 디코딩 프로세서로 직접 반영되어 실행 및 완료될 수 있거나, 디코딩 프로세서에서의 하드웨어 및 소프트웨어 모듈의 조합에 의해 실행 및 완료될 수 있다. 소프트웨어 모듈은 랜덤 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래머블 판독 전용 메모리 또는 전기적 소거 가능한 프로그래머블 메모리, 레지스터 등 본 분야에서 널리 알려진 저장 매체에 위치할 수 있다. 상기 저장 매체는 제1 메모리(1302)에 위치하고, 제1 프로세서(1303)는 제1 메모리(1302) 중의 정보를 판독하고,하드웨어와 결합하여 상기 방법의 단계를 완료한다.
이해할 수 있는 것은, 본 출원에서 설명된 이러한 실시예는 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로 코드 또는 이들의 조합으로 구현될 수 있다. 하드웨에 구현의 경우, 처리 유닛은 하나 또는 복수 개의 전용 집적 회로(Application Specific Integrated Circuits, ASIC), 디지털 신호 프로세서(Digital Signal Processing, DSP), 디지털 신호 처리 기기(DSP Device, DSPD), 프로그래머블 로직 기기(Programmable Logic Device, PLD), 필드 프로그래머블 게이트 어레이(Field-Programmable Gate Array, FPGA), 범용 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서, 본 출원의 상기 기능을 실행하기 위한 다른 전자 유닛 또는 이들의 조합에서 구현될 수 있다. 소프트웨어 구현의 경우, 본 출원에서 설명된 기능을 실행하는 모듈(예컨대 과정, 함수 등)을 통해 본 출원에서 설명된 기술을 구현할 수 있다. 소프트웨어 코드는 메모리에 저장되고 프로세서를 통해 실행될 수 있다. 메모리는 프로세서 또는 프로세서 외부에서 구현될 수 있다.
선택적으로, 다른 하나의 실시예로서, 제1 프로세서(1303)는 또한 상기 컴퓨터 프로그램을 작동할 경우, 전술한 실시예 중 어느 하나의 방법을 실행하도록 구성된다.
본 실시예는 인코더를 제공하고, 상기 인코더는 제1 결정 유닛 및 코딩 유닛을 포함할 수 있다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 또한 더욱 세분화적으로 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식를 각각 제어하는 것을 이용할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
본 출원의 또 하나의 실시예에서, 전술한 실시예와 동일한 발명 구상에 기반하여, 도 14를 참조하면, 도 14는 본 출원의 실시예에서 제공한 디코더(140)의 구성 구조 예시도를 도시한다. 도 14에 도시된 바와 같이, 상기 디코더(140)는, 파싱 유닛(1401) 및 제2 결정 유닛(1402)을 포함할 수 있으며; 여기서,
파싱 유닛(1401)은, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되고;
제2 결정 유닛(1402)은, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하도록 구성되며;
파싱 유닛(1401)은 또한, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하도록 구성되고;
제2 결정 유닛(1402)은 또한, 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하도록 구성되며; 여기서, 현재 시퀀스는 현재 슬라이스를 포함한다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하고; 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하며; 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 제2 신택스 요소 식별자 정보의 값이 제1 값이면, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하는 것으로 결정하고; 또는, 제2 신택스 요소 식별자 정보의 값이 제2 값이면, 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하지 않도록 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 제3 신택스 요소 식별자 정보의 값이 제1 값이면, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시하는 것으로 결정하고; 또는, 제3 신택스 요소 식별자 정보의 값이 제2 값이면, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하지 않도록 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 현재 시퀀스가 범위 확장을 사용하는 것은, 현재 시퀀스가 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함한다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 제1 신택스 요소 식별자 정보의 값이 제1 값이면, 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정하고; 또는, 제1 신택스 요소 식별자 정보의 값이 제2 값이면, 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않도록 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 성분 식별자 정보의 값이 제1 값이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정하고; 또는, 성분 식별자 정보의 값이 제2 값이면, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 않는 것으로 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보에 따라 현재 블록의 마지막 하나의 비제로 계수의 위치를 직접 결정하도록 구성되고;
파싱 유닛(1401)은 또한, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하도록 구성된다.
일부 실시예에서, 성분은 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중 적어도 하나를 포함하고; 여기서,
제1 이미지 성분은 휘도 성분이고, 제2 이미지 성분은 제1 색도 성분이며, 제2 이미지 성분은 제2 색도 성분이고; 또는,
제1 이미지 성분은 적색 성분이고, 제2 이미지 성분은 녹색 성분이며, 제3 이미지 성분은 청색 성분이다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하고; 또는, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하며; 또는, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 현재 슬라이스의 제1 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제2 결정 유닛(1402)은 또한, 제1 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제2 결정 유닛(1402)은 또한, 제2 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하고; 제3 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하도록 구성되고;
상응하게, 제2 결정 유닛(1402)은 또한, 제4 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하고; 제5 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하며; 제6 성분 식별자 정보의 값이 제1 값이면, 현재 슬라이스의 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하도록 구성되고;
제2 결정 유닛(1402)은 또한, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보 및 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 수평 좌표를 결정하고; 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 수직 좌표를 결정하고; 마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하도록 구성되고;
상응하게, 제2 결정 유닛(1402)은 또한, 현재 블록의 너비 및 높이를 결정하고; 현재 블록의 너비 및 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수평 좌표를 획득하며; 현재 블록의 높이 및 마지막 하나의 비제로 계수의 위치와 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수직 거리에 따라 감법 계산을 수행하여, 마지막 하나의 비제로 계수의 수직 좌표를 획득하고; 마지막 하나의 비제로 계수의 수평 좌표 및 마지막 하나의 비제로 계수의 수직 좌표에 따라, 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보가 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하고; 마지막 하나의 비제로 계수의 위치와 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리에 따라, 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하고; 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 마지막 하나의 계수 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값이면, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시하는 것으로 결정하고; 또는, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값이면, 마지막 하나의 계수 인에이블 식별자 정보가 현재 블록이 마지막 하나의 계수 위치를 사용하지 않도록 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값일 경우, 비트 스트림을 파싱하여, 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하도록 구성되고;
제2 결정 유닛(1402)은 또한, 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하도록 구성되며;
파싱 유닛(1401)은 또한, 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하도록 구성된다.
일부 실시예에서, 마지막 하나의 계수 위치는 현재 블록 중 모든 가능하게 0이 아닌 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는, 마지막 하나의 계수 위치는 현재 블록이 기설정된 스캔 순서에 따라 모든 가능하게 0이 아닌 계수를 스캔하는 것을 실행한 마지막 위치이다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하고; 변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하며; 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 마지막 하나의 계수 위치를 결정하도록 구성된다.
일부 실시예에서, 기설정된 조작은, 강제 제로 아웃(zero-out) 조작을 적어도 포함한다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 마지막 하나의 비제로 계수의 위치를 마지막 하나의 계수 위치에 설정할 경우, 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 마지막 하나의 비제로 계수의 위치를 결정하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 비트 스트림을 파싱하여, 현재 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하고; 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 디코딩될 서브 블록 내의 모든 계수를 디코딩하도록 구성된다.
일부 실시예에서, 파싱 유닛(1401)은 또한, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시할 경우, 비트 스트림을 파싱하여, 디코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하고; 서브 블록 인코딩 식별자 정보의 값이 제1 값일 경우, 디코딩될 서브 블록 내의 모든 계수를 디코딩하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값이면, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시하는 것으로 결정하고; 또는, 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값이면, 서브 블록 디폴트 인코딩 식별자 정보가 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시하는 것으로 결정하도록 구성된다.
일부 실시예에서, 제2 결정 유닛(1402)은 또한, 서브 블록 인코딩 식별자 정보의 값이 제1 값이면, 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 것으로 결정하고; 또는, 서브 블록 인코딩 식별자 정보의 값이 제2 값이면, 디코딩될 서브 블록 내의 모든 계수가 모두 0인 것으로 결정하도록 구성된다.
일부 실시예에서, 제1 값은 1이고, 제2 값은 0이다.
이해할 수 있는 것은, 본 실시예에서, “유닛”은 부분 회로, 부분 프로세서, 부분 프로그램 또는 소프트웨어 등일 수 있으며, 물론 모듈일 수도 있고, 비모듈화일 수도 있다. 또한 본 실시예에서의 각 구성 부분은 하나의 처리 유닛에 집적될 수 있고, 각 유닛이 독립적인 물리적 존재일 수도 있으며, 두 개 또는 두 개 이상의 유닛이 하나의 유닛에 집적될 수도 있다. 상기 집적된 유닛은 하드웨어의 형태를 사용하여 구현될 수 있고, 소프트웨어 기능 모듈의 형태를 사용하여 구현될 수도 있다.
상기 집적된 유닛이 독립된 제품으로서 판매되거나 사용되는 것이 아닌 소프트웨어 기능 모듈의 형태로 구현될 경우, 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 이러한 이해에 기반하여, 본 실시예는 디코더(140)에 적용되는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되어 있으며, 상기 컴퓨터 프로그램이 제2 프로세서에 의해 실행될 경우 전술한 실시예 중 어느 하나의 방법을 구현한다.
상기 디코더(140)의 구성 및 컴퓨터 저장 매체에 기반하여, 도 15를 참조하면, 도 15는 본 출원의 실시예에서 제공한 디코더(140)의 구체적인 하드웨어 구조 예시도를 도시한다. 도 15에 도시된 바와 같이, 제2 통신 인터페이스(1501), 제2 메모리(1502) 및 제2 프로세서(1503)를 포함할 수 있으며; 각 컴포넌트는 제2 버스 시스템(1504)을 통해 함께 결합된다. 이해할 수 있는 것은, 제2 버스 시스템(1504)은 이러한 컴포넌트 사이의 연결 통신을 구현하기 위한 것이다. 제2 버스 시스템(1504)은 데이터 버스를 포함하는 것 이외에, 전원 버스, 제어 버스 및 상태 신호 버스를 더 포함한다. 그러나, 설명의 명확성을 위해, 도 15에서 다양한 버스를 모두 제2 버스 시스템(1504)으로 표기한다. 여기서,
제2 통신 인터페이스(1501)는, 다른 외부 네트워크 요소 사이에서 정보를 송수신하는 과정에서, 신호를 수신 및 송신하기 위한 것이고;
제2 메모리(1502)는, 제2 프로세서(1503)에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이며;
제2 프로세서(1503)는, 상기 컴퓨터 프로그램을 작동할 경우,
비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하며;
성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하고;
기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정하는 것을 실행하기 위한 것이다.
선택적으로, 다른 하나의 하나의 실시예로서, 제2 프로세서(1503)는 또한 상기 컴퓨터 프로그램을 작동할 경우, 전술한 실시예 중 어느 하나의 방법을 실행하도록 구성된다.
이해할 수 있는 것은, 제2 메모리(1502)와 제1 메모리(1302)의 하드웨어 기능이 유사하고, 제2 프로세서(1503)와 제1 프로세서(1303)의 하드웨어 기능이 유사하며; 여기서 더이상 반복하여 설명하지 않는다.
본 실시예는 디코더를 제공하고, 상기 디코더는 파싱 유닛 및 제2 결정 유닛을 포함할 수 있다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 또한 더욱 세분화적으로 각 이미지 성분에 대해 마지막 하나의 비제로 계수의 도출 방식을 각각 제어하는 것을 사용할 수 있으며, 즉 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.
설명해야 할 것은, 본 출원에서, 용어 “포함”, “함유” 또는 이의 임의의 다른 변형은 비배타적인 포함을 함유하도록 의도됨으로써, 일련의 요소를 포함하는 과정, 방법, 물품 또는 장치로 하여금 이러한 요소를 포함하도록 할 뿐만 아니라, 명시적으로 열거되지 않은 다른 요소를 포함하도록 할 수도 있으며, 또는 이러한 과정, 방법, 물품, 또는 장치에 고유한 요소를 포함하도록 한다. 더욱 많은 한정이 없는 경우, 어구 “하나의……을 포함”에 의해 정의된 요소는, 상기 요소를 포함하는 과정, 방법, 물품 또는 장치에 다른 동일한 요소가 존재하는 것을 배제하지 않는다.
상기 본 출원의 실시예 번호는 다만 설명을 위한 것일 뿐, 실시예의 우열을 나타내는 것이 아니다.
본 출원에서 제공한 몇 개의 방법 실시예에서 언급된 방법은, 충돌되지 않는 경우 임의로 조합되어, 새로운 방법 실시예를 획득할 수 있다.
본 출원에서 제공한 몇 개의 제품 실시예에서 언급된 특징은, 충돌되지 않는 경우 임의로 조합되어, 새로운 제품 실시예를 획득할 수 있다.
본 출원에서 제공한 몇 개의 방법 또는 기기 실시예에서 언급된 특징은, 충돌되지 않는 경우 임의로 조합되어, 새로운 방법 실시예 또는 기기 실시예를 획득할 수 있다.
위에서의 설명은, 다만 본 출원의 구체적인 실시 형태일 뿐이고, 본 출원의 보호 범위는 이에 한정되지 않으며, 본 기술 분야의 통상의 기술자라면, 본 출원에서 개시된 기술적 범위 내에서, 변화 또는 교체를 용이하게 생각해낼 수 있으며, 이들은 모두 본 출원의 보호 범위 내에 속해야 한다. 따라서, 본 출원의 보호 범위는 청구범위의 보호 범위를 기준으로 해야 한다.
[산업상 이용 가능성]
본 출원의 실시예에서, 인코더에서, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하며; 성분 식별자 정보 및 마지막 하나의 비제로 계수의 위치에 따라, 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하고; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 성분 식별자 정보 및 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입한다. 디코더에서, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하며; 성분 식별자 정보가 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하고; 기설정된 스캔 순서에 따라 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 현재 블록의 계수를 결정한다. 이로써, 고 비트 폭, 고 비트 레이트, 고 품질 또는 무손실의 비디오 인코딩 및 디코딩 시나리오에서, 비제로 계수의 분포 규칙에 따라 합리적인 마지막 하나의 비제로 계수의 도출 방식을 설정하여, 비트 스트림 중 인코딩으로 인해 초래된 오버헤드를 감소시킬 수 있고, 압축 효율을 향상시킬 수 있으며; 또한, 각 이미지 성분의 비제로 계수 분포 규칙이 상이하므로, 성분 식별자 정보를 이용하여 각 이미지 성분이 마지막 하나의 비제로 계수 위치 반전 기술을 사용하는지 여부를 각각 제어할 수 있음으로써, 압축 효율을 추가로 향상시킬 수 있다.

Claims (69)

  1. 디코더에 적용되는 디코딩 방법으로서,
    비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 상기 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계;
    상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 상기 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하는 단계; 및
    기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  2. 제1항에 있어서,
    상기 디코딩 방법은,
    비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계; 및
    상기 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하도록 지시할 경우, 상기 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하는 단계 - 상기 현재 시퀀스는 상기 현재 슬라이스를 포함함 - 를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  3. 제2항에 있어서,
    상기 디코딩 방법은,
    비트 스트림을 파싱하여, 제2 신택스 요소 식별자 정보를 결정하는 단계;
    상기 제2 신택스 요소 식별자 정보는 상기 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 상기 비트 스트림을 파싱하여, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
    상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 비트 스트림을 파싱하여, 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계 를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  4. 제3항에 있어서,
    상기 디코딩 방법은,
    상기 제2 신택스 요소 식별자 정보의 값이 제1 값이면, 상기 제2 신택스 요소 식별자 정보는 상기 현재 시퀀스가 표준 확장 버전을 사용하도록 지시하는 것으로 결정하는 단계; 또는,
    상기 제2 신택스 요소 식별자 정보의 값이 제2 값이면, 상기 제2 신택스 요소 식별자 정보는 상기 현재 시퀀스가 표준 확장 버전을 사용하지 않도록 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  5. 제3항에 있어서,
    상기 디코딩 방법은,
    상기 제3 신택스 요소 식별자 정보의 값이 제1 값이면, 상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시하는 것으로 결정하는 단계; 또는,
    상기 제3 신택스 요소 식별자 정보의 값이 제2 값이면, 상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하지 않도록 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  6. 제5항에 있어서,
    상기 현재 시퀀스가 범위 확장을 사용하는 것은, 상기 현재 시퀀스가, 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함하는 것을 특징으로 하는 디코딩 방법.
  7. 제2항에 있어서,
    상기 디코딩 방법은,
    상기 제1 신택스 요소 식별자 정보의 값이 제1 값이면, 상기 제1 신택스 요소 식별자 정보는 상기 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하도록 지시하는 것으로 결정하는 단계; 또는,
    상기 제1 신택스 요소 식별자 정보의 값이 제2 값이면, 상기 제1 신택스 요소 식별자 정보는 상기 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않도록 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  8. 제1항에 있어서,
    상기 디코딩 방법은,
    상기 성분 식별자 정보의 값이 제1 값이면, 상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시하는 것으로 결정하는 단계; 또는,
    상기 성분 식별자 정보의 값이 제2 값이면, 상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  9. 제8항에 있어서,
    상기 디코딩 방법은,
    상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 상기 마지막 하나의 비제로 계수의 좌표 정보에 따라 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 직접 결정하는 단계; 및
    기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  10. 제1항에 있어서,
    상기 성분은, 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중 적어도 하나를 포함하고;
    상기 제1 이미지 성분은 휘도 성분이고, 상기 제2 이미지 성분은 제1 색도 성분이며, 상기 제2 이미지 성분은 제2 색도 성분이고; 또는,
    상기 제1 이미지 성분은 적색 성분이고, 상기 제2 이미지 성분은 녹색 성분이며, 상기 제3 이미지 성분은 청색 성분인 것을 특징으로 하는 디코딩 방법.
  11. 제9항에 있어서,
    상기 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 상기 디코딩 방법은,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하는 단계; 또는,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하는 단계; 또는,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  12. 제10항에 있어서,
    상기 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 비트 스트림을 파싱하여, 상기 현재 슬라이스의 제1 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 디코딩 방법은,
    상기 제1 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 제1 이미지 성분, 상기 제2 이미지 성분 및 상기 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  13. 제10항에 있어서,
    상기 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 비트 스트림을 파싱하여, 상기 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 디코딩 방법은,
    상기 제2 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 제1 이미지 성분, 상기 제2 이미지 성분 및 상기 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 및
    상기 제3 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  14. 제11항에 있어서,
    상기 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 비트 스트림을 파싱하여, 상기 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 디코딩 방법은,
    상기 제4 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계;
    상기 제5 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계; 및
    상기 제6 성분 식별자 정보의 값이 제1 값이면, 상기 현재 슬라이스의 상기 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  15. 제1항에 있어서,
    상기 비트 스트림을 파싱하여, 상기 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
    상기 비트 스트림을 파싱하여, 상기 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하는 단계;
    상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보 및 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보에 따라, 상기 마지막 하나의 비제로 계수의 수평 좌표를 결정하는 단계;
    상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 상기 마지막 하나의 비제로 계수의 수직 좌표를 결정하는 단계; 및
    상기 마지막 하나의 비제로 계수의 수평 좌표 및 상기 마지막 하나의 비제로 계수의 수직 좌표에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  16. 제1항에 있어서,
    상기 디코딩 방법은,
    상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보는 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계를 더 포함하고;
    상응하게, 상기 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하는 단계는,
    상기 현재 블록의 너비 및 높이를 결정하는 단계;
    상기 현재 블록의 너비와, 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리에 따라 감법 계산을 수행하여, 상기 마지막 하나의 비제로 계수의 수평 좌표를 획득하는 단계;
    상기 현재 블록의 높이와, 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수직 거리에 따라 감법 계산을 수행하여, 상기 마지막 하나의 비제로 계수의 수직 좌표를 획득하는 단계; 및
    상기 마지막 하나의 비제로 계수의 수평 좌표 및 상기 마지막 하나의 비제로 계수의 수직 좌표에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  17. 제1항에 있어서,
    상기 디코딩 방법은,
    상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않도록 지시할 경우, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보는 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계; 및
    상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  18. 제3항 내지 제6항 중 어느 한 항에 있어서,
    상기 제3 신택스 요소 식별자 정보가 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 디코딩 방법은,
    상기 비트 스트림을 파싱하여, 상기 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계; 및
    상기 마지막 하나의 계수 인에이블 식별자 정보가 상기 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 상기 마지막 하나의 계수 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  19. 제18항에 있어서,
    상기 디코딩 방법은,
    상기 마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값이면, 상기 마지막 하나의 계수 인에이블 식별자 정보가 상기 현재 블록이 상기 마지막 하나의 계수 위치를 사용하도록 지시하는 것으로 결정하는 단계; 또는,
    상기 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값이면, 상기 마지막 하나의 계수 인에이블 식별자 정보가 상기 현재 블록이 상기 마지막 하나의 계수 위치를 사용하지 않도록 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  20. 제19항에 있어서,
    상기 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값일 경우, 상기 디코딩 방법은,
    상기 비트 스트림을 파싱하여, 상기 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 획득하는 단계;
    상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계; 및
    기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  21. 제18항에 있어서,
    상기 마지막 하나의 계수 위치는 상기 현재 블록 중 모든 0이 아닌 것이 가능한 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는,
    상기 마지막 하나의 계수 위치는 상기 현재 블록이 기설정된 스캔 순서에 따라 모든 0이 아닌 것이 가능한 계수를 스캔하는 것을 실행한 마지막 위치인 것을 특징으로 하는 디코딩 방법.
  22. 제18항에 있어서,
    상기 디코딩 방법은,
    마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  23. 제18항에 있어서,
    상기 디코딩 방법은,
    상기 현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하는 단계;
    상기 변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하는 단계; 및
    상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 계수 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  24. 제23항에 있어서,
    상기 기설정된 조작은 강제 제로 아웃(zero-out) 조작을 적어도 포함하는 것을 특징으로 하는 디코딩 방법.
  25. 제23항에 있어서,
    상기 디코딩 방법은,
    마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정할 경우, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  26. 제3항 내지 제6항 중 어느 한 항에 있어서,
    상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 디코딩 방법은,
    상기 비트 스트림을 파싱하여, 상기 현재 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계; 및
    상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 상기 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  27. 제26항에 있어서,
    상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 현재 블록 내의 디코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시할 경우, 상기 디코딩 방법은,
    상기 비트 스트림을 파싱하여, 상기 디코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하는 단계; 및
    상기 서브 블록 인코딩 식별자 정보의 값이 제1 값일 경우, 상기 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  28. 제26항에 있어서,
    상기 디코딩 방법은,
    상기 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값이면, 상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 현재 블록 내의 상기 디코딩될 서브 블록에 대한 인코딩이 디폴트인 것을 지시하는 것으로 결정하는 단계; 또는,
    상기 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값이면, 상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 현재 블록 내의 상기 디코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시하는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  29. 제27항에 있어서,
    상기 디코딩 방법은,
    상기 서브 블록 인코딩 식별자 정보의 값이 제1 값이면, 상기 디코딩될 서브 블록 내의 모든 계수를 디코딩하는 것으로 결정하는 단계; 또는,
    상기 서브 블록 인코딩 식별자 정보의 값이 제2 값이면, 상기 디코딩될 서브 블록 내의 모든 계수가 모두 0인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
  30. 제4항, 제5항, 제7항, 제8항, 제19항, 제28항 및 제29항 중 어느 한 항에 있어서,
    상기 제1 값은 1이고, 상기 제2 값은 0인 것을 특징으로 하는 디코딩 방법.
  31. 인코더에 적용되는 인코딩 방법으로서,
    현재 슬라이스의 성분 식별자 정보를 결정하고, 상기 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하는 단계;
    상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 위치에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계; 및
    기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  32. 제31항에 있어서,
    상기 현재 슬라이스의 성분 식별자 정보를 결정하기 전, 상기 인코딩 방법은,
    제1 신택스 요소 식별자 정보를 결정하는 단계; 및
    상기 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하도록 지시할 경우, 상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계를 실행하는 단계 - 상기 현재 시퀀스는 상기 현재 슬라이스를 포함함 - 를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  33. 제32항에 있어서,
    상기 제1 신택스 요소 식별자 정보를 결정하기 전, 상기 인코딩 방법은,
    제2 신택스 요소 식별자 정보를 결정하는 단계;
    상기 제2 신택스 요소 식별자 정보는 상기 현재 시퀀스가 표준 확장 버전을 사용하도록 지시할 경우, 제3 신택스 요소 식별자 정보를 결정하는 단계; 및
    상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 제1 신택스 요소 식별자 정보를 결정하는 단계를 실행하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  34. 제33항에 있어서,
    상기 제2 신택스 요소 식별자 정보를 결정하는 단계는,
    상기 현재 시퀀스가 표준 확장 버전을 사용하면, 상기 제2 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 현재 시퀀스가 표준 확장 버전을 사용하지 않으면, 상기 제2 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  35. 제34항에 있어서,
    상기 인코딩 방법은,
    상기 제2 신택스 요소 식별자 정보를 상기 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  36. 제33항에 있어서,
    상기 제3 신택스 요소 식별자 정보를 결정하는 단계는,
    상기 현재 시퀀스가 범위 확장을 사용하면, 상기 제3 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 현재 시퀀스가 범위 확장을 사용하지 않으면, 상기 제3 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  37. 제36항에 있어서,
    상기 인코딩 방법은,
    상기 제3 신택스 요소 식별자 정보를 상기 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  38. 제36항에 있어서,
    상기 현재 시퀀스가 범위 확장을 사용하는 것은, 상기 현재 시퀀스가, 고 비트 폭, 고 품질, 고 비트 레이트, 고 프레임 레이트 및 무손실 압축 중 적어도 하나를 만족하는 것을 포함하는 것을 특징으로 하는 인코딩 방법.
  39. 제32항에 있어서,
    상기 제1 신택스 요소 식별자 정보를 결정하는 단계는,
    상기 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하면, 상기 제1 신택스 요소 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하지 않으면, 상기 제1 신택스 요소 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  40. 제39항에 있어서,
    상기 인코딩 방법은,
    상기 제1 신택스 요소 식별자 정보를 상기 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  41. 제31항에 있어서,
    상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는,
    상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하지 않으면, 상기 성분 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  42. 제31항에 있어서,
    상기 성분은, 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중 적어도 하나를 포함하고;
    상기 제1 이미지 성분은 휘도 성분이고, 상기 제2 이미지 성분은 제1 색도 성분이며, 상기 제2 이미지 성분은 제2 색도 성분이고; 또는,
    상기 제1 이미지 성분은 적색 성분이고, 상기 제2 이미지 성분은 녹색 성분이며, 상기 제3 이미지 성분은 청색 성분인 것을 특징으로 하는 인코딩 방법.
  43. 제42항에 있어서,
    상기 성분이 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분을 포함할 경우, 상기 인코딩 방법은,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분이 모두 하나의 성분 식별자 정보를 공용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 1 개인 것으로 결정하는 단계; 또는,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 하나의 성분 식별자 정보를 공용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 2 개인 것으로 결정하는 단계; 또는,
    상기 현재 슬라이스의 제1 이미지 성분, 제2 이미지 성분 및 제3 이미지 성분 중의 각각이 하나의 성분 식별자 정보를 사용하면, 상기 현재 슬라이스의 성분 식별자 정보의 개수가 3 개인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  44. 제42항에 있어서,
    상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 현재 슬라이스의 제1 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 인코딩 방법은,
    상기 현재 슬라이스의 상기 제1 이미지 성분, 상기 제2 이미지 성분 및 상기 제3 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제1 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  45. 제42항에 있어서,
    상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 현재 슬라이스의 제2 성분 식별자 정보 및 제3 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 인코딩 방법은,
    상기 현재 슬라이스의 상기 제1 이미지 성분, 상기 제2 이미지 성분 및 상기 제3 이미지 성분 중의 임의의 두 개의 이미지 성분이 모두 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제2 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 및
    상기 현재 슬라이스의 상기 임의의 두 개의 이미지 성분 이외의 나머지 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제3 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  46. 제42항에 있어서,
    상기 현재 슬라이스의 성분 식별자 정보를 결정하는 단계는, 상기 현재 슬라이스의 제4 성분 식별자 정보, 제5 성분 식별자 정보 및 제6 성분 식별자 정보를 결정하는 단계를 포함하고;
    상응하게, 상기 인코딩 방법은,
    상기 현재 슬라이스의 상기 제1 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제4 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계;
    상기 현재 슬라이스의 상기 제2 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제5 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 및
    상기 현재 슬라이스의 상기 제3 이미지 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하면, 상기 제6 성분 식별자 정보의 값이 제1 값인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  47. 제41항에 있어서,
    상기 마지막 하나의 비제로 계수의 위치는 상기 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표를 포함하고, 상기 초기 수평 좌표 및 상기 초기 수직 좌표는 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리이며;
    상응하게, 상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 위치에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
    상기 성분 식별자 정보의 값이 제1 값이면, 상기 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 계산하여, 상기 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계; 또는,
    상기 성분 식별자 정보의 값이 제2 값이면, 상기 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 상기 마지막 하나의 비제로 계수의 좌표 정보를 직접 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  48. 제47항에 있어서,
    상기 마지막 하나의 비제로 계수의 초기 수평 좌표 및 초기 수직 좌표에 따라 계산하여, 상기 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계는,
    상기 현재 블록의 너비 및 높이를 결정하는 단계;
    상기 현재 블록의 너비 및 상기 마지막 하나의 비제로 계수의 초기 수평 좌표에 따라 감법 계산을 수행하여, 상기 마지막 하나의 비제로 계수의 수평 좌표를 획득하는 단계;
    상기 현재 블록의 높이 및 상기 마지막 하나의 비제로 계수의 초기 수직 좌표에 따라 감법 계산을 수행하여, 상기 마지막 하나의 비제로 계수의 수직 좌표를 획득하는 단계; 및
    상기 마지막 하나의 비제로 계수의 수평 좌표 및 상기 마지막 하나의 비제로 계수의 수직 좌표에 따라, 상기 마지막 하나의 비제로 계수의 좌표 정보를 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  49. 제47항에 있어서,
    상기 인코딩 방법은,
    상기 성분 식별자 정보의 값이 제1 값이면, 상기 마지막 하나의 비제로 계수의 좌표 정보가 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 오른쪽 아래 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계; 또는,
    상기 성분 식별자 정보의 값이 제2 값이면, 상기 마지막 하나의 비제로 계수의 좌표 정보가 상기 마지막 하나의 비제로 계수의 위치와 상기 현재 블록의 왼쪽 위 모서리 위치 사이의 상대적인 수평 거리 및 수직 거리인 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  50. 제31항에 있어서,
    상기 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하는 단계는,
    상기 마지막 하나의 비제로 계수의 좌표 정보에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하는 단계; 및
    상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  51. 제33항 내지 제38항 중 어느 한 항에 있어서,
    상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 인코딩 방법은,
    상기 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계; 및
    상기 마지막 하나의 계수 인에이블 식별자 정보가 상기 현재 블록이 마지막 하나의 계수 위치를 사용하도록 지시할 경우, 기설정된 스캔 순서에 따라 상기 마지막 하나의 계수 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보 및 상기 마지막 하나의 계수 인에이블 식별자 정보를 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  52. 제51항에 있어서,
    상기 현재 블록의 마지막 하나의 계수 인에이블 식별자 정보를 결정하는 단계는,
    상기 현재 블록이 상기 마지막 하나의 계수 위치를 사용하면, 상기 마지막 하나의 계수 인에이블 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 현재 블록이 상기 마지막 하나의 계수 위치를 사용하지 않으면, 상기 마지막 하나의 계수 인에이블 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  53. 제51항에 있어서,
    상기 마지막 하나의 계수 위치는 상기 현재 블록 중 모든 0이 아닌 것인 가능한 계수로 구성된 매트릭스의 오른쪽 아래 모서리 위치이고; 또는,
    상기 마지막 하나의 계수 위치는 상기 현재 블록이 기설정된 스캔 순서에 따라 모든 0이 아닌 것인 가능한 계수를 스캔하는 것을 실행한 마지막 위치인 것을 특징으로 하는 인코딩 방법.
  54. 제51항에 있어서,
    상기 인코딩 방법은,
    마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  55. 제51항에 있어서,
    상기 인코딩 방법은,
    상기 현재 블록에 대해 기설정된 조작을 수행한 후 획득된 변환 블록의 너비 및 높이를 결정하는 단계;
    상기 변환 블록의 너비 및 높이에 따라 좌표 계산을 수행하여, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보를 획득하는 단계; 및
    상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 계수 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  56. 제55항에 있어서,
    상기 기설정된 조작은, 강제 제로 아웃(zero-out) 조작을 적어도 포함하는 것을 특징으로 하는 인코딩 방법.
  57. 제55항에 있어서,
    상기 인코딩 방법은,
    마지막 하나의 비제로 계수의 위치를 상기 마지막 하나의 계수 위치에 설정할 경우, 상기 변환 블록의 오른쪽 아래 모서리 좌표 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  58. 제51항에 있어서,
    상기 마지막 하나의 계수 인에이블 식별자 정보가 상기 현재 블록이 상기 마지막 하나의 계수 위치를 사용하지 않도록 지시할 경우, 상기 인코딩 방법은,
    상기 현재 블록의 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 결정하는 단계;
    상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보에 따라, 상기 마지막 하나의 비제로 계수의 위치를 결정하는 단계; 및
    기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 상기 마지막 하나의 비제로 계수의 수평 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수직 좌표의 프리픽스 정보, 상기 마지막 하나의 비제로 계수의 수평 좌표의 서픽스 정보 및 상기 마지막 하나의 비제로 계수의 수직 좌표의 서픽스 정보를 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  59. 제31항 내지 제58항 중 어느 한 항에 있어서,
    상기 제3 신택스 요소 식별자 정보는 상기 현재 시퀀스가 범위 확장을 사용하도록 지시할 경우, 상기 인코딩 방법은,
    상기 현재 블록 내의 인코딩될 서브 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계; 및
    상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 인코딩될 서브 블록에 대한 인코딩이 디폴트인 것으로 지시할 경우, 상기 인코딩될 서브 블록 내의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보 및 상기 서브 블록 디폴트 인코딩 식별자 정보를 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  60. 제59항에 있어서,
    상기 인코딩 방법은,
    상기 서브 블록 디폴트 인코딩 식별자 정보가 상기 인코딩될 서브 블록에 대한 인코딩이 비-디폴트인 것으로 지시할 경우, 상기 인코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하고, 상기 서브 블록 인코딩 식별자 정보를 비트 스트림에 기입하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  61. 제59항에 있어서,
    상기 인코딩될 서브 블록의 서브 블록 디폴트 인코딩 식별자 정보를 결정하는 단계는,
    상기 인코딩될 서브 블록에 대한 인코딩이 디폴트이면, 상기 서브 블록 디폴트 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 인코딩될 서브 블록에 대한 인코딩이 비-디폴트이면, 상기 서브 블록 디폴트 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  62. 제60항에 있어서,
    상기 인코딩될 서브 블록의 서브 블록 인코딩 식별자 정보를 결정하는 단계는,
    상기 서브 블록 내를 인코딩해야 하면, 상기 서브 블록 인코딩 식별자 정보의 값이 제1 값인 것으로 결정하는 단계; 또는,
    상기 서브 블록 내의 모든 계수가 모두 0이면, 상기 서브 블록 인코딩 식별자 정보의 값이 제2 값인 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  63. 제34항, 제36항, 제39항, 제41항, 제52항, 제61항 및 제62항 중 어느 한 항에 있어서,
    상기 제1 값은 1이고, 상기 제2 값은 0인 것을 특징으로 하는 인코딩 방법.
  64. 비트 스트림으로서,
    상기 비트 스트림은 인코딩될 정보에 따라 비트 인코딩을 수행하여 생성된 것이고, 상기 인코딩될 정보는, 제1 신택스 요소 식별자 정보, 제2 신택스 요소 식별자 정보, 제3 신택스 요소 식별자 정보, 성분 식별자 정보, 마지막 하나의 계수 인에이블 식별자 정보 및 서브 블록 디폴트 인코딩 식별자 정보 중 적어도 하나를 포함하며;
    상기 제1 신택스 요소 식별자 정보는 현재 시퀀스가 마지막 하나의 비제로 계수 위치 반전을 사용하는 것을 허용하는지 여부를 지시하기 위한 것이고, 상기 제2 신택스 요소 식별자 정보는 현재 시퀀스가 표준 확장 버전을 사용하는지 여부를 지시하기 위한 것이며, 상기 제3 신택스 요소 식별자 정보는 현재 시퀀스가 범위 확장을 사용하는지 여부를 지시하기 위한 것이고, 상기 성분 식별자 정보는 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하는지 여부를 지시하기 위한 것이며, 상기 마지막 하나의 계수 인에이블 식별자 정보는 현재 블록이 마지막 하나의 계수 위치를 사용하는지 여부를 지시하기 위한 것이고, 상기 서브 블록 디폴트 인코딩 식별자 정보는 현재 블록 내의 인코딩될 서브 블록에 대한 인코딩이 디폴트인지 여부를 지시하기 위한 것이며; 상기 현재 시퀀스는 상기 현재 슬라이스를 포함하고, 상기 현재 슬라이스는 상기 현재 블록을 포함하는 것을 특징으로 하는 비트 스트림.
  65. 인코더로서,
    상기 인코더는 제1 결정 유닛 및 코딩 유닛을 포함하고;
    상기 제1 결정 유닛은, 현재 슬라이스의 성분 식별자 정보를 결정하고, 상기 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 위치를 결정하도록 구성되고;
    상기 제1 결정 유닛은 또한, 상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 위치에 따라, 상기 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되며;
    상기 코딩 유닛은, 기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 인코딩하고, 인코딩 후 획득된 비트 정보, 상기 성분 식별자 정보 및 상기 마지막 하나의 비제로 계수의 좌표 정보를 비트 스트림에 기입하도록 구성되는 것을 특징으로 하는 인코더.
  66. 인코더로서,
    상기 인코더는 제1 메모리 및 제1 프로세서를 포함하고;
    상기 제1 메모리는, 상기 제1 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이고;
    상기 제1 프로세서는, 상기 컴퓨터 프로그램을 작동할 경우, 제31항 내지 제63항 중 어느 한 항에 따른 인코딩 방법을 실행하기 위한 것임을 특징으로 하는 인코더.
  67. 디코더로서,
    상기 디코더는 파싱 유닛 및 제2 결정 유닛을 포함하고;
    상기 파싱 유닛은, 비트 스트림을 파싱하여, 현재 슬라이스의 성분 식별자 정보를 결정하고, 상기 현재 슬라이스의 성분에 대응되는 현재 블록의 마지막 하나의 비제로 계수의 좌표 정보를 결정하도록 구성되고;
    상기 제2 결정 유닛은, 상기 성분 식별자 정보가 상기 현재 슬라이스의 성분이 마지막 하나의 비제로 계수 위치 반전을 사용하도록 지시할 경우, 상기 마지막 하나의 비제로 계수의 좌표 정보를 계산하여, 상기 현재 블록의 마지막 하나의 비제로 계수의 위치를 획득하도록 구성도며;
    상기 파싱 유닛은 또한, 기설정된 스캔 순서에 따라 상기 마지막 하나의 비제로 계수의 위치 이전의 모든 계수를 디코딩하여, 상기 현재 블록의 계수를 결정하도록 구성된 것을 특징으로 하는 디코더.
  68. 디코더로서,
    상기 디코더는 제2 메모리 및 제2 프로세서를 포함하고;
    상기 제2 메모리는, 상기 제2 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하기 위한 것이고;
    상기 제2 프로세서는, 상기 컴퓨터 프로그램을 작동할 경우, 제1항 내지 제30항 중 어느 한 항에 따른 디코딩 방법을 실행하기 위한 것임을 특징으로 하는 디코더.
  69. 컴퓨터 저장 매체로서,
    상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램이 실행될 경우 제1항 내지 제30항 중 어느 한 항에 따른 디코딩 방법을 구현하거나, 제31항 내지 제63항 중 어느 한 항에 따른 인코딩 방법을 구현하는 것을 특징으로 하는 컴퓨터 저장 매체.
KR1020237040066A 2021-06-29 2021-06-29 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체 KR20240027581A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/103250 WO2023272517A1 (zh) 2021-06-29 2021-06-29 编解码方法、码流、编码器、解码器及计算机存储介质

Publications (1)

Publication Number Publication Date
KR20240027581A true KR20240027581A (ko) 2024-03-04

Family

ID=84689860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237040066A KR20240027581A (ko) 2021-06-29 2021-06-29 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체

Country Status (6)

Country Link
US (1) US20240089466A1 (ko)
KR (1) KR20240027581A (ko)
CN (1) CN117581540A (ko)
AU (1) AU2021454442A1 (ko)
TW (1) TW202301873A (ko)
WO (1) WO2023272517A1 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752592B (zh) * 2012-06-20 2015-02-11 深圳广晟信源技术有限公司 视频变换系数的熵编码方法
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
EP3222044A1 (en) * 2014-11-21 2017-09-27 VID SCALE, Inc. One-dimensional transform modes and coefficient scan order
EP3306930A4 (en) * 2015-09-10 2018-05-02 Samsung Electronics Co., Ltd. Encoding device, decoding device, and encoding and decoding method thereof
CN115462084A (zh) * 2020-02-27 2022-12-09 Lg电子株式会社 图像解码方法以及用于其的设备
CN112543338B (zh) * 2020-10-16 2022-03-04 腾讯科技(深圳)有限公司 视频解码方法、装置、计算机可读介质及电子设备
US11895310B2 (en) * 2021-07-02 2024-02-06 Sharp Kabushiki Kaisha Systems and methods for signaling operation range profile information in video coding

Also Published As

Publication number Publication date
TW202301873A (zh) 2023-01-01
CN117581540A (zh) 2024-02-20
AU2021454442A1 (en) 2023-12-21
WO2023272517A1 (zh) 2023-01-05
US20240089466A1 (en) 2024-03-14

Similar Documents

Publication Publication Date Title
CN112640448B (zh) 编码转换系数的熵编解码方法与装置
US10893273B2 (en) Data encoding and decoding
KR20220006059A (ko) 비디오 처리를 위한 이차 변환 행렬의 선택
US20160234494A1 (en) Restriction on palette block size in video coding
US11778235B2 (en) Signaling coding of transform-skipped blocks
CN113950828A (zh) 视频比特流中的简化二次变换的有条件信令
JP2023089145A (ja) 変換スキップ・モードのブロック寸法設定
CN117560489A (zh) 用于残差编解码的上下文建模
KR20240027581A (ko) 인코딩 및 디코딩 방법, 비트 스트림, 인코더, 디코더 및 컴퓨터 저장 매체
WO2022217442A1 (zh) 系数编解码方法、编码器、解码器以及计算机存储介质
US20240129512A1 (en) Encoding and decoding method, encoder, decoder, and storage medium
US20240056585A1 (en) Coding method, encoder, and decoder
JP2022548685A (ja) 画像データの符号化及び復号化
CN117652141A (zh) 视频编解码中的序列级和切片级语法表示
WO2022232061A1 (en) Bypass alignment in video coding
CN117203960A (zh) 视频编码中的旁路对齐