4 #include "endianmacros.h"
7 #include "sconv-s16le.h"
8 #include "sconv-s16be.h"
10 static void u8_to_float32(unsigned n
, const void *a
, unsigned an
, float *b
) {
12 const uint8_t *ca
= a
;
13 assert(n
&& a
&& an
&& b
);
18 for (i
= 0; i
< an
; i
++) {
20 sum
+= (((float) v
)-127)/127;
32 static void u8_from_float32(unsigned n
, const float *a
, void *b
, unsigned bn
) {
36 assert(n
&& a
&& b
&& bn
);
47 u
= (uint8_t) (v
*127+127);
49 for (i
= 0; i
< bn
; i
++)
54 static void float32_to_float32(unsigned n
, const void *a
, unsigned an
, float *b
) {
57 assert(n
&& a
&& an
&& b
);
61 for (i
= 0; i
< an
; i
++)
73 static void float32_from_float32(unsigned n
, const float *a
, void *b
, unsigned bn
) {
76 assert(n
&& a
&& b
&& bn
);
79 for (i
= 0; i
< bn
; i
++)
84 pa_convert_to_float32_func_t
pa_get_convert_to_float32_function(enum pa_sample_format f
) {
89 return pa_sconv_s16le_to_float32
;
91 return pa_sconv_s16be_to_float32
;
92 case PA_SAMPLE_FLOAT32
:
93 return float32_to_float32
;
99 pa_convert_from_float32_func_t
pa_get_convert_from_float32_function(enum pa_sample_format f
) {
102 return u8_from_float32
;
103 case PA_SAMPLE_S16LE
:
104 return pa_sconv_s16le_from_float32
;
105 case PA_SAMPLE_S16BE
:
106 return pa_sconv_s16be_from_float32
;
107 case PA_SAMPLE_FLOAT32
:
108 return float32_from_float32
;