Math Helper Functions


The Wxutil.h header file in the DirectShow base classes provides some mathematical helper functions. These are intended to help with time format conversions.
Function Description
llMulDiv Implements ((a*b)+rnd)/c for 32-bit values of a.
Int64x32Div32 Implements ((a*b)+rnd)/c for 64-bit values of a.


llMulDiv

Multiplies a by b, adds rnd to the 128-bit result, then divides by c.

LONGLONG WINAPI llMulDiv(
  LONGLONG a,
  LONGLONG b,
  LONGLONG c,
  LONGLONG rnd
  );

Return Values

Returns either the (a * b + rnd)/c calculation or one of the following values.
Value Condition
0x7FFFFFFFFFFFFFFF Overflow occurred because the result is too large (positive).
0x8000000000000000 Overflow occurred because the result is too large (negative).

Remarks

Rounding on the division is toward zero. Division by zero is counted as an overflow condition.


Int64x32Div32

Multiplies a by b, adds rnd to the 96-bit result, then divides by c.

LONGLONG WINAPI Int64x32Div32(
  LONGLONG a,
  LONG b,
  LONG c,
  LONG rnd
  );

Return Values

Returns either the (a * b + rnd)/c calculation or one of the following values.
Value Condition
0x7FFFFFFFFFFFFFFF Overflow occurred because the result is too large (positive).
0x8000000000000000 Overflow occurred because the result is too large (negative).

Remarks

Rounding on the division is toward zero. Division by zero is counted as an overflow condition.

© 1997 Microsoft Corporation. All rights reserved. Terms of Use.