This commit is contained in:
Glenn Maynard
2004-03-05 02:41:43 +00:00
parent b87d2477c5
commit be5ad80f08
+12 -18
View File
@@ -191,7 +191,8 @@ DSoundBuf::DSoundBuf(DSound &ds, DSoundBuf::hw hardware,
#ifndef _XBOX
format.dwReserved = 0;
#else
DSMIXBINVOLUMEPAIR dsmbvp[8] = {
DSMIXBINVOLUMEPAIR dsmbvp[8] =
{
{ DSMIXBIN_FRONT_LEFT, DSBVOLUME_MAX}, // left channel
{ DSMIXBIN_FRONT_RIGHT, DSBVOLUME_MAX}, // right channel
{ DSMIXBIN_FRONT_CENTER, DSBVOLUME_MAX}, // left channel
@@ -199,8 +200,8 @@ DSoundBuf::DSoundBuf(DSound &ds, DSoundBuf::hw hardware,
{ DSMIXBIN_BACK_LEFT, DSBVOLUME_MAX}, // left channel
{ DSMIXBIN_BACK_RIGHT, DSBVOLUME_MAX}, // right channel
{ DSMIXBIN_LOW_FREQUENCY, DSBVOLUME_MAX}, // left channel
{DSMIXBIN_LOW_FREQUENCY, DSBVOLUME_MAX}}; // right channel
{ DSMIXBIN_LOW_FREQUENCY, DSBVOLUME_MAX} // right channel
};
DSMIXBINS dsmb;
dsmb.dwMixBinCount = 8;
dsmb.lpMixBinVolumePairs = dsmbvp;
@@ -210,15 +211,6 @@ DSoundBuf::DSoundBuf(DSound &ds, DSoundBuf::hw hardware,
format.lpwfxFormat = &waveformat;
/* Query IID_IDirectSoundBuffer instead of IID_IDirectSoundBuffer8. -Chris */
// IDirectSoundBuffer *sndbuf_buf;
// HRESULT hr = ds.GetDS()->CreateSoundBuffer(&format, &sndbuf_buf, NULL);
// if (FAILED(hr))
// RageException::ThrowNonfatal(hr_ssprintf(hr, "CreateSoundBuffer failed"));
//
// sndbuf_buf->QueryInterface(IID_IDirectSoundBuffer8, (LPVOID*) &buf);
// ASSERT(buf);
HRESULT hr = ds.GetDS()->CreateSoundBuffer( &format, &buf, NULL );
if( FAILED(hr) )
RageException::ThrowNonfatal( hr_ssprintf(hr, "CreateSoundBuffer failed") );
@@ -232,8 +224,7 @@ DSoundBuf::DSoundBuf(DSound &ds, DSoundBuf::hw hardware,
RageException::Throw(hr_ssprintf(hr, "buf->GetCaps"));
if( int(bcaps.dwBufferBytes) != buffersize )
{
LOG->Warn("bcaps.dwBufferBytes (%i) != buffersize(%i); adjusting",
bcaps.dwBufferBytes, buffersize);
LOG->Warn( "bcaps.dwBufferBytes (%i) != buffersize(%i); adjusting", bcaps.dwBufferBytes, buffersize );
buffersize = bcaps.dwBufferBytes;
writeahead = min( writeahead, buffersize );
}
@@ -268,7 +259,7 @@ void DSoundBuf::SetVolume(float vol)
}
/* Determine if "pos" is between "start" and "end", for a circular buffer. */
bool contained(int start, int end, int pos)
static bool contained( int start, int end, int pos )
{
if( end >= start ) /* start ... pos ... end */
return start <= pos && pos <= end;
@@ -409,18 +400,21 @@ bool DSoundBuf::get_output_buf(char **buffer, unsigned *bufsiz, int chunksize)
#endif
#ifndef _XBOX
if ( result == DSERR_BUFFERLOST ) {
if ( result == DSERR_BUFFERLOST )
{
buf->Restore();
result = buf->Lock( write_cursor, num_bytes_empty, (LPVOID *)buffer, (DWORD *) bufsiz, NULL, &junk, 0 );
}
#endif
if ( result != DS_OK ) {
if ( result != DS_OK )
{
LOG->Warn( hr_ssprintf(result, "Couldn't lock the DirectSound buffer.") );
return false;
}
write_cursor += num_bytes_empty;
if(write_cursor >= buffersize) write_cursor -= buffersize;
if( write_cursor >= buffersize )
write_cursor -= buffersize;
buffer_bytes_filled += num_bytes_empty;