]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_main.h
XPM support for X11; WM_CLASS and WM_COMMAND are now set too
[xonotic/darkplaces.git] / snd_main.h
index 47b622d089213eabc63aba784d260dda7f80d18b..5efc871977c20bc18213ad888a14013db6d66741 100644 (file)
@@ -71,10 +71,13 @@ struct sfx_s
                                                                                // freed at level change by S_ServerSounds.
 
        unsigned int            flags;                  // cf SFXFLAG_* defines
-       int                                     loopstart;              // in sample frames. -1 if not looped
+       unsigned int            loopstart;              // in sample frames. equals total_length if not looped
        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
@@ -86,9 +89,7 @@ typedef struct channel_s
        int                             master_vol;             // 0-255 master volume
        sfx_t                   *sfx;                   // sfx number
        unsigned int    flags;                  // cf CHANNELFLAG_* defines
-       unsigned int    end;                    // end time in global paintsamples
-       unsigned int    lastptime;              // last time this channel was painted
-       unsigned int    pos;                    // sample position in sfx
+       int                             pos;                    // sample position in sfx, negative values delay the start of the sound playback
        int                             entnum;                 // to allow overriding a specific sound
        int                             entchannel;
        vec3_t                  origin;                 // origin of sound effect
@@ -98,9 +99,9 @@ typedef struct channel_s
 
 // Sound fetching functions
 // "start" is both an input and output parameter: it returns the actual start time of the sound buffer
-typedef const snd_buffer_t* (*snd_fetcher_getsb_t) (channel_t* ch, unsigned int *start, unsigned int nbsampleframes);
-typedef void (*snd_fetcher_endsb_t) (channel_t* ch);
-typedef void (*snd_fetcher_free_t) (sfx_t* sfx);
+typedef const snd_buffer_t* (*snd_fetcher_getsb_t) (void *sfxfetcher, void **chfetcherpointer, unsigned int *start, unsigned int nbsampleframes);
+typedef void (*snd_fetcher_endsb_t) (void *chfetcherdata);
+typedef void (*snd_fetcher_free_t) (void *sfxfetcherdata);
 typedef const snd_format_t* (*snd_fetcher_getfmt_t) (sfx_t* sfx);
 struct snd_fetcher_s
 {
@@ -113,8 +114,8 @@ struct snd_fetcher_s
 // 0 to NUM_AMBIENTS - 1 = water, etc
 // NUM_AMBIENTS to NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS - 1 = normal entity sounds
 // NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS to total_channels = static sounds
-#define        MAX_DYNAMIC_CHANNELS    128
-#define        MAX_CHANNELS                    516
+#define        MAX_DYNAMIC_CHANNELS    512
+#define        MAX_CHANNELS                    1028
 
 extern unsigned int total_channels;
 extern channel_t channels[MAX_CHANNELS];
@@ -126,6 +127,11 @@ extern cvar_t _snd_mixahead;
 extern cvar_t snd_swapstereo;
 extern cvar_t snd_streaming;
 
+#define SND_CHANNELLAYOUT_AUTO         0
+#define SND_CHANNELLAYOUT_STANDARD     1
+#define SND_CHANNELLAYOUT_ALSA         2
+extern cvar_t snd_channellayout;
+
 extern int snd_blocked;                // counter. When > 0, we stop submitting sound to the audio device
 
 extern mempool_t *snd_mempool;