context: avoid some scaling overflows

Make a macro to scale without overflows and use this in the context.
This commit is contained in:
Wim Taymans 2025-01-24 16:21:59 +01:00
parent eb462302b7
commit fa15af376f
2 changed files with 12 additions and 5 deletions

View file

@ -292,6 +292,13 @@ struct spa_fraction {
#define SPA_ROUND_DOWN_N(num,align) ((num) & ~SPA_ROUND_MASK(num, align))
#define SPA_ROUND_UP_N(num,align) ((((num)-1) | SPA_ROUND_MASK(num, align))+1)
#define SPA_SCALE32(val,num,denom) \
({ \
uint64_t _val = (val); \
uint64_t _denom = (denom); \
(uint32_t)(((_val) * (num)) / (_denom)); \
})
#define SPA_SCALE32_UP(val,num,denom) \
({ \
uint64_t _val = (val); \