15d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala/*
25d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * Copyright (C) 2016 The Android Open Source Project
35d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *
45d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License");
55d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * you may not use this file except in compliance with the License.
65d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * You may obtain a copy of the License at
75d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *
85d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *      http://www.apache.org/licenses/LICENSE-2.0
95d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *
105d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software
115d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS,
125d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * See the License for the specific language governing permissions and
145d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * limitations under the License.
155d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala */
165d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
175d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalapackage android.hardware.camera2.impl;
185d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
195d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.CAMERA_DISABLED;
205d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.CAMERA_DISCONNECTED;
215d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.CAMERA_IN_USE;
225d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.CAMERA_ERROR;
235d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.MAX_CAMERAS_IN_USE;
245d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport static android.hardware.camera2.CameraAccessException.CAMERA_DEPRECATED_HAL;
255d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
265d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.ICameraService;
275d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.CameraManager;
285d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.CameraAccessException;
295d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.CaptureRequest;
305d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.ICameraDeviceUser;
315d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.impl.CameraMetadataNative;
325d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.params.OutputConfiguration;
335d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.hardware.camera2.utils.SubmitInfo;
34ee46b5831c49e7249e53dc00a17b168a8bc46123Eino-Ville Talvalaimport android.os.IBinder;
355d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.os.RemoteException;
365d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalaimport android.view.Surface;
375d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
385d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala/**
395d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * A wrapper around ICameraDeviceUser.
405d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *
415d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * Mainly used to convert ServiceSpecificExceptions to the correct
425d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * checked / unchecked exception.
435d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala *
445d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala * @hide
455d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala */
465d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvalapublic class ICameraDeviceUserWrapper {
475d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
485d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    private final ICameraDeviceUser mRemoteDevice;
495d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
505d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public ICameraDeviceUserWrapper(ICameraDeviceUser remoteDevice) {
515d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        if (remoteDevice == null) {
525d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new NullPointerException("Remote device may not be null");
535d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
545d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        mRemoteDevice = remoteDevice;
555d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
565d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
57ee46b5831c49e7249e53dc00a17b168a8bc46123Eino-Ville Talvala    public void unlinkToDeath(IBinder.DeathRecipient recipient, int flags) {
580305624f3d992498128f230c549c2a2c479ce4bbEino-Ville Talvala        if (mRemoteDevice.asBinder() != null) {
590305624f3d992498128f230c549c2a2c479ce4bbEino-Ville Talvala            mRemoteDevice.asBinder().unlinkToDeath(recipient, flags);
600305624f3d992498128f230c549c2a2c479ce4bbEino-Ville Talvala        }
61ee46b5831c49e7249e53dc00a17b168a8bc46123Eino-Ville Talvala    }
62ee46b5831c49e7249e53dc00a17b168a8bc46123Eino-Ville Talvala
635d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void disconnect()  {
645d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
655d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.disconnect();
665d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (RemoteException t) {
675d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            // ignore binder errors for disconnect
685d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
695d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
705d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
715d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public SubmitInfo submitRequest(CaptureRequest request, boolean streaming)
725d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throws CameraAccessException  {
735d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
745d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.submitRequest(request, streaming);
755d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
765d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
775d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
785d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
795d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
805d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
815d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public SubmitInfo submitRequestList(CaptureRequest[] requestList, boolean streaming)
825d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throws CameraAccessException {
835d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
845d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.submitRequestList(requestList, streaming);
855d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
865d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
875d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
885d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
895d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
905d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
915d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public long cancelRequest(int requestId) throws CameraAccessException {
925d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
935d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.cancelRequest(requestId);
945d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
955d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
965d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
975d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
985d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
995d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1005d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void beginConfigure() throws CameraAccessException {
1015d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1025d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.beginConfigure();
1035d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1045d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1055d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1065d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1075d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1085d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1090e04e910a6b0d8a7464df9721535dfba21527c37Eino-Ville Talvala    public void endConfigure(int operatingMode) throws CameraAccessException {
1105d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1110e04e910a6b0d8a7464df9721535dfba21527c37Eino-Ville Talvala            mRemoteDevice.endConfigure(operatingMode);
1125d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1135d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1145d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1155d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1165d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1175d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1185d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void deleteStream(int streamId) throws CameraAccessException {
1195d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1205d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.deleteStream(streamId);
1215d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1225d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1235d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1245d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1255d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1265d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1275d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public int createStream(OutputConfiguration outputConfiguration)
1285d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throws CameraAccessException {
1295d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1305d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.createStream(outputConfiguration);
1315d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1325d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1335d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1345d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1355d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1365d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1375d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public int createInputStream(int width, int height, int format) throws CameraAccessException {
1385d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1395d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.createInputStream(width, height, format);
1405d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1415d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1425d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1435d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1445d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1455d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1465d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public Surface getInputSurface() throws CameraAccessException {
1475d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1485d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.getInputSurface();
1495d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1505d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1515d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1525d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1535d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1545d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1555d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public CameraMetadataNative createDefaultRequest(int templateId) throws CameraAccessException {
1565d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1575d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.createDefaultRequest(templateId);
1585d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1595d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1605d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1615d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1625d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1635d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1645d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public CameraMetadataNative getCameraInfo() throws CameraAccessException {
1655d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1665d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.getCameraInfo();
1675d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1685d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1695d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1705d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1715d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1725d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1735d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void waitUntilIdle() throws CameraAccessException {
1745d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1755d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.waitUntilIdle();
1765d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1775d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1785d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1795d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1805d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1815d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1825d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public long flush() throws CameraAccessException {
1835d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1845d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            return mRemoteDevice.flush();
1855d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1865d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1875d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1885d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1895d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1905d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
1915d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void prepare(int streamId) throws CameraAccessException {
1925d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
1935d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.prepare(streamId);
1945d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
1955d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
1965d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
1975d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
1985d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
1995d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
2005d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void tearDown(int streamId) throws CameraAccessException {
2015d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
2025d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.tearDown(streamId);
2035d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
2045d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
2055d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
2065d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
2075d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
2085d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
2095d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    public void prepare2(int maxCount, int streamId) throws CameraAccessException {
2105d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        try {
2115d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            mRemoteDevice.prepare2(maxCount, streamId);
2125d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        } catch (Throwable t) {
2135d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            CameraManager.throwAsPublicException(t);
2145d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala            throw new UnsupportedOperationException("Unexpected exception", t);
2155d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala        }
2165d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala    }
2175d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
2184bd7abe72a647ceb2175a4fe66aa640815c116f8Shuzhen Wang    public void finalizeOutputConfigurations(int streamId, OutputConfiguration deferredConfig)
219c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He            throws CameraAccessException {
220c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He        try {
2214bd7abe72a647ceb2175a4fe66aa640815c116f8Shuzhen Wang            mRemoteDevice.finalizeOutputConfigurations(streamId, deferredConfig);
222c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He        } catch (Throwable t) {
223c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He            CameraManager.throwAsPublicException(t);
224c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He            throw new UnsupportedOperationException("Unexpected exception", t);
225c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He        }
226c8b181e95d17c00f9fe4a8338c4cdd0eeac3a0dcZhijun He    }
2275d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala
2285d2d7788f1759b0f3d2c057af0b3ea61b0354feeEino-Ville Talvala}
229