diff options
-rw-r--r-- | src/pcm_format.c | 3 | ||||
-rw-r--r-- | src/pcm_utils.h | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/pcm_format.c b/src/pcm_format.c index 148cd70ed..6e1e0906d 100644 --- a/src/pcm_format.c +++ b/src/pcm_format.c @@ -22,6 +22,7 @@ #include "pcm_dither.h" #include "pcm_buffer.h" #include "pcm_pack.h" +#include "pcm_utils.h" static void pcm_convert_8_to_16(int16_t *out, const int8_t *in, @@ -61,7 +62,7 @@ pcm_convert_to_16(struct pcm_buffer *buffer, struct pcm_dither *dither, enum sample_format src_format, const void *src, size_t src_size, size_t *dest_size_r) { - const void *src_end = (const char *)src + src_size; + const void *src_end = pcm_end_pointer(src, src_size); unsigned num_samples; int16_t *dest; int32_t *dest32; diff --git a/src/pcm_utils.h b/src/pcm_utils.h index b6a6f3787..001423b37 100644 --- a/src/pcm_utils.h +++ b/src/pcm_utils.h @@ -25,6 +25,17 @@ #include <stdint.h> /** + * Add a byte count to the specified pointer. This is a utility + * function to convert a source pointer and a byte count to an "end" + * pointer for use in loops. + */ +static inline const void * +pcm_end_pointer(const void *p, size_t size) +{ + return (const char *)p + size; +} + +/** * Check if the value is within the range of the provided bit size, * and caps it if necessary. */ |