void S_Startup (void)
{
- qboolean fixed_speed, fixed_width, fixed_channels;
snd_format_t chosen_fmt;
static snd_format_t prev_render_format = {0, 0, 0};
char* env;
if (!snd_initialized.integer)
return;
- fixed_speed = false;
- fixed_width = false;
- fixed_channels = false;
-
// Get the starting sound format from the cvars
chosen_fmt.speed = snd_speed.integer;
chosen_fmt.width = snd_width.integer;
#if _MSC_VER >= 1400
free(env);
#endif
- fixed_channels = true;
}
#if _MSC_VER >= 1400
_dupenv_s(&env, &envlen, "QUAKE_SOUND_SPEED");
#if _MSC_VER >= 1400
free(env);
#endif
- fixed_speed = true;
}
#if _MSC_VER >= 1400
_dupenv_s(&env, &envlen, "QUAKE_SOUND_SAMPLEBITS");
#if _MSC_VER >= 1400
free(env);
#endif
- fixed_width = true;
}
// Parse the command line to see if the player wants a particular sound format
if (COM_CheckParm ("-sndquad") != 0)
{
chosen_fmt.channels = 4;
- fixed_channels = true;
}
// COMMANDLINEOPTION: Sound: -sndstereo sets sound output to stereo
else if (COM_CheckParm ("-sndstereo") != 0)
{
chosen_fmt.channels = 2;
- fixed_channels = true;
}
// COMMANDLINEOPTION: Sound: -sndmono sets sound output to mono
else if (COM_CheckParm ("-sndmono") != 0)
{
chosen_fmt.channels = 1;
- fixed_channels = true;
}
// COMMANDLINEOPTION: Sound: -sndspeed <hz> chooses sound output rate (supported values are 48000, 44100, 32000, 24000, 22050, 16000, 11025 (quake), 8000)
i = COM_CheckParm ("-sndspeed");
if (0 < i && i < com_argc - 1)
{
chosen_fmt.speed = atoi (com_argv[i + 1]);
- fixed_speed = true;
}
// COMMANDLINEOPTION: Sound: -sndbits <bits> chooses 8 bit or 16 bit or 32bit float sound output
i = COM_CheckParm ("-sndbits");
if (0 < i && i < com_argc - 1)
{
chosen_fmt.width = atoi (com_argv[i + 1]) / 8;
- fixed_width = true;
}
#if 0
// You can't change sound speed after start time (not yet supported)
if (prev_render_format.speed != 0)
{
- fixed_speed = true;
if (chosen_fmt.speed != prev_render_format.speed)
{
Con_Printf("S_Startup: sound speed has changed! This is NOT supported yet. Falling back to previous speed (%u Hz)\n",
if (chosen_fmt.speed < SND_MIN_SPEED)
{
chosen_fmt.speed = SND_MIN_SPEED;
- fixed_speed = false;
}
else if (chosen_fmt.speed > SND_MAX_SPEED)
{
chosen_fmt.speed = SND_MAX_SPEED;
- fixed_speed = false;
}
if (chosen_fmt.width < SND_MIN_WIDTH)
{
chosen_fmt.width = SND_MIN_WIDTH;
- fixed_width = false;
}
else if (chosen_fmt.width == 3)
{
chosen_fmt.width = 4;
- fixed_width = false;
}
else if (chosen_fmt.width > SND_MAX_WIDTH)
{
chosen_fmt.width = SND_MAX_WIDTH;
- fixed_width = false;
}
if (chosen_fmt.channels < SND_MIN_CHANNELS)
{
chosen_fmt.channels = SND_MIN_CHANNELS;
- fixed_channels = false;
}
else if (chosen_fmt.channels > SND_MAX_CHANNELS)
{
chosen_fmt.channels = SND_MAX_CHANNELS;
- fixed_channels = false;
}
// create the sound buffer used for sumitting the samples to the plaform-dependent module
if (COM_CheckParm("-nosound"))
{
// dummy out Play and Play2 because mods stuffcmd that
- Cmd_AddCommand(&cmd_client, "play", Host_NoOperation_f, "does nothing because -nosound was specified");
- Cmd_AddCommand(&cmd_client, "play2", Host_NoOperation_f, "does nothing because -nosound was specified");
+ Cmd_AddCommand(CMD_CLIENT, "play", Host_NoOperation_f, "does nothing because -nosound was specified");
+ Cmd_AddCommand(CMD_CLIENT, "play2", Host_NoOperation_f, "does nothing because -nosound was specified");
return;
}
if (COM_CheckParm("-simsound"))
simsound = true;
- Cmd_AddCommand(&cmd_client, "play", S_Play_f, "play a sound at your current location (not heard by anyone else)");
- Cmd_AddCommand(&cmd_client, "play2", S_Play2_f, "play a sound globally throughout the level (not heard by anyone else)");
- Cmd_AddCommand(&cmd_client, "playvol", S_PlayVol_f, "play a sound at the specified volume level at your current location (not heard by anyone else)");
- Cmd_AddCommand(&cmd_client, "stopsound", S_StopAllSounds_f, "silence");
- Cmd_AddCommand(&cmd_client, "soundlist", S_SoundList_f, "list loaded sounds");
- Cmd_AddCommand(&cmd_client, "soundinfo", S_SoundInfo_f, "print sound system information (such as channels and speed)");
- Cmd_AddCommand(&cmd_client, "snd_restart", S_Restart_f, "restart sound system");
- Cmd_AddCommand(&cmd_client, "snd_unloadallsounds", S_UnloadAllSounds_f, "unload all sound files");
+ Cmd_AddCommand(CMD_CLIENT, "play", S_Play_f, "play a sound at your current location (not heard by anyone else)");
+ Cmd_AddCommand(CMD_CLIENT, "play2", S_Play2_f, "play a sound globally throughout the level (not heard by anyone else)");
+ Cmd_AddCommand(CMD_CLIENT, "playvol", S_PlayVol_f, "play a sound at the specified volume level at your current location (not heard by anyone else)");
+ Cmd_AddCommand(CMD_CLIENT, "stopsound", S_StopAllSounds_f, "silence");
+ Cmd_AddCommand(CMD_CLIENT, "soundlist", S_SoundList_f, "list loaded sounds");
+ Cmd_AddCommand(CMD_CLIENT, "soundinfo", S_SoundInfo_f, "print sound system information (such as channels and speed)");
+ Cmd_AddCommand(CMD_CLIENT, "snd_restart", S_Restart_f, "restart sound system");
+ Cmd_AddCommand(CMD_CLIENT, "snd_unloadallsounds", S_UnloadAllSounds_f, "unload all sound files");
Cvar_RegisterVariable(&nosound);
Cvar_RegisterVariable(&snd_precache);