Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | mjames | 1 | #include "ref.h" |
2 | |||
3 | void ref_float_to_q31( |
||
4 | float32_t * pSrc, |
||
5 | q31_t * pDst, |
||
6 | uint32_t blockSize) |
||
7 | { |
||
8 | uint32_t i; |
||
9 | float32_t in; |
||
10 | |||
11 | for(i=0;i<blockSize;i++) |
||
12 | { |
||
13 | in = pSrc[i]; |
||
14 | in *= 2147483648.0f; //scale up |
||
15 | in += in > 0.0f ? 0.5f : -0.5f; //round |
||
16 | pDst[i] = ref_sat_q31((q63_t)in); //cast and saturate |
||
17 | } |
||
18 | } |
||
19 | |||
20 | void ref_float_to_q15( |
||
21 | float32_t * pSrc, |
||
22 | q15_t * pDst, |
||
23 | uint32_t blockSize) |
||
24 | { |
||
25 | uint32_t i; |
||
26 | float32_t in; |
||
27 | |||
28 | for(i=0;i<blockSize;i++) |
||
29 | { |
||
30 | in = pSrc[i]; |
||
31 | in *= 32768.0f; |
||
32 | in += in > 0.0f ? 0.5f : -0.5f; |
||
33 | pDst[i] = ref_sat_q15((q31_t)in); |
||
34 | } |
||
35 | } |
||
36 | |||
37 | void ref_float_to_q7( |
||
38 | float32_t * pSrc, |
||
39 | q7_t * pDst, |
||
40 | uint32_t blockSize) |
||
41 | { |
||
42 | uint32_t i; |
||
43 | float32_t in; |
||
44 | |||
45 | for(i=0;i<blockSize;i++) |
||
46 | { |
||
47 | in = pSrc[i]; |
||
48 | in *= 128.0f; |
||
49 | in += in > 0.0f ? 0.5f : -0.5f; |
||
50 | pDst[i] = ref_sat_q7((q15_t)in); |
||
51 | } |
||
52 | } |