move blit to core, allow filtering while blitting
[pcsx_rearmed.git] / plugins / dfsound / spu.c
index 69d6217..45a7886 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "externals.h"
 #include "registers.h"
-#include "dsoundoss.h"
+#include "out.h"
 
 #ifdef ENABLE_NLS
 #include <libintl.h>
@@ -243,7 +243,7 @@ INLINE void InterpolateDown(int ch)
 // helpers for gauss interpolation
 
 #define gval0 (((short*)(&s_chan[ch].SB[29]))[gpos])
-#define gval(x) (((short*)(&s_chan[ch].SB[29]))[(gpos+x)&3])
+#define gval(x) ((int)((short*)(&s_chan[ch].SB[29]))[(gpos+x)&3])
 
 #include "gauss_i.h"
 
@@ -386,7 +386,7 @@ INLINE int iGetInterpolationVal(int ch, int spos)
      int vl, vr;int gpos;
      vl = (spos >> 6) & ~3;
      gpos = s_chan[ch].SB[28];
-     vr=(gauss[vl]*gval0)&~2047;
+     vr=(gauss[vl]*(int)gval0)&~2047;
      vr+=(gauss[vl+1]*gval(1))&~2047;
      vr+=(gauss[vl+2]*gval(2))&~2047;
      vr+=(gauss[vl+3]*gval(3))&~2047;
@@ -697,7 +697,7 @@ static int do_samples(int forced_updates)
    // until enuff free place is available/a new channel gets
    // started
 
-   if(!forced_updates && SoundGetBytesBuffered())      // still enuff data in sound buffer?
+   if(!forced_updates && out_current->busy())          // still enuff data in sound buffer?
     {
      return 0;
     }
@@ -872,7 +872,7 @@ static int do_samples(int forced_updates)
   // wanna have around 1/60 sec (16.666 ms) updates
   if (iCycle++ > 16/FRAG_MSECS)
    {
-    SoundFeedStreamData((unsigned char *)pSpuBuffer,
+    out_current->feed(pSpuBuffer,
                         ((unsigned char *)pS) - ((unsigned char *)pSpuBuffer));
     pS = (short *)pSpuBuffer;
     iCycle = 0;
@@ -1056,7 +1056,7 @@ long CALLBACK SPUclose(void)
 
  bSPUIsOpen = 0;                                       // no more open
 
RemoveSound();                                        // no more sound handling
out_current->finish();                                // no more sound handling
 
  return 0;
 }