KR102286460B1 - 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치 - Google Patents

히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치 Download PDF

Info

Publication number
KR102286460B1
KR102286460B1 KR1020217001358A KR20217001358A KR102286460B1 KR 102286460 B1 KR102286460 B1 KR 102286460B1 KR 1020217001358 A KR1020217001358 A KR 1020217001358A KR 20217001358 A KR20217001358 A KR 20217001358A KR 102286460 B1 KR102286460 B1 KR 102286460B1
Authority
KR
South Korea
Prior art keywords
motion vector
current
candidate list
hmvp table
video
Prior art date
Application number
KR1020217001358A
Other languages
English (en)
Other versions
KR20210008569A (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 KR1020217024328A priority Critical patent/KR102387972B1/ko
Publication of KR20210008569A publication Critical patent/KR20210008569A/ko
Application granted granted Critical
Publication of KR102286460B1 publication Critical patent/KR102286460B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/109Selection of coding mode or of prediction mode among a plurality of temporal 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

컴퓨팅 장치는 다수의 인코딩된 픽처와 관련된 데이터를 포함하는 비디오 비트스트림을 획득함으로써 비디오 데이터를 디코딩하는 방법을 수행한다. 각 픽처는 다수 행의 코딩 트리 유닛(CTU)을 포함하고 각 CTU는 하나 이상의 코딩 유닛(CU)을 포함한다. 복수의 히스토리-기반 모션 벡터 예측자를 저장하는 데이터 버퍼는 CTU 행을 인코딩하는 데 사용되며, 디코딩 프로세스는 현재 행의 CTU의 첫 번째 CU를 디코딩하기 전에 버퍼를 리셋한다. CTU 행의 현재 CU에 대해, 모션 벡터 후보 리스트는 버퍼의 히스토리-기반 모션 벡터 예측자뿐만 아니라 인접하는 코드 유닛의 모션 벡터의 공간적 및 시간적 상관 관계를 활용하여 구성된다. 마지막으로, 현재 CU를 디코딩하기 위해 모션 벡터 후보 리스트에서 하나의 모션 벡터 예측자가 선택되고 선택된 것에 기초하여 버퍼가 업데이트된다.

Description

히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
본 출원은 일반적으로 비디오 데이터 인코딩 및 디코딩에 관한 것으로, 특히 히스토리-기반 모션 벡터 예측을 사용하는 비디오 코딩 방법 및 시스템에 관한 것이다.
디지털 비디오는 디지털 텔레비전, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트 폰, 화상 원격회의 장치, 비디오 스트리밍 장치 등과 같은 다양한 전자 장치에 의해 지원된다. 이들 전자 장치는 MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, AVC(Advanced Video Coding), HEVC(high Efficiency Video Coding) 및 VVC(Versatile Video Coding) 표준에 정의된 대로 비디오 압축/압축해제 표준을 구현함으로써, 디지털 비디오 데이터를 전송, 수신, 인코딩, 디코딩 및/또는 저장한다. 비디오 압축은 일반적으로 비디오 데이터에 내재된 중복성을 줄이거나 제거하기 위해 공간(프레임 내) 예측 및/또는 시간(프레임 간) 예측을 수행하는 것을 포함한다. 블록 기반 비디오 코딩의 경우, 비디오 프레임은 하나 이상의 슬라이스로 분할되며, 각 슬라이스는 CTU(코딩 트리 유닛)라고도 할 수 있는 다중 비디오 블록을 포함한다. 각 CTU는 하나의 코딩 유닛(CU)을 포함하거나 미리 정의된 최소 CU 크기에 도달할 때까지 더 작은 CU로 재귀적으로(recursively) 분할될 수 있다. 각 CU(리프(leaf) CU라고도 함)는 하나 또는 여러 개의 TU(변환 유닛)를 포함하고 각 CU에는 하나 또는 여러 개의 PU(예측 유닛)도 포함된다. 각 CU는 인트라, 인터 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩(I) 슬라이스에 있는 비디오 블록은 동일한 비디오 프레임 내의 인접 블록에 있는 참조 샘플에 대해 공간적 예측을 사용하여 인코딩된다. 비디오 프레임의 인터 코딩(P 또는 B) 슬라이스의 비디오 블록은 동일한 비디오 프레임 내의 인접 블록의 참조 샘플에 대해 공간적 예측을 사용하거나 또는 다른 이전 및/또는 미래 참조 비디오 프레임에 있는 참조 샘플에 대해 시간적 예측을 사용할 수 있다.
예컨대 인접 블록과 같은 이전에 인코딩된 참조 블록에 기초한 공간적 또는 시간적 예측은 코딩할 현재 비디오 블록에 대한 예측 블록을 생성한다. 참조 블록을 찾는 과정은 블록 매칭 알고리즘에 의해 수행될 수 있다. 코딩할 현재 블록과 예측 블록 간의 픽셀 차이를 나타내는 잔차 데이터를 잔차 블록 또는 예측 오류라고 한다. 인터 코딩 블록은 예측 블록을 구성하는 참조 프레임에서의 참조 블록과 잔차 블록을 가리키는 모션 벡터에 따라 인코딩된다. 모션 벡터를 결정하는 프로세스를 일반적으로 모션 추정이라고 한다. 인트라 코딩 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩된다. 추가 압축을 위해, 잔차 블록은 픽셀 도메인에서 예를 들어 주파수 도메인과 같은 변환 도메인으로 변환되고, 그 결과 잔차 변환 계수가 생성되고, 이는 양자화될 수 있다. 초기에 2차원 어레이로 배열된 양자화된 변환 계수는 변환 계수의 1차원 벡터를 생성하기 위해 스캔될 수 있으며, 그 다음 더 큰 압축을 달성하기 위해 비디오 비트스트림으로 엔트로피 인코딩될 수 있다.
인코딩된 비디오 비트스트림은 컴퓨터 판독 가능한 저장 매체(예를 들어, 플래시 메모리)에 저장되어 디지털 비디오 기능을 가진 다른 전자 장치에 의해 액세스되거나 유선 또는 무선으로 전자 장치에 직접 전송된다. 그러면 전자 장치는, 예를 들어 인코딩된 비디오 비트스트림을 파싱하여 비트스트림으로부터 신택스(syntax) 요소를 획득하고, 비트스트림으로부터 획득된 신택스 요소에 적어도 부분적으로 기초하여 인코딩된 비디오 비트스트림으로부터 디지털 비디오 데이터를 그 원래의 포맷으로 재구성함으로써 비디오 압축해제(위에서 설명한 비디오 압축과 반대되는 프로세스)를 수행하고, 재구성된 디지털 비디오 데이터를 전자 장치의 디스플레이상에 렌더링한다.
디지털 비디오 품질이 고해상도에서 4Kx2K 또는 심지어 8Kx4K까지 이르게 되면서, 인코딩/디코딩해야 할 비디오 데이터의 양도 기하 급수적으로 증가한다. 디코딩된 비디오 데이터의 이미지 품질을 유지하면서 비디오 데이터를 어떻게 보다 효율적으로 인코딩/디코딩할 수 있는지는 상시 과제이다.
본 출원은 비디오 데이터 인코딩 및 디코딩, 특히 히스토리-기반 모션 벡터 예측을 사용하여 비디오 인코딩 및 디코딩할 때의 비디오 데이터의 병렬 처리 시스템 및 방법에 관한 구현을 설명한다.
본 출원의 제1 측면에 따르면, 비디오 데이터를 디코딩하는 방법은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행될 복수의 프로그램을 저장하는 메모리를 갖는 컴퓨팅 장치에서 수행된다. 비디오 비트스트림을 획득한 후, 컴퓨팅 장치는 비디오 비트스트림으로부터 다수의 인코딩된 픽처와 관련된 데이터를 추출하는 것으로 시작한다. 여기서, 각 픽처는 복수 행의 코딩 트리 유닛(CTU)을 포함하고 각 CTU는 하나 이상의 코딩 유닛(CU)을 포함한다. 디코딩되는 현재 픽처의 현재 행의 CTU들의 첫 번째 CU에 대한 디코딩을 시작하기 전에, 컴퓨팅 장치는 히스토리-기반 모션 벡터 예측자(HMVP, history-based motion vector predictor) 테이블을 리셋한다. 그런 다음 현재 행의 CTU들을 디코딩하는 동안, 컴퓨팅 장치는 HMVP 테이블에서 복수의 모션 벡터 예측자를 유지하며, 각 모션 벡터 예측자는 적어도 하나의 CU를 디코딩하는 데 사용되었던 것이다. 디코딩할 현재 행의 CTU들의 현재 CU에 대해, 컴퓨팅 장치는 비디오 비트스트림에서 예측 모드를 추출하고 예측 모드에 따라 그리고 HMVP 테이블의 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터 후보 리스트를 구성한다. 모션 벡터 후보 리스트로부터 모션 벡터 예측자를 선택한 후, 컴퓨팅 장치는 예측 모드 및 선택된 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터를 결정하고, 결정된 모션 벡터를 사용하여 현재 CU를 디코딩하고, 그 결정된 모션 벡터에 기초하여 HMVP 테이블을 업데이트한다.
본 출원의 제2 측면에 따르면, 컴퓨팅 장치는 하나 이상의 프로세서, 메모리 및 메모리에 저장된 복수의 프로그램을 포함한다.
프로그램은 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 장치가 위에서 설명한 동작을 수행하게 한다.
본 출원의 제3 측면에 따르면, 비-일시적 컴퓨터 판독 가능 저장 매체는 하나 이상의 프로세서를 갖는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장한다. 프로그램은 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 장치가 위에서 설명한 동작을 수행하게 한다.
구현예에 대해 더 잘 이해하기 위해 포함된 첨부 도면은 여기에 통합되어 명세서의 일부를 이루고, 설명되는 구현예를 도시하고 설명과 함께 기본 원리를 설명하는 역할을 한다. 동일한 참조 번호는 상응하는 부분을 나타낸다.
도 1은 본 개시의 일부 구현예에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시의 일부 구현예에 따른 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시의 일부 구현예에 따른 예시적인 비디오 디코더를 도시하는 블록도이다.
도 4a 내지 도 4d는 본 개시의 일부 구현예에 따라 프레임이 어떻게 서로 다른 크기의 다수의 비디오 블록으로 재귀적으로 쿼드-트리 분할되는지 도시하는 블록도이다.
도 5a는 본 개시의 일부 구현예에 따라 인코딩 될 현재 CU의 공간적으로 인접하고 시간적으로 배치된 블록 위치를 도시하는 블록도다.
도 5b는 본 개시의 일부 구현예에 따라 웨이브프론트 병렬 처리(wavefront parallel processing)를 사용하여 픽처의 여러 행의 CTU에 대한 다중 스레드 인코딩(multi-threaded encoding)을 도시하는 블록도이다.
도 6은 비디오 코더가 본 개시의 일부 구현예에 따라 모션 벡터 예측자 후보 리스트를 구성하는 기술들을 구현하는 예시적인 프로세스를 도시하는 흐름도이다.
이제 특정 구현예에 대한 상세 내용을 참조할 것이며, 그 예들은 첨부 도면에 도시되어 있다. 다음의 상세한 설명에서, 본 명세서에 제시된 발명의 이해를 돕기 위해 다수의 비-제한적인 특정 세부 사항이 설명된다. 그러나 청구 범위의 범위를 벗어나지 않는 다양한 대안이 사용될 수 있고 발명이 이러한 특정 세부 사항 없이 실행될 수 있다는 것은 통상의 기술자에게 자명할 것이다. 예를 들어, 본 명세서에 제시된 발명이 디지털 비디오 기능을 가진 많은 유형의 전자 장치에서 구현될 수 있다는 것은 통상의 기술자에게 자명할 것이다.
도 1은 본 개시의 일부 구현예에 따라 비디오 블록들을 병렬로 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 도시하는 블록도이다. 도 1에 도시된 바와 같이. 시스템(10)은 목적지 장치(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하고 인코딩하는 소스 장치(12)를 포함한다. 소스 장치(12) 및 목적지 장치(14)는 데스크톱 또는 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 셋톱 박스, 디지털 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치 등을 포함한 다양한 전자 장치를 포함할 수 있다. 일부 구현예에서, 소스 장치(12) 및 목적지 장치(14)는 무선 통신 능력을 갖추고 있다.
일부 구현예에서, 목적지 장치(14)는, 링크(16)를 통해, 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)에서 목적지 장치(14)로 옮길 수 있는 모든 유형의 통신 매체 또는 장치를 포함할 수 있다. 일 예에서, 링크(16)는 소스 장치(12)가 인코딩된 비디오 데이터를 목적지 장치(14)에 실시간으로 직접 전송할 수 있도록 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어 목적지 장치(14)로 전송될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크 또는 인터넷 등의 글로벌 네트워크와 같은 패킷 기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 하는 데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현예에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 장치(32)로 전송될 수 있다. 후속하여, 저장 장치(32)내의 인코딩된 비디오 데이터는 입력 인터페이스(28)를 통해 목적지 장치(14)에 의해 액세스될 수 있다. 저장 장치(32)는 하드 드라이브, 블루레이(Blu-ray) 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비-휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적절한 디지털 저장 매체와 같은 다양한 분산 또는 로컬 액세스 데이터 저장 매체를 포함할 수 있다. 추가 예에서, 저장 장치(32)는 소스 장치(12)에 의해 생성된 인코딩된 비디오 데이터를 유지할 수 있는 파일 서버 또는 다른 중간 저장 장치에 대응할 수 있다.
목적지 장치(14)는 스트리밍 또는 다운로드를 통해 저장 장치(32)로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 장치(14)로 전송할 수 있는 임의의 유형의 컴퓨터일 수 있다. 예시적인 파일 서버에는 웹 서버(예: 웹 사이트 용), FTP 서버, NAS(Network Attached Storage) 장치 또는 로컬 디스크 드라이브가 포함된다. 목적지 장치(14)는, 파일 서버에 저장된 인코딩된 비디오 데이터에 액세스하는 데 적합한, 무선 채널(예: Wi-Fi 연결), 유선 연결(예: DSL, 케이블 모뎀 등) 또는 이들의 조합을 포함하는 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 저장 장치(32)로부터 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 다운로드 전송 또는 둘 모두의 조합일 수 있다.
도 1에 도시된 바와 같이, 소스 장치(12)는 비디오 소스(18), 비디오 인코더(20) 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 카메라와 같은 비디오 캡처 장치, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드(feed) 인터페이스 및/또는 소스 비디오로서 컴퓨터 그래픽 데이터를 생성하기 위한 컴퓨터 그래픽 시스템과 같은 소스, 또는 그러한 소스의 조합을 포함할 수 있다. 일례로서, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라인 경우, 소스 장치(12) 및 목적지 장치(14)는 카메라 폰 또는 비디오 폰을 형성할 수 있다. 그러나 본 출원에서 설명하는 구현예는 일반적으로 비디오 코딩에 적용될 수 있고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처된, 미리 캡처된 또는 컴퓨터에 의해 생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 장치(12)의 출력 인터페이스(22)를 통해 목적지 장치(14)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 또한(또는 대안적으로) 디코딩 및/또는 재생을 위해 목적지 장치(14) 또는 다른 장치에 의한 추후 액세스를 위해 저장 장치(32)에 저장될 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함할 수 있다.
목적지 장치(14)는 입력 인터페이스(28), 비디오 디코더(30) 및 디스플레이 장치(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함하고 링크(16)를 통해 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)를 통해 통신되거나 저장 장치(32)에 제공된 인코딩된 비디오 데이터는 비디오 데이터를 디코딩할 때 비디오 디코더(30)에 의해 사용하기 위해 비디오 인코더(20)에 의해 생성된 다양한 신택스 요소를 포함할 수 있다. 이러한 신택스 요소는, 통신 매체를 통해 전송되거나, 저장 매체에 저장되거나, 파일 서버에 저장되는 인코딩된 비디오 데이터 내에 포함될 수 있다.
일부 구현예에서, 목적지 장치(14)는, 통합 디스플레이 장치 및 목적지 장치(14)와 통신하도록 구성된 외부 디스플레이 장치일 수 있는, 디스플레이 장치(34)를 포함할 수 있다. 디스플레이 장치(34)는 디코딩된 비디오 데이터를 사용자에게 표시하고, 액정 디스플레이(LCD), 플라즈마 디스플레이, 유기 발광 다이오드(OLED) 디스플레이 또는 다른 유형의 디스플레이와 같은 다양한 디스플레이 장치를 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 VVC, HEVC, MPEG-4, Part 10, AVC(Advanced Video Coding) 또는 이러한 표준의 확장과 같은 특허 또는 산업 표준에 따라 동작할 수 있다. 본 출원은 특정 비디오 코딩/디코딩 표준에 제한되지 않고 다른 비디오 코딩/디코딩 표준에 적용될 수 있음을 이해해야 한다. 소스 장치(12)의 비디오 인코더(20)는 이러한 현재 또는 미래의 표준 중 임의의 것에 따라 비디오 데이터를 인코딩하도록 구성될 수 있다는 것이 일반적으로 고려된다. 유사하게, 목적지 장치(14)의 비디오 디코더(30)는 이러한 현재 또는 미래의 표준 중 임의의 것에 따라 비디오 데이터를 디코딩하도록 구성될 수 있다는 것이 일반적으로 고려된다.
비디오 인코더(20) 및 비디오 디코더(30)는 각각 하나 이상의 마이크로 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합과 같은 다양한 적합한 인코더 회로 중 임의의 것으로 구현될 수 있다. 소프트웨어로 부분적으로 구현되는 경우, 전자 장치는 소프트웨어에 대한 명령을 적절한 비-일시적 컴퓨터 판독 가능 매체에 저장하고 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행하여 본 개시 내용에 개시된 비디오 코딩/디코딩 작업을 수행할 수 있다. . 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들 중 어느 하나는 각각의 장치에서 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
도 2는 본 출원에 설명된 일부 구현예에 따른 예시적인 비디오 인코더(20)를 도시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임내의 비디오 블록의 인트라 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 주어진 비디오 프레임 또는 픽처 내의 비디오 데이터에서 공간 중복성을 줄이거나 제거하기 위해 공간적 예측에 의존한다. 인터 예측 코딩은 시간적 예측에 의존하여 인접한 비디오 프레임 또는 비디오 시퀀스의 픽처 내의 비디오 데이터에서 시간 중복성을 줄이거나 제거한다.
도 2에 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 처리 유닛(41), 디코딩된 픽처 버퍼(DPB, decoded picture buffer)(64), 합산기(50), 변환 처리 유닛(52), 양자화 유닛(54) 및 엔트로피 인코딩 유닛(56)을 포함한다. 예측 처리 유닛(41)은 모션 추정 유닛(42), 모션 보상 유닛(44), 파티션 유닛(45), 인트라 예측 처리 유닛(46) 및 인트라 블록 카피(BC, intra block copy) 유닛(48)을 더 포함한다. 일부 구현예에서, 비디오 인코더(20)는 또한 비디오 블록 재구성을 위한 역양자화 유닛(58), 역변환 처리 유닛(60) 및 합산기(62)를 포함한다. 디블록킹 필터(deblocking filter)(도시되지 않음)는 재구성된 비디오로부터 블록성 아티팩트(blockiness artifacts)를 제거하기 위해 블록 경계를 필터링하기 위해 합산기(62)와 DPB(64) 사이에 위치될 수 있다. 인-루프 필터(in loop filter)(미도시)는 또한 합산기(62)의 출력을 필터링하기 위해, 디블로킹 필터에 추가하여, 사용될 수 있다. 비디오 인코더(20)는 고정된 또는 프로그래밍 가능한 하드웨어 유닛의 형태를 취할 수 있거나 도시된 고정된 또는 프로그래밍 가능한 하드웨어 유닛 중 하나 이상 사이에 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 컴포넌트에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40)의 비디오 데이터는 예를 들어 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 비디오 인코더(20)에 의해 비디오 데이터를 인코딩하는 데 사용하기 위한 참조 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 임의의 다양한 메모리 장치에 의해 형성될 수 있다. 다양한 예들에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 컴포넌트들과 함께 온칩(on-chip)이거나 이들 컴포넌트들에 대해 오프칩(off chip)일 수 있다.
도 2에 도시된 바와 같이, 비디오 데이터를 수신한 후, 예측 처리 유닛(41) 내의 파티션 유닛(45)은 비디오 데이터를 비디오 블록으로 분할한다. 이 분할은 또한 비디오 데이터와 연관된 쿼드-트리 구조와 같은 미리 정의된 분할 구조에 따라 비디오 프레임을 슬라이스, 타일 또는 다른 더 큰 코딩 유닛(CU)으로 분할하는 것을 포함할 수 있다. 비디오 프레임은 다수의 비디오 블록(또는 타일이라고 하는 비디오 블록 세트)으로 분할될 수 있다. 예측 처리 유닛(41)은, 오류 결과에 기초하여 현재 비디오 블록에 대해, 복수의 인트라 예측 코딩 모드 중 하나 또는 복수의 인터 예측 코딩 모드 중 하나와 같은 복수의 가능한 예측 코딩 모드 중 하나를 선택할 수 있다(예를 들어, 코딩 레이트 및 왜곡 레벨(level of distortion)). 예측 처리 유닛(41)은 결과로서의 인트라 또는 인터 예측 코딩된 블록을 합산기(50)에 제공하여 잔차 블록을 생성하고, 합산기(62)에 제공하여 후속하여 참조 프레임의 일부로서 사용하기 위한 인코딩된 블록을 재구성할 수 있다. 예측 처리 유닛(41)은 또한 모션 벡터, 인트라 모드 지시자, 파티션 정보 및 다른 그러한 신택스 정보와 같은 신택스 요소를 엔트로피 인코딩 유닛(56)에 제공한다.
현재 비디오 블록에 대한 적절한 인트라 예측 코딩 모드를 선택하기 위해, 예측 처리 유닛(41) 내의 인트라 예측 처리 유닛(46)은 코딩할 현재 블록과 동일한 프레임 내의 하나 이상의 인접 블록에 대해 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간적 예측을 제공한다.
예측 처리 유닛(41) 내의 모션 추정 유닛(42) 및 모션 보상 유닛(44)은, 시간적 예측을 제공하기 위해, 하나 이상의 참조 프레임에서 하나 이상의 예측 블록에 대한 현재 비디오 블록의 인터 예측 코딩을 수행한다. 비디오 인코더(20)는 예를 들어 비디오 데이터의 각 블록에 대해 적절한 코딩 모드를 선택하기 위해 다중 코딩 패스(multiple coding passes)를 수행할 수 있다.
일부 구현예에서, 모션 추정 유닛(42)은, 비디오 프레임의 시퀀스 내의 미리 결정된 패턴에 따라, 모션 벡터를 생성함으로써 현재 비디오 프레임에 대한 인터 예측 모드를 결정하는데, 이는 참조 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 유닛(PU)의 변위를 나타낸다. 모션 추정 유닛(42)에 의해 수행되는 모션 추정은 비디오 블록에 대한 움직임을 추정하는 모션 벡터를 생성하는 과정이다. 예를 들어, 모션 벡터는, 현재 프레임(또는 다른 코딩된 유닛) 내에서 코딩되고 있는 현재 블록에 대한 참조 프레임(또는 다른 코딩된 유닛) 내의 예측 블록에 대한 상대적인 현재 비디오 프레임 내의 비디오 블록 또는 픽처의 PU의 변위를 나타낼 수 있다. 미리 결정된 패턴은 시퀀스 내의 비디오 프레임을 P 프레임 또는 B 프레임으로 지정할 수 있다. 인트라 BC 유닛(48)은 인터 예측을 위한 모션 추정 유닛(42)에 의한 모션 벡터의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터, 예를 들어 블록 벡터를 결정하거나, 모션 추정 유닛(42)을 이용하여 블록 벡터를 결정할 수 있다.
예측 블록은, 픽셀 차이의 측면에서 코딩할 비디오 블록의 PU와 밀접하게 매칭하는 간주되는 참조 프레임의 블록이고, 픽셀 차이는 절대차의 합(SAD, sum of absolute difference), 제곱차의 합(SSD, sum of square difference) 또는 다른 방식에 의해 결정될 수 있다. 일부 구현예에서, 비디오 인코더(20)는 DPB(64)에 저장된 참조 프레임의 서브-정수(sub-integer) 픽셀 위치들에 대한 값을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 참조 프레임의 1/4 픽셀 위치, 1/8 픽셀 위치, 또는 다른 분수의 픽셀 위치의 값을 보간할 수 있다. 따라서, 모션 추정 유닛(42)은 전체 픽셀 위치 및 분수의 픽셀 위치에 대한 모션 검색을 수행하고 분수의 픽셀 정밀도로 모션 벡터를 출력할 수 있다.
모션 추정 유닛(42)은, 제1 참조 프레임 리스트(List 0) 또는 제2 참조 프레임 리스트(List 1)에서 선택된 참조 프레임의 예측 블록 위치와 PU의 위치를 비교하여, 인터 예측 코딩된 프레임에서 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 각 참조 프레임 리스트는 DPB(64)에 저장된 하나 이상의 참조 프레임을 식별한다. 모션 추정 유닛(42)은 계산된 모션 벡터를 모션 보상 유닛(44)으로 보내고, 그런 다음 엔트로피 인코딩 유닛(56)으로 전송한다.
모션 보상 유닛(44)에 의해 수행되는 모션 보상은 모션 추정 유닛(42)에 의해 결정된 모션 벡터에 기초하여 예측 블록을 가지고 오거나(fetch) 생성하는 것을 포함할 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신하면, 모션 보상 유닛(44)은 참조 프레임 리스트 중 하나에서 모션 벡터가 가리키는 예측 블록을 찾고, DPB(64)로부터 예측 블록을 검색하고, 예측 블록을 합산기(50)에 전달할 수 있다. 그러면 합산기(50)는 코딩되고 있는 현재 비디오 블록의 픽셀 값으로부터 모션 보상 유닛(44)에 의해 제공되는 예측 블록의 픽셀 값을 감산함으로써, 픽셀 차이 값의 잔차 비디오 블록을 형성한다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마(luma) 또는 크로마(chroma) 차이 성분 또는 둘 다를 포함할 수 있다. 모션 보상 유닛(44)은 또한 비디오 프레임의 비디오 블록을 디코딩할 때 비디오 디코더(30)에 의해 사용되는 비디오 프레임의 비디오 블록과 연관된 신택스 요소를 생성할 수 있다. 신택스 요소는, 예를 들어 예측 블록을 식별하는 데 사용되는 모션 벡터를 정의하는 신택스 요소, 예측 모드를 나타내는 임의의 플래그, 또는 여기에 설명된 임의의 다른 신택스 정보를 포함할 수 있다. 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 고도로 통합될 수 있지만, 개념을 설명하기 위해 별도로 도시되어 있다.
일부 구현예에서, 인트라 BC 유닛(48)은 모션 추정 유닛(42) 및 모션 보상 유닛(44)과 관련하여 위에서 설명된 것과 유사한 방식으로 벡터를 생성하고 예측 블록을 가져올 수 있지만, 예측 블록은 코딩 중인 현재 블록과 동일 프레임 내에 있고, 벡터는 모션 벡터와는 다르게 블록 벡터로 지칭된다. 특히, 인트라 BC 유닛(48)은 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 BC 유닛(48)은 다양한 인트라-예측 모드를 사용하여, 예를 들어 개별 인코딩 패스 동안 현재 블록을 인코딩할 수 있고, 레이트-왜곡(rate-distortion) 분석을 통해 그들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC 유닛(48)은 다양한 테스트된 인트라 예측 모드 중에서 사용할 적절한 인트라 예측 모드를 선택하여 그에 따라 인트라 모드 지시자를 생성할 수 있다. 예를 들어, 인트라 BC 유닛(48)은 테스트된 다양한 인트라 예측 모드에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값을 계산할 수 있고, 테스트된 모드 중 가장 좋은 레이트-왜곡 특성을 갖는 인트라 예측 모드를 사용할 적합한 인트라 예측 모드로 선택할 수 있다. 레이트-왜곡 분석은 일반적으로, 인코딩된 블록을 생성하기 위해 사용된 비트레이트(즉, 비트의 수)뿐 아니라, 인코딩된 블록과 인코딩된 블록을 생성하기 위해 인코딩된 원래의 인코딩되지 않은 블록 간의 왜곡(또는 오류)의 양을 결정한다. 인트라 BC 유닛(48)은 어떤 인트라 예측 모드가 블록에 대해 최상의 레이트-왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산할 수 있다.
다른 예들에서, 인트라 BC 유닛(48)은 본 명세서에 설명된 구현예들에 따라 인트라 BC 예측을 위한 이러한 기능들을 수행하기 위해 전체적으로 또는 부분적으로 모션 추정 유닛(42) 및 모션 보상 유닛(44)을 사용할 수 있다. 두 경우 모두, 인트라 블록 복사(intra block copy)의 경우, 예측 블록은, 픽셀 차이의 측면에서, 코딩할 블록과 밀접하게 매칭하는 것으로 간주되는 블록일 수 있으며, 픽셀 차이는 절대차의 합(SAD), 제곱차의 합 또는 다른 방식으로 결정될 수 있고, 예측 블록의 식별은 서브-정수 픽셀 위치들에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임으로부터 오든 인터 예측에 따라 다른 프레임으로부터 오든, 비디오 인코더(20)는, 코딩 중인 현재 비디오 블록의 픽셀 값으로부터 예측 블록의 픽셀 값을 빼는 것에 의해, 픽셀 차이 값을 형성하는 잔차 비디오 블록을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 및 크로마 성분 차이를 모두 포함할 수 있다.
인트라 예측 처리 유닛(46)은, 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 수행되는 인터 예측, 또는 인트라 BC 유닛(48)에 의해 수행되는 인트라 블록 복사 예측에 대한 대안으로서, 위에서 설명한 바와 같이, 현재 비디오 블록을 인트라 예측할 수 있다. 특히, 인트라 예측 처리 유닛(46)은 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수 있다. 그렇게 하기 위해, 인트라 예측 처리 유닛(46)은 다양한 인트라 예측 모드를 사용하여, 예를 들어 개별 인코딩 패스 동안 현재 블록을 인코딩할 수 있고, 인트라 예측 처리 유닛(46)(또는 일부 예들에서 모드 선택 유닛)은 테스트된 인트라 예측 모드에서 사용할 적절한 인트라 예측을 선택할 수 있다. 인트라 예측 처리 유닛(46)은 그 블록에 대한 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(56)에 제공할 수 있다. 엔트로피 인코딩 유닛(56)은 비트스트림에 선택된 인트라 예측 모드를 나타내는 정보를 인코딩할 수 있다.
예측 처리 유닛(41)이 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후, 합산기(50)은 현재 비디오 블록에서 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록의 잔차 비디오 데이터는 하나 이상의 변환 유닛(TU)에 포함될 수 있고 변환 처리 유닛(52)에 제공된다. 변환 처리 유닛(52)은 이산 코사인 변환(DCT, discrete cosine transform) 또는 개념적으로 유사한 변환과 같은 변환을 사용하여 잔차 비디오 데이터를 잔차 변환 계수로 변환한다.
변환 처리 유닛(52)은 결과적으로 얻어진 변환 계수를 양자화 유닛(54)에 전송할 수 있다. 양자화 유닛(54)은 비트 레이트를 더욱 감소시키기 위해 변환 계수를 양자화한다. 양자화 프로세스는 또한 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예에서, 양자화 유닛(54)은 그런 다음 양자화된 변환 계수를 포함하는 행렬의 스캔을 수행할 수 있다. 대안적으로, 엔트로피 인코딩 유닛(56)이 스캔을 수행할 수 있다.
양자화 후, 엔트로피 인코딩 유닛(56)은 예를 들어, 컨텍스트 적응 가변 길이 코딩(CAVLC, context adaptive variable length coding), 컨텍스트 적응 이진 산술 코딩(CAB AC, context adaptive binary arithmetic coding), 구문 기반 컨텍스트 적응 이진 산술 코딩(SBAC, syntax-based context-adaptive binary arithmetic coding), 확률 간격 분할 엔트로피(PIPE, probability interval partitioning entropy) 코딩 또는 다른 엔트로피 인코딩 방법론 또는 기술을 이용하여 양자화된 변환 계수를 비디오 비트스트림으로 인코딩한다. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 나중에 비디오 디코더(30) 로의 전송 또는 검색을 위해 저장 장치(32)에 보관될 수 있다. 엔트로피 인코딩 유닛(56)은 또한 코딩되는 현재 비디오 프레임에 대한 모션 벡터 및 다른 신택스 요소를 엔트로피 인코딩할 수 있다.
역양자화 유닛(58) 및 역변환 처리 유닛(60)은 각각 역양자화 및 역변환을 적용하여 다른 비디오 블록의 예측을 위한 참조 블록을 생성하기 위해 픽셀 도메인에서 잔차 비디오 블록을 재구성한다. 위에서 언급 한 바와 같이, 모션 보상 유닛(44)은 DPB(64)에 저장된 프레임의 하나 이상의 참조 블록으로부터의 모션 보상된 예측 블록을 생성할 수 있다. 모션 보상 유닛(44)은 또한 하나 이상의 보간 필터를 예측 블록에 적용하여 모션 추정에 사용하기 위한 서브-정수(sub-integer) 픽셀 값을 계산할 수 있다.
합산기(62)은 DPB(64)에 저장하기 위한 참조 블록을 생성하기 위해 모션 보상 유닛(44)에 의해 생성된 모션 보상된 예측 블록에 재구성된 잔차 블록을 추가한다. 그러면 참조 블록은 인트라 BC 유닛(48), 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 후속하는 비디오 프레임에서의 다른 비디오 블록을 인터 예측하기 위한 예측 블록으로서 사용될 수 있다.
도 3은 본 출원의 일부 구현예에 따른 예시적인 비디오 디코더(30)를 도시하는 블록도다. 비디오 디코더(30)는 비디오 데이터 메모리(79), 엔트로피 디코딩 유닛(80), 예측 처리 유닛(81), 역양자화 유닛(86), 역변환 처리 유닛(88), 합산기(90) 및 DPB(92)를 포함한다.
예측 처리 유닛(81)은 모션 보상 유닛(82), 인트라 예측 처리 유닛(84) 및 인트라 BC 유닛(85)을 더 포함한다. 비디오 디코더(30)는 도 2와 관련하여 비디오 인코더(20)에 대해 위에서 설명된 인코딩 프로세스와 일반적으로 역인 디코딩 프로세스를 수행할 수 있다. 예를 들어, 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터를 기반으로 예측 데이터를 생성할 수 있고, 인트라 예측 유닛(84)은 엔트로피 디코딩 유닛(80)으로부터 수신된 인트라 예측 모드 지시자에 기초하여 예측 데이터를 생성할 수 있다.
일부 예들에서, 비디오 디코더(30)의 유닛은 본 출원의 구현예들을 수행하기 위한 태스크를 받을 수 있다. 또한, 일부 예들에서, 본 개시의 구현예들은 비디오 디코더(30)의 유닛들 중 하나 이상 사이에 분할될 수 있다. 예를 들어, 인트라 BC 유닛(85)은 단독으로, 또는 모션 보상 유닛(82), 인트라 예측 처리 유닛(84) 및 엔트로피 디코딩 유닛(80)과 같은 비디오 디코더(30)의 다른 유닛들과 결합하여 본 출원의 구현예들을 수행할 수 있다. 일부 예에서, 비디오 디코더(30)는 인트라 BC 유닛(85)을 포함하지 않을 수 있고, 인트라 BC 유닛(85)의 기능은 모션 보상 유닛(82)과 같은 예측 처리 유닛(81)의 다른 컴포넌트에 의해 수행될 수 있다.
비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 컴포넌트에 의해 디코딩될 인코딩된 비디오 비트스트림과 같은 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79)에 저장된 비디오 데이터는, 예를 들어 저장 장치(32)로부터, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체(예: 플래시 드라이브 또는 하드 디스크)에 액세스하는 것에 의해 획득될 수 있다. 비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼(CPB, coded picture buffer)를 포함할 수 있다. 비디오 디코더(30)의 디코딩된 픽처 버퍼(DPB, decoded picture buffer)(92)는(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)에 의한 비디오 데이터를 디코딩하는 데 사용하기 위한 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리(79) 및 DPB(92)는 동기식 DRAM(SDRAM), 자기 저항성 RAM(MRAM), 저항성 RAM(RRAM) 또는 다른 유형의 메모리 장치를 포함하여, 동적 랜덤 액세스 메모리(DRAM)와 같은 다양한 메모리 장치에 의해 형성될 수 있다.. 설명의 편의를 위해, 비디오 데이터 메모리(79) 및 DPB(92)는 도 3에서 비디오 디코더(30)의 두 개의 별개의 컴포넌트로서 도시된다. 그러나 비디오 데이터 메모리(79) 및 DPB(92)는 동일한 메모리 장치 또는 별도의 메모리 장치에 의해 제공될 수 있다는 것은 통상의 기술자에게 명백할 것이다. 일부 예들에서, 비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 컴포넌트들과 함께 온칩이거나, 이들 컴포넌트들에 대해 오프칩일 수 있다.
디코딩 프로세스 동안, 비디오 디코더(30)는 인코딩된 비디오 프레임 및 연관된 신택스 요소의 비디오 블록을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)는 비디오 프레임 레벨 및/또는 비디오 블록 레벨에서 신택스 요소를 수신할 수 있다. 비디오 디코더(30)의 엔트로피 디코딩 유닛(80)은 양자화된 계수, 모션 벡터 또는 인트라-예측 모드 지시자, 및 기타 신택스 요소를 생성하기 위해 비트스트림을 엔트로피 디코딩한다. 그런 다음 엔트로피 디코딩 유닛(80)은 모션 벡터 및 다른 신택스 요소를 예측 처리 유닛(81)으로 전달한다.
비디오 프레임이 인트라 예측 코딩(I) 프레임으로서 코딩되거나, 다른 유형의 프레임에서 인트라 코딩된 예측 블록에 대해 코딩된 때, 예측 처리 유닛(81)의 인트라 예측 처리 유닛(84)은 현재 프레임의 이전에 디코딩된 블록으로부터의 참조 데이터 및 시그널링된 인트라 예측 모드에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다.
비디오 프레임이 인터-예측 코딩(즉, B 또는 P) 프레임으로서 코딩된 때, 예측 처리 유닛(81)의 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터 및 다른 신택스 요소 에 기초하여 현재 비디오 프레임의 비디오 블록에 대한 하나 이상의 예측 블록을 생성한다. 각각의 예측 블록은 참조 프레임 리스트들 중 하나 내의 참조 프레임으로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(92)에 저장된 참조 프레임에 기초한 디폴트 구성 기술을 사용하여 참조 프레임 리스트(List 0, List 1)을 구성할 수 있다.
일부 예들에서, 비디오 블록이 본 명세서에 설명된 인트라 BC 모드에 따라 코딩된 때, 예측 처리 유닛(81)의 인트라 BC 유닛(85)은 엔트로피 디코딩 유닛(80)로부터 수신된 다른 신택스 요소 및 블록 벡터에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한다.. 예측 블록은 비디오 인코더(20)에 의해 정의된 현재 비디오 블록과 동일한 픽처의 재구성된 영역 내에 있을 수 있다.
모션 보상 유닛(82) 및/또는 인트라 BC 유닛(85)은 모션 벡터 및 다른 신택스 요소를 파싱함으로써 현재 비디오 프레임의 비디오 블록에 대한 예측 정보를 결정한 다음, 예측 정보를 사용하여 디코딩되는 현재비디오 블록에 대한 예측 블록을 생성한다. 예를 들어, 모션 보상 유닛(82)은 수신된 신택스 요소의 일부를 이용하여, 그 비디오 프레임의 비디오 블록을 코딩하는 데 사용된 예측 모드(예컨대, 인트라 또는 인터 예측), 인터 예측 프레임 유형(예컨대, B 또는 P), 그 프레임에 대한 참조 프레임 리스트 중 하나 이상에 대한 구성 정보, 그 프레임의 각 인터 예측 인코딩된 비디오 블록에 대한 모션 벡터, 그 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 프레임의 비디오 블록을 디코딩하기 위한 기타 다른 정보를 결정한다.
유사하게, 인트라 BC 유닛(85)은 수신된 신택스 요소 중 일부, 예를 들어 플래그를 이용하여, 현재 비디오 블록이 인트라 BC 모드를 사용하여 예측되었다는 것, 재구성된 영역 내에 있고 DPB(92)에 저장되어야 하는 그 프레임의 비디오 블록의 구성 정보, 그 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 블록 벡터, 그 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측된 상태, 및 현재 비디오 프레임의 비디오 블록을 디코딩하기 위한 다른 정보를 결정할 수 있다.
모션 보상 유닛(82)은 또한 참조 블록의 서브-정수 픽셀에 대한 보간된 값을 계산하기 위해, 비디오 블록의 인코딩 동안, 비디오 인코더(20)에 의해 사용된 보간 필터를 사용하여 보간을 수행할 수 있다. 이 경우, 모션 보상 유닛(82)은 수신된 신택스 요소로부터 비디오 인코더(20)에 의해 사용되는 보간 필터를 결정하고 예측 블록을 생성하기 위해 보간 필터를 사용할 수 있다.
역양자화 유닛(86)은 양자화 정도를 결정하기 위해 비디오 프레임의 각 비디오 블록에 대해 비디오 인코더(20)가 계산한 것과 동일한 양자화 파라미터를 이용하여, 비트스트림으로 제공되고 엔트로피 디코딩 유닛(80)에 의해 엔트로피 디코딩된 양자화된 변환 계수를 역양자화한다. 역변환 처리 유닛(88)은 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역변환, 예를 들어 역DCT, 역 정수 변환 또는 개념적으로 유사한 역변환 프로세스를 변환 계수에 적용한다.
모션 보상 유닛(82) 또는 인트라 BC 유닛(85)이 벡터 및 기타 신택스 요소에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한 후, 합산기(90)는 역변환 처리 유닛(88)으로부터의 잔차 블록과 모션 보상 유닛(82) 및 인트라 BC 유닛(85)에 의해 생성된 대응하는 예측 블록을 합산하는 것에 의해 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다.. 디코딩된 비디오 블록을 추가로 처리하기 위해 인루프(in-loop) 필터(도시되지 않음)가 합산기(90)와 DPB(92) 사이에 위치될 수 있다. 주어진 프레임 내의 디코딩된 비디오 블록은 DPB(92)에 저장되며, 이것은 다음 비디오 블록의 후속 모션 보상에 사용되는 참조 프레임을 저장한다. DPB(92) 또는 DPB(92)와 분리된 메모리 장치는 또한 도 1의 디스플레이 장치(34)와 같은 디스플레이 장치에서 나중에 표시하기 위해 디코딩된 비디오를 저장할 수 있다.
전형적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 일반적으로 순서가 지정된 프레임 또는 픽처 세트를 포함한다. 각 프레임은 SL, SCb 및 SCr로 표시되는 3개의 샘플 어레이를 포함할 수 있다. SL은 루마 샘플의 2차원 어레이이다. SCb는 Cb 크로마 샘플의 2차원 어레이이다. SCr은 Cr 크로마 샘플의 2차원 어레이이다. 다른 경우에, 프레임은 단색일 수 있으므로 루마 샘플의 2차원 어레이 하나만 포함할 수 있다.
도 4a에 도시된 바와 같이, 비디오 인코더(20)(또는 더 구체적으로 파티션 유닛(45))는 먼저 프레임을 한 세트의 코딩 트리 유닛(CTU)으로 분할함으로써 프레임의 인코딩된 표현을 생성한다. 비디오 프레임은 왼쪽에서 오른쪽으로 그리고 위에서 아래로 래스터(raster) 스캔 순서로 연속적으로 정렬된 정수 개수의 CTU를 포함할 수 있다. 각각의 CTET는 가장 큰 논리 코딩 유닛이고, CTU의 폭과 높이는 시퀀스 파라미터 세트 내에서 비디오 인코더(20)에 의해 시그널링되며, 이로써 비디오 시퀀스 내의 모든 CTU는 128x128, 64x64, 32x32 및 16x 16 중 하나와 같은 크기를 가진다. 그러나 본 출원은 반드시 특정 크기로 제한되는 것은 아니라는 점에 유의해야 한다. 도 4b에 도시된 바와 같이, 각 CTU는 루마 샘플의 하나의 코딩 트리 블록(CTB), 크로마 샘플의 두 개의 대응하는 코딩 트리 블록, 및 코딩 트리 블록의 샘플을 코딩하는 데 사용되는 신택스 요소를 포함할 수 있다. 신택스 요소는 코딩된 픽셀 블록의 상이한 유형의 유닛의 특성, 그리고 인터 또는 인트라 예측, 인트라 예측 모드, 모션 벡터 및 기타 파라미터를 포함하여 비디오 시퀀스가 어떻게 비디오 디코더(30)에서 재구성될 수 있는지를 알려준다. 단색 픽처 또는 3개의 개별 컬러 평면을 갖는 픽처에서, CTU는 코딩 트리 블록의 샘플을 코딩하는 데 사용되는 신택스 요소 및 단일 코딩 트리 블록을 포함할 수 있다. 코딩 트리 블록은 NxN 블록의 샘플일 수 있다.
더 나은 성능을 달성하기 위해, 비디오 인코더(20)는 CTU의 코딩 트리 블록에서 이진 트리 분할, 쿼드-트리 분할 또는 둘의 조합과 같은 트리 분할을 반복적으로 수행하고 CTU를 더 작은 코딩 유닛(CU)으로 분할할 수 있다.
도 4c에 도시된 바와 같이, 64x64 CTU(400)은 먼저 블록 크기가 32x32인 4 개의 더 작은 CU로 분할된다. 4개의 더 작은 CU 중 CU(410) 및 CU(420)은 각각 블록 크기에 따라 16x16의 CU 4개로 분할된다. 2개의 16x16 CU(430 및 440)는 각각 블록 크기에 따라 8x8의 4개의 CU로 더 분할된다. 도 4d는 도 4c에 도시된 CTU(400)의 분할 프로세스의 최종 결과를 나타내는 쿼드-트리 데이터 구조를 도시하며, 쿼드-트리의 각 리프 노드는 32x32에서 8x8까지의 범위에 있는 각 크기를 가진 하나의 CU에 해당한다. 도 4b에 도시된 CTU와 유사하게, 각 CU는 루마 샘플의 코딩 블록(CB) 및 동일한 크기의 프레임의 크로마 샘플의 2개의 대응하는 코딩 블록, 및 코딩 블록의 샘플을 코딩하는 데 사용되는 신택스 요소를 포함할 수 있다.
단색 픽처 또는 3개의 개별 컬러 평면을 갖는 픽처에서, CU는 코딩 블록의 샘플을 코딩하는 데 사용되는 단일 코딩 블록 및 신택스 구조를 포함할 수 있다.
일부 구현예에서, 비디오 인코더(20)는 CU의 코딩 블록을 하나 이상의 MxN 예측 블록(PB)으로 더 분할할 수 있다. 예측 블록은 동일한 예측(인터 또는 인트라)이 적용되는 직사각형(정사각형 또는 비정사각형) 샘플 블록이다. 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의 루마 잔차 블록의 각 샘플은 CU의 예측 루마 블록 중 하나의 루마 샘플과 CU의 원래 루마 코딩 블록의 대응하는 샘플 간의 차이를 나타낸다. 유사하게, 비디오 인코더(20)는 CU에 대한 Cb 잔차 블록 및 Cr 잔차 블록을 각각 생성하고, 이로써 CU의 Cb 잔차 블록의 각 샘플이 CU의 예측 Cb 블록 중 하나에 있는 Cb 샘플과 CU의 원래 Cb 코딩 블록의 대응하는 샘플 간의 차이를 나타내고, CU의 Cr 잔차 블록의 각 샘플은 CU의 예측 Cr 블록 중 하나의 Cr 샘플과 CU의 원래 Cr 코딩 블록의 대응하는 샘플 간의 차이를 나타낸다.
또한, 도 4c에 도시된 바와 같이, 비디오 인코더(20)는 CU의 루마, Cb 및 Cr 잔차 블록을 하나 이상의 루마, Cb 및 Cr 변환 블록으로 분해하기 위해 쿼드-트리 분할(quad-tree partitioning)을 사용할 수 있다. 변환 블록은 동일한 변환이 적용되는 사각형(정사각형 또는 비정사각형) 샘플 블록이다. CU의 변환 유닛(TU)은 루마 샘플의 변환 블록, 크로마 샘플의 두 개의 대응하는 변환 블록, 및 변환 블록 샘플을 변환하는 데 사용되는 신택스 요소를 포함할 수 있다. 따라서 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)는 양자화된 변환 계수를 나타내는 신택스 요소에 대해 컨텍스트-적응 이진 산술 코딩(CAB AC)을 수행할 수 있다. 마지막으로, 비디오 인코더(20)는 코딩된 프레임 및 관련 데이터의 표현을 형성하는 비트 시퀀스를 포함하는 비트스트림을 출력할 수 있으며, 이는 저장 장치(32)에 저장되거나 목적지 장치(14)로 전송된다.
비디오 인코더(20)에 의해 생성된 비트스트림을 수신한 후, 비디오 디코더(30)는 비트스트림으로부터 신택스 요소를 획득하기 위해 비트스트림을 파싱할 수 있다. 비디오 디코더(30)는 비트스트림으로부터 획득된 신택스 요소들에 적어도 부분적으로 기초하여 비디오 데이터의 프레임들을 재구성할 수 있다. 비디오 데이터를 재구성하는 프로세스는 일반적으로 비디오 인코더(20)에 의해 수행되는 인코딩 프로세스와 서로 상반된다. 예를 들어, 비디오 디코더(30)는 현재 CU의 TU와 연관된 잔차 블록을 재구성하기 위해 현재 CU의 TU와 연관된 계수 블록에 대해 역변환을 수행할 수 있다. 비디오 디코더(30)는 또한 현재 CU의 PU에 대한 예측 블록의 샘플을 현재 CU의 TU의 변환 블록의 대응하는 샘플에 더함으로써 현재 CU의 코딩 블록을 재구성한다. 프레임의 각 CU에 대한 코딩 블록을 재구성 한 후, 비디오 디코더(30)는 프레임을 재구성할 수 있다.
위에서 언급 한 바와 같이, 비디오 코딩은 주로 두 가지 모드, 즉 프레임 내 예측(또는 인트라-예측) 및 프레임 간 예측(또는 인터-예측)을 사용하여 비디오 압축을 달성한다. IBC는 프레임 내 예측 또는 제3 모드로 간주될 수 있다. 두 모드 사이에서, 프레임 간 예측은 참조 비디오 블록에서 현재 비디오 블록을 예측하기 위해 모션 벡터를 사용하기 때문에 프레임 내 예측보다 코딩 효율성에 더 많이 기여한다.
그러나 비디오 데이터의 세부 사항을 보존하기 위해 비디오 블록 크기가 더 정제되고 비디오 데이터 캡처 기술이 계속 개선됨에 따라, 현재 프레임에 대한 모션 벡터를 나타내는 데 필요한 데이터의 양도 크게 증가한다. 이 문제를 극복하는 한 가지 방법은 공간 및 시간 도메인 모두에서 인접 CU 그룹이 예측 목적을 위해 유사한 비디오 데이터를 가질 뿐만 아니라 이러한 인접 CU 사이의 모션 벡터도 유사하다는 사실을 활용하는 것이다. 따라서, 그들의 공간적 및 시간적 상관 관계를 탐색함으로써 현재 CU의 모션 정보(예컨대, 모션 벡터)의 근사치로서, 공간적으로 인접한 CU 및/또는 시간적으로 함께 배치된 CU의 모션 정보를 이용하는 것이 가능하고, 이것은 또한 현재 CU의 "모션 벡터 예측자(MVP, motion vector predictor)"라고도 한다.
도 2와 관련하여 전술한 바와 같이 모션 추정 유닛(42)에 의해 결정된 현재 CU의 실제 모션 벡터를 비디오 비트스트림으로 인코딩하는 대신에, 현재 CU의 모션 벡터 예측자가 현재 CU의 실제 모션 벡터에서 감산됨으로써 현재 CU에 대한 모션 벡터 차(MVD, motion vector difference)를 생성한다.
이렇게 함으로써, 프레임의 각 CU에 대해 모션 추정 유닛(42)에 의해 결정된 모션 벡터를 비디오 비트스트림으로 인코딩할 필요가 없으며, 비디오 비트스트림에서 모션 정보를 표현하기 위해 사용되는 데이터의 양을 크게 줄일 수 있다.
코드 블록의 프레임 간 예측 동안 참조 프레임에서 예측 블록을 선택하는 프로세스와 마찬가지로, 공간적으로 인접한 CU 및/또는 현재 UC의 시간적으로 함께 위치한 CU와 연관된 잠재적인 후보 모션 벡터를 이용하여 현재 CU를 위한 모션 벡터 후보 리스트를 구성하고, 그런 다음 현재 CU에 대한 모션 벡터 예측자로서 모션 벡터 후보 리스트로부터 하나를 선택하기 위해, 비디오 인코더(20)와 비디오 디코더(30) 모두에 의해 규칙 세트가 채택되어야 한다. 그렇게 함으로써, 비디오 인코더(20)와 비디오 디코더(30) 사이에서 모션 벡터 후보 리스트 자체를 전송할 필요가 없으며, 모션 벡터 후보 리스트 내에서 선택된 모션 벡터 예측자의 인덱스는 비디오 인코더(20) 및 비디오 디코더(30)가 현재 CU를 인코딩하고 디코딩하기 위해 모션 벡터 후보 리스트 내에서 동일한 모션 벡터 예측자를 이용하기에 충분하다.
일부 구현예에서, 각각의 인터-예측 CU는 모션 벡터 후보 리스트를 구성하기 위해 인터(inter)(이것은 또한 "어드밴스드 모션 벡터 예측(AMVP, advanced motion vector prediction)"이라고도 한다), 스킵(skip), 및 병합(merge)를 포함하는 3개의 모션 벡터 예측 모드를 가진다. 각 모드에서, 하나 이상의 모션 벡터 후보가 아래에 설명된 알고리즘에 따라 모션 벡터 후보 리스트에 추가될 수 있다. 궁극적으로 후보 리스트에 있는 이들 중 하나는 비디오 인코더(20)에 의해 비디오 비트스트림으로 인코딩되거나 비디오 디코더(30)에 의해 비디오 비트스트림으로부터 디코딩될 인터 예측 CU의 최상의 모션 벡터 예측자로 사용된다. 후보 리스트로부터 최상의 모션 벡터 예측자를 찾기 위해, 모션 벡터 경쟁(MVC, motion vector competition) 방식이 도입되어 공간적 및 시간적 모션 벡터 후보를 포함하는 모션 벡터의 주어진 후보 세트, 즉 모션 벡터 후보 리스트로부터 모션 벡터를 선택한다.
공간적으로 인접하거나 시간적으로 함께 배치된 CU로부터 모션 벡터 예측자 후보를 유도하는 것에 더하여, 모션 벡터 예측자 후보는 소위 "히스토리-기반 모션 벡터 예측(HMVP, history-based motion vector prediction)" 테이블로부터 유도될 수도 있다. HMVP 테이블에는 미리 정의된 수의 모션 벡터 예측자가 들어 있으며, 각각은 동일한 행의 CTU들(또는 때로는 동일한 CTU)의 특정 CU를 인코딩/디코딩하는 데 사용된 것이다. 이러한 CU의 공간적/시간적 근접성으로 인해 HMVP 테이블의 모션 벡터 예측자 중 하나가 동일한 행의 CTU 내의 다른 CU를 인코딩/디코딩하는 데 재사용 될 가능성이 높다. 따라서 모션 벡터 후보 리스트를 구성하는 과정에 HMVP 테이블을 포함시켜 더 높은 코드 효율성을 달성할 수 있다.
일부 구현예에서, HMVP 테이블은 고정된 길이(예를 들어, 5)를 가지며 준-선입 선출(quasi-FIFO) 방식으로 관리된다. 예를 들어, CU의 인터 코딩된 블록 하나를 디코딩할 때 CU에 대해 모션 벡터가 재구성된다. HMVP 테이블은 재구성된 모션 벡터로 즉석에서 업데이트되는데, 이는 이러한 모션 벡터는 후속 CU의 모션 벡터 예측자가 될 수 있기 때문이다. HMVP 테이블을 업데이트할 때 두 가지 시나리오가 있다: (i) 재구성된 모션 벡터가 HMVP 테이블의 다른 기존 모션 벡터와 다르거나, (ii) 재구성된 모션 벡터가 HMVP의 기존 모션 벡터 중 하나와 동일한 경우이다. 첫 번째 시나리오에서는 재구성된 모션 벡터가 HMVP 테이블이 꽉 차지 않은 경우 최신으로 HMVP 테이블에 추가된다. HMVP 테이블이 이미 가득 찬 경우 HMVP 테이블에서 가장 오래된 모션 벡터를 HMVP 테이블에서 먼저 제거해야 재구성된 모션 벡터가 최신 모션 벡터로 추가된다. 즉, 이 경우 HMVP 테이블은 FIFO 버퍼와 유사하므로 FIFO 버퍼의 머리에 위치하며 이전에 인터 코딩된 다른 블록과 관련된 모션 정보가 버퍼 밖으로 이동되어 재구성된 모션 벡터가 FIFO 버퍼의 꼬리에 HMVP 테이블의 최신 멤버로 추가된다. 두 번째 시나리오의 경우, 재구성된 모션 벡터가 HMVP 테이블에 최신으로 추가되기 전에 재구성된 모션 벡터와 실질적으로 동일한 HMVP 테이블의 기존 모션 벡터가 HMVP 테이블에서 제거된다. HMVP 테이블이 또한 FIFO 버퍼 형태로 유지되는 경우, HMVP 테이블에서 동일한 모션 벡터 이후의 모션 벡터 예측자는 제거된 모션 벡터가 남긴 공간을 차지하기 위해 한 요소 씩 앞으로 이동하고, 그런 다음 재구성된 모션 벡터는 HMVP 테이블의 최신 멤버로 FIFO 버퍼의 꼬리에 추가된다.
HMVP 테이블의 모션 벡터는 AMVP, 병합, 스킵 등과 같은 다른 예측 모드 하에서 모션 벡터 후보 리스트에 추가될 수 있다. 현재 블록에 인접하지 않더라도 HMVP 테이블에 저장되어있는 이전에 인터 코딩된 블록의 모션 정보는 보다 효율적인 모션 벡터 예측을 위해 활용될 수 있음을 확인하였다.
현재 CU에 대한 모션 벡터의 주어진 후보 세트 내에서 하나의 MVP 후보가 선택된 후, 비디오 인코더(20)는 대응하는 MVP 후보에 대한 하나 이상의 신택스 요소를 생성하고 비디오 디코더(30)가 신택스 요소를 사용하여 비디오 비트스트림에서 MVP 후보를 검색할 수 있도록 비디오 비트스트림으로 인코딩할 수 있다. 모션 벡터 후보 세트를 구성하는 데 사용되는 특정 모드에 따라, 다른 모드(예: AMVP, 병합, 건너 뛰기 등)는 다른 신택스 요소 집합을 갖는다. AMVP 모드의 경우 신택스 요소에는 인터 예측 지시자(List 0, List 1 또는 양방향 예측), 참조 인덱스, 모션 벡터 후보 인덱스, 모션 벡터 예측 잔차 신호 등이 포함된다. 스킵 모드 및 병합 모드의 경우, 현재 CU가, 코딩된 병합 인덱스가 참조하는 인접 CU로부터, 인터 예측 지시자, 참조 인덱스 및 모션 벡터를 포함한 다른 신택스 요소를 상속하기 때문에, 병합 인덱스만이 비트스트림으로 인코딩된다. 스킵 코딩된 CU의 경우, 모션 벡터 예측 잔차 신호 또한 생략된다.
도 5a는 본 개시의 일부 구현예에 따라 인코딩/디코딩될 현재 CU의 공간적으로 인접하고 시간적으로 함께 위치한 블록 위치를 도시하는 블록도다. 주어진 모드에 대해, 모션 벡터 예측(MVP) 후보 리스트는 먼저 공간적으로 왼쪽 및 위의 인접 블록 위치와 연관된 모션 벡터의 가용 여부와, 시간적으로 함께 배치된 블록 위치와 연관된 모션 벡터의 가용 여부를 확인한 다음, FDMVP 테이블의 모션 벡터를 확인하는 것에 의해 구성된다. MVP 후보 리스트를 구성하는 과정에서 일부 중복 MVP 후보가 후보 리스트에서 제거되고 필요한 경우 0의값을 가진 모션 벡터가 추가되어 후보 리스트가 고정된 길이를 갖도록 한다(모드마다 다른 고정 길이를 가질 수 있음에 유의). MVP 후보 리스트를 구성한 후, 비디오 인코더(20)는 후보 리스트에서 최상의 모션 벡터 예측자를 선택하고 선택된 후보를 나타내는 대응 인덱스를 비디오 비트스트림으로 인코딩할 수 있다. 도 5a를 예로 사용하여, 후보 리스트가 2의 고정 길이를 갖는다고 가정하면 현재 CU에 대한 모션 벡터 예측자(MVP) 후보 리스트는 AMVP 모드에서 다음 단계를 순서대로 수행하여 구성될 수 있다:
1) 공간적으로 인접한 CU에서 MVP 후보 선택
a) A0으로 시작하고 A1로 끝나는 두 개의 왼쪽 공간 인접 CU 중 하나에서 최대 하나의 스케일되지 않은(non-scaled) MVP 후보를 도출한다.
b) 이전 단계에서 왼쪽으로부터 가용한 스케일되지 않은 MVP 후보가 없으면, A0으로 시작하고 A1로 끝나는 두 개의 왼쪽 공간 인접 CU 중 하나에서 최대 하나의 스케일된 MVP 후보를 도출한다.
c) B0으로 시작하여 B1을 지나 B2로 끝나는 위쪽의 3개의 공간 인접 CU 중 하나에서 스케일되지 않은 MVP 후보를 최대 1개까지 도출한다.
d) A0도 Al도 사용할 수 없거나 그들이 인트라 모드에서 코딩된 경우, B0에서 시작하여 B1를 지나 B2로 끝나는 위쪽의 3개의 공간 인접 CU 중 하나에서 최대 하나의 스케일된 MVP 후보를 도출한다.
2) 이전 단계에서 두 개의 MVP 후보가 발견되고 그들이 동일한 경우, MVP 후보 리스트에서 두 후보 중 하나를 제거한다.
3) 시간적으로 함께 위치한 CU에서 MVP 후보 선택
a) 이전 단계 이후의 MVP 후보 리스트가 두 개의 MVP 후보를 포함하지 않는 경우, 시간적으로 함께 위치한 CU(예: TO)에서 최대 하나의 MVP 후보를 도출한다.
4) HMVP 테이블에서 MVP 후보 선택
a) 이전 단계 이후의 MVP 후보 리스트가 두 개의 MVP 후보를 포함하지 않는 경우, HMVP 테이블에서 최대 두 개의 히스토리-기반 MVP를 추출한다.
5) 이전 단계 이후 MVP 후보 리스트가 두 개의 MVP 후보를 포함하지 않는 경우, MVP 후보 리스트에 최대 두 개의 0의 값을 가진 MVP를 추가한다.
위에서 구성한 AMVP-모드 MVP 후보 리스트에는 후보가 두 개뿐이므로, 후보 리스트 내의 두 MVP 후보 중 어느 것이 현재 CU의 디코딩에 사용되는지를 나타내기 위해 이진 플래그와 같은 관련된 신택스 요소가 비트스트림으로 인코딩된다.
일부 구현예에서, 스킵 또는 병합 모드 하에서 현재 CU에 대한 MVP 후보 리스트는 위와 같은 순서로 유사한 단계 세트를 수행함으로써 구성될 수 있다. 스킵 또는 병합 모드를 위한 MVP 후보 리스트에는 "페어-와이즈 병합 후보(pair-wise merge candidate)"라고 불리는 특별한 종류의 병합 후보가 포함되어 있음을 주목한다. 페어-와이즈 병합 후보는 이전에 도출된 두 병합 모드 모션 벡터 후보의 MV를 평균하여 생성된다. 병합 MVP 후보 리스트의 크기(예: 1에서 6까지)는 현재 CU의 슬라이스 헤더 내에서 시그널링된다. 병합 모드에서 각 CU에 대해, 최상의 병합 후보의 인덱스는 절단된 단항 이진화(TU, truncated unary binarization)를 사용하여 인코딩된다. 병합 인덱스의 첫 번째 빈은 컨텍스트로 코딩되고 바이패스 코딩은 다른 빈에 사용된다.
위에서 언급한 바와 같이 히스토리-기반 MVP는 공간 MVP 및 시간 MVP 이후의 병합 MVP 후보 리스트 또는 AMVP-모드 MVP 후보 리스트 중 하나에 추가될 수 있다. 이전에 인터 코딩된 CU의 모션 정보는 HMVP 테이블에 저장되어 현재 CU의 MVP 후보로 사용된다. HMVP 테이블은 인코딩/디코딩 프로세스 동안 유지된다. 비-서브-블록(non-sub-block) 인터 코딩된 CU가 있을 때마다, 관련 모션 벡터 정보가 HMVP 테이블의 마지막 엔트리에 새 후보로 추가되고, 그와 함께 HMVP 테이블의 첫 번째 엔트리에 저장된 모션 벡터 정보가 제거된다(HMVP 테이블이 이미 가득 차 있고 테이블에 연관된 모션 벡터 정보의 동일한 중복이 없는 경우). 대안적으로, 연관된 모션 벡터 정보가 HMVP 테이블의 마지막 엔트리에 추가되기 전에 연관된 모션 벡터 정보와 동일한 정보는 테이블에서 제거된다.
위에서 언급 한 바와 같이, 인트라 블록 카피(IBC)는 스크린 콘텐츠 자료의 코딩 효율을 상당히 향상시킬 수 있다. IBC 모드는 블록-레벨 코딩 모드로서 구현되기 때문에, 비디오 인코더(20)에서 블록 매칭(BM, block matching)을 수행하여 각 CU에 대한 최적의 블록 벡터를 찾는다. 여기서 블록 벡터는, 현재 블록으로부터 현재 픽처 내에서 이미 재구성된 참조 블록까지의 변위를 나타내는 데 사용된다. IBC 코딩된 CU는 인트라 또는 인터 예측 모드가 아닌 제3 예측 모드로 취급된다.
CU 레벨에서, IBC 모드는 다음과 같이 IBC AMVP 모드 또는 IBC 스킵/병합 모드로 시그널링될 수 있다:
- IBC AMVP 모드: CU의 실제 블록 벡터와 CU의 블록 벡터 후보에서 선택된 CU의 블록 벡터 예측자 간의 블록 벡터 차(BVD)는 모션 벡터 차가 위에서 설명한 AMVP 모드 아래에서 인코딩되는 것과 같은 방식으로 인코딩된다. 블록 벡터 예측 방법은 두 개의 블록 벡터 후보를 예측자로 사용하는데, 하나는 왼쪽 인접한 것으로부터, 다른 하나는 위쪽 인접한 것으로부터 제공된다(IBC 코딩된 경우). 인접한 것 중 어느 것도 사용할 수 없는 경우, 디폴트 블록 벡터가 블록 벡터 예측자로 사용된다. 이진 플래그는 블록 벡터 예측 인덱스를 나타내기 위해 시그널링된다. IBC AMVP 후보 리스트는 공간 및 HMVP 후보로 구성된다.
- IBC 스킵/병합 모드: 병합 후보 인덱스는, 인접 IBC 코딩 블록으로부터 병합 후보 리스트 내의 어느 블록 벡터 후보가 현재 블록에 대한 블록 벡터를 예측하는 데 사용되는지를 나타내는 데 사용된다. IBC 병합 후보 리스트는 공간, HMVP 및 페어-와이즈 후보로 구성된다.
최첨단 코딩 표준에 의해 채택된 코딩 효율을 개선하는 또 다른 접근법은 예를 들어 멀티 코어 프로세서를 사용하여 비디오 인코딩/디코딩 프로세스에 병렬 처리를 도입하는 것이다. 예를 들어, WPP(wavefront parallel processing)는 여러 스레드를 사용하여 병렬로 여러 행의 CTU를 인코딩 또는 디코딩하는 기능으로, HEVC에 이미 도입되었다.
도 5b는 본 개시의 일부 구현예에 따라 WPP를 사용하여 픽처의 여러 행의 CTU에 대한 다중 스레드 인코딩을 나타내는 블록도이다. WPP가 활성화되면 여러 행의 CTU를 웨이브프론트(wavefront) 방식으로 병렬로 처리할 수 있으며, 두 개의 인접한 웨이브프론트 시작 사이에 두 CTU의 지연이 있을 수 있다. 예를 들어, WPP를 사용하여 픽처(500)를 코딩하기 위해, 비디오 인코더(20) 및 비디오 디코더(30)와 같은 비디오 코더는 픽처(500)의 코딩 트리 유닛(CTU)을 복수의 웨이브프론트로 분할할 수 있으며, 각각의 웨이브프론트는 픽처 내의 각 행의 CTU에 대응한다. 비디오 코더는 예를 들어 제1 코더 코어 또는 스레드를 사용하여 상단 웨이브프론트(top wavefront)의 코딩을 시작할 수 있다. 비디오 코더가 상단 웨이브프론트의 2개 이상의 CTU를 코딩한 후, 비디오 코더는 예를 들어 제2 병렬 코더 코어 또는 스레드를 사용하여 상단 웨이브프론트를 코딩하는 것과 병렬로 상단에서 두 번째의 웨이브프론트를 코딩하기 시작할 수 있다. 비디오 코더가 상단에서 두 번째의 웨이브프론트의 두 개 이상의 CTU를 코딩한 후, 비디오 코더는 예를 들어, 제3 병렬 코더 코어 또는 스레드를 이용하여, 상단에서 세 번째의 웨이브프론트의 코딩을 그보다 높은 웨이브프론트를 코딩하는 것과 병렬로 시작할 수 있다. 이 패턴은 픽처(500)에서 웨이브프론트 아래로 계속될 수 있다. 본 명세서에서는 비디오 코더가 WPP를 이용하여 동시에 코딩하고 있는 CTU들의 집합을 "CTU 그룹"이라 한다. 따라서 비디오 코더가 WPP를 사용하여 픽처를 코딩할 때 CTU 그룹의 각 CTU는 픽처의 고유한 웨이브프론트에 속할 수 있으며, 그 CTU는 픽처의 적어도 2개 열의 CTU만큼 각각의 웨이브프론트 위쪽에 있는 CTU로부터 오프셋될 수 있다.
비디오 코더는, 현재 웨이브프론트의 제1 코드 블록을 포함하는 슬라이스에 대한 슬라이스 헤더의 하나 이상의 요소뿐 아니라, 상기 웨이브프론트의 처음 두 블록의 데이터에 기초하여 현재 웨이브프론트의 CAB AC를 수행하기 위해 현재 웨이브프론트에 대한 컨텍스트를 초기화할 수 있다. 비디오 코더는 후속하는 CTU 행 위의 CTU 행의 2개의 CTU를 코딩한 후 컨텍스트 상태를 사용하여 후속하는 웨이브프론트(또는 CTU 행)의 CABAC 초기화를 수행할 수 있다. 즉, 현재 웨이브프론트의 코딩을 시작하기 전에 비디오 코더(또는 보다 구체적으로 비디오 코더의 스레드)는 현재 웨이브프론트 위의 웨이브프론트의 적어도 두 블록을 코딩할 수 있으며, 현재 웨이브프론트는 픽처의 상부 행의 CTU가 아닌 것으로 가정한다. 그 다음, 비디오 코더는 현재 웨이브프론트 위의 적어도 두 개의 웨이브프론트 블록을 코딩한 후 현재 웨이브프론트에 대한 CABAC 컨텍스트를 초기화할 수 있다. 이 예에서, 픽처(500)의 각각의 CTU 행은 분리된 파티션이고 관련된 스레드(WPP Thread 1, WPP Thread2, ...)이며, 이로써 픽처(500)의 다수의 CTU 행이 병렬로 인코딩될 수 있다.
HMVP 테이블의 현재 구현은 이전에 재구성된 모션 벡터를 저장하기 위해 글로벌 모션 벡터(MV) 버퍼를 사용하기 때문에, 이 HMVP 테이블은 도 5b와 관련하여 위에서 설명된 WPP 가능 병렬 인코딩 방식에서는 구현 될 수 없다. 특히, 글로벌 MV 버퍼가 비디오 코더의 인코딩/디코딩 프로세스의 모든 스레드에 의해 공유된다는 사실은, 첫 번째 WPP 스레드(즉, WPP Thread 1) 이후의 WPP 스레드가 시작되지 못하게 하는데, 왜냐하면 이들 WPP 스레드는 첫 번째 WPP 스레드(즉, 첫 번째 CTU 행)의 마지막 CTU(즉, 가장 오른쪽의 CTU)로부터 HMVP 테이블 업데이트가 완료되기를 기다려야 하기 때문이다.
이를 극복하기 위해 WPP 스레드가 공유하는 글로벌 MV 버퍼는 다수의 CTU 행 전용 버퍼로 대체하는 것이 제안되며, 이로써 WPP가 비디오 코더에서 활성화되는 때, CTU 행의 각 웨이브프론트가 대응하는 WPP 스레드에 의해 처리되고 있는 CTU 행에 대응하는 HMVP 테이블을 저장하기 위한 각자 자기만의 버퍼를 가질 수 있다. 자신만의 HMVP 테이블을 가진 각 CTU 행은 CTU 행의 첫 번째 CU를 코딩하기 전에 HMVP 테이블을 리셋하는 것과 동일하다는 점에 유의하자. HMVP 테이블 리셋은 다른 CTU 행의 코딩으로 인한 HMVP 테이블의 모든 모션 벡터를 제거해 버리는 것이다. 일 구현예에서, 리셋 동작은 HMVP 테이블에서 이용 가능한 모션 벡터 예측자의 수량을 0이 되도록 설정하는 것이다. 또 다른 구현예에서, 리셋 동작은 HMVP 테이블에 있는 모든 엔트리의 참조 인덱스를 -1과 같은 유효하지 않은 값으로 설정하는 것일 수 있다. 이렇게 하면, AMVP, 병합 및 스킵의 세 가지 모드 중 어느 것인지에 관계 없이, 특정 웨이브프론트 내에서 현재 CTU에 대한 MVP 후보 리스트의 구성은 그 특정 웨이브프론트를 처리하는 WPP 스레드와 연관된 HMVP 테이블에 따른다.
위에서 설명한 2-CTU 지연 이외의 상이한 웨이브프론트 간 상호 의존성(inter-dependency)는 없고, 상이한 웨이브프론트와 관련된 모션 벡터 후보 리스트의 구성은 도 5b에 도시된 WPP 프로세스와 같이 병렬로 진행될 수 있다. 즉, 특정 웨이브프론트 처리를 시작할 때 HMVP 테이블은 다른 WPP 스레드에 의한 CTU의 다른 웨이브프론트 코딩에 영향을 주지 않고 비어 있도록 리셋된다. 경우에 따라, 각 개별 CTU를 코딩하기 전에 HMVP 테이블을 빈 상태로 리셋할 수 있다. 이 경우 HMVP 테이블의 모션 벡터는 특정 CTU로 제한되며 HMVP 테이블 내의 모션 벡터가 특정 CTU 내의 현재 CU의 모션 벡터로 선택될 가능성이 더 높다.
도 6은 비디오 인코더(20) 또는 비디오 디코더(30)와 같은 비디오 코더가 본 개시의 일부 구현예에 따라 적어도 HMVP 테이블을 사용하여 모션 벡터 예측자 후보 리스트를 구성하는 기술을 구현하는 예시적인 프로세스를 도시하는 흐름도이다. 설명을 위해, 이 흐름도는 비디오 디코딩 프로세스를 보여준다. 먼저, 비디오 디코더(30)는 다수의 인코딩된 픽처와 관련된 데이터를 포함하는 인코딩된 비디오 비트스트림을 획득한다(610). 도 4a 및 4c에 도시된 바와 같이, 각 픽처는 여러 행의 코딩 트리 유닛(CTU)을 포함하고 각 CTU는 하나 이상의 코딩 유닛(CU)을 포함한다. 비디오 디코더(30)는 비디오 비트스트림으로부터 신택스 요소 및 픽셀 값과 같은 서로 다른 정보를 추출하여 행 단위로 화상을 재구성한다.
현재 행의 CTU들을 디코딩하기 전에, 비디오 디코더(30)는 먼저 현재 행의 CTU들에 대한 히스토리-기반 모션 벡터 예측자(HMVP) 테이블을 리셋(620)한다. 위에서 언급 한 바와 같이, HMVP 테이블의 리셋은 비디오 디코더(30)가 예를 들어 하나의 스레드가 CTU 행마다 자체 HMVP 테이블을 갖는 다중 스레드 프로세스, 또는 하나의 코어가 CTU 행마다 자체 HMVP 테이블을 갖는 다중 코어 프로세서, 또는 둘 다를 이용하여 병렬로 현재 픽처의 다수의 CTU 행을 디코딩할 수 있도록 한다. 또 다른 일부 실시예에서, 현재 CTU를 디코딩하기 전에, 비디오 디코더(30)는 먼저 현재 CTU에 대한 히스토리-기반 모션 벡터 예측자(HMVP) 테이블을 리셋(620)한다. 위에서 언급 한 바와 같이, HMVP 테이블의 리셋은, 비디오 디코더(30)가 예를 들어 하나의 스레드가 CTU 행마다 자체 HMVP 테이블을 갖는 다중 스레드 프로세스, 또는 하나의 코어가 CTU 행마다 자체 HMVP 테이블을 갖는 다중 코어 프로세서, 또는 둘 다를 이용하여 병렬로 현재 픽처의 다수의 CTU 행을 디코딩할 수 있도록 한다.
현재 행의 CTU를 디코딩하는 동안(630), 비디오 디코더(30)는 HMVP 테이블에서 복수의 모션 벡터 예측자를 유지한다(630-1). 위에서 언급 한 바와 같이, HMVP 테이블에 저장된 각 모션 벡터 예측자는 현재 CTU 행 내의 적어도 다른 CU를 디코딩하는 데 사용되었던 것이다. 모션 벡터 예측자가 HMVP 테이블에 존재한다는 사실은 위에서 설명한 것처럼 HMVP 테이블이 모션 벡터 후보 리스트를 구성하는 과정에 참여할 때 현재 행의 CTU들 내의 다른 CU를 예측하는 데 다시 사용될 수 있기 때문이다.
현재 행의 CTU들의 현재 CU에 대해, 비디오 디코더(30)는 먼저 비디오 비트스트림으로부터의 예측 모드를 추출한다(630-3). 위에서 언급한 바와 같이, CU는 AMVP(advanced motion vector prediction) 모드, 병합 모드, 스킵 모드, IBC AMVP 모드 및 IBC 병합 모드를 포함하는 여러 유형의 예측 모드를 가질 수 있다. 비디오 인코더(20)가 CU에 대한 적절한 예측 모드를 선택하면, 선택된 예측 모드는 비트스트림으로 시그널링된다. 위에서 언급한 바와 같이, 모션 벡터 후보 리스트를 구성하기 위해 다른 순서로 실행되는 다른 세트의 단계들이 있다. 여기서 비디오 디코더(30)는 예측 모드에 따라 그리고 HMVP 테이블의 복수의 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터 후보 리스트를 구성한다(630-5). 모션 벡터 후보 리스트가 포함하는 다른 소스에는 공간적으로 인접한 CU 및/또는 현재 CU의 시간적으로 함께 위치한 CU의 모션 벡터 예측자가 포함되고(예측 모드가 AMVP 모드, IBC AMVP 모드 및 IBC 병합 모드 중 하나 인 경우), 선택적으로 페어-와이즈 모션 벡터 예측자가 포함된다(예측 모드가 병합 모드 및 스킵 모드 중 하나 인 경우). 선택적으로, 모션 벡터 후보 리스트가 미리 정의된 길이에 도달하지 않을 때, 하나 이상의 0의 값을 가진 모션 벡터 예측자가 모션 벡터 후보 리스트에 추가될 수 있다.
다음으로, 비디오 디코더(30)는 모션 벡터 후보 리스트로부터 현재 CU에 대한 모션 벡터 예측자를 선택하고(630-7) 예측 모드 및 선택한 모션 벡터 예측자 에 적어도 부분적으로 기초하여 모션 벡터를 결정한다(630-9). 위에서 언급한 바와 같이, 예측 모드가 AMVP 모드인지 여부에 따라 선택된 모션 벡터 예측자는 현재 CU에 대한 추정된 모션 벡터일 수도 있고 아닐 수도 있다. 예를 들어, 예측 모드가 AMVP 모드인 경우, 비트스트림에서 복원된 모션 벡터 차이를 선택된 모션 벡터 예측자에 더하여 추정된 모션 벡터를 결정한 다음, 적어도 부분적으로 추정된 모션 벡터 및 참조 픽처 내의 대응하는 CU를 이용하여 현재 CU를 디코딩한다. 그러나 예측 모드가 병합 또는 스킵 모드인 경우, 선택된 모션 벡터 예측자는 이미 추정된 모션 벡터이며, 이는 참조 픽처 내의 대응하는 CU와 함께 현재 CU를 디코딩하는 데 사용할 수 있다. 마지막으로, 비디오 디코더(30)는 결정된 모션 벡터에 기초하여 HMVP 테이블을 업데이트한다(630-11). 위에서 언급했듯이 HMVP 테이블의 모든 멤버는 이전에 적어도 다른 CU를 디코딩하는 데 사용되었던 것이며, 또 테이블 리셋에 의해 또는 현재 행의 CTU들 내의 또 다른 후속 CU를 디코딩하기 위해 사용되는 모션 벡터의 삽입에 의해 제거되기까지는 모션 벡터 후보 리스트를 구성하기 위해 HVMP 테이블 내에 유지된다.
일부 구현예에서, 모션 벡터를 HMVP 테이블에 삽입하는 것은 현재 CU에 대해 결정된 모션 벡터와 HMVP 테이블의 복수의 모션 벡터 예측자 간의 비교 결과에 기초하여 두 가지 가능한 시나리오를 갖는다. HMVP 테이블의 복수의 모션 벡터 예측자 중 어느 것도 결정된 모션 벡터와 동일하지 않은 경우, HMVP 테이블이 가득 차고 모션 벡터가 추가될 때 HMVP 테이블에서 가장 먼저 또는 가장 오래된 모션 벡터 예측자가 제거되고, 상기 결정된 모션 벡터가 최신의 것으로서 테이블에 추가된다. HMVP 테이블에 있는 복수의 모션 벡터 예측자 중 하나가 그 모션 벡터와 동일한 경우, HMVP 테이블에서 하나의 동일한 모션 벡터 예측자가 제거되고 제거된 모션 벡터 예측자의 뒤에 있는 다른 모든 모션 벡터 예측자가 HMVP 테이블 내에서 앞으로 이동함으로써, 상기 모션 벡터가 HMVP 테이블의 끝에 최신의 것으로서 추가된다.
위에서 언급한 바와 같이, 여러 행의 CTU들 중 둘 이상은 예를 들어 WPP를 사용하여 병렬로 인코딩/디코딩될 수 있으며, 각 행의 CTU는 해당 행의 CTU를 인코딩/디코딩하는 데 사용되는 복수의 히스토리-기반 모션 벡터 예측자를 저장하기 위한 연관된 HMVP 테이블을 가진다. 예를 들어, 하나의 스레드는 디코딩되는 현재 픽처의 특정 행의 CTU의 디코딩에 할당됨으로써, 다른 행의 CTU가 서로 다른 연관된 스레드를 가지며 도 5b와 관련하여 위에서 설명한 바와 같이 병렬로 디코딩될 수 있다. 일부 예들에서, 비디오 디코더(30)는 모션 벡터 후보 리스트 내의 하나 이상의 모션 벡터 예측자를 중복된 것으로 식별하고 코딩 효율을 더 향상시키기 위해 모션 벡터 후보 리스트로부터 그들을 제거한다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 전송될 수 있으며 하드웨어 기반 처리 장치에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 데이터 저장 매체와 같은 유형의 매체에 해당하는 컴퓨터 판독 가능 저장 매체 또는 예를 들어 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. . 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독 가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체일 수 있다.
데이터 저장 매체는 본 출원에서 설명된 구현예들의 구현을 위한 명령어, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스 될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
본 명세서의 구현예의 설명에 사용된 용어는 특정 구현을 설명하기 위한 목적일 뿐이며 청구범위를 제한하려는 것이 아니다. 구현예의 설명 및 첨부된 청구 범위에 사용된 바와 같이, "복수의" 또는 "다수의"와 같은 용어를 사용하지 않더라도 문맥이 달리 명시하지 않는 한 복수 형태도 포함하도록 의도된다. 본 명세서에서 사용된 용어 "및/또는"은 하나 이상의 연관된 열거된 항목의 임의의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 또한 이해될 것이다. 본 명세서에서 사용될 때 "포함하는(포함하다)"는 용어는 언급된 특징, 요소 및/또는 구성 요소의 존재를 명시하지만 하나 이상의 다른 특징, 요소, 구성 요소 및/또는 이들 그룹의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다..
또한, 용어 "제1", "제2" 등이 본 명세서에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 이들 요소는 이들 용어에 의해 제한되어서는 안 된다는 것이 이해될 것이다. 이러한 용어는 한 요소를 다른 요소와 구별하는 데만 사용된다. 예를 들어, 제1 전극은 제2 전극으로 명명될 수 있고, 유사하게 제2 전극은 구현예의 범위를 벗어나지 않고 제1 전극으로 명명될 수 있다. 제1 전극과 제2 전극은 모두 전극이지만 동일 전극은 아니다.
본 출원의 설명은 예시 및 설명의 목적으로 제시되었으며, 공개된 형태로 본 발명을 완전하게 개시하거나 제한하려는 의도가 아니다. 전술한 설명 및 관련 도면에 제시된 개시의 이점을 유지하면서 통상의 기술자는 많은 수정, 변형 및 대안적 구현이 가능할 것이다. 실시예는 본 발명의 원리, 실제 적용을 가장 잘 설명하고, 통상의 기술자가 다양한 구현을 위해 본 발명을 이해하고 고안된 특정 사용에 적합한 여러 변경예를 포함하여 여러 구현예들과 그 원리를 가장 잘 활용할 수 있도록 선택되고 설명되었다. 따라서, 청구항의 보호 범위는 개시된 구현의 특정 예에 제한되지 않으며, 그로부터의 수정 및 다른 구현도 첨부된 청구항의 범위 내에 포함되도록 의도된다는 것을 이해해야 한다.

Claims (27)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    다수의 인코딩된 픽처들과 연관된 데이터를 포함하는 비디오 비트스트림을 획득하는 단계 - 각각의 픽처는 다수 행의 코딩 트리 유닛(CTU, coding tree unit)을 포함하고 각각의 CTU는 하나 이상의 코딩 유닛(CU, coding unit)을 포함함 -;
    디코딩되는 현재 픽처의 현재 행의 CTU의 첫 번째 CU를 디코딩하기 전에, 히스토리-기반 모션 벡터 예측자(HMVP, history-based motion vector predictor) 테이블을 리셋하는 단계;
    현재 행의 CTU를 디코딩하는 동안:
    상기 HMVP 테이블에 복수의 모션 벡터 예측자를 유지하는 단계 - 상기 HMVP 테이블 내의 각각의 모션 벡터 예측자는 현재 행의 CTU의 적어도 하나의 CU를 디코딩하는 데 사용됨 -;
    디코딩할 현재 행의 CTU의 현재 CU에 대해:
    상기 비디오 비트스트림으로부터 예측 모드를 추출하는 단계;
    상기 예측 모드에 따라 그리고 상기 HMVP 테이블의 복수의 모션 벡터 예측자에 적어도 부분적으로 기초하여, 모션 벡터 후보 리스트를 구성하는 단계;
    상기 모션 벡터 후보 리스트로부터 모션 벡터 예측자를 선택하는 단계;
    상기 현재 CU를 디코딩하기 위한 상기 예측 모드 및 상기 선택된 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터를 결정하는 단계; 및
    상기 결정된 모션 벡터에 기초하여 상기 HMVP 테이블을 업데이트하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 결정된 모션 벡터에 기초하여 상기 HMVP 테이블을 업데이트하는 단계는,
    상기 HMVP 테이블의 복수의 모션 벡터 예측자를 상기 결정된 모션 벡터와 비교하는 단계;
    상기 HMVP 테이블 내의 복수의 모션 벡터 예측자 중 어느 것도 상기 결정된 모션 벡터와 동일하지 않다는 결정에 따라:
    상기 HMVP 테이블이 가득 차 있는 경우 상기 HMVP 테이블에서 가장 앞선 모션 벡터 예측자를 제거하는 단계; 및
    상기 결정된 모션 벡터를 최신 모션 벡터로서 상기 HMVP 테이블에 추가하는 단계;
    상기 HMVP 테이블의 복수의 모션 벡터 예측자 중 하나가 상기 결정된 모션 벡터와 동일하다는 결정에 따라:
    상기 HMVP 테이블에서 상기 하나의 동일한 모션 벡터 예측자를 제거하는 단계;
    상기 HMVP 테이블에서 제거된 모션 벡터 예측자 이후의 모션 벡터 예측자 각각을 앞으로 이동시키는 단계; 및
    상기 결정된 모션 벡터를 최신 모션 벡터로서 상기 HMVP 테이블에 추가하는 단계
    를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 HMVP 테이블을 리셋하는 단계는, 상기 HMVP 테이블에서 이용 가능한 모션 벡터 예측자의 수량을 0으로 설정하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 예측 모드는 인터 모드, 병합(merge) 모드, 스킵(skip) 모드, IBC(intra block copy) 인터 모드 및 IBC 병합 모드로 구성된 그룹에서 선택된 하나인, 방법.
  5. 제4항에 있어서,
    상기 예측 모드는 인터 모드, IBC 인터 모드 및 IBC 병합 모드 중 하나이고, 상기 현재 CU를 디코딩하는 것은,
    상기 비디오 비트스트림으로부터 현재 CU에 대한 모션 벡터 차이를 복원하는 단계;
    상기 결정된 모션 벡터로서, 상기 선택된 모션 벡터 예측자와 상기 모션 벡터 차이를 더하는 단계; 및
    상기 결정된 모션 벡터 및 참조 픽처 내의 대응하는 CU를 사용하여 현재 CU를 디코딩하는 단계
    를 포함하는, 방법.
  6. 제4항에 있어서,
    상기 예측 모드는 인터 모드, IBC 인터 모드 및 IBC 병합 모드 중 하나이고, 상기 모션 벡터 후보 리스트를 구성하는 단계는,
    공간적으로 인접한 CU 및/또는 현재 CU의 시간적으로 함께 위치한 CU로부터 0개 이상의 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 사전 정의된 제1 임계 값에 도달 할 때까지 상기 HMVP 테이블로부터 0개 이상의 히스토리-기반 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계; 및
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제1 임계 값과 같을 때까지 0개 이상의 0의 값을 가진 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계
    를 포함하는, 방법.
  7. 제4항에 있어서,
    상기 예측 모드는 병합 모드 및 스킵 모드 중 하나이고, 상기 현재 CU를 디코딩하는 것은,
    상기 선택된 모션 벡터 예측자를 상기 결정된 모션 벡터로 사용하는 단계; 및
    상기 결정된 모션 벡터 및 참조 픽처 내의 대응하는 CU를 사용하여 현재 CU를 디코딩하는 단계
    를 포함하는, 방법.
  8. 제4항에 있어서,
    상기 예측 모드는 병합 모드 및 스킵 모드 중 하나이고, 상기 모션 벡터 후보 리스트를 구성하는 단계는,
    공간적으로 인접한 CU 및/또는 현재 CU의 시간적으로 함께 위치한 CU로부터 0개 이상의 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값에 도달 할 때까지 상기 HMVP 테이블로부터 0개 이상의 히스토리-기반 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값과 같을 때까지 0개 이상의 페어-와이즈(pair-wise) 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계; 및
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값과 같을 때까지 0개 이상의 0의 값을 가진 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계
    를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 디코딩되는 현재 픽처의 2개 이상의 행의 CUT가 병렬로 디코딩되는 경우, 각 행의 CTU는, 그 행의 CTU를 디코딩하기 위해 사용되는 복수의 히스토리-기반 모션 벡터 예측자를 저장하기 위한 연관된 HMVP 테이블을 가지는, 방법.
  10. 제1항에 있어서,
    상기 디코딩되는 현재 픽처의 현재 행의 CTU의 디코딩에 하나의 스레드를 할당함으로써, 상기 현재 픽처의 상이한 행의 CTU가 상이한 연관 스레드를 가지게 하는 단계를 더 포함하는 방법.
  11. 컴퓨팅 장치로서,
    하나 이상의 프로세서;
    상기 하나 이상의 프로세서에 연결된 메모리; 및
    상기 하나 이상의 프로세서에 의해 실행될 때 상기 컴퓨팅 장치가 다음을 포함하는 동작:
    다수의 인코딩된 픽처들과 연관된 데이터를 포함하는 비디오 비트스트림을 획득하는 단계 - 각각의 픽처는 다수 행의 코딩 트리 유닛(CTU, coding tree unit)을 포함하고 각각의 CTU는 하나 이상의 코딩 유닛(CU, coding unit)을 포함함 -;
    디코딩되는 현재 픽처의 현재 행의 CTU의 첫 번째 CU를 디코딩하기 전에, 히스토리-기반 모션 벡터 예측자(HMVP, history-based motion vector predictor) 테이블을 리셋하는 단계;
    현재 행의 CTU를 디코딩하는 동안:
    상기 HMVP 테이블에 복수의 모션 벡터 예측자를 유지하는 단계 - 상기 HMVP 테이블 내의 각각의 모션 벡터 예측자는 현재 행의 CTU의 적어도 하나의 CU를 디코딩하는 데 사용됨 -;
    디코딩할 현재 행의 CTU의 현재 CU에 대해:
    상기 비디오 비트스트림으로부터 예측 모드를 추출하는 단계;
    상기 예측 모드에 따라 그리고 상기 HMVP 테이블의 복수의 모션 벡터 예측자에 적어도 부분적으로 기초하여, 모션 벡터 후보 리스트를 구성하는 단계;
    상기 모션 벡터 후보 리스트로부터 모션 벡터 예측자를 선택하는 단계;
    상기 현재 CU를 디코딩하기 위한 상기 예측 모드 및 상기 선택된 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터를 결정하는 단계; 및
    상기 결정된 모션 벡터에 기초하여 상기 HMVP 테이블을 업데이트하는 단계
    를 수행하게 하는, 상기 메모리에 저장된 복수의 프로그램
    을 포함하는 컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 결정된 모션 벡터에 기초하여 상기 HMVP 테이블을 업데이트하는 단계는,
    상기 HMVP 테이블의 복수의 모션 벡터 예측자를 상기 결정된 모션 벡터와 비교하는 단계;
    상기 HMVP 테이블 내의 복수의 모션 벡터 예측자 중 어느 것도 상기 결정된 모션 벡터와 동일하지 않다는 결정에 따라:
    상기 HMVP 테이블이 가득 차 있는 경우 상기 HMVP 테이블에서 가장 앞선 모션 벡터 예측자를 제거하는 단계; 및
    상기 결정된 모션 벡터를 최신 모션 벡터로서 상기 HMVP 테이블에 추가하는 단계;
    상기 HMVP 테이블의 복수의 모션 벡터 예측자 중 하나가 상기 결정된 모션 벡터와 동일하다는 결정에 따라:
    상기 HMVP 테이블에서 상기 하나의 동일한 모션 벡터 예측자를 제거하는 단계;
    상기 HMVP 테이블에서 제거된 모션 벡터 예측자 이후의 모션 벡터 예측자 각각을 앞으로 이동시키는 단계; 및
    상기 결정된 모션 벡터를 최신 모션 벡터로서 상기 HMVP 테이블에 추가하는 단계
    를 포함하는, 컴퓨팅 장치.
  13. 제11항에 있어서,
    상기 예측 모드는 인터 모드, 병합(merge) 모드, 스킵(skip) 모드, IBC(inter block copy) 인터 모드 및 IBC 병합 모드로 구성된 그룹에서 선택된 하나인, 컴퓨팅 장치.
  14. 제13항에 있어서,
    상기 예측 모드는 인터 모드, IBC 인터 모드 및 IBC 병합 모드 중 하나이고, 상기 현재 CU를 디코딩하는 것은,
    상기 비디오 비트스트림으로부터 현재 CU에 대한 모션 벡터 차이를 복원하는 단계;
    상기 결정된 모션 벡터로서, 상기 선택된 모션 벡터 예측자와 상기 모션 벡터 차이를 더하는 단계; 및
    상기 결정된 모션 벡터 및 참조 픽처 내의 대응하는 CU를 사용하여 현재 CU를 디코딩하는 단계
    를 포함하는, 컴퓨터 장치.
  15. 제13항에 있어서,
    상기 예측 모드는 인터 모드, IBC 인터 모드, 및 IBC 병합 모드 중 하나이고, 상기 모션 벡터 후보 리스트를 구성하는 단계는,
    공간적으로 인접한 CU 및/또는 현재 CU의 시간적으로 함께 위치한 CU로부터 0개 이상의 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 사전 정의된 제1 임계 값에 도달 할 때까지 상기 HMVP 테이블로부터 0개 이상의 히스토리-기반 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계; 및
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제1 임계 값과 같을 때까지 0개 이상의 0의 값을 가진 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계
    를 포함하는, 컴퓨팅 장치.
  16. 제13항에 있어서,
    상기 예측 모드는 병합 모드 및 스킵 모드 중 하나이고, 상기 현재 CU를 디코딩하는 것은,
    상기 선택된 모션 벡터 예측자를 상기 결정된 모션 벡터로 사용하는 단계; 및
    상기 결정된 모션 벡터 및 참조 픽처 내의 대응하는 CU를 사용하여 현재 CU를 디코딩하는 단계
    를 포함하는, 컴퓨팅 장치.
  17. 제13항에 있어서,
    상기 예측 모드는 병합 모드 및 스킵 모드 중 하나이고, 상기 모션 벡터 후보 리스트를 구성하는 단계는,
    공간적으로 인접한 CU 및/또는 현재 CU의 시간적으로 함께 위치한 CU로부터 0개 이상의 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값에 도달 할 때까지 상기 HMVP 테이블로부터 0개 이상의 히스토리-기반 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계;
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값과 같을 때까지 0개 이상의 페어-와이즈(pair-wise) 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계; 및
    상기 모션 벡터 후보 리스트의 현재 길이가 미리 정의된 제2 임계 값과 같을 때까지 0개 이상의 0의 값을 가진 모션 벡터 예측자를 상기 모션 벡터 후보 리스트에 추가하는 단계
    를 포함하는, 컴퓨팅 장치.
  18. 제11항에 있어서,
    상기 디코딩되는 현재 픽처의 2개 이상의 행의 CUT가 병렬로 디코딩되는 경우, 각 행의 CTU는, 그 행의 CTU를 디코딩하기 위해 사용되는 복수의 히스토리-기반 모션 벡터 예측자를 저장하기 위한 연관된 HMVP 테이블을 가지는, 컴퓨팅 장치.
  19. 하나 이상의 프로세서를 갖는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 복수의 프로그램은 컴퓨팅 장치로 하여금 다음의 동작:
    다수의 인코딩된 픽처들과 연관된 데이터를 포함하는 비디오 비트스트림을 획득하는 단계 - 각각의 픽처는 다수 행의 코딩 트리 유닛(CTU, coding tree unit)을 포함하고 각각의 CTU는 하나 이상의 코딩 유닛(CU, coding unit)을 포함함 -;
    디코딩되는 현재 픽처의 현재 행의 CTU의 첫 번째 CU를 디코딩하기 전에, 히스토리-기반 모션 벡터 예측자(HMVP, history-based motion vector predictor) 테이블을 리셋하는 단계;
    현재 행의 CTU를 디코딩하는 동안:
    상기 HMVP 테이블에 복수의 모션 벡터 예측자를 유지하는 단계 - 상기 HMVP 테이블 내의 각각의 모션 벡터 예측자는 현재 행의 CTU의 적어도 하나의 CU를 디코딩하는 데 사용됨 -;
    디코딩할 현재 행의 CTU의 현재 CU에 대해:
    상기 비디오 비트스트림으로부터 예측 모드를 추출하는 단계;
    상기 예측 모드에 따라 그리고 상기 HMVP 테이블의 복수의 모션 벡터 예측자에 적어도 부분적으로 기초하여, 모션 벡터 후보 리스트를 구성하는 단계;
    상기 모션 벡터 후보 리스트로부터 모션 벡터 예측자를 선택하는 단계;
    상기 현재 CU를 디코딩하기 위한 상기 예측 모드 및 상기 선택된 모션 벡터 예측자에 적어도 부분적으로 기초하여 모션 벡터를 결정하는 단계; 및
    상기 결정된 모션 벡터에 기초하여 상기 HMVP 테이블을 업데이트하는 단계
    를 수행하게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  20. 하나 이상의 프로세서를 가진 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 포함하는, 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 복수의 프로그램은, 상기 하나 이상의 프로세서에 의해 실행되는 때, 상기 컴퓨팅 장치로 하여금 청구항 1 내지 10 중 어느 한 항에 따른 방법의 단계를 수행하게 하는, 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020217001358A 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치 KR102286460B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217024328A KR102387972B1 (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862700106P 2018-07-18 2018-07-18
US62/700,106 2018-07-18
PCT/US2019/041923 WO2020018486A1 (en) 2018-07-18 2019-07-16 Methods and apparatus of video coding using history-based motion vector prediction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024328A Division KR102387972B1 (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210008569A KR20210008569A (ko) 2021-01-22
KR102286460B1 true KR102286460B1 (ko) 2021-08-04

Family

ID=69164858

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217024328A KR102387972B1 (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
KR1020217001358A KR102286460B1 (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
KR1020227012385A KR20220048066A (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217024328A KR102387972B1 (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227012385A KR20220048066A (ko) 2018-07-18 2019-07-16 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Country Status (9)

Country Link
US (4) US11575929B2 (ko)
EP (1) EP3808090A4 (ko)
JP (3) JP7202444B2 (ko)
KR (3) KR102387972B1 (ko)
CN (4) CN112425172A (ko)
MX (2) MX2021000525A (ko)
RU (1) RU2752644C1 (ko)
WO (1) WO2020018486A1 (ko)
ZA (1) ZA202100252B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023090924A1 (ko) * 2021-11-18 2023-05-25 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US11606575B2 (en) 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
US10440378B1 (en) 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
WO2020018486A1 (en) * 2018-07-18 2020-01-23 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using history-based motion vector prediction
JP7237144B2 (ja) * 2018-08-10 2023-03-10 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ビデオ処理方法、ビデオ処理装置、エンコーダ、デコーダ、媒体、およびコンピュータプログラム
US20220038682A1 (en) * 2018-09-18 2022-02-03 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium in which bitstream is stored
CN112740693A (zh) * 2018-09-21 2021-04-30 韩国电子通信研究院 图像编码/解码方法、装置和具有存储的比特流的记录介质
EP3868102A4 (en) * 2018-12-21 2021-12-15 Huawei Technologies Co., Ltd. CODERS, DECODERS AND RELATED METHODS USING HISTORY-BASED MOTION VECTOR PREDICTION
JP2021513795A (ja) * 2019-01-01 2021-05-27 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
CN113383543A (zh) * 2019-02-02 2021-09-10 北京字节跳动网络技术有限公司 使用用于视频编解码中的帧内块复制的额外缓冲区样点的预测
CN113366844B (zh) 2019-02-02 2023-10-03 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区中的数据存储
CN113475062A (zh) 2019-02-24 2021-10-01 北京字节跳动网络技术有限公司 确定屏幕内容编解码的条件
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
JP7284284B2 (ja) 2019-03-04 2023-05-30 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーの実装形態の態様
US11166015B2 (en) 2019-03-06 2021-11-02 Tencent America LLC Method and apparatus for video coding
WO2020223612A1 (en) * 2019-05-02 2020-11-05 Bytedance Inc. Signaling in transform skip mode
AU2020309663C1 (en) 2019-07-06 2023-12-14 Beijing Bytedance Network Technology Co., Ltd. Virtual prediction buffer for intra block copy in video coding
MX2022000110A (es) 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
JP2022539887A (ja) 2019-07-11 2022-09-13 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのビットストリーム適合性の制約
CN117459744A (zh) 2019-07-20 2024-01-26 北京字节跳动网络技术有限公司 调色板模式使用指示的条件相关编解码
CN117221536A (zh) 2019-07-23 2023-12-12 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
CN114208174B (zh) 2019-07-29 2023-11-28 北京字节跳动网络技术有限公司 预测过程中的调色板模式编解码
MX2022002279A (es) * 2019-09-03 2022-04-20 Panasonic Ip Corp America Codificador, decodificador, metodo de codificacion y metodo de decodificacion.
US11595694B2 (en) * 2020-04-01 2023-02-28 Tencent America LLC Method and apparatus for video coding
CN112055208B (zh) * 2020-08-22 2024-05-07 浙江大华技术股份有限公司 视频编码方法、设备及存储装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170289570A1 (en) * 2011-04-11 2017-10-05 Texas Instruments Incorporated Parallel motion estimation in video coding

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7286185B2 (en) * 2003-09-11 2007-10-23 Ati Technologies Inc. Method and de-interlacing apparatus that employs recursively generated motion history maps
TW201143457A (en) * 2010-04-01 2011-12-01 Sony Corp Image processing device and method
US9083983B2 (en) * 2011-10-04 2015-07-14 Qualcomm Incorporated Motion vector predictor candidate clipping removal for video coding
US9503720B2 (en) * 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
US20140071235A1 (en) * 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
US9699450B2 (en) * 2012-10-04 2017-07-04 Qualcomm Incorporated Inter-view predicted motion vector for 3D video
JP5969695B2 (ja) * 2012-10-12 2016-08-17 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュートElectronics And Telecommunications Research Institute 映像復号化方法
US9667990B2 (en) * 2013-05-31 2017-05-30 Qualcomm Incorporated Parallel derived disparity vector for 3D video coding with neighbor-based disparity vector derivation
GB2531001B (en) * 2014-10-06 2019-06-05 Canon Kk Method and apparatus for vector encoding in video coding and decoding
KR20220162877A (ko) 2014-10-31 2022-12-08 삼성전자주식회사 고정밀 스킵 부호화를 이용한 비디오 부호화 장치 및 비디오 복호화 장치 및 그 방법
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US10999595B2 (en) 2015-11-20 2021-05-04 Mediatek Inc. Method and apparatus of motion vector prediction or merge candidate derivation for video coding
CN105992008B (zh) * 2016-03-30 2019-08-30 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码方法
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US11606575B2 (en) * 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
US10491902B1 (en) * 2018-07-16 2019-11-26 Tencent America LLC Method and apparatus for history-based motion vector prediction
US10440378B1 (en) * 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
WO2020018486A1 (en) * 2018-07-18 2020-01-23 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using history-based motion vector prediction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170289570A1 (en) * 2011-04-11 2017-10-05 Texas Instruments Incorporated Parallel motion estimation in video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Li Zhang, et. al., "History-based Motion Vector Prediction in Versatile Video Coding", Data Compression Conference, 2018.07.14, pp. 1-6*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023090924A1 (ko) * 2021-11-18 2023-05-25 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Also Published As

Publication number Publication date
KR20210097230A (ko) 2021-08-06
CN113556539A (zh) 2021-10-26
JP2021524718A (ja) 2021-09-13
MX2021000525A (es) 2021-04-12
MX2023002949A (es) 2023-11-07
KR20210008569A (ko) 2021-01-22
KR102387972B1 (ko) 2022-04-15
US20210136405A1 (en) 2021-05-06
KR20220048066A (ko) 2022-04-19
JP2022071147A (ja) 2022-05-13
US11575929B2 (en) 2023-02-07
JP2024042025A (ja) 2024-03-27
US20230388538A1 (en) 2023-11-30
EP3808090A4 (en) 2021-08-04
US11991386B2 (en) 2024-05-21
WO2020018486A1 (en) 2020-01-23
ZA202100252B (en) 2021-09-29
JP7202444B2 (ja) 2023-01-11
RU2752644C1 (ru) 2021-07-29
EP3808090A1 (en) 2021-04-21
CN112425172A (zh) 2021-02-26
CN116320504A (zh) 2023-06-23
US11792422B2 (en) 2023-10-17
CN113099243B (zh) 2021-11-05
CN113099243A (zh) 2021-07-09
CN113556539B (zh) 2022-05-10
CN116320504B (zh) 2024-03-29
US20230345039A1 (en) 2023-10-26
US20230102149A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
KR102286460B1 (ko) 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
KR102398217B1 (ko) 크로스-검포넌트 선형 모델에 대한 간단화
CN112997486A (zh) 使用低复杂度网格编码量化的视频解码的方法和装置
EP3939279A1 (en) Signaling of lossless coding in video coding
WO2020076838A1 (en) Motion vector storage for video coding
KR102643422B1 (ko) 서브블록 기반 시간적 모션 벡터 예측을 사용한 비디오 코딩의 방법 및 장치

Legal Events

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