Merge "Camera: Use session configuraion when recording tests" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
26da9f18ed
@@ -43,6 +43,8 @@ import android.hardware.camera2.CaptureResult;
|
||||
import android.hardware.camera2.TotalCaptureResult;
|
||||
import android.hardware.camera2.params.InputConfiguration;
|
||||
import android.hardware.camera2.params.MeteringRectangle;
|
||||
import android.hardware.camera2.params.OutputConfiguration;
|
||||
import android.hardware.camera2.params.SessionConfiguration;
|
||||
import android.hardware.camera2.params.StreamConfigurationMap;
|
||||
import android.location.Location;
|
||||
import android.location.LocationManager;
|
||||
@@ -75,6 +77,7 @@ import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Semaphore;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
@@ -693,6 +696,38 @@ public class CameraTestUtils extends Assert {
|
||||
return openCamera(manager, cameraId, /*listener*/null, handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a new camera session with output surfaces and initial session parameters.
|
||||
*
|
||||
* @param camera The CameraDevice to be configured.
|
||||
* @param outputSurfaces The surface list that used for camera output.
|
||||
* @param listener The callback CameraDevice will notify when session is available.
|
||||
* @param handler The handler used to notify callbacks.
|
||||
* @param initialRequest Initial request settings to use as session parameters.
|
||||
*/
|
||||
public static CameraCaptureSession configureCameraSessionWithParameters(CameraDevice camera,
|
||||
List<Surface> outputSurfaces, BlockingSessionCallback listener,
|
||||
Handler handler, CaptureRequest initialRequest) throws CameraAccessException {
|
||||
List<OutputConfiguration> outConfigurations = new ArrayList<>(outputSurfaces.size());
|
||||
for (Surface surface : outputSurfaces) {
|
||||
outConfigurations.add(new OutputConfiguration(surface));
|
||||
}
|
||||
SessionConfiguration sessionConfig = new SessionConfiguration(
|
||||
SessionConfiguration.SESSION_REGULAR, outConfigurations,
|
||||
new HandlerExecutor(handler), listener);
|
||||
sessionConfig.setSessionParameters(initialRequest);
|
||||
camera.createCaptureSession(sessionConfig);
|
||||
|
||||
CameraCaptureSession session = listener.waitAndGetSession(SESSION_CONFIGURE_TIMEOUT_MS);
|
||||
assertFalse("Camera session should not be a reprocessable session",
|
||||
session.isReprocessable());
|
||||
assertFalse("Capture session type must be regular",
|
||||
CameraConstrainedHighSpeedCaptureSession.class.isAssignableFrom(
|
||||
session.getClass()));
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a new camera session with output surfaces and type.
|
||||
*
|
||||
@@ -1334,6 +1369,20 @@ public class CameraTestUtils extends Assert {
|
||||
}
|
||||
}
|
||||
|
||||
public static class HandlerExecutor implements Executor {
|
||||
private final Handler mHandler;
|
||||
|
||||
public HandlerExecutor(Handler handler) {
|
||||
assertNotNull("handler must be valid", handler);
|
||||
mHandler = handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Runnable runCmd) {
|
||||
mHandler.post(runCmd);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide a mock for {@link CameraDevice.StateCallback}.
|
||||
*
|
||||
|
||||
@@ -58,6 +58,7 @@ import static com.android.mediaframeworktest.helpers.CameraTestUtils.SIZE_BOUND_
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.SimpleCaptureCallback;
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.SimpleImageReaderListener;
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.configureCameraSession;
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.configureCameraSessionWithParameters;
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.getSupportedVideoSizes;
|
||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.getValueNotNull;
|
||||
|
||||
@@ -872,7 +873,6 @@ public class Camera2RecordingTest extends Camera2SurfaceViewTestCase {
|
||||
outputSurfaces.add(mReaderSurface);
|
||||
}
|
||||
mSessionListener = new BlockingSessionCallback();
|
||||
mSession = configureCameraSession(mCamera, outputSurfaces, mSessionListener, mHandler);
|
||||
|
||||
CaptureRequest.Builder recordingRequestBuilder =
|
||||
mCamera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
|
||||
@@ -885,7 +885,10 @@ public class Camera2RecordingTest extends Camera2SurfaceViewTestCase {
|
||||
}
|
||||
recordingRequestBuilder.addTarget(mRecordingSurface);
|
||||
recordingRequestBuilder.addTarget(mPreviewSurface);
|
||||
mSession.setRepeatingRequest(recordingRequestBuilder.build(), listener, mHandler);
|
||||
CaptureRequest recordingRequest = recordingRequestBuilder.build();
|
||||
mSession = configureCameraSessionWithParameters(mCamera, outputSurfaces, mSessionListener,
|
||||
mHandler, recordingRequest);
|
||||
mSession.setRepeatingRequest(recordingRequest, listener, mHandler);
|
||||
|
||||
if (useMediaRecorder) {
|
||||
mMediaRecorder.start();
|
||||
|
||||
Reference in New Issue
Block a user