[Pkg-ocaml-maint-commits] [SCM] frama-c packaging branch, master, updated. debian/20081201.dfsg-1-3-g8f66db5
Mehdi Dogguy
dogguy at pps.jussieu.fr
Tue Jun 2 12:38:59 UTC 2009
The following commit has been merged in the master branch:
commit d5572ba2327819d29945e9c70163263251859821
Author: Mehdi Dogguy <dogguy at pps.jussieu.fr>
Date: Tue Jun 2 14:38:16 2009 +0200
Imported Upstream version 20081201.dfsg
diff --git a/tests/test/adpcm.c b/tests/test/adpcm.c
deleted file mode 100644
index e8bdd91..0000000
--- a/tests/test/adpcm.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*************************************************************************/
-/* */
-/* SNU-RT Benchmark Suite for Worst Case Timing Analysis */
-/* ===================================================== */
-/* Collected and Modified by S.-S. Lim */
-/* sslim at archi.snu.ac.kr */
-/* Real-Time Research Group */
-/* Seoul National University */
-/* */
-/* */
-/* < Features > - restrictions for our experimental environment */
-/* */
-/* 1. Completely structured. */
-/* - There are no unconditional jumps. */
-/* - There are no exit from loop bodies. */
-/* (There are no 'break' or 'return' in loop bodies) */
-/* 2. No 'switch' statements. */
-/* 3. No 'do..while' statements. */
-/* 4. Expressions are restricted. */
-/* - There are no multiple expressions joined by 'or', */
-/* 'and' operations. */
-/* 5. No library calls. */
-/* - All the functions needed are implemented in the */
-/* source file. */
-/* */
-/* */
-/*************************************************************************/
-/* */
-/* FILE: adpcm.c */
-/* SOURCE : C Algorithms for Real-Time DSP by P. M. Embree */
-/* */
-/* DESCRIPTION : */
-/* */
-/* CCITT G.722 ADPCM (Adaptive Differential Pulse Code Modulation) */
-/* algorithm. */
-/* 16khz sample rate data is stored in the array test_data[SIZE]. */
-/* Results are stored in the array compressed[SIZE] and result[SIZE].*/
-/* Execution time is determined by the constant SIZE (default value */
-/* is 2000). */
-/* */
-/* REMARK : */
-/* */
-/* EXECUTION TIME : */
-/* */
-/* */
-/*************************************************************************/
-
-
-
-/* common sampling rate for sound cards on IBM/PC */
-/* PATHCRAWLER ##define SAMPLE_RATE 11025 */
-
-/* PATHCRAWLER #define PI 3.14159265358979323846 */
-
-/* COMPLEX STRUCTURE */
-
-/* PATHCRAWLER typedef struct {
- float real, imag;
- } COMPLEX; */
-
-/* function prototypes for fft and filter functions */
-/* PATHCRAWLER void fft(COMPLEX *,int);
-float fir_filter(float input,float *coef,int n,float *history);
-float iir_filter(float input,float *coef,int n,float *history);
-float gaussian(void);
-
-void setup_codec(int),key_down(),int_enable(),int_disable();
-int flags(int);
-
-float getinput(void);
-void sendout(float),flush(); */
-
-int encode(int,int);
-int filtez(int *bpl,int *dlt);
-void upzero(int dlt,int *dlti,int *bli);
-int filtep(int rlt1,int al1,int rlt2,int al2);
-int quantl(int el,int detl);
-int invqxl(int il,int detl,int *code_table,int mode);
-int logscl(int il,int nbl);
-int scalel(int nbl,int shift_constant);
-int uppol2(int al1,int al2,int plt,int plt1,int plt2);
-int uppol1(int al1,int apl2,int plt,int plt1);
-int invqah(int ih,int deth);
-int logsch(int ih,int nbh);
-
-/* G722 C code */
-
-/* variables for transimit quadrature mirror filter here */
-int tqmf[24];
-
-/* QMF filter coefficients:
-scaled by a factor of 4 compared to G722 CCITT recomendation */
-int h[24] = {
- 12, -44, -44, 212, 48, -624, 128, 1448,
- -840, -3220, 3804, 15504, 15504, 3804, -3220, -840,
- 1448, 128, -624, 48, 212, -44, -44, 12
-};
-
-int xl,xh;
-
-/* variables for receive quadrature mirror filter here */
-int accumc[11],accumd[11];
-
-/* outputs of decode() */
-int xout1,xout2;
-
-int xs,xd;
-
-/* variables for encoder (hi and lo) here */
-
-int il,szl,spl,sl,el;
-
-int qq4_code4_table[16] = {
- 0, -20456, -12896, -8968, -6288, -4240, -2584, -1200,
- 20456, 12896, 8968, 6288, 4240, 2584, 1200, 0
-};
-
-int qq5_code5_table[32] = {
- -280, -280, -23352, -17560, -14120, -11664, -9752, -8184,
- -6864, -5712, -4696, -3784, -2960, -2208, -1520, -880,
- 23352, 17560, 14120, 11664, 9752, 8184, 6864, 5712,
- 4696, 3784, 2960, 2208, 1520, 880, 280, -280
-};
-
-int qq6_code6_table[64] = {
- -136, -136, -136, -136, -24808, -21904, -19008, -16704,
--14984, -13512, -12280, -11192, -10232, -9360, -8576, -7856,
- -7192, -6576, -6000, -5456, -4944, -4464, -4008, -3576,
- -3168, -2776, -2400, -2032, -1688, -1360, -1040, -728,
- 24808, 21904, 19008, 16704, 14984, 13512, 12280, 11192,
- 10232, 9360, 8576, 7856, 7192, 6576, 6000, 5456,
- 4944, 4464, 4008, 3576, 3168, 2776, 2400, 2032,
- 1688, 1360, 1040, 728, 432, 136, -432, -136
-};
-
-int delay_bpl[6];
-
-int delay_dltx[6];
-
-int wl_code_table[16] = {
- -60, 3042, 1198, 538, 334, 172, 58, -30,
- 3042, 1198, 538, 334, 172, 58, -30, -60
-};
-
-int wl_table[8] = {
- -60, -30, 58, 172, 334, 538, 1198, 3042
-};
-
-int ilb_table[32] = {
- 2048, 2093, 2139, 2186, 2233, 2282, 2332, 2383,
- 2435, 2489, 2543, 2599, 2656, 2714, 2774, 2834,
- 2896, 2960, 3025, 3091, 3158, 3228, 3298, 3371,
- 3444, 3520, 3597, 3676, 3756, 3838, 3922, 4008
-};
-
-int nbl; /* delay line */
-int al1,al2;
-int plt,plt1,plt2;
-int rs;
-int dlt;
-int rlt,rlt1,rlt2;
-
-/* decision levels - pre-multiplied by 8, 0 to indicate end */
-int decis_levl[30] = {
- 280, 576, 880, 1200, 1520, 1864, 2208, 2584,
- 2960, 3376, 3784, 4240, 4696, 5200, 5712, 6288,
- 6864, 7520, 8184, 8968, 9752, 10712, 11664, 12896,
- 14120, 15840, 17560, 20456, 23352, 32767
-};
-
-int detl;
-
-/* quantization table 31 long to make quantl look-up easier,
-last entry is for mil=30 case when wd is max */
-int quant26bt_pos[31] = {
- 61, 60, 59, 58, 57, 56, 55, 54,
- 53, 52, 51, 50, 49, 48, 47, 46,
- 45, 44, 43, 42, 41, 40, 39, 38,
- 37, 36, 35, 34, 33, 32, 32
-};
-
-/* quantization table 31 long to make quantl look-up easier,
-last entry is for mil=30 case when wd is max */
-int quant26bt_neg[31] = {
- 63, 62, 31, 30, 29, 28, 27, 26,
- 25, 24, 23, 22, 21, 20, 19, 18,
- 17, 16, 15, 14, 13, 12, 11, 10,
- 9, 8, 7, 6, 5, 4, 4
-};
-
-
-int deth;
-int sh; /* this comes from adaptive predictor */
-int eh;
-
-int qq2_code2_table[4] = {
- -7408, -1616, 7408, 1616
-};
-
-int wh_code_table[4] = {
- 798, -214, 798, -214
-};
-
-
-int dh,ih;
-int nbh,szh;
-int sph,ph,yh,rh;
-
-int delay_dhx[6];
-
-int delay_bph[6];
-
-int ah1,ah2;
-int ph1,ph2;
-int rh1,rh2;
-
-/* variables for decoder here */
-int ilr,yl,rl;
-int dec_deth,dec_detl,dec_dlt;
-
-int dec_del_bpl[6];
-
-int dec_del_dltx[6];
-
-int dec_plt,dec_plt1,dec_plt2;
-int dec_szl,dec_spl,dec_sl;
-int dec_rlt1,dec_rlt2,dec_rlt;
-int dec_al1,dec_al2;
-int dl;
-int dec_nbl,dec_yh,dec_dh,dec_nbh;
-
-/* variables used in filtez */
-int dec_del_bph[6];
-
-int dec_del_dhx[6];
-
-int dec_szh;
-/* variables used in filtep */
-int dec_rh1,dec_rh2;
-int dec_ah1,dec_ah2;
-int dec_ph,dec_sph;
-
-int dec_sh,dec_rh;
-
-int dec_ph1,dec_ph2;
-
-/* G722 encode function two ints in, one 8 bit output */
-
-/* put input samples in xin1 = first value, xin2 = second value */
-/* returns il and ih stored together */
-int abs(int x )
-{ int m ;
-
- if (x >= 0) {
- m = x;
- } else {
- m = - x;
- }
- return (m);
-}
-
-/*@ ensures sh == 0 || sh == -2; */
-int encode(int xin1,int xin2)
-{
- int i;
- int *h_ptr,*tqmf_ptr,*tqmf_ptr1;
- long int xa,xb;
- int decis;
-
-/* transmit quadrature mirror filters implemented here */
- h_ptr = h;
- tqmf_ptr = tqmf;
- xa = (long)(*tqmf_ptr++) * (*h_ptr++);
- xb = (long)(*tqmf_ptr++) * (*h_ptr++);
-/*@ loop pragma UNROLL_LOOP 11; */
-/* main multiply accumulate loop for samples and coefficients */
- for(i = 0 ; i < 10 ; i++) {
- xa += (long)(*tqmf_ptr++) * (*h_ptr++);
- xb += (long)(*tqmf_ptr++) * (*h_ptr++);
- }
-/* final mult/accumulate */
- xa += (long)(*tqmf_ptr++) * (*h_ptr++);
- xb += (long)(*tqmf_ptr) * (*h_ptr++);
-
-/* update delay line tqmf */
- tqmf_ptr1 = tqmf_ptr - 2;
-/*@ loop pragma UNROLL_LOOP 23; */
- for(i = 0 ; i < 22 ; i++) *tqmf_ptr-- = *tqmf_ptr1--;
- *tqmf_ptr-- = xin1;
- *tqmf_ptr = xin2;
-
-/* scale outputs */
- xl = (xa + xb) >> 15;
- xh = (xa - xb) >> 15;
-
-/* end of quadrature mirror filter code */
-
-/* starting with lower sub band encoder */
-
-/* filtez - compute predictor output section - zero section */
- szl = filtez(delay_bpl,delay_dltx);
-
-/* filtep - compute predictor output signal (pole section) */
- spl = filtep(rlt1,al1,rlt2,al2);
-
-/* compute the predictor output value in the lower sub_band encoder */
- sl = szl + spl;
- el = xl - sl;
-
-/* quantl: quantize the difference signal */
- il = quantl(el,detl); /* CONDITIONS: 30 x 4 possibilities */
-
-/* invqxl: computes quantized difference signal */
-/* for invqbl, truncate by 2 lsbs, so mode = 3 */
- dlt = ((long)detl*qq4_code4_table[il >> 2]) >> 15;
-
-/* logscl: updates logarithmic quant. scale factor in low sub band */
- nbl = logscl(il,nbl); /* CONDITIONS: 2 possibs */
-
-/* scalel: compute the quantizer scale factor in the lower sub band */
-/* calling parameters nbl and 8 (constant such that scalel can be scaleh) */
- detl = scalel(nbl,8);
-
-/* parrec - simple addition to compute recontructed signal for adaptive pred */
- plt = dlt + szl;
-
-/* upzero: update zero section predictor coefficients (sixth order)*/
-/* calling parameters: dlt, dlt1, dlt2, ..., dlt6 from dlt */
-/* bpli (linear_buffer in which all six values are delayed */
-/* return params: updated bpli, delayed dltx */
- upzero(dlt,delay_dltx,delay_bpl); /* CONDITIONS: 2exp6 possibs */
-
-/* uppol2- update second predictor coefficient apl2 and delay it as al2 */
-/* calling parameters: al1, al2, plt, plt1, plt2 */
- al2 = uppol2(al1,al2,plt,plt1,plt2); /* CONDITION: 2 possibs */
-
-/* uppol1 :update first predictor coefficient apl1 and delay it as al1 */
-/* calling parameters: al1, apl2, plt, plt1 */
- al1 = uppol1(al1,al2,plt,plt1); /* CONDITIONS: 8 possibs */
-
-/* recons : compute recontructed signal for adaptive predictor */
- rlt = sl + dlt;
-
-/* done with lower sub_band encoder; now implement delays for next time*/
- rlt2 = rlt1;
- rlt1 = rlt;
- plt2 = plt1;
- plt1 = plt;
-
-/* high band encode */
-
- szh = filtez(delay_bph,delay_dhx);
-
- sph = filtep(rh1,ah1,rh2,ah2);
-
-/* predic: sh = sph + szh */
- sh = sph + szh;
-/* subtra: eh = xh - sh */
- eh = xh - sh;
-
-/* quanth - quantization of difference signal for higher sub-band */
-/* quanth: in-place for speed params: eh, deth (has init. value) */
- if(eh >= 0) { /* CONDITION */
- ih = 3; /* 2,3 are pos codes */
- }
- else {
- ih = 1; /* 0,1 are neg codes */
- }
- decis = (564L*(long)deth) >> 12L;
- if(abs(eh) > decis) ih--; /* mih = 2 case */ /* CONDITIONS: 2 possibs */
-
-/* invqah: compute the quantized difference signal, higher sub-band*/
- dh = ((long)deth*qq2_code2_table[ih]) >> 15L ;
-
-/* logsch: update logarithmic quantizer scale factor in hi sub-band*/
- nbh = logsch(ih,nbh);
-
-/* note : scalel and scaleh use same code, different parameters */
- deth = scalel(nbh,10);
-
-/* parrec - add pole predictor output to quantized diff. signal */
- ph = dh + szh;
-
-/* upzero: update zero section predictor coefficients (sixth order) */
-/* calling parameters: dh, dhi, bphi */
-/* return params: updated bphi, delayed dhx */
- upzero(dh,delay_dhx,delay_bph); /* CONDITIONS: 2exp6 possibs */
-
-/* uppol2: update second predictor coef aph2 and delay as ah2 */
-/* calling params: ah1, ah2, ph, ph1, ph2 */
- ah2 = uppol2(ah1,ah2,ph,ph1,ph2); /* CONDITION: 2 possibs */
-
-/* uppol1: update first predictor coef. aph2 and delay it as ah1 */
- ah1 = uppol1(ah1,ah2,ph,ph1); /* CONDITIONS: 8 possibs */
-
-/* recons for higher sub-band */
- yh = sh + dh;
-
-/* done with higher sub-band encoder, now Delay for next time */
- rh2 = rh1;
- rh1 = yh;
- ph2 = ph1;
- ph1 = ph;
-
-/* multiplex ih and il to get signals together */
- return(il | (ih << 6));
-}
-
-/* filtez - compute predictor output signal (zero section) */
-/* input: bpl1-6 and dlt1-6, output: szl */
-
-int filtez(int *bpl,int *dlt)
-{
- int i;
- long int zl;
- zl = (long)(*bpl++) * (*dlt++);
-/*@ loop pragma UNROLL_LOOP 7; */
- for(i = 1 ; i < 6 ; i++)
- zl += (long)(*bpl++) * (*dlt++);
-
- return((int)(zl >> 14)); /* x2 here */
-}
-
-/* filtep - compute predictor output signal (pole section) */
-/* input rlt1-2 and al1-2, output spl */
-
-int filtep(int rlt1,int al1,int rlt2,int al2)
-{
- long int pl,pl2;
- pl = 2*rlt1;
- pl = (long)al1*pl;
- pl2 = 2*rlt2;
- pl += (long)al2*pl2;
- return((int)(pl >> 15));
-}
-
-/* quantl - quantize the difference signal in the lower sub-band */
-int quantl(int el,int detl)
-{
- int ril,mil;
- long int wd,decis;
-
-/* abs of difference signal */
- wd = abs(el);
-/* determine mil based on decision levels and detl gain */
-/* for(mil = 0 ; mil < 30 ; mil++) {
- decis = (decis_levl[mil]*(long)detl) >> 15L;
- if(wd <= decis) break;
- }*/
- mil = 0;
- decis = (decis_levl[mil]*(long)detl) >> 15L;
-/*@ loop pragma UNROLL_LOOP 30; */
- while(wd <= decis && mil < 29) { /* FOR/BREAK 662 : 30 possibilities */
- mil++;
- decis = (decis_levl[mil]*(long)detl) >> 15L;
- }
-/* if mil=30 then wd is less than all decision levels */
- if(el >= 0) ril = quant26bt_pos[mil]; /* CONDITION 665 */
- else ril = quant26bt_neg[mil];
- return(ril);
-}
-
-/* invqxl is either invqbl or invqal depending on parameters passed */
-/* returns dlt, code table is pre-multiplied by 8 */
-
-int invqxl(int il,int detl,int *code_table,int mode)
-{
- long int dlt;
- dlt = (long)detl*code_table[il >> (mode-1)];
- return((int)(dlt >> 15));
-}
-
-/* logscl - update log quantizer scale factor in lower sub-band */
-/* note that nbl is passed and returned */
-
-int logscl(int il,int nbl)
-{
- long int wd;
- wd = ((long)nbl * 127L) >> 7L; /* leak factor 127/128 */
- nbl = (int)wd + wl_code_table[il >> 2];
- if(nbl < 0) nbl = 0; /* CONDITION */
- if(nbl > 18432) nbl = 18432; /* CONDITION */
- return(nbl);
-}
-
-/* scalel: compute quantizer scale factor in lower or upper sub-band*/
-
-int scalel(int nbl,int shift_constant)
-{
- int wd1,wd2,wd3;
- wd1 = (nbl >> 6) & 31;
- wd2 = nbl >> 11;
- wd3 = ilb_table[wd1] >> (shift_constant + 1 - wd2);
- return(wd3 << 3);
-}
-
-/* upzero - inputs: dlt, dlti[0-5], bli[0-5], outputs: updated bli[0-5] */
-/* also implements delay of bli and update of dlti from dlt */
-
-void upzero(int dlt,int *dlti,int *bli)
-{
- int i,wd2,wd3;
-/*if dlt is zero, then no sum into bli */
- if(dlt == 0) { /* CONDITION 711 */
-/*@ loop pragma UNROLL_LOOP 7; */
- for(i = 0 ; i < 6 ; i++) {
- bli[i] = (int)((255L*bli[i]) >> 8L); /* leak factor of 255/256 */
- }
- }
- else {
-/*@ loop pragma UNROLL_LOOP 7; */
- for(i = 0 ; i < 6 ; i++) {
- if((long)dlt*dlti[i] >= 0) wd2 = 128; else wd2 = -128; /* CONDITION 718 : 2exp6 possibs */
- wd3 = (int)((255L*bli[i]) >> 8L); /* leak factor of 255/256 */
- bli[i] = wd2 + wd3;
- }
- }
-/* implement delay line for dlt */
- dlti[5] = dlti[4];
- dlti[4] = dlti[3];
- dlti[3] = dlti[2];
- dlti[1] = dlti[0];
- dlti[0] = dlt;
-}
-
-/* uppol2 - update second predictor coefficient (pole section) */
-/* inputs: al1, al2, plt, plt1, plt2. outputs: apl2 */
-
-int uppol2(int al1,int al2,int plt,int plt1,int plt2)
-{
- long int wd2,wd4;
- int apl2;
- wd2 = 4L*(long)al1;
- if((long)plt*plt1 >= 0L) wd2 = -wd2; /* check same sign */ /* CONDITION */
- wd2 = wd2 >> 7; /* gain of 1/128 */
- if((long)plt*plt2 >= 0L) { /* CONDITION */
- wd4 = wd2 + 128; /* same sign case */
- }
- else {
- wd4 = wd2 - 128;
- }
- apl2 = wd4 + (127L*(long)al2 >> 7L); /* leak factor of 127/128 */
-
-/* apl2 is limited to +-.75 */
- if(apl2 > 12288) apl2 = 12288; /* CONDITION */
- if(apl2 < -12288) apl2 = -12288; /* CONDITION */
- return(apl2);
-}
-
-/* uppol1 - update first predictor coefficient (pole section) */
-/* inputs: al1, apl2, plt, plt1. outputs: apl1 */
-
-int uppol1(int al1,int apl2,int plt,int plt1)
-{
- long int wd2;
- int wd3,apl1;
- wd2 = ((long)al1*255L) >> 8L; /* leak factor of 255/256 */
- if((long)plt*plt1 >= 0L) { /* CONDITION */
- apl1 = (int)wd2 + 192; /* same sign case */
- }
- else {
- apl1 = (int)wd2 - 192;
- }
-/* note: wd3= .9375-.75 is always positive */
- wd3 = 15360 - apl2; /* limit value */
- if(apl1 > wd3) apl1 = wd3; /* CONDITION */
- if(apl1 < -wd3) apl1 = -wd3; /* CONDITION */
- return(apl1);
-}
-
-/* INVQAH: inverse adaptive quantizer for the higher sub-band */
-/* returns dh, code table is pre-multiplied by 8 */
-
-int invqah(int ih,int deth)
-{
- long int rdh;
- rdh = ((long)deth*qq2_code2_table[ih]) >> 15L ;
- return((int)(rdh ));
-}
-
-/* logsch - update log quantizer scale factor in higher sub-band */
-/* note that nbh is passed and returned */
-
-int logsch(int ih,int nbh)
-{
- int wd;
- wd = ((long)nbh * 127L) >> 7L; /* leak factor 127/128 */
- nbh = wd + wh_code_table[ih];
- if(nbh < 0) nbh = 0; /* CONDITION */
- if(nbh > 22528) nbh = 22528; /* CONDITION */
- return(nbh);
-}
-
-
-/* PATHCRAWLER #define SIZE 2000
- #define IN_END 2000 */
-
-/* PATHCRAWLER #define PI 3.14159265358979323846 */
-
-/* PATHCRAWLER void main() */
-int test_data[10]={1,0,1,0,1,1,1,1,1,1};
-int compressed[10]={0};
-void main () //(int test_data[10], int compressed[10])
-{
- int i;
-/*@ loop pragma UNROLL_LOOP 11; */
- for(i = 0 ; i < 10 ; i += 2)
- compressed[i/2] = encode(test_data[i],test_data[i+1]);
-
-}
--
frama-c packaging
More information about the Pkg-ocaml-maint-commits
mailing list