Recently Written · git

sad

sad (2f30.org simple audio daemon) with a Cygwin/OSS port on branch cygwin

git clone https://github.com/equwal/sad

Log | Files | Refs


commit 205121fb07ff15343b15b6ebeffb250a8d64f5ee
sin <sin@2f30.org>
2015-01-02 15:10:41 +0000

Add short to float conversions and vice-versa

 pcm.c | 18 ++++++++++++++++++
 sad.h |  2 ++
 2 files changed, 20 insertions(+)
diff --git a/pcm.c b/pcm.c
index d9ef2db..95d68c6 100644
--- a/pcm.c
+++ b/pcm.c
@@ -24,3 +24,21 @@ s16stereotomono(short *in, short *out, size_t nsamples)
 	for (i = 0; i < nsamples; i++)
 		out[i] = in[i * 2] / 2 + in[i * 2 + 1] / 2;
 }
+
+void
+s16tofloat(short *in, float *out, size_t nsamples)
+{
+	size_t i;
+
+	for (i = 0; i < nsamples; i++)
+		out[i] = in[i] / 32768.f;
+}
+
+void
+floattos16(float *in, short *out, size_t nsamples)
+{
+	size_t i;
+
+	for (i = 0; i < nsamples; i++)
+		out[i] = in[i] * 32768.f;
+}
diff --git a/sad.h b/sad.h
index bab6fbc..2631299 100644
--- a/sad.h
+++ b/sad.h
@@ -151,3 +151,5 @@ void removesubscriber(int);
 /* pcm.c */
 void s16monotostereo(short *, short *, size_t);
 void s16stereotomono(short *, short *, size_t);
+void s16tofloat(short *, float *, size_t);
+void floattos16(float *, short *, size_t);