SDL  2.0
SDL_audiotypecvt.c File Reference
#include "../SDL_internal.h"
#include "SDL_audio.h"
#include "SDL_audio_c.h"
#include "SDL_cpuinfo.h"
#include "SDL_assert.h"
+ Include dependency graph for SDL_audiotypecvt.c:

Go to the source code of this file.

Macros

#define NEED_SCALAR_CONVERTER_FALLBACKS   1
 
#define DIVBY128   0.0078125f
 
#define DIVBY32768   0.000030517578125f
 
#define DIVBY8388607   0.00000011920930376163766f
 
#define SET_CONVERTER_FUNCS(fntype)
 

Functions

static void SDL_Convert_S8_to_F32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_U8_to_F32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_S16_to_F32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_U16_to_F32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_S32_to_F32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_F32_to_S8_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_F32_to_U8_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_F32_to_S16_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_F32_to_U16_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
static void SDL_Convert_F32_to_S32_Scalar (SDL_AudioCVT *cvt, SDL_AudioFormat format)
 
void SDL_ChooseAudioConverters (void)
 

Variables

SDL_AudioFilter SDL_Convert_S8_to_F32 = NULL
 
SDL_AudioFilter SDL_Convert_U8_to_F32 = NULL
 
SDL_AudioFilter SDL_Convert_S16_to_F32 = NULL
 
SDL_AudioFilter SDL_Convert_U16_to_F32 = NULL
 
SDL_AudioFilter SDL_Convert_S32_to_F32 = NULL
 
SDL_AudioFilter SDL_Convert_F32_to_S8 = NULL
 
SDL_AudioFilter SDL_Convert_F32_to_U8 = NULL
 
SDL_AudioFilter SDL_Convert_F32_to_S16 = NULL
 
SDL_AudioFilter SDL_Convert_F32_to_U16 = NULL
 
SDL_AudioFilter SDL_Convert_F32_to_S32 = NULL
 

Macro Definition Documentation

◆ DIVBY128

#define DIVBY128   0.0078125f

◆ DIVBY32768

#define DIVBY32768   0.000030517578125f

◆ DIVBY8388607

#define DIVBY8388607   0.00000011920930376163766f

◆ NEED_SCALAR_CONVERTER_FALLBACKS

#define NEED_SCALAR_CONVERTER_FALLBACKS   1

Definition at line 49 of file SDL_audiotypecvt.c.

◆ SET_CONVERTER_FUNCS

#define SET_CONVERTER_FUNCS (   fntype)
Value:
SDL_Convert_S8_to_F32 = SDL_Convert_S8_to_F32_##fntype; \
SDL_Convert_U8_to_F32 = SDL_Convert_U8_to_F32_##fntype; \
SDL_Convert_S16_to_F32 = SDL_Convert_S16_to_F32_##fntype; \
SDL_Convert_U16_to_F32 = SDL_Convert_U16_to_F32_##fntype; \
SDL_Convert_S32_to_F32 = SDL_Convert_S32_to_F32_##fntype; \
SDL_Convert_F32_to_S8 = SDL_Convert_F32_to_S8_##fntype; \
SDL_Convert_F32_to_U8 = SDL_Convert_F32_to_U8_##fntype; \
SDL_Convert_F32_to_S16 = SDL_Convert_F32_to_S16_##fntype; \
SDL_Convert_F32_to_U16 = SDL_Convert_F32_to_U16_##fntype; \
SDL_Convert_F32_to_S32 = SDL_Convert_F32_to_S32_##fntype; \
converters_chosen = SDL_TRUE
int(* fntype)(const char *)
Definition: testloadso.c:22
SDL_AudioFilter SDL_Convert_S8_to_F32

Referenced by SDL_ChooseAudioConverters().

Function Documentation

◆ SDL_ChooseAudioConverters()

void SDL_ChooseAudioConverters ( void  )

Definition at line 1387 of file SDL_audiotypecvt.c.

References SDL_assert, SDL_FALSE, SDL_HasNEON, SDL_HasSSE2, SDL_TRUE, and SET_CONVERTER_FUNCS.

Referenced by SDL_BuildAudioCVT().

1388 {
1389  static SDL_bool converters_chosen = SDL_FALSE;
1390 
1391  if (converters_chosen) {
1392  return;
1393  }
1394 
1395 #define SET_CONVERTER_FUNCS(fntype) \
1396  SDL_Convert_S8_to_F32 = SDL_Convert_S8_to_F32_##fntype; \
1397  SDL_Convert_U8_to_F32 = SDL_Convert_U8_to_F32_##fntype; \
1398  SDL_Convert_S16_to_F32 = SDL_Convert_S16_to_F32_##fntype; \
1399  SDL_Convert_U16_to_F32 = SDL_Convert_U16_to_F32_##fntype; \
1400  SDL_Convert_S32_to_F32 = SDL_Convert_S32_to_F32_##fntype; \
1401  SDL_Convert_F32_to_S8 = SDL_Convert_F32_to_S8_##fntype; \
1402  SDL_Convert_F32_to_U8 = SDL_Convert_F32_to_U8_##fntype; \
1403  SDL_Convert_F32_to_S16 = SDL_Convert_F32_to_S16_##fntype; \
1404  SDL_Convert_F32_to_U16 = SDL_Convert_F32_to_U16_##fntype; \
1405  SDL_Convert_F32_to_S32 = SDL_Convert_F32_to_S32_##fntype; \
1406  converters_chosen = SDL_TRUE
1407 
1408 #if HAVE_SSE2_INTRINSICS
1409  if (SDL_HasSSE2()) {
1410  SET_CONVERTER_FUNCS(SSE2);
1411  return;
1412  }
1413 #endif
1414 
1415 #if HAVE_NEON_INTRINSICS
1416  if (SDL_HasNEON()) {
1417  SET_CONVERTER_FUNCS(NEON);
1418  return;
1419  }
1420 #endif
1421 
1422 #if NEED_SCALAR_CONVERTER_FALLBACKS
1423  SET_CONVERTER_FUNCS(Scalar);
1424 #endif
1425 
1426 #undef SET_CONVERTER_FUNCS
1427 
1428  SDL_assert(converters_chosen == SDL_TRUE);
1429 }
#define SDL_HasNEON
#define SDL_assert(condition)
Definition: SDL_assert.h:169
SDL_bool
Definition: SDL_stdinc.h:161
#define SDL_HasSSE2
#define SET_CONVERTER_FUNCS(fntype)

◆ SDL_Convert_F32_to_S16_Scalar()

static void SDL_Convert_F32_to_S16_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 218 of file SDL_audiotypecvt.c.

References AUDIO_S16SYS, SDL_AudioCVT::buf, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

219 {
220  const float *src = (const float *) cvt->buf;
221  Sint16 *dst = (Sint16 *) cvt->buf;
222  int i;
223 
224  LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S16");
225 
226  for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
227  const float sample = *src;
228  if (sample >= 1.0f) {
229  *dst = 32767;
230  } else if (sample <= -1.0f) {
231  *dst = -32768;
232  } else {
233  *dst = (Sint16)(sample * 32767.0f);
234  }
235  }
236 
237  cvt->len_cvt /= 2;
238  if (cvt->filters[++cvt->filter_index]) {
239  cvt->filters[cvt->filter_index](cvt, AUDIO_S16SYS);
240  }
241 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int16_t Sint16
Definition: SDL_stdinc.h:185
int filter_index
Definition: SDL_audio.h:238
GLfloat f
GLenum src
#define AUDIO_S16SYS
Definition: SDL_audio.h:123
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50

◆ SDL_Convert_F32_to_S32_Scalar()

static void SDL_Convert_F32_to_S32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 270 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, AUDIO_S16SYS, AUDIO_S32SYS, AUDIO_S8, AUDIO_U16SYS, AUDIO_U8, SDL_AudioCVT::buf, DIVBY128, DIVBY32768, DIVBY8388607, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, one, SDL_assert, SDLCALL, and zero.

271 {
272  const float *src = (const float *) cvt->buf;
273  Sint32 *dst = (Sint32 *) cvt->buf;
274  int i;
275 
276  LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S32");
277 
278  for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
279  const float sample = *src;
280  if (sample >= 1.0f) {
281  *dst = 2147483647;
282  } else if (sample <= -1.0f) {
283  *dst = (Sint32) -2147483648LL;
284  } else {
285  *dst = ((Sint32)(sample * 8388607.0f)) << 8;
286  }
287  }
288 
289  if (cvt->filters[++cvt->filter_index]) {
290  cvt->filters[cvt->filter_index](cvt, AUDIO_S32SYS);
291  }
292 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLfloat f
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
int32_t Sint32
Definition: SDL_stdinc.h:197
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define AUDIO_S32SYS
Definition: SDL_audio.h:124

◆ SDL_Convert_F32_to_S8_Scalar()

static void SDL_Convert_F32_to_S8_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 166 of file SDL_audiotypecvt.c.

References AUDIO_S8, SDL_AudioCVT::buf, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

167 {
168  const float *src = (const float *) cvt->buf;
169  Sint8 *dst = (Sint8 *) cvt->buf;
170  int i;
171 
172  LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S8");
173 
174  for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
175  const float sample = *src;
176  if (sample >= 1.0f) {
177  *dst = 127;
178  } else if (sample <= -1.0f) {
179  *dst = -128;
180  } else {
181  *dst = (Sint8)(sample * 127.0f);
182  }
183  }
184 
185  cvt->len_cvt /= 4;
186  if (cvt->filters[++cvt->filter_index]) {
187  cvt->filters[cvt->filter_index](cvt, AUDIO_S8);
188  }
189 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLfloat f
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
int8_t Sint8
Definition: SDL_stdinc.h:173
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define AUDIO_S8
Definition: SDL_audio.h:90

◆ SDL_Convert_F32_to_U16_Scalar()

static void SDL_Convert_F32_to_U16_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 244 of file SDL_audiotypecvt.c.

References AUDIO_U16SYS, SDL_AudioCVT::buf, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

245 {
246  const float *src = (const float *) cvt->buf;
247  Uint16 *dst = (Uint16 *) cvt->buf;
248  int i;
249 
250  LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_U16");
251 
252  for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
253  const float sample = *src;
254  if (sample >= 1.0f) {
255  *dst = 65535;
256  } else if (sample <= -1.0f) {
257  *dst = 0;
258  } else {
259  *dst = (Uint16)((sample + 1.0f) * 32767.0f);
260  }
261  }
262 
263  cvt->len_cvt /= 2;
264  if (cvt->filters[++cvt->filter_index]) {
265  cvt->filters[cvt->filter_index](cvt, AUDIO_U16SYS);
266  }
267 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLfloat f
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
uint16_t Uint16
Definition: SDL_stdinc.h:191
#define AUDIO_U16SYS
Definition: SDL_audio.h:122

◆ SDL_Convert_F32_to_U8_Scalar()

static void SDL_Convert_F32_to_U8_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 192 of file SDL_audiotypecvt.c.

References AUDIO_U8, SDL_AudioCVT::buf, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

193 {
194  const float *src = (const float *) cvt->buf;
195  Uint8 *dst = (Uint8 *) cvt->buf;
196  int i;
197 
198  LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_U8");
199 
200  for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
201  const float sample = *src;
202  if (sample >= 1.0f) {
203  *dst = 255;
204  } else if (sample <= -1.0f) {
205  *dst = 0;
206  } else {
207  *dst = (Uint8)((sample + 1.0f) * 127.0f);
208  }
209  }
210 
211  cvt->len_cvt /= 4;
212  if (cvt->filters[++cvt->filter_index]) {
213  cvt->filters[cvt->filter_index](cvt, AUDIO_U8);
214  }
215 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
uint8_t Uint8
Definition: SDL_stdinc.h:179
GLfloat f
GLenum src
#define AUDIO_U8
Definition: SDL_audio.h:89
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50

◆ SDL_Convert_S16_to_F32_Scalar()

static void SDL_Convert_S16_to_F32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 110 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, SDL_AudioCVT::buf, DIVBY32768, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

111 {
112  const Sint16 *src = ((const Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
113  float *dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
114  int i;
115 
116  LOG_DEBUG_CONVERT("AUDIO_S16", "AUDIO_F32");
117 
118  for (i = cvt->len_cvt / sizeof (Sint16); i; --i, --src, --dst) {
119  *dst = ((float) *src) * DIVBY32768;
120  }
121 
122  cvt->len_cvt *= 2;
123  if (cvt->filters[++cvt->filter_index]) {
124  cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
125  }
126 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int16_t Sint16
Definition: SDL_stdinc.h:185
int filter_index
Definition: SDL_audio.h:238
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
#define AUDIO_F32SYS
Definition: SDL_audio.h:125
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define DIVBY32768

◆ SDL_Convert_S32_to_F32_Scalar()

static void SDL_Convert_S32_to_F32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 148 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, SDL_AudioCVT::buf, DIVBY8388607, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

149 {
150  const Sint32 *src = (const Sint32 *) cvt->buf;
151  float *dst = (float *) cvt->buf;
152  int i;
153 
154  LOG_DEBUG_CONVERT("AUDIO_S32", "AUDIO_F32");
155 
156  for (i = cvt->len_cvt / sizeof (Sint32); i; --i, ++src, ++dst) {
157  *dst = ((float) (*src>>8)) * DIVBY8388607;
158  }
159 
160  if (cvt->filters[++cvt->filter_index]) {
161  cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
162  }
163 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
#define AUDIO_F32SYS
Definition: SDL_audio.h:125
int32_t Sint32
Definition: SDL_stdinc.h:197
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define DIVBY8388607

◆ SDL_Convert_S8_to_F32_Scalar()

static void SDL_Convert_S8_to_F32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 72 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, SDL_AudioCVT::buf, DIVBY128, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

73 {
74  const Sint8 *src = ((const Sint8 *) (cvt->buf + cvt->len_cvt)) - 1;
75  float *dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
76  int i;
77 
78  LOG_DEBUG_CONVERT("AUDIO_S8", "AUDIO_F32");
79 
80  for (i = cvt->len_cvt; i; --i, --src, --dst) {
81  *dst = ((float) *src) * DIVBY128;
82  }
83 
84  cvt->len_cvt *= 4;
85  if (cvt->filters[++cvt->filter_index]) {
86  cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
87  }
88 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
#define AUDIO_F32SYS
Definition: SDL_audio.h:125
int8_t Sint8
Definition: SDL_stdinc.h:173
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define DIVBY128

◆ SDL_Convert_U16_to_F32_Scalar()

static void SDL_Convert_U16_to_F32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 129 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, SDL_AudioCVT::buf, DIVBY32768, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

130 {
131  const Uint16 *src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
132  float *dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
133  int i;
134 
135  LOG_DEBUG_CONVERT("AUDIO_U16", "AUDIO_F32");
136 
137  for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
138  *dst = (((float) *src) * DIVBY32768) - 1.0f;
139  }
140 
141  cvt->len_cvt *= 2;
142  if (cvt->filters[++cvt->filter_index]) {
143  cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
144  }
145 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
GLfloat f
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
#define AUDIO_F32SYS
Definition: SDL_audio.h:125
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
uint16_t Uint16
Definition: SDL_stdinc.h:191
#define DIVBY32768

◆ SDL_Convert_U8_to_F32_Scalar()

static void SDL_Convert_U8_to_F32_Scalar ( SDL_AudioCVT cvt,
SDL_AudioFormat  format 
)
static

Definition at line 91 of file SDL_audiotypecvt.c.

References AUDIO_F32SYS, SDL_AudioCVT::buf, DIVBY128, SDL_AudioCVT::filter_index, SDL_AudioCVT::filters, i, SDL_AudioCVT::len_cvt, LOG_DEBUG_CONVERT, and SDLCALL.

92 {
93  const Uint8 *src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
94  float *dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
95  int i;
96 
97  LOG_DEBUG_CONVERT("AUDIO_U8", "AUDIO_F32");
98 
99  for (i = cvt->len_cvt; i; --i, --src, --dst) {
100  *dst = (((float) *src) * DIVBY128) - 1.0f;
101  }
102 
103  cvt->len_cvt *= 4;
104  if (cvt->filters[++cvt->filter_index]) {
105  cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
106  }
107 }
#define LOG_DEBUG_CONVERT(from, to)
Definition: SDL_audio_c.h:34
GLenum GLenum dst
Uint8 * buf
Definition: SDL_audio.h:232
int filter_index
Definition: SDL_audio.h:238
uint8_t Uint8
Definition: SDL_stdinc.h:179
GLfloat f
GLenum src
SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS+1]
Definition: SDL_audio.h:237
#define AUDIO_F32SYS
Definition: SDL_audio.h:125
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define DIVBY128

Variable Documentation

◆ SDL_Convert_F32_to_S16

SDL_AudioFilter SDL_Convert_F32_to_S16 = NULL

Definition at line 60 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTFromFloat().

◆ SDL_Convert_F32_to_S32

SDL_AudioFilter SDL_Convert_F32_to_S32 = NULL

Definition at line 62 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTFromFloat().

◆ SDL_Convert_F32_to_S8

SDL_AudioFilter SDL_Convert_F32_to_S8 = NULL

Definition at line 58 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTFromFloat().

◆ SDL_Convert_F32_to_U16

SDL_AudioFilter SDL_Convert_F32_to_U16 = NULL

Definition at line 61 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTFromFloat().

◆ SDL_Convert_F32_to_U8

SDL_AudioFilter SDL_Convert_F32_to_U8 = NULL

Definition at line 59 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTFromFloat().

◆ SDL_Convert_S16_to_F32

SDL_AudioFilter SDL_Convert_S16_to_F32 = NULL

Definition at line 55 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTToFloat().

◆ SDL_Convert_S32_to_F32

SDL_AudioFilter SDL_Convert_S32_to_F32 = NULL

Definition at line 57 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTToFloat().

◆ SDL_Convert_S8_to_F32

SDL_AudioFilter SDL_Convert_S8_to_F32 = NULL

Definition at line 53 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTToFloat().

◆ SDL_Convert_U16_to_F32

SDL_AudioFilter SDL_Convert_U16_to_F32 = NULL

Definition at line 56 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTToFloat().

◆ SDL_Convert_U8_to_F32

SDL_AudioFilter SDL_Convert_U8_to_F32 = NULL

Definition at line 54 of file SDL_audiotypecvt.c.

Referenced by SDL_BuildAudioTypeCVTToFloat().