int i;
memset((void *)shm, 0, sizeof(*shm));
- shm->channels = 2;
- shm->samplebits = 16;
- i = COM_CheckParm ("-sndspeed"); // LordHavoc: -sndspeed option
+ shm->format.channels = 2;
+ shm->format.width = 2;
+// COMMANDLINEOPTION: Windows Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
+ i = COM_CheckParm ("-sndspeed");
if (i && i != (com_argc - 1))
- shm->speed = atoi(com_argv[i+1]);
+ shm->format.speed = atoi(com_argv[i+1]);
else
- shm->speed = 44100;
+ shm->format.speed = 44100;
memset (&format, 0, sizeof(format));
format.wFormatTag = WAVE_FORMAT_PCM;
- format.nChannels = shm->channels;
- format.wBitsPerSample = shm->samplebits;
- format.nSamplesPerSec = shm->speed;
+ format.nChannels = shm->format.channels;
+ format.wBitsPerSample = shm->format.width * 8;
+ format.nSamplesPerSec = shm->format.speed;
format.nBlockAlign = format.nChannels * format.wBitsPerSample / 8;
format.cbSize = 0;
format.nAvgBytesPerSec = format.nSamplesPerSec * format.nBlockAlign;
dsbcaps.dwSize = sizeof(dsbcaps);
primary_format_set = false;
+// COMMANDLINEOPTION: Windows DirectSound: -snoforceformat uses the format that DirectSound returns, rather than forcing it
if (!COM_CheckParm ("-snoforceformat"))
{
if (DS_OK == pDS->lpVtbl->CreateSoundBuffer(pDS, &dsbuf, &pDSPBuf, NULL))
}
}
+// COMMANDLINEOPTION: Windows DirectSound: -primarysound locks the sound hardware for exclusive use
if (!primary_format_set || !COM_CheckParm ("-primarysound"))
{
// create the secondary buffer we'll actually work with
return SIS_FAILURE;
}
- shm->channels = format.nChannels;
- shm->samplebits = format.wBitsPerSample;
- shm->speed = format.nSamplesPerSec;
+ shm->format.channels = format.nChannels;
+ shm->format.width = format.wBitsPerSample / 8;
+ shm->format.speed = format.nSamplesPerSec;
if (DS_OK != pDSBuf->lpVtbl->GetCaps (pDSBuf, &dsbcaps))
{
Con_SafePrintf(" %d channel(s)\n"
" %d bits/sample\n"
" %d samples/sec\n",
- shm->channels, shm->samplebits, shm->speed);
+ shm->format.channels, shm->format.width * 8, shm->format.speed);
gSndBufSize = dsbcaps.dwBufferBytes;
pDSBuf->lpVtbl->GetCurrentPosition(pDSBuf, &mmstarttime.u.sample, &dwWrite);
pDSBuf->lpVtbl->Play(pDSBuf, 0, 0, DSBPLAY_LOOPING);
- shm->samples = gSndBufSize/(shm->samplebits/8);
+ shm->samples = gSndBufSize / shm->format.width;
shm->samplepos = 0;
shm->buffer = (unsigned char *) lpData;
- sample16 = (shm->samplebits/8) - 1;
+ sample16 = shm->format.width - 1;
dsound_init = true;
snd_completed = 0;
memset((void *)shm, 0, sizeof(*shm));
- shm->channels = 2;
- shm->samplebits = 16;
+ shm->format.channels = 2;
+ shm->format.width = 2;
+// COMMANDLINEOPTION: Windows Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
i = COM_CheckParm ("-sndspeed"); // LordHavoc: -sndspeed option
if (i && i != (com_argc - 1))
- shm->speed = atoi(com_argv[i+1]);
+ shm->format.speed = atoi(com_argv[i+1]);
else
- shm->speed = 44100;
+ shm->format.speed = 44100;
memset (&format, 0, sizeof(format));
format.wFormatTag = WAVE_FORMAT_PCM;
- format.nChannels = shm->channels;
- format.wBitsPerSample = shm->samplebits;
- format.nSamplesPerSec = shm->speed;
+ format.nChannels = shm->format.channels;
+ format.wBitsPerSample = shm->format.width * 8;
+ format.nSamplesPerSec = shm->format.speed;
format.nBlockAlign = format.nChannels
*format.wBitsPerSample / 8;
format.cbSize = 0;
}
}
- shm->samples = gSndBufSize/(shm->samplebits/8);
+ shm->samples = gSndBufSize / shm->format.width;
shm->samplepos = 0;
shm->buffer = (unsigned char *) lpData;
- sample16 = (shm->samplebits/8) - 1;
+ sample16 = shm->format.width - 1;
wav_init = true;
{
sndinitstat stat;
+// COMMANDLINEOPTION: Windows Sound: -wavonly uses wave sound instead of DirectSound
if (COM_CheckParm ("-wavonly"))
wavonly = true;
{
if (snd_firsttime || snd_isdirect)
{
- stat = SNDDMA_InitDirect ();;
+ stat = SNDDMA_InitDirect ();
if (stat == SIS_SUCCESS)
{