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