aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/pcm_byteswap.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/pcm_byteswap.c b/src/pcm_byteswap.c
index 13ed85bfe..fcd995ba2 100644
--- a/src/pcm_byteswap.c
+++ b/src/pcm_byteswap.c
@@ -31,13 +31,16 @@
const int16_t *pcm_byteswap_16(struct pcm_buffer *buffer,
const int16_t *src, size_t len)
{
- unsigned i;
int16_t *buf = pcm_buffer_get(buffer, len);
assert(buf != NULL);
- for (i = 0; i < len / 2; i++)
- buf[i] = GUINT16_SWAP_LE_BE(src[i]);
+ const int16_t *src_end = src + len / sizeof(*src);
+ int16_t *dest = buf;
+ while (src < src_end) {
+ const int16_t x = *src++;
+ *dest++ = GUINT16_SWAP_LE_BE(x);
+ }
return buf;
}
@@ -45,13 +48,16 @@ const int16_t *pcm_byteswap_16(struct pcm_buffer *buffer,
const int32_t *pcm_byteswap_32(struct pcm_buffer *buffer,
const int32_t *src, size_t len)
{
- unsigned i;
int32_t *buf = pcm_buffer_get(buffer, len);
assert(buf != NULL);
- for (i = 0; i < len / 4; i++)
- buf[i] = GUINT32_SWAP_LE_BE(src[i]);
+ const int32_t *src_end = src + len / sizeof(*src);
+ int32_t *dest = buf;
+ while (src < src_end) {
+ const int32_t x = *src++;
+ *dest++ = GUINT32_SWAP_LE_BE(x);
+ }
return buf;
}