CN101330620A - 一种音视频数据编解码的方法及装置 - Google Patents
一种音视频数据编解码的方法及装置 Download PDFInfo
- Publication number
- CN101330620A CN101330620A CN 200810117830 CN200810117830A CN101330620A CN 101330620 A CN101330620 A CN 101330620A CN 200810117830 CN200810117830 CN 200810117830 CN 200810117830 A CN200810117830 A CN 200810117830A CN 101330620 A CN101330620 A CN 101330620A
- Authority
- CN
- China
- Prior art keywords
- data
- encoding
- overflow
- decoding
- judgement
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种音视频数据编解码的方法及装置。所述方法包括:输入定点运算数据;对输入数据进行运算,其中根据编解码规则,数据范围和分布通过溢出概率运算选择运算单元位长,分配数据运算精度;利用判定溢出的标志位和判定溢出的算法判断运算结果是否出现溢出;在未出现溢出的情况下,输出运算结果。利用本发明在提高数据运算精度的同时也实现了较高的运算速度,是对音视频传统编解码技术的重要的改进。
Description
技术领域
本发明涉及音视频编解码领域,具体来说是关于一种音视频数据编解码的方法及装置。
背景技术
在音视频编解码处理中,定点运算数据在变换时的精度是一个很重要的问题。精度不足直接影响到音频或图像的质量。更严重的是,有时精度不足还会累加起来,例如IDCT精度失配造成的漂移等问题。所以,在很多时候,必须保证一定的运算精度。但是,由于数据需要进行一系列的运算,有可能产生溢出问题,而高精度往往需要使用更高的运算单元,这通常带来成本的增加。特别是对一些较低位长运算单元的设备,使用传统方法往往不能兼顾精度和溢出,而使用软件处理超过运算单元本身位长的数据(如使用16Bit的CPU处理大量32Bit的数据,特别是乘除法运算)又会大大降低运算的处理速度。
此外,在实际应用中,稍低于理论需要精度的设计导致出现溢出的机率很低。这是因为,首先,很多输入数据在合法值内的分布是不均匀的,基本集中在一个较小区间,很少有达到或接近允许值的,例如,在某种应用下,IDCT运算的理论输入值为[-1024,1023],但实际的输入值基本都集中在[-32,32]以内,而处理后面范围的数据往往就可以比前面范围的数据降低精度。其次,很多数据要经过多次运算处理,这就造成了只有多个数据都处于极限情况下,溢出才可能发生,这进一步降低了溢出产生的概率。再次,有些时候,某些范围的数据可以使用较为简单快速的方法进行处理,如查表等,而全范围的数据往往不能使用这个方法。
综上所述,在音视频编解码应用中,当其他条件一定时,适当增大数据精度可能导致数据溢出问题,但出现这种溢出的机率是很低的,故如果能够区分溢出和不溢出的情况,可以在大多数时间内使用较低的成本和较高的运算速度实现运算。而在极少可能出现的溢出的情况下,可以通过其他方法,如通过较为复杂的软件处理,得到正确的结果。这样,如果后面一种情况出现的概率足够低的话,就能在相同的成本下获得更好的性能,或达到降低成本的目的。
发明内容
本发明的目的就在于提供一种音视频数据编解码的方法及装置,提高音视频定点编解码运算精度,从而达到使用较低的运算成本,提高运算精度,又不影响运算速度。
本发明目的通过下述方法实现:一种音视频数据编解码的方法,包括以下步骤:(1)输入定点运算数据;(2)对输入数据进行运算,其中根据编解码规则,数据范围和分布通过溢出概率运算选择运算单元位长,分配数据运算精度;(3)利用判定溢出的标志位和判定溢出的算法判断运算结果是否出现溢出;(4)在未出现溢出的情况下,输出运算结果。上述步骤(3)可以是在获得所有数据的运算结果的基础上进行溢出判断,也可以是循环对每组数据的运算结果分别进行溢出判断。在上述步骤中所设置的标志位可以是运算结果的最高位。本发明所述的方法还包括在判断出现溢出的情况下采用具有较大运算单元位长或较低数据运算精度的运算算法重新进行运算。
本发明还包括为实现上述音视频数据编解码方法的装置,包括输入定点运算数据的输入模块;对输入数据进行运算的模块,其中根据编解码规则,数据范围和分布通过溢出概率运算选择运算单元位长,分配数据运算精度;利用判定溢出的标志位和判定溢出的算法判断运算结果是否出现溢出的判断模块;和在未出现溢出的情况下,输出运算结果的输出模块。
使用本发明的方法和装置与传统音视频数据编解码方法相比较,提高了数据运算的精度,同时也实现了较高的运算速度,可以说是对音视频传统编解码方法的一个重要的改进,具有重要的现实意义。
附图说明
下面参照附图对本发明的具体实施方案进行详细的说明,附图中:
图1是本发明所用方法的流程图;
图2是本发明一种音视频数据编解码处理具体流程图;
图3是本发明另一种音视频数据编解码处理具体流程图。
具体实施方式
下面结合图1、图2和图3对本发明的方法进行具体说明。
图1是本发明所用方法的流程图。图1中,数据输入后,首先确定数据的精度和运算单元的位长。确定这些时要考虑编解码运算规则,输入数据的范围和分布等。设计的目的是使数据的精度更高或使运算单元的位长更小,同时,出现溢出的概率较小。
根据前步确定的数据精度进行运算后设置判定溢出的标志位并判定溢出的算法。硬件运算模块中可以直接设计相关标志位,而软件应设置必要判断条件。溢出的判定不须为充要条件,只需必要条件即可。也就是说,当判定可能发生溢出时,也可能实际未发生溢出,但判断未发生溢出时,实际绝对不能有溢出发生。但应保证判定的有效性,即以较低的概率判定溢出或可能发生溢出。上两步是设计中采用的方法,由于可能的运算较为复杂,也可以不通过理论计算而采用实际数据测试的结果来确定。
最后,根据溢出标志位选用正确算法计算。
图2是本发明所用方法进行音视频数据编解码处理的具体流程图。该流程包括:(1)向输入模块输入一组数据;(2)运算模块对数据进行运算;(3)看溢出标志位是否出现溢出,出现则跳转至(5);(4)输出运算结果,跳转至(6);(5)作废当前运算结果,使用确保正确的方法(可能较慢)进行运算并输出结果;(6)检查是否输入完成,未完成则跳转至1;(7)结束。
图3是利用本发明方法进行音视频数据编解码处理的另一具体运行流程图。该流程包括:(1)向输入模块中输入一组数据;(2)运算模块对数据进行运算;(3)输出结果以及溢出标志位;(4)判断全部输入是否完成,如未完成,则跳转至(1);(5)依次察看输出的溢出标志位,如未溢出,跳转至(7);(6)使用确保正确的方法进行运算并替换可能溢出的结果;(7)标志位是否检查完毕,如没有检查完毕,则跳转至(5);(8)结束。
上面是对照附图对本发明的方法进行了解释,过程比较抽象,下面举一个简单的数据例子说明过程。
数据输入后,首先是在考虑编解码运算规则,输入数据范围和分布之后选择使用的运算单元位长和数据精度,目的是使数据精度更大或使运算单元的位长更小,并且数据出现溢出的概率较小。例如,需要一个计算(a+b)*(c+d)+(e+f)*(g+h)的运算,其中a,b,c,d,e,f,g,h均为浮点数,且分布均在[0,1)之间,而以99%的概率分布在[0,0.25)之间,寄存器为8位,可进行8位乘以8位得到16的操作。如果按一般的算法,为了保证不溢出,定点运算时,a-h的精度需要使用6位,即a=a*26=a*64,(b-h同),这样,才能保证(a+b)*(c+d)+(e+f)*(g+h)在0-65535(即16位)之间。而如果取7位,(a+b)*(c+d)+(e+f)*(g+h)最大就可能达到129032,超出了16位的范围。如果利用8位的有效精度,通过对数据运算结果的概率运算,其溢出的概率小于8%,因此使用8位精度的数据,其较低的溢出概率也是可以接受的。
第二步设置判定溢出的标志位,可以选择a+b,c+d,e+f,g+h四个8位的运算结果是否溢出或者最高位是否为1(即大于127)。如满足上面两个条件之一,则判断溢出。选择这样的设计是因为,首先,如果a+b,c+d,e+f,g+h四个运算结果均不溢出,则最终结果肯定不会溢出,反之则不然;其次,判定条件出现的概率依然小于8%,可以接受;再次,一般的CPU上都会有这样两个标志位,容易判断。
假如有三组数据需要计算,分别为(0.15,0.22,0.13,0.02,0.07,0.04,0.06,0.17),(0.15,0.17,0.30,0.23,0.22,0.04,0.12,0.19),(0.17,0.90,0.07,0.28,0.13,0.16,0.23,0.21)。那么,按照图2的数据处理过程如下。
首先,输入(0.15,0.22,0.13,0.02,0.07,0.04,0.06,0.17)。运算时,转化为8位精度定点数a,b,c,d,e,f,g,h分别为37,55,32,4,17,9,14,43,则a+b,c+d,e+f,g+h分别为82,36,26,57,不满足溢出条件,则输出(a+b)*(c+d)+(e+f)*(g+h)=4334,换算为浮点数为4334/65536=0.06766。由于没有溢出发生,直接输出结果。
其次,输入0.15,0.17,0.30,0.23,0.22,0.04,0.12,0.19,运算时,转化为8位精度定点数a,b,c,d,e,f,g,h分别为37,43,76,58,55,9,30,48,则a+b,c+d,e+f,g+h分别为80,134,64,78,满足溢出条件,则输出(a+b)*(c+d)+(e+f)*(g+h)=15172,换算为浮点数为15172/65536=0.23975。由于发生溢出则使用其他方法重新计算结果并输出(计算结果仍为此值,因为溢出的判断为必要而不是充分条件)。
第三组数据输入为0.17,0.90,0.07,0.20,0.13,0.16,0.23,0.21。运算时,转化为8位精度定点数a,b,c,d,e,f,g,h分别为43,230,17,50,32,40,58,54,则a+b,c+d,e+f,g+h分别为17,82,72,112,满足溢出条件(a+b发生了溢出),则输出(a+b)*(c+d)+(e+f)*(g+h)=9458,换算为浮点数为9458/65536=0.14432。但是,由于发生溢出则放弃原有数据,使用其他方法重新计算结果并输出正确结果0.4165。第一种数据处理方式需要在出现溢出时立即处理,但是其输出的数据均为正确值。
第二种数据处理方式如图3:输入第一组数据,同上面的计算过程,输出结果0.06766,输出溢出标志位0;输入第二组数据,同上面的计算过程,输出结果0.23975,输出溢出标志位1;输入第三组数据,同上面的计算过程,输出结果0.14432,输出溢出标志位1。此时数据输入完成。接着开始检查溢出标志位,第一次输出的标志位为0,不作处理,第二次输出的标志位为1,则需重新计算,重新计算结果为0.23975,替换原来的输出,第三次输出的标志位为1,则需重新计算,重新计算结果为0.4163,替换原有输出0.14432。第二种处理方式不需要事实检测溢出,但其中间输出可能有错误,最后需进行校正。可以根据***的实际情况选择两种方式。
Claims (6)
1、一种音视频数据编解码的方法,其特征在于所述方法包括以下步骤:
(1)输入定点运算数据;
(2)对输入数据进行运算,其中根据编解码规则,数据范围和分布通过溢出概率运算选择运算单元位长,分配数据运算精度;
(3)利用判定溢出的标志位和判定溢出的算法判断运算结果是否出现溢出;
(4)在未出现溢出的情况下,输出运算结果。
2、根据权利要求1所述的音视频数据编解码的方法,其特征在于所述步骤(3)是在获得所有数据的运算结果的基础上进行溢出判断。
3、根据权利要求1所述的音视频数据编解码的方法,其特征在于所述步骤(3)是循环对每组数据的运算结果分别进行溢出判断。
4、根据权利要求1所述的音视频数据编解码的方法,其特征在于,所述标志位是运算结果的最高位。
5、根据权利要求1或4所述的音视频数据编解码的方法,其特征在于包括在判断出现溢出的情况下采用具有较大运算单元位长或较低数据运算精度的运算算法重新进行运算。
6、一种音视频数据编解码的装置,其特征在于包括:
输入定点运算数据的输入模块;
对输入数据进行运算的模块,其中根据编解码规则,数据范围和分布通过溢出概率运算选择运算单元位长,分配数据运算精度;
利用判定溢出的标志位和判定溢出的算法判断运算结果是否出现溢出的判断模块;和,
在未出现溢出的情况下,输出运算结果的输出模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810117830 CN101330620B (zh) | 2008-08-05 | 2008-08-05 | 一种音视频数据编解码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810117830 CN101330620B (zh) | 2008-08-05 | 2008-08-05 | 一种音视频数据编解码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101330620A true CN101330620A (zh) | 2008-12-24 |
CN101330620B CN101330620B (zh) | 2011-04-13 |
Family
ID=40206175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810117830 Expired - Fee Related CN101330620B (zh) | 2008-08-05 | 2008-08-05 | 一种音视频数据编解码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101330620B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377031A (zh) * | 2012-04-27 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
CN110058881A (zh) * | 2019-02-22 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种定点累加运算的处理方法、装置和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264096C (zh) * | 2003-11-17 | 2006-07-12 | 中兴通讯股份有限公司 | 一种fifo存储器的数据处理方法 |
-
2008
- 2008-08-05 CN CN 200810117830 patent/CN101330620B/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377031A (zh) * | 2012-04-27 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
CN103377031B (zh) * | 2012-04-27 | 2017-09-26 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
CN110058881A (zh) * | 2019-02-22 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种定点累加运算的处理方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101330620B (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797269B2 (en) | Apparatus and methods for neural network operations supporting floating point numbers of short bit length | |
US10574260B2 (en) | Techniques for floating-point number conversion | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN101751376B (zh) | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 | |
US8386547B2 (en) | Instruction and logic for performing range detection | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及*** | |
WO2018176882A1 (zh) | 一种矩阵与矢量的乘法运算方法及装置 | |
CN111813371B (zh) | 数字信号处理的浮点除法运算方法、***及可读介质 | |
CN104461459B (zh) | 定点化处理方法及其装置 | |
CN102375721A (zh) | 一种矩阵乘法运算方法、图形处理器和电子设备 | |
CN104461906A (zh) | 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法 | |
CN101330620B (zh) | 一种音视频数据编解码的方法及装置 | |
CN104615808B (zh) | 一种待测试硬件运算部件的测试方法及参考模型装置 | |
CN102541738B (zh) | 加速多核cpu抗软错误测试的方法 | |
JP2007163318A (ja) | レーダ信号処理装置とその一定誤警報確率検出方法 | |
US10459689B2 (en) | Calculation of a number of iterations | |
CN113447881B (zh) | 智能电能表的测量方法、装置及终端设备 | |
CN109460533B (zh) | 一种提高gemm计算性能的方法及装置 | |
CN110730044A (zh) | 射频测试通道定位方法、装置及射频测试***、控制终端 | |
CN115328438B (zh) | 一种数据处理方法、装置及电子设备 | |
US20140136582A1 (en) | Method and apparatus for digital automatic gain control | |
CN112236749A (zh) | 一种浮点精度检测方法与装置 | |
CN103926187A (zh) | 基于参数截断的参数输出方法和***及血液细胞分析仪 | |
CN113870108B (zh) | 一种在面阵测量方式中的多平面拼接数据处理方法 | |
CN112668702B (zh) | 定点化参数优化方法、***、及终端、存储介质 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110413 Termination date: 20170805 |
|
CF01 | Termination of patent right due to non-payment of annual fee |