KR102540022B1 - 인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보 - Google Patents

인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보 Download PDF

Info

Publication number
KR102540022B1
KR102540022B1 KR1020217000944A KR20217000944A KR102540022B1 KR 102540022 B1 KR102540022 B1 KR 102540022B1 KR 1020217000944 A KR1020217000944 A KR 1020217000944A KR 20217000944 A KR20217000944 A KR 20217000944A KR 102540022 B1 KR102540022 B1 KR 102540022B1
Authority
KR
South Korea
Prior art keywords
parameter
slice
value
flag
segment
Prior art date
Application number
KR1020217000944A
Other languages
English (en)
Other versions
KR20210019530A (ko
Inventor
리카르드 셰베르그
미트라 담가니안
페르 에너스턴
마르틴 페테르손
Original Assignee
텔레폰악티에볼라겟엘엠에릭슨(펍)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텔레폰악티에볼라겟엘엠에릭슨(펍) filed Critical 텔레폰악티에볼라겟엘엠에릭슨(펍)
Publication of KR20210019530A publication Critical patent/KR20210019530A/ko
Application granted granted Critical
Publication of KR102540022B1 publication Critical patent/KR102540022B1/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/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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/179Methods 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 scene or a shot
    • 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/188Methods 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 video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

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

Abstract

화상 파라미터 세트(PPS) 및 제 1 슬라이스 세트를 포함하는 비트스트림을 디코딩하기 위해 디코더(260, 600, 701)에 의해 수행되는 방법(400)은 화상 파라미터 세트를 획득하는 단계(s402)를 포함한다. 방법은 또한 지표 값을 획득하기 위해 화상 파라미터 세트에 포함된 구문 요소를 디코딩하는 단계(s404)를 포함한다. 디코더는 지표 값이 제 1 값으로 설정되면 디코더가 비트스트림에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하고, 그렇지 않으면 디코더가 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하도록 구성된다. 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함하면, 이러한 파라미터 값은 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하는데 사용된다.

Description

인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보
본 개시는 비디오 코딩 및 디코딩에 관한 것이다.
1.1 HEVC 및 VVC
HEVC(High Efficiency Video Coding)는 ITU-T와 MPEG에 의해 표준화된 블록 기반 비디오 코덱이다. HEVC 비디오 코덱은 시간 및 공간 예측을 모두 활용한다. 공간 예측은 현재 화상(picture) 내에서 인트라(intra; I) 예측을 사용하여 달성된다. 시간 예측은 이전에 디코딩된 참조 화상(reference picture)으로부터 블록 레벨 상에서 단방향(P) 또는 양방향(B) 인터 예측(inter prediction)을 사용하여 달성된다. 인코더에서, 원래 픽셀 데이터와 예측된 픽셀 데이터 간의 차이(잔차(residual)라고 함)는 주파수 도메인으로 변환되고 양자화된 다음, 예를 들어 또한 엔트로피 코딩되는 예측 모드 및 모션 벡터와 같은 필요한 예측 파라미터와 함께 전송되기 전에 엔트로피 코딩된다. 디코더는 잔차를 획득하기 위해 엔트로피 디코딩, 역 양자화 및 역 변환을 수행한 다음, 잔차를 인트라 또는 인터 예측에 부가하여 화상을 재구성한다.
MPEG와 ITU-T는 JVET(Joint Video Experts Team) 내에서 HEVC의 후속 작업을 한다. 개발중인 이 비디오 코덱의 이름은 VVC(Versatile Video Coding)이다. 현재 VVC 초안 사양(draft specificatio)은 JVET 문서 JVET-N1001-v7에서 찾아진다.
1.2 성분(component)
비디오 시퀀스는 각각의 화상이 하나 이상의 성분으로 구성되는 일련의 화상으로 구성된다. 각각의 성분은 샘플 값의 2차원 직사각형 배열로서 설명될 수 있다. 일반적으로, 비디오 시퀀스에서의 화상은 샘플 값이 루마(luma) 값인 하나의 루마 성분 Y와 샘플 값이 크로마(chroma) 값인 2개의 크로마 성분 Cb 및 Cr의 3개의 성분로 구성된다. 또한, 일반적으로 크로마 성분의 크기는 압축에서 비트를 절감하기 위해 각각의 치수에서 루마 성분보다 2배 더 작다. 예를 들어, HD 화상의 루마 성분의 크기는 1920x1080이고, 크로마 성분은 각각 960x540의 치수이다. 성분은 때때로 색상 성분라고 한다.
1.3 블록 및 유닛
블록은 샘플 값의 하나의 2차원 배열(또는 줄여서 "샘플")이다. 비디오 코딩에서, 각각의 성분은 블록으로 분할되고, 코딩된 비디오 비트스트림은 일련의 코딩된 블록으로 구성된다. 일반적으로 비디오 코딩에서는 화상이 화상의 특정 영역을 커버하는 유닛으로 분할된다. 각각의 유닛은 특정 영역을 구성하는 모든 성분으로부터의 모든 블록으로 구성되며, 각각의 블록은 완전히 하나의 유닛에 속한다. H.264의 매크로 블록과 HEVC의 코딩 유닛(coding unit; CU)이 유닛의 예이다.
블록은 대안으로 코딩에 사용되는 변환이 적용되는 2차원 배열로서 정의될 수 있다. 이러한 블록을 "변환 블록(transform block)"으로서 알려져 있다. 대안으로, 블록은 단일 예측 모드가 적용되는 2차원 배열로서 정의될 수 있다. 이러한 블록은 "예측 블록"이라고 한다. 본 개시에서, 단어 블록(word block)은 이러한 정의 중 하나와 관련이 없지만, 본 명세서에서의 설명은 어느 하나의 정의에 적용될 수 있다.
1.4 NAL 유닛
HEVC 및 VVC는 모두 NAL(Network Abstraction Layer)을 정의한다. HEVC 및 VVC의 모든 데이터(즉, VCL(Video Coding Layer) 데이터 또는 비-VCL 데이터 둘 다)는 NAL 유닛으로 캡슐화된다. VCL NAL 유닛은 샘플 값을 나타내는 데이터를 포함하며, 즉, VCL NAL 유닛은 "샘플 데이터"를 포함한다. 비-VCL NAL 유닛은 파라미터 세트 및 SEI(supplemental enhancement information) 메시지와 같은 관련 데이터를 포함한다. HEVC 및 VVC의 NAL 유닛은 NAL 유닛의 NAL 유닛 타입, NAL 유닛이 속하는 계층의 계층 ID, 및 NAL 유닛이 속하는 하위 계층의 시간 ID를 지정하는 NAL 유닛 헤더로 시작된다. NAL 유닛 타입은 NAL 유닛으로 반송되는 데이터의 타입을 식별한다.
HEVC에서, MPEG-2 스트림 계층 PES(packetized elementary stream) 시작 코드 에뮬레이션(emulation)을 피하기 위해 forbidden_zero_bit가 시그널링되고, NAL 유닛 헤더의 nal_unit_type 구문 요소(syntax element)에서는 NAL 유닛 타입이 전송된다. HEVC의 NAL 유닛 헤더에 대한 구문 요소는 표 1에 도시되고, VVC 초안 사양 JVET-N1001-v7의 현재 버전에서의 NAL 유닛 헤더에 대한 구문 요소는 표 2에 도시되어 있다.
표 1 - HEVC NAL 유닛 헤더 구문
nal_unit_header() { 설명자
forbidden_zero_bit f(1)
nal_unit_type u(6)
nuh_layer_id u(6)
nuh_temporal_id_plus1 u(3)
}
표 2 - VVC 초안 사양의 현재 버전에 대한 NAL 유닛 헤더 구문
nal_unit_header() { 설명자
zero_tid_required_flag u(1)
nuh_temporal_id_plus1 u(3)
nal_unit_type_lsb u(4)
nuh_layer_id u(7)
nuh_reserved_zero_bit u(1)
}
VVC의 현재 버전에서, zero_tid_required_flag는 NAL 유닛 헤더의 제 1 비트로서 시그널링된다. 이러한 플래그가 1과 같을 때, nuh_temporal_id_plus1은 1과 같아야 한다. 그런 다음, zero_tid_required_flag는 nal_unit_type_lsb와 함께 사용되어, NalUnitType = (zero_tid_required_flag << 4) + nal_unit_type_lsb에 따라 NAL 유닛 타입을 도출할 수 있다.
디코더 또는 비트스트림 파서(parser)는 NAL 유닛 헤더를 살펴본 후 NAL 유닛 헤더가 어떻게 처리되어야 하는지, 예를 들어 파싱(parsing)되고 디코딩되어야 하는지를 결정할 수 있다. NAL 유닛의 나머지 바이트는 NAL 유닛 타입에 의해 나타내어진 타입의 페이로드이다. VVC 비트스트림(및 HEVC 비트스트림)은 NAL 유닛의 시퀀스로 구성된다. 비트스트림은 송신기에 의해 네트워크를 통해 전송되거나 저장 유닛에 저장될 수 있다. 따라서, 디코더는 송신기로부터 수신하거나 저장 유닛으로부터 이를 검색함으로써 비트스트림을 획득할 수 있다.
NAL 유닛 타입은 NAL 유닛이 어떻게 파싱되고 디코딩되어야 하는지를 나타내고 정의한다. VCL NAL 유닛은 현재 화상의 화상 타입에 대한 정보를 제공한다. VVC 초안 사양의 현재 버전의 NAL 유닛 타입은 표 3에 도시되어 있다.
디코딩 순서는 NAL 유닛이 디코딩되어야 하는 순서이며, 이는 비트스트림 내의 NAL 유닛의 순서와 동일하다. 디코딩 순서는 디코딩된 화상이 디코더에 의해 예컨대 디스플레이를 위해 출력되는 순서인 출력 순서와 상이할 수 있다.
표 3 - VVC 초안 사양의 현재 버전에서의 NAL 유닛 타입
Nal 유닛 타입 Nal 유닛 타입의 이름 NAL 유닛 및 RBSP 구문 구조의 내용 NAL 유닛 타입 클래스
0 PPS_NUT 화상 파라미터 세트
pic_parameter_set_rbsp()
비-VCL
1 AUD_NUT 액세스 유닛 구분 문자
access_unit_delimiter_rbsp()
비-VCL
2
3
PREFIX_SEI_NUT
SUFFIX_SEI_NUT
부가 향상 정보
sei_rbsp()
비-VCL
4 APS_NUT 적응 파라미터 세트
adaptation_parameter_set_rbsp()
비-VCL
5..7 RSV_NVCL5..
RSV_NVCL7
예약됨 비-VCL
8 TRAIL_NUT 비-STSA 트레일링 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
9 STSA_NUT STSA 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
10 RADL_NUT RADL 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
11 RASL_NUT RASL 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
12..15 RSV_VCL_12..
RSV_VCL_15
예약된 비-IRAP VCL NAL 유닛 타입 VCL
16 DPS_NUT 디코딩 파라미터 세트
decoding_parameter_set_rbsp()
비-VCL
17 SPS_NUT 시퀀스 파라미터 세트
seq_parameter_set_rbsp()
비-VCL
18 EOS_NUT 시퀀스의 끝
end_of_seq_rbsp()
비-VCL
19 EOB_NUT 비트스트림의 끝
end_of_bitstream_rbsp()
비-VCL
20 VPS_NUT 비디오 파라미터 세트
video_parameter_set_rbsp()
비-VCL
21..23 RSV_NVCL21..
RSV_NVCL23
예약됨 비-VCL
24
25
IDR_W_RADL
IDR_N_LP
IDR 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
26 CRA_NUT CRA 화상의 코딩된 슬라이스
slice_layer_rbsp()
VCL
27 GRA_NUT 점진적 랜덤 액세스 화상의 코딩된 슬라이스
picture slice_layer_rbsp()
VCL
28..31 UNSPEC28..
UNSPEC31
지정되지 않음 비-VCL
1.5 IRAP(intra random access point) 화상 및 코딩된 비디오 시퀀스(coded video sequence; CVS).
HEVC 및 현재 VVC 초안 사양에서의 단일 계층 코딩에 대해, 액세스 유닛(access unit; AU)은 단일 화상의 코딩된 표현(coded representation)이다. AU는 여러 VCL(video coding layer) NAL 유닛 및 비-VCL NAL 유닛으로 구성될 수 있다. AU는 선택적으로 AU의 시작과 화상에서 허용되는 슬라이스의 타입, 즉 I, I-P 또는 I-P-B를 나타내는 액세스 유닛 구분 문자(access unit delimiter; AUD)로 시작할 수 있다.
HEVC에서의 IRAP(intra random access point) 화상은 디코딩 프로세스에서 예측을 위해 자신 이외의 어떤 화상도 참조하지 않는 화상이다. HEVC에서의 디코딩 순서에서 비트스트림의 제 1 화상은 IRAP 화상이어야 하지만 IRAP 화상은 부가적으로 또한 비트스트림에서 나중에 나타날 수 있다. HEVC는 3가지 타입의 IRAP 화상, 즉 BLA(break link access) 화상, IDR(instantaneous decoder refresh) 화상 및 CRA(clean random access) 화상을 지정한다.
HEVC에서의 코딩된 비디오 시퀀스(coded video sequence; CVS)는 IRAP AU에서 시작하여 디코딩 순서에 다음 IRAP AU를 포함하지 않는 일련의 AU이다.
IDR 화상은 항상 새로운 CVS를 시작한다. IDR 화상은 RADL(random access decodable leading) 화상과 관련될 수 있다. IDR 화상은 RASL 화상과 관련되지 않는다.
HEVC에서의 BLA 화상은 또한 새로운 CVS를 시작하고, IDR 화상과 디코딩 프로세스에 동일한 영향을 미친다. 그러나, HEVC의 BLA 화상은 비어 있지 않은 참조 화상 세트를 지정하는 구문 요소를 포함할 수 있다. BLA 화상은 RASL 화상과 관련될 수 있으며, RASL 화상은 비트스트림에 존재하지 않을 수 있는 화상에 대한 참조를 포함할 수 있기 때문에 디코더에 의해 출력되지 않고 디코딩 가능하지 않을 수있다. BLA 화상은 또한 디코딩되는 RADL 화상와 관련될 수 있다. BLA 화상은 현재 버전의 VVC에 정의되어 있지 않다.
CRA 화상은 관련된 RADL 또는 RASL 화상을 가질 수 있다. BLA 화상과 마찬가지로, CRA 화상은 비어 있지 않은 참조 화상 세트를 지정하는 구문 요소를 포함할 수 있다. CRA 화상의 경우, 관련된 RASL 화상이 비트스트림에 존재하지 않는 화상에 대한 참조를 포함할 수 있음에 따라 디코딩이 가능하지 않을 수 있기 때문에 디코더에 의해 출력되지 않음을 지정하도록 플래그가 설정될 수 있다. CRA는 CVS를 시작할 수 있다.
현재 버전의 VVC 초안 사양에서, CVS는 CVS 시작(CVS start; CVSS) 액세스 유닛에서 시작되며, 이는 IRAP 화상, 즉 IDR 또는 CRA 화상 또는 점진적 랜덤 액세스(gradual random access; GRA) 화상을 포함할 수 있다.
GRA 화상은 본질적으로 전체 IRAP 화상이 너무 많은 지연을 유발하는 저 지연 코딩을 위해 인코딩된 비트스트림에서 랜덤 액세스를 위해 사용된다. GRA 화상은 각각의 화상이 단지 부분적으로 인트라 코딩되는 화상별로 비디오를 업데이트하는 점진적 인트라 리프레시(gradual intra refresh)를 사용할 수 있다. 이는 비트스트림이 GRA 화상에서 조정된 경우 비디오가 완전히 리프레시되고 출력 준비가 될 때 GRA 화상으로 시그널링된다. GRA는 CVS를 시작할 수 있다.
1.6 파라미터 세트
HEVC 및 VVC는 1) 화상 파라미터 세트(picture parameter set; PPS), 2) 시퀀스 파라미터 세트(sequence parameter set; SPS) 및 3) 비디오 파라미터 세트(video parameter set; VPS)의 3가지 타입의 파라미터 세트를 지정한다. PPS는 하나 이상의 화상에 공통인 데이터를 포함하고, SPS는 코딩된 비디오 시퀀스(CVS)에 공통인 데이터를 포함하며, VPS는 다수의 CVS에 공통인 데이터를 포함한다.
VVC의 현재 버전은 또한 적응 파라미터 세트(adaptation parameter set; APS) 및 디코더 파라미터 세트(decoder parameter set; DPS)의 2개의 부가적인 파라미터 세트를 지정한다. APS는 적응형 루프 필터(adaptive loop filter; ALF) 도구와 루마 매핑 및 크로마 스케일링(luma mapping and chroma scaling; LMCS) 도구에 필요한 파라미터를 반송한다. DPS는 디코딩 세션 동안 변경되지 않을 수 있는 정보를 지정하고, 디코더가 예를 들어 허용된 하위 계층의 최대 수에 대해 알 수 있다. DPS의 정보는 디코딩 프로세스의 동작에 필요하지 않다.
1.7 타일(tile) 및 브릭(brick)
초안 VVC 비디오 코딩 표준은 화상을 공간적으로 독립적인 직사각형 영역(rectangular spatially independent region)으로 분할하는 타일이라고 하는 도구를 포함한다. 초안 VVC 코딩 표준의 타일은 HEVC에서 사용되는 타일과 유사하지만, 2 단계 분할 메커니즘을 갖고 있다. 타일을 사용하여, VVC에서의 화상은 타일이 행과 열의 교차점인 샘플의 행과 열로 분할될 수 있다. 예를 들어, 화상은 4 개의 타일 행과 5개의 타일 열로 분할되어 화상에 대해 총 20개의 타일을 생성할 수 있다.
타일 구조는 행의 두께(즉, 높이) 및 열의 폭을 지정함으로써 PPS에서 시그널링된다. 개별 행과 열은 크기가 상이할 수 있지만, 분할은 항상 각각 왼쪽에서 오른쪽으로, 위에서 아래로 전체 화상에 걸쳐 있다.
동일한 화상의 타일 사이에는 디코딩 의존성(decoding dependency)이 없다. 이것은 인트라 예측, 엔트로피 코딩을 위한 컨텍스트 선택 및 모션 벡터 예측을 포함한다. 하나의 예외는 인루프 필터링 의존성(in-loop filtering dependency)이 일반적으로 타일 간에 허용된다는 것이다.
VVC에서의 2 단계 타일 분할은 HEVC에서와 같이 화상을 타일로 분할함으로써 시작된다. 그런 다음, 각각의 타일은 선택적으로 수평 경계에 의해 브릭으로 분할될 수 있다. 현재 VVC 사양 초안에서, 브릭이라는 단어는 더 이상 브릭으로 분할되지 않는 타일에도 사용된다.
1.8 슬라이스
HEVC에서의 슬라이스의 개념은 화상을 독립적으로 코딩된 하나 이상의 슬라이스로 분할하며, 여기서 화상의 하나의 슬라이스의 디코딩은 동일한 화상의 다른 슬라이스와 무관한다. 동일한 화상의 슬라이스에 대해 상이한 코딩 타입이 사용될 수 있으며, 즉, 슬라이스는 I-슬라이스, P-슬라이스 또는 B-슬라이스일 수 있다. 슬라이스의 주요 목적은 데이터 손실의 경우에 재동기화를 가능하게 하는 것이다.
VVC의 현재 버전에서, 슬라이스는 다수의 완전한 타일 또는 하나의 타일의 완전한 브릭의 연속 시퀀스로만 구성된다. 각각의 슬라이스는 개별 슬라이스 및 슬라이스 데이터에 대해 설정될 수 있는 파라미터를 포함하는 슬라이스 헤더를 갖는다. 일부 파라미터는 화상의 모든 슬라이스에 대해 동일하도록 제한된다. CVS의 각각의 슬라이스는 별개의 VCL NAL 유닛으로 반송된다. VVC 초안 사양의 이전의 버전에서, 슬라이스는 타일 그룹이라고 한다.
특정 과제가 존재한다. 예를 들어, VVC 초안 사양의 현재 버전에서, 슬라이스 헤더에서 시그널링된 하나 이상의 특정 파라미터는 전체 비트스트림에 대해 일정하게 유지될 수 있다. 따라서, 모든 슬라이스 헤더에서 이러한 파라미터에 대해 동일한 값을 시그널링하면 압축 효율에 불필요한 불이익이 발생한다.
이러한 비효율은 예를 들어 1) 세그먼트 세트에 포함된 각각의 세그먼트에 대해(예를 들어, 특정 CVS에 포함된 각각의 슬라이스에 대해) 때때로 일정하게 유지되고 때때로 일정하게 유지되지 않는 값을 갖는 적어도 하나의 파라미터를 결정하고, 2) 예를 들어 특정 파라미터 세트(예를 들어, 특정 CVS에 포함된 파라미터 세트)에 정보를 포함함으로써 감소될 수 있으며, 여기서 정보는, i) 세그먼트 세트에 포함된 각각의 세그먼트는 파라미터에 상응하는 파라미터 값을 포함하고(예를 들어, 각각의 세그먼트는 파라미터 값이 도출될 수 있는 코드워드(예를 들어, 구문 요소)를 포함함), ii) 파라미터 세트는 파라미터에 상응하는 파라미터 값을 포함하며, 이러한 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있고, iii) 파라미터에 상응하는 디폴트 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있거나, iv) 파라미터에 상응하는 파라미터 값은 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 도출된 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있다. 이러한 방식으로, 세그먼트 세트에 포함된 각각의 세그먼트의 파라미터 값을 시그널링하는 대신에 특정 세그먼트 세트의 모든 세그먼트에 사용될 수 있는 파라미터 값을 파라미터 세트에서 시그널링함으로써 비트가 절감될 수 있다.
따라서, 일 양태에서, 비트스트림을 디코딩하기 위해 디코더에 의해 수행되는 디코딩 방법이 제공되며, 비트스트림은 화상 파라미터 세트(picture parameter set; PPS) 및 제 1 슬라이스 세트를 포함한다. 방법은 디코더가 화상 파라미터 세트를 획득하는 단계를 포함한다. 방법은 또한 디코더가 지표 값(indicator value)을 획득하기 위해 화상 파라미터 세트에 포함된 제 1 구문 요소를 디코딩하는 단계를 포함한다. 디코더는 지표 값이 제 1 값으로 설정되면 비트스트림에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정되고, 그렇지 않으면 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정되도록 구성된다. 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함하면, 파라미터 값은 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하는데 사용된다.
다른 양태에서, 인코더에 의해 수행되는 인코딩 방법이 제공된다. 방법은 인코더가 제 1 슬라이스 세트를 생성하는 단계를 포함한다. 방법은 또한 인코더가 화상 파라미터 세트를 생성하는 단계를 포함하며, 화상 파라미터 세트는 제 1 값 또는 제 2 값으로 설정되는 제 1 코드워드를 포함한다. 제 1 코드워드가 제 1 값으로 설정되면, 제 1 코드워드는 인코더에 의해 생성된 화상 헤더가 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타내고, 제 1 코드워드가 제 2 값으로 설정될 때, 제 1 코드워드는 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타낸다.
다른 양태에서, 처리 회로에 의해 실행될 때, 처리 회로가 본 명세서에 개시된 방법 중 어느 방법을 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램이 제공된다. 다른 양태에서, 컴퓨터 프로그램을 포함하는 캐리어가 제공되며, 캐리어는 전자 신호, 광학 신호, 무선 신호 및 컴퓨터 판독 가능 저장 매체 중 하나이다.
다른 양태에서, 상술한 디코딩 방법을 수행하는 디코더가 제공된다. 일 실시예에서, 디코더는 컴퓨터 판독 가능한 저장 매체 및 저장 매체에 결합된 처리 회로를 포함하며, 디코더는 디코딩 방법을 수행하도록 구성된다.
다른 양태에서, 상술한 인코딩 방법을 수행하는 인코더가 제공된다. 일 실시예에서, 인코더는 컴퓨터 판독 가능한 저장 매체 및 저장 매체에 결합된 처리 회로를 포함하며, 인코더는 인코딩 방법을 수행하도록 구성된다.
본 명세서에 개시된 실시예의 이점은, 비트스트림의 적어도 일부에서(예를 들어, CVS에서)에서 일정하게 유지되는 각각의 파라미터에 대해, 세그먼트(예를 들어, 슬라이스) 레벨에서 파라미터에 대한 파라미터 값을 시그널링할 필요가 없다는 것이며, 이는 비트를 절감하고, 전체 압축 효율을 향상시킨다.
도 1은 일 실시예에 따른 비디오 인코더의 개략적인 블록도이다.
도 2는 일 실시예에 따른 비디오 디코더의 개략적인 블록도이다.
도 3은 일 실시예에 따른 인코딩된 비디오 비트스트림을 도시한다.
도 4는 일 실시예에 따른 디코딩 프로세스를 예시하는 흐름도이다.
도 5는 일 실시예에 따른 인코딩 프로세스를 예시하는 흐름도이다.
도 6은 일 실시예에 따른 장치의 블록도이다.
도 7a는 일 실시예에 따른 비디오 디코딩 장치의 블록도이다.
도 7b는 일 실시예에 따른 비디오 인코딩 장치의 블록도이다.
본 명세서에 설명된 실시예는 비디오 인코더 또는 비디오 디코더에서 사용될 수 있다.
도 1은 일 실시예에 따른 비디오 인코더(140)의 개략적인 블록도이다. 현재 픽셀 블록은 동일한 프레임 또는 이전 프레임에서 이미 제공된 픽셀 블록으로부터 모션 추정기(motion estimator)(150)를 사용하여 모션 추정을 수행함으로써 예측된다. 모션 추정의 결과는 인터 예측의 경우에 참조 블록과 관련된 모션 또는 변위 벡터이다. 모션 벡터는 모션 보상기(150)에 의해 픽셀 블록의 인터 예측을 출력하기 위해 사용될 수 있다. 인트라 예측기(149)는 현재 픽셀 블록의 인트라 예측을 계산한다. 모션 추정기/보상기(150) 및 인트라 예측기(149)로부터의 출력은 현재 픽셀 블록에 대한 인트라 예측 또는 인터 예측을 선택하는 선택기(151)에 입력된다. 선택기(151)로부터의 출력은 또한 현재 픽셀 블록의 픽셀 값을 수신하는 가산기(141)의 형태로 오차 계산기(error calculator)에 입력된다. 가산기(141)는 픽셀 블록과 그 예측 사이의 픽셀 값의 차이로서 잔차 오차(residual error)를 계산하여 출력한다. 오차는 이산 코사인 변환과 같이 변환기(142)에서 변환되고, 양자화기(143)에 의해 양자화된 후, 엔트로피 인코더와 같이 인코더(144)에서 코딩이 이어진다. 인터 코딩에서, 또한 추정된 모션 벡터는 현재 픽셀 블록의 코딩된 표현을 생성하기 위해 인코더(144)로 보내진다. 현재 픽셀 블록에 대한 변환 및 양자화된 잔차 오차는 또한 원래의 잔차 오차를 검색하기 위해 역 양자화기(145) 및 역 변환기(146)에 제공된다. 이러한 오차는 다음 픽셀 블록의 예측 및 코딩에 사용될 수 있는 픽셀의 참조 블록을 생성하기 위해 가산기(147)에 의해 모션 보상기(150) 또는 인트라 예측기(149)로부터 출력된 블록 예측에 가산된다. 이러한 새로운 참조 블록은 먼저 디블로킹 필터(deblocking filter)(100)에 의해 처리된다. 그 후, 처리된 새로운 참조 블록은 프레임 버퍼(148)에 일시적으로 저장되며, 여기서 이는 인트라 예측기(149) 및 모션 추정기/보상기(150)에 이용 가능하다.
도 2는 일부 실시예에 따른 비디오 디코더(260)의 블록도이다. 디코더(260)는 엔트로피 디코더와 같은 디코더(261)를 포함하여, 양자화 및 변환된 잔차 오차 세트를 획득하기 위해 픽셀 블록의 인코딩된 표현을 디코딩한다. 이러한 잔차 오차는 역 양자화기(262)에 의해 역 양자화되고, 역 변환기(263)에 의해 역 변환되어, 잔차 오차 세트를 제공한다. 이러한 잔차 오차는 가산기(264)에 의해 픽셀의 참조 블록의 픽셀 값에 가산된다. 참조 블록은 인터 예측이 수행되는지 인트라 예측이 수행되는지에 따라 모션 추정기/보상기(267) 또는 인트라 예측기(266)에 의해 결정된다. 이에 따라, 선택기(268)는 가산기(264) 및 모션 추정기/보상기(267) 및 인트라 예측기(266)에 상호 연결된다. 가산기(264)로부터 출력되는 결과적으로 디코딩된 픽셀 블록은 디블록킹 필터(200)에 입력된다. 필터링된 픽셀 블록은 디코더(260)로부터 출력되고, 또한 디코딩될 후속 픽셀 블록에 대한 픽셀의 참조 블록으로서 사용되도록 프레임 버퍼(265)에 일시적으로 제공될 수 있다. 이에 따라 프레임 버퍼(265)는 모션 추정기/보상기(267)에 연결되어, 저장된 픽셀 블록을 모션 추정기/보상기(267)에 이용할 수 있게 한다. 가산기(264)로부터의 출력은 또한 필터링되지 않은 픽셀의 참조 블록으로서 사용될 인트라 예측기(266)에 입력될 수 있다.
상술한 바와 같이, VVC 초안 사양의 현재 버전에서, 슬라이스에서 시그널링된 하나 이상의 특정 파라미터는 전체 비트스트림(또는 CVS와 같은 비트스트림의 일부)에 대해 일정하게 유지될 수 있다. 따라서, 이러한 모든 슬라이스에서 이러한 파라미터에 대해 동일한 값을 시그널링하면 압축 효율에 불필요한 불이익이 발생한다.
VVC의 개발에서, VTM이라는 참조 소프트웨어와 일련의 공통 테스트 조건(common test condition; CTC)은 코덱의 개선 사항을 쉽게 확인하고, 코덱이 적절한 범위로 개발되도록 보장하기 위해 정의되었다. VVC CTC는 1) 모든 화상이 인트라 전용(intra-only)으로 코딩되는 모든 인트라(all intra; AI), 2) IRAP 화상이 주기적 간격으로 코딩된 랜덤 액세스(random access; RA), 3) LDB(low-delay with B-pictures) 및 4) LDP(low-delay with P-pictures)인 4개의 상이한 코딩 조건 세트를 포함한다. 각각의 코딩 조건 세트는 VVC 인코더에 입력하기 위한 구성 설정(configuration setting)과 VVC 코덱을 테스트하기 위해 사용할 테스트 시퀀스 세트를 포함한다.
아래의 표 4에서, VTM 5.0을 사용하는 CTC의 현재 버전의 4개의 테스트 조건 세트 AI, RA, LDB 및 LDP의 각각에 대한 모든 테스트 시퀀스에 대해 어떤 슬라이스 헤더 파라미터(즉, 슬라이스 헤더 구문 요소)가 일정하게 유지되는지를 보여준다.
표 4
슬라이스 파라미터 이름 일정함
AI RA LDB LDP
no_output_of_prior_pics_flag x
slice_sao_luma_flag x
slice_sao_chroma_flag x
tile_group_alf_enabled_flag x
dep_quant_enabled_flag x x x x
partition_constrainst_override_flag x
slice_loop_filter_across_slices_enabled_flag x x x x
short_term_ref_pic_set_sps_flag x x x
inter_ref_pic_set_prediction_flag x
slice_temporal_mvp_enabled_flag x x
mvd_l1_zero_flag x
collocated_from_l0_flag x
num_negative_pics x
num_positive_pics x
reshaper_model_delta_max_bin_idx x
slice_reshaper_ChromaAdj x x
six_minus_max_num_merge_cand x x x x
five_minus_max_num_affine_merge_cand x x x
max_num_merge_cand_minus_max_num_triangle_cand x x
collocated_ref_idx x x x
slice_type x
상술한 비효율은 예를 들어, 1) 세그먼트 세트에 포함된 각각의 세그먼트에 대해(예를 들어, 특정 CVS에 포함된 각각의 슬라이스에 대해) 때때로 일정하게 유지되고 때때로 일정하게 유지되지 않는 값을 갖는 적어도 하나의 파라미터를 결정하고, 2) 예를 들어 특정 파라미터 세트(예를 들어, 특정 CVS에 포함된 파라미터 세트)에 정보를 포함함으로써 감소될 수 있으며, 여기서 정보는, i) 세그먼트 세트에 포함된 각각의 세그먼트는 파라미터에 상응하는 파라미터 값을 포함하고(예를 들어, 세그먼트 세트에 포함된 각각의 세그먼트는 파라미터 값이 도출될 수 있는 코드워드를 포함함), ii) 파라미터 세트는 파라미터에 상응하는 파라미터 값을 포함하며, 이러한 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있고, iii) 파라미터에 상응하는 디폴트 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있거나, iv) 파라미터에 상응하는 파라미터 값은 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 도출된 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있다. 이러한 방식으로, 세그먼트 세트에 포함된 각각의 세그먼트의 파라미터 값을 시그널링하는 대신에 특정 세그먼트 세트의 모든 세그먼트에 사용될 수 있는 파라미터 값을 파라미터 세트에서 시그널링함으로써 비트가 절감될 수 있다.
따라서, 일 실시예에서, CVS에서 항상 일정하게 유지되는 파라미터 값은 바람직하게는 CVS에서, 통상적으로 시퀀스 파라미터 세트(SPS)에서 단한번만 시그널링된다. CVS에서 항상 일정하게 유지되는 파라미터의 예는 비디오의 너비와 높이, 예를 들어 VVC의 현재 버전에서의 pic_width_in_luma_samples 및 pic_height_in_luma_samples이다. 다수의 세그먼트를 가진 CVS에서 항상 변경되는 파라미터 값은 각각의 세그먼트에 대해 시그널링되어야 한다. CVS에서 화상별로(picture-by-picture) 항상 변경되는 예시적인 파라미터는 VVC의 현재 버전에서 화상 순서 카운트 값의 최하위 비트 slice_pic_order_cnt_lsb이다(화상 당 다수의 세그먼트가 있을 때, slice_pic_order_cnt_lsb는 화상의 모든 세그먼트에 대해 동일함). 항상 일정하고 항상 변경되는 파라미터 값 외에도, 세그먼트 간에 때때로 변경되고 전체 CVS에 대해 때때로 일정하게 유지되는 어떤 파라미터 값이 있다.
따라서, 일 실시예에서, CVS에서의 모든 세그먼트에 대해 일정하게 유지될 수 있는 파라미터 세트에 대해, 이는 세트의 각각의 파라미터 값이 파라미터 세트에서 시그널링되는지 파라미터 값이 각각의 세그먼트 헤더, 예를 들어, 슬라이스 헤더에서 시그널링되는지가 파라미터 세트, 예를 들어 SPS에 나타내어진다. 세트의 특정 파라미터 값이 CVS에서 일정하게 유지되면, 파라미터 세트의 파라미터 값을 시그널링함으로써 비트가 절감될 수 있다. 파라미터 값이 CVS에서 모든 세그먼트에 대해 일정하지 않은 경우, 값은 CVS의 각각의 세그먼트 헤더에서 시그널링된다.
도 3은 예시적인 비디오 비트스트림(300)을 예시한다. 비트스트림(300)은 파라미터 세트(PS)(310)(예를 들어, 파라미터 세트를 포함하는 비-VCL NAL 유닛) 및 다수의 세그먼트(예를 들어, 슬라이스를 포함하는 다수의 VCL NAL 유닛)를 포함하는 CVS(301)를 포함한다. 세그먼트(312a 및 312b)가 도시된다. 세그먼트는 샘플 데이터를 포함하는 세그먼트 데이터(SD)를 포함하는 데이터의 유닛이다. 세그먼트는 세그먼트 데이터(SD) 외에 세그먼트 헤더(SH)를 가질 수 있다. VVC 슬라이스는 세그먼트의 예이다. 세그먼트는 또한 화상, 타일 그룹 또는 전체 화상 또는 화상의 일부를 포함하는 일부의 다른 엔티티일 수 있다. 이 예에서, 각각의 세그먼트는 세그먼트 데이터 외에 세그먼트 헤더를 포함한다.
파라미터 세트 또는 세그먼트의 파라미터 값
일 실시예에서, 특정 파라미터의 값( "P"로 표시됨)은 CVS의 모든 세그먼트에 대해 일정할 수 있거나 시나리오에 따라 세그먼트에서 세그먼트로 변경될 수 있다. 예를 들어, 파라미터 P는 (예를 들어, 저-지연 화상 회의 애플리케이션에서) 특정 구성에 대해 일정하게 유지될 수 있지만, 브로드캐스트 시나리오에서는 일정하게 유지되지 않는다. 인코더는 일반적으로 구성되거나 파라미터 P가 CVS에 대해 일정하게 유지되는지 여부를 미리 알고 있다.
본 실시예에서, 지표 값은 파라미터 세트에서 시그널링되며, 여기서 지표 값은 파라미터 P에 대한 값이 파라미터 세트에서 시그널링되는지 CVS의 각각의 세그먼트에 대해 시그널링되는지를 지정한다. 일 실시예에서, 지표 값은 파라미터 세트에 포함된 코드워드(즉, 특정 비트 세트)로부터 도출될 수 있다.
지표 값이 파라미터 값이 파라미터 세트에서 시그널링됨을 지정하면, 파라미터 값은 파라미터 세트에서만 시그널링되고, 그 값은 CVS의 모든 세그먼트에 사용될 수 있다.
지표 값이 파라미터 값이 각각의 세그먼트에 대해 시그널링됨을 지정하면, 본 실시예의 하나의 버전에 대해 각각의 세그먼트에 사용할 파라미터 값은 파라미터 세트가 아닌 각각의 세그먼트에서 시그널링된다.
본 실시예의 다른 버전에서, 파라미터의 값은 먼저 파라미터 세트에 설정된 다음, 파라미터 값이 중복 기록(overwrite)되어야 하는지가 각각의 세그먼트에 대해 결정된다.
본 실시예의 하나의 버전에서, 파라미터의 값이 파라미터 세트 또는 각각의 세그먼트 헤더에서 시그널링되는지의 인디케이션(indication)은 파라미터 세트의 파라미터 값으로부터 별개로 시그널링된다(예를 들어, 지표 값 및 파라미터 값은 각각 상이한 구문 요소에 상응하는 두 개의 상이한 코드워드로 시그널링된다). 이것은 아래의 시퀀스 파라미터 세트(SPS) 및 세그먼트 헤더 구문 테이블과 의미론적 설명에서 예시되며, 여기서 param_X, param_Y 및 param_Z는 SPS에서 시그널링될 수 있는 세그먼트 레벨 파라미터이다.
표 5 - 예시적인 SPS 구문
seq_parameter_set_rbsp( ) { 설명자
...
sps_signal_common_slice_params_in_sps_flag u(1)
if ( sps_signal_common_slice_params_in_sps_flag ) {
       sps_param_X_flag                                                                     u(1)
       sps_param_Y_flag u(1)
       sps_param_Z_flag u(1)
...
if (sps_param_X_flag)
param_X u(1)
if (sps_param_Y_flag)
param_Y u(v)
if (sps_param_Z_flag)
param_Z ue(v)
...
}
...
}
표 6 - 예시적인 세그먼트 헤더 구문
segment_header( ) { 설명자
... ...
if (!sps_param_X_flag)
param_X u(1)
if (!sps_param_Y_flag)
param_Y u(v)
if (!sps_param_Z_flag)
param_Z ue(v)
... ...
}
표 7 - 의미론
sps_signal_common_slice_params_in_sps_flag:
1과 같으면 param_X, param_Y 및 param_Z가 SPS 또는 슬라이스 헤더에 지정될 수 있음을 지정한다.
0과 같으면 param_X, param_Y 및 param_Z가 슬라이스 헤더에 지정되고 sps_param_X_flag, sps_param_Y_flag, sps_param_Z_flag가 0과 같은 것으로 추론되도록 지정한다.
sps_param_X_flag:
1과 같으면 param_X가 SPS에 있음을 지정한다
0과 같으면 param_X가 슬라이스 헤더에 있음을 지정한다.
sps_param_Y_flag:
1과 같으면 param_Y가 SPS에 있음을 지정한다.
0과 같으면 param_Y가 슬라이스 헤더에 있음을 지정한다.
sps_param_Z_flag:
1과 같으면 param_Z가 SPS에 있음을 지정한다.
0과 같으면 param_Z가 슬라이스 헤더에 있음을 지정한다.
본 실시예의 하나의 버전에서, 파라미터의 음이 아닌 정수 값이 파라미터 세트 또는 각각의 세그먼트 헤더에서 시그널링되는지를 나타내는 지표 값은 지표 값이 음이 아닌 정수 파라미터 값이 파라미터 세트에서 시그널링됨을 지정하는 경우에 파라미터 세트의 음이 아닌 정수 파라미터 값과 동일한 코드워드(cw1로 표시됨)에서 시그널링된다. 예를 들어, 코드워드 cw1은 다음과 같은 해석으로 음이 아닌 임의의 정수 값을 취할 수 있다:
cw1 = 0이면, 파라미터 값은 슬라이스 헤더에서 시그널링되고;
그렇지 않으면, 파라미터 값은 cw1 - 1과 같다.
본 실시예의 일 구현에서, 지표 값 indicator_flag 및 음이 아닌 정수 파라미터 값 param_p_value는 다음과 같은 의사 코드(pseudo code)에 따라 파라미터 세트의 제 1 코드워드 cw1로부터 도출된다:
Indicator_flag = cw1>0
if(indicator_flag) {
param_p_value = cw1 - 1
}
다음과 같은 의사 코드는 지표 값이 각각의 세그먼트에 대해 파라미터 값이 시그널링됨을 지정하는 경우에 파라미터 값이 세그먼트 헤더의 제 2 코드워드 cw2로부터 어떻게 도출되는지를 보여준다.
if(!indicator flag) {
param_p_value = cw2
}
본 실시예의 이러한 버전의 하나 이상의 콤팩트한 구현(compact realization)에서, 제 1 코드워드 cw1은 파라미터 세트에서 시그널링되고, 파라미터 값 param_p_value는 다음과 같은 의사 코드에 따라 cw1로부터 도출되며, 여기서 0과 동일한 cw1은 param_p_value가 각각의 세그먼트에서 코드워드 cw2로 시그널링됨을 나타내고, 0보다 큰 cw1은 param_p_value가 파라미터 세트에서 시그널링되고 cw1 - 1 값을 가짐을 나타낸다.
if(! cw1) {
param_p_value = cw2
}
else {
param_p_value = cw1 - 1
}.
상술한 "! cw1" 명령문(statement)은 "cw1>0"으로서 동등하게 표현될 수 있다는 것을 주목한다.
본 실시예의 다른 버전에서, 지표 값은 제 1 파라미터 세트, 예를 들어 SPS에서 시그널링된다. 지표 값이 파라미터 값이 각각의 세그먼트에 대해 시그널링되지 않음을 지정하는 경우, 파라미터 값은 제 2 파라미터 세트, 예를 들어 PPS에서 시그널링된다.
파라미터 P는 CVS에 대해 일정하게 유지될 수 있는 임의의 세그먼트 파라미터, 예를 들어 현재 VTM 버전 5.0의 다음의 파라미터 중 어느 하나일 수 있다:
no_output_of_prior_pics_flag,
slice_sao_luma_flag,
slice_sao_chroma_flag,
tile_group_alf_enabled_flag,
dep_quant_enabled_flag,
partition_constrainst_override_flag,
slice_loop_filter_across_slices_enabled_flag,
short_term_ref_pic_set_sps_flag,
inter_ref_pic_set_prediction_flag,
slice_temporal_mvp_enabled_flag,
mvd_l1_zero_flag,
collocated_from_l0_flag,
num_negative_pics,
num_positive_pics,
reshaper_model_delta_max_bin_idx,
slice_reshaper_ChromaAdj,
six_minus_max_num_merge_cand,
five_minus_max_num_affine_merge_cand,
max_num_merge_cand_minus_max_num_triangle_cand,
collocated_ref_idx
slice_type,
log2_diff_min_qt_min_cb,
max_mtt_hierarchy_depth,
log2_diff_max_bt_min_qt 또는
log2_diff_max_tt_min_qt.
지금까지 하나의 파라미터 P가 논의되었지만, 때때로 CVS에서 일정하게 유지되는 한 번에 하나 이상의 파라미터가 있을 수 있다. 아래의 예시적인 구문에서는 이러한 파라미터를 파라미터 p1, p2,… pN이라고 지칭할 것이다.
표 8 예시적인 SPS 구문
seq_parameter_set_rbsp( ) { 설명자
... ...
sps_param_p1 ue(v)
sps_param_p2 ue(v)
... ...
sps_param_pN ue(v)
... ...
}
0과 같은 sps_param_p1은 param_p1이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_p1은 param_p1의 값이 sps_param_p1 - 1로 설정됨을 지정한다.
0과 같은 sps_param_p2는 param_p1이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_p2는 param_p2의 값이 sps_param_p2 - 1로 설정됨을 지정한다.
0과 같은 sps_param_pN은 param_pN이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_pN은 param_pN의 값이 sps_param_pN - 1로 설정됨을 지정한다.
표 9 - 예시적인 슬라이스 헤더 구문
slice_header( ) { 설명자
... ...
if (!sps_param_p1)
param_p1 ue(v)
if (!sps_param_p2)
param_p2 ue(v)
... ...
if (!sps_param_pN)
param_pN ue(v)
... ...
}
일 실시예에서, 그룹화 플래그가 1로 설정되면, 파라미터 그룹의 모든 파라미터가 파라미터 세트 또는 세그먼트 헤더에서 시그널링될 수 있도록 그룹화 플래그가 사용된다. 그룹화 플래그가 0으로 설정되면, 파라미터 그룹의 파라미터는 항상 슬라이스 헤더에서 시그널링된다. 이것은 아래의 구문과 의미론에 예시되어 있다.
표 10 - 그룹화 플래그를 예시하는 예시적인 SPS 구문
seq_parameter_set_rbsp( ) { 설명자
... ...
grouping_flag u(1)
if ( grouping_flag ) {
sps_param_p1 ue(v)
sps_param_p2 ue(v)
... ...
sps_param_pN ue(v)
}
... ...
}
1과 같은 grouping_flag는 param_p1, param_p2,…, param_pN이 SPS 또는 슬라이스 헤더에 지정될 수 있음을 지정한다. 0과 같은 grouping_flag는 param_p1, param_p2,…, param_pN이 슬라이스 헤더에 지정됨을 지정한다.
0과 같은 sps_param_p1은 param_p1이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_p1은 param_p1의 값이 sps_param_p1 - 1로 설정됨을 지정한다.
0과 같은 sps_param_p2는 param_p2가 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_p2는 param_p2의 값이 sps_param_p2 - 1로 설정됨을 지정한다.
0과 같은 sps_param_pN은 param_pN이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_param_pN은 param_pN의 값이 sps_param_pN - 1로 설정됨을 지정한다.
표 11 - 그룹화 플래그를 예시하는 예시적인 세그먼트 헤더
segment_header( ) { 설명자
... ...
if ( grouping_flag ) {
if (!sps_param_p1)
param_p1 ue(v)
if (!sps_param_p2)
param_p2 ue(v)
... ...
if (!sps_param_pN)
param_pN ue(v)
} else {
param_p1 ue(v)
param_p2 ue(v)
...
param_pN ue(v)
}
...
}
일 실시예에서, 1과 같은 그룹화 플래그는 파라미터 그룹의 파라미터가 이의 디폴트 값(default value)을 사용하고 있음을 지정하고, 0과 같은 그룹화 플래그는 파라미터 그룹의 파라미터가 세그먼트 헤더에서 시그널링됨을 지정한다. 따라서, 본 실시예의 이러한 버전에서, 디폴트 값이 대신 사용되기 때문에 파라미터는 파라미터 세트에서 결코 시그널링되지 않는다.
일 실시예에서, 그룹화 플래그는 비트스트림의 파라미터 값으로부터 도출된다. 예를 들어, 파라미터 세트 또는 세그먼트 헤더에서 파라미터 값을 시그널링하는 선택은 비-IRAP 화상에만 이용할 수 있다.
일 실시예에서, 인코더는 하나 이상의 화상을 코딩된 비디오 스트림(CVS)으로 인코딩하기 위해 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 제 1 파라미터 세트 및 2개 이상의 세그먼트 세트를 포함할 것이다. 제 1 파라미터 세트는 예를 들어 SPS, PPS, DPS, VPS 또는 화상 헤더 파라미터 세트(picture header parameter set; PHPS)일 수 있다.
단계 1: 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는 지를 파라미터 P에 대해 결정한다.
단계 2: 파라미터 세트가 파라미터 P의 값이 파라미터 세트(예를 들어, 제 1 파라미터 세트 또는 다른 파라미터 세트)에서 시그널링되는지 여부를 지정하는 정보를 제공하도록 제 1 파라미터 세트를 구성한다. 예를 들어, 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는 것으로 결정되면, 정보는 파라미터 P의 값이 파라미터 세트에서 시그널링됨을 지정할 것이고, 그렇지 않으면, 정보는 파라미터 P의 값이 CVS의 각각의 세그먼트에 대해 시그널링됨을 지정할 것이다. 파라미터 P의 값이 파라미터 세트에서 시그널링되면, 파라미터 P의 값은 파라미터 P의 값이 파라미터 세트에서 시그널링되는지 여부에 대한 정보를 또한 제공하는 코드워드로 인코딩될 수 있다.
단계 3: CVS의 각각의 세그먼트에 대해, 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지될 것으로 결정되면, 이는 세그먼트에 파라미터 P의 값을 포함한다. 값은 바람직하게는 세그먼트 헤더에 포함된다(예를 들어, 세그먼트 헤더의 코드워드로 인코딩됨).
단계 4: 각각의 세그먼트에 대해, 파라미터 P에 대한 파라미터 값이 세그먼트에 포함되면, 세그먼트에 포함된 파라미터 P의 값을 사용하여 세그먼트의 세그먼트 데이터를 인코딩하고, 그렇지 않으면, 파라미터 세트에 의해 시그널링되는 파라미터 P의 값을 사용하여 세그먼트의 세그먼트 데이터를 인코딩한다.
일 실시예에서, 디코더는 코딩된 비디오 스트림(CVS)으로부터 하나 이상의 화상을 디코딩하기 위해 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 제 1 파라미터 세트 및 2개 이상의 세그먼트를 포함한다.
단계 1: CVS의 제 1 파라미터 세트의 제 1 코드워드로부터 지표 값을 디코딩한다. 지표 값은 1비트 값일 수 있다(예를 들어, 코드워드는 단일 비트로 구성될 수 있음).
단계 2: 파라미터 P의 값이 파라미터 세트에 지정되는지 각각의 세그먼트의 제 2 코드워드에 의해 지정되었는지를 지표 값으로부터 결정한다. 세그먼트에서의 제 2 코드워드의 존재는 지표 값에 따라 달라질 수 있다.
단계 3: 파라미터 P의 값이 파라미터 세트에 지정되는 것으로 결정되면, 파라미터 세트로부터 파라미터 P의 값을 디코딩한다. 파라미터 P의 값은 예를 들어 제 1 코드워드로부터 도출되거나 파라미터 세트의 제 3 코드워드로부터 디코딩될 수 있다.
단계 4: 각각의 세그먼트에 대해, 단계 4A 및 4B를 수행한다.
단계 4A: 파라미터 P의 값이 각각의 세그먼트에 지정되는 것으로 결정되면, 세그먼트의 제 2 코드워드로부터 파라미터 P의 값을 디코딩한다. 제 2 코드워드는 바람직하게는 세그먼트 헤더로부터 디코딩된다.
단계 4B: 파라미터 P의 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩한다.
본 실시예의 변형에서, 지표 값은 파라미터 P의 값이 디코더에 알려진 디폴트 값으로 설정되거나 파라미터 P의 값이 CVS의 각각의 세그먼트에 대해 시그널링됨을 지정한다.
파라미터 값이 1비트 값인 케이스
일부 사용 케이스(use case)에서, 파라미터 P에 대한 파라미터 값은 일반적인 값(generic value) 또는 음이 아닌 정수 값 대신에 부울 값(boolean value)이다. 이러한 사용 케이스의 경우, 파라미터 P는 "플래그 F(flag F)"라고 한다.
실시예에서, 플래그 F가 파라미터 세트에서 시그널링되는지 각각의 세그먼트 헤더에서 시그널링되는지에 대한 인디케이션(indication)은 파라미터 세트의 플래그 F 값과 별개로 시그널링되며, 예를 들어, 지표 값 및 파라미터 값은 두 개의 상이한 코드워드로 시그널링된다.
대안적인 실시예에서, 지표 값이 플래그 F의 값이 파라미터 세트에서 시그널링됨을 지정하면, 지표 값은 플래그 F의 값과 동일한 코드워드로 시그널링된다.
예를 들어, 코드워드는 다음과 같은 해석으로 적어도 3개의 상이한 값 0, 1 및 2를 취할 수 있는 2비트 코드워드(cw로 표시됨)일 수 있다.
cw = 0: 플래그 F의 값은 세그먼트 헤더에 시그널링되고;
cw = 1: 플래그 F의 값은 0이며;
cw>1(예를 들어, cw = 2): 플래그 F의 값은 1이다.
대안적인 실시예에서, cw의 값은 다음과 같은 해석을 갖는다:
cw = 0: 플래그 F의 값이 0이고;
cw = 1: 플래그 F의 값은 1이며;
cw>1(예를 들어, cw = 2): 플래그 F의 값은 세그먼트 헤더에 시그널링된다.
일 실시예에서, 제 1 코드워드 cw1(예를 들어, 2비트 긴 코드워드(2-bit long codeword))은 파라미터 세트에서 시그널링되고, 플래그 F의 값( "flag_f_value"로 표시됨)은 cw1로부터 도출되며, 여기서 0과 같은 cw1의 값은 flag_f_value가 각각의 세그먼트의 코드워드(cw2로 표시됨)에서 시그널링됨을 지정하고, 1 또는 2와 같은 cw1의 값은 flag_f_value =(cw1-1)의 값임을 지정한다. 이것은 다음과 같은 의사 코드에 예시된다.
if(cw1 == 0) {
flag_f_value = cw2
} else {
flag_f_value = cw1-1
}.
다른 실시예에서, 지표 값 indicator_flag 및 플래그 F의 값 flag_f_value는 다음과 같은 의사 코드에 따라 파라미터 세트의 제 1 코드워드 cw1로부터 도출된다:
cw1 == 0이면, indicator_flag = 0이고, 그렇지 않으면, indicator_flag = 1이며;
if(indicator_flag) {
flag_f_value = cw1-1
}.
다음과 같은 의사 코드는 지표 값이 플래그 F의 값이 각각의 세그먼트에 대해 시그널링됨을 지정하는 경우 세그먼트 헤더의 제 2 코드워드(또는 플래그) cw2로부터 플래그 F의 값이 어떻게 도출되는지를 보여준다:
if(! indicator_flag) {
flag_f_value = cw2
}.
일 실시예에서, 지표 값 indicator_flag 및 플래그 F의 값 flag_f_value는 예를 들어 다음에 따라 제 1 코드워드 cw1의 3개의 값으로부터 도출될 수 있다:
표 12 - 코드워드 cw1의 3개의 값으로부터 도출된 indicator_flag 및 flag_f_value
cw1 indicator_flag flag_f_value
0 0 값은 각각의 세그먼트 헤더에 지정됨
10 1 flag_f_value = 0
11 1 flag_f_value = 1
코드워드 cw1은 u(2)와 같은 고정된 코딩 설명자(fixed coding descriptor)로 시그널링될 수 있으며, 이는 2비트가 항상 시그널링된다는 것을 의미한다. 코드워드 cw1은 또한 최대 값(maxVal)이 2로 설정된 잘린 단항 이진화 설명자(truncated unary binarization descriptor)로 시그널링될 수 있으며, 이는 3개의 값, 예를 들어 (0, 10 또는 11)만을 시그널링할 수 있다. 잘린 단항 이진화 설명자는 초안 VVC 사양에서와 같이 구문 테이블에서 tu(v)로 나타내어질 수 있다:
표 13 - 삼진 코딩 설명자의 예
seq_parameter_set_rbsp( ) { 설명자
... ...
sps_or_slice_f1_flag tu(v)
... ...
}
2개의 고정 비트를 사용하는 것과 비교하여 0, 10 또는 11로 cw1을 코딩하는 이점은 flag_f_value가 세그먼트 헤더에 지정될 때마다 하나의 비트만이 시그널링될 필요가 있다는 것이다.
예를 들어,(1, 01, 00) 또는 (10, 11, 0)과 같은 다른 코드워드 값 또는 3개의 값(0, 10, 11)의 조합이 또한 고려될 수 있다.
다음과 같은 예시적인 구문 및 의미론은 플래그 f1, f2,… fN이 지정될 수 있는 방법을 예시한다.
표 14
seq_parameter_set_rbsp( ) { 설명자
... ...
sps_flag_f1 tu(v)
sps_flag_f2 tu(v)
... ...
sps_flag_fN tu(v)
... ...
}
0과 같은 sps_flag_f1은 flag_f1이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_flag_f1은 flag_f1의 값이 sps_flag_f1 - 1로 설정됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_flag_f2는 flag_f2가 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_flag_f2는 flag_f2의 값이 sps_flag_f2 - 1로 설정됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_flag_fN은 flag_fN이 슬라이스 헤더에 있음을 지정한다. 0보다 큰 sps_flag_fN은 flag_fN의 값이 sps_flag_fN - 1로 설정됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
표 15
slice_header( ) { 설명자
... ...
if (!sps_flag_f1)
flag_f1 u(1)
if (!sps_flag_f2)
flag_f2 u(1)
... ...
if (!sps_flag_fN)
flag_fN u(1)
... ...
}
일 실시예에서, 인코더는 하나 이상의 화상을 코딩된 비디오 스트림(CVS)으로 인코딩하기 위해 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 하나의 파라미터 세트 및 둘 이상의 세그먼트를 포함할 것이다.
단계 1: 플래그 F의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는지를 플래그 F에 대해 결정한다.
단계 2: 파라미터 세트의 제 1 코드워드에서 지표 값을 시그널링하며, 여기서 플래그 F의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는 것으로 결정되면, 지표 값은 플래그 F의 값이 파라미터 세트(또는 다른 파라미터 세트)에서 시그널링됨을 지정하며, 그렇지 않으면, 지표 값은 플래그 F의 값이 CVS의 각각의 세그먼트에 대해 시그널링됨을 지정한다.
지표 값이 플래그 F의 값이 파라미터 세트에서 시그널링되는 것으로 지정하면, 단계 3A가 수행되고, 그렇지 않으면 단계 3B가 수행된다.
단계 3A: a) 파라미터 세트에서 플래그 F의 값을 시그널링하고(플래그 F의 값은 예를 들어 지표 값과 함께 제 1 코드워드에서 또는 파라미터 세트의 제 3 코드워드에서 시그널링될 수 있음), b) 각각의 세그먼트에 대해, 플래그 F의 값을 사용하여 세그먼트의 세그먼트 데이터를 인코딩한다.
단계 3B: 각각의 세그먼트에 대해, a) 세그먼트의 제 2 코드워드로 플래그 F의 값을 시그널링하고(제 2 코드워드는 바람직하게는 세그먼트 헤더에서 시그널링됨), b) 세그먼트에 대한 플래그 F의 값을 사용하여 세그먼트의 세그먼트 데이터를 인코딩한다.
디코더는 코딩된 비디오 스트림(CVS)으로부터 하나 이상의 화상을 디코딩하기 위해 본 실시예에 대한 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 하나의 파라미터 세트 및 둘 이상의 세그먼트를 포함한다.
단계 1: CVS의 파라미터 세트에서의 제 1 코드워드로부터 지표 값을 디코딩한다. 파라미터 세트는 예를 들어 SPS, PPS, DPS, VPS 또는 PHPS일 수 있다. 지표 값은 1비트 값일 수 있다.
단계 2: 플래그 F의 값이 파라미터 세트에 지정되는지 각각의 코딩된 세그먼트의 제 2 코드워드에 의해 지정되는지를 지표 값으로부터 결정한다.
단계 3: 플래그 F의 값이 파라미터 세트에 지정되는 것으로 결정되면, 파라미터 세트로부터 플래그 F의 값을 디코딩한다. 플래그 F의 값은 예를 들어 제 1 코드워드로부터 도출되거나 파라미터 세트의 별개의 제 3 코드워드로부터 디코딩될 수 있다.
단계 4: 각각의 세그먼트에 대해 단계 4A 및 4B를 수행한다.
단계 4A: 플래그 F의 값이 각각의 세그먼트에 지정되는 것으로 결정되면, 세그먼트의 제 2 코드워드로부터 플래그 F의 값을 디코딩한다(제 2 코드워드는 세그먼트 헤더의 일부일 수 있음).
단계 4B: 제 2 코드워드 또는 파라미터 세트로부터 결정되는 플래그 F의 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩한다.
파라미터 값 도출
일 실시예에서,
CVS의 각각의 세그먼트에 대한 파라미터 P의 값은 헤더 및/또는 CVS의 파라미터 세트에서의 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 파라미터 P의 값이 하나 이상의 다른 파라미터 값으로부터 도출되어야 하는지 여부를 지정하는 지표 값이 (예를 들어 CVS의 파라미터 세트에서) 시그널링된다.
다른 실시예에서, CVS의 각각의 세그먼트에 대한 파라미터 P의 값은 i) 헤더 및/또는 CVS의 파라미터 세트에서의 하나 이상의 다른 파라미터 값으로부터 도출되거나 ii) 각각의 세그먼트에 대해 시그널링될 수 있으며, i) 파라미터 P의 값이 도출되어야 하는 것 또는 ii) 파라미터 P의 값이 각각의 세그먼트에서 시그널링되는 것 중 하나를 지정하는 지표 값이 (예를 들어 CVS의 파라미터 세트에서) 시그널링된다.
다른 실시예에서, CVS의 각각의 세그먼트에 대한 파라미터 P의 값은 i) 헤더 및/또는 CVS의 파라미터 세트에서의 하나 이상의 다른 파라미터 값으로부터 도출되거나 ii) 각각의 세그먼트에 대해 시그널링되거나, iii) CVS의 파라미터 세트에 포함될 수 있으며, i) 파라미터 P의 값이 도출되어야 하는 것, ii) 파라미터 P의 값이 각각의 세그먼트에서 시그널링되는 것, 또는 iii) 파라미터 P의 값이 CVS의 파라미터 세트에 포함되는 것 중 하나를 지정하는 지표 값이 (예를 들어 CVS의 파라미터 세트에서) 시그널링된다.
다른 실시예에서, CVS의 각각의 세그먼트에 대한 파라미터 P의 값은 i) 헤더 및/또는 CVS의 파라미터 세트에서의 하나 이상의 다른 파라미터 값으로부터 도출되거나 ii) CVS의 파라미터 세트에 포함될 수 있으며, i) 파라미터 P의 값이 도출되어야 하는 것, 또는 ii) 파라미터 P의 값이 CVS의 파라미터 세트에 포함되는 것 중 하나를 지정하는 지표 값이 (예를 들어 CVS의 파라미터 세트에서) 시그널링된다.
다른 실시예에서, 파라미터 세트(예를 들어, SPS)는 i) 각각의 세그먼트에 대한 파라미터 P의 값이 각각의 세그먼트에 대한 다른 파라미터로부터 도출되어야하는 것, ii) 파라미터 P의 값이 모든 세그먼트에 대해 고정되는 것(예를 들어, 디폴트 값 또는 시그널링된 값으로 고정됨) 또는 iii) 파라미터 P의 값이 각각의 세그먼트에 대해 시그널링되는 것 중 하나를 나타내는 정보를 제공한다.
예를 들어, 모든 인트라 코딩 시나리오(all-intra coding scenario) 또는 저 지연 화상 회의 시나리오에서, 파라미터 slice_type은 화상 타입으로부터 도출될 수 있다. 따라서, 파라미터 slice_type에 대한 값은 각각의 슬라이스에 대해 시그널링될 필요가 없다(즉, 디코더가 각각의 슬라이스에 대해 올바른 slice_type 파라미터 값을 도출할 수 있으므로 각각의 슬라이스는 파라미터 slice_type에 대한 값을 포함할 필요가 없다).
일 실시예에서, 인코더는 하나 이상의 화상을 코딩된 비디오 스트림(CVS)으로 인코딩하기 위해 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 하나의 파라미터 세트 및 둘 이상의 세그먼트를 포함할 것이다.
단계 1: 파라미터 P에 대해, i) CVS의 모든 세그먼트에 대해 파라미터 P의 값이 다른 파라미터 Q에 기초하여 도출될 수 있는지(예를 들어, Q 및 0개 이상의 다른 파라미터로부터 도출될 수 있음), ii) 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는지, iii) 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되지 않고, CVS의 모든 세그먼트에 대해 하나 이상의 다른 파라미터로부터 도출될 수 없는지를 결정한다.
단계 2: 파라미터 세트에 제 1 코드워드(cw1)를 포함하며, 여기서 cw1의 값(일명 "지표 값")은 단계 1에서 결정된 값에 따라 달라진다. 즉, i) CVS의 모든 세그먼트에 대해 파라미터 P의 값이 다른 파라미터 Q에 기초하여 도출될 수 있는 것으로 결정되면, cw1은 CVS의 모든 세그먼트에 대해 파라미터 P의 값이 파라미터 Q에 기초하여 도출될 수 있음을 지정하며; ii) 그렇지 않으면, 파라미터 P의 값이 CVS의 모든 세그먼트에 대해 일정하게 유지되는 것으로 결정되면, cw1은 파라미터 P의 값이 파라미터 세트에서 시그널링됨을 지정하며; iii) 그렇지 않으면, cw1은 파라미터 P의 값이 CVS의 각각의 세그먼트에 대해 시그널링됨을 지정한다.
단계 3: cw1이 파라미터 P의 값이 파라미터 세트에서 시그널링됨을 지정하면, 파라미터 세트에서 파라미터 P의 값을 시그널링한다. 파라미터 P의 값은 예를 들어 지표 값과 함께 제 1 코드워드 또는 파라미터 세트의 제 3 코드워드에서 시그널링될 수 있다.
단계 4: 각각의 세그먼트에 대해 단계 4A 및 4B를 수행한다.
단계 4A: cw1이 파라미터 P의 값이 각각의 세그먼트에서 시그널링됨을 지정하면, 세그먼트의 제 2 코드워드에서 파라미터 P의 값을 시그널링한다. 제 2 코드워드는 바람직하게는 세그먼트 헤더에서 시그널링된다.
단계 4B: 파라미터 P의 값을 사용하여 세그먼트의 세그먼트 데이터를 인코딩한다.
디코더는 코딩된 비디오 스트림(CVS)으로부터 하나 이상의 화상을 디코딩하기 위해 다음의 단계의 서브세트 또는 모두를 수행할 수 있으며, 여기서 CVS는 적어도 하나의 파라미터 세트 및 둘 이상의 세그먼트를 포함한다.
단계 1: CVS의 파라미터 세트에서의 제 1 코드워드로부터 지표 값을 디코딩한다. 파라미터 세트는 예를 들어 SPS, PPS, DPS, VPS 또는 PHPS일 수 있다.
단계 2: 지표 값으로부터 i) 파라미터 P의 값이 파라미터 Q를 기반으로 도출되어야 하는지, ii) 파라미터 P의 값이 파라미터 세트에 지정되는지, iii) 파라미터 P의 값이 CVS의 각각의 세그먼트에서 제 2 코드워드에 의해 지정되는지를 결정한다.
단계 3: 파라미터 P의 값이 파라미터 세트에 지정된 것으로 결정되면, 파라미터 세트로부터 파라미터 P의 값을 디코딩한다. 파라미터 P의 값은 예를 들어 제 1 코드워드로부터 도출되거나 파라미터 세트의 제 3 코드워드로부터 디코딩될 수 있다.
단계 4: 파라미터 P의 값이 파라미터 Q에 기초하여 도출되어야 한다고 결정되면, 파라미터 Q에 대한 파라미터 값을 결정한 후, 파라미터 Q에 대한 파라미터 값에 기초하여 파라미터 P의 값을 도출한다. 예를 들어 Pv = f(Qv, ...)이며, Pv는 파라미터 P에 대한 파라미터 값이고, f()는 함수이며, Qv는 파라미터 Q에 대한 파라미터 값이다. 즉, Pv는 적어도 Qv의 함수일 수 있다.
단계 5: 각각의 세그먼트에 대해 단계 5A 및 5B를 수행한다.
단계 5A: 파라미터 P의 값이 각각의 세그먼트에 지정된 것으로 결정되면, 세그먼트의 제 2 코드워드로부터 파라미터 P의 값을 디코딩한다.
단계 5B: 파라미터 P의 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩한다.
아래는 현재 VVC 초안 사양의 상단에 있는 SPS 및 슬라이스 헤더에 대한 특정 예시적인 구문 및 의미론이다. 현재 버전의 VTM(5.0) 소프트웨어에서 정적으로 발견된 모든 파라미터가 VVC 초안 사양(JVET-N1001-v7)의 현재 버전에 있는 것은 아니라는 것을 주목한다. 일부 파라미터는 또한 해석이 동일하지만 소프트웨어 및 사양에서 상이한 이름을 가지고 있다. 예를 들어, VTM 5.0 소프트웨어의 five_minus_max_num_affine_merge_cand는 현재 VVC 초안 사양의 five_minus_max_num_subblock_merge_cand와 동일하다. 이것은 VVC 사양이 마무리되면 정렬될 것으로 예상된다.
표 16
seq_parameter_set_rbsp( ) { 설명자
sps_decoding_parameter_set_id u(4)
...
sps_or_slice_flag u(1)
if ( sps_or_slice_flag ) {
sps_or_slice_dep_quant_enabled_flag tu(v)
For (i=0, i<2;i++)
sps_or_slice_ref_pic_list_sps_flag[i] tu(v)
sps_or_slice_temporal_mvp_enabled_flag tu(v)
sps_or_slice_mvd_l1_zero_flag tu(v)
sps_or_slice_collocated_from_l0_flag tu(v)
sps_or_slice_chroma_residual_scale_flag tu(v)
sps_or_slice_six_minus_max_num_merge_cand ue(v)
sps_or_slice_five_minus_max_num_subblock_merge_cand ue(v)
sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand ue(v)
}
...
}
SPS 의미론:
0과 같은 sps_or_slice_flag는 sps_or_slice_dep_quant_enabled_flag, sps_or_slice_ref_pic_list_sps_flag, sps_or_slice_temporal_mvp_enabled_flag, sps_or_slice_mvd_l1_zero_flag, sps_or_slice_collocated_from_l0_flag, sps_or_slice_six_minus_max_num_merge_cand, sps_or_slice_five_minus_max_num_subblock_merge_cand 및 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand의 값이 0과 같도록 추론됨을 지정한다. 1과 같은 sps_or_slice_flag는 구문 요소 sps_or_slice_dep_quant_enabled_flag, sps_or_slice_ref_pic_list_sps_flag, sps_or_slice_temporal_mvp_enabled_flag, sps_or_slice_mvd_l1_zero_flag, sps_or_slice_collocated_from_l0_flag, sps_or_slice_six_minus_max_num_merge_cand, sps_or_slice_five_minus_max_num_subblock_merge_cand 및 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand가 SPS에 존재함을 지정한다.
0과 같은 sps_or_slice_dep_quant_enabled_flag는 dep_quant_enabled_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_dep_quant_enabled_flag는 dep_quant_enabled_flag가 sps_or_slice_dep_quant_enabled_flag - 1과 같은 것으로 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_ref_pic_list_sps_flag[i]는 ref_pic_list_sps[i]가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_ref_pic_list_sps_flag[i]는 ref_pic_list_sps[i]가 sps_or_slice_ref_pic_list_sps_flag[i] - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다. [모든 ref_pic_list_sps [i]에 대한 공통 파라미터가 또한 가능하다.]
0과 같은 sps_or_slice_temporal_mvp_enabled_flag는 slice_temporal_mvp_enabled_flag가 CVS에서 slice_type이 I와 같지 않은 슬라이스의 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_temporal_mvp_enabled_flag는 slice_temporal_mvp_enabled_flag가 sps_or_slice_temporal_mvp_enabled_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_mvd_l1_zero_flag는 mvd_l1_zero_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_mvd_l1_zero_flag는 mvd_l1_zero_flag가 sps_or_slice_mvd_l1_zero_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_collocated_from_l0_flag는 collocated_from_l0_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_collocated_from_l0_flag는 collocated_from_l0_flag가 sps_or_slice_collocated_from_l0_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_chroma_residual_scale_flag는 slice_chroma_residual_scale_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_chroma_residual_scale_flag는 slice_chroma_residual_scale_flag가 sps_or_slice_chroma_residual_scale_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_six_minus_max_num_merge_cand는 six_minus_max_num_merge_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_six_minus_max_num_merge_cand는 six_minus_max_num_merge_cand가 sps_or_slice_six_minus_max_num_merge_cand - 1과 같도록 추론됨을 지정한다.
0과 같은 sps_or_slice_five_minus_max_num_subblock_merge_cand는 five_minus_max_num_subblock_merge_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_five_minus_max_num_subblock_merge_cand는 five_minus_max_num_subblock_merge_cand가 sps_or_slice_five_minus_max_num_subblock_merge_cand - 1과 같도록 추론됨을 지정한다.
0과 같은 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand는 max_num_merge_cand_minus_max_num_triangle_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand는 max_num_merge_cand_minus_max_num_triangle_cand가 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand - 1과 같도록 추론됨을 지정한다.
표 17
slice_header( ) { 설명자
slice_pic_parameter_set_id ue(v)
if( rect_slice_flag | | NumBricksInPic > 1 )
slice_address u(v)
if( !rect_slice_flag && !single_brick_per_slice_flag )
num_bricks_in_slice_minus1 ue(v)
slice_type ue(v)
if( NalUnitType = = GRA_NUT )
recovery_poc_cnt se(v)
slice_pic_order_cnt_lsb u(v)
if( NalUnitType = = IDR_W_RADL | | NalUnitType = = IDR_N_LP | |
NalUnitType = = CRA_NUT )
no_output_of_prior_pics_flag u(1)
if( output_flag_present_flag )
pic_output_flag u(1)
if( ( NalUnitType != IDR_W_RADL && NalUnitType != IDR_N_LP ) | |
sps_idr_rpl_present_flag ) {
for( i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] > 0 && !sps_or_slice_ref_pic_list_sps_flag[ i ] &&
( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) )
ref_pic_list_sps_flag[ i ] u(1)
if( ref_pic_list_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
( i = = 0 | | ( i = = 1 && rpl1_idx_present_flag ) ) )
ref_pic_list_idx[ i ] u(v)
} else
ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] )
for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) {
if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
slice_poc_lsb_lt[ i ][ j ] u(v)
delta_poc_msb_present_flag[ i ][ j ] u(1)
if( delta_poc_msb_present_flag[ i ][ j ] )
delta_poc_msb_cycle_lt[ i ][ j ] ue(v)
}
}
if( ( slice_type != I && num_ref_entries[ 0 ][ RplsIdx[ 0 ] ] > 1 ) | |
( slice_type = = B && num_ref_entries[ 1 ][ RplsIdx[ 1 ] ] > 1 ) ) {
num_ref_idx_active_override_flag u(1)
if( num_ref_idx_active_override_flag )
for( i = 0; i < ( slice_type = = B ? 2: 1 ); i++ )
if( num_ref_entries[ i ][ RplsIdx[ i ] ] > 1 )
num_ref_idx_active_minus1[ i ] ue(v)
}
}
if( partition_constraints_override_enabled_flag ) {
partition_constraints_override_flag ue(v)
if( partition_constraints_override_flag ) {
slice_log2_diff_min_qt_min_cb_luma ue(v)
slice_max_mtt_hierarchy_depth_luma ue(v)
if( slice_max_mtt_hierarchy_depth_luma != 0 )
slice_log2_diff_max_bt_min_qt_luma ue(v)
slice_log2_diff_max_tt_min_qt_luma ue(v)
}
if( slice_type = = I && qtbtt_dual_tree_intra_flag ) {
slice_log2_diff_min_qt_min_cb_chroma ue(v)
slice_max_mtt_hierarchy_depth_chroma ue(v)
if( slice_max_mtt_hierarchy_depth_chroma != 0 )
slice_log2_diff_max_bt_min_qt_chroma ue(v)
slice_log2_diff_max_tt_min_qt_chroma ue(v)
}
}
}
}
if ( slice_type != I ) {
if( !sps_or_slice_temporal_mvp_enabled_flag )
slice_temporal_mvp_enabled_flag u(1)
if( slice_type = = B && !sps_or_slice_mvd_l1_zero_flag )
mvd_l1_zero_flag u(1)
if( cabac_init_present_flag )
cabac_init_flag u(1)
if( slice_temporal_mvp_enabled_flag ) {
if( slice_type = = B && !sps_or_slice_collocated_from_l0_flag )
collocated_from_l0_flag u(1)
}
if( ( weighted_pred_flag && slice_type = = P ) | |
( weighted_bipred_flag && slice_type = = B ) )
pred_weight_table( )
if( !sps_or_slice_six_minus_max_num_merge_cand )
six_minus_max_num_merge_cand ue(v)
if( sps_affine_enabled_flag && !sps_or_slice_five_minus_max_num_subblock_merge_cand )
five_minus_max_num_subblock_merge_cand ue(v)
if( sps_fpel_mmvd_enabled_flag )
slice_fpel_mmvd_enabled_flag u(1)
if( sps_triangle_enabled_flag && MaxNumMergeCand >= 2 && !sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand )
max_num_merge_cand_minus_max_num_triangle_cand ue(v)
} else if ( sps_ibc_enabled_flag && !sps_or_slice_six_minus_max_num_merge_cand )
six_minus_max_num_merge_cand ue(v)
slice_qp_delta se(v)
if( pps_slice_chroma_qp_offsets_present_flag ) {
slice_cb_qp_offset se(v)
slice_cr_qp_offset se(v)
slice_joint_cbcr_qp_offset se(v)
}
if( sps_sao_enabled_flag ) {
slice_sao_luma_flag u(1)
if( ChromaArrayType != 0 )
slice_sao_chroma_flag u(1)
}
if( sps_alf_enabled_flag ) {
slice_alf_enabled_flag u(1)
if( slice_alf_enabled_flag ) {
slice_num_alf_aps_ids_luma tb(v)
for( i = 0; i < slice_num_alf_aps_ids_luma; i++ )
slice_alf_aps_id_luma[ i ] u(5)
slice_alf_chroma_idc tu(v)
if( slice_alf_chroma_idc && ( slice_type != I | | slice_num_alf_aps_ids_luma != 1) )
slice_alf_aps_id_chroma u(5)
}
}
if (!sps_or_slice_dep_quant_enabled_flag)
dep_quant_enabled_flag u(1)
if( !dep_quant_enabled_flag )
sign_data_hiding_enabled_flag u(1)
if( deblocking_filter_override_enabled_flag )
deblocking_filter_override_flag u(1)
if( deblocking_filter_override_flag ) {
slice_deblocking_filter_disabled_flag u(1)
if( !slice_deblocking_filter_disabled_flag ) {
slice_beta_offset_div2 se(v)
slice_tc_offset_div2 se(v)
}
}
if( sps_lmcs_enabled_flag ) {
slice_lmcs_enabled_flag u(1)
if( slice_lmcs_enabled_flag ) {
slice_lmcs_aps_id u(5)
if( !( qtbtt_dual_tree_intra_flag && slice_type = = I ) && ( !sps_or_slice_chroma_residual_scale_flag ) )
slice_chroma_residual_scale_flag u(1)
}
if ( entropy_coding_sync_enabled_flag )
num_entry_point_offsets ue(v)
if( NumEntryPoints > 0 ) {
offset_len_minus1 ue(v)
for( i = 0; i < NumEntryPoints; i++ )
entry_point_offset_minus1[ i ] u(v)
}
byte_alignment( )
}
도 4는 일 실시예에 따른 디코더가 수행할 수 있는 프로세스(400)를 예시하는 흐름도이다. 프로세스(400)는 단계(s402)로 시작할 수 있다.
단계(s402)는 디코더가 인코딩된 비디오 비트스트림의 제 1 파라미터 세트를 획득하는 단계(예를 들어, 인코더 또는 다른 네트워크 노드로부터 수신하거나 스토리지로부터 검색하는 단계)를 포함한다.
단계(s404)는 디코더가, 수신된 제 1 파라미터 세트에 포함된 제 1 코드워드에 기초하여, i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하며(예를 들어, 파라미터 세트는 파라미터가 도출될 수 있는 코드워드를 포함함), 여기서 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 여기서 도출된 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것 중 하나를 결정하는 단계를 포함한다. 즉, 디코더는, 제 1 코드워드에 기초하여, 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는지 여부를 결정한다.
일부 실시예에서, 단계(s404)에서, 디코더는 제 1 코드워드에 기초하여 1) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하거나 2) 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것을 결정한다.
다른 실시예에서, 단계(s404)에서, 디코더는 제 1 코드워드에 기초하여 1) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하거나 2) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 함을 결정한다.
또 다른 실시예에서, 단계(s404)에서, 디코더는 제 1 코드워드에 기초하여 1) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하거나 2) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있음을 결정한다.
일부 실시예에서, 결정하는 단계(단계(s404))는 디코더가 파라미터 세트에 포함된 제 1 코드워드로부터 지표 값을 획득하고, 획득된 지표 값이 특정 값과 같은지 여부를 결정하는 단계를 포함한다.
일부 실시예에서, 획득된 지표 값이 특정 값과 같다고 결정한 결과로서, 디코더는 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, 획득된 지표 값이 특정 값과 같지 않다고 결정한 결과로서, 디코더는 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한다. 일부 실시예에서, 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는 파라미터 값을 포함하는 파라미터 세트로부터 파라미터 값을 획득한다. 일부 실시예에서, 파라미터 값을 포함하는 파라미터 세트는 제 1 파라미터 세트이고, 파라미터 값은 지표 값이 획득되는 제 1 코드워드에서 인코딩되며, 파라미터 값을 획득하는 단계는 제 1 코드워드로부터 파라미터 값을 도출하는 단계를 포함한다. 일부 실시예에서, 파라미터 값은 제 1 코드워드와 구별되는 제 2 코드워드로 인코딩되고, 파라미터 값을 획득하는 단계는 제 2 코드워드로부터 파라미터 값을 도출하는 단계를 포함한다. 일부 실시예에서, 프로세스(400)는, 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 획득된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 더 포함한다.
일부 실시예에서, 획득된 지표 값이 특정 값과 같다고 결정한 결과로서, 디코더는 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, 획득된 지표 값이 특정 값과 같지 않다고 결정한 결과로서, 디코더는 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한다. 일부 실시예에서, 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는, 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 세그먼트에 포함된 제 2 코드워드로부터 특정 파라미터에 상응하는 파라미터 값을 획득하고, 획득된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다.
일부 실시예에서, 제 1 세그먼트 세트에 포함된 각각의 세그먼트는 상이한 비디오 코딩 계층(video coding layer; VCL), 네트워크 추상화 계층(network abstraction layer; NAL) 유닛에 포함된다. 일부 실시예에서, 각각의 상기 세그먼트는 세그먼트 헤더 및 세그먼트 페이로드를 포함한다. 일부 실시예에서, 세그먼트는 슬라이스이고, 세그먼트 헤더는 슬라이스 헤더이며, 세그먼트 페이로드는 슬라이스 데이터를 포함한다.
일부 실시예에서, 제 1 파라미터 세트는 비트스트림에 포함된 비-VCL NAL 유닛의 페이로드 부분에 포함된다. 일부 실시예에서, 제 1 파라미터 세트는 시퀀스 파라미터 세트(sequence parameter set; SPS), 화상 파라미터 세트(picture parameter set; PPS), 디코더 파라미터 세트(decoder parameter set; DPS), 비디오 파라미터 세트(video parameter set; VPS) 또는 화상 헤더 파라미터 세트(picture header parameter set; PHPS)이다. PHPS(때때로 또한 "화상 헤더"라고 함)는 단일 화상을 디코딩하는데 사용되는 데이터를 포함한다. 화상이 다수의 슬라이스로 분할되는 경우에, PHPS는 화상의 모든 슬라이스에 대한 정보를 시그널링하는데 사용될 수 있다. 이것은 정보가 화상의 모든 슬라이스에서 반복되는 대안에 비해 비트를 절감한다. PHPS는 슬라이스 헤더에 포함될 수 있지만, 화상의 모든 슬라이스에 유효한 것이다. 따라서, PHPS는 화상의 제 1 슬라이스를 포함하는 NAL 유닛의 일부일 수 있다(이 시나리오에서 PHPS는 "화상 헤더"라고 함). PHPS는 또한 대신에 또는 부가적으로 화상에서의 제 1 슬라이스의 슬라이스 헤더로 시그널링될 수 있으므로, PHPS는 임의의 슬라이스 NAL 유닛이 아닌 별개의 NAL 유닛으로서 시그널링될 수 있다.
일부 실시예에서, 프로세스(400)는, 결정 단계를 수행하기 전에, 디코더가 제 1 파라미터 세트가 제 1 코드워드를 포함한다는 것을 나타내는 정보를 획득하는 단계를 더 포함한다. 일부 실시예에서, 제 1 파라미터 세트가 제 1 코드워드를 포함한다는 것을 나타내는 정보를 획득하는 단계는 제 1 파라미터 세트에 포함된 제 2 코드워드로부터 정보를 도출하는 단계를 포함한다.
일부 실시예에서, 특정 파라미터는 1비트 파라미터이다.
일부 실시예에서, 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 한다고 결정한 결과로서, 디코더는 디폴트 파라미터 값을 획득하는 단계; 및 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 획득된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다.
일부 실시예에서, 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출되어야 한다고 결정한 결과로서, 디코더는 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터의 특정 파라미터에 상응하는 파라미터 값을 도출하는 단계; 및 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 도출된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다. 일부 실시예에서, 파라미터 값은 슬라이스 타입 파라미터 값이고, 슬라이스 타입 파라미터 값을 도출하는 단계는 화상 타입을 식별하는 화상 타입 파라미터 값을 획득하고, 획득된 화상 타입 파라미터 값에 기초하여 슬라이스 타입 파라미터 값을 도출하는 단계를 포함한다.
일부 실시예에서, 비트스트림은 제 1 CVS 및 제 2 CVS를 포함하고, 제 1 파라미터 세트 및 제 1 세그먼트 세트는 모두 제 1 CVS에 포함되고, 제 2 파라미터 세트 및 제 2 세그먼트 세트는 모두 제 2 CVS에 포함된다. 일부 실시예에서, 프로세스(400)는 디코더가 제 2 CVS에 포함된 제 2 파라미터 세트를 수신하는 단계; 및 수신된 제 2 파라미터 세트에 포함된 코드워드에 기초하여, 디코더가 i) 제 2 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 제 2 CVS에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하고, 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 CVS에 포함된 하나 이상의 다른 파라미터 값으로부터 도출되어야 하고, 도출된 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것 중 하나를 결정하는 단계를 더 포함한다.
도 5는 일 실시예에 따른 인코더가 수행할 수 있는 프로세스(500)를 예시하는 흐름도이다. 프로세스(500)는 단계(s502)로 시작할 수 있다. 단계(s502)는 인코더가 제 1 세그먼트 세트를 생성하는 단계를 포함한다. 단계(s504)는 인코더가 제 1 파라미터 세트를 생성하는 단계를 포함한다. 제 1 파라미터 세트는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 인코더에 의해 생성된 제 1 파라미터 세트 또는 제 2 파라미터 세트가 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것 중 하나를 나타내는 제 1 코드워드를 포함한다.
일부 실시예에서, 프로세스(500)는, 제 1 파라미터 세트를 생성하기 전에, 특정 파라미터의 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해 일정하게 유지된다고 결정하는 단계를 더 포함한다. 일부 실시예에서, 특정 파라미터의 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해 일정하게 유지된다고 결정한 결과로서, 인코더는 제 1 코드워드가 i) 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하고, ii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있거나. iii) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 여기서 도출된 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음을 나타내도록 제 1 파라미터 세트를 생성한다.
도 6은, 일부 실시예에 따라, 비디오 인코더(140) 또는 비디오 디코더(260)를 구현하는 장치(600)의 블록도이다. 도 6에 도시된 바와 같이, 장치(600)는 프로세서가 단일 하우징 또는 단일 데이터 센터에 공존(colocate)되거나 지리적으로 분산될 수 있는 하나 이상의 프로세서(P)(655)(예를 들어, 범용 마이크로 프로세서 및/또는 주문형 집적 회로(application specific integrated circuit; ASIC), FPGA(field-programmable gate array) 등과 같은 하나 이상의 다른 프로세서)를 포함할 수 있는 처리 회로(processing circuitry; PC)(602)(즉, 장치(600)는 분산형 컴퓨팅 장치일 수 있음); 네트워크 인터페이스(648)가 (직간접적으로) 연결되는 (예를 들어, 네트워크 인터페이스(648)는 네트워크(110)에 무선으로 연결될 수 있으며, 이 경우에 네트워크 인터페이스(648)는 안테나 장치에 연결됨) 네트워크(110)(예를 들어, 인터넷 프로토콜(Internet Protocol; IP) 네트워크)에 연결된 다른 노드로부터 장치(600)가 데이터를 송수신할 수 있게 하는 송신기(Tx)(645) 및 수신기(Rx)(647)를 포함하는 네트워크 인터페이스(648); 및 하나 이상의 비휘발성 저장 장치 및/또는 하나 이상의 휘발성 저장 장치를 포함할 수 있는 로컬 저장 유닛(일명, "데이터 저장 시스템")(608)을 포함할 수 있다. PC(602)가 프로그램 가능한 프로세서를 포함하는 실시예에서, 컴퓨터 프로그램 제품(computer program product; CPP)(641)이 제공될 수 있다. CPP(641)는 컴퓨터 판독 가능한 명령어(computer readable instruction; CRI)(644)를 포함하는 컴퓨터 프로그램(computer program; CP)(643)을 저장하는 컴퓨터 판독 가능한 매체(computer readable medium; CRM)(642)를 포함한다. CRM(642)은 자기 매체(예를 들어, 하드 디스크), 광학 매체, 메모리 장치(예를 들어, 랜덤 액세스 메모리, 플래시 메모리) 등과 같은 비일시적 컴퓨터 판독 가능한 매체일 수 있다. 일부 실시예에서, 컴퓨터 프로그램(643)의 CRI(644)는, PC(602)에 의해 실행될 때, CRI가 장치(600)로 하여금 본 명세서에 설명된 단계(예를 들어, 흐름도를 참조하여 본 명세서에 설명된 단계)를 수행하게 하도록 구성된다. 다른 실시예에서, 장치(600)는 코드에 대한 필요없이 본 명세서에 설명된 단계를 수행하도록 구성될 수 있다. 즉, 예를 들어, PC(602)는 단지 하나 이상의 ASIC로 구성될 수 있다. 따라서, 본 명세서에 설명된 실시예의 특징은 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
도 7a는 일 실시예에 따른 비디오 디코딩 장치(701)의 기능 유닛을 도시한다.
도 7b는 일 실시예에 따른 비디오 인코딩 장치(721)의 기능 유닛을 도시한다.
다양한 실시예의 요약
A1. 제 1 파라미터 세트 및 제 1 세그먼트 세트를 포함하는 비트스트림을 디코딩하기 위해 비디오 디코더(260,600,701)에 의해 수행되는 방법(400)은 제 1 파라미터 세트를 획득하는 단계; 제 1 파라미터 세트에 포함된 제 1 코드워드에 기초하여, 디코더가 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하며, 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 도출된 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것 중 하나를 결정하는 단계를 포함한다.
A2. 실시예 A1의 방법에서, 결정하는 단계는 디코더가 파라미터 세트에 포함된 제 1 코드워드로부터 지표 값을 획득하고, 획득된 지표 값이 특정 값과 같은지 여부를 결정하는 단계를 포함한다.
A3. 실시예 A2의 방법에서, 획득된 지표 값이 특정 값과 같다고 결정한 결과로서, 디코더는 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, 획득된 지표 값이 특정 값과 같지 않다고 결정한 결과로서, 디코더는 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한다.
A4. 실시예 A3의 방법에서, 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는 파라미터 값을 포함하는 파라미터 세트로부터 파라미터 값을 획득한다.
A5. 실시예 A4의 방법에서, 파라미터 값을 포함하는 파라미터 세트는 제 1 파라미터 세트이다.
A6a1. 어느 실시예 A4 또는 A5의 방법에서, 파라미터 값은 지표 값이 획득되는 제 1 코드워드에서 인코딩되며, 파라미터 값을 획득하는 단계는 제 1 코드워드로부터 파라미터 값을 도출하는 단계를 포함한다.
A6a2. 실시예 A6a1의 방법에서, 제 1 코드워드로부터 파라미터 값(PV)을 도출하는 단계는 PV = cw-1을 계산하는 단계를 포함하며, 여기서 cw는 제 1 코드워드의 값이다.
A6b. 실시예 A4 또는 A5의 방법에서, 파라미터 값은 제 1 코드워드와 구별되는 제 2 코드워드로 인코딩되고, 파라미터 값을 획득하는 단계는 제 2 코드워드로부터 파라미터 값을 도출하는 단계를 포함한다.
A7. 실시예 A4, A5, A6a1, A6a2 및 A6b 중 어느 하나의 방법에서, 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 획득된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 더 포함한다.
A8. 실시예 A2의 방법에서, 획득된 지표 값이 특정 값과 같다고 결정한 결과로서, 디코더는 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, 획득된 지표 값이 특정 값과 같지 않다고 결정한 결과로서, 디코더는 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한다.
A9. 실시예 A8의 방법에서, 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는, 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 세그먼트에 포함된 제 2 코드워드로부터 특정 파라미터에 상응하는 파라미터 값을 획득하고, 획득된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다.
A10. 상술한 실시예 중 어느 하나의 방법에서, 제 1 세그먼트 세트에 포함된 각각의 세그먼트는 상이한 비디오 코딩 계층(VCL), 네트워크 추상화 계층(NAL) 유닛에 포함된다.
A11. 실시예 A10의 방법에서, 각각의 상기 세그먼트는 세그먼트 헤더 및 세그먼트 페이로드를 포함한다.
A12. 실시예 A11의 방법에서, 세그먼트는 슬라이스이고, 세그먼트 헤더는 슬라이스 헤더이며, 세그먼트 페이로드는 슬라이스 데이터를 포함한다.
A13. 상술한 실시예 중 어느 하나의 방법에서, 제 1 파라미터 세트는 비트스트림에 포함된 비-VCL NAL 유닛의 페이로드 부분에 포함된다.
A13b. 실시예 A13의 방법에서, 제 1 파라미터 세트는 시퀀스 파라미터 세트(SPS), 화상 파라미터 세트(PPS), 디코더 파라미터 세트(DPS), 비디오 파라미터 세트(VPS) 또는 화상 헤더 파라미터 세트(PHPS)이다.
A14. 상술한 실시예 중 어느 하나의 방법에서, 결정 단계를 수행하기 전에, 디코더는 제 1 파라미터 세트가 제 1 코드워드를 포함한다는 것을 나타내는 정보를 획득하는 단계를 더 포함한다.
A15a. 실시예 A14의 방법에서, 제 1 파라미터 세트가 제 1 코드워드를 포함한다는 것을 나타내는 정보를 획득하는 단계는 제 1 파라미터 세트에 포함된 제 2 코드워드로부터 정보를 도출하는 단계를 포함한다.
A15b. 실시예 A14의 방법에서, 제 2 코드워드는 단일 비트로 구성된다.
A15c. 실시예 A14, A15a 및 A15b 중 어느 하나의 방법에서, 제 1 파라미터 세트가 제 1 코드워드를 포함한다는 것을 나타내는 정보는 제 1 파라미터 세트가 제 2 특정 파라미터에 상응하는 제 3 코드워드를 더 포함한다는 것을 더 나타내고, 방법은 디코더가, 제 3 코드워드에 기초하여, 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 제 2 특정 파라미터에 상응하는 파라미터 값을 포함하는지 여부를 결정하는 단계를 더 포함한다.
A16. 상술한 실시예 중 어느 하나의 방법에서, 특정 파라미터는 1비트 파라미터이다.
A17. 실시예 A1 또는 A2 중 어느 하나의 방법에서, 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 한다고 결정한 결과로서, 디코더는 디폴트 파라미터 값을 획득하는 단계; 및 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 획득된 디폴트 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다.
A18. 실시예 A1 또는 A2 중 어느 하나의 방법에서, 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출되어야 한다고 결정한 결과로서, 디코더는 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터의 특정 파라미터에 상응하는 파라미터 값을 도출하는 단계; 및 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해, 도출된 파라미터 값을 사용하여 세그먼트의 세그먼트 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행한다.
A19. 실시예 A18의 방법에서, 파라미터 값은 슬라이스 타입 파라미터 값이고, 슬라이스 타입 파라미터 값을 도출하는 단계는 화상 타입을 식별하는 화상 타입 파라미터 값을 획득하고, 획득된 화상 타입 파라미터 값에 기초하여 슬라이스 타입 파라미터 값을 도출하는 단계를 포함한다.
A20. 상술한 실시예 중 어느 하나의 방법에서, 비트스트림은 제 1 코딩된 비디오 시퀀스(CVS) 및 제 2 CVS를 포함하고, 제 1 파라미터 세트 및 제 1 세그먼트 세트는 모두 제 1 CVS에 포함되고, 제 2 파라미터 세트 및 제 2 세그먼트 세트는 모두 제 2 CVS에 포함된다.
A21. 실시예 A20의 방법에서, 디코더가 제 2 CVS에 포함된 제 2 파라미터 세트를 수신하는 단계; 및 수신된 제 2 파라미터 세트에 포함된 코드워드에 기초하여, 디코더가 i) 제 2 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 제 2 CVS에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값을 포함하고, 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 CVS에 포함된 하나 이상의 다른 파라미터 값으로부터 도출되어야 하고, 도출된 파라미터 값이 제 2 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것 중 하나를 결정하는 단계를 더 포함한다.
A22. 실시예 A1의 방법에서, 결정하는 단계는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, ii) 비트스트림에 포함된 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값 - 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음 - 을 포함한다고 결정하는 단계를 포함한다.
A23. 실시예 A1의 방법에서, 결정하는 단계는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, ii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 한다고 결정하는 단계를 포함한다.
A24. 실시예 A1의 방법에서, 결정하는 단계는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하거나, ii) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있다고 결정하는 단계를 포함한다.
B1. 비디오 인코더(140, 600, 721)에 의해 수행되는 방법(500)에서, 제 1 세그먼트 세트를 생성하는 단계; 및 제 1 파라미터 세트를 생성하는 단계를 포함하는데, 제 1 파라미터 세트는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 인코더에 의해 생성된 제 1 파라미터 세트 또는 제 2 파라미터 세트가 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것 중 하나를 나타내는 제 1 코드워드를 포함한다.
B2. 실시예 B1의 방법에서, 제 1 파라미터 세트를 생성하기 전에, 특정 파라미터의 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해 일정하게 유지된다고 결정하는 단계를 더 포함한다.
B3. 실시예 B2의 방법에서, 특정 파라미터의 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트에 대해 일정하게 유지된다고 결정한 결과로서, 인코더는 제 1 코드워드가 i) 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값 - 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음 - 을 포함하고, ii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있거나. iii) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있으며, 도출된 파라미터 값은 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음을 나타내도록 제 1 파라미터 세트를 생성한다.
C1. 화상 파라미터 세트(PPS) 및 제 1 슬라이스 세트를 포함하는 비트스트림을 디코딩하기 위해 디코더(260, 600, 701)에 의해 수행되는 방법(400)에서, 화상 파라미터 세트를 획득하는 단계(s402); 및 지표 값(예를 들어, 플래그)을 획득하기 위해 화상 파라미터 세트에 포함된 구문 요소를 디코딩하는 단계를 포함하는데, 디코더는 지표 값이 제 1 값으로 설정되면 비트스트림에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값 - 파라미터 값은 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하는데 사용될 수 있음 - 을 포함한다고 결정되고, 그렇지 않으면, 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정되도록 구성된다.
C2. 인코더(140, 600, 721)에 의해 수행되는 방법(500)에서, 제 1 슬라이스 세트를 생성하는 단계(s502); 및 화상 파라미터 세트를 생성하는 단계(s504)를 포함하는데, 화상 파라미터 세트는 제 1 값 또는 제 2 값으로 설정되는 제 1 코드워드를 포함하고, 제 1 코드워드가 제 1 값으로 설정될 때, 제 1 코드워드는 인코더에 의해 생성된 화상 헤더가 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타내고, 제 1 코드워드가 제 2 값으로 설정될 때, 제 1 코드워드는 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타낸다.
D1. 비디오 디코더(260, 600, 701)로서, 인코딩된 비디오 비트스트림 - 상기 비트스트림은 또한 제 1 세그먼트 세트를 포함함 - 에 포함된 제 1 파라미터 세트를 획득하며; 제 1 파라미터 세트에 포함된 제 1 코드워드에 기초하여, i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 비트스트림에 포함된 제 1 파라미터 또는 제 2 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값 - 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음 - 을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것 중 하나를 결정하도록 구성된다.
E1. 비디오 디코더(701)로서, 인코딩된 비디오 비트스트림 - 상기 비트스트림은 또한 제 1 세그먼트 세트를 포함함 - 에 포함된 제 1 파라미터 세트를 획득하도록 동작 가능한 획득 유닛(702); 및 제 1 파라미터 세트에 포함된 제 1 코드워드에 기초하여, i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 비트스트림에 포함된 제 1 파라미터 또는 제 2 파라미터 세트가 특정 파라미터에 상응하는 파라미터 값 - 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있음 - 을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용되어야 하는 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 비트스트림에 포함된 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값은 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 디코딩하는데 사용될 수 있는 것 중 하나를 결정하도록 동작 가능한 결정 유닛(704)을 포함한다.
F1. 비디오 인코더(140, 600, 721)로서, 제 1 세그먼트 세트를 생성하고; 제 1 파라미터 세트를 생성하도록 구성되는데, 제 1 파라미터 세트는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 인코더에 의해 생성된 제 1 파라미터 세트 또는 제 2 파라미터 세트가 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것 중 하나를 나타내는 제 1 코드워드를 포함한다.
G1. 비디오 인코더(721)로서, 제 1 세그먼트 세트를 생성하도록 동작 가능한 세그먼트 생성 유닛(722); 및 제 1 파라미터 세트를 생성하는 파라미터 세트 생성 유닛(724)룰 포함하는데, 제 1 파라미터 세트는 i) 제 1 세그먼트 세트에 포함된 각각의 세그먼트가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, ii) 인코더에 의해 생성된 제 1 파라미터 세트 또는 제 2 파라미터 세트가 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, iii) 특정 파라미터에 상응하는 디폴트 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것, 또는 iv) 특정 파라미터에 상응하는 파라미터 값이 하나 이상의 다른 파라미터 값으로부터 도출될 수 있고, 도출된 파라미터 값이 제 1 세그먼트 세트에 포함된 각각의 세그먼트의 세그먼트 데이터를 인코딩하는데 사용된 것 중 하나를 나타내는 제 1 코드워드를 포함한다.
H1. 컴퓨터 프로그램(643)으로서, 처리 회로(602)에 의해 실행될 때, 처리 회로(602)가 상술한 실시예 A1-A24, B1-B3, C1-C2 중 어느 하나의 방법을 수행하게 하는 명령어(644)를 포함한다.
H2. 캐리어로서, 실시예 H1의 컴퓨터 프로그램을 포함하는데, 캐리어는 전자 신호, 광학 신호, 무선 신호 및 컴퓨터 판독 가능 저장 매체(642) 중 하나이다.
장점
요약 섹션에서 언급된 바와 같이, 상술한 실시예의 장점은 (예를 들어, CVS에서) 비트스트림의 적어도 일부에서 일정하게 유지되는 각각의 파라미터에 대해, 세그먼트(예를 들어, 슬라이스) 레벨에서의 파라미터에 대한 파라미터 값을 시그널링할 필요가 없으며, 이는 비트를 절감하고 전체 압축 효율을 향상시킨다.
CTC로부터의 이전의 예에 따르면, 아래 표에 도시된 바와 같이 VTM 5.0에 대한 AI, RA, LDB 및 LDP 구성의 각각에 대해 슬라이스마다 평균적으로 16.5, 7.9, 12.8 및 7.8 비트를 절감할 수 있다.
표 18 - 슬라이스마다 절감되는 추정된 평균 비트 수
슬라이스 파라미터 슬라이스마다 절감되는 평균 비트
AI RA LDB LDP
no_output_of_prior_pics_flag 1
slice_sao_luma_flag 1
slice_sao_chroma_flag 1
tile_group_alf_enabled_flag 1
dep_quant_enabled_flag 1 1 1 1
partition_constrainst_override_flag 1
slice_loop_filter_across_slices_enabled_flag1) 1 1 1 1
short_term_ref_pic_set_sps_flag2) 0.99 1 1
inter_ref_pic_set_prediction_flag 0.99
slice_temporal_mvp_enabled_flag 1 1
mvd_l1_zero_flag 1
collocated_from_l0_flag 1
num_negative_pics 0.99
num_positive_pics 0.99
reshaper_model_delta_max_bin_idx 2.39
slice_reshaper_ChromaAdj3) 0.79 0.79
six_minus_max_num_merge_cand 0.16 0.98 1 1
five_minus_max_num_affine_merge_cand4) 0.98 1 1
max_num_merge_cand_minus_max_num_triangle_cand 2.93 3
collocated_ref_idx5) 0.96 1 1
slice_type 3
요약 16.5 7.9 12.8 7.8
주석: 1) slice_loop_filter_across_slices_enabled_flag는 VVC 5.0 v7 사양의 일부가 아니고(이러한 플래그는 PPS로 이동됨); 2) short_term_ref_pic_set_sps_flag는 VVC 5.0 v7 사양의 일부가 아니고(플래그 ref_pic_list_sps_flag[i]는 동일해야 함); 3) slice_reshaper_ChromaAdj는 VVC 5.0 v7 사양의 일부가 아니고(slice_chroma_residual_scale_flag는 동일해야 함); 4) five_minus_max_num_affine_merge_cand는 VVC 5.0 v7 사양의 일부가 아니며(이러한 파라미터는 five_minus_max_num_subblock_merge_cand와 동일해야 함); 5) collocated_ref_idx는 VVC 5.0 v7 사양의 일부가 아니다(동등한 파라미터가 없는 것 같음).
약어
ALF 적응 루프 필터
APS 적응 파라미터 세트
AUD 액세스 유닛 구분 문자
BLA 차단된 링크 액세스
CRA 클린 랜덤 액세스
CVS 코딩된 비디오 시퀀스
CVSS CVS 시작
CU 코딩 유닛
DPS 디코더 파라미터 세트
GRA 점진적 랜덤 액세스
HEVC 고효율 비디오 코딩
IDR Instantaneous Decoding Refresh
IRAP 인트라 랜덤 액세스 포인트
JVET Joint Video Exploratory Team
LMCS 루마 매핑 및 크로마 스케일링
MPEG Motion Picture Experts Group
NAL 네트워크 추상화 계층
PES 패킷화된 기본 스트림
PPS 화상 파라미터 세트
RADL Random Access Decodable Leading
RASL Random Access Skip Leading
SPS 시퀀스 파라미터 세트
STSA Step-wise Temporal Sub-layer Access
TSA 시간적 하위 계층 액세스
VCL 비디오 코딩 계층
VPS 비디오 파라미터 세트
VVC 다용도 비디오 코딩
SEI 부가 향상 계층
기여(본 개시의 이 부분은 고려를 위해 제출될 수 있는 기여의 관련 부분을 포함함)
-초안 기여 시작-
제목: SPS 또는 슬라이스 헤더의 파라미터
상태: JVET로의 문서 입력
목적: 제안
요약
VVC의 슬라이스 파라미터 중 일부는 일부 CTC 구성을 위해 비트스트림의 모든 슬라이스에 대해 일정하게 유지된다. 이러한 기여는 SPS에서나 각각의 슬라이스에 대해 VVC의 슬라이스 파라미터 중 일부를 시그널링할 수 있는 메커니즘을 제안한다.
보다 구체적으로는, VVC에 대한 다음과 같은 변경 사항이 이러한 기여에서 제안된다.
(1) 아래에 나열된 구문 요소의 값이 SPS 또는 슬라이스 헤더에서 조건부로 시그널링될 수 있는지 또는 항상 슬라이스 헤더에서 시그널링되는지를 지정하는 SPS에서 sps_or_slice_flag를 시그널링한다.
a. dep_quant_enabled_flag,
b. ref_pic_list_sps_flag,
c. slice_temporal_mvp_enabled_flag,
d. mvd_l1_zero_flag,
e. collocated_from_l0_flag,
f. six_minus_max_num_merge_cand
g. five_minus_max_num_subblock_merge_cand
h. max_num_merge_cand_minus_max_num_triangle_cand
(2) sps_or_slice_flag가 1이면, 상술한 구문 요소의 각각에 대해, SPS에서 상응하는 파라미터를 시그널링한다. 상응하는 파라미터 값이 0이면, 상응하는 구문 요소는 슬라이스 헤더에서 시그널링된다. 그렇지 않으면, 상응하는 슬라이스 헤더 구문 요소의 값은 SPS 파라미터 값 - 1로서 도출된다.
CTC에 대한 루마 BD-레이트 수치(luma BD-rate number)는 AI/RA/LDB/LDP에 대해 각각 0.0%/0.0%/-0.1%/0.0%인 것으로 보고되고, 제안자(proponent)는 화상마다 다수의 슬라이스가 사용될 때 더 많은 절감을 주장한다.
소개
슬라이스 헤더의 일부 파라미터는 CTC의 모든 테스트 시퀀스에서 모든 슬라이스 헤더에 대해 일정하게 유지되는 것으로 관찰되었다. 아래의 표는 VTM 5.0 특정 파라미터를 사용하는 CTC 구성이 모든 테스트 시퀀스의 모든 슬라이스 헤더에 대해 일정하게 유지되는 것을 보여준다.
표 19 - VTM 5.0을 사용하는 각각의 CTC 구성에 대해 일정하게 유지되는 슬라이스 파라미터
슬라이스 파라미터 이름 일정함
  AI RA LDB LDP
dep_quant_enabled_flag x x x x
short_term_ref_pic_set_sps_flag x x x
slice_temporal_mvp_enabled_flag   x x
mvd_l1_zero_flag   x
collocated_from_l0_flag   x
six_minus_max_num_merge_cand x x x x
five_minus_max_num_affine_merge_cand   x x x
max_num_merge_cand_minus_max_num_triangle_cand   x x
VTM 5.0과 초안 VVC 사양인 JVET-N1001-v8 사이에는 슬라이스 파라미터 이름 중 몇 가지가 상이하다는 것이 주목된다. 따라서, VTM 소프트웨어에서 short_term_ref_pic_set_sps_flag 및 five_minus_max_num_affine_merge_cand의 이름을 ref_pic_list_sps [0], ref_pic_list_sps [1] 및 five_minus_max_num_subblock_merge_cand로 변경할 것을 제시한다.
제안
비트스트림의 모든 슬라이스 헤더에 대해 일정하게 유지되는 슬라이스 헤더의 파라미터를 전송하는 것은 중복이다. 따라서, SPS에서나 각각의 슬라이스에 대해 슬라이스 파라미터 중 일부를 시그널링할 수 있는 메커니즘이 제안된다.
보다 구체적으로는, VVC에 대한 다음과 같은 변경이 이러한 기여에서 제안된다.
(1) 아래에 나열된 구문 요소의 값이 SPS 또는 슬라이스 헤더에서 조건부로 시그널링될 수 있는지 또는 항상 슬라이스 헤더에서 시그널링되는지를 지정하는 SPS에서 sps_or_slice_flag를 시그널링한다.
a. dep_quant_enabled_flag,
b. ref_pic_list_sps_flag,
c. slice_temporal_mvp_enabled_flag,
d. mvd_l1_zero_flag,
e. collocated_from_l0_flag,
f. six_minus_max_num_merge_cand
g. five_minus_max_num_subblock_merge_cand
h. max_num_merge_cand_minus_max_num_triangle_cand
sps_or_slice_flag가 1이면, 상술한 구문 요소의 각각에 대해, SPS에서 상응하는 파라미터를 시그널링한다.
파라미터 값이 0이면, 구문 요소는 각각의 슬라이스 헤더에 대해 시그널링된다. 그렇지 않으면, 구문 요소의 값은 파라미터 값 - 1로서 도출된다.
VVC 사양에 대한 제안된 변경
VVC 초안(JVET-N1001-v8) 상에서 제안된 변경이 도시된다.
Figure 112021003833149-pct00001
0과 같은 sps_or_slice_flag는 sps_or_slice_dep_quant_enabled_flag, sps_or_slice_ref_pic_list_sps_flag, sps_or_slice_temporal_mvp_enabled_flag, sps_or_slice_mvd_l1_zero_flag, sps_or_slice_collocated_from_l0_flag, sps_or_slice_six_minus_max_num_merge_cand, sps_or_slice_five_minus_max_num_subblock_merge_cand 및 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand가 0과 같도록 추론됨을 지정한다. 1과 같은 sps_or_slice_flag는 이러한 구문 요소가 SPS에 존재함을 지정한다.
0과 같은 sps_or_slice_dep_quant_enabled_flag는 dep_quant_enabled_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_dep_quant_enabled_flag는 dep_quant_enabled_flag가 sps_or_slice_dep_quant_enabled_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_ref_pic_list_sps_flag[ i ]는 ref_pic_list_sps[ i ]가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_ref_pic_list_sps_flag[ i ]는 ref_pic_list_sps[ i ]가 sps_or_slice_ref_pic_list_sps_flag[ i ] - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_temporal_mvp_enabled_flag는 slice_temporal_mvp_enabled_flag가 CVS에서 slice_type이 I와 같지 않은 슬라이스의 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_temporal_mvp_enabled_flag는 slice_temporal_mvp_enabled_flag가 sps_or_slice_temporal_mvp_enabled_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_mvd_l1_zero_flag는 mvd_l1_zero_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_mvd_l1_zero_flag는 mvd_l1_zero_flag가 sps_or_slice_mvd_l1_zero_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_collocated_from_l0_flag는 collocated_from_l0_flag가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_collocated_from_l0_flag는 collocated_from_l0_flag가 sps_or_slice_collocated_from_l0_flag - 1과 같도록 추론됨을 지정한다. 잘린 단항 이진화 tu(v)의 최대 값 maxVal은 2로 설정된다.
0과 같은 sps_or_slice_six_minus_max_num_merge_cand는 six_minus_max_num_merge_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_six_minus_max_num_merge_cand는 six_minus_max_num_merge_cand가 sps_or_slice_six_minus_max_num_merge_cand - 1과 같도록 추론됨을 지정한다. sps_or_slice_six_minus_max_num_merge_cand의 값은 0에서 6까지의 범위에 있어야 한다.
0과 같은 sps_or_slice_five_minus_max_num_subblock_merge_cand는 five_minus_max_num_subblock_merge_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_five_minus_max_num_subblock_merge_cand는 five_minus_max_num_subblock_merge_cand가 sps_or_slice_five_minus_max_num_subblock_merge_cand - 1과 같도록 추론됨을 지정한다. sps_or_slice_five_minus_max_num_subblock_merge_cand의 값은 0에서 6까지의 범위에 있어야 한다.
0과 같은 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand는 max_num_merge_cand_minus_max_num_triangle_cand가 슬라이스 헤더에 존재함을 지정한다. 0보다 큰 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand는 max_num_merge_cand_minus_max_num_triangle_cand가 sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand - 1과 같도록 추론됨을 지정한다. sps_or_slice_max_num_merge_cand_minus_max_num_triangle_cand의 값은 0에서 MaxNumMergeCand - 1까지의 범위에 있어야 한다.
Figure 112021003833149-pct00002
결과
VTM-5.0을 사용하는 CTC에 대한 비트레이트 절감은 아래에 보여진다. AI의 경우, sps_or_slice_flag는 각각의 화상에 대해 SPS가 전송되므로 0으로 설정된다. 이득(gain)이 품질의 변화에서 얻는 것이 아니라 슬라이스 헤더 대신에 SPS에서 상수 파라미터를 시그널링하여 비트를 절감함으로써 얻기 때문에 이러한 BD 레이트 수치에는 노이즈가 없다는 것을 주목한다. LDB의 Johnny 시퀀스의 경우, BD 레이트는 -0.37%이다.
Figure 112021003833149-pct00003
Figure 112021003833149-pct00004
비-CTC 구성에 대한 추정 결과
다수의 슬라이스를 갖는 비-CTC 구성에서, 비트 절감은 더 많을 것으로 예상된다. 아래 표 5에서는 CTC 비트 절감에 슬라이스 수를 곱하여 대략적인 추정이 수행된다.
화상마다 다수의 슬라이스에 대한 추정된 비트 절감
Figure 112021003833149-pct00005
- 최종 기여 -
(부착된 초안 기여를 포함하여) 다양한 실시예가 본 명세서에 설명되었지만, 이는 제한이 아닌 예로서만 제시된 것임이 이해되어야 한다. 따라서, 본 개시의 폭(breadth) 및 범위는 상술한 예시적인 실시예 중 어느 것에 의해 제한되지 않아야 한다. 더욱이, 모든 가능한 변형에서 상술한 요소의 임의의 조합은 본 명세서에서 달리 나타내어지지 않거나 문맥에 의해 달리 명백하게 모순되지 않는 한 본 개시에 포함된다.
부가적으로, 상술하고 도면에 도시된 프로세스는 일련의 단계로서 도시되지만, 이는 예시만을 위해 수행되었다. 따라서, 일부 단계가 부가될 수 있고, 일부 단계가 생략될 수 있으며, 단계의 순서가 재배치될 수 있으며, 일부 단계가 병렬로 수행될 수 있음이 고려된다.

Claims (27)

  1. 화상 파라미터 세트(PPS) 및 제 1 슬라이스 세트를 포함하는 비트스트림을 디코딩하기 위해 디코더(260,600,701)에 의해 수행되는 방법(400)에 있어서,
    화상 파라미터 세트를 획득하는 단계(s402);
    화상 파라미터 세트 내의 제 2 구문 요소로부터, 화상 파라미터 세트가 제 1 구문 요소 및 제 3 구문 요소를 포함한다는 것을 나타내는 정보를 도출하는 단계로서, 제 3 구문 요소는 제 2 특정 파라미터에 상응하는, 도출하는 단계;
    지표 값을 획득하기 위해 화상 파라미터 세트에 포함된 제 1 구문 요소를 디코딩하는 단계로서,
    디코더는, 지표 값이 특정 값과 같으면, 비트스트림 내의 별개의 NAL 유닛에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하고, 여기서, 화상 헤더 내의 특정 파라미터에 상응하는 파라미터 값은 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하기 위해서 사용되고,
    그렇지 않으면, 디코더는, 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하도록 구성되는, 디코딩하는 단계; 및
    제 3 구문 요소에 기초하여, 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 제 2 특정 파라미터에 상응하는 파라미터 값을 포함하는지 여부를 결정하는 단계를 포함하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  2. 제 1 항에 있어서,
    비트스트림에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는 화상 헤더로부터 특정 파라미터에 상응하는 파라미터 값을 획득하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  3. 제 2 항에 있어서,
    제 1 슬라이스 세트에 포함된 각각의 슬라이스에 대해, 획득된 파라미터 값을 사용하여 슬라이스의 슬라이스 데이터를 디코딩하는 단계를 더 포함하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  4. 제 1 항에 있어서,
    획득된 지표 값이 특정 값과 같지 않다고 결정한 결과로서, 디코더는 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  5. 제 4 항에 있어서,
    제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정한 결과로서, 디코더는,
    제 1 슬라이스 세트에 포함된 각각의 슬라이스에 대해, 슬라이스에 포함된 구문 요소로부터 특정 파라미터에 상응하는 파라미터 값을 획득하고, 획득된 파라미터 값을 사용하여 슬라이스의 슬라이스 데이터를 디코딩하는 단계를 포함하는 프로세스를 수행하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  6. 제 1 항 내지 제 5 항 중 어느 하나의 항에 있어서,
    제 1 슬라이스 세트에 포함된 각각의 슬라이스는 상이한 비디오 코딩 계층(VCL), 네트워크 추상화 계층(NAL) 유닛에 포함되는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  7. 제 6 항에 있어서,
    각각의 상기 슬라이스는 슬라이스 헤더 및 슬라이스 페이로드를 포함하는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  8. 제 1 항 내지 제 5 항 중 어느 하나의 항에 있어서,
    화상 파라미터 세트는 비트스트림에 포함된 비-VCL NAL 유닛의 페이로드 부분에 포함되는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  9. 제 1 항 내지 제 5 항 중 어느 하나의 항에 있어서,
    제 2 구문 요소는 비트는 단일 비트로 구성되는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  10. 제 1 항 내지 제 5 항 중 어느 하나의 항에 있어서,
    비트스트림은 제 1 코딩된 비디오 시퀀스(CVS) 및 제 2 CVS를 포함하고;
    화상 파라미터 세트 및 제 1 슬라이스 세트는 모두 제 1 CVS에 포함되며;
    제 2 화상 파라미터 세트 및 제 2 슬라이스 세트는 모두 제 2 CVS에 포함되는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  11. 제 10 항에 있어서,
    지표 값을 획득하기 위해 제 2 화상 파라미터 세트에 포함된 구문 요소를 디코딩하는 단계를 더 포함하며,
    디코더는, 지표 값이 특정 값과 같으면, 비트스트림에 포함된 제 2 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하고, 그렇지 않으면, 디코더는, 제 2 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하도록 구성되고,
    제 2 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함하면, 파라미터 값은 제 2 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하는데 사용되는, 디코더(260,600,701)에 의해 수행되는 방법(400).
  12. 인코더(140, 600, 721)에 의해 수행되는 방법(500)에 있어서,
    제 1 슬라이스 세트를 생성하는 단계(s502); 및
    화상 파라미터 세트를 생성하는 단계(s504)를 포함하는데,
    화상 파라미터 세트는 제 1 값 또는 제 2 값으로 설정되는 제 1 구문 요소를 포함하고,
    제 1 구문 요소가 제 1 값으로 설정될 때, 제 1 구문 요소는 인코더에 의해 생성된 화상 헤더가 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타내고,
    제 1 구문 요소가 제 2 값으로 설정될 때, 제 1 구문 요소는 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다는 것을 나타내는, 인코더(140, 600, 721)에 의해 수행되는 방법(500).
  13. 컴퓨터 프로그램(643)을 포함하는 컴퓨터 판독 가능한 저장 매체로서,
    처리 회로(602)에 의해 실행될 때, 처리 회로(602)가 제 1 항 내지 제 5 항 또는 제12항 중 어느 하나의 항의 방법을 수행하게 하는 명령어(644)를 포함하는 컴퓨터 프로그램(643)을 포함하는, 컴퓨터 판독 가능한 저장 매체.
  14. 화상 파라미터 세트(PPS) 및 제 1 슬라이스 세트를 포함하는 비트스트림을 디코딩하는 디코더(260, 600, 701)에 있어서,
    화상 파라미터 세트를 획득하고(s402);
    화상 파라미터 세트 내의 제 2 구문 요소로부터, 화상 파라미터 세트가 제 1 구문 요소 및 제 3 구문 요소를 포함한다는 것을 나타내는 정보를 도출하고, 제 3 구문 요소는 제 2 특정 파라미터에 상응하며;
    지표 값을 획득하기 위해 화상 파라미터 세트에 포함된 제 1 구문 요소를 디코딩하고,
    디코더는, 지표 값이 특정 값과 같으면, 비트스트림 내의 별개의 NAL 유닛에 포함된 화상 헤더가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하고, 여기서, 화상 헤더 내의 특정 파라미터에 상응하는 파라미터 값은 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 디코딩하기 위해서 사용되고,
    그렇지 않으면, 디코더는, 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함한다고 결정하도록 구성되며; 및
    제 3 구문 요소에 기초하여, 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 제 2 특정 파라미터에 상응하는 파라미터 값을 포함하는지 여부를 결정하도록 적응되는, 비트스트림을 디코딩하는 디코더(260, 600, 701).
  15. 인코더(140, 600, 721)에 있어서,
    제 1 슬라이스 세트를 생성하고(s502);
    화상 파라미터 세트를 생성하도록(s504) 적응되는데,
    화상 파라미터 세트는 i) 제 1 슬라이스 세트에 포함된 각각의 슬라이스가 특정 파라미터에 상응하는 파라미터 값을 포함하는 것, 또는 ii) 인코더에 의해 생성된 화상 헤더가 제 1 슬라이스 세트에 포함된 각각의 슬라이스의 슬라이스 데이터를 인코딩하는데 사용되는 특정 파라미터에 상응하는 파라미터 값을 포함하는 것 중 하나를 나타내는 제 1 구문 요소를 포함하는, 인코더(140, 600, 721).
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020217000944A 2019-06-24 2020-06-12 인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보 KR102540022B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962865464P 2019-06-24 2019-06-24
US62/865,464 2019-06-24
PCT/SE2020/050611 WO2020263158A1 (en) 2019-06-24 2020-06-12 Signaling parameter value information in a parameter set to reduce the amount of data contained in an encoded video bitstream

Publications (2)

Publication Number Publication Date
KR20210019530A KR20210019530A (ko) 2021-02-22
KR102540022B1 true KR102540022B1 (ko) 2023-06-02

Family

ID=74060706

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217000944A KR102540022B1 (ko) 2019-06-24 2020-06-12 인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보

Country Status (12)

Country Link
US (3) US11197029B2 (ko)
EP (1) EP3791594A4 (ko)
JP (1) JP7017649B2 (ko)
KR (1) KR102540022B1 (ko)
CN (1) CN112514399B (ko)
BR (1) BR112020025895A2 (ko)
CL (1) CL2021000069A1 (ko)
MX (1) MX2020013702A (ko)
PH (1) PH12020552072A1 (ko)
RU (1) RU2758901C1 (ko)
WO (1) WO2020263158A1 (ko)
ZA (1) ZA202007503B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020004420A1 (en) * 2018-06-30 2020-01-02 Sharp Kabushiki Kaisha Systems and methods for signaling picture types of pictures included in coded video
US11399188B2 (en) * 2020-01-01 2022-07-26 Tencent America LLC Method for mixed NAL unit type support in a coded picture
US11470358B2 (en) * 2020-04-02 2022-10-11 Sharp Kabushiki Kaisha Systems and methods for signaling scaling window information in video coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140003503A1 (en) * 2012-06-27 2014-01-02 Broadcom Corporation Video coding system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7724818B2 (en) 2003-04-30 2010-05-25 Nokia Corporation Method for coding sequences of pictures
MXPA06002495A (es) * 2003-09-07 2006-06-20 Microsoft Corp Capa de porcion en codificador/descodificador (codec) de video.
US9560367B2 (en) 2004-09-03 2017-01-31 Nokia Technologies Oy Parameter set and picture header in video coding
CN101389021B (zh) * 2007-09-14 2010-12-22 华为技术有限公司 视频编解码方法及装置
US9001883B2 (en) * 2011-02-16 2015-04-07 Mediatek Inc Method and apparatus for slice common information sharing
WO2013009946A1 (en) 2011-07-14 2013-01-17 The Trustees Of Columbia University In The City Of New York Chip integrated single photon generation by active time multiplexing
IN2014CN04872A (ko) * 2012-01-17 2015-09-18 Ericsson Telefon Ab L M
US9538200B2 (en) 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
US9716892B2 (en) 2012-07-02 2017-07-25 Qualcomm Incorporated Video parameter set including session negotiation information
PH12017501838A1 (en) 2012-09-26 2018-07-02 Velos Media Int Ltd Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US20150016502A1 (en) * 2013-07-15 2015-01-15 Qualcomm Incorporated Device and method for scalable coding of video information
EP3085085A4 (en) * 2014-01-29 2017-11-08 MediaTek Inc. Method and apparatus for adaptive motion vector precision
US11336913B2 (en) * 2019-11-22 2022-05-17 Apple Inc. Reference picture re-sampling

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140003503A1 (en) * 2012-06-27 2014-01-02 Broadcom Corporation Video coding system

Also Published As

Publication number Publication date
KR20210019530A (ko) 2021-02-22
US11197029B2 (en) 2021-12-07
US20210297705A1 (en) 2021-09-23
ZA202007503B (en) 2022-05-25
JP2021527343A (ja) 2021-10-11
US20230254512A1 (en) 2023-08-10
US20220086501A1 (en) 2022-03-17
CN112514399A (zh) 2021-03-16
US11582488B2 (en) 2023-02-14
WO2020263158A1 (en) 2020-12-30
CN112514399B (zh) 2022-02-08
JP7017649B2 (ja) 2022-02-08
PH12020552072A1 (en) 2021-05-31
CL2021000069A1 (es) 2021-05-28
EP3791594A4 (en) 2021-04-07
US12047608B2 (en) 2024-07-23
EP3791594A1 (en) 2021-03-17
MX2020013702A (es) 2021-02-26
BR112020025895A2 (pt) 2021-12-28
RU2758901C1 (ru) 2021-11-02

Similar Documents

Publication Publication Date Title
US11917134B2 (en) Gradual decoding refresh in video coding
JP2022550320A (ja) ビデオ符号化におけるseiメッセージ依存性の簡略化
JP2023513343A (ja) 映像ビットストリームにおける同一位置に配置されたピクチャの指示
US20240267564A1 (en) Normative indication of recovery point
KR102540022B1 (ko) 인코딩된 비디오 비트스트림에 포함된 데이터의 양을 줄이기 위한 파라미터 세트의 시그널링 파라미터 값 정보
US20220217380A1 (en) Signaling of Non-Picture-Level Syntax Elements at the Picture Level
US11979561B2 (en) Intra random access points for picture coding
CN115606183A (zh) 参考图片环绕的剪裁操作
TWI774246B (zh) 獲取用於視頻位元流之各層表示之值
CN116018808A (zh) 确定对视频比特流中的第一图片进行解码的能力
CA3101453C (en) Signaling parameter value information in a parameter set to reduce the amount of data contained in an encoded video bitstream
US12022084B2 (en) Video coding layer up-switching indication
US20220368922A1 (en) Providing segment presence information
OA20044A (en) Signaling parameter value information in a parameter set to reduce the amount of data contained in an encoded video bitstream.

Legal Events

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