X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=snd_main.h;h=5efc871977c20bc18213ad888a14013db6d66741;hb=f8d329b208664afa5655c02ad83d46fda41fd7e2;hp=47b622d089213eabc63aba784d260dda7f80d18b;hpb=da29a8beeb35293e2fd38b51883c91b5cf4cf4ad;p=xonotic%2Fdarkplaces.git diff --git a/snd_main.h b/snd_main.h index 47b622d0..5efc8719 100644 --- a/snd_main.h +++ b/snd_main.h @@ -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;