diff options
Diffstat (limited to 'camera/QCamera2/HAL/QCamera2HWI.h')
| -rw-r--r-- | camera/QCamera2/HAL/QCamera2HWI.h | 670 |
1 files changed, 0 insertions, 670 deletions
diff --git a/camera/QCamera2/HAL/QCamera2HWI.h b/camera/QCamera2/HAL/QCamera2HWI.h deleted file mode 100644 index fe24f0b..0000000 --- a/camera/QCamera2/HAL/QCamera2HWI.h +++ /dev/null @@ -1,670 +0,0 @@ -/* Copyright (c) 2012-2014, The Linux Foundataion. 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. - * - */ - -#ifndef __QCAMERA2HARDWAREINTERFACE_H__ -#define __QCAMERA2HARDWAREINTERFACE_H__ - -#include <hardware/camera.h> -#include <hardware/power.h> -#include <utils/Log.h> -#include <utils/Mutex.h> -#include <utils/Condition.h> -#include <QCameraParameters.h> - -#include "QCameraQueue.h" -#include "QCameraCmdThread.h" -#include "QCameraChannel.h" -#include "QCameraStream.h" -#include "QCameraStateMachine.h" -#include "QCameraAllocator.h" -#include "QCameraPostProc.h" -#include "QCameraThermalAdapter.h" -#include "QCameraMem.h" -#include "cam_intf.h" -#ifdef TARGET_TS_MAKEUP -#include "ts_makeup_engine.h" -#include "ts_detectface_engine.h" -#endif -extern "C" { -#include <mm_camera_interface.h> -#include <mm_jpeg_interface.h> -} - -#if DISABLE_DEBUG_LOG - -inline void __null_log(int, const char *, const char *, ...) {} - -#ifdef ALOGD -#undef ALOGD -#define ALOGD(...) do { __null_log(0, LOG_TAG,__VA_ARGS__); } while (0) -#endif - -#ifdef ALOGI -#undef ALOGI -#define ALOGI(...) do { __null_log(0, LOG_TAG,__VA_ARGS__); } while (0) -#endif - -#ifdef CDBG -#undef CDBG -#define CDBG(...) do{} while(0) -#endif - -#else - -#ifdef CDBG -#undef CDBG -#endif //#ifdef CDBG -#define CDBG(fmt, args...) ALOGD_IF(gCamHalLogLevel >= 2, fmt, ##args) - -#ifdef CDBG_HIGH -#undef CDBG_HIGH -#endif //#ifdef CDBG_HIGH -#define CDBG_HIGH(fmt, args...) ALOGD_IF(gCamHalLogLevel >= 1, fmt, ##args) - -#endif // DISABLE_DEBUG_LOG - -namespace qcamera { - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -typedef enum { - QCAMERA_CH_TYPE_ZSL, - QCAMERA_CH_TYPE_CAPTURE, - QCAMERA_CH_TYPE_PREVIEW, - QCAMERA_CH_TYPE_VIDEO, - QCAMERA_CH_TYPE_SNAPSHOT, - QCAMERA_CH_TYPE_RAW, - QCAMERA_CH_TYPE_METADATA, - QCAMERA_CH_TYPE_MAX -} qcamera_ch_type_enum_t; - -typedef struct { - int32_t msg_type; - int32_t ext1; - int32_t ext2; -} qcamera_evt_argm_t; - -#define QCAMERA_DUMP_FRM_PREVIEW 1 -#define QCAMERA_DUMP_FRM_VIDEO (1<<1) -#define QCAMERA_DUMP_FRM_SNAPSHOT (1<<2) -#define QCAMERA_DUMP_FRM_THUMBNAIL (1<<3) -#define QCAMERA_DUMP_FRM_RAW (1<<4) -#define QCAMERA_DUMP_FRM_JPEG (1<<5) - -#define QCAMERA_DUMP_FRM_MASK_ALL 0x000000ff - -#define QCAMERA_ION_USE_CACHE true -#define QCAMERA_ION_USE_NOCACHE false -#define MAX_ONGOING_JOBS 25 -#define QCAMERA_MAX_FILEPATH_LENGTH 50 - -extern volatile uint32_t gCamHalLogLevel; - -/** IMG_SWAP - * @a: input a - * @b: input b - * - * Swaps the input values - **/ -#define IMG_SWAP(a, b) ({typeof(a) c; c=a; a=b; b=c;}) - -typedef enum { - QCAMERA_NOTIFY_CALLBACK, - QCAMERA_DATA_CALLBACK, - QCAMERA_DATA_TIMESTAMP_CALLBACK, - QCAMERA_DATA_SNAPSHOT_CALLBACK -} qcamera_callback_type_m; - -typedef void (*camera_release_callback)(void *user_data, - void *cookie, - int32_t cb_status); - -typedef struct { - qcamera_callback_type_m cb_type; // event type - int32_t msg_type; // msg type - int32_t ext1; // extended parameter - int32_t ext2; // extended parameter - camera_memory_t * data; // ptr to data memory struct - unsigned int index; // index of the buf in the whole buffer - int64_t timestamp; // buffer timestamp - camera_frame_metadata_t *metadata; // meta data - void *user_data; // any data needs to be released after callback - void *cookie; // release callback cookie - camera_release_callback release_cb; // release callback -} qcamera_callback_argm_t; - -typedef struct { - cam_dimension_t all_preview_sizes[MAX_SIZES_CNT]; - size_t all_preview_sizes_cnt; - cam_dimension_t all_video_sizes[MAX_SIZES_CNT]; - size_t all_video_sizes_cnt; -} qcamera_saved_sizes_list; - -class QCameraCbNotifier { -public: - QCameraCbNotifier(QCamera2HardwareInterface *parent) : - mNotifyCb (NULL), - mDataCb (NULL), - mDataCbTimestamp (NULL), - mCallbackCookie (NULL), - mParent (parent), - mDataQ(releaseNotifications, this), - mActive(false){} - - virtual ~QCameraCbNotifier(); - - virtual int32_t notifyCallback(qcamera_callback_argm_t &cbArgs); - virtual void setCallbacks(camera_notify_callback notifyCb, - camera_data_callback dataCb, - camera_data_timestamp_callback dataCbTimestamp, - void *callbackCookie); - virtual int32_t startSnapshots(); - virtual void stopSnapshots(); - virtual void exit(); - static void * cbNotifyRoutine(void * data); - static void releaseNotifications(void *data, void *user_data); - static bool matchSnapshotNotifications(void *data, void *user_data); -private: - - camera_notify_callback mNotifyCb; - camera_data_callback mDataCb; - camera_data_timestamp_callback mDataCbTimestamp; - void *mCallbackCookie; - QCamera2HardwareInterface *mParent; - - QCameraQueue mDataQ; - QCameraCmdThread mProcTh; - bool mActive; -}; - -class QCamera2HardwareInterface : public QCameraAllocator, - public QCameraThermalCallback, - public QCameraAdjustFPS, - public QCameraTorchInterface -{ -public: - /* static variable and functions accessed by camera service */ - static camera_device_ops_t mCameraOps; - - static int set_preview_window(struct camera_device *, - struct preview_stream_ops *window); - static void set_CallBacks(struct camera_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); - static void enable_msg_type(struct camera_device *, int32_t msg_type); - static void disable_msg_type(struct camera_device *, int32_t msg_type); - static int msg_type_enabled(struct camera_device *, int32_t msg_type); - static int start_preview(struct camera_device *); - static void stop_preview(struct camera_device *); - static int preview_enabled(struct camera_device *); - static int store_meta_data_in_buffers(struct camera_device *, int enable); - static int start_recording(struct camera_device *); - static void stop_recording(struct camera_device *); - static int recording_enabled(struct camera_device *); - static void release_recording_frame(struct camera_device *, const void *opaque); - static int auto_focus(struct camera_device *); - static int cancel_auto_focus(struct camera_device *); - static int take_picture(struct camera_device *); - int takeLiveSnapshot_internal(); - int takeBackendPic_internal(bool *JpegMemOpt); - void checkIntPicPending(bool JpegMemOpt); - static int cancel_picture(struct camera_device *); - static int set_parameters(struct camera_device *, const char *parms); - static char* get_parameters(struct camera_device *); - static void put_parameters(struct camera_device *, char *); - static int send_command(struct camera_device *, - int32_t cmd, int32_t arg1, int32_t arg2); - static void release(struct camera_device *); - static int dump(struct camera_device *, int fd); - static int close_camera_device(hw_device_t *); - - static int register_face_image(struct camera_device *, - void *img_ptr, - cam_pp_offline_src_config_t *config); -public: - QCamera2HardwareInterface(uint32_t cameraId); - virtual ~QCamera2HardwareInterface(); - int openCamera(struct hw_device_t **hw_device); - - static int getCapabilities(uint32_t cameraId, struct camera_info *info); - static int initCapabilities(uint32_t cameraId, mm_camera_vtbl_t *cameraHandle); - - // Implementation of QCameraAllocator - virtual QCameraMemory *allocateStreamBuf(cam_stream_type_t stream_type, - size_t size, int stride, int scanline, uint8_t &bufferCnt); - virtual int32_t allocateMoreStreamBuf(QCameraMemory *mem_obj, - size_t size, uint8_t &bufferCnt); - - virtual QCameraHeapMemory *allocateStreamInfoBuf(cam_stream_type_t stream_type); - - // Implementation of QCameraThermalCallback - virtual int thermalEvtHandle(qcamera_thermal_level_enum_t level, - void *userdata, void *data); - - virtual int recalcFPSRange(int &minFPS, int &maxFPS, - cam_fps_range_t &adjustedRange); - - // Implementation of QCameraTorchInterface - virtual int prepareTorchCamera(); - virtual int releaseTorchCamera(); - - friend class QCameraStateMachine; - friend class QCameraPostProcessor; - friend class QCameraCbNotifier; - -private: - int setPreviewWindow(struct preview_stream_ops *window); - int setCallBacks( - camera_notify_callback notify_cb, - camera_data_callback data_cb, - camera_data_timestamp_callback data_cb_timestamp, - camera_request_memory get_memory, - void *user); - int enableMsgType(int32_t msg_type); - int disableMsgType(int32_t msg_type); - int msgTypeEnabled(int32_t msg_type); - int msgTypeEnabledWithLock(int32_t msg_type); - int startPreview(); - int stopPreview(); - int storeMetaDataInBuffers(int enable); - int startRecording(); - int stopRecording(); - int releaseRecordingFrame(const void *opaque); - int autoFocus(); - int cancelAutoFocus(); - int takePicture(); - int stopCaptureChannel(bool destroy); - int cancelPicture(); - int takeLiveSnapshot(); - int takePictureInternal(); - int cancelLiveSnapshot(); - char* getParameters(); - int putParameters(char *); - int sendCommand(int32_t cmd, int32_t &arg1, int32_t &arg2); - int release(); - int dump(int fd); - int registerFaceImage(void *img_ptr, - cam_pp_offline_src_config_t *config, - int32_t &faceID); - int32_t longShot(); - - int openCamera(); - int closeCamera(); - - int processAPI(qcamera_sm_evt_enum_t api, void *api_payload); - int processEvt(qcamera_sm_evt_enum_t evt, void *evt_payload); - int processSyncEvt(qcamera_sm_evt_enum_t evt, void *evt_payload); - void lockAPI(); - void waitAPIResult(qcamera_sm_evt_enum_t api_evt, qcamera_api_result_t *apiResult); - void unlockAPI(); - void signalAPIResult(qcamera_api_result_t *result); - void signalEvtResult(qcamera_api_result_t *result); - - int calcThermalLevel(qcamera_thermal_level_enum_t level, - const int minFPSi, const int maxFPSi, cam_fps_range_t &adjustedRange, - enum msm_vfe_frame_skip_pattern &skipPattern); - int updateThermalLevel(qcamera_thermal_level_enum_t level); - - // update entris to set parameters and check if restart is needed - int updateParameters(const char *parms, bool &needRestart); - // send request to server to set parameters - int commitParameterChanges(); - - bool needDebugFps(); - bool isRegularCapture(); - bool needAdjustFPS(); - bool isCACEnabled(); - bool isPreviewRestartEnabled(); - bool is4k2kResolution(cam_dimension_t* resolution); - bool isCaptureShutterEnabled(); - bool isAFRunning(); - cam_pp_feature_config_t getReprocessConfig(); - bool needReprocess(); - bool needDualReprocess(); - bool needRotationReprocess(); - bool needScaleReprocess(); - void debugShowVideoFPS(); - void debugShowPreviewFPS(); - void dumpJpegToFile(const void *data, size_t size, uint32_t index); - void dumpFrameToFile(QCameraStream *stream, - mm_camera_buf_def_t *frame, uint32_t dump_type); - void dumpMetadataToFile(QCameraStream *stream, - mm_camera_buf_def_t *frame,char *type); - void releaseSuperBuf(mm_camera_super_buf_t *super_buf); - void playShutter(); - void getThumbnailSize(cam_dimension_t &dim); - uint32_t getJpegQuality(); - uint32_t getJpegRotation(); - void getOrientation(); - inline int getFlash(){ return mFlash; } - inline int getFlashPresence(){ return mFlashPresence; } - inline int getRedeye(){ return mRedEye; } - inline bool getCancelAutoFocus(){ return mCancelAutoFocus; } - inline void setCancelAutoFocus(bool flag){ mCancelAutoFocus = flag; } - QCameraExif *getExifData(); - cam_sensor_t getSensorType(); - - int32_t processAutoFocusEvent(cam_auto_focus_data_t &focus_data); - int32_t processZoomEvent(cam_crop_data_t &crop_info); - int32_t processPrepSnapshotDoneEvent(cam_prep_snapshot_state_t prep_snapshot_state); - int32_t processASDUpdate(cam_auto_scene_t scene); - int32_t processJpegNotify(qcamera_jpeg_evt_payload_t *jpeg_job); - int32_t processHDRData(cam_asd_hdr_scene_data_t hdr_scene); - int32_t transAwbMetaToParams(cam_awb_params_t &awb_params); - int32_t processAWBUpdate(cam_awb_params_t &awb_params); - int32_t processFocusPositionInfo(cam_focus_pos_info_t &cur_pos_info); - int32_t processAEInfo(cam_ae_params_t &ae_params); - - int32_t sendEvtNotify(int32_t msg_type, int32_t ext1, int32_t ext2); - int32_t sendDataNotify(int32_t msg_type, - camera_memory_t *data, - uint8_t index, - camera_frame_metadata_t *metadata); - - int32_t sendPreviewCallback(QCameraStream *stream, - QCameraGrallocMemory *memory, uint32_t idx); - - int32_t addChannel(qcamera_ch_type_enum_t ch_type); - int32_t startChannel(qcamera_ch_type_enum_t ch_type); - int32_t stopChannel(qcamera_ch_type_enum_t ch_type); - int32_t delChannel(qcamera_ch_type_enum_t ch_type, bool destroy = true); - int32_t addPreviewChannel(); - int32_t addSnapshotChannel(); - int32_t addVideoChannel(); - int32_t addZSLChannel(); - int32_t addCaptureChannel(); - int32_t addRawChannel(); - int32_t addMetaDataChannel(); - QCameraReprocessChannel *addReprocChannel(QCameraChannel *pInputChannel); - QCameraReprocessChannel *addDualReprocChannel(QCameraChannel *pInputChannel); - QCameraReprocessChannel *addOfflineReprocChannel( - cam_pp_offline_src_config_t &img_config, - cam_pp_feature_config_t &pp_feature, - stream_cb_routine stream_cb, - void *userdata); - int32_t addStreamToChannel(QCameraChannel *pChannel, - cam_stream_type_t streamType, - stream_cb_routine streamCB, - void *userData); - int32_t preparePreview(); - void unpreparePreview(); - int32_t prepareRawStream(QCameraChannel *pChannel); - QCameraChannel *getChannelByHandle(uint32_t channelHandle); - mm_camera_buf_def_t *getSnapshotFrame(mm_camera_super_buf_t *recvd_frame); - int32_t processFaceDetectionResult(cam_face_detection_data_t *fd_data); - bool needPreviewFDCallback(uint8_t num_faces); - int32_t processHistogramStats(cam_hist_stats_t &stats_data); - int32_t setHistogram(bool histogram_en); - int32_t setFaceDetection(bool enabled); - int32_t prepareHardwareForSnapshot(int32_t afNeeded); - bool needProcessPreviewFrame(); - bool isNoDisplayMode() {return mParameters.isNoDisplayMode();}; - bool isZSLMode() {return mParameters.isZSLMode();}; - bool isHFRMode() {return mParameters.isHfrMode();}; - uint8_t numOfSnapshotsExpected() { - return (uint8_t) ((mParameters.isMTFRefocus()) ? - 1 : mParameters.getNumOfSnapshots()); - }; - bool isLongshotEnabled() { return mLongshotEnabled; }; - uint8_t getBufNumRequired(cam_stream_type_t stream_type); - bool needFDMetadata(qcamera_ch_type_enum_t channel_type); - bool removeSizeFromList(cam_dimension_t* size_list, size_t length, - cam_dimension_t size); - int32_t unconfigureAdvancedCapture(); - int32_t configureAdvancedCapture(); - int32_t configureAFBracketing(bool enable = true); - int32_t configureMTFBracketing(bool enable = true); - int32_t configureFlashBracketing(bool enable = true); - int32_t stopAdvancedCapture(QCameraPicChannel *pChannel); - int32_t startAdvancedCapture(QCameraPicChannel *pChannel); - int32_t configureZSLHDRBracketing(); - int32_t startZslAdvancedCapture(QCameraPicChannel *pChannel); - int32_t configureOptiZoom(); - int32_t configureFssr(); - int32_t configureAEBracketing(); - inline void setOutputImageCount(uint32_t aCount) {mOutputCount = aCount;} - inline uint32_t getOutputImageCount() {return mOutputCount;} - inline void setInputImageCount(uint32_t aCount) {mInputCount = aCount;} - bool processMTFDumps(qcamera_jpeg_evt_payload_t *evt); - void captureDone(); - static void copyList(cam_dimension_t* src_list, cam_dimension_t* dst_list, - size_t len); - static void camEvtHandle(uint32_t camera_handle, - mm_camera_event_t *evt, - void *user_data); - static void jpegEvtHandle(jpeg_job_status_t status, - uint32_t client_hdl, - uint32_t jobId, - mm_jpeg_output_t *p_buf, - void *userdata); - - static void *evtNotifyRoutine(void *data); - - // functions for different data notify cb - static void zsl_channel_cb(mm_camera_super_buf_t *recvd_frame, void *userdata); - static void capture_channel_cb_routine(mm_camera_super_buf_t *recvd_frame, - void *userdata); - static void postproc_channel_cb_routine(mm_camera_super_buf_t *recvd_frame, - void *userdata); - static void dual_reproc_channel_cb_routine(mm_camera_super_buf_t *recvd_frame, - void *userdata); - static void nodisplay_preview_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void preview_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void postview_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void video_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void snapshot_channel_cb_routine(mm_camera_super_buf_t *frame, - void *userdata); - static void raw_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void preview_raw_stream_cb_routine(mm_camera_super_buf_t * super_frame, - QCameraStream * stream, - void * userdata); - static void snapshot_raw_stream_cb_routine(mm_camera_super_buf_t * super_frame, - QCameraStream * stream, - void * userdata); - static void metadata_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - static void reprocess_stream_cb_routine(mm_camera_super_buf_t *frame, - QCameraStream *stream, - void *userdata); - - static void releaseCameraMemory(void *data, - void *cookie, - int32_t cbStatus); - static void returnStreamBuffer(void *data, - void *cookie, - int32_t cbStatus); - static void getLogLevel(); - -private: - camera_device_t mCameraDevice; - uint32_t mCameraId; - mm_camera_vtbl_t *mCameraHandle; - bool mCameraOpened; - - preview_stream_ops_t *mPreviewWindow; - QCameraParameters mParameters; - int32_t mMsgEnabled; - int mStoreMetaDataInFrame; - - camera_notify_callback mNotifyCb; - camera_data_callback mDataCb; - camera_data_timestamp_callback mDataCbTimestamp; - camera_request_memory mGetMemory; - void *mCallbackCookie; - - QCameraStateMachine m_stateMachine; // state machine - QCameraPostProcessor m_postprocessor; // post processor - QCameraThermalAdapter &m_thermalAdapter; - QCameraCbNotifier m_cbNotifier; - pthread_mutex_t m_lock; - pthread_cond_t m_cond; - api_result_list *m_apiResultList; - QCameraMemoryPool m_memoryPool; - - pthread_mutex_t m_evtLock; - pthread_cond_t m_evtCond; - qcamera_api_result_t m_evtResult; - - pthread_mutex_t m_parm_lock; - - QCameraChannel *m_channels[QCAMERA_CH_TYPE_MAX]; // array holding channel ptr - - bool m_bShutterSoundPlayed; // if shutter sound had been played - bool m_bPreviewStarted; //flag indicates first preview frame callback is received - bool m_bRecordStarted; //flag indicates Recording is started for first time - - - // if auto focus is running, in other words, when auto_focus is called from service, - // and beforeany focus callback/cancel_focus happens. This flag is not an indication - // of whether lens is moving or not. - bool m_bAutoFocusRunning; - cam_autofocus_state_t m_currentFocusState; - - power_module_t *m_pPowerModule; // power module - - uint32_t mDumpFrmCnt; // frame dump count - uint32_t mDumpSkipCnt; // frame skip count - mm_jpeg_exif_params_t mExifParams; - qcamera_thermal_level_enum_t mThermalLevel; - bool mCancelAutoFocus; - bool mActiveAF; - bool m_HDRSceneEnabled; - bool mLongshotEnabled; - int32_t m_max_pic_width; - int32_t m_max_pic_height; - pthread_t mLiveSnapshotThread; - pthread_t mIntPicThread; - bool mFlashNeeded; - uint32_t mCaptureRotation; - uint32_t mJpegExifRotation; - bool mUseJpegExifRotation; - int32_t mFlash; - int32_t mRedEye; - int32_t mFlashPresence; - bool mIs3ALocked; - bool mPrepSnapRun; - int32_t mZoomLevel; - - //eztune variables for communication with eztune server at backend - bool m_bIntEvtPending; - char m_BackendFileName[QCAMERA_MAX_FILEPATH_LENGTH]; - size_t mBackendFileSize; - pthread_mutex_t m_int_lock; - pthread_cond_t m_int_cond; - - enum DefferedWorkCmd { - CMD_DEFF_ALLOCATE_BUFF, - CMD_DEFF_PPROC_START, - CMD_DEFF_MAX - }; - - typedef struct { - QCameraChannel *ch; - cam_stream_type_t type; - } DefferAllocBuffArgs; - - typedef union { - DefferAllocBuffArgs allocArgs; - QCameraChannel *pprocArgs; - } DefferWorkArgs; - - bool mDeffOngoingJobs[MAX_ONGOING_JOBS]; - - struct DeffWork - { - DeffWork(DefferedWorkCmd cmd, - uint32_t id, - DefferWorkArgs args) - : cmd(cmd), - id(id), - args(args){}; - - DefferedWorkCmd cmd; - uint32_t id; - DefferWorkArgs args; - }; - - QCameraCmdThread mDefferedWorkThread; - QCameraQueue mCmdQueue; - - Mutex mDeffLock; - Condition mDeffCond; - - int32_t queueDefferedWork(DefferedWorkCmd cmd, - DefferWorkArgs args); - int32_t waitDefferedWork(int32_t &job_id); - static void *defferedWorkRoutine(void *obj); - - int32_t mSnapshotJob; - int32_t mPostviewJob; - int32_t mMetadataJob; - int32_t mReprocJob; - int32_t mRawdataJob; - uint32_t mOutputCount; - uint32_t mInputCount; - bool mPreviewFrameSkipValid; - cam_frame_idx_range_t mPreviewFrameSkipIdxRange; - int32_t mNumPreviewFaces; - bool mAdvancedCaptureConfigured; - bool mFPSReconfigure; - //ts add for makeup -#ifdef TARGET_TS_MAKEUP - TSRect mFaceRect; - unsigned char *mMakeUpBuf; - int yuvDataRelocate(uint8_t* pSrcBuffer,uint8_t* pDstBuffer,cam_frame_len_offset_t offset); - int yuvDataRecover(uint8_t* pSrcBuffer,uint8_t* pDstBuffer,cam_frame_len_offset_t offset); - bool TsMakeupProcess_Preview(mm_camera_buf_def_t *pFrame,QCameraStream * pStream); - bool TsMakeupProcess_Snapshot(mm_camera_buf_def_t *pFrame,QCameraStream * pStream); - bool TsMakeupProcess(mm_camera_buf_def_t *frame,QCameraStream * stream,unsigned char *makeupOutBuf,TSRect& faceRect); -#endif -}; - -}; // namespace qcamera - -#endif /* __QCAMERA2HARDWAREINTERFACE_H__ */ |
