KR20210069716A - 비디오 코딩을 위한 방법, 장치 및 저장 매체 - Google Patents

비디오 코딩을 위한 방법, 장치 및 저장 매체 Download PDF

Info

Publication number
KR20210069716A
KR20210069716A KR1020217014079A KR20217014079A KR20210069716A KR 20210069716 A KR20210069716 A KR 20210069716A KR 1020217014079 A KR1020217014079 A KR 1020217014079A KR 20217014079 A KR20217014079 A KR 20217014079A KR 20210069716 A KR20210069716 A KR 20210069716A
Authority
KR
South Korea
Prior art keywords
nalu
picture
type
header
syntax element
Prior art date
Application number
KR1020217014079A
Other languages
English (en)
Other versions
KR102592985B1 (ko
Inventor
병두 최
스테판 웽거
샨 리우
Original Assignee
텐센트 아메리카 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텐센트 아메리카 엘엘씨 filed Critical 텐센트 아메리카 엘엘씨
Publication of KR20210069716A publication Critical patent/KR20210069716A/ko
Application granted granted Critical
Publication of KR102592985B1 publication Critical patent/KR102592985B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Landscapes

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

Abstract

비디오 시퀀스를 디코딩하기 위한 방법 및 장치는 NALU 헤더에 포함된 고정 길이 이진 코딩 네트워크 추상 계층 유닛(NALU) 클래스 유형을 디코딩하는 것을 포함한다. NALU 헤더의 NALU 유형이 디코딩된다. 픽처가 재구성되고, 픽처의 유형은 NALU 클래스 유형과 NALU 유형의 조합으로 식별된다.

Description

네트워크 추상 계층 단위 헤더의 네트워크 추상 단위 계층 유형 클래스
본 출원은 미국 특허 및 상표청에 35 U.S.C. 119 하에 2018년 12월 14일에 출원된 미국 가출원 62/780,148, 2018년 12월 14일에 출원된 미국 가출원 62/780,154, 2019년 1월 2일에 출원된 미국 가출원 62/704,039 및 2019년 5월 6일에 출원된 미국 가출원 16/403,786에 대한 우선권을 주장하며, 상기 문헌들은 그 전문이 본 명세서에 참조로 포함된다.
본 발명의 요지는 비디오 코딩 및 디코딩에 관한 것이며, 더 구체적으로 네트워크 추상 계층(Network Abstraction Layer, NAL) 단위(NALU) 유형 클래스를 포함하는 NALU 헤더의 코딩에 관한 것이다.
모션 보상과 함께 인터-픽처 예측을 사용하는 비디오 코딩 및 디코딩은 수십 년 동안 알려져 왔다. 압축되지 않은 디지털 비디오는 일련의 픽처로 구성될 수 있으며, 각 픽처는 예를 들어 1920x1080 휘도 샘플 및 관련 색차 샘플의 공간 치수를 갖는다. 일련의 픽처는 고정 또는 가변 픽처 속도(비공식적으로 프레임 속도라고도 한다), 예를 들어 초당 60 픽처 또는 60Hz를 가질 수 있다. 압축되지 않은 비디오에는 상당한 비트레이트 요구 사항이 있다. 예를 들어, 샘플당 8 비트의 1080p60 4:2:0 비디오(60Hz 프레임 속도의 1920x1080 휘도 샘플 해상도)에는 1.5Gbit/s에 가까운 대역폭이 필요하다. 이러한 비디오의 한 시간에는 600GB 이상의 저장 공간이 필요하다.
비디오 코딩 및 디코딩의 한 가지 목적은 압축을 통해 입력 비디오 신호의 중복성 감소일 수 있다. 압축은 앞서 언급한 대역폭 또는 저장 공간 요구 사항을 줄이는 데 도움이 될 수 있다. 무손실 압축과 손실 압축 모두뿐만 아니라 이들의 조합이 사용될 수 있다. 무손실 압축은 압축된 원본 신호에서 원본 신호의 정확한 사본을 재구성할 수 있는 기술을 말한다. 손실 압축을 사용하는 경우 재구성된 신호는 원래 신호와 동일하지 않을 수 있지만 원래 신호와 재구성된 신호 사이의 왜곡은 재구성된 신호가 의도한 애플리케이션에 유용할 만큼 충분히 작다. 비디오의 경우 손실 압축이 널리 사용된다. 허용되는 왜곡의 정도는 애플리케이션에 따라 다르다. 예를 들어, 특정 소비자 스트리밍 애플리케이션의 사용자는 텔레비전 기여 애플리케이션의 사용자보다 더 높은 왜곡을 허용할 수 있다. 달성 가능한 압축 비율은 다음을 반영할 수 있다. 허용/허용 왜곡이 높을수록 압축 비율이 높아질 수 있다.
비디오 인코더 및 디코더는 예를 들어 모션 보상, 변환, 양자화 및 엔트로피 코딩을 포함하는 여러 범주의 기술을 활용할 수 있으며, 그중 일부는 아래에 소개될 것이다.
[6] 네트워크 추상 계층의 개념은 ITU-T Rec. H.264에 소개되어 있다. 코딩된 비디오 비트스트림은 네트워크 추상 계층(Network Abstraction Layer, NAL-) 유닛이라고 하는 개별 유닛으로 나눌 수 있다. 각 NAL 유닛은 시작 코드 에뮬레이션 방지를 준수하지 않고 해석될 수 있는 헤더를 가질 수 있다(그렇지 않으면 잠재적으로 NAL 유닛의 다른 부분에서 잠재적으로 실질적인 구현 및 계산 비용으로 준수되어야 할 필요가 있다). H.264(101)의 NAL 유닛 헤더는 도 1에 도시된 바와 같이 고정 길이 코드 워드만 포함하도록 설계되었다. nal_unit_type(102)의 특정 값에 대해, 제2 옥텟 및 때로는 제3 옥텟을 추가하여 NAL 유닛 헤더(103)에 대한 특정 확장이 가능하였고, 이들 각각은 또한 고정 길이 코드 워드를 포함한다. 매체 인식 네트워크 요소(Media Aware Network Element, MNE), MCU, 파일 재작성기 등은 이러한 고정 길이 코드 워드를 사용하여 전체 트랜스 코딩 없이 그리고 시작 코드 에뮬레이션 방지의 제약없이 비트스트림을 효과적으로 조정할 수 있다.
H.265에서는 다소 단순화된 디자인이 선택되었다. H.265 NAL 유닛 헤더(104)는 2 옥텟에서 고정된 길이였으며 NAL 유닛 유형(105), 공간/SNR 계층 ID(106) 및 시간 계층 ID(107)를 포함하였다. 확장 메커니즘은 없었다. H.264 디자인과 비교할 때, 이 디자인은 헤더의 길이가 가변 길이에 비해 항상 2 옥텟이었지만 H.264 디자인의 경우 1 옥텟 길이이기 때문에 특정 코딩 효율성 페널티가 있었다. 한편, 확장 가능 및 멀티뷰 확장의 지원은 크게 단순화되어 확장 가능/멀티뷰와 확장 불가능/멀티뷰 레거시 인코딩 간의 특정 하위 호환성을 허용하였다.
또한, 코딩된 비디오 비트스트림을 패킷 네트워크를 통한 전송을 위해 패킷으로 분할하는 개념은 수십 년 동안 사용되어 왔다. 초기에 비디오 코딩 표준 및 기술은 대부분 비트 지향 전송 및 정의된 비트스트림에 최적화되었다. 패킷화는 실시간 전송 프로토콜(Real-time Transport Protocol, RTP) 페이로드 형식과 같이 지정된 시스템 계층 인터페이스에서 발생하였다. 인터넷을 통한 비디오의 대량 사용에 적합한 인터넷 연결의 출현으로 비디오 코딩 표준은 비디오 코딩 계층(video coding layer, VCL)과 네트워크 추상 계층(network abstraction layer, NAL)의 개념적 차별화를 통해 그 두드러진 사용 사례를 반영하였다. NAL 유닛은 2003년 H.264에 도입되었으며 그 이후로 약간의 수정만으로 특정 비디오 코딩 표준 및 기술에서 유지되었다.
NAL 유닛은 많은 경우에 코딩된 비디오 시퀀스의 모든 선행 NAL 유닛을 반드시 디코딩하지 않고도 디코더가 작용할 수 있는 가장 작은 엔티티로 볼 수 있다. 지금까지 NAL 장치는 선택적 포워딩 유닛(Selective Forwarding Unit, SFU) 또는 멀티포인트 컨트롤 유닛(Multipoint Control Unit, MCU)와 같은 매체 인식 네트워크 요소(Media Aware Network Elements, MNE)에 의해 비트스트림 프루닝(bitstream pruning)을 포함하는 특정 비트스트림 조작 기술뿐만 아니라 특정 오류 복원 기술을 활성화한다.
[10] 도 1은 각각의 확장이 없는 두 경우 모두에서 H.264(101) 및 H.265(104)에 따른 NAL 유닛 헤더의 신택스 다이어그램의 관련 부분을 묘사한다. 두 경우 모두 forbidden_zero_bit(108, 109)는 특정 시스템 계층 환경에서 시작 코드 에뮬레이션 방지에 사용되는 제로 비트이다. nal_unit_type(102, 105) 신택스 요소는 NAL 유닛이 실어 전달하는 데이터 유형을 참조하며, 이는 예를 들어 특정 슬라이스 유형, 파라미터 세트 유형, SEI-(Supplemental Enhancement Information) 메시지 등 중 하나일 수 있다. H.265 NAL 유닛 헤더는 nuh_layer_id(106) 및 nuh_temporal_id_plus1(107)을 더 포함하며, 이는 NAL 유닛이 속하는 코딩된 픽처의 공간/SNR 및 시간 계층을 나타낸다.
NAL 유닛 헤더는 예를 들어 다른 NAL 유닛 헤더, 파라미터 세트 등과 같은 비트스트림의 다른 데이터에 대한 파싱 의존성(parsing dependency)이 없는, 쉽게 파싱할 수 있는 고정 길이 코드 워드만을 포함한다는 것을 알 수 있다. NAL 유닛 헤더는 NAL 유닛의 제1 옥텟이기 때문에 MANE은 이것들을 쉽게 추출하고 파싱하고 조치를 취할 수 있다. 이와 대조적으로 슬라이스 또는 타일 헤더와 같은 다른 고수준 신택스 요소는 파라미터 세트 컨텍스트를 유지해야 하고 및/또는 가변 길이 또는 산술적으로 코딩된 코드 포인트의 처리가 필요할 수 있으므로 MANE에 쉽게 액세스할 수 없다.
또한, 도 1에 도시된 바와 같이 NAL 유닛 헤더는 NAL 유닛을 복수의 NAL 유닛으로 구성된 코딩된 픽처에 연관시킬 수 있는 정보를 포함하지 않는다(예를 들어, 복수의 NAL 유닛은 다수의 타일 또는 슬라이스를 포함하고, 이들 중 적어도 일부는 개별 NAL 유닛에서 패킷화된다).
[13] RTP(RFC 3550), MPEG 시스템 표준, ISO 파일 형식 등과 같은 특정 전송 기술에는 종종 프레젠테이션 시간(MPEG 및 ISO 파일 형식의 경우) 또는 MANE에서 쉽게 액세스할 수 있으며 각 전송 유닛을 코딩된 픽처와 연결하는 데 도움이 될 수 있는 캡처 시간(RTP의 경우)과 같은 타이밍 정보의 형태로 특정 정보가 포함될 수 있다. 그러나 이러한 정보의 세만틱스는 전송/저장 기술마다 다를 수 있으며 비디오 코딩에 사용되는 픽처 구조와 직접적인 관계가 없을 수 있다. 따라서, 이러한 정보는 기껏해야 휴리스틱스(heuristics)일 수 있으며 NAL 유닛 스트림의 NAL 유닛이 동일한 코딩된 픽처에 속하는지를 식별하는 데 특히 적합하지 않을 수 있다.
또한, 이미지 또는 비디오 코딩에서 컴포넌트는 x 및 y 차원에서 특정 해상도의 2 차원 매트릭스에 정상적으로 배열된 샘플 값의 모음을 의미할 수 있다. 오래된 이미지 및 비디오 코딩 기술에서 구성 요소는 종종 기본 색상과 연관되었다. 예를 들어 H.261 또는 JPEG와 같은 일부 오래된 비디오 또는 이미지 압축 표준에서는 YCrCb 색상 모델이 사용되었으며 Y, CR 및 Cb는 세 가지 구성 요소를 집합적으로 구성하는 정확히 세 가지 원색이다. 4:2:0으로 알려진 샘플링 구조를 사용하여 휘도 Y 구성 요소의 해상도는 색상 Cr 및 Cb 구성 요소의 해상도보다 x 및 y 차원에서 각각 두 배나 높았다. 이러한 관계는 앞서 언급한 이전 표준 및 기술로 하드 코딩된다. 이러한 오래된 표준 및 기술에서도 특정 구성 요소는 다른 구성 요소 없이 유용할 수 있다. 예를 들어, Y 구성 요소는 디코딩되어 분리되어 표시될 때 흑백 사진, 영화 및 TV에서 알려진 이미지 및 비디오 유형을 나타낸다.
MPEG-2 및 H.264와 같은 보다 현대적인 이미지 및 비디오 코딩 기술과 표준은 더 많은 다른 원색 및 추가 샘플링 구조를 지원할 수 있으며, 컴포넌트 및 샘플링 구조가 사용 중임을 설명하는 시퀀스 헤더 및 파라미터 세트와 같은 높은 수준의 신택스 구조에 코드 포인트가 필요하다.
[16] 더욱 최근에는 가변 비디오 코딩(Versatile Video Coding, VVC), 포인트 클라우드 코딩(point cloud coding, PCC), (표면) 라이트 필드 등과 같은 특정 기술이 등장하기 시작하였다. 이러한 표준 및 기술에서는 색상 구성 요소 이외의 구성 요소가 관련된다. 이러한 다른 구성 요소의 예로는 투명도(transparency), 반사도(reflectiveness), 흡수(absorption), 3D 기하학 정보(XYZ), 점유 맵(occupancy map), 표면 법선 벡터(surface normal vector), 보조 정보(auxiliary information), 깊이 맵(depth map) 등이 있으며 특정 3D 형식에서는 관찰자의 관점에 따라 3D 공간에서 주어진 샘플에 대해 색상 구성 요소가 다를 수 있다.
본 개시의 일 관점에 따르면, 비디오 시퀀스 디코딩 방법은 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하는 단계; 상기 NALU 헤더 내의 NALU 유형을 디코딩하는 단계; 및 픽처를 재구성하는 단계 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 - 를 포함한다.
본 개시의 일 관점에 따르면, 비디오 시퀀스 디코딩 장치는 프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리; 및 상기 프로그램 코드를 판독하여 상기 프로그램 코드가 명령한 대로 동작하도록 구성된 적어도 하나의 프로세서를 포함하며, 상기 프로그램 코드는: 상기 적어도 하나의 프로세서로 하여금 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하고, 그리고 상기 NALU 헤더 내의 NALU 유형을 디코딩하도록 구성된 디코딩 코드; 및 상기 적어도 하나의 프로세서로 하여금 픽처를 재구성하도록 구성된 디코딩 코드 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 - 를 포함한다.
본 개시의 일 관점에 따르면, 명령을 저장하는 비 일시적 컴퓨터 판독 가능형 매체로서, 상기 명령은: 장치의 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금: 상기 적어도 하나의 프로세서로 하여금 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하고; 상기 NALU 헤더 내의 NALU 유형을 디코딩하며; 그리고 픽처를 재구성하게 하는 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 - 하나 이상의 명령을 포함한다.
개시된 주제의 추가 특징, 본질 및 다양한 이점은 다음의 상세한 설명 및 첨부 도면으로부터보다 명백해질 것이다.
도 1은 H.264 및 H.265에 따른 NALU 헤더의 개략도이다.
도 2는 실시예에 따른 통신 시스템의 단순화된 블록도의 개략도이다.
도 3은 실시예에 따른 통신 시스템의 단순화된 블록도의 개략도이다.
도 4는 일 실시예에 따른 디코더의 단순화된 블록도의 개략도이다.
도 5는 실시예에 따른 인코더의 단순화된 블록도의 개략도이다.
도 6은 일 실시예에 따른, NALU 유형 클래스를 사용하는 NALU 헤더의 개략도이다.
도 7은 실시예에 따른 예시적인 프로세스의 흐름도이다.
도 8은 일 실시예에 따른 picture_id 신택스 요소를 포함하는 NAL 유닛 헤더의 개략도이다.
도 9는 실시예에 따른 예시적인 프로세스의 흐름도이다.
도 10은 일 실시예에 따른 다양한 컴포넌트 또는 컴포넌트 그룹을 운반하는 NAL 유닛의 개략도이다.
도 11은 일 실시예에 따른 다양한 컴포넌트 또는 컴포넌트 그룹을 운반하는 NAL 유닛의 개략도이다.
도 12는 일 실시예에 따른, 상이한 컴포넌트 유형을 갖는 NAL 유닛을 선택적으로 포워딩하는 시스템의 개략도이다.
도 13은 일 실시예에 따른, 다양한 컴포넌트 또는 컴포넌트 그룹을 운반하는 NAL 유닛에 대한 개략적 인 예시 신택스 다이어그램이다.
도 14는 일 실시예에 따른 컴퓨터 시스템의 개략도이다.
H.264 NAL 유닛 헤더는 많은 경우 컴팩트하지만 특정 애플리케이션에는 충분하지 않는다. H.265 NAL 유닛 헤더는 확장성 및 멀티뷰를 효과적으로 지원하지만 360 비디오 코딩과 같은 특정 다른 기술에 대한 지원이 부족하고 길이가 2 옥텟으로 특정 다른 애플리케이션에 대해 불필요하게 길다. 따라서 최신 애플리케이션을 효율적으로 지원하면서 H.264 NAL 유닛 헤더의 조밀도를 유지하는 설계가 필요하다.
상세한 설명
도 2는 본 개시의 일 실시예에 따른 통신 시스템(200)의 단순화된 블록도를 예시한다. 시스템(200)은 네트워크(250)를 통해 상호 연결된 적어도 2 개의 단말(210-220)을 포함할 수 있다. 데이터의 단방향 전송을 위해, 제1 단말(210)은 네트워크(250)를 통해 다른 단말(220)로 전송하기 위해 로컬 위치에서 비디오 데이터를 코딩할 수 있다. 제2 단말(220)은 네트워크(250)로부터 다른 단말의 코딩된 비디오 데이터를 수신하고 코딩된 데이터를 디코딩하여 복원된 비디오 데이터를 표시할 수 있다. 단방향 데이터 전송은 미디어 서비스 애플리케이션 등에서 일반적일 수 있다.
도 2는 예를 들어 화상 회의 동안 발생할 수 있는 코딩된 비디오의 양방향 전송을 지원하기 위해 제공된 제2 쌍의 단말(230, 240)을 도시한다. 데이터의 양방향 전송을 위해, 각 단말(230, 240)은 네트워크(250)를 통해 다른 단말로 전송하기 위해 로컬 위치에서 캡처된 비디오 데이터를 코딩할 수 있다. 각 단말(230, 240)은 또한 다른 단말이 전송한 코딩된 비디오 데이터를 수신하고 코딩된 데이터를 디코딩할 수 있으며 복구된 비디오 데이터를 로컬 디스플레이 장치에 표시할 수 있다.
도 2에서 단말(210-240)은 서버, 개인용 컴퓨터 및 스마트 폰으로 예시될 수 있으나 본 개시의 원리는 이에 제한되지 않을 수 있다. 본 개시 내용의 실시예는 랩톱 컴퓨터, 태블릿 컴퓨터, 미디어 플레이어 및/또는 전용 화상 회의 장비를 갖는 애플리케이션을 찾는다. 네트워크(250)는 예를 들어 유선 및/또는 무선 통신 네트워크를 포함하여 단말(210-240) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크를 나타낸다. 통신 네트워크(250)는 회선 교환 및/또는 패킷 교환 채널에서 데이터를 교환할 수 있다. 대표적인 네트워크에는 통신 네트워크, 근거리 통신망, 광역 통신망 및/또는 인터넷이 포함된다. 본 논의의 목적을 위해, 네트워크(250)의 아키텍처 및 토폴로지는 아래에서 설명되지 않는 한 본 개시의 동작에 중요하지 않을 수 있다.
도 3은 개시된 주제에 대한 애플리케이션의 예로서 스트리밍 환경에서 비디오 인코더 및 디코더의 배치를 예시한다. 개시된 주제는 예를 들어, 화상 회의, 디지털 TV, CD, DVD, 메모리 스틱 등을 포함하는 디지털 미디어에 압축된 비디오의 저장을 포함하는 다른 비디오 가능 애플리케이션에도 동일하게 적용될 수 있다.
스트리밍 시스템은 예를 들어 비 압축 비디오 샘플 스트림(302)을 생성하는 비디오 소스(301), 예를 들어 디지털 카메라를 포함할 수 있는 캡처 서브 시스템(313)을 포함할 수 있다. 인코딩된 비디오 비트스트림과 비교할 때 높은 데이터 볼륨을 강조하기 위해 굵은 선으로 표시된 샘플 스트림(302)은 카메라(301)에 연결된 인코더(303)에 의해 처리될 수 있다. 인코더(303)는 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 아래에서 더 상세히 설명되는 바와 같이 개시된 주제의 양태를 가능하게 하거나 구현할 수 있다. 샘플 스트림과 비교할 때 더 낮은 데이터 볼륨을 강조하기 위해 가는 선으로 묘사된 인코딩된 비디오 비트스트림(304)은 향후 사용을 위해 스트리밍 서버(305)에 저장될 수 있다. 하나 이상의 스트리밍 클라이언트(306, 308)는 인코딩된 비디오 비트스트림(304)의 사본(307, 309)을 검색하기 위해 스트리밍 서버(305)에 액세스할 수 있다. 클라이언트(306)는 인코딩된 비디오 비트스트림(307)의 들어오는 복사본을 디코딩하고 디스플레이(312) 상에서 또는 다른 렌더링 장치(도시되지 않음)에서 렌더링될 수 있는 나가는 비디오 샘플 스트림(311)을 생성하는 비디오 디코더(310)를 포함할 수 있다. 일부 스트리밍 시스템에서, 비디오 비트스트림(304, 307, 309)은 특정 비디오 코딩/압축 표준에 따라 인코딩될 수 있다. 이러한 표준의 예로는 ITU-T 권고 H.265가 있다. 비공식적으로 버서타일 비디오 코딩(Versatile Video Coding) 또는 VVC로 알려진 비디오 코딩 표준이 개발 중이다. 개시된 주제는 VVC의 컨텍스트에서 사용될 수 있다.
도 4는 본 개시의 일 실시예에 따른 비디오 디코더(310)의 기능 블록도일 수 있다.
수신기(410)는 디코더(310)에 의해 디코딩될 하나 이상의 코덱 비디오 시퀀스를 수신할 수 있고; 동일하거나 다른 실시예에서, 한 번에 하나의 코딩된 비디오 시퀀스에서, 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스와 독립적이다. 코딩된 비디오 시퀀스는 인코딩된 비디오 데이터를 저장하는 저장 장치에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(412)로부터 수신될 수 있다. 수신기(410)는 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림과 함께 인코딩된 비디오 데이터를 수신할 수 있으며, 이는 자신들이 각각 사용하는 엔티티(도시되지 않음)로 전달될 수 있다. 수신기(410)는 코딩된 비디오 시퀀스를 다른 데이터로부터 분리할 수 있다. 네트워크 지터를 방지하기 위해, 버퍼 메모리(415)가 수신기(410)와 엔트로피 디코더/파서(420)(앞으로 "파서") 사이에 결합될 수 있다. 수신기(410)가 충분한 대역폭 및 제어 가능성의 저장/전달 장치 또는 등시성 네트워크로부터 데이터를 수신할 때, 버퍼(415)는 필요하지 않거나 작을 수 있다. 인터넷과 같은 최선형 패킷 네트워크에서 사용하기 위해, 버퍼(415)가 필요할 수 있고, 비교적 클 수 있으며 적응형 크기가 유리할 수 있다.
비디오 디코더(310)는 엔트로피 코딩된 비디오 시퀀스로부터 심볼(421)을 재구성하기 위한 파서(420)를 포함할 수 있다. 이러한 심볼의 카테고리에는 디코더(310)의 작동을 관리하는 데 사용되는 정보와 디코더의 필수 부분은 아니지만 여기에 결합될 수 있는 디스플레이(312)와 같은 렌더링 장치를 제어하기 위한 정보가 포함된다. 렌더링 장치(들)에 대한 제어 정보는 SEI(Supplementary Enhancement Information) 메시지 또는 비디오 이용성 정보(Video Usability Information, VUI) 파라미터 세트 프래그먼트(도시되지 않음)의 형태일 수 있다. 파서(420)는 수신한 코딩된 비디오 시퀀스를 파싱/엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있고, 가변 길이 코딩, 허프만(Huffman) 코딩, 컨텍스트 민감도(context sensitivity)가 있거나 없는 산술 코딩 등을 포함하여 당업자에게 잘 알려진 원리를 따를 수 있다. 파서(420)는 그룹에 대응하는 적어도 하나의 파라미터에 기초하여 비디오 디코더의 픽셀의 서브그룹 중 적어도 하나에 대한 서브그룹 파라미터의 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 서브그룹에는 GOP(Group of Pictures), 픽처, 타일, 슬라이스, 매크로 블록, 코딩 유닛(Coding Unit, CU), 블록, 변환 유닛(Transform Unit, TU), 예측 유닛(Prediction Unit, PU) 등이 포함될 수 있다. 엔트로피 디코더/파서는 또한 변환 계수, 양자화기 파라미터 값, 모션 벡터 등과 같은 코딩된 비디오 시퀀스 정보로부터 추출할 수 있다.
파서(420)는 버퍼(415)로부터 수신한 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 동작을 수행하여 심볼(421)을 생성할 수 있다.
심볼의 재구성(421)은 코딩된 비디오 픽처 또는 그 일부(예를 들어, 인터 및 인트라 픽처, 인터 및 인트라 블록)의 유형 및 기타 요인에 따라 여러 개의 상이한 유닛을 포함할 수 있다. 파서(420)에 의해 코딩된 비디오 시퀀스로부터 파싱된 서브그룹 제어 정보에 의해 어떤 유닛이 관련되고 어떻게 제어될 수 있다. 파서(420)와 아래의 다중 유닛 사이의 그러한 서브그룹 제어 정보의 흐름은 명확성을 위해 묘사되지 않는다.
이미 언급한 기능 블록 외에도 디코더(310)는 개념적으로 다음과 같이 여러 기능 단위로 세분화될 수 있다. 상업적 제약 하에서 작동하는 실제 구현에서 이러한 장치 중 다수는 서로 밀접하게 상호 작용하며 적어도 부분적으로는 서로 통합될 수 있다. 그러나 공개된 주제를 설명하기 위해서는 아래의 기능 단위로 개념적으로 세분화하는 것이 적절하다.
제1 유닛은 스케일러/역변환 유닛(451)이다. 스케일러/역변환 유닛(451)은 파서(420)로부터 심볼(들)(421)로서 사용할 변환, 블록 크기, 양자화 인자, 양자화 스케일링 매트릭스 등을 포함하는 제어 정보뿐만 아니라 양자화된 변환 계수를 수신한다. 수집기(455)에 입력될 수 있는 샘플 값을 포함하는 블록을 출력할 수 있다.
일부 경우에, 스케일러/역변환(451)의 출력 샘플은 인트라 코딩된 블록에 속할 수 있으며; 즉: 이전에 재구성된 픽처의 예측 정보를 사용하지 않지만 현재 픽처의 이전에 재구성된 부분의 예측 정보를 사용할 수 있는 블록이다. 이러한 예측 정보는 인트라 픽처 예측 유닛(intra picture prediction unit)(452)에 의해 제공될 수 있다. 일부 경우에, 인트라 픽처 예측 유닛(452)은 현재 (부분적으로 재구성된) 픽처(456)로부터 인출된 이미 재구성된 주변 정보를 사용하여 재구성중인 블록과 동일한 크기 및 모양의 블록을 생성한다. 집계기(aggregator)(455)는 경우에 따라 인트라 예측 유닛(452)이 생성한 예측 정보를 스케일러/역변환 유닛(451)에 의해 제공되는 출력 샘플 정보에 샘플 단위로 추가한다.
다른 경우에, 스케일러/역변환 유닛(451)의 출력 샘플은 인터 코딩되고 잠재적으로 모션 보상된 블록에 속할 수 있다. 이러한 경우, 모션 보상 예측 유닛(453)은 예측에 사용되는 샘플을 가져 오기 위해 참조 픽처 메모리(457)에 액세스할 수 있다. 블록과 관련된 심볼(421)에 따라 페치된 샘플을 모션 보상한 후, 이러한 샘플은 집계기(455)에 의해 스케일러/역변환 유닛의 출력(이 경우 잔여 샘플 또는 잔여 신호라고 함)에 의해 추가되어 출력 샘플 정보를 생성할 수 있다. 모션 보상 유닛이 예측 샘플을 페치하는 참조 픽처 메모리 형태 내의 주소는 예를 들어 X, Y 및 참조 픽처 성분을 가질 수 있는 심볼(421)의 형태로 모션 보상 유닛에 이용 가능한 모션 벡터에 의해 제어될 수 있다. 모션 보상은 또한 서브-샘플 정확한 모션 벡터가 사용 중일 때 참조 픽처 메모리로부터 페치되는 샘플 값의 보간, 모션 벡터 예측 메커니즘 등을 포함할 수 있다.
집계기(455)의 출력 샘플은 루프 필터 유닛(456)에서 다양한 루프 필터링 기술의 대상이 될 수 있다. 비디오 압축 기술은 코딩된 비디오 비트스트림에 포함된 파라미터에 의해 제어되고 파서(420)의 심볼(421)로서 루프 필터 유닛(456)에 사용 가능하게 되는 인-루프 필터 기술을 포함할 수 있지만, 코딩된 픽처 또는 코딩된 비디오 시퀀스의 (디코딩 순서에서) 이전 부분을 디코딩하는 동안 획득된 메타-정보는 물론 이전에 재구성되고 루프 필터링된 샘플 값에 응답한다.
루프 필터 유닛(456)의 출력은 렌더 장치(312)로 출력될 수 있을 뿐만 아니라 미래의 인터-픽처 예측에 사용하기 위해 참조 픽처 메모리(456)에 저장될 수 있는 샘플 스트림일 수 있다.
완전히 재구성된 특정 코딩된 픽처는 향후 예측을 위한 참조 픽처로 사용할 수 있다. 코딩된 픽처가 완전히 재구성되고 코딩된 픽처가 (예를 들어, 파서(420)에 의해) 참조 픽처로 식별되면, 현재 참조 픽처(456)는 참조 픽처 버퍼(457)의 일부가 될 수 있고, 다음에 코딩된 픽처의 재구성을 시작하기 전에 새로운 현재 픽처 메모리를 재할당할 수 있다.
비디오 디코더(420)는 ITU-T Rec. H.265와 같이 표준으로 문서화될 수 있는 소정의 비디오 압축 기술에 따라 디코딩 동작을 수행할 수 있다. 비디오 압축 기술 또는 표준의 신택스를 준수한다는 점에서 특히 비디오 압축 기술 또는 표준에 구체적으로 그 내부의 프로파일 문서에 명시된 대로, 코딩된 비디오 시퀀스는 사용 중인 비디오 압축 기술 또는 표준에 의해 지정된 신택스를 따를 수 있다. 또한 컴플라이언스에 필요한 것은 코딩된 비디오 시퀀스의 복잡성이 비디오 압축 기술 또는 표준의 수준에 정의된 범위 내에 있어야 한다는 것이다. 경우에 따라 레벨은 최대 픽처 크기, 최대 프레임 속도, 최대 재구성 샘플 속도(예를 들어, 초당 메가 샘플로 측정됨), 최대 참조 픽처 크기 등을 제한한다. 레벨별로 설정된 제한은 경우에 따라 코딩된 비디오 시퀀스에서 시그널링된 HRD 버퍼 관리를 위한 HRD(Hippothetical Reference Decoder) 사양 및 메타데이터를 통해 추가로 제한될 수 있다.
일 실시예에서, 수신기(410)는 인코딩된 비디오와 함께 추가 (중복) 데이터를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로 포함될 수 있다. 추가 데이터는 데이터를 적절하게 디코딩하고 및/또는 원본 비디오 데이터를 더 정확하게 재구성하기 위해 비디오 디코더(420)에 의해 사용될 수 있다. 추가 데이터는 예를 들어 시간, 공간 또는 SNR 향상 계층, 중복 슬라이스, 중복 픽처, 순방향 오류 수정 코드 등의 형태일 수 있다.
도 5는 본 개시의 일 실시예에 따른 비디오 인코더(303)의 기능 블록도일 수 있다.
인코더(303)는 인코더(303)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(301)(인코더의 일부가 아님)로부터 비디오 샘플을 수신할 수 있다.
비디오 소스(301)는 임의의 적절한 비트 심도(예를 들어, 8 비트, 10 비트, 12 비트, ...), 모든 색 공간(예를 들어, BT.601 Y CrCB, RGB, ...) 및 임의의 적절한 샘플링 구조(예를 들어, Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림의 형태로 인코더(303)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서빙 시스템에서 비디오 소스(301)는 미리 준비된 비디오를 저장하는 저장 장치일 수 있다. 화상 회의 시스템에서 비디오 소스(303)는 로컬 이미지 정보를 비디오 시퀀스로 캡처하는 카메라일 수 있다. 비디오 데이터는 순서대로 볼 때 모션을 전달하는 복수의 개별 픽처로 제공될 수 있다. 픽처 자체는 픽셀의 공간적 배열로 구성될 수 있으며, 각 픽셀은 사용 중인 샘플링 구조, 색 공간 등에 따라 하나 이상의 샘플을 포함할 수 있다. 당업자는 픽셀과 샘플 사이의 관계를 쉽게 이해할 수 있다. 이하에서는 샘플에 중점을 두고 설명한다.
일 실시예에 따르면, 인코더(303)는 소스 비디오 시퀀스의 픽처를 실시간으로 또는 애플리케이션에 의해 요구되는 임의의 다른 시간 제약하에 코딩된 비디오 시퀀스(543)로 코딩하고 압축할 수 있다. 적절한 코딩 속도를 시행하는 것은 컨트롤러(550)의 기능 중 하나이다. 컨트롤러는 아래에 설명된 대로 다른 기능 장치를 제어하며 이러한 유닛들에 기능적으로 연결된다. 명확성을 위해 커플링은 표시되지 않는다. 컨트롤러에 의해 설정되는 파라미터에는 속도 제어 관련 파라미터(픽처 스킵, 양자화기, 속도 왜곡 최적화 기술의 람다 값, ...), 픽처 크기, 픽처 그룹(GOP) 레이아웃, 최대 모션 벡터 검색 범위 등이 포함될 수 있다. 당업자는 컨트롤러(550)의 다른 기능이 특정 시스템 설계에 최적화된 비디오 인코더(303)에 속할 수 있으므로 쉽게 식별할 수 있다.
일부 비디오 인코더는 당업자가 "코딩 루프"로 쉽게 인식하는 방식으로 작동한다. 지나치게 단순화된 설명으로서, 코딩 루프는 인코더(530)의 인코딩 부분(이하 "소스 코더")(코딩될 입력 픽처 및 참조 픽처(들)를 기반으로 심볼을 생성하는 책임), 및 샘플 데이터를 생성하기 위해 심볼을 재구성하는 인코더(303)에 내장된(로컬) 디코더(533)로 구성될 수 있으며, (원격) 디코더도 생성할 것이다(심볼과 코딩된 비디오 비트스트림 간의 임의의 압축은 공개된 주제에서 고려되는 비디오 압축 기술에서 무손실이다). 그 재구성된 샘플 스트림은 참조 픽처 메모리에 입력된다(534). 심볼 스트림의 디코딩은 디코더 위치(로컬 또는 원격)에 관계없이 비트에 정확한 결과를 가져 오므로 참조 픽처 버퍼 내용은 로컬 인코더와 원격 인코더 간에 정확한 비트이다. 다시 말해, 참조 픽처로서 인코더의 예측 부분은 디코딩 중에 예측을 사용할 때 디코더가 "보는" 것과 정확히 동일한 참조 픽처 샘플로 "본다". 동기성의 이러한 기본 원리(예를 들어 채널 오류로 인해 동기성이 유지될 수 없는 경우 드리프트가 되어 버린다)는 당업자에게 잘 알려져 있다.
"로컬" 디코더(533)의 동작은 "원격" 디코더(310)의 동작과 동일할 수 있으며, 이는 이미 도 4와 관련하여 상술한 바와 같다. 그러나 간단히 도 4를 참조하면, 심볼이 이용 가능하고 엔트로피 코더(545) 및 파서(420)에 의해 코딩된 비디오 시퀀스로 심볼의 인코딩/디코딩이 무손실일 수 있으므로, 채널(412), 수신기(410), 버퍼(415) 및 파서(420)를 포함하는 디코더(310)의 엔트로피 디코딩 부분은 로컬 디코더(533)에서 완전히 구현되지 않을 수 있다.
이 시점에서 관찰할 수 있는 점은 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 모든 디코더 기술도 반드시 상응하는 인코더에 실질적으로 동일한 기능적 형태로 존재해야 한다는 것이다. 이러한 이유로, 개시된 주제는 디코더 동작에 초점을 맞춘다. 인코더 기술에 대한 설명은 포괄적으로 설명된 디코더 기술의 반대이므로 생략할 수 있다. 특정 영역에서만 더 자세한 설명이 필요하며 아래에 제공된다.
동작의 일환으로, 소스 코더(530)는 "추론 프레임"으로 지정된 비디오 시퀀스로부터 하나 이상의 이전에 코딩된 프레임을 참조하여 입력 프레임을 예측적으로 코딩하는 모션 보상된 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(532)은 입력 프레임의 픽셀 블록과 입력 프레임에 대한 예측 참조(들)로서 선택될 수 있는 참조 프레임(들)의 픽셀 블록 간의 차이를 코딩한다.
로컬 비디오 디코더(533)는 소스 코더(530)에 의해 생성된 심볼에 기초하여 참조 프레임으로 지정될 수 있는 프레임의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(532)의 동작은 유리하게는 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 5에 도시되지 않음)에서 디코딩될 수 있을 때, 재구성된 비디오 시퀀스는 일반적으로 약간의 오류가 있는 소스 비디오 시퀀스의 복제본일 수 있다. 로컬 비디오 디코더(533)는 참조 프레임에서 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스를 복제하고 재구성된 참조 프레임이 참조 픽처 캐시(534)에 저장되게 할 수 있다. 이러한 방식으로, 인코더(303)는 원단 비디오 디코더(far-end video decoder)(전송 오류 없음)에 의해 획득될 재구성된 참조 프레임으로서 공통 콘텐츠를 갖는 재구성된 참조 프레임의 사본을 국부적으로 저장할 수 있다.
예측기(535)는 코딩 엔진(532)에 대한 예측 검색을 수행할 수 있다. 즉, 새로운 프레임을 코딩하기 위해 예측기(535)는 참조 픽처 메모리(534)에서 샘플 데이터(후보 참조 픽셀 블록) 또는 참조 픽처 모션 벡터, 블록 모양 등과 같은 특정 메타데이터를 검색할 수 있고, 이는 새로운 픽처에 대한 적절한 예측 참조 역할을 할 수 있다. 예측기(535)는 적절한 예측 참조를 찾기 위해 샘플 블록 단위로 동작할 수 있다. 일부 경우에, 예측기(535)에 의해 획득된 검색 결과에 의해 결정된 바와 같이, 입력 픽처는 참조 픽처 메모리(534)에 저장된 다수의 참조 픽처로부터 추출된 예측 참조를 가질 수 있다.
컨트롤러(550)는 예를 들어, 비디오 데이터를 인코딩하기 위해 사용되는 파라미터 및 서브그룹 파라미터의 설정을 포함하는 비디오 코더(530)의 코딩 동작을 관리할 수 있다.
전술한 모든 기능 유닛의 출력은 엔트로피 코더(545)에서 엔트로피 코딩될 수 있다. 엔트로피 코더는 예를 들어 허프만(Huffman) 코딩, 가변 길이 코딩, 산술 코딩 등과 같이 당업자에게 알려진 기술에 따라 심볼을 무손실 압축함으로써 다양한 기능 유닛에 의해 생성된 심볼을 코딩된 비디오 시퀀스로 변환한다.
전송기(540)는 엔트로피 코더(545)에 의해 생성된 코딩된 비디오 시퀀스(들)를 버퍼링하여 인코딩된 비디오 데이터를 저장할 스토리지 장치에 대한 하드웨어/소프트웨어 링크일 수 있는 통신 채널(560)을 통한 전송을 준비할 수 있다. 전송기(540)는 비디오 코더(530)로부터의 코딩된 비디오 데이터를 전송될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림(소스는 도시되지 않음)과 병합할 수 있다.
컨트롤러(550)는 인코더(303)의 동작을 관리할 수 있다. 코딩 동안, 컨트롤러(550)는 각 코딩된 픽처에 특정 코딩된 픽처 유형을 할당할 수 있으며, 이는 각각의 픽처에 적용될 수 있는 코딩 기술에 영향을 미칠 수 있다. 예를 들어, 픽처는 종종 다음 프레임 유형 중 하나로 지정될 수 있다:
인트라 픽처(I 픽처)는 예측 소스로 시퀀스의 다른 프레임을 사용하지 않고 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱은 예를 들어 독립 디코더 새로 고침 픽처(Independent Decoder Refresh Pictures)를 포함하여 다양한 유형의 내부 픽처를 허용한다. 당업자는 I 픽처의 이러한 변형 및 각각의 응용 및 특징을 알고 있다.
예측 픽처(P 픽처)는 각 블록의 샘플 값을 예측하기 위해 최대 하나의 모션 벡터와 참조 인덱스를 사용하여 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩할 수 있는 것일 수 있다.
양방향 예측 픽처(Bi-directionally Predictive Picture)(B 픽처)는 각 블록의 샘플 값을 예측하기 위해 최대 2 개의 모션 벡터와 참조 인덱스를 사용하여 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 유사하게, 다중 예측 픽처는 단일 블록의 재구성을 위해 2 개 이상의 참조 픽처와 관련 메타데이터를 사용할 수 있다.
소스 픽처는 일반적으로 공간적으로 복수의 샘플 블록(예를 들어, 각각 4x4, 8x8, 4x8 또는 16x16 샘플 블록)으로 세분화되고 블록 단위로 코딩될 수 있다. 블록은 블록의 각각의 픽처에 적용된 코딩 할당에 의해 결정된 대로 다른 (이미 코딩된) 블록을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 픽처의 블록은 비 예측적으로 코딩될 수 있거나, 동일한 픽처의 이미 코딩된 블록을 참조하여 예측적으로 코딩될 수 있다(공간 예측 또는 인트라 예측). P 픽처의 픽셀 블록은 하나의 이전에 코딩된 참조 픽처를 참조하여 공간 예측 또는 시간적 예측을 통해 비 예측적으로 코딩될 수 있다. B 픽처의 블록은 하나 또는 두 개의 이전에 코딩된 참조 픽처를 참조하여 공간 예측 또는 시간적 예측을 통해 비 예측적으로 코딩될 수 있다.
비디오 코더(303)는 ITU-T Rec. H.265와 같은 미리 정해진 비디오 코딩 기술 또는 표준에 따라 코딩 동작을 수행할 수 있다. 그 동작에서, 비디오 코더(303)는 입력 비디오 시퀀스에서 시간적 및 공간적 중복성을 이용하는 예측 코딩 동작을 포함하는 다양한 압축 동작을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 신택스를 따를 수 있다.
일 실시예에서, 전송기(540)는 인코딩된 비디오와 함께 추가 데이터를 전송할 수 있다. 비디오 코더(530)는 코딩된 비디오 시퀀스의 일부로서 이러한 데이터를 포함할 수 있다. 추가 데이터는 시간적/공간적/SNR 향상 계층, 중복 픽처 및 슬라이스와 같은 다른 형태의 중복 데이터, 보조 향상 정보(Supplementary Enhancement Information, SEI) 메시지, 시각적 이용 가능 정보(Visual Usability Information, VUI) 파라미터 세트 프래그먼트 등을 포함할 수 있다.
다음에서 설명의 초점은 비디오 코덱의 고수준 신택스, 특히 NAL 유닛 헤더(NUH) 디자인에 대한 것이다.
NUH는 복잡한 신택스를 처리할 수 있는 디코더뿐만 아니라 MANE, 파일 재 작성기 등(이후 MANEs)에 의해서도 해석될 수 있으므로, 그 설계는 변수 길이 코드(VLC) 또는 산술 코딩과 같은 복잡한 엔트로피 코딩 체계를 피해야 한다. 다른 한편으로, 신택스 요소의 조건부 존재를 포함하여 어느 정도의 복잡성은 수용 가능하며, 특히 그러한 신택스 요소에서 전달된 정보가 그렇지 않으면 NUH 외부 및 NAL 유닛 페이로드로 이동되어야 하는 경우에 허용된다. 그 이유는 NAL 유닛 페이로드가 시작 코드 에뮬레이션 방지로 보호되고 시작 코드 에뮬레이션 방지를 반전하는 것은 구현 및 계산 복잡성 관점에서 지루한 작업이 될 수 있기 때문일 수 있다.
MANE의 처리를 쉽게 하기 위해 NUH는 옥텟으로 정렬되었고 - 이는 비트 단위의 길이가 8로 나눌 수 있음을 의미한다. 적어도 하나의 비트(H.264 및 H.265 NUH 모두에서 forbidden_zero_bit라고 함)가 최소로 필요할 수 있기 때문에, MPEG-2 전송 스트림 채널(Transport Stream Channel)을 통해 비디오를 전송할 때 시작 코드 에뮬레이션 방지를 위해 NAL 유닛 헤더의 최소 길이는 8 비트이다. 이상적으로는 설계가 가장 일반적인 NAL 유닛 유형(NUT)에 대해 이러한 8 비트 내에 유지되어야 하지만, 더 이국적이고 덜 빈번한 NUT 또는 코딩된 픽처 유형의 백분율로 헤더 오버헤드가 무시될 수 있는 NUT에 대해 더 많은 비트가 필요할 수 있다(예를 들어, I 픽처 및 그 파생물 또는 본질적으로 압축되지 않은 형식으로 코딩된 픽처).
H.265를 개발하는 동안 많은 수의 추가 NUT(H.264에 비해)가 지정되었다. 또한 H.265에서는 NAL 유닛 헤더의 시간적 확장 시그널링이 기준 프로필(H.265에서는 메인(Main) 프로필이라고 함)에 도입되었으며 오늘날 일반적으로 사용될 수 있다. VVC와 같은 향후 비디오 코딩 표준의 경우 NUT의 수나 시간 확장성에 대한 필요성이 사라지지 않을 것으로 예상할 수 있다. NUT에 대해 6 비트를 사용하고, forbidden_zero_bit에 대해 1 비트를 사용하고, 시간 계층화 정보에 대해 3 비트를 사용하면, 하나는 10 비트에 도달하며, 이는 8 진수 정렬로 인해 H.265에서 16 비트 NUH가 된다.
그럼에도 불구하고, 코딩 효율 관점에서 보면, 단일 옥텟의 NUH만 사용하기 위해, 트레일링 픽처(P 픽처/슬라이스/타일 그룹, B 픽처/슬라이스/타일 그룹 등을 포함할 수 있음)와 같은 가장 일반적인 NUT에 대해 바람직할 것이다. 덜 일반적으로 사용되는 NUT 또는 특정 애플리케이션용으로 설계된 NUT는 더 큰 헤더를 사용할 수 있다. 개시된 주제는 NAL 유닛 유형 클래스를 나타내는 하나 이상의 전용 NUT에 의해 표시되는 바와 같이 NAL 유닛 헤더의 제1 옥텟을 넘어서는 신택스 요소의 조건부 존재를 통해, 및/또는 확장 메커니즘을 사용하는 제1 NAL 유닛이 디코딩되기 전에 이용 가능하고 디코딩 가능한 고수준 신택스 구조의 정보를 통해 이러한 요구를 구현한다.
도 6을 참조하면, 개시된 주제에 따른 NUH(601)가 도시되어 있다. NUH(601)는 MPEG-2 전송 스트림 기반 시스템에서 시작 코드 에뮬레이션 방지를 위해 필요할 수 있는 forbidden_zero_bit(602)를 포함할 수 있다. NUH(601)는 NAL 유닛 유형 클래스 신택스 요소(603)를 더 포함할 수 있으며, 여기서는 NALU 클래스 및 길이가 4 비트로 표시된다. 묘사된 NUH(601)와 같은 특정 경우 및 특정 유형의 NAL 유닛, 특히 P 및 B 픽처/타일 그룹/타일/슬라이스/GOBs/...(이하 P/B 세그먼트)와 같이 가장 일반적일 것으로 예상되는 것에 대해, 그 값은 P/B 세그먼트 유형을 직접 나타내는 NAL 유닛 유형으로 해석될 수 있다. 시간 계층 정보(604)는 예를 들어 H.265에서 알려진 것과 유사할 수 있으며, 이 예에서 3 비트를 차지할 수 있다.
도 6은 전술한 바와 같이 forbidden_zero_bit(606) 및 시간 계층 정보(608)를 또한 포함하는 제2 NUH(605)를 포함한다. 그러나 랜덤 액세스 세그먼트 유형, 리딩 픽처 세그먼트 유형, 스위칭 픽처 세그먼트 유형, 파라미터 세트 유형, 다양한 비트스트림 마커 등과 같은 특정 다른 유형의 NAL 유닛(예를 들어, P/B 세그먼트를 전달하지 않음)의 경우, NAL 유닛 유형 클래스 신택스 요소(607)는 랜덤 액세스 세그먼트 클래스, 선행 픽처 유형 클래스, 파라미터 세트 유형 클래스, 마커 클래스 등과 같은 세그먼트 유형의 클래스를 나타낼 수 있다(609). 부가 정보로서, 예를 들어, 랜덤 액세스 세그먼트 클래스의 값은 그러한 정보를 전달하는 NUH에 하나 이상의 추가 옥텟의 존재를 트리거링할 수 있다. 이 예에서는 클래스(611)(여기서는 3 비트로 표시됨) 내의 랜덤 액세스 픽처의 NUT, 및 향후 확장 및 옥텟 정렬을 유지하기 위해 예약된 비트 수(612)를 포함하는 하나의 옥텟(610)이 추가된다(굵은 점선 윤곽선으로 표시됨).
예를 들어 H.265의 NUT를 사용하면 다음 분류가 사용될 수 있다:
클래스에 포함되지 않지만 범용 비트스트림에서 매우 일반적일 수 있으므로 직접 시그널링되는 것은 다음과 같다:
TRAIL_N, TRAIL_R, PREFIX_SEI_NUT and SUFFIX_SEI_NUT,
이것들을 나타내기 위해서는 4 개의 Class NUT가 필요하다. 또한 총 9 개의 예약되지 않거나 지정되지 않은 코드 포인트에 대해 5 개의 클래스가 있을 수 있다.
클래스 1: 리딩 픽처
· RADL_N, RADL_R,
클래스 2: 스위칭 픽처
· TSA_N, TSA_R, STSA_N, STSA_R
클래스 3: 랜덤 액세스 픽처
· BLA_W_LP, BLA_W_RADL, BLA_N_LP, IDR_W_RADL, IDR_N_LP, CRA_NUT
클래스 4: 파라미터 세트
· (DPS_NUT), VPS_NUT, SPS_NUT, PPS_NUT
클래스 5: 마커
· AUD_NUT, EOS_NUT, EOB_NUT, FD_NUT.
위에 개시된 바와 같이 또는 유사한 형태로 클래스 기반 NUT 시그널링을 도입하면 덜 일반적인 NAL 유닛 유형 또는 일반적으로 큰 픽처와 관련된 NAL 유닛 유형에 대한 추가 시그널링 오버헤드를 허용하여(코딩된 픽처 크기와 관련하여 추가 오버헤드가 덜 발생한다), NUH의 NUT 필드를 4 비트로 줄이면서도 외부 사용이나 향후 확장을 위해 일부 번호 지정 공간을 보존할 수 있다.
특정 환경에서 클래스는 NAL 유닛 헤더 외부의 메커니즘에 의해 설정될 수도 있다. 예를 들어, MANE에서 파라미터 세트 활성화 시퀀스를 따르는 것이 부담스럽지 않은 환경 및 산업에서 클래스 설정(더 정확하게는 여기서는 추가 옥텟 및 신택스의 존재)이 파라미터 세트 정보를 통해 트리거될 수 있다. 이것은 비디오 비트스트림(디코더 파라미터 세트로 알려진 개념)에서 항상 활성화되는 파라미터 세트와 관련하여 특히 관련될 수 있다. 프로파일 또는 프로파일 생성에 대한 신택스 분석 및/또는 컨텍스트 종속성(H.265에서 "프로파일 공간"으로 알려진 개념)도 허용될 수 있다. 오류 복원성이 문제가 되지 않는 다른 환경에서는 NAL 유닛 헤더 예측도 가능하다. 이 경우 제1 NUH의 클래스 ID는 제1 NUH 다음의 제2 NUH에 대한 신택스 분석 종속성으로 사용될 수 있다.
동일하거나 다른 실시예에서, 특정 NAL 유닛 유형 클래스는 추가 옥텟에서 NAL 유닛 유형의 존재뿐만 아니라 동일하거나 또 다른 옥텟에서 다른 정보를 나타내기 위해 사용될 수 있다. 예를 들어, 특정 애플리케이션에서 공간/SNR 계층 ID, 멀티뷰 계층 ID, 타일 ID(예를 들어, 픽처에서 디코딩 순서로 n 번째 타일을 나타내는 정수). 픽처), 컴포넌트 유형 ID(예를 들어, 색상 평면의 표시기, 포인트 클라우드 코딩의 속성 등), 픽처 ID(예를 들어, NAL 유닛 유형에서 픽처 순서 카운트 최하위 비트(Picture Order Count Least Significant Bit, POC LSD)를 나타내는 8 비트 등을 포함하는 것이 유용할 수 있다.
NUH(613)를 고려한다. 제시된 예에서 추가 정보가 있는 후미 픽처를 나타낼 수 있는 NAL 유닛 유형 클래스 신택스 요소(614)가 포함된다. 이는 차례로 NAL 유닛 신택스 요소의 유형을 포함하는 제1 추가 옥텟의 존재를 트리거링할 수 있다(615). 이 예에서, 이 NAL 유닛 유형 신택스 요소의 크기는 5 비트로 선택되며, 각 비트는 "A"에서 "E"까지의 문자로 식별되고, 여기서 제1 비트 "A"는 NAL 유닛이 TRAL_N 또는 TRAIL_R인지를 나타낼 수 있고, 나머지 4 비트는 계층 ID "B", 컴포넌트 ID "C", 타일 "D", 그리고 픽처 ID "E"를 실어 전달하는 추가 신택스 요소의 존재를 플래그로 나타낼 수 있다. 모든 추가 예시적인 신택스 요소는 주어진 고정 길이의 이진 코딩된 정수이며, 비트 세트에 의해 표시되는 추가 옥텟으로 어셈블될 수 있다. 이 예에서, 제2 옥텟(616)의 나머지는 1로 설정된 계층 ID 존재 비트가 표시된 바와 같이(618) layer_id의 최상위 비트 3 개를 포함하고, 제3 옥텟의 처음 3 비트는 나머지 3 비트의 layer_id(617)를 포함한다. 컴포넌트 ID와 관련된 비트를 가정하고, 타일 "ID"는 0으로 설정되므로 이러한 필드가 없음을 나타낸다. 마지막으로, 비트 "E"는 이 예에서 1로 설정될 수 있으며, 이는 4 비트 픽처 ID(620)를 나타낼 수 있(619)고; 제3 옥텟(621)의 나머지는 패딩을 위해 0으로 설정될 수 있다.
추가 옥텟의 레이아웃은 클래스마다 다를 수 있다. 예를 들어, 일부 클래스의 경우 추가 옥텟의 NUT에 대한 번호 지정 공간은 (5보다 많거나 적은 비트를 필요로 하는) 32보다 크거나 작게 선택될 수 있다. 특정 클래스에서는 NUH(613)와 비교할 때 표시기 비트가 필요하지 않거나 더 많거나 적을 수 있다. NAL 유닛 신택스 요소의 유형을 넘어선 특정 추가 필드는 항상 존재할 수 있다.
이 아키텍처를 사용하면 3 옥텟보다 큰 NUH를 설계하여 시작 코드 에뮬레이션 문제를 일으킬 수 있다. 이를 방지하기 위해 모든 n 번째 옥텟, 예를 들어 제3 옥텟으로 시작하는 모든 네 번째 옥텟은 특정 비트를 설정하거나 지워야 하고 다른 NUH 필드는 그에 따라 뒤로 이동하여 시작 코드 에뮬레이션을 방지해야 한다.
클래스 기반 NUH를 위한 다른 아키텍처도 가능하다. 예를 들어 특정 필드는 고정된 위치에 있어야 한다. 비디오 코딩 기술 또는 표준이 그렇지 않으면 매우 유연한 NUH를 허용할 때 단점이 있을 수 있지만 MANE 구현을 단순화할 수 있다.
도 7은 실시예에 따른 예시적인 프로세스를 도시하는 흐름도이다. 도 7에 도시된 바와 같이, 프로세스는 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하는 단계(블록 710); NALU 헤더 내의 NALU 유형을 디코딩하는 단계(블록 720); 및 픽처를 재구성하는 단계(블록 730)를 포함하며, 상기 픽처의 유형은 NALU 클래스 유형 및 NALU 유형의 조합에 의해 식별된다.
도 8을 참조하면, NUH(613)와 유사한 예시적인 NAL 유닛 헤더의 신택스 다이어그램(801)이 도시되어 있다. 개시된 주제는 다른 구조의 NAL 유닛 헤더, 예를 들어 H.264, H.265, VVC의 NAL 유닛 헤더 또는 예시적인 NUH(605)와 동일하게 사용될 수 있다. NAL 유닛 헤더에는 신택스 요소 picture_id(802)가 포함될 수 있다. 포함은 비트 "E"(803)의 값에 조건부일 수 있으며, 어떤 존재는 특정 NAL 유닛 클래스(805)에 대한 조건부(804)일 수 있다. 해당 picture_id는 비디오 인코더 및 디코더뿐만 아니라 MANE에서도 쉽게 처리할 수 있는 형식일 수 있다. 제한이 아닌 예로서, 신택스 요소 picture_id(802)는 5 비트 부호 없는 정수로 표시된다. 5 비트 값은 32 개 값의 번호 지정 공간을 제공하므로 32 개 픽처 중 하나를 고유하게 식별할 수 있다. 예를 들어, picture_id의 값이 인코딩되는 각 픽처에 대해 1씩 증가하고 32에 도달할 때 0으로 랩 어라운드하면, NAL 유닛과 픽처와의 연결이 오류가 발생하기 쉬운 환경에서 중단되기 전에 적어도 32 개 픽처에 속하는 NAL 유닛이 손실되어야 한다.
동일하거나 다른 실시예에서, 신택스 요소 picture_id(802)의 크기는 5 비트보다 크거나 작을 수 있다. 대부분의 경우, 신택스 요소가 클수록 NAL 유닛과 픽처의 연관성이 더 높은 오류 복원력을 가질 수 있지만 코딩 효율성이 저하된다.
동일하거나 다른 실시예에서, picture_id(802)의 크기는 NAL 유닛 헤더의 다른 신택스 요소에 종속될 수 있다. 예를 들어, 비디오 코딩 기술 또는 표준은 전술한 바와 같이 NAL 유닛 유형 또는 NAL 유닛 유형 클래스에 따라 picture_id의 크기를 만들 수 있다. 예를 들어, 특정 NAL 유닛 유형, 예를 들어 1과 같은 NAL 유닛 유형은 picture_id 크기가 8비트인 코딩된 타일 그룹, 타일 또는 슬라이스를 식별할 수 있는 반면, 2와 동일한 NAL 유닛 유형은 picture_id 크기가 5비트인 타일 그룹, 타일 또는 슬라이스를 식별할 수 있다.
동일하거나 다른 실시예에서, picture_id 신택스 요소의 크기는 다른 상위 레벨 신택스 요소, 예를 들어 파라미터 세트에 의해 결정될 수 있다. 예를 들어, 시퀀스 파라미터 세트는 NAL 유닛이 속하는 코딩된 비디오 시퀀스에 속하는 NAL 유닛 헤더에서 picture_id(802) 신택스 요소의 크기를 나타내는 신택스 요소를 포함할 수 있다. 이러한 메커니즘은 코딩된 비디오 시퀀스의 NAL 유닛과 특정 시나리오에서 바람직하지 않을 수 있는 파라미터 세트 사이에 파싱 종속성을 생성할 수 있다. 또한, MANE은 해당 파라미터 세트를 신택스 분석할 뿐만 아니라 해당 콘텐츠의 적어도 일부를 상태 형태로 유지해야 할 수도 있다. 이는 많은 애플리케이션에서 바람직하지 않을 수 있지만 코딩 효율성 및 코드 포인트 사용 관점에서 이점을 가질 수 있으며 MANE이 파라미터 세트를 신택스 분석하고 해석해야 할 뿐만 아니라 타일 그룹, 타일 또는 슬라이스 헤더와 같은 복잡한 가변 길이 신택스 구조도 필요로 하는 현재 상황보다 여전히 바람직하다.
위에서, picture_id(802)의 값을 설정하는 하나의 옵션은 코딩된 픽처의 라운드 로빈 카운터로 설명되었다. 값을 설정하는 고급 형식이 유리할 수 있다. 예를 들어, 동일하거나 다른 실시예에서, picture_id(802) 신택스 요소는 인코더 및 디코더에 의해 유지되는 바와 같이 픽처 순서 카운트(Picture Order Count, POC) 값의 n 개의 최하위 비트에 의해 채워질 수 있다. 그 경우에, N은 picture_id(802) 신택스 요소의 크기를 결정하기 위해 위에 설명된 임의의 메커니즘 또는 임의의 다른 적절한 메커니즘에 의해 결정될 수 있다. POC의 최하위 비트를 사용하면 특정 이점이 있을 수 있다. 예를 들어, 고정 프레임 레이트 플래그에 의해 표시된 바와 같이 픽처/프레임 레이트가 고정되고 인코더가 픽처를 건너뛰지 않는 것으로 알려진 시나리오 및 예를 들어 코딩 구조가 알려진 경우, 코딩 구조 SEI 메시지 또는 대역 외 수단의 수신, POC의 사용은 디코딩 순서 정보에 추가하여 암시적 타이밍 정보를 제공할 수 있다.
제한이 아닌 예로서 H.265에서 POC가 어떻게 사용되는지 요약하면 다음과 같다. 비디오 코딩 기술에 의해 생성되고 참조 픽처 선택 및 참조 픽처 목록 관리와 같은 내부 목적을 위해 이러한 비디오 코딩 기술에서 사용되는 픽처 순서 수를 기반으로 고유한 picture_id를 생성하거나 사용하는 다른 형태도 동일하게 사용될 수 있으며 POC를 picture_id로 사용하는 데 포함되도록 되어 있다.
H.265에서 각 코딩된 픽처는 PicOrderCntVal로 표시된 픽처 순서 계수 변수와 연관된다. 픽처 순서 카운트는 병합 모드 및 모션 벡터 예측에서 모션 파라미터를 도출하고, 디코더 적합성 검사를 위해 픽처를 식별하는 데 사용될 수 있다. 지정된 코딩된 비디오 시퀀스(Coded Video Sequence, CVS)에서 모든 코딩된 픽처에 대한 PicOrderCntVal 값은 고유하다. 또한, 픽처 순서 카운트는 CVS에 포함된 (예를 들어, 디스플레이를 위해 디코딩된 픽처 버퍼로부터) 픽처의 상대적인 출력 순서를 제공한다(즉, 픽처 순서 계수가 낮은 픽처가 픽처 순서 계수가 높은 픽처보다 먼저 출력된다). ITU-T H.265에서 PicOrderCntVal의 값은 -231 내지 231-1(포함) 범위에 있다. 시퀀스 파라미터 세트 신택스에는 픽처 순서 수에 대한 디코딩 프로세스에서 사용되는 변수 MaxPicOrderCntLsb의 값을 지정하는 신택스 요소 log2_max_pic_order_cnt_lsb_minus4가 다음과 같이 포함된다:
MaxPicOrderCntLsb = 2( log2_max_pic_order_cnt_lsb_minus4+4)
여기서 log2_max_pic_order_cnt_lsb_minus4의 값은 0에서 12까지의 범위에 있어야 한다.
ITU-T H.265는 PicOrderCntVal이 PicOrderCntMsb + slice_pic_order_cnt_lsb와 같은 경우를 제공한다. slice_pic_order_cnt_lsb는 해당 표준의 섹션 8.3.1에 따라 파생된다.
예를 들어 H.265를 포함하는 특정 비디오 코딩 표준 및 기술에서, POC의 값은 슬라이스 헤더와 같은 특정 신택스 요소에서 포함되거나 파생될 수 있다. 동일 또는 다른 실시예에서, POC 또는 그 파생물(예를 들어, POC의 최하위 비트)이 NAL 유닛 헤더에 포함되는 경우, 동일한 정보가 동일한 NAL 유닛에 두 번 제공될 수 있으므로 특정 중복성이 있을 수 있다. 비디오 코딩 기술 또는 표준은 다음 옵션 중 적어도 하나에 의해 이 중복성을 처리할 수 있다: 개시된 주제에 따라 슬라이스 헤더 및 NAL 유닛 헤더 모두에 대한 변경의 양을 최소화하기 위해 추가된 중복을 통해 코딩 패널티를 수락하거나, 또는 슬라이스 헤더에서 중복 정보를 제거한다.
picture_id의 값을 설정하는 다른 예는 예를 들어 해시 함수의 사용을 포함하며, 해시는 샘플 값 또는 POC 값과 같이, 픽처 간에 변경될 가능성이 있는 값과 함께 활성 파라미터 세트의 특정 요소와 같은 정보를 식별하는 픽처에 대해 계산된다. 이러한 메커니즘은 NAL 유닛을 코딩된 픽처와 연관시키는 능력 이상의 독립적으로 유용한 부가 정보를 전달하지 않을 수 있지만, 통계적으로 POC 증가에 비해 해시 함수가 사용 중일 때 더 많은 비트가 변경되므로 비트 오류에 대한 더 나은 복원력의 이점을 가질 수 있다.
인코더는 당업자에게 알려진 기존의 NAL 유닛 헤더 신택스를 작성하는 것과 유사한 방식으로 전술한 바와 같이 채워진 신택스 요소 picture_id를 포함하는 NAL 유닛 헤더를 작성할 수 있다.
디코더 또는 MANE은 또한 코딩된 비디오 비트스트림으로부터 NAL 유닛 헤더(더 정확하게는 NAL 유닛 헤더를 구성하는 신택스 요소)를 picture_id의 유무에 관계없이 당업자에게 알려진 방식으로 파싱할 수 있다. 그러나 어떤 경우에는 픽처 ID가 상태 정보를 요구하지 않고 액세스 가능한 엔트로피 코딩된 형식(예를 들어, 고정 길이, 이진 코드)으로 코딩된다는 점에 유의해야 한다. 지금까지, 개시된 주제에 따라 NAL 유닛 헤더를 파싱하는 것은 신택스 요소 picture_id 자체의 실제 존재를 넘어서 디코더 또는 MANE에 대한 추가적인 부담스러운 동작을 포함하지 않을 수 있다.
그렇지만, 개시된 주제에 따르면, 디코더 또는 MANE은 개시된 주제 없이 요구되는 동작과 비교할 때 적은 노력으로 NAL 유닛을 코딩된 픽처에 연관시킬 수 있다. 도 9를 참조하면, 디코더 또는 MANE(이후 디코더)는 제1 신택스 요소 picture_id를 포함하는 제1 NAL 유닛 헤더를 파싱 및 디코딩(901)할 수 있다. 이 제1 NAL 유닛 헤더는 불변으로서, 차례로 제1 코딩된 픽처에 속하는 제1 NAL 유닛에 속한다.
디코더는 제2 신택스 요소 picture_id를 포함하는 제2 NAL 유닛 헤더(902)를 추가로 파싱 및 디코딩할 수 있으며, 여기서 제2 NAL 유닛 헤더는 제2 NAL 유닛에 속한다.
디코더는 제2 picture_id(도시되지 않음)의 값에 대해 제1 picture_id의 값을 확인할 수 있다. 이러한 값이 동일하면 두 NAL 유닛이 동일한 코딩된 픽처에 속할 가능성이 높다. 가능성은 주로 인코더가 picture_id의 값을 채우는 데 사용하는 메커니즘과 신택스 요소의 크기에 의해 영향을 받는다. 두 요소 모두 위에서 이미 논의되었다.
디코더는 제3 신택스 요소 picture_id를 포함하는 제3 NAL 유닛 헤더(903)를 더 파싱 및 디코딩할 수 있으며, 여기서 제3 NAL 유닛 헤더는 제3 NAL 유닛에 속한다.
다시 한 번, 디코더는 예를 들어, 제1 picture_id의 값을 제3 picture_id에 대해 확인할 수 있다(904). 이러한 값이 동일하다면(905), 제3 NAL 유닛이 제1 NAL 유닛과 동일한 코딩된 픽처에 속할 가능성이 높다. 그러나 두 값이 같지 않다면(906), 제3 NAL 유닛이 제1 NAL 유닛과 동일한 픽처에 속하지 않는 것이 확실하다.
디코더 또는 MANE은 개시된 주제에 따라 획득된 정보, 특히 picture_id 및 NAL 유닛이 임의의 적절한 방식으로 다른 선행 NAL 유닛과 동일한 픽처에 속하는지를 이용할 수 있다. 예를 들어 MANE은 picture_id에서 POC 최하위 비트 값을 추적하고 코딩 구조에 대한 사전 지식과 일치시킬 수 있다. MANE이 코딩된 비디오 시퀀스의 NAL 유닛을 처리해야 하는 경우, 예를 들어 나가는 링크의 혼잡으로 인해 코딩 구조의 위치에 대해 picture_id 값을 일치시킬 수 있다. 폐기에 적합한 픽처를 식별하면, 그 단일 픽처의 모든 NAL 유닛을 제거할 수 있다(그러나 NAL 유닛 헤더의 다른 필드에 동일한 정보를 전달할 수 있는 다른 일회용 픽처의 NAL 유닛은 반드시 필요하지는 않다). 마찬가지로 CPU 주기 고갈을 관찰하는 디코더도 비슷한 조치를 취할 수 있다. 어느 경우이든, 일회용 픽처가 하나만 제거되었기 때문에 사용자 경험에 미치는 부정적인 영향이 최소화될 수 있으며, NAL 유닛 헤더에 고정 길이 코드 워드만 포함하는 작업이 가볍기 때문에 MANE 또는 디코더의 CPU 로드도 최소화될 수 있다.
일 실시예에 따르면, 특정 환경에서, 코딩된 비디오 비트스트림은 특정 구성 요소 또는 특정 구성 요소 세트(이후부터)가 특정 NAL 유닛에서 분리될 수 있도록 조정될 수 있다. 도 10을 참조하면, 종래의 이미지 및 비디오 코딩 표준에서, Y(1002) 성분, Cr(1003) 성분, Cb(1004) 성분과 같은 성분 세트와 관련된 정보는 NAL 유닛 헤더(1005) 및 기타 헤더 정보(1006)와 같은 모든 성분에 속하는 정보와 함께 동일한 NAL 유닛(1001)에서 코딩된다. 압축 효율을 얻기 위해 컴포넌트 신호의 가능한 유사성을 활용하기 위해 특정 기술 및 예측 메커니즘이 사용될 수 있다. 예를 들어, Y Cr Cb 신호가 슬라이스, 타일 등을 포함하는 동일한 NAL 유닛으로 코딩될 때, 세 가지 구성 요소가 포함된 경우에도 "위치" 정보(예를 들어, 재구성된 픽처에서 슬라이스/타일의 제1 CU의 위치)를 두 번 이상 코딩할 필요가 없다. 또한, 일부 경우에 색차 모션 벡터, 블록 구조 등과 같은 특정 색차 관련 정보가 휘도 정보로부터 예측되는 훨씬 더 정교한 예측 메커니즘이 많이 있을 수 있다.
그렇지만, 특정 환경에서, 단일 NAL 유닛에서 타일 또는 슬라이스의 모든 성분을 코딩하는 것과 비교할 때 예측의 부족으로 인한 코딩 효율성의 손실이 있을 수 있음을 의미하더라도, 특정 구성 요소 및 특정 타일 또는 슬라이스, 또는 특정 타일 또는 슬라이스의 특정 구성 요소 세트에 관한 정보를 자신의 NAL 유닛으로 코딩하는 것이 유익할 수 있다.
이러한 NAL 유닛은 동일하거나 다른 실시예에서 적절하게 마킹될 수 있다. 관련 마킹 정보를 NAL 유닛 헤더, 슬라이스 헤더, 타일 헤더, 타일 그룹 헤더, NAL 선행 또는 후행 유닛과 관련된 SEI 메시지 또는 기타 적절한 헤더 또는 NAL 유닛과 관련된 비 헤더 정보에 배치하는 것을 포함하여 NAL 유닛을 마킹하는 많은 옵션이 있다. 유리하게는 마킹은 다음과 같이 쉽게 액세스할 수 있는 형태일 수 있다: 고정 길이 이진 코드를 사용하여 NAL 유닛 헤더에 코딩된다. 제한이 아닌 예로서, 이러한 NAL 유닛 헤더 기반 마킹은 이후에 가정된다.
제1 예에서 Y Cr Cb 색상 모델을 사용한 전통적인 구성 요소 코딩을 고려하며, 여기서는 휘도 성분 Y에서 색 성분(Cr 및 Cb)을 잘라내어 흑백 신호를 생성할 수 있기를 원한다. H.264 또는 H.265와 같은 비디오 코딩 방식에서, 이렇게 하는 것은 Y, Cr 및 Cb 정보가 서로 예측될 수 있고 매크로 블록/CU 레벨에서 인터리빙된 방식으로 코딩되기 때문에 전체 트랜스 코딩 단계가 필요하다. 그렇지만, 동일하거나 다른 실시예에서, 비트스트림은 경우에 따라 공간 영역에서 슬라이스 또는 타일 또는 타일 그룹 또는 다른 서브-픽처 분할이 2 개의 NAL 유닛으로 분할되도록 구조화된다. 도 10을 계속 참조하면, 이들 2 개의 NAL 유닛 중 제1 NAL 유닛(1010)은 Y 정보의 존재를 나타내는 NAL 유닛 헤더(1011), 다른 헤더 정보(1012) 및 휘도(Y)-정보(1013)를 포함할 수 있다. 제2 NAL 유닛(1020)은 휘도 성분과는 달리 색 성분이 개별적으로 사용되지 않을 수 있다는 이해를 바탕으로 두 색차 성분(Cr(1023) 및 Cb(1024))에 관한 정보를 포함할 수 있다. 이러한 두 성분은 구성 요소 그룹을 형성할 수 있고, 성분 그룹은 각 애플리케이션의 관점에서 이 두 성분 그룹을 분리하는 것이 바람직하지 않을 정도로 세만틱이 너무 가깝운 성분의 수집일 수 있다. NAL 유닛(1020)은 또한 CR 및 CB 정보 모두의 존재를 나타내는 NAL 유닛 헤더(1021) 및 다른 헤더 정보(1022)를 포함할 수 있다. 확립된 관행에 따르면 제1 및 제2 NAL 유닛은 대체로 독립적으로 디코딩할 수 있어야 하고 서로에 대한 신택스 분석 종속성을 포함해서는 안 되므로 Y 및 Cr Cb 정보를 두 개의 NAL 유닛으로 분할할 때 일정한 양의 코딩 비효율성이 예상될 수 있다. 구체적으로, 휘도에서 색차 성분 정보까지의 예측(예를 들어, 모션 벡터 예측, 블록 모양 예측, 인트라 방향 예측 등)이 금지될 수 있어 Cr 및 Cb 정보에 대해 더 높은 필수 비트율이 발생할 수 있다. 또한, 다른 헤더 정보 (1012) 및 (1022)는 각각 중복 정보를 포함할 수 있다. 마지막으로, 각 NAL 유닛은 각각 자신의 NAL 유닛 헤더(1011) 및 (1021)를 필요로 하며, 이들 두 헤더는 또한 결합된 NAL 유닛(1001)의 단일 헤더(1005)보다 더 많은 비트를 취할 것으로 예상될 수 있다. 그러나 특정 애플리케이션에서는 전체 트랜스 코딩 없이 특정 성분 또는 성분 그룹을 비트스트림에서 제거하거나 그 성분 또는 성분 그룹 관련 데이터(디코더가 수신한 경우)의 디코딩을 쉽게 피할 수 있다는 이점이 이러한 코딩 효율 페널티를 능가할 수 있다.
제2 예에서 밝기와 색상 이상의 픽셀 속성을 지원하는 이미지 또는 비디오 코딩 기술을 가정한다. 이미지 또는 비디오 코딩 기술은 광범위하게 해석되어야 하며 입체, 멀티뷰, 포인트 클라우드, 라이트 필드 등과 같은 기술을 포함할 수 있다. 초기 예로, YCrCb, RGB 또는 유사한 색상 형식으로 코딩된 샘플 데이터 외에 알파 채널이라고도 하는 투명도 정보도 지원되는 특정 이미지 및 비디오 코덱이 지원되었다. 알파 채널은 샘플 또는 샘플 그룹에 대해 비트스트림에 코딩된 투명도 값(알파)을 가짐으로써 나타낼 수 있다. 디코더는 일반 샘플 데이터와 마찬가지로 알파 맵을 재구성할 수 있다. 렌더러는 알파 맵을 사용하여 재구성된 샘플 데이터와 배경 정보(있는 경우)의 무게를 적절하게 측정하여 투명성의 환상을 생성할 수 있다.
투명도는 색상과 밝기를 넘어서는 샘플의 가능한 많은 속성 중 하나이다. 예를 들어, 특정 코딩 기술, 특히 특정 360도 및 포인트 클라우드 코딩 기술은 밝기/색상 및 아마도 투명성 외에도 반사도 속성을 포함하도록 샘플(또는 포인트 클라우드 코딩의 포인트)을 구상한다. 또한 포인트 클라우드 코딩에서 주어진 포인트는 보는 방향(공간의 시점)에 따라 서로 다른 속성 값(밝기, 색상, 투명도, 반사도, 표면 법선, 곡률 등)과 연관될 수 있다. 예를 들어, 포인트 클라우드가 한 방향으로 투명하고 다른 방향으로 불투명하고 반사되는 단방향 미러를 나타낼 때, 투명도와 반사도 속성은 시점에 따라 근본적으로 다를 수 있다. 단방향 거울은 또한 다소 착색될 수 있으며, 이는 거울 표면에 있는 지점으로부터의 방향과 거리에 따라 다른 색상 값으로 이어질 수 있다. 다른 예로서, 뷰-의존 색상을 사용하여 다양한 관점에서 3D 장면/물체의 사실적인 렌더링을 가능하게 할 수 있으며, 이는 가상 현실 및 증강 현실과 같은 새로운 애플리케이션에 유용할 수 있다. 추가 속성에는 사람의 눈에는 보이지 않지만 특정 응용 분야와 관련된 파장이 포함될 수 있다. 예를 들어, 특정 얼굴 인식 센서는 가시광선이 낮은 조건에서 적외선 신호를 사용한다. 더 고급 속성은 편광과 관련이 있을 수 있다.
위의 긴 속성 목록을 염두에 두고, 보기 각도, 조명 조건, 또는 여기서 열거되지 않은 다른 이유로 인해 적용할 수 없는 애플리케이션에 필요하지 않은 고급 신호의 비트스트림을 잘라 내기 위한 요구 사항이 존재한다.
도 11을 참조하면, Y 및 Y 정보(1103)를 나타내는 NAL 유닛 헤더(1102)를 포함하는 제1 NAL 유닛(1101)이 도시되어 있다. 또한, 색차(Cr Cb) 정보를 나타내는 NAL 유닛 헤더(1111)를 포함하는 제2 NAL 유닛(1110)이 있다. 제3 NAL 유닛(1120)은 투명성 정보(알파 채널)(1121) 및 관련 투명성 정보(1122)를 나타내는 헤더를 포함한다. 마지막으로, 반사성 정보를 나타내는 NAL 유닛 헤더(1131) 및 반사성 정보(1132)를 포함하는 제4 NAL(1130) 유닛도 있다. 4 개의 NAL 유닛은 슬라이스, 타일, 타일 그룹 등에 의해 표현될 수 있는 픽처의 동일한 공간 영역 또는 상이한 영역에 속할 수 있다. 그렇지만, 후자의 경우 4 개의 각각의 NAL 유닛(1101, 1110, 1120, 1130)에 샘플 관련 YCrCb, 투명도, 반사도 정보가 포함된 샘플이 하나 이상 있다고 가정한다. 이 경우 코딩 없이 특정 작업이 가능해질 수 있다.
간단히 도 12를 참조하면, 3 개의 NAL 유닛 모두 및 아마도 더 많은 유사한 유형, 즉 YCrCb NAL 유닛, 투명성 NAL 유닛 및 반사율 NAL 유닛을 포함하는 비트스트림을 포함하는 데이터 소스(1201)를 포함하는 시스템을 고려한다. 이러한 NAL 유닛은 서버/미디어 인식 네트워크 요소(이후 MAE)(1203)로 포워딩된다(1202). 화살표(1202)는 세 가지 정보 유형 모두에 필요한 높은 비트레이트를 강조하기 위해 특히 굵은 선으로 표시된다. 3 개의 클라이언트가 동일한 미디어 비트스트림을 요청했지만 디코딩 및/또는 렌더링 기능 및/또는 연결이 다르다. 정교한 클라이언트(1205)는 세 가지 정보 유형, YCrCb, 투명성 및 반사성 모두를 적절하게 수신, 디코딩 및 렌더링할 수 있다. 따라서 MANE(1203)은 소스(1201)와 MANE(1203) 간의 연결과 실질적으로 유사한 네트워크 용량(1204)을 요구하는 클라이언트(1205)에 3 개의 NAL 유닛 모두를 전달할 수 있다. 여기에서 랩톱으로 표시되는 제2 클라이언트(1207)가 더 있을 수 있다. 그 클라이언트는 반사성 정보의 디코딩 또는 전송을 허용하지 않는 다소 적은 디코딩 능력 및/또는 연결성을 가질 수 있거나, 사용자가 예를 들어 반사성 정보에 관심이 없도록 선택할 수 있다. 제한 요소가 무엇이든 간에, 반사성 정보를 해당 클라이언트에게 전달(1206)하는 것은 무의미하다. 따라서, MANE은 비트스트림으로부터 반사율 관련 NAL 유닛을 제거할 수 있으며, 그 결과 비트 레이트가 더 적은 비트스트림이 생성된다. 마지막으로 여기에 스마트 폰으로 표시되는 제3 클라이언트(1209)가 있을 수 있다. 그 클라이언트는 투명성과 반사성 정보 모두에 대한 디코딩 능력 및/또는 연결성이 부족할 수 있으며, 그리고/또는 그 사용은 이들 중 하나 또는 둘 모두에 관심이 없음을 표시했을 수 있다. 따라서, MANE(1203)은 YCrCb 정보를 전달하는 NAL 유닛만을 제3 클라이언트(1209)로 포워딩(1208)하기로 결정할 수 있다.
모든 속성의 정보가 동일한 NAL 유닛에서 인코딩될 수 있는 전통적인 코딩 기술을 가정하면, MANE(1203)은 각 클라이언트(1205, 1207, 1209)에 관련된 정보를 추출하기 위해 완전한 트랜스 코딩 단계를 요구할 수 있다. 이렇게 하면 계산 비용이 많이들 수 있으므로 MANE(1203)의 비용이 증가한다. 그러나 NAL 유닛 필터링은 파라미터 세트, SEI 메시지, 슬라이스/타일/타일 그룹 헤더 등과 같은 상위 수준 신택스에서 쉽게 신택스 분석할 수 있고 쉽게 액세스할 수 있는 다른 정보의 조합으로 또는 독점적으로 NAL 유닛 헤더를 기반으로 할 수 있으므로 경량 프로세스가 될 수 있다.
MANE의 관점에서 볼 때 가장 좋은 솔루션은 비트스트림 프루닝(bitstream pruning)에 필요한 모든 관련 정보를 NAL 유닛 헤더에서 사용할 수 있도록 하는 것이며 그것을 지금까지 가정하였다. NAL 유닛 자체에 의해 실려 전달되는 정보에서 고정 또는 가변 길이 코드 워드의 디코딩을 요구하는 것이 다소 더 지루할 수 있는데, NAL 유닛 헤더 바로 뒤의 NAL 유닛의 맨 처음에 유리하다("추가 헤더 정보", 예를 들어 도 10의 (1002) 또는 (1003)), 더 유리한 하나의 시나리오에서, "추가 헤더 정보"는 NAL 유닛에 의해 실려 전달되는 정보의 유형을 결정하는 데 필요한 범위까지, 파라미터 세트 NAL 유닛과 같은 다른 NAL 유닛으로부터 얻은 컨텍스트 없이 해석 가능할 수 있다. 이 경우, MANE에 대한 추가 복잡도는 가변 길이 코드 등을 포함할 수 있는 다른 헤더 정보의 파싱 정보로 제한될 수 있으며, 따라서 고정 길이 NAL 유닛 헤더 코드 포인트보다 계산적으로 더 비쌀 수 있다. NAL 유닛에 의해 전달되는 정보 유형의 결정은 파라미터 세트 등의 컨텍스트에서 다른 헤더 정보(1002, 1003)의 해석을 필요로 한다는 것이 훨씬 더 문제가 될 수 있다. 이 경우 MANE은 파라미터 세트의 활성화와 다른 특정 작업을 추적해야 하는데, 이는 실제로는 거의 모든 상위 계층 신택스를 디코딩하는 것과 같다. 전체 트랜스 코딩 단계보다 여전히 쉽지만 파라미터 세트 기반 컨텍스트 감지 디코딩은 대부분의 MANE 아키텍처에서 지나치게 지루할 수 있다.
NAL 유닛 헤더에서 컴포넌트 또는 컴포넌트 그룹 유형을 나타내는 옵션이 제한으로서가 아니라 예제로서 설명된다. 제시된 옵션은 H.265의 NAL 유닛 헤더 디자인의 기본 신택스 레이아웃 및 아키텍처를 반영한다. 다른 코딩 기술 및 표준에서 사용될 수 있는 주어진 NAL 유닛 헤더 아키텍처에 더 적합할 수 있는 다른 옵션이 있을 수 있다.
도 13을 참조하면, 컴포넌트 또는 컴포넌트 그룹은 예를 들어 NAL 유닛(1301)의 NAL 유닛 헤더(1302)에서 다음과 같이 표시될 수 있다:
동일하거나 다른 실시예에서, 제1 옵션에서, 컴포넌트 또는 컴포넌트 그룹은 NAL 유닛 유형(1304)의 번호 지정 공간을 사용하여 NAL 유닛 헤더(1303)에 표시될 수 있다. 구체적으로, NAL 유닛 유형은 특정 컴포넌트 또는 컴포넌트 그룹만을 실어 전달하는 코딩된 슬라이스, 타일, 타일 그룹 등을 나타내는 코드 워드를 포함할 수 있다. 암시적으로, 컴포넌트 그룹 Y Cr Cb에 대해, NAL 유닛 유형의 주어진 값에 의해 표시된 슬라이스 유형이 존재한다는 점에서, 그러한 시그널링의 서브 세트가 H.265에 존재한다. 그렇지만, 다른 컴포넌트 또는 컴포넌트 유형에 대해 (NAL 유닛 유형에 대한 고정 길이 코드 워드로 인해) 고정 번호 지정 공간에서 할당되지 않은 코드포인트에 의해 가능한 범위까지 더 많은 코드 워드가 할당될 수 있다. 비디오 코딩 표준 또는 기술은 어떤 컴포넌트 또는 컴포넌트 그룹이 표준의 수명 동안 비트스트림 프루닝 및 기타 애플리케이션과 관련될 수 있는지에 관한 표준 작성 당시 표준 설정위원회의 이해를 기반으로 컴포넌트 유형에 사용 가능한 하나 이상을 할당할 수 있다. 이 옵션을 사용하면 NAL 유닛 헤더의 신택스 변경이 필요하지 않다.
제2 옵션에서, 특정 프로파일에서만 의미 있는 H.265 스타일 NAL 유닛 헤더(1305)의 특정 기존 필드는 컴포넌트 유형을 나타내기 위해 재할당될 수 있다. 도 9에서는 이전에 계층 ID 필드(1306)에서 사용했던 비트가 컴포넌트 타입 필드로 사용되지만 NAL 유닛 헤더의 다른 필드도 재할당될 수 있다. 이렇게 하면 기술적으로 바람직하지 않은 신택스 분석 및 프로필에 대한 컨텍스트 종속성이 생성될 수 있으며, 이는 파라미터 세트에서 코딩될 수 있다. 그러나 대부분의 다른 파라미터 세트 값과는 달리 프로파일 ID는 기능 교환과 같은 메커니즘을 통해 MANE에 선험적으로 사용할 수 있는 것으로 널리 이해된다. 따라서 이러한 프로필 종속성은 파라미터 세트의 다른 필드에 대한 신택스 분석 및 컨텍스트 종속성만큼 문제가 되지 않을 수 있다. 그렇지만, 제2 옵션은 예를 들어 NAL 유닛 헤더 코딩된 컴포넌트 유형에 기초한 비트스트림 프루닝과 함께 계층화 또는 멀티뷰 코딩의 동시 사용을 배제할 수 있다.
제3 옵션에서, NAL 유닛 헤더(1307)에 비트를 추가하는 대신 전술한 모든 단점을 피할 수 있다. 구체적으로, 필드 컴포넌트 유형(908)은 NAL 유닛 헤더의 고정된 위치에, 예를 들어 끝에 포함될 수 있다. 이 옵션은 가장 유연하지만 코딩 효율성 관점에서 가장 바람직하지 않다. 그렇지만, 컴포넌트 유형(1308)의 존재는 특정 프로파일의 사용에 따라 조정될 수 있으며(따라서 점선으로 표시되고), 컴포넌트 유형 기반 처리에 관심이 없는 프로파일에 대한 코딩 효율성 영향을 완화할 수 있다는 점에 유의해야 한다. 대안적으로 또는 추가적으로, 컴포넌트 유형의 존재는 또한 NAL 유닛 유형 필드의 특정 값으로 제한될 수 있다. 예를 들어, 기존의 Y Cr Cb 슬라이스/타일/타일 그룹에 대한 NAL 유닛 유형이 있을 수 있을 뿐만 아니라 추가 컴포넌트 유형 시그널링이 있은 슬라이스/타일/타일 그룹에 대한 다른 NAL 유닛 유형이 있을 수 있다. 이러한 선택적 NAL 유닛 헤더 정보 필드는 알려진 비디오 코딩 표준 또는 기술에 아직 포함되지 않았지만, 인코더, 디코더 또는 MANE에서 이를 구현하기 위한 장애물은 파라미터 세트 값에 대한 컨텍스트 종속성을 갖는 것보다 낮으므로 선호된다. 물론, 그 메커니즘은 NAL 유닛 유형 번호 지정 공간에서 번호 지정 공간을 제거할 수 있다.
제4 옵션에서, NAL 유닛 헤더 또는 유사한 신택스 요소에 컴포넌트 정보를 포함하기 위해 사용되는 신택스는 예를 들어 이전에 설명된 확장 가능한 NAL 유닛 헤더에 대한 설계 원칙을 따를 수 있다. 특히, Picture ID 및 도 8의 컨텍스트에서 설명된 것과 유사한 메커니즘이 사용될 수 있다. 구체적으로, 컴포넌트 ID는 픽처 ID(802)를 대체할 수 있다. 다른 옵션은 아래에 설명되어 있다. 위에서 가정한 H.265의 NAL 유닛 헤더 설계를 따르지 않는 NAL 유닛 헤더 설계에 대해 다른 옵션이 합리적일 수 있다.
컴포넌트 타입(1306, 1308)이 (NAL 유닛 타입에서 미사용 코드 포인트를 채우는 대신) 그 자신의 필드에 코딩되면, 컴포넌트 유형의 코딩을 위한 특정 옵션이 이용 가능해진다.
여전히 도 13을 참조하면, 동일하거나 다른 실시예에서 컴포넌트 타입(1320)은 비트 마스크로 해석될 수 있다. 제시된 예에서 4 비트 컴포넌트 유형은 다음에 대해 각각 1 비트씩 채워진다.
· 휘도 데이터 (Y) (921)
· 색차 데이터 (Cr, Cb)(922)
· 투명성 (alpha) (923), 및
· 반사성 (924).
이러한 비트 마스크 기반 설계는 구성 요소의 수가 합리적으로 적으면(예를 들어, 4 내지 8 개) 유리할 수 있으므로 비트 마스크의 크기를 적절한 양으로 제한한다. 또한 NAL 유닛 콘텐츠의 매우 유연한 레이아웃을 허용하며; 예를 들어, (동일한 비디오 비트스트림에서) Y Cr Cb 또는 투명성을 가진 Y, 또는 투명성과 반사성을 가진 Y Cr Cb를 커버하는 NAL 유닛을 포함하는 것이 가능할 것이다. 애플리케이션 관점에서 이러한 유연성이 바람직한지가 의심스러울 수 있는데, 유연한 NAL 유닛 페이로드 레이아웃은 확실히 환영받을 수 있지만 인코더에 의한 유연성을 과도하게 사용하면 MANE이 더 이상 원하지 않는 구성 요소를 제거할 수 없는 시나리오로 이어질 수 있다.
대안으로, 컴포넌트 유형은 미리 정의된 컴포넌트 또는 컴포넌트 그룹의 목록에 대한 열거자로 해석될 수도 있다.
예를 들어, 컴포넌트 유형(1330)은 4 비트 부호 없는 정수일 수 있다. 그 비트 필드의 다른 길이가 가능할 수 있고, 프로파일 또는 전술한 바와 같은 NAL 유닛 유형의 정보를 포함하는 다른 쉽게 획득 가능한 정보에 의존할 수 있다.
4 비트 부호 없는 정수 값은 16 개의 다른 컴포넌트 또는 컴포넌트 그룹을 허용한다. 도 13은 다음과 같은 몇 가지 가능한 옵션을 열거한다(1331):
· 0: Y Cr Cb
· 1: Y
· 2: Y Cr CB + 투명성
· 3; Y Cr Cb + 반사성
· 4: Y Cr Cb + 투명성 및 반사성
· 5: 3D 기하학 정보 (XYZ)
· 6: 깊이 맵
· 7: 점유 정보
· 8: 펴면 법선 벡터
· 9..15: 할당되지 않음.
컴포넌트 유형의 값 4는 그러한 시나리오에서 NAL 유닛이 Y, Cr, Cb, 투명성 및 반사성에 관한 정보를 포함할 수 있음을 나타낼 수 있다(1332).
동일하거나 다른 실시예에서, 이러한 컴포넌트 유형이 상기 메커니즘 중 임의의 것에 의해 지시될 때 NAL 유닛이 특정 컴포넌트 유형에 관한 정보를 포함하는 것은 필요 조건일 수 있지만 충분 조건은 아닐 수 있다. 이것은 예를 들어 슬라이스 유형과 유사할 수 있다. 예를 들어, B-슬라이스는 이중 예측 코딩 단위를 포함할 수 있지만 인트라 코딩된 코딩 단위로만 구성될 수도 있다.
동일하거나 다른 실시예에서, NAL 유닛은 특정 컴포넌트 유형 및 특정 시야각(view angle)에 관한 정보를 포함할 수 있다. 시야각은 뷰 식별자(예를 들어, 왼쪽 또는 오른쪽 뷰) 또는 외부/고유 카메라 파라미터 세트로 식별할 수 있다. 예를 들어 컴포넌트 유형(1330)은 4 비트 부호 없는 정수일 수 있으며 다음 옵션 중 하나를 가질 수 있다:
· 0: Y Cr Cb + 좌측 카메라에 대응하는 깊이 맵
· 1: Y Cr Cb + 우측 카메라에 대응하는 깊이 맵
· 2: XYZ 기하학 정보 + 점유 맵
· 3..15: 할당되지 않음.
위에서 설명한 네트워크 추상 계층 단위 헤더의 네트워크 추상 단위 계층 유형 클래스에 대한 기술 및/또는 위에서 설명한 네트워크 추상 단위 헤더의 픽처 참조를 위한 기술은 컴퓨터 판독 가능 명령을 사용하여 컴퓨터 소프트웨어로 구현되고 하나 이상의 컴퓨터 판독 가능형 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 14는 개시된 주제의 특정 실시예를 구현하기에 적합한 컴퓨터 시스템(1400)을 도시한다.
컴퓨터 소프트웨어는 임의의 적절한 기계어 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있으며, 이러한 코드 또는 언어는 컴퓨터 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 등에 의해 어셈블리, 컴파일, 링크 또는 이와 유사한 메커니즘을 통해 직접적으로 또는 해석, 마이크로-코드 등을 통해 실행할 수 있는 명령을 포함하는 코드를 생성할 수 있다.
명령은 예를 들어 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰, 게임 장치, 사물 인터넷 장치 등을 포함하는 다양한 유형의 컴퓨터 또는 그 구성 요소에서 실행될 수 있다.
컴퓨터 시스템(1400)에 대해 도 14에 도시된 구성 요소는 본질적으로 예시 적이며 본 개시 내용의 실시예들을 구현하는 컴퓨터 소프트웨어의 사용 또는 기능의 범위에 대해 어떠한 제한을 제안하도록 의도되지 않는다. 구성 요소의 구성은 컴퓨터 시스템(1400)의 예시적인 실시예에 예시된 구성 요소의 임의의 하나 또는 조합과 관련된 임의의 종속성 또는 요구 사항을 갖는 것으로 해석되어서는 안 된다.
컴퓨터 시스템(1400)은 특정 휴먼 인터페이스 입력 장치를 포함할 수 있다. 이러한 휴먼 인터페이스 입력 장치는 촉각 입력(예를 들어, 키 입력, 스와이프, 데이터 글로브 무브먼트), 오디오 입력(예를 들어, 음성, 박수), 시각적 입력(예를 들어, 제스처), 후각 입력(도시되지 않음)을 통해 한 명 이상의 인간 사용자의 입력에 응답할 수 있다. 휴먼 인터페이스 장치는 오디오(예를 들어, 음성, 음악, 주변 소리), 이미지(예를 들어, 스캔한 이미지, 정지 이미지 카메라에서 획득되는 사진 이미지), 비디오(예를 들어, 2 차원 비디오, 입체 비디오를 포함한 3 차원 비디오)와 같이 사람의 의식적 입력과 직접 관련이 없는 특정 미디어를 캡처하는데도 사용할 수 있다.
입력 휴먼 인터페이스 장치는 키보드(1401), 마우스(1402), 트랙 패드(1403), 터치 스크린(1410), 데이터 글로브(1404), 조이스틱(1405), 마이크(1406), 스캐너(1407), 카메라(1408) 중 하나 이상(각각 하나만 표시됨)을 포함할 수 있다.
컴퓨터 시스템(1400)은 또한 특정 휴먼 인터페이스 출력 장치를 포함할 수 있다. 이러한 인간 인터페이스 출력 장치는 예를 들어 촉각 출력, 소리, 빛 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 휴먼 인터페이스 출력 장치는 촉각 출력 장치(예를 들어, 터치 스크린(1410), 데이터 글로브(1404) 또는 조이스틱(1405)에 의한 촉각 피드백이지만 입력 장치 역할을 하지 않는 촉각 피드백 장치도 있을 수 있다), 오디오 출력 장치(예를 들어, 스피커 1409, 헤드폰(도시되지 않음)), 시각적 출력 장치(예를 들어, CRT 스크린, LCD 스크린, 플라즈마 스크린, OLED 스크린을 포함하는 스크린(1410), 각각 터치 스크린 입력 기능이 있거나 없고, 각각 또는 촉각 피드백 성능이 있거나 없다 - 이 중 일부는 스테레오 그래픽 출력; 가상 현실 안경(도시되지 않음), 홀로 그래픽 디스플레이 및 연기 탱크(도시되지 않음), 및 프린터(도시되지 않음)와 같은 수단을 통해 2 차원 시각적 출력 또는 3 차원 이상의 출력을 출력할 수 있다)를 포함할 수 있다.
컴퓨터 시스템(1400)은 또한 사람이 액세스할 수 있는 저장 장치 및 그 관련 미디어를 포함할 수 있으며, 예를 들어 CD/DVD가 있는 CD/DVD ROM/RW(1420) 또는 그 유사한 미디어(1421), 썸-드라이브(1421), 이동식 하드 드라이브 또는 솔리드 스테이트 드라이브(1423), 테이프 및 플로피 디스크(도시되지 않음)와 같은 레거시 자기 매체, 보안 동글(도시되지 않음)과 같은 특수 ROM/ASIC/PLD 기반 장치 등을 포함한다.
당업자는 또한 현재 개시된 주제와 관련하여 사용되는 용어 "컴퓨터 판독 가능형 매체"가 전송 매체, 반송파 또는 다른 일시적인 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(1400)은 또한 하나 이상의 통신 네트워크에 대한 인터페이스를 포함할 수 있다. 예를 들어 네트워크는 무선, 유선, 광일 수 있다. 네트워크는 또한 로컬, 광역, 대도시, 차량 및 산업, 실시간, 지연 허용 등이 될 수 있다. 네트워크의 예로는 이더넷, 무선 LAN, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크와 같은 근거리 통신망, TV 유선 또는 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량 및 산업 등이 있다. 특정 네트워크는 일반적으로 특정 범용 데이터 포트 또는 주변 장치 버스(1449)에 연결된 외부 네트워크 인터페이스 어댑터를 필요로 하고(예를 들어, 컴퓨터 시스템(1400)의 USB 포트; 다른 것들은 일반적으로 연결에 의해 컴퓨터 시스템(1400)의 코어에 통합된다(예를 들어, PC 컴퓨터 시스템에 이더넷 인터페이스가 연결되거나 또는 스마트 폰 컴퓨터 시스템에 셀룰러 네트워크 인터페이스가 연결된다). 이러한 네트워크 중 임의의 것을 사용하여 컴퓨터 시스템(1400)은 다른 엔티티와 통신할 수 있다. 이러한 통신은 단방향일 수 있고, 수신 전용(예를 들어, 방송 TV), 단방향 전송 전용(예를 들어, CANbus에서 특정 CANbus 장치로 전송) 또는 양방향일 수 있다(예를 들어, 로컬 또는 광역 디지털 네트워크를 사용하는 다른 컴퓨터 시스템으로 전송). 특정 프로토콜 및 프로토콜 스택은 위에서 설명한 각 네트워크 및 네트워크 인터페이스에서 사용할 수 있다.
전술한 휴먼 인터페이스 장치, 휴먼 액세스 가능 저장 장치 및 네트워크 인터페이스는 컴퓨터 시스템(1400)의 코어(1440)에 부착될 수 있다.
코어(1440)는 하나 이상의 중앙 처리 장치(CPU)(1441), 그래픽 처리 장치(GPU)(1442), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Areas, FPGA)(1443) 형태의 특수 프로그램 가능 처리 장치, 특정 작업을 위한 하드웨어 가속기(1444) 등을 포함할 수 있다. 읽기 전용 메모리(ROM)(1445), 랜덤 액세스 메모리(1446), 내부 비사용자 액세스 가능 하드 드라이브, SSD 등(1447)과 같은 내부 대용량 스토리지(1447)와 함께 이들 장치는 시스템 버스(1448)를 통해 연결될 수 있다. 일부 컴퓨터 시스템에서, 시스템 버스(1448)는 추가 CPU, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리적 플러그의 형태로 액세스 가능할 수 있다. 주변 장치는 코어의 시스템 버스(1448)에 직접 또는 주변 버스(1449)를 통해 부착될 수 있다. 주변 버스를 위한 아키텍처는 PCI, USB 등을 포함한다.
CPU(1441), GPU(1442), FPGA(1443) 및 가속기(1444)는 조합하여 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령을 실행할 수 있다. 그 컴퓨터 코드는 ROM(1445) 또는 RAM(1446)에 저장될 수 있다. 임시 데이터는 RAM(1446)에도 저장될 수 있는 반면, 영구 데이터는 예를 들어 내부 대용량 저장 장치(1447)에 저장될 수 있다. 빠른 저장 및 임의의 메모리 장치로 검색 하나 이상의 CPU(1441), GPU(1442), 대용량 저장 장치(1447), ROM(1445), RAM(1446) 등과 밀접하게 연관될 수 있는 캐시 메모리의 사용을 통해 활성화될 수 있다.
컴퓨터 판독 가능 매체는 다양한 컴퓨터 구현 동작을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구성된 것일 수 있거나, 컴퓨터 소프트웨어 분야의 숙련자에게 잘 알려져 있고 이용 가능한 종류일 수 있다.
예로서 제한 없이, 아키텍처(1400)를 갖는 컴퓨터 시스템, 구체적으로 코어(1440)는 하나 이상의 유형의 컴퓨터 판독 가능 매체에 구현된 소프트웨어를 실행하는 프로세서(들)(CPU, GPU, FPGA, 가속기 등 포함)의 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터 판독 가능 매체는 위에서 소개한 바와 같이 사용자가 액세스할 수 있는 대용량 저장소와 관련된 매체일 수 있을 뿐만 아니라 코어 내부 대용량 저장소(1447) 또는 ROM(1445)과 같은 비 일시적 특성인 코어(1440)의 특정 저장소일 수 있다. 본 개시의 다양한 실시예를 구현하는 소프트웨어는 그러한 장치에 저장되고 코어(1440)에 의해 실행될 수 있다. 컴퓨터 판독 가능형 매체는 특정 요구에 따라 하나 이상의 메모리 장치 또는 칩을 포함할 수 있다. 소프트웨어는 코어(1440) 및 특히 그 안의 프로세서(CPU, GPU, FPGA 등 포함)가 RAM(1446)에 저장된 데이터 구조를 정의하고 소프트웨어에 의해 정의된 프로세스에 따라 이러한 데이터 구조를 수정하는 것을 포함하여 여기에 설명된 특정 프로세스 또는 특정 프로세스의 특정 부분을 실행하게 할 수 있다. 추가로 또는 대안으로, 컴퓨터 시스템은 여기에 설명된 특정 프로세스의 특정 프로세스 또는 특정 부품을 실행하기 위해 소프트웨어 대신 또는 소프트웨어와 함께 작동할 수 있는 회로(예를 들어, 가속기(1444))에 고정되거나 다른 방식으로 구현된 논리의 결과로 기능을 제공할 수 있다. 소프트웨어에 대한 언급은 논리를 포함할 수 있으며 해당되는 경우 그 반대의 경우도 마찬가지이다. 컴퓨터 판독 가능 매체에 대한 언급은 실행을 위한 소프트웨어를 저장하는 회로(예를 들어, 집적 회로(IC)), 실행을 위한 로직을 구현하는 회로 또는 적절한 경우 둘 다를 포함할 수 있다. 본 개시는 하드웨어 및 소프트웨어의 임의의 적절한 조합을 포함한다.
본 개시가 여러 예시적인 실시예를 설명했지만, 본 개시의 범위 내에 속하는 변경, 순열 및 다양한 대체 등가물이 있다. 따라서, 당업자는 본 명세서에 명시적으로 도시되거나 설명되지 않았지만, 본 개시 내용의 원리를 구현하고 따라서 그 사상 및 범위 내에 있는 수많은 시스템 및 방법을 고안할 수 있다는 것을 이해할 것이다.

Claims (20)

  1. 비디오 시퀀스 디코딩 방법으로서,
    네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하는 단계;
    상기 NALU 헤더 내의 NALU 유형을 디코딩하는 단계; 및
    픽처를 재구성하는 단계 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 -
    를 포함하는 비디오 시퀀스 디코딩 방법.
  2. 제1항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제1 고정 위치에 있는 제1 비트를 포함하고,
    상기 제1 비트는 상기 NALU 헤더에서 제1 고정 길이 코드 워드의 존재를 나타내는, 비디오 시퀀스 디코딩 방법.
  3. 제2항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제2 고정 위치에 있는 제2 비트를 포함하고,
    상기 제2 비트는 상기 NALU 헤더에서 제2 고정 길이 코드 워드의 존재를 나타내며, 그리고
    상기 제2 고정 길이 코드 워드는 상기 제1 고정 길이 코드 워드를 뒤따르는, 비디오 시퀀스 디코딩 방법.
  4. 제2항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제2 고정 위치에 있는 제2 비트를 포함하고,
    상기 제2 비트는 상기 NALU 헤더에서 제2 고정 길이 코드 워드의 존재를 나타내고,
    상기 제1 고정 길이 코드 워드에 시작 코드 에뮬레이션 방지 비트(start code emulation prevention bit)가 뒤따르며, 그리고
    상기 시작 코드 에뮬레이션 방지 비트에 상기 제2 고정 길이 코드 워드가 뒤따르는, 비디오 시퀀스 디코딩 방법.
  5. 제2항에 있어서,
    상기 제1 고정 길이 코드 워드는 공간/신호 대 잡음비 계층 식별자(spatial/signal to noise ratio layer identifier), 멀티뷰 계층 식별자(multiview layer identifier), 타일 식별자(tile identifier), 컴포넌트 유형 식별자(component type identifier) 및 픽처 식별자(picture identifier) 중 적어도 하나인, 비디오 시퀀스 디코딩 방법.
  6. 제1항에 있어서,
    제1 신택스 요소 픽처 식별자(syntax element picture identifier)를 포함하는 제1 NALU 헤더를 디코딩하는 단계 - 상기 제1 NALU 헤더는 제1 코딩된 픽처에 속하는 제1 NALU에 속함 - ;
    제2 신택스 요소 픽처 식별자를 포함하는 제2 NALU 헤더를 디코딩하는 단계 - 상기 제2 NALU 헤더는 상기 제1 코딩된 픽처에 속하는 제2 NALU에 속함 - ; 및
    제3 신택스 요소 픽처 식별자를 포함하는 제3 NALU 헤더를 디코딩하는 단계 - 상기 제3 NALU 헤더는 제2 코딩된 픽처에 속하는 제3 NALU에 속함 -
    를 더 포함하며,
    상기 제1 신택스 요소 픽처 식별자의 값은 상기 제2 신택스 요소 픽처 식별자의 값과 동일하고, 그리고
    상기 제3 신택스 요소 픽처 식별자의 값은 상기 제1 신택스 요소 픽처 식별자의 값과 동일하지 않는, 비디오 시퀀스 디코딩 방법.
  7. 제6항에 있어서,
    상기 제1 신택스 요소 픽처 식별자는 고정 길이의 이진 코딩 코드 워드로 코딩되는, 비디오 시퀀스 디코딩 방법.
  8. 제6항에 있어서,
    상기 제1 신택스 요소에서 코딩된 값은 픽처 순서 카운트(Picture Order Count, POC)에서 파생되는, 비디오 시퀀스 디코딩 방법.
  9. 제1항에 있어서,
    적어도 하나의 제1 컴포넌트를 디코딩하는 데 필요한 적어도 하나의 신택스 요소를 포함하는 제1 NALU의 제1 NALU 헤더를 디코딩하는 단계; 및
    적어도 하나의 제2 컴포넌트를 디코딩하는 데 필요한 적어도 하나의 신택스 요소를 포함하는 제2 NALU의 제2 NALU 헤더를 디코딩하는 단계,
    를 더 포함하며,
    상기 적어도 하나의 제2 컴포넌트는 상기 적어도 하나의 제1 컴포넌트와 상이하고;
    상기 제1 및 제2 NALU 헤더는 상기 적어도 하나의 제2 컴포넌트가 상기 적어도 하나의 제1 컴포넌트와 상이하다는 것을 나타내는 적어도 하나의 신택스 요소를 포함하는, 비디오 시퀀스 디코딩 방법.
  10. 제9항에 있어서,
    상기 제1 및 제2 NALU 헤더는 각각 제1 및 제2 신택스 요소 컴포넌트 유형을 포함하고, 여기서 상기 적어도 하나의 제2 컴포넌트가 상기 적어도 하나의 제1 컴포넌트와 상이하다는 표시는 상기 제2 컴포넌트 유형의 값이 상기 제1 컴포넌트 유형과 상이하다는 것인, 비디오 시퀀스 디코딩 방법.
  11. 비디오 시퀀스 디코딩 장치로서,
    프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리; 및
    상기 프로그램 코드를 판독하여 상기 프로그램 코드가 명령한 대로 동작하도록 구성된 적어도 하나의 프로세서
    를 포함하며, 상기 프로그램 코드는:
    상기 적어도 하나의 프로세서로 하여금 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하고, 그리고 상기 NALU 헤더 내의 NALU 유형을 디코딩하도록 구성된 디코딩 코드; 및
    상기 적어도 하나의 프로세서로 하여금 픽처를 재구성하도록 구성된 디코딩 코드 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 -
    를 포함하는, 비디오 시퀀스 디코딩 장치.
  12. 제11항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제1 고정 위치에 있는 제1 비트를 포함하고,
    상기 제1 비트는 상기 NALU 헤더에서 제1 고정 길이 코드 워드의 존재를 나타내는, 비디오 시퀀스 디코딩 장치.
  13. 제12항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제2 고정 위치에 있는 제2 비트를 포함하고,
    상기 제2 비트는 상기 NALU 헤더에서 제2 고정 길이 코드 워드의 존재를 나타내며, 그리고
    상기 제2 고정 길이 코드 워드는 상기 제1 고정 길이 코드 워드를 뒤따르는, 비디오 시퀀스 디코딩 장치.
  14. 제12항에 있어서,
    상기 NALU 유형은 상기 NALU 유형의 제2 고정 위치에 있는 제2 비트를 포함하고,
    상기 제2 비트는 상기 NALU 헤더에서 제2 고정 길이 코드 워드의 존재를 나타내고,
    상기 제1 고정 길이 코드 워드에 시작 코드 에뮬레이션 방지 비트(start code emulation prevention bit)가 뒤따르며, 그리고
    상기 시작 코드 에뮬레이션 방지 비트에 상기 제2 고정 길이 코드 워드가 뒤따르는, 비디오 시퀀스 디코딩 장치.
  15. 제12항에 있어서,
    상기 제1 고정 길이 코드 워드는 공간/신호 대 잡음비 계층 식별자(spatial/signal to noise ratio layer identifier), 멀티뷰 계층 식별자(multiview layer identifier), 타일 식별자(tile identifier), 컴포넌트 유형 식별자(component type identifier) 및 픽처 식별자(picture identifier) 중 적어도 하나인, 비디오 시퀀스 디코딩 장치.
  16. 제11항에 있어서,
    제1 신택스 요소 픽처 식별자(syntax element picture identifier)를 포함하는 제1 NALU 헤더를 디코딩하는 단계 - 상기 제1 NALU 헤더는 제1 코딩된 픽처에 속하는 제1 NALU에 속함 - ;
    제2 신택스 요소 픽처 식별자를 포함하는 제2 NALU 헤더를 디코딩하는 단계 - 상기 제2 NALU 헤더는 상기 제1 코딩된 픽처에 속하는 제2 NALU에 속함 - ; 및
    제3 신택스 요소 픽처 식별자를 포함하는 제3 NALU 헤더를 디코딩하는 단계 - 상기 제3 NALU 헤더는 제2 코딩된 픽처에 속하는 제3 NALU에 속함 -
    를 더 포함하며,
    상기 제1 신택스 요소 픽처 식별자의 값은 상기 제2 신택스 요소 픽처 식별자의 값과 동일하고, 그리고
    상기 제3 신택스 요소 픽처 식별자의 값은 상기 제1 신택스 요소 픽처 식별자의 값과 동일하지 않는, 비디오 시퀀스 디코딩 장치.
  17. 제16항에 있어서,
    상기 제1 신택스 요소 픽처 식별자는 고정 길이의 이진 코딩 코드 워드로 코딩되는, 비디오 시퀀스 디코딩 장치.
  18. 제16항에 있어서,
    상기 제1 신택스 요소에서 코딩된 값은 픽처 순서 카운트(Picture Order Count, POC)에서 파생되는, 비디오 시퀀스 디코딩 장치.
  19. 제11항에 있어서,
    상기 디코딩 코드는 상기 적어도 하나의 프로세서로 하여금:
    적어도 하나의 제1 컴포넌트를 디코딩하는 데 필요한 적어도 하나의 신택스 요소를 포함하는 제1 NALU의 제1 NALU 헤더를 디코딩하고; 그리고
    적어도 하나의 제2 컴포넌트를 디코딩하는 데 필요한 적어도 하나의 신택스 요소를 포함하는 제2 NALU의 제2 NALU 헤더를 디코딩하도록 추가로 구성되어 있으며,
    상기 적어도 하나의 제2 컴포넌트는 상기 적어도 하나의 제1 컴포넌트와 상이하고;
    상기 제1 및 제2 NALU 헤더는 상기 적어도 하나의 제2 컴포넌트가 상기 적어도 하나의 제1 컴포넌트와 상이하다는 것을 나타내는 적어도 하나의 신택스 요소를 포함하는, 비디오 시퀀스 디코딩 장치.
  20. 명령을 저장하는 비 일시적 컴퓨터 판독 가능형 매체로서,
    상기 명령은: 장치의 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    상기 적어도 하나의 프로세서로 하여금 네트워크 추상 계층 유닛(network abstraction layer unit, NALU) 헤더에 포함된 고정 길이 이진 코딩 NALU 클래스 유형을 디코딩하고;
    상기 NALU 헤더 내의 NALU 유형을 디코딩하며; 그리고
    픽처를 재구성하게 하는 - 상기 픽처의 유형은 상기 NALU 클래스 유형과 상기 NALU 유형의 조합에 의해 식별됨 -
    하나 이상의 명령을 포함하는, 비 일시적 컴퓨터 판독 가능형 매체.
KR1020217014079A 2018-12-14 2019-12-11 비디오 코딩을 위한 방법, 장치 및 저장 매체 KR102592985B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862780148P 2018-12-14 2018-12-14
US201862780154P 2018-12-14 2018-12-14
US62/780,148 2018-12-14
US62/780,154 2018-12-14
US201962704039P 2019-01-02 2019-01-02
US62/704,039 2019-01-02
US16/403,786 2019-05-06
US16/403,786 US10812818B2 (en) 2018-12-14 2019-05-06 Network abstraction unit layer type classes in network abstraction layer unit header
PCT/US2019/065634 WO2020123598A1 (en) 2018-12-14 2019-12-11 Network abstraction unit layer type classes in network abstraction layer unit header

Publications (2)

Publication Number Publication Date
KR20210069716A true KR20210069716A (ko) 2021-06-11
KR102592985B1 KR102592985B1 (ko) 2023-10-20

Family

ID=71073768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217014079A KR102592985B1 (ko) 2018-12-14 2019-12-11 비디오 코딩을 위한 방법, 장치 및 저장 매체

Country Status (6)

Country Link
US (1) US10812818B2 (ko)
EP (1) EP3895322B1 (ko)
JP (1) JP7209832B2 (ko)
KR (1) KR102592985B1 (ko)
CN (1) CN112868184B (ko)
WO (1) WO2020123598A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11711544B2 (en) * 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
CN114402571A (zh) * 2019-07-16 2022-04-26 苹果公司 基于会话描述协议和实时协议的体积点云内容的流式传输
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11321878B2 (en) * 2020-06-26 2022-05-03 Sony Group Corporation Decoded tile hash SEI message for V3C/V-PCC
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
US11750843B2 (en) 2021-06-28 2023-09-05 Tencent America LLC Multiview-related supplementary enhancement information messages
US20230024288A1 (en) * 2021-07-13 2023-01-26 Tencent America LLC Feature-based multi-view representation and coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140192165A1 (en) * 2011-08-12 2014-07-10 Telefonaktiebolaget L M Ericsson (Publ) Signaling of camera and/or depth parameters
WO2014111222A1 (en) * 2013-01-16 2014-07-24 Telefonaktiebolaget L M Ericsson (Publ) Decoder and encoder and methods for coding of a video sequence
US20150071362A1 (en) * 2012-03-30 2015-03-12 Sharp Kabushiki Kaisha Image encoding device, image decoding device, image encoding method, image decoding method and program

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1928184B1 (en) * 2005-09-20 2017-09-27 Mitsubishi Electric Corporation Image encoding apparatus, image encoding method
US20070177671A1 (en) * 2006-01-12 2007-08-02 Lg Electronics Inc. Processing multiview video
FR2898754B1 (fr) 2006-03-17 2008-06-13 Thales Sa Procede de protection de donnees multimedia au moyen de couches d'abstraction reseau (nal) supplementaires
US20080317124A1 (en) * 2007-06-25 2008-12-25 Sukhee Cho Multi-view video coding system, decoding system, bitstream extraction system for decoding base view and supporting view random access
US9635355B2 (en) * 2011-07-28 2017-04-25 Qualcomm Incorporated Multiview video coding
US10237565B2 (en) * 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
CN103843341B (zh) * 2011-09-27 2017-06-13 瑞典爱立信有限公司 用于管理视频解码过程中的画面的解码器及其方法
KR20130058584A (ko) * 2011-11-25 2013-06-04 삼성전자주식회사 복호화기의 버퍼 관리를 위한 영상 부호화 방법 및 장치, 그 영상 복호화 방법 및 장치
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US10447990B2 (en) * 2012-02-28 2019-10-15 Qualcomm Incorporated Network abstraction layer (NAL) unit header design for three-dimensional video coding
US20140010277A1 (en) * 2012-07-09 2014-01-09 Qualcomm, Incorporated Supplemental enhancement information (sei) messages having a fixed-length coded video parameter set (vps) id
US9602822B2 (en) * 2013-04-17 2017-03-21 Qualcomm Incorporated Indication of cross-layer picture type alignment in multi-layer video coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140192165A1 (en) * 2011-08-12 2014-07-10 Telefonaktiebolaget L M Ericsson (Publ) Signaling of camera and/or depth parameters
US20150071362A1 (en) * 2012-03-30 2015-03-12 Sharp Kabushiki Kaisha Image encoding device, image decoding device, image encoding method, image decoding method and program
WO2014111222A1 (en) * 2013-01-16 2014-07-24 Telefonaktiebolaget L M Ericsson (Publ) Decoder and encoder and methods for coding of a video sequence

Also Published As

Publication number Publication date
JP2022507673A (ja) 2022-01-18
US10812818B2 (en) 2020-10-20
CN112868184A (zh) 2021-05-28
CN112868184B (zh) 2023-12-22
US20200195946A1 (en) 2020-06-18
EP3895322B1 (en) 2024-04-17
WO2020123598A1 (en) 2020-06-18
EP3895322A4 (en) 2022-06-15
JP7209832B2 (ja) 2023-01-20
KR102592985B1 (ko) 2023-10-20
EP3895322A1 (en) 2021-10-20

Similar Documents

Publication Publication Date Title
KR102592985B1 (ko) 비디오 코딩을 위한 방법, 장치 및 저장 매체
JP7342210B2 (ja) 無指向性媒体符号化及び復号のためのラップアラウンドパディングの方法
KR102648248B1 (ko) 랜덤 액세스 포인트 및 픽처 유형의 식별 방법
JP7177270B2 (ja) ネットワーク抽象化ユニットヘッダからのタイルの識別化
KR20210077754A (ko) 타일 그룹 식별을 위한 방법
JP2023134662A (ja) エンコードされたビデオビットストリームをデコードする方法、デバイス、及びコンピュータプログラム
JP2022549910A (ja) ビデオ符号化のための方法、装置、媒体およびコンピュータ・プログラム
CN118317101A (zh) 视频编码方法、装置、计算机设备和存储介质
US20230075516A1 (en) System and method for decoding including network abstraction layer unit structure with picture header
CN113994686A (zh) 点云编码的数据单元和参数集设计
CN113678447B (zh) 重建网络抽象层单元的方法、设备和电子设备
EP3903477B1 (en) Method for syntax controlled decoded picture buffer management

Legal Events

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