198e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin/* 298e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * Copyright (C) 2013 The Android Open Source Project 398e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * 498e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 598e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * you may not use this file except in compliance with the License. 698e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * You may obtain a copy of the License at 798e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * 898e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 998e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * 1098e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * Unless required by applicable law or agreed to in writing, software 1198e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 1298e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * See the License for the specific language governing permissions and 1498e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * limitations under the License. 1598e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin */ 1698e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 1798e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin#ifndef ANDROID_SERVERS_CAMERA_CAMERADEVICEFACTORY_H 1898e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin#define ANDROID_SERVERS_CAMERA_CAMERADEVICEFACTORY_H 1998e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 2098e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin#include <utils/RefBase.h> 2198e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 2298e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkinnamespace android { 237b82efe7a376c882f8f938e1c41b8311a8cdda4aEino-Ville Talvala 2498e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkinclass CameraDeviceBase; 2598e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkinclass CameraService; 2698e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 2798e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin/** 2898e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * Create the right instance of Camera2Device or Camera3Device 2998e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin * automatically based on the device version. 3098e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin */ 3198e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkinclass CameraDeviceFactory : public virtual RefBase { 3298e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin public: 3398e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin static void registerService(wp<CameraService> service); 3498e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 3598e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin // Prerequisite: Call registerService. 3698e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin static sp<CameraDeviceBase> createDevice(int cameraId); 3798e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin private: 3898e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin CameraDeviceFactory(wp<CameraService> service); 3998e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 4098e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin static wp<CameraService> sService; 4198e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin}; 4298e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 4398e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin}; // namespace android 4498e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin 4598e24724fb77445d4d015a5fec4ecbd5b49abc9bIgor Murashkin#endif 46