]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_main.h
csqc packet log code (for entityframedatabase 5 only, i.e. DP5 and higher)
[xonotic/darkplaces.git] / snd_main.h
index 3b53b62a90ffe15036c37b3bc93b41746bb3e5db..0eea2fdd1769f90c78a4f1c566fbf1147f5721f2 100644 (file)
@@ -75,6 +75,9 @@ struct sfx_s
        unsigned int            total_length;   // in sample frames
        const snd_fetcher_t     *fetcher;
        void                            *fetcher_data;  // Per-sfx data for the sound fetching functions
+
+       float                           volume_mult;    // for replay gain (multiplier to apply)
+       float                           volume_peak;    // for replay gain (highest peak); if set to 0, ReplayGain isn't supported
 };
 
 // maximum supported speakers constant
@@ -118,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;
@@ -143,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);