diff options
author | Minje Ahn <minje.ahn@samsung.com> | 2020-11-24 10:31:31 +0900 |
---|---|---|
committer | Minje Ahn <minje.ahn@samsung.com> | 2020-11-24 10:31:56 +0900 |
commit | 117553ad260c6781720607fa604e746a64496ef7 (patch) | |
tree | bda3cc8612ef518129116c00b1de47d596554735 | |
parent | 7e4091f23a0f6ae909be3f031885323d3d3d15e7 (diff) | |
download | metadata-extractor-117553ad260c6781720607fa604e746a64496ef7.tar.gz metadata-extractor-117553ad260c6781720607fa604e746a64496ef7.tar.bz2 metadata-extractor-117553ad260c6781720607fa604e746a64496ef7.zip |
Use glib memory allocation
Change-Id: Ia9e7e9c8650827ac14315b3a29d83fe743206852
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
-rw-r--r-- | src/metadata_extractor.c | 109 |
1 files changed, 37 insertions, 72 deletions
diff --git a/src/metadata_extractor.c b/src/metadata_extractor.c index c2eeb6a..b1a2b1a 100644 --- a/src/metadata_extractor.c +++ b/src/metadata_extractor.c @@ -442,8 +442,7 @@ int metadata_extractor_create(metadata_extractor_h *metadata) metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null"); - metadata_extractor_s *_metadata = (metadata_extractor_s *)calloc(1, sizeof(metadata_extractor_s)); - metadata_extractor_retvm_if(_metadata == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); + metadata_extractor_s *_metadata = g_new0(metadata_extractor_s, 1); _metadata->path = NULL; _metadata->buffer = NULL; @@ -473,13 +472,12 @@ int metadata_extractor_set_path(metadata_extractor_h metadata, const char *path) if ((_metadata->path != NULL) || (_metadata->buffer != NULL)) { __metadata_extractor_destroy_handle(_metadata); - SAFE_FREE(_metadata->path); + g_free(_metadata->path); _metadata->attr_h = 0; _metadata->tag_h = 0; } _metadata->path = g_strdup(path); - metadata_extractor_retvm_if(_metadata->path == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); return ret; } @@ -493,7 +491,8 @@ int metadata_extractor_set_buffer(metadata_extractor_h metadata, const void *buf if ((_metadata->path != NULL) || (_metadata->buffer != NULL)) { __metadata_extractor_destroy_handle(_metadata); - SAFE_FREE(_metadata->path); + g_free(_metadata->path); + _metadata->path = NULL; _metadata->attr_h = 0; _metadata->tag_h = 0; } @@ -513,8 +512,8 @@ int metadata_extractor_destroy(metadata_extractor_h metadata) ret = __metadata_extractor_destroy_handle(_metadata); - SAFE_FREE(_metadata->path); - SAFE_FREE(_metadata); + g_free(_metadata->path); + g_free(_metadata); return ret; } @@ -529,6 +528,9 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index, metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); + *lyrics = NULL; + *time_stamp = 0; + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; @@ -537,20 +539,14 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index, if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; - if ((_synclyrics_num > 0) && (index < _synclyrics_num)) { + if (_synclyrics_num > 0 && index < _synclyrics_num) { ret = mm_file_get_synclyrics_info((MMHandleType)_metadata->tag_h, index, &_time_info, &_lyrics); metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, "Internal operation error"); - if ((_lyrics != NULL) && (strlen(_lyrics) > 0)) { + if (_lyrics && strlen(_lyrics) > 0) *lyrics = g_strdup(_lyrics); - metadata_extractor_retvm_if(*lyrics == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); - } else - *lyrics = NULL; *time_stamp = _time_info; - } else { - *lyrics = NULL; - *time_stamp = 0; } return ret; @@ -598,6 +594,8 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); + *value = NULL; + ret = __extract_meta(_metadata, attribute); metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "fail to __metadata_extractor_extract_meta() [%d]", ret); @@ -939,31 +937,17 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr } if (is_string) { - if ((s_value != NULL) && (strlen(s_value) > 0)) { + if (s_value && strlen(s_value) > 0) *value = g_strdup(s_value); - /*Only use strdup in video_codec and audio_codec */ - if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC) - SAFE_FREE(s_value); - if (*value == NULL) { - metadata_extractor_error("OUT_OF_MEMORY(0x%08x)", METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY); - return METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY; - } - } else { - if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC) - SAFE_FREE(s_value); - *value = NULL; - } + /*Only use strdup in video_codec and audio_codec */ + if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC) + g_free(s_value); } else { - char extracted_metadata[META_MAX_LEN] = {0, }; - if (is_double) - snprintf(extracted_metadata, sizeof(extracted_metadata), "%f", d_value); + *value = g_strdup_printf("%f", d_value); else - snprintf(extracted_metadata, sizeof(extracted_metadata), "%d", i_value); - - *value = g_strdup(extracted_metadata); - metadata_extractor_retvm_if(*value == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); + *value = g_strdup_printf("%d", i_value); } return ret; @@ -979,40 +963,24 @@ int metadata_extractor_get_artwork(metadata_extractor_h metadata, void **artwork metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); + *artwork = NULL; + *mime_type = NULL; + *size = 0; + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG); metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Error in __metadata_extractor_check_and_extract_meta()"); ret = __metadata_extractor_get_artwork(_metadata, &_artwork, &_artwork_size); metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Fail to get artwork"); - if ((_artwork_size > 0) && (_artwork != NULL)) { + if (_artwork_size > 0 && _artwork) { ret = __metadata_extractor_get_tag_str(_metadata, MM_FILE_TAG_ARTWORK_MIME, &_artwork_mime); - if (ret != METADATA_EXTRACTOR_ERROR_NONE) { - *artwork = NULL; - *size = 0; - + if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; - } - *artwork = calloc(1, _artwork_size); - if (*artwork != NULL) { - memcpy(*artwork, _artwork, _artwork_size); - *size = _artwork_size; - } else { - *size = 0; - } - - if ((_artwork_mime != NULL) && (strlen(_artwork_mime) > 0)) { - *mime_type = g_strdup(_artwork_mime); - metadata_extractor_retvm_if(*mime_type == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); - } else { - *mime_type = NULL; - } - - } else { - *artwork = NULL; - *mime_type = NULL; - *size = 0; + *artwork = g_memdup(_artwork, _artwork_size); + *size = _artwork_size; + *mime_type = g_strdup(_artwork_mime); } return ret; @@ -1027,6 +995,9 @@ int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, in metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)) || (!size), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); + *frame = NULL; + *size = 0; + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; @@ -1035,14 +1006,9 @@ int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, in if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; - if ((_frame_size > 0) && (_frame != NULL)) { - *frame = calloc(1, _frame_size); - metadata_extractor_retvm_if(*frame == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure"); - memcpy(*frame, _frame, _frame_size); + if (_frame_size > 0 && _frame) { + *frame = g_memdup(_frame, _frame_size); *size = _frame_size; - } else { - *frame = NULL; - *size = 0; } return ret; @@ -1061,6 +1027,8 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)) || (!size), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); micro_timestamp = (long long)timestamp * 1000; + *frame = NULL; + *size = 0; metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%lld]", is_accurate, timestamp, micro_timestamp); @@ -1071,8 +1039,8 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, _frame); - if (_frame != NULL) { - if ((_frame_size > 0)) { + if (_frame) { + if (_frame_size > 0) { *frame = _frame; *size = _frame_size; } else { @@ -1080,9 +1048,6 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned metadata_extractor_error("METADATA_EXTRACTOR_ERROR_OPERATION_FAILED (0x%08x)", METADATA_EXTRACTOR_ERROR_OPERATION_FAILED); return METADATA_EXTRACTOR_ERROR_OPERATION_FAILED; } - } else { - *frame = NULL; - *size = 0; } return ret; |