aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcm/PcmChannels.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-02 09:15:54 +0100
committerMax Kellermann <max@duempel.org>2013-12-02 11:21:32 +0100
commit2b44a2c9bd8f9a171a2e998feb14f3c5a1c29381 (patch)
tree3e57bc4eafd8d8c377971201049fc5cafde1905b /src/pcm/PcmChannels.cxx
parentaf3b454805b49301b14f2f55f7a99020527bd63a (diff)
downloadmpd-2b44a2c9bd8f9a171a2e998feb14f3c5a1c29381.tar.gz
mpd-2b44a2c9bd8f9a171a2e998feb14f3c5a1c29381.tar.xz
mpd-2b44a2c9bd8f9a171a2e998feb14f3c5a1c29381.zip
pcm/PcmChannels: use struct ConstBuffer
Diffstat (limited to 'src/pcm/PcmChannels.cxx')
-rw-r--r--src/pcm/PcmChannels.cxx105
1 files changed, 46 insertions, 59 deletions
diff --git a/src/pcm/PcmChannels.cxx b/src/pcm/PcmChannels.cxx
index eb69985c1..74f9416f9 100644
--- a/src/pcm/PcmChannels.cxx
+++ b/src/pcm/PcmChannels.cxx
@@ -20,7 +20,7 @@
#include "config.h"
#include "PcmChannels.hxx"
#include "PcmBuffer.hxx"
-#include "PcmUtils.hxx"
+#include "util/ConstBuffer.hxx"
#include <assert.h>
@@ -73,31 +73,28 @@ pcm_convert_channels_16_n_to_2(int16_t *gcc_restrict dest,
}
}
-const int16_t *
+ConstBuffer<int16_t>
pcm_convert_channels_16(PcmBuffer &buffer,
unsigned dest_channels,
- unsigned src_channels, const int16_t *src,
- size_t src_size, size_t *dest_size_r)
+ unsigned src_channels,
+ ConstBuffer<int16_t> src)
{
- assert(src_size % (sizeof(*src) * src_channels) == 0);
+ assert(src.size % src_channels == 0);
- size_t dest_size = src_size / src_channels * dest_channels;
- *dest_size_r = dest_size;
-
- int16_t *dest = (int16_t *)buffer.Get(dest_size);
- const int16_t *src_end = pcm_end_pointer(src, src_size);
+ const size_t dest_size = src.size / src_channels * dest_channels;
+ int16_t *dest = buffer.GetT<int16_t>(dest_size);
if (src_channels == 1 && dest_channels == 2)
- MonoToStereo(dest, src, src_end);
+ MonoToStereo(dest, src.begin(), src.end());
else if (src_channels == 2 && dest_channels == 1)
- pcm_convert_channels_16_2_to_1(dest, src, src_end);
+ pcm_convert_channels_16_2_to_1(dest, src.begin(), src.end());
else if (dest_channels == 2)
- pcm_convert_channels_16_n_to_2(dest, src_channels, src,
- src_end);
+ pcm_convert_channels_16_n_to_2(dest, src_channels,
+ src.begin(), src.end());
else
return nullptr;
- return dest;
+ return { dest, dest_size };
}
static void
@@ -136,32 +133,28 @@ pcm_convert_channels_24_n_to_2(int32_t *gcc_restrict dest,
}
}
-const int32_t *
+ConstBuffer<int32_t>
pcm_convert_channels_24(PcmBuffer &buffer,
unsigned dest_channels,
- unsigned src_channels, const int32_t *src,
- size_t src_size, size_t *dest_size_r)
+ unsigned src_channels,
+ ConstBuffer<int32_t> src)
{
- assert(src_size % (sizeof(*src) * src_channels) == 0);
-
- size_t dest_size = src_size / src_channels * dest_channels;
- *dest_size_r = dest_size;
+ assert(src.size % src_channels == 0);
- int32_t *dest = (int32_t *)buffer.Get(dest_size);
- const int32_t *src_end = (const int32_t *)
- pcm_end_pointer(src, src_size);
+ size_t dest_size = src.size / src_channels * dest_channels;
+ int32_t *dest = buffer.GetT<int32_t>(dest_size);
if (src_channels == 1 && dest_channels == 2)
- MonoToStereo(dest, src, src_end);
+ MonoToStereo(dest, src.begin(), src.end());
else if (src_channels == 2 && dest_channels == 1)
- pcm_convert_channels_24_2_to_1(dest, src, src_end);
+ pcm_convert_channels_24_2_to_1(dest, src.begin(), src.end());
else if (dest_channels == 2)
- pcm_convert_channels_24_n_to_2(dest, src_channels, src,
- src_end);
+ pcm_convert_channels_24_n_to_2(dest, src_channels,
+ src.begin(), src.end());
else
return nullptr;
- return dest;
+ return { dest, dest_size };
}
static void
@@ -199,32 +192,28 @@ pcm_convert_channels_32_n_to_2(int32_t *dest,
}
}
-const int32_t *
+ConstBuffer<int32_t>
pcm_convert_channels_32(PcmBuffer &buffer,
unsigned dest_channels,
- unsigned src_channels, const int32_t *src,
- size_t src_size, size_t *dest_size_r)
+ unsigned src_channels,
+ ConstBuffer<int32_t> src)
{
- assert(src_size % (sizeof(*src) * src_channels) == 0);
+ assert(src.size % src_channels == 0);
- size_t dest_size = src_size / src_channels * dest_channels;
- *dest_size_r = dest_size;
-
- int32_t *dest = (int32_t *)buffer.Get(dest_size);
- const int32_t *src_end = (const int32_t *)
- pcm_end_pointer(src, src_size);
+ size_t dest_size = src.size / src_channels * dest_channels;
+ int32_t *dest = buffer.GetT<int32_t>(dest_size);
if (src_channels == 1 && dest_channels == 2)
- MonoToStereo(dest, src, src_end);
+ MonoToStereo(dest, src.begin(), src.end());
else if (src_channels == 2 && dest_channels == 1)
- pcm_convert_channels_32_2_to_1(dest, src, src_end);
+ pcm_convert_channels_32_2_to_1(dest, src.begin(), src.end());
else if (dest_channels == 2)
- pcm_convert_channels_32_n_to_2(dest, src_channels, src,
- src_end);
+ pcm_convert_channels_32_n_to_2(dest, src_channels,
+ src.begin(), src.end());
else
return nullptr;
- return dest;
+ return { dest, dest_size };
}
static void
@@ -262,29 +251,27 @@ pcm_convert_channels_float_n_to_2(float *dest,
}
}
-const float *
+ConstBuffer<float>
pcm_convert_channels_float(PcmBuffer &buffer,
unsigned dest_channels,
- unsigned src_channels, const float *src,
- size_t src_size, size_t *dest_size_r)
+ unsigned src_channels,
+ ConstBuffer<float> src)
{
- assert(src_size % (sizeof(*src) * src_channels) == 0);
-
- size_t dest_size = src_size / src_channels * dest_channels;
- *dest_size_r = dest_size;
+ assert(src.size % src_channels == 0);
- float *dest = (float *)buffer.Get(dest_size);
- const float *src_end = (const float *)pcm_end_pointer(src, src_size);
+ size_t dest_size = src.size / src_channels * dest_channels;
+ float *dest = buffer.GetT<float>(dest_size);
if (src_channels == 1 && dest_channels == 2)
- MonoToStereo(dest, src, src_end);
+ MonoToStereo(dest, src.begin(), src.end());
else if (src_channels == 2 && dest_channels == 1)
- pcm_convert_channels_float_2_to_1(dest, src, src_end);
+ pcm_convert_channels_float_2_to_1(dest,
+ src.begin(), src.end());
else if (dest_channels == 2)
- pcm_convert_channels_float_n_to_2(dest, src_channels, src,
- src_end);
+ pcm_convert_channels_float_n_to_2(dest, src_channels,
+ src.begin(), src.end());
else
return nullptr;
- return dest;
+ return { dest, dest_size };
}