Subversion Repositories AFRtranscoder

Rev

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
}