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