KR102578959B1 - 인트라 예측 모드들의 이웃 기반의 시그널링 - Google Patents

인트라 예측 모드들의 이웃 기반의 시그널링 Download PDF

Info

Publication number
KR102578959B1
KR102578959B1 KR1020187032665A KR20187032665A KR102578959B1 KR 102578959 B1 KR102578959 B1 KR 102578959B1 KR 1020187032665 A KR1020187032665 A KR 1020187032665A KR 20187032665 A KR20187032665 A KR 20187032665A KR 102578959 B1 KR102578959 B1 KR 102578959B1
Authority
KR
South Korea
Prior art keywords
intra prediction
mode
block
candidate list
prediction mode
Prior art date
Application number
KR1020187032665A
Other languages
English (en)
Other versions
KR20190007427A (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 퀄컴 인코포레이티드
Priority to KR1020237006359A priority Critical patent/KR20230030052A/ko
Publication of KR20190007427A publication Critical patent/KR20190007427A/ko
Application granted granted Critical
Publication of KR102578959B1 publication Critical patent/KR102578959B1/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/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/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/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
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
    • 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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/92Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N5/926Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation
    • H04N5/9261Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation involving data reduction
    • H04N5/9262Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation involving data reduction using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
    • H04N9/8045Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/808Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the composite colour video-signal
    • H04N9/8081Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the composite colour video-signal involving data reduction
    • H04N9/8082Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the composite colour video-signal involving data reduction using predictive coding

Landscapes

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

Abstract

비디오 데이터를 코딩하는 디바이스는 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 그리고, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 코딩하도록 구성된다.

Description

인트라 예측 모드들의 이웃 기반의 시그널링
본 출원은 2016년 5월 13일에 출원된 미국 가특허출원 제 62/336,414호; 및 2016년 10월 4일에 출원된 미국 가특허출원 제 62/404,128호의 이익을 주장하며, 이의 각각의 전체 내용이 참조로 포함된다.
기술 분야
본 개시물은 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기들 (PDAs), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트폰들", 원격 화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, AVC (Advanced Video Coding), 현재 개발중인 HEVC (High Efficiency Video Coding) 표준, 및 이런 표준들의 확장판들에 의해 정의된 표준들에서 설명되는 비디오 코딩 기법들과 같은, 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이런 비디오 압축 기법들을 구현함으로써, 디지털 비디오 정보를 좀더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 또는 제거하기 위해 공간 (인트라 픽처) 예측 및/또는 시간 (인터 픽처) 예측을 수행한다. 블록-기반 비디오 코딩에 있어, 비디오 슬라이스 (즉, 비디오 프레임 또는 비디오 프레임의 부분) 는 비디오 블록들로 파티셔닝될 수도 있으며, 이 비디오 블록들은 또한 트리블록들, 코딩 유닛들 (CUs) 및/또는 코딩 노드들로서 지칭될 수도 있다. 픽처의 인트라 코딩된 (I) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 픽처의 인터 코딩된 (P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측, 또는 다른 참조 픽처들에서의 참조 샘플들에 대한 시간 예측을 이용할 수도 있다. 픽처들은 프레임들로 지칭될 수 있으며, 참조 픽처들은 참조 프레임들로서 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔차 데이터는 코딩될 원래 블록과 예측 블록 사이의 픽셀 차이들을 나타낸다. 인터 코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 사이의 차이를 나타내는 잔차 데이터에 따라서 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔차 데이터에 따라서 인코딩된다. 추가적인 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 잔차 변환 계수들을 초래할 수도 있으며, 이 잔차 변환 계수는 그후 양자화될 수도 있다. 처음에 2차원 어레이로 배열된, 양자화된 변환 계수들은 변환 계수들의 1차원 벡터를 발생하기 위해 스캐닝될 수도 있으며, 엔트로피 코딩이 더욱 더 많은 압축을 달성하기 위해 적용될 수도 있다.
본 개시물은 인트라 예측에 관련된 기법들, 그리고 좀더 자세하게는, 비디오 데이터의 특정의 블록을 디코딩하는데 사용될 인트라 예측 모드를 결정하기 위해 비디오 디코더에 의해 사용되는 정보를 비디오 인코더로부터 비디오 디코더로 시그널링하는 기법들을 기술한다.
일 예에서, 비디오 데이터를 디코딩하는 방법은 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하는 단계; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하는 단계; 및 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 디코딩하는 디바이스는 비디오 데이터를 저장하도록 구성된 메모리, 및 하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은, 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하고; 그리고 인트라 예측 모드를 이용하여 현재의 블록을 디코딩하도록 구성된다.
다른 예에서, 비디오 데이터를 인코딩하는 방법은 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하는 단계; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 단계; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하는 단계; 및 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 인코딩하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 인코딩하는 디바이스는 비디오 데이터를 저장하도록 구성된 메모리, 및 하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하고; 그리고 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 인코딩하도록 구성된다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하고; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하고; 그리고 인트라 예측 모드를 이용하여 현재의 블록을 디코딩하도록 하는 명령들을 저장한다.
다른 예에서, 비디오 데이터를 디코딩하는 디바이스는 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하는 수단; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하는 수단; 및 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하는 수단을 포함한다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하게 하고; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하게 하고; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하게 하고; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하게 하고; 그리고 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 인코딩하도록 하는 명령들을 저장하는 명령들을 저장한다.
다른 예에서, 비디오 데이터를 인코딩하는 디바이스는 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하는 수단; 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 현재의 블록의 제 2 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 현재의 블록의 제 3 이웃하는 블록에 대한 인트라 예측 모드를 현재의 블록에 대한 가장 가능성있는 모드 후보 리스트에 추가하는 수단; 가장 가능성있는 모드 후보 리스트를 이용하여 인트라 예측 모드를 결정하는 수단; 및 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 인코딩하는 수단을 포함한다.
본 개시물의 하나 이상의 예들의 세부 사항들은 첨부도면 및 아래의 설명에서 개시된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명, 도면들, 및 청구범위로부터 명백할 것이다.
도 1 은 본 개시물에서 설명하는 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 HEVC 에서 사용되는 인트라 예측 모드들의 예시적인 예시를 나타낸다.
도 3a 내지 도 3e 는 현재의 블록의 이웃 블록들에 대한 로케이션들의 예들을 나타낸다.
도 4 는 MPM 모드들 분류의 일 예를 나타낸다.
도 5 는 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 예시하는 블록도이다.
도 6 은 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 7a 및 도 7b 는 2진 산술 코딩에서의 범위 업데이트 프로세스를 예시하는 개념도들이다.
도 8 은 2진 산술 코딩에서의 출력 프로세스를 예시하는 개념도이다.
도 9 는 비디오 인코더에서의 컨텍스트 적응 2진 산술 코더를 예시하는 블록도이다.
도 10 은 비디오 디코더에서의 컨텍스트 적응 2진 산술 코더를 예시하는 블록도이다.
도 11 은 본 개시물의 기법들에 따른, 가장 가능성있는 모드 후보 리스트를 구성하는 기법들을 예시하는 흐름도이다.
도 12 는 본 개시물의 기법들에 따른, 비디오 데이터의 블록을 인코딩하는 기법들을 예시하는 흐름도이다.
도 13 은 본 개시물의 기법들에 따른, 비디오 데이터의 블록을 디코딩하는 기법들을 예시하는 흐름도이다.
최근에 개발된 HEVC (High Efficiency Video Coding) 표준을 포함한, 다양한 비디오 코딩 표준들은 비디오 블록들에 대한 예측 코딩 모드들을 포함하며, 여기서, 현재 코딩중인 블록은 비디오 데이터의 이미 코딩된 블록에 기초하여 예측된다. 인트라 예측 모드에서, 현재의 블록은 현재의 블록과 동일한 픽처에서 하나 이상의 이전에 코딩된, 이웃하는 블록들에 기초하여 예측되며, 반면 인터 예측 모드에서, 현재의 블록은 상이한 픽처에서 이미 코딩된 블록에 기초하여 예측된다. 인터 예측 모드에서, 예측 블록으로서 사용할 이전에 코딩된 프레임의 블록을 결정하는 프로세스는 종종 비디오 인코더에 의해 일반적으로 수행되는, 모션 추정으로서 지칭되며, 예측 블록을 식별하여 취출하는 프로세스는 종종 비디오 인코더들 및 비디오 디코더들 양자에 의해 수행되는, 모션 보상으로서 지칭된다. HEVC 의 확장판들 및 HEVC 에 대한 계승판들은 또한 인트라 블록 복사, 사전, 및 팔레트 코딩 모드들과 같은, 추가적인 코딩 모드들을 이용할 수도 있다.
본 개시물은 인트라 예측에 관련된 기법들, 그리고 좀더 자세하게는, 비디오 데이터의 특정의 블록을 디코딩하는데 사용될 인트라 예측 모드를 결정하기 위해 비디오 디코더에 의해 사용되는 정보를 비디오 인코더로부터 비디오 디코더로 시그널링하는 기법들을 기술한다. 본 개시물은 비디오 데이터의 블록에 대한 가장 가능성있는 인트라 예측 모드들의 리스트를 결정하는 기법들, 및 비디오 디코더가 비디오 데이터의 블록을 디코딩하는데 그 인트라 예측 모드를 이용할 수 있도록, 가장 가능성있는 인트라 예측들 모드들의 리스트로부터의 가장 가능성있는 인트라 예측들 모드 중 어느 것이 비디오 데이터의 블록을 인코딩하는데 사용되었는지를 시그널링하는 기법들을 기술한다. 본 개시물에서, 가장 가능성있는 인트라 예측들 모드들은 또한 가장 가능성있는 모드들 또는 MPM들로서 간단히 지칭될 수도 있다. 가장 가능성있는 인트라 예측 모드들의 리스트는 또한 가장 가능성있는 모드 후보 리스트 또는 MPM 후보 리스트로서 간단히 지칭될 수도 있다.
아래에서 좀더 자세하게 설명되는 본 개시물의 기법들에 따르면, 블록이 인트라 예측 모드를 이용하여 코딩될 때, 비디오 인코더는 블록에 대한 MPM 후보 리스트를 결정할 수도 있다. 비디오 디코더는 비디오 인코더에 의해 구현되는 동일한 MPM 후보 리스트 구성 프로세스를 구현함으로써 비디오 인코더에 의해 구현되는 것과 동일한 MPM 후보 리스트를 결정할 수도 있다. 비디오 인코더 및 비디오 디코더가 동일한 MPM 후보 리스트들을 구성하기 때문에, 비디오 인코더는 MPM 후보 리스트 내 특정의 후보에 대응하는 인덱스 값을 시그널링함으로써 인트라 예측 모드를 비디오 디코더로 시그널링할 수 있다. 반대로 명시적으로 언급되지 않는 한, 본원에서 설명하는 MPM 후보 리스트 구성 기법들은 비디오 인코더 또는 비디오 디코더에 의해 수행될 수 있다.
MPM 후보 리스트는 예를 들어, 모든 가용 인트라 예측 모드들의 상대적으로 작은 서브세트를 포함할 수도 있다. 일 예로서, 인트라 예측 모드들의 총 개수는 HEVC 에 의해 지원되는 35 개 또는 HEVC에 대한 후속 표준들에 대해 고려될 때는 60개 이상일 수도 있으며, MPM 후보 리스트에 포함된 가장 가능성있는 모드들의 개수는 5개 또는 6개, 또는 어떤 다른 개수일 수도 있거나, 또는 가변적일 수도 있다. MPM 후보 리스트의 부분이 아닌 모드들은 비-가장 가능성있는 모드들로서 지칭될 수도 있다. 본 개시물의 기법들은 임의의 특정의 개수의 인트라 예측 모드들 또는 가장 가능성있는 모드들에 한정되지 않는다.
어느 인트라 예측 모드들이 임의의 주어진 블록에 대한 가장 가능성있는 모드들인지를 결정하는 기법들이 아래에서 좀더 자세하게 설명된다. 특정의 블록에 대한 가장 가능성있는 모드들로서 선택되는 인트라 예측 모드들은 일반적으로 블록을 코딩하는데 통계적으로 사용될 가능성이 높은 인트라 예측 모드들에 대응한다. 아래에서 좀더 자세히 설명되는 바와 같이, 비디오 데이터의 블록에 대한 실제 인트라 예측 모드를 시그널링할 때, 실제 인트라 예측이 비-가장 가능성있는 모드들 중 하나인 경우보다 실제 인트라 예측 모드들이 가장 가능성있는 모드들 중 하나 (예컨대, MPM 후보 리스트 내 인트라 예측 모드) 인 경우 상이한 시그널링 기법들이 사용될 수도 있다. 가장 가능성있는 모드들을 시그널링하는데 이용되는 기법들은 평균적으로, 비-가장 가능성있는 모드들에 이용되는 시그널링 기법들보다 더 적은 비트들을 이용할 수도 있다. 따라서, 실제 인트라 예측 모드가 비-가장 가능성있는 모드보다 가장 가능성있는 모드로서 더 빈번하면, 가장 가능성있는 모드들과 연관된 하위-비트 시그널링 기법을 더 빈번하게 이용함으로써 전체 비트 절감이 달성될 수 있다.
본 개시물은 MPM 후보 리스트에 포함시킬 가장 가능성있는 모드들을 결정하는 기법들을 기술하며, 실제 인트라 예측 모드가 가장 가능성있는 모드들 중 하나인 경우들에 블록에 대한 실제 인트라 예측 모드를 시그널링하는 것에 관련된 기법들을 기술한다. 본 개시물은 인트라 예측 모드 시그널링에 관련된 기법들을 기술하며, 좀더 구체적으로는, 본 개시물은 이미 코딩된 이웃 블록들의 인트라 예측 모드들을 가장 가능성있는 모드들의 예측자로서 이용하는 기법들을 기술한다. 추가적으로, 본 개시물은 컨텍스트들에 의한 엔트로피 코딩을 이용하여 가장 가능성있는 모드-관련된 정보를 시그널링하는 기법들을 기술한다.
본 개시물은 때때로 비디오 코더를 언급할 수도 있다. 비디오 코더는 비디오 인코딩 또는 비디오 디코딩을 지칭하는 일반적인 용어로 의도된다. 이와 유사하게, 용어 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 지칭하는 일반적인 용어로 의도된다. 어떤 기법들은 비디오 인코딩 또는 비디오 디코딩과 관련하여 설명될 수도 있으나, 명시적으로 달리 언급되지 않는 한, 이들 기법들이 비디오 인코딩 또는 비디오 디코딩 중 다른 것에 동일하게 적용불가능하다고 가정해서는 안된다. 따라서, 본 개시물의 어떤 기법들이 비디오 인코더 또는 비디오 디코더 중 하나와 관련하여 설명되더라도, 본 기법들은 일반적으로 비디오 인코더 또는 비디오 디코더 중 다른 것에도 또한 적용가능한 것으로 가정되어야 한다.
본 개시물은, 예를 들어, MPM 후보 리스트를 발생시키고 어떤 정보를 엔트로피 코딩하기 위한 컨텍스트들을 결정하는 기법들을 기술한다. MPM 후보 리스트을 발생시키고 비디오 인코더에 의해 수행되는 컨텍스트들을 결정하는 기법들은, 비디오 디코더가 비디오 인코더로부터 비디오 디코더로의 명시적인 시그널링이 거의 또는 전혀 없이 인코더와 동일한 MPM 후보 리스트 또는 동일한 컨텍스트를 결정할 수 있도록, 비디오 디코더에 의해 수행되는 기법과 동일할 수도 있다.
도 1 은 인트라 예측 모드에서 블록들을 인코딩하고 디코딩하는 기법들을 포함한, 본 개시물에서 설명하는 기법들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 나타낸 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 추후 디코딩될 인코딩된 비디오 데이터를 발생시키는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 소위 "스마트" 폰들과 같은 전화기 핸드셋들, 소위 "스마트" 패드들, 텔레비전, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 디바이스를 포함할 수도 있다. 일부의 경우, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신용으로 탑재될 수도 있다.
목적지 디바이스 (14) 는 디코딩될 인코딩된 비디오 데이터를 링크 (16) 를 통해서 수신할 수도 있다. 링크 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의 종류의 매체 또는 디바이스를 포함할 수도 있다. 일 예에서, 링크 (16) 는 소스 디바이스 (12) 로 하여금, 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 로 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라서 변조되어 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적인 송신 라인들과 같은, 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 근거리 네트워크, 광역 네트워크, 또는 글로벌 네트워크, 예컨대 인터넷과 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
대안적으로, 인코딩된 데이터는 출력 인터페이스 (22) 로부터 저장 디바이스 (17) 로 출력될 수도 있다. 이와 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 디바이스 (17) 로부터 액세스될 수도 있다. 저장 디바이스 (17) 는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비-휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬 액세스되는 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다. 추가 예에서, 저장 디바이스 (17) 는 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오를 유지할 수도 있는 파일 서버 또는 또 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는 저장된 비디오 데이터에 저장 디바이스 (17) 로부터 스트리밍 또는 다운로드를 통해서 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신하는 것이 가능한 임의 종류의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예컨대, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해서, 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하는데 적합한, 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 저장 디바이스 (17) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이 양자의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 환경들에 반드시 한정되지는 않는다. 이 기법들은 다양한 멀티미디어 애플리케이션들 중 임의의 애플리케이션, 예컨대, 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대, 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상에의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들의 지원 하에 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화 통신과 같은, 지원 애플리케이션들로의 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20) 및 출력 인터페이스 (22) 를 포함한다. 일부의 경우, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡쳐 디바이스, 예컨대, 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하는 비디오 공급 인터페이스, 및/또는 컴퓨터 그래픽스 데이터를 소스 비디오로서 발생시키는 컴퓨터 그래픽스 시스템과 같은 소스, 또는 이런 소스들의 조합을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들일 수도 있다. 그러나, 본 개시물에서 설명하는 기법들은 비디오 코딩에 일반적으로 적용가능할 수도 있으며, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다.
캡쳐되거나, 사전-캡쳐되거나, 또는 컴퓨터-발생된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 소스 디바이스 (12) 의 출력 인터페이스 (22) 를 통해서 목적지 디바이스 (14) 로 바로 송신될 수도 있다. 인코딩된 비디오 데이터는 또한 (또는, 대안적으로) 디코딩 및/또는 플레이백을 위한, 목적지 디바이스 (14) 또는 다른 디바이스들에 의한 추후 액세스를 위해, 저장 디바이스 (17) 상에 저장될 수도 있다.
목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (34) 를 포함한다. 일부의 경우, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함할 수도 있다. 목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 인코딩된 비디오 데이터를 링크 (16) 를 통해서 수신한다. 링크 (16) 를 통해서 통신되거나, 또는 저장 디바이스 (17) 상에 제공되는 인코딩된 비디오 데이터는, 비디오 데이터를 디코딩할 때에, 비디오 디코더 (30) 와 같은 비디오 디코더에 의해 사용하기 위한, 비디오 인코더 (20) 에 의해 발생되는 다양한 신택스 엘리먼트들을 포함할 수도 있다. 이런 신택스 엘리먼트들은 통신 매체 상으로 송신되거나, 저장 매체 상에 저장되거나, 또는 파일 서버에 저장된 인코딩된 비디오 데이터와 함께 포함될 수도 있다.
디스플레이 디바이스 (34) 는 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하며, 또한 외부 디스플레이 디바이스와 인터페이스하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (34) 는 그 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 HEVC 와 같은 비디오 압축 표준에 따라서 동작할 수도 있으며, HEVC 테스트 모델 (HM) 을 따를 수도 있다. "HEVC 작업 초안 10" 또는 "HEVC WD10" 으로서 지칭되는, HEVC 표준의 작업 초안은 ITU-T SG16 WP3 과 ISO/IEC JTC1/SC29/WG11 의 JCT-VC (Joint Collaborative Team on Video Coding), 13차 회의, 2013년 4월 대한민국, 인천, Bross 등, "Editors' proposed corrections to HEVC version 1" 에 설명되어 있다. 다른 HEVC 초안 사양은 http://phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-O1003-v2.zip 으로부터 입수가능하다. 본 개시물에서 설명하는 기법들은 또한 현재 개발중인 HEVC 표준의 확장판들에 따라서 동작할 수도 있다.
대안적으로 또는 추가적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 MPEG 4, 파트 10, AVC (Advanced Video Coding) 로서 대안적으로 지칭되는 ITU-T H.264 표준, 또는 이런 표준들의 확장판들과 같은 다른 사유 (proprietary) 또는 산업 표준들에 따라서 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정의 코딩 표준에 한정되지 않는다. 비디오 압축 표준들의 다른 예들은 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 그의 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장판들을 포함한, (또한, ISO/IEC MPEG-4 AVC 로서 알려진) ITU-T H.264 를 포함한다. 비디오 코딩 표준들은 또한 구글 VP8, VP9, VP10 과 같은 독점 비디오 코덱들, 및 다른 단체들, 예를 들어, 오픈 미디어 얼라이언스 (Alliance for Open Media) 에 의해 개발된 비디오 코덱들을 포함한다.
HEVC 의 설계는 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 과 ISO/IEC 동화상 전문가 그룹 (MPEG) 과의 JCT-VC 에 의해 종료되었다. HEVC RExt 로서 지칭되는, HEVC 에 대한 범위 확장판들이 또한 JCT-VC 에 의해 개발되고 있다. RExt WD7 로서 지칭되는 범위 확장판들의 최신 작업 초안 (WD) 은 http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip 으로부터 입수가능하다.
본 개시물은 일반적으로 최근에 완결된 HEVC 사양 텍스트를 HEVC 버전 1 또는 기본 HEVC 로서 지칭할 것이다. 범위 확장판 사양은 HEVC 의 버전 2 가 될 수도 있다. 모션 벡터 예측과 같은, 많은 코딩 툴들에 있어서, HEVC 버전 1 및 범위 확장판 사양은 기술적으로 유사하다. 따라서, 본 개시물은 HEVC 버전 1 에 대한 변경사항들을 설명할 때마다, 동일한 변경들이 또한 기본 HEVC 사양, 플러스 일부 추가적인 코딩 툴들을 일반적으로 포함하는 범위 확장판 사양에 적용될 수도 있다. 더욱이, 일반적으로 HEVC 버전 1 모듈들이 또한 HEVC 범위 확장판을 구현하는 디코더에 통합될 수도 있는 것으로 가정될 수 있다.
JVET 테스트 모델과 같은, 새로운 비디오 코딩 표준들이 HEVC 에 대한 계승자들로서 현재 개발중이다. 본 개시물은 설명의 용이성을 위해 HEVC 전문용어를 이용하여 어떤 비디오 기법들을 설명할 것이다. 그러나, 이러한 기법들은 HEVC 에 한정되지 않으며 HEVC 이외의 비디오 코딩 표준들에 적용가능할 수도 있는 것으로 이해되어야 한다.
일반적으로, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 이들 현재의 또는 미래의 표준들 중 임의의 표준에 따라서 비디오 데이터를 인코딩하도록 구성될 수도 있는 것으로 고려된다. 이와 유사하게, 또한 일반적으로, 목적지 디바이스 (14) 의 비디오 디코더 (30) 는 이들 현재의 또는 미래의 표준들 중 임의의 표준에 따라서 비디오 데이터를 디코딩하도록 구성될 수도 있는 것으로 고려된다.
도 1 에 나타내지는 않지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 오디오 및 비디오 양쪽의 인코딩을 공통 데이터 스트림 또는 별개의 데이터 스트림들로 처리하기에 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능한 경우, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 다른 프로토콜들, 예컨대, 사용자 데이터그램 프로토콜 (UDP) 을 따를 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 임의의 이들의 조합들과 같은, 다양한 적합한 인코더 회로부 중 임의의 회로부로 구현될 수도 있다. 이 기법들이 소프트웨어로 부분적으로 구현되는 경우, 디바이스는 본 개시물의 기법들을 수행하기 위해 소프트웨어용 명령들을 적합한 비일시성 컴퓨터-판독가능 매체에 저장하고, 그 명령들을 하드웨어에서 하나 이상의 프로세서들을 이용하여 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 쪽이든 개별 디바이스에서 결합된 인코더/디코더 (CODEC) 의 일부분으로서 통합될 수도 있다.
위에서 소개한 바와 같이, JCT-VC 는 HEVC 표준의 개발을 최근에 완료하였다. HEVC 표준화 노력들은 HEVC 테스트 모델 (HM) 로서 지칭되는 비디오 코딩 디바이스의 진화 모델 (evolving model) 에 기초하였다. HM 은 예컨대, ITU-T H.264/AVC 에 따른 기존 디바이스들에 관련된 비디오 코딩 디바이스들의 다양한 추가적인 능력들을 가정한다. 예를 들어, H.264 는 9개의 인트라-예측 인코딩 모드들을 제공하는 반면, HM 은 35개 만큼이나 많은 인트라-예측 인코딩 모드들을 제공할 수도 있다.
HEVC 및 다른 비디오 코딩 사양들에서, 비디오 시퀀스는 일반적으로 일련의 픽처들을 포함한다. 픽처들은 또한 "프레임들" 로서 지칭될 수도 있다. 픽처는 SL, SCb, 및 SCr 로 표기되는, 3개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb 는 Cb 색차 샘플들의 2차원 어레이이다. SCr 은 Cr 색차 샘플들의 2차원 어레이이다. 색차 샘플들은 또한 본원에서 "크로마" 샘플들로서 지칭될 수도 있다. 다른 경우, 픽처는 단색일 수도 있으며 단지 루마 샘플들의 어레이 만을 포함할 수도 있다.
픽처의 인코딩된 표현을 발생하기 위해, 비디오 인코더 (20) 는 코딩 트리 유닛들 (CTUs) 의 세트를 발생시킬 수도 있다. CTU들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, CTU 는 단일 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로서 지칭될 수도 있다. HEVC 의 CTU들은 H.264/AVC 와 같은, 다른 표준들의 매크로블록들과 대략 유사할 수도 있다. 그러나, CTU 는 특정의 사이즈에 반드시 제한되지 않으며, 하나 이상의 코딩 유닛들 (CUs) 을 포함할 수도 있다. 슬라이스는 래스터 스캔 순서로 연속적으로 순서화된 정수의 CTU들을 포함할 수도 있다.
코딩된 CTU 를 발생시키기 위해, 비디오 인코더 (20) 는 코딩 트리 블록들을 코딩 블록들, 따라서, 이름 "코딩 트리 유닛들" 로 분할하기 위해 CTU 의 코딩 트리 블록들에 관해 쿼드-트리 파티셔닝을 회귀적으로 수행할 수도 있다. 코딩 블록은 샘플들의 NxN 블록일 수도 있다. CU 는 루마 샘플들의 코딩 블록 및 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 가지는 픽처의 크로마 샘플들의 2개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, CU 는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비-정사각형) 블록이다. CU 의 예측 유닛 (PU) 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 플레인들을 가지는 픽처들에서, PU 는 단일 예측 블록 및 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 비디오 인코더 (20) 는 CU 의 각각의 PU 의 루마, Cb, 및 Cr 예측 블록들에 대한, 예측 루마, Cb, 및 Cr 블록들을 발생시킬 수도 있다.
비디오 인코더 (20) 는 PU 에 대한 예측 블록들을 발생시키기 위해 인트라 예측 또는 인터 예측을 이용할 수도 있다. 비디오 인코더 (20) 가 PU 의 예측 블록들을 발생시키기 위해 인트라 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처의 디코딩된 샘플들에 기초하여 PU 의 예측 블록들을 발생시킬 수도 있다. 비디오 인코더 (20) 가 PU 의 예측 블록들을 발생하기 위해 인터 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처 이외의 하나 이상의 픽처들의 디코딩된 샘플들에 기초하여, PU 의 예측 블록들을 발생시킬 수도 있다.
비디오 인코더 (20) 가 CU 의 하나 이상의 PU들에 대한 예측 루마, Cb, 및 Cr 블록들을 발생시킨 후, 비디오 인코더 (20) 는 CU 에 대한 루마 잔차 블록을 발생시킬 수도 있다. CU 의 루마 잔차 블록에서의 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에서의 루마 샘플과 CU 의 원래 루마 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낸다. 게다가, 비디오 인코더 (20) 는 CU 에 대한 Cb 잔차 블록을 발생시킬 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 원래 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 또한 CU 에 대한 Cr 잔차 블록을 발생시킬 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 원래 Cr 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다.
더욱이, 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여, CU 의 루마, Cb, 및 Cr 잔차 블록들을 하나 이상의 루마, Cb, 및 Cr 변환 블록들로 분해할 수도 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형 (예컨대, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 는 루마 샘플들의 변환 블록, 크로마 샘플들의 2개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각각의 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록과 연관될 수도 있다. TU 와 연관되는 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, TU 는 단일 변환 블록 및 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 루마 변환 블록에 적용하여, TU 에 대한 루마 계수 블록을 발생시킬 수도 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cb 변환 블록에 적용하여, TU 에 대한 Cb 계수 블록을 발생시킬 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cr 변환 블록에 적용하여, TU 에 대한 Cr 계수 블록을 발생시킬 수도 있다.
계수 블록 (예컨대, 루마 계수 블록, Cb 계수 블록, 또는 Cr 계수 블록) 을 발생시킨 후, 비디오 인코더 (20) 는 계수 블록을 양자화할 수도 있다. 양자화는 일반적으로 변환 계수들이 변환 계수들을 나타내는데 사용되는 데이터의 양을 가능한 한 감소시키도록 양자화되어 추가적인 압축을 제공하는 프로세스를 지칭한다. 비디오 인코더 (20) 가 계수 블록을 양자화한 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 대해 컨텍스트-적응 2진 산술 코딩 (CABAC) 을 수행할 수도 있다.
비디오 인코더 (20) 는 코딩된 픽처들 및 연관되는 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 비트스트림은 일련의 NAL 유닛들을 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 형태, 및 그 데이터를 RBSP 의 유형으로 에뮬레이션 방지 비트들과 필요에 따라 섞어서 포함하는 바이트들의 표시를 포함하는 신택스 구조이다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함하며 RBSP 를 캡슐화한다. NAL 유닛 헤더는 NAL 유닛 유형 코드를 나타내는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 규정된 NAL 유닛 유형 코드는 NAL 유닛의 형태를 나타낸다. RBSP 는 NAL 유닛 내에 캡슐화된 정수의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부의 경우, RBSP 는 제로 비트들을 포함한다.
상이한 유형들의 NAL 유닛들이 상이한 유형들의 RBSP들을 캡슐화할 수도 있다. 예를 들어, NAL 유닛의 제 1 유형은 PPS 에 대한 RBSP 를 캡슐화할 수도 있으며, NAL 유닛의 제 2 유형은 코딩된 슬라이스에 대한 RBSP 를 캡슐화할 수도 있으며, NAL 유닛의 제 3 유형은 SEI 메시지들에 대한 RBSP 를 캡슐화할 수도 있으며, 기타 등등을 캡슐화할 수도 있다. (파라미터 세트들 및 SEI 메시지들에 대한 RBSP들과는 반대로) 비디오 코딩 데이터에 대한 RBSP들을 캡슐화하는 NAL 유닛들은 VCL NAL 유닛들로서 지칭될 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 발생되는 비트스트림을 수신할 수도 있다. 게다가, 비디오 디코더 (30) 는 비트스트림을 파싱하여, 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 복원할 수도 있다. 비디오 데이터를 복원하는 프로세스는 일반적으로 비디오 인코더 (20) 에 의해 수행되는 프로세스와는 반대일 수도 있다. 게다가, 비디오 디코더 (30) 는 현재의 CU 의 TU들과 연관되는 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 계수 블록들에 대해 역변환들을 수행하여, 현재의 CU 의 TU들과 연관되는 변환 블록들을 복원할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들의 샘플들을 현재의 CU 의 TU들의 변환 블록들의 대응하는 샘플들에 가산함으로써, 현재의 CU 의 코딩 블록들을 복원할 수도 있다. 픽처의 각각의 CU 에 대해 코딩 블록들을 복원함으로써, 비디오 디코더 (30) 는 픽처를 복원할 수도 있다.
MPM 후보 리스트에 포함된 인트라 예측 모드들의 다양성을 증가시키기 위해, 본 개시물은 이웃 블록들로부터의 인트라 예측 모드들을 MPM 후보 리스트에 포함시키는 기법들 뿐만 아니라, 디폴트 및 유도된 후보들을 MPM 후보 리스트에 포함시키는 기법들을 기술한다. 본 개시물의 기법들은 비디오 데이터의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드가 가장 가능성있는 모드일 확률을 증가시킴으로써, 인트라 예측 모드들을 시그널링하는 것과 연관된 코딩 효율을 향상시킬 수도 있다. 가장 가능성있는 모드를 시그널링하는 것이 일반적으로 비-가장 가능성있는 모드를 시그널링하는 것보다 더 적은 비트들을 필요로 하기 때문에, 비디오 데이터의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드가 가장 가능성있는 모드를 더 빈번하게 갖는 것은 인트라 예측 모드들을 시그널링하는 것과 연관된 시그널링 오버헤드를 감소시킬 수도 있다.
본 개시물에서 설명하는 기법들은 (본원에서 사이즈 N 으로서 포괄적으로 지칭되는) 임의의 사이즈의 MPM 후보 리스트를 발생시키는데 사용될 수 있다. 일부 예들에서, N 은 JVET 에서 현재 고려되는 바와 같이 6 과 동일할 수도 있으며, 그러나, N 에 대한 다른 더 크거나 또는 더 작은 값들이 또한 사용될 수도 있다. 본 개시물의 기법들은 N 의 임의의 특정의 값에 한정되지 않는다.
도 2 는 HEVC 에서 사용되는 인트라 예측 모드들의 일 예를 나타낸다. HEVC 의 35 개의 인트라 예측 모드들은 (도 2 에 모드 인덱스들 2 내지 34 로 나타낸) 33 개의 방향 모드들, 플러스, DC 모드 (도 2 에서 모드 인덱스 1) 및 평면 모드 (도 2 에서 모드 인덱스 0) 로서 지칭되는 2개의 비-방향 모드들을 포함한다. 본 개시물의 기법들은 인트라 예측에 사용되는 임의 개수의 방향 모드들에 대해 적용될 수도 있다. 예를 들어, 모드들의 개수는 HEVC 에서 사용되는 바와 같이 35 개일 수도 있거나, 또는 HEVC 에 대한 후속 표준들에 대해 고려되고 있는 바와 같이, 63개, 66개, 또는 35개보다 큰 어떤 다른 개수의 모드들일 수도 있다. 설명되는 기법들은 루마 성분 단독 또는 크로마 성분 단독과 같은, 선택된 칼라 성분들 단독의 인트라 예측 모드 코딩에 대해 적용될 수도 있거나, 또는 모든 가용 칼라 성분들 (루마 및 양자의 크로마) 에 대해, 또는 임의의 다른 조합으로 적용될 수도 있다.
본 개시물의 기법들에 따르면, 비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은, 비디오 코더는, 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여, 현재의 블록에 대한 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별할 수도 있다. 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩되면, 비디오 코더는 이웃하는 블록을 코딩하는데 사용되는 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가할 수도 있다. 비디오 코더에 의해 체크되는 이웃 블록들의 로케이션들은 현재의 블록에 대해 고정될 수도 있다. 예를 들어, 이웃 블록들의 로케이션들은 좌측 (L) 블록, 상부 (A) 블록, 좌하부 (BL) 블록, 우상부 (AR) 블록, 및/또는 좌상부 (AL) 블록일 수도 있다. 다른 이웃하는 블록들이 또한 사용될 수도 있다. 이웃 블록들로부터의 인트라 예측 모드들이 MPM 후보 리스트에 추가되는 순서는 고정될 수도 있거나 또는 변할 수도 있으며, 예를 들어, 순서는 현재의 블록 사이즈, 블록이 직사각형 또는 정사각형과 같은 어떤 형상인지 여부에 의존하거나, 또는 컨텍스트 정보에 기초할 수 있다.
5개의 이웃 로케이션들이 일 예로서 제공되지만, 설명된 기법들을 이용한 MPM 후보 리스트의 구성에서 더 적거나 또는 더 많은 이웃 블록들이 고려될 수 있다. 5개 이상의 로케이션들을 갖는 일 예가 도 3e 에 도시된다
이웃하는 블록에 대한 로케이션은 서브-블록 사이즈, 예를 들어, 4x4 로 표현될 수도 있는데, 이는 인트라 예측 모드 정보가 저장되는 그래뉼래러티임을 의미한다. 다른 예에서, 인트라 예측 모드 정보는 픽셀 당, 또는 8x8 과 같은 더 큰 블록들에 대해 규정될 수 있다. 크로마가 4:2:0 칼라 포맷에서와 같이 루마 성분에 비해 서브샘플링되면, 크로마 성분 서브-블록 로케이션은 더 작은, 예를 들어, 2x2 일 수도 있으며, 이는 루마 4x4 에 대응할 수도 있다.
일부 예들에서, 이웃 블록 사이즈에 따라서, 로케이션들은 동일한 블록에 속할 수도 있다. 예를 들어, 이웃 블록이 16x16 이고 현재 코딩된 블록이 8x8 이면, 상기 좌측 및 좌측 로케이션들은 동일한 16x16 이웃 블록에 대응할 수도 있으며, 여기서, 인트라 예측 모드 정보는 이들 로케이션들에서 동일할 것이다.
이웃 로케이션들의 개수 M 은 MPM 후보 리스트 사이즈 N 과 동일할 수 있으며, 그러나 더 작거나 또는 더 클 수도 있다. 일 예에서, 개수 M 은 다른 유형들의 인트라 예측 모드들을 MPM 후보 리스트에 포함시키도록 소정의 공간을 할당하기 위해 N 보다 항상 더 작을 수도 있다. 로케이션들의 개수는 현재의 및/또는 이웃 블록의 특성들, 예컨대 블록 사이즈, 블록이 정사각형 또는 직사각형인지 여부, 직사각형의 블록이 수평 블록 (즉, 폭이 높이보다 큰지) 여부, 높이와 폭 사이의 비, 높이 및 폭의 큰 값과 작은 값 사이의 비, 또는 블록이 수직 블록인지 (폭이 높이보다 작은지) 여부에 의존할 수 있다. 로케이션들의 개수는 또한 이웃 블록의 예측 모드 (예컨대, 인트라 또는 인터) 에 의존할 수도 있다.
다른 예에서, 이웃 블록 로케이션들, 및 인트라 예측 모드들이 MPM 후보 리스트에 추가되는 인트라 예측 모드들 순서는 상이할 수 있다. 예를 들어, 순서는 어떤 블록들에 대해 상이할 수도 있으며, 예를 들어, 현재의 블록 사이즈, 현재의 블록이 정사각형 또는 직사각형인지 여부, 현재의 블록이 수직으로 지향되는지 (폭이 높이보다 작은지) 여부, 또는 수평으로 지향되는지 (폭이 높이보다 큰지) 여부에 의존할 수 있다.
여전히, 다른 예에서, 로케이션들 및 인트라 예측 모드들 순서는 이웃 블록들 특성들에 의존할 수 있다. 특성들은, 예를 들어, 이웃 블록들 예측 모드 (인트라 또는 인터), 이웃 블록 사이즈, 이웃 블록이 정사각형 또는 직사각형인지 여부, 이웃 블록이 수직으로 지향되는지 (폭이 높이보다 작은지) 여부, 높이와 폭 사이의 비, 높이 및 폭의 큰 값과 작은 값 사이의 비, 또는 수평으로 지향되는지 (폭이 높이보다 큰지) 여부일 수 있다.
다른 예에서, 현재의 블록에 대한 이웃 블록들의 로케이션들은 병합 또는 진보된 모션 벡터 예측 (AMVP) 인터 예측 모드들에서와 동일할 수 있다. 이러한 통일은 동일한 기능이 인터 및 인트라 예측 모드들에 대해 재사용될 수 있기 때문에, 구현 이점을 가질 수 있다.
일반적으로, 비디오 코더는 상이한 MPM 유형들로부터 MPM 후보 리스트를 발생시킬 수도 있다. 상이한 유형들은, 이웃-기반의 인트라 예측 모드들, 유도된 인트라 예측 모드들, 및 디폴트 인트라 예측 모드들을 포함할 수도 있지만, 이에 한정되지 않는다. 이웃-기반의 인트라 예측 모드는 이웃하는 블록에 대해 사용되는 인트라 예측 모드를 표시한다. 디폴트 인트라 예측 모드는 이웃하는 블록들에 따라서 변하지 않는 일정한 인트라 예측 모드를 지칭한다. 디폴트 인트라 예측 모드(들) 는 예를 들어, 평면 모드, DC 모드, 수평 모드, 또는 수직 모드일 수도 있다. 유도된 인트라 예측 모드는 이웃-기반의 인트라 예측 모드 또는 디폴트 인트라 예측 모드에 기초하여 유도되는 인트라 예측 모드를 지칭한다. 예를 들어, 유도된 인트라 예측 모드는 이웃-기반의 인트라 예측 모드 ±1, ±2, 등일 수도 있다. 유도된 인트라 예측 모드는 또한 다른 기존 유도된 인트라 예측 모드에 의해 발생될 수 있다. 유도된 인트라 예측 모드는 이웃하는 블록의 실제 인트라 예측 모드가 아니라 오히려, 이웃하는 블록의 실제 인트라 예측 모드로부터 유도되거나 또는 어떤 다른 방법으로 유도되는 인트라 예측 모드일 수도 있다.
비디오 코더는 인트라 예측 모드 유형에 따라서 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 일 예로서, 비디오 코더는 이웃-기반의 인트라 예측 모드들을 먼저 추가하고, 그후 유도된 모드들을 추가하고, 그후 디폴트 모드들을 추가할 수도 있다. 다른 예에서, 비디오 코더는 상이한 유형들을 가진 인트라 예측 모드들을 인터리브된 방법으로 추가할 수도 있다. 예를 들어, 비디오 코더는 어떤 개수의 이웃-기반의 인트라 예측 모드들을 리스트에 추가한 후, 하나 이상의 디폴트 모드들을 추가할 수도 있다. 예를 들어, 비디오 코더는 2개의 이웃-기반의 모드들을 먼저 추가하고, 그후 2개의 디폴트 모드들을 추가하고, 그후 더 많은 이웃-기반의 인트라 예측 모드들을 추가할 수도 있다.
도 3a 내지 도 3e 는 이웃 블록들에 대한 로케이션들의 예들을 나타내며, 일부 예들이 도시되며, 블록들은 직사각형 또는 정사각형들일 수 있다. 도 3c 는 병합/AMVP 모드들과 통합된 예를 나타낸다. 도 3d 는 더 많은 개수의 이웃 로케이션들을 갖는 예를 나타낸다. 도면에 미도시된, 좌측 또는 상부 상의 일부 중심 로케이션들이 또한 사용될 수 있다.
MPM 후보 리스트 구성 및 유도된 모드들의 양태들이 이하 설명될 것이다. 이웃-기반의 인트라 예측 모드들이 MPM 후보 리스트에 포함되는 것으로 고려될 때, 단지 고유한 인트라 예측 모드들만이 리스트에 추가될 수 있다. 예를 들어, 하나의 이웃 블록이 MPM 후보 리스트에 이미 추가되어 있는 동일한 인트라 예측 모드를 가지면, 이러한 모드는 리스트에 두번째로 추가되지 않는다.
비디오 코더는 단지 어떤 개수 (K) 의 이웃-기반의 인트라 예측 모드들을 사이즈 N 의 MPM 후보 리스트에 추가할 수도 있다. 예를 들어, M 개의 이웃 로케이션들이 고려될 수도 있지만, 단지 M 개보다 더 작을 수 있는 K 개의 이웃-기반의 인트라 예측 모드들만이 MPM 후보 리스트에 추가될 수도 있다. 예를 들어, 비디오 코더는 어떤 로케이션들로부터 이웃-기반의 인트라 예측 모드들을 어떤 순서로 추가할 수도 있으며, 일단, 추가된 이웃 모드들의 개수가 K 개의 모드들에 도달하면, 비디오 코더는 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하는 것을 중지할 수도 있다. 일부 예에서, K 는 고유한 모드들의 수를 나타내며 고려된 모드들의 수를 반드시 나타낼 필요는 없다. 다시 말해서, 중복 모드들이 고려되면 (예컨대, 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 가지면), 비디오 코더는 단지 모드의 하나의 인스턴스만을 MPM 후보 리스트에 추가할 수도 있다. 단지 K 개의 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하는 것은 아래에서 좀더 자세하게 설명되는, 유도된 인트라 예측 모드들 및/또는 디폴트 인트라 예측 모드들과 같은, 다른 유형들의 모드들에 대한 MPM 후보 리스트에서 공간을 절감할 수도 있다.
비디오 코더가 이웃 블록들로부터의 인트라 예측 모드들을 MPM 후보 리스트에 추가한 후, MPM 후보 리스트는 예를 들어, 일부 모드들이 동일하고 리스트에 추가되지 않기 때문에, 여전히 완전하지 않을 수도 있다 (모드들의 개수가 N 개보다 적다). 그러나, MPM 후보 리스트는 항상 완전하도록, 예컨대 N 의 사이즈를 갖도록 요구될 수 있다.
이 경우, 인트라 예측 모드들이 리스트에 추가될 필요가 있다. 이들 추가적인 모드들은 2개의 유형들: MPM 후보 리스트에 이미 추가된 인트라 예측 모드들로부터 유도된 인트라 예측 모드들 및 디폴트 인트라 예측 모드들로 분류될 수 있다.
유도된 인트라 예측 모드들은 MPM 후보 리스트에 이미 추가된 인트라 예측 모드들로부터 유도된 모드들이다. 예를 들어, 유도된 인트라 예측 모드는 MPM 후보 리스트로부터의 모드에 어떤 오프셋을 가산함으로써 획득된 모드일 수 있다. 오프셋은 -+1, -+2 등일 수 있다. 오프셋 값은 위에서 설명된 바와 같은 현재의 또는 이웃 블록 특성들에 의존할 수 있다.
하나 보다 많은 오프셋 값들이 인트라 예측 모드들을 유도하는데 사용되도록 의도될 때, 오프셋들은 특정의 순서로 적용될 수 있다. 순서는 예를 들어, 블록 특성들에 의존할 수 있다. 예를 들어, 처음에, 제 1 오프셋이 MPM 후보 리스트에 이미 추가된 모든 인트라 예측 모드들에 적용되며, 그후 제 2 오프셋 값이 MPM 후보 리스트에 이미 추가된 모드들에 적용되고, 기타등등으로 적용된다.
다른 예에서, 모든 오프셋 값들이 MPM 후보 리스트로부터의 제 1 인트라 예측 모드에 적용되며, 그후 모든 오프셋 값들이 MPM 후보 리스트로부터의 제 2 인트라 예측 모드에 적용되며, 기타등등으로 적용된다.
여전히, 다른 예에서, 상기 예에서, 오프셋 값은 오프셋 세트로 대체될 수 있다. 예를 들어, 오프셋 세트는 동일한 크기의 오프셋 값으로 구성될 수 있다. 예를 들어, -+1 은 하나의 오프셋 세트일 수도 있으며, -+2 는 제 2 오프셋 세트일 수도 있으며, 기타 등등일 수도 있다. 다른 예에서, 오프셋 세트는 동일한 부호를 가지는 오프셋 값들로 구성될 수도 있다. 예를 들어, +1, +2,.. 는 하나의 세트일 수도 있으며, 한편, -1, -2,.. 는 제 2 세트이다. 상기 2개의 예들은 결합될 수 있다. 다른 예에서, 오프셋 세트는 모든 가능한 오프셋 값들로 서브세트로서 구성될 수도 있으며, 여기서, 서브세트는, 예를 들어, 오프셋이 적용될 인트라 예측 모드에 의존할 수 있다. 예를 들어, 하나의 인트라 예측 모드는 오프셋 값들의 어떤 서브세트를 가질 수도 있으며, 다른 인트라 예측 모드는 제 1 서브-세트로부터의 차이일 수도 있는, 오프셋 값들의 다른 서브세트를 가질 수도 있다.
오프셋 값은 어떤 인트라 예측 모드들에 대해 적용되지 않을 수도 있으며, 예를 들어, 오프셋이 DC, 평면, 또는 LM 모드들과 같은 비-각도 모드들에 적용되지 않으며, 오프셋은 유도된 또는 디폴트 인트라 예측 모드들에 적용되지 않을 수도 있다.
유도된 모드들을 생성하는 다른 방법은 회전 (rotation) 일 수도 있다. 예를 들어, 회전된 유도된 모드들은 모드를 어떤 각도 만큼 회전시킴으로써 이웃-기반의 인트라 예측 모드들로부터 생성될 수도 있다. 각도는 예를 들어, 45, 90, 또는 180 도 또는 임의의 다른 값일 수 있다. 예를 들어, 회전 각도가 90 도와 동일하고 이웃 모드가 수평 인트라 예측 모드이면, 유도된 모드는 수직 모드일 수도 있다. 다른 예로서, 이웃 모드가 수평 모드들이면, 유도된 모드는 수직 모드이다. 동일한 기법이 다른 방향 모드들 또는 회전 각도들에 적용될 수 있다.
회전은 단지 어떤 이웃 모드들에만 적용될 수 있으며, 예를 들어, 회전은 비-각도 모드들에 적용되지 않을 수도 있다. 다른 예에서, 회전 사용은 위에서 설명된 현재의 또는 이웃 블록들 특성들에 의존할 수 있다. 예를 들어, 회전은 현재의 또는 이웃 블록들이 직사각형 형상을 가지면 단지 그 모드들에만 적용될 수 있다.
일부 구현예들에서, 단지 고유한 유도된 모드들만이 리스트에 추가될 수 있다. 따라서, 유도된 인트라 예측 모드와 동일한 인트라 예측 모드가 이미 MPM 후보 리스트에 추가되어 있으면, 유도된 모드는 MPM 후보 리스트에 추가되지 않을 수도 있다. 일부 구현예들에서, 단지 어떤 개수의 유도된 모드들만이 MPM 후보 리스트에 추가될 수도 있다. 개수는 고정될 수도 있다. 다른 예에서, 리스트에 추가된 유도된 모드들의 개수는 MPM 후보 리스트 사이즈 N, 마이너스, 이웃 블록들로부터의 모드들의 개수 M 과 동일할 수도 있다. 일반적으로, 유도된 모드들은 MPM 후보 리스트가 완성되지 않을 때까지 계속 추가될 수 있다.
일부 코딩 시나리오들에서, 이웃 블록들로부터의 인트라 예측 모드들 및 유도된 모드들은 MPM 후보 리스트를 완성하기에 충분하지 않을 수도 있다. 일 예에서, 예를 들어, 현재의 블록이 픽처 경계에 있거나 또는 모든 이웃 블록들이 인터 코딩되기 때문에, 이웃 블록들로부터 이용가능한 인트라 예측 모드들이 존재하지 않는 코딩 시나리오가 있을 수도 있다. 이러한 경우, 유도된 모드들은 어느 쪽이든 이용불가능할 수도 있다.
MPM 후보 리스트를 완성하기 위해, 디폴트 인트라 예측 모드들이 리스트에 추가될 수 있다. 디폴트 인트라 예측 모드들의 개수는, 전체 MPM 후보 리스트가 디폴트 모드들로 구성될 수도 있기 때문에, 원하는 MPM 후보 리스트 사이즈와 동일해야 할 수도 있다. 그러나, 이미 MPM 후보 리스트에서 식별된 일부 모드들이 존재하는 예들에서, 디폴트 인트라 예측 모드들의 포함은 MPM 후보 리스트가 가득 차도록 보장할 수도 있다.
디폴트 모드들은 기본적으로, 가능한 인트라 예측 모드들의 서브세트일 수 있으며, 이들 모드들은 고유할 수 있다. 디폴트 모드들에 대해 선택된 인트라 예측 모드들은 고정되거나, 또는 현재의 또는 이웃 블록 특성들에 의존할 수 있다.
다른 예에서, 어떤 모드들이 디폴트 모드들로서 항상 추가될 수 있다. 이러한 모드들은 예를 들어, 평면, DC, 수직 모드, 수평 모드, 대각선 모드들, 예를 들어, 좌측 (상부 좌측 모서리로부터 블록의 우하측 모서리 측으로) 또는 우측 (우상부 모서리로부터 블록의 좌하측 모서리 측으로) 대각선 모드들일 수 있다. 디폴트 모드들, 및 디폴트 모드들이 MPM 후보 리스트에 추가되는 순서는 고정될 수 있거나 또는 현재의 블록의 특성들 및/또는 이웃 블록들의 특성들에 의존할 수 있다.
일 예에서, 디폴트 모드 리스트는 평면, DC, 수직, 수평, 좌측 대각선, 우측 대각선일 수 있다. 다른 예에서, 디폴트 모드 리스트는 평면, DC, 수직, 수평, 수직 마이너스 1, 수평 마이너스 1 일 수도 있다. 크로마 성분에 대해, 디폴트 모드는 DM 또는 LM 모드들일 수 있다. 게다가, 하나 이상의 유도된 디폴트 모드들은 인코딩 및 디코딩 동안 유지되고 업데이트될 수 있으며, 디폴트 모드들은 이전에 코딩된 블록들에서 가장 빈번하게 사용되는 모드들일 수 있다. 유도된 디폴트 모드들은, MPM 후보 리스트를 발생시킬 때 하나 이상의 디폴트 모드들이 유도된 디폴트 모드들로 대체되는 방법으로 적용될 수 있다.
다른 예에서, 전체 디폴트 모드 리스트는 유도된 모드들을 획득하기 위해 위에서 설명된 오프셋 또는 회전 기법을 적용함으로써 더 작은 모드 리스트로부터 유도될 수 있다. 또한, 디폴트 모드 리스트가 단지 고유한 인트라 예측 모드들만을 포함해야 한다는 요구사항이 있을 수 있다.
다른 예에서, 일부 디폴트 모드들은 어떤 이웃 로케이션들 이전에, 또는 MPM 후보 리스트에 이미 포함된 이웃-기반의 인트라 예측 모드들의 어떤 개수 이후에, 예를 들어, 일부 디폴트 인트라 예측 모드들이 추가되는 2개의 이웃-기반의 인트라 예측 모드들 이후에, 리스트에 추가될 수 있다.
일 예에서, 고유하거나, 동일하거나, 또는 이용불가능할 수도 있는, 좌측 및 상부 인트라 예측 모드들이, MPM 후보 리스트에 추가되며, 그후 PLANR 또는 DC 와 같은, 비-각도 디폴트 모드들이 MPM 후보 리스트에 추가된다. 디폴트들 모드들이 MPM 후보 리스트에 추가된 후, 이웃 블록들 순서에 따른 더 많은 이웃-기반의 인트라 예측 모드들이 MPM 후보 리스트에 추가된다. 또, 일부 구현예들에서, 단지 고유한 모드들만이 리스트에 추가된다. 모드들을 추가하는 인터리빙 방법은 현재 및 이웃 블록들 특성들에 의존할 수 있다.
MPM 모드들에 대한 컨텍스트 모델링의 양태가 이하 설명될 것이다. 도 9 및 도 10 과 관련하여 아래에서 더욱더 자세히 설명되는 바와 같이, 엔트로피 코딩에 사용되는 컨텍스트 모델은 엔트로피 코딩 프로세스에 의해 달성되는 데이터 압축에 영향을 미칠 수도 있다. 따라서, 컨텍스트 모델링은 비디오 인코더에 의해 달성되는 전체 압축에 영향을 미칠 수도 있다. 본 개시물은 전체 비디오 압축을 향상시킬 수도 있는 인트라 예측 모드들을 시그널링할 때에 사용을 위한 컨텍스트 모델을 선택하는 기법들을 기술한다.
코딩될 현재의 인트라 예측 모드가 MPM 모드들 중 하나와 동일하면, 비디오 코더는 MPM 모드들에 대응하는 컨텍스트 코딩된 빈 (bin) 들을 이용하여 현재의 인트라 예측을 시그널링할 수도 있다. 예를 들어, 시그널링될 빈들은 2진화에 의해 정의될 수 있으며, 2진화는 제한없이, 단항, 트렁케이트된 단항, 고정된 2진, Golomb, 지수 Golomb, Rice 및 임의의 다른 2진화들과 같은, 임의의 코드워드 유도 방식일 수 있다. 2진화는 MPM 인덱스, 예컨대 현재의 인트라 예측 모드가 동일한 어떤 위치에서의 MPM 후보 리스트로부터의 MPM 모드에 적용될 수 있다. 이 인덱스는 비트스트림으로 시그널링될 수 있다. 2진화된 표현에서의 각각의 빈 또는 어떤 개수의 빈들은 컨텍스트 코딩될 수 있으며, 컨텍스트는 MPM 모드들의 분류에 따라서 유도될 수 있다.
예를 들어, 단항의 또는 트렁케이트된 단항의 2진화 또는 유사한 2진화에서, 각각의 빈은 MPM 후보 리스트로부터의 모든 모드에 대응하며, 예를 들어, 0 은 현재의 모드가 MPM 후보 리스트로부터의 모드와 동일하지 않다는 것을 나타내며, 1 은 현재의 모드가 그 MPM 모드와 동일하다는 것을 나타낸다. 그후, 각각의 빈 또는 어떤 개수의 제 1 빈들은 컨텍스트 코딩될 수 있으며, 컨텍스트는 대응되는 MPM 모드 분류에 의존한다.
일 예로서, MPM 후보 리스트는 {HOR, VER, PLANAR, DC, DIAG_LEFT, DIAG_RIGHT} 모드들로 구성될 수도 있다. 그리고, 코딩될 현재의 인트라 예측 모드가 PLANAR 모드와 동일하다고, 예컨대, 시그널링될 MPM 인덱스가 2 라고 하자. 2진화가 단항으로 트렁케이트되면, 2진화 코드워드는 인덱스 2 에 대응하는 001 이며, 최대 값은 5 와 동일하다.
001: 0 (MPM0 에 대응함) 0 (MPM1 에 대응함) 1 (MPM2 에 대응함).
MPM0 = HOR, MPM1 = VER, MPM2 = PLANAR, …
볼 수 있는 바와 같이, 각각의 빈은 리스트로부터의 어떤 MPM 모드에 대응하며, 그 빈들에 대한 컨텍스트 MPMi 분류에 따라서 유도되며, 이 예에서, i = 0..2 이다. 이 예에서, MPM0 관련된 컨텍스트는 모드들의 수평 세트에 대해 사용될 수도 있으며, MPM1 관련된 컨텍스트는 모드들의 수직 세트에 대해 사용될 수도 있으며, MPM2 관련된 컨텍스트는 모드들의 비-각도 세트에 대해 사용될 수도 있다.
MPM 모드들의 분류는 예를 들어, 인트라 예측 모드가 각도 또는 비-각도 모드인지 여부에 의존하거나, 또는 수직 또는 수평 세트와 같은 각도 방향에 따를 수 있다.
다른 예에서, 모든 인트라 예측 모드들은 3개의 세트들: 비-각도 세트, 수평 세트 또는 수직 세트로 분류될 수 있다. 수직 세트는 예를 들어, 수직 방향으로 닫힌 인트라 예측 모드들, 예를 들어, 수직 방향으로부터 -+45 도 각도를 갖는 모드들일 수 있으며, 수평 세트는 수평 방향으로부터 -+45 도 각도를 갖는 모드들로서 유사하게 유도된다.
도 4 는 MPM 모드들 분류의 일 예 (하나의 세트는 수평 세트이고, 하나의 세트는 수직 세트이고, 하나의 세트는 비 각도 세트이다. (다른 예에서 모드들 2, 34, 및 유사한 모드들을 포함하는, 모드 18 과 같은) 대각선 모드(들) 는 수평 또는 수직 세트들로 분류될 수도 있거나 또는 분리된 대각선 세트에 포함될 수 있다) 를 나타낸다.
다른 예에서, 모든 각도 방향들은 수평 또는 수직 세트들 이상으로 분할될 수 있다. 예를 들어, 각도 모드들은 일정 개수의 세트들로 균일하게 분할될 수도 있다. 각각의 인트라 예측 모드는 세트들 중 하나를, 예를 들어, 어떤 각도 범위에 있는 것으로서, 분류될 수도 있다. 다른 예에서, 각각의 세트는 오직 하나의 인트라 예측 모드를 포함할 수도 있으며, 선택은 인트라-모드 특정적일 수도 있다.
인트라 예측 모드 분류 및 가장 가능성있는 모드 벡터들 (MPMV) 에 대한 일반화를 이용한 컨텍스트 모델링의 양태들이 이하 설명될 것이다. 위에서 설명된 인트라 예측 모드 분류는 블록의 인트라 예측 모드에 적용될 수도 있으며, 추가적인 인트라 관련된 신택스 엘리먼트들을 시그널링하는데 사용될 수도 있다. 이것은 인트라 예측 모드가 코딩된 후, 즉, 인트라 예측 모드가 디코더에서 이미 알려져 있을 때 적용되거나 또는 시그널링되는 임의의 방법 또는 신택스 엘리먼트에 대해 사용될 수 있다.
예를 들어, 블록 내 인트라-예측에 사용될 예측 및 변환의 유형을 각각 정의하는, PDPC 및/또는 NSST 인덱스들은 인트라 예측 모드 분류에 기초한 컨텍스트 모델링을 이용하여 시그널링될 수 있다. 분류에서의 모든 세트에 대해, 별개의 컨텍스트가 사용될 수도 있다.
엔트로피 코딩은 위에서 설명된 컨텍스트-기반의 기법들을 이용하여 코딩될 엘리먼트들 사이의 통계적 의존성들을 이용할 수 있다. 다른 방법은 데이터를 결합하고 그것을 함께 코딩하는 것에 기초한다. 예를 들어, 단지 예측 모드들 (MPM) 의 리스트만을 이용하는 대신, 가장 가능성있는 모드 벡터들 (MPMV) 로서 불리는, 관련된 인트라-예측 정보의 벡터들이 생성될 수 있다. 예를 들어, MPMV 에서의 엘리먼트들은 다음 정보 및 인덱스들을 포함할 수 있다:
[ 예측 모드, PDPC 선택, NSST 선택 ]
이전 섹션들에서 설명된, MPM들을 프로세싱하여 코딩하는 기법들은 MPMV들에 대해 확장될 수 있으며, 예를 들어, 단일 2진 심볼은 벡터에서의 모든 엘리먼트들이 MPMV 리스트에서의 하나의 엔트리와 동일한지를 표시할 수 있다. 또는, 하나의 2진 심볼은 엘리먼트들 중 적어도 2개가 동일한지 여부, 등을 표시할 수도 있다.
이들 확장들은 벡터 정보의 대안적인 2진수화들에 대응하지만, 모든 엘리먼트들에 관한 부분 정보를 동시에 코딩가능하게 하기 때문에, 다른 유형이 완전히 코딩된 후, 단지 하나의 유형의 정보만을 코딩하도록 제한되는 것들보다 더 일반적이다.
현재의 JEM 에서, MPM 인덱스 코딩을 위한 컨텍스트들은, 3개의 그룹들, 즉, 평면 (Planar) 및 DC (비-각도 세트), 수평 세트 (좌하측으로부터 우상측으로의 대각선 방향으로부터 대각선 모드로의 모드들을 포함), 및 수직 세트 (대각선 모드로부터 우상측으로부터 좌하측으로의 대각선 방향으로) 로 분리된다. 컨텍스트 세트는 인트라 MPM 모드 방향 및/또는 현재의 블록 형상, 및/또는 MPM 후보 리스트 내 MPM 모드들의 개수에 기초하여 정제될 수도 있다.
예를 들어, 인트라 예측 모드들의 총 개수가 HEVC 에서 사용되는 35 개의 모드들보다 더 높으면, 예를 들어, 67 개의 모드들이면, MPM 인덱스에 대한 컨텍스트는 컨텍스트 모델이 예를 들어, 다음 테이블에 나타낸 바와 같이, 바람직한 인트라 예측 모드들, 예를 들어, 수직 또는 수평 방향들에 대한 거리에 의존하는 방법으로 그룹화될 수 있다.
더 일반적으로는, MPM 인덱스를 코딩하는데 사용되는 컨텍스트는 디폴트 또는 사전 선택된 인트라 예측 모드들로부터의 특정의 MPM 모드 (특정의 MPM 인덱스를 가진 모드) 의 거리, 즉, 현재의 MPM 모드가 디폴트 모드들로부터 얼마나 멀리 있는지에 따라서 할당된다. 이들 디폴트 모드들은 예를 들어, 수평, 수직, 대각선 또는 임의의 다른 방향일 수 있다.
도 5 는 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 예시하는 블록도이다. 비디오 인코더 (20) 는 비디오 슬라이스들 내 비디오 블록들의 인트라 코딩 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 주어진 비디오 프레임 또는 픽처 내 비디오에서 공간 리던던시를 감소시키거나 또는 제거하기 위해, 공간 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 인접 프레임들 또는 픽처들 내 비디오에서 시간 리던던시를 감소시키거나 또는 제거하기 위해, 시간 예측에 의존한다. 인트라 모드 (I 모드) 는 다양한 공간 기반의 압축 모드들 중 임의의 압축 모드를 지칭할 수도 있다.
도 5 의 예에서, 비디오 인코더 (20) 는 비디오 데이터 메모리 (40), 예측 프로세싱 유닛 (41), 디코딩된 픽처 버퍼 (DPB) (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 예측 프로세싱 유닛 (41) 은 파티션 유닛 (35), 모션 추정 유닛 (42), 모션 보상 유닛 (44), 인트라 BC 유닛, 및 인트라 예측 프로세싱 유닛 (46) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 프로세싱 유닛 (60), 및 합산기 (62) 를 포함한다. 인-루프 필터 (미도시됨) 는 합산기 (62) 와 DPB (64) 사이에 위치될 수도 있다.
다양한 예들에서, 비디오 인코더 (20) 의 고정 또는 프로그래밍가능 하드웨어 유닛은 본 개시물의 기법들을 수행하는 일을 부과받을 수도 있다. 또한, 일부 예들에서, 본 개시물의 기법들은 도 5 에 나타낸 비디오 인코더 (20) 의 예시된 고정 또는 프로그래밍가능 하드웨어 유닛들 중 하나 이상 사이에 분할될 수도 있지만, 다른 디바이스들이 또한 본 개시물의 기법들을 수행할 수도 있다.
비디오 데이터 메모리 (40) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (40) 에 저장된 비디오 데이터는 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. DPB (64) 는 비디오 인코더 (20) 에 의해 (예컨대, 인트라 또는 인터 예측 코딩 모드들로서 또한 지칭되는, 인트라 또는 인터 코딩 모드들에서) 비디오 데이터를 인코딩할 때에 이용을 위해 참조 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리 (40) 및 DPB (64) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (40) 및 DPB (64) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (40) 는 비디오 인코더 (20) 의 다른 컴포넌트들과의 온-칩, 또는 그들 컴포넌트들에 대한 오프-칩일 수도 있다.
도 5 에 나타낸 바와 같이, 비디오 인코더 (20) 는 비디오 데이터를 수신하고, 파티션 유닛 (35) 은 데이터를 비디오 블록들로 파티셔닝한다. 이러한 파티셔닝은 또한 슬라이스들, 타일들, 또는 다른 더 큰 유닛들 뿐만 아니라, 예컨대, LCU들 및 CU들의 쿼드트리 구조에 따라서 파티셔닝하는 비디오 블록으로 파티셔닝하는 것을 포함할 수도 있다. 비디오 인코더 (20) 는 일반적으로 인코딩되는 비디오 슬라이스 내 비디오 블록들을 인코딩하는 컴포넌트들을 예시한다. 슬라이스는 다수의 비디오 블록들로 (그리고, 아마도, 타일들로서 지칭되는 비디오 블록들의 세트들로) 분할될 수도 있다. 예측 프로세싱 유닛 (41) 은 에러 결과들 (예컨대, 코딩 레이트 및 왜곡의 레벨) 에 기초하여, 현재의 비디오 블록에 대해, 복수의 인트라 코딩 모드들 중 하나 또는 복수의 인터 코딩 모드들 중 하나와 같은, 복수의 가능한 코딩 모드들 중 하나를 선택할 수도 있다. 예측 프로세싱 유닛 (41) 은 최종 인트라 또는 인터 코딩된 블록을, 합산기 (50) 에 제공하여 잔차 블록 데이터를 발생하고, 그리고 합산기 (62) 에 제공하여, 참조 픽처로서 사용하기 위한 인코딩된 블록을 복원할 수도 있다.
예측 프로세싱 유닛 (41) 내의 인트라 예측 프로세싱 유닛 (46) 은 코딩되는 현재의 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대해, 현재의 비디오 블록의 인트라 예측 코딩을 수행하여, 공간 압축을 제공할 수도 있다. 예측 프로세싱 유닛 (41) 내 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 참조 픽처들에서의 하나 이상의 예측 블록들에 대해, 현재의 비디오 블록의 인터 예측 코딩을 수행하여, 시간 압축을 제공한다.
모션 추정 유닛 (42) 은 비디오 시퀀스에 대한 미리 결정된 패턴에 따라서 비디오 슬라이스에 대한 인터 예측 모드를 결정하도록 구성될 수도 있다. 미리 결정된 패턴은 그 시퀀스에서의 비디오 슬라이스들을 P 슬라이스들 또는 B 슬라이스들로서 지시할 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적들을 위해 별개로 예시된다. 모션 추정 유닛 (42) 에 의해 수행되는 모션 추정은 모션 벡터들을 발생시키는 프로세스이며, 이 프로세스는 비디오 블록들에 대한 모션을 추정한다. 모션 벡터는, 예를 들어, 참조 픽처 내 예측 블록에 대한, 현재의 비디오 프레임 또는 픽처 내 비디오 블록의 PU 의 변위를 나타낼 수도 있다. 인트라 BC 유닛 (48) 은 인터 예측을 위한 모션 추정 유닛 (42) 에 의한 모션 벡터들의 결정과 유사한 방법으로 인트라 BC 코딩을 위한 벡터들, 예컨대, 블록 벡터들을 결정할 수도 있거나, 또는 모션 추정 유닛 (42) 을 이용하여 블록 벡터를 결정할 수도 있다.
예측 블록은 픽셀 차이의 관점에서 코딩되는 비디오 블록의 PU 에 가깝게 매칭하는 것으로 발견되는 블록이며, SAD, SSD, 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 DPB (64) 에 저장된 참조 픽처들의 서브-정수 픽셀 위치들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 픽처의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수 픽셀 위치들의 값들을 내삽할 수도 있다. 따라서, 모션 추정 유닛 (42) 은 풀 픽셀 위치들 및 분수 픽셀 위치들에 대해, 모션 탐색을 수행하고, 분수 픽셀 정밀도를 가진 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 PU 의 위치를 참조 픽처의 예측 블록의 위치와 비교함으로써 인터 코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를 계산한다. 참조 픽처는 제 1 참조 픽처 리스트 (List 0) 또는 제 2 참조 픽처 리스트 (List 1) 로부터 선택될 수도 있으며, 이 리스트들 각각은 DPB (64) 에 저장된 하나 이상의 참조 픽처들을 식별한다. 모션 추정 유닛 (42) 은 그 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다.
일부 예들에서, 인트라 BC 유닛 (48) 은 벡터들을 발생시키고, 그리고, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 과 관련하여 위에서 설명한 방법과 유사한 방법으로 예측 블록들을 페치할 수도 있지만, 여기서, 예측 블록들은 현재의 블록과 동일한 픽처 또는 프레임이며, 벡터들은 모션 벡터들과는 대조적으로, 블록 벡터들로서 지칭된다. 다른 예들에서, 인트라 BC 유닛 (48) 은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 을, 전체적으로 또는 부분적으로, 이용하여, 본원에서 설명되는 기법들에 따른 인트라 BC 예측을 위한 이러한 기능들을 수행할 수도 있다. 어느 경우에나, 인트라 BC 에 있어서, 예측 블록은 절대 차이의 합계 (SAD), SSD (sum of squared difference), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 픽셀 차이의 관점에서, 코딩될 블록과 가깝게 매칭하는 것으로 발견되는 블록일 수도 있으며, 블록의 식별은 서브-정수 픽셀 위치들에 대한 값들의 계산을 포함할 수도 있다.
모션 보상 유닛 (44) 에 의해 수행되는 모션 보상은 가능한 한, 서브-픽셀 정밀도까지 내삽들을 수행함으로써, 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하거나 또는 발생시키는 것을 수반할 수도 있다. 현재의 비디오 블록의 PU 에 대한 모션 벡터를 수신하자 마자, 모션 보상 유닛 (44) 은 모션 벡터가 참조 픽처 리스트들 중 하나에서 가리키는 예측 블록을 로케이트할 수도 있다. 비디오 인코더 (20) 는 코딩중인 현재의 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔차 비디오 블록을 형성한다. 픽셀 차이 값들은 블록에 대한 잔차 데이터를 형성하며, 루마 및 크로마 차이 성분들 양쪽을 포함할 수도 있다. 합산기 (50) 는 이 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 모션 보상 유닛 (44) 은 또한 비디오 슬라이스의 비디오 블록들을 디코딩할 때에 비디오 디코더 (30) 에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스와 연관되는 신택스 엘리먼트들을 발생시킬 수도 있다.
예측 비디오 블록이 인트라 BC 예측에 따라 동일한 픽처로부터 유래하든, 또는 인터 예측에 따라 상이한 픽처로부터 유래하든, 비디오 인코더 (20) 는 코딩중인 현재의 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔차 비디오 블록을 형성할 수도 있다. 픽셀 차이 값들은 블록에 대한 잔차 데이터를 형성하며, 루마 성분 차이들 및 크로마 성분 차이들 양쪽을 포함할 수도 있다. 합산기 (50) 는 이러한 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 인트라 BC 유닛 (48) 및/또는 모션 보상 유닛 (44) 은 또한 비디오 슬라이스의 비디오 블록들을 디코딩할 때에 비디오 디코더 (30) 와 같은 비디오 디코더에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스와 연관되는 신택스 엘리먼트들을 발생시킬 수도 있다. 신택스 엘리먼트들은 예를 들어, 예측 블록을 식별하는데 사용되는 벡터를 정의하는 신택스 엘리먼트들, 예측 모드를 표시하는 임의의 플래그들, 또는 본 개시물의 기법들과 관련하여 설명된 임의의 다른 신택스를 포함할 수도 있다.
인트라-예측 프로세싱 유닛 (46) 은 위에서 설명한 바와 같이, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행되는 인터-예측, 또는 인트라 BC 유닛 (48) 에 의해 수행되는 인트라 BC 예측에 대한 대안으로서, 현재의 블록을 인트라-예측할 수도 있다. 특히, 인트라 예측 프로세싱 유닛 (46) 은 현재의 블록을 인코딩하는데 사용할, 인트라 BC 모드를 포함한, 인트라 예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라 예측 프로세싱 유닛 (46) 은 예컨대, 별개의 인코딩 과정들 동안 다양한 인트라 예측 모드들을 이용하여 현재의 블록을 인코딩할 수도 있으며, 인트라 예측 프로세싱 유닛 (46) (또는, 일부 예들에서, 모드 선택 유닛) 은 테스트된 모드들로부터 사용할 적합한 인트라 예측 모드를 선택할 수도 있다. 인트라 예측 모드를 결정하는 것의 부분으로서, 인트라 예측 프로세싱 유닛 (46) 은 본 개시물의 기법들에 따라서 MPM 후보 리스트를 구성할 수도 있다. 인트라 예측 프로세싱 유닛은 MPM 후보 리스트 내 인트라 예측 모드 또는 MPM 후보 리스트 내에 있지 않은 비-가장 가능성있는 모드를 특정의 블록에 대한 인트라 예측 모드로서 선택할 수도 있다.
인트라 예측 프로세싱 유닛 (46) 은, 예를 들어, 다양한 테스트된 인트라 예측 모드들에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값들을 계산하고, 그 테스트된 모드들 중에서 최상의 레이트-왜곡 특성들을 갖는 인트라 예측 모드를 선택할 수도 있다. 레이트-왜곡 분석은 일반적으로, 인코딩된 블록과 그 인코딩된 블록을 발생하기 위해 인코딩되었던 원래의 미인코딩된 블록 사이의 왜곡의 양 (또는, 에러) 뿐만 아니라, 그 인코딩된 블록을 발생하는데 사용되는 비트 레이트 (즉, 비트수) 를 결정한다. 인트라 예측 프로세싱 유닛 (46) 은 다양한 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들 (ratios) 을 계산하여, 어느 인트라 예측 모드가 그 블록에 대해 최상의 레이트-왜곡 값을 나타내는 지를 결정할 수도 있다.
어쨌든, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 프로세싱 유닛 (46) 은 그 블록에 대한 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛 (56) 에 제공할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 본 개시물의 기법에 따라서 그 선택된 인트라 예측 모드를 나타내는 정보를 인코딩할 수도 있다. 인트라 예측 모드를 이용하여 인코딩되는 블록들에 대해, 엔트로피 인코딩 유닛 (56) 은 예를 들어, 실제 인트라 예측 모드가 MPM 후보 리스트 내 모드인지를 표시하는 정보를 인코딩하기 위한 하나 이상의 컨텍스트들을 선택할 수도 있다.
예측 프로세싱 유닛 (41) 이 현재의 비디오 블록에 대한 예측 블록을 인터 예측 또는 인트라 예측을 통해서 발생시킨 후, 비디오 인코더 (20) 는 현재의 비디오 블록으로부터 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서의 잔차 비디오 데이터는 하나 이상의 TU들에 포함되어, 변환 프로세싱 유닛 (52) 에 적용될 수도 있다. 변환 프로세싱 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수들로 변환한다. 변환 프로세싱 유닛 (52) 은 잔차 비디오 데이터를 픽셀 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수도 있다.
변환 프로세싱 유닛 (52) 은 최종 변환 계수들을 양자화 유닛 (54) 으로 전송할 수도 있다. 양자화 유닛 (54) 은 비트 레이트를 추가로 감소시키기 위해 변환 계수들을 양자화한다. 양자화 프로세스는 그 계수들의 일부 또는 모두와 연관되는 비트 심도를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 변경될 수도 있다. 일부 예들에서, 양자화 유닛 (54) 은 그후 양자화된 변환 계수들을 포함하는 매트릭스의 스캐닝을 수행할 수도 있다. 대안적으로, 엔트로피 인코딩 유닛 (56) 이 스캐닝을 수행할 수도 있다.
양자화 이후, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 컨텍스트 적응 가변 길이 코딩 (CAVLC), 컨텍스트 적응 2진 산술 코딩 (CABAC), 신택스-기반 컨텍스트-적응 2진 산술 코딩 (SBAC), 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 또는 또 다른 엔트로피 인코딩 방법론 또는 기법을 수행할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 인코딩에 이어서, 인코딩된 비트스트림은 비디오 디코더 (30) 로 송신되거나, 또는 비디오 디코더 (30) 에 의한 추후 송신 또는 취출을 위해 아카이브될 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한 코딩중인 현재의 비디오 슬라이스에 대한 모션 벡터들 및 다른 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
역양자화 유닛 (58) 및 역변환 프로세싱 유닛 (60) 은 역양자화 및 역변환을 각각 적용하여, 다른 비디오 블록들의 예측을 위한 참조 픽처의 참조 블록으로서의 추후 사용을 위해 픽셀 도메인에서 잔차 블록을 복원한다. 모션 보상 유닛 (44) 및/또는 인트라 BC 유닛 (48) 은 잔차 블록을 참조 픽처 리스트들 중 하나 내 참조 픽처들 중 하나의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 및/또는 인트라 BC 유닛 (48) 은 또한 하나 이상의 내삽 필터들을 그 복원된 잔차 블록에 적용하여, 모션 추정에 사용하기 위한 서브-정수 픽셀 값들을 계산할 수도 있다.
합산기 (62) 는 복원된 잔차 블록을 모션 보상 유닛 (44) 에 의해 발생되는 모션 보상된 예측 블록에 가산하여, DPB (64) 에의 저장을 위한 참조 블록을 발생한다. 참조 블록은 후속 비디오 프레임 또는 픽처에서 블록을 인터-예측하기 위해 인트라 BC 유닛 (48), 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 참조 블록으로서 사용될 수도 있다.
비디오 인코더 (20) 는 비디오 데이터의 현재의 블록이 인트라 예측 모드에서 코딩된다고 결정하고, 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가하고, 제 2 이웃하는 블록에 대한 인트라 예측 모드를 MPM 후보 리스트에 추가하고, 제 3 이웃하는 블록에 대한 인트라 예측 모드를 가장 가능성있는 모드 리스트에 추가하고, 그리고 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드를 식별하는 정보를 발생시키도록 구성되는 비디오 데이터를 인코딩하는 디바이스의 일 예를 나타낸다. 제 1 이웃하는 블록, 제 2 이웃하는 블록, 및 제 3 이웃하는 블록은 각각 좌측 블록, 상부 블록, 좌하측 블록, 우상부 블록, 또는 좌상측 블록 중 하나에 대응할 수도 있다.
비디오 인코더 (20) 는 이웃하는 블록들의 그룹을 고정된 순서로 체크하여, 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 고정된 순서로 추가할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 하나 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정할 수도 있다. 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 최대 개수는 MPM 후보 리스트에 대한 엔트리들의 최대 개수 미만일 수도 있다. 비디오 인코더 (20) 는 하나 이상의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 하나 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고, 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 동일한 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 MPM 후보 리스트로부터 동일한 인트라 예측 모드의 인스턴스를 제거할 수도 있다.
비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여, MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별할 수도 있다. 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 인코더 (20) 는 하나 이상의 이웃하는 블록들이 인트라 예측 모드를 이용하여 코딩되었는지를 결정할 수도 있다. 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩될 때, 비디오 인코더 (20) 는 이웃하는 블록을 인코딩하는데 사용되는 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 현재의 블록의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수평 블록 또는 수직 블록인지 여부, 또는 이웃하는 블록들의 그룹의 이웃하는 블록을 인코딩하는데 사용되는 예측 모드 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수를 결정할 수도 있다. 비디오 인코더 (20) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 로케이션들을 결정할 수도 있다. 비디오 인코더 (20) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들을 체크하는 순서를 결정할 수도 있다.
이웃하는 블록들의 그룹은 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 사용되는 이웃하는 블록들의 동일한 그룹일 수도 있다. 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 인코더 (20) 는 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 하나 이상의 이웃하는 블록들을 체크할 수도 있다.
MPM 후보 리스트에 추가된 하나 이상의 이웃하는 블록들로부터의 인트라 예측 모드들의 수가 임계 수를 초과하는 것에 응답하여, 비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료할 수도 있다. 임계 수는 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수 미만일 수도 있다. 임계 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드들을 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스 플러스 오프셋을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 제 1 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 1 유도된 인트라 예측 모드를 결정하고, 제 2 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 2 유도된 인트라 예측 모드를 결정하고, 그리고 제 1 유도된 인트라 예측 모드 및 제 2 유도된 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 제 1 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 1 유도된 인트라 예측 모드를 결정하고, 제 2 오프셋을 제 2 이웃하는 블록의 인트라 예측 모드에 추가하여 제 2 유도된 인트라 예측 모드를 결정하고, 그리고 제 1 유도된 인트라 예측 모드 및 제 2 유도된 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 현재의 블록의 특성 또는 이웃하는 블록의 특성 중 하나 또는 양자에 기초하여 오프셋을 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
MPM 후보 리스트에 추가된 유도된 인트라 예측 모드들의 수가 유도된 인트라 예측 모드들의 임계 수를 초과하는 것에 응답하여, 비디오 인코더 (20) 는 유도된 인트라 예측 모드들의 추가를 종료할 수도 있다. 유도된 인트라 예측 모드들의 임계 수, 플러스, MPM 후보 리스트에 포함된 이웃-기반의 인트라 예측 모드들의 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 인코더 (20) 는 가용 이웃-기반의 인트라 예측 모드들 및 유도된 인트라 예측 모드들의 수가 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만인 것에 응답하여, 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가하기 위해, 비디오 인코더 (20) 는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수와 동일한 MPM 후보 리스트 내 인트라 예측 모드들의 수에 도달될 때까지 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하고, 그리고, 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 인코더 (20) 는 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하고, 그리고, 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 인코더 (20) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 인코더 (20) 는 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가한 후, 비디오 인코더 (20) 는 제 1 유도된 후보를 MPM 후보 리스트에 추가할 수도 있으며, 그리고, 제 1 유도된 후보를 MPM 후보 리스트에 추가한 후, 비디오 인코더 (20) 는 제 2 이웃하는 블록에 대한 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
일부의 경우, 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드는 MPM 후보 리스트로부터의 인트라 예측 모드일 수도 있다. 일부의 경우, 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드는 비-가장 가능성있는 모드일 수도 있다.
비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드를 식별하는 정보는 MPM 후보 리스트에서의 인트라 예측 모드들 중 하나를 식별하는 컨텍스트 코딩된 인덱스 값일 수도 있으며, 비디오 인코더 (20) 는 본 개시물에서 설명되는 임의의 기법 또는 임의의 다른 기법을 이용하여 컨텍스트 코딩된 인덱스 값을 인코딩할 수도 있다.
비디오 인코더 (20) 는 또한 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 현재의 블록에 대한 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하고, 그리고, 인트라 예측 모드를 이용하여 현재의 블록을 인코딩하도록 구성된 비디오 데이터를 인코딩하는 디바이스의 일 예를 나타낸다. 비디오 인코더 (20) 는 이웃하는 블록들의 그룹을 고정된 순서로 체크하여 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 고정된 순서로 추가할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 3개 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고 3개 이상의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 최대 개수는 MPM 후보 리스트에 대한 엔트리들의 최대 개수 미만이다.
비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 3개 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 동일한 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 동일한 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 인코더 (20) 는 3개 이상의 이웃하는 블록들이 인트라 예측 모드를 이용하여 코딩되었는지를 결정할 수도 있다. 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩될 때, 비디오 인코더 (20) 는 이웃하는 블록을 인코딩하는데 사용되는 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 현재의 블록의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수평 블록 또는 수직 블록인지 여부, 또는 이웃하는 블록들의 그룹의 이웃하는 블록을 인코딩하는데 사용되는 예측 모드 중 3개 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수를 결정할 수도 있다. 비디오 인코더 (20) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 3개 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 로케이션들을 결정할 수도 있다.
비디오 인코더 (20) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들을 체크하는 순서를 결정할 수도 있다.
이웃하는 블록들의 그룹은 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 사용되는 이웃하는 블록들의 동일한 그룹에 대응할 수도 있다. 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 인코더 (20) 는 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 3개 이상의 이웃하는 블록들을 체크할 수도 있다.
MPM 후보 리스트에 추가된 3개 이상의 이웃하는 블록들로부터의 인트라 예측 모드들의 수가 임계 수를 초과하는 것에 응답하여, 비디오 인코더 (20) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료할 수도 있다. 임계 수는 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수 미만일 수도 있다. 임계 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스 플러스 오프셋을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 비디오 인코더 (20) 는 현재의 블록의 특성 또는 이웃하는 블록의 특성 중 하나 또는 양자에 기초하여 오프셋을 결정할 수도 있다.
이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 인코더 (20) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 인코더 (20) 는 유도된 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
MPM 후보 리스트에 추가된 유도된 인트라 예측 모드들의 수가 유도된 인트라 예측 모드들의 임계 수를 초과하는 것에 응답하여, 비디오 인코더 (20) 는 유도된 인트라 예측 모드들의 추가를 종료할 수도 있다. 유도된 인트라 예측 모드들의 임계 수 플러스 MPM 후보 리스트에 포함된 이웃-기반의 인트라 예측 모드들의 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 인코더 (20) 는 가용 이웃-기반의 인트라 예측 모드들 및 유도된 인트라 예측 모드들의 수가 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만인 것에 응답하여, 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가하기 위해, 비디오 인코더 (20) 는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수와 동일한 MPM 후보 리스트 내 인트라 예측 모드들의 수에 도달될 때까지 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 인코더 (20) 는 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드를 식별하는 정보를 발생시킬 수도 있다. 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드는 가장 가능성있는 모드일 수도 있거나 또는 비-가장 가능성있는 모드일 수도 있다. 실제 인트라 예측 모드가 가장 가능성있는 모드이면, 비디오 데이터의 현재의 블록을 인코딩하는데 사용되는 실제 인트라 예측 모드를 식별하는 정보는 MPM 후보 리스트에서의 인트라 예측 모드들 중 하나를 식별하는 컨텍스트 코딩된 인덱스 값을 포함할 수도 있으며, 비디오 인코더 (20) 는 본 개시물에서 설명되는 임의의 기법을 이용하여 또는 다른 기법들을 이용하여 컨텍스트 코딩된 인덱스 값을 인코딩할 수도 있다.
비디오 인코더 (20) 는 또한 현재의 블록에 대한 MPM 후보 리스트를 발생시키고, 현재의 블록을 인코딩하기 위한 실제 인트라 예측 모드를 결정하고, 실제 인트라 예측 모드가 가장 가능성있는 리스트에 포함된 인트라 예측 모드인 것에 응답하여, MPM 후보 리스트에 포함된 실제 인트라 예측 모드를 식별하는 인덱스 값을 컨텍스트 인코딩하도록 구성된 비디오 데이터를 인코딩하는 디바이스의 일 예를 나타낸다. MPM 후보 리스트에 포함된 실제 인트라 예측 모드를 식별하는 인덱스 값을 컨텍스트 인코딩하기 위해, 비디오 인코더 (20) 는 실제 인트라 예측 모드와 연관된 인덱스 값을 결정하고, 실제 인트라 예측 모드와 연관된 인덱스 값을 2진화하여 2진화된 코드워드를 결정하고, 2진화된 인덱스 값을 빈들에 맵핑하고, 그리고, 2진화된 코드워드와 연관된 각각의 빈을 컨텍스트 인코딩할 수도 있다.
2진화된 코드워드는 단항 코딩된 코드워드, 트렁케이트된 단항 코드워드, 고정된 2진 코드워드, Golomb 코딩된 코드워드, 지수 Golomb 코딩된 코드워드, 또는 Rice 코딩된 코드워드 중 하나일 수도 있다. 2진화된 코드워드의 각각의 빈은 MPM 후보 리스트에서의 가장 가능성있는 모드들 중 하나에 대응할 수도 있다.
비디오 인코더 (20) 는 각각의 빈에 대응하는 가장 가능성있는 모드의 분류에 기초하여 각각의 빈에 대한 컨텍스트를 결정할 수도 있다. 제 1 가장 가능성있는 모드에 대응하는 제 1 빈에 대해, 비디오 인코더 (20) 는 제 1 가장 가능성있는 모드가 수평 모드인지 여부, 제 1 가장 가능성있는 모드가 수직 모드인지 여부, 제 1 가장 가능성있는 모드가 대각선 모드인지 여부, 또는 제 1 가장 가능성있는 모드가 비-각도 모드인지 여부에 기초하여, 제 1 빈에 대한 컨텍스트를 결정할 수도 있다. 컨텍스트는 비-인트라 예측-관련된 신택스 엘리먼트들을 디코딩하는데 추가로 사용될 수도 있다. 현재의 블록에 대한 MPM 후보 리스트는 본 개시물에서 설명되는 임의의 기법 또는 다른 기법들을 이용하여 결정될 수도 있다.
도 6 은 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 디코더 (30) 를 예시하는 블록도이다. 도 6 의 예에서, 비디오 디코더 (30) 는 비디오 데이터 메모리 (79), 엔트로피 디코딩 유닛 (80), 예측 프로세싱 유닛 (81), 역양자화 유닛 (86), 역변환 프로세싱 유닛 (88), 합산기 (90), 및 DPB (92) 를 포함한다. 예측 프로세싱 유닛 (81) 은 인트라 BC 유닛 (85), 모션 보상 유닛 (82), 및 인트라 예측 프로세싱 유닛 (84) 을 포함한다. 비디오 디코더 (30) 는 일부 예들에서, 도 5 에서 비디오 인코더 (20) 와 관련하여 설명된 인코딩 과정과는 일반적으로 반대인 디코딩 과정을 수행할 수도 있다.
다양한 예들에서, 비디오 디코더 (30) 의 유닛은 본 개시물의 기법들을 수행하는 일을 부과받을 수도 있다. 또한, 일부 예들에서, 본 개시물의 기법들은 비디오 디코더 (30) 의 유닛들 중 하나 이상의 사이에 분할될 수도 있다. 예를 들어, 인트라 BC 유닛 (85) 은 본 개시물의 기법들을, 단독으로, 또는 모션 보상 유닛 (82), 인트라 예측 프로세싱 유닛 (84), 및 엔트로피 디코딩 유닛 (80) 과 같은, 비디오 디코더 (30) 의 다른 유닛들과 조합하여, 수행할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 인트라 BC 유닛 (85) 을 포함하지 않을 수도 있으며, 인트라 BC 유닛 (85) 의 기능은 모션 보상 유닛 (82) 과 같은, 예측 프로세싱 유닛 (81) 의 다른 컴포넌트들에 의해 수행될 수도 있다.
비디오 데이터 메모리 (79) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될, 인코딩된 비디오 비트스트림과 같은, 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (79) 에 저장된 비디오 데이터는 예를 들어, 저장 디바이스 (32) 로부터, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해서, 또는 물리적인 데이터 저장 매체들에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (79) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다. DPB (92) 는 비디오 디코더 (30) 에 의해 (예컨대, 인트라 또는 인터 예측 코딩 모드들로서 또한 지칭되는, 인트라 또는 인터 코딩 모드들에서) 비디오 데이터를 디코딩할 때에 이용을 위해 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리 (79) 및 DPB (92) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (79) 및 DPB (92) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (79) 는 비디오 디코더 (30) 의 다른 컴포넌트들과의 온-칩, 또는 그들 컴포넌트들에 대한 오프-칩일 수도 있다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관되는 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 비디오 인코더 (20) 로부터 수신한다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (80) 은 비트스트림을 엔트로피 디코딩하여, 양자화된 계수들, 모션 벡터들, 및 다른 신택스 엘리먼트들을 발생시킨다. 엔트로피 디코딩 유닛 (80) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 예측 프로세싱 유닛 (81) 으로 포워딩한다. 비디오 디코더 (30) 는 신택스 엘리먼트들을 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 수신할 수도 있다.
비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서, 또는 다른 유형들의 슬라이스들에서의 인트라 코딩된 블록들에 대해 코딩될 때, 예측 프로세싱 유닛 (81) 의 인트라 예측 프로세싱 유닛 (84) 은 시그널링된 인트라 예측 모드 및 현재의 프레임 또는 픽처의 이전에 디코딩된 블록들로부터의 데이터에 기초하여, 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 발생시킬 수도 있다. 인트라 예측 프로세싱 유닛 (84) 은 인트라 예측을 수행하기 위한 본 개시물의 기법들을 구현하도록 구성될 수도 있다. 좀더 구체적으로, 인트라 예측 프로세싱 유닛 (84) 은 본원에서 설명하는 MPM 후보 리스트 구성 기법들에 따라서 MPM 후보 리스트를 발생시키도록 구성될 수도 있다. 비디오 프레임이 인터 코딩된 (즉, B 또는 P) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛 (81) 의 모션 보상 유닛 (82) 은 엔트로피 디코딩 유닛 (80) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 블록들을 발생한다. 예측 블록들은 참조 픽처 리스트들 중 하나 내 참조 픽처들 중 하나로부터 발생될 수도 있다. 비디오 디코더 (30) 는 디폴트 구성 기법들을 이용하여, DPB (92) 에 저장된 참조 픽처들에 기초하여, 참조 프레임 리스트들, 즉, List 0 및 List 1 을 구성할 수도 있다.
다른 예들에서, 비디오 블록이 본원에서 설명되는 인트라 BC 모드에 따라서 코딩될 때, 예측 프로세싱 유닛 (81) 의 인트라 BC 유닛 (85) 은 엔트로피 디코딩 유닛 (80) 로부터 수신된 블록 벡터들 및 다른 신택스 엘리먼트들에 기초하여, 현재의 비디오 블록에 대한 예측 블록들을 발생시킨다. 예측 블록들은 비디오 인코더 (20) 에 의해 정의되고 DPB (92) 로부터 취출되는 현재의 비디오 블록과 동일한 픽처 내 복원된 영역 내에 있을 수도 있다.
모션 보상 유닛 (82) 및/또는 인트라 BC 유닛 (85) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 그리고, 그 예측 정보를 이용하여, 디코딩중인 현재의 비디오 블록에 대한 예측 블록들을 생성할 수도 있다. 예를 들어, 모션 보상 유닛 (82) 은 그 수신된 신택스 엘리먼트들 중 일부를 이용하여, 비디오 슬라이스의 비디오 블록들을 코딩하는 사용되는 예측 모드 (예컨대, 인트라 또는 인터 예측), 인터-예측 슬라이스 유형 (예컨대, B 슬라이스 또는 P 슬라이스), 슬라이스에 대한 참조 픽처 리스트들 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 다른 정보를 결정하여, 현재의 비디오 슬라이스에서의 비디오 블록들을 디코딩한다.
이와 유사하게, 인트라 BC 유닛 (85) 은 수신된 신택스 엘리먼트들 중 일부, 예컨대, 플래그를 이용하여, 인트라 BC 모드, 픽처의 어느 비디오 블록들이 복원된 영역 내에 있으며 DPB (92) 에 저장되어야 하는지를 표시하는 구성 정보, 슬라이스의 각각의 인트라 BC 예측된 비디오 블록에 대한 블록 벡터들, 슬라이스의 각각의 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측 상태, 및 다른 정보를 이용하여 현재의 비디오 블록이 예측되었다고 결정하여, 현재의 비디오 슬라이스에서 비디오 블록들을 디코딩할 수도 있다.
모션 보상 유닛 (82) 은 또한 내삽 필터들에 기초하여 내삽을 수행할 수도 있다. 모션 보상 유닛 (82) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것과 같은 내삽 필터들을 이용하여, 참조 블록들의 서브-정수 픽셀들에 대해 내삽된 값들을 계산할 수도 있다. 이 경우, 모션 보상 유닛 (82) 은 수신된 신택스 엘리먼트들로부터 비디오 인코더 (20) 에 의해 사용되는 내삽 필터들을 결정하고 그 내삽 필터들을 이용하여 예측 블록들을 발생할 수도 있다. 비디오 디코더 (30) 는 병합 모드 및/또는 AMVP 모드에서 코딩된 블록들을 디코딩하도록 구성될 수도 있으며, 이 경우, 예측 프로세싱 유닛 (81) 은 비디오 인코더 (20) 에 의해 어셈블리된 동일한 후보 리스트들을 어셈블리하도록 구성될 수도 있다. 예를 들어, 예측 프로세싱 유닛 (81) 은 또한 도 6 및 도 7 과 관련하여 위에서 설명된 기법들을 수행할 수도 있다.
역양자화 유닛 (86) 은 비트스트림으로 제공되어 엔트로피 디코딩 유닛 (80) 에 의해 디코딩되는 양자화된 변환 계수들을 역양자화한다, 즉 양자화 해제한다. 역양자화 프로세스는 양자화의 정도와, 마찬가지로, 적용되어야 하는 역양자화의 정도를 결정하기 위해, 비디오 슬라이스에서의 각각의 비디오 블록에 대해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터의 사용을 포함할 수도 있다. 역변환 프로세싱 유닛 (88) 은 픽셀 도메인에서 잔차 블록들을 발생하기 위해 역변환, 예컨대, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 변환 계수들에 적용한다.
모션 보상 유닛 (82) 또는 인트라 BC 유닛 (85) 이 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재의 비디오 블록에 대한 예측 블록을 발생시킨 후, 비디오 디코더 (30) 는 역변환 프로세싱 유닛 (88) 으로부터의 잔차 블록들을 모션 보상 유닛 (82) 및 인트라 BC 유닛 (85) 에 의해 발생된 대응하는 예측 블록들과 합산함으로써, 디코딩된 비디오 블록을 형성한다. 합산기 (90) 는 이러한 합산 동작을 수행하여 복원된 비디오 블록들을 발생시키는 컴포넌트 또는 컴포넌트들을 나타낸다.
합산기 (90) 는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 인-루프 필터 (미도시됨) 는 합산기 (90) 와 DPB (92) 사이에 위치될 수도 있다. 주어진 프레임 또는 픽처에서의 디코딩된 비디오 블록들은 그후 DPB (92) 에 저장되며, 이 메모리는 후속 모션 보상을 위해 사용되는 참조 픽처들을 저장한다. DPB (92), 또는 DPB (92) 와 분리된 메모리 디바이스가 또한 도 1 의 디스플레이 디바이스 (34) 와 같은 디스플레이 디바이스 상에의 추후 프리젠테이션을 위해, 디코딩된 비디오를 저장할 수도 있다.
비디오 디코더 (30) 는 비디오 데이터의 현재의 블록이 인트라 예측 모드에서 코딩된다고 결정하고; 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가하고; 제 2 이웃하는 블록에 대한 인트라 예측 모드를 MPM 후보 리스트에 추가하고; 제 3 이웃하는 블록에 대한 인트라 예측 모드를 가장 가능성있는 모드 리스트에 추가하고; 그리고, 인트라 예측을 이용하여 비디오 데이터의 현재의 블록을 디코딩하도록 구성된 비디오 데이터를 디코딩하는 디바이스의 일 예를 나타낸다. 제 1 이웃하는 블록, 제 2 이웃하는 블록, 및 제 3 이웃하는 블록은 좌측 블록, 상부 블록, 하부 블록, 우상부 블록, 또는 좌상부 블록 중 하나에 각각 대응할 수도 있다.
비디오 디코더 (30) 는 예를 들어, 이웃하는 블록들의 그룹을 고정된 순서로 체크하여, 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정하도록 구성될 수도 있다. 비디오 디코더 (30) 는 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 고정된 순서로 추가할 수도 있다. 비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 하나 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고 하나 이상의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 최대 개수는 MPM 후보 리스트에 대한 엔트리들의 최대 개수 미만일 수도 있다.
비디오 디코더 (30) 는 예를 들어, 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 하나 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 동일한 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있거나, 또는 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 동일한 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별할 수도 있다. 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 디코더 (30) 는 하나 이상의 이웃하는 블록들이 인트라 예측 모드를 이용하여 코딩되었는지를 결정할 수도 있다. 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩될 때, 비디오 디코더 (30) 는 이웃하는 블록을 인코딩하는데 사용되는 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수를 결정하기 위해, 비디오 디코더 (30) 는 현재의 블록의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수평 블록 또는 수직 블록인지 여부, 또는 이웃하는 블록들의 그룹의 이웃하는 블록을 인코딩하는데 사용되는 예측 모드 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 개수를 결정할 수도 있다. 비디오 디코더 (30) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 로케이션들을 결정할 수도 있다. 비디오 디코더 (30) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들을 체크하는 순서를 결정할 수도 있다.
이웃하는 블록들의 그룹은 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 사용되는 이웃하는 블록들의 동일한 그룹에 대응할 수도 있다. 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 디코더 (30) 는 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 하나 이상의 이웃하는 블록들을 체크할 수도 있다.
MPM 후보 리스트에 추가된 하나 이상의 이웃하는 블록들로부터의 인트라 예측 모드들의 수가 임계 수를 초과하는 것에 응답하여, 비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료할 수도 있다. 임계 수는 예를 들어, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수 미만일 수도 있다. 임계 수는 예를 들어, MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 디코더 (30) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드들을 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스 플러스 오프셋을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 제 1 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 1 유도된 인트라 예측 모드를 결정하고, 제 2 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 2 유도된 인트라 예측 모드를 결정하고, 그리고 제 1 유도된 인트라 예측 모드 및 제 2 유도된 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 제 1 오프셋을 제 1 이웃하는 블록의 인트라 예측 모드에 추가하여 제 1 유도된 인트라 예측 모드를 결정하고, 제 2 오프셋을 제 2 이웃하는 블록의 인트라 예측 모드에 추가하여 제 2 유도된 인트라 예측 모드를 결정하고, 그리고 제 1 유도된 인트라 예측 모드 및 제 2 유도된 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
비디오 디코더 (30) 는 현재의 블록의 특성 또는 이웃하는 블록의 특성 중 하나 또는 양자에 기초하여 오프셋을 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
MPM 후보 리스트에 추가된 유도된 인트라 예측 모드들의 수가 유도된 인트라 예측 모드들의 임계 수를 초과하는 것에 응답하여, 비디오 디코더 (30) 는 유도된 인트라 예측 모드들의 추가를 종료할 수도 있다. 유도된 인트라 예측 모드들의 임계 수, 플러스, MPM 후보 리스트에 포함된 이웃-기반의 인트라 예측 모드들의 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 디코더 (30) 는 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 디코더 (30) 는 가용 이웃-기반의 인트라 예측 모드들 및 유도된 인트라 예측 모드들의 수가 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만인 것에 응답하여, 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가하기 위해, 비디오 디코더 (30) 는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수와 동일한 MPM 후보 리스트 내 인트라 예측 모드들의 수에 도달될 때까지 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 디코더 (30) 는 하나 이상의 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하고, 그리고 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 디코더 (30) 는 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 디코더 (30) 는 하나 이상의 이웃-기반의 인트라 예측 모드들을 MPM 후보 리스트에 추가하고, 그리고 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 디코더 (30) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 이웃-기반의 인트라 예측 모드들의 모두를 MPM 후보 리스트에 추가한 후, 비디오 디코더 (30) 는 하나 이상의 디폴트 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다.
제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가한 후, 비디오 디코더 (30) 는 제 1 유도된 후보를 MPM 후보 리스트에 추가할 수도 있으며, 그리고, 제 1 유도된 후보를 MPM 후보 리스트에 추가한 후, 제 2 이웃하는 블록에 대한 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
일부의 경우, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 MPM 후보 리스트로부터의 인트라 예측 모드를 이용할 수도 있다. 다른 경우, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 비-가장 가능성있는 모드인 인트라 예측 모드를 이용할 수도 있다. 일부의 경우, 비디오 디코더 (30) 는 MPM 후보 리스트에서의 인트라 예측 모드들 중 하나를 식별하는 컨텍스트 코딩된 인덱스 값을 수신하고, 그리고, 컨텍스트 코딩된 인덱스 값을 본 개시물에서 설명된 기법들 또는 다른 기법들을 이용하여 디코딩할 수도 있다.
비디오 디코더 (30) 는 또한 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 현재의 블록에 대한 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하고 인트라 예측 모드를 이용하여 현재의 블록을 디코딩하도록 구성된 비디오 데이터를 디코딩하는 디바이스의 일 예를 나타낸다. 비디오 디코더 (30) 는 이웃하는 블록들의 그룹을 고정된 순서로 체크하여 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정할 수도 있다. 비디오 디코더 (30) 는 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 고정된 순서로 추가할 수도 있다.
비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 3개 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정할 수도 있다. 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 최대 개수는 MPM 후보 리스트에 대한 엔트리들의 최대 개수 미만일 수도 있다. 비디오 디코더 (30) 는 3개 이상의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다.
비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 3개 이상의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고, 그리고 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 동일한 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 동일한 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 디코더 (30) 는 3개 이상의 이웃하는 블록들이 인트라 예측 모드를 이용하여 코딩되었는지를 결정할 수도 있다. 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩될 때, 비디오 디코더 (30) 는 이웃하는 블록을 인코딩하는데 사용되는 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
비디오 디코더 (30) 는 현재의 블록의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수평 블록 또는 수직 블록인지 여부, 또는 이웃하는 블록들의 그룹의 이웃하는 블록을 인코딩하는데 사용되는 예측 모드 중 3개 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수를 결정할 수도 있다. 비디오 디코더 (30) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 3개 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 로케이션들을 결정할 수도 있다. 비디오 디코더 (30) 는 현재의 블록 사이즈의 사이즈, 현재의 블록이 정사각형 블록 또는 직사각형의 블록인지 여부, 현재의 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부, 이웃 블록의 사이즈, 이웃 블록이 정사각형 블록 또는 직사각형 블록인지 여부, 또는 이웃 블록이 수직으로 지향되는지 또는 수평으로 지향되는지 여부 중 하나 이상에 기초하여, 이웃하는 블록들의 그룹에서의 이웃하는 블록들을 체크하는 순서를 결정할 수도 있다.
이웃하는 블록들의 그룹은 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 사용되는 이웃하는 블록들의 동일한 그룹일 수도 있다. 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 체크하여 MPM 후보 리스트에 추가할 인트라 예측 모드들을 식별하기 위해, 비디오 디코더 (30) 는 AMVP 모드 또는 병합 모드 중 하나 또는 양자에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 3개 이상의 이웃하는 블록들을 체크할 수도 있다.
MPM 후보 리스트에 추가된 3개 이상의 이웃하는 블록들로부터의 인트라 예측 모드들의 수가 임계 수를 초과하는 것에 응답하여, 비디오 디코더 (30) 는 이웃하는 블록들의 그룹의 3개 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료할 수도 있다. 임계 수는 이웃하는 블록들의 그룹에서의 이웃하는 블록들의 수 미만일 수도 있다. 임계 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 디코더 (30) 는 하나 이상의 유도된 인트라 예측 모드들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스 플러스 오프셋을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 비디오 디코더 (30) 는 현재의 블록의 특성 또는 이웃하는 블록의 특성 중 하나 또는 양자에 기초하여 오프셋을 결정할 수도 있다.
이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 큰 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 1 을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 이웃하는 블록의 인트라 예측 모드에 기초하여 3개 이상의 유도된 인트라 예측 모드를 결정하기 위해, 비디오 디코더 (30) 는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스보다 작은 모드 인덱스 2 를 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다.
2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시킬 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 제 2 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다. 유도된 인트라 예측 모드의 오직 하나의 인스턴스를 MPM 후보 리스트에 포함시키기 위해, 비디오 디코더 (30) 는 유도된 인트라 예측 모드의 인스턴스를 MPM 후보 리스트로부터 제거할 수도 있다.
MPM 후보 리스트에 추가된 유도된 인트라 예측 모드들의 수가 유도된 인트라 예측 모드들의 임계 수를 초과하는 것에 응답하여, 비디오 디코더 (30) 는 유도된 인트라 예측 모드들의 추가를 종료할 수도 있다. 유도된 인트라 예측 모드들의 임계 수, 플러스, MPM 후보 리스트에 포함된 이웃-기반의 인트라 예측 모드들의 수는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만일 수도 있다.
비디오 디코더 (30) 는 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 비디오 디코더 (30) 는 가용 이웃-기반의 인트라 예측 모드들 및 유도된 인트라 예측 모드들의 수가 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수 미만인 것에 응답하여, 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다. 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가하기 위해, 비디오 디코더 (30) 는 MPM 후보 리스트에 포함된 인트라 예측 모드들의 최대 개수와 동일한 MPM 후보 리스트 내 인트라 예측 모드들의 수에 도달될 때까지 하나 이상의 디폴트 후보들을 MPM 후보 리스트에 추가할 수도 있다.
일부의 경우, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 비-가장 가능성있는 모드인 인트라 예측 모드를 이용할 수도 있다. 일부의 경우, 비디오 디코더 (30) 는 MPM 후보 리스트에서의 인트라 예측 모드들 중 하나를 식별하는 컨텍스트 코딩된 인덱스 값을 수신하고, 그리고, 디코딩 컨텍스트 코딩된 인덱스 값을 본 개시물에서 설명되는 임의의 기법 또는 상이한 기법을 이용하여 디코딩할 수도 있다.
비디오 디코더 (30) 는 또한 현재의 블록에 대한 MPM 후보 리스트를 발생시키고, MPM 후보 리스트에 포함된 인트라 예측 모드를 식별하는 컨텍스트 코딩된 인덱스 값을 수신하고, 컨텍스트 코딩된 인덱스 값을 디코딩하기 위한 컨텍스트를 결정하고, 그리고, 결정된 컨텍스트를 이용하여 컨텍스트 코딩된 인덱스 값을 컨텍스트 디코딩하여 인트라 예측 모드를 결정하도록 구성된 비디오 데이터를 디코딩하는 디바이스의 일 예를 나타낸다. MPM 후보 리스트는 본 개시물에서 설명하는 기법들 중 임의의 기법들을 이용하여 및/또는 본 개시물에서 설명되지 않은 다른 기법들을 이용하여 구성될 수도 있다. 결정된 컨텍스트 값에 기초하여, 비디오 디코더 (30) 는 컨텍스트 코딩된 인덱스 값을 빈들에 맵핑하여, 인덱스 값을 포함하고 MPM 후보 리스트로부터의 인트라 예측 모드에 대응하는 2진화된 코드워드를 결정할 수도 있다.
2진화된 코드워드는 단항 코딩된 코드워드, 트렁케이트된 단항 코드워드, 고정된 2진 코드워드, Golomb 코딩된 코드워드, 및 지수 Golomb 코딩된 코드워드, 또는 Golomb-Rice 코딩된 코드워드 중 임의의 코드워드일 수도 있다. 2진화된 코드워드의 각각의 빈은 컨텍스트 코딩될 수도 있다. 2진화된 코드워드의 각각의 빈은 MPM 후보 리스트에서의 가장 가능성있는 모드들 중 하나에 대응할 수도 있다.
비디오 디코더 (30) 는 각각의 빈에 대응하는 가장 가능성있는 모드의 분류에 기초하여 각각의 빈에 대한 컨텍스트를 결정할 수도 있다. 제 1 가장 가능성있는 모드에 대응하는 제 1 빈에 대해, 비디오 디코더 (30) 는 제 1 가장 가능성있는 모드가 수평 모드인지 여부, 제 1 가장 가능성있는 모드가 수직 모드인지 여부, 제 1 가장 가능성있는 모드가 대각선 모드인지 여부, 또는 제 1 가장 가능성있는 모드가 비-각도 모드인지 여부에 기초하여, 제 1 빈에 대한 컨텍스트를 결정할 수도 있다. 컨텍스트는 비-인트라 예측-관련된 신택스 엘리먼트들을 디코딩하는데 추가로 사용될 수도 있다.
도 7a 및 도 7b 는 빈 n 에서의 CABAC 프로세스의 예들을 나타낸다. 도 7a 의 예 (100) 에서, 빈 n 에서, 빈 2 에서의 범위는 어떤 컨텍스트 상태 (σ) 가 주어지면 LPS (pσ) 의 확률로 주어지는 RangeMPS 및 RangeLPS 를 포함한다. 예 (100) 은 빈 n 의 값이 MPS 와 동일할 때 빈 n+1 에서의 범위의 업데이트를 나타낸다. 이 예에서, 로우는 동일하게 유지하지만, 빈 n+1 에서의 범위의 값은 빈 n 에서 RangeMPS 의 값까지 감소된다. 도 7b 의 예 (102) 는 빈 n 의 값이 MPS 와 동일하지 않을 때 (즉, LPS 와 동일할 때) 빈 n+1 에서의 범위의 업데이트를 나타낸다. 이 예에서, 로우는 빈 n 에서 RangeLPS 의 하부 범위 값으로 이동된다. 게다가, 빈 n+1 에서의 범위의 값은 빈 n 에서 RangeLPS 의 값까지 감소된다.
HEVC 비디오 코딩 프로세스의 일 예에서, 범위는 9 비트들로 표현되고, 로우 (low) 는 10 비트들로 표현된다. 범위 및 로우 값들을 충분한 정밀도에서 유지하는 재정규화 프로세스가 있다. 범위가 256 미만일 때는 언제나 재정규화가 일어난다. 따라서, 재정규화 이후 범위는 256 과 항상 동일하거나 또는 그보다 더 크다. 범위 및 로우의 값들에 의존하여, BAC 는 비트스트림으로, '0', 또는 '1' 을 출력하거나, 또는 미래의 출력들용으로 유지하기 위해 (BO: 비트들-아웃스탠딩 (outstanding) 으로 불리는) 내부 변수를 업데이트한다. 도 8 은 범위에 따른 BAC 출력의 예들을 나타낸다. 예를 들어, '1' 은 범위 및 로우가 어떤 임계치 (예컨대, 512) 보다 높을 때 비트스트림으로 출력된다. '0' 은 범위 및 로우가 어떤 임계치 (예컨대, 512) 보다 낮을 때 비트스트림으로 출력된다. 범위 및 로우가 어떤 임계치들 사이일 때 어떤 것도 비트스트림으로 출력되지 않는다. 대신, BO 값이 증분되며 다음 빈이 인코딩된다.
H.264/AVC 의 CABAC 컨텍스트 모델에서, 그리고, HEVC 의 일부 예들에서, 128 개의 상태들이 존재한다. 0 내지 63 일 수 있는 64 개의 가능한 LPS 확률들 (상태 σ 로 표시됨) 이 존재한다. 각각의 MPS 는 제로 또는 1 일 수 있다. 이와 같이, 128 개의 상태들은 64 개의 상태 확률들 곱하기 MPS 에 대한 2 개의 가능한 값들 (0 또는 1) 이다. 따라서, 상태는 7 비트들로 인덱스될 수 있다.
LPS 범위들 (rangeLPSσ) 을 유도하는 계산을 감소시키기 위해, 모든 경우들에 대한 결과들이 사전-계산되어 HEVC 에서 및 HEVC 에 대한 일부 제안들에서 룩업 테이블에 근사치로서 저장된다. 따라서, LPS 범위가 간단한 테이블 룩업을 이용함으로써 어떤 곱셈없이 얻어질 수 있다. 곱셈을 피하는 것이, 이 동작이 다수의 하드웨어 아키텍쳐들에서 상당한 레이턴시를 초래할 수도 있기 때문에, 일부 디바이스들 또는 애플리케이션들에 있어 중요할 수 있다.
4-칼럼 사전-계산된 LPS 범위 테이블이 곱셈 대신 사용될 수도 있다. 범위는 4개의 세그먼트들로 분할된다. 세그먼트 인덱스는 질문 (범위>>6)&3 에 의해 유도될 수 있다. 실제로, 세그먼트 인덱스는 실제 범위로부터 비트들을 시프트하거나 또는 제거함으로써 유도된다. 다음 테이블 1 은 가능한 범위들 및 그들의 대응하는 인덱스들을 나타낸다.
테이블 1 - 범위 인덱스
LPS 범위 테이블은 따라서 64 개의 엔트리들 (각각의 확률 상태에 대해 하나씩) 곱하기 4 (각각의 범위 인덱스에 대해 하나씩) 를 갖는다. 각각의 엔트리는 범위 LPS, 즉, 범위에 LPS 확률을 곱한 값이다. 이 테이블의 부분의 일 예가 다음 테이블 2 에 도시된다. 테이블 2 는 확률 상태들 9-12 를 나타낸다. HEVC 에 대한 하나의 제안에서, 확률 상태들은 0-63 의 범위일 수도 있다.
테이블 2 - RangeLPS
각각의 세그먼트 (즉, 범위 값) 에서, 각각의 확률 상태σ 의 LPS 범위가 사전-정의된다. 다시 말해서, 확률 상태σ 의 LPS 범위가 4개의 값들 (즉, 각각의 범위 인덱스에 대해 하나의 값) 로 양자화된다. 주어진 지점에서 사용되는 특정의 LPS 범위는 그 범위가 속한 세그먼트에 의존한다. 테이블에서 사용된 가능한 LPS 범위들의 개수는 테이블 칼럼들의 개수 (즉, 가능한 LPS 범위 값들의 개수) 와 LPS 범위 정밀도 사이의 상충관계이다. 일반적으로 말하면, 더 많은 칼럼들은 LPS 범위 값들의 더 작은 양자화 에러들을 초래할 뿐만 아니라, 테이블을 저장하는데 더 많은 메모리에 대한 요구를 증가시킨다. 더 적은 칼럼들은 양자화 에러들을 증가시킬 뿐만 아니라, 테이블을 저장하는데 요구되는 메모리를 감소시킨다.
위에서 설명한 바와 같이, 각각의 LPS 확률 상태는 대응하는 확률을 갖는다. 각각의 상태에 대한 확률은 다음과 같이 유도된다:
여기서, 상태 σ 는 0 내지 63 이다. 상수 α 는 각각의 컨텍스트 상태 사이의 확률 변화의 양을 나타낸다. 일 예에서, α=0.9493 이거나, 또는, 더 정확하게, α=(0.01875/0.5)1/63 이다. 상태 σ = 0 에서의 확률은 0.5 (즉, p0=1/2) 와 동일하다. 즉, 컨텍스트 상태 0 에서, LPS 및 MPS 는 동일하게 발생가능하다. 각각의 연속적인 상태에서의 확률은 이전 상태에 α 만큼 곱함으로써 유도된다. 이와 같이, LPS 가 컨텍스트 상태 α = 1 에서 발생할 확률은 p0 * 0.9493 (0.5 * 0.9493 =.47465) 이다. 이와 같이, 상태 α 의 인덱스가 증가함에 따라, LPS 가 발생할 확률은 낮아진다.
CABAC 는 확률 상태들이 신호 통계들 (즉, 이전에 코딩된 빈들의 값들) 을 따르기 위해 업데이트되기 때문에 적응적이다. 업데이트 프로세스는 다음과 같다. 주어진 확률 상태에 대해, 업데이트는 상태 인덱스 및 LPS 또는 MPS 로서 식별되는 인코딩된 심볼의 값에 의존한다. 업데이팅 프로세스의 결과로서, 잠재적으로 수정된 LPS 확률 추정, 그리고, 필요한 경우, 수정된 MPS 값으로 이루어지는, 새로운 확률 상태가 유도된다.
MPS 와 동일한 빈 (bin) 값의 경우에, 주어진 상태 인덱스가 간단히 1 만큼 증분될 수도 있다. 이것은 MPS 가 상태 인덱스 62 에서 발생하는 경우를 제외한 모든 상태들에 대한 것이며, 여기서, LPS 확률은 이미 그 최소치에 있다 (또는, 동등하게, 최대 MPS 확률에 도달된다). 이 경우, 상태 인덱스는 LPS 가 보여질 때까지 고정되어 유지되거나, 또는 최종 빈 값이 인코딩된다 (상태 63 이 최종 빈 값의 특수한 경우에 대해 사용된다). LPS 가 발생할 때, 상태 인덱스는 아래 수식에서 나타낸 바와 같이, 어떤 양 만큼 상태 인덱스를 감분시킴으로써 변경된다. 이 규칙은 다음 예외와 함께, LPS 의 각각의 발생에 일반적으로 적용된다. LPS 가 같은 정도의 가능성 있는 (equi-probable) 경우에 대응하는, 인덱스 σ=0 을 갖는 상태에서 인코딩되었다고 가정하면, 상태 인덱스는 고정된 채로 유지되지만, MPS 값은 LPS 와 MPS 의 값이 상호교환되도록 토글될 것이다. 모든 다른 경우들에서, 어떤 심볼이 인코딩되더라도, MPS 값은 변경되지 않을 것이다. LPS 확률에 대한 전이 규칙들의 유도는 주어진 LPS 확률 pold 와 그의 업데이트된 대응물 pnew 사이의 다음 관계에 기초한다:
MPS 가 발생하는 경우
LPS 가 발생하는 경우
CABAC 에서의 확률 추정 프로세스의 실제 구현과 관련하여, 모든 전이 규칙들이 6-비트 무부호 정수 값들의 63 개의 엔트리들을 각각 가지는 많아 봐야 2개의 테이블들에 의해 실현될 수도 있다는 점에 유의하는 것이 중요하다. 일부 예들에서, LPS 가 관찰된 경우에, 주어진 상태 인덱스 σ 에 대해, 새로운 업데이트된 상태 인덱스 TransIdxLPS [σ] 를 결정하는, 단일 테이블 TransIdxLPS 로 상태 전이들이 결정될 수도 있다. MPS-기반 (driven) 전이들이 1 의 고정된 값 만큼의 상태 인덱스의 간단한 (포화된) 증분에 의해 획득되어, 업데이트된 상태 인덱스 min( σ+1, 62) 가 초래될 수 있다. 아래 테이블 3 은 부분 TransIdxLPS 테이블의 일 예이다.
테이블 3 - TransIdxLPS
이전 BAC 접근법들 (예컨대, H.264/AVC 에서 사용되는 BAC 접근법) 에서의 하나의 문제는 테이블들 RangeLPS 및 TransIdxLPS 가 저 해상도 비디오들 (즉, 공통 중간 포맷 (CIF) 및 1/4-CIF (QCIF) 비디오들) 용으로 조정된다는 점이다. 현재, 대용량의 비디오 콘텐츠는 고선명 (HD) 이며, 일부의 경우, HD 보다 크다. HD 이거나 또는 HD 해상도보다 큰 비디오 콘텐츠는 H.264/AVC 를 개발하는데 사용되는 10년된 QCIF 시퀀스들과는 상이한 통계치들을 갖는다.
이와 같이, H.264/AVC 로부터의 테이블들 RangeLPS 및 TransIdxLPS 는 너무 빠른 방법으로 상태들 사이에 적응을 초래할 수도 있다. 즉, 확률 상태들 사이의 전이들이, 특히 LPS 가 발생할 때, HD 비디오의 더 평활하고 더 높은 해상도 콘텐츠에 대해 너무 커질 수 있다. 따라서, 종래의 기법들에 따라서 사용되는 확률 모델들은 HD 및 엑스트라 (extra)-HD 콘텐츠에 대해 정확하지 않다. 게다가, HD 비디오 콘텐츠가 더 큰 범위의 픽셀 값들을 포함하기 때문에, H.264/AVC 테이블들은 HD 콘텐츠에 존재할 수도 있는 더 극단적인 값들 (more extreme values) 을 이용하기에 충분한 엔트리들을 포함하지 않는다.
이와 같이, 이 새로운 콘텐츠의 특성들을 이용하기 위해서는, RangeLPS 및 TransIdxLPS 테이블들이 수정될 필요가 있다. 이것은 또한 BAC 가 적어도 2개의 양태들에서 상이해야 한다는 것을 암시한다. 하나의 차이는 BAC 프로세스들이 더 느린 적응 프로세스를 가능하게 하는 테이블들을 이용해야 한다는 점이다. 다른 차이는 BAC 프로세스들이 더욱 극단적인 경우들 (즉, 왜곡된 (skewed) 확률들) 을 이용해야 한다는 점이다.
현재의 RangeLPS 및 TransIdxLPS 테이블들은 더 많은 확률 상태들 및 범위들을 간단히 포함시킴으로써 이들 목표들을 달성하도록 수정될 수 있다. 그러나, 이러한 솔루션은 테이블들의 사이즈들에서 상당한 증가를 초래한다. 더 느린 적응은 현재 사용되는 파라미터 α (예컨대, α=0.9493) 보다 1 에 더 가까운 파라미터 α 를 이용함으로써 달성될 수 있다. 그러나, 더 큰 α 의 값을 이용하는 것은 확률들이 더욱 느리게 0 이 되게 하며, 이에 따라서, 더 많은 상태들이 요구된다. 게다가, 더 느린 적응을 달성하기 위해, 최저 가능한 확률이 현재 사용되는 최저 확률보다 휠씬 낮으면 유익할 수도 있다. 이와 같이, 심지어, 그렇게 매우 낮은 확률 값에 도달하기 위해서는, 더 많은 상태들이 요구될 수도 있다.
전술한 문제들을 감안하여, 본 개시물은 테이블 사이즈들 (예컨대, RangeLPS 및 TransIdxLPS 테이블들) 을 실현가능한 레벨에서 유지하면서 더 느린 적응 및 더욱 왜곡된 확률들을 얻도록 BAC 를 수정하는 기법들을 제안한다. 다시 말해서, 본 개시물은 상대적으로 작은-사이즈의 테이블들을 이용하면서 더 느린 적응 및 더욱 극단적인 확률들 (즉, 0 및 1 에 가까운 확률들) 을 달성하는 기법들을 기술한다.
본 개시물에서 설명하는 기법들은 더 많은 확률 상태들, 예컨대, H.264/AVC 또는 HEVC 에 의한 BAC 에서 사용되는 더 많은 확률 상태들을 이용할 수도 있다. 이 경우, TransIdxLPS 테이블은 더 느린 적응 및 더 낮은 확률들을 획득할 수 있다. 일 예에서, 본 개시물에서 설명하는 기법들은 64 개 대신, 128 개의 확률 상태들을 이용할 수도 있다. 이것은 테이블 TransIdxLPS 를 64 개의 엔트리들을 증가시킨다 (즉, 64 개 대신 128 개의 엔트리들). 이러한 증가는 더 느린 적응 및 더 낮은 최소 확률을 가능하게 한다. 일 예로서, 파라미터 α = 0.9689 로 설정함으로써, 인접한 확률들 사이의 차이들이 더 작아진다. 추가적으로, 최저 최소 확률이 대략 H.264/AVC 경우의 절반 (즉, 0.01875) 인, 0.009 까지 내려간다. 다른 개수의 상태들 및 α 값들이 또한 가능하지만, 일반적으로, 상태들의 개수는 증가될 수도 있으며 α 의 값은 α=0.9493 의 H.264/AVC 경우보다 1 에 더 가까울 수도 있다.
HD 또는 엑스트라-HD 코딩을 향상시키기 위해 수정될 수도 있는 다른 파라미터는 파라미터 p0 이다. p0 의 값은 일반적으로 LPS 에 대한 최대 확률을 표시한다. 이러한 가능성을 고려하는 이유는 더 낮은 p0 를 가지면 최소 확률도 또한 감소한다는 것을 의미한다는 것이다. p0 의 값은 종래의 BAC 프로세스에서 0.5 로 설정된다. 본 개시물은 p0 에 대해 다른 값들을 허용할 것을 제안한다. 0.5 보다 더 낮은 다른 p0 의 값들을 가지는 것은 MPS/LPS 스왑 (swap) 이 발생할 때 상태 0 에서 더 평활한 전이들을 가능하게 한다. 일 예에서, p0 는 0.493 과 동일할 수도 있지만, 많은 다른 예들이 또한 사용될 수 있다.
대개, 각각의 확률 상태는 RangeLPS 테이블에서 그 자신의 엔트리를 갖는다. 테이블 사이즈는 다음과 같이 표현될 수도 있다:
# 확률 상태들 × # 양자화된 범위 인덱스들
이는, HEVC 에 대한 일부 제안들에서 64×4 = 256 바이트들이다. 본 개시물의 예들에서 상태들의 개수가 증가하므로 (상기 예에서는 2배가됨), RangeLPS 테이블 사이즈는 128×4 = 512 바이트들일 수도 있다. RangeLPS 테이블 사이즈에서 이러한 증가를 피하기 위해, 그러나, 본 개시물은 RangeLPS 사이즈를 인덱싱하기 위해 확률 상태들 인덱스들을 더 작은 사이즈 (즉, 수 개의 인덱스들) 에 맵핑하는 것을 또한 제한한다. 다시 말해서, 본 개시물은 범위 계산 프로세스로부터 상태 전이 프로세스를 분리하는 것을 제안한다. 이것은 현재의 예에서, 상태들 대 범위 계산을 위한 맵이 존재한다는 것을 의미한다. 하나의 구체적인 예에서, 본 개시물은 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 결정된 확률 상태를 표시하는 인덱스를 복수의 그룹화된 인덱스들 중 하나 (예컨대, RangeLPS 테이블에 대한 그룹화된 인덱스) 에 맵핑하도록 구성되는 프로세스를 제안하며, 그룹화된 인덱스들 중 적어도 하나는 복수의 확률 상태들 중 적어도 2개를 나타낸다. 이와 같이, RangeLPS 테이블 (또는, 다른 BAC 테이블들) 은 존재하는 확률 상태들보다 더 적은 인덱스들을 이용할 수도 있다.
본 개시물의 일 예에서, 확률 상태 개수는 RangeLPS 테이블에 대한 엔트리로서 사용할 새로운 인덱스를 생성하기 위해 2 로 나누어질 수도 있다. 이 경우, 128 개의 확률 상태들은 64 개의 엔트리들로 감소된다. 그 결과, RangeLPS 테이블은 H.264/AVC 에서 사용되는 바와 같이 현재의 사이즈를 유지할 수 있다. 따라서, 범위 LPS 테이블에서의 엔트리를 인덱싱하는데 확률 상태 σ 를 이용하는 대신, 본 개시물에서 설명된 기법들은 (σ>>1) 를 채용하며, 즉, 상태 σ 는 RangeLPS 테이블에의 그룹화된 인덱스로서의 사용을 위해 2로 나누고 더 낮은 정수로 반올림된다. 나누기는, 주어진 구현에 있어서 RangeLPS 테이블이 더 작기를 원하는 경우, 또는 상태들의 개수가 더 큰 경우 (예컨대, 256 개의 확률 상태들) 더 큰 개수에 의할 수 있다. 이 상황에서, 각각의 그룹화된 인덱스는 2개의 확률 상태들을 나타낸다. 본 개시물의 다른 예들에서, 그룹화된 인덱스들은 2개 이상의 확률 상태들을 나타낼 수도 있다.
최적의 엔트로피 관점으로부터, 나누기 또는 우측 비트-시프트 동작을 이용하는 것에 의한 RangeLPS 테이블에 대한 상태들의 그룹화가 유익할 수도 있지만, 항상 최적의 기법이 아닐 수도 있다. 최적의 그룹화는 특히, 상태들의 개수 및 파라미터 α 를 포함한, 다양한 인자들에 의존할 수도 있다. 가장 바람직한 (가능한 한, 최적의) 그룹화는 비트-시프트 동작과 같이 간단한 동작이 아닐 수도 있다. 일반적으로, 그룹화는 확률 상태들의 총 개수로부터 감소된 확률 상태 (즉, 그룹화된 상태들) 의 개수로 진행하는 테이블로 기술될 수 있다. 다른 예에서, 본 개시물은 이러한 종류의 테이블을 이용하는 것을 제안한다. 이 접근법은 추가적인 메모리의 비용으로, (나누기 또는 우측 시프팅과 비교하여) 성능을 향상시킬 것이다. 이와 같이, 이 예는 선형 맵핑 예 (즉, 나누기 또는 우측 시프팅) 에 비해 더 나은 성능을 선호하는, 메모리와 성능 사이의 절충안이다.
따라서, RangeLPS 테이블 내 엔트리들에의 확률 상태들의 선형 맵핑이 사용될 수도 있지만, 비선형 맵핑을 제공하는 것이 바람직할 수도 있다. 예를 들어, 확률 상태들은 로그 맵핑에 따라서 맵핑될 수도 있다. 로그 맵핑은 일부 예들에서, 구분적 선형 맵핑 기법들을 이용하여, 달성될 수도 있다. 일반적으로, 이러한 맵핑은 미리 계산된 맵핑 테이블과 같은, 테이블을 이용하여 정의될 수도 있다.
일반적으로, 본 개시물에서 설명하는 기법들은 일부 예들에서, 비디오 데이터를 엔트로피 코딩하는 방법 또는 디바이스에 의해 수행될 수도 있다. 본 방법은 2진 산술 코딩 프로세스에서 심볼들의 확률 상태를 결정하는 단계로서, 확률 상태는 복수의 확률 상태들 중 하나를 포함하는, 상기 결정하는 단계; 및 결정된 확률 상태를 표시하는 인덱스를 복수의 그룹화된 인덱스들 중 하나에 맵핑하는 단계로서, 그룹화된 인덱스들 중 적어도 하나는 복수의 확률 상태들 중 적어도 2개를 나타내고, 그룹화된 인덱스들의 각각은 테이블에서의 최저 확률 심볼에 대한 범위를 지시하는, 상기 맵핑하는 단계를 포함할 수도 있다.
일부 예들에서, 확률 상태들의 개수는 64 개보다 더 클 수도 있다. 예를 들어, 확률 상태들의 개수는 128 개일 수도 있다. 일부 예들에서, RangeLPS 테이블에의 입력으로서 사용되는 그룹화된 인덱스들의 개수는 64 개이다. 특히, 확률 상태들의 개수는 128 개일 수도 있으며, RangeLPS 테이블에의 입력으로서 사용되는 그룹화된 인덱스들의 개수는 64 개일 수도 있다. 심볼은 그룹화된 인덱스들에 기초하여, 예컨대, 확률 상태 인덱스에 기초한 테이블에 따라서, 또는 인덱스에 기초한 수학적 연산에 따라서, 코딩될 수도 있다. 결정된 확률 상태는 복수의 인덱스들 중 하나를 테이블에 따라서, 또는 수학적 연산에 따라서 맵핑한다. 맵핑은 선형 또는 비선형일 수도 있다. 예를 들어, 맵핑은 2로 나누기 연산에 따라서 수행될 수도 있다. 일부 예들에서, 맵핑은 로그 맵핑일 수도 있다. 일부 예들에서, 구분적 선형 맵핑이 로그 맵핑을 정의하는데 사용될 수도 있다. 일부 예들에서, LPS 에 대한 최대 확률의 값 p0 은 0.5 미만일 수도 있다.
본 개시물에서 설명하는 기법들은 예를 들어, 비디오 인코더, 비디오 디코더, 또는 결합된 비디오 인코더-디코더 (코덱) 내에서 수행될 수도 있다. 특히, 이러한 기법들은 비디오 인코더의 엔트로피 인코딩 유닛 및/또는 비디오 디코더의 엔트로피 디코딩 유닛에서 수행될 수도 있다. 이 기법들은 예를 들어, HEVC 표준의 양태들에 따른 비디오 코딩과 같은, 비디오 코딩을 지원하도록 구성될 수도 있는 CABAC 프로세스 내에서, 수행될 수도 있다. 엔트로피 인코딩 및 디코딩 유닛들은 예컨대, 잔차 비디오 데이터와 연관된 양자화된 변환 계수들, 모션 벡터 정보, 신택스 엘리먼트들, 및 비디오 인코딩 및/또는 비디오 디코딩 프로세스에서 유용할 수도 있는 다른 유형들의 정보와 같은, 다양한 비디오 데이터 중 임의의 것을 인코딩하거나 또는 디코딩하기 위해, 코딩 프로세스들을 반대로 또는 역으로 적용할 수도 있다.
도 9 는 본 개시물의 기법들에 따른, CABAC 를 수행하도록 구성될 수도 있는 예시적인 엔트로피 인코딩 유닛 (56) 의 블록도이다. 신택스 엘리먼트 (118) 가 엔트로피 인코딩 유닛 (56) 으로 입력된다. 신택스 엘리먼트가 이미 2진-값 신택스 엘리먼트 (즉, 오직 0 및 1 의 값만을 가지는 신택스 엘리먼트) 이면, 2진화의 단계는 스킵될 수도 있다. 신택스 엘리먼트가 비-2진 값 신택스 엘리먼트 (예컨대, 변환 계수 레벨들과 같은, 다중 비트들로 표현되는 신택스 엘리먼트) 이면, 비-2진 값 신택스 엘리먼트는 2진화기 (120) 에 의해 2진화된다. 2진화기 (120) 는 2진 결정들의 시퀀스로의 비-2진 값 신택스 엘리먼트의 맵핑을 수행한다. 이들 2진 결정들은 종종 "빈들" 로 불린다. 예를 들어, 변환 계수 레벨들에 대해, 레벨의 값은 연속적인 빈들로 분할될 수도 있으며, 각각의 빈은 계수 레벨의 절대값이 어떤 값보다 큰지 여부를 표시한다. 예를 들어, 빈 0 (종종, 유의도 플래그라 함) 은 변환 계수의 절대값 레벨이 0 보다 큰지 아닌지를 표시한다. 빈 1 은 변환 계수의 절대값 레벨이 1 보다 큰지 아닌지 등을 표시한다. 고유한 맵핑이 각각의 비-2진 값 신택스 엘리먼트에 대해 전개될 수도 있다.
2진화기 (120) 에 의해 발생되는 각각의 빈이 엔트로피 인코딩 유닛 (56) 의 2진 산술 코딩 측으로 공급된다. 즉, 비-2진 값 신택스 엘리먼트들의 미리 결정된 세트에 대해, 각각의 빈 유형 (예컨대, 빈 0) 이 다음 빈 유형 (예컨대, 빈 1) 이전에 코딩된다. 코딩은 정규 모드 또는 바이패스 모드에서 수행될 수도 있다. 바이패스 모드에서, 바이패스 코딩 엔진 (126) 은 산술 코딩을 고정 확률 모델을 이용하여, 예를 들어, Golomb-Rice 또는 지수 Golomb 코딩을 이용하여 수행한다. 바이패스 모드는 더 예측가능한 신택스 엘리먼트들에 대해 일반적으로 사용된다.
정규 모드에서의 코딩은 CABAC 를 수행하는 것을 포함한다. 정규 모드 CABAC 는 빈 값들을 코딩하기 위한 것이며, 여기서 빈의 값의 확률은 이전에 코딩된 빈들의 값들이 주어지면 예측가능하다. 빈이 LPS 일 확률은 컨텍스트 모델러 (122) 에 의해 결정된다. 컨텍스트 모델러 (122) 는 빈 값 및 컨텍스트 모델 (예컨대, 확률 상태 σ) 를 출력한다. 컨텍스트 모델은 빈들의 시리즈에 대한 초기 컨텍스트 모델일 수도 있거나, 또는 이전에 코딩된 빈들의 코딩된 값들에 기초하여 결정될 수도 있다. 위에서 설명한 바와 같이, 컨텍스트 모델러는 수신된 빈이 MPS 또는 LPS 이었는지 여부에 기초하여 상태를 업데이트할 수도 있다.
컨텍스트 모델 및 확률 상태 σ 가 컨텍스트 모델러 (122) 에 의해 결정된 후, 정규 코딩 엔진 (124) 은 빈 값에 대해 BAC 를 수행한다. 본 개시물의 기법들에 따르면, 정규 코딩 엔진 (124) 은 64 개보다 많은 확률 상태들 σ 를 포함하는 TransIdxLPS 테이블 (130) 을 이용하여 BAC 를 수행한다. 일 예에서, 확률 상태들의 수는 128 개이다. TransIdxLPS 는 이전 빈 (빈 n) 이 LPS 일 때 다음 빈 (빈 n+1) 에 대해 어느 확률 상태가 사용되는지를 결정하기 위해 사용된다. 정규 코딩 엔진 (124) 은 또한 특정의 확률 상태 σ 가 주어지면 LPS 에 대한 범위 값을 결정하기 위해 RangeLPS 테이블 (128) 을 이용할 수도 있다. 그러나, 본 개시물의 기법들에 따르면, TransIdxLPS 테이블 (130) 의 모든 가능한 확률 상태들 σ 를 이용하기 보다는, RangeLPS 테이블에서의 사용을 위해 확률 상태 인덱스들 σ 가 그룹화된 인덱스들에 맵핑된다. 즉, RangeLPS 테이블 (128) 로의 각각의 인덱스는 확률 상태들의 총 개수 중 2개 이상을 나타낼 수도 있다. 그룹화된 인덱스들에의 확률 상태 인덱스 σ 의 맵핑은 (예컨대, 2 로 나눔으로써) 선형일 수도 있거나, 또는 비선형 (예컨대, 로그 함수 또는 맵핑 테이블) 일 수도 있다.
본 개시물의 다른 예들에서, 연속적인 확률 상태들 사이의 차이는 파라미터 α 를 0.9493 보다 크게 설정함으로써 더 작게 만들 수도 있다. 일 예에서, α = 0.9689 이다. 본 개시물의 다른 예에서, LPS 가 발생하는 최고 확률 (p0) 은 0.5 보다 작게 설정될 수도 있다. 일 예에서, p0 는 0.493 과 동일할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 2진 산술 코딩 프로세스에서 확률 상태를 업데이트하는데 사용되는 변수 (예컨대, 윈도우 사이즈, 스케일링 인자 (α), 및 확률 업데이팅 속도 중 하나 이상) 의 동일한 값을 이용하는 것과는 대조적으로, 엔트로피 인코딩 유닛 (56) 은 상이한 컨텍스트 모델들 및/또는 상이한 신택스 엘리먼트들에 대해 상이한 변수의 값들을 이용할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 복수의 컨텍스트 모델들의 컨텍스트 모델에 대해, 2진 산술 코딩 프로세스에서 확률 상태를 업데이트하는데 사용되는 변수의 값을 결정하고, 결정된 값에 기초하여 확률 상태를 업데이트할 수도 있다.
도 4 를 참조하면, 일부의 경우, 엔트로피 인코딩 유닛 (56) 또는 비디오 인코더 (20) 의 또 다른 유닛이 엔트로피 코딩에 더해서, 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 CU들 및 PU들에 대한 코딩된 블록 패턴 (CBP) 값들을 결정하도록 구성될 수도 있다. 또한, 일부의 경우, 엔트로피 인코딩 유닛 (56) 은 계수들의 런 길이 코딩 (run length coding) 을 수행할 수도 있다. 게다가, 엔트로피 인코딩 유닛 (56), 또는 다른 프로세싱 유닛들은, 또한 양자화 매트릭스의 값들과 같은, 다른 데이터를 코딩할 수도 있다.
위에서 설명한 바와 같이, 역양자화 유닛 (58) 및 역변환 프로세싱 유닛 (60) 은 역양자화 및 역변환을 각각 적용하여, 예컨대, 참조 블록으로서의 추후 사용을 위해, 픽셀 도메인에서 잔차 블록을 복원한다. 모션 보상 유닛 (44) 은 잔차 블록을 DPB (64) 의 프레임들 중 하나의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 내삽 필터들을 그 복원된 잔차 블록에 적용하여, 모션 추정에 사용하기 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 복원된 잔차 블록을 모션 보상 유닛 (44) 에 의해 발생되는 모션 보상된 예측 블록에 가산하여, DPB (64) 에의 저장을 위한 복원된 비디오 블록을 발생한다. 복원된 비디오 블록은 후속 비디오 프레임에서 블록을 인터-코딩하기 위해 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 참조 블록으로서 사용될 수도 있다.
도 10 은 본 개시물의 기법들에 따른, CABAC 를 수행하도록 구성될 수도 있는 예시적인 엔트로피 디코딩 유닛 (80) 의 블록도이다. 도 10 의 엔트로피 디코딩 유닛 (80) 은 도 5 에 설명된 엔트로피 인코딩 유닛 (56) 의 방법과는 역으로 CABAC 를 수행한다. 비트스트림 (218) 으로부터의 코딩된 비트들이 엔트로피 디코딩 유닛 (80) 에 입력된다. 코딩된 비트들이 바이패스 모드 또는 정규 모드를 이용하여 엔트로피 코딩되었는지 여부에 기초하여, 코딩된 비트들이, 컨텍스트 모델러 (220) 또는 바이패스 코딩 엔진 (222) 에 공급된다. 코딩된 비트들이 바이패스 모드에서 코딩되었으면, 바이패스 디코딩 엔진은 예를 들어, Golomb-Rice 또는 지수 Golomb 디코딩을 이용하여, 2진-값 신택스 엘리먼트들 또는 비-2진 신택스 엘리먼트들의 빈들을 취출할 것이다.
코딩된 비트들이 정규 모드에서 코딩되었으면, 컨텍스트 모델러 (220) 는 코딩된 비트들에 대한 확률 모델을 결정할 수도 있으며, 정규 디코딩 엔진 (224) 은 코딩된 비트들을 디코딩하여 비-2진 값 신택스 엘리먼트들 (또는, 2진-값이면 신택스 엘리먼트들 자신) 의 빈들을 발생시킬 수도 있다. 컨텍스트 모델 및 확률 상태 σ 가 컨텍스트 모델러 (220) 에 의해 결정된 후, 정규 디코딩 엔진 (224) 은 빈 값에 대해 BAC 를 수행한다. 본 개시물의 기법들에 따르면, 정규 디코딩 엔진 (224) 은 64 개보다 많은 확률 상태들 σ 를 포함하는 TransIdxLPS 테이블 (228) 을 이용하여 BAC 를 수행한다. 일 예에서, 확률 상태들의 개수는 128 개이지만, 본 개시물의 기법들에 부합하는, 다른 개수의 확률 상태들이 정의될 수 있다. TransIdxLPS 는 이전 빈 (빈 n) 이 LPS 일 때 다음 빈 (빈 n+1) 에 대해 어느 확률 상태가 사용되는지를 결정하기 위해 사용된다. 정규 디코딩 엔진 (224) 은 또한 특정의 확률 상태 σ 가 주어지면 LPS 에 대한 범위 값을 결정하기 위해 RangeLPS 테이블 (226) 을 이용할 수도 있다. 그러나, 본 개시물의 기법들에 따르면, TransIdxLPS 테이블 (228) 의 모든 가능한 확률 상태들 σ 를 이용하기 보다는, RangeLPS 테이블 (226) 에서의 사용을 위해, 확률 상태 인덱스들 σ 가 그룹화된 인덱스들에 맵핑된다. 즉, RangeLPS 테이블 (226) 에의 각각의 인덱스는 확률 상태들의 총 개수 중 2개 이상을 나타낼 수도 있다. 그룹화된 인덱스들에의 확률 상태 인덱스 σ 의 맵핑은 (예컨대, 2 로 나눔으로써) 선형일 수도 있거나, 또는 비선형 (예컨대, 로그 함수 또는 맵핑 테이블) 일 수도 있다.
본 개시물의 다른 예들에서, 연속적인 확률 상태들 사이의 차이는 파라미터 α 를 0.9493 보다 크게 설정함으로써 더 작게 만들 수도 있다. 일 예에서, α = 0.9689 이다. 본 개시물의 다른 예에서, LPS 가 발생하는 최고 확률 (p0) 은 0.5 보다 작게 설정될 수도 있다. 일 예에서, p0 은 0.493 과 동일할 수도 있다.
빈들이 정규 디코딩 엔진 (224) 에 의해 디코딩된 후, 역 2진화기 (230) 는 역방향 맵핑을 수행하여, 빈들을 비-2진 값 신택스 엘리먼트들의 값들로 되변환할 수도 있다.
도 11 은 본 개시물의 기법들에 따른, MPM 후보 리스트를 구성하는 기법들을 예시하는 흐름도이다. 도 11 의 기법들은 비디오 디코더 (30) 또는 비디오 인코더 (20) 에 의해 수행될 수도 있으며, 일반적인 비디오 코더를 참조하여 설명될 것이다. 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정한 후, 비디오 코더는 도 11 의 기법들에 따라서 MPM 후보 리스트를 구성한다. 도 11 의 예에서, 비디오 코더는 2개의 이웃하는 블록들을 고려한다 (302). 2개의 이웃하는 블록들이 인트라 예측 모드들을 이용하여 코딩되면, 비디오 코더는 제 1 이웃하는 블록의 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가하고 제 2 이웃하는 블록에 대한 인트라 예측 모드를 MPM 후보 리스트에 추가한다. 제 1 또는 제 2 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩되지 않으면, 이웃하는 블록은 MPM 후보 리스트에 추가할 그 비디오 코더에 대한 연관된 인트라 예측 모드를 갖지 않는다. 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되면, 비디오 코더는 단지 그 인트라 예측 모드의 하나의 인스턴스만을 MPM 후보 리스트에 추가할 수도 있다.
제 1 이웃하는 블록 및 제 2 이웃하는 블록의 인트라 예측 모드들을 고려한 후, 비디오 코더는 하나 이상의 디폴트 후보들을 고려한다 (304). 디폴트 후보들은 예를 들어, 평면 모드 및 DC 모드 중 하나 또는 양자를 포함할 수도 있다. 예를 들어, 디폴트 모드가 제 1 또는 제 2 이웃하는 블록의 인트라 예측 모드였기 때문에, 디폴트 모드가 이미 MPM 후보 리스트에 포함되어 있으면, 비디오 코더는 그 인트라 예측 모드의 다른 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다.
디폴트 인트라 예측 모드들을 고려한 후, 비디오 코더는 하나 이상의 추가적인 이웃하는 블록 후보들을 고려한다 (306). 추가적인 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩되면, 비디오 코더는 추가적인 이웃하는 블록의 그 인트라 예측 모드를 현재의 블록에 대한 MPM 후보 리스트에 추가한다. 추가적인 이웃하는 블록이 인트라 예측 모드를 이용하여 코딩되지 않으면, 연관된 이웃하는 블록은 MPM 후보 리스트에 추가할 그 비디오 코더에 대한 연관된 인트라 예측 모드를 갖지 않는다. 추가적인 이웃하는 후보가 MPM 후보 리스트에 이미 포함되어 있는 인트라 예측 모드를 이용하여 코딩되면, 비디오 코더는 그 인트라 예측 모드의 다른 인스턴스를 MPM 후보 리스트에 추가하지 않을 수도 있다.
추가적인 이웃하는 후보들 모두를 고려한 후 MPM 후보 리스트 내 엔트리들의 개수가 임계 수 M 과 동일하면 (308, 예), 비디오 코더는 MPM 후보 리스트 구성 프로세스를 종료한다. 추가적인 이웃하는 후보들 모두를 고려한 후 MPM 후보 리스트 내 엔트리들의 개수가 M 개 미만이면 (308, 아니오), 비디오 코더는 유도된 후보를 고려한다 (310). 유도된 후보를 고려한 후 MPM 후보 리스트 내 엔트리들의 개수가 임계 수 M 과 동일하면 (312, 예), 비디오 코더는 MPM 후보 리스트 구성 프로세스를 종료한다. 유도된 후보를 고려한 후 MPM 후보 리스트 내 엔트리들의 개수가 M 개 미만이면 (312, 아니오), 비디오 코더는 다른 유도된 후보를 고려한다 (310). 비디오 코더는 MPM 후보 리스트 내 엔트리들의 개수가 M 과 동일할 때까지, 유도된 후보들을 고려한다. 일부의 경우, 비디오 코더는 또한 설령 MPM 후보 리스트 내 엔트리들의 개수가 M 개 미만이더라도, 모든 가능한 유도된 후보들을 고려한 후, MPM 후보 리스트 구성 프로세스를 종료할 수도 있다.
비디오 코더는 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드들을 결정할 수도 있다. 예를 들어, 이웃하는 블록의 인트라 예측 모드에 기초하여 하나 이상의 유도된 인트라 예측 모드들을 결정하기 위해, 비디오 코더는 이웃하는 블록의 인트라 예측 모드의 모드 인덱스 플러스 오프셋을 가진 인트라 예측 모드를 MPM 후보 리스트에 추가할 수도 있다. 오프셋은 예를 들어, -2, -1, 1, 2, 또는 어떤 다른 값 중 하나와 동일할 수도 있다.
이웃 블록 후보들을 고려할 때, 비디오 코더는 이웃 블록 후보들을 고정된 순서로 고려하여, 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정하고 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 MPM 후보 리스트에 고정된 순서로 추가할 수도 있다. 비디오 코더는 예를 들어, 병합 모드에 대해 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 하나 이상의 이웃하는 블록들을 체크할 수도 있다.
도 12 는 본 개시물의 기법들에 따른, 비디오 데이터의 블록을 인코딩하는 기법들을 예시하는 흐름도이다. 도 12 의 기법들은 비디오 인코더 (20) 와 관련하여 설명되지만, 도 12 의 기법들은 비디오 인코더의 임의의 특정 유형에 한정되지 않는다. 도 12 의 예에서, 비디오 인코더 (20) 는 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정한다 (320). 비디오 인코더 (20) 는 MPM 후보 리스트를 발생시킨다 (322). 비디오 인코더 (20) 는 예를 들어, 도 11 과 관련하여 설명된 기법들 또는 본 개시물에서 설명되는 임의의 다른 기법들을 이용하여 MPM 후보 리스트를 발생시킬 수도 있다. 비디오 인코더 (20) 는 MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정한다 (324). 비디오 인코더 (20) 는 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 인코딩한다 (326). 현재의 블록을 인코딩하는데 사용되는 인트라 예측 모드는 가장 가능성있는 모드 (즉, MPM 후보 리스트에 포함된 모드) 일 수도 있거나 또는 비-가장 가능성있는 모드 (즉, MPM 후보 리스트에 포함되지 않은 모드) 일 수도 있다.
도 13 은 본 개시물의 기법들에 따른, 비디오 데이터의 블록을 디코딩하는 기법들을 예시하는 흐름도이다. 도 13 의 기법들은 비디오 디코더 (30) 와 관련하여 설명되지만, 도 13 의 기법들은 비디오 디코더의 임의의 특정 유형에 한정되지 않는다. 도 13 의 예에서, 비디오 디코더 (30) 는 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정한다 (330). 비디오 디코더 (30) 는 MPM 후보 리스트를 발생시킨다 (332). 비디오 디코더 (30) 는 예를 들어, 도 11 과 관련하여 설명된 기법들 또는 본 개시물에서 설명되는 임의의 다른 기법들을 이용하여 MPM 후보 리스트를 발생시킬 수도 있다. 비디오 디코더 (30) 는 MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정한다 (334). 비디오 디코더 (30) 는 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩한다 (336). 현재의 블록을 디코딩하는데 사용되는 인트라 예측 모드는 가장 가능성있는 모드 (즉, MPM 후보 리스트에 포함된 모드) 일 수도 있거나 또는 비-가장 가능성있는 모드 (즉, MPM 후보 리스트에 포함되지 않은 모드) 일 수도 있다.
비디오 디코더 (30) 는 예를 들어, 인트라 예측 모드가 MPM 후보 리스트 내 모드들 중 하나인지 또는 인트라 예측 모드가 MPM 후보 리스트 내에 없는 모드인지를 결정함으로써, MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정할 수도 있다. 일부 코딩 시나리오들에서, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 예를 들어, 인트라 예측 모드가 MPM 후보 리스트에 포함된 인트라 예측 모드가 아니라는 표시를 수신하고, 인트라 예측 모드를 표시하는 추가적인 신택스를 수신할 수도 있다. 일부 코딩 시나리오들에서, 인트라 예측 모드를 이용하여 비디오 데이터의 현재의 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 예를 들어, MPM 후보 리스트에 포함된 인트라 예측 모드를 식별하는 컨텍스트 코딩된 인덱스 값을 수신하고, 컨텍스트 코딩된 인덱스 값을 디코딩하기 위한 컨텍스트를 결정하고; 그리고, 결정된 컨텍스트를 이용하여, 컨텍스트 코딩된 인덱스 값을 컨텍스트 디코딩하여 인트라 예측 모드를 결정할 수도 있다. 결정된 컨텍스트 값에 기초하여, 비디오 디코더 (30) 는 인덱스 값을 포함하는 2진화된 코드워드를 결정하기 위해 컨텍스트 코딩된 인덱스 값을 빈들에 맵핑할 수도 있으며, 여기서, 코드워드는 MPM 후보 리스트로부터의 인트라 예측 모드에 대응한다. 2진화된 코드워드는 예를 들어, 트렁케이트된 단항 코드워드일 수도 있다. 일부 예들에서, 2진화된 코드워드의 각각의 빈은 컨텍스트 코딩된다. 2진화된 코드워드의 각각의 빈은 MPM 후보 리스트에서의 가장 가능성있는 모드들 중 하나에 대응할 수도 있다.
비디오 디코더 (30) 는 각각의 빈에 대응하는 가장 가능성있는 모드의 분류에 기초하여 각각의 빈에 대한 컨텍스트를 결정할 수도 있다. 일 예로서, 제 1 가장 가능성있는 모드에 대응하는 제 1 빈에 대해, 비디오 디코더 (30) 는 제 1 가장 가능성있는 모드가 수평 모드인지 여부, 제 1 가장 가능성있는 모드가 수직 모드인지 여부, 또는 제 1 가장 가능성있는 모드가 비-각도 모드인지 여부에 기초하여, 제 1 빈에 대한 컨텍스트를 결정할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령들 또는 코드로서, 컴퓨터-판독가능 매체 상에 저장되거나 또는 컴퓨터-판독가능 매체를 통해서 송신될 수도 있으며, 하드웨어-기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체는 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라서 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방법으로, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시성 유형의 컴퓨터-판독가능 저장 매체, 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
일 예로서, 이에 한정하지 않고, 이런 컴퓨터-판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터-판독가능 매체로 적절히 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 무선 기술들, 예컨대 적외선, 라디오, 및 마이크로파를 이용하여 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 무선 기술들 예컨대 적외선, 라디오, 및 마이크로파가 그 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체는 접속부들, 반송파들, 신호들, 또는 다른 일시성 매체를 포함하지 않고, 그 대신, 비-일시성 유형의 저장 매체로 송신되는 것으로 해석되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 결합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 로직 어레이들 (FPGAs), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본원에서 사용될 때 전술한 구조 중 임의의 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능은 전용 하드웨어 및/또는 인코딩 및 디코딩을 위해 구성되는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 전적으로 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시한 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 다양한 컴포넌트들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 대신, 위에서 설명한 바와 같이, 다양한 유닛들이 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호작용하는 하드웨어 유닛들의 컬렉션으로 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.

Claims (72)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하는 단계;
    상기 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 가장 가능성있는 모드 (MPM) 후보 리스트에 추가하는 단계;
    상기 현재의 블록의 상기 제 1 이웃하는 블록의 상기 인트라 예측 모드와는 상이한, 상기 현재의 블록의 제 2 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계;
    제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계로서, 상기 제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계는:
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 평면 모드 및 DC 모드를 포함하는 모드들의 서브세트에 속하는지 여부를 결정하는 단계로서, 상기 모드들의 서브세트는 모든 가용 인트라 예측 모드들보다는 작은 수의 모드들을 포함하는, 상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 상기 모드들의 서브세트에 속하는지 여부를 결정하는 단계; 및
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 모드들의 특정 세트에 속하지 않는다고 결정하는 것에 응답하여, 제 1 오프셋을 상기 제 1 이웃하는 블록의 모드 인덱스에 추가하여 상기 제 1 유도된 인트라 예측 모드를 유도하는 단계를 포함하는, 상기 제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계;
    제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계로서, 상기 제 2 유도된 인트라 예측 모드를 상기 MPM 후보 리스트에 추가하는 단계는 제 2 오프셋을 상기 제 1 이웃하는 블록의 상기 모드 인덱스에 추가함으로써 상기 제 2 유도된 인트라 예측 모드를 결정하는 단계를 포함하는, 상기 제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하는 단계;
    상기 MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정하는 단계; 및
    상기 인트라 예측 모드를 이용하여 상기 비디오 데이터의 상기 현재의 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 이웃하는 블록 및 상기 제 2 이웃하는 블록은, 상기 현재의 블록에 대해, 좌측 이웃 블록, 상부 이웃 블록, 좌하부 이웃 블록, 우상부 이웃 블록, 또는 좌상부 이웃 블록을 포함하는 그룹으로부터 선택되는, 비디오 데이터를 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 이웃하는 블록 및 상기 제 2 이웃하는 블록의 상기 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가한 후에, 하나 이상의 디폴트 후보들을 상기 MPM 후보 리스트에 추가하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 하나 이상의 디폴트 후보들은 상기 DC 모드, 수평 모드 또는 수직 모드 중 하나 이상을 포함하는, 비디오 데이터를 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 오프셋은 -2, -1, 1, 또는 2 중 하나와 동일하고, 상기 제 2 오프셋은 -2, -1, 1, 또는 2 중 하나와 동일한, 비디오 데이터를 디코딩하는 방법.
  6. 제 5 항에 있어서,
    복수의 유도된 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가하는 단계를 더 포함하고,
    상기 복수의 유도된 인트라 예측 모드들은 상기 제 1 유도된 인트라 예측 모드 및 상기 제 2 유도된 인트라 예측 모드를 포함하고, 상기 복수의 유도된 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가하는 단계는:
    -2 또는 2 의 오프셋들을 갖는 것으로 결정된 유도된 인트라 예측 모드들을 추가하기 이전에, -1 또는 1 의 오프셋들을 갖는 것으로 결정된 유도된 인트라 예측 모드들을 추가하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  7. 제 1 항에 있어서,
    2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 상기 2개의 유도된 인트라 예측 모드들의 오직 하나의 인스턴스를 상기 MPM 후보 리스트에 포함시키는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 인트라 예측 모드를 결정하는 단계는,
    상기 인트라 예측 모드가 상기 MPM 후보 리스트에 포함된 인트라 예측 모드가 아니라는 표시를 수신하는 단계; 및
    상기 인트라 예측 모드를 표시하는 추가적인 신택스를 수신하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정하기 위해 상기 이웃하는 블록들의 그룹을 고정된 순서로 체크하는 단계로서, 상기 이웃하는 블록들의 그룹은 상기 제 1 이웃하는 블록, 상기 제 2 이웃하는 블록, 제 3 이웃하는 블록, 및 적어도 하나의 다른 이웃하는 블록을 포함하는, 상기 이웃하는 블록들의 그룹을 고정된 순서로 체크하는 단계; 및
    상기 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 상기 가장 가능성있는 모드 후보 리스트에 상기 고정된 순서로 추가하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 상기 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 상기 가장 가능성있는 모드 후보 리스트에 포함시키는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  11. 제 9 항에 있어서,
    상기 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하는 단계는, 병합 모드에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 상기 하나 이상의 이웃하는 블록들을 체크하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  12. 제 9 항에 있어서,
    상기 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 상기 가장 가능성있는 모드 후보 리스트에 추가하는 것이 상기 가장 가능성있는 모드 후보 리스트에서의 인트라 예측 모드들의 수로 하여금 임계 수를 초과하게 하는 것에 응답하여, 상기 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  13. 비디오 데이터를 디코딩하는 디바이스로서,
    상기 비디오 데이터를 저장하도록 구성된 메모리; 및
    회로 내에 구현되는 하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    상기 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고;
    상기 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 가장 가능성있는 모드 (MPM) 후보 리스트에 추가하고;
    상기 현재의 블록의 상기 제 1 이웃하는 블록의 상기 인트라 예측 모드와는 상이한, 상기 현재의 블록의 제 2 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하고;
    제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하되, 상기 제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하기 위하여 상기 하나 이상의 프로세서들은:
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 평면 모드 및 DC 모드를 포함하는 모드들의 서브세트에 속하는지 여부를 결정하되, 상기 모드들의 서브세트는 모든 가용 인트라 예측 모드들보다는 작은 수의 모드들을 포함하고; 그리고
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 모드들의 특정 세트에 속하지 않는다고 결정하는 것에 응답하여, 제 1 오프셋을 상기 제 1 이웃하는 블록의 모드 인덱스에 추가하여 상기 제 1 유도된 인트라 예측 모드를 유도하도록 더욱 구성되고;
    제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하되, 상기 제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하기 위하여 상기 하나 이상의 프로세서들은 제 2 오프셋을 상기 제 1 이웃하는 블록의 상기 모드 인덱스에 추가함으로써 상기 제 2 유도된 인트라 예측 모드를 결정하도록 더욱 구성되고;
    상기 MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정하고; 그리고
    상기 인트라 예측 모드를 이용하여 상기 현재의 블록을 디코딩하도록 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  14. 제 13 항에 있어서,
    상기 제 1 이웃하는 블록 및 상기 제 2 이웃하는 블록은, 상기 현재의 블록에 대해, 좌측 이웃 블록, 상부 이웃 블록, 좌하부 이웃 블록, 우상부 이웃 블록, 또는 좌상부 이웃 블록을 포함하는 그룹으로부터 선택되는, 비디오 데이터를 디코딩하는 디바이스.
  15. 제 13 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 1 이웃하는 블록 및 상기 제 2 이웃하는 블록의 상기 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가한 후에, 하나 이상의 디폴트 후보들을 상기 MPM 후보 리스트에 추가하도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  16. 제 15 항에 있어서,
    상기 하나 이상의 디폴트 후보들은 상기 DC 모드, 수평 모드 또는 수직 모드 중 하나 이상을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  17. 제 13 항에 있어서,
    상기 제 1 오프셋은 -2, -1, 1, 또는 2 중 하나와 동일하고, 상기 제 2 오프셋은 -2, -1, 1, 또는 2 중 하나와 동일한, 비디오 데이터를 디코딩하는 디바이스.
  18. 제 17 항에 있어서,
    상기 하나 이상의 프로세서들은,
    복수의 유도된 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가하도록 더욱 구성되고,
    상기 복수의 유도된 인트라 예측 모드들은 상기 제 1 유도된 인트라 예측 모드 및 상기 제 2 유도된 인트라 예측 모드를 포함하고, 상기 복수의 유도된 인트라 예측 모드들을 상기 MPM 후보 리스트에 추가하는 것은, -2 또는 2 의 오프셋들을 갖는 것으로 결정된 유도된 인트라 예측 모드들을 추가하기 이전에, -1 또는 1 의 오프셋들을 갖는 것으로 결정된 유도된 인트라 예측 모드들을 추가하는 것을 포함하는, 비디오 데이터를 디코딩하는 디바이스.
  19. 제 13 항에 있어서,
    상기 하나 이상의 프로세서들은,
    2개의 유도된 인트라 예측 모드들이 동일한 인트라 예측 모드인 것에 응답하여, 상기 2개의 유도된 인트라 예측 모드들의 오직 하나의 인스턴스를 상기 가장 가능성있는 모드 후보 리스트에 포함시키도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  20. 제 13 항에 있어서,
    상기 인트라 예측 모드를 결정하기 위해, 상기 하나 이상의 프로세서들은,
    상기 인트라 예측 모드가 상기 가장 가능성있는 모드 후보 리스트에 포함된 인트라 예측 모드가 아니라는 표시를 수신하고; 그리고
    상기 인트라 예측 모드를 표시하는 추가적인 신택스를 수신하도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  21. 제 13 항에 있어서,
    상기 하나 이상의 프로세서들은,
    이웃하는 블록들의 그룹으로부터의 이웃하는 블록들이 인트라 코딩되었는지를 결정하기 위해 상기 이웃하는 블록들의 그룹을 고정된 순서로 체크하는 것으로서, 상기 이웃하는 블록들의 그룹은 상기 제 1 이웃하는 블록, 상기 제 2 이웃하는 블록, 상기 제 3 이웃하는 블록, 및 적어도 하나의 다른 이웃하는 블록을 포함하는, 상기 이웃하는 블록들의 그룹을 고정된 순서로 체크하고; 그리고
    상기 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 상기 가장 가능성있는 모드 후보 리스트에 상기 고정된 순서로 추가하도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  22. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 이웃하는 블록들의 그룹으로부터의 2개의 이웃하는 블록들이 동일한 인트라 예측 모드를 이용하여 코딩되는 것에 응답하여, 상기 동일한 인트라 예측 모드의 오직 하나의 인스턴스를 상기 가장 가능성있는 모드 후보 리스트에 포함시키도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  23. 제 21 항에 있어서,
    상기 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 체크하기 위해, 상기 하나 이상의 프로세서들은, 병합 모드에 대한 이웃하는 블록들을 체크하는데 사용되는 동일한 순서를 이용하여 상기 하나 이상의 이웃하는 블록들을 체크하도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  24. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 이웃하는 블록들의 그룹으로부터의 이웃하는 블록들을 인코딩하는데 사용되는 인트라 예측 모드들을 상기 가장 가능성있는 모드 후보 리스트에 추가하는 것이 상기 가장 가능성있는 모드 후보 리스트에서의 인트라 예측 모드들의 수로 하여금 임계 수를 초과하게 하는 것에 응답하여, 상기 이웃하는 블록들의 그룹의 하나 이상의 이웃하는 블록들을 한번 더 체크하는 것의 체크를 종료하도록 더욱 구성되는, 비디오 데이터를 디코딩하는 디바이스.
  25. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금:
    상기 비디오 데이터의 현재의 블록이 인트라 예측 모드를 이용하여 코딩된다고 결정하고;
    상기 현재의 블록의 제 1 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 가장 가능성있는 모드 (MPM) 후보 리스트에 추가하고;
    상기 현재의 블록의 상기 제 1 이웃하는 블록의 상기 인트라 예측 모드와는 상이한, 상기 현재의 블록의 제 2 이웃하는 블록의 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하고;
    제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하되, 상기 제 1 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하기 위하여 상기 명령들은 상기 하나 이상의 프로세서들로 하여금:
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 평면 모드 및 DC 모드를 포함하는 모드들의 서브세트에 속하는지 여부를 결정하되, 상기 모드들의 서브세트는 모든 가용 인트라 예측 모드들보다는 작은 수의 모드들을 포함하고; 그리고
    상기 제 1 이웃하는 블록의 상기 인트라 예측 모드가 모드들의 특정 세트에 속하지 않는다고 결정하는 것에 응답하여, 제 1 오프셋을 상기 제 1 이웃하는 블록의 모드 인덱스에 추가하여 상기 제 1 유도된 인트라 예측 모드를 유도하도록 하고;
    제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하되, 상기 제 2 유도된 인트라 예측 모드를 상기 현재의 블록에 대한 상기 MPM 후보 리스트에 추가하기 위하여 상기 명령들은 상기 하나 이상의 프로세서들로 하여금, 제 2 오프셋을 상기 제 1 이웃하는 블록의 상기 모드 인덱스에 추가함으로써 상기 제 2 유도된 인트라 예측 모드를 결정하도록 하고;
    상기 MPM 후보 리스트를 이용하여 인트라 예측 모드를 결정하고; 그리고
    상기 인트라 예측 모드를 이용하여 상기 현재의 블록을 디코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
KR1020187032665A 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링 KR102578959B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237006359A KR20230030052A (ko) 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662336414P 2016-05-13 2016-05-13
US62/336,414 2016-05-13
US201662404128P 2016-10-04 2016-10-04
US62/404,128 2016-10-04
US15/590,261 US10547854B2 (en) 2016-05-13 2017-05-09 Neighbor based signaling of intra prediction modes
US15/590,261 2017-05-09
PCT/US2017/031924 WO2017196957A1 (en) 2016-05-13 2017-05-10 Neighbor based signaling of intra prediction modes

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237006359A Division KR20230030052A (ko) 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링

Publications (2)

Publication Number Publication Date
KR20190007427A KR20190007427A (ko) 2019-01-22
KR102578959B1 true KR102578959B1 (ko) 2023-09-14

Family

ID=58745423

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187032665A KR102578959B1 (ko) 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링
KR1020237006359A KR20230030052A (ko) 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237006359A KR20230030052A (ko) 2016-05-13 2017-05-10 인트라 예측 모드들의 이웃 기반의 시그널링

Country Status (9)

Country Link
US (2) US10547854B2 (ko)
EP (2) EP3456056A1 (ko)
JP (1) JP6998888B2 (ko)
KR (2) KR102578959B1 (ko)
CN (1) CN109196869B (ko)
BR (1) BR112018073282A2 (ko)
CA (1) CA3020516A1 (ko)
TW (1) TWI775754B (ko)
WO (1) WO2017196957A1 (ko)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10182244B2 (en) 2016-03-02 2019-01-15 MatrixView, Inc. Fast encoding loss metric
US10218976B2 (en) 2016-03-02 2019-02-26 MatrixView, Inc. Quantization matrices for compression of video
US10764576B2 (en) * 2016-05-04 2020-09-01 Microsoft Technology Licensing, Llc Intra-picture prediction using non-adjacent reference lines of sample values
US10547854B2 (en) 2016-05-13 2020-01-28 Qualcomm Incorporated Neighbor based signaling of intra prediction modes
US10506228B2 (en) 2016-10-04 2019-12-10 Qualcomm Incorporated Variable number of intra modes for video coding
US20180103251A1 (en) * 2016-10-07 2018-04-12 Industrial Technology Research Institute Method for selecting prediction mode of intra prediction, video encoding device and image processing apparatus
KR20180039324A (ko) * 2016-10-10 2018-04-18 디지털인사이트 주식회사 정방형 또는 직방형 블록의 화면 내 예측모드 정보 추출 방법 및 장치
KR20200027013A (ko) * 2017-07-24 2020-03-11 애리스 엔터프라이지즈 엘엘씨 인트라 모드 jvet 코딩
US11044471B2 (en) * 2017-07-28 2021-06-22 Electronics And Telecommunications Research Institute Image processing method, and image encoding/decoding method and device which use same
CN116980595A (zh) * 2017-11-17 2023-10-31 鸿颖创新有限公司 基于调整的帧内模式列表以编码视频数据的设备及方法
US11212553B2 (en) * 2017-11-28 2021-12-28 Electronics And Telecommunications Research Institute Bidirectional intra prediction method and apparatus
WO2019151280A1 (ja) 2018-01-30 2019-08-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10652534B2 (en) * 2018-03-08 2020-05-12 Tencent America LLC Methods and apparatus for directional intra prediction in video compression
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
EP4216550A1 (en) 2018-03-28 2023-07-26 FG Innovation Company Limited Device and method for coding video data in multiple reference line prediction
WO2019183901A1 (en) * 2018-03-29 2019-10-03 Huawei Technologies Co., Ltd. Picture encoding and decoding, picture encoder, and picture decoder
CN116567234A (zh) * 2018-04-01 2023-08-08 Oppo广东移动通信有限公司 使用帧内预测的图像编码/解码方法和装置
KR102247665B1 (ko) 2018-04-24 2021-05-03 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
EP3562158A1 (en) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for combined intra prediction modes
US20210250579A1 (en) * 2018-06-20 2021-08-12 Realnetworks, Inc. Intra-picture prediction in video coding systems and methods
CN112640455A (zh) * 2018-06-21 2021-04-09 瑞典爱立信有限公司 视频编码中具有子图块的图块分区
WO2019245342A1 (ko) * 2018-06-21 2019-12-26 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN114900694A (zh) 2018-06-29 2022-08-12 抖音视界(北京)有限公司 哪个查找表需要更新或不更新
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
EP3791586A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
EP3794825A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Update of look up table: fifo, constrained fifo
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
BR112020024142A2 (pt) 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
WO2020003282A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Managing motion vector predictors for video coding
TWI719525B (zh) 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 Lut與amvp之間的交互
CN110677679B (zh) * 2018-07-01 2022-07-26 北京字节跳动网络技术有限公司 依赖形状的帧内编码
TWI748202B (zh) 2018-07-02 2021-12-01 大陸商北京字節跳動網絡技術有限公司 Lamvr中取整和修剪的順序
CN112385215A (zh) * 2018-07-06 2021-02-19 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
US10701358B2 (en) * 2018-07-09 2020-06-30 Tencent America LLC Mode dependent primary and secondary transforms
US11523106B2 (en) * 2018-07-11 2022-12-06 Lg Electronics Inc. Method for coding intra-prediction mode candidates included in a most probable modes (MPM) and remaining intra prediction modes, and device for same
WO2020013609A1 (ko) * 2018-07-11 2020-01-16 인텔렉추얼디스커버리 주식회사 화면내 예측 기반의 비디오 코딩 방법 및 장치
KR20210010631A (ko) * 2018-07-13 2021-01-27 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측 정보를 사용하는 영상 디코딩 방법 및 그 장치
KR20210010630A (ko) * 2018-07-14 2021-01-27 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측 정보를 포함한 영상 정보 기반 영상 디코딩 방법 및 그 장치
EP3813370A4 (en) 2018-07-14 2021-06-30 LG Electronics, Inc. PROCESS FOR DECODING IMAGES USING INFORMATION RELATED TO INTRA-PREDICTION IN AN IMAGE CODING SYSTEM AND RELATED APPARATUS
US11509890B2 (en) 2018-07-24 2022-11-22 Hfi Innovation Inc. Methods and apparatus for entropy coding and decoding aspects of video data
CN108881905B (zh) * 2018-08-04 2021-08-31 福州大学 基于概率的帧内编码器优化方法
WO2020048463A1 (en) * 2018-09-03 2020-03-12 Huawei Technologies Co., Ltd. Method and apparatus for intra prediction
CN118055233A (zh) * 2018-09-06 2024-05-17 Lg 电子株式会社 使用mpm列表的基于帧内预测的图像编码方法及其装置
CN111064961B (zh) 2018-09-12 2023-06-09 北京字节跳动网络技术有限公司 视频处理方法和装置
CN112640453B (zh) * 2018-09-13 2023-03-10 华为技术有限公司 帧内预测的方法和装置
US10771778B2 (en) 2018-09-14 2020-09-08 Tencent America LLC Method and device for MPM list generation for multi-line intra prediction
CN112703739B (zh) * 2018-09-19 2022-11-25 华为技术有限公司 用于预测最可能帧内模式的方法和装置
CN110933411B (zh) 2018-09-19 2023-12-12 北京字节跳动网络技术有限公司 用于帧内编码的邻近的相邻块的选择
NZ774476A (en) * 2018-09-21 2023-05-26 Huawei Tech Co Ltd Intra prediction mode derivation based on neighboring blocks
WO2020056779A1 (en) * 2018-09-22 2020-03-26 Hangzhou Hikvision Digital Technology Co., Ltd Adaptive construction of most probable modes candidate list for video data encoding and decoding
CN110944198B (zh) * 2018-09-24 2023-12-12 北京字节跳动网络技术有限公司 色度模式帧内编码
US11516506B2 (en) * 2018-10-05 2022-11-29 Lg Electronics Inc. Method and apparatus for processing image service
EP3811623A4 (en) * 2018-10-09 2021-04-28 Huawei Technologies Co., Ltd. IMAGE AND VIDEO CODING DEVICES AND METHODS
WO2020076116A1 (ko) * 2018-10-12 2020-04-16 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법 및 장치
US11509891B2 (en) * 2018-11-04 2022-11-22 Lg Electronics Inc. Intra prediction method and apparatus in image coding system
BR112021011929A2 (pt) 2018-12-20 2021-09-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Unidade de armazenamento não transitória, decodificador para decodificação e codificador para codificação de uma figura a partir de um fluxo contínuo de dados e método de decodificação e codificação
WO2020135206A1 (en) * 2018-12-29 2020-07-02 Zhejiang Dahua Technology Co., Ltd. Systems and methods for intra prediction
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302937A (zh) 2019-01-16 2021-08-24 北京字节跳动网络技术有限公司 运动候选推导
WO2020151807A1 (en) 2019-01-22 2020-07-30 Huawei Technologies Co., Ltd. Slot antenna and electronic device comprising said slot antenna
CA3130472A1 (en) 2019-02-24 2020-08-27 Beijing Bytedance Network Technology Co., Ltd. Independent coding of palette mode usage indication
GB2582023A (en) * 2019-03-08 2020-09-09 British Broadcasting Corp Method of signalling in a video codec
WO2020184821A1 (ko) * 2019-03-12 2020-09-17 엘지전자 주식회사 Mpm 리스트를 구성하는 방법 및 장치
CN110166772B (zh) * 2019-03-12 2021-04-27 浙江大华技术股份有限公司 帧内预测模式的编解码方法、装置、设备和可读存储介质
US11405638B2 (en) * 2019-03-17 2022-08-02 Tencent America LLC Method and apparatus for video coding by determining intra prediction direction based on coded information of neighboring blocks
US11025909B2 (en) * 2019-03-21 2021-06-01 Tencent America LLC Method and apparatus for video coding
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
WO2020197155A1 (ko) * 2019-03-22 2020-10-01 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 그 장치, 영상 인코딩 방법 및 그 장치
SG11202110425VA (en) 2019-03-23 2021-10-28 Huawei Tech Co Ltd An encoder, a decoder and corresponding methods for intra prediction
KR20210126765A (ko) * 2019-03-23 2021-10-20 엘지전자 주식회사 영상 코딩 시스템에서의 인트라 예측 기반 영상 코딩
US11134257B2 (en) * 2019-04-04 2021-09-28 Tencent America LLC Simplified signaling method for affine linear weighted intra prediction mode
CN114501000B (zh) * 2019-04-10 2022-11-22 北京达佳互联信息技术有限公司 用于视频编码的方法和电子装置
CN117336469A (zh) * 2019-04-12 2024-01-02 北京字节跳动网络技术有限公司 根据基于矩阵的帧内预测的变换编码
US11956421B2 (en) 2019-05-10 2024-04-09 Hfi Innovation Inc. Method and apparatus of luma most probable mode list derivation for video coding
WO2020228566A1 (en) * 2019-05-10 2020-11-19 Mediatek Inc. Method and apparatus of chroma direct mode generation for video coding
CN113841409B (zh) 2019-05-10 2023-12-19 北京字节跳动网络技术有限公司 用于视频处理的简化二次变换的有条件使用
CN114051735A (zh) 2019-05-31 2022-02-15 北京字节跳动网络技术有限公司 基于矩阵的帧内预测中的一步下采样过程
CN117768652A (zh) 2019-06-05 2024-03-26 北京字节跳动网络技术有限公司 视频处理方法、装置、介质、以及存储比特流的方法
JP7277616B2 (ja) 2019-06-07 2023-05-19 北京字節跳動網絡技術有限公司 ビデオ・データを処理する方法、装置及び記憶媒体
CN112073729B (zh) * 2019-06-11 2024-04-05 北京三星通信技术研究有限公司 模型更新方法、装置、电子设备及计算机可读存储介质
WO2020249633A1 (en) * 2019-06-14 2020-12-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Coding of intra-prediction modes
CA3147923A1 (en) * 2019-07-20 2021-01-28 Beijing Bytedance Network Technology Co., Ltd. Quantization process for palette mode
CN117459744A (zh) 2019-07-20 2024-01-26 北京字节跳动网络技术有限公司 调色板模式使用指示的条件相关编解码
CN114145013B (zh) 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
WO2021018166A1 (en) 2019-07-29 2021-02-04 Beijing Bytedance Network Technology Co., Ltd. Scanning order improvements for palette mode coding
JP7422858B2 (ja) 2019-08-03 2024-01-26 北京字節跳動網絡技術有限公司 ビデオ処理方法、装置、記憶媒体及び記憶方法
WO2021032045A1 (en) 2019-08-17 2021-02-25 Beijing Bytedance Network Technology Co., Ltd. Context modeling of side information for reduced secondary transforms in video
CN110557645B (zh) * 2019-09-24 2021-09-28 腾讯科技(深圳)有限公司 帧内预测模式的解码方法、编码方法、装置及设备
US11375220B2 (en) 2019-11-27 2022-06-28 Tencent America LLC Method and apparatus for video decoding using a nominal directional mode and an angular offset
US11330266B2 (en) * 2020-05-18 2022-05-10 Tencent America LLC Signaling method for chroma intra prediction mode
US11206428B1 (en) 2020-07-14 2021-12-21 Tencent America LLC Method and apparatus for frequency-dependent joint component secondary transform
WO2022095918A1 (en) * 2020-11-05 2022-05-12 FG Innovation Company Limited Device and method for coding video data
US20230112074A1 (en) * 2021-10-08 2023-04-13 Tencent America LLC Mpm list construction
CN116800956A (zh) * 2022-01-07 2023-09-22 杭州海康威视数字技术股份有限公司 图像编解码方法、装置及存储介质
WO2023202557A1 (en) * 2022-04-19 2023-10-26 Mediatek Inc. Method and apparatus of decoder side intra mode derivation based most probable modes list construction in video coding system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013067334A2 (en) 2011-11-04 2013-05-10 Qualcomm Incorporated Intra-mode video coding
EP2773118A1 (en) 2011-10-24 2014-09-03 Intercode Pte. Ltd Method and apparatus for image decoding

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386048B2 (en) * 2002-05-28 2008-06-10 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode organization
CN101605255B (zh) * 2008-06-12 2011-05-04 华为技术有限公司 一种视频编解码的方法及装置
KR101527085B1 (ko) * 2009-06-30 2015-06-10 한국전자통신연구원 인트라 부호화/복호화 방법 및 장치
US8902978B2 (en) * 2010-05-30 2014-12-02 Lg Electronics Inc. Enhanced intra prediction mode signaling
US8923395B2 (en) 2010-10-01 2014-12-30 Qualcomm Incorporated Video coding using intra-prediction
WO2012057528A2 (ko) 2010-10-26 2012-05-03 ㈜휴맥스 적응적 화면내 예측 부호화 및 복호화 방법
PT2645715T (pt) * 2010-11-25 2020-01-29 Lg Electronics Inc Método para sinalizar informação de imagem, e método para descodificar informação de imagem utilizando a mesma
WO2012092763A1 (en) 2011-01-07 2012-07-12 Mediatek Singapore Pte. Ltd. Method and apparatus of improved intra luma prediction mode coding
CN103314588B (zh) 2011-01-07 2016-05-11 联发科技(新加坡)私人有限公司 编码方法与装置以及解码方法与装置
JP5781313B2 (ja) * 2011-01-12 2015-09-16 株式会社Nttドコモ 画像予測符号化方法、画像予測符号化装置、画像予測符号化プログラム、画像予測復号方法、画像予測復号装置及び画像予測復号プログラム
CN102685474B (zh) * 2011-03-10 2014-11-05 华为技术有限公司 预测模式的编解码方法、编解码设备及网络系统
US9532058B2 (en) 2011-06-03 2016-12-27 Qualcomm Incorporated Intra prediction mode coding with directional partitions
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
EP3223521A1 (en) * 2011-06-17 2017-09-27 HFI Innovation Inc. Method and apparatus for coding of intra prediction mode
PT2887670T (pt) * 2011-06-28 2017-09-18 Samsung Electronics Co Ltd Método e aparelho para codificar vídeo e método e aparelho para descodificar vídeo, acompanhados com intra previsão
CN107197309B (zh) * 2011-10-07 2020-02-18 英迪股份有限公司 对视频信号进行解码的方法
KR20130049525A (ko) * 2011-11-04 2013-05-14 오수미 잔차 블록 복원을 위한 역변환 방법
KR102511107B1 (ko) * 2011-12-05 2023-03-17 엘지전자 주식회사 인트라 예측 방법 및 장치
US20130163664A1 (en) 2011-12-22 2013-06-27 Qualcomm Incorporated Unified partition mode table for intra-mode coding
JPWO2014054267A1 (ja) 2012-10-01 2016-08-25 パナソニックIpマネジメント株式会社 画像符号化装置及び画像符号化方法
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10491922B2 (en) 2015-09-29 2019-11-26 Qualcomm Incorporated Non-separable secondary transform for video coding
US10425648B2 (en) 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US10547854B2 (en) 2016-05-13 2020-01-28 Qualcomm Incorporated Neighbor based signaling of intra prediction modes
US10506228B2 (en) 2016-10-04 2019-12-10 Qualcomm Incorporated Variable number of intra modes for video coding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2773118A1 (en) 2011-10-24 2014-09-03 Intercode Pte. Ltd Method and apparatus for image decoding
WO2013067334A2 (en) 2011-11-04 2013-05-10 Qualcomm Incorporated Intra-mode video coding

Also Published As

Publication number Publication date
CA3020516A1 (en) 2017-11-16
US10547854B2 (en) 2020-01-28
KR20230030052A (ko) 2023-03-03
WO2017196957A1 (en) 2017-11-16
US11082703B2 (en) 2021-08-03
KR20190007427A (ko) 2019-01-22
EP3456056A1 (en) 2019-03-20
TW201740728A (zh) 2017-11-16
EP4145833A1 (en) 2023-03-08
TWI775754B (zh) 2022-09-01
US20170332084A1 (en) 2017-11-16
JP2019515580A (ja) 2019-06-06
US20200195935A1 (en) 2020-06-18
CN109196869A (zh) 2019-01-11
JP6998888B2 (ja) 2022-01-18
BR112018073282A2 (pt) 2019-02-19
CN109196869B (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
KR102578959B1 (ko) 인트라 예측 모드들의 이웃 기반의 시그널링
US11431968B2 (en) Variable number of intra modes for video coding
US10609414B2 (en) Context modeling for transform coefficient coding
US9667994B2 (en) Intra-coding for 4:2:2 sample format in video coding
US11323747B2 (en) Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans
US9462275B2 (en) Residual quad tree (RQT) coding for video coding
US9549182B2 (en) Repositioning of prediction residual blocks in video coding
US9288508B2 (en) Context reduction for context adaptive binary arithmetic coding
US9807401B2 (en) Transform unit partitioning for chroma components in video coding
US20160353113A1 (en) Coding data using an enhanced context-adaptive binary arithmetic coding (cabac) design
US20130272423A1 (en) Transform coefficient coding
US20130114675A1 (en) Context state and probability initialization for context adaptive entropy coding
US20130070848A1 (en) Line buffer reduction for short distance intra-prediction
US20130259130A1 (en) Weighted prediction parameter coding
JP2015533061A (ja) コンテキスト適応型、マルチレベル有意性コーディングに関するコンテキスト導出
US20170171550A1 (en) Indication of cross-layer picture type alignment in multi-layer video coding
WO2020056779A1 (en) Adaptive construction of most probable modes candidate list for video data encoding and decoding

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2023101000384; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20230222

Effective date: 20230703

GRNO Decision to grant (after opposition)
GRNT Written decision to grant