Version 0.1.8 from FTP
[asterisk/asterisk.git] / codecs / gsm / src / k6opt.h
1 /* k6opt.h  vector functions optimized for MMX extensions to x86
2  *
3  * Copyright (C) 1999 by Stanley J. Brooks <stabro@megsinet.net>
4  * 
5  * Any use of this software is permitted provided that this notice is not
6  * removed and that neither the authors nor the Technische Universitaet Berlin
7  * are deemed to have made any representations as to the suitability of this
8  * software for any purpose nor are held responsible for any defects of
9  * this software.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE;
10  * not even the implied warranty of MERCHANTABILITY or FITNESS FOR
11  * A PARTICULAR PURPOSE.
12  * 
13  * Chicago, 03.12.1999
14  * Stanley J. Brooks
15  */
16
17 extern void Weighting_filter P2((e, x),
18         const word      * e,    /* signal [-5..0.39.44] IN  */
19         word    * x             /* signal [0..39]       OUT */
20 )
21 ;
22
23 extern longword k6maxcc P3((wt,dp,Nc_out),
24         const word *wt,
25         const word *dp, 
26         word            * Nc_out        /*              OUT     */
27 )
28 ;
29 /*
30  * k6maxmin(p,n,out[])
31  *  input p[n] is array of shorts (require n>0)
32  *  returns (long) maximum absolute value..
33  *  if out!=NULL, also returns out[0] the maximum and out[1] the minimum
34  */
35 extern longword k6maxmin P3((p,n,out),
36         const word *p,
37         int n, 
38         word *out       /*              out[0] is max, out[1] is min */
39 )
40 ;
41
42 extern longword k6iprod P3((p,q,n),
43         const word *p,
44         const word *q,
45         int n
46 )
47 ;
48
49 /*
50  * k6vsraw(p,n,bits)
51  *  input p[n] is array of shorts (require n>0)
52  *  shift/round each to the right by bits>=0 bits.
53  */
54 extern void k6vsraw P3((p,n,bits),
55         const word *p,
56         int n, 
57         int bits
58 )
59 ;
60
61 /*
62  * k6vsllw(p,n,bits)
63  *  input p[n] is array of shorts (require n>0)
64  *  shift each to the left by bits>=0 bits.
65  */
66 extern void k6vsllw P3((p,n,bits),
67         const word *p,
68         int n, 
69         int bits
70 )
71 ;
72
73 #if 1  /* there isn't any significant speed gain from mmx here: */
74 extern void Short_term_analysis_filteringx P4((u0,rp0,k_n,s),
75         register word * u0,
76         register word   * rp0,  /* [0..7]       IN      */
77         register int    k_n,    /*   k_end - k_start    */
78         register word   * s     /* [0..n-1]     IN/OUT  */
79 )
80 ;
81 /*
82 #define Short_term_analysis_filtering Short_term_analysis_filteringx
83 */
84 #endif