KR20220146469A - 결합된 픽셀/변환 기반 양자화에 의한 비디오 코딩을 위한 양자화 파라미터 제어 방법 - Google Patents

결합된 픽셀/변환 기반 양자화에 의한 비디오 코딩을 위한 양자화 파라미터 제어 방법 Download PDF

Info

Publication number
KR20220146469A
KR20220146469A KR1020227029350A KR20227029350A KR20220146469A KR 20220146469 A KR20220146469 A KR 20220146469A KR 1020227029350 A KR1020227029350 A KR 1020227029350A KR 20227029350 A KR20227029350 A KR 20227029350A KR 20220146469 A KR20220146469 A KR 20220146469A
Authority
KR
South Korea
Prior art keywords
chroma
dra
video data
scale
video
Prior art date
Application number
KR1020227029350A
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 KR20220146469A publication Critical patent/KR20220146469A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/98Adaptive-dynamic-range coding [ADRC]

Landscapes

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

Abstract

비디오 데이터를 처리하기 위한 예시적인 장치는, 비디오 데이터를 저장하도록 구성된 메모리 및 메모리에 결합된 하나 이상의 프로세서를 포함한다. 하나 이상의 프로세서는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하도록 그리고 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하도록 구성된다. 하나 이상의 프로세서는, 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록 그리고 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록 구성된다. 하나 이상의 프로세서는, 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록 그리고 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하도록 구성된다.

Description

결합된 픽셀/변환 기반 양자화에 의한 비디오 코딩을 위한 양자화 파라미터 제어 방법
본 출원은 2021년 3월 4일에 출원된 미국 출원 번호 17/192,335 및 2020년 3월 5일에 출원된 미국 가특허 출원 번호 62/985,776 에 대한 우선권을 주장하며, 이들 각각의 전체 내용은 참조로 포함된다. 2021년 3월 4일에 출원된 미국 출원 번호 17/192,335 는 2020년 3월 5일에 출원된 미국 가특허 출원 번호 62/985,776 의 이익을 주장한다.
본 개시물은 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 기능은 디지털 텔레비전, 디지털 직접 방송 시스템, 무선 방송 시스템, 퍼스널 디지털 어시스턴트 (PDAs), 랩톱 또는 데스크탑 컴퓨터, 태블릿 컴퓨터, 전자책 리더, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 장치, 비디오 게임 콘솔, 셀룰러 또는 위성 라디오 전화, 소위 "스마트 폰", 영상 원격회의 장치, 비디오 스트리밍 장치 등을 포함하여 넓은 범위의 장치에 통합될 수 있다. 디지털 비디오 장치는 MPEG-2, MPEG-4, MPEG-5 EVC (Essential Video Coding), ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (AVC), ITU-T H.265/고효율 비디오 코딩 (HEVC) 및 이러한 표준의 확장에 의해 정의된 표준에 설명된 것과 같은 비디오 코딩 기술을 구현한다. 비디오 장치는 이러한 비디오 코딩 기술을 구현함으로써 디지털 비디오 정보를 보다 효율적으로 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수도 있다.
비디오 코딩 기술은 비디오 시퀀스에 내재된 리던던시를 감소 또는 제거하기 위한 공간 (인트라-픽쳐) 예측 및/또는 시간 (인터-픽쳐) 예측을 포함한다. 블록-기반 비디오 코딩의 경우, 비디오 슬라이스 (예를 들어, 비디오 픽쳐 또는 비디오 픽쳐의 일부) 는 비디오 블록으로 분할될 수 있으며, 이는 코딩 트리 유시 (CTUs), 코딩 유닛 (CUs) 및/또는 코딩 노드로도 지칭될 수 있다. 픽쳐의 인트라-코딩된 (I) 슬라이스의 비디오 블록은 동일한 픽쳐의 주변 블록의 참조 샘플에 대한 공간 예측을 사용하여 인코딩된다. 픽쳐의 인터-코딩된 (P 또는 B) 슬라이스의 비디오 블록은 동일한 픽쳐의 주변 블록의 참조 샘플에 대한 공간 예측 또는 다른 참조 픽쳐의 참조 샘플에 대한 시간 예측을 사용할 수도 있다. 픽쳐는 프레임으로 지칭될 수 있고, 참조 픽쳐는 참조 프레임으로 지칭될 수 있다.
일반적으로, 본 개시물은 HDR (High Dynamic Range) 및 WCG (Wide Color Gamut) 표현을 갖는 비디오 신호의 코딩 분야와 관련된 기술을 설명한다. 보다 구체적으로, 본 개시물은 HDR 및 WCG 비디오 데이터의 보다 효율적인 압축을 가능하게 할 수도 있는 특정 색 공간의 비디오 데이터에 적용되는 작업 및 시그널링을 위한 기술을 설명한다. 기술들은 HDR 및 WCG 비디오 데이터를 코딩하는 데 사용되는 하이브리드-기반 비디오 코딩 시스템의 압축 효율성을 향상시킬 수 있다.
비디오 코딩에서, 비디오 데이터를 처리하기 위한 조화된 기술들을 갖는 것이 유리하다. 기술들이 조화되지 않을 때, 하나의 비디오 디코더는 비디오 인코더에 의해 의도된 것과 상이하게 그리고 다른 비디오 디코더와 상이하게 비디오 데이터를 처리할 수도 있다. 본 개시물의 기술은 조화된 픽셀/변환 도메인 양자화를 갖는 동적 범위 조정 (DRA) 의 보다 효율적인 구현을 위한 기술 및 제약을 포함하고, 상이한 비디오 디코더들에 걸친 비트 매칭을 용이하게 한다.
일 예에서, 비디오 데이터를 처리하는 방법은, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 단계; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 단계; 크로마 QP 의 상기 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 단계; 크로마 QP 의 상기 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 단계; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 단계; 및 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 단계를 포함한다.
다른 예에서, 장치는 비디오 데이터를 저장하도록 구성된 메모리 및 회로에 구현되고 상기 메모리에 통신가능하게 결합된 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하도록; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하도록; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록; 그리고 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하도록 구성된다.
다른 예에서, 비디오 데이터를 처리하기 위한 장치는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 수단; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 수단; 크로마 QP 의 상기 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 수단; 크로마 QP 의 상기 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 수단; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 수단; 및 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 수단을 포함한다.
다른 예에서, 컴퓨터-판독가능 저장 매체는, 실행될 때, 프로그램가능한 프로세서로 하여금, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하게 하고; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하게 하고; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하게 하고; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하게 하고; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하게 하고, 그리고 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하게 하는 명령으로 인코딩된다.
본 명세서에 사용된 바와 같이, 결정하는 것은 획득, 수신, 메모리로부터의 판독, 계산 등을 포함할 수 있다.
하나 이상의 예들의 세부사항은 첨부 도면 및 하기의 설명에 기재되어 있다. 다른 특징들, 목적들 및 이점들은 상세한 설명, 도면 및 청구범위로부터 명백할 것이다.
도 1 은 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3 은 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 4 는 HDTV (High Definition Television) 의 SDR (Standard Dynamic Range), UHDTV (Ultra-High Definition Television) 의 HDR (High Dynamic Range) 및 HVS (Human Visual System) 동적 범위에 의해 제공되는 동적 범위를 시각화한 개념도이다.
도 5 는 예시적인 색 영역을 나타내는 개념도이다.
도 6 은 예시적인 HDR/WCG (wide color gamut) 표현 변환을 예시하는 개념도이다.
도 7 은 예시적인 역 HDR/WCG 변환을 예시하는 개념도이다.
도 8 은 EOTFs (electro-optical transfer functions) 의 일 예를 나타내는 개념도이다.
도 9 는 지각 양자화기 (PQ) 전달 함수 (TF) 의 예시적인 시각화를 예시하는 개념도이다.
도 10 은 LCS (luma-driven chroma scaling) 함수의 일 예를 나타내는 개념도이다.
도 11 은 1 과 동일한 ChromaArrayType 에 대한 qPi 의 함수로서 QpC 의 사양을 설명하는 테이블을 예시하는 개념도이다.
도 12 는 0 과 동일한 chroma_qp_table_present_flag 에 대한 qPi(sps_iqt_flag = = 1), chromaQpTable[] 의 함수로서 QpC 의 사양을 설명하는 테이블을 예시하는 개념도이다.
도 13 은 DRA 유닛을 포함하는 비디오 인코더 및 비디오 디코더 시스템의 블록도이다.
도 14 는 본 개시물에 따른 예시적인 DRA 크로마 스케일 기술들을 예시하는 흐름도이다.
도 15 는 본 개시물에 따른 비디오 인코딩의 예를 예시하는 흐름도이다.
도 16 은 본 개시물에 따른 비디오 디코딩의 예를 예시하는 흐름도이다.
비디오 코딩에서, 비디오 데이터를 처리하기 위한 조화된 기술을 갖는 것이 유리하다. 기술들이 조화되지 않을 때, 하나의 비디오 디코더는 비디오 인코더에 의해 의도된 것과 상이하게 그리고 다른 비디오 디코더와는 상이하게 비디오 데이터를 처리할 수도 있다. 본 개시물의 기술은 조화된 픽셀/변환 도메인 양자화를 갖는 DRA 의 보다 효율적인 구현을 위한 기술 및 제약을 포함하고, 상이한 비디오 디코더에 걸친 비트 매칭을 용이하게 한다.
동적 범위 조정 (DRA) 이 가능한 일부 비디오 코덱에서, DRA 와 관련된 수학적 작업은 로그 및/또는 지수 연산을 포함할 수 있다. 이러한 작업은 구현하는 데 비용이 많이 들고 과도한 양의 처리 능력을 사용할 수 있다. 본 개시물의 기술은 로그 및/또는 지수 작업을 작업의 근사값으로 대체하여, 비용을 줄이고 처리 능력을 절약할 수 있다.
도 1 은 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (100) 을 예시하는 블록도이다. 본 개시물의 기술은 일반적으로 비디오 데이터를 코딩 (인코딩 및/또는 디코딩) 하는 것에 관한 것이다. 일반적으로, 비디오 데이터에는 비디오를 처리하기 위한 모든 데이터가 포함된다. 따라서, 비디오 데이터는 원시, 인코딩되지 않은 비디오, 인코딩된 비디오, 디코딩된 (예를 들어, 재구성된) 비디오, 및 비디오 메타데이터, 예컨대 시그널링 데이터를 포함할 수 있다.
도 1 에 도시된 바와 같이, 시스템 (100) 은, 이 예에서, 목적지 디바이스 (116) 에 의해 디코딩 및 디스플레이될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (102) 를 포함한다. 특히, 소스 디바이스 (102) 는 컴퓨터-판독가능 매체 (110) 를 통해 목적지 디바이스 (116) 에 비디오 데이터를 제공한다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 데스크탑 컴퓨터, 노트북 (즉, 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화 핸드셋, 예컨대 스마트폰, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치 등을 포함하는 임의의 광범위한 장치를 포함할 수 있다. 일부 경우에, 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 무선 통신을 위해 장착될 수 있고, 따라서 무선 통신 장치로서 지칭될 수 있다.
도 1 의 예에서, 소스 디바이스 (102) 는 비디오 소스 (104), 메모리 (106), 비디오 인코더 (200), 및 출력 인터페이스 (108) 를 포함한다. 목적지 디바이스 (116) 는 입력 인터페이스 (122), 비디오 디코더 (300), 메모리 (120), 및 디스플레이 장치 (118) 를 포함한다. 본 개시물에 따라, 소스 디바이스 (102) 의 비디오 인코더 (200) 및 목적지 디바이스 (116) 의 비디오 디코더 (300) 는 비디오 데이터에 적용된 작업들 및 시그널링을 위한 기술들을 적용하도록 구성될 수도 있다. 따라서, 소스 디바이스 (102) 는 비디오 인코딩 장치의 예를 나타내는 한편, 목적지 디바이스 (116) 는 비디오 디코딩 장치의 예를 나타낸다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 컴포넌트들 또는 배열체들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (102) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수 있다. 마찬가지로, 목적지 디바이스 (116) 는 통합 디스플레이 장치를 포함하기 보다는 외부 디스플레이 장치와 인터페이스할 수 있다.
도 1 에 도시된 바와 같은 시스템 (100) 은 하나의 예일 뿐이다. 일반적으로, 임의의 디지털 비디오 인코딩 및/또는 디코딩 장치는 비디오 데이터에 적용되는 시그널링 및 작업을 위한 기술을 수행할 수도 있다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 소스 디바이스 (102) 가 목적지 디바이스 (116) 로의 전송을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 장치들의 예일 뿐이다. 본 개시물은 데이터의 코딩 (인코딩 및/또는 디코딩) 을 수행하는 장치로서 "코딩" 장치로 지칭된다. 따라서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 코딩 장치들의 예, 특히 비디오 인코더 및 비디오 디코더를 각각 나타낸다. 일부 예들에서, 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 소스 디바이스 (102) 및 목적지 디바이스 (116) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 따라서, 시스템 (100) 은, 예를 들어, 비디오 스트리밍, 비디오 재생, 비디오 방송, 또는 비디오 전화 통신을 위해 소스 디바이스 (102) 와 목적지 디바이스 (116) 사이의 단방향 또는 양방향 비디오 전송을 지원할 수 있다.
일반적으로, 비디오 소스 (104) 는 비디오 데이터의 소스 (즉, 미가공의 인코딩되지 않은 비디오 데이터) 를 나타내고, 비디오 데이터의 순차적인 일련의 픽쳐들 ("프레임" 이라고도 함) 을 비디오 인코더 (200) 에 제공하며, 이는 픽쳐들에 대한 데이터를 인코딩한다. 소스 디바이스 (102) 의 비디오 소스 (104) 는 비디오 캡처 장치, 예컨대 비디오 카메라, 이전에 캡처된 원시 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 추가 대안으로서, 비디오 소스 (104) 는 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오의 조합으로서 컴퓨터 그래픽-기반 데이터를 생성할 수 있다. 각각의 경우에, 비디오 인코더 (200) 는 캡처된, 미리 캡처된 또는 컴퓨터-생성된 비디오 데이터를 인코딩한다. 비디오 인코더 (200) 는 수신된 순서 (때때로 "디스플레이 순서" 로 지칭됨) 로부터의 픽쳐들을 코딩을 위한 코딩 순서로 재배열할 수도 있다. 비디오 인코더 (200) 는 인코딩된 비디오 데이터를 포함하는 비트스트림을 생성할 수도 있다. 소스 디바이스 (102) 는 그 다음, 예를 들어 목적지 디바이스 (116) 의 입력 인터페이스 (122) 에 의한 수신 및/또는 검색을 위해 인코딩된 비디오 데이터를 출력 인터페이스 (108) 를 통해 컴퓨터-판독가능 매체 (110) 로 출력할 수 있다.
소스 디바이스 (102) 의 메모리 (106) 및 목적지 디바이스 (116) 의 메모리 (120) 는 범용 메모리를 나타낸다. 일부 예에서, 메모리 (106, 120) 는 원시 비디오 데이터, 예를 들어 비디오 소스 (104) 로부터의 원시 비디오 및 비디오 디코더 (300) 로부터의 원시, 디코딩된 비디오 데이터를 저장할 수도 있다. 부가적으로 또는 대안적으로, 메모리 (106, 120) 는 예를 들어 각각 비디오 인코더 (200) 및 비디오 디코더 (300) 에 의해 실행가능한 소프트웨어 명령을 저장할 수도 있다. 이 예에서 메모리 (106) 및 메모리 (120) 가 비디오 인코더 (200) 및 비디오 디코더 (300) 와 별도로 도시되어 있지만, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 기능적으로 유사하거나 동등한 목적을 위해 내부 메모리도 포함할 수 있음을 이해해야 한다. 또한, 메모리 (106, 120) 는 인코딩된 비디오 데이터, 예를 들어 비디오 인코더 (200) 로부터의 출력 및 비디오 디코더 (300) 로의 입력을 저장할 수도 있다. 일부 예들에서, 메모리 (106, 120) 의 부분들은 예를 들어, 원시, 디코딩된 그리고/또는 인코딩된 비디오 데이터를 저장하기 위해 하나 이상의 비디오 버퍼들로서 할당될 수도 있다.
컴퓨터-판독가능 매체 (110) 는 인코딩된 비디오 데이터를 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로 전송할 수 있는 임의의 유형의 매체 또는 장치를 나타낼 수 있다. 일 예에서, 컴퓨터-판독가능 매체 (110) 는 소스 디바이스 (102) 로 하여금 인코딩된 비디오 데이터를 예를 들어 무선 주파수 네트워크 또는 컴퓨터-기반 네트워크를 통해 실시간으로 목적지 디바이스 (116) 에 직접 전송하게 하는 통신 매체를 나타낸다. 출력 인터페이스 (108) 는 인코딩된 비디오 데이터를 포함하는 전송 신호를 복조할 수 있고, 입력 인터페이스 (122) 는 무선 통신 프로토콜과 같은 통신 표준에 따라, 수신된 전송 신호를 복조할 수 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 근거리 네트워크, 광역 네트워크 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로의 통신을 용이하게 하는 데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 예들에서, 소스 디바이스 (102) 는 인코딩된 데이터를 출력 인터페이스 (108) 로부터 저장 장치 (112) 로 출력할 수 있다. 유사하게, 목적지 디바이스 (116) 는 입력 인터페이스 (122) 를 통해 저장 장치 (112) 로부터 인코딩된 데이터에 액세스할 수 있다. 저장 장치 (112) 는 하드 드라이브, 블루레이 디스크, DVDs, CD-ROMs, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 기타 적절한 디지털 저장 매체와 같은 분산되거나 로컬로 액세스되는 데이터 저장 매체의 임의의 것을 포함할 수도 있다.
일부 예들에서, 소스 디바이스 (102) 는 인코딩된 비디오 데이터를 소스 디바이스 (102) 에 의해 생성된 인코딩된 비디오 데이터를 저장할 수 있는 파일 서버 (114) 또는 다른 중간 저장 장치로 출력할 수 있다. 목적지 디바이스 (116) 는 스트리밍 또는 다운로드를 통해 파일 서버 (114) 로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버 (114) 는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (116) 에 전송할 수 있는 임의의 유형의 서버 장치일 수 있다. 파일 서버 (114) 는 웹 서버 (예를 들어, 웹사이트용), 파일 전송 프로토콜 (FTP) 서버, 콘텐츠 전송 네트워크 장치 또는 NAS (Network Attached Storage) 장치이다. 목적지 디바이스 (116) 는 인터넷 연결을 포함하는 임의의 표준 데이터 연결을 통해 파일 서버 (114) 로부터 인코딩된 비디오 데이터에 액세스할 수 있다. 여기에는 무선 채널 (예: Wi-Fi 연결), 유선 연결 (예: 디지털 서브스크라이버 라인 (DSL), 케이블 모뎀 등) 또는 파일 서버 (114) 에 저장된 인코딩된 비디오 데이터에 액세스하는 데 적합한 이 둘의 조합이 포함될 수 있다. 파일 서버 (114) 및 입력 인터페이스 (122) 는 스트리밍 전송 프로토콜, 다운로드 전송 프로토콜, 또는 이들의 조합에 따라 동작하도록 구성될 수 있다.
출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 무선 송신기/수신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 임의의 다양한 IEEE 802.11 표준에 따라 동작하는 무선 통신 컴포넌트, 또는 다른 물리적 컴포넌트를 나타낼 수 있다. 출력 인터페이스 (108) 및 입력 인터페이스 (122) 가 무선 컴포넌트를 포함하는 예에서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G 등과 같은 셀룰러 통신 표준에 따라 인코딩된 비디오 데이터와 같은 데이터를 전송하도록 구성될 수 있다. 출력 인터페이스 (108) 가 무선 송신기를 포함하는 일부 예에서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예: ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준에 따라, 인코딩된 비디오 데이터와 같은 데이터를 전송하도록 구성될 수 있다. 일부 예들에서, 소스 디바이스 (102) 및/또는 목적지 디바이스 (116) 는 각각의 SoC (system-on-a-chip) 장치들을 포함할 수 있다. 예를 들어, 소스 디바이스 (102) 는 비디오 인코더 (200) 및/또는 출력 인터페이스 (108) 에 기인하는 기능을 수행하기 위한 SoC 장치를 포함할 수 있고, 목적지 디바이스 (116) 는 비디오 디코더 (300) 및/또는 입력 인터페이스 (122) 에 기인하는 기능을 수행하기 위한 SoC 장치를 포함할 수 있다.
본 개시물의 기술은 공중파 텔레비전 방송, 케이블 텔레비전 송신, 위성 텔레비전 송신, 인터넷 스트리밍 비디오 송신, 예컨대 HTTP 를 통한 동적 적응 스트리밍 (DASH), 데이터 저장 매체에 인코딩된 디지털 비디오, 데이터 저장 매체에 저장된 디지털 비디오의 디코딩 또는 기타 애플리케이션과 같은 다양한 멀티미디어 애플리케이션 중 임의의 것을 지원하는 비디오 코딩에 적용될 수 있다.
목적지 디바이스 (116) 의 입력 인터페이스 (122) 는 컴퓨터-판독가능 매체 (110) (예를 들어, 통신 매체, 저장 장치 (112), 파일 서버 (114) 등) 로부터 인코딩된 비디오 비트스트림을 수신한다. 인코딩된 비디오 비트스트림은 비디오 블록 또는 다른 코딩된 유닛들 (예를 들어, 슬라이스들, 픽쳐들, 픽쳐들의 그룹들, 시퀀스 등) 의 처리 및/또는 특성을 기술하는 값들을 갖는 신택스 엘리먼트들과 같은, 비디오 디코더 (300) 에 의해 또한 사용되는, 비디오 인코더 (200) 에 의해 규정된 시그널링 정보를 포함할 수도 있다. 디스플레이 장치 (118) 는 디코딩된 비디오 데이터의 디코딩된 픽쳐를 사용자에게 디스플레이한다. 디스플레이 장치 (118) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이 또는 다른 유형의 디스플레이 장치와 같은 다양한 디스플레이 장치 중 임의의 것을 나타낼 수 있다.
도 1 에는 도시되지는 않았지만, 일부 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 각각 오디오 인코더 및/또는 오디오 디코더와 통합될 수 있고, 공통 데이터 스트림에서 오디오 및 비디오 쌍방을 포함하는 다중화된 스트림들을 처리하기 위해, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 적용가능한 경우, MUX-DEMUX 장치는 ITU H.223 멀티플렉서 프로토콜 또는 UDP (유저 데이터그램 프로토콜) 와 같은 기타 프로토콜을 준수할 수 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 각각은 하나 이상의 마이크로프로세서, 디지털 신호 프로세서 (DSPs), ASICs (application specific integrated circuits), FPGAs (field programmable gate arrays), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합과 같은 다양한 적절한 인코더 및/또는 디코더 회로의 임의의 것으로서 구현될 수도 있다. 기술이 소프트웨어에서 부분적으로 구현될 때, 장치는 소프트웨어에 대한 명령을 적절한 비-일시적 컴퓨터-판독 가능 매체에 저장할 수 있고, 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행하여 본 개시의 기술을 수행할 수 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 개별 장치에서 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있다. 비디오 인코더 (200) 및/또는 비디오 디코더 (300) 를 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 셀룰러 전화와 같은 무선 통신 장치를 포함할 수 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 멀티-뷰 및/또는 스케일가능한 비디오 코딩 익스텐션과 같은, 고효율 비디오 코딩 (HEVC) 또는 이의 익스텐션이라고도 하는 ITU-T H.265 와 같은 비디오 코딩 표준에 따라 동작할 수 있다. 대안적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 VVC (Versatile Video Coding) 라고도 하는 ITU-T H.266 과 같은 다른 독점 또는 산업 표준에 따라 동작할 수 있다. VVC 표준의 최근 드래프트는 Bross, 등의 "Versatile Video Coding (Draft 8)," ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11 의 JVET (Joint Video Experts Team), 17차 회의: 브뤼셀, BE, 1월 7-17일, 2020, JVET-Q2001-vC (이하 "VVC 드래프트 8") 에 기술되어 있다. 그러나, 본 개시물의 기술은 임의의 특정 코딩 표준으로 제한되지 않는다.
일반적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 픽쳐들의 블록-기반 코딩을 수행할 수도 있다. "블록" 이라는 용어는 일반적으로 처리될 (예를 들어, 인코딩될, 디코딩될, 또는 다르게는 인코딩 및/또는 디코딩 프로세스에서 사용될) 데이터를 포함하는 구조를 지칭한다. 예를 들어, 블록은 휘도 및/또는 색차 데이터의 샘플의 2차원 매트릭스를 포함할 수 있다. 일반적으로, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 YUV (예를 들어, Y, Cb, Cr) 포맷으로 표현되는 비디오 데이터를 코딩할 수도 있다. 즉, 픽쳐의 샘플에 대한 적색, 녹색 및 청색 (RGB) 데이터를 코딩하는 대신, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 휘도 및 색차 컴포넌트를 코딩할 수도 있고, 여기서 색차 컴포넌트는 적색 및 청색 색조 컴포넌트를 모두 포함할 수도 있다. 일부 예들에서, 비디오 인코더 (200) 는 인코딩 전에 수신된 RGB 포맷 데이터를 YUV 표현으로 변환하고, 비디오 디코더 (300) 는 YUV 표현을 RGB 포맷으로 변환한다. 대안적으로, 전처리 및 후처리 유닛 (미도시) 이 이러한 변환을 수행할 수 있다.
본 개시물은 일반적으로 픽쳐의 데이터를 인코딩 또는 디코딩하는 프로세스를 포함하기 위해 픽쳐의 코딩 (예를 들어, 인코딩 및 디코딩) 을 지칭할 수 있다. 유사하게, 이 개시물은 블록들에 대한 데이터를 인코딩 또는 디코딩하는 프로세스, 예를 들어, 예측 및/또는 레지듀얼 코딩을 포함하기 위해 픽쳐의 블록들의 코딩을 지칭할 수도 있다. 인코딩된 비디오 비트스트림은 일반적으로 코딩 결정 (예를 들어, 코딩 모드) 및 픽쳐들의 블록으로의 분할을 나타내는 신택스 엘리먼트에 대한 일련의 값을 포함한다. 따라서, 픽쳐 또는 블록을 코딩하는 것에 대한 참조는 일반적으로 픽쳐 또는 블록을 형성하는 신택스 엘리먼트에 대한 코딩 값으로 이해되어야 한다.
HEVC 는 코딩 유닛 (CUs), 예측 유닛 (PUs) 및 변환 유닛 (TUs) 을 포함하는 다양한 블록을 정의한다. HEVC 에 따르면, 비디오 코더 (예컨대 비디오 인코더 (200)) 는 쿼드트리 구조에 따라 코딩 트리 유닛 (CTU) 을 CUs 로 분할한다. 즉, 비디오 코더는 CTUs 와 CUs 를 4개의 동일하고 겹치지 않는 스퀘어들로 분할하고, 쿼드트리의 각 노드는 0개 또는 4개의 차일드 노드를 갖는다. 차일드 노드가 없는 노드는 "리프 노드" 로 지칭될 수 있고, 이러한 리프 노드의 CUs 는 하나 이상의 PUs 및/또는 하나 이상의 TUs 를 포함할 수 있다. 비디오 코더는 PUs 및 TUs 를 추가로 분할할 수도 있다. 예를 들어, HEVC 에서, RQT (residual quadtree) 는 TUs 의 분할을 나타낸다. HEVC 에서, PUs 는 인터-예측 데이터를 나타내고, TUs 는 레지듀얼 데이터를 나타낸다. 인트라-예측되는 CUs 는 인트라-모드 지시와 같은 인트라-예측 정보를 포함한다.
다른 예로서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 EVC 또는 VVC에 따라 동작하도록 구성될 수도 있다. EVC 또는 VVC 에 따르면, 비디오 코더 (예를 들어 비디오 인코더 (200)) 는 픽쳐를 복수의 코딩 트리 유닛 (CTUs) 으로 분할한다. 비디오 인코더 (200) 는 QTBT (quadtree-binary tree) 구조 또는 MTT (Multi-Type Tree) 구조와 같은 트리 구조에 따라 CTU 를 분할할 수도 있다. QTBT 구조는 HEVC 의 CUs, PUs 및 TUs 간의 분리와 같은 다중 분할 유형의 개념을 제거한다. QTBT 구조는 쿼드트리 분할에 따라 분할된 첫 번째 레벨과 이진 트리 분할에 따라 분할된 두 번째 레벨의 두 가지 레벨을 포함한다. QTBT 구조의 루트 노드는 CTU 에 대응한다. 이진 트리의 리프 노드는 CUs (코딩 유닛) 에 대응한다.
MTT 분할 구조에서, 블록은 쿼드트리 (QT) 분할, 이진 트리 (BT) 분할, 및 하나 이상의 유형의 삼중 트리 (TT) (삼항 트리 (TT) 라고도 함) 분할을 사용하여 분할될 수 있다. 삼중 또는 삼항 트리 분할은 블록이 세 개의 하위 블록으로 분리되는 분할이다. 일부 예에서, 삼중 또는 삼항 트리 분할은 중심을 통해 원래 블록을 분할하지 않고서 블록을 3개의 하위 블록으로 분할한다. MTT 의 분할 유형 (예를 들어 QT, BT 및 TT) 은 대칭 또는 비대칭일 수 있다.
일부 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 휘도 및 색차 성분들 각각을 나타내기 위해 단일 QTBT 또는 MTT 구조를 사용할 수도 있는 한편, 다른 예들에서, 비디오 인코더 (200) 및 비디오 디코더 (300) 는 둘 이상의 QTBT 또는 MTT 구조, 예를 들어 휘도 성분에 대한 하나의 QTBT/MTT 구조 및 두 색차 성분에 대한 다른 QTBT/MTT 구조 (또는 각각의 색차 성분에 대한 두 개의 QTBT/MTT 구조) 를 사용할 수도 있다.
비디오 인코더 (200) 및 비디오 디코더 (300) 는 HEVC 당 쿼드트리 분할, QTBT 분할, MTT 분할, 또는 다른 분할 구조를 사용하도록 구성될 수도 있다. 설명의 목적을 위해, 본 개시물의 기술의 설명은 QTBT 분할과 관련하여 제시된다. 그러나, 본 개시물의 기술은 또한 쿼드트리 분할 또는 다른 유형의 분할을 사용하도록 구성된 비디오 코더에도 적용될 수 있다는 것을 이해해야 한다.
블록 (예를 들어, CTUs 또는 CUs) 은 픽쳐에서 다양한 방식으로 그룹화될 수 있다. 일례로, 브릭은 픽쳐의 특정 타일 내에서 CTU 행의 직사각형 영역을 참조할 수 있다. 타일은 픽쳐에서의 특정 타일 열 및 특정 타일 행 내의 CTUs 의 직사각형 영역일 수 있다. 타일 열은 픽쳐의 높이와 동일한 높이 및 신택스 엘리먼트 (예를 들어, 픽쳐 파라미터 세트에서와 같이) 에 의해 지정된 폭을 갖는 CTUs의 직사각형 영역을 지칭한다. 타일 행은 (예를 들어, 픽쳐 파라미터 세트에서와 같이) 신택스 엘리먼트에 의해 지정된 높이 및 픽쳐의 폭과 동일한 폭을 갖는 CTUs 의 직사각형 영역을 지칭한다.
일부 예들에서, 타일은 다수의 브릭들로 분할될 수 있고, 각각은 타일 내에 하나 이상의 CTU 행들을 포함할 수 있다. 여러 개의 브릭들로 분할되지 않은 타일을 브릭이라고도 한다. 그러나, 타일의 진정한 하위 세트인 브릭은 타일이라고 부를 수 없다.
픽쳐의 브릭들은 슬라이스로 배열될 수도 있다. 슬라이스는 단일 NAL (Network Abstraction Layer) 유닛에 배타적으로 포함될 수 있는 픽쳐의 정수 브릭일 수 있다. 일부 예에서, 슬라이스는 다수의 완전한 타일들 또는 하나의 타일의 완전한 브릭들의 연속적인 시퀀스만을 포함한다.
본 개시물은 수직 및 수평 차원, 예를 들어, 16x16 샘플 또는 16 by 16 샘플의 관점에서 블록 (CU 또는 다른 비디오 블록과 같은) 의 샘플 차원을 참조하기 위해 "NxN" 및 "N by N" 을 상호 교환 가능하게 사용할 수 있다. 일반적으로 16x16 CU 는 수직 방향으로 16개의 샘플을 갖고 (y = 16) 수평 방향으로 16개의 샘플을 갖는다 (x = 16). 마찬가지로, NxN CU 는 일반적으로 수직 방향으로 N개의 샘플을 갖고 수평 방향으로 N개의 샘플을 가지며, 여기서 N 은 음이 아닌 정수 값을 나타낸다. CU 의 샘플들은 행과 열로 정렬될 수 있다. 또한, CUs 는 수직 방향에서와 같이 수평 방향으로 동일한 수의 샘플을 가질 필요는 없다. 예를 들어, CUs 는 NxM개의 샘플을 포함할 수 있으며, 여기서 M 은 N 과 반드시 같을 필요는 없다.
비디오 인코더 (200) 는 예측 및/또는 레지듀얼 정보, 및 기타 정보를 나타내는 CUs 에 대한 비디오 데이터를 인코딩한다. 예측 정보는 CU 에 대한 예측 블록을 형성하기 위해 CU 가 어떻게 예측되어야 하는지를 나타낸다. 레지듀얼 정보는 일반적으로 인코딩 이전의 CU 의 샘플들과 예측 블록 간의 샘플별 차이를 나타낸다.
CU 를 예측하기 위해, 비디오 인코더 (200) 는 일반적으로 인터-예측 또는 인트라-예측을 통해 CU 에 대한 예측 블록을 형성할 수도 있다. 인터-예측은 일반적으로 이전에 코딩된 픽쳐의 데이터로부터 CU 를 예측하는 것을 지칭하는 한편, 인트라-예측은 일반적으로 동일한 픽쳐의 이전에 코딩된 데이터로부터 CU 를 예측하는 것을 지칭한다. 인터-예측을 수행하기 위해, 비디오 인코더 (200) 는 하나 이상의 모션 벡터를 사용하여 예측 블록을 생성할 수도 있다. 비디오 인코더 (200) 는 일반적으로, 예를 들어, CU 와 참조 블록 간의 차이의 관점에서, CU 와 밀접하게 일치하는 참조 블록을 식별하기 위해 모션 검색을 수행할 수도 있다. 비디오 인코더 (200) 는 참조 블록이 현재 CU 와 밀접하게 일치하는지의 여부를 결정하기 위해 SAD (Sum of Absolute Difference), SSD (Sum of Squared Differences), MAD (Mean Absolute Difference), MSD (Mean Squared Differences), 또는 다른 이러한 차이 계산을 사용하여 차이 메트릭을 계산할 수도 있다. 일부 예들에서, 비디오 인코더 (200) 는 단방향 예측 또는 양방향 예측을 사용하여 현재 CU 를 예측할 수도 있다.
EVC 및 VVC 의 일부 예는 또한 인터-예측 모드로 간주될 수 있는 아핀 모션 보상 모드를 제공한다. 아핀 모션 보상 모드에서, 비디오 인코더 (200) 는 줌 인 또는 줌 아웃, 회전, 원근 모션, 또는 다른 불규칙 모션 유형과 같은 비-전환 모션을 나타내는 2개 이상의 모션 벡터를 결정할 수도 있다.
인트라-예측을 수행하기 위해, 비디오 인코더 (200) 는 예측 블록을 생성하기 위해 인트라-예측 모드를 선택할 수도 있다. EVC 의 일부 예는 DC, 쌍선형, 평면 및 30각 인트라-예측 모드를 제공한다. 일반적으로, 비디오 인코더 (200) 는 현재 블록의 샘플들을 예측할 현재 블록 (예를 들어, CU 의 블록) 에 이웃하는 샘플들을 기술하는 인트라-예측 모드를 선택한다. 비디오 인코더 (200) 가 래스터 스캔 순서로 (왼쪽에서 오른쪽으로, 위에서 아래로) CTUs 및 CUs 를 코딩한다고 가정하면, 이러한 샘플은 일반적으로 현재 블록과 동일한 픽쳐에서 현재 블록의 위 및 왼쪽에 있을 수 있다.
VVC 의 일부 예는 평면 모드 및 DC 모드뿐만 아니라 다양한 방향 모드를 포함하는 67개의 인트라-예측 모드를 제공한다. 일반적으로, 비디오 인코더 (200) 는 현재 블록의 샘플들을 예측할 현재 블록 (예를 들어, CU 의 블록) 에 이웃하는 샘플들을 기술하는 인트라-예측 모드를 선택한다. 비디오 인코더 (200) 가 래스터 스캔 순서로 (왼쪽에서 오른쪽으로, 위에서 아래로) CTUs 및 CUs 를 코딩한다고 가정하면, 이러한 샘플은 일반적으로 현재 블록과 동일한 픽쳐에서 현재 블록의 위, 위 및 왼쪽, 또는 왼쪽에 있을 수 있다.
비디오 인코더 (200) 는 현재 블록에 대한 예측 모드를 나타내는 데이터를 인코딩한다. 예를 들어, 인터-예측 모드에 대해, 비디오 인코더 (200) 는 대응하는 모드에 대한 모션 정보 뿐만 아니라 다양한 이용가능한 인터-예측 모드 중 어느 것이 사용되는지를 나타내는 데이터를 인코딩할 수도 있다. 단방향 또는 양방향 인터-예측을 위해, 예를 들어, 비디오 인코더 (200) 는 진보된 모션 벡터 예측 (AMVP) 또는 병합 모드를 사용하여 모션 벡터를 인코딩할 수도 있다. 비디오 인코더 (200) 는 유사한 모드를 사용하여 아핀 모션 보상 모드에 대한 모션 벡터를 인코딩할 수도 있다.
블록의 인트라-예측 또는 인터-예측과 같은 예측에 이어서, 비디오 인코더 (200) 는 블록에 대한 레지듀얼 데이터를 계산할 수도 있다. 레지듀얼 블록과 같은 레지듀얼 데이터는 해당 예측 모드를 사용하여 형성된 블록과 그 블록에 대한 예측 블록 간의 샘플별 차이를 나타낸다. 비디오 인코더 (200) 는 샘플 도메인 대신에 변환 도메인에서 변환된 데이터를 생성하기 위해 레지듀얼 블록에 하나 이상의 변환을 적용할 수도 있다. 예를 들어, 비디오 인코더 (200) 는 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환을 레지듀얼 비디오 데이터에 적용할 수도 있다. 추가적으로, 비디오 인코더 (200) 는 MDNSST (mode-dependent non-separable secondary transform), 신호 종속 변환, Karhunen-Loeve 변환 (KLT) 등과 같은 제 1 변환에 후속하는 이차 변환을 적용할 수도 있다. 비디오 인코더 (200) 는 하나 이상의 변환의 적용에 이어서 변환 계수를 생성한다.
위에서 언급한 바와 같이, 변환 계수를 생성하기 위한 임의의 변환에 이어, 비디오 인코더 (200) 는 변환 계수의 양자화를 수행할 수도 있다. 양자화는 일반적으로 변환 계수를 양자화하여 변환 계수를 나타내는 데 사용되는 데이터의 양을 가능한 감소시켜 추가 압축을 제공하는 프로세스를 나타낸다. 양자화 프로세스를 수행함으로써, 비디오 인코더 (200) 는 변환 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, 비디오 인코더 (200) 는 양자화 동안 n-비트 값을 m-비트 값으로 반올림할 수도 있으며, 여기서 n 은 m 보다 크다. 일부 예들에서, 양자화를 수행하기 위해, 비디오 인코더 (200) 는 양자화될 값의 비트와이즈 우측-시프트를 수행할 수도 있다.
양자화에 이어, 비디오 인코더 (200) 는 변환 계수들을 스캔하여, 양자화된 변환 계수들을 포함하는 2차원 매트릭스로부터 1차원 벡터를 생성할 수도 있다. 스캔은 벡터의 전면에 더 높은 에너지 (따라서 더 낮은 주파수) 변환 계수를 배치하고 벡터의 후면에 더 낮은 에너지 (따라서 더 높은 주파수) 변환 계수를 배치하도록 설계될 수 있다. 일부 예들에서, 비디오 인코더 (200) 는 직렬화된 벡터를 생성하기 위해 양자화된 변환 계수들을 스캔하도록 미리 정의된 스캔 순서를 이용할 수도 있고, 그 다음 벡터의 양자화된 변환 계수들을 엔트로피 인코딩할 수도 있다. 다른 예들에서, 비디오 인코더 (200) 는 적응 스캔을 수행할 수도 있다. 1차원 벡터를 형성하기 위해 양자화된 변환 계수들을 스캐닝한 후, 비디오 인코더 (200) 는 예를 들어 컨텍스트-적응 이진 산술 코딩 (CABAC) 에 따라 1 차원 벡터를 엔트로피 인코딩할 수도 있다. 비디오 인코더 (200) 는 또한 비디오 데이터를 디코딩할 때 비디오 디코더 (300) 에 의해 사용하기 위해 인코딩된 비디오 데이터와 연관된 메타데이터를 설명하는 신택스 엘리먼트들에 대한 값들을 엔트로피 인코딩할 수도 있다.
CABAC 를 수행하기 위해, 비디오 인코더 (200) 는 컨텍스트 모델 내의 컨텍스트를 송신될 심볼에 할당할 수도 있다. 컨텍스트는 예를 들어 심볼의 이웃하는 값들이 0 값인지 여부와 관련될 수 있다. 확률 결정은 심볼에 할당된 컨텍스트에 기초할 수 있다.
비디오 인코더 (200) 는 비디오 디코더 (300) 에 대한 블록-기반 신택스 데이터, 픽쳐-기반 신택스 데이터, 및 시퀀스-기반 신택스 데이터와 같은 신택스 데이터를, 예를 들어, 픽쳐 헤더, 블록 헤더, 슬라이스 헤더, 또는 다른 신택스 데이터, 예컨대 시퀀스 파라미터 세트 (SPS), 픽쳐 파라미터 세트 (PPS), 또는 비디오 파라미터 세트 (VPS) 에서 추가로 생성할 수도 있다. 비디오 디코더 (300) 는 유사하게 그러한 신택스 데이터를 디코딩하여, 대응하는 비디오 데이터를 디코딩하는 방법을 결정할 수도 있다.
이러한 방식으로, 비디오 인코더 (200) 는 인코딩된 비디오 데이터, 예를 들어, 픽쳐를 블록 (예를 들어, CUs) 으로 분할하는 것을 기술하는 신택스 엘리먼트 및 블록에 대한 예측 및/또는 레지듀얼 정보를 포함하는 비트스트림을 생성할 수도 있다. 궁극적으로, 비디오 디코더 (300) 는 비트스트림을 수신하고, 인코딩된 비디오 데이터를 디코딩할 수도 있다.
일반적으로, 비디오 디코더 (300) 는 비트스트림의 인코딩된 비디오 데이터를 디코딩하기 위해 비디오 인코더 (200) 에 의해 수행되는 것과 상호적인 프로세스를 수행한다. 예를 들어, 비디오 디코더 (300) 는 비디오 인코더 (200) 의 CABAC 인코딩 프로세스와 비록 상호적이지만 실질적으로 유사한 방식으로 CABAC 를 사용하여 비트스트림의 신택스 엘리먼트들에 대한 값들을 디코딩할 수도 있다. 신택스 엘리먼트는 CTU 의 CUs 를 규정하기 위해 픽쳐의 CTUs 로의 분할, QTBT 구조와 같은 대응 분할 구조에 따른 각 CTU 의 분할을 위한 분할 정보를 규정할 수도 있다. 신택스 엘리먼트는 비디오 데이터의 블록 (예를 들어, CUs) 에 대한 예측 및 레지듀얼 정보를 더 규정할 수도 있다.
레지듀얼 정보는 예를 들어 양자화된 변환 계수에 의해 표현될 수 있다. 비디오 디코더 (300) 는 블록에 대한 레지듀얼 블록을 재생하기 위해 블록의 양자화된 변환 계수들을 역양자화하고 역변환할 수도 있다. 비디오 디코더 (300) 는 블록에 대한 예측 블록을 형성하기 위해 시그널링된 예측 모드 (인트라-예측 또는 인터-예측) 및 관련 예측 정보 (예를 들어, 인터-예측을 위한 모션 정보) 를 사용한다. 비디오 디코더 (300) 는 그 다음 원래 블록을 재생하기 위해 예측 블록과 레지듀얼 블록을 (샘플별 기준으로) 결합할 수도 있다. 비디오 디코더 (300) 는 블록의 경계를 따라 시각적 아티팩트를 감소시키기 위해 디블록킹 프로세스를 수행하는 것과 같은 추가 프로세싱을 수행할 수도 있다.
위에서 언급한 바와 같이, 동적 범위 조정 (DRA) 이 가능한 일부 비디오 코덱에서, DRA 와 관련된 수학적 연산은 로그 및/또는 지수 연산을 포함할 수 있다. DRA 는 디코딩된 픽셀들의 동적 범위를 조정하기 위해, 비디오 디코더 (300) 와 같은 비디오 디코더에 의해 사용될 수 있다. 이러한 연산은 과도한 양의 처리 능력을 사용할 수 있으므로 구현하는 데 비용이 많이 들 수 있다. 본 개시물의 기술은 로그 및/또는 지수 연산을 연산의 근사값으로 대체하고, 그럼으로써 비용을 줄이고 처리 능력을 절약할 수 있다.
본 개시물의 기법들에 따르면, 비디오 데이터를 처리하는 방법은, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 단계; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 단계; 크로마 QP 의 상기 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 단계; 크로마 QP 의 상기 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 단계; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 단계; 및 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 단계를 포함한다. 이러한 방식으로, 그렇지 않으면 로그 및/또는 지수 연산으로 구현될 수학적 연산이 연산의 근사값으로 대체되어, 비용을 줄이고 처리 능력을 절약할 수 있다.
본 개시물의 기술에 따르면, 비디오 데이터를 처리하기 위한 장치는, 비디오 데이터를 저장하도록 구성된 메모리 및 회로에 구현되고 상기 메모리에 통신가능하게 결합된 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하도록; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하도록; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록; 그리고 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하도록 구성된다.
본 개시물의 기술들에 따르면, 비디오 데이터를 처리하기 위한 장치는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 수단; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 수단; 크로마 QP 의 상기 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 수단; 크로마 QP 의 상기 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 수단; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 수단; 및 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 수단을 포함한다.
본 개시물의 기술들에 따르면, 컴퓨터-판독가능 저장 매체는, 실행될 때, 프로그램가능한 프로세서로 하여금, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하게 하고; 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하게 하고; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하게 하고; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하게 하고; 상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하게 하고, 그리고 상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하게 하는 명령으로 인코딩된다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은, 비디오 데이터에 대해 동적 범위 조정 (DRA) 을 수행하는 단계, 및 동적 범위 조정에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, 여기서 DRA 를 수행하는 단계는 비디오 데이터의 제한된 비트스트림을 활용하는 것을 포함한다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은, 비디오 데이터에 대해 DRA 를 수행하는 단계, 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, 여기서 DRA 를 수행하는 단계는 지수 함수 또는 로그 함수의 정수 근사치를 결정하는 것을 포함한다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은, 비디오 데이터에 대해 DRA 를 수행하는 단계, 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, 여기서 DRA 를 수행하는 단계는 지수 함수 또는 로그 함수의 서브-샘플링된 표현을 결정하는 것을 포함한다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은, 스케일 값 또는 양자화 파라미터 (QP) 값이 정확하게 도표화되지 않은 것에 기초하여, 스케일 값 또는 양자화 파라미터 (QP) 값이 정확하게 도표화되는지 여부를 결정하는 단계, 선형 보간을 통해 지수 함수 또는 로그 함수를 근사화하는 단계, 근사에 기초하여 추정된 스케일 값 또는 QP 값을 결정하는 단계, 및 추정된 스케일 값 또는 QP 값에 기초하여 비디오 데이터를 코딩하는 단계를 포함한다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은, 비디오 데이터에 대해 DRA 를 수행하는 단계, 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, 여기서 DRA 를 수행하는 단계는 정수 값만을 이용하여 스케일 값들 또는 QP 값들 간을 전환하는 것을 포함한다.
본 개시물의 기술들에 따르면, 비디오 데이터를 코딩하는 방법은 본 개시물의 기술들 중 임의의 것 또는 임의의 조합을 포함한다.
본 개시물의 기술들에 따르면, 장치는 회로에 구현된 하나 이상의 프로세서에 통신 가능하게 결합된 비디오 데이터를 저장하도록 구성된 메모리를 포함하고, 하나 이상의 프로세서는 본 개시물의 임의의 기술을 수행하도록 구성된다.
본 개시물의 기술들에 따르면, 장치는 본 개시물의 임의의 기술을 수행하기 위한 적어도 하나의 수단을 포함한다.
본 개시물의 기술에 따르면, 컴퓨터-판독가능 저장 매체는, 실행될 때, 프로그램가능한 프로세서가 본 개시물의 임의의 기술을 수행하게 하는 명령으로 인코딩된다.
본 개시물은 일반적으로 신택스 엘리먼트와 같은 특정 정보를 "시그널링" 하는 것을 지칭할 수 있다. "시그널링" 이라는 용어는 일반적으로 인코딩된 비디오 데이터를 디코딩하는 데 사용되는 신택스 엘리먼트에 대한 값 및/또는 다른 데이터의 통신을 지칭할 수도 있다. 즉, 비디오 인코더 (200) 는 비트스트림의 신택스 엘리먼트들에 대한 값들을 시그널링할 수도 있다. 일반적으로 시그널링은 비트스트림으로 값을 생성하는 것을 의미한다. 위에서 언급된 바와 같이, 소스 디바이스 (102) 는, 목적지 디바이스 (116) 에 의한 나중 검색을 위해 신택스 엘리먼트들을 저장 장치 (112) 에 저장할 때 발생할 수 있는 것과 같이, 실질적으로 실시간으로 또는 실시간이 아니게 비트스트림을 목적지 디바이스 (116) 에로 전송할 수 있다.
도 2 는 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 인코더 (200) 를 예시하는 블록도이다. 도 2 는 설명의 목적으로 제공되며, 본 개시에서 광범위하게 예시되고 설명된 바와 같은 기술을 제한하는 것으로 간주되어서는 안된다. 설명의 목적을 위해, 본 개시물은 EVC, VVC (ITU-T H.266, 개발 중), 및 HEVC (ITU-T H.265) 의 기술에 따른 비디오 인코더 (200) 를 설명한다. 그러나, 본 개시물의 기술들은 다른 비디오 코딩 표준들로 구성된 비디오 인코딩 장치들에 의해 수행될 수도 있다.
도 2 의 예에서, 비디오 인코더 (200) 는 비디오 데이터 메모리 (230), 모드 선택 유닛 (202), 레지듀얼 생성 유닛 (204), 변환 처리 유닛 (206), 양자화 유닛 (208), 역양자화 유닛 (210), 역변환 처리 유닛 (212), 재구성 유닛 (214), 필터 유닛 (216), 디코딩된 픽쳐 버퍼 (DPB) (218), 및 엔트로피 인코딩 유닛 (220) 을 포함한다. 비디오 데이터 메모리 (230), 모드 선택 유닛 (202), 레지듀얼 생성 유닛 (204), 변환 처리 유닛 (206), 양자화 유닛 (208), 역양자화 유닛 (210), 역변환 처리 유닛 (212), 재구성 유닛 (214), 필터 유닛 (216), DPB (218), 및 엔트로피 인코딩 유닛 (220) 중 임의의 것 또는 모든 것은 하나 이상의 프로세서 또는 처리 회로에서 구현될 수 있다. 예를 들어, 비디오 인코더 (200) 의 유닛들은 하드웨어 회로의 일부로서 또는 FPGA 의 프로세서, ASIC 의 일부로서 하나 이상의 회로 또는 논리 요소로서 구현될 수 있다. 더욱이, 비디오 인코더 (200) 는 이들 및 다른 기능을 수행하기 위해 추가적인 또는 대안적인 프로세서 또는 처리 회로를 포함할 수 있다.
비디오 데이터 메모리 (230) 는 비디오 인코더 (200) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 인코더 (200) 는 예를 들어, 비디오 소스 (104) (도 1) 로부터 비디오 데이터 메모리 (230) 에 저장된 비디오 데이터를 수신할 수 있다. DPB (218) 는 비디오 인코더 (200) 에 의한 후속 비디오 데이터의 예측에 사용하기 위해 참조 비디오 데이터를 저장하는 참조 픽쳐 메모리로서 작용할 수 있다. 비디오 데이터 메모리 (230) 및 DPB (218) 는 동기 DRAM (SDRAM), 자기 저항 RAM (MRAM), 저항성 RAM (RRAM) 또는 기타 유형의 메모리 장치를 포함하는 다이나믹 랜덤 액세스 메모리 (DRAM) 와 같은 다양한 메모리 장치들 중 임의의 것에 의해 형성될 수 있다. 비디오 데이터 메모리 (230) 및 DPB (218) 는 동일한 메모리 장치 또는 별도의 메모리 장치에 의해 제공될 수 있다. 다양한 예들에서, 비디오 데이터 메모리 (230) 는 예시된 바와 같이 비디오 인코더 (200) 의 다른 컴포넌트들과 함께 온-칩일 수도 있고, 그러한 컴포넌트들에 대해 오프-칩일 수도 있다.
본 개시물에서, 비디오 데이터 메모리 (230) 에 대한 참조는, 특별히 그렇게 기술되지 않는 한, 비디오 인코더 (200) 내부의 메모리 또는, 특별히 그렇게 기술되지 않는 한, 비디오 인코더 (200) 외부의 메모리로 제한되는 것으로 해석되어서는 안된다. 오히려, 비디오 데이터 메모리 (230) 에 대한 참조는 비디오 인코더 (200) 가 인코딩을 위해 수신하는 비디오 데이터 (예를 들어, 인코딩될 현재 블록에 대한 비디오 데이터) 를 저장하는 참조 메모리로서 이해되어야 한다. 도 1 의 메모리 (106) 는 또한 비디오 인코더 (200) 의 다양한 유닛으로부터의 출력의 임시 저장을 제공할 수 있다.
도 2 의 다양한 유닛은 비디오 인코더 (200) 에 의해 수행되는 동작을 이해하는 것을 돕기 위해 예시된다. 유닛은 고정 기능 회로, 프로그램가능 회로, 또는 이들의 조합으로 구현될 수 있다. 고정 기능 회로는 특정 기능을 제공하는 회로를 말하며, 수행할 수 있는 작업에 미리 설정되어 있다. 프로그램가능 회로는 다양한 작업을 수행하도록 프로그래밍할 수 있는 회로를 말하며, 수행할 수 있는 작업에 유연한 기능을 제공한다. 예를 들어, 프로그램가능 회로는 프로그램가능 회로가 소프트웨어 또는 펌웨어의 명령에 의해 정의된 방식으로 작동하게 하는 소프트웨어 또는 펌웨어를 실행할 수 있다. 고정 기능 회로는 (예를 들어 파라미터 또는 출력 파라미터를 수신하도록) 소프트웨어 명령을 실행할 수 있지만, 고정 기능 회로가 수행하는 작업 유형은 일반적으로 변경할 수 없다. 일부 예에서, 유닛들 중 하나 이상은 별개의 회로 블록 (고정 기능 또는 프로그램 가능) 일 수 있고, 일부 예에서 유닛들 중 하나 이상은 집적 회로일 수 있다.
비디오 인코더 (200) 는 프로그램 가능 회로로부터 형성된 산술 논리 유닛 (ALUs), 기본 기능 유닛 (EFUs), 디지털 회로, 아날로그 회로, 및/또는 프로그램 가능 코어를 포함할 수 있다. 비디오 인코더 (200) 의 동작이 프로그램 가능 회로에 의해 실행되는 소프트웨어를 사용하여 수행되는 예에서, 메모리 (106) (도 1) 는 비디오 인코더 (200) 가 수신하고 실행하는 소프트웨어의 명령 (예를 들어, 객체 코드) 을 저장할 수 있거나, 또는 비디오 인코더 (200) (미도시) 내의 다른 메모리가 이러한 명령을 저장할 수 있다.
비디오 데이터 메모리 (230) 는 수신된 비디오 데이터를 저장하도록 구성된다. 비디오 인코더 (200) 는 비디오 데이터 메모리 (230) 로부터 비디오 데이터의 픽쳐를 검색하고 비디오 데이터를 레지듀얼 생성 유닛 (204) 및 모드 선택 유닛 (202) 에 제공할 수도 있다. 비디오 데이터 메모리 (230) 의 비디오 데이터는 인코딩될 원시 비디오 데이터일 수도 있다.
모드 선택 유닛 (202) 은 모션 추정 유닛 (222), 모션 보상 유닛 (224), 및 인트라-예측 유닛 (226) 을 포함한다. 모드 선택 유닛 (202) 은 다른 예측 모드들에 따라 비디오 예측을 수행하기 위한 추가 기능 유닛들을 포함할 수 있다. 예로서, 모드 선택 유닛 (202) 은 팔레트 유닛, 인트라-블록 복사 유닛 (모션 추정 유닛 (222) 및/또는 모션 보상 유닛 (224) 의 일부일 수 있음), 아핀 유닛, 선형 모델 (LM) 유닛 등을 포함할 수 있다.
모드 선택 유닛 (202) 은 일반적으로 인코딩 파라미터들의 조합 및 이러한 조합에 대한 결과적인 레이트-왜곡 값들을 테스트하기 위해 다중 인코딩 패스들을 조정한다. 인코딩 파라미터들은 CTUs 의 CUs 로의 분할, CUs 에 대한 예측 모드, CUs 의 레지듀얼 데이터에 대한 변환 유형, CUs 의 레지듀얼 데이터에 대한 양자화 파라미터 등을 포함할 수 있다. 모드 선택 유닛 (202) 은 궁극적으로 다른 테스트된 조합들보다 우수한 레이트-왜곡 값들을 갖는 인코딩 파라미터들의 조합을 선택할 수 있다.
비디오 인코더 (200) 는 비디오 데이터 메모리 (230) 로부터 검색된 픽쳐를 일련의 CTUs 로 분할하고, 슬라이스 내에서 하나 이상의 CTUs 를 캡슐화할 수 있다. 모드 선택 유닛 (202) 은 전술한 QTBT 구조 또는 HEVC 의 쿼드-트리 구조와 같은 트리 구조에 따라 픽쳐의 CTU 를 분할할 수 있다. 위에서 설명된 바와 같이, 비디오 인코더 (200) 는 트리 구조에 따라 CTU 를 분할하는 것으로부터 하나 이상의 CUs 를 형성할 수도 있다. 그러한 CU 는 또한 일반적으로 "비디오 블록" 또는 "블록" 으로서 지칭될 수 있다.
일반적으로, 모드 선택 유닛 (202) 은 또한 현재 블록 (예를 들어, 현재 CU 또는 HEVC 에서 PU 와 TU 의 중첩 부분) 에 대한 예측 블록을 생성하기 위해 그 컴포넌트들 (예컨대, 모션 추정 유닛 (222), 모션 보상 유닛 (224), 및 인트라-예측 유닛 (226)) 을 제어한다. 현재 블록의 인터-예측을 위해, 모션 추정 유닛 (222) 은 하나 이상의 참조 픽쳐들 (예를 들어, DPB (218) 에 저장된 하나 이상의 이전에 코딩된 픽쳐들) 에서 하나 이상의 밀접하게 매칭되는 참조 블록들을 식별하기 위해 모션 탐색을 수행할 수도 있다. 특히, 모션 추정 유닛 (222) 은, 예를 들어 절대 차이의 합 (SAD), 제곱된 차이의 합 (SSD), 평균 절대 차이 (MAD), 평균 제곱 차이 (MSD) 등에 따라 잠재적인 참조 블록이 현재 블록과 얼마나 유사한지를 나타내는 값을 계산할 수 있다. 모션 추정 유닛 (222) 은 일반적으로 현재 블록과 고려되는 참조 블록 사이의 샘플별 차이를 사용하여 이러한 계산을 수행할 수 있다. 모션 추정 유닛 (222) 은 현재 블록과 가장 근접하게 일치하는 참조 블록을 나타내는, 이러한 계산들로부터 기인한 가장 낮은 값을 갖는 참조 블록을 식별할 수도 있다.
모션 추정 유닛 (222) 은 현재 픽쳐에서 현재 블록의 위치에 대해 참조 픽쳐에서 참조 블록의 위치를 규정하는 하나 이상의 모션 벡터 (MVs) 를 형성할 수도 있다. 모션 추정 유닛 (222) 은 그 다음 모션 보상 유닛 (224) 에 모션 벡터를 제공할 수 있다. 예를 들어, 단방향 인터-예측의 경우, 모션 추정 유닛 (222) 은 단일 모션 벡터를 제공할 수 있는 반면, 양방향 인터-예측의 경우, 모션 추정 유닛 (222) 은 두 개의 모션 벡터를 제공할 수 있다. 모션 보상 유닛 (224) 은 그 다음에 모션 벡터들을 사용하여 예측 블록을 생성할 수도 있다. 예를 들어, 모션 보상 유닛 (224) 은 모션 벡터를 사용하여 참조 블록의 데이터를 검색할 수도 있다. 다른 예로서, 모션 벡터가 분수 샘플 정밀도를 갖는 경우, 모션 보상 유닛 (224) 은 하나 이상의 보간 필터에 따라 예측 블록에 대한 값들을 보간할 수도 있다. 더욱이, 양방향 인터-예측을 위해, 모션 보상 유닛 (224) 은 각각의 모션 벡터에 의해 식별된 2개의 참조 블록들에 대한 데이터를 검색하고, 검색된 데이터를, 예를 들어 샘플별 평균화 또는 가중 평균화를 통해 결합할 수 있다.
다른 예로서, 인트라-예측 또는 인트라-예측 코딩의 경우, 인트라 예측 유닛 (226) 은 현재 블록에 인접한 샘플들로부터 예측 블록을 생성할 수 있다. 예를 들어, 방향 모드의 경우, 인트라-예측 유닛 (226) 은 일반적으로 이웃 샘플들의 값들을 수학적으로 결합하고, 예측 블록을 생성하기 위해 현재 블록에 걸쳐 정의된 방향으로 이러한 계산된 값들을 채울 수 있다. 다른 예로서, DC 모드에 대해, 인트라 예측 유닛 (226) 은 현재 블록에 대한 이웃 샘플들의 평균을 계산하고, 예측 블록의 각각의 샘플에 대한 이 결과적인 평균을 포함하도록 예측 블록을 생성할 수도 있다.
모드 선택 유닛 (202) 은 예측 블록을 레지듀얼 생성 유닛 (204) 에 제공한다. 레지듀얼 생성 유닛 (204) 은 비디오 데이터 메모리 (230) 로부터 현재 블록의 원시의 인코딩되지 않은 버전을 수신하고 모드 선택 유닛 (202) 으로부터 예측 블록을 수신한다. 레지듀얼 생성 유닛 (204) 은 현재 블록과 예측 블록 간의 샘플별 차이를 계산한다. 결과적인 샘플별 차이는 현재 블록에 대한 레지듀얼 블록을 정의한다. 일부 예들에서, 레지듀얼 생성 유닛 (204) 은 또한 레지듀얼 디퍼런셜 펄스 코드 변조 (RDPCM) 를 사용하여 레지듀얼 블록을 생성하기 위해 레지듀얼 블록의 샘플 값들 사이의 차이를 결정할 수도 있다. 일부 예들에서, 레지듀얼 생성 유닛 (204) 은 이진 감산을 수행하는 하나 이상의 감산기 회로들을 사용하여 형성될 수 있다.
모드 선택 유닛 (202) 이 CUs 를 PUs 로 분할하는 예들에서, 각각의 PU 는 루마 예측 유닛 및 대응하는 크로마 예측 유닛들과 연관될 수 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 다양한 크기를 갖는 PUs 를 지원할 수도 있다. 위에서 지시된 바와 같이, CU 의 크기는 CU 의 루마 코딩 블록의 크기를 지칭할 수도 있고, PU 의 크기는 PU 의 루마 예측 유닛의 크기를 지칭할 수도 있다. 특정 CU 의 크기가 2Nx2N 이라고 가정하면, 비디오 인코더 (200) 는 인트라 예측에 대해 2Nx2N 또는 NxN 의 PU 크기들을 지원할 수도 있고, 인터 예측에 대해 2Nx2N, 2NxN, Nx2N, NxN 등의 대칭 PU 크기들을 지원할 수도 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 또한 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 크기들에 대한 비대칭 분할을 지원할 수도 있다.
모드 선택 유닛 (202) 이 CU 를 PUs 로 더 분할하지 않는 예들에서, 각각의 CU 는 루마 코딩 블록 및 대응하는 크로마 코딩 블록들과 연관될 수도 있다. 상기와 같이, CU 의 크기는 CU 의 루마 코딩 블록의 크기를 참조할 수 있다. 비디오 인코더 (200) 및 비디오 디코더 (300) 는 2Nx2N, 2NxN 또는 Nx2N 의 CU 크기를 지원할 수 있다.
인트라-블록 복사 모드 코딩, 아핀-모드 코딩 및 선형 모델 (LM) 모드 코딩과 같은 다른 비디오 코딩 기술의 경우, 몇 가지 예로서, 모드 선택 유닛 (202) 은, 코딩 기술과 연관된 각각의 유닛을 통해, 인코딩되는 현재 블록에 대한 예측 블록을 생성한다. 팔레트 모드 코딩과 같은 일부 예들에서, 모드 선택 유닛 (202) 은 예측 블록을 생성하지 않을 수도 있고, 대신에 선택된 팔레트에 기초하여 블록을 재구성하는 방식을 나타내는 신택스 엘리먼트들을 생성할 수도 있다. 이러한 모드에서, 모드 선택 유닛 (202) 은 인코딩될 엔트로피 인코딩 유닛 (220) 에 이러한 신택스 엘리먼트를 제공할 수 있다.
전술한 바와 같이, 레지듀얼 생성 유닛 (204) 은 현재 블록 및 대응하는 예측 블록에 대한 비디오 데이터를 수신한다. 레지듀얼 생성 유닛 (204) 은 그 다음에 현재 블록에 대한 레지듀얼 블록을 생성한다. 레지듀얼 블록을 생성하기 위해, 레지듀얼 생성 유닛 (204) 은 예측 블록과 현재 블록 사이의 샘플별 차이를 계산한다.
변환 처리 유닛 (206) 은 하나 이상의 변환을 레지듀얼 블록에 적용하여 변환 계수의 블록 (본 명세서에서 "변환 계수 블록" 으로 지칭됨) 을 생성한다. 변환 처리 유닛 (206) 은 변환 계수 블록을 형성하기 위해 레지듀얼 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 처리 유닛 (206) 은 이산 코사인 변환 (DCT), 방향성 변환, KLT (Karhunen-Loeve transform), 또는 개념적으로 유사한 변환을 레지듀얼 블록에 적용할 수 있다. 일부 예들에서, 변환 처리 유닛 (206) 은 레지듀얼 블록에 대한 다중 변환들, 예를 들어, 1차 변환 및 2차 변환, 예컨대 회전 변환을 수행할 수도 있다. 일부 예들에서, 변환 처리 유닛 (206) 은 레지듀얼 블록에 변환들을 적용하지 않는다.
양자화 유닛 (208) 은 변환 계수 블록의 변환 계수를 양자화하여, 양자화된 변환 계수 블록을 생성할 수 있다. 양자화 유닛 (208) 은 현재 블록과 연관된 양자화 파라미터 (QP) 값에 따라 변환 계수 블록의 변환 계수들을 양자화할 수 있다. 비디오 인코더 (200) (예를 들어, 모드 선택 유닛 (202) 를 통해) 는 CU 와 연관된 QP 값을 조정함으로써 현재 블록과 연관된 변환 계수 블록들에 적용된 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 초래할 수도 있고, 따라서 양자화된 변환 계수는 변환 처리 유닛 (206) 에 의해 생성된 원래의 변환 계수보다 더 낮은 정밀도를 가질 수 있다.
역양자화 유닛 (210) 및 역변환 처리 유닛 (212) 은, 변환 계수 블록으로부터 레지듀얼 블록을 재구성하기 위해, 양자화된 변환 계수 블록에 역양자화 및 역변환을 각각 적용할 수 있다. 재구성 유닛 (214) 은 재구성된 레지듀얼 블록 및 모드 선택 유닛 (202) 에 의해 생성된 예측 블록에 기초하여 (잠재적으로 어느 정도의 왜곡이 있음에도 불구하고) 현재 블록에 대응하는 재구성된 블록을 생성할 수 있다. 예를 들어, 재구성 유닛 (214) 은 재구성된 레지듀얼 블록의 샘플을 모드 선택 유닛 (202) 에 의해 생성된 예측 블록으로부터의 대응하는 샘플에 부가하여, 재구성된 블록을 생성할 수도 있다.
필터 유닛 (216) 은 재구성된 블록에 대해 하나 이상의 필터 작업을 수행할 수 있다. 예를 들어, 필터 유닛 (216) 은 CUs 의 에지들을 따라 블록성 아티팩트를 감소시키기 위해 디블로킹 작업을 수행할 수도 있다. 일부 예들에서, 필터 유닛 (216) 의 작업들은 스킵될 수도 있다.
비디오 인코더 (200) 는 재구성된 블록을 DPB (218) 에 저장한다. 예를 들어, 필터 유닛 (216) 의 작업이 필요하지 않은 예들에서, 재구성 유닛 (214) 은 재구성된 블록들을 DPB (218) 에 저장할 수도 있다. 필터 유닛 (216) 의 작업이 필요한 예들에서, 필터 유닛 (216) 은 필터링된 재구성된 블록을 DPB (218) 에 저장할 수 있다. 모션 추정 유닛 (222) 및 모션 보상 유닛 (224) 은 재구성된 (및 잠재적으로 필터링된) 블록으로부터 형성된, DPB (218) 로부터의 참조 픽쳐를 검색하여, 후속적으로 인코딩된 픽쳐의 블록을 인터-예측할 수도 있다. 또한, 인트라-예측 유닛 (226) 은 현재 픽쳐의 DPB (218) 에서의 재구성된 블록을 사용하여, 현재 픽쳐의 다른 블록을 인트라-예측할 수도 있다.
일반적으로, 엔트로피 인코딩 유닛 (220) 은 비디오 인코더 (200) 의 다른 기능적 컴포넌트들로부터 수신된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (220) 은 양자화 유닛 (208) 으로부터 양자화된 변환 계수 블록들을 엔트로피 인코딩할 수도 있다. 다른 예로서, 엔트로피 인코딩 유닛 (220) 은 모드 선택 유닛 (202) 으로부터의 예측 신택스 엘리먼트 (예를 들어, 인터-예측을 위한 모션 정보 또는 인트라-예측을 위한 인트라-모드 정보) 를 엔트로피 인코딩할 수 있다. 엔트로피 인코딩 유닛 (220) 은 비디오 데이터의 또 다른 예인 신택스 엘리먼트상의 하나 이상의 엔트로피 인코딩 작업을 수행하여, 엔트로피-인코딩된 데이터를 생성할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (220) 은 컨텍스트-적응 가변 길이 코딩 (CAVLC) 작업, CABAC 작업, V2V (variable-to-variable) 길이 코딩 작업, 신택스-기반 컨텍스트-적응 이진 산술 코딩 (SBAC) 작업, PIPE (Probability Interval Partitioning Entropy) 코딩 작업, Exponential-Golomb 인코딩 작업, 또는 데이터에 대한 다른 유형의 엔트로피 인코딩 작업을 수행할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (220) 은 신택스 엘리먼트들이 엔트로피 인코딩되지 않은 바이패스 모드에서 동작할 수도 있다.
비디오 인코더 (200) 는 슬라이스 또는 픽쳐의 블록들을 재구성하는데 필요한 엔트로피 인코딩된 신택스 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다. 특히, 엔트로피 인코딩 유닛 (220) 은 비트스트림을 출력할 수도 있다.
위에서 설명한 작업들은 블록에 대해 설명된다. 그러한 설명은 루마 코딩 블록 및/또는 크로마 코딩 블록에 대한 작업으로서 이해되어야 한다. 위에서 설명된 바와 같이, 일부 예들에서, 루마 코딩 블록 및 크로마 코딩 블록들은 CU 의 루마 및 크로마 컴포넌트들이다. 일부 예들에서, 루마 코딩 블록 및 크로마 코딩 블록들은 PU 의 루마 및 크로마 컴포넌트들이다.
일부 예들에서, 루마 코딩 블록에 대해 수행된 작업들은 크로마 코딩 블록들에 대해 반복될 필요가 없다. 일 예로서, 루마 코딩 블록에 대한 모션 벡터 (MV) 및 참조 픽쳐를 식별하기 위한 작업은 크로마 블록에 대한 MV 및 참조 픽쳐를 식별하기 위해 반복될 필요가 없다. 오히려, 루마 코딩 블록에 대한 MV 는 크로마 블록에 대한 MV 를 결정하기 위해 스케일링될 수 있고, 참조 픽쳐는 동일할 수 있다. 다른 예로서, 인트라-예측 프로세스는 루마 코딩 블록 및 크로마 코딩 블록에 대해 동일할 수 있다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 동적 범위 조정 (DRA) 을 수행하고 동적 범위 조정에 기반하여 비디오 데이터를 인코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 비디오 데이터의 제한된 비트스트림을 이용하는 것을 포함한다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기반하여 비디오 데이터를 인코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 지수 함수 또는 로그 함수의 정수 근사치를 결정하는 것을 포함한다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기반하여 비디오 데이터를 인코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 지수 함수 또는 로그 함수의 서브-샘플링된 표현을 결정하는 것을 포함한다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 정확하게 도표화되지 않은 스케일 값 또는 QP 값에 기반하여 스케일 값 또는 양자화 파라미터 (QP) 값이 정확하게 도표화되었는지를 결정하고, 선형 보간을 통해 지수 함수 또는 로그 함수를 근사화하고, 근사화에 기반하여 추정된 스케일 값 또는 QP 값을 결정하고, 추정된 스케일 값 또는 QP 값에 기반으로 비디오 데이터를 인코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타낸다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기반하여 비디오 데이터를 인코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 정수 값만을 사용하여 스케일 값들 또는 QP 값들 사이를 변환하는 것을 포함한다.
비디오 인코더 (200) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 본 개시물의 기술들 중 임의의 것 또는 임의의 조합을 수행하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 인코딩하도록 구성된 장치의 예를 나타낸다.
도 3 은 본 개시물의 기술들을 수행할 수도 있는 예시적인 비디오 디코더 (300) 를 예시하는 블록도이다. 도 3 은 설명의 목적으로 제공되며, 본 개시에서 광범위하게 예시되고 설명된 바와 같은 기술을 제한하지 않는다. 설명의 목적을 위해, 본 개시물은 EVC, VVC (ITU-T H.266, 개발 중), 및 HEVC (ITU-T H.265) 의 기술에 따른 비디오 디코더 (300) 를 설명한다. 그러나, 본 개시물의 기술들은 다른 비디오 코딩 표준들로 구성된 비디오 코딩 장치들에 의해 수행될 수도 있다.
도 3 의 예에서, 비디오 디코더 (300) 는 코딩된 픽쳐 버퍼 (CPB) 메모리 (320), 엔트로피 디코딩 유닛 (302), 예측 처리 유닛 (304), 역양자화 유닛 (306), 역변환 처리 유닛 (308), 재구성 유닛 (310), 필터 유닛 (312), 및 디코딩된 픽쳐 버퍼 (DPB) (314) 를 포함한다. CPB 메모리 (320), 엔트로피 디코딩 유닛 (302), 예측 처리 유닛 (304), 역양자화 유닛 (306), 역변환 처리 유닛 (308), 재구성 유닛 (310), 필터 유닛 (312), 및 DPB (314) 중 임의의 것 또는 전부는 하나 이상의 프로세서 또는 처리 회로에서 구현될 수도 있다. 예를 들어, 비디오 디코더 (300) 의 유닛은 하드웨어 회로의 일부로서 또는 FPGA 의 프로세서, ASIC 의 일부로서 하나 이상의 회로 또는 논리 요소로서 구현될 수도 있다. 더욱이, 비디오 디코더 (300) 는 이들 및 다른 기능을 수행하기 위해 추가적인 또는 대안적인 프로세서 또는 처리 회로를 포함할 수 있다.
예측 처리 유닛 (304) 은 모션 보상 유닛 (316) 및 인트라-예측 유닛 (318) 을 포함한다. 예측 처리 유닛 (304) 은 다른 예측 모드들에 따라 예측을 수행하기 위한 추가 유닛들을 포함할 수 있다. 예로서, 예측 처리 유닛 (304) 은 팔레트 유닛, 인트라-블록 복사 유닛 (모션 보상 유닛 (316) 의 일부를 형성할 수 있음), 아핀 유닛, 선형 모델 (LM) 유닛 등을 포함할 수 있다. 다른 예들에서, 비디오 디코더 (300) 는 더 많거나 더 적거나 또는 상이한 기능적 컴포넌트들을 포함할 수도 있다.
CPB 메모리 (320) 는 비디오 디코더 (300) 의 컴포넌트들에 의해 디코딩될 비디오 데이터, 예컨대 인코딩된 비디오 비트스트림을 저장할 수 있다. CPB 메모리 (320) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터-판독가능 매체 (110) (도 1) 로부터 획득될 수 있다. CPB 메모리 (320) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터 (예를 들어, 신택스 엘리먼트들) 를 저장하는 CPB 를 포함할 수 있다. 또한, CPB 메모리 (320) 는 비디오 디코더 (300) 의 다양한 유닛들로부터의 출력을 나타내는 임시 데이터와 같은 코딩된 픽쳐의 신택스 엘리먼트 이외의 비디오 데이터를 저장할 수도 있다. DPB (314) 는 일반적으로 인코딩된 비디오 비트스트림의 픽쳐 또는 후속 데이터를 디코딩할 때에 참조 비디오 데이터로서 사용하고/하거나 비디오 디코더 (300) 가 출력할 수 있는 디코딩된 픽쳐를 저장한다. CPB 메모리 (320) 및 DPB (314) 는 SDRAM, MRAM, RRAM, 또는 다른 유형의 메모리 장치를 포함하는 DRAM 과 같은 다양한 메모리 장치들 중 임의의 것에 의해 형성될 수 있다. CPB 메모리 (320) 및 DPB (314) 는 동일한 메모리 장치 또는 별도의 메모리 장치에 의해 제공될 수 있다. 다양한 예들에서, CPB 메모리 (320) 는 비디오 디코더 (300) 의 다른 컴포넌트들과 온-칩일 수도 있거나, 그러한 컴포넌트들에 대해 오프-칩일 수도 있다.
추가적으로 또는 대안적으로, 일부 예들에서, 비디오 디코더 (300) 는 메모리 (120) (도 1) 로부터 코딩된 비디오 데이터를 검색할 수도 있다. 즉, 메모리 (120) 는 CPB 메모리 (320) 로 위에서 논의된 바와 같이 데이터를 저장할 수 있다. 마찬가지로, 메모리 (120) 는 비디오 디코더 (300) 의 기능의 일부 또는 전부가 비디오 디코더 (300) 의 처리 회로에 의해 수행되는 소프트웨어에서 구현될 때에 비디오 디코더 (300) 에 의해 실행되는 명령을 저장할 수도 있다.
도 3 에 도시된 다양한 유닛들은 비디오 디코더 (300) 에 의해 수행되는 작업을 이해하는 것을 돕기 위해 예시된다. 유닛들은 고정-기능 회로, 프로그램가능 회로, 또는 이들의 조합으로서 구현될 수 있다. 도 2 와 유사하게, 고정-기능 회로는 특정 기능을 제공하는 회로를 말하며, 수행할 수 있는 작업이 미리 설정되어 있다. 프로그램가능 회로는 다양한 작업을 수행하도록 프로그래밍할 수 있는 회로를 말하며, 수행할 수 있는 작업에서 유연한 기능을 제공한다. 예를 들어, 프로그램가능 회로는 프로그램가능 회로로 하여금 소프트웨어 또는 펌웨어의 명령에 의해 정의된 방식으로 작동하게 하는 소프트웨어 또는 펌웨어를 실행할 수 있다. 고정-기능 회로는 (예컨대, 파라미터 또는 출력 파라미터를 수신하도록) 소프트웨어 명령을 실행할 수 있지만, 고정-기능 회로가 수행하는 작업 유형은 일반적으로 변경할 수 없다. 일부 예에서, 유닛들 중 하나 이상은 별개의 회로 블록 (고정-기능 또는 프로그램가능) 일 수 있고, 일부 예에서, 유닛들 중 하나 이상은 집적 회로일 수 있다.
비디오 디코더 (300) 는 ALUs, EFUs, 디지털 회로, 아날로그 회로, 및/또는 프로그램가능 회로로부터 형성된 프로그램가능 코어를 포함할 수 있다. 비디오 디코더 (300) 의 작업이 프로그램가능 회로 상에서 실행하는 소프트웨어에 의해 수행되는 예에서, 온-칩 또는 오프-칩 메모리는 비디오 디코더 (300) 가 수신하고 실행하는 소프트웨어의 명령 (예를 들어, 객체 코드) 을 저장할 수 있다.
엔트로피 디코딩 유닛 (302) 은 CPB 로부터 인코딩된 비디오 데이터를 수신하고, 신택스 엘리먼트들을 재생하기 위해 비디오 데이터를 엔트로피 디코딩할 수도 있다. 예측 처리 유닛 (304), 역양자화 유닛 (306), 역변환 처리 유닛 (308), 재구성 유닛 (310), 및 필터 유닛 (312) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다.
일반적으로, 비디오 디코더 (300) 는 블록별 단위로 픽쳐를 재구성한다. 비디오 디코더 (300) 는 각각의 블록에 대해 개별적으로 재구성 작업을 수행할 수도 있다 (여기서 현재 재구성되고 있는, 즉 디코딩되는 블록은 "현재 블록" 으로 지칭될 수도 있음).
엔트로피 디코딩 유닛 (302) 은 양자화 파라미터 (QP) 및/또는 변환 모드 표시(들)와 같은 변환 정보 뿐만 아니라 양자화된 변환 계수 블록의 양자화된 변환 계수들을 정의하는 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 역양자화 유닛 (306) 은 양자화의 정도를 결정하기 위해 양자화된 변환 계수 블록과 연관된 QP 를 사용할 수도 있고, 마찬가지로 역양자화 유닛 (306) 이 적용할 역양자화의 정도를 결정할 수도 있다. 역양자화 유닛 (306) 은, 예를 들어, 양자화된 변환 계수들을 역양자화하기 위해 비트별 좌측-시프트 작업을 수행할 수 있다. 역 양자화 유닛 (306) 은 이에 의해 변환 계수를 포함하는 변환 계수 블록을 형성할 수 있다.
역양자화 유닛 (306) 이 변환 계수 블록을 형성한 후, 역변환 처리 유닛 (308) 은 현재 블록과 연관된 레지듀얼 블록을 생성하기 위해 변환 계수 블록에 하나 이상의 역변환을 적용할 수 있다. 예를 들어, 역변환 처리 유닛 (308) 은 역 DCT, 역 정수 변환, 역 KLT (Karhunen-Loeve Transform), 역 회전 변환, 역 방향 변환, 또는 다른 역변환을 변환 계수 블록에 적용할 수도 있다.
또한, 예측 처리 유닛 (304) 은 엔트로피 디코딩 유닛 (302) 에 의해 엔트로피 디코딩되었던 예측 정보 신택스 엘리먼트에 따라 예측 블록을 생성한다. 예를 들어, 예측 정보 신택스 엘리먼트가 현재 블록이 인터-예측이라고 지시한 경우, 모션 보상 유닛 (316) 은 예측 블록을 생성할 수 있다. 이 경우, 예측 정보 신택스 엘리먼트는 참조 블록을 검색할 DPB (314) 의 참조 픽쳐뿐만 아니라 현재 픽쳐에서 현재 블록의 위치에 대한 참조 픽쳐 내의 참조 블록의 위치를 식별하는 모션 벡터를 나타낼 수 있다. 모션 보상 유닛 (316) 은 일반적으로 모션 보상 유닛 (224) (도 2) 과 관련하여 설명된 것과 실질적으로 유사한 방식으로 인터-예측 프로세스를 수행할 수 있다.
다른 예로서, 예측 정보 신택스 엘리먼트가 현재 블록이 인트라-예측된 것을 나타내면, 인트라-예측 유닛 (318) 은 예측 정보 신택스 엘리먼트에 의해 지시되는 인트라-예측 모드에 따라 예측 블록을 생성할 수 있다. 다시, 인트라-예측 유닛 (318) 은 일반적으로 인트라-예측 유닛 (226) (도 2) 과 관련하여 설명된 것과 실질적으로 유사한 방식으로 인트라-예측 프로세스를 수행할 수 있다. 인트라 예측 유닛 (318) 은 DPB (314) 로부터 현재 블록에 대한 이웃 샘플들의 데이터를 검색할 수 있다.
재구성 유닛 (310) 은 예측 블록 및 레지듀얼 블록을 이용하여 현재 블록을 재구성할 수 있다. 예를 들어, 재구성 유닛 (310) 은 현재 블록을 재구성하기 위해 예측 블록의 대응하는 샘플들에 레지듀얼 블록의 샘플들을 추가할 수 있다.
필터 유닛 (312) 은 재구성된 블록에 대해 하나 이상의 필터 작업을 수행할 수 있다. 예를 들어, 필터 유닛 (312) 은 재구성된 블록의 에지들을 따라 블록성 아티팩트를 감소시키기 위해 디블록킹 작업을 수행할 수 있다. 필터 유닛 (312) 의 작업은 모든 예에서 반드시 수행되는 것은 아니다.
비디오 디코더 (300) 는 재구성된 블록들을 DPB (314) 에 저장할 수도 있다. 예를 들어, 필터 유닛 (312) 의 작업들이 수행되지 않는 예들에서, 재구성 유닛 (310) 은 DPB (314) 에 재구성된 블록들을 저장할 수도 있다. 필터 유닛 (312) 의 작업들이 수행되는 예들에서, 필터 유닛 (312) 은 필터링된 재구성된 블록들을 DPB (314) 에 저장할 수 있다. 위에서 논의된 바와 같이, DPB (314) 는 인트라-예측을 위한 현재 픽쳐의 샘플들 및 후속 모션 보상을 위한 이전에 디코딩된 픽쳐들의 샘플들과 같은 참조 정보를 예측 처리 유닛 (304) 에 제공할 수 있다. 더욱이, 비디오 디코더 (300) 는 도 1 의 디스플레이 장치 (118) 와 같은 디스플레이 장치 상의 후속 표시를 위해 DPB (314) 로부터 디코딩된 픽쳐들 (예를 들어, 디코딩된 비디오) 을 출력할 수도 있다. DPB (314) 로부터 디코딩된 픽쳐를 출력하기 전에, 비디오 디코더 (300) 는 디코딩된 픽쳐에 DRA 유닛 (322) 의 DRA 를 적용할 수도 있다. DRA 를 적용하는 것의 일부로서, DRA 유닛 (322) 은 루마 DRA 스케일 값에 기초하여 루마 조정된 크로마 DRA 스케일 값을 결정할 수 있다. DRA 유닛 (322) 은 루마 조정된 크로마 DRA 스케일에 기초하여 크로마 QP 를 결정할 수 있다. DRA 유닛 (322) 은 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정할 수 있다. DRA 유닛 (322) 은 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정할 수도 있다. DRA 유닛 (322) 은 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정할 수 있다. DRA 유닛 (322) 은 또한 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리할 수도 있다.
이러한 방식으로, 비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 루마 DRA 스케일 값에 기초하여 크로마 DRA 스케일 값을 조정하도록, 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 QP를 결정하도록, 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록, 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록, 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록, 그리고 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 디코딩 장치의 예를 나타낸다.
비디오 디코더 (300) 는 또한 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에 구현되고 비디오 데이터에 대해 동적 범위 조정 (DRA) 을 수행하고 동적 범위 조정에 기초한 비디오 데이터를 디코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 디코딩 장치의 예를 나타내고, DRA 를 수행하는 것은 비디오 데이터의 제한된 비트스트림을 이용하는 것을 포함한다.
비디오 디코더 (300) 는 또한 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기초한 비디오 데이터를 디코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 디코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 지수 함수 또는 로그 함수의 정수 근사치를 결정하는 것을 포함한다.
비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기초하여 비디오 데이터를 디코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 디코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 지수 함수 또는 로그 함수의 서브-샘플링된 표현을 결정하는 것을 포함한다.
비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 정확하게 도표화되지 않은 스케일 값 또는 QP 값을 기준으로 스케일 값 또는 양자화 파라미터 (QP) 가 정확하게 도표화되었는지 여부를 결정하도록, 선형 보간을 통해 지수 함수 또는 로그 함수를 근사화하도록, 근사화에 따라 추정된 스케일 값 또는 QP 값을 결정하도록, 그리고 추정된 스케일 값 또는 QP 값에 기반하여 비디오 데이터를 디코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 디코딩하도록 구성된 장치의 예를 나타낸다.
비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 비디오 데이터에 대해 DRA 를 수행하고 DRA 에 기초하여 비디오 데이터를 디코딩하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 디코딩하도록 구성된 장치의 예를 나타내고, DRA 를 수행하는 것은 정수 값만을 사용하여 스케일 값 또는 QP 값 사이를 변환하는 것을 포함한다.
비디오 디코더 (300) 는 비디오 데이터를 저장하도록 구성된 메모리, 및 회로에서 구현되고 본 개시물의 기술들 중 임의의 것 또는 임의의 조합을 수행하도록 구성된 하나 이상의 처리 유닛을 포함하는 비디오 데이터를 디코딩하도록 구성된 장치의 예를 나타낸다.
HDR (High Dynamic Range) 및 WCG (Wide Color Gamut) 가 이제 논의된다. 차세대 비디오 애플리케이션은 HDR (High Dynamic Range) 및 WCG (Wide Color Gamut) 로 캡처된 풍경을 나타내는 비디오 데이터로 작동할 수 있다. 활용되는 다이내믹 레인지와 색 공간의 파라미터는 비디오 콘텐츠의 두 가지 독립적인 속성이며, 디지털 텔레비전 및 멀티미디어 서비스를 위한 사양은 여러 국제 표준에 의해 정의된다. 예를 들어, ITU-R Rec. 709 는 HDTV, 예컨대 표준 동적 범위 (SDR) 및 표준 색 공간 (SCG) 에 대한 파라미터를 정의하고 ITU-R Rec.2020 은 HDR 및 WCG 와 같은 UHDTV 파라미터를 지정한다. 다른 시스템에서 이러한 속성을 지정하는 다른 SDO (표준 개발 조직) 문서도 있고, 예를 들어 P3 색 공간은 SMPTE-231-2 에 정의되어 있고 HDR 의 일부 파라미터는 STMPTE-2084 에 정의되어 있다. 비디오 데이터의 동적 범위 및 색 공간에 대한 간략한 설명은 다음과 같다.
동적 범위는 일반적으로 비디오 신호의 최소 밝기와 최대 밝기 사이의 비율로서 정의된다. 동적 범위는 'f-스톱' 의 관점에서 측정되며, 여기서 하나의 f-스톱은 신호의 동적 범위의 두 배에 해당한다. MPEG 의 정의에서, HDR 콘텐츠는 16 f-스톱 이상의 밝기 변화를 특징으로 하는 콘텐츠이다. 일부 정의에서는, 10 내지 16 f-스톱들 사이의 레벨이 중간 동적 범위로서 간주되지만, 다른 정의에서는 HDR 로 간주된다. 동시에, 인간 시각 시스템 (HVS) 은 훨씬 더 큰 동적 범위를 인지할 수 있지만, HVS 는 소위 동시 범위를 좁히는 적응 메커니즘을 포함한다.
비디오 애플리케이션 및 서비스는 Rec.709 에 의해 규제될 수 있으며, 일반적으로 10 f-스톱 미만을 유도하는 m2 (종종 "니트"라고 함) 당 약 0.1 내지 100 칸델라 (cd) 의 밝기 (또는 휘도) 범위를 지원하는 SDR 을 제공한다. 차세대 비디오 서비스는 최대 16 f-스톱의 동적 범위를 제공할 것으로 예상되며, 일부 초기 파라미터는 SMPTE-2084 및 Rec.2020 에 지정되었다.
도 4 는 HDTV 에서 SDR 의 예시적인 다이내믹 레인지, UHDTV 에서 예상되는 HDR 및 HVS 다이내믹 레인지를 예시하는 개념도이다. 예를 들어, 그래프 (400) 는 별빛, 달빛, 실내 및 햇빛의 휘도를 대수 규모의 니트 단위로 보여준다. 그래프 (402) 는 그래프 (400) 에 대한 인간 시각 및 HVS 동시 동적 범위 (정상-상태 동적 범위라고도 함) 를 보여준다. 그래프 (404) 는 그래프 (400) 및 그래프 (402) 에 대한 디스플레이에 대한 HDTV 의 SDR 을 묘사한다. 예를 들어, 디스플레이에 대한 SDR 은 달빛에서 실내까지의 휘도 범위의 일부와 중첩될 수 있고 HVS 동시 범위의 일부와 중첩될 수 있다. 그래프 (406) 는 그래프 (400-404) 와 관련하여 디스플레이용 UHDTV 의 HDR 을 묘사한다. 알 수 있는 바와 같이, HDR 은 그래프 (404) 의 SDR 보다 훨씬 크고 그래프 (404) 의 SDR 보다 더 많은 HVS 동시 범위를 포함한다.
도 5 는 예시적인 색공간 그래프를 나타내는 개념도이다. HDR 이외의 보다 사실적인 비디오 경험을 이끌어내는 측면은 일반적으로 색 공간으로 정의되는 색 차원이다. 도 5 의 예에서, SDR 색공간 (BT.709 색 빨강, 녹색 및 파랑 원색에 기반한 트라이앵글 500) 의 시각적 표시, 및 UHDTV (BT.2020 색 빨강, 녹색 및 파랑 원색에 기반한 트라이앵글 502) 에 대한 더 넓은 색공간. 도 5 는 또한 자연 색상의 한계를 나타내는 소위 스펙트럼 궤적 (혀 모양 영역 (504) 으로 구분됨) 을 묘사한다. 도 5 에 도시된 바와 같이, BT.709 (트라이앵글 500) 에서 BT.2020 (트라이앵글 502) 원색으로 이동하여 약 70% 더 많은 색상으로 UHDTV 서비스를 제공하는 것을 목표로 한다. D65 로 표시된 원은 지정된 사양에 대한 흰색을 지정한다.
색 공간 사양의 몇 가지 예가 표 1 에 나와 있다.
Figure pct00001
HDR 비디오 데이터의 압축이 이제 논의된다. HDR/WCG 는 일반적으로 4:4:4 크로마 포맷과 매우 넓은 색 공간 (예컨대, XYZ) 을 사용하여 컴포넌트당 매우 높은 정밀도 (부동 소수점 정밀도로 저장될 수도 있음) 로 획득 및 저장된다. 이 표현은 높은 정밀도를 목표로 하며 수학적으로 (거의) 무손실이다. 그러나, 이 포맷은 많은 중복을 특징으로 하며 압축 목적에 적합하지 않다. HVS-기반 가정을 사용하는 더 낮은 정밀도 포맷은 일반적으로 최첨단 비디오 애플리케이션에 사용된다.
도 6 은 예시적인 포맷 전환 기술을 예시하는 블록도이다. 비디오 인코더 (200) 는 선형 RGB (510) 를 HDR' 데이터 (518) 로 변환하기 위해 포맷 전환 기술을 수행할 수 있다. 압축을 위한 비디오 데이터 포맷 전환 프로세스의 일례는 도 6 에 도시된 바와 같이 3개의 주요 프로세스를 포함한다. 도 6 의 기술은 소스 디바이스 (12) (비디오 인코더 (200) 의 예일 수 있음) 에 의해 수행될 수 있다. 선형 RGB 데이터 (510) 는 HDR/WCG 비디오 데이터일 수 있고 부동 소수점 표현으로 저장될 수 있다. 선형 RGB 데이터 (510) 는 동적 범위 압축을 위해 비선형 전달 함수 (TF) (512) 를 사용하여 압축될 수 있다. 전달 함수 (512) 는 임의의 수의 비선형 전달 함수, 예를 들어 SMPTE-2084 에 정의된 지각 양자화기 (PQ) TF 를 사용하여 선형 RGB 데이터 (510) 를 압축할 수 있다. 일부 예들에서, 색상 전환 프로세스 (514) 는 압축된 데이터를 하이브리드 비디오 인코더에 의한 압축에 더 적합한 보다 컴팩트하거나 강력한 색 공간 (예를 들어, YUV 또는 YCrCb 색 공간) 으로 변환한다. 비디오 인코더 (200) 와 같은 하이브리드 비디오 인코더는 비디오 데이터를 인코딩할 때 예측을 활용하는 비디오 인코더이다. 이 더 컴팩트한 데이터는 전환된 HDR' 데이터 (518) 를 생성하기 위해 부동-정수 표현 양자화 유닛 (516) 을 사용하여 양자화될 수 있다. 이 예에서 HDR' 데이터 (518) 는 정수 표현이다. HDR' 데이터는 이제 하이브리드 비디오 인코더 (예컨대, 비디오 인코더 (200)) 에 의한 압축에 더 적합한 포맷이다. 도 6 에 도시된 프로세스의 순서는 예로서 제공되며, 다른 애플리케이션에서는 달라질 수 있다. 예를 들어, 색 전환이 TF 프로세스보다 먼저 수행될 수 있다. 또한 추가 처리, 예를 들어 공간 서브샘플링이 색 컴포넌트에 적용될 수 있다.
도 7 은 예시적인 역 HDR/WCG 전환을 예시하는 개념도이다. 도 7 의 기술은 목적지 디바이스 (14) (비디오 디코더 (300) 의 예일 수 있음) 에 의해 수행될 수 있다. 변환된 HDR' 데이터 (520) 는 하이브리드 비디오 디코더 (예를 들어, 비디오 디코더 (300)) 를 사용하여 비디오 데이터의 디코딩을 통해 목적지 디바이스 (14) 에서 획득될 수 있다. 하이브리드 비디오 디코더는 비디오 데이터를 디코딩할 때 예측을 활용하는 비디오 디코더이다. 목적지 디바이스 (14) 는 역양자화 유닛 (522) 을 통해 HDR' 데이터 (520) 를 역양자화할 수 있다. 그 다음, 역 색 전환 프로세스 (524) 가 역양자화된 HDR' 데이터에 적용될 수 있다. 역 색 전환 프로세스 (524) 는 색 전환 프로세스 (514) 의 역일 수 있다. 예를 들어, 역 색 전환 프로세스 (524) 는 HDR' 데이터를 YCrCb 포맷에서 RGB 포맷으로 다시 변환할 수 있다. 역 전달 함수 (526) 는 선형 RGB 데이터 (528) 를 재생성하기 위해 전달 함수 (512) 에 의해 압축되었던 동적 범위를 다시 추가하기 위해 데이터에 적용될 수 있다.
도 6 및 도 7 의 기술들의 순서는 예시로서 제공되며, 실제 애플리케이션에서는 순서가 다를 수 있으며, 예를 들어 색 전환이 TF 모듈에 선행할 수 있을 뿐만 아니라 추가 처리, 예를 들어 공간 서브샘플링이 색 컴포넌트에 적용될 수 있다. 도 6 및 도 7 의 기술들의 이들 3가지 컴포넌트는 아래에서 보다 상세히 설명한다.
도 6 에 도시된 기술을 이제 더 자세히 설명한다. TF 가 먼저 설명된다. 비디오 인코더 (200) 는 비디오 데이터의 동적 범위를 압축하고 제한된 수의 비트들로 비디오 데이터를 표현하는 것을 가능하게 하기 위해 비디오 데이터에 TF 를 적용할 수도 있다. 이 함수는 일반적으로 Rec.709 의 SDR에 대해 지정된 최종-사용자 디스플레이의 EOTF (electro-optical transfer function) 의 역을 반영하거나 HDR에 대해 SMPTE-2084 에 지정된 PQ TF 에서와 같이 밝기 변화에 대한 HVS 인식을 근사화하는 1차원 (1D) 비선형 함수이다. OETF (opto-electronic transfer function) 의 역 프로세스는 EOTF 이며, 이는 코드 레벨을 다시 휘도로 맵핑한다. 예를 들어, 비디오 디코더 (300) 는 비디오 인코더 (200) 에 의해 적용되는 EOTF 에 대응하는 OETF 를 적용할 수도 있다.
도 8 은 EOTFs 의 일 예를 나타내는 개념도이다. 도 8 의 그래프 (600) 는 x축 상의 코드 레벨 및 y축 상의 선형 휘도의 유닛 및 예시적인 EOTFs 를 도시한다.
사양, ST2084 는 EOTF 애플리케이션을 다음과 같이 정의한다: TF 는 R'G'B'의 비선형 표현을 초래하는 정규화된 선형 R, G, B 값들에 적용된다. ST2084 는 10000nits (cd/m2) 의 피크 밝기와 관련된 NORM=10000 으로 정규화를 정의한다.
Figure pct00002
도 9 는 정규화된 선형 입력 값들에 기초한 예시적인 정규화된 출력 비선형 값들을 예시하는 그래픽 다이어그램이다. 도 9 의 그래프 (700) 는 PQ EOTF 를 이용하여 0..1 의 범위로 정규화된 입력값들 (선형 색상 값) 과 정규화된 출력값들 (비선형 색상 값) 을 나타낸다. 도 9 에 도시된 바와 같이, 입력 신호의 동적 범위의 1퍼센트 (0.01) (낮은 조도) 는 출력 신호의 동적 범위의 50% (0.5) 로 전환된다.
일반적으로 EOTF 는 부동 소수점 정확도를 갖는 함수로 정의된다. 따라서, 비디오 디코더 (300) 가 대응하는 OETF 의 역 TF 를 적용한다면 이러한 비선형성을 갖는 신호에 에러가 도입되지 않는다. ST2084 에 지정된 역 TF (OETF) 는 inversePQ 함수로서 정의된다:
Figure pct00003
부동 소수점 정확도로, EOTF 및 OETF 의 순차적 적용은 에러 없이 완벽한 재구성을 제공할 수 있다. 그러나, 부동 소수점 표현은 고정 소수점 표현과 비교할 때 상대적으로 많은 수의 비트들의 사용을 포함할 수 있기 때문에 이러한 표현은 스트리밍 또는 방송 서비스에 최적이 아니다. 비선형 R'G'B' 데이터의 고정 비트 정확도를 사용하는 보다 컴팩트한 표현은 여기에서 나중에 설명한다.
EOTF 및 OETF 는 활발한 연구 대상이며, 일부 HDR 비디오 코딩 시스템에서 사용되는 TF 는 ST2084 와 다를 수 있다.
이제 색 변환 기술이 설명된다. RGB 데이터는 일반적으로 이미지 캡처 센서에서 생성되기 때문에 RGB 데이터는 일반적으로 입력으로 사용된다. 그러나, RGB 색 공간은 RGB 컴포넌트들 간의 중복성이 높아 컴팩트한 표현에 적합하지 않을 수 있다. 보다 컴팩트하고 강력한 표현을 달성하기 위해, RGB 컴포넌트들은 일반적으로 YCbCr 과 같이 압축에 더 적합한 더 상관 관계가 없는 색 공간으로 전환된다. 이 색 공간은 상이한 관련되지 않은 컴포넌트들에서 휘도 및 색 정보의 형태로 밝기를 분리한다.
최신 비디오 코딩 시스템에서, 일반적으로 사용되는 색 공간은 ITU-R BT.709 또는 ITU-R BT.2020 에 지정된 YCbCr 이다. BT.709 표준의 YCbCr 색 공간은 R'G'B' 로부터 Y'CbCr (비-일정 휘도 표현) 으로의 다음의 전환 프로세스를 지정한다:
Figure pct00004
위의 것은 Cb 및 Cr 컴포넌트들에 대한 분할을 피하는 다음과 같은 근사 전환을 사용하여 또한 구현될 수도 있다:
Figure pct00005
ITU-R BT.2020 표준은 R'G'B' 로부터 Y'CbCr (비-일정 휘도 표현) 으로의 다음의 전환 프로세스를 지정한다:
Figure pct00006
위의 것은 또한 Cb 및 Cr 성분에 대한 분할을 피하는 다음의 근사 전환을 사용하여 구현될 수 있다:
Figure pct00007
두 색 공간 모두 정규화된 상태로 유지되고, 따라서 범위 0...1 에서 정규화된 입력 값들에 대해 결과 값들이 범위 0..1 로 맵핑될 수 있다는 점에 유의해야 한다. 일반적으로, 부동 소수점 정확도로 구현된 색 변환은 완벽한 재구성을 제공하며, 따라서 이 프로세스가 무손실일 수 있다.
이제 양자화 (또는 고정 소수점 변환) 가 더 자세히 설명된다. 위에서 설명한 모든 처리 단계는 일반적으로 부동 소수점 정확도 표현으로 구현되며, 따라서 무손실로 간주될 수 있다. 그러나, 부동 소수점 정확도는 대부분의 소비자 전자 제품 애플리케이션에서 비용이 많이 드는 것으로 간주될 수 있다. 목표 색 공간에서의 입력 데이터는 목표 비트-심도 고정 소수점 정확도로 전환되어 대역폭과 메모리를 절약할 수 있다. 특정 연구에 따르면 PQ TF와 결합된 10-12 비트 정확도는 Just-Noticeable Difference 미만의 왜곡으로 16 f-스톱의 HDR 데이터를 제공하기에 충분하다. 10 비트 정확도로 표현된 데이터는 대부분의 최신 비디오 코딩 솔루션으로 추가로 코딩할 수 있다. 이 전환 프로세스는 신호 양자화를 포함하며 손실 코딩의 엘리먼트이며 전환된 데이터에 도입되는 부정확성의 소스이다.
YCbCr 과 같은 목표 색 공간의 코드 워드에 적용되는 이러한 양자화의 예는 다음과 같다. 부동 소수점 정확도로 표현되는 입력 값 YCbCr 은 Y 값에 대한 고정 비트-심도 BitDepthY 및 크로마 값 (Cb, Cr) 에 대한 BitDepthc 의 신호로 전환될 수 있다.
Figure pct00008
문서, Dynamic Range Adjustment SEI to enable High Dynamic Range video coding with Backward-Compatible Capability, D.Rusanovskyy, A. K. Ramasubramonian, D. Bugdayci, S. Lee, J. Sole, M. Karczewicz, VCEG document COM16-C 1027-E, 2015년 9월에서, 저자는 입력 값 x 의 중첩되지 않은 동적 범위 분할 (범위) {Ri} 의 그룹에 대해 정의된 조각별 선형 함수 f(x) 로서 동적 범위 조정 (DRA) 을 구현하는 것을 제안했고, i 는 0 에서 N-1 까지의 범위를 갖는 범위의 인덱스이고, N 은 DRA 함수를 정의하는 데 사용되는 범위 {Ri} 의 총 수이다. DRA 의 범위가 범위 Ri 에 속하는 최소 및 최대 x 값에 의해 정의된다고 가정하며, [xi,xi+1 -1], 여기서 xi 및 xi+1 은 각각 범위 Ri 및 Ri+1 의 최소값을 나타낸다. 비디오 (루마) 의 Y 색 컴포넌트에 적용되는 경우, DRA 함수 Sy 는 모든 x ∈[xi,xi+1 -1] 에 적용되는 스케일 Sy,i 와 오프셋 Oy,i 를 통해 정의되고, 따라서 Sy = {Sy,i,Oy,i} 이다.
따라서, 임의의 Ri 및 모든 x ∈[xi,xi+1 -1] 에 대해, 출력 값 X 는 다음과 같이 계산된다:
Figure pct00009
디코더 (예를 들어, 비디오 디코더 (300)) 에서 수행되는 루마 컴포넌트 Y 에 대한 역 DRA 맵핑 프로세스의 경우, DRA 함수 Sy 는 모든 X ∈[Xi,Xi+1 -1] 에 적용되는 스케일 Sy,i 및 오프셋 Oy,i 값들의 역에 의해 정의된다.
따라서, 임의의 Ri 및 모든 X ∈[Xi,Xi+1 -1] 에 대해, 재구성된 값 x 는 다음과 같이 계산된다:
Figure pct00010
크로마 컴포넌트 Cb 및 Cr 에 대한 순방향 DRA 맵핑 프로세스 (비디오 인코더 (200) 에 의해 수행됨) 는 다음과 같이 정의된다: 예는 범위 Ri 에 속하는 Cb 색 컴포넌트의 샘플을 나타내는 용어 "u" 로 주어지고, u ∈[ui, ui+1 -1], 따라서 Su = {Su,i,Ou,i} 이다:
Figure pct00011
여기서 Offset 은 2(bitdepth-1) 와 같으며 양극성 Cb, Cr 신호 오프셋을 나타낸다.
크로마 성분 Cb 및 Cr 에 대해 디코더, 예를 들어 비디오 디코더 (300) 에서 수행되는 역 DRA 맵핑 프로세스는 다음과 같이 정의된다: 예는 범위 Ri 에 속하는 리맵핑된 Cb 색 컴포넌트의 샘플을 나타내는 U 로 주어지고, U ∈[Ui, Ui+1 -1] 이다.
Figure pct00012
여기서 Offset 은 2(bitdepth-1) 와 같으며 양극성 Cb, Cr 신호 오프셋을 나타낸다.
이제 Luma-기반 크로마 스케일링 (LCS) 에 대해 설명한다. LCS 는 JCTVC-W0101 HDR CE2: Report on CE2.a-1 LCS, A.K. Ramasubramonian, J. Sole, D. Rusanovskyy, D. Bugdayci, M. Karczewicz 에서 처음 제안되었다. 그 논문에서는, 처리된 크로마 샘플과 관련된 밝기 정보를 활용하여 예를 들어 Cb 및 Cr 의 크로마 정보를 조정하는 기술이 개시되었다. 위에서 논의한 DRA 접근 방식과 유사하게, LCS 제안은 Cb 에 대한 스케일 팩터 Su 및 Cr 에 대한 Sv 인 크로마 샘플에 적용하는 것이었다. 그러나, 식 (8) 및 (9) 에서와 같이 크로마 값 u 또는 v 에 의해 액세스가능한 범위들 {Ri} 의 세트에 대해 DRA 함수를 조각별 선형 함수 Su = {Su,i,Ou,i} 로서 정의하는 대신에, LCS 접근법은 크로마 샘플에 대한 스케일 팩터를 유도하기 위해 루마 값 Y 를 활용하는 것을 제안했다. 비디오 인코더 (200) 는 다음 공식을 통해 크로마 샘플 u (또는 v) 의 순방향 LCS 맵핑을 수행할 수도 있다:
Figure pct00013
비디오 디코더 (300) 는 다음 공식을 통해 수행되는 역 LCS 프로세스를 수행할 수 있다:
Figure pct00014
더 자세하게, (x, y) 에 위치한 주어진 픽셀에 대해, 크로마 샘플 Cb (x, y) 또는 Cr (x, y) 는 픽셀의 루마 값 Y' (x, y) 에 의해 액세스되는 픽셀의 LCS 함수 SCb (또는 SCr) 로부터 유도된 팩터로 스케일링될 수도 있다.
순방향 LCS 로, 크로마 샘플의 경우, Cb (또는 Cr) 값 및 이들의 연관된 루마 값 Y' 는 크로마 스케일 함수 SCb (또는 SCr) 에 대한 입력일 수 있고, Cb 또는 Cr 은 식 14 에 나타낸 바와 같이 Cb' 및 Cr' 로 전환될 수 있다. 비디오 디코더 (300) 는 역 LCS를 적용할 수 있고, 재구성된 Cb' 또는 Cr' 는 식 (15) 에 나타낸 바와 같이 Cb 또는 Cr로 전환될 수 있다.
Figure pct00015
값 SCb(Y'(x,y)) 및 SCr(Y'(x,y)) 는 루마 조정된 크로마 DRA 스케일 값을 나타낸다.
도 10 은 LCS 함수의 일 예를 나타내는 그래픽도이다. 도 10 의 예에서의 LCS 함수 (800) 로, 더 작은 루마 값을 갖는 픽셀의 크로마 컴포넌트는 더 작은 스케일링 인자로 곱해진다.
이제, DRA 샘플 스케일링과 양자화 파라미터간의 관계에 대해 설명한다. 압축 비율을 조정하기 위해, HEVC 및 VVC 와 같은 블록 변환 기반 비디오 코딩 방식은 변환 계수에 적용되는 스칼라 양자화기를 사용한다. 스칼라는 다음과 같이 정의되는 QP 와 스칼라 양자화기 간의 관계로 양자화 파라미터 (QP) 로 제어된다:
Figure pct00016
일부 예들에서, 스케일은 스케일러라고도 할 수 있다.
역함수는 스칼라 양자화기와 HEVC 의 QP 사이의 관계를 다음과 같이 정의한다:
Figure pct00017
픽셀 데이터를 효과적으로 스케일링하고 변환 속성을 고려하는 DRA 는 변환 도메인에서 적용되는 스케일로 큰 클래스의 신호에 대해 맵핑될 수 있다. 따라서, 다음 관계가 정의된다:
Figure pct00018
여기서 dQP 는 입력 데이터에 DRA 를 배치하는 것에 의한 대략적인 QP 오프셋 (예컨대, HEVC 에 의해 도입됨) 이다.
디코더 QP 처리를 위한 DRA 스케일 보상이 이제 설명된다. 비디오 코덱에서 QP 처리를 보상하기 위해 색 컴포넌트에 대한 DRA 스케일을 조정할 수 있다.
3가지 색 컴포넌트 (예를 들어, Y, Cb, Cr) 에 대한 DRA 의 파라미터는 전술한 바와 같이 다음 변수를 통해 정의될 수 있다:
Figure pct00019
비디오 인코더 (200) 는 코딩된 비트스트림을 통해 픽셀 프로세싱에 관한 DRA 파라미터들을 시그널링할 수도 있고, 비디오 디코더 (300) 는 비트스트림에서 시그널링된 신택스 엘리먼트들로부터 DRA 파라미터들을 유도할 수도 있다. 이러한 DRA 파라미터는 변환 계수의 양자화를 설명하는 정보를 고려하여 추가로 조정된다.
Figure pct00020
여기서 QPx 는 주어진 픽셀 블록에 대해 코덱에 의해 수행되는 QP 조정 또는 조작이며 비트스트림의 디코더에 시그널링되거나 예컨대 예비 표로 작성된 정보와 같은 부가 정보로서 디코더에 제공되며 fun(.,.) 은 일부 기능적 의존성을 나타낸다.
이 프로세스의 출력은 디코딩된 샘플 (Cbdec,Crdec) 에 적용되는 조정된 DRA 파라미터 (DRA'Cb,DRA'Cr) 이다.
Figure pct00021
QP 정보는 픽셀에 적용된 DRA 의 영향을 반영하도록 조정될 수 있다. 예를 들어, 비디오 디코더 (300) 는 디코딩된 픽쳐의 픽셀들에 적용된 DRA 의 영향을 반영하기 위해 QP 정보를 변경할 수도 있다.
Figure pct00022
여기서 QPx 는 현재 처리된 픽셀들에 대한 DRA 처리에 의해 구현된 스케일링을 고려하지 않고서 비디오 디코더 (300) 에 의해 유도된 QP 파라미터이다.
이 프로세스의 출력은 비디오 디코더 (300) 에 의한 의사 결정 프로세스에서 활용되는 조정된 QP 값 (QP'y,QP'Cb,QP'Cr) 일 수 있다. 일부 예들에서, 디코딩 알고리즘의 기술들의 서브세트만이 의사 결정 과정에서 조정된 QP 를 사용할 것이다.
이제 DRA 스케일이 크로마 QP 시프트 테이블을 보상하는 방법에 대해 설명한다. 비디오 디코더 (300) 는 디코딩된 비트스트림의 신택스 엘리먼트들로부터 유도된 로컬 QP 정보에 기초하여 아래에 언급된 파라미터들을 유도할 수도 있고, 비디오 디코더 (300) 에 이용가능한 부가 정보에 기초하여 파라미터들을 추가로 변경할 수도 있다.
이러한 처리의 예는 HEVC 사양 (https://www.itu.int/rec/T-REC-H.265 에서 사용 가능) 8.6.1절에서 논의된다:
- 변수 qPCb 및 qPCr 은 다음과 같이 유도된다:
Figure pct00023
- ChromaArrayType 이 1 인 경우, 변수 qPCb 및 qPCr 은 각각 qPiCb 및 qPiCr 과 동일한 인덱스 qPi 를 기반으로 표 8-10 에 지정된 Qpc 값과 동일하게 설정된다.
- 그렇지 않으면, 변수 qPCb 및 qPCr 은 각각 qPiCb 및 qPiCr 과 동일한 인덱스 qPi 를 기반으로 Min(qPi, 51) 과 동일하게 설정된다.
- Cb 및 Cr 컴포넌트에 대한 크로마 양자화 파라미터 Qp'Cb 및 Qp'Cr 는 다음과 같이 유도된다:
Figure pct00024
도 11 은 1 과 동일한 ChromaArrayType 에 대한 qPi 의 함수로서 QpC 의 사양을 설명하는 테이블을 예시하는 개념도이다. 예를 들어, 도 11 의 테이블 (810) 은 HEVC 사양의 표 8-10 일 수 있다.
그러한 예들에서, 크로마 컴포넌트들에 대한 DRA 스케일 파라미터들은 그러한 프로세싱에 의해 도입된 QP 시프트를 반영하도록 변경될 수 있다. 다음 예는 Cb 컴포넌트에 대해 제공된다. Cr 컴포넌트에 대한 유도는 유사하다.
비디오 디코더 (300) 는 QP 정보로 달성가능한 표 8-10 으로부터 Cb 컴포넌트에 대한 크로마 양자화 파라미터를 유도할 수도 있다. 비디오 디코더 (300) 는 다음을 추정할 수도 있다:
Figure pct00025
변수 updatedQP1 은 디코딩 프로세스에서 더 사용될 수 있으며, shiftQP1 은 표 8-10 에 의해 도입된 QP 에 대한 영향에 대한 추정치를 제공한다.
디코더 (예를 들어, 비디오 디코더 (300)) 에서 DRA 및 QP 처리에 의해 수행되는 픽셀-레벨 양자화를 조화시키기 위해, DRA 스케일링 함수는 다음과 같이 변경된다:
Figure pct00026
여기서 scale2QP(DRACb) 는 식 (18) 과 유사하게 Scale 로부터 QP 로의 전환을 수행한다.
Figure pct00027
크로스-컴포넌트 DRA 구현 (예를 들어, LCS) 의 경우와 같은 일부 예들에서, 식 (24) 는 Y 컴포넌트의 DRA 스케일로부터 추정된 QP 오프셋 값 및 Cb 컴포넌트에 대한 DRA 를 생성하는 데 사용되는 색도 스케일 (addnDRACbScale) 로부터 추정된 추가 QP 오프셋 값을 포함할 것이다. 예를 들어,
Figure pct00028
변수 updatedQP2 는 DRA 가 변환 도메인 스케일링을 통해 수행되는 경우에 QP 에 대한 추정치를 제공하고, shiftQP2 는 표 8-10 에 의해 도입된 QP 에 대한 영향의 추정치를 제공한다.
일부 상황에서, 추정된 shiftQP1 은 shiftQP2 와 동일하지 않을 것이다. 이 차이를 보상하기 위해, DRA 의 스케일은 다음과 같이 승산기를 사용하여 변경될 수 있다:
Figure pct00029
여기서 함수 Qp2Scale 은 QP 변수를 Eq. 26 과 같이 관련 양자화기 스케일로 전환한다.
이 프로세스의 출력은 디코딩된 샘플 Cbdec 에 적용되는 조정된 DRA 스케일일 수 있다.
일부 예들에서, QP 전환 함수 scale2QP(DRACb) 에 대한 스케일의 출력 및 결과적인 추정치 QP2 는 정수가 아닌 값들이다. 표 8-10 의 엘리먼트들을 어드레스하기 위해, 표 8-10 에 대한 입력 및 출력 QP 값은 다음과 같이 정수 엔트리들 사이에서 보간될 수 있다:
Figure pct00030
여기서 (Int)(x) 는 x 의 정수 성분을 나타낸다.
또 다른 예에서, 표 8-10 의 엔트리들 (또는 유사한 도표 정보) 은 분석 함수를 통해 정의될 수 있거나, 비트스트림에서 명시적으로 시그널링될 수 있다.
또 다른 예에서, shiftScale 은 다음과 같이 Table8-10 shiftQP1 의 영향을 보상하기 위해 계산될 수 있다:
Figure pct00031
일부 예들에서, 식 23 및 24 를 초기화하기 위한 QP 인덱스는 파싱 및 프로세싱 의존성을 피하기 위해 비트스트림을 통해 시그널링될 수 있다.
하이브리드 비디오 코덱의 DRA 스케일링 (픽셀 레벨 양자화 구현) 및 변환 도메인 양자화의 조화는 스케일/오프셋 값을 양자화 파라미터 (QP) 및 역 QP 로 변환하는 것을 활용한다. 이 프로세스에는 정수 산술을 사용하여 비디오 코덱과 같은 계산 플랫폼에서 구현하는 데 비용이 많이 드는 로그 및 지수 표현식의 사용이 포함된다. 이러한 표현에는 다음이 포함된다:
Figure pct00032
여기서 log(.) 는 자연 로그이다.
본 개시물은 조화된 픽셀/변환 도메인 양자화를 갖는 DRA 의 보다 효율적인 구현을 위한 기술 및 제약을 설명한다.
일부 예들에서, 본 개시물은 DRA 의 보다 효율적인 구현을 허용하는 DRA 사양에 대한 비트스트림 제약들을 도입하는 것을 설명한다. 일부 예들에서, 본 개시물은 예를 들어 제한된 수의 도표 값을 통해 지수 및 로그 함수의 정수 근사화를 도입하는 것을 설명한다. 일부 예들에서, 본 개시물은 지수 및/또는 로그 함수의 서브-샘플링된 표현을 활용하는 것을 설명한다. 일부 예들에서, 본 개시물은 (예를 들어, 테이블에 나타나지 않는) 정확하게 도표화되지 않을 수도 있는 스케일 또는 QP 값을 추정하기 위해 지수 및/또는 로그 함수를 근사화하기 위해 선형 보간 기술을 활용하는 것을 설명한다. 일부 예들에서, 본 개시물은 스케일과 QP 값 사이의 전환에 필요한 정수 표현의 정확도를 지정하는 것을 설명한다.
예를 들어, 비디오 디코더 (300) 는 루마 DRA 스케일 값에 기초하여 루마 조정된 크로마 DRA 스케일 값을 결정하고; 루마 조정된 크로마 DRA 스케일에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 QP 를 결정하고; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하고; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하고; 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하고; DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리할 수도 있다. 이러한 방식으로, 그렇지 않으면 로그 및/또는 지수 연산으로서 구현될 수학적 연산이 연산의 근사값으로 대체되고, 이는 비용을 줄이고 처리 능력을 절약할 수 있다.
사양 텍스트의 예는 다음과 같다. 사양 텍스트의 예 내의 세부 사항은 변경될 수 있으며 여전히 본 개시의 범위 내에 속한다.
조정된 크로마 DRA 스케일의 유도
이 프로세스에 대한 입력은 다음과 같다: 루마 스케일을 나타내는 변수, lumaScale, 및 크로마 성분 인덱스 cIdx. 이 프로세스의 출력은 다음과 같다: 크로마 스케일을 나타내는 변수, chromaScale.
변수 scaleDra 및 scaleDraNorm 은 다음과 같이 유도된다:
Figure pct00033
scaleDra 는 루마 DRA 스케일 값 lumaScale 에 기초하여 결정되는 루마 조정된 크로마 DRA 스케일 값을 나타낸다. dra_cb_scale_value 및 dra_cr_scale_value 는 예를 들어 루마 DRA 스케일링 효과를 고려하지 않은 초기 크로마 (각각 Cb 및 Cr) DRA 스케일 값을 나타낸다.
변수 IndexScaleQP 는 입력으로서 54 와 동일하게 설정된 scaleQp 어레이의 크기 및 scaleQp 어레이, scaleDraNorm 과 동일하게 설정된 입력 값 inValue 에 대해 MPEG-5 EVC, ISO/IEC 23094-1:2020 정보 기술 - 일반 비디오 코딩 - 파트 1: 필수 비디오 코딩 (https://www. iso.org/standard/57797.html 에서 입수가능) 의 8.9.5절을 적용함으로써 유도된다.
변수 qpDraInt 는 다음과 같이 유도된다:
Figure pct00034
변수 qpDraInt 및 qpDraFrac 은 다음과 같이 유도된다:
Figure pct00035
scaleQp 는 식 29 에 따라 루마 조정된 크로마 DRA 스케일 값으로부터 크로마 양자화 파라미터로의 전환의 정수 근사치를 제공하는 테이블이다.
tableNum 이 0 과 같을 때, 변수 qpDraFrac 은 0 으로 설정되고, 변수 qpDraInt 는 1만큼 감소하고, 그렇지 않으면 변수 qpDraInt 및 qpDraFrac 은 다음과 같이 유도된다:
Figure pct00036
qpDraInt 및 qpDraFrac 은 각각 루마 조정된 크로마 DRA 스케일 scaleDra 에 기초하여 결정된 크로마 QP 의 정수 및 분수 성분을 나타낸다.
Figure pct00037
dra_table_idx 는 비트스트림으로부터 파싱된 크로마 QP 테이블에서의 시작 위치를 나타낼 수 있다.
Figure pct00038
인덱스 idx0 및 idx1 은 크로마 QP 의 정수 성분 qpDraInt 에 기초하여 결정되고 ChromaQpTable 을 인덱싱하는 데 사용되어 정수 크로마 QP 오프셋을 결정한다. qpDraIntAdj 는 정수 크로마 QP 오프셋을 나타낼 수 있다. qpDraFracAdj 는 분수 chroma QP 오프셋을 나타낼 수 있다.
Figure pct00039
qpDraFracAdj 가 0 보다 작은 경우, draChromaQpShift 및 qpDraFracAdj 는 다음과 같이 유도된다:
Figure pct00040
Figure pct00041
draChromaQpShift 가 0보다 작을 때, 변수 draChromaScaleShiftFrac 은 다음과 같이 유도된다:
Figure pct00042
그렇지 않으면, 변수 draChromaScaleShiftFrac 은 다음과 같이 유도된다:
Figure pct00043
변수 draChromaScaleShift 는 다음과 같이 수정된다:
Figure pct00044
출력 변수 chromaScale 은 다음과 같이 유도된다:
Figure pct00045
draChromaScaleShift 는 수정된 크로마 스케일 chromaScale 을 유도하기 위해 루마 조정된 크로마 DRA 스케일 값 scaleDra 를 수정하는데 사용되는 DRA 크로마 스케일 조정 값을 나타낸다.
scaleQp 및 qpScale 테이블의 엔트리들은 다음과 같이 초기화된다:
Figure pct00046
1 과 동일한 chroma_qp_table_present_flag 는 크로마 QP 맵핑 테이블 ChromaQpTable 이 도 12 에 도시된 바와 같이 표 8-19 에 의해 정의된 유도 대신에 QpC 를 유도하기 위해 시그널링되고 사용된다는 것을 지정한다.
0 과 동일한 chroma_qp_table_present_flag 는 크로마 QP 맵핑 테이블이 시그널링되지 않고 표 8-19 가 크로마 QP 값 Qpc 를 유도하기 위해 사용된다는 것을 지정한다. 도 12 는 0 과 동일한 chroma_qp_table_present_flag 에 대한 qPi(sps_iqt_flag = = 1), chromaQpTable[] 의 함수로서 QpC 의 사양을 설명하는 테이블을 예시하는 개념도이다. 일부 예들에서, 도 12 의 테이블 819 는 표 8-19 를 나타낼 수 있다.
Figure pct00047
dra_디스크립터1 은 DRA 스케일 파라미터 시그널링의 정수 부분을 나타내는 데 사용되는 비트 수를 지정한다. dra_디스크립터1 의 값은 0 에서 15 (포함) 까지의 범위에 있어야 한다. 사양의 현재 버전에서 신택스 엘리먼트 dra_디스크립터1 의 값은 4 로 제한된다; 다른 값들은 향후 사용을 위해 예약되어 있다.
dra_디스크립터2 는 DRA 스케일 파라미터 시그널링 및 재구성 프로세스의 소수 부분을 나타내는 데 사용되는 비트 수를 지정한다. dra_디스크립터2 의 값은 0 에서 15 (포함) 까지의 범위에 있어야 한다. 사양의 현재 버전에서 신택스 엘리먼트 dra_디스크립터2 의 값은 9 로 제한된다; 다른 값들은 향후 사용을 위해 예약되어 있다.
변수 numBitsDraScale 은 다음과 같이 유도된다:
Figure pct00048
numBitsDraScale 의 값이 0 보다 커야 하는 것은 비트스트림 적합성의 요건이다.
dra_number_ranges_minus1 플러스 1 은 DRA 테이블을 설명하기 위해 시그널링되는 범위의 수를 지정한다. dra_number_ranges_minus1 의 값은 0 에서 31 (포함) 까지의 범위에 있어야 한다.
1 과 동일한 dra_equal_ranges_flag 는 DRA 테이블이 신택스 엘리먼트 dra_delta_range[0] 에 의해 지정된 크기를 갖고서 동일-크기 범위를 사용하여 유도된다는 것을 지정한다. 0 과 동일한 dra_equal_ranges_flag 는 DRA 테이블이 신택스 엘리먼트 dra_delta_range[j] 에 의해 지정된 각 범위의 크기를 갖고서 dra_number_ranges 를 사용하여 유도된다는 것을 지정한다.
dra_global_offset 은 DRA 테이블을 유도하기 위해 사용되는 시작 코드워드 위치를 지정하고 다음과 같이 변수 inDraRange[0] 을 초기화한다:
Figure pct00049
dra_global_offset 을 시그널링하는 데 사용되는 비트 수는 BitDepthY 비트이다.
dra_delta_range[j] 는 DRA 테이블을 유도하는데 이용되는 코드워드에서 j번째 범위의 크기를 지정한다. dra_delta_range[j] 의 값은 1 에서 ( 1 << BitDepthY ) - 1 (포함) 의 범위에 있어야 한다.
1 에서 dra_number_ranges_minus1 + 1 (포함) 의 범위에서 j 에 대한 변수 inDraRange[j] 는 다음과 같이 유도된다:
Figure pct00050
inDraRange[j] 가 0 에서 ( 1 << BitDepthY ) - 1 (포함) 범위에 있어야 하는 것은 비트스트림 적합성의 요건이다.
dra_scale_value[j] 는 DRA 테이블의 j번째 범위와 관련된 DRA 스케일 값을 지정한다. dra_scale_value[j] 를 시그널링하는 데 사용되는 비트 수는 numBitsDraScale 과 동일하다.
dra_cb_scale_value 는 DRA 테이블을 유도하는데 이용되는 Cb 성분의 크로마 샘플에 대한 스케일 값을 지정한다. dra_cb_scale_value 를 시그널링하는 데 사용되는 비트 수는 numBitsDraScale 과 동일하다.
dra_cr_scale_value 는 DRA 테이블을 유도하는데 이용되는 Cr 성분의 크로마 샘플에 대한 스케일 값을 지정한다. dra_cr_scale_value 를 시그널링하는 데 사용되는 비트 수는 numBitsDraScale 과 동일하다.
0 에서 dra_number_ranges_minus1 (포함) 의 범위에 있는 j 에 대한 dra_scale_value[j] 의 값, dra_cb_scale_value 및 dra_cr_scale_value 은 0 과 동일하지 않아야 한다. 사양의 현재 버전에서, 신택스 엘리먼트 dra_scale_value[j] 의 값, dra_cb_scale_value 및 dra_cr_scale_value 는 4 << dra_디스크립터2 보다 작아야 한다. 다른 값들은 향후 사용을 위해 예약되어 있다.
dra_table_idx 는 크로마 스케일 값을 유도하기 위해 사용되는 ChromaQpTable 의 액세스 엔트리를 지정한다. dra_table_idx 의 값은 0 에서 57 (포함) 까지의 범위에 있어야 한다.
변수 numOutRangesL 은 dra_number_ranges_minus1 + 1 과 동일하게 설정된다. 변수 outRangesL[ adaptation_parameter_set_id ][ 0 ] 은 0 으로 설정되고, 변수 outRangesL[ i ] 은, 0 에서 numOutRangesL (포함) 까지의 범위에 있는 i에 대해, 다음과 같이 유도된다:
Figure pct00051
0 내지 dra_number_ranges_minus1 (포함) 의 범위에 있는 i 에 대해, 각각 DRA 스케일 및 오프셋 값, InvLumaScale[adaptation_parameter_set_id][i] 및 DraOffsets[adaptation_parameter_set_id][i] 를 나타내는 변수는 다음과 같이 유도된다:
Figure pct00052
변수 outRangesL[ i ] 은 0 부터 numOutRangesL (포함) 까지의 범위에 있는 i 에 대해 다음과 같이 수정된다:
Figure pct00053
MPEG-5 EVC, ISO/IEC 23094-1:2020 정보 기술 - 일반 비디오 코딩 - 파트 1: 필수 비디오 코딩 (https://www.iso.org/standard/57797.html 에서 사용가능) 의 8.9.7절에서 출력 크로마 DRA 파라미터를 유도하는 프로세스는, 입력으로서 루마 스케일 값 dra_scale_val[ ] 의 어레이, 역 루마 스케일 값 InvLumaScale[ ][ ] 의 어레이, 루마 범위 값 outRangesL[ ] 의 어레이 및 크로마 인덱스 cIdx 그리고 출력으로서 크로마 스케일 값 outScalesC[ ][ ] 의 어레이, 크로마 오프셋 값 outOffsetsC[ ][ ] 의 어레이 및 크로마 범위 값 outRangesC[ ][ ] 의 어레이로 인보크된다.
예시 사양 텍스트의 끝.
예시적인 소프트웨어 구현은 다음과 같다. 예시적인 소프트웨어 구현 내의 세부사항은 변경될 수 있으며 여전히 본 개시의 범위 내에 속한다.
Figure pct00054
Figure pct00055
Figure pct00056
Figure pct00057
Figure pct00058
Figure pct00059
Figure pct00060
Figure pct00061
Figure pct00062
Figure pct00063
예시적인 소프트웨어 구현의 끝.
도 13 은 DRA 유닛을 포함하는 비디오 인코더 및 비디오 디코더 시스템의 블록도이다. 비디오 인코더 (200) 와 같은 비디오 인코더는 순방향 DRA 유닛 (240) 및 코딩 코어 (242) 를 포함할 수 있다. 일부 예들에서, 코딩 코어 (242) 는 도 2 에 도시된 유닛들을 포함할 수 있고, 도 2 와 관련하여 전술한 바와 같이 기능할 수 있다. 비디오 인코더 (200) 는 또한 순방향 DRA 유닛 (240) 으로부터의 정보를 포함할 수도 있는 복수의 적응 파라미터 세트 (APSs) (244) 및 복수의 픽쳐 파라미터 세트 (PPSs) (246) 를 결정할 수도 있다.
비디오 디코더 (300) 와 같은 비디오 디코더는 코딩 코어 (348) 및 출력 DRA 유닛 (342) 을 포함할 수 있다. 일부 예들에서, 코딩 코어 (348) 는 도 3 에 도시된 유닛들을 포함할 수 있고, 도 3 과 관련하여 전술한 바와 같이 기능할 수 있다. 비디오 디코더 (300) 는 또한 출력 DRA 유닛 (342) 에 의해 사용될 정보를 포함할 수 있는 복수의 APSs (344) 및 복수의 PPSs (346) 를 결정할 수도 있다.
본 개시물의 기술들에 따르면, 출력 DRA 유닛 (342) 은 루마 DRA 스케일 값에 기초하여 루마 조정된 크로마 DRA 스케일 값을 결정할 수도 있다. 출력 DRA 유닛 (342) 은 루마 조정된 크로마 DRA 스케일 값에 기초하여 크로마 QP 를 결정할 수도 있고, 여기서 크로마 QP 는 정수 성분 및 분수 성분을 포함한다. 출력 DRA 유닛 (342) 은 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정할 수 있다. 출력 DRA 유닛 (342) 은 또한 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정할 수도 있다. 출력 DRA 유닛 (342) 은 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정할 수 있고, DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리할 수 있다.
도 14 는 본 개시물에 따른 예시적인 DRA 크로마 스케일 기술들을 예시하는 흐름도이다. 비디오 디코더 (300) 는 루마 DRA 스케일 값에 기초하여 루마 조정된 크로마 DRA 스케일 값을 결정할 수도 있다 (330). 예를 들어, 비디오 디코더 (300) 는 scaleDra = lumaScale * ((cIdx = = 0) ? dra_cb_scale_value : dra_cr_scale_value 를 통해 루마 조정된 크로마 DRA 스케일 값을 결정할 수도 있으며, 여기서 lumaScale 은 루마 DRA 스케일 값을 나타내고, dra_cb_scale_value 및 dra_cr_scale_value 는 예를 들어 루마 DRA 스케일링 효과를 고려하지 않은 초기 크로마 (각각 Cb 및 Cr) DRA 스케일 값을 나타내고, scaleDra 는 루마 DRA 스케일 값을 기반으로 조정된 크로마 DRA 스케일 값을 나타낸다.
비디오 디코더 (300) 는 루마 조정된 크로마 DRA 스케일 값에 기초하여 크로마 QP 를 결정할 수도 있고, 여기서 크로마 QP 는 정수 성분 및 분수 성분을 포함한다 (332). 예를 들어, 비디오 디코더 (300) 는 입력으로서 54 와 동일하게 설정된 scaleQp 어레이의 크기 및 scaleQp 어레이, scaleDraNorm 과 동일하게 설정된 입력 값 inValue 에 대해 MPEG-5 EVC, ISO/IEC 23094-1:2020 정보 기술 - 일반 비디오 코딩 - 파트 1: 필수 비디오 코딩 (https://www.iso.org/standard/57797.html 에서 입수가능) 의 8.9.5절을 적용함으로써 변수 IndexScaleQP 를 유도할 수 있다. 비디오 디코더 (300) 는 다음과 같이 변수 qpDraInt 를 유도할 수도 있다: qpDraInt = 2 * IndexScaleQP - 60. 비디오 디코더 (300) 는 다음과 같이 변수 qpDraInt 및 qpDraFrac 을 유도할 수 있다:
Figure pct00064
tableNum 이 0 과 같을 때, 비디오 디코더 (300) 는 변수 qpDraFrac 을 0 과 동일하게 설정할 수도 있고, 변수 qpDraInt 를 1만큼 감소시킬 수도 있고, 그렇지 않으면 비디오 디코더 (300) 는 다음과 같이 변수 qpDraInt 및 qpDraFrac 을 유도할 수도 있다:
Figure pct00065
크로마 QP의 정수 및 분수 성분은 각각 qpDraInt 및 qpDraFrac 에 의해 표시될 수 있다.
비디오 디코더 (300) 는 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정할 수도 있다 (334). 예를 들어, 비디오 디코더 (300) 는 신택스 엘리먼트 dra_table_idx 를 파싱하고 idx0 = Clip3(-QpBdOffsetC, 57, dra_table_idx - qpDraInt) 및 idx1 = Clip3(-QpBdOffsetC, 57, dra_table_idx - qpDraInt +1) 을 결정하고 정수 크로마 QP 오프셋을 결정할 때 ChromaQpTable 과 같은 테이블(들)의 값을 결정 (예컨대, 룩업) 할 수 있다. 인덱스 idx0 및 idx1 은 크로마 QP 의 정수 성분 qpDraInt 에 기초하여 결정되고 정수 크로마 QP 오프셋을 결정하기 위해 ChromaQpTable 을 인덱싱하는 데 사용된다. qpDraIntAdj 는 정수 크로마 QP 오프셋을 나타낼 수 있다.
비디오 디코더 (300) 는 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정할 수도 있다 (336). 예를 들어, 비디오 디코더 (300) 는 분수 크로마 QP 오프셋을 결정하기 위해 분수 성분 및 정수 정의 테이블 ChromaQpTable 을 사용할 수도 있다. qpDraFracAdj 는 분수 크로마 QP 오프셋을 나타낼 수 있다.
비디오 디코더 (300) 는 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정할 수도 있다 (338). 예를 들어, 비디오 디코더 (300) 는 분수 크로마 QP 오프셋 및 정수 정의 qpScale 를 사용함으로써 DRA 크로마 스케일 조정 값을 결정할 수도 있다. draChromaScaleShift 는 DRA 크로마 스케일 조정 값을 나타낼 수 있다. DRA 크로마 스케일 조정 값은 DRA 크로마 스케일 scaleDra 를 조정하는데 사용될 수 있다.
비디오 디코더 (300) 는 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리할 수도 있다 (340). 예를 들어, 비디오 디코더 (300) 는 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터의 크로마 성분의 크로마 값을 스케일링할 수도 있다.
일부 예들에서, DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 것의 일부로서, 하나 이상의 프로세서들은 조정된 크로마 DRA 스케일 값 및 DRA 크로마 스케일 조정 값에 기초하여 최종 크로마 DRA 스케일 값을 결정하도록 그리고 최종 크로마 DRA 스케일 값을 기반으로 비디오 데이터를 처리하도록 구성된다.
일부 예들에서, 분수 크로마 QP 오프셋을 결정하는 것의 일부로서 그리고 정수 크로마 QP 오프셋을 결정하는 것의 일부로서, 비디오 디코더 (300) 는 크로마 QP 테이블에서 엔트리들을 결정 (예를 들어, 룩업) 할 수도 있다. 일부 예들에서, 분수 크로마 QP 오프셋을 결정하는 것의 일부로서, 비디오 디코더 (300) 는 Qp0 및 Qp1 과 같은 크로마 QP 테이블의 2개의 엔트리들을 결정 (예를 들어, 룩업) 할 수도 있고, 예를 들어 크로마 QP 의 분수 성분 (qpDraFrac) 에 기초하여 2개의 엔트리들 사이를 보간할 수도 있다. 일부 예들에서, 정수 크로마 QP 오프셋을 결정하는 것의 일부로서, 비디오 디코더 (300) 는 크로마 QP 테이블의 2개의 엔트리들을 결정 (예를 들어, 룩업) 하고 2개의 엔트리들 사이를 보간할 수도 있다.
일부 예들에서, 비디오 디코더 (300) 는 크로마 QP 테이블에서의 시작 위치를 표시하는 신택스 엘리먼트를 파싱할 수도 있다. 일부 예들에서, 크로마 QP 테이블은 미리 결정된다. 일부 예들에서, 크로마 QP 테이블은 비트스트림으로 시그널링된다. dra_table_idx 는 비트스트림으로부터 파싱된 크로마 QP 테이블의 시작 위치를 나타낼 수 있다.
일부 예들에서, 비디오 디코더 (300) 는 복수의 DRA 신택스 엘리먼트들의 값들을 결정할 수도 있고, 여기서 복수의 DRA 신택스 엘리먼트들은 미리 결정된 값 범위 내에 있도록 제약된다. 일부 예들에서, 복수의 신택스 엘리먼트들은 정수 구현을 용이하게 하도록 구성된다. 일부 예들에서, 비디오 디코더 (300) 는 (scaleQp 및/또는 qpScale 과 같은) 하나 이상의 스케일 QP 테이블들 내의 하나 이상의 엔트리들에 기초하여 값을 결정할 수도 있고, 여기서 하나 이상의 엔트리들은 식 28 및 29 에 나타낸 바와 같이 QP 와 DRA 스케일 값 사이의 전환을 위한 지수 또는 로그 함수의 서브-샘플링된 표현들이다. 일부 예들에서, 비디오 디코더 (300) 는 DRA 루마 스케일 값을 결정할 수도 있다. 일부 예들에서, DRA 루마 스케일 값을 결정하는 것의 일부로서, 비디오 디코더 (300) 는 DRA 루마 스케일 값의 정수 성분 및 DRA 루마 스케일 값의 분수 성분을 표시하는 신택스 엘리먼트를 파싱할 수도 있다. 예를 들어, 비디오 디코더 (300) 는 DRA 루마 스케일 값을 결정할 수도 있다. 예를 들어, 비디오 디코더 (300) 는 DRA 루마 스케일 값을 표시하는 신택스 엘리먼트(들)를 파싱할 수도 있다. 예를 들어, 비디오 디코더 (300) 는 lumaScale 을 파싱할 수도 있다.
도 15 는 본 개시물의 기술들에 따라 현재 블록을 인코딩하기 위한 예시적인 방법을 예시하는 흐름도이다. 현재 블록은 현재 CU 를 포함할 수 있다. 비디오 인코더 (200) (도 1 및 도 2) 와 관련하여 설명되었지만, 다른 장치들이 도 15 의 것과 유사한 방법을 수행하도록 구성될 수도 있다는 것을 이해해야 한다.
이 예에서, 비디오 인코더 (200) 는 현재 블록을 초기에 예측한다 (350). 예를 들어, 비디오 인코더 (200) 는 현재 블록에 대한 예측 블록을 형성할 수도 있다. 비디오 인코더 (200) 는 그 다음 현재 블록에 대한 레지듀얼 블록을 계산할 수도 있다 (352). 레지듀얼 블록을 계산하기 위해, 비디오 인코더 (200) 는 원래의 인코딩되지 않은 블록과 현재 블록에 대한 예측 블록 간의 차이를 계산할 수도 있다. 비디오 인코더 (200) 는 그 다음 레지듀얼 블록을 변환하고, 레지듀얼 블록의 변환 계수들을 양자화할 수도 있다 (354). 다음으로, 비디오 인코더 (200) 는 레지듀얼 블록의 양자화된 변환 계수들을 스캔할 수도 있다 (356). 스캔 동안, 또는 스캔 후에, 비디오 인코더 (200) 는 변환 계수들을 엔트로피 인코딩할 수도 있다 (358). 예를 들어, 비디오 인코더 (200) 는 CAVLC 또는 CABAC 를 사용하여 변환 계수들을 인코딩할 수도 있다. 비디오 인코더 (200) 는 그 다음 블록의 엔트로피 인코딩된 데이터를 출력할 수도 있다 (360).
도 16 은 본 개시물의 기술들에 따라 비디오 데이터의 현재 블록을 디코딩하기 위한 예시적인 방법을 예시하는 흐름도이다. 현재 블록은 현재 CU 를 포함할 수 있다. 비디오 디코더 (300) (도 1 및 3) 와 관련하여 설명되었지만, 다른 장치들이 도 16 의 것과 유사한 방법을 수행하도록 구성될 수도 있다는 것을 이해해야 한다.
비디오 디코더 (300) 는 현재 블록에 대응하는 레지듀얼 블록의 변환 계수들에 대한 엔트로피 인코딩된 예측 정보 및 엔트로피 인코딩된 데이터와 같은 현재 블록에 대한 엔트로피 인코딩된 데이터를 수신할 수도 있다 (370). 비디오 디코더 (300) 는 현재 블록에 대한 예측 정보를 결정하고 레지듀얼 블록의 변환 계수들을 재생하기 위해 엔트로피 인코딩된 데이터를 엔트로피 디코딩할 수도 있다 (372). 비디오 디코더 (300) 는 현재 블록에 대한 예측 블록을 계산하기 위해, 예를 들어, 현재 블록에 대한 예측 정보에 의해 표시된 바와 같은 인트라- 또는 인터-예측 모드를 사용하여 현재 블록을 예측할 수도 있다(374). 비디오 디코더 (300) 는 그 다음 양자화된 변환 계수들의 블록을 생성하기 위해, 재생된 변환 계수들을 역 스캔할 수도 있다 (376). 비디오 디코더 (300) 는 그 다음 변환 계수들을 역양자화하고, 역변환을 변환 계수들에 적용하여 레지듀얼 블록을 생성할 수도 있다 (378). 비디오 디코더 (300) 는 예측 블록과 레지듀얼 블록을 결합하여 현재 블록을 궁극적으로 디코딩할 수 있다 (380). 비디오 디코더 (300) 는 또한 도 13 의 기술들을 적용하여 현재 블록의 동적 범위를 조정할 수도 있다.
로그 및 지수 연산 자체보다는 로그 및 지수 연산의 추정을 활용하는 방식으로 DRA 스케일링을 조화시킴으로써, 본 개시물의 기술은 비용을 절감하고 처리 전력을 절약하면서 상이한 비디오 디코더들에 걸친 비트 매칭을 용이하게 할 수 있다. 이 비트 매칭은, 사용자가 비디오 디코딩 장치를 전환하는 경우, 비디오 디코딩 장치에 의해 처리되는 비디오가 장치에 의해 다르게 처리되지 않도록, 상이한 비디오 디코더들이 동일한 방식으로 비디오 데이터를 처리하게 할 수 있다.
본 개시물은 하기 예들을 포함한다.
항목 1A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 비디오 데이터에 대해 DRA (Dynamic Range Adjustment: 동적 범위 조정) 를 수행하는 단계; 및 동적 범위 조정에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, DRA 를 수행하는 단계는 비디오 데이터의 제한된 비트스트림을 이용하는 것을 포함하는, 방법.
항목 2A. 항목 1A 의 방법에서, 비트스트림은 변수가 적어도 미리 결정된 값이 되도록 요구함으로써 제한되는, 방법.
항목 3A. 항목 1A 또는 2A 의 방법에서, 비트스트림은 변수의 값이 미리 결정된 범위에 있도록 요구함으로써 제한되는, 방법.
항목 4A. 항목 1A-3A 의 임의의 조합의 방법에서, 비트스트림은 변수가 미리 결정된 값과 동일하도록 요구함으로써 제한되는, 방법.
항목 5A. 항목 1A-3A 의 임의의 조합의 방법에서, 비트스트림은 변수가 미리 결정된 값보다 작도록 요구함으로써 제한되는, 방법.
항목 6A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 비디오 데이터에 대해 DRA 를 수행하는 단계; 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, DRA 를 수행하는 단계는 지수 함수 또는 로그 함수의 정수 근사치를 결정하는 것을 포함하는, 방법.
항목 7A. 항목 6A 의 방법에서, 정수 근사치를 결정하는 것은 제한된 수의 정수 값을 포함하는 테이블로부터 정수 근사치를 결정하는 것을 포함하는, 방법.
항목 8A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 비디오 데이터에 대해 DRA 를 수행하는 단계; 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, DRA 를 수행하는 단계는 지수 함수 또는 로그 함수의 서브-샘플링된 표현을 결정하는 것을 포함하는, 방법.
항목 9A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 스케일 값 또는 양자화 파라미터 (QP) 값이 정확히 도표화되었는지 여부를 판단하는 단계; 스케일 값 또는 QP 값이 정확히 도표화되지 않은 것을 기반으로, 선형 보간을 통해 지수 함수 또는 로그 함수를 근사화하는 단계; 근사화에 기초하여 추정된 스케일 값 또는 QP 값을 결정하는 단계; 및 추정된 스케일 값 또는 QP 값에 기초하여 비디오 데이터를 코딩하는 단계를 포함하는, 방법.
항목 10A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 비디오 데이터에 대해 DRA 를 수행하는 단계; 및 DRA 에 기초하여 비디오 데이터를 코딩하는 단계를 포함하고, DRA 를 수행하는 단계는 정수 값만을 사용하여 스케일 값 또는 QP 값 사이를 전환하는 것을 포함하는, 방법.
항목 11A. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 본 개시물의 기술들 중 임의의 것 또는 임의의 조합을 포함하는, 방법.
항목 12A. 항목 1A-11A 의 임의의 조합의 방법에 있어서, 처리는 디코딩 또는 디코딩 이후의 후처리를 포함하는, 방법.
항목 13A. 항목 1A-12A 의 임의의 조합의 방법에 있어서, 처리는 인코딩 또는 인코딩 이전의 전처리를 포함하는, 방법.
항목 14A. 비디오 데이터를 처리하기 위한 장치에 있어서, 이 장치는 항목 1A-13A 의 임의의 조합의 방법을 수행하기 위한 하나 이상의 수단을 포함하는, 장치.
항목 15A. 항목 14A 의 장치에 있어서, 하나 이상의 수단은 회로에서 구현되는 하나 이상의 프로세서를 포함하는, 장치.
항목 16A. 항목 14A 또는 15A 의 장치에 있어서, 비디오 데이터를 저장하기 위한 메모리를 더 포함하는, 장치.
항목 17A. 항목 14A-16A 의 임의의 조합의 장치에 있어서, 디코딩된 비디오 데이터를 표시하도록 구성된 디스플레이를 더 포함하는, 장치.
항목 18A. 항목 14A-17A 의 임의의 조합의 장치에 있어서, 장치가 카메라, 컴퓨터, 모바일 장치, 방송 수신기 장치, 또는 셋톱 박스 중 하나 이상을 포함하는, 장치.
항목 19A. 항목 14A-18A 의 임의의 조합의 장치에 있어서, 장치가 비디오 디코더 또는 사후-디코딩 프로세서를 포함하는, 장치.
항목 20A. 항목 14A-19A 의 임의의 조합의 장치에 있어서, 장치가 비디오 인코더 또는 사전-인코딩 프로세서를 포함하는, 장치.
항목 21A. 실행될 때 하나 이상의 프로세서로 하여금 항목 1A-11A 의 임의의 조합의 방법을 수행하게 하는 명령이 저장된 컴퓨터-판독가능 저장 매체.
항목 1B. 비디오 데이터를 처리하는 방법에 있어서, 이 방법은 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 단계; 루마 조정된 크로마 DRA 스케일 값에 기초하여 크로마 양자화 파라미터 (QP) 를 결정하는 단계, 여기서 크로마 QP 는 정수 성분 및 분수 성분을 포함함; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 단계; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 단계; 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 단계; 및 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 단계를 포함하는, 방법.
항목 2B. 항목 1B 의 방법에 있어서, DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 것은, 조정된 크로마 DRA 스케일 값 및 DRA 크로마 스케일 조정 값에 기초하여 최종 크로마 DRA 스케일 값을 결정하는 것; 및 최종 크로마 DRA 스케일 값에 기초하여 비디오 데이터를 처리하는 것을 포함하는, 방법.
항목 3B. 항목 1B 또는 항목 2B 의 방법에 있어서, 분수 크로마 QP 오프셋을 결정하고 정수 크로마 QP 오프셋을 결정하는 것은 크로마 QP 테이블의 엔트리들을 결정하는 것을 포함하는, 방법.
항목 4B. 항목 3B 의 방법에 있어서, 분수 크로마 QP 오프셋을 결정하는 것은 크로마 QP 테이블에서 2개의 엔트리들을 결정하고 2개의 엔트리들 사이를 보간하는 것을 포함하는, 방법.
항목 5B. 항목 3B 또는 4B 의 방법에 있어서, 크로마 QP 테이블에서 시작 위치를 표시하는 신택스 엘리먼트를 파싱하는 단계를 더 포함하는, 방법.
항목 6B. 항목 3B-5B 의 임의의 조합의 방법에 있어서, 크로마 QP 테이블이 미리 결정되는, 방법.
항목 7B. 항목 3B-5B 의 임의의 조합의 방법에 있어서, 크로마 QP 테이블이 비트스트림으로 시그널링되는, 방법.
항목 8B. 항목 3B-7B 의 임의의 조합의 방법에 있어서, 정수 크로마 QP 오프셋을 결정하는 것은 크로마 QP 테이블에서 2개의 엔트리들을 결정하고 2개의 엔트리들 사이를 보간하는 것을 포함하는, 방법.
항목 9B. 항목 1B-8B 의 임의의 조합의 방법에 있어서, 복수의 DRA 신택스 엘리먼트의 값을 결정하는 단계를 더 포함하고, 복수의 DRA 신택스 엘리먼트는 미리 결정된 값 범위 내에 있도록 제한되는, 방법.
항목 10B. 항목 1B-9B 의 임의의 조합의 방법에 있어서, DRA 크로마 스케일 조정 값을 결정하는 것은 하나 이상의 스케일 QP 테이블 내의 하나 이상의 엔트리들에 기초하여 값을 결정하는 것을 포함하고, 하나 이상의 엔트리들은 지수 또는 로그 함수의 서브-샘플링된 표현들인, 방법.
항목 11B. 항목 1B-10B 의 임의의 조합의 방법에 있어서, 루마 DRA 스케일 값을 결정하는 단계를 더 포함하고, 루마 DRA 스케일 값을 결정하는 단계는 DRA 루마 스케일 값의 정수 성분 및 DRA 루마 스케일 값의 분수 성분을 나타내는 신택스 엘리먼트를 파싱하는 것을 포함하는, 방법.
항목 12B. 비디오 데이터를 처리하기 위한 장치에 있어서, 이 장치는 비디오 데이터를 저장하도록 구성된 메모리; 및 회로에 구현되고 메모리에 통신 가능하게 결합된 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하도록; 루마 조정된 크로마 DRA 스케일 값에 기초하여 크로마 양자화 파라미터 (QP) 를 결정하도록, 여기서 크로마 QP 는 정수 성분 및 분수 성분을 포함함; 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록; 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록; 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록; 그리고 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하도록 구성되는, 장치.
항목 13B. 항목 12B 의 장치에 있어서, DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 것의 일부로서, 하나 이상의 프로세서는 조정된 크로마 DRA 스케일 값 및 DRA 크로마 스케일 조정 값에 기초하여 최종 크로마 DRA 스케일 값을 결정하도록; 그리고 최종 크로마 DRA 스케일 값에 기초하여 비디오 데이터를 처리하도록 구성되는, 장치.
항목 14B. 항목 12B 또는 항목 13B 의 장치에 있어서, 분수 크로마 QP 오프셋을 결정하는 것의 일부로서 그리고 정수 크로마 QP 오프셋을 결정하는 것의 일부로서, 하나 이상의 프로세서는 크로마 QP 테이블의 엔트리들을 결정하도록 구성되는, 장치.
항목 15B. 항목 14B 의 장치에 있어서, 분수 크로마 QP 오프셋을 결정하는 것의 일부로서, 하나 이상의 프로세서는 크로마 QP 테이블에서 2개의 엔트리들을 결정하고 2개의 엔트리들 사이를 보간하도록 구성되는, 장치.
항목 16B. 항목 14B 또는 15B 의 장치에 있어서, 하나 이상의 프로세서는 크로마 QP 테이블에서 시작 위치를 표시하는 신택스 엘리먼트를 파싱하도록 추가로 구성되는, 장치.
항목 17B. 항목 14B-16B 의 임의의 조합의 장치에 있어서, 크로마 QP 테이블이 미리 결정되는, 장치.
항목 18B. 항목 14B-16B 의 임의의 조합의 장치에 있어서, 크로마 QP 테이블이 비트스트림으로 시그널링되는, 장치.
항목 19B. 항목 12B-18B 의 임의의 조합의 장치에 있어서, 정수 크로마 QP 를 결정하는 것의 일부로서, 하나 이상의 프로세서는 크로마 QP 테이블에서 2개의 엔트리들을 결정하고 2개의 엔트리들 사이를 보간하도록 구성되는, 장치.
항목 20B. 항목 12B-19B 의 임의의 조합의 장치에 있어서, 하나 이상의 프로세서는 복수의 DRA 신택스 엘리먼트의 값을 결정하도록 추가로 구성되며, 복수의 신택스 엘리먼트는 미리 결정된 값 범위 내에 있도록 제한되는, 장치.
항목 21B. 항목 12B-20B 의 임의의 조합의 장치에 있어서, DRA 크로마 스케일 조정 값을 결정하는 것의 일부로서, 하나 이상의 프로세서는 하나 이상의 스케일 QP 테이블 내의 하나 이상의 엔트리들에 기초하여 값을 결정하도록 추가로 구성되고, 하나 이상의 엔트리들은 지수 또는 로그 함수의 서브-샘플링된 표현들인, 장치.
항목 22B. 항목 12B-21B 의 임의의 조합의 장치에 있어서, 하나 이상의 프로세서는 DRA 루마 스케일 값을 결정하도록 추가로 구성되고, DRA 루마 스케일 값을 결정하는 것의 일부로서, 하나 이상의 프로세서는 DRA 루마 스케일 값의 정수 성분 및 DRA 루마 스케일 값의 분수 성분을 나타내는 신택스 엘리먼트를 파싱하도록 구성되는, 장치.
항목 23B. 항목 12B-22B 의 임의의 조합의 장치에 있어서, 장치는 무선 통신 장치를 포함하는, 장치.
항목 24B. 실행될 때, 하나 이상의 프로세서로 하여금, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하게 하고, 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하게 하고, 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하게 하고, 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하게 하고, 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하게 하고, 그리고 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하게 하는 명령이 저장된 비-일시적 컴퓨터-판독가능 저장 매체.
항목 25B. 비디오 데이터를 처리하기 위한 장치에 있어서, 이 장치는, 루마 DRA 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 수단, 루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 수단, 크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 수단, 크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 수단, 정수 크로마 QP 오프셋 및 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 수단, 및 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 수단을 포함하는, 장치.
예에 따라서는, 여기에 설명된 임의의 기술의 특정 동작들 또는 이벤트들이 상이한 순서로 수행될 수 있고, 함께 추가, 병합 또는 완전히 생략될 수 있음을 인식해야 한다 (예컨대, 설명된 모든 동작들 또는 이벤트들이 기술의 실행에 필요한 것은 아님). 더욱이, 특정 예들에서, 동작들 또는 이벤트들은, 예를 들어, 다중-스레디드 처리, 인터럽트 처리, 또는 다중 프로세서를 통해, 순차적이 아니라 동시에 수행될 수도 있다.
하나 이상의 예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터-판독가능 매체에 하나 이상의 명령 또는 코드로서 저장되거나 이를 통해 전송될 수 있고 하드웨어-기반 처리 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체, 또는 예를 들어, 통신 프로토콜에 따라 컴퓨터 프로그램의 한 장소에서 다른 장소로의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이러한 방식으로, 컴퓨터-판독가능 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터-판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 개시물에서 설명된 기술의 구현을 위한 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터- 판독가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터-판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치, 또는 기타 자기 저장 장치, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용할 수 있고 컴퓨터에서 액세스할 수 있는 기타 매체를 포함할 수 있다. 또한, 임의의 커넥션을 컴퓨터-판독가능 매체라고 한다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL (디지털 가입자 회선) 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 사용하여 웹 사이트, 서버 또는 기타 원격 소스에서 명령을 전송하는 경우, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체는 커넥션, 반송파, 신호 또는 기타 임시 매체를 포함하지 않고, 대신에 비-일시적 유형의 저장 매체에 관한 것임을 이해해야 한다. 여기에서 사용된 디스크 (disk) 와 디스크 (disc) 는 CD (Compact Disc), 레이저 디스크, 광 디스크, DVD (Digital Versatile Disc), 플로피 디스크 및 Blu-ray 디스크를 포함하고, 디스크 (disk) 는 일반적으로 자기적으로 데이터를 재생하는 한편 디스크 (disc) 는 레이저로 데이터를 광학적으로 재생한다. 위의 조합도 컴퓨터-판독가능 매체의 범위내에 포함되어야 한다.
명령은 하나 이상의 디지털 신호 프로세서 (DSPs), 범용 마이크로프로세서, 주문형 집적 회로(ASICs), 필드 프로그래머블 게이트 어레이(FPGAs), 또는 기타 등가의 집적 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 용어 "프로세서" 및 "처리 회로" 는 전술한 구조들 중 임의의 것 또는 본 명세서에서 설명된 기술의 구현에 적합한 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 양태들에서, 본 명세서에 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 결합된 코덱에 통합될 수 있다. 또한, 기술은 하나 이상의 회로 또는 논리 요소에서 완전히 구현될 수 있다.
본 개시물의 기술은 무선 핸드셋, 집적 회로 (IC) 또는 IC 세트 (예를 들어, 칩 세트) 를 포함하여 매우 다양한 디바이스 또는 장치에서 구현될 수 있다. 다양한 구성요소, 모듈, 또는 유닛은 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 본 개시에서 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 실현을 필요로 하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들이 코덱 하드웨어 유닛에서 결합되거나, 적절한 소프트웨어 및/또는 펌웨어와 함께 위에서 설명된 바와 같은 하나 이상의 프로세서를 포함하는 상호 운용되는 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구범위의 범위 내에 있다.

Claims (24)

  1. 비디오 데이터의 처리 방법으로서,
    루마 동적 범위 조정 (dynamic range adjustment: DRA) 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하는 단계;
    조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하는 단계;
    크로마 QP 의 상기 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하는 단계;
    크로마 QP 의 상기 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하는 단계;
    상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하는 단계; 및
    상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 단계
    를 포함하는 비디오 데이터의 처리 방법.
  2. 제 1 항에 있어서,
    상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하는 단계는,
    조정된 상기 크로마 DRA 스케일 값 및 상기 DRA 크로마 스케일 조정 값에 기초하여 최종 크로마 DRA 스케일 값을 결정하는 단계; 및
    상기 최종 크로마 DRA 스케일 값에 기초하여 비디오 데이터를 처리하는 단계
    를 포함하는, 비디오 데이터의 처리 방법.
  3. 제 1 항에 있어서,
    상기 분수 크로마 QP 오프셋을 결정하고 상기 정수 크로마 QP 오프셋을 결정하는 단계는 크로마 QP 테이블에서 적어도 하나의 엔트리를 결정하는 것을 포함하는, 비디오 데이터의 처리 방법.
  4. 제 3 항에 있어서,
    상기 분수 크로마 QP 오프셋을 결정하는 단계는 상기 크로마 QP 테이블에서의 2개의 엔트리들을 결정하고 상기 2개의 엔트리들 사이를 보간하는 것을 포함하는, 비디오 데이터의 처리 방법.
  5. 제 3 항에 있어서,
    비트스트림으로부터 상기 크로마 QP 테이블의 시작 위치를 나타내는 신택스 엘리먼트를 파싱 (parsing) 하는 단계를 더 포함하는, 비디오 데이터의 처리 방법.
  6. 제 3 항에 있어서,
    상기 크로마 QP 테이블은 미리 결정되는, 비디오 데이터의 처리 방법.
  7. 제 3 항에 있어서,
    상기 크로마 QP 테이블은 비트스트림으로 시그널링되는, 비디오 데이터의 처리 방법.
  8. 제 3 항에 있어서,
    상기 정수 크로마 QP 오프셋을 결정하는 단계는 상기 크로마 QP 테이블에서의 2개의 엔트리들을 결정하고 상기 2개의 엔트리들 사이를 보간하는 것을 포함하는, 비디오 데이터의 처리 방법.
  9. 제 1 항에 있어서,
    복수의 DRA 신택스 엘리먼트들의 값을 결정하는 단계를 더 포함하고, 상기 복수의 DRA 신택스 엘리먼트들은 미리 결정된 값 범위 내에 있도록 제한되는, 비디오 데이터의 처리 방법.
  10. 제 1 항에 있어서,
    상기 DRA 크로마 스케일 조정 값을 결정하는 단계는 하나 이상의 스케일 QP 테이블들에서 하나 이상의 엔트리들에 기초하여 값을 결정하는 것을 포함하고, 하나 이상의 엔트리들은 지수 또는 로그 함수의 서브-샘플링된 표현들인, 비디오 데이터의 처리 방법.
  11. 제 1 항에 있어서,
    상기 루마 DRA 스케일 값을 결정하는 단계를 더 포함하고, 상기 루마 DRA 스케일 값을 결정하는 단계는 비트스트림으로부터 DRA 루마 스케일 값의 정수 성분 및 DRA 루마 스케일 값의 분수 성분을 나타내는 신택스 엘리먼트를 파싱하는 것을 포함하는, 비디오 데이터의 처리 방법.
  12. 비디오 데이터의 처리 장치로서,
    상기 비디오 데이터를 저장하도록 구성된 메모리; 및
    회로에 구현되고 상기 메모리에 통신가능하게 결합된 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는
    루마 동적 범위 조정 (dynamic range adjustment: DRA) 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하도록,
    조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하도록,
    크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하도록,
    크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하도록,
    상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하도록, 그리고
    상기 DRA 크로마 스케일 조정 값에 기초하여 상기 비디오 데이터를 처리하도록 구성되는, 비디오 데이터의 처리 장치.
  13. 제 12 항에 있어서,
    상기 DRA 크로마 스케일 조정 값에 기초하여 상기 비디오 데이터를 처리하는 것의 일부로서, 상기 하나 이상의 프로세서는
    조정된 상기 크로마 DRA 스케일 값 및 상기 DRA 크로마 스케일 조정 값에 기초하여 최종 크로마 DRA 스케일 값을 결정하도록, 그리고
    상기 최종 크로마 DRA 스케일 값에 기초하여 상기 비디오 데이터를 처리하도록 구성되는, 비디오 데이터의 처리 장치.
  14. 제 12 항에 있어서,
    상기 분수 크로마 QP 오프셋을 결정하는 것의 일부로서 그리고 상기 정수 크로마 QP 오프셋을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서는 크로마 QP 테이블에서 적어도 하나의 엔트리를 결정하도록 구성되는, 비디오 데이터의 처리 장치.
  15. 제 14 항에 있어서,
    상기 분수 크로마 QP 오프셋을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서는 상기 크로마 QP 테이블에서의 2개의 엔트리들을 결정하고 상기 2개의 엔트리들 사이를 보간하도록 구성되는, 비디오 데이터의 처리 장치.
  16. 제 14 항에 있어서,
    상기 하나 이상의 프로세서는 추가로
    비트스트림으로부터 상기 크로마 QP 테이블에서의 시작 위치를 나타내는 신택스 엘리먼트를 파싱하도록 구성되는, 비디오 데이터의 처리 장치.
  17. 제 14 항에 있어서,
    상기 크로마 QP 테이블은 미리 결정되는, 비디오 데이터의 처리 장치.
  18. 제 14 항에 있어서,
    상기 크로마 QP 테이블은 비트스트림으로 시그널링되는, 비디오 데이터의 처리 장치.
  19. 제 14 항에 있어서,
    상기 정수 크로마 QP 를 결정하는 것의 일부로서, 상기 하나 이상의 프로세서는 상기 크로마 QP 테이블에서의 2개의 엔트리들을 결정하고 상기 2개의 엔트리들 사이를 보간하도록 구성되는, 비디오 데이터의 처리 장치.
  20. 제 12 항에 있어서,
    상기 하나 이상의 프로세서는 추가로
    복수의 DRA 신택스 엘리먼트들의 값들을 결정하도록 구성되고, 상기 복수의 신택스 엘리먼트들은 미리 결정된 값 범위 내에 있도록 제한되는, 비디오 데이터의 처리 장치.
  21. 제 12 항에 있어서,
    상기 DRA 크로마 스케일 조정 값을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서는 하나 이상의 스케일 QP 테이블들에서 하나 이상의 엔트리들에 기초하여 값을 결정하도록 구성되고, 하나 이상의 엔트리들은 지수 또는 로그 함수의 서브-샘플링된 표현인, 비디오 데이터의 처리 장치.
  22. 제 12 항에 있어서,
    상기 하나 이상의 프로세서는 추가로 상기 DRA 루마 스케일 값을 결정하도록 구성되고, 상기 DRA 루마 스케일 값을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서는 비트스트림으로부터 상기 DRA 루마 스케일 값의 정수 성분 및 상기 DRA 루마 스케일 값의 분수 성분을 나타내는 신택스 엘리먼트를 파싱하도록 구성되는, 비디오 데이터의 처리 장치.
  23. 제 12 항에 있어서,
    상기 장치는 무선 통신 장치를 포함하는, 비디오 데이터의 처리 장치.
  24. 실행될 때, 하나 이상의 프로세서로 하여금
    루마 동적 범위 조정 (dynamic range adjustment: DRA) 스케일 값에 기초하여 크로마 동적 범위 조정 (DRA) 스케일 값을 조정하게 하고,
    루마 조정된 크로마 DRA 스케일 값에 기초하여 정수 성분 및 분수 성분을 포함하는 크로마 양자화 파라미터 (QP) 를 결정하게 하고,
    크로마 QP 의 정수 성분에 기초하여 정수 크로마 QP 오프셋을 결정하게 하고,
    크로마 QP 의 분수 성분에 기초하여 분수 크로마 QP 오프셋을 결정하게 하고,
    상기 정수 크로마 QP 오프셋 및 상기 분수 크로마 QP 오프셋에 기초하여 DRA 크로마 스케일 조정 값을 결정하게 하고, 그리고
    상기 DRA 크로마 스케일 조정 값에 기초하여 비디오 데이터를 처리하게 하는 명령이 저장된 비-일시적 컴퓨터-판독가능 저장 매체.
KR1020227029350A 2020-03-05 2021-03-05 결합된 픽셀/변환 기반 양자화에 의한 비디오 코딩을 위한 양자화 파라미터 제어 방법 KR20220146469A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202062985776P 2020-03-05 2020-03-05
US62/985,776 2020-03-05
US17/192,335 US11558616B2 (en) 2020-03-05 2021-03-04 Methods for quantization parameter control for video coding with joined pixel/transform based quantization
US17/192,335 2021-03-04
PCT/US2021/021165 WO2021178858A1 (en) 2020-03-05 2021-03-05 Methods for quantization parameter control for video coding with joined pixel/transform based quantization

Publications (1)

Publication Number Publication Date
KR20220146469A true KR20220146469A (ko) 2022-11-01

Family

ID=77556083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227029350A KR20220146469A (ko) 2020-03-05 2021-03-05 결합된 픽셀/변환 기반 양자화에 의한 비디오 코딩을 위한 양자화 파라미터 제어 방법

Country Status (7)

Country Link
US (1) US11558616B2 (ko)
EP (1) EP4115612A1 (ko)
KR (1) KR20220146469A (ko)
CN (1) CN115152213A (ko)
BR (1) BR112022017036A2 (ko)
TW (1) TW202141979A (ko)
WO (1) WO2021178858A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11652996B2 (en) * 2021-05-25 2023-05-16 Tencent America LLC Method and apparatus for video coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9451258B2 (en) 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
US9414054B2 (en) 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
US20160309154A1 (en) * 2015-04-17 2016-10-20 Qualcomm Incorporated Dynamic range adjustment for high dynamic range and wide color gamut video coding
WO2016199409A1 (en) * 2015-06-07 2016-12-15 Sharp Kabushiki Kaisha Systems and methods for optimizing video coding based on a luminance transfer function or video color component values
US10244249B2 (en) * 2015-09-21 2019-03-26 Qualcomm Incorporated Fixed point implementation of range adjustment of components in video coding
US10129558B2 (en) * 2015-09-21 2018-11-13 Qualcomm Incorporated Supplement enhancement information (SEI) messages for high dynamic range and wide color gamut video coding
US10200701B2 (en) * 2015-10-14 2019-02-05 Qualcomm Incorporated HDR and WCG coding architecture with SDR backwards compatibility in a single bitstream for video coding
US10448056B2 (en) * 2016-07-15 2019-10-15 Qualcomm Incorporated Signaling of quantization information in non-quadtree-only partitioned video coding
KR20180074150A (ko) * 2016-12-23 2018-07-03 삼성전자주식회사 Sao 필터링을 포함하는 비디오 데이터의 부호화를 위한 방법 및 장치
US10728559B2 (en) * 2017-07-07 2020-07-28 Qualcomm Incorporated Precision of computation and signaling of dynamic range adjustment and color remapping information
US11019339B2 (en) * 2017-07-12 2021-05-25 Futurewei Technologies, Inc. Fractional quantization parameter offset in video compression
US10778978B2 (en) * 2017-08-21 2020-09-15 Qualcomm Incorporated System and method of cross-component dynamic range adjustment (CC-DRA) in video coding
US10812798B2 (en) * 2017-10-19 2020-10-20 Qualcomm Incorporated Chroma quantization parameter (QP) offset
US10681358B2 (en) 2017-12-19 2020-06-09 Qualcomm Incorporated Quantization parameter control for video coding with joined pixel/transform based quantization
US11259023B2 (en) * 2018-04-12 2022-02-22 Qualcomm Incorporated Harmonization of transform-based quantization and dynamic range adjustment scale derivation in video coding

Also Published As

Publication number Publication date
EP4115612A1 (en) 2023-01-11
US20210281844A1 (en) 2021-09-09
US11558616B2 (en) 2023-01-17
TW202141979A (zh) 2021-11-01
CN115152213A (zh) 2022-10-04
WO2021178858A1 (en) 2021-09-10
BR112022017036A2 (pt) 2022-10-11

Similar Documents

Publication Publication Date Title
KR102277879B1 (ko) 비디오 코딩을 위한 동일 범위들 및 다른 dra 파라미터들에 대한 시그널링 메커니즘들
KR20220020266A (ko) 비디오 코딩에서 저주파수 분리불가능한 변환을 위한 변환 및 마지막 유의 계수 위치 시그널링
US20140376611A1 (en) Adaptive color transforms for video coding
CN111869210B (zh) 推导用于视频译码的动态范围调整(dra)参数
TWI807008B (zh) 在視訊寫碼中之基於變換之量化及動態範圍調整尺度推導之協調
KR20200099535A (ko) 결합된 픽셀/변환 기반 양자화를 이용한 비디오 코딩을 위한 양자화 파라미터 제어
US20200288126A1 (en) Reshaping filter average calculation for video coding
TWI793308B (zh) 經解碼圖像緩衝器管理及動態範圍調整
JP2022523789A (ja) 変換スキップモードのための係数コーディング
WO2020018720A1 (en) Combined inverse dynamic range adjustment (dra) and loop filter technique
KR20190033558A (ko) 인-루프 샘플 프로세싱을 위한 비디오 코딩 툴들
US11558616B2 (en) Methods for quantization parameter control for video coding with joined pixel/transform based quantization
US11533512B2 (en) Dynamic range adjustment parameter signaling and enablement of variable bit depth support
US11463737B2 (en) Signaling of dynamic range adjustment parameters for decoded picture buffer management and dynamic range
US20240098293A1 (en) Encoding high dynamic range video data
TW202415070A (zh) 編碼高動態範圍視頻資料