EXPORT_API int dcm_face_create(__inout dcm_face_h *handle)
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
- dcm_retvm_if(handle == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid handle");
+ dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
FaceHandleT *pFaceHandle = (FaceHandleT *)calloc(1, sizeof(FaceHandleT));
- dcm_retvm_if(pFaceHandle == NULL, FACE_ERROR_OUT_OF_MEMORY, "malloc fail");
+ dcm_retvm_if(pFaceHandle == NULL, MS_MEDIA_ERR_OUT_OF_MEMORY, "malloc fail");
ret = _face_handle_create(&(pFaceHandle->fengine));
- if (ret != FACE_ERROR_NONE) {
+ if (ret != MS_MEDIA_ERR_NONE) {
dcm_error("fail to _face_handle_create");
dcm_face_destroy((dcm_face_h)pFaceHandle);
return ret;
EXPORT_API int dcm_face_destroy(__in dcm_face_h handle)
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
dcm_info("face destroy. handle=0x%08x", handle);
- dcm_retvm_if(handle == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid handle");
+ dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
ret = _face_handle_destroy(handle->fengine);
- if (ret != FACE_ERROR_NONE) {
+ if (ret != MS_MEDIA_ERR_NONE) {
dcm_error("fail to _face_handle_destroy");
return ret;
}
dcm_debug_fenter();
- dcm_retvm_if(handle == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid handle");
- dcm_retvm_if(buffer == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid buffer");
+ dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
+ dcm_retvm_if(buffer == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid buffer");
switch (colorspace) {
case FACE_IMAGE_COLORSPACE_YUV420:
data = (unsigned char *)calloc(1, size);
if (data == NULL) {
dcm_error("Not allocate memory");
- return FACE_ERROR_OUT_OF_MEMORY;
+ return MS_MEDIA_ERR_OUT_OF_MEMORY;
}
memcpy(data, buffer, size);
break;
default:
dcm_error("Invalid colorspace : [%d]", colorspace);
- return FACE_ERROR_INVALID_PARAMTER;
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
}
if (_handle->image_info != NULL)
if (_handle->image_info == NULL) {
dcm_error("Out of memory");
DCM_SAFE_FREE(data);
- return FACE_ERROR_OUT_OF_MEMORY;
+ return MS_MEDIA_ERR_OUT_OF_MEMORY;
}
_handle->image_info->data = data;
dcm_debug_fleave();
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
}
EXPORT_API int dcm_face_get_face_info(__in dcm_face_h handle, __out face_info_s *face_info)
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
dcm_debug_fenter();
- dcm_retvm_if(handle == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid handle");
- dcm_retvm_if(face_info == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid face_info");
+ dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
+ dcm_retvm_if(face_info == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid face_info");
ret = _face_detect_faces(handle, &(face_info->rects), &(face_info->count));
- if (ret != FACE_ERROR_NONE)
+ if (ret != MS_MEDIA_ERR_NONE)
dcm_error("fail to _face_detect_faces");
dcm_debug_fleave();
EXPORT_API int dcm_face_destroy_face_info(face_info_s *face_info)
{
- dcm_retvm_if(face_info == NULL, FACE_ERROR_INVALID_PARAMTER, "Invalid face_info");
+ dcm_retvm_if(face_info == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid face_info");
DCM_SAFE_FREE(face_info->rects);
DCM_SAFE_FREE(face_info);
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
}
#include "dcm-face.h"
#include "dcm-face_priv.h"
-#include <stdio.h>
-#include <stdlib.h>
-
typedef struct media_vision_h {
mv_engine_config_h cfg;
mv_source_h source;
} mv_handle;
typedef struct media_vision_result_s {
- face_error_e error;
+ int error;
face_rect_s *face_rect;
int count;
} mv_faceInfo;
-static face_error_e __convert_to_mv_error_e(mv_error_e err)
+static int __convert_to_mv_error_e(mv_error_e err)
{
- if (err != MEDIA_VISION_ERROR_NONE)
- dcm_error("Error from media vision : %d", err);
switch (err) {
case MEDIA_VISION_ERROR_NONE:
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
- case MEDIA_VISION_ERROR_NOT_SUPPORTED:
- return FACE_ERROR_INVALID_PARAMTER;
+ case MEDIA_VISION_ERROR_NOT_SUPPORTED: /*vision feature not supported*/
+ dcm_error("MEDIA_VISION_ERROR_NOT_SUPPORTED");
+ return MS_MEDIA_ERR_NOT_SUPPORTED_FEATURE;
case MEDIA_VISION_ERROR_INVALID_PARAMETER:
- return FACE_ERROR_INVALID_PARAMTER;
+ dcm_error("MEDIA_VISION_ERROR_INVALID_PARAMETER");
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
case MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT:
- return FACE_ERROR_INVALID_PARAMTER;
+ dcm_error("MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT");
+ return MS_MEDIA_ERR_UNSUPPORTED_CONTENT;
case MEDIA_VISION_ERROR_OUT_OF_MEMORY:
- return FACE_ERROR_OUT_OF_MEMORY;
+ dcm_error("MEDIA_VISION_ERROR_OUT_OF_MEMORY");
+ return MS_MEDIA_ERR_OUT_OF_MEMORY;
default:
+ dcm_error("Error from media vision : %d", err);
break;
}
- return FACE_ERROR_OPERATION_FAILED;
+ return MS_MEDIA_ERR_INTERNAL;
}
static int __convert_to_mv_colorspace_e(face_image_colorspace_e src, mv_colorspace_e *dst)
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
switch (src) {
case FACE_IMAGE_COLORSPACE_YUV420:
default:
*dst = MEDIA_VISION_COLORSPACE_INVALID;
dcm_error("Unknown colorspace : %d", src);
- ret = FACE_ERROR_INVALID_PARAMTER;
+ ret = MS_MEDIA_ERR_UNSUPPORTED_CONTENT;
break;
}
if (number_of_faces == 0) {
_data->face_rect = NULL;
_data->count = 0;
- _data->error = FACE_ERROR_NONE;
+ _data->error = MS_MEDIA_ERR_NONE;
return;
}
dcm_error("Cannout allocate face_rect_s");
_data->face_rect = NULL;
_data->count = 0;
- _data->error = FACE_ERROR_OUT_OF_MEMORY;
+ _data->error = MS_MEDIA_ERR_OUT_OF_MEMORY;
return;
}
}
_data->count = number_of_faces;
- _data->error = FACE_ERROR_NONE;
+ _data->error = MS_MEDIA_ERR_NONE;
return;
}
dcm_debug_fenter();
- dcm_retvm_if(_handle == NULL, FACE_ERROR_OUT_OF_MEMORY, "handle create fail");
+ dcm_retvm_if(_handle == NULL, MS_MEDIA_ERR_OUT_OF_MEMORY, "handle create fail");
err = mv_create_engine_config(&(_handle->cfg));
if (err != MEDIA_VISION_ERROR_NONE) {
dcm_info("dcm_face_engine was created. handle=0x%08x", *handle);
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
}
int _face_handle_destroy(__in void *handle)
mv_handle* _handle = (mv_handle*)handle;
- dcm_retvm_if(_handle == NULL, FACE_ERROR_INVALID_PARAMTER, "invalid handle");
+ dcm_retvm_if(_handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "invalid handle");
dcm_info("dcm_face_engine destroy. handle=0x%08x", handle);
}
}
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
}
int _face_detect_faces(__in dcm_face_h handle, __out face_rect_s *face_rect[], __out int *count)
{
- int err = FACE_ERROR_NONE;
+ int err = MS_MEDIA_ERR_NONE;
mv_colorspace_e colorspace = MEDIA_VISION_COLORSPACE_INVALID;
mv_faceInfo result;
- dcm_retvm_if(handle == NULL, FACE_ERROR_OUT_OF_MEMORY, "invalid handle");
- dcm_retvm_if(handle->fengine == NULL, FACE_ERROR_OUT_OF_MEMORY, "invalid handle");
- dcm_retvm_if(face_rect == NULL, FACE_ERROR_OUT_OF_MEMORY, "invalid face_rect");
- dcm_retvm_if(count == NULL, FACE_ERROR_OUT_OF_MEMORY, "invalid count");
+ dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "invalid handle");
+ dcm_retvm_if(handle->fengine == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "invalid handle");
+ dcm_retvm_if(face_rect == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "invalid face_rect");
+ dcm_retvm_if(count == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "invalid count");
mv_handle *_fengine = (mv_handle *)handle->fengine;
memset(&result, 0x00, sizeof(result));
return __convert_to_mv_error_e(err);
}
- if (result.error == FACE_ERROR_NONE) {
+ if (result.error == MS_MEDIA_ERR_NONE) {
*face_rect = result.face_rect;
*count = result.count;
} else {
return result.error;
}
- return FACE_ERROR_NONE;
+ return MS_MEDIA_ERR_NONE;
}
* @brief Destroys the handle to the face engine and releases all its resources.
* @param[in] face The face engine handle
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
- * @retval #FACE_ERROR_ENGINE_NOT_FOUND face engine not found
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
* @see _face_handle_create()
*/
int _face_handle_destroy(void *handle);
* @param[out] face_rect The array of the detected face positions
* @param[out] count The number of the detected face positions
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
- * @retval #FACE_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #FACE_ERROR_ENGINE_NOT_FOUND Facial engine not found
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
+ * @retval #MS_MEDIA_ERR_OUT_OF_MEMORY Out of memory
*/
int _face_detect_faces(dcm_face_h handle, face_rect_s *face_rect[], int *count);
#include <tizen.h>
#include "dcm-face_type.h"
+#include <media-util.h>
#ifdef __cplusplus
extern "C" {
* @remarks The @a face must be released with face_destroy() by you.
* @param[out] handle A face engine handle to be newly created on success
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
- * @retval #FACE_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #FACE_ERROR_ENGINE_NOT_FOUND Facial engine not found
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
+ * @retval #MS_MEDIA_ERR_OUT_OF_MEMORY Out of memory
* @see dcm_face_destroy()
*/
int dcm_face_create(dcm_face_h *handle);
* @brief Destroys the handle to the facial engine and releases all its resources.
* @param[in] handle The face engine handle
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
- * @retval #FACE_ERROR_ENGINE_NOT_FOUND Facial engine not found
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
* @see dcm_face_create()
*/
int dcm_face_destroy(dcm_face_h handle);
* @param[in] handle The facial engine handle
* @param[out] colorspace The preferred color space
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
* @see dcm_face_create()
*/
int dcm_face_get_prefered_colorspace(dcm_face_h handle, face_image_colorspace_e *colorspace);
* @param[in] height The height of the image
* @param[in] size The size of the buffer
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
- * @retval #FACE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
+ * @retval #MS_MEDIA_ERR_OUT_OF_MEMORY Out of memory
* @see dcm_face_create()
*/
int dcm_face_set_image_info(dcm_face_h handle, face_image_colorspace_e colorspace, unsigned char *buffer, unsigned int width, unsigned int height, unsigned long long size);
* @param[in] handle The facial engine handle
* @param[out] face info The face information with rect, count and so on
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
* @see dcm_face_destroy_face_info()
*/
int dcm_face_get_face_info(dcm_face_h handle, face_info_s *face_info);
* @brief Release the face information memory.
* @param[in] face_info The face information memory
* @return 0 on success, otherwise a negative error value.
- * @retval #FACE_ERROR_NONE Successful
- * @retval #FACE_ERROR_INVALID_PARAMTER Invalid parameter
+ * @retval #MS_MEDIA_ERR_NONE Successful
+ * @retval #MS_MEDIA_ERR_INVALID_PARAMETER Invalid parameter
* @see dcm_face_get_face_info()
*/
int dcm_face_destroy_face_info(face_info_s *face_info);
#ifndef __TIZEN_DCM_FACE_TYPE_H__
#define __TIZEN_DCM_FACE_TYPE_H__
-#include <tizen.h>
#ifdef __cplusplus
extern "C" {
*/
typedef struct face_handle_s *dcm_face_h;
-/**
- * @brief Enumerations of error codes for the Facial Engine API.
- */
-typedef enum {
- FACE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */
- FACE_ERROR_INVALID_PARAMTER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
- FACE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
- FACE_ERROR_ENGINE_NOT_FOUND = TIZEN_ERROR_UIX_CLASS | 0x41, /**< Facial engine not found */
- FACE_ERROR_OPERATION_FAILED = TIZEN_ERROR_UIX_CLASS | 0x42, /**< Operation failed */
-} face_error_e;
-
/**
* @brief Enumerations of color spaces
* @see face_image_create()
#include <glib.h>
#include <string.h>
#include <unistd.h>
-#include <media-util.h>
#include <DcmDbUtils.h>
#include <DcmTypes.h>
#include <DcmDebugUtils.h>
int DcmFaceUtils::initialize()
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
dcm_debug_fenter();
ret = dcm_face_create(&dcm_face_handle);
- if (ret != FACE_ERROR_NONE) {
- dcm_error("Failed to dcm_face_create err: %d", ret);
- return MS_MEDIA_ERR_INTERNAL;
- }
dcm_debug_fleave();
- return MS_MEDIA_ERR_NONE;
+ return ret;
}
int DcmFaceUtils::finalize()
{
- int ret = FACE_ERROR_NONE;
+ int ret = MS_MEDIA_ERR_NONE;
dcm_debug_fenter();
DCM_CHECK_VAL(dcm_face_handle, MS_MEDIA_ERR_INVALID_PARAMETER);
ret = dcm_face_destroy(dcm_face_handle);
- if (ret != FACE_ERROR_NONE) {
- dcm_error("Failed to dcm_face_destroy ret: %d", ret);
- return MS_MEDIA_ERR_INTERNAL;
- }
dcm_face_handle = NULL;
dcm_debug_fleave();
- return MS_MEDIA_ERR_NONE;
+ return ret;
}
int DcmFaceUtils::runFaceRecognizeProcess(DcmScanItem *scan_item, DcmImageInfo *image_info)
int face_area = 0;
int i = 0;
double scale_factor = 0.0;
- int err = FACE_ERROR_NONE;
+ int err = MS_MEDIA_ERR_NONE;
int ret = MS_MEDIA_ERR_NONE;
face_info_s *face_info = NULL;
dcm_debug("colorspce: [%d], w: [%d], h: [%d]", image_info->decode_type, image_info->buffer_width, image_info->buffer_height);
- err = dcm_face_set_image_info(dcm_face_handle, (face_image_colorspace_e)image_info->decode_type, image_info->pixel, image_info->buffer_width, image_info->buffer_height, image_info->size);
- if (err != FACE_ERROR_NONE) {
+ ret = dcm_face_set_image_info(dcm_face_handle, (face_image_colorspace_e)image_info->decode_type, image_info->pixel, image_info->buffer_width, image_info->buffer_height, image_info->size);
+ if (ret != MS_MEDIA_ERR_NONE) {
dcm_error("Failed to dcm_face_set_image_info! err: %d", err);
- ret = MS_MEDIA_ERR_INTERNAL;
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
- err = dcm_face_get_face_info(dcm_face_handle, face_info);
- if (err != FACE_ERROR_NONE) {
+ ret = dcm_face_get_face_info(dcm_face_handle, face_info);
+ if (ret != MS_MEDIA_ERR_NONE) {
dcm_error("Failed to get face info! err: %d", err);
- ret = MS_MEDIA_ERR_INTERNAL;
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
scan_item->face_count = 0;
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
+
scan_item->face_count = face_info->count;
/* Compute scale factor between decode size and original size */
for (i = 0; i < face_info->count; i++) {
face = NULL;
- err = DcmFaceApi::createFaceItem(&face);
- if (err != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed to create face items! err: %d", err);
- ret = err;
+ ret = DcmFaceApi::createFaceItem(&face);
+ if (ret != MS_MEDIA_ERR_NONE) {
+ dcm_error("Failed to create face items! ret: %d", ret);
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
face->media_uuid = strdup(scan_item->media_uuid);
/* Insert face rectangle into database */
- err = dcmDbUtils->_dcm_svc_db_generate_uuid(&face);
- if (err != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed to set uuid! err: %d", err);
+ ret = dcmDbUtils->_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;
}
- err = dcmDbUtils->_dcm_svc_db_insert_face_to_db(face);
- if (err != MS_MEDIA_ERR_NONE) {
- dcm_error("Failed to insert face item into db! err: %d", err);
+ ret = dcmDbUtils->_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);
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}