some DAC related regression fixes
[picodrive.git] / Pico / sound / mix.c
index 8e4a631..c344fba 100644 (file)
@@ -1,3 +1,6 @@
+// some code for sample mixing
+// (c) Copyright 2006-2007, Grazvydas "notaz" Ignotas
+
 #define MAXOUT         (+32767)
 #define MINOUT         (-32768)
 
@@ -8,22 +11,6 @@
 }
 
 
-
-
-void memcpy32(int *dest, int *src, int count)
-{
-       while (count--)
-               *dest++ = *src++;
-}
-
-
-void memset32(int *dest, int c, int count)
-{
-       while (count--)
-               *dest++ = c;
-}
-
-
 void mix_32_to_16l_stereo(short *dest, int *src, int count)
 {
        int l, r;
@@ -55,3 +42,33 @@ void mix_32_to_16_mono(short *dest, int *src, int count)
 }
 
 
+void mix_16h_to_32(int *dest_buf, short *mp3_buf, int count)
+{
+       while (count--)
+       {
+               *dest_buf++ += *mp3_buf++ >> 1;
+       }
+}
+
+void mix_16h_to_32_s1(int *dest_buf, short *mp3_buf, int count)
+{
+       count >>= 1;
+       while (count--)
+       {
+               *dest_buf++ += *mp3_buf++ >> 1;
+               *dest_buf++ += *mp3_buf++ >> 1;
+               mp3_buf += 1*2;
+       }
+}
+
+void mix_16h_to_32_s2(int *dest_buf, short *mp3_buf, int count)
+{
+       count >>= 1;
+       while (count--)
+       {
+               *dest_buf++ += *mp3_buf++ >> 1;
+               *dest_buf++ += *mp3_buf++ >> 1;
+               mp3_buf += 3*2;
+       }
+}
+