Our resampling algorithm is quite primitive so try simple 8/16

mono/stereo conversions first. Only resample if we cannot avoid it.
This commit is contained in:
Francois Gouget 2002-12-15 01:12:27 +00:00 committed by Alexandre Julliard
parent ec55d23568
commit e385e5e467
1 changed files with 13 additions and 0 deletions

View File

@ -188,6 +188,19 @@ static DWORD wodOpen(LPDWORD lpdwUser, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
if (wodOpenHelper(wom, i, lpDesc, &wfx, dwFlags | WAVE_FORMAT_DIRECT) == MMSYSERR_NOERROR) \
{wom->avgSpeedInner = wfx.nAvgBytesPerSec; goto found;}
/* Our resampling algorithm is quite primitive so first try
* to just change the bit depth and number of channels
*/
for (i = ndlo; i < ndhi; i++) {
wfx.nSamplesPerSec=lpDesc->lpFormat->nSamplesPerSec;
wfx.nChannels = lpDesc->lpFormat->nChannels;
TRY(wfx.nSamplesPerSec, 16);
TRY(wfx.nSamplesPerSec, 8);
wfx.nChannels ^= 3;
TRY(wfx.nSamplesPerSec, 16);
TRY(wfx.nSamplesPerSec, 8);
}
for (i = ndlo; i < ndhi; i++) {
/* first try with same stereo/mono option as source */
wfx.nChannels = lpDesc->lpFormat->nChannels;