1 /* GSequencer - Advanced GTK Sequencer 2 * Copyright (C) 2005-2021 Joël Krähemann 3 * 4 * This file is part of GSequencer. 5 * 6 * GSequencer is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * GSequencer is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with GSequencer. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef __AGS_AUDIO_BUFFER_UTIL_H__ 21 #define __AGS_AUDIO_BUFFER_UTIL_H__ 22 23 #include <glib.h> 24 #include <glib-object.h> 25 26 #include <ags/libags.h> 27 28 #ifdef __APPLE__ 29 #include <AudioToolbox/AudioToolbox.h> 30 #endif 31 32 G_BEGIN_DECLS 33 34 #define AGS_TYPE_AUDIO_BUFFER_UTIL (ags_audio_buffer_util_get_type()) 35 36 typedef struct _AgsAudioBufferUtil AgsAudioBufferUtil; 37 38 struct _AgsAudioBufferUtil 39 { 40 //empty 41 }; 42 43 GType ags_audio_buffer_util_get_type(void); 44 45 #define AGS_AUDIO_BUFFER_S8(ptr) ((gint8 *)(ptr)) 46 #define AGS_AUDIO_BUFFER_S16(ptr) ((gint16 *)(ptr)) 47 #define AGS_AUDIO_BUFFER_S24(ptr) ((gint32 *)(ptr)) 48 #define AGS_AUDIO_BUFFER_S32(ptr) ((gint32 *)(ptr)) 49 #define AGS_AUDIO_BUFFER_S64(ptr) ((gint64 *)(ptr)) 50 #define AGS_AUDIO_BUFFER_FLOAT(ptr) ((gfloat *)(ptr)) 51 #define AGS_AUDIO_BUFFER_DOUBLE(ptr) ((gdouble *)(ptr)) 52 #define AGS_AUDIO_BUFFER_COMPLEX(ptr) ((AgsComplex *)(ptr)) 53 54 #define AGS_AUDIO_BUFFER_UTIL_S8_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 55 l_z = ((double) x_val / (double) G_MAXINT8) + I * 0; \ 56 ags_complex_set(x_retval[0], l_z); } 57 #define AGS_AUDIO_BUFFER_UTIL_S16_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 58 l_z = ((double) x_val / (double) G_MAXINT16) + I * 0; \ 59 ags_complex_set(x_retval[0], l_z); } 60 #define AGS_AUDIO_BUFFER_UTIL_S24_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 61 l_z = ((double) x_val / (double) (0xffffff - 1)) + I * 0; \ 62 ags_complex_set(x_retval[0], l_z); } 63 #define AGS_AUDIO_BUFFER_UTIL_S32_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 64 l_z = ((double) x_val / (double) G_MAXINT32) + I * 0; \ 65 ags_complex_set(x_retval[0], l_z); } 66 #define AGS_AUDIO_BUFFER_UTIL_S64_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 67 l_z = ((double) x_val / (double) G_MAXINT64) + I * 0; \ 68 ags_complex_set(x_retval[0], l_z); } 69 #define AGS_AUDIO_BUFFER_UTIL_FLOAT_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 70 l_z = (x_val) + I * 0; \ 71 ags_complex_set(x_retval[0], l_z); } 72 #define AGS_AUDIO_BUFFER_UTIL_DOUBLE_TO_COMPLEX(x_val, x_retval) { double complex l_z; \ 73 l_z = (x_val) + I * 0; \ 74 ags_complex_set(x_retval[0], l_z); } 75 76 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_S8(x_val, x_retval) { double complex l_z; \ 77 l_z = ags_complex_get(x_val); \ 78 x_retval[0] = (gint8) ((double) G_MAXINT8 * creal(l_z)); } 79 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_S16(x_val, x_retval) { double complex l_z; \ 80 l_z = ags_complex_get(x_val); \ 81 x_retval[0] = (gint16) ((double) G_MAXINT16 * creal(l_z)); } 82 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_S24(x_val, x_retval) { double complex l_z; \ 83 l_z = ags_complex_get(x_val); \ 84 x_retval[0] = (gint32) ((double) (0xffffff - 1) * creal(l_z)); } 85 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_S32(x_val, x_retval) { double complex l_z; \ 86 l_z = ags_complex_get(x_val); \ 87 x_retval[0] = (gint32) ((double) G_MAXINT32 * creal(l_z)); } 88 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_S64(x_val, x_retval) { double complex l_z; \ 89 l_z = ags_complex_get(x_val); \ 90 x_retval[0] = (gint64) ((double) G_MAXINT64 * creal(l_z)); } 91 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_FLOAT(x_val, x_retval) { double complex l_z; \ 92 l_z = ags_complex_get(x_val); \ 93 x_retval[0] = creal(l_z); } 94 #define AGS_AUDIO_BUFFER_UTIL_COMPLEX_TO_DOUBLE(x_val, x_retval) { double complex l_z; \ 95 l_z = ags_complex_get(x_val); \ 96 x_retval[0] = creal(l_z); } 97 98 /** 99 * AgsAudioBufferUtilFormat: 100 * @AGS_AUDIO_BUFFER_UTIL_S8: signed 8 bit raw pcm 101 * @AGS_AUDIO_BUFFER_UTIL_S16: signed 16 bit raw pcm 102 * @AGS_AUDIO_BUFFER_UTIL_S24: signed 24 bit raw pcm 103 * @AGS_AUDIO_BUFFER_UTIL_S32: signed 32 bit raw pcm 104 * @AGS_AUDIO_BUFFER_UTIL_S64: signed 64 bit raw pcm 105 * @AGS_AUDIO_BUFFER_UTIL_FLOAT: signed float raw pcm 106 * @AGS_AUDIO_BUFFER_UTIL_DOUBLE: signed double raw pcm 107 * @AGS_AUDIO_BUFFER_UTIL_FLOAT32: signed float32 raw pcm 108 * @AGS_AUDIO_BUFFER_UTIL_COMPLEX: complex data type 109 * 110 * #AgsAudioBufferUtilFormat specifies the audio data representation. 111 */ 112 typedef enum{ 113 AGS_AUDIO_BUFFER_UTIL_S8, 114 AGS_AUDIO_BUFFER_UTIL_S16, 115 AGS_AUDIO_BUFFER_UTIL_S24, 116 AGS_AUDIO_BUFFER_UTIL_S32, 117 AGS_AUDIO_BUFFER_UTIL_S64, 118 AGS_AUDIO_BUFFER_UTIL_FLOAT, 119 AGS_AUDIO_BUFFER_UTIL_DOUBLE, 120 AGS_AUDIO_BUFFER_UTIL_FLOAT32, 121 AGS_AUDIO_BUFFER_UTIL_COMPLEX, 122 }AgsAudioBufferUtilFormat; 123 124 /** 125 * AgsAudioBufferUtilSamplerate: 126 * @AGS_AUDIO_BUFFER_UTIL_8000HZ: 8000 Hz 127 * @AGS_AUDIO_BUFFER_UTIL_44100HZ: 44100 Hz 128 * @AGS_AUDIO_BUFFER_UTIL_48000HZ: 48000 Hz 129 * @AGS_AUDIO_BUFFER_UTIL_96000HZ: 96000 Hz 130 * @AGS_AUDIO_BUFFER_UTIL_176400HZ: 176400 Hz 131 * @AGS_AUDIO_BUFFER_UTIL_192000HZ: 192000 Hz 132 * @AGS_AUDIO_BUFFER_UTIL_352800HZ: 352800 Hz 133 * @AGS_AUDIO_BUFFER_UTIL_2822400HZ: 2822400 Hz 134 * @AGS_AUDIO_BUFFER_UTIL_5644800HZ: 5644800 Hz 135 * 136 * Some common samplerates in Hertz. 137 */ 138 typedef enum{ 139 AGS_AUDIO_BUFFER_UTIL_8000HZ, 140 AGS_AUDIO_BUFFER_UTIL_44100HZ, 141 AGS_AUDIO_BUFFER_UTIL_48000HZ, 142 AGS_AUDIO_BUFFER_UTIL_96000HZ, 143 AGS_AUDIO_BUFFER_UTIL_176400HZ, 144 AGS_AUDIO_BUFFER_UTIL_192000HZ, 145 AGS_AUDIO_BUFFER_UTIL_352800HZ, 146 AGS_AUDIO_BUFFER_UTIL_2822400HZ, 147 AGS_AUDIO_BUFFER_UTIL_5644800HZ, 148 }AgsAudioBufferUtilSamplerate; 149 150 /** 151 * AgsAudioBufferUtilCopyMode: 152 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_S8 153 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_S16 154 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_S24 155 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_S32 156 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_S64 157 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_FLOAT 158 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 159 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_S8 160 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_S16 161 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_S24 162 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_S32 163 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_S64 164 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_FLOAT 165 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 166 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_S8 167 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_S16 168 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_S24 169 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_S32 170 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_S64 171 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_FLOAT 172 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 173 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_S8 174 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_S16 175 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_S24 176 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_S32 177 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_S64 178 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_FLOAT 179 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 180 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_S8 181 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_S16 182 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_S24 183 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_S32 184 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_S64 185 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_FLOAT 186 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 187 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_S8 188 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_S16 189 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_S24 190 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_S32 191 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_S64 192 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_FLOAT 193 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_DOUBLE 194 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_S8 195 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_S16 196 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_S24 197 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_S32 198 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_S64 199 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_FLOAT 200 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_DOUBLE 201 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 202 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 203 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 204 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 205 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 206 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_FLOAT 207 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_DOUBLE 208 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_FLOAT32 209 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_S8 210 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_S16 211 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_S24 212 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_S32 213 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_S64 214 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_FLOAT 215 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_DOUBLE 216 * @AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_S8 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 217 * @AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_S16 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 218 * @AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_S24 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 219 * @AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_S32 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 220 * @AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_S64 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 221 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_FLOAT to AGS_AUDIO_BUFFER_UTIL_COMPLEX 222 * @AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_DOUBLE to AGS_AUDIO_BUFFER_UTIL_COMPLEX 223 * @AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_FLOAT32 to AGS_AUDIO_BUFFER_UTIL_COMPLEX 224 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_COMPLEX: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_COMPLEX 225 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S8: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_S8 226 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S16: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_S16 227 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S24: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_S24 228 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S32: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_S32 229 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S64: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_S64 230 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_FLOAT: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_FLOAT 231 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_DOUBLE: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_DOUBLE 232 * @AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_FLOAT32: copy AGS_AUDIO_BUFFER_UTIL_COMPLEX to AGS_AUDIO_BUFFER_UTIL_FLOAT32 233 * 234 * Copy modes. 235 */ 236 typedef enum{ 237 /* signed 8 bit source*/ 238 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S8, 239 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S16, 240 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S24, 241 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S32, 242 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_S64, 243 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_FLOAT, 244 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_DOUBLE, 245 246 /* signed 16 bit source */ 247 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S8, 248 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S16, 249 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S24, 250 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S32, 251 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_S64, 252 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_FLOAT, 253 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_DOUBLE, 254 255 /* signed 24 bit source */ 256 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S8, 257 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S16, 258 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S24, 259 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S32, 260 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_S64, 261 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_FLOAT, 262 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_DOUBLE, 263 264 /* signed 32 bit source */ 265 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S8, 266 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S16, 267 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S24, 268 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S32, 269 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_S64, 270 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_FLOAT, 271 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_DOUBLE, 272 273 /* signed 64 bit source */ 274 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S8, 275 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S16, 276 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S24, 277 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S32, 278 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_S64, 279 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_FLOAT, 280 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_DOUBLE, 281 282 /* float source */ 283 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S8, 284 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S16, 285 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S24, 286 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S32, 287 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_S64, 288 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_FLOAT, 289 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_DOUBLE, 290 291 /* double source */ 292 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S8, 293 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S16, 294 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S24, 295 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S32, 296 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_S64, 297 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_FLOAT, 298 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_DOUBLE, 299 300 /* Float32 */ 301 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_FLOAT32, 302 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_FLOAT32, 303 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_FLOAT32, 304 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_FLOAT32, 305 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_FLOAT32, 306 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_FLOAT32, 307 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_FLOAT32, 308 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_FLOAT32, 309 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S8, 310 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S16, 311 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S24, 312 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S32, 313 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_S64, 314 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_FLOAT, 315 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_DOUBLE, 316 317 /* AgsComplex */ 318 AGS_AUDIO_BUFFER_UTIL_COPY_S8_TO_COMPLEX, 319 AGS_AUDIO_BUFFER_UTIL_COPY_S16_TO_COMPLEX, 320 AGS_AUDIO_BUFFER_UTIL_COPY_S24_TO_COMPLEX, 321 AGS_AUDIO_BUFFER_UTIL_COPY_S32_TO_COMPLEX, 322 AGS_AUDIO_BUFFER_UTIL_COPY_S64_TO_COMPLEX, 323 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT_TO_COMPLEX, 324 AGS_AUDIO_BUFFER_UTIL_COPY_DOUBLE_TO_COMPLEX, 325 AGS_AUDIO_BUFFER_UTIL_COPY_FLOAT32_TO_COMPLEX, 326 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_COMPLEX, 327 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S8, 328 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S16, 329 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S24, 330 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S32, 331 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_S64, 332 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_FLOAT, 333 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_DOUBLE, 334 AGS_AUDIO_BUFFER_UTIL_COPY_COMPLEX_TO_FLOAT32, 335 336 }AgsAudioBufferUtilCopyMode; 337 338 typedef gint8 ags_v8s8 __attribute__ ((vector_size(8 * sizeof(gint8)))); 339 typedef gint16 ags_v8s16 __attribute__ ((vector_size(8 * sizeof(gint16)))); 340 typedef gint32 ags_v8s32 __attribute__ ((vector_size(8 * sizeof(gint32)))); 341 typedef gint64 ags_v8s64 __attribute__ ((vector_size(8 * sizeof(gint64)))); 342 typedef gfloat ags_v8float __attribute__ ((vector_size(8 * sizeof(gfloat)))); 343 typedef gdouble ags_v8double __attribute__ ((vector_size(8 * sizeof(gdouble)))); 344 345 guint ags_audio_buffer_util_format_from_soundcard(guint soundcard_format); 346 guint ags_audio_buffer_util_get_copy_mode(guint destination_format, 347 guint source_format); 348 349 /* clear */ 350 void ags_audio_buffer_util_clear_float(gfloat *buffer, guint channels, 351 guint count); 352 353 #ifdef __APPLE__ 354 void ags_audio_buffer_util_clear_float32(Float32 *buffer, guint channels, 355 guint count); 356 #endif 357 358 void ags_audio_buffer_util_clear_double(gdouble *buffer, guint channels, 359 guint count); 360 void ags_audio_buffer_util_clear_complex(AgsComplex *buffer, guint channels, 361 guint count); 362 void ags_audio_buffer_util_clear_buffer(void *buffer, guint channels, 363 guint count, guint format); 364 365 /* envelope */ 366 G_DEPRECATED_FOR(ags_envelope_util_compute_s8) 367 gdouble ags_audio_buffer_util_envelope_s8(gint8 *buffer, guint channels, 368 guint buffer_length, 369 gdouble current_volume, 370 gdouble ratio); 371 G_DEPRECATED_FOR(ags_envelope_util_compute_s16) 372 gdouble ags_audio_buffer_util_envelope_s16(gint16 *buffer, guint channels, 373 guint buffer_length, 374 gdouble current_volume, 375 gdouble ratio); 376 G_DEPRECATED_FOR(ags_envelope_util_compute_s24) 377 gdouble ags_audio_buffer_util_envelope_s24(gint32 *buffer, guint channels, 378 guint buffer_length, 379 gdouble current_volume, 380 gdouble ratio); 381 G_DEPRECATED_FOR(ags_envelope_util_compute_s32) 382 gdouble ags_audio_buffer_util_envelope_s32(gint32 *buffer, guint channels, 383 guint buffer_length, 384 gdouble current_volume, 385 gdouble ratio); 386 G_DEPRECATED_FOR(ags_envelope_util_compute_s64) 387 gdouble ags_audio_buffer_util_envelope_s64(gint64 *buffer, guint channels, 388 guint buffer_length, 389 gdouble current_volume, 390 gdouble ratio); 391 G_DEPRECATED_FOR(ags_envelope_util_compute_float) 392 gdouble ags_audio_buffer_util_envelope_float(gfloat *buffer, guint channels, 393 guint buffer_length, 394 gdouble current_volume, 395 gdouble ratio); 396 G_DEPRECATED_FOR(ags_envelope_util_compute_double) 397 gdouble ags_audio_buffer_util_envelope_double(gdouble *buffer, guint channels, 398 guint buffer_length, 399 gdouble current_volume, 400 gdouble ratio); 401 G_DEPRECATED_FOR(ags_envelope_util_compute_complex) 402 gdouble ags_audio_buffer_util_envelope_complex(AgsComplex *buffer, guint channels, 403 guint buffer_length, 404 gdouble current_volume, 405 gdouble ratio); 406 407 G_DEPRECATED_FOR(ags_envelope_util_compute) 408 gdouble ags_audio_buffer_util_envelope(void *buffer, guint channels, 409 guint format, 410 guint buffer_length, 411 gdouble current_volume, 412 gdouble ratio); 413 414 /* volume */ 415 G_DEPRECATED_FOR(ags_volume_util_compute_s8) 416 void ags_audio_buffer_util_volume_s8(gint8 *buffer, guint channels, 417 guint buffer_length, 418 gdouble volume); 419 G_DEPRECATED_FOR(ags_volume_util_compute_s16) 420 void ags_audio_buffer_util_volume_s16(gint16 *buffer, guint channels, 421 guint buffer_length, 422 gdouble volume); 423 G_DEPRECATED_FOR(ags_volume_util_compute_s24) 424 void ags_audio_buffer_util_volume_s24(gint32 *buffer, guint channels, 425 guint buffer_length, 426 gdouble volume); 427 G_DEPRECATED_FOR(ags_volume_util_compute_s32) 428 void ags_audio_buffer_util_volume_s32(gint32 *buffer, guint channels, 429 guint buffer_length, 430 gdouble volume); 431 G_DEPRECATED_FOR(ags_volume_util_compute_s64) 432 void ags_audio_buffer_util_volume_s64(gint64 *buffer, guint channels, 433 guint buffer_length, 434 gdouble volume); 435 G_DEPRECATED_FOR(ags_volume_util_compute_float) 436 void ags_audio_buffer_util_volume_float(gfloat *buffer, guint channels, 437 guint buffer_length, 438 gdouble volume); 439 G_DEPRECATED_FOR(ags_volume_util_compute_double) 440 void ags_audio_buffer_util_volume_double(gdouble *buffer, guint channels, 441 guint buffer_length, 442 gdouble volume); 443 G_DEPRECATED_FOR(ags_volume_util_compute_complex) 444 void ags_audio_buffer_util_volume_complex(AgsComplex *buffer, guint channels, 445 guint buffer_length, 446 gdouble volume); 447 448 G_DEPRECATED_FOR(ags_volume_util_compute) 449 void ags_audio_buffer_util_volume(void *buffer, guint channels, 450 guint format, 451 guint buffer_length, 452 gdouble volume); 453 454 /* peak */ 455 G_DEPRECATED_FOR(ags_peak_util_compute_s8) 456 gdouble ags_audio_buffer_util_peak_s8(gint8 *buffer, guint channels, 457 guint buffer_length, 458 gdouble harmonic_rate, 459 gdouble max_rate, 460 gdouble pressure_factor); 461 G_DEPRECATED_FOR(ags_peak_util_compute_s16) 462 gdouble ags_audio_buffer_util_peak_s16(gint16 *buffer, guint channels, 463 guint buffer_length, 464 gdouble harmonic_rate, 465 gdouble max_rate, 466 gdouble pressure_factor); 467 G_DEPRECATED_FOR(ags_peak_util_compute_s24) 468 gdouble ags_audio_buffer_util_peak_s24(gint32 *buffer, guint channels, 469 guint buffer_length, 470 gdouble harmonic_rate, 471 gdouble max_rate, 472 gdouble pressure_factor); 473 G_DEPRECATED_FOR(ags_peak_util_compute_s32) 474 gdouble ags_audio_buffer_util_peak_s32(gint32 *buffer, guint channels, 475 guint buffer_length, 476 gdouble harmonic_rate, 477 gdouble max_rate, 478 gdouble pressure_factor); 479 G_DEPRECATED_FOR(ags_peak_util_compute_s64) 480 gdouble ags_audio_buffer_util_peak_s64(gint64 *buffer, guint channels, 481 guint buffer_length, 482 gdouble harmonic_rate, 483 gdouble max_rate, 484 gdouble pressure_factor); 485 G_DEPRECATED_FOR(ags_peak_util_compute_float) 486 gdouble ags_audio_buffer_util_peak_float(gfloat *buffer, guint channels, 487 guint buffer_length, 488 gdouble harmonic_rate, 489 gdouble max_rate, 490 gdouble pressure_factor); 491 G_DEPRECATED_FOR(ags_peak_util_compute_double) 492 gdouble ags_audio_buffer_util_peak_double(gdouble *buffer, guint channels, 493 guint buffer_length, 494 gdouble harmonic_rate, 495 gdouble max_rate, 496 gdouble pressure_factor); 497 G_DEPRECATED_FOR(ags_peak_util_compute_complex) 498 gdouble ags_audio_buffer_util_peak_complex(AgsComplex *buffer, guint channels, 499 guint buffer_length, 500 gdouble harmonic_rate, 501 gdouble max_rate, 502 gdouble pressure_factor); 503 504 G_DEPRECATED_FOR(ags_peak_util_compute) 505 gdouble ags_audio_buffer_util_peak(void *buffer, guint channels, 506 guint format, 507 guint buffer_length, 508 gdouble harmonic_rate, 509 gdouble max_rate, 510 gdouble pressure_factor); 511 512 /* resample */ 513 G_DEPRECATED_FOR(ags_resample_util_compute_s8) 514 gint8* ags_audio_buffer_util_resample_s8(gint8 *buffer, guint channels, 515 guint samplerate, 516 guint buffer_length, 517 guint target_samplerate); 518 G_DEPRECATED_FOR(ags_resample_util_compute_s16) 519 gint16* ags_audio_buffer_util_resample_s16(gint16 *buffer, guint channels, 520 guint samplerate, 521 guint buffer_length, 522 guint target_samplerate); 523 G_DEPRECATED_FOR(ags_resample_util_compute_s24) 524 gint32* ags_audio_buffer_util_resample_s24(gint32 *buffer, guint channels, 525 guint samplerate, 526 guint buffer_length, 527 guint target_samplerate); 528 G_DEPRECATED_FOR(ags_resample_util_compute_s32) 529 gint32* ags_audio_buffer_util_resample_s32(gint32 *buffer, guint channels, 530 guint samplerate, 531 guint buffer_length, 532 guint target_samplerate); 533 G_DEPRECATED_FOR(ags_resample_util_compute_s64) 534 gint64* ags_audio_buffer_util_resample_s64(gint64 *buffer, guint channels, 535 guint samplerate, 536 guint buffer_length, 537 guint target_samplerate); 538 G_DEPRECATED_FOR(ags_resample_util_compute_float) 539 gfloat* ags_audio_buffer_util_resample_float(gfloat *buffer, guint channels, 540 guint samplerate, 541 guint buffer_length, 542 guint target_samplerate); 543 G_DEPRECATED_FOR(ags_resample_util_compute_double) 544 gdouble* ags_audio_buffer_util_resample_double(gdouble *buffer, guint channels, 545 guint samplerate, 546 guint buffer_length, 547 guint target_samplerate); 548 G_DEPRECATED_FOR(ags_resample_util_compute_complex) 549 AgsComplex* ags_audio_buffer_util_resample_complex(AgsComplex *buffer, guint channels, 550 guint samplerate, 551 guint buffer_length, 552 guint target_samplerate); 553 554 G_DEPRECATED_FOR(ags_resample_util_compute) 555 void* ags_audio_buffer_util_resample(void *buffer, guint channels, 556 guint format, guint samplerate, 557 guint buffer_length, 558 guint target_samplerate); 559 560 /* resample with buffer */ 561 G_DEPRECATED 562 void ags_audio_buffer_util_resample_s8_with_buffer(gint8 *buffer, guint channels, 563 guint samplerate, 564 guint buffer_length, 565 guint target_samplerate, 566 guint target_buffer_length, 567 gint8 *target_buffer); 568 G_DEPRECATED 569 void ags_audio_buffer_util_resample_s16_with_buffer(gint16 *buffer, guint channels, 570 guint samplerate, 571 guint buffer_length, 572 guint target_samplerate, 573 guint target_buffer_length, 574 gint16 *target_buffer); 575 G_DEPRECATED 576 void ags_audio_buffer_util_resample_s24_with_buffer(gint32 *buffer, guint channels, 577 guint samplerate, 578 guint buffer_length, 579 guint target_samplerate, 580 guint target_buffer_length, 581 gint32 *target_buffer); 582 G_DEPRECATED 583 void ags_audio_buffer_util_resample_s32_with_buffer(gint32 *buffer, guint channels, 584 guint samplerate, 585 guint buffer_length, 586 guint target_samplerate, 587 guint target_buffer_length, 588 gint32 *target_buffer); 589 G_DEPRECATED 590 void ags_audio_buffer_util_resample_s64_with_buffer(gint64 *buffer, guint channels, 591 guint samplerate, 592 guint buffer_length, 593 guint target_samplerate, 594 guint target_buffer_length, 595 gint64 *target_buffer); 596 G_DEPRECATED 597 void ags_audio_buffer_util_resample_float_with_buffer(gfloat *buffer, guint channels, 598 guint samplerate, 599 guint buffer_length, 600 guint target_samplerate, 601 guint target_buffer_length, 602 gfloat *target_buffer); 603 G_DEPRECATED 604 void ags_audio_buffer_util_resample_double_with_buffer(gdouble *buffer, guint channels, 605 guint samplerate, 606 guint buffer_length, 607 guint target_samplerate, 608 guint target_buffer_length, 609 gdouble *target_buffer); 610 G_DEPRECATED 611 void ags_audio_buffer_util_resample_complex_with_buffer(AgsComplex *buffer, guint channels, 612 guint samplerate, 613 guint buffer_length, 614 guint target_samplerate, 615 guint target_buffer_length, 616 AgsComplex *target_buffer); 617 618 G_DEPRECATED 619 void ags_audio_buffer_util_resample_with_buffer(void *buffer, guint channels, 620 guint format, guint samplerate, 621 guint buffer_length, 622 guint target_samplerate, 623 guint target_buffer_length, 624 void *target_buffer); 625 626 /* pong */ 627 void ags_audio_buffer_util_pong_s8(gint8 *destination, guint dchannels, 628 gint8 *source, guint schannels, 629 guint count); 630 void ags_audio_buffer_util_pong_s16(gint16 *destination, guint dchannels, 631 gint16 *source, guint schannels, 632 guint count); 633 void ags_audio_buffer_util_pong_s24(gint32 *destination, guint dchannels, 634 gint32 *source, guint schannels, 635 guint count); 636 void ags_audio_buffer_util_pong_s32(gint32 *destination, guint dchannels, 637 gint32 *source, guint schannels, 638 guint count); 639 void ags_audio_buffer_util_pong_s64(gint64 *destination, guint dchannels, 640 gint64 *source, guint schannels, 641 guint count); 642 void ags_audio_buffer_util_pong_float(gfloat *destination, guint dchannels, 643 gfloat *source, guint schannels, 644 guint count); 645 void ags_audio_buffer_util_pong_double(gdouble *destination, guint dchannels, 646 gdouble *source, guint schannels, 647 guint count); 648 void ags_audio_buffer_util_pong_complex(AgsComplex *destination, guint dchannels, 649 AgsComplex *source, guint schannels, 650 guint count); 651 652 void ags_audio_buffer_util_pong(void *destination, guint dchannels, 653 void *source, guint schannels, 654 guint count, guint format); 655 656 /* copy 8 bit */ 657 void ags_audio_buffer_util_copy_s8_to_s8(gint8 *destination, guint dchannels, 658 gint8 *source, guint schannels, 659 guint count); 660 void ags_audio_buffer_util_copy_s8_to_s16(gint16 *destination, guint dchannels, 661 gint8 *source, guint schannels, 662 guint count); 663 void ags_audio_buffer_util_copy_s8_to_s24(gint32 *destination, guint dchannels, 664 gint8 *source, guint schannels, 665 guint count); 666 void ags_audio_buffer_util_copy_s8_to_s32(gint32 *destination, guint dchannels, 667 gint8 *source, guint schannels, 668 guint count); 669 void ags_audio_buffer_util_copy_s8_to_s64(gint64 *destination, guint dchannels, 670 gint8 *source, guint schannels, 671 guint count); 672 void ags_audio_buffer_util_copy_s8_to_float(gfloat *destination, guint dchannels, 673 gint8 *source, guint schannels, 674 guint count); 675 void ags_audio_buffer_util_copy_s8_to_double(gdouble *destination, guint dchannels, 676 gint8 *source, guint schannels, 677 guint count); 678 679 /* copy 16 bit */ 680 void ags_audio_buffer_util_copy_s16_to_s8(gint8 *destination, guint dchannels, 681 gint16 *source, guint schannels, 682 guint count); 683 void ags_audio_buffer_util_copy_s16_to_s16(gint16 *destination, guint dchannels, 684 gint16 *source, guint schannels, 685 guint count); 686 void ags_audio_buffer_util_copy_s16_to_s24(gint32 *destination, guint dchannels, 687 gint16 *source, guint schannels, 688 guint count); 689 void ags_audio_buffer_util_copy_s16_to_s32(gint32 *destination, guint dchannels, 690 gint16 *source, guint schannels, 691 guint count); 692 void ags_audio_buffer_util_copy_s16_to_s64(gint64 *destination, guint dchannels, 693 gint16 *source, guint schannels, 694 guint count); 695 void ags_audio_buffer_util_copy_s16_to_float(gfloat *destination, guint dchannels, 696 gint16 *source, guint schannels, 697 guint count); 698 void ags_audio_buffer_util_copy_s16_to_double(gdouble *destination, guint dchannels, 699 gint16 *source, guint schannels, 700 guint count); 701 702 /* copy 24 bit */ 703 void ags_audio_buffer_util_copy_s24_to_s8(gint8 *destination, guint dchannels, 704 gint32 *source, guint schannels, 705 guint count); 706 void ags_audio_buffer_util_copy_s24_to_s16(gint16 *destination, guint dchannels, 707 gint32 *source, guint schannels, 708 guint count); 709 void ags_audio_buffer_util_copy_s24_to_s24(gint32 *destination, guint dchannels, 710 gint32 *source, guint schannels, 711 guint count); 712 void ags_audio_buffer_util_copy_s24_to_s32(gint32 *destination, guint dchannels, 713 gint32 *source, guint schannels, 714 guint count); 715 void ags_audio_buffer_util_copy_s24_to_s64(gint64 *destination, guint dchannels, 716 gint32 *source, guint schannels, 717 guint count); 718 void ags_audio_buffer_util_copy_s24_to_float(gfloat *destination, guint dchannels, 719 gint32 *source, guint schannels, 720 guint count); 721 void ags_audio_buffer_util_copy_s24_to_double(gdouble *destination, guint dchannels, 722 gint32 *source, guint schannels, 723 guint count); 724 725 /* copy 32 bit */ 726 void ags_audio_buffer_util_copy_s32_to_s8(gint8 *destination, guint dchannels, 727 gint32 *source, guint schannels, 728 guint count); 729 void ags_audio_buffer_util_copy_s32_to_s16(gint16 *destination, guint dchannels, 730 gint32 *source, guint schannels, 731 guint count); 732 void ags_audio_buffer_util_copy_s32_to_s24(gint32 *destination, guint dchannels, 733 gint32 *source, guint schannels, 734 guint count); 735 void ags_audio_buffer_util_copy_s32_to_s32(gint32 *destination, guint dchannels, 736 gint32 *source, guint schannels, 737 guint count); 738 void ags_audio_buffer_util_copy_s32_to_s64(gint64 *destination, guint dchannels, 739 gint32 *source, guint schannels, 740 guint count); 741 void ags_audio_buffer_util_copy_s32_to_float(gfloat *destination, guint dchannels, 742 gint32 *source, guint schannels, 743 guint count); 744 void ags_audio_buffer_util_copy_s32_to_double(gdouble *destination, guint dchannels, 745 gint32 *source, guint schannels, 746 guint count); 747 748 /* copy 64 bit */ 749 void ags_audio_buffer_util_copy_s64_to_s8(gint8 *destination, guint dchannels, 750 gint64 *source, guint schannels, 751 guint count); 752 void ags_audio_buffer_util_copy_s64_to_s16(gint16 *destination, guint dchannels, 753 gint64 *source, guint schannels, 754 guint count); 755 void ags_audio_buffer_util_copy_s64_to_s24(gint32 *destination, guint dchannels, 756 gint64 *source, guint schannels, 757 guint count); 758 void ags_audio_buffer_util_copy_s64_to_s32(gint32 *destination, guint dchannels, 759 gint64 *source, guint schannels, 760 guint count); 761 void ags_audio_buffer_util_copy_s64_to_s64(gint64 *destination, guint dchannels, 762 gint64 *source, guint schannels, 763 guint count); 764 void ags_audio_buffer_util_copy_s64_to_float(gfloat *destination, guint dchannels, 765 gint64 *source, guint schannels, 766 guint count); 767 void ags_audio_buffer_util_copy_s64_to_double(gdouble *destination, guint dchannels, 768 gint64 *source, guint schannels, 769 guint count); 770 771 /* copy float */ 772 void ags_audio_buffer_util_copy_float_to_s8(gint8 *destination, guint dchannels, 773 gfloat *source, guint schannels, 774 guint count); 775 void ags_audio_buffer_util_copy_float_to_s16(gint16 *destination, guint dchannels, 776 gfloat *source, guint schannels, 777 guint count); 778 void ags_audio_buffer_util_copy_float_to_s24(gint32 *destination, guint dchannels, 779 gfloat *source, guint schannels, 780 guint count); 781 void ags_audio_buffer_util_copy_float_to_s32(gint32 *destination, guint dchannels, 782 gfloat *source, guint schannels, 783 guint count); 784 void ags_audio_buffer_util_copy_float_to_s64(gint64 *destination, guint dchannels, 785 gfloat *source, guint schannels, 786 guint count); 787 void ags_audio_buffer_util_copy_float_to_float(gfloat *destination, guint dchannels, 788 gfloat *source, guint schannels, 789 guint count); 790 void ags_audio_buffer_util_copy_float_to_double(gdouble *destination, guint dchannels, 791 gfloat *source, guint schannels, 792 guint count); 793 794 /* copy double */ 795 void ags_audio_buffer_util_copy_double_to_s8(gint8 *destination, guint dchannels, 796 gdouble *source, guint schannels, 797 guint count); 798 void ags_audio_buffer_util_copy_double_to_s16(gint16 *destination, guint dchannels, 799 gdouble *source, guint schannels, 800 guint count); 801 void ags_audio_buffer_util_copy_double_to_s24(gint32 *destination, guint dchannels, 802 gdouble *source, guint schannels, 803 guint count); 804 void ags_audio_buffer_util_copy_double_to_s32(gint32 *destination, guint dchannels, 805 gdouble *source, guint schannels, 806 guint count); 807 void ags_audio_buffer_util_copy_double_to_s64(gint64 *destination, guint dchannels, 808 gdouble *source, guint schannels, 809 guint count); 810 void ags_audio_buffer_util_copy_double_to_float(gfloat *destination, guint dchannels, 811 gdouble *source, guint schannels, 812 guint count); 813 void ags_audio_buffer_util_copy_double_to_double(gdouble *destination, guint dchannels, 814 gdouble *source, guint schannels, 815 guint count); 816 817 #ifdef __APPLE__ 818 /* Float32 */ 819 void ags_audio_buffer_util_copy_s8_to_float32(Float32 *destination, guint dchannels, 820 gint8 *source, guint schannels, 821 guint count); 822 823 void ags_audio_buffer_util_copy_s16_to_float32(Float32 *destination, guint dchannels, 824 gint16 *source, guint schannels, 825 guint count); 826 827 void ags_audio_buffer_util_copy_s24_to_float32(Float32 *destination, guint dchannels, 828 gint32 *source, guint schannels, 829 guint count); 830 831 void ags_audio_buffer_util_copy_s32_to_float32(Float32 *destination, guint dchannels, 832 gint32 *source, guint schannels, 833 guint count); 834 835 void ags_audio_buffer_util_copy_s64_to_float32(Float32 *destination, guint dchannels, 836 gint64 *source, guint schannels, 837 guint count); 838 839 void ags_audio_buffer_util_copy_float_to_float32(Float32 *destination, guint dchannels, 840 float *source, guint schannels, 841 guint count); 842 843 void ags_audio_buffer_util_copy_double_to_float32(Float32 *destination, guint dchannels, 844 gdouble *source, guint schannels, 845 guint count); 846 847 void ags_audio_buffer_util_copy_float32_to_float32(Float32 *destination, guint dchannels, 848 Float32 *source, guint schannels, 849 guint count); 850 851 void ags_audio_buffer_util_copy_float32_to_s8(gint8 *destination, guint dchannels, 852 Float32 *source, guint schannels, 853 guint count); 854 void ags_audio_buffer_util_copy_float32_to_s16(gint16 *destination, guint dchannels, 855 Float32 *source, guint schannels, 856 guint count); 857 void ags_audio_buffer_util_copy_float32_to_s24(gint32 *destination, guint dchannels, 858 Float32 *source, guint schannels, 859 guint count); 860 void ags_audio_buffer_util_copy_float32_to_s32(gint32 *destination, guint dchannels, 861 Float32 *source, guint schannels, 862 guint count); 863 void ags_audio_buffer_util_copy_float32_to_s64(gint64 *destination, guint dchannels, 864 Float32 *source, guint schannels, 865 guint count); 866 void ags_audio_buffer_util_copy_float32_to_float(gfloat *destination, guint dchannels, 867 Float32 *source, guint schannels, 868 guint count); 869 void ags_audio_buffer_util_copy_float32_to_double(gdouble *destination, guint dchannels, 870 Float32 *source, guint schannels, 871 guint count); 872 #endif 873 874 /* AgsComplex */ 875 void ags_audio_buffer_util_copy_s8_to_complex(AgsComplex *destination, guint dchannels, 876 gint8 *source, guint schannels, 877 guint count); 878 879 void ags_audio_buffer_util_copy_s16_to_complex(AgsComplex *destination, guint dchannels, 880 gint16 *source, guint schannels, 881 guint count); 882 883 void ags_audio_buffer_util_copy_s24_to_complex(AgsComplex *destination, guint dchannels, 884 gint32 *source, guint schannels, 885 guint count); 886 887 void ags_audio_buffer_util_copy_s32_to_complex(AgsComplex *destination, guint dchannels, 888 gint32 *source, guint schannels, 889 guint count); 890 891 void ags_audio_buffer_util_copy_s64_to_complex(AgsComplex *destination, guint dchannels, 892 gint64 *source, guint schannels, 893 guint count); 894 895 void ags_audio_buffer_util_copy_float_to_complex(AgsComplex *destination, guint dchannels, 896 gfloat *source, guint schannels, 897 guint count); 898 899 void ags_audio_buffer_util_copy_double_to_complex(AgsComplex *destination, guint dchannels, 900 gdouble *source, guint schannels, 901 guint count); 902 903 #ifdef __APPLE__ 904 void ags_audio_buffer_util_copy_float32_to_complex(AgsComplex *destination, guint dchannels, 905 Float32 *source, guint schannels, 906 guint count); 907 #endif 908 909 void ags_audio_buffer_util_copy_complex_to_complex(AgsComplex *destination, guint dchannels, 910 AgsComplex *source, guint schannels, 911 guint count); 912 913 void ags_audio_buffer_util_copy_complex_to_s8(gint8 *destination, guint dchannels, 914 AgsComplex *source, guint schannels, 915 guint count); 916 void ags_audio_buffer_util_copy_complex_to_s16(gint16 *destination, guint dchannels, 917 AgsComplex *source, guint schannels, 918 guint count); 919 void ags_audio_buffer_util_copy_complex_to_s24(gint32 *destination, guint dchannels, 920 AgsComplex *source, guint schannels, 921 guint count); 922 void ags_audio_buffer_util_copy_complex_to_s32(gint32 *destination, guint dchannels, 923 AgsComplex *source, guint schannels, 924 guint count); 925 void ags_audio_buffer_util_copy_complex_to_s64(gint64 *destination, guint dchannels, 926 AgsComplex *source, guint schannels, 927 guint count); 928 void ags_audio_buffer_util_copy_complex_to_float(gfloat *destination, guint dchannels, 929 AgsComplex *source, guint schannels, 930 guint count); 931 void ags_audio_buffer_util_copy_complex_to_double(gdouble *destination, guint dchannels, 932 AgsComplex *source, guint schannels, 933 guint count); 934 #ifdef __APPLE__ 935 void ags_audio_buffer_util_copy_complex_to_float32(Float32 *destination, guint dchannels, 936 AgsComplex *source, guint schannels, 937 guint count); 938 #endif 939 940 /* copy */ 941 void ags_audio_buffer_util_copy_buffer_to_buffer(void *destination, guint dchannels, guint doffset, 942 void *source, guint schannels, guint soffset, 943 guint count, guint mode); 944 945 G_END_DECLS 946 947 #endif /*__AGS_AUDIO_BUFFER_UTIL_H__*/ 948