diff options
-rw-r--r-- | src/pcm_byteswap.c | 18 |
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; } |