KR20120066681A - 비디오 코딩을 위한 효율적인 변환 기술들 - Google Patents

비디오 코딩을 위한 효율적인 변환 기술들 Download PDF

Info

Publication number
KR20120066681A
KR20120066681A KR1020127013944A KR20127013944A KR20120066681A KR 20120066681 A KR20120066681 A KR 20120066681A KR 1020127013944 A KR1020127013944 A KR 1020127013944A KR 20127013944 A KR20127013944 A KR 20127013944A KR 20120066681 A KR20120066681 A KR 20120066681A
Authority
KR
South Korea
Prior art keywords
transforms
video data
blocks
video
block
Prior art date
Application number
KR1020127013944A
Other languages
English (en)
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 KR20120066681A publication Critical patent/KR20120066681A/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
    • 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/567Motion estimation based on 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/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/19Methods 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 using optimisation based on Lagrange multipliers
    • 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/192Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 비디오 코딩에 사용될 수 있는 효율적인 변환 기술들을 개시한다. 특히, 비디오 데이터의 제1 블록의 변환과 연관되는 계산들의 중간 결과들은 비디오 데이터의 제2 블록의 변환에서 재사용된다. 기술들은 검색 공간의 비디오 블록들이 변환되는 모션 추정 프로세스 동안에 사용될 수 있으나, 본 발명은 반드시 이에 제한되는 것은 아니다. 파이프라이닝 기술들은 효율적인 변환 기술들을 가속화시키는데 사용될 수 있으며, 전치 메모리들은 효율적인 파이프라이닝을 용이하게 하기 위하여 구현될 수 있다.

Description

비디오 코딩을 위한 효율적인 변환 기술들{EFFICIENT TRANSFORMATION TECHNIQUES FOR VIDEO CODING}
본 명세서는 디지털 비디오 프로세싱에 관한 것이며, 특히, 비디오 데이터의 블록-기반 코딩과 관련된다.
비디오 능력들은 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템들, 무선 통신 디바이스들, 개인용 디지털 단말(PDA)들, 랩탑 컴퓨터들, 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 셀룰러 또는 위성 무선 전화들, 비디오 게임 콘솔(counsel)들, 핸드헬드 게임 디바이스들, 및 이와 유사한 종류의 다른 것들을 포함하는 다양한 디바이스들로 통합될 수 있다. 디지털 비디오 코딩은 완전한 모션(motion) 멀티미디어 시퀀스들을 생성, 변형, 송신, 저장, 레코딩 및 재생하는데 종래 아날로그 시스템들에 대한 현저한 향상들을 제공할 수 있다. 브로드캐스트 네트워크들은 무선 가입자 디바이스들에 대한 멀티미디어(오디오-비디오) 시퀀스들의 하나 이상의 채널들의 브로드캐스트를 용이하게 하기 위하여 비디오 코딩을 사용할 수 있다. 비디오 코딩은 또한 셀룰러 무선 전화들에 의한 비디오 회의와 같은 비디오 테레포니(VT: video telephony) 애플리케이션들을 지원하는데 사용된다.
디지털 비디오 시퀀스들을 코딩하기 위하여 다수의 상이한 코딩 표준들이 확립되었다. 예를 들어, MPEG(Moving Picture Experts Group)은 MPEG-I, MPEG-2 및 MPEG-4를 포함하는 다수의 표준들을 개발하였다. 다른 표준들은 ITU(International Telecommunication Union) H.263 표준 및 H.264 표준, 캘리포니아 쿠퍼티노의 Apple Computer에 의하여 개발된 QuickTime™ 기술, 워싱턴 레드몬드의 Microsoft Corporation에 의하여 개발된 Windows™을 위한 비디오, 워싱턴 시애틀의 RealNetworks, Inc로부터의 RealVideo™ 및 SuperMac, Inc에 의하여 개발된 Cinepak™을 포함한다. 추가로, 새로운 표준들이 계속해서 생겨나고 진화된다. ITU H.264 표준은 또한 MPEG-4, Part 10, Advanced 비디오 코딩 (AVC)에서 제시된다.
대부분의 비디오 코딩 기술들은 블록-기반 코딩을 이용하며, 이는 픽셀들의 블록들로 비디오 프레임들을 분할하고, 블록들을 비디오 시퀀스의 다른 프레임들의 블록들과 연관시킨다. 현재 블록과 다른 프레임의 예측 블록 사이의 차를 인코딩함으로써, 데이터 압축이 달성될 수 있다. "매크로블록"이라는 용어는 종종 (통상적으로 비디오 시퀀스의 이전 또는 후속 프레임의 서브세트인) 검색 공간과 비교되는 비디오 프레임의 별개의 블록들을 정의하는데 사용된다. 매크로블록들은 또한 파티션들 또는 서브-파티션들로 추가로 서브-분할될 수 있다. ITU H.264 표준은 16 × 16 매크로블록들, 16 × 8 파티션들, 8 × 16 파티션들, 8 × 8 파티션들, 8 × 4 서브-파티션들, 4 × 8 서브-파티션들 및 4 × 4 서브-파티션들을 지원한다. 다른 표준들은 상이한 크기의 블록들, 매크로블록들, 파티션들 및/또는 서브-파티션들을 지원할 수 있다.
비디오 프레임의 각각의 블록(매크로블록, 파티션 또는 서브-파티션)에 대하여, 인코더는 "예측 블록" 또는 "베스트 매치"로서 지칭되는 유사한 블록을 식별하기 위하여 하나 이상의 바로 앞의 선행 비디오 프레임들(및/또는 후속 프레임들)의 유사한 크기의 블록들을 비교한다. 다른 프레임들의 비디오 블록들과 현재 비디오 블록을 비교하는 프로세스는 일반적으로 모션 추정으로 지칭된다. 일단 "베스트 매치"가 코딩될 주어진 블록에 대하여 식별되면, 인코더는 현재 블록과 베스트 매치 사이에 차들을 인코딩할 수 있다. 현재 블록과 베스트 매치 사이에 차들을 인코딩하는 이러한 프로세스는 모션 보상으로서 지칭되는 프로세스를 포함한다. 모션 보상은 차 블록(잔여물로서 지칭되는)을 생성하는 단계를 포함하며, 이러한 단계는 인코딩될 현재 블록과 베스트 매치 사이에 차들을 나타내는 정보를 포함한다. 특히, 모션 보상은 일반적으로 모션 벡터를 사용하여 베스트 매치를 페치(fetch)하고 그 후 잔여물을 생성하기 위하여 입력 블록으로부터 베스트 매치를 차감하는 동작을 지칭한다. 엔트로피 코딩과 같은 추가적인 코딩 단계들이 비트스트림을 추가로 압축하기 위하여 잔여물에 대하여 수행될 수 있다.
본 발명은 비디오 코딩에 사용될 수 있는 효율적인 변환 기술들을 개시한다. 특히, 비디오 데이터의 제1 블록의 변환과 연관되는 계산들의 중간 결과들은 비디오 데이터의 제2 블록의 변환과 연관되는 계산들의 중간 결과들을 계산할 때 재사용된다. 효율적인 변환 기술들은 검색 공간의 비디오 블록들이 변환되는 모션 추정 프로세스 동안에 사용될 수 있으나, 본 발명이 이에 제한되어야 하는 것은 아니다. 본 발명에 따라, 검색 공간은 상이한 4 × 4 픽셀 블록들로 분할되고, 상이한 4 × 4 픽셀 블록들은 서로 중첩될 수 있다.
1차원 변환들은 중간 결과들을 생성하기 위하여 4 × 4 픽셀 블록들의 행들에 대하여 수행될 수 있으며, 그 후, 1차원 변환들은 중간 결과들의 열에 대하여 수행될 수 있다. 대안적으로, 1차원 변환들은 먼저 열들에 대하여 수행될 수 있으며, 그 후, 중간 결과들의 행에 대하여 수행될 수 있다. 임의의 경우에, 검색 공간의 상이한 4 × 4 픽셀 블록들 사이에 중첩이 주어지면, 중간 결과들 중 적어도 일부가 동일한 계산들을 수행하지 않고 재사용될(예를 들어, 추후의 변환과 공유될) 수 있다. 효율적인 아키텍쳐가 또한 본 명세서에 개시된 기술의 구현을 위해 개시된다.
일 실시예에서, 본 발명은 비디오 데이터의 블록들에 대하여 변환들을 수행하는 단계를 포함하는 방법을 제공하며, 변환들을 수행하는 단계는 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하는 단계를 포함한다.
다른 실시예에서, 본 발명은 비디오 데이터의 블록들에 대하여 변환들을 수행하는 비디오 코더를 포함하는 디바이스를 제공한다. 변환들을 수행함에 있어, 비디오 코더는 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용한다.
다른 실시예에서, 본 발명은 비디오 데이터의 블록들에 대하여 변환들을 수행하기 위한 수단 및 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하기 위한 수단을 포함하는 디바이스를 제공한다.
본 명세서에 개시된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합물로 구현될 수 있다. 소프트웨어로 구현된다면, 소프트웨어는 디지털 신호 프로세서(DSP) 또는 다른 타입의 프로세서 또는 디바이스에서 실행될 수 있다. 상기 기술들을 실행하는 소프트웨어는 처음에 컴퓨터 판독가능 매체에 저장되고, 본 명세서에 개시된 기술들을 사용하는 비디오 코딩에 대하여 허용하기 위하여 프로세서 또는 다른 디바이스로 로딩되고 실행될 수 있다.
따라서, 본 발명은 비디오 코딩 디바이스에서 실행될 때, 디바이스로 하여금 비디오 데이터의 블록들에 대한 변환들을 수행하게 하는 명령들을 포함하는 컴퓨터-판독가능 매체를 고려하며, 변환들의 수행에 있어, 상기 명령들은 디바이스로 하여금 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하게 한다.
또한, 본 발명은 비디오 데이터의 블록들에 대한 변환들을 수행하도록 구성되는 회로를 고려하며, 변환들의 수행에 있어, 회로는 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용한다.
또한, 하기에서 더욱 상세히 설명되는 바와 같이, 파이프라이닝 기술들은 효율적인 변환 기술들을 가속화하는데 사용될 수 있으며, 전치 메모리들이 효율적인 파이프라이닝을 용이하게 하기 위하여 구현될 수 있다. 다양한 실시예들의 추가적인 세목들은 하기의 설명 및 첨부 도면들에 개시된다. 다른 특징들, 목적들 및 장점들은 상세한 설명 및 도면들과 청구항들로부터 명백해질 것이다.
도 1은 본 발명의 기술들을 구현할 수 있는 비디오 코딩 디바이스의 예시적인 비디오 코더를 개시하는 블록도이다.
도 2 및 3은 변환들을 포함하는 모션 추정 프로세스의 일부를 구현할 수 있는 컴포넌트들을 개시하는 블록도들이다.
도 4는 1차원 변환들을 수행하기 위한 버터플라이 구현예를 개시하는 도면이다.
도 5는 본 명세서에 개시된 바와 같은 변환들을 위한 계산적 공유 기술들을 사용할 수 있는 아키텍쳐를 개시하는 블록도이다.
도 6은 본 발명에 따라 달성될 수 있는 계산적 절약들을 개시하는 그래프이다.
도 7은 동시에 검색될 수 있는 다수의 검색 포인트들의 함수로서 다수의 변환 엔진들을 개시하는 그래프이다.
도 8은 예시적인 수직 엔진을 도시하는 블록도이다.
도 9는 검색 공간의 제1 4 × 4 픽셀 블록을 변환하는데 사용될 수 있는 예시적인 수평 엔진을 개시하는 블록도이다.
도 10은 도 8에 도시된 수평 엔진에 의하여 수행된 변환 후에 검색 공간의 나머지 4 × 4 픽셀 블록을 변환하는데 사용될 수 있는 예시적인 수평 엔진을 개시하는 블록도이다.
도 11은 수직 엔진으로의 입력 블록들을 개시하는, 검색 공간 내에 블록들의 개념도이다.
도 12는 수평 엔진과 수직 엔진 사이의 데이터 흐름을 개시하는 도면이다.
도 13은 수평 엔진과 수직 엔진 사이에 있을 수 있는 전치 레지스터들에서 데이터 흐름 및 타이밍을 도시하는 블록도이다.
본 발명은 비디오 코딩에서 유용할 수 있는 효율적인 변환 기술들을 개시한다. 하기에 더욱 상세히 설명되는 바와 같이, 비디오 데이터의 제1 블록의 변환과 연관되는 계산들의 중간 결과들은 비디오 데이터의 제2 블록의 변환에서 재사용된다. 기술들은 검색 공간의 비디오 블록들이 변환되는 모션 추정 프로세스 동안에 수행되는 순방향 이산 코사인 변환들 또는 정수 변환들에 대하여 특히 유용할 수 있다. 그러나, 기술들은 비디오 코딩과 연관되는 다른 변환 콘텍스트들에서 사용될 수 있다. 특히, 기술들은 임의의 타입의 선형 변환들, 정수 변환들 및 가능한 다른 변한 콘텍스트들에 대하여 유용할 수 있다.
본 발명에 따라, (임의의 크기의) 검색 공간은 4 × 4 픽셀 블록들과 같은 상이한 비디오 블록들로 분할될 수 있다. 검색 공간 내에 정의된 상이한 4 × 4 픽셀 블록들은 서로 중첩될 수 있다. 일 실시예로서, 부분적인 해상도(fractional resolution)에 대한 보간법(interpolation)이 5 × 5 픽셀 검색 공간 내에 훨씬 더 많은 4 × 4 픽셀 블록들을 정의하기 위하여 사용될 수 있긴 하지만, 5 × 5 픽셀 검색 공간은 4개의 상이한 4 × 4 픽셀 블록들을 정의할 수 있다. 검색 공간은 픽셀 도메인으로부터 공간-주파수 도메인으로 4 × 4 픽셀 블록들을 변환할 때 사용될 수 있다. 한 도메인에서 다른 도메인으로의 이러한 변환 동안에, 통상적으로 2개의 1차원 변환 패스(pass)들이 4 × 4 픽셀 블록들에 대하여 수행된다. 제1 패스는 (중간 결과들로서 지칭되는) 수평 공간 주파수 컴포넌트들을 생성하기 위하여 열들에 대하여 수행되고, 제2 패스는 수직 공간 주파수 컴포넌트들을 생성하기 위하여 하나 이상의 행들에 대하여 수행된다. 본 기술분야의 당업자는 쉽게 제1 패스가 행들에 대하여 수행될 수 있고, 제2 패스가 열에 대하여 수행될 수 있다는 것을 인지할 것이다.
1차원 변환들은 중간 결과들을 생성하기 위하여 4 × 4 픽셀 블록들의 열들에 대하여 수행될 수 있고, 그 후 1차원 변환들은 중간 결과들의 행에 대하여 수행될 수 있다. 검색 공간에 상이한 4 × 4 픽셀 블록들 사이에 중첩을 고려해볼 때, 중간 결과들 중 적어도 일부는 동일한 계산들을 수행하지 않고 재사용될 수 있다. 이러한 방식으로, 계산들은 효율성을 증진시키기 위하여 방지될 수 있다. 또한 본 명세서에 개시된 기술들의 효율적인 구현을 달성할 수 있는 예시적인 하드웨어 아키텍쳐들이 개시된다. 이러한 경우에, 파이프라이닝 기술들은 비디오 데이터의 블록들의 세트의 효율적인 변환 기술들을 가속화시키는데 사용될 수 있으며, 전치 메모리들은 효율적인 파이프라이닝을 용이하게 하기 위하여 구현될 수 있다.
도 1은 본 발명의 기술들을 구현할 수 있는 비디오 코딩 디바이스의 예시적인 비디오 코드(10)를 개시하는 블록도이다. 특히, 다양한 디바이스들은 본 발명의 원리로부터 이익을 얻을 수 있는 비디오 코더를 구현할 수 있다. 실시예들로서, 비디오 코더(10)는 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템, 무선 통신 디바이스(예를 들어, 핸드셋), 개인용 디지털 단말(PDA), 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 셀룰러 또는 위성 무선 전화, 비디오 게임 카운슬, 핸드헬드 게임 디바이스 및 이와 유사한 종류의 다른 것들에 사용될 수 있다. 브로드캐스트 네트워크들은 무선 가입자 디바이스들에 멀티미디어(오디오-비디오) 시퀀스들의 하나 이상의 채널들의 브로드캐스트를 용이하게 하기 위하여 비디오 코딩을 사용할 수 있다. 비디오 코딩은 또한 다양한 다른 애플리케이션들뿐 아니라 셀룰러 무선 전화들에 의한 비디오 회의와 같은 비디오 테레포니(VT) 애플리케이션들을 지원하는데 사용될 수 있다.
도 1에 도시되는 바와 같이, 비디오 코더(10)는 입력 매크로블록(MB)들을 수신한다. "매크로블록"이라는 용어는 검색 공간과 비교되고 코딩되는 비디오 프레임의 별개의 블록들을 정의하는데 사용된다. 매크로블록들은 또한 파티션들 또는 서브-파티션들로 추가로 서브분할될 수 있다. ITU H.264 표준은 16 × 16 매크로블록들, 16 × 8 파티션들, 8 × 16 파티션들, 8 × 8 파티션들, 8 × 4 서브파티션들, 4 × 8 서브-파티션들 및 4 × 4 서브-파티션들을 지원한다. 다른 표준들은 상이한 크기의 블록들, 매크로블록들, 파티션들 및/또는 서브-파티션들을 지원할 수 있다. 임의의 경우에, "매크로블록"이라는 용어는 본 발명의 양상들을 설명하기 위하여 사용될 수 있긴 하나, 본 명세서에 개시된 기술들은 매크로블록들, 파티션들, 서브-파티션들 또는 다른 비디오 블록 크기들을 포함하는 비디오 데이터의 임의의 크기의 블록을 코딩하는데 유용할 수 있다.
도 1에 도시되는 바와 같이, 각각의 입력 MB에 대하여, (도 1에서 라벨링된) 예측 블록이 생성된다. 예측 블록은 때때로 베스트 매치로서 지칭된다. 예측 블록은 잔여물(도 1에서 "Res"로 라벨링됨)을 생성하기 위해 유닛(12)을 통해 입력 MB로부터 차감된다. 잔여물은 입력 MB를 코딩하는데 사용되는 예측 블록 및 입력 MB 사이에 차들을 표시하는 데이터의 블록을 포함한다. 예측 블록은 모션 벡터(또는 인트라(intra) 코딩에 대한 인트라 벡터)에 의하여 식별될 수 있다. 인트라 코딩에 대하여, 예측 블록은 입력 MB와 동일한 프레임 내에 위치된다. 인터(inter) 코딩에 대하여, 예측 블록은 입력 MB와 상이한 프레임 내에 위치된다. 모션 벡터(또는 인트라 코딩에 대한 인트라 벡터)는 코딩에 사용되는 예측 블록을 식별한다. 인터 코딩은 예측적(P)일 수 있는데, 예측적이라는 것은 예측 블록이 이전 프레임에 기초하거나 양방향성(B)임을 의미하고, 양방향성이라는 것은 예측 블록이 비디오 시퀀스의 이전 또는 후속 프레임에 기초함을 의미한다.
잔여물(Res) 생성시, 변환 및 양자화가 잔여물에 대하여 수행된다. 변환 및 양자화 유닛들(14 및 16)은 각각 변환 및 양자화를 수행한다. 엔트로피 코딩은 또한 출력 비트스트림을 생성하기 위하여 수행될 수 있다. 엔트로피 코딩 유닛(18)은 엔트로피 코딩을 수행하며, 이는 추가적 압축을 달성할 수 있다. 엔트로피 코딩은 비트들의 세트들로의 코드들의 할당 및 확률들과 코드 길이들과의 매칭을 포함할 수 있다. 다양한 타입의 엔트로피 코딩이 공지되고, 비디오 코딩에 공통적이다.
비디오 코더(10)의 예측 루프에서, 역 양자화 유닛(22) 및 역변환 유닛(24)은 본질적으로 유닛들(12 및 14)에 의하여 수행되는 변환 및 양자화를 반전시키기(inverse) 위하여 잔여물에 대하여 역 양자화 및 역변환을 수행한다. 예측 블록은 가산 유닛(26)에 의하여 재구성된 잔여물에 다시 가산된다. 본질적으로 예측 루프에서 입력 MB가 재생성된다. 재구성된 MB의 에지들은 디블록킹 유닛(28)에 의하여 필터링되고 메모리(30)에 저장될 수 있다.
원칙적으로, 양자화는 변환된 신호의 동적인 범위를 감소시키는 단계를 수반한다. 동적 범위의 감소는 엔트로피 코딩에 의하여 생성되는 비트들의 수(레이트)에 영향을 미친다. 이것은 또한 잔여물에서 손실을 도입하며, 이는 원래 MB 및 재구성된 MB가 약간 상이하도록 할 수 있다. 이러한 차들은 보통 양자화 에러 또는 왜곡으로서 지칭된다. 양자화의 강도는 양자화 파라미터들에 의하여 결정된다. 더 큰 양자화 파라미터들은 더 높은 왜곡을 야기하나, 코딩 레이트를 더 낮출 수 있다.
예측 루프는 인트라 예측 루프 또는 인터 예측 루프일 수 있다. MPEG-4 및 ITU H.263은 통상적으로 단지 인터 예측을 지원한다. ITU H.263은 인트라 예측 및 인터 예측 모두를 지원한다. 도 1의 비디오 코더(10)에서, 제어 신호(32)는 루프가 인트라 예측적인지 또는 인터 예측적인지 여부를 선택할 수 있다. 그러나, 본 발명의 기술들은 인트라 코딩 또는 인터 코딩만을 지원하는 시스템들에서 또한 작용할 수 있다.
인트라 예측에서, 유닛(34)은 공간 추정 및 공간 보상을 수행한다. 이러한 경우에, 유닛(23)은 인트라 예측기 블록을 생성하기 위하여 동일한 비디오 프레임 내에 이웃 매크로블록들과 재구성된 MB를 비교한다. 인트라 예측기 블록은 본질적으로 재구성된 MB에 대한 베스트 매치이며 이는 잔여물에 우수한 보상을 초래할 것이다. 인트라 예측은 공간 리던던시(redundancy)를 감소시키도록 도울 수 있다.
인터 예측에서, 유닛(36)은 모션 추정 및 모션 보상을 수행한다. 모션 추정은 인터 예측기를 생성하기 위하여 이전 또는 미래의 프레임들의 블록들과 재구성된 MB를 비교한다. 인터 예측기는 재구성된 MB에 대한 베스트 매치이나, 인트라 예측기와 상이하게, 인터 예측기는 상이한 비디오 프레임 또는 프레임들로부터 나온다. 인터 예측은 임시적 리던던시를 감소시키는 것을 도울 수 있다. 통상적으로, 임시적 리던던시의 이용은 공간 리던던시의 이용보다 비디오 시퀀스의 압축에 더 크게 영향을 미칠 수 있다. 즉, MB들의 인터 코딩은 보통 인트라 코딩보다 더 우수한 압축을 달성한다.
본 발명의 기술들은 일반적으로 순방향 이산 코사인 변환들과 같은 변환들과 관련된다. 본 발명이 이에 제한되는 것은 아니지만, 기술들은 모션 추정 프로세스 동안에 구현될 수 있다. 설명을 목적으로, 본 발명은 모션 추정 동안에 수행되는 것으로 기술들을 설명할 것이지만, 이러한 기술들 또는 유사한 기술들은 또한 변환들이 수행되는 다른 콘텍스트들에서 사용될 수 있다.
모션 추정은 비디오 코더에 의하여 수행될 수 있는 계산적으로 집중적인 프로세스이다. 많은 개수의 계산들은 모션 추정에서 고려될 수 있는 다수의 잠재적 예측기들로 인한 것일 수 있다. 실제로, 모션 추정은 보통 하나 이상의 이전 프레임들(또는 후속 프레임들)의 서브세트를 포함하는 검색 공간의 인터 예측기를 검색하는 단계를 수반한다. 검색 공간으로부터의 후보들은 비용 함수 또는 메트릭에 기반하여 실험될 수 있는데, 이는 대개 SAD(sum of absolute difference), SSD(sum of squared difference), SATD(sum of absolute transformed difference), 또는 SSTD(sum of squared transformed difference)와 같은 차 계산들을 수행함으로써 정의될 수 있다. 일단 메트릭이 검색 공간의 모든 후보들에 대하여 계산되면, 메트릭을 최소화하는 후보는 인터 예측기로서 선택될 수 있다. 따라서, 모션 추정에 영향을 미치는 주요 요인들은 검색 공간의 크기, 검색 방법, 및 다양한 비용 함수들일 수 있다. 비용 함수들은 본질적으로 현재 프레임의 최초 블록과 검색 영역의 후보 블록 사이에 리던던시를 정량화시킨다. 리던던시는 정확한 레이트 및 왜곡의 면에서 정량화될 수 있다.
도 2는 변환-기반 메트릭 프레임웍을 도시한다. 도 2에 도시된 블록들은 (도 1에 도시된 유닛(36)과 같은) 모션 추정기에 의하여 수행되는 함수들을 포함할 수 있다. 본 발명의 기술들은 임의의 특정 비트 길이들로 제한되지는 않으나, 예시적인 비트 길이들이 도 2에 개시된다. 다시, 모션 추정은 인코딩될 블록에 베스트 매칭되는 검색 공간 내에 하나의 블록을 발견하기 위하여 검색 공간 내에 다수의 후보들에 대하여 인코딩될 블록을 비교하는 단계를 수반한다. 본 발명에 따라, 베스트 매치는 레이트 및 왜곡 방식에 대해 정의될 수 있다.
모션 추정을 달성하기 위해, 잔여 에너지는 주어진 검색 공간 블록과 인코딩될 블록 사이에서 분석된다. 각각의 나머지 후보는 개별적인 검색 공간 블록의 픽셀들로부터 인코딩될 블록의 대응하는 픽셀들을 차감하는 프로세스를 통해 획득된다. 이것은 차(Diff) 모듈(42)이 예컨대 SAD, SSD, SATD 또는 SSTD 기술들을 통해 도 2에서 달성하는 것이다. 나머지 블록은 그 후 순방향 변환 엔진(FTE)(44)을 사용하여 주파수 도메인으로 변환되며, 이는 순방향 이산 코사인 변환들을 수행할 수 있다. 변환된 나머지 블록은 그 후 자신의 레이트 및 왜곡 특성들을 분석할 수 있다. 특히, 레이트 왜곡 추정(RDE) 모듈(46)은 본질적으로 주어진 양자화 파라미터(QP)에서 이러한 주어진 검색 공간 블록에 대하여 발생할 레이트(R) 및 왜곡(D)을 추정한다. RDE 모듈(46)은 그 후 단일 비용 메트릭으로 라그랑지안(Lagrangian) 원리들에 기반하여 R과 D를 결합하며(=D+λR), 이는 메트릭이 적어도 부분적으로 R 및 D에 좌우되는 한, 레이트-왜곡 메트릭으로서 지칭될 수 있다. 모든 후보 검색 공간 블록들에 대한 비용들은 비교될 수 있으며, 최소 비용의 어느 결과든 상이한 코딩에 대하여 선택된다.
상기 계산된 비용 메트릭은 코딩되는 블록 및 4 × 4 픽셀들의 크기인 검색 공간 블록들에 대응한다는 것을 유념해야 한다. 4 × 4 픽셀들보다 큰 블록 크기들에 대하여, 다수의 4 × 4 픽셀 블록들은 더 큰 블록을 포괄하는데(span) 사용될 수 있다. 이러한 경우에, 더 큰 블록에 대한 비용은 더 큰 블록을 포괄하는 모든 4 × 4 단위 블록들에 대한 비용 메트릭들을 누적함으로써 계산될 수 있다. 기술들은 다른 크기의 블록들에 적용될 수 있으나, 하기의 설명은 4 × 4 픽셀들의 블록 크기에 집중한다.
순방향 변환 엔진(FTE)(44)은 일반적으로 임의의 변환-기반 메트릭 계산의 근본적 모듈이다. 변환의 선형적 특성으로 인해, 차 모듈(42) 및 FTE(44)의 스테이지들은 스위칭될 수 있다. 본 발명에 따라, 차 모듈(42) 및 FTE(44)의 순서의 스위칭은 변환들 동안에 계산적 절약들을 허용할 수 있다. 개시된 블록들의 입력 및 출력의 표기법은 입력의 (열)×(행)×(대표 값에 사용되는 비트들의 수)이다.
도 3은 도 2의 차 모듈(42) 및 FTE(44)의 순서가 스위칭되는 도 2에 대한 대안을 도시한다. 도 3의 컴포넌트들은 모션 추정기 유닛의 일부를 형성한다. 다른 비트 길이들이 사용될 수 있기는 하지만, 비트 길이들은 예시를 목적으로 개시된다. 도 3에서 2개의 FTE들(52A 및 52B)은 예를 들어, 정수 변환들 또는 순방향 이산 코사인 변환들을 통해 인코딩될 블록("인코딩 블록") 및 고려되는 검색 공간 블록을 변환한다. 이러한 경우, 차 계산들은 변환을 이후에 차 유닛(54)에 의하여 수행된다. RDE 모듈(56)은 그 후 주어진 양자화 파라미터(QP)에서 이러한 주어진 검색 공간 블록에 대하여 발생할 레이트(R) 및 왜곡(D)을 추정한다. RDE 모듈(56)은 라그랑지안 원리에 기초하여 R 및 D를 단일 비용으로 결합할 수 있다(=D+λR). 모든 후보 검색 공간 블록들에 대한 비용들은 그 후 모션 추정 유닛(예를 들어, 도 1의 유닛(36)에서 비교될 수 있으며, 최소 비용의 어느 후보 결과든 코딩을 위해 선택될 수 있다.
모션 추정의 기본적인 문제는 검색 공간(s)으로부터 인코딩될 블록(인코딩 블록(e))에 대한 "베스트 매치"를 발견하는 것이다. 인코딩 블록(e) 및 검색 공간(s)은 다음과 같이 정의될 수 있다.
Figure pat00001
(1)
보여지는 바와 같이, e는 s의 4개 검색 포인트들에 매칭될 수 있으며, 이는 다음과 같이 묘사될 수 있다:
Figure pat00002
(2)
여기서
Figure pat00003
(3)
Figure pat00004
(4)
Figure pat00005
(5)
Figure pat00006
(6)
(검색) 포인트, 예를 들어, s(0,0), s(0,l), s(l,0) 또는 s(l,l)은 동일한 수평 및 수직 디멘젼(dimension)들의 블록으로서 도시된다. s(0,0)은 블록 00으로서 지칭될 수 있으며, s(1,1)은 블록 11로서 지칭될 수 있다. 검색 포인트는 동일하지 않은 수평 및 수직 디멘젼들의 블록을 또한 도시할 수 있다. 도 11은 이러한 실시예와 부합하는 예증적인 목적으로 도시된 몇몇 정의된 검색 포인트들 및 블록들을 갖는 8 × 8 검색 영역을 도시한다. s의 e에 대한 베스트 매치를 발견하기 위하여, 나머지 블록들 r(x, y)는 다음과 같이 계산될 수 있다:
r(x,y) = e - s(x,y) x,y ∈ 0,l (7)
나머지 블록 r(x, y)은 그 후 다음의 변환 매트릭스를 통해 공간 주파수 도메인으로 변환된다:
변환 매트릭스,
Figure pat00007
Figure pat00008
v∈0,1,2,3 (8)
Figure pat00009
h∈0,1,2,3 (9)
식 8에서, 변수 v는 수직 열들을 나타내고, 식 9에서, 변수 h는 수평 행들을 나타낸다. 변환 매트릭스는 정수들로 구성될 수 있으며, 몇몇 콘텍스트들에서 이것은 정수 변환으로서 공지되고, 다른 콘텍스트들에서 이것은 이산 코사인 변환으로서 지칭된다. 이산 코사인 변환(DCT)들은 정수 변환들 또는 "실수" 변환들 중 하나일 수 있다. 본 기술분야의 당업자는 변환 매트릭스가 정수들 또는 실수들에 의하여 형성될 수 있음을 인지할 것이다. 4-포인트 1차원(1-D) 변환은 비디오 블록의 공간 주파수 도메인 컴포넌트들을 생성하기 위하여 이용될 수 있음을 유념할 수 있다. 4-포인트 1-D 변환은 먼저 제1 패스 중간 결과들을 생성하기 위하여 모든 열들에 적용될 수 있으며, 4-포인트 1-D 변환은 제2 패스에서 중간 결과들의 모든 행들에 적용될 수 있다. 1-D 변환의 "버터플라이 구현예(butterfly implementation)"가 도 4에 도시되며, 이는 상이한 출력들을 생성하기 위하여 상이한 방식들로 입력들을 결합하는데 가산기들의 세트를 사용한다. 억지(brute force) 방법은 R(0,0), R(0,l), R(l,0) 또는 R(1,1)의 계산을 위해 8개 개별적인 1-D 변환들을 사용할 것이다. 억지 방법에서, 각각의 검색 포인트는 독립적으로 처리되고, 중간 결과들, R'(0,0), R'(0,1), R'(l,0), R'(l,l)의 재사용하지 않는다. 고해상도 텔레비전(HDTV)에 대하여, 하나의 수직 및 하나의 수평 엔진만이 전체 프레임을 검색하는데 사용된다면, 처리량은 비디오 프레임들의 실시간 표시를 용이하게 하기 위하여 너무 느릴 수 있다. 따라서, HDTV 또는 다른 애플리케이션들에 대하여, 검색의 속도를 높이기 위해, 하기에 더욱 상세히 개시되는 바와 같이 다수의 수직 및 수평 엔진들이 동시에 사용될 수 있다.
도 4에 도시되는 바와 같이, 하나의 1-D 4개 입력 변환은 다수의 스테이지들을 갖는 것으로 보여질 수 있다. 변수들 x0, x1, x2 및 x3은 변환에 대한 입력들을 나타내고, y0, y1, y2 및 y3은 변환의 4개 변환된 출력들을 나타낸다. 값들 "a" 및 "c"는 곱셈 상수들이다. 따라서, 상기 "c"를 이용하는 화살표에서 이것은 화살표의 출력이 화살표가 값 "c"와 입력 값(화살표의 왼쪽 측면)을 곱셈한 결과임을 의미한다. 값 "p"는 단어 길이를 나타내는데, 즉, 다양한 스테이지들로 입력되는 비트들의 수를 나타낸다.
도 3에 도시되는 바와 같이 변형된 프레임웍(framework)이 사용된다면, 변환들의 중간 결과들은 재사용될 수 있다. 특히, 2차원 변환된 R(x,y)는 식들 (7), (8) & (9)와 대조적으로 아래와 같이 획득될 수 있다.
R(x,y) = E - S(x,y) x,y ∈ 0,l (10)
여기서
Figure pat00010
(11)
Figure pat00011
(12)
Figure pat00012
(13)
Figure pat00013
(14)
따라서, 변환은 r(x,y)의 변환으로부터 s(x, y)의 변환으로 변화될 수 있다. 이것은 s(0,0)(공식 3) 및 s(0,1)(공식 4)의 열 중첩이 이용되도록 허용하고, s(1,0)(공식 5) 및 s(1,1)(공식 6)의 열 중첩이 이용되도록 허용한다. S'(0,0)의 제1 패스 중간 결과들(즉, 열들과 연관되는 결과들)은 S'(0,1)의 제1 패스 중간 결과들(즉, 열들과 연관되는 결과들)의 중복 계산들을 방지하기 위하여 재사용될 수 있다. 유사하게, S'(1,0)의 제1 패스 중간 결과들(즉, 열들과 연관되는 결과들)은 S'(1,1)의 제1 패스 중간 결과들(즉, 열들과 연관되는 결과들)의 중복 계산들을 방지하는데 재사용될 수 있다. 중간 결과들의 이러한 재사용(또한 공유로 불림)은 하기에서 상세히 설명된다.
재사용(예를 들어, 공유) 개념을 설명하기 위하여, 일 실시예로서, 2차원 변환된 s(0,0)가 다음과 같이 계산될 수 있음을 고려하라:
Figure pat00014
(15)
Figure pat00015
(16)
추가로, s(0,1)은 다음과 같이 계산될 수 있다:
Figure pat00016
(17)
Figure pat00017
(18)
공식들 (3) & (4)로부터 다음을 유념하라:
Figure pat00018
(19)
따라서, 다음과 같은 결과가 나온다.
Figure pat00019
(20)
이것은 n ∈ 1,2,3에 대하여 S'(0,O)와 연관되는 제1 패스 중간 결과들이 S'(0,1)와 연관되는 제1 패스 중간 결과들을 계산하는데 재사용될 수 있음을 의미한다. 재사용은 S'(0,1)의 계산에 대하여 다르게 요구되는 8개의 1-D 열 변환들의 3개 출력들을 제거할 수 있음을 유념해야 한다. 따라서, 1-D 변환들의 37.5 퍼센트 이하의 절약들이 제1 패스 동안에 달성될 수 있다. 비디오 블록들이 또한 s(l,0)의 행들과 s(0,0)의 행들을 중첩함으로써 프로세싱될 수 있으며, 이 경우 제1 패스로부터 초래되는 열들에 대한 1-D 열 변환들의 제2 패스 이전에, 1-D 행 변환들이 제1 패스항의 행들에 대하여 적용될 수 있음을 유념해야 한다. 다시 말해, 본 발명의 기술들은 수평 변환들 및 수직 변환들의 순서와 무관하게 적용될 수 있다.
일반적으로, N × M 검색 공간의 4 × 4 블록의 베스트 매치를 검색하기 위하여, 전체 (N-3) × (M-3) 검색 포인트들이 존재한다. N은 수평 방향의 전체 픽셀 카운트를 나타내고, M은 수직 방향의 전체 픽셀 카운트를 나타낸다. 실시간 비디오 코딩을 위해 시간상으로 종료될 수 있는 베스트 매치 업무들의 검색을 보장하기 위하여, 다수의 ID 엔진들은 동시에 설계될 수 있고 구동할 수 있다. 수평 엔진들의 "j+1" 유닛들(0 ≤ j ≤ N - 3)이 검색을 가속화하기 위하여 동시에 사용되는 것으로 가정하고, 수직 변환된 데이터가 효율적으로 공유된다면, 수직 엔진들의 단지 "k+1" 유닛들만이 필요하다. 여기서, k = (j+3)/4의 정수이다. 비디오 코딩 아키텍쳐의 설계에서, 전력 소모 및 실리콘 영역은 변환 엔진들의 성능에 대하여 중요한 균형 요인들이다.
도 5는 본 명세서에 개시된 파이프라이닝 기술들뿐 아니라 변환들에 대한 계산 재사용 기술들을 사용할 수 있는 아키텍쳐를 개시하는 블록도이다. 도 5에 개시된 아키텍쳐 실시예는 FTE(52B)를 실현하는데 사용될 수 있다. 여기서, 4개 수평 엔진들이 사용되고(j=3), 따라서, 이러한 설계 아키텍쳐에서 공유하는 효율적인 데이터를 갖기 위해, 2개 수직 엔진들이 사용된다(k=2). 도 5에 도시되는 바와 같이, FTE(60)는 랜덤 액세스 메모리(RAM)(62), 2개 수직 엔진들(VE(O)(64A) 및 VE(1)(64B)), 2개 전치 메모리들(TM(65A) 및 TM(65B)), 및 4개 수평 엔진들(HE(O)(66A), HE(1)(66B), HE(2)(66C) 및 HE(3)(66D))을 포함한다.
FTE(60)는 수직 방향 및 수평 방향 모두에서 4 × 4 순방향 변환을 구현할 수 있다. 통상적으로, 이것은 수직 변환들 또는 수평 변환들 중 어느 것이 먼저 수행되는지 여부를 상관하지 않는다. 다시 말해, 변환들(수직 및 수평)의 시퀀스는 다른 구현예들에서 스위칭될 수 있다. 따라서, 다른 구현예들에서, 수평 변환들은 수직 변환들 이전에 수행될 수 있다. 도 5에서, 수직 변환은 수평 변환을 수반하는 제1 변한 동작이다.
도 5에 도시되는 바와 같이, 아키텍쳐는 4개 수평 엔진들(66A- 66D) 및 2개 수직 엔진들(64A 및 64B)을 사용한다. RAM(62)은 수직 엔진들(64A 및 64B)에 공급되는 검색 공간 픽셀들을 포함할 수 있다. 수직 엔진들(64A 및 64B)은 전치 메모리들(65A 및 65B)에 접속되고, 전치 메모리들(65A 및 65B)은 수평 엔진들(66A- 66D)에 데이터를 공급한다. 수평 엔진들(66A- 66D)은 I-D 수축 어레이의 형태로 구성될 수 있다. 하기에 더욱 상세히 개시되는 몇몇 실시예들에서, 수평 및 수직 엔진들은 4 × 4 변환에 기초하여 설계될 수 있다. 그러나, 변환 크기는 임의의 크기(예를 들어, N × N)일 수 있고, 상이한 크기의 변환들이 하드웨어 엔진 설계들을 변화시킬 수 있으며, 이는 중간 계산들의 재사용과 연관되는 장점들을 여전히 실현시킨다.
상기 논의된 바와 같이, 본 명세서에 개시된 기술은 수행되는 1D 변환들의 수의 관점에서 37.5 퍼센트 이하의 감소를 달성할 수 있다. 그러나, 도 5에 도시된 아키텍쳐는 단지 25 퍼센트의 감소를 달성할 수 있다. 계산 감소량은 더 많은 공유가 발생할 수 있기 때문에 수평 엔진들의 개수가 증가함에 따라 향상될 수 있다. 16개 수평 엔진들을 지속시키기 위하여, 5개 수직 엔진들이 요구될 수 있다. 이러한 경우에, 계산 감소량은 l-[(5+16)/(16+16)]=34.4%이 될 수 있다. 일반적으로 N 수평 엔진들에 대하여, l+Ceil((N-l)/4) 수직 엔진들이 요구될 수 있다. Ceil()은 양의 무한대로 반올림된다. 계산 감소를 위한 일반화된 공식은 다음과 같이 주어질 수 있다:
1- [(수직 엔진들의 수 + 수평 엔진들의 수)/
(수평 엔진들의 수 + 수평 엔진들의 수)]
도 6은 본 발명에 따라 달성될 수 있는 계산 절약들을 개시하는 그래프이다. 특히, 도 6은 동시에 검색되는 포인트들의 수(x축 상에)에 기초하여 달성될 수 있는 계산 절약들(y축 상에)의 퍼센트를 그래프로 나타낸다. 일반적으로, (수직 변환이 먼저 수행되고 그 뒤에 수평 변환이 수행되는 것으로 가정하면) 검색 포인트들의 수는 수평 엔진들의 수와 동일할 수 있다. 일 실시예로서, 16 수평 엔진들은 16 검색 포인트들을 커버해야 한다. 도 6의 x-축 상에 값 16에서 이것은 그래프 상의 34.4% 절약들에 대응한다.
도 7은 동시에 검색될 수 있는 검색 포인트들의 수의 함수로서 변환 엔진들의 수를 도시하는 그래프이다. 도 7은 동시에 검색될 수 있는 검색 포인트들의 상이한 개수(x축 상에)에 대한 수평 엔진들의 수(y축 상에), 수직 엔진들의 수(y축 상에), 및 수평 및 수직 엔진들의 결합된 수(y축 상에)를 그래프로 나타낸다.
다시, 다수의 수평 엔진들은 변환 처리량 및 데이터 공유를 향상시키기 위하여 FTE에서 사용될 수 있다. FTE 엔진이 상대적으로 작은 영역에 효율적인 데이터 공유 및 낮은 전력 소모를 용이하게 할 수 있는 것을 보장하기 위해, FTE의 수직 및 수평 엔진들은 상이하게 설계될 수 있다. 특히, 클록 전력을 절약하기 위하여, 엔진들의 데이터 레지스터들의 대부분은 픽셀 클록 레이트의 1/2 또는 1/4에서 클록킹함으로써 설계된다. 표 1, 표 2 및 표 3(하기)은 사용될 수 있는 클록킹 방식을 도시한다.
도 8은 예시적인 수직 변환 엔진(80)(또한 수직 엔진으로서 지칭됨)을 도시한다. 수직 엔진(80)은 다양한 레지스터들 RO(81A), Rl(81B), PO(81C), Pl(81D), P2(81E) 및 Rf(81F), 멀티플렉서들(82A, 82B 82C, 82D, 82E 및 82F) 및 가산기들(85A 및 85B)을 포함한다. 수직 엔진(80)은 RAM(62)으로부터 직접 픽셀 데이터를 수신한다. 기술들은 수직 엔진(80)으로 구현될 수 있고, 여기서 수직 엔진(80)은 입력 픽셀 데이터를 다시 차례로 배열하고(re-sequence), 내부 데이터 경로들을 재정렬하며, 지정된 레지스터들에 브로드캐스팅된 픽셀 입력 데이터를 래칭한다.
표 1은 검색 포인트 s(0,0) 및 검색 포인트 s(l,0)의 부분에 대한 수직 엔진(80)의 예시적인 데이터 흐름 및 타이밍을 도시하며, 그것의 변환은 클록 사이클 16에서 시작한다. 특히, 표 1은 연속적인 클록 사이클들 상에 입력(I/P)을 고려할 때의 이러한 상이한 레지스터들의 콘텐츠를 보여준다. 출력(O/P)은 레지스터 Rf(81F)의 콘텐츠에 대응할 수 있다. 다시, "세부 분할된" 클록 신호가 사용될 수 있고, 이 경우 수직 엔진(80)에 대한 등가 클록 전력은 매 클록 사이클에 대하여 3개 레지스터들을 처리한다.
일반적으로, 검색 포인트 s(i,j)에 대하여, RAM(62)으로부터의 픽셀 데이터는 다음과 같이 다시 차례로 배열된다: s(i, j + l), s(i + 3,j + l), s(i + 1,j + l), s(i + 2,j + l) ; l ∈ 0,1,2,3. 레지스터 RO(81A)는 픽셀 데이터 s(i, j + l), s(i + 1,j + l) l ∈ 0,1,2,3를 래칭하기 위해 클록 2n 사이클에서 인에이블된다. 레지스터 Rl(81B)은 2개 클록 사이클들마다 입력 픽셀 데이터를 래칭한다. 레지스터 RO(81A) 클록은 픽셀 데이터 s(i + 3,j + l), s(i + 2,j + l) l ∈ 0,1,2,3을 래칭하기 위해 클록 2n+1 사이클에서 인에이블된다. 중간 변환 데이터를 홀딩하는데 사용되는 레지스터들 PO(81C), Pl(81D), P2(81E)에 대하여, PO(81C) 클록은 s(i,j + l) + s(i + 3,j + l)를 래칭하기 위해 사이클 4n+1에서 인에이블되고, 사이클 4n+2에서 Pl(81D)은 s(i, j + l)- s(i + 3,j + l)를 래칭하고, 사이클 4n+3에서 P2(81E)는 s(i + 1, j + l) + s(i +2,j + l)를 래칭하고, 사이클 4n+4에서 s(i + 1,j + l) - s(i + 2, j + l)를 래칭하며, 여기서 n = 0, 1, 2... l ∈ 0,1,2,3이다. 레지스터 Rf(81F)는 최종 변환 결과를 홀딩하는데 사용되고, 그것은 클록 사이클마다 인에이블된다. 검색 포인트 s(i,j)에 대하여, 수직으로 변환된 출력 시퀀스는 S'(i, j + l), S'(i + 2, j + l), S'(i + l,j + l), S'(i + 3, j + l), l ∈ 0,1,2,3이다.
Figure pat00020
Figure pat00021
표 1에서, 앞쪽 열에 개시된 네모 파형은 시스템 클록을 나타낸다. 수직 엔진(80)의 모든 데이터는 이러한 시스템 클록의 상승 에지에서 레지스터될 수 있다.
수평 엔진이 수직으로 변환된 데이터를 효율적으로 공유할 수 있기 위하여, 그것은 순차적 순서로 4 × 4 수직 변환된 데이터를 취해야 하고, 효율적인 데이터 공유 작업들을 하기 위해 수 개의 상이한 순서들이 존재하는데, 본 명세서에 개시되는 실시예는 그들 중 단지 하나일 뿐이다. 전력 소모를 최소화시키기 위해, 수평 엔진은 수직 변환 데이터를 즉시 소모하는 것이 바람직하다. 전치(transpose) 레지스터들 TM(65A, 65B)은 수직 변환된 데이터를 임시적으로 저장하고 개편하도록 설계된다. 도 12는 수직 및 수평 엔진들에 대한 입력 및 출력 시퀀스를 도시한다. 도 13은 수평 엔진에 대하여 수직 변환된 데이터를 다시 차례로 배열하도록 요구되는 최소 TM 레지스터들을 도시한다.
(도 5의 엔진들(66A-66D)과 같은) 수평 엔진들에서의 효율적인 프로세싱을 위해, 메모리에 대한 액세스들을 최소화하는 것이 바람직하다. 또한, 폐기되기 전에 모든 액세스된 데이터를 프로세싱하는 것이 바람직하다. 이러한 목표들을 효율적으로 달성하기 위하여, 2개의 상이한 타입의 수평 엔진들 HE(O)(90) 및 HE(j)(100)이 사용될 수 있다. HE(O)(90)은 수평 엔진(66A)(도 5)에 대응할 수 있으며, HE(j)(100)는 엔진들(66B-66D) 각각에 대응할 수 있다.
각각의 수평 엔진은 4개의 데이터 스트링들을 취하는데, 이들은 데이터 시퀀스O, 데이터 시퀀스1, 데이터 시퀀스2 및 데이터 시퀀스이다. 이러한 시퀀스들은 다음과 같이 묘사된다:
시퀀스 0: S'(i, j),S'(i + l,j),S'(i + 2,j),S'(i + 3,j)
시퀀스 1 : S'(i, j + 1), S'(i + 1,j + 1), S'(i + 2,j + 1), S'(i + 3,j + 1)
시퀀스 2: S'(i,j + 2),S'(i + 1,j + 2),S'(i + 2,j + 2),S'(i + 3,j + 2)
시퀀스 3 : S'(i, j + 3),S'(i + 1, j + 3), S'(i + 2,j + 3), S'(i + 3,j + 3)
S'(i,j)는 수직으로 변환된 픽셀 데이터를 나타낸다. 수평 엔진 HE(0)에 대하여, 모든 4개 시퀀스 데이터는 수직 엔진 VE(0)로부터 입력된다.
수평 엔진 HE(1)(100)에 대하여, 그것의 시퀀스0 및 시퀀스1 입력 데이터는 HE(0)(90)의 레지스터 91B 및 91C 데이터로부터 오고, 시퀀스2 데이터는 HE(0)(90)의 레지스터 92H의 공유 데이터 출력으로부터 오고, HE(1)(100)의 시퀀스3 데이터는 직접 수직 엔진 VE(1)(80)으로부터 온다.
수평 엔진 HE(2)(100)에 대하여, 그것의 시퀀스0 데이터 입력은 HE(O)(90) 레지스터 91C로부터 오고, 시퀀스1 데이터는 HE(O)의 92H의 공유 데이터 출력으로부터 오고, 시퀀스 2 데이터는 HE(1)(100)의 공유 데이터 출력 92H로부터 오며, HE(2)의 시퀀스3 데이터는 직접 수직 엔진 VE(1)(80)로부터 온다.
수평 엔진 HE(j)(100)에 대하여(j > 3), 그것의 입력 데이터 시퀀스O, 시퀀스1 및 시퀀스2는 각각 그것의 이웃 수평 엔진 HE(j-3), HE(j-2) 및 HE(j-1)의 공유 데이터 출력 멀티플렉서(102H)를 사용한다. HE(j)의 시퀀스3 데이터는 항상 수직 엔진 VE(k) 출력으로부터 직접 나온다. 여기서 k = (j+3)/4의 정수이다.
하기의 표 2 및 표 3은 수평 엔진 HE(O)(90) 및 HE(I)(100)의 입력, 출력 및 내부 제어 타이밍을 도시한다. R0(91A), R1(91B), R2(91C), R3(91D) 및 RO(1O1A)는 4개 클록 사이클마다 단 한 번 인에이블되고, 중간 레지스터 PO(91E, 101B), Pl(91F, 101C)는 2개 클록 사이클들마다 데이터를 래칭함을 주목하라.
도 9는 (또한 수평 엔진 HE(0)으로서 지칭되는) 예시적인 수평 변환 엔진 HE(0)(90)을 도시한다. 도 10은 예시적인 수평 변환 엔진 HE(j)(100)을 도시한다. 도 9의 수평 엔진(90)은 RO(91A), Rl(91B), R2(91C), R3(91D), PO(91E), Pl(91F), 및 Rf(91G)로 라벨링된 다양한 레지스터들, 멀티플렉서들(92A, 92B 92C, 92D, 92E, 92F, 92G, 92H), 및 가산기들(95A 및 95B)을 포함한다. 도 10의 수평 엔진(100)은 RO(101A), PO(101B), Pl(101C) 및 Rf(101D)로 라벨링된 다양한 레지스터들, 멀티플렉서들(102A, 102B 102C, 102D, 102E, 102F, 102G, 102H 및 102I), 및 가산기들(105A 및 105B)을 포함한다. 저장 구조들은 서로 유사할 수 있으나, 도 8, 9 및 10에 도시된 레지스터들은 각각의 개별적인 엔진에서 물리적 구성들을 포함할 수 있음을 유념해야 한다. 즉, 예를 들어, 도 8의 레지스터 RO(81A)는 도 9의 레지스터 RO(91A)와 상이하다.
수평 엔진 HE(O)(90)은 제1 4 × 4 픽셀 열 블록들을 변환하도록 설계될 수 있다(N × M 크기의 검색 영역으로부터의 검색 포인트들 s(0,0), s(l,0) s(M-3,0)). 대조적으로, (도 10에 도시되는) 수평 엔진 HE(j) 100은 반복적으로 열 블록들의 나머지(검색 포인트들 s(O,j), s(1,j) ... s(M-3,j) (1 ≤ j ≤ N - 3))를 변환하는데 사용될 수 있다; 도 9의 수평 엔진 HE(O)(90)은 도 5의 HE(O)(66A)에 대응할 수 있으며, 도 9의 수평 엔진 HE(j)(100)는 도 5의 HE(1)(66B), HE(2)(66C) 및 HE(3)(66D)에 대응할 수 있다.
수평 엔진 HE(O)(90)은 4개의 4분 픽셀 클록킹된 데이터 레지스터들 RO(91A), Rl(91B), R2(91C) 및 R3(91D)로 수직 엔진 VE(0)(도 5)으로부터 브로드캐스팅된 순차적 픽셀 데이터를 래칭하고, 중간 변환 기능들을 수행하고, 그 후, 레지스터들 PO(01E) 및 Pl(91F)에 결과들을 저장한다. 레지스터들 PO(01E) 및 Pl(91F)은 제2 버터플라이 연산에 대한 데이터를 저장하고, 결과는 최종 레지스터 Rf(91G)에 전달된다.
수평 엔진(90)의 레지스터들 RO(91A), Rl(91B), R2(91C) 및 R3(91D)에 래칭된 데이터는 다음 3개의 수평 엔진들 HE(1), HE(2,) HE(3)에 의하여 공유될 수 있다(도 5의 66B-66D 참조). 일반적으로, 각각의 수평 엔진 HE(j)(100)에 대하여(여기서, j = 1, 2 또는 3), 입력 데이터는 HE(0) 출력, VE(1) 출력, 및 "이전" HE(j) 엔진들의 멀티플렉싱으로부터 나온다.
표 2는 수평 엔진들 HE(0)-HE(3) 중에서 데이터가 공유되는 방법 및 타이밍을 도시한다. 특히, 표 2는 검색 포인트들 s(0,0), s(l,0), s(2,0)... 등에 대하여 작용하는 수평 엔진 HE(0)(66A)의 타이밍 정보를 도시한다. 사이클 0(S'00)에서 시작되는 픽셀 데이터는 검색 포인트 s(0,0)와 연관되는 4 × 4 블록의 제1 픽셀이다. 사이클 16 (S'10)에서 시작하는 데이터는 검색 포인트 s(l,0) 등에 대한 4 × 4 블록의 제1 픽셀을 지칭한다. 표 2는 표 2에 표시되는 것과 유사한 타이밍 관계를 적용함으로써 종료 검색 포인트 s(M-3, 0)로 용이하게 확장될 수 있다.
Figure pat00022
표 3은 검색 포인트 s(0,l)의 4 × 4 매칭 영역에 대한 HE(1) 엔진의 16 픽셀 타이밍 및 사이클 17로부터 시작하는 검색 포인트 s(l,l)의 픽셀 타이밍의 부분을 디스플레이한다. 표 3의 데이터 시퀀스O 시퀀스 1 및 시퀀스3은 수평 엔진 HE(O)으로부터의 Rl, R2 & R3 레지스터 값들로부터의 카피들이며, 이는 수평 엔진들 HE(1) 내지 HE(3) 사이에서 공유된다. 레지스터 값들은 HE(O)와 HE(1) 사이의 데이터 흐름 및 타이밍 관계를 도시하기 위하여 표 3에 나열된다. 특히, "분할된(divided down)" 픽셀 클록 주파수를 사용함으로써, 등가 클록킹 전력이 더 많은 레지스터들을 사용함으로써 달성될 수 있다. 예를 들어, HE(1)는 2.25 레지스터들과 동등한 클록킹 전력을 이용하는 설계에서 4개의 물리적 레지스터들을 가질 수 있고, HE(0)는 3개 레지스터들과 동등한 클록킹 전력을 갖는 7개 레지스터들을 가질 수 있다.
Figure pat00023
표 4는 VE(O), VE(1), HE(O), HE(1), HE(2) 및 HE(3) 사이의 예시적인 타이밍 관계를 도시한다. 특히, 표 4는 수직 및 수평 엔진들 VE(k) 및 HE(j)(k = 0, 1. j = 0,1,2,3) 사이의 입력 타이밍 관계 및 수평 엔진들 HE(j) 사이에서 수직 변환된 데이터가 공유되는 방법을 도시한다. 표 4는 단지 검색 포인트 s(i, j)에 대한 타이밍 정보를 제공하며, 여기서 i = 0, 1, 2, ...4; j = 0, 1, ...3이다. 유사한 타이밍 패턴이 모든 s(i,j) 검색 포인트들에 대하여 용이하게 개발될 수 있으며, i = 0, l, 2...M-3; j = 0, 1, ...N-3이다.
Figure pat00024
Figure pat00025
FTE 변환 아키텍쳐는 엔진들뿐 아니라 수직 엔진과 수평 엔진들 사이에서의 데이터 흐름에 의하여 결정될 수 있다. 아키텍쳐는 픽셀 레이트 파이프라이닝 설계를 포함할 수 있기 때문에, 엔진들 사이에 임의의 편향된 데이터 흐름이 파이프라인을 지연시킬(stall) 수 있다. 이러한 문제점을 방지하기 위하여, 전치 메모리들(65A 및 65B)은 데이터의 타이밍을 버퍼링하고 고려하기 위하여 엔진들 사이에서 사용될 수 있다.
본 발명의 기술들은 파이프라인 방식으로 비디오 데이터의 블록들의 세트에 대하여 변환들이 수행되도록 허용한다. 특히, 수평 엔진들 및 수직 엔진들은 데이터가 FTE(60)(도 5)를 통해 파이프라이닝되도록 변환들의 적어도 일부에 대하여 동시에 작동할 수 있다. 예를 들어, 도 5에 도시되는 바와 같이, 데이터는 수직 엔진들(64A 및 64B)에 의하여 프로세싱될 수 있고, 출력값은 전치 메모리들(65A 및 65B)에 저장될 수 있다. 제1 비디오 블록과 연관되는 수직 데이터 전체를 프로세싱할 때, 수직 엔진들(64A 및 64B)은 그 후 제2 비디오 블록과 연관되는 수직 데이터를 프로세싱할 수 있다(적절하게 중간 결과들 재사용). 전치 메모리들(65A 및 65B)은 그러한 데이터가 수평 엔진들(66A-66D) 중 하나에 의하여 프로세싱될 수 있기 전에 필요한 동안은, 수직 엔진들(64A 및 64B)의 출력값이 저장되도록 허용한다. 이러한 방식으로, 데이터는 FTE(60)를 통해 파이프라이닝된다.
일반적으로, 수직 엔진들(64A 및 64B) 중 하나에 의한 데이터 생성과 수평 엔진들(66A-66D) 중 하나에 의한 소모 사이에 최대 타이밍 왜곡량은 요구되는 최소 전치 메모리(TM)량을 한정한다. 전환들 사이에 가장 작은 TM을 갖기 위하여, 다음과 같은 사항들이 권고된다:
1. 공급기(feeder) 엔진과 수용기(소모) 엔진 사이에 데이터 타이밍 왜곡의 최소화, 및
2. 가능한 한 빨리 생성된 공급기 엔진 데이터를 소모
TM을 구현하기 위한 하나의 방법은 랜덤 액세스 메모리(RAM)를 사용하는 것이다. RAM-기반 설계의 단점들은 다음과 같다:
1. (타이밍 왜곡과 동일하고 16 클록 사이클들보다 작은) RAM의 어드레스 크기는 작고, RAM의 형태는 물리적 설계에 효율적이지 않을 수 있다. 특히, 2개의 4 × 4 변환들 사이에서, 최대 타이밍 왜곡은 15 클록 사이클들일 수 있다.
2. 각각의 4 × 4 변환의 16 클록 사이클들 동안에, 메모리는 동일한 클록 사이클 동안 여러 번 판독되고 기록될 수 있다. 이것은 2-포트 RAM이 사용되지 않는 한, RAM이 픽셀 클록 레이트의 두 배에서 구동해야 함을 의미한다.
3. 더 작은 RAM-기반 설계에 대하여, 메모리 테스트 로직은 자신의 영역 장점을 오프셋시킨다.
이러한 요인들을 고려하면, 수직 엔진과 수평 엔진 사이에서 전치 메모리로서 RAM의 사용은 실리콘 상에 물리적 구현이 문제를 겪지 않을 때 고려될 수 있다.
다른 TM 설계 방식은 레지스터 기반 설계이다. 동일한 파이프라이닝 기술들은 전치 메모리 또는 전치 레지스터들이 사용되는지 여부와 무관하게 사용될 수 있다. 도 11은 검색 공간에 입력 블록들이 정의될 수 있는 방식을 도시한다. 도 12는 수직 엔진과 수평 엔진 사이에 입력 및 출력 데이터 흐름을 도시한다. 수평 엔진 입력 데이터에 관해 수직 엔진 입력 데이터 및 수직 엔진 출력 데이터의 재정렬을 용이하게 하기 위하여, 도 12에 도시되는 방식으로 인덱스를 추적하는 것은 변환 프로세스의 효율성을 향상시킬 수 있다. sOO, s30, s1O, s20 ... s01, ... s23 시퀀스에서 픽셀 입력을 이용하는 수직 엔진 설계는 가장 적은 컴포넌트들을 사용할 수 있다. 이러한 경우에, VE 변환 출력은 S'OO, S'20, S'1O, S'30...S'33 포맷을 따른다. 이것은 출력 수직 엔진 데이터에 대한 입력 수직 엔진 데이터의 재정렬을 기록하기 위하여 어레이로의 인덱스를 추적함으로써 순수하게 논리적인 방식으로 수행될 수 있다. 인덱스를 추적하는 것은 메모리들을 업데이트하지 않고 데이터가 한 위치에 저장되도록 허용하며, 불필요한 기록 동작들을 제거한다. 본 기술분야의 당업자들은 메모리에 데이터를 재기록함으로 인한 재-정렬이 또한 수행될 수 있음을 인지할 것이다.
입력 데이터를 공유하기 위하여, 수평 엔진 입력은 순차적 포맷인 것이 바람직하다. 이러한 경우에, 파이프라이닝 기술이 이용될 수 있어, 수평 및 수직 엔진들은 비디오 데이터의 파이프라인에 대하여 동시에 작동한다. 효율적인 파이프라이닝된 데이터 프로세싱에 대하여, 수평 엔진은 그것이 이용가능해지는 대로 수직 엔진에 의하여 생성되는 제1 데이터를 입력할 수 있다. 그래서, 수평 입력은 S'OO, SO1, S'02, S'03... S'33 시퀀스 포맷일 수 있다. 도 12의 수직 엔진 출력 시퀀스들(Ver. O/P seq.)과 수평 엔진 입력 시퀀스들(Hor. I/P seq.)을 비교하면, 가장 큰 대응 차는 13 - 4 = 9이고, 이는 이러한 경우에 9개 전치(트랜스포즈(transpose)) 레지스터들이 필요할 수 있음을 표시한다. 본 기술분야의 당업자는 더 큰 블록 크기가 상이한 개수의 전치 레지스터들을 요구할 수 있음을 인지할 수 있다. 개수는 프로세싱을 위해 데이터가 이용가능한 가장 이른 시간과 관련된다. 적절한 개수의 전치 레지스터들을 선택함으로써, 파이프라이닝은 추가적 레지스터들이 방지되도록 효율적인 방식으로 지원될 수 있다. 이러한 경우에, 9개 전치 레지스터들은 추가적인 양의 또는 초과량의 메모리 또는 레지스터들을 요구하지 않고 가능한 한 빨리 데이터 프로세싱 파이프라인에 사용되도록 허용하기에 충분한 시간 동안 모든 필요한 데이터를 절약하기에 충분할 수 있다.
도 13은 수직 엔진과 수평 엔진 사이에서 사용될 수 있는 전치 레지스터(TR)들의 개수를 도시한다. 도 13에서 좌측의 숫자들은 시간 마크들이다. 따라서, 본 실시예에서, 시간(T1)에, 수직 엔진은 T2에 S'OO을 출력하고, 그것은 S '20... 등등을 출력한다. 도 13의 어두운 부분은 수직 엔진(공급기) 출력이 수평(수용기) 엔진에 의하여 소모되기 이전에 TR에서 얼마나 오래 저장하는지를 나타낸다. 여기서, 수평 엔진은 시간(T10)으로부터의 수직 엔진의 출력을 소모하기 시작하고, 시간(T25)에 끝난다. 도 12의 우측의 숫자들은 각각의 시간 마크에 필요한 TR들의 개수를 나타내고, 이것은 회색 영역의 전체량과 동일하다. 도 13에 의하여 추정된 전체 TR은 또한 9이다. 시간(13)에 픽셀 숫자는 TR로 래칭하지 않고 수평 엔진으로 직접 공급된다.
다수의 기술들 및 실시예들이 설명되었다. 개시된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합물로 구현될 수 있다. 소프트웨어로 구현된다면, 본 명세서에 개시된 기술들은 디바이스에서 실행될 때 여기서 설명하는 하나 이상의 방법을 수행하는 명령들을 포함하는 컴퓨터 판독 가능 매체에서 실현될 수 있다. 예를 들어, 실행시, 명령들은 비디오 코딩 디바이스로 하여금 비디오 데이터의 블록들 상에 변환들을 수행하게 할 수 있으며, 변환들의 수행은 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 계산들을 재사용하는 것을 포함한다.
컴퓨터-판독가능 매체는 동기 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), 전기적으로 소거가능한 프로그램가능 판독 전용 메모리(EEPROM), FLASH 메모리, 자기 또는 광학 데이터 저장 매치 등을 포함할 수 있다. 명령들은 하나 이상의 디지털 신호 프로세서(DSP)들, 범용 마이크로프로세서들, 하나 이상의 ASIC들, 하나 이상의 FPGA들, 또는 다른 등가 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서들 또는 다른 장치들에 의해 실행될 수 있다. 몇몇 실시예들에서, 본 명세서에 설명한 기능은 오디오 또는 멀티미디어 정보의 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈이나 하드웨어 유닛들 내에 제공될 수도 있고, 또는 결합된 멀티미디어 인코더-디코더(CODEC)에 통합될 수도 있다.
하드웨어 회로에서 구현된다면, 본 발명은 비디오 데이터의 블록들에 대하여 변환들을 수행하도록 구성되는 회로와 관련될 수 있고, 변환들을 수행함에 있어, 회로는 비디오 데이터의 제2 블록의 제2 변환에 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용한다. 예를 들어, 회로는 칩셋을 형성하는 회로들의 세트 또는 집적 회로를 포함할 수 있다. 회로는 ASIC, FPGA, 다양한 논리 회로들, 집적 회로들, 또는 이들의 조합물을 포함할 수 있다.
이러한 그리고 다른 실시예들은 다음의 청구항들의 범위 내에 있다.

Claims (25)

  1. 비디오 데이터의 블록들에 대한 변환들을 수행하는 비디오 코더를 포함하는 디바이스로서,
    상기 비디오 코더는 상기 변환들의 수행에 있어, 비디오 데이터의 제2 블록의 제2 변환에 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하는, 디바이스.
  2. 제 1 항에 있어서,
    상기 비디오 코더는 정수 및 이산 코사인 변환(DCT)들로 구성되는 그룹으로부터의 변환들을 수행하는, 디바이스.
  3. 제 1 항에 있어서,
    상기 비디오 코더는 모션(motion) 추정기를 포함하며, 상기 모션 추정기는 상기 변환들을 수행하는 변환 엔진을 포함하는, 디바이스.
  4. 제 3 항에 있어서,
    상기 비디오 데이터의 제1 블록 및 상기 비디오 데이터의 제2 블록은 검색 공간과 연관되는 비디오 데이터를 포함하고, 상기 변환 엔진은 인코딩될 비디오 데이터의 블록에 대하여 변환을 수행하는, 디바이스.
  5. 제 1 항에 있어서,
    상기 비디오 코더는 상기 검색 공간 내에 정의된 비디오 데이터의 4개 이상의 블록들에 대한 변환들을 수행하고, 상기 비디오 코더는 상기 검색 공간 내에 정의된 상기 비디오 데이터의 블록들 중 적어도 3개의 변환들에서 계산들을 재사용하는, 디바이스.
  6. 제 1 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하며,
    상기 변환들은 중간 결과(intermiedate result)들을 생성하기 위한 상기 4×4 픽셀 블록들의 행들에 대한 1차원 변환들 및 상기 중간 결과들의 열에 대한 1차원 변환들을 포함하고,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 디바이스.
  7. 제 6 항에 있어서,
    상기 비디오 코더는 상기 변환들을 수행하는 하나 이상의 수평 엔진들 및 하나 이상의 수직 엔진들을 포함하는, 디바이스.
  8. 제 7 항에 있어서,
    상기 비디오 코더는 상기 엔진들 중 하나로의 입력 데이터에 관하여 상기 엔진들 중 하나로부터의 출력 데이터의 타이밍을 버퍼링(buffer) 및 보상(account for)하기 위해 상기 하나 이상의 수평 엔진들과 상기 하나 이상의 수직 엔진들 사이에 하나 이상의 전치 메모리들을 더 포함하는, 디바이스.
  9. 제 8 항에 있어서,
    상기 변환들은 파이프라이닝된(pipelined) 방식으로 비디오 데이터의 블록들의 세트에 대하여 수행되고, 상기 수평 엔진들 및 상기 수직 엔진들은 상기 변환들의 적어도 일부에 대하여 동시에 작동하는, 디바이스.
  10. 제 8 항에 있어서,
    상기 비디오 코더는,
    상기 출력 데이터에 관하여 상기 입력 데이터와 연관되는 인덱스 값들을 추적하며; 그리고
    상기 인덱스 값들을 통해 상기 출력 데이터에 관하여 상기 입력 데이터를 재-정렬하는, 디바이스.
  11. 제 7 항에 있어서,
    상기 비디오 코더는 상기 엔진들 중 하나에 대한 입력 데이터에 관하여 상기 엔진들 중 하나로부터의 출력 데이터의 타이밍을 버퍼링 및 보상하기 위해 상기 하나 이상의 수평 엔진들과 상기 하나 이상의 수직 엔진들 사이에 전치 레지스터들의 세트를 더 포함하는, 디바이스.
  12. 제 11 항에 있어서,
    상기 변환들은 파이프라이닝된 방식으로 비디오 데이터의 블록들의 세트에 대하여 수행되고, 상기 수평 엔진들 및 수직 엔진들은 상기 변환들 중 적어도 일부에 대하여 동시에 작동하는, 디바이스.
  13. 제 11 항에 있어서, 상기 비디오 코더는:
    상기 출력 데이터에 관하여 상기 입력 데이터와 연관되는 인덱스 값들을 추적하며; 그리고
    상기 인덱스 값들을 통해 상기 출력 데이터에 관하여 상기 입력 데이터를 재정렬하는, 디바이스.
  14. 제 1 항에 있어서,
    상기 디바이스는 무선 통신 디바이스를 포함하는, 디바이스.
  15. 제 1 항에 있어서,
    상기 디바이스는 고해상도 텔레비전(HDTV)을 포함하는, 디바이스.
  16. 제 1 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하며,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 열들에 대한 1차원 변환들 및 상기 중간 결과들의 행에 대한 1차원 변환들을 포함하고,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 디바이스.
  17. 비디오 데이터의 블록들에 대한 변환들을 수행하는 단계를 포함하는 방법으로서,
    상기 변환들을 수행하는 단계는 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하는 단계를 포함하는, 비디오 데이터의 블록들에 대한 변환들을 수행하는 단계를 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하고,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 행들에 대한 1차원 변환들 및 상기 중간 결과들의 열에 대한 1차원 변환들을 포함하며,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 비디오 데이터의 블록들에 대한 변환들을 수행하는 단계를 포함하는 방법.
  19. 제 17 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하고,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 열들에 대한 1차원 변환들 및 상기 중간 결과들의 행에 대한 1차원 변환들을 포함하며,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 비디오 데이터의 블록들에 대한 변환들을 수행하는 단계를 포함하는 방법.
  20. 비디오 데이터의 블록들에 대한 변환들을 수행하기 위한 수단; 및
    비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하기 위한 수단
    을 포함하는, 디바이스.
  21. 제 20 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하고,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 행들에 대한 1차원 변환들 및 상기 중간 결과들의 열에 대한 1차원 변환들을 포함하며,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 디바이스.
  22. 비디오 코딩 디바이스에서 실행될 때, 상기 디바이스로 하여금 비디오 데이터의 블록들에 대한 변환들을 수행하게 하는 명령들을 포함하는 컴퓨터-판독가능 매체로서,
    상기 변환들의 수행에 있어, 상기 명령들은 상기 디바이스로 하여금 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하게 하는, 컴퓨터-판독가능 매체.
  23. 제 22 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하고,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 행들에 대한 1차원 변환들 및 상기 중간 결과들의 열에 대한 1차원 변환들을 포함하며,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 컴퓨터-판독가능 매체.
  24. 비디오 데이터의 블록들에 대한 변환들을 수행하도록 구성되는 회로로서,
    상기 변환들의 수행에 있어, 상기 회로는 비디오 데이터의 제2 블록의 제2 변환에서 비디오 데이터의 제1 블록의 제1 변환과 연관되는 하나 이상의 계산들을 재사용하는, 회로.
  25. 제 24 항에 있어서,
    상기 비디오 데이터의 블록들은 4×4 픽셀 블록들을 포함하고,
    상기 변환들은 중간 결과들을 생성하기 위한 상기 4×4 픽셀 블록들의 행들에 대한 1차원 변환들 및 상기 중간 결과들의 열에 대한 1차원 변환들을 포함하며,
    상기 재사용된 계산들은 상기 중간 결과들 중 적어도 일부를 포함하는, 회로.
KR1020127013944A 2007-09-26 2008-09-26 비디오 코딩을 위한 효율적인 변환 기술들 KR20120066681A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/861,804 US8654833B2 (en) 2007-09-26 2007-09-26 Efficient transformation techniques for video coding
US11/861,804 2007-09-26

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020107008991A Division KR101235132B1 (ko) 2007-09-26 2008-09-26 비디오 코딩을 위한 효율적인 변환 기술들

Publications (1)

Publication Number Publication Date
KR20120066681A true KR20120066681A (ko) 2012-06-22

Family

ID=40471543

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020107008991A KR101235132B1 (ko) 2007-09-26 2008-09-26 비디오 코딩을 위한 효율적인 변환 기술들
KR1020127013944A KR20120066681A (ko) 2007-09-26 2008-09-26 비디오 코딩을 위한 효율적인 변환 기술들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020107008991A KR101235132B1 (ko) 2007-09-26 2008-09-26 비디오 코딩을 위한 효율적인 변환 기술들

Country Status (7)

Country Link
US (1) US8654833B2 (ko)
EP (1) EP2198621A2 (ko)
JP (1) JP5512524B2 (ko)
KR (2) KR101235132B1 (ko)
CN (1) CN102067606B (ko)
TW (1) TW200926830A (ko)
WO (1) WO2009042943A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100846870B1 (ko) * 2006-07-06 2008-07-16 한국전자통신연구원 다수의 기본 블록들의 다차원 구성을 통한 다단계 변환장치 및 그 방법
US20080204598A1 (en) * 2006-12-11 2008-08-28 Lance Maurer Real-time film effects processing for digital video
KR101403338B1 (ko) * 2007-03-23 2014-06-09 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
US8208065B2 (en) * 2008-07-30 2012-06-26 Cinnafilm, Inc. Method, apparatus, and computer software for digital video scan rate conversions with minimization of artifacts
US9110849B2 (en) * 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US8451904B2 (en) 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
JP5375676B2 (ja) * 2010-03-04 2013-12-25 富士通株式会社 画像処理装置、画像処理方法、および画像処理プログラム
US9824066B2 (en) 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
GB2551290B (en) * 2011-10-17 2018-09-19 Kt Corp Method and apparatus for encoding/decoding image
KR101689938B1 (ko) * 2012-01-20 2016-12-26 소니 주식회사 크로마 양자화 파라미터 확장
US9554152B2 (en) 2013-07-12 2017-01-24 Qualcomm Incorporated Concurrent processing of horizontal and vertical transforms
EP3083609B1 (en) 2013-12-19 2018-08-15 Merck Sharp & Dohme Corp. Hiv protease inhibitors
US10356440B2 (en) 2014-10-01 2019-07-16 Qualcomm Incorporated Scalable transform hardware architecture with improved transpose buffer
CN104811696B (zh) * 2015-04-17 2018-01-02 北京奇艺世纪科技有限公司 一种视频数据的编码方法和装置
US10567800B2 (en) * 2016-11-29 2020-02-18 Qualcomm Incorporated Transform hardware architecture for video coding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60179481A (ja) * 1984-02-24 1985-09-13 Nitto Electric Ind Co Ltd 金属粉末結合用組成物
IT8921420V0 (it) * 1989-07-13 1989-07-13 Telettra Spa Sistema e circuito per il calcolo di trasformata discreta bidimensionale.
JPH07200539A (ja) 1993-12-28 1995-08-04 Matsushita Electric Ind Co Ltd 二次元dct演算装置
GB2305798B (en) 1995-09-28 1999-10-20 Sony Uk Ltd Spatial frequency-domain video signal processing
US5894430A (en) 1996-05-20 1999-04-13 Matsushita Electric Industrial Co., Ltd. Orthogonal transform processor
US5796434A (en) * 1996-06-07 1998-08-18 Lsi Logic Corporation System and method for performing motion estimation in the DCT domain with improved efficiency
US6414992B1 (en) * 1999-01-27 2002-07-02 Sun Microsystems, Inc. Optimal encoding of motion compensated video
JP2000222578A (ja) 1999-02-02 2000-08-11 Matsushita Electric Ind Co Ltd パターンマッチング方法および動きベクトル検出方法
US20040028127A1 (en) 2002-08-06 2004-02-12 Raghavan Subramaniyan Method and apparatus for reducing computational complexity in video encoders
US7756351B2 (en) 2003-12-19 2010-07-13 Stmicroelectronics, Inc. Low power, high performance transform coprocessor for video compression
US7630435B2 (en) * 2004-01-30 2009-12-08 Panasonic Corporation Picture coding method, picture decoding method, picture coding apparatus, picture decoding apparatus, and program thereof
EP1730846A4 (en) 2004-03-10 2010-02-24 Sindhara Supermedia Inc METHODS AND DEVICES FOR COMPRESSING DIGITAL IMAGE DATA WITH MOTION PREDICTION
CN100433837C (zh) 2004-03-18 2008-11-12 华中科技大学 视频编码的整数变换方法
US8595281B2 (en) * 2006-01-11 2013-11-26 Qualcomm Incorporated Transforms with common factors
US8849884B2 (en) * 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
CN100450184C (zh) 2006-07-12 2009-01-07 浙江大学 运用于图像编码和视频编码的离散余弦变换方法
US20080107176A1 (en) * 2006-11-02 2008-05-08 General Instrument Corporation Method and Apparatus for Detecting All Zero Coefficients

Also Published As

Publication number Publication date
EP2198621A2 (en) 2010-06-23
KR101235132B1 (ko) 2013-02-20
CN102067606B (zh) 2014-09-17
TW200926830A (en) 2009-06-16
US20090080515A1 (en) 2009-03-26
WO2009042943A2 (en) 2009-04-02
CN102067606A (zh) 2011-05-18
WO2009042943A3 (en) 2010-12-29
JP5512524B2 (ja) 2014-06-04
KR20100068470A (ko) 2010-06-23
JP2011509538A (ja) 2011-03-24
US8654833B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
KR101235132B1 (ko) 비디오 코딩을 위한 효율적인 변환 기술들
US8462850B2 (en) Motion estimation in video compression systems
US8218635B2 (en) Systolic-array based systems and methods for performing block matching in motion compensation
KR101578052B1 (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
US20090245374A1 (en) Video encoder and motion estimation method
US20080063074A1 (en) Multi-standard variable block size motion estimation processor
CN101621696B (zh) 允许分数视频运动估计和双向视频运动估计的选择性使用方法和编码器
Pastuszak Architecture design of the H. 264/AVC encoder based on rate-distortion optimization
Tsai et al. Effective search point reduction algorithm and its VLSI design for HDTV H. 264/AVC variable block size motion estimation
Wang et al. Hardware-friendly advanced motion vector prediction method and its architecture design for high efficiency video coding
Li et al. A VLSI architecture design of an edge based fast intra prediction mode decision algorithm for H. 264/AVC
Asif et al. Optimized implementation of motion compensation for H. 264 decoder
JP2005184829A (ja) ビデオ圧縮用低パワー高性能変換コプロセッサ
Campos et al. Integer-pixel motion estimation H. 264/AVC accelerator architecture with optimal memory management
Chen et al. VLSI architecture design of fractional motion estimation for H. 264/AVC
Werda et al. Optimal DSP Based Integer Motion Estimation Implementation for H. 264/AVC Baseline Encoder.
Pyen et al. An efficient hardware architecture for full-search variable block size motion estimation in H. 264/AVC
TW526657B (en) Global elimination algorithm for motion estimation and the hardware structure
JP2007281977A (ja) Sad演算器
Bae et al. Quarter-pel interpolation architecture in H. 264/AVC decoder
Jeon et al. Real-time MPEG-2 video codec system using multiple digital signal processors
Duvar et al. SIMD-based low bit-depth motion estimation with application to HEVC
Loukil et al. A Pipelined FSBM Hardware Architecture for HTDV-H. 26x
KR100617177B1 (ko) 움직임 추정 방법
Lappalainen et al. Unified method for optimization of several video coding algorithms on general-purpose processors

Legal Events

Date Code Title Description
A107 Divisional application of patent
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid