aan 算法 c 语言示例

原创 2001年03月05日 16:12:00


static int SpreSC[64]
={
  16384, 22725, 21407, 19266,  16384, 12873, 8867,  4520,
  22725, 31521, 29692, 26722,  22725, 17855, 12299, 6270,
  21407, 29692, 27969, 25172,  21407, 16819, 11585, 5906,
  19266, 26722, 25172, 22654,  19266, 15137, 10426, 5315,
  16384, 22725, 21407, 19266,  16384, 12873, 8867,  4520,
  12873, 17855, 16819, 15137,  25746, 20228, 13933, 7103,
  17734, 24598, 23170, 20853,  17734, 13933, 9597,  4892,
  18081, 25080, 23624, 21261,  18081, 14206, 9785,  4988
};

/*
    use this table to multiply the block[j] in the decode_macroblock
 stage;
 after multiply,shift to right 13 bits; (17-4)

*/

#define C2   30274       // 2 COS (PI/8) 1.84776
#define C4   23171       // SQRT(2)  1.41421
#define C6   12540       // 2 SIN (PI/8)  0.76537
#define C6pC2   42814    file://C6+C2   2.61313
#define C6sC2   (-17734) //        -1.08239
#define RC0    14
#define RC1    18
#define ROUND   (1<<(RC1-1))

//  do 80 times of multiply; fastidct :176;

#define idct_unit(a,b) {x4 = x5 - x3;        /
               t1 = x5 + x3;        /
                     x3 = (x2+x6)<<RC0;   /
                     x2 = (x2-x6)*C4-x3;  /
                     t0 = x1 + x7;        /
                        x6=  x1 - x7;        /
                        x7=  (t0 + t1)<<RC0; /
                     x5 = (t0 - t1)*C4;   /
                   t0=C6*(x4+x6);       /
                      x4=C6sC2*x4-t0;      /
                       x6=C6pC2*x6-t0;      /
                t0=x6-x7;            /
                    x1=(a-b)<<RC0;       /
                   t1=t0-x5;            /
                  x6=(a+b)<<RC0;       /
                  x0=x4-t1;            /
                    x4=x3+x6;            /
                     x6-=x3;              /
                     x3=x1+x2;            /
                    x5=x1-x2;            }


static void IDCTaan_c(short* block)
{
 int x0,x1,x2,x3,x4,x5,x6,x7;
 int t0,t1;
 short *blk;
// Field one
 blk  =  block;
 for(int i=0; i<8; i++)
 {
  if (!(  (x1 = blk[1]) 
           | (x2 = blk[2])
           | (x3 = blk[3])
           | (x4 = blk[4])
           | (x5 = blk[5])
           | (x6 = blk[6])
           | (x7 = blk[7])))
  {
     // blk[0]=
       blk[1]=blk[2]=blk[3]=blk[4]
           =blk[5]=blk[6]=blk[7]=(blk[0]);
  }
        else
  {

   idct_unit(blk[0],blk[4])

      blk[0]=(x4+x7)>>RC0 ;
      blk[7]=(x4-x7)>>RC0 ;
      blk[1]=(x3+t0)>>RC0 ;
      blk[6]=(x3-t0)>>RC0 ;
      blk[2]=(x5-t1)>>RC0 ;
      blk[5]=(x5+t1)>>RC0 ;
      blk[3]=(x6-x0)>>RC0 ;
      blk[4]=(x6+x0)>>RC0 ;
  }
  blk+=8;
 }

file://field two
    blk=block;
 for ( i=0; i<8; i++)
 {
  if (!((x1 = blk[8])
   | (x2 = blk[16])
   | (x3 = blk[24])
   | (x4 = blk[32])
   | (x5 = blk[40]) 
   | (x6 = blk[48])
   | (x7 = blk[56])))
  {
            blk[0]=blk[8]=blk[16]=blk[24]
    =blk[32]=blk[40]=blk[48]=blk[56]=
                                      iclp[blk[0]>>4];
  }
  else
  {
   idct_unit(blk[0*8],blk[4*8])

   blk[0*8]=iclp[(x4+x7+ROUND)>>RC1];
      blk[7*8]=iclp[(x4-x7+ROUND)>>RC1];
      blk[1*8]=iclp[(x3+t0+ROUND)>>RC1];
      blk[6*8]=iclp[(x3-t0+ROUND)>>RC1];
      blk[2*8]=iclp[(x5-t1+ROUND)>>RC1];
      blk[5*8]=iclp[(x5+t1+ROUND)>>RC1];
      blk[3*8]=iclp[(x6-x0+ROUND)>>RC1];
      blk[4*8]=iclp[(x6+x0+ROUND)>>RC1];
  }
     blk++;
 }
}

AAN算法描述及其实现

AAN算法描述及其实现   最近在学习DCT和MDCT发现网络上JPEG编码的资料蛮多, 而且DCT是JEPG压缩里头比较重要的一个环节. 单单描述DCT算法的资料比较少, 看看JEPG编码里头的...
  • timeless_2014
  • timeless_2014
  • 2017年11月30日 11:11
  • 40

AAN算法描述及其实现

AAN算法描述及其实现 最近在学习DCT和MDCT发现网络上JPEG编码的资料蛮多, 而且DCT是JEPG压缩里头比较重要的一个环节. 单单描述DCT算法的资料比较少, 看看JEPG编码里头的DCT部...
  • sshcx
  • sshcx
  • 2007年07月01日 18:16
  • 5701

AAN算法描述及其实现

AAN算法描述及其实现   最近在学习DCT和MDCT发现网络上JPEG编码的资料蛮多, 而且DCT是JEPG压缩里头比较重要的一个环节. 单单描述DCT算法的资料比较少, 看看JEPG编码里头的...
  • timeless_2014
  • timeless_2014
  • 2017年11月30日 11:11
  • 40

Bellman-Ford算法示例

#include int main() { freopen("i3.txt","r",stdin); int dis[10],n,m,u[10],v[10],w[10]; i...
  • qq_29630271
  • qq_29630271
  • 2017年03月23日 09:54
  • 142

【算法学习】horspool查找匹配字符串

Horspool算法(时空权衡) 利用空间提高时间效率 该算法是从模式串右往左方向匹配文本的,找不到匹配就右移模式串继续找。 文本串: s0 s1 ....   A  sn    ...
  • Jammg
  • Jammg
  • 2016年06月16日 21:04
  • 486

A* A星 算法 C语言 实现代码

关于A*算法,很早就想写点什么,可是貌似天天在忙活着什么,可事实又没有做什么,真是浮躁啊!所以今晚还是来写一下总结吧!         A*算法是很经典的只能启发式搜索算法,关于只能搜索算法和一...
  • zhanghow
  • zhanghow
  • 2016年12月12日 17:25
  • 1259

C语言贪心算法

贪心算法 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,但...
  • ThroneMan
  • ThroneMan
  • 2015年08月29日 21:57
  • 5259

C语言:查找算法

查找是指从一组记录集合中找出满足给定条件的记录。今天给大家介绍三种基本的查找算法: 顺序查找、折半查找和索引查找。 一、顺序查找 基本思想: 从查找表的一端开始,逐个将记录的关键字和给定的值进行...
  • sinat_27706697
  • sinat_27706697
  • 2015年10月05日 08:33
  • 1707

操作系统之——银行家算法C语言实现

// 银行家算法.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "string.h" #include "stdlib.h" #defi...
  • qq_26888929
  • qq_26888929
  • 2016年12月05日 21:41
  • 7675

银行家算法的C语言实现

近日在学习操作系统,发现国外的教材远比国内的教材更加容易理解,有时感觉操作系统是一个不折不扣的坑,书中的每一句话,其实都需要足够长的代码来描述它。 尤其是在拜读了川合秀实的三十天自制操作系统后,感觉...
  • u011587666
  • u011587666
  • 2015年03月16日 19:57
  • 5443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:aan 算法 c 语言示例
举报原因:
原因补充:

(最多只允许输入30个字)