List of usage examples for org.apache.commons.math3.fraction BigFraction subtract
public BigFraction subtract(final BigFraction fraction)
Subtracts the value of another fraction from the value of this one, returning the result in reduced form.
From source file:com.netflix.imfutility.util.ConversionHelper.java
/** * Transforms edit units to a timecode according to the given edit unit rate. * <ul>//from ww w . j ava2 s . c om * <li>An example of edit units is a frame.</li> * <li>The output timecode has the following format 'hh:mm:ss.xxx', where xxx is milliseconds.</li> * </ul> * * @param eu edit units to be transformed * @param unitsInSec edit unit rate * @return timecode as a string in "hh:mm:ss.mss" format. */ public static String editUnitToTimecode(BigInteger eu, BigFraction unitsInSec) { BigFraction editUnits = new BigFraction(eu); BigFraction unitsInMin = unitsInSec.multiply(new BigFraction(60)); BigFraction unitsInHour = unitsInSec.multiply(new BigFraction(60 * 60)); int hours = editUnits.divide(unitsInHour).intValue(); int minutes = editUnits.subtract(unitsInHour.multiply(hours)).divide(unitsInMin).intValue(); int seconds = editUnits.subtract(unitsInHour.multiply(hours)).subtract(unitsInMin.multiply(minutes)) .divide(unitsInSec).intValue(); BigFraction units = editUnits.subtract(unitsInHour.multiply(hours)).subtract(unitsInMin.multiply(minutes)) .subtract(unitsInSec.multiply(seconds)); int milliseconds = new BigFraction(1000).divide(unitsInSec).multiply(units).intValue(); return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, milliseconds); }
From source file:com.netflix.imfutility.util.ConversionHelper.java
/** * Transforms milliseconds to an SMPTE timecode according to the given edit unit rate. * <ul>// www .j av a 2s . c om * <li>An example of edit units is a frame.</li> * <li>The output timecode has the following format 'hh:mm:ss:ff'.</li> * </ul> * * @param milliseconds milliseconds to be transformed * @param unitsInSec edit unit rate * @return timecode as a string in "hh:mm:ss:ff" format. */ public static String msToSmpteTimecode(long milliseconds, BigFraction unitsInSec) { BigFraction ms = new BigFraction(milliseconds); BigFraction msInMin = new BigFraction(60 * 1000); BigFraction msInHour = new BigFraction(60 * 60 * 1000); BigFraction msInSec = new BigFraction(1000); BigFraction unitsInMs = unitsInSec.divide(msInSec); int hours = ms.divide(msInHour).intValue(); int minutes = ms.subtract(msInHour.multiply(hours)).divide(msInMin).intValue(); int seconds = ms.subtract(msInHour.multiply(hours)).subtract(msInMin.multiply(minutes)).divide(msInSec) .intValue(); int units = ms.subtract(msInHour.multiply(hours)).subtract(msInMin.multiply(minutes)) .subtract(msInSec.multiply(seconds)).multiply(unitsInMs).intValue(); return String.format("%02d:%02d:%02d:%02d", hours, minutes, seconds, units); }