spu: rework synchronization
[pcsx_rearmed.git] / plugins / dfsound / externals.h
index 2f3028e..9096399 100644 (file)
 // num of channels\r
 #define MAXCHAN     24\r
 \r
-// ~ FRAG_MSECS ms of data\r
 // note: must be even due to the way reverb works now\r
-#define FRAG_MSECS 2\r
-#define NSSIZE ((44100 * FRAG_MSECS / 1000 + 1) & ~1)\r
+#define NSSIZE ((44100 / 50 + 16) & ~1)\r
 \r
 ///////////////////////////////////////////////////////////\r
 // struct defines\r
@@ -90,6 +88,7 @@ typedef struct
  int               iSBPos;                             // mixing stuff\r
  int               spos;\r
  int               sinc;\r
+ int               sinc_inv;\r
 \r
  unsigned char *   pCurr;                              // current pos in sound mem\r
  unsigned char *   pLoop;                              // loop ptr in sound mem\r
@@ -191,7 +190,6 @@ extern int        iUseReverb;
 extern int        iUseInterpolation;\r
 // MISC\r
 \r
-extern int had_dma;\r
 extern int decode_pos;\r
 \r
 extern SPUCHAN s_chan[];\r
@@ -209,11 +207,21 @@ extern unsigned int dwChannelDead;
 \r
 extern int      SSumR[];\r
 extern int      SSumL[];\r
-extern int      iCycle;\r
 extern short *  pS;\r
 \r
 extern void (CALLBACK *cddavCallback)(unsigned short,unsigned short);\r
 \r
+extern unsigned int cycles_played;\r
+\r
+void do_samples(unsigned int cycles_to);\r
+void schedule_next_irq(void);\r
+\r
+#define do_samples_if_needed(c) \\r
+ do { \\r
+  if ((int)((c) - cycles_played) >= 16 * 768) \\r
+   do_samples(c); \\r
+ } while (0)\r
+\r
 #endif\r
 \r
 ///////////////////////////////////////////////////////////\r