1270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall/*
2270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Copyright (C) 2014 The Android Open Source Project
3270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall *
4270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License");
5270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * you may not use this file except in compliance with the License.
6270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * You may obtain a copy of the License at
7270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall *
8270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall *      http://www.apache.org/licenses/LICENSE-2.0
9270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall *
10270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Unless required by applicable law or agreed to in writing, software
11270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS,
12270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * See the License for the specific language governing permissions and
14270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * limitations under the License.
15270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall */
16270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
17270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallpackage com.android.camera.one.v2.camera2proxy;
18270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
19270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport java.util.List;
20270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
21270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraAccessException;
22270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraCaptureSession;
23270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraDevice;
24270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CaptureRequest;
25270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.os.Handler;
26270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.view.Surface;
27270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
28270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport javax.annotation.Nullable;
29270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport javax.annotation.ParametersAreNonnullByDefault;
30270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
31270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall@ParametersAreNonnullByDefault
32270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallpublic class AndroidCameraDeviceProxy implements CameraDeviceProxy {
33270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    private static class AndroidCaptureSessionStateCallback extends
34270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            CameraCaptureSession.StateCallback {
35270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        private final CameraCaptureSessionProxy.StateCallback mStateCallback;
36270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
37270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        private AndroidCaptureSessionStateCallback(
38270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall                CameraCaptureSessionProxy.StateCallback stateCallback) {
39270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback = stateCallback;
40270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
41270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
42270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        @Override
43270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        public void onConfigured(CameraCaptureSession session) {
44270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback.onConfigured(new AndroidCameraCaptureSessionProxy(session));
45270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
46270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
47270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        @Override
48270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        public void onConfigureFailed(CameraCaptureSession session) {
49270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback.onConfigureFailed(new AndroidCameraCaptureSessionProxy(session));
50270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
51270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
52270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        @Override
53270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        public void onReady(CameraCaptureSession session) {
54270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback.onReady(new AndroidCameraCaptureSessionProxy(session));
55270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
56270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
57270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        @Override
58270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        public void onActive(CameraCaptureSession session) {
59270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback.onActive(new AndroidCameraCaptureSessionProxy(session));
60270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
61270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
62270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        @Override
63270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        public void onClosed(CameraCaptureSession session) {
64270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            mStateCallback.onClosed(new AndroidCameraCaptureSessionProxy(session));
65270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        }
66270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
67270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
68270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    private final CameraDevice mCameraDevice;
69270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
70270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    public AndroidCameraDeviceProxy(CameraDevice cameraDevice) {
71270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        mCameraDevice = cameraDevice;
72270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
73270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
74270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    @Override
75270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    public String getId() {
76270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        return mCameraDevice.getId();
77270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
78270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
79270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    @Override
80270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    public void createCaptureSession(List<Surface> list,
81270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall                                     CameraCaptureSessionProxy.StateCallback stateCallback,
82270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall                                     @Nullable Handler handler)
83270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall            throws CameraAccessException {
84270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        mCameraDevice.createCaptureSession(list, new AndroidCaptureSessionStateCallback(
85270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall                stateCallback), handler);
86270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
87270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
88270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    @Override
89270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    public CaptureRequest.Builder createCaptureRequest(int i) throws CameraAccessException {
90270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        return mCameraDevice.createCaptureRequest(i);
91270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
92270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall
93270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    @Override
94270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    public void close() {
95270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall        mCameraDevice.close();
96270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall    }
97270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall}
98