/* * Copyright (C) 2014 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 com.android.camera.burst; import android.graphics.SurfaceTexture; import android.view.Surface; import com.android.camera.app.OrientationManager.DeviceOrientation; import com.android.camera.one.OneCamera.Facing; import com.android.camera.session.CaptureSession; /** * Facade for the entire burst acquisition pipeline. Provides a simplified * interface over the {@link BurstController}. *

* The expected usage of BurstFacade can be described by the regular expression * "initialize (startBurst stopBurst)* release". That is there can * be multiple calls to * {@link #startBurst(CaptureSession.CaptureSessionCreator, DeviceOrientation, Facing, int)} and * {@link #stopBurst()} between {@link #initialize(SurfaceTexture)} and * {@link #release()} calls. */ public interface BurstFacade { /** * Starts the burst. * * @param captureSessionCreator can create and start empty capture sessions * @param deviceOrientation the orientation of the device * @param cameraFacing the camera facing * @param imageOrientationDegrees the orientation of captured image in * degrees */ public void startBurst(CaptureSession.CaptureSessionCreator captureSessionCreator, DeviceOrientation deviceOrientation, Facing cameraFacing, int imageOrientationDegrees); /** * Stops the burst. * * @return Whether a burst was actually stopped. Returns false if no burst * was running at the time. */ public boolean stopBurst(); /** * Initialize resources and use the provided {@link SurfaceTexture} for * streaming low-res preview frames for the burst. * * @param surfaceTexture to use for streaming */ public void initialize(SurfaceTexture surfaceTexture); /** * Release any resources used by the burst. *

* {@link #initialize(SurfaceTexture)} should be called in order to start * capturing bursts again. */ public void release(); /** * Returns the input surface for preview stream used by burst module. *

* This is an instance of {@link Surface} that is created for the passed in * surface texture {@link #initialize(SurfaceTexture)}. */ public Surface getInputSurface(); /** * Sets an instance of {@link BurstTaker}. *

* The instance of {@link BurstTaker} is available only when the capture * session with Camera is complete. */ public void setBurstTaker(BurstTaker burstTaker); }