Add audio_utils.h header in PortaudioBackend for de/interleaving audio data
authorTim Mayberry <mojofunk@gmail.com>
Mon, 31 Aug 2015 10:28:07 +0000 (20:28 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Wed, 2 Sep 2015 02:07:59 +0000 (12:07 +1000)
libs/backends/portaudio/audio_utils.h [new file with mode: 0644]

diff --git a/libs/backends/portaudio/audio_utils.h b/libs/backends/portaudio/audio_utils.h
new file mode 100644 (file)
index 0000000..5e7d0a1
--- /dev/null
@@ -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