INCLUDE(FindPkgConfig)
pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog sqlite3 capi-media-image-util capi-media-vision
- libmedia-utils uuid libtzplatform-config)
+ libmedia-utils libtzplatform-config)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
#define DB_TABLE_FACE "face"
#define DB_TABLE_FACE_SCAN_LIST "face_scan_list"
#define DB_TABLE_MEDIA "media"
-#define FACE_ITEM "face_uuid, media_uuid, face_rect_x , face_rect_y, face_rect_w , face_rect_h, orientation"
+#define FACE_ITEM "media_uuid, face_rect_x , face_rect_y, face_rect_w , face_rect_h, orientation"
#define SELECT_MEDIA_INFO_BY_FILE_PATH_FROM_DB "SELECT media_uuid, width, height, orientation, mime_type, modified_time FROM media WHERE path = '%q';"
#define SELECT_SCAN_INFO_BY_MEDIA_ID "SELECT modified_time FROM "DB_TABLE_FACE_SCAN_LIST" WHERE media_uuid = '%q';"
-#define INSERT_FACE_ITEM_TO_DB "INSERT OR IGNORE INTO " DB_TABLE_FACE" (" FACE_ITEM") VALUES ('%q', '%q', %d, %d, %d, %d, %d);"
+#define INSERT_FACE_ITEM_TO_DB "INSERT OR IGNORE INTO " DB_TABLE_FACE" (" FACE_ITEM") VALUES ('%q', %d, %d, %d, %d, %d);"
typedef struct {
- char *face_uuid;
char *media_uuid;
unsigned int face_rect_x;
unsigned int face_rect_y;
int dcm_svc_db_connect(uid_t uid);
int dcm_svc_db_disconnect();
int dcm_svc_db_get_scan_image_info_by_path(const char *file_path, dcm_svc_item_s **scan_item);
-int dcm_svc_db_generate_uuid(dcm_face_item_s **face);
int dcm_svc_db_insert_face_to_db(dcm_face_item_s *face);
int dcm_svc_db_update_color_to_db(const dcm_color_item_s color);
int dcm_svc_db_insert_face_to_face_scan_list(dcm_svc_item_s *scan_item);
Name: dcm-service
Summary: A media DCM(Digital Contents Management) Service
-Version: 0.1.10
+Version: 0.1.11
Release: 0
Group: Multimedia/Service
License: Apache-2.0
BuildRequires: pkgconfig(capi-media-vision)
BuildRequires: pkgconfig(libmedia-utils)
BuildRequires: pkgconfig(libtzplatform-config)
-BuildRequires: pkgconfig(uuid)
%description
This package provides a media DCM(Digital Contents Management) service
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <uuid/uuid.h>
#include <dcm_svc_db.h>
#include <dcm_svc_debug.h>
return ret;
}
-int dcm_svc_db_generate_uuid(dcm_face_item_s **face)
-{
- int ret = MS_MEDIA_ERR_NONE;
- uuid_t uuid_value;
- static char uuid_unparsed[50] = {0, };
-
- dcm_debug_fenter();
- dcm_retvm_if(face == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid face");
-
- uuid_generate(uuid_value);
- uuid_unparse(uuid_value, uuid_unparsed);
-
- (*face)->face_uuid = g_strdup(uuid_unparsed);
-
- if ((*face)->face_uuid == NULL)
- ret = MS_MEDIA_ERR_INTERNAL;
- else
- dcm_debug("set face_uuid :%s", (*face)->face_uuid);
-
- dcm_debug_fleave();
-
- return ret;
-}
-
int dcm_svc_db_insert_face_to_db(dcm_face_item_s *face)
{
int ret = MS_MEDIA_ERR_NONE;
dcm_retvm_if(db_handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid db_handle");
dcm_retvm_if(face == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid face");
- dcm_retvm_if(face->face_uuid == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid face_uuid");
- query_string = sqlite3_mprintf(INSERT_FACE_ITEM_TO_DB, face->face_uuid, face->media_uuid, face->face_rect_x, face->face_rect_y, face->face_rect_w, face->face_rect_h, face->orientation);
+ query_string = sqlite3_mprintf(INSERT_FACE_ITEM_TO_DB, face->media_uuid, face->face_rect_x, face->face_rect_y, face->face_rect_w, face->face_rect_h, face->orientation);
dcm_debug("query[%s]", query_string);
g_mutex_trylock(&gMutexLock);
dcm_retvm_if(scan_item->media_uuid == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid media_uuid");
query_string = sqlite3_mprintf("UPDATE %s SET modified_time = %d WHERE media_uuid='%q'", DB_TABLE_FACE_SCAN_LIST, scan_item->modified_time, scan_item->media_uuid);
-
dcm_debug("query[%s]", query_string);
g_mutex_trylock(&gMutexLock);
dcm_retvm_if(media_uuid == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid media_uuid");
query_string = sqlite3_mprintf("DELETE FROM %s WHERE media_uuid='%q' AND user_marked = 0", DB_TABLE_FACE, media_uuid);
-
dcm_sec_debug("query[%s]", query_string);
g_mutex_trylock(&gMutexLock);
dcm_face_item_s *_face = (dcm_face_item_s *)data;
DCM_CHECK(_face);
- DCM_SAFE_FREE(_face->face_uuid);
DCM_SAFE_FREE(_face->media_uuid);
DCM_SAFE_FREE(_face);
face->media_uuid = g_strdup(scan_item->media_uuid);
/* Insert face rectangle into database */
- ret = dcm_svc_db_generate_uuid(&face);
- if (ret != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed to set uuid! ret: %d", ret);
- goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
- }
ret = dcm_svc_db_insert_face_to_db(face);
if (ret != MS_MEDIA_ERR_NONE) {
dcm_error("Failed to insert face item into db! ret: %d", ret);
memset(&image_info, 0, sizeof(dcm_image_info_s));
image_info.decode_type = DCM_IMAGE_FORMAT_I420;
- /* Process scan operation if the file exists */
- if (g_file_test(scan_item->file_path, (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) == TRUE) {
- /* Get necessary information from db again.
- * Media information will be inserted after face is detected.
- * If media uuid does not exist, retry is needed */
+ if (g_file_test(scan_item->file_path, G_FILE_TEST_IS_REGULAR)) {
ret = dcm_svc_db_check_scanned_by_media_uuid(scan_item->media_uuid, scan_item->modified_time, &scan_status);
- if (ret != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed to get scan item info from db! err: %d", ret);
- return ret;
- }
+ dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed to get scan item info from db(%d)", ret);
- /* It is possible that when single and async scan for the same image is in the list.
- * If the media uuid is already scanned, skip this scan. */
if (scan_status == FACE_SCAN_NO_NEEDED) {
dcm_warn("This media is scanned already! Skip...");
DCM_SAFE_FREE(image_info.pixel);
dcm_debug("Need to Scan");
}
- dcm_sec_debug("scan file path : [%s]", scan_item->file_path);
- dcm_sec_debug("scan media uuid : [%s]", scan_item->media_uuid);
+ dcm_sec_debug("File path[%s] media id[%s]", scan_item->file_path, scan_item->media_uuid);
image_info.original_width = scan_item->image_width;
image_info.original_height = scan_item->image_height;
image_info.orientation = scan_item->image_orientation;
- dcm_info("scan media w : [%d], h : [%d], orientation : [%d]", image_info.original_width, image_info.original_height, scan_item->image_orientation);
-
if (strcmp(scan_item->mime_type, MIME_TYPE_JPEG) == 0) {
image_info.decode_type = DCM_IMAGE_FORMAT_RGB;
} else if ((strcmp(scan_item->mime_type, MIME_TYPE_PNG) == 0) ||
(strcmp(scan_item->mime_type, MIME_TYPE_BMP) == 0)) {
image_info.decode_type = DCM_IMAGE_FORMAT_RGBA;
} else {
- dcm_error("Failed not supported type! (%s)", scan_item->mime_type);
+ dcm_error("Failed not supported type(%s)", scan_item->mime_type);
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
ret = dcm_decode_image((const char *) (scan_item->file_path), image_info.decode_type, scan_item->mime_type,
- image_info.orientation, FALSE, &(image_info.pixel), &(image_info.size),
- &(image_info.buffer_width), &(image_info.buffer_height));
- if (ret != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed dcm_decode_image! err: %d", ret);
- return ret;
- }
+ image_info.orientation, FALSE, &(image_info.pixel), &(image_info.size), &(image_info.buffer_width), &(image_info.buffer_height));
+ dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed dcm_decode_image(%d)", ret);
- dcm_info("Image info width: %d, height: %d, buf_width: %d, buf_height: %d",
- image_info.original_width, image_info.original_height, image_info.buffer_width, image_info.buffer_height);
+ dcm_info("Image info W[%d] H[%d] Orient[%d] buf_w[%d] buf_h[%d]",
+ image_info.original_width, image_info.original_height, scan_item->image_orientation, image_info.buffer_width, image_info.buffer_height);
if (scan_status == FACE_SCAN_REFRESH_NEEDED) {
ret = dcm_svc_db_delete_face_from_db(scan_item->media_uuid);
/* Free image buffer */
DCM_SAFE_FREE(image_info.pixel);
} else {
- dcm_warn("The file does not exist! ");
+ dcm_warn("The file does not exist");
ret = MS_MEDIA_ERR_INVALID_PATH;
}
int sock = -1;
int client_sock = -1;
int ret = 0;
- int face_count = 0;;
+ int face_count = 0;
memset((void *)&recv_msg, 0, sizeof(recv_msg));
return TRUE;
}
- dcm_info("Received msg_type : [%d]", recv_msg.msg_type);
- dcm_sec_info("Received uid : [%d]", recv_msg.uid);
- dcm_sec_info("Received msg : [%s]", recv_msg.msg);
+ dcm_sec_info("msg_type[%d] uid[%d] msg[%s]", recv_msg.msg_type, recv_msg.uid, recv_msg.msg);
if (recv_msg.msg_type == DCM_MSG_REQUEST_KILL_SERVER) {
dcm_warn("Receive DCM_MSG_REQUEST_KILL_SERVER");
__dcm_svc_kill_service();
} else if (recv_msg.msg_type == DCM_MSG_REQUEST_MEDIA) {
- dcm_debug("Scan single");
ret = dcm_scan_single(recv_msg.msg, recv_msg.uid, &face_count);
- dcm_debug("Scan single result: ret : [%d] face_count : [%d])", ret, face_count);
- if (ret == MS_MEDIA_ERR_NONE) {
+ dcm_debug("Scan single result: ret[%d] face_count[%d]", ret, face_count);
+ if (ret == MS_MEDIA_ERR_NONE)
ret = dcm_ipc_send_client_message(client_sock, DCM_MSG_REQUEST_MEDIA, face_count, recv_msg.msg, DCM_IPC_PORT_MS_RECV);
- if (ret != MS_MEDIA_ERR_NONE)
- dcm_error("Failed to dcm_ipc_send_client_message! err: %d", ret);
- } else {
+ else
ret = dcm_ipc_send_client_message(client_sock, DCM_MSG_REQUEST_MEDIA, ret, recv_msg.msg, DCM_IPC_PORT_MS_RECV);
- if (ret != MS_MEDIA_ERR_NONE)
- dcm_error("Failed to dcm_ipc_send_client_message! err: %d", ret);
- }
+
+ if (ret != MS_MEDIA_ERR_NONE)
+ dcm_error("Failed to dcm_ipc_send_client_message(%d)", ret);
} else {
- dcm_debug("createDcmSvcReadSocket, invalid message(%d).", recv_msg.msg_type);
+ dcm_debug("Invalid message(%d)", recv_msg.msg_type);
}
dcm_ipc_close_socket(client_sock);
GSource *source = NULL;
GIOChannel *channel = NULL;
GMainContext *context = NULL;
- /* threads related */
/* Create and bind new socket to main_loop */
if (dcm_ipc_create_socket(&sockfd, DCM_IPC_PORT_DCM_RECV) != MS_MEDIA_ERR_NONE) {