Example usage for org.apache.commons.math3.fraction BigFraction BigFraction

List of usage examples for org.apache.commons.math3.fraction BigFraction BigFraction

Introduction

In this page you can find the example usage for org.apache.commons.math3.fraction BigFraction BigFraction.

Prototype

public BigFraction(final long num) 

Source Link

Document

Create a BigFraction equivalent to the passed long, ie "num / 1".

Usage

From source file:com.netflix.imfutility.itunes.image.ImageValidatorTest.java

@Test
public void testCorrectValidation() throws Exception {
    ImageValidator validator;/*  w w  w. j a  va2  s .com*/

    validator = new ImageValidator(ImageUtils.getTestImageJpgFile(), "Test");
    validator.validateSize(1920, 1080);
    validator.validateAspectRatio(new BigFraction(16).divide(9));
    validator.validateRGBColorSpace();
}

From source file:com.netflix.imfutility.ConversionHelperTest.java

@Test
public void editUnitsToTimecode() {
    assertEquals("01:23:35.080",
            ConversionHelper.editUnitToTimecode(BigInteger.valueOf(125377), new BigFraction(25)));
    assertEquals("00:00:00.000",
            ConversionHelper.editUnitToTimecode(BigInteger.valueOf(0), new BigFraction(25)));
    assertEquals("00:00:02.000",
            ConversionHelper.editUnitToTimecode(BigInteger.valueOf(100), new BigFraction(50)));
    assertEquals("00:00:00.200",
            ConversionHelper.editUnitToTimecode(BigInteger.valueOf(10), new BigFraction(50)));
}

From source file:info.gehrels.voting.NotMoreThanTheAllowedNumberOfCandidatesCanReachItQuorum.java

private BigFraction correctToBoundariesIfNecessary(long numberOfValidVotes, long numberOfSeats,
        BigFraction calculatedQuorum) {//from   ww w  .j ava  2s .c  o m
    if ((numberOfValidVotes != 0) && (numberOfSeats != 0)) {
        return min(new BigFraction(numberOfValidVotes), calculatedQuorum);
    } else {
        return calculatedQuorum;
    }
}

From source file:com.netflix.imfutility.ConversionHelperTest.java

@Test
public void msToSmpteTimecode() {
    assertEquals("00:06:12:12", ConversionHelper.msToSmpteTimecode(372480, new BigFraction(25)));
    assertEquals("00:06:12:11", ConversionHelper.msToSmpteTimecode(372470, new BigFraction(25, 1)));
    assertEquals("00:00:00:00", ConversionHelper.msToSmpteTimecode(0, new BigFraction(25)));
    assertEquals("00:00:00:00", ConversionHelper.msToSmpteTimecode(30, new BigFraction(25)));
    assertEquals("00:00:00:01", ConversionHelper.msToSmpteTimecode(40, new BigFraction(25)));
    assertEquals("00:00:01:00", ConversionHelper.msToSmpteTimecode(1000, new BigFraction(25)));
    assertEquals("00:00:00:24", ConversionHelper.msToSmpteTimecode(999, new BigFraction(25)));
    assertEquals("00:00:00:24", ConversionHelper.msToSmpteTimecode(970, new BigFraction(25)));
    assertEquals("00:00:00:24", ConversionHelper.msToSmpteTimecode(960, new BigFraction(25)));
    assertEquals("10:59:59:00", ConversionHelper.msToSmpteTimecode(39599000, new BigFraction(25)));
    assertEquals("10:59:59:24", ConversionHelper.msToSmpteTimecode(39599960, new BigFraction(25)));
    assertEquals("10:59:59:23", ConversionHelper.msToSmpteTimecode(39599959, new BigFraction(25)));
}

From source file:com.netflix.subtitles.cli.TtmlConverterCmdLineParserTest.java

@Test
public void frameRateOptionParsedCorrectly() {
    /* PREPARATION */
    String[] args = new String[] { "-t", "test", "-o", "testFile", "-f", "24000/1001" };

    /* EXECUTION */
    TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args);

    /* VALIDATION */
    assertEquals("Frame rate option", new BigFraction(24000).divide(1001), params.getFrameRate());
}

From source file:com.netflix.imfutility.util.ConversionHelper.java

/**
 * Transforms a timecode string (hh:mm:ss:ff) to milliseconds according to the given edit rate (frame rate).
 * <p>//w ww . j  a  v  a 2  s .  co m
 * Currently works with non-drop timecodes only.
 * </p>
 *
 * @param tc         an SMPTE timecode (hh:mm:ss:ff)
 * @param unitsInSec edit unit rate in a form "25 1"
 * @return a number of milliseconds
 */
public static long smpteTimecodeToMilliSeconds(String tc, BigFraction unitsInSec) {
    String[] parts = tc.split("[:;\\.]");
    if (parts.length != 4) {
        throw new ConversionHelperException(String
                .format("Incorrect SMPTE timecode '%s'. Expected in a form 'HH[:;.]MM[:;.]SS[:;.]FF'", tc));
    }

    int hours;
    int mins;
    int secs;
    int frames;
    try {
        hours = Integer.parseInt(parts[0]);
        mins = Integer.parseInt(parts[1]);
        secs = Integer.parseInt(parts[2]);
        frames = Integer.parseInt(parts[3]);
    } catch (NumberFormatException e) {
        throw new ConversionHelperException(
                String.format("Incorrect SMPTE timecode '%s'! Expected in a form 'HH[:;.]MM[:;.]SS[:;.]FF'"
                        + " where HH,MM,SS and FF are non-negative integers", tc),
                e);
    }

    long total = 0L;
    total += hours * 60 * 60 * 1000L;
    total += mins * 60 * 1000L;
    total += secs * 1000L;
    total += new BigFraction(frames).divide(unitsInSec).multiply(1000).longValue();
    return total;
}

From source file:com.netflix.imfutility.itunes.image.ImageValidatorTest.java

@Test(expected = ImageValidationException.class)
public void testInvalidAspectRatio() throws Exception {
    ImageValidator validator = new ImageValidator(ImageUtils.getTestImageJpgFile(), "Test");
    validator.validateAspectRatio(new BigFraction(4).divide(3));
}

From source file:com.netflix.imfutility.itunes.destcontext.VideoDestContextResolveStrategyTest.java

@Test
public void testCorrectResolvingParameters() {
    VideoDestContextResolveStrategy resolveStrategy = new VideoDestContextResolveStrategy();

    resolveStrategy.setPackageType(ITunesPackageType.film).setWidth(4096).setHeight(2160)
            .setFrameRate(new BigFraction(60)).setInterlaced(false);
    assertEquals("hd1080p30", resolveStrategy.resolveContext(map).getName());

    resolveStrategy.setPackageType(ITunesPackageType.tv).setWidth(4096).setHeight(2160)
            .setFrameRate(new BigFraction(60)).setInterlaced(true);
    assertEquals("hd1080i2997", resolveStrategy.resolveContext(map).getName());

    resolveStrategy.setPackageType(ITunesPackageType.film).setWidth(800).setHeight(600)
            .setFrameRate(new BigFraction(30)).setInterlaced(true);
    //  hd 720 not allowed for film. Expected sd film format
    assertEquals("sdfilmntsc480i2997", resolveStrategy.resolveContext(map).getName());

    resolveStrategy.setPackageType(ITunesPackageType.tv).setWidth(1919).setHeight(1281)
            .setFrameRate(new BigFraction(24)).setInterlaced(true);
    assertEquals("hd720i23976", resolveStrategy.resolveContext(map).getName());

    resolveStrategy.setPackageType(ITunesPackageType.tv).setWidth(800).setHeight(600)
            .setFrameRate(new BigFraction(30)).setInterlaced(true);
    assertEquals("sdtvntsc480i2997", resolveStrategy.resolveContext(map).getName());

    resolveStrategy.setWidth(1281).setHeight(720).setFrameRate(new BigFraction(60000).divide(1001))
            .setInterlaced(true);//from   w w w. j  a va  2  s .co m
    assertEquals("hd720i23976", resolveStrategy.resolveContext(map).getName());
}

From source file:com.netflix.imfutility.itunes.asset.PosterAssetProcessor.java

@Override
protected void validate(File assetFile) throws ImageValidationException {
    ImageValidator validator = new ImageValidator(assetFile, POSTER_TYPE);
    validator.validateSize(POSTER_MIN_WIDTH, POSTER_MIN_HEIGHT);
    validator.validateAspectRatio(new BigFraction(POSTER_AR_NUMERATOR).divide(POSTER_AR_DENOMINATOR));
    validator.validateJpegOrPng();//  ww  w  . j av  a  2  s .c o  m
    validator.validateRGBColorSpace();
}

From source file:com.netflix.subtitles.ttml.TtmlUtilsTest.java

@Test
public void reduceDocumentAccordingToGivenOffsetAndStartAndEnd() {
    /* PREPARATION */
    TtEltype tt = new TtEltype();
    tt.setBody(new BodyEltype());

    BodyEltype body = tt.getBody();/* w  ww  .  j  a  va2s  . c o m*/
    body.setBegin("-01:00:00");

    body.getDiv().add(new DivEltype());
    body.getDiv().add(new DivEltype());

    DivEltype div1 = body.getDiv().get(0);
    div1.getBlockClass().add(new PBuilder().withBegin("01:00:05:00").withEnd("01:00:10:00").build());
    div1.getBlockClass()
            .add(new PBuilder().withBegin("01:00:13:00").withEnd("01:00:17:00").withDur("5s").build());
    div1.getBlockClass()
            .add(new PBuilder().withBegin("01:00:18:14").withEnd("01:00:25:00").withDur("6s").build());

    DivEltype div2 = body.getDiv().get(1);
    div2.getBlockClass().add(new PBuilder().withBegin("01:00:07:00").withDur("1s").build());
    div2.getBlockClass().add(new PBuilder().withBegin("01:00:21:10").withEnd("01:00:26:00").build());
    div2.getBlockClass().add(new PBuilder().withBegin("01:00:30:00").withEnd("01:00:58:00"));

    /* EXECUTION */
    TtmlUtils.reduceAccordingSegment(tt, 0, 8000, 23000, new BigFraction(24000).divide(1001));

    /* VALIDATION */
    assertEquals(null, tt.getBody().getBegin());
    assertEquals(null, tt.getBody().getEnd());
    assertEquals(null, tt.getBody().getDur());
    assertEquals(null, div1.getBegin());
    assertEquals(null, div1.getEnd());
    assertEquals(null, div1.getDur());
    assertEquals(null, div2.getBegin());
    assertEquals(null, div2.getEnd());
    assertEquals(null, div2.getDur());

    assertEquals(3, div1.getBlockClass().size());
    assertEquals("00:00:00:00", getPBegin(div1.getBlockClass().get(0)));
    assertEquals("00:00:02:00", getPEnd(div1.getBlockClass().get(0)));
    assertEquals("00:00:05:00", getPBegin(div1.getBlockClass().get(1)));
    assertEquals("00:00:09:00", getPEnd(div1.getBlockClass().get(1)));
    assertEquals("00:00:10:11", getPBegin(div1.getBlockClass().get(2)));
    assertEquals("00:00:15:00", getPEnd(div1.getBlockClass().get(2)));

    assertEquals(2, div2.getBlockClass().size());
    assertEquals("00:00:00:00", getPBegin(div2.getBlockClass().get(0)));
    assertEquals("00:00:00:00", getPEnd(div2.getBlockClass().get(0)));
    assertEquals("00:00:13:07", getPBegin(div2.getBlockClass().get(1)));
    assertEquals("00:00:15:00", getPEnd(div2.getBlockClass().get(1)));

    assertEquals(new BigInteger("24"), tt.getFrameRate());
    assertEquals("1000 1001", tt.getFrameRateMultiplier());
}