KR101387255B1 - 비디오 코딩을 위한 적응적 모션 분해능 - Google Patents

비디오 코딩을 위한 적응적 모션 분해능 Download PDF

Info

Publication number
KR101387255B1
KR101387255B1 KR1020127024521A KR20127024521A KR101387255B1 KR 101387255 B1 KR101387255 B1 KR 101387255B1 KR 1020127024521 A KR1020127024521 A KR 1020127024521A KR 20127024521 A KR20127024521 A KR 20127024521A KR 101387255 B1 KR101387255 B1 KR 101387255B1
Authority
KR
South Korea
Prior art keywords
video data
pixel precision
motion vector
data block
encoded
Prior art date
Application number
KR1020127024521A
Other languages
English (en)
Other versions
KR20120126108A (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 KR20120126108A publication Critical patent/KR20120126108A/ko
Application granted granted Critical
Publication of KR101387255B1 publication Critical patent/KR101387255B1/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/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
    • 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
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/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/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

비디오 인코더는 8 분의 1 픽셀 정밀도 모션 벡터들과 4 분의 1 픽셀 정밀도 모션 벡터들 사이에서 적응적으로 선택함으로써 비디오 데이터를 인코딩할 수도 있고, 선택된 정밀도를 시그널링할 수도 있다. 일 실례에서, 장치는 8 분의 1 픽셀 정밀도 모션 벡터가 4 분의 픽셀 정밀도 모션 벡터에 비해 블록에 대해 바람직한 것으로 판정될 때 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 비디오 데이터 블록을 인코딩하고, 블록에 대한 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 비디오 인코더, 및 인코딩된 블록 및 신호 값을 출력하는 출력 인터페이스를 포함한다. 비디오 디코더는 신호 값 및 인코딩된 블록을 수신하고, 신호 값을 분석하여 블록이 8 분의 1 픽셀 정밀도를 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도를 사용하여 인코딩되었는지를 판정하고, 판정에 기초하여 블록을 디코딩하도록 구성될 수도 있다.

Description

비디오 코딩을 위한 적응적 모션 분해능 {ADAPTIVE MOTION RESOLUTION FOR VIDEO CODING}
35 U.S.C. §119 하의 우선권 주장
본 출원은, 2010 년 2 월 19 일자로 출원된 미국 가 출원 제 61/306,388 호, 2010 년 4 월 12 일자로 출원된 미국 가출원 제 61/323,221 호 및 2010 년 8 월 23 일자로 출원된 미국 가출원 제 61/376,170 호의 우선권을 주장하고, 이들 각각의 전체 내용은 본원에서 참조로서 포함된다.
공동 계류 중인 특허 출원에 대한 참조
본 특허 출원은 본원의 양수인에게 양도되어 2010 년 8 월 25 일자로 출원된 미국 가출원 제 61/376,808 호에 우선권을 주장하고, 그 전체 내용은 참조로서 본원에 포함된다.
분야
본 개시물은 비디오 코딩에 관한 것이다.
디지털 비디오 성능은, 디지털 텔레비전, 디지털 직접 방송 시스템, 무선 전화기 핸드셋과 같은 무선 통신 디바이스, 무선 방송 시스템, 개인 휴대 정보 단말기 (PDA), 랩톱 또는 데스크톱 컴퓨터, 디지털 카메라, 디지털 리코딩 디바이스, 비디오 게이밍 디바이스, 비디오 게임 콘솔, 등을 포함하는 광범위한 디바이스들 안에 통합될 수 있다. 디지털 비디오 디바이스는 디지털 비디오를 보다 효율적으로 송신 및 수신하기 위해서 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding) 와 같은 비디오 압축 기술들을 구현한다.
비디오 압축 기술들은 공간 예측 및/또는 시간 예측을 수행하여 비디오 시퀀스에 내재된 리던던시 (redundancy) 를 감소시키거나 제거한다. 블록-기반 비디오 코딩에서는, 비디오 프레임 또는 슬라이스는 매크로블록들로 파티셔닝 (partitioning) 될 수도 있다. 각 매크로블록들은 더 분할될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스 내의 매크로블록들은 인접 매크로블록들에 대한 공간 예측을 이용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 매크로블록들은 동일한 프레임 또는 슬라이스 내의 인접 매크로블록들에 대한 공간 예측을 이용하거나 다른 기준 프레임들에 대한 시간 예측을 이용할 수도 있다.
일반적으로, 이 개시물은 비디오 코딩 동안 적응적 모션 분해능, 예컨대 모션 추정 및 모션 보상 동안의 적응적 분해능 선택을 지원하는 기법들을 설명한다. 예를 들어, 비디오 인코더는 비디오 데이터 블록을 인코딩할 때 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 선택하도록 구성될 수도 있다. 비디오 인코더가 블록에 대해 8 분의 1 픽셀 정밀도를 선택할 때, 비디오 인코더는 기준 모션 벡터와 동일한 정밀도로 모션 벡터를 양자화함으로써 블록에 대한 모션 벡터를 인코딩할 수도 있다. 비디오 인코더는 이 개시물의 기법들을 이용하여 블록에 대한 8 분의 1 픽셀 정밀도의 선택을 시그널링할 수도 있다. 일부 실례들에서, 이러한 신호는 특정 콘텍스트 내에서 인터프리트될 수도 있고, 이 경우 콘텍스트는 이웃 블록이 8 분의 1 픽셀 정밀도를 사용하여 인코딩되었는지, 4 분의 1 픽셀 정밀도를 사용하여 인코딩되었는지, 또는 이들의 조합을 사용하여 인코딩되었는지에 관한 것일 수도 있다.
일 실례에서, 비디오 데이터를 인코딩하는 방법은, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하는 단계, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 단계, 및 상기 인코딩된 블록 및 상기 신호 값을 출력하는 단계를 포함한다.
다른 실례에서, 비디오 데이터를 인코딩하는 장치는, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하고, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하도록 구성된 비디오 인코더를 포함한다.
다른 실례에서, 비디오 데이터를 인코딩하는 장치는, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하는 수단, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 수단, 및 상기 인코딩된 블록 및 상기 신호 값을 출력하는 수단을 포함한다.
다른 실례에서, 명령들을 포함하는 컴퓨터 판독가능 저장 매체와 같은 컴퓨터 판독가능 매체는, 실행 시, 프로세서로 하여금, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하게 하고, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하게 하고, 상기 인코딩된 블록 및 상기 신호 값을 출력하게 하는 명령들을 포함하며, 예컨대 이러한 명령들로 인코딩된다.
다른 실례에서, 비디오 데이터를 디코딩하는 방법은, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 단계, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하는 단계, 및 상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 단계를 포함한다.
다른 실례에서, 비디오 데이터를 디코딩하는 장치는, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 입력 인터페이스, 및 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하고, 상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 비디오 디코더를 포함한다.
다른 실례에서, 비디오 데이터를 디코딩하는 장치는, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 수단, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하여 상기 신호 값을 분석하는 수단, 및 상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 수단을 포함한다.
다른 실례에서, 컴퓨터 판독가능 저장 매체는, 실행 시, 프로세서로 하여금, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하게 하고, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하게 하고, 상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하게 하는 명령들을 포함한다.
하나 이상의 실례들의 세부사항들이 첨부한 도면 및 하기의 설명에서 설명된다. 다른 특징들, 목적들 및 이점들은 설명, 도면 및 청구범위로부터 명백할 것이다.
도 1 은 모션 벡터들에 대한 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타낸 블록도이다.
도 2 는 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 이용하여 블록들을 선택적으로 인코딩하는 기법들을 구현할 수도 있는 비디오 인코더의 실례를 나타낸 블록도이다.
도 3 은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더의 실례를 나타낸 블록도이다.
도 4 는 전 픽셀 포지션에 대한 소수부 픽셀 포지션들을 나타낸 개념도이다.
도 5 는 현재 블록, 예컨대 인코딩될 블록에 대한 인코딩 콘텍스트를 결정하는 데 사용될 수도 있는 블록들을 나타낸 개념도이다.
도 6 은 8 분의 1 픽셀 정밀도 모션 벡터들 또는 4 분의 1 픽셀 정밀도 모션 벡터들 중 어느 하나를 사용하여 비디오 데이터 블록을 인코딩하고 디코더에 대한 정밀도의 선택을 시그널링하는 예시적인 방법을 나타낸 플로우차트이다.
도 7 은 인코딩된 블록에 대한 모션 벡터의 정밀도를 나타내는 신호 값을 사용하여, 인코딩된 블록을 디코딩하는 예시적인 방법을 나타낸 플로우차트이다.
일반적으로, 본 개시물은 8 분의 1 픽셀 (즉, 픽셀의 8 분의 1) 정밀도를 갖는 모션 벡터들의 사용을 지원하는 기법들을 설명한다. 본 개시물에서 "8 분의 1 픽셀"이라는 용어는 픽셀의 8 분의 1 (1/8) 의 정밀도, 예컨대 전 픽셀 포지션 (0/8), 픽셀의 8 분의 1 (1/8), 픽셀의 8 분의 2 (2/8, 또한, 픽셀의 4 분의 1), 픽셀의 8 분의 3 (3/8), 픽셀의 8 분의 4 (4/8, 또한, 픽셀의 2 분의 1), 픽셀의 8 분의 5 (5/8), 픽셀의 8 분의 6 (6/8, 또한, 픽셀의 4 분의 3), 또는 픽셀의 8 분의 7 (7/8) 을 지칭하도록 의도된다.
종래의 H.264 인코더들 및 디코더들은 4 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 지원한다. 일부 경우들에 있어서, 8 분의 1 픽셀 정밀도는 4 분의 1 픽셀 정밀도 이상의 특정 장점들을 제공할 수도 있다. 그러나, 모든 모션 벡터를 8 분의 1 픽셀 정밀도로 인코딩하는 것은, 8 분의 1 픽셀 정밀도 모션 벡터들의 이점들보다 클 수도 있는 너무 많은 코딩 비트들을 요구할 수도 있다. 이 개시물의 기법들은 적절한 때에 8 분의 1 픽셀 정미로 모션 벡터들을 사용하는 것, 이와 달리 표준형 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하는 것, 및 8 분의 1 픽셀 정밀도 모션 벡터들의 사용을 시그널링하여 그들이 사용될 때 디코더가 특정 블록들에 대한 인코더에 의해 사용된 정밀도를 판정할 수도 있도록 하는 것을 포함한다.
비디오 인코더는, 대안으로 모션 예측자라고도 지칭되는 "예측자" 모션 벡터에 대해 소정 블록에 대한 모션 벡터를 인코딩할 수도 있다. 소정 블록에 대한 모션 예측자는 모션 벡터가 인코딩되고 있는 블록에 이웃한 블록들에 대한 모션 벡터들의 중앙값으로서 선택될 수도 있다. 일반적으로, 모션 벡터를 인코딩하기 위해, 비디오 인코더는 모션 벡터와 예측자 사이의 차이를 계산한다. 8 분의 1 정밀도 모션 벡터들을 도입함으로써, 모션 벡터와 예측자는 상이한 정밀도를 가질 수도 있다. 인코딩될 모션 벡터와 그의 모션 예측자 사이의 차이를 적절히 계산하기 위해, 비디오 인코더는 모션 벡터와 모션 예측자가 동일한 정밀도를 갖는다는 것을 보장할 수도 있다.
이 개시물은 모션 예측자에 대해 모션 벡터를 인코딩하는 다양한 예시적인 방법들을 제공한다. 일 실례에서, 비디오 인코더는 인코딩을 위해 모든 모션 벡터들을 하나의 분해능으로 변환하도록 구성될 수도 있다. 즉, 인코딩될 모션 벡터와 예측자 사이의 차이를 계산하기 위해, 인코더는 모션 벡터 및 모션 예측자를 글로벌 분해능으로 변환할 수도 있다. 예를 들어, 인코더는, 차이를 계산할 목적으로, 모든 모션 벡터들을 4 분의 1 픽셀 정밀도로 변환할 수도 있고, 또는 모든 모션 벡터들을 8 분의 1 정밀도로 변환할 수도 있다. 다른 실례에서, 비디오 인코더는 모션 예측자를 인코딩될 모션 벡터와 동일한 분해능으로 정량화할 수도 있다.
이 개시물은 또한 4 분의 1 픽셀 정밀도가 특정 모션 벡터에 이용되는지 아니면 8 분의 1 픽셀 정밀도가 특정 모션 벡터에 이용되는지를 시그널링하는 기법들을 제공한다. 일부 실례에서, 비디오 인코더는 모든 모션 벡터에 1 비트 플래그를 추가하도록 구성될 수 있어, 그 플래그의 값이 모션 벡터에 대해 8 분의 1 픽셀 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 나타내게 한다. 이 개시물은 마찬가지로 8 분의 1 픽셀 정밀도 모션 벡터의 존재를 시그널링하는 다양한 다른 방법들을 제안한다.
일 실례에서, 비디오 인코더는 각각의 모션 벡터에 대한 정밀도를 시그널링하는 1 비트 플래그를 사용할 수도 있지만, 매크로블록 데이터 자체가 아니라 재설계된 기준 프레임 인덱스 값의 일부로서 플래그를 포함할 수도 있다. 기준 프레임 인덱스는 일반적으로 가변 길이 코드 (VLC)에 대응한다. 이 개시물은 4 분의 1 또는 8 분의 1 픽셀 정밀도를 나타내는 1 비트 플래그가 가변 길이 코드에 포함될 수도 있도록 기준 프레임 인덱스 값에 대한 가변 길이 코드들을 설계하는 것을 제안한다. 예를 들어, 비디오 인코더는 잠재적 기준 프레임 인덱스 값들을 고려할 수도 있을 뿐 아니라 기준 프레임의 블록을 가리키는 모션 벡터가 8 분의 1 픽셀 정밀도를 이용할 가능성을 고려할 수도 있는 콘텍스트 적응적 가변 길이 코딩 (context-adaptive variable length coding: CAVLC) 알고리즘을 실행하도록 구성될 수도 있다.
다른 실례에서, 모션 분해능 적응 (즉, 4 분의 1 또는 8 분의 1 픽셀 정밀도 중 어느 하나를 이용할 능력) 은 최후 기준 프레임들 (예컨대, ref_idx 0을 가짐) 이 프레임을 인코딩하는 경우의 기준에 이용될 때에만 발생할 수도 있다. 따라서, 이 실례에서, 블록이 최후 기준 프레임 (즉, 기준 프레임 리스에서 가장 최근의 기준 프레임) 이외의 기준 프레임에 대해 인코딩되는 경우, 그 블록에 대한 모션 벡터는 오로지 4 분의 1 픽셀 분해능만을 가질 수 있으며; 그렇지 않은 경우 정밀도는, 예컨대 1 비트 플래그에 의해 시그널링될 수도 있고, 또는 디폴트로서 8 분의 1 픽셀 정밀도를 갖는 것으로 추정될 수도 있다.
이 개시물은 블록에 대한 콘텍스트에 기초하여 그 블록에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 이용하는지 아니면 또는 4 분의 1 픽셀 정밀도를 이용하는지의 표시를 변화시키는 기법들을 추가로 제공한다. 콘텍스트는 이웃 블록들이 8 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 포함하는지 아니면 4 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 포함하는지에 대응할 수도 있다. 이웃 블록들은 현재 블록 위의 블록 및 현재 블록 좌측의 블록에 대응할 수도 있다. 콘텍스트들은 이웃 블록들에 대한 모션 블록들 모두가 8 분의 1 픽셀 정밀도를 이용하는 경우, 이웃 블록들에 대한 모션 벡터들 모두가 4 분의 1 픽셀 정확도를 이용하는 경우, 및 이웃 블록들에 대한 모션 벡터들이 8 분의 1 픽셀 정밀도와 4 분의 1 픽셀 정밀도의 혼합을 이용하는 경우에 대응할 수도 있다.
상기 상황들 (8 분의 1 정밀도 모두, 4 분의 1 정밀도 모두, 또는 혼합 정밀도) 은 인코딩될 현재 블록에 대한 인코딩 콘텍스트들이라 지칭될 수도 있다. 현재 블록이 이웃 블록들에 대한 모션 벡터들과 동일한 정밀도의 모션 벡터들을 이용하는 것으로부터 이점을 얻을 수도 있다는 인식에서, 이 개시물은 현재 블록에 대한 각각의 인코딩 콘텍스트에서 상이한 코드들 (예컨대, 가변 길이 코드들) 을 이용하는 기법들을 제공한다. 특정 인코딩 콘텍스트의 코드들은, 인코딩 콘텍스트에서 가능성이 큰 정밀도가 상대적으로 더 짧은 코드를 이용하는 것을 나타내고 가능성이 적은 정밀도가 상대적으로 긴 코드를 이용하는 것을 나타내도록 설계될 수도 있다.
도 1 은 모션 벡터들에 대해 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10)을 나타낸 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 통신 채널 (15)을 통해 인코딩된 비디오를 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12)를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에 있어서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 핸드셋들, 소위 셀룰러 또는 위성 무선 전화들과 같은 무선 통신 디바이스들, 혹은 통신 채널 (16) 을 통해 비디오 정보를 통신할 수 있는 임의의 무선 디바이스들 (이 경우, 통신 채널 (16) 은 무선임) 을 포함할 수도 있다. 그러나, 모션 벡터들에 대해 8 분의 1 픽셀 정밀도 및 4 분의 1 픽셀 정밀도 사이에서의 선택, 이 선택의 시그널링하고, 결과로서 생성된 모션 벡터들의 인코딩에 관한 이 개시물의 기법들은 반드시 무선 애플리케이션들 또는 세팅들로 국한되는 것은 아니다. 예를 들어, 이들 기법들은 OTA 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 비디오 송신들, 저장 매체 상으로 인코딩되는 인코딩된 디지털 비디오, 또는 다른 시나리오들에 적용될 수도 있다. 따라서, 통신 채널 (16) 은 인코딩된 비디오 데이터의 송신에 적합한 무선 또는 유선 매체들의 임의의 조합을 포함할 수도 있다.
도 1 의 실례에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (모뎀)(22) 및 송신기 (24)를 포함한다. 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 이 개시물에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 모션 벡터들에 대한 8 분의 1 픽셀 정밀도와 4 분의 1 픽셀 정밀도 사이에서의 선택, 이 선택의 시그널링, 및 결과로서 생성된 모션 벡터들의 인코딩을 위한 기법들을 적용하도록 구성될 수도 있다. 다른 실례들에서, 소스 디바이스 및 목적지 디바이스는 다른 콤포넌트들 또는 배열물들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스 (18) 로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것이 아니라 외부 디스플레이와 인터페이싱할 수도 있다.
도 1 의 예시된 시스템 (10) 은 일 실례에 불과하다. 모션 벡터들에 대한 8 분의 1 픽셀 정밀도와 4 분의 1 픽셀 정밀도 사이에서의 선택, 이 선택의 시그널링, 및 결과로서 생성된 모션 벡터들의 인코딩을 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로 이 개시물의 기법들은 비디오 인코딩 디바이스에 의해 수행되지만, 그 기법들은 또한 일반적으로 "코덱"이라 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 또한, 이 개시물의 기법들은 비디오 프리프로세서에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 실례들에 불과하다. 일부 실례들에 있어서, 디바이스들 (12, 14) 은 디바이스들 (12, 14) 각각이 비디오 인코딩 및 디코딩 콤포넌트들을 포함하도록 실질적으로 대칭인 방식으로 동작할 수도 있다. 따라서, 시스템 (10) 은, 예컨대 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화를 위한 디바이스들 (12, 14) 사이에서의 일 방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 공급된 비디오를 포함할 수도 있다. 다른 대안으로서, 비디오 소스 (18) 는 소스 비디오와 같은 컴퓨터 그래픽 기반 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성 비디오의 조합을 생성할 수도 있다. 일부 경우들에 있어서, 비디오 소스 (18) 가 비디오카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 914) 는 소위 카메라 폰 또는 비디오 폰을 형성할 수도 있다. 그러나, 전술된 바와 같이, 이 개시물에서 설명되는 기법들은 일반적으로 비디오 코딩에 적용 가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에 있어서, 캡처되거나 사전 캡처되었거나 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 그 후, 인코딩된 비디오 정보는 통신 표준에 따라서 모뎀 (22) 에 의해 변조될 수도 있고, 송신기 (24)를 통해서 목적지 디바이스 (14) 로 송신될 수도 있다. 모뎀 (22) 은 다양한 혼합기들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 콤포넌트들을 포함할 수도 있다. 송신기 (24) 는, 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하는, 데이터 송신용으로 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 변조한다. 또한, 비디오 인코딩 프로세스는, 모션 벡터들에 대한 8 분의 1 픽셀 정밀도와 4 분의 1 픽셀 정밀도 사이에서 선택하고, 이 선택을 시그널링하고, 결과로서 생성된 모션 벡터들을 인코딩하도록 여기에서 설명된 기법들 중 하나 이상을 구현할 수도 있다. 채널 (16) 을 통해 통신된 정보는, 비디오 디코더 (30) 에 의해서도 사용되는, 비디오 인코더 (20) 에 의해 정의되고 매크로블록들 및 다른 코딩된 유닛들, 예컨대 GOP 들의 특성들 및 프로세싱을 설명하는 신택스 엘리먼트들을 포함하는 신택스 정보를 포함할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 음극관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
도 1 의 실례에서, 통신 채널 (16) 은 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리 송신 회선들과 같은 임의의 무선 또는 유선 통신 매체들, 또는 무선 매체와 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 근거리망, 광역망, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 일부분을 형성할 수도 있다. 통신 채널 (16) 은 일반적으로 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하는 임의의 적합한 통신 매체 또는 상이한 통신 매체들의 집합을 나타내며, 이들은 유선 또는 무선 매체들의 임의의 적합한 조합을 포함한다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는 데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는, 대안으로 MPEG-4, Part 10, 어드밴스드 비디오 코딩 (Advanced Video Coding: AVC) 이라고 지칭되는 ITU-T H.264 표준과 같은 비디오 압축 표준에 따라 동작할 수도 있다. 그러나, 이 개시물의 기법들은 임의의 특정 코딩 표준으로 국한되지 않는다. 다른 실례들은 MPEG-2 및 ITU-T H.263을 포함한다. 도 1 에는 도시되어 있지 않지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있으며, 적절한 MUX-DEMUX 유닛들, 또는 공통 데이터 스트림 에서 오디오 및 비디오 양측 모두의 인코딩을 핸들링하고 데이터 스트림들을 분리시키도록 하는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용 가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 와 같은 다른 프로토콜들을 준수할 수도 있다.
The ITU-T H.264/MPEG-4 (AVC) 표준은, 조인트 비디오 팀 (Joint Video Team: JVT) 으로 알려진 총체적 파트너십의 제품으로서 ISO/IEC 동영상 전문가 그룹 (MPEG) 과 함께 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 제정되었다. 일부 양태들에서, 이 개시물에서 설명된 기법들은 일반적으로 H.264 표준을 준수하는 디바이스들에 적용될 수도 있다. H.264 표준은 ITU-T 연구 그룹에 의한 ITU-T 권고 H.264 인 범용 음향 시각적 서비스를 위한 고급 비디오 코딩 (Advanced Video Coding for generic audiovisual services)(2005 년 3 월) 에서 설명되며, 이것은 본 명세서에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양이라고 지칭될 수도 있다. 조인트 비디오 팀 (Joint Video Team, JVT) 은 H.264/MPEG-4 AVC 에 대한 확장들에 관해 계속 연구 중이다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 사용자 주문형 집적회로 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로 중 임의의 것으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은, 어느 하나가 각각의 카메라, 컴퓨터, 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 셋톱박스, 서버 등에서 결합형 인코더/디코더 (코덱) 의 일부분으로서 통합될 수도 있는 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있다.
비디오 시퀀스는 일반적으로 일련의 비디오 프레임들을 포함한다. 픽처 그룹 (GOP) 은 일반적으로 일련의 하나 이상의 비디오 프레임들을 포함한다. GOP 는 GOP 의 헤더, GOP 의 하나 이상의 프레임들의 헤더, 또는 GOP 에 포함되는 다수의 프레임들을 설명하는 어느 곳에든 신택스 데이터를 포함할 수도 있다. 각각의 프레임은 각각의 프레임에 대한 인코딩 모드를 설명하는 프레임 신택스 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 일반적으로 비디오 데이터를 인코딩하기 위해 개별적인 비디오 프레임들 내의 비디오 블록들 상에서 동작한다. 비디오 블록은 매크로블록, 매크로블록의 파티션, 또는 블록들이나 매크로블록들의 콜렉션에 대응할 수도 있다. 비디오 블록들은 고정 사이즈들을 가질 수도 있고, 또는 가변 사이즈들을 가질 수도 있으며, 특정 코딩 표준에 따라서 사이즈가 상이할 수도 있다. 각각의 비디오 프레임은 복수의 슬라이스들을 포함할 수도 있다. 각각의 슬라이스는 복수의 매크로블록들을 포함할 수도 있으며, 이들은 서브블록들이라고도 지칭되는 파티션들로 배열될 수도 있다.
H.263, H.264, H.265, MPEG-2, 및 MPEG-4, H.264/AVC (advanced video coding) 과 같은 많은 대중적 비디오 코딩 표준들은 모션 보상 예측 기법들을 이용한다. 비디오의 이미지 또는 프레임은 다수의 매크로블록들로 분할될 수도 있으며, 각각의 매크로블록은 추가로 분할될 수 있다. I 프레임의 매크로블록들은 공간 이웃들 (즉, I 프레임의 다른 블록들) 로부터의 예측을 이용하여 인코딩될 수도 있다. P 또는 B 프레임의 매크로블록들은 그들의 공간 이웃들로부터의 예측 (공간 예측 또는 인트라 모드 인코딩) 또는 다른 프레임들의 영역들로부터의 예측 (시간 예측 또는 인터 모드 인코딩) 중 어느 하나를 이용하여 인코딩될 수도 있다. 비디오 코딩 표준들은 코딩 정보를 나타내는 신택스 엘리먼트들을 정의한다. 예를 들어, 모든 매크로블록에 대해, H.264 는 매크로블록이 분할되는 방식 및 예측 (공간 예측 또는 시간 예측) 방법을 나타내는 mb_타입 값을 정의한다.
비디오 인코더 (20) 는 매크로블록의 각각의 파티션에 개별적인 모션 벡터들을 제공할 수도 있다. 예를 들어, 비디오 인코더 (20) 가 단일 파티션으로서 전 매크로블록을 사용할 것을 선택하면, 비디오 인코더 (20) 는 매크로블록에 하나의 모션 벡터를 제공할 수도 있다. 다른 실례로서, 비디오 인코더 (20) 가 16x16 픽셀 매크로블록을 4 개의 8X8 파티션들로 분할할 것을 선택하면, 비디오 인코더 (20) 는 각각의 파티션마다 하나씩인 4개의 모션 벡터들을 제공할 수도 있다. 각각의 파티션 (또는 서브매크로블록 유닛) 에 대해, 비디오 인코더 (20) 는 모션 벡터 정보를 나타내도록 하는 mvd 값 및 ref_idx 값을 제공할 수도 있다. mvd (모션 벡터 차이) 값은 모션 예측자에 대하여 파티션에 인코딩된 모션 벡터를 제공할 수도 있다. ref_idx (기준 인덱스) 값은 인덱스를 잠재적 기준 픽처들, 즉 기준 프레임들의 리스트로 나타낼 수도 있다. 실례로서, H.264 는 기준 픽처들의 2 개의 리스트들: 리스트 9 및 리스트 1 을 제공한다. ref_idx 값은 2 개의 리스트들 중 하나에서 픽처를 식별할 수도 있다. 비디오 인코더 (20) 는 또한 ref_idx 값이 관련된 리스트를 나타내는 정보를 제공할 수도 있다.
실례로서, ITU-T H.264 표준은 루마 콤포넌트들에 대한 16x16, 8x8 또는 4x4 사이즈 및 크로마 콤포넌트들에 대한 8x8 사이즈와 같은 다양한 블록 파티션 사이즈들의 인트라 예측 뿐 아니라 루마 콤포넌트들에 대한 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 및 4x4 사이즈 및 크로마 콤포넌트들에 대한 대응하는 스케일링된 사이즈들과 같은 다양한 블록 사이즈들의 인터 예측을 지원한다. 이 개시물에서, "NxN" 및 "N 바이 N" 은 수직 및 수평 디멘전들, 예컨대 16x16 픽셀들 또는 16 바이 16 픽셀들과 관련하여 블록의 픽셀 디멘전들을 지칭하는 데 상호 교환가능하게 사용될 수도 있다. 일반적으로, 16x16 블록은 수직 방향으로 16 픽셀들 (y=16) 및 수평 방향으로 16 픽셀들 (x=16) 을 가질 것이다. 마찬가지로, NxN 블록은 일반적으로 수직 방향의 N 픽셀들 및 수평 방향의 N 픽셀들을 가지며, 이 때 N 은 음이 아닌 정수 값을 나타낸다. 블록의 픽셀들은 로우들 (rows) 및 컬럼들 (columns) 로 배열될 수도 있다. 또한, 블록들은 반드시 수평 방향이 수직 방향에서와 동일한 수의 픽셀들을 가질 필요는 없다. 예를 들어, 블록들은 NxM 픽셀들을 포함할 수도 있으며, 이 때 M 은 반드시 N 과 동일할 필요가 없다.
16x16 보다 작은 블록 사이즈들은 16x16 매크로블록의 파티션들로 지칭될 수도 있다. 비디오 블록들은 픽셀 도메인에서 픽셀 데이터의 블록들, 또는 예컨대 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 코딩된 비디오 블록들과 예측 비디오 블록들 사이의 픽셀 차이들을 나타내는 잔여 비디오 블록 데이터로의 개념적으로 유사한 변환과 같은 변환을 응용하는 변환 도메인에서 변환 계수들의 블록들을 포함할 수도 있다. 일부 경우들에 있어서, 비디오 블록은 변환 도메인에서 양자화 변환 계수들의 블록들을 포함할 수도 있다.
더 작은 비디오 블록들은 더 우수한 분해능을 제공할 수 있으며, 높은 레벨들의 세부정보를 포함하는 비디오 프레임의 로케이션들에 이용될 수도 있다. 일반적으로, 매크로 블록들 및 때때로 서브블록들이라고 지칭되는 다양한 파티션들은 비디오 블록들로 간주될 수도 있다. 또한, 슬라이스는 매크로블록들 및/또는 서브블록들과 같은 복수의 비디오 블록들인 것으로 간주될 수도 있다. 각각의 슬라이스는 비디오 프레임의 독립적으로 디코딩 가능한 유닛일 수도 있다. 대안으로, 프레임들 자체는 디코딩 가능한 유닛들일 수도 있고, 또는 프레임의 다른 부분들이 디코딩 가능한 유닛들로서 정의될 수도 있다. "코딩된 유닛" 또는 "코딩 유닛"라는 용어는 전체 프레임, 프레임의 슬라이스, 시퀀스라고도 지칭되는 픽처 그룹 (GOP), 또는 적용 가능한 코딩 기법들에 따라 정의되는 다른 독립적으로 디코딩 가능한 유닛과 같은, 비디오 프레임의 임의의 독립적으로 디코딩 가능한 유닛을 지칭할 수도 있다.
H.264 표준은 4 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 지원한다. 즉, H.264를 지원하는 인코더들, 디코더들 및 인코더들/디코더들 (코덱들) 은 전 픽셀 포지션 또는 15 분의 1 픽셀 포지션들 중 어느 하나를 가리키는 모션 벡터들을 사용할 수도 있다. 소수부 픽셀 포지션들에 대한 값들은 적응적 보간 필터들 또는 고정 보간 필터들을 사용하여 결정될 수도 있다. 일부 실례들에서, H.264 - 부합하는 디바이스들은 계수들 [1, -5, 20, 20, -5, 1] 을 갖는 6-탭 위너 (Wiener) 필터들을 사용하여 반-픽셀 포지션들에 대한 값들을 계산할 수도 있고, 그 후에 이중 선형 필터들을 사용하여 나머지 4 분의 1 픽셀 포지션들에 대한 값들을 결정할 수도 있다. 적응적 보간 필터들은 인코딩 프로세스 동안에 보간 필터 계수들을 적응적으로 정의하는 데 사용될 수도 있으며, 이에 따라 필터 계수들은 적응적 보간 필터들을 실행시킬 때 시간에 따라 변할 수도 있다.
이 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 비디오 데이터의 블록들에 대한 모션 벡터들을 계산할 때 8 분의 1 정밀도와 4 분의 1 정밀도 사이에서 선택하도록 구성될 수도 있다. 비디오 디코더 (20) 는 이 선택을 모션 추정 프로세스 동안에 수행할 수도 있다. 비디오 인코더 (20) 는 모션 벡터에 대해 8 분의 1 픽셀 정밀도를 선택할지 또는 4 분의 1 픽셀 정밀도를 선택할지를 판정할 때 다양한 기준을 평가할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 2 개의 인코딩 패스들: 4 분의 1 픽셀 정밀도를 사용하는 제 1 패스 및 8 분의 1 픽셀 정밀도를 사용하는 제 2 패스를 수행하도록 구성될 수도 있다. 비디오 인코더 (20) 는 율왜곡 (rate-distortion) 최적화 프로세스를 이용하여 4 분의 1 픽셀 정밀도와 8 분의 1 픽셀 정밀도 사이에서 선택할 수도 있다. 즉, 그 후, 비디오 인코더 (20) 는 더 우수한 율왜곡 값을 제공하는 것이 제 1 인코딩 패스인지 제 2 인코딩 패스인지를 판정할 수도 있다. 비디오 인코더 (20) 는 에러와 비트율의 가중된 결합으로서 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 사용하는 경비를 계산할 수도 있고, 더 낮은 경비를 제공하는 정밀도를 계산할 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 2 개의 전 인코딩 패스들을 수행하는 것이 아니라 모션 벡터 검색 동안 율왜곡 최적화를 수행할 수도 있다.
비디오 인코더 (20) 가 비디오 데이터의 특정 블록에 대해 8 분의 1 픽셀 정밀도를 선택할 때, 비디오 인코더 (20) 는 8 분의 1 픽셀 포지션들에 대한 값들을 보간하도록 구성될 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 먼저 반-픽셀 포지션들에 대한 값들을 보간할 수도 있고, 그 후에 4 분의 1 픽셀 정밀도 포지션들을 보간할 수도 있으며, 그 이후에 8 분의 1 픽셀 포지션들에 대한 값들을 보간할 수도 있다. 비디오 인코더 (20) 는 반-픽셀, 4 분의 1 픽셀, 및 8 분의 1 픽셀 포지션들에 대해 상이한 타입들의 보간 필터들을 사용할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 다양한 소수부 픽셀 포지션들에 대해 위너 필터들 또는 이중 선형 필터들과 같은 적응적 보간 필터들 및/또는 고정 보간 필터들을 사용할 수도 있다.
비디오 인코더 (20) 가 비디오 데이터의 특정 블록에 대해 8 분의 1 픽셀 정밀도를 선택할 때, 비디오 인코더 (20) 는 그 블록에 대해 8 분의 1 픽셀 정밀도의 사용을 시그널링하도록 구성될 수도 있다. 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도의 사용을 시그널링함으로써 비디오 디코더 (30) 와 같은 디코더는 모션 벡터를 적절히 이용하기 위해 모션 벡터가 8 분의 1 픽셀 정밀도를 사용하는지 4 분의 1 픽셀 정밀도를 사용하는지를 판정할 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 대응하는 모션 벡터가 8 분의 1 픽셀 정밀도를 사용하는지 4 분의 1 픽셀 정밀도를 사용하는지를 나타내는 모든 모션 벡터들에 1 비트 플래그를 추가하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 8 분의 1 픽셀 정밀도가 모션 벡터에 사용될 때 플래그를 설정할 수도 있고 (예컨대, 플래그의 값을 '1'로 설정할 수도 있고), 4 분의 1 픽셀 정밀도가 모션 벡터에 사용되지 않을 때 플래그를 클리어시킬 수도 있다 (예컨대, 플래그의 값을 '0'으로 설정할 수도 있다).
다른 실례에서, 비디오 인코더 (20) 는 매크로블록에 대한 모든 모션 벡터들이 8 분의 1 픽셀 정밀도를 사용하는지 4 분의 1 픽셀 정밀도를 사용하는지를 나타내는 매크로블록에 1 비트 플래그를 추가하도록 구성될 수도 있다. 매크로블록은 하나 이상의 모션 벡터들과 관련될 수도 있다. 예를 들어, 매크로블록의 각각의 파티션은 자체의 각각의 모션 벡터를 가질 수도 있다. 따라서, 비디오 인코더 (20) 는 매크로블록 층, 예컨대 매크로블록 헤더에서 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 시그널링할 수도 있다. 즉, 매크로블록에 대한 1 비트 플래그는 매크로블록에 대한 모션 벡터들 각각이 동일한 정밀도를 이용하도록 매크로블록의 모션 벡터들 각각이 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 이용한다는 것을 나타낼 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 동일한 정밀도를 갖는 모션 벡터들을 이용하여 전 프레임을 인코딩할 수도 있는데, 예컨대, 하나의 프레임은 4 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 이용하여 인코딩되고, 다른 프레임은 8 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 이용하여 인코딩된다. 따라서, 비디오 인코더 (20) 는 프레임에 대한 모션 벡터들이 4 분의 1 픽셀 정밀도를 갖는지 8 분의 1 픽셀 정밀도를 갖는지를 시그널링하도록 하는 프레임 레벨 시그널링을 이용할 수도 있다.
다른 실례로서, 비디오 인코더 (20) 는 모션 벡터가 4 분의 1 픽셀 정밀도를 이용하는지 8 분의 1 픽셀 정밀도를 이용하는지의 시그널링과 모션 벡터에 대한 기준 프레임 인덱스 (ref_idx) 를 결합할 수도 있다. 잠재적 기준 프레임 인덱스 값들은, 예컨대 콘텍스트 적응적 가변 길이 코딩 (CAVLC) 알고리즘을 실행하여, 이 여분 정보를 수용하도록 재설계될 수도 있다. 비디오 인코더 (20) 는 기준 프레임 인덱스 값들을 설계하기 위해 특정 기준 프레임을 가리키는 모션 벡터가 4 분의 1 픽셀 정밀도 이상으로 8 분의 1 픽셀 정밀도로부터 이득을 얻을 가능성을 나타내는 통계를 갖는 CAVLC 알고리즘을 구현하는 유닛 또는 모듈을 제공할 수도 있다. 이 방식으로, 특정 기준 프레임에 대한 가장 가능성이 큰 정밀도를 나타내는 기준 프레임 인덱스 값은 기준 프레임에 대해 가능성이 적은 정밀도를 나타내는 기준 프레임 인덱스 값보다 비교적 짧은 길이를 가질 수도 있다.
일부 실례들에서, 비디오 인코더 (20) 는 잠재적 코드워드들의 세트들을 추가로 생성할 수도 있으며, 코드워드들의 세트들 각각은 블록에 대한 다양한 콘텍스트들과 관련된다. 콘텍스트들은 이웃 블록들이 8 분의 1 픽셀 정밀도를 이용하는지 4 분의 1 픽셀 정밀도를 이용하는지와 관련될 수도 있다. 일 실례에서, 관련 이웃 블록들은 현재 블록의 상측 블록 및 현재 블록의 좌측 블록에 대응할 수도 있다. 따라서, 일부 실례들에서, 비디오 인코더 (20) 는 모션 벡터의 기준 프레임 인덱스에 대한 코드워드를 선택할 수도 있으며, 인코딩 콘텍스트들 중 하나에 대응하는, 코드워드들의 4개 세트 중 하나로부터 모션 벡터가 8 분의 1 픽셀 정밀도의 것인지 또는 4 분의 1 픽셀 정밀도의 것인지를 나타낼 수도 있다.
제 1 콘텍스트는 상측 블록 및 좌측 블록 양측 모두에 대한 모션 벡터들이 4 분의 1 픽셀 정밀도를 이용하는 경우일 수도 있다. 제 2 콘텍스트는 상측 블록 및 좌측 블록에 대한 모션 벡터들이 8 분의 1 픽셀 정밀도를 이용하는 경우일 수도 있다. 제 3 콘텍스트는 상측 블록에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 이용하고 좌측 블록에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 이용하는 경우일 수도 있다. 제 4 콘텍스트는 상측 블록에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 이용하고 좌측 블록에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 이용하는 경우일 수도 있다. 각각이 4 개 콘텍스트들 중 하나에 대응하는 기준 프레임 인덱스에 대한 코드워드들의 4 개 세트들이 존재할 수도 있다. 따라서, 비디오 인코더 (20) 는 모션 벡터에 대한 블록이 발생하는 콘텍스트에 대응하는 세트로부터 모션 벡터의 기준 프레임 인덱스에 대한 코드워드를 선택할 수도 있다.
비디오 인코더 (20) 는 8 분의 1 픽셀 정밀도 모션 벡터들을 사용할지에 대한 선택을 최근 기준 프레임들의 분석으로 제한할 수도 있다. 즉, 비디오 인코더 (20) 는 리스트 0 및 리스트 1에서 0 의 기준 프레임 인덱스 값을 갖는 기준 프레임들을 분석할 때 8 분의 1 픽셀 정밀도를 이용할지 4 분의 1 픽셀 정밀도를 이용할지를 오로지 판정만 할 수도 있다. 비디오 인코더 (20) 는 비제로 기준 프레임 인덱스 값들을 갖는 리스트들 0 및 1 에서 기준 프레임들에 대해 항상 4 분의 1 픽셀 정밀도를 이용하도록 구성될 수도 있다. 리스트 0 또는 리스트 1 중 어느 하나에서 0 의 기준 프레임 인덱스 값을 갖는 기준 프레임들을 분석할 때, 비디오 인코더 (20) 는 전술된 기준 또는 다른 기준을 분석하여, 8 분의 1 픽셀 정밀도 모션 벡터들을 이용할지 4 분의 1 픽셀 정밀도 모션 벡터들을 이용할지를 결정하도록 구성될 수도 있다.
또한, 비디오 인코더 (20) 는 리스트 0 또는 리스트 1 에서 0 과 동일한 기준 프레임 인덱스 값을 갖는 기준 프레임의 일부분을 가리키는 모션 벡터들에 대한 선택을 시그널링하도록 구성될 수도 있다. 마찬가지로, 비디오 디코더 (30) 는 0 이 아닌 기준 프레임 인덱스를 갖는 모션 벡터가 4 분의 1 픽셀 정밀도의 것임을 추정하도록, 그리고 0 와 동일한 기준 프레임 인덱스 값을 갖는 모션 벡터들에 대한 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도의 이용을 나타내는 플래그를 분석하도록 구성될 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 0 의 기준 프레임 인덱스 값을 갖는 프레임에 더하여 또는 그러한 프레임에 대한 대안으로, 다른 특정 프레임들이 8 분의 1 픽셀 정밀도를 이용하여 인코딩될 수도 있도록 구성될 수도 있다.
비디오 인코더 (20) 는 모션 예측자에 대해 블록에 대한 모션 벡터를 인코딩하도록 추가로 구성될 수도 있다. 모션 예측자는 이미 인코딩된 이웃 블록들의 모션 벡터들의 평균으로서 선택될 수도 있다. 현재 블록에 대한 모션 벡터를 인코딩하기 위해, 비디오 인코더 (20) 는 모션 벡터와 모션 예측자 사이의 차이를 계산할 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 항상 미리 정해진 모션 분해능으로 모션 벡터들을 인코딩할 수도 있다. 즉, 비디오 인코더 (20) 는 항상 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도로 모션 벡터를 인코딩할 수도 있다. 일부 실례들에서, 비디오 인코더 (20) 는 모션 예측자를 현재 모션 벡터와 동일한 모션 분해능으로 양자화할 수도 있다.
비디오 인코더 (20) 는 이들 방법들, 또는 다른 방법 중 미리 정해진 하나의 방법을 이용하여 구성될 수도 있으며, 비디오 디코더 (30) 는 마찬가지로 동일한 방법을 이용하여, 인코딩된 모션 벡터들을 디코딩하도록 구성될 수도 있다. 대안으로, 비디오 인코더 (20) 는 시퀀스 파라미터 세트, 슬라이스 파라미터 세트, 또는 픽처 파라미터 세트로 모션 벡터들을 인코딩하는 데 이용되는 예측 방법을 시그널링하여, 단일 비트스트림에서 상이한 모션 벡터 인코딩 방법들을 이용할 수도 있다.
예측 데이터 및 잔여 데이터를 생성하도록 하는 인트라 예측 또는 인터 예측 코딩에 이어서, 그리고 변환 계수들을 생성하도록 하는 임의의 변환들 (예컨대, H.264/AVC 에서 이용되는 4x4 또는 8x8 정수 변환 또는 이산 코사인 변환 DCT) 에 이어서, 변환 계수들의 양자화가 수행될 수도 있다. 양자화는 일반적으로 변환 계수들이 계수들을 나타내는 데 이용되는 데이터의 양을 가능하게는 감소시키도록 양자화되는 프로세스를 지칭한다. 양자화 프로세스는 계수들 중 일부 또는 모두와 관련된 비트 깊이를 감소시킬 수도 있다. 예를 들어 n 비트 값은 양자화 동안에 m 비트 값으로 버림 (rounded down) 될 수도 있으며, 여기서 n 은 m 보다 크다.
양자화에 이어서, 양자화된 데이터의 엔트로피 코딩이, 예컨대 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 콘텍스트 적응적 이진 연산 코딩 (CABAC), 또는 다른 엔트로피 코딩 방법에 따라서 수행될 수도 있다. 엔트로피 코딩을 위해 구성된 프로세싱 유닛 또는 다른 프로세싱 유닛은 양자화된 계수들의 제로 런 길이 코딩, 및/또는 코딩된 블록 패턴 (CBP) 값들, 매크로블록 타입, 코딩 모드, 코딩된 유닛에 대한 최대 매크로블록 (예컨대, 프레임, 슬라이스, 매크로블록, 또는 시퀀스) 등과 같은 신택스 정보의 생성과 같은 다른 프로세싱 기능들을 수행할 수도 있다.
비디오 인코더 (20) 는 블록 기반 신택스 데이터, 프레임 기반 신택스 데이터, 슬라이스 기반 신택스 데이터, 및/또는 GOP 기반 신택스 데이터와 같은 신택스 데이터를, 예컨대 프레임 헤더, 블록 헤더, 슬라이스 헤더, 또는 GOP 헤더에서, 비디오 디코더 (30) 로 추가로 전송할 수도 있다. GOP 신택스 데이터는 각각의 GOP 에서 다수의 프레임들을 설명할 수도 있고, 프레임 신택스 데이터는 대응하는 프레임을 인코딩하는 데 이용되는 인코딩/예측 모드를 나타낼 수도 있다.
비디오 디코더 (30) 는 이 개시물의 기법들 중 임의의 것에 따라 인코딩된 모션 벡터들을 포함하는 비트스트림을 수신할 수도 있다. 따라서, 비디오 디코더 (30) 는 인코딩된 모션 벡터를 인터프리트하도록 구성될 수도 있다. 예를 들어, 비디오 디코더 (30) 는 먼저 시퀀스 파라미터 세트 또는 슬라이스 파라미터 세트를 분석하여, 인코딩된 모션 벡터가, 모든 모션 벡터들을 하나의 모션 분해능에서 유지시키는 방법을 이용하여 인코딩되었는지 모션 예측자가 모션 벡터의 분해능으로 양자화된 방법을 이용하여 인코딩되었는지를 판정할 수도 있다. 그 후, 비디오 디코더 (30) 는, 모션 예측자를 결정하고 인코딩된 모션 벡터에 대한 값을 그 모션 예측자에 추가함으로써, 모션 예측자에 대한 모션 벡터를 디코딩할 수도 있다.
비디오 디코더 (30) 는 또한 모션 벡터에 대해 모션 벡터 자체에 포함될 수도 있고 또는 매크로블록과 같이 모션 벡터가 대응하는 블록에 포함될 수도 있는 플래그를 분석함으로써 모션 벡터가 8 분의 1 픽셀 정밀도를 이용하는지 4 분의 1 픽셀 정밀도를 이용하는지를 판정할 수도 있다. 일부 실례들에서, 비디오 디코더 (30) 는, 예컨대 모션 벡터가 리스트 0 또는 리스트 1에서 0 외의 기준 프레임 인덱스 값을 갖는 기준 픽처를 참조할 때, 4 분의 1 픽셀 정밀도를 가짐을 추정할 수도 있다. 일부 실례들에서, 비디오 디코더 (30) 는 기준 프레임 인덱스 값에 대한 CAVLC 코드워드에 따라서 잠재적 기준 프레임 인덱스 값들의 리스트에서 식별될 수도 있는 기준 프레임 인덱스 값에 기초하여 모션 벡터에 대한 정밀도를 판정할 수도 있다. 또한, 비디오 디코더 (30) 는, 모션 벡터에 대한 블록이 발생하는 콘텍스트를 결정할 수도 있는데, 이 경우 그 콘텍스트는 이웃 블록들 (예컨대, 현재 블록의 상측 및 좌측) 에 대한 모션 벡터들이 8 분의 1 픽셀을 사용하는지 4 분의 1 픽셀을 사용하는지에 관련된다. 그 후, 비디오 디코더 (30) 는 디코딩된 모션 벡터를 이용하여, 현재 블록에 대한 잔여 값만큼 오프셋된 현재 블록에 대한 예측 값을 결정할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은, 적용 가능할 때, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 사용자 주문형 집적회로 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 이산 로직 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들과 같은 다양한 적합한 인코더 또는 디코더 회로 중 임의의 것으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 하나는 결합형 비디오 인코더/디코더 (코덱) 의 일부분으로서 통합될 수도 있다. 비디오 인코더 (230) 및/또는 비디오 디코더 (30)을 포함하는 장치는 집적회로, 마이크로프로세서, 및/또는 셀룰러 전화와 같은 무선 통신 디바이스를 포함할 수도 있다.
도 2 는 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도 중 어느 하나를 이용하여 블록들을 선택적으로 인코딩하는 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 실례를 나타낸 블록도이다. 비디오 인코더 (20) 는 매크로블록들, 또는 매크로블록들의 파티션들 또는 서브블록들을 포함하는, 비디오 프레임들 내의 블록들의 인트라 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 소정 비디오 프레임 내에서 비디오의 공간 리던던시를 감소시키거나 제거하도록 하는 공간 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 인접 프레임들 내에서 비디오의 시간 리던던시를 감소시키거나 제거하도록 하는 시간 예측에 의존한다. 인트라 모드 (I 모드) 는 여러 가지 공간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있으며, 단방향 예측 (P 모드) 또는 양방향 예측 (B 모드) 와 같은 인터 모드들은 여러 가지 시간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있다. 인터 모드 인코딩에 대한 콤포넌트들이 도 2 에 도시되어 있지만, 비디오 인코더 (20) 는 인트라 모드 인코딩에 대한 콤포넌트들을 더 포함할 수도 있음이 이해되어야 한다. 그러나, 이러한 콤포넌트들은 간결성 및 명료성을 위해 예시되지 않는다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도2 의 실례에서, 비디오 인코더 (20) 는 모션 보상 유닛 (44), 모션 추정 유닛 (42), 기준 프레임 저장소 (64), 합산기 (50), 변환 유닛 (52), 양자화 유닛 (54), 및 엔트로피 코딩 유닛 (56)을 포함한다. 비디오 블록 재구성에 대해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62)를 포함한다. 디블록킹 필터 (도 2 에는 미도시) 는 또한 재구성된 비디오로부터 블록화 아티팩트를 제거하기 위해 블록 경계부들을 필터링하도록 포함될 수도 있다. 원한다면, 디블록킹 필터는 일반적으로 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 기준 프레임들에서의 하나 이상의 블록들에 대해 그 수신된 비디오 블록의 인트라 예측 코딩을 수행하여 시간 압축을 제공한다. 인트라 예측 유닛 (46) 은 코딩될 블록과 동일한 프레임 또는 슬라이스에서 하나 이상의 이웃 블록들에 대해 그 수신된 비디오 블록의 인트라 예측 코딩을 수행하여 공간 압축을 제공할 수도 있다.
모드 선택 유닛 (40) 은, 예컨대 각각의 모드에서 생성된 에러 결과들에 기초하여, 코딩 모드들 중 하나, 즉 인트라 또는 인터를 선택한다. 모드 선택 유닛 (40) 이 블록에 대한 인터 모드 인코딩을 선택할 때, 분해능 선택 유닛 (48) 은 블록에 대한 모션 벡터의 분해능을 선택할 수도 있다. 예를 들어, 분해능 선택 유닛 (48) 은 블록에 대한 모션 벡터에 대해 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 선택할 수도 있다. 분해능 선택 유닛 (48) 은 블록의 모션 벡터에 대한 분해능을 선택하기 위한 다양한 기준들을 분석할 수도 있다.
일부 실례들에서, 분해능 선택 유닛 (48) 은 잠재적 기준 프레임들의 리스트에서 시간적으로 가장 최근의 기준 프레임을 나타내는 모션 벡터들에 대해서만 분해능 선택을 수행할 수도 있다. 기준 프레임이 리스트에서 가장 최근 프레임이 아닐 때, 분해능 선택 유닛 (48) 은 모션 벡터에 대한 4 분의 1 픽셀 정밀도를 선택하도록 구성될 수도 있다.
실례로서, 분해능 선택 유닛 (48) 은 4 분의 1 픽셀 정밀도 모션 벡터를 사용하여 블록을 인코딩하는 것과 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 블록을 인코딩하는 것 사이의 에러 차이를 비교하도록 구성될 수도 있다. 그 차이가 임계치를 초과할 때, 분해능 선택 유닛 (48) 은 블록을 인코딩하기 위해 8 분의 1 픽셀 정밀도 모션 벡터를 선택할 수도 있다. 분해능 선택 유닛 (48) 은 또한 율왜곡 정보를 평가할 수도 있고, 비트 예산을 분석하고, 또는 인터 모드 예측 프로세스 동안에 블록을 인코딩할 때 모션 벡터에 대한 8 분의 1 픽셀 정밀도를 사용할지 4 분의 1 픽셀 정밀도를 사용할지를 판정하도록 하는 다른 팩터들을 분석할 수도 있다. 인터 모드 인코딩될 블록에 대한 8 분의 1 정밀도 또는 4 분의 1 정밀도를 선택한 후, 모드 선택 유닛은 선택된 정밀도를 나타내는 메시지 (예컨대, 신호)를 모션 추정 유닛 (42) 에 전송할 수도 있다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적을 위해 분리되어 예시된다. 모션 추정은 모션 벡터들을 생성하여 비디오 블록들에 대한 모션을 추정하는 프로세스이다. 모션 벡터는, 예를 들어 현재 프레임 (또는 다른 코딩된 유닛) 내에서 코딩되는, 현재 블록에 대한 예측 기준 프레임 (또는 다른 코딩된 유닛) 내의 예측 블록의 변위를 나타낼 수도 있다. 예측 블록은, 절대차 합 (SAD), 제곱차 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는 픽셀 차이와 관련하여, 코딩될 블록을 밀접하게 매칭시키는 것으로 발견된 블록이다. 모션 벡터는 또한 매크로블록의 파티션의 변위를 나타낼 수도 있다. 모션 보상은, 모션 추정에 의해 판정된 모션 벡터에 기초하여 예측 블록을 페치 (fetch) 또는 생성하는 것을 수반할 수도 있다. 또한, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 일부 실례들에서 기능적으로 통합될 수도 있다.
모션 추정 유닛 (42) 은 비디오 블록을 기준 프레임 저장소 (64) 에서의 기준 프레임의 블록들에 비교함으로써, 선택된 정밀도에서 인터 코딩된 비디오 블록에 대한 모션 벡터를 계산한다. 모션 추정 유닛 (42) 또는 모션 보상 유닛 (44) 은 기준 프레임 저장소 (64) 에 포함된 기준 프레임의 소수부 픽셀 포지션들에 대한 값들을 계산할 수도 있다. 일부 실례들에서, 합산기 (62) 또는 비디오 인코더 (20) 의 다른 유닛은 재구성된 블록들에 대한 소수부 픽셀 포지션 값들을 계산할 수도 있고, 그 후, 소수부 픽셀 포지션들에 대한 계산된 값들과 함께 재구성된 블록들을 기준 프레임 저장소 (64) 에 저장할 수도 있다. 모션 보상 유닛 (44) 은 또한 기준 프레임, 예컨대, I 프레임 또는 P 프레임의 서브-정수 픽셀들을 보간할 수도 있다.
모션 추정 유닛 (42), 모션 보상 유닛 (44), 모드 선택 유닛 (40) 또는 비디오 인코더 (20) 의 다른 유닛은 또한 블록을 인코딩하는 데 사용되는 모션 벡터에 대한 4 분의 1 픽셀 정밀도 또는 8 분의 1 픽셀 정밀도의 사용을 시그널링할 수도 있다. 일부 실례들에서, 모션 추정 유닛 (42) 은 대응하는 모션 벡터가 8 분의 1 픽셀 정밀도를 사용하는지 또는 4 분의 1 픽셀 정밀도를 사용하는지를 나타내는 모든 모션 벡터들에 1 비트 플래그를 추가하도록 구성될 수도 있다. 다른 실례에서, 모션 추정 유닛 (42) 은 매크로블록에 대한 모든 모션 벡터들이 8 분의 1 픽셀 정밀도를 사용하는지 도는 4 분의 1 픽셀 정밀도를 사용하는지를 나타내는 1 비트 플래그를 매크로블록에 추가하도록 구성될 수도 있다.
다른 실례로서, 모션 추정 유닛 (42) 은 모션 벡터가 4 분의 1 픽셀 정밀도를 사용하는지 또는 8 분의 1 픽셀 정밀도를 사용하는지의 시그널링과, 모션 벡터에 대한 기준 프레임 인덱스 (ref_idx) 값을 결합할 수도 있다. 기준 프레임 인덱스 값은 기준 프레임 저장소 (64) 에 저장된 기준 프레임을 식별할 수도 있고, 모션 벡터가 8 분의 1 픽셀 정밀도의 것인지 또는 4 분의 1 픽셀 정밀도의 것인지를 나타낼 수도 있다. 모션 추정 유닛 (42) 은 기준 프레임의 표시 및 정밀도를 엔트로피 코딩 유닛 (45) 으로 전송할 수도 있으며, 이 엔트로피 코딩 유닛 (56) 은 인코딩되는 블록에 대한 인코딩 콘텍스트에 대응하는 잠재적 코드 워드들의 세트로부터 기준 프레임 인덱스 값을 선택할 수도 있다. 모션 추정 유닛 (42) 은 블록에 대한 인코딩 콘텍스트의 표시를 엔트로피 코딩 유닛 (56) 에 추가로 전송할 수도 있다.
모션 추정 유닛 (42) 은 모션 예측자에 대해 모션 벡터를 인코딩하도록 구성될 수도 있다. 모션 추정 유닛 (42) 은 이미 인코딩된 이웃 블록들의 모션 벡터들의 평균으로서 모션 예측자를 선택할 수도 있다. 현재 블록에 대한 모션 벡터를 인코딩하기 위해, 모션 추정 유닛 (42) 은 모션 벡터와 모션 예측자 사이의 차이를 계산하여 모션 벡터 차이 값을 형성할 수도 있다. 일부 실례들에서, 모션 추정 유닛 (42) 은 항상 미리 정해진 모션 분해능으로 모션 벡터들을 인코딩할 수도 있다. 즉, 모션 추정 유닛 (42) 은 항상 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도로 모션 벡터를 인코딩할 수도 있다. 일부 실례들에서, 모션 추정 유닛 (42) 은 인코딩될 모션 벡터와 동일한 모션 분해능으로 모션 예측자를 양자화할 수도 있다.
ITU H.264 표준은 "리스트"로서 잠재적 기준 프레임들의 세트를 참조한다. 따라서, 기준 프레임 저장소 (64) 에 저장된 기준 프레임들의 세트는 기준 프레임들의 리스트에 대응할 수도 있다. 모션 추정 유닛 (42) 은 기준 프레임 저장소 (64) 로부터의 하나 이상의 기준 프레임들의 블록들을 현재 프레임, 예컨대, P 프레임 또는 B 프레임의 인코딩될 블록과 비교한다. 기준 프레임 저장소 (64) 의 기준 프레임들이 서브정수 픽셀들에 대한 값들을 포함할 때, 모션 추정 유닛 (42) 에 의해 계산된 모션 벡터는 기준 프레임의 서브정수 픽셀 로케이션을 참조할 수도 있다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다. 모션 벡터에 의해 식별된 기준 프레임 블록은 예측 블록이라고 지칭될 수도 있다. 모션 보장 유닛 (44) 은 인코딩되는 블록에 대해 기준 프레임의 예측 블록에 대한 에러 값들을 계산한다.
모션 보상 유닛 (44) 은 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 비디오 인코더 (20) 는 모션 보상 유닛 (44) 으로부터의 예측 데이터를 코딩되는 오리지널 비디오 블록으로부터 감산함으로써 잔여 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 연산을 수행하는 콤포넌트 또는 콤포넌트들을 나타낸다. 변환 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 잔여 블록에 적용하여, 잔여 변환 계수 값들을 포함하는 비디오 블록을 생성한다.
변환 유닛 (52) 은 H.264 표준에 의해 정의된 것들과 같이, 개념적으로 DCT 와 유사한 다른 변환들을 수행할 수도 있다. 웨이블릿 변환들, 정수 변환들, 서브대역 변환들 또는 다른 타입의 변환들이 또한 사용될 수 있다. 어떤 경우에서든, 변환 유닛 (52) 은 잔여 블록에 변환을 적용하여, 잔여 변환 계수들의 블록을 생성한다. 변환은 픽셀 값 도메인으로부터의 잔여 정보를 주파수 도메인과 같은 변환 도메인으로 변환한다. 양자화 유닛 (54) 은 잔여 변환 계수들을 양자화하여 비트율을 더 감소시킨다. 양자화 프로세스는 계수들 중 일부 또는 모두와 관련된 비트 깊이를 감소시킬 수도 있다. 양자화 정도는 양자화 파라미터를 조절함으로써 수정될 수도 있다.
양자화에 이어서, 엔트로피 코딩 유닛 (56) 은 양자화된 변환 계수들을 양자화 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 콘텍스트 적응적 이진 연산 코딩 (CABAC), 또는 다른 엔트로피 코딩 기법을 수행할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩에 이어서, 인코딩된 비디오는 다른 디바이스로 송신될 수도 있으며, 또는 추후 송신 또는 취출을 위해 아카이브될 수도 있다. 콘텍스트 적응적 이진 연산 코딩의 경우에 있어서, 콘텍스트는 이웃 매크로블록들에 기초할 수도 있다.
일부 경우들에 있어서, 엔트로피 코딩 유닛 (56) 또는 비디오 인코더 (20) 의 다른 유닛은, 엔트로피 코딩 이외에도, 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 매크로블록들 및 파티션들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 또한, 일부 경우들에 있어서, 엔트로피 코딩 유닛 (56) 은 매크로블록 또는 그의 파티션에서 계수들의 런 길이 코딩을 수행할 수도 있다. 특히, 엔트로피 코딩 유닛 (56) 은 매크로블록 또는 파티션에서 변환 계수들을 스캐닝하는 지그재그 스캔 또는 다른 스캔 패턴을 적용할 수도 있고, 추가 압축을 위해 제로의 런들을 인코딩할 수도 있다. 엔트로피 코딩 유닛 (56) 은 또한 인코딩된 비디오 비트스트림에서 송신을 위해 적절한 신택스 엘리먼트들을 갖는 헤더 정보를 구성할 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은 각각 역양자화 및 역변환을 적용하여, 예컨대 기준 픽처 리스트에서의 기준 프레임 내에서 기준 블록으로서의 추후 사용을 위해, 픽셀 도메인에 잔여 블록을 재구성한다. 모션 보상 유닛 (44) 은 기준 프레임 저장소 (64) 의 프레임들 중 하나 이상의 것의 예측 블록에 잔여 블록을 추가함으로써 기준 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 모션 추정 시의 사용을 위해 서브정수 픽셀 값들 (예컨대, 반-픽셀 포지션들, 4 분의 1 픽셀 포지션들, 및/또는 8 분의 1 픽셀 포지션들) 을 계산하도록 하나 이상의 보간 필터들을 재구성된 잔여 블록에 적용할 수도 있다. 합산기 (62) 는 재구성된 잔여 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상 예측 블록에 추가하여, 기준 프레임 저장소 (64) 에서의 저장을 위해 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 기준 블록으로서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 사용되어 후속 비디오 프레임에서의 블록을 인터코딩할 수도 있다.
도 3 은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 실례를 나타낸 블록도이다. 도 3 의 실례에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라 예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 기준 프레임 저장소 (82) 및 합산기 (80) 를 포함한다. 비디오 디코더 (30) 는, 일부 실례들에서, 비디오 인코더 (20)(도 2) 와 관련하여 설명된 인코딩 패스에 일반적으로 상호적인 디코딩 패스를 수행한다. 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다.
모션 보상 유닛 (72) 은 비트스트림에서 수신된 모션 벡터들을 사용하여, 기준 프레임 저장소 (82) 에서 기준 프레임들의 예측 블록을 식별할 수도 있다. 이 개시물의 기법들에 따르면, 수신된 모션 벡터들은 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 가질 수도 있다. 모션 보상 유닛 (72) 은 특정 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는지 또는 4 분의 1 픽셀 정밀도를 갖는지를 표시하는, 인코딩된 비트스트림에 포함된 신호 값들을 수신하고 분석하도록 구성될 수도 있다. 전술된 바와 같이, 신호 값들은 모션 벡터들 내에 포함된 플래그들, 매크로블록의 모든 파티션들에 대한 모션 벡터들의 정밀도, 특히 기준 프레임 인덱스 값과, 기준 프레임 인덱스 값에 대응하는 기준 프레임의 일부분을 가리키는 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는지 또는 4 분의 1 픽셀 정밀도를 갖는지를 나타내는 특별히 설계된 가변 길이 코드들을 나타내는 매크로블록 층 플래그들, 또는 다른 타입들의 시그널링 값들에 대응할 수도 있다.
가변 길이 코드들이 각각의 모션 벡터들에 대한 정밀도를 시그널링하는 경우에 있어서, 특정 모션 벡터에 대한 가변 길이 코드는 모션 벡터에 대한 인코딩 콘텍스트에 특정되는 코드들의 세트에 포함될 수도 있다. 모션 벡터를 디코딩하기 위해, 모션 보상 유닛 (72) 은 인코딩된 블록에 대한 인코딩 콘텍스트를 결정하도록 구성될 수도 있다. 인코딩 콘텍스트는 이웃 블록들에 대한 모션 벡터들이 8 분의 1 픽셀 정밀도를 갖는지 또는 4 분의 1 픽셀 정밀도를 갖는지에 대응할 수도 있다.
모션 벡터들은 또한 인코딩된 모션 벡터에 대응하는 블록에 대한 모션 예측자에 대해 인코딩될 수도 있다. 모션 보상 유닛 (72) 은 디코딩될 블록에 이웃하는 블록들의 모션 벡터들의 중간값으로서 모션 예측자를 결정할 수도 있다. 모션 예측자를 결정한 후, 모션 보상 유닛 (72) 은, 인코딩된 비디오 비트스트림으로부터 모션 벡터 차이 값을 추출하고 모션 예측자에 그 모션 벡터 차이 값을 추가함으로써, 인코딩된 모션 벡터를 디코딩할 수도 있다. 일부 실례들에 있어서, 모션 보상 유닛 (72) 은 인코딩된 모션 벡터와 동일한 분해능으로 모션 예측자를 양자화할 수도 있다. 일부 실례들에 있어서, 모션 보상 유닛 (72) 은 모든 인코딩된 모션 예측자들에 동일한 정밀도를 사용할 수도 있다. 또 다른 실례들에서, 모션 보상 유닛 (72) 은, 상기의 방법들 중 어느 하나를 이용하고 시퀀스 파라미터 세트, 슬라이스 파라미터 세트, 또는 픽처 파라미터 세트에 포함된 데이터를 분석하여 어떤 방법을 사용할지를 결정하도록 구성될 수도 있다.
모션 벡터를 디코딩한 후, 모션 보상 유닛 (72) 은 기준 프레임 저장소 (72) 의 기준 프레임으로부터 모션 벡터에 의해 식별된 예측 블록을 추출할 수도 있다. 모션 벡터가 반-픽셀 포지션, 4 분의 1 픽셀 포지션, 또는 8 분의 1 픽셀 포지션과 같은 소수부 픽셀 포지션을 가리키면, 모션 보상 유닛 (72) 은 소수부 픽셀 포지션들에 대한 값들을 보간할 수도 있다. 모션 보상 유닛 (72) 은 이들 값들을 보간하기 위해 적응적 보간 필터들 또는 고정 보간 필터들을 사용할 수도 있다. 또한, 모션 보상 유닛 (72) 은 수신된 인코딩된 비디오 비트스트림을 통해, 대응하는 인코더로부터, 사용할 필터들 및 일부 경우들에 있어서 필터들에 대한 계수들의 표시를 수신할 수도 있다.
인트라 예측 유닛 (74) 은 비트스트림에서 수신된 인트라 예측 모드들을 이용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다. 역양자화 유닛 (76) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 블록 계수들을 역양자화, 즉 양자화해제한다. 역양자화 프로세스는, 예컨대 H.264 표준에 의해 정의된 바와 같은 종래의 프로세스를 포함할 수도 있다. 역양자화 프로세스는 또한 양자화 정도 및 마찬가지로 적용되어야 하는 역양자화 정도를 판정하기 위해 각각의 매크로블록에 대해 인코더 (50) 에 의해 계산된 양자화 파라미터 QPY 의 사용을 포함할 수도 있다.
역변환 유닛 (58) 은 픽셀 도메인에서 잔여 블록들을 생성하기 위해 변환 계수들에 역변환, 예컨대 역 DCT, 역정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 적용한다. 모션 보상 유닛 (72) 은 모션 보상된 블록들을 생성하여, 가능하게는 보간 필터들에 기초한 보간을 수행한다. 모션 추정을 위해 서브픽셀 정밀도와 함께 사용될 보간 필터들에 대한 식별자들은 블록의 신택스 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안에 비디오 인코더 (20) 에 의해 사용되는 바와 같은 보간 필터들을 사용하여, 기준 블록의 서브정수 픽셀들에 대한 보간 값들을 계산할 수도 있다. 모션 보상 유닛 (72) 은 수신된 신택스 정보에 따라서 비디오 인코더 (20) 에 의해 사용되는 보간 필터들을 결정할 수도 있고, 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다.
모션 보상 유닛 (72) 은 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는 데 사용되는 매크로블록들의 사이즈들, 인코딩된 비디오 시퀀스의 프레임의 각 매크로블록이 분할되는 방법을 설명하는 파티션 정보, 각각의 파티션이 인코딩되는 방법을 나타내는 모드들, 각각의 인터 인코딩된 매크로블록 또는 파티션에 대한 하나 이상의 기준 프레임들, 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정하기 위해 신택스 정보 중 일부를 이용한다.
합산기 (80) 는 잔여 블록들을 모션 보상 유닛 (72) 또는 인트라 예측 유닛에 의해 생성된 대응하는 예측 블록들과 합산하여, 디코딩된 블록들을 형성한다. 희망한다면, 디블록킹 필터가 또한 블록킹 아티팩트들을 제거하기 위해 디코딩된 블록을 필터링하도록 적용될 수도 있다. 그 후, 디코딩된 비디오 블록들은 기준 프레임 저장소 (82) 에 저장되어, 후속 모션 보상을 위해 기준 블록들을 제공하고 또한 디스플레이 디바이스 (예컨대, 도 1 의 디스플레이 디바이스 (32)) 상에서의 표시를 위해 디코딩된 비디오를 생성한다.
도 4 는 전 픽셀 포지션에 대한 소수부 픽셀 포지션들을 나타내는 개념도이다. 특히, 도 4 는 전 픽셀 (pel)(100) 에 대한 소수부 픽셀 포지션들을 나타낸다. 전 픽셀 (100) 은 반-픽셀 포지션들 (102A-102C)(반 pels (102)), 4 분의 1 픽셀 포지션들 (104A-104L)(4 분의 1 pels (104)), 및 8 분의 1 픽셀 포지션들 (106A-106AV)(egth pels (106)) 에 대응한다.
도 4 는 이들 포지션들이 선택적으로 포함될 수도 있음을 나타내도록 점선 표시 외곽선을 이용한 블록의 8 분의 1 픽셀 포지션들 (106) 을 나타낸다. 즉, 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는다면, 모션 벡터는 전 픽셀 포지션 (100), 반-픽셀 포지션들 (102), 4 분의 1 픽셀 포지션들 (104) 또는 8 분의 1 픽셀 포지션들 (106) 중 임의의 것을 가리킬 수도 있다. 그러나, 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는다면, 모션 벡터는 전 픽셀 포지션 (100), 반-픽셀 포지션들 (102), 또는 4 분의 1 픽셀 포지션들 (104) 을 가리킬 수도 있다.
전 픽셀 포지션 (100) 에서의 픽셀에 대한 값은 대응하는 기준 프레임에 포함될 수도 있다. 즉, 전 픽셀 포지션 (100) 에서의 픽셀에 대한 값은 기준 프레임에서의 픽셀의 실제 값, 예컨대 기준 프레임이 디스플레이될 때 궁극적으로 렌더링되고 디스플레이되는 값에 일반적으로 대응한다. 반-픽셀 포지션들 (102), 4 분의 1 픽셀 포지션들 (104), 및 8 분의 1 픽셀 포지션들 (106)(총체적으로 소수부 픽셀 포지션들이라고 지칭됨) 은 적응적 보간 필터들 또는 고정 보간 필터들, 예컨대 위너 필터들, 이중선형 필터들, 또는 다른 필터들과 같은 다양한 수의 "탭들" (계수들) 의 필터들을 사용하여 보간될 수도 있다. 일반적으로, 소수부 픽셀 포지션의 값은 이웃 전 픽셀 포지션들의 값들 또는 이전에 결정된 소수부 픽셀 포지션들에 대응하는 하나 이상의 이웃 픽셀들로부터 보간될 수도 있다.
도 5 는 현재 블록 (120) 에 대한 인코딩 콘텍스트를 결정하는 데 사용될 수도 있는 블록들을 나타낸 개념도이다. 도 5 의 실례는 2 개의 이웃 블록들, 즉 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 을 갖는 현재 블록 (120) 을 나타낸다. 현재 블록 (120) 은, 현재 인코딩되고 있거나 디코딩되고 있으며 코딩 유닛 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 가 인코딩 콘텍스트를 결정하고 있는 블록에 대응할 수도 있다.
현재 블록 (120) 의 상단 좌측 코너, 상측 이웃 블록 (122) 의 하단 좌측 코너, 및 좌측 이웃 블록 (124) 의 상단 우측 코너가 이 실례에서 각각 접촉한다. 많은 코딩 유닛들은 프레임에 대해 좌측에서 우측으로 및 상측에서 하측으로 비디오 블록들을 프로세싱하도록 구성된다. 따라서, 현재 블록 (120) 에 대한 인코딩 콘텍스트는 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 과 같이 현재 블록 (120) 의 상측 및 좌측에 있는 블록들에 기반을 둘 수도 있다.
현재 블록 (120) 은 매크로블록 또는 매크로블록의 파티션에 대응할 수도 있다. 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 은 각각 별개의 매크로블록들에 대응할 수도 있다. 즉, 현재 블록 (120) 은 제 1 매크로블록의 일부분에 대응할 수도 있고, 상측 이웃 블록 (122) 은 제 2 의 상이한 매크로블록의 일부분에 대응할 수도 있으며, 좌측 이웃 블록 (124) 은 제 3 의 상이한 매크로블록의 일부분에 대응할 수도 있다. 일부 실례들에 있어서, 현재 블록 (120) 은 현재 매크로블록의 파티션에 대응할 수도 있고, 상측 이웃 블록 (122) 은 현재 블록 상측의 매크로블록의 4x4 픽셀 하단 좌측 부분에 대응할 수도 있으며, 좌측 이웃 블록 (124) 은 현재 매크로블록 좌측의 매크로블록의 4x4 상단 우측 부분에 대응할 수도 있다. 일부 실례들에서, 현재 블록 (120), 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 는 동일한 매크로블록들의 일부분일 수도 있고, 또는 상이한 매크로블록들의 일부분일 수도 있다.
현재 블록 (120) 에 대한 인코딩 콘텍스트를 결정하기 위해, 코딩 유닛은 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 에 대한 모션 벡터들이 8 분의 1 정밀도를 갖는지 또는 4 분의 1 정밀도를 갖는지를 분석할 수도 있다. 상측 이웃 블록 (122) 에 대한 모션 벡터는 상측 이웃 블록 (122) 을 포함하는 더 큰 비디오 데이터 블록에 대한 것일 수도 있다. 예를 들어, 상측 이웃 블록 (122) 은 단일 모션 벡터를 갖는 8x8 픽셀 파티션 내에 포함될 수도 있는 4x4 픽셀 영역으로서 정의될 수도 있다. 마찬가지로, 좌측 이웃 블록 (124) 에 대한 모션 벡터는 좌측 이웃 블록 (124) 을 포함하는 더 큰 비디오 데이터 블록에 대한 것일 수도 있다.
현재 블록 (120) 에 대한 제 1 인코딩 콘텍스트는 상측 이웃 블록 (122) 에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 가 또한 4 분의 1 픽셀 정밀도를 갖는 경우에 대응할 수도 있다. 현재 블록 (120) 에 대한 제 2 인코딩 콘텍스트는 상측 이웃 블록 (122) 에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는 경우에 대응할 수도 있다. 현재 블록 (120) 에 대한 제 3 인코딩 콘텍스트는 상측 이웃 블록 (122) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는 경우에 대응할 수도 있다. 현재 블록 (120) 에 대한 제 4 인코딩 콘텍스트는 상측 이웃 블록 (122) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는 경우에 대응할 수도 있다.
하기의 표 1 은 전술된 예시적인 인코딩 콘텍스트들을 요약한다. 표 1 은 또한 인코딩 콘텍스트와, 대응하는 인코딩 콘텍스트에서 현재 블록 (120) 에 대한 모션 벡터의 기준 프레임 인덱스 값을 인코딩할 때 사용할 가변 길이 코드들의 세트 사이의 예시적인 관계를 나타낸다.
[표 1]
Figure 112012076124423-pct00001
표 2 내지 도 5 는 예시적인 기준 프레임 인덱스 값에 대한 코드워드들의 예시적인 세트들을 제공한다. 코드워드들의 이들 예시적인 세트들은 논증 및 설명의 목적으로 제공된다. 일반적으로, 코드워드들의 세트들은, 예컨대 모션 벡터들이 대응하는 콘텍스트에서의 기준 프레임 인덱스 값에 대응하는 기준 프레임을 참조할 때 특정 기준 프레임 인덱스 값이 발생할 가능성 및 8 분의 1 픽셀 정밀도 모션 벡터들 또는 4 분의 1 픽셀 정밀도 모션 벡터들이 콘텍스트에 사용될 가능성을 나타내는 데이터에 기초하여, 잠재적 콘텍스트들 각각에 대해 CAVLC 알고리즘을 실행함으로써 생성될 수도 있다. 표 2 내지 표 5 의 실례들은 상이한 콘텍스트들에서 4 분의 1 픽셀 정밀도 모션 벡터들 및 8 분의 1 픽셀 정밀도 모션 벡터들 양측 모두에 대해 동일한 기준 프레임 인덱스 값에 대한 예시적인 코드워드들을 제공한다.
표 2 는 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 양측 모두에 대한 모션 벡터들이 4 분의 1 픽셀 정밀도를 갖는 경우의 제 1 예시적인 콘텍스트에 대한 코드워드들을 나타낸다. 이들 모션 벡터들 양측 모두가 4 분의 1 픽셀 정밀도를 갖는 경우, 현재 블록 (120) 에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것이, 예컨대 경험적 테스팅을 통해 판정될 수도 있다. 따라서, 이 콘텍스트에서 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는다는 것을 나타내는 기준 프레임 인덱스 값에 대한 코드워드는 모션 벡터가 8 분의 1 정밀도를 갖는다는 것을 역시 나타내는 기준 값에 대한 코드워드보다 비교적 짧을 수도 있다. 다른 실례들에서, 경험적 테스팅은, 반대로, 현재 블록 (120) 에 대한 모션 벡터가 이 콘텍스트 대신에 8 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것 또는 이 콘텍스트에서 4 분의 1 이나 8 분의 1 픽셀 정밀도의 확률들이 거의 동일할 수도 있다는 것을 나타낼 수도 있다. 어떤 경우에서든, 모션 벡터에 대해 더 가능성이 큰 정밀도에 대해 더 짧은 코드워드를 가짐으로써, 동일한 기준 프레임에 대한 콘텍스트에서 더 작은 가능성을 갖는 정밀도에 대한 코드워드에 대해, 비트 절약이 성취될 수도 있다.
[표 2]
Figure 112012076124423-pct00002
표 3 은 상측 이웃 블록 (122) 에 대한 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 이 8 분의 1 픽셀 정밀도를 갖는 경우의 제 2 예시적인 콘텍스트에 대한 코드워드들을 나타낸다. 이들 모션 벡터들이 그러한 정밀도들을 가질 때, 현재 블록 (120) 에 대한 모션 벡터는 8 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것이, 예컨대 경험적 테스팅을 통해 판정될 수도 있다. 따라서, 이 콘텍스트에서 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는다는 것을 나타내는 기준 프레임 인덱스 값에 대한 코드워드는 모션 벡터가 8 분의 1 정밀도를 갖는다는 것을 역시 나타내는 기준 값에 대한 코드워드보다 비교적 길 수도 있다. 다른 실례들에서, 경험적 테스팅은, 반대로, 현재 블록 (120) 에 대한 모션 벡터가 이 콘텍스트 대신에 4 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것 또는 이 콘텍스트에서 4 분의 1 이나 8 분의 1 픽셀 정밀도의 확률들이 거의 동일할 수도 있다는 것을 나타낼 수도 있다.
[표 3]
Figure 112012076124423-pct00003
표 4 는 상측 이웃 블록 (122) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 갖는 경우 및 좌측 이웃 블록 (124) 이 4 분의 1 픽셀 정밀도를 갖는 경우의 제 3 예시적인 콘텍스트에 대한 코드워드들을 나타낸다. 이들 모션 벡터들이 그러한 정밀도들을 가질 때, 현재 블록 (120) 에 대한 모션 벡터는 4 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것이, 예컨대 경험적 테스팅을 통해 판정될 수도 있다. 따라서, 이 콘텍스트에서 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는다는 것을 나타내는 기준 프레임 인덱스 값에 대한 코드워드는 모션 벡터가 8 분의 1 정밀도를 갖는다는 것을 역시 나타내는 기준 값에 대한 코드워드보다 비교적 짧을 수도 있다. 다른 실례들에서, 경험적 테스팅은, 반대로, 현재 블록 (120) 에 대한 모션 벡터가 이 콘텍스트 대신에 8 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것 또는 이 콘텍스트에서 4 분의 1 이나 8 분의 1 픽셀 정밀도의 확률들이 거의 동일할 수도 있다는 것을 나타낼 수도 있다.
[표 4]
Figure 112012076124423-pct00004
표 5 는 상측 이웃 블록 (122) 및 좌측 이웃 블록 (124) 양측 모두에 대한 모션 벡터들이 8 분의 1 픽셀 정밀도를 갖는 경우의 제 4 예시적인 콘텍스트에 대한 코드워드들을 나타낸다. 이들 모션 벡터들 양측 모두가 8 분의 1 픽셀 정밀도를 갖는 경우, 현재 블록 (120) 에 대한 모션 벡터가 8 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것이, 예컨대 경험적 테스팅을 통해 판정될 수도 있다. 따라서, 이 콘텍스트에서 모션 벡터가 4 분의 1 픽셀 정밀도를 갖는다는 것을 나타내는 기준 프레임 인덱스 값에 대한 코드워드는 모션 벡터가 8 분의 1 정밀도를 갖는다는 것을 역시 나타내는 기준 값에 대한 코드워드보다 비교적 길 수도 있다. 다른 실례들에서, 경험적 테스팅은, 반대로, 현재 블록 (120) 에 대한 모션 벡터가 이 콘텍스트 대신에 4 분의 1 픽셀 정밀도를 가질 가능성이 있을 수도 있다는 것 또는 이 콘텍스트에서 4 분의 1 이나 8 분의 1 픽셀 정밀도의 확률들이 거의 동일할 수도 있다는 것을 나타낼 수도 있다.
[표 5]
Figure 112012076124423-pct00005
전술된 바와 같이, 표 2 내지 표 5 의 코드워드들은 단지 실례의 목적으로 제공된다. 일반적으로, 이들 다양한 콘텍스트들에 대한 코드워드들은 경험적 테스팅을 통해서 수집된 통계치를 이용하여 CAVLC 알고리즘을 실행함으로써 생성될 수도 있다. 통계치는, 특정 기준 프레임이 특정 콘텍스트에서의 모션 벡터에 의해 식별될 가능성 뿐 아니라 기준 프레임을 식별하는 모션 벡터가 대응하는 콘텍스트에서 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 가질 가능성에 관련될 수도 있다. CAVLC 알고리즘을 실행하는 것은, 모션 벡터에 대한 4 분의 1 픽셀 정밀도 및 모션 벡터에 대한 8 분의 1 픽셀 정밀도와 쌍을 이루는, 각각의 잠재적 기준 프레임 인덱스 값에 대한 코드워드들을 생성할 수도 있다. 특정 인코딩 콘텍스트를 이용하여 모션 벡터들을 인코딩함으로써, 이 개시물의 기법들은, 가장 가능성이 큰 기준 프레임을 참조하는 모션 벡터의 가능성이 더 큰 정밀도가, 가능성이 적은 기준 프레임을 참조하는 모션 벡터에 대한 가능성이 적은 정밀도보다 특정 콘텍스트에서 더 짧은 코드워드들을 가질 수도 있다는 점에서, 코딩 비트 절약을 성취할 수도 있다.
도 6 은, 8 분의 1 픽셀 정밀도 모션 벡터들 또는 4 분의 1 픽셀 정밀도 모션 벡터들 중 어느 하나를 이용하여 비디오 데이터 블록을 인코딩하고, 정밀도의 선택을 시그널링하는 예시적인 방법을 나타낸 플로우차트이다. 설명을 위해, 도 6 의 방법은 도 2 의 비디오 인코더 (20) 와 관련하여 설명된다. 그러나, 다른 유닛들, 예컨대, 프로세서들, 비디오 인코더들, 비디오 코덱들, 제어 유닛들, 또는 다른 하드웨어, 소프트웨어, 또는 펌웨어 구현물들이 역시 도 6 의 방법을 수행하도록 구성될 수도 있다는 것이 이해되어야 한다.
먼저, 비디오 인코더 (20) 는 인코딩될 비디오 데이터 블록을 수신할 수도 있다 (150). 도 6 의 실례에서, 블록은 인터 모드 인코딩된 프레임 또는 픽처 (예컨대, P 또는 B 프레임) 의 블록에 대응할 수도 있다. 모드 선택 유닛 (40) 은 블록을 수신하고 블록을 모션 추정 유닛 (42) 로 포워딩하여 기준 프레임 저장소 (64) 에 저장된 기준 프레임에 대해 블록에 대한 모션 검색을 수행할 수도 있다. 모션 추정 유닛 (42) 은 모션 검색 알고리즘을 실행하여 블록에 대한 모션 벡터를 계산할 수도 있다.
모션 추정 유닛 (42) 은 블록을 인코딩하기 위해 8 분의 1 픽셀 정밀도를 갖는 모션 벡터를 사용할지 또는 4 분의 1 픽셀 정밀도를 갖는 모션 벡터를 사용할지를 추가로 결정할 수도 있다 (152). 일부 실례들에서, 모션 추정 유닛 (42) 은, 예컨대 2 개의 인코딩 패스들에서, 4 분의 1 픽셀 정밀도를 갖는 블록에 대한 제 1 모션 벡터 및 8 분의 1 픽셀 정밀도를 갖는 블록에 대한 제 2 모션 벡터를 계산할 수도 있다. 제 1 모션 벡터는 제 1 예측 블록을 참조할 수도 있고, 제 2 모션 벡터는 제 2 예측 블록을 참조할 수도 있다. 2 개의 예측 블록들은 반드시 동일한 기준 프레임으로부터 올 필요는 없다.
모션 보상 유닛 (44) 은 제 1 예측 블록 및 제 2 예측 블록에 대한 에러 값들을 계산할 수도 있다. 예를 들어, 모션 보상 유닛 (44) 은 제1 예측 블록과 인코딩될 블록 사이의 차이 및 제 2 예측 블록과 인코딩될 블록 사이의 차이를 계산할 수도 있다. 모션 보상 유닛 (44) 은 제 1 및 제 2 예측 블록들에 대한 모션 벡터들을 계산하는 모션 추정 프로세스 동안에 율왜곡 값들을 계산할 수도 있다. 분해능 선택 유닛 (48) 은 제 1 및 제 2 예측 블록들의 모션 벡터들에 대한 율왜곡 값들을 비교할 수도 있고, 더 낮은 율왜곡을 제공하는지를 판정할 수도 있다. 다른 실례들에서, 분해능 선택 유닛 (48) 은, 당업자에 의해 결정될 수도 있는 바와 같은 다른 방식들로, 8 분의 1 정밀도를 갖는 모션 벡터를 이용하여 블록을 인코딩할지 또는 4 분의 1 픽셀 정밀도를 갖는 모션 벡터를 이용하여 블록을 인코딩할지를 결정할 수도 있다.
그 후, 모션 추정 유닛 (42) 은 선택된 모션 벡터를 인코딩할 수도 있다 (154). 예를 들어, 모션 추정 유닛 (42) 은 인코딩될 블록에 대한 모션 예측자를 선택할 수도 있다. 모션 예측자는 인코딩될 블록의 이웃 블록들에 대한 모션 벡터들의 중간값에 대응할 수도 있다. 모션 추정 유닛 (42) 은 모션 벡터 차이 값, 예컨대 선택된 모션 벡터와 모션 예측자 사이의 차이를 계산함으로써 모션 벡터를 인코딩할 수도 있다. 모션 추정 유닛 (42) 은, 또한, 일부 실례들에서, 모션 벡터 차이 값을 계산하기 전에, 모션 예측자를 선택된 모션 벡터의 분해능으로 양자화할 수도 있다. 일부 실례들에서, 모션 추정 유닛 (42) 은 모션 벡터 차이 값들이 항상 공통 분해능으로 계산되는 것, 예컨대 항상 8 분의 1 픽셀 정밀도 또는 항상 4 분의 1 픽셀 정밀도로 계산되는 것을 보장할 수도 있다. 비디오 인코더 (20) 는 또한 모션 벡터 차이 값이 계산된 방법 (예컨대 모션 예측자가 모션 벡터와 동일한 정밀도로 양자화되었는지 또는 모션 벡터 차이 값이 글로벌 정밀도로 계산되었는지) 을 나타내는 시그널링 정보를 생성할 수도 있다.
모션 벡터를 인코딩하기 위해 모션 벡터 차이 값을 계산하는 것 외에도, 비디오 인코더 (20) 는 또한 인코딩된 모션 벡터에 대한 정밀도 (예컨대, 8 분의 1 픽셀 또는 4 분의 1 픽셀) 를 시그널링할 수도 있다. 도 6 의 실례에서, 엔트로피 코딩 유닛 (56) 은 모션 벡터에 의해 식별된 예측 블록을 포함하는 기준 프레임을 식별하는 기준 프레임 인덱스 값과 함께 그 신호를 포함할 수도 있다. 이 실례에서, 엔트로피 코딩 유닛 (56) 은 이웃 블록들이 8 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도를 갖는 모션 벡터들을 사용하여 인코딩되었는지에 기초하여, 인코딩된 블록에 대한 인코딩 콘텍스트를 결정할 수도 있다 (156).
그 후, 엔트로피 코딩 유닛 (56) 은 기준 프레임 인덱스 값에 대한 코드워드를 결정할 수도 있고, 그 결정된 콘텍스트에 대응하는 코드워드들의 세트로부터 모션 벡터에 대한 정밀도를 판정하여, 모션 벡터에 대한 선택된 정밀도를 시그널링할 수도 있으며, 그에 따라 결정된 콘텍스트를 이용하여 선택된 정밀도를 시그널링할 수도 있다 (158). 엔트로피 코딩 유닛 (56) 은 또한 모션 벡터 차이 값에 대한 코드워드를 선택하여, 모션 벡터 차이 값을 엔트로피 인코딩할 수도 있다. 그 후, 비디오 인코더 (20) 는 인코딩된 모션 벡터 및 신호, 예컨대 모션 벡터 차이에 대한 코드워드, 및 기준 프레임 인덱스 값 및 선택된 정밀도에 대한 코드워드를 출력할 수도 있다 (160).
도 6 의 방법은 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터 이상으로 블록에 대해 바람직한 것으로 판정될 때 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 비디오 데이터 블록을 인코딩하는 단계, 블록에 대한 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 단계, 및 인코딩된 블록 및 신호 값을 출력하는 단계를 포함하는 것으로 요약될 수도 있다.
도 7 은 인코딩된 블록에 대한 모션 벡터의 정밀도를 나타내는 신호 값을 사용하여, 인코딩된 블록을 디코딩하는 예시적인 방법을 나타낸 플로우차트이다. 설명을 위해, 도 7 의 방법은 도 3 의 비디오 디코더 (30) 에 관하여 설명된다. 그러나, 다른 유닛들, 예컨대 프로세서들, 비디오 디코더들, 비디오 코덱들, 제어 유닛들, 또는 다른 하드웨어, 소프트웨어, 또는 펌웨어 구현물들이 도 7 의 방법을 수행하도록 구성될 수도 있다는 것이 이해되어야 한다.
먼저, 엔트로피 디코딩 유닛 (70) 은 인코딩된 비디오 데이터 블록을 수신할 수도 있다 (180). 예를 들어, 비디오 디코더 (3) 를 포함하는 클라이언트 디바이스는 네트워크 또는 브로드캐스트 송신을 통해, 인코딩된 비디오 데이터의 스트림을 수신할 수도 있고, 또는 DVD, 블루 레이 디스크, 하드디스크, 플래시 드라이브, 또는 다른 저장 매체와 같은 저장 매체로부터 비디오 데이터를 추출할 수도 있다. 인코딩된 블록은 모션 벡터 차이 값, 기준 프레임 인덱스 값에 대한 코드워드, 및 모션 벡터 차이 값을 이용하여 인코딩된 모션 벡터의 정밀도 표시, 및 잔여 값을 포함할 수도 있다.
엔트로피 디코딩 유닛 (70) 은, 예컨대 모션 보상 유닛 (72) 으로부터, 인코딩된 블록에 대한 인코딩 콘텍스트의 표시를 수신할 수도 있다. 모션 보상 유닛 (72) 은, 예컨대 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 이용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 이용하여 인코딩되었는지를 판정할 수도 있다 (182). 그 후, 엔트로피 디코딩 유닛 (70) 은 블록에 대한 인코딩 콘텍스트에 대응하는 코드워드들의 세트에서 코드워드를 식별함으로써, 기준 프레임 기준 값 및 인코딩된 모션 벡터의 정밀도를 판정할 수도 있다 (184). 엔트로피 디코딩 유닛 (70) 은 모션 벡터에 대한 기준 프레임 인덱스 값 및 정밀도, 모션 벡터 차이 값, 및 잔여 값을 모션 보상 유닛 (72) 및 인트라 예측 유닛 (74) 으로 제공할 수도 있다.
모션 보상 유닛 (72) 은 결정된 정밀도로 모션 벡터 차이 값을 이용하여 블록에 대한 모션 벡터를 디코딩할 수도 있다 (186). 예를 들어, 모션 보상 유닛 (72) 은 이미 디코딩된 이웃 블록들의 모션 벡터들의 중간값으로서 모션 벡터에 대한 모션 예측자를 결정할 수도 있다. 일부 실례들에서, 모션 보상 유닛 (72) 은 디코딩될 모션 벡터에 대한 결정된 정밀도로 모션 예측자를 양자화할 수도 있다. 일부 실례들에서, 모션 보상 유닛 (72) 은 임의의 모션 벡터를 디코딩할 때 동일한 정밀도를 사용하도록 구성될 수도 있다. 어느 경우에서든, 모션 보상 유닛 (72) 은 모션 벡터 차이 값과 선택된 모션 예측자의 합을 계산함으로써 모션 벡터를 디코딩할 수도 있다. 이 합은 결정된 정밀도, 예컨대 8 분의 1 픽셀 정밀도 또는 4 분의 1 픽셀 정밀도를 갖는 모션 벡터를 생성할 수도 있다.
모션 보상 유닛 (72) 은 디코딩된 모션 벡터를 이용하여 블록을 더 디코딩할 수도 있다 (188). 예를 들어, 모션 보상 유닛 (72) 은 디코딩된 모션 벡터 및 기준 프레임 인덱스 값에 의해 식별되는, 기준 프레임 저장소 (82) 의 기준 프레임의 예측 블록을 참조할 수도 있다. 일부 경우들에 있어서, 모션 보상 유닛 (72) 은, 예컨대 적응적 보간 필터들 또는 고정 보간 필터들을 사용하여, 기준 프레임의 소수부 픽셀 포지션들에 대한 값들을 보간할 수도 있다. 또한, 모션 보상 유닛 (72) 은 수신된 잔여 값을 예측 블록에 추가하여, 디코딩된 블록을 생성할 수도 있다. 픽처의 모든 블록들을 디코딩한 후, 비디오 디코더 (30) 는 디코딩된 픽처를 디스플레이할 수도 있는 비디오 출력으로 디코딩된 픽처를 전달할 수도 있다. 비디오 디코더 (30) 는 또한, 추후 수신된 인코딩된 픽처들의 인코딩된 블록들에 대한 기준 프레임으로서 사용될, 기준 프레임 저장소 (82) 에 디코딩된 픽처를 저장할 수도 있다.
도 7 의 방법은, 인코딩된 비디오 데이터 블록, 및 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 것, 신호 값을 분석하여, 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되는 것을 판정하는 것, 및 신호 값에 기초하여 8 분의 1 픽셀 정밀도 모션 벡터를 이용하여 비디오 데이터 블록을 디코딩하는 것을 포함하는 것으로 요약될 수도 있다.
하나 이상의 실례들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드를 통해 컴퓨터 판독가능 매체에 저장되거나 송신될 수도 있고, 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예컨대 통신 프로토콜에 따라서 이곳저곳으로 컴퓨터 프로그램을 용이하게 전송하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적인 유형적 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장소는 이 개시물에서 설명된 기법들의 구현을 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스되어 명령들, 코드 및/또는 데이터 구조들을 취출할 수 있는 임의의 가용 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한사항이 아닌 실례로서, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 저장소, 자기 디스크 저장소, 또는 다른 자기 저장 디바이스, 또는 컴퓨터에 의해 액세스 될 수 있고 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는 데 이용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속을 적당히 컴퓨터 판독가능 매체로 칭한다. 예를 들어, 명령이 동축 케이블, 광섬유 케이블, 연선 (twisted pair), DSL (digital subscriber line), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속, 캐리어 파, 신호 또는 다른 일과성 매체를 포함하지 않지만, 그 대신에 비일시적이고 유형적인 저장 매체에 관한 것임을 이해해야 한다. 본 명세서에서 이용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 컴팩트디스크 (CD), 레이저 디스크, 광학 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루-레이 디스크를 포함하는데, 여기서 디스크 (disk) 는 보통 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기의 조합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로 (ASICs), 필드 프로그래밍가능 로직 어레이들 (FPGAs), 또는 다른 등가의 통합형 또는 이산형 논리 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 여기에서 사용된 바와 같은 "프로세서"라는 용어는 전술한 구조 또는 여기에서 설명된 기법들의 구현에 적합한 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 여기에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있고, 또는 결합형 코덱에 포함될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 충분히 구현될 수 있다.
이 개시물의 기법들은 무선 핸드셋, 집적회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함하는 광범위한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 콤포넌트들, 모듈들, 또는 유닛들이 이 개시물에서 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하도록 설명되었지만, 반드시 상이한 유닛들에 의한 구현을 요구하는 것은 아니다. 오히려, 전술된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합될 수도 있고, 또는 상호 동작 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 실례들이 설명되었다. 이들 및 다른 실례들은 다음 청구범위의 범주 내에 있다.

Claims (52)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하는 단계;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 단계; 및
    상기 인코딩된 블록 및 상기 신호 값을 출력하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 신호 값을 생성하는 단계는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 비디오 데이터 블록과 관련된 플래그에 대한 값을 설정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 생성하는 단계는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 설정하는 단계를 포함하고,
    상기 방법은, 상기 플래그가 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타낼 때, 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 인코딩하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 단계는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하는 단계를 포함하고,
    상기 신호 값을 생성하는 단계는 기준 프레임 인덱스 값 및 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 선택하여 상기 비디오 데이터 블록을 인코딩하는 단계를 포함하고,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임을 식별하는, 비디오 데이터를 인코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임에 대한 제 1 기준 프레임 인덱스 값을 포함하고,
    상기 제 1 기준 프레임 인덱스 값의 길이는 상기 기준 프레임에 대해 4 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 제 2 기준 프레임 인덱스 값의 길이보다 작은, 비디오 데이터를 인코딩하는 방법.
  6. 제 4 항에 있어서,
    상기 가변 길이 코드를 선택하는 단계는,
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하는 단계; 및
    상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트로부터 상기 가변 길이 코드를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 단계는 잠재적 기준 프레임들의 리스트에서 가장 최근의 기준 프레임을 포함하는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 단계는,
    상기 비디오 데이터 블록에 대해 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하는 단계; 및
    상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 비디오 데이터 블록에 대한 모션 예측자 사이의 차이를 포함하는 모션 벡터 차이 값을 계산하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  9. 제 8 항에 있어서,
    상기 모션 벡터 차이 값을 계산하는 단계는,
    상기 모션 예측자를 8 분의 1 픽셀 정밀도로 양자화하는 단계; 및
    상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 양자화된 모션 예측자 사이의 차이를 계산하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  10. 비디오 데이터를 인코딩하는 장치로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하고, 상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하도록 구성된 비디오 인코더를 포함하는, 비디오 데이터를 인코딩하는 장치.
  11. 제 10 항에 있어서,
    상기 신호 값을 생성하기 위해, 상기 비디오 인코더는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 비디오 데이터 블록과 관련된 플래그에 대한 값을 설정하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  12. 제 10 항에 있어서,
    상기 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 생성하기 위해, 상기 비디오 인코더는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 설정하도록 구성되고,
    상기 비디오 인코더는, 상기 플래그가 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타낼 때, 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 인코딩하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  13. 제 10 항에 있어서,
    상기 비디오 인코더는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하도록 구성되고,
    상기 신호 값을 생성하기 위해, 상기 비디오 인코더는 기준 프레임 인덱스 값 및 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 선택하여 상기 비디오 데이터 블록을 인코딩하도록 구성되고,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임을 식별하는, 비디오 데이터를 인코딩하는 장치.
  14. 제 13 항에 있어서,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임에 대한 제 1 기준 프레임 인덱스 값을 포함하고,
    상기 제 1 기준 프레임 인덱스 값의 길이는 상기 기준 프레임에 대해 4 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 제 2 기준 프레임 인덱스 값의 길이보다 작은, 비디오 데이터를 인코딩하는 장치.
  15. 제 13 항에 있어서,
    상기 가변 길이 코드를 선택하기 위해, 상기 비디오 인코더는, 상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하고, 상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트로부터 상기 가변 길이 코드를 선택하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  16. 제 10 항에 있어서,
    상기 비디오 인코더는 잠재적 기준 프레임들의 리스트에서 가장 최근의 기준 프레임을 포함하는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  17. 제 10 항에 있어서,
    상기 비디오 인코더는, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하고, 상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 비디오 데이터 블록에 대한 모션 예측자 사이의 차이를 포함하는 모션 벡터 차이 값을 계산하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  18. 제 17 항에 있어서,
    상기 모션 벡터 차이 값을 계산하기 위해, 상기 비디오 인코더는, 상기 모션 예측자를 8 분의 1 픽셀 정밀도로 양자화하고, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 양자화된 모션 예측자 사이의 차이를 계산하도록 구성된, 비디오 데이터를 인코딩하는 장치.
  19. 비디오 데이터를 인코딩하는 장치로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하는 수단;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하는 수단; 및
    상기 인코딩된 블록 및 상기 신호 값을 출력하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  20. 제 19 항에 있어서,
    상기 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 생성하는 수단은, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 설정하는 수단을 포함하고,
    상기 장치는, 상기 플래그가 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타낼 때, 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 인코딩하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  21. 제 19 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 수단은 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하는 수단을 포함하고,
    상기 신호 값을 생성하는 수단은 기준 프레임 인덱스 값 및 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 선택하여 상기 비디오 데이터 블록을 인코딩하는 수단을 포함하고,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임을 식별하는, 비디오 데이터를 인코딩하는 장치.
  22. 제 21 항에 있어서,
    상기 가변 길이 코드를 선택하는 수단은,
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하는 수단; 및
    상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트로부터 상기 가변 길이 코드를 선택하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  23. 제 19 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 수단은 잠재적 기준 프레임들의 리스트에서 가장 최근의 기준 프레임을 포함하는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  24. 제 19 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하는 수단은,
    상기 비디오 데이터 블록에 대해 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하는 수단; 및
    상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 비디오 데이터 블록에 대한 모션 예측자 사이의 차이를 포함하는 모션 벡터 차이 값을 계산하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  25. 제 24 항에 있어서,
    상기 모션 벡터 차이 값을 계산하는 수단은,
    상기 모션 예측자를 8 분의 1 픽셀 정밀도로 양자화하는 수단; 및
    상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 양자화된 모션 예측자 사이의 차이를 계산하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  26. 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행 시, 프로세서로 하여금,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 8 분의 1 픽셀 정밀도 모션 벡터의 사용이 4 분의 1 픽셀 정밀도 모션 벡터에 비해 비디오 데이터 블록에 대해 바람직한 것으로 판정될 때, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 비디오 데이터 블록을 인코딩하게 하고;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 신호 값을 생성하게 하고;
    상기 인코딩된 블록 및 상기 신호 값을 출력하게 하는, 컴퓨터 판독가능 저장 매체.
  27. 제 26 항에 있어서,
    상기 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 생성하게 하는 명령들은, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 설정하게 하는 명령들을 포함하고,
    상기 컴퓨터 판독가능 저장 매체는, 상기 플래그가 상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타낼 때, 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 인코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  28. 제 26 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하게 하는 명령들은 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하게 하는 명령들을 포함하고,
    상기 신호 값을 생성하게 하는 명령들은 기준 프레임 인덱스 값 및 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 선택하여 상기 비디오 데이터 블록을 인코딩하게 하는 명령들을 포함하고,
    상기 기준 프레임 인덱스 값은 상기 기준 프레임을 식별하는, 컴퓨터 판독가능 저장 매체.
  29. 제 28 항에 있어서,
    상기 가변 길이 코드를 선택하게 하는 명령들은,
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하게 하고,
    상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트로부터 상기 가변 길이 코드를 선택하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  30. 제 26 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하게 하는 명령들은 잠재적 기준 프레임들의 리스트에서 가장 최근의 기준 프레임을 포함하는 기준 프레임의 일부분에 대해 상기 비디오 데이터 블록을 인코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  31. 제 26 항에 있어서,
    상기 비디오 데이터 블록을 인코딩하게 하는 명령들은,
    상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하게 하고,
    상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 비디오 데이터 블록에 대한 모션 예측자 사이의 차이를 포함하는 모션 벡터 차이 값을 계산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  32. 제 31 항에 있어서,
    상기 모션 벡터 차이 값을 계산하게 하는 명령들은,
    상기 모션 예측자를 8 분의 1 픽셀 정밀도로 양자화하게 하고,
    상기 비디오 데이터 블록에 대한 상기 8 분의 1 픽셀 정밀도 모션 벡터와 상기 양자화된 모션 예측자 사이의 차이를 계산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  33. 비디오 데이터를 디코딩하는 방법으로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 단계;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하는 단계; 및
    상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  34. 제 33 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 분석하는 단계는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 분석하는 단계를 포함하고,
    상기 방법은 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 디코딩하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  35. 제 33 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 기준 프레임의 일부분에 대해 인코딩되었고,
    상기 신호 값을 분석하는 단계는,
    기준 프레임 인덱스 값 및 비디오 데이터 블록을 인코딩하기 위한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 분석하는 단계; 및
    상기 기준 프레임 인덱스 값을 사용하여 상기 기준 프레임을 식별하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  36. 제 35 항에 있어서,
    상기 인코딩된 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지에 기초하여 상기 인코딩된 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하는 단계를 더 포함하고,
    상기 기준 프레임을 식별하는 단계는 상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트에서 상기 기준 프레임 인덱스 값을 식별하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  37. 제 33 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 모션 벡터 차이 값을 포함하고,
    상기 인코딩된 비디오 데이터 블록을 디코딩하는 단계는,
    상기 인코딩된 비디오 데이터 블록에 대한 모션 예측자를 결정하는 단계; 및
    상기 모션 예측자와 상기 모션 벡터 차이 값의 합을 계산하여, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  38. 비디오 데이터를 디코딩하는 장치로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 입력 인터페이스; 및
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하고, 상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 비디오 디코더를 포함하는, 비디오 데이터를 디코딩하는 장치.
  39. 제 38 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 분석하기 위해, 상기 비디오 디코더는, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 분석하도록 구성되고,
    상기 비디오 디코더는 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 디코딩하도록 구성된, 비디오 데이터를 디코딩하는 장치.
  40. 제 38 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 기준 프레임의 일부분에 대해 인코딩되었고,
    상기 신호 값을 분석하기 위해, 상기 비디오 디코더는, 기준 프레임 인덱스 값 및 비디오 데이터 블록을 인코딩하기 위한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 분석하고, 상기 기준 프레임 인덱스 값을 사용하여 상기 기준 프레임을 식별하도록 구성된, 비디오 데이터를 디코딩하는 장치.
  41. 제 40 항에 있어서,
    상기 비디오 디코더는, 상기 인코딩된 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지에 기초하여, 상기 인코딩된 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하도록 구성되고,
    상기 기준 프레임을 식별하기 위해, 상기 비디오 디코더는, 상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트에서 상기 기준 프레임 인덱스 값을 식별하도록 구성된, 비디오 데이터를 디코딩하는 장치.
  42. 제 38 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 모션 벡터 차이 값을 포함하고,
    상기 인코딩된 비디오 데이터 블록을 디코딩하기 위해, 상기 비디오 디코더는, 상기 인코딩된 비디오 데이터 블록에 대한 모션 예측자를 결정하고, 상기 모션 예측자와 상기 모션 벡터 차이 값의 합을 계산하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하도록 구성된, 비디오 데이터를 디코딩하는 장치.
  43. 비디오 데이터를 디코딩하는 장치로서,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었음을 나타내는 신호 값을 수신하는 수단;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하여 상기 신호 값을 분석하는 수단; 및
    상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  44. 제 43 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 분석하는 수단은, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 분석하는 수단을 포함하고,
    상기 장치는, 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 디코딩하는 수단을 더 포함하는, 비디오 데이터를 디코딩하는 장치.
  45. 제 43 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 기준 프레임의 일부분에 대해 인코딩되었고,
    상기 신호 값을 분석하는 수단은,
    기준 프레임 인덱스 값 및 비디오 데이터 블록을 인코딩하기 위한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 분석하는 수단; 및
    상기 기준 프레임 인덱스 값을 사용하여 상기 기준 프레임을 식별하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  46. 제 45 항에 있어서,
    상기 인코딩된 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지에 기초하여 상기 인코딩된 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하는 수단을 더 포함하고,
    상기 기준 프레임을 식별하는 수단은 상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트에서 상기 기준 프레임 인덱스 값을 식별하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  47. 제 43 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 모션 벡터 차이 값을 포함하고,
    상기 인코딩된 비디오 데이터 블록을 디코딩하는 수단은,
    상기 인코딩된 비디오 데이터 블록에 대한 모션 예측자를 결정하는 수단; 및
    상기 모션 예측자와 상기 모션 벡터 차이 값의 합을 계산하여, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  48. 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행 시, 프로세서로 하여금,
    모션 벡터를 인코딩하는데 요구되는 비트의 수 및 상기 모션 벡터의 정밀도에 기초하여, 인코딩된 비디오 데이터 블록 및 상기 인코딩된 비디오 데이터 블록이 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는음을 나타내는 신호 값을 수신하게 하고;
    상기 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되는지에 기초하여 상기 비디오 데이터 블록에 대한 인코딩 콘텍스트 (encoding context) 를 결정함으로써, 상기 인코딩된 비디오 데이터 블록이 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 인코딩되었는지를 판정하도록 상기 신호 값을 분석하게 하고;
    상기 신호 값에 기초하여 상기 8 분의 1 픽셀 정밀도 모션 벡터를 사용하여 상기 인코딩된 비디오 데이터 블록을 디코딩하게 하는, 컴퓨터 판독가능 저장 매체.
  49. 제 48 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 매크로블록의 파티션을 포함하고,
    상기 신호 값을 분석하게 하는 명령들은, 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는, 상기 매크로블록과 관련된 플래그에 대한 값을 분석하게 하는 명령들을 포함하고,
    상기 컴퓨터 판독가능 저장 매체는 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 상기 매크로블록의 모든 파티션들을 디코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  50. 제 48 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 기준 프레임의 일부분에 대해 인코딩되었고,
    상기 신호 값을 분석하게 하는 명령들은,
    기준 프레임 인덱스 값 및 비디오 데이터 블록을 인코딩하기 위한 상기 8 분의 1 픽셀 정밀도 모션 벡터의 사용을 나타내는 가변 길이 코드를 분석하게 하는 명령들; 및
    상기 기준 프레임 인덱스 값을 사용하여 상기 기준 프레임을 식별하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  51. 제 50 항에 있어서,
    상기 인코딩된 비디오 데이터 블록의 이웃 블록들이 8 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지 또는 4 분의 1 픽셀 정밀도 모션 벡터들을 사용하여 인코딩되었는지에 기초하여 상기 인코딩된 비디오 데이터 블록에 대한 인코딩 콘텍스트를 결정하게 하는 명령들을 더 포함하고,
    상기 기준 프레임을 식별하게 하는 명령들은 상기 결정된 인코딩 콘텍스트에 대응하는 코드들의 세트에서 상기 기준 프레임 인덱스 값을 식별하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  52. 제 48 항에 있어서,
    상기 인코딩된 비디오 데이터 블록은 모션 벡터 차이 값을 포함하고,
    상기 인코딩된 비디오 데이터 블록을 디코딩하게 하는 명령들은,
    상기 인코딩된 비디오 데이터 블록에 대한 모션 예측자를 결정하게 하는 명령들; 및
    상기 모션 예측자와 상기 모션 벡터 차이 값의 합을 계산하여, 상기 8 분의 1 픽셀 정밀도 모션 벡터를 계산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020127024521A 2010-02-19 2011-02-16 비디오 코딩을 위한 적응적 모션 분해능 KR101387255B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US30638810P 2010-02-19 2010-02-19
US61/306,388 2010-02-19
US32322110P 2010-04-12 2010-04-12
US61/323,221 2010-04-12
US37617010P 2010-08-23 2010-08-23
US61/376,170 2010-08-23
US12/945,170 US9237355B2 (en) 2010-02-19 2010-11-12 Adaptive motion resolution for video coding
US12/945,170 2010-11-12
PCT/US2011/025113 WO2011103206A1 (en) 2010-02-19 2011-02-16 Adaptive motion resolution for video coding

Publications (2)

Publication Number Publication Date
KR20120126108A KR20120126108A (ko) 2012-11-20
KR101387255B1 true KR101387255B1 (ko) 2014-04-21

Family

ID=44476476

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127024521A KR101387255B1 (ko) 2010-02-19 2011-02-16 비디오 코딩을 위한 적응적 모션 분해능

Country Status (7)

Country Link
US (1) US9237355B2 (ko)
EP (2) EP4145828A1 (ko)
JP (2) JP2013520875A (ko)
KR (1) KR101387255B1 (ko)
CN (1) CN102783149B (ko)
TW (1) TW201218774A (ko)
WO (1) WO2011103206A1 (ko)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101452859B1 (ko) * 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
US20120251012A1 (en) * 2009-12-18 2012-10-04 Tomohiro Ikai Image filter, encoding device, decoding device, and data structure
US10327008B2 (en) 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
RU2565363C2 (ru) 2011-01-07 2015-10-20 Нокиа Корпорейшн Предсказание движения при видеокодировании
JP2012151576A (ja) * 2011-01-18 2012-08-09 Hitachi Ltd 画像符号化方法、画像符号化装置、画像復号方法及び画像復号装置
CN107517384B (zh) 2011-06-16 2020-06-30 Ge视频压缩有限责任公司 解码器、编码器、解码方法、编码方法以及存储介质
USRE47366E1 (en) 2011-06-23 2019-04-23 Sun Patent Trust Image decoding method and apparatus based on a signal type of the control parameter of the current block
CA2837532C (en) 2011-06-23 2018-10-02 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
CA2830046C (en) 2011-06-24 2018-09-04 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
KR102062283B1 (ko) 2011-06-24 2020-01-03 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
CN103563375B (zh) 2011-06-27 2017-04-05 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
CA2837535C (en) 2011-06-28 2018-09-04 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
MX2013010892A (es) 2011-06-29 2013-12-06 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
WO2013001749A1 (ja) 2011-06-29 2013-01-03 パナソニック株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置
AU2012277219A1 (en) 2011-06-30 2013-09-19 Sun Patent Trust Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device
CN103583048B (zh) 2011-06-30 2017-05-17 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
US10536701B2 (en) 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
KR20140034209A (ko) 2011-07-11 2014-03-19 파나소닉 주식회사 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
UA114674C2 (uk) 2011-07-15 2017-07-10 ДЖ.І. ВІДІЕУ КЕМПРЕШН, ЛЛСі Ініціалізація контексту в ентропійному кодуванні
CN103918270B (zh) * 2011-09-30 2018-08-21 英特尔公司 用于视频编码管线的系统、方法和计算机程序产品
JP6034010B2 (ja) * 2011-10-24 2016-11-30 ソニー株式会社 符号化装置、符号化方法、およびプログラム
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
US20130128971A1 (en) * 2011-11-23 2013-05-23 Qualcomm Incorporated Transforms in video coding
US20130188716A1 (en) * 2012-01-20 2013-07-25 Qualcomm Incorporated Temporal motion vector predictor candidate
KR101682999B1 (ko) * 2012-04-16 2016-12-20 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
CA2873496A1 (en) * 2012-05-14 2013-11-21 Luca Rossato Encoding and decoding based on blending of sequences of samples along time
US9332255B2 (en) * 2012-06-28 2016-05-03 Qualcomm Incorporated Signaling long-term reference pictures for video coding
EP2920962A4 (en) * 2012-11-13 2016-07-20 Intel Corp ADAPTIVE TRANSFORMATION ENCODING OF CONTENT FOR NEXT GENERATION VIDEO
US9743091B2 (en) * 2012-12-17 2017-08-22 Lg Electronics Inc. Method for encoding/decoding image, and device using same
FR3011429A1 (fr) * 2013-09-27 2015-04-03 Orange Codage et decodage video par heritage d'un champ de vecteurs de mouvement
WO2015058397A1 (en) 2013-10-25 2015-04-30 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) * 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US10924746B2 (en) * 2014-01-29 2021-02-16 Mediatek Inc. Method and apparatus for adaptive motion vector precision
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
KR102185245B1 (ko) 2014-03-04 2020-12-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 해시 기반 블록 매칭을 위한 해시 테이블 구성 및 이용가능성 검사
CN105706450B (zh) 2014-06-23 2019-07-16 微软技术许可有限责任公司 根据基于散列的块匹配的结果的编码器决定
JP6462119B2 (ja) * 2014-09-30 2019-01-30 マイクロソフト テクノロジー ライセンシング,エルエルシー コンピューティングデバイス
KR102115715B1 (ko) 2014-09-30 2020-05-27 에이치에프아이 이노베이션 인크. 비디오 코딩을 위한 적응적 모션 벡터 레졸루션 방법
WO2016119104A1 (en) * 2015-01-26 2016-08-04 Mediatek Inc. Motion vector regularization
CN111741312B (zh) * 2014-10-31 2024-03-19 三星电子株式会社 用于对运动矢量进行编码/解码的方法和装置
CN105635734B (zh) * 2014-11-03 2019-04-12 掌赢信息科技(上海)有限公司 基于视频通话场景的自适应视频编码方法及装置
KR102349788B1 (ko) * 2015-01-13 2022-01-11 인텔렉추얼디스커버리 주식회사 영상의 부호화/복호화 방법 및 장치
US20180176596A1 (en) * 2015-06-05 2018-06-21 Intellectual Discovery Co., Ltd. Image encoding and decoding method and image decoding device
WO2017156669A1 (en) 2016-03-14 2017-09-21 Mediatek Singapore Pte. Ltd. Methods for motion vector storage in video coding
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
CN108235007B (zh) * 2016-12-12 2023-06-27 上海天荷电子信息有限公司 各模式使用不同精度同种编码参数的数据压缩方法和装置
SG11201911621SA (en) * 2017-07-07 2020-01-30 Samsung Electronics Co Ltd Video coding method and device, video decoding method and device
CN109905714B (zh) 2017-12-08 2022-12-27 华为技术有限公司 帧间预测方法、装置及终端设备
TWI746994B (zh) * 2018-06-19 2021-11-21 大陸商北京字節跳動網絡技術有限公司 用於不同參考列表的不同精確度
TWI815967B (zh) 2018-09-19 2023-09-21 大陸商北京字節跳動網絡技術有限公司 仿射模式編解碼的模式相關自適應調整運動矢量分辨率
JP7391958B2 (ja) * 2018-11-08 2023-12-05 オッポ広東移動通信有限公司 ビデオ信号符号化/復号方法及び前記方法に用いられる機器
CN113039790B (zh) 2018-11-17 2023-04-14 北京字节跳动网络技术有限公司 视频处理的方法、装置和非暂时性计算机可读介质
US11102513B2 (en) * 2018-12-06 2021-08-24 Tencent America LLC One-level transform split and adaptive sub-block transform
CN113273205A (zh) 2018-12-21 2021-08-17 北京字节跳动网络技术有限公司 使用更高比特深度精度的运动矢量推导
CN113196773B (zh) 2018-12-21 2024-03-08 北京字节跳动网络技术有限公司 具有运动矢量差的Merge模式中的运动矢量精度
CN113574867B (zh) * 2019-01-12 2022-09-13 北京字节跳动网络技术有限公司 Mv精度约束
JP7235877B2 (ja) 2019-01-31 2023-03-08 北京字節跳動網絡技術有限公司 アフィンモード適応型動きベクトル解像度を符号化するためのコンテキスト
JP7374137B2 (ja) * 2019-03-01 2023-11-06 アリババ・グループ・ホールディング・リミテッド 適応解像度ビデオコーディング
CN110677653B (zh) * 2019-09-27 2024-01-09 腾讯科技(深圳)有限公司 视频编解码方法和装置及存储介质
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1469682A1 (en) * 2002-01-24 2004-10-20 Hitachi, Ltd. Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus
WO2005104559A1 (de) * 2004-04-21 2005-11-03 Siemens Aktiengesellschaft Prädiktionsverfahren, sowie zugehöriges verfahren zur decodierung eines prädiktionsverfahrens, zugehörige encodiervorrichtung und decodiervorrichtung

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737022A (en) 1993-02-26 1998-04-07 Kabushiki Kaisha Toshiba Motion picture error concealment using simplified motion compensation
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US8175159B2 (en) * 2002-01-24 2012-05-08 Hitachi, Ltd. Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus
JP4120301B2 (ja) 2002-04-25 2008-07-16 ソニー株式会社 画像処理装置およびその方法
JP2003319400A (ja) 2002-04-26 2003-11-07 Sony Corp 符号化装置、復号装置、画像処理装置、それらの方法およびプログラム
KR100462789B1 (ko) 2002-06-12 2004-12-20 한국과학기술원 이진 산술 부호화를 이용한 다중 부호 데이터 압축 방법및 장치
CN1245031C (zh) 2002-07-12 2006-03-08 清华大学 基于预测方向校正/统计预判的快速亚象素运动估计方法
JP4724351B2 (ja) 2002-07-15 2011-07-13 三菱電機株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
JP4144339B2 (ja) 2002-11-29 2008-09-03 富士通株式会社 動画像符号化方法及び動画像複号化方法
JP2007503776A (ja) 2003-08-26 2007-02-22 トムソン ライセンシング インター符号化に使われる参照画像数を最小化するための方法および装置
US7599438B2 (en) 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
US20050105621A1 (en) 2003-11-04 2005-05-19 Ju Chi-Cheng Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof
KR100994768B1 (ko) 2003-12-08 2010-11-16 삼성전자주식회사 동영상 부호화를 위한 움직임 추정 방법 및 이를 구현하기위한 프로그램이 기록된 기록 매체
US8160143B2 (en) 2004-02-03 2012-04-17 Panasonic Corporation Decoding device, encoding device, interpolation frame creating system, integrated circuit device, decoding program, and encoding program
US7720148B2 (en) 2004-03-26 2010-05-18 The Hong Kong University Of Science And Technology Efficient multi-frame motion estimation for video compression
US20060133507A1 (en) 2004-12-06 2006-06-22 Matsushita Electric Industrial Co., Ltd. Picture information decoding method and picture information encoding method
US7728878B2 (en) 2004-12-17 2010-06-01 Mitsubishi Electric Research Labortories, Inc. Method and system for processing multiview videos for view synthesis using side information
EP2765780A1 (en) 2005-12-05 2014-08-13 Huawei Technologies Co., Ltd. Binarizing method and device thereof
CN1794821A (zh) 2006-01-11 2006-06-28 浙江大学 可分级视频压缩中插值的方法与装置
CN100566413C (zh) 2006-06-05 2009-12-02 华为技术有限公司 一种自适应插值处理方法及编解码模块
US8275041B2 (en) 2007-04-09 2012-09-25 Nokia Corporation High accuracy motion vectors for video coding with low encoder and decoder complexity
JP2009089332A (ja) * 2007-10-03 2009-04-23 Sony Corp 動き予測方法及び動き予測装置
CA2711742A1 (en) 2008-01-09 2009-07-16 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, and image decoding method
KR101456487B1 (ko) 2008-03-04 2014-10-31 삼성전자주식회사 부화소 단위의 움직임 예측을 이용한 영상 부호화, 복호화방법 및 그 장치
JP2009230537A (ja) * 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
JP5012647B2 (ja) 2008-04-30 2012-08-29 ソニー株式会社 画像処理装置およびその方法、並びにプログラム
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP2010028221A (ja) 2008-07-15 2010-02-04 Sony Corp 動きベクトル検出装置、動きベクトル検出方法、画像符号化装置及びプログラム
TW201041404A (en) 2009-03-06 2010-11-16 Sony Corp Image processing device and method
WO2011021914A2 (ko) * 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
WO2011046587A1 (en) * 2009-10-14 2011-04-21 Thomson Licensing Methods and apparatus for adaptive coding of motion information
US20120051431A1 (en) 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US10327008B2 (en) 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1469682A1 (en) * 2002-01-24 2004-10-20 Hitachi, Ltd. Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus
WO2005104559A1 (de) * 2004-04-21 2005-11-03 Siemens Aktiengesellschaft Prädiktionsverfahren, sowie zugehöriges verfahren zur decodierung eines prädiktionsverfahrens, zugehörige encodiervorrichtung und decodiervorrichtung

Also Published As

Publication number Publication date
US20110206125A1 (en) 2011-08-25
EP4145828A1 (en) 2023-03-08
WO2011103206A1 (en) 2011-08-25
CN102783149A (zh) 2012-11-14
JP6042470B2 (ja) 2016-12-14
JP2015156653A (ja) 2015-08-27
TW201218774A (en) 2012-05-01
CN102783149B (zh) 2015-11-25
JP2013520875A (ja) 2013-06-06
KR20120126108A (ko) 2012-11-20
US9237355B2 (en) 2016-01-12
EP2537341A1 (en) 2012-12-26

Similar Documents

Publication Publication Date Title
KR101387255B1 (ko) 비디오 코딩을 위한 적응적 모션 분해능
US11838548B2 (en) Video coding using mapped transforms and scanning modes
JP6672226B2 (ja) 大型マクロ・ブロックを用いたビデオ・コーディング
JP6543716B2 (ja) 適応型成分間残差予測
EP2727353B1 (en) Video coding using adaptive motion vector resolution
JP6165798B2 (ja) イントラ予測を使用したビデオ符号化
JP5922244B2 (ja) ビデオコーディングにおいて適応ループフィルタとマージされたサンプル適応オフセット
KR101671080B1 (ko) 비디오 코딩에서 비정방형 변환 유닛들 및 예측 유닛들
US9247254B2 (en) Non-square transforms in intra-prediction video coding
JP5866453B2 (ja) イントラモードコーディングにおける参照モード選択
US20120082224A1 (en) Intra smoothing filter for video coding
AU2012355669A1 (en) Performing motion vector prediction for video coding
JP2013543713A (ja) ビデオ符号化のための適応動きベクトル解像度信号伝達
WO2012027093A1 (en) Motion direction based adaptive motion vector resolution signaling for video coding
JP5937205B2 (ja) ビデオコーディングのためのランモードベース係数コーディング
KR20140030326A (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
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee