Camera Extensions: Add OutputSurfaceConfiguration class to retrieve surface outputs
- Add OutputSurfaceConfiguration class to get the surface outputs in the advanced extensions to reduce output surface parameters in initSession for the addition of future surfaces Test: CTS Tests Bug: 258296845 Change-Id: Iebaf37e5298f0fb5c2da6aae480f52df55210413
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Copyright (c) 2022, The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package android.hardware.camera2.extension;
|
||||
|
||||
import android.hardware.camera2.extension.OutputSurface;
|
||||
|
||||
/** @hide */
|
||||
interface IOutputSurfaceConfiguration
|
||||
{
|
||||
OutputSurface getPreviewOutputSurface();
|
||||
OutputSurface getImageCaptureOutputSurface();
|
||||
OutputSurface getImageAnalysisOutputSurface();
|
||||
}
|
||||
@@ -104,6 +104,7 @@ import androidx.camera.extensions.impl.advanced.ImageProcessorImpl;
|
||||
import androidx.camera.extensions.impl.advanced.ImageReaderOutputConfigImpl;
|
||||
import androidx.camera.extensions.impl.advanced.MultiResolutionImageReaderOutputConfigImpl;
|
||||
import androidx.camera.extensions.impl.advanced.NightAdvancedExtenderImpl;
|
||||
import androidx.camera.extensions.impl.advanced.OutputSurfaceConfigurationImpl;
|
||||
import androidx.camera.extensions.impl.advanced.OutputSurfaceImpl;
|
||||
import androidx.camera.extensions.impl.advanced.RequestProcessorImpl;
|
||||
import androidx.camera.extensions.impl.advanced.SessionProcessorImpl;
|
||||
@@ -1147,15 +1148,27 @@ public class CameraExtensionsProxyService extends Service {
|
||||
|
||||
@Override
|
||||
public CameraSessionConfig initSession(String cameraId, OutputSurface previewSurface,
|
||||
OutputSurface burstSurface) {
|
||||
OutputSurface imageCaptureSurface) {
|
||||
OutputSurfaceImplStub outputPreviewSurfaceImpl =
|
||||
new OutputSurfaceImplStub(previewSurface);
|
||||
OutputSurfaceImplStub outputBurstSurfaceImpl =
|
||||
new OutputSurfaceImplStub(burstSurface);
|
||||
OutputSurfaceImplStub outputImageCaptureSurfaceImpl =
|
||||
new OutputSurfaceImplStub(imageCaptureSurface);
|
||||
|
||||
Camera2SessionConfigImpl sessionConfig = mSessionProcessor.initSession(cameraId,
|
||||
mCharacteristicsHashMap, getApplicationContext(), outputPreviewSurfaceImpl,
|
||||
outputBurstSurfaceImpl, null /*imageAnalysisSurfaceConfig*/);
|
||||
Camera2SessionConfigImpl sessionConfig;
|
||||
|
||||
if (LATENCY_IMPROVEMENTS_SUPPORTED) {
|
||||
OutputSurfaceConfigurationImplStub outputSurfaceConfigs =
|
||||
new OutputSurfaceConfigurationImplStub(outputPreviewSurfaceImpl,
|
||||
// Image Analysis Output is currently only supported in CameraX
|
||||
outputImageCaptureSurfaceImpl, null /*imageAnalysisSurfaceConfig*/);
|
||||
|
||||
sessionConfig = mSessionProcessor.initSession(cameraId,
|
||||
mCharacteristicsHashMap, getApplicationContext(), outputSurfaceConfigs);
|
||||
} else {
|
||||
sessionConfig = mSessionProcessor.initSession(cameraId,
|
||||
mCharacteristicsHashMap, getApplicationContext(), outputPreviewSurfaceImpl,
|
||||
outputImageCaptureSurfaceImpl, null /*imageAnalysisSurfaceConfig*/);
|
||||
}
|
||||
|
||||
List<Camera2OutputConfigImpl> outputConfigs = sessionConfig.getOutputConfigs();
|
||||
CameraSessionConfig ret = new CameraSessionConfig();
|
||||
@@ -1237,6 +1250,34 @@ public class CameraExtensionsProxyService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
private class OutputSurfaceConfigurationImplStub implements OutputSurfaceConfigurationImpl {
|
||||
private OutputSurfaceImpl mOutputPreviewSurfaceImpl;
|
||||
private OutputSurfaceImpl mOutputImageCaptureSurfaceImpl;
|
||||
private OutputSurfaceImpl mOutputImageAnalysisSurfaceImpl;
|
||||
|
||||
public OutputSurfaceConfigurationImplStub(OutputSurfaceImpl previewOutput,
|
||||
OutputSurfaceImpl imageCaptureOutput, OutputSurfaceImpl imageAnalysisOutput) {
|
||||
mOutputPreviewSurfaceImpl = previewOutput;
|
||||
mOutputImageCaptureSurfaceImpl = imageCaptureOutput;
|
||||
mOutputImageAnalysisSurfaceImpl = imageAnalysisOutput;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputSurfaceImpl getPreviewOutputSurface() {
|
||||
return mOutputPreviewSurfaceImpl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputSurfaceImpl getImageCaptureOutputSurface() {
|
||||
return mOutputImageCaptureSurfaceImpl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputSurfaceImpl getImageAnalysisOutputSurface() {
|
||||
return mOutputImageAnalysisSurfaceImpl;
|
||||
}
|
||||
}
|
||||
|
||||
private class OutputSurfaceImplStub implements OutputSurfaceImpl {
|
||||
private final Surface mSurface;
|
||||
private final Size mSize;
|
||||
|
||||
Reference in New Issue
Block a user