Returns the result of multiplying a CMTime by an integer, then dividing by another integer.


CMTime CMTimeMultiplyByRatio(CMTime time, int32_t multiplier, int32_t divisor);



The CMTime to be multiplied then divided.


The value by which to multiply.


The value by which to divide.

Return Value

A value equal to (time * multiplier) / divisor.


The exact rational value will be preserved, if possible without overflow. If an overflow would occur, a new timescale will be chosen so as to minimize the rounding error. Default rounding will be applied when converting the result to this timescale. If the result value still overflows when timescale == 1, then the result will be either positive or negative infinity, depending on the direction of the overflow.

If any rounding occurs for any reason, the result's kCMTimeFlags_HasBeenRounded flag will be set. This flag will also be set if the CMTime operand has kCMTimeFlags_HasBeenRounded set.

If the denominator, and either the time or the numerator, are zero, the result will be kCMTimeInvalid. If only the denominator is zero, the result will be either kCMTimePositiveInfinity or kCMTimeNegativeInfinity, depending on the signs of the other arguments.

If time is invalid, the result will be invalid. If time is infinite, the result will be similarly infinite. If time is indefinite, the result will be indefinite.

See Also

Performing Common Operations


Returns the sum of two CMTimes.


Returns the difference of two CMTimes.


Returns the product of a CMTime and a 32-bit integer.


Returns the product of a CMTime and a 64-bit float.


Returns a new CMTime containing the source CMTime converted to a new timescale (rounding as requested).