3 |
* LinuxSampler - modular, streaming capable sampler * |
* LinuxSampler - modular, streaming capable sampler * |
4 |
* * |
* * |
5 |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
6 |
|
* Copyright (C) 2005 Christian Schoenebeck * |
7 |
* * |
* * |
8 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
9 |
* it under the terms of the GNU General Public License as published by * |
* it under the terms of the GNU General Public License as published by * |
74 |
} |
} |
75 |
} |
} |
76 |
|
|
77 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
78 |
inline static void GetNext4SamplesMonoMMXSSE(sample_t* pSrc, void* Pos, float& Pitch) { |
inline static void GetNext4SamplesMonoMMXSSE(sample_t* pSrc, void* Pos, float& Pitch) { |
79 |
if (INTERPOLATE) Interpolate4StepsMonoMMXSSE(pSrc, Pos, Pitch); |
if (INTERPOLATE) Interpolate4StepsMonoMMXSSE(pSrc, Pos, Pitch); |
80 |
else { // no pitch, so no interpolation necessary |
else { // no pitch, so no interpolation necessary |
142 |
); |
); |
143 |
} |
} |
144 |
} |
} |
145 |
#endif // ARCH_X86 |
#endif // CONFIG_ASM && ARCH_X86 |
146 |
|
|
147 |
protected: |
protected: |
148 |
|
|
205 |
return samplePoint; |
return samplePoint; |
206 |
} |
} |
207 |
|
|
208 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
209 |
// TODO: no support for cubic interpolation yet |
// TODO: no support for cubic interpolation yet |
210 |
inline static void Interpolate4StepsMonoMMXSSE(sample_t* pSrc, void* Pos, float& Pitch) { |
inline static void Interpolate4StepsMonoMMXSSE(sample_t* pSrc, void* Pos, float& Pitch) { |
211 |
/* calculate playback position of each of the 4 samples by adding the associated pitch */ |
/* calculate playback position of each of the 4 samples by adding the associated pitch */ |
408 |
"%xmm3" /* holds linear interpolated sample of right channel (of all 4 samples) at the end */ |
"%xmm3" /* holds linear interpolated sample of right channel (of all 4 samples) at the end */ |
409 |
); |
); |
410 |
} |
} |
411 |
#endif // ARCH_X86 |
#endif // CONFIG_ASM && ARCH_X86 |
412 |
}; |
}; |
413 |
|
|
414 |
} // namespace LinuxSampler |
} // namespace LinuxSampler |