KR20140039082A - 비디오 코딩에서 예측 데이터를 버퍼링 - Google Patents

비디오 코딩에서 예측 데이터를 버퍼링 Download PDF

Info

Publication number
KR20140039082A
KR20140039082A KR1020147004481A KR20147004481A KR20140039082A KR 20140039082 A KR20140039082 A KR 20140039082A KR 1020147004481 A KR1020147004481 A KR 1020147004481A KR 20147004481 A KR20147004481 A KR 20147004481A KR 20140039082 A KR20140039082 A KR 20140039082A
Authority
KR
South Korea
Prior art keywords
block
blocks
intra
prediction
lcu
Prior art date
Application number
KR1020147004481A
Other languages
English (en)
Other versions
KR101521060B1 (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 KR20140039082A publication Critical patent/KR20140039082A/ko
Application granted granted Critical
Publication of KR101521060B1 publication Critical patent/KR101521060B1/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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

일 예에서, 본 개시물의 양태들은 비디오 데이터를 코딩하는 방법에 관한 것이며, 그 방법은 일반적으로, 비디오 데이터의 블록에 대한 예측 정보를 결정하는 단계를 포함하며, 여기서, 상기 블록은 비디오 데이터의 코딩된 유닛에 포함되고 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 상기 블록에 대한 예측 정보는 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는다. 그 방법은 또한 일반적으로, 결정된 예측 정보에 기초하여 블록을 코딩하는 단계를 포함한다.

Description

비디오 코딩에서 예측 데이터를 버퍼링{BUFFERING PREDICTION DATA IN VIDEO CODING}
본 출원은 2011년 7월 20일자로 출원된 미국 가특허출원 제 61/509,933 호 및 2011년 8월 10일자로 출원된 미국 가특허출원 제 61/522,136 호에 대해 우선권을 주장하고, 이들 각각의 내용들은 그 전체가 본 명세서에 참조로서 통합된다.
기술 분야
본 개시물은 비디오 코딩, 및 보다 구체적으로는 비디오 데이터의 엔트로피코딩에 관한 것이다.
디지털 비디오 성능들은, 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더기들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, "스마트폰들" 이라 불리는 셀룰러 또는 위성 무선 전화기들, 비디오 원격회의 디바이스들, 비디오 스트리밍 디바이스들을 포함하는 광범위의 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, 파트 10, 어드밴스드 비디오 코딩 (AVC) 에 의해 규정된 표준들, 현재 개발 중에 있는 고효율 비디오 코딩 (HEVC) 및 이러한 표준들의 확장물들에 기재된 것들과 같은 비디오 압축 기술들을 구현한다. 비디오 디바이스들은 그러한 비디오 압축 기술들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수도 있다.
비디오 압축 기술들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행한다. 블록 기반의 비디오 코딩을 위해, 비디오 슬라이스 (즉, 비디오 픽처 또는 비디오 픽처의 일부분) 는 트리블록들, 코딩 유닛 (CU) 들, 및/또는 코딩 노드들로 지칭될 수도 있는 비디오 블록들로 파티셔닝될 수도 있다. 일 픽처의 인트라 코딩된 (I) 슬라이스에서의 비디오 블록들은, 동일한 픽처에서 이웃 블록들의 참조 샘플들에 대하여 공간 예측을 사용하여 인코딩된다. 일 픽처의 인터 코딩된 (P 또는 B) 슬라이스에서의 비디오 블록들은, 동일한 픽처에서 이웃 블록들의 참조 샘플들에 대하여 공간 예측을, 또는 다른 참조 픽처들에서 참조 샘플들에 대하여 시간 예측을 사용할 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 발생한다. 잔여 데이터는 코딩될 원래의 블록과 예측 블록 간에 픽셀 차이들을 나타낸다. 인터 코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 간의 차이를 나타내는 잔여 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔여 데이터에 따라 인코딩된다. 추가의 압축을 위해, 잔여 데이터는 픽셀 도메인에서 변환 도메인으로 변환될 수도 있고, 그 결과 이 후 양자화될 수도 있는 잔여 변환 계수들을 발생한다. 초기에 2 차원 어레이로 배열된 양자화된 변환 계수들은 변환 계수들의 1 차원 벡터를 생성하기 위해 스캐닝될 수도 있고, 엔트로피 코딩은 더 많은 압축을 달성하기 위해 적용될 수도 있다.
일반적으로, 본 개시물은 비디오 데이터를 코딩하기 위한 기술들을 설명한다. 예를 들어, 본 개시물의 기술들은 비디오 코딩에서 예측 기술들을 수행할 때 버퍼링되는 데이터의 양을 감소시키는 것을 포함한다. 즉, 공간 예측 (즉, 인트라-예측) 또는 시간 예측 (즉, 인터-예측) 은 비디오 시퀀스에서 리던던시를 제거하거나 감소시키기 위해 사용될 수도 있다. 블록-기반 비디오 코딩에서, 하나의 블록으로부터의 비디오 데이터는 비디오 데이터의 하나 이상의 다른 블록들에 대한 예측 정보로서 사용될 수도 있다. 현재 코딩되고 있는 블록의 하나 이상의 이웃 블록들과 연관된 예측 정보가 저장될 (즉, 버퍼링될) 수도 있으며, 따라서 이러한 예측 정보는 현재 블록을 코딩하는데 사용이능하다. 본 개시물의 기술들은 코딩 동안 버퍼링되는 이웃 블록들로부터의 예측 정보의 양을 제한하는 것과 관련된다. 본 개시물의 일부 양태들에 따르면, 비디오 코딩 디바이스는 현재 블록을 코딩할 때 현재 코딩되고 있는 비디오 데이터의 블록 위에 배치되는 비디오 데이터의 블록들 (예컨대, "상부-이웃 블록들"로 지칭됨) 로부터의 예측 정보를 사용하는 것을 회피할 수도 있다.
일 예에서, 본 개시물의 양태들은, 비디오 데이터를 코딩하는 방법에 관한 것이며, 그 방법은, 비디오 데이터의 블록에 대한 예측 정보를 결정하는 단계로서, 그 블록은 비디오 데이터의 코딩된 유닛에 포함되고 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 그 블록에 대한 예측 정보는 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 예측 정보를 결정하는 단계; 및 결정된 예측 정보에 기초하여 블록을 코딩하는 단계를 포함한다.
다른 예에서, 본 개시물의 양태들은 비디오 데이터를 코딩하는 장치에 관한 것이다. 이러한 예에서, 그 장치는, 비디오 데이터의 블록에 대한 예측 정보를 결정하는 것으로서, 그 블록은 비디오 데이터의 코딩된 유닛에 포함되고 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 그 블록에 대한 예측 정보는 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 예측 정보를 결정하고; 그리고 결정된 예측 정보에 기초하여 블록을 코딩하도록 구성되는 하나 이상의 프로세서들을 포함한다.
또 다른 예에서, 본 개시물의 양태들은 명령들이 저장된 비-일시적인 컴퓨터 판독가능 저장 매체에 관한 것이며, 명령들은, 실행될 경우, 하나 이상의 프로세서들로 하여금, 비디오 데이터의 블록에 대한 예측 정보를 결정하게 하는 것으로서, 그 블록은 비디오 데이터의 코딩된 유닛에 포함되고 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 그 블록에 대한 예측 정보는 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 예측 정보를 결정하게 하고; 그리고 결정된 예측 정보에 기초하여 블록을 코딩하게 한다.
다른 예에서, 본 개시물의 양태들은 비디오 데이터를 코딩하는 장치에 관한 것이다. 이 예에서, 그 장치는 비디오 데이터의 블록에 대한 예측 정보를 결정하는 수단으로서, 그 블록은 비디오 데이터의 코딩된 유닛에 포함되고 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 그 블록에 대한 예측 정보는 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 예측 정보를 결정하는 수단; 및 결정된 예측 정보에 기초하여 블록을 코딩하는 수단을 포함한다.
본 개시물의 하나 이상의 양태들은 이하의 상세한 설명 및 첨부한 도면들에서 설명된다. 본 개시물에 설명된 기술들의 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 본 개시물에 설명된 기술들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 본 개시물에 설명된 기술들을 구현할 수도 있는, 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3 은 본 개시물에 설명된 기술들을 구현할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 4a 및 도 4b 는 예시적인 쿼드트리 및 대응하는 최대 코딩 유닛 (LCU) 을 예시하는 개념도들이다.
도 5 는 가장 가능한 인트라-모드가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다이어그램이다.
도 6 은 모션 벡터 예측자 후보들에 대한 예시적인 로케이션들을 예시하는 다이어그램이다.
도 7 은 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다이어그램이다.
도 8 은 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다른 다이어그램이다.
도 9 는 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 또 다른 다이어그램이다.
도 10 은 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 또 다른 다이어그램이다.
도 11 은 하나 이상의 이웃 블록들의 예측 정보를 클리핑하는 일 예를 예시하는 개념도이다.
도 12 는 하나 이상의 이웃 블록들의 예측 정보를 클리핑하는 일 예를 예시하는 다른 개념도이다.
도 13 은 최대 코딩 유닛의 경계 코딩 유닛들을 예시하는 블록 다이어그램이다.
도 14 는 비디오 코딩 동안 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다.
도 15 는 인트라-예측을 수행할 때 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다.
도 16 은 인트라-예측을 수행할 때 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다.
도 17 은 인트라-예측을 수행할 때 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다.
도 18 은 인트라-예측을 수행할 때 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다.
비디오 코딩 디바이스는 공간적 및/또는 시간적 리던던시를 사용하여 비디오 데이터를 압축하려고 시도할 수도 있다. 예를 들어, 비디오 인코더가 블록을 이웃하는 이전에 코딩된 블록들에 관하여 코딩함으로써 공간적 리던던시를 사용할 수도 있다. 유사하게, 비디오 인코더가 블록을 이전에 코딩된 프레임들의 데이터에 관하여 코딩함으로써 시간적 리던던시를 사용할 수도 있다. 특히, 비디오 인코더는 공간적 이웃의 데이터로부터 또는 이전에 코딩된 픽처의 데이터로부터 현재 블록을 예측할 수도 있다. 그 후에, 비디오 인코더는 그 블록에 대한 실제 픽셀 값들과 그 블록에 대한 예측된 픽셀 값들 사이의 차이로서 그 블록에 대한 잔여치를 계산할 수도 있다. 따라서, 블록에 대한 잔여치는 픽셀 (또는 공간) 도메인에서의 픽셀 유닛 차이 값들을 포함할 수도 있다.
인트라 코딩과 관련하여, 비디오 인코더는 미리 정의된 인트라-예측 모드에 따라 예측 블록을 생성할 수도 있다. 비디오 인코더는 잔여 데이터의 블록을 생성하기 위해 현재 인코딩되고 있는 블록의 값들로부터, 예측 블록의 값들을 감산할 수도 있다. 비디오 인코더는 비디오 디코더에 의해 디코딩될 수도 있는 인코딩된 비트스트림에서 잔여 데이터의 블록 및 인트라-예측 모드를 시그널링할 수도 있다. 디코더는 (예컨대, 동일한 인트라-예측 모드를 사용하여) 동일한 예측 블록을 생성할 수 있고, 예측 블록의 데이터와 잔여 데이터를 결합함으로써 인코딩된 비디오 블록을 재구성할 수 있다.
신흥 HEVC 표준은 35 개 만큼 많은 인트라-예측 모드들을 사용할 수도 있다. 비디오 인코더에 의해 선택된 인트라-예측 모드를 시그널링하는데 필요한 비트들의 수를 감소시키기 위해, 비디오 인코더는 하나 이상의 공간적으로 이웃하는 블록들과 같은 이미 코딩된 비디오 블록들에 대한 인트라-예측 모드들을 식별할 수도 있다. 이러한 이웃 블록들의 인트라-예측 모드들에 기초하여, 비디오 인코더는 현재 비디오 블록에 대한 가장 가능한 인트라-예측 모드를 식별할 수 있다. 가장 가능한 인트라-예측 모드는 현재 블록에 대한 콘텍스트에 기초하여 현재 비디오 블록을 인코딩하기 위해 가장 사용될 것 같은 인트라-예측 모드를 나타낸다. 콘텍스트는, 예컨대, 이웃 블록들을 위해 사용된 인트라-예측 모드들, 현재 블록의 사이즈, 및 다른 인자들의 임의의 조합에 의해 정의될 수도 있다. 비디오 인코더에 의해 현재 비디오 블록에 대한 콘텍스트를 결정하는데 사용된 인자들은 또한 비디오 디코더에 의해 인식가능하다. 따라서, 비디오 인코더에 의해 결정된 가장 가능한 인트라-예측 모드는 또한 비디오 디코더에 명확히 시그널링되어야할 필요없이 비디오 디코더에 의해 결정될 수도 있다. 가장 가능한 인트라-예측 모드는 현재 블록을 인코딩하기 위해 실제로 사용되는 인트라-예측 모드와 동일할 수도 있거나 동일하지 않을 수도 있다. 실제 인트라-예측 모드는, 어떤 인트라-예측 모드가 최대 품질의 재구성된 비디오를 생성하는지에 기초하여 비디오 인코더에 의해 결정될 수도 있다.
비디오 인코더는, 가장 가능한 인트라-예측 모드가 현재 비디오 블록에 대한 실제 예측 모드와 동일한 것을 표시하는, 비트스트림에 포함하기 위한 신택스 엘리먼트를 생성할 수 있다. 신택스 엘리먼트는, 예컨대, 단일 비트일 수도 있으며, 여기서 "1" 는 실제 인트라-예측 모드가 가장 가능한 인트라-예측 모드인 것을 표시하고, "0" 은 실제 인트라-예측 모드가 가장 가능한 인트라-예측 모드가 아닌 것을 표시한다. 따라서, 현재 비디오 블록에 대한 실제 인트라-예측 모드가 가장 가능한 인트라-예측 모드일 경우, 현재 비디오 블록에 대한 실제 인트라-예측 모드는 단일 비트 (이 예에서는 "1") 를 사용하여 인코더로부터 디코더로 시그널링될 수 있다. 실제 인트라-예측 모드가 가장 가능한 인트라-예측 모드인 예시들에서, 실제 인트라-예측은 제 1 비트 다음의 코드워드 (즉, "0" 의 제 1 비트 다음 코드워드) 로 시그널링될 수 있다.
인터-코딩과 관련하여, 비디오 인코더는 현재 인코딩되고 있는 블록의 값들을 예측하는데 사용될 수도 있는 비디오 데이터의 예측 블록을, 예컨대 다른 비디오 픽처 또는 슬라이스로부터 식별하기 위해 모션 벡터를 생성할 수도 있다. 비디오 인코더는 현재 블록의 값들에서 예측 블록의 값들을 감산하여 잔여 데이터의 블록을 생성할 수도 있다. 일반적으로, 비디오 인코더는 비디오 디코더에 의해 디코딩될 수도 있는 모션 벡터 및 잔여 데이터를 인코딩된 비트스트림에서 시그널링할 수도 있다. 디코더는 디코딩된 픽처 버퍼에서 디코딩된 블록들의 세트 사이에 (예컨대, 모션 벡터에 기초하여) 동일한 예측 블록을 위치시키고, 잔여 데이터를 예측 블록의 데이터와 결합함으로써 인코딩된 비디오 블록을 재구성할 수 있다.
일부 경우들에서, 모션 벡터들의 예측 코딩은 또한, 모션 벡터를 통신하는데 필요한 데이터의 양을 추가로 감소시키기 위해 적용된다. 이 경우, 모션 벡터 자체를 인코딩하고 통신하는 것보다는, 인코더는 알려진 (또는 알 수 있는) 모션 벡터와 관련된 모션 벡터 차이 (MVD) 를 인코딩하고 통신한다. 알려진 모션 벡터는 현재 모션 벡터를 정의하기 위해 MVD 와 함께 사용될 수도 있고, 소위 모션 벡터 예측자 (MVP) 로 정의될 수 있다.
신흥 HEVC 표준에서 적응형 모션 벡터 예측 (AMVP) 으로 지칭되는 프로세스가 구현될 수도 있고, 여기서 모션 벡터 후보 세트는 공간 및 시간 방향들에서 몇몇 이웃 블록들로부터 형성된다. 모션 벡터 후보 세트는 MVP 에 대한 복수의 후보들을 포함한다. 이 경우, 비디오 인코더는 (예컨대, 소위 레이트-왜곡 비용 분석을 사용하여) 인코딩 레이트 및 왜곡의 분석에 기초하여 후보 세트로부터 가장 정확한 예측자를 선택한다. 모션 벡터 예측자 인덱스 (mvp_idx) 는 비디오 디코더로 송신되어, MVP 를 위치시킬 장소, 즉 MVP 후보들 중 어느 것이 디코딩을 위해 사용되는지를 디코더에게 통지할 수도 있다. MVD 도 또한 통신된다. 디코더는 모션 벡터를 재구성하기 위해 MVD 를 (모션 벡터 예측자 인덱스에 의해 정의되는) MVP 와 결합할 수 있다.
소위 "병합 모드" 가 사용가능할 수도 있고, 여기서 이웃 비디오 블록의 모션 정보 (예컨대, 모션 벡터들, 참조 예측 인덱스들, 예측 방향들, 또는 다른 정보) 가 코딩되고 있는 현재 비디오 블록을 위해 상속된다. 인덱스 값은 현재 비디오 블록이 (예컨대, 일시적으로 인접한 프레임으로부터 상부, 우상부, 좌측, 또는 함께 위치된) 모션 정보를 상속받는 이웃을 식별하는데 사용될 수도 있다. 병합 모드는 몇몇 후보 블록들 중 하나로부터 모션 정보를 사용하지만, MVD 에 의존하지 않는다.
따라서, 본 개시물은 일반적으로 비디오 데이터의 예측 블록을 생성하기 위한 인트라-예측 정보 및/또는 인터-예측 정보로서 "예측 정보" 를 지칭한다. 즉, 인트라-코딩에 대하여, 예측 정보는 비디오 데이터의 블록을 코딩하는데 사용된 인트라-코딩 모드를 지칭할 수도 있다. 예측 정보는 또한, 이웃하는 인트라-코딩 모드들이 (예컨대, 전술된 가장 가능한 모드 도출 프로세스를 사용하여) 블록을 코딩하기 위해 사용되는, 이웃하는 블록들의 인트라-코딩 모드들을 지칭할 수도 있다. 부가적으로 또는 대안적으로, 인트라-예측에 대하여, 예측 정보는 비디오 데이터의 블록을 코딩하는데 사용된 모션 정보 (예컨대, 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보) 를 지칭할 수도 있다. 예측 정보는 또한, 이웃하는 모션 정보가 (예컨대, 전술된 AMVP 및 병합 모드 프로세스들을 사용하여) 블록을 코딩하기 위해 사용되는 예들에서, 이웃 블록들의 모션 정보를 지칭할 수도 있다.
임의의 경우, 예측 정보는 소위 "라인 버퍼" 에 저장될 수도 있으며, 따라서 예측 정보는 코딩 동안 참조를 위해 사용가능하다. 인트라-코딩에 대하여, 비디오 코더는 블록들의 각각에 대한 인트라-예측 모드를 저장할 수도 있다. 인터-코딩에 대하여, 비디오 코더는 블록들 각각에 대하여 모션 정보 (예컨대, 모션 벡터들 (mvx, mvy), 참조 픽처 인덱스들 (ref_idx), 예측 방향들 (inter_dir), 또는 다른 정보) 를 저장할 수도 있다. 라인 버퍼는 현재 코딩되고 있는 블록 또는 슬라이스 위에 배치된 블록들의 라인과 연관된 예측 정보를 저장하고, 통상적으로 픽처의 전체 폭을 가로질러 확장할 수도 있다.
라인 버퍼는 비디오 코더에 의해 액세스될 수도 있는 메모리를 포함할 수도 있다. 라인 버퍼는 상대적으로 많은 양의 데이터일 수도 있는 전체 프레임에 대한 예측 정보를 버퍼링하는 것과 코딩 동안 액세스될 최고 포텐셜을 갖는 예측 정보를 버퍼링하는 것 사이에서 균형을 유지할 수도 있다. 즉, 일부 예들에서 오직 가장 빈번하게 사용되는 예측 정보만이 버퍼의 사이즈를 가능하면 작게 유지하기 위해 라인 버퍼에 저장될 수도 있다.
그러나, 비디오 해상도 및 프레임들의 폭 (예컨대, 소정 비디오 프레임을 가로질러 우측에서 좌측으로의 픽셀들의 개수) 가 증가함에 따라, 라인 버퍼에 저장되는 데이터의 양 또한 증가한다. 일부 예들에서, 4×4 픽셀들만큼 작은 비디오 데이터의 블록들이 픽처를 코딩하는데 사용될 수도 있다. 일 예로서, (예컨대, 1080p 비디오에 대한) 1920×1080 픽셀 픽처는 무려 4×4 픽셀들의 495 개 블록들을 포함할 수도 있다. 따라서, 예측 정보가 비디오 데이터의 각각의 블록에 대하여 저장된다면, 비디오 코더는 상대적으로 상당한 양의 데이터를 라인 버퍼에 저장하도록 요구될 수도 있다.
본 개시물의 기술들은 일반적으로, 코딩 동안 버퍼링되는 이웃 블록들로부터 예측 정보의 양을 제한하거나 감소시키는 것과 관련된다. 예를 들어, 현재 블록을 코딩할 경우 상부-이웃 블록들의 예측 정보를 사용하는 것보다, 일부 예들에서, 비디오 코딩 디바이스는 좌측-이웃 블록들로부터의 예측 정보에 기초하여 예측 정보를 결정할 수도 있다. 다른 예들에서, 비디오 코딩 디바이스는, 오직 현재 블록이 (예컨대, 이하 더 상세히 설명되는 것과 같이, 신흥 HEVC (High Efficiency Vedio Coding) 표준에서 최대 코딩 유닛 (LCU) 으로 지칭되는) 더 큰 파티션의 서브-블록이고 그러한 서브-블록이 다른 LCU 를 접하지 않을 경우에만, 상부-이웃 블록으로부터의 데이터에 기초하여 예측 정보를 결정할 수도 있다. 이하 설명되는 것과 같은 다양한 다른 기술들은 또한, 비디오 코딩 동안 버퍼링되는 예측 정보의 양을 감소시키는데 사용될 수도 있다.
본 개시물의 기술들에 따라 버퍼링되는 데이터의 양을 제한하는 것은 비디오 데이터를 코딩하는 것과 연관된 복잡도를 감소시킬 수도 있다. 예를 들어, 본 개시물의 양태들은 비디오 코딩 디바이스가 더 적은 데이터를 버퍼링하게 할 수도 있고, 따라서 그러한 버퍼링과 연관된 메모리 요건들을 감소시킬 수도 있다. 추가로, 예측 정보가 도출되는 로케이션들을 감소시키는 것은 엔트로피 코딩 효율 및/또는 스루풋을 개선할 수도 있다. 예컨대, 본 개시물의 기술들은 파싱 스루풋을 개선하도록 구현될 수도 있다. 즉, 비디오 데이터가 비디오 코더에 의해 수신되기 때문에, 비디오 데이터는 특정 파싱 프로세스 (예컨대, 웨이브프론트 파싱) 에 따라 파싱될 수도 있다 (예컨대, 판독되고 세그먼트화될 수도 있다). 일부 예들에서, 파싱 프로세스는 하나 이상의 내부 LCU들 (예컨대, 슬라이스에서 상부 및/또는 좌측 대부분 LCU) 를 파싱한 후에 슬라이스의 각 LCU 를 파싱하는 것을 포함할 수도 있다. LCU들을 파싱하는 것은 비디오 코더가 (예컨대, 병렬 프로세싱을 위해) 다수의 프로세싱 스레드들을 형성하게 할 수도 있고, 각각의 스레드는 하나 이상의 파싱된 LCU들을 포함한다.
그러나, 예측 정보 의존성들로 인해, 특정 스레드들이 병렬 프로세싱 애플리케이션들에 최적이지 않을 수도 있는 다른 스레드들에 의존할 수도 있다. 예를 들어, 제 1 스레드는 제 2 의 상이한 스레드에 의해 처리되는 데이터에 의존할 수도 있으며, 제 1 스레드가 제 2 스레드가 데이터를 처리할 때까지 대기하게 할 수도 있다. 즉, 데이터는 일반적으로 데이터가 유용한 지점까지 파싱되며, 그 후에 데이터는 코딩된다. 종래의 웨이브프론트들의 경우, 비디오 코더는 제 1 (예컨대, 최상부) 웨이브프론트의 데이터를 코딩하기 위해 감속할 수도 있다. 그것은 차례로, 다음 스레드가 중지하게 할 수도 있고, 이는 그 다음 스레드가 중지하게 한다. 본 개시물의 양태들에 따라 예측 정보 의존도들을 제거함으로써, 일 스레드의 감속은 처리되고 있는 다른 스레드들에 영향을 미치지 않을 것이다. 파싱에 대하여, 이는 스레드에 대한 파서가 다른 스레드들을 참조해야하는 것이 아니라 각각의 스레드에 대해 독립적으로 동작할 수도 있는 것을 의미한다.
일 예에서, 예시의 목적을 위해, 현재 코딩되고 있는 LCU 가 슬라이스의 최상부 로우 아래에 배치되고, 그 슬라이스의 하나 이상의 LCU들이 현재 슬라이스 위에 배치되는 것을 가정한다. 이러한 예에서, 현재 LCU 를 코딩하기 위한 예측 정보는 상부 이웃 LCU (예컨대, 현재 LCU 위에 배치된 LCU) 에 포함될 수도 있다. 즉, 현재 LCU 를 코딩하기 위한 예측 정보는 상부 이웃 LCU 의 하나 이상의 값들 (예컨대, 인트라-예측 모드들, 모션 정보, 등등) 에 의존할 수도 있다. 따라서, 현재 LCU 는, 현재 LCU 가 코딩될 수 있기 전에 상부 이웃 LCU 가 코딩될 때까지 대기해야만 할 수도 있다. 그러한 레이턴시를 도입하는 것은 특히 병렬 프로세싱 애플리케이션들에서 코딩 프로세스를 감속할 수도 있다. 본 개시물의 양태들은 그러한 의존도들을 감소시키도록 구현될 수도 있고, 따라서 전술된 레이턴시들에 대한 포텐셜을 감소시킬 수도 있다.
도 1 은 예측 정보의 효율적인 저장을 위한 기술들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 이후의 시간에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 비디오 데이터를 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋-톱 박스들, 소위 "스마트" 폰들, 소위 "스마트" 패드들로 지칭된 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함하는 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 장착될 수도 있다.
목적지 디바이스 (14) 는 디코딩될 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체 (16) 를 통해 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 유형의 매체 또는 디바이스를 포함할 수도 있다. 일 예에서, 컴퓨터 판독가능 매체 (16) 는 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 실시간으로 목적지 디바이스 (14) 로 직접 송신하게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 통신 표준, 예컨대 무선 통신 프로토콜에 따라 변조되고, 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 예컨대 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 패킷-기반 네트워크, 예컨대 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수도 있다. 통신 매체는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 라우터들, 스위치들, 기지국들, 또는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터는 출력 인터페이스 (22) 로부터 저장 디바이스로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 디바이스로부터 액세스될 수도 있다. 저장 디바이스는 다양한 분배형 또는 국부적으로 액세스된 데이터 저장 매체, 예컨대 하드 드라이브, 블루-레이 디스크들, DVD 들, CD-ROM 들, 플래시 메모리, 휘발성 또는 비-휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체 중 어느 하나를 포함할 수도 있다. 추가의 예에서, 저장 디바이스는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오를 저장할 수도 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해 저장 디바이스로부터 저장된 비디오 데이터를 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 유형의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷 접속을 포함하는 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터를 액세스할 수도 있다. 이는, 파일 서버 상에 저장된 인코딩된 비디오 데이터를 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시물은, 일반적으로 비디오 디코더 (30) 와 같은 다른 디바이스로 소정의 정보를 "시그널링하는" 비디오 인코더 (20) 를 지칭할 수도 있다. 그러나, 비디오 인코더 (20) 는 비디오 데이터의 각종 인코딩된 부분들과 소정의 신택스 엘리먼트들을 연관시킴으로써 정보를 시그널링할 수도 있다. 즉, 비디오 인코더 (20) 는 소정의 신택스 엘리먼트들을 저장함으로써 비디오 데이터의 각종 인코딩된 부분들의 헤더들로 데이터를 "시그널링"할 수도 있다. 일부 경우들에서, 이러한 신택스 엘리먼트들은 비디오 디코더 (30) 에 의해 수신 및 디코딩되기 전에 인코딩 및 저장 (예를 들어, 저장 매체 (34) 또는 파일 서버 (36) 에 저장) 될 수도 있다. 따라서, 용어 "시그널링" 은, 일반적으로 압축된 비디오 데이터를 디코딩하기 위한 신택스 또는 다른 데이터의 통신을 지칭할 수도 있는데, 이러한 통신이 실시간으로 또는 거의 실시간으로 또는 어떤 기간 동안 발생하든, 예컨대, 인코딩 시에 신택스 엘리먼트를 레코딩 매체에 저장할 때 발생할 수도 있고, 그 후 이 매체에 저장된 후 아무 때나 디코딩 디바이스에 의해 취출될 수도 있다.
일반적으로 예측 데이터 효율적인 저장에 관련되는 본 개시물의 기술들은 무선 애플리케이션들 또는 설정들에 반드시 제한되지는 않는다. 이 기술들은 다양한 멀티미디어 애플리케이션들, 예컨대 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신, 위성 텔레비전 송신들, 인터넷 스트리밍 비디오 송신들, 예컨대 DASH (dynamic adaptive streaming over HTTP), 데이터 저장 매체 상에 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들 중 어느 하나의 지원으로 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 애플리케이션들, 예컨대 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 텔레포니를 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 본 개시물에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 모션 벡터들을 코딩하고 HEVC 및 그 확장들, 예컨대 멀티뷰 또는 3-차원 비디오 (3DV) 확장들에서 양방향-예측 (bi-prediction) 을 수행하기 위한 기술들을 적용하도록 구성될 수도 있다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 컴포넌트들 또는 배열체들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 외부 비디오 소스 (18), 예컨대 외부 카메라로부터 비디오 데이터를 수신할 수도 있다. 유사하게, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하기 보다는 외부 디스플레이 디바이스와 인터페이스할 수도 있다.
도 1 의 예시된 시스템 (10) 은 단지 일 예이다. 예측 데이터의 효율적인 저장을 위한 기술들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로, 본 개시물의 기술들은 비디오 인코딩 디바이스에 의해 수행되지만, 이 기술들은 또한 통상적으로 "코덱 (CODEC)" 으로서 지칭된 비디오 인코더/디코더에 의해 수행될 수도 있다. 더욱이, 본 개시물의 기술들은 또한, 비디오 프리프로세서에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 단지, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들이다. 일부 예들에서, 디바이스들 (12, 14) 은 디바이스들 (12, 14) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작할 수도 있다. 따라서, 시스템 (10) 은 예를 들어 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 텔레포니를 위해 비디오 디바이스들 (12, 14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡처 디바이스, 예컨대 비디오 카메라, 미리 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐트 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 추가의 대안으로서, 비디오 소스 (18) 는 소스 비디오, 또는 라이브 비디오, 아카이빙된 비디오, 및 컴퓨터 생성 비디오의 조합과 같은 컴퓨터 그래픽 기반 데이터를 생성할 수도 있다. 일부 경우들에서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 전술된 바와 같이 본 개시물에 설명된 기술들은 일반적으로 비디오 코딩에 적용 가능하고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각 경우에서, 캡처된, 미리-캡처된, 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 그 후, 컴퓨터 판독가능 매체 (16) 상의 출력 인터페이스 (22) 에 의해 출력될 수도 있다.
컴퓨터 판독가능 매체 (16) 는 트랜션트 매체 (transient media), 예컨대 무선 브로드캐스트 또는 유선 네트워크 송신, 또는 저장 매체 (즉, 비-일시적 저장 매체), 예컨대 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터 판독가능 매체를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고, 그 인코딩된 비디오 데이터를 예를 들어 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 매체 생산 설비, 예컨대 디스크 스탬핑 설비의 컴퓨팅 디바이스는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생산할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는 각종 예들에서 각종 형태들의 하나 이상의 컴퓨터 판독가능 매체를 포함하도록 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 컴퓨터 판독가능 매체 (16) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 의 정보는, 블록들 및 다른 코딩된 유닛들, 예를 들어 GOP 들의 특징 및/또는 프로세싱을 설명하는 신택스 엘리먼트들을 포함하는, 비디오 디코더 (30) 에 의해서도 사용되는, 비디오 인코더 (20) 에 의해 정의된 신택스 정보를 포함할 수도 있다. 특히, 본 개시물은 다수의 블록들, 예컨대 슬라이스, 픽처, 웨이브프론트 (wavefront) 들의 세트, 또는 타일을 포함하는 데이터의 유닛으로서 "코딩된 유닛" 을 지칭한다. 따라서, 용어 "코딩된 유닛 (coded unit)" 은 다수의 블록들, 예를 들어 다수의 최대 코딩 유닛 (LCU) 들을 포함하는 것으로 이해되어야 한다. 더욱이, 용어 "코딩된 유닛" 은 HEVC 에서 사용된 바와 같은 용어들 "코딩 유닛" 또는 CU 와 혼동되지 않아야 한다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 다양한 디스플레이 디바이스들, 예컨대 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스 중 어느 하나를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 코딩 표준, 예컨대 현재 개발하에 있는 고효율 비디오 코딩 (HEVC) 표준에 따라 동작할 수도 있고, HEVC 테스트 모델 (HM) 을 따를 수도 있다. 이하 HEVC WD7 로 지칭되는 HEVC 의 최신 워킹 드래프트 (WD) 는 http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v5.zip 에서 입수가능하고, 더 최신 버전은 http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip 에서 입수가능하며, 이들 양자는 본 명세서에서 그 전체가 설명되는 것처럼 본 명세서에 참조에 의해 통합된다. 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다른 특허 또는 산업 표준, 예컨대 ITU-T H.264 표준, 다르게는 MPEG-4, 파트 (Part) 10, AVC (Advanced Video Coding) 으로 지칭되는 표준, 또는 그러한 표준들의 확장들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기술들은 임의의 특정 코딩 표준에 제한되지 않는다. 비디오 코딩 표준들의 다른 예들은 MPEG-2 및 ITU-T H.263 를 포함한다.
ITU-T H.264/MPEG-4 (AVC) 표준은 ISO/IEC 동화상 전문가 그룹 (MPEG) 과 함께, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 조인트 비디오 팀 (JVT) 으로서 알려진 공동 파트너쉽의 성과로서, 정식화되었다. 일부 양태들에서, 본 개시물에 설명된 기술들은 일반적으로 H.264 표준에 따르는 디바이스들에 적용될 수도 있다. H.264 표준은 2005 년 3월, ITU-T 스터디 그룹에 의한, ITU-T 권고안 H.264, Advanced Video Coding for generic audiovisual services 에 설명되어 있으며, 본원에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양으로서 지칭될 수도 있다. 조인트 비디오 팀 (JVT) 은 H.264/MPEG-4 AVC 에 대한 확장판들에 대해 계속 노력을 들이고 있다.
JCT-VC 는 HEVC 표준의 개발에 착수하고 있다. HEVC 표준화 노력들은 HEVC 테스트 모델 (HM) 으로서 지칭된 비디오 코딩 디바이스의 진화 모델에 기초한다. HM 은 예를 들어, ITU-T H.264/AVC 에 따른 기존 디바이스들에 비해 비디오 코딩 디바이스들의 여러 추가적 능력들을 추정한다. 예를 들어, H.264 은 9 개의 인트라-예측 인코딩 모드들을 제공하는 반면에, HM 은 33 개 만큼 많은 인트라-예측 인코딩 모드들을 제공할 수도 있다.
일반적으로, HM 의 작업 모델은, 비디오 프레임 또는 픽처가 루마 및 크로마 샘플들 양자를 포함하는 최대 코딩 유닛들 (LCU) 또는 트리블록들의 시퀀스로 분할될 수도 있다는 것을 설명한다. 비트스트림 내의 신택스 데이터는 픽셀들의 수의 관점에서 최대 코딩 유닛인, LCU 에 대한 사이즈를 정의할 수도 있다. 슬라이스는 코딩 순서에서 다수의 연속적인 트리블록들을 포함한다. 비디오 픽처는 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 각각의 트리블록은 쿼드트리에 따라 코딩 유닛 (CU) 들로 분할될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 트리블록에 대응하는 루트 노드를 갖고, CU 당 하나의 노드를 포함한다. CU 가 4 개의 서브-CU 들로 분할되면, CU 에 대응하는 노드는 4 개의 리프 노드들을 포함하고, 이 리프 노드들 각각은 서브-CU들 중 하나에 대응한다.
쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU 에 대한 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서의 노드는, 노드에 대응하는 CU 가 서브-CU 들로 분할되는지 여부를 나타내는, 분할 플래그를 포함할 수도 있다. CU 에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, CU 가 서브-CU 들로 분할되는지의 여부에 의존할 수도 있다. CU 가 추가로 분할되지 않으면, 이것은 리프-CU 로서 지칭된다. 본 개시물에서, 원래의 리프-CU 의 명백한 분할이 존재하지 않더라도 리프-CU 의 4 개의 서브-CU 들은 또한, 리프-CU 들로서 지칭될 것이다. 예를 들어, 16×16 사이즈에서 CU 가 더 분할되지 않으면, 4 개의 8×8 서브-CU 들은 또한 16×16 CU 가 절대로 분할되지 않았더라도 리프-CU 들로서 지칭될 것이다.
CU 가 사이즈 차이 (size distinction) 를 갖지 않는다는 점을 제외하면, CU 는 H.264 의 매크로블록과 유사한 목적을 갖는다. 예를 들어, 트리블록은 4 개의 차일드 (child) 노드들 (또한, 서브-CU 들로도 지칭됨) 로 분할될 수도 있고, 각각의 차일드 노드는 차례로 페어런트 (parent) 노드일 수도 있고 다른 4 개의 차일드 노드들로 분할될 수도 있다. 쿼드트리의 리프 노드로서 지칭된 최종의, 비분할 (unsplit) 차일드 노드는 리프-CU 로도 지칭된 코딩 노드를 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는 최대 CU 깊이로서 지칭된, 트리블록이 분할될 수도 있는 최대 횟수를 정의할 수도 있고, 또한 코딩 노드들의 최소 사이즈를 정의할 수도 있다. 따라서, 비트스트림은 또한, 최소 코딩 유닛 (SCU) 을 정의할 수도 있다. 본 개시물은 HEVC 맥락에서 용어 "블록"을 사용하여 CU, PU, 또는 TU 중 어느 하나, 또는 다른 표준들의 맥락에서 유사한 데이터 구조들 (예를 들어, H.264/ AVC 에서 매크로블록들 및 그 서브-블록들) 을 지칭한다. 추가로, 본 개시물은, 비디오 데이터의 2 이상의 블록들을 포함할 수도 있는, 미리 정의된 품질의 비디오 데이터를 설명하기 위해 용어 "코딩된 유닛" 을 사용할 수도 있다. 즉, 예를 들어, 코딩된 유닛은 픽처, 슬라이스, 타일 또는 타일 세트, 웨이브프론트 세트, 또는 비디오 데이터를 포함하는 임의의 다른 미리 정의된 유닛을 지칭할 수도 있다. 따라서, 용어 "코딩된 유닛" 은 용어들 "코딩 유닛" 또는 CU 와 혼동되지 않아야 한다.
CU 는 코딩 노드, 및 그 코딩 노드와 연관된 변환 유닛 (TU) 들 및 예측 유닛 (PU) 들을 포함한다. CU 의 사이즈는 코딩 노드의 사이즈에 대응하고, 정사각형 형상이어야 한다. CU 의 사이즈는 8×8 픽셀들에서 최대 64×64 픽셀들 또는 그 이상의 픽셀들을 갖는 트리블록의 사이즈까지 범위에 이를 수도 있다. 각각의 CU 는 하나 이상의 PU 들 및 하나 이상의 TU 들을 포함할 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어 하나 이상의 PU 들로의 CU 의 파티셔닝을 설명할 수도 있다. 파티셔닝 모드들은, CU 가 스킵 또는 직접 모드 인코딩되든, 인트라-예측 모드 인코딩되든, 또는 인터-예측 모드 인코딩되든 간에 상이할 수도 있다. PU 들은 비-정사각형 형상이도록 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어 쿼드트리에 따른 하나 이상의 TU 들로의 CU 의 파티셔닝을 설명할 수도 있다. TU 는 정사각형 또는 비-정사각형 (예를 들어, 직사각형) 형상일 수 있다.
HEVC 표준은 상이한 CU 들에 대해 상이할 수도 있는 TU 들에 따른 변형들을 허용한다. 통상적으로, TU 들은 파티셔닝된 LCU 에 대해 정의된 소정의 CU 내의 PU 들의 사이즈에 기초한 사이즈이지만, 이는 항상 그 경우가 아닐 수도 있다. 통상적으로, TU 들은 PU 들과 동일한 사이즈 또는 더 작은 사이즈이다. 일부 예들에서, CU 에 대응하는 잔여 샘플들은 "잔여 쿼드 트리 (residual quad tree)" (RQT) 로서 알려진 쿼드트리 구조를 사용하여 더 작은 유닛들로 세분될 수도 있다. RQT의 리프 노드들은 변환 유닛 (TU) 들로서 지칭될 수도 있다. TU 들과 연관된 픽셀 차이 값들은 양자화될 수도 있는, 변환 계수들을 생성하도록 변환될 수도 있다.
리프-CU 는 하나 이상의 예측 유닛 (PU) 들을 포함할 수도 있다. 일반적으로, PU 는 대응하는 CU 의 전부 또는 일부에 대응하는 공간 영역을 나타내고, PU 에 대한 참조 샘플을 취출하기 위한 데이터를 포함할 수도 있다. 더욱이, PU 는 예측에 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩되는 경우, PU 에 대한 데이터는 잔여 쿼드트리 (RQT) 에 포함될 수도 있고, 이는 PU 에 대응하는 TU 에 대한 인트라-예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로써, PU 가 인터-모드 인코딩되는 경우, PU 는 PU 에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. PU 에 대한 모션 벡터를 정의하는 데이터는, 예를 들어 모션 벡터의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트, 모션 벡터의 분해능 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 픽처, 및/또는 모션 벡터에 대한 참조 픽처 리스트 (예컨대, 리스트 0 또는 리스트 1, 또는 리스트 C) 를 설명할 수도 있다.
하나 이상의 PU 들을 갖는 리프-CU 는 또한, 하나 이상의 변환 유닛 (TU) 들을 포함할 수도 있다. 전술된 바와 같이, 변환 유닛들은 RQT (또한, TU 쿼드트리 구조로도 지칭됨) 를 사용하여 지정될 수도 있다. 예를 들어, 분할 플래그는, 리프-CU 가 4 개의 변환 유닛들로 분할되는지 여부를 나타낼 수도 있다. 그러면, 각각의 변환 유닛은 추가의 서브-TU 들로 더 분할될 수도 있다. TU 가 더 분할되지 않는 경우, 이것은 리프-TU 로서 지칭될 수도 있다. 일반적으로, 인트라 코딩에 있어서, 리프-CU 에 속하는 리프-TU 들 모두는 동일한 인트라-예측 모드를 공유한다. 즉, 동일한 인트라-예측 모드는 일반적으로 리프-CU 의 모든 TU 들에 대해 예측된 값들을 계산하도록 적용된다. 인트라 코딩에 있어서, 비디오 인코더 (20) 는 TU 에 대응하는 CU 의 부분과 원래의 블록 간의 차이로서, 인트라-예측 모드를 사용하여 각각의 리프-TU 에 대한 잔여 값을 계산할 수도 있다. TU 는 PU 의 사이즈에 반드시 제한되지는 않는다. 따라서, TU 들은 PU 보다 더 크거나 더 작을 수도 있다. 인트라 코딩에 있어서, PU 는 동일한 CU 에 대해 대응하는 리프-TU 와 함께 위치상될 수도 있다. 일부 예들에서, 리프-TU 의 최대 사이즈는 대응하는 리프-CU 의 사이즈에 대응할 수도 있다.
더욱이, 리프-CU 들의 TU 들은 또한, 잔여 쿼드트리 (RQT) 들로서 지칭된 각각의 쿼드트리 데이터 구조들과 연관될 수도 있다. 즉, 리프-CU 는 리프-CU 가 TU 들로 파티셔닝되는 방법을 나타내는 쿼드트리를 포함할 수도 있다. 일반적으로, TU 쿼드트리의 루트 노드는 리프-CU 에 대응하는 한편, 일반적으로 CU 쿼드트리의 루트 노드는 트리블록 (또는 LCU) 에 대응한다. 분할되지 않는 RQT 의 TU 들은 리프-TU 들로서 지칭된다. 일반적으로, 다르게 언급되지 않는다면, 본 개시물은 용어들 CU 및 TU 를 사용하여 리프-CU 및 리프-TU 를 각각 지칭한다.
통상적으로, 비디오 시퀀스는 일련의 비디오 픽처들을 포함한다. 일반적으로, 픽처들의 그룹 (GOP) 은 일련의 하나 이상의 비디오 픽처들을 포함한다. GOP 는 GOP 의 헤더, 픽처들의 하나 이상의 헤더, 또는 GOP 에 포함된 다수의 픽처들을 설명하는 그 밖에 다른 곳에 신택스 데이터를 포함할 수도 있다. 픽처의 각각의 슬라이스는 각각의 슬라이스에 대한 인코딩 모드를 설명하는 슬라이스 신택스 데이터를 포함할 수도 있다. 통상적으로, 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위해 개별의 비디오 슬라이스들 내의 비디오 블록들에 대해 동작한다. 비디오 블록은 CU 내의 코딩 노드에 대응할 수도 있다. 비디오 블록들은 고정 또는 가변 사이즈들을 가질 수도 있고, 지정된 코딩 표준에 따라 사이즈가 상이할 수도 있다.
일 예로써, HM 은 각종 PU 사이즈들에서 예측을 지원한다. 특정 CU 의 사이즈가 2N×2N 이라고 가정하면, HM 은 2N×2N 또는 N×N 의 PU 사이즈들에서 인트라-예측, 및 2N×2N, 2N×N, N×2N, 또는 N×N 의 대칭 PU 사이즈들에서 인터-예측을 지원한다. HM 은 또한, 2N×nU, 2N×nD, nL×2N, 및 nR×2N 의 PU 사이즈들에서 인터-예측에 대한 비대칭 파티셔닝을 지원한다. 비대칭 파티셔닝에서, CU 의 일 방향은 파티셔닝되지 않는 한편, 다른 방향은 25% 및 75% 로 파티셔닝된다. 25% 파티션에 대응하는 CU 의 부분은 "n" 다음에 "상방 (Up)", "하방 (Down)" "좌측 (Left)" 또는 "우측 (Right)" 의 표시에 의해 표시된다. 따라서, 예를 들어 "2N×nU" 은 상방에서 2N×0.5N PU 로, 그리고 하방에서 2N×1.5N PU 로 수평적으로 파티셔닝되는 2N×2N CU 를 지칭한다.
이 개시물에서, "N×N" 및 "N 바이 N" 은 세로방향 및 가로방향 치수들의 관점에서 비디오 블록의 픽셀 치수들을, 예컨대, 16×16 픽셀들 또는 16 바이 16 픽셀들을 지칭하도록 상호교환적으로 사용될 수 있다. 일반적으로, 16×16 블록은 수직 방향에서 16 픽셀들 (y = 16) 및 수평 방향에서 16 픽셀들 (x = 16) 을 가질 것이다. 유사하게, N×N 블록은 일반적으로 수직 방향에서 N 개 픽셀들 및 수평 방향의 N 개 픽셀들을 가지며, 여기서 N 은 음이 아닌 정수 값을 나타낸다. 블록에서의 픽셀들은 행들 및 열들로 배열될 수도 있다. 더욱이, 블록들은 반드시 수직 방향에서와 동일한 수의 픽셀들을 수평 방향에서 가질 필요는 없다. 예를 들어, 블록들은 M이 N과 반드시 동일하지는 않은 N×M 픽셀들을 포함할 수도 있다.
CU 의 PU 들을 사용하는 인트라-예측 또는 인터-예측 코딩 다음에, 비디오 인코더 (20) 는 CU 의 TU 들에 대한 잔여 데이터를 계산할 수도 있다. PU 들은 공간 도메인 (또한, 픽셀 도메인으로 지칭됨) 에서 예측 픽셀 데이터를 생성하는 방법 또는 모드를 설명하는 신택스 데이터를 포함할 수도 있고, TU 들은 잔여 비디오 데이터에 대한 변환, 예를 들어 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환의 적용 다음의 변환 도메인에서의 계수들을 포함할 수도 있다. 잔여 데이터는 PU 들에 대응하는 예측 값들과 인코딩되지 않은 픽처의 픽셀들 간의 픽셀 차이들에 대응할 수도 있다. 비디오 인코더 (20) 는 CU 에 대한 잔여 데이터를 포함하는 TU 들을 형성하고, 그 후 이 TU 들을 변환하여 CU 에 대한 변환 계수들을 생성할 수도 있다.
변환 계수들을 생성하기 위한 임의의 변환들 다음에, 비디오 인코더 (20) 는 변환 계수들의 양자화를 수행할 수도 있다. 일반적으로, 양자화는, 변환 계수들이 양자화되어 가능하게는 계수들을 표현하는데 사용된 데이터의 양을 감소시켜 추가의 압축을 제공하는 프로세스를 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안에 m-비트 값으로 잘라버림될 (rounded down) 수도 있으며, 여기서 n 은 m 보다 크다.
양자화 다음에, 비디오 인코더는 변환 계수들을 스캔하여, 양자화된 변환 계수들을 포함하는 2 차원 행렬로부터 1 차원 벡터를 생성할 수도 있다. 스캔은 어레이의 전방에 더 높은 에너지 (및 이에 따른 저 주파수) 계수들을 배치하고, 어레이의 후방에 더 낮은 에너지 (및 이에 따른 고 주파수) 계수들을 배치하도록 설계될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 엔트로피 인코딩될 수 있는 일련화된 벡터를 생성하기 위해, 미리 정의된 스캔 순서를 사용하여 양자화된 변환 계수들을 스캔할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 적응적 스캔을 수행할 수도 있다. 양자화된 변환 계수들을 스캔하여 1 차원 벡터를 형성한 후에, 비디오 인코더 (20) 는 1 차원 벡터를, 예를 들어, 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 콘텍스트 적응적 이진 산술적 코딩 (CABAC), 신택스-기반 콘텍스트-적응적 이진 산술적 코딩 (SBAC), 확률 인터벌 파티셔닝 엔트로피 (Probability Interval Partitioning Entropy; PIPE) 코딩 또는 다른 엔트로피 코딩 방법론에 따라서 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 또한, 비디오 데이터를 디코딩하는데 있어서 비디오 디코더 (30) 에 의한 사용을 위해 인코딩된 비디오 데이터와 연관된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
일반적으로, 비디오 디코더 (30) 에 의해 수행된 비디오 디코딩 프로세스는 비디오 인코더 (20) 에 의해 수행된 인코딩 기술들에 대한 가역적인 (reciprocal) 기술들을 포함할 수도 있다. 일반적으로 가역적이지만, 비디오 디코더 (30) 는 일부 경우들에서 비디오 인코더 (20) 에 의해 수행된 것들과 유사한 기술들을 수행할 수도 있다. 비디오 디코더 (30) 는 또한, 비디오 인코더 (20) 에 대하여 설명된 데이터를 포함하는 수신된 비트스트림에 포함된 다른 데이터 또는 신택스 엘리먼트들에 의존할 수도 있다.
특히, 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 예컨대, 라인 버퍼에서 코딩 동안 버퍼링되는 이웃 블록들로부터의 데이터의 양을 제한하기 위한 본 개시물의 기술들을 구현할 수도 있다. 예를 들어, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 코딩 동안 버퍼링되는 이웃 블록들로부터의 예측 정보의 양을 제한할 수도 있다. 전술된 것과 같이, 예측 정보는 인트라-예측 정보 (예컨대, 인트라-코딩 모드) 또는 모션 정보 (예컨대, 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보) 를 포함할 수도 있다. 본 개시물의 양태들에 따르면, 현재 블록을 코딩할 경우 상부-이웃 블록들의 예측 정보를 사용하는 것보다, 일부 예들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 좌측-이웃 블록들로부터의 데이터에 기초하여 예측 정보를 결정할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 오직 현재 블록이 (예컨대, 이하 더 상세히 설명되는 것과 같이, 신흥 HEVC (High Efficiency Vedio Coding) 표준에서 최대 코딩 유닛 (LCU) 으로 지칭되는) 더 큰 파티션의 서브-블록이고 그러한 서브-블록이 다른 LCU 를 접하지 않을 경우에만, 상부-이웃 블록으로부터의 데이터에 기초하여 예측 정보를 결정할 수도 있다. 이하 설명되는 것과 같은 다양한 다른 기술들은 또한, 비디오 코딩 동안 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 에 의해 버퍼링되는 예측 정보의 양을 감소시키는데 사용될 수도 있다.
비디오 인코더 (20) 와 비디오 디코더 (30) 각각은, 적용가능한 것으로서, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그램가능 게이트 어레이들 (FPGAs), 개별 로직 회로, 소프트웨어, 하드웨어, 펌웨어 또는 그것들의 임의의 조합과 같은 다양한 적합한 인코더 또는 디코더 회로 중 임의의 것으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들 내에 구비될 수도 있고, 그것들 중 어느 하나는 결합형 비디오 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 구비한 디바이스는 집적회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 이를테면 셀룰러 전화기를 포함할 수도 있다.
도 1 에 도시되지는 않았지만, 일부 양태들에서 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있고, 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함하여 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 핸들링할 수도 있다. 적용 가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들에 따를 수도 있다.
도 2 는 예측 정보의 효율적인 저장을 위해 본 개시물에서 설명되는 기술들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 예시하는 블록도이다. 비디오 인코더 (20) 는 비디오 슬라이스들 내의 비디오 블록들의 인트라 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 공간적 예측에 의존하여, 주어진 비디오 픽처 내의 비디오에서의 공간적 리던던시를 감소시키거나 또는 제거한다. 인터 코딩은 시간적 예측에 의존하여, 비디오 시퀀스의 인접한 픽처들 내의 비디오에서의 시간적 리던던시를 감소시키거나 또는 제거한다. 인트라 모드 (I 모드) 는 여러 공간 기반 압축 모드들 중 임의의 것을 나타낼 수도 있다. 단방향 예측 (P 모드) 및 양방향 예측 (B 모드) 과 같은 인터 모드들은 여러 시간 기반 압축 모드들 중 임의의 것을 나타낼 수도 있다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 데이터를 수신한다. 도 2 의 예에서, 비디오 인코더 (20) 는 모드 선택 유닛 (40), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56), 참조 픽처 메모리 (64) 를 구비한다. 모드 선택 유닛 (40) 은, 차례로, 모션 추정 유닛 (42), 모션 보상 유닛 (44), 인트라-예측 유닛 (46), 및 파티션 유닛 (48) 을 구비한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한 역 양자화 유닛 (58), 역변환 프로세싱 유닛 (60), 및 합산기 (62) 를 구비한다. 블록화제거 (deblocking) 필터 (도 2에서 미도시) 가 또한 복원된 비디오로부터 블록화 (blockiness) 아티팩트들을 제거하기 위해 필터 블록 경계들 내에 포함될 수도 있다. 원한다면, 블록화제거 필터는 통상 합산기 (62) 의 출력을 필터링할 것이다. 부가적인 루프 필터들 (인 루프 또는 포스트 루프) 은 또한 블록화제거 필터에 부가적으로 사용될 수도 있다. 그런 필터들은 간결함을 위해 도시되지 않았지만, 원한다면, (인-루프 필터로서) 합산기 (50) 의 출력을 필터링할 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 픽처 또는 슬라이스를 수신한다. 픽처 또는 슬라이스는 다수의 비디오 블록들로 세분될 수도 있다. 모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 시간적 압축을 제공하기 위해 하나 이상의 참조 픽처들에서 하나 이상의 블록들에 관하여 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라-예측 유닛 (46) 은 공간적 압축을 제공하기 위해 코딩될 블록과 동일한 픽처 또는 슬라이스에서의 하나 이상의 이웃 블록들에 대해, 수신된 비디오 블록의 인트라-예측 코딩을 대신 수행할 수도 있다. 비디오 인코더 (20) 는 다수의 코딩 패스들, 예컨대, 비디오 데이터의 각각의 블록에 대한 적절한 코딩 모드를 선택하는 것을 수행할 수도 있다.
추가로, 파티션 유닛 (48) 은 이전의 코딩 패스들에서의 이전의 파티셔닝 체계들의 평가에 기초하여, 비디오 데이터의 블록들을 서브-블록들로 파티셔닝할 수도 있다. 예를 들어, 파티션 유닛 (48) 은 초기에는 픽처 또는 슬라이스를 LCU들로 파티셔닝하고, 레이트 왜곡 분석 (예컨대, 레이트 왜곡 최적화) 에 기초하여 그 LCU들의 각각을 서브 CU들로 파티셔닝할 수도 있다. 모드 선택 유닛 (40) 은 LCU의 서브 CU들로의 파티셔닝을 나타내는 쿼드트리 데이터 구조를 추가로 생성할 수도 있다. 쿼드트리의 리프 노드 CU들은 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다.
모드 선택 유닛 (40) 은 코딩 모드들인 인트라 또는 인터 중의 하나를, 예컨대 에러 결과들에 기초하여 선택하고, 결과적인 인트라- 또는 인터-코딩된 블록을, 합산기 (50) 에 제공하여 잔여 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 참조 픽처로서 사용하기 위한 인코딩된 블록을 복원할 수도 있다. 모드 선택 유닛 (40) 은 또한 신택스 엘리먼트들, 이를테면 모션 벡터들, 인트라 모드 표시자들, 파티션 정보, 및 다른 그런 신택스 정보를 엔트로피 인코딩 유닛 (56) 에 제공한다.
모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만 개념상의 목적들을 위해 별개로 예시된다. 모션 추정 유닛 (42) 에 의해 수행된 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 현재 픽처 내의 코딩 중인 현재 블록 (또는 다른 코딩되는 유닛) 에 대한 참조 픽처 내의 예측 블록 (또는 다른 코딩된 유닛) 에 대한 현재 비디오 픽처 내의 비디오 블록의 PU의 변위를 나타낼 수도 있다. 전술된 것과 같이, 모션 벡터들은 예측 정보를 구성할 수도 있다.
예측 블록은 차의 절대값 합 (SAD), 차의 제곱 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 픽셀 차이의 관점에서 코딩될 블록에 밀접하게 매칭된다고 생각되는 블록이다. 일부 예들에서, 비디오 인코더 (20) 는 참조 픽처 메모리 (64) 에 저장된 참조 픽처들의 서브-정수 (sub-integer) 픽셀 위치들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 픽처의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수 픽셀 위치들의 값들을 보간할 수도 있다. 그러므로, 모션 추정 유닛 (42) 은 풀 (full) 픽셀 위치들 및 분수 픽셀 위치들에 대한 모션 검색을 수행하고 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 PU의 위치와 참조 픽처의 예측 블록의 위치를 비교함으로써 인터 코딩된 슬라이스에서의 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 참조 픽처는 참조 픽처 메모리 (64) 에 저장된 하나 이상의 참조 픽처들을 각각 식별하는 제 1 참조 픽처 목록 (목록 0) 또는 제 2 참조 픽처 목록 (목록 1) 으로부터 선택될 수도 있다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 에 전송한다.
일부 경우들에서, 현재 PU 에 대한 실제 모션 벡터를 전송하는 것 보다, 모션 추정 유닛 (42) 은 모션 벡터가 모션 벡터를 통신하는데 필요한 데이터의 양을 추가로 감소시키는 것을 예측할 수도 있다. 이 경우, 모션 벡터 자체를 인코딩하고 통신하는 것보다는, 모션 추정 유닛 (42) 은 알려진 (또는 알 수 있는) 모션 벡터와 관련된 모션 벡터 차이 (MVD) 를 생성할 수도 있다. 알려진 모션 벡터는 현재 모션 벡터를 정의하기 위해 MVD 와 함께 사용될 수도 있고, 소위 모션 벡터 예측자 (MVP) 로 정의될 수 있다. 일반적으로, 유효한 MVP 이기 위해, 예측을 위해 사용되고 있는 모션 벡터는 현재 코딩되고 있는 모션 벡터와 동일한 참조 픽처를 가리켜야만 한다.
일부 예들에서, 모션 추정 유닛 (42) 은 MVP 에 대한 후보들로서 공간적 및/또는 시간적 방향들에서 몇몇 이웃 블록들을 포함시키는 모션 벡터 예측자 후보 리스트를 형성할 수도 있다. 다수의 모션 벡터 예측자 후보들이 (다수의 후보 블록들로부터) 사용가능할 경우, 모션 추정 유닛 (42) 은 미리 결정된 선택 기준에 따라 현재 블록에 대한 모션 벡터 예측자를 결정할 수도 있다. 예를 들어, 모션 추정 유닛 (42) 은 (예컨대, 레이트-왜곡 비용 분석 또는 다른 코딩 효율 분석을 사용하여) 인코딩 레이트 및 왜곡의 분석에 기초하여 후보 세트로부터 가장 정확한 예측자를 선택할 수도 있다. 다른 예들에서, 모션 추정 유닛 (42) 은 모션 벡터 예측자 후보들의 평균을 생성할 수도 있다. 모션 벡터 예측자를 선택하는 다른 방법들이 또한 가능하다.
모션 벡터 예측자를 선택하면, 모션 추정 유닛 (42) 은 (예컨대, 비디오 디코더 (30) 와 같은) 비디오 디코더에, MVP 후보 블록들을 포함하는 참조 픽처 리스트에서 MVP를 위치시킬 위치를 통지하는데 사용될 수도 있는, 모션 벡터 예측자 인덱스 (mvp_flag) 를 결정할 수도 있다. 모션 추정 유닛 (42) 은 또한 현재 블록과 선택된 MVP 사이에 MVD 를 결정할 수도 있다. MVP 인덱스 및 MVD 는 모션 벡터를 재구성하는데 사용될 수도 있다.
일부 예들에서, 모션 추정 유닛 (42) 은 그 대신, 모션 추정 유닛 (42) 이 예측 비디오 블록의 모션 정보 (예컨대, 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보) 를 현재 비디오 블록과 "병합" 할 수도 있다. 따라서, 병합 모드에 대하여, 현재 비디오 블록은 모션 정보를 다른 알려진 (또는 알 수 있는) 비디오 블록으로부터 상속받는다. 모션 추정 유닛 (42) 은 병합 모드에 대한 후보들로서 공간 및/또는 시간 방향들에서의 몇몇 이웃 블록들을 포함하는 병합 모드 후보 리스트를 구성할 수도 있다. 모션 추정 유닛 (42) 은 (예컨대, 비디오 디코더 (30) 와 같은) 비디오 디코더에, 병합 후보 블록들을 포함하는 참조 픽처 리스트에서 모션 정보가 획득되는 블록, 즉 병합 비디오 블록을 위치시킬 위치를 통지하는데 사용될 수도 있는, 인덱스 값 (예컨대, merge_idx) 을 결정할 수도 있다.
본 개시물의 양태들에 EK르면 모션 추정 유닛 (42) 은 인코딩 동안 버퍼링되는 이웃 블록들로부터, 모션 정보, 예컨대 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보의 양을 제한할 수도 있다. 예를 들어, 상부-이웃 블록들로부터의 모션 정보에 기초하여 현재 블록에 대한 병합 후보 또는 MVP 를 결정하는 것보다, 모션 추정 유닛 (42) 은 좌측-이웃 블록들로부터의 모션 정보에 기초하여 현재 블록을 인코딩하기 위한 모션 정보를 결정할 수도 있다. 다른 예들에서, 모션 추정 유닛 (42) 은 현재 블록이 LCU 의 서브-블록이고 상부-이웃 블록이 동일한 LCU 에서 온 경우에만 상부-이웃 블록으로부터의 데이터에 기초하여 현재 블록에 대한 모션 정보를 결정할 수도 있다. 여전히 다른 예들에서, 모션 추정 유닛 (42) 은 인코딩 동안 버퍼링되는 모션 정보의 양을 감소시키기 위해 다른 기술들 (예컨대, 이하 더 상세히 설명되는 서브-샘플링, 보간, 등등) 을 구현할 수도 있다.
모션 보상 유닛 (44) 에 의해 수행되는 모션 보상은 모션 추정 유닛 (42) 에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하는 것 또는 생성하는 것을 수반할 수도 있다. 다시, 모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 일부 예들에서 기능적으로 통합될 수도 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신 시, 모션 보상 유닛 (44) 은 참조 픽처 목록들 중 하나에서 모션 벡터가 가리키는 곳에 예측 블록을 위치시킬 수도 있다. 합산기 (50) 는, 아래에서 논의되는 바와 같이, 코딩 중인 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔여 비디오 블록을 형성한다. 대체로, 모션 추정 유닛 (42) 은 루마 성분들에 관하여 모션 추정을 수행하고, 모션 보상 유닛 (44) 은 크로마 성분들 및 루마 성분들 양쪽 모두에 대해 루마 성분들에 기초하여 계산된 모션 벡터들을 사용한다. 모드 선택 유닛 (40) 은 또한 비디오 슬라이스의 비디오 블록들의 디코딩 시에 비디오 디코더 (30) 에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스에 연관된 신택스 엘리먼트들을 생성할 수도 있다.
인트라-예측 유닛 (46) 은, 위에서 설명된 바와 같이, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의한 인터-예측에 대한 대안으로서 현재 블록을 인트라-예측할 수도 있다. 특히, 인트라-예측 유닛 (46) 은 현재 블록을 인코딩하는데 사용하기 위한 인트라-예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라-예측 유닛 (46) 은 예컨대, 개별 인코딩 패스들 동안에 다양한 인트라-예측 모드들을 사용하여 현재 블록을 인코딩할 수도 있고, 인트라-예측 유닛 (46) (또는 일부 예들에서, 모드 선택 유닛 (40)) 은 테스트된 모드들로부터 사용할 적절한 인트라-예측 모드를 선택할 수도 있다.
예를 들어, 인트라-예측 유닛 (46) 은 다양한 테스트된 인트라-예측 모드들에 대한 레이트 왜곡 분석을 사용하여 레이트 왜곡 값들을 계산하고, 테스트된 모드들 중에서 최상의 레이트 왜곡 특성들을 갖는 인트라-예측 모드를 선택할 수도 있다. 레이트 왜곡 분석은 일반적으로, 인코딩된 블록과 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 인코딩되지 않은 블록 사이의 왜곡 (또는 에러) 의 양, 뿐만 아니라 인코딩된 블록을 생성하는데 사용되는 비트레이트 (다시 말하면, 비트들의 수) 를 결정한다. 인트라-예측 유닛 (46) 은 어떤 인트라-예측 모드가 그 블록에 대한 최상의 레이트 왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들을 결정할 수도 있다.
일부 예들에서, 인트라-예측 유닛 (46) 은 선택된 인트라-예측 모드를 소위 가장 가능한 모드를 사용하여 표시할 수도 있다. 예를 들어, 인트라-예측 유닛 (46) 은 이전에 인코딩된 블록들을 포함하는 콘텍스트 모델에 기초하여 현재 블록에 대한 인트라-예측 모드를 표시할 수도 있다. 일 예에서, 인트라-예측 유닛 (46) 은 블록들에 대한 좌측에서 우측, 상부에서 하부로의 인코딩 순서를 가정하여, 현재 블록을 상대적으로 상부 및 상대적으로 좌측에 경계를 설정하는 이전의 인코딩된 블록들에 기초하여 가장 가능한 모드를 결정할 수도 있다. 이러한 블록들은 현재 블록과 동일한 인트라-모드를 가질 높은 확률을 가질 수도 있다.
일 예에서, 현재 블록의 상부 및 좌측으로의 블록들이 상이한 모드들로 인코딩된다면, 인트라-예측 유닛 (46) 은, 인트라-예측 유닛 (46) 에 의해 유지되는 인트라-모드들의 미리 정의된 랭킹 (예컨대, 모드 번호들에 따른 인트라-모드들의 수치적 랭킹) 에 따라, 더 낮은 수치적 랭킹을 갖는 인트라-모드를 가장 가능한 모드로서 선택할 수도 있다. 다른 예에서, 현재 블록의 상부 및 좌측으로의 블록들이 상이한 모드들로 인코딩된다면, 인트라-예측 유닛 (46) 은, DC 인트라-모드와 같은 미리 정의된 디폴트 모드를 가장 가능한 모드로서 선택할 수도 있다. 그러나, 현재 블록의 콘텍스트가 2 이상의 인트라-모드를 포함할 경우 가장 가능한 모드를 선택하는 프로세스는, 오직 예들로서 제공되며, 인트라-예측 유닛 (46) 은 다양한 다른 방식들로 가장 가능한 모드를 결정하도록 구성될 수도 있다.
가장 가능한 인트라-모드를 결정한 후에, 인트라-예측 유닛 (46) 은 가장 가능한 모드와 현재 블록을 인코딩하는데 사용된 선택된 인트라-모드와의 비교에 기초하여 플래그 (예컨대, most_probable_mode 플래그) 를 세팅할 수도 있다. 예를 들어, 가장 가능한 모드가 현재 블록에 대한 선택된 인트라-모드와 동일하다면, 인트라-예측 유닛 (46) 은 가장 가능한 모드 플래그를 1 의 값으로 세팅할 수도 있고, 1 은 선택된 인트라-모드와 가장 가능한 모드들이 동일한 것을 표시한다. 이러한 예에서, 어떤 추가의 비트들도 선택된 모드를 시그널링하는데 요구되지 않는다. 즉, 1 로 세팅된 가장 가능한 모드 플래그를 수신하면, (비디오 디코더 (30) 와 같은) 비디오 디코더는 예컨대, 인코더에 의해 사용된 것과 같은 가장 가능한 모드를 결정하기 위해 동일한 절차를 재현할 수도 있고, 그 후에 수신된 블록을 디코딩하기 위해 가장 가능한 모드를 사용할 수도 있다.
가장 가능한 모드가 현재 블록에 대한 선택된 인트라-모드와 동일하지 않다면, 인트라-예측 유닛 (46) 은 가장 가능한 모드 플래그를 0 의 값으로 세팅할 수도 있고, 0 은 그 모드들이 동일하지 않은 것을 표시한다. 이러한 예에서, 추가의 비트들은 현재 블록을 인코딩하는데 사용된 실제 인트라-모드를, 직접 또는 이웃 블록들 중 다른 하나에 대한 인덱스에 의해 시그널링하는데 요구되지 않을 수도 있다. 일부 예들에 따르면, 인트라-예측 유닛 (46) 은 인트라-모드들의 수치적 랭킹을 유지할 수도 있고, 이 때 가장 자주 사용되는 인트라-모드들은 최저 수치적 랭킹을 갖는다. 그러한 예들에서, 인트라-예측 유닛 (46) 은 수치적 랭킹 또는 다른 수치적 식별자에 기초하여 현재 블록을 인코딩하는데 사용된 실제 인트라-모드를 시그널링할 수도 있다.
본 개시물의 양태들에 따르면, 인트라-예측 유닛 (46) 은 인코딩 동안 버퍼링되는 이웃 블록들로부터 예측 정보, 예컨대 인트라-모드 데이터의 양을 제한할 수도 있다. 예를 들어, 상부-이웃 블록들로부터의 인트라-모드 데이터에 기초하여 현재 블록에 대한 가장 가능한 인트라-모드를 결정하는 것보다, 인트라-예측 유닛 (46) 은 좌측-이웃 블록들의 인트라-모드들에 기초하여 현재 블록을 인코딩하기 위해 가장 가능한 인트라-모드를 결정할 수도 있다. 즉, 예를 들어, 인트라-예측 유닛 (46) 은 상부-이웃 블록들로부터의 인트라-모드들을 결정하지 않고, 오직 좌측-이웃 블록들의 인트라-모드들에만 기초하여 현재 블록을 디코딩하기 위한 가장 가능한 인트라-모드를 결정할 수도 있다. 다른 예들에서, 인트라-예측 유닛 (46) 은 현재 블록이 LCU 의 서브-블록이고, 상부-이웃 블록이 동일한 LCU 에서 온 경우에만 하나 이상의 좌측-이웃 블록들 및 하나의 상부-이웃 블록으로부터의 데이터에 기초하여 현재 블록에 대한 가장 가능한 인트라-모드를 결정할 수도 있다. 여전히 다른 예들에서, 인트라-예측 유닛 (46) 은 인코딩 동안 버퍼링되는 인트라-모드 데이터의 양을 감소시키기 위해 다른 기술들 (예컨대, 이하 더 상세히 설명되는 것과 같은, 서브-샘플링, 보간, 등등) 을 구현할 수도 있다.
비디오 인코더 (20) 는 코딩되고 있는 원래의 비디오 블록으로부터 모드 선택 유닛 (40) 으로부터의 예측 데이터를 감산함으로써 잔여 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 프로세싱 유닛 (52) 은 변환, 이를테면 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 잔여 블록에 적용하여, 잔여 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은 DCT에 개념적으로 유사한 다른 변환들을 수행할 수도 있다. 웨이브릿 변환들, 정수 변환들, 서브-밴드 변환들 또는 다른 유형들의 변환들이 또한 사용될 수 있다. 어쨌든, 변환 프로세싱 유닛 (52) 은 잔여 블록에 변환을 적용하여, 잔여 변환 계수들의 블록을 생성한다. 그 변환은 잔여 정보를 픽셀 값 도메인으로부터 변환 도메인, 이를테면 주파수 도메인으로 변환할 수도 있다.
변환 프로세싱 유닛 (52) 은 결과적인 변환 계수들을 양자화 유닛 (54) 에 전송할 수도 있다. 양자화 유닛 (54) 은 변환 계수들을 양자화하여 비트 레이트를 더욱 감소시킨다. 양자화 프로세스는 계수들의 일부 또는 전부에 연관된 비트 깊이를 감소시킬 수도 있다. 양자화 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다. 일부 예들에서, 양자화 유닛 (54) 은 그 후 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수도 있다. 대안으로, 엔트로피 인코딩 유닛 (56) 이 스캔을 수행할 수도 있다.
양자화 다음에, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 콘텍스트 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 신택스 기반 콘텍스트 적응 이진 산술 코딩 (SBAC), 확률 인터벌 파티셔닝 엔트로피 (PIPE) 코딩 또는 다른 엔트로피 코딩 기술을 수행할 수도 있다. 콘텍스트 기반 엔트로피 코딩의 경우, 콘텍스트는 이웃 블록들에 기초할 수도 있다.
CABAC 에 대하여, 엔트로피 인코딩 유닛 (56) 은 비디오 데이터의 블록에 연관된 심볼들을 인코딩하기 위해 콘텍스트에 따라 운용하는 콘텍스트 모델을 선택할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 각각의 신택스 엘리먼트에 대한 확률 추정값들을 사용하여 비디오 데이터의 블록에 대한 각각의 신택스 엘리먼트를 엔트로피 인코딩할 수도 있다. 확률 추정값들은 주어진 값을 갖는 엘리먼트의 우도를 나타낼 수도 있다. 확률 추정값들은 콘텍스트 모델이라고 또한 지칭될 수도 있는 확률 모델 내에 포함될 수도 있다. 엔트로피 인코딩 유닛 (56) 은 신택스 엘리먼트에 대한 콘텍스트 정보 (또는, 더 간단하게는, "콘텍스트") 를 결정함으로써 콘텍스트 모델을 선택할 수도 있다. 상이한 확률 모델이 각각의 콘텍스트에 대해 정의된다. 신택스 엘리먼트를 코딩한 후, 엔트로피 인코딩 유닛 (56) 은 가장 최신 확률 추정값들을 반영하기 위해 신택스 엘리먼트의 실제 값에 기초하여 선택된 콘텍스트 모델을 업데이트할 수도 있다. 다시 말하면, 예를 들어, 엔트로피 인코딩 유닛 (56) 은 콘텍스트 모델이 새로운 콘텍스트 모델로 전환하기 위해 선택되는 방식을 업데이트할 수도 있다.
엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩 다음에, 인코딩된 비트스트림은 다른 디바이스 (예컨대, 비디오 디코더 (30)) 로 송신되거나 또는 나중의 송신 또는 취출을 위해, 예컨대 레코딩 매체에 아카이브될 수도 있다. 역 양자화 유닛 (58) 및 역변환 프로세싱 유닛 (60) 은 역 양자화 및 역변환을 각각 적용하여, 픽셀 도메인에서 잔여 블록을 예컨대, 나중에 참조 블록으로서 사용하기 위해 복원한다. 모션 보상 유닛 (44) 은 잔여 블록을 참조 픽처 메모리 (64) 의 픽처들 중 하나의 프레임의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 복원된 잔여 블록에 적용하여 모션 추정에서 사용하기 위한 부-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 복원된 잔여 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 가산하여, 참조 픽처 메모리 (64) 에 저장하기 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 후속 비디오 픽처에서의 블록을 인터 코딩하기 위한 참조 블록으로서 사용될 수도 있다.
이런 방식에서, 비디오 인코더 (20) 는, 비디오 데이터의 제 1 블록에 대한 예측 정보를 결정하는 단계로서, 여기서 제 1 블록은 제 1 블록이 코딩된 유닛에서 블록들의 최상부 로우 아래에 있을 경우, 비디오 데이터의 코딩된 유닛 내에 포함되는, 예측 정보를 결정하는 단계, 비디오 데이터의 제 1 블록에 대한 예측 정보에 기초하고 코딩된 유닛에서 블록들의 최상부 로우로부터의 예측 정보에는 기초하지 않고, 코딩된 유닛에서 블록들의 최상부 로우 아래의 비디오 데이터의 제 2 블록에 대한 예측 정보를 결정하는 단계, 및 제 2 블록에 대하여 결정된 예측 정보에 기초하여 제 2 블록을 코딩하는 단계를 포함하는 방법을 수행할 수도 있는 비디오 코더의 일 예이다.
도 3 은 비디오 데이터를 엔트로피 코딩하기 위해 본 개시물에서 설명되는 기술들을 구현할 수도 있는 일 예의 비디오 디코더 (30) 를 도시하는 블록도이다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (80), 예측 유닛 (81), 역 양자화 유닛 (86), 역변환 프로세싱 유닛 (88), 합산기 (90), 및 참조 픽처 메모리 (92) 를 구비한다. 예측 유닛 (81) 은 모션 보상 유닛 (82) 과 인트라-예측 유닛 (84) 을 구비한다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 비디오 인코더 (20) 로부터 수신한다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (80) 은 그 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 모션 벡터들, 및 다른 신택스 엘리먼트들을 생성한다.
비디오 디코더 (30) 는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트들을 수신할 수도 있다. 예를 들어, 백그라운드로, 비디오 디코더 (30) 는 네트워크를 통한 송신을 위해 이른바 "네트워크 추상화 계층 유닛들" 또는 NAL 유닛들로 압축완료된 압축된 비디오 데이터를 수신할 수도 있다. 각각의 NAL 유닛은 NAL 유닛에 저장된 데이터의 유형을 식별하는 헤더를 포함할 수도 있다. NAL 유닛들에 일반적으로 저장되는 2 개의 데이터 유형들이 있다. NAL 유닛에 저장된 제 1 데이터 유형은 압축된 비디오 데이터를 포함하는 비디오 코딩 계층 (VCL) 데이터이다. NAL 유닛에 저장되는 제 2 데이터 유형은 비-VCL 데이터라고 지칭되며, 그것은 다수의 NAL 유닛들에 공통인 헤더 데이터를 정의하는 파라미터 세트들과 같은 부가적인 정보 및 SEI (supplemental enhancement information) 를 포함한다.
예를 들어, 파라미터 세트들은 시퀀스-레벨 헤더 정보를 (예컨대, 시퀀스 파라미터 세트들 (SPS) 내에) 그리고 드물게 변경되는 픽처-레벨 헤더 정보를 (예컨대, 픽처 파라미터 세트들 (PPS) 내에) 포함할 수도 있다. 파라미터 세트들 내에 포함된 드물게 변경되는 정보는 각각의 시퀀스 또는 픽처에 대해 반복될 필요는 없으며, 이에 의해 코딩 효율을 개선시킨다. 더욱이, 파라미터 세트들의 사용은 헤더 정보의 대역 외 송신을 할 수 있게 함으로써, 에러 내성을 위한 불필요한 송신들이 필요 없게 한다.
엔트로피 디코딩 유닛 (80) 은 도 2의 비디오 인코더 (20) 에 관해 위에서 설명된 바와 같은 엔트로피 인코딩 유닛 (56) 에 유사하게 구성될 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (80) 은 비디오 데이터의 블록에 연관된 심볼들을 디코딩하기 위한 콘텍스트에 따라 운용하는 콘텍스트 모델을 선택할 수도 있다. 다시 말하면, 엔트로피 코딩 유닛 (80) 은 각각의 신택스 엘리먼트에 대한 확률 추정값들을 사용하여 비디오 데이터의 블록에 대한 각각의 신택스 엘리먼트를 엔트로피 코딩할 수도 있다.
엔트로피 디코딩 유닛 (80) 은 모션 벡터들 및 다른 디코딩된 신택스 엘리먼트들을 예측 유닛 (81) 에 포워딩한다. 비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서 코딩되는 경우, 예측 유닛 (81) 의 인트라-예측 유닛 (84) 은 현재 비디오 슬라이스의 비디오 블록을 위한 예측 데이터를 현재 픽처의 이전에 디코딩된 블록들로부터의 시그널링된 인트라-예측 모드 (예컨대, 가장 가능한 모드로서, 직접, 또는 이웃 블록들중 다른 하나로의 인덱스에 의해 시그닐링됨) 및 데이터에 기초하여 생성할 수도 있다. 비디오 픽처가 인터-코딩된 (즉, B, P, 또는 GPB) 슬라이스로 코딩되는 경우, 예측 유닛 (81) 의 모션 보상 유닛 (82) 은 엔트로피 디코딩 유닛 (80) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여, 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록을 생성한다. 그 예측 블록들은 참조 픽처 목록들 중 하나 내의 참조 픽처들 중 하나로부터 생성될 수도 있다. 비디오 디코더 (30) 는 참조 픽처 메모리 (92) 에 저장된 참조 픽처들에 기초하여 디폴트 구성 기술들을 사용하여, 참조 픽처 목록들, 목록 0 및 목록 1을 구성할 수도 있다.
모션 보상 유닛 (82) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 그 예측 정보를 사용하여 디코딩 중인 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (82) 은 수신된 신택스 엘리먼트들의 일부를 사용하여, 비디오 슬라이스의 비디오 블록들을 코딩하는데 사용된 예측 모드 (예컨대, 인트라 또는 인터-예측), 인터-예측 슬라이스 유형 (예컨대, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 목록들 중 하나 이상의 구성 정보, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터-예측 상태, 및 현재 비디오 슬라이스 내의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정한다.
모션 보상 유닛 (82) 은 또한 보간 필터들에 기초하여 보간을 수행할 수도 있다. 모션 보상 유닛 (82) 은 비디오 블록들의 인코딩 동안에 비디오 인코더 (20) 에 의해 사용된 것과 같은 보간 필터들을 사용하여 참조 블록들의 부-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 이 경우, 모션 보상 유닛 (82) 은 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 수신된 신택스 엘리먼트들로부터 결정하고 그 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다.
본 개시물의 양태들에 따르면, 모션 보상 유닛 (82) 은 디코딩 동안 버퍼링되는 이웃 블록들로부터 모션 정보, 예컨대 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보의 양을 제한할 수도 있다. 예를 들어, 상부-이웃 블록들로부터의 모션 정보에 기초하여 현재 블록에 대한 병합 후보 또는 MVP 를 결정하는 것보다, 모션 보상 유닛 (82) 은 좌측-이웃 블록들로부터의 모션 정보에 기초하여 현재 블록을 디코딩하기 위한 모션 정보를 결정할 수도 있다. 다른 예들에서, 모션 보상 유닛 (82) 은 오직 현재 블록이 LCU 의 서브-블록이고 상부-이웃 블록이 동일한 LCU 로부터 온 경우에만 상부-이웃 블록으로부터의 데이터에 기초하여 현재 블록에 대한 모션 정보를 결정할 수도 있다. 여전히 다른 예들에서, 모션 보상 유닛 (82) 은 디코딩동안 버퍼링되는 모션 정보의 양을 감소시키기 위해 다른 기술들 (예컨대, 이하 더 상세히 설명되는 것과 같은 서브-샘플링, 보간, 등등) 을 구현할 수도 있다.
본 개시물의 양태들에 따르면, 인트라-예측 유닛 (84) 은 디코딩 동안 버퍼링되는 이웃 블록들로부터 예측 정보, 예컨대 인트라-모드 데이터의 양을 제한할 수도 있다. 예를 들어, 상부-이웃 블록들로부터의 인트라-모드 데이터에 기초하여 현재 블록에 대한 가장 가능한 인트라-모드를 결정하는 것보다, 인트라-예측 유닛 (84) 은 좌측-이웃 블록들로부터의 인트라-모드들에 기초하여 현재 블록을 디코딩하기 위한 가장 가능한 인트라-모드를 결정할 수도 있다. 즉, 예를 들어, 인트라-예측 유닛 (84) 은 상부-이웃 블록들로부터의 인트라-모드들을 결정하지 않고, 좌측-이웃 블록들의 인트라-모드들에만 기초하여 현재 블록을 디코딩하기 위한 가장 가능한 인트라-모드를 결정할 수도 있다. 다른 예들에서, 인트라-예측 유닛 (84) 은 오직 현재 블록이 LCU 의 서브-블록이고 상부-이웃 블록이 동일한 LCU 로부터 온 경우에만 하나 이상의 좌측-이웃 블록들 및 하나의 상부-이웃 블록으로부터의 데이터에 기초하여 현재 블록에 대한 가장 가능한 인트라-모드를 결정할 수도 있다. 여전히 다른 예들에서, 인트라-예측 유닛 (84) 은 디코딩동안 버퍼링되는 인트라-모드 데이터의 양을 감소시키기 위해 다른 기술들 (예컨대, 이하 더 상세히 설명되는 것과 같은 서브-샘플링, 보간, 등등) 을 구현할 수도 있다.
역 양자화 유닛 (86) 은 비트스트림으로 제공되고 엔트로피 디코딩 유닛 (80) 에 의해 디코딩된 양자화된 변환 계수들을 인버스 양자화, 즉, 역 양자화한다. 역 양자화 프로세스는 양자화 정도와, 마찬가지로 적용되어야 할 역 양자화의 정도를 결정하기 위해, 비디오 슬라이스 내의 각각의 비디오 블록에 대해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터의 사용을 포함할 수도 있다.
역변환 프로세싱 유닛 (88) 은 픽셀 도메인에서 잔여 블록들을 생성하기 위하여 역변환, 예컨대, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 변환 계수들에 적용한다. 본 개시물의 양태들에 따르면, 역변환 프로세싱 유닛 (88) 은 변환들이 잔여 데이터에 적용되었던 방식을 결정할 수도 있다. 다시 말하면, 예를 들어, 역변환 프로세싱 유닛 (88) 은, 변환들 (예컨대, DCT, 정수 변환, 웨이브릿 변환, 또는 하나 이상의 다른 변환들) 이 수신된 비디오 데이터의 블록에 연관된 잔여 루마 샘플들 및 잔여 크로마 샘플들에 적용되었던 방식을 나타내는 RQT를 결정할 수도 있다.
모션 보상 유닛 (82) 이 현재 비디오 블록에 대한 예측 블록을 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 생성한 후, 비디오 디코더 (30) 는 역변환 프로세싱 유닛 (88) 으로부터의 잔여 블록들을 모션 보상 유닛 (82) 에 의해 생성된 대응하는 예측 블록들과 합산함으로써 디코딩된 비디오 블록을 형성한다. 합산기 (90) 는 이 합산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 원한다면, 블록화제거 필터가 또한 블록화 아티팩트들을 제거하기 위하여 디코딩된 블록들을 필터링하는데 적용될 수도 있다. 다른 루프 필터들이 (코딩 루프 내 또는 코딩 루프 후 중 어느 하나에서) 또한 픽셀 전환들을 부드럽게 하기 위해, 또는 그렇지 않으면 비디오 품질을 개선하기 위해 사용될 수도 있다. 주어진 픽처에서의 디코딩된 비디오 블록들은 그러면 참조 픽처 메모리 (92) 에 저장되며, 그 참조 픽처 메모리는 후속 모션 보상을 위해 사용되는 참조 픽처들을 저장한다. 참조 픽처 메모리 (92) 는 또한 디스플레이 디바이스, 이를테면 도 1 의 디스플레이 디바이스 (32) 상의 나중의 프레젠테이션을 위해 디코딩된 비디오를 저장한다.
이러한 방식으로, 비디오 디코더 (30) 는 일 방법을 수행할 수도 있는 비디오 디코더의 일 예이며, 그 방법은, 비디오 데이터의 제 1 블록에 대한 예측 정보를 결정하는 단계로서, 제 1 블록은 비디오 데이터의 코딩된 유닛에 포함되고 제 1 블록은 코딩된 유닛에서 블록들의 최상부 로우 아래에 있는, 제 1 블록에 대한 예측 정보를 결정하는 단계; 비디오 데이터의 제 1 블록에 대한 예측 정보에 기초하고 코딩된 유닛에서 블록들의 최상부 로우로부터의 예측 정보에 기초하지 않고 코딩된 유닛에서 블록들의 최상부 아래의 비디오 데이터의 제 2 블록에 대한 예측 정보를 결정하는 단계; 및 제 2 블록에 대한 결정된 예측 정보에 기초하여 제 2 블록을 코딩하는 단계를 포함한다.
도 4a 및 도 4b 는 예시적인 쿼드트리 (150) 및 대응하는 최대 코딩 유닛 (172) 을 도시하는 개념적인 도면들이다. 도 4a 는 예시적인 쿼드트리 (150) 를 도시하는데, 이것은 계층적인 방식으로 정렬되는 노드들을 포함한다. 쿼드트리 (150) 는 예를 들어, 제안된 HEVC 표준에 따른 트리블록과 연관될 수도 있다. 쿼드트리, 예컨대 쿼드트리 (150) 내의 각각의 노드는, 차일드가 없는 리프 노드이거나, 또는 4 개의 차일드 노드들일 수도 있다. 도 4a 의 예에서, 쿼드트리 (150) 는 루트 노드 (152) 를 포함한다. 루트 노드 (152) 는, 리프 노드들 (156A-156C) (리프 노드들 (156)) 및 노드 (154) 를 포함하는 4 개의 차일드 노드들을 포함한다. 노드 (154) 가 리프 노드가 아니기 때문에, 노드 (154) 는 4 개의 차일드 노드들을 갖는데, 이러한 예에서는 이들은 리프 노드들 (158A-158D) (리프 노드들 (158)) 이다.
쿼드트리 (150) 는 대응하는 최대 코딩 유닛 (LCU), 예컨대 이 예에서는 LCU (172) 의 특징들을 기술하는 데이터를 포함할 수도 있다. 예를 들어, 쿼드트리 (150) 는 그 구조에 의해 LCU 의 서브-CU로의 분할화 (splitting) 를 설명할 수도 있다. LCU (172) 가 2N×2N 의 사이즈를 갖는다고 가정한다. 이 예에서는, LCU (172) 는 각각 N×N 사이즈인 4 개의 서브-CU 들 (176A-176C (서브-CU 들 (176) 및 174) 를 갖는다. 서브-CU (174) 는 또한, 각각 N/2×N/2 사이즈인 4 개의 서브-CU 들 (178A-178D) (서브-CU 들 (178)) 로 분할된다. 쿼드트리 (150) 의 구조는 이 예에서는 LCU (172) 의 분할화에 대응한다. 즉, 루트 노드 (152) 는 LCU (172) 에 대응하고, 리프 노드들 (156) 은 서브-CU 들 (176) 에 대응하고, 노드 (154) 는 서브-CU (174) 에 대응하며, 리프 노드들 (158) 은 서브-CU 들 (178) 에 대응한다.
쿼드트리 (150) 의 노드들에 대한 데이터는 그 노드에 대응하는 CU 가 분할되는지 여부를 설명할 수도 있다. CU 가 분할된다면, 4 개의 추가의 노드들이 쿼드트리 (150) 내에 존재할 수도 있다. 일부 예들에서, 쿼드트리의 노드는 다음의 의사코드와 유사하게 구현될 수도 있다:
quadtree_node {
boolean split_flag (1);
// 데이터 시그널링
if (split_flag) {
quadtree_node child1;
quadtree_node child2;
quadtree_node child3;
quadtree_node child4;
}
}
split_flag 값은 현재 노드에 대응하는 CU 가 분할되는지 여부를 나타내는 1-비트 값일 수도 있다. CU 가 분할되지 않으면, split_flag 값은 '0' 일 수도 있으며, 반면에 CU 가 분할된다면, split_flag 값은 '1' 일 수도 있다. 쿼드트리 (150) 의 예에 대하여, 분할 플래그 값들의 어레이는 101000000 일 수도 있다.
위에서 지적했듯이, CU 깊이는 LCU, 이를테면 LCU (172) 가 분할되었던 정도를 말할 수도 있다. 예를 들어, 루트 노드 (152) 는 CU 깊이 0 에 대응할 수도 있는 반면, 노드 (154) 와 리프 노드들 (156) 은 CU 깊이 1에 대응할 수도 있다. 덧붙여서, 리프 노드들 (158) 은 CU 깊이 2에 대응할 수도 있다. 본 개시물의 양태들에 따르면, CU 및/또는 TU 깊이는 특정한 신택스 엘리먼트들을 엔트로피 코딩하기 위한 콘텍스트로서 사용될 수도 있다. 설명의 목적을 위한 일 예에서, 리프 노드 (156A) 에 연관된 하나 이상의 신택스 엘리먼트들은 리프 노드 (158A) 와는 상이한 콘텍스트 모델을 사용하여 엔트로피 코딩될 수도 있는데, 리프 노드 (156A) 가 깊이 1에 위치되는 반면 리프 노드 (158A) 는 깊이 2에 위치되기 때문이다.
도 4a 가 CU 쿼드트리의 일 예를 도시하지만, 유사한 쿼드트리가 리프 노드 CU의 TU들에 적용될 수도 있다는 것이 이해되어야 한다. 다시 말하면, 리프 노드 CU는 CU에 대한 TU들의 파티셔닝을 서술하는 TU 쿼드트리 (잔여 쿼드 트리 (RQT) 라고 지칭됨) 를 포함할 수도 있다. TU 쿼드트리는, TU 쿼드트리가 CU의 TU들에 대한 인트라-예측 모드들을 개별적으로 시그널링할 수도 있다는 점을 제외하면, 일반적으로 CU 쿼드트리와 유사할 수도 있다.
본 개시물의 일부 양태들에 따르면, 비디오 코더 (예컨대, 비디오 인코더 (20) 및/또는 비디오 디코더 (30)) 는 특정 이웃 CU들로부터의 예측 정보에 기초하여 현재 블록에 대한 예측 정보를 결정할 수도 있다. 예를 들어, 하기에서 더 상세히 설명되는 것과 같이, 비디오 코더는 서브-CU (176A) 와 같은 이웃하는 CU들에 기초하여 서브-CU (178C) 에 대한 예측 정보를 결정할 수도 있다. 일부 예들에서, 비디오 코더는 상부-이웃 서브-CU (178) 과 같은 특정 이웃하는 CU들에 기초하여 예측 정보를 결정하는 것을 회피할 수도 있다. 그러나, 본 개시물의 양태들에 따르면, 하기에서 더 상세히 설명되는 것과 같이, 비디오 코더는 상부-이웃 CU들이 라인 버퍼에 저장될 필요가 없다면, 상부-이웃 CU들을 사용하여 예측정보를 결정할 수도 있다.
예를 들어, 본 개시물의 양태들에 따르면, 비디오 코더는 상부-이웃 서브-CU (178A) 에 기초하여 서브-CU (178C) 에 대한 예측 정보를 결정할 수도 있고, 이는 상부-이웃 서브-CU (178A) 가 서브-CU (178C) 와 동일한 LCU (즉, LCU (172)) 에 위치되기 때문이다. 일부 예들에서, LCU 의 모든 CU들과 연관된 데이터는 LCU 를 코딩하는 동안 (예컨대, 외부 버퍼링 없이) 사용가능하다. 따라서, 본 개시물의 양태들에 따르면, 비디오 코더는 예측 정보를 버퍼링하지 않고 LCU 의 블록들과 연관된 예측 정보를 사용할 수도 있다. 즉, 본 개시물의 양태들에 따르면, 비디오 코더는 서브-CU (178A) 의 예측 정보를 라인 버퍼에 버퍼링하지 않고 상부-이웃 서브-CU (178A) 에 기초하여 서브-CU (178C) 에 대한 예측 정보를 결정할 수도 있다.
도 5 는 블록을 인트라-코딩할 경우, 가장 가능한 인트라-모드가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다이어그램이다. 예를 들어, 설명의 목적을 위해, 비디오 디코더 (예컨대, 비디오 디코더 (30) 가 현재 블록 (180) 내의 픽셀들의 특정 예측 모드 (예컨대, 인트라-예측 모드) 를 표시하는 신택스 엘리먼트를 현재 디코딩하고 있다고 가정하자. 이 예에서, 비디오 디코더 (30) 는 현재 신택스 엘리먼트에 대한 콘텍스트를 결정하기 위해 상부-이웃 블록 (182) 과 좌측-이웃 블록 (184) 으로부터 인트라-예측 모드들을 식별할 수도 있다. 따라서, 현재 신택스 엘리먼트를 엔트로피 디코딩하는데 사용되는 콘텍스트 모델은 상부-이웃 블록 (182) 및 좌측-이웃 블록 (184) 의 인트라-예측 모드들에 의존할 수도 있다.
이러한 예에서, 비디오 디코더 (30)는 상부-이웃 블록 (182) 및 좌측-이웃 블록 (184) 의 인트라-예측 모드들을 표시하는 데이터를 저장하거나 버퍼링하여, 그러한 데이터가 인트라-예측을 수행할 경우 사용이능하도록 할 수도 있다. 예를 들면, 비디오 디코더 (30) 는 블록들 (180-184) 을 포함하는 픽처의 폭을 확장시키는 라인 버터에 상부-이웃 블록 (182) 의 인트라-예측 모드를 저장하여, 인트라-예측 모드가 현재 블록 (180) 을 코딩하기 위한 콘텍스트로서 사용되는 것이 가능하게 할 수도 있다.
그러나, 비디오 해상도 및 프레임들의 폭 (예컨대, 소정 비디오 프레임을 가로질러 우측에서 좌측으로의 픽셀들의 개수) 가 증가함에 따라, 라인 버퍼에 저장되는 데이터의 양 또한 증가한다. 일부 예들에서, 4×4 픽셀들만큼 작은 비디오 데이터의 블록들이 픽처를 코딩하는데 사용될 수도 있다. 일 예로서, (예컨대, 1080p 비디오에 대한) 1920×1080 픽셀 픽처는 무려 4×4 픽셀들의 495 개 블록들을 포함할 수도 있다. 각각의 블록은 연관된 인트라-예측 모드를 가질 수도 있다. 35 개의 잠정적인 인트라-예측 모드들과 함께, 비디오 디코더 (30) 는 495 개 블록들 각각에 대한 인트라-예측 정보를 6개 비트들까지 저장할 수도 있다. 따라서, 픽처의 각각의 블록에 대한 인트라-예측 모드들이 (도 5 에 도시된 예에서는 블록 (182) 을 포함하는) 라인 버퍼에 저장된다면, 비디오 디코더 (30) 는 상대적으로 상당한 양의 데이터를 라인 버퍼에 저장하도록 요구될 수도 있다.
본 개시물의 기술들은 일반적으로, 코딩 동안 버퍼링되는 이웃 블록들로부터의 인트라-모드 데이터의 양을 제한하는 것과 관련된다. 즉, 본 개시물의 양태들은 가장 가능한 모드 도출을 수행할 경우 사용하기 위해 라인 버퍼에 저장된 인트라-모드 데이터의 양을 제한하는 것과 관련된다. 도 7 및 본 개시물의 다른 부분에 대하여 더 상세히 설명되는 것과 같이, 본 개시물의 일부 양태들에 따르면, 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 좌측-이웃 블록 (184) (및 도 8 의 예에서 도시된 하나 이상의 다른 좌측-이웃 블록들) 에 기초하고 상부-이웃 블록 (182) 에 기초하지 않고 현재 블록 (180) 에 대한 가장 가능한 인트라-모드를 결정할 수도 있다. 이러한 예에서, 비디오 코더는 상부-이웃 블록 (182) 의 인트라-모드를 저장하는 것을 회피할 수도 있는데, 이는 인트라-모드가 현재 블록 (180) 의 가장 가능한 인트라-모드를 결정하는데 사용되지 않기 때문이다.
다른 예들에서, 비디오 코더는, 오직 상부-이웃 블록 (182) 이 현재 블록 (180) 과 동일한 LCU 에서 오는 경우에만, 상부-이웃 블록 (182) 에 기초하여 현재 블록 (180) 의 인트라-모드를 결정할 수도 있다. 그러한 일 예에서, 상부-이웃 블록 (182) 의 인트라-모드는, LCU 의 모든 정보가 통상적으로 LCU 의 코딩 동안 사용가능하기 때문에, (라인 버퍼에 저장되지 않고) 사용가능할 수도 있다. 그러나, 상부-이웃 블록 (182) 이 상이한 LCU 에서 온 것이라면, 상부-이웃 블록 (182) 과 연관된 데이터는 (예컨대, 인코딩된 비트스트림에) 상이한 LCU 와 함께 포함될 수도 있다. 따라서, 상기 예에서, 비디오 코더는 메모리 리소스들을 요구하는, 인트라-모드를 버퍼링해야할 수도 있고, 또한 전술된 것과 같은 LCU 들의 병렬 코딩을 방지해야할 수도 있다. 이하 설명되는 것과 같은 다양한 다른 기술들은 또한, 비디오 코딩 동안 버퍼링되는 예측 정보의 양을 감소시키는데 사용될 수도 있다.
도 6 은 (AMVP 및 병합 모드) 를 포함하는 모션 벡터 예측을 수행할 경우 잠정적인 모션 벡터 예측자 후보들을 예시하는 다이어그램이다. 즉, 현재 코딩되고 있는 블록 (188) 에 대하여, 이웃 블록들 A0, A1, B0, B1, 및 B2 로부터의 모션 정보 (예컨대, 수평 성분과 수직 성분, 모션 벡터 인덱스들, 예측 방향들, 또는 다른 정보) 는 블록 (188) 에 대한 모션 정보를 예측하는데 사용될 수도 있다. 추가로, 시간상 함께 위치된 블록 COL 과 연관된 모션 정보는 또한, 블록 (188)(예컨대, 참조 픽처에서 함께 위치된 블록) 에 대한 모션 정보를 예측하는데 사용될 수도 있다. 이웃 블록들 A0, A1, B0, B1, 및 B2 및 함께 위치된 블록 COL 은, 모션 벡터 예측의 콘텍스트에서, 일반적으로 모션 벡터 예측자 후보들로서 이하 지칭될 수도 있다.
일부 예들에서, 도 6 에 도시된 모션 벡터 예측자 후보들은 모션 벡터 예측 (예컨대, MVD 를 생성할지, 병합 모드를 수행할지 여부) 를 수행할 때 식별될 수도 있다. 다른 예들에서, 상이한 후보들이 병합 모드 및 모션 벡터 예측을 수행할 때 식별될 수도 있다. 즉, 비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 모션 벡터 예측을 수행하는 것보다 병합 모드를 수행하기 위해 상이한 세트의 모션 벡터 예측자 후보들을 식별할 수도 있다.
병합 모드를 수행하기 위해, 일 예에서, (비디오 인코더 (20) 와 같은) 비디오 인코더는 초기에, 모션 벡터 예측자 후보들로부터의 어떤 모션 벡터들이 블록 (188) 과 병합하는데 사용이능한지를 결정할 수도 있다. 즉, 일부 경우에, 하나 이상의 모션 벡터 예측자 후보들로부터의 모션 정보는, 예컨대 모션 벡터 예측자 후보가 인트라-코딩 되거나, 아직 코딩되지 않거나, 존재하지 않기 (예컨대, 하나 이상의 모션 벡터 예측자 후보들이 다른 픽처 또는 슬라이스에 위치됨) 때문에 사용불가능할 수도 있다. 비디오 인코더 (20) 는 사용가능한 모션 벡터 예측자 후보 블록들 각각을 포함하는 모션 벡터 예측자 후보 리스트를 구성할 수도 있다.
후보 리스트를 구성한 후, 비디오 인코더 (20) 는 현재 블록 (100) 에 대한 모션 벡터로서 사용될 모션 벡터를 후보 리스트로부터 선택할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 블록 (188) 에 대한 모션 벡터와 가장 매칭하는 모션 벡터를 후보 리스트로부터 선택할 수도 있다. 즉, 비디오 인코더 (20) 는 레이트 왜곡 분석에 따라 후보 리스트로부터 모션 벡터를 선택할 수도 있다.
비디오 인코더 (20) 는 블록 (188) 이 병합 모드를 사용하여 인코딩되는 것의 표시를 제공할 수도 있다. 예를 들면, 비디오 인코더 (20) 는 블록 (188) 에 대한 모션 벡터가 병합 모드를 사용하여 예측되는 것을 표시하는 플래그 또는 다른 신택스 엘리먼트를 세팅할 수도 있다. 일 예에서, 비디오 인코더 (20) 는 블록 (188) 에 대한 내부 예측 파라미터들이 merge_flag [x0][y0] 를 세팅함으로써 모션 벡터 예측자 후보로부터 추론되는 것을 표시할 수도 있다. 이러한 예에서, 어레이 인덱스들 x0, y0 은 픽처 (또는 슬라이스) 의 최상부-좌측 루마 샘플에 대하여 예측 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정할 수도 있다.
추가로, 일부 예들에서, 비디오 인코더 (20) 는 블록 (188) 이 그 모션 벡터를 상속받는 병합 후보를 식별하는 인덱스를 제공할 수도 있다. 예컨대, merge_idx [x0][y0] 는 병합 후보 리스트에서 일 픽처를 식별하는 병합 후보 인덱스를 규정할 수도 있고, 여기서 x0, y0 는 픽처 (또는 슬라이스) 의 최상부-좌측 루마 샘플에 대하여 예측 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정한다.
(비디오 디코더 (30) 와 같은) 비디오 디코더는 블록 (188) 을 디코딩할 경우 적절한 병합 후보를 식별하기 위해 유사한 단계들을 수행할 수도 있다. 예컨대, 비디오 디코더 (30) 는 블록 (188) 이 병합 모드를 사용하여 예측되는 것의 표시를 수신할 수도 있다. 일 예에서, 비디오 디코더 (30) 는 merge_flag [x0][y0] 를 수신할 수도 있고, 여기서 (x0, y0) 는 픽처 (또는 슬라이스) 의 최상부-좌측 루마 샘플에 대하여 예측 블록의 (블록에서 일 픽셀에 대응하는) 최상부-좌측 루마 샘플의 위치를 규정한다. 루마 샘플들에 대하여 설명되었지만, 전술된 기술들은 또한 크로마 샘플들에 대하여 수행될 수도 있다.
일부 예들에서, 비디오 디코더 (30) 는 후보 블록의 모션 정보를 블록 (188) 가 병합하기 전에 모션 벡터 예측자를 스케일링할 수도 있다. 예를 들어, 모션 벡터 예측자가 블록 (188) 에 의해 지칭되는 예측 블록 (예컨대, 블록 (188) 에 대한 실제 모션 벡터) 과 상이한 시간 위치에 위치된 참조 픽처에서의 예측 블록을 지칭한다면, 비디오 디코더 (30) 는 모션 벡터 예측자를 스케일링할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 모션 벡터 예측자를 스케일링하여 모션 벡터 예측자가 블록 (188) 에 대한 참조 픽처와 동일한 참조 픽처를 지칭하게 할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 픽처 순서 카운트 (POC) 값들의 차이에 따라 모션 벡터 예측자를 스케일링할 수도 있다. 모션 벡터 예측자를 선택한 후에, 비디오 디코더 (30) 는 모션 벡터 예측자와 연관된 모션 정보를, 블록 (188) 에 대한 모션 정보와 병합할 수도 있다.
추가로, 비디오 디코더 (30) 는 병합 후보 리스트를 구성할 수도 있다. 예들 들어, 비디오 디코더 (30) 는 모션 벡터 예측을 위해 사용가능한 비디오 블록들을 표시하는 하나 이상의 신택스 엘리먼트들 (예컨대, 플래그들) 을 수신할 수도 있다. 비디오 디코더 (30) 는 수신된 플래그들에 기초하여 병합 후보 리스트를 구성할 수도 있다. 몇몇 병합 후보들이 동일한 모셔 벡터들 및 동일한 참조 인덱스들을 갖는다면, 일부 중복되는 병합 후보들이 리스트에서 제거될 (예컨대, 정리될) 수도 있다.
비디오 디코더 (30) 는 수신된 인덱스에 따라 적절한 병합 후보를 식별할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 블록 (188) 이 그 모션 벡터를 상속받는 병합 후보를 식별하는 인덱스를 수신할 수도 있다. 일 예에서, merge_idx [x0][y0] 는 병합 후보 리스트에서 일 픽처를 식별하는 병합 후보 인덱스를 규정할 수도 있고, 여기서 x0, y0 는 픽처 (또는 슬라이스) 의 최상부-좌측 루마 샘플에 대하여 예측 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정한다.
비디오 데이터의 현재 블록에 대한 모션 벡터 예측을 수행하기 위해, 유사한 프로세스가 비디오 인코더 (20) 와 비디오 디코더 (30) 에 의해 구현될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 초기에, 모션 벡터 예측자 후보들로부터의 어떤 모션 벡터들이 MVP들로서 사용되는 것이 가능한지를 결정할 수도 있다. 하나 이상의 모션 벡터 예측자 후보들로부터의 모션 정보는, 예컨대 모션 벡터 예측자 후보가 인트라-코딩 되거나, 아직 코딩되지 않거나, 존재하지 않기 (예컨대, 픽처 또는 슬라이스에서 블록들의 최상부 로우 위의 블록들과 같이 픽처 또는 슬라이스에 포함되지 않음) 때문에 사용불가능할 수도 있다.
모션 벡터 예측자 후보들 중 어느 것이 사용가능한지를 결정하기 위해, 비디오 인코더 (20) 는 미리 결정된 우선순위 기반 방식에 따라 차례로 모션 벡터 예측자 후보들의 각각을 분석할 수도 있다. 예를 들어, 각각의 모션 벡터 예측자 후보들에 대하여, 비디오 인코더 (20) 는 모션 벡터 예측자가 블록 (188) 에 대한 실제 모션 벡터와 동일한 참조 픽처를 지칭하는지 여부를 결정할 수도 있다. 모션 벡터 예측자가 동일한 참조 픽처를 지칭한다면, 비디오 인코더 (20) 는 모션 벡터 예측자 후보를 MVP 후보 리스트에 추가할 수도 있다. 모션 벡터 예측자가 동일한 참조 픽처를 지칭하지 않는다면, 모션 벡터 예측자는 MVP 후보 리스트에 부가되기 전에 스케일링될 (예컨대, 전술된 것과 같은 POC 거리들에 기초하여 스케일링될) 수도 있다.
함께 위치된 블록 COL 에 대하여, 함께 위치된 블록이 2 이상의 모션 벡터 예측자를 포함한다면 (예컨대, COL 이 B-프레임으로서 예측된다면), 비디오 인코더 (20) 는 (블록 (188) 에 대한) 현재 참조 픽처 및 현재 리스트에 따라 시간적 모션 벡터 예측자들 중 하나를 선택할 수도 있다. 그 후에, 비디오 인코더 (20) 는 선택된 시간적 모션 벡터 예측자를 모션 벡터 예측자 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 모션 벡터 예측자들이 enable_temporal_mvp_flag 를 세팅함으로써 사용가능한 것을 시그널링할 수도 있다. 후보 리스트를 구성한 후에, 비디오 인코더 (20) 는 블록 (100) 에 대한 모션 벡터 예측자로서 사용되도록 후보들로부터 모션 벡터를 선택할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 레이트 왜곡 분석에 따라 후보 모션 벡터를 선택할 수도 있다.
비디오 인코더 (20) 는 후보 리스트에서 MVP 를 식별하는 MVP 인덱스 (mvp_flag) 를 사용하여 선택된 모션 벡터 예측자를 시그럴링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 리스트 0 의 모션 벡터 예측자 인덱스를 규정하기 위해 mvp_l0_flag[x0][y0] 을 세팅할 수도 있고, 여기서 x0, y0 는 픽처의 최상부-좌측 루마 샘플에 대하여 후보 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정한다. 다른 예에서, 비디오 인코더 (20) 는 리스트 1 의 모션 벡터 예측자 인덱스를 규정하기 위해 mvp_l1_flag[x0][y0] 을 세팅할 수도 있고, 여기서 x0, y0 는 픽처의 최상부-좌측 루마 샘플에 대하여 후보 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정한다. 또 다른 예에서, 비디오 인코더 (20) 는 리스트 c 의 모션 벡터 예측자 인덱스를 규정하기 위해 mvp_lc_flag[x0][y0] 을 세팅할 수도 있고, 여기서 x0, y0 는 픽처의 최상부-좌측 루마 샘플에 대하여 후보 블록의 최상부-좌측 루마 샘플의 위치 (x0, y0) 를 규정한다.
비디오 인코더 (20) 는 또한 모션 벡터 차이 값 (MVD) 을 생성할 수도 있다. MVD 는 선택된 모션 벡터 예측자와 블록 (188) 에 대한 실제 모션 벡터 간의 차이를 구성할 수도 있다. 비디오 인코더 (20) 는 MVP 인덱스와 함께 MVD 를 시그널링할 수도 있다.
비디오 디코더 (30) 는 모션 벡터 예측자를 사용하여 현재 블록에 대한 모션 벡터를 결정하기 위해 유사한 동작들을 수행할 수도 있다. 예를 들어, 비디오 디코더 (30) 는, 모션 벡터 예측이 하나 이상의 픽처들에 대하여 인에이블되는 것을 표시하는, 파라미터 세트 (예컨대, 픽처 파라미터 세트 (PPS)) 에서 표시를 수신할 수도 있다. 즉, 일 예에서, 비디오 디코더 (30) 는 PPS 에서 enable_temporal_mvp_flag 를 수신할 수도 있다. 특정 피처가 0 과 동일한 enable_temporal_mvp_flag 를 갖는 PPS 를 참조할 경우, 참조 픽처 메모리에서의 참조 픽처들은 "시간적 모션 벡터 예측을 위해 미사용된" 것으로 마킹될 수도 있다.
모션 벡터 예측이 구현될 경우, 블록 (188) 을 수신하면, 비디오 디코더 (30) 는 MVP 후보 리스트를 구성할 수도 있다. 비디오 디코더 (30) 는 MVP 후보 리스트를 구성하기 위해 비디오 인코더 (20) 에 대하여 전술된 것과 동일한 방식을 사용할 수도 있다. 임의의 경우들에서, 비디오 디코더 (30) 는 비디오 인코더 (20) 에 대하여 전술된 것과 유사한 모션 벡터 스케일링을 수행할 수도 있다. 예를 들어, 모션 벡터 예측자가 블록 (188) 과 동일한 참조 픽처를 지칭하지 않는다면, 모션 벡터 예측자는 MVP 후보 리스트에 부가되기 전에 스케일링 (예컨대, 전술된 것과 같이 POC 거리들에 기초하여 스케일링) 될 수도 있다. 비디오 디코더 (30) 는 후보 리스트에서 MVP 를 식별하는 수신된 MVP 인덱스 (mvp_flag) 를 사용하여 블록 (188) 에 대한 적절한 모션 벡터 예측자를 식별할 수도 있다. 그 후에, 비디오 디코더 (30) 는 MVP 및 수신된 MVD 를 사용하여 블록 (100) 에 대한 모션 벡터를 생성할 수도 있다.
도 6 에 도시된 모션 벡터 예측자 후보 블록들은 오직 예시의 목적으로 제공되며, 더 많거나, 더 적거나, 상이한 블록들이 모션 정보를 예측하기 위해 사용될 수도 있음이 이해되어야 한다.
임의의 경우, (비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은) 비디오 코더는 A0, A1, B0, B1, B2 에 대한 모션 정보 및 함께 위치된 블록 COL 을 저장하거나 버퍼링하여 그러한 데이터가 MVD 를 생성하거나 병합 모드를 수행하는데 사용가능하도록 할 수도 있다. 예를 들어, 비디오 코더는 블록들을 포함하는 픽처의 폭을 확장시키는 상부-이웃 블록들 B0, B1 및 B2 의 모션 정보 (예컨대, 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보) 를 라인 버퍼에 저장할 수도 있고, 따라서 모션 정보는 블록 (188) 의 인터-예측 동안 참조되도록 사용가능하다.
그러나, 전술된 것과 같이, 라인 버퍼에 저장되는 데이터의 양은 비교적 클 수도 있다. 예를 들면, (예컨대, 1080p 비디오에 대한) 1920×1080 픽셀 픽처는 무려 4×4 픽셀들의 495 개 블록들을 갖는 폭을 포함할 수도 있고, 각각의 블록은 잠정적으로 자기 소유의 모션 정보를 갖는다. 16 개까지의 참조 픽처들이 각각의 픽처를 코딩하는데 사용가능할 수도 있다. 따라서, 라인 버퍼에서 일 픽처의 각 블록에 대한 모든 모션 정보가 저장될 경우, 비디오 코더는 상대적으로 상당한 양의 데이터를 라인 버퍼에 저장하도록 요구될 수도 있다.
본 개시물의 양태들에 따르면, (비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은) 비디오 코더는, 코딩 동안 라인 버퍼에 저장되는 데이터의 양을 감소시키기 위해 블록 (188) 에 대하여 모션 정보가 결정되는 위치들의 개수를 제한할 수도 있다. 즉, 예를 들어, A0, A1, B0, B1, 및 B2 모두로부터 블록 (188) 을 코딩하기 위한 모션 정보 (예컨대, MVP 또는 병합 후보) 를 결정하는 것보다, 비디오 코더는 오직 후보들의 서브-세트에 기초하여 블록 (188) 에 대한 모션 정보를 결정할 수도 있다. 본 개시물의 양태들에 따르면, 비디오 코더는 좌측-이웃 블록들 A0 및 A1 및 함께 위치된 블록 COL 에 기초하지만 상부-이웃 블록들 B0, B1, 또는 B2 에 기초하지 않고 블록 (188) 에 대한 모션 정보를 결정할 수도 있다. 즉, 예를 들어, 비디오 코더는 오직 좌측-이웃 블록들 A0 및 A1 및 함께 위치된 블록 COL 에 기초하여 블록 (188) 에 대한 모션 정보를 결정할 수도 있다. 이러한 예에서, 비디오 코더는 상부-이웃 블록들 B0, B1, 또는 B2 과 연관된 모션 정보를 라인 버퍼에 저장하는 것을 회피할 수도 있는데, 이는 모션 정보가 블록 (188) 을 코딩하기 위한 MVP 또는 병합 후보를 결정하는데 사용되지 않기 때문이다.
다른 예들에서, 비디오 코더는, 상부-이웃 블록들이 현재 블록 (188) 과 동일한 LCU 로부터 온 경우에만, (예컨대, A0 및 A1 및 함께 위치된 블록 COL 이외에) 상부-이웃 블록들 B0, B1, 또는 B2 중 하나 이상에 기초하여 블록 (188) 에 대한 모션 정보를 결정할 수도 있다. 그러한 일 예에서, 상부-이웃 블록들 B0, B1, 또는 B2 에 대한 모션 정보는 (라인 버퍼에 저장되지 않고) 사용가능할 수도 있으며, 이는 LCU 의 모든 정보가 통상적으로 LCU 의 코딩 동안 사용가능하기 때문이다. 하기에서 설명되는 것과 같은 다양한 다른 기술들도 또한, 비디오 코딩 동안 버퍼링되는 모션 정보의 양을 감소시키는데 사용될 수도 있다.
도 7 은 본 개시물의 양태들에 따른, 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 블록도이다. 도 7 에 도시된 예는 일반적으로 비디오 코더에 의해 수행되고 있는 것으로 설명된다. 일부 예들에서, 도 7 의 기술은 전술된 비디오 인코더 (20; 도 1 및 도 2) 또는 비디오 디코더 (30; 도 1 및 도 3) 에 의해 실행될 수도 있다. 다른 예들에서, 도 7 의 기술은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들 등등에 의해 수행될 수도 있다.
비디오 코더는 코딩된 유닛 (191) 의 현재 블록 (190) 을 현재 코딩 (예컨대, 인터-코딩 또는 인트라-코딩) 중에 있을 수도 있다. 코딩된 유닛 (191) 은 예를 들어, LCU, 슬라이스, 타일 또는 타일 세트, 웨이브프론트 세트, 또는 비디오 데이터의 다수의 블록들을 포함하는 임의의 다른 미리 정의된 유닛과 같은, 비디오 데이터의 다수의 블록들을 포함하는 미리 정의된 양의 비디오 데이터를 일반적으로 포함할 수도 있다. 상부-이웃 블록들 (194), 좌측-이웃 블록들 (192), 및 블록들 (196) 은 일반적으로 도 7 의 예에서 분할되지 않은 블록들로서 도시되지만, 그런 블록들은 하나 이상의 더 작은 블록들로 분할될 수도 있다는 것이 이해되어야 한다.
본 개시물의 양태들에 따르면, 블록 (190) 을 코딩하기 위해 상부-이웃 블록들 (194) 로부터의 예측 정보를 사용하는 것보다, 비디오 코더는 좌측-이웃 블록들 (192) 로부터의 예측 정보 (예컨대, 인트라 또는 인터-예측 정보) 만을 사용할 수도 있다. 예를 들어, 비디오 코더는 현재 블록 (190) 에 대하여 인터-예측 또는 인트라-예측을 수행할 경우, 현재 블록 (190) 에 인접하게 위치되지 않은 상부-이웃 블록들 (194) 또는 이전에 코딩된 블록들 (196) 로부터의 데이터를 사용하지 않을 수도 있다. 이 예에서, 비디오 코더는 (예컨대, 도 5 및 도 6에 도시된 것과 같이) 모든 이웃 블록들에 대한 예측 정보가 코딩 동안 사용될 경우보다 적은 데이터를 버퍼링할 수도 있다. 예를 들어, 최대 LCU 사이즈의 64×64 픽셀들 및 최소 CU 사이즈의 4×4 픽셀들을 가정하면, 비디오 디코더 (30) 는 비디오 데이터의 바로 16 개 블록들 (예컨대, 64/4 = 16 개의 잠정적인 좌측-이웃 블록들) 과 연관된 데이터를 잠정적으로 버퍼링할 수도 있다.
도 7 의 예에서 도시되고 설명된 것과 같이, 콘텍스트 정보가 도출되는 위치들을 제한함으로써, 비디오 코더는 예측의 목적을 위해 버퍼링되는 데이터의 양을 감소시킬 수도 있다. 추가로, 비디오 코더는 파싱 스루풋을 증가시킬 수도 있다. 예를 들어, 전술된 것과 같이, (비디오 디코더 (30) 와 같은) 비디오 디코더는 특정 파싱 프로세스 (예컨대, 웨이브프론트 파싱) 에 따라 수신된 비디오 데이터를 파싱할 수도 있다. 비디오 디코더 (30) 가 상부-이웃 블록들 (194) 과 같은 특정 이웃 블록들로부터 예측 정보를 결정하지 않는 예들에서, 비디오 디코더 (30) 는 파싱 스루풋 및 비디오 데이터를 병렬로 처리하는 능력을 개선시키기 위해 의존도들을 제거할 수도 있다. 추가로, 의존도들을 제거하는 것은 예측 도출 에러들에 대한 포텐셜을 감소시킬 수도 있고, 따라서 파싱 프로세스를 추가로 개선할 수도 있다.
도 8 은 예측 정보가 블록을 코딩하기 위해 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다른 블록도이다. 도 8 에 도시된 예에서, (비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은) 비디오 코더는 좌측-이웃 블록 (L) 과 하부 좌측-이웃 블록 (BL) 에 기초하여 현재 코딩되고 있는 블록 (200) 에 대한 예측 정보를 결정할 수도 있다. 도 7 에 도시된 예와 비교하여, 도 8 의 예는 예측 정보를 유도하기 위해 추가의 좌측-이웃 블록을 부가한다.
도 8 에 도시된 예에서, 도 7 에 도시된 예에서와 같이, 현재 블록 (200) 에 대하여 상부-이웃 블록들에 대한 예측 정보 (예컨대, 인트라-모드들 또는 모션 정보) 를 저장하기 위한 라인 버퍼는 전혀 요구되지 않을 수도 있다. 앞서 설명된 것과 같이, LCU 는 상이한 배열의 CU들로 파티셔닝될 수 있다. 따라서, 도 8 의 블록들 (L 및 BL) 은 동일한 LCU 의 상이한 CU들일 수도 있다.
인트라-예측에 대하여, 블록 (L) 및 블록 (BL) 은 모두 동일한 인트라-예측 모드를 사용하여 코딩될 수도 있지만, 일부 경우들에서, 이들은 상이한 인트라-예측 모드를 사용하여 코딩될 수도 있다. 블록 (L) 의 인트라-예측 모드와 블록 (BL) 의 인트라-예측 모드에 기초하여, 현재 블록 (200) 에 대한 가장 가능한 인트라-예측 모드가 결정될 수도 있다. 예를 들어, 양자의 블록들 (L 및 BL) 이 (미리 정의된 수의 인트라 모드들 중) 모드 6 를 사용하여 코딩되었다면, 블록 (200) 에 대한 가장 가능한 인트라-예측 모드는 또한 모드 6 일 수도 있다. 다시 말해서, 모드 6 는 블록 (200) 에 대한 실제 예측 모드가 아니라, 블록 (200) 에 대한 콘텍스트 (즉, 블록 (200) 에 이웃하는 블록들의 예측 모드들) 가 주어질 때 블록 (200) 에 대한 통계적으로 가장 가능한 모드일 수도 있다.
다른 예에서, 코딩 효율을 개선시키고 리던던시를 회피하기 위해, 블록들 (L 및 BL) 이 동일한 인트라-예측 모드를 갖는다면, 현재 블록 (200) 의 좌측에서의 제 3 블록이 또한 가장 가능한 모드의 결정시 사용될 수도 있다. 블록들 (L 및 BL) 또는 (제 3 의 좌측 블록) 은 블록록 (200) 에 바로 인접하지 않아야하지만, 블록 (200) 의 좌측에서 하나 이상의 컬럼들일 수도 있음에 유의하여야 한다. 블록 (L) 및 블록 (BL) 이 각각 모드들 3 및 8 을 사용하여 인코딩된다면, 블록 (200) 에 대한 가장 가능한 모드는 모드 3, 모드 8, 또는 상이한 모드일 수도 있다. 특정 콘텍스트에 대한 가장 가능한 모드는 그 콘텍스트에 대하여 통계적으로 가장 가능한 인트라-예측 모드를 식별함으로써 선택될 수 있다. 가장 가능한 모드를 결정하기 위해 상부 블록의 사용을 회피함으로써, 상부 블록들에 대한 인트라-예측 모드들을 저장하는 라인 버퍼에 대한 요구가 제거될 수도 있다.
인터-예측에 대하여, 모션 벡터의 x 및 y 좌표들을 표시하는 모션 벡터 (mvx, mvy), 참조 프레임 리스트에 참조 프레임을 표시하는 참조 인덱스 (ref_idx), 및 어떤 참조 프레임 리스트를 사용할지 (예컨대, L0 및 L1) 를 표시하는 예측 방향 (inter_dir) 을 포함하는 모션 정보는 블록 (200) 을 이웃하는 블록들에 대하여 저장될 수도 있다. 일부 경우들에서, 그러한 모든 모션 정보는 대응하는 라인 버퍼들에 저장될 수도 있다. 본 개시물의 양태들에 따르면, 비디오 코더는 오직 블록 (L) 및 블록 (BL) 에 대한 모션 정보만을 저장하고, 상부-이웃 블록들에 대한 모션 정보는 제외시킬 수도 있다.
일부 예들에 따르면, 모션 벡터 예측을 위한 후보들의 수를 감소시키는 것과 연관된 가능한 성능 손실은 추가의 모션 후보들을 생성함으로써 보상될 수도 있다. 예를 들어, 이하 표 1 의 예에 도시된 것과 같이, 비디오 코더는 블록들 (L 및 BL) 의 모션 정보와 같은 사용가능한 모션 정보를 사용하여 추가의 모션 후보들을 생성할 수도 있다.
Figure pct00001
표 1 - 생성된 모션 후보들
표 1 의 예에 도시된 것과 같이, 비디오 코더는 블록들 (L 및 BL) 로부터의 모션 정보를 사용하여 모션 병합 후보들 (2), (3) 및 (4) 을 생성할 수도 있다. 즉, 후보 L 및 BL 의 모션 정보 (inter_dir, ref_idx, 및 mv) 는 새로운 모션 후보들을 생성하는데 사용될 수도 있다. 이러한 예에서, mvLX_Y 는 y-번째 후보에서 리스트 X 의 모션 벡터를 나타낼 수도 있고, mvLX'_Y 는 참조 리스트의 N-번째 참조 픽처에서 mvLX_Y, refN 의 처리된 모션 벡터를 나타낼 수도 있다. 표 1 에 도시된 생성된 모션 정보는 현존의 모션 정보를 스케일링하거나, 오프셋하거나, 클리핑하거나, 그렇지않으면 수정함으로써 생성될 수도 있다.
도 8 의 예는 L 및 BL 과 관련하여 설명되지만, 전술된 것과 같이, 다른 블록들 (예컨대, 추가의 블록들, 블록 (200) 에 인접하지 않은 블록들, 등등) 도 또한 사용될 수도 있다. 또한, (예컨대, 표 1 에 도시된 것과 같은) 병합 모드와 관련하여 설명된 기술들은 MVD 를 사용하여 모션 벡터 예측에 유사하게 적용될 수도 있다.
도 9 는 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 다른 블록 다이어그램이다. 예를 들어, 본 개시물의 양태들은 복수의 좌측-이웃 블록들 (L00-L0N, L10-L1N, L20-L2N, BL0-BLN, 등) 에 기초하여 현재 블록 (205) 에 대한 예측 정보를 결정하는 것을 포함한다. 일부 예들에서, 비디오 코더는 코딩되고 있는 블록의 2 이상의 컬럼으로부터 좌측으로의 블록들에 기초하여 예측 정보를 결정할 수도 있다. 즉, 인터-코딩에 대하여, 최종 모션 벡터 후보 리스트는 복수의 좌측-이웃 블록들로부터 선택된 블록들에 의해 구성될 수도 있다. 인트라-코딩에서, 복수의 좌측-이웃 블록들로부터의 인트라-모드들은 가장 가능한 모드 도출을 위해 사용될 수도 있다.
도 9 의 예에 도시된 것과 같이, (경계 블록들 (LN0) 의 좌측에) 추가의 좌측-이웃 블록들은 좌측-이웃 블록들의 버퍼링하지 않은 예측 정보와 연관된 가능한 코딩 성능 손실을 오프셋하는데 사용도리 수도 있다. 예를 들면, 일부 경우들에서, 상부-좌측 블록의 인트라-모드는 블록 (205) 과 매칭할 수도 있다. 다른 경우들에서, 상부-이웃 블록과 연관된 모션 벡터는 블록 (205) 의 모션 벡터와 매칭하거나 거의 매칭할 수도 있다. 이러한 경우들에서, 비디오 코더가 코딩 동안 상부-이웃 블록들의 데이터를 추출하는 것을 방지하는 것은 비디오 코더가 덜 정확한 예측자를 발견하도록 강요될 수도 있기 때문에 코딩 성능 손실을 초래할 수도 있다. 그러나, 데이터가 예측 정보를 결정하기 위해 비디오 코더에 의해 취출될 수도 있는 좌측-이웃 블록들의 수를 증가시키기 위해, 상대적으로 높은 품질의 예측자를 발견하는 포텐셜이 증가할 수도 있다.
일부 예들에서, 도 9 에 도시된 좌측-이웃 블록들은 동일한 LCU 의 부분을 형성하는 상이한 CU들일 수도 있다. 다른 예들에서, 좌측-이웃 블록들은 상이한 LCU들에 포함될 수도 있다.
도 10 은 블록을 코딩하기 위해 예측 정보가 결정될 수도 있는 예시적인 이웃 블록들을 예시하는 또 다른 블록 다이어그램이다. 예를 들어, 상부-이웃 블록들과 연관된 임의의 데이터를 저장하는 것을 제한하는 것과는 다르게, 예측 목적들 (예컨대, 인터-코딩 또는 인트라-코딩) 을 위해 라인 버퍼 데이터를 감소시키는 다른 방식은 라인 버퍼에 저장된 블록들의 수를 감소시키는 것이다. 도 10 에 도시된 예에서, 블록 (210) 은 현재 코딩되고 있지만, 블록들 (212) 은 이전에 코딩되었다. 일부 예들에서, 블록들 (214A 및 214B; 총체적으로 블록들 (214)) 과 연관된 예측 정보 (예컨대 인트라 모드들 또는 모션 정보) 는 라인 버퍼에 저장될 수도 있다.
그러나, 본 개시물의 양태들에 따르면, 블록들 (214) 과 연관된 데이터의 서브-세트만이 라인 버퍼에 저장될 수도 있다. 즉, 도 10 에 도시된 예에서, 블록들 (214A) 과 연관된 예측 정보는 라인 버퍼에 저장될 수도 있는 반면, 블록들 (214B) 과 연관된 예측 정보는 라인 버퍼로부터 생략될 수도 있다. 도 10 의 예가 동일한 사이즈인 블록들 (214A 및 214B) 을 도시하는 반면, 다른 예들에서, 상이한 서브-샘플링 방식이 구현될 수도 있으며, 그 방식은 블록들 (214) 의 예측 정보의 오직 일부분만이 라인 버퍼에 저장되게 한다. 즉, 다른 예들에서, 블록들 (214A) 은 블록들 (214B) 보다 크거나 작을 수도 있다.
도 10 에 도시된 예에서, (비디오 인코더 (20) 또는 비디오 디코더 (30) 같은) 비디오 코더가 블록들 (214A) 중 하나로부터의 예측 정보를 결정해야 한다면, 비디오 코더는 버퍼로부터 예측 정보를 판독할 수 있다. 즉, 예를 들어, 블록들 (214A) 중 하나가 블록 (210) 에 대한 가장 가능한 모드 결정을 위한 콘텍스트를 포함한다면, 비디오 코더는 라인 버퍼로부터 인트라-모드를 판독할 수도 있다.
대안적으로, 비디오 코더가 블록들 (214B) 중 하나로부터의 예측 정보를 결정해야 한다면, 비디오 코더는 버퍼에 저장된 예측 정보의 서브세트에 기초하여 블록에 대한 예측 정보를 도출할 수 있다. 도출은, 예를 들어, 버퍼에 저장된 하나 이상의 인접 블록들 (214A) 에 대한 예측 정보를 카피하는 것, 버퍼에 저장된 모션 정보를 보간하는 것, 또는 블록들 (214A) 에 대하여 저장된 예측 정보에 기초하는 일부 다른 방식으로 예측 정보를 도출하는 것에 기초할 수도 있다.
도 11 은 버퍼에 저장된 모션 벡터들을 클립핑하는 (예컨대, 비트 깊이를 감소시키는) 일 예를 예시하는 개념도이다. 즉, 예를 들어, 라인 버퍼에 저장된 예측 정보 (및, 더 구체적으로, 인터-예측을 위한 모션 벡터들) 의 양을 감소시키는 다른 방식은 각각의 모션 벡터의 각 컴포넌트를 저장할 경우 사용되는 비트들의 수를 감소시키는 것일 수도 있다.
이러한 예에서, 도 11 의 예에 도시된 것과 같이, 라인 버퍼에 저장된 각각의 모션 벡터 (예컨대, 상부-이웃 블록들과 연관된 모션 벡터들) 은 N 개 비트들로 클리핑될 수도 있고, 여기서 각각의 모션 벡터는 원래 M 개 비트들이다 (M 은 N 보다 크다). 도 11 의 예에서, M 은 12 와 동일하고, N 은 8 과 동일하지만, 다른 수의 비트들이 또한 구현될 수도 있다. 도 11 에 도시된 정수들의 특정 표현은 (2-보수 연산으로 공지된) 물리적인 표현에 대응할 수도 있는 것이 아니라 설명을 위해 제공된다. 도 11 에 도시된 예시적인 비트 클리핑에서, 서브-픽셀 ("sub-pel") 정확성이 없는 모션 벡터의 최대 범위는 64 이다. 모션이 작을 경우, 이러한 클리핑은 코딩 효율에 상대적으로 적은 영향을 주거나 어떤 영향도 주지 않을 수도 있다.
도 12 는 라인 버퍼에 저장된 모션 벡터들을 클리핑하는 일 예를 예시하는 다른 개념도이다. 예를 들면, 관련 모션 벡터가 상대적으로 클 경우, 더 적은 유의 비트들이 클리핑될 수도 있다. 즉, 도 12 의 예에서, 3 개의 최상위 비트들 및 서브-픽셀 비트들 중 하나가 클리핑되었다. 더욱 구체적으로, 도 12 의 예에서, 1/4-픽셀 또는 서브-픽셀 정확성은 제거되고, 3 개의 최상위 비트들이 제거되지만, 상이한 구성이 구현될 수도 있다. (예컨대, 도 11 및 도 12 에 도시된 것과 같은) 최상위 또는 최하위 비트들로부터 제거된 비트들의 개수는 SPS 또는 PPS 와 같은 파라미터 세트에서 규정될 수도 있다.
도 13 은 LCU 의 경계 CU들을 예시하는 다이어그램이다. 예를 들어, LCU (240) 는 하나 이상의 다른 LCU들을 포함할 수도 있는 블록들 (242) 에 의해 경계가 설정된다. 도 13 에 도시도니 예에서, LCU (240) 는 블록들 (242) 과 경계를 공유하는 경계 CU들 (244) 및 블록들 (242) 과 경계를 공유하지 않는 내부 CU들 (246) 을 포함한다. LCU (240) 의 CU들 각각은 연관된 PU들을 가질 수도 있다.
일부 예들에서, 전술된 것과 같이, 비디오 코더는 상부-이웃 블록들로부터의 예측 정보 (예컨대, 인트라-모드들 또는 모션 정보) 를 사용하여 LCU (240) 의 PU들을 코딩할 수도 있다. CU들 (246) 의 상부-이웃 PU들에 대한 예측 정보는, PU들이 동일한 LCU (242) 에 포함되기 때문에 용이하게 사용가능할 수도 있다. 그러나, CU (244) 의 경계 PU들을 코딩할 경우 상부-이웃 블록들 (242) 로부터의 예측 정보에 액세스하기 위해, 비디오 코더는 코딩되고 있는 LCU (240) 와 상이한 LCU 로부터의 정보에 액세스해야만 한다. 예컨대, 비디오 코더 외부의 메모리에 액세스하지 않고 사용가능하게 하기 위해, 비디오 코더는 그러한 상부-이웃 예측 정보를 라인 버퍼에 저장할 수도 있다.
(경계 CU들 (244) 에 대한 정보를 저장하기 위한 버퍼를 포함하는) LCU (240) 의 모든 PU들에 대해 이러한 균일한 방식을 적용하는 것은 하드웨어 구현의 간단함을 도울 수도 있다. 즉, 모든 PU들은 동일한 관련 위치들로부터의 예측 정보에 액세스할 수도 있다. 그러나, 블록들 (244, 246) 을 포함하는 LCU 와 상이한 LCU 에서, 상부-이웃 블록들 (242) 로부터의 데이터가 코딩 동안 취출되는 것을 차단하는 것은 라인 버퍼에 저장된 데이터의 양을 감소시킬 수도 있다. 추가로, 상부-이웃 블록들 (242) 로부터의 데이터가 코딩 동안 취출되는 것을 차단하는 것은 또한 LCU (240) 의 외부의 CU들에 의존하는 것으로부터 도입될 수도 있는 부정확성들의 영향을 최소화할 수도 있고, 따라서 코딩 성능을 개선할 수도 있다. 즉, 상부-이웃 블록들 (242) 로부터의 데이터가 손실되거나 그렇지 않으면 오류가 발생된 다른 슬라이스의 일부분을 형성할 경우, 비디오 코더는 여전히 경계 CU들 (244) 을 코딩할 수도 있다.
따라서, 본 개시물의 전체에서 설명된 기술들은 LCU 의 PU들의 서브-세트에만 적용될 수도 있다. 즉, 예를 들어, 라인 버퍼에 저장된 데이터의 양을 제한하기 위한 기술들은 오직, 라인 버퍼로의 액세스를 요구할 수도 있는 LCU (240) 의 경계 CU들 (244) 에만 적용될 수도 있다.
도 14 는 비디오 코딩 동안 버퍼링된 예측 정보의 양을 감소시키기 위한 예시적인 기술을 예시하는 흐름도이다. 도 14 에 도시된 예는 일반적으로 비디오 코더에 의해 수행되고 있는 것으로 설명된다. 일부 예들에서, 도 14 의 기술은 위에서 설명된 비디오 인코더 (20; 도 1 및 도 2) 또는 비디오 디코더 (30; 도 1 및 도 3) 에 의해 수행될 수도 있다는 것이 이해되어야 한다. 다른 예들에서, 도 14 의 기술은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들, 등등에 의해 수행될 수도 있다.
비디오 코더는 엔트로피 코딩을 위해 코딩된 유닛 (예컨대, 픽처, 슬라이스, 타일, 웨이브프론트 세트, 등등) 의 비디오 데이터의 블록을 수신할 수도 있다 (260). 본 개시물의 양태들에 따르면, 비디오 데이터의 블록은 코딩된 유닛에서 블록들의 최상부 로우 아래에 위치될 수도 있다. 일부 예들에서, 현재 코딩되고 있는 블록은 상부-이웃 서브-CU들과 동일한 LCU 에 포함된 서브-CU 일 수도 있다.) 의 상단 행 하측에 위치될 수도 있다. 다른 예들에서, 블록은 LCU 의 에지에 배치될 수도 있어서, 상부-이웃 블록들이 현재 블록과 상이한 LCU 에 속할 수도 있다.
그 후에, 비디오 코더는 코딩된 유닛에서 하나 이상의 다른 블록들의 예측 정보에 기초하고 코딩된 유닛의 최상부 로우에서의 블록들에 기초하지 않고 블록에 대한 예측 정보를 결정할 수도 있다 (262). 예를 들어, 제 1 블록이 인터-예측된다면, 비디오 코더는 제 1 블록과 연관된 모션 정보 (예컨대, 모션 벡터들, 참조 픽처 인덱스들, 예측 방향들, 또는 다른 정보) 를 결정할 수도 있다. 대안적으로, 제 1 블록이 인트라-예측된다면, 비디오 코더는 제 1 블록의 인트라-모드를 결정할 수도 있다.
일부 예들에서, 본 개시물의 양태들에 따르면, 상부-이웃 블록들에 기초하여 블록에 대한 예측 정보를 결정하는 것보다, 비디오 코더는 좌측-이웃 블록들로부터의 예측 정보를 사용할 수도 있다. 일부 예들에서, 좌측-이웃 블록들은 현재 코딩되고 있는 블록과 동일한 LCU 내에 포함될 수도 있다. 다른 예들에서, 좌측-이웃 블록들은 현재 코딩되고 있는 블록과 상이한 LCU 에 포함될 수도 있다. 전술된 것과 같이, 일부 예들에서, 하나 이상의 다른 블록들은 현재 코딩되고 있는 블록들과 바로 인접하여 배치될 수도 있거나, 그 블록으로부터 몇몇 블록들에 배치될 수도 있다.
다른 예에서, 비디오 데이터의 블록은 LCU 의 하나 이상의 블록들을 포함할 수도 있고, 블록들의 최상부 로우는 하나 이상의 다른 LCU들을 포함할 수도 있다. 그러한 일 예에서, 본 개시물의 양태들에 따르면, 비디오 코더는 LCU 의 다른 블록들과 연관된 예측 정보를 사용하여 블록에 대한 예측 정보를 결정할 수도 있지만, (다른 LCU들에 포함된) 상부-이웃 블록들의 최상부 로우를 제외할 수도 있다. 예시의 목적을 위한 일 예에서, 코딩되고 있는 블록은 LCU 의 제 1 서브-CU 를 포함할 수도 있고, 상부-이웃 블록들은 하나 이상의 다른 LCU들을 포함할 수도 있다. 또한, 제 2 서브-CU 는 (동일한 LCU 에서) 제 1 서브-CU 위에 위치되는 것으로 가정하자. 이러한 예에서, 비디오 코더는 제 1 서브-CU 위에 배치되는 제 2 서브-CU 에 기초하는 정보를 사용하여 제 1 서브-CU 에 대한 예측 정보를 결정할 수도 있다.
비디오 코더는 그 후에, 결정된 예측 정보에 기초하여 블록을 코딩할 수도 있다 (264). 예를 들어, 이하 도 15 및 도 16 에 대하여 더 상세히 설명되는 것과 같이, 블록이 인트라-코딩된 블록이라면, 비디오 코더는 하나 이상의 다른 블록들로부터의 인트라-예측 모드들에 기초하여 그 불록에 대한 가장 가능한 모드를 결정함으로써 블록을 코딩할 수도 있다. 대안적으로, 이하 도 17 및 도 18 에 대하여 더 상세히 설명되는 것과 같이, 현재 블록이 인터-코딩된 블록이라면, 비디오 코더는 하나 이상의 다른 블록들로부터의 모션 정보에 기초하여 MVD (또는 병합 정보) 를 결정함으로써 블록을 코딩할 수도 있다.
도 14 에 대하여 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 또한 이해되어야 한다. 다시 말하면, 도 14 의 방법의 단계들은 도 14 에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 15 는 비디오 인코딩에서 인트라-예측을 수행할 경우 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다. 비디오 인코더 (20) 에 대하여 설명되지만, 도 15 에 대하여 설명된 기술들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들, 등등에 의해 수행될 수도 있다.
도 15 에 도시된 예에서, 비디오 인코더 (20) 는 비디오 데이터의 제 1 블록에 대한 인트라-예측 모드를 결정할 수도 있다 (270). 비디오 인코더 (20) 는 또한 비디오 데이터의 제 2 블록에 대한 인트라-예측 모드를 결정할 수도 있다 (272). 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 제 1 블록이 제 2 블록의 상부-이웃 블록이 아닐 경우에만, 제 1 블록에 대한 인트라-예측 모드에 기초하여 제 2 블록에 대한 인트라-예측 모드를 결정할 수도 있다 (274). 제 1 블록이 상부-이웃 블록이면, 비디오 인코더 (20) 는 하나 이상의 다른 블록들에 기초하여 제 2 블록에 대한 가장 가능한 인트라-모드를 결정할 수도 있다. 즉, 상부-이웃 블록은 제 1 블록으로 고려되는 것이 제외될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 제 1 블록이 제 2 블록과 상이한 LCU 로부터 오는 경우에만 오직 상부-이웃 블록 제한을 적용할 수도 있다.
비디오 인코더 (20) 는, 결정된 가장 가능한 인트라-모드가 제 2 블록에 대하여 결정된 인트라-모드와 동일한지 여부를 결정할 수도 있다 (276). 가장 가능한 인트라-모드는 제 2 블록에 대한 결정된 인트라-모드와 동일하다면 (단계 (276) 의 예 브랜치), 비디오 인코더는 인코딩된 비트스트림에 가장 가능한 모드의 표시를 제공할 수도 있다 (278). 일부 예들에 따르면, 비디오 인코더 (20) 는 인코딩된 비트스트린에 가장 가능한 모드 플래그를 세팅할 수도 있고, 따라서 가장 가능한 모드가 제 2 블록을 인트라-코딩하는데 사용된 것을 표시할 수도 있다. 이러한 예에서, 이하 도 16 에 대하여 더 상세히 설명되는 것과 같이, 가장 가능한 모드 플래그를 디코딩하면, (비디오 디코더 (30) 와 같은) 비디오 디코더는 제 2 블록을 인코딩하는데 사용된 인트라-모드를 결정하기 위해 가장 가능한 모드 도출 프로세스를 재현할 수도 있다. 가장 가능한 인트라-모드가 제 2 블록에 대한 인트라-모드와 동일하지 않다면 (단계 (276) 의 아니오 브랜치), 비디오 인코더 (20) 는 인코딩된 비트스트림에 블록을 인코딩하는데 사용된 인트라-모드의 표시를 제공할 수도 있다 (280).
도 15 에 대하여 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 15 의 방법의 단계들은 도 15 에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 16 은 비디오 디코딩에서 인트라-예측을 수행할 경우 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다. 비디오 디코더 (30) 에 대하여 설명되지만, 도 16 에 대하여 설명된 기술들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들, 등등에 의해 수행될 수도 있다.
비디오 디코더 (30) 는 초기에, 비디오 데이터의 제 1 블록에 대한 인트라-예측 모드를 결정할 수도 있다 (290). 비디오 디코더 (30) 는 또한 제 2 블록의 가장 가능한 인트라-모드의 표시를 수신할 수도 있다 (292). 예를 들어, 비디오 디코더 (30) 는 일부 경우들에서, 가장 가능한 인트라-모드가 제 2 블록의 픽셀들을 인트라-예측하는데 사용되었는지 여부를 표시하는 가장 가능한 모드 플래그를 수신할 수도 있다.
비디오 디코더 (30) 는 가장 가능한 인트라-모드가 수신된 표시에 기초하여 제 2 블록을 디코딩하기 위한 인트라-모드와 동일한지 여부를 결정할 수도 있다 (294). 가장 가능한 인트라-모드가 제 2 블록을 디코딩하기 위한 적절한 인트라-모드이면 (단계 (294) 의 예 브랜치), 비디오 디코더 (30) 는 제 2 블록에 대한 가장 가능한 인트라-모드를 결정할 수도 있다 (296). 예를 들어, 본 개시물의 양태들에 따르면, 비디오 디코더 (30) 는 오직 제 1 블록이 제 2 블록의 상부-이웃 블록이 아닌 경우에만 제 1 블록에 대한 인트라-예측 모드에 기초하여 제 2 블록에 대한 인트라-예측 모드를 결정할 수도 있다. 제 1 블록이 상부-이웃 블록이라면, 비디오 디코더 (30) 는 하나 이상의 다른 블록들에 기초하여 제 2 블록에 대한 가장 가능한 인트라-모드를 결정할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 제 1 블록이 제 2 블록과 상이한 LCU 로부터 오는 경우, 오직 상부-이웃 블록 제한을 적용할 수도 있다.
그 후에, 비디오 디코더 (30) 는 가장 가능한 인트라-모드를 사용하여 제 2 블록을 디코딩할 수도 있다 (298). 즉, 예를 들어, 비디오 디코더 (30) 는 가장 가능한 인트라-예측 모드를 사용하여 제 2 블록을 예측할 수도 있고, 예측 값들과 수신된 잔여 값들의 조합에 기초하여 제 2 블록이 픽셀 값들을 결정할 수도 있다.
가장 가능한 인트라-모드가 제 2 블록을 디코딩하기 위한 적절한 인트라-모드가 아니라면 (단계 (294) 의 아니오 브랜치), 예컨대 비디오 디코더 (30) 는 일부 수신된 시그널링에 기초하여, 제 2 블록을 디코딩하기 위한 인트라-모드를 결정할 수도 있다 (300). 다른 예들에서, 비디오 디코더 (30) 는 제 2 블록에 대한 디폴트 인트라-모드를 적용할 수도 있다. 임의의 경우, 비디오 디코더 (30) 는 그 후에, 결정된 인트라-모드에 기초하여 제 2 블록을 디코딩할 수도 있다 (302). 즉, 예를 들어, 비디오 디코더 (30) 는 결정된 인트라-예측 모드를 사용하여 제 2 블록을 예측할 수도 있고, 예측된 값들과 수신된 잔여 값들의 조합에 기초하여 제 2 블록의 픽셀 값들을 결정할 수도 있다.
도 16 에 대하여 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 16 의 방법의 단계들은 도 16 에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 17 은 비디오 인코딩에서 인터-예측을 수행할 경우 버퍼링된 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다. 비디오 인코더 (20) 에 대하여 설명되지만, 도 17 에 대하여 설명된 기술들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들, 등등에 의해 수행될 수도 있다.
도 17 의 예에서, 비디오 인코더 (20) 는 비디오 데이터의 제 1 블록에 대한 모션 정보를 결정할 수도 있다 (310). 비디오 인코더 (20) 는 또한 비디오 데이터의 제 2 블록에 대한 모션 정보를 결정할 수도 있다 (312). 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 제 1 블록이 제 2 블록의 상부-이웃 블록이 아닐 경우에만, 제 1 블록에 대한 모션 벡터에 기초하여 제 2 블록에 대한 MVP 를 결정할 수도 있다 (314). 제 1 블록이 상부-이웃 블록이면, 비디오 인코더 (20) 는 하나 이상의 다른 블록들에 기초하여 제 2 블록에 대한 MVP 를 결정할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 제 1 블록이 제 2 블록과 상이한 LCU 로부터 오는 경우에만 오직 상부-이웃 블록 제한을 적용할 수도 있다.
비디오 인코더 (20) 는 또한, 결정된 MVP 의 표시를 인코딩된 비트스트림에 제공할 수도 있다 (316). 즉, 비디오 인코더 (20) 는 MVP 가 속하는 블록을 식별할 수도 있다. 추가로, 비디오 인코더 (20) 는 MVP 와 함께, MVD 를 인코딩된 비트스트림에 포함시킬 수도 있다.
MVP 를 결정하고 MVD 를 생성하는 것에 대하여 설명되지만, 도 17 에 대하여 도시되고 설명된 기술들이 또한 병합 모드를 위해 사용될 수도 있는 것이 이해되어야 한다. 도 17 에 대하여 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 17 의 방법의 단계들은 도 17 에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 18 은 비디오 디코딩에서 인터-예측을 수행할 경우 버퍼링되는 예측 정보의 양을 감소시키기 위한 예시적인 기술들을 예시하는 흐름도이다. 비디오 디코더 (30) 에 대하여 설명되지만, 도 18 에 대하여 설명된 기술들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들, 등등에 의해 수행될 수도 있다.
도 18 에 도시된 예에서, 비디오 디코더 (30) 는 비디오 데이터의 제 1 블록에 대한 모션 정보를 결정할 수도 있다 (330). 비디오 디코더 (30) 는 또한 비디오 데이터의 제 2 블록에 대한 모션 벡터 예측자의 표시를 수신할 수도 있다 (332). 본 개시물의 양태들에 따르면, 비디오 디코더 (30) 는 제 1 블록이 제 2 블록의 상부-이웃 블록이 아닌 경우에만 제 1 블록에 대한 모션 벡터에 기초하여 제 2 블록에 대한 MVP 를 결정할 수도 있다 (334). 즉, 비디오 디코더 (30) 는 제 1 블록이 제 2 블록의 상부-이웃 블록이 아닌 경우에 오직 제 1 블록으로부터의 모션 벡터를 MVP 후보에 부가할 수도 있다. 제 1 블록이 상부-이웃 블록이면, 비디오 디코더 (30) 는 하나 이상의 다른 블록들에 기초하여 제 2 블록에 대한 MVP 를 결정할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는, 제 1 블록이 제 2 블록과 상이한 LCU 인 경우에 오직 상부-이웃 블록 제한을 적용할 수도 있다.
비디오 디코더 (30) 는 (제 1 블록이 MVP 로서 사용되는 경우들에서) 제 1 블록에 대한 모션 벡터와 수신된 MVD 를 결합함으로써 제 2 블록에 대한 모션 정보를 결정할 수도 있다. 비디오 디코더 (30) 는 그 후에, 결정된 모션 정보를 사용하여 제 2 블록을 디코딩할 수도 있다 (336). 즉, 비디오 디코더 (30) 는 모션 벡터에 의해 식별된 예측 블록을 추출하고, 예측 블록과 수신된 잔여 값들의 조합에 기초하여 제 2 블록에 대한 픽셀 값들을 결정할 수도 있다.
MVP 를 결정하고 MVD 를 생성하는 것에 대하여 설명되지만, 도 18 에 대하여 도시되고 설명된 기술들이 또한 병합 모드를 위해 사용될 수도 있는 것이 이해되어야 한다. 도 18 에 대하여 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 18 의 방법의 단계들은 도 18 에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
또한, 예에 의존하여, 상이한 순서로 수행될 수도 있는 본 명세서에 설명된 방법들 중 임의의 것의 특정 액트들 또는 이벤트들이 부가되거나, 병합되거나, 또는 다 함께 제외될 수도 있다 (예컨대, 모든 설명된 액트들 또는 이벤트들이 방법을 실행에 필요한 것은 아니다) 는 것이 이해되어야 한다. 추가로, 특정 예들에서, 액트들 또는 이벤트들은 순차적으로라기 보다는, 예컨대, 다중 스레디드 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통하여 동시에 수행될 수도 있다. 덧붙여서, 본 개시물의 특정 양태들이 명료함을 위해 단일 모듈 또는 유닛에 의해 수행되는 것으로 설명되지만, 본 개시물의 기술들은 비디오 코더와 연관된 유닛들 또는 모듈들의 조합에 의해 수행될 수도 있다는 것이 이해되어야 한다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 그것을 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 (tangible) 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예컨대 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다.
이 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비-일시적 (non-transitory) 인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시물에서 설명된 기술들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로, 그러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 예컨대 적외선, 라디오, 및/또는 마이크로파를 사용하여 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다.
그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 대신 비-일시적 (non-transient), 유형의 저장 매체들을 지향하고 있음이 이해되어야 한다. 디스크 (disk 및 disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 들은 레이저들을 사용하여 광학적으로 데이터를 재생한다. 상기한 것들의 조합들은 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 예컨대 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에서 사용되는 바와 같은 용어 "프로세서"는 앞서의 구조 또는 본원에서 설명된 기술들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되는, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본 기술들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 완전히 구현될 수 있다.
본 개시물의 기술들은 무선 핸드셋, 집적회로 (IC) 또는 한 세트의 IC들 (예컨대, 칩 셋) 을 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로하지는 않는다. 차라리, 전술된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 전술된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호연동적 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
본 개시물의 각종 양태들이 설명되어 있다. 이들 및 다른 양태들은 다음의 청구항들의 범위 내에 있다.

Claims (52)

  1. 비디오 데이터를 코딩하는 방법으로서,
    비디오 데이터의 블록에 대한 예측 정보를 결정하는 단계로서, 상기 블록은 비디오 데이터의 코딩된 유닛에 포함되고 상기 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 상기 블록에 대한 예측 정보는 상기 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 상기 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 상기 예측 정보를 결정하는 단계; 및
    상기 결정된 예측 정보에 기초하여 상기 블록을 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 코딩된 유닛은 픽처, 슬라이스, 타일, 및 웨이브프론트 세트 중 하나를 포함하는, 비디오 데이터를 코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 예측 정보를 결정하는 단계는 상기 비디오 데이터의 하나 이상의 다른 블록들에 대한 인트라-예측 모드를 결정하는 단계를 포함하고,
    상기 블록에 대한 예측 정보를 결정하는 단계는 상기 하나 이상의 다른 블록들의 인트라-예측 모드에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 인트라-예측 모드들에 기초하지 않는 상기 블록에 대한 가장 가능한 인트라-예측 모드를 결정하는 단계를 포함하며, 그리고
    상기 블록을 코딩하는 단계는 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록의 하나 이상의 좌측-이웃 블록들을 포함하는, 비디오 데이터를 코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록에 바로 인접하는, 비디오 데이터를 코딩하는 방법.
  6. 제 4 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록에 바로 인접하지 않는 하나 이상의 블록들을 포함하는, 비디오 데이터를 코딩하는 방법.
  7. 제 3 항에 있어서,
    상기 블록에 대한 상기 가장 가능한 인트라-예측 모드를 결정하는 단계는, 제 1 의 좌측-이웃 제 1 블록 및 상기 블록 아래에 배치된 제 2 의 좌측-이웃 블록에 기초하여 상기 가장 가능한 인트라-예측 모드를 결정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  8. 제 3 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들의 블록들을 포함하며, 가장 가능한 인트라-모드의 결정은 상기 하나 이상의 다른 LCU들의 블록들의 인트라-예측 모드들에 기초하지 않는, 비디오 데이터를 코딩하는 방법.
  9. 제 3 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 상기 가장 가능한 모드를 결정하는 것은 상기 제 1 LCU 의 제 2 서브-CU 로부터의 인트라-예측 모드에 기초하여 상기 가장 가능한 모드를 결정하는 것을 포함하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 배치되는, 비디오 데이터를 코딩하는 방법.
  10. 제 3 항에 있어서,
    상기 블록을 코딩하는 단계는 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 인코딩하는 단계를 포함하며,
    상기 블록을 인코딩하는 단계는,
    상기 블록에 대한 상기 인트라-예측 모드를 사용하여 상기 블록을 인코딩하기 위한 잔여 값들을 인트라-예측하는 단계;
    상기 블록에 대한 상기 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부를 결정하는 단계; 및
    상기 블록에 대한 상기 인트라-예측 모드가 인코딩된 비트스트림에서 상기 가장 가능한 인트라-예측 모드와 매칭하는지 여부를 표시하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  11. 제 3 항에 있어서,
    상기 블록을 코딩하는 단계는 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 디코딩하는 단계를 포함하며,
    상기 블록을 디코딩하는 단계는,
    상기 블록에 대한 상기 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부에 기초하여 상기 블록을 디코딩하기 위한 상기 인트라-예측 모드를 결정하는 단계;
    상기 블록을 디코딩하기 위해 상기 결정된 인트라-예측 모드를 사용하여 상기 블록에 대한 잔여 값들을 인트라-예측하는 단계; 및
    상기 인트라-예측된 잔여 값들을 상기 블록의 수신된 잔여 값들과 결합하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 예측 정보를 결정하는 단계는 상기 비디오 데이터의 블록에 대한 모션 정보를 결정하는 단계를 포함하고,
    상기 블록에 대한 예측 정보를 결정하는 단계는 상기 하나 이상의 다른 블록들에 대한 모션 정보에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 모션 정보에는 기초하지 않고 상기 블록에 대한 모션 정보를 결정하는 단계를 포함하며, 그리고
    상기 블록을 코딩하는 단계는 상기 결정된 모션 정보에 기초하여 상기 블록을 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  13. 제 12 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들을 포함하며, 상기 모션 정보의 결정은 상기 하나 이상의 다른 LCU들의 모션 정보에 기초하지 않는, 비디오 데이터를 코딩하는 방법.
  14. 제 12 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 모션 정보를 결정하는 단계는 상기 제 1 LCU 의 제 2 서브-CU 로부터의 모션 정보에 기초하여 상기 모션 정보를 결정하는 단계를 포함하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 있는, 비디오 데이터를 코딩하는 방법.
  15. 제 12 항에 있어서,
    상기 블록을 코딩하는 단계는 상기 블록을 인코딩하는 단계를 포함하며,
    상기 하나 이상의 다른 블록들의 모션 정보에 기초하여 상기 블록에 대한 예측 정보를 결정하는 단계는 상기 하나 이상의 다른 블록들의 모션 정보에 기초하여 상기 블록에 대한 모션 벡터 예측자를 결정하는 단계를 포함하고; 그리고
    상기 블록을 인코딩하는 단계는 인코딩된 비트스트림에서 모션 벡터 예측자를 표시하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  16. 제 12 항에 있어서,
    상기 블록을 코딩하는 단계는 상기 블록을 디코딩하는 단계를 포함하며,
    상기 블록에 대한 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부에 기초하여 상기 블록을 디코딩하기 위해 인트라-예측 모드를 결정하는 단계;
    상기 블록을 디코딩하기 위해 상기 결정된 인트라-예측 모드를 사용하여 상기 블록에 대한 잔여 값들을 인트라-예측하는 단계; 및
    상기 블록을 재구성하기 위해 상기 인트라-예측된 잔여 값들을 상기 블록의 수신된 잔여 값들과 결합하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  17. 비디오 데이터를 코딩하는 장치로서,
    하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    비디오 데이터의 블록에 대한 예측 정보를 결정하는 것으로서, 상기 블록은 비디오 데이터의 코딩된 유닛에 포함되고 상기 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 상기 블록에 대한 예측 정보는 상기 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 상기 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 상기 예측 정보를 결정하고; 그리고
    상기 결정된 예측 정보에 기초하여 상기 블록을 코딩하도록
    구성되는, 비디오 데이터를 코딩하는 장치.
  18. 제 17 항에 있어서,
    상기 코딩된 유닛은 픽처, 슬라이스, 타일, 및 웨이브프론트 세트 중 하나를 포함하는, 비디오 데이터를 코딩하는 장치.
  19. 제 17 항에 있어서,
    상기 예측 정보를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 비디오 데이터의 하나 이상의 다른 블록들에 대한 인트라-예측 모드를 결정하도록 구성되고,
    상기 블록에 대한 예측 정보를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 하나 이상의 다른 블록들의 인트라-예측 모드에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 인트라-예측 모드들에 기초하지 않는 상기 블록에 대한 가장 가능한 인트라-예측 모드를 결정하도록 구성되며, 그리고
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 코딩하도록 구성되는, 비디오 데이터를 코딩하는 장치.
  20. 제 19 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록의 하나 이상의 좌측-이웃 블록들을 포함하는, 비디오 데이터를 코딩하는 장치.
  21. 제 20 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록에 바로 인접하는, 비디오 데이터를 코딩하는 장치.
  22. 제 20 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록에 바로 인접하지 않는 하나 이상의 블록들을 포함하는, 비디오 데이터를 코딩하는 장치.
  23. 제 19 항에 있어서,
    상기 블록에 대한 상기 가장 가능한 인트라-예측 모드를 결정하기 위해, 상기 하나 이상의 프로세서들은 추가로, 제 1 의 좌측-이웃 제 1 블록 및 상기 블록 아래에 배치된 제 2 의 좌측-이웃 블록에 기초하여 상기 가장 가능한 인트라-예측 모드를 결정하도록 구성되는, 비디오 데이터를 코딩하는 장치.
  24. 제 19 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들의 블록들을 포함하며, 가장 가능한 인트라-모드의 결정은 상기 하나 이상의 다른 LCU들의 블록들의 인트라-예측 모드들에 기초하지 않는, 비디오 데이터를 코딩하는 장치.
  25. 제 19 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 상기 가장 가능한 모드를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 제 1 LCU 의 제 2 서브-CU 로부터의 인트라-예측 모드에 기초하여 상기 가장 가능한 모드를 결정하도록 구성되며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 배치되는, 비디오 데이터를 코딩하는 장치.
  26. 제 19 항에 있어서,
    상기 비디오 데이터를 코딩하는 장치는 비디오 인코더를 포함하고,
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 인코딩하도록 구성되며,
    상기 블록을 인코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 블록에 대한 상기 인트라-예측 모드를 사용하여 상기 블록을 인코딩하기 위한 잔여 값들을 인트라-예측하고;
    상기 블록에 대한 상기 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부를 결정하고; 그리고
    상기 블록에 대한 상기 인트라-예측 모드가 인코딩된 비트스트림에서 상기 가장 가능한 인트라-예측 모드와 매칭하는지 여부를 표시하도록
    구성되는, 비디오 데이터를 코딩하는 장치.
  27. 제 19 항에 있어서,
    상기 비디오 데이터를 코딩하는 장치는 비디오 디코더를 포함하고,
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 디코딩하도록 구성되며,
    상기 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 블록에 대한 상기 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부에 기초하여 상기 블록을 디코딩하기 위한 상기 인트라-예측 모드를 결정하고;
    상기 블록을 디코딩하기 위해 상기 결정된 인트라-예측 모드를 사용하여 상기 블록에 대한 잔여 값들을 인트라-예측하며; 그리고
    상기 인트라-예측된 잔여 값들을 상기 블록의 수신된 잔여 값들과 결합하도록
    구성되는, 비디오 데이터를 코딩하는 장치.
  28. 제 17 항에 있어서,
    상기 예측 정보를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 비디오 데이터의 블록에 대한 모션 정보를 결정하도록 구성되고,
    상기 블록에 대한 예측 정보를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 하나 이상의 다른 블록들에 대한 모션 정보에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 모션 정보에는 기초하지 않고 상기 블록에 대한 모션 정보를 결정하도록 구성되며, 그리고
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 결정된 모션 정보에 기초하여 상기 블록을 코딩하도록 구성되는, 비디오 데이터를 코딩하는 장치.
  29. 제 28 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들을 포함하며, 상기 모션 정보의 결정은 상기 하나 이상의 다른 LCU들의 모션 정보에 기초하지 않는, 비디오 데이터를 코딩하는 장치.
  30. 제 28 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 모션 정보를 결정하기 위해, 상기 하나 이상의 프로세서들은 상기 제 1 LCU 의 제 2 서브-CU 로부터의 모션 정보에 기초하여 상기 모션 정보를 결정하도록 구성되며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 있는, 비디오 데이터를 코딩하는 장치.
  31. 제 28 항에 있어서,
    상기 비디오 데이터를 코딩하는 장치는 비디오 인코더를 포함하고,
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 블록을 인코딩하도록 구성되며,
    상기 블록을 인코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 하나 이상의 다른 블록들의 모션 정보에 기초하여 상기 블록에 대한 모션 벡터 예측자를 결정하는 것을 포함하는, 상기 하나 이상의 다른 블록들의 모션 정보에 기초하여 상기 블록에 대한 예측 정보를 결정하고; 그리고
    인코딩된 비트스트림에서 상기 모션 벡터 예측자를 표시하는 것을 포함하는, 상기 블록을 인코딩하도록
    구성되는, 비디오 데이터를 코딩하는 장치.
  32. 제 28 항에 있어서,
    상기 비디오 데이터를 코딩하는 장치는 비디오 디코더를 포함하며,
    상기 블록을 코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 블록을 디코딩하도록 구성되며,
    상기 블록을 디코딩하기 위해, 상기 하나 이상의 프로세서들은,
    상기 블록에 대한 인트라-예측 모드가 결정된 가장 가능한 인트라-예측 모드와 매칭하는지 여부에 기초하여 상기 블록을 디코딩하기 위해 인트라-예측 모드를 결정하고;
    상기 블록을 디코딩하기 위해 상기 결정된 인트라-예측 모드를 사용하여 상기 블록에 대한 잔여 값들을 인트라-예측하며; 그리고
    상기 블록을 재구성하기 위해 상기 인트라-예측된 잔여 값들을 상기 블록의 수신된 잔여 값들과 결합하도록
    구성되는, 비디오 데이터를 코딩하는 장치.
  33. 명령들이 저장된 비-일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 경우, 하나 이상의 프로세서들로 하여금,
    비디오 데이터의 블록에 대한 예측 정보를 결정하게 하는 것으로서, 상기 블록은 비디오 데이터의 코딩된 유닛에 포함되고 상기 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 상기 블록에 대한 예측 정보는 상기 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 상기 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 상기 예측 정보를 결정하게 하고; 그리고
    상기 결정된 예측 정보에 기초하여 상기 블록을 코딩하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  34. 제 33 항에 있어서,
    상기 코딩된 유닛은 픽처, 슬라이스, 타일, 및 웨이브프론트 세트 중 하나를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  35. 제 33 항에 있어서,
    상기 예측 정보를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 비디오 데이터의 하나 이상의 다른 블록들에 대한 인트라-예측 모드를 결정하게 하고,
    상기 블록에 대한 예측 정보를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 다른 블록들의 인트라-예측 모드에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 인트라-예측 모드들에 기초하지 않는 상기 블록에 대한 가장 가능한 인트라-예측 모드를 결정하게 하며, 그리고
    상기 블록을 코딩하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 코딩하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  36. 제 35 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록의 하나 이상의 좌측-이웃 블록들을 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  37. 제 35 항에 있어서,
    상기 블록에 대한 상기 가장 가능한 인트라-예측 모드를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 제 1 의 좌측-이웃 제 1 블록 및 상기 블록 아래에 배치된 제 2 의 좌측-이웃 블록에 기초하여 상기 가장 가능한 인트라-예측 모드를 결정하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  38. 제 35 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들의 블록들을 포함하며, 가장 가능한 인트라-모드의 결정은 상기 하나 이상의 다른 LCU들의 블록들의 인트라-예측 모드들에 기초하지 않는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  39. 제 35 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 상기 가장 가능한 모드를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 제 1 LCU 의 제 2 서브-CU 로부터의 인트라-예측 모드에 기초하여 상기 가장 가능한 모드를 결정하게 하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 배치되는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  40. 제 33 항에 있어서,
    상기 예측 정보를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 비디오 데이터의 블록에 대한 모션 정보를 결정하게 하고,
    상기 블록에 대한 예측 정보를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 다른 블록들에 대한 모션 정보에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 모션 정보에는 기초하지 않고 상기 블록에 대한 모션 정보를 결정하게 하며, 그리고
    상기 블록을 코딩하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 결정된 모션 정보에 기초하여 상기 블록을 코딩하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  41. 제 40 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들을 포함하며, 상기 모션 정보의 결정은 상기 하나 이상의 다른 LCU들의 모션 정보에 기초하지 않는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  42. 제 40 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 모션 정보를 결정하기 위해, 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 제 1 LCU 의 제 2 서브-CU 로부터의 모션 정보에 기초하여 상기 모션 정보를 결정하게 하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 있는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  43. 비디오 데이터를 코딩하는 장치로서,
    비디오 데이터의 블록에 대한 예측 정보를 결정하는 수단으로서, 상기 블록은 비디오 데이터의 코딩된 유닛에 포함되고 상기 코딩된 유닛에서 상부 이웃 블록들의 최상부 로우 아래에 배치되며, 상기 블록에 대한 예측 정보는 상기 코딩된 유닛에서 하나 이상의 다른 블록들로부터의 예측 정보에 기초하지만 상기 코딩된 유닛에서 블록들의 임의의 최상부 로우로부터의 예측 정보에 기초하지 않는, 상기 예측 정보를 결정하는 수단; 및
    상기 결정된 예측 정보에 기초하여 상기 블록을 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  44. 제 43 항에 있어서,
    상기 코딩된 유닛은 픽처, 슬라이스, 타일, 및 웨이브프론트 세트 중 하나를 포함하는, 비디오 데이터를 코딩하는 장치.
  45. 제 43 항에 있어서,
    상기 예측 정보를 결정하는 수단은 상기 비디오 데이터의 하나 이상의 다른 블록들에 대한 인트라-예측 모드를 결정하는 수단을 포함하고,
    상기 블록에 대한 예측 정보를 결정하는 수단은 상기 하나 이상의 다른 블록들의 인트라-예측 모드에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 인트라-예측 모드들에 기초하지 않는 상기 블록에 대한 가장 가능한 인트라-예측 모드를 결정하는 수단을 포함하며, 그리고
    상기 블록을 코딩하는 수단은 상기 가장 가능한 인트라-예측 모드에 기초하여 상기 블록을 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  46. 제 45 항에 있어서,
    상기 하나 이상의 다른 블록들은 상기 블록의 하나 이상의 좌측-이웃 블록들을 포함하는, 비디오 데이터를 코딩하는 장치.
  47. 제 45 항에 있어서,
    상기 블록에 대한 상기 가장 가능한 인트라-예측 모드를 결정하는 수단은, 제 1 의 좌측-이웃 제 1 블록 및 상기 블록 아래에 배치된 제 2 의 좌측-이웃 블록에 기초하여 상기 가장 가능한 인트라-예측 모드를 결정하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 장치.
  48. 제 45 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들의 블록들을 포함하며, 가장 가능한 인트라-모드의 결정은 상기 하나 이상의 다른 LCU들의 블록들의 인트라-예측 모드들에 기초하지 않는, 비디오 데이터를 코딩하는 장치.
  49. 제 45 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 상기 가장 가능한 모드를 결정하는 수단은 상기 제 1 LCU 의 제 2 서브-CU 로부터의 인트라-예측 모드에 기초하여 상기 가장 가능한 모드를 결정하는 수단을 포함하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 배치되는, 비디오 데이터를 코딩하는 장치.
  50. 제 43 항에 있어서,
    상기 예측 정보를 결정하는 수단은 상기 비디오 데이터의 블록에 대한 모션 정보를 결정하는 수단을 포함하고,
    상기 블록에 대한 예측 정보를 결정하는 수단은 상기 하나 이상의 다른 블록들에 대한 모션 정보에 기초하고 상기 코딩된 유닛에서 블록들의 최상부 로우로부터의 모션 정보에는 기초하지 않고 상기 블록에 대한 모션 정보를 결정하는 수단을 포함하며, 그리고
    상기 블록을 코딩하는 수단은 상기 결정된 모션 정보에 기초하여 상기 블록을 코딩하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  51. 제 50 항에 있어서,
    상기 블록은 최대 코딩 유닛 (LCU) 의 하나 이상의 블록들을 포함하고 상기 블록들의 최상부 로우는 하나 이상의 다른 LCU들을 포함하며, 상기 모션 정보의 결정은 상기 하나 이상의 다른 LCU들의 모션 정보에 기초하지 않는, 비디오 데이터를 코딩하는 장치.
  52. 제 50 항에 있어서,
    상기 블록은 상기 코딩된 유닛의 제 1 최대 코딩 유닛 (LCU) 의 제 1 서브-코딩 유닛 (CU) 을 포함하고, 상기 블록들의 최상부 로우는 상기 제 1 LCU 위에 있는 상기 코딩된 유닛의 제 2 LCU 를 포함하며, 상기 블록에 대한 모션 정보를 결정하는 수단은 상기 제 1 LCU 의 제 2 서브-CU 로부터의 모션 정보에 기초하여 상기 모션 정보를 결정하는 수단을 포함하며, 상기 제 2 서브-CU 는 상기 제 1 LCU 에서 상기 제 1 서브-CU 위에 있는, 비디오 데이터를 코딩하는 장치.
KR1020147004481A 2011-07-20 2012-07-17 비디오 코딩에서 예측 데이터를 버퍼링 KR101521060B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161509933P 2011-07-20 2011-07-20
US61/509,933 2011-07-20
US201161522136P 2011-08-10 2011-08-10
US61/522,136 2011-08-10
US13/550,377 2012-07-16
US13/550,377 US9699456B2 (en) 2011-07-20 2012-07-16 Buffering prediction data in video coding
PCT/US2012/047073 WO2013012867A2 (en) 2011-07-20 2012-07-17 Buffering prediction data in video coding

Publications (2)

Publication Number Publication Date
KR20140039082A true KR20140039082A (ko) 2014-03-31
KR101521060B1 KR101521060B1 (ko) 2015-05-15

Family

ID=47555728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147004481A KR101521060B1 (ko) 2011-07-20 2012-07-17 비디오 코딩에서 예측 데이터를 버퍼링

Country Status (15)

Country Link
US (1) US9699456B2 (ko)
EP (1) EP2735153A2 (ko)
JP (1) JP5869122B2 (ko)
KR (1) KR101521060B1 (ko)
CN (1) CN103688541B (ko)
AU (1) AU2012284123B2 (ko)
BR (1) BR112014001124A2 (ko)
CA (1) CA2842037C (ko)
IL (1) IL230281B (ko)
MX (1) MX338116B (ko)
MY (1) MY167510A (ko)
RU (1) RU2573744C2 (ko)
TW (1) TWI504237B (ko)
WO (1) WO2013012867A2 (ko)
ZA (1) ZA201401264B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170008285A (ko) * 2014-05-23 2017-01-23 퀄컴 인코포레이티드 팔레트 기반 비디오 코딩에서의 예측자 팔레트 초기화
WO2019182385A1 (ko) * 2018-03-21 2019-09-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020009515A1 (ko) * 2018-07-05 2020-01-09 엘지전자 주식회사 Ctu 단위의 버퍼 압축을 이용한 영상 코딩 방법 및 그 장치
KR20210013166A (ko) * 2018-06-26 2021-02-03 닛본 덴끼 가부시끼가이샤 영상 부호화 또는 영상 복호 장치, 영상 부호화 또는 영상 복호 방법, 프로그램, 및 기록 매체

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012120582A1 (ja) * 2011-03-07 2012-09-13 パナソニック株式会社 動き補償装置、動画像符号化装置、動画像復号装置、動き補償方法、プログラム、及び集積回路
EP2740272A4 (en) * 2011-08-04 2015-04-08 Mediatek Inc METHOD AND DEVICE FOR RECORDING BINARIZATION OF SYNTAX ELEMENTS IN CABAC
JP5768662B2 (ja) * 2011-10-31 2015-08-26 富士通株式会社 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US9154796B2 (en) * 2011-11-04 2015-10-06 Qualcomm Incorporated Intra-mode video coding
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
US8693551B2 (en) 2011-11-16 2014-04-08 Vanguard Software Solutions, Inc. Optimal angular intra prediction for block-based video coding
US9531990B1 (en) 2012-01-21 2016-12-27 Google Inc. Compound prediction using multiple sources or prediction modes
CN104247423B (zh) * 2012-03-21 2018-08-07 联发科技(新加坡)私人有限公司 可伸缩视频编码系统的帧内模式编码方法和装置
US9621905B2 (en) * 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
US9185414B1 (en) 2012-06-29 2015-11-10 Google Inc. Video encoding using variance
US9288484B1 (en) 2012-08-30 2016-03-15 Google Inc. Sparse coding dictionary priming
CN102883163B (zh) * 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
US9106922B2 (en) * 2012-12-19 2015-08-11 Vanguard Software Solutions, Inc. Motion estimation engine for video encoding
US9628790B1 (en) 2013-01-03 2017-04-18 Google Inc. Adaptive composite intra prediction for image and video compression
US9210424B1 (en) 2013-02-28 2015-12-08 Google Inc. Adaptive prediction block size in video coding
US20140286413A1 (en) * 2013-03-25 2014-09-25 Qualcomm Incorporated Disabling sign data hiding in video coding
US9300906B2 (en) 2013-03-29 2016-03-29 Google Inc. Pull frame interpolation
US10904551B2 (en) * 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US9374578B1 (en) 2013-05-23 2016-06-21 Google Inc. Video coding using combined inter and intra predictors
US9510024B2 (en) * 2014-09-12 2016-11-29 Spotify Ab System and method for early media buffering using prediction of user behavior
US9313493B1 (en) 2013-06-27 2016-04-12 Google Inc. Advanced motion estimation
US9813730B2 (en) * 2013-12-06 2017-11-07 Mediatek Inc. Method and apparatus for fine-grained motion boundary processing
US9609343B1 (en) 2013-12-20 2017-03-28 Google Inc. Video coding using compound prediction
JP2015185897A (ja) * 2014-03-20 2015-10-22 パナソニックIpマネジメント株式会社 画像符号化方法及び画像符号化装置
JP6482191B2 (ja) * 2014-06-12 2019-03-13 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR101936663B1 (ko) * 2014-06-26 2019-01-09 후아웨이 테크놀러지 컴퍼니 리미티드 고효율 비디오 코딩 중 계산 부하의 경감 방법 및 장치
US9153017B1 (en) 2014-08-15 2015-10-06 Google Inc. System and method for optimized chroma subsampling
KR101746426B1 (ko) * 2015-07-13 2017-06-13 동국대학교 산학협력단 HEVC 4x4 인트라 예측 하드웨어 장치
US9807416B2 (en) 2015-09-21 2017-10-31 Google Inc. Low-latency two-pass video coding
RU2652424C2 (ru) * 2016-02-29 2018-04-26 Общество с ограниченной ответственностью "ВизКом" Способ и система организации спутникового телевидения с буферизацией на наземном транспорте
US9432668B1 (en) * 2016-03-15 2016-08-30 NGCodec Inc. Apparatus and method for inter and intra mode selection and block partitioning
US20190082192A1 (en) * 2016-03-16 2019-03-14 Mediatek Inc. Method and apparatus of pattern-based motion vector derivation for video coding
US10593015B2 (en) * 2016-05-04 2020-03-17 Texas Instruments Incorporated Apparatus and method for efficient motion estimation
US11638027B2 (en) 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding
US10694202B2 (en) * 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
CN116320475A (zh) * 2016-12-22 2023-06-23 株式会社Kt 对视频进行解码或编码的方法和发送视频数据的方法
KR102539354B1 (ko) * 2016-12-28 2023-06-02 엘지전자 주식회사 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US11496747B2 (en) 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
US10630978B2 (en) * 2017-05-12 2020-04-21 Blackberry Limited Methods and devices for intra-coding in video compression
EP3410717A1 (en) * 2017-05-31 2018-12-05 Thomson Licensing Methods and apparatus for candidate list pruning
CN117336509A (zh) * 2017-07-06 2024-01-02 Lx 半导体科技有限公司 图像编码/解码方法、发送方法和数字存储介质
US11889100B2 (en) * 2017-11-14 2024-01-30 Qualcomm Incorporated Affine motion vector prediction in video coding
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
CN118018725A (zh) 2018-05-10 2024-05-10 三星电子株式会社 视频编码方法和设备以及视频解码方法和设备
US10469869B1 (en) * 2018-06-01 2019-11-05 Tencent America LLC Method and apparatus for video coding
US10587885B2 (en) * 2018-06-04 2020-03-10 Tencent America LLC Method and apparatus for merge mode with additional middle candidates in video coding
US11509889B2 (en) 2018-06-27 2022-11-22 Kt Corporation Method and apparatus for processing video signal
US10798394B2 (en) * 2018-06-27 2020-10-06 Avago Technologies International Sales Pte. Limited Low complexity affine merge mode for versatile video coding
US11343536B2 (en) 2018-06-27 2022-05-24 Kt Corporation Method and apparatus for processing video signal
CN110662053B (zh) * 2018-06-29 2022-03-25 北京字节跳动网络技术有限公司 使用查找表的视频处理方法、装置和存储介质
US11606575B2 (en) 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
CN112567771A (zh) * 2018-08-09 2021-03-26 华为技术有限公司 基于历史的帧内模式编解码方法和装置
EP4346211A3 (en) * 2018-09-03 2024-06-19 Huawei Technologies Co., Ltd. Method and apparatus for intra prediction
WO2020057504A1 (en) * 2018-09-17 2020-03-26 Mediatek Inc. Methods and apparatuses of combining multiple predictors for block prediction in video coding systems
US11570442B2 (en) * 2019-06-05 2023-01-31 Qualcomm Incorporated Reducing motion field storage for prediction of video data using non-rectangular prediction modes
KR20220157765A (ko) * 2021-05-21 2022-11-29 삼성전자주식회사 영상 부호화 장치 및 이의 동작 방법
US11854264B2 (en) 2021-06-18 2023-12-26 Kyndryl, Inc. Speculative actions based on predicting negative circumstances
WO2023230443A2 (en) * 2022-05-23 2023-11-30 Bytedance Inc. Method, apparatus, and medium for video processing

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1668111A (zh) 1997-12-01 2005-09-14 三星电子株式会社 运动向量预测方法
US7236524B2 (en) 2002-05-28 2007-06-26 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode communication
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
KR101104828B1 (ko) 2004-12-09 2012-01-16 삼성전자주식회사 움직임 벡터 연산 장치 및 그 방법
KR100703748B1 (ko) 2005-01-25 2007-04-05 삼성전자주식회사 다 계층 기반의 비디오 프레임을 효율적으로 예측하는 방법및 그 방법을 이용한 비디오 코딩 방법 및 장치
EP1878232A2 (en) 2005-04-26 2008-01-16 Koninklijke Philips Electronics N.V. A device for and a method of processing a data stream having a sequence of packets and timing information related to the packets
US7603141B2 (en) 2005-06-02 2009-10-13 Qualcomm, Inc. Multi-antenna station with distributed antennas
KR100678911B1 (ko) * 2005-07-21 2007-02-05 삼성전자주식회사 방향적 인트라 예측의 적용을 확장하여 비디오 신호를인코딩하고 디코딩하는 방법 및 장치
JP4712643B2 (ja) 2006-08-17 2011-06-29 富士通セミコンダクター株式会社 フレーム間予測処理装置、フレーム間予測方法、画像符号化装置及び画像復号装置
KR101364532B1 (ko) 2007-01-03 2014-02-18 삼성전자주식회사 인접 파티션의 크기를 고려한 움직임 벡터 예측 방법,장치, 인코더, 디코더 및 복호화 방법
JP5026092B2 (ja) 2007-01-12 2012-09-12 三菱電機株式会社 動画像復号装置および動画像復号方法
US8488668B2 (en) 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
BRPI0813904B1 (pt) 2007-06-29 2020-12-08 Velos Media International Limited dispositivo de codificação de imagem para codificar imagens de entrada e dispositivo de decodificação de imagem para decodificar dados de imagens codificados
EP2188979A2 (en) 2007-09-10 2010-05-26 Nxp B.V. Method and apparatus for motion estimation in video image data
BRPI0818444A2 (pt) * 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
US8542748B2 (en) * 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
US8619856B2 (en) 2008-10-03 2013-12-31 Qualcomm Incorporated Video coding with large macroblocks
CN102246526B (zh) 2008-12-10 2014-10-29 株式会社日立制作所 运动图像解码方法以及装置、运动图像编码方法以及装置
WO2010102935A1 (en) 2009-03-09 2010-09-16 Thomson Licensing Estimation of the prediction mode for the intra coding mode
US8965395B2 (en) 2009-06-05 2015-02-24 Qualcomm Incorporated Positioning of user equipment in a wireless communication network
KR101702553B1 (ko) * 2009-07-04 2017-02-03 에스케이 텔레콤주식회사 영상 부호화/복호화 방법 및 장치
EP2299717A1 (en) 2009-09-10 2011-03-23 Thomson Licensing Method and apparatus for image encoding using Hold-MBs, and method and apparatus for image decoding using Hold-MBs
US20110274162A1 (en) * 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
EP2514210A4 (en) 2009-12-17 2014-03-19 Ericsson Telefon Ab L M METHOD AND DEVICE FOR VIDEO CODING
KR101768207B1 (ko) 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US8891438B2 (en) 2010-09-08 2014-11-18 Intel Corporation Packet-data network and methods for RAN-agnostic multimedia content distribution
US20120106622A1 (en) * 2010-11-03 2012-05-03 Mediatek Inc. Method and Apparatus of Slice Grouping for High Efficiency Video Coding
HUE062143T2 (hu) * 2011-10-18 2023-09-28 Lg Electronics Inc Eljárások intra predikcióra, valamint tárolóközeg

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170008285A (ko) * 2014-05-23 2017-01-23 퀄컴 인코포레이티드 팔레트 기반 비디오 코딩에서의 예측자 팔레트 초기화
WO2019182385A1 (ko) * 2018-03-21 2019-09-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN112088533A (zh) * 2018-03-21 2020-12-15 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
US11516496B2 (en) 2018-03-21 2022-11-29 Electronics And Telecommunications Research Institute Image encoding/decoding method and apparatus, and recording medium storing bitstream
KR20210013166A (ko) * 2018-06-26 2021-02-03 닛본 덴끼 가부시끼가이샤 영상 부호화 또는 영상 복호 장치, 영상 부호화 또는 영상 복호 방법, 프로그램, 및 기록 매체
KR20220120722A (ko) * 2018-06-26 2022-08-30 닛본 덴끼 가부시끼가이샤 영상 부호화 장치와 방법, 영상 복호 장치와 방법, 및 기록 매체
KR20220123324A (ko) * 2018-06-26 2022-09-06 닛본 덴끼 가부시끼가이샤 영상 부호화 장치와 방법, 영상 복호 장치와 방법, 및 기록 매체
US11736724B2 (en) 2018-06-26 2023-08-22 Nec Corporation Video encoding or decoding apparatus, video encoding or decoding method, program, and recording medium
US11785255B2 (en) 2018-06-26 2023-10-10 Nec Corporation Video encoding or decoding apparatus, video encoding or decoding method, program, and recording medium
WO2020009515A1 (ko) * 2018-07-05 2020-01-09 엘지전자 주식회사 Ctu 단위의 버퍼 압축을 이용한 영상 코딩 방법 및 그 장치
US11451786B2 (en) 2018-07-05 2022-09-20 Lg Electronics Inc. Image coding method using buffer compression in CTU unit, and apparatus therefor

Also Published As

Publication number Publication date
MX2014000760A (es) 2014-05-07
TW201313033A (zh) 2013-03-16
CA2842037C (en) 2017-06-06
CA2842037A1 (en) 2013-01-24
TWI504237B (zh) 2015-10-11
JP2014525198A (ja) 2014-09-25
AU2012284123A1 (en) 2014-02-13
RU2014106273A (ru) 2015-08-27
RU2573744C2 (ru) 2016-01-27
ZA201401264B (en) 2021-05-26
IL230281B (en) 2018-02-28
KR101521060B1 (ko) 2015-05-15
CN103688541A (zh) 2014-03-26
AU2012284123B2 (en) 2016-01-14
MY167510A (en) 2018-09-04
WO2013012867A3 (en) 2013-05-16
WO2013012867A2 (en) 2013-01-24
EP2735153A2 (en) 2014-05-28
MX338116B (es) 2016-04-01
JP5869122B2 (ja) 2016-02-24
US20130022119A1 (en) 2013-01-24
BR112014001124A2 (pt) 2017-02-14
CN103688541B (zh) 2018-10-02
US9699456B2 (en) 2017-07-04

Similar Documents

Publication Publication Date Title
KR101521060B1 (ko) 비디오 코딩에서 예측 데이터를 버퍼링
US8995523B2 (en) Memory efficient context modeling
KR101881710B1 (ko) 인트라블록 카피를 위한 디블록 필터링
CA2868467C (en) Wavefront parallel processing for video coding
US9584805B2 (en) Prediction mode information downsampling in enhanced layer coding
TWI527440B (zh) 在視訊寫碼中針對高效率視訊寫碼(hevc)延伸之多層之低複雜度支援
US20130163664A1 (en) Unified partition mode table for intra-mode coding
WO2015038928A1 (en) Partial intra block copying for video coding
US20140064359A1 (en) Intra prediction most probable mode order improvement for scalable video coding
KR20140018967A (ko) 비디오 코딩에서의 모션 벡터 예측
US9532046B2 (en) Reference picture set prediction for video coding
US9338452B2 (en) Motion vector difference coding extension for enhancement layer
CN111200735B (zh) 一种帧间预测的方法及装置
US20150264367A1 (en) Systems and methods for low complexity encoding and background detection
CN110876057A (zh) 一种帧间预测的方法及装置

Legal Events

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

Payment date: 20180329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 5