Search in sources :

Example 66 with Rational

use of android.util.Rational in project android_frameworks_base by AOSPA.

the class RationalTest method testConstructor.

@SmallTest
public void testConstructor() {
    // Simple case
    Rational r = new Rational(1, 2);
    assertEquals(1, r.getNumerator());
    assertEquals(2, r.getDenominator());
    // Denominator negative
    r = new Rational(-1, 2);
    assertEquals(-1, r.getNumerator());
    assertEquals(2, r.getDenominator());
    // Numerator negative
    r = new Rational(1, -2);
    assertEquals(-1, r.getNumerator());
    assertEquals(2, r.getDenominator());
    // Both negative
    r = new Rational(-1, -2);
    assertEquals(1, r.getNumerator());
    assertEquals(2, r.getDenominator());
    // Infinity.
    r = new Rational(1, 0);
    assertEquals(1, r.getNumerator());
    assertEquals(0, r.getDenominator());
    // Negative infinity.
    r = new Rational(-1, 0);
    assertEquals(-1, r.getNumerator());
    assertEquals(0, r.getDenominator());
    // NaN.
    r = new Rational(0, 0);
    assertEquals(0, r.getNumerator());
    assertEquals(0, r.getDenominator());
}
Also used : Rational(android.util.Rational) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 67 with Rational

use of android.util.Rational in project android_frameworks_base by AOSPA.

the class ColorSpaceTransform method copyElements.

/**
     * Copy the {@link Rational} elements in row-major order from this matrix into the destination.
     *
     * @param destination
     *          an array big enough to hold at least {@code 9} elements after the
     *          {@code offset}
     * @param offset
     *          a non-negative offset into the array
     * @throws NullPointerException
     *          If {@code destination} was {@code null}
     * @throws ArrayIndexOutOfBoundsException
     *          If there's not enough room to write the elements at the specified destination and
     *          offset.
     */
public void copyElements(Rational[] destination, int offset) {
    checkArgumentNonnegative(offset, "offset must not be negative");
    checkNotNull(destination, "destination must not be null");
    if (destination.length - offset < COUNT) {
        throw new ArrayIndexOutOfBoundsException("destination too small to fit elements");
    }
    for (int i = 0, j = 0; i < COUNT; ++i, j += RATIONAL_SIZE) {
        int numerator = mElements[j + OFFSET_NUMERATOR];
        int denominator = mElements[j + OFFSET_DENOMINATOR];
        destination[i + offset] = new Rational(numerator, denominator);
    }
}
Also used : Rational(android.util.Rational)

Example 68 with Rational

use of android.util.Rational in project android_frameworks_base by AOSPA.

the class StaticMetadata method getAeCompensationStepChecked.

/**
     * Get value of key android.control.aeCompensationStep and do the sanity check.
     *
     * @return default value if the value is null.
     */
public Rational getAeCompensationStepChecked() {
    Key<Rational> key = CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP;
    Rational compensationStep = getValueFromKeyNonNull(key);
    if (compensationStep == null) {
        // Return default step.
        return CONTROL_AE_COMPENSATION_STEP_DEFAULT;
    }
    // Legacy devices don't have a minimum step requirement
    if (isHardwareLevelLimitedOrBetter()) {
        float compensationStepF = (float) compensationStep.getNumerator() / compensationStep.getDenominator();
        checkTrueForKey(key, " value must be no more than 1/2", compensationStepF <= 0.5f);
    }
    return compensationStep;
}
Also used : Rational(android.util.Rational)

Example 69 with Rational

use of android.util.Rational in project android_frameworks_base by AOSPA.

the class StaticMetadata method getAeCompensationRangeChecked.

/**
     * Get value of key android.control.aeCompensationRange and do the sanity check.
     *
     * @return default value if the value is null or malformed.
     */
public Range<Integer> getAeCompensationRangeChecked() {
    Key<Range<Integer>> key = CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE;
    Range<Integer> compensationRange = getValueFromKeyNonNull(key);
    Rational compensationStep = getAeCompensationStepChecked();
    float compensationStepF = compensationStep.floatValue();
    final Range<Integer> DEFAULT_RANGE = Range.create((int) (CONTROL_AE_COMPENSATION_RANGE_DEFAULT_MIN / compensationStepF), (int) (CONTROL_AE_COMPENSATION_RANGE_DEFAULT_MAX / compensationStepF));
    final Range<Integer> ZERO_RANGE = Range.create(0, 0);
    if (compensationRange == null) {
        return ZERO_RANGE;
    }
    // Legacy devices don't have a minimum range requirement
    if (isHardwareLevelLimitedOrBetter() && !compensationRange.equals(ZERO_RANGE)) {
        checkTrueForKey(key, " range value must be at least " + DEFAULT_RANGE + ", actual " + compensationRange + ", compensation step " + compensationStep, compensationRange.getLower() <= DEFAULT_RANGE.getLower() && compensationRange.getUpper() >= DEFAULT_RANGE.getUpper());
    }
    return compensationRange;
}
Also used : Rational(android.util.Rational) Range(android.util.Range)

Example 70 with Rational

use of android.util.Rational in project android_frameworks_base by AOSPA.

the class CameraMetadataTest method testReadWritePrimitiveArray.

@SmallTest
public void testReadWritePrimitiveArray() {
    // int32 (n)
    checkKeyGetAndSet("android.sensor.info.sensitivityRange", int[].class, new int[] { 0xC0FFEE, 0xDEADF00D });
    // byte (n)
    checkKeyGetAndSet("android.statistics.faceScores", byte[].class, new byte[] { 1, 2, 3, 4 });
    // int64 (n)
    checkKeyGetAndSet("android.scaler.availableProcessedMinDurations", long[].class, new long[] { 0xABCD12345678FFFFL, 0x1234ABCD5678FFFFL, 0xFFFF12345678ABCDL });
    // float (n)
    checkKeyGetAndSet("android.lens.info.availableApertures", float[].class, new float[] { Float.MAX_VALUE, Float.MIN_NORMAL, Float.MIN_VALUE });
    // double (n) -- in particular double x 3
    checkKeyGetAndSet("android.jpeg.gpsCoordinates", double[].class, new double[] { Double.MAX_VALUE, Double.MIN_NORMAL, Double.MIN_VALUE });
    // rational (n) -- in particular rational x 9
    checkKeyGetAndSet("android.sensor.calibrationTransform1", Rational[].class, new Rational[] { new Rational(1, 2), new Rational(3, 4), new Rational(5, 6), new Rational(7, 8), new Rational(9, 10), new Rational(10, 11), new Rational(12, 13), new Rational(14, 15), new Rational(15, 16) });
    /**
         * Weirder cases, that don't map 1:1 with the native types
         */
    // bool (n) -- with TYPE_BYTE
    checkKeyGetAndSet("android.control.aeLock", boolean[].class, new boolean[] { true, false, true });
    // integer (n) -- with TYPE_BYTE
    checkKeyGetAndSet("android.control.aeAvailableModes", int[].class, new int[] { 1, 2, 3, 4 });
}
Also used : Rational(android.util.Rational) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Aggregations

Rational (android.util.Rational)96 SmallTest (android.test.suitebuilder.annotation.SmallTest)50 Range (android.util.Range)15 Size (android.util.Size)6 Point (android.graphics.Point)5 Pair (android.util.Pair)5 InvalidObjectException (java.io.InvalidObjectException)5 PictureInPictureParams (android.app.PictureInPictureParams)4 TargetApi (android.annotation.TargetApi)3 MediaWrapper (org.videolan.medialibrary.media.MediaWrapper)2 SuppressLint (android.annotation.SuppressLint)1 PendingIntent (android.app.PendingIntent)1 RemoteAction (android.app.RemoteAction)1 Intent (android.content.Intent)1 Rect (android.graphics.Rect)1 RequiresApi (androidx.annotation.RequiresApi)1 RequiresPermission (androidx.annotation.RequiresPermission)1 CameraSelector (androidx.camera.core.CameraSelector)1 StringBuilder (java.lang.StringBuilder)1 DecimalFormat (java.text.DecimalFormat)1