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