diff options
Diffstat (limited to 'camera/QCamera2/HAL/wrapper/QualcommCamera.cpp')
| -rw-r--r-- | camera/QCamera2/HAL/wrapper/QualcommCamera.cpp | 450 |
1 files changed, 0 insertions, 450 deletions
diff --git a/camera/QCamera2/HAL/wrapper/QualcommCamera.cpp b/camera/QCamera2/HAL/wrapper/QualcommCamera.cpp deleted file mode 100644 index 63aad49..0000000 --- a/camera/QCamera2/HAL/wrapper/QualcommCamera.cpp +++ /dev/null @@ -1,450 +0,0 @@ -/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of The Linux Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#define ALOG_NIDEBUG 0 -#define LOG_TAG "QualcommCamera" -#include <utils/Log.h> -#include <utils/threads.h> -#include <fcntl.h> -#include <sys/mman.h> -#include <binder/IMemory.h> -#include <binder/MemoryBase.h> -#include <binder/MemoryHeapBase.h> -#include <utils/RefBase.h> - -#include "QualcommCamera.h" -#include "QCamera2Factory.h" -#include "QCamera2HWI.h" - - -extern "C" { -#include <sys/time.h> -} - -/* HAL function implementation goes here*/ - -/** - * The functions need to be provided by the camera HAL. - * - * If getNumberOfCameras() returns N, the valid cameraId for getCameraInfo() - * and openCameraHardware() is 0 to N-1. - */ - - -static hw_module_methods_t camera_module_methods = { - open: camera_device_open, -}; - -static hw_module_t camera_common = { - tag: HARDWARE_MODULE_TAG, - module_api_version: CAMERA_MODULE_API_VERSION_1_0, - hal_api_version: HARDWARE_HAL_API_VERSION, - id: CAMERA_HARDWARE_MODULE_ID, - name: "QCamera Module", - author: "Quic on behalf of CAF", - methods: &camera_module_methods, - dso: NULL, - reserved: {0}, -}; - -using namespace qcamera; -namespace android { - -typedef struct { - camera_device hw_dev; - QCamera2HardwareInterface *hardware; - int camera_released; - int cameraId; -} camera_hardware_t; - -typedef struct { - camera_memory_t mem; - int32_t msgType; - sp<IMemory> dataPtr; - void* user; - unsigned int index; -} q_cam_memory_t; - -QCamera2HardwareInterface *util_get_Hal_obj( struct camera_device * device) -{ - QCamera2HardwareInterface *hardware = NULL; - if(device && device->priv){ - camera_hardware_t *camHal = (camera_hardware_t *)device->priv; - hardware = camHal->hardware; - } - return hardware; -} - -extern "C" int get_number_of_cameras() -{ - /* try to query every time we get the call!*/ - - CDBG_HIGH("Q%s: E", __func__); - return QCamera2Factory::get_number_of_cameras(); -} - -extern "C" int get_camera_info(int camera_id, struct camera_info *info) -{ - int rc = -1; - CDBG_HIGH("Q%s: E", __func__); - - if(info) { - QCamera2Factory::get_camera_info(camera_id, info); - } - CDBG("Q%s: X", __func__); - return rc; -} - - -/* HAL should return NULL if it fails to open camera hardware. */ -extern "C" int camera_device_open( - const struct hw_module_t* module, const char* id, - struct hw_device_t** hw_device) -{ - int rc = -1; - camera_device *device = NULL; - - if(module && id && hw_device) { - if (!strcmp(module->name, camera_common.name)) { - int cameraId = atoi(id); - - camera_hardware_t *camHal = - (camera_hardware_t *) malloc(sizeof (camera_hardware_t)); - if(!camHal) { - *hw_device = NULL; - ALOGE("%s: end in no mem", __func__); - return rc; - } - /* we have the camera_hardware obj malloced */ - memset(camHal, 0, sizeof (camera_hardware_t)); - camHal->hardware = new QCamera2HardwareInterface((uint32_t)cameraId); - if (camHal->hardware) { - camHal->cameraId = cameraId; - device = &camHal->hw_dev; - device->common.close = close_camera_device; - device->ops = &QCamera2HardwareInterface::mCameraOps; - device->priv = (void *)camHal; - rc = 0; - } else { - if (camHal->hardware) { - delete camHal->hardware; - camHal->hardware = NULL; - } - free(camHal); - device = NULL; - goto EXIT; - } - } - /* pass actual hw_device ptr to framework. This amkes that we actally be use memberof() macro */ - *hw_device = (hw_device_t*)&device->common; - } - -EXIT: - - ALOGE("%s: end rc %d", __func__, rc); - return rc; -} - -extern "C" int close_camera_device( hw_device_t *hw_dev) -{ - CDBG_HIGH("Q%s: device =%p E", __func__, hw_dev); - int rc = -1; - camera_device_t *device = (camera_device_t *)hw_dev; - - if(device) { - camera_hardware_t *camHal = (camera_hardware_t *)device->priv; - if(camHal ) { - QCamera2HardwareInterface *hardware = util_get_Hal_obj( device); - if(!camHal->camera_released) { - if(hardware != NULL) { - hardware->release(device); - } - } - if(hardware != NULL) - delete hardware; - free(camHal); - } - rc = 0; - } - return rc; -} - - -int set_preview_window(struct camera_device * device, - struct preview_stream_ops *window) -{ - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - - if(hardware != NULL) { - rc = hardware->set_preview_window(device, window); - } - return rc; -} - -void set_CallBacks(struct camera_device * device, - camera_notify_callback notify_cb, - camera_data_callback data_cb, - camera_data_timestamp_callback data_cb_timestamp, - camera_request_memory get_memory, - void *user) -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->set_CallBacks(device, notify_cb,data_cb, data_cb_timestamp, get_memory, user); - } -} - -void enable_msg_type(struct camera_device * device, int32_t msg_type) -{ - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->enable_msg_type(device, msg_type); - } -} - -void disable_msg_type(struct camera_device * device, int32_t msg_type) -{ - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - CDBG_HIGH("Q%s: E", __func__); - if(hardware != NULL){ - hardware->disable_msg_type(device, msg_type); - } -} - -int msg_type_enabled(struct camera_device * device, int32_t msg_type) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->msg_type_enabled(device, msg_type); - } - return rc; -} - -int start_preview(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->start_preview(device); - } - CDBG_HIGH("Q%s: X", __func__); - return rc; -} - -void stop_preview(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->stop_preview(device); - } -} - -int preview_enabled(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->preview_enabled(device); - } - return rc; -} - -int store_meta_data_in_buffers(struct camera_device * device, int enable) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->store_meta_data_in_buffers(device, enable); - } - return rc; -} - -int start_recording(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->start_recording(device); - } - return rc; -} - -void stop_recording(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->stop_recording(device); - } -} - -int recording_enabled(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->recording_enabled(device); - } - return rc; -} - -void release_recording_frame(struct camera_device * device, - const void *opaque) -{ - CDBG("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->release_recording_frame(device, opaque); - } -} - -int auto_focus(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->auto_focus(device); - } - return rc; -} - -int cancel_auto_focus(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->cancel_auto_focus(device); - } - return rc; -} - -int take_picture(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->take_picture(device); - } - return rc; -} - -int cancel_picture(struct camera_device * device) - -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->cancel_picture(device); - } - return rc; -} - -int set_parameters(struct camera_device * device, const char *parms) - -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL && parms){ - rc = hardware->set_parameters(device, parms); - } - return rc; -} - -char* get_parameters(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - char *parms = NULL; - parms = hardware->get_parameters(device); - return parms; - } - return NULL; -} - -void put_parameters(struct camera_device * device, char *parm) - -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - hardware->put_parameters(device, parm); - } -} - -int send_command(struct camera_device * device, - int32_t cmd, int32_t arg1, int32_t arg2) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->send_command(device, cmd, arg1, arg2); - } - return rc; -} - -void release(struct camera_device * device) -{ - CDBG_HIGH("Q%s: E", __func__); - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - camera_hardware_t *camHal = (camera_hardware_t *)device->priv; - hardware->release(device); - camHal->camera_released = true; - } -} - -int dump(struct camera_device * device, int fd) -{ - CDBG_HIGH("Q%s: E", __func__); - int rc = -1; - QCamera2HardwareInterface *hardware = util_get_Hal_obj(device); - if(hardware != NULL){ - rc = hardware->dump(device, fd); - } - return rc; -} - -}; // namespace android |
