summaryrefslogtreecommitdiff
path: root/camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
diff options
context:
space:
mode:
Diffstat (limited to 'camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h')
-rw-r--r--camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h665
1 files changed, 0 insertions, 665 deletions
diff --git a/camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h b/camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
deleted file mode 100644
index ac19f8c..0000000
--- a/camera/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
+++ /dev/null
@@ -1,665 +0,0 @@
-/* Copyright (c) 2012-2014, 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.
- *
- */
-
-#ifndef __MM_CAMERA_H__
-#define __MM_CAMERA_H__
-
-#include <cam_semaphore.h>
-
-#include "mm_camera_interface.h"
-#include <hardware/camera.h>
-/**********************************************************************************
-* Data structure declare
-***********************************************************************************/
-/* num of callbacks allowed for an event type */
-#define MM_CAMERA_EVT_ENTRY_MAX 4
-/* num of data callbacks allowed in a stream obj */
-#define MM_CAMERA_STREAM_BUF_CB_MAX 4
-/* num of data poll threads allowed in a channel obj */
-#define MM_CAMERA_CHANNEL_POLL_THREAD_MAX 1
-
-#define MM_CAMERA_DEV_NAME_LEN 32
-#define MM_CAMERA_DEV_OPEN_TRIES 2
-#define MM_CAMERA_DEV_OPEN_RETRY_SLEEP 20
-#define THREAD_NAME_SIZE 15
-
-#define MM_CAMERA_POST_FLASH_PREVIEW_SKIP_CNT 3
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
-
-struct mm_channel;
-struct mm_stream;
-struct mm_camera_obj;
-
-typedef enum
-{
- MM_CAMERA_CMD_TYPE_DATA_CB, /* dataB CMD */
- MM_CAMERA_CMD_TYPE_EVT_CB, /* evtCB CMD */
- MM_CAMERA_CMD_TYPE_EXIT, /* EXIT */
- MM_CAMERA_CMD_TYPE_REQ_DATA_CB,/* request data */
- MM_CAMERA_CMD_TYPE_SUPER_BUF_DATA_CB, /* superbuf dataB CMD */
- MM_CAMERA_CMD_TYPE_CONFIG_NOTIFY, /* configure notify mode */
- MM_CAMERA_CMD_TYPE_START_ZSL, /* start zsl snapshot for channel */
- MM_CAMERA_CMD_TYPE_STOP_ZSL, /* stop zsl snapshot for channel */
- MM_CAMERA_CMD_TYPE_FLUSH_QUEUE, /* flush queue */
- MM_CAMERA_CMD_TYPE_GENERAL, /* general cmd */
- MM_CAMERA_CMD_TYPE_MAX
-} mm_camera_cmdcb_type_t;
-
-typedef struct {
- uint32_t stream_id;
- uint32_t frame_idx;
- mm_camera_buf_def_t *buf; /* ref to buf */
-} mm_camera_buf_info_t;
-
-typedef struct {
- uint32_t num_buf_requested;
-} mm_camera_req_buf_t;
-
-typedef enum {
- MM_CAMERA_GENERIC_CMD_TYPE_AE_BRACKETING,
- MM_CAMERA_GENERIC_CMD_TYPE_AF_BRACKETING,
- MM_CAMERA_GENERIC_CMD_TYPE_FLASH_BRACKETING,
- MM_CAMERA_GENERIC_CMD_TYPE_MTF_BRACKETING,
- MM_CAMERA_GENERIC_CMD_TYPE_ZOOM_1X,
-} mm_camera_generic_cmd_type_t;
-
-typedef struct {
- mm_camera_generic_cmd_type_t type;
- uint32_t payload[32];
-} mm_camera_generic_cmd_t;
-
-typedef struct {
- uint32_t frame_idx;
- cam_stream_type_t stream_type;
-} mm_camera_flush_cmd_t;
-
-typedef struct {
- mm_camera_cmdcb_type_t cmd_type;
- union {
- mm_camera_buf_info_t buf; /* frame buf if dataCB */
- mm_camera_event_t evt; /* evt if evtCB */
- mm_camera_super_buf_t superbuf; /* superbuf if superbuf dataCB*/
- mm_camera_req_buf_t req_buf; /* num of buf requested */
- mm_camera_flush_cmd_t flush_cmd; /* frame idx boundary for flush superbuf queue*/
- mm_camera_super_buf_notify_mode_t notify_mode; /* notification mode */
- mm_camera_generic_cmd_t gen_cmd;
- } u;
-} mm_camera_cmdcb_t;
-
-typedef void (*mm_camera_cmd_cb_t)(mm_camera_cmdcb_t * cmd_cb, void* user_data);
-
-typedef struct {
- uint8_t is_active; /*indicates whether thread is active or not */
- cam_queue_t cmd_queue; /* cmd queue (queuing dataCB, asyncCB, or exitCMD) */
- pthread_t cmd_pid; /* cmd thread ID */
- cam_semaphore_t cmd_sem; /* semaphore for cmd thread */
- cam_semaphore_t sync_sem; /* semaphore for synchronization with cmd thread */
- mm_camera_cmd_cb_t cb; /* cb for cmd */
- void* user_data; /* user_data for cb */
- char threadName[THREAD_NAME_SIZE];
-} mm_camera_cmd_thread_t;
-
-typedef enum {
- MM_CAMERA_POLL_TYPE_EVT,
- MM_CAMERA_POLL_TYPE_DATA,
- MM_CAMERA_POLL_TYPE_MAX
-} mm_camera_poll_thread_type_t;
-
-/* function ptr defined for poll notify CB,
- * registered at poll thread with poll fd */
-typedef void (*mm_camera_poll_notify_t)(void *user_data);
-
-typedef struct {
- int32_t fd;
- mm_camera_poll_notify_t notify_cb;
- uint32_t handler;
- void* user_data;
-} mm_camera_poll_entry_t;
-
-typedef struct {
- mm_camera_poll_thread_type_t poll_type;
- /* array to store poll fd and cb info
- * for MM_CAMERA_POLL_TYPE_EVT, only index 0 is valid;
- * for MM_CAMERA_POLL_TYPE_DATA, depends on valid stream fd */
- mm_camera_poll_entry_t poll_entries[MAX_STREAM_NUM_IN_BUNDLE];
- int32_t pfds[2];
- pthread_t pid;
- int32_t state;
- int timeoutms;
- uint32_t cmd;
- struct pollfd poll_fds[MAX_STREAM_NUM_IN_BUNDLE + 1];
- uint8_t num_fds;
- pthread_mutex_t mutex;
- pthread_cond_t cond_v;
- int32_t status;
- char threadName[THREAD_NAME_SIZE];
- //void *my_obj;
-} mm_camera_poll_thread_t;
-
-/* mm_stream */
-typedef enum {
- MM_STREAM_STATE_NOTUSED = 0, /* not used */
- MM_STREAM_STATE_INITED, /* inited */
- MM_STREAM_STATE_ACQUIRED, /* acquired, fd opened */
- MM_STREAM_STATE_CFG, /* fmt & dim configured */
- MM_STREAM_STATE_BUFFED, /* buf allocated */
- MM_STREAM_STATE_REG, /* buf regged, stream off */
- MM_STREAM_STATE_ACTIVE, /* active */
- MM_STREAM_STATE_MAX
-} mm_stream_state_type_t;
-
-typedef enum {
- MM_STREAM_EVT_ACQUIRE,
- MM_STREAM_EVT_RELEASE,
- MM_STREAM_EVT_SET_FMT,
- MM_STREAM_EVT_GET_BUF,
- MM_STREAM_EVT_PUT_BUF,
- MM_STREAM_EVT_REG_BUF,
- MM_STREAM_EVT_UNREG_BUF,
- MM_STREAM_EVT_START,
- MM_STREAM_EVT_STOP,
- MM_STREAM_EVT_QBUF,
- MM_STREAM_EVT_SET_PARM,
- MM_STREAM_EVT_GET_PARM,
- MM_STREAM_EVT_DO_ACTION,
- MM_STREAM_EVT_GET_QUEUED_BUF_COUNT,
- MM_STREAM_EVT_MAX
-} mm_stream_evt_type_t;
-
-typedef struct {
- mm_camera_buf_notify_t cb;
- void *user_data;
- /* cb_count = -1: infinite
- * cb_count > 0: register only for required times */
- int8_t cb_count;
-} mm_stream_data_cb_t;
-
-typedef struct {
- /* buf reference count */
- uint8_t buf_refcnt;
-
- /* This flag is to indicate if after allocation,
- * the corresponding buf needs to qbuf into kernel
- * (e.g. for preview usecase, display needs to hold two bufs,
- * so no need to qbuf these two bufs initially) */
- uint8_t initial_reg_flag;
-
- /* indicate if buf is in kernel(1) or client(0) */
- uint8_t in_kernel;
-} mm_stream_buf_status_t;
-
-typedef struct mm_stream {
- uint32_t my_hdl; /* local stream id */
- uint32_t server_stream_id; /* stream id from server */
- int32_t fd;
- mm_stream_state_type_t state;
-
- /* stream info*/
- cam_stream_info_t *stream_info;
-
- /* padding info */
- cam_padding_info_t padding_info;
-
- /* offset */
- cam_frame_len_offset_t frame_offset;
-
- pthread_mutex_t cmd_lock; /* lock to protect cmd_thread */
- mm_camera_cmd_thread_t cmd_thread;
-
- /* dataCB registered on this stream obj */
- pthread_mutex_t cb_lock; /* cb lock to protect buf_cb */
- mm_stream_data_cb_t buf_cb[MM_CAMERA_STREAM_BUF_CB_MAX];
-
- /* stream buffer management */
- pthread_mutex_t buf_lock;
- uint8_t buf_num; /* num of buffers allocated */
- mm_camera_buf_def_t* buf; /* ptr to buf array */
- mm_stream_buf_status_t* buf_status; /* ptr to buf status array */
-
- /* reference to parent channel_obj */
- struct mm_channel* ch_obj;
-
- uint8_t is_bundled; /* flag if stream is bundled */
-
- /* reference to linked channel_obj */
- struct mm_channel* linked_obj;
- struct mm_stream * linked_stream; /* original stream */
- uint8_t is_linked; /* flag if stream is linked */
-
- mm_camera_stream_mem_vtbl_t mem_vtbl; /* mem ops tbl */
-
- int8_t queued_buffer_count;
-} mm_stream_t;
-
-/* mm_channel */
-typedef enum {
- MM_CHANNEL_STATE_NOTUSED = 0, /* not used */
- MM_CHANNEL_STATE_STOPPED, /* stopped */
- MM_CHANNEL_STATE_ACTIVE, /* active, at least one stream active */
- MM_CHANNEL_STATE_PAUSED, /* paused */
- MM_CHANNEL_STATE_MAX
-} mm_channel_state_type_t;
-
-typedef enum {
- MM_CHANNEL_EVT_ADD_STREAM,
- MM_CHANNEL_EVT_DEL_STREAM,
- MM_CHANNEL_EVT_LINK_STREAM,
- MM_CHANNEL_EVT_CONFIG_STREAM,
- MM_CHANNEL_EVT_GET_BUNDLE_INFO,
- MM_CHANNEL_EVT_START,
- MM_CHANNEL_EVT_STOP,
- MM_CHANNEL_EVT_PAUSE,
- MM_CHANNEL_EVT_RESUME,
- MM_CHANNEL_EVT_REQUEST_SUPER_BUF,
- MM_CHANNEL_EVT_CANCEL_REQUEST_SUPER_BUF,
- MM_CHANNEL_EVT_FLUSH_SUPER_BUF_QUEUE,
- MM_CHANNEL_EVT_CONFIG_NOTIFY_MODE,
- MM_CHANNEL_EVT_START_ZSL_SNAPSHOT,
- MM_CHANNEL_EVT_STOP_ZSL_SNAPSHOT,
- MM_CHANNEL_EVT_MAP_STREAM_BUF,
- MM_CHANNEL_EVT_UNMAP_STREAM_BUF,
- MM_CHANNEL_EVT_SET_STREAM_PARM,
- MM_CHANNEL_EVT_GET_STREAM_PARM,
- MM_CHANNEL_EVT_DO_STREAM_ACTION,
- MM_CHANNEL_EVT_DELETE,
- MM_CHANNEL_EVT_AF_BRACKETING,
- MM_CHANNEL_EVT_AE_BRACKETING,
- MM_CHANNEL_EVT_FLASH_BRACKETING,
- MM_CHANNEL_EVT_MTF_BRACKETING,
- MM_CHANNEL_EVT_ZOOM_1X,
- MM_CHANNEL_EVT_GET_STREAM_QUEUED_BUF_COUNT,
-} mm_channel_evt_type_t;
-
-typedef struct {
- uint32_t stream_id;
- mm_camera_stream_config_t *config;
-} mm_evt_paylod_config_stream_t;
-
-typedef struct {
- uint32_t stream_id;
- cam_stream_parm_buffer_t *parms;
-} mm_evt_paylod_set_get_stream_parms_t;
-
-typedef struct {
- uint32_t stream_id;
- void *actions;
-} mm_evt_paylod_do_stream_action_t;
-
-typedef struct {
- uint32_t stream_id;
- uint8_t buf_type;
- uint32_t buf_idx;
- int32_t plane_idx;
- int fd;
- size_t size;
-} mm_evt_paylod_map_stream_buf_t;
-
-typedef struct {
- uint32_t stream_id;
- uint8_t buf_type;
- uint32_t buf_idx;
- int32_t plane_idx;
-} mm_evt_paylod_unmap_stream_buf_t;
-
-typedef struct {
- uint8_t num_of_bufs;
- mm_camera_buf_info_t super_buf[MAX_STREAM_NUM_IN_BUNDLE];
- uint8_t matched;
- uint32_t frame_idx;
-} mm_channel_queue_node_t;
-
-typedef struct {
- cam_queue_t que;
- uint8_t num_streams;
- /* container for bundled stream handlers */
- uint32_t bundled_streams[MAX_STREAM_NUM_IN_BUNDLE];
- mm_camera_channel_attr_t attr;
- uint32_t expected_frame_id;
- uint32_t match_cnt;
- uint32_t expected_frame_id_without_led;
-} mm_channel_queue_t;
-
-typedef struct {
- uint8_t is_active; /* flag to indicate if bundle is valid */
- /* queue to store bundled super buffers */
- mm_channel_queue_t superbuf_queue;
- mm_camera_buf_notify_t super_buf_notify_cb;
- void *user_data;
-} mm_channel_bundle_t;
-
-typedef enum {
- MM_CHANNEL_BRACKETING_STATE_OFF,
- MM_CHANNEL_BRACKETING_STATE_WAIT_GOOD_FRAME_IDX,
- MM_CHANNEL_BRACKETING_STATE_ACTIVE,
-} mm_channel_bracketing_state_t;
-
-typedef struct mm_channel {
- uint32_t my_hdl;
- mm_channel_state_type_t state;
- pthread_mutex_t ch_lock; /* channel lock */
-
- /* stream bundle info in the channel */
- mm_channel_bundle_t bundle;
-
- /* num of pending suferbuffers */
- uint32_t pending_cnt;
-
- /* cmd thread for superbuffer dataCB and async stop*/
- mm_camera_cmd_thread_t cmd_thread;
-
- /* cb thread for sending data cb */
- mm_camera_cmd_thread_t cb_thread;
-
- /* data poll thread
- * currently one data poll thread per channel
- * could extended to support one data poll thread per stream in the channel */
- mm_camera_poll_thread_t poll_thread[MM_CAMERA_CHANNEL_POLL_THREAD_MAX];
-
- /* container for all streams in channel */
- mm_stream_t streams[MAX_STREAM_NUM_IN_BUNDLE];
-
- /* reference to parent cam_obj */
- struct mm_camera_obj* cam_obj;
-
- /* manual zsl snapshot control */
- uint8_t manualZSLSnapshot;
-
- /* control for zsl led */
- uint8_t startZSlSnapshotCalled;
- uint8_t needLEDFlash;
- uint8_t previewSkipCnt;
-
- mm_channel_bracketing_state_t bracketingState;
- uint8_t isFlashBracketingEnabled;
- uint8_t isZoom1xFrameRequested;
- char threadName[THREAD_NAME_SIZE];
-} mm_channel_t;
-
-typedef struct {
- mm_channel_t *ch;
- uint32_t stream_id;
-} mm_camera_stream_link_t;
-
-/* struct to store information about pp cookie*/
-typedef struct {
- uint32_t cam_hdl;
- uint32_t ch_hdl;
- uint32_t stream_hdl;
- mm_channel_queue_node_t* super_buf;
-} mm_channel_pp_info_t;
-
-/* mm_camera */
-typedef struct {
- mm_camera_event_notify_t evt_cb;
- void *user_data;
-} mm_camera_evt_entry_t;
-
-typedef struct {
- mm_camera_evt_entry_t evt[MM_CAMERA_EVT_ENTRY_MAX];
- /* reg_count <=0: infinite
- * reg_count > 0: register only for required times */
- int reg_count;
-} mm_camera_evt_obj_t;
-
-typedef struct mm_camera_obj {
- uint32_t my_hdl;
- int ref_count;
- int32_t ctrl_fd;
- int32_t ds_fd; /* domain socket fd */
- pthread_mutex_t cam_lock;
- pthread_mutex_t cb_lock; /* lock for evt cb */
- mm_channel_t ch[MM_CAMERA_CHANNEL_MAX];
- mm_camera_evt_obj_t evt;
- mm_camera_poll_thread_t evt_poll_thread; /* evt poll thread */
- mm_camera_cmd_thread_t evt_thread; /* thread for evt CB */
- mm_camera_vtbl_t vtbl;
-
- pthread_mutex_t evt_lock;
- pthread_cond_t evt_cond;
- mm_camera_event_t evt_rcvd;
-
- pthread_mutex_t msg_lock; /* lock for sending msg through socket */
-} mm_camera_obj_t;
-
-typedef struct {
- int8_t num_cam;
- char video_dev_name[MM_CAMERA_MAX_NUM_SENSORS][MM_CAMERA_DEV_NAME_LEN];
- mm_camera_obj_t *cam_obj[MM_CAMERA_MAX_NUM_SENSORS];
- struct camera_info info[MM_CAMERA_MAX_NUM_SENSORS];
-} mm_camera_ctrl_t;
-
-typedef enum {
- mm_camera_async_call,
- mm_camera_sync_call
-} mm_camera_call_type_t;
-
-/**********************************************************************************
-* external function declare
-***********************************************************************************/
-/* utility functions */
-/* set int32_t value */
-extern int32_t mm_camera_util_s_ctrl(int32_t fd,
- uint32_t id,
- int32_t *value);
-
-/* get int32_t value */
-extern int32_t mm_camera_util_g_ctrl(int32_t fd,
- uint32_t id,
- int32_t *value);
-
-/* send msg throught domain socket for fd mapping */
-extern int32_t mm_camera_util_sendmsg(mm_camera_obj_t *my_obj,
- void *msg,
- size_t buf_size,
- int sendfd);
-/* Check if hardware target is A family */
-uint8_t mm_camera_util_chip_is_a_family(void);
-
-/* mm-camera */
-extern int32_t mm_camera_open(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_close(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_register_event_notify(mm_camera_obj_t *my_obj,
- mm_camera_event_notify_t evt_cb,
- void * user_data);
-extern int32_t mm_camera_qbuf(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- mm_camera_buf_def_t *buf);
-extern int32_t mm_camera_get_queued_buf_count(mm_camera_obj_t *my_obj,
- uint32_t ch_id, uint32_t stream_id);
-extern int32_t mm_camera_query_capability(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_set_parms(mm_camera_obj_t *my_obj,
- void *parms);
-extern int32_t mm_camera_get_parms(mm_camera_obj_t *my_obj,
- void *parms);
-extern int32_t mm_camera_map_buf(mm_camera_obj_t *my_obj,
- uint8_t buf_type,
- int fd,
- size_t size);
-extern int32_t mm_camera_unmap_buf(mm_camera_obj_t *my_obj,
- uint8_t buf_type);
-extern int32_t mm_camera_do_auto_focus(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_cancel_auto_focus(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_prepare_snapshot(mm_camera_obj_t *my_obj,
- int32_t do_af_flag);
-extern int32_t mm_camera_start_zsl_snapshot(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_stop_zsl_snapshot(mm_camera_obj_t *my_obj);
-extern int32_t mm_camera_start_zsl_snapshot_ch(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_stop_zsl_snapshot_ch(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern uint32_t mm_camera_add_channel(mm_camera_obj_t *my_obj,
- mm_camera_channel_attr_t *attr,
- mm_camera_buf_notify_t channel_cb,
- void *userdata);
-extern int32_t mm_camera_del_channel(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_get_bundle_info(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- cam_bundle_config_t *bundle_info);
-extern uint32_t mm_camera_add_stream(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_del_stream(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id);
-extern uint32_t mm_camera_link_stream(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id,
- uint32_t linked_ch_id);
-extern int32_t mm_camera_config_stream(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id,
- mm_camera_stream_config_t *config);
-extern int32_t mm_camera_start_channel(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_stop_channel(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_request_super_buf(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t num_buf_requested);
-extern int32_t mm_camera_cancel_super_buf_request(mm_camera_obj_t *my_obj,
- uint32_t ch_id);
-extern int32_t mm_camera_flush_super_buf_queue(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t frame_idx);
-extern int32_t mm_camera_config_channel_notify(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- mm_camera_super_buf_notify_mode_t notify_mode);
-extern int32_t mm_camera_set_stream_parms(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t s_id,
- cam_stream_parm_buffer_t *parms);
-extern int32_t mm_camera_get_stream_parms(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t s_id,
- cam_stream_parm_buffer_t *parms);
-extern int32_t mm_camera_register_event_notify_internal(mm_camera_obj_t *my_obj,
- mm_camera_event_notify_t evt_cb,
- void * user_data);
-extern int32_t mm_camera_map_stream_buf(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id,
- uint8_t buf_type,
- uint32_t buf_idx,
- int32_t plane_idx,
- int fd,
- size_t size);
-extern int32_t mm_camera_unmap_stream_buf(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id,
- uint8_t buf_type,
- uint32_t buf_idx,
- int32_t plane_idx);
-extern int32_t mm_camera_do_stream_action(mm_camera_obj_t *my_obj,
- uint32_t ch_id,
- uint32_t stream_id,
- void *actions);
-
-/* mm_channel */
-extern int32_t mm_channel_fsm_fn(mm_channel_t *my_obj,
- mm_channel_evt_type_t evt,
- void * in_val,
- void * out_val);
-extern int32_t mm_channel_init(mm_channel_t *my_obj,
- mm_camera_channel_attr_t *attr,
- mm_camera_buf_notify_t channel_cb,
- void *userdata);
-/* qbuf is a special case that not going through state machine.
- * This is to avoid deadlock when trying to aquire ch_lock,
- * from the context of dataCB, but async stop is holding ch_lock */
-extern int32_t mm_channel_qbuf(mm_channel_t *my_obj,
- mm_camera_buf_def_t *buf);
-/* mm_stream */
-extern int32_t mm_stream_fsm_fn(mm_stream_t *my_obj,
- mm_stream_evt_type_t evt,
- void * in_val,
- void * out_val);
-/* Allow other stream to register dataCB at certain stream.
- * This is for use case of video sized live snapshot,
- * because snapshot stream need register one time CB at video stream.
- * ext_image_mode and sensor_idx are used to identify the destinate stream
- * to be register with dataCB. */
-extern int32_t mm_stream_reg_buf_cb(mm_stream_t *my_obj,
- mm_stream_data_cb_t *val);
-extern int32_t mm_stream_map_buf(mm_stream_t *my_obj,
- uint8_t buf_type,
- uint32_t frame_idx,
- int32_t plane_idx,
- int fd,
- size_t size);
-extern int32_t mm_stream_unmap_buf(mm_stream_t *my_obj,
- uint8_t buf_type,
- uint32_t frame_idx,
- int32_t plane_idx);
-
-
-/* utiltity fucntion declared in mm-camera-inteface2.c
- * and need be used by mm-camera and below*/
-uint32_t mm_camera_util_generate_handler(uint8_t index);
-const char * mm_camera_util_get_dev_name(uint32_t cam_handler);
-uint8_t mm_camera_util_get_index_by_handler(uint32_t handler);
-
-/* poll/cmd thread functions */
-extern int32_t mm_camera_poll_thread_launch(
- mm_camera_poll_thread_t * poll_cb,
- mm_camera_poll_thread_type_t poll_type);
-extern int32_t mm_camera_poll_thread_release(mm_camera_poll_thread_t *poll_cb);
-extern int32_t mm_camera_poll_thread_add_poll_fd(
- mm_camera_poll_thread_t * poll_cb,
- uint32_t handler,
- int32_t fd,
- mm_camera_poll_notify_t nofity_cb,
- void *userdata,
- mm_camera_call_type_t);
-extern int32_t mm_camera_poll_thread_del_poll_fd(
- mm_camera_poll_thread_t * poll_cb,
- uint32_t handler,
- mm_camera_call_type_t);
-extern int32_t mm_camera_poll_thread_commit_updates(
- mm_camera_poll_thread_t * poll_cb);
-extern int32_t mm_camera_cmd_thread_launch(
- mm_camera_cmd_thread_t * cmd_thread,
- mm_camera_cmd_cb_t cb,
- void* user_data);
-extern int32_t mm_camera_cmd_thread_name(const char* name);
-extern int32_t mm_camera_cmd_thread_release(mm_camera_cmd_thread_t * cmd_thread);
-
-extern int32_t mm_camera_channel_advanced_capture(mm_camera_obj_t *my_obj,
- mm_camera_advanced_capture_t advanced_capturetype,
- uint32_t ch_id,
- uint32_t start_flag);
-#endif /* __MM_CAMERA_H__ */