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.TotalCaptureResult;
|
||||||
import android.hardware.camera2.params.InputConfiguration;
|
import android.hardware.camera2.params.InputConfiguration;
|
||||||
import android.hardware.camera2.params.MeteringRectangle;
|
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.hardware.camera2.params.StreamConfigurationMap;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
@@ -75,6 +77,7 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
@@ -693,6 +696,38 @@ public class CameraTestUtils extends Assert {
|
|||||||
return openCamera(manager, cameraId, /*listener*/null, handler);
|
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.
|
* 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}.
|
* 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.SimpleCaptureCallback;
|
||||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.SimpleImageReaderListener;
|
import static com.android.mediaframeworktest.helpers.CameraTestUtils.SimpleImageReaderListener;
|
||||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.configureCameraSession;
|
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.getSupportedVideoSizes;
|
||||||
import static com.android.mediaframeworktest.helpers.CameraTestUtils.getValueNotNull;
|
import static com.android.mediaframeworktest.helpers.CameraTestUtils.getValueNotNull;
|
||||||
|
|
||||||
@@ -872,7 +873,6 @@ public class Camera2RecordingTest extends Camera2SurfaceViewTestCase {
|
|||||||
outputSurfaces.add(mReaderSurface);
|
outputSurfaces.add(mReaderSurface);
|
||||||
}
|
}
|
||||||
mSessionListener = new BlockingSessionCallback();
|
mSessionListener = new BlockingSessionCallback();
|
||||||
mSession = configureCameraSession(mCamera, outputSurfaces, mSessionListener, mHandler);
|
|
||||||
|
|
||||||
CaptureRequest.Builder recordingRequestBuilder =
|
CaptureRequest.Builder recordingRequestBuilder =
|
||||||
mCamera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
|
mCamera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
|
||||||
@@ -885,7 +885,10 @@ public class Camera2RecordingTest extends Camera2SurfaceViewTestCase {
|
|||||||
}
|
}
|
||||||
recordingRequestBuilder.addTarget(mRecordingSurface);
|
recordingRequestBuilder.addTarget(mRecordingSurface);
|
||||||
recordingRequestBuilder.addTarget(mPreviewSurface);
|
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) {
|
if (useMediaRecorder) {
|
||||||
mMediaRecorder.start();
|
mMediaRecorder.start();
|
||||||
|
|||||||
Reference in New Issue
Block a user