Loading media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java +49 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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. * Loading Loading @@ -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}. * Loading media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/Camera2RecordingTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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(); Loading Loading
media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java +49 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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. * Loading Loading @@ -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}. * Loading
media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/Camera2RecordingTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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(); Loading