KR100963459B1 - 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사 - Google Patents

순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사 Download PDF

Info

Publication number
KR100963459B1
KR100963459B1 KR1020087032218A KR20087032218A KR100963459B1 KR 100963459 B1 KR100963459 B1 KR 100963459B1 KR 1020087032218 A KR1020087032218 A KR 1020087032218A KR 20087032218 A KR20087032218 A KR 20087032218A KR 100963459 B1 KR100963459 B1 KR 100963459B1
Authority
KR
South Korea
Prior art keywords
value
matrix
factor
coefficient
calculating
Prior art date
Application number
KR1020087032218A
Other languages
English (en)
Other versions
KR20090028736A (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 KR20090028736A publication Critical patent/KR20090028736A/ko
Application granted granted Critical
Publication of KR100963459B1 publication Critical patent/KR100963459B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
    • 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

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Multimedia (AREA)
  • Discrete Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

고정 소수점 계산을 이용하여 역이산 코사인 변환의 연산을 그사하는 기술들이 개시된다. 이 기술들에 따르면, 스케일링된 계수들의 행렬은 인코딩된 계수의 행렬의 계수를 스케일 인수로 승산함으로써 발생된다. 다음으로, 바이어싱된 계수의 행렬은 스케일링된 계수의 행렬의 DC 계수에 중심점 바이어스 값을 가산함으로써 발생된다. 그 후, 고정 소수점 연산이 이용되어, 바이어싱된 계수의 행렬에 변환을 적용한다. 그 후, 결과적 행렬의 값은 픽셀 성분값의 행렬을 산출하기 위해 우측-시프팅된다. 그 후, 픽셀 성분값의 행렬이 결합되어 픽셀의 행렬을 생성한다. 이 기술에 의해 발생된 픽셀의 행렬은 이상적인 역이산 코사인 변환 ("IDCT") 을 이용하여 압축해제된 픽셀의 행렬과 매우 유사하다.
고정 소수점 연산, 라운딩 에러, 이산 코사인 변환, 시간적 디코딩, 공간적 디코딩, 중심점 바이어스

Description

순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사{EFFICIENT FIXED-POINT APPROXIMATIONS OF FORWARD AND INVERSE DISCRETE COSINE TRANSFORMS}
본 출원은, 2006 년 6 월 26 일자로 출원된 미국가출원 제 60/816,697 호, 2006 년 8 월 30 일자로 출원된 미국가출원 제 60/841,362 호, 2006 년 9 월 25 일자로 출원된 미국가출원 제 60/847,194 호, 2006 년 10 월 16 일자로 출원된 미국가출원 제 60/829,669 호, 2006 년 12 월 11 일자로 출원된 미국가출원 제 60/869,530 호, 2007 년 1 월 8 일자로 출원된 미국가출원 제 60/883,932 호, 2007 년 3 월 23 일자로 출원된 미국가출원 제 60/896,778 호 및 2007 년 3 월 30 일자로 출원된 미국가출원 제 60/909,335 호의 이점을 주장하는데, 이들의 전체 내용은 본 명세서에 참조로서 포함되어 있다.
기술분야
본 개시물은 컴퓨터 그래픽스 및 멀티미디어에 관한 것이고, 특히 그래픽스, 이미지, 및 비디오 정보의 압축에 관한 것이다.
배경기술
고해상도 이미지 및 비디오가 비교적 콤팩트한 파일 또는 데이터 스트림으로 서 저장 또는 송신되는 것을 허용하기 위해서, 다수의 기존의 이미지 및 비디오 코딩 표준은 압축 기술을 이용한다. 이러한 코딩 표준은, JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group)-1, MPEG-2, MPEG-4 파트 2, H.261, H.263, 및 다른 이미지 또는 비디오 코딩 표준을 포함한다.
다수의 이들 표준에 따르면, 비디오 프레임은 "공간적 (spatial)" 인코딩을 이용하여 압축된다. 이들 프레임은 오리지널 프레임 (즉, i-프레임) 일 수도 있고, 또는 모션 보상을 이용하는 시간적 (temporal) 인코딩 프로세스에 의해 발생된 잔여 프레임 (residual frame) 일 수도 있다. 공간적 인코딩 중에, 프레임은 동등한 크기의 픽셀 블록으로 쪼개진다. 예를 들어, 압축되지 않은 프레임은 8×8 픽셀 블록의 세트로 쪼개질 수도 있다. 각 픽셀 블록에 있어서, 픽셀 성분은 픽셀 성분값의 행렬로 분리된다. 예를 들어, 각 픽셀 블록은 Y 픽셀 성분값의 행렬, U 픽셀 성분값의 행렬, 및 V 픽셀 성분값의 행렬로 분할될 수도 있다. 이 실시예에 있어서, Y 픽셀 성분값은 휘도 (luminance) 값을 나타내고, U 픽셀 성분값 및 V 픽셀 성분값은 색차 (chrominance) 값을 나타낸다.
또한, 공간적 인코딩 중에, 인코딩되고 있는 프레임에서의 픽셀 성분값의 행렬 각각에 대해 순이산 코사인 변환 (FDCT) 이 적용된다. 이상적인 1-차원 FDCT 는:
Figure 112008090971299-pct00001
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환 된 값의 어레이이고, 계수 c 는,
Figure 112008090971299-pct00002
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 FDCT 는 공식:
Figure 112008090971299-pct00003
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고,
Figure 112008090971299-pct00004
Figure 112008090971299-pct00005
로 주어지고, c(k) 는 1-차원 경우에서와 같이 정의된다.
계수의 행렬은, 픽셀 성분값의 블록이 FDCT 를 이용하여 변환되는 경우에 생성된다. 그런 다음, 이 계수의 행렬은 양자화되고, 예를 들어 허프만 코드 또는 산술 코드 (arithmetic code) 를 이용하여 인코딩될 수도 있다. 비디오 비트스트림은, 압축되지 않은 일련의 비디오 프레임에서의 일련의 비디오 프레임의 컬러 성분값의 블록 모두에 대해 이 프로세스를 수행한 합성 결과를 나타낸다.
압축되지 않은 비디오 프레임은, 이 프로세스를 반전시킴으로써 비디오 비트스트림으로부터 도출될 수도 있다. 특히, 이 비트스트림에서의 계수의 행렬 각각은 압축해제되고, 압축해제된 값은 역양자화되어, 변환된 계수의 행렬을 도출한다. 그런 다음, 픽셀 성분값의 행렬을 도출하기 위해서 변환된 계수의 행렬 각각에 대해 역이산 코사인 변환 ("IDCT") 이 적용된다. 이상적인 1-차원 IDCT 는:
Figure 112008090971299-pct00006
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고, 계수 c 는,
Figure 112008090971299-pct00007
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 IDCT 는 다음의 공식으로 정의된다:
Figure 112008090971299-pct00008
.
그런 다음, 그 결과적인 픽셀 성분값의 행렬은 픽셀 블록으로 재조립되고, 이들 픽셀 블록은 재조립되어, 디코딩된 프레임을 형성한다. 디코딩된 프레임이 i-프레임인 경우에는, 이 프레임은 현재 완전히 디코딩된다. 그러나, 압축되지 않은 프레임이 예측 프레임 (predictive frame) 또는 양방향-예측 프레임 (bi-predictive frame) 인 경우에는, 디코딩된 프레임은 단지 디코딩된 잔여 프레임이다. 디코딩된 프레임과 연관된 모션 벡터를 이용하여 복원된 프레임을 구성한 다음, 이 복원된 프레임을 디코딩된 잔여 프레임에 부가함으로써, 완성된 프레임이 발생된다.
이상적인 환경 하에서는, FDCT 를 이용하여 픽셀 성분값의 블록을 인코딩하거나 IDCT 를 이용하여 픽셀 성분값의 블록을 디코딩함으로써 정보가 손실되지 않는다. 그 결과, 이들 이상적인 환경 하에서, 비디오 프레임의 디코딩된 버전은 비디오 프레임의 오리지널 버전과 동일하다. 그러나, FDCT 또는 IDCT 의 컴퓨팅은 계산상 어려울 수도 있는데, 그 이유는 FDCT 및 IDCT 의 계산이 실수 및 상당수의 승산 연산의 이용을 수반하기 때문이다. 이러한 이유로, FDCT 및 IDCT 에 이용된 실수는 제한된 정밀도의 수 (limited precision number) 를 이용하여 빈번하게 근사된다. 제한된 정밀도의 수를 이용하여 실수값을 나타내는 것으로부터 라운딩 에러가 기인한다. 또한, 양자화 및 역양자화가 부가적인 에러에 기여할 수도 있다.
압축 및 압축해제 프로세스에서의 에러는, 압축되지 않은 오리지널 프레임과 압축되지 않은 최종 프레임 사이에 현저한 차이를 야기할 수도 있다. 예를 들어, 압축되지 않은 최종 프레임에서의 컬러는 압축되지 않은 오리지널 프레임에서의 컬러와 상이할 수도 있다. 또한, 인코더의 IDCT 구현과 디코더의 IDCT 구현 사이의 불일치에 의해 야기된 에러는 예측된 프레임의 시퀀스의 인코딩 및 디코딩 중에 누산될 수도 있다. 이들 누산된 에러는 통상적으로 "IDCT 드리프트" 로 언급된다.
개 요
고정 소수점 계산을 이용한 역이산 코사인 변환의 연산에 근사하는 기술이 기재되어 있다. 이들 기술에 따르면, 스케일링된 계수의 행렬은, 인코딩된 계수의 행렬의 계수와 스케일 인수 (scale factor) 를 승산함으로써 발생된다. 다음에, 중심점 바이어스 값 (midpoint bias value) 을 스케일링된 계수의 행렬의 DC 계수에 가산함으로써 바이어싱된 계수의 행렬이 발생된다. 그런 다음, 바이어싱된 계수의 행렬에 변환을 적용하기 위해 고정 소수점 연산이 이용된다. 그런 다음, 그 결과적인 행렬에서의 값이 우측-시프팅되어, 픽셀 성분값의 행렬을 도출한다. 그런 다음, 픽셀 성분값의 행렬들이 결합되어 픽셀의 행렬을 생성한다. 이들 기술에 의해 생성된 픽셀의 행렬은, 이상적인 역이산 코사인 변환 ("IDCT") 을 이용하여 압축해제된 픽셀의 행렬과 유사하다.
일 양태에서, 일 방법은, 스케일링된 계수의 행렬을 생성하기 위해, 상기 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하는 단계를 포함한다. 이 방법에서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 이다. 또한, 이 방법은, 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 단계를 포함한다. 또한, 이 방법은, 조정된 계수의 행렬을 생성하기 위해, 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 단계를 포함한다. 조정된 계수의 행렬의 각각의 조정된 계수는, 인코딩된 계수의 행렬에 이상적인 2-차원 IDCT 를 적용함으로써 생성될 값들의 행렬의 대응 값에 근사한다. 또한, 이 방법은 픽셀의 8×8 블록을 디스플레이하는 단계를 포함한다. 픽셀의 8×8 블록의 각각의 픽셀은 조정된 계수의 행렬의 조정된 계수에 기초한 픽셀 성분값을 포함한다.
또 다른 양태에서, 일 디바이스는, 스케일링된 계수의 행렬을 생성하기 위 해, 상기 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하는 스케일링 모듈을 포함하며, 여기서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 이다. 또한, 이 디바이스는, 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 역방향 변환 모듈을 포함한다. 또한, 이 디바이스는, 조정된 계수의 행렬을 생성하기 위해, 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 우측-시프트 모듈을 포함한다. 조정된 계수의 행렬의 각각의 조정된 계수는, 인코딩된 계수의 행렬에 이상적인 2-차원 IDCT 를 적용함으로써 생성될 값들의 행렬의 대응 값에 근사한다. 또한, 이 디바이스는 픽셀의 8×8 블록을 출력하는 출력 모듈을 포함한다. 픽셀의 8×8 블록의 각각의 픽셀은 조정된 계수의 행렬의 조정된 계수에 기초한 픽셀 성분값을 포함한다.
또 다른 양태에서, 일 디바이스는, 스케일링된 계수의 행렬을 생성하기 위해, 상기 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 로 스케일링하는 수단을 포함하며, 여기서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 이다. 또한, 이 디바이스는, 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 수단을 포함한다. 또한, 이 디바 이스는, 조정된 계수의 행렬을 생성하기 위해, 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 수단을 포함한다. 조정된 계수의 행렬의 각각의 조정된 계수는, 인코딩된 계수의 행렬에 이상적인 2-차원 IDCT 를 적용함으로써 생성될 값들의 행렬의 대응 값에 근사한다. 또한, 이 디바이스는 픽셀의 8×8 블록을 출력하는 수단을 포함한다. 픽셀의 8×8 블록의 각각의 픽셀은 조정된 계수의 행렬의 조정된 계수에 기초한 픽셀 성분값을 포함한다.
또 다른 양태에서, 본 발명은 명령들을 포함하는 컴퓨터-판독가능 매체를 의도한다. 이 명령들은, 스케일링된 계수의 행렬을 생성하기 위해, 프로그래머블 프로세서로 하여금 상기 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 로 스케일링하게 하며, 여기서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 이다. 또한, 이 명령들은, 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 프로그래머블 프로세서로 하여금 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하게 한다. 또한, 이 명령들은, 조정된 계수의 행렬을 생성하기 위해, 프로그래머블 프로세서로 하여금 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅하게 한다. 조정된 계수의 행렬의 각각의 조정된 계수는, 인코딩된 계수의 행렬에 이상적인 2-차원 IDCT 를 적용함으로써 생성될 값들의 행렬의 대응 값에 근사한다. 또한, 이 명령들은, 프로그래머블 프로세서로 하여금, 디스플레이 유닛이 픽셀의 8×8 블록을 디스플레이하게 하는 신호를 출력하게 한다. 픽셀의 8×8 블록의 각각의 픽 셀은 조정된 계수의 행렬의 조정된 계수에 기초한 픽셀 성분값을 포함한다.
몇몇 경우에, 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있는데, 이 컴퓨터 프로그램 제품은 제조자에게 판매되고/되거나 일 디바이스에 사용될 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있고, 몇몇 경우에는 포장재도 포함할 수도 있다.
하나 이상의 실시예의 상세가 아래의 상세한 설명 및 첨부 도면에 설명되어 있다. 본 발명의 다른 특징, 목적 및 이점은, 상세한 설명, 도면 및 특허청구범위로부터 자명할 것이다.
도면의 간단한 설명
도 1 은 미디어 파일을 인코딩 및 디코딩하는 예시적인 디바이스를 도시한 블록도이다.
도 2 는 인코딩 모듈의 예시적인 상세를 도시한 블록도이다.
도 3 은 디코딩 모듈의 예시적인 상세를 도시한 블록도이다.
도 4 는 인코딩 모듈의 예시적인 동작을 도시한 흐름도이다.
도 5 는 디코딩 모듈의 예시적인 동작을 도시한 흐름도이다.
도 6 은 역이산 코사인 변환 ("IDCT") 모듈의 예시적인 상세를 도시한 블록도이다.
도 7 은 IDCT 모듈의 예시적인 동작을 도시한 흐름도이다.
도 8 은 순이산 코사인 변환 ("FDCT") 모듈의 예시적인 상세를 도시한 블록 도이다.
도 9 는 순방향 벡터 변환 모듈의 예시적인 연산을 도시하는 흐름도이다.
도 10A 는 예시적인 1-차원 변환을 도시하는 흐름도이다.
도 10B 는 예시적인 스케일링 1-차원 변환을 도시하는 흐름도이다.
도 11 은 역방향 변환 모듈에 의해 이용되는 예시적인 스케일링 1-차원 변환을 도시하는 흐름도이다.
상세한 설명
도 1 은 미디어 파일을 인코딩 및 디코딩하는 예시적인 디바이스 (2) 를 도시한 블록도이다. 디바이스 (2) 는, 퍼스널 컴퓨터, 모바일 무선전화기, 서버, 네트워크 어플라이언스, 차량에 통합된 컴퓨터, 비디오 게이밍 플랫폼, 휴대용 비디오 게임 디바이스, 컴퓨터 워크스테이션, 컴퓨터 키오스크, 디지털 사이니지 (digital signage), 메인프레임 컴퓨터, 텔레비전 셋탑 박스, 네트워크 전화기, PDA (Personal Digital Assistant), 비디오 게임 플랫폼, 모바일 미디어 플레이어, 홈 미디어 플레이어, 디지털 비디오 프로젝터, 퍼스널 미디어 플레이어 (예를 들어, iPod), 또는 또다른 타입의 전자 디바이스를 포함할 수도 있다.
디바이스 (2) 는, 미디어 데이터를 발생시키는 미디어 소스 (4) 를 포함할 수도 있다. 미디어 소스 (4) 는, 이미지 데이터를 캡처하는 디지털 비디오 또는 스틸 포토 카메라를 포함할 수도 있다. 미디어 소스 (4) 는 디바이스 (2) 에 내장될 수도 있고, 또는 주변 디바이스로서 디바이스 (2) 에 부착될 수도 있다. 또한, 미디어 소스 (4) 는, 오디오 데이터를 레코딩하는 마이크로폰을 포함할 수도 있다. 미디어 소스 (4) 는 미디어 데이터를 프로세서 (6) 로 제공할 수도 있다. 프로세서 (6) 는 디지털 신호 프로세서 ("DSP"), 마이크로프로세서, 또는 일부 다른 타입의 집적 회로를 포함할 수도 있다.
프로세서 (6) 가 미디어 소스 (4) 로부터 미디어 데이터를 수신하는 경우, 인코딩 모듈 (8) 은 미디어 데이터를 인코딩할 수도 있다. 인코딩 모듈 (8) 은 프로세서 (6) 에 의해 실행되는 소프트웨어를 포함할 수도 있다. 대안적으로, 인코딩 모듈 (8) 은, 미디어 데이터를 인코딩하는 프로세서 (6) 내의 전문 하드웨어를 포함할 수도 있다. 또다른 대안에 있어서, 인코딩 모듈 (8) 은, 미디어 데이터를 인코딩하는 소프트웨어와 하드웨어의 임의의 조합을 포함할 수도 있다.
인코딩 모듈 (8) 은 미디어 저장소 (10) 에 인코딩된 미디어 데이터를 저장할 수도 있다. 미디어 저장소 (10) 는 플래시 메모리, RAM (Random Access Memory), 하드디스크 드라이브, 또는 일부 다른 타입의 휘발성 또는 비휘발성 데이터 저장 유닛을 포함할 수도 있다.
디코딩 모듈 (12) 은 미디어 저장소 (10) 로부터 인코딩된 미디어 데이터를 취득할 수도 있다. 디코딩 모듈 (12) 은 프로세서 (6) 에 의해 실행되는 소프트웨어를 포함할 수도 있다. 대안적으로, 디코딩 모듈 (12) 은, 인코딩된 미디어 데이터를 디코딩하는 프로세서 (6) 내의 전문 하드웨어를 포함할 수도 있다. 또다른 대안에 있어서, 디코딩 모듈 (12) 은, 인코딩된 미디어 데이터를 디코딩하도록 협력하는 소프트웨어와 하드웨어의 조합을 포함할 수도 있다.
디바이스 (2) 에서의 미디어 프리젠테이션 유닛 (14) 은 디코딩 모듈 (12) 에 의해 디코딩된 미디어 데이터를 제공할 수도 있다. 예를 들어, 미디어 프리젠테이션 유닛 (14) 은, 이미지 또는 비디오 미디어 데이터를 프리젠테이션하는 컴퓨터 모니터를 포함할 수도 있다. 또다른 실시예에 있어서, 미디어 프리젠테이션 유닛 (14) 은, 오디오 미디어 데이터를 프리젠테이션하는 오디오 출력 디바이스 (예를 들어, 스피커) 를 포함할 수도 있다. 미디어 프리젠테이션 유닛 (14) 은 디바이스 (2) 에 통합될 수도 있고, 또는 주변 디바이스로서 유선 링크 또는 무선 링크를 통해 디바이스 (2) 에 접속될 수도 있다.
또한, 디바이스 (2) 는 네트워크 인터페이스 (16) 를 포함할 수도 있다. 네트워크 인터페이스 (16) 는 유선 링크 또는 무선 링크를 통한 디바이스 (2) 와 컴퓨터 네트워크 사이의 통신을 용이하게 할 수도 있다. 예를 들어, 네트워크 인터페이스 (16) 는 디바이스와 모바일 전화 네트워크 사이의 통신을 용이하게 할 수도 있다. 디바이스 (2) 는 네트워크 인터페이스 (16) 를 통해 미디어 파일을 수신할 수도 있다. 예를 들어, 디바이스 (2) 는, 네트워크 인터페이스 (16) 를 통해 사진, 비디오 클립, 스트리밍 비디오 (예를 들어, 텔레비전, 비디오 회의, 영화), 오디오 클립 (예를 들어, 호출음 (ringtone), 노래, MP3 파일), 스트리밍 오디오 (예를 들어, 디지털 라디오 방송국, 음성 통화 등) 를 수신할 수도 있다. 네트워크 인터페이스 (16) 가 미디어 파일 또는 비디오 비트스트림을 수신하는 경우, 네트워크 인터페이스 (16) 는 미디어 저장소 (10) 에 미디어 파일 또는 비디오 비트스트림을 저장할 수도 있다.
비디오 신호는 픽처의 시퀀스에 관하여 설명될 수도 있는데, 이는 프레임 (전체 픽처), 또는 필드 (예를 들어, 프레임의 홀수 라인 또는 짝수 라인 중 어느 하나를 포함하는 픽처) 를 포함한다. 또한, 각 프레임 또는 필드는 프레임 또는 필드의 하위부분 또는 2 개 이상의 슬라이스를 포함할 수도 있다. 본 명세서에 이용된 바와 같이, 단독으로 또는 다른 단어와 협력하여, "프레임" 이라는 용어는 픽처, 프레임, 필드, 또는 이들의 슬라이스를 언급할 수도 있다.
인코딩 모듈 (8) 이 일련의 비디오 프레임을 인코딩하는 경우, 인코딩 모듈 (8) 은 비디오 프레임 중 하나를 "i-프레임" 으로 선택함으로써 시작할 수도 있다. 예를 들어, 인코딩 모듈 (8) 은 모든 8 번째 프레임을 i-프레임으로서 선택할 수도 있다. i-프레임은, 다른 프레임을 참조하지 않는 프레임이다. i-프레임을 선택한 이후에, 인코딩 모듈 (8) 은 "공간적 인코딩" 을 이용하여 i-프레임을 인코딩한다. 또한, 인코딩 모듈 (8) 은 "시간적 인코딩" 을 이용하여 나머지 프레임을 인코딩할 수도 있다.
공간적 인코딩을 이용하여 프레임을 인코딩하기 위해서, 인코딩 모듈 (8) 은 프레임 데이터를 픽셀 블록으로 쪼갤 수도 있다. 예를 들어, 인코딩 모듈 (8) 은, 프레임 데이터를, 폭이 8 개의 픽셀이며 높이가 8 개의 픽셀인 픽셀 블록으로 쪼갤 수도 있다 (즉, 각 픽셀 블록은 64 개의 픽셀을 포함함). 그런 다음, 인코딩 모듈 (8) 은 각 픽셀 블록에서의 픽셀의 픽셀 성분값을 분리된 픽셀 성분값의 행렬로 분리할 수도 있다. 픽셀의 픽셀 성분값은, 픽셀의 양상 (appearance) 을 특성화하는 값이다. 예를 들어, 각 픽셀은 Y 픽셀 성분값, Cr 픽셀 성분값, 및 Cb 픽셀 성분값을 특정할 수도 있다. Y 픽셀 성분값은 픽셀의 휘도를 나타내고, Cr 픽셀 성분값은 픽셀의 레드 색차를 나타내고, Cb 픽셀 성분값은 픽셀의 블루 색차를 나타낸다. 이 실시예에 있어서, 인코딩 모듈 (8) 이 픽셀 블록의 픽셀 성분값을 분리하는 경우, 인코딩 모듈 (8) 은 Y 픽셀 성분값의 행렬, Cr 픽셀 성분값의 행렬, 및 Cb 픽셀 성분값의 행렬을 획득할 수도 있다.
픽셀 성분값을 픽셀 성분값의 행렬로 분리한 이후에, 인코딩 모듈 (8) 은 픽셀 성분값의 행렬에서 픽셀 성분값을 좌측-시프팅시킴으로써 조정된 계수의 행렬을 발생시킨다. 조정된 계수 각각의 행렬에 대해, 인코딩 모듈 (8) 은 고정 소수점 연산을 이용하여, 조정된 계수의 행렬에 1-차원 변환을 반복적으로 적용함으로써 변환된 계수의 행렬을 발생시킨다. 다음에, 인코딩 모듈 (8) 은, 변환된 계수의 행렬을 스케일 인수의 세트로 스케일링함으로써, 스케일링된 계수의 행렬을 발생시킨다. 이들 스케일 인수 각각은 정수값이다. 스케일 인수는, 1-차원 변환 내의 인수가 단순한 유리수를 이용하여 근사될 수도 있는 방식으로 선택되었다.
스케일링된 계수의 행렬에서의 각각의 스케일링된 계수는, 컬러 성분값의 대응 행렬에 이상적인 2-차원 순이산 코사인 변환 ("FDCT") 을 적용함으로써 생성되는 값의 행렬에서의 대응하는 값에 근사한다. 이상적인 1-차원 FDCT 는:
Figure 112008090971299-pct00009
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환 된 값의 어레이이고, 계수 c 는,
Figure 112008090971299-pct00010
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 FDCT 는 공식:
Figure 112008090971299-pct00011
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고,
Figure 112008090971299-pct00012
Figure 112008090971299-pct00013
로 주어지고, c(k) 는 1-차원 경우에서와 같이 정의된다.
스케일링된 계수의 행렬을 도출한 이후에, 인코딩 모듈 (8) 은, 스케일링된 계수의 행렬에서의 계수를 양자화함으로써 양자화된 계수의 행렬을 발생시킨다. 스케일링된 계수의 양자화는, 스케일링된 계수의 행렬에서의 고주파 계수와 연관된 정보의 양을 감소시킬 수도 있다. 양자화된 계수의 행렬을 발생시킨 이후에, 인코딩 모듈 (8) 은 양자화된 계수의 행렬에 엔트로피 인코딩 방식을 적용할 수도 있다. 예를 들어, 인코딩 모듈 (8) 은 이 양자화된 계수의 행렬에서의 양자화된 계수에 허프만 인코딩 방식을 적용할 수도 있다. 인코딩 모듈 (8) 이 양자화된 계수의 행렬 각각에 엔트로피 인코딩 방식을 적용하는 경우, 인코딩 모듈 (8) 은 비디오 비트스트림의 일부로서 인코딩된 행렬을 출력할 수도 있다.
시간적 인코딩을 이용하여 프레임을 인코딩하기 위해서, 인코딩 모듈 (8) 은 프레임을 "매크로블록" 으로 분할할 수도 있다. 이용되는 코딩 표준에 종속하 여, 이들 매크로블록은 고정 또는 가변 크기일 수도 있고, 중복 또는 비중복될 수도 있다. 예를 들어, 각 매크로블록은 16×16 픽셀 블록일 수도 있다. 프레임에서의 각 매크로블록에 대해, 인코딩 모듈 (8) 은 하나 이상의 기준 프레임에서의 소스 매크로블록을 식별하려고 시도할 수도 있다. 코딩 표준에 종속하여, 기준 프레임은 i-프레임, 예측 프레임, 또는 양방향-예측 프레임일 수도 있다. 인코딩 모듈 (8) 이 기준 프레임에서의 소스 매크로블록을 식별할 수 있는 경우에는, 인코딩 모듈 (8) 은 매크로블록에 대한 모션 벡터를 기록한다. 모션 벡터는, 식별된 소스 매크로블록에 관한 매크로블록의 수평 변위를 나타내는 x 값, 및 식별된 소스 매크로블록에 관한 매크로블록의 수직 변위를 나타내는 y 값을 포함한다. 인코딩 모듈 (8) 이 매크로블록에 대한 소스 매크로블록을 식별할 수 없는 경우에는, 인코딩 모듈 (8) 에는 매크로블록에 대한 모션 벡터를 기록하는 것이 요구되지 않을 수도 있다. 다음에, 인코딩 모듈 (8) 은 "복원된" 프레임을 발생시킨다. 복원된 프레임은, 현재의 프레임에 대해 기록된 모션 벡터에 따라 기준 프레임으로부터 매크로블록을 이동시키는 것으로부터 기인한 프레임을 포함한다. 복원된 프레임을 발생시킨 이후에, 인코딩 모듈 (8) 은, 복원된 프레임의 각 픽셀에서의 픽셀 성분값을 현재의 프레임의 대응 픽셀에서의 대응 픽셀 성분값으로부터 감산하여, "잔여" 프레임을 야기한다. 그런 다음, 인코딩 모듈 (8) 은 엔트로피 인코딩 방식을 이용하여, 현재의 프레임의 매크로블록에 대한 모션 벡터를 압축한다. 또한, 인코딩 모듈 (8) 은 전술한 공간적 인코딩 기술을 이용하여, 잔여 프레임을 압축한다.
디코딩 모듈 (12) 은 인코딩 모듈 (8) 과 유사하지만 반전된 프로세스를 수행할 수도 있다. 예를 들어, 공간적 디코딩 프로세스를 수행하기 위해서, 디코딩 모듈 (12) 은 인코딩된 비디오 비트스트림에서의 양자화된 계수의 인코딩된 행렬 각각에 대해 엔트로피 디코딩 방식을 적용할 수도 있다. 그런 다음, 디코딩 모듈 (12) 은 각각의 양자화된 계수의 행렬에서의 계수를 역양자화함으로써, 각각의 양자화된 계수의 행렬에 대해 역양자화된 계수의 행렬을 발생시킬 수도 있다. 각각의 양자화된 계수의 행렬에 대해, 디코딩 모듈 (12) 은 스케일 인수의 세트를 이용하여, 양자화된 계수의 행렬을 스케일링함으로써 스케일링된 계수의 행렬을 발생시킨다. 이 스케일 인수는 전술한 공간적 인코딩 프로세스에서 이용된 인수와 동일한 스케일 인수일 수도 있다. 스케일링된 계수의 행렬을 발생시킨 이후, 디코딩 모듈 (12) 은 고정 소수점 연산을 이용하여, 양자화된 계수의 행렬에 1-차원 변환을 반복적으로 적용함으로써 변환된 계수의 행렬을 발생시킨다. 예를 들어, 디코딩 모듈 (12) 은 스케일링된 계수의 행렬에서 각각의 행 벡터에 1-차원 변환을 적용함으로써 중간 계수의 행렬을 발생시킬 수도 있다. 그런 다음, 이 실시예에서, 디코딩 모듈 (12) 은 중간 계수의 행렬에서 각각의 열 벡터에 1-차원 변환을 적용함으로써 변환된 계수의 행렬을 발생시킬 수도 있다. 변환된 계수의 행렬을 발생시킨 이후, 디코딩 모듈 (12) 은 변환된 계수의 행렬에서 변환된 계수를 우측-시프팅시킴으로써 조정된 계수의 행렬을 발생시킨다.
조정된 계수의 행렬에서 조정된 계수는, 역양자화된 계수의 행렬에 이상적인 2-차원 역이산 코사인 변환 ("IDCT") 를 적용함으로써 생성될 값들에 근사한다. 이상적인 1-차원 IDCT 는 공식:
Figure 112008090971299-pct00014
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고, 계수 c 는,
Figure 112008090971299-pct00015
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 IDCT 는 공식:
Figure 112008090971299-pct00016
으로 정의된다.
픽셀 성분값의 이들 블록은 픽셀의 블록으로 재조립될 수도 있고, 픽셀의 블록은 재조립되어 압축되지 않은 비디오 프레임을 형성할 수도 있다
조정된 계수의 행렬을 발생시킨 이후, 디코딩 모듈 (12) 은, 그 조정된 계수가 픽셀 성분값에 대한 허용된 범위 내에 존재하는 것을 보장하기 위해 조정된 계수의 행렬에서 그 조정된 계수를 클리핑할 수도 있다. 그런 다음, 디코딩 모듈 (12) 은 클리핑된 계수의 행렬을 픽셀의 블록으로 재조립할 수도 있다. 픽셀 성분값의 블록을 픽셀의 블록으로 재조립한 이후, 디코딩 모듈 (12) 은 그 픽셀의 블록을 재조립함으로써 이미지를 발생시킬 수도 있다.
예측 프레임을 디코딩하기 위해, 디코딩 모듈 (12) 은 전술한 공간적 디코딩 기술을 이용하여, 그 예측 프레임에 대한 잔여 이미지에서 양자화된 계수의 행렬을 디코딩할 수도 있다. 또한, 디코딩 모듈 (12) 은 엔트로피 디코딩 방식을 이용하여, 예측 프레임의 모션 벡터를 디코딩할 수도 있다. 다음에, 디코딩 모듈 (12) 은 모션 벡터에 따라 예측 프레임의 기준 프레임의 매크로블록을 "이동"시킴으로써 복원된 프레임을 발생시킬 수도 있다. 복원된 프레임을 발생시킨 이후, 디코딩 모듈 (12) 은 그 복원된 프레임의 대응하는 픽셀의 대응하는 픽셀 성분값에 디코딩된 잔여 프레임 각각의 픽셀에서의 픽셀 성분값을 가산한다. 이 가산의 결과가 복원된 예측 프레임이다.
본 명세서에서 설명하는 기술은 다수의 이점을 제공할 수도 있다. 예를 들어, 이 기술은 고정 소수점 연산을 적용하기 때문에, 이 기술은, 이동 전화, 개인 휴대 정보 단말 및 개인용 미디어 플레이어와 같은 더 작고 간단한 디바이스에 적용될 수도 있다. 또한, 이 기술은, ITU-T (International Telecommunication Union Standardization Sector) 권고 H.261, H.263, H.264, T.81 (JPEG) 뿐만 아니라, ISO (International Organization for Standardization)/MEC MPEG (Moving Pictures Experts Group)-1, MPEG-2, 및 MPEG-4 파트 2 미디어 포맷을 포함한 포맷에 적용될 수도 있다.
도 2 는 인코딩 모듈 (8) 의 예시적인 상세를 도시한 블록도이다. 인코딩 모듈 (8) 은 "모듈" 세트를 포함할 수도 있다. 이들 모듈은 인코딩 모듈 (8) 의 소프트웨어 명령들의 서브세트를 포함할 수도 있다. 대안적으로, 이들 모듈은 하나 이상의 특수-목적 하드웨어와 같은 펌웨어 하드웨어를 포함할 수도 있 다. 또다른 대안에 있어서, 이들 모듈은 소프트웨어 명령들 및 특수-목적 하드웨어 또는 펌웨어를 포함할 수도 있다.
도 2 의 실시예에 예시된 바와 같이, 인코딩 모듈 (8) 은, 인코딩 모듈 (8) 이 비디오 프레임을 i-프레임으로서 처리하는지, 예측 프레임으로서 처리하는지, 또는 양방향-예측 프레임으로서 처리하는지를 제어하는 프레임 제어 모듈 (20) 을 포함한다. 예를 들어, 인코딩 모듈 (8) 이 비디오 프레임을 수신하는 경우, 프레임 제어 모듈 (20) 은, 이 비디오 프레임이 i-프레임, 예측 프레임, 또는 양방향-예측 프레임이라고 이 비디오 프레임과 연관된 비트스트림 플래그가 나타내는지 여부를 판정할 수도 있다. 프레임 제어 모듈 (20) 이, 이 비디오 프레임이 i-프레임이라고 비트스트림 플래그가 나타낸다고 판정하는 경우에는, 프레임 제어 모듈 (20) 은 이 비디오 프레임으로 하여금 비디오 프레임에 대해 즉시 공간적 인코딩을 수행하는 모듈 세트에 의해 처리되도록 할 수도 있다. 한편, 이 비디오 프레임이 예측 프레임 또는 양방향-예측 프레임이라고 프레임 제어 모듈 (20) 이 판정하는 경우에는, 프레임 제어 모듈 (20) 은 이 비디오 프레임으로 하여금 시간적 인코딩을 수행하는 모듈 세트에 의해 처리되도록 할 수도 있다.
인코딩 모듈 (8) 은, 비디오 프레임에 공간적 인코딩을 적용하기 위한 일련의 모듈을 포함한다. 이들 모듈은, 블록 스플리터 모듈 (22), 성분 추출 모듈 (24), 순방향 변환 모듈 (26), 양자화 모듈 (28), 및 엔트로피 인코딩 모듈 (30) 을 포함한다. 블록 스플리터 모듈 (22) 은 미디어 소스 (4), 네트워크 인터페이스 (16) 또는 또다른 소스로부터 인코딩되지 않은 비디오 프레임을 수신할 수도 있다. 블록 스플리터 모듈 (22) 이 인코딩되지 않은 비디오 프레임을 수신하는 경우, 블록 스플리터 모듈 (22) 은 이 비디오 프레임을 픽셀 블록으로 분리할 수도 있다. 블록 스플리터 모듈 (22) 은 픽셀 블록을 성분 추출 모듈 (24) 로 제공할 수도 있다.
성분 추출 모듈 (24) 이 픽셀 블록을 수신하는 경우, 성분 추출 모듈 (24) 은 각 픽셀의 픽셀 성분값을 상이한 컬러 포맷으로 변환할 수도 있다. 예를 들어, 성분 추출 모듈 (24) 은 각 픽셀을 레드-그린-블루 (RGB) 컬러 포맷으로부터 YCrCb 컬러 포맷으로 변환할 수도 있다. 블록에서의 픽셀을 상이한 컬러 포맷으로 변환한 이후에, 성분 추출 모듈 (24) 은 블록에서의 픽셀의 픽셀 성분값을 픽셀 성분값의 행렬로 분리할 수도 있다. 예를 들어, 성분 추출 모듈 (24) 은 일 픽셀 블록으로부터 Y 값의 행렬, Cr 값의 행렬, 및 Cb 값의 행렬을 추출할 수도 있다. Y 값은 픽셀의 휘도를 특정하고, Cr 값은 픽셀의 레드 색차를 특정하고, Cb 값은 픽셀의 블루 색차를 특정한다. 성분 추출 모듈 (24) 이 픽셀 성분값의 행렬을 추출한 경우, 성분 추출 모듈 (24) 은 이들 행렬 각각을 개별적으로 이산 코사인 변환 (DCT) 모듈 (26) 로 제공할 수도 있다.
순방향 변환 모듈 (26) 이 픽셀 성분값의 행렬을 수신하는 경우, 순방향 변환 모듈 (26) 은 스케일링된 계수의 행렬을 발생시킨다. 이 스케일링된 계수의 행렬에서의 각 계수는, 이상적인 순이산 코사인 변환을 이용하여 픽셀 성분값의 행렬을 변환함으로써 생성되는 계수에 근사한다.
순방향 변환 모듈 (26) 은 고정 소수점 연산을 이용하여, 픽셀 성분값의 행 렬에 1-차원 변환을 적용한다. 고정 소수점 연산을 이용하는 것은 몇몇 상황에서 유리할 수도 있다. 예를 들어, 모바일 전화기와 같은 소형의 디바이스는, 부동 소수점 연산을 수행하는데 요구되는 부동 소수점 유닛을 포함하지 않을 수도 있다. 순방향 변환 모듈 (26) 은, 픽셀 성분값 각각을 좌측-시프팅시킴으로써 스케일링된 계수의 행렬을 발생시키는 프로세스를 시작할 수도 있다. 예를 들어, 순방향 변환 모듈 (26) 은, 1-차원 변환을 적용하는 경우에 순방향 변환 모듈 (26) 이 이용하는 수의 고정 소수점 표현 (fixed-point representations of numbers) 의 정밀도의 비트의 수 (즉, 가수 비트의 수) 에 이 변환을 적용하는 것으로부터 기인하는 변환된 계수를 스케일링함으로써 제거된 정밀도의 비트의 수를 더한 것만큼 픽셀 성분값 각각을 좌측-시프팅시킴으로써, 조정된 계수의 행렬을 발생시킬 수도 있다. 픽셀 성분값 각각을 좌측-시프팅시킨 이후에, 순방향 변환 모듈 (26) 은 조정된 계수의 행렬의 행 벡터 각각에 대해 이 변환을 수행할 수도 있다. 조정된 계수의 행렬의 행 벡터 각각에 대해 이산 코사인 변환을 수행하는 것은 중간 계수의 행렬을 발생시킨다. 다음에, 순방향 변환 모듈 (26) 은 중간 계수의 행렬의 열 벡터 각각에 대해 이 변환을 수행할 수도 있다. 중간 계수의 행렬의 열 벡터 각각에 대해 변환을 수행하는 것은 변환된 계수의 행렬을 야기시킨다.
변환된 계수의 행렬을 발생시킨 이후에, 순방향 변환 모듈 (26) 은 상이한 스케일 인수로 변환된 계수의 행렬의 상이한 위치에서의 변환된 계수를 스케일링한다. 후술하는 바와 같이, 디코딩 모듈 (12) 은 역방향 변환의 적용시 이들 스 케일 인수의 역수를 이용할 수도 있다. 순방향 변환 모듈 (26) 이 스케일 인수로 변환된 계수를 스케일링하는 것을 완료한 경우, 순방향 변환 모듈 (26) 은 그 결과적인 스케일링된 계수의 행렬을 양자화 모듈 (28) 로 출력할 수도 있다.
양자화 모듈 (28) 이 순방향 변환 모듈 (26) 로부터 이 스케일링된 계수의 행렬을 수신하는 경우, 양자화 모듈 (28) 은 스케일링된 계수를 양자화할 수도 있다. 양자화 모듈 (28) 은, 이용되는 코딩 표준에 종속하여 각종 방식으로 스케일링된 계수를 양자화할 수도 있다. 예를 들어, MPEG-4 파트 2 표준에 따르면, 양자화 모듈 (28) 은 다음의 양자화 행렬을 이용하여, i-프레임에 대한 스케일링된 계수의 행렬에서의 계수를 양자화할 수도 있다.
Figure 112008090971299-pct00017
또한, 이 실시예에 있어서, 양자화 모듈 (28) 은 다음의 양자화 행렬을 이용하여, 예측 프레임 또는 양방향-예측 프레임에 대한 스케일링된 계수의 행렬에서의 계수를 양자화할 수도 있다.
Figure 112008090971299-pct00018
양자화 모듈 (28) 이 양자화된 계수의 행렬을 발생시킨 이후에, 엔트로피 인코딩 모듈 (30) 은 엔트로피 인코딩 방식을 이용하여 양자화된 계수의 행렬을 압축할 수도 있다. 엔트로피 인코딩 방식을 이용하여 양자화된 계수의 행렬을 압축하기 위해서, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수를 이 계수의 지그재그 패턴을 취함으로써 벡터로 구성할 수도 있다. 다시 말하면, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 2-차원 행렬에서의 양자화된 계수 모두를 예측가능하게 양자화된 계수의 1-차원 벡터로 배열할 수도 있다. 그런 다음, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 벡터에 대해 허프만 코딩 또는 산술 코딩과 같은 엔트로피 인코딩 방식을 적용할 수도 있다.
또한, 인코딩 모듈 (8) 은 비디오 프레임의 시간적 인코딩을 수행하기 위한 하나 이상의 모듈을 포함한다. 도 2 의 실시예에 예시된 바와 같이, 인코딩 모듈 (8) 은 모션 추정 모듈 (32), 복원된 프레임 발생 모듈 (34), 및 잔여 프레임 발생 모듈 (36) 을 포함한다. 모션 추정 모듈 (32) 은 현재의 비디오 프레임에 서의 각 매크로블록에 대한 기준 이미지에서의 소스 매크로블록을 식별하려고 시도한다. 모션 추정 모듈 (32) 은, 현재의 프레임에서의 매크로블록과 유사한 픽셀을 포함하는 기준 이미지에서의 매크로블록을 탐색함으로써, 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하려고 시도할 수도 있다. 모션 추정 모듈 (32) 은, 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하기 위해서 상이한 코딩 표준에 따른 상이한 크기의 영역을 탐색할 수도 있다. 예를 들어, 모션 추정 모듈 (32) 은, 폭이 32 개의 픽셀이며 높이가 32 개의 픽셀의 픽셀 영역 내에서 소스 매크로블록을 탐색할 수도 있는데, 여기서 현재의 매크로블록은 탐색 영역의 중심에 있다. 모션 추정 모듈 (32) 이 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하는 경우, 모션 추정 모듈 (32) 은 현재의 프레임에서의 매크로블록에 대한 모션 벡터를 계산한다. 현재의 프레임에서의 매크로블록에 대한 모션 벡터는, 식별된 소스 매크로블록과 현재의 프레임의 매크로블록 사이의 수평 위치에서의 차이를 나타내는 x 값을 특정한다. 모션 추정 모듈 (32) 이 모션 벡터를 계산하였거나 현재의 프레임에서의 각 매크로블록에 대한 소스 매크로블록을 식별할 수 없었던 이후에, 모션 추정 모듈 (32) 은 현재의 프레임에 대해 계산된 모션 벡터를 복원된 프레임 발생 모듈 (34) 로 제공할 수도 있다.
복원된 프레임 발생 모듈 (34) 은 모션 벡터 및 기준 프레임을 이용하여, 복원된 프레임을 발생시킬 수도 있다. 복원된 프레임 발생 모듈 (34) 은, 기준 프레임에서의 소스 매크로블록에 대해 현재의 프레임에서의 각 매크로블록에 대한 모션 벡터를 적용함으로써 복원된 프레임을 발생시킬 수도 있다. 사실상, 복원된 프레임 발생 모듈 (34) 은 프레임을 생성하는데, 이 프레임에서 기준 프레임의 매크로블록은 현재의 프레임의 대응하는 모션 벡터에 의해 표시된 위치로 "이동" 되었다.
잔여 프레임 발생 모듈 (36) 은, 복원된 프레임에서의 픽셀 성분값을 현재의 프레임에서의 대응하는 픽셀 성분값으로부터 감산함으로써 잔여 프레임을 발생시킬 수도 있다. 일반적으로, 잔여 프레임은, 복원된 프레임 또는 현재의 프레임 중 어느 하나보다 적은 정보를 포함한다. 잔여 프레임 발생 모듈 (36) 이 잔여 프레임을 발생시킨 이후에, 잔여 프레임 발생 모듈 (36) 은, 잔여 프레임을 공간적으로 인코딩하는 프로세스를 시작하기 위해서 이 잔여 프레임을 블록 스플리터 모듈 (22) 로 제공한다. 또한, 모션 추정 모듈 (32) 은, 모션 벡터를 압축하기 위해서 현재의 프레임에 대한 모션 벡터를 엔트로피 인코딩 모듈 (30) 로 제공할 수도 있다. 잔여 프레임이 공간적으로 인코딩되고, 엔트로피 인코딩 모듈 (30) 이 모션 벡터를 인코딩한 이후에, 스트림 출력 모듈 (38) 은 공간적으로 인코딩된 잔여 프레임 및 인코딩된 모션 벡터를 비디오 비트스트림의 일부로서 포맷팅할 수도 있다.
도 3 은 디코딩 모듈 (12) 의 예시적인 상세를 도시한 블록도이다. 디코딩 모듈 (12) 은 엔트로피 디코딩 모듈 (44), 역양자화 모듈 (46), 역방향 변환 모듈 (48), 픽셀 복원 모듈 (50), 프레임 버퍼 (51), 블록 결합기 모듈 (52), 프레임 제어 모듈 (53), 기준 프레임 저장 모듈 (54), 복원된 프레임 발생 모듈 (56), 및 예측 프레임 발생 모듈 (58) 을 포함할 수도 있다. 이들 모듈의 일부 또는 전부는 디코딩 모듈 (12) 의 소프트웨어 명령들의 서브세트를 포함할 수도 있다. 대안적으로, 이들 모듈의 일부 또는 전부는 특수-목적 하드웨어 또는 펌웨어를 포함할 수도 있다. 또다른 대안에 있어서, 이들 모듈은 소프트웨어 명령들 및 특수-목적 하드웨어 또는 펌웨어를 포함할 수도 있다.
디코딩 모듈 (12) 이 비디오 프레임을 포함한 비트스트림을 수신하는 경우, 엔트로피 디코딩 모듈 (44) 은 비디오 프레임에서의 양자화된 계수의 행렬에 대해 엔트로피 디코딩 방식을 적용할 수도 있다. 비트스트림은, 이 비트스트림에서의 양자화된 계수의 행렬에 어떤 엔트로피 디코딩 방식을 적용할지를 엔트로피 디코딩 모듈 (44) 에 나타내는 값을 포함할 수도 있다. 또한, 엔트로피 디코딩 모듈 (44) 은 동일하거나 상이한 엔트로피 디코딩 방식을 적용하여, 비디오 프레임의 모션 벡터를 디코딩할 수도 있다.
엔트로피 디코딩 모듈 (44) 이 비디오 파일에서의 양자화된 계수의 행렬에 대해 엔트로피 디코딩 방식을 적용한 이후에, 역양자화 모듈 (46) 은 양자화된 계수의 행렬 각각에서의 계수를 역양자화할 수도 있다. 코딩 표준에 종속하여, 역양자화 모듈 (46) 은 각종 방식으로 이들 계수를 역양자화할 수도 있다. 예를 들어, MPEG-4 파트 2 표준에 따르면, 역양자화 모듈 (46) 은 2 가지 상이한 방식으로 전술한 2 개의 양자화 행렬을 이용할 수도 있다. 첫번째로, 역양자화 모듈 (46) 은 이들 양자화 행렬을 이용하여, H.263 스타일 역양자화를 수행할 수도 있다. H.263 스타일 역양자화에 있어서, 역양자화 모듈 (46) 은 다음과 같이 양화자된 값
Figure 112008090971299-pct00019
으로부터 복원된 계수 을 획득하는데:
Figure 112008090971299-pct00021
Figure 112008090971299-pct00022
,
이고, 이는
Figure 112008090971299-pct00023
에 의한 단 1 회의 승산을 수반한다.
두번째로, 역양자화 모듈 (46) 은 이들 양자화 행렬을 이용하여, MPEG-1/2 스타일 역양자화를 수행할 수도 있다. MPEG-1/2 스타일 역양자화에 있어서, 역양자화 모듈 (46) 은 부가적인 가중 행렬
Figure 112008090971299-pct00024
을 이용하는데, 여기서 w 는 어떤 가중 행렬이 이용되고 있는지를 나타내고:
Figure 112008090971299-pct00025
여기서,
Figure 112008090971299-pct00026
이다.
상세히 후술하는 바와 같이, 역방향 변환 모듈 (48) 은, 역양자화된 계수 각각을 특정한 스케일 인수로 스케일링하고, 스케일링된 계수의 결과적 행렬의 DC 계수에 중심점 바이어스 항을 가산한다. DC 계수는 스케일링된 계수의 행렬의 (0,0) 위치에 있는 계수이다. 다음에, 역방향 변환 모듈 (48) 은 고정 소수점 1-차원 변환을 반복적으로 적용하여, 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환한다. 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환한 이후, 역방향 변환 모듈 (48) 은 조정된 계수의 행렬을 생성하기 위해 변환된 계수의 행 렬의 각각의 변환된 계수를 우측-시프팅시킨다. 조정된 계수의 행렬의 각각의 조정된 계수는, 인코딩된 계수의 행렬에 이상적인 2-차원 IDCT 를 적용함으로써 생성될 값들의 행렬에서의 대응하는 값에 근사한다. 또한, 역방향 변환 모듈 (48) 은 클리핑된 계수의 행렬을 생성하기 위해 조정된 계수의 행렬에서 조정된 계수 각각을 클리핑할 수도 있다. 클리핑된 계수는, 결과적 픽셀 성분값 포맷에 적합한 범위에 속하는 값들을 갖는다. 예를 들어, 클리핑된 계수는 범위 [-256, 255] 에 속하는 값을 가질 수도 있다. 역방향 변환 모듈 (48) 이 조정된 계수를 클리핑한 이후, 결과적인 클리핑 값들이 픽셀 성분값이다.
역방향 변환 모듈 (48) 이 픽셀 성분값의 행렬을 출력한 이후에, 픽셀 복원 모듈 (50) 은, 픽셀 성분값의 행렬과 비디오 프레임 내의 등가의 위치와 연관된 픽셀 성분값의 행렬을 결합함으로써 픽셀의 행렬을 발생시킬 수도 있다. 예를 들어, 픽셀 복원 모듈 (50) 은 역방향 변환 모듈 (48) 로부터 Y 픽셀 성분값의 행렬, Cb 픽셀 성분값의 행렬, 및 Cr 픽셀 성분값의 행렬을 수신할 수도 있다. 이들 3 개의 행렬 각각은 단일 8×8 픽셀 블록에 대한 픽셀 성분을 포함할 수도 있다. 픽셀 각각은 Y 픽셀 성분값, Cb 픽셀 성분값, 및 Cr 픽셀 성분값을 포함할 수도 있다. 픽셀의 행렬을 발생시킨 이후에, 픽셀 복원 모듈 (50) 은 픽셀 블록을 블록 결합기 모듈 (52) 로 제공할 수도 있다.
블록 결합기 모듈 (52) 이 픽셀 블록을 수신하는 경우, 블록 결합기 모듈 (52) 은, 블록 결합기 모듈 (52) 이 비디오 프레임에서의 픽셀 블록의 일부 또는 전부를 수신할 때까지 픽셀 블록을 버퍼링할 수도 있다. 하나 이상의 픽셀 블 록을 수신한 이후에, 블록 결합기 모듈 (52) 은 픽셀 블록을 비디오 프레임으로 결합할 수도 있고, 비디오 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다. 비디오 프레임은, 미디어 프리젠테이션 유닛 (14) 에 디스플레이될 때까지 프레임 버퍼 (51) 에 저장될 수도 있다. 또한, 블록 결합기 모듈 (52) 은 비디오 프레임을 프레임 저장 모듈 (54) 로 출력할 수도 있다. 프레임 저장 모듈 (54) 에서의 비디오 프레임은 예측 프레임 및 양방향-예측 프레임의 복원을 위해 기준 프레임으로서 이용될 수도 있다. 또한, 프레임 저장 모듈 (54) 에서의 비디오 프레임은, 예측 프레임 및 양방향-예측 프레임의 복원에 이용되는 잔여 프레임일 수도 있다.
예측 프레임 또는 양방향-예측 프레임을 복원하기 위해서, 디코딩 모듈 (12) 은 복원된 프레임 발생 모듈 (56) 을 포함한다. 복원된 프레임 발생 모듈 (56) 은 엔트로피 디코딩 모듈 (44) 로부터 디코딩된 모션 벡터를 수신한다. 또한, 복원된 프레임 발생 모듈 (56) 은 프레임 저장 모듈 (54) 로부터 현재의 프레임의 기준 프레임을 취득한다. 그런 다음, 복원된 프레임 발생 모듈 (56) 은 매크로블록을 기준 프레임에서의 그 위치로부터 모션 벡터에 의해 표시된 위치로 "이동" 시킨다. 복원된 프레임은 이와 같이 매크로블록을 이동시키는 것으로부터 기인한다. 복원된 프레임 발생 모듈 (56) 이 복원된 프레임을 발생시킨 이후에, 복원된 프레임 발생 모듈 (56) 은 복원된 프레임을 예측 프레임 발생 모듈 (58) 로 제공한다.
예측 프레임 발생 모듈 (58) 이 일시 프레임 (temporary frame) 을 수신하는 경우, 예측 프레임 발생 모듈 (58) 은 프레임 저장 모듈 (54) 로부터 현재의 프레임에 대한 잔여 프레임을 취득할 수도 있다. 잔여 프레임을 취득한 이후에, 예측 프레임 발생 모듈 (58) 은 복원된 프레임 및 잔여 프레임의 각 픽셀에서의 대응하는 컬러 성분값을 부가할 수도 있다. 복원된 비디오 프레임은 이 부가로부터 기인한다. 다음에, 예측 프레임 발생 모듈 (58) 은 미디어 프리젠테이션 유닛 (14) 상의 결과적인 디스플레이를 위해 이 복원된 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다.
도 4 는 인코딩 모듈 (8) 의 예시적인 동작을 도시한 흐름도이다. 도 4 에 설명된 동작이 순차적인 방식으로 설명되어 있지만, 이 동작이 파이프라인 방식으로 수행될 수도 있다는 것이 주목되어야 한다.
초기에, 인코딩 모듈 (8) 은 인코딩되지 않은 비디오 프레임의 시퀀스를 수신한다 (60). 예를 들어, 인코딩 모듈 (8) 은 미디어 소스 (4) 로부터 픽셀 세트의 형태로 인코딩되지 않은 프레임의 시퀀스를 수신할 수도 있다. 인코딩 모듈 (8) 이 인코딩되지 않은 프레임의 시퀀스를 수신하는 경우, 인코딩 모듈 (8) 에서의 프레임 제어 모듈 (20) 은, 인코딩되지 않은 프레임의 시퀀스에서의 현재의 프레임이 i-프레임으로서 인코딩되어야 하는지 또는 예측 프레임이나 양방향-예측 프레임으로서 인코딩되어야 하는지를 판정할 수도 있다 (62).
현재의 프레임이 i-프레임으로서 인코딩되어야 한다고 프레임 제어 모듈 (20) 이 판정하는 경우에는, 인코딩 모듈 (8) 에서의 블록 스플리터 모듈 (22) 은 현재의 프레임을 픽셀 블록으로 분할할 수도 있다 (64). 예를 들어, 인코딩 모듈 (8) 에서의 블록 스플리터 모듈 (22) 은 현재의 프레임을 2×2, 4×4, 또는 8×8 픽셀 블록으로 분할할 수도 있다.
현재의 프레임을 픽셀 블록으로 분할한 이후에, 성분 추출 모듈 (24) 은 픽셀 블록 각각에서 픽셀 성분값을 분리할 수도 있다 (66). 그 결과, 각 픽셀 블록에 대한 픽셀 성분값의 3 개의 블록, 즉 픽셀의 휘도를 나타내는 Y 값의 블록, 픽셀의 블루 색차를 나타내는 Cb 값의 블록, 및 픽셀의 레드 색차를 나타내는 Cr 값의 블록이 존재할 수도 있다.
그런 다음, 인코딩 모듈 (8) 에서의 순방향 변환 모듈 (26) 은 픽셀 성분값의 행렬 각각에 대한 스케일링된 계수의 행렬을 발생시킬 수도 있다 (68). 이들 스케일링된 계수의 행렬에서의 계수는, 각각의 픽셀 성분값의 행렬에 대해 이상적인 2-차원 순이산 코사인 변환을 이용함으로써 생성되는 값들의 근사치이다.
순방향 변환 모듈 (26) 이 픽셀 성분값의 행렬 각각에 대한 스케일링된 계수의 행렬을 발생시킨 이후에, 인코딩 모듈 (8) 에서의 양자화 모듈 (28) 은 스케일링된 계수의 행렬 각각에서의 계수를 양자화할 수도 있다 (70). 일단 양자화 모듈 (28) 이 스케일링된 계수의 행렬 각각에서의 계수를 양자화하면, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 행렬 각각에 대해 엔트로피 인코딩 프로세스를 수행할 수도 있다 (72). 예를 들어, 인코딩 모듈 (8) 은 양자화된 계수의 행렬 각각에 대해 산술 인코딩 방식 또는 허프만 인코딩 방식을 적용할 수도 있다. 엔트로피 인코딩 프로세스는 데이터를 더 압축한다. 그러나, 엔트로피 인코딩 프로세스는 정보의 손실을 야기하지는 않는다. 양자화된 계수의 행렬 각각에 대해 엔트로피 인코딩 프로세스를 수행한 이후에, 인코딩 모듈 (8) 에서의 스트림 출력 모듈 (38) 은 비디오 프레임의 시퀀스에 대한 비트스트림에 대해 양자화된 계수의 인코딩된 행렬을 부가할 수도 있다 (74). 스트림 출력 모듈 (38) 이 비트스트림에 이 인코딩된 행렬을 부가한 이후에, 프레임 제어 모듈 (20) 은, 현재의 프레임이 프레임 시퀀스의 최종 비디오 프레임인지 여부를 판정할 수도 있다 (76). 현재의 프레임이 프레임 시퀀스의 최종 프레임인 경우에는 (76 의 "예"), 인코딩 모듈 (8) 은 프레임 시퀀스의 인코딩을 완료하였다 (78). 한편, 현재의 프레임이 프레임 시퀀스의 최종 프레임이 아닌 경우에는 (76 의 "아니오"), 인코딩 모듈 (8) 은 루프백하여, 새로운 현재의 프레임이 i-프레임으로서 인코딩되어야 하는지 여부를 판정할 수도 있다 (62).
현재의 프레임이 i-프레임으로서 인코딩되지 않아야 하는 경우에는 (62 의 "아니오"), 인코딩 모듈 (8) 에서의 모션 추정 모듈 (32) 은 현재의 프레임을 매크로블록 세트로 분할할 수도 있다 (80). 다음에, 모션 추정 모듈 (32) 은 현재의 프레임에서의 매크로블록 각각에 대한 하나 이상의 기준 프레임에서의 소스 매크로블록을 식별하려고 시도할 수도 있다 (82). 그런 다음, 모션 추정 모듈 (32) 은, 모션 추정 모듈 (32) 이 소스 매크로블록을 식별할 수 있었던 현재의 프레임에서의 매크로블록 각각에 대한 모션 벡터를 계산할 수도 있다 (84). 모션 추정 모듈 (32) 이 모션 벡터를 계산한 이후에, 복원된 프레임 발생 모듈 (34) 은 이 모션 벡터를 이용하여, 기준 프레임에서의 식별된 매크로블록을 모션 벡터에 의해 표시된 위치로 "이동" 시킴으로써 복원된 프레임을 발생시킨다 (86). 그런 다음, 잔여 프레임 발생 모듈 (36) 은, 복원된 프레임에서의 픽셀 성분값을 현재의 프레임에서의 대응하는 픽셀 성분값으로부터 감산함으로써, 현재의 프레임에 대한 잔여 프레임을 발생시킬 수도 있다 (88). 잔여 프레임 발생 모듈 (36) 이 잔여 프레임을 발생시킨 이후에, 엔트로피 인코딩 모듈 (30) 은 엔트로피 인코딩 방식을 이용하여, 현재의 프레임에 대한 모션 벡터를 인코딩할 수도 있다 (90). 또한, 잔여 프레임에 대해 단계 66 내지 단계 74 를 적용함으로써, 잔여 프레임에 대해 공간적 인코딩을 적용할 수도 있다.
도 5 는 디코딩 모듈 (12) 의 예시적인 동작을 도시한 흐름도이다. 도 5 에 설명된 동작이 순차적인 방식으로 설명되어 있지만, 이 동작이 파이프라인 방식으로 수행될 수도 있다는 것이 주목되어야 한다.
초기에, 디코딩 모듈 (12) 은 인코딩된 비디오 프레임을 수신한다 (100). 인코딩된 비디오 프레임을 수신한 이후에, 디코딩 모듈 (12) 에서의 엔트로피 디코딩 모듈 (44) 은 인코딩된 프레임 내의 데이터 블록에 대해 엔트로피 디코딩 프로세스를 수행할 수도 있다 (102). 엔트로피 디코딩 모듈 (44) 은, 프레임을 인코딩하는데 이용된 엔트로피 인코딩 프로세스와 등가의 엔트로피 디코딩 프로세스를 수행할 수도 있다. 예를 들어, 인코딩 모듈 (8) 이 프레임을 인코딩하는데 허프만 인코딩을 이용한 경우, 엔트로피 디코딩 모듈 (44) 은 프레임을 디코딩하는데 허프만 디코딩을 이용한다. 프레임에서의 각 데이터 블록에 대해 엔트로피 디코딩 프로세스를 적용한 결과, 엔트로피 디코딩 모듈 (44) 은 양자화된 계수의 행렬 세트를 생성하였다.
다음에, 디코딩 모듈 (12) 에서의 역양자화 모듈 (46) 은 양자화된 계수의 행렬 각각에서의 계수를 역양자화할 수도 있다 (104). 양자화된 계수의 행렬에서의 각 계수를 역양자화한 이후에, 디코딩 모듈 (12) 에서의 역방향 변환 모듈 (48) 은 픽셀 성분값의 행렬을 발생시킨다 (106). 픽셀 성분값의 행렬 중 하나에서의 픽셀 성분값은, 이상적인 2-차원 역이산 코사인 변환을 이용하여 양자화된 계수의 행렬 중 하나를 변환함으로써 생성되는 대응하는 값의 근사치이다.
역방향 변환 모듈 (48) 이 이 계수의 행렬 각각에 대한 픽셀 성분값의 행렬을 컴퓨팅한 경우, 디코딩 모듈 (12) 에서의 픽셀 복원 모듈 (50) 은 픽셀 블록을 생성하기 위해서 픽셀 성분값의 적절한 행렬을 결합할 수도 있다 (108). 예를 들어, 디코딩 모듈 (12) 은, YCrCb 픽셀 블록을 생성하기 위해서 Y 값의 블록과 연관된 Cr 값의 블록 및 연관된 Cb 값의 블록을 결합할 수도 있다. 픽셀 복원 모듈 (50) 이 픽셀 블록을 생성한 이후에, 블록 결합기 모듈 (52) 은 픽셀 블록을 비디오 프레임으로 재결합할 수도 있다 (110).
다음에, 디코딩 모듈 (12) 에서의 프레임 제어 모듈 (53) 은, 현재의 프레임이 i-프레임인지 여부를 판정할 수도 있다 (112). 현재의 프레임이 i-프레임인 경우에는 (112 의 "예"), 블록 결합기 모듈 (52) 은 비디오 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다 (114). 한편, 현재의 프레임이 i-프레임이 아닌 경우에는 (즉, 현재의 프레임이 예측 프레임이거나 양방향-예측 프레임인 경우에는) (112 의 "아니오"), 엔트로피 디코딩 모듈 (44) 은 엔트로피 디코딩 방식을 이용하여, 현재의 프레임의 모션 벡터를 디코딩한다 (116). 다음에, 복원된 프레임 발생 모듈 (56) 은 프레임 저장 모듈 (54) 에서의 하나 이상의 기준 프레임 및 디코딩된 모션 벡터를 이용하여, 복원된 프레임을 발생시킨다 (118). 그런 다음, 예측 프레임 발생 모듈 (58) 은 블록 결합기 모듈 (52) 에 의해 발생된 프레임 및 복원된 프레임을 이용하여, 예측 프레임을 발생시킬 수도 있다 (120).
도 6 은 역방향 변환 모듈 (48) 의 예시적인 상세를 도시한 블록도이다. 도 6 의 실시예에 예시된 바와 같이, 역방향 변환 모듈 (48) 은 입력 모듈 (140) 을 포함할 수도 있다. 입력 모듈 (140) 은 역양자화 모듈 (46) 로부터 일 계수의 행렬을 수신할 수도 있다. 예를 들어, 입력 모듈 (140) 은, 계수의 행렬을 저장하는 디바이스 (2) 의 메모리 모듈에서의 위치를 표시하는 포인터를 수신할 수도 있다. 대안적으로, 입력 모듈 (140) 은, 계수의 행렬을 저장하는 내부 데이터 구조체를 포함할 수도 있다.
입력 모듈 (140) 이 계수의 행렬을 수신하는 경우, 입력 모듈 (140) 은 역방향 변환 모듈 (48) 의 스케일링 모듈 (142) 에 계수의 행렬을 제공할 수도 있다. 스케일링 모듈 (142) 은, 스케일 인수의 행렬에서 동등한 위치에 있는 스케일 인수에 의해 계수의 행렬의 스케일링 계수에 근사하는 값을 발생시키는 연산을 수행할 수도 있다. 예를 들어, 스케일링 모듈 (142) 은, 스케일 인수의 행렬에서 동등한 위치에 있는 스케일 인수에 의해 계수의 행렬의 스케일링 계수에 근사하는 값을 발생시키기 위해 승산 연산을 수행할 수도 있다. 또다른 실시예에서, 스케일링 모듈 (142) 은 하나 이상의 가산 및 시프트 연산을 수행할 수도 있다. 이들 스케일 인수 각각은 8 비트 정수값일 수도 있다. 스케일 인수 각각이 8 비트 정수인 경우, 변환 동안 생성되는 값들의 동적 범위가 감소된다.
스케일링 모듈 (142) 이 스케일링된 계수의 행렬을 발생시킨 이후, 계수 바이어싱 모듈 (144) 은 스케일링된 계수의 행렬의 DC 계수에 중심점 바이어스 값을 가산함으로써 바이어싱된 계수의 행렬을 발생시킬 수도 있다. 전술한 바와 같이, 행렬의 DC 계수는 통상적으로 행렬의 좌측 상단 위치에 있는 계수이다. 일반적으로, DC 계수는 행렬의 나머지 계수들의 평균값을 나타낸다.
16 비트 프로세서에서, DC 계수에 부호 적응형 (sign-adaptive) 바이어스 값을 가산하기 위해, 계수 바이어싱 모듈 (144) 은 공식:
Figure 112008090971299-pct00027
을 이용할 수도 있다.
이 공식에서, (1 << (P+2)) 항은 중심점 바이어스를 제공하기 위해 가산된다. P 는, 역방향 벡터 변환 모듈 (146) 에 의해 적용된 변환에서 이용되는 고정 소수점 가수 비트 (즉, 소수점의 우측의 비트) 의 수를 나타내는 상수이다. 수 2 는, 우측-시프트 모듈 (148) 이 모든 계수들을 (P+3) 만큼 우측-시프팅시킬 수도 있기 때문에 P 에 가산되며, 수 '3' 은 변환을 수행함으로써 가산되는 정밀도 비트에 기인한다. 이를 더 상세히 설명하면, 1 을 (P+2) 만큼 좌측-시프팅시킴으로써 수 x 가 발생되고 x 를 (P+3) 만큼 우측-시프팅시킴으로써 수 z 가 생성되면, z = 1/2 이다. (다시 말하면, 2P+2/2P+3 = 20/21 = 1/2). 따라서, DC 계수에 (1 << (P+2)) 을 가산하는 것은 DC 계수에 (1 << (P+3))/2 를 가산하는 것과 동일하다.
계수 바이어싱 모듈 (144) 이 바이어싱된 계수의 행렬을 발생시킨 이후, 역방향 벡터 변환 모듈 (146) 은 바이어싱된 계수의 행렬의 각각의 행 벡터에 고정 소수점 스케일링 1-차원 변환을 적용함으로써 중간 값의 행렬을 발생시킬 수도 있다. 다음에, 역방향 벡터 변환 모듈 (146) 은 중간 값의 행렬의 각각의 열 벡터에 고정 소수점 스케일링 1-차원 변환을 적용함으로써 변환된 계수의 벡터를 컴퓨팅할 수도 있다. 스케일링된 계수의 벡터에 고정 소수점 스케일링 1-차원 변환을 적용하는 예시적인 연산은 도 10B 에서 후술된다.
역방향 벡터 변환 모듈 (146) 이 변환된 계수의 행렬을 발생시킨 이후, 우측-시프트 모듈 (148) 은, 변환된 계수의 행렬의 계수 각각을, 변환 적용 동안 및 스케일링 동안 가산된 비트의 수와 동일한 위치의 수만큼 우측-시프팅시킴으로써, 조정된 계수의 행렬을 발생시킬 수도 있다. 예를 들어, 변환의 적용이 추가적인 3 비트를 생성하고 계수의 스케일링이 추가적인 10 비트를 가산하면, 우측-시프트 모듈 (108) 은 계수 각각을 13 (3+10) 위치만큼 우측-시프팅시킬 수도 있다.
우측-시프트 모듈 (148) 이 조정된 계수의 행렬을 발생시킨 이후, 클리핑 모듈 (150) 은, 계수를 픽셀 성분값의 최대 허용가능 범위로 제한하기 위해 조정된 계수의 행렬의 계수를 "클리핑"함으로써 클리핑된 계수의 행렬을 발생시킬 수도 있다. 예를 들어, 통상적인 픽셀 성분값은 -256 내지 255 까지의 범위일 수도 있다. 조정된 계수의 행렬이 270 과 같은 계수를 포함한다면, 클리핑 모듈 (150) 은 그 계수를 255 로 감소시킴으로써 그 계수를 최대 허용가능 범위로 제한할 것이 다. 클리핑 모듈 (150) 이 계수의 클리핑을 종료한 이후, 이 계수는 픽셀 성분값을 나타낼 수도 있다. 클리핑 모듈 (150) 이 행렬의 계수의 클리핑을 종료한 경우, 클리핑 모듈 (150) 은 출력 모듈 (152) 에 클리핑된 계수의 행렬을 제공할 수도 있다.
출력 모듈 (152) 이 (이하, 픽셀 성분값인) 클리핑된 계수의 행렬을 수신하는 경우, 출력 모듈 (152) 은 픽셀 성분값의 행렬을 픽셀 복원 모듈 (50) 로 출력할 수도 있다.
도 7 은 역방향 변환 모듈 (48) 의 예시적인 동작을 도시한 흐름도이다. 초기에, 입력 모듈 (140) 은 계수의 행렬을 수신한다 (170). 입력 모듈 (140) 이 계수의 행렬을 수신하는 경우, 스케일링 모듈 (142) 은 계수의 행렬에서의 각각의 값을 스케일링함으로써, 스케일링된 계수의 행렬을 발생시킬 수도 있다 (172). 예를 들어, 스케일링 모듈 (142) 은, 계수의 행렬에서의 각 계수와 스케일 인수의 행렬에서의 동등한 위치의 값을 승산하는 연산을 수행할 수도 있다.
계수의 행렬의 계수 각각을 스케일링한 이후, 계수 바이어싱 모듈 (144) 은 계수의 행렬의 DC 계수에 중심점 바이어스 값을 가산할 수도 있다 (174). 계수 바이어싱 모듈 (144) 이 바이어싱된 계수의 행렬의 DC 계수에 바이어스 값을 가산한 이후에, 역방향 벡터 변환 모듈 (146) 은, 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (176). 초기에, 행 카운터는 0 으로 설정될 수도 있다. 최대 행 카운터는, 계수의 행렬에서의 행의 수와 동등한 고정값 (static value) 일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 행을 갖는 경우, 최대 행 카운터는 8 과 동등하다.
행 카운터가 최대 행 카운터 미만인 경우 (176 의 "예"), 역방향 벡터 변환 모듈 (146) 은 행 카운터에 의해 표시된 계수의 행렬의 행 벡터에 대해 고정 소수점 스케일링 1-차원 변환을 컴퓨팅할 수도 있다 (178). 역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 행 벡터에 대해 변환을 컴퓨팅하는 경우, 역방향 벡터 변환 모듈 (146) 은 이 계수의 행 벡터에서의 오리지널 계수를 중간 계수의 벡터로 대체할 수도 있다. 역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 행 벡터에 대해 변환을 컴퓨팅한 이후에, 역방향 벡터 변환 모듈 (146) 은 행 카운터를 증분시킬 수도 있다 (180). 그런 다음, 역방향 벡터 변환 모듈 (146) 은 루프백하여, 다시 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (176).
행 카운터가 최대 행 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (176 의 "아니오"), 역방향 벡터 변환 모듈 (146) 은, 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (182). 초기에, 열 카운터는 0 으로 설정될 수도 있다. 최대 열 카운터는, 계수의 행렬에서의 열의 수와 동등한 고정값일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 열을 포함하는 경우, 최대 열 카운터는 8 과 동등하다.
열 카운터가 최대 열 카운터 미만인 경우에는 (182 의 "예"), 역방향 벡터 변환 모듈 (146) 은 열 카운터에 의해 표시된 중간 계수의 행렬의 열 벡터에 대해 1-차원 변환을 컴퓨팅할 수도 있다 (184). 역방향 벡터 변환 모듈 (146) 이 중간 계수의 행렬의 열 벡터에 대해 변환을 컴퓨팅하는 경우, 역방향 벡터 변환 모듈 (146) 은 이 열 벡터에서의 중간 계수를 변환된 계수의 벡터로 대체한다.
역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 열 벡터에 대해 변환을 컴퓨팅한 이후에, 역방향 벡터 변환 모듈 (146) 은 열 카운터를 증분시킬 수도 있다 (186). 그런 다음, 역방향 벡터 변환 모듈 (146) 은 루프백하여, 다시 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (182).
열 카운터가 최대 열 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (182 의 "아니오"), 우측-시프트 모듈 (148) 은 행렬에서의 변환된 계수 각각을 우측-시프팅시킬 수도 있다 (188). 우측-시프트 모듈 (148) 이 계수를 우측-시프팅시키는 경우, 우측-시프트 모듈 (148) 은 특정 개수의 포지션만큼 이 계수를 우측으로 시프팅시킬 수도 있다. 행렬에서의 제 2 중간 계수 각각을 우측-시프팅시킨 결과가 조정된 값의 행렬이다. 우측-시프트 모듈 (148) 이 변환된 계수 각각을 우측-시프팅시킨 이후에, 클리핑 모듈 (150) 은, 조정된 계수가 픽셀 성분값의 적절한 범위 내에 있다는 것을 보증하기 위해서 이 조정된 계수를 클리핑할 수도 있다 (190). 예를 들어, 클리핑 모듈 (150) 은, 조정된 계수가 -256 내지 255 의 범위 내에 있다는 것을 보증하기 위해서 이 조정된 계수를 클리핑할 수도 있다. 클리핑 모듈 (150) 이 조정된 계수의 클리핑을 완료하는 경우, 출력 모듈 (152) 은 그 결과적인 픽셀 성분값의 행렬을 출력할 수도 있다 (192).
도 8 은 순방향 변환 모듈 (26) 의 예시적인 상세를 도시한 블록도이다. 도 8 의 실시예에 예시된 바와 같이, 순방향 변환 모듈 (26) 은, 성분 추출 모듈 (24) 로부터 픽셀 성분값의 행렬을 수신하는 입력 모듈 (210) 을 포함한다. 입 력 모듈 (210) 이 픽셀 성분값의 행렬을 수신하는 경우, 입력 모듈 (210) 은 픽셀 성분값의 행렬을 좌측-시프트 모듈 (212) 로 제공할 수도 있다. 좌측-시프트 모듈 (212) 은, 순방향 변환을 수행하는 동안에 순방향 벡터 변환 모듈 (214) 이 이용한 값에 이용된 가수 비트의 수에서 순방향 변환을 수행함으로써 제거된 가수 비트의 수를 뺀 것만큼 픽셀 성분값의 행렬에서의 픽셀 성분값 모두를 좌측으로 시프팅시킬 수도 있다. 예를 들어, 순방향 변환을 수행하는 동안에 값에 10 가수 비트가 이용되고, 순이산 코사인 변환을 수행함으로써 3 가수 비트가 제거되는 경우에는, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 7 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 또다른 실시예에 있어서, 순방향 변환을 수행하는 동안에 값에 3 가수 비트가 이용되고, 순방향 변환을 수행함으로써 3 가수 비트가 제거되는 경우에는, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 0 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다.
좌측-시프트 모듈 (212) 이 픽셀 성분값을 시프팅시킨 이후에, 순방향 벡터 변환 모듈 (214) 은 픽셀 성분값의 행렬에서의 각 열 벡터에 대해 순방향 변환을 적용하여, 중간 값의 행렬을 생성할 수도 있다. 다음에, 순방향 벡터 변환 모듈 (214) 은 중간 값의 행렬에서의 각 행 벡터에 대해 순방향 변환을 적용하여, 변환된 계수의 행렬을 생성할 수도 있다. 순방향 벡터 변환 모듈 (214) 이 벡터에 순방향 변환을 적용하는 경우, 순방향 벡터 변환 모듈 (214) 은 아래의 도 11 에서 설명된 순방향 변환을 적용할 수도 있다. 아래의 도 11 에서 설명된 변환은 도 10A 에서 설명된 변환의 역이라는 것에 주목하라.
순방향 벡터 변환 모듈 (214) 이 변환된 계수의 행렬을 생성한 이후에, 스케일링 모듈 (216) 은 변환된 계수의 행렬에서의 각 변환된 계수에 대해 스케일 인수를 적용할 수도 있다. 스케일링 모듈 (216) 은, 역방향 변환 모듈 (48) 에서의 스케일링 모듈 (142) 에 의해 이용된 스케일 인수의 역수를 적용할 수도 있다. 예를 들어, 스케일링 모듈 (142) 이 계수를 3 위치만큼 좌측으로 시프팅시킴으로써 계수를 스케일링하면, 스케일링 모듈 (216) 은 그 변환된 값을 3 위치만큼 우측으로 시프팅시킴으로써 그 변환된 값을 스케일링할 수도 있다. 또다른 예에서, 스케일링 모듈 (142) 이 계수를 스케일 인수의 행렬의 개별 스케일 인수로 승산함으로써 계수를 스케일링하면, 스케일링 모듈 (216) 은, 그 변환된 값을 스케일 인수의 행렬의 스케일 인수로 승산하고 그 후 결과적 값을 그 크기만큼 우측으로 시프팅시킴으로써 그 변환된 값을 스케일링할 수도 있다. 라운딩 에러를 감소시키기 위해, 스케일링 모듈 (216) 은 그 변환된 값을 스케일 인수로 승산한 이후 그 변환된 값 각각에 중심점 바이어스 값을 가산할 수도 있다. 예를 들어, 스케일링 모듈 (216) 은 스케일링된 계수의 행렬을 발생시키기 위해 공식:
Figure 112008090971299-pct00028
을 이용할 수도 있으며, 여기서, v = 0..7, u = 0..7 이고;
Figure 112008090971299-pct00029
는 스케일 인수의 행렬의 엔트리이고, F 는 스케일링된 계수의 행렬이고, F' 는 변환된 계수의 행렬이다.
스케일링 모듈 (216) 이 스케일링된 계수의 행렬을 발생시킨 이후에, 출력 모듈 (218) 은 이 계수의 행렬을 양자화 모듈 (28) 로 출력할 수도 있다.
도 9 는 순방향 변환 모듈 (26) 의 예시적인 동작을 도시한 흐름도이다. 초기에, 입력 모듈 (210) 은 픽셀 성분값의 행렬을 수신한다 (230). 입력 모듈 (210) 이 픽셀 성분값의 행렬을 수신하는 경우, 좌측-시프트 모듈 (212) 은 픽셀 성분값의 행렬에서의 각각의 값을 업시프팅시킴으로써 조정된 계수의 행렬을 발생시킬 수도 있다 (232). 예를 들어, 좌측-시프트 모듈 (212) 은 계수 모두를 10 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 이 실시예에 있어서, 순방향 벡터 변환 모듈 (214) 이, 수가 분수 부분에서 10 비트를 이용하여 인코딩되는 고정 소수점 연산을 이용할 수도 있기 때문에, 좌측-시프트 모듈 (212) 은 계수 모두를 10 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 따라서, 계수를 10 개의 포지션만큼 좌측으로 시프팅시킴으로써, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 10 가수 비트를 갖는 고정 소수점 수로 효과적으로 변환한다.
조정된 계수의 행렬에서의 각 픽셀 성분값을 좌측-시프팅시킨 이후에, 순방향 벡터 변환 모듈 (214) 은, 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (234). 초기에, 열 카운터는 0 으로 설정될 수도 있다. 최대 열 카운터는, 조정된 계수의 행렬에서의 열의 수와 동등한 고정값일 수도 있다. 예를 들어, 조정된 계수의 행렬이 8 개의 열을 갖는 경우, 최대 열 카운터는 8 과 동등하다.
열 카운터가 최대 열 카운터 미만인 경우에는 (234 의 "예"), 순방향 벡터 변환 모듈 (214) 은 열 카운터에 의해 표시된 열 벡터에 대해 1-차원 순방향 변환을 컴퓨팅할 수도 있다 (236). 순방향 벡터 변환 모듈 (214) 이 조정된 계수의 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅하는 경우, 순방향 벡터 변환 모듈 (214) 은 열 벡터에서의 오리지널 조정된 계수를 중간 계수로 대체한다. 순방향 벡터 변환 모듈 (214) 이 조정된 계수의 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅한 이후에, 순방향 벡터 변환 모듈 (214) 은 열 카운터를 증분시킬 수도 있다 (238). 그런 다음, 순방향 벡터 변환 모듈 (214) 은 루프백하여, 다시 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (234).
열 카운터가 최대 열 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (234 의 "아니오"), 순방향 벡터 변환 모듈 (214) 은, 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (240). 초기에, 행 카운터는 0 으로 설정될 수도 있다. 최대 행 카운터는, 계수의 행렬에서의 행 벡터의 수와 동등한 고정값일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 행을 포함하는 경우, 최대 행 카운터는 8 과 동등하다.
행 카운터가 최대 행 카운터 미만인 경우에는 (240 의 "예"), 순방향 벡터 변환 모듈 (214) 은 행 카운터에 의해 표시된 행 벡터에 대해 1-차원 이산 코사인 변환을 컴퓨팅할 수도 있다 (242). 순방향 벡터 변환 모듈 (214) 이 이미 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅했기 때문에, 이하 계수의 행렬은 중간 계수를 포함한다. 순방향 벡터 변환 모듈 (214) 이 중간 계수의 행 벡터에 대해 순방향 변환을 컴퓨팅하는 경우, 순방향 벡터 변환 모듈 (214) 은 행 벡터에서의 중간 계수를 변환된 계수로 대체한다.
순방향 벡터 변환 모듈 (214) 이 계수의 행렬의 행 벡터에 대해 이산 코사인 변환을 컴퓨팅한 이후에, 순방향 벡터 변환 모듈 (214) 은 행 카운터를 증분시킬 수도 있다 (244). 그런 다음, 순방향 벡터 변환 모듈 (214) 은 루프백하여, 다시 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (240).
행 카운터가 최대 행 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (240 의 "아니오"), 스케일링 모듈 (216) 은 변환된 계수의 행렬에서의 각 변환된 계수를 스케일링할 수도 있다 (246). 스케일링 모듈 (216) 이 계수를 스케일링한 경우, 스케일링 모듈 (216) 은 계수를 특정 수의 위치만큼 우측으로 시프팅할 수도 있다. 스케일링 모듈 (216) 이 변환된 계수 각각을 스케일링한 이후, 출력 모듈 (218) 은 스케일링된 계수의 결과적 행렬을 출력할 수도 있다 (248).
도 10A 는 예시적인 1-차원 변환 (260) 을 도시하는 흐름도이다. 도 10A 에서, 값 X0, X1, X2, X3, X4, X5, X6 및 X7 은 입력 계수를 나타내고, 값 x0, x1, x2, x3, x4, x5, x6 및 x7 은 변환 (260) 의 출력 값을 나타낸다. "+" 부호를 포위한 원 이후의 라인과 연관된 값은 그 원으로 향하는 화살표와 연관된 값들의 가산의 결과이다. "x" 부호를 포위한 원 이후의 라인과 연관된 값은 그 원 다음에 위치된 계수와 그 원을 관통하는 라인과 연관된 값과의 승산의 결과이다. 화살표 다음의 "-" 부호는 그 화살표와 연관된 값의 반대부호 (negation) 를 나타낸다. 예를 들어, 값 "10" 이 "-" 부호 이전의 화살표와 연관되면, 값 "-10" 이 그 "-" 부호 이후의 화살표와 연관된다.
변환 (260) 은 7 개의 고유의 무리수 인수에 의한 14 개의 승산을 이용한다. 편이를 위해, 본 명세서는 이들 고유의 무리수 인수를 α, β,
Figure 112008090971299-pct00030
, δ, ε,
Figure 112008090971299-pct00031
및 η 로서 지칭한다. 변환 (260) 에서,
Figure 112008090971299-pct00032
,
Figure 112008090971299-pct00033
,
Figure 112008090971299-pct00034
,
Figure 112008090971299-pct00035
,
Figure 112008090971299-pct00036
,
Figure 112008090971299-pct00037
Figure 112008090971299-pct00038
이다. α, β,
Figure 112008090971299-pct00039
, δ, ε,
Figure 112008090971299-pct00040
및 η 는 모두 무리수임을 유의해야 한다. α, β,
Figure 112008090971299-pct00041
, δ, ε,
Figure 112008090971299-pct00042
및 η 가 무리수이기 때문에, α, β,
Figure 112008090971299-pct00043
, δ, ε,
Figure 112008090971299-pct00044
및 η 의 허용가능한 정확한 표현은 비교적 큰 수의 비트를 요구할 수도 있다. 그 결과, 변환 (260) 을 컴퓨팅하기 위해 비교적 작은 수의 가수 비트를 갖는 고정 소수점 수를 이용하는 경우, 종래의 코딩 표준의 요건에의 부합이 가능하지 않을 수도 있다. 또한, α, β,
Figure 112008090971299-pct00045
, δ, ε,
Figure 112008090971299-pct00046
및 η 가 무리수이기 때문에, α, β,
Figure 112008090971299-pct00047
, δ, ε,
Figure 112008090971299-pct00048
및 η 에 의한 승산을 시프트 연산, 가산 연산 및/또는 감산 연산의 시퀀스로 감소시키는 것은 가능하지 않을 수도 있다.
도 10B 는 예시적인 1-차원 스케일링 변환 (270) 을 도시하는 흐름도이다. 변환 (270) 은 변환 (260) 의 스케일링 버젼이다. 변환 (270) 에서, 값 η 는 변환 (260) 으로부터 인수분해되고, 값
Figure 112008090971299-pct00049
는 변환 (260) 의 값
Figure 112008090971299-pct00050
, δ, ε 및
Figure 112008090971299-pct00051
로부터 인수분해되고, 값
Figure 112008090971299-pct00052
는 변환 (260) 의 값 α 및 β 로부터 인수분해된다.
Figure 112008090971299-pct00053
Figure 112008090971299-pct00054
이 이 계수들로부터 인수분해되는 경우, 벡터:
Figure 112008090971299-pct00055
는 변환 (270) 이전에 X0 내지 X7 에 승산되는 값을 나타낸다.
α, β,
Figure 112008090971299-pct00056
, δ, ε,
Figure 112008090971299-pct00057
및 η 값은,
Figure 112008090971299-pct00058
Figure 112008090971299-pct00059
이 α, β,
Figure 112008090971299-pct00060
, δ, ε,
Figure 112008090971299-pct00061
및 η 로부터 인수분해되는 경우 변화할 수도 있다. 편이를 위해,
Figure 112008090971299-pct00062
Figure 112008090971299-pct00063
가 인수화된 이후의 값 α, β,
Figure 112008090971299-pct00064
, δ, ε 및
Figure 112008090971299-pct00065
를 α', β',
Figure 112008090971299-pct00066
', δ', ε' 및
Figure 112008090971299-pct00067
' 로 지칭한다. 예를 들어,
Figure 112008090971299-pct00068
= 1.352708058 이고
Figure 112008090971299-pct00069
= 0.959700091 이면, α'
Figure 112008090971299-pct00070
133/256, β'
Figure 112008090971299-pct00071
321/256,
Figure 112008090971299-pct00072
'
Figure 112008090971299-pct00073
679/512, δ'
Figure 112008090971299-pct00074
135/512, ε'
Figure 112008090971299-pct00075
4605/4096 및
Figure 112008090971299-pct00076
'
Figure 112008090971299-pct00077
1539/2048 이다.
값 α', β',
Figure 112008090971299-pct00078
', δ', ε' 및
Figure 112008090971299-pct00079
' 는, 이 값들이 대응 인수
Figure 112008090971299-pct00080
Figure 112008090971299-pct00081
에 의한 α, β,
Figure 112008090971299-pct00082
, δ, ε 및
Figure 112008090971299-pct00083
의 승산에 근사하도록 다양한 방식으로 선택될 수도 있다. 일반적으로, 인수
Figure 112008090971299-pct00084
Figure 112008090971299-pct00085
및 값 α', β',
Figure 112008090971299-pct00086
', δ', ε'
Figure 112008090971299-pct00087
' 는 변환 (270) 의 전반적 설계를 변경하지 않고 선택될 수도 있다. 이 인수의 양호한 값을 발견하는 것은, 서로 다른 복잡성/정확성의 트레이트오프를 갖는 다수의 솔루션을 생성할 수도 있는 복잡한 최적화의 문제를 나타낼 수도 있다. 예를 들어, α', β',
Figure 112008090971299-pct00088
', δ', ε' 및
Figure 112008090971299-pct00089
' 의 몇몇 값에 의한 승산은 다른 승산보다 계산하기에 더 편리할 수도 있다. 또한,
Figure 112008090971299-pct00090
Figure 112008090971299-pct00091
의 값은, 이 값들이 스케일 인수의 베이스로서 기능하기 때문에 중요할 수도 있으며, 몇몇 스케일 인수는 다른 인수들보다 계산하기에 더 편리할 수도 있다. 예를 들어, α', β',
Figure 112008090971299-pct00092
', δ', ε' 및
Figure 112008090971299-pct00093
' 에 대한 제 1 세트의 값에 의한 승산은, α', β',
Figure 112008090971299-pct00094
', δ', ε' 및
Figure 112008090971299-pct00095
' 에 대한 다른 세트의 값에 대한 일련의 가산 연산 및 시프트 연산보다 더 짧은 일련의 가산 연산 및 시프트 연산에 의해 근사될 수도 있다. 예를 들어,
Figure 112008090971299-pct00096
= 1.352708058 및
Figure 112008090971299-pct00097
= 0.959700091 이면,
Figure 112008090971299-pct00098
' 는 679/512 로 근사될 수도 있다. 679/512 에 의한 승산에 근사하기 위해 3 개의 시프트 연산 및 3 개의 가산 연산이 요구될 수도 있다. 또한,
Figure 112008090971299-pct00099
= 1.1810842 및
Figure 112008090971299-pct00100
= 0.801251953 이면,
Figure 112008090971299-pct00101
' 는 18981/16384 로 근사될 수도 있다. 18981/16384 에 의한 승산에 근사하기 위해 4 개의 시프트 연산 및 4 개의 가산 연산이 요구될 수도 있다.
스케일 인수의 행렬은 벡터
Figure 112008090971299-pct00102
의 트랜스포즈를 동일한 벡터로 승산함으로써 컴퓨팅될 수도 있다. 그 결과는 값:
Figure 112008090971299-pct00103
의 8×8 행렬이 된다.
이 스케일 인수의 행렬에서,
Figure 112008090971299-pct00104
,
Figure 112008090971299-pct00105
,
Figure 112008090971299-pct00106
,
Figure 112008090971299-pct00107
,
Figure 112008090971299-pct00108
,
Figure 112008090971299-pct00109
,
Figure 112008090971299-pct00110
,
Figure 112008090971299-pct00111
,
Figure 112008090971299-pct00112
Figure 112008090971299-pct00113
이다.
스케일 인수는 변환의 적용 이전에 계수들과 승산되기 때문에, 스케일 인수 A, B, C, D, E, F, G, H, I 및 J 는 P 위치만큼 좌측-시프팅될 수도 있고, 여기서 P 는 변환에 이용되는 고정 소수점 가수 비트 (즉, 소수점의 우측의 비트) 의 수를 지칭하는 상수이다. 이것은 원래의 계수를, P 개의 가수 비트를 가진 고정 소수점 수로 효율적으로 변환한다. 즉, 행렬의 계수 각각은 2P 로 승산된다. 그 후, 결과적 값은 정수값으로 근사될 수도 있다. 따라서, 전술한 행렬의 A, B, C, D, E, F, G, H, I 및 J 는
Figure 112008090971299-pct00114
,
Figure 112008090971299-pct00115
,
Figure 112008090971299-pct00116
,
Figure 112008090971299-pct00117
,
Figure 112008090971299-pct00118
,
Figure 112008090971299-pct00119
,
Figure 112008090971299-pct00120
,
Figure 112008090971299-pct00121
,
Figure 112008090971299-pct00122
Figure 112008090971299-pct00123
이다.
예를 들어,
Figure 112008090971299-pct00124
= 1.352708058 로 하고,
Figure 112008090971299-pct00125
= 0.959700091 로 하고, P = 10 이라 하자.
Figure 112008090971299-pct00126
,
Figure 112008090971299-pct00127
및 P 가 주어지면, 스케일 인수 A' = 1024, B' = 757, C' = 1067, D' = 1071, E' = 560, F' = 789, G' = 792, H = 1112, I' = 1116 및 J' = 1120 가 선택될 수도 있다. 따라서, 스케일 인수의 행렬은:
Figure 112008090971299-pct00128
일 수도 있다.
다음의 표들은 변환 (270) 에서 이용될 수도 있는 예시적인 스케일 인수 및 α', β',
Figure 112008090971299-pct00129
', δ', ε' 및
Figure 112008090971299-pct00130
' 의 값을 요약한다.
Figure 112008090971299-pct00131
Figure 112008090971299-pct00132
Figure 112008090971299-pct00133
IDCT 모듈 (48) 이 상기 표들에 제공된 스케일 인수, 상수값 및 알고리즘을 어떻게 이용할 수도 있는지를 설명하기 위해, 상기 표 3 을 고려한다. 표 3 의 값들을 이용하여 역이산 코사인 변환을 적용하기 위해서, IDCT 모듈 (48) 의 입력 모듈 (140) 은 계수의 8×8 행렬을 수신할 수도 있다. 다음으로, 스케일링 모듈 (142) 은, 행렬의 [0,0] 위치에 있는 계수를 인수 A 로 스케일링하고; 행렬의 [0,1] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [0,2] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [0,3] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [0,4] 위치에 있는 계수를 인수 A 로 스케일링하고; 행렬의 [0,5] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [0,6] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [0,7] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [1,0] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [1,1] 위치에 있는 계수를 인수 E 로 스케일링하고; 행렬의 [1,2] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [1,3] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [1,4] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [1,5] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [1,6] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [1,7] 위치에 있는 계수를 인수 E 로 스케일링하고; 행렬의 [2,0] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [2,1] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [2,2] 위치에 있는 계수를 인수 H 로 스케일링하고; 행렬의 [2,3] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [2,4] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [2,5] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [2,6] 위치에 있는 계수를 인수 H 로 스케일링하고; 행렬의 [2,7] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [3,0] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [3,1] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [3,2] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [3,3] 위치에 있는 계수를 인수 J 로 스케일링하고; 행렬의 [3,4] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [3,5] 위치에 있는 계수를 인수 J 로 스케일링하고; 행렬의 [3,6] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [3,7] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [4,0] 위치에 있는 계수를 인수 A 로 스케일링하고; 행렬의 [4,1] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [4,2] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [4,3] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [4,4] 위치에 있는 계수를 인수 A 로 스케일링하고; 행렬의 [4,5] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [4,6] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [4,7] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [5,0] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [5,1] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [5,2] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [5,3] 위치에 있는 계수를 인수 J 로 스케일링하고; 행렬의 [5,4] 위치에 있는 계수를 인수 D 로 스케일링하고; 행렬의 [5,5] 위치에 있는 계수를 인수 J 로 스케일링하고; 행렬의 [5,6] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [5,7] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [6,0] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [6,1] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [6,2] 위치에 있는 계수를 인수 H 로 스케일링하고; 행렬의 [6,3] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [6,4] 위치에 있는 계수를 인수 C 로 스케일링하고; 행렬의 [6,5] 위치에 있는 계수를 인수 I 로 스케일링하고; 행렬의 [6,6] 위치에 있는 계수를 인수 H 로 스케일링하고; 행렬의 [6,7] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [7,0] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [7,1] 위치에 있는 계수를 인수 E 로 스케일링하고; 행렬의 [7,2] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [7,3] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [7,4] 위치에 있는 계수를 인수 B 로 스케일링하고; 행렬의 [7,5] 위치에 있는 계수를 인수 G 로 스케일링하고; 행렬의 [7,6] 위치에 있는 계수를 인수 F 로 스케일링하고; 행렬의 [7,7] 위치에 있는 계수를 인수 E 로 스케일링한다. 스케일링 모듈 (142) 이 이 계수들을 스케일링하는 경우, 스케일링 모듈 (142) 은 값 A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 를 이용하고, 그 승산은 표 3 에 특정된 바와 같이 승산기 없는 알고리즘으로 컴퓨팅된다. 이 스케일링된 계수는 스케일링된 계수의 행렬을 구성한다.
스케일링 모듈 (142) 이 계수를 스케일링한 이후, 역방향 벡터 변환 모듈 (146) 은 스케일링된 계수의 행렬의 각각의 행 벡터에 변환을 적용하여, 중간 계수의 행렬을 생성할 수도 있고, 중간 계수의 행렬의 각각의 열 벡터에 변환을 적용하여, 변환된 계수의 행렬을 생성할 수도 있다. 역방향 벡터 변환 모듈 (146) 은, x0 과 x4 를 가산함으로써 값 x0' 을 계산하고; x0 과 -x4 를 가산함으로써 값 x4' 을 계산하고; x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하고; x6 을 값 β 로 승산함으로써 값 (x6*β) 를 계산하고; x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하고; x6 을 값 α 로 승산함으로써 값 (x6*α) 를 계산하고; (x2*α) 와 -(x6*β) 를 가산함으로써 값 x2' 을 계산하고; (x6*α) 와 (x2*β) 를 가산함으로써 값 x6' 을 계산하고; x0' 과 x6' 을 가산함으로써 값 x0'' 을 계산하고; x4' 와 x2' 를 가산함으로써 값 x4'' 를 계산하고; x4' 와 -x2' 를 가산함으로써 값 x2'' 를 계산하고; x0' 와 -x6' 를 가산함으로써 값 x6'' 을 계산하고; x1 과 -x7 를 가산함으로써 값 x7' 을 계산하고; x1 과 x7 을 가산함으로써 값 x1' 을 계산하고; x3
Figure 112008090971299-pct00134
를 승산함으로써 값 x3' 을 계산하고; x5
Figure 112008090971299-pct00135
를 승산함으로써 값 x5' 를 계산하고; x7' 과 x5' 를 가산함으로써 값 x7'' 을 계산하고; x1' 과 -x3' 을 가산함으로써 값 x3'' 을 계산하고; x7' 과 -x5' 를 가산함으로써 값 x5'' 를 계산하고; x3' 과 x1' 을 가산함으로써 값 x1'' 을 계산하고; x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하고; x7'' 과 값
Figure 112008090971299-pct00136
를 승산함으로써 값 (x7''*
Figure 112008090971299-pct00137
) 를 계산하고; x3'' 과 값
Figure 112008090971299-pct00138
를 승산함으로써 값 (x3''*
Figure 112008090971299-pct00139
) 를 계산하고; x3'' 과 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하고; x5'' 와 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하고; x5'' 와 값
Figure 112008090971299-pct00140
를 승산함으로써 값 (x5''*
Figure 112008090971299-pct00141
) 를 계산하고; x1'' 과 값
Figure 112008090971299-pct00142
를 승산함으로써 값 (x1''*
Figure 112008090971299-pct00143
) 를 계산하고; x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하고; (x7''*ε) 과 -(x1''*
Figure 112008090971299-pct00144
) 를 가산함으로써 값 x7''' 을 계산하고; (x3''*
Figure 112008090971299-pct00145
) 와 -(x5''*δ) 를 가산함으로써 값 x3''' 을 계산하고; (x5''*
Figure 112008090971299-pct00146
) 와 (x3''*δ) 를 가산함으로써 값 x5''' 을 계산하고; (x1''*ε) 과 (x7''*
Figure 112008090971299-pct00147
) 를 가산함으로써 값 x1''' 을 계산하고; x7''' 과 x0'' 을 가산함으로써 값 X0 을 계산하고; x4'' 와 x5''' 를 가산함으로써 값 X1 을 계산하고; x2'' 과 x3''' 을 가산함으로써 값 X2 를 계산하고; x6'' 과 x7''' 을 가산함으로써 값 X3 을 계산하고; x6'' 과 -x1''' 을 가산함으로써 값 X4 를 계산하고; x2'' 과 -x3''' 을 가산함으로써 값 X5 를 계산하고; x4'' 과 -x5''' 를 가산함으로써 값 X6 을 계산하고; x0'' 과 -x1''' 을 가산함으로써 값 X7 을 계산함으로써 행 벡터 또는 열 벡터에 변환을 적용할 수도 있으며, 여기서, x0, x1, x2, x3, x4, x5, x6, x7 은 행 벡터 또는 열 벡터의 계수들이고, X1, X2, X3, X4, X5, X6 및 X7 은 상기 변환의 출력 값들이다. 이 계산을 수행하는 경우, 역방향 벡터 변환 모듈 (146) 은 분수값 α = 41/128, β = 99/128,
Figure 112008090971299-pct00148
= 113/128, δ = 719/4096, ε = 1533/2048 및
Figure 112008090971299-pct00149
= 1/2 를 이용하며, 그 승산은 표 3 에 특정된 바와 같이 승산기 없는 알고리즘으로 컴퓨팅된다.
다음의 코드는 변환 (270) 의 예시적인 C 언어 구현을 포함한다.
Figure 112008090971299-pct00150
Figure 112008090971299-pct00151
Figure 112008090971299-pct00152
Figure 112008090971299-pct00153
Figure 112008090971299-pct00154
Figure 112008090971299-pct00155
Figure 112008090971299-pct00156
Figure 112008090971299-pct00157
Figure 112008090971299-pct00158
Figure 112008090971299-pct00159
Figure 112008090971299-pct00160
Figure 112008090971299-pct00161
Figure 112008090971299-pct00162
Figure 112008090971299-pct00163
Figure 112008090971299-pct00164
Figure 112008090971299-pct00165
Figure 112008090971299-pct00166
Figure 112008090971299-pct00167
Figure 112008090971299-pct00168
Figure 112008090971299-pct00169
Figure 112008090971299-pct00170
Figure 112008090971299-pct00171
Figure 112008090971299-pct00172
Figure 112008090971299-pct00173
Figure 112008090971299-pct00174
Figure 112008090971299-pct00175
Figure 112008090971299-pct00176
Figure 112008090971299-pct00177
Figure 112008090971299-pct00178
Figure 112008090971299-pct00179
Figure 112008090971299-pct00180
도 11 은 순방향 변환 모듈 (214) 에 의해 이용되는 예시적인 스케일링 변환 (280) 을 도시하는 흐름도이다. 도 11 에서, 값 X0, X1, X2, X3, X4, X5, X6 및 X7 은 출력 계수를 나타내고, 값 x0, x1, x2, x3, x4, x5, x6 및 x7 은 입력 값을 나타낸다. "+" 심볼을 포위한 원 이후의 라인에 연관된 값은 그 원으로 향하는 화살표와 연관된 값들의 가산 결과이다. "x" 심볼을 포위한 원 이후의 라인과 연관된 값은 그 원 다음에 위치되는 계수와 그 원을 관통하는 라인과 연관되는 값과의 승산 결과이다. 화살표 이후의 심볼 "-" 는 그 화살표와 연관된 값의 반대부호를 나타낸다. 예를 들어, 값 "10" 이 "-" 부호 이전의 화살표와 연관되면, 값 "-10" 이 그 "-" 부호 이후의 화살표와 연관된다. 또한, 네거티브 계수 및 감산을 이용하여 라운드 에러를 감소시키기 위한 전술한 기술들은 알고리즘 (190) 에 이용될 수도 있음을 유의해야 한다.
변환 (280) 에서, 출력 값 X0 내지 X7 은 각각 인수 1,
Figure 112008090971299-pct00181
,
Figure 112008090971299-pct00182
,
Figure 112008090971299-pct00183
,
Figure 112008090971299-pct00184
,
Figure 112008090971299-pct00185
Figure 112008090971299-pct00186
에 의해 승산된다. 이 인수들은 변환 (270) 에서 α', β',
Figure 112008090971299-pct00187
', δ', ε' 및
Figure 112008090971299-pct00188
' 로부터 인수분해된 값들의 역수임을 유의하라.
본 명세서에 기재된 기술은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 모듈 또는 컴포넌트로서 기재된 임의의 특징은 집적 논리 디바이스에 함께 또는 상호운용가능한 이산 논리 디바이스로서 개별적으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이들 기술은, 실행시, 전술한 방법 중 하나 이상을 수행하는 명령들을 포함한 컴퓨터 판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 매체는, 포장재를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 매체는, SDRAM (Synchronous Dynamic RAM) 과 같은 RAM (Random Access Memory), ROM (Read Only Memory), NVRAM (Non-Volatile RAM), EEPROM (Electrically Erasable Programmable ROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수도 있다. 부가적으로 또는 대안적으로, 이들 기술은, 명령들 또는 데이터 구조체의 형태로 코드를 반송 또는 통신하며, 컴퓨터에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
코드는, 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), 필드 프로그래머블 논리 어레이 (FPGA), 또는 다른 등가의 집적 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수도 있다. 따라서, 본 명세서에 이용된 바와 같은 "프로세서" 라는 용어는, 임의의 전술한 구조체 또는 본 명세서에 기재된 기술의 구현에 적합한 임의의 다른 구조체를 언급할 수도 있다. 또한, 몇몇 양태에 있어서, 본 명세서에 기재된 기능성은, 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈이나 하드웨어 모듈 내에 제공될 수도 있고, 또는 결합된 비디오 인코더-디코더 (CODEC) 에 통합될 수도 있다.
본 발명의 각종 실시형태가 전술되었다. 이들 실시형태 및 다른 실시형태는 다음의 특허청구범위의 범위 내에 있다.

Claims (66)

  1. 역이산 코사인 변환을 계산하는 방법으로서,
    스케일링된 계수의 행렬을 생성하기 위해, 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하는 단계로서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 인, 상기 스케일링하는 단계;
    상기 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 단계;
    조정된 계수의 행렬을 생성하기 위해, 상기 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 단계; 및
    픽셀들의 8×8 블록을 디스플레이하는 단계로서, 상기 픽셀들의 8×8 블록의 각각의 픽셀은 상기 조정된 계수의 행렬의 조정된 계수에 기초하는 픽셀 성분값을 포함하는, 상기 디스플레이하는 단계를 포함하며,
    상기 조정된 계수의 행렬의 각각의 조정된 계수는, 상기 인코딩된 계수의 8×8 행렬에 이상적인 2-차원 역이산 코사인 변환 ("IDCT") 을 적용함으로써 생성될 값들의 행렬의 대응 값에 근사하는, 역이산 코사인 변환 계산 방법.
  2. 제 1 항에 있어서,
    상기 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 단계는,
    중간 계수의 행렬을 생성하기 위해, 상기 스케일링된 계수의 행렬의 각각의 행 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하는 단계; 및
    변환된 계수의 행렬을 생성하기 위해, 상기 중간 계수의 행렬의 각각의 열 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  3. 제 1 항에 있어서,
    상기 픽셀들의 8×8 블록을 디스플레이하는 단계는, 상기 픽셀들의 8×8 블록을 비디오 시퀀스 내의 비디오 프레임의 일부로서 디스플레이하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  4. 제 1 항에 있어서,
    상기 픽셀들의 8×8 블록을 디스플레이하는 단계는, 상기 픽셀들의 8×8 블록을 스틸 이미지의 일부로서 디스플레이하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  5. 제 1 항에 있어서,
    상기 계수의 8×8 행렬의 계수들을 스케일링하는 단계는,
    상기 인코딩된 계수의 8×8 행렬의 [0,0] 위치에 있는 계수를 인수 A 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,1] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,2] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,3] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,4] 위치에 있는 계수를 인수 A 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,5] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,6] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [0,7] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,0] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,1] 위치에 있는 계수를 인수 E 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,2] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,3] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,4] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,5] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,6] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [1,7] 위치에 있는 계수를 인수 E 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,0] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,1] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,2] 위치에 있는 계수를 인수 H 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,3] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,4] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,5] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,6] 위치에 있는 계수를 인수 H 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [2,7] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,0] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,1] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,2] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,3] 위치에 있는 계수를 인수 J 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,4] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,5] 위치에 있는 계수를 인수 J 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,6] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [3,7] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,0] 위치에 있는 계수를 인수 A 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,1] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,2] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,3] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,4] 위치에 있는 계수를 인수 A 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,5] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,6] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [4,7] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,0] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,1] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,2] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,3] 위치에 있는 계수를 인수 J 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,4] 위치에 있는 계수를 인수 D 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,5] 위치에 있는 계수를 인수 J 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,6] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [5,7] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,0] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,1] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,2] 위치에 있는 계수를 인수 H 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,3] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,4] 위치에 있는 계수를 인수 C 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,5] 위치에 있는 계수를 인수 I 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,6] 위치에 있는 계수를 인수 H 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [6,7] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,0] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,1] 위치에 있는 계수를 인수 E 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,2] 위치에 있는 계수를 인수 F 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,3] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,4] 위치에 있는 계수를 인수 B 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,5] 위치에 있는 계수를 인수 G 로 스케일링하는 단계;
    상기 인코딩된 계수의 8×8 행렬의 [7,6] 위치에 있는 계수를 인수 F 로 스케일링하는 단계; 및
    상기 인코딩된 계수의 8×8 행렬의 [7,7] 위치에 있는 계수를 인수 E 로 스케일링하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  6. 제 5 항에 있어서,
    상기 변환을 행 벡터 또는 열 벡터에 적용하는 단계는,
    x0 과 x4 를 가산함으로써 값 x0' 을 계산하는 단계;
    x0 과 -x4 를 가산함으로써 값 x4' 을 계산하는 단계;
    x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하는 단계;
    x6 을 값 β 로 승산함으로써 값 (x6*β) 를 계산하는 단계;
    x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하는 단계;
    x6 을 값 α 로 승산함으로써 값 (x6*α) 를 계산하는 단계;
    (x2*α) 와 -(x6*β) 를 가산함으로써 값 x2' 을 계산하는 단계;
    (x6*α) 와 (x2*β) 를 가산함으로써 값 x6' 을 계산하는 단계;
    x0' 과 x6' 을 가산함으로써 값 x0'' 을 계산하는 단계;
    x4' 와 x2' 를 가산함으로써 값 x4'' 를 계산하는 단계;
    x4' 와 -x2' 를 가산함으로써 값 x2'' 를 계산하는 단계;
    x0' 와 -x6' 를 가산함으로써 값 x6'' 을 계산하는 단계;
    x1 과 -x7 를 가산함으로써 값 x7' 을 계산하는 단계;
    x1 과 x7 을 가산함으로써 값 x1' 을 계산하는 단계;
    x3
    Figure 112010015451933-pct00189
    를 승산함으로써 값 x3' 을 계산하는 단계;
    x5
    Figure 112010015451933-pct00190
    를 승산함으로써 값 x5' 를 계산하는 단계;
    x7' 과 x5' 를 가산함으로써 값 x7'' 을 계산하는 단계;
    x1' 과 -x3' 을 가산함으로써 값 x3'' 을 계산하는 단계;
    x7' 과 -x5' 를 가산함으로써 값 x5'' 를 계산하는 단계;
    x3' 과 x1' 을 가산함으로써 값 x1'' 을 계산하는 단계;
    x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하는 단계;
    x7'' 과 값
    Figure 112010015451933-pct00191
    를 승산함으로써 값 (x7''*
    Figure 112010015451933-pct00192
    ) 를 계산하는 단계;
    x3'' 과 값
    Figure 112010015451933-pct00193
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00194
    ) 를 계산하는 단계;
    x3'' 과 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하는 단계;
    x5'' 와 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하는 단계;
    x5'' 와 값
    Figure 112010015451933-pct00195
    를 승산함으로써 값 (x5''*
    Figure 112010015451933-pct00196
    ) 를 계산하는 단계;
    x1'' 과 값
    Figure 112010015451933-pct00197
    를 승산함으로써 값 (x1''*
    Figure 112010015451933-pct00198
    ) 를 계산하는 단계;
    x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하는 단계;
    (x7''*ε) 과 -(x1''*
    Figure 112010015451933-pct00199
    ) 를 가산함으로써 값 x7''' 을 계산하는 단계;
    (x3''*
    Figure 112010015451933-pct00200
    ) 와 -(x5''*δ) 를 가산함으로써 값 x3''' 을 계산하는 단계;
    (x5''*
    Figure 112010015451933-pct00201
    ) 와 (x3''*δ) 를 가산함으로써 값 x5''' 을 계산하는 단계;
    (x1''*ε) 과 (x7''*
    Figure 112010015451933-pct00202
    ) 를 가산함으로써 값 x1''' 을 계산하는 단계;
    x7''' 과 x0'' 을 가산함으로써 값 X0 을 계산하는 단계;
    x4'' 와 x5''' 를 가산함으로써 값 X1 을 계산하는 단계;
    x2'' 과 x3''' 을 가산함으로써 값 X2 를 계산하는 단계;
    x6'' 과 x7''' 을 가산함으로써 값 X3 을 계산하는 단계;
    x6'' 과 -x1''' 을 가산함으로써 값 X4 를 계산하는 단계;
    x2'' 과 -x3''' 을 가산함으로써 값 X5 를 계산하는 단계;
    x4'' 과 -x5''' 를 가산함으로써 값 X6 을 계산하는 단계; 및
    x0'' 과 -x1''' 을 가산함으로써 값 X7 을 계산하는 단계를 포함하며,
    상기 x0, x1, x2, x3, x4, x5, x6, x7 은 행 벡터 또는 열 벡터의 계수들이고,
    상기 X1, X2, X3, X4, X5, X6 및 X7 은 상기 변환의 출력 값들이고,
    상기 α = 41/128, β = 99/128,
    Figure 112010015451933-pct00203
    = 113/128, δ = 719/4096, ε = 1533/2048 및
    Figure 112010015451933-pct00204
    = 1/2 인, 역이산 코사인 변환 계산 방법.
  7. 제 6 항에 있어서,
    상기 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 단계는, 승산 또는 제산 연산을 이용하지 않고 상기 행 벡터들 중 하나 또는 상기 열 벡터들 중 하나에서의 계수들에 상기 변환을 적용하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  8. 제 7 항에 있어서,
    상기 x1 과 상기 값 ε 을 승산함으로써 값 (x1*ε) 을 계산하는 단계, 및 상기 x1 및 상기 값
    Figure 112010015451933-pct00205
    에 의해 상기 값 (x1*
    Figure 112010015451933-pct00206
    ) 를 계산하는 단계는,
    y1 = (x1 >> 9) - x1 인 값 y1 을 계산하는 단계;
    x3 을 1 위치만큼 우측-시프팅하여 값 (x1*
    Figure 112010015451933-pct00207
    ) 를 계산하는 단계; 및
    (y1 >> 2) 로부터 y1 을 감산함으로써 상기 값 (x1*ε) 을 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x7 과 ε 을 승산함으로써 값 (x7*ε) 을 계산하는 단계, 및 상기 x7 및 상기 값
    Figure 112010015451933-pct00208
    에 의해 상기 값 (x7*
    Figure 112010015451933-pct00209
    ) 를 계산하는 단계는,
    y1' = (x7 >> 9) - x7 인 값 y1' 을 계산하는 단계;
    x7 을 1 위치만큼 우측-시프팅하여 값 (x7*
    Figure 112010015451933-pct00210
    ) 를 계산하는 단계; 및
    (y1' >> 2) 로부터 y1' 을 감산함으로써 상기 값 (x7*ε) 을 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x1'' 과 상기 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하는 단계, 상기 x1'' 및 상기 값
    Figure 112010015451933-pct00211
    에 의해 상기 값 (x1''*
    Figure 112010015451933-pct00212
    ) 를 계산하는 단계는,
    y1'' = (x1'' >> 9) - x1'' 인 값 y1'' 을 계산하는 단계;
    x1'' 을 1 위치만큼 우측-시프팅하여 값 (x1''*
    Figure 112010015451933-pct00213
    ) 를 계산하는 단계; 및
    (y1'' >> 2) 로부터 y1'' 을 감산함으로써 상기 값 (x1''*ε) 을 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x7'' 과 ε 을 승산함으로써 값 (x7''*ε) 을 계산하는 단계, 및 상기 x7'' 및 상기 값
    Figure 112010015451933-pct00214
    에 의해 상기 값 (x7''*
    Figure 112010015451933-pct00215
    ) 를 계산하는 단계는,
    y1''' = (x7'' >> 9) - x7'' 인 값 y1''' 을 계산하는 단계;
    x7'' 을 1 위치만큼 우측-시프팅하여 값 (x7''*
    Figure 112010015451933-pct00216
    ) 를 계산하는 단계; 및
    (y1''' >> 2) 로부터 y1''' 을 감산함으로써 상기 값 (x7''*ε) 을 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  9. 제 7 항에 있어서,
    상기 x3 과 상기 값
    Figure 112010015451933-pct00217
    를 승산함으로써 값 (x3*
    Figure 112010015451933-pct00218
    ) 를 계산하는 단계, 및 상기 x3 및 상기 값 δ 를 승산함으로써 값 (x3*δ) 를 계산하는 단계는,
    y2 = (x3 >> 3) - (x3 >> 7) 인 값 y2 를 계산하는 단계;
    y3 = y2 - (x3 >> 11) 인 값 y3 을 계산하는 단계;
    (x3*δ) = y2 + (y3 >> 1) 인 값 (x3*δ) 를 계산하는 단계; 및
    x3 으로부터 y2 를 감산함으로써 값 (x3*
    Figure 112010015451933-pct00219
    ) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x5 과 상기 값 δ 를 승산함으로써 값 (x5*δ) 를 계산하는 단계, 및 상기 x5 와 상기 값
    Figure 112010015451933-pct00220
    를 승산함으로써 값 (x5*
    Figure 112010015451933-pct00221
    ) 를 계산하는 단계는,
    y2' = (x5 >> 3) - (x5 >> 7) 인 값 y2' 를 계산하는 단계;
    y3' = y2' - (x5 >> 11) 인 값 y3' 을 계산하는 단계;
    y2' 와 (y3' >> 1) 을 가산함으로써 값 (x5*δ) 를 계산하는 단계; 및
    x5 로부터 y2' 를 감산함으로써 값 (x5*
    Figure 112010015451933-pct00222
    ) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x3'' 과 상기 값
    Figure 112010015451933-pct00223
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00224
    ) 를 계산하는 단계, 및 상기 x3'' 과 상기 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하는 단계는,
    y1'' = (x3'' >> 3) - (x3'' >> 7) 인 값 y2'' 를 계산하는 단계;
    y3'' = y2'' - (x3'' >> 11) 인 값 y3'' 을 계산하는 단계;
    (x3''*δ) = y2'' + (y3'' >> 1) 인 값 (x3''*δ) 를 계산하는 단계; 및
    x3'' 으로부터 y2'' 를 감산함으로써 값 (x3''*
    Figure 112010015451933-pct00225
    ) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x5'' 와 상기 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하는 단계, 및 상기 x5'' 와 상기 값
    Figure 112010015451933-pct00226
    를 승산함으로써 값 (x5''*
    Figure 112010015451933-pct00227
    ) 를 계산하는 단계는,
    y2''' = (x5'' >> 3) - (x5'' >> 7) 인 값 y2''' 를 계산하는 단계;
    y3''' = y2''' - (x5'' >> 11) 인 값 y3''' 을 계산하는 단계;
    y2''' 와 (y3''' >> 1) 을 가산함으로써 값 (x5''*δ) 를 계산하는 단계; 및
    x5'' 로부터 y2''' 를 감산함으로써 값 (x5''*
    Figure 112010015451933-pct00228
    ) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  10. 제 7 항에 있어서,
    상기 x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하는 단계, 및 x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하는 단계는,
    y1 = x2 + (x2 >> 5) 인 값 y1 을 계산하는 단계;
    y2 = y1 >> 2 인 값 y2 를 계산하는 단계;
    y2 와 (x2 >> 4) 를 가산함으로써 값 (x2*α) 를 계산하는 단계; 및
    y1 로부터 y2 를 감산함으로써 값 (x2*β) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x6 를 값 α 로 승산함으로써 값 (x6*α) 를 계산하는 단계, 및 x6 를 값 β 로 승산함으로써 값 (x6*β) 를 계산하는 단계는,
    y1' = x2 + (x6 >> 5) 인 값 y1' 을 계산하는 단계;
    y2' = y1' >> 2 인 값 y2' 를 계산하는 단계;
    y2' 와 (x6 >> 4) 를 가산함으로써 값 (x6*α) 를 계산하는 단계; 및
    y1' 로부터 y2' 를 감산함으로써 값 (x6*β) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x2'' 를 값 α 로 승산함으로써 값 (x2''*α) 를 계산하는 단계, 및 x2'' 를 값 β 로 승산함으로써 값 (x2''*β) 를 계산하는 단계는,
    y1'' = x2'' + (x2'' >> 5) 인 값 y1'' 을 계산하는 단계;
    y2'' = y1'' >> 2 인 값 y2'' 를 계산하는 단계;
    y2'' 와 (x2'' >> 4) 를 가산함으로써 값 (x2''*α) 를 계산하는 단계; 및
    y1'' 로부터 y2'' 를 감산함으로써 값 (x2''*β) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하고,
    상기 x6'' 를 값 α 로 승산함으로써 값 (x6''*α) 를 계산하는 단계, 및 x6'' 를 값 β 로 승산함으로써 값 (x6''*β) 를 계산하는 단계는,
    y1''' = x2'' + (x6'' >> 5) 인 값 y1''' 을 계산하는 단계;
    y2''' = y1''' >> 2 인 값 y2''' 를 계산하는 단계;
    y2''' 와 (x6'' >> 4) 를 가산함으로써 값 (x6''*α) 를 계산하는 단계; 및
    y1''' 로부터 y2''' 를 감산함으로써 값 (x6''*β) 를 계산하는 단계의 산술 연산들의 시퀀스를 수행하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  11. 제 6 항에 있어서,
    값 x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x0''', x1''', x2''', x3''', x4''', x5''', x6''', x7''', (x2*α), (x6*β), (x2*β), (x6*α), (x7''*ε), (x7''*
    Figure 112010015451933-pct00229
    ), (x3''*
    Figure 112010015451933-pct00230
    ), (x3''*δ), (x5''*δ), (x5''*
    Figure 112010015451933-pct00231
    ), (x1''*
    Figure 112010015451933-pct00232
    ) 및 (x1''*ε) 는, 고정 소수점 수들의 가수 (mantissa) 부분에서 P 비트를 포함하는 상기 고정 소수점 수를 이용하여 표현되는, 역이산 코사인 변환 계산 방법.
  12. 제 11 항에 있어서,
    상기 P 는 10 과 동등한, 역이산 코사인 변환 계산 방법.
  13. 제 1 항에 있어서,
    계수의 행렬을 포함하는 비트스트림을 수신하는 단계를 더 포함하는, 역이산 코사인 변환 계산 방법.
  14. 제 1 항에 있어서,
    상기 스케일링된 계수의 행렬의 DC 계수에 중심점 바이어스 항을 가산하는 단계를 더 포함하며,
    상기 중심점 바이어스 항은 212 과 동일한, 역이산 코사인 변환 계산 방법.
  15. 제 1 항에 있어서,
    상기 변환된 계수의 행렬의 각각의 계수를 13 위치만큼 우측-시프팅시켜, 픽셀 성분값들의 행렬을 발생시키는 단계; 및
    상기 픽셀 성분값들의 행렬의 픽셀 성분값들을 픽셀 블록의 픽셀들로 통합함으로써 상기 픽셀들의 블록을 구성하는 단계를 더 포함하는, 역이산 코사인 변환 계산 방법.
  16. 제 1 항에 있어서,
    상기 계수의 행렬의 계수들을 스케일링하는 단계는, 승산 또는 제산 연산을 이용하지 않고 계수의 행렬의 상기 계수들을 스케일링하는 단계를 포함하는, 역이산 코사인 변환 계산 방법.
  17. 역이산 코사인 변환을 계산하는 디바이스로서,
    스케일링된 계수의 행렬을 생성하기 위해, 인코딩된 계수의 8×8 행렬의 각각의 계수를 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하는 스케일링 모듈로서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 인, 상기 스케일링 모듈;
    상기 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 역방향 변환 모듈;
    조정된 계수의 행렬을 생성하기 위해, 상기 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 우측-시프트 모듈; 및
    픽셀들의 8×8 블록을 출력하는 출력 모듈로서, 상기 픽셀들의 8×8 블록의 각각의 픽셀은 상기 조정된 계수의 행렬의 조정된 계수에 기초하는 픽셀 성분값을 포함하는, 상기 출력 모듈을 포함하며,
    상기 조정된 계수의 행렬의 각각의 조정된 계수는, 상기 인코딩된 계수의 8×8 행렬에 이상적인 2-차원 역이산 코사인 변환 ("IDCT") 을 적용함으로써 생성될 값들의 행렬의 대응 값에 근사하는, 역이산 코사인 변환 계산 디바이스.
  18. 제 17 항에 있어서,
    상기 역방향 변환 모듈은,
    중간 계수의 행렬을 생성하기 위해, 상기 스케일링된 계수의 행렬의 각각의 행 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하고;
    변환된 계수의 행렬을 생성하기 위해, 상기 중간 계수의 행렬의 각각의 열 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하는, 역이산 코사인 변환 계산 디바이스.
  19. 제 17 항에 있어서,
    상기 출력 모듈은, 상기 픽셀들의 8×8 블록을 비디오 시퀀스 내의 비디오 프레임의 일부로서 디스플레이하는, 역이산 코사인 변환 계산 디바이스.
  20. 제 19 항에 있어서,
    상기 출력 모듈은, 상기 픽셀들의 8×8 블록을 스틸 이미지의 일부로서 디스플레이하는, 역이산 코사인 변환 계산 디바이스.
  21. 제 17 항에 있어서,
    상기 스케일링 모듈은,
    상기 인코딩된 계수의 8×8 행렬의 [0,0] 위치에 있는 계수를 인수 A 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,1] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,2] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,3] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,4] 위치에 있는 계수를 인수 A 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,5] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,6] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,7] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,0] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,1] 위치에 있는 계수를 인수 E 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,2] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,3] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,4] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,5] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,6] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,7] 위치에 있는 계수를 인수 E 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,0] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,1] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,2] 위치에 있는 계수를 인수 H 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,3] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,4] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,5] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,6] 위치에 있는 계수를 인수 H 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,7] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,0] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,1] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,2] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,3] 위치에 있는 계수를 인수 J 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,4] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,5] 위치에 있는 계수를 인수 J 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,6] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,7] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,0] 위치에 있는 계수를 인수 A 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,1] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,2] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,3] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,4] 위치에 있는 계수를 인수 A 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,5] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,6] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,7] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,0] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,1] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,2] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,3] 위치에 있는 계수를 인수 J 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,4] 위치에 있는 계수를 인수 D 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,5] 위치에 있는 계수를 인수 J 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,6] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,7] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,0] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,1] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,2] 위치에 있는 계수를 인수 H 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,3] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,4] 위치에 있는 계수를 인수 C 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,5] 위치에 있는 계수를 인수 I 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,6] 위치에 있는 계수를 인수 H 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,7] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,0] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,1] 위치에 있는 계수를 인수 E 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,2] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,3] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,4] 위치에 있는 계수를 인수 B 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,5] 위치에 있는 계수를 인수 G 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,6] 위치에 있는 계수를 인수 F 로 스케일링하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,7] 위치에 있는 계수를 인수 E 로 스케일링하는, 역이산 코사인 변환 계산 디바이스.
  22. 제 17 항에 있어서,
    상기 역방향 변환 모듈은,
    x0 과 x4 를 가산함으로써 값 x0' 을 계산하고;
    x0 과 -x4 를 가산함으로써 값 x4' 을 계산하고;
    x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하고;
    x6 을 값 β 로 승산함으로써 값 (x6*β) 를 계산하고;
    x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하고;
    x6 을 값 α 로 승산함으로써 값 (x6*α) 를 계산하고;
    (x2*α) 와 -(x6*β) 를 가산함으로써 값 x2' 을 계산하고;
    (x6*α) 와 (x2*β) 를 가산함으로써 값 x6' 을 계산하고;
    x0' 과 x6' 을 가산함으로써 값 x0'' 을 계산하고;
    x4' 와 x2' 를 가산함으로써 값 x4'' 를 계산하고;
    x4' 와 -x2' 를 가산함으로써 값 x2'' 를 계산하고;
    x0' 와 -x6' 를 가산함으로써 값 x6'' 을 계산하고;
    x1 과 -x7 를 가산함으로써 값 x7' 을 계산하고;
    x1 과 x7 을 가산함으로써 값 x1' 을 계산하고;
    x3
    Figure 112010015451933-pct00233
    를 승산함으로써 값 x3' 을 계산하고;
    x5
    Figure 112010015451933-pct00234
    를 승산함으로써 값 x5' 를 계산하고;
    x7' 과 x5' 를 가산함으로써 값 x7'' 을 계산하고;
    x1' 과 -x3' 을 가산함으로써 값 x3'' 을 계산하고;
    x7' 과 -x5' 를 가산함으로써 값 x5'' 를 계산하고;
    x3' 과 x1' 을 가산함으로써 값 x1'' 을 계산하고;
    x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하고;
    x7'' 과 값
    Figure 112010015451933-pct00235
    를 승산함으로써 값 (x7''*
    Figure 112010015451933-pct00236
    ) 를 계산하고;
    x3'' 과 값
    Figure 112010015451933-pct00237
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00238
    ) 를 계산하고;
    x3'' 과 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하고;
    x5'' 와 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하고;
    x5'' 와 값
    Figure 112010015451933-pct00239
    를 승산함으로써 값 (x5''*
    Figure 112010015451933-pct00240
    ) 를 계산하고;
    x1'' 과 값
    Figure 112010015451933-pct00241
    를 승산함으로써 값 (x1''*
    Figure 112010015451933-pct00242
    ) 를 계산하고;
    x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하고;
    (x7''*ε) 과 -(x1''*
    Figure 112010015451933-pct00243
    ) 를 가산함으로써 값 x7''' 을 계산하고;
    (x3''*
    Figure 112010015451933-pct00244
    ) 와 -(x5''*δ) 를 가산함으로써 값 x3''' 을 계산하고;
    (x5''*
    Figure 112010015451933-pct00245
    ) 와 (x3''*δ) 를 가산함으로써 값 x5''' 을 계산하고;
    (x1''*ε) 과 (x7''*
    Figure 112010015451933-pct00246
    ) 를 가산함으로써 값 x1''' 을 계산하고;
    x7''' 과 x0'' 을 가산함으로써 값 X0 을 계산하고;
    x4'' 와 x5''' 를 가산함으로써 값 X1 을 계산하고;
    x2'' 과 x3''' 을 가산함으로써 값 X2 를 계산하고;
    x6'' 과 x7''' 을 가산함으로써 값 X3 을 계산하고;
    x6'' 과 -x1''' 을 가산함으로써 값 X4 를 계산하고;
    x2'' 과 -x3''' 을 가산함으로써 값 X5 를 계산하고;
    x4'' 과 -x5''' 를 가산함으로써 값 X6 을 계산하고;
    x0'' 과 -x1''' 을 가산함으로써 값 X7 을 계산하여,
    상기 변환을 행 벡터 또는 열 벡터에 적용하며,
    상기 x0, x1, x2, x3, x4, x5, x6, x7 은 행 벡터 또는 열 벡터의 계수들이고,
    상기 X1, X2, X3, X4, X5, X6 및 X7 은 상기 변환의 출력 값들이고,
    상기 α = 41/128, β = 99/128,
    Figure 112010015451933-pct00247
    = 113/128, δ = 719/4096, ε = 1533/2048 및
    Figure 112010015451933-pct00248
    = 1/2 인, 역이산 코사인 변환 계산 디바이스.
  23. 제 22 항에 있어서,
    상기 역방향 변환 모듈은, 승산 또는 제산 연산을 이용하지 않고 상기 계수의 행렬에 상기 변환을 적용하는, 역이산 코사인 변환 계산 디바이스.
  24. 제 23 항에 있어서,
    상기 역방향 변환 모듈은, x1 과 값 ε 을 승산함으로써 값 (x1*ε) 을 계산하며, 상기 x1 및 상기 값
    Figure 112010015451933-pct00249
    에 의해 상기 값 (x1*
    Figure 112010015451933-pct00250
    ) 를 계산하는 연산은,
    y1 = (x1 >> 9) - x1 인 값 y1 을 계산하는 산술 연산;
    x3 을 1 위치만큼 우측-시프팅하여 값 (x1*
    Figure 112010015451933-pct00251
    ) 를 계산하는 산술 연산; 및
    (y1 >> 2) 로부터 y1 을 감산함으로써 상기 값 (x1*ε) 을 계산하는 산술 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, x7 과 값 ε 을 승산함으로써 값 (x7*ε) 을 계산하며, 상기 x7 및 상기 값
    Figure 112010015451933-pct00252
    에 의해 상기 값 (x7*
    Figure 112010015451933-pct00253
    ) 를 계산하는 연산은,
    y1' = (x7 >> 9) - x7 인 값 y1' 을 계산하는 산술 연산;
    x7 을 1 위치만큼 우측-시프팅하여 값 (x7*
    Figure 112010015451933-pct00254
    ) 를 계산하는 산술 연산; 및
    (y1' >> 2) 로부터 y1' 을 감산함으로써 상기 값 (x7*ε) 을 계산하는 산술 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하며, 상기 x1'' 및 상기 값
    Figure 112010015451933-pct00255
    에 의해 상기 값 (x1''*
    Figure 112010015451933-pct00256
    ) 를 계산하는 연산은,
    y1'' = (x1'' >> 9) - x1'' 인 값 y1'' 을 계산하는 산술 연산;
    x1'' 을 1 위치만큼 우측-시프팅하여 값 (x1''*
    Figure 112010015451933-pct00257
    ) 를 계산하는 산술 연산; 및
    (y1'' >> 2) 로부터 y1'' 을 감산함으로써 상기 값 (x1''*ε) 을 계산하는 산술 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하며, 상기 x7'' 및 상기 값
    Figure 112010015451933-pct00258
    에 의해 상기 값 (x7''*
    Figure 112010015451933-pct00259
    ) 를 계산하는 연산은,
    y1''' = (x7'' >> 9) - x7'' 인 값 y1''' 을 계산하는 산술 연산;
    x7'' 을 1 위치만큼 우측-시프팅하여 값 (x7''*
    Figure 112010015451933-pct00260
    ) 를 계산하는 산술 연산; 및
    (y1''' >> 2) 로부터 y1''' 을 감산함으로써 상기 값 (x7''*ε) 을 계산하는 산술 연산의 시퀀스를 수행하는 것을 포함하는, 역이산 코사인 변환 계산 디바이스.
  25. 제 23 항에 있어서,
    상기 역방향 변환 모듈은, 상기 x3 과 상기 값
    Figure 112010015451933-pct00261
    를 승산함으로써 값 (x3*
    Figure 112010015451933-pct00262
    ) 를 계산하며, 상기 x3 및 상기 값 δ 를 승산함으로써 값 (x3*δ) 를 계산하는 것은,
    y1 = (x3 >> 3) - (x3 >> 7) 인 값 y2 를 계산하는 연산;
    y3 = y2 - (x3 >> 11) 인 값 y3 을 계산하는 연산;
    (x3*δ) = y2 + (y3 >> 1) 인 값 (x3*δ) 를 계산하는 연산; 및
    x3 으로부터 y2 를 감산함으로써 값 (x3*
    Figure 112010015451933-pct00263
    ) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, 상기 x5 와 상기 값 δ 를 승산함으로써 값 (x5*δ) 를 계산하며, 상기 x5 및 상기 값
    Figure 112010015451933-pct00264
    를 승산함으로써 값 (x5*
    Figure 112010015451933-pct00265
    ) 를 계산하는 것은,
    y2' = (x5 >> 3) - (x5 >> 7) 인 값 y2' 를 계산하는 연산;
    y3' = y2' - (x5 >> 11) 인 값 y3' 을 계산하는 연산;
    y2' 와 (y3' >> 1) 을 가산함으로써 값 (x5*δ) 를 계산하는 연산; 및
    x5 로부터 y2' 를 감산함으로써 값 (x5*
    Figure 112010015451933-pct00266
    ) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, 상기 x3'' 과 상기 값
    Figure 112010015451933-pct00267
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00268
    ) 를 계산하며, 상기 x3'' 및 상기 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하는 것은,
    y1'' = (x3'' >> 3) - (x3'' >> 7) 인 값 y2'' 를 계산하는 연산;
    y3'' = y2'' - (x3'' >> 11) 인 값 y3'' 을 계산하는 연산;
    (x3''*δ) = y2'' + (y3'' >> 1) 인 값 (x3''*δ) 를 계산하는 연산; 및
    x3'' 으로부터 y2'' 를 감산함으로써 값 (x3''*
    Figure 112010015451933-pct00269
    ) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, 상기 x5'' 과 상기 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하며, 상기 x5'' 및 상기 값
    Figure 112010015451933-pct00270
    를 승산함으로써 값 (x5''*
    Figure 112010015451933-pct00271
    ) 를 계산하는 것은,
    y2''' = (x5'' >> 3) - (x5'' >> 7) 인 값 y2''' 를 계산하는 연산;
    y3''' = y2''' - (x5'' >> 11) 인 값 y3''' 을 계산하는 연산;
    y2''' 와 (y3''' >> 1) 을 가산함으로써 값 (x5''*δ) 를 계산하는 연산; 및
    x5'' 로부터 y2''' 를 감산함으로써 값 (x5''*
    Figure 112010015451933-pct00272
    ) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하는, 역이산 코사인 변환 계산 디바이스.
  26. 제 23 항에 있어서,
    상기 역방향 변환 모듈은,
    (x2*β) 를 x2 와 동등하게 설정함으로써 값 (x2*β) 를 계산하는 연산;
    y1 = x2 + (x2 >> 5) 인 값 y1 을 계산하는 연산;
    y2 = y1 >> 2 인 값 y2 를 계산하는 연산;
    y2 와 (x2 >> 4) 를 가산함으로써 값 (x2*α) 를 계산하는 연산; 및
    y1 로부터 y2 를 감산함으로써 값 (x2*β) 를 계산하는 연산의 시퀀스를 수행하여, x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하며, x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하고,
    상기 역방향 변환 모듈은,
    y1' = x2 + (x6 >> 5) 인 값 y1' 을 계산하는 연산;
    y2' = y1' >> 2 인 값 y2' 를 계산하는 연산;
    y2' 와 (x6 >> 4) 를 가산함으로써 값 (x6*α) 를 계산하는 연산; 및
    y1' 로부터 y2' 를 감산함으로써 값 (x6*β) 를 계산하는 연산의 시퀀스를 수행하여, x6 를 값 α 로 승산함으로써 값 (x6*α) 를 계산하며, x6 를 값 β 로 승산함으로써 값 (x6*β) 를 계산하고,
    상기 역방향 변환 모듈은, x2'' 를 값 α 로 승산함으로써 값 (x2''*α) 를 계산하며, x2'' 를 값 β 로 승산함으로써 값 (x2''*β) 를 계산하는 연산은,
    y1'' = x2'' + (x2'' >> 5) 인 값 y1'' 을 계산하는 연산;
    y2'' = y1'' >> 2 인 값 y2'' 를 계산하는 연산;
    y2'' 와 (x2'' >> 4) 를 가산함으로써 값 (x2''*α) 를 계산하는 연산; 및
    y1'' 로부터 y2'' 를 감산함으로써 값 (x2''*β) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하고,
    상기 역방향 변환 모듈은, x6'' 를 값 α 로 승산함으로써 값 (x6''*α) 를 계산하며, x6'' 를 값 β 로 승산함으로써 값 (x6''*β) 를 계산하는 연산은,
    y1''' = x2'' + (x6'' >> 5) 인 값 y1''' 을 계산하는 연산;
    y2''' = y1''' >> 2 인 값 y2''' 를 계산하는 연산;
    y2''' 와 (x6'' >> 4) 를 가산함으로써 값 (x6''*α) 를 계산하는 연산; 및
    y1''' 로부터 y2''' 를 감산함으로써 값 (x6''*β) 를 계산하는 연산의 시퀀스를 수행하는 것을 포함하는, 역이산 코사인 변환 계산 디바이스.
  27. 제 22 항에 있어서,
    값 x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x0''', x1''', x2''', x3''', x4''', x5''', x6''', x7''', (x2*α), (x6*β), (x2*β), (x6*α), (x7''*ε), (x7''*
    Figure 112010015451933-pct00273
    ), (x3''*
    Figure 112010015451933-pct00274
    ), (x3''*δ), (x5''*δ), (x5''*
    Figure 112010015451933-pct00275
    ), (x1''*
    Figure 112010015451933-pct00276
    ) 및 (x1''*ε) 는, 고정 소수점 수들의 가수 부분에서 P 비트를 포함하는 상기 고정 소수점 수를 이용하여 표현되는, 역이산 코사인 변환 계산 디바이스.
  28. 제 27 항에 있어서,
    상기 P 는 10 과 동등한, 역이산 코사인 변환 계산 디바이스.
  29. 제 17 항에 있어서,
    상기 인코딩된 계수의 8×8 행렬이 도출되는 데이터를 수신하는 네트워크 인터페이스를 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  30. 제 17 항에 있어서,
    DC 계수에 중심점 바이어스 항을 가산하는 계수 바이어싱 모듈을 더 포함하며,
    상기 중심점 바이어스 항은 212 과 동일한, 역이산 코사인 변환 계산 디바이스.
  31. 제 30 항에 있어서,
    상기 변환된 계수의 행렬의 각각의 계수를 13 위치만큼 우측-시프팅시켜, 픽셀 성분값들의 행렬을 발생시키는 우측-시프트 모듈; 및
    상기 픽셀 성분값들의 행렬의 픽셀 성분값들을 픽셀 블록의 픽셀들로 통합함으로써 상기 픽셀들의 블록을 구성하는 픽셀 복원 모듈을 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  32. 제 17 항에 있어서,
    상기 픽셀들의 블록을 디스플레이하는 미디어 프리젠테이션 유닛을 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  33. 제 17 항에 있어서,
    상기 스케일링 모듈은 승산 또는 제산 연산을 이용하지 않고 상기 계수들을 스케일링하는, 역이산 코사인 변환 계산 디바이스.
  34. 역이산 코사인 변환을 계산하는 디바이스로서,
    스케일링된 계수의 행렬을 생성하기 위해, 인코딩된 계수의 8×8 행렬의 계수들을 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하는 수단으로서, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 인, 상기 스케일링하는 수단;
    상기 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 수단;
    조정된 계수의 행렬을 생성하기 위해, 상기 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅시키는 수단; 및
    픽셀들의 8×8 블록을 출력하는 수단으로서, 상기 픽셀들의 8×8 블록의 각각의 픽셀은 상기 조정된 계수의 행렬의 조정된 계수에 기초하는 픽셀 성분값을 포함하는, 상기 출력하는 수단을 포함하며,
    상기 조정된 계수의 행렬의 각각의 조정된 계수는, 상기 인코딩된 계수의 8×8 행렬에 이상적인 2-차원 역이산 코사인 변환 ("IDCT") 을 적용함으로써 생성될 값들의 행렬의 대응 값에 근사하는, 역이산 코사인 변환 계산 디바이스.
  35. 제 34 항에 있어서,
    상기 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하는 수단은,
    중간 계수의 행렬을 생성하기 위해, 상기 스케일링된 계수의 행렬의 각각의 행 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하는 수단; 및
    변환된 계수의 행렬을 생성하기 위해, 상기 중간 계수의 행렬의 각각의 열 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  36. 제 34 항에 있어서,
    상기 픽셀들의 8×8 블록을 출력하는 수단은, 상기 픽셀들의 8×8 블록을 비디오 시퀀스 내의 비디오 프레임의 일부로서 디스플레이하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  37. 제 34 항에 있어서,
    상기 픽셀들의 8×8 블록을 출력하는 수단은, 상기 픽셀들의 8×8 블록을 스틸 이미지의 일부로서 디스플레이하는, 역이산 코사인 변환 계산 디바이스.
  38. 제 34 항에 있어서,
    상기 계수들을 스케일링하는 수단은,
    상기 인코딩된 계수의 8×8 행렬의 [0,0] 위치에 있는 계수를 인수 A 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,1] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,2] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,3] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,4] 위치에 있는 계수를 인수 A 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,5] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,6] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [0,7] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,0] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,1] 위치에 있는 계수를 인수 E 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,2] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,3] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,4] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,5] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,6] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [1,7] 위치에 있는 계수를 인수 E 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,0] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,1] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,2] 위치에 있는 계수를 인수 H 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,3] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,4] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,5] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,6] 위치에 있는 계수를 인수 H 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [2,7] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,0] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,1] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,2] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,3] 위치에 있는 계수를 인수 J 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,4] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,5] 위치에 있는 계수를 인수 J 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,6] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [3,7] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,0] 위치에 있는 계수를 인수 A 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,1] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,2] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,3] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,4] 위치에 있는 계수를 인수 A 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,5] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,6] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [4,7] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,0] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,1] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,2] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,3] 위치에 있는 계수를 인수 J 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,4] 위치에 있는 계수를 인수 D 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,5] 위치에 있는 계수를 인수 J 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,6] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [5,7] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,0] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,1] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,2] 위치에 있는 계수를 인수 H 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,3] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,4] 위치에 있는 계수를 인수 C 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,5] 위치에 있는 계수를 인수 I 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,6] 위치에 있는 계수를 인수 H 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [6,7] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,0] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,1] 위치에 있는 계수를 인수 E 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,2] 위치에 있는 계수를 인수 F 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,3] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,4] 위치에 있는 계수를 인수 B 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,5] 위치에 있는 계수를 인수 G 로 스케일링하는 수단;
    상기 인코딩된 계수의 8×8 행렬의 [7,6] 위치에 있는 계수를 인수 F 로 스케일링하는 수단; 및
    상기 인코딩된 계수의 8×8 행렬의 [7,7] 위치에 있는 계수를 인수 E 로 스케일링하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  39. 제 38 항에 있어서,
    상기 변환을 적용하는 수단은,
    x0 과 x4 를 가산함으로써 값 x0' 을 계산하는 수단;
    x0 과 -x4 를 가산함으로써 값 x4' 을 계산하는 수단;
    x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하는 수단;
    x6 을 값 β 로 승산함으로써 값 (x6*β) 를 계산하는 수단;
    x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하는 수단;
    x6 을 값 α 로 승산함으로써 값 (x6*α) 를 계산하는 수단;
    (x2*α) 와 -(x6*β) 를 가산함으로써 값 x2' 을 계산하는 수단;
    (x6*α) 와 (x2*β) 를 가산함으로써 값 x6' 을 계산하는 수단;
    x0' 과 x6' 을 가산함으로써 값 x0'' 을 계산하는 수단;
    x4' 와 x2' 를 가산함으로써 값 x4'' 를 계산하는 수단;
    x4' 와 -x2' 를 가산함으로써 값 x2'' 를 계산하는 수단;
    x0' 와 -x6' 를 가산함으로써 값 x6'' 을 계산하는 수단;
    x1 과 -x7 를 가산함으로써 값 x7' 을 계산하는 수단;
    x1 과 x7 을 가산함으로써 값 x1' 을 계산하는 수단;
    x3
    Figure 112010015451933-pct00277
    를 승산함으로써 값 x3' 을 계산하는 수단;
    x5
    Figure 112010015451933-pct00278
    를 승산함으로써 값 x5' 를 계산하는 수단;
    x7' 과 x5' 를 가산함으로써 값 x7'' 을 계산하는 수단;
    x1' 과 -x3' 을 가산함으로써 값 x3'' 을 계산하는 수단;
    x7' 과 -x5' 를 가산함으로써 값 x5'' 를 계산하는 수단;
    x3' 과 x1' 을 가산함으로써 값 x1'' 을 계산하는 수단;
    x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하는 수단;
    x7'' 과 값
    Figure 112010015451933-pct00279
    를 승산함으로써 값 (x7''*
    Figure 112010015451933-pct00280
    ) 를 계산하는 수단;
    x3'' 과 값
    Figure 112010015451933-pct00281
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00282
    ) 를 계산하는 수단;
    x3'' 과 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하는 수단;
    x5'' 와 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하는 수단;
    x5'' 와 값
    Figure 112010015451933-pct00283
    를 승산함으로써 값 (x5''*
    Figure 112010015451933-pct00284
    ) 를 계산하는 수단;
    x1'' 과 값
    Figure 112010015451933-pct00285
    를 승산함으로써 값 (x1''*
    Figure 112010015451933-pct00286
    ) 를 계산하는 수단;
    x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하는 수단;
    (x7''*ε) 과 -(x1''*
    Figure 112010015451933-pct00287
    ) 를 가산함으로써 값 x7''' 을 계산하는 수단;
    (x3''*
    Figure 112010015451933-pct00288
    ) 와 -(x5''*δ) 를 가산함으로써 값 x3''' 을 계산하는 수단;
    (x5''*
    Figure 112010015451933-pct00289
    ) 와 (x3''*δ) 를 가산함으로써 값 x5''' 을 계산하는 수단;
    (x1''*ε) 과 (x7''*
    Figure 112010015451933-pct00290
    ) 를 가산함으로써 값 x1''' 을 계산하는 수단;
    x7''' 과 x0'' 을 가산함으로써 값 X0 을 계산하는 수단;
    x4'' 와 x5''' 를 가산함으로써 값 X1 을 계산하는 수단;
    x2'' 과 x3''' 을 가산함으로써 값 X2 를 계산하는 수단;
    x6'' 과 x7''' 을 가산함으로써 값 X3 을 계산하는 수단;
    x6'' 과 -x1''' 을 가산함으로써 값 X4 를 계산하는 수단;
    x2'' 과 -x3''' 을 가산함으로써 값 X5 를 계산하는 수단;
    x4'' 과 -x5''' 를 가산함으로써 값 X6 을 계산하는 수단; 및
    x0'' 과 -x1''' 을 가산함으로써 값 X7 을 계산하는 수단을 포함하며,
    상기 x0, x1, x2, x3, x4, x5, x6, x7 은 행 벡터 또는 열 벡터의 계수들이고,
    상기 X1, X2, X3, X4, X5, X6 및 X7 은 상기 변환의 출력 값들이고,
    상기 α = 41/128, β = 99/128,
    Figure 112010015451933-pct00291
    = 113/128, δ = 719/4096, ε = 1533/2048 및
    Figure 112010015451933-pct00292
    = 1/2 인, 역이산 코사인 변환 계산 디바이스.
  40. 제 39 항에 있어서,
    상기 변환을 반복적으로 적용하는 수단은, 승산 또는 제산 연산을 이용하지 않고 상기 행 벡터들 중 하나 또는 상기 열 벡터들 중 하나에서의 계수들에 상기 변환을 적용하는, 역이산 코사인 변환 계산 디바이스.
  41. 제 40 항에 있어서,
    상기 x1 과 상기 값 ε 을 승산함으로써 값 (x1*ε) 을 계산하는 수단, 및 상기 x1 및 상기 값
    Figure 112010015451933-pct00293
    에 의해 상기 값 (x1*
    Figure 112010015451933-pct00294
    ) 를 계산하는 수단은,
    y1 = (x1 >> 9) - x1 인 값 y1 을 계산하는 수단;
    x3 을 1 위치만큼 우측-시프팅하여 값 (x1*
    Figure 112010015451933-pct00295
    ) 를 계산하는 수단; 및
    (y1 >> 2) 로부터 y1 을 감산함으로써 상기 값 (x1*ε) 을 계산하는 수단을 포함하고,
    상기 x7 과 ε 을 승산함으로써 값 (x7*ε) 을 계산하는 수단, 및 상기 x7 및 상기 값
    Figure 112010015451933-pct00296
    에 의해 상기 값 (x7*
    Figure 112010015451933-pct00297
    ) 를 계산하는 수단은,
    y1' = (x7 >> 9) - x7 인 값 y1' 을 계산하는 수단;
    x7 을 1 위치만큼 우측-시프팅하여 값 (x7*
    Figure 112010015451933-pct00298
    ) 를 계산하는 수단; 및
    (y1' >> 2) 로부터 y1' 을 감산함으로써 상기 값 (x7*ε) 을 계산하는 수단을 포함하고,
    상기 x1'' 과 상기 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하는 수단, 상기 x1'' 및 상기 값
    Figure 112010015451933-pct00299
    에 의해 상기 값 (x1''*
    Figure 112010015451933-pct00300
    ) 를 계산하는 수단은,
    y1'' = (x1'' >> 9) - x1'' 인 값 y1'' 을 계산하는 수단;
    x1'' 을 1 위치만큼 우측-시프팅하여 값 (x1''*
    Figure 112010015451933-pct00301
    ) 를 계산하는 수단; 및
    (y1'' >> 2) 로부터 y1'' 을 감산함으로써 상기 값 (x1''*ε) 을 계산하는 수단을 포함하고,
    상기 x7'' 과 ε 을 승산함으로써 값 (x7''*ε) 을 계산하는 수단, 및 상기 x7'' 및 상기 값
    Figure 112010015451933-pct00302
    에 의해 상기 값 (x7''*
    Figure 112010015451933-pct00303
    ) 를 계산하는 수단은,
    y1''' = (x7'' >> 9) - x7'' 인 값 y1''' 을 계산하는 수단;
    x7'' 을 1 위치만큼 우측-시프팅하여 값 (x7''*
    Figure 112010015451933-pct00304
    ) 를 계산하는 수단; 및
    (y1''' >> 2) 로부터 y1''' 을 감산함으로써 상기 값 (x7''*ε) 을 계산하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  42. 제 40 항에 있어서,
    상기 x3 과 상기 값
    Figure 112010015451933-pct00305
    를 승산함으로써 값 (x3*
    Figure 112010015451933-pct00306
    ) 를 계산하는 수단, 및 상기 x3 및 상기 값 δ 를 승산함으로써 값 (x3*δ) 를 계산하는 수단은,
    y1 = (x3 >> 3) - (x3 >> 7) 인 값 y2 를 계산하는 수단;
    y3 = y2 - (x3 >> 11) 인 값 y3 을 계산하는 수단;
    (x3*δ) = y2 + (y3 >> 1) 인 값 (x3*δ) 를 계산하는 수단; 및
    x1 으로부터 y2 를 감산함으로써 값 (x3*
    Figure 112010015451933-pct00307
    ) 를 계산하는 수단을 포함하고,
    상기 x5 과 상기 값 δ 를 승산함으로써 값 (x5*δ) 를 계산하는 수단, 및 상기 x5 와 상기 값
    Figure 112010015451933-pct00308
    를 승산함으로써 값 (x5*
    Figure 112010015451933-pct00309
    ) 를 계산하는 수단은,
    y2' = (x5 >> 3) - (x5 >> 7) 인 값 y2' 를 계산하는 수단;
    y3' = y2' - (x5 >> 11) 인 값 y3' 을 계산하는 수단;
    y2' 와 (y3' >> 1) 을 가산함으로써 값 (x5*δ) 를 계산하는 수단; 및
    x7 로부터 y2' 를 감산함으로써 값 (x5*
    Figure 112010015451933-pct00310
    ) 를 계산하는 수단을 포함하고,
    상기 x3'' 과 상기 값
    Figure 112010015451933-pct00311
    를 승산함으로써 값 (x3''*
    Figure 112010015451933-pct00312
    ) 를 계산하는 수단, 및 상기 x3'' 과 상기 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하는 수단은,
    y1'' = (x3'' >> 3) - (x3'' >> 7) 인 값 y2'' 를 계산하는 수단;
    y3'' = y2'' - (x1'' >> 11) 인 값 y3'' 을 계산하는 수단;
    (x1''*δ) = y2'' + (y3'' >> 1) 인 값 (x1''*δ) 를 계산하는 수단; 및
    x1'' 으로부터 y2'' 를 감산함으로써 값 (x1''*
    Figure 112010015451933-pct00313
    ) 를 계산하는 수단을 포함하고,
    상기 x5 과 상기 값 δ 를 승산함으로써 값 (x5*δ) 를 계산하는 수단, 및 상기 x5 와 상기 값
    Figure 112010015451933-pct00314
    를 승산함으로써 값 (x5*
    Figure 112010015451933-pct00315
    ) 를 계산하는 수단은,
    y2''' = (x5'' >> 3) - (x5'' >> 7) 인 값 y2''' 를 계산하는 수단;
    y3''' = y2''' - (x5'' >> 11) 인 값 y3''' 을 계산하는 수단;
    y2''' 와 (y3''' >> 1) 을 가산함으로써 값 (x5''*δ) 를 계산하는 수단; 및
    x5'' 로부터 y2''' 를 감산함으로써 값 (x5''*
    Figure 112010015451933-pct00316
    ) 를 계산하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  43. 제 40 항에 있어서,
    상기 x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하는 수단, 및 x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하는 수단은,
    y1 = x2 + (x2 >> 5) 인 값 y1 을 계산하는 수단;
    y2 = y1 >> 2 인 값 y2 를 계산하는 수단;
    y2 와 (x2 >> 4) 를 가산함으로써 값 (x2*α) 를 계산하는 수단; 및
    y1 로부터 y2 를 감산함으로써 값 (x2*β) 를 계산하는 수단을 포함하고,
    상기 x6 를 값 α 로 승산함으로써 값 (x6*α) 를 계산하는 수단, 및 x6 를 값 β 로 승산함으로써 값 (x6*β) 를 계산하는 수단은,
    y1' = x6 + (x6 >> 5) 인 값 y1' 을 계산하는 수단;
    y2' = y1' >> 2 인 값 y2' 를 계산하는 수단;
    y2' 와 (x6 >> 4) 를 가산함으로써 값 (x6*α) 를 계산하는 수단; 및
    y1' 로부터 y2' 를 감산함으로써 값 (x6*β) 를 계산하는 수단을 포함하고,
    상기 x2'' 를 값 α 로 승산함으로써 값 (x2''*α) 를 계산하는 수단, 및 x2'' 를 값 β 로 승산함으로써 값 (x2''*β) 를 계산하는 수단은,
    y1'' = x2'' + (x2'' >> 5) 인 값 y1'' 을 계산하는 수단;
    y2'' = y1'' >> 2 인 값 y2'' 를 계산하는 수단;
    y2'' 와 (x2'' >> 4) 를 가산함으로써 값 (x2''*α) 를 계산하는 수단; 및
    y1'' 로부터 y2'' 를 감산함으로써 값 (x2''*β) 를 계산하는 수단을 포함하고,
    x6'' 를 값 α 로 승산함으로써 값 (x6''*α) 를 계산하는 수단, 및 x6'' 를 값 β 로 승산함으로써 값 (x6''*β) 를 계산하는 수단은,
    y1''' = x6'' + (x6'' >> 5) 인 값 y1''' 을 계산하는 수단;
    y2''' = y1''' >> 2 인 값 y2''' 를 계산하는 수단;
    y2''' 와 (x6'' >> 4) 를 가산함으로써 값 (x6''*α) 를 계산하는 수단; 및
    y1''' 로부터 y2''' 를 감산함으로써 값 (x6''*β) 를 계산하는 수단을 포함하는, 역이산 코사인 변환 계산 디바이스.
  44. 제 39 항에 있어서,
    값 x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x0''', x1''', x2''', x3''', x4''', x5''', x6''', x7''', (x2*α), (x6*β), (x2*β), (x6*α), (x7''*ε), (x7''*
    Figure 112010015451933-pct00317
    ), (x3''*
    Figure 112010015451933-pct00318
    ), (x3''*δ), (x5''*δ), (x5''*
    Figure 112010015451933-pct00319
    ), (x1''*
    Figure 112010015451933-pct00320
    ) 및 (x1''*ε) 는, 고정 소수점 수들의 가수 부분에서 P 비트를 포함하는 상기 고정 소수점 수를 이용하여 표현되는, 역이산 코사인 변환 계산 디바이스.
  45. 제 44 항에 있어서,
    상기 P 는 10 과 동등한, 역이산 코사인 변환 계산 디바이스.
  46. 제 34 항에 있어서,
    상기 인코딩된 계수의 8×8 행렬이 도출되는 데이터를 포함하는 미디어 파일을 수신하는 수단을 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  47. 제 34 항에 있어서,
    DC 계수에 중심점 바이어스 값 항을 가산하는 수단을 더 포함하며,
    상기 중심점 바이어스 항은 212 과 동일한, 역이산 코사인 변환 계산 디바이스.
  48. 제 34 항에 있어서,
    상기 변환된 계수의 행렬의 각각의 계수를 13 위치만큼 우측-시프팅시켜, 픽셀 성분값들의 행렬을 발생시키는 수단; 및
    상기 픽셀 성분값들의 행렬의 픽셀 성분값들을 픽셀 블록의 픽셀들로 통합함으로써 상기 픽셀들의 블록을 구성하는 수단을 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  49. 제 34 항에 있어서,
    상기 픽셀들의 블록을 디스플레이하는 수단을 더 포함하는, 역이산 코사인 변환 계산 디바이스.
  50. 제 34 항에 있어서,
    상기 계수들을 스케일링하는 수단은 승산 또는 제산 연산을 이용하지 않고 상기 계수들을 스케일링하는, 역이산 코사인 변환 계산 디바이스.
  51. 역이산 코사인 변환을 계산하는 컴퓨터-판독가능 매체로서,
    실행되는 경우, 프로그래머블 프로세서로 하여금,
    스케일링된 계수의 행렬을 생성하기 위해, 인코딩된 계수의 8×8 행렬의 각각의 계수를, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718, 및 J = 2528 인, 인수 A, 인수 B, 인수 C, 인수 D, 인수 E, 인수 F, 인수 G, 인수 H, 인수 I 또는 인수 J 중 하나로 스케일링하게 하고;
    상기 스케일링된 계수의 행렬을 변환된 계수의 행렬로 변환하기 위해, 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하게 하고;
    조정된 계수의 행렬을 생성하기 위해, 상기 변환된 계수의 행렬의 변환된 계수들을 우측-시프팅하게 하고;
    디스플레이 유닛이 픽셀들의 8×8 블록을 디스플레이하게 하는 신호를 출력하게 하는 명령들을 포함하고,
    상기 조정된 계수의 행렬의 각각의 조정된 계수는, 상기 인코딩된 계수의 8×8 행렬에 이상적인 2-차원 역이산 코사인 변환 ("IDCT") 을 적용함으로써 생성될 값들의 행렬의 대응 값에 근사하고,
    상기 픽셀들의 8×8 블록의 각각의 픽셀은 상기 조정된 계수의 행렬의 조정된 계수에 기초하는 픽셀 성분값을 포함하는, 컴퓨터-판독가능 매체.
  52. 제 51 항에 있어서,
    상기 프로그래머블 프로세서로 하여금 상기 고정 소수점 스케일링 1-차원 변환을 반복적으로 적용하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    중간 계수의 행렬을 생성하기 위해, 상기 스케일링된 계수의 행렬의 각각의 행 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하게 하고;
    변환된 계수의 행렬을 생성하기 위해, 상기 중간 계수의 행렬의 각각의 열 벡터에 상기 고정 소수점 스케일링 1-차원 변환을 적용하게 하는, 컴퓨터-판독가능 매체.
  53. 제 51 항에 있어서,
    상기 프로그래머블 프로세서로 하여금, 디스플레이 유닛이 픽셀들의 8×8 블록을 디스플레이하게 하는 신호를 출력하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금, 상기 디스플레이 유닛이 상기 픽셀들의 8×8 블록을 비디오 시퀀스 내의 비디오 프레임의 일부로서 디스플레이하는 신호를 출력하게 하는, 컴퓨터-판독가능 매체.
  54. 제 51 항에 있어서,
    상기 프로그래머블 프로세서로 하여금, 디스플레이 유닛이 픽셀들의 8×8 블록을 디스플레이하게 하는 신호를 출력하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금, 상기 디스플레이 유닛이 상기 픽셀들의 8×8 블록을 스틸 이미지의 일부로서 디스플레이하게 하는 신호를 출력하게 하는, 컴퓨터-판독가능 매체.
  55. 제 51 항에 있어서,
    상기 프로세서로 하여금, 상기 계수의 행렬의 계수들을 스케일링하게 하는 명령들은, 상기 프로세서로 하여금,
    상기 인코딩된 계수의 8×8 행렬의 [0,0] 위치에 있는 계수를 인수 A 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,1] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,2] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,3] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,4] 위치에 있는 계수를 인수 A 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,5] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,6] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [0,7] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,0] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,1] 위치에 있는 계수를 인수 E 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,2] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,3] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,4] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,5] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,6] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [1,7] 위치에 있는 계수를 인수 E 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,0] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,1] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,2] 위치에 있는 계수를 인수 H 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,3] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,4] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,5] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,6] 위치에 있는 계수를 인수 H 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [2,7] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,0] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,1] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,2] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,3] 위치에 있는 계수를 인수 J 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,4] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,5] 위치에 있는 계수를 인수 J 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,6] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [3,7] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,0] 위치에 있는 계수를 인수 A 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,1] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,2] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,3] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,4] 위치에 있는 계수를 인수 A 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,5] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,6] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [4,7] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,0] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,1] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,2] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,3] 위치에 있는 계수를 인수 J 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,4] 위치에 있는 계수를 인수 D 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,5] 위치에 있는 계수를 인수 J 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,6] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [5,7] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,0] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,1] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,2] 위치에 있는 계수를 인수 H 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,3] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,4] 위치에 있는 계수를 인수 C 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,5] 위치에 있는 계수를 인수 I 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,6] 위치에 있는 계수를 인수 H 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [6,7] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,0] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,1] 위치에 있는 계수를 인수 E 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,2] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,3] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,4] 위치에 있는 계수를 인수 B 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,5] 위치에 있는 계수를 인수 G 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,6] 위치에 있는 계수를 인수 F 로 스케일링하게 하고;
    상기 인코딩된 계수의 8×8 행렬의 [7,7] 위치에 있는 계수를 인수 E 로 스케일링하게 하는, 컴퓨터-판독가능 매체.
  56. 제 55 항에 있어서,
    상기 프로세서로 하여금 행 벡터 또는 열 벡터에 상기 변환을 적용하게 하는 명령들은, 상기 프로세서로 하여금,
    x0 과 x4 를 가산함으로써 값 x0' 을 계산하게 하고;
    x0 과 -x4 를 가산함으로써 값 x4' 을 계산하게 하고;
    x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하게 하고;
    x6 을 값 β 로 승산함으로써 값 (x6*β) 를 계산하게 하고;
    x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하게 하고;
    x6 을 값 α 로 승산함으로써 값 (x6*α) 를 계산하게 하고;
    (x2*α) 와 -(x6*β) 를 가산함으로써 값 x2' 을 계산하게 하고;
    (x6*α) 와 (x2*β) 를 가산함으로써 값 x6' 을 계산하게 하고;
    x0' 과 x6' 을 가산함으로써 값 x0'' 을 계산하게 하고;
    x4' 와 x2' 를 가산함으로써 값 x4'' 를 계산하게 하고;
    x4' 와 -x2' 를 가산함으로써 값 x2'' 를 계산하게 하고;
    x0' 와 -x6' 를 가산함으로써 값 x6'' 을 계산하게 하고;
    x1 과 -x7 를 가산함으로써 값 x7' 을 계산하게 하고;
    x1 과 x7 을 가산함으로써 값 x1' 을 계산하게 하고;
    x3
    Figure 112008090971299-pct00321
    를 승산함으로써 값 x3' 을 계산하게 하고;
    x5
    Figure 112008090971299-pct00322
    를 승산함으로써 값 x5' 를 계산하게 하고;
    x7' 과 x5' 를 가산함으로써 값 x7'' 을 계산하게 하고;
    x1' 과 -x3' 을 가산함으로써 값 x3'' 을 계산하게 하고;
    x7' 과 -x5' 를 가산함으로써 값 x5'' 를 계산하게 하고;
    x3' 과 x1' 을 가산함으로써 값 x1'' 을 계산하게 하고;
    x7'' 과 값 ε 을 승산함으로써 값 (x7''*ε) 을 계산하게 하고;
    x7'' 과 값
    Figure 112008090971299-pct00323
    를 승산함으로써 값 (x7''*
    Figure 112008090971299-pct00324
    ) 를 계산하게 하고;
    x3'' 과 값
    Figure 112008090971299-pct00325
    를 승산함으로써 값 (x3''*
    Figure 112008090971299-pct00326
    ) 를 계산하게 하고;
    x3'' 과 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하게 하고;
    x5'' 와 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하게 하고;
    x5'' 와 값
    Figure 112008090971299-pct00327
    를 승산함으로써 값 (x5''*
    Figure 112008090971299-pct00328
    ) 를 계산하게 하고;
    x1'' 과 값
    Figure 112008090971299-pct00329
    를 승산함으로써 값 (x1''*
    Figure 112008090971299-pct00330
    ) 를 계산하게 하고;
    x1'' 과 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하게 하고;
    (x7''*ε) 과 -(x1''*
    Figure 112008090971299-pct00331
    ) 를 가산함으로써 값 x7''' 을 계산하게 하고;
    (x3''*
    Figure 112008090971299-pct00332
    ) 와 -(x5''*δ) 를 가산함으로써 값 x3''' 을 계산하게 하고;
    (x5''*
    Figure 112008090971299-pct00333
    ) 와 (x3''*δ) 를 가산함으로써 값 x5''' 을 계산하게 하고;
    (x1''*ε) 과 (x7''*
    Figure 112008090971299-pct00334
    ) 를 가산함으로써 값 x1''' 을 계산하게 하고;
    x7''' 과 x0'' 을 가산함으로써 값 X0 을 계산하게 하고;
    x4'' 와 x5''' 를 가산함으로써 값 X1 을 계산하게 하고;
    x2'' 과 x3''' 을 가산함으로써 값 X2 를 계산하게 하고;
    x6'' 과 x7''' 을 가산함으로써 값 X3 을 계산하게 하고;
    x6'' 과 -x1''' 을 가산함으로써 값 X4 를 계산하게 하고;
    x2'' 과 -x3''' 을 가산함으로써 값 X5 를 계산하게 하고;
    x4'' 과 -x5''' 를 가산함으로써 값 X6 을 계산하게 하고;
    x0'' 과 -x1''' 을 가산함으로써 값 X7 을 계산하게 하며,
    상기 x0, x1, x2, x3, x4, x5, x6, x7 은 행 벡터 또는 열 벡터의 계수들이고,
    상기 X1, X2, X3, X4, X5, X6 및 X7 은 상기 변환의 출력 값들이고,
    상기 α = 41/128, β = 99/128,
    Figure 112008090971299-pct00335
    = 113/128, δ = 719/4096, ε = 1533/2048 및
    Figure 112008090971299-pct00336
    = 1/2 인, 컴퓨터-판독가능 매체.
  57. 제 56 항에 있어서,
    상기 프로세서로 하여금 변환을 적용하게 하는 명령들은, 상기 프로세서로 하여금, 승산 또는 제산 연산을 이용하지 않고 상기 행 벡터들 중 하나 또는 상기 열 벡터들 중 하나에서의 계수들에 상기 변환을 적용하게 하는, 컴퓨터-판독가능 매체.
  58. 제 57 항에 있어서,
    상기 프로그래머블 프로세서로 하여금 상기 x1 과 값 ε 을 승산함으로써 값 (x1*ε) 을 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 상기 x1 및 상기 값
    Figure 112008090971299-pct00337
    에 의해 상기 값 (x1*
    Figure 112008090971299-pct00338
    ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1 = (x1 >> 9) - x1 인 값 y1 을 계산하게 하고;
    x3 을 1 위치만큼 우측-시프팅하여 값 (x1*
    Figure 112008090971299-pct00339
    ) 를 계산하게 하고;
    (y1 >> 2) 로부터 y1 을 감산함으로써 상기 값 (x1*ε) 을 계산하게 하는 것에 의해 행해지고,
    상기 프로그매머블 프로세서로 하여금 상기 x7 과 값 ε 을 승산함으로써 값 (x7*ε) 을 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 상기 x7 및 상기 값
    Figure 112008090971299-pct00340
    에 의해 상기 값 (x7*
    Figure 112008090971299-pct00341
    ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1' = (x7 >> 9) - x7 인 값 y1' 을 계산하게 하고;
    x7 을 1 위치만큼 우측-시프팅하여 값 (x7*
    Figure 112008090971299-pct00342
    ) 를 계산하게 하고;
    (y1' >> 2) 로부터 y1' 을 감산함으로써 상기 값 (x7*ε) 을 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 x1'' 및 값 ε 을 승산함으로써 값 (x1''*ε) 을 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 x1'' 및 값
    Figure 112008090971299-pct00343
    를 승산함으로써 값 (x1''*
    Figure 112008090971299-pct00344
    ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1'' = (x1'' >> 9) - x1'' 인 값 y1'' 을 계산하게 하고;
    x1'' 을 1 위치만큼 우측-시프팅하여 값 (x1''*
    Figure 112008090971299-pct00345
    ) 를 계산하게 하고;
    (y1'' >> 2) 로부터 y1'' 을 감산함으로써 상기 값 (x1''*ε) 을 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 상기 x7'' 및 상기 값 ε 에 의해 상기 값 (x7''*ε) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 x7'' 및 값
    Figure 112008090971299-pct00346
    에 의해 값 (x7''*
    Figure 112008090971299-pct00347
    ) 을 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1''' = (x7'' >> 9) - x7'' 인 값 y1''' 을 계산하게 하고;
    x7'' 을 1 위치만큼 우측-시프팅하여 값 (x7''*
    Figure 112008090971299-pct00348
    ) 를 계산하게 하고;
    (y1''' >> 2) 로부터 y1''' 을 감산함으로써 상기 값 (x7''*ε) 을 계산하게 하는 것에 의해 행해지는, 컴퓨터-판독가능 매체.
  59. 제 58 항에 있어서,
    상기 프로그래머블 프로세서로 하여금 상기 x3 및 상기 값
    Figure 112008090971299-pct00349
    를 승산함으로써 값 (x3*
    Figure 112008090971299-pct00350
    ) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 상기 x3 및 상기 값 δ 를 승산함으로써 값 (x3*δ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1 = (x3 >> 3) - (x3 >> 7) 인 값 y2 를 계산하게 하고;
    y3 = y2 - (x3 >> 11) 인 값 y3 을 계산하게 하고;
    (x3*δ) = y2 + (y3 >> 1) 인 값 (x3*δ) 를 계산하게 하고;
    x3 으로부터 y2 를 감산함으로써 값 (x3*
    Figure 112008090971299-pct00351
    ) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 상기 x5 및 상기 값 δ 를 승산함으로써 값 (x5*δ) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 상기 x5 및 상기 값
    Figure 112008090971299-pct00352
    를 승산함으로써 값 (x5*
    Figure 112008090971299-pct00353
    ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y2' = (x5 >> 3) - (x5 >> 7) 인 값 y2' 를 계산하게 하고;
    y3' = y2' - (x5 >> 11) 인 값 y3' 을 계산하게 하고;
    y2' 와 (y3' >> 1) 을 가산함으로써 값 (x5*δ) 를 계산하게 하고;
    x5 로부터 y2' 를 감산함으로써 값 (x5*
    Figure 112008090971299-pct00354
    ) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 상기 x3'' 및 상기 값
    Figure 112008090971299-pct00355
    를 승산함으로써 값 (x3''*
    Figure 112008090971299-pct00356
    ) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 상기 x3'' 및 상기 값 δ 를 승산함으로써 값 (x3''*δ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1'' = (x3'' >> 3) - (x3'' >> 7) 인 값 y2'' 를 계산하게 하고;
    y3'' = y2'' - (x3'' >> 11) 인 값 y3'' 을 계산하게 하고;
    (x3''*δ) = y2'' + (y3'' >> 1) 인 값 (x3''*δ) 를 계산하게 하고;
    x3'' 으로부터 y2'' 를 감산함으로써 값 (x3''*
    Figure 112008090971299-pct00357
    ) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 상기 x5'' 및 상기 값 δ 를 승산함으로써 값 (x5''*δ) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하 여금 상기 x5'' 및 상기 값
    Figure 112008090971299-pct00358
    를 승산함으로써 값 (x5''*
    Figure 112008090971299-pct00359
    ) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금
    y2''' = (x5'' >> 3) - (x5'' >> 7) 인 값 y2''' 를 계산하게 하고;
    y3''' = y2''' - (x5'' >> 11) 인 값 y3''' 을 계산하게 하고;
    y2''' 와 (y3''' >> 1) 을 가산함으로써 값 (x5''*δ) 를 계산하게 하고;
    x5'' 로부터 y2''' 를 감산함으로써 값 (x5''*
    Figure 112008090971299-pct00360
    ) 를 계산하게 하는 것에 의해 행해지는, 컴퓨터-판독가능 매체.
  60. 제 58 항에 있어서,
    상기 프로그래머블 프로세서로 하여금 x2 를 값 α 로 승산함으로써 값 (x2*α) 를 계산하게 하는 명령들, 및 x2 를 값 β 로 승산함으로써 값 (x2*β) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1 = x2 + (x2 >> 5) 인 값 y1 을 계산하게 하고;
    y2 = y1 >> 2 인 값 y2 를 계산하게 하고;
    y2 와 (x2 >> 4) 를 가산함으로써 값 (x2*α) 를 계산하게 하고;
    y1 로부터 y2 를 감산함으로써 값 (x2*β) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 x6 를 값 α 로 승산함으로써 값 (x6*α) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 x6 를 값 β 로 승산함으로써 값 (x6*β) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1' = x6 + (x6 >> 5) 인 값 y1' 을 계산하게 하고;
    y2' = y1' >> 2 인 값 y2' 를 계산하게 하고;
    y2' 와 (x6 >> 4) 를 가산함으로써 값 (x6*α) 를 계산하게 하고;
    y1' 로부터 y2' 를 감산함으로써 값 (x6*β) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 x2'' 를 값 α 로 승산함으로써 값 (x2''*α) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 x2'' 를 값 β 로 승산함으로써 값 (x2''*β) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1'' = x2'' + (x2'' >> 5) 인 값 y1'' 을 계산하게 하고;
    y2'' = y1'' >> 2 인 값 y2'' 를 계산하게 하고;
    y2'' 와 (x2'' >> 4) 를 가산함으로써 값 (x2''*α) 를 계산하게 하고;
    y1'' 로부터 y2'' 를 감산함으로써 값 (x2''*β) 를 계산하게 하는 것에 의해 행해지고,
    상기 프로그래머블 프로세서로 하여금 x6'' 를 값 α 로 승산함으로써 값 (x6''*α) 를 계산하게 하는 명령들, 및 상기 프로그래머블 프로세서로 하여금 x6'' 를 값 β 로 승산함으로써 값 (x6''*β) 를 계산하게 하는 명령들은, 상기 프로그래머블 프로세서로 하여금,
    y1''' = x6'' + (x6'' >> 5) 인 값 y1''' 을 계산하게 하고;
    y2''' = y1''' >> 2 인 값 y2''' 를 계산하게 하;
    y2''' 와 (x6'' >> 4) 를 가산함으로써 값 (x6''*α) 를 계산하게 하고;
    y1''' 로부터 y2''' 를 감산함으로써 값 (x6''*β) 를 계산하게 하는 것에 의해 행해지는, 컴퓨터-판독가능 매체.
  61. 제 56 항에 있어서,
    값 x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x0''', x1''', x2''', x3''', x4''', x5''', x6''', x7''', (x2*α), (x6*β), (x2*β), (x6*α), (x7''*ε), (x7''*
    Figure 112008090971299-pct00361
    ), (x3''*
    Figure 112008090971299-pct00362
    ), (x3''*δ), (x5''*δ), (x5''*
    Figure 112008090971299-pct00363
    ), (x1''*
    Figure 112008090971299-pct00364
    ) 및 (x1''*ε) 는, 고정 소수점 수들의 가수 부분에서 P 비트를 포함하는 상기 고정 소수점 수를 이용하여 표현되는, 컴퓨터-판독가능 매체.
  62. 제 61 항에 있어서,
    상기 P 는 10 과 동등한, 컴퓨터-판독가능 매체.
  63. 제 51 항에 있어서,
    상기 명령들은, 상기 프로그래머블 프로세서로 하여금, 상기 인코딩된 계수의 8×8 행렬을 포함하는 미디어 파일을 또한 수신하게 하는, 컴퓨터-판독가능 매체.
  64. 제 51 항에 있어서,
    상기 명령들은, 상기 프로그래머블 프로세서로 하여금, 상기 스케일링된 계수의 행렬의 DC 계수에 중심점 바이어스 항을 또한 가산하게 하며,
    상기 중심점 바이어스 항은 212 과 동일한, 컴퓨터-판독가능 매체.
  65. 제 51 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금, 또한,
    상기 변환된 계수의 행렬의 각각의 계수를 13 위치만큼 우측-시프팅시켜, 픽셀 성분값들의 행렬을 생성하게 하고;
    상기 픽셀 성분값들의 행렬의 픽셀 성분값들을 픽셀 블록의 픽셀들로 통합함으로써 상기 픽셀들의 블록을 구성하게 하는, 컴퓨터-판독가능 매체.
  66. 제 51 항에 있어서,
    상기 프로그래머블 프로세서로 하여금 상기 인코딩된 계수들을 스케일링하게 하는 명령들은, 상기 프로세서로 하여금 승산 또는 제산 연산을 이용하지 않고 상기 인코딩된 계수의 행렬의 상기 계수들을 스케일링하게 하는, 컴퓨터-판독가능 매체.
KR1020087032218A 2006-06-26 2007-06-26 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사 KR100963459B1 (ko)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US81669706P 2006-06-26 2006-06-26
US60/816,697 2006-06-26
US84136206P 2006-08-30 2006-08-30
US60/841,362 2006-08-30
US84719406P 2006-09-25 2006-09-25
US60/847,194 2006-09-25
US82966906P 2006-10-16 2006-10-16
US60/829,669 2006-10-16
US86953006P 2006-12-11 2006-12-11
US60/869,530 2006-12-11
US88393207P 2007-01-08 2007-01-08
US60/883,932 2007-01-08

Publications (2)

Publication Number Publication Date
KR20090028736A KR20090028736A (ko) 2009-03-19
KR100963459B1 true KR100963459B1 (ko) 2010-06-17

Family

ID=38828732

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087032218A KR100963459B1 (ko) 2006-06-26 2007-06-26 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사

Country Status (8)

Country Link
EP (1) EP2089812A2 (ko)
JP (1) JP5129248B2 (ko)
KR (1) KR100963459B1 (ko)
CN (1) CN102037729B (ko)
BR (1) BRPI0713321B1 (ko)
CA (1) CA2654116C (ko)
TW (1) TWI336444B (ko)
WO (1) WO2008005757A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103959780B (zh) * 2011-12-15 2017-10-13 寰发股份有限公司 量化电平截取装置及方法
KR101395143B1 (ko) 2013-06-13 2014-05-21 이노뎁 주식회사 영상처리의 정수변환 방법 및 정수변환 장치
US10432952B2 (en) * 2015-11-19 2019-10-01 Qualcomm Incorporated System and methods for fixed-point approximations in display stream compression (DSC)
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990087552A (ko) * 1996-03-05 1999-12-27 피터 엔. 데트킨 멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터시스템
KR20000013653A (ko) * 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
KR20030045028A (ko) * 2000-08-12 2003-06-09 로베르트 보쉬 게엠베하 변환계수의 정수근사의 실행방법 및 코더와 디코더
KR20060135613A (ko) * 2003-09-24 2006-12-29 텍사스 인스트루먼츠 인코포레이티드 8×8 변환 및 양자화

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990087552A (ko) * 1996-03-05 1999-12-27 피터 엔. 데트킨 멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터시스템
KR20000013653A (ko) * 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
KR20030045028A (ko) * 2000-08-12 2003-06-09 로베르트 보쉬 게엠베하 변환계수의 정수근사의 실행방법 및 코더와 디코더
KR20060135613A (ko) * 2003-09-24 2006-12-29 텍사스 인스트루먼츠 인코포레이티드 8×8 변환 및 양자화

Also Published As

Publication number Publication date
TWI336444B (en) 2011-01-21
CN102037729A (zh) 2011-04-27
WO2008005757A3 (en) 2011-03-10
CA2654116A1 (en) 2008-01-10
CN102037729B (zh) 2013-02-27
TW200823694A (en) 2008-06-01
EP2089812A2 (en) 2009-08-19
BRPI0713321A2 (pt) 2012-03-13
JP5129248B2 (ja) 2013-01-30
WO2008005757A2 (en) 2008-01-10
JP2010505287A (ja) 2010-02-18
BRPI0713321B1 (pt) 2018-12-04
KR20090028736A (ko) 2009-03-19
CA2654116C (en) 2013-04-02

Similar Documents

Publication Publication Date Title
KR100963458B1 (ko) 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
KR100982156B1 (ko) 역이산 코사인 변환의 계산 중의 에러 감소
RU2439682C2 (ru) Уменьшение ошибок во время вычисления обратного дискретного косинусного преобразования
KR100963459B1 (ko) 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
RU2417423C2 (ru) Эффективные аппроксимации с фиксированной запятой прямого и обратного дискретных косинусных преобразований
BRPI0712996A2 (pt) aproximações eficientes para ponto fixo de transformadas de co-seno discretas, diretas e inversas

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 10