15 const ALfloat
*Resample_copy32_C(const InterpState
*state
, const ALfloat
*restrict src
, ALuint frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
16 const ALfloat
*Resample_point32_C(const InterpState
*state
, const ALfloat
*restrict src
, ALuint frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
17 const ALfloat
*Resample_lerp32_C(const InterpState
*state
, const ALfloat
*restrict src
, ALuint frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
18 const ALfloat
*Resample_fir4_32_C(const InterpState
*state
, const ALfloat
*restrict src
, ALuint frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
19 const ALfloat
*Resample_bsinc32_C(const InterpState
*state
, const ALfloat
*restrict src
, ALuint frac
, ALint increment
, ALfloat
*restrict dst
, ALsizei dstlen
);
23 void MixHrtf_C(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
24 const ALfloat
*data
, ALsizei Counter
, ALsizei Offset
, ALsizei OutPos
,
25 const ALsizei IrSize
, const struct MixHrtfParams
*hrtfparams
,
26 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
27 void MixDirectHrtf_C(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
28 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
29 ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
31 void Mix_C(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
32 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
34 void MixRow_C(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
35 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
36 ALsizei InPos
, ALsizei BufferSize
);
39 void MixHrtf_SSE(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
40 const ALfloat
*data
, ALsizei Counter
, ALsizei Offset
, ALsizei OutPos
,
41 const ALsizei IrSize
, const struct MixHrtfParams
*hrtfparams
,
42 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
43 void MixDirectHrtf_SSE(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
44 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
45 ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
47 void Mix_SSE(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
48 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
50 void MixRow_SSE(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
51 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
52 ALsizei InPos
, ALsizei BufferSize
);
55 inline void InitiatePositionArrays(ALuint frac
, ALint increment
, ALuint
*restrict frac_arr
, ALint
*restrict pos_arr
, ALsizei size
)
61 for(i
= 1;i
< size
;i
++)
63 ALint frac_tmp
= frac_arr
[i
-1] + increment
;
64 pos_arr
[i
] = pos_arr
[i
-1] + (frac_tmp
>>FRACTIONBITS
);
65 frac_arr
[i
] = frac_tmp
&FRACTIONMASK
;
69 const ALfloat
*Resample_lerp32_SSE2(const InterpState
*state
, const ALfloat
*restrict src
,
70 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
72 const ALfloat
*Resample_lerp32_SSE41(const InterpState
*state
, const ALfloat
*restrict src
,
73 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
76 const ALfloat
*Resample_fir4_32_SSE3(const InterpState
*state
, const ALfloat
*restrict src
,
77 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
79 const ALfloat
*Resample_fir4_32_SSE41(const InterpState
*state
, const ALfloat
*restrict src
,
80 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
83 const ALfloat
*Resample_bsinc32_SSE(const InterpState
*state
, const ALfloat
*restrict src
,
84 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
88 void MixHrtf_Neon(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
89 const ALfloat
*data
, ALsizei Counter
, ALsizei Offset
, ALsizei OutPos
,
90 const ALsizei IrSize
, const struct MixHrtfParams
*hrtfparams
,
91 struct HrtfState
*hrtfstate
, ALsizei BufferSize
);
92 void MixDirectHrtf_Neon(ALfloat
*restrict LeftOut
, ALfloat
*restrict RightOut
,
93 const ALfloat
*data
, ALsizei Offset
, const ALsizei IrSize
,
94 ALfloat (*restrict Coeffs
)[2], ALfloat (*restrict Values
)[2],
96 void Mix_Neon(const ALfloat
*data
, ALsizei OutChans
, ALfloat (*restrict OutBuffer
)[BUFFERSIZE
],
97 ALfloat
*CurrentGains
, const ALfloat
*TargetGains
, ALsizei Counter
, ALsizei OutPos
,
99 void MixRow_Neon(ALfloat
*OutBuffer
, const ALfloat
*Gains
,
100 const ALfloat (*restrict data
)[BUFFERSIZE
], ALsizei InChans
,
101 ALsizei InPos
, ALsizei BufferSize
);
103 /* Neon resamplers */
104 const ALfloat
*Resample_lerp32_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
105 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
107 const ALfloat
*Resample_fir4_32_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
108 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
110 const ALfloat
*Resample_bsinc32_Neon(const InterpState
*state
, const ALfloat
*restrict src
,
111 ALuint frac
, ALint increment
, ALfloat
*restrict dst
,
114 #endif /* MIXER_DEFS_H */