15 const ALfloat
*Resample_copy_C(const InterpState
*state
, const ALfloat
*restrict src
, ALsizei frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
16 const ALfloat
*Resample_point_C(const InterpState
*state
, const ALfloat
*restrict src
, ALsizei frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
17 const ALfloat
*Resample_lerp_C(const InterpState
*state
, const ALfloat
*restrict src
, ALsizei frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
18 const ALfloat
*Resample_fir4_C(const InterpState
*state
, const ALfloat
*restrict src
, ALsizei frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
19 const ALfloat
*Resample_bsinc_C(const InterpState
*state
, const ALfloat
*restrict src
, ALsizei frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
23 void MixHrtf_C(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
24 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
25 const ALsizei IrSize
, struct MixHrtfParams
*hrtfparams
,
26 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
27 void MixHrtfBlend_C(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
28 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
29 const ALsizei IrSize
, const HrtfParams
*oldparams
,
30 MixHrtfParams
*newparams
, HrtfState
*hrtfstate
,
32 void MixDirectHrtf_C(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
33 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
34 const ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
36 void Mix_C(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
37 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
39 void MixRow_C(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
40 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
41 ALsizei InPos
, ALsizei BufferSize
);
44 void MixHrtf_SSE(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
45 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
46 const ALsizei IrSize
, struct MixHrtfParams
*hrtfparams
,
47 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
48 void MixHrtfBlend_SSE(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
49 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
50 const ALsizei IrSize
, const HrtfParams
*oldparams
,
51 MixHrtfParams
*newparams
, HrtfState
*hrtfstate
,
53 void MixDirectHrtf_SSE(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
54 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
55 const ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
57 void Mix_SSE(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
58 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
60 void MixRow_SSE(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
61 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
62 ALsizei InPos
, ALsizei BufferSize
);
65 inline void InitiatePositionArrays(ALsizei frac
, ALint increment
, ALsizei
*restrict frac_arr
, ALint
*restrict pos_arr
, ALsizei size
)
71 for(i
= 1;i
< size
;i
++)
73 ALint frac_tmp
= frac_arr
[i
-1] + increment
;
74 pos_arr
[i
] = pos_arr
[i
-1] + (frac_tmp
>>FRACTIONBITS
);
75 frac_arr
[i
] = frac_tmp
&FRACTIONMASK
;
79 const ALfloat
*Resample_lerp_SSE2(const InterpState
*state
, const ALfloat
*restrict src
,
80 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
82 const ALfloat
*Resample_lerp_SSE41(const InterpState
*state
, const ALfloat
*restrict src
,
83 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
86 const ALfloat
*Resample_fir4_SSE3(const InterpState
*state
, const ALfloat
*restrict src
,
87 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
89 const ALfloat
*Resample_fir4_SSE41(const InterpState
*state
, const ALfloat
*restrict src
,
90 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
93 const ALfloat
*Resample_bsinc_SSE(const InterpState
*state
, const ALfloat
*restrict src
,
94 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
98 void MixHrtf_Neon(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
99 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
100 const ALsizei IrSize
, struct MixHrtfParams
*hrtfparams
,
101 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
102 void MixHrtfBlend_Neon(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
103 const ALfloat
*data
, ALsizei Offset
, ALsizei OutPos
,
104 const ALsizei IrSize
, const HrtfParams
*oldparams
,
105 MixHrtfParams
*newparams
, HrtfState
*hrtfstate
,
107 void MixDirectHrtf_Neon(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
108 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
109 const ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
111 void Mix_Neon(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
112 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
114 void MixRow_Neon(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
115 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
116 ALsizei InPos
, ALsizei BufferSize
);
118 /* Neon resamplers */
119 const ALfloat
*Resample_lerp_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
120 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
122 const ALfloat
*Resample_fir4_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
123 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
125 const ALfloat
*Resample_bsinc_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
126 ALsizei frac
, ALint increment
, ALfloat
*restrict dst
,
129 #endif /* MIXER_DEFS_H */