]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_main.h
bring back the stupid Matrix4x4_Invert call as it breaks on my gcc in release builds...
[xonotic/darkplaces.git] / snd_main.h
index 5efc871977c20bc18213ad888a14013db6d66741..a56227854fe9f0b72dbd3a97343dece28925c446 100644 (file)
@@ -121,7 +121,8 @@ extern unsigned int total_channels;
 extern channel_t channels[MAX_CHANNELS];
 
 extern snd_ringbuffer_t *snd_renderbuffer;
-extern unsigned int soundtime; // WARNING: sound modules must NOT use it
+extern qboolean snd_threaded; // enables use of snd_usethreadedmixing, provided that no sound hacks are in effect (like timedemo)
+extern qboolean snd_usethreadedmixing; // if true, the main thread does not mix sound, soundtime does not advance, and neither does snd_renderbuffer->endframe, instead the audio thread will call S_MixToBuffer as needed
 
 extern cvar_t _snd_mixahead;
 extern cvar_t snd_swapstereo;
@@ -146,7 +147,7 @@ extern qboolean simsound;
 //         Architecture-independent functions
 // ====================================================================
 
-void S_PaintChannels (snd_ringbuffer_t* rb, unsigned int starttime, unsigned int endtime);
+void S_MixToBuffer(void *stream, unsigned int frames);
 
 qboolean S_LoadSound (sfx_t *sfx, qboolean complain);
 
@@ -184,5 +185,29 @@ qboolean SndSys_LockRenderBuffer (void);
 // Release the exclusive lock on "snd_renderbuffer"
 void SndSys_UnlockRenderBuffer (void);
 
+// exported for capturevideo so ogg can see all channels
+typedef struct portable_samplepair_s
+{
+       int sample[SND_LISTENERS];
+} portable_sampleframe_t;
+// LordHavoc: was 512, expanded to 2048
+#define        PAINTBUFFER_SIZE 2048
+
+typedef struct listener_s
+{
+       int channel_unswapped; // for un-swapping
+       float yawangle;
+       float dotscale;
+       float dotbias;
+       float ambientvolume;
+}
+listener_t;
+typedef struct speakerlayout_s
+{
+       const char *name;
+       unsigned int channels;
+       listener_t listeners[SND_LISTENERS];
+}
+speakerlayout_t;
 
 #endif