PortAudio 2.0
pa_converters.h
Go to the documentation of this file.
1#ifndef PA_CONVERTERS_H
2#define PA_CONVERTERS_H
3/*
4 * $Id$
5 * Portable Audio I/O Library sample conversion mechanism
6 *
7 * Based on the Open Source API proposed by Ross Bencina
8 * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files
12 * (the "Software"), to deal in the Software without restriction,
13 * including without limitation the rights to use, copy, modify, merge,
14 * publish, distribute, sublicense, and/or sell copies of the Software,
15 * and to permit persons to whom the Software is furnished to do so,
16 * subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
25 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 */
29
30/*
31 * The text above constitutes the entire PortAudio license; however,
32 * the PortAudio community also makes the following non-binding requests:
33 *
34 * Any person wishing to distribute modifications to the Software is
35 * requested to send the modifications to the original developer so that
36 * they can be incorporated into the canonical version. It is also
37 * requested that these non-binding requests be included along with the
38 * license above.
39 */
40
49#include "portaudio.h" /* for PaSampleFormat */
50
51#ifdef __cplusplus
52extern "C"
53{
54#endif /* __cplusplus */
55
56
58
59
70 PaSampleFormat availableFormats, PaSampleFormat format );
71
72
73/* high level conversions functions for use by implementations */
74
75
90typedef void PaUtilConverter(
91 void *destinationBuffer, signed int destinationStride,
92 void *sourceBuffer, signed int sourceStride,
93 unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator );
94
95
108 PaSampleFormat destinationFormat, PaStreamFlags flags );
109
110
119typedef void PaUtilZeroer(
120 void *destinationBuffer, signed int destinationStride, unsigned int count );
121
122
129
130/*----------------------------------------------------------------------------*/
131/* low level functions and data structures which may be used for
132 substituting conversion functions */
133
134
138typedef struct{
143
148
153
158
163
173
182
190
196
202
203 PaUtilConverter *Copy_8_To_8; /* copy without any conversion */
204 PaUtilConverter *Copy_16_To_16; /* copy without any conversion */
205 PaUtilConverter *Copy_24_To_24; /* copy without any conversion */
206 PaUtilConverter *Copy_32_To_32; /* copy without any conversion */
208
209
228
229
240
241
259
260#ifdef __cplusplus
261}
262#endif /* __cplusplus */
263#endif /* PA_CONVERTERS_H */
PaUtilZeroer * PaUtil_SelectZeroer(PaSampleFormat destinationFormat)
Definition pa_converters.c:1869
void PaUtilConverter(void *destinationBuffer, signed int destinationStride, void *sourceBuffer, signed int sourceStride, unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator)
Definition pa_converters.h:90
PaUtilZeroerTable paZeroers
Definition pa_converters.c:1985
void PaUtilZeroer(void *destinationBuffer, signed int destinationStride, unsigned int count)
Definition pa_converters.h:119
PaSampleFormat PaUtil_SelectClosestAvailableFormat(PaSampleFormat availableFormats, PaSampleFormat format)
Definition pa_converters.c:68
PaUtilConverter * PaUtil_SelectConverter(PaSampleFormat sourceFormat, PaSampleFormat destinationFormat, PaStreamFlags flags)
Definition pa_converters.c:176
PaUtilConverterTable paConverters
Definition pa_converters.c:1792
The portable PortAudio API.
unsigned long PaStreamFlags
Definition portaudio.h:662
unsigned long PaSampleFormat
Definition portaudio.h:489
Definition pa_converters.h:138
PaUtilConverter * Float32_To_Int24_Dither
Definition pa_converters.h:145
PaUtilConverter * Float32_To_Int8
Definition pa_converters.h:154
PaUtilConverter * Int24_To_Int16_Dither
Definition pa_converters.h:177
PaUtilConverter * Float32_To_UInt8
Definition pa_converters.h:159
PaUtilConverter * Int16_To_Int32
Definition pa_converters.h:184
PaUtilConverter * Float32_To_Int24
Definition pa_converters.h:144
PaUtilConverter * Float32_To_Int8_Dither
Definition pa_converters.h:155
PaUtilConverter * Float32_To_Int16_Clip
Definition pa_converters.h:151
PaUtilConverter * UInt8_To_Int8
Definition pa_converters.h:201
PaUtilConverter * Float32_To_Int24_Clip
Definition pa_converters.h:146
PaUtilConverter * Int24_To_Int16
Definition pa_converters.h:176
PaUtilConverter * Float32_To_Int8_Clip
Definition pa_converters.h:156
PaUtilConverter * Int32_To_Int16_Dither
Definition pa_converters.h:168
PaUtilConverter * Int32_To_Int24_Dither
Definition pa_converters.h:166
PaUtilConverter * Float32_To_Int32_DitherClip
Definition pa_converters.h:142
PaUtilConverter * Float32_To_UInt8_Dither
Definition pa_converters.h:160
PaUtilConverter * Int16_To_Int8_Dither
Definition pa_converters.h:187
PaUtilConverter * Int32_To_Int24
Definition pa_converters.h:165
PaUtilConverter * UInt8_To_Int32
Definition pa_converters.h:198
PaUtilConverter * UInt8_To_Int24
Definition pa_converters.h:199
PaUtilConverter * Float32_To_Int24_DitherClip
Definition pa_converters.h:147
PaUtilConverter * Float32_To_UInt8_Clip
Definition pa_converters.h:161
PaUtilConverter * UInt8_To_Int16
Definition pa_converters.h:200
PaUtilConverter * Copy_24_To_24
Definition pa_converters.h:205
PaUtilConverter * UInt8_To_Float32
Definition pa_converters.h:197
PaUtilConverter * Int24_To_Float32
Definition pa_converters.h:174
PaUtilConverter * Float32_To_Int32
Definition pa_converters.h:139
PaUtilConverter * Int8_To_Int24
Definition pa_converters.h:193
PaUtilConverter * Int8_To_Float32
Definition pa_converters.h:191
PaUtilConverter * Float32_To_Int32_Dither
Definition pa_converters.h:140
PaUtilConverter * Float32_To_Int16_Dither
Definition pa_converters.h:150
PaUtilConverter * Int32_To_Int8
Definition pa_converters.h:169
PaUtilConverter * Int16_To_UInt8_Dither
Definition pa_converters.h:189
PaUtilConverter * Int16_To_Int24
Definition pa_converters.h:185
PaUtilConverter * Int32_To_Int8_Dither
Definition pa_converters.h:170
PaUtilConverter * Int16_To_UInt8
Definition pa_converters.h:188
PaUtilConverter * Copy_32_To_32
Definition pa_converters.h:206
PaUtilConverter * Float32_To_Int16
Definition pa_converters.h:149
PaUtilConverter * Int32_To_Float32
Definition pa_converters.h:164
PaUtilConverter * Float32_To_Int32_Clip
Definition pa_converters.h:141
PaUtilConverter * Int24_To_Int8
Definition pa_converters.h:178
PaUtilConverter * Int24_To_UInt8
Definition pa_converters.h:180
PaUtilConverter * Int32_To_UInt8_Dither
Definition pa_converters.h:172
PaUtilConverter * Float32_To_UInt8_DitherClip
Definition pa_converters.h:162
PaUtilConverter * Int24_To_Int32
Definition pa_converters.h:175
PaUtilConverter * Float32_To_Int8_DitherClip
Definition pa_converters.h:157
PaUtilConverter * Copy_8_To_8
Definition pa_converters.h:203
PaUtilConverter * Int16_To_Float32
Definition pa_converters.h:183
PaUtilConverter * Int32_To_Int16
Definition pa_converters.h:167
PaUtilConverter * Int16_To_Int8
Definition pa_converters.h:186
PaUtilConverter * Int8_To_Int32
Definition pa_converters.h:192
PaUtilConverter * Copy_16_To_16
Definition pa_converters.h:204
PaUtilConverter * Int8_To_UInt8
Definition pa_converters.h:195
PaUtilConverter * Int8_To_Int16
Definition pa_converters.h:194
PaUtilConverter * Int24_To_UInt8_Dither
Definition pa_converters.h:181
PaUtilConverter * Int24_To_Int8_Dither
Definition pa_converters.h:179
PaUtilConverter * Int32_To_UInt8
Definition pa_converters.h:171
PaUtilConverter * Float32_To_Int16_DitherClip
Definition pa_converters.h:152
State needed to generate a dither signal.
Definition pa_dither.h:61
Definition pa_converters.h:233
PaUtilZeroer * Zero8
Definition pa_converters.h:235
PaUtilZeroer * Zero32
Definition pa_converters.h:238
PaUtilZeroer * Zero24
Definition pa_converters.h:237
PaUtilZeroer * Zero16
Definition pa_converters.h:236
PaUtilZeroer * ZeroU8
Definition pa_converters.h:234