1
#ifndef NOATUN_CONVERT_H
2
#define NOATUN_CONVERT_H
5
* convert between sample types
10
* Convert a mono 8 bit group to float
12
void convertMono8ToFloat(unsigned long samples, unsigned char *from, float *to);
14
* convert a mono 8 bit group to float, at a different speed
16
void interpolateMono8ToFloat(unsigned long samples, double start, double speed,
17
unsigned char *from, float *to);
20
* convert a mono 16 bit little-endian stream to float
22
void convertMono16leToFloat(unsigned long samples, unsigned char *from, float *to);
25
* convert a mono 16 bit little-endian stream to float at a different speed
27
void interpolateMono16leToFloat(unsigned long samples, double startpos, double speed,
28
unsigned char *from, float *to);
31
* convert an stereo 8-bit interleaved (Alternating left/right channel) to floats
33
void convertStereoI8To2Float(unsigned long samples, unsigned char *from,
34
float *left, float *right);
37
* convert a stereo 8-bit interleaved (alternating left/right channel) to floats,
38
* at a different speed
40
void interpolateStereoI8To2Float(unsigned long samples, double startpos, double speed,
41
unsigned char *from, float *left, float *right);
43
* convert an interleaved 16 bit little endian stream to two floats
45
void convertStereoI16leTo2Float(unsigned long samples, unsigned char *from, float *left,
49
* convert an interleaved 16 bit little endian stream to two floats at a different
52
void interpolateStereoI16leTo2Float(unsigned long samples, double startpos, double speed,
53
unsigned char *from, float *left, float *right);
56
* convert a float to a float, but at a different speed
58
void interpolateMonoFloatToFloat(unsigned long samples, double startpos, double speed,
59
float *from, float *to);
62
* convert a stereo interleaved float to two floats
64
void convertStereoIFloatTo2Float(unsigned long samples, float *from, float *left,
68
* convert a stereo interleaved float to two floats at a different speed
70
void interpolateStereoIFloatTo2Float(unsigned long samples, double startpos,
71
double speed, float *from, float *left,
75
* convert a mono float to a 16 bit little endian float
77
void convertMonoFloatTo16le(unsigned long samples, float *from, unsigned char *to);
80
* convert a two floats to a 16 bit little endian interleaved float
82
void convertStereo2FloatToI16le(unsigned long samples, float *left, float *right,
86
* convert a mono float to an 8 bit stream
88
void convertMonoFloatTo8(unsigned long samples, float *from, unsigned char *to);
91
* convert two floats to an 8 bit interleaved stream
93
void convertStereo2FloatToI8(unsigned long samples, float *left, float *right,
97
* to little endian (Intel) with swapEndian
98
* does nothing if this is an intel
100
inline void toLittleEndian(unsigned long len, char *buffer);
103
* to big endian with swapEndian
104
* does nothing if this isn't an intel
106
inline void toBigEndian(unsigned long len, char *buffer);
109
* swap the endian, does so on every platform
110
* operates on 16 bits at a time. so loads 16, swaps, and copies them
112
void swapEndian(unsigned long length, char *buffer);