CN1217077A - 执行与多媒体信息一起使用的逆余弦变换函数的计算机系统 - Google Patents
执行与多媒体信息一起使用的逆余弦变换函数的计算机系统 Download PDFInfo
- Publication number
- CN1217077A CN1217077A CN97194236A CN97194236A CN1217077A CN 1217077 A CN1217077 A CN 1217077A CN 97194236 A CN97194236 A CN 97194236A CN 97194236 A CN97194236 A CN 97194236A CN 1217077 A CN1217077 A CN 1217077A
- Authority
- CN
- China
- Prior art keywords
- movq
- computer system
- simd
- ptr
- mmword
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000012546 transfer Methods 0.000 title description 6
- 239000011159 matrix material Substances 0.000 claims description 32
- 230000017105 transposition Effects 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 230000009466 transformation Effects 0.000 claims description 13
- 238000006073 displacement reaction Methods 0.000 claims description 8
- 238000007906 compression Methods 0.000 description 28
- 230000006835 compression Effects 0.000 description 28
- 238000000034 method Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 13
- 230000014509 gene expression Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000001914 filtration Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006837 decompression Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 4
- 230000008707 rearrangement Effects 0.000 description 4
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 229920006395 saturated elastomer Polymers 0.000 description 3
- 238000011282 treatment Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 241000233855 Orchidaceae Species 0.000 description 1
- 102100023185 Transcriptional repressor scratch 1 Human genes 0.000 description 1
- 101710171414 Transcriptional repressor scratch 1 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000009017 pursuit movement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Discrete Mathematics (AREA)
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
一种用于执行二维逆离散余弦变换的计算机系统(100),包括多媒体输入装置(125,126)、存储器(104)及处理器(109)。该处理器(109)通过执行SIMD数字与SIMD移位指令来实现变换。利用移位来保持精度。
Description
本发明涉及多媒体计算机领域。具体地,本发明涉及用单指令多数据(SIMD)计算机处理器在多媒体数据上执行逆离散余弦变换。
计算机多媒体应用通常包含处理大量表示音频信号与视频图象的小数据值。处理多媒体数据通常包含执行变换编码,这是将数据值转换成供更高效地传输、计算、编码、压缩或其它处理算法的一系列变换系数的方法。
更具体地,多媒体数据值通常将信号表示为时间的函数。变换系数将同一信号表示为诸如频率的函数。存在着包含快速傅里叶变换(FFT)、离散余弦变换(DCT)及已变换在内的许多变换算法。诸如逆离散余弦变换(iDCT)等对应的逆变换算法将变换系数转换成样本数据值。许多这种算法包含涉及十进制数的多个数学步骤。
在大多数先有技术系统中,包含十进制数的数学步骤是用浮点数学软件例程库或浮点协处理器执行的。浮点数为用尾数与指数表示的带有限精度的十进制数。图1示出如何在计算机系统的寄存器与存储器中典型地表示浮点数的实施例。浮点数占用分成尾数部分10与指数部分20的固定大小的存储器。尾数10表示正在表示的十进制数的最有效位。指数部分20表示小数点应放在何处。采用二进制数浮点表示,浮点数的值可表达为:值=尾数×2指数。
利用在通用处理上执行的浮点数学软件例程库来执行浮点运算是费时的。如果必须实时执行计算,这一方法是不够的。
为了补救这一问题,许多计算机处理器拥有浮点协处理器。浮点协处理器为专用于在浮点值上执行计算的处理器。浮点协处理器可位于紧连接到主处理器集成电路上的独立集成电路上或者浮点协处理器可以是与中央处理器核心并行运行的片上处理器。
然而,对于需要大量实时数学处理的应用,即使浮点协处理器也不能提供满意的性能。例如,实时视频信息的压缩与解压缩要求非常快地执行非常大量的处理以便提供流畅的视频数据流。从而,希望具有利用浮点数学例程库或浮点协处理器实现需要非常快的浮点运算的运算方法。
公开了利用逆离散变换处理多媒体数据的方法。本方法使用定点信息而非浮点信息使处理更快。定点信息是由单指令多数据处理器处理的,该处理器能同时单个地在多个数据上执行单一的数学或逻辑运算。在逆离散变换的各处理步骤之间,小心地将寄存器中的数据移位以便能保持处理步骤的有效位来保持精度。
从下面参照附图的本发明的较佳实施例的详细描述中,本发明的目的、特征与优点将是显而易见的。
图1a示出计算机系统内的浮点值的典型表示。
图1b示出按照本发明的一个实施例的计算机系统。
图2示出组合64位数据值的三种不同格式的表示。
图3a示出用在本发明的方法中的一个实施例中的高位组合乘法运算。
图3b示出用在本发明的方法中的一个实施例中的组合减法运算。
图3c示出用在本发明的方法中的一个实施例中的组合加法运算。
图3d示出用在本发明的方法中的一个实施例中的MOVQ运算。
图3e示出用在本发明的方法中的一个实施例中的组合逻辑左移运算。
图3f示出用在本发明的方法中的一个实施例中的组合算术右移运算。
图4示出Arai-Agui-Nakajima离散余弦变换算法的流程图。
图5示出Winograd离散傅里叶变换算法的流程图。
图6示出逆离散余弦变换算法的流程图。
图7a示出逆Winograd离散傅里叶变换算法的流程图。
图7b示出呈现四路并行性的Winograd离散傅里叶变换算法的第一部分的流程图。
图7c示出呈现四路并行性的Winograd离散傅里叶变换算法的第二部分的流程图。
图8a与8b示出按照本发明的一个实施例的计算机系统中的逆离散余弦变换的应用。
在下面的描述中,为了说明的目的,提出了特定的数字、材料与配置以便提供对本发明的彻底理解。然而对于熟悉本技术的人员而言,本发明可以不用这些特定的细节实行。在其它示例中,为了不冲淡本发明,省略或简化了众所周知的特征。本发明的计算机系统
图1b示出按照本发明的一个实施例构造的计算机系统100的方框图。计算机系统100包括用于信息通信的总线101、连接到总线101上用于信息处理的处理器109、及连接到总线101上用于为处理器109存储信息与指令的存储器104。
处理器109包括执行单元130、寄存器存储器150、高速缓冲存储器160、解码器165、及内部总线170。为处理器109存储频繁地与/或最近使用的信息的高速缓冲存储器160是连接到执行单元130上的。寄存器存储器150存储处理器109中的信息并通过内部总线170连接到执行单元130上。在本发明的一个实施例中,寄存器存储器150包含用于存储多媒体信息的多媒体寄存器151。在一个实施例中,多媒体寄存器151各存储多达64位组合数据。多媒体寄存器151可以是专用多媒体寄存器或用于存储多媒体信息与其它信息的寄存器。在一个实施例中,多媒体寄存器151在执行多媒体操作时存储多媒体数据而在执行浮点运算时存储浮点数据。
执行单元130按照处理器109所接收的包含在组合指令集140中的指令在组合数据上操作。执行单元130还按照实现在通用处理器上的指令在标量数据上操作。在本发明的一个实施例中,处理器109支持Pentium微处理器指令集及组合指令集140。通过将组合指令集140包含进诸如Pentium微处理器指令集等标准微处理器指令集中,便能容易地将组合数据指令包含进现有软件中(以前为标准微处理器指令集编写的)。根据所描述的发明,也可使用诸如PowerPCTM及AlphaTM处理器指令集等其它标准指令集。(Pentium为Intel公司的注册商标。PowerPCTM为IBM、苹果计算机及MOTOROLA的商标。AlphaTM为数字设备公司的商标。)
在本发明的一个实施例中,组合指令集140包括用于执行组合高位乘法146、组合加法142、组合减法运算144、组合逻辑左移运算141及组合算术右移运算143的指令。
通过在通用处理器109的指令集中包含组合指令集140连同执行这些指令的相关电路,许多现有多媒体应用所使用的运算可在通用处理器中用组合数据执行。从而,许多多媒体应用可通过采用在组合数据上执行运算的处理器的数据总线的全宽度而更高效地执行。这消除了为每一次在一个数据元素上执行一种或多种运算而在处理器的数据总线上传送较小单位的数据的要求。
仍参见图1,本发明的计算机系统100包含诸如监视器等显示装置121。显示装置121可包含诸如帧缓冲器等中间装置。计算机系统100包括诸如键盘等输入装置122及诸如鼠标器、或跟踪球、或跟踪板等光标控制123。显示装置121、输入装置122及光标控制123都连接到总线101上。计算机系统100也可包含网络连接器124使计算机系统100成为局域网(LAN)或广域网(WAN)的一部分。此外可将计算机系统100连接到用于录音与/或播放的装置125上,诸如耦合在用于记录话音输入供语音识别的音频数字化器上。计算机系统100也可包含能用来捕捉视频图象的视频数字化装置126、诸如打印机等硬拷贝装置127及CD-ROM装置128。装置124-128也连接到总线101上。本发明的组合数据格式
在本发明的一个实施例中,执行单元130在若干种不同组合数据格式的数据上操作。例如,在一个实施例中,计算机系统100操作64位数据组。图2示出格式化与解释64位数据的三种可能的组合方法。图2的组合数据格式包括:组合字节格式210、组合字格式220或组合双字(dword)格式230。组合字节格式210的组合数据包含8个独立的8位数据元素。组合字格式220中的组合数据包含4个独立的16位数据元素。组合双字格式230中的组合数据包含两个独立的32位数据元素。下面对照组合字格式讨论特定操作的示例。然而,这些操作类似地适用于本发明的任何组合数据格式。
此外,组合指令集140中的许多指令能在带符号或不带符号的数据上操作并能带或不带“饱和”执行。如果运算是用饱和执行的,则在运算结果超出数据元素的范围时便将数据元素的值定位在预定的最大值或最小值上。超出数据元素的范围也称作上溢或下溢。饱和的采用避免了数据上溢或下溢导致的有害副作用。本发明的组合数据指令
参见图3a-3f,其中更详细地描述了来自分组指令集140的一些指令的一个实施例。在下面描述的各例中,源1、源2与结果信息是位于多媒体寄存器151中的组合数据。其它实施例可直接从计算机的存储器104中存取源1、源2与/或结果信息。在其它实施例中,这些寄存器可存储在通用寄存器存储器中。
图3a示出组合高位乘法(PMULH)运算146的示例。结果203的数据元素203a包含源201的数据元素201a与源202的数据元素202a之积的高16位。结果203的数据元素203b包含源201的数据元素201b与源202的数据元素202b之积的高16位。以类似方式计算结果203的其它数据元素。忽略结果的低位。在替代实施例中,可利用组合数据存储器运算数作为源2来生成结果203。
图3b示出组合减法运算144的示例。结果303的数据元素303a为源301的数据元素301a与源302的数据元素302a之差。结果303的数据元素303b为源301的数据元素301b与源302的数据元素302b之差。
图3c示出组合加法运算142的示例。结果403的数据元素403a为源401的数据元素401a与源402的数据元素402a之和。结果403的数据元素403b为源401的数据元素401b与源402的数据元素402b之和。
本发明的一个实施例包含称作MOVQ148的传送操作,它用来向或从多媒体寄存器151传送64个数据位,即四个组合字。图3d示出MOVQ操作的示例。将具有位于存储器中的组合字504、506、508与510的组合数据502传送给一多媒体寄存器151,并分别作为数据元素512、514、516与518存储。
图3e示出组合逻辑左移运算141的示例。在组合逻辑左移运算中,寄存器的数据元素各独立地向左移位一个标量移位计数。各元素的低位用零填充。移位计数解释为不带符号的。移位计数大于15(对于字)、31(对于双字)或63(其它)产生全零。
图3f示出组合算术右移运算143的示例。在组合算术右移运算中,源的带符号数据元素各独立地向右移位一个标量移位计数。各元素的高位用源中的数据元素的符号位的原来值填充。移位计数解释为不带符号的。取决于源中的数据元素的符号位的初始值,移位计数大于15(对于字)或31(对于双字)产生全1或零。逆离散余弦变换
如上所述,本发明涉及执行通常用在多媒体算法中的数据值的逆离散余弦变换(iDCT)的有效方法。具体地,本发明涉及利用以定点组合数据格式存储的数据值执行逆离散余弦变换的唯一的方法。通常,在执行逆离散余弦变换时采用浮点数将达到可接受的精度。然而本方法用定点算术实现逆离散余弦变换以并不牺牲精度到不可接受的地步的方式。因此,本发明的实现生成的结果快于以前的实现而且具有可接受的精度。
为了高效地执行逆离散余弦变换(iDCT),本发明采纳了YukihiroArai、Takeshi Agui与Masayuki Nakajima公布的名为“图象的快速DCT-SQ方案”的算法。(此后称作Arai-Agui-Nakajima算法。)Arai-Agui-Nakajima算法是公布在IEICE会刊,第71卷,第11期,1095页,1988年11月,上的。
Arai-Agui-Nakajima算法为一维预定标的DCT/iDCT算法。Arai-Agui-Nakajima算法从8个预定标值定标的8个输入系数开始。然后Arai-Agui-Nakajima算法以只须5次乘法及29次加法的变换方式作用在预定标的系数上。Arai-Agui-Nakajima算法最吸引人的特征之一是它以最少数目的乘法运算计算8点DCT。此外,大多数乘法运算能并行执行,使得该算法对于并行实现是理想的。
Arai-Agui-Nakajima算法利用16点DFT计算8点DCT。图4示出说明该算法如何利用只提供系数的实部的16点DFT计算8点DCT的数据流图。为了执行只提供系数的实部快速16点DFT,选择了Winograd FFT算法。(见S.Winograd,“计算机上的离散傅里叶变换”,IBM研究报告,RC-6291,1976年11月)。
图5示出利用Winograd FFT算法生成系数的实部的信号流。如图5的流图所示,只需要5次乘法运算。实现高效逆离散余弦变换
在带有多媒体信息的使用中逆离散余弦变换是非常重要的运算。特别是,逆DCT通常用来压缩及解压缩诸如音频与视频多媒体信息。理想上,计算机应能实时压缩及解压缩音频与视频信息,使得能将它用在诸如实时电视电话等应用中。
为了得到这一结果,本发明实现了利用Arai-Agui-Nakajima算法的并行性的逆离散余弦变换的非常快与高效的版本。本发明的并行实现最高效地利用能执行四路SIMD(单指令多数据)指令的计算机体系结构特征。
为了执行逆离散余弦变换,以相反次序执行Arai-Agui-Nakajima算法的步骤。特别是,如图6中所示,按照Arai-Agui-Nakajima算法的逆版本首先定标系数。定标之后,执行Winograd DFT算法的逆算法。图7a示出从16点DFT的实部中恢复原始值的逆Winograd DFT算法的信号流。
为了实现图6与7a的逆离散余弦变换,本发明利用处理器109的组合指令集140。在一个实施例中,组合指令集140是结合以组合字格式存储的多媒体数据使用的,其中数据是作为单一多媒体寄存器内的四个独立的16位数据元素存储的。
四个独立的16位数据元素中的各个包含带符号的标量数据值。由于通常需要浮点运算,这四个独立的16位标量数据值将解释为定点小数值。然而小数点的放置是隐含的,因此必须由逆离散余弦变换实现保持跟踪。
图6中所示的第一步为适当的标定输入值。这能用将组合数据字相乘的组合乘法指令146来完成。乘法运算将输入值与来自按照图6的算法的表中的对应定标因子相乘。然而,为了使有效位保持不溢出,在执行组合乘法指令146之前首先用组合算术右移指令将数据向右移位。
随后,执行16点逆离散傅里叶变换是从前面的16点离散傅里叶变换的实部中恢复原始值。图7a中示出了执行这一变换的整个流程图。为了用能并行在四个字上运算的计算机处理器有效地执行变换,可分解逆离散傅里叶变换算法。
图7b示出所执行的逆离散傅里叶变换算法的第一部分。如图7b所示,只在四个数据值上运算。这四个数据值可用组合字格式存储在单个多媒体寄存器内。通过检验图7b中的运算的数据流,便能看出由于不存在相关性而所有数字运算能并行执行。从而图7b中的运算能用组合乘法运算146、组合加法运算142及组合减法运算144实现。
在算法中的每次运算之后,存储在多媒体寄存器中的数据值可能接近上溢或下溢。为了防止出现这一点,为了为下一运算最好地保留有效位,可右移或左移寄存器的内容。这些移位运算是用左移组合逻辑运算141及组合算术右移运算143执行的。注意在本实施例中,所有组合字值都必须位移相同的量。在确定移位各中间结果多少位时必须考虑这一点。在图7b的数据流图的结束处,作为临时结果存储这四个数据值。
图7c示出所执行的逆离散傅里叶变换算法的第二部分。如同图7b的数据流,对于图7c中的大多数数据流,只在四个数据值上进行运算。这四个数据值也能用组合字格式存储在单个多媒体寄存器中,并且也能同时进行运算。接近图7c的数据流图的结束时,组合来自图7b的四个临时结果值以提供逆离散傅里叶变换的结果。
由于Arai-Agui-Nakajima算法只是一维iDCT,必须执行附加处理来计算多媒体系统中常用的8×8iDCT。为了执行二维的8×8iDCT,首先必须用一维Arai-Agui-Nakajima算法来变换列,然后用一维Arai-Agui-Nakajima算法变换结果的行。通过首先在行上应用一维Arai-Agui-Nakajima iDCT算法然后到列上应用而颠倒这一次序,便能提供相同的结果。
在特定的SIMD指令集上实现8×8iDCT时,发现在列上执行Arai-Agui-Nakajima算法比在行上效率高得多。将一维Arai-Agui-Nakajima iDCT算法应用在矩阵的行上复杂得多且效率低。建议下列步骤:
1.预定标输入系数。
2.在矩阵的列上执行一维iDCT。
3.转置该矩阵。
4.在转置的矩阵的列上执行第二次iDCT。(这等效于在原始矩阵
的行上执行iDCT)。
5.将矩阵转置回来。
如上所示,执行了两次似乎没有必要的转置操作,因此寻找降低这些步骤的费用的方法。iDCT是设计成用在MPEG-2解码算法的前后关系中的。为了建立要变换的矩阵,在输入数据流上执行锯齿形扫描。为了在锯齿形扫描中执行矩阵转置只增加了可以忽略不计的时间量。所以实现下列改进的步骤:
1.在锯齿形扫描中转置输入系数。
2.预定标转置的输入矩阵的输入系数。
3.在矩阵的列上执行一维iDCT。(等效于在原始矩阵的行上执行
iDCT。)
4.转置该矩阵。
5.在最终的矩阵的列上执行第二次iDCT。
附录A中能找到本发明如何利用Arai-Agui-Nakajima iDCT算法实现8×8iDCT的详细说明。在多媒体系统内使用逆离散余弦变换
图8A与8B示出按照本发明的实施例的逆离散余弦转换函数的应用,其中多媒体信息是在存储、显示或传输其相关数据之前用压缩信号来操作的。在本发明的其它实施例中,可在计算机系统上通过执行解压、滤波或图象边缘处理与检测操作多媒体数据来使用逆离散余弦转换函数。
在图8A中,摄像机800把活动图象视频信号传送给在第一计算机系统中的并与摄像机连接的一接收级802。对于在其中本发明与电视会议应用结合实现的实施例,在接收级802上所接收的图象主要是与远程的第二计算机系统821的操作员通信的第一计算机系统820的操作员的图象。对于其中的计算机操作员希望例如编辑、存储或处理动画或静止动画图象的其它实施例,则将VCR、其它图象捕捉单元、另一计算机系统、CD-ROM或其它激光盘的输出馈送给计算机系统的接收级。
连接到电视摄像机800或诸如麦克风等另一多媒体输入装置上的可以是数字化装置,后者又连接到计算机的总线上。多媒体输入装置接收声音或图象输入,而数字化单元则生成表示输入的数字数据。从而,数字化单元至少包括位于多媒体输入装置中的模数转换器、I/O扩展卡或硬接线到主板上。此外,数字化单元可包含滤波、数据压缩、数据加密或其它相关步骤来操作表示图象的数据。这些步骤可用多媒体输入装置内的硬件或软件与/或在计算机系统820的处理器上执行的软件来执行。
在接收级802上,将与视频信号关联的数据存储在一部分计算机系统的存储器中。这一存储的数据表示诸如摄像机所传输的视频信号的数字样本。对于一个实施例,将数据组织成使计算机系统存储器内的多个寄存器中的各个包含一个组合数据集,其中该组合数据集的各数据元素表示视频图象的帧的相关象素。例如,对于一个实施例,一个64位寄存器包含8个组合字节,各字节与不同的象素关联,其中各字节的值表示其相关象素的256种可能颜色之一。在包含4个字的64位寄存器或包含8个字的128位寄存器,而各字与不同的象素关联的实施例中,可使用更大的彩色调色板。
关于另一实施例,用两个或更多独立数据元素来定义单个的象素。例如,在红绿兰(RGB)编码方案中,第一组合数据集中的一个数据元素定义象素的R值;第二组合数据集中的另一数据元素定义同一象素的G值;而第三组合数据集中的第三数据元素定义同一象素的B值。对于在其中实现联合图形专家组(JPEG)标准或运动图像专家组(MPEG)标准的实施例中,编码方案将象素的亮度与该象素的色度分开,在分开的组合数据集中存储表示它们中的各种的数据元素。象素的亮度表示该象素的灰度或亮度,而色度则表示该象素的颜色。
人眼比耐受亮度误差更能耐受颜色误差。通过分开表示象素亮度的数据元素与表示象素色度的数据元素,能使表示亮度的数据元素比表示象素色度的数据元素更大,从而为各象素保证更高的亮度精确性,同时使用来存储颜色信息的空间更经济。例如,对于一个实施例,用来表示亮度的数据元素的长度两倍于用来表示色度的数据元素的长度。分开存储亮度与色度数据元素的另一优点在于能用不同的压缩算法来压缩亮度与色度数据,优化用于要压缩的数据类型的每一种算法。
注意按照本发明的一个实施例,执行了视频信号的数字抽样。可用在接收级802或摄像机800之一中的模数转换器来执行视频信号的抽样。以相同方式,可用数模转换器执行将抽样的信号重新转换回模拟信号。可用诸如数字信号处理器等专用硬件实现模数及数模转换。然而,为了避免不必要地冲淡本发明,这里不详细描述波形抽样,并且为了清楚起见,图8B中示出的所有信号都是连续波形式。
一旦已将视频信号作为数据存储在计算机系统存储器中,便在压缩级803上操作该数据,其中可包含将数据压缩进较小的存储器空间中。此外,在本发明的其它实施例中,能用在计算机系统上的这一级上的逆离散余弦变换通过执行解压、滤波或图象边缘处理与检测操作多媒体数据。然而,在图8中,在级803上,通过占用较小的存储器空间,因为要修改、存储或传输的数据较少,更容易修改、存储或传输视频信号,需要更少的处理能力及系统资源。如图8B中所示,将存储在计算机系统的存储器寄存器中的视频信号812引导到压缩级803。在空间域中,视频信号812是用波形表示的,其中的信号振幅用垂直位移指示而时间或空间则用水平位移指示。
对于许多压缩方法,在分析或修改信号之前,希望将信号从空间域中变换到诸如频率域等另一域中。在压缩级803上接收视频信号812之后,便将信号从空间域变换到频率域中。在频率域中,原始信号的特定频率分量(如正弦或余弦波)的振幅是用垂直位移指示的,而原始信号的各频率分量的频率则是用水平位移指示的,在压缩级803内的步骤813上在频率域中示出视频波形812。
在一个实施例中,信号从空间域到频率域的变换包含执行表示该信号的数据元素的离散余弦变换。例如,按照某些JPEG与MPEG标准,将通常为8×8象素阵列的视频图象的正方形子区用离散余弦变换函数从空间域变换到频率域中。这一8×8象素阵列对应于8个存储器寄存器,各包含8个数字元素的组合数据集,各数据元素对应于8×8阵列中其相关象素的值(如颜色、亮度等)。对于另一实施例,实现其它变换函数,诸如傅里叶变换、快速傅里叶变换、快速哈特莱变换或子波变换。
一旦变换到频率域中,便能有选择地分析、衰减、放大或丢弃信号的单个频率分量。滤波是修改信号的一定频率分量的技术。通过选择丢弃某些频率分量而不明显地降低视频图象的外观的适当的滤波器函数,借此压缩视频信号,因为只有较少的定义该视频图象的频率分量。在压缩级803内的步骤814上以这一方式实现视频信号的频率分量的滤波。
将波形的各频率分量乘以低通滤波器函数的相关系数,或者当相关系数为0时,简单地不作为变换函数的一部分计算该频率分量。如图8B中所示,低通滤波器消除或衰减波形的高频分量,而允许低频分量通过。高频分量为超过预定极限(在一些应用中称作“截止频率”)的频率,而低频分量为低于预定极限的频率。
注意按照本发明的其它实施例,可用其它技术在频率域中处理波形的频率分量。对于一个实施例,用计算机系统820以类似方式分析与处理麦克风801传输的音频波形。例如,按照语音识别应用进行频率域中的音频波形的高次谐波分析。作为另一示例,在时间上调制音频波形的谐波频谱来起动话音声、声音效果或乐器。结合声音传输或存储应用,用滤波技术压缩音频波形。
除了只是压缩视频数据之外,视频图象也能在频率域中类似地处理。例如,对于本发明的一个实施例,在边缘检测技术中将高通滤波器作用在视频信号上。高通滤波器消除或衰减信号的低频分量而允许高频分量通过。因为视频图象的尖锐的高对比度边缘通常对应于相关视频图象的高频分量,高通滤波器将孤立出这些边缘。这一技术在运动与图象检测及识别应用中找到用处。同时,这一技术可在预测矢量量化压缩中找到应用,其中跟踪运动图象视频信号的连续帧中的边界的运动与预测生成相继的图象。
对于本发明的一个实施例,滤波了视频信号之后,通过将逆变换作用在数据上而将信号重新转换到空间域中。作为替代,信号保持在频率域中而在解压级中变换回空间域中,如下所述。从原始视频信号中消除这些高频分量并不明显地降低图像质量。通常,信号压缩得越多,图象保真度损失越大。因为人眼对亮度中的误差比色度中的更敏感,如上所述,视频信号的色度部分比亮度部分受到更高度的压缩。
此外,按照JPEG、MPEG及其它视频压缩方法,可在视频图象的不同区域上作用不同程度的压缩,以获得在需要较少图象细节的区域中更多的压缩而在需要较多细节的区域中较少的压缩。对于图象质量并不主要的实施例,诸如在电视会议应用中,高压缩与低帧率是适当的。高压缩是适当的,因为用户通常只须能辨别讲话人的脸而无须辨别复杂的细节。低帧率是适当的因为视频图象中可能只有较少物体的运动。达到较高压缩的一种方法是简单地使作用在视频信号上的低通滤波器函数变窄,从而消除更多高频分量。
通过截掉数据的精度然后采用以高效的方式存储重复项的编码方案便能达到进一步的压缩。按照MPEG标准,通过匹配相继的帧中的相似象素阵列并只编码帧间的差别或内插便能达到进一步的压缩。通过以这一方式压缩视频信号,信号将占用存储器中较少量的空间。压缩之后,便在步骤816上存储、显示与/或传输信号。例如,按照图8A中所示的实施例,在视频信号离开压缩级803之后,该信号便进入将压缩的视频信号传输到第二计算机系统821的接收级807的传输级804。因为视频信号是压缩的,极大地降低了将信号从发射机804传输到接收机807所需的带宽,使诸如电话线能用于传输。对于本发明的一个实施例,除了传输视频信号还在传输级804上加密视频信号。
在接收级807上接收到压缩的视频信号时,便将与该信号关联的数据加载进计算机系统存储器中。此外,如果视频信号是加密的,便在那里解密。在解压级808上,用包含诸如将逆变换作用在数据上将信号翻译回空间域中等方法解压该信号。这假定已从计算机系统820以频率域中的压缩格式传输了信号。对于在空间域中传输压缩的视频信号的实施例,可以不需要在解压级中的逆变换。然而,在频率域中可以更容易地完成音频或视频信号的解压,这要求将解压级808所接收的空间域信号变换到频率域中供解压,然后变换回到空间域中供显示。
一旦解压缩,便将信号传送给显示级809,该级可包括视频RAM(VRAM)阵列,并将图象显示在显示装置811上。利用这一技术,计算机系统820上的用户能将视频图象传输给计算机系统821供在第二计算机终端上观看。此外,计算机系统820也能将麦克风801采集的音频信息压缩并传输给计算机系统821,从扬声器810得到播放。类似地,计算机系统821可具有类似的视频与音频传输能力(未示出),允许在计算机系统820的显示装置806及扬声器805上分别显示与音频播放。
从以上描述中,显而易见这里所公开的发明提供了用于执行表示多媒体信息的组合数据的逆离散余弦变换的新颖的、加速的及优越的计算机系统。如熟悉本技术的人员所能理解的,本发明可不脱离其主要特征、而以其它特定形式实施,从而所描述的实施例并不限制本发明的范围。以下的权利要求指明本发明的范围,并且进入这些权利要求的等效意义与范围内的所有变型都包含在它们的范围之内。
附录A
为了实现8×8逆离散余弦变换(iDCT),在8×8矩阵的列与行上应用一维Arai-Agui-Nakajima iDCT算法。在本实施例中,利用单指令多数据(SIMD)指令集来实现本发明。在SIMD指令集中,使用了在4个分开的16位值上运算的指令。为了将8×8矩阵分成4个数据值,选择了以下结构:
M1 M2
M3 M4
以这一结构,可将矩阵的转置实现如下:
M1 M2 M1t M3t
--转置-→
M3 M4 M2t M4t
整个8×8的实现提供在以下程序清单中。提供了用代码执行的步骤的概述以便简化代码的阅读:
1.预定标:16次组合乘法
2.列0:偶数部分
3.列0:奇数部分
4.列0:输出蝶形
5.列1:偶数部分
6.列1:奇数部分
7.列1:输出蝶形
8.转置:M4部分
9.转置:M3部分
10.列1:偶数部分(转置后)
11.列1:奇数部分(转置后)
12.列1:输出蝶形(转置后)
13.转置:M2部分
14.转置:M1部分
15.列0:偶数部分(转置后)
16.列0:奇数部分(转置后)
17.列0:输出蝶形(转置后)
18.清除其中:a.列0表示前四列而列1表示其余四列。b.偶数部分表示使用偶下标元素的Arai-Agui-Nakajima iDCT算法部分c.奇数部分表示使用奇下标元素的Arai-Agui-Nakajima iDCT算法部分;以及d.输出蝶形表示使用偶数与奇数部分的结果生成一维iDCT的Arai-Agui-Nakajima iDCT算法的结束步骤。6.0.二维iDCT代码清单;esi-输入及输出数据指针;将输入数据转置,并且将8×8矩阵中的每个16位元素在对齐;即以11...1110000格式;如果iDCT是I宏块,则需要将0.5加到DC分量上。;(矩阵的元素[0][0])noliscinclude iammx.inc ;IAMMX仿真器宏MMWORD TEXTEQU <DWORD>.list.586.model flat_DATA SEGMENT PARA PUBLIC USE32 ′DATA′x0005000200010001 DQ 0005000200010001hx0040000000000000 DQ 40000000000000hx5a825a825a825a82 DW 5a82h,5a82h,5a82h,5a82h ; 23170x539f539f539f539f DW 539fh,539fh,539fh,539fh ; 21407x4546454645464546 DW 4546h,4546h,4546h,4546h ; 17734x61f861f861f861f8 DW 61f8h,61f8h,61f8h,61f8h ; 25080scratch1 DQ 0scratch3 DQ 0scratch5 DQ 0scratch7 DQ 0; 只用于调试x0 DQ 0preSC DW 16384,22725,21407,19266,16384,12973,8867,4520
DW 22725,31521,29692,26722,22725,7855,12299,6270
DW 21407,29692,27969,25172,21407,16819,11585,5906
DW 19266,26722,25172,22654,19266,15137,10426,5315
DW 16384,22725,21407,19266,16384,12873,8867,4520
DW 12873,17855,16819,15137,25746,20228,13933,7103
DW 17734,24598,23170,20853,17734,13933,9597,4892
DW 18081,25080,23624,21261,18081,14206,9785,4988_DATA ENDS_TEXT SEGMENT PARA PUBLIC USE3‘CODE’COMMENT-void idct8x8aan(
int16 *src_result);
public _idct8x8aan
_idct8x8aan proc near
push ebp
lea ecx, [preSC]
mov ebp,esp
push esi
mov esi,DWORD PTR[ebp+8] ; 源
;槽
;列0:偶部分
;利用V4,V12,V0,V8生成V22..V25
movq mm0,mmword ptr[ecx+8*12] ;第一个mul有可能与iHuff
;中的去量化一起进行
module? -
;槽
pmulhw mm0,mmword ptr[esi+8*12];V12
;槽
movq mm1,mmword ptr[ecx+8*4]
;槽
pmulhw mm1,mmword ptr[esi+8*4];V4
;槽
movq mm3,mmword ptr[ecx+8*0]
psraw mm0,1 ;t64=t66
pmulhw mm3,mmword ptr[esi+8*0] ; V0
;槽movq mm5,mmword ptr[ecx+8*8]movq mm2,mm1 ;复制V4pmulhw mm5,mmword ptr[esi+8*8] ; V8psubsw mm1,mm0 ; V16pmulhw mm1,mmword ptr x5a825a825a825a82 ;23170->V18paddsw mm2,mm0 ;V17movq mm0,m2 ;复制 V17psraw mm2,1 ;t75=t82psraw mm0,2 ;t72movq mm4,mm3 ;复制V0paddsw mm3, mm5 ; V19psubsw mm4,mm5 ;V20;mm5释放;moved from the block belowmovq mm7,mmword ptr[ecx+8*10]psraw mm3,1 ;t74=t81movq mm6,mm3 ;复制t74=t81psraw mm4,2 ;t77=t79psubsw mm1,-mm0 ;V21;mm0释放paddsw,mm3,mm2 ;V22movq mm5,mm1 ;复制V21paddsw mm1,mm4 ; V23movq mmword ptr(esi+9*4),mm3 ;V22psubsw mm4,mm5 ;V24;mm5释放movq mmword ptr(esi+8*12),mm1 ;V23psubsw mm6,mm2 ; V25;mm2释放movq mmword ptr [esi+8*0],mm4 ;V24;槽;在下一个块中使mm6保持活跃;movq mmword ptr [esi+8*8],mm6 ;V25;列0:奇部分;使用V2,V6,V10,V14产生V31,V39,V40,V41;moved above;movq mm7,mmword ptr[ecx+8*10]pmulhw mm7,mmword ptr[esi+8*10]; V10;槽movq mm0,mmword ptr[ecx+8*6];槽pmulhw mm0,mmword ptr [esi+8*6]; V6;槽movq mm5,mmword ptr[ecx+8*2]movq mm3,mm7 ;复制V10pmulhw mm5,mmword ptr[esi+8*2];V2;槽movq mm4,mmword ptr[ecx+8*14]psubsw mm7,mm0 ;V26pmulhw mm4,mmword ptr[esi+8*14];V14paddsw mm3,mm0 ;V29;释放mm0movq mm1,mm7 ;复制V26psraw mm3,1 ;t91=t94pmulhw mm7,mmword ptr x539f539f539f539f;V33psraw mm1,1 ;t96movq mm0,mm5 ;复制V2psraw mm4,2 ;t85=t87paddsw mm5,mm4 ;V27psubsw mm0,mm4 ;V28;释放mm4movq mm2,mm0 ;复制V28psraw mm51 ;t90=t93pmulhw mm0,mmword ptr x4546454645464546; V35psraw mm2,1 ;t97movq mm4,mm5 ;复制t90=t93psubsw mm1,mm2 ; V32;释放mm2pmulhw mm1,mmword ptr x51f861f861f861f8;V36psllw mm7,1 ;t107paddsw mm5,mm3 ;V31psubsw mm4,mm3 ;V30;释放mm3pmulhw mm4,mmword ptr x5a825a825a825a82;V34nop;槽psubsw mm0,mm1 ;V38psubsw mm1,mm7 ;V37;释放mm7psllw mm1,1 ;t114;从下一块移动movq mm3,mm6 ;复制V25;从下一块移动movq mm7,mmword ptr[esi+8*4] ;V22psllw mm0,1 ;t110psubsw mm0._mm5 ; V39(下一块仍需要mm5)psllw mm4,2 ;t112;从下一块移动movq mm2,mmword ptr[esi+8*12] ;V23psubsw mm4,mm0 ;V40paddsw mm1,mm4 ; V41;释放mm0;从下一块移动psllw mm2,1 ;t117=t125;列0;蝶形输出;move above;movq mm3,mm6 ;复制V25;movq mm7,mmword ptr[esi+8*4] ;V22;movq mm2,mmword ptr[esi+8*12] ;V23;psllw mm2,1 ;t117=t125psubsw mm6,mm1 ;tm6paddsw mm3,mm1 ;tm8;释放mm1movq mm1,mm7 ;复制V22paddsw mm7,mm5 ;tm0movq mmword ptr[esi+8*8],mm3 ;tm8;释放mm3psubsw mm1,mm5 ;tm14 ;释放mm5movq mmword ptr[esi+8*6],mm6 ;tm6;释放mm6movq mm3,mm2 ;复制t117=t125movq mm6,mmword ptr[esi+8*0] ;V24paddsw mm2,mm0 ;tm2movq mmword ptr[esi+8*0],mm7 ;tm0;释放mm7psubsw mm3,mm0 ;tm12;释放mm0movq mmword ptr[esi+8*14],mm1 ;tm14;释放mm1psllw mm6,1 ;t119=t123movq mmword ptr[esi+8*2],mm2 ; tm2;释放mm2movq mm0,mm6 ;复制t119=t123movq.mmword ptr[esi+8*12],mm3 ;tm12;释放mm3paddsw mm6,mm4 ;tm4;从下一块移动movq mm1,mmword ptr[ecx+8*5]psubsw mm0,mm4 ;tm10;释放mm4;从下一块移动pmulhw mm1,mmword ptr[esi+8*5];V5;槽movq mmword ptr[esi+8*4],mm6 ;tm4;释放mm6;槽movq mmword ptr[esi+8*10],mm0 ;tm10;释放mm0;槽;列1:偶数部分;利用V5,V13,V1,V9产生V56..V59;移到前一块;movq mm1,mmword ptr[ecx+8*5];pmulhw mm1,mmword ptr[esi+8*5];V5movq mm7,mmword ptr[ecx+8*13]psllw mm1,1 ;t129=t130pmulhw mm7,mmword ptr[esi+8*13];V13movq mm2,mm1 ;复制t128=t130movq mm3,mmword ptr[ecx+8*1];槽pmulhw mm3,mmword ptr[esi+8*1]; V1;槽movq mm5,mmword ptr[ecx+8*9]psubsw mm1,mm7 ; V50pmulhw mm5,mmword ptr[esi+8*9];V9paddsw mm2,mm7 ; V51pmulhw mm1,mmword ptr x5a825a825a825a82 ; 23170->V52movq mm6,mm2 ;复制V51psrawmm2,1 ;t138=t144movq mm4,mm3 ;复制V1psraw mm6,2 ;t136paddsw mm3,mm5 ;V53psubsw mm4,mm5 ;V54;mm5释放movq mm7,mm3 ;复制V53;从下一块移动movq mm0,mmword ptr [ecx+8*11]psraw mm4,1 ;t140=t142psubsw mm1,mm6 ;V55;mm6释放paddsw mm3,mm2 ;V56movq mm5,mm4 ;复制t140=t142paddsw mm4,mm1 ;V57movq mmword ptr(esi+8*5),mm3 ;V56psubsw mm5,mm1 ; V58; mm1释放movq mmword ptr[esi+8*13],mm4 ;V57psubsw mm7,mm2 ; V59; mm2释放movq mmword ptr[esi+8*9],mm5 ;V58;槽;keep mm7alive all along the next block;movq mmword ptr[esi+8*1],mm7 ;V59;moved above;movq mm0,mmword ptr[ecx+8*11]pmulhw mm0,mmword ptr[esi+8*11] ; V11;槽movq mm6,mmword ptr[ecx+8*7];槽pmulhw mm6,mmword ptr[esi+8*7] ;V7;槽movq mm4, mmword ptr[ecx+8*15]movq mm3,mm0 ;复制V11pmulhw mm4,mmword ptr[esi+8*15] ;V15;槽movq mm5,mmword ptr[ecx+8*3]psllw mm6,1 ; t146=t152pmulhw mm5,mmword ptr[esi+8*3] ; V3paddsw mm0,mm6 ; V63;注:V15计算具有校正步骤;;这是重新位移该结果使之更接近预期结果的‘magic’常量;在稍后阶段当该数实际上乘以16时,通过;进行该校正步骤可将该魔常数重新定义以更进一步减少误差paddw mm4,mmword ptr x0005000200010001psubsw mm3,mm6 ;V60 ;释放mm6psraw mm0,1 ;t154=t156movq mm1 , mm3 ;复制V60pmulhw mm1,mmword ptr x539f539f539f539f ;V67movq mm6,mm5 ;复制V3psraw mm4,2 ;t148=t150;slotpaddsw mm5,mm4 ;V61psubsw mm6,mm4 ;V62;释放mm4movq mm4,mm5 ;复制V61psllw mm1,1 ;t169paddsw mm5,mm0 ;V65->结果psubsw mm4,mm0 ;V64;释放mm0pmulhw mm4,mmword ptr x5a825a825a825a82 ;V68psraw mm3,1 ;t158psubsw mm3,mm6 ;V66movq mm2,mm5 ;复制V65pmulhw mm3,mmword ptr x61f861f861f861f8 ;V70psllw mm6,1 ;t165pmulhw mm6,mmword ptr x4546454645464546 ;V69psraw mm2,1 ;t172;moved from next blockmovq mm0,mmword ptr(esi+8* 5) ;V56psllw mm4,1 ;t174;moved from next blockpsraw mm0,1 ;t177=t188nop ;槽psubsw mm6,mm3 ;V72psubs;W mm3,mm1 ;V71 ;释放mm1psubsw mm6,mm2 ;V73 ;释放mm2;moved from next blockpsraw mm5,1 ;t178=t189psubsw mm4,mm6 ; V74;moved from next blockmovq mm1,mm0 ;复制t177=t188paddsw mm3,mm4 ;V75;moved from next blockpaddsw mm3,mm5 ;tm1;location; 5-V56;13-V57; 9-V58; X-V59,mm7; X-V65,mm5; X-V73,mm6; X-V74,mm4; X-V75,mm3;free mm0,mm1&mm2;move above;movq mm0,mmword ptr[esi+8*5] ;V56;psllw mm0,1 ;t177=t188!new!!;psllw mm5,1 ;t178=t189! new!!;movq mm1,mm0 ;复制t177=t188;paddsw mm0,mm5 ;tm1movq mm2,mmword ptr[esi+8*13] ;V57psubsw mm1,mm5 ;tm15;释放mm5movq mmword ptr[esi+8*1],mm0 ;tm1;释放mm0psraw mm7,1 ;t182=t184!new!!;将该结果保存起来作为在转置中直接使用的;movq mmword ptr[esi+8*15],mm1 ;tm15;释放mm1movq mm5,mm7 ;复制t182=t184psubsw mm7mm3 ;tm7paddsw mm5,mm3 ;tm9;释放mm3;slotmovq mm0,mmword ptr[esi+8*9] ;V58movq mm3,mm2 ;复制V57movq mmword ptr[esi+8*7],mm7 ;tm7 ;释放mm7psubsw mm3,mm6 ;tm13paddsw mm2,mm6 ;tm3;释放mm6;从转置向上移动movq mm7,mm3;从转置向上移动punpcklwd mm3,mm1movq mm6,mm0 ;复制V58movq mmword ptr[esi+8*3],mm2 ;tm3;释放mm2paddsw mm0,mm4 ;tm5psubsw mm6,mm4 ;tm11;释放mm4;从转置向上移动punpckhwd mm7,mm1movq mmworc-ptr[esi+8*5],mm0 ;tm5;释放mm0;从转置向上移动movq mm2,mm5;转置-M4部分; --------- ---------; |M1|M2| |M1′|M3′|; --------- --> ---------; |M3|M4| |M2′|M4′|; --------- ---------;两种选择:使用全mmword方案,使在进行转置没有存储;之前调度下列代码,或者使用更快的;半mmword存储(在可能时)movdf dword ptr[esi+8*9+4],mm3;tmt9的MS部分punpcklwd mm5,mm6movdf dword ptr[esi+8*13+4],mm7 ;tmt13的MS部分punpckhwd mm2,mm6movdf dword ptr[esi+8*9],mm5 ;tmt9的LS部分punpckhdq mm5,mm3 ;释放mm3movdf dword ptr[esi+8*13],mm2 ; tmt13的LS部分punpckhdq mm2,mm7 ;释放mm7;从M3转置向上移动movq mm0,mmword ptr[esi+8*8];slot;从M3转置向上移动movq mm1,mmword ptr[esi+8*10];moved up from the M3 transposemovq mm3,mm0;重排其余的数据,并用2次mmword写入将它写入movq mmword ptr[esi+8*11],mm5 ;tmt11;从M3转置向上移动punpcklwd mm0,mm1movq mmword ptr(esi+8*15),mm2 ;tmt15;moved up from the M3 transposepunpckhwd mm3,mm1;转置-M3部分;移向前一代码段;movq mm0,mmword ptr[esi+8*8];movq mm1,mmword ptr[esi+8*10];movq mm3,mm0;punpcklwd mm0,mm1;punpckhwd mm3,mm1movq mm6,mmword ptr[esi+8*12];槽movq mm4,mmword ptr[esi+8*14]movq mm2,mm6;重排数据,并且以4个dword写该转置的较低部分punpcklwd mm6,mm4movq mm1,mm0punpckhdq mm1,mm6movq mm7,mm3punpckhwd mm2,mm4;释放mm4;槽punpckldq mm0,mm6 ;释放mm6;槽;从下一块移动movq mm4,mmword ptr[esi+8*13] ;tmt13punpckldq mm3,mm2punpckhdq mm7,mm2 ;释放mm2;从下一块移动movq mm5,mm3 ;复制tmt5;列1:偶数部分(转置后);moved above;movq mm5,-mm3 ;复制tmt5;movq mm4,mmword ptr[esi+8*13] ;tmt13psubsw mm3,mm4 ;V134;槽pmulhw mm3,mmword ptr x5a825a825a825a82 ;23170->V136;槽movq mm6,mmword ptr[esi+8*9] ;tmt9paddsw mm5,mm4 ;V135 ; mm4释放movq mm4,mm0 ;复制tmt1paddsw mm0,mm6 ;V137psubsw mm4,mm6 ;V138;mm6释放psllw mm3,2 ;t290psubsw mm3,mm5 ;V139movq mm6,mm0 ;复制V137paddsw mm0,mm5 ;V140movq mm2,mm4 ;复制V138paddsw mm2,mm3 ;V141psubsw mm4,mm3 ;V142;mm3释放movq mmword ptr[esi+8*9],mm0 ;V140psubsw mm6,mm5 ; V143;mm5释放;从下一块移动movq mm0,mmword ptr[esi+8*11] ;tmt11;槽movq mmword ptr[esi+8*13],mm2;V141;从下一决移动movq mm2,mm0 ;复制tmt11;列1:奇数部分(转置后);移向前一块;movq mm0,mmword ptr[esi+8*11] ;tmt11;movq mm2,mm0 ;复制tmt11movq mm5,mmword ptr[esi+8*15] ;tmt15psubsw mm0,mm7 ;V144movq mm3,mm0 ;复制V144paddsw mm2,mm7 ;V147;释放mm7pmulhw mm0,mmword ptr x539f539f539f539f ;21407->V151movq mm7,mm1 ;复制tmt3paddsw mm7,mm5 ;V145psubsw mm1,mm5 ;V146;释放mm5psubsw mm3,mm1 ;V150movq mm5,mm7 ;复制V145pmulhw mm1,mmword ptr x4546454645464546 ;17734->V153psubsw mm5,mm2 ;V148pmulhw mm3,mmword ptr x61f861f861f861f8 ;25080->V154psllw mm0,2 ;t311pmulhw mm5,mmword ptr x5a825a825a825a82 ;23170->V152paddsw mm7,mm2 ;V149;释放mm2psllw mm1,1 ;t313nop ;槽;用上述nop在此冻结一个时钟;该nop清除一些位movq mm2,mm3 ;复制V154psubsw mm3,mm0 ;V155 ;释放mm0psubsw mm1,mm2 ; V156 ;释放mm2;moved from the next blockmovq mm2,mm6 ;复制V143;moved from the next blockmovq mm0,mmword ptr[esi+8*13] ;V141psllw mm1,1 ;t315psubsw mm1,mm7 ;V157(keep V149)psllw mm5,2 ;t317psubsw,mm5,mm1 ;V158psllw mm3,1 ;t319paddsw mm3,mm5 ;V159;槽;列1:蝶形输出(转置后);移至前一块;movq mm2,mm6 ;复制V143;movq mm0,mmword ptr[esi+8*13] ;V141psubsw mm2,mm3 ;V163paddsw mm6,mm3 ;V164 ;释放mm3movq mm3,mm4 ;复制V142psubsw mm4,mm5 ;V165 ;释放mm5movq mmword ptr scratch7,mm2 ;out7psraw mm6,4psraw mm4,4paddsw mm3,mm5 ;V162movq mm2,mmword ptr[esi+8*9] ;V140movq mm5,mm0 ;复制V141;in order not to preculate this line up,we read[esi+8*9] verynear to this locationmovq mmword ptr[esi+8*9],mm6 ;out9paddsw mm0,mm1 ; V161movq mmword ptr scratch5,mm3 ;out5psubsw mm5,mm1 ; V166;释放mm1movq mmword ptr[esi+8*11],mm4 ;out11psraw mm5,4movq mmword ptr scratch3,mm0 ;out3movq mm4,mm2 ;复制V140movq mmword ptr[esi+8*13],mm5 ;out13paddsw mm2,mm7 ;V160;从下一块移动movq mm0,mmword ptr[esi+8*1]psubsw mm4,mm7 ;V167;释放mm7;从下一块移动movq mm7,mmword ptr[esi+8*3]psraw mm4,4movq mmword ptr scratch1,mm2 ;out1;从下一块移动movq mm1,mm0movq mmword ptr[esi+8*15],mm4 ;out15;从下一块移动punpcklwd mm0,mm7;转置-M2部分;moved up to the prev block;movq mm0,mmword ptr[esi+8*1];movq mm7,mmword ptr[esi+8*3];movq mm1,mm0;punpcklwd mm0,mm7movq mm5,mmword ptr[esi+8*5]punpckhwd mm1,mm7movq mm4,mmword ptr[esi+8*7]movq mm3,mm5;重排数据并以4个dword写转置的较低部分in 4 dwordsmovdf dword ptr[esi+8*8],mm0 ;tmt8的LS部分Punpcklwd mm5,mm4movdf dwotd ptr[esi+8*12],mm1 ;tmt12的LS部分punpckhwd mm3,mm4movdf dword ptr[esi+8*8+4],mm5 ;tmt8的MS部分punpckhdq mm0,mm5 ;tmt10movdf dword ptr[esi+8*12+4],m3 ;tmt12的MS部分punpckhdq mm1,mm3 ;tmt14;转置-M1部分movq mm7,mmword ptr[esi];槽movq mm2,mmword ptr[esi+8*2]movq mm6,mm7movq mm5,mmword ptr[esi+8*4]punpcklwd mm7,mm2movq mm4,mmword ptr[esi+8*6]punpckhwd mm6,mm2 ;free mm2movq mm3,mm5punpcklwd mm5,mm4Paddsw mm5,mm3 ;out2psraw mm1,4movq mmword ptr[esi],mm7 ;out0;释放mm7psraw mm5,4movq mmword ptr[esi+8*14],mm1 ;out14;释放mm1psubsw mm2,mm3 ;out12;释放mm3movq mmword ptr[esi+8*2],mm5 ;out2;释放mm5psraw mm2,4;向前一块移动movq.mm4,mmword ptr scratch7;向前一块移动psraw mm0,4movq mmword ptr[esi+8*12],mm2 ;out12 ;释放mm2;向前一块移动psraw mm6,4;将该数据移回正确位置;向前一块移动;movq mm0,mmword ptr scratch3;movq mm6,mmword ptr scratch5;movq mm4,mmword ptr scratch7;psraw mm0,4;psraw mm6,4movq mm1,mmword ptr scratchlpsraw mm4,4movq mmword ptr[esi+8*3],mm0 ;out3psraw mm1,4movq mmword ptr[esi+8*5],mm6 ;out5;槽movq mmword ptr[esi+8*7],mm4 ;out7;槽movq mmword ptr[esi+8*1],mm1 ;out1psllw mm0,2 ;t266movq mmword ptr[esi+8*0],mm1 ;保存V115psllw mm5,1 ;t268psubsw mm5,mm4 ;V122psubsw mm4,mm0 ;V121;释放mm0psllw mm5,1 ;t270;槽psubsw mm5,mm1 ;V123 ;释放mm1psllw mm2,2 ;t272psubsw mm2,mm5 ;V124(保持V123)psllw mm4,1 ;t274movq mmword ptr[esi+8*2],mm5 ;保存V123;释mm5paddsw mm4,mm2 ;V125(保持V124);列0:偶数部分(转置后)movq mm0,mmword ptr[esi+8*12] ;tmt12movq mm3,mm6 ;复制tmt4psubsw mm6,mm0 ;V100paddsw mm3,mm0 ;V101;释mm0pmulhw mm6,mmword ptr x5a825a825a825a82;23170->V102movq mm5,mm7 ;复制tmt0movq mm1,mmword ptr[esi+8*8] ;tmt8;槽paddsw mm7,mm1 ;V103psubsw mm5,mm1 ;V104;释放mm1movq mm0,mm7 ;复制V103psllw mm6,2 ;t245paddsw mm7,mm3 ;V106movq mm1,mm5 ;复制V104psubsw mm6,mm3 ;V105punpckhwd mm3,mm4;释放mm4movq mm2,mm7movq mm4,mm6punpckldq mm7,mm5;tmt0punpckhdq mm2,mm5;tmt2;释放mm5;槽;重排其余的数据并以2次mmword写对它进行写punpckldq mm6,mm3 ;tmt4movq mm5,mm2 ;复制tmt2punpckhdq mm4,mm3 ;tmt6;释放mm3;从下一块移动movq mm3,mm0 ;复制tmt10;列0:奇数部分(转置后);向前一块移动;movq mm3,mm0 ;复制tmt10;movq mm5,mm2 ;复制tmt2psubsw mm0,mm4 ;V110paddsw mm3,mm4 ;V113;释放mm4movq mm4,mm0;复制V110paddsw mm2,mm1 ;V111pmulhw mm0,mmword ptr x539f539f539f539f ;21407->V117psubsw mm5,mm1 ;V112;释放mm1psubsw mm4,mm5 ;V116movq mm1,mm2 复制V111pmulhw mm5,mmword ptr x4546454645464546 ;17734->V119psubsw mm2,mm3 ;V114pmulhw mm4,mmword ptr x61f861f861f861f8 ;25080->V120paddsw mm1,mm3 ;V115;释放mm3pmulhw mm2,mmword ptr x5a825a825a825a82 ;23170->V118psubsw mm0,mm3 ;V109;释放mm3paddsw mm5,mm6 ;V107psubsw mm1,m6 ;V108;释放mm6;列0:蝶形输出(转置后)movq mm3,mm1 ;复制V108paddsw mm1,mm2 ;out4psraw mm1,4psubsw mm3,mm2 ;out10;释放mm2psraw mm3,4movq mm6,mm0;复制V109movq mmword ptr(esi+8*4),mm1 ;out4 ;释放mm1psubsw mm0,mm4 ;out6movq mmword ptr[esi+8*10],mm3 ;out10 ;释放mm3psraw mm0,4paddsw mm6,mm4 ;out8;释放mm4movq mm1,mm7;复制V106movq mmword ptr[esi+8*6],mm0 ;out6 ;释放mm0psraw mm6,4movq mm4;mmword ptr[esi+8*0];V115;槽movq mmword ptr[esi+8*8],mm6 ;out8 ;释放mm6movq mm2,mm5 ;复制V107movq mm3,mmword ptr[esi+8*2] ;V123paddsw mm7,mm4 ;out0;从下一块移动movq mm0,mmword ptr scratch3psraw mm7,4;从下一块移动movq mm6,mmword ptr scratch5psubsw m1,mm4 ;out14;释放mm4;槽emmspop esipop ebpret 0_idct8x8aan ENDP_TEXT ENDS_END
Claims (18)
1.一种计算机系统,包括:
生成音频或视频信号的多媒体输入装置;
连接到多媒体输入装置上的处理器;
连接到处理器上的存储器装置,其中存储有用于变换矩阵的逆离散余弦变换例程,所述矩阵包含与音频或视频信号关联的多个输入值,当由处理器执行时,该逆离散余弦变换例程使处理器执行下述步骤:
定标一组输入值;
在所述输入值的所述组上并发执行一组运算,所述运算组实现一维逆离散余弦变换,并发执行一组运算的所述步骤包括下述子步骤:
执行完成数学运算的SIMD数学指令,所述SIMD指令生成中间结果;
执行SIMD移位指令,所述SIMD移位指令移位中间结果以保持有效数字位;以及
根据实现所述一维逆离散余弦变换的需要,重复执行SIMD数学指令及执行SIMD移位指令的所述步骤。
2.权利要求1中所要求的计算机系统,其中所述一维逆离散余弦变换为Arai-Agui-Nakajima iDCT算法。
3.权利要求1中所要求的计算机系统,其中所述SIMD移位指令为组合算术右移指令。
4.权利要求1中所要求的计算机系统,其中所述SIMD移位指令为组合逻辑左移指令。
5.权利要求1的计算机系统,其中所述多媒体输入装置为电视摄像机。
6.一种计算机系统,包括:
生成音频或视频信号的多媒体输入装置;
连接到多媒体输入装置上的处理器;
连接到处理器上的存储器装置,其中存储有用于变换矩阵的二维逆离散余弦变换例程,所述矩阵包括与该音频或视频信号关联的多个输入值,当由处理器执行时,该逆离散余弦变换例程使处理器执行下述步骤:
转置所述输入值矩阵以生成转置的输入值矩阵;
定标所述输入值;
用一维逆离散余弦变换变换所述转置矩阵的列;
转置所述转置矩阵以生成最终矩阵;以及
用一维逆离散余弦变换变换所述最终矩阵的列。
7.权利要求6中所要求的计算机系统,其中所述输入值矩阵包括MPEG数据。
8.权利要求7中所要求的计算机系统,其中所述转置输入值矩阵的步骤是在MPEG数据的锯齿形扫描期间执行的。
9.权利要求6中所要求的计算机系统,其中所述一维逆离散余弦变换为Arai-Agui-Nakajima iDCT算法。
10.权利要求6的计算机系统,其中所述多媒体输入装置为电视摄像机。
11.权利要求6中所要求的计算机系统,其中所述变换步骤包括下述子步骤:
执行完成数学运算的SIMD数学指令,所述SIMD指令生成中间结果;
执行SIMD移位指令,所述SIMD移位指令移位中间结果以保持有效数字位;以及
根据实现所述一维逆离散余弦变换的需要重复执行SIMD数学指令及执行SIMD移位指令的所述步骤。
12.权利要求11中的计算机系统,其中所述SIMD移位指令为组合算术右移指令。
13.权利要求11中所要求的计算机系统,其中所述SIMD移位指令为组合逻辑左移指令。
14.一种计算机系统,包括:
包含生成音频或视频信号的麦克风或摄像机的输入装置;
连接到输入装置上的处理器;
连接到处理器上的存储器装置,其中存储有用于变换矩阵的逆离散余弦变换例程,所述矩阵包含与音频或视频信号关联的多个输入值,当由处理器执行时,该逆离散余弦变换例程使处理器执行以下步骤:
定标所述输入值组;
在所述输入值的所述组上并发执行一组运算,所述运算组实现一维逆离散余弦变换,并发执行一组运算的所述步骤包括下述子步骤:
执行完成数学运算的SIMD数学指令,所述SIMD指令生成中间结果;
执行SIMD移位指令,所述SIMD移位指令移位中间结果以保持有效数字位;以及
根据实现所述一维逆离散余弦变换的需要,重复执行SIMD数学指令及执行SIMD移位指令的所述步骤。
15.权利要求14中所要求的计算机系统,其中所述一维逆离散余弦变换为Arai-Agui-Nakajima iDCT算法。
16.权利要求14中所要求的计算机系统,其中所述SIMD移位指令为组合算术右移指令。
17.权利要求14中所要求的计算机系统,其中所述SIMD移位指令为组合逻辑左移指令。
18.权利要求14中所要求的计算机系统,其中所述输入值矩阵包括MPEG信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/610,872 US5754456A (en) | 1996-03-05 | 1996-03-05 | Computer system performing an inverse cosine transfer function for use with multimedia information |
US08/610,872 | 1996-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1217077A true CN1217077A (zh) | 1999-05-19 |
CN1132114C CN1132114C (zh) | 2003-12-24 |
Family
ID=24446757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97194236A Expired - Lifetime CN1132114C (zh) | 1996-03-05 | 1997-03-05 | 对二维矩阵进行二维逆离散余弦变换的计算机实现方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5754456A (zh) |
EP (2) | EP0885421A4 (zh) |
KR (1) | KR100331136B1 (zh) |
CN (1) | CN1132114C (zh) |
AU (1) | AU2531097A (zh) |
WO (1) | WO1997033236A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100367273C (zh) * | 2002-03-12 | 2008-02-06 | 英特尔公司 | 执行n×m离散余弦变换的方法 |
CN110221807B (zh) * | 2019-06-06 | 2021-08-03 | 龙芯中科(合肥)技术有限公司 | 数据移位方法、装置、设备及计算机可读存储介质 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134270A (en) * | 1997-06-13 | 2000-10-17 | Sun Microsystems, Inc. | Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same |
KR100538605B1 (ko) | 1998-03-18 | 2005-12-22 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 데이터 처리 장치, 행렬 변환 방법 및 컴퓨터 판독가능한 매체 |
US6473534B1 (en) * | 1999-01-06 | 2002-10-29 | Hewlett-Packard Company | Multiplier-free implementation of DCT used in image and video processing and compression |
US6772186B1 (en) | 1999-07-19 | 2004-08-03 | Renesas Technology Corp. | Multimedia multiply-adder |
US6421696B1 (en) | 1999-08-17 | 2002-07-16 | Advanced Micro Devices, Inc. | System and method for high speed execution of Fast Fourier Transforms utilizing SIMD instructions on a general purpose processor |
US6832232B1 (en) * | 2000-07-10 | 2004-12-14 | Advanced Micro Devices, Inc. | Dual-block inverse discrete cosine transform method |
US6742010B1 (en) * | 2000-07-10 | 2004-05-25 | Advanced Micro Devices, Inc. | Dual-block discrete consine transform method |
US6973469B1 (en) | 2001-02-01 | 2005-12-06 | Advanced Micro Devices, Inc. | Two-dimensional discrete cosine transform using SIMD instructions |
US6996595B2 (en) * | 2001-05-16 | 2006-02-07 | Qualcomm Incorporated | Apparatus and method for consolidating output data from a plurality of processors |
FI111592B (fi) * | 2001-09-06 | 2003-08-15 | Oulun Yliopisto | Menetelmä ja laite peräkkäisten kuvien koodaamiseksi |
KR100475246B1 (ko) * | 2001-10-23 | 2005-03-10 | 한국전자통신연구원 | 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 |
US7003461B2 (en) | 2002-07-09 | 2006-02-21 | Renesas Technology Corporation | Method and apparatus for an adaptive codebook search in a speech processing system |
US7379956B2 (en) * | 2002-07-14 | 2008-05-27 | Apple Inc. | Encoding and decoding data arrays |
US7376280B2 (en) * | 2002-07-14 | 2008-05-20 | Apple Inc | Video encoding and decoding |
EP2089812A2 (en) * | 2006-06-26 | 2009-08-19 | QUALCOMM Incorporated | Efficient fixed-point approximations of forward and inverse discrete cosine transforms |
US8606023B2 (en) * | 2006-06-26 | 2013-12-10 | Qualcomm Incorporated | Reduction of errors during computation of inverse discrete cosine transform |
US8571340B2 (en) * | 2006-06-26 | 2013-10-29 | Qualcomm Incorporated | Efficient fixed-point approximations of forward and inverse discrete cosine transforms |
US8660380B2 (en) * | 2006-08-25 | 2014-02-25 | Nvidia Corporation | Method and system for performing two-dimensional transform on data value array with reduced power consumption |
US8300698B2 (en) * | 2006-10-23 | 2012-10-30 | Qualcomm Incorporated | Signalling of maximum dynamic range of inverse discrete cosine transform |
GB2444744B (en) * | 2006-12-12 | 2011-05-25 | Advanced Risc Mach Ltd | Apparatus and method for performing re-arrangement operations on data |
US8237865B2 (en) * | 2006-12-18 | 2012-08-07 | Emanuele Salvucci | Multi-compatible low and high dynamic range and high bit-depth texture and video encoding system |
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US11941397B1 (en) * | 2022-05-31 | 2024-03-26 | Amazon Technologies, Inc. | Machine instructions for decoding acceleration including fuse input instructions to fuse multiple JPEG data blocks together to take advantage of a full SIMD width of a processor |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0575675B1 (en) * | 1992-06-26 | 1998-11-25 | Discovision Associates | Method and apparatus for transformation of signals from a frequency to a time domaine |
US5483475A (en) * | 1993-09-15 | 1996-01-09 | Industrial Technology Research Institute | Fast pipelined 2-D discrete cosine transform architecture |
JP3697717B2 (ja) * | 1993-09-24 | 2005-09-21 | ソニー株式会社 | 2次元離散コサイン変換装置および2次元逆離散コサイン変換装置 |
US5428567A (en) * | 1994-05-09 | 1995-06-27 | International Business Machines Corporation | Memory structure to minimize rounding/trunction errors for n-dimensional image transformation |
US5610849A (en) * | 1995-06-23 | 1997-03-11 | United Microelectronics Corporation | Real time two-dimensional discrete cosine transform/inverse discrete cosine transform circuit |
-
1996
- 1996-03-05 US US08/610,872 patent/US5754456A/en not_active Expired - Lifetime
-
1997
- 1997-03-05 EP EP97916777A patent/EP0885421A4/en not_active Withdrawn
- 1997-03-05 CN CN97194236A patent/CN1132114C/zh not_active Expired - Lifetime
- 1997-03-05 KR KR1019980706989A patent/KR100331136B1/ko not_active IP Right Cessation
- 1997-03-05 WO PCT/US1997/004152 patent/WO1997033236A1/en active IP Right Grant
- 1997-03-05 AU AU25310/97A patent/AU2531097A/en not_active Abandoned
- 1997-03-05 EP EP03013360A patent/EP1363198A3/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100367273C (zh) * | 2002-03-12 | 2008-02-06 | 英特尔公司 | 执行n×m离散余弦变换的方法 |
CN110221807B (zh) * | 2019-06-06 | 2021-08-03 | 龙芯中科(合肥)技术有限公司 | 数据移位方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO1997033236A1 (en) | 1997-09-12 |
KR100331136B1 (ko) | 2002-05-09 |
EP0885421A4 (en) | 1999-08-25 |
EP0885421A1 (en) | 1998-12-23 |
CN1132114C (zh) | 2003-12-24 |
EP1363198A3 (en) | 2005-11-02 |
US5754456A (en) | 1998-05-19 |
AU2531097A (en) | 1997-09-22 |
KR19990087552A (ko) | 1999-12-27 |
EP1363198A2 (en) | 2003-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1132114C (zh) | 对二维矩阵进行二维逆离散余弦变换的计算机实现方法 | |
CN1269027C (zh) | 数据并行右移合并的方法与装置 | |
CN1791222A (zh) | 对有损及无损的2-d数据压缩的可逆转换 | |
TWI270007B (en) | Method and apparatus for shuffling data | |
CN100338570C (zh) | 用于数据的并行右移位合并的方法和装置 | |
CN1697328A (zh) | 快速视频编解码变换实现 | |
CN1805547A (zh) | 用于高效无损数据压缩的可逆重叠算子 | |
CN1455599A (zh) | 图像和视频编码的2-d变换 | |
CN1577257A (zh) | 具有取整和移位的单指令多数据整数高位乘法 | |
US6799192B1 (en) | Method and apparatus for inverse discrete cosine transform | |
CN1280709C (zh) | 退色补偿的参数化 | |
CN1126065C (zh) | 压缩和解压缩图象 | |
CN1147306A (zh) | 多指令集映射 | |
US5754457A (en) | Method for performing an inverse cosine transfer function for use with multimedia information | |
Garrido et al. | An FPGA-based architecture for the versatile video coding multiple transform selection core | |
Basoglu et al. | The MAP1000A VLIM mediaprocessor | |
Shahbahrami et al. | Matrix register file and extended subwords: two techniques for embedded media processors | |
Panchbhaiyye et al. | An efficient FIFO based accelerator for convolutional neural networks | |
WO1997024681A9 (en) | A computer system performing a two-dimensional rotation of packed data representing multimedia information | |
WO1997024681A1 (en) | A computer system performing a two-dimensional rotation of packed data representing multimedia information | |
Shen et al. | Pipelined implementation of AI-based Loeffler DCT | |
CN1209926C (zh) | 运用于图像编码和视频编码的整数变换方法和装置 | |
De Neve et al. | GPU-assisted decoding of video samples represented in the YCoCg-R color space | |
CN1275393C (zh) | 数据格式代码转换装置 | |
Bouville et al. | DVFLEX: A flexible MPEG real time video codec |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20031224 |
|
CX01 | Expiry of patent term |