glib's memory managed as below.
If any call to allocate memory fails, the application is terminated. This also means that there is no need to check if the call succeeded.
Change-Id: I6789bf638955d97a28a7a66595c8d41165cf204f
#define DCM_CHECK_FALSE(expr) dcm_retvm_if(!(expr), FALSE, "Invalid parameter, return FALSE!")
#define DCM_CHECK(expr) dcm_retm_if(!(expr), "Invalid parameter, return!")
-#define DCM_SAFE_FREE(ptr) { if (ptr) {free(ptr); ptr = NULL; } }
#define DCM_SAFE_STRLCPY(dst, src, n) g_strlcpy(dst, src, n);
#endif /* _DCM_DEBUG_UTILS_H_ */
dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
- FaceHandleT *pFaceHandle = (FaceHandleT *)calloc(1, sizeof(FaceHandleT));
- dcm_retvm_if(pFaceHandle == NULL, MS_MEDIA_ERR_OUT_OF_MEMORY, "malloc fail");
+ FaceHandleT *pFaceHandle = g_new0(FaceHandleT, 1);
ret = _face_handle_create(&(pFaceHandle->fengine));
if (ret != MS_MEDIA_ERR_NONE) {
handle->magic = FACE_MAGIC_INVALID;
if (handle->image_info != NULL)
- DCM_SAFE_FREE(handle->image_info->data);
- DCM_SAFE_FREE(handle->image_info);
- DCM_SAFE_FREE(handle);
+ g_free(handle->image_info->data);
+ g_free(handle->image_info);
+ g_free(handle);
return ret;
}
dcm_debug_fenter();
- dcm_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
- dcm_retvm_if(buffer == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid buffer");
+ dcm_retvm_if(!handle, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid handle");
+ dcm_retvm_if(!buffer, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid buffer");
switch (colorspace) {
case FACE_IMAGE_COLORSPACE_YUV420:
case FACE_IMAGE_COLORSPACE_RGB888:
case FACE_IMAGE_COLORSPACE_RGBA:
- data = (unsigned char *)calloc(1, size);
- if (data == NULL) {
- dcm_error("Not allocate memory");
- return MS_MEDIA_ERR_OUT_OF_MEMORY;
- }
- memcpy(data, buffer, size);
+ data = g_memdup(buffer, size);
break;
default:
dcm_error("Invalid colorspace : [%d]", colorspace);
}
if (_handle->image_info != NULL)
- DCM_SAFE_FREE(_handle->image_info->data);
- DCM_SAFE_FREE(_handle->image_info);
-
- _handle->image_info = (FaceImage *)calloc(1, sizeof(FaceImage));
+ g_free(_handle->image_info->data);
+ g_free(_handle->image_info);
- if (_handle->image_info == NULL) {
- dcm_error("Out of memory");
- DCM_SAFE_FREE(data);
- return MS_MEDIA_ERR_OUT_OF_MEMORY;
- }
+ _handle->image_info = g_new0(FaceImage, 1);
_handle->image_info->data = data;
_handle->image_info->width = width;
{
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);
+ g_free(face_info->rects);
+ g_free(face_info);
return MS_MEDIA_ERR_NONE;
}
} mv_handle;
typedef struct media_vision_result_s {
- int error;
face_rect_s *face_rect;
int count;
} mv_faceInfo;
return ret;
}
-void __face_detected_cb(mv_source_h source, mv_engine_config_h cfg, mv_rectangle_s *faces_locations, int number_of_faces, void *user_data)
+static void __face_detected_cb(mv_source_h source, mv_engine_config_h cfg, mv_rectangle_s *faces_locations, int number_of_faces, void *user_data)
{
mv_faceInfo* _data = (mv_faceInfo*)user_data;
+ int i = 0;
dcm_error("[No-Error] number of faces: %d", number_of_faces);
if (number_of_faces == 0) {
_data->face_rect = NULL;
_data->count = 0;
- _data->error = MS_MEDIA_ERR_NONE;
- return;
- }
- _data->face_rect = (face_rect_s *)calloc(number_of_faces, sizeof(face_rect_s));
- if (_data->face_rect == NULL) {
- dcm_error("Cannout allocate face_rect_s");
- _data->face_rect = NULL;
- _data->count = 0;
- _data->error = MS_MEDIA_ERR_OUT_OF_MEMORY;
return;
}
- int i = 0;
+ _data->face_rect = g_new0(face_rect_s, number_of_faces);
for (i = 0; i < number_of_faces ; i++) {
_data->face_rect[i].x = faces_locations[i].point.x;
}
_data->count = number_of_faces;
- _data->error = MS_MEDIA_ERR_NONE;
return;
}
int _face_handle_create(__inout void **handle)
{
int err = 0;
- mv_handle* _handle = (mv_handle*)calloc(1, sizeof(mv_handle));
+ mv_handle* _handle = g_new0(mv_handle, 1);
dcm_debug_fenter();
- 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_error("fail to mv_create_engine_config");
- DCM_SAFE_FREE(_handle);
+ g_free(_handle);
return __convert_to_mv_error_e(err);
}
err = mv_destroy_engine_config(_handle->cfg);
if (err != MEDIA_VISION_ERROR_NONE)
dcm_error("fail to mv_destroy_engine_config");
- DCM_SAFE_FREE(_handle);
+ g_free(_handle);
return __convert_to_mv_error_e(err);
}
return __convert_to_mv_error_e(err);
}
- if (result.error == MS_MEDIA_ERR_NONE) {
- *face_rect = result.face_rect;
- *count = result.count;
- } else {
- *face_rect = result.face_rect;
- *count = result.count;
- return result.error;
- }
+ *face_rect = result.face_rect;
+ *count = result.count;
return MS_MEDIA_ERR_NONE;
}
#define FACE_IMAGE_MAGIC (0x1a2b3c4d)
#define FACE_INVALID_MAGIC (0xDEADBEAF)
-#define DCM_SAFE_FREE(src) { if (src) {free(src); src = NULL; } }
-
typedef struct face_image_s {
unsigned char *data;
unsigned int width;
* @return 0 on success, otherwise a negative error value.
* @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);
* @return 0 on success, otherwise a negative error value.
* @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, size_t size);
#define DCM_CHECK_VAL(expr, val) dcm_retvm_if(!(expr), val , "Invalid parameter, return ERROR code!")
-#define DCM_SAFE_FREE(ptr) { if (ptr) {free(ptr); ptr = NULL; } }
-
#endif /* _DCM_DEBUG_UTILS_H_ */
Name: dcm-service
Summary: A media DCM(Digital Contents Management) Service
-Version: 0.2.3
+Version: 0.2.4
Release: 0
Group: Multimedia/Service
License: Apache-2.0
if (ret != MS_MEDIA_ERR_NONE)
goto ERROR;
- _item = (dcm_svc_item_s *) calloc(1, sizeof(dcm_svc_item_s));
- if (!_item) {
- dcm_error("Allocation failed");
- ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
- goto ERROR;
- }
+ _item = g_new0(dcm_svc_item_s, 1);
_item->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
_item->file_path = g_strdup(file_path);
goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
}
- face_info = (face_info_s *)calloc(1, sizeof(face_info_s));
- if (face_info == NULL) {
- dcm_error("Failed to allocate face info");
- ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
- goto DCM_SVC_FACE_RECOGNIZE_BUFFER_FAILED;
- }
+ face_info = (face_info_s *)g_new0(face_info_s, 1);
ret = dcm_face_get_face_info(dcm_face_handle, face_info);
if (ret != MS_MEDIA_ERR_NONE) {
DCM_CHECK_VAL(scan_item->file_path, MS_MEDIA_ERR_INVALID_PARAMETER);
dcm_image_info_s image_info = {0, };
- memset(&image_info, 0, sizeof(dcm_image_info_s));
+
image_info.decode_type = DCM_IMAGE_FORMAT_I420;
if (g_file_test(scan_item->file_path, G_FILE_TEST_IS_REGULAR)) {
dcm_error("Failed to process face detection! err: %d", ret);
/* Free image buffer */
- DCM_SAFE_FREE(image_info.pixel);
+ g_free(image_info.pixel);
} else {
dcm_warn("The file does not exist");
ret = MS_MEDIA_ERR_INVALID_PARAMETER;
g_free(scan_item->media_uuid);
g_free(scan_item->file_path);
g_free(scan_item->mime_type);
- DCM_SAFE_FREE(scan_item);
+ g_free(scan_item);
dcm_debug_fleave();