#include <camera.h>
#include <muse_core.h>
#include <muse_camera.h>
+#include <mm_display_interface.h>
#ifdef __cplusplus
extern "C" {
#endif /* BUFFER_MAX_PLANE_NUM */
#define BUFFER_MAX_PLANE_NUM 4
-#define CAMERA_CB_TIMEOUT 5
-#define CAMERA_CB_TIMEOUT_LONG 8
+#define CAMERA_CB_TIMEOUT 4
+#define CAMERA_CB_NO_TIMEOUT 0
#define CAMERA_MSG_PARAM_SET(param, msg_type, set_value) { \
param.type = MUSE_TYPE_##msg_type; \
param.value.value_##msg_type = set_value; \
}
+#define CAMERA_MSG_PARAM_SET_ARRAY(param, msg_type, set_value, size) { \
+ param.type = MUSE_TYPE_##msg_type; \
+ param.name = #set_value; \
+ param.value.value_##msg_type = set_value; \
+ param.value_size = size; \
+}
+
#define PREVIEW_CB_TYPE_USER 0x0000000F
#define PREVIEW_CB_TYPE_EVAS 0x000000F0
struct {
unsigned char *data;
unsigned int length_data;
- } encoded;
+ int is_delta_frame;
+ } encoded, depth, rgb;
} data; /**< pointer of captured stream */
int data_type; /**< data type */
unsigned int length_total; /**< total length of stream buffer (in byte)*/
/* message receive thread */
GThread *msg_recv_thread;
gint msg_recv_running;
- gchar recv_msg[MUSE_MSG_MAX_LENGTH];
+ gchar recv_msg[MUSE_MSG_MAX_LENGTH + 1];
GCond api_cond[MUSE_CAMERA_API_MAX];
GMutex api_mutex[MUSE_CAMERA_API_MAX];
gint api_activating[MUSE_CAMERA_API_MAX];
+ gint api_waiting[MUSE_CAMERA_API_MAX];
gint api_ret[MUSE_CAMERA_API_MAX];
/* general message handler info */
/* idle event */
GList *idle_event_list;
- GCond idle_event_cond;
- GMutex idle_event_mutex;
/* user callback */
gpointer user_cb[MUSE_CAMERA_EVENT_TYPE_NUM];
gpointer user_data[MUSE_CAMERA_EVENT_TYPE_NUM];
+ GMutex user_cb_mutex[MUSE_CAMERA_EVENT_TYPE_NUM];
/* tbm */
tbm_bufmgr bufmgr;
+ gboolean user_buffer_supported;
+ tbm_bo bos[MUSE_NUM_FD];
+ tbm_fd fds[MUSE_NUM_FD];
/* media packet */
media_format_h pkt_fmt;
/* preview callback flag */
int preview_cb_flag;
+ camera_pixel_format_e preview_format;
- /* evas surface */
-#ifdef TIZEN_FEATURE_EVAS_RENDERER
- void *evas_info;
- GMutex evas_mutex;
-#endif /* TIZEN_FEATURE_EVAS_RENDERER */
+ /* display */
+ muse_camera_display_info_s dp_info;
+ mm_display_interface_h dp_interface;
gboolean run_evas_render;
/* get values */
} camera_cb_info_s;
typedef struct _camera_message_s {
- gchar recv_msg[MUSE_CAMERA_MSG_MAX_LENGTH];
+ gchar recv_msg[MUSE_CAMERA_MSG_MAX_LENGTH + 1];
muse_camera_api_e api;
muse_camera_event_e event;
muse_camera_event_class_e event_class;
+ int tfd[MUSE_NUM_FD];
} camera_message_s;
typedef struct _camera_idle_event_s {
camera_cb_info_s *cb_info;
- gchar recv_msg[MUSE_CAMERA_MSG_MAX_LENGTH];
+ gchar recv_msg[MUSE_CAMERA_MSG_MAX_LENGTH + 1];
muse_camera_event_e event;
- GMutex event_mutex;
+ int tfd[MUSE_NUM_FD];
} camera_idle_event_s;
-typedef struct _camera_wl_info_s {
- int parent_id;
- int window_x;
- int window_y;
- int window_width;
- int window_height;
- void *evas_obj;
-} camera_wl_info_s;
-
typedef struct _camera_cli_s {
intptr_t remote_handle;
- intptr_t display_handle;
camera_cb_info_s *cb_info;
- camera_wl_info_s wl_info;
} camera_cli_s;
typedef struct _camera_media_packet_data {
- int tbm_key;
+ int ret_fd;
+ tbm_fd fd;
+ tbm_fd data_fd;
+ tbm_fd buffer_fd[MUSE_NUM_FD];
tbm_bo bo;
tbm_bo buffer_bo[BUFFER_MAX_PLANE_NUM];
- int num_buffer_key;
+ int num_buffer_fd;
tbm_bo data_bo;
int ref_cnt;
} camera_media_packet_data;
union {
int value_INT;
const char *value_STRING;
+ void *value_ARRAY;
} value;
+ int value_size;
} camera_msg_param;
typedef struct _camera_cb_info {