Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18612,6 +18612,7 @@ package android.hardware.camera2.params { method @NonNull public java.util.List<android.util.Size> getAvailableSizes(); method public int getFormat(); method public boolean isInput(); method public boolean isUltraHighResolution(); } public final class MeteringRectangle { core/java/android/hardware/camera2/params/MandatoryStreamCombination.java +48 −9 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public final class MandatoryStreamCombination { private final int mFormat; private final ArrayList<Size> mAvailableSizes = new ArrayList<Size> (); private final boolean mIsInput; private final boolean mIsUltraHighResolution; /** * Create a new {@link MandatoryStreamInformation}. Loading @@ -74,8 +75,8 @@ public final class MandatoryStreamCombination { * ImageFormat/PixelFormat. * @hide */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, int format) { this(availableSizes, format, /*isInput*/false); public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format) { this(availableSizes, format, /*isInput*/false, /*maximumResolution*/false); } /** Loading @@ -92,12 +93,31 @@ public final class MandatoryStreamCombination { */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format, boolean isInput) { this(availableSizes, format, isInput, /*maximumResolution*/ false); } /** * Create a new {@link MandatoryStreamInformation}. * @param availableSizes List of possible stream sizes. * @param format Image format. * @param isInput Flag indicating whether this stream is input. * @param isMaxResolution Flag indicating whether this is a maximum resolution stream. * * @throws IllegalArgumentException * if sizes is empty or if the format was not user-defined in * ImageFormat/PixelFormat. * @hide */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format, boolean isInput, boolean isUltraHighResolution) { if (availableSizes.isEmpty()) { throw new IllegalArgumentException("No available sizes"); } mAvailableSizes.addAll(availableSizes); mFormat = checkArgumentFormat(format); mIsInput = isInput; mIsUltraHighResolution = isUltraHighResolution; } /** Loading @@ -108,6 +128,18 @@ public final class MandatoryStreamCombination { return mIsInput; } /** * Confirms whether or not this is an ultra high resolution stream. * An 'ultra high resolution' stream is one which has a configuration which appears in * {@link android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION}, * Streams which are ultra high resolution must not be included with streams which are not * ultra high resolution in the same {@link android.hardware.camera2.CaptureRequest}. * @return true in case the stream is ultra high resolution, false otherwise. */ public boolean isUltraHighResolution() { return mIsUltraHighResolution; } /** * Return the list of available sizes for this mandatory stream. * Loading Loading @@ -153,6 +185,7 @@ public final class MandatoryStreamCombination { if (obj instanceof MandatoryStreamInformation) { final MandatoryStreamInformation other = (MandatoryStreamInformation) obj; if ((mFormat != other.mFormat) || (mIsInput != other.mIsInput) || (mIsUltraHighResolution != other.mIsUltraHighResolution) || (mAvailableSizes.size() != other.mAvailableSizes.size())) { return false; } Loading @@ -169,7 +202,7 @@ public final class MandatoryStreamCombination { @Override public int hashCode() { return HashCodeHelpers.hashCode(mFormat, Boolean.hashCode(mIsInput), mAvailableSizes.hashCode()); Boolean.hashCode(mIsUltraHighResolution), mAvailableSizes.hashCode()); } } Loading Loading @@ -273,15 +306,20 @@ public final class MandatoryStreamCombination { public int mFormat; public SizeThreshold mSizeThreshold; public boolean mIsInput; public boolean mIsUltraHighResolution; public StreamTemplate(int format, SizeThreshold sizeThreshold) { this(format, sizeThreshold, /*isInput*/false); this(format, sizeThreshold, /*isInput*/false, /*ultraHighResolution*/false); } public StreamTemplate(@Format int format, @NonNull SizeThreshold sizeThreshold, boolean isInput) { this(format, sizeThreshold, isInput, /*ultraHighResolution*/ false); } public StreamTemplate(@Format int format, @NonNull SizeThreshold sizeThreshold, boolean isInput, boolean isUltraHighResolution) { mFormat = format; mSizeThreshold = sizeThreshold; mIsInput = isInput; mIsUltraHighResolution = isUltraHighResolution; } } Loading Loading @@ -852,12 +890,12 @@ public final class MandatoryStreamCombination { inputSize.add(maxRawInputSize); streamsInfo.add(new MandatoryStreamInformation(inputSize, ImageFormat.RAW_SENSOR, /*isInput*/true)); ImageFormat.RAW_SENSOR, /*isInput*/true, /*ultraHighResolution*/true)); streamsInfo.add(new MandatoryStreamInformation(inputSize, ImageFormat.RAW_SENSOR)); ImageFormat.RAW_SENSOR, /*isInput*/ false, /*ultraHighResolution*/true)); MandatoryStreamCombination streamCombination; streamCombination = new MandatoryStreamCombination(streamsInfo, "Remosaic reprocessing", true); "Remosaic reprocessing", /*isReprocess*/true); availableStreamCombinations.add(streamCombination); } return Collections.unmodifiableList(availableStreamCombinations); Loading @@ -881,7 +919,8 @@ public final class MandatoryStreamCombination { template.mFormat)); sizes.add(sizeChosen); try { streamInfo = new MandatoryStreamInformation(sizes, template.mFormat); streamInfo = new MandatoryStreamInformation(sizes, template.mFormat, /*isInput*/ false, /*ultraHighResolution*/ true); } catch (IllegalArgumentException e) { String cause = "No available sizes found for format: " + template.mFormat + " size threshold: " + template.mSizeThreshold + " combination: " Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18612,6 +18612,7 @@ package android.hardware.camera2.params { method @NonNull public java.util.List<android.util.Size> getAvailableSizes(); method public int getFormat(); method public boolean isInput(); method public boolean isUltraHighResolution(); } public final class MeteringRectangle {
core/java/android/hardware/camera2/params/MandatoryStreamCombination.java +48 −9 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public final class MandatoryStreamCombination { private final int mFormat; private final ArrayList<Size> mAvailableSizes = new ArrayList<Size> (); private final boolean mIsInput; private final boolean mIsUltraHighResolution; /** * Create a new {@link MandatoryStreamInformation}. Loading @@ -74,8 +75,8 @@ public final class MandatoryStreamCombination { * ImageFormat/PixelFormat. * @hide */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, int format) { this(availableSizes, format, /*isInput*/false); public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format) { this(availableSizes, format, /*isInput*/false, /*maximumResolution*/false); } /** Loading @@ -92,12 +93,31 @@ public final class MandatoryStreamCombination { */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format, boolean isInput) { this(availableSizes, format, isInput, /*maximumResolution*/ false); } /** * Create a new {@link MandatoryStreamInformation}. * @param availableSizes List of possible stream sizes. * @param format Image format. * @param isInput Flag indicating whether this stream is input. * @param isMaxResolution Flag indicating whether this is a maximum resolution stream. * * @throws IllegalArgumentException * if sizes is empty or if the format was not user-defined in * ImageFormat/PixelFormat. * @hide */ public MandatoryStreamInformation(@NonNull List<Size> availableSizes, @Format int format, boolean isInput, boolean isUltraHighResolution) { if (availableSizes.isEmpty()) { throw new IllegalArgumentException("No available sizes"); } mAvailableSizes.addAll(availableSizes); mFormat = checkArgumentFormat(format); mIsInput = isInput; mIsUltraHighResolution = isUltraHighResolution; } /** Loading @@ -108,6 +128,18 @@ public final class MandatoryStreamCombination { return mIsInput; } /** * Confirms whether or not this is an ultra high resolution stream. * An 'ultra high resolution' stream is one which has a configuration which appears in * {@link android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION}, * Streams which are ultra high resolution must not be included with streams which are not * ultra high resolution in the same {@link android.hardware.camera2.CaptureRequest}. * @return true in case the stream is ultra high resolution, false otherwise. */ public boolean isUltraHighResolution() { return mIsUltraHighResolution; } /** * Return the list of available sizes for this mandatory stream. * Loading Loading @@ -153,6 +185,7 @@ public final class MandatoryStreamCombination { if (obj instanceof MandatoryStreamInformation) { final MandatoryStreamInformation other = (MandatoryStreamInformation) obj; if ((mFormat != other.mFormat) || (mIsInput != other.mIsInput) || (mIsUltraHighResolution != other.mIsUltraHighResolution) || (mAvailableSizes.size() != other.mAvailableSizes.size())) { return false; } Loading @@ -169,7 +202,7 @@ public final class MandatoryStreamCombination { @Override public int hashCode() { return HashCodeHelpers.hashCode(mFormat, Boolean.hashCode(mIsInput), mAvailableSizes.hashCode()); Boolean.hashCode(mIsUltraHighResolution), mAvailableSizes.hashCode()); } } Loading Loading @@ -273,15 +306,20 @@ public final class MandatoryStreamCombination { public int mFormat; public SizeThreshold mSizeThreshold; public boolean mIsInput; public boolean mIsUltraHighResolution; public StreamTemplate(int format, SizeThreshold sizeThreshold) { this(format, sizeThreshold, /*isInput*/false); this(format, sizeThreshold, /*isInput*/false, /*ultraHighResolution*/false); } public StreamTemplate(@Format int format, @NonNull SizeThreshold sizeThreshold, boolean isInput) { this(format, sizeThreshold, isInput, /*ultraHighResolution*/ false); } public StreamTemplate(@Format int format, @NonNull SizeThreshold sizeThreshold, boolean isInput, boolean isUltraHighResolution) { mFormat = format; mSizeThreshold = sizeThreshold; mIsInput = isInput; mIsUltraHighResolution = isUltraHighResolution; } } Loading Loading @@ -852,12 +890,12 @@ public final class MandatoryStreamCombination { inputSize.add(maxRawInputSize); streamsInfo.add(new MandatoryStreamInformation(inputSize, ImageFormat.RAW_SENSOR, /*isInput*/true)); ImageFormat.RAW_SENSOR, /*isInput*/true, /*ultraHighResolution*/true)); streamsInfo.add(new MandatoryStreamInformation(inputSize, ImageFormat.RAW_SENSOR)); ImageFormat.RAW_SENSOR, /*isInput*/ false, /*ultraHighResolution*/true)); MandatoryStreamCombination streamCombination; streamCombination = new MandatoryStreamCombination(streamsInfo, "Remosaic reprocessing", true); "Remosaic reprocessing", /*isReprocess*/true); availableStreamCombinations.add(streamCombination); } return Collections.unmodifiableList(availableStreamCombinations); Loading @@ -881,7 +919,8 @@ public final class MandatoryStreamCombination { template.mFormat)); sizes.add(sizeChosen); try { streamInfo = new MandatoryStreamInformation(sizes, template.mFormat); streamInfo = new MandatoryStreamInformation(sizes, template.mFormat, /*isInput*/ false, /*ultraHighResolution*/ true); } catch (IllegalArgumentException e) { String cause = "No available sizes found for format: " + template.mFormat + " size threshold: " + template.mSizeThreshold + " combination: " Loading