Loading api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -12668,6 +12668,9 @@ package android.hardware.camera2.params { method public int getWidth(); method public int getX(); method public int getY(); field public static final int METERING_WEIGHT_DONT_CARE = 0; // 0x0 field public static final int METERING_WEIGHT_MAX = 1000; // 0x3e8 field public static final int METERING_WEIGHT_MIN = 0; // 0x0 } public final class RggbChannelVector { core/java/android/hardware/camera2/CaptureRequest.java +18 −6 Original line number Diff line number Diff line Loading @@ -691,8 +691,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -763,8 +767,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -846,8 +854,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading core/java/android/hardware/camera2/CaptureResult.java +18 −6 Original line number Diff line number Diff line Loading @@ -537,8 +537,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -807,8 +811,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -1287,8 +1295,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading core/java/android/hardware/camera2/params/MeteringRectangle.java +43 −13 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.camera2.params; import android.util.Size; Loading @@ -25,22 +26,50 @@ import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.utils.HashCodeHelpers; /** * An immutable class to represent a rectangle {@code (x,y, width, height)} with an * additional weight component. * * </p>The rectangle is defined to be inclusive of the specified coordinates.</p> * * <p>When used with a {@link CaptureRequest}, the coordinate system is based on the active pixel * An immutable class to represent a rectangle {@code (x, y, width, height)} with an additional * weight component. * <p> * The rectangle is defined to be inclusive of the specified coordinates. * </p> * <p> * When used with a {@link CaptureRequest}, the coordinate system is based on the active pixel * array, with {@code (0,0)} being the top-left pixel in the * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE active pixel array}, and * {@code (android.sensor.info.activeArraySize.width - 1, * android.sensor.info.activeArraySize.height - 1)} * being the bottom-right pixel in the active pixel array. * android.sensor.info.activeArraySize.height - 1)} being the bottom-right pixel in the active pixel * array. * </p> * <p> * The weight must range from {@value #METERING_WEIGHT_MIN} to {@value #METERING_WEIGHT_MAX} * inclusively, and represents a weight for every pixel in the area. This means that a large * metering area with the same weight as a smaller area will have more effect in the metering * result. Metering areas can partially overlap and the camera device will add the weights in the * overlap rectangle. * </p> * <p> * If all rectangles have 0 weight, then no specific metering area needs to be used by the camera * device. If the metering rectangle is outside the used android.scaler.cropRegion returned in * capture result metadata, the camera device will ignore the sections outside the rectangle and * output the used sections in the result metadata. * </p> * * <p>The metering weight is nonnegative.</p> */ public final class MeteringRectangle { /** * The minimum value of valid metering weight. */ public static final int METERING_WEIGHT_MIN = 0; /** * The maximum value of valid metering weight. */ public static final int METERING_WEIGHT_MAX = 1000; /** * Weights set to this value will cause the camera device to ignore this rectangle. * If all metering rectangles are weighed with 0, the camera device will choose its own metering * rectangles. */ public static final int METERING_WEIGHT_DONT_CARE = 0; private final int mX; private final int mY; Loading @@ -55,8 +84,8 @@ public final class MeteringRectangle { * @param y coordinate >= 0 * @param width width >= 0 * @param height height >= 0 * @param meteringWeight weight >= 0 * * @param meteringWeight weight between {@value #METERING_WEIGHT_MIN} and * {@value #METERING_WEIGHT_MAX} inclusively * @throws IllegalArgumentException if any of the parameters were negative */ public MeteringRectangle(int x, int y, int width, int height, int meteringWeight) { Loading @@ -64,7 +93,8 @@ public final class MeteringRectangle { mY = checkArgumentNonnegative(y, "y must be nonnegative"); mWidth = checkArgumentNonnegative(width, "width must be nonnegative"); mHeight = checkArgumentNonnegative(height, "height must be nonnegative"); mWeight = checkArgumentNonnegative(meteringWeight, "meteringWeight must be nonnegative"); mWeight = checkArgumentInRange( meteringWeight, METERING_WEIGHT_MIN, METERING_WEIGHT_MAX, "meteringWeight"); } /** Loading core/java/com/android/internal/util/Preconditions.java +27 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,33 @@ public class Preconditions { return value; } /** * Ensures that the argument int value is within the inclusive range. * * @param value a int value * @param lower the lower endpoint of the inclusive range * @param upper the upper endpoint of the inclusive range * @param valueName the name of the argument to use if the check fails * * @return the validated int value * * @throws IllegalArgumentException if {@code value} was not within the range */ public static int checkArgumentInRange(int value, int lower, int upper, String valueName) { if (value < lower) { throw new IllegalArgumentException( String.format( "%s is out of range of [%d, %d] (too low)", valueName, lower, upper)); } else if (value > upper) { throw new IllegalArgumentException( String.format( "%s is out of range of [%d, %d] (too high)", valueName, lower, upper)); } return value; } /** * Ensures that the array is not {@code null}, and none if its elements are {@code null}. * Loading Loading
api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -12668,6 +12668,9 @@ package android.hardware.camera2.params { method public int getWidth(); method public int getX(); method public int getY(); field public static final int METERING_WEIGHT_DONT_CARE = 0; // 0x0 field public static final int METERING_WEIGHT_MAX = 1000; // 0x3e8 field public static final int METERING_WEIGHT_MIN = 0; // 0x0 } public final class RggbChannelVector {
core/java/android/hardware/camera2/CaptureRequest.java +18 −6 Original line number Diff line number Diff line Loading @@ -691,8 +691,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -763,8 +767,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -846,8 +854,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading
core/java/android/hardware/camera2/CaptureResult.java +18 −6 Original line number Diff line number Diff line Loading @@ -537,8 +537,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -807,8 +811,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading Loading @@ -1287,8 +1295,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array. The weight * should be nonnegative.</p> * bottom-right pixel in the active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in * the metering result. Metering areas can partially overlap and the * camera device will add the weights in the overlap region.</p> * <p>If all regions have 0 weight, then no specific metering area * needs to be used by the camera device. If the metering region is * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, Loading
core/java/android/hardware/camera2/params/MeteringRectangle.java +43 −13 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.camera2.params; import android.util.Size; Loading @@ -25,22 +26,50 @@ import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.utils.HashCodeHelpers; /** * An immutable class to represent a rectangle {@code (x,y, width, height)} with an * additional weight component. * * </p>The rectangle is defined to be inclusive of the specified coordinates.</p> * * <p>When used with a {@link CaptureRequest}, the coordinate system is based on the active pixel * An immutable class to represent a rectangle {@code (x, y, width, height)} with an additional * weight component. * <p> * The rectangle is defined to be inclusive of the specified coordinates. * </p> * <p> * When used with a {@link CaptureRequest}, the coordinate system is based on the active pixel * array, with {@code (0,0)} being the top-left pixel in the * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE active pixel array}, and * {@code (android.sensor.info.activeArraySize.width - 1, * android.sensor.info.activeArraySize.height - 1)} * being the bottom-right pixel in the active pixel array. * android.sensor.info.activeArraySize.height - 1)} being the bottom-right pixel in the active pixel * array. * </p> * <p> * The weight must range from {@value #METERING_WEIGHT_MIN} to {@value #METERING_WEIGHT_MAX} * inclusively, and represents a weight for every pixel in the area. This means that a large * metering area with the same weight as a smaller area will have more effect in the metering * result. Metering areas can partially overlap and the camera device will add the weights in the * overlap rectangle. * </p> * <p> * If all rectangles have 0 weight, then no specific metering area needs to be used by the camera * device. If the metering rectangle is outside the used android.scaler.cropRegion returned in * capture result metadata, the camera device will ignore the sections outside the rectangle and * output the used sections in the result metadata. * </p> * * <p>The metering weight is nonnegative.</p> */ public final class MeteringRectangle { /** * The minimum value of valid metering weight. */ public static final int METERING_WEIGHT_MIN = 0; /** * The maximum value of valid metering weight. */ public static final int METERING_WEIGHT_MAX = 1000; /** * Weights set to this value will cause the camera device to ignore this rectangle. * If all metering rectangles are weighed with 0, the camera device will choose its own metering * rectangles. */ public static final int METERING_WEIGHT_DONT_CARE = 0; private final int mX; private final int mY; Loading @@ -55,8 +84,8 @@ public final class MeteringRectangle { * @param y coordinate >= 0 * @param width width >= 0 * @param height height >= 0 * @param meteringWeight weight >= 0 * * @param meteringWeight weight between {@value #METERING_WEIGHT_MIN} and * {@value #METERING_WEIGHT_MAX} inclusively * @throws IllegalArgumentException if any of the parameters were negative */ public MeteringRectangle(int x, int y, int width, int height, int meteringWeight) { Loading @@ -64,7 +93,8 @@ public final class MeteringRectangle { mY = checkArgumentNonnegative(y, "y must be nonnegative"); mWidth = checkArgumentNonnegative(width, "width must be nonnegative"); mHeight = checkArgumentNonnegative(height, "height must be nonnegative"); mWeight = checkArgumentNonnegative(meteringWeight, "meteringWeight must be nonnegative"); mWeight = checkArgumentInRange( meteringWeight, METERING_WEIGHT_MIN, METERING_WEIGHT_MAX, "meteringWeight"); } /** Loading
core/java/com/android/internal/util/Preconditions.java +27 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,33 @@ public class Preconditions { return value; } /** * Ensures that the argument int value is within the inclusive range. * * @param value a int value * @param lower the lower endpoint of the inclusive range * @param upper the upper endpoint of the inclusive range * @param valueName the name of the argument to use if the check fails * * @return the validated int value * * @throws IllegalArgumentException if {@code value} was not within the range */ public static int checkArgumentInRange(int value, int lower, int upper, String valueName) { if (value < lower) { throw new IllegalArgumentException( String.format( "%s is out of range of [%d, %d] (too low)", valueName, lower, upper)); } else if (value > upper) { throw new IllegalArgumentException( String.format( "%s is out of range of [%d, %d] (too high)", valueName, lower, upper)); } return value; } /** * Ensures that the array is not {@code null}, and none if its elements are {@code null}. * Loading