#include <glib.h>
#include <sys/time.h>
#include <dlog.h>
-#include <camera.h>
+#include <camera_internal.h>
#include <Ecore.h>
#include <Elementary.h>
+#include <appcore-efl.h>
/*-----------------------------------------------------------------------
| GLOBAL VARIABLE DEFINITIONS: |
-----------------------------------------------------------------------*/
#define EXPORT_API __attribute__((__visibility__("default")))
+#ifdef PACKAGE
+#undef PACKAGE
+#endif
+#define PACKAGE "camera_test"
+
+
+static int app_create(void *data);
+static int app_terminate(void *data);
+
+struct _appdata {
+ Evas_Object *win;
+ Evas_Object *eo;
+ Evas_Object *bg;
+ Evas_Object *rect;
+};
+typedef struct _appdata appdata;
+
+struct appcore_ops ops = {
+ .create = app_create,
+ .terminate = app_terminate,
+};
-Evas_Object *eo;
-Evas_Object *win;
-Evas_Object *bg;
-Evas_Object *rect;
-GMainLoop *g_loop;
+appdata ad;
GIOChannel *stdin_channel;
-camera_device_e cam_info;
-int resolution_set;
-int g_current_state;
-int src_w, src_h;
-int isMultishot;
-int camera_state;
-int camera_print_state;
-int multishot_num;
-static GTimer *timer = NULL;
-
-GTimeVal previous_time;
-GTimeVal current_time;
-GTimeVal res;
+camera_device_e camera_device;
+static GTimer *timer;
+static int g_camera_device_changed_cb_id;
+
+static struct timeval previous_time;
+static struct timeval current_time;
+static struct timeval result_time;
/*-----------------------------------------------------------------------
| GLOBAL CONSTANT DEFINITIONS: |
/*-----------------------------------------------------------------------
| LOCAL #defines: |
-----------------------------------------------------------------------*/
-#define test_ffmux_mp4
-
-
-#define DISPLAY_X_0 0 /* for direct FB */
-#define DISPLAY_Y_0 0 /* for direct FB */
-
-#define DISPLAY_W_320 320 /* for direct FB */
-#define DISPLAY_H_240 240 /* for direct FB */
-
-
-#define IMAGE_ENC_QUALITY 85 /* quality of jpeg */
-#define IMAGE_CAPTURE_COUNT_STILL 1 /* the number of still-shot */
-#define IMAGE_CAPTURE_COUNT_MULTI 3 /* default the number of multi-shot */
-#define IMAGE_CAPTURE_COUNT_INTERVAL 100 /* mili seconds */
-
-#define MAX_FILE_SIZE_FOR_MMS (250 * 1024)
-
-#define EXT_JPEG "jpg"
-#define EXT_MP4 "mp4"
-#define EXT_3GP "3gp"
-#define EXT_AMR "amr"
-#define EXT_MKV "mkv"
-
-#define TARGET_FILENAME_PATH "/opt/usr/media/"
-#define STILL_CAPTURE_FILE_PATH_NAME TARGET_FILENAME_PATH"StillshotCapture"
-#define MULTI_CAPTURE_FILE_PATH_NAME TARGET_FILENAME_PATH"MultishotCapture"
-#define IMAGE_CAPTURE_THUMBNAIL_PATH TARGET_FILENAME_PATH"thumbnail.jpg"
-#define IMAGE_CAPTURE_SCREENNAIL_PATH TARGET_FILENAME_PATH"screennail.yuv"
-#define IMAGE_CAPTURE_EXIF_PATH TARGET_FILENAME_PATH"exif.raw"
-#define CAPTURE_FILENAME_LEN 256
-#define MAX_STILLSHOT_CAPTURE_RESOLUTION_SUPPORTED 2
+#define DEFAULT_FILE_PATH "/home/owner/media"
+#define PREVIEW_CB_DUMP_FILE_NAME "preview.data"
+#define MAX_FILE_NAME_LENGTH 256
+#define MAX_FILE_PATH_LENGTH (MAX_FILE_NAME_LENGTH - 20)
#define CHECK_MM_ERROR(expr) \
do {\
int ret = 0; \
ret = expr; \
if (ret != 0) {\
- printf("[%s:%d] error code : %x \n", __func__, __LINE__, ret); \
+ g_print("[%s:%d] error code : %x \n", __func__, __LINE__, ret); \
return; \
} \
} while (0)
#define SENSOR_WHITEBALANCE_NUM 10
#define SENSOR_COLOR_TONE_NUM 31
-#define SENSOR_FLIP_NUM 3
+#define SENSOR_FLIP_NUM 4
#define SENSOR_PROGRAM_MODE_NUM 15
#define SENSOR_FOCUS_NUM 6
#define SENSOR_INPUT_ROTATION 4
};
enum {
+ MENU_STATE_INIT,
MENU_STATE_MAIN,
MENU_STATE_SETTING,
MENU_STATE_NUM,
-----------------------------------------------------------------------*/
typedef struct _cam_handle {
camera_h camera;
- int mode; /* image(capture)/video(recording) mode */
- int isMultishot; /* flag for multishot mode */
- int stillshot_count; /* total stillshot count */
- int multishot_count; /* total multishot count */
- const char *stillshot_filename; /* stored filename of stillshot */
- const char *multishot_filename; /* stored filename of multishot */
+ int type;
+ int is_multishot; /* flag for multishot mode */
+ int stillshot_count; /* stillshot count */
+ int multishot_count; /* multishot count */
+ char file_path[MAX_FILE_PATH_LENGTH]; /* file path for captured data */
int menu_state;
- int isMute;
unsigned long long elapsed_time;
} cam_handle_t;
typedef struct {
- int expected_width;
- int expected_height;
- int ispass;
-} preview_test_data;
-
-typedef struct {
int width[100];
int height[100];
int count;
} resolution_stack;
typedef struct {
- camera_attr_af_mode_e mode;
- int count;
-} af_stack;
-
-typedef struct {
- int expected_mode;
- int ispass;
-} af_test_data;
-
-typedef struct {
camera_attr_exposure_mode_e mode;
int count;
} exposure_stack;
int count;
} iso_stack;
-typedef struct {
- camera_rotation_e mode;
- int count;
-} camera_rotation_stack;
-
/*---------------------------------------------------------------------------
| LOCAL VARIABLE DEFINITIONS: |
"GRAPHICS"
};
-const char *flip[SENSOR_FLIP_NUM] = {
- "Horizontal",
- "Vertical",
- "Not flipped",
+const char *sensor_flip[SENSOR_FLIP_NUM] = {
+ "NONE",
+ "HORIZONTAL",
+ "VERTICAL",
+ "BOTH"
};
const char *program_mode[SENSOR_PROGRAM_MODE_NUM] = {
| LOCAL FUNCTION PROTOTYPES: |
---------------------------------------------------------------------------*/
static void print_menu();
-static gboolean cmd_input(GIOChannel *channel);
-static gboolean mode_change();
+static gboolean cmd_input(GIOChannel *channel, GIOCondition condition, gpointer data);
+static gboolean mode_change(gchar buf);
int camcordertest_set_attr_int(const char* attr_subcategory, int value);
-bool preview_resolution_cb(int width, int height, void *user_data);
static inline void flush_stdin()
while ((ch = getchar()) != EOF && ch != '\n');
}
-void _camera_state_changed_cb(camera_state_e previous, camera_state_e current, bool by_policy, void *user_data)
+static gboolean _release_idle_event_callback(void *data)
+{
+ g_print("destroy camera handle\n\n");
+
+ camera_destroy(hcamcorder->camera);
+ hcamcorder->camera = NULL;
+ hcamcorder->menu_state = MENU_STATE_INIT;
+
+ print_menu();
+
+ return 0;
+}
+
+static void _camera_error_cb(int error, camera_state_e current_state, void *user_data)
+{
+ g_print("\n\n\tERROR [0x%x], current state %d\n", error, current_state);
+
+ switch (error) {
+ case CAMERA_ERROR_RESOURCE_CONFLICT:
+ g_print("\t\t[CAMERA_ERROR_RESOURCE_CONFLICT]\n\n");
+ break;
+ case CAMERA_ERROR_SECURITY_RESTRICTED:
+ g_print("\t\t[CAMERA_ERROR_SECURITY_RESTRICTED]\n\n");
+ break;
+ case CAMERA_ERROR_SERVICE_DISCONNECTED:
+ g_print("\t\t[CAMERA_ERROR_SERVICE_DISCONNECTED]\n\n");
+ g_idle_add_full(G_PRIORITY_DEFAULT,
+ (GSourceFunc)_release_idle_event_callback,
+ NULL, NULL);
+ break;
+ default:
+ break;
+ }
+
+ return;
+}
+
+static void _camera_state_changed_cb(camera_state_e previous, camera_state_e current, bool by_policy, void *user_data)
+{
+ g_print("\n\tcamera state changed %d -> %d\n", previous, current);
+
+ return;
+}
+
+static void _camera_device_state_changed_cb(camera_device_e device, camera_device_state_e state, void *user_data)
+{
+ g_print("\n\tcamera device[%d] state changed to %d\n", device, state);
+
+ return;
+}
+
+static void _camera_interrupted_cb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *user_data)
+{
+ g_print("\n\tcamera interrupted callback called[state %d -> %d, policy %d]\n",
+ previous, current, policy);
+
+ return;
+}
+
+static void _camera_interrupt_started_cb(camera_policy_e policy, camera_state_e state, void *user_data)
{
- printf("camera state changed %d -> %d\n", previous, current);
+ g_print("\n\tcamera interrupt started callback called[state %d, policy %d]\n", state, policy);
+
+ return;
}
-void _camera_interrupted_cb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *user_data)
+void _camera_preview_cb(camera_preview_data_s *frame, void *user_data)
{
- printf("camera interrupted callback called %d\n", policy);
+#if 1
+ char preview_dump[MAX_FILE_NAME_LENGTH] = {'\0',};
+ FILE *fp = NULL;
+
+ snprintf(preview_dump, MAX_FILE_NAME_LENGTH, "%s/%s", DEFAULT_FILE_PATH, PREVIEW_CB_DUMP_FILE_NAME);
+
+ fp = fopen(preview_dump, "a");
+ if (fp == NULL) {
+ g_print("\n==== file[%s] open failed ====\n", preview_dump);
+ return;
+ }
+
+ if (frame->format == CAMERA_PIXEL_FORMAT_RGBA ||
+ frame->format == CAMERA_PIXEL_FORMAT_ARGB) {
+ fwrite(frame->data.rgb_plane.data, 1, frame->data.rgb_plane.size, fp);
+ } else if (frame->format == CAMERA_PIXEL_FORMAT_INVZ) {
+ fwrite(frame->data.depth_plane.data, 1, frame->data.depth_plane.size, fp);
+ } else if (frame->format == CAMERA_PIXEL_FORMAT_MJPEG) {
+ fwrite(frame->data.encoded_plane.data, 1, frame->data.encoded_plane.size, fp);
+ } else {
+ switch (frame->num_of_planes) {
+ case 1:
+ fwrite(frame->data.single_plane.yuv, 1, frame->data.single_plane.size, fp);
+ break;
+ case 2:
+ fwrite(frame->data.double_plane.y, 1, frame->data.double_plane.y_size, fp);
+ fwrite(frame->data.double_plane.uv, 1, frame->data.double_plane.uv_size, fp);
+ break;
+ case 3:
+ fwrite(frame->data.triple_plane.y, 1, frame->data.triple_plane.y_size, fp);
+ fwrite(frame->data.triple_plane.u, 1, frame->data.triple_plane.u_size, fp);
+ fwrite(frame->data.triple_plane.v, 1, frame->data.triple_plane.v_size, fp);
+ break;
+ default:
+ break;
+ }
+ }
+
+ g_print("==== file[%s] write done ====\n", preview_dump);
+
+ fclose(fp);
+ fp = NULL;
+#else
+ g_print("----- preview callback - format %d, %dx%d, num plane %d\n",
+ frame->format, frame->width, frame->height, frame->num_of_planes);
+ if (frame->num_of_planes == 1) {
+ g_print("----- length YUV %d\n",
+ frame->data.single_plane.size);
+ } else if (frame->num_of_planes == 2) {
+ g_print("----- length Y %d, UV %d\n",
+ frame->data.double_plane.y_size,
+ frame->data.double_plane.uv_size);
+ } else if (frame->num_of_planes == 3) {
+ g_print("----- length Y %d, U %d, V %d\n",
+ frame->data.triple_plane.y_size,
+ frame->data.triple_plane.u_size,
+ frame->data.triple_plane.v_size);
+ } else {
+ g_print("invalid num of planes %d\n", frame->num_of_planes);
+ }
+#endif
+
+ return;
}
-bool preview_resolution_cb(int width, int height, void *user_data)
+
+static bool preview_resolution_cb(int width, int height, void *user_data)
{
resolution_stack *data = (resolution_stack *)user_data;
if (data == NULL) {
- printf("NULL data\n");
+ g_print("NULL data\n");
return false;
}
data->width[data->count] = width;
data->height[data->count] = height;
- printf("%d. %dx%d\n", data->count, width, height);
+ g_print("\t%d. %dx%d\n", data->count, width, height);
data->count++;
return true;
}
-bool capture_resolution_test_cb(int width, int height, void *user_data)
+static bool capture_resolution_test_cb(int width, int height, void *user_data)
{
resolution_stack *data = (resolution_stack *)user_data;
if (data == NULL) {
- printf("NULL data\n");
+ g_print("NULL data\n");
return false;
}
data->width[data->count] = width;
data->height[data->count] = height;
- printf("%d. %dx%d\n", data->count, width, height);
+ g_print("\t%d. %dx%d\n", data->count, width, height);
data->count++;
return true;
}
-bool af_mode_foreach_cb(camera_attr_iso_e mode, void *user_data)
+static bool af_mode_foreach_cb(camera_attr_iso_e mode, void *user_data)
{
- printf("%d.%s\n", mode, af_scan[mode]);
+ g_print("\t%d. %s\n", mode, af_scan[mode]);
return true;
}
-bool exposure_mode_cb(camera_attr_af_mode_e mode, void *user_data)
+static bool exposure_mode_cb(camera_attr_af_mode_e mode, void *user_data)
{
exposure_stack *data = (exposure_stack *)user_data;
if (data == NULL) {
- printf("NULL data\n");
+ g_print("NULL data\n");
return false;
}
data->mode = mode;
data->count++;
- printf("%d.%s\n", mode, exposure_mode[mode]);
+ g_print("\t%d. %s\n", mode, exposure_mode[mode]);
return true;
}
-bool iso_mode_cb(camera_attr_iso_e mode, void *user_data)
+static bool iso_mode_cb(camera_attr_iso_e mode, void *user_data)
{
- printf("%d.%s\n", mode, iso_mode[mode]);
+ g_print("\t%d. %s\n", mode, iso_mode[mode]);
return true;
}
-bool camera_rotation_cb(camera_rotation_e mode, void *user_data)
+static bool camera_rotation_cb(camera_rotation_e mode, void *user_data)
{
- camera_rotation_stack *data = (camera_rotation_stack *)user_data;
-
- if (data == NULL) {
- printf("NULL data\n");
- return false;
- }
-
- data->mode = mode;
- data->count++;
-
- printf("%d.%s\n", mode, camera_rotation[mode]);
-
+ g_print("\t%d. %s\n", mode, camera_rotation[mode]);
return true;
}
-bool preview_format_cb(camera_pixel_format_e mode, void *user_data)
+static bool camera_flip_cb(camera_flip_e mode, void *user_data)
{
- printf("%d.%s\n", mode, image_fmt[mode]);
+ g_print("\t%d. %s\n", mode, sensor_flip[mode]);
return true;
}
-bool white_balance_cb(camera_attr_whitebalance_e mode, void *user_data)
+static bool preview_format_cb(camera_pixel_format_e mode, void *user_data)
{
- printf("%d.%s\n", mode, wb[mode]);
+ g_print("\t%d. %s\n", mode, image_fmt[mode]);
return true;
}
-bool colortone_cb(camera_attr_effect_mode_e mode, void *user_data)
+static bool white_balance_cb(camera_attr_whitebalance_e mode, void *user_data)
{
- printf("%d.%s\n", mode, ct[mode]);
+ g_print("\t%d. %s\n", mode, wb[mode]);
return true;
}
-bool program_mode_cb(camera_attr_scene_mode_e mode, void *user_data)
+static bool colortone_cb(camera_attr_effect_mode_e mode, void *user_data)
{
- printf("%d.%s\n", mode, program_mode[mode]);
+ g_print("\t%d. %s\n", mode, ct[mode]);
return true;
}
-bool strobe_mode_cb(camera_attr_flash_mode_e mode, void *user_data)
+static bool program_mode_cb(camera_attr_scene_mode_e mode, void *user_data)
{
- printf("%d.%s\n", mode, strobe_mode[mode]);
+ g_print("\t%d. %s\n", mode, program_mode[mode]);
return true;
}
-void _face_detected(camera_detected_face_s *faces, int count, void *user_data)
+static bool strobe_mode_cb(camera_attr_flash_mode_e mode, void *user_data)
{
- printf("face detected!!\n");
- int i;
-
- for (i = 0 ; i < count ; i++)
- printf("%d) - %dx%d\n", faces[i].id, faces[i].x, faces[i].y);
-
- return;
+ g_print("\t%d. %s\n", mode, strobe_mode[mode]);
+ return true;
}
-
-void cam_utils_convert_YUYV_to_UYVY(unsigned char *dst, unsigned char *src, gint length)
+static void _face_detected(camera_detected_face_s *faces, int count, void *user_data)
{
- int i = 0;
-
- /* memset dst */
- memset(dst, 0x00, length);
- memcpy(dst, src+1, length-1);
+ g_print("\tface detected!! - count %d\n", count);
+ int i;
- for (i = 0 ; i < length ; i++) {
- if (!(i % 2))
- dst[i+1] = src[i];
- }
+ for (i = 0 ; i < count ; i++)
+ g_print("\t%d] %dx%d\n", faces[i].id, faces[i].x, faces[i].y);
return;
}
-
static void _file_write(char *path, void *data, int size)
{
FILE *fp = NULL;
if (!path || !data || size <= 0) {
- printf("ERROR %p %p %d\n", path, data, size);
+ g_print("\n\tERROR %p %p %d\n", path, data, size);
return;
}
fp = fopen(path, "w");
- if (fp == NULL) {
- printf("open error! [%s], errno %d\n", path, errno);
- return;
- } else {
- printf("open success [%s]\n", path);
+ if (fp) {
+ g_print("\n\topen success [%s]\n", path);
if (fwrite(data, size, 1, fp) != 1)
- printf("write error! errno %d\n", errno);
+ g_print("\n\twrite error! errno %d\n", errno);
else
- printf("write success [%s]\n", path);
+ g_print("\n\twrite success [%s]\n", path);
fclose(fp);
fp = NULL;
+ } else {
+ g_print("\n\topen error! [%s], errno %d\n", path, errno);
}
+
+ return;
}
-void capturing_cb(camera_image_data_s* image, camera_image_data_s* postview, camera_image_data_s* thumbnail, void *user_data)
+static void capturing_cb(camera_image_data_s* image, camera_image_data_s* postview, camera_image_data_s* thumbnail, void *user_data)
{
- char m_filename[CAPTURE_FILENAME_LEN];
-
- if (hcamcorder->isMultishot)
- snprintf(m_filename, CAPTURE_FILENAME_LEN, "/opt/usr/media/Stillshot%03d.jpg", hcamcorder->multishot_count++);
- else
- snprintf(m_filename, CAPTURE_FILENAME_LEN, "/opt/usr/media/Multishot%03d.jpg", hcamcorder->stillshot_count++);
+ char m_filename[MAX_FILE_NAME_LENGTH];
/* main image */
- if (image)
+ if (image) {
+ if (hcamcorder->is_multishot) {
+ snprintf(m_filename, MAX_FILE_NAME_LENGTH, "%s/multishot%03d.jpg",
+ hcamcorder->file_path, hcamcorder->multishot_count++);
+ } else {
+ snprintf(m_filename, MAX_FILE_NAME_LENGTH, "%s/stillshot%03d.jpg",
+ hcamcorder->file_path, hcamcorder->stillshot_count++);
+ }
+
_file_write(m_filename, image->data, image->size);
+ }
return;
}
-void capture_completed_cb(void *user_data)
+static void capture_completed_cb(void *user_data)
{
camera_start_preview(hcamcorder->camera);
- print_menu();
-
return;
}
static void print_menu()
{
switch (hcamcorder->menu_state) {
+ case MENU_STATE_INIT:
+ g_print("\n\t=======================================\n");
+ g_print("\t CAMERA_TESTSUITE\n");
+ g_print("\t=======================================\n");
+ g_print("\t '1' Video Capture\n");
+ g_print("\t '2' Add camera device state changed callback\n");
+ g_print("\t '3' Remove camera device state changed callback\n");
+ g_print("\t '4' Get camera device state\n");
+ g_print("\t 'q' Exit\n");
+ g_print("\t=======================================\n");
+ break;
case MENU_STATE_MAIN:
- if (hcamcorder->mode == MODE_VIDEO_CAPTURE) {
- g_print("\n\t=======================================\n");
- if (cam_info == CAMERA_DEVICE_CAMERA1)
- g_print("\t Video Capture (Front camera)\n");
- else if (cam_info == CAMERA_DEVICE_CAMERA0)
- g_print("\t Video Capture (Rear camera)\n");
- g_print("\t=======================================\n");
-
- g_print("\t '1' Stillshot test\n");
- g_print("\t '2' Multishot test\n");
- g_print("\t '3' Setting\n");
- g_print("\t 'b' back\n");
- g_print("\t=======================================\n");
- }
+ g_print("\n\t=======================================\n");
+ g_print("\t Video Capture (CAMERA%d)\n", camera_device);
+ g_print("\t=======================================\n");
+ g_print("\t '1' Stillshot test\n");
+ g_print("\t '2' Multishot test\n");
+ g_print("\t '3' Setting\n");
+ g_print("\t '4' Change device (CAMERA0 <-> CAMERA1)\n");
+ g_print("\t '5' Add preview callback\n");
+ g_print("\t '6' Remove preview callback\n");
+ g_print("\t 'b' back\n");
+ g_print("\t=======================================\n");
break;
case MENU_STATE_SETTING:
g_print("\n\t=======================================\n");
g_print("\t '5' Exposure mode \n");
g_print("\t '6' Exposure value \n");
g_print("\t '7' F number \n");
+ g_print("\t '8' Display reuse hint \n");
g_print("\t 'i' ISO \n");
g_print("\t 'r' Rotate camera input \n");
g_print("\t 'f' Flip camera input \n");
g_print("\t 'Y' Flip display \n");
g_print("\t 'g' Brightness \n");
g_print("\t 'c' Contrast \n");
+ g_print("\t 'h' Hue \n");
g_print("\t 'w' White balance \n");
g_print("\t 't' Color tone \n");
g_print("\t 'd' WDR \n");
g_print("\t 'e' EV program mode \n");
+ g_print("\t 'R' Display ROI area \n");
g_print("\t >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [etc.]\n");
g_print("\t 'z' Strobe (Flash) \n");
g_print("\t 'S' Strobe (Flash) state\n");
g_print("\t 'k' Anti-handshake \n");
g_print("\t 'K' Video-stabilization \n");
g_print("\t 'u' Touch AF area \n");
+ g_print("\t 'n' Set file path to write captured image\n");
g_print("\t 'b' back\n");
g_print("\t=======================================\n");
break;
default:
- LOGE("unknow menu state !!\n");
- break;
+ g_print("\n\tunknow menu state !!\n");
+ return;
}
+ g_print("\tCommand >> ");
+
return;
}
static void main_menu(gchar buf)
{
int err = 0;
- camera_state_e capi_state;
- if (hcamcorder->mode == MODE_VIDEO_CAPTURE) {
- switch (buf) {
- case '1': /* Capture */
- camera_get_state(hcamcorder->camera, &capi_state);
- camera_attr_set_image_quality(hcamcorder->camera, 100);
- camera_set_capture_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_JPEG);
- camera_start_capture(hcamcorder->camera, capturing_cb, capture_completed_cb, hcamcorder);
- break;
- case '2': /* multishot Capture */
- g_print("multishot capture");
- hcamcorder->isMultishot = TRUE;
- int interval = 0, count = 0;
- flush_stdin();
- printf("\ninput interval(ms)\n");
- err = scanf("%d", &interval);
- flush_stdin();
- printf("\ninput count(ms) \n");
- err = scanf("%d", &count);
- camera_attr_set_image_quality(hcamcorder->camera, 100);
- camera_set_capture_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_JPEG);
- camera_start_continuous_capture(hcamcorder->camera, count, interval, capturing_cb, NULL, NULL);
- sleep(3);
- camera_start_preview(hcamcorder->camera);
- break;
- case '3': /* Setting */
- hcamcorder->menu_state = MENU_STATE_SETTING;
- break;
- case 'b': /* back */
- camera_stop_preview(hcamcorder->camera);
- camera_destroy(hcamcorder->camera);
- hcamcorder->camera = NULL;
- hcamcorder->menu_state = MENU_STATE_MAIN;
- mode_change();
- break;
- default:
- g_print("\t Invalid input \n");
- break;
- }
- } else {
- g_print("\t Invalid mode, back to upper menu \n");
- hcamcorder->menu_state = MENU_STATE_MAIN;
- mode_change();
+ int interval = 0;
+ int count = 0;
+
+ switch (buf) {
+ case '1': /* Capture */
+ hcamcorder->is_multishot = FALSE;
+ camera_attr_set_image_quality(hcamcorder->camera, 100);
+ camera_set_capture_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_JPEG);
+ camera_start_capture(hcamcorder->camera, capturing_cb, capture_completed_cb, hcamcorder);
+ break;
+ case '2': /* multishot Capture */
+ g_print("multishot capture");
+ hcamcorder->is_multishot = TRUE;
+ g_print("\n\tinput interval(ms) : ");
+ err = scanf("%d", &interval);
+ flush_stdin();
+ g_print("\n\tinput count : ");
+ err = scanf("%d", &count);
+ flush_stdin();
+ camera_attr_set_image_quality(hcamcorder->camera, 100);
+ camera_set_capture_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_JPEG);
+ camera_start_continuous_capture(hcamcorder->camera, count, interval, capturing_cb, NULL, NULL);
+ sleep(3);
+ camera_start_preview(hcamcorder->camera);
+ break;
+ case '3': /* Setting */
+ hcamcorder->menu_state = MENU_STATE_SETTING;
+ break;
+ case '4': /* Change device (CAMERA0 <-> CAMERA1) */
+ camera_set_display_reuse_hint(hcamcorder->camera, true);
+
+ camera_stop_preview(hcamcorder->camera);
+
+ if (hcamcorder->type == CAMERA_DEVICE_CAMERA0)
+ hcamcorder->type = CAMERA_DEVICE_CAMERA1;
+ else
+ hcamcorder->type = CAMERA_DEVICE_CAMERA0;
+
+ camera_change_device(hcamcorder->camera, hcamcorder->type);
+
+ camera_set_error_cb(hcamcorder->camera, _camera_error_cb, NULL);
+ camera_set_state_changed_cb(hcamcorder->camera, _camera_state_changed_cb, NULL);
+ camera_set_interrupted_cb(hcamcorder->camera, _camera_interrupted_cb, NULL);
+ camera_set_interrupt_started_cb(hcamcorder->camera, _camera_interrupt_started_cb, NULL);
+
+ camera_set_display_mode(hcamcorder->camera, CAMERA_DISPLAY_MODE_LETTER_BOX);
+
+ camera_start_preview(hcamcorder->camera);
+ break;
+ case '5':
+ camera_set_preview_cb(hcamcorder->camera, _camera_preview_cb, hcamcorder->camera);
+ break;
+ case '6':
+ camera_unset_preview_cb(hcamcorder->camera);
+ break;
+ case 'b': /* back */
+ camera_stop_preview(hcamcorder->camera);
+ camera_destroy(hcamcorder->camera);
+ hcamcorder->camera = NULL;
+ hcamcorder->menu_state = MENU_STATE_INIT;
+ break;
+ default:
+ g_print("\t Invalid input \n");
+ break;
}
return;
static void setting_menu(gchar buf)
{
- gboolean bret = FALSE;
+ int bret = FALSE;
int idx = 0;
int min = 0;
int max = 0;
int i = 0;
- int value = 0;
int err = 0;
- int x = 0, y = 0, width = 0, height = 0;
-
- if (hcamcorder->mode == MODE_VIDEO_CAPTURE) {
- switch (buf) {
- /* Camera setting */
- case '0': /* Setting > Preview Resolution setting */
- g_print("*Select the preview resolution!\n");
- resolution_stack resolution_list;
- resolution_list.count = 0;
- camera_foreach_supported_preview_resolution(hcamcorder->camera, preview_resolution_cb, &resolution_list);
- flush_stdin();
- err = scanf("%d", &idx);
- int result = 0;
- preview_test_data data;
- data.ispass = false;
- if (resolution_list.count > idx && idx >= 0) {
- data.expected_width = resolution_list.width[idx];
- data.expected_height = resolution_list.height[idx];
- printf("-----------------PREVIEW RESOLUTION (%dx%d)---------------------\n", data.expected_width, data.expected_height);
- result = camera_set_preview_resolution(hcamcorder->camera, data.expected_width, data.expected_height);
- } else {
- printf("invalid input %d\n", idx);
- result = -1;
- }
- resolution_list.count = 0;
- if (result != 0)
- printf("FAIL\n");
- else
- printf("PASS\n");
- break;
- case '1': /* Setting > Capture Resolution setting */
- g_print("*Select the preview resolution!\n");
- printf("-----------------CAPTURE RESOLUTION TEST: ---------------------\n");
- resolution_list.count = 0;
- camera_foreach_supported_capture_resolution(hcamcorder->camera, capture_resolution_test_cb, &resolution_list);
- flush_stdin();
+ int x = 0;
+ int y = 0;
+ int width = 0;
+ int height = 0;
+ int result = 0;
+
+ switch (buf) {
+ /* Camera setting */
+ case '0': /* Setting > Preview Resolution setting */
+ g_print("\t* Select the preview resolution!\n");
+ resolution_stack resolution_list;
+ resolution_list.count = 0;
+
+ camera_foreach_supported_preview_resolution(hcamcorder->camera,
+ preview_resolution_cb, &resolution_list);
+
+ g_print("\tCommand >> ");
+
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (resolution_list.count > idx && idx >= 0) {
+ g_print("\t-----------------PREVIEW RESOLUTION (%dx%d)---------------------\n",
+ resolution_list.width[idx], resolution_list.height[idx]);
+
+ result = camera_set_preview_resolution(hcamcorder->camera,
+ resolution_list.width[idx], resolution_list.height[idx]);
+ } else {
+ g_print("\tInvalid command [%d]\n", idx);
+ result = -1;
+ }
+ resolution_list.count = 0;
+ if (result == CAMERA_ERROR_NONE)
+ g_print("\tPASS\n");
+ else
+ g_print("\tFAIL\n");
+ break;
+ case '1': /* Setting > Capture Resolution setting */
+ g_print("\t* Select the preview resolution!\n");
+ resolution_list.count = 0;
+
+ camera_foreach_supported_capture_resolution(hcamcorder->camera,
+ capture_resolution_test_cb, &resolution_list);
+
+ g_print("\tCommand > ");
+
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (resolution_list.count > idx && idx >= 0) {
+ g_print("\t-----------------CAPTURE RESOLUTION (%dx%d)---------------------\n",
+ resolution_list.width[idx], resolution_list.height[idx]);
+
+ result = camera_set_capture_resolution(hcamcorder->camera,
+ resolution_list.width[idx], resolution_list.height[idx]);
+ } else {
+ g_print("\tInvalid command [%d]\n", idx);
+ result = -1;
+ }
+ resolution_list.count = 0;
+ if (result == CAMERA_ERROR_NONE)
+ g_print("\tPASS\n");
+ else
+ g_print("\tFAIL\n");
+ break;
+ case '2': /* Setting > Digital zoom level */
+ camera_attr_get_zoom_range(hcamcorder->camera, &min, &max);
+ if (min > max) {
+ g_print("\tDigital Zoom Not supported\n");
+ } else {
+ g_print("\tDigital zoom level [%d ~ %d] > ", min, max);
err = scanf("%d", &idx);
- data.ispass = false;
- if (resolution_list.count > idx && idx >= 0) {
- data.expected_width = resolution_list.width[idx];
- data.expected_height = resolution_list.height[idx];
-
- result = camera_set_capture_resolution(hcamcorder->camera, data.expected_width, data.expected_height);
- printf("camera_set_capture_resolution with width =%d, height=%d ret=0x%x\n", data.expected_width, data.expected_height, result);
- } else {
- printf("invalid input %d\n", idx);
- result = -1;
- }
- resolution_list.count = 0;
- if (result != 0)
- printf("FAIL\n");
- else
- printf("PASS\n");
-
- break;
- case '2': /* Setting > Digital zoom level */
- g_print("*Digital zoom level !\n");
- camera_attr_get_zoom_range(hcamcorder->camera, &min, &max);
- if (min >= max)
- g_print("Not supported !! \n");
- else {
- flush_stdin();
- g_print("\n Select Digital zoom level min %d - max %d\n", min, max);
- err = scanf("%d", &idx);
- bret = camera_attr_set_zoom(hcamcorder->camera, idx);
- }
- break;
- case '3': /* Setting > AF mode */
- g_print("*AF mode !\n");
- g_print("\t1. AF Start !\n");
- g_print("\t2. AF Stop !\n\n");
flush_stdin();
- err = scanf("%d", &idx);
- switch (idx) {
- case 1:
- camera_start_focusing(hcamcorder->camera, 0);
- break;
- case 2:
- camera_cancel_focusing(hcamcorder->camera);
- break;
- default:
- g_print("Wrong Input[%d] !! \n", idx);
- break;
- }
+ bret = camera_attr_set_zoom(hcamcorder->camera, idx);
+ }
+ break;
+ case '3': /* Setting > AF mode */
+ g_print("\tAuto Focus [1:Start, 2:Stop] > ");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ switch (idx) {
+ case 1:
+ camera_start_focusing(hcamcorder->camera, 0);
break;
- case '4': /* Setting > AF scan range */
- g_print("*AF scan range !\n");
- af_stack af_mode_list;
- af_mode_list.count = 0;
- camera_attr_foreach_supported_af_mode(hcamcorder->camera, (camera_attr_supported_af_mode_cb)af_mode_foreach_cb, NULL);
- af_test_data data1;
- data1.ispass = false;
- data1.expected_mode = af_mode_list.mode;
- flush_stdin();
- err = scanf("%d", &idx);
- bret = camera_attr_set_af_mode(hcamcorder->camera, idx);
+ case 2:
+ camera_cancel_focusing(hcamcorder->camera);
break;
- case '5': /* Setting > Exposure mode */
- g_print("* Exposure mode!\n");
- camera_attr_foreach_supported_exposure_mode(hcamcorder->camera, (camera_attr_supported_exposure_mode_cb)exposure_mode_cb, NULL);
- flush_stdin();
- g_print("\n Select Exposure mode \n");
- err = scanf("%d", &idx);
- bret = camera_attr_set_exposure_mode(hcamcorder->camera, idx);
+ default:
+ g_print("\tInvalid command [%d]\n", idx);
break;
+ }
+ break;
+ case '4': /* Setting > AF scan range */
+ g_print("\t* AF scan range !\n");
+ camera_attr_foreach_supported_af_mode(hcamcorder->camera, (camera_attr_supported_af_mode_cb)af_mode_foreach_cb, NULL);
+ g_print("\tCommand > ");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_af_mode(hcamcorder->camera, idx);
+ break;
+ case '5': /* Setting > Exposure mode */
+ g_print("* Exposure mode!\n");
+ camera_attr_foreach_supported_exposure_mode(hcamcorder->camera, (camera_attr_supported_exposure_mode_cb)exposure_mode_cb, NULL);
+ g_print("\n Select Exposure mode \n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_exposure_mode(hcamcorder->camera, idx);
+ break;
- case '6': /* Setting > Exposure value */
- camera_attr_get_exposure_range(hcamcorder->camera, &min, &max);
- if (min >= max)
- g_print("Not supported !! \n");
- else {
- flush_stdin();
- g_print("\n Select Exposure mode min%d -max %d\n", min, max);
- err = scanf("%d", &idx);
- bret = camera_attr_set_exposure(hcamcorder->camera, idx);
- }
- break;
- case '7': /* Setting > F number */
+ case '6': /* Setting > Exposure value */
+ camera_attr_get_exposure_range(hcamcorder->camera, &min, &max);
+ if (min >= max)
g_print("Not supported !! \n");
- break;
- case 'i': /* Setting > ISO */
- g_print("*ISO !\n");
- camera_attr_foreach_supported_iso(hcamcorder->camera, iso_mode_cb, NULL);
- flush_stdin();
- err = scanf("%d", &idx);
- bret = camera_attr_set_iso(hcamcorder->camera, idx);
- break;
- case 'r': /* Setting > Rotate camera input when recording */
- g_print("*Rotate camera input\n");
- camera_attr_foreach_supported_stream_rotation(hcamcorder->camera, camera_rotation_cb, NULL);
- flush_stdin();
- err = scanf("%d", &idx);
- CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
- bret = camera_attr_set_stream_rotation(hcamcorder->camera, idx);
- CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
- break;
- case 'f': /* Setting > Flip camera input */
- flush_stdin();
- g_print("*Flip camera input\n");
- g_print(" 0. Flip NONE\n");
- g_print(" 1. Flip HORIZONTAL\n");
- g_print(" 2. Flip VERTICAL\n");
- g_print(" 3. Flip BOTH\n");
- err = scanf("%d", &idx);
- CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
- camera_attr_set_stream_flip(hcamcorder->camera, idx);
- CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
- break;
- case 'j': /* Setting > Jpeg quality */
- g_print("*Jpeg quality !\n");
- flush_stdin();
- g_print("\n Select Jpeg quality \n");
- err = scanf("%d", &idx);
- bret = camera_attr_set_image_quality(hcamcorder->camera, idx);
- break;
- case 'p': /* Setting > Picture format */
- g_print("* Picture format!\n");
- camera_foreach_supported_preview_format(hcamcorder->camera, preview_format_cb, NULL);
- flush_stdin();
- err = scanf("%d", &idx);
- bret = camera_set_preview_format(hcamcorder->camera, idx);
- CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
- CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
- break;
- case 'E': /* Setting > EXIF orientation */
- g_print("* EXIF Orientation\n");
- g_print("\t 1. TOP_LEFT\n");
- g_print("\t 2. TOP_RIGHT(flipped)\n");
- g_print("\t 3. BOTTOM_RIGHT\n");
- g_print("\t 4. BOTTOM_LEFT(flipped)\n");
- g_print("\t 5. LEFT_TOP(flipped)\n");
- g_print("\t 6. RIGHT_TOP\n");
- g_print("\t 7. RIGHT_BOTTOM(flipped)\n");
- g_print("\t 8. LEFT_BOTTOM\n");
- flush_stdin();
- err = scanf("%d", &idx);
- if (idx < 1 || idx > 8)
- g_print("Wrong INPUT[%d]!! \n", idx);
- else
- camera_attr_set_tag_orientation(hcamcorder->camera, idx);
- break;
- case 'F': /* Getting > Get Facing direction */
- g_print("* Get facing direction of camera module\n");
- err = camera_get_facing_direction(hcamcorder->camera, (camera_facing_direction_e *)&idx);
- if (CAMERA_ERROR_NONE == err)
- g_print("* Facing direction : %s(%d)\n", facing_direction[idx], idx);
- else
- g_print("* Error : %d\n", err);
- break;
- /* Display / Filter setting */
- case 'v': /* Display visible */
- g_print("* Display visible setting !\n");
- g_print("\n Select Display visible \n");
- flush_stdin();
- for (i = 0 ; i < 2 ; i++)
- g_print("\t %d. %s\n", i+1, visible_mode[i]);
- err = scanf("%d", &value);
- bret = camera_set_display_visible(hcamcorder->camera, idx-1);
- break;
- case 'o': /* Setting > Display Mode */
- g_print("* Display mode!\n");
- flush_stdin();
- for (i = 0 ; i < 5 ; i++)
- g_print("%d. %s\n", i, display_mode[i]);
+ else {
+ g_print("\n Select Exposure mode min%d -max %d\n", min, max);
err = scanf("%d", &idx);
- bret = camera_set_display_mode(hcamcorder->camera, idx);
- break;
- case 'y': /* Setting > Rotate Display */
- flush_stdin();
- g_print("\n Select Rotate mode\n");
- g_print("\t0. 0\n\t1. 90\n\t2. 180\n\t3. 270\n\n");
- err = scanf("%d", &idx);
- CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
- bret = camera_set_display_rotation(hcamcorder->camera, idx);
- CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
- break;
- case 'Y': /* Setting > Flip Display */
- flush_stdin();
- g_print("\n Select Rotate mode\n");
- g_print("\t0. NONE\n\t1. HORIZONTAL\n\t2. VERTICAL\n\t3. BOTH\n\n");
- err = scanf("%d", &idx);
- bret = camera_set_display_flip(hcamcorder->camera, idx);
- break;
- case 'g': /* Setting > Brightness */
- g_print("*Brightness !\n");
- camera_attr_get_brightness_range(hcamcorder->camera, &min, &max);
- flush_stdin();
- g_print("\n Select brightness min (%d) -max(%d)", min, max);
- err = scanf("%d", &idx);
- bret = camera_attr_set_brightness(hcamcorder->camera, idx);
- break;
- case 'c': /* Setting > Contrast */
- g_print("*Contrast !\n");
- camera_attr_get_contrast_range(hcamcorder->camera, &min, &max);
- flush_stdin();
- g_print("\n Select Contrast min(%d)-max(%d)", min, max);
- err = scanf("%d", &idx);
- bret = camera_attr_set_contrast(hcamcorder->camera, idx);
- break;
- case 'w': /* Setting > White balance */
- g_print("*White balance !\n");
- flush_stdin();
- g_print("\n Select White balance \n");
- camera_attr_foreach_supported_whitebalance(hcamcorder->camera, white_balance_cb, NULL);
- err = scanf("%d", &idx);
- bret = camera_attr_set_whitebalance(hcamcorder->camera, idx);
- break;
- case 't': /* Setting > Color tone */
- g_print("*Color tone !\n");
- camera_attr_foreach_supported_effect(hcamcorder->camera, colortone_cb, NULL);
- g_print("\n Select Color tone \n");
flush_stdin();
+ bret = camera_attr_set_exposure(hcamcorder->camera, idx);
+ }
+ break;
+ case '7': /* Setting > F number */
+ g_print("Not supported !! \n");
+ break;
+ case '8': /* Setting > Display reuse hint */
+ {
+ bool reuse_hint = false;
+
+ err = camera_get_display_reuse_hint(hcamcorder->camera, &reuse_hint);
+ if (err != CAMERA_ERROR_NONE) {
+ g_print("failed to get display reuse hint 0x%x\n", err);
+ break;
+ }
+
+ g_print("*Display reuse hint : current %d -> set %d\n", reuse_hint, !reuse_hint);
+ reuse_hint = !reuse_hint;
+ err = camera_set_display_reuse_hint(hcamcorder->camera, reuse_hint);
+ g_print("set display reuse hint result : 0x%x\n", err);
+ }
+ break;
+ case 'i': /* Setting > ISO */
+ g_print("*ISO !\n");
+ camera_attr_foreach_supported_iso(hcamcorder->camera, iso_mode_cb, NULL);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_iso(hcamcorder->camera, idx);
+ break;
+ case 'r': /* Setting > Rotate camera input when recording */
+ g_print("*Rotate camera input\n");
+ camera_attr_foreach_supported_stream_rotation(hcamcorder->camera, camera_rotation_cb, NULL);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
+ bret = camera_attr_set_stream_rotation(hcamcorder->camera, idx);
+ CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
+ break;
+ case 'f': /* Setting > Flip camera input */
+ g_print("*Flip camera input\n");
+ camera_attr_foreach_supported_stream_flip(hcamcorder->camera, camera_flip_cb, NULL);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
+ bret = camera_attr_set_stream_flip(hcamcorder->camera, idx);
+ CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
+ break;
+ case 'j': /* Setting > Jpeg quality */
+ g_print("*Jpeg quality !\n");
+ g_print("\n Select Jpeg quality \n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_image_quality(hcamcorder->camera, idx);
+ break;
+ case 'p': /* Setting > Picture format */
+ g_print("* Picture format!\n");
+ camera_foreach_supported_preview_format(hcamcorder->camera, preview_format_cb, NULL);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
+ bret = camera_set_preview_format(hcamcorder->camera, idx);
+ CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
+ break;
+ case 'E': /* Setting > EXIF orientation */
+ g_print("* EXIF Orientation\n");
+ g_print("\t 1. TOP_LEFT\n");
+ g_print("\t 2. TOP_RIGHT(flipped)\n");
+ g_print("\t 3. BOTTOM_RIGHT\n");
+ g_print("\t 4. BOTTOM_LEFT(flipped)\n");
+ g_print("\t 5. LEFT_TOP(flipped)\n");
+ g_print("\t 6. RIGHT_TOP\n");
+ g_print("\t 7. RIGHT_BOTTOM(flipped)\n");
+ g_print("\t 8. LEFT_BOTTOM\n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (idx < 1 || idx > 8)
+ g_print("Wrong INPUT[%d]!! \n", idx);
+ else
+ camera_attr_set_tag_orientation(hcamcorder->camera, idx);
+ break;
+ case 'F': /* Getting > Get Facing direction */
+ g_print("* Get facing direction of camera module\n");
+ err = camera_get_facing_direction(hcamcorder->camera, (camera_facing_direction_e *)&idx);
+ if (CAMERA_ERROR_NONE == err)
+ g_print("* Facing direction : %s(%d)\n", facing_direction[idx], idx);
+ else
+ g_print("* Error : %d\n", err);
+ break;
+ /* Display / Filter setting */
+ case 'v': /* Display visible */
+ g_print("* Display visible setting !\n");
+ g_print("\n Select Display visible \n");
+ for (i = 0 ; i < 2 ; i++)
+ g_print("\t %d. %s\n", i, visible_mode[i]);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (idx == 0 || idx == 1)
+ bret = camera_set_display_visible(hcamcorder->camera, idx);
+ else
+ g_print("invalid input %d", idx);
+ break;
+ case 'o': /* Setting > Display Mode */
+ g_print("* Display mode!\n");
+ for (i = 0 ; i < 5 ; i++)
+ g_print("%d. %s\n", i, display_mode[i]);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_set_display_mode(hcamcorder->camera, idx);
+ break;
+ case 'y': /* Setting > Rotate Display */
+ g_print("\n Select Rotate mode\n");
+ g_print("\t0. 0\n\t1. 90\n\t2. 180\n\t3. 270\n\n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ CHECK_MM_ERROR(camera_stop_preview(hcamcorder->camera));
+ bret = camera_set_display_rotation(hcamcorder->camera, idx);
+ CHECK_MM_ERROR(camera_start_preview(hcamcorder->camera));
+ break;
+ case 'Y': /* Setting > Flip Display */
+ g_print("\n Select Rotate mode\n");
+ g_print("\t0. NONE\n\t1. HORIZONTAL\n\t2. VERTICAL\n\t3. BOTH\n\n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_set_display_flip(hcamcorder->camera, idx);
+ break;
+ case 'g': /* Setting > Brightness */
+ g_print("*Brightness !\n");
+ camera_attr_get_brightness_range(hcamcorder->camera, &min, &max);
+ g_print("\n Select brightness min (%d) -max(%d) > ", min, max);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_brightness(hcamcorder->camera, idx);
+ break;
+ case 'c': /* Setting > Contrast */
+ g_print("*Contrast !\n");
+ camera_attr_get_contrast_range(hcamcorder->camera, &min, &max);
+ g_print("\n Select Contrast min(%d)-max(%d) > ", min, max);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_contrast(hcamcorder->camera, idx);
+ break;
+ case 'h': /* Setting > Hue */
+ g_print("*Hue !\n");
+ camera_attr_get_hue_range(hcamcorder->camera, &min, &max);
+ if (max >= min) {
+ g_print("\n Select Hue min(%d)-max(%d) > ", min, max);
err = scanf("%d", &idx);
- bret = camera_attr_set_effect(hcamcorder->camera, idx);
- break;
- case 'd': /* Setting > WDR */
- g_print("*WDR !\n");
- g_print("\n Select WDR Mode \n");
flush_stdin();
- for (i = 0 ; i < 2 ; i++)
- g_print("\t %d. %s\n", i+1, wdr_mode[i]);
- err = scanf("%d", &idx);
- if (idx == 1)
- bret = camera_attr_enable_auto_contrast(hcamcorder->camera, 0);
- else if (idx == 2)
- bret = camera_attr_enable_auto_contrast(hcamcorder->camera, 1);
+ bret = camera_attr_set_hue(hcamcorder->camera, idx);
+ } else {
+ g_print("\n Hue is not supported (%d,%d)\n", min, max);
+ }
+ break;
+ case 'w': /* Setting > White balance */
+ g_print("*White balance !\n");
+ g_print("\n Select White balance \n");
+ camera_attr_foreach_supported_whitebalance(hcamcorder->camera, white_balance_cb, NULL);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_whitebalance(hcamcorder->camera, idx);
+ break;
+ case 't': /* Setting > Color tone */
+ g_print("*Color tone !\n");
+ camera_attr_foreach_supported_effect(hcamcorder->camera, colortone_cb, NULL);
+ g_print("\n Select Color tone \n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_effect(hcamcorder->camera, idx);
+ break;
+ case 'd': /* Setting > WDR */
+ g_print("*WDR !\n");
+ g_print("\n Select WDR Mode \n");
+ for (i = 0 ; i < 2 ; i++)
+ g_print("\t %d. %s\n", i+1, wdr_mode[i]);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (idx == 1)
+ bret = camera_attr_enable_auto_contrast(hcamcorder->camera, 0);
+ else if (idx == 2)
+ bret = camera_attr_enable_auto_contrast(hcamcorder->camera, 1);
+ break;
+ case 'e': /* Setting > EV program mode */
+ g_print("* EV program mode!\n");
+ camera_attr_foreach_supported_scene_mode(hcamcorder->camera, program_mode_cb, NULL);
+ g_print("\n Select EV program mode \n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_scene_mode(hcamcorder->camera, idx);
+ break;
+ case 'R': /* Setting > Display ROI area */
+ g_print("* Set display roi area. Select x y width height \n");
+ err = scanf("%d %d %d %d", &x, &y, &width, &height);
+ flush_stdin();
+ camera_set_display_mode(hcamcorder->camera, CAMERA_DISPLAY_MODE_CUSTOM_ROI);
+ err = camera_attr_set_display_roi_area(hcamcorder->camera, x, y, width, height);
+ if (CAMERA_ERROR_NONE != err)
+ g_print("* Error : %d\n", err);
+
+ err = camera_attr_get_display_roi_area(hcamcorder->camera, &x, &y, &width, &height);
+ if (CAMERA_ERROR_NONE == err)
+ g_print("Current display roi area : x %d, y %d, width %d, height %d\n", x, y, width, height);
+ else
+ g_print("* Error : %d\n", err);
+ break;
+
+ /* ext. setting */
+ case 'z': /* Setting > Strobe setting */
+ g_print("*Strobe Mode\n");
+ camera_attr_foreach_supported_flash_mode(hcamcorder->camera, strobe_mode_cb, NULL);
+ g_print("\n Select Strobe Mode \n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+ bret = camera_attr_set_flash_mode(hcamcorder->camera, idx);
+ break;
+ case 'S': /* Setting > flash state */
+ g_print("*flash state\n");
+ err = camera_get_flash_state(camera_device, (camera_flash_state_e *)&idx);
+ if (CAMERA_ERROR_NONE == err)
+ g_print("Current flash state = %s\n", idx ? "ON" : "OFF");
+ else
+ g_print("* Error : %d\n", err);
+ break;
+ case 'x': /* Setting > Capture mode ,Muitishot? */
+ g_print("*Select Capture mode!\n");
+ g_print(" \n\t1. Stillshot mode\n\t2. Multishot mode\n\t3. HDR capture\n");
+ err = scanf("%d", &idx);
+ flush_stdin();
+
+ switch (idx) {
+ case 1:
+ g_print("stillshot mode selected and capture callback is set!!!!\n");
+ hcamcorder->is_multishot = FALSE;
+ camera_attr_set_hdr_mode(hcamcorder->camera, 0);
break;
- case 'e': /* Setting > EV program mode */
- g_print("* EV program mode!\n");
- camera_attr_foreach_supported_scene_mode(hcamcorder->camera, program_mode_cb, NULL);
- g_print("\n Select EV program mode \n");
- flush_stdin();
+ case 2:
+ g_print("HDR Capture mode selected\n");
+ hcamcorder->is_multishot = FALSE;
+ g_print("\nSelect HDR capture mode\n");
+ for (i = 0 ; i < 3 ; i++)
+ g_print("\t %d. %s\n", i, hdr_mode[i]);
err = scanf("%d", &idx);
- bret = camera_attr_set_scene_mode(hcamcorder->camera, idx);
- break;
-
- /* ext. setting */
- case 'z': /* Setting > Strobe setting */
- g_print("*Strobe Mode\n");
- camera_attr_foreach_supported_flash_mode(hcamcorder->camera, strobe_mode_cb, NULL);
- g_print("\n Select Strobe Mode \n");
flush_stdin();
- err = scanf("%d", &idx);
- bret = camera_attr_set_flash_mode(hcamcorder->camera, idx);
- break;
- case 'S': /* Setting > flash state */
- g_print("*flash state\n");
- err = camera_get_flash_state(cam_info, (camera_flash_state_e *)&idx);
- if (CAMERA_ERROR_NONE == err)
- g_print("Current flash state = %s\n", idx ? "ON" : "OFF");
+ if (idx >= CAMERA_ATTR_HDR_MODE_DISABLE && idx <= CAMERA_ATTR_HDR_MODE_KEEP_ORIGINAL)
+ bret = camera_attr_set_hdr_mode(hcamcorder->camera, idx);
else
- g_print("* Error : %d\n", err);
+ g_print("invalid input %d\n", idx);
break;
- case 'x': /* Setting > Capture mode ,Muitishot? */
- g_print("*Select Capture mode!\n");
- flush_stdin();
- g_print(" \n\t1. Stillshot mode\n\t2. Multishot mode\n\t3. HDR capture\n");
- err = scanf("%d", &idx);
-
- switch (idx) {
- case 1:
- g_print("stillshot mode selected and capture callback is set!!!!\n");
- hcamcorder->isMultishot = FALSE;
- camera_attr_set_hdr_mode(hcamcorder->camera, 0);
- break;
- case 2:
- g_print("HDR Capture mode selected\n");
- hcamcorder->isMultishot = FALSE;
- g_print("\nSelect HDR capture mode\n");
- flush_stdin();
- for (i = 0 ; i < 3 ; i++)
- g_print("\t %d. %s\n", i+1, hdr_mode[i]);
- err = scanf("%d", &idx);
- bret = camera_attr_set_hdr_mode(hcamcorder->camera, idx-1);
- break;
- default:
- g_print("Wrong input, select again!!\n");
- break;
- }
+ default:
+ g_print("Wrong input, select again!!\n");
break;
- case 'l': /* Setting > Face detection setting */
+ }
+ break;
+ case 'l': /* Setting > Face detection setting */
+ if (camera_is_supported_face_detection(hcamcorder->camera)) {
g_print("* Face detect mode !\n");
- flush_stdin();
for (i = 0 ; i < 2 ; i++)
- g_print("\t %d. %s \n", i+1, detection_mode[i]);
+ g_print("\t %d. %s \n", i, detection_mode[i]);
err = scanf("%d", &idx);
- if (camera_is_supported_face_detection(hcamcorder->camera)) {
- if (idx >= 0 && idx < 2)
- bret = camera_start_face_detection(hcamcorder->camera, _face_detected, NULL);
- } else
- g_print("face detection_not supported");
- break;
- case 'k': /* Setting > Anti-handshake */
- g_print("*Anti-handshake !\n");
- g_print("\n Select Anti-handshake mode \n");
flush_stdin();
- for (i = 0; i < 2; i++)
- g_print("\t %d. %s\n", i+1, ahs_mode[i]);
- err = scanf("%d", &idx);
- bret = camera_attr_enable_anti_shake(hcamcorder->camera, idx-1);
- break;
- case 'K': /* Setting > Video-stabilization */
- g_print("*Video-stabilization !\n");
- g_print("\n Select Video-stabilization mode \n");
- flush_stdin();
- for (i = 0 ; i < 2 ; i++)
- g_print("\t %d. %s\n", i+1, vs_mode[i]);
- err = scanf("%d", &idx);
- if (idx == 1) {
- g_print("\n Restart preview with NV12 and 720p resolution\n");
- err = camera_stop_preview(hcamcorder->camera);
- camera_set_preview_resolution(hcamcorder->camera, 1280, 720);
- camera_set_preview_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_NV12);
- camera_attr_enable_video_stabilization(hcamcorder->camera, idx-1);
- if (err == 0) {
- err = camera_start_preview(hcamcorder->camera);
- if (err != 0)
- g_print("\n Restart FAILED! %x\n", err);
- }
- }
- break;
- case 'u': /* Touch AF area */
- g_print("* Touch AF area !\n");
- flush_stdin();
- g_print("\n Input x,y,width,height \n");
- err = scanf("%d,%d,%d,%d", &x, &y, &width, &height);
- err = camera_attr_set_af_area(hcamcorder->camera, width, height);
- if (err != 0)
- g_print("Failed to set touch AF area.(%x)\n", err);
+ if (idx == 0)
+ bret = camera_stop_face_detection(hcamcorder->camera);
+ else if (idx == 1)
+ bret = camera_start_face_detection(hcamcorder->camera, _face_detected, NULL);
else
- g_print("Succeed to set touch AF area.\n");
- break;
- case 'b': /* back */
- hcamcorder->menu_state = MENU_STATE_MAIN;
- break;
- default:
- g_print("\t Invalid input \n");
+ g_print("\n invalid input [%d]\n\n", idx);
+ } else {
+ g_print("face detection_not supported");
+ }
+ break;
+ case 'k': /* Setting > Anti-handshake */
+ g_print("*Anti-handshake !\n");
+ g_print("\n Select Anti-handshake mode \n");
+ for (i = 0; i < 2; i++)
+ g_print("\t %d. %s\n", i, ahs_mode[i]);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (idx == 0 || idx == 1)
+ bret = camera_attr_enable_anti_shake(hcamcorder->camera, idx);
+ else
+ g_print("invalid input %d\n", idx);
+ break;
+ case 'K': /* Setting > Video-stabilization */
+ g_print("*Video-stabilization !\n");
+ g_print("\n Select Video-stabilization mode \n");
+ for (i = 0 ; i < 2 ; i++)
+ g_print("\t %d. %s\n", i, vs_mode[i]);
+ err = scanf("%d", &idx);
+ flush_stdin();
+ if (idx < 0 || idx > 1) {
+ g_print("invalid input %d\n", idx);
break;
}
- } else {
- g_print("\t Invalid mode, back to upper menu \n");
+
+ if (idx == 1) {
+ g_print("\n Restart preview with NV12 and 720p resolution\n");
+ err = camera_stop_preview(hcamcorder->camera);
+ g_print("stop preview result 0x%x\n", err);
+ camera_set_preview_resolution(hcamcorder->camera, 1280, 720);
+ camera_set_preview_format(hcamcorder->camera, CAMERA_PIXEL_FORMAT_NV12);
+ }
+
+ bret = camera_attr_enable_video_stabilization(hcamcorder->camera, idx);
+
+ if (idx == 1) {
+ err = camera_start_preview(hcamcorder->camera);
+ if (err != CAMERA_ERROR_NONE)
+ g_print("\n Restart FAILED! 0x%x\n", err);
+ }
+ break;
+ case 'u': /* Touch AF area */
+ g_print("* Touch AF area !\n");
+ g_print("\n Input x,y,width,height \n");
+ err = scanf("%d,%d,%d,%d", &x, &y, &width, &height);
+ flush_stdin();
+ err = camera_attr_set_af_area(hcamcorder->camera, width, height);
+ if (err != 0)
+ g_print("Failed to set touch AF area.(%x)\n", err);
+ else
+ g_print("Succeed to set touch AF area.\n");
+ break;
+ case 'n': /* file path */
+ g_print("* File path !\n");
+ g_print("\n Input file path to save captured data(string) : ");
+ if (fgets(hcamcorder->file_path, sizeof(hcamcorder->file_path), stdin)) {
+ hcamcorder->file_path[strlen(hcamcorder->file_path) - 1] = '\0';
+ g_print("\ncaptured data will be saved in [%s]\n", hcamcorder->file_path);
+ } else {
+ g_print("\nset file path failed\n");
+ }
+ break;
+ case 'b': /* back */
hcamcorder->menu_state = MENU_STATE_MAIN;
+ break;
+ default:
+ g_print("\t Invalid input \n");
+ break;
}
g_print("\t bret : 0x%x \n", bret);
* @remark
* @see
*/
-static gboolean cmd_input(GIOChannel *channel)
+static gboolean cmd_input(GIOChannel *channel, GIOCondition condition, gpointer data)
{
gchar *buf = NULL;
gsize read_size;
GError *g_error = NULL;
- LOGD("ENTER");
+ g_print("\n\tENTER\n");
g_io_channel_read_line(channel, &buf, &read_size, NULL, &g_error);
if (g_error) {
- LOGD("g_io_channel_read_chars error");
+ g_print("\n\tg_io_channel_read_chars error\n");
g_error_free(g_error);
g_error = NULL;
}
if (buf) {
g_strstrip(buf);
- LOGD("Menu Status : %d", hcamcorder->menu_state);
+ g_print("\n\tMenu Status : %d\n", hcamcorder->menu_state);
switch (hcamcorder->menu_state) {
+ case MENU_STATE_INIT:
+ mode_change(buf[0]);
+ break;
case MENU_STATE_MAIN:
main_menu(buf[0]);
break;
print_menu();
} else {
- LOGD("No read input");
+ g_print("\n\tNo read input\n");
}
return TRUE;
static gboolean init_handle()
{
- hcamcorder->mode = MODE_VIDEO_CAPTURE; /* image(capture)/video(recording) mode */
- hcamcorder->isMultishot = FALSE;
- hcamcorder->stillshot_count = 0; /* total stillshot count */
- hcamcorder->multishot_count = 0; /* total multishot count */
- hcamcorder->stillshot_filename = STILL_CAPTURE_FILE_PATH_NAME; /* stored filename of stillshot */
- hcamcorder->multishot_filename = MULTI_CAPTURE_FILE_PATH_NAME; /* stored filename of multishot */
- hcamcorder->menu_state = MENU_STATE_MAIN;
- hcamcorder->isMute = FALSE;
+ hcamcorder->is_multishot = FALSE;
+ hcamcorder->stillshot_count = 0;
+ hcamcorder->multishot_count = 0;
+ snprintf(hcamcorder->file_path, MAX_FILE_PATH_LENGTH, DEFAULT_FILE_PATH);
+ hcamcorder->menu_state = MENU_STATE_INIT;
hcamcorder->elapsed_time = 0;
- multishot_num = IMAGE_CAPTURE_COUNT_MULTI;
return TRUE;
}
-void _preview_cb(camera_preview_data_s *frame, void *user_data)
-{
-#if 0
- FILE *fp = fopen("/opt/usr/media/test.yuv", "a");
- if (fp == NULL) {
- g_print("\n============ file open failed ===========================\n");
- return;
- }
-
- switch (frame->num_of_planes) {
- case 1:
- fwrite(frame->data.single_plane.yuv, 1, frame->data.single_plane.size, fp);
- case 2:
- fwrite(frame->data.double_plane.y, 1, frame->data.double_plane.y_size, fp);
- fwrite(frame->data.double_plane.uv, 1, frame->data.double_plane.uv_size, fp);
- case 3:
- fwrite(frame->data.triple_plane.y, 1, frame->data.triple_plane.y_size, fp);
- fwrite(frame->data.triple_plane.u, 1, frame->data.triple_plane.u_size, fp);
- fwrite(frame->data.triple_plane.v, 1, frame->data.triple_plane.v_size, fp);
- default:
- break;
- }
-
- g_print("file write done ---\n");
-
- fclose(fp);
- fp = NULL;
-#else
- g_print("----- preview callback - format %d, %dx%d, num plane %d\n",
- frame->format, frame->width, frame->height, frame->num_of_planes);
-#endif
-
- return;
-}
/**
* This function is to change camcorder mode.
*
- * @param type [in] image(capture)/video(recording) mode
+ * @param buf [in] user input
*
* @return This function returns TRUE/FALSE
* @remark
* @see other functions
*/
-static gboolean mode_change()
+static gboolean mode_change(gchar buf)
{
int err = 0;
- char media_type = '\0';
+ int camera_type = 0;
+ int display_type = 0;
bool check = FALSE;
- camera_display_type_e display_type = CAMERA_DISPLAY_TYPE_EVAS;
+ camera_device_state_e device_state = CAMERA_DEVICE_STATE_NULL;
- init_handle();
- while (!check) {
- g_print("\n\t=======================================\n");
- g_print("\t CAMERA_TESTSUITE\n");
- g_print("\t=======================================\n");
- g_print("\t '1' Video Capture - Front Camera\n");
- g_print("\t '2' Video Capture - Rear Camera\n");
- g_print("\t 'q' Exit\n");
- g_print("\t=======================================\n");
+ switch (buf) {
+ case '1':
+ while (1) {
+ g_print("\n\tEnter the Camera Type[0:Local, 1:Network] : ");
+ err = scanf("%d", &camera_type);
+ flush_stdin();
+ if (err == EOF) {
+ g_print("\t!!!read input error!!!\n");
+ continue;
+ }
+
+ if (camera_type != 0 && camera_type != 1) {
+ g_print("\t Invalid camera type(%d)\n", camera_type);
+ continue;
+ }
+
+ g_print("\n\tEnter the Camera Device[0 ~ 9] : ");
+ err = scanf("%d", (int *)&camera_device);
+ flush_stdin();
+ if (err == EOF) {
+ g_print("\t!!!read input error!!!\n");
+ continue;
+ }
+
+ if (camera_device < 0 || camera_device > 9) {
+ g_print("\t Invalid camera device(%d)\n", camera_device);
+ continue;
+ }
- g_print("\t Enter the media type:\n\t");
+ hcamcorder->type = camera_device;
- err = scanf("%c", &media_type);
+ break;
+ }
+ break;
+ case '2':
+ err = camera_add_device_state_changed_cb(_camera_device_state_changed_cb,
+ NULL, &g_camera_device_changed_cb_id);
+ g_print("add result 0x%x - cb id %d\n", err, g_camera_device_changed_cb_id);
+ return FALSE;
+ case '3':
+ if (g_camera_device_changed_cb_id > 0) {
+ err = camera_remove_device_state_changed_cb(g_camera_device_changed_cb_id);
+ g_camera_device_changed_cb_id = 0;
+ g_print("remove result 0x%x\n", err);
+ } else {
+ g_print("invalid callback id %d\n", g_camera_device_changed_cb_id);
+ }
+ return FALSE;
+ case '4':
+ err = camera_get_device_state(CAMERA_DEVICE_CAMERA0, &device_state);
+ g_print("get result 0x%x - state %d\n", err, device_state);
+ return FALSE;
+ case 'q':
+ g_print("\t Quit Camcorder Testsuite!!\n");
+ elm_exit();
+ return FALSE;
+ default:
+ g_print("\t Invalid media type(%c)\n", buf);
+ return FALSE;
+ }
+
+ g_print("\n[camcorder_create - type %d, device %d]\n", camera_type, camera_device);
+
+ gettimeofday(&previous_time, NULL);
+
+ g_timer_reset(timer);
+
+ if (camera_type)
+ err = camera_create_network(camera_device, &hcamcorder->camera);
+ else
+ err = camera_create(camera_device, &hcamcorder->camera);
+
+ g_print("[camera_create() : %12.6lfs]\n", g_timer_elapsed(timer, NULL));
+
+ if (err != 0) {
+ g_print("\n\tmmcamcorder_create = 0x%x\n", err);
+ return -1;
+ }
+
+ while (!check) {
+ g_print("\n\tEnter the Display Type [1:Overlay, 2:Evas, 3:None] : ");
+ err = scanf("%d", &display_type);
+ flush_stdin();
if (err == EOF) {
g_print("\t!!!read input error!!!\n");
continue;
}
- switch (media_type) {
- case '1':
- hcamcorder->mode = MODE_VIDEO_CAPTURE;
- cam_info = CAMERA_DEVICE_CAMERA1;
+ switch (display_type) {
+ case 1:
+ camera_set_display(hcamcorder->camera, CAMERA_DISPLAY_TYPE_OVERLAY, GET_DISPLAY(ad.win));
check = TRUE;
break;
- case '2':
- hcamcorder->mode = MODE_VIDEO_CAPTURE;
- cam_info = CAMERA_DEVICE_CAMERA0;
+ case 2:
+ camera_set_display(hcamcorder->camera, CAMERA_DISPLAY_TYPE_EVAS, GET_DISPLAY(ad.eo));
+ check = TRUE;
+ break;
+ case 3:
+ camera_set_display(hcamcorder->camera, CAMERA_DISPLAY_TYPE_NONE, NULL);
check = TRUE;
break;
- case 'q':
- g_print("\t Quit Camcorder Testsuite!!\n");
- hcamcorder->mode = -1;
- if (g_main_loop_is_running(g_loop))
- g_main_loop_quit(g_loop);
-
- return FALSE;
default:
- g_print("\t Invalid media type(%d)\n", media_type);
- continue;
+ g_print("\t Invalid display type(%d)\n", display_type);
+ break;
}
}
- LOGD("camcorder_create");
- g_get_current_time(&previous_time);
- g_timer_reset(timer);
-
- err = camera_create(cam_info, &hcamcorder->camera);
- LOGD("camera_create() : %12.6lfs", g_timer_elapsed(timer, NULL));
-
- if (err != 0) {
- LOGE("mmcamcorder_create = %x", err);
- return -1;
- } else {
- camera_state = CAMERA_STATE_NONE;
- }
- camera_print_state = CAMERA_STATE_CREATED;
-
+ camera_set_error_cb(hcamcorder->camera, _camera_error_cb, NULL);
camera_set_state_changed_cb(hcamcorder->camera, _camera_state_changed_cb, NULL);
camera_set_interrupted_cb(hcamcorder->camera, _camera_interrupted_cb, NULL);
- camera_set_display(hcamcorder->camera, display_type,
- (display_type == CAMERA_DISPLAY_TYPE_OVERLAY)?GET_DISPLAY(win):GET_DISPLAY(eo));
+ camera_set_interrupt_started_cb(hcamcorder->camera, _camera_interrupt_started_cb, NULL);
camera_set_display_mode(hcamcorder->camera, CAMERA_DISPLAY_MODE_LETTER_BOX);
/*camera_set_display_rotation(hcamcorder->camera, CAMERA_ROTATION_90);*/
/*camera_set_display_flip(hcamcorder->camera, CAMERA_FLIP_VERTICAL);*/
-
/*camera_set_preview_cb(hcamcorder->camera, _preview_cb, hcamcorder->camera);*/
camera_start_preview(hcamcorder->camera);
- g_get_current_time(¤t_time);
- timersub(¤t_time, &previous_time, &res);
- LOGD("Camera Starting Time : %ld.%lds", res.tv_sec, res.tv_usec);
- camera_print_state = CAMERA_STATE_PREVIEW;
+
+ gettimeofday(¤t_time, NULL);
+ timersub(¤t_time, &previous_time, &result_time);
+
+ g_print("\n\tCamera Starting Time : %ld.%lds\n", result_time.tv_sec, result_time.tv_usec);
+
+ hcamcorder->menu_state = MENU_STATE_MAIN;
return TRUE;
}
-
-/**
- * This function is the example main function for mmcamcorder API.
- *
- * @param
- *
- * @return This function returns 0.
- * @remark
- * @see other functions
- */
-int main(int argc, char **argv)
+static int app_create(void *data)
{
+ appdata *app_data = data;
+ int w = 0;
+ int h = 0;
+ Evas_Object *win = NULL;
+ Evas_Object *eo = NULL;
+ Evas_Object *bg = NULL;
+ Evas_Object *rect = NULL;
+
+ if (app_data == NULL) {
+ g_print("\t\nappdata is NULL\n");
+ return 0;
+ }
- int bret;
- int w, h;
- elm_init(argc, argv);
+ /* use gl backend */
+ elm_config_accel_preference_set("opengl");
- win = elm_win_add(NULL, "VIDEO OVERLAY", ELM_WIN_BASIC);
+ win = elm_win_add(NULL, "camera_test", ELM_WIN_BASIC);
if (win) {
- elm_win_title_set(win, "TITLE");
+ elm_win_title_set(win, "camera_test");
elm_win_borderless_set(win, EINA_TRUE);
elm_win_screen_size_get(win, NULL, NULL, &w, &h);
+ g_print("\n\tscreen size %dx%d\n\n", w, h);
evas_object_resize(win, w, h);
elm_win_autodel_set(win, EINA_TRUE);
-#ifdef HAVE_WAYLAND
elm_win_alpha_set(win, EINA_TRUE);
-#endif /* HAVE_WAYLAND */
} else {
g_print("\n\tfailed to get window\n\n");
return 1;
elm_win_resize_object_add(win, rect);
evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(rect);
- elm_win_activate(win);
- evas_object_show(win);
/* Create evas image object for EVAS surface */
eo = evas_object_image_add(evas_object_evas_get(win));
- evas_object_image_size_set(eo, 960, 720);
- evas_object_image_fill_set(eo, 0, 0, 960, 720);
- evas_object_resize(eo, 960, 720);
+ evas_object_image_size_set(eo, w, h);
+ evas_object_image_fill_set(eo, 0, 0, w, h);
+ evas_object_resize(eo, w, h);
+ evas_object_show(eo);
elm_win_activate(win);
evas_object_show(win);
-#if !GLIB_CHECK_VERSION(2, 35, 0)
- if (!g_thread_supported())
- g_thread_init(NULL);
-#endif
+ app_data->win = win;
+ app_data->eo = eo;
timer = g_timer_new();
-
- hcamcorder = (cam_handle_t *) g_malloc0(sizeof(cam_handle_t));
- camera_state = CAMERA_STATE_NONE;
-
g_timer_reset(timer);
- bret = mode_change();
- if (!bret)
- return bret;
+ init_handle();
print_menu();
- g_loop = g_main_loop_new(NULL, FALSE);
-
- stdin_channel = g_io_channel_unix_new(fileno(stdin));/* read from stdin */
- g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)cmd_input, NULL);
-
- LOGD("RUN main loop");
+ return 0;
+}
- g_main_loop_run(g_loop);
+static int app_terminate(void *data)
+{
+ appdata *app_data = data;
- LOGD("STOP main loop");
+ if (app_data == NULL) {
+ g_print("\n\tappdata is NULL\n");
+ return 0;
+ }
if (timer) {
g_timer_stop(timer);
g_timer_destroy(timer);
timer = NULL;
}
+
+ return 0;
+}
+
+
+/**
+ * This function is the example main function for mmcamcorder API.
+ *
+ * @param
+ *
+ * @return This function returns 0.
+ * @remark
+ * @see other functions
+ */
+int main(int argc, char **argv)
+{
+ int bret;
+
+ hcamcorder = (cam_handle_t *) g_malloc0(sizeof(cam_handle_t));
+
+ stdin_channel = g_io_channel_unix_new(fileno(stdin));/* read from stdin */
+ g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)cmd_input, NULL);
+
+ memset(&ad, 0x0, sizeof(appdata));
+ ops.data = &ad;
+
+ bret = appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+
+ g_print("\n\treturn appcore_efl : %d\n\n", bret);
+
g_free(hcamcorder);
- g_main_loop_unref(g_loop);
g_io_channel_unref(stdin_channel);
return bret;
}
-
/*EOF*/