KR20220012356A - 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 - Google Patents

비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20220012356A
KR20220012356A KR1020217042693A KR20217042693A KR20220012356A KR 20220012356 A KR20220012356 A KR 20220012356A KR 1020217042693 A KR1020217042693 A KR 1020217042693A KR 20217042693 A KR20217042693 A KR 20217042693A KR 20220012356 A KR20220012356 A KR 20220012356A
Authority
KR
South Korea
Prior art keywords
tile
units
brick
partition
unassigned
Prior art date
Application number
KR1020217042693A
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 KR20220012356A publication Critical patent/KR20220012356A/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

방법은, 파티션에 할당되어야 하며 또한 미할당된 것으로서 초기화된 유닛의 수를 결정하는 단계; 할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 단계; 명시적인 크기의 파티션에 대한 크기를 표시하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계; 유닛의 카운트를 표시하는 단계; 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계; 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 단계를 포함한다.

Description

비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
본 발명은 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램에 관한 것이다.
비디오 코딩 표준 및 사양은 일반적으로 인코더가 코딩된 픽처를 서브세트로 분할 또는 파티셔닝할 수 있게 한다. 비디오 코딩에 있어서, 파티셔닝은 픽처의 각 요소 또는 픽처의 소영역이 정확히 서브세트(블록) 중 하나에 있도록 픽처 또는 픽처의 소영역을 서브세트(블록)로 분할하는 것으로서 정의될 수 있다. 예를 들어, H.265/HEVC는 기본적으로 64×64 픽셀 크기를 갖는 코딩 트리 유닛(CTU) 개념을 도입했다. CTU는 단일의 코딩 유닛(CU)을 포함할 수 있거나 또는 쿼드트리 구조를 기반으로 다수의 더 작은 CU로, 최소 8×8 픽셀로, 반복적으로 분할될 수 있다. H.265/HEVC는 또한 직사각형이며 정수 개의 CTU를 포함하는 타일과, 타일 스캔에서 연속적으로 정렬되며 단일의 NAL 유닛에 포함되는 정수 개의 코딩 트리 유닛을 포함하는 슬라이스 세그먼트를 기반으로 정의된 슬라이스를 인정한다.
다용도 비디오 코딩(Versatile Video Coding)(VVC)(MPEG-I Part 3), 일명 ITU-T H.266은 동영상 전문가 그룹(Moving Picture Experts Group)(MPEG)(공식적으로, ISO/IEC JTC1SC29 WG11)과 국제 전기통신 연합(International Telecommunication Union)(ITU)의 비디오 코딩 전문가 그룹(Video Coding Experts Group)(VCEG)의 협력 비디오 전문가 팀(Joint Video Experts Team)(JVET)에 의해 HEVC/H.265의 후속 표준으로 개발되고 있는 비디오 압축 표준이다. VVC 파티셔닝 스킴에는 타일 뿐만 아니라, 타일 내에서 하나 이상의 CTU 행을 포함할 수 있는 브릭(brick)도 포함된다. 브릭의 도입은 슬라이스의 정의에도 영향을 미친다.
결과적으로, 타일 및 브릭 파티셔닝을 위한 다양한 옵션을 시그널링하기 위해 다소 복잡한 신택스 구조가 생성되었으며, 이는 특히 상기 시그널링에 필요한 비트레이트에 관해서는 많은 측면에서 차선책이다.
이제, 상기 문제점을 적어도 완화하기 위해, 향상된 인코딩 방법이 본 명세서에서 소개된다.
본 발명의 다양한 실시형태에 대하여 추구되는 보호 범위는 독립 청구항에 의해 설명된다. 독립 청구항의 범위에 속하지 않는, 본 명세서에 설명되는 실시형태 및 특징이 있다면, 이는 본 발명의 다양한 실시형태를 이해하는 데 유용한 실시예로서 해석되어야 한다.
제1 양태에 따른 방법은, 파티션에 할당되어야 하며 또한 미할당된 것으로서 초기화된 유닛의 수를 결정하는 단계; 할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 단계; 명시적인 크기의 파티션에 대한 크기를 표시하는 단계, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계; 유닛의 카운트를 표시하는 단계; 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하는 단계, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계; 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 단계를 포함한다.
실시형태에 따르면, 파티션은 타일 열, 타일 행, 하나 이상의 타일 열의 브릭 행, 타일의 브릭 행, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 열, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 행 중 하나 이상이다.
실시형태에 따르면, 유닛은 픽처의 샘플의 직사각형 블록, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 셀 중 하나 이상이다.
제2 양태에 따른 장치는, 파티션에 할당되어야 하며 또한 미할당된 것으로서 초기화된 유닛의 수를 결정하는 수단; 할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 수단; 명시적인 크기의 파티션에 대한 크기를 표시하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 수단; 유닛의 카운트를 표시하는 수단; 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 수단; 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 수단을 포함한다.
제3 양태에 따른 방법은, 파티션에 할당되어야 하는 유닛의 수를 결정하는 단계; 할당될 명시적인 크기의 파티션의 수를 결정하는 단계; 명시적인 크기의 파티션에 대한 크기를 결정하는 단계, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계; 유닛의 카운트를 결정하는 단계; 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하는 단계, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계; 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 단계를 포함한다.
실시형태에 따르면, 할당될 명시적인 크기의 파티션의 수를 결정하는 단계는 할당될 명시적인 크기의 파티션의 수를 신택스 구조로부터 디코딩하는 단계를 포함하고; 명시적인 크기의 파티션에 대한 크기를 결정하는 단계는 명시적인 크기의 파티션에 대한 크기를 신택스 구조로부터 디코딩하는 단계를 포함하고; 유닛의 카운트를 결정하는 단계는 유닛의 카운트를 신택스 구조로부터 디코딩하는 단계를 포함한다.
제4 양태에 따른 장치는, 파티션에 할당되어야 하는 유닛의 수를 결정하는 수단; 할당될 명시적인 크기의 파티션의 수를 결정하는 수단; 명시적인 크기의 파티션에 대한 크기를 결정하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 수단; 유닛의 카운트를 결정하는 수단; 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 수단; 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 수단을 포함한다.
추가적인 양태는 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 장치로서, 상기 적어도 하나의 메모리에는 상기 적어도 하나의 프로세서에 의한 실행시에 장치로 하여금 적어도 상기 방법 및 상기 방법과 관련된 실시형태 중 하나 이상을 수행하게 하는 코드가 저장되는 장치에 관한 것이다.
본 발명의 이해를 돕기 위해, 이제 예로서 첨부 도면을 참조할 것이다:
도 1은 본 발명의 실시형태를 이용하는 전자 디바이스를 개략적으로 도시하고;
도 2는 본 발명의 실시형태를 이용하기에 적합한 사용자 장비를 개략적으로 도시하고;
도 3은 무선 및 유선 네트워크 연결을 사용하여 연결되는 본 발명의 실시형태를 이용하는 전자 디바이스를 개략적으로 더 도시하고;
도 4는 본 발명의 실시형태를 구현하기에 적합한 인코더를 개략적으로 도시하고;
도 5a, 도 5b 및 도 5c는 픽처를 코딩 트리 유닛(CTU), 타일, 브릭 및 슬라이스로 파티셔닝하는 일부 실시예를 도시하고;
도 6은 H.266/VVC Draft 5에 따른 슬라이스, 타일 및 브릭 파티셔닝의 시그널링을 위한 신택스 구조를 도시하고;
도 7은 본 발명의 양태에 따른 인코딩 방법의 흐름도를 도시하고;
도 8은 본 발명의 다른 양태에 따른 인코딩 방법의 흐름도를 도시하고;
도 9는 본 발명의 실시형태에 따른 인코딩 방법의 흐름도를 도시하고;
도 10a, 도 10b 및 도 10c는 타일 및 브릭 파티셔닝의 일부 실시예를 도시하고;
도 11은 본 발명의 실시형태를 구현하기에 적합한 디코더의 개략도를 도시하고;
도 12는 본 발명의 실시형태에 따른 디코딩 방법의 흐름도를 도시하고;
도 13은 본 발명의 다른 실시형태에 따른 디코딩 방법의 흐름도를 도시하고;
도 14a 및 도 14b는 본 발명의 추가적인 실시형태에 따른 인코딩 및 디코딩 방법의 흐름도를 도시하고;
도 15는 다양한 실시형태가 구현될 수 있는 예시적인 멀티미디어 통신 시스템의 개략도를 도시한다.
아래에서는 관점 전환을 개시하기 위해 적절한 장치 및 가능한 메커니즘을 더 자세히 설명한다. 이와 관련하여, 먼저 도 1 및 도 2를 참조하고, 여기서 도 1은 예시적인 실시형태에 따른 비디오 코딩 시스템의 블록도를, 본 발명의 실시형태에 따른 코덱을 포함할 수 있는 예시적인 장치 또는 전자 디바이스(50)의 개략적인 블록도로서 도시한다. 도 2는 예시적인 실시형태에 따른 장치의 레이아웃을 도시한다. 도 1 및 도 2의 요소에 대해서는 다음에 설명한다.
전자 디바이스(50)는, 예를 들어 무선 통신 시스템의 이동 단말 또는 사용자 장비일 수 있다. 그러나, 본 발명의 실시형태는 비디오 이미지의 인코딩 및 디코딩을, 또는 인코딩 또는 디코딩을 필요로 할 수 있는 임의의 전자 디바이스 또는 장치 내에서 구현될 수 있을 것으로 이해된다.
장치(50)는 디바이스를 포함 및 보호하기 위한 하우징(30)을 포함할 수 있다. 장치(50)는 액정 디스플레이 형태의 디스플레이(32)를 더 포함할 수 있다. 본 발명의 다른 실시형태에 있어서, 디스플레이는 이미지 또는 비디오를 디스플레이하기에 적합한 임의의 적절한 디스플레이 기술일 수 있다. 장치(50)는 키패드(34)를 더 포함할 수 있다. 본 발명의 다른 실시형태에 있어서, 임의의 적절한 데이터 또는 사용자 인터페이스 메커니즘이 이용될 수 있다. 예를 들어, 사용자 인터페이스는 터치-감응식 디스플레이의 일부로서의 가상 키보드 또는 데이터 입력 시스템으로서 구현될 수 있다.
장치는 디지털 또는 아날로그 신호 입력부일 수 있는 마이크로폰(36) 또는 임의의 적절한 오디오 입력부를 포함할 수 있다. 장치(50)는, 본 발명의 실시형태에 있어서, 이어피스(38), 스피커, 또는 아날로그 또는 디지털 오디오 출력 연결부 중 어느 하나일 수 있는 오디오 출력 디바이스를 더 포함할 수 있다. 장치(50)는 또한 배터리를 포함할 수 있다(또는 본 발명의 다른 실시형태에 있어서, 디바이스는 태양 전지, 연료 전지 또는 시계태엽(clockwork) 발전기와 같은 임의의 적절한 모바일 에너지 디바이스에 의해 급전될 수 있음). 장치는 이미지 및/또는 비디오를 기록 또는 캡처할 수 있는 카메라를 더 포함할 수 있다. 장치(50)는 다른 디바이스에 대한 단거리의 가시거리 내 통신을 위한 적외선 포트를 더 포함할 수 있다. 다른 실시형태에 있어서, 장치(50)는, 예를 들어 블루투스(Bluetooth) 무선 연결 또는 USB/파이어와이어(firewire) 유선 연결과 같은 임의의 적절한 단거리 통신 솔루션을 더 포함할 수 있다.
장치(50)는 장치(50)를 제어하기 위한 제어기(56), 프로세서 또는 프로세서 회로를 포함할 수 있다. 제어기(56)는, 본 발명의 실시형태에 있어서, 이미지 및 오디오 데이터 형태의 양 데이터를 저장할 수 있거나 및/또는 제어기(56) 상에서 구현하기 위한 명령어를 저장할 수도 있는 메모리(58)에 연결될 수 있다. 제어기(56)는 오디오 및/또는 비디오 데이터의 코딩 및/또는 디코딩을 수행하기에 적합한 또는 제어기에 의해 수행되는 코딩 및/또는 디코딩을 지원하기에 적합한 코덱 회로(54)에 더 연결될 수 있다.
장치(50)는 카드 판독기(48) 및 스마트 카드(46), 예를 들어 사용자 정보를 제공하기 위한 것으로 네트워크에서 사용자의 인증 및 허가를 위한 인증 정보를 제공하기에 적합한 UICC 및 UICC 판독기를 더 포함할 수 있다.
장치(50)는 제어기에 연결되며 예를 들어 셀룰러 통신 네트워크, 무선 통신 시스템 또는 무선 로컬 에어리어 네트워크와의 통신을 위해 무선 통신 신호를 생성하기에 적합한 라디오 인터페이스 회로(52)를 포함할 수 있다. 장치(50)는 라디오 인터페이스 회로(52)에서 생성되는 라디오 주파수 신호를 다른 장치(들)에 전송하고 다른 장치(들)로부터 라디오 주파수 신호를 수신하기 위해 라디오 인터페이스 회로(52)에 연결되는 안테나(44)를 더 포함할 수 있다.
장치(50)는 처리를 위해 코덱(54) 또는 제어기에 전달되는 개별 프레임을 기록 또는 검출할 수 있는 카메라를 포함할 수 있다. 장치는 전송 및/또는 저장 전에 처리를 위한 비디오 이미지 데이터를 다른 디바이스로부터 수신할 수 있다. 장치(50)는 또한 코딩/디코딩을 위한 이미지를 무선으로 또는 유선 연결에 의해 수신할 수 있다. 위에서 설명된 장치(50)의 구조 요소는 상응하는 기능을 수행하기 위한 수단의 실시예를 나타낸다.
도 3과 관련하여, 본 발명의 실시형태가 이용될 수 있는 시스템의 실시예가 도시된다. 시스템(10)은 하나 이상의 네트워크를 통해 통신할 수 있는 다수의 통신 디바이스를 포함한다. 시스템(10)은, 한정되는 것은 아니지만, 무선 셀룰러 전화 네트워크(예를 들면, GSM, UMTS, CDMA 네트워크 등), IEEE 802.x 표준 중 어느 표준에 의해 정의되는 바와 같은 무선 로컬 에어리어 네트워크(WLAN), 블루투스 개인 영역 네트워크, 이더넷 로컬 에어리어 네트워크, 토큰 링 로컬 에어리어 네트워크, 와이드 에어리어 네트워크 및 인터넷을 포함하는 유선 또는 무선 네트워크의 임의의 조합을 포함할 수 있다.
시스템(10)은 본 발명의 실시형태를 구현하기에 적합한 유선 및 무선 통신 디바이스 및/또는 장치(50)를 포함할 수 있다.
예를 들어, 도 3에 도시되는 시스템은 모바일 전화 네트워크(11) 및 인터넷(28)의 표현을 도시한다. 인터넷(28)에의 연결은, 한정되는 것은 아니지만, 장거리 무선 연결, 단거리 무선 연결, 및 한정되는 것은 아니지만, 전화선, 케이블선, 전력선, 및 유사한 통신 경로를 포함하는 다양한 유선 연결을 포함할 수 있다.
시스템(10)에 도시되는 예시적인 통신 디바이스는, 한정되는 것은 아니지만, 전자 디바이스 또는 장치(50), 개인용 정보 단말(PDA) 및 모바일 전화(14)의 조합, PDA(16), 통합 메시징 디바이스(IMD)(18), 데스크톱 컴퓨터(20), 노트북 컴퓨터(22)를 포함할 수 있다. 장치(50)는 고정식일 수 있거나 또는 이동하고 있는 개인에 의해 휴대될 경우에는 이동식일 수 있다. 장치(50)는, 한정되는 것은 아니지만, 승용차, 트럭, 택시, 버스, 기차, 보트, 비행기, 자전거, 모터사이클 또는 유사한 임의의 적절한 운송 수단을 포함하는 운송 수단에 위치될 수도 있다.
실시형태는 셋톱 박스에서; 즉, 디스플레이 또는 무선 기능을 가질 수도/갖지 않을 수도 있는 디지털 TV 수신기에서, 하드웨어 또는 소프트웨어 또는 인코더/디코더 구현예의 조합을 갖는 태블릿 또는 (랩톱) 개인용 컴퓨터(PC)에서, 다양한 운영 체제에서, 및 하드웨어/소프트웨어 기반의 코딩을 제공하는 칩셋, 프로세서, DSP 및/또는 내장형 시스템에서 구현될 수도 있다.
일부 또는 추가의 장치는 호출 및 메시지를 송수신할 수 있으며 기지국(24)에 대한 무선 연결(25)을 통해 서비스 제공자와 통신할 수 있다. 기지국(24)은 모바일 전화 네트워크(11)와 인터넷(28) 사이의 통신을 허용하는 네트워크 서버(26)에 연결될 수 있다. 시스템은 추가적인 통신 디바이스 및 다양한 유형의 통신 디바이스를 포함할 수 있다.
통신 디바이스는, 한정되는 것은 아니지만, 코드 분할 다중 접속(CDMA), 세계 무선 통신 시스템(GSM), 만국 휴대전화 시스템(UMTS), 시분할 다중 접속(TDMA), 주파수 분할 다중 접속(FDMA), 전송 제어 규약-인터넷 규약(TCP-IP), 문자 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS), 이메일, 인스턴트 메시지 서비스(IMS), 블루투스(Bluetooth), IEEE 802.11 및 임의의 유사한 무선 통신 기술을 포함하는 다양한 전송 기술을 사용해서 통신할 수 있다. 본 발명의 다양한 실시형태를 구현함에 있어서 수반되는 통신 디바이스는, 한정되는 것은 아니지만, 라디오, 적외선, 레이저, 케이블 연결 및 임의의 적절한 연결을 포함하는 다양한 매체를 사용해서 통신할 수 있다.
전기통신 및 데이터 네트워크에 있어서, 채널은 물리적 채널 또는 논리적 채널을 의미할 수 있다. 물리적 채널은 유선과 같은 물리적 전송 매체를 의미할 수 있는 반면, 논리적 채널은 여러 논리적 채널을 운반할 수 있는 다중화된 매체를 통한 논리적 연결을 의미할 수 있다. 채널은 하나 이상의 송신기(또는 전송기)로부터 하나 이상의 수신기로 정보 신호, 예를 들어 비트스트림을 운반하는 데 사용될 수 있다.
ISO/IEC 13818-1에서 또는 균등하게 ITU-T 권고 H.222.0에서 특정된 MPEG-2 전송 스트림(TS)은 다중화된 스트림에서 오디오, 비디오 및 기타 미디어 뿐만 아니라 프로그램 메타데이터 또는 기타 메타데이터를 전송하기 위한 포맷이다. 패킷 식별자(PID)는 TS 내의 기본 스트림(일명, 패킷화된 기본 스트림)을 식별하는 데 사용된다. 따라서, MPEG-2 TS 내의 논리적 채널은 특정 PID 값에 대응하는 것으로 간주될 수 있다.
이용 가능한 미디어 파일 포맷 표준은 ISO 베이스 미디어 파일 포맷(ISO/IEC 14496-12, ISOBMFF로 약칭될 수 있음) 및 ISOBMFF에서 파생된 NAL 유닛 구조화 비디오용 파일 포맷(ISO/IEC 14496-15)을 포함한다.
비디오 코덱은 입력 비디오를 저장/전송에 적합한 압축된 표현으로 변환하는 인코더 및 압축된 비디오 표현을 보기 가능한 형태로 다시 압축 해제할 수 있는 디코더로 구성된다. 비디오 인코더 및/또는 비디오 디코더는 서로 분리될 수도 있으며, 즉 코덱을 형성하지 않아도 된다. 일반적으로, 인코더는 비디오를 더욱 콤팩트한 형태로(즉, 보다 낮은 비트레이트로) 나타내기 위해 원래의 비디오 시퀀스에서 일부 정보를 폐기한다.
전형적인 하이브리드 비디오 인코더, 예를 들어 ITU-T H.263 및 H.264의 많은 인코더 구현예는 비디오 정보를 두 단계로 인코딩한다. 먼저, 특정 픽처 영역(또는 "블록")의 픽셀 값이, 예를 들어 모션 보상 수단(코딩되는 블록에 밀접하게 대응하는 이전에 코딩된 비디오 프레임 중 하나의 영역을 탐색하고 표시함)에 의해 또는 공간적 수단(지정된 방식으로 코딩되도록 블록 주변의 픽셀 값을 사용함)에 의해 예측된다. 다음으로, 예측 에러, 즉, 픽셀의 예측된 블록과 픽셀의 원래의 블록 사이의 차이가 코딩된다. 이는 픽셀 값들의 차이를 지정된 변환(예컨대, 이산 코사인 변환(Discrete Cosine Transform)(DCT) 또는 그 변형)을 사용해서 변환하고, 계수를 양자화하고, 양자화된 계수를 엔트로피 코딩함으로써 행해지는 것이 일반적이다. 양자화 프로세스의 충실도를 변경함으로써, 인코더는 픽셀 표현의 정확도(픽처 품질)와 결과적인 코딩된 비디오 표현의 크기(파일 크기 또는 전송 비트레이트) 사이의 균형을 제어할 수 있다.
시간적 예측에 있어서, 예측의 소스는 이전에 디코딩된 픽처(일명, 참조 픽처)이다. 인트라 블록 복사(IBC; 일명, 인트라-블록-복사 예측)에 있어서는, 예측이 시간적 예측과 유사하게 적용되지만, 참조 픽처가 현재 픽처이고 이전에 디코딩된 샘플만이 예측 프로세스에서 참조될 수 있다. 인터-레이어 또는 인터-뷰 예측은 시간적 예측과 유사하게 적용될 수 있지만, 참조 픽처는 각각 다른 스케일러블 레이어 또는 다른 뷰로부터의 디코딩된 픽처이다. 일부 경우에 있어서는 인터 예측이 시간적 예측만을 의미할 수 있지만, 다른 경우에 있어서는 인터 예측이 시간적 예측, 및 시간적 예측과 동일 또는 유사한 프로세스로 수행될 수 있음을 전제로, 인트라 블록 복사, 인터-레이어 예측 및 인터-뷰 예측 중 어느 하나를 집합적으로 의미할 수 있다. 인터 예측 또는 시간적 예측은 때때로 모션 보상 또는 모션-보상된 예측으로 지칭될 수 있다.
시간적 예측, 모션 보상, 또는 모션-보상된 예측이라고 할 수도 있는 인터 예측은 시간적 중복성(temporal redundancy)을 감소시킨다. 인터 예측에 있어서, 예측의 소스는 이전에 디코딩된 픽처이다. 인트라 예측은 동일 픽처 내의 인접 픽셀이 상관될 가능성이 있다는 사실을 이용한다. 인트라 예측은 공간 또는 변환 도메인에서 수행될 수 있고, 즉 샘플 값 또는 변환 계수가 예측될 수 있다. 인트라 예측은 통상적으로 인터 예측이 적용되지 않는 인트라 코딩에서 이용된다.
코딩 절차의 한 가지 결과는 모션 벡터 및 양자화된 변환 계수와 같은 코딩 파라미터 세트이다. 많은 파라미터가 공간적으로 또는 시간적으로 이웃하는 파라미터로부터 먼저 예측된다면, 이들 파라미터는 더욱 효율적으로 엔트로피-코딩될 수 있다. 예를 들어, 모션 벡터는 공간적으로 인접하는 모션 벡터로부터 예측될 수 있고, 모션 벡터 예측자(predictor)에 대한 차이만이 코딩될 수 있다. 코딩 파라미터의 예측 및 인트라 예측을 총괄하여 인-픽처(in-picture) 예측이라고 할 수 있다.
도 4는 본 발명의 실시형태를 이용하기에 적합한 비디오 인코더의 블록도를 도시한다. 도 4는 2 개의 레이어에 대한 인코더를 제시하지만, 제시된 인코더는 2 개 이상의 레이어를 인코딩하도록 유사하게 확장될 수 있음을 이해할 것이다. 도 4는 베이스 레이어(base layer)에 대한 제1 인코더 섹션(500) 및 인핸스먼트 레이어(enhancement layer)에 대한 제2 인코더 섹션(502)을 포함하는 비디오 인코더의 실시형태를 예시한다. 제1 인코더 섹션(500) 및 제2 인코더 섹션(502)은 각각 착신 픽처를 인코딩하기 위한 유사한 요소를 포함할 수 있다. 인코더 섹션(500, 502)은 픽셀 예측자(302, 402), 예측 에러 인코더(303, 403) 및 예측 에러 디코더(304, 404)를 포함할 수 있다. 도 4는 또한 인터-예측자(306, 406), 인트라-예측자(308, 408), 모드 선택기(310, 410), 필터(316, 416), 및 참조 프레임 메모리(318, 418)를 포함하는 것으로서 픽셀 예측자(302, 402)의 실시형태를 도시하고 있다. 제1 인코더 섹션(500)의 픽셀 예측자(302)는 인터-예측자(306)(이미지와 모션 보상된 참조 프레임(318) 사이의 차이를 결정함)와 인트라-예측자(308)(현재 프레임 또는 픽처의 이미 처리된 부분에만 기초하여 이미지 블록에 대한 예측을 결정함) 모두에서 인코딩될 비디오 스트림의 베이스 레이어 이미지를 수신한다(300). 인터-예측자 및 인트라-예측자 모두의 출력은 모드 선택기(310)로 전달된다. 인트라-예측자(308)는 하나 초과의 인트라-예측 모드를 가질 수 있다. 따라서, 각각의 모드가 인트라-예측을 수행할 수 있고, 예측된 신호를 모드 선택기(310)에 제공할 수 있다. 모드 선택기(310)는 또한 베이스 레이어 픽처(300)의 복사본을 수신한다. 그에 상응하여, 제2 인코더 섹션(502)의 픽셀 예측자(402)는 인터-예측자(406)(이미지와 모션 보상된 참조 프레임(418) 사이의 차이를 결정함)와 인트라-예측자(408)(현재 프레임 또는 픽처의 이미 처리된 부분에만 기초하여 이미지 블록에 대한 예측을 결정함) 모두에서 인코딩될 비디오 스트림의 인핸스먼트 레이어 이미지를 수신한다(400). 인터-예측자 및 인트라-예측자 모두의 출력은 모드 선택기(410)로 전달된다. 인트라-예측자(408)는 하나 초과의 인트라-예측 모드를 가질 수 있다. 따라서, 각각의 모드가 인트라-예측을 수행할 수 있고, 예측된 신호를 모드 선택기(410)에 제공할 수 있다. 모드 선택기(410)는 또한 인핸스먼트 레이어 픽처(400)의 복사본을 수신한다.
현재의 블록을 인코딩하기 위해 어떤 인코딩 모드가 선택되는지에 따라, 인터-예측자(306, 406)의 출력 또는 선택적인 인트라-예측자 모드 중 하나의 출력 또는 모드 선택기 내의 표면 인코더의 출력이 모드 선택기(310, 410)의 출력에 전달된다. 모드 선택기의 출력이 제1 합산 디바이스(321, 421)에 전달된다. 제1 합산 디바이스는 베이스 레이어 픽처(300)/인핸스먼트 레이어 픽처(400)로부터 픽셀 예측자(302, 402)의 출력을 감산하여 예측 에러 인코더(303, 403)에 입력되는 제1 예측 에러 신호(320, 420)를 생성할 수 있다.
픽셀 예측자(302, 402)는 또한 이미지 블록(312, 412)의 예측 표현과 예측 에러 디코더(304, 404)의 출력(338, 438)의 조합을 예비 재구성기(339, 439)로부터 수신한다. 예비 재구성된 이미지(314, 414)는 인트라-예측자(308, 408)에 그리고 필터(316, 416)에 전달될 수 있다. 예비 표현을 수신하는 필터(316, 416)는 예비 표현을 필터링할 수 있고, 참조 프레임 메모리(318, 418)에 저장될 수 있는 최종 재구성된 이미지(340, 440)를 출력할 수 있다. 참조 프레임 메모리(318)는 장래의 베이스 레이어 픽처(300)가 인터-예측 동작에서 비교되는 참조 이미지로서 사용될 인터-예측자(306)에 연결될 수 있다. 일부 실시형태에 따라 베이스 레이어가 인핸스먼트 레이어의 인터-레이어 샘플 예측 및/또는 인터-레이어 모션 정보 예측을 위한 소스로 선택 및 표시되는 것을 전제로 하여, 참조 프레임 메모리(318)는 또한 장래의 인핸스먼트 레이어 픽처(400)가 인터-예측 동작에서 비교되는 참조 이미지로서 사용될 인터-예측자(406)에 연결될 수 있다. 또한, 참조 프레임 메모리(418)는 장래의 인핸스먼트 레이어 픽처(400)가 인터-예측 동작에서 비교되는 참조 이미지로서 사용될 인터-예측자(406)에 연결될 수 있다.
제1 인코더 섹션(500)의 필터(316)로부터의 필터링 파라미터는, 일부 실시형태에 따라 베이스 레이어가 인핸스먼트 레이어의 필터링 파라미터를 예측하기 위해 소스로 선택 및 표시되는 것을 전제로 하여, 제2 인코더 섹션(502)에 제공될 수 있다.
예측 에러 인코더(303, 403)는 변환 유닛(342, 442) 및 양자화기(344, 444)를 포함한다. 변환 유닛(342, 442)은 제1 예측 에러 신호(320, 420)를 변환 도메인으로 변환한다. 변환은, 예를 들어 DCT 변환이다. 양자화기(344, 444)는 변환 도메인 신호, 예컨대 DCT 계수를 양자화하여 양자화된 계수를 형성한다.
예측 에러 디코더(304, 404)는 예측 에러 인코더(303, 403)로부터 출력을 수신하고, 예측 에러 인코더(303, 403)의 반대 프로세스를 수행하여, 제2 합산 디바이스(339, 439)에서 이미지 블록(312, 412)의 예측 표현과 조합될 때 예비 재구성된 이미지(314, 414)를 생성하는 디코딩된 예측 에러 신호(338, 438)를 생성한다. 예측 에러 디코더는 양자화된 계수 값, 예컨대 DCT 계수를 역양자화하여 변환 신호를 재구성하는 역양자화기(361, 461)와, 재구성된 변환 신호에 대한 역변환을 수행하는 역변환 유닛(363, 463)을 포함하는 것으로 고려될 수 있고, 역변환 유닛(363, 463)의 출력은 재구성된 블록(들)을 포함한다. 예측 에러 디코더는 또한, 추가의 디코딩된 정보 및 필터 파라미터에 따라 재구성된 블록(들)을 필터링할 수 있는 블록 필터를 포함할 수 있다.
엔트로피 인코더(330, 430)는 예측 에러 인코더(303, 403)의 출력을 수신하고, 에러 검출 및 보정 능력을 제공하기 위해 신호에 대하여 적절한 엔트로피 인코딩/가변 길이 인코딩을 수행할 수 있다. 엔트로피 인코더(330, 430)의 출력은, 예컨대 멀티플렉서(508)에 의해 비트스트림에 삽입될 수 있다.
엔트로피 코딩/디코딩은 다양한 방식으로 수행될 수 있다. 예를 들어, 콘텍스트-기반 코딩/디코딩이 적용될 수 있으며, 여기서 인코더 및 디코더 모두가 이전에 코딩된/디코딩된 코딩 파라미터에 기초하여 코딩 파라미터의 콘텍스트 상태를 수정한다. 콘텍스트-기반 코딩은, 예를 들어 콘텍스트 적응 이진 산술 코딩(CAB AC) 또는 콘텍스트-기반 가변 길이 코딩(CAVLC) 또는 임의의 유사한 엔트로피 코딩일 수 있다. 엔트로피 코딩/디코딩은 대안적으로 또는 추가적으로 허프만(Huffman) 코딩/디코딩 또는 지수 골룸(Exp-Golomb) 코딩/디코딩과 같은 가변 길이 코딩 스킴을 사용하여 수행될 수 있다. 엔트로피-코딩된 비트스트림 또는 코드워드로부터 코딩 파라미터를 디코딩하는 것을 파싱이라고 할 수 있다.
H.264/AVC 표준은 국제 전기통신 연합(International Telecommunication Union)(ITU-T)의 전기통신 표준화 부문(Telecommunications Standardization Sector)의 비디오 코딩 전문가 그룹(Video Coding Experts Group)(VCEG)과 국제 표준화 기구(International Organisation for Standardization)(ISO)/국제 전기 표준 회의(International Electrotechnical Commission)(IEC)의 동영상 전문가 그룹(Moving Picture Experts Group)(MPEG)의 협력 비디오 팀(Joint Video Team)(JVT)에 의해 개발되었다. H.264/AVC 표준은 두 상위 표준화 기구에 의해 공개되고, ITU-T 권고 H.264 및 MPEG-4 Part 10 Advanced Video Coding(AVC)으로도 알려진 ISO/IEC International Standard 14496-10이라고 한다. 사양에 대한 새로운 확장 또는 특징을 통합한 다양한 버전의 H.264/AVC 표준이 존재한다. 이들 확장은 스케일러블 비디오 코딩(Scalable Video Coding)(SVC) 및 멀티뷰 비디오 코딩(Multiview Video Coding)(MVC)을 포함한다.
고효율 비디오 코딩(High Efficiency Video Coding)(H.265/HEVC, 일명 HEVC) 표준의 버전 1은 VCEG 및 MPEG의 JCT-VC(Joint Collaborative Team - Video Coding)에 의해 개발되었다. 이 표준은 두 상위 표준화 기구에 의해 공개되었고, ITU-T 권고 H.265 및 MPEG-H Part 2 High Efficiency Video Coding(HEVC)으로도 알려진 ISO/IEC International Standard 23008-2라고 한다. H.265/HEVC의 최신 버전에는, 제각기 SHVC, MV-HEVC, REXT, 3D-HEVC 및 SCC로 약기될 수 있는 스케일러블, 멀티뷰, 충실도 범위, 3차원 및 스크린 콘텐츠 코딩 확장이 포함되었다.
SHVC, MV-HEVC, 및 3D-HEVC는 HEVC 표준의 버전 2의 부록 F에서 특정된 공통 기준 사양을 사용한다. 예를 들어, 이 공통 기준은, 예컨대 인터-레이어 의존성과 같은 비트스트림의 레이어의 일부 특성 뿐만 아니라, 인터-레이어 참조 픽처 및 멀티-레이어 비트스트림에 대한 픽처 순서 카운트 도출을 포함하는 참조 픽처 리스트 구성과 같은 디코딩 프로세스를 특정하는 높은 레벨의 신택스 및 시맨틱스를 포함한다. 부록 F는 HEVC의 잠재적인 후속 멀티-레이어 확장에서 사용될 수도 있다. 비디오 인코더, 비디오 디코더, 인코딩 방법, 디코딩 방법, 비트스트림 구조, 및/또는 실시형태가 SHVC 및/또는 MV-HEVC와 같은 특정한 확장을 참조하여 아래에서 설명될 수 있지만, 이들은 일반적으로 HEVC의 임의의 멀티-레이어 확장에 적용될 수 있으며, 심지어 일반적으로 임의의 멀티-레이어 비디오 코딩 스킴에 적용될 수 있다는 점을 이해해야 한다.
다용도 비디오 코딩(VVC)(MPEG-I Part 3), 일명 ITU H.266은 HEVC/H.265의 후속 표준으로서 MPEG 컨소시엄과 ITU의 협력 비디오 연구팀(Joint Video Exploration Team)(JVET)에 의해 개발되고 있는 비디오 압축 표준이다.
H.264/AVC, HEVC, VVC 및 이들의 일부 확장의 일부 핵심 정의, 비트스트림 및 코딩 구조, 및 개념은 이 섹션에서 실시형태가 구현될 수 있는 비디오 인코더, 디코더, 인코딩 방법, 디코딩 방법, 및 비트스트림 구조의 실시예로서 설명된다. 다양한 실시형태의 양태는 H.264/AVC 또는 HEVC 또는 VVC 또는 이들의 확장에 한정되는 것이 아니고, 오히려 본 발명의 실시형태가 부분적으로 또는 완전하게 실현될 수 있는 하나의 가능한 기준에 대하여 설명된다. VVC 또는 그 드래프트 버전 중 어느 하나가 아래에서 언급될 때마다, 설명이 VVC 드래프트 사양과 일치하고, VVC의 최신 드래프트 버전 및 최종 버전(들)에 변경 사항이 있을 수 있으며, 설명 및 실시형태가 VVC의 최종 버전(들)과 일치하도록 조정될 수 있음을 이해할 필요가 있다.
비디오 코딩 표준은 에러 없는 비트스트림에 대한 디코딩 프로세스 뿐만 아니라 비트스트림 신택스 및 시맨틱스를 특정할 수 있지만, 인코딩 프로세스는 특정되지 않을 수도 있고 인코더는 단지 적합한 비트스트림을 생성하기만 하면 될 수도 있다. 비트스트림 및 디코더 적합성은 가상적 참조 디코더(Hypothetical Reference Decoder)(HRD)로 검증될 수 있다. 표준에는 전송 에러 및 손실에 대처하는 데 도움이 되는 코딩 툴이 포함될 수 있지만, 인코딩에서 툴을 사용하는 것은 선택사항일 수 있으며 잘못된 비트스트림에 대한 디코딩 프로세스는 특정되지 않았을 수 있다.
신택스 요소는 비트스트림에서 표현되는 데이터의 요소로서 정의될 수 있다. 신택스 구조는 비트스트림에서 지정된 순서로 함께 존재하는 0 개 이상의 신택스 요소로서 정의될 수 있다.
각각의 신택스 요소는 그 이름으로, 그리고 코딩된 표현 방법에 대한 하나의 설명자(descriptor)로 설명될 수 있다. 신택스 요소 이름이 모두 밑줄 표시가 있는 소문자로 구성되는 규칙이 사용될 수 있다. 비디오 디코더의 디코딩 프로세스는 신택스 요소의 값 및 이전에 디코딩된 신택스 요소의 값에 따라 동작할 수도 있다.
H.264/AVC, HEVC, VCC 및 예시적인 실시형태를 설명할 때, 다음의 설명자 및/또는 설명을 사용해서 각각의 신택스 요소의 파싱 프로세스를 특정할 수 있다.
- u(n): n 비트를 사용하는 무부호 정수. 신택스 테이블에서 n이 "v"인 경우, 비트 수는 다른 신택스 요소의 값에 따라 달라진다. 이 설명자에 대한 파싱 프로세스는 최상위 비트가 먼저 기록되는 무부호 정수의 이진 표현으로서 해석되는 비트스트림으로부터의 다음 n 비트로 특정된다.
- ue(v): 먼저 좌측 비트를 갖는 무부호 정수 지수-골룸-코딩된(일명, exp-Golomb 코딩된) 신택스 요소.
지수-골룸 비트 문자열은, 예를 들어 다음 테이블을 사용하여 코드 번호(codeNum)로 변환될 수 있다:
Figure pct00001
경우에 따라, 신택스 테이블은 신택스 요소 값으로부터 도출된 다른 변수의 값을 사용할 수 있다. 소문자와 대문자를 조합하고 밑줄 표시가 없는 변수 명명 규칙이 사용될 수 있다. 대문자로 시작하는 변수는 현재 신택스 구조 및 모든 종속 신택스 구조의 디코딩에 대하여 도출될 수 있다. 대문자로 시작하는 변수는 변수의 발원 신택스 구조를 언급하지 않고 나중의 신택스 구조에 대한 디코딩 프로세스에서 사용될 수 있다. 소문자로 시작하는 변수가 도출된 콘텍스트 내에서만 해당 변수를 사용할 수 있다는 규칙이 사용될 수 있다.
경우에 따라, 신택스 요소 값 또는 변수 값에 대한 "니모닉(mnemonic)" 이름이 수치 값과 상호 교환 가능하게 사용된다. 때때로, "니모닉" 이름은 임의의 연관 수치 값 없이 사용된다.
플래그는 2 개의 가능한 값, 즉 0과 1 중 하나를 취할 수 있는 변수 또는 단일-비트 신택스 요소로서 정의될 수 있다.
어레이는 신택스 요소 또는 변수일 수 있다. 어레이의 인덱싱에는 대괄호가 사용될 수 있다. 1차원 어레이를 리스트라고 할 수 있다. 2차원 어레이를 매트릭스라고 할 수 있다.
이름으로 함수를 설명할 수 있다. 함수 이름이 대문자로 시작하고, 밑줄 표시 없이 소문자와 대문자의 조합을 포함하고, (1 개 초과의 변수일 경우) 쉼표로 구분되는 0 개 이상의 변수 이름(정의를 위한 것) 또는 값(사용을 위한 것)을 포함하는 좌측 및 우측 괄호로 끝나는 규칙이 사용될 수 있다.
함수 Ceil( x )는 x 이상의 최소 정수를 반환하도록 정의될 수 있다. 함수 Log2( x )는 x의 밑이 2인 대수를 반환하도록 정의될 수 있다.
신택스 요소의 디코딩을 설명하기 위한 프로세스가 특정될 수 있다. 프로세스에는 별도의 사양 및 호출이 있을 수 있다. 현재 신택스 구조 및 종속 신택스 구조와 관련된 모든 신택스 요소 및 대문자 변수가 프로세스 사양 및 호출에서 사용 가능한 것으로 특정될 수 있으며, 프로세스 사양이 입력으로서 명시적으로 특정되는 소문자 변수도 가질 수 있다는 것이 또한 특정될 수 있다. 각각의 프로세스 사양은 하나 이상의 출력을 명시적으로 특정할 수 있으며, 각각의 출력은 대문자 변수 또는 소문자 변수가 될 수 있는 변수일 수 있다.
신택스, 시맨틱스 및 프로세스는 C 프로그래밍 언어에서 사용되는 것과 유사한 산술, 논리, 관계, 비트 및 할당 연산자로 설명될 수 있다. 특히, 연산자 /는 정수 나눗셈(잘라버림이 있음)을 나타내는 데 사용되며, 연산자 %는 모듈러스(즉, 나눗셈의 나머지)를 나타내는 데 사용된다.
넘버링 및 카운팅 규칙은 0부터 시작할 수 있으며, 예컨대 "제1(the first)"은 0 번째와 균등하고, "제2(the second)"는 1 번째와 균등한 등이다.
인코더로의 입력 및 디코더의 출력 각각에 대한 기본 유닛은 일반적으로 픽처이다. 인코더로의 입력으로서 주어지는 픽처를 소스 픽처라고 할 수도 있으며, 디코더에 의해 디코딩되는 픽처를 디코딩된 픽처 또는 재구성된 픽처라고 할 수 있다.
소스 픽처 및 디코딩된 픽처는 각각 하기의 샘플 어레이 세트 중 하나와 같이, 하나 이상의 샘플 어레이로 구성된다:
- 루마(Y) 단독(단색).
- 루마 및 2 개의 크로마(YCbCr 또는 YCgCo).
- 녹색, 청색 및 적색(GBR, 일명 RGB).
- 다른 미지정된 단색 또는 3자극 컬러 샘플링을 나타내는 어레이(예를 들어, YZX, 일명 XYZ).
아래에서는, 이들 어레이를 루마(또는 L 또는 Y) 및 크로마라고 할 수 있으며, 여기서 2 개의 크로마 어레이를 Cb 및 Cr이라고 할 수 있고; 사용되고 있는 실제 컬러 표현 방법과는 무관하다. 사용되고 있는 실제 컬러 표현 방법은, 예컨대 HEVC의 비디오 사용성 정보(Video Usability Information)(VUI) 신택스 등을 사용하여, 예컨대 코딩된 비트스트림에서 표시될 수 있다. 성분은 3 개의 샘플 어레이(루마 및 2 개의 크로마) 중 하나로부터의 어레이 또는 단일 샘플로서, 또는 단색 포맷으로 픽처를 구성하는 어레이 또는 어레이의 단일 샘플로서 정의될 수 있다.
픽처는 프레임 또는 필드인 것으로 정의될 수 있다. 프레임은 루마 샘플 및 가능하게는 상응하는 크로마 샘플의 매트릭스를 포함한다. 필드는 프레임의 대체 샘플 행의 세트이고, 소스 신호가 인터레이스될 때 인코더 입력으로서 사용될 수 있다. 크로마 샘플 어레이가 없을 수 있거나(그에 따라 단색 샘플링이 사용되고 있을 수 있음) 또는 루마 샘플 어레이와 비교했을 때 크로마 샘플 어레이가 서브샘플링될 수 있다.
일부 크로마 포맷은 다음과 같이 요약될 수 있다:
- 단색 샘플링에 있어서는 명목상 루마 어레이로 간주될 수 있는 하나의 샘플 어레이만이 존재한다.
- 4:2:0 샘플링에 있어서는 2 개의 크로마 어레이 각각이 루마 어레이의 반분의 높이 및 반분의 폭을 갖는다.
- 4:2:2 샘플링에 있어서는 2 개의 크로마 어레이 각각이 루마 어레이의 동일한 높이 및 반분의 폭을 갖는다.
- 별도의 컬러 평면이 사용되고 있지 않은 4:4:4 샘플링에 있어서는 2 개의 크로마 어레이 각각이 루마 어레이와 동일한 높이 및 폭을 갖는다.
코딩 포맷 또는 표준은 샘플 어레이를 별도의 컬러 평면로서 비트스트림에 코딩하고 별도로 코딩된 컬러 평면을 비트스트림으로부터 제각기 디코딩하는 것을 허용할 수 있다. 별도의 컬러 평면이 사용되고 있을 경우, 각각의 컬러 평면은 단색 샘플링으로 픽처로서 (인코더 및/또는 디코더에 의해) 별도로 처리된다.
파티셔닝은 세트의 각각의 요소가 정확히 서브세트 중 하나에 있도록 세트를 서브세트로 분할하는 것으로서 정의될 수 있다. 비디오 코딩에 있어서, 파티셔닝은 픽처의 각 요소 또는 픽처의 소영역이 정확히 서브세트 중 하나에 있도록 픽처 또는 픽처의 소영역을 서브세트로 분할하는 것으로서 정의될 수 있다. 예를 들어, HEVC 인코딩 및/또는 디코딩, 및/또는 VVC 인코딩 및/또는 디코딩에 관한 파티셔닝에서는 다음 용어가 사용될 수 있다. 코딩 블록은 코딩 트리 블록의 코딩 블록으로의 분할이 파티셔닝이 되도록 일부 N 값에 대한 샘플의 N×N 블록으로서 정의될 수 있다. 코딩 트리 블록(CTB)은 성분의 코딩 트리 블록으로의 분할이 파티셔닝이 되도록 일부 N 값에 대한 샘플의 N×N 블록으로서 정의될 수 있다. 코딩 트리 유닛(CTU)는 루마 샘플의 코딩 트리 블록으로서, 또는 3 개의 샘플 어레이를 갖는 픽처의 크로마 샘플의 2 개의 상응하는 코딩 트리 블록으로서, 또는 샘플을 코딩하는 데 사용되는 3 개의 별도의 컬러 평면 및 신택스 구조를 사용해서 코딩된 단색 픽처 또는 픽처의 샘플의 코딩 트리 블록으로서 정의될 수 있다. 코딩 유닛(CU)는 루마 샘플의 코딩 블록으로서, 또는 3 개의 샘플 어레이를 갖는 픽처의 크로마 샘플의 2 개의 상응하는 코딩 블록으로서, 또는 샘플을 코딩하는 데 사용되는 3 개의 별도의 컬러 평면 및 신택스 구조를 사용해서 코딩된 단색 픽처 또는 픽처의 샘플의 코딩 블록으로서 정의될 수 있다. 최대 허용 크기를 갖는 CU는 LCU(최대 코딩 유닛) 또는 코딩 트리 유닛(CTU)로 명명될 수 있고, 비디오 픽처는 비-중첩 LCU로 분할된다.
HEVC에 있어서, CU는 CU 내의 샘플에 대한 예측 프로세스를 정의하는 하나 이상의 예측 유닛(PU) 및 상기 CU 내의 샘플에 대한 예측 에러 코딩 프로세스를 정의하는 하나 이상의 변환 유닛(TU)로 구성된다. 통상적으로, CU는 사전에 정의된 가능한 CU 크기의 세트로부터 선택 가능한 크기를 갖는 샘플의 정사각형 블록으로 구성된다. 각각의 PU 및 TU는 제각기 예측 프로세스 및 예측 에러 코딩 프로세스의 입도를 증가시키기 위해 보다 작은 PU 및 TU로 더 분할될 수 있다. 각각의 PU는 그것과 연계하여 해당 PU 내의 픽셀에 대하여 어떤 종류의 예측이 적용되어야 하는지를 정의하는 예측 정보(예컨대, 인터 예측된 PU에 대한 모션 벡터 정보 및 인트라 예측된 PU에 대한 인트라 예측 방향성 정보)를 갖는다.
각각의 TU는 상기 TU 내의 샘플에 대한 예측 에러 디코딩 프로세스를 설명하는 정보(예컨대, DCT 계수 정보를 포함)와 연계될 수 있다. 통상적으로 각각의 CU에 대하여 예측 에러 코딩이 적용되는지의 여부가 CU 레벨에서 시그널링된다. CU와 연계되는 예측 에러 잔차가 없을 경우, 상기 CU에 대해서는 TU가 없는 것으로 간주될 수 있다. 이미지의 CU로의 분할, 및 CU의 PU 및 TU로의 분할은 통상적으로 디코더가 이들 유닛의 의도된 구조를 재생하는 것을 허용하도록 비트스트림에서 시그널링된다.
H.266/VVC의 드래프트 버전에서는 다음과 같은 파티셔닝이 적용된다. 여기에 설명된 내용은 표준이 확정될 때까지 H.266/VVC의 최신 드래프트 버전에서 계속 진화할 수 있다는 점에 유의한다. 최대 CTU 크기가 128×128로 증가되었지만, 픽처는 HEVC와 유사하게 CTU로 파티셔닝된다. 코딩 트리 유닛(CTU)는 먼저 쿼터너리 트리(일명, 쿼드트리) 구조로 파티셔닝된다. 이후, 쿼터너리 트리 리프 노드는 다중-유형 트리 구조로 더 파티셔닝될 수 있다. 다중-유형 트리 구조에는 수직 이진 분할, 수평 이진 분할, 수직 터너리 분할 및 수평 터너리 분할의 4 가지 분할 유형이 있다. 다중-유형 트리 리프 노드를 코딩 유닛(CU)라고 한다. CU가 최대 변환 길이에 대하여 너무 크지 않는 한, CU, PU 및 TU는 동일한 블록 크기를 갖는다. CTU에 대한 세그먼트화 구조는 이진 및 터너리 분할을 사용하는 중첩된 다중-유형 트리가 있는 쿼드트리이고, 즉, 최대 변환 길이에 대하여 크기가 너무 큰 CU에 필요한 경우를 제외하고는 별도의 CU, PU 및 TU 개념이 사용되지 않는다. CU는 정사각형 또는 직사각형 형상을 가질 수 있다.
VVC,v와 같은 일부 코딩 포맷의 인코더 출력 및 VVC와 같은 일부 코딩 포맷의 디코더 입력에 대한 기본 유닛은 네트워크 추상화 레이어(Network Abstraction Layer)(NAL) 유닛이다. 패킷-지향 네트워크를 통한 전송 또는 구조화된 파일로의 저장을 위해, NAL 유닛이 패킷 또는 유사한 구조로 캡슐화될 수 있다.
프레임 구조를 제공하지 않는 전송 또는 저장 환경을 위한 NAL 유닛 스트림에 대하여 바이트 스트림 포맷이 특정될 수 있다. 바이트 스트림 포맷은 각각의 NAL 유닛 앞에 개시 코드를 붙여서 NAL 유닛을 서로 분리한다. NAL 유닛 경계의 잘못된 검출을 피하기 위해, 인코더는 바이트-지향 개시 코드 에뮬레이션 방지 알고리즘을 실행하고, 해당 알고리즘은 개시 코드가 발생했을 경우 에뮬레이션 방지 바이트를 NAL 유닛 페이로드에 추가한다. 패킷-지향 시스템과 스트림-지향 시스템 사이에서 간단한 게이트웨이 동작을 가능하게 하게 위해, 개시 코드 에뮬레이션 방지는 바이트 스트림 포맷이 사용되고 있는지의 여부에 관계없이 항상 수행될 수 있다.
NAL 유닛은 후속하는 데이터 유형의 표시 및 해당 데이터를 에뮬레이션 방지 바이트가 필요에 따라 산재되는 RBSP 형태로 포함하는 바이트를 포함하는 신택스 구조로서 정의될 수 있다. 원시 바이트 시퀀스 페이로드(RBSP)는 NAL 유닛로 캡슐화된 정수 바이트를 포함하는 신택스 구조로서 정의될 수 있다. RBSP는 비어 있거나, 또는 신택스 요소, 이어서 RBSP 정지 비트, 이어서 0과 동일한 0 개 이상의 후속 비트를 포함하는 데이터 비트 문자열의 형태를 갖는다.
NAL 유닛은 헤더와 페이로드로 구성된다. NAL 유닛 헤더는 무엇보다도 NAL 유닛의 유형을 나타낸다.
NAL 유닛은 비디오 코딩 레이어(Video Coding Layer)(VCL) NAL 유닛 및 비-VCL NAL 유닛로 분류될 수 있다. VCL NAL 유닛은 통상적으로 코딩된 슬라이스 NAL 유닛이다.
비-VCL NAL 유닛은, 예를 들어 이하의 유형: 즉, 시퀀스 파라미터 세트, 픽처 파라미터 세트, 보충 인핸스먼트 정보(supplemental enhancement information: SEI) NAL 유닛, 액세스 유닛 구분문자(delimiter), 시퀀스 종단 NAL 유닛, 비트스트림 종단 NAL 유닛, 또는 필러 데이터 NAL 유닛 중 하나일 수 있다. 파라미터 세트는 디코딩된 픽처의 재구성을 위해 필요할 수 있는 반면, 다수의 다른 비-VCL NAL 유닛은 디코딩된 샘플 값의 재구성에 필요하지 않다.
일부 코딩 포맷은 디코딩 또는 디코딩된 픽처의 재구성에 필요한 파라미터 값을 운반할 수 있는 파라미터 세트를 특정한다. 파라미터는 파라미터 세트의 신택스 요소로서 정의될 수 있다. 파라미터 세트는 파라미터를 포함하는 신택스 구조로서 정의될 수 있으며, 이는 예를 들어 식별자를 사용하여 다른 신택스 구조에서 참조되거나 활성화될 수 있다.
일부 파라미터 세트 유형이 이하에서 간략히 설명되지만, 다른 파라미터 세트 유형이 존재할 수 있고, 제한되는 것은 아니지만, 설명된 파라미터 세트 유형에 실시형태를 적용할 수 있다는 것을 이해할 필요가 있다. 코딩된 비디오 시퀀스를 통해 변경없이 유지되는 파라미터가 시퀀스 파라미터 세트(SPS)에 포함될 수 있다. 디코딩 프로세스에 의해 필요해질 수 있는 파라미터에 더하여, 시퀀스 파라미터 세트는 버퍼링, 픽처 출력 타이밍, 렌더링, 및 리소스 예약을 위해 중요할 수 있는 파라미터를 포함하는 비디오 사용성 정보(VUI)를 선택적으로 포함할 수 있다. 픽처 파리미터 세트(PPS)는 몇몇 코딩된 픽처에서 변경되지 않을 가능성이 있는 이러한 파라미터를 포함한다. 픽처 파라미터 세트는 하나 이상의 코딩된 픽처의 코딩된 이미지 세그먼트에 의해 참조될 수 있는 파라미터를 포함할 수 있다. 헤더 파라미터 세트(HPS)는 픽처 기반으로 변경될 수 있는 이러한 파라미터를 포함하도록 제안되었다.
비트스트림은, 일부 코딩 포맷 또는 표준에서 하나 이상의 코딩된 비디오 시퀀스를 형성하는 코딩된 픽처 및 연계된 데이터의 표현을 형성하는, NAL 유닛 스트림 또는 바이트 스트림 형태일 수 있는 비트들의 시퀀스로서 정의될 수 있다. 동일한 파일에서 또는 통신 프로토콜의 동일한 연결에서와 같이, 동일한 논리 채널에서는 제1 비트스트림이 제2 비트스트림으로 이어질 수 있다. 기본 스트림(비디오 코딩의 맥락에서)은 하나 이상의 비트스트림의 시퀀스로서 정의될 수 있다. 일부 코딩 포맷 또는 표준에 있어서, 제1 비트스트림의 종단은 특정 NAL 유닛로 표시될 수 있으며, 이는 비트스트림의 종단(EOB) NAL 유닛라고 할 수 있고 비트스트림의 최종 NAL 유닛이다.
비트스트림 부분은 비트스트림의 인접 서브세트로서 정의될 수 있다. 일부 콘텍스트들에 있어서는, 비트스트림 부분이 하나 이상의 전체 신택스 구조로 구성되고 불완전한 신택스 구조가 없어야 할 수 있다. 다른 콘텍스트들에 있어서는, 비트스트림 부분이 비트스트림의 임의의 인접 섹션을 포함할 수 있고 불완전한 신택스 구조(들)를 포함할 수 있다.
비트스트림을 따르는(예컨대, 비트스트림을 따라 표시되는) 또는 비트스트림의 코딩된 유닛을 따르는(예컨대, 코딩된 타일을 따라 표시되는) 문구는 청구범위 및 설명된 실시형태에서 "대역외(out-of-band)" 데이터가 제각기 비트스트림 또는 코딩된 유닛와 연계되지만 그 안에 포함되지는 않는 방식으로 전송, 시그널링, 또는 저장을 가리키는 데 사용될 수 있다. 비트스트림을 따르는 또는 비트스트림의 코딩된 유닛 등을 따르는 문구 디코딩은 제각기 비트스트림 또는 코딩된 유닛와 연계된 참조된 대역외 데이터(대역외 전송, 시그널링, 또는 저장으로부터 취득될 수 있음)를 디코딩하는 것을 가리킬 수 있다. 예를 들어, 비트스트림을 따르는 문구는 ISO 베이스 미디어 파일 포맷을 준수하는 파일과 같은 컨테이너 파일에 포함될 때 사용될 수 있으며, 비트스트림을 포함하는 트랙에 대한 샘플 엔트리의 박스, 비트스트림을 포함하는 트랙에 대한 샘플 그룹, 또는 비트스트림을 포함하는 트랙과 연계되는 시간 지정된 메타데이터 트랙과 같이, 메타데이터를 비트스트림에 연계시키는 방식으로 특정 파일 메타데이터가 파일에 저장된다.
코딩된 비디오 시퀀스(CVS)는 독립적으로 디코딩 가능하고 다른 코딩된 비디오 시퀀스로 또는 비트스트림의 종단으로 이어지는 디코딩 순서의 코딩된 픽처들의 시퀀스로서 정의될 수 있다. 코딩된 비디오 시퀀스는 추가적으로 또는 대안적으로 시퀀스 종단(EOS) NAL 유닛로서 지칭될 수 있는 특정 NAL 유닛이 비트스트림에 나타날 때 종료하도록 특정될 수 있다.
이미지는 독립적으로 코딩 및 디코딩 가능한 이미지 세그먼트(예컨대, 슬라이스 및/또는 타일 및/또는 타일 그룹)로 분할될 수 있다. 이러한 이미지 세그먼트는 병렬 처리를 가능하게 할 수 있으며, 이 설명에서 "슬라이스"는 디폴트 코딩 또는 디코딩 순서로 처리된 특정 수의 기본 코딩 유닛로 구성되는 이미지 세그먼트를 의미할 수 있지만, "타일"은 타일 그리드를 따르는 직사각형 이미지 영역으로서 정의된 이미지 세그먼트를 의미할 수 있다. 타일 그룹은 하나 이상의 타일의 그룹으로서 정의될 수 있다. 이미지 세그먼트는 H.264/AVC 및 HEVC 및 VVC의 VCL NAL 유닛와 같이 비트스트림에서 별도의 유닛로서 코딩될 수 있다. 코딩된 이미지 세그먼트는 헤더 및 페이로드를 포함할 수 있으며, 헤더는 페이로드를 디코딩하는 데 필요한 파라미터 값을 포함한다. 슬라이스의 페이로드를 슬라이스 데이터라고 할 수 있다.
HEVC에서, 픽처는 타일들로 파티셔닝될 수 있고, 이들 타일은 직사각형이며 정수 개의 LCU를 포함한다. HEVC에서, 타일들로의 파티셔닝은 규칙적인 그리드를 형성하고, 여기서 타일들의 높이들 및 폭들은 최대 하나의 LCU 만큼 서로 다르다. HEVC에서, 슬라이스는 하나의 독립 슬라이스 세그먼트 및 동일한 액세스 유닛 내의 다음 독립 슬라이스 세그먼트(있을 경우)에 선행하는 모든 후속하는 종속 슬라이스 세그먼트(있을 경우)에 포함되는 정수 개의 코딩 트리 유닛로 정의된다. HEVC에서, 슬라이스 세그먼트는 타일 스캔에서 연속하여 정렬되며 단일의 NAL 유닛에 포함되는 정수 개의 코딩 트리 유닛로 정의된다. 각각의 픽처를 슬라이스 세그먼트들로 분할하는 것이 파티셔닝이다. HEVC에서, 독립 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 신택스 요소의 값이 선행하는 슬라이스 세그먼트에 대한 값으로부터 추론되지 않는 슬라이스 세그먼트로 정의되고, 종속 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 일부 신택스 요소의 값이 디코딩 순서상 선행하는 독립 슬라이스 세그먼트에 대한 값으로부터 추론되는 슬라이스 세그먼트로 정의된다. HEVC에서, 슬라이스 헤더는 현재의 슬라이스 세그먼트인 또는 현재의 종속 슬라이스 세그먼트에 선행하는 독립 슬라이스 세그먼트인 독립 슬라이스 세그먼트의 슬라이스 세그먼트 헤더로 정의되고, 슬라이스 세그먼트 헤더는 슬라이스 세그먼트에 나타내진 제1의 또는 모든 코딩 트리 유닛에 속하는 데이터 요소를 포함하는 코딩된 슬라이스 세그먼트의 일부로 정의된다. CU은 타일 내의, 또는 타일이 사용되고 있지 않을 경우에는 픽처 내의 LCU의 래스터 스캔 순서로 스캔된다. LCU 내에서, CU은 특정한 스캔 순서를 갖는다.
따라서, 비디오 코딩 표준 및 사양은 인코더가 코딩된 픽처를 코딩된 슬라이스 등으로 분할할 수 있게 한다. 인-픽처 예측은 통상 슬라이스 경계들을 가로질러 비활성화된다. 따라서, 슬라이스는 코딩된 픽처를 독립적으로 디코딩 가능한 조각들로 분할하는 방법으로서 간주될 수 있다. H.264/AVC 및 HEVC에서, 인-픽처 예측은 슬라이스 경계들을 가로질러 비활성화될 수 있다. 따라서, 슬라이스는 코딩된 픽처를 독립적으로 디코딩 가능한 조각들로 분할하는 방법으로서 간주될 수 있고, 그에 따라 슬라이스는 종종 전송의 기본 유닛로서 간주된다. 많은 경우에 있어서, 인코더는 어떤 유형의 인-픽처 예측이 슬라이스 경계들을 가로질러 턴오프되는지를 비트스트림에 표시할 수 있고, 디코더 동작은 예를 들어 어떤 예측 소스가 이용 가능한지를 결정할 때 이 정보를 고려한다. 예를 들어, 이웃하는 CU로부터의 샘플은, 이웃하는 CU가 상이한 슬라이스에 상주하면, 인트라 예측에 이용 불가능한 것으로 간주될 수 있다.
VVC의 드래프트 버전, 즉 VVC Draft 5에서는, 픽처를 슬라이스, 타일 및 브릭으로 파티셔닝하는 것을 다음과 같이 정의한다. VVC의 다른 드래프트 버전들도 유사하게 픽처를 슬라이스, 타일 및 브릭으로 파티셔닝하는 것을 정의할 수 있다.
픽처는 하나 이상의 타일 행과 하나 이상의 타일 열로 분할된다. 픽처를 타일들로 분할하면, 타일 열 폭들의 리스트(CTU 유닛) 및 타일 행 높이들의 리스트(CTU 유닛)로 특정될 수 있는 타일 그리드가 형성된다.
타일은 타일 그리드, 즉, 픽처의 직사각형 영역에서 하나의 "셀(cell)"을 커버하는 코딩 트리 유닛(CTU)들의 시퀀스이다. 타일은 하나 이상의 브릭으로 분할되며, 각각의 브릭은 타일 내의 다수의 CTU 행으로 구성된다. 다수의 브릭으로 파티셔닝되지 않는 타일은 브릭이라고도 한다. 그러나, 타일의 진정한 서브세트인 브릭을 타일이라고 하지는 않는다.
슬라이스는 픽처의 다수의 타일 또는 타일의 다수의 브릭을 포함한다. 슬라이스는 VCL NAL 유닛이다.
2 가지의 슬라이스 모드, 즉 래스터-스캔 슬라이스 모드 및 직사각형 슬라이스 모드가 지원된다. 래스터-스캔 슬라이스 모드에서는, 슬라이스가 픽처의 타일 래스터 스캔에 타일들의 시퀀스를 포함한다. 직사각형 슬라이스 모드에서는, 슬라이스가 픽처의 직사각형 영역을 집합적으로 형성하는 픽처의 다수의 브릭을 포함한다. 직사각형 슬라이스 내의 브릭들은 슬라이스의 브릭 래스터 스캔 순서이다.
브릭 스캔은 CTU이 브릭에서의 CTU 래스터 스캔에서 연속적으로 정렬된 픽처를 파티셔닝하는 CTU의 특정한 순차적 정렬로서 정의될 수 있으며, 타일 내의 브릭들은 타일의 브릭들의 래스터 스캔에서 연속적으로 정렬되고, 픽처의 타일들은 픽처의 타일들의 래스터 스캔에서 연속적으로 정렬된다. 예컨대, 코딩 표준에서는, 코딩된 슬라이스 NAL 유닛들이 각각의 코딩된 슬라이스 NAL 유닛의 제1 CTU에 대한 브릭 스캔 순서에서 CTU 어드레스를 증가시키는 순서로 되어야 한다는 것을 요구할 수 있으며, 여기서 CTU 어드레스는 픽처 내의 CTU 래스터 스캔에서 증가하는 것으로 정의될 수 있다. 래스터 스캔은, 1차원 패턴의 제1 엔트리들이 좌측에서 우측으로 스캔되는 2차원 패턴의 제1 상위 행으로부터의 엔트리가 되도록, 이어서 이와 유사하게 각각 좌측에서 우측으로 스캔되는 패턴의 제2 행, 제3 행 등(낮아짐)도 마찬가지로 되도록, 1차원 패턴에 대한 직사각형 2차원 패턴의 맵핑으로서 정의될 수 있다.
도 5a는 픽처가 12 개의 타일과 3 개의 래스터-스캔 슬라이스로 분할된 픽처의 래스터-스캔 슬라이스 파티셔닝의 실시예를 도시한다. 도 5b는 픽처의 직사각형 슬라이스 파티셔닝(18×12 개의 CTU 포함)의 실시예를 도시하며, 여기서 픽처는 24 개의 타일(6 개의 타일 열 및 4 개의 타일 행)과 9 개의 직사각형 슬라이스로 분할된다. 도 5c는 픽처가 타일, 브릭, 및 직사각형 슬라이스로 파티셔닝되는 실시예를 도시하며, 여기서 픽처는 4 개의 타일(2 개의 타일 열 및 2 개의 타일 행), 11 개의 브릭(좌상단의 타일은 1 개의 브릭을 포함하고, 우상단의 타일은 5 개의 브릭을 포함하고, 좌하단의 타일은 2 개의 브릭을 포함하고, 우하단의 타일은 3 개의 브릭을 포함함), 및 4 개의 직사각형 슬라이스로 분할된다.
타일, 브릭, 및 직사각형 슬라이스로의 파티셔닝은 픽처 파라미터 세트(PPS)에서 특정된다. 도 6은 두 단계로 수행된 타일 및 브릭으로의 파티셔닝을 표시하기 위한 신택스를 도시하며, 즉, 타일 그리드(즉, 타일 열 폭 및 타일 행 높이)가 제1 단계로서 제공되고, 이후 표시된 타일들이 브릭들로 더 파티셔닝된다.
타일 그리드를 표시하는 두 가지 모드, 즉, 균일한 모드(값이 1인 신택스 요소 uniform_tile_spacing_flag로 표시됨) 및 명시적 모드가 존재한다. 균일한 타일 간격에서는, 타일들이 최우측 타일 열을 가능한 예외로 하면 동일한 폭을, 그리고 최하단 타일 행을 가능한 예외로 하면 동일한 높이를 갖는다. 명시적 타일 간격에서는, 최우측 열 및 최하단 행(제각기)을 제외하고 타일 열들 및 행들(제각기)의 폭 및 높이가 표시(CTU 유닛)된다.
타일 그리드가 표시되는 방법과 유사하게, 타일이 브릭들로 분할되는 방법을 표시하기 위한 두 가지 모드가 존재하며, 즉, 균일한 브릭 간격 또는 명시적 브릭 간격이 타일마다 표시될 수 있다. 시그널링은 타일 행들에 대한 시그널링과 유사하다.
직사각형 슬라이스들이 사용되고 있는 경우, 신택스 요소 num_slices_in_pic_minus1을 포함하고 그 뒤에 오는 신택스 구조를 사용하여 각각의 슬라이스에 대해 다음이 제공된다:
- 좌상단 브릭 인덱스(인덱스 0을 갖는 것으로 추론된 제1 슬라이스 제외)
- 좌상단 브릭 인덱스에 대한 슬라이스의 우하단 브릭의 차등적 브릭 인덱스.
도 6의 신택스 요소의 시맨틱스는 VVC Draft 5에서 다음과 같이 특정되었다:
single_tile_in_pic_flag가 1이라는 것은 PPS를 참조하는 각각의 픽처에 하나의 타일만이 존재한다는 것을 특정한다. single_tile_in_pic_flag가 0이라는 것은 PPS를 참조하는 각각의 픽처에 하나 초과의 타일이 존재한다는 것을 특정한다. 유의 - 타일 내에서 추가적인 브릭 분할이 없으면, 전체 타일을 브릭이라고 한다. 픽처가 추가적인 브릭 분할 없이 단일의 타일만을 포함하는 경우, 이를 단일 브릭이라고 한다. single_tile_in_pic_flag의 값이 CVS 내에서 활성화된 모든 PPS에 대하여 동일해야 한다는 것이 비트스트림 적합성의 요건이다.
uniform_tile_spacing_flag가 1이라는 것은 타일 열 경계들 및 마찬가지로 타일 행 경계들이 픽처를 가로질러 균일하게 분포되고 신택스 요소 tile_cols_width_minus1 및 tile_rows_height_minus1을 사용하여 시그널링된다는 것을 특정한다. uniform_tile_spacing_flag가 0이라는 것은 타일 열 경계들 및 마찬가지로 타일 행 경계들이 픽처를 가로질러 균일하게 분포될 수 있거나 또는 균일하게 분포되지 않을 수 있고 신택스 요소 num_tile_columns_minus1 및 num_tile_rows_minus1과 신택스 요소 쌍 tile_column_width_minus1[ i ] 및 tile_row_height_minus1[ i ]의 리스트를 사용하여 시그널링될 수 있다는 것을 특정한다. 존재하지 않을 경우, uniform_tile_spacing_flag의 값이 1인 것으로 추론된다.
tile_cols_width_minus1 + 1은 uniform_tile_spacing_flag가 1일 때 CTB 유닛로 픽처의 최우측 타일 열을 제외한 타일 열들의 폭을 특정한다. tile_cols_width_minus1의 값은 0 내지 PicWidthInCtbsY - 1의 범위(경계값 포함)에 있어야 한다. 존재하지 않을 경우, tile_cols_width_minus1의 값이 PicWidthInCtbsY - 1인 것으로 추론된다.
tile_rows_height_minus1 + 1은 uniform_tile_spacing_flag가 1일 때 CTB 유닛로 픽처의 하단 타일 행을 제외한 타일 행들의 높이를 특정한다. tile_rows_height_minus1의 값은 0 내지 PicHeightInCtbsY - 1의 범위(경계값 포함)에 있어야 한다. 존재하지 않을 경우, tile_rows_height_minus1의 값이 PicHeightInCtbsY - 1인 것으로 추론된다.
num_tile_columns_minus1 + 1은 uniform_tile_spacing_flag가 0일 때 픽처를 파티셔닝하는 타일 열들의 수를 특정한다. num_tile_columns_minus1의 값은 0 내지 PicWidthInCtbsY - 1의 범위(경계값 포함)에 있어야 한다. single_tile_in_pic_flag가 1이면, num_tile_columns_minus1의 값이 0인 것으로 추론된다. 그렇지 않으면, uniform_tile_spacing_flag가 1일 때, num_tile_columns_minus1의 값이 CTB 래스터 스캐닝, 타일 스캐닝, 및 브릭 스캐닝 프로세스에서 특정된 대로 추론된다.
num_tile_rows_minus1 + 1은 uniform_tile_spacing_flag가 0일 때 픽처를 파티셔닝하는 타일 행들의 수를 특정한다. num_tile_rows_minus1의 값은 0 내지 PicHeightInCtbsY - 1의 범위(경계값 포함)에 있어야 한다. single_tile_in_pic_flag가 1이면, num_tile_rows_minus1의 값이 0인 것으로 추론된다. 그렇지 않으면, uniform_tile_spacing_flag가 1일 때, num_tile_rows_minus1의 값이 CTB 래스터 스캐닝, 타일 스캐닝, 및 브릭 스캐닝 프로세스에서 특정된 대로 추론된다. 변수 NumTilesInPic은 ( num_tile_columns_minus1 + 1 ) * ( num_tile_rows_minus1 + 1 )과 동일하게 설정된다. single_tile_in_pic_flag가 0일 경우, NumTilesInPic은 1보다 커야 한다.
tile_column_width_minus1[ i ] + 1은 CTB 유닛로 i 번째 타일 열의 폭을 특정한다.
tile_row_height_minus1[ i ] + 1은 CTB 유닛로 i 번째 타일 행의 높이를 특정한다.
brick_splitting_present_flag가 1이라는 것은 PPS를 참조하는 픽처들의 하나 이상의 타일이 2 개 이상의 브릭으로 분할될 수 있다는 것을 특정한다. brick_splitting_present_flag가 0이라는 것은 PPS를 참조하는 픽처들의 타일이 2 개 이상의 브릭으로 분할되지 않는다는 것을 특정한다.
brick_split_flag[ i ]가 1이라는 것은 i 번째 타일이 2 개 이상의 브릭으로 분할된다는 것을 특정하고, brick_split_flag[ i ]가 0이라는 것은 i 번째 타일이 2 개 이상의 브릭으로 분할되지 않는다는 것을 특정한다. 존재하지 않을 경우, brick_split_flag[ i ]의 값이 0인 것으로 추론된다.
uniform_brick_spacing_flag[ i ]가 1이라는 것은 수평 브릭 경계들이 i 번째 타일을 가로질러 균일하게 분포되고 신택스 요소 brick_height_minus1[ i ]를 사용하여 시그널링된다는 것을 특정한다. uniform_brick_spacing_flag[ i ]가 0이라는 것은 수평 브릭 경계들이 i 번째 타일을 가로질러 균일하게 분포될 수 있거나 또는 균일하게 분포되지 않을 수 있고 신택스 요소 num_brick_rows_minus1[ i ] 및 신택스 요소들 brick_row_height_minus1[ i ][ j ]의 리스트를 사용하여 시그널링될 수 있다는 것을 특정한다. 존재하지 않을 경우, uniform_brick_spacing_flag[ i ]의 값이 1인 것으로 추론된다.
brick_height_minus1[ i ] + 1은 uniform_brick_spacing_flag[ i ]가 1일 때 CTB 유닛로 i 번째 타일에서 하단 브릭을 제외한 브릭 행들의 높이를 특정한다. 존재할 경우, brick_height_minus1의 값이 0 내지 RowHeight[ i ] - 2의 범위(경계값 포함)에 있어야 한다. 존재하지 않을 경우, brick_height_minus1[ i ] 값이 RowHeight[ i ] - 1인 것으로 추론된다.
num_brick_rows_minus1[ i ] + 1은 uniform_brick_spacing_flag[ i ]가 0일 때 i 번째 타일을 파티셔닝하는 브릭들의 수를 특정한다. 존재할 경우, num_brick_rows_minus1[ i ]의 값이 1 내지 RowHeight[ i ] - 1의 범위(경계값 포함)에 있어야 한다. brick_split_flag[ i ]가 0이면, num_brick_rows_minus1[ i ]의 값이 0인 것으로 추론된다. 그렇지 않으면, uniform_brick_spacing_flag[ i ]가 1일 때, num_brick_rows_minus1[ i ]의 값이 CTB 래스터 스캐닝, 타일 스캐닝, 및 브릭 스캐닝 프로세스에서 특정된 대로 추론된다.
brick_row_height_minus1[ i ][ j ] + 1은 uniform_tile_spacing_flag가 0일 때 CTB 유닛로 i 번째 타일에서 j 번째 브릭의 높이를 특정한다.
다음과 같은 변수들이 도출되며, uniform_tile_spacing_flag가 1일 때, num_tile_columns_minus1 및 num_tile_rows_minus1의 값이 추론되고, 0 내지 NumTilesInPic - 1의 범위(경계값 포함)의 각각의 i에 대하여, uniform_brick_spacing_flag[ i ]가 1일 때, num_brick_rows_minus1[ i ]의 값이 CTB 래스터 스캐닝, 타일 스캐닝, 및 브릭 스캐닝 프로세스를 호출함으로써 추론된다:
- CTB 유닛로 j 번째 타일 행의 높이를 특정하는, 0 내지 num_tile_rows_minus1의 범위(경계값 포함)의 j에 대한 리스트 RowHeight[ j ],
- 픽처의 CTB 래스터 스캔에서의 CTB 어드레스로부터 브릭 스캔에서의 CTB 어드레스로의 변환을 특정하는, 0 내지 PicSizeInCtbsY - 1의 범위(경계값 포함)의 ctbAddrRs에 대한 리스트 CtbAddrRsToBs[ ctbAddrRs ],
- 브릭 스캔에서의 CTB 어드레스로부터 픽처의 CTB 래스터 스캔에서의 CTB 어드레스로의 변환을 특정하는, 0 내지 PicSizeInCtbsY - 1의 범위(경계값 포함)의 ctbAddrBs에 대한 리스트 CtbAddrBsToRs[ ctbAddrBs ],
- 브릭 스캔에서의 CTB 어드레스로부터 브릭 ID로의 변환을 특정하는, 0 내지 PicSizeInCtbsY - 1의 범위(경계값 포함)의 ctbAddrBs에 대한 리스트 BrickId[ ctbAddrBs ],
- 브릭 인덱스로부터 브릭에서의 CTU의 수로의 변환을 특정하는, 0 내지 NumBricksInPic - 1의 범위(경계값 포함)의 brickIdx에 대한 리스트 NumCtusInBrick[ brickIdx ],
- 브릭 ID로부터 브릭의 제1 CTB의 브릭 스캔에서의 CTB 어드레스로의 변환을 특정하는, 0 내지 NumBricksInPic - 1의 범위(경계값 포함)의 brickIdx에 대한 리스트 FirstCtbAddrBs[ brickIdx ].
single_brick_per_slice_flag가 1이라는 것은 이 PPS를 참조하는 각각의 슬라이스가 하나의 브릭을 포함한다는 것을 특정한다. single_brick_per_slice_flag가 0이라는 것은 이 PPS를 참조하는 슬라이스가 하나 초과의 브릭을 포함할 수 있다는 것을 특정한다. 존재하지 않을 경우, single_brick_per_slice_flag의 값이 1인 것으로 추론된다.
rect_slice_flag가 0이라는 것은 각각의 슬라이스 내의 브릭들이 래스터 스캔 순서이고 슬라이스 정보가 PPS에서 시그널링되지 않는다는 것을 특정한다. rect_slice_flag가 1이라는 것은 각각의 슬라이스 내의 브릭들이 픽처의 직사각형 영역을 커버하고 슬라이스 정보가 PPS에서 시그널링된다는 것을 특정한다. single_brick_per_slice_flag가 1일 경우, rect_slice_flag는 1인 것으로 추론된다.
num_slices_in_pic_minus1 + 1은 PPS를 참조하는 각각의 픽처에서 슬라이스의 수를 특정한다. num_slices_in_pic_minus1의 값은 0 내지 NumBricksInPic - 1의 범위(경계값 포함)에 있어야 한다. 존재하지 않을 경우, 그리고 single_brick_per_slice_flag가 1일 경우, num_slices_in_pic_minus1의 값이 NumBricksInPic - 1인 것으로 추론된다.
top_left_brick_idx[ i ]는 i 번째 슬라이스의 좌상단 모서리에 위치한 브릭의 브릭 인덱스를 특정한다. j와 동일하지 않은 임의의 i에 대하여 top_left_brick_idx[ i ]의 값은 top_left_brick_idx[ j ]의 값과 동일하지 않을 것이다. 존재하지 않을 경우, top_left_brick_idx[ i ]의 값이 i인 것으로 추론된다. top_left_brick_idx[ i ] 신택스 요소의 길이는 Ceil( Log2( NumBricksInPic ) ) 비트이다.
bottom_right_brick_idx_delta[ i ]는 i 번째 슬라이스의 우하단 모서리에 위치한 브릭의 브릭 인덱스와 top_left_brick_idx[ i ] 사이의 차이를 특정한다. single_brick_per_slice_flag가 1일 경우, bottom_right_brick_idx_delta[ i ]의 값이 0인 것으로 추론된다. bottom_right_brick_idx_delta[ i ] 신택스 요소의 길이는 Ceil( Log2( NumBricksInPic - top_left_brick_idx[ i ] ) ) 비트이다.
슬라이스가 다수의 완전한 타일을 또는 하나의 타일의 완전한 브릭들의 연속적인 시퀀스만을 포함해야 한다는 것이 비트스트림 적합성의 요건이다. i 번째 슬라이스에서의 브릭들의 수와 브릭들의 슬라이스들에 대한 맵핑을 특정하는 변수 NumBricksInSlice[ i ] 및 BricksToSliceMap[ j ]는 다음과 같이 도출된다:
Figure pct00002
따라서, 타일 및 브릭 파티셔닝을 시그널링하기 위한 다소 복잡한 신택스 구조가 의도된다. 많은 양태들에 있어서, 예를 들어 신택스 요소의 수, 신택스에서의 라인, 동작 모드의 수(즉, 타일들과 브릭들 모두에 대한 별도의 균일한 모드 및 명시적 모드, 및 별도로 표시된 타일 경계들 및 브릭 경계들) 및 시그널링에서의 비트 카운트에 관해서는 차선책이다.
VVC Draft 6은 서브픽처(일명, 서브-픽처)를 지원한다. 서브픽처는 픽처 내의 하나 이상의 슬라이스의 직사각형 영역으로서 정의될 수 있으며, 하나 이상의 슬라이스는 완전하다. 결과적으로, 서브픽처는 픽처의 직사각형 영역을 집합적으로 커버하는 하나 이상의 슬라이스로 구성된다. 서브픽처의 슬라이스는 직사각형 슬라이스들로 되는 것이 필요할 수 있다. 픽처를 서브픽처들로 파티셔닝하는 것은 SPS에서 표시될 수 있거나 및/또는 SPS로부터 디코딩될 수 있다. 다음 속성 중 하나 이상은 서브픽처들에 대하여 집합적으로 또는 각각의 서브픽처마다 개별적으로 (예컨대, 인코더에 의해) 표시되거나, 또는 (예컨대, 디코더에 의해) 디코딩되거나, 또는 (예컨대, 인코더 및/또는 디코더에 의해) 추론될 수 있다: i) 디코딩 프로세스에서 서브픽처가 픽처로서 취급되는지의 여부; 경우에 따라 이 속성은 별도로 표시/디코딩/추론될 수 있는 인-루프 필터링 동작을 제외함, ii) 인-루프 필터링 동작이 서브픽처 경계들을 가로질러 수행되는지의 여부.
이제 타일 및 브릭 파티셔닝을 시그널링하기 위한 개선된 방법을 소개한다.
도 7에 도시된 제1 양태에 따른 인코딩 방법은, 한 번에 타일 열들의 표시 및 하나 이상의 타일 열에 대한 브릭 높이들의 표시를 포함하는 비트스트림을 인코딩하거나, 또는 한 번에 타일 열들의 표시 및 하나 이상의 타일 열에 대한 브릭 높이들의 표시를 비트스트림에서 또는 비트스트림을 따라 인코딩하는 단계(700); 픽처를 통해 정렬되는 브릭 행들의 검출시에, 잠재적인 타일 행들을 추론하는 단계(702); 잠재적인 타일 행의 경계가 타일 행의 경계임을 추론하거나 또는 잠재적인 타일 행의 경계가 타일 행의 경계인지의 여부를 표시하는 단계(704); 및 표시된 타일 열, 표시된 또는 추론된 타일 행, 및 표시된 브릭 높이를 사용하여 하나 이상의 픽처를 비트스트림에 인코딩하는 단계(706)를 포함하고, 하나 이상의 픽처는 표시된 타일 열들 및 표시된 또는 추론된 타일 행들을 따라 타일들의 그리드로 파티셔닝되고, 타일들의 그리드에서의 타일은 정수 개의 코딩 트리 유닛을 포함하고 하나 이상의 브릭으로 파티셔닝되고, 브릭은 타일 내의 정수 개의 코딩 트리 유닛의 행들을 포함한다.
제1 양태에 따른 디코딩 방법은, 비트스트림으로부터 또는 비트스트림을 따라, 한 번에 타일 열들의 표시 및 하나 이상의 타일 열들에 대한 브릭 높이들의 표시를 디코딩하는 단계; 픽처를 통해 정렬되는 브릭 행들의 검출시에, 잠재적인 타일 행들을 추론하는 단계; 잠재적인 타일 행의 경계가 타일 행의 경계임을 추론하거나 또는 잠재적인 타일 행의 경계가 타일 행의 경계인지의 여부를 디코딩하는 단계; 및 표시된 타일 열, 표시된 또는 추론된 타일 행, 및 표시된 브릭 높이를 사용하여 비트스트림으로부터 하나 이상의 픽처를 디코딩하는 단계를 포함하고, 하나 이상의 픽처는 표시된 타일 열들 및 표시된 또는 추론된 타일 행들을 따라 타일들의 그리드로 파티셔닝되고, 타일들의 그리드에서의 타일은 정수 개의 코딩 트리 유닛을 포함하고 하나 이상의 브릭으로 파티셔닝되고, 브릭은 타일 내의 정수 개의 코딩 트리 유닛의 행들을 포함한다.
따라서, 타일 열들 및 타일 열마다의 브릭 높이들은 타일 행 높이를 제외하고 인코더에 의해 표시되거나 및/또는 디코더에 의해 디코딩된다. 잠재적인 타일 행 경계들은 브릭 경계들이 픽처를 통해 (수평으로) 정렬된 것들인 것으로 추론된다. 따라서, 어떤 잠재적인 타일 행 경계에 대하여, 상기 잠재적인 타일 행 경계가 타일 행 경계인 것으로 추론될 수 있다. 잠재적인 타일 행 경계가 타일 행 경계임을 추론하는 것은 신택스 구조에서 이용 가능한 다른 정보, 또는 신택스 구조로부터의 특정 정보의 부재, 예를 들어 특정 플래그의 부재로 이루어진 결론에 기초할 수 있다.
대안으로서, 잠재적인 타일 행 경계가 타일 행 경계인지의 여부는 인코더에 의해 표시되거나 및/또는 디코더에 의해 디코딩될 수 있다. 표시는, 예컨대 신택스 구조에 존재하는 하나 이상의 플래그에 기초할 수 있다.
따라서, 타일 열들 및 타일 열마다의 브릭 높이들만을 표시하고 잠재적인 타일 행들을 추론함으로써, 타일 행 높이를 시그널링하지 않고 파티셔닝이 시그널링될 수 있다. 그 결과, 코딩 효율이 향상되고 상기 시그널링에 필요한 비트레이트가 감소된다.
아래에서는, 제1 양태에 대한, 즉 타일 열들 및 타일 열마다의 브릭 높이를 표시하고 타일 행 높이를 제외하는 신택스 및 시맨틱스에 대한 여러 예시적인 실시형태가 제공된다. 실시형태는 신택스 및 시맨틱스를 따르는 비트스트림 부분을 생성하는 인코딩 및 신택스 및 시맨틱스에 따라 비트스트림 부분을 디코딩하는 디코딩에 동일하게 적용 가능하다.
신택스 및 시맨틱스의 실시예 1:
Figure pct00003
uniform_tile_col_spacing_flag가 1이라는 것은 타일 열 경계들이 픽처를 가로질러 균일하게 분포되고 신택스 요소 tile_cols_width_minus1을 사용하여 시그널링된다는 것을 특정한다. uniform_tile_spacing_flag가 0이라는 것은 타일 열 경계들이 픽처를 가로질러 균일하게 분포될 수 있거나 또는 균일하게 분포되지 않을 수 있고 신택스 요소 num_tile_columns_minus1 및 신택스 요소들 tile_column_width_minus1[ i ]의 리스트를 사용하여 시그널링된다는 것을 특정한다. 존재하지 않을 경우, uniform_tile_col_spacing_flag의 값이 1인 것으로 추론된다.
tile_cols_width_minus1, num_tile_columns_minus1, 및 tile_column_width_minus1[ i ]의 시맨틱스는 VVC Draft 5에서 동일한 이름을 가진 신택스 요소의 시맨틱스와 동일하게 특정된다.
uniform_tile_col_spacing_flag가 1이면, NumTileColsInPic은 PicWidthInCtbsY / (tile_cols_width_minus1 + 1) + PicWidthInCtbsY % (tile_cols_width_minus1 + 1)과 동일하게 설정된다. 그렇지 않으면, NumTileColsInPic이 num_tile_columns_minus1 + 1과 동일하게 설정된다.
uniform_brick_spacing_flag[ i ]가 1이라는 것은 수평 브릭 경계들이 i 번째 타일 열을 가로질러 균일하게 분포되고 신택스 요소 brick_height_minus1[ i ]를 사용하여 시그널링된다는 것을 특정한다. uniform_brick_spacing_flag[ i ]가 0이라는 것은 수평 브릭 경계들이 i 번째 타일 열을 가로질러 균일하게 분포될 수 있거나 또는 균일하게 분포되지 않을 수 있고 신택스 요소 num_brick_rows_minus1[ i ] 및 신택스 요소들 brick_row_height_minus1[ i ][ j ]의 리스트를 사용하여 시그널링될 수 있다는 것을 특정한다. 존재하지 않을 경우, uniform_brick_spacing_flag[ i ]의 값이 1인 것으로 추론된다.
brick_height_minus1[ i ] + 1은 uniform_brick_spacing_flag[ i ]가 1일 때 CTB 유닛로 i 번째 타일 열에서 하단 브릭을 제외한 브릭 행들의 높이를 특정한다.
num_brick_rows_minus1[ i ] + 1은 uniform_brick_spacing_flag[ i ]가 0일 때 i 번째 타일 열을 파티셔닝하는 브릭의 수를 특정한다.
brick_row_height_minus1[ i ][ j ] + 1은 uniform_tile_spacing_flag가 0일 때 CTB 유닛로 i 번째 타일 열에서 j 번째 브릭의 높이를 특정한다.
신택스 및 시맨틱스의 실시예 2
실시예 2는 실시예 1과 유사하지만, 추가적으로 현재의 타일 열을 브릭들로 파티셔닝하는 것이 이전의 타일 열의 파티셔닝과 동일한지의 여부가 인코더에 의해 표시되거나 및/또는 디코더에 의해 디코딩된다.
Figure pct00004
신택스 요소의 시맨틱스는 copy_previous_col_flag[ i ]에 대한 시맨틱스가 다음과 같이 추가된 실시예 1에 대한 시맨틱스와 동일하다:
copy_previous_col_flag[ i ]가 1인 것은 다음을 모두 특정한다:
- uniform_brick_spacing_flag[ i ]가 uniform_brick_spacing_flag[ i - 1 ]인 것으로 추론된다.
- brick_height_minus1[ i - 1 ]이 존재할 경우, brick_height_minus1[ i ]가 brick_height_minus1[ i - 1 ]인 것으로 추론된다.
- num_brick_rows_minus1[ i - 1 ]이 존재할 경우, num_brick_rows_minus1[ i ]가 num_brick_rows_minus1[ i - 1 ]인 것으로 추론되고 brick_row_height_minus1[ i ][ j ]가 0 내지 num_brick_rows_minus1[ i ] - 1의 범위(경계값 포함)의 각각의 j 값에 대하여 brick_row_height_minus1[ i - 1 ][ j ]인 것으로 추론된다.
한편, VVC Draft 5의 차선책의 신택스 구조의 문제점은, 타일 열 폭, 타일 열 높이, 또는 브릭 높이들이, 잔여 타일 열, 타일 행, 또는 브릭들(제각기)이 동일한 크기를 갖는 것으로 표시 또는 디코딩(제각기)될 때까지, 미리 정의된 특정한 스캔 순서로 인코더에 의해 표시될 수 있거나 및/또는 디코더에 의해 디코딩될 수 있는 접근법에 의해 완화될 수 있다.
이 제2 양태에 따른 인코딩 방법이 도 8에 도시되며, 이 방법은, a) 할당될 파티션의 수를 표시하는 단계(800); b) 파티션에 할당될 유닛의 수를 결정하는 단계(802); c) 할당될 유닛의 수가 상기 파티션의 수에 균등하게 할당되는지를 표시하는 단계(804); 및 균등하게 할당되지 않을 경우, d) 다음 파티션에 할당될 유닛의 수를 표시하는 단계(806), 및 e) 모든 유닛이 파티션에 할당될 때까지 단계 c) 및 단계 d)를 반복하는 단계(808)를 포함한다.
제2 양태에 따른 디코딩 방법은, a) 할당될 파티션의 수를 디코딩하는 단계; b) 파티션에 할당될 유닛의 수를 결정하는 단계; c) 할당될 유닛의 수가 상기 파티션의 수에 균등하게 할당되는지를 디코딩하는 단계; 및 균등하게 할당되지 않을 경우, d) 다음 파티션에 할당될 유닛의 수를 디코딩하는 단계, 및 e) 모든 유닛이 파티션에 할당될 때까지 단계 c) 및 단계 d)를 반복하는 단계를 포함한다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 파티션에 할당될 유닛의 수는 다음 중 하나이다: CTU에서의 픽처 폭(예컨대, 파티션들이 타일 열들인 경우), CTU에서의 픽처 높이(예컨대, 파티션들이 타일 행들인 경우, 또는 파티션들이 한 번에 하나 이상의 완전한 타일 열들에 대하여 표시되는 브릭 행들인 경우), 타일에서의 CTU 행들의 수(예컨대, 파티션들이 타일의 브릭들인 경우).
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 파티션은 타일 열, 타일 행, 브릭 행 중 하나 이상이다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 유닛은 픽처 샘플의 직사각형 블록들이다. 예를 들어, 도 8에 도시된 제2 양태에서의 유닛은 코딩 트리 블록일 수 있다.
따라서, 미리 정의된 스캔 순서로 파티션에 할당될 유닛의 수를 표시함으로써, 특히, 아직 할당되지 않은 유닛의 수가 잔여 파티션에 균등하게 할당되어야 할 경우, 필요한 신택스 요소의 수에 있어서, 그리고 상기 시그널링에 필요한 비트레이트에 있어서 상당한 절감이 달성될 수 있다.
도 9는 도 8의 방법이 실시형태에 따라 어떻게 구현될 수 있는지에 대한 실시예를 도시한다. 따라서, 먼저, 할당될 타일 열들 및/또는 타일 행들과 같은 파티션의 수가 표시되고(900), 파티션에 할당될 코딩 트리 블록(CTB)의 유닛들과 같은 유닛의 수(NU)가 결정된다(902). 모든 유닛들이 하나의 파티션에 할당되었는지 확인하기 위한 루프를 생성하기 위해, 할당될 파티션의 수(NP)가 1보다 큰지를 확인한다(904). 1보다 크지 않으면, 즉 NP=1이면, 아직 할당되지 않은 모든 잔여 유닛들이 잔여 파티션에 할당되어야 한다고 추론 또는 표시된다(910).
그러나, NP>1이면, 할당될 유닛의 수(NU)가 파티션의 수(NP)로 균등하게 나누어질 수 있는지를 확인한다(906). 균등하게 나누어질 수 있다면, 유닛의 수(NU)가 잔여 파티션에 균등하게 할당되어야 하는지를 결정한다(908). 균등하게 할당되어야 한다면, 아직 할당되지 않은 모든 잔여 유닛들(NU)이 잔여 파티션(들)에 균등하게 할당되어야 한다고 추론 또는 표시된다(910). 할당될 유닛의 수(NU)가 파티션의 수(NP)로 균등하게 나누어지지 않는다고 통지되거나(906) 또는 유닛의 수(NU)가 잔여 파티션에 균등하게 할당되지 않을 것이라고 결정되면(908), 미리 정의된 스캐닝 순서로 다음 파티션에 할당될 유닛의 수가 표시된다(912). 할당될 유닛의 수(NU)는 상기 다음 파티션에 할당될 표시된 유닛의 수만큼 감소되고(914), 할당될 파티션의 수(NP)는 1씩 차감된다(916). 이후, 할당될 파티션의 수(NP)가 1보다 큰지를 확인(904)하기 위해 루프백된다.
도 9의 방법은 아래에서 설명되는 실시형태에 따른 디코딩에 대하여 유사하게 구현될 수 있다. 먼저, 할당될 타일 열들 및/또는 타일 행들과 같은 파티션의 수가 비트스트림으로부터 또는 비트스트림을 따라 디코딩되고, 파티션에 할당될 코딩 트리 블록(CTB)의 유닛들과 같은 유닛의 수(NU)가 결정된다. 하나의 파티션에 모든 유닛들이 할당되었는지를 확인하기 위한 루프를 생성하기 위해, 할당될 파티션의 수(NP)가 1보다 큰지를 확인한다. 1보다 크지 않으면, 즉 NP=1이면, 아직 할당되지 않은 모든 잔여 유닛들이 잔여 파티션에 할당되어야 한다는 것이 비트스트림으로부터 또는 비트스트림을 따라 추론 또는 디코딩된다.
그러나, NP>1이면, 할당될 유닛의 수(NU)가 파티션의 수(NP)로 균등하게 나누어질 수 있는지를 확인한다. 균등하게 나누어질 수 있다면, 유닛의 수(NU)가 잔여 파티션에 균등하게 할당되어야 하는지가 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다. 할당될 유닛의 수(NU)가 파티션의 수(NP)로 균등하게 나누어지지 않는다고 통지되거나 또는 유닛의 수(NU)가 잔여 파티션에 균등하게 할당되지 않을 것이라고 비트스트림으로부터 또는 비트스트림을 따라 디코딩되면, 미리 정의된 스캐닝 순서로 다음 파티션에 할당될 유닛의 수가 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다. 할당될 유닛의 수(NU)는 상기 다음 파티션에 할당될 표시된 유닛의 수만큼 감소되고, 할당될 파티션의 수(NP)는 1씩 차감된다. 이후, 할당될 파티션의 수(NP)가 1보다 큰지를 확인하기 위해 루프백된다.
아래에서는, 제2 양태에 대한, 즉, 명시적/균일한 타일/브릭 파티셔닝의 통합 시그널링을 위한 신택스 및 시맨틱스에 대한 예시적인 실시형태가 제공된다. 실시형태는 신택스 및 시맨틱스를 따르는 비트스트림 부분을 생성하는 인코딩 및 신택스 및 시맨틱스에 따라 비트스트림 부분을 디코딩하는 디코딩에 동일하게 적용 가능하다.
이 실시예에서, 통합 시그널링은 타일 열 폭 및 타일 행 높이를 특정하는 데 사용되는 반면, 브릭의 시그널링은 VVC Draft 5와 비교했을 때 변경되지 않는다.
Figure pct00005
rem_tile_col_equal_flag[ i ]가 0이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 열들이 CTB 유닛로 동일한 폭을 가질 수 있거나 또는 갖지 않을 수 있다는 것을 특정한다. rem_tile_col_equal_flag[ i ]가 1이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 열들이 CTB 유닛로 동일한 폭을 갖고 tile_column_width_minus1[ j ]가 0 내지 i의 범위(경계값 포함)의 각각의 j 값에 대하여 remWidthInCtbsY / ( i + 1)과 동일한 것으로 추론된다는 것을 특정한다.
rem_tile_row_equal_flag[ i ]가 0이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 행들이 CTB 유닛로 동일한 높이를 가질 수 있거나 또는 갖지 않을 수 있다는 것을 특정한다. rem_tile_row_equal_flag[ i ]가 1이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 행들이 CTB 유닛로 동일한 높이를 갖고 tile_row_height_minus1[ j ]가 0 내지 i의 범위(경계값 포함)의 각각의 j 값에 대하여 remHeightInCtbsY / ( i + 1)과 동일한 것으로 추론된다는 것을 특정한다.
다른 신택스 요소의 시맨틱스들은 VVC Draft 5에서 동일한 이름의 신택스 요소의 시맨틱스와 동일하게 특정될 수 있다.
아래에서는, 추가적인 양태에 대한, 즉 타일 열들 및 타일 열마다의 브릭 높이를 표시하는 것 및 명시적/균일한 타일/브릭 파티셔닝의 통합 시그널링을 모두 포함하는 신택스 및 시맨틱스에 대한 예시적인 실시형태가 제공된다. 실시형태는 신택스 및 시맨틱스를 따르는 비트스트림 부분을 생성하는 인코딩 및 신택스 및 시맨틱스에 따라 비트스트림 부분을 디코딩하는 디코딩에 동일하게 적용 가능하다.
인코딩에 대한 예시적인 실시형태는 다음과 같이 요약될 수 있지만, 예시적인 실시형태는 표시라는 용어를 디코딩이라는 용어로 대체함으로써 디코딩에 적응될 수 있다.
타일열들은 다음과 같이 표시된다:
- 타일 열들의 수가 표시된다(num_tile_columns_minus1).
- 하기의 내용은 모든 타일 열들이 횡단될 때까지 또는 잔여 타일 열들이 동일한 폭을 갖는 것으로 표시될 때까지 타일 열들을 우측에서 좌측으로 횡단하는 루프에서 표시된다.
o 잔여 폭(CTB 유닛)이 아직 특정되지 않은 타일 열들의 수로 균등하게 나누어질 수 있으면, 잔여 타일 열들이 동일한 폭을 갖는지가 표시된다(rem_tile_col_equal_flag[ i ]).
o 잔여 타일 열들이 동일한 폭을 갖지 않으면, 타일 열 폭이 표시된다(tile_column_width_minus1[ i ]).
하기의 내용은 직사각형 슬라이스들에 대하여 타일 열들을 좌측에서 우측으로 횡단하고 래스터-스캔 슬라이스들에 대한 타일 행 높이를 특정하는 하나의 루프 엔트리만을 포함하는 루프에서 표시된다:
- 타일 열의 브릭 파티셔닝이 이전의 타일 열의 브릭 파티셔닝과 동일한지의 플래그. 플래그는 가장 좌측의 타일 열에 대해서는 존재하지 않는다(copy_previous_col_flag[ i ]). 이 플래그는 이 예시적인 실시형태에서 생략될 수 있거나 또는 플래그에 의해 달성되는 것과 유사한 기능을 달성하기 위해 사용될 수 있는 아래에서 더 논의되는 다른 대안들이 있다는 점에 유의한다.
- 타일 열의 타일 브릭 파티셔닝이 이전의 타일 열의 타일 브릭 파티셔닝과 동일하지 않을 경우, 타일 열의 브릭들은 다음과 같이 표시된다:
o 타일 열에서의 브릭들의 수가 표시된다(num_bricks_minus1[ i ]).
o 하기의 내용은 타일 열의 모든 브릭이 횡단될 때까지 또는 타일 열의 잔여 브릭들이 동일한 높이를 갖는 것으로 표시될 때까지 브릭들을 하단에서 상단으로 횡단하는 루프에서 표시된다:
■ 잔여 높이(CTB 유닛)가 아직 특정되지 않은 브릭들의 수로 나누어질 수 있으면, 잔여 브릭들이 동일한 높이를 갖는지가 표시된다(rem_brick_height_equal_flag[ i ][ j ]).
■ 잔여 브릭들이 동일한 높이를 갖지 않으면, 브릭 높이가 표시된다(brick_height_minus1[ i ][ j ]).
이 예시적인 실시형태에서는 하기의 신택스가 사용될 수 있다:
Figure pct00006
num_tile_columns_minus1 + 1은 uniform_tile_spacing_flag가 0일 때 픽처를 파티셔닝하는 타일 열들의 수를 특정한다. num_tile_columns_minus1의 값은 0 내지 PicWidthInCtbsY - 1의 범위(경계값 포함)에 있어야 한다. single_tile_in_pic_flag가 1일 경우, num_tile_columns_minus1의 값이 0인 것으로 추론된다.
rem_tile_col_equal_flag[ i ]가 0이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 열들이 CTB 유닛로 동일한 폭을 가질 수 있거나 또는 갖지 않을 수 있다는 것을 특정한다. rem_tile_col_equal_flag[ i ]가 1이라는 것은 0 내지 i의 범위(경계값 포함)의 인덱스를 갖는 타일 열들이 CTB 유닛로 동일한 폭을 갖는 것으로 추론된다는 것을 특정한다. 존재하지 않을 경우, rem_tile_col_equal_flag[ i ]의 값이 0인 것으로 추론된다.
tile_column_width_minus1[ i ] + 1은 CTB 유닛로 i 번째 타일 열의 폭을 특정한다.
copy_previous_col_flag[ i ]이 0이라는 것은 num_bricks_minus1[ i ]이 존재한다는 것을 특정한다. copy_previous_col_flag[ i ]가 1인 것은 다음을 모두 특정한다:
- num_bricks_minus1[ i ]이 num_bricks_minus1[ i - 1 ]인 것으로 추론된다.
- rem_brick_height_equal_flag[ i ][ j ]가 1 내지 num_bricks_minus1[ i ]의 범위(경계값 포함)의 상기와 같은 모든 j 값에 대하여 rem_brick_height_equal_flag[ i - 1 ][ j ]인 것으로 추론되고, 이 경우 rem_brick_height_equal_flag[ i - 1 ][ j ]의 값이 존재하거나 또는 추론된다.
- brick_height_minus1[ i ][ j ]가 1 내지 num_bricks_minus1[ i ]의 범위(경계값 포함)의 상기와 같은 모든 j 값에 대하여 brick_height_minus1[ i - 1 ][ j ]인 것으로 추론되고, 이 경우 brick_height_minus1[ i - 1 ][ j ]의 값이 존재한다.
copy_previous_col_flag[ i ]가 0이라는 것은 num_bricks_minus1[ i ]이 존재한다는 것을 특정한다. copy_previous_col_flag[ i ]가 1인 것은 다음을 모두 특정한다:
- num_bricks_minus1[ i ]이 num_bricks_minus1[ i - 1 ]인 것으로 추론된다.
- rem_brick_height_equal_flag[ i ][ j ]가 1 내지 num_bricks_minus1[ i ]의 범위(경계값 포함)의 상기와 같은 모든 j 값에 대하여 rem_brick_height_equal_flag[ i - 1 ][ j ]인 것으로 추론되고, 이 경우 rem_brick_height_equal_flag[ i - 1 ][ j ]의 값이 존재하거나 또는 추론된다.
- brick_height_minus1[ i ][ j ]가 1 내지 num_bricks_minus1[ i ]의 범위(경계값 포함)의 상기와 같은 모든 j 값에 대하여 brick_height_minus1[ i - 1 ][ j ]인 것으로 추론되고, 이 경우 brick_height_minus1[ i - 1 ][ j ]의 값이 존재한다.
rem_brick_height_equal_flag[ i ][ j ]가 0이라는 것은 i 번째 타일 열 내에서 0 내지 j의 범위(경계값 포함)의 인덱스를 갖는 브릭들이 CTB 유닛로 동일한 높이를 가질 수 있거나 또는 갖지 않을 수 있다는 것을 특정한다. rem_brick_height_equal_flag[ i ][ j ]가 1이라는 것은 i 번째 타일 열 내에서 0 내지 j의 범위(경계값 포함)의 인덱스를 갖는 브릭들이 CTB 유닛로 동일한 높이를 갖는 것으로 추론된다는 것을 특정한다. 존재하지 않을 경우, rem_brick_height_equal_flag[ i ][ j ]의 값이 0인 것으로 추론된다.
brick_height_minus1[ i ][ j ] + 1은 CTB 유닛로 i 번째 타일 열 내에서 j 번째 브릭의 높이를 특정한다.
다른 신택스 요소의 시맨틱스들은 VVC Draft 5에서 동일한 이름의 신택스 요소의 시맨틱스와 동일하게 특정될 수 있다.
디코딩 프로세스는 다음과 같이 또는 다음과 유사하게 정의되는 변수들을 사용할 수 있다:
CTB 유닛로 i 번째 타일 열의 폭을 특정하는, 0 내지 num_tile_columns_minus1의 범위(경계값 포함)의 i에 대한 리스트 colWidth[ i ]는 다음과 같이 도출된다:
Figure pct00007
i 번째 타일 열 내에서 CTB 유닛로 j 번째 브릭 행의 높이를 특정하는 0 내지 num_tile_columns_minus1의 범위(경계값 포함)의 i 및 0 내지 num_bricks_minus1[ i ]의 범위(경계값 포함)의 j에 대한 리스트 colBrickHeight[ i ][ j ], CTB 유닛로 j 번째 타일 행의 높이를 특정하는 0 내지 NumTileRows - 1의 범위(경계값 포함)의 j에 대한 리스트 RowHeight[ j ], CTB 유닛로 j 번째 타일 행 경계의 위치를 특정하는 0 내지 NumTileRows의 범위(경계값 포함)의 j에 대한 리스트 tileRowBd[ j ], NumTileRows의 값, 및 NumTilesInPic의 값은 다음과 같이 도출된다:
Figure pct00008
Figure pct00009
Figure pct00010
single_tile_in_pic_flag가 0일 경우, NumTilesInPic은 1보다 커야 한다. CTB 유닛로 i 번째 타일 열 경계의 위치를 특정하는 0 내지 num_tile_columns_minus1 + 1의 범위(경계값 포함)의 i에 대한 리스트 tileColBd[ i ]는 다음과 같이 도출된다:
Figure pct00011
PPS를 참조하는 픽처에서의 브릭들의 수를 특정하는 변수 NumBricksInPic, 및 CTB 유닛로 수직 브릭 경계들의 위치, CTB 유닛로 수평 브릭 경계들의 위치, CTB 유닛로 브릭 열들의 폭, 및 CTB 유닛로 브릭 열들의 높이를 특정하는 0 내지 NumBricksInPic - 1의 범위(경계값 포함)의 brickIdx에 대한 리스트 BrickColBd[ brickIdx ], BrickRowBd[ brickIdx ], BrickWidth[ brickIdx ], 및 BrickHeight[ brickIdx ]가 도출되고, 0 내지 NumTilesInPic - 1의 범위(경계값 포함)의 각각의 i에 대하여, uniform_brick_spacing_flag[ i ]가 1일 경우, num_brick_rows_minus1[ i ]의 값이 다음과 같이 추론된다:
Figure pct00012
실시형태에 따르면, 인코딩 방법은, a) 파티션에 할당될 유닛의 수를 결정하는 단계; b) 할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 단계; c) 명시적인 크기의 파티션에 대한 크기, 또는 명시적인 크기의 파티션에서의 유닛의 수를 표시하는 단계; 및 d) 할당될 균등한 크기의 파티션의 수를 표시 또는 추론하는 단계를 포함한다.
인코딩의 실시형태에 따르면, 단계 d)는 d1) 유닛의 카운트를 표시하는 단계; d2) 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하는 단계; 및 d3) 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 미리 정의된 스캔 순서로 마지막 파티션에 할당하는 단계를 포함한다.
따라서, 독립적으로 또는 본 명세서에서 설명된 하나 이상의 실시형태와 조합하여 구현될 수 있는 상기 실시형태에 따른 인코딩 방법이 도 14a에 예시된다. 방법은, 파티션에 할당되어야 하며 또한 미할당된 것으로서 초기화된 유닛의 수를 결정하는 단계(1400); 할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 단계(1402); 명시적인 크기의 파티션에 대한 크기를 표시하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계(1404); 유닛의 카운트를 표시하는 단계(1406); 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계(1408); 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 단계(1410)를 포함한다.
실시형태에 따르면, 디코딩 방법은, a) 파티션에 할당될 유닛의 수를 결정하는 단계; b) 할당될 명시적인 크기의 파티션의 수를 디코딩 또는 추론하는 단계; c) 명시적인 크기의 파티션에 대한 크기, 또는 명시적인 크기의 파티션에서의 유닛의 수를 디코딩하는 단계; 및 d) 할당될 균등한 크기의 파티션의 수를 디코딩 또는 추론하는 단계를 포함한다.
디코딩의 실시형태에 따르면, 단계 d)는 d1) 유닛의 카운트를 디코딩하는 단계; d2) 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 단일의 카운트를 파티션에 반복적으로 할당하는 단계; 및 d3) 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 미리 정의된 스캔 순서로 마지막 파티션에 할당하는 단계를 포함한다.
따라서, 독립적으로 또는 본 명세서에서 설명된 하나 이상의 실시형태와 조합하여 구현될 수 있는 상기 실시형태에 따른 디코딩 방법이 도 14b에 예시된다. 방법은, 파티션에 할당되어야 하는 유닛의 수를 결정하는 단계(1450); 할당될 명시적인 크기의 파티션의 수를 결정하는 단계(1452); 명시적인 크기의 파티션에 대한 크기를 결정하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계(1454); 유닛의 카운트를 결정하는 단계(1456); 미할당된 유닛의 수가 유닛의 카운트보다 작을 때까지 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계(1458); 및 미할당된 유닛의 수가 0보다 크면, 미할당된 유닛을 마지막 파티션에 할당하는 단계(1460)를 포함한다.
인코딩 및/또는 디코딩에 대한 실시형태에 따르면, 방법은 다음 단계들을 더 포함한다:
- 예컨대 단계 a)의 일부로서 또는 단계 a)와 연결되는 것으로서, 초기에 유닛의 수를 미할당된 것으로서 마킹하거나, 또는 초기에 유닛의 수를 미할당된 것으로서 균등하게 마킹하는 단계;
- 예컨대 단계 b) 및/또는 단계 c)의 일부로서 또는 단계 b) 및/또는 단계 c)와 연결되는 것으로서, 미할당된 유닛을 할당될 명시적인 크기의 파티션의 수 및 명시적인 크기의 파티션에 대한 크기에 따라 할당된 것으로서 마킹하는 단계;
- 예컨대 단계 d2)의 일부로서 또는 단계 d2)와 연결되는 것으로서, 미할당된 유닛을 유닛의 카운트가 파티션에 할당될 때마다 할당된 것으로서 마킹하는 단계.
유닛을 파티션에 할당하는 것 및/또는 미할당된 유닛을 할당된 것으로서 마킹하는 것은 스캐닝 순서에 따라 일어날 수 있다. 실시형태에 있어서, 스캐닝 순서는, 예컨대 코딩 표준에서 미리 정의된다. 스캐닝 순서는, 예를 들어 좌측에서 우측으로(예컨대, CTU 열들을 타일 열들에 할당하기 위함), 또는 상단에서 하단으로(예컨대, CTU 행들을 타일 행들에 할당하거나, 또는 타일 내의 CTU 행들을 브릭들에 할당하기 위함)의 순서일 수 있다. 실시형태에 있어서, 인코더는 미리 정의된 스캐닝 순서들의 리스트 중에서 스캐닝 순서를 선택하고, 선택된 스캐닝 순서를, 예컨대 비트스트림에서 또는 비트스트림을 따라 미리 정의된 스캐닝 순서들의 리스트에 대한 인덱스로서 표시한다. 실시형태에 있어서, 디코더는 비트스트림으로부터 또는 비트스트림을 따라 스캐닝 순서, 예컨대 미리 정의된 스캐닝 순서들의 리스트에 대한 인덱스를 디코딩한다.
인코딩 및/또는 디코딩에 대한 실시형태에 따르면, 단계 c)는 크기들을 또는 유닛의 수를 명시적인 크기의 파티션에 할당하는 단계를 더 포함하거나 또는 해당 단계로 이어진다.
명시적인 크기의 파티션의 크기는 할당될 유닛의 수로서 표시될 수 있다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 유닛은 CTB, CTU, CTU 행, CTU 열, (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 셀, (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 행, (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 열 중 하나이다.
인코딩 및/또는 디코딩에 대한 실시형태에 있어서, 아직 파티션에 할당되지 않은 유닛들에 대한 정보가 유지될 수 있다. 파티션에 할당될 유닛의 수를 결정한 직후에, 모든 유닛은 미할당된 것으로서 마킹될 수 있다. 유닛의 세트가 파티션에 할당되는 경우, 유닛의 세트가 할당된 것으로서 마킹될 수 있거나 또는 유닛의 세트를 "미할당된 것(unassigned)"으로서 마킹하는 것이 제거 또는 취소될 수 있다. 유닛을 할당된 것으로서 또는 미할당된 것으로서 마킹하는 것은 예를 들어 어레이 변수 등으로 표현될 수 있으며, 여기서 할당될 각각의 유닛은 어레이의 엔트리로 표현되고, 어레이의 엔트리 값은 상응하는 유닛이 할당되었는지의 여부를 가리킨다. 다른 실시예에 있어서, 아직 할당되지 않은 유닛의 수, 즉 잔여 미할당 유닛의 수는 실시형태의 단계들을 통해 유지된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 파티션에 할당될 유닛의 수는, CTU에서의 픽처 폭(예컨대, 파티션들이 타일 열들인 경우), CTU에서의 픽처 높이(예컨대, 파티션들이 타일 행들인 경우, 또는 파티션들이 하나 이상의 완전한 타일 열들에 대하여 한 번에 표시되는 브릭 열들인 경우), 타일에서의 CTU 행들의 수(예컨대, 파티션들이 타일의 브릭들인 경우), (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 열들에서의 픽처 폭, (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 행들에서의 픽처 높이 중 하나이다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 파티션은 타일 열, 타일 행, 브릭 행, (서브픽처 파티션을 표시하는 데 사용되는 그리드에 대한) 그리드 열, (서브픽처 파티셔닝을 표시하는 데 사용되는 그리드에 대한) 그리드 행 중 하나 이상이다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 단계 d는 전술한 바와 같이 단계 d1, d2, 및 d3을 포함하며, 하기의 신택스 등이 사용될 수 있다:
Figure pct00013
num_exp_tile_columns_minus1 + 1은 명시적으로 제공된 타일 열 폭들의 수를 특정한다.
num_exp_tile_rows_minus1 + 1은 명시적으로 제공된 타일 행 높이들의 수를 특정한다.
tile_column_width_minus1[ i ] + 1은 0 내지 num_exp_tile_columns_minus1 - 1의 범위(경계값 포함)의 i에 대하여 CTB 유닛로 i 번째 타일 열의 폭을 특정한다. tile_column_width_minus1[ num_exp_tile_columns_minus1 ]은 인덱스가 num_exp_tile_columns_minus1 이상인 타일 열들의 폭을 도출하는 데 사용된다.
tile_row_height_minus1[ i ] + 1은 0 내지 num_exp_tile_rows_minus1 - 1의 범위(경계값 포함)의 i에 대하여 CTB 유닛로 i 번째 타일 행의 높이를 특정한다. tile_row_height_minus1[ num_exp_tile_rows_minus1 ]은 인덱스가 num_exp_tile_rows_minus1 이상인 타일 행들의 높이를 도출하는 데 사용된다.
brick_splitting_present_flag 및 brick_spit_flag[ i ]는 앞서 설명된 바와 같이 특정될 수 있다.
NumTilesInPic은 픽처에서의 타일들의 수와 동일한 것으로 추론될 수 있다. NumTileColumns는 픽처에서의 타일 열들의 수와 동일한 것으로 추론될 수 있다. RowHeight[ tileY ]는 tileY 번째 타일 행에서의 CTU 행들의 수와 동일한 것으로 추론될 수 있다.
num_exp_brick_rows_minus1[ i ] + 1은 i 번째 타일에서 명시적으로 제공된 브릭 행 높이들의 수를 특정한다. 존재하지 않을 경우, num_exp_brick_rows_minus1[ i ]의 값은 -1인 것으로 추론될 수 있다.
brick_row_height_minus1[ i ][ j ] + 1은 0 내지 num_exp_brick_rows_minus1[ i ] - 1의 범위(경계값 포함)의 j에 대하여 CTB 유닛로 i 번째 타일에서의 j 번째 브릭의 높이를 특정한다. brick_row_height_minus1[ i ][ num_exp_brick_rows_minus1 ]은 i 번째 타일에서 인덱스가 num_exp_brick_rows_minus1[ i ] 이상인 브릭 행들의 높이를 도출하는 데 사용된다.
인코딩에 대하여(또는 아래에서 괄호로 표시된 바와 같이 제각기 디코딩에 대하여) 상기 신택스를 사용하는 예시적인 실시형태에 따르면, 타일 열들은 다음과 같이 특정된다:
- 명시적으로 제공된 타일 열 폭들의 수가 표시(또는 디코딩)된다(num_exp_tile_columns_minus1).
- 타일 열 폭들이 좌측에서 우측으로 명시적으로 제공(또는 디코딩 및 할당)된다(tile_column_width_minus1[ i ]).
- 마지막으로 명시적으로 제공(또는 디코딩)된 타일 열 폭(tile_column_width_minus1[ num_exp_tile_columns_minus1 ])은 해당 폭의 추가적인 타일 열들이 픽처 경계 내에 더 이상 맞춰지지 않을 때까지 반복된다.
- 어떠한 타일 열에도 아직 할당되지 않은 잔여 CTU(있을 경우)는 최우측 타일 열에 할당된다.
타일 행 높이들 및 브릭 행들은 타일 행들과 유사하게 특정된다.
상기의 신택스에, 그리고 인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 타일 열들의 수를 특정하는 변수 numTileColumns, 및 CTB 유닛로 i 번째 타일 열의 폭을 특정하는 0 내지 numTileColumns - 1의 범위(경계값 포함)의 i에 대한 리스트 colWidth[ i ]는 다음과 같이 도출된다:
Figure pct00014
상기의 신택스에, 그리고 인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 타일 행들의 수를 특정하는 변수 numTileRows, 및 CTB 유닛로 j 번째 타일 행의 높이를 특정하는 0 내지 numTileRows - 1의 범위(경계값 포함)의 j에 대한 리스트 RowHeight[ j ]는 다음과 같이 도출된다:
Figure pct00015
일부 실시형태에 있어서는, 다음이 적용될 수 있다:
- 변수 NumTilesInPic은 numTileColumns * numTileRows와 동일하게 설정된다.
- CTB 유닛로 i 번째 타일 열 경계의 위치를 특정하는 0 내지 numTileColumns의 범위(경계값 포함)의 i에 대한 리스트 tileColBd[ i ]는 다음과 같이 도출된다:
Figure pct00016
- CTB 유닛로 j 번째 타일 행 경계의 위치를 특정하는 0 내지 numTileRows의 범위(경계값 포함)의 j에 대한 리스트 tileRowBd[ j ]는 다음과 같이 도출된다:
Figure pct00017
상기의 신택스에, 그리고 인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, PPS를 참조하는 픽처에서의 브릭들의 수를 특정하는 변수 NumBricksInPic, 및 CTB 유닛로 수직 브릭 경계들의 위치, CTB 유닛로 수평 브릭 경계들의 위치, CTB 유닛로 브릭들의 폭, 및 CTB 유닛로 브릭들의 높이를 특정하는 0 내지 NumBricksInPic - 1의 범위(경계값 포함)의 brickIdx에 대한 리스트 BrickColBd[ brickIdx ], BrickRowBd[ brickIdx ], BrickWidth[ brickIdx ], 및 BrickHeight[ brickIdx ]가 다음과 같이 도출된다:
Figure pct00018
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 단계 d는 파티션에 할당될 유닛의 수로부터 명시적인 크기의 파티션에서의 유닛의 수를 차감함으로써 파티션에 아직 할당되지 않은 유닛의 수를 결정하는 단계를 포함하고, 방법은 하기의 단계들을 더 포함한다:
- 명시적인 크기의 파티션에 대한 크기들 또는 명시적인 크기의 파티션에서의 유닛의 수에 따라 그리고 미리 정의된 또는 표시/디코딩된 스캔 순서에 따라 파티션들을 명시적인 크기의 파티션에 할당하는 단계;
- 파티션에 아직 할당되지 않은 유닛을 균등한 크기의 파티션의 수로 나눔으로써 그리고 미리 정의된 또는 표시/디코딩된 스캔 순서에 따라 파티션들을 균등한 크기의 파티션에 할당하는 단계.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 명시적인 크기의 파티션의 수는 상위 레벨 신택스 구조(예컨대, SPS)에서 표시되거나 및/또는 그로부터 디코딩되는 반면, 명시적인 크기의 파티션에 대한 크기들 및/또는 할당될 균등한 크기의 파티션의 수는 하위 레벨 신택스 구조(예컨대, PPS)에서 표시되거나 및/또는 그로부터 디코딩될 수 있다.
실시형태에 따르면, 명시적인 크기의 파티션의 수가 1인 것으로 추론된다(예컨대, 코딩 표준에서 미리 결정됨).
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 단계 d는 하기의 단계들을 포함한다:
- 아직 할당되지 않은 유닛의 수가 균등하게 분할될 수 있는 파티션 크기의 세트 또는 리스트를 결정하는 단계;
- 세트 또는 리스트에서의 항목의 수가 1인 경우, 균등한 크기의 파티션들 수가 1인 것으로 추론하는 단계;
- 세트 또는 리스트에서의 항목에 대응하는 인덱스(또는 이와 유사한 것)를 표시 및/또는 디코딩― 인덱스는 할당될 균등한 크기의 파티션의 수를 가리킴 ―하는 단계.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 아직 할당되지 않은 유닛의 수가 균등하게 분할될 수 있는 파티션 크기의 세트 또는 리스트는 임계값보다 작은 파티션 크기를 제외하는 것으로 제한되며, 여기서 임계값은 예컨대 코딩 표준에서 미리 정의될 수 있거나 또는 표시/디코딩될 수 있다. 예를 들어, CTU에서의 최소 타일 열 폭은 미리 정의될 수 있거나 또는 표시/디코딩될 수 있다.
실시형태에 따르면, 세트 또는 리스트에서의 항목에 대응하는 인덱스는 고정-길이 코드워드, 예컨대 u(v)로 코딩되며, 여기서 코드워드의 길이는 세트 또는 리스트에서의 항목의 수에 의해 결정된다.
타일 행의 경계가 잠재적인 타일 행의 경계인지의 여부를 표시하기(Indicating whether a boundary of a tile row is a boundary of the potential tile row)
일부 실시형태에 있어서는, 수평 브릭 경계들이 픽처를 가로질러 정렬될 때 타일 행 경계가 추론된다. 이 섹션은 타일 행 경계들을 시그널링하는 것에 대한 실시형태를 제시한다. 이 실시형태는 브릭 경계들이 신택스에서 타일 행 경계들보다 먼저 표시되는 임의의 실시형태와 함께 적용될 수 있다.
이 실시형태는 하기의 단계들(일부는 이미 이전에 설명됨) 중 하나 이상을 포함할 수 있다:
- 잠재적인 타일 행 경계들은 브릭 경계들이 픽처를 통해 (수평으로) 정렬된 것들인 것으로 추론된다.
- 정렬된 모든 브릭 경계들이 타일 행 경계를 형성하는지의 여부가 비트스트림에서 또는 비트스트림을 따라 인코더에 의해 추론되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라 디코더에 의해 디코딩된다. 예를 들어, 비트스트림 신택스에서 플래그가 사용될 수 있다.
- 정렬된 모든 브릭 경계들이 타일 행 경계들을 형성하지 않는 경우, 해당 경계가 타일 행 경계인지의 여부가 각각의 정렬된 브릭 경계에 대하여 비트스트림에서 또는 비트스트림을 따라 인코더에 의해 표시되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라 디코더에 의해 디코딩된다. 예를 들어, 플래그는 각각의 정렬된 브릭 경계에 대한 비트스트림 신택스에 존재할 수 있다(픽처 경계들인 정렬된 브릭 경계들을 제외).
예를 들어, 하기의 신택스가 사용될 수 있다:
Figure pct00019
NumAlignedBrickRows는 다른 실시형태에서의 NumTileRows처럼 도출될 수 있다.
제시된 신택스 요소의 시맨틱스는 다음과 같이 특정될 수 있다:
explicit_tile_rows_flag가 0이라는 것은 수평 브릭 경계들이 픽처를 가로질러 정렬될 때마다 타일 행 경계가 추론된다는 것을 특정하고, explicit_tile_rows_flag가 1이라는 것은 tile_row_flag[ i ] 신택스 요소들이 존재한다는 것을 특정한다.
tile_row_flag[ i ]가 0이라는 것은 수평 브릭 경계들이 픽처를 가로질러 정렬된 이러한 i 번째 수평 경계가 타일 행 경계가 아니라는 것을 특정한다. tile_row_flag[ i ]가 1이라는 것은 수평 브릭 경계들이 픽처를 가로질러 정렬된 이러한 i 번째 수평 경계가 타일 행 경계라는 것을 특정한다. 수평 브릭 경계들이 픽처를 가로질러 정렬된 0 번째 수평 경계는 픽처의 상단 경계이다.
브릭들로 동일하게 파티셔닝될 타일 열들을 표시하기(Indicating tile columns to be identically partitioned to bricks)
일부 예시적인 실시형태에 있어서, 신택스는 타일 열이 루프 엔트리 순서(예컨대, 타일 열들을 좌측에서 우측으로 스캐닝)에서 이전 타일 열과 동일하게 브릭들로 파티셔닝된다는 표시를 포함한다. 실시형태는 표시 또는 임의의 유사한 표시 없이 유사하게 적용된다는 것을 이해할 필요가 있다. 예를 들어, 타일 열들의 스캔 순서는 우측에서 좌측으로의 순서일 수 있으며, 결과적으로 현재 타일 열의 브릭 파티셔닝이 우측의 타일 열로부터 복사되었다는 것이 표시될 수 있다. 다른 실시예에 있어서, 동일한 폭을 가진 모든 타일 열들이 동일한 브릭 파티셔닝을 갖는 것으로 표시 또는 추론된다. 또 다른 실시예에 있어서, 브릭 파티셔닝이 복사되는 타일 열의 인덱스가 표시된다. 또한, 이전의 표시들에 기초하여 타일 열을 브릭들로 파티셔닝하는 것을 결론짓는 다른 방법이 있을 때 실시형태가 유사하게 적용된다는 것을 이해할 필요가 있다. 이 섹션은 일부 관련 실시형태를 제시한다.
실시형태에 있어서, 동일한 폭(예컨대, CTB 유닛)을 갖는 모든 타일 열들이 브릭들로의 동일한 파티셔닝을 갖는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩한다. 예를 들어, same_brick_spacing_in_equally_wide_tile_cols_flag라는 신택스 요소가 사용될 수 있다.
실시형태에 있어서, 동일한 브릭 파티셔닝을 갖는 루프 엔트리 순서(예컨대, 타일 열들을 좌측에서 우측으로 스캐닝)에서 인접하는 타일 열들의 수를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩한다. 예를 들어, num_tile_cols_with_same_brick_partitioning_minus1[ i ]라고 할 수 있는 신택스 요소는 u(v) 코딩될 수 있으며, 여기서 v는 브릭 파티셔닝이 아직 표시되지 않은 잔여 타일 열들에 의해 결정된다.
실시형태에 있어서, 타일 열들이 브릭들로 동일하게 파티셔닝되는 것을 표시하는 것과 관련된 신택스 요소(들)(예컨대, copy_previous_col_flag[ i ])가 존재하는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시할 수 있거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩할 수 있다. 실시형태에 있어서, 표시는 SPS와 같은 시퀀스-레벨 신택스 구조이다. 다른 실시형태에 있어서, 표시는 PPS와 같은 픽처-레벨 신택스 구조이다. 실시형태에 있어서, 타일 열들이 브릭들로 동일하게 파티셔닝되는 것을 표시하는 것과 관련된 신택스 요소(들)의 부재는 브릭 파티셔닝이 모든 타일 열에 대하여 하나씩 표시 및/또는 디코딩되게 한다는 것이, 예컨대 코딩 표준에서 미리 정의된다. 실시형태에 있어서, 타일 열들이 브릭들로 동일하게 파티셔닝되는 것을 표시하는 것과 관련된 신택스 요소(들)의 부재는 브릭 파티셔닝이 하나의 타일 열에 대하여 표시 및/또는 디코딩되게 하고 모든 타일 열에 대하여 동일하게 추론되게 한다는 것이, 예컨대 코딩 표준에서 미리 정의된다. 실시형태에 있어서, 타일 열들이 브릭들로 동일하게 파티셔닝되는 것을 표시하는 것과 관련된 신택스 요소(들)의 부재를 처리하는 방법은, 비트스트림에서 또는 비트스트림을 따라, 예컨대 SPS에서 인코더에 의해 표시되거나, 및/또는 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 SPS로부터 디코더에 의해 디코딩된다. 이 방법은, i) 모든 타일 열에 대하여 하나씩 표시 및/또는 디코딩되는 브릭 파티셔닝, 및 ii) 하나의 타일 열에 대하여 표시 및/또는 디코딩되고 모든 타일 열에 대하여 동일하게 추론되는 브릭 파티셔닝을 포함할 수 있되, 이들로 제한되지는 않는 미리 정의된 프로세스 세트 중에서 표시 및/또는 디코딩될 수 있다.
일부 실시형태에 있어서, 파티션에 할당될 유닛의 수가 결정 또는 추론된다. 유닛의 수는, 예를 들어 픽처에서의 CTU 열들의 수, 픽처에서의 CTU 행들의 수, 또는 타일에서의 CTU 행들의 수일 수 있다. 디코딩에 있어서, 파티션에 할당될 유닛의 수는 SPS로부터 및/또는 PPS로부터 디코딩될 수 있다. 일부 실시형태에 있어서, 신택스 구조들과, 유닛들의 수가 PPS와 같은 동일한 신택스 구조에 포함된다는 것을 추론하기에 충분한 모든 신택스 요소들과의 사이의 파싱 종속성을 회피하는 것이 바람직할 수 있다. 예를 들어, 루마 샘플에서의 픽처 폭, 루마 샘플에서의 픽처 높이, CTU 크기가 PPS에 포함될 수 있어, 픽처에서의 CTU 열들의 수 및 픽처에서의 CTU 행들의 수를 추론할 수 있다.
예를 들어, u(2)-코딩된 신택스 요소 log2_pps_ctu_size_minus5가 PPS에 포함될 수 있다. log2_pps_ctu_size_minus5 + 5는 각각의 CTU의 루마 코딩 트리 블록 크기를 특정한다. log2_pps_ctu_size_minus5가 0, 1, 또는 2라는 것은 각각의 CTU의 루마 코딩 트리 블록 크기가 제각기 32×32, 64×64, 또는 128×128 루마 샘플이라는 것을 특정한다. log2_pps_ctu_size_minus5가 2 이하인 것이 필요할 수도 있다. log2_pps_ctu_size_minus5가 SPS에서 특정되는 log2_ctu_size_minus5와 동일하다는 것이 필요할 수도 있다.
서브픽처 파티셔닝 표시하기(Indicating subpicture partitioning)
슬라이스, 타일, 및/또는 브릭 파티셔닝을 표시하기 위한 많은 설명된 실시형태는 서브픽처가 표시되는 방식과 무관하다는 점에 주목한다. 이 섹션은 픽처를 서브픽처들로 파티셔닝하는 것을 표시 및/또는 디코딩하기 위한 실시형태를 제시한다. 이 섹션의 많은 실시형태는, 예컨대 슬라이스, 타일, 및/또는 브릭 파티셔닝을 표시하기 위해 다른 실시형태들과 독립적으로 사용될 수 있지만, 반드시 그러한 것은 아니다.
실시형태에 따르면, 서브픽처 파티셔닝을 시그널링하는 데 사용되는 그리드는 비트스트림에서 또는 비트스트림을 따라(예컨대, SPS에서) 표시되거나 또는 비트스트림으로부터 또는 비트스트림을 따라(예컨대, SPS로부터) 디코딩된다. 그리드의 셀들은 어느 서브픽처 경계들이 시그널링되는지에 따라 유닛을 특정한다. 즉, 서브픽처 경계는 표시된 그리드의 경계에만 위치될 수 있다.
실시형태에 따르면, 그리드는 CTU(또는 코덱의 유사한 기본 코딩 블록) 유닛로 표시 및/또는 디코딩된다.
실시형태에 따르면, 시그널링은 그리드 열들의 수, 그리드 행들의 수, 그리드 열들의 폭(예컨대, CTU의 카운트로서), 및 그리드 행들의 높이(예컨대, CTU의 카운트)를 가리키는 정보를 포함한다. 예를 들어, 하기의 신택스가 사용될 수 있다:
Figure pct00020
num_id_columns_minus1은 픽처를 파티셔닝하는 열들의 수에서 1을 뺀 수를 특정한다. num_id_rows_minus1은 픽처를 파티셔닝하는 행들의 수에서 1을 뺀 수를 특정한다. id_column_width_minus1[ i ] + 1은 코딩 트리 블록 유닛로 i 번째 열의 폭을 특정한다. id_row_height_minus1[ i ] + 1은 코딩 트리 블록 유닛로 i 번째 행의 높이를 특정한다. 최우측 그리드 열은 다른 그리드 열들에 할당되지 않은 코딩 트리 블록들의 열들로 구성되는 것으로 추론될 수 있다. 최하단 그리드 행은 다른 그리드 행들에 할당되지 않은 코딩 트리 블록으로 구성되는 것으로 추론될 수 있다.
다른 실시예에 따르면, 하기의 신택스가 사용될 수 있다:
Figure pct00021
상기의 시그널링이 사용 중일 때, 다른 그리드 열들에 할당되지 않은 코딩 트리 블록들의 열들로 구성되는 것으로 추론될 수 있는 잠재적으로 최우측의 그리드 열을 제외한 모든 그리드 열들은 동일한 폭을 갖는다. 마찬가지로, 다른 그리드 행들에 할당되지 않은 코딩 트리 블록으로 구성되는 것으로 추론될 수 있는 잠재적으로 최하단의 그리드 행을 제외한 모든 그리드 행들은 동일한 높이를 갖는다. id_column_width_minus1 + 1은 코딩 트리 블록 유닛로 그리드 열들의 폭을 특정한다. id_row_height_minus1 + 1은 코딩 트리 블록 유닛로 그리드 행들의 높이를 특정한다.
실시형태에 따르면, 그리드 셀들을 서브픽처들에 할당하는 것은 비트스트림에서 또는 비트스트림을 따라(예컨대, SPS에서) 표시되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라(예컨대, SPS로부터) 디코딩된다.
실시형태에 있어서, 그리드 셀들을 서브픽처들에 할당하는 것은 (우하단 그리드 셀이 그리드의 우하단 그리드 셀인 것으로 추론될 수 있는 마지막 서브픽처를 잠재적으로 제외한) 각각의 서브픽처에 대한 우하단 그리드 셀 인덱스에 의해 표시되거나 및/또는 우하단 그리드 셀 인덱스로부터 디코딩된다. 예를 들어, 하기의 신택스 등이 사용될 수 있다(그리고 상기에 제시된 신택스 또는 이와 유사한 것들의 뒤에 추가되는 것으로 간주됨):
Figure pct00022
num_subpics_minus2 + 2는 픽처 내의 서브픽처들의 수를 특정한다. bottom_right_grid_idx_length_minus1 + 1은 신택스 요소 bottom_right_grid_idx_delta[ i ]를 나타내는 데 사용되는 비트 수를 특정한다. i가 0보다 클 때 bottom_right_grid_idx_delta[ i ]는 i 번째 서브픽처의 우하단 모서리에 위치된 그리드 셀의 그리드 인덱스와 ( i - 1 ) 번째 서브픽처의 우하단 모서리의 그리드 인덱스 사이의 차이를 특정한다. bottom_right_grid_idx_delta[ 0 ]은 0 번째 서브픽처의 우하단 모서리의 그리드 인덱스를 특정한다. 마지막 서브픽처의 우하단 모서리는 그리드의 우하단 셀인 것으로 추론된다. grid_idx_delta_sign_flag[ i ]가 1이라는 것은 bottom_right_grid_idx_delta[ i ]에 대하여 양의 부호를 표시한다. sign_bottom_right_grid_idx_delta[ i ]가 0이라는 것은 bottom_right_grid_idx_delta[ i ]에 대하여 음의 부호를 표시한다. 변수 NumGridRows, NumGridCols 및 NumGridCellsInPic은 제각기 그리드 행, 그리드 열들 및 픽처에서의 그리드 셀들의 카운트와 동일한 것으로 추론될 수 있다. i 번째 서브픽처의 좌상단 모서리에 위치된 그리드 셀의 그리드 인덱스, i 번째 서브픽처의 우하단 모서리에 위치된 그리드 셀의 그리드 인덱스, i 번째 서브픽처에서의 그리드 셀들의 수 및 서브픽처들에 대한 그리드 셀들의 맵핑을 특정하는 변수 TopLeftGridIdx[ i ], BottomRightGridIdx[ i ], NumGridCellsInSubpic[ i ] 및 GridCellsToSubpicMap[ j ]는 다음과 같이 도출된다:
Figure pct00023
타일 파티셔닝을 서브픽처 파티셔닝의 분할로서 표시하기(Indicating tile partitioning as a splitting of a subpicture partitioning)
다른 실시형태들과 함께 또는 독립적으로 사용될 수 있는 실시형태에 따르면, 픽처의 서브픽처들로의 파티셔닝은 비트스트림에서 또는 비트스트림을 따라, 예컨대 SPS에서 표시되거나, 및/또는 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 SPS로부터 디코딩되고, 타일 열, 타일 행, 및/또는 브릭들로의 파티셔닝은 서브픽처 파티셔닝을 기반으로 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시되거나, 및/또는 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩된다.
실시형태에 따르면, 다음과 같이 인코더가 비트스트림에서 또는 비트스트림을 따라 타일 열 경계들을 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 타일 열 경계들을 디코딩한다. 직사각형 슬라이스들의 수직 경계들이 타일 열 경계들과 일치하고 서브픽처들이 하나 이상의 전체 직사각형 슬라이스들로 구성되기 때문에, 타일 열 경계는 서브픽처의 수직 경계와 일치하는 것으로 결론지어질 수 있다. 따라서, 수직 서브픽처 경계들이 (예컨대, 인코더에 의해) 획득되거나 또는 (예컨대, 디코더에 의해) 디코딩되고, 타일 열 경계들인 것으로 결론지어진다. 추가적으로, (수직 서브픽처 경계들로부터 결론지어진 것들 외에) 추가적인 타일 열 경계들이 존재하는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, tile_col_splitting_present_flag는 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. tile_col_splitting_present_flag가 0이라는 것은 타일 열 경계들이 획득된 또는 디코딩된 수직 서브픽처 경계들과 동일하다는 것을 특정한다. tile_col_splitting_present_flag가 1이라는 것은 수직 서브픽처 경계들로부터 결론지어진 것들 외에 추가적인 타일 열들이 존재한다는 것을 특정한다.
실시형태에 있어서, (수직 서브픽처 경계들로부터 결론지어진 것들 외에) 추가적인 타일 열 경계들이 존재한다는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시할 경우 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 다음이 적용된다. 픽처 경계들이 아닌 수직 서브픽처 경계들은, 예컨대 좌측에서 우측으로 정렬될 수 있고 0부터 NumSubPicCols - 2(경계값 포함)까지 인덱싱될 수 있으며, 여기서 NumSubPicCols는 픽처 경계들이 아닌 별개의 수직 서브픽처 경계들의 수이다. i 번째 서브픽처 열은 i가 0보다 클 때 ( i - 1 ) 번째 서브픽처 열의 우측 경계에 의해 또는 i가 0일 때 좌측 픽처 경계에 의해 좌측이 경계가 정해지고, i가 NumSubPicCols - 1보다 작을 때 i 번째 서브픽처 경계에 의해 또는 i가 NumSubPicCols - 1일 때 우측 픽처 경계에 의해 우측이 경계가 정해지는 것으로 정의될 수 있다. 서브픽처 열이 하나 초과의 타일 열로 분할되는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, tile_col_split_flag[ i ]는 각각의 서브픽처 열에 대하여 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. tile_col_split_flag[ i ]가 0이라는 것은 i 번째 서브픽처 열이 정확히 하나의 타일 열로 구성된다는 것을 특정한다. tile_col_split_flag[ i ]가 1이라는 것은 i 번째 서브픽처 열이 하나 초과의 타일 열로 구성된다는 것을 특정한다.
실시형태에 있어서, 서브픽처 열이 하나 초과의 타일 열들로 분할된다는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시할 경우, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 서브픽처 열 내의 타일 열들은 드래프트 VVC 표준 또는 임의의 제시된 실시형태와 유사하게 표시된다. 예를 들어, 서브픽처 열 내의 타일 열들의 수를 가리키는 신택스 요소를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시할 수 있거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩할 수 있다. 예를 들어, num_tile_cols_minus2[ i ] 신택스 요소가 사용될 수 있으며, 여기서 num_tile_cols_minus2[ i ] + 2는 i 번째 서브픽처 열에서 타일 열들의 수를 특정한다. 서브픽처 열 내의 각각의 타일 열의 폭은 비트스트림에서 또는 비트스트림을 따라 표시되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다(서브픽처 열의 마지막 타일 열은 제외되며, 그 폭은 서브픽처의 아직 할당되지 않은 잔여 영역을 모두 포함하는 것으로 추론될 수 있음). 예를 들어, tile_col_width_minus1[ i ][ j ]가 사용될 수 있으며, 여기서 tile_col_width_minus1[ i ][ j ] + 1은 CTU 유닛로 i 번째 서브픽처 열 내의 j 번째 타일 열의 폭을 특정한다.
전술한 실시형태는 예를 들어 하기의 신택스 등을 사용할 수 있다:
Figure pct00024
실시형태에 따르면, 다음과 같이 인코더가 비트스트림에서 또는 비트스트림을 따라 타일 행 경계들을 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 타일 행 경계들을 디코딩한다. 수평 서브픽처 경계는 타일 행 경계 또는 타일 내의 브릭 경계와 함께 배치될 수 있다. 따라서, 수평 서브픽처 경계들이 (예컨대, 인코더에 의해) 획득되거나 또는 (예컨대, 디코더에 의해) 디코딩되고, 타일 행 경계들 또는 브릭 경계들인 것으로 결론지어진다.
실시형태에 있어서, 타일 행 경계들이 수평 서브픽처 경계들과 일대일로 일치하는지(또는 그 반대의 경우), 또는 추가적인 타일 행 경계들이 존재하거나 또는 일부 수평 서브픽처 경계들이 타일(들) 내의 브릭 경계들인지를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, tile_row_splitting_present_flag는 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. tile_row_splitting_present_flag가 0이라는 것은 타일 행 경계들이 획득된 또는 디코딩된 수평 서브픽처 경계들과 동일하다는 것을 특정한다. tile_col_splitting_present_flag가 1이라는 것은 수평 서브픽처 경계들로부터 결론지어진 것들 외에 추가적인 타일 행들이 존재한다는 것 또는 일부 수평 서브픽처 경계들이 타일(들) 내의 브릭 경계들이라는 것을 특정한다.
실시형태에 있어서, (수평 서브픽처 경계들로부터 결론지어진 것들 외에) 추가적인 타일 행 경계들이 존재한다는 것 또는 일부 수평 서브픽처 경계들이 타일(들) 내의 브릭 경계들이라는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시할 경우 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 다음이 적용된다. 픽처 경계들이 아닌 수평 서브픽처 경계들은, 예컨대 상단에서 하단으로 정렬될 수 있고 0부터 NumSubPicRows - 2(경계값 포함)까지 인덱싱될 수 있으며, 여기서 NumSubPicRows는 픽처 경계들이 아닌 별개의 수평 서브픽처 경계들의 수이다. i 번째 서브픽처 행은 i가 0보다 클 때 ( i - 1 ) 번째 서브픽처 행의 하단 경계에 의해 또는 i가 0일 때 상단 픽처 경계에 의해 상단이 경계가 정해지고, i가 NumSubPicRows - 1보다 작을 때 i 번째 서브픽처 경계에 의해 또는 i가 NumSubPicRows - 1일 때 하단 픽처 경계에 의해 하단이 경계가 정해지는 것으로 정의될 수 있다. 서브픽처 행 경계가 타일 행 경계인지 또는 브릭 경계인지 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, tile_row_flag[ i ]는 각각의 서브픽처 행에 대하여 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. tile_row_flag[ i ]가 0이라는 것은 i 번째 서브픽처 행 경계가 타일(들) 내의 브릭 경계라는 것을 특정한다. tile_row_flag[ i ]가 1이라는 것은 i 번째 서브픽처 행 경계가 타일 행 경계라는 것을 특정한다. 서브픽처 행이 하나 초과의 타일 행에 대한 데이터를 포함하는지 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, tile_row_split_flag[ i ]는 각각의 서브픽처 행에 대하여 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. tile_row_split_flag[ i ]가 0이라는 것은 i 번째 서브픽처 행이 하나의 타일 행에 대한 데이터를 포함한다는 것을 특정한다. tile_row_split_flag[ i ]가 1이라는 것은 i 번째 서브픽처 행이 하나 초과의 타일 행에 대한 데이터를 포함한다는 것을 특정한다.
실시형태에 있어서, 서브픽처 행이 하나 초과의 타일 행에 대한 데이터를 포함한다는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시할 경우, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 서브픽처 행 내의 타일 행들은 드래프트 VVC 표준 또는 임의의 제시된 실시형태와 유사하게 표시된다. 예를 들어, 서브픽처 행 내의 타일 행 경계들의 수를 가리키는 신택스 요소를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시할 수 있거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩할 수 있다. 예를 들어, num_tile_rows_minus2[ i ] 신택스 요소가 사용될 수 있으며, 여기서 num_tile_rows_minus2[ i ] + 2는 i 번째 서브픽처 행에서 타일 행 경계들의 수를 특정한다. 서브픽처 행 내의 각각의 타일 행의 높이는 비트스트림에서 또는 비트스트림을 따라 표시되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다(서브픽처 행의 마지막 타일 행은 제외되며, 그 높이는 i보다 큰 j를 갖는 tile_row_flag[ j ]의 값에 따라 다음 서브픽처 행(들)에서의 또는 다음 서브픽처 행(들) 내의 다음 타일 행 경계까지 아직 할당되지 않은 잔여 영역을 모두 포함하는 것으로 추론될 수 있음). 예를 들어, tile_row_height_minus1[ i ][ j ]가 사용될 수 있으며, 여기서 tile_row_height_minus1[ i ][ j ] + 1은 CTU 유닛로 i 번째 서브픽처 행 내의 j 번째 타일 행의 높이를 특정한다.
전술한 실시형태는 예를 들어 하기의 신택스 등을 사용할 수 있다:
Figure pct00025
인코딩 및/또는 디코딩에 대한 실시형태에 따르면, 서브픽처 경계가 타일 행 경계와 함께 배치되지 않는 경우, 브릭 경계가 서브픽처 경계와 함께 배치되는 것으로 추론된다. (서브픽처 경계들로부터 결론지어진 것들 외에) 추가적인 브릭들이 존재하는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, brick_splitting_present_flag는 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. 변수 NumInferredBricksInPic은 표시된 타일 그리드의 타일들의 수로부터 추론되는 브릭들 수, 및 추론된 브릭 경계들을 따르는 타일들의 추가 분할에 따라 설정된다. brick_splitting_present_flag가 0이라는 것은 서브픽처 경계들로부터 추론된 것들 외에 브릭 경계들이 없다는 것을 특정한다. brick_splitting_present_flag가 1이라는 것은 서브픽처 경계들로부터 추론되지 않는 브릭 경계들이 존재한다는 것을 특정한다(즉, 브릭들의 수가 NumInferredBricksInPic보다 큼).
실시형태에 있어서, 서브픽처 경계들로부터 추론되지 않는 브릭 경계들이 존재한다는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시할 경우 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 다음이 적용된다. 추론된 브릭들은 미리 정의된 스캐닝 순서로 인덱싱될 수 있다. 추론된 후보 브릭이 하나 초과의 브릭으로 분할되는지의 여부를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, brick_split_flag[ i ]는 각각의 추론된 후보 브릭에 대하여 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시될 수 있거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩될 수 있다. brick_split_flag[ i ]가 0이라는 것은 i 번째 추론된 후보 브릭이 정확히 하나의 브릭으로 구성된다는 것을 특정한다. brick_split_flag[ i ]가 1이라는 것은 i 번째 추론된 후보 브릭이 하나 초과의 브릭으로 구성된다는 것을 특정한다.
전술한 실시형태는 예를 들어 하기의 신택스 등을 사용할 수 있다:
Figure pct00026
실시형태에 있어서, 추론된 후보 브릭이 하나 초과의 브릭들로 분할된다는 것을, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩할 경우, 추론된 후보 브릭들의 추가 분할은 드래프트 VVC 표준 또는 임의의 제시된 실시형태와 유사하게 (예컨대, 인코더에 의해) 비트스트림에서 또는 비트스트림을 따라 표시되거나 및/또는 (예컨대, 디코더에 의해) 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다. 예를 들어, 추론된 후보 브릭 내의 브릭들의 수를 가리키는 신택스 요소를, 인코더가 비트스트림에서 또는 비트스트림을 따라 표시할 수 있거나 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라 디코딩할 수 있다. 예를 들어, num_bricks_minus2[ i ] 신택스 요소가 사용될 수 있으며, 여기서 num_bricks_minus2[ i ] + 2는 i 번째 추론된 후보 브릭에서 브릭들의 수를 특정한다. 추론된 후보 브릭 내의 각각의 브릭의 높이는 비트스트림에서 또는 비트스트림을 따라 표시되거나 및/또는 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다(추론된 후보 브릭의 마지막 브릭은 제외되며, 그 폭은 추론된 후보 브릭의 아직 할당되지 않은 잔여 영역을 모두 포함하는 것으로 추론될 수 있음). 예를 들어, brick_row_height_minus1[ i ][ j ]가 사용될 수 있으며, 여기서 brick_row_height_minus1[ i ][ j ] + 1은 CTU 유닛로 i 번째 추론된 후보 브릭 내의 j 번째 브릭의 높이를 특정한다.
따라서, 실시형태에 따른 타일 및 브릭 파티셔닝을 시그널링하기 위한 신택스 및 시맨틱스는 시그널링을 수행하는 데 필요한 신택스 요소들 및 신택스 라인들의 수에 있어서 상당한 절감을 제공한다. 결과적으로, 타일 및 브릭 파티셔닝을 표시하는 데 필요한 비트 수에 있어서의 상당한 절감이 달성된다.
이들 이점은 하기의 실시예에 의해 예시되며, 여기서 도 10a, 도 10b 및 도 10c에 도시된 3 가지의 상이한 타일 및 브릭 파티셔닝은 VVC Draft 5에 따른 타일 및 브릭 파티셔닝 및 일부 실시형태에 따른 타일 및 브릭 파티셔닝의 성능을 비교하기 위해 사용된다.
도 10a 및 도 10b는 전방향 미디어 포맷(Omnidirectional Media Format)(OMAF, ISO/IEC 23090-2) D.6.3 절 및 D.6.4 절(제각기)에 설명된 6K 유효 등장방형 프로젝션(ERP) 및 큐브맵 프로젝션(CMP) 스킴(제각기)을 달성하는 타일 및 브릭 파티셔닝을 나타낸다. 이들 스킴은 VR 산업 포럼 가이드라인(VR Industry Forum Guidelines)에서 권고되었다. 도 10c에 나타낸 스킴은 상이한 픽처 종횡비를 사용한 것 외에는 도 10b와 동일하다.
하기의 속성들은 VVC Draft 5 및 타일 열들 및 타일 열마다의 브릭 높이를 표시하는 것 및 명시적/균일한 타일/브릭 파티셔닝의 통합 시그널링을 모두를 결합하는 실시형태로부터 도출되었다:
- 타일 및 브릭 파티셔닝을 표시하기 위한 신택스 요소의 수
- 타일 및 브릭 파티셔닝을 표시하기 위한 신택스 라인들의 수
- 아래의 도면에 포함되는 스킴들에 대하여 타일 및 브릭 파티셔닝을 표시하는 데 필요한 비트 수
- 아래의 도면에 제시되는 스킴들에 대하여 VVC Draft 5와 비교했을 때 실시형태에 의해 제공되는 비트 카운트 절감 비율.
128x128 루마 CTB 크기로 도출되는 속성들이 아래의 테이블에 제시된다.
Figure pct00027
결과적으로, 신택스 요소의 수가 13 개에서 7 개로 감소되고 필요한 신택스 라인들의 수가 26 개에서 20 개로 감소됨을 알 수 있다. 도 10a 내지 도 10c의 타일 및 브릭 파티셔닝 각각에 대하여 실시형태에 의해 제공되는 비트 카운트 절감은 VVC Draft 5와 비교했을 때 50%를 초과한다. 또한 제안에 의하면 시맨틱스 및 도출 프로세스도 단축된다는 점에 주목한다.
코딩되지 않은 타일들 및 브릭들을 표시하기(Indicating uncoded tiles or bricks)
일부 용례들에 있어서, 타일들 및/또는 브릭들의 서브세트만이 점유되는 방식으로, 인코딩 및/또는 디코딩될 콘텐츠를 타일들 및/또는 브릭들에 할당하는 것이 합리적일 수 있다. 예를 들어, 360도 비디오의 뷰포트-종속적 스트리밍에 있어서는, 타일들과 같이, 독립적으로 코딩된 픽처 영역들의 서브세트만이 수신될 수 있다. 다른 예에 있어서, 체적 또는 포인트 클라우드 비디오의 패치-기반 인코딩이 적용되고, 패치는 픽처의 타일들 및/또는 브릭들의 서브세트만을 점유한다.
인코딩에 대한 실시형태에 따르면, 코딩되지 않은 타일들 또는 브릭들은 비트스트림에서 또는 비트스트림을 따라 슬라이스 데이터보다 상위의 신택스 구조에서 표시된다. 코딩되지 않은 타일들 또는 브릭들에 대하여 신택스 요소들이 슬라이스 데이터에 인코딩되지 않는다. 코딩되지 않은 타일들 또는 브릭들은 샘플 어레이에서 재구성된 샘플 값을 0으로 설정하는 것과 같이, 미리 정의된 또는 표시된 방법을 사용하여 (예컨대, 디코딩된 참조 픽처에) 재구성된다.
디코딩에 대한 실시형태에 따르면, 코딩되지 않은 타일들 또는 브릭들은 비트스트림으로부터 또는 비트스트림을 따라 슬라이스 데이터보다 상위의 신택스 구조로부터 디코딩된다. 코딩되지 않은 타일들 또는 브릭들에 대하여 신택스 요소들이 슬라이스 데이터로부터 디코딩되지 않는다. 코딩되지 않은 타일들 또는 브릭들은 샘플 어레이에서 재구성된 샘플 값을 0으로 설정하는 것과 같이, 미리 정의된 또는 표시된 방법을 사용하여 (예컨대, 디코딩된 참조 픽처에) 디코딩된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 코딩되지 않은 브릭들의 수가, 예컨대 ue(v)와 같은 가변-길이 코드워드를 사용하여 타일 열에 대하여 표시 및/또는 디코딩된다. 타일 열에서의 브릭들은 미리 정의된 스캔 순서로(예컨대, 하단에서 상단으로) 횡단된다. 횡단된 각각의 브릭에 대하여, 브릭이 코딩되지 않았는지 여부를 결론짓기 위해 플래그가 표시 및/또는 디코딩된다. 브릭이 코딩되지 않으면, 코딩되지 않은 것으로서 할당될 남은 브릭들의 수가 1씩 차감된다. 코딩되지 않은 것으로서 할당될 브릭이 남아 있지 않을 때까지 프로세스가 계속된다.
도 11은 본 발명의 실시형태를 사용하기에 적합한 비디오 디코더의 블록도를 도시한다. 도 11은 2-레이어 디코더의 구조를 묘사하고 있지만, 디코딩 동작들이 단일 레이어 디코더에서 유사하게 사용될 수 있다는 것을 이해할 것이다.
비디오 디코더(550)는 베이스 레이어에 대한 제1 디코더 섹션(552) 및 예측된 레이어에 대한 제2 디코더 섹션(554)을 포함한다. 블록(556)은 베이스 레이어 픽처들에 관한 정보를 제1 디코더 섹션(552)에 전달하고 예측된 레이어 픽처들에 관한 정보를 제2 디코더 섹션(554)에 전달하기 위한 디멀티플렉서를 예시한다. 참조 P'n은 이미지 블록의 예측된 표현을 나타낸다. 참조 D'n은 재구성된 예측 에러 신호를 나타낸다. 블록(705, 805)은 예비 재구성된 이미지(I'n)들을 예시한다. 참조 R'n은 최종 재구성된 이미지를 나타낸다. 블록(703, 803)은 역변환(T-1)을 예시한다. 블록(702, 802)은 역양자화(Q-1)를 예시한다. 블록(700, 800)은 엔트로피 디코딩(E-1)을 예시한다. 블록(706, 806)은 참조 프레임 메모리(RFM)를 예시한다. 블록(707, 807)은 예측(P)(인터 예측 또는 인트라 예측)을 예시한다. 블록(708, 808)은 필터링(F)을 예시한다. 블록(709, 809)은 디코딩된 예측 에러 정보를 예측된 베이스 레이어/예측된 레이어 이미지와 결합하여 예비 재구성된 이미지(I'n)를 획득하는 데 사용될 수 있다. 예비 재구성된 및 필터링된 베이스 레이어 이미지들은 제1 디코더 섹션(552)으로부터 출력(710)될 수 있고, 예비 재구성된 및 필터링된 베이스 레이어 이미지들은 제2 디코더 섹션(554)으로부터 출력(810)될 수 있다.
본 명세서에서, 디코더는 플레이어, 수신기, 게이트웨이, 디멀티플렉서 및/또는 디코더와 같이, 디코딩 동작을 수행할 수 있는 모든 연산 유닛을 포함하는 것으로 해석되어야 한다.
도 12는 본 발명의 실시형태에 따른 디코더의 동작의 흐름도를 도시한다. 실시형태의 디코딩 동작은 디코더가 표시를 디코딩한다는 점을 제외하고는 인코딩 동작과 유사하다. 다라서, 디코딩 방법은, 한 번에 타일 열들의 표시 및 하나 이상의 타일 열들에 대한 브릭 높이들의 표시를 포함하는 비트스트림 부분을 디코딩하는 단계(1200); 픽처를 통해 정렬되는 브릭 행들의 검출시에, 잠재적인 타일 행들을 추론하는 단계(1202); 잠재적인 타일 행의 경계가 타일 행의 경계임을 추론하거나 또는 잠재적인 타일 행의 경계가 타일 행의 경계인지의 여부의 표시를 디코딩하는 단계(1204); 및 표시된 타일 열, 표시된 또는 추론된 타일 행, 및 표시된 브릭 높이를 사용하여 비트스트림으로부터 하나 이상의 픽처를 디코딩하는 단계(1206)를 포함하고, 하나 이상의 픽처는 표시된 타일 열들 및 표시된 또는 추론된 타일 행들을 따라 타일들의 그리드로 파티셔닝되고, 타일들의 그리드에서의 타일은 정수 개의 코딩 트리 유닛을 포함하고 하나 이상의 브릭으로 파티셔닝되고, 브릭은 타일 내의 정수 개의 코딩 트리 유닛의 행들을 포함한다.
도 13은 본 발명의 다른 실시형태에 따른 디코더의 동작의 흐름도를 도시한다. 디코딩 방법은, a) 할당될 파티션의 수의 표시를 디코딩하는 단계(1300); b) 파티션에 할당될 유닛의 수를 결정하는 단계(1302); c) 할당될 유닛의 수가 상기 파티션의 수에 균등하게 할당되는지를 결정하는 단계(1304); 및 균등하게 할당되지 않을 경우, d) 다음 파티션에 할당될 유닛의 수를 결정하는 단계(1306), 및 e) 모든 유닛이 파티션에 할당될 때까지 단계 c) 및 단계 d)를 반복하는 단계(1308)를 포함한다.
픽처의 직사각형 슬라이스들로의 파티셔닝을 표시하기(Indicating partitioning of a picture to rectangular slices)
직사각형 슬라이스들의 시그널링을 인코딩 및/또는 디코딩하기 위한 개선된 방법에 대한 실시형태를 다음 단락들에서 소개한다. 실시형태는 타일 및 브릭 파티셔닝에 대한 실시형태들과 함께 또는 독립적으로 적용될 수 있다. 실시형태는 VVC Draft 5에서 특정된 바와 바와 같이 타일, 브릭, 및 직사각형 슬라이스의 정의 및 특성을 기반으로 한다. 실시형태에 의하면, 직사각형 슬라이스를 표시(예컨대, 직사각형 슬라이스의 위치, 폭, 및 높이를 표시 또는 도출)하는 데 필요한 비트 카운트가 감소된다.
제1 양태에 따른 인코딩 방법은, 직사각형 슬라이스의 좌상단 브릭의 위치를, 비트스트림에서 또는 비트스트림을 따라 표시하거나, 또는 추론하는 단계; 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하는지를 위치로부터 결론짓는 단계; 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스에서 브릭들의 수를, 비트스트림에서 또는 비트스트림을 따라 표시하거나, 또는 추론하는 단계를 포함한다.
제1 양태에 따른 디코딩 방법은, 직사각형 슬라이스의 좌상단 브릭의 위치를, 비트스트림으로부터 또는 비트스트림을 따라 디코딩하거나, 또는 추론하는 단계; 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하는지를 위치로부터 결론짓는 단계; 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스에서 브릭들의 수를, 비트스트림으로부터 또는 비트스트림을 따라 디코딩하거나, 또는 추론하는 단계를 포함한다.
브릭의 위치는, 예컨대 픽처의 브릭 스캔에서 브릭 인덱스일 수 있다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스의 좌상단 브릭의 위치가 임의의 타일의 좌상단 브릭이 아닌 경우, 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하는 것으로 결론지어진다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스의 좌상단 브릭의 위치가 타일의 좌상단 브릭이고 타일이 다수의 브릭을 포함하는 경우, 직사각형 슬라이스가 타일의 브릭들을 포함할 수 있거나 또는 완전한 타일들을 포함할 수 있는 것으로 결론지어진다. 인코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스가 타일의 브릭들을 포함할 수 있거나 또는 완전한 타일들을 포함할 수 있는 것으로 결론지어지면, 직사각형 슬라이스가 타일의 브릭들을 포함하는지 또는 완전한 타일들을 포함하는지의 여부가 비트스트림에서 또는 비트스트림을 따라 표시된다. 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스가 타일의 브릭들을 포함할 수 있거나 또는 완전한 타일들을 포함할 수 있는 것으로 결론지어지면, 직사각형 슬라이스가 타일의 브릭들을 포함하는지 또는 완전한 타일들을 포함하는지의 여부가 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스가 타일의 브릭들을 포함하는 것으로 (인코딩의 일부로서) 추론 또는 표시되거나 또는 디코딩되면, 예컨대 numDeltaValues라고 하는 변수는 동일한 타일 내에서 직사각형 슬라이스의 좌상단 브릭의 위치에 후속하는 브릭들의 수와 동일하게 설정된다. numDeltaValues가 1이면, 직사각형 슬라이스에 정확히 하나의 브릭을 포함하는 것으로 추론된다. 그렇지 않으면, 변수 numDeltaValues는 직사각형 슬라이스의 우하단 브릭을 표시하는 제1 신택스 요소 또는 직사각형 슬라이스에서 브릭들의 수를 표시하는 제2 신택스 요소 또는 직사각형 슬라이스 또는 임의의 유사한 신택스 요소의 높이(브릭 유닛)를 표시하는 제3 신택스 요소에 대하여 신택스 요소 길이를 도출하는 데 사용된다. 예를 들어, 제1 또는 제2 또는 제3 신택스 요소 또는 임의의 유사한 신택스 요소는 u(v)-코딩될 수 있고 그 길이는 Ceil( Log2( numDeltaValues ) ) 비트이다.
예시적인 실시형태에 있어서, 하기의 신택스가 사용된다:
Figure pct00028
bottom_right_brick_idx_delta[ i ]가 i 번째 슬라이스의 우하단 모서리에 위치된 브릭의 브릭 인덱스와 top_left_brick_idx[ i ] 사이의 차이를 특정한다는 점을 제외하면, 신택스 요소의 시맨틱스는 앞서 설명된 바와 같이 특정될 수 있다. single_brick_per_slice_flag가 1일 경우, bottom_right_brick_idx_delta[ i ]의 값이 0인 것으로 추론된다. 존재하지 않을 경우, bottom_right_brick_idx_delta[ i ]의 값이 0인 것으로 추론된다. bottom_right_brick_idx_delta[ i ]가 가질 수 있는 값들의 수를 특정하는 변수 numDeltaValues는 다음과 같이 도출된다:
Figure pct00029
bottom_right_brick_idx_delta[ i ] 신택스 요소의 길이는 Ceil( Log2( numDeltaValues ) ) 비트이다. 변수 NumBricksInTile[ brickIdx ]는 픽처의 브릭 스캔에서 인덱스 brickIdx가 있는 브릭을 포함하는 타일에서의 브릭들의 수를 특정한다. 변수 BrickIdxInTile[ brickIdx ]는, 브릭이 픽처의 브릭 스캔에서 인덱스 brickIdx에 의해 식별될 때, 브릭을 포함하는 타일 내의 브릭의 인덱스를 특정한다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스의 좌상단 브릭의 위치가 추론된다. 처음에는 모든 브릭 위치가 비어 있는 것으로 마킹된다. 브릭들을 직사각형 슬라이스들에 할당하는 루프는 비트스트림에서 또는 비트스트림을 따라 포함되거나, 또는 비트스트림으로부터 또는 비트스트림을 따라 디코딩된다. 각각의 루프 엔트리에 대하여, 직사각형 슬라이스의 좌상단 브릭은 미리 정의된, 표시된, 또는 디코딩된 스캔 순서에서 비어 있는 다음 브릭 위치인 것으로 추론된다. 예를 들어, 픽처 내의 브릭 스캔 순서가 사용되는 것은, 예컨대 코딩 표준에서 미리 정의될 수 있다. 직사각형 슬라이스의 우하단 브릭은, 예컨대 전술한 바와 같이, 추론, 표시, 또는 디코딩될 수 있고, 좌상단 브릭과 우하단 브릭이 모서리를 이루는 직사각형을 형성하는 브릭들은 할당된 것으로서 마킹된다. 각각의 루프 엔트리에 대하여 동일 또는 유사한 프로세스가 반복된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스가 완전한 타일들을 포함하는 것으로 (인코딩 또는 디코딩의 일부로서) 결론지어지거나 또는 (인코딩의 일부로서) 표시되거나 또는 (디코딩의 일부로서) 디코딩될 경우, 직사각형 슬라이스의 우하단 브릭을 표시하기 위한 신택스 요소는 다음 중 하나 이상으로부터 도출된다:
- 가능한 우하단 브릭 위치들의 세트가 도출된다. 이 세트는 타일 내의 마지막 브릭 위치들인 해당 브릭 위치들만을 포함할 수 있고, 직사각형 슬라이스의 좌상단 브릭을 포함하는 타일 행에 또는 그 아래에 위치되며, 직사각형 슬라이스의 좌상단 브릭을 포함하는 타일 열의 우측에 또는 그 위에 위치되고, (아직 어떠한 직사각형 슬라이스에도 할당되지 않은) 비어 있는 타일 위치들의 직사각형 세트를 둘러싼다.
- 가능한 우하단 브릭 위치들의 세트에서의 엔트리들이 인덱싱 또는 열거된다.
- 직사각형 슬라이스의 우하단 브릭을 표시하기 위한 u(v)-인코딩된 신택스 요소의 길이가 가능한 우하단 브릭 위치들의 세트에서의 엔트리들의 수로부터 도출된다. 엔트리들의 수 numEnt가 1이면, 우하단 브릭 인덱스가 표시 또는 디코딩될 필요가 없다. 그렇지 않으면, 신택스 요소의 길이는 Ceil( Log2( numEnt ) ) 비트와 동일하다.
- 직사각형 슬라이스의 우하단 브릭을 표시하기 위한 신택스 요소가 가능한 우하단 브릭 위치들의 열거된 세트에 대한 인덱스이다.
제2 양태에 따른 인코딩 방법은 다음을 포함한다:
- 직사각형 슬라이스의 좌상단 브릭의 위치를, 비트스트림에서 또는 비트스트림을 따라 표시하거나, 또는 추론하는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하는지를 위치로부터 결롯짓는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스의 폭을 하나의 타일 열과 동일한 것으로 추론하고, 그렇지 않으면, 좌상단 브릭이 최우측 타일 열에 있을 경우, 직사각형 슬라이스의 폭을 하나의 타일 열과 동일한 것으로 추론하고, 그렇지 않을 경우, 타일 열들에서의 직사각형 슬라이스의 폭을 비트스트림에서 또는 비트스트림을 따라 표시하는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스에서의 브릭들의 수를, 비트스트림에서 또는 비트스트림을 따라 표시하거나, 또는 추론하고; 그렇지 않으면, 좌상단 브릭이 최하단 타일 행에 있을 경우, 직사각형 슬라이스의 높이를 하나의 타일 행과 동일한 것으로 추론하고, 그렇지 않을 경우, 타일 행들에서의 직사각형 슬라이스의 높이를 비트스트림에서 또는 비트스트림을 따라 표시하는 단계.
제2 양태에 따른 디코딩 방법은 다음을 포함한다:
- 직사각형 슬라이스의 좌상단 브릭의 위치를, 비트스트림으로부터 또는 비트스트림을 따라 디코딩하거나, 또는 추론하는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하는지를 위치로부터 결롯짓는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스의 폭을 하나의 타일 열과 동일한 것으로 추론하고, 그렇지 않으면, 좌상단 브릭이 최우측 타일 열에 있을 경우, 직사각형 슬라이스의 폭을 하나의 타일 열과 동일한 것으로 추론하고, 그렇지 않을 경우, 타일 열들에서의 직사각형 슬라이스의 폭을 비트스트림으로부터 또는 비트스트림을 따라 디코딩하는 단계;
- 직사각형 슬라이스가 타일의 하나 이상의 브릭을 포함하면, 직사각형 슬라이스에서의 브릭들의 수를, 비트스트림으로부터 또는 비트스트림을 따라 디코딩하거나, 또는 추론하고; 그렇지 않으면, 좌상단 브릭이 최하단 타일 행에 있을 경우, 직사각형 슬라이스의 높이를 하나의 타일 행과 동일한 것으로 추론하고, 그렇지 않을 경우, 타일 행들에서의 직사각형 슬라이스의 높이를 비트스트림으로부터 또는 비트스트림을 따라 디코딩하는 단계.
인코딩 및/또는 디코딩에 적용 가능하고 제1 양태 및/또는 제2 양태에 적용 가능한 실시형태에 있어서, 직사각형 슬라이스가 타일의 브릭들을 포함하고, 타일이 2 개의 브릭을 포함하고 현재의 브릭(즉, 직사각형 슬라이스의 좌상단 브릭)이 타일의 상단 브릭이거나, 또는 현재의 브릭이 타일의 최하단 브릭인 것으로 결론지어지거나 또는 표시되거나 또는 디코딩되었을 경우, 직사각형 슬라이스에서의 브릭들의 수는 1(브릭 유닛)인 것으로 추론된다.
예시적인 실시형태에 있어서, 하기의 신택스가 사용된다:
Figure pct00030
신택스 요소의 변수 및 시맨틱스는 다음과 같은 추가 사항과 함께 앞서 설명된 바와 같이 특정될 수 있다:
- tlBrickIdx는, 앞서 설명된 바와 같이, 픽처에서의 브릭 스캔과 같은 미리 정의된 스캔 순서에서 비어 있는 다음 브릭 위치로서 특정될 수 있다. tlBrickIdx는 각각의 i 값에 대하여, 즉, 각각의 루프 엔트리에 대하여 재도출된다.
- numFreeColumnsOnTheRight[ brickIdx ]는 인덱스 brickIdx가 있는 브릭의 우측에 있는 타일 열들의 수를 표시하는 변수이다.
- slice_width_minus1[ i ] + 1은 타일 열들에서 i 번째 직사각형 슬라이스의 폭을 특정한다. 존재하지 않을 경우, slice_width_minus1[ i ]은 0인 것으로 추론된다.
- full_tiles_in_slice_flag[ i ]가 0이라는 것은 i 번째 직사각형 슬라이스가 단일 타일의 하나 이상의 브릭을 포함한다는 것을 특정한다. full_tiles_in_slice_flag[ i ]가 1이라는 것은 i 번째 직사각형 슬라이스가 하나 이상의 완전한 타일을 포함한다는 것을 특정한다. BrickIdxInTile[ tlBrickIdx ]가 0보다 큰 경우(즉, 직사각형 슬라이스의 좌상단 브릭이 임의의 타일의 좌상단 브릭이 아닌 경우), full_tiles_in_slice_flag[ i ]는 0인 것으로 추론된다. slice_width_minus1[ i ]가 0보다 큰 경우 또는 BrickIdxInTile[ tlBrickIdx ]가 0이고 NumBricksInTile[ tlBrickIdx ]가 1인 경우, full_tiles_in_slice_flag[ i ]는 1인 것으로 추론된다.
- full_tiles_in_slice_flag[ i ]가 0이면, numFreeRowsBelow[ brickIdx ]는 동일한 타일에서 인덱스 brickIdx가 있는 브릭보다 아래의 타일에서의 브릭들의 수를 표시하는 변수이다. 그렇지 않으면, numFreeRowsBelow[ brickIdx ]는 인덱스 brickIdx가 있는 브릭을 포함하는 타일보다 아래의 타일 행들의 수를 표시하는 변수이다.
- full_tiles_in_slice_flag[ i ]가 0이면, slice_height_minus1[ i ] + 1은 브릭들에서 i 번째 직사각형 슬라이스의 높이를 특정한다. 그렇지 않으면, slice_height_minus1[ i ] + 1은 타일 행들에서 i 번째 직사각형 슬라이스의 높이를 특정한다. 존재하지 않을 경우, slice_height_minus1[ i ]은 0인 것으로 추론된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 슬라이스 폭 신택스 요소(예컨대, slice_width_minus1)의 길이는 직사각형 슬라이스의 좌상단 브릭 위치에 기초하여 가능한 값들의 수로부터 도출된다. 상기의 변수들 및 신택스 요소들을 사용하면, slice_width_minus1의 길이는 Ceil( Log2( numFreeColumnsOnTheRight[ tlBrickIdx ] + 1) )과 같다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 있어서, 슬라이스 높이 신택스 요소(예컨대, slice_height_minus1)의 길이는 직사각형 슬라이스의 좌상단 브릭 위치 및 직사각형 슬라이스가 단일 타일의 브릭들 또는 완전한 타일들을 포함하는지의 여부에 기초하여 가능한 값들의 수로부터 도출된다. 상기의 변수들 및 신택스 요소들을 사용하면, slice_height_minus1의 길이는 Ceil( Log2( numDeltaValues ) )와 같으며, 여기서 numDeltaValues는 다음과 같이 도출된다:
Figure pct00031
직사각형 슬라이스들의 시그널링을 인코딩 및/또는 디코딩하기 위한 개선된 방법에 대한 실시형태를 다음 단락들에서 소개한다. 실시형태는 타일 및 브릭 파티셔닝에 대한 실시형태들과 함께 또는 독립적으로 적용될 수 있다. 실시형태는 VVC Draft 6에서 특정된 바와 같이 타일, 브릭, 직사각형 슬라이스, 및 서브픽처 중 하나 이상의 정의 및 특성을 기반으로 한다. 실시형태에 의하면, 직사각형 슬라이스를 표시(예컨대, 직사각형 슬라이스의 위치, 폭, 및 높이를 표시 또는 도출)하는 데 필요한 비트 카운트가 감소된다.
실시형태에 따르면, 서브픽처당 유일한 하나의 직사각형 슬라이스가 인코딩된다. 인코더는 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서, 표시의 범위에 있는 픽처들에 대하여 서브픽처당 유일한 하나의 직사각형 슬라이스가 인코딩된다는 것을 표시한다. 표시의 범위는, 예컨대 사용되는 서브픽처당 유일한 하나의 직사각형 슬라이스의 표시를 포함하는 PPS를 참조하는 픽처들일 수 있다. 인코더는 직사각형 슬라이스들의 경계의 명시적 시그널링을 생략한다. 인코더는 직사각형 슬라이스들의 경계가 서브픽처들의 경계와 동일한 것으로 추론한다.
실시형태에 따르면, 디코더는 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터, 표시의 범위에 있는 픽처들에서 각각의 서브픽처가 유일한 하나의 직사각형 슬라이스를 포함한다는 표시를 디코딩한다. 표시의 범위는, 예컨대 표시를 포함하는 PPS를 참조하는 픽처들일 수 있다. 디코더는 직사각형 슬라이스들의 경계의 명시적 시그널링의 디코딩을 생략한다. 디코더는 직사각형 슬라이스들의 경계가 서브픽처들의 경계와 동일한 것으로 추론한다.
하기의 신택스 등은 전술한 실시형태들과 함께 사용될 수 있으며, 여기서는 single_slice_per_subpic_flag가 0이라는 것이 서브픽처들이 임의의 수의 직사각형 슬라이스를 포함할 수 있다는 것을 특정하고, single_slice_per_subpic_flag가 1이라는 것이 각각의 서브픽처가 유일한 하나의 직사각형 슬라이스를 포함한다는 것을 특정한다:
Figure pct00032
실시형태에 따르면, 서브픽처가 유일한 하나의 직사각형 슬라이스로 구성되는지의 여부 또는 하나 초과의 직사각형 슬라이스를 포함하는지를, 인코더가 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시하거나, 및/또는 디코더가 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩한다. 예를 들어, u(1)-코딩된 신택스 요소, 예컨대 subpic_split_flag[ i ]라고 하는 것은 (0일 때) i 번째 서브픽처가 정확히 하나의 직사각형 슬라이스로 구성된다는 것 또는 (1일 때) i 번째 서브픽처가 하나 초과의 직사각형 슬라이스로 구성된다는 것을 표시할 수 있다.
실시형태에 따르면, 인코더는 서브픽처 내의 브릭 인덱스들을 사용하여 서브픽처를 직사각형 슬라이스들로 파티셔닝하는 것을 표시 및/또는 디코딩한다. 서브픽처 내의 브릭들은 서브픽처 내의 브릭 스캔 순서, 즉, 주된 순서로서의 서브픽처 내의 타일 래스터 스킨 및 부차적 순서로서의 타일 내의 브릭 래스터 스캔과 같이, 미리 정의된 스캔 순서에 있어서, 예컨대 0에서 시작하여 1씩 증분되는 것으로 인덱싱된다. 서브픽처 내의 브릭 인덱스들의 값 범위가 픽처 내의 브릭 인덱스들의 값 범위보다 작기 때문에, 서브픽처 내의 브릭 인덱스들을 표시하기 위한 신택스 요소는 픽처 내의 브릭 인덱스들에 대한 각각의 신택스 요소보다 짧을 가능성이 있고, 그에 따라 시그널링이 더욱 간결해질 가능성이 있다.
실시형태에 따르면, 하기의 신택스 등이 사용될 수 있다.
Figure pct00033
rect_slice_splitting_present_flag가 0이라는 것은 각각의 서브픽처에 정확히 하나의 직사각형 슬라이스가 있다는 것을 특정한다. rect_slice_splitting_present_flag가 1이라는 것은 각각의 서브픽처가 하나 이상의 직사각형 슬라이스를 포함할 수 있다는 것을 특정한다. bottom_right_brick_idx_length_minus1 + 1은 bottom_right_brick_idx_delta[ i ] 신택스 요소의 길이를 특정한다. NumSubPics 변수는, 예컨대 SPS에서의 서브픽처 시그널링에 기초하여, 픽처 내의 서브픽처들의 수와 동일한 것으로 도출된다. subpic_split_flag[ i ]가 0이라는 것은 i 번째 서브픽처가 정확히 하나의 직사각형 슬라이스로 구성된다는 것을 특정한다. subpic_split_flag[ i ]가 1이라는 것은 i 번째 서브픽처가 하나 초과의 직사각형 슬라이스로 구성된다는 것을 특정한다. num_slices_in_subpic_minus2[ i ] + 2는 i 번째 서브픽처 내의 직사각형 슬라이스들의 수를 특정한다. i 번째 서브픽처 내의 브릭들은 브릭 스캔 순서로 인덱싱된다. bottom_right_brick_idx_delta[ i ][ j ] 및 sign_bottom_right_brick_idx_delta[ i ][ j ]는, j가 0보다 클 때 i 번째 서브픽처의 ( j - 1 ) 번째 직사각형 슬라이스의 우하단 브릭에 관하여, 또는 j가 0일 때 0(즉, i 번째 서브픽처의 좌상단 모서리)에 관하여, i 번째 서브픽처 내의 j 번째 직사각형 슬라이스의 우하단 브릭의 브릭 인덱스를 도출하는 데 사용된 부호 있는 델타 값을 특정한다. 부호 있는 델타 값은 sign_bottom_right_brick_idx_delta[ i ][ j ]가 1일 때 bottom_right_brick_idx_delta[ i ][ j ]인 것으로 정의될 수 있고, sign_bottom_right_brick_idx_delta[ i ][ j ]가 0일 때 -bottom_right_brick_idx_delta[ i ][ j ]인 것으로 정의될 수 있지만, sign_bottom_right_brick_idx_delta[ i ][ j ] 값의 반대의 할당으로 마찬가지로 정의될 수도 있다.
코딩되지 않은 직사각형 슬라이스들을 표시하기(Indicating uncoded rectangular slices)
일부 용례들에 있어서, 직사각형 슬라이스들의 서브세트만이 점유되는 방식으로 직사각형 슬라이스들에 인코딩 및/또는 디코딩될 콘텐츠를 할당하는 것이 합리적일 수 있다. 예를 들어, 360도 비디오의 뷰포트-종속적 스트리밍에 있어서는, 직사각형 슬라이스들의 서브세트만이 수신될 수 있다. 다른 예에 있어서, 체적 또는 포인트 클라우드 비디오의 패치-기반 인코딩이 적용되고, 패치는 픽처의 직사각형 슬라이스들의 서브세트만을 점유한다.
인코딩에 대한 실시형태에 따르면, 코딩되지 않은 직사각형 슬라이스는 비트스트림에서 또는 비트스트림을 따라, 예컨대 PPS에서 표시된다. 코딩되지 않은 직사각형 슬라이스는 비트스트림에 VCL NAL 유닛로서 인코딩되지 않는다. 코딩되지 않은 직사각형 슬라이스는 샘플 어레이들에서 재구성된 샘플 값들을 0으로 설정하는 것과 같이, 미리 정의된 또는 표시된 방법을 사용하여 (예컨대, 디코딩된 참조 픽처에) 재구성된다.
디코딩에 대한 실시형태에 따르면, 코딩되지 않은 직사각형 슬라이스는 비트스트림으로부터 또는 비트스트림을 따라, 예컨대 PPS로부터 디코딩된다. 코딩되지 않은 직사각형 슬라이스는 비트스트림으로부터 VCL NAL 유닛로부터 디코딩되지 않는다. 대신에, 코딩되지 않은 직사각형 슬라이스는 샘플 어레이들에서 디코딩된 샘플 값들을 0으로 설정하는 것과 같이, 미리 정의된 또는 표시된 방법을 사용하여 (예컨대, 디코딩된 참조 픽처에) 디코딩된다.
인코딩 및/또는 디코딩에 적용 가능한 실시형태에 따르면, 각각의 직사각형 슬라이스에 대하여 플래그가 표시 및/또는 디코딩되며, 플래그는 직사각형 슬라이스가 코딩되지 않았는지의 여부를 나타낸다.
실시형태에 따르면, 코딩되지 않은 직사각형 슬라이스들의 수는 ue(v)와 같은 가변-길이 코드워드를 사용하여 표시 및/또는 디코딩된다. 직사각형 슬라이스는 미리 정의된 스캔 순서(직사각형 슬라이스들의 좌상단 CTU의 역 래스터 스캔 순서)로 횡단된다. 각각의 횡단된 직사각형 슬라이스에 대하여, 직사각형 슬라이스가 코딩되지 않았는지의 여부를 결론짓도록 플래그가 표시 및/또는 디코딩된다. 직사각형 슬라이스가 코딩되지 않으면, 코딩되지 않은 것으로서 할당될 남은 직사각형 슬라이스들의 수가 1씩 차감된다. 코딩되지 않은 것으로서 할당될 직사각형 슬라이스가 남아 있지 않을 때까지 프로세스가 계속된다.
도 15는 다양한 실시형태가 구현될 수 있는 예시적인 멀티미디어 통신 시스템의 그래픽 표현이다. 데이터 소스(1510)는 아날로그, 비압축된 디지털, 또는 압축된 디지털 포맷, 또는 이들 포맷의 임의의 조합으로 소스 신호를 제공한다. 인코더(1520)는 소스 신호의 데이터 포맷 변환 및/또는 필터링과 같은 전처리를 포함하거나 또는 이와 연결될 수 있다. 인코더(1520)는 소스 신호를 코딩된 미디어 비트스트림으로 인코딩한다. 디코딩될 비트스트림은 사실상 임의의 유형의 네트워크 내에 위치된 원격 디바이스로부터 직접적으로 또는 간접적으로 수신될 수 있다는 점에 유의해야 한다. 부가적으로, 비트스트림은 로컬 하드웨어 또는 소프트웨어로부터 수신될 수 있다. 인코더(1520)는 오디오 및 비디오와 같은 하나 초과의 미디어 유형을 인코딩할 수 있거나, 또는 상이한 미디어 유형의 소스 신호를 코딩하기 위해 하나 초과의 인코더(1520)가 필요할 수 있다. 인코더(1520)는 또한 그래픽 및 텍스트와 같은 합성적으로 생성된 입력을 얻을 수 있거나, 또는 합성 미디어의 코딩된 비트스트림을 생성할 수 있다. 이하에서는, 설명을 간략화하기 위해 단지 하나의 미디어 유형의 하나의 코딩된 미디어 비트스트림의 처리만이 고려된다. 그러나, 통상적으로 실시간 브로드캐스트 서비스는 몇 가지 스트림(통상적으로 적어도 하나의 오디오, 비디오 및 텍스트 자막처리 스트림)을 포함한다는 점에 유의해야 한다. 시스템은 다수의 인코더를 포함할 수 있지만, 도면에서는 보편성의 결여 없이 설명을 간략화하기 위해 단지 하나의 인코더(1520)만이 표현되어 있다는 점에 또한 유의해야 한다. 본 명세서에 포함된 텍스트 및 실시예가 인코딩 프로세스를 구체적으로 설명할 수 있지만, 당업자는 동일한 개념 및 원리가 또한 상응하는 디코딩 프로세스에 적용되고 그 반대도 마찬가지라는 것을 이해할 것이라는 점을 또한 이해해야 한다.
코딩된 미디어 비트스트림은 저장 장치(1530)로 전달될 수 있다. 저장 장치(1530)는 코딩된 미디어 비트스트림을 저장하기 위해 임의의 유형의 대용량 메모리를 포함할 수 있다. 저장 장치(1530) 내의 코딩된 미디어 비트스트림의 포맷이 기본 자급식 비트스트림 포맷일 수 있거나, 또는 하나 이상의 코딩된 미디어 비트스트림이 컨테이너 파일 내로 캡슐화될 수 있거나, 또는 코딩된 미디어 비트스트림이 DASH(또는 유사한 스트리밍 시스템)에 적합한 세그먼트 포맷으로 캡슐화되고 세그먼트들의 시퀀스로서 저장될 수 있다. 하나 이상의 미디어 비트스트림이 컨테이너 파일 내에 캡슐화되면, 파일 생성기(도면에는 도시 생략)는 하나 이상의 미디어 비트스트림을 파일 내에 저장하고, 마찬가지로 파일 내에 저장될 수도 있는 파일 포맷 메타데이터를 생성하는 데 사용될 수 있다. 인코더(1520) 또는 저장 장치(1530)가 파일 생성기를 포함할 수 있거나, 또는 파일 생성기가 인코더(1520) 또는 저장 장치(1530)에 작동 가능하게 연결된다. 몇몇 시스템은 "라이브(live)"로 동작하고, 즉 저장 장치가 생략되고, 코딩된 미디어 비트스트림을 인코더(1520)로부터 송신기(1540)로 직접적으로 전달한다. 이어서, 코딩된 미디어 비트스트림은 필요에 따라, 서버라고도 하는 송신기(1540)에 전달될 수 있다. 전송에 사용되는 포맷은 기본 자급식 비트스트림 포맷, 패킷 스트림 포맷, DASH(또는 유사한 스트리밍 시스템)에 적합한 세그먼트 포맷일 수 있거나, 또는 하나 이상의 코딩된 미디어 비트스트림이 컨테이너 파일 내에 캡슐화될 수 있다. 인코더(1520), 저장 장치(1530), 및 서버(1540)는 동일한 물리적 디바이스 내에 상주할 수 있거나, 또는 이들은 개별 디바이스 내에 포함될 수 있다. 인코더(1520) 및 서버(1540)는 라이브 실시간 콘텐츠로 동작할 수 있는 데, 이 경우에 코딩된 미디어 비트스트림은 통상 영구적으로 저장되지 않고, 오히려 콘텐츠 인코더(1520)에서 및/또는 서버(1540)에서 짧은 시간 동안 버퍼링되어 처리 지연, 전송 지연, 및 코딩된 미디어 비트레이트에서의 편차를 평활화한다.
서버(1540)는 코딩된 미디어 비트스트림을 통신 프로토콜 스택을 사용해서 송신한다. 스택은 실시간 전송 프로토콜(Real-Time Transport Protocol)(RTP), 사용자 데이터그램 프로토콜(User Datagram Protocol)(UDP), 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)(HTTP), 전송 제어 프로토콜(Transmission Control Protocol)(TCP), 및 인터넷 프로토콜(Internet Protocol)(IP) 중 하나 이상을 포함할 수 있지만, 이들로 제한되는 것은 아니다. 통신 프로토콜 스택이 패킷-지향적이면, 서버(1540)는 코딩된 미디어 비트스트림을 패킷으로 캡슐화한다. 예를 들어, RTP가 사용될 경우, 서버(1540)는 RTP 페이로드 포맷에 따라 코딩된 미디어 비트스트림을 RTP 패킷으로 캡슐화한다. 통상적으로, 각각의 미디어 유형은 전용 RTP 페이로드 포맷을 갖는다. 시스템은 하나 초과의 서버(1540)를 포함할 수 있지만, 간략화를 위해, 이하의 설명은 단지 하나의 서버(1540)만을 고려한다는 점에 재차 유의해야 한다.
미디어 콘텐츠가 저장 장치(1530)를 위해 또는 데이터를 송신기(1540)에 입력하기 위해 컨테이너 파일에 캡슐화되면, 송신기(1540)는 "송신 파일 파서(sending file parser)"(도면에는 도시 생략)를 포함할 수 있거나 또는 이것에 작동 가능하게 연결될 수 있다. 특히, 컨테이너 파일이 이와 같이 전송되지 않고 포함된 코딩된 미디어 비트스트림 중 적어도 하나가 통신 프로토콜을 통한 전송을 위해 캡슐화되면, 송신 파일 파서는 통신 프로토콜을 통해 운반될 코딩된 미디어 비트스트림의 적절한 부분을 찾는다. 송신 파일 파서는 패킷 헤더 및 페이로드와 같은 통신 프로토콜에 대한 정확한 포맷을 생성하는 데 도움이 될 수 있다. 멀티미디어 컨테이너 파일은 통신 프로토콜 상의 포함된 미디어 비트스트림 중 적어도 하나의 캡슐화를 위해, ISOBMFF의 힌트 트랙과 같은 캡슐화 명령을 포함할 수 있다.
서버(1540)는, 예컨대 CDN, 인터넷 및/또는 하나 이상의 액세스 네트워크의 조합일 수 있는 통신 네트워크를 통해 게이트웨이(1550)에 접속될 수도 있거나 또는 접속되지 않을 수 있다. 게이트웨이는 또한, 또는 대안적으로 미들-장비(middle-box)라고 할 수 있다. DASH의 경우, 게이트웨이는 (CDN의) 에지 서버 또는 웹 프록시일 수 있다. 시스템은 일반적으로 임의의 수의 게이트웨이 등을 포함할 수 있지만, 간략화를 위해, 하기의 설명에서는 단지 하나의 게이트웨이(1550)만을 고려한다는 점에 유의한다. 게이트웨이(1550)는 하나의 통신 프로토콜 스택에 따른 패킷 스트림의 다른 통신 프로토콜 스택으로의 전환, 데이터 스트림의 병합 및 포킹, 및 지배적인 다운링크 네트워크 조건에 따른 포워딩된 스트림의 비트레이트의 제어와 같은 다운링크 및/또는 수신기 성능에 따른 데이터 스트림의 조작과 같이, 상이한 유형의 기능을 수행할 수 있다. 게이트웨이(1550)는 다양한 실시형태에 있어서 서버 엔티티일 수 있다.
시스템은, 통상적으로 전송된 신호를 수신하고, 복조하고, 코딩된 미디이 비트스트림으로 캡슐화 해제할 수 있는 하나 이상의 수신기(1560)를 포함한다. 코딩된 미디어 비트스트림은 기록 저장 장치(1570)로 전달될 수 있다. 기록 저장 장치(1570)는 코딩된 미디어 비트스트림을 저장하기 위해 임의의 유형의 대용량 메모리를 포함할 수 있다. 기록 저장 장치(1570)는 대안적으로 또는 부가적으로 랜덤 액세스 메모리와 같은 연산 메모리를 포함할 수 있다. 기록 저장 장치(1570) 내의 코딩된 미디어 비트스트림의 포맷이 기본 자급식 비트스트림 포맷일 수 있거나, 또는 하나 이상의 코딩된 미디어 비트스트림이 컨테이너 파일 내로 캡슐화될 수 있다. 서로 연계된 오디오 스트림 및 비디오 스트림과 같은 다수의 코딩된 미디어 비트스트림이 존재하면, 컨테이너 파일이 통상적으로 사용되고 수신기(1560)는 입력 스트림으로부터 컨테이너 파일을 생성하는 컨테이너 파일 생성기를 포함하거나 또는 이에 연결된다. 몇몇 시스템은 "라이브"로 동작하고, 즉 기록 저장 장치(1570)가 생략되고, 코딩된 미디어 비트스트림을 수신기(1560)로부터 디코더(1580)로 직접적으로 전달한다. 몇몇 시스템에서, 단지 기록된 스트림의 가장 최근의 부분, 예컨대 기록된 스트림의 가장 최근 10분의 발췌부가 기록 저장 장치(1570)에 유지되고, 한편 더 이전의 임의의 기록된 데이터는 기록 저장 장치(1570)로부터 폐기된다.
코딩된 미디어 비트스트림은 기록 저장 장치(1570)로부터 디코더(1580)로 전달될 수 있다. 서로 연계되고 컨테이너 파일 내로 캡슐화되는 오디오 스트림 및 비디오 스트림과 같은 다수의 코딩된 미디어 비트스트림이 존재하거나 또는 단일의 미디어 비트스트림이 예컨대, 더 용이한 액세스를 위해 컨테이너 파일에 캡슐화되면, 파일 파서(도면에는 도시 생략)가 각각의 코딩된 미디어 비트스트림을 컨테이너 파일로부터 캡슐화 해제하는 데 사용된다. 기록 저장 장치(1570) 또는 디코더(1580)가 파일 파서를 포함할 수 있거나, 또는 파일 파서가 기록 저장 장치(1570) 또는 디코더(1580)에 연결된다. 시스템은 다수의 디코더를 포함할 수 있지만, 여기서는 보편성의 결여 없이 설명을 간략화하기 위해 단지 하나의 디코더(1580)만이 논의된다는 점에 또한 유의해야 한다.
코딩된 미디어 비트스트림은 디코더(1580)에 의해 더 처리될 수 있으며, 그 출력은 하나 이상의 비압축된 미디어 스트림이다. 마지막으로, 렌더러(1590)는, 예를 들어 라우드스피커 또는 디스플레이로 비압축된 미디어 스트림을 재생할 수 있다. 수신기(1560), 기록 저장 장치(1570), 디코더(1580), 및 렌더러(1590)는 동일한 물리적 디바이스 내에 상주할 수 있거나, 또는 이들은 개별 디바이스 내에 포함될 수 있다.
상기에서는, 일부 실시형태가 VVC/H.266의 용어를 참조 및/또는 사용하여 설명되었다. 실시형태는 임의의 비디오 인코더 및/또는 비디오 디코더로 유사하게 실현될 수 있다는 것을 이해할 필요가 있다.
상기에서는, 일부 예시적인 실시형태가 특정 신택스 구조 및/또는 신택스 요소를 참조하여 설명되었다. 실시형태는 다른 신택스 구조 및/또는 신택스 요소로 유사하게 실현될 수 있다는 것을 이해할 필요가 있다. 예를 들어, 실시형태가 PPS 신택스에서의 신택스 요소들을 참조하여 설명된 경우, 실시형태는 SPS와 같은 다른 신택스 구조에서의 동일 또는 유사한 신택스 요소들로 실현될 수 있다는 것을 이해할 필요가 있다.
상기에서는, 일부 실시형태가 표시라는 용어를 참조하여 설명되었다. 표시라는 용어는 비트스트림에서 또는 비트스트림을 따라 하나 이상의 신택스 구조에서 하나 이상의 신택스 요소를 인코딩 또는 생성하는 것으로서 이해될 수 있다는 것을 이해할 필요가 있다.
상기에서는, 일부 실시형태가 디코딩이라는 용어를 참조하여 설명되었다. 디코딩이라는 용어는 비트스트림으로부터 또는 비트스트림을 따라 하나 이상의 신택스 구조로부터 하나 이상의 신택스 요소를 디코딩 또는 파싱하는 것으로서 이해될 수 있다는 것을 이해할 필요가 있다.
상기에서, 예시적인 실시형태가 인코더를 참조하여 설명된 경우, 결과적인 비트스트림 및 디코더는 그에 상응하는 요소들을 가질 수 있다는 것을 이해할 필요가 있다. 마찬가지로, 예시적인 실시형태가 디코더를 참조하여 설명된 경우, 인코더는 디코더에 의해 디코딩될 비트스트림을 생성하기 위한 구조 및/또는 컴퓨터 프로그램을 가질 수 있다는 것을 이해할 필요가 있다. 예를 들어, 일부 실시형태는 인코딩의 일부로서 예측 블록을 생성하는 것과 관련하여 설명되었다. 실시형태는 디코딩의 일부로서 예측 블록을 생성하는 것에 의해 유사하게 실현될 수 있지만, 수평 오프셋 및 수직 오프셋과 같은 코딩 파라미터가 인코더에 의해 결정되기보다는 비트스트림으로부터 디코딩된다는 차이점이 있다.
전술한 본 발명의 실시형태는 수반되는 프로세스의 이해를 돕기 위해 별도의 인코더 및 디코더 장치에 관하여 코덱을 설명한다. 그러나, 장치, 구조 및 동작은 단일의 인코더-디코더 장치/구조/동작으로서 구현될 수 있음을 이해할 것이다. 더욱이, 코더 및 디코더는 일부 또는 모든 공통 요소를 공유해도 된다는 것도 가능하다.
상기의 실시예들은 전자 디바이스 내의 코덱 내에서 동작하는 본 발명의 실시형태를 설명하고 있지만, 청구범위에서 정의되는 바와 같은 발명이 임의의 비디오 코덱의 일부로서 구현될 수 있다는 점이 이해될 것이다. 따라서, 예를 들어, 본 발명의 실시형태는 고정식 또는 유선 통신 경로를 통해 비디오 코딩을 구현할 수 있는 비디오 코덱에서 구현될 수 있다.
따라서, 사용자 장비는 상기의 본 발명의 실시형태에서 설명된 것들과 같은 비디오 코덱을 포함할 수 있다. 사용자 장비라는 용어는 이동 전화, 휴대형 데이터 처리 디바이스 또는 휴대형 웹 브라우저와 같은 임의의 적합한 유형의 무선 사용자 장비를 커버하도록 의도된다는 것이 이해될 것이다.
더욱이, 공중 육상 모바일 네트워크(PLMN)의 요소가 또한 전술된 바와 같은 비디오 코덱을 포함할 수 있다.
일반적으로, 본 발명의 다양한 실시형태는 하드웨어 또는 특수 목적 회로, 소프트웨어, 논리 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 일부 양태는 하드웨어로 구현될 수 있고, 한편 다른 양태는 제어기, 마이크로프로세서 또는 다른 컴퓨팅 디바이스에 의해 실행될 수 있는 펌웨어 또는 소프트웨어로 구현될 수 있지만, 본 발명이 이들로 제한되는 것은 아니다. 본 발명의 다양한 양태들이 블록도로서, 흐름도로서, 또는 몇몇 다른 회화적 표현을 사용하여 예시 및 설명될 수 있지만, 본 명세서에 설명되는 이들 블록, 장치, 시스템, 기술 또는 방법은, 비제한적인 실시예로서, 하드웨어, 소프트웨어, 펌웨어, 특수 목적 회로 또는 논리, 범용 하드웨어 또는 제어기 또는 다른 컴퓨팅 디바이스, 또는 이들의 몇몇 조합으로 구현될 수 있다는 점이 잘 이해된다.
본 발명의 실시형태는, 프로세서 엔티티와 같은 모바일 디바이스의 데이터 프로세서에 의해 실행 가능한 컴퓨터 소프트웨어에 의해, 또는 하드웨어에 의해, 또는 소프트웨어와 하드웨어의 조합에 의해 구현될 수 있다. 또한 이와 관련하여, 도면에서와 같은 논리 흐름의 임의의 블록은 프로그램 단계, 또는 상호접속된 논리 회로, 블록 및 기능, 또는 프로그램 단계와 논리 회로, 블록 및 기능의 조합을 표현할 수 있다는 점에 유의해야 한다. 소프트웨어는 메모리 칩, 또는 프로세서 내에 구현되는 메모리 블록과 같은 물리적 매체, 하드 디스크 또는 플로피 디스크와 같은 자기 매체, 및 예를 들어 DVD 및 이들의 데이터 변형, CD와 같은 광학 매체 상에 저장될 수 있다.
메모리는 로컬 기술 환경에 적합한 임의의 유형일 수 있고, 반도체 기반 메모리 디바이스, 자기 메모리 디바이스 및 시스템, 광학 메모리 디바이스 및 시스템, 고정식 메모리 및 이동식 메모리와 같은 임의의 적절한 데이터 저장 기술을 사용하여 구현될 수 있다. 데이터 프로세서는 로컬 기술 환경에 적합한 임의의 유형일 수 있고, 범용 컴퓨터, 특수 목적 컴퓨터, 마이크로프로세서, 디지털 신호 프로세서(DSP) 및 멀티코어 프로세서 아키텍처에 기반하는 프로세서 중 하나 이상을 비제한적인 실시예로서 포함할 수 있다.
본 발명의 실시형태는 집적 회로 모듈과 같은 다양한 컴포넌트에서 실시될 수 있다. 집적 회로의 설계는 대체로 고도로 자동화된 프로세스이다. 논리 레벨 설계를 반도체 기판 상에 에칭 및 형성될 준비가 된 반도체 회로 설계로 변환하기 위해 복잡하고 강력한 소프트웨어 툴을 이용할 수 있다.
미국 캘리포니아주 마운틴 뷰 소재의 Synopsys Inc. 및 미국 캘리포니아주 산 호세 소재의 Cadence Design사에 의해 공급되는 바와 같은 프로그램들은 잘 확립된 설계 규칙 뿐만 아니라 미리 저장된 설계 모듈들의 라이브러리를 사용하여 자동으로 도체들의 경로를 정하고 컴포넌트들을 반도체칩 상에 위치시킨다. 일단 반도체 회로를 위한 설계가 완료되면, 표준화된 전자 포맷(예컨대, Opus, GDSII 등)의 최종적인 설계가 제조를 위해 반도체 제조 시설 또는 "팹(fab)"으로 전송될 수 있다.
전술한 설명은 본 발명의 예시적인 실시형태의 완전하고 유익한 설명을 예시적이고 비제한적인 실시예로서 제공하였다. 그러나, 전술한 설명의 견지에서, 첨부 도면 및 첨부된 청구범위와 함께 숙독할 때, 다양한 수정 및 적응이 당업자들에게 명백해질 수 있다. 그러나, 본 발명의 교시의 이러한 모든 및 유사한 수정이 여전히 본 발명의 범주 내에 있을 것이다.

Claims (15)

  1. 방법으로서,
    미할당된 것으로 초기화되고 파티션에 할당되어야 하는 유닛의 수를 결정하는 단계;
    할당될 명시적인 크기의 파티션의 수를 표시(indicating) 또는 추론(inferring)하는 단계;
    상기 명시적인 크기의 파티션에 대한 크기를 표시하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계;
    유닛의 카운트를 표시하는 단계;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 상기 미할당된 유닛을 상기 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 파티션은 타일 열, 타일 행, 하나 이상의 타일 열의 브릭 행, 타일의 브릭 행, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 열, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 행 중 하나 이상인
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 유닛은 픽처의 샘플의 직사각형 블록, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 셀 중 하나 이상인
    방법.
  4. 장치로서,
    미할당된 것으로 초기화되고 파티션에 할당되어야 하는 유닛의 수를 결정하는 수단;
    할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 수단;
    상기 명시적인 크기의 파티션에 대한 크기를 표시하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 수단;
    유닛의 카운트를 표시하는 수단;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하는 수단, 및 그에 따라 상기 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 수단; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 수단을 포함하는
    장치.
  5. 제4항에 있어서,
    상기 파티션은 타일 열, 타일 행, 하나 이상의 타일 열의 브릭 행, 타일의 브릭 행, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 열, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 행 중 하나 이상인
    장치.
  6. 제4항 또는 제5항에 있어서,
    상기 유닛은 픽처의 샘플의 직사각형 블록, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 셀 중 하나 이상인
    장치.
  7. 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 장치로서, 상기 적어도 하나의 메모리에는 컴퓨터 프로그램 코드가 저장되고, 상기 적어도 하나의 메모리 및 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서로, 상기 장치로 하여금 적어도 동작을 수행하게 하도록 구성되고, 상기 동작은:
    미할당된 것으로 초기화되고 파티션에 할당되어야 하는 유닛의 수를 결정하는 동작;
    할당될 명시적인 크기의 파티션의 수를 표시 또는 추론하는 동작;
    상기 명시적인 크기의 파티션에 대한 크기를 표시하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 동작;
    유닛의 카운트를 표시하는 동작;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 상기 미할당된 유닛을 상기 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 동작; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 동작을 포함하는
    장치.
  8. 방법으로서,
    파티션에 할당되어야 하는 유닛의 수를 결정하는 단계;
    할당될 명시적인 크기의 파티션의 수를 결정하는 단계;
    상기 명시적인 크기의 파티션에 대한 크기를 결정하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 단계;
    유닛의 카운트를 결정하는 단계;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 상기 미할당된 유닛을 상기 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 단계; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 단계를 포함하는
    방법.
  9. 제8항에 있어서,
    할당될 명시적인 크기의 파티션의 수를 결정하는 단계는 상기 할당될 명시적인 크기의 파티션의 수를 신택스 구조로부터 디코딩하는 단계를 포함하고;
    상기 명시적인 크기의 파티션에 대한 크기를 결정하는 단계는 상기 명시적인 크기의 파티션에 대한 크기를 상기 신택스 구조로부터 디코딩하는 단계를 포함하고;
    유닛의 카운트를 결정하는 단계는 상기 유닛의 카운트를 상기 신택스 구조로부터 디코딩하는 단계를 포함하는
    방법.
  10. 제8항 또는 제9항에 있어서,
    상기 파티션은 타일 열, 타일 행, 하나 이상의 타일 열의 브릭 행, 타일의 브릭 행, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 열, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 행 중 하나 이상인
    방법.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 유닛은 픽처의 샘플의 직사각형 블록, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 셀 중 하나 이상인
    방법.
  12. 장치로서,
    파티션에 할당되어야 하는 유닛의 수를 결정하는 수단;
    할당될 명시적인 크기의 파티션의 수를 결정하는 수단;
    상기 명시적인 크기의 파티션에 대한 크기를 결정하는 수단, 및 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 수단;
    유닛의 카운트를 결정하는 수단;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하는 수단, 및 그에 따라 상기 미할당된 유닛을 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 수단; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 수단을 포함하는
    장치.
  13. 제12항에 있어서,
    상기 파티션은 타일 열, 타일 행, 하나 이상의 타일 열의 브릭 행, 타일의 브릭 행, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 열, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 행 중 하나 이상인
    장치.
  14. 제12항 또는 제13항에 있어서,
    상기 유닛은 픽처의 샘플의 직사각형 블록, 서브픽처 파티셔닝을 표시하기 위해 사용되는 그리드에 대한 그리드 셀 중 하나 이상인
    장치.
  15. 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 장치로서, 상기 적어도 하나의 메모리에는 컴퓨터 프로그램 코드가 저장되고, 상기 적어도 하나의 메모리 및 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서로, 상기 장치로 하여금 적어도 동작을 수행하게 하도록 구성되고, 상기 동작은:
    파티션에 할당되어야 하는 유닛의 수를 결정하는 동작;
    할당될 명시적인 크기의 파티션의 수를 결정하는 동작;
    상기 명시적인 크기의 파티션에 대한 크기를 결정하고, 그에 따라 미할당된 유닛을 미리 정의된 스캔 순서로 파티션에 할당된 것으로서 마킹하는 동작;
    유닛의 카운트를 결정하는 동작;
    상기 미할당된 유닛의 수가 상기 유닛의 카운트보다 작을 때까지 상기 유닛의 카운트를 파티션에 반복적으로 할당하고, 그에 따라 상기 미할당된 유닛을 상기 미리 정의된 스캔 순서로 할당된 것으로서 마킹하는 동작; 및
    상기 미할당된 유닛의 수가 0보다 크면, 상기 미할당된 유닛을 마지막 파티션에 할당하는 동작을 포함하는
    장치.
KR1020217042693A 2019-06-03 2020-05-29 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 KR20220012356A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
FI20195465 2019-06-03
FI20195465 2019-06-03
FI20195728 2019-09-03
FI20195728 2019-09-03
PCT/FI2020/050367 WO2020245498A1 (en) 2019-06-03 2020-05-29 An apparatus, a method and a computer program for video coding and decoding

Publications (1)

Publication Number Publication Date
KR20220012356A true KR20220012356A (ko) 2022-02-03

Family

ID=73652870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217042693A KR20220012356A (ko) 2019-06-03 2020-05-29 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램

Country Status (10)

Country Link
US (1) US20220217342A1 (ko)
EP (1) EP3977743A4 (ko)
JP (1) JP2022535847A (ko)
KR (1) KR20220012356A (ko)
CN (1) CN113940084A (ko)
BR (1) BR112021023775A2 (ko)
CA (1) CA3140549A1 (ko)
MX (1) MX2021014418A (ko)
WO (1) WO2020245498A1 (ko)
ZA (1) ZA202110472B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11212530B2 (en) * 2019-06-24 2021-12-28 Tencent America LLC Method for slice, tile and brick signaling
JP7372443B2 (ja) 2019-08-10 2023-10-31 北京字節跳動網絡技術有限公司 サブピクチャに依存するビデオビットストリーム内のシグナリング
BR122022009674A2 (pt) * 2019-09-23 2022-07-05 Huawei Technologies Co., Ltd. Método implementado por um codificador, dispositivo e aparelho de codificação, sistema e meio para codificação
MX2022003765A (es) 2019-10-02 2022-04-20 Beijing Bytedance Network Tech Co Ltd Sintaxis para la se?alizacion de subimagen en un flujo de bits de video.
EP4032290A4 (en) 2019-10-18 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SYNTAX CONSTRAINTS IN REPORTING SUBPICTURE PARAMETER SETS
TWI793629B (zh) 2020-06-10 2023-02-21 寰發股份有限公司 視訊處理方法及裝置
US11711513B2 (en) * 2020-06-11 2023-07-25 Hfi Innovation Inc. Methods and apparatuses of coding pictures partitioned into subpictures in video coding systems
US11706450B2 (en) * 2020-09-18 2023-07-18 Samsung Electronics Co., Ltd. Partial decoding and reconstruction of a video-based point cloud compression bitstream
WO2023021235A1 (en) * 2021-08-17 2023-02-23 Nokia Technologies Oy A method, an apparatus and a computer program product for video encoding and video decoding

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10244246B2 (en) * 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US10390087B2 (en) * 2014-05-01 2019-08-20 Qualcomm Incorporated Hypothetical reference decoder parameters for partitioning schemes in video coding
EP3422724B1 (en) * 2017-06-26 2024-05-01 Nokia Technologies Oy An apparatus, a method and a computer program for omnidirectional video
JP2021016016A (ja) * 2017-10-20 2021-02-12 シャープ株式会社 動画像符号化装置及び動画像復号装置

Also Published As

Publication number Publication date
EP3977743A4 (en) 2023-07-12
US20220217342A1 (en) 2022-07-07
EP3977743A1 (en) 2022-04-06
BR112021023775A2 (pt) 2022-01-11
JP2022535847A (ja) 2022-08-10
MX2021014418A (es) 2022-01-24
CA3140549A1 (en) 2020-12-10
WO2020245498A1 (en) 2020-12-10
ZA202110472B (en) 2023-07-26
CN113940084A (zh) 2022-01-14

Similar Documents

Publication Publication Date Title
JP6687770B2 (ja) ビデオ符号化・復号装置、方法、及びコンピュータプログラム
US20220217342A1 (en) An apparatus, a method and a computer program for video coding and decoding
US20240048769A1 (en) Systems and methods for signaling general constraint information in video coding
CA2950182C (en) Systems and methods for selectively performing a bitstream conformance check
KR102101535B1 (ko) 비디오 코딩 및 디코딩용 방법 및 장치
JP6782704B2 (ja) ビデオコーディングのためのパレットインデックスのグループ化
EP3424217B1 (en) Methods and systems for generating color remapping information supplemental enhancement information messages for video
CN114982246B (zh) 环路滤波器的自适应舍入
AU2020261351A1 (en) Block-based quantized residual domain pulse code modulation assignment for intra prediction mode derivation
JP7390477B2 (ja) ビデオコーディングおよびデコーディングのための装置、方法、およびコンピュータプログラム
WO2015161268A1 (en) Signaling reference layers for 3d color prediction for color gamut scalability
JP7353394B2 (ja) ビデオコーディングおよびデコーディングのための装置、方法、およびコンピュータプログラム
RU2787545C1 (ru) Устройство, способ и машиночитаемый носитель для видеокодирования и видеодекодирования
RU2790177C1 (ru) Устройство и способ видеокодирования и видеодекодирования
US20240129535A1 (en) Systems and methods for signaling neural network post-filter frame rate upsampling information in video coding
WO2023067242A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2024003441A1 (en) An apparatus, a method and a computer program for video coding and decoding
KR20240027829A (ko) 크로스-성분 파라미터 계산을 위한 장치, 방법 및 컴퓨터 프로그램
CN117651132A (zh) 发送信号通知神经网络环路后滤波器信息的方法和设备
CN117857789A (zh) 更新视频数据的神经网络环路后滤波器信息的方法和设备