1f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
2f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
3f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * Redistribution and use in source and binary forms, with or without
4f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * modification, are permitted provided that the following conditions are
5f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * met:
6f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *     * Redistributions of source code must retain the above copyright
7f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       notice, this list of conditions and the following disclaimer.
8f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *     * Redistributions in binary form must reproduce the above
9f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       copyright notice, this list of conditions and the following
10f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       disclaimer in the documentation and/or other materials provided
11f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       with the distribution.
12b274848d051a4f2d5a9e7e3b152d26211c4b2e83Duy Truong *     * Neither the name of The Linux Foundation nor the names of its
13f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       contributors may be used to endorse or promote products derived
14f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       from this software without specific prior written permission.
15f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
16f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
28f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang */
29f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#ifndef __QCAMERA2FACTORY_H__
316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define __QCAMERA2FACTORY_H__
32f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <hardware/camera.h>
346f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <system/camera.h>
356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include <media/msmb_camera.h>
36f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#include "QCamera2HWI.h"
38f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevnamespace qcamera {
40f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
416f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevclass QCamera2Factory
426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{
436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevpublic:
446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCamera2Factory();
456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    virtual ~QCamera2Factory();
46f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static int get_number_of_cameras();
486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static int get_camera_info(int camera_id, struct camera_info *info);
49f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevprivate:
516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getNumberOfCameras();
526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int getCameraInfo(int camera_id, struct camera_info *info);
536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int cameraDeviceOpen(int camera_id, struct hw_device_t **hw_device);
546f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static int camera_device_open(const struct hw_module_t *module, const char *id,
556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev                struct hw_device_t **hw_device);
56f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevpublic:
586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static struct hw_module_methods_t mModuleMethods;
59f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevprivate:
616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int mNumOfCameras;
626f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev};
63f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev}; /*namespace qcamera*/
656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
666f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevextern camera_module_t HAL_MODULE_INFO_SYM;
676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
686f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#endif /* ANDROID_HARDWARE_QUALCOMM_CAMERA_H */
69