KR101425286B1 - 모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜 - Google Patents

모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜 Download PDF

Info

Publication number
KR101425286B1
KR101425286B1 KR1020120148633A KR20120148633A KR101425286B1 KR 101425286 B1 KR101425286 B1 KR 101425286B1 KR 1020120148633 A KR1020120148633 A KR 1020120148633A KR 20120148633 A KR20120148633 A KR 20120148633A KR 101425286 B1 KR101425286 B1 KR 101425286B1
Authority
KR
South Korea
Prior art keywords
search result
search
motion
result
macroblock
Prior art date
Application number
KR1020120148633A
Other languages
English (en)
Other versions
KR20130070554A (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 KR20130070554A publication Critical patent/KR20130070554A/ko
Application granted granted Critical
Publication of KR101425286B1 publication Critical patent/KR101425286B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]

Landscapes

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

Abstract

비디오 인코더의 모션 탐색 엔진을 사용하여 모션 예측자에 대한 탐색 결과를 획득하는 바를 포함하는 시스템, 장치 및 방법이 개시된다. 상기 탐색 결과는 소스 매크로블록의 매크로블록 형상 후보 세트 또는 서브 매크로블록 형상 후보 세트 각각에 대한 최상의 모션 벡터 결과를 포함한다. 탐색 엔진은 이어서 이 모든 형상 후보들에 대한 모션 벡터 결과를 포함하는 탐색 결과를 모션 탐색 제어기에 대한 입력으로서 제공한다. 이 제어기는 탐색 엔진이 다른 모션 예측자에 대한 제 2 탐색 결과를 획득하도록 요청할 때에 이 탐색 엔진에 상기 제 1 탐색 결과를 다시 제공한다. 이로써, 상기 탐색 엔진은 상기 다른 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 제 1 탐색 결과를 사용한다.

Description

모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜{EXHAUSTIVE SUB-MACROBLOCK SHAPE CANDIDATE SAVE AND RESTORE PROTOCOL FOR MOTION ESTIMATION}
본 명세서는 전반적으로 비디오 인코더 시스템의 모션 탐색 분야에 관한 것이다.
시간적 예측을 기초로 한 모션 추정(motion estimation)은 어드밴스형 비디오 인코더(advacned video encoder)에서 중요한 프로세스이다. 모션 추정에서, 시간적 모션 추정을 위한 최상의 매치(match)를 찾기 위해서 다수의 구역들이 탐색될 수 있다. 이렇게 함에 있어서, 랜덤하거나 이웃하는 매크로블록들에 기초하여서 계산되거나 다른 방법들에 기초하여서 계산될 수 있는 다양한 예측자(predictor)의 로케이션(location) 주위의 국부적 영역들이 통상적으로 탐색된다. 그러나, 특히 HD(high definition) 프레임에서, 모션은 한정된 탐색 범위를 상당한 양만큼 초과할 수 있다. 또한, 복잡한 모션의 경우에, 매크로블록의 일부분이 비디오 프레임의 상이한 섹션들로 이산될 수 있다. 광범위하고/하거나 복잡한 모션을 보다 정확하게 캡처할 수 있으면 비디오 압축이 효율적으로 개선될 수 있을 것이다.
대부분의 소프트웨어 기반 인코더들은 개별 예측자에 기초하여서 모션 탐색을 수행하므로 통상적으로 전력 또는 성능 면에서 효율적이지 않다. 또한, 대부분의 소프트웨어 기반 인코더들은 (16*16과 같은) 단일 블록 크기를 사용하여서 탐색하고 이어서 한정된 국부적 영역 내에서 다른 블록 또는 서브 블록 형상을 체크한다. 통상적인 하드웨어 기반 모션 추정 엔진은 한정된 크기(가령, 48*40)의 고정 블록 영역을 탐색하지만 다수의 고정된 영역들에 걸쳐서 수행된 탐색으로부터 획득된 정보를 레버리지(leverage)하지는 않는다. 이러한 엔진들은 통상적으로 단일 영역에 대한 결과들을 획득하거나 다수의 격리된 영역들로부터 최상의 호(best call)를 획득하는 것과는 거리가 멀다.
본 명세서에서 기술되는 내용들은 첨부 도면을 참조하여서 예시적이면서 비한정적인 방식으로 기술될 것이다. 설명의 간략성 및 명료성을 위해서, 도면에서 예시된 요소들은 반드시 실제 축적대로 도시된 것은 아니다. 가령, 몇몇 구성 요소들의 크기는 명료성을 위해서 다른 구성 요소들의 크기보다 과장될 수 있다. 또한, 적절하다고 생각되면, 동일한 참조 부호들이 도면들 간에서 반복되어서 대응하거나 유사한 구성 요소들을 나타내고 있다.
도 1은 본 명세서의 실시예에 따른 비디오 인코더 시스템을 나타내고 있다.
도 2는 본 명세서의 실시예에 따른 모션 추정 모듈을 나타내고 있다.
도 3은 본 명세서의 실시예에 따른 모션 추정 시나리오를 나타내고 있다.
도 4는 본 명세서의 실시예에 따른 모션 탐색 프로세스를 나타내고 있다.
도 5는 본 명세서의 실시예에 따른 시퀀스 차트를 나타내고 있다.
도 6은 본 명세서의 실시예에 따른 탐색 결과 콘텐츠를 나타내고 있다.
도 7은 본 명세서의 실시예에 따른 형상 후보들을 나타내고 있다.
도 8 내지 도 10은 본 명세서의 실시예에 따른 탐색 결과 콘텐츠들을 나타내고 있다.
도 11은 본 명세서의 실시예에 따른 시스템을 나타내고 있다.
도 12는 본 명세서의 적어도 몇몇 구현예들에 따라서 구성된 장치를 나타내고 있다.
하나 이상의 실시예들 또는 구현예들이 이제 첨부 도면들을 참조하여서 기술될 것이다. 특정 구성 및 배열들이 기술되지만, 이들은 단지 예시적인 설명을 위한 것일 뿐이다. 본 기술 분야의 당업자는 본 발명의 기술적 사상 및 범위 내에서 다른 구성 및 배열이 사용될 수 있음을 잘 알게 될 것이다. 또한, 본 명세서에서 기술되는 구성 및/또는 배열들이 본 명세서에서 기술된 시스템 및/또는 애플리케션들이 아닌 다른 다양한 애플리케이션 및 시스템에도 적용될 수 있음도 역시 본 기술 분야의 당업자에게는 자명해질 것이다.
다음의 설명 부분은 가령 SoC(시스템-온-칩) 아키텍처와 같은 아키텍처에서 실현될 수 있는 다양한 구현예들을 제안하고 있지만, 본 명세서에서 기술되는 구성 및/또는 기술들에 대한 구현은 특정 아키텍처 및/또는 컴퓨팅 시스템으로 한정되지 않고 유사한 목적을 위한 임의의 아키텍처 및/또는 컴퓨팅 시스템에 의해서 구현될 수 있다. 가령, 다음으로 한정되지 않지만 다수의 집적 회로 칩 및/또는 패키지 및/또는 다양한 컴퓨팅 디바이스들 및/또는 셋탑 박스, 스마트 폰 등과 같은 소비자 전자 제품 장치들을 사용하는 다양한 아키텍처들이 본 명세서에서 기술되는 구성 및/또는 기술들을 구현할 수 있다. 또한, 다음의 설명 부분은 로직 구현 사항, 시스템 구성 요소들의 타입 및 상호 관계 사항, 로직 분할 및 통합 관련 선택 사항 등과 같은 다수의 특정 세부 사항들을 제시하고 있지만, 청구된 청구 대상은 이러한 특정 세부 사항들 없이도 실시될 수 있다. 다른 경우에, 가령 제어 구조들 및 전적 소프트웨어 명령 시퀀스들과 같은 몇몇 사항들은 본 명세서의 내용을 모호하게 하지 않도록 하기 위해서 본 명세서에서 세부적으로 기술되지 않을 수 있다.
본 명세서에서 기술되는 내용들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 또한, 본 명세서에서 기술되는 내용들은 머신 판독 가능한 매체 상에 저장되어서 하나 이상의 프로세서에 의해서 판독 및 실행되는 인스트럭션들로서 구현될 수도 있다. 이 머신 판독 가능한 매체는 머신(가령, 컴퓨팅 장치)에 의해서 판독 가능한 형태로 정보를 저장 또는 전송할 수 있는 임의의 메카니즘 및/또는 매체를 포함할 수 있다. 가령, 이 머신 판독 가능한 매체는 ROM, RAM, 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리, 전기적 전파 신호, 광학적 전파 신호, 음향적 전파 신호 또는 다른 형태의 전파 신호들(가령, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수 있다.
본 명세서에서 "일 실시예", "일 구현예", "예시적인 구현예" 등이 나타나면, 이는 기술된 구현 또는 실시 사항이 특정 특징, 구조 또는 특성을 포함하지만 모든 구현예 또는 실시예들이 이러한 특정 특징, 구조 또는 특성을 반드시 포함하는 것은 아님을 말한다. 또한, 이러한 용어들은 반드시 동일한 구현예 또는 실시예임을 말하는 것도 아니다. 또한, 특정 구조, 특징 또는 특성이 일 실시예와 관련하여서 기술되었을 지라도, 본 기술 분야의 당업자의 역량 내에서, 이러한 특정 구조, 특징 또는 특성은 본 명세서에서 명시적으로 기술되었는지와 상관없이 다른 실시예들과 관련하여서 구현될 수 있다.
도 1은 본 명세서의 실시예에 따른 비디오 인코더 시스템(100)을 나타내고 있다. 다양한 구현예에서, 비디오 인코더 시스템(100)은 가령 H.264/AVC( ISO/IEC JTC1 and ITU-T, H.264/AVC - Advanced video coding for generic audiovisual services, ITU-T Rec. H.264 and ISO/IEC 14496-10 (MPEG-4 part 10), version 3, 2005 참조)(이하, AVC 표준)와 같은 하나 이상의 어드밴스형 비디오 코덱(advanced video codec) 표준 및 SVC(scalable video coding) 확장(Joint Draft ITU-T Rec. H.264 and ISO/IEC 14496-10 / Amd.3 Scalable video coding, July 5, 2007 참조)(이하, SVC 표준)을 포함하는 상기 AVC 표준의 확장에 따라서 비디오 압축을 수행하고/하거나 비디오 코덱을 구현하도록 구성될 수 있다. 시스템(100) 및 다른 시스템, 방식 또는 프로세스는 이러한 AVC 표준의 상황에서 본 명세서에서 기술되지만, 본 명세서는 임의의 특정 비디오 인코딩 표준 또는 사양으로 한정되는 것은 아니다. 가령, 다양한 구현예에서, 인코더 시스템(100)은 VP8, MPEG-2, VC1 (SMPTE 421M 표준) 등과 같은 다른 어드밴스형 비디오 표준에 따라서 비디오 압축을 수행하고/하거나 비디오 코덱을 구현하도록 구성될 수도 있다.
다양한 실시예들에서, 비디오 및/또는 매체 프로세서는 비디오 인코더 시스템(100)을 구현할 수 있다. 시스템(100)의 다양한 구성 요소들은 소프트웨어, 하드웨어, 펌웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 가령, 시스템(100)의 다양한 구성 요소들은 적어도 부분적으로 컴퓨팅 장치, 통신 장치, 소비자 전자 제품 장치 등에서 볼 수 있는 SoC(시스템-온-칩) 또는 컴퓨팅 시스템의 하드웨어에 의해서 제공될 수 있다. 가령, 시스템(100)의 적어도 일부는 하나 이상의 중앙 프로세싱 유닛(CPU) 프로세서 코어, 디지털 신호 프로세서(DSP), ASIC(application specific integrated circuit), FPGA(fully programmable gate array) 등과 같은 프로세싱 로직에 의해서 실행되는 소프트웨어 인스트럭션 및/또는 펌웨어 인스트럭션에 의해서 제공될 수 있다.
인코더 시스템(100)에서, 현 비디오 프레임(102)이 모션 추정 모듈(104)에 제공된다. 시스템(100)은 현 프레임(102)을 이미지 매크로블록 단위로 프로세싱한다. 인코더 시스템(100)이 도시된 바와 같이 인터 예측 모드(inter prediction mode)로 동작하면, 모션 추정 모듈(104)은 현 비디오 프레임(102) 및 기준 비디오 프레임(106)에 응답하여서 잔차 신호(residual signal)를 생성한다. 이어서, 모션 보상 모듈(108)이 상기 기준 비디오 프레임(106) 및 모션 추정 모듈(104)가 제공한 잔차 신호를 사용하여서 예측 프레임을 생성한다. 이어서, 이 예측 프레임은 현 프레임(102)로부터 감산되고 그 결과가 변환 및 양자화 모듈(110)에 제공된다. 이어서, 이 블록이 (블록 변환을 사용하여서) 변환되고 양자화되어서 양자화된 변환 계수 세트가 생성되며, 이 계수 세트는 엔트로피 인코딩 모듈(112)에 의해서 재배열되고 엔트로피 인코딩된다. 이로써, 비디오 인코더 시스템(100)은 압축된 비트스트림(가령, NAL(network abstraction layer) 비트스트림)의 일부분을 생성하게 된다. 다양한 구현예에서, 이 비디오 인코더 시스템(100)이 제공하는 비트스트림은 엔트로피 인코딩된 계수 이외에도 각 블록을 디코딩하는데 사용되는 부 정보(가령, 예측 모드, 양자화 파라미터, 모션 벡터 정보 등)을 포함한다. 이 비트스트림은 본 명세서에서 기술되는 다른 장치 및/또는 시스템으로 제공되어서 전송 및 저장될 수 있다.
또한, 변환 및 양자화 모듈(110)의 출력은 역 양자화 및 역 변환 모듈(114)에 제공될 수 있다. 이 역 양자화 및 역 변환 모듈(114)은 변환 및 양자화 모듈(110)에 의해서 수행된 동작들을 역으로 수행하고 역 양자화 및 역 변환 모듈(114)의 출력은 상기 예측 프레임과 결합되어서 재구성 프레임(116)을 생성할 수 있다. 인코더 시스템(100)이 인트라 예측 모드로 동작하면, 인트라 예측 모듈(118)은 이 재구성 프레임(116)을 사용하여서 공지된 인트라 예측 방법을 수행한다. 이 인트라 예측 방법은 본 명세서에서 자세하게 기술되지 않는다. 비디오 인코더 시스템(100)이 도 1에서는 명료성을 위해서 도시되지 않은 다른 구성 요소들(가령, 필터 모듈 등)을 포함할 수 있음은 본 기술 분야의 당업자에게 자명할 것이다.
일반적으로, 프레임(102)을 하나 이상의 매크로블록 슬라이스(가령, 대응하는 크로마(chroma) 샘플을 갖는 16*16 루마(luma) 샘플들)로 분할함으로써 프레임(102)이 압축을 위해서 시스템(100)에 의해서 분할될 수 있다. 또한, 각 매크로블록은 모션 보상형 예측을 위해서 매크로블록 파티션 및/또는 서브 매크로블록 파티션으로 분할될 수 있다. 본 명세서에서 사용되는 용어 "블록"은 비디오 데이터의 매크로블록, 매크로블록 파티션 또는 서브 매크로블록 파티션을 지칭한다. 본 명세서에 따른 다양한 구현예들에서, 매크로블록 파티션은 다음으로 한정되지 않지만은 16*16, 16*8 및 8*16을 포함하는 다양한 크기 및 형상을 가지며, 서브 매크로블록 파티션은 다음으로 한정되지 않지만은 8*8, 8*4, 4*8 및 4*4을 포함하는 다양한 크기 및 형상을 갖는다. 그러나, 전술한 바들은 단지 예시적인 매크로블록 파티션 및 서브 매크로블록 파티션의 크기 및 형상일 뿐이며, 본 명세서는 특정 매크로블록 파티션 및 서브 매크로블록 파티션의 크기 및 형상으로 한정되지 않는다.
다양한 실시예들에서, 슬라이스는 I(Intra) 타입 슬라이스, P(Predicited) 타입 슬라이스, B(Bi-predicited) 타입 슬라이스, SP(Switching P) 타입 슬라이스 또는 SI(Switching I) 타입 슬라이스로서 지정될 수 있다. 일반적으로, 프레임은 상이한 슬라이스 타입들을 포함할 수 있다. 또한, 프레임들은 비 기준 프레임으로 지정되거나 인터 프레임 예측을 위한 기준으로서 사용될 수 있는 기준 프레임으로서 지정될 수 있다. P 타입 슬라이스에서, 프레임들 간의 모션을 추정함으로써 (공간적 보다는) 시간적 예측이 수행될 수 있다. B 타입 슬라이스에서, 매크로블록 파티션마다 또는 서브매크로블록 파티션마다 2 개의 모션 추정치를 나타내는 2 개의 모션 벡터들이 시간적 예측 또는 모션 추정을 위해서 사용될 수 있다. 또한, 표시 순서에 있어서 이전에 또는 이후에 발생하는 다수의 화상들로부터 모션이 추정될 수 있다. 다양한 구현예들에서, 가령 상술한 바와 같은 16*16, 16*8, 8*16, 8*8, 8*4, 4*8 및 4*4의 형상 및 크기에 대응하는 다양한 매크로블록 파티션 레벨 또는 서브 매크로블록 파티션 레벨의 매크로블록 레벨에서 모션이 추정될 수 있다.
다양한 실시예들에서, 각 매크로블록 파티션 또는 서브 매크로블록 파티션에 대해서 특정 모션 벡터가 코딩될 수 있다. 모션 추정 프로세싱 동안에, 서브 매크로블록 형상 후보들(가령, 16*16, 16*8, 8*16, 8*8, 8*4, 4*8 및 4*4)의 범위가 탐색되고 비디오를 표현하는데 필요한 비트의 개수와 결과적인 피델리티(fidelity) 간의 절충을 최적화하는 모션 추정 방식이 구현될 수 있다.
다양한 실시예들에서, 소스 매크로블록에 대한 시간적 예측은 이 소스 매크로블록과 연관된 2 개 이상의 예측자에 의해서 식별되는 하나 이상의 기준 프레임 내의 다수의 목표 영역들을 탐색함으로써 착수될 수 있다. 다양한 실시예들에서, 이 예측자들은 랜덤하게 결정되거나 이웃하는 매크로블록들에 기초하여서 결정되거나 다양한 다른 공지된 방법들에 기초하여서 결정될 수 있다.
다양한 실시예들에서, 모션 추정 프로세싱을 수행할 때에, 비디오 인코더 시스템(100)은 모션 추정 모듈(104)을 채용하여서 본 발명에 따라서 다수의 매크로블록 파티션 형상 후보들 또는 다수의 서브 매크로블록 파티션 형상 후보들을 사용하여서 모션 추정(ME) 방법들을 구현한다. 도 2는 본 명세서의 실시예에 따른 예시적인 모션 추정(ME) 모듈(200)을 나타내고 있다. 비한정적이면서 예시적으로, 이 ME 모듈(200)은 비디오 인코더 시스템(100)의 모듈(104)에 의해서 구현될 수 있다.
다양한 실시예들에서, ME 모듈(200)은 모션 탐색 제어기(202) 및 모션 탐색 엔진(204)을 포함한다. 다양한 실시예들에서, 모션 탐색 엔진(204)은 하드웨어로 구현되고, 소프트웨어가 모션 탐색 제어기(202)를 구현할 수 있다. 가령, 엔진(204)은 ASIC 로직에 의해서 구현되고, 제어기(202)는 하나 이상의 CPU 코어과 같은 범용 로직에 의해서 실행되는 소프트웨어 인스트럭션들에 의해서 제공된다. 그러나, 본 명세서는 이로 한정되지 않으며 제어기(202) 및/또는 엔진(204)은 하드웨어, 펌웨어 및/또는 소프트웨어의 임의의 조합으로 구현될 수 있다.
본 명세서의 실시예에 따라서, 모듈(200)은 제어기(202) 및 엔진(204)을 사용하여서 다양한 모션 추정 방식들을 구현한다. 이하에서 더 상세하게 기술될 바와 같이, 제어기(202)는 엔진(204)과 결합되어서 현 프레임 내에서 임의의 특정 소스 블록이 예측되도록 다수의 모션 탐색들을 수행한다. 가령, 소정의 매크로블록에 대해서, 제어기(202)는 엔진(204)을 사용하여서 일련의 모션 탐색을 수행한다. 이 일련의 모션 탐색에서 각 모션 탐색은 상이한 모션 예측자를 사용하여서 수행된다. 도 3은 모듈(200)에 의해서 수행되는 모션 탐색 프로세스를 설명하는데 도움을 주기 위해서 본 명세서에서 사용될 수 있는 예시적인 모션 추정 시나리오(300)를 나타내고 있다.
다양한 구현예들에서, 매크로블록에 대한 시간적 예측을 수행할 때에, 제어기(202)는 엔진(204)에 일련의 모션 탐색 호(call)를 발행한다. 여기서, 각 모션 탐색 호는 엔진(204)에 입력되는 호 데이터(206)에 의해서 특정된다. 각 탐색 호에 대해서, 호 데이터(206)는 적어도 목표 탐색 구역 및 로케이션 및 소스 매크로블록 로케이션을 특정한다. 또한, 이하에서 더 상세하게 기술될 바와 같이, 호 데이터(206)는 엔진(204)으로의 입력 메시지를 포함하거나 이와 연관될 수 있으며, 상기 메시지는 엔진(204)에 의해서 수행된 이전 모션 탐색 결과를 포함한다.
가령, 예시적인 시나리오(300)를 참조하면, 제어기(202)가 발행하는 제 1 탐색 호는 현 프레임(306) 내의 소스 매크로블록(304)과 연관된 제 1 예측자(302)(예측자 A)에 대응한다. 호 데이터(206)는 현 프레임(306) 내에서의 소스 매크로블록(304)의 로케이션 및 제 1 예측자(302)가 가리키는 기준 프레임(312) 내에서의 목표 구역(310)의 로케이션(308)을 특정한다. 이어서, 탐색 엔진(204)은 탐색 호에 응답하여서 목표 구역(310) 내에서 모션 탐색을 수행한다. 이렇게 할 때에, 엔진(204)은 소스 블록(304)의 다양한 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 최상의 모션 벡터 결과를 포함하는 탐색 결과를 획득한다.
본 명세서의 교시에 따르면, 이하에서 더 상세하게 설명될 바와 같이, 탐색 엔진은 제 1 탐색 호의 탐색 결과를 제어기(202)에 제공하거나 스트리밍 출력(208)하며, 여기서 이 탐색 결과는 탐색된 소스 블록의 다양한 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 최상의 모션 벡터 결과를 적어도 포함한다. 제어기(202)가 발행하는 제 2 탐색 호는 현 프레임(306) 내의 소스 매크로블록(304)과 연관된 제 2 예측자(314)(예측자 B)에 대응한다. 제 2 탐색 호를 수반하는 호 데이터(206)는 현 프레임(306) 내에서의 소스 매크로블록(304)의 로케이션 및 제 2 예측자(314)가 가리키는 기준 프레임(312) 내에서의 제 2 목표 구역(318)의 로케이션(316)을 특정한다. 이어서, 탐색 엔진(204)은 이 탐색 호에 응답하여서 제 2 목표 구역(318) 내에서 모션 탐색을 수행한다. 이로써, 엔진(204)은 적어도 제 1 탐색 호에 응답하여서 모션 탐색을 수행하기 위해서 사용되었던 바와 동일한 매크로블록 파티션 및/또는 서브 매크로블록 파티션에 대한 최상의 모션 벡터 결과를 포함하는 탐색 결과를 획득한다.
본 명세서의 교시에 따르면, 전술되었고 이하에서 더 상세하게 설명될 바와 같이, 제어기(202)가 제 2 모션 탐색 호를 엔진(204)에 발행할 때에, 제어기(202)는 제 1 모션 탐색 호의 탐색 결과를 엔진(204)에 입력 메시지 형태로 제공하거나 스트리밍 입력(210)한다. 이에 응답하여서, 엔진(204)은 제 2 탐색 호에 응답하여서 수행할 모션 탐색에 대한 초기 조건으로서 상기 제 1 모션 탐색 호에 대한 탐색 결과를 사용한다. 가령, 엔진(204)은 제 2 탐색 호에 응답하여서 대응하는 매크로블록 파티션 또는 서브 매크로블록 파티션에 대해 수행되는 모션 탐색에 대한 초기 탐색 후보로서 상기 제 1 모션 탐색 호에 대한 탐색 결과에서 나타나는 각 최상의 모션 벡터 결과를 사용할 수 있다. 다양한 구현예들에서, 스트리밍 출력(208) 및 스트리밍 입력(210)은 스트림 입력 스트림 출력 인터페이스(a stream in stream out interface)(211)를 형성한다.
이어서, 제어기(202)가 발행하는 제 3 탐색 호는 현 프레임(306) 내의 소스 매크로블록(304)과 연관된 제 3 예측자(320)(예측자 C)에 대응한다. 이 제 3 탐색 호를 수반하는 호 데이터(206)는 현 프레임(306) 내에서의 소스 매크로블록(304)의 로케이션 및 제 3 예측자(320)가 가리키는 기준 프레임(312) 내에서의 제 3 목표 구역(324)의 로케이션(322)을 특정한다. 이어서, 탐색 엔진(204)은 탐색 호에 응답하여서 제 3 목표 구역(324) 내에서 모션 탐색을 수행한다. 이로써, 엔진(204)은 적어도 제 1 탐색 호 및 제 2 탐색 호에 응답하여서 모션 탐색을 수행하기 위해서 사용되었던 바와 동일한 매크로블록 파티션 및/또는 서브 매크로블록 파티션에 대한 최상의 모션 벡터 결과를 포함하는 탐색 결과를 획득한다. 상술한 바와 같이, 제어기(202)가 제 3 모션 탐색 호를 엔진(204)에 발행할 때에, 제어기(202)는 제 2 모션 탐색 호에 대한 탐색 결과를 엔진(204)에 다른 입력 메시지 형태로 제공하거나 스트리밍 입력(210)한다. 이에 응답하여서, 엔진(204)은 제 3 탐색 호에 응답하여서 수행할 모션 탐색에 대한 초기 조건으로서 상기 제 2 모션 탐색 호에 대한 탐색 결과를 사용한다. 가령, 엔진(204)은 제 3 탐색 호에 응답하여서 대응하는 매크로블록 파티션 또는 서브 매크로블록 파티션에 대해 수행되는 모션 탐색에 대한 초기 탐색 후보로서 상기 제 2 모션 탐색 호에 대한 탐색 결과에서 나타나는 각 최상의 모션 벡터 결과를 사용할 수 있다.
또한, 이하에서 더욱 상세하게 기술될 바와 같이, 엔진(204)은 이전 호에 대한 탐색 결과를 업데이트하기 위해 후속 호에 대한 탐색 결과를 사용할 수 있다. 가령, 제 2 탐색 호에 대한 탐색 결과가 제 1 탐색 호에 대한 탐색 결과를 사용하여서 업데이트된다. 이 업데이트된 탐색 결과는 제 3 탐색 호에 대한 입력 메시지 내에 제공되어서 제 3 모션 탐색에 대한 초기 조건으로서 사용된다. 다양한 구현예들에서, 제 1 탐색 호에 대한 탐색 결과를 업데이트하기 위해서 제 2 탐색 호에 대한 탐색 결과를 사용하는 바는 소스 블록(304)의 각 매크로블록 파티션 및 서브 매크로블록 파티션에 대해서, 제 1 탐색 결과 및 제 2 탐색 결과 중에서 최상의 모션 벡터를 선택함으로써 상기 탐색 결과를 전체 탐색 결과에 결합시키는 바를 포함한다. 마찬가지로, 제 3 탐색 호에 대한 탐색 결과는 제 1 탐색 호 및 제 2 탐색 호에 대한 상기 결합된 탐색 결과를 사용하여서 업데이트될 수 있다.
제어기(202) 및 엔진(204)은 소스 블록(304)의 임의의 개수의 추가 예측자들(미도시)에 대하여 상술한 바와 같은 동작들을 수행할 수 있다. 그렇게 함으로써, 엔진(204)은 각 모션 탐색의 종료 시에 제어기(202)로 스트리밍 출력되며 다음 예측자에 기초하여서 후속 모션 탐색을 수행하기 위한 초기 조건 후보들로서 사용되기 위해서 엔진(204)으로 다시 스트리밍 입력되는, 계속하여서 업데이트된 전체 탐색 결과에 기초하여서 모션 탐색을 수행한다.
도 3은 모든 3 개의 예측자들(302,314,320)이 단일 기준 프레임(312)을 가리키는 바를 도시하였지만, 다양한 실시예들에서, 상이한 예측자들이 상이한 기준 프레임들을 가리킬 수 있다. 또한, 도 3의 시나리오에서는 오직 3 개의 모션 예측자들(302,314,320)이 존재하지만, 본 명세서는 소정의 매크로블록에 대하여서 수행되는 모션 탐색에 있어서 그 모션 탐색의 수가 임의의 특정 개수로 한정되지 않는다. 대신에, 다양한 실시예들에서, 임의의 개수의 모션 예측자들이 사용될 수 있다.
도 4는 본 명세서의 다양한 실시예들에 따른 예시적인 프로세스(400)의 흐름도이다. 이 프로세스(400)는 도 4의 블록들(402,404,406,408,410,412) 중 하나 이상에 의해서 도시된 하나 이상의 동작 또는 기능 또는 연산을 포함한다. 비한정적이면서 예시적으로, 프로세스(400)는 도 2의 예시적인 모션 추정 모듈(200) 및 도 3의 예시적인 시나리오(300)를 참조하여서 본 명세서에서 기술될 것이다. 또한, 비한정적이면서 예시적으로, 프로세스(400)는 도 5에서 도시된 바와 같은 예시적인 시퀀스 차트(500)를 참조하여서 본 명세서에서 기술될 것이다. 다양한 구현예들에서, 프로세스(400)는 모션 탐색 제어기와 모션 탐색 엔진 간의 저장 및 복구 프로토콜의 적어도 일부를 형성한다.
이 프로세스(400)는 블록(402)에서 시작되며, 이 블록에서, 제 1 모션 예측자에 대한 탐색 결과가 획득되며, 상기 제 1 모션 예측자에 대한 탐색 결과 또는 제 1 탐색 결과는 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 다수의 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 포함한다. 다양한 실시예들에서, 블록(402)에서 엔진(204)은 제어기(202)로부터 수신된 제 1 탐색 호에 응답하여서 탐색 결과를 획득한다. 가령, 제어기(202)는 예측자(302)를 사용하여서 모션 탐색을 특정하는 초기 탐색 호(502)를 엔진(204)에 발행한다. 이어서, 탐색 엔진(204)은 이 예측자(302)를 사용하여서 영역(310)에서 모션 탐색을 수행하여서 가령, 16*8 및 8*16, 8*8, 8*4, 4*8 및/또는 4*4와 같은 다양한 매크로블록 파티션 및/또는 서브 매크로블록 파티션에 대하여서 모션 벡터 결과를 생성한다.
가령, 도 6은 예시적인 매크로블록 파티션 또는 서브 매크로블록 파티션 후보 세트 또는 예시적인 매크로블록 또는 서브 매크로블록 형상 후보 세트에 대하여 블록(402)을 수행함으로써 얻게 되는 결과를 나타내는, 본 명세서의 실시예에 따른 탐색 결과(600)의 예시적인 콘텐츠를 나타내고 있다. 다양한 구현예들에서, 탐색 결과(600)는 파티션 후보 또는 형상 후보 세트(604) 각각에 대한 왜곡 스코어(602)를 포함하며, 각 왜곡 스코어는 X 성분(606) 및 Y 성분(608)을 갖는 해당 파티션에 대한 최상의 모션 벡터 결과에 대응한다. 각 모션 벡터 결과는 또한 기준 프레임 ID(ReflD)(610)과 연관되며, 이 기준 프레임 ID는 성분(606,608)에 의해서 특정되는 특정 모션 벡터 결과가 가리키는 기준 프레임을 나타낸다.
도 7은 도 6의 실례에서 사용되는 다양한 알려진 파티션 후보 또는 형상 후보(604)를 나타내고 있다. 전술한 바와 같이, 본 명세서는 본 명세서의 교시에 따른 모션 탐색 프로세싱 시에 사용되는 매크로블록 파티션 또는 서브 매크로블록 파티션 후보 또는 매크로블록 또는 서브 매크로블록 형상 후보에 대하여서 임의의 특정 크기, 형상 및/또는 이들의 조합으로 한정되지 않는다. 따라서, 가령, 다양한 구현예들에서, 모션 벡터 결과는 결과(600)에서 도시된 형상 후보(604) 대신에 및/또는 이와 더불어 8 개의 8*4 서브 매크로블록 파티션, 8 개의 4*8 서브 매크로블록 파티션 및/또는 16 개의 4*4 서브 매크로블록 파티션에 대해서도 획득될 수 있다.
다양한 구현예들에서, 스코어(602)는 임의의 다양한 알려진 왜곡 메트릭을 사용하여서 생성되는 스코어에 대응한다. 가령, 스코어(602)는 스코어(602)가 작을 수록 모션 벡터 결과는 낮은 왜곡을 갖는 SAD(Sum of Absolute Difference) 왜곡 메트릭을 사용하여서 생성될 수 있다. 다양한 구현예들에서, 스코어들 중 하나는 탐색 결과(600) 중 최상의 모션 벡터에 대응하는 최상의 점수일 수 있다. 가령, 단지 예시적인 목적에서 말하자면, (도 6에서 강조 처리된) 결과(600)에서의 서브 매크로블록 파티션 8*8_0에 대한 스코어는 수행된 블록(402)으로부터 획득된 최상의 모션 벡터 결과에 대응할 수 있다.
다시 도 4로 돌아가면, 프로세스(400)는 블록(404)으로 진행되며 여기서 제 1 탐색 결과가 출력으로서 제공된다. 다양한 구현예들에서, 블록(404)에서, 엔진(204)은 모든 형상 후보 탐색 결과들(가령, 결과들(600))을 추가 예측자와 연관된 탐색 호에 대해서 사용되고/사용되거나 후속 프로세싱 시에 사용되기 위해서 제어기(202)에 입력으로서 스트리밍 출력(504)한다.
블록(406)에서, 제 2 탐색 결과가 제 2 모션 예측자에 대해서 획득된다. 여기서, 제 1 탐색 결과는 제 2 모션 예측자를 사용하여서 모션 예측을 수행하는데 있어서 초기 조건으로서 사용된다. 다양한 구현예들에서, 블록(406)에서, 탐색 엔진(204)은 제어기(202)로부터 수신된 제 2 탐색 호에 응답하여서 탐색 결과를 획득한다. 가령, 제어기(202)는 예측자(314)를 사용하여서 모션 탐색을 특정하는 제 2 탐색 호(506)를 엔진(204)에 발행한다. 또한, 제 2 탐색 호(506)의 일부로서 또는 이와 관련된 입력 메시지(508) 내에 포함시켜서, 제어기(202)는 제 1 탐색 결과를 엔진(204)에 다시 제공하거나 스트리밍 입력한다.
이어서, 블록(406)에서, 탐색 엔진(204)은 예측자(314)를 사용하여서 영역(318) 내에서 모션 탐색을 수행하여서 적어도 블록(402)에서 사용된 가령 16*8 및 8*16, 8*8, 8*4, 4*8 및/또는 4*4와 같은 바와 동일한 매크로블록 파티션 또는 서브 매크로브록 파티션에 대하여서 제 2 모션 벡터 결과 세트를 생성한다. 도 8은 형상 후보들(604)에 대해서 블록(406)을 수행함으로써 획득되는 결과들을 나타내는, 본 명세서의 실시예에 따른 탐색 결과(800)의 예시적인 콘텐츠를 나타내고 있다. 단지 예시적인 목적에서 말하자면, (도 8에서 강조 처리된) 결과(800)에서의 서브 매크로블록 파티션 8*8_2에 대한 스코어는 수행된 블록(406)으로부터 획득된 최상의 모션 벡터 결과에 대응할 수 있다. 다양한 구현예들에서, 블록(406)에서 제 1 탐색 결과를 초기 조건으로서 사용하는 바는 제 2 예측자를 사용하는 모션 탐색에 대한 초기 탐색 후보로서 매크로블록 파티션 또는 서브 매크로브록 파티션 각각에 대한 제 1 모션 벡터 결과를 사용하는 바를 포함한다.
블록(408)에서, 제 1 탐색 결과를 제 2 탐색 결과와 결합으로써 전체 탐색 결과가 생성된다. 가령, 다양한 구현예들에서, 탐색 엔진(204)은 제 1 탐색 결과를 사용하여서 제 2 탐색 결과를 업데이트함으로써 블록(408)을 수행한다. 즉, 각 파티션 또는 각 형상에 대하여서 탐색 엔진(204)이 블록(402)으로부터의 모션 벡터 결과를 블록(406)으로부터의 모션 벡터 결과와 비교하고 최상의 스코어(가령, 최저 SAD 스코어)를 갖는 모션 벡터 결과를 선택하거나 업데이트된 탐색 결과 내에 남김으로써 최상의 모션 벡터 탐색 결과를 결정할 수 있다. 가령, 도 9는 형상 후보들(604)에 대해서 블록(408)을 수행함으로써 획득될 수 있는, 본 명세서의 실시예에 따른 전체 탐색 결과(900)의 예시적인 콘텐츠를 나타내고 있다. 가령, 이 전체 탐색 결과(900)는 블록(402) 및 블록(306)을 각기 수행함으로써 획득된 결과(900) 내에서 (강조 처리된) 서브 매크로블록 파티션 8*8_0 및 서브 매크로블록 파티션 8*8_2에 대한 스코어들에 대응하는 2 개의 최상의 모션 벡터 결과들을 포함한다.
다양한 구현예들에서, 결과(900)의 서브 매크로블록 파티션 8*8_0 및 서브 매크로블록 파티션 8*8_2와 같은 서로 다른 형상 후보들에 대한 결과들은 서로 다른 기준 프레임 ID들(610)을 갖는다. 이는 대응하는 모션 벡터들이 상이한 기준 프레임들을 가리킴을 의미한다. 다양한 구현예들에서, 본 명세서의 교시에 따라서 기준 프레인 ID들을 스트림 입력 스트림 출력 인터페이스에 부가함으로써, 각 형상에 대한 모션 벡터 및 왜곡 정보를 갖는 동일한 인터페이스가 다수의 기준 프레임 상의 다수의 예측자들에 걸쳐서 전송될 수 있다. 따라서, 본 교시에 따른 스트림 입력 스트림 출력 인터페이스의 최종 결과는 다수의 기준 프레임 및 다수의 영역으로부터의 복합적 결과일 수 있다.
프로세스(400)는 블록(410)으로 진행하여서 이 블록에서 전체 탐색 결과가 출력으로서 제공된다. 다양한 구현예들에서, 블록(410)에서, 탐색 엔진(204)은 블록(408)으로부터의 모든 형상 후보 전체 탐색 결과들(가령, 전체 결과들(900))을 추가 예측자와 연관된 탐색 호에 대해서 사용되고/사용되거나 후속 프로세싱 시에 사용되기 위해서 제어기(202)에 입력으로서 스트리밍 출력(510)한다.
프로세스(400)는 블록(412)으로 진행하며, 이 블록에서 제 3 탐색 결과가 제 3 모션 예측자에 대해서 획득된다. 여기서, 제 3 탐색 결과를 획득하는 바는 상기 전체 탐색 결과를 제 3 모션 예측자를 사용하여서 모션 예측을 수행하는데 있어서 초기 조건으로서 사용하는 바를 포함한다. 다양한 구현예들에서, 블록(412)에서, 탐색 엔진(204)은 제어기(202)로부터 수신된 제 3 탐색 호에 응답하여서 탐색 결과를 획득한다. 가령, 제어기(202)는 예측자(320)를 사용하여서 모션 탐색을 특정하는 제 3 탐색 호(512)를 탐색 엔진(204)에 발행한다. 또한, 제 3 탐색 호(512)의 일부로서 또는 이와 관련된 입력 메시지(514) 내에 포함시켜서, 제어기(202)는 전체 탐색 결과(900)를 탐색 엔진(204)에 다시 제공하거나 스트리밍 입력한다.
다양한 구현예들에서, 모션 탐색 엔진에 제공된 입력 메시지들(가령, 메시지(508,514))은 동적 크기를 가질 수 있다. 가령, 초기 호(502)와 관련된 입력 메시지는 그 크기가 작은데 반해서, 입력 메시지들(508,514)은 이전 탐색 결과들이 모션 엔진(204)으로 스트리밍 입력되기 때문에 그 크기가 보다 클 수 있다. 가령, 다양한 구현예들에서, 추가 파티션 후보 또는 추가 형상 후보가 다양한 모션 예측자들에 대해서 수행되는 모션 탐색에 부가될 수 있다. 이와 관련하여서, 다수의 스트림 입력 스트림 출력 인터페이스가 사용되어서 메시지의 크기가 동적으로 조절되어서 소프트웨어가 모션 탐색 엔진에 대한 호(call)들을 보다 효율적으로 준비할 수 있게 된다.
이어서, 블록(412)에서, 탐색 엔진(204)은 예측자(320)를 사용하여서 영역(324) 내에서 모션 탐색을 수행하여서 적어도 블록(406)에서 사용된 가령 16*8 및 8*16, 8*8, 8*4, 4*8 및/또는 4*4와 같은 바와 동일한 매크로블록 파티션 또는 서브 매크로브록 파티션에 대하여서 제 3 모션 벡터 결과 세트를 생성한다. 다양한 구현예들에서, 블록(412)에서 전체 탐색 결과를 초기 조건으로서 사용하는 바는 제 3 예측자를 사용하는 모션 탐색에 대한 초기 탐색 후보로서 매크로블록 파티션 또는 서브 매크로브록 파티션 각각에 대한 전체 모션 벡터 결과를 사용하는 바를 포함한다.
탐색 엔진(204)은 이 전체 탐색 결과를 업데이트하며 업데이트된 전체 탐색 결과(516)를 다시 제어기(202)로 스트리밍 출력한다. 도 4에서는 도시되지 않았지만, 다양한 구현예들에서, 본 명세서의 교시에 따라서, 임의의 개수의 모션 예측자들에 대해서 수행되는 모션 탐색들에 대한 유사한 블록들을 포함하는 프로세스(400)와 유사한 프로세스들이 수행될 수 있다.
다양한 구현예들에서, 각 파티션에 대한 최상의 모션 벡터 결과를 포함하는 것 이외에, 인터페이스의 복제 카피가 각 매크로블록 파티션 또는 서브 매크로블록 파티션에 대하여서 다음 상위(second best) 또는 차상위 모션 벡터 결과 또는 N 번째까지의 상위 모션 벡터 결과를 포함할 수 있다. 가령, 도 10은 결과(1000)가 각 형상 부호에 대하여서 최상 모션 벡터 결과들(1002) 및 다음 상위의 모션 벡터 결과들(1004)을 포함하는, 본 명세서의 실시예에 따른 탐색 결과(1000)의 예시적인 콘텐츠를 나타내고 있다.
다양한 구현예들에서, N 번째까지의 상위 모션 벡터 결과들(가령, 결과들(1002 및 1004))이 사용되어서 몇 개의 다른 형상 부호들 간에 작은 차가 있는 경우에 최적의 파티션 또는 형상 후보를 결정할 수 있다. 다양한 구현예들에서, N 번째까지의 상위 모션 벡터 결과를 포함하는 정보는 가령 양자화 또는 다른 방법을 수행함으로써 단지 왜곡 메트릭을 넘어서 모드 결정을 수행하기 위해서 후속 계산 및/또는 최적화가 수행될 수 있게 한다.
도 4에 도시된 예시적인 프로세스(400)의 실시예는 예시된 순서로 도시된 모든 블록들을 수행하는 바를 포함하지만, 본 명세서는 이로만 한정되지 않는다. 다양한 실례에서, 프로세스(400)의 실시예는 예시된 순서와 다른 순서로 및/또는 예시된 블록들의 오직 서브 세트만을 수행하는 바를 포함할 수 있다.
또한, 도 4의 블록들 중 임의의 하나 이상은 하나 이상의 컴퓨터 프로그램 제품들이 제공하는 인스트럭션들에 응답하여서 수행될 수 있다. 이러한 프로그램 제품들은 가령 프로세서에 의해서 실행되어서 상술된 동작들을 수행하게 하는 인스트럭션들을 제공하는 신호 보유 매체를 포함할 수 있다. 이러한 컴퓨터 프로그램 제품들은 임의의 컴퓨터 판독 가능한 매체의 형태로 제공될 수 있다. 따라서, 가령, 하나 이상의 프로세서 코어들을 포함하는 프로세서가 컴퓨터 판독 가능한 매체에 보유된 인스트럭션에 응답하여서 도 4에 도시된 블록들 중 하나 이상을 수행할 수 있다.
본 명세서에서 기술된 임의의 실시예에서 사용되는 용어 "모듈"은 본 명세서에서 기술된 동작들을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 인스트럭션 세트 또는 인스트럭션들로서 구현된다. 본 명세서에서 기술되는 임의의 실시예들에서 사용되는 용어 "하드웨어"는 가령 하드와이어 회로, 프로그램 가능한 회로, 상태 머신 회로 및/또는 프로그램 가능한 회로에 의해서 실행되는 인스트럭션들을 저장한 펌웨어를 단독으로 해서 또는 임의의 조합으로 해서 포함할 수 있다. 이 모듈들은 가령 집적 회로(IC), 시스템-온-칩(SoC) 등과 같은 대형 시스템의 일부를 형성하는 회로로서 개별적으로 또는 집합적으로 실현될 수 있다.
도 11은 본 명세서의 실시예에 따른 예시적인 시스템(1100)을 예시하고 있다. 다양한 구현예에서, 시스템(1100)은 매체 시스템이지만 이로 한정되는 것은 아니다. 가령, 시스템(1100)은 개인용 컴퓨터, 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 이동식 컴퓨터, 팜탑 컴퓨터, PDA, 셀룰러 전화, 셀룰러 전화와 PDA의 조합, 텔레비전, 스마트 장치(가령, 스마트 폰, 스마트 테블릿 또는 스마트 텔레비전), 이동 인터넷 장치(MID), 메시징 장치, 데이터 통신 장치 등 내에 내장될 수도 있다.
다양한 구현예들에서, 시스템(1100)은 디스플레이(1120)에 접속된 플랫폼(1102)을 포함한다. 플랫폼(1102)은 콘텐츠 서비스 장치(1130), 콘텐츠 전달 장치(1140) 또는 다른 유사한 콘텐츠 소스와 같은 콘텐츠 장치로부터 콘텐츠를 수신한다. 하나 이상의 네비게이션 피처을 포함하는 네비게이션 제어기(1150)가 사용되어서 가령 플랫폼(1102) 및/또는 디스플레이(102)와 상호 작용할 수 있다. 이러한 구성 요소들 각각은 이하에서 상세하게 기술될 것이다.
다양한 구현예들에서, 플랫폼(1102)은 칩세트(1105), 프로세서(1110), 메모리(1112), 저장 장치(1114), 그래픽 서브시스템(1115), 애플리케이션(1116) 및/또는 무선 장치(1118)의 임의의 조합을 포함할 수 있다. 칩세트(1105)는 프로세서(1110), 메모리(1112), 저장 장치(1114), 그래픽 서브시스템(1115), 애플리케이션(1116) 및/또는 무선 장치(1118) 간의 상호 통신을 제공한다. 가령, 칩세트(1105)는 저장 장치(1114)와 상호 통신을 제공할 수 있는 저장 장치 어댑터(미도시)를 포함한다.
프로세서(1110)는 CISC(Complex Instruction Set Computer) 프로세서, RISC(Reduced Instruction Set Computer) 프로세서, ×86 인스트럭션 세트 호환 가능한 프로세서, 멀티 코어 또는 임의의 다른 마이크로프로세서 또는 중앙 프로세싱 유닛(CPU)으로서 구현될 수 있다. 다양한 구현예에서, 프로세서(1110)는 다중-코어 프로세서, 다중-코어 이동 프로세서 등일 수 있다.
메모리(1112)는 다음으로 한정되지 않지만 RAM, DRAM 또는 SRAM을 포함하는 휘발성 메모리 장치로서 구현될 수 있다.
저장 장치(1114)는 다음으로 한정되지 않지만 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브, 내부 저장 장치, 부착형 저장 장치, 플래시 메모리, 배터리 지원형 SDRAM(동기식 DRAM) 및/또는 네트워크 액세스 가능한 저장 장치를 포함하는 비휘발성 저장 장치로서 구현될 수 있다. 다양한 구현예에서, 저장 장치(1114)는 가령 다수의 하드 드라이브들이 포함될 경우에 중요한 디지털 매체에 대하여 저장 성능이 개선된 보호 정도를 증가시키는 기술을 포함할 수 있다.
그래픽 서브시스템(1115)은 표시될 정지 이미지 또는 비디오와 같은 이미지를 프로세싱할 수 있다. 그래픽 서브시스템(1115)은 가령 그래픽 프로세싱 유닛(GPU) 또는 비주얼 프로세싱 유닛(VPU)일 수 있다. 아날로그 인터페이스 또는 디지털 인터페이스가 사용되어서 그래픽 서브시스템(1115)과 디스플레이(1120)를 통신 가능하게 결합시킬 수 있다. 가령, 이 인터페이스는 HDMI(high-definition multimedia interface) 기술, 디스플레이포트(DisplayPort) 기술, 무선 HDMI 기술 및/또는 무선 HD 호환 기술 중 임의의 것일 수 있다. 그래픽 서브시스템(1115)은 프로세서(1110) 또는 칩세트(1105) 내로 통합될 수 있다. 몇몇 구현예들에서, 그래픽 서브시스템(1115)은 칩세트(1105)에 통신 가능하게 연결된 독립형 카드일 수 있다.
본 명세서에서 기술되는 그래픽 및/또는 비디오 프로세싱 기술들은 다양한 하드웨어 아키텍처로 구현될 수 있다. 가령, 그래픽 및/또는 비디오 기능들은 칩세트 내에 통합될 수 있다. 이와 달리, 별도의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 구현예에서, 그래픽 및/또는 비디오 기능들은 다중-코어 프로세서를 포함하는 범용 프로세서에 의해서 제공될 수 있다. 다른 실시예들에서, 이러한 기능들은 소비자 전자 제품 장치에서 구현될 수 있다.
무선 장치(1118)는 다양한 적합한 무선 통신 기술들을 사용하여서 신호들을 송신 및 수신할 수 있는 하나 이상의 무선 장치들을 포함한다. 이러한 기술들은 하나 이상의 무선 네트워크에 걸친 통신을 포함한다. 예시적인 무선 네트워크는 다음으로 한정되지 않지만 WLAN, WPAN, WMAN(wireless metropolitan area network), 셀룰러 네트워크 및 위성 네트워크를 포함한다. 이러한 네트워크에 걸쳐서 통신을 할 시에, 무선 장치(1118)는 임의의 버전의 하나 이상의 적용 가능한 통신 표준에 따라서 동작할 수 있다.
다양한 구현예들에서, 디스플레이(1120)는 임의의 텔레비전 타입 모니터 또는 디스플레이를 포함한다. 디스플레이(1120)는 가령 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전 유사 장치 및/또는 텔레비전을 포함한다. 디스플레이(1120)는 디지털 및/또는 아날로그일 수 있다. 다양한 구현예에서, 디스플레이(1120)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(1120)는 시각적 프로젝션을 수신하는 투명한 표면일 수 있다. 이러한 프로젝션은 다양한 형태의 정보, 이미지 및/또는 객체들을 운반할 수 있다. 가령, 이러한 프로젝션들은 MAR(mobile augmented reality) 애플리케이션을 위한 시각적 중첩일 수 있다. 하나 이상의 소프트웨어 애플리케이션(1116)의 제어 하에서, 플랫폼(1102)은 디스플레이(1120) 상에 사용자 인터페이스(1122)를 표시할 수 있다.
다양한 구현예에서, 콘텐츠 서비스 장치(1130)는 임의의 국유 서비스, 국제 서비스 및/또는 민간 서비스에 의해서 호스트되며 가령 인터넷을 통해서 플랫폼(1102)에 액세스 가능하다. 콘텐츠 서비스 장치(1130)는 플랫폼(1102) 및/또는 디스플레이(1120)에 연결될 수 있다. 플랫폼(1102) 및/또는 콘텐츠 서비스 장치(1130)는 네트워크(1160)에 접속되어서 이 네트워크(1160)로/로부터 매체 정보를 전송/수신할 수 있다. 콘텐츠 전달 장치(1140)도 역시 플랫폼(1102) 및/또는 디스플레이(1120)에 연결될 수 있다.
다양한 구현예들에서, 콘텐츠 서비스 장치(1130)는 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화, 디지털 정보 및/또는 콘텐츠를 전달할 수 있는 인터넷 구현형 장치들 및 콘텐츠 제공자와 플랫폼(1102) 및/또는 디스플레이(1120) 간에서 네트워크(1160)를 통해서 또는 직접적으로 콘텐츠를 양방향 또는 일방향으로 통신시킬 수 있는 임의의 다른 유사한 장치를 포함할 수 있다. 이 콘텐츠는 시스템(1110) 내의 구성 요소들 중 하나와 콘텐츠 제공자 간에서 네트워크(1160)를 통해서 양방향 및/또는 일방향으로 통신될 수 있다. 이러한 콘텐츠의 실례는 가령, 비디오, 음악, 의료용 정보, 게임 정보 등을 포함하는 임의의 매체 정보를 포함할 수 있다.
콘텐츠 서비스 장치(1130)는 매체 정보, 디지털 정보 및/또는 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 콘텐츠 제공자의 실례들은 임의의 케이블 콘텐츠 제공자, 위성 텔레비전 콘텐츠 제공자, 무선 콘텐츠 제공자 또는 인터넷 콘텐츠 제공자를 포함할 수 있다. 제공된 실례들은 어떠한 방식으로든 본 명세서를 특정 실시예로 한정하는 것은 아니다.
다양한 구현예에서, 플랫폼(1102)은 하나 이상의 네비게이션 피처를 갖는 네비게이션 제어기(1150)로부터 제어 신호를 수신할 수 있다. 이 제어기(1150)의 네비게이션 피처는 가령 사용자 인터페이스(1122)와 상호 작용하는데 사용될 수 있다. 실시예들에서, 네비게이션 제어기(1150)는 사용자로 하여금 컴퓨터 내에 공간적 데이터(가령, 연속적 다차원 데이터)를 입력할 수 있게 하는 컴퓨터 하드웨어 구성 요소(구체적으로, HID(human interface device))일 수 있는 포인팅 장치일 수 있다. 그래픽 유저 인터페이스(GUI) 및 텔레비전 및 모니터와 같은 다수의 시스템들을 사용하여서 사용자는 물리적 제스처를 통해서 컴퓨터 또는 텔레비전에 데이터를 제공하거나 제어할 수 있다.
이 제어기(1150)의 네비게이션 피처의 움직임은 포인터, 커서, 포커스 링 또는 디스플레이 상에 표시된 다른 시각적 표시자들을 움직임으로써 가령 디스플레이(1120) 상에서 복제될 수 있다. 가령, 소프트웨어 애플리케이션(1116)의 제어 하에서, 네비게이션 제어기(1150) 상에 위치한 네비게이션 피처가 가령 사용자 인터페이스(1122) 상에 표시된 가상 네비게이션 피처에 맵핑될 수 있다. 실시예들에서, 제어기(1150)는 별도의 구성 요소가 아니며 플랫폼(1102) 및/또는 디스플레이(1120) 내에 통합될 수 있다. 그러나, 본 명세서는 본 명세서에서 예시되거나 기술된 상황 또는 요소들로 한정되는 것은 아니다.
다양한 구현예들에서, 드라이버(미도시)는 사용자로 하여금 가령 인에이블될 때에 초기 부팅-업 이후에 버튼을 터치함으로써 텔레비전과 같은 플랫폼(1102)을 순간적으로 턴 온 및 턴 오프할 수 있게 하는 기술을 포함한다. 프로그램 로직은 플랫폼(1102)으로 하여금 플랫폼이 턴 오프될 때에도 콘텐츠를 매체 어댑터 또는 다른 콘텐츠 서비스 장치(1130) 또는 콘텐츠 전달 장치(1140)에 제공할 수 있게 한다. 또한, 칩세트(1105)는 가령 5.1 입체 사운드 오디오 및/또는 HD 7.1 입체 사운드 오디오를 위한 하드웨어 및/또는 소프트웨어를 지원할 수 있다. 드라이버는 통합된 그래픽 플랫폼을 위한 그래픽 드라이버를 포함할 수 있다. 실시예들에서, 그래픽 드라이버는 PCI(peripheral component interconnect) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 구현예들에서, 시스템(1100) 내에 도시된 구성 요소들 중 임의의 하나 이상은 서로 통합될 수 있다. 가령, 플랫폼(1102) 및 콘텐츠 서비스 장치(1130)는 서로 통합되거나 플랫폼(1102), 콘텐츠 서비스 장치(1130) 및 콘텐츠 전달 장치(1140)는 서로 통합될 수 있다. 다양한 실시예들에서, 플랫폼(1102) 및 디스플레이(1120)는 서로 통합될 수 있다. 디스플레이(1120)와 콘텐츠 서비스 장치(1130)는 서로 통합되거나 디스플레이(1120)와 콘텐츠 전달 장치(1140)는 서로 통합될 수 있다. 이러한 실례들은 본 명세서를 한정하지는 않는다.
다양한 실시예들에서, 시스템(1100)은 무선 시스템, 유선 시스템 또는 이들의 조합으로서 구현될 수 있다. 무선 시스템으로서 구현될 때에, 시스템(1100)은 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은, 무선 공유 매체를 통해서 통신하기에 적합한 구성 요소 및 인터페이스를 포함할 수 있다. 무선 공유 매체의 실례는 RF 스펙트럼 등과 같은 무선 스펙트럼의 일부분을 포함할 수 있다. 유선 시스템으로서 구현될 때에, 시스템(1100)은 입출력 어댑터, 이 입출력 어댑터를 이에 대응하는 유선 통신 매체에 접속하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 등과 같은, 유선 통신 매체를 통해서 통신하기에 적합한 구성 요소 및 인터페이스를 포함할 수 있다. 유선 통신 매체의 실례는 와이어, 케이블, 금속 리드, PCB(인쇄 회로 기판), 백플레인, 스위치 패브릭, 반도체 재료, 트위스트형-쌍 와이어(twisted-pair wire), 동축 케이블, 광섬유 등을 포함할 수 있다.
플랫폼(1102)은 정보를 통신시키기 위해서 하나 이상의 논리적 또는 물리적 채널을 확립할 수 있다. 이 정보는 매체 정보 및 제어 정보를 포함할 수 있다. 매체 정보는 사용자에 대해 의도된 콘텐츠를 나타내는 임의의 데이터를 나타낸다. 콘텐츠의 실례는 가령 음성 대화 데이터, 비디오 회의 데이터, 스트리밍 비디오 데이터, 전자 메일 메시지, 음성 메일 메시지, 알파뉴메릭 부호, 그래픽, 이미지, 비디오, 텍스트 등을 포함할 수 있다. 음성 대화 데이터는 가령 스피치 정보, 침묵 기간(silence period), 백그라운드 노이즈, 컴포트 노이즈(comfort noise), 톤 등일 수 있다. 제어 정보는 자동화 시스템에 대해서 의도된 명령, 인스트럭션 또는 제어 워드를 나타내는 임의의 데이터를 말한다. 가령, 제어 정보는 시스템을 통해서 매체 정보를 라우팅하거나 노드에게 소정의 방식으로 매체 정보를 프로세싱하도록 명령하는데 있어서 사용될 수 있다. 그러나, 본 명세서는 도 11에 도시되거나 기술된 상황 또는 요소들로 한정되는 것은 아니다.
상술한 바와 같이, 시스템(1100)은 다양한 물리적 스타일 또는 형태 크기들로 구현될 수 있다. 도 12는 시스템(1100)이 실현될 수 있는 소형 형태 크기의 장치(1200)의 실시예를 나타내고 있다. 가령, 실시예들에서, 이 장치(1200)은 무선 기능을 갖는 이동 컴퓨팅 장치로서 구현될 수 있다. 이동 컴퓨팅 장치는 프로세싱 시스템 및 가령 하나 이상의 배터리와 같은 이동 전원을 갖는 임의의 장치를 지칭할 수 있다.
상술한 바와 같이, 이동 컴퓨팅 장치의 실례는 개인용 컴퓨터, 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 이동식 컴퓨터, 팜탑 컴퓨터, PDA, 셀룰러 전화, 셀룰러 전화와 PDA의 조합, 텔레비전, 스마트 장치(가령, 스마트 폰, 스마트 테블릿 또는 스마트 텔레비전), 이동 인터넷 장치(MID), 메시징 장치, 데이터 통신 장치 등을 포함할 수 있다.
또한, 이동 컴퓨팅 장치의 실례는 손목 컴퓨터, 손가락 컴퓨터, 링 컴퓨터, 안경형 컴퓨터, 벨트 클립 컴퓨터, 팔 밴드 컴퓨터, 신발 컴퓨터, 의복 컴퓨터 및 다른 착용 가능한 컴퓨터와 같은 사람이 착용할 수 있도록 구성된 컴퓨터들을 포함할 수 있다. 다양한 실시예들에서, 가령, 이동 컴퓨팅 장치는 컴퓨터 애플리케이션, 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트 폰으로 구현될 수 있다. 몇몇 실시예들이 예시적으로 스마트 폰으로서 구현된 이동 컴퓨팅 장치를 참조하여서 기술될 것이지만, 다른 실시예들이 역시 다른 무선 이동 컴퓨팅 장치를 사용하여서 구현될 수도 있다. 본 명세서는 이로만 한정되는 것은 아니다.
도 12에 도시된 바와 같이, 장치(1200)은 하우징(1202), 디스플레이(1204), 입출력 장치(1206) 및 안테나(1208)를 포함한다. 장치(1200)는 네비게이션 피처들(1212)을 포함한다. 디스플레이(1204)는 이동 컴퓨팅 장치용으로 적합한 정보를 디스플레이하기 위한 임의의 적합한 디스플레이 유닛을 포함할 수 있다. 입출력 장치(1206)는 정보를 이동 컴퓨팅 장치로 입력하기 위한 임의의 적합한 입출력 장치를 포함할 수 있다. 이러한 입출력 장치(1206)의 실례는 알파뉴머릭 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 로커 스위치(rocker switch), 마이크로폰, 스피커, 음성 인식 장치 및 소프트웨어 등을 포함할 수 있다. 또한, 정보는 마이크로폰(미도시)을 사용하여서 장치(1200) 내로 입력될 수도 있다. 이러한 정보는 음성 인식 장치(미도시)에 의해서 디지털화될 수 있다. 본 명세서는 이로만 한정되는 것은 아니다.
다양한 실시예들은 하드웨어 요소, 소프트웨어 요소 또는 이들의 조합으로 구현될 수 있다. 하드웨어 요소들의 실례들은 프로세서, 마이크로프로세서, 회로, 회로 요소(트랜지스터, 저항, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 로직 게이트, 레지스터, 반도체 장치, 칩, 마이크로칩, 칩 세트 등을 포함할 수 있다. 소프트웨어 요소들의 실례는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 기능, 방법, 프로시저(procedure), 소프트웨어 인터페이스, API(application program interface), 인스트럭션 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 부호 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 사용하여서 구현되는지를 결정하는 바는 소망하는 컴퓨팅 레이트, 전력 레벨, 가열 허용치, 프로세싱 사이클 버짓(processing cycle budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약 사항에 따라서 변할 수 있다.
적어도 일 실시예의 하나 이상의 측면들은 머신 판독 가능한 매체 상에 저장되어 프로세서 내에서 다양한 로직을 나타내고 머신에 의해서 판독되어서 이 머신으로 하여금 본 명세서에서 기술된 방법들을 수행하는 로직을 구현하는 표현적 인스트럭션(representative instructions)에 의해서 구현될 수 있다. "IP 코어"로 알려진 이러한 표현들은 유형의 머신 판독 가능한 매체 상에 저장되고 다양한 고객 또는 제조 시설에 공급되어서 제조 머신에 로딩되어서 실제로 로직 또는 프로세서를 형성한다.
본 명세서에서 제안된 소정의 특징들이 다양한 구현예들 또는 실시예들을 참조하여서 기술되었지만, 이러한 설명 부분은 한정적인 방식으로 해석되어서는 안 된다. 따라서, 본 명세서에서 기술된 실시예들 또는 구현예들의 다양한 변경 및 다른 실시예들 또는 구현예들이 본 기술 분야의 당업자에게 자명하며 이들은 본 명세서의 기술적 사상 및 범위 내에 해당된다.

Claims (30)

  1. 모션 추정을 위해 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜을 사용하는 컴퓨터로 구현된 방법으로서,
    비디오 인코더의 모션 탐색 엔진이,
    제 1 모션 예측자에 대한 제 1 탐색 결과를 획득하는 단계 - 상기 제 1 탐색 결과는 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 포함함 - 와,
    상기 제 1 탐색 결과를 출력으로서 제공하는 단계와,
    제 2 모션 예측자에 대한 제 2 탐색 결과를 획득하는 단계 - 상기 제 2 탐색 결과를 획득하는 단계는 상기 제 2 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 단계를 포함함 - 를 포함하는
    컴퓨터로 구현된 방법.
  2. 제 1 항에 있어서,
    상기 제 2 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 포함하는
    컴퓨터로 구현된 방법.
  3. 제 2 항에 있어서,
    상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하는 단계를 더 포함하는
    컴퓨터로 구현된 방법.
  4. 제 3 항에 있어서,
    상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합하는 단계는,
    상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대해서, 상기 제 1 모션 벡터 결과 및 상기 제 2 모션 벡터 결과 중에서 최상의 모션 벡터(best motion vector)를 선택하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  5. 제 1 항에 있어서,
    상기 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 단계는 상기 제 2 모션 예측자를 사용하여 상기 모션 탐색을 위한 초기 탐색 후보로서 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 사용하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  6. 제 1 항에 있어서,
    상기 제 1 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 더 포함하는
    컴퓨터로 구현된 방법.
  7. 제 6 항에 있어서,
    상기 제 1 모션 벡터 결과는 최상의 모션 벡터 결과를 포함하며,
    상기 제 2 모션 벡터 결과는 차상위의 모션 벡터 결과(second best motion vector result)를 포함하는
    컴퓨터로 구현된 방법.
  8. 제 1 항에 있어서,
    상기 제 1 탐색 결과를 획득하는 단계는, 모션 탐색 제어기로부터 수신된 제 1 탐색 호에 응답하여 상기 제 1 탐색 결과를 획득하는 단계를 포함하며,
    상기 제 1 탐색 결과를 출력으로서 제공하는 단계는 상기 제 1 탐색 결과를 상기 모션 탐색 제어기에 입력으로서 스트리밍하는 단계를 포함하고,
    상기 제 2 탐색 결과를 획득하는 단계는, 상기 모션 탐색 제어기로부터 수신된 제 2 탐색 호 및 제 1 입력 메시지에 응답하여 상기 제 1 탐색 결과를 획득하는 단계를 포함하며,
    상기 제 1 입력 메시지는 상기 제 1 탐색 결과를 포함하는
    컴퓨터로 구현된 방법.
  9. 제 8 항에 있어서,
    상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하는 단계와,
    상기 전체 탐색 결과를 상기 모션 탐색 제어기에 입력으로서 스트리밍하는 단계와,
    제 3 모션 예측자에 대한 제 3 탐색 결과를 획득하는 단계를 더 포함하며,
    상기 제 3 탐색 결과를 획득하는 단계는 상기 제 3 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 전체 탐색 결과를 사용하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  10. 제 9 항에 있어서,
    상기 제 3 탐색 결과를 획득하는 단계는, 상기 모션 탐색 제어기로부터 수신된 제 3 탐색 호 및 제 2 입력 메시지에 응답하여 상기 제 3 탐색 결과를 획득하는 단계를 포함하며,
    상기 제 2 입력 메시지는 상기 전체 탐색 결과를 포함하는
    컴퓨터로 구현된 방법.
  11. 제 10 항에 있어서,
    상기 제 2 입력 메시지는 상기 제 1 입력 메시지보다 더 큰
    컴퓨터로 구현된 방법.
  12. 제 1 항에 있어서,
    상기 제 1 모션 예측자는 제 1 기준 프레임과 연관되며,
    상기 제 2 모션 예측자는 상기 제 1 기준 프레임과 상이한 제 2 기준 프레임과 연관되는
    컴퓨터로 구현된 방법.
  13. 인스트럭션들을 포함하는 컴퓨터 프로그램을 저장한 컴퓨터 판독가능 저장매체로서,
    상기 인스트럭션들이 실행된다면, 비디오 인코더의 모션 탐색 엔진이,
    제 1 모션 예측자에 대한 제 1 탐색 결과를 획득 - 상기 제 1 탐색 결과는 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 포함함 - 하고,
    상기 제 1 탐색 결과를 출력으로서 제공하고,
    제 2 모션 예측자에 대한 제 2 탐색 결과를 획득 - 상기 제 2 탐색 결과를 획득하는 것은 상기 제 2 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 것을 포함함 - 하도록 하는
    컴퓨터 판독가능 저장매체.
  14. 제 13 항에 있어서,
    상기 제 2 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 포함하는
    컴퓨터 판독가능 저장매체.
  15. 제 14 항에 있어서,
    상기 컴퓨터 프로그램은,
    실행된다면 상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하도록 하는 인스트럭션을 더 포함하는
    컴퓨터 판독가능 저장매체.
  16. 제 15 항에 있어서,
    상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합하는 것은
    상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대해서, 상기 제 1 모션 벡터 결과 및 상기 제 2 모션 벡터 결과 중에서 최상의 모션 벡터를 선택하는 것을 포함하는
    컴퓨터 판독가능 저장매체.
  17. 제 13 항에 있어서,
    상기 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 것은 상기 제 2 모션 예측자를 사용하여 모션 탐색을 위한 초기 탐색 후보로서 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 사용하는 것을 포함하는
    컴퓨터 판독가능 저장매체.
  18. 제 13 항에 있어서,
    상기 제 1 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 더 포함하는
    컴퓨터 판독가능 저장매체.
  19. 제 18 항에 있어서,
    상기 제 1 모션 벡터 결과는 최상의 모션 벡터 결과를 포함하며,
    상기 제 2 모션 벡터 결과는 차상위의 모션 벡터 결과를 포함하는
    컴퓨터 판독가능 저장매체.
  20. 제 13 항에 있어서,
    상기 제 1 탐색 결과를 획득하는 것은, 모션 탐색 제어기로부터 수신된 제 1 탐색 호에 응답하여 상기 제 1 탐색 결과를 획득하는 것을 포함하며,
    상기 제 1 탐색 결과를 출력으로서 제공하는 것은 상기 제 1 탐색 결과를 상기 모션 탐색 제어기에 입력으로서 스트리밍하는 것을 포함하고,
    상기 제 2 탐색 결과를 획득하는 것은, 상기 모션 탐색 제어기로부터 수신된 제 2 탐색 호 및 제 1 입력 메시지에 응답하여 상기 제 1 탐색 결과를 획득하는 것을 포함하며,
    상기 제 1 입력 메시지는 상기 제 1 탐색 결과를 포함하는
    컴퓨터 판독가능 저장매체.
  21. 제 20 항에 있어서,
    상기 컴퓨터 프로그램은,
    실행된다면 상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하고,
    상기 전체 탐색 결과를 상기 모션 탐색 제어기 입력으로서 스트리밍하고,
    제 3 모션 예측자에 대한 제 3 탐색 결과를 획득 - 상기 제 3 탐색 결과를 획득하는 것은 상기 제 3 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 전체 탐색 결과를 사용하는 것을 포함함 - 하도록 하는
    컴퓨터 판독가능 저장매체.
  22. 제 21 항에 있어서,
    상기 제 3 탐색 결과를 획득하는 것은, 상기 모션 탐색 제어기로부터 수신된 제 3 탐색 호 및 제 2 입력 메시지에 응답하여 상기 제 3 탐색 결과를 획득하는 것을 포함하며,
    상기 제 2 입력 메시지는 상기 전체 탐색 결과를 포함하는
    컴퓨터 판독가능 저장매체.
  23. 모션 추정을 위해 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜을 사용하는 장치로서,
    프로세서를 포함하되,
    상기 프로세서는,
    제 1 모션 예측자에 대한 제 1 탐색 결과를 획득 - 상기 제 1 탐색 결과는 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 포함함 - 하고,
    상기 제 1 탐색 결과를 출력으로서 제공하고,
    제 2 모션 예측자에 대한 제 2 탐색 결과를 획득 - 상기 제 2 탐색 결과를 획득하는 것은 상기 제 2 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 것을 포함함 - 하도록 구성된
    모션 추정 장치.
  24. 제 23 항에 있어서,
    상기 제 2 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 포함하는
    모션 추정 장치.
  25. 제 24 항에 있어서,
    상기 프로세서는,
    상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하도록 더 구성된
    모션 추정 장치.
  26. 제 23 항에 있어서,
    상기 제 1 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 더 포함하는
    모션 추정 장치.
  27. 모션 추정을 위해 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜을 사용하는 시스템으로서,
    인코딩된 비디오 데이터를 전송하는 안테나와,
    비디오 인코더를 포함하되,
    상기 비디오 인코더는 상기 안테나와 통신 가능하게 접속되며, 상기 비디오 인코더는 적어도 부분적으로,
    제 1 모션 예측자에 대한 제 1 탐색 결과를 획득 - 상기 제 1 탐색 결과는 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 1 모션 벡터 결과를 포함함 - 하고,
    상기 제 1 탐색 결과를 출력으로서 제공하고,
    제 2 모션 예측자에 대한 제 2 탐색 결과를 획득 - 상기 제 2 탐색 결과를 획득하는 것은 상기 제 2 모션 예측자를 사용하여 모션 탐색을 수행하기 위한 초기 조건으로서 상기 제 1 탐색 결과를 사용하는 것을 포함함 - 함으로써,
    상기 인코딩된 비디오 데이터를 생성하는
    모션 추정 시스템.
  28. 제 27 항에 있어서,
    상기 제 2 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 포함하는
    모션 추정 시스템.
  29. 제 28 항에 있어서,
    상기 비디오 인코더는 상기 제 1 탐색 결과를 상기 제 2 탐색 결과와 결합함으로써 전체 탐색 결과를 생성하여 상기 인코딩된 비디오 데이터를 더 생성하는
    모션 추정 시스템.
  30. 제 27 항에 있어서,
    상기 제 1 탐색 결과는 상기 소스 매크로블록의 다수의 매크로블록 파티션 및/또는 서브 매크로블록 파티션 각각에 대한 제 2 모션 벡터 결과를 더 포함하는
    모션 추정 시스템.
KR1020120148633A 2011-12-19 2012-12-18 모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜 KR101425286B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/US2011/065726 2011-12-19
PCT/US2011/065726 WO2013095322A1 (en) 2011-12-19 2011-12-19 Exhaustive sub-macroblock shape candidate save and restore protocol for motion estimation

Publications (2)

Publication Number Publication Date
KR20130070554A KR20130070554A (ko) 2013-06-27
KR101425286B1 true KR101425286B1 (ko) 2014-08-04

Family

ID=48589995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120148633A KR101425286B1 (ko) 2011-12-19 2012-12-18 모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜

Country Status (6)

Country Link
US (1) US20150016530A1 (ko)
EP (1) EP2795903A4 (ko)
KR (1) KR101425286B1 (ko)
CN (1) CN103167286B (ko)
TW (1) TWI527439B (ko)
WO (1) WO2013095322A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
TWI752341B (zh) 2018-08-04 2022-01-11 大陸商北京字節跳動網絡技術有限公司 不同解碼器側運動矢量推導模式之間的交互
CN111010569B (zh) 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
US10944987B2 (en) 2019-03-05 2021-03-09 Intel Corporation Compound message for block motion estimation
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
WO2022040846A1 (zh) * 2020-08-24 2022-03-03 华为技术有限公司 一种优化运动矢量的方法及其相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080064007A (ko) * 2007-01-03 2008-07-08 삼성전자주식회사 움직임 벡터 트랙킹을 이용한 영상의 부호화, 복호화 방법및 장치
KR20090008418A (ko) * 2006-04-28 2009-01-21 가부시키가이샤 엔티티 도코모 화상 예측 부호화 장치, 화상 예측 부호화 방법, 화상 예측부호화 프로그램, 화상 예측 복호 장치, 화상 예측 복호 방법 및 화상 예측 복호 프로그램
US20110013695A1 (en) 2008-04-01 2011-01-20 Canon Kabushiki Kaisha Moving image encoding apparatus and moving image encoding method
KR20110009141A (ko) * 2008-04-11 2011-01-27 톰슨 라이센싱 비디오 부호화 및 복호화에서의 템플릿 매칭 예측을 위한 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668608A (en) * 1995-07-26 1997-09-16 Daewoo Electronics Co., Ltd. Motion vector estimation method and apparatus for use in an image signal encoding system
US6826294B1 (en) * 1999-03-05 2004-11-30 Koninklijke Philips Electronics N.V. Block matching motion estimation using reduced precision clustered predictions
US6519005B2 (en) * 1999-04-30 2003-02-11 Koninklijke Philips Electronics N.V. Method of concurrent multiple-mode motion estimation for digital video
JP2003143609A (ja) * 2001-08-21 2003-05-16 Canon Inc 画像処理装置、画像処理方法、記録媒体及びプログラム
US6925123B2 (en) * 2002-08-06 2005-08-02 Motorola, Inc. Method and apparatus for performing high quality fast predictive motion search
US7616692B2 (en) * 2003-09-07 2009-11-10 Microsoft Corporation Hybrid motion vector prediction for interlaced forward-predicted fields
US20060143674A1 (en) * 2003-09-19 2006-06-29 Blu Ventures, Llc Methods to adapt search results provided by an integrated network-based media station/search engine based on user lifestyle
US8213509B2 (en) 2006-10-06 2012-07-03 Calos Fund Limited Liability Company Video coding on parallel processing systems
US20080126278A1 (en) 2006-11-29 2008-05-29 Alexander Bronstein Parallel processing motion estimation for H.264 video codec
US8743972B2 (en) * 2007-12-20 2014-06-03 Vixs Systems, Inc. Coding adaptive deblocking filter and method for use therewith
KR101452859B1 (ko) 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
JP2011097572A (ja) * 2009-09-29 2011-05-12 Canon Inc 動画像符号化装置
JP5378344B2 (ja) * 2009-12-07 2013-12-25 韓國電子通信研究院 映像処理のためのシステム
US8755437B2 (en) * 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
JP5808427B2 (ja) * 2011-03-14 2015-11-10 メディアテック インコーポレイテッド 動きベクトル候補及び動きベクトル予測候補の導出のための方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090008418A (ko) * 2006-04-28 2009-01-21 가부시키가이샤 엔티티 도코모 화상 예측 부호화 장치, 화상 예측 부호화 방법, 화상 예측부호화 프로그램, 화상 예측 복호 장치, 화상 예측 복호 방법 및 화상 예측 복호 프로그램
KR20080064007A (ko) * 2007-01-03 2008-07-08 삼성전자주식회사 움직임 벡터 트랙킹을 이용한 영상의 부호화, 복호화 방법및 장치
US20110013695A1 (en) 2008-04-01 2011-01-20 Canon Kabushiki Kaisha Moving image encoding apparatus and moving image encoding method
KR20110009141A (ko) * 2008-04-11 2011-01-27 톰슨 라이센싱 비디오 부호화 및 복호화에서의 템플릿 매칭 예측을 위한 방법 및 장치

Also Published As

Publication number Publication date
WO2013095322A1 (en) 2013-06-27
EP2795903A4 (en) 2015-03-11
CN103167286A (zh) 2013-06-19
TWI527439B (zh) 2016-03-21
KR20130070554A (ko) 2013-06-27
EP2795903A1 (en) 2014-10-29
US20150016530A1 (en) 2015-01-15
CN103167286B (zh) 2017-05-17
TW201340722A (zh) 2013-10-01

Similar Documents

Publication Publication Date Title
JP6120390B2 (ja) 次世代動画用コンテンツに適応的な特性補償済み予測
US11223831B2 (en) Method and system of video coding using content based metadata
US9532048B2 (en) Hierarchical motion estimation employing nonlinear scaling and adaptive source block size
KR102587638B1 (ko) 비디오 코딩을 위해 이웃 블록 패턴을 이용하는 모션 추정 방법 및 시스템
US20170208341A1 (en) System and method of motion estimation for video coding
KR101425286B1 (ko) 모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜
US20170006303A1 (en) Method and system of adaptive reference frame caching for video coding
CN110741643A (zh) 用于视频代码化的复合帧内预测
KR20150024398A (ko) 크기 기반 변환 유닛 컨텍스트 도출
CN107205156B (zh) 通过缩放的运动矢量预测
US20140254678A1 (en) Motion estimation using hierarchical phase plane correlation and block matching
US20140247878A1 (en) Cross-layer motion vector prediction
KR20150038296A (ko) 인터-레이어 인트라 모드 예측
CN107113435B (zh) 分区模式和变换尺寸确定方法、装置、系统及介质
JP6060394B2 (ja) クロスレイヤー・クロスチャネル残差予測
US20140169467A1 (en) Video coding including shared motion estimation between multple independent coding streams
JP2016506165A (ja) インターレイヤの動きデータ継承
KR101777487B1 (ko) 코딩 단위 비트 수 제한
JP2015146599A (ja) レイヤ間画素サンプル予測

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: 20170704

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 5