KR100995205B1 - 비디오 데이터 처리 - Google Patents

비디오 데이터 처리 Download PDF

Info

Publication number
KR100995205B1
KR100995205B1 KR1020087019558A KR20087019558A KR100995205B1 KR 100995205 B1 KR100995205 B1 KR 100995205B1 KR 1020087019558 A KR1020087019558 A KR 1020087019558A KR 20087019558 A KR20087019558 A KR 20087019558A KR 100995205 B1 KR100995205 B1 KR 100995205B1
Authority
KR
South Korea
Prior art keywords
video data
row
filters
luma
chroma
Prior art date
Application number
KR1020087019558A
Other languages
English (en)
Other versions
KR20090003179A (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 KR20090003179A publication Critical patent/KR20090003179A/ko
Application granted granted Critical
Publication of KR100995205B1 publication Critical patent/KR100995205B1/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

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

Abstract

데이터 처리를 위한 방법들 및 시스템들이 설명된다. 움직임 평가기는 비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 움직임 벡터들을 생성한다. 움직임 보상기는 제1 인코딩 스킴과 상이한 제2 인코딩 스킴에 따라 움직임 벡터들로부터 하프 펠 움직임 벡터들을 생성한다.
움직임 벡터, 하프 펠 움직임 벡터, MPEG-4, H.264

Description

비디오 데이터 처리{PROCESSING VIDEO DATA}
<관련 U.S. 출원>
본 출원은, 본 출원의 양수인에게 양도되고, 2006년 2월 10일자로 출원된, "Adapting One Type of Encoder to Another Type of Encoder"란 제목의, 대리인 정리번호 NVID-P002129.PRO이고, 현재 계류중인 U.S. 가특허출원번호 제60/772,440호의 우선권을 주장한다.
<본 발명의 기술분야>
본 기재의 실시예들은 일반적으로 데이터 처리에 관련된다. 더 구체적으로, 본 발명의 실시예들은 비디오 데이터와 같은 데이터를 인코딩(압축)하는 것에 관련된다. 본 기재는, 적어도, 하나의 타입의 인코더를 다른 타입의 인코더에 적응시키는 것과 관련된다.
비디오 스트림들을 빠르고 효율적으로 처리하는 능력은, 더 많은 멀티미디어 특징들을 포함하는 휴대형 소비자 전자 제품들과 함께, 중요하게 되었다. 모바일 폰들은, 예를 들면, 멀티미디어 콘텐트를 검색하고, 보고, 전송하기 위해 이용될 수 있다. 그러나, 휴대형 장치들의 성능이 계속해서 증가하고 있지만, 그러한 장치들은 퍼스널 컴퓨터들과 같은 더 강력한 플랫폼들에 비해 여전히 다소 제한된다. 데이터 전송 및 검색 속도들이 또한 팩터(factor)일 수 있다. 통상적으로 이미지(예, 비디오) 데이터의 양은 오디오 데이터의 양보다 더 많이 고려된다.
데이터는 종종 저장 및 스트리밍(streaming)을 용이하게 하도록 자주 인코딩(압축)되고, 그런 다음 재생(예, 디스플레이)을 위해 디코딩(압축해제)된다. 비디오 데이터는 예를 들면 동영상 전문가 그룹(Moving Pictures Experts Group: MPEG) 스킴을 이용하여 압축될 수 있다. 비디오 시퀀스를 인코딩함으로써, 비디오 시퀀스를 나타내기 위해 필요한 비트 수가 대단히 감소될 수 있다.
전형적인 비디오 시퀀스에서, 일 프레임의 콘텐트, 또는 적어도 그 프레임의 일부분의 콘텐트는 다른 프레임의 콘텐트와 매우 유사할 수 있다. 이것은 통상적으로 "시간적 중복성(temporal redundancy)"으로서 일컬어진다. 통상적으로 "움직임 보상(motion compensation)"으로서 일컬어지는 압축 기술은 시간적 중복성을 활용하기 위해 채택된다. 프레임 내의 콘텐트가 다른(기준) 프레임의 콘텐트와 밀접하게 관련된다면, 기준 프레임을 이용하여 그 프레임의 콘텐트를 정확하게 나타내거나, 또는 예측하는 것이 가능하다.
프레임들은 픽셀들의 블록들(예, 16x16 픽셀들의 매크로블록)로 분할된다. 다른 위치로 이동되는 것 외에는, 달리 기준 프레임 내의 대응하는 블록으로부터 크게 변환되지 않은, 블록의 이동(movement)은 움직임 벡터(motion vector)를 이용하여 나타낼 수 있다. 예를 들어, 움직임 벡터 (3, 4)는, 블록이 기준 프레임 내의 그의 대응하는 블록의 위치에 비해 왼쪽으로 3 픽셀 그리고 위쪽으로 4 픽셀 이동했다는 것을 의미할 수 있다. 움직임 보상은 새로운 블록(또는 프레임 또는 이 미지)을 구성하기 위해 디코드된(압축해제된) 블록에 움직임 벡터를 적용하는 것을 말한다.
압축 표준들은 재구성된 비디오의 품질을 떨어뜨리지 않고서 더 높은 압축 레이트들을 달성하기 위해, 계속 진화하고 있다. 보다 널리 이용되고 있는 최근의 압축 표준은 H.264 또는 MPEG-4 파트(Part) 10으로서 알려져 있고, 보다 공식적으로는 고급 비디오 코딩(Advanced Video Coding: AVC)으로서 알려져 있다. (MPEG-4 파트 10과 상이한) MPEG-4와 같은 이전의 표준들도 계속 이용되고 있다.
<개요>
MPEG-4와 같은 이전의 그리고 여전히 수용가능한 표준들의 계속되는 이용과, H.264와 같은 더 새롭거나 향상된 표준들의 도입은 소비자 전자 장치들의 제조자들에게 딜레마를 유발시킬 수 있다. 하나의 압축 스킴에 대해 설계된 장치들은 다른 압축 스킴을 구현할 수 없을 수 있다. 이것은 인코딩이 하드웨어에서 달성되는 장치들에서 특히 사실일 수 있다. 따라서, 하나의 압축 스킴(예, MPEG-4)의 양상들을 다른 것(예, H.264)에 용이하게 적응시킬 수 있는 시스템 및/또는 방법이 유리할 것이다. 본 발명에 따른 실시예들은 이러한 유리한 점들 및 다른 유리한 점들을 제공한다.
일 실시예에서, H.264 인코더는 1/2픽셀(half pixel)(하프 펠: half pel) 필터 및 데이터 팩커 모듈(data packer module)을 포함하는 H.264 인터폴레이터(interpolator)를 다른 MPEG-4 인코더 파이프라인(an otherwise MPEG-4 encoder pipeline)에 부가함으로써 구현된다. 일 실시예에서, H.264 인터폴레이터는 하드웨어로 구현된다. MPEG-4 파이프라인은 움직임 벡터들을 계산하기 위해 이용되고, H.264 인터폴레이터는 움직임 보상을 위해 이용된다. 데이터 팩커 모듈은, 다운스트림 미디어 프로세서 장치(예, 디지털 신호 처리기: digital signal processor)에 의한 이용에 적합한 방식으로 움직임 보상기의 출력을 배열하는데, 다운스트림 미디어 프로세서 장치는 변환, 양자화, 역변환, 및 역양자화와 같은 다른 인코딩 처리들의 실행을 지령한다.
다른 MPEG-4 파이프라인 내에서 H.264 인터폴레이터의 하드웨어로의 구현은 게이트들의 수를 증가시키지 않고서 달성되고 전력 소모를 줄일 수 있다. 그러한 특징들은 휴대형 전화기들, 개인 정보 단말기들(personal digital assistants: PDAs), 및 핸드헬드 게임 장치들과 같은 휴대형 핸드헬드 전자 장치들에 특히 유익하다.
본 발명의 다양한 실시예들의 이들 및 다른 목적들과 이점들은 당업자가 다양한 도면들에 예시된 실시예들에 관한 다음의 상세한 설명을 읽은 후 이해하게 될 것이다.
본 명세서에 포괄되고 그의 일부를 형성하는 첨부 도면들은 본 발명의 실시예들을 예시하고, 설명과 함께, 본 발명의 원리들을 설명한다.
도 1은 본 발명에 따른 데이터 인코딩을 위한 시스템의 일 실시예의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 인코딩을 위한 처리의 구성요소들을 통한 데이터 흐름을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 인코딩을 위한 시스템의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 도 3의 시스템의 부가적인 상세 사항들을 나타낸 블록도이다.
도 5는 본 발명의 일 실시예에 따른 상태도를 도시한다.
도 6은 본 발명의 일 실시예에 따른 프레임 정보를 저장하기 위한 원형 버퍼를 도시한다.
도 7은 본 발명의 일 실시예에 따른 신호 프로토콜을 도시한다.
도 8은 본 발명의 일 실시예에 따른 데이터 처리를 위한 컴퓨터-구현된 방법의 순서도이다.
이제 본 발명의 다양한 실시예들이 상세히 참조될 것인데, 그 예들은 첨부 도면들에 예시된다. 본 발명은 이 실시예들과 관련하여 설명될 것이지만, 그들은 본 발명을 이 실시예들로 제한하고자 하는 것이 아니라는 것을 이해해야 할 것이다. 반대로, 본 발명은 첨부된 청구항들에 의해 정의된 본 발명의 사상 및 범위 내에 포함될 수 있는 대안들, 변경들 및 등가물들을 포괄하도록 의도된다. 또한, 하기의 본 발명의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 매우 많은 구체적인 상세한 사항들이 설명된다. 그러나, 본 발명은 이 구체적인 상세한 사항들 없이 실시될 수 있다는 것이 이해될 것이다. 다른 예들에서, 잘 알려진 방법들, 프로시저들, 컴포넌트들, 및 회로들은 본 발명의 양상들을 불필요하게 애매하게 하지 않도록 상세히 설명되지 않는다.
다음의 상세한 설명의 일부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 프로시저들, 로직 블록들, 처리, 및 연산들의 다른 상징적 표현 양식의 견지에서 제시될 것이다. 이 설명들 및 표현들은, 데이터 처리 기술의 숙련자들에 의해, 그들의 작업의 본질을 그 분야의 다른 숙련자들에게 가장 효과적으로 전달하기 위해 이용되는 수단이다. 본 출원에서, 프로시저, 로직 블록, 처리 등등은 원하는 결과를 도출하는 단계들 또는 명령들의 자기모순없는(self-consistent) 시퀀스라고 생각된다. 단계들은 물리적인 양들의 물리적인 조작들을 이용하는 것들이다. 필수적인 것은 아니지만, 통상적으로, 이 양들은 컴퓨터 시스템 내에서 저장될 수 있거나, 전송될 수 있거나, 결합될 수 있거나, 비교될 수 있거나, 또는 달리 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 이 신호들을 트랜잭션들, 비트들, 값들, 구성요소들, 심볼들, 문자들, 샘플들, 또는 픽셀들 등등으로서 일컫는 것이, 주로 흔히 사용된다는 이유에서, 때때로 편리하다는 것이 입증되었다.
그러나, 이들 모두 및 이와 유사한 용어들은 적당한 물리적인 양들과 연관되고, 단순히 이 양들에 적용되는 편리한 라벨들(labels)이라는 것을 명심해야 한다. 다음의 논의들로부터 명백한 바와 같이 특별히 달리 언급하지 않는다면, 본 발명을 통해, "실행", "수신", "액세싱", "컴퓨팅", "식별", "디코딩", "인코딩", "로딩", "적용", "제거", "시프팅", "저장", "선택", "배열", "지령", "생성", "재구성", " 비교", "변환", "양자화", "페칭" 등등과 같은 용어들을 이용한 논의들은, 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치 또는 프로세서의 동작들 및 처리들을 일컫는 것임을 이해해야 한다. 컴퓨터 시스템 또는 그와 유사한 전자 컴퓨팅 장치는 컴퓨터 시스템 메모리들, 레지스터들, 또는 다른 그러한 정보 저장소, 전송 또는 디스플레이 장치들 내에서 물리적인(전자적인) 양들로서 표현되는 데이터를 조작하고 변환한다.
본 명세서에 제공된 설명들과 예들은 비디오 데이터와 관련하여 논의되지만, 본 발명은 그렇게 제한되는 것은 아니다. 데이터는 멀티미디어 데이터일 수 있고, 예를 들면, 비디오 데이터와 연관된 오디오 데이터가 있을 수 있다.
도 1은 본 발명에 따른 인코더가 구현될 수 있는 시스템(10)의 블록도이다. 도 1의 예에서, 시스템(10)은 버스(15)를 통해 미디어(예, 비디오 또는 그래픽) 프로세서 장치(MPU)(12)에 커플링된 호스트 중앙 처리 장치(CPU)(11)를 포함한다. CPU(11)와 MPU(12) 둘다는 버스(15)를 통해 메모리(14)에 커플링된다. 시스템(10)의 실시예에서, 메모리(14)는 공유 메모리이며, 이에 따라 메모리(14)는 CPU(11) 및 MPU(12) 둘다를 위한 명령들 및 데이터를 저장한다. 대안적으로, CPU(11)와 MPU(12) 각각에 전용인 개별적인 메모리들이 있을 수 있다. 메모리(14)는 또한 커플링된 디스플레이(13)를 구동하는 픽셀 데이터를 저장하기 위한 비디오 프레임 버퍼를 포함할 수 있다.
도 1에 도시된 바와 같이, 시스템(10)은 본 발명의 실시예들에 따른 기능을 구현하는 컴퓨터 시스템 플랫폼의 기본적인 컴포넌트들을 포함한다. 시스템(10) 은, 예를 들면, 다수의 상이한 타입들의 휴대형 핸드헬드 전자 장치들로서 구현될 수 있다. 그러한 장치들로는, 예를 들면, 휴대형 전화기들, 개인 정보 단말기들(PDAs), 및 핸드헬드 게임 장치들, 또는 디스플레이 성능을 갖는 실질적으로 임의의 다른 타입의 장치를 포함할 수 있다. 그러한 실시예들에서, 주변 장치 버스들, 특수화된 통신 컴포넌트들, 특수화된 입력/출력(I/O) 장치들의 지원(support) 등등을 추가하기 위해 설계되는 컴포넌트들이 포함될 수 있다.
본 발명의 실시예들에 따르면, H.264 인코더는 H.264 인터폴레이터를 다른 MPEG-4 파이프라인에 삽입함으로써 구현된다. MPEG-4 파이프라인은 움직임 보상을 위해 H.264 인터폴레이터에 의해 이용되는 움직임 벡터들을 계산한다. 일 실시예에서, H.264 인터폴레이터는 MPU(12) 상에서 구현된다. H.264 인터폴레이터의 출력은, 예를 들면, 일 실시예에 있어서, MPU(12)의 일부인 디지털 신호 처리기(DSP)(16)에 제공된다. H.264 인터폴레이터에 관한 부가적인 정보는 하기에서 도 2, 3 및 4와 관련하여 제공된다.
도 2는 본 발명의 일 실시예에 따른 비디오 데이터 인코딩을 위한 처리(20)의 구성 요소들을 통한 데이터 흐름을 나타내는 블록도이다. 도 2의 예는 데이터 인코딩과 관련되는 보다 중대한 처리 블록들의 일부들을 도시하지만, 모든 처리 블록들이 도시되는 것은 아니며, 처리 블록들은 도시된 것과 상이한 순서로 실행될 수 있다. 또한, 논의 및 예시를 간단히 하기 위해, 처리 블록들 사이의 모든 데이터 흐름 경로들이 도시되지는 않는다.
중대한 것은, 본 발명의 실시예들에 따르면, 처리(20)는 MPEG-4 및 H.264 처 리 블록들을 모두 나타낸다. 위에서 언급한 바와 같이, H.264 인코더의 엘리먼트들은 MPEG-4 파이프라인에 삽입된다. 개략적으로, MPEG-4 파이프라인은 MPEG-4 인코더 또는 H.264 인코더 중 어느 하나에 의해 차례로 이용되는 움직임 벡터들을 생성하기 위해 이용된다. 즉, 움직임 평가 블록(206)의 다운스트림(downstream)에서, MPEG-4에 따라 생성된 움직임 벡터들은 MPEG-4 인코딩 처리 또는 H.264 인코딩 처리 중 어느 하나에서 이용될 수 있다.
도 2의 예에서, MPEG-4에 따라 구현되는 처리 블록들은 그와 같이 식별되고, H.264에 따라 구현되는 처리 블록들은 마찬가지로 식별된다. 비록 처리는 생각하건대 MPEG-4 모드로부터 H.264 모드로, 그리고 다시 역으로 스위칭될 수 있지만, 실제로 처리(20)는 MPEG-4 인코더 또는 H.264 인코더 중 어느 하나를 이용하여 구현된다. 즉, 시스템(10)은 MPEG-4 인코딩 스킴 및 H.264 인코딩 스킴을 구현하기 위한 성능이 제공되나, 소비자 전자 장치에 구현될 때, 제조자 또는 벤더(vendor)는 가능한 인코딩 스킴들 중 하나만 구현하도록 선택할 수 있다.
본 실시예에서, 입력(현재) 프레임(202)이 인코딩을 위해 제시된다. 프레임은 매크로블록(예, 16x16 픽셀들의 블록)의 단위들로 처리된다. 예측 매크로블록이 하나 이상의 기준 프레임들(204)에 기초하여 형성될 것이다. 기준 프레임(들)(204)은 이전에 인코딩된 프레임(현재 프레임(202) 직전의 인코딩된 프레임; 인코딩의 순서는 프레임들이 디스플레이되는 순서와 상이할 것임을 유의한다.)을 포함할 수 있고, 이미 인코딩되어 재구성되었던 다른 프레임들(예, MPEG-4 모드를 위해 재구성된 프레임(216) 또는 H.264 모드를 위해 재구성된 프레임(224))로부터 선택된다. 움직임 평가 블록(206)에서, 움직임 벡터들(108)은 입력 프레임(202)과 기준 프레임(들)(204)을 비교함으로써 유도된다.
MPEG-4 구현에서, 움직임 벡터들(208)은 예측 매크로블록을 형성하기 위해 움직임 보상 블록(210)에서 이용된다. 예측 매크로블록은 현재 매크로블록(입력 프레임(202))으로부터 감산되어 오차(residual)를 생성하고, 이 오차는 계수들의 세트로 변환되고(예, 이산 코사인 변환됨: discrete cosine transformed) 양자화된다(블록 212). 계수들은 엔트로피 인코딩(예, 허프만(Huffman) 인코딩)될 수 있으며, 이 논의에서 중점적인 것은 아니지만 디코딩에 이용되는 다른 정보와 함께, 압축된 비트스트림으로 형성될 수 있고, 이것은 전송되거나 저장될 수 있다. 또한, 계수들은 다른 프레임들을 인코딩하기 위해 이용될 수 있는 프레임을 재구성하기 위해 디코딩된다. 블록(214)에서, 계수들은 역양자화되고 역변환되어 (전술한 오차와 상이한)다른 오차를 생성하며, 이 오차는 예측 매크로블록에 더해져서 재구성된 매크로블록 및 궁극적으로는 재구성된 프레임(216)을 형성한다.
H.264 구현에서, MPEG-4 인코딩 스킴에 따라 유도된 움직임 벡터들(208)은, 하프 펠(half pel) 움직임 벡터들에 대해, 6 인접 픽셀들에 대한 6-탭 필터(예, 6-탭 유한 임펄스 응답 필터(six-tap finite impulse response filter)를 이용하여 예측 블록을 생성하기 위해 H.264 움직임 보상 블록(218)에서 이용된다. H.264 움직임 보상 블록(218)은 아래에서 도 3 및 도 4와 관련하여 더 논의된다. 데이터 팩킹 블록(220)에서, 움직임 보상 블록(218)으로부터의 데이터는 그것이 처리의 다음 스테이지(예, 다운스트림 데이터 처리 블록(222))에서 용이하게 이용될 수 있도 록 허용하는 방식으로 팩킹(배열)된다. 데이터 팩킹 블록(220)은 또한 블록(222)으로의 데이터의 흐름을 제어하도록 작용할 수 있다. 블록(222)에서는, 위에서 언급한 변환, 양자화, 역변환, 및 역양자화 처리들이 MPU(12)의 제어하에 소프트웨어와 하드웨어의 조합을 이용하여 수행되어, 다른 프레임들을 인코딩하기 위해 이용될 수 있는, 재구성된 프레임(224)을 궁극적으로 생성한다.
도 2를 계속 참조하면, 움직임 평가 블록(206)에서, 움직임 벡터들(208)은 하프 픽셀(하프 펠)의 정확도로 결정될 수 있다. 움직임 벡터는 x-성분 및 y-성분으로 구성되고, 그 중 어느 하나 또는 둘다는 하프 펠에 정확할 수 있다. 예를 들어, 5.5의 x-성분을 갖는 벡터는 (기준 프레임 내의 대응하는 블록에 비하여 측정된)블록의 움직임이 x-방향에서 5와 6 사이임을 의미한다. 더 구체적으로, 벡터 성분은 2 픽셀들, 즉 5-픽셀 거리와 연관된 픽셀과 6-픽셀 거리와 연관된 픽셀을 평균함으로써 결정된다. 이것은, 2 픽셀들 사이의 픽셀의 측정값을 얻기 위한 2 픽셀들에 대한 연산에 기인하여, 2-탭 유한 임펄스 응답(finite impulse response: FIR) 필터로서 일컬어진다. 따라서, 움직임 벡터들(208)은 2-탭 필터를 이용하여 결정되고 하프 펠까지의 정확도를 갖는다. 비록 하프 펠 정확도가 가능하지만, 움직임 벡터 성분들이 완전한 펠 값들(full pel values)인 경우들이 있을 수 있다. 또한, 다운스트림 데이터 처리 블록(222)은 하프 펠 값들을 평균함으로써 1/4 펠 움직임 벡터들을 결정하기 위해 이용될 수 있다.
도 3은 움직임 평가 블록(206)으로부터 H.264 인터폴레이터(32)(도 2의 블록들(218 및 220)을 나타냄)까지의, 그리고 그런 다음 그 이상의 처리(예, 명세서에 서 앞서 설명된 바와 같은 변환 등등)를 위한 다운스트림 데이터 처리 블록(222)까지의 정보의 흐름을 나타내는 블록도이다. H.264 인터폴레이터(32)로의 정보 입력은 MPEG-4 파이프라인으로부터 흐르는 데이터(34)에 대응하는 제어 및 유효 비트들(33)을 포함한다. 데이터(34)는 기준 및 현재 프레임들에 대한 매크로블록 데이터를 포함한다. 예를 들어, 제어 비트들은 매크로블록들 및 프레임들의 시작 및 종료를 마크한다(mark). 유효 비트는 유효 데이터를 포함하는 파이프라인들을 마크하기 위해 포함될 수 있다. 제어 및 유효 비트들(33)은 또한 H.264 인터폴레이터(32)의 움직임 보상기(218) 내의 루마(luma) 및 크로마(chroma) 메모리 판독 엔진들을 제어하기 위해 이용된다. 또한, 제어 및 유효 비트들(33)은 블록(222)으로 송신되는 출력 데이터를 팩킹하기 위해 데이터 팩커(220)에 의해 이용된다.
본 실시예에서, H.264 인터폴레이터(32)는 또한 데이터 타입(예, 현재 프레임 또는 기준 프레임)을 지시하는 신호(38)를 수신한다.
H.264 인터폴레이터(32)로부터 출력된 정보는 대역 외 신호들(36) 및 데이터(37)를 포함한다. 데이터(37)는 디스플레이 스크린(13)(도 1) 상의 픽셀들에 대응하는 움직임 보상된 픽셀 값들의 스트림을 포함한다. 데이터(37)는 또한 도 2의 움직임 벡터들(208)을 포함한다. 각각의 픽셀 값은 픽셀들의 필터링된 값들을 나타낸다. 움직임 벡터들(208)이 제로가 아니면, 데이터(37)는 움직임 벡터들의 함수이고, 움직임 벡터들(208)이 제로라면, 데이터는 H.264 인터폴레이터(32)를 빠져나간다.
도 3의 대역 외 신호들(36)은, 예를 들면, 블록들 및 매크로블록들의 시작과 끝, 프레임의 시작, 프레임의 마지막 매크로블록을 식별한다. 데이터 유효 비트가 또한 송신될 수 있다. 도 7은 대역 외 신호들(36)을 위한 신호 프로토콜의 일 실시예를 도시한다.
도 4는 본 발명의 일 실시예에 따른 H.264 인터폴레이터(32)의 블록도이다. 본 실시예에서, H.264 인터폴레이터(32)는 도 2의 움직임 보상 블록(218) 및 데이터 팩킹 블록(220)을 포함한다. 개략적으로, 일 실시예에서, H.264 인터폴레이터(32)는 데이터 복제 로직(data replication logic)을 갖는 원형 데이터 캐시, H.264 인터폴레이터(32)의 동작을 제어하는 상태 머신(50), 시스템 메모리(14)(도 1)로부터의 메모리 워드들을 페치(fetch)하기 위해 이용되는 하드웨어 제어 구조, 인터폴레이션 필터들을 데이터에 적용하기 위해 이용되는 데이터 경로, 및 데이터를 팩킹하고 그 결과들을 그 다음 유닛(다운스트림 데이터 처리 블록(222))에 기록하는 출력 유닛(출력 선택 로직(450))을 포함한다. 출력 선택 로직(450)은 도 2의 데이터 팩커(220)와 유사하다. 상태 머신(50)은 하기에서 도 5와 관련하여 논의된다.
도 4의 H.264 인터폴레이터(32)에 대한 다음의 논의에서, 버퍼들, 캐시들 등등을 참조할 것이다. 이 메모리 소자들은 도 1의 시스템 메모리(14) 내에, H.264 인터폴레이터(32)에 커플링된 별도의 메모리 장치 내에, 또는 인터폴레이터(32) 내에 존재할 수 있다. 또한, 설명을 명확히 하기 위해, 일부 상세 사항들은 도 4에 포함되지 않는다(예, 멀티플렉서들은 도시되지 않을 수 있음). 또한, 도 4는 예를 들면, 비트 수, 필터 수, 버퍼 수 등등과 관련해서 논의된다. 비록 이 특정 예들 과 관련하여 논의되지만, 본 발명은 그렇게 제한되지는 않는다.
H.264 인터폴레이터(32)를 통한 데이터 경로는 데이터 파이프라인 및 제어 파이프라인을 포함한다. 데이터 및 제어 파이프라인들은 현재 파이프 스테이지로부터 후속의 파이프 스테이지로 데이터를 전달하기 위해 이용되는 바이패스 멀티플렉서들을 포함하는데, 즉, 데이터는 파이프 스테이지를 건너뛸(jump past) 수 있다. 데이터 및 제어 파이프라인들을 통한 흐름을 제어하는 멀티플렉서들은 동일 멀티플렉서 선택 신호들에 의해 제어된다. 멀티플렉서 바이패스 동작들은 움직임 벡터들(208)(도 2) 및 데이터 타입(38)(예, 현재 또는 기준 프레임; 도 3 참조)에 의해 제어된다.
계속해서 도 4를 참조하면, 제어 파이프라인을 통해 흐르는 제어 및 유효 비트들은 데이터 파이프라인 내의 동일 파이프 스테이지를 통해 흐르는 데이터에 대응한다. 제어 비트들은 매크로블록들 및 프레임들의 시작 및 끝을 마크한다. 유효 비트는 유효 데이터를 포함하는 파이프라인들을 마크하기 위해 포함된다. 제어 및 유효 비트들은 루마(luma) 및 크로마(chroma) 메모리 판독 엔진들(예, 입력 선택 로직(403))을 제어하기 위해, 그리고 다운스트림 데이터 처리 블록(222)에 송신되는 데이터를 팩킹하기 위해 이용된다.
일 실시예에서, 기준 프레임(204)(도 2)의 각각의 평면(plane)은 시스템 메모리(도 1) 내의 원형 버퍼에 저장된다. 16x16 픽셀 매크로블록의 각각의 8x8 사분면(quadrant)에 대해, 이미 계산된 움직임 벡터가 존재한다. 각각의 사분면에 대해, 블록의 상부-좌측 및 하부-우측 좌표들은 움직임 벡터와 합산되고, 그 결과 는 기준 프레임의 경계들에 클립핑된다(clipped). 그런 다음 결과의 좌표들은 시스템 메모리(14)(도 1) 내의 원형 버퍼들에 프로젝트된다. 좌표들이 버퍼 주위를 "둘러 감으면(wrap)"(도 6), 사분면마다 컬러 채널당 두개의 메모리 페치들이 실행된다. 좌표들이 둘러 감지 않으면, 오직 하나의 메모리 페치가 요구된다. 각각의 페치의 사이즈는, 예를 들면 페치가 루마 또는 크로마 페치인지 여부, 좌표들이 원형 버퍼 주위를 둘러 감는지의 여부, 및 움직임 벡터들이 하프 펠인지의 여부에 따라, 1x1로부터 13x13 픽셀들의 범위들에 걸친다.
도 4의 H.264 인터폴레이터 블록(32)은 현재 및 기준 데이터 캐시들에 커플링되는데, 이 캐시들은 14-비트 픽셀 값들을 포함한다. H.264 인터폴레이터(32)는 유효 데이터가 있을 때 시그널링하는 업스트림 유닛(예, 움직임 평가 블록(206))에 의해 제어된다. H.264 인터폴레이터(32)는 입력 선택 로직(403)에 따라 데이터를 판독한다. 페치된 데이터가 메모리(14)로부터 돌아오면(return), 그것은 몇몇의 버퍼들에 캐시된다. 채널당 네개의 버퍼들이 있다. 루마 버퍼들은 각각 13x13 픽셀들(픽셀당 8비트)이고, 크로마 버퍼들은 각각 5x5 픽셀들(픽셀당 8비트)이다. 두개의 페치들이 요구되는 각각의 사분면에 대한 데이터는 단일 버퍼 내로 스티치된다(stitched). 또한, 데이터는, 페치하는 동안 발생되는 임의의 클립핑을 보상하기 위해 자동적으로 바운더리-연장된다(예, 이용가능한 픽셀들의 바운더리 미러링을 이용함; 본질적으로 에지 픽셀들을 바운더리를 너머 반복함). 시스템 메모리(14)로부터의 페치들은 H.264 인터폴레이터(32)의 인터폴레이션 처리와 파이프라인된다(pipelined).
H.264 인터폴레이터(32)는 버퍼들로부터 기준 프레임(예, 도 2의 기준 프레임(204))에 대한 데이터를 판독한다. 기준 프레임 내의 각각의 8x8 사분면의 루마 채널에 대하여, H.264 인터폴레이터(32)는 버퍼로부터 8개 또는 13개 8-비트 픽셀들의 8개 또는 13개 행들을 판독한다. 기준 프레임 내의 각각의 8x8 사분면의 각각의 크로마 채널에 대해, H.264 인터폴레이터(32)는 버퍼로부터 4개 또는 5개의 8-비트 픽셀들의 4개 또는 5개 행들을 판독한다. 버퍼들이 다수의 페치들로 파퓰레이트되었는지 여부 또는 바운더리 연장이 이용되었는지 여부는 H.264 인터폴레이터(32)에 투명하다.
도 4의 H.264 인터폴레이터(32)는 버퍼들로부터 현재 프레임(예, 도 2의 입력 프레임(202))에 대한 데이터를 판독한다. 현재 프레임의 8x8 사분면 각각의 루마 채널에 대해, H.264 인터폴레이터(32)는 버퍼로부터 8개의 8-비트 픽셀들의 8개 행들을 판독한다. 현재 프레임 내의 8x8 사분면 각각의 크로마 채널 각각에 대해, H.264 인터폴레이터(32)는 버퍼로부터 4개의 8-비트 픽셀들의 4개 행들을 판독한다.
데이터는 루마 행 필터들(404, 405, 406, 및 407), 루마 열 필터들(421, 422, 423, 및 424), 크로마 행 필터들(431, 432, 433, 및 434), 및 크로마 열 필터들(441, 442, 443, 및 444)을 이용하여 처리된다. 각각의 스테이지에서의 4개의 필터들로, 4 픽셀들이 동시에 처리될 수 있다. 이 필터들 각각은 커널 [1 -5 20 20 -5 1]/32 을 실행하고 8-비트 출력을 생성하는 6-탭 FIR 필터이다. 루마 필터들(404-407, 및 421-424) 각각은 6개 14-비트 입력들을 갖는다. 크로마 필터 들(431-434, 및 441-444)의 각각의 쌍은 2x5의 14-비트 입력들을 갖는다. 즉, 4개의 크로마 필터들이 있고, 그 각각은 행 필터(a row filter)와 각각의 열 필터(a respective column filter)를 포함한다. 따라서, 예를 들어, 하나의 크로마 필터는 크로마 행 필터(431)와 크로마 열 필터(441)를 포함하고, 다른 그러한 쌍은 크로마 행 필터(432)와 크로마 열 필터(442)를 포함하고, 기타 등등이다.
각각의 루마 및 크로마 연산은 매크로블록 데이터와 연관되는 움직임 벡터(208)(도 2)에 의해 제어된다. 움직임 벡터가 제로이면, 필터 연산들은, 데이터를 제로로 곱하는 것 대신, 바이패스된다(데이터 바이패스(460)).
x-방향(예, 행)과 y-방향(예, 열)에서의 연산들은 분리될(decoupled) 수 있어서, 연산들은 먼저 행들에 대해 진행되고 그런다음 열들에 대해 진행될 수 있다. 루마 필터 연산들은 캐시(411) 전의 x-성분 필터 연산과 캐시(411) 후의 y-성분 필터 연산으로 분리된다. 움직임 벡터의 x-성분이 제로이면, 루마 데이터는 제로로 곱하는 것 대신, 바이패스 멀티플렉서(라우팅 로직(410))를 이용하여 루마 행 필터들(404-407)을 바이패스한다(바이패스(412)). 움직임 벡터의 x-성분이 제로가 아니면(예, 1), 데이터는 루마 행 필터들(404-407)에 의해 필터링된다. 그 결과들은 라우팅 로직(410)에 의해 선택되고 루마 캐시(414)에 놓인다.
캐시(411)는 루마 열 필터들(421-424), 크로마 행 필터들(431-434), 및 크로마 열 필터들(441-444)에 의해 공유되는 6행들을 갖는다. 처음 2개 행들은 5개 14-비트 픽셀 워드들을 갖고, 크로마 행 필터들(431-434) 및 크로마 열 필터들(441-444)에 커플링되는 크로마 캐시(412)를 구성한다. 그 다음 4개 행들은 4개 의 14-비트 픽셀 워드들을 갖고, 루마 열 필터들(421-424)에 커플링되는 루마 캐시(414)를 구성한다.
캐시(411)의 각 행은 그 다음 행에 연결된다. 매크로블록의 시작 시에 데이터 캐시(411)는 비어 있지만, 데이터가 페치되고 루마 행 필터들(404-407)에 의해 처리됨에 따라 채워진다. 루마 행 필터 연산들로부터의 결과들은 캐시(411)의 첫번째 행에 로딩된다. 캐시(411)가 인에이블되는 각각의 클록 사이클에서, 데이터는 캐시(411)의 다음 행으로 아래로 시프트된다. 데이터가 루마 열 필터들(421-424), 크로마 행 필터들(431-434), 및 크로마 열 필터들(441-444)에 공급된다.
루마 열 필터들(421-424)은 데이터를 필터링하기 위해 움직임 벡터의 y-성분을 이용한다. 루마 열 필터들(421-424)의 다운스트림은 도 4에 "C"로 라벨이 붙여진 루마 클립핑 블록들이다.
크로마 필터들(431-434, 및 441-444)은 움직임 벡터의 x-성분을 이용하여 크로마 필터 연산의 첫번째 스테이지(예, 행 필터)를 선택하고 적용하며, 그런 다음 움직임 벡터의 y-성분을 이용하여 크로마 필터 연산의 두번째 스테이지(예, 열 필터)를 선택하고 적용한다. 각각의 크로마 필터는, 방정식:
픽셀-출력 = (a*E)+(b*F)+(c*G)+(d*H)
을 실행하며, 필터의 첫번째 스테이지에 대해 a=(4-xfrac), b=xfrac, c=(4-xfrac) 및 d=xfrac이고, 필터의 두번째 스테이지에 대해 a=(4-yfrac), b=(4-yfrac), c=yfrac 및 d=yfrac이다. E, F, G, 및 H는 4개의 입력 픽셀들을 나타내고, xfrac과 yfrac은 각각 움직임 벡터의 x-성분 및 y-성분의 하위 2비트들을 나타낸다. 이 관계의 결과는 8을 가산함으로써 올림(rounded up)되고, 그 결과는 도 4에 "A"로 라벨 붙여진 블록에서 우측으로 시프트된 4비트들이다.
도 2 및 도 4를 참조하면, 출력 장치(출력 선택 로직(450); 이것은 데이터 팩커(220)와 유사함)는 루마 및 크로마 필터들로부터의 데이터를, 데이터가 그 다음 스테이지(예, 다운스트림 데이터 처리 블록(222))에서 용이하게 이용되도록 허용하는 방식으로, 팩킹한다. 일 실시예에서, 기준 프레임(예, 기준 프레임(204))에 대한 픽셀 데이터의 4x4 블록은 현재 프레임(예, 입력 프레임(202))에 대한 픽셀 데이터의 4x4 블록이 뒤따른다. 이러한 방식으로, 기준 프레임에 대한 데이터는 현재 프레임에 대한 데이터와 인터리브된다(interleaved). 이것은 다운스트림 데이터 처리 블록(222)에 의한 데이터의 처리를 용이하게 할 수 있는데, 왜냐하면 블록(222)이 이렇게 재구성되는 프레임(224)의 대응하는 부분을 생성하기 위해 필요한 데이터의 2 세트들 중 적어도 일부를 갖기 때문이다. 다시 말해서, 전체 현재 프레임에 이어 전체 기준 프레임을 출력하는 것 대신에, 각각의 일부가 출력되어, 블록(222)이 그 부분에 대해 연산을 행하는 것을 허용한다.
도 5는 본 발명의 일 실시예에 따른, H.264 인터폴레이션 블록(32)의 연산을 제어하기 위한 상태 머신(50)을 도시한다. 본 실시예에서, 상태 머신(50)은 마스터 상태 머신(52)과, 두개의 상태 서브-머신들 즉, 현재 데이터 상태 머신(54)과 기준 데이터 상태 머신(56)을 포함한다. H.264 인터폴레이터(32)(도 4)는 신호(38)에 따라 현재 프레임(202) 또는 기준 프레임(204)(도 2) 중 어느 하나에 대한 데이터에 작용할 수 있고, 도 4와 관련하여 논의된 시스템 메모리 페치 및 메모 리 버퍼 판독을 제어하고 실행하기 위해, 적당한 상태 서브-머신(54 또는 56)이 마스터 상태 머신(52)에 의해 인에이블("en")된다. 상태 머신들(54 및 56) 각각은 매크로블록 내의 8x8 픽셀 블록들 및 각각의 8x8 블록 내의 픽셀들의 4x4 블록들을 통해 "걷기(walking)" 위한 전술된 로직을 실행한다.
도 6은 본 발명의 일 실시예에 따른, 프레임 정보를 저장하기 위한 원형 버퍼(60)의 이용을 도시한다. 이 실시예에서, 버퍼(60)는 후속적으로 기준 프레임으로서 이용될 수 있는 재구성된 프레임(62)의 일부와 기준 프레임(61)의 일부를 보유하기 위해 이용된다. 재구성된 프레임(62)이 버퍼(60) 내로 판독되면, 이전에 페치되었던 기준 프레임(61)에 대한 데이터를 대체한다. 도 6의 예에서, 재구성된 프레임(62)이 버퍼(60) 내로 판독되면, 버퍼의 바텀(bottom)에 도달할 것이고, 그 포인트에서 데이터는 버퍼의 탑(top) 내로 판독되기 시작할 것이다. 그 결과, 재구성된 프레임(62)이 후속적으로 페치될 때, 소정의 경우들에 있어서(페치될 데이터가 버퍼(60)의 바텀과 탑 둘다에 저장된 때), 2개의 페치들이 요구될 수 있다. 버퍼(60)는 필요한 메모리 자원의 양을 감소시킬 수 있지만, 본 발명은 원형 버퍼의 이용으로 제한되지는 않는다.
도 7은 본 발명의 일 실시예에 따른, 대역 외 신호들(out-of-band signals)(36)(도 3)에 대한 신호 프로토콜을 도시한다. 도 7에 도시된 신호들은 프레임의 시작을 지시하는 "frame_start", 매크로블록이 유효함을 지시하는 "mb_v", 매크로블록의 시작을 지시하는 "mb_start", 매크로블록의 끝을 지시하는 "mb_end", 블록의 시작을 지시하는 "blk_start", 블록의 끝을 지시하는 "blk_end" 를 포함한다.
도 8은 본 발명의 일 실시예에 따른, 데이터 처리를 위한 방법의 일 예의 순서도(80)이다. 특정 단계들이 순서도(80)에 개시되지만, 그러한 단계들은 예시적이다. 즉, 본 발명은 다양한 다른 단계들, 또는 순서도(80)에 인용된 단계들의 변형들을 실행하기 위해 잘 조화된다. 순서도(80) 내의 단계들은 제시된 것과 상이한 순서로 실행될 수 있으며, 순서도(80) 내의 단계들은 반드시 예시된 시퀀스로 실행될 필요는 없다는 것을 이해해야 된다. 일반적으로, 순서도(80) 내의 단계들은 도 1의 MPU(12)에 의한다.
도 8의 블록(81)에서, 움직임 벡터들이 2-탭 유한 임펄스 응답(FIR) 필터를 이용하여 선택된다. 움직임 벡터들은 비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 생성된다. 일 실시예에서, 제1 인코딩 스킴은 MPEG-4 인코딩 스킴이다.
블록(82)에서, 6-탭 FIR 필터들은 제1 인코딩 스킴과는 상이한 제2 인코딩 스킴에 따라 하프 펠 인터폴레이트된 픽셀들을 계산하기 위해 움직임 벡터들에 적용된다. 일 실시예에서, 제2 인코딩 스킴은 H.264 인코딩 스킴이다.
일 실시예에서, 비디오 데이터의 루마 채널의 x-성분은 복수의 루마 행 6-탭 FIR 필터들을 이용하여 연산된다. 복수의 루마 행 필터들로부터의 결과는 캐시의 제1 행에 로딩된다. 제1 행에 이미 존재하는 결과는 캐시의 제2 행으로 시프트된다.
또한, 일 실시예에서, 비디오 데이터의 크로마 채널의 x-성분은 복수의 크로 마 행 6-탭 FIR 필터들을 이용하여 연산되고, 크로마 채널의 y-성분은 복수의 크로마 열 6-탭 FIR 필터들을 이용하여 연산되고, 루마 채널의 y-성분은 복수의 루마 열 6-탭 FIR 필터들을 이용하여 연산된다.
블록(83)에서, 데이터 팩커는 입력 프레임에 대한 비디오 데이터의 블록들을 기준 프레임에 대한 비디오 데이터의 블록들과 인터리브한다.
대체로, 이 기재는 데이터 처리를 위한 방법들 및 시스템들을 개시한다. 움직임 평가기는 비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 움직임 벡터들을 생성한다. 움직임 보상기는 제1 인코딩 스킴과는 상이한 제2 인코딩 스킴에 따라 움직임 벡터들로부터 하프 펠 움직임 벡터들을 생성한다.
이와 같이 본 발명의 실시예들이 설명되었다. 본 발명은 특정 실시예들로 설명되었지만, 본 발명은 그러한 실시예들에 의해 제한되는 것으로 해석돼서는 안된다는 것을 이해하여야 한다.

Claims (16)

  1. 비디오 데이터 처리 시스템으로서,
    비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 움직임 벡터들을 생성하기 위한 움직임 평가기(motion estimator);
    상기 움직임 평가기에 커플링되고, 상기 움직임 벡터들을 이용하여 상기 제1 인코딩 스킴에 따라 상기 입력 프레임의 상기 블록의 재구성된 제1 버전을 생성하기 위한 제1 인코더; 및
    상기 움직임 평가기에 커플링되고, 상기 움직임 벡터들을 이용하여 상기 제1 인코딩 스킴과 상이한 제2 인코딩 스킴에 따라 상기 입력 프레임의 상기 블록의 재구성된 제2 버전을 생성하기 위한 제2 인코더
    를 포함하는 비디오 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 움직임 벡터들은 2-탭 유한 임펄스 응답(a two-tap finite impulse response (FIR)) 필터를 이용하여 생성되고, 상기 제2 인코더는 하프 펠 인터폴레이트된 픽셀들(half pel interpolated pixels)을 생성하기 위한 복수의 6-탭 FIR 필터들을 포함하는 비디오 데이터 처리 시스템.
  3. 제1항에 있어서, 상기 제2 인코더는,
    상기 비디오 데이터의 루마(luma) 채널의 x-성분에 대해 연산을 행하는 복수의 루마 행 필터들;
    상기 복수의 루마 행 필터들에 커플링되는 캐시 - 상기 캐시가 인에이블되는 각각의 클록 사이클 동안 상기 복수의 루마 행 필터들로부터의 결과는 상기 캐시의 제1 행에 로딩되고 상기 제1 행에 이미 존재하는 결과는 상기 캐시의 제2 행으로 시프트됨 -;
    상기 비디오 데이터의 크로마(chroma) 채널의 x-성분에 대해 연산을 행하는 복수의 크로마 행 필터들;
    상기 크로마 채널의 y-성분에 대해 연산을 행하는 복수의 크로마 열 필터들; 및
    상기 루마 채널의 y-성분에 대해 연산을 행하는 복수의 루마 열 필터들을 포함하고,
    상기 복수의 크로마 행 필터들과 상기 복수의 크로마 열 필터들 모두는 상기 캐시의 상기 제1 행과 상기 제2 행 둘다에 커플링되고, 상기 복수의 루마 열 필터들중의 각각의 루마 열 필터는 상기 캐시의 각각의 행에 커플링되는, 비디오 데이터 처리 시스템.
  4. 제1항에 있어서,
    상기 제1 인코딩 스킴은 MPEG-4와 실질적으로 호환적인 인코딩 스킴을 포함하고, 상기 제2 인코딩 스킴은 H.264와 실질적으로 호환적인 인코딩 스킴을 포함하는, 비디오 데이터 처리 시스템.
  5. 비디오 데이터 처리 방법으로서,
    2-탭 유한 임펄스 응답(FIR) 필터를 이용하여 움직임 벡터들을 선택하는 단계 - 상기 움직임 벡터들은 비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 생성됨 -; 및
    6-탭 FIR 필터들을 상기 움직임 벡터들에 적용하여 상기 제1 인코딩 스킴과 상이한 제2 인코딩 스킴에 따라 하프 펠 인터폴레이트된 픽셀들을 계산하는 단계
    를 포함하는 비디오 데이터 처리 방법.
  6. 제5항에 있어서,
    상기 기준 프레임의 상기 블록과 상기 입력 프레임의 상기 블록의 재구성된 버전 둘다를 원형 버퍼에 동시에 저장하는 단계를 더 포함하고, 그리고/또는
    상기 입력 프레임에 대한 비디오 데이터의 블록들과 상기 기준 프레임에 대한 비디오 데이터의 블록들을 인터리브하는 단계를 더 포함하는 비디오 데이터 처리 방법.
  7. 제5항에 있어서,
    복수의 루마 행 6-탭 FIR 필터들을 이용하여 상기 비디오 데이터의 루마 채널의 x-성분에 대해 연산을 행하는 단계;
    상기 복수의 루마 행 필터들로부터의 결과를 캐시의 제1 행에 로딩하는 단계;
    상기 제1 행에 이미 존재하는 결과를 상기 캐시의 제2 행으로 시프트하는 단계;
    복수의 크로마 행 6-탭 FIR 필터들을 이용하여 상기 비디오 데이터의 크로마 채널의 x-성분에 대해 연산을 행하는 단계;
    복수의 크로마 열 6-탭 FIR 필터들을 이용하여 상기 크로마 채널의 y-성분에 대해 연산을 행하는 단계; 및
    복수의 루마 열 6-탭 FIR 필터들을 이용하여 상기 루마 채널의 y-성분에 대해 연산을 행하는 단계
    를 더 포함하는 비디오 데이터 처리 방법.
  8. 제5항에 있어서,
    상기 제1 인코딩 스킴은 MPEG-4와 실질적으로 호환적인 인코딩 스킴을 포함하고, 상기 제2 인코딩 스킴은 H.264와 실질적으로 호환적인 인코딩 스킴을 포함하는, 비디오 데이터 처리 방법.
  9. 비디오 데이터 처리 시스템으로서,
    비디오 데이터의 입력 프레임의 블록과 비디오 데이터의 기준 프레임의 블록을 이용하여 제1 인코딩 스킴에 따라 움직임 벡터들을 생성하기 위한 움직임 평가기;
    상기 움직임 평가기에 커플링되고, 상기 제1 인코딩 스킴과 상이한 제2 인코딩 스킴에 따라 상기 움직임 벡터들로부터 하프 펠 인터폴레이트된 픽셀들을 생성하기 위한 움직임 보상기; 및
    상기 움직임 보상기에 커플링되고, 상기 입력 프레임에 대한 비디오 데이터의 블록들을 상기 기준 프레임에 대한 비디오 데이터의 블록들과 인터리브해서 상기 비디오 데이터를 배열하기 위한 데이터 팩커(data packer)
    를 포함하는 비디오 데이터 처리 시스템.
  10. 제9항에 있어서,
    상기 움직임 벡터들은 2-탭 유한 임펄스 응답(FIR) 필터를 이용하여 생성되고, 상기 하프 펠 인터폴레이트된 픽셀들은 복수의 6-탭 FIR 필터들을 이용하여 생성되는 비디오 데이터 처리 시스템.
  11. 제9항에 있어서,
    상기 비디오 데이터의 루마 채널의 x-성분에 대해 연산을 행하는 복수의 루마 행 필터들;
    상기 복수의 루마 행 필터들에 커플링되는 캐시 - 상기 캐시가 인에이블되는 각각의 클록 사이클 동안 상기 복수의 루마 행 필터들로부터의 결과는 상기 캐시의 제1 행에 로딩되고 상기 제1 행에 이미 존재하는 결과는 상기 캐시의 제2 행으로 시프트됨 -;
    상기 비디오 데이터의 크로마 채널의 x-성분에 대해 연산을 행하는 복수의 크로마 행 필터들;
    상기 크로마 채널의 y-성분에 대해 연산을 행하는 복수의 크로마 열 필터들; 및
    상기 루마 채널의 y-성분에 대해 연산을 행하는 복수의 루마 열 필터들
    을 더 포함하고,
    상기 복수의 크로마 행 필터들 및 상기 복수의 크로마 열 필터들 모두는 상기 캐시의 상기 제1 행과 상기 제2 행 둘다에 커플링되고, 상기 복수의 루마 열 필터들중의 각각의 루마 열 필터는 상기 캐시의 각각의 행에 커플링되는, 비디오 데이터 처리 시스템.
  12. 제1항에 있어서,
    상기 제2 인코더는 상기 기준 프레임의 상기 블록과 상기 입력 프레임의 상기 블록의 상기 재구성된 제2 버전 둘다를 동시에 저장하기 위한 원형 버퍼를 포함하는 비디오 데이터 처리 시스템.
  13. 제1항에 있어서,
    상기 제2 인코더는 상기 입력 프레임에 대한 비디오 데이터의 블록들과 상기 기준 프레임에 대한 비디오 데이터의 블록들을 인터리브(interleave)해서 상기 비디오 데이터를 배열하기 위한 데이터 팩커(data packer)를 포함하는 비디오 데이터 처리 시스템.
  14. 제1항에 있어서,
    상기 제2 인코더는 인코딩 연산들을 실행하는 복수의 소프트웨어-기반 명령들을 실행하기 위한 디지털 신호 프로세서를 포함하고, 상기 인코딩 연산들은 상기 입력 프레임과 상기 기준 프레임 사이의 차를 포함하는 오차(residual)의 변환 및 양자화를 포함하고, 상기 인코딩 연산들은 상기 오차의 역양자화 및 역변환을 더 포함하는 비디오 데이터 처리 시스템.
  15. 제9항에 있어서,
    상기 움직임 보상기는 상기 기준 프레임의 상기 블록과 상기 입력 프레임의 상기 블록의 재구성된 버전 둘다를 동시에 저장하기 위한 원형 버퍼를 포함하는 비디오 데이터 처리 시스템.
  16. 제9항에 있어서,
    상기 데이터 팩커에 커플링되고, 인코딩 연산들을 실행하는 복수의 소프트웨어-기반 명령들을 실행하기 위한 디지털 신호 프로세서를 더 포함하고, 상기 인코딩 연산들은 상기 입력 프레임과 상기 기준 프레임 사이의 차를 포함하는 오차(residual)의 변환 및 양자화를 포함하고, 상기 인코딩 연산들은 상기 오차의 역양자화 및 역변환을 더 포함하는, 비디오 데이터 처리 시스템.
KR1020087019558A 2006-02-10 2007-02-09 비디오 데이터 처리 KR100995205B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US77244006P 2006-02-10 2006-02-10
US60/772,440 2006-02-10
US11/636,104 2006-12-08
US11/636,104 US8705630B2 (en) 2006-02-10 2006-12-08 Adapting one type of encoder to another type of encoder

Publications (2)

Publication Number Publication Date
KR20090003179A KR20090003179A (ko) 2009-01-09
KR100995205B1 true KR100995205B1 (ko) 2010-11-17

Family

ID=38368425

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087019558A KR100995205B1 (ko) 2006-02-10 2007-02-09 비디오 데이터 처리

Country Status (8)

Country Link
US (1) US8705630B2 (ko)
JP (1) JP4987884B2 (ko)
KR (1) KR100995205B1 (ko)
CN (1) CN101379832B (ko)
DE (1) DE112007000359B4 (ko)
GB (1) GB2447402B (ko)
TW (1) TWI473500B (ko)
WO (1) WO2007095079A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101031493B1 (ko) 2008-03-25 2011-04-29 숭실대학교산학협력단 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050111545A1 (en) 2003-11-25 2005-05-26 Ram Prabhakar Dynamic packet size control for MPEG-4 data partition mode
US8355782B2 (en) 2008-01-28 2013-01-15 St. Jude Medical Ab Implantable heart stimulator for measuring dyssynchrony using impedance
US8542732B1 (en) * 2008-12-23 2013-09-24 Elemental Technologies, Inc. Video encoder using GPU
KR101782661B1 (ko) * 2010-01-19 2017-10-23 톰슨 라이센싱 비디오 인코딩 및 디코딩을 위한 템플릿 매칭 예측의 복잡도를 감소시키는 방법 및 장치
WO2012092841A1 (en) 2011-01-03 2012-07-12 Mediatek Inc. Method of filter-unit based in-loop filtering
PL3367686T3 (pl) * 2011-06-24 2021-06-28 Ntt Docomo, Inc. Urządzenie i sposób predykcji z kompensacją ruchu
DE102011119177A1 (de) * 2011-11-23 2013-05-23 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Verfahren zum Erstellen eines ersten Parametersatzes
CN106162185B (zh) * 2012-01-20 2019-10-18 维洛媒体国际有限公司 色度量化参数扩展
US9503732B2 (en) * 2013-04-10 2016-11-22 Arris Enterprises, Inc. Re-sampling with phase offset adjustment for luma and chroma to select filters in scalable video coding
US9292899B2 (en) 2013-09-25 2016-03-22 Apple Inc. Reference frame data prefetching in block processing pipelines
US9224186B2 (en) 2013-09-27 2015-12-29 Apple Inc. Memory latency tolerance in block processing pipelines
CA2935303C (en) 2014-01-03 2023-04-11 Arris Enterprises Llc Conditionally parsed extension syntax for hevc extension processing
WO2015143090A1 (en) 2014-03-18 2015-09-24 Arris Enterprises, Inc. Scalable video coding using reference and scaled reference layer offsets
US9986251B2 (en) 2014-05-01 2018-05-29 Arris Enterprises Llc Reference layer and scaled reference layer offsets for scalable video coding
CA2950749C (en) 2014-05-30 2019-02-19 Arris Enterprises Llc Reference layer offset parameters for inter-layer prediction in scalable video coding
US10757437B2 (en) 2014-07-17 2020-08-25 Apple Inc. Motion estimation in block processing pipelines
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
CN104853212B (zh) * 2015-05-05 2018-02-16 福州瑞芯微电子股份有限公司 一种视频解码器缓存高效率处理的装置及其方法
CN105516547A (zh) * 2015-12-10 2016-04-20 中国科学技术大学 一种基于dsp的视频去雾优化方法
CN106998437B (zh) * 2017-03-31 2020-07-31 武汉斗鱼网络科技有限公司 一种重建视频图像的方法及装置
WO2020213756A1 (ko) * 2019-04-17 2020-10-22 엘지전자 주식회사 영상 보정 방법 및 장치
US11785068B2 (en) * 2020-12-31 2023-10-10 Synaptics Incorporated Artificial intelligence image frame processing systems and methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001016594A (ja) 1999-06-29 2001-01-19 Hitachi Ltd 動画像の動き補償方法
JP2004242309A (ja) 2003-02-03 2004-08-26 Samsung Electronics Co Ltd 飛越走査方式の動画符号化/復号化方法及びその装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2815510B2 (ja) 1992-07-15 1998-10-27 富士通株式会社 色差信号の動きベクトル計算回路
SG43051A1 (en) 1994-04-21 1997-10-17 British Telecomm A transcoder
JP3360942B2 (ja) 1994-06-20 2003-01-07 沖電気工業株式会社 動画像符号化装置
JPH0846971A (ja) * 1994-07-29 1996-02-16 Sharp Corp 動画像符号化装置
JP3263807B2 (ja) * 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
JP4034380B2 (ja) * 1996-10-31 2008-01-16 株式会社東芝 画像符号化/復号化方法及び装置
US6192154B1 (en) * 1998-01-26 2001-02-20 International Business Machines Corporation Two-pass encoding method of digital motion video sequences for constant-or variable bit rate
US6434196B1 (en) * 1998-04-03 2002-08-13 Sarnoff Corporation Method and apparatus for encoding video information
US6519005B2 (en) * 1999-04-30 2003-02-11 Koninklijke Philips Electronics N.V. Method of concurrent multiple-mode motion estimation for digital video
EP1404135B1 (en) * 2000-01-21 2016-12-14 Nokia Technologies Oy A motion estimation method and a system for a video coder
JP2003116104A (ja) * 2001-10-02 2003-04-18 Sony Corp 情報処理装置及び情報処理方法
US7167520B2 (en) * 2002-10-15 2007-01-23 Matsushita Electric Industrial Co., Ltd. Transcoder
US7092442B2 (en) * 2002-12-19 2006-08-15 Mitsubishi Electric Research Laboratories, Inc. System and method for adaptive field and frame video encoding using motion activity
US7551671B2 (en) * 2003-04-16 2009-06-23 General Dynamics Decision Systems, Inc. System and method for transmission of video signals using multiple channels
CN101616330B (zh) * 2003-07-16 2012-07-04 三星电子株式会社 用于色彩图像的视频编码/解码装置和方法
KR101196429B1 (ko) * 2004-03-12 2012-11-01 삼성전자주식회사 동영상 트랜스코딩 방법 및 그 장치, 이에 사용되는움직임 벡터 보간방법
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
US8705632B2 (en) * 2005-03-30 2014-04-22 Intel Corporation Decoder architecture systems, apparatus and methods
US8218949B2 (en) 2005-04-22 2012-07-10 Panasonic Corporation Video information recording device, video information recording method, and recording medium containing the video information recording program
WO2007070343A2 (en) * 2005-12-09 2007-06-21 Nvidia Corporation A hardware multi-standard video decoder device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001016594A (ja) 1999-06-29 2001-01-19 Hitachi Ltd 動画像の動き補償方法
JP2004242309A (ja) 2003-02-03 2004-08-26 Samsung Electronics Co Ltd 飛越走査方式の動画符号化/復号化方法及びその装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101031493B1 (ko) 2008-03-25 2011-04-29 숭실대학교산학협력단 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법

Also Published As

Publication number Publication date
CN101379832B (zh) 2012-09-05
CN101379832A (zh) 2009-03-04
KR20090003179A (ko) 2009-01-09
GB0813393D0 (en) 2008-08-27
TWI473500B (zh) 2015-02-11
US20070189390A1 (en) 2007-08-16
DE112007000359B4 (de) 2013-04-11
US8705630B2 (en) 2014-04-22
TW200746836A (en) 2007-12-16
GB2447402B (en) 2011-03-02
JP2009526485A (ja) 2009-07-16
WO2007095079A1 (en) 2007-08-23
GB2447402A (en) 2008-09-10
JP4987884B2 (ja) 2012-07-25
DE112007000359T5 (de) 2008-11-27

Similar Documents

Publication Publication Date Title
KR100995205B1 (ko) 비디오 데이터 처리
US8116379B2 (en) Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard
US8902966B2 (en) Video decoding device
US10469868B2 (en) Motion estimation and in-loop filtering method and device thereof
US8542744B2 (en) Methods and apparatus for providing a scalable deblocking filtering assist function within an array processor
US8036269B2 (en) Method for accessing memory in apparatus for processing moving pictures
JP2010050976A (ja) 組み込み機器において高解像度画像を提供するための方法及び装置
US8594443B2 (en) Method and apparatus for motion compensation supporting multicodec
US20090010326A1 (en) Method and apparatus for parallel video decoding
US20060133512A1 (en) Video decoder and associated methods of operation
KR20110037957A (ko) 잡음 제거를 위한 통합 시간 필터를 구비한 비디오 인코더
KR20040095742A (ko) 화상 복호 유닛과 그것을 이용한 화상 부호화 장치 및부호화 방법, 및 화상 복호 장치 및 복호 방법
US9300975B2 (en) Concurrent access shared buffer in a video encoder
US9918079B2 (en) Electronic device and motion compensation method
GB2554680A (en) Selecting encoding options
JP2009015637A (ja) 演算ユニット及び画像フィルタリング装置
US8588305B2 (en) Two-dimensional interpolation architecture for motion compensation in multiple video standards
KR101031493B1 (ko) 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법
EP1677542A2 (en) Method and system for video motion processing
US8284836B2 (en) Motion compensation method and apparatus to perform parallel processing on macroblocks in a video decoding system
Imen et al. Real time H264 HD intra coding process implementation on TMS320DM642 DSP
CN102215404A (zh) 嵌入式***中视频的解码方法和***
Kinsman et al. A VLSI architecture and the FPGA prototype for MPEG-2 audio/video decoding
Mo et al. Speed optimization of a MPEG-4 software decoder based on ARM family cores
KR20040003784A (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: 20131017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141023

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181112

Year of fee payment: 9