From: Timo Kreuzer Date: Wed, 6 Sep 2017 21:09:25 +0000 (+0000) Subject: [WDMAUD.DRV/KMIXER] Replace a float mul/div/round operation with integer math. X-Git-Tag: backups/GSoC_2017/rapps@75905~4^2~27 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=801106003258b3a91cd16c5d66dc138c807eefe1 [WDMAUD.DRV/KMIXER] Replace a float mul/div/round operation with integer math. svn path=/trunk/; revision=75779 --- diff --git a/reactos/dll/win32/wdmaud.drv/mixer.c b/reactos/dll/win32/wdmaud.drv/mixer.c index 0f00ccc96e5..73cd376277e 100644 --- a/reactos/dll/win32/wdmaud.drv/mixer.c +++ b/reactos/dll/win32/wdmaud.drv/mixer.c @@ -50,7 +50,7 @@ PerformSampleRateConversion( return ERROR_NOT_ENOUGH_MEMORY; } - NewSamples = lrintf(((FLOAT)NumSamples * ((FLOAT)NewRate / (FLOAT)OldRate))) + 2; + NewSamples = ((((ULONG64)NumSamples * NewRate) + (OldRate / 2)) / OldRate) + 2; FloatOut = HeapAlloc(GetProcessHeap(), 0, NewSamples * NumChannels * sizeof(FLOAT)); if (!FloatOut) diff --git a/reactos/drivers/wdm/audio/filters/kmixer/pin.c b/reactos/drivers/wdm/audio/filters/kmixer/pin.c index d00ba0438b1..eb2196c3585 100644 --- a/reactos/drivers/wdm/audio/filters/kmixer/pin.c +++ b/reactos/drivers/wdm/audio/filters/kmixer/pin.c @@ -59,7 +59,7 @@ PerformSampleRateConversion( return STATUS_INSUFFICIENT_RESOURCES; } - NewSamples = lrintf(((FLOAT)NumSamples * ((FLOAT)NewRate / (FLOAT)OldRate))) + 2; + NewSamples = ((((ULONG64)NumSamples * NewRate) + (OldRate / 2)) / OldRate) + 2; FloatOut = ExAllocatePool(NonPagedPool, NewSamples * NumChannels * sizeof(FLOAT)); if (!FloatOut)