Merge "camera2: Add mandatory stream combinations for depth only cameras." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-06-24 22:18:26 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 8 deletions

View File

@@ -680,7 +680,7 @@ public abstract class CameraDevice implements AutoCloseable {
* </table><br>
* </p>
*
*<p>Devices capable of streaming concurrently with other devices as described by
*<p>BACKWARD_COMPATIBLE devices capable of streaming concurrently with other devices as described by
* {@link android.hardware.camera2.CameraManager#getConcurrentCameraIds} have the
* following guaranteed streams (when streaming concurrently with other devices)</p>
*
@@ -696,10 +696,14 @@ public abstract class CameraDevice implements AutoCloseable {
* </table><br>
* </p>
*
* <p> Devices which are not backwards-compatible, support a mandatory single stream of size sVGA with image format {@code DEPTH16} during concurrent operation.
*
* <p> For guaranteed concurrent stream configurations:</p>
* <p> s720p refers to the camera device's resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
* <p> sVGA refers to the camera device's maximum resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
* VGA resolution (640X480) whichever is lower. </p>
* <p> s720p refers to the camera device's maximum resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
* 720p(1280X720) whichever is lower. </p>
* <p> s1440p refers to the camera device's resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
* <p> s1440p refers to the camera device's maximum resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
* 1440p(1920X1440) whichever is lower. </p>
* <p>MONOCHROME-capability ({@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES}
* includes {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME MONOCHROME}) devices
@@ -707,6 +711,7 @@ public abstract class CameraDevice implements AutoCloseable {
* streams with {@code Y8} in all guaranteed stream combinations for the device's hardware level
* and capabilities.</p>
*
*
* <p>Devices capable of outputting HEIC formats ({@link StreamConfigurationMap#getOutputFormats}
* contains {@link android.graphics.ImageFormat#HEIC}) will support substituting {@code JPEG}
* streams with {@code HEIC} in all guaranteed stream combinations for the device's hardware

View File

@@ -685,6 +685,12 @@ public final class MandatoryStreamCombination {
"Standard still image capture"),
};
private static StreamCombinationTemplate sConcurrentDepthOnlyStreamCombinations[] = {
new StreamCombinationTemplate(new StreamTemplate [] {
new StreamTemplate(ImageFormat.DEPTH16, SizeThreshold.VGA) },
"Depth capture for mesh based object rendering"),
};
/**
* Helper builder class to generate a list of available mandatory stream combinations.
* @hide
@@ -729,19 +735,21 @@ public final class MandatoryStreamCombination {
getAvailableMandatoryConcurrentStreamCombinations() {
// Since concurrent streaming support is optional, we mandate these stream
// combinations regardless of camera device capabilities.
StreamCombinationTemplate []chosenStreamCombinations = sConcurrentStreamCombinations;
if (!isColorOutputSupported()) {
Log.v(TAG, "Device is not backward compatible!");
throw new IllegalArgumentException("Camera device which is not BACKWARD_COMPATIBLE"
+ " cannot have mandatory concurrent streams");
Log.v(TAG, "Device is not backward compatible, depth streams are mandatory!");
chosenStreamCombinations = sConcurrentDepthOnlyStreamCombinations;
}
Size sizeVGAp = new Size(640, 480);
Size size720p = new Size(1280, 720);
Size size1440p = new Size(1920, 1440);
ArrayList<MandatoryStreamCombination> availableConcurrentStreamCombinations =
new ArrayList<MandatoryStreamCombination>();
availableConcurrentStreamCombinations.ensureCapacity(
sConcurrentStreamCombinations.length);
for (StreamCombinationTemplate combTemplate : sConcurrentStreamCombinations) {
chosenStreamCombinations.length);
for (StreamCombinationTemplate combTemplate : chosenStreamCombinations) {
ArrayList<MandatoryStreamInformation> streamsInfo =
new ArrayList<MandatoryStreamInformation>();
streamsInfo.ensureCapacity(combTemplate.mStreamTemplates.length);
@@ -753,6 +761,9 @@ public final class MandatoryStreamCombination {
case s1440p:
formatSize = size1440p;
break;
case VGA:
formatSize = sizeVGAp;
break;
default:
formatSize = size720p;
}