KR102057350B1 - 비디오 코딩을 위한 모션 벡터 예측의 수행 - Google Patents

비디오 코딩을 위한 모션 벡터 예측의 수행 Download PDF

Info

Publication number
KR102057350B1
KR102057350B1 KR1020147020150A KR20147020150A KR102057350B1 KR 102057350 B1 KR102057350 B1 KR 102057350B1 KR 1020147020150 A KR1020147020150 A KR 1020147020150A KR 20147020150 A KR20147020150 A KR 20147020150A KR 102057350 B1 KR102057350 B1 KR 102057350B1
Authority
KR
South Korea
Prior art keywords
motion vectors
candidate motion
motion vector
video data
current block
Prior art date
Application number
KR1020147020150A
Other languages
English (en)
Other versions
KR20140110957A (ko
Inventor
지안레 천
무하메드 제이드 코반
예-쿠이 왕
샹린 왕
마르타 카르체비츠
웨이-정 치엔
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140110957A publication Critical patent/KR20140110957A/ko
Application granted granted Critical
Publication of KR102057350B1 publication Critical patent/KR102057350B1/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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

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

일반적으로, 비디오 코딩을 위한 모션 벡터 예측을 수행하는 기법들이 기재된다. 프로세서를 포함하는 비디오 코딩 디바이스가 그 기법들을 수행할 수도 있다. 프로세서는, 모션 벡터 예측 프로세스를 수행하고, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하기 위해 비디오 데이터의 현재의 블록에 대한 복수의 후보 모션 벡터들을 결정하도록 구성될 수도 있다. 프로세서는 그 후 스케일링된 후보 모션 벡터들을 수평 특정 범위 이내가 되도록 변경하도록 구성될 수도 있다.

Description

비디오 코딩을 위한 모션 벡터 예측의 수행{PERFORMING MOTION VECTOR PREDICTION FOR VIDEO CODING}
본 출원은 2011년 12월 22일자로 출원된 미국 가출원 제61/579,465호 및 2012년 1월 6일자로 출원된 미국 가출원 제61/584,096호의 이익을 주장하며, 이들 각각은 본원에 참고로서 완전히 포함된다.
본 개시물은 비디오 코딩에 관한 것으로, 보다 상세하게는, 비디오 코딩의 모션 보상 양태들에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 원격 화상회의 디바이스들 등을 포함하는, 매우 다양한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 보다 효율적으로 송수신하기 위해서, MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, AVC (Advanced Video Coding) 에 의해 정의된 표준들, 및 이러한 표준들의 확장판들에 기술된 기법들과 같은 비디오 압축 기법들을 구현한다. MPEG 와 ITU-T 사이의 공동연구의 성과인 "Joint Collaborative Team-Video Coding" (JCT-VC) 에 의해 개발 중인 HEVC (High Efficiency Video Coding) 표준과 같은, 새로운 비디오 코딩 표준들이 개발되고 있다. 차기 HEVC 표준은 때때로 H.265 로 지칭되지만, 이러한 명칭은 공식적으로 이루어지지 않았다.
일반적으로, 본 개시물은 모션 벡터 예측 프로세스에 이용되는 모션 벡터 후보들의 범위를 특정 범위 이내로 한정하는 기법들을 기술한다. 모션 벡터 예측은 통상 모션 추정이 수행되는 효율을 향상시키는 방식으로서 비디오 코딩에서 채용된다. 통상 "모션 추정"으로 지칭되는 것을 수행함으로써 현재의 블록과 매칭하는 참조 프레임들에서의 블록들에 대해 탐색을 수행하는 대신, 비디오 코더는 비디오 데이터의 현재의 블록에 공간적 또는 시간적 이웃들인 블록들로부터 이러한 후보 모션 벡터들을 결정할 수도 있고, 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 이 후보 모션 벡터들 중 하나를 선택할 수도 있다. 일부 경우, 이 후보 모션 벡터들은 스케일링 될 수도 있다. 스케일링된 후보 모션 벡터가 모션 벡터 예측자로서 선택될 때, 그 기법들은 비디오 코더가 이러한 스케일링된 후보 모션 벡터들의 수평 성분 및 수직 성분 중 하나 이상의 범위를 한정하는 것을 가능하게 할 수도 있다.
일 예에서, 비디오 데이터를 코딩하는 방법은, 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대해 복수의 후보 모션 벡터들을 결정하는 단계, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하는 단계, 및 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경하는 단계를 포함한다. 그 방법은, 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 선택하는 단계, 및 모션 벡터 예측자에 기초하여 비디오 데이터의 현재의 블록을 코딩하는 단계를 더 포함한다.
또 다른 예에서, 비디오 데이터를 코딩하기 위해 모션 벡터 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스는, 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대해 복수의 후보 모션 벡터들을 결정하고, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하고, 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경하고, 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 선택하며, 모션 벡터 예측자에 기초하여 비디오 데이터의 현재의 블록을 코딩하도록 구성된, 프로세서를 포함한다.
또 다른 예에서, 비디오 데이터를 코딩하기 위해 모션 벡터 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스는, 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대해 복수의 후보 모션 벡터들을 결정하는 수단, 및 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하는 수단을 포함한다. 그 비디오 코딩 디바이스는, 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경하는 수단, 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 선택하는 수단, 및 모션 벡터 예측자에 기초하여 비디오 데이터의 현재의 블록을 코딩하는 수단을 더 포함한다.
또 다른 예에서, 비일시적 컴퓨터 판독가능 저장 매체는 명령들이 저장되며, 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대해 복수의 후보 모션 벡터들을 결정하게 하고, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하게 하고, 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경하게 하고, 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 선택하게 하며, 그리고 모션 벡터 예측자에 기초하여 비디오 데이터의 현재의 블록을 코딩하게 한다.
하나 이상의 예들의 상세들은 첨부 도면들 및 하기의 상세한 설명에서 기술된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 모션 벡터 예측 프로세스를 수행할 때, 후보 모션 벡터들의 범위를 한정하기 위해 본 개시물에 기재된 기법들을 이용하도록 구성될 수도 있는 일 예의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록 다이어그램이다.
도 2 는 MVP들의 범위를 한정하기 위해 본 개시물에 기재된 기법들을 구현할 수도 있는 일 예의 비디오 인코더를 도시하는 블록 다이어그램이다.
도 3 은 본 개시물에 기재된 모션 벡터 예측 기법들을 구현하는 일 예의 비디오 디코더를 도시하는 블록 다이어그램이다.
도 4 는 본 개시물에 기재된 모션 벡터 예측 기법들의 양태들을 수행하는데 있어서 비디오 코더의 예시적인 동작을 도시하는 플로우 챠트이다.
도 5 는 본 개시물에 기재된 모션 벡터 예측 기법들의 다른 양태들을 구현하는데 있어서 비디오 코더의 예시적인 동작을 도시하는 플로우 챠트이다.
도 6 은 인접한 이웃하는 예측 유닛 (PU) 들 및 현재의 PU에 대해 시간적으로 동일 위치에 배치된 PU의 예시적인 배열을 도시하는 다이어그램이다.
본 개시물에 기재된 기법들의 실시형태들은 비디오 코더들 (비디오 인코더 및 비디오 디코더 중 하나 또는 양자로 지칭하기 위해 상세한 설명에서 이용되는 용어를 나타낼 수도 있음) 이 모션 벡터 예측 프로세스를 수행할 때, 선택된 후보 모션 벡터들의 범위를 특정 범위 이내가 되도록 한정하는 것을 가능하게 한다. 즉, 그 기법들은 비디오 코더가 비디오 데이터의 현재의 블록에 대한 후보 모션 벡터들의 리스트 (여기서, 이러한 후보 모션 벡터들은 "모션 벡터 예측자 후보들"로서 또한 지칭될 수도 있고, 리스트는 "후보 리스트"로서 지칭될 수도 있음) 를 결정하고, 이 리스트에서 후보 모션 벡터들 중 하나를 선택하여 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자 (MVP) 를 나타내는 것을 가능하게 한다. 그 후, 비디오 코더는 선택된 후보 모션 벡터가 스케일링되었는지를 결정할 수도 있다. 이러한 선택된 후보 모션 벡터가 스케일링되었다고 결정하면, 비디오 코더는 선택된 후보 모션 벡터의 수평 성분 및/또는 수직 성분이 수평 성분 값들의 특정 범위 및/또는 수직 성분 값들의 특정 범위 내에 각각 포함되는지를 결정할 수도 있다. 이러한 특정 범위들은 수평 변위 제한 및/또는 수직 변위 제한으로서 지칭될 수도 있는 것이 어떤 것인지를 효과적으로 나타낼 수도 있다. 수평 성분 값들의 특정 범위 및/또는 수직 성분 값들의 특정 범위 내에 포함되지 않는다면, 비디오 코더는 그 후 수평 및/또는 수직 성분 값들이 수평 성분 값들의 특정 범위 및/또는 수직 성분 값들의 특정 범위 내에 포함되도록 그 값들을 클리핑할 수도 있다.
이러한 방식으로, 기법들은 모션 벡터 예측자 후보 클리핑 프로세스로서 지칭될 수도 있는 후보 리스트 생성 프로세스를 변경할 수도 있다. 예를 들어, 비디오 코더는 후보 모션 벡터의 수직 성분을 클리핑하여 모션 벡터 범위의 한도 내에 계속 유지시킬 수도 있다. 유사하게, 비디오 코더는 후보 모션 벡터의 수평 성분을 클리핑하여 모션 벡터 범위의 한도 내에 계속 유지시킬 수도 있다. 부가적으로, 비디오 코더는 모션 벡터 범위 한도 내에 있도록 모션 벡터를 스케일링할 수도 있다. 이러한 기법들은 중간 후보 모션 벡터들의 일부 또는 전부에 적용될 수도 있고, 또는 현재의 비디오 블록에 대해 최종 선택된 모션 벡터 예측자에게만 적용될 수도 있다.
즉, 후보 리스트의 후보 모션 벡터가 모션 벡터 변위 제한을 너머 위치된 예측 블록을 가리킬 때, 비디오 코더 ("비디오 코딩 디바이스" 로서 또한 지칭될 수도 있음) 는 후보 모션 벡터의 값들을 클리핑할 수도 있고 그렇지 않으면 절단 (truncate) 할 수도 있다. 비디오 코더는 그 후 후보 리스트의 선택된 클리핑된 후보 모션 벡터에 기초하여 현재의 비디오 블록을 코딩할 수도 있다.
소정의 경우, 선택된 후보 모션 벡터의 수평 및/또는 수직 성분 값들의 범위를 제한하거나 그렇지 않으면 한정함으로써 (예컨대, 이러한 선택된 후보 모션 벡터가 스케일링될 때), 그 기법들은 수평 및/또는 수직 모션 벡터들이 그들의 부호 표시 정수값들을 표현하기 위해 소정 개수 초과의 비트들을 필요로 하지 않는 것을 보장할 수도 있다. 즉, 부호 표시 정수값들인 모션 벡터들의 성분 값들은, 통상 16 비트를 이용하여 표현된다. 이에 따라, 비디오 디코더들은 모션 벡터들을 정의할 때, 모션 벡터 성분 당 16 비트를 할당한다. 모션 벡터들을 16 비트를 초과하여 할당하면, 표현을 위해 16 비트 초과를 필요로 하는 그런 모션 벡터 성분들을 저장하기 위해 부가의 물리적 메모리가 제공되어야 하기 때문에, 하드웨어에서 구현될 때 비디오 디코더 설계를 상당히 복잡하게 할 수도 있다.
게다가, 소정의 경우, 특정 범위 이내가 되도록 모션 벡터 성분들의 범위를 한정함으로써, 그 기법들은 메모리 대역의 보다 효율적인 이용을 촉진시킬 수도 있다. 예시를 위해, 비디오 데이터의 프레임의 비디오 코딩이 일반적으로 라스터 스캔 순서 (raster-scan order) (통상, 상부에서 하부, 좌측에서 우측으로의 판독 순서에 있는 것) 에서 진행한다고 하면, 모션 벡터들의 수직 성분을 제한하는 것은, 모션 벡터가 온 칩 메모리로 로딩될 필요가 있는 참조 프레임의 비디오 데이터를 어느 정도 한정할 수도 있다. 더 작은 모션 벡터 수직 성분은, 라스터 스캔 비디오 코딩에서, 비디오 코더의 하드웨어 구현들에서 필요한 온 칩 메모리의 양을 한정하기에 효과적인 방식으로 고려될 수도 있다. 매우 큰 모션 벡터 수직 성분들은, 그 후 다중 블록들이 오프 칩과 온 칩 메모리 사이에서 참조 프레임의 상이한 부분들의 빈번한 스와핑을 위해 비디오 디코더를 필요로 하는 동일한 참조 프레임의 이러한 상이한 부분들을 각각 전부 참조하는 경우들을 초래할 수도 있다. 소정의 경우, 모션 벡터 성분들의 범위를 한정함으로써, 그 기법들은 메모리 대역의 보다 효율적인 이용을 촉진시킬 수도 있다.
도 1은 모션 벡터 예측 프로세스를 수행할 때 후보 모션 벡터들의 범위를 한정하기 위해 본 개시물에 기재된 기법들을 이용하도록 구성될 수도 있는 일 예의 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록 다이어그램이다. 도 1의 예에 나타낸 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의한 디코딩을 위해 인코딩된 비디오를 생성하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오를 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 송신할 수도 있고, 또는 인코딩된 비디오가 원하는 바에 따라서 목적지 디바이스 (14) 에 의해 액세스될 수 있도록, 인코딩된 비디오를 저장 매체 (34) 또는 파일 서버 (36) 상에 저장할 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 전화기 핸드셋들 (셀룰러 전화기들 또는 핸드셋들 및 소위 스마트폰들을 포함함), 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들 등을 포함하는, 매우 다양한 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
많은 경우, 이러한 디바이스들이 무선 통신을 위해 장착될 수도 있다. 그러므로, 통신 채널 (16) 은 무선 채널을 포함할 수도 있다. 대안으로, 통신 채널 (16) 은 유선 채널, 무선 채널과 유선 채널의 조합, 또는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 인코딩된 비디오 데이터의 송신에 적합한 임의의 다른 유형의 통신 채널 또는 통신 채널들의 조합을 포함할 수도 있다. 일부 예들에서, 통신 채널 (16) 은 근거리 네트워크 (LAN), 광역 네트워크 (WAN), 또는 인터넷과 같은 글로벌 네트워크와 같은, 패킷-기반 네트워크의 부분을 형성할 수도 있다. 따라서, 통신 채널 (16) 은 일반적으로 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 송신하기 위한, 유선 또는 무선 매체들의 임의의 적합한 조합을 포함하는, 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 컬렉션을 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
도 1의 예에서 추가로 나타낸 바와 같이, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) ("모뎀 (22)") 및 송신기 (24) 를 포함한다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡쳐 디바이스와 같은 소스를 포함할 수도 있다. 비디오 캡쳐 디바이스는, 일 예로, 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하는 비디오 공급 인터페이스, 및/또는 컴퓨터 그래픽스 데이터를 소스 비디오로서 생성하는 컴퓨터 그래픽스 시스템 중 하나 이상을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 하지만, 본 개시물에 기재된 기법들은 무선 애플리케이션들 또는 설정들에 한정되지 않으며, 비디오 인코딩 및/또는 디코딩 능력들을 포함하는 비-무선 디바이스들에 적용될 수도 있다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 단지 본 명세서에 기재된 기법들을 지원할 수 있는 코딩 디바이스들의 예들이다.
비디오 인코더 (20) 는 캡쳐된, 사전-캡쳐된, 또는 컴퓨터-생성된 비디오를 인코딩할 수도 있다. 일단 인코딩되면, 비디오 인코더 (20) 는 이 인코딩된 비디오를 모뎀 (22) 으로 출력할 수도 있다. 모뎀 (22) 은 그 후 인코딩된 비디오를 무선 통신 프로토콜과 같은 통신 표준에 따라 변조할 수도 있으며, 이에 따라서, 송신기 (24) 가 변조된 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 모뎀 (22) 은 여러 믹서들, 필터들, 증폭기들 또는 신호 변조용으로 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하는 데이터를 송신하도록 설계된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩되는 캡쳐된, 사전-캡쳐된, 또는 컴퓨터-생성된 비디오는 또한 추후 취출, 디코딩 및 소비를 위해 저장 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있다. 저장 매체 (34) 는 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들을 포함할 수도 있다. 목적지 디바이스 (14) 는 저장 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오에 액세스하고, 이 인코딩된 비디오를 디코딩하여 디코딩된 비디오를 생성하며, 이 디코딩된 비디오를 플레이백할 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장하고 그 인코딩된 비디오를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 유형의 서버일 수도 있다. 예시의 파일 서버들은 (예를 들어, 웹사이트용) 웹 서버, FTP 서버, 네트워크 부착된 스토리지 (network attached storage; NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 이를 목적지 디바이스로 송신할 수 있는 임의의 다른 유형의 디바이스를 포함한다. 파일 서버 (36) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 양자의 조합일 수도 있다. 목적지 디바이스 (14) 는 인터넷 접속을 포함하는, 임의의 표준 데이터 접속에 따라서 파일 서버 (36) 에 액세스할 수도 있다. 이 접속은 무선 채널 (예를 들어, Wi-Fi 접속 또는 무선 셀룰러 데이터 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 유선 채널과 무선 채널 양자의 조합, 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한 임의의 다른 유형의 통신 채널을 포함할 수도 있다.
목적지 디바이스 (14) 는, 도 1 의 예에서, 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해서 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조하여, 비디오 디코더 (30) 를 위한 복조된 비트스트림을 생성한다. 채널 (16) 을 통해서 통신된 정보는 연관된 인코딩된 비디오 데이터를 디코딩하는데 있어서 비디오 디코더 (30) 에 의한 이용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 구문 정보를 포함할 수도 있다. 이러한 구문에는 또한 저장 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오 데이터가 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 비디오 데이터를 인코딩 또는 디코딩할 수 있는 각각의 인코더-디코더 (코덱) 의 부분을 형성할 수도 있다.
목적지 디바이스 (14) 의 디스플레이 디바이스 (32) 는 뷰어 (viewer) 에 의한 소비를 위한 비디오 데이터를 제시할 수 있는 임의의 유형의 디스플레이를 나타낸다. 목적지 디바이스 (14) 와 통합된 것으로 도시되지만, 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하며, 또한 외부 디스플레이 디바이스와 인터페이스하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
본 개시물은 일반적으로 비디오 디코더 (30) 와 같은 또 다른 디바이스로 구문 정보를 "시그널링하는" 비디오 인코더 (20) 를 참조할 수도 있다. 하지만, 비디오 인코더 (20) 는 구문 엘리먼트들을 비디오 데이터의 여러 인코딩된 부분들과 연관시킴으로써 정보를 시그널링할 수도 있는 것으로 이해되어야 한다. 즉, 비디오 인코더 (20) 는 소정의 구문 엘리먼트들을 비디오 데이터의 여러 인코딩된 부분들의 헤더들에 저장함으로써 데이터를 "시그널링" 할 수도 있다. 일부의 경우, 이러한 구문 엘리먼트들은 비디오 디코더 (30) 에 의해 수신되고 디코딩되기 전에, 인코딩되고 저장될 수도 있다 (예를 들어, 저장 매체 (34) 또는 파일 서버 (36) 에 저장될 수도 있다). 따라서, 용어 "시그널링" 은, 인코딩 시에 구문 엘리먼트들을 매체에 저장할 때 일어날 수도 있는 바와 같이, 그러한 통신이 실시간 또는 거의 실시간으로 일어나든 어떤 기간에 걸쳐 일어나든 간에, 압축된 비디오 데이터를 디코딩하는데 이용되는 구문 또는 다른 데이터의 통신을 일반적으로 지칭할 수도 있으며, 그 후 그 구문 엘리먼트들은 이 매체에 저장되는 후의 임의의 시간에 디코딩 디바이스에 의해 취출될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 현재 개발 중인 HEVC (High Efficiency Video Coding) 표준과 같은 비디오 압축 표준에 따라 동작할 수도 있으며, HEVC 테스트 모델 (HM) 에 따를 수도 있다. 대안으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 MPEG-4, 파트 10, AVC (Advanced Video Coding) 로서 대안적으로 지칭되는 ITU-T H.264 표준, 또는 이러한 표준들의 확장판들과 같은 다른 사유 (proprietary) 또는 산업 표준들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정 코딩 표준에 한정되지 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263을 포함한다.
HM 은 비디오 데이터의 블록을 코딩 유닛 (CU) 으로 지칭한다. 일반적으로, CU 는 CU 가 H.264 의 매크로블록들과 연관된 사이즈 차이 (size distinction) 를 갖지 않는다는 것을 제외하면, H.264 에 따라 코딩된 매크로블록과 유사한 목적을 갖는다. 따라서, CU 는 서브-CU들로 분할될 수도 있다. 일반적으로, CU 에 대한 본 개시물에서의 언급들은 화상의 최대 코딩 유닛 (largest coding unit; LCU) 또는 LCU 의 서브-CU를 지칭할 수도 있다. 예를 들어, 비트스트림 내의 구문 데이터는 LCU 를 정의할 수도 있으며, 이 LCU 는 픽셀들의 개수의 관점에서 가장 큰 코딩 유닛이다. LCU 는 서브-CU들로 분할될 수도 있으며, 각각의 서브-CU 는 서브-CU들로 분할될 수도 있다. 비트스트림에 대한 구문 데이터는 LCU가 분할될 수도 있는 최대 횟수를 정의할 수도 있으며, 이는 최대 CU 깊이로 지칭된다. 따라서, 비트스트림은 또한 최소 코딩 유닛 (smallest coding unit; SCU) 을 정의할 수도 있다.
LCU 는 계층적 쿼드트리 데이터 구조와 연관될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하며, 여기서, 루트 노드는 LCU 에 대응한다. CU 가 4개의 서브-CU들로 분할되면, CU 에 대응하는 노드는 서브-CU들에 대응하는 4개의 노드들 각각에 대한 참조를 포함한다. 쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU에 대해 구문 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서 노드는 그 노드에 대응하는 CU 가 서브-CU들로 분할되는지 여부를 나타내는 분할 플래그 (split flag) 를 포함할 수도 있다. CU 에 대한 구문 엘리먼트들은 회귀적으로 정의될 수도 있으며, CU 가 서브-CU들로 분할되는지 여부에 의존할 수도 있다.
분할되지 않은 CU 는 하나 이상의 예측 유닛 (PU) 들을 포함할 수도 있다. 일반적으로, PU 는 대응하는 CU의 전부 또는 부분을 나타내며, PU 에 대한 참조 샘플을 취출하기 위한 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩될 때, PU 는 PU 에 대한 인트라-예측 모드를 기술하는 데이터를 포함할 수도 있다. 또 다른 예로서, PU 가 인터-모드 인코딩될 때, PU 는 PU 에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. 모션 벡터는 일반적으로 하나 이상의 참조 프레임들에서 동일 위치에 배치된 CU 를 식별하며, 용어 "참조 프레임" 은 시간적으로 PU 가 위치되는 프레임 전후에 발생하는 프레임을 지칭한다. PU(들)를 정의하는 CU 에 대한 데이터는 또한 예를 들어, 하나 이상의 PU들로의 CU 의 파티셔닝을 기술할 수도 있다. 모드들을 파티셔닝하는 것은 CU 가 코딩되지 않거나, 인트라-예측 모드 인코딩되거나, 또는 인터-예측 모드 인코딩되는지 여부에 따라 상이할 수도 있다.
모션 벡터를 정의하는 데이터는 예를 들어, 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터에 대한 해상도 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 프레임, 식별된 참조 프레임이 현재의 프레임 전후에 있는지 여부를 식별하는 예측 방향, 및/또는 모션 벡터에 대한 참조 리스트 (예를 들어, 리스트 0 또는 리스트 1) 를 기술할 수도 있다. 대안으로, 모션 벡터를 정의하는 데이터는 모션 벡터 예측자 (MVP) 로서 지칭되는 것의 관점에서 모션 벡터를 기술할 수도 있다. 모션 벡터 예측자는 이웃하는 PU 또는 시간적으로 동일 위치에 배치된 PU 의 모션 벡터를 포함할 수도 있다. 통상, 5개의 후보 모션 벡터들의 리스트는 (가장 큰 크기를 갖는 것들로부터 시작해서 가장 작은 크기를 갖는 것들로, 즉, 코딩될 현재의 PU 와 참조 PU 사이의 최대 또는 최소 변위로 후보 모션 벡터들을 리스팅하거나, 또는 로케이션, 즉 상부 블록들, 좌측 블록들, 모서리 (corner) 블록들, 시간 (temporal) 블록들에 기초하여 후보 모션 벡터들을 리스팅하는 것과 같이) 정의된 방식으로 형성되며, 여기서, 5개의 후보 모션 벡터들 중 4개는 4개의 이웃하는 PU들로부터 선택된 공간 모션 벡터들이고, 제 5 후보 모션 벡터는 참조 프레임에서 시간적으로 동일 위치에 배치된 PU 로부터 선택된 시간적으로 동일 위치에 배치된 모션 벡터이다.
통상 시간 후보 모션 벡터는 현재의 프레임 내의 현재의 부분의 것과 동일한 참조 프레임의 부분에서 동일 위치에 배치되지만, 이 기법들은 동일 위치에 배치된 시간 후보 모션 벡터들에 엄격히 한정되어서는 안된다. 대신, 이 기법들은 동일 위치에 배치되든 아니든 간에, 임의의 시간 후보 모션 벡터에 대해 구현될 수도 있다. 일부의 경우, 비디오 인코더는 현재의 프레임의 현재의 블록 또는 부분과 동일 위치에 배치되지 않은 시간 후보 모션 벡터를 식별하고 이 시간 후보 모션 벡터를 모션 벡터 예측 프로세스를 수행할 때 이용할 수도 있다. 일반적으로, 비디오 인코더는 동일 위치에 배치되지 않은 시간 후보 모션 벡터가 이용된다는 것을 시그널링할 수도 있거나, 또는, 일부 경우, 주어진 컨텍스트는 동일 위치에 배치되지 않은 시간 후보 모션 벡터가 이용된다는 것을 나타낼 수도 있다 (이 경우, 비디오 인코더는 동일 위치에 배치되지 않은 시간 후보 모션 벡터가 선택되었는지 선택되지 않았는지 여부를 시그널링하지 않을 수도 있다).
5 개의 후보 모션 벡터들을 형성한 후, 비디오 인코더 (20) 는 후보 모션 벡터들의 각각을 평가하여, 어느 것이 비디오를 인코딩하기 위해 선택된 주어진 레이트 및 왜곡 프로파일에 최상으로 매칭하는 최상의 레이트 및 왜곡 특성들을 제공하는지를 결정할 수도 있다. 비디오 인코더 (20) 는 5개의 후보 모션 벡터들의 각각에 대해 레이트-왜곡 최적화 (rate-distortion optimization; RDO) 프로시저를 수행하여, MVP 로서 최상의 RDO 결과들을 갖는 후보 모션 벡터들 중 하나를 선택할 수도 있다. 대안으로, 비디오 인코더 (20) 는 MVP 로서 현재의 PU 에 대해 결정된 모션 벡터에 최상으로 근사하는, 리스트에 저장된 5 개의 후보 모션 벡터들 중 하나를 선택할 수도 있다.
어쨌든, 비디오 인코더 (20) 는 5개의 후보 모션 벡터들의 리스트에서 후보 모션 벡터들 중 선택된 후보 모션 벡터를 식별하는 인덱스, 모션 벡터가 가리키는 하나 이상의 참조 프레임들 (종종, 리스트 형태) 및 그 예측이 단방향인지 또는 양방향인지를 식별하는 예측 방향을 포함하는 데이터를 이용하여 모션 벡터를 특정할 수도 있다. 대안으로, 모션 벡터를 정의하는 데이터는 참조 프레임 및 예측 방향을 특정하지 않으면서 5 개의 후보 모션 벡터들의 리스트에서 선택된 후보 모션 벡터의 인덱스만을 특정할 수도 있으며, 이는 후보 모션 벡터들 중 선택된 후보 모션 벡터가 현재의 PU 에 대해 완전히 이용될 것이라는 것을 비디오 디코더들에 시그널링한다.
하나 이상의 모션 벡터들을 정의하는 하나 이상의 PU들을 갖는 것에 부가하여, CU 는 하나 이상의 변환 유닛 (TU) 들을 포함할 수도 있다. PU 를 이용한 예측 이후, 비디오 인코더는 PU 에 대응하는 CU 의 부분에 대한 잔여 값을 계산할 수도 있으며, 여기서 이 잔여 값은 잔여 데이터로도 지칭될 수도 있다. 잔여 값은 변환되고, 양자화되고, 스캐닝될 수도 있다. TU 는 PU 의 사이즈에 반드시 한정될 필요는 없다. 따라서, TU들은 동일한 CU 에 대한 대응하는 PU들보다 더 크거나 또는 더 작을 수도 있다. 일부 예들에서, TU 의 최대 사이즈는 대응하는 CU 의 사이즈일 수도 있다. 본 개시물은 또한 용어 "블록" 을 이용하여 CU, PU, 및/또는 TU 중 임의의 하나 또는 조합을 지칭한다.
일반적으로, 인코딩된 비디오 데이터는 예측 데이터 및 잔여 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 인트라-예측 모드 또는 인터-예측 모드 동안 예측 데이터를 생성할 수도 있다. 인트라-예측은 일반적으로 동일한 화상의 이웃하는 이전에 코딩된 블록들에서의 참조 샘플들에 대하여 화상의 블록에서의 픽셀 값들을 예측하는 것을 수반한다. 인터-예측은 일반적으로 이전에 코딩된 화상의 데이터에 대하여 화상의 블록에서의 픽셀 값들을 예측하는 것을 수반한다.
인트라- 또는 인터-예측에 이어서, 비디오 인코더 (20) 는 블록에 대한 잔여 픽셀 값들을 계산할 수도 있다. 잔여 값들은 일반적으로 블록에 대한 예측된 픽셀 값 데이터와 블록의 트루 픽셀 값 데이터 사이의 차이들에 대응한다. 예를 들어, 잔여 값들은 코딩된 픽셀들과 예측 픽셀들 사이의 차이들을 나타내는 픽셀 차이 값들을 포함할 수도 있다. 일부 예들에서, 코딩된 픽셀들은 코딩될 픽셀들의 블록과 연관될 수도 있으며, 예측 픽셀들은 코딩된 블록을 예측하는데 이용되는 픽셀들의 하나 이상의 블록들과 연관될 수도 있다.
블록의 잔여 값을 추가로 압축하기 위해, 잔여 값은 가능한 한 많은 데이터 ("에너지" 로도 지칭됨) 를 가능한 한 적은 계수들로 압축시키는 변환 계수들의 세트로 변환될 수도 있다. 변환 기법들은 이산 코사인 변환 (DCT) 프로세스 또는 개념적으로 유사한 프로세스, 정수 변환들, 웨이블릿 변환들, 또는 다른 유형들의 변환들을 포함할 수도 있다. 이 변환은 픽셀들의 잔여 값들을 공간 도메인으로부터 변환 도메인으로 컨버팅한다. 변환 계수들은 보통은 원래 블록과 동일한 사이즈인 계수들의 2 차원 매트릭스에 대응한다. 즉, 딱 원래 블록에서의 픽셀들 만큼이나 많은 변환 계수들이 존재한다. 그러나, 이 변환으로 인해, 많은 변환 계수들이 0 과 동일한 값들을 가질 수도 있다.
비디오 인코더 (20) 는 그 후 비디오 데이터를 추가로 압축하기 위해서 변환 계수들을 양자화할 수도 있다. 양자화는 일반적으로 상대적으로 큰 범위 내의 값들을 상대적으로 작은 범위의 값들에 맵핑하는 것을 수반하며, 따라서, 양자화된 변환 계수들을 나타내는데 필요한 데이터의 양을 감소시킨다. 좀더 구체적으로는, 양자화는 양자화 파라미터 (quantization parameter; QP) 에 따라 적용될 수도 있으며, 이 양자화 파라미터는 LCU 레벨에서 정의될 수도 있다. 따라서, 동일한 레벨의 양자화가 LCU 내의 CU들의 상이한 PU들과 연관된 TU들의 모든 변환 계수들에 적용될 수도 있다. 그러나, QP 자체를 시그널링하는 대신, QP 의 변화 (즉, 델타 (delta)) 가 LCU 와 함께 시그널링될 수도 있다. 델타 QP 는 이전에 통신된 LCU 의 QP 와 같은 일부 참조 QP 에 관한, LCU 에 대한 양자화 파라미터의 변화를 정의한다.
양자화 이후, 비디오 인코더 (20) 는 변환 계수들을 스캐닝하여, 양자화된 변환 계수들을 포함하는 2차원 매트릭스로부터 1차원 벡터를 생성할 수도 있다. 비디오 인코더 (20) 는 그 후 데이터를 더욱더 압축하기 위해서 통계적 무손실 인코딩 (부적절한 명칭 "엔트로피 인코딩" 으로 통칭됨) 을 수행하여 결과의 어레이를 인코딩할 수도 있다. 일반적으로, 엔트로피 코딩은 양자화되는 변환 계수들 및/또는 다른 구문 정보의 시퀀스를 일괄 압축하는 하나 이상의 프로세스들을 포함한다. 예를 들어, 델타 QP들, 예측 벡터들, 코딩 모드들, 필터들, 오프셋들, 또는 다른 정보와 같은, 구문 엘리먼트들은 또한 엔트로피 코딩된 비트스트림에 포함될 수도 있다. 스캐닝된 계수들은 그 후, 임의의 구문 정보와 함께, 예컨대, 콘텐츠 적응적 가변 길이 코딩 (content adaptive variable length coding; CAVLC), 컨텍스트 적응적 2 진 산술 코딩 (context adaptive binary arithmetic coding; CABAC), 또는 임의의 다른 통계적 무손실 코딩 프로세스를 통해서 엔트로피 코딩된다.
위에서 언급한 바와 같이, PU들에 대한 모션 벡터들을 정의하는 데이터는 다수의 형태들을 취할 수도 있다. 비디오 인코더 (20) 는 모션 벡터 데이터를 압축하기 위해 모션 벡터들이 표현될 수 있는 상이한 방식들을 구현할 수도 있다. 비디오 인코더 (20) 는 정의된 방식으로 구성된 MVP들의 리스트에 저장된 바와 같은 후보 모션 벡터를 식별하는 인덱스로서 모션 벡터들을 표현하기 위해 "병합 모드" 로서 지칭되는 것을 구현할 수도 있다. 비디오 디코더 (30) 는, 이 병합 모드의 역 (inverse) 을 구현할 때에, 이 인덱스를 수신하고, 정의된 방식에 따라 5개의 후보 모션 벡터들의 리스트를 재구성하고, 디코딩될 비디오 데이터의 현재의 블록에 대한 MVP 로서 인덱스로 나타낸 리스트에서 5 개의 후보 모션 벡터들 중 하나를 선택한다. 비디오 디코더 (30) 는 그 후 후보 모션 벡터들 중 선택된 후보 모션 벡터의 동일한 해상도에서 후보 모션 벡터들 중 선택된 후보 모션 벡터를 연관된 PU 에 대한 MVP 로서 인스턴스화하고, 후보 모션 벡터들 중 선택된 후보 모션 벡터가 가리키는 동일한 참조 프레임을 가리킨다. 병합 모드를 구현할 때에, 비디오 인코더 (20) 는 모션 벡터를 도출하는데 필요한 전체 범위까지 모션 추정을 수행할 필요가 없고, 모션 벡터의 수평 및 수직 성분들, 모션 벡터 해상도, 모션 벡터 방향 (모션 벡터가 시간적으로 현재의 프레임 전후의 프레임을 가리킨다는 것을 의미함) 또는 참조 프레임 인덱스를 특정할 필요가 없어, 잠재적으로는 모션 벡터를 결정하는데 요구되는 프로세서 사이클들을 감소시키고 모션 벡터 데이터를 압축시킬 수도 있다.
비디오 인코더 (20) 는 또한 병합 모드와 유사하게, MVP로서 후보 모션 벡터들 중 하나를 식별하는 인덱스로서 모션 벡터들을 표현하는 것을 포함하는 적응적 모션 벡터 예측 (adaptive motion vector prediction; AMVP) 모드를 구현할 수도 있다. 그러나, 병합 모드와 반대로, 비디오 인코더 (20) 는 또한 예측 방향 및 참조 프레임을 특정하여, 후보 모션 벡터들 중 선택된 후보 모션 벡터의 이 부분들을 효과적으로 오버라이딩 (overriding) 할 수도 있다. AMVP 모드를 구현할 때에, 비디오 인코더 (20) 는 모션 벡터를 도출하는데 필요한 전체 범위까지 모션 추정을 수행할 필요가 없고, 모션 벡터의 수평 및 수직 성분들, 및 모션 벡터 해상도를 특정할 필요가 없어, 잠재적으로 모션 벡터를 결정하는데 요구되는 프로세서 사이클들을 감소시키고 모션 벡터 데이터를 압축시킬 수도 있다.
일반적으로, 현재의 제시된 표준에 대한 이전의 비디오 코딩 표준들, HEVC는 모션 벡터 수직 및 수평 성분들의 크기를 제약하기 위해 다양한 제한들을 정의하였다. 위에서 언급된 바와 같이, 이 제한들은 수직 및/또는 수평 변위를 최대값 및 최소값으로 한정하는 범위들로서 정의될 수도 있다. HEVC 에서, 이들 모션 벡터 성분 범위들 (통상 "mvrange" 로서 지칭됨) 은 H.264 와 같은, 이전의 비디오 코딩 표준들에서 이들 범위들의 이용에 기초하여 먼저 제시되고 채택되었다. 하지만, 최근에, 수평 및/또는 수직 변위 상의 이들 범위들은, 모션 벡터들이 일반적으로 참조 프레임의 임의의 부분을 참조하는 것을 가능하게 하도록 HEVC 로부터 감소하였다. HEVC 에서 또한 정의되었던 모션 벡터들은, 길이가 각각 16 비트인 성분 값들을 가지며, 이는 통상 참조 프레임의 임의의 부분으로 거의 지향되는 큰 모션 벡터 성분 값들을 표현하기에 충분한 비트를 제공하였다. 모션 벡터들이 참조 프레임의 임의의 부분을 일반적으로 참조하는 것을 가능하게 함으로써, 비디오 인코더들은 잔여 데이터의 최소량을 초래하는 참조 프레임의 부분들에 대한 보다 철저한 탐색을 수행할 수도 있다 (비디오 데이터의 현재의 블록의 보다 효율적인 압축이라 하는 또 다른 방식이다).
또한, 소정의 환경들에서, 모션 벡터들의 범위를 제한하는 것이 이로울 수도 있다. 예를 들어, 상기 모션 벡터 예측 프로세스들 중 하나 (예를 들어, 병합 또는 AMVP 모드) 를 수행할 때, 모션 벡터 후보들 중 하나 이상은 후보 리스트에 부가되기 전에 스케일링될 수도 있다. 이러한 스케일링된 모션 벡터 성분들은 그 후 각각의 모션 벡터 성분에 대해 보통 정의되는 16 비트 길이를 초과할 수도 있다. 그러한 스케일링된 모션 벡터들이 16 비트 길이보다 클 때, 비디오 인코더 (20) 는 병합 모드가 유용하지 않다는 것을, 또는 즉 병합 모드가 수행될 수 없다는 것을 결정할 수도 있다. 이러한 동일한 이슈는, AMVP 를 수행할 때, 모션 벡터들 중 하나 이상이 스케일링될 수도 있는 바와 같이 AMVP 모드를 수행할 때 일어날 수도 있다. 병합 모드 및 AMVP 모드 중 어느 하나 또는 양자의 이용을 제한하는 것은 압축 비효율을 초래할 수도 있다.
본 개시물에 기재된 기법들에 따르면, 비디오 인코더 (20) 는 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대한 복수의 후보 모션 벡터들을 결정할 수도 있다. 즉, 비디오 인코더 (20) 는 비디오 데이터의 현재의 블록의 하나 이상의 이웃하는 블록들을 식별할 수도 있다 (여기서, 이들 이웃하는 블록들은 또한 "비디오 데이터의 후보 블록들" 또는 "후보 비디오 블록들" 로서 지칭될 수도 있음). 비디오 인코더 (20) 는 하나 이상의 (그리고, 통상, 4개의) 공간적으로 이웃하는 블록들 및 하나 이상의 (그리고, 통상, 단 하나의) 시간적으로 이웃하는 블록들을 식별할 수도 있다. 현재의 블록에 관한 이들 공간 및 시간적으로 이웃하는 블록들의 위치는 도 6 을 참조하여 아래에서 상세하게 나타낸다. 이들 이웃하는 블록들을 식별한 후, 비디오 인코더 (20) 는 그 후 이들 이웃하는 블록들의 각각과 연관된 모션 벡터들을 결정할 수도 있으며, 여기서 모션 벡터들은 모션 벡터 예측 프로세스에 대한 후보 모션 벡터들을 나타낼 수도 있다.
이들 모션 벡터들을 결정하면, 비디오 인코더 (20) 는, 소정의 경우, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성할 수도 있다. 예시를 위해, 모션 벡터 예측 프로세스의 병합 모드를 수행할 때, 비디오 인코더 (20) 는 시간적으로 이웃하는 블록과 연관된 모션 벡터를 결정할 수도 있으며, 여기서 이러한 시간적으로 이웃하는 블록은 비디오 데이터의 현재의 블록과 동일한 참조 프레임의 위치에서 동일 위치에 배치된 비디오 데이터의 블록을 지칭한다. 이러한 참조 프레임은 화상 순서 카운트 (picture order count) 와 연관될 수도 있으며, 화상 순서 카운트는 프레임이 다른 프레임들에 관하여 디스플레이되는 순서를 식별하는 비디오 데이터의 각각의 프레임에 할당된 수를 지칭한다. 통상적으로, 비디오 인코더 (20) 는, 비디오 데이터의 현재의 블록이 상주하는 현재의 프레임과 비디오 데이터의 동일 위치에 배치된 블록이 상주하는 참조 프레임 사이의 화상 순서 카운트에서의 차이에 기초하여 시간적 후보 모션 벡터를 스케일링할 수도 있다.
또 다른 예로서, 모션 벡터 예측 프로세스의 어드밴스드 모션 벡터 예측 (AMVP) 모드를 수행할 때, 비디오 인코더 (20) 는 마찬가지로 비디오 데이터의 현재의 블록이 상주하는 현재의 프레임과 비디오 데이터의 동일 위치에 배치된 블록이 상주하는 참조 프레임 사이의 화상 순서 카운트에서의 차이에 기초하여, 시간적 후보 모션 벡터를 스케일링할 수도 있다. 하지만, 위에서 언급한 바와 같이, 모션 벡터 예측 프로세스의 AMVP 모드는 후보 모션 벡터들의 여러 양태들이 효과적으로 오버라이딩되도록 한다. 그 결과, 모션 벡터 예측 프로세스의 AMVP 모드에서, 비디오 인코더 (20) 는 공간적 후보 모션 벡터들과 연관된 참조 프레임을 오버라딩할 수도 있으며, 이는 비디오 데이터의 현재의 블록이 상주하는 현재의 프레임과 특정된 (또는 오버라이딩) 참조 프레임 사이의 화상 순서 카운트에서의 차이에 기초하여 공간적 후보 모션 벡터들의 스케일링을 초래할 수도 있다. 따라서, 비디오 인코더 (20) 는, 모션 벡터 예측 프로세스의 AMVP 모드를 수행할 때, 시간적 및 공간적 후보 모션 벡터들의 양자를 스케일링할 수도 있다.
비디오 인코더 (20) 는 그 후 현재의 블록에 대한 MVP 로서 복수의 후보 모션 벡터들 중 하나를 선택하기 전에, 스케일링된 후보 모션 벡터들 중 하나 이상의 범위를 특정 범위 이내가 되도록 한정한다. 즉, 비디오 인코더 (20) 는 현재의 블록에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하기 전에 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경할 수도 있다. 현재의 블록에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하기 전에 스케일링된 후보 모션 벡터들 중 하나 이상을 변경할 때, 이들 스케일링된 후보 모션 벡터들이 특정 범위 ("변위 제한들" 로서 또한 지칭될 수도 있음) 로 한정되는 것을 보장하기 위해, 비디오 인코더 (20) 가 이들 스케일링된 후보 모션 벡터들의 각각을 변경할 수도 있다. 특정 범위는, 일 예로서, 1/4 픽셀 유닛들에서 [-32768, 32767] 로서 특정된다.
현재의 블록에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택 (및 후보 모션 벡터들 중 선택된 후보 모션 벡터를 잠재적으로 변경) 한 후에, 비디오 인코더 (20) 는 그 후 MVP 를 사용하여 비디오 데이터의 현재의 블록을 인코딩할 수도 있다. 즉, 비디오 인코더 (20) 는 참조 프레임에서 참조 블록을 식별하고 현재의 블록과 참조 블록 사이의 차이로서 비디오 데이터의 잔여 블록을 생성하기 위해 MVP 를 사용할 수도 있다. 비디오 인코더 (20) 는 그 후 위에서 언급된 변환 동작들을 수행하여 비디오 데이터의 이러한 잔여 블록을 공간적 도메인으로부터 주파수 도메인으로 변환하여, 변환 계수들의 블록들을 생성한다. 비디오 인코더 (20) 는 다음에 변환 계수들을 양자화하고, 양자화된 변환 계수들을 런 길이 (run-length) 인코딩하며, 런 길이 인코딩된 양자화된 변환 계수들을 엔트로피 인코딩 (통계적 무손실 코딩으로 칭하는 또 다른 방식임) 할 수도 있다. 비디오 인코더 (20) 는 연관된 구문 엘리먼트들을 갖는 비트스트림에서 이러한 코딩된 비디오 데이터를 출력할 수도 있다.
비디오 디코더 (30) 는 이 비트스트림을 수신하고 구문 엘리먼트들에 따라 그 비트스트림을 디코딩할 수도 있다. 비디오 디코더 (30) 는 일반적으로 비디오 인코더 (20) 에 관하여 위에 기술된 것들에 대해 반대 동작들을 수행할 수도 있다. 즉, 비디오 디코더 (30) 는 인코딩된 비디오 데이터의 각각의 블록을 엔트로피 디코딩하고, 역양자화를 수행하여 인코딩된 비디오 데이터의 블록을 역양자화하며, 인코딩된 비디오 데이터의 역양자화된 블록을 주파수 도메인에서 공간적 도메인으로 변환하는 역변환을 적용할 수도 있다. 이러한 인코딩된 비디오 데이터의 변환된 블록은 잔여 데이터의 재구성된 버전을 나타낼 수도 있다. 비디오 디코더 (30) 는, 이 경우 잔여 데이터의 재구성된 버전으로 지칭할 수도 있는, 인코딩된 비디오 데이터의 현재의 블록과 연관된 구문 엘리먼트들로부터, 이 현재의 블록에 대한 모션 벡터가 모션 벡터 예측 프로세스를 이용하여 도출되는 것을 결정할 수도 있다.
비디오 디코더 (30) 가 이러한 현재의 블록에 대한 모션 벡터가 모션 벡터 프로세스를 이용하여 도출되는 것을 결정한다고 가정하면, 비디오 디코더 (30) 는 그 후 일반적으로 인코딩된 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자를 도출하기 위해 비디오 인코더 (20) 에 관하여 위에서 기술된 동작들과 동일한 동작들을 수행할 수도 있다. 이로써, 비디오 디코더 (30) 는 모션 벡터 예측 프로세스를 수행하도록 비디오 데이터의 현재의 블록에 대한 복수의 후보 모션 벡터들을 결정할 수도 있다. 즉, 비디오 디코더 (30) 는 비디오 데이터의 현재의 블록의 하나 이상의 이웃하는 블록들을 식별할 수도 있다. 비디오 디코더 (30) 는 하나 이상의 공간적으로 이웃하는 블록들 및 하나 이상의 시간적으로 이웃하는 블록들을 식별할 수도 있다. 다시, 현재의 블록에 관한 이들 공간적 및 시간적으로 이웃하는 블록들의 위치는 도 6 에 관하여 아래에서 상세하게 나타낸다. 이들 이웃하는 블록들을 식별한 후, 비디오 디코더 (30) 는 그 후 이들 이웃하는 블록들의 각각과 연관된 모션 벡터들을 결정할 수도 있으며, 여기서 모션 벡터들은 모션 벡터 예측 프로세스에 대한 후보 모션 벡터들을 나타낼 수도 있다.
이들 모션 벡터들을 결정하면, 비디오 디코더 (30) 는, 비디오 인코더 (20) 에 관하여 위에서 기재된 경우들에 있어서, 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성할 수도 있다. 비디오 디코더 (30) 는 그 후 현재의 블록에 대한 MVP 로서 복수의 후보 모션 벡터들 중 하나를 선택하기 전에, 스케일링된 후보 모션 벡터들 중 하나 이상의 범위를 특정 범위 이내가 되도록 한정할 수도 있다. 즉, 비디오 디코더 (30) 는 현재의 블록에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하기 전에, 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경할 수도 있다. 현재의 블록에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하기 전에 스케일링된 후보 모션 벡터들 중 하나 이상을 변경할 때, 비디오 디코더 (30) 는 스케일링된 후보 모션 벡터들이 특정 범위 ("변위 제한들" 로도 또한 지칭될 수도 있음) 로 한정되는 것을 보장하기 위해 스케일링된 후보 모션 벡터들의 각각을 변경할 수도 있다. 이러한 방식으로, 비디오 디코더 (30) 는 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경할 수도 있다.
비디오 디코더 (30) 는 비디오 데이터의 현재의 블록 (비트스트림에서 비디오 인코더 (20) 에 의해 미리 특정되었음) 과 연관된 (모션 벡터 예측자 인덱스 ("mvp_idx") 구문 엘리먼트와 같은) 하나 이상의 구문 엘리먼트들에 기초하여 후보 모션 벡터들 중 어느 것이 선택되는지를 결정한다. 비디오 디코더 (30) 는, 예를 들어 이러한 mvp_idx 구문 엘리먼트를 사용하여, 후보 모션 벡터들 중 하나를 선택할 수도 있다. 비디오 디코더 (30) 는 그 후 후보 모션 벡터를 사용하여 비디오 데이터의 현재의 블록을 재구성하여 비디오 데이터의 참조 블록을 식별할 수도 있으며, 이는 비디오 디코더 (30) 가 후에 비디오 데이터의 현재의 블록을 재구성하기 위해 잔여 데이터에 부가한다. 비디오 디코더 (30) 는 그 후 비디오 데이터의 이러한 재구성된 블록을 저장한다.
이러한 방식으로, 본 개시물에 기재된 기법들은 일반적으로 비디오 코더들 (예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 중 어느 하나 또는 양자) 이 스케일링된 그런 후보 모션 벡더들을 변경하는 것을 가능하게 한다. 즉, 그 기법들은 그러한 비디오 코더들이 스케일링되지 않은 후보 모션 벡터들의 것들을 변경하거나 그렇지 않으면 추가로 고려하는 것 없이 스케일링되도록 모션 벡터 예측 프로세스의 그런 후보 모션 벡터들만을 변경하는 것을 가능하게 한다. 이러한 관점에서, 그 기법들은 스케일링된 그런 후보 모션 벡터들만이 변경에 고려되도록 후보 모션 벡터들의 어느 것도 변경하지 않는 것과 후보 모션 벡터들 모두를 변경하는 것 사이의 절충 (compromise) 을 제공할 수도 있다.
본 개시물의 예들에 관하여 기술한 모션 벡터 성분 변위를 한정하는 기법들은, 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 스트리밍 비디오 송신들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 애플리케이션의 지원 하에, 예를 들어, 인터넷, 데이터 저장 매체 상에의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들을 통해서, 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화 통신과 같은 어플리케이션들을 위한 1-방향 또는 2-방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1에 나타내지는 않지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 오디오 및 비디오 양자의 인코딩을 공통 데이터 스트림 또는 별개의 데이터 스트림들로 핸들링하기에 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 다른 프로토콜들, 예컨대, 사용자 데이터그램 프로토콜 (UDP) 에 따를 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적회로 (ASIC) 들, 필드 프로그래밍가능 게이트 어레이 (FPGA) 들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 임의의 이들의 조합들과 같은 다양한 적합한 인코더 회로 중 임의의 회로로서 구현될 수도 있다. 이 기법들이 소프트웨어로 부분적으로 구현될 때, 디바이스는 본 개시물의 기법들을 수행하기 위해 소프트웨어용 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장하고, 그 명령들을 하드웨어에서 하나 이상의 프로세서들을 이용하여 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 쪽이든 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
도 2 는 모션 벡터 예측자들을 특정하는 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 일 예를 예시하는 블록 다이어그램이다. 비디오 인코더 (20) 는 매크로블록들, 또는 매크로블록들의 파티션들 또는 서브-파티션들을 포함한, 비디오 프레임들 내의 블록들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 주어진 비디오 프레임 내의 비디오에서 공간 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임들 내의 비디오에서 시간 리던던시를 감소시키거나 제거하기 위해 시간 예측에 의존한다. 인트라-모드 (I-모드) 는 여러 공간 기반의 압축 모드들 중 임의의 압축 모드를 지칭할 수도 있으며, 단-방향 예측 (P-모드) 또는 양방향 예측 (B-모드) 과 같은 인터-모드들은 여러 시간 기반의 압축 모드들 중 임의의 압축 모드를 지칭할 수도 있다. 인터-모드 인코딩을 위한 컴포넌트들이 도 2 에 도시되지만, 비디오 인코더 (20) 는 인트라-모드 인코딩을 위한 컴포넌트들을 더 포함할 수도 있는 것으로 이해되어야 한다. 그러나, 그러한 컴포넌트들은 간결성과 명확성을 위해 도시되지 않는다.
도 2에 나타낸 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내에서 현재의 비디오 블록을 수신한다. 도 2의 예에서, 비디오 인코더 (20) 는 모션 보상 유닛 (44), 모션 추정 유닛 (42), 메모리 (64), 합산기 (50), 변환 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 포함한다. 또한, 블록 경계들을 필터링하여 재구성된 비디오로부터 블록킹 현상 아티팩트 (blockiness artifact) 들을 제거하기 위해서, 디블로킹 필터 (deblocking filter) (도 2에 도시되지 않음) 가 포함될 수도 있다. 원한다면, 디블로킹 필터는 통상 합산기 (62) 의 출력을 필터링하게 된다. 일반적으로 랜덤 액세스 메모리 (RAM), 동적 RAM (DRAM), 정적 RAM (SRAM), 플래시 메모리 또는 다른 지속성 또는 비-지속성 칩-기반 저장 매체로 지칭되는 메모리 (64) 를 포함하는 것으로 기재되지만, 하드-드라이브들, 광학 드라이브들, 디스크 드라이브들 등을 포함한, 임의의 유형의 비일시적 컴퓨터 판독가능 매체가 이용될 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 이 프레임 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 시간 압축을 제공하기 위해 하나 이상의 참조 프레임들에서의 하나 이상의 블록들에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라 예측 유닛 (46) 은 또한 코딩될 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대해 수신된 비디오 블록의 인트라-예측 코딩을 수행하여, 공간 압축을 제공할 수도 있다.
도 2의 예에서 추가로 나타낸 바와 같이, 비디오 인코더 (20) 는 또한 모드 선택 유닛 (40) 을 포함한다. 모드 선택 유닛 (40) 은 에러 결과들에 기초하여 코딩 모드들, 즉 인트라 또는 인터 중 하나를 선택할 수도 있으며, 결과의 인트라- 또는 인터-코딩된 블록을, 잔여 블록 데이터를 생성하기 위해 합산기 (50) 에 제공할 수도 있고, 또한 참조 프레임으로서 이용을 위해 그 인코딩된 블록을 재구성하도록 합산기 (62) 에 제공할 수도 있다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적 목적들을 위해 별개로 예시된다. 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 현재의 프레임 내에서 코딩되고 있는 현재의 블록 (또는, 다른 코딩된 유닛) 에 관한 예측 참조 프레임 내의 예측 블록 (또는, 다른 코딩된 유닛) 의 변위를 나타낼 수도 있다. 예측 블록은 픽셀 차이의 관점에서, 코딩될 블록과 가깝게 매칭하는 것으로 확인되는 블록이며, SAD (sum of absolute difference), SSD (sum of square difference), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 모션 벡터는 또한 매크로블록의 파티션의 변위를 나타낼 수도 있다. 모션 보상은 예측 블록을 모션 추정에 의해 결정된 모션 벡터에 기초하여 페치하거나 또는 생성하는 것을 수반할 수도 있다. 또, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 일부 예들에서, 기능적으로 통합될 수도 있다.
모션 추정 유닛 (42) 은 비디오 블록을 메모리 (64) 에서의 참조 프레임의 비디오 블록들과 비교함으로써, 인터-코딩된 프레임의 비디오 블록에 대한 모션 벡터를 계산한다. 모션 보상 유닛 (44) 은 또한 참조 프레임, 예를 들어, I-프레임 또는 P-프레임의 서브-정수 픽셀들을 보간할 수도 있다. 차기 HEVC 표준 (및 ITU H.264 표준) 은 "리스트들" 로 통칭되는, 하나 이상의 리스트 데이터 구조들에 의해 참조 프레임들을 저장한다. 따라서, 메모리 (64) 에 저장된 데이터는 또한 리스트들로서 간주될 수도 있다. 모션 추정 유닛 (42) 은 메모리 (64) 로부터의 하나 이상의 참조 프레임들 (또는, 리스트들) 의 블록들을 현재의 프레임, 예를 들어, P-프레임 또는 B-프레임의 인코딩되는 블록과 비교한다. 메모리 (64) 에서의 참조 프레임들이 서브-정수 픽셀들에 대한 값들을 포함하는 경우, 모션 추정 유닛 (42) 에 의해 계산된 모션 벡터는 참조 프레임의 서브-정수 픽셀 로케이션을 참조할 수도 있다. 모션 추정 유닛 (42) 은 그 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다. 모션 벡터에 의해 식별되는 참조 프레임 블록 (CU 를 포함할 수도 있음) 은 예측 블록으로 지칭될 수도 있다. 모션 보상 유닛 (44) 은 참조 프레임의 예측 블록에 대한 에러 값들을 계산한다.
모션 보상 유닛 (44) 은 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 비디오 인코더 (20) 는 코딩되고 있는 원래 비디오 블록으로부터 모션 보상 유닛 (44) 으로부터의 예측 데이터를 감산함으로써 잔여 비디오 블록 (residual video block) 을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 잔여 블록에 적용하여, 잔여 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 유닛 (52) 은 DCT 와 개념적으로 유사한, H.264 표준에 의해 정의된 변환들과 같은, 다른 변환들을 수행할 수도 있다. 웨이블릿 변환들, 정수 변환들, 서브밴드 변환들 또는 다른 유형들의 변환들이 또한 이용될 수 있다. 어쨌든, 변환 유닛 (52) 은 그 변환을 잔여 블록에 적용하여, 잔여 변환 계수 (residual transform coefficient) 들의 블록을 생성한다. 이 변환은 잔여 정보를 픽셀 값 도메인으로부터 변환 도메인, 예컨대 주파수 도메인으로 컨버팅할 수도 있다. 양자화 유닛 (54) 은 비트 레이트를 추가로 감소시키기 위해 잔여 변환 계수들을 양자화한다. 양자화 프로세스는 계수들의 일부 또는 모두와 연관된 비트 깊이를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 변경될 수도 있다.
양자화 이후, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 컨텍스트 적응적 2 진 산술 코딩 (CABAC), 또는 또 다른 엔트로피 코딩 기법을 수행할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 코딩 다음, 인코딩된 비디오가 또 다른 디바이스로 송신되거나 또는 추후 송신 또는 취출을 위해 아카이브될 수도 있다. 컨텍스트 적응적 2진 산술 코딩의 경우, 컨텍스트는 이웃하는 매크로블록들에 기초할 수도 있다.
일부 경우, 엔트로피 인코딩 유닛 (56) 또는 비디오 인코더 (20) 의 또 다른 유닛은 엔트로피 코딩에 더해서, 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 매크로블록들 및 파티션들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 또한, 일부의 경우, 엔트로피 인코딩 유닛 (56) 은 매크로블록 또는 그의 파티션에서 계수들의 런 길이 코딩 (run length coding) 을 수행할 수도 있다. 특히, 엔트로피 인코딩 유닛 (56) 은 지그-재그 스캔 또는 다른 스캔 패턴을 적용하여, 매크로블록 또는 파티션에서 변환 계수들을 스캐닝하고, 추가적인 압축을 위해 제로들의 런들을 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한 헤더 정보를 인코딩된 비디오 비트스트림으로의 송신에 적합한 구문 엘리먼트들로 구성할 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은 역양자화 및 역변환을 각각 적용하여, 예를 들어, 참조 블록으로 추후 사용을 위해, 픽셀 도메인에서 잔여 블록을 재구성한다. 모션 보상 유닛 (44) 은 잔여 블록을 메모리 (64) 에서의 참조 프레임 스토어의 프레임들 중 하나의 예측 블록에 가산함으로써, 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 재구성된 잔여 블록에 적용하여, 모션 추정에 이용하기 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 재구성된 잔여 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 가산하여, 메모리 (64) 의 참조 프레임 스토어에의 저장을 위해 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 후속 비디오 프레임에서의 블록을 인터-코딩하기 위해서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 참조 블록으로서 이용될 수도 있다.
위에서 언급한 바와 같이, 모션 추정 유닛 (42) 은 일부 경우, 모션 벡터를 계산하지 않고, 대신 모션 벡터 예측자들의 리스트 (예를 들어, 이른바 "후보 리스트") 를 결정할 수도 있으며, 이 중 4개는 공간 후보 모션 벡터들이고 이 중 하나는 시간 후보 모션 벡터이다. 통상, 모션 추정 유닛 (42) 은 모션 추정의 산출 복잡성을 감소시키고 이에 의해 비디오 데이터가 인코딩될 수 있는 속도를 향상시키면서 또한 전력 소모를 감소시키기 위해 모션 벡터 계산을 삼가한다.
본 개시물에 기재된 기법들에 따르면, 모션 추정 유닛 (42) 은, 모션 벡터 예측 프로세스를 수행하고 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하도록, 비디오 데이터의 현재의 블록에 대한 복수의 후보 모션 벡터들을 결정할 수도 있다. 위에서 언급된 바와 같이, 이 스케일링 프로세스는 참조 및 현재의 프레임에 대한 화상 순서 카운트와 현재의 프레임 사이의 차이에 기초할 수도 있다. 보다 구체적으로, 모션 추정 유닛 (42) 은, 모션 벡터 예측자가 상이한 참조 화상 또는 프레임을 가리키는 후보 모션 벡터로부터 도출될 때, 소위 거리 스케일 인자 ("DistScaleFactor" 변수로서 HEVC에서 나타낼 수도 있음) 를 결정할 수도 있다.
이 모션 벡터 스케일링 프로세스에서, 모션 추정 유닛 (42) 은 DistScaleFactor 을 산출할 수도 있으며, 이는 다음의 식 (1) 로 정의될 수도 있다:
Figure 112014067625005-pct00001
식 (1) 에서, POC는 화상 순서 카운트를 지칭하며, 식 중, POCcurr 은 현재의 화상 또는 프레임에 대한 화상 순서 카운트를 나타내며, POCref 는 참조 프레임 또는 화상의 화상 순서 카운트를 지칭하며, POCmvp _ blk 는 후보 모션 벡터 (또는, 다르게 말하면, MVP) 중 선택된 후보 모션 벡터를 갖는 후보 또는 이웃하는 블록이 상주하는 프레임 또는 화상의 화상 순서 카운트를 나타내며, POCmvp _ blk _ ref 는 MVP가 가리키는 참조 블록이 상주하는 화상 또는 프레임의 화상 순서 카운트를 나타낸다. 이에 따라, 식 (1) 에서 변수 "td" 는 블록 MVP_BLK 와 그 참조 블록 사이의 화상 순서 카운트 차이 (또는, 다르게 말하면, 거리) 를 나타내고, 식 (1) 에서 변수 "tb" 는 현재의 블록과 그 참조 블록 사이의 POC 거리를 나타낸다.
모션 추정 유닛 (42) 은 다음 식 (2) 에 따라 "tx" 로 나타낸, 스케일링 인자를 더 산출할 수도 있다:
Figure 112014067625005-pct00002
모션 추정 유닛 (42) 은 그 후 다음 식 (3) 에 따라 DistScaleFactor 를 산출할 수도 있다:
Figure 112014067625005-pct00003
이에 따라, DistScaleFactor 는 tb 및 tx의 함수로서 산출될 수도 있지만, -4096 및 4095의 특정 범위 이내가 되도록 클리핑될 수도 있다. 이 DistScaleFactor를 이용하여, 모션 추정 유닛 (42) 은 다음 식 (4) 에 따라 후보 모션 벡터들 중 하나 이상을 스케일링할 수도 있다:
Figure 112014067625005-pct00004
식 (4) 에서, ScaledMV 는 스케일링된 후보 모션 벡터를 나타내고, "sign" 은 부호를 유지하는 함수를 지칭하며, "abs" 는 값의 절대값을 산출하는 함수를 지칭하며, ">>" 는 비트-단위 우측 시프트를 나타낸다.
위에서 언급된 바와 같이, POC 거리에 기초한 ScaledMV 는 특정 범위 ("모션 벡터 범위" 또는 대안으로, "범위"로서 지칭될 수도 있음) 를 초과할 수도 있으며, 이는 비디오 인코딩 프로파일 또는 레벨에 따라 정의될 수도 있다. 그 결과, 모션 추정 유닛 (42) 은 본 개시물에 기재된 기법들을 수행하여 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경할 수도 있다. 게다가, 모션 추정 유닛 (42) 은 스케일링되지 않은 다른 후보 모션 벡터들 중 어느 것도 변경하지 않으면서 스케일링된 후보 모션 벡터들을 변경할 수도 있다.
모션 추정 유닛 (42) 은 일부 방식들에서 스케일링된 후보 모션 벡터들을 변경할 수도 있다. 예를 들어, 모션 추정 유닛 (42) 은 모션 벡터 범위의 경계 내에 계속 유지되도록 스케일링된 후보 모션 벡터의 수직 성분을 클리핑할 수도 있다. 즉, 모션 추정 유닛 (42) 은 수직 모션 벡터 값을 최대/최소 수직 모션 벡터 성분 범위로 효과적으로 제한할 수도 있다.
또 다른 예로서, 모션 추정 유닛 (42) 은 모션 벡터 범위의 경계 내에 계속 유지되도록 스케일링된 후보 모션 벡터를 스케일링할 수도 있다. 예시를 위해, 수직 모션 벡터 제한들의 특정 범위를 초과하는 수직 성분 (mv_y) 및 수평 성분 (mv_x) 을 갖는 주어진 스케일링된 모션 벡터에 대해, 모션 추정 유닛 (42) 은 수직 MV 제한에 대응하는 mv_y'에 y-성분들을 제한할 수도 있다. 모션 추정 유닛 (42) 은 또한 다음의 식 (5) 에 따라 수평 성분, mv_x 를 스케일링할 수도 있다:
Figure 112014067625005-pct00005
식 (5) 에서, mv_x' 는 스케일링된 후보 모션 벡터의 스케일링된 수평 성분을 나타낸다. 모션 추정 유닛 (42) 은, 제산 연산의 근사치들을 사용하여 여러 정밀 레벨들에서 식 (5) 로서 표현된 이러한 스케일링 동작을 수행하여, 변경된 수평 성분, mv_x' 및 변경된 수직 성분, mv_y'의 양자를 잠재적으로 갖는 변경된 스케일링된 모션 벡터를 생성할 수도 있다.
스케일링된 모션 벡터들 중 하나 이상을 변경하는 일부 상이한 방식들에 관해 위에서 기재되었지만, 그 기법들은 모션 벡터 예측 프로세스를 수행할 때, 후보 모션 벡터들을 변경하기 위해 임의의 수의 방식들로 수행될 수도 있다. 예를 들어, 모션 추정 유닛 (42) 은 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 복수의 후보 모션 벡터들 중 하나를 선택하기 전에 스케일링된 후보 모션 벡터들을 클리핑할 수도 있다.
또 다른 예로서, 모션 추정 유닛 (42) 은 스케일링된 후보 모션 벡터들의 수직 컴포넌트가 수직 특정 범위 이내가 되도록 클리핑하고, 스케일링된 후보 모션 벡터들의 수평 컴포넌트가 수평 특정 범위 이내가 되도록 클리핑할 수도 있다. 이러한 경우들에서, 클리핑 동작들은 다음의 식 (6) 에 따를 수도 있다:
Figure 112014067625005-pct00006
식 (6) 에서, 클리핑 식은, 스케일링된 모션 벡터의 수평 및 수직 성분들 중 하나 또는 양자를 -32768 내지 32767의 특정 범위로 클리핑하는, 식 (4) 로서 위에 나타낸 스케일링 식을 포함한다. 스케일링된 모션 벡터는 식 (6) 에서 "mvLXA" 로서 나타낸다. 즉, 특정 범위는 1/4 픽셀 유닛들에서 [-32768, 32767] 로서 특정될 수도 있으며, 이 특정 범위는, 일부 경우에 비디오 디코더 및 비디오 인코더 중 하나 이상에서 고정되고 하드 코딩될 수도 있다.
일부 경우, 특정 범위는, 위에서 언급된 바와 같이, 수직 변위 제한을 포함하는 모션 벡터 변위 제한을 특정할 수도 있으며, 여기서 모션 추정 유닛 (42) 은 스케일링된 후보 모션 벡터들의 수직 성분이 수직 변위 제한 이내가 되도록 스케일링된 후보 모션 벡터들의 수직 성분을 클리핑할 수도 있다.
일부 경우, 수평 및 수직 성분들의 양자를 클리핑하는 대신, 모션 추정 유닛 (42) 이 스케일링된 후보 모션 벡터의 수평 성분만을 클리핑할 수도 있다. 다시, 특정 범위는 수평 변위 제한을 포함하는 모션 벡터 변위 제한을 특정할 수도 있고, 모션 추정 유닛 (42) 은 스케일링된 후보 모션 벡터들의 수평 성분이 수평 변위 제한 내에 있도록 스케일링된 후보 모션 벡터들의 수평 성분을 클리핑할 수도 있다. 위에서 언급된 바와 같이, 모션 추정 유닛 (42) 은 수평 또는 수직 성분들 중 하나를 클리핑할 수도 있고, 그 후 스케일링된 후보 모션 벡터들이 하나 이상의 모션 벡터 변위 제한들에 의해 경계가 지워지도록 다른 클리핑되지 않은 성분 (수직 성분일 수도 있으며 위의 예에 제한되지 않아야 한다) 을 스케일링할 수도 있다. 따라서, 그 기법들은 상술한 예시의 변경물 중 임의의 것에 제한되지 않아야 한다.
모션 벡터 예측자로서 후보 모션 벡터들 중 하나를 선택하기 위해, 모션 보상 유닛 (44) 은 그 후 리스트에 포함된 각각의 후보 모션 벡터들에 대한 (또한, 예측 블록으로서도 지칭될 수 있는) 참조 프레임 블록을 식별할 수도 있다. 모션 보상 유닛 (44) 은 그 후 후보 모션 벡터들의 각각에 대해 결정된 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 비디오 인코더 (20) 는 그 후 후보 모션 벡터들 중 대응하는 하나에 대해 산출된 각각의 예측 데이터에 대해 잔여 데이터를 결정하고, 그 잔여 데이터를 변환하고, 트랜스코딩된 (transcoded) 잔여 데이터를 양자화한 후, 양자화된 잔여 데이터를 위에 기재된 방식으로 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 그 후 잘라낸 후 남은 후보 모션 벡터들의 각각에 관해 생성된 이 엔트로피 인코딩된 잔여 데이터를 디코딩하는 역동작들을 수행하여, 참조 데이터를 재구성된 비디오 블록들의 형태로 재생할 수도 있다. 모드 선택 유닛 (40) 은 후보 모션 벡터들의 각각에 대해 생성된 재구성된 비디오 블록들의 각각을 분석하여, 후보 모션 벡터들 중 하나를 선택할 수도 있다. 모드 선택 유닛 (40) 은 "RDO" 로 통상 약칭되는, "레이트-왜곡 최적화 (rate-distortion optimization)" 로 통칭되는 프로세스를 통해서 최상의 레이트-대-왜곡 비를 제공하는 후보 모션 벡터들 중 하나를 선택할 수도 있다.
RDO 는 일반적으로 소정의 레이트 (일반적으로, 압축된 프레임, 슬라이스 또는 블록을 포함하는 압축된 비디오 데이터가 전송될 수 있는 비트레이트를 지칭함) 를 달성하도록 압축된 재구성된 프레임, 슬라이스 또는 블록을 원래 프레임, 슬라이스 또는 블록과 비교하고, 주어진 레이트에서 원래 프레임, 슬라이스 또는 블록과, 그 재구성된 프레임, 슬라이스 또는 블록 사이의 왜곡의 양을 결정하는 것을 수반한다. 모드 선택 유닛 (40) 은 주어진 레이트를 달성하거나 또는 달성하려고 시도하는 다수의 상이한 메트릭들을 이용하여 동일한 비디오 데이터를 인코딩하여, 이들 여러 메트릭들에 대해 왜곡 최적화 프로세스를 수행할 수도 있다. 이 경우, 모드 선택 유닛 (40) 은 각각의 재구성된 비디오 블록의 RD 출력을 비교하고, 목표 레이트에서 최소 왜곡을 제공하는 하나를 선택할 수도 있다.
모드 선택 유닛 (40) 은 그 후 이러한 선택을 모션 추정 유닛 (42) 에 나타낼 수도 있으며, 이는 계속해서 엔트로피 코딩 유닛 (56) 과 인터페이스하여, 엔트로피 인코딩 유닛 (56) 에게 선택을 통지한다. 통상, 모션 추정 유닛 (42) 은, 엔트로피 인코딩 유닛 (56) 과 인터페이스하여, 모션 벡터 예측이 선택된 후보 모션 벡터를 식별하는 인덱스와 함께 수행되었다는 것을 나타낸다. 위에서 언급한 바와 같이, 모션 추정 유닛 (42) 은 후보 모션 벡터들을 정의된 방식으로, 예컨대, 최고 크기에서 최저 크기로 또는 최저 크기에서 최고 크기로 또는 임의의 다른 정의된 방식으로 배열할 수도 있다. 대안으로, 모션 추정 유닛 (42) 은, 후보 모션 벡터들이 이러한 후보 리스트에 배열되었던 방식을 엔트로피 인코딩 유닛 (56) 에 시그널링할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 그 후 모션 데이터를 인코딩하는데 모션 벡터 예측 프로세스가 수행되었다는 것을 나타내는데 필요할 수도 있는 임의의 다른 정보와 함께 이러한 인덱스를 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 인코딩된 인덱스를 구문 엘리먼트 ("mvp_idx" 로서 표시될 수도 있음) 로서 비트스트림에서 출력할 수도 있으며, 이 비트스트림은 도 1의 예에 관해 위에 기재된 방식으로 저장되거나 또는 송신될 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 선택하고, 모션 벡터 예측자에 기초하여 비디오 데이터의현재의 블록을 코딩할 수도 있다.
일부 경우, 엔트로피 인코딩 유닛 (56) 은 컨텍스트 적응적 2진 산술 코딩 (CABAC) 으로 지칭되는 엔트로피 코딩의 형태를 수행한다. CABAC 를 수행할 때에, 엔트로피 인코딩 유닛 (56) 은 소위 복수의 컨텍스트들 (대응하는 컨텍스트와 연관된 비디오 데이터를 보다 효율적으로 압축하도록 상이한 컨텍스트에 대해 특정된 상이한 코드 테이블들임) 중 하나를 선택하고, 그 선택된 컨텍스트에 대해 정의된 코드 테이블에 따라 압축된 잔여 데이터를 인코딩할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 컨텍스트 정보에 기초하여 컨텍스트들 중 하나를 선택할 수도 있으며, 이 컨텍스트 정보는 모션 벡터 예측을 수행할 때 결정된 참조 인덱스, 고유한 모션 벡터 후보들의 개수 및 모션 벡터 예측을 수행할 때 결정된 예측 방향을 포함할 수도 있다.
도 3 은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 도시하는 블록 다이어그램이다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라 예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 메모리 (82) 및 합산기 (80) 를 포함한다. 비디오 디코더 (30) 는 일부 예들에서, 도 1 및 도 2 의 예들에 나타낸 비디오 인코더 (20) 와 같은 비디오 인코더에 대해 기재된 인코딩 패스와 일반적으로 반대인 디코딩 패스를 수행할 수도 있다. 일반적으로 반대이지만, 비디오 디코더 (30) 는 일부 경우, 비디오 인코더 (20) 에 의해 수행되는 기법들과 유사한 기법들을 수행할 수도 있다. 즉, 비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 수행되는 프로세스들과 실질적으로 유사한 프로세스들을 수행할 수도 있다. 더욱이, 위에서 기재된 바와 같이, 비디오 인코더 (20) 는 비디오 인코딩을 수행하는 프로세스에서 비디오 디코딩을 수행할 수도 있다. 예시를 위해, 비디오 인코더 (20) 의 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 는 비디오 디코더 (30) 의 역양자화 유닛 (76), 역변환 유닛 (78) 및 합산기 (80) 와 실질적으로 유사한 동작들을 수행할 수도 있다.
도 3 의 예에 나타낸 바와 같이, 엔트로피 디코딩 유닛 (70) 은 인코딩된 비트스트림을 수신하며, 이 인코딩된 비트스트림은 예시의 목적으로, 선택된 후보 모션 벡터를 식별하는 단항의 또는 절단된 단항의 코딩된 인덱스를 포함하는 것으로 가정된다 (여기서, 또 다시, 이들 후보 모션 벡터들은 모션 벡터 예측자들 또는 후보 모션 벡터 예측자들 ("후보 MVP들") 로서 지칭될 수도 있다). 엔트로피 디코딩 유닛 (70) 은, 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 에 일반적으로 반대인 프로세스를 수행할 때에, 현재의 PU에 대한 모션 벡터를 결정하기 위해 모션 벡터 예측이 수행되었다는 것을 표시하는, 현재의 PU에 대한 구문 엘리먼트 또는 다른 코딩 데이터를 수신할 수도 있다. 이 구문 엘리먼트 또는 다른 코딩 데이터에 응답하여, 엔트로피 디코딩 유닛 (70) 은 비트 스트림으로부터 모션 벡터 예측 인덱스 (mvp_idx) 를 파싱하여, 이러한 모션 벡터 인덱스를 모션 보상 유닛 (72) 에 제공한다. 엔트로피 디코딩 유닛 (70) 은 또한 이러한 모션 벡터 인덱스가 연관된 비디오 데이터의 인코딩된 블록을 디코딩하여, 비디오 데이터의 이러한 인코딩된 블록을 역양자화 유닛 (76) 에 제공한다.
모션 보상 유닛 (72) 은 현재의 PU 에 인접한 PU들에 대한 공간적 후보 모션 벡터들 및 참조 프레임에서 동일 위치에 배치된 PU 에 대한 시간적 후보 모션 벡터를 취출한다. 엔트로피 디코딩 유닛 (70) 은 또한 모션 보상 유닛 (72) 에 현재의 PU 에 대해 식별된 참조 프레임을 (통상 비트스트림에서 또 다른 구문 엘리먼트로서) 제공할 수도 있다. 대안으로, 모션 보상 유닛 (72) 은 (예를 들어, 현재의 PU가 위치되는 현재의 프레임으로부터 앞뒤로 1 개, 2 개 또는 임의의 개수와 같이) 설정된 방식으로 식별된 참조 프레임으로부터 시간적 후보 모션 벡터를 검색하도록 AMVP 또는 병합 모드 중 어느 하나와 관련하여 구성될 수도 있다.
모션 보상 유닛 (72) 은 그 후 4개의 공간적 후보 모션 벡터들 및 시간적 후보 모션 벡터를 포함하는 후보 리스트를 구성할 수도 있다. 이러한 후보 리스트를 생성하는데 있어서, 모션 보상 유닛 (72) 은 비디오 데이터의 현재의 블록에 대해 결정된 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성할 수도 있다. 위에서 언급된 바와 같이, 이러한 스케일링 프로세스는 참조 및 현재의 프레임에 대한 화상 순서 카운트들 사이의 차이에 기초할 수도 있다. 또한, POC 거리들에 기초한 스케일링된 모션 벡터는 특정 범위 ("모션 벡터 범위" 로서 지칭될 수도 있음) 를 초과할 수도 있으며, 이는 비디오 인코딩 프로파일 또는 레벨에 따라 정의될 수도 있다. 그 결과, 모션 보상 유닛 (72) 은 본 개시물에 기재된 기법들을 수행하여 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 변경할 수도 있다. 또한, 모션 보상 유닛 (72) 은 스케일링되지 않은 다른 후보 모션 벡터들 중 어느 것도 변경하지 않으면서 스케일링된 후보 모션 벡터들을 변경할 수도 있다.
모션 보상 유닛 (72) 은 도 1 및 도 2의 예들에 나타낸 비디오 인코더 (20) 의 모션 추정 유닛 (42) 에 관하여 위에서 기재된 많은 방식들로 스케일링된 후보 모션 벡터들을 변경할 수도 있다. 예를 들어, 모션 보상 유닛 (72) 은 스케일링된 후보 모션 벡터들의 수직 성분을 클리핑하여 모션 벡터 범위의 경계 내에 계속 유지시킬 수도 있다. 즉, 모션 보상 유닛 (72) 은 수직 모션 벡터 값을 최대/최소 수직 모션 벡터 성분 범위로 효과적으로 제한할 수도 있다. 모션 보상 유닛 (72) 은 또한 스케일링된 후보 모션 벡터의 수평 성분을 클리핑하여 모션 벡터 범위의 경계 내에 계속 유지시킬 수도 있다. 즉, 모션 보상 유닛 (72) 은 수평 모션 벡터 값을 최대/최소 수평 모션 벡터 성분 범위로 효과적으로 제한할 수도 있다.
또 다른 예로서, 모션 보상 유닛 (72) 은 스케일링된 후보 모션 벡터를 스케일링하여 모션 벡터 범위의 경계 내에 계속 유지시킬 수도 있다. 예시를 위해, 수직 모션 벡터 제한들의 특정 범위를 초과하는 수직 성분 (mv_y) 및 수평 성분 (mv_x) 을 갖는 주어진 스케일링된 모션 벡터에 대하여, 모션 보상 유닛 (72) 은 수직 MV 제한에 대응하는 y-성분들을 mv_y'로 제한할 수도 있다.
어쨌든, 이러한 후보 리스트를 형성한 후, 모션 보상 유닛 (72) 은 그 후 모션 벡터 예측자 인덱스에 의해 식별된 후보 리스트로부터 후보 모션 벡터들 중 하나를 선택한다. 인터-코딩된 블록에 대해, 모션 보상 유닛 (72) 은 그 후 그 식별된 모션 벡터에 기초하여 인터-예측 데이터를 생성할 수도 있다. 모션 보상 유닛 (72) 은 이 모션 벡터를 이용하여 메모리 (82) 에 저장된 참조 프레임들에서 예측 블록을 식별할 수도 있다. 인트라-코딩된 블록들에 대해, 인트라 예측 유닛 (74) 은 비트스트림에서 수신된 인트라 예측 모드들을 이용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다. 역양자화 유닛 (76) 은 비트스트림에 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 블록 계수들을 역양자화, 즉 양자화를 해제한다. 역양자화 프로세스는 예를 들어, H.264 디코딩 표준에 의해 정의된 바와 같은, 종래의 프로세스를 포함할 수도 있다. 역양자화 프로세스는 또한 양자화의 정도, 그리고, 이와 유사하게, 적용되어야 하는 역양자화의 정도를 결정하기 위해 각각의 매크로블록에 대해 합산기 (50) 에 의해 계산된 양자화 파라미터 QPY 의 사용을 포함할 수도 있다.
역변환 유닛 (78) 은 픽셀 도메인에서 잔여 블록들을 생성하기 위해서, 역 변환, 예를 들어 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 변환 계수들에 적용한다. 모션 보상 유닛 (72) 가능한한 보간 필터들에 기초하여 보간을 수행하는, 모션 보상된 블록들을 생성한다. 서브-픽셀 정밀도를 갖는 모션 추정에 이용되는 보간 필터들에 대한 식별자들이 구문 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 이용되는 바와 같이 보간 필터들을 이용하여 참조 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산할 수도 있다. 모션 보상 유닛 (72) 은 비디오 인코더 (20) 에 의해 이용된 보간 필터들을 수신된 구문 정보에 따라 결정하고, 그 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
모션 보상 유닛 (72) 은 구문 정보의 일부를 이용하여 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는데 이용되는 CU들의 사이즈들, 인코딩된 비디오 시퀀스의 프레임의 각각의 CU가 어떻게 파티셔닝되는지를 기술하는 파티션 정보, 각각의 CU가 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터-인코딩된 CU에 대한 하나 이상의 참조 프레임들 (또는, 리스트들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정할 수도 있다.
합산기 (80) 는 잔여 블록들을 모션 보상 유닛 (72) 또는 인트라-예측 유닛에 의해 생성된 대응하는 예측 블록들과 합산하여 디코딩된 블록들을 형성한다. 원한다면, 블록킹 현상 아티팩트들을 제거하기 위해 디블로킹 필터가 또한 디코딩된 블록들을 필터링하는데 적용될 수도 있다. 디코딩된 비디오 블록들은 그 후 메모리 (82) 의 참조 프레임 스토어에 저장되며, 이 메모리는 HEVC 표준에서 디코딩된 화상 버퍼로 지칭될 수도 있으며, 이는 후속 모션 보상을 위해 참조 블록들을 제공하고 또한 (도 1의 디스플레이 디바이스 (32) 와 같은) 디스플레이 디바이스 상의 프리젠테이션을 위해 디코딩된 비디오를 생성한다.
일부 경우, 일 예로서, 시간 후보 모션 벡터를 특정하는 슬라이스가 손실되는, 즉, 인코딩된 비트스트림에서 복구 또는 수신되지 않을 때와 같이, 시간 후보 모션 벡터가 이용가능하지 않을 수도 있다. 이 시간 후보 모션 벡터가 이용가능하지 않을 때, 모션 보상 유닛 (72) 은 이 시간 후보 모션 벡터를 디폴트 값으로 설정하거나 또는 아니면 이 시간 후보 모션 벡터에 대한 디폴트 모션 벡터 정보를 결정할 수도 있다. 일부의 경우, 시간 후보 모션 벡터에 대한 이러한 디폴트 모션 벡터 정보는 참조 프레임이 인트라-코딩되었는지 여부에 따라서 재구성될 수도 있다. 참조 프레임이 인트라-코딩되는 것으로 결정되는 경우, 모션 보상 유닛 (72) 은 현재의 부분이 현재의 프레임 내에 있는 것과 동일한 참조 프레임의 위치에서 동일 위치에 배치된 참조 프레임의 부분에 대해 결정된 공간 모션 벡터들에 기초하여, 디폴트 후보 모션 벡터에 대한 디폴트 모션 벡터 정보를 도출할 수도 있다. 이와 유사하게, 시간적으로 예측된 공간 후보 모션 벡터들 중 하나 이상이 이용가능하지 않거나 또는 손실될 수도 있으며, 현재의 부분이 현재의 프레임 내에 있는 것과 동일한 참조 프레임의 위치에서 동일 위치에 배치된 참조 프레임의 부분에 대해 결정된 공간 모션 벡터들에 기초하여 디폴트 후보 모션 벡터에 대한 디폴트 모션 벡터 정보를 도출할 수도 있다.
위에서 언급한 바와 같이, 2개의 모션 벡터 예측의 유형들, 즉 병합 모드 및 AMVP 가 존재한다. 병합 모드에 대해, 모션 보상 유닛 (72) 은 디폴트 모션 정보를 결정할 때 모션 벡터 크기, 예측 방향 및 참조 인덱스를 결정한다. AMVP 에 대해, 모션 보상 유닛 (72) 은 모션 벡터 크기를 결정하지만, 이들이 현재의 PU 에 대한 비트스트림에서 따로 시그널링되기 때문에, 예측 방향 및 참조 인덱스를 결정할 필요는 없다. 따라서, 모션 보상 유닛 (72) 은 모션 벡터 예측을 수행하기 위해 시그널링된 모드, 즉, 시그널링된 모션 벡터 예측의 유형이 현재의 PU에 대한 병합 모드인지 또는 AMVP 인지 여부에 기초하여, 디폴트 모션 정보의 결정을 할 수도 있다.
도 4 는 본 개시물에 기재된 모션 벡터 예측 기법들의 양태들을 수행하는데 있어서, 도 2의 예에 나타낸 비디오 인코더 (20) 및/또는 도 3의 예에 나타낸 비디오 디코더 (30) 와 같은 비디오 코더의 예시적인 동작을 도시하는 플로우 차트이다. 초기에, 먼저 비디오 인코더 (20) 를 참조하면, 모션 추정 유닛 (42) 은, 위에 기재된 바와 같이, 현재의 CU 에 대응하는 현재의 PU 에 대한 공간적 후보 모션 벡터들을 결정할 수도 있다 (90). 다음, 모션 추정 유닛 (42) 은 위에 기재된 바와 같이, 참조 프레임에서 동일 위치에 배치된 PU로부터 현재의 PU에 대해 시간적 후보 모션 벡터를 결정할 수도 있다 (92). 공간적 후보 모션 벡터들 및 시간적 후보 모션 벡터 중 어느 하나 또는 양자를 결정함에 있어서, 모션 추정 유닛 (42) 은 위에 기재된 방식으로 후보 모션 벡터들 중 하나 이상을 스케일링할 수도 있다 (94). 부가적으로, 모션 추정 유닛 (42) 은 위에 기재된 바와 같이 스케일링된 모션 벡터들 중 하나 이상을 변경할 수도 있다 (95).
하나 이상의 스케일링된 모션 벡터들을 변경한 후에, 모션 추정 유닛 (42) 은 공간적 및 시간적 후보 모션 벡터들의 후보 리스트를 형성하고 현재의 PU에 대한 MVP로서 후보 모션 벡터들 중 하나를 선택할 수도 있다 (96, 98). 이러한 선택은, 위에서 언급된 바와 같이, RDO 분석을 수행하는 비디오 인코더 (20) 를 수반할 수도 있으며, 여기서 후보 모션 벡터들 중 선택된 후보 모션 벡터가 그 후 위에 기재된 방식으로 비디오 데이터의 블록을 코딩하기 위해 이용된다. 엔트로피 인코딩 유닛 (56) 은 비트스트림에서 모션 벡터 예측자 인덱스 (mvp_idx) 로서 후보 모션 벡터들 중 선택된 후보 모션 벡터를 특정할 수도 있고, 이로써 비디오 디코더가 후보 모션 벡터들 중 선택된 후보 모션 벡터를 식별하는 것을 가능하게 한다.
비디오 디코더 (30) 에 관하여, 모션 보상 유닛 (72) 은 모션 추정 유닛 (42) 에 관하여 위에 기재된 것과 유사한 동작들을 수행할 수도 있다. 즉, 모션 보상 유닛 (72) 은, 위에 기재된 바와 같이, 현재의 CU 에 대응하는 현재의 PU에 대한 공간적 후보 모션 벡터들을 결정할 수도 있다 (90). 다음, 모션 보상 유닛 (72) 은, 다시, 위에 기재된 바와 같이, 참조 프레임에서 동일 위치에 배치된 PU로부터 현재의 PU에 대한 시간적 후보 모션 벡터를 결정할 수도 있다 (92). 공간적 후보 모션 벡터들 및 시간적 후보 모션 벡터 중 어느 하나 또는 양자를 결정하는데 있어서, 모션 보상 유닛 (72) 은 위에 기재된 방식으로 후보 모션 벡터들 중 하나 이상을 스케일링할 수도 있다 (94). 부가적으로, 모션 보상 유닛 (72) 은, 위에 기재된 바와 같이, 스케일링된 모션 벡터들 중 하나 이상을 특정 범위 이내가 되도록 변경할 수도 있다 (95).
하나 이상의 스케일링된 모션 벡터들을 변경한 후에, 모션 보상 유닛 (72) 은 공간적 및 시간적 후보 모션 벡터들을 형성하고 현재의 PU에 대한 MVP로서 후보 모션 벡터들 중 하나를 선택할 수도 있다 (96, 98). 엔트로피 디코딩 유닛 (70) 은 비트스트림으로부터 모션 벡터 예측자 인덱스 (mvp_idx) 를 파싱하고, 현재의 PU 에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하는데 이용하기 위해 모션 보상 유닛 (72) 에 이 모션 벡터 예측자 인덱스를 제공할 수도 있다.
도 5는 본 개시물에 기재된 모션 벡터 예측 기법들의 다른 양태들을 수행하는데 있어서, 도 2의 예에 나타낸 비디오 인코더 (20) 및/또는 도 3의 예에 나타낸 비디오 디코더 (30) 와 같은 비디오 코더의 예시적인 동작을 도시하는 플로우 차트이다. 초기에, 먼저, 비디오 인코더 (20) 를 참조하면, 모션 추정 유닛 (42) 은, 위에 기재된 바와 같이, 현재의 CU 에 대응하는 현재의 PU 에 대한 공간적 후보 모션 벡터들을 결정할 수도 있다 (100). 다음, 모션 추정 유닛 (42) 은, 다시, 위에 기재된 바와 같이, 참조 프레임에서 동일 위치에 배치된 PU로부터 현재의 PU에 대해 시간적 후보 모션 벡터를 결정할 수도 있다 (102). 공간적 후보 모션 벡터들 및 시간적 후보 모션 벡터 중 어느 하나 또는 양자를 결정함에 있어서, 모션 추정 유닛 (42) 은 위에 기재된 방식으로 후보 모션 벡터들 중 하나 이상을 스케일링할 수도 있다 (104).
다음, 모션 추정 유닛 (42) 은 공간적 및 시간적 후보 모션 벡터들의 후보 리스트를 형성하고, 현재의 PU 에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택할 수도 있다 (106, 108). 이러한 선택은, 위에 언급된 바와 같이, RDO 분석을 수행하는 비디오 인코더 (20) 를 수반할 수도 있으며, 여기서 후보 모션 벡터들 중 선택된 후보 모션 벡터가 그 후 위에 기재된 방식으로 비디오 데이터의 블록을 코딩하기 위해 이용된다. 이러한 RDO 분석을 수행하기 전에, 모션 추정 유닛 (42) 이 먼저 후보 모션 벡터들 중 선택된 후보 모션 벡터가 스케일링되었는지 여부를 결정할 수도 있다 (109). 스케일링되지 않았다면 ("아니오" 109), 모션 추정 유닛 (42) 은 후보 모션 벡터들 중 현재의 후보 모션 벡터를 고려하여 임의의 부가 동작들을 수행하지 않을 수도 있다. 하지만, 스케일링되었다면 ("예" 109), 모션 추정 유닛 (42) 은 위에 기재된 방식으로 후보 모션 벡터들 중 선택된 후보 모션 벡터를 특정 범위 이내가 되도록 변경할 수도 있다 (110). 위에서 언급된 바와 같이, 엔트로피 인코딩 유닛 (56) 은 비트스트림에서 모션 벡터 예측자 인덱스 (mvp_idx) 로서 후보 모션 벡터들 중 선택된 후보 모션 벡터를 특정할 수도 있으며, 이에 의해 비디오 디코더가 후보 모션 벡터들 중 선택된 후보 모션 벡터를 식별하는 것을 가능하게 한다.
비디오 디코더 (30) 에 관하여, 모션 보상 유닛 (72) 은, 위에 기재된 바와 같이, 현재의 CU에 대응하는 현재의 PU에 대해 공간적 후보 모션 벡터들을 결정할 수도 있다 (100). 다음, 모션 보상 유닛 (72) 은, 다시, 위에 기재된 바와 같이, 참조 프레임에서 동일 위치에 배치된 PU로부터 현재의 PU 에 대한 시간적 후보 모션 벡터를 결정할 수도 있다 (102). 공간적 후보 모션 벡터들 및 시간적 후보 모션 벡터 중 어느 하나 또는 양자를 결정하는데 있어서, 모션 보상 유닛 (72) 은 위에 기재된 방식으로 후보 모션 벡터들 중 하나 이상을 스케일링할 수도 있다 (104).
다음, 모션 보상 유닛 (72) 은 공간 및 시간적 후보 모션 벡터들의 후보 리스트를 형성하고 현재의 PU 에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택할 수도 있다 (106, 108). 후보 모션 벡터들 중 하나를 선택하기 위해, 엔트로피 디코딩 유닛 (70) 은 비트스트림으로부터 모션 벡터 예측 인덱스 (mvp_idx) 를 파싱하고, 이러한 모션 벡터 예측자 인덱스를 현재의 PU 에 대한 MVP 로서 후보 모션 벡터들 중 하나를 선택하는데 이용하기 위해 모션 보상 유닛 (72) 에 제공할 수도 있다. 모션 보상 유닛 (72) 은 그 후 후보 모션 벡터들 중 선택된 후보 모션 벡터가 스케일링되었는지 여부를 결정할 수도 있다 (109). 스케일링되지 않았다면 ("아니오" 109), 모션 보상 유닛 (72) 은 후보 모션 벡터들 중 현재의 하나를 고려하여 임의의 부가 동작들을 수행하지 않을 수도 있다. 하지만, 스케일링 되었다면 ("예" 109), 모션 보상 유닛 (72) 은 위에 기재된 방식으로 후보 모션 벡터들 중 선택된 후보 모션 벡터를 특정 범위 이내가 되도록 변경할 수도 있다 (110).
도 6은 모션 벡터 예측자 후보들이 모션 벡터 예측 모드들에 대해 생성되는 공간적 및 시간적으로 이웃하는 블록들을 도시하는 개념도이다. 현재의 HEVC 테스트 모델 (HM) 에서, 2개의 모션 벡터 예측 모드들이 지원된다: 병합 모드 및 적응형 모션 벡터 예측 (AMVP) 모드. 어느 하나의 모드에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각이 현재의 비디오 블록 또는 PU (112) 에 대해 모션 벡터를 결정하는 동일한 모션 벡터 예측자 후보 리스트를 생성한다. 병합 모드 및 AMVP 모드에서 모션 벡터 예측자 후보들은, 현재의 PU (112) 의 공간적으로 이웃하는 블록들, 예를 들어 도 6에 도시된 이웃하는 블록들 (A, B, C, D 및 E) 에 대한 모션 벡터들을 포함할 수도 있다. 모션 벡터 예측자 후보들은 또한 현재의 PU (112) 의 동일 위치에 배치된 블록 (114) 의 시간적으로 이웃하는 블록들, 예를 들어 도 4에 도시된 이웃하는 블록들 (T1 및 T2) 를 포함할 수도 있다. 일부 경우, 모션 벡터 예측자 후보들은 2 이상의 이웃하는 블록들에 대한 모션 벡터들의 조합들, 예를 들어 2 이상의 모션 벡터들의 평균, 메디안 또는 가중화 평균을 포함할 수도 있다.
AMVP 모드의 경우, 모션 벡터 예측자 후보 리스트는 공간적 또는 시간적으로 이웃하는 블록들에 대한 모션 벡터들을 포함하도록 생성될 수도 있다. 비디오 인코더 (20) 는 그 후 후보 리스트로부터 현재 PU (112) 에 대한 가장 정확한 모션 벡터 예측자 후보를 선택한다. 일 예에서, 비디오 인코더 (20) 는 현재의 PU (112) 에 대한 모션 벡터 예측자로서 이웃하는 블록들 중 하나의 이웃하는 블록의 모션 벡터로부터 생성된 모션 벡터 예측자 후보를 선택할 수도 있다. 또 다른 예에서, 비디오 인코더 (20) 는 현재의 PU (112) 에 대한 모션 벡터 예측자로서 이웃하는 블록들 중 2 이상의 이웃하는 블록의 모션 벡터들로부터 생성된 모션 벡터 예측자 후보를 선택할 수도 있다. 이 경우, 모션 벡터 예측자는 2 이상의 모션 벡터들의 평균, 메디안, 또는 가중화 평균으로서 계산될 수도 있다. 비디오 인코더 (20) 는 그 후 현재의 PU (112) 에 대한 모션 벡터와 모션 벡터 예측자 사이의 모션 벡터 차이를 결정한다. 비디오 인코더 (20) 는 그 후 현재의 PU (112) 에 대한 모션 벡터 예측자 인덱스 및 모션 벡터 차이를 비디오 디코더 (30) 로 시그널링한다.
비디오 디코더 (30) 는 비디오 블록에 대한 모션 벡터 예측자 인덱스들 및 모션 벡터 차이들을 포함하는 인코딩된 비디오 블록을 나타내는 비트스트림을 수신한다. 비디오 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 비디오 인코더 (20) 와 동일한 방식으로 모션 벡터 예측자 후보 리스트를 생성한다. 비디오 디코더 (30) 는 현재의 PU (112) 에 대한 시그널링된 모션 벡터 예측자 인덱스를 후보 리스트에 적용함으로써 현재의 PU (112) 에 대한 모션 벡터 예측자를 선택한다. 비디오 디코더 (30) 는 그 후 선택된 모션 벡터 예측자와 시그널링된 모션 벡터 차이를 결합하여 현재의 PU (112) 에 대한 모션 벡터를 재구성한다. 비디오 디코더 (30) 는 현재의 PU (112) 에 대한 모션 벡터를 사용하여 참조 화상에 예측 블록을 위치시켜 인코딩된 비디오 블록을 재구성한다.
병합 모드의 경우, 모션 벡터 예측자 후보 리스트는, 공간적 또는 시간적으로 이웃하는 블록들 각각에 대하여, 모션 벡터, 참조 화상 인덱스 및 예측 방향을 포함하는 모든 모션 정보를 포함하도록 생성될 수도 있다. 비디오 인코더 (20) 는 그 후 후보 리스트에서 이웃하는 블록들로부터 현재의 PU (112) 에 대한 가장 정확한 모션 정보를 선택한다. 현재의 PU (112) 에 대한 모션 벡터 차이, 참조 화상 인덱스 및 예측 방향을 비디오 디코더 (30) 에 시그널링하는 대신, 비디오 인코더 (20) 는 현재의 PU (112) 에 대한 최종 모션 정보로서 이웃하는 블록들에 대해 선택된 모션 정보를 바로 이용한다. 이러한 방식으로, 비디오 인코더 (20) 는, 모든 모션 정보가 현재의 PU (112) 에 대해 도출되어야 하는 이웃하는 블록을 나타내는 인덱스만을 비디오 디코더 (30) 에 시그널링한다.
비디오 디코더 (30) 는 비디오 블록에 대한 인덱스 값들을 포함하는 인코딩된 비디오 블록을 나타내는 비트스트림을 수신한다. 비디오 블록을 디코딩하기 위해, 비디오 디코더 (30) 는 비디오 인코더 (20) 와 동일한 방식으로 모션 벡터 예측자 후보 리스트를 생성한다. 비디오 디코더 (30) 는, 이웃하는 블록의 모션 정보를 선택하기 위해, 시그널링된 인덱스를 후보 리스트에 적용함으로써, 현재의 PU (112) 에 대한 모션 벡터, 참조 화상 인덱스 및 예측 방향을 포함하는 모든 모션 정보를 결정한다. 비디오 디코더 (30) 는 그 후 현재의 PU (112) 에 대한 모션 벡터를 이용하여 인코딩된 비디오 블록을 재구성하도록 예측 블록을 위치시킨다.
하나 이상의 예들에서, 기재된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 송신될 수도 있다. 컴퓨터 판독가능 매체는 하나의 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 매체 또는 컴퓨터 데이터 저장 매체를 포함할 수도 있다. 데이터 저장 매체는 본 개시물에 기재된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 제한이 아닌 일 예로서, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 전달하거나 또는 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 지칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 매체의 정의에는, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들이 포함된다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용한 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 들은 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 앞에서 언급한 것들의 조합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
코드는 하나 이상의 디지털 신호 프로세서 (DSP) 들, 범용 마이크로프로세서들, 주문형 집적회로 (ASIC) 들, 필드 프로그래밍가능 로직 어레이 (FPGA) 들, 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 “프로세서" 는, 본원에서 사용한 바와 같이, 전술한 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능성은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시된 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 여러 컴포넌트들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 더 정확히 말하면, 위에서 설명한 바와 같이, 여러 유닛들이 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호작용하는 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
여러 예들이 기술되었다. 이들 및 다른 예들은 다음 청구항들의 범위 내에 있다.

Claims (49)

  1. 비디오 데이터를 코딩하는 방법으로서,
    모션 벡터 예측 프로세스를 수행하기 위해서, 상기 비디오 데이터의 현재의 화상의 현재의 블록에 대해 복수의 후보 모션 벡터들을 상기 현재의 블록과 공간적으로 이웃하는 블록들 및 상기 현재의 블록과 시간적으로 동일 위치에 배치된 블록의 결정된 모션 벡터들에 기초하여 결정하는 단계;
    상기 현재의 화상과 관련된 화상 순서 카운트 값에 기초하여, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하는 단계;
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 클리핑하는 단계로서, 상기 특정 범위는 1/4 픽셀 유닛들에서 [-32768, 32767] 이고, 상기 복수의 후보 모션 벡터들이 상기 클리핑되고 스케일링된 후보 모션 벡터들을 포함하는, 상기 클리핑하는 단계;
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑한 이후에, 상기 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 선택하는 단계; 및
    상기 비디오 데이터의 현재의 블록을 모션 벡터 예측자에 기초하여 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계는, 스케일링되지 않은 다른 후보 모션 벡터들의 어느 것도 클리핑하지 않으면서 상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 모션 벡터 예측 프로세스는 병합 모드 및 어드밴스드 모션 벡터 예측 모드 중 하나인, 비디오 데이터를 코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 특정 범위는 비디오 코딩 프로파일 또는 레벨에 의해 정의되는, 비디오 데이터를 코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 특정 범위는 비디오 디코더 및 비디오 인코더 중 하나 이상에서 고정되고 하드 코딩되는, 비디오 데이터를 코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계는:
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분을 수직 특정 범위 이내가 되도록 클리핑하는 단계; 및
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분을 수평 특정 범위 이내가 되도록 클리핑하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 특정 범위는 수직 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 스케일링된 후보 모션 벡터들은 상기 수직 변위 제한을 너머 연장하며, 그리고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계는, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분이 상기 수직 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수직 성분을 클리핑하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 특정 범위는 수평 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 스케일링된 후보 모션 벡터들은 상기 수평 변위 제한을 너머 연장하며,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계는, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분이 상기 수평 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수평 성분을 클리핑하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 단계는, 상기 하나 이상의 스케일링된 후보 모션 벡터들이 하나 이상의 모션 벡터 변위 제한들에 의해 경계가 지워지도록 상기 하나 이상의 스케일링된 후보 모션 벡터들을 스케일링하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 비디오 데이터의 현재의 블록들에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터에 기초하여 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하는 단계를 더 포함하고, 결정된 상기 모션 벡터는 비디오 데이터의 예측 블록을 식별하며,
    상기 비디오 데이터의 현재의 블록을 코딩하는 단계는, 상기 비디오 데이터의 예측 블록에 관하여 상기 비디오 데이터의 현재의 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터에 기초하여 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하는 단계를 더 포함하고, 결정된 상기 모션 벡터는 비디오 데이터의 예측 블록을 식별하며,
    상기 비디오 데이터의 현재의 블록을 코딩하는 단계는, 상기 비디오 데이터의 예측 블록에 관하여 상기 비디오 데이터의 현재의 블록을 인코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  13. 제 1 항에 있어서,
    상기 모션 벡터 예측 프로세스의 어드밴스드 모션 벡터 예측 모드를 수행하도록 상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터를 식별하기 위해 모션 벡터 예측자 인덱스를 디코딩하는 단계; 및
    상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하기 위해 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터와 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터 사이의 모션 벡터 차이를 디코딩하는 단계를 더 포함하고,
    상기 비디오 데이터의 현재의 블록을 코딩하는 단계는, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 모션 벡터를 이용하여 상기 비디오 데이터의 현재의 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  14. 제 1 항에 있어서,
    상기 모션 벡터 예측 프로세스의 병합 모드를 수행하도록 상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보며션 벡터를 식별하기 위해 인덱스를 디코딩하는 단계; 및
    상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터와 동등하게 되도록 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하는 단계를 더 포함하고,
    상기 비디오 데이터의 현재의 블록을 코딩하는 단계는, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 모션 벡터를 이용하여 상기 비디오 데이터의 현재의 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  15. 비디오 데이터를 코딩하기 위해 모션 벡터 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스로서, 상기 비디오 코딩 디바이스는,
    상기 비디오 데이터의 현재의 블록을 저장하도록 구성된 메모리; 및
    상기 모션 벡터 예측 프로세스를 수행하기 위해서, 상기 비디오 데이터의 현재의 화상의 상기 현재의 블록에 대해 복수의 후보 모션 벡터들을 상기 현재의 블록과 공간적으로 이웃하는 블록들 및 상기 현재의 블록과 시간적으로 동일 위치에 배치된 블록의 결정된 모션 벡터들에 기초하여 결정하고,
    상기 현재의 화상과 관련된 화상 순서 카운트 값에 기초하여, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 클리핑하는 것으로서, 상기 특정 범위는 1/4 픽셀 유닛들에서 [-32768, 32767] 이고, 상기 복수의 후보 모션 벡터들이 상기 클리핑되고 스케일링된 후보 모션 벡터들을 포함하도록, 상기 스케일링된 후보 모션 벡터들을 클리핑하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑한 이후에, 상기 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 선택하며,
    상기 비디오 데이터의 현재의 블록을 모션 벡터 예측자에 기초하여 코딩하도록
    구성된 프로세서를 포함하는, 비디오 코딩 디바이스.
  16. 제 15 항에 있어서,
    상기 프로세서는, 스케일링되지 않은 다른 후보 모션 벡터들의 어느 것도 클리핑하지 않으면서 상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하도록 구성되는, 비디오 코딩 디바이스.
  17. 삭제
  18. 제 15 항에 있어서,
    상기 모션 벡터 예측 프로세스는 병합 모드 및 어드밴스드 모션 벡터 예측 모드 중 하나인, 비디오 코딩 디바이스.
  19. 제 15 항에 있어서,
    상기 특정 범위는 비디오 코딩 프로파일 또는 레벨에 의해 정의되는, 비디오 코딩 디바이스.
  20. 제 15 항에 있어서,
    상기 특정 범위는 비디오 디코더 및 비디오 인코더 중 하나 이상에서 고정되고 하드 코딩되는, 비디오 코딩 디바이스.
  21. 제 15 항에 있어서,
    상기 프로세서는, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분을 수직 특정 범위 이내가 되도록 클리핑하고, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분을 수평 특정 범위 이내가 되도록 클리핑하도록 구성되는, 비디오 코딩 디바이스.
  22. 제 15 항에 있어서,
    상기 특정 범위는 수직 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들은 상기 수직 변위 제한을 너머 연장하며, 그리고,
    상기 프로세서는, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분이 상기 수직 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수직 성분을 클리핑하도록 구성되는, 비디오 코딩 디바이스.
  23. 제 15 항에 있어서,
    상기 특정 범위는 수평 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들이 상기 수평 변위 제한을 너머 연장하며,
    상기 프로세서는, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분이 상기 수평 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수평 성분을 클리핑하도록 구성되는, 비디오 코딩 디바이스.
  24. 제 15 항에 있어서,
    상기 프로세서는, 상기 하나 이상의 스케일링된 후보 모션 벡터들이 하나 이상의 모션 벡터 변위 제한들에 의해 경계가 지어지도록 상기 하나 이상의 스케일링된 후보 모션 벡터들을 스케일링하도록 구성되는, 비디오 코딩 디바이스.
  25. 제 15 항에 있어서,
    상기 프로세서는, 또한, 상기 비디오 데이터의 현재의 블록에 대한 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터에 기초하여 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하도록 구성되고,
    결정된 상기 모션 벡터는 비디오 데이터의 예측 블록을 식별하며, 그리고
    상기 프로세서는, 또한, 상기 비디오 데이터의 현재의 블록을 코딩할 때, 상기 비디오 데이터의 예측 블록에 관하여 상기 비디오 데이터의 현재의 블록을 디코딩하도록 구성되는, 비디오 코딩 디바이스.
  26. 제 15 항에 있어서,
    상기 프로세서는, 또한, 상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터에 기초하여 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하도록 구성되고,
    결정된 상기 모션 벡터는 비디오 데이터의 예측 블록을 식별하며, 그리고
    상기 프로세서는, 또한, 상기 비디오 데이터의 현재의 블록을 코딩할 때, 상기 비디오 데이터의 예측 블록에 관하여 상기 비디오 데이터의 현재의 블록을 인코딩하도록 구성되는, 비디오 코딩 디바이스.
  27. 제 15 항에 있어서,
    상기 프로세서는, 또한, 상기 모션 벡터 예측 프로세스의 어드밴스드 모션 벡터 예측 모드를 수행하도록 상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터를 식별하기 위해 모션 벡터 예측자 인덱스를 디코딩하고,
    상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하기 위해 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터와 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터 사이의 모션 벡터 차이를 디코딩하고, 그리고
    상기 비디오 데이터의 현재의 블록을 코딩할 때, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 모션 벡터를 이용하여 상기 비디오 데이터의 현재의 블록을 디코딩하도록 구성되는, 비디오 코딩 디바이스.
  28. 제 15 항에 있어서,
    상기 프로세서는, 또한, 상기 모션 벡터 예측 프로세스의 병합 모드를 수행하도록 상기 비디오 데이터의 현재의 블록에 대해 상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터를 식별하기 위해 인덱스를 디코딩하고,
    상기 복수의 후보 모션 벡터들 중 선택된 후보모션 벡터와 동등하게 되도록 상기 비디오 데이터의 현재의 블록에 대해 모션 벡터를 결정하며, 그리고
    상기 비디오 데이터의 현재의 블록을 코딩할 때, 상기 비디오 데이터의 현재의 블록에 대해 결정된 모션 벡터를 이용하여 상기 비디오 데이터의 현재의 블록을 디코딩하도록 구성되는, 비디오 코딩 디바이스.
  29. 비디오 데이터를 코딩하기 위해 모션 벡터 예측 프로세스를 수행하도록 구성된 비디오 코딩 디바이스로서,
    상기 모션 벡터 예측 프로세스를 수행하기 위해서, 상기 비디오 데이터의 현재의 화상의 현재의 블록에 대해 복수의 후보 모션 벡터들을 상기 현재의 블록과 공간적으로 이웃하는 블록들 및 상기 현재의 블록과 시간적으로 동일 위치에 배치된 블록의 결정된 모션 벡터들에 기초하여 결정하는 수단;
    상기 현재의 화상과 관련된 화상 순서 카운트 값에 기초하여, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하는 수단;
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 클리핑하는 수단으로서, 상기 특정 범위는 1/4 픽셀 유닛들에서 [-32768, 32767] 이고, 상기 복수의 후보 모션 벡터들이 상기 클리핑되고 스케일링된 후보 모션 벡터들을 포함하는, 상기 클리핑하는 수단;
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑한 이후에, 상기 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 선택하는 수단; 및
    상기 비디오 데이터의 현재의 블록을 모션 벡터 예측자에 기초하여 코딩하는 수단을 포함하는, 비디오 코딩 디바이스.
  30. 제 29 항에 있어서,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 수단은, 스케일링되지 않은 다른 후보 모션 벡터들의 어느 것도 클리핑하지 않으면서 상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 수단을 포함하는, 비디오 코딩 디바이스.
  31. 삭제
  32. 제 29 항에 있어서,
    상기 특정 범위는 비디오 코딩 프로파일 또는 레벨에 의해 정의되는, 비디오 코딩 디바이스.
  33. 제 29 항에 있어서,
    상기 특정 범위는 비디오 디코더 및 비디오 인코더 중 하나 이상에서 고정되고 하드 코딩되는, 비디오 코딩 디바이스.
  34. 제 29 항에 있어서,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 수단은:
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분을 수직 특정 범위 이내가 되도록 클리핑하는 수단; 및
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분을 수평 특정 범위 이내가 되도록 클리핑하는 수단을 포함하는, 비디오 코딩 디바이스.
  35. 제 29 항에 있어서,
    상기 특정 범위는 수직 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들은 상기 수직 변위 제한을 너머 연장하며,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 수단은, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분이 상기 수직 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수직 성분을 클리핑하는 수단을 더 포함하는, 비디오 코딩 디바이스.
  36. 제 29 항에 있어서,
    상기 특정 범위는 수평 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들은 상기 수평 변위 제한을 너머 연장하며,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하는 수단은, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분이 상기 수평 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수평 성분을 클리핑하는 수단을 더 포함하는, 비디오 코딩 디바이스.
  37. 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금:
    모션 벡터 예측 프로세스를 수행하기 위해서, 비디오 데이터의 현재의 화상의 현재의 블록에 대해 복수의 후보 모션 벡터들을 상기 현재의 블록과 공간적으로 이웃하는 블록들 및 상기 현재의 블록과 시간적으로 동일 위치에 배치된 블록의 결정된 모션 벡터들에 기초하여 결정하게 하고,
    상기 현재의 화상과 관련된 화상 순서 카운트 값에 기초하여, 상기 비디오 데이터의 현재의 블록에 대해 결정된 상기 복수의 후보 모션 벡터들 중 하나 이상을 스케일링하여 하나 이상의 스케일링된 후보 모션 벡터들을 생성하게 하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 특정 범위 이내가 되도록 클리핑하게 하는 것으로서, 상기 특정 범위는 1/4 픽셀 유닛들에서 [-32768, 32767] 이고, 상기 복수의 후보 모션 벡터들이 상기 클리핑되고 스케일링된 후보 모션 벡터들을 포함하도록, 상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하게 하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑한 이후에, 상기 복수의 후보 모션 벡터들 중 하나의 후보 모션 벡터를 상기 비디오 데이터의 현재의 블록에 대한 모션 벡터 예측자로서 선택하게 하며, 그리고
    상기 비디오 데이터의 현재의 블록을 모션 벡터 예측자에 기초하여 코딩하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  38. 제 37 항에 있어서,
    상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금, 스케일링되지 않은 다른 후보 모션 벡터들의 어느 것도 클리핑하지 않으면서 상기 하나 이상의 스케일링된 후보 모션 벡터들을 클리핑하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  39. 삭제
  40. 삭제
  41. 제 37 항에 있어서,
    상기 특정 범위는 비디오 코딩 프로파일 또는 레벨에 의해 정의되는, 비일시적 컴퓨터 판독가능 저장 매체.
  42. 제 37 항에 있어서,
    상기 특정 범위는 비디오 디코더 및 비디오 인코더 중 하나 이상에서 고정되고 하드 코딩되는, 비일시적 컴퓨터 판독가능 저장 매체.
  43. 제 37 항에 있어서,
    상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금:
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분을 수직 특정 범위 이내가 되도록 클리핑하게 하고; 그리고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분을 수평 특정 범위 이내가 되도록 클리핑하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  44. 제 37 항에 있어서,
    상기 특정 범위는 수직 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들은 상기 수직 변위 제한을 너머 연장하며,
    상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수직 성분이 상기 수직 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수직 성분을 클리핑하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  45. 제 37 항에 있어서,
    상기 특정 범위는 수평 변위 제한을 포함하는 모션 벡터 변위 제한을 특정하고,
    상기 하나 이상의 스케일링된 후보 모션 벡터들은 상기 수평 변위 제한을 너머 연장하며,
    상기 명령들은, 실행될 때, 상기 하나 이상의 프로세서들로 하여금, 상기 하나 이상의 스케일링된 후보 모션 벡터들의 수평 성분이 상기 수평 변위 제한 이내가 되도록 상기 하나 이상의 스케일링된 후보 모션 벡터들의 상기 수평 성분을 클리핑하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
KR1020147020150A 2011-12-22 2012-12-11 비디오 코딩을 위한 모션 벡터 예측의 수행 KR102057350B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161579465P 2011-12-22 2011-12-22
US61/579,465 2011-12-22
US201261584096P 2012-01-06 2012-01-06
US61/584,096 2012-01-06
US13/709,555 US9762904B2 (en) 2011-12-22 2012-12-10 Performing motion vector prediction for video coding
US13/709,555 2012-12-10
PCT/US2012/069000 WO2013096018A1 (en) 2011-12-22 2012-12-11 Performing motion vector prediction for video coding

Publications (2)

Publication Number Publication Date
KR20140110957A KR20140110957A (ko) 2014-09-17
KR102057350B1 true KR102057350B1 (ko) 2019-12-18

Family

ID=48654534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147020150A KR102057350B1 (ko) 2011-12-22 2012-12-11 비디오 코딩을 위한 모션 벡터 예측의 수행

Country Status (18)

Country Link
US (1) US9762904B2 (ko)
EP (1) EP2795900A1 (ko)
JP (2) JP2015506606A (ko)
KR (1) KR102057350B1 (ko)
CN (1) CN104012096A (ko)
AU (1) AU2012355669B2 (ko)
BR (1) BR112014015056B1 (ko)
CA (1) CA2858979C (ko)
HK (1) HK1197330A1 (ko)
IL (1) IL232776A (ko)
IN (1) IN2014CN04420A (ko)
MY (1) MY167467A (ko)
PH (1) PH12014501244A1 (ko)
RU (1) RU2573227C1 (ko)
SG (2) SG10201605087YA (ko)
TW (1) TWI535269B (ko)
UA (1) UA114617C2 (ko)
WO (1) WO2013096018A1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9510009B2 (en) * 2010-05-20 2016-11-29 Thomson Licensing Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding
CN107197272B (zh) 2011-08-29 2019-12-06 苗太平洋控股有限公司 以合并模式对图像编码的方法
KR102211673B1 (ko) * 2011-12-16 2021-02-03 벨로스 미디어 인터내셔널 리미티드 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및 동화상 부호화 복호장치
CN110650336B (zh) * 2012-01-18 2022-11-29 韩国电子通信研究院 视频解码装置、视频编码装置和传输比特流的方法
US20130235926A1 (en) * 2012-03-07 2013-09-12 Broadcom Corporation Memory efficient video parameter processing
KR101682999B1 (ko) * 2012-04-16 2016-12-20 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
US9313021B2 (en) * 2013-08-29 2016-04-12 National Chiao Tung University Secret communication method with self-authentication capability
WO2015054811A1 (en) 2013-10-14 2015-04-23 Microsoft Corporation Features of intra block copy prediction mode for video and image coding and decoding
WO2015054812A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
US10382752B2 (en) * 2013-10-15 2019-08-13 Sony Corporation Image processing device and method
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
MX360926B (es) 2014-01-03 2018-11-22 Microsoft Technology Licensing Llc Prediccion de vector de bloque en codificacion/descodificacion de video e imagen.
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
EP3253059A1 (en) 2014-03-04 2017-12-06 Microsoft Technology Licensing, LLC Block flipping and skip mode in intra block copy prediction
EP3158734A4 (en) 2014-06-19 2017-04-26 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US10856009B2 (en) 2014-09-04 2020-12-01 Mediatek Inc. Method of block vector clipping and coding for screen content coding and video coding
KR102330740B1 (ko) 2014-09-30 2021-11-23 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙
US9992512B2 (en) * 2014-10-06 2018-06-05 Mediatek Inc. Method and apparatus for motion vector predictor derivation
CN106797475B (zh) * 2014-10-08 2019-12-10 联发科技股份有限公司 视频编码方法
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
US10873760B2 (en) * 2017-04-07 2020-12-22 Futurewei Technologies, Inc. Motion vector (MV) constraints and transformation constraints in video coding
EP3616406B1 (en) * 2017-05-18 2024-03-20 HFI Innovation Inc. Method and apparatus of motion vector constraint for video coding
EP3410717A1 (en) * 2017-05-31 2018-12-05 Thomson Licensing Methods and apparatus for candidate list pruning
US10785494B2 (en) * 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
WO2019077197A1 (en) * 2017-10-16 2019-04-25 Nokia Technologies Oy METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR VIDEO ENCODING AND DECODING
CN117354538A (zh) * 2017-10-27 2024-01-05 松下电器(美国)知识产权公司 编码装置、解码装置、生成装置、发送装置和存储介质
JP7382332B2 (ja) * 2017-11-01 2023-11-16 ヴィド スケール インコーポレイテッド マージモード用のサブブロック動き導出およびデコーダサイド動きベクトル精緻化
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
WO2019194513A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 어파인 예측을 이용하여 비디오 신호를 처리하는 방법 및 장치
WO2019199141A1 (ko) * 2018-04-13 2019-10-17 엘지전자 주식회사 비디오 코딩 시스템에서 인터 예측 방법 및 장치
CN108401115A (zh) * 2018-04-28 2018-08-14 北京心领神绘科技有限公司 一种便携图像采集终端的自动修正采集装置及方法
US10873748B2 (en) * 2018-05-12 2020-12-22 Qualcomm Incorporated Storage of high precision motion vectors in video coding
TWI719523B (zh) * 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 哪個查找表需要更新或不更新
CN110662053B (zh) 2018-06-29 2022-03-25 北京字节跳动网络技术有限公司 使用查找表的视频处理方法、装置和存储介质
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
WO2020003284A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and amvp
JP7328330B2 (ja) 2018-06-29 2023-08-16 北京字節跳動網絡技術有限公司 Lutにおける動き候補のチェック順序
KR20210025537A (ko) 2018-06-29 2021-03-09 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념
SG11202012293RA (en) 2018-06-29 2021-01-28 Beijing Bytedance Network Technology Co Ltd Update of look up table: fifo, constrained fifo
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
SG11202013172XA (en) * 2018-06-30 2021-01-28 Guangdong Oppo Mobile Telecommunications Corp Ltd Merge mode-based inter-prediction method and apparatus
CN110677669B (zh) 2018-07-02 2021-12-07 北京字节跳动网络技术有限公司 具有lic的lut
US11849132B2 (en) * 2018-09-11 2023-12-19 B1 Institute Of Image Technology, Inc. Image encoding/decoding method and apparatus using inter prediction
WO2020053800A1 (en) 2018-09-12 2020-03-19 Beijing Bytedance Network Technology Co., Ltd. How many hmvp candidates to be checked
EP3884674A4 (en) * 2018-11-21 2022-02-23 Telefonaktiebolaget Lm Ericsson (Publ) VIDEO IMAGE CODING METHODS WITH SUB-BLOCK MERGER SIMPLIFICATION AND ASSOCIATED APPARATUS
CN113273205A (zh) 2018-12-21 2021-08-17 北京字节跳动网络技术有限公司 使用更高比特深度精度的运动矢量推导
KR102648159B1 (ko) 2019-01-10 2024-03-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut 업데이트의 호출
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
JP7201906B2 (ja) * 2019-01-15 2023-01-11 日本電信電話株式会社 参照領域決定装置及びプログラム
WO2020147773A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Inserting order of motion candidates in lut
CN113615193A (zh) 2019-03-22 2021-11-05 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
CN112333450B (zh) * 2019-08-05 2023-07-14 腾讯美国有限责任公司 一种视频编解码的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008067194A (ja) * 2006-09-08 2008-03-21 Toshiba Corp フレーム補間回路、フレーム補間方法、表示装置
US20080253457A1 (en) * 2007-04-10 2008-10-16 Moore Darnell J Method and system for rate distortion optimization

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151784A (en) 1991-04-30 1992-09-29 At&T Bell Laboratories Multiple frame motion estimation
TW321748B (ko) 1994-02-23 1997-12-01 Rca Thomson Licensing Corp
DE69838281T2 (de) 1997-06-25 2008-05-15 Nippon Telegraph And Telephone Corp. Bewegungsprädiktives bildkodierungsverfahren sowie speichermedium zur speicherung des entsprechenden programms
US6862372B2 (en) 2001-12-27 2005-03-01 Koninklijke Philips Electronics N.V. System for and method of sharpness enhancement using coding information and local spatial features
US7177356B2 (en) 2002-01-11 2007-02-13 Webtv Networks, Inc. Spatially transcoding a video stream
HUP0301368A3 (en) 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
EP1671427A4 (en) 2003-10-09 2010-04-07 Thomson Licensing DIRECT MODE BYPASS METHOD FOR HAMPERING ERRORS
US20060120612A1 (en) 2004-12-08 2006-06-08 Sharath Manjunath Motion estimation techniques for video encoding
GB2431798A (en) 2005-10-31 2007-05-02 Sony Uk Ltd Motion vector selection based on integrity
WO2007114612A1 (en) 2006-03-30 2007-10-11 Lg Electronics Inc. A method and apparatus for decoding/encoding a video signal
RU2395174C1 (ru) 2006-03-30 2010-07-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для декодирования/кодирования сигнала видео
US9883202B2 (en) 2006-10-06 2018-01-30 Nxp Usa, Inc. Scaling video processing complexity based on power savings factor
US8213509B2 (en) 2006-10-06 2012-07-03 Calos Fund Limited Liability Company Video coding on parallel processing systems
JP4999859B2 (ja) 2006-10-30 2012-08-15 日本電信電話株式会社 予測参照情報生成方法、動画像符号化及び復号方法、それらの装置、及びそれらのプログラム並びにプログラムを記録した記憶媒体
US8265157B2 (en) 2007-02-07 2012-09-11 Lsi Corporation Motion vector refinement for MPEG-2 to H.264 video transcoding
US8660176B2 (en) 2008-09-26 2014-02-25 Qualcomm Incorporated Resolving geometric relationships among video data units
JP5401071B2 (ja) 2008-10-09 2014-01-29 株式会社Nttドコモ 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、動画像復号プログラム、動画像処理システムおよび動画像処理方法
US8411750B2 (en) 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
US9124898B2 (en) 2010-07-12 2015-09-01 Mediatek Inc. Method and apparatus of temporal motion vector prediction
KR102211673B1 (ko) 2011-12-16 2021-02-03 벨로스 미디어 인터내셔널 리미티드 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및 동화상 부호화 복호장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008067194A (ja) * 2006-09-08 2008-03-21 Toshiba Corp フレーム補間回路、フレーム補間方法、表示装置
US20080253457A1 (en) * 2007-04-10 2008-10-16 Moore Darnell J Method and system for rate distortion optimization

Also Published As

Publication number Publication date
SG10201605087YA (en) 2016-08-30
EP2795900A1 (en) 2014-10-29
WO2013096018A1 (en) 2013-06-27
MY167467A (en) 2018-08-29
US9762904B2 (en) 2017-09-12
KR20140110957A (ko) 2014-09-17
US20130163668A1 (en) 2013-06-27
TWI535269B (zh) 2016-05-21
JP2018050308A (ja) 2018-03-29
IL232776A (en) 2017-09-28
BR112014015056A2 (pt) 2017-06-13
IN2014CN04420A (ko) 2015-09-04
CN104012096A (zh) 2014-08-27
AU2012355669A1 (en) 2014-07-24
HK1197330A1 (en) 2015-01-09
PH12014501244B1 (en) 2014-09-15
IL232776A0 (en) 2014-07-31
CA2858979C (en) 2020-04-14
AU2012355669B2 (en) 2017-04-06
JP2015506606A (ja) 2015-03-02
RU2573227C1 (ru) 2016-01-20
PH12014501244A1 (en) 2014-09-15
BR112014015056B1 (pt) 2022-07-12
UA114617C2 (uk) 2017-07-10
SG11201402601SA (en) 2014-08-28
TW201334552A (zh) 2013-08-16
CA2858979A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
KR102057350B1 (ko) 비디오 코딩을 위한 모션 벡터 예측의 수행
US11838548B2 (en) Video coding using mapped transforms and scanning modes
US11166016B2 (en) Most probable transform for intra prediction coding
CN110393010B (zh) 视频译码中的帧内滤波旗标
US9008175B2 (en) Intra smoothing filter for video coding
JP6054552B2 (ja) 縮小された記憶域を伴うイントラ予測モード決定
US9247254B2 (en) Non-square transforms in intra-prediction video coding
KR101574866B1 (ko) 비디오 코딩을 위한 모션 벡터 예측의 수행
CN113612997A (zh) 针对视频译码使用与位置相关的预测组合的改进视频帧内预测
KR20120126108A (ko) 비디오 코딩을 위한 적응적 모션 분해능
KR20140016983A (ko) 비디오 코딩을 위한 런-모드 기반 계수 코딩

Legal Events

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