1 /* Copyright (c) 2012, The Linux Foundation. All rights reserved.
2  *
3  * Redistribution and use in source and binary forms, with or without
4  * modification, are permitted provided that the following conditions are
5  * met:
6  *     * Redistributions of source code must retain the above copyright
7  *       notice, this list of conditions and the following disclaimer.
8  *     * Redistributions in binary form must reproduce the above
9  *       copyright notice, this list of conditions and the following
10  *       disclaimer in the documentation and/or other materials provided
11  *       with the distribution.
12  *     * Neither the name of The Linux Foundation nor the names of its
13  *       contributors may be used to endorse or promote products derived
14  *       from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef ANDROID_HARDWARE_QCAMERA_USB_PARM_H
30 #define ANDROID_HARDWARE_QCAMERA_USB_PARM_H
31 
32 
33 #include <utils/threads.h>
34 #include <hardware/camera.h>
35 #include <binder/MemoryBase.h>
36 #include <binder/MemoryHeapBase.h>
37 #include <utils/threads.h>
38 #include <cutils/properties.h>
39 #include <camera/Camera.h>
40 #include <camera/QCameraParameters.h>
41 #include <system/window.h>
42 #include <system/camera.h>
43 #include <hardware/camera.h>
44 #include <gralloc_priv.h>
45 #include <hardware/power.h>
46 
47 extern "C" {
48 #include <linux/android_pmem.h>
49 #include <linux/msm_ion.h>
50 #include <camera.h>
51 #include <camera_defs_i.h>
52 } //extern C
53 
54 //Error codes
55 #define NOT_FOUND       -1
56 
57 /******************************************************************************
58 * Macro definitions
59 ******************************************************************************/
60 /* enum definitions for picture formats */
61 static const int PICTURE_FORMAT_JPEG = 1;
62 static const int PICTURE_FORMAT_RAW = 2;
63 
64 /* Default preview width in pixels */
65 #define DEFAULT_USBCAM_PRVW_WD  1280//640
66 
67 /* Default preview height in pixels */
68 #define DEFAULT_USBCAM_PRVW_HT  720//480
69 
70 /* Default picture format */
71 #define DEFAULT_USBCAM_PICT_FMT     PICTURE_FORMAT_JPEG
72 
73 /* Default picture width in pixels */
74 #define DEFAULT_USBCAM_PICT_WD  640
75 
76 /* Default picture height in pixels */
77 #define DEFAULT_USBCAM_PICT_HT  480
78 
79 /* Default picture JPEG quality 0-100 */
80 #define DEFAULT_USBCAM_PICT_QLTY  85
81 
82 /* Default thumbnail width in pixels */
83 #define DEFAULT_USBCAM_THUMBNAIL_WD    432
84 
85 /* Default thumbnail height in pixels */
86 #define DEFAULT_USBCAM_THUMBNAIL_HT    288
87 
88 /* Default thumbnail JPEG quality 0-100 */
89 #define DEFAULT_USBCAM_THUMBNAIL_QLTY  85
90 
91 /* Default preview format */
92 #define DEFAULT_USBCAM_PRVW_FMT HAL_PIXEL_FORMAT_YCrCb_420_SP
93 
94 /* minimum of the default preview fps range in milli-Hz */
95 #define MIN_PREV_FPS            5000
96 
97 /* maximum of the default preview fps range in milli-Hz */
98 #define MAX_PREV_FPS            121000
99 
100 //for histogram stats
101 #define HISTOGRAM_STATS_SIZE 257
102 #define NUM_HISTOGRAM_BUFFERS 3
103 
104 namespace android {
105 
106 /******************************************************************************
107 * Structure definitions
108 ******************************************************************************/
109 typedef struct {
110     uint32_t aspect_ratio;
111     uint32_t width;
112     uint32_t height;
113 } thumbnail_size_type;
114 
115 /******************************************************************************
116  * Function: usbCamInitDefaultParameters
117  * Description: This function sets default parameters to camera HAL context
118  *
119  * Input parameters:
120  *   camHal              - camera HAL handle
121  *
122  * Return values:
123  *      0   No error
124  *      -1  Error
125  *
126  * Notes: none
127  *****************************************************************************/
128 int usbCamInitDefaultParameters(camera_hardware_t *camHal);
129 
130 /******************************************************************************
131  * Function: usbCamSetParameters
132  * Description: This function parses the parameter string and stores the
133  *              parameters in the camera HAL handle
134  *
135  * Input parameters:
136  *  camHal              - camera HAL handle
137  *  params              - pointer to parameter string
138  *
139  * Return values:
140  *      0   Success
141  *      -1  Error
142  * Notes: none
143  *****************************************************************************/
144 int usbCamSetParameters(camera_hardware_t *camHal, const char *params);
145 
146 /******************************************************************************
147  * Function: usbCamGetParameters
148  * Description: This function allocates memory for parameter string,
149  *              composes and returns the parameter string
150  *
151  * Input parameters:
152  *   camHal             - camera HAL handle
153  *
154  * Return values:
155  *      Address to the parameter string
156  *
157  * Notes: none
158  *****************************************************************************/
159 char* usbCamGetParameters(camera_hardware_t *camHal);
160 
161 /******************************************************************************
162  * Function: usbCamPutParameters
163  * Description: This function frees the memory allocated for parameter string
164  *
165  * Input parameters:
166  *  camHal              - camera HAL handle
167  *  parms               - Parameter string
168  *
169  * Return values:
170  *      0   Success
171  *      -1  Error
172  * Notes: none
173  *****************************************************************************/
174 void usbCamPutParameters(camera_hardware_t *camHal, char *parms);
175 
176 }; // namespace android
177 
178 #endif /* ANDROID_HARDWARE_QCAMERA_USB_PARM_H */
179