19c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/*
29c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Copyright (C) 2014 The Android Open Source Project
39c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall *
49c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License");
59c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * you may not use this file except in compliance with the License.
69c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * You may obtain a copy of the License at
79c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall *
89c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall *      http://www.apache.org/licenses/LICENSE-2.0
99c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall *
109c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Unless required by applicable law or agreed to in writing, software
119c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS,
129c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * See the License for the specific language governing permissions and
149c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * limitations under the License.
159c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */
169c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
179c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallpackage com.android.camera.one.v2.camera2proxy;
189c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
199c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport java.util.List;
209c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
219c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CameraAccessException;
229c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CaptureFailure;
239c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CaptureRequest;
249c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CaptureResult;
259c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.TotalCaptureResult;
269c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.os.Handler;
279c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
289c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport com.android.camera.async.SafeCloseable;
299c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
309c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/**
319c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Interface for {@link android.hardware.camera2.CameraCaptureSession}.
329c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * <p>
339c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Note that this also enables translation of IllegalStateException (an
349c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * unchecked exception) resulting from the underlying session being closed into
359c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * a checked exception, forcing callers to explicitly handle this edge case.
369c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * </p>
379c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */
389c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallpublic interface CameraCaptureSessionProxy extends SafeCloseable {
399c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public interface CaptureCallback {
409c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureCompleted(CameraCaptureSessionProxy session, CaptureRequest request,
419c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall                TotalCaptureResult result);
429c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
439c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureFailed(CameraCaptureSessionProxy session, CaptureRequest request,
449c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall                CaptureFailure failure);
459c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
469c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureProgressed(CameraCaptureSessionProxy session, CaptureRequest request,
479c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall                CaptureResult partialResult);
489c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
499c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureSequenceAborted(CameraCaptureSessionProxy session, int sequenceId);
509c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
519c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureSequenceCompleted(CameraCaptureSessionProxy session, int sequenceId,
529c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall                long frameNumber);
539c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
549c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onCaptureStarted(CameraCaptureSessionProxy session, CaptureRequest request,
559c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall                long timestamp, long frameNumber);
569c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    }
579c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
589c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public interface StateCallback {
599c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onActive(CameraCaptureSessionProxy session);
609c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
619c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onClosed(CameraCaptureSessionProxy session);
629c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
639c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onConfigureFailed(CameraCaptureSessionProxy session);
649c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
659c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onConfigured(CameraCaptureSessionProxy session);
669c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
679c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall        public void onReady(CameraCaptureSessionProxy session);
689c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    }
699c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
7071cdc139c2e2840929c51c38701e3c25f1b4ecdcPuneet Lall    public void abortCaptures() throws CameraAccessException, CameraCaptureSessionClosedException;
719c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
729c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public int capture(CaptureRequest request, CaptureCallback listener, Handler handler)
739c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall            throws CameraAccessException, CameraCaptureSessionClosedException;
749c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
759c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public int captureBurst(List<CaptureRequest> requests, CaptureCallback listener, Handler
769c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall            handler) throws CameraAccessException, CameraCaptureSessionClosedException;
779c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
789c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    @Override
799c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public void close();
809c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
819c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public CameraDeviceProxy getDevice();
829c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
839c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public int setRepeatingBurst(List<CaptureRequest> requests, CaptureCallback listener, Handler
849c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall            handler) throws CameraAccessException, CameraCaptureSessionClosedException;
859c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
869c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public int setRepeatingRequest(CaptureRequest request, CaptureCallback listener, Handler
879c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall            handler) throws CameraAccessException, CameraCaptureSessionClosedException;
889c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall
899c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall    public void stopRepeating() throws CameraAccessException, CameraCaptureSessionClosedException;
909c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall}
91