aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcm_dither.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcm_dither.c')
-rw-r--r--src/pcm_dither.c15
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);
+}