From 55c329b462ce3df1d5417331f835f6474d0c7e13 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 26 Jun 2017 06:54:45 -0700 Subject: Clean up some messy rounding code --- OpenAL32/Include/alMain.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'OpenAL32') diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 8cedee94..9460a3f1 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -409,6 +409,24 @@ inline size_t RoundUp(size_t value, size_t r) return value - (value%r); } +/* Scales the given value using 64-bit integer math, rounding the result. */ +inline ALuint64 ScaleRound(ALuint64 val, ALuint64 new_scale, ALuint64 old_scale) +{ + return (val*new_scale + old_scale/2) / old_scale; +} + +/* Scales the given value using 64-bit integer math, flooring the result. */ +inline ALuint64 ScaleFloor(ALuint64 val, ALuint64 new_scale, ALuint64 old_scale) +{ + return val * new_scale / old_scale; +} + +/* Scales the given value using 64-bit integer math, ceiling the result. */ +inline ALuint64 ScaleCeil(ALuint64 val, ALuint64 new_scale, ALuint64 old_scale) +{ + return (val*new_scale + old_scale-1) / old_scale; +} + /* Fast float-to-int conversion. Assumes the FPU is already in round-to-zero * mode. */ inline ALint fastf2i(ALfloat f) -- cgit v1.2.3