KR20200118879A - 이력 기반 움직임 벡터 예측을 위한 방법 및 장치 - Google Patents

이력 기반 움직임 벡터 예측을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20200118879A
KR20200118879A KR1020207026594A KR20207026594A KR20200118879A KR 20200118879 A KR20200118879 A KR 20200118879A KR 1020207026594 A KR1020207026594 A KR 1020207026594A KR 20207026594 A KR20207026594 A KR 20207026594A KR 20200118879 A KR20200118879 A KR 20200118879A
Authority
KR
South Korea
Prior art keywords
buffer
row
video
hmvp
block
Prior art date
Application number
KR1020207026594A
Other languages
English (en)
Other versions
KR102523557B1 (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 KR1020237012775A priority Critical patent/KR102642527B1/ko
Publication of KR20200118879A publication Critical patent/KR20200118879A/ko
Application granted granted Critical
Publication of KR102523557B1 publication Critical patent/KR102523557B1/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/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
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • 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/43Hardware specially adapted for motion estimation or compensation
    • 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one

Landscapes

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

Abstract

디코더를 위한 비디오 디코딩 방법은, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하는 단계를 포함하며, 상기 현재 화상은 복수의 블록으로 분할된 각각의 유닛을 갖는 복수의 유닛으로 분할되고, 각각의 유닛의 상기 복수의 블록은 그리드로서 배열된다. 상기 비디오 디코딩 방법은 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은, 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 더 포함한다.

Description

이력 기반 움직임 벡터 예측을 위한 방법 및 장치
참조에 의한 통합
본 출원은 2018년 6월 18일에 "METHOD AND APPARATUS FOR HISTORY-BASED MOTION VECTOR PREDICTION"이라는 명칭으로 출원된 미국 가출원 제62/698,559호에 대한 우선권의 혜택을 주장하여, 2018년 11월 28일에 "METHOD AND APPARATUS FOR HISTORY-BASED MOTION VECTOR PREDICTION"이라는 명칭으로 출원된 미국 특허출원 제16/203,364호에 대한 우선권의 혜택을 주장하며, 이들 출원의 내용 전체는 참조에 의해 본 명세서에 포함된다.
본 개시는 비디오 코딩과 일반적으로 관련된 실시예를 설명한다.
본 명세서에 제공되는 배경기술 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 현재 이름이 언급되는 발명자의 저작물은, 이 배경 기술 부분에 그 저작물이 기재된 범위 내에서, 또한 달리 출원 당시에 종래 기술로 볼 수 없는 설명의 측면은, 본 개시에 대한 종래기술로서 명시적으로도 암시적으로도 인정되지 않는다.
움직임 보상(motion compensation)과 함께 인터 화상 예측(inter-picture prediction)을 사용하는 비디오 코딩 및 디코딩은 수십 년 동안 알려져 왔다. 압축되지 않은 디지털 비디오는 일련의 화상을 포함할 수 있으며, 각각의 화상은 예를 들어 1920x1080 휘도 샘플 및 연관된 색차(chrominance) 샘플의 공간 차원(spatial dimension)를 갖는다. 일련의 화상은, 예를 들어 초당 60개의 화상 또는 60Hz의 고정되거나 가변적인 화상 레이트(비공식적으로 프레임 레이트라고도 함)를 가질 수 있다. 압축되지 않은 비디오에는 상당한 비트 레이트 요건이 있다. 예를 들어, 샘플당 8비트에서 1080p60 4:2:0 비디오(60Hz 프레임 레이트에서 1920x1080 휘도 샘플 해상도)는 약 1.5Gbit/s 대역폭이 필요하다. 1시간 분량의 그러한 비디오에는 600GByte 이상의 저장 공간이 필요하다.
비디오 코딩 및 디코딩의 한 가지 목적은 압축을 통한, 입력 비디오 신호에서의 리던던시(redundancy)의 감소일 수 있다. 압축은 전술한 대역폭 또는 저장 공간의 요건을 경우에 따라 2 자릿수 이상 줄이도록 도와준다. 무손실 압축 및 무손실 압축뿐만 아니라 이들의 조합이 채용될 수 있다. 무손실 압축은 압축된 원본 신호로부터 원본 신호의 정확한 복제가 재구성될 수 있는 기술을 가리킨다. 손실 압축을 사용하는 경우, 재구성된 신호는 원본 신호와 동일하지 않을 수 있지만, 원본 신호와 재구성된 신호 사이의 왜곡은 재구성된 신호가 의도된 애플리케이션에 유용하게 할 정도로 충분히 작다. 비디오의 경우, 손실 압축이 널리 사용된다. 허용되는 왜곡의 양은 애플리케이션에 따라 다르다. 예를 들어, 특정 소비자 스트리밍 애플리케이션의 사용자는 텔레비전 공헌 애플리케이션(television contribution applications)의 사용자보다 더 높은 왜곡을 허용할 수 있다. 달성 가능한 압축률은 허용 가능한/용인 가능한 왜곡이 높을수록 압축률이 더 높다는 것을 반영할 수 있다.
움직임 보상은 손실 압축 기법일 수 있으며 움직임 벡터(motion vector, 이하 MV)에 의해 지시되는 방향으로 공간적으로 시프트된 후, 이전에 재구성된 화상 또는 그 일부(참조 화상)로부터의 샘플 데이터의 블록이 새롭게 재구성된 화상 또는 화상 부분의 예측에 사용되는 기술과 관련 있을 수 있다. 경우에 따라, 참조 화상은 현재 재구성중인 화상과 동일할 수 있다. MV는 2차원 X 및 Y, 또는 3차원을 가질 수 있으며, 세 번째는 사용중인 참조 화상의 지시이다(후자는 간접적으로 시간 차원일 수 있음).
일부 비디오 압축 기법에서, 샘플 데이터의 특정 영역에 적용 가능한 MV는 다른 MV로부터, 예를 들어 디코딩 순서에서 그 MV에 선행하고, 재구성중인 영역에 공간적으로 인접한 샘플 데이터의 다른 영역과 관련된 MV로부터 예측될 수 있다. 그렇게 하면 MV 코딩에 필요한 데이터의 양이 실질적으로 줄어들어, 리던던시를 제거하고 압축을 증가시킬 수 있다. MV 예측은, 예를 들어 카메라로부터 도출된 입력 비디오 신호(내추럴 비디오라고 알려져 있음)입력 비디오 신호를 코딩하는 경우, 단일 MV가 적용 가능한 영역보다 큰 영역이 유사한 방향으로 이동하고 따라서, 경우에 따라서는 이웃 영역의 MV로부터 도출된 유사한 움직임 벡터를 사용하여 예측될 수 있는 통계적 유사성이 존재하기 때문에, 효과적으로 작동할 수 있다. 그 결과, 주어진 영역에서 발견된 MV는 주위(surrounding) MV로부터 예측된 MV와 유사하거나 동일하게 되어, 결국 엔트로피 코딩 후에, MV를 직접 코딩하는 경우에 사용되는 것보다 더 적은 수의 비트로 표현될 수 있다. 경우에 따라서는, MV 예측은 원본 신호(즉, 샘플 스트림)로부터 도출된 신호(즉, MV)의 무손실 압축의 예일 수 있다. 다른 경우에, MV 예측 자체는, 예를 들어 몇몇 주위 MV로부터 예측자를 계산할 때 끝수처리 오차(rounding error)로 인해, 손실될 수 있다.
다양한 MV 예측 메커니즘이 H.265/HEVC(ITU-T Rec. H.265, "High Efficiency Video Coding(고효율 비디오 코딩)", 2016년 12월)에 기재되어 있다. H.265가 제공하는 많은 MV 예측 메커니즘 중에서 여기에 기재된 것은 이하 "공간 병합(spatial merge)"이라고 하는 기법이다.
움직임 벡터 예측자(motion vector predictor)의 이력 버퍼(history buffer)는 인코딩 또는 디코딩을 수행하는 데 사용될 수 있다. 일반적으로, 이력 버퍼의 유지관리(maintenance)는, 각각의 블록이 인코딩 또는 디코딩 순서로, 완료된 후에 수행된다. 이 블록이 일련의 MV 정보와 함께 인터 모드로 코딩되면, 이 블록의 MV는 버퍼를 갱신하기 위해 HMVP 버퍼에 넣는다. 현재 블록을 인코딩 또는 디코딩하는 경우, 현재 블록에 대한 MV 예측자는 이전에 코딩된 공간/이웃 블록으로부터 나올 수 있다. 이러한 블록 중 일부는 여전히 HMVP 버퍼에 있을 수 있다. 새로 디코딩/인코딩된 MV를 HMVP 버퍼에 넣는 경우, 새로운 MV가 HMVP 버퍼 내의 모든 이전 MV와 다른지 확인하기 위해 일부 비교가 수행될 수 있다. 버퍼에 동일한 값을 가진 MV가 이미 있으면, 구(old) MV가 버퍼에서 제거될 것이고, 새 MV가 마지막 엔트리로 버퍼에 저장된다. 이력 버퍼의 이러한 일반적인 유지관리 절차는 인코딩 또는 디코딩되는 현재 블록과 관련이 없을 수 있는 이력 버퍼에서 정보를 제거해야 하는 경우에 이력 버퍼를 올바르게 리셋하지 못한다.
본 개시의 예시적인 실시예는 디코더를 위한 비디오 디코딩 방법을 포함한다. 상기 디코더를 위한 비디오 디코딩 방법은, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하는 단계를 포함하며, 상기 현재 화상은 각각의 유닛이 복수의 블록으로 분할되어 있는 복수의 유닛으로 분할되고, 각각의 유닛의 상기 복수의 블록은 그리드로서 배열된다. 상기 비디오 디코딩 방법은 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(history motion vector, HMVP) 버퍼로부터의 엔트리(entry)를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은, 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계를 더 포함한다. 상기 비디오 디코딩 방법은, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 더 포함한다.
본 개시의 예시적인 실시예는 비디오 디코딩을 위한 비디오 디코더를 포함한다. 상기 비디오 디코더는, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하도록 구성된 처리 회로를 포함하며, 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열된다. 상기 처리 회로는 추가로, 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하도록 구성된다. 상기 처리 회로는 추가로, 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하도록 구성된다. 상기 처리 회로는 추가로, 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하도록 구성된다. 상기 처리 회로는 추가로, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하도록 구성된다.
본 개시의 예시적인 실시예는 명령어가 저장된, 컴퓨터로 판독 가능한 비일시적인 저장 매체를 포함하며, 상기 명령어는 비디오 디코더의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 방법을 실행하게 한다.상기 방법은, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하는 단계를 포함하며, 상기 현재 화상은 각각의 유닛이 복수의 블록으로 분할되어 있는 복수의 유닛으로 분할되고, 각각의 유닛의 상기 복수의 블록은 그리드로서 배열된다. 상기 방법은 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계를 더 포함한다. 상기 방법은 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계를 더 포함한다. 상기 방법은, 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계를 더 포함한다. 상기 방법은, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 더 포함한다.
개시된 주제의 추가 특징, 성질 및 다양한 이점은 이하의 상세한 설명 및 첨부 도면으로부터 보다 명백해질 것이다.
도 1은 일 실시예에 따른 통신 시스템(100)의 단순화된 블록도의 개략도이다.
도 2는 일 실시예에 따른 통신 시스템(200)의 단순화된 블록도의 개략도이다.
도 3은 일 실시예에 따른 디코더의 단순화된 블록도의 개략도이다.
도 4는 일 실시예에 따른 인코더의 단순화된 블록도의 개략도이다.
도 5는 다른 실시예에 따른 인코더의 블록도를 도시한다.
도 6은 다른 실시예에 따른 디코더의 블록도를 도시한다.
도 7은 현재 블록 및 주위 공간 병합 후보의 개략도이다.
도 8은 병합 후보 리스트 구성의 개략도이다.
도 9는 확장된 병합 모드의 개략도이다.
도 10a 및 도 10b는 이력 기반 움직임 벡터 예측 버퍼의 일 실시예를 나타낸다.
도 11은 코딩 트리 유닛으로 분할된 예시적인 화상을 나타낸다.
도 12는 타일로 분할된 예시적인 화상을 도시한다.
도 13은 인코더 또는 디코더에 의해 수행되는 프로세스의 일 실시예를 나타낸다.
도 14는 일 실시예에 따른 컴퓨터 시스템의 개략도이다.
도 1은 본 개시의 일 실시예에 따른 통신 시스템(100)의 단순화된 블록도를 나타낸다. 통신 시스템(100)은 예를 들어 네트워크(150)를 통해 서로 통신할 수 있는 복수의 단말 기기를 포함한다. 예를 들어, 통신 시스템(100)은 네트워크(150)를 통해 상호 연결된 제1 쌍의 단말 기기(110, 120)를 포함한다. 도 1에서, 예를 들어, 제1 쌍의 단말 기기(110, 120)는 데이터의 단방향 송신을 수행한다. 예를 들어, 단말 기기(110)는 네트워크(150)를 통해 다른 단말 기기(120)에 송신하기 위해 비디오 데이터(예: 단말 기기(110)에 의해 캡처된 비디오 화상의 스트림)를 코딩할 수 있다. 인코딩된 비디오 데이터는 하나 이상의 코딩된 비디오 비트 스트림의 형태로 송신될 수 있다. 단말 기기(120)는 네트워크(150)로부터 코딩된 비디오 데이터를 수신하고, 코딩된 비디오 데이터를 디코딩하여 비디오 화상을 복원하고 복원된 비디오 데이터에 따라 비디오 화상을 표시할 수 있다. 단방향 데이터 송신은 매체 서빙 애플리케이션(media serving application) 등에서 일반적일 수 있다.
다른 예에서, 통신 시스템(100)은, 예를 들어 화상 회의 동안 발생할 수 있는 코딩된 비디오 데이터의 양방향 송신을 수행하는 제2 쌍의 단말 기기(130, 140)를 포함한다. 데이터의 양방향 송신을 위해, 일 예에서, 단말 기기(130, 140)의 각각의 단말 기기는 네트워크(150)를 통해 단말 기기(130, 140) 중 다른 단말 기기에의 송신을 위해 비디오 데이터(예:, 단말 기기에 의해 캡처된 비디오 화상 스트림)를 코딩할 수 있다. 단말 기기(130, 140)의 각각의 단말 기기는 또한 단말 기기(130, 140) 중 다른 단말 기기에 의해 전송되는 코딩된 비디오 데이터를 수신할 수 있고, 비디오 화상을 복원하기 위해 코딩된 비디오 데이터를 디코딩할 수 있으며, 복원된 비디오 데이터에 따라 액세스 가능한 디스플레이 기기에 비디오 화상을 표시할 수 있다.
도 1에서, 예를 들어, 단말 기기(110, 120, 130, 140)는 서버, 개인용 컴퓨터 및 스마트폰으로 예시될 수 있지만 본 개시의 원리는 이에 한정되지 않을 수 있다. 본 개시의 실시예는 랩톱 컴퓨터, 태블릿 컴퓨터, 미디어 플레이어 및/또는 전용 비디오 회의 장비에의 애플리케이션을 찾는다. 네트워크(150)는 예를 들어 유선(wired) 및/또는 무선 통신 네트워크를 포함한, 단말 기기(110, 120, 130, 140) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크를 나타낸다. 통신 네트워크(150)는 회로 교환 채널 및/또는 패킷 교환 채널에서 데이터를 교환할 수 있다. 대표적인 네트워크는 통신 네트워크, 근거리 네트워크(local area network), 광역 네트워크 및/또는 인터넷을 포함한다. 본 논의의 목적을 위해, 네트워크(150)의 아키텍처 및 토폴로지는 이하에서 설명되지 않는 한 본 개시의 동작(operation)에 중요하지 않을 수 있다.
도 2는 개시된 주제에 대한 애플리케이션을 위한 예로서, 스트리밍 환경에서의 비디오 인코더 및 비디오 디코더의 배치를 나타낸다. 개시된 주제는 예를 들어 비디오 회의, 디지털 TV, CD, DVD, 메모리 스틱 등을 포함한 디지털 매체에 압축 된 비디오의 저장 등을 포함하는 다른 비디오 인에이블드(video enabled) 에플리케이션에 동일하게 적용될 수 있다.
스트리밍 시스템은 비디오 소스, 예를 들어 압축되지 않은 비디오 화상 스트림(202)을 생성하는, 예를 들어 디지털 카메라를 포함할 수 있는 캡처 서브시스템(213)을 포함할 수 있다. 일례에서, 비디오 화상 스트림(202)은 디지털 카메라로 촬영된 샘플을 포함한다. 인코딩된 비디오 데이터(204)(또는 코딩된 비디오 비트 스트림)와 비교할 때 높은 데이터 볼륨을 강조하기 위해 굵은 선으로 표시된 비디오 화상 스트림(202)은 비디오 소스(201)에 연결된 인코더(203)를 포함하는 전자 기기(220)에 의해 처리될 수 있다. 비디오 인코더(203)는 이하에서 더 상세히 설명되는 바와 같이 개시된 주제의 측면들을 가능하게 하거나 구현하기 위해 하드웨어, 소프트웨어 또는 이들의 조합을 포함할 수 있다. 비디오 화상의 스트림(202)과 비교할 때 더 낮은 데이터 볼륨을 강조하기 위해 가는 선으로 표시된 인코딩된 비디오 데이터(204)(또는 인코딩된 비디오 비트 스트림(204))는 나중에 사용하기 위해 스트리밍 서버(205)에 저장될 수 있다. 도 2의 클라이언트 서브시스템(206, 208)과 같은 하나 이상의 스트리밍 클라이언트 서브시스템은 인코딩된 비디오 데이터(204)의 사본(207, 209)를 검색하기 위해 스트리밍 서버(205)에 액세스할 수 있다. 클라이언트 서브시스템(206)은 예를 들어 전자 기기(230)에 비디오 디코더(210)를 포함할 수 있다. 비디오 디코더(210)는 인코딩된 비디오 데이터의 인커밍 사본(incoming copy)(207)를 디코딩하고, 디스플레이(212)(예: 디스플레이 스크린) 또는 다른 렌더링 기기(도시되지 않음)에 렌더링될 수 있는 비디오 화상(211)의 아웃고잉 스트림(outgoing stream)을 생성한다. 일부 스트리밍 시스템에서, 인코딩된 비디오 데이터(204, 207, 209)(예: 비디오 비트스트림)는 특정 비디오 코딩/압축 표준에 따라 인코딩될 수 있다. 이러한 표준의 예로는 ITU-T 권장사항 H.265를 포함한다. 일례로, 개발중인 비디오 코딩 표준은 비공식적으로 다목적 비디오 인코딩 또는 VVC로 알려져 있다. 개시된 주제는 VVC의 맥락에서 사용될 수 있다.
전자 기기(220, 230)는 다른 구성요소(도시되지 않음)를 포함할 수 있음에 유의하기 바란다. 예를 들어, 전자 기기(220)는 비디오 디코더(미도시)를 포함할 수 있고, 전자 기기(230)는 비디오 인코더(미도시)도 포함할 수 있다.
도 3은 본 개시의 일 실시예에 따른 비디오 디코더(310)의 블록도를 도시한다. 비디오 디코더(310)는 전자 기기(330)에 포함될 수 있다. 전자 기기(330)는 수신기(331)(예: 수신 회로)를 포함할 수 있다. 비디오 디코더(310)는 도 2의 비디오 디코더(210) 대신에 사용될 수 있다.
수신기(331)는 비디오 디코더(310)에 의해 디코딩될 하나 이상의 코딩된 비디오 시퀀스를 수신할 수 있고; 동일하거나 다른 실시예에서, 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스와 독립적인, 한 번에 하나의 코딩된 비디오 시퀀스를 수신할 수 있다. 코딩된 비디오 시퀀스는 인코딩된 비디오 데이터를 저장하는 저장 기기에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(301)로부터 수신될 수 있다. 수신기(331)는 다른 데이터, 예를 들어, 코딩된 오디오 데이터 및/또는 보조 데이터 스트림과 함께, 인코딩된 비디오 데이터를 수신할 수 있으며, 이는 그 각각의 사용 엔터티(도시되지 않음)에 포워딩될 수 있다. 수신기(331)는 코딩된 비디오 시퀀스를 다른 데이터로부터 분리할 수 있다. 네트워크 지터에 대항하기 위해, 버퍼 메모리(315)가 수신기(331)와 엔트로피 디코더/파서(320)(이후 "파서(320)") 사이에 연결될 수 있다. 특정 애플리케이션에서, 버퍼 메모리(315)는 비디오 디코더(310)의 일부이다. 다른 애플리케이션에서, 버퍼 메모리(315)는 비디오 디코더(310)의 외부에 있을 수 있다(도시되지 않음). 또 다른 애플리케이션에서, 예를 들어, 네트워크 지터에 대항하기 위해 비디오 디코더(310) 외부의 버퍼 메모리(도시되지 않음), 및 또한 예를 들어 재생 타이밍을 처리하기 위해 비디오 디코더(310) 내부의 다른 버퍼 메모리(315)가 있을 수 있다. 수신기(331)가 충분한 대역폭과 제어 가능성(controllability)의 저장/포워딩 기기로부터, 또는 등시 네트워크(isosynchronous network)로부터 데이터를 수신하는 경우, 버퍼 메모리(315)는 필요하지 않거나 작을 수 있다. 인터넷과 같은 최선 노력 패킷 네트워크(best effort packet network)에서 사용하기 위해, 버퍼 메모리(315)는 필요할 수 있고, 비교적 클 수 있고 유리하게는 적응적 크기일 수 있으며, 적어도 부분적으로는 비디오 디코더(310) 외부의 운영 체제 또는 유사한 요소(도시되지 않음)에 구현될 수 있다.
비디오 디코더(310)는 코딩된 비디오 시퀀스로부터 심볼(321)을 재구성하기위한 파서(320)를 포함할 수 있다. 이들 심볼의 카테고리는 비디오 디코더(310)의 동작을 관리하는 데 사용되는 정보, 및 잠재적으로 도 3에 도시된 바와 같이, 전자 기기(330)의 일체 부분(integral part)은 아니지만 전자 기기(330)에 연결될 수 있는 렌더 기기(312)(예: 디스플레이 스크린)와 같은 렌더링 기기를 제어하기 위한 정보를 포함한다. 렌더링 기기(들)에 대한 제어 정보는 보충 확장 정보(Supplementary Enhancement Information)(SEI 메시지) 또는 비디오 유용성 정보(Video Usability Information, VUI) 파라미터 세트 프래그먼트(parameter set fragment)(도시되지 않음)의 형태일 수 있다. 파서(320)는 수신되는 코딩된 비디오 시퀀스를 파싱/엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있고, 가변 길이 코딩, 허프만 코딩(Huffman coding), 콘텍스트 감도(context sensitivity)를 갖거나 갖지 않는 산술 코딩(arithmetic coding) 등을 포함한 다양한 원리를 따를 수 있다. 파서(320)는 코딩된 비디오 시퀀스로부터, 하나 이상의 파라미터에 기초하여, 비디오 디코더에서 화소의 서브그룹 중 적어도 하나에 대한 서브그룹 파라미터의 세트를 추출할 수 있다. 서브그룹은 화상의 그룹(Groups of Pictures, GOPs), 화상, 타일(tile), 슬라이스(slice), 매크로블록, 코딩 유닛(Coding Unit, CUs), 블록, 변환 유닛(Transform Units, TUs), 예측 유닛(Prediction Unit, PUs) 등을 포함할 수 있다. 파서(320)는 코딩된 비디오 시퀀스 정보로부터, 변환 계수, 양자화 파라미터 값, 움직임 벡터 등과 같은 것을 추출할 수 있다.
파서(320)는 버퍼 메모리(315)로부터 수신된 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 동작을 수행하여, 심볼(321)을 생성할 수 있다.
심볼(321)의 재구성은 코딩된 비디오 화상 또는 그 일부(예컨대, 인터 및 인트라 화상, 인터 및 인트라 블록)의 유형, 및 다른 인자에 따라 다수의 상이한 유닛을 포함할 수 있다.
파서(320)에 의해 코딩된 비디오 시퀀스로부터 파싱된 서브그룹 제어 정보에 의해 어떤 유닛이 포함되고 어떻게 제어될 수 있는지가 결정된다. 파서(320)와 다수의 유닛 사이의 이러한 서브그룹 제어 정보의 흐름은 명확성을 위해 도시되지 않았다.
이미 언급한 기능 블록 이외에, 비디오 디코더(310)는 아래에 설명되는 바와 같이 개념적으로 다수의 기능 유닛으로 세분될 수 있다. 상업적인 제약 조건하에서 동작하는 실제 구현에서, 이들 유닛 중 다수는 서로 밀접하게 상호작용하고, 적어도 부분적으로 서로 통합될 수 있다. 그러나 개시된 주제를 설명할 목적으로, 이하의 기능 유닛으로의 개념적 세분화가 적절하다.
제1 유닛은 스케일러/역변환 유닛(the scaler / inverse transform unit)(351)이다. 스케일러/역변환 유닛(351)은 파서(320)로부터 심볼(321)로서, 사용할 변환, 블록 크기, 양자화 계수, 양자화 스케일링 행렬 등을 포함하는 제어 정보뿐만 아니라 양자화된 변환 계수를 수신한다. 스케일러/역변환 유닛(351)은 집성기(aggregator)(355)에 입력될 수 있는, 샘플 값을 포함하는 블록을 출력할 수 있다.
경우에 따라서는, 스케일러/역변환(351)의 출력 샘플은 인트라 코딩된 블록, 즉, 이전에 재구성된 화상으로부터의 예측 정보를 사용하지 않지만, 현재 화상의 이전에 재구성된 부분으로부터의 예측 정보를 사용할 수 있는 블록과 관련될 수 있다. 이러한 예측 정보는 인트라 화상 예측(인트라 예측) 유닛(352)에 의해 제공될 수 있다. 경우에 따라서는, 인트라 화상 예측 유닛(352)은 현재 화상 버퍼(358)로부터 인출된(fetched) 이미 재구성된 주위 정보를 사용하여, 재구성중인 블록의 동일한 크기 및 형상의 블록을 생성한다. 현재 화상 버퍼(358)는, 예를 들어 부분적으로 재구성된 현재 화상 및/또는 완전히 재구성된 현재 화상을 버퍼링한다. 집성기(355)는, 경우에 따라서, 샘플마다, 인트라 예측 유닛(352)이 생성한 예측 정보를 스케일러/역변환 유닛(351)에 의해 제공되는 바와 같은 출력 샘플에 부가한다.
다른 경우에, 스케일러/역변환 유닛(351)의 출력 샘플은 인터 코딩되고(inter coded) 잠재적으로 움직임 보상된 블록과 관련될 수 있다. 그러한 경우, 움직임 보상 예측 유닛(353)은 예측에 사용되는 샘플을 인출하기 위해 참조 화상 메모리(357)에 액세스할 수 있다. 블록과 관련된 심볼(321)에 따라 인출된 샘플을 움직임 보상한 후에, 이들 샘플을 집성기(355)에 의해 스케일러/역변환 유닛(351)의 출력(이 경우에 잔차 샘플(residual sample) 또는 잔차 신호(residual signal)라고 함)에 추가하여 출력 샘플 정보를 생성할 수 있다. 움직임 보상 예측 유닛(353)이 예측 샘플을 인출하는 참조 화상 메모리(357) 내의 주소는 예를 들어 X, Y 및 참조 화상 성분을 가질 수 있는 심볼(321)의 형태로 움직임 보상 예측 유닛(353)에 이용 가능한, 움직임 벡터에 의해 제어될 수 있다. 움직임 보상은 또한 서브샘플의 정확한 움직임 벡터가 사용되고 있는 경우에 참조 화상 메모리(357)로부터 인출된 샘플 값의 보간, 움직임 벡터 예측 메커니즘 등도 포함할 수 있다.
집성기(355)의 출력 샘플은 루프 필터 유닛(356)에서 다양한 루프 필터링 기술을 거칠 수 있다. 비디오 압축 기술은 코딩된 비디오 시퀀스(코딩된 비디오 비트 스트림이라고도 함)에 포함된 파라미터에 의해 제어되고 파서(320)로부터의 심볼(321)로서 루프 필터 유닛(356)에 이용 가능한 인루프(in-loop) 필터 기술을 포함할 수 있지만, 코딩된 화상 또는 코딩된 비디오 시퀀스의 이전(디코딩 순서로) 부분의 디코딩 중에 획득된 메타 정보에 응답할 수 있을뿐만 아니라, 이전에 재구성되고 루프 필터링된 샘플 값에도 응답할 수 있다.
루프 필터 유닛(356)의 출력은 렌더 기기(312)로 출력될 뿐만 아니라 미래의 인터 화상 예측에 사용하기 위해 참조 화상 메모리(357)에 저장될 수 있는 샘플 스트림일 수 있다.
일단 완전히 재구성된 특정 코딩된 화상은 미래 예측을 위한 참조 화상으로서 사용될 수 있다. 예를 들어, 현재 화상에 대응하는 코딩된 화상이 완전히 재구성되고 코딩된 화상이 (예를 들어, 파서(320)에 의해) 참조 화상으로서 식별되면, 현재 화상 버퍼(358)는 참조 화상 메모리(357)의 일부가 될 수 있고, 다음의 코딩된 화상의 재구성을 시작하기 전에 새로운 현재 화상 버퍼가 재할당될 수 있다.
비디오 디코더(310)는 ITU-T Rec. H.265과 같은 표준에서 미리 정해진 비디오 압축 기술에 따라 디코딩 동작을 수행할 수 있다. 코딩된 비디오 시퀀스는 비디오 압축 기술 또는 표준의 구문(syntax) 및 비디오 압축 기술 또는 표준의 문서로서의 프로파일 모두를 준수한다는 점에서, 사용되는 비디오 압축 기술 또는 표준에 의해 지정된 구문을 따를 수 있다. 구체적으로, 프로파일은 비디오 압축 기술 또는 표준에서 사용 가능한 모든 도구 중에서 그 프로파일에서 사용 가능한 유일한 도구로 특정 도구를 선택할 수 있다. 또한, 코딩된 비디오 시퀀스의 복잡도가 비디오 압축 기술 또는 표준의 레벨에 의해 정의되어 있는 범위 내에 있는 것도 준수할 필요가 있을 수 있다. 경우에 따라, 레벨은 최대 화상 크기, 최대 프레임 레이트, 최대 재구성 샘플 레이트(예를 들어 초당 메가 샘플로 측정됨), 최대 참조 화상 크기 등을 제한하다. 레벨에 의해 설정된 제한은, 경우에 따라, 가상 참조 디코더(Hypothetical Reference Decoder, HRD) 사양 및 코딩된 비디오 시퀀스로 시그널링되는 HRD 버퍼 관리를 위한 메타 데이터를 통해 추가로 더욱 제약을 받을 수 있다.
일 실시예에서, 수신기(331)는 인코딩된 비디오와 함께 추가(중복) 데이터를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로서 포함될 수 있다. 추가 데이터는 데이터를 적절히 디코딩하고 및/또는 원본 비디오 데이터를 보다 정확하게 재구성하기 위해 비디오 디코더(310)에 의해 사용될 수 있다. 추가 데이터는 예를 들어 시간적, 공간적 또는 신호 잡음비(signal noise ratio, SNR) 향상 계층(enhancement layer), 중복 슬라이스, 중복 화상, 순방향 오류 정정 코드 등의 형태일 수 있다.
도 4는 본 개시의 일 실시예에 따른 비디오 인코더(403)의 블록도를 도시한다. 비디오 인코더(403)는 전자 기기(420)에 포함된다. 전자 기기(420)는 송신기(440)(예: 송신 회로)를 포함한다. 비디오 인코더(403)는 도 2의 예에서의 비디오 인코더(203) 대신에 사용될 수 있다.
비디오 인코더(403)는, 비디오 인코더(403)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(401)(도 4의 예에서 전자 기기(420)의 일부가 아님)로부터 비디오 샘플을 수신할 수 있다. 다른 예에서, 비디오 소스(401)는 전자 기기(420)의 일부이다.
비디오 소스(401)는 임의의 적당한 비트 깊이(예: 8비트, 10비트, 12비트, ...), 임의의 색 공간(예: BT.601 Y CrCB, RGB 등) 및 임의의 적당한 샘플링 구조(예: Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림의 형태로 비디오 인코더(403)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서빙 시스템에서, 비디오 소스(401)는 미리 준비된 비디오를 저장하는 저장 기기일 수 있다. 비디오 회의 시스템에서, 비디오 소스(401)는 로컬 이미지 정보를 비디오 시퀀스로서 캡처하는 카메라일 수 있다. 비디오 데이터는 순차적으로 볼 때 움직임을 부여하는 복수의 개별 화상으로서 제공될 수 있다. 화상 자체는 화소의 공간 배열(spatial array)로서 구성될 수 있으며, 각가의 화소는 사용중인 샘플링 구조, 색 공간 등에 따라 하나 이상의 샘플을 포함할 수 있다. 당업자는 화소과 샘플 사이의 관계를 쉽게 이해할 수 있다. 이하에 설명은 샘플에 중점을 둔다.
일 실시예에 따르면, 비디오 인코더(403)는 소스 비디오 시퀀스의 화상을 코딩된 비디오 시퀀스(443)로 실시간으로 또는 애플리케이션에 의해 요구되는 임의의 다른 시간 제약하에 코딩 및 압축할 수 있다. 적절한 코딩 속도를 강화하는 것은 제어기(450)의 기능 중 하나이다. 일부 실시예에서, 제어기(450)는 후술되는 바와 같이 다른 기능 유닛을 제어하고 다른 기능 유닛에 기능적으로 연결된다. 명확성을 위해 연결은 도시되지 않았다. 제어기(450)에 의해 설정되는 파라미터는 레이트 제어 관련 파라미터(화상 스킵, 양자화기, 레이트 왜곡 최적화 기술의 람다(lambda) 값,…), 화상 크기, 화상 그룹(GOP) 레이아웃, 최대 움직임 벡터 검색 범위 및 등을 포함할 수 있다. 제어기(450)는 특정 시스템 설계에 최적화된 비디오 인코더(403)와 관련된 다른 적당한 기능을 갖도록 구성될 수 있다.
일부 실시예에서, 비디오 인코더(403)는 코딩 루프에서 동작하도록 구성된다. 지나치게 단순화된 설명으로서, 예에서, 코딩 루프는 소스 코더(430)(예: 코딩될 입력 화상 및 참조 화상(들)에 기초하여, 심볼 스트림과 같은 심볼을 생성하는 것을 담당함) 및 비디오 인코더(403)에 내장된 (로컬) 디코더(433)를 포함할 수 있다. 디코더(433)는 (원격) 디코더도 생성하는 것과 유사한 방식으로 샘플 데이터를 생성하기 위해 심볼을 재구성한다(심볼과 코딩된 비디오 비트 스트림 사이의 압축은 개시된 주제에서 고려되는 비디오 압축 기술에서 무손실이기 때문에). 재구성된 샘플 스트림(샘플 데이터)은 참조 화상 메모리(434)에 입력된다. 심볼 스트림의 디코딩은 디코더 위치(로컬 또는 원격)와 무관한 비트 일치 결과(bit-exact result)로 이어지기 때문에, 참조 화상 메모리(434)의 내용은 또한 로컬 인코더와 원격 인코더 사이에 비트 일치이다. 다시 말해, 인코더의 예측 부분은 디코딩 동안 예측을 사용할 때 디코더가 "보는" 것과 정확히 동일한 샘플 값을 참조 화상 샘플로서 "본다". 이러한 참조 화상 동기의 기본 원리(및 채널 에러로 인해 동시성(synchronicity)이 유지될 수 없는 경우, 결과 드리프트)가 일부 관련 기술에서도 사용된다.
"로컬" 디코더(433)의 동작은 비디오 디코더(310)와 같은 "원격" 디코더의 동작과 동일할 수 있으며, 이는 도 3과 관련하여 위에서 상세히 설명하였다. 그러나 도 3을 간단히 참조하면, 심볼이 이용 가능하고 엔트로피 코더(445) 및 파서(320)에 의해 코딩된 비디오 시퀀스에 대한 심볼의 인코딩/디코딩이 무손실일 수 있으므로, 버퍼 메모리(315)를 포함하는 비디오 디코더(310)의 엔트로피 디코딩 부분, 및 파서(320)는 로컬 디코더(433)에서 완전히 구현되지 않을 수 있다.
이 시점에서 이루어질 수 있는 관찰은 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 임의의 디코더 기술이 또한 대응하는 인코더에 실질적으로 동일한 기능적 형태로 존재할 필요가 있다는 것이다. 이러한 이유로, 개시된 주제는 디코더 동작에 중점을 둔다. 인코더 기술에 대한 설명은 포괄적으로 설명된 디코더 기술과 반대이기 때문에 축약될 수 있다. 특정 영역에서만 더 상세한 설명이 필요하며 아래에 제공된다.
동작 중에, 일부 예에서, 소스 코더(430)는 "참조 화상으로서 지정된 비디오 시퀀스로부터 하나 이상의 이전에 코딩된 화상을 참조하여 입력 화상을 예측적으로 코딩하는, 움직임 보상 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(432)은 입력 화상의 화소 블록들과 입력 화상에 대한 예측 참조(들)로서 선택될 수 있는 참조 화상(들)의 화소 블록 간의 차이를 코딩한다.
로컬 비디오 디코더(433)는 소스 코더(430)에 의해 생성된 심볼에 기초하여, 참조 화상으로 지정될 수 있는 화상의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(432)의 동작은 유리하게 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 4에 도시되지 않음)에서 디코딩될 수 있는 경우, 재구성된 비디오 시퀀스는 전형적으로 약간의 에러를 갖는 소스 비디오 시퀀스의 복제물(replica)일 수도 있다. 로컬 비디오 디코더(433)는 참조 화상에 대해 비디오 디코더에 의해 수행될 수 있고 재구성된 참조 화상이 참조 화상 캐시(434)에 저장되게 할 수 있는 디코딩 프로세스들을 복제한다. 이러한 방식으로, 비디오 인코더(403)는 원단(far-end) 비디오 디코더에 의해 획득될 재구성된 참조 화상으로서 공통 내용을 갖는 재구성된 참조 화상의 사본을 로컬로 저장할 수 있다(송신 오류 없음).
예측기(435)는 코딩 엔진(432)에 대한 예측 검색을 수행할 수 있다. 즉, 코딩될 새로운 화상에 대해, 예측기(435)는 또는 참조 화상 움직임 벡터, 블록 형상 등과 같은 특정 메타데이터 또는 샘플 데이터(후보 참조 화소 블록으로서)를 참조 화상 메모리(434)에서 검색할 수 있으며. 이는 새로운 화상에 대해 적절한 예측 참조의 역할을 할 수 있다. 예측기(435)는 적절한 예측 참조를 찾기 위해 샘플 블록-화소 블록 단위(sample block-by-pixel block basis)로 동작할 수 있다. 경우에 따라서, 예측기(435)에 의해 획득된 검색 결과에 의해 결정된 바와 같이, 입력 화상은 참조 화상 메모리(434)에 저장된 복수의 참조 화상으로부터 얻은 예측 참조를 가질 수 있다.
제어기(450)는, 예를 들어 비디오 데이터를 인코딩하기 위해 사용되는 파라미터 및 서브그룹 파라미터의 설정을 포함한, 소스 코더(430)의 코딩 동작을 관리할 수 있다.
전술한 모든 기능 유닛의 출력은 엔트로피 코더(445)에서 엔트로피 코딩될 수 있다. 엔트로피 코더(445)는, 예를 들어 허프만 코딩, 가변 길이 코딩, 산술 코딩 등의, 당업자에게 알려진 기술에 따라 심볼을 무손실 압축함으로써, 다양한 기능 유닛에 의해 생성된 심볼을 코딩된 비디오 시퀀스로 변환한다.
송신기(440)는 엔트로피 코더(445)에 의해 생성된 코딩된 비디오 시퀀스(들)를 버퍼링하여, 인코딩된 비디오 데이터를 저장하는 저장 기기에 대한 하드웨어/소프트웨어 링크일 수 있는 통신 채널(460)을 통한 송신을 준비할 수 있다. 송신기(440)는 비디오 코더(403)로부터의 코딩된 비디오 데이터를 송신될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림(소스는 도시되지 않음)과 병합할 수 있다.
제어기(450)는 비디오 인코더(403)의 동작을 관리할 수 있다. 코딩하는 동안, 제어기(450)는 각각의 코딩된 화상에 특정 코딩된 화상 유형을 할당할 수 있으며, 이는 각각의 화상에 적용될 수 있는 코딩 기술에 영향을 미칠 수 있다. 예를 들어, 화상은 종종 다음 화상 유형 중 하나로서 할당될 수 있다.
인트라 화상(Intra Picture)(I 화상)는 시퀀스 내의 임의의 다른 화상을 예측의 소스로서 사용하지 않고 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱은, 예를 들어 독립 디코더 리프레시("Independent Decoder Refresh, IDR") 화상을 포함한, 상이한 유형의 인트라 화상을 허용하다. 당업자는 I 화상의 변형 및 그 각각의 애플리케이션 및 특징을 알고 있다.
예측 화상(Predictive picture)(P 화상)은 각각의 블록의 샘플 값을 예측하기 위해 최대 하나의 움직임 벡터 및 참조 색인을 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 화상일 수 있다.
양방향 예측 화상(Bi-directionally Predictive Picture)(B 화상)은 각각의 블록의 샘플 값을 예측하기 위해 최대 두 개의 움직임 벡터 및 참조 색인을 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 화상일 수 있다. 유사하게, 다중 예측 화상(multiple-predictive picture)은 단일 블록의 재구성을 위해 두 개 이상의 참조 화상 및 관련 메타데이터를 사용할 수 있다.
소스 화상은 일반적으로 복수의 샘플 블록(예: 각각 4x4, 8x8, 4x8, 또는 16x16 샘플의 블록)으로 공간적으로 세분화될 수 있고, 블록 단위로 코딩될 수 있다. 블록은 블록의 각각의 화상에 적용된 코딩 할당에 의해 결정된 다른(이미 코딩된) 블록을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 화상의 블록은 비예측적으로 코딩될 수 있거나 동일한 화상의 이미 코딩된 블록을 참조하여 예측적으로 코딩될 수 있다(공간 예측 또는 인트라 예측). P 화상의 화소 블록은 공간 예측을 통해 또는 하나의 이전에 코딩된 참조 화상을 참조하여 시간 예측을 통해, 예측적으로 코딩될 수 있다. B 화상의 블록은 공간 예측을 통해 또는 하나 또는 두 개의 이전에 코딩된 참조 화상을 참조하여 시간 예측을 통해, 예측적으로 코딩될 수 있다.
비디오 인코더(403)는 ITU-T Rec. H.265와 같은, 미리 정해진 비디오 코딩 기술 또는 표준에 따라 코딩 동작을 수행할 수도 있다. 그 동작에서, 비디오 인코더(403)는 입력 비디오 시퀀스에서의 시간 및 공간 리던던시를 이용하는 예측 코딩 동작을 포함한, 다양한 압축 동작을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 구문을 따를 수 있다.
일 실시예에서, 송신기(440)는 인코딩된 비디오와 함께 추가 데이터를 송신할 수 있다. 소스 코더(430)는 그러한 데이터를 코딩된 비디오 시퀀스의 일부로서 포함할 수 있다. 추가 데이터는 시간적/공간적/SNR 강화 계층, 중복 화상 및 슬라이스와 같은 중복 데이터(redundant data), 보충 확장 정보(SEI) 메시지, 시각적 유용성 정보 (Visual Usability Information, VUI) 파라미터 세트 프래그먼트 등과 같은, 용장성 데이터의 다른 형태를 포함할 수 있다.
비디오는 시간 시퀀스로 복수의 소스 화상(비디오 화상)으로서 캡처될 수 있다. 인트라 화상 예측(종종 인트라 예측으로 약칭됨)은 주어진 화상에서 공간 상관(spatial correlation)을 사용하고, 인터 화상 예측은 화상 사이의 (시간적 또는 다른) 상관을 사용한다. 일례에서, 현재 화상으로 지칭되는 인코딩/디코딩 중인 특정 화상은 블록들로 분할된다. 현재 화상의 블록이 비디오에서 이전에 코딩되고 여전히 버퍼링되어 있는 참조 화상의 참조 블록과 유사한 경우, 현재 화상의 블록은 움직임 벡터라고 하는 벡터에 의해 코딩될 수있다. 움직임 벡터는 참조 화상에서 참조 블록을 가리키고, 다수의 참조 화상이 사용 중인 경우에, 참조 화상을 식별할 수 있게 해주는 3차원을 가질 수 있다.
일부 실시예에서, 양방향 예측 기법이 인터 화상 예측에 사용될 수 있다. 양방향 예측 기법에 따르면, 비디오에서 현재 화상에 대해 디코딩 순서에 있어 둘 다 앞서는(그러나 표시 순서에 있어, 각각 과거와 미래일 수 있음), 제1 참조 화상 및 제2 참조 화상이 사용된다. 현재 화상의 블록은 제1 참조 화상의 제1 참조 블록을 가리키는 제1 움직임 벡터 및 제2 참조 화상의 제2 참조 블록을 가리키는 제2 움직임 벡터에 의해 코딩될 수 있다. 블록은 제1 참조 블록과 제2 참조 블록의 조합에 의해 예측될 수 있다.
또한, 코딩 효율을 향상시키기 위해 인터 화상 예측에 병합 모드 기법이 사용될 수 있다.
본 개시의 일부 실시예에 따르면, 인터 화상 예측 및 인트라 화상 예측과 같은 예측이 블록 단위로 수행된다. 예를 들어, HEVC 표준에 따르면, 비디오 화상 시퀀스에서의 화상은 압축을 위해 코딩 트리 유닛(CTU)으로 분할되고, 화상의 CTU는 64x64 화소, 32x32 화소 또는 16x16 화소와 같은, 동일한 크기를 갖는다. 일반적으로, CTU는 하나의 루마 CTB 및 두 개의 크로마 CTB인 세 개의 코딩 트리 블록(CTB)을 포함한다. 각각의 CTU는 하나 또는 다수의 코딩 유닛(CU)으로 재귀적으로 쿼드트리 분할될 수 있다. 예를 들어, 64x64 화소의 CTU는 64x64 화소의 하나의 코딩 유닛(CU), 또는 32x32 화소의 4개의 CU, 또는 16x16 화소의 16개의 CU로 분할될 수 있다. 일례에서, 각각의 CU는 인터 예측 유형 또는 인트라 예측 유형과 같은, CU에 대한 예측 유형을 결정하기 위해 분석된다. CU는 시간 및/또는 공간 예측성에 따라 하나 이상의 예측 유닛(prediction units, PUs)로 분할된다. 일반적으로, 각각의 PU는 루마 예측 블록(PB) 및 두 개의 크로마 PB를 포함한다. 일 실시 예에서, 코딩(인코딩/디코딩)에서의 예측 동작은 예측 블록의 단위로 수행된다. 예측 블록의 예로서 루마 예측 블록을 사용하며, 예측 블록은 8x8 화소, 16x16 화소, 8x16 화소, 16x8 화소 등과 같은, 화소에 대한 값의 행렬(예: 루마 값)을 포함한다.
도 5는 본 개시의 다른 실시예에 따른 비디오 인코더(503)의 도면을 도시한다. 비디오 인코더(503)는 비디오 화상의 시퀀스에서 현재 비디오 화상 내의 샘플 값의 처리 블록(예: 예측 블록)을 수신하고, 처리 블록을 코딩된 비디오 시퀀스의 일부인 코딩된 화상으로 인코딩하도록 구성된다. 일례에서, 비디오 인코더(503)는도 2 예에서의 비디오 인코더(203) 대신에 사용된다.
HEVC 예에서, 비디오 인코더(503)는 8x8 샘플의 예측 블록 등과 같은, 처리 블록에 대한 샘플 값의 행렬을 수신한다. 비디오 인코더(503)는 처리 블록이, 예를 들어 레이트 왜곡 최적화(rate-distortion optimization)를 사용하는 인트라 모드, 인터 모드, 또는 양방향 예측 모드를 사용하여 최상 코딩(best coded)되는지를 결정한다. 처리 블록이 인트라 모드로 코딩될 경우, 비디오 인코더(503)는 인트라 예측 기법을 사용하여 처리 블록을 코딩된 화상으로 인코딩할 수 있고; 처리 블록이 인터 모드 또는 양방향 예측 모드로 코딩될 경우, 비디오 인코더(503)는 인터 예측 또는 양방향 예측 기법을 각각 사용하여, 처리 블록을 코딩된 화상으로 인코딩할 수 있다. 특정 비디오 코딩 기술에서, 병합 모드는 움직임 벡터가 예측기 외부의 코딩된 움직임 벡터 성분의 도움 없이 하나 이상의 움직임 벡터 예측기로부터 도출되는 인트라 화상 예측 서브모드일 수 있다. 다른 특정 비디오 코딩 기술에서, 대상 블록에 적용 가능한 움직임 벡터 성분이 존재할 수 있다. 일례에서, 비디오 인코더(503)는 처리 블록의 모드를 결정하기 위한 모드 결정 모듈(도시되지 않음)과 같은 다른 구성요소를 포함한다.
도 5 예에서, 비디오 인코더(503)는 도 5에 도시된 바와 같이 함께 연결된 인터 인코더(530), 인트라 인코더(522), 잔차 계산기(residue calculator)(523), 스위치(switch)(526), 잔차 인코더(524), 범용 제어기(521) 및 엔트로피 인코더(525)를 포함한다.
인터 인코더(530)는 현재 블록(예: 처리 블록)의 샘플을 수신하고, 그 블록을 참조 화상 내의 하나 이상의 참조 블록(예: 이전 화상의 블록 및 이후 화상의 블록)과 비교하고, 인터 예측 정보(예: 인터 인코딩 기법, 움직임 벡터, 병합 모드 정보에 따른 중복 정보의 설명)를 생성하고, 임의의 적합한 기법을 사용하여 인터 예측 정보에 기초하여 인터 예측 결과(예: 예측된 블록)를 계산하도록 구성된다.
인트라 인코더(522)는 현재 블록(예:, 처리 블록)의 샘플을 수신하도록 구성되며, 경우에 따라서는 그 블록을 동일한 화상 내의 이미 코딩된 블록과 비교하고, 변환 후의 양자화된 계수, 경우에 따라서는 또한 인트라 예측 정보(예: 하나 이상의 인트라 인코딩 기법에 따른 인트라 예측 방향 정보)를 생성하도록 구성된다.
범용 제어기(521)는 범용 제어 데이터를 결정하고 범용 제어 데이터에 기초하여 비디오 인코더(503)의 다른 구성요소를 제어하도록 구성된다. 일례에서, 범용 제어기(521)는 블록의 모드를 결정하고, 모드에 기초하여 제어 신호를 스위치(526)에 제공한다. 예를 들어, 모드가 인트라인 경우, 범용 제어기(521)는 잔차 계산기(523)에 의한 사용을 위해 인트라 모드 결과를 선택하도록 스위치(526)를 제어하고, 인트라 예측 모드 정보를 선택하여 비트스트림에 인트라 예측 정보를 포함하도록 엔트로피 인코더(525)를 제어하고; 모드가 인터 모드인 경우, 범용 제어기(521)는 잔차 계산기(523)에 의한 사용을 위해 인터 예측 결과를 선택하도록 스위치(526)를 제어하고, 인터 예측 정보를 선택하여 비트스트림에 인터 예측 정보를 포함하도록 도록 엔트로피 인코더(525)를 제어한다.
잔차 계산기(523)는 수신된 블록과 인트라 인코더(522) 또는 인터 인코더(530)로부터 선택된 예측 결과 사이의 차이(잔차 데이터)를 계산하도록 구성된다. 잔차 인코더(524)는 잔차 데이터에 기초하여 동작하여 잔차 데이터를 인코딩하여 변환 계수를 생성하도록 구성된다. 일례에서, 잔차 인코더(524)는 주파수 영역에서 잔차 데이터를 변환하고, 변환 계수를 생성하도록 구성된다. 그 후, 변환 계수는 양자화 처리되어 양자화된 변환 계수가 획득된다.
엔트로피 인코더(525)는 인코딩된 블록을 포함하도록 비트스트림을 포맷하도록 구성된다. 엔트로피 인코더(525)는 HEVC 표준과 같은, 적합한 표준에 따라 다양한 정보를 포함하도록 구성된다. 일례에서, 엔트로피 인코더(525)는 범용 제어 데이터, 선택된 예측 정보(예: 인트라 예측 정보 또는 인터 예측 정보), 잔차 정보 및 기타 적합한 정보를 비트 스트림에 포함하도록 구성된다. 개시된 주제에 따르면, 인터 모드 또는 양방향 예측 모드의 병합 서브모드로 블록을 코딩하는 경우, 잔차 정보는 존재하지 않는다.
도 6은 본 개시의 다른 실시예에 따른 비디오 디코더(610)의 다이어그램을 도시한다. 비디오 디코더(610)는 코딩된 비디오 시퀀스의 일부인 코딩된 화상을 수신하고, 코딩된 화상을 디코딩하여 재구성된 화상을 생성하도록 구성된다. 일례에서, 비디오 디코더(610)는 도 2 예에서의 비디오 디코더(210) 대신에 사용된다.
도 6 예에서, 비디오 디코더(610)는 도 6에 도시된 바와 같이 함께 연결된 엔트로피 디코더(671), 인터 디코더(680), 잔차 디코더(673), 재구성 모듈(674) 및 인트라 디코더(672)를 포함한다.
엔트로피 디코더(671)는 코딩된 화상으로부터, 코딩된 화상이 구성되는 구문 요소를 나타내는 특정 심볼을 재구성하도록 구성될 수 있다. 이러한 심볼은, 예를 들어, 블록이 코딩되는 모드(예: 인트라, 인터, 양방향 예측(b-predicted), 뒤의 두 개는 병합 서브모드 또는 다른 서브모드), 인트라 디코더(672) 또는 인터 디코더(680) 각각에 의해 예를 들어 양자화된 변환 계수 등의 형태로 잔차 정보를 예측하는 데 사용되는 특정 샘플 또는 메타 데이터를 식별할 수 있게 하는 예측 정보(예: 인트라 예측 정보 또는 인터 예측 정보)를 포함할 수 있다. 일례에서, 예측 모드가 인터 또는 양방향 예측 모드인 경우, 인터 예측 정보가 인터 디코더에 제공되고(680); 예측 유형이 인트라 예측 유형인 경우, 인트라 예측 정보가 인트라 디코더에 제공된다(672). 잔차 정보는 역 양자화될 수 있고 잔차 디코더(673)에 제공된다.
인터 디코더(680)는 인터 예측 정보를 수신하고, 인터 예측 정보에 기초하여 인터 예측 결과를 생성하도록 구성된다.
인트라 디코더(672)는 인트라 예측 정보를 수신하고, 인트라 예측 정보에 기초하여 예측 결과를 생성하도록 구성된다.
잔차 디코더(673)는 역양자화를 수행하여 역양자화된 변환 계수를 추출하고, 역양자화 변환 계수를 처리하여 잔차를 주파수 영역으로부터 공간 영역으로 변환하도록 구성된다. 잔차 디코더(673)는 또한(양자화기 파라미터(Quantizer Parameter, QP)를 포함하기 위해) 특정 제어 정보를 필요로 할 수 있고, 그 정보는 엔트로피 디코더(671)에 의해 제공될 수 있다(이는 저 볼륨 제어 정보만일 수 있어 데이터 경로는 도시되지 않음).
재구성 모듈(674)은 공간 영역에서, 잔차 디코더(673)에 의한 출력인 잔차와 예측 결과(경우에 따라 인터 또는 인트라 예측 모듈에 의한 출력임)를 결합하여 재구성된 블록을 형성하는데, 이는 재구성된 화상의 일부일 수 있고, 이는 다시 재구성된 비디오의 일부일 수 있다. 디블로킹(deblocking) 동작 등과 같은 다른 적합한 동작이 시각적 품질을 향상시키기 위해 수행될 수 있음에 유의하기 바란다.
비디오 인코더(203, 403, 503) 및 비디오 디코더(210, 310, 610)은 임의의 적합한 기술을 사용하여 구현될 수 있음에 유의하기 바란다. 일 실시예에서, 비디오 인코더(203, 403, 503), 및 비디오 디코더(210, 310, 610)는 하나 이상의 집적 회로를 사용하여 구현될 수 있다. 다른 실시예에서, 비디오 인코더(203, 403, 503), 및 비디오 디코더(210, 310, 610)는 소프트웨어 명령어를 실행하는 하나 이상의 프로세서를 사용하여 구현될 수 있다.
병합 후보(Merge candidate)는 현재 블록의 공간적 또는 시간적 이웃 블록으로부터의 움직임 정보를 확인함으로써 형성될 수 있다. 도 7을 참조하면, 현재 블록(701)은 움직임 검색 프로세스 동안에 인코더/디코더에 의해 공간적으로 이동된 동일한 크기의 이전 블록으로부터 예측 가능하다는 것이 발견된 샘플을 포함한다. 일부 실시예에서, 움직임 벡터를 직접 코딩하는 대신에, 움직임 벡터는 하나 이상의 참조 화상과 연관된 메타 데이터, 예를 들어, 가장 최근의(디코딩 순서상) 참조 화상으로부터, D, A, C, B 및 E(각각 702∼706)로 표시된 5개의 주위 샘플 중 하나와 연관된 움직임 벡터를 사용하여 도출될 수 있다. 블록 A, B, C, D 및 E는 공간 병합 후보로 지칭될 수 있다. 이들 후보는 병합 후보 리스트에 순차적으로 체크인될 수 있다. 제거된 후보가 목록에서 제거되도록 전정 작업(pruning operation)을 수행할 수 있다.
일부 실시예에서, 공간 후보를 병합 리스트에 넣은 후, 시간 후보도 리스트 에 체크인된다. 지정된 참조 화상에서 현재 블록의 병치된(collocated) 블록이 발견된다. 참조 화상의 C0 위치(707)에서의 움직임 정보가 시간 병합 후보로서 사용된다. C0 위치는 이 블록의 왼쪽 위 코너(top left corner)가 현재 블록(701)의 참조 화상에서 병치된 블록의 오른쪽 아래 코너(bottom right corner)에 있는 참조 화상의 블록일 수 있다. 참조 화상의 병치된 블록은 현재 블록(701)과 동일한 위치 좌표(예: x 및 y 좌표)를 포함할 수 있다. C0 위치(707)에서의 블록이 인터 모드로 코딩되지 않거나 이용할 수 없으면, C1 위치에서의 블록이 사용될 수 있다. C1 위치에서의 블록은 참조 화상에서 병치된 블록 내의 블록의 중심 위치(예: w/2, h/2)에서 왼쪽 위 코너를 가질 수 있다. 특히, C1 위치에서의 블록은 참조 화상에서 병치된 블록의 서브블록일 수 있다. 위의 예에서 w와 h는 각각 블록의 너비와 높이이다. 일부 실시예에 따르면, 추가적인 병합 후보는 결합된 양방향 예측 후보(bi-predictive) 및 제로 움직임 벡터 후보(zero motion vector candidate)를 포함한다.
스킵 모드(skip mode)는 움직임 데이터가 명시적으로 시그널링되는 대신 추론되고 예측 잔차(prediction residual)가 0(즉, 변환 계수가 송신되지 않음)인 블록을 지시하는 데 사용될 수 있다. 인터 화상 예측 슬라이스의 각각의 CU의 시작에서, 다음 중 하나 이상을 암시하는 스킵 플래그(예: skip_flag)가 시그널링될 수 있다:(i) CU가 하나의 PU만을 포함한다(예: 2Nx2N); (ii) 병합 모드가 움직임 데이터를 도출하는 데 사용된다; 또는 (iii) 비트스트림에 잔차 데이터가 존재하지 않는다.
일부 실시예에 따르면, 서브CU 모드는 추가 병합 후보로서 인에이블될 수 있다. 일부 실시예에서, 서브CU 모드를 시그널링하기 위해 추가적인 구문 요소(syntax element)가 사용되지 않는다. 일부 실시예에서, 두 개의 추가 병합 후보가 각각의 CU의 병합 후보 리스트에 추가되어 대안 시간 움직임 벡터 예측(alternative temporal motion vector prediction, ATMVP) 모드 및 공간 시간 움직임 벡터 예측(spatial-temporal motion vector prediction, STMVP) 모드를 나타낸다.
시퀀스 파라미터 세트는 병합 리스트 내의 후보의 수를 지시할 수 있다. 예를 들어, 시퀀스 파라미터 세트가 ATMVP 및 STMVP가 인에이블된 것으로 지시하면 병합 리스트에 최대 7개의 병합 후보가 사용될 수 있다. 추가 병합 후보의 인코딩 로직은 병합 후보 리스트 내의 다른 병합 후보의 것과 동일할 수 있으며, 그 결과 P 또는 B 슬라이스 내의 각각의 CU에 대해, 두 개의 더 많은 레이트-왜곡(rate-distortion, RD) 검사가 두 개의 추가 병합 후보에 대해 수행된다. 병합 후보의 순서는 A, B, C, D, ATMVP, STMVP, E(리스트의 병합 후보가 6 미만인 경우), 시간 후보, 결합된 양방향 예측 후보 및 제로 움직임 벡터 후보일 수 있다. 병합 후보 리스트는 병합 색인에 의해 참조될 수 있다. 일부 실시예들에서, 병합 색인의 모든 빈(bin)은 콘텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding, CABAC)에 의해 콘텍스트 코딩된다. 다른 실시예에서, 제1 빈만이 콘텍스트 코딩되고 나머지 빈들은 콘텍스트 바이패스 코딩된다.
일부 실시예에 따르면, 후보 움직임 벡터는 스텝 크기가 8x8 블록인 이전에 코딩된 블록으로부터 검색된다. 도 8은 8x8 블록으로 둘러싸인 현재 블록(800)을 나타낸다. 가장 가까운 공간 이웃은 카테고리 1 후보이며, 카테고리 1로서 바로 위 행(immediate top row)(즉, 블록 mv0 및 mv1을 포함하는 행), 왼쪽 열(즉, mv2를 포함하는 열) 및 오른쪽 위 코너(즉, mv2)를 포함한다. 카테고리 2 후보는 현재 블록 경계로부터 떨어져 있고 이전에 코딩된 프레임에 병치되어 있는 바깥쪽 영역 블록을 포함할 수 있다. 카테고리 2 후보는 최대 세 개의 후보를 포함할 수 있다. 도 8에서, 카테고리 2 후보는 바깥쪽 위 행(즉, 블록 mv4 및 mv5를 포함하는 행) 및 바깥쪽 왼쪽 열(즉, 블록 mv5 및 mv6을 포함하는 열)로부터 선택될 수 있다. 상이한 참조 프레임들로부터 예측되거나 인트라 코딩된 이웃 블록은 리스트로부터 제거될 수 있다. 나머지 기준 블록에는 각각 가중치가 할당될 수 있다. 가중치는 현재 블록까지의 거리와 관련될 수 있다. 일례로서, 도 8을 참조하면, 후보 리스트는 다음 카테고리 1 후보: mv1, mv0, mv2 및 mv3을 포함할 수 있다. 후보 리스트는 다음 카테고리 2 후보: mv5, mv6 및 mv4를 더 포함할 수 있다.
일부 실시예에 따르면, 확장 병합 모드는 현재 블록 바로 옆에 있지 않은 블록을 포함하는 추가 병합 후보를 포함한다. 이러한 후보는 왼쪽, 위, 왼쪽 아래, 오른쪽 위 및 왼쪽 위 방향에 있을 수 있다. 최대 병합 후보의 수는 10일 수 있다. 도 9는 참조 블록들(즉, 대각선 패턴을 갖는 블록들)에 의해 왼쪽, 왼쪽 위, 위 및 오른쪽 위가 둘러싸인 현재 블록(900)을 도시한다. 참조 블록은 도 7에서의, 블록 A, B, C, D 및 E에 대응하는 이웃 블록 A, B, C, D 및 E를 포함할 수 있다. 도 9에서, 참조 블록의 왼쪽 위 코너는 현재 블록(900)에 대해 (-96, -96)의 오프셋을 가질 수 있다. 각각의 후보 블록 B(i, j) 또는 C(i, j)는 이전의 B 또는 C 후보 블록 각각과 비교하여 수직 방향으로 16의 오프셋을 가질 수 있다. 각각의 후보 블록 A(i, j) 또는 D(i, j)는 이전의 A 또는 D 후보 블록과 비교하여 수평 방향으로 16의 오프셋을 가질 수 있다. 각각의 E(i, j) 블록은 이전의 E 후보와 비교하여 수평 및 수직 방향으로 16의 오프셋을 가질 수 있다. 후보들은 현재 블록(900)에 가장 가까운 참조 블록에서 현재 블록(900)으로부터 가장 먼 참조 블록으로의 방향으로 검사될 수 있다. 검사되는 후보의 순서는 A(i, j), B(i, j), C(i, j), D(i, j) 및 E(i, j)일 수 있다.
도 9에서, 확장된 이웃 위치는 현재 블록(900)에 대해 또는 현재 블록(900)을 포함하는 현재 화상에 대해 결정될 수 있다. 일부 실시예에 따르면, 이러한 확장된 이웃 위치로부터 값을 인출하는 대신에, N개의 이전에 코딩된 블록의 움직임 정보가 더 많은 움직임 벡터 예측 후보를 제공하기 위해 이력 움직임 벡터 예측(HMVP) 버퍼에 저장된다. HMVP 버퍼는 다수의 HMVP 후보를 포함할 수 있고, 인코딩/디코딩 프로세스 동안 유지될 수 있다. 일부 실시예에서, HMVP 버퍼는 병합 모드 또는 AMVP 모드와 같은 움직임 벡터 예측 프로세스 동안에 HMVP 버퍼가 사용되는 경우에 가장 최근에 코딩된 움직임 정보가 먼저 고려될 수 있도록, 선입선출(first-in-first-out, FIFO) 원리로 동작할 수 있다 .
본 개시의 실시예는 인터 화상 예측 코딩을 위한 움직임 벡터 예측자를 얻는 몇몇 방법을 개시한다. 이러한 방법은 이력 기반 MV 버퍼로부터 MV 예측자를 사용하고 버퍼 관리를 수행하는 것을 포함한다. 이러한 방법은 차분 코딩(AMVP 모드)을 갖는 병합 모드 또는 움직임 벡터 예측 모두에 적용될 수 있다. 본 개시의 실시예는 병합 및 일반적인 MV 예측 개념을 사용하는 임의의 비디오 코딩 방법으로 확장될 수 있다. 본 발명의 실시예는 또한 스킵 모드에 적용될 수 있는데, 이 모드는 병합 모드를 사용하여 움직임 정보를 도출하기 때문이다.
도 10a 및 도 10b는 각각 후보가 삽입되기 전후의 HMVP 버퍼를 각각 나타낸다. 도 10a 및 도 10b에 도시된 바와 같이, HMVP 버퍼는 색인이 [0] 내지 [4]인 5개의 엔트리를 포함한다. 도 10b에서, 엔트리 CL_0는 색인 [4]에 삽입되어, 다른 엔트리는 왼쪽으로 하나씩 이동하게 하여, 결과적으로 엔트리 HMPV_0가 버퍼로부터 제거된다. 엔트리 CL_0은 이전에 인코딩 또는 디코딩된 블록의 움직임 벡터 예측자 정보를 포함할 수 있다.
일부 실시예에 따르면, 블록이 인터 코딩 모드(inter-coded mode)로 코딩되면, HMVP 버퍼의 각각의 엔트리는 이전에 코딩된 블록으로부터의 움직임 정보이다. 이 블록은 두 개의 움직임 벡터를 사용하여 양방향 예측 모드 또는 하나의 움직임 벡터를 사용하여 단방향 모드로 코딩될 수 있다. HMVP 버퍼의 각각의 엔트리에 대해, 양방향 모드로 코딩되면, 엔트리는 MV_L0(참조 색인 사용) 및 MV_L1(참조 색인 사용)인 MV 쌍을 포함한다. 일부 실시예에 따르면, 양방향 모드에 대응하는 두 개의 단방향 움직임 벡터는 (i) 원래 예측자(original predictor)로서 LO에 대한 참조 색인을 사용하는, L0 예측에 대한 MV_L0 및 (ii) 원래 예측자로서 L1에 대한 참조 색인을 사용하는, L1 예측에 대한 MV_L1을 포함한다. 일부 실시예에서, HMVP 버퍼 내의, 각각의 원래 양방향 MV 예측자에 대해, 원래 MV 예측자로부터 도출되는 두 개의 단방향 MV 예측자도 또한 원래 양방향 MV 예측자를 병합 리스트에 넣는 경우에 새로운 후보로 간주된다. 일 실시예에서, MV_L0 및 MV_L1은 대응하는 원래 양방향 MV가 리스트에 놓일 때마다 리스트에서 대응하는 원래 양방향 MV 예측자 뒤에 놓인다. 다른 실시예에서, MV_L0 및 MV_L1은 HMVP 버퍼로부터의 N개의 원래 MV 예측자가 리스트에 놓인 후에 놓이고, 여기서 N은 정수 값이다. N은 HMVP 버퍼로부터 병합 리스트에 놓일 수 있은 MV 후보의 개수일 수 있거나, N은 HMVP 버퍼로부터 병합 리스트로 복사가 허용된 최대 횟수보다 작은 고정된 수일 수 있다. 일부 실시예에 따르면, HMVP 버퍼의 엔트리가 AMVP 모드에서 MV 예측자를 생성하는 데 사용되는 경우, HMVP 버퍼의 각각의 원래 양방향 예측자 각각에 대해, 전술한 바와 유사한 방법이 단방향 예측자 MV_L0 및 MV_L1을 생성하는 데 사용될 수 있다. 이 두 예측자는 리스트가 가득 차지 않으면, AMVP MV 예측 후보 리스트에서 추가적인 예측자로 사용될 수 있다.
일부 실시예에 따르면, 조건이 충족되는 경우에 HMVP 버퍼는 비워지거나 0 상태(zero state )로 리셋된다. 조건은, (i) 현재 CU가 CTU의 시작이거나, (ii) 현재 CU가 타일의 시작이거나, (iii) 현재 CU가 CTU 행의 시작이거나, 또는 (iv) 현재 CU는 슬라이스의 시작이다.
일부 실시예에 따르면, 모든 CTU 행의 제1 CTU가 완료된 후, 동일한 크기의 HMVP 버퍼를 갖는 HMVP_row 버퍼가 HMVP 버퍼의 엔트리를 저장하는 데 사용된다. 따라서, 새로운 CTU 행의 시작에서, HMVP 버퍼는 HMVP_row 버퍼의 정보로 채워질 수 있다. CTU 행의 끝에서 HMVP 버퍼를 리셋하고, HMVP_row 버퍼의 내용을 HMVP 버퍼에 복사함으로써, 디코딩되는 제1 CTU의 블록은 제1 CTU 바로 위의 CTU로부터의 정보로 디코딩될 수 있다.
일부 실시예에서, 화상 내의 각각의 타일에 대해, HMVP_row 버퍼는 각각의 타일 행의 제1 CTU가 완료된 후에 HMVP 정보를 저장하는 데 사용된다. 따라서, 새로운 타일 행의 제1 CTU에 대해, HMVP 버퍼는 HMVP_row 버퍼로부터의 정보를 사용하여 채워질 수 있다. 일부 실시예에서, HMVP_row 버퍼는 타일 또는 슬라이스의 제1 CTU 행의 시작에서 제로 상태로 개시된다.
도 11은 CTUs CTU_00∼CTU_23으로 분할된 예시적인 화상(1100)를 나타낸다. CTUs CTU_00∼CTU_03은 첫 번째(제1) CTU 행, CTU_Row_ [0]에 있다. CTUs CTU_10∼CTU_13은 두 번째(제2) CTU 행, CTU_Row_ [1]에 있다. CTUs CTU_20∼CTU_23은 세 번째(제3) CTU_row에 있다. 화상(1100) 내의 각각의 CTU는 복수의 블록으로 더 분할될 수 있다. 블록은 CUs 또는 코딩 블록(coding blocks, CBs)일 수 있다.
일부 실시예에서, 화상(1100)의 제1 CTU(예: CTU_00)의 제1 블록이 디코딩되기 전에, HMVP 버퍼는 초기 값으로 로딩된다. 초기 값은 인코더 또는 디코더의 메모리에 저장될 수 있다. 다른 예에서, HMVP 버퍼는 제로 상태로 초기화될 수 있다(예: 버퍼에 유효한 엔트리가 없음). 또한, HMVP_row 버퍼는 화상(1100)의 첫 번째 CTU(예: CTU_00)의 첫 번째 블록이 인코딩되거나 디코딩되기 전에 제로 상태로 초기화될 수 있다. CTU_00의 마지막 블록(예: CTU_Row_ [0]의 제1 CTU)이 인코딩되거나 디코딩될 때, HMVP 버퍼의 내용은 HMVP_row 버퍼에 복사된다. CTU_03의 마지막 블록(예: CTU_Row_ [0]의 마지막 CTU)이 인코딩되거나 디코딩될 때, 그리고 CTU_10의 첫 번째 블록(예: CTU_Row_ [1]의 제1 CTU)이 인코딩되거나 디코딩되기 전에, HMVP 버퍼는 비워지고, HMVP_row 버퍼의 내용은 HMVP 버퍼에 복사된다. 따라서, HMVP 버퍼를 리셋하고 HMVP_row 버퍼의 내용을 HMVP 버퍼에 복사함으로써, CTU_10 내의 블록의 인코딩 또는 디코딩은 CTU_00(예: CTU_10 위의 블록)으로부터의 정보로 수행될 수 있으며, 이는 CTU_10의 인코딩 또는 디코딩에 대해 CTU_03으로부터의 정보보다 관련성이 더 높을 수 있다.
HMVP 버퍼의 내용을 HMVP_row로 복사하는 유사한 프로세스는 CTU_10 및 CTU_20의 마지막 블록이 인코딩되거나 디코딩된 후에 수행될 수 있다. 또한, HMVP 버퍼를 클리어한 내용을 복사하고 HMMP 버퍼에 HMVP_row 버퍼의 내용을 복사하는 유사한 프로세스는 CTU_13의 마지막 블록이 인코딩 또는 디코딩된 후에 수행될 수 있다.
도 12는 두 개의 타일 Tile_1 및 Tile_2로 분할된 화상(1100)의 일례를 도시한다. 일부 실시예에서, Tile_1의 제1 CTU 내의 제1 블록(예: CTU_00)이 인코딩되거나 디코딩되기 전에, HMVP 버퍼는 초기 값으로 로딩된다. 초기 값은 인코더 또는 디코더의 메모리에 저장될 수 있다. HMVP 버퍼는 또한 제로 상태로 초기화될 수 있다. 또한, HMVP_row 버퍼는 화상(1100)의 첫 번째 CTU(예: CTU_00)에서 제1 블록이 인코딩되거나 디코딩되기 전에 제로 상태로 초기화될 수 있다. CTU_00의 마지막 블록(예: Tile_1의 CTU_Row_ [0] 내의 제1 CTU)이 인코딩되거나 디코딩될 때, HMVP 버퍼의 내용은 HMVP_row 버퍼에 복사된다. CTU_01의 마지막 블록이 인코딩되거나 디코 될 때(예: Tile_1의 CTU_Row_ [0] 내의 마지막 CTU), 그리고 CTU_10의 첫 번째 블록이 인코딩되거나 디코딩되기 전에(예: Tile_1의 CTU_Row_ [1] 내의 제1 CTU), HMVP 버퍼가 비워지고 HMVP_row 버퍼의 내용이 HMVP 버퍼에 복사된다. 따라서, HMVP 버퍼를 리셋하고 HMVP_row 버퍼의 내용을 HMVP 버퍼에 복사함으로써, CTU_10 내의 블록의 인코딩 또는 디코딩은 CTU_00으로부터의 정보로 수행될 수 있으며, 이는 CTU_10의 디코딩 인코딩 또는 디코딩에 대해 CTU_00의 정보보다 더 관련성이 높을 수 있다.
Tile_2는 Tile_1과 병렬로 인코딩 또는 디코딩될 수 있고, 개별적인 HMVP 및 HMVP_row 버퍼를 가지는데, 이는 Tile_1에 대해 설명된 것과 동일한 방식으로 각각 초기화될 수 있다. CTU_02의 마지막 블록(예: Tile_2의 CTU_Row_ [0] 내의 제1 CTU)이 인코딩되거나 디코딩될 때, HMVP 버퍼의 내용이 HMVP_row 버퍼에 복사된다. CTU_03의 마지막 블록(예: Tile_2의 CTU_Row_ [0] 내의 마지막 CTU)이 인코딩되거나 디코딩될 때, 그리고 CTU_12의 첫 번째 블록(예: Tile_2의 CTU_Row_ [1] 내의 제1 CTU)이 인코딩되거나 디코딩되기 전에, HMVP 버퍼가 비워지고 HMVP_row 버퍼의 내용이 HMVP 버퍼에 복사된다. 따라서, HMVP 버퍼를 리셋하고 HMVP_row 버퍼의 내용을 HMVP 버퍼에 복사함으로써, CTU_12 내의 블록의 인코딩 또는 디코딩은 CTU_02로부터의 정보로 수행될 수 있으며, 이는 CTU_12의 디코딩에 대해 CTU_03으로부터의 정보보다 더 관련성이 높을 수 있다.
도 13은 인코더(503)와 같은 인코더, 또는 디코더(610)와 같은 디코더에 의해 수행되는 프로세스의 실시예를 도시한다. 프로세스는 현재 화상이 비디오 비트스트림으로부터 획득되는 단계 S1300에서 시작할 수 있다. 예를 들어, 화상(1100)(도 11)은 획득된 화상일 수 있다. 프로세스는 현재 블록이 HMVP 버퍼로부터의 하나 이상의 엔트리를 사용하여 인코딩/디코딩되는 단계 S1302로 진행한다. 예를 들어, 화상 1100을 참조하면, CTU_00의 첫 번째 블록이 인코딩/디코딩되면, HMVP 버퍼는 초기 상태로 초기화될 수 있고, 첫 번째 블록은 HMVP 버퍼가 초기화된 이후의 HMVP 버퍼로부터의 하나 이상의 엔트리로 인코딩/디코딩될 수 있다. 프로세스는 단계 S1304로 진행하여 HMVP 버퍼가 인코딩/디코딩된 현재 블록의 움직임 벡터 정보로 갱신된다.
프로세스는 단계 S1306으로 진행하여 현재 인코딩/디코딩된 블록이 CTU 행의 끝에 있는지를 판정한다. 예를 들어, 화상 1100을 참조하면, 인코딩/디코딩된 현재 블록이 CTU_03의 마지막 블록이면, 인코딩/디코딩될 다음 블록은 다음 행에 있는 CTU_10의 첫 번째 블록이다. 현재의 인코딩/디코딩된 블록이 CTU 행의 끝에 있으면, 프로세스는 단계 S1308로 진행하여 HMVP 버퍼가 리셋되고(예: 비워짐), HMVP_row 버퍼의 내용이 다음 블록이 인코딩/디코딩되기 전에 HMVP 버퍼에 복사된다. 프로세스는 단계 S1308에서 단계 S1314로 진행하는데, 이에 대해서는 아래에 더 상세히 설명된다.
현재 인코딩/디코딩된 블록이 CTU 행의 끝이 아니면, 프로세스는 단계 S1310으로 진행하여 현재 인코딩/디코딩된 블록이 CTU 행에서 제1 CTU의 마지막 블록인지를 판정한다. 현재의 인코딩/디코딩된 블록이 CTU 행에서 제1 CTU의 마지막 블록이면, 프로세스는 단계 S1312로 진행하여 HMVP 버퍼의 내용이 HVMP_row 버퍼에 복사된다. 예를 들어, 화상 1100을 참조하면, 현재 인코딩/디코딩된 블록이 CTU_00의 마지막 블록이면, CTU_01의 첫 번째 블록이 인코딩/디코딩되기 전에 HVMP 버퍼의 내용이 HMVP_row 버퍼의 내용으로 복사된다. 프로세스는 단계 S1312에서 단계 S1314로 진행되는데, 이에 대해서는 아래에 더 상세히 설명된다.
현재 인코딩/디코딩된 블록이 CTU 행에서 제1 CTU의 마지막 블록이 아니면, 프로세스는 단계 S1314로 진행하여 현재 인코딩/디코딩된 블록이 획득된 화상의 마지막 블록인지를 판정한다. 현재의 인코딩/디코딩된 블록이 획득된 화상의 마지막 블록이면, 도 3의 프로세스는 종료된다. 예를 들어, 현재 인코딩/디코딩된 블록이 CTU_23의 마지막 블록이면, 도 13의 프로세스는 완료된다. 현재의 인코딩/디코딩된 블록이 획득된 화상의 마지막 블록이 아니면, 프로세스는 단계 S1314에서 단계 S1302로 복귀한다.
전술한 기법 및 프로세스는 컴퓨터로 판독 가능 명령어를 사용하여 컴퓨터 소프트웨어로서 구현될 수 있고 하나 이상의 컴퓨터로 판독 가능한 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 14는 개시된 주제의 특정 실시예를 구현하기에 적합한 컴퓨터 시스템(1400)을 도시한다.
컴퓨터 소프트웨어는 임의의 적합한 기계 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있으며, 이는 어셈블링, 컴파일, 링크 또는 유사한 메커니즘을 거쳐, 직접, 또는 해석, 마이크로 코드 실행(micro-code execution) 등을 통해, 하나 이상의 컴퓨터 중앙 처리 장치(central processing units, CPU), 그래픽 처리 장치(Graphics Processing Units, GPUs) 등에 의해 실행될 수 있는 명령어를 생성할 수 있다.
명령어는 예를 들어 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰, 게임 기기, 사물 인터넷 기기 등을 포함한, 다양한 유형의 컴퓨터 또는 그 구성요소에서 실행될 수 있다.
도 14에 도시된 컴퓨터 시스템(1400)의 구성요소는 본질적으로 예시적인 것이며 본 개시의 실시예를 구현하는 컴퓨터 소프트웨어의 사용 범위 또는 기능에 관해 어떠한 제한을 시사하는 것을 의도하는 것은 아니다.
구성요소의 구성이 컴퓨터 시스템(1400)의 예시적인 실시예에 예시된 구성요소 중 어느 하나 또는 조합과 관련된 어떠한 의존성 또는 요건을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(1400)은 특정한 인간 인터페이스(human interface) 입력 기기기를 포함할 수 있다. 이러한 인간 인터페이스 입력 기기는 예를 들어, 촉각 입력(예: 키 스트로크(keystroke), 스와이프(swipe), 데이터 글러브 이동(data glove movement)), 오디오 입력(예: 음성, 박수), 시각 입력(예: 제스처), 후각 입력(미도시)을 통한 하나 이상의 인간 사용자에 의한 입력에 응답할 수 있다. 인간 인터페이스 기기는, 오디오(예: 음성, 음악, 주변 소리), 이미지(예: 스캔된 이미지, 스틸 이미지 카메라도 찍은 사진 이미지), 비디오(예: 이차원 비디오, 입체 비디오(stereoscopic video)를 포함하는 삼차원 비디오)와 같은, 인간에 의한 의식적 입력에 반드시 직접적으로 관계하지는 않는 특정 미디어를 캡처하는 데에도 사용할 수 있다.
입력 인간 인터페이스 기기는 키보드(1401), 마우스(1402), 트랙 패드(1403), 터치 스크린(1410), 데이터 글러브(도시되지 않음) 조이스틱(1405), 마이크로폰(1406), 스캐너(1407), 카메라(1408) 중 하나 이상(각각 하나만 도시됨)을 포함할 수 있다.
컴퓨터 시스템(1400)은 또한 특정한 인간 인터페이스 출력 기기를 포함할 수 있다. 이러한 인간 인터페이스 출력 기기는 예를 들어 촉각 출력, 사운드, 빛, 그리고 냄새/맛을 통해, 하나 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 인간 인터페이스 출력 기기는 촉각 출력 기기(예: 터치 스크린(1410)에 의한 촉각 피드백, 데이터 글러브(도시되지 않음) 또는 조이스틱(1405))를 포함할 수 있지만, 입력 기기로서 기능하지 않는 촉각 피드백 기기가 있을 수 있다), 오디오 출력 기기(예: 스피커(1409), 헤드폰(미도시)), 시각적 출력 기기(예: CRT 스크린, LCD 스크린, 플라즈마 스크린, OLED 스크린을 포함하는 화면(1410), 각각은 터치 스크린 입력 능력을 갖거나 갖지 않고, 각각은 촉각 피드백 능력을 갖거나 갖지 않음 - 그 중 일부는 이차원 시각 출력 또는 입체 출력(stereographic output)과 같은 수단을 통한 삼차원 이상의 출력을 할 수 있음; 가상 현실 안경(미도시), 홀로그램 디스플레이 및 스모크 탱크(smoke tank)(미도시)), 그리고 프린터(미도시)를 포함할 수 있다.
컴퓨터 시스템(1400)은 또한 인간이 액세스할 수 있는 저장 기기와, CD/DVD 등의 매체(1421)를 구비한 CD/DVD ROM/RW(1420)를 포함하는 광학 매체(1421), 썸 드라이브(thumb-drive)(1422), 착탈식 하드 드라이브 또는 솔리드 스테이트 드라이브(1423), 테이프 및 플로피 디스크(미도시)와 같은 레거시 자기 매체, 보안 동글(security dongle)(미도시)과 같은 특수 ROM/ASIC/PLD 기반 기기 등을 포함하는 그 연관 매체를 포함할 수 있다.
당업자는 또한 본 개시된 주제와 관련하여 사용되는 "컴퓨터로 판독 가능한 매체"라는 용어가 송신 매체, 반송파(carrier wave) 또는 다른 일시적인 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(1400)은 또한 하나 이상의 통신 네트워크에 대한 인터페이스를 포함할 수 있다. 네트워크는 예를 들어 무선, 유선, 광 네트워크일 수 있다. 네트워크는 또한 근거리(local), 광역, 대도시, 차량 및 산업, 실시간, 지연 허용 네트워크 등일 수 있다. 네트워크의 예로는 이더넷과 같은 근거리 통신망(local area network, LAN), 무선 LAN, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV 및 지상파 방송 TV, CANBus를 포함하는 차량 및 산업용 등을 포함하는 TV 유선 또는 무선 광역 디지털 네트워크를 포함한다. 특정 네트워크는 일반적으로 특정 범용 데이터 포트 또는 주변 버스(1449)(예: 컴퓨터 시스템(1400)의 USB 포트)에 장착되는 외부 네트워크 인터페이스 어댑터가 필요하고; 다른 것들은 일반적으로 아래에 설명된 시스템 버스(예: PC 컴퓨터 시스템에의 이더넷 인터페이스 또는 스마트폰 컴퓨터 시스템에의 셀룰러 네트워크 인터페이스)에 장착하여 컴퓨터 시스템(1400)의 코어에 통합된다. 이러한 네트워크 중 하나를 사용하여 컴퓨터 시스템(1400)은 다른 엔티티와 통신할 수 있다. 이러한 통신은 단방향, 수신 전용(예: 브로드캐스트 TV), 단방향 전송 전용(예: 특정 CANbus 기기에 대한 CANbus) 또는 근거리 또는 광역을 사용하는 다른 컴퓨터 시스템에 대한 양방향 통신일 수 있다. 특정 프로토콜 및 프로토콜 스택이 전술한 각각의 그러한 네트워크 및 네트워크 인터페이스에서 사용될 수 있다.
전술한 인간 인터페이스 기기, 인간이 액세스 가능한 저장 기기 및 네트워크 인터페이스는 컴퓨터 시스템(1400)의 코어(1440)에 장착될 수 있다.
코어(1440)는 하나 이상의 중앙 처리 유닛(CPU)(1441), 그래픽 처리 유닛(GPU)(1442), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Area, FPGA) 형태의 특화된 프로그램 가능한 처리 유닛(1443), 특정 작업을 위한 하드웨어 가속기(1444) 등을 포함할 수 있다. 이러한 기기는 시스템 버스(1448)를 통해 판독 전용 메모리(Read-only memory, ROM)(1445), 랜덤 액세스 메모리(1446), 사용자가 액세스할 수 없는 내부 하드 드라이브, SSD 등과 같은 내부 대용량 저장장치(1447)와 함께 연결될 수 있다. 일부 컴퓨터 시스템에서, 시스템 버스(1448)는 추가 CPUs, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리 플러그 형태로 액세스될 수 있다. 주변 기기는 코어의 시스템 버스(1448)에 직접 장착될 수 있거나 주변 기기 버스(1449)를 통해 장착될 수 있다. 주변 기기 버스의 아키텍처로는 PCI, USB 등을 포함한다.
CPUs(1441), GPUs(1442), FPGAs(1443) 및 가속기(1444)는, 조합하여 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령어를 실행할 수 있다. 이 컴퓨터 코드는 ROM(1445) 또는 RAM(1446)에 저장될 수 있다. 과도 데이터(transitional data) 또한 RAM(1446)에 저장될 수 있는 반면, 영구 데이터는 예를 들어 내부 대용량 저장 장치(1447)에 저장될 수 있다. 하나 이상의 CPU(1441), GPU(1442), 대용량 저장 장치(1447), ROM(1445) RAM(1446) 등과 밀접하게 관련될 수 있는 캐시 메모리의 상요을 통해 임의의 메모리 기기에 대한 빠른 저장 및 검색이 가능하다.
컴퓨터로 판독 가능한 매체는 다양한 컴퓨터로 구현되는 동작(computer-implemented operation)을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 이 매체 및 컴퓨터 코드는 본 개시의 목적을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 입수 가능한 것일 수 있다.
한정이 아닌 예로서, 아키텍처(1400), 및 구체적으로 코어(1440)를 갖는 컴퓨터 시스템은 프로세서(들)(CPUs, GPUs, FPGAs, 가속기 등을 포함함)의 결과로서 기능을 제공할 수 있다. 등)가 하나 이상의 유형의, 컴퓨터로 판독 가능한 매체에 구현된 소프트웨어를 실행한 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터로 판독 가능한 매체는 위에서 소개한 바와 같은, 사용자가 액세스할 수 있는 대용량 저장 장치와 연관될 수 있는 매체 일뿐만 아니라, 코어 내부의 대용량 저장 장치(1447) 또는 ROM과 같은 비일시적 성질의 코어(1440)의 특정 저장 장치일 수 있다(1445). 본 개시의 다양한 실시예를 구현하는 소프트웨어는 이러한 기기에 저장되고 코어(1440)에 의해 실행될 수 있다. 컴퓨터로 판독 가능한 매체는 특정 요구에 따라, 하나 이상의 메모리 기기 또는 칩을 포함할 수 있다. 소프트웨어는 코어(1440) 및 구체적으로 그 속의 프로세서(CPU, GPU, FPGA 등을 포함함)로 하여금, 소프트웨어에 의해 정의된 프로세스에 따라 RAM(1446)에 저장된 데이터 구조를 정의하는 것 및 그러한 데이터 구조를 수정하는 것을 포함한, 본 명세서에 기재된 특정 프로세스 또는 특정 프로세스의 특정 부분을 실행하도록 할 수 있다. 추가로 또는 대안으로서, 컴퓨터 시스템은 본 명세서에 기재된 특정 프로세스 또는 특정 프로세스의 특정 부분을 실행하도록 소프트웨어 대신에 또는 소프트웨어와 함께 동작할 수 있는, 하드웨어에 내장(hardwired)되거나 회로(예: 가속기(1444))에 달리 구현된 로직의 결과로서 기능을 제공할 수 있다. 소프트웨어에 대한 참조는, 적절한 경우 로직을 포함할 수 있으며 그 반대도 가능하다.
컴퓨터로 판독 가능한 매체에 대한 참조는 실행을 위한 소프트웨어를 저장하는 회로(예: 집적 회로(integrated circuit, IC)), 실행을 위한 로직을 구현하는 회로, 또는 이 둘 다를 포함할 수 있다. 본 개시는 하드웨어와 소프트웨어의 임의의 적합한 조합을 포함한다.
부록 A: 약어
MV: Motion Vector(움직임 벡터)
HEVC: High Efficiency Video Coding(고효율 비디오 코딩)
SEI: Supplementary Enhancement Information(보충 향상 정보)
VUI: Video Usability Information(비디오 유용성 정보)
GOPs: Groups of Pictures(화상의 그룹)
TUs: Transform Units(변환 유닛)
PUs: Prediction Units(예측 유닛)
CTUs: Coding Tree Units(코딩 트리 유닛)
CTBs: Coding Tree Blocks(코딩 트리 블록)
PBs: Prediction Blocks(예측 블록)
HRD: Hypothetical Reference Decoder가상 참조 디코더
SNR: Signal Noise Ratio신호 노이즈 비율
CPUs: Central Processing Units (중앙 처리 유닛)
GPUs: Graphics Processing Units(그래픽 처리 유닛)
LCD: Liquid-Crystal Display(액정 디스플레이)
OLED: Organic Light-Emitting Diode(유기 발광 다이오드)
CD: Compact Disc(컴팩트 디스크)
DVD : Digital Video Disc(디지털 비디오 디스크)
ROM: Read-Only Memory(판독 전용 메모리)
RAM: 랜덤 액세스 메모리
ASIC: Application-Specific Integrated Circuit(주문형 반도체)
PLD: Programmable Logic Device(프로그래머블 로직 디바이스)
LAN: Local Area Network(근거리 통신망)
GSM: Global System for Mobile communications(이동 통신을위한 글로벌 시스템)
LTE: Long-Term Evolution(롱텀 에볼루션)
CANBus: Controller Area Network Bus(제어기 영역 네트워크 버스)
USB: Universal Serial Bus(범용 직렬 버스)
PCI: Peripheral Component Interconnect(주변 구성요소 상호 연결)
FPGA: Field Programmable Gate Areas(필드 프로그래머블 게이트 영역)
SSD: solid-state drive(솔리드 스테이트 드라이브)
IC: Integrated Circuit(집적 회로)
CU: Coding Unit(코딩 유닛)
본 개시에서는 몇몇 예시적인 실시예를 설명하였지만, 본 개시의 범위 내에 속하는 변경, 치한 및 다양한 대체 등가물이 존재한다. 따라서, 당업자는 여기에 명시적으로 도시되거나 설명되지 않았지만 본 개시의 원리를 구현하고 따라서 본 개시의 사상 및 범위 내에 있는 수많은 시스템 및 방법을 고안할 수 있다는 것이 이해될 것이다.
상기 개시는 또한 아래에 열거된 실시예를 포함한다:
(1) 디코더를 위한 비디오 디코딩 방법으로서, 상기 비디오 디코딩 방법은, 코딩된 비디오 비트스트림으로부터 현재 화상(picture)을 획득하는 단계 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -; 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(history motion vector, HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계; 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계; 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계; 및 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 포함한다.
(2) 특징 (1)에 따른 방법은, 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하는 단계; 및 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하는 단계를 더 포함한다.
(3) 특징 (2)에 따른 방법은, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하는 단계를 더 포함한다.
(4) 특징 (1) 내지 (3) 중 어느 하나에 따른 방법은, 상기 HMVP 버퍼는 선입선출(first-in-first-out, FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함한다.
(5) 특징 (1) 내지 (4) 중 어느 하나에 따른 방법에서, 상기 유닛은 코딩 트리 유닛(coding tree unit, CTU)이다.
(6) 특징 (2) 내지 (4) 중 어느 하나에 따른 방법에서, 상기 유닛은 타일(tile)이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩된다.
(7) 처리 회로를 포함하는, 비디오 디코딩을 위한 비디오 디코더로서, 상기 처리 회로는, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하고 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -, 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하고, 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하고, 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하고, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하도록 구성된다.
(8) 특징 (7)에 따른 비디오 디코더에서, 상기 처리 회로는 추가로, 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하고, 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하도록 구성된다.
(9) 특징 (7)에 따른 비디오 디코더에서, 상기 처리 회로는 추가로,
상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하도록 구성된다.
(10) 특징 (7) 내지 (9) 중 어느 하나에 따른 비디오 디코더에서, 상기 HMVP 버퍼는 선입선출(FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함한다.
(11) 특징 (7) 내지 (10) 중 어느 하나에 따른 비디오 디코더에서, 상기 유닛은 코딩 트리 유닛(CTU)이다.
(12) 특징 (8) 내지 (11) 중 어느 하나에 따른 비디오 디코더에서, 상기 유닛은 타일이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩된다.
(13) 명령어가 저장된, 컴퓨터로 판독 가능한 비일시적인 저장 매체로서, 상기 명령어는 비디오 디코더의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 코딩된 비디오 비트스트림으로부터 현재 화상을 획득하는 단계 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -; 상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(history motion vector, HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계; 디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계; 상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계; 및 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 포함하는 방법을 실행하게 한다.
(14) 특징 (13)에 따른 컴퓨터로 판독 가능한 비일시적인 저장 매체에서, 상기 방법은, 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하는 단계; 및 상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하는 단계를 더 포함한다.
(15) 특징 (14)에 따른 컴퓨터로 판독 가능한 비일시적인 저장 매체에서, 상기 방법은, 상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하는 단계를 더 포함한다.
(16) 특징 (13) 내지 (14) 중 어느 하나에 따른 컴퓨터로 판독 가능한 비일시적인 저장 매체에서, 상기 HMVP 버퍼는 선입선출(FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함한다.
(17) 특징 (13) 내지 (16) 중 어느 하나에 따른 컴퓨터로 판독 가능한 비일시적인 저장 매체에서, 상기 유닛은 코딩 트리 유닛(CTU)이다.
(18) 특징 (14) 내지 (17) 중 어느 하나에 따른 컴퓨터로 판독 가능한 비일시적인 저장 매체에서, 상기 유닛은 타일이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩된다.

Claims (18)

  1. 디코더를 위한 비디오 디코딩 방법으로서,
    코딩된 비디오 비트스트림으로부터 현재 화상(picture)을 획득하는 단계 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -;
    상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(history motion vector, HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계;
    디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계;
    상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계; 및
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계
    를 포함하는 비디오 디코딩 방법.
  2. 제1항에 있어서,
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하는 단계; 및
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하는 단계를 더 포함하는 비디오 디코딩 방법.
  3. 제2항에 있어서,
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하는 단계를 더 포함하는 비디오 디코딩 방법.
  4. 제1항에 있어서,
    상기 HMVP 버퍼는 선입선출(first-in-first-out, FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함하는, 비디오 디코딩 방법.
  5. 제1항에 있어서,
    상기 유닛은 코딩 트리 유닛(coding tree unit, CTU)인, 비디오 디코딩 방법.
  6. 제2항에 있어서,
    상기 유닛은 타일(tile)이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩되는, 비디오 디코딩 방법.
  7. 처리 회로를 포함하는, 비디오 디코딩을 위한 비디오 디코더로서,
    상기 처리 회로는,
    코딩된 비디오 비트스트림으로부터 현재 화상을 획득하고 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -,
    상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하고,
    디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하고,
    상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하고,
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하도록 구성되는,
    비디오 디코더.
  8. 제7항에 있어서,
    상기 처리 회로는 추가로,
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하고,
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하도록 구성되는, 비디오 디코더.
  9. 제8항에 있어서,
    상기 처리 회로는 추가로,
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하도록 구성되는, 비디오 디코더.
  10. 제7항에 있어서,
    상기 HMVP 버퍼는 선입선출(FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함하는, 비디오 디코더.
  11. 제7항에 있어서,
    상기 유닛은 코딩 트리 유닛(CTU)인, 비디오 디코더.
  12. 제8항에 있어서,
    상기 유닛은 타일이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩되는, 비디오 디코더.
  13. 명령어가 저장된, 컴퓨터로 판독 가능한 비일시적인 저장 매체로서,
    상기 명령어는 비디오 디코더의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    코딩된 비디오 비트스트림으로부터 현재 화상을 획득하는 단계 - 상기 현재 화상은 복수의 유닛으로 분할되고, 각각의 유닛은 복수의 블록으로 분할되며, 각각의 유닛의 복수의 블록은 그리드로서 배열됨 -;
    상기 복수의 유닛 중 하나에 대해, 이력 움직임 벡터(history motion vector, HMVP) 버퍼로부터의 엔트리를 사용하여 상기 복수의 블록 중 현재 블록을 디코딩하는 단계;
    디코딩된 현재 블록의 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 단계;
    상기 현재 블록이 상기 복수의 유닛 중 하나의 그리드에 포함된 행의 시작에 있는지를 판정하는 단계; 및
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 상기 HMVP 버퍼를 리셋하는 단계를 포함하는 방법을 실행하게 하는,
    컴퓨터로 판독 가능한 비일시적인 저장 매체.
  14. 제13항에 있어서,
    상기 방법은,
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록인지를 판정하는 단계; 및
    상기 현재 블록이 상기 행의 제1 유닛의 마지막 블록이라는 판정에 응답하여, 상기 HMVP 버퍼의 내용을 행 버퍼에 복사하는 단계를 더 포함하는, 컴퓨터로 판독 가능한 비일시적인 저장 매체.
  15. 제14항에 있어서,
    상기 방법은,
    상기 현재 블록이 상기 행의 시작이라는 판정에 응답하여, 그리고 상기 HMVP 버퍼의 각각의 엔트리가 리셋된 후에, 상기 행 버퍼의 내용을 상기 HMVP 버퍼에 복사하는 단계를 더 포함하는, 컴퓨터로 판독 가능한 비일시적인 저장 매체.
  16. 제13항에 있어서,
    상기 HMVP 버퍼는 선입선출(FIFO) 버퍼이고, 상기 움직임 벡터로 상기 HMVP 버퍼를 갱신하는 것은 상기 HMVP 버퍼의 마지막 엔트리에 상기 움직임 벡터를 저장하고 상기 HMVP 버퍼의 첫 번째 엔트리를 삭제하는 것을 포함하는, 컴퓨터로 판독 가능한 비일시적인 저장 매체.
  17. 제13항에 있어서,
    상기 유닛은 코딩 트리 유닛(CTU)인, 컴퓨터로 판독 가능한 비일시적인 저장 매체.
  18. 제14항에 있어서,
    상기 유닛은 타일이고, 상기 복수의 유닛 중 디코딩된 하나는 제1 타일이고, 상기 복수의 유닛 중 상기 제1 타일과 제2 타일은 병렬로 디코딩되는, 컴퓨터로 판독 가능한 비일시적인 저장 매체.
KR1020207026594A 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치 KR102523557B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237012775A KR102642527B1 (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862698559P 2018-07-16 2018-07-16
US62/698,559 2018-07-16
US16/203,364 US10491902B1 (en) 2018-07-16 2018-11-28 Method and apparatus for history-based motion vector prediction
US16/203,364 2018-11-28
PCT/US2019/040715 WO2020018297A1 (en) 2018-07-16 2019-07-05 Method and apparatus for history-based motion vector prediction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237012775A Division KR102642527B1 (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200118879A true KR20200118879A (ko) 2020-10-16
KR102523557B1 KR102523557B1 (ko) 2023-04-18

Family

ID=68617606

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020237012775A KR102642527B1 (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치
KR1020247006467A KR20240032166A (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치
KR1020207026594A KR102523557B1 (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020237012775A KR102642527B1 (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치
KR1020247006467A KR20240032166A (ko) 2018-07-16 2019-07-05 이력 기반 움직임 벡터 예측을 위한 방법 및 장치

Country Status (6)

Country Link
US (4) US10491902B1 (ko)
EP (1) EP3753251A4 (ko)
JP (3) JP7201700B2 (ko)
KR (3) KR102642527B1 (ko)
CN (2) CN116320445A (ko)
WO (1) WO2020018297A1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
EP3788782A1 (en) 2018-06-21 2021-03-10 Beijing Bytedance Network Technology Co. Ltd. Sub-block mv inheritance between color components
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
TWI731360B (zh) 2018-06-29 2021-06-21 大陸商北京字節跳動網絡技術有限公司 查找表的使用條件
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
TWI728390B (zh) 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
SG11202012293RA (en) 2018-06-29 2021-01-28 Beijing Bytedance Network Technology Co Ltd Update of look up table: fifo, constrained fifo
CN110662052B (zh) 2018-06-29 2022-07-08 北京字节跳动网络技术有限公司 更新查找表(lut)的条件
EP3791585A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Partial/full pruning when adding a hmvp candidate to merge/amvp
CN110662043B (zh) 2018-06-29 2021-12-21 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
WO2020008349A1 (en) 2018-07-02 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Merge index coding
US10743016B2 (en) * 2018-07-06 2020-08-11 Mediatek Inc. Inherited motion information for decoding a current coding unit in a video coding system
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
MX2023002949A (es) 2018-07-18 2023-11-07 Beijing Dajia Internet Information Tech Co Ltd Métodos y aparato de codificación de video que usa el campo técnico de predicción de vectores de movimiento basado en el historial.
US11019357B2 (en) * 2018-08-07 2021-05-25 Qualcomm Incorporated Motion vector predictor list generation
WO2020030187A1 (en) * 2018-08-10 2020-02-13 Huawei Technologies Co., Ltd. Video processing method, video processing apparatus, encoder, decoder, medium and computer program
US10958932B2 (en) 2018-09-12 2021-03-23 Qualcomm Incorporated Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks
WO2020053800A1 (en) 2018-09-12 2020-03-19 Beijing Bytedance Network Technology Co., Ltd. How many hmvp candidates to be checked
US11212550B2 (en) * 2018-09-21 2021-12-28 Qualcomm Incorporated History-based motion vector prediction for affine mode
EP3836545B1 (en) * 2018-09-22 2023-11-15 Lg Electronics Inc. Method for processing video signals using inter prediction
CN110944170B (zh) * 2018-09-24 2023-05-02 北京字节跳动网络技术有限公司 扩展Merge预测
ES2952457T3 (es) * 2018-10-02 2023-10-31 Lg Electronics Inc Método y aparato para construir un candidato de predicción en base a HMVP
CN117857785A (zh) 2018-10-04 2024-04-09 Lg电子株式会社 图像解码和编码方法、数据的发送方法及存储介质
CN116684587A (zh) * 2018-10-05 2023-09-01 Lg电子株式会社 图像解码、编码方法及针对图像的数据的发送方法
CN112840653B (zh) * 2018-10-06 2023-12-26 寰发股份有限公司 视频编解码中共享合并候选列表区域的方法和装置
SG11202103661XA (en) * 2018-10-10 2021-05-28 Huawei Tech Co Ltd Inter prediction method and apparatus
US20220014774A1 (en) * 2018-10-11 2022-01-13 Samsung Electronics Co., Ltd. Video encoding and decoding method using tiles and tile groups, and video encoding and decoding device using tiles and tile groups
EP3861723A4 (en) 2018-11-10 2022-04-20 Beijing Bytedance Network Technology Co., Ltd. ROUNDS IN PAIRS OF MEDIUM CANDIDATE BILLS
EP4236320A3 (en) * 2018-12-06 2023-10-11 LG Electronics Inc. Method and device for processing video signal on basis of inter prediction
JP7073501B2 (ja) * 2018-12-12 2022-05-23 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
CN115361549B (zh) * 2018-12-21 2024-04-09 华为技术有限公司 一种使用基于历史的运动矢量预测的编码器、解码器及相应方法
WO2020137814A1 (ja) * 2018-12-28 2020-07-02 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
WO2020133518A1 (zh) * 2018-12-29 2020-07-02 深圳市大疆创新科技有限公司 视频处理方法和设备
JP7275286B2 (ja) * 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
US11032560B2 (en) * 2019-01-17 2021-06-08 Tencent America LLC Method and apparatus for video coding without updating the HMVP table
US11166015B2 (en) 2019-03-06 2021-11-02 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
US11146808B2 (en) * 2019-06-27 2021-10-12 Tencent America LLC Method and apparatus for video coding
CN114762332A (zh) * 2019-09-19 2022-07-15 阿里巴巴集团控股有限公司 构建合并候选列表的方法
CN114747218A (zh) * 2019-12-06 2022-07-12 北京字节跳动网络技术有限公司 Hmvp表的更新
US20240080474A1 (en) * 2022-09-02 2024-03-07 Qualcomm Incorporated Block-level collocated motion field projection for video coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130045785A (ko) * 2011-10-26 2013-05-06 경희대학교 산학협력단 메모리 관리 방법 및 그를 이용한 복호화 장치
KR20160101040A (ko) * 2014-02-12 2016-08-24 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
US20180084284A1 (en) * 2016-09-22 2018-03-22 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8526495B2 (en) 2010-11-22 2013-09-03 Mediatek Singapore Pte. Ltd. Apparatus and method of constrained partition size for high efficiency video coding
US9049452B2 (en) 2011-01-25 2015-06-02 Mediatek Singapore Pte. Ltd. Method and apparatus for compressing coding unit in high efficiency video coding
KR101974952B1 (ko) 2011-10-06 2019-05-07 인텔렉추얼디스커버리 주식회사 두 개의 후보 인트라 예측 모드를 이용한 화면 내 예측 모드의 부/복호화 방법 및 이러한 방법을 사용하는 장치
CN110336999B (zh) * 2013-12-18 2021-09-03 寰发股份有限公司 利用调色板编码的编码视频数据区块的方法和装置
WO2015135509A1 (en) 2014-03-14 2015-09-17 Mediatek Inc. Method for palette table initialization and management
US10491902B1 (en) 2018-07-16 2019-11-26 Tencent America LLC Method and apparatus for history-based motion vector prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130045785A (ko) * 2011-10-26 2013-05-06 경희대학교 산학협력단 메모리 관리 방법 및 그를 이용한 복호화 장치
KR20160101040A (ko) * 2014-02-12 2016-08-24 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
US20180084284A1 (en) * 2016-09-22 2018-03-22 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data

Also Published As

Publication number Publication date
WO2020018297A1 (en) 2020-01-23
JP2023024649A (ja) 2023-02-16
EP3753251A4 (en) 2022-03-09
EP3753251A1 (en) 2020-12-23
US10491902B1 (en) 2019-11-26
JP7426465B2 (ja) 2024-02-01
KR102523557B1 (ko) 2023-04-18
KR102642527B1 (ko) 2024-02-28
CN116320445A (zh) 2023-06-23
JP7201700B2 (ja) 2023-01-10
US11589054B2 (en) 2023-02-21
JP2021516509A (ja) 2021-07-01
CN111903127B (zh) 2023-02-21
JP2024041998A (ja) 2024-03-27
KR20240032166A (ko) 2024-03-08
CN111903127A (zh) 2020-11-06
US20230145407A1 (en) 2023-05-11
US20200045319A1 (en) 2020-02-06
US10911760B2 (en) 2021-02-02
US20210120251A1 (en) 2021-04-22
KR20230054761A (ko) 2023-04-25

Similar Documents

Publication Publication Date Title
KR102523557B1 (ko) 이력 기반 움직임 벡터 예측을 위한 방법 및 장치
KR102497697B1 (ko) 병렬 처리로 히스토리 기반 모션 벡터 예측을 위한 방법 및 장치
KR20200124736A (ko) 비디오 코딩을 위한 방법 및 장치
KR102646839B1 (ko) 비디오 코딩을 위한 방법 및 장치
KR20210064371A (ko) 비디오 코딩을 위한 방법 및 장치
KR20210118186A (ko) 인트라 픽처 블록 보상을 위한 디코딩된 블록 벡터의 변환
KR102592192B1 (ko) 예측자 후보 리스트 크기를 시그널링하는 방법 및 장치
KR20200116524A (ko) 비디오 코딩을 위한 방법 및 장치
JP7238150B2 (ja) イントラピクチャブロック補償のための予測候補リストサイズシグナリングのための方法および装置
KR20200128582A (ko) 비디오 코딩을 위한 방법 및 장치
KR20210006430A (ko) 비디오 코딩에서 추가적인 중간 후보들을 갖는 병합 모드를 위한 방법 및 장치
KR20200125733A (ko) 비디오 코딩을 위한 방법 및 장치
KR102630200B1 (ko) 서브-블록 기반 시간 움직임 벡터 예측을 위한 방법 및 장치
KR20200128590A (ko) 비디오 코딩을 위한 방법 및 장치
KR20230003005A (ko) 템플릿 매칭 기반 인트라 예측
KR20210080525A (ko) 비디오 코딩을 위한 방법 및 장치
KR20220100980A (ko) 비디오 코딩을 위한 방법 및 장치
KR102683361B1 (ko) 인트라 화상 블록 보상에 대한 예측자 후보 리스트 크기 시그널링을 위한 방법 및 장치
KR20230125830A (ko) 아웃-오브-프레임 경계 조건에 대한 모션 벡터 한정

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant