diff options
Diffstat (limited to 'src/pcm_dither.c')
-rw-r--r-- | src/pcm_dither.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/pcm_dither.c b/src/pcm_dither.c index c6f10dd30..dfd6d287d 100644 --- a/src/pcm_dither.c +++ b/src/pcm_dither.c @@ -76,3 +76,18 @@ pcm_dither_24_to_16(struct pcm_dither *dither, while (num_samples-- > 0) *dest++ = pcm_dither_sample_24_to_16(*src++, dither); } + +static int16_t +pcm_dither_sample_32_to_16(int32_t sample, struct pcm_dither *dither) +{ + return pcm_dither_sample_24_to_16(sample >> 8, dither); +} + +void +pcm_dither_32_to_16(struct pcm_dither *dither, + int16_t *dest, const int32_t *src, + unsigned num_samples) +{ + while (num_samples-- > 0) + *dest++ = pcm_dither_sample_32_to_16(*src++, dither); +} |