10ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/* Copyright (c) 2011, Code Aurora Forum. All rights reserved. 20ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * 30ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * Redistribution and use in source and binary forms, with or without 40ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * modification, are permitted provided that the following conditions are 50ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * met: 60ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * * Redistributions of source code must retain the above copyright 70ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * notice, this list of conditions and the following disclaimer. 80ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * * Redistributions in binary form must reproduce the above 90ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * copyright notice, this list of conditions and the following 100ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * disclaimer in the documentation and/or other materials provided 110ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * with the distribution. 120ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * * Neither the name of Code Aurora Forum, Inc. nor the names of its 130ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * contributors may be used to endorse or promote products derived 140ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * from this software without specific prior written permission. 150ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * 160ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 170ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 180ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 190ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 200ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 210ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 220ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 230ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 240ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 250ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 260ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 270ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * 280ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed */ 290ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/*#error uncomment this for compiler test!*/ 300ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 310ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed//#define LOG_NDEBUG 0 320ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#define LOG_NIDEBUG 0 330ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#define LOG_TAG "QualcommCamera" 340ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include <utils/Log.h> 350ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include <utils/threads.h> 360ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include <fcntl.h> 370ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include <sys/mman.h> 380ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 390ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include "QCameraHAL.h" 400ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/* include QCamera Hardware Interface Header*/ 410ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include "QualcommCamera.h" 420ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed//#include "QualcommCameraHardware.h" 430ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed//#include <camera/CameraHardwareInterface.h> 440ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 450ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedextern "C" { 460ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#include <sys/time.h> 470ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 480ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 490ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/* HAL function implementation goes here*/ 500ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 510ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/** 520ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * The functions need to be provided by the camera HAL. 530ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * 540ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * If getNumberOfCameras() returns N, the valid cameraId for getCameraInfo() 550ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed * and openCameraHardware() is 0 to N-1. 560ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed */ 570ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 580ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedstatic hw_module_methods_t camera_module_methods = { 590ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed open: camera_device_open, 600ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed}; 610ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 620ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedstatic hw_module_t camera_common = { 630ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed tag: HARDWARE_MODULE_TAG, 640ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed version_major: 0, 650ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed version_minor: 01, 660ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed id: CAMERA_HARDWARE_MODULE_ID, 670ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed name: "Qcamera", 680ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed author:"Qcom", 690ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed methods: &camera_module_methods, 700ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed dso: NULL, 710ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //reserved[0]: 0, 720ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed}; 730ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedcamera_module_t HAL_MODULE_INFO_SYM = { 740ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed common: camera_common, 750ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed get_number_of_cameras: get_number_of_cameras, 760ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed get_camera_info: get_camera_info, 770ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed}; 780ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 790ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedcamera_device_ops_t camera_ops = { 800ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed set_preview_window: android::set_preview_window, 810ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed set_callbacks: android::set_CallBacks, 820ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed enable_msg_type: android::enable_msg_type, 830ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed disable_msg_type: android::disable_msg_type, 840ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed msg_type_enabled: android::msg_type_enabled, 850ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 860ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed start_preview: android::start_preview, 870ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed stop_preview: android::stop_preview, 880ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed preview_enabled: android::preview_enabled, 890ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed store_meta_data_in_buffers: android::store_meta_data_in_buffers, 900ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 910ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed start_recording: android::start_recording, 920ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed stop_recording: android::stop_recording, 930ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed recording_enabled: android::recording_enabled, 940ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed release_recording_frame: android::release_recording_frame, 950ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 960ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed auto_focus: android::auto_focus, 970ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed cancel_auto_focus: android::cancel_auto_focus, 980ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 990ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed take_picture: android::take_picture, 1000ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed cancel_picture: android::cancel_picture, 1010ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1020ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed set_parameters: android::set_parameters, 1030ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed get_parameters: android::get_parameters, 1040ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed put_parameters: android::put_parameters, 1050ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed send_command: android::send_command, 1060ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1070ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed release: android::release, 1080ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed dump: android::dump, 1090ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed}; 1100ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1110ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syednamespace android { 1120ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1130ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedtypedef struct { 1140ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_device hw_dev; 1150ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //sp<CameraHardwareInterface> hardware; 1160ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware; 1170ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int camera_released; 1180ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int cameraId; 1190ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //CameraParameters parameters; 1200ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} camera_hardware_t; 1210ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1220ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedtypedef struct { 1230ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_memory_t mem; 1240ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int32_t msgType; 1250ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed sp<IMemory> dataPtr; 1260ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed void* user; 1270ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed unsigned int index; 1280ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} q_cam_memory_t; 1290ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1300ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala SyedQCameraHardwareInterface *util_get_Hal_obj( struct camera_device * device) 1310ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 1320ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = NULL; 1330ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(device && device->priv){ 1340ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_hardware_t *camHal = (camera_hardware_t *)device->priv; 1350ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware = camHal->hardware; 1360ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 1370ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return hardware; 1380ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 1390ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1400ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#if 0 //mzhu 1410ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala SyedCameraParameters* util_get_HAL_parameter( struct camera_device * device) 1420ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 1430ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed CameraParameters *param = NULL; 1440ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(device && device->priv){ 1450ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_hardware_t *camHal = (camera_hardware_t *)device->priv; 1460ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed param = &(camHal->parameters); 1470ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 1480ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return param; 1490ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 1500ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed#endif //mzhu 1510ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1520ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedextern "C" int get_number_of_cameras() 1530ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 1540ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed /* try to query every time we get the call!*/ 1550ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1560ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 1570ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return android::HAL_getNumberOfCameras( ); 1580ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 1590ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1600ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedextern "C" int get_camera_info(int camera_id, struct camera_info *info) 1610ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 1620ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 1630ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 1640ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(info) { 1650ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed struct CameraInfo camInfo; 1660ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed memset(&camInfo, -1, sizeof (struct CameraInfo)); 1670ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed android::HAL_getCameraInfo(camera_id, &camInfo); 1680ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if (camInfo.facing >= 0) { 1690ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = 0; 1700ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed info->facing = camInfo.facing; 1710ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed info->orientation = camInfo.orientation; 1720ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 1730ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 1740ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGV("Q%s: X", __func__); 1750ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 1760ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 1770ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1780ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1790ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed/* HAL should return NULL if it fails to open camera hardware. */ 1800ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedextern "C" int camera_device_open( 1810ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed const struct hw_module_t* module, const char* id, 1820ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed struct hw_device_t** hw_device) 1830ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 1840ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 1850ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int mode = 0; // TODO: need to add 3d/2d mode, etc 1860ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_device *device = NULL; 1870ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(module && id && hw_device) { 1880ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int cameraId = atoi(id); 1890ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 1900ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if (!strcmp(module->name, camera_common.name)) { 1910ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_hardware_t *camHal = 1920ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed (camera_hardware_t *) malloc(sizeof (camera_hardware_t)); 1930ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(!camHal) { 1940ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed *hw_device = NULL; 1950ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("%s: end in no mem", __func__); 1960ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 1970ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 1980ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed /* we have the camera_hardware obj malloced */ 1990ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed memset(camHal, 0, sizeof (camera_hardware_t)); 2000ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camHal->hardware = new QCameraHardwareInterface(cameraId, mode); //HAL_openCameraHardware(cameraId); 2010ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if (camHal->hardware && camHal->hardware->isCameraReady()) { 2020ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camHal->cameraId = cameraId; 2030ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed device = &camHal->hw_dev; 2040ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed device->common.close = close_camera_device; 2050ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed device->ops = &camera_ops; 2060ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed device->priv = (void *)camHal; 2070ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = 0; 2080ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } else { 2090ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if (camHal->hardware) { 2100ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed delete camHal->hardware; 2110ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camHal->hardware = NULL; 2120ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2130ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed free(camHal); 2140ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed device = NULL; 2150ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2160ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2170ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2180ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed /* pass actual hw_device ptr to framework. This amkes that we actally be use memberof() macro */ 2190ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed *hw_device = (hw_device_t*)&device->common; 2200ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("%s: end rc %d", __func__, rc); 2210ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 2220ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2230ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2240ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedextern "C" int close_camera_device( hw_device_t *hw_dev) 2250ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2260ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: device =%p E", __func__, hw_dev); 2270ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 2280ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_device_t *device = (camera_device_t *)hw_dev; 2290ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2300ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(device) { 2310ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_hardware_t *camHal = (camera_hardware_t *)device->priv; 2320ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(camHal ) { 2330ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj( device); 2340ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(!camHal->camera_released) { 2350ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL) { 2360ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->release( ); 2370ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2380ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2390ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL) 2400ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed delete hardware; 2410ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed free(camHal); 2420ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2430ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = 0; 2440ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2450ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 2460ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2470ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2480ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2490ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint set_preview_window(struct camera_device * device, 2500ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed struct preview_stream_ops *window) 2510ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2520ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 2530ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 2540ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2550ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL) { 2560ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->setPreviewWindow(window); 2570ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2580ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 2590ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2600ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2610ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid set_CallBacks(struct camera_device * device, 2620ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_notify_callback notify_cb, 2630ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_data_callback data_cb, 2640ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_data_timestamp_callback data_cb_timestamp, 2650ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_request_memory get_memory, 2660ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed void *user) 2670ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2680ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 2690ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 2700ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 2710ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->setCallbacks(notify_cb,data_cb, data_cb_timestamp, get_memory, user); 2720ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2730ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2740ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2750ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid enable_msg_type(struct camera_device * device, int32_t msg_type) 2760ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2770ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 2780ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 2790ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->enableMsgType(msg_type); 2800ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2810ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2820ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2830ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid disable_msg_type(struct camera_device * device, int32_t msg_type) 2840ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2850ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 2860ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 2870ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 2880ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->disableMsgType(msg_type); 2890ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 2900ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 2910ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 2920ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint msg_type_enabled(struct camera_device * device, int32_t msg_type) 2930ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 2940ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 2950ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 2960ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 2970ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 2980ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->msgTypeEnabled(msg_type); 2990ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3000ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3010ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3020ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3030ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint start_preview(struct camera_device * device) 3040ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3050ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3060ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3070ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3080ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3090ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->startPreview( ); 3100ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3110ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: X", __func__); 3120ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3130ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3140ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3150ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid stop_preview(struct camera_device * device) 3160ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3170ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3180ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3190ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3200ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->stopPreview( ); 3210ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3220ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3230ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3240ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint preview_enabled(struct camera_device * device) 3250ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3260ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3270ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3280ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3290ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3300ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->previewEnabled( ); 3310ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3320ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3330ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3340ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3350ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint store_meta_data_in_buffers(struct camera_device * device, int enable) 3360ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3370ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3380ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3390ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3400ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3410ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->storeMetaDataInBuffers(enable); 3420ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3430ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3440ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3450ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3460ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint start_recording(struct camera_device * device) 3470ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3480ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3490ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3500ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3510ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3520ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->startRecording( ); 3530ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3540ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3550ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3560ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3570ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid stop_recording(struct camera_device * device) 3580ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3590ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3600ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3610ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3620ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->stopRecording( ); 3630ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3640ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3650ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3660ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint recording_enabled(struct camera_device * device) 3670ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3680ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3690ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3700ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3710ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3720ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->recordingEnabled( ); 3730ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3740ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3750ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3760ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3770ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid release_recording_frame(struct camera_device * device, 3780ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed const void *opaque) 3790ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3800ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGV("Q%s: E", __func__); 3810ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3820ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3830ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->releaseRecordingFrame(opaque); 3840ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3850ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3860ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3870ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint auto_focus(struct camera_device * device) 3880ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 3890ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 3900ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 3910ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 3920ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 3930ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->autoFocus( ); 3940ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 3950ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 3960ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 3970ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 3980ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint cancel_auto_focus(struct camera_device * device) 3990ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4000ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4010ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4020ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4030ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4040ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->cancelAutoFocus( ); 4050ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4060ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 4070ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4080ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4090ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint take_picture(struct camera_device * device) 4100ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4110ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4120ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4130ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4140ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4150ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->takePicture( ); 4160ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4170ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 4180ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4190ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4200ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint cancel_picture(struct camera_device * device) 4210ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4220ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4230ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4240ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4250ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4260ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4270ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->cancelPicture( ); 4280ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4290ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 4300ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4310ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4320ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint set_parameters(struct camera_device * device, const char *parms) 4330ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4340ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4350ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4360ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4370ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4380ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL && parms){ 4390ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //CameraParameters param;// = util_get_HAL_parameter(device); 4400ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //String8 str = String8(parms); 4410ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4420ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //param.unflatten(str); 4430ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->setParameters(parms); 4440ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //rc = 0; 4450ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4460ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 4470ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4480ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4490ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedchar* get_parameters(struct camera_device * device) 4500ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4510ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4520ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4530ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4540ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed char *parms = NULL; 4550ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->getParameters(&parms); 4560ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return parms; 4570ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4580ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return NULL; 4590ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4600ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4610ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid put_parameters(struct camera_device * device, char *parm) 4620ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4630ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4640ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4650ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4660ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4670ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->putParameters(parm); 4680ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4690ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4700ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4710ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint send_command(struct camera_device * device, 4720ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int32_t cmd, int32_t arg1, int32_t arg2) 4730ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4740ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4750ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4760ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4770ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4780ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->sendCommand( cmd, arg1, arg2); 4790ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4800ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 4810ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4820ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4830ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedvoid release(struct camera_device * device) 4840ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4850ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4860ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4870ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 4880ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camera_hardware_t *camHal = (camera_hardware_t *)device->priv; 4890ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed hardware->release( ); 4900ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed camHal->camera_released = true; 4910ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 4920ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 4930ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 4940ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syedint dump(struct camera_device * device, int fd) 4950ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed{ 4960ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed LOGE("Q%s: E", __func__); 4970ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed int rc = -1; 4980ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed QCameraHardwareInterface *hardware = util_get_Hal_obj(device); 4990ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed if(hardware != NULL){ 5000ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed rc = hardware->dump( fd ); 5010ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed //rc = 0; 5020ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed } 5030ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed return rc; 5040ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed} 5050ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed 5060ac1f42da2fc99003156c512fcea3fc6338912ceAzam Sadiq Pasha Kapatrala Syed}; // namespace android 507