1daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang/*
2daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang**
3daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** Copyright 2008, The Android Open Source Project
4daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** Copyright 2012, Samsung Electronics Co. LTD
5daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang**
6daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** Licensed under the Apache License, Version 2.0 (the "License");
7daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** you may not use this file except in compliance with the License.
8daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** You may obtain a copy of the License at
9daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang**
10daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang**     http://www.apache.org/licenses/LICENSE-2.0
11daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang**
12daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** Unless required by applicable law or agreed to in writing, software
13daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** distributed under the License is distributed on an "AS IS" BASIS,
14daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** See the License for the specific language governing permissions and
16daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang** limitations under the License.
17daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang*/
18daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
19daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang/*!
20daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * \file      ExynosCamera2.h
21daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * \brief     header file for static information of camera2
22daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * \author    Sungjoong Kang(sj3.kang@samsung.com)
23daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * \date      2012/08/06
24daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang *
25daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * <b>Revision History: </b>
26daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang * - 2012/08/06 : Sungjoong Kang(sj3.kang@samsung.com) \n
27daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang *   Initial Release
28daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang *
29daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang */
30daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
3117071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk#ifndef EXYNOS_CAMERA_2_H
3217071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk#define EXYNOS_CAMERA_2_H
3317071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk
34daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang#include <hardware/camera2.h>
35daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang#include <camera/Camera.h>
36daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang#include <camera/CameraParameters.h>
37daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang#include "exynos_format.h"
38f3312f8b250f3d2774564123ca0d7802f5016df5Younghwan Joo#include "fimc-is-metadata.h"
39daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
40daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangnamespace android {
41daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
4217071e43a448f45e864bc41049528ceb82f21a37Ruben Brunkextern int32_t SUPPORT_THUMBNAIL_REAR_SIZE[3][2];
4317071e43a448f45e864bc41049528ceb82f21a37Ruben Brunkextern int32_t SUPPORT_THUMBNAIL_FRONT_SIZE[4][2];
4417071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk
45daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangstruct ExynosCamera2Info
46daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang{
47daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangpublic:
48daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t     sensorW;
49daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t     sensorH;
50daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t     sensorRawW;
51daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t     sensorRawH;
52daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int         numScalerResolution;
53daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    const int32_t     *scalerResolutions;
54daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int         numJpegResolution;
55daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    const int32_t     *jpegResolutions;
560f26b20fd328df0ad1cfed28eb456217b22d7780Sungjoong Kang    float       minFocusDistance;
570f26b20fd328df0ad1cfed28eb456217b22d7780Sungjoong Kang    float       focalLength;
580f26b20fd328df0ad1cfed28eb456217b22d7780Sungjoong Kang    float       aperture;
59e00f6591f64959131a8ddfbbcec7ff36c7eee94eSungjoong Kang    float       fnumber;
6073c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    const uint8_t       *availableAfModes;
6173c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    const uint8_t       *sceneModeOverrides;
6273c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    const uint8_t       *availableAeModes;
6373c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    int         numAvailableAfModes;
6473c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    int         numSceneModeOverrides;
6573c6337d144f6228136d1a56dcb3635f6cb544d2Sungjoong Kang    int         numAvailableAeModes;
66fd2d78a2d270f85a71578423e1f2b4f99fd99216Sungjoong Kang
67fd2d78a2d270f85a71578423e1f2b4f99fd99216Sungjoong Kang    /* FD information */
68fd2d78a2d270f85a71578423e1f2b4f99fd99216Sungjoong Kang    int32_t    maxFaceCount;
69daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang};
70daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
71daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangstruct ExynosCamera2InfoS5K4E5 : public ExynosCamera2Info
72daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang{
73daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangpublic:
74daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    ExynosCamera2InfoS5K4E5();
75daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang	~ExynosCamera2InfoS5K4E5();
76daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang};
77daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
78daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangstruct ExynosCamera2InfoS5K6A3 : public ExynosCamera2Info
79daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang{
80daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangpublic:
81daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    ExynosCamera2InfoS5K6A3();
82daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang	~ExynosCamera2InfoS5K6A3();
83daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang};
84daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
85daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangclass ExynosCamera2 {
86daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kangpublic:
87daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    ExynosCamera2(int cameraId);
88daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    ~ExynosCamera2();
89daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
90daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    ExynosCamera2Info  *m_curCameraInfo;
91daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
92daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t getSensorW();
93daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t getSensorH();
94daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t getSensorRawW();
95daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int32_t getSensorRawH();
96daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
97daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    bool isSupportedResolution(int width, int height);
98daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    bool isSupportedJpegResolution(int width, int height);
99daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
100daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    status_t constructStaticInfo(camera_metadata_t **info,
101daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang        int cameraId, bool sizeRequest);
102daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang
103daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    status_t constructDefaultRequest(int request_template,
104daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang        camera_metadata_t **request, bool sizeRequest);
105daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang    int     m_cameraId;
106daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang};
107daa1fcd6e8861944412e5c77db5eb441512aef38Sungjoong Kang}
10817071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk
10917071e43a448f45e864bc41049528ceb82f21a37Ruben Brunk#endif
110