summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-31 20:28:07 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:59 +1000
commita6fb71022ff039fb7d133e8bb970c36df0799fd1 (patch)
tree8157718d4fec497dc412525c02d37ade261102eb /libs
parent23a490c906974b0fc7ba46c58e533d2733c3a5d4 (diff)
Add audio_utils.h header in PortaudioBackend for de/interleaving audio data
Diffstat (limited to 'libs')
-rw-r--r--libs/backends/portaudio/audio_utils.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/libs/backends/portaudio/audio_utils.h b/libs/backends/portaudio/audio_utils.h
new file mode 100644
index 0000000000..5e7d0a1a2a
--- /dev/null
+++ b/libs/backends/portaudio/audio_utils.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 Tim Mayberry <mojofunk@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef AUDIO_UTILS_H
+#define AUDIO_UTILS_H
+
+#include <stdint.h>
+
+inline
+void
+deinterleave_audio_data(const float* interleaved_input,
+ float* output,
+ uint32_t frame_count,
+ uint32_t channel,
+ uint32_t channel_count)
+{
+ const float* ptr = interleaved_input + channel;
+ while (frame_count-- > 0) {
+ *output++ = *ptr;
+ ptr += channel_count;
+ }
+}
+
+inline
+void
+interleave_audio_data(float* input,
+ float* interleaved_output,
+ uint32_t frame_count,
+ uint32_t channel,
+ uint32_t channel_count)
+{
+ float* ptr = interleaved_output + channel;
+ while (frame_count-- > 0) {
+ *ptr = *input++;
+ ptr += channel_count;
+ }
+}
+
+#endif // AUDIO_UTILS_H