Update code to reduce Cyclomatic Complexity and DC 02/212702/5 accepted/tizen_5.5_unified_mobile_hotfix tizen_5.5_mobile_hotfix accepted/tizen/5.5/unified/20191031.025710 accepted/tizen/5.5/unified/mobile/hotfix/20201027.064336 accepted/tizen/unified/20190901.225911 submit/tizen/20190829.010946 submit/tizen/20190830.003130 submit/tizen_5.5/20191031.000002 submit/tizen_5.5_mobile_hotfix/20201026.185102 tizen_5.5.m2_release
authorhj kim <backto.kim@samsung.com>
Mon, 26 Aug 2019 07:01:22 +0000 (16:01 +0900)
committerhj kim <backto.kim@samsung.com>
Tue, 27 Aug 2019 23:55:05 +0000 (08:55 +0900)
Change-Id: I148c3e335e0ef2a978c013aa209ef4c3c5dc6ad0

src/metadata_extractor.c

index 0b38e399e36680555b35bdf8a21103aef6573fc2..c4104f5fde22e9302a5bd9aa1a9d956ec392ad0f 100644 (file)
@@ -131,18 +131,13 @@ static int __metadata_extractor_get_stream_info(metadata_extractor_s *metadata,
        return ret;
 }
 
-static int __metadata_extractor_create_content_attrs(metadata_extractor_s *metadata, const char *path)
+static int __get_content_attrs(metadata_extractor_s *metadata, MMHandleType content)
 {
        int ret = METADATA_EXTRACTOR_ERROR_NONE;
-       MMHandleType content = 0;
        char *err_attr_name = NULL;
-
        int _audio_track_cnt = 0;
        int _video_track_cnt = 0;
 
-       ret = mm_file_create_content_attrs(&content, path);
-       metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, __metadata_extractor_error_capi(ret), "Fail mm_file_create_content_attrs(%d)", ret);
-
        ret = mm_file_get_attrs(content, &err_attr_name,
                                        MM_FILE_CONTENT_VIDEO_TRACK_COUNT, &_video_track_cnt,
                                        MM_FILE_CONTENT_AUDIO_TRACK_COUNT, &_audio_track_cnt,
@@ -159,8 +154,18 @@ static int __metadata_extractor_create_content_attrs(metadata_extractor_s *metad
        metadata->audio_track_cnt = _audio_track_cnt;
        metadata->video_track_cnt = _video_track_cnt;
 
-       return ret;
+       return METADATA_EXTRACTOR_ERROR_NONE;
+}
+
+static int __metadata_extractor_create_content_attrs(metadata_extractor_s *metadata, const char *path)
+{
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+       MMHandleType content = 0;
 
+       ret = mm_file_create_content_attrs(&content, path);
+       metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, __metadata_extractor_error_capi(ret), "Fail mm_file_create_content_attrs(%d)", ret);
+
+       return __get_content_attrs(metadata, content);
 }
 
 
@@ -182,32 +187,11 @@ static int __metadata_extractor_create_content_attrs_from_buffer(metadata_extrac
 {
        int ret = METADATA_EXTRACTOR_ERROR_NONE;
        MMHandleType content = 0;
-       char *err_attr_name = NULL;
-
-       int _audio_track_cnt = 0;
-       int _video_track_cnt = 0;
 
        ret = mm_file_create_content_attrs_from_memory(&content, buffer, size, 0);
        metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, __metadata_extractor_error_capi(ret), "Fail mm_file_create_content_attrs_from_memory(%d)", ret);
 
-       ret = mm_file_get_attrs(content, &err_attr_name,
-                                       MM_FILE_CONTENT_VIDEO_TRACK_COUNT, &_video_track_cnt,
-                                       MM_FILE_CONTENT_AUDIO_TRACK_COUNT, &_audio_track_cnt,
-                                       NULL);
-
-       if (ret != FILEINFO_ERROR_NONE) {
-               metadata_extractor_error("METADATA_EXTRACTOR_ERROR_OPERATION_FAILED(0x%08x)", ret);
-               SAFE_FREE(err_attr_name);
-               mm_file_destroy_content_attrs(content);
-               return METADATA_EXTRACTOR_ERROR_OPERATION_FAILED;
-       }
-
-       metadata->attr_h = content;
-       metadata->audio_track_cnt = _audio_track_cnt;
-       metadata->video_track_cnt = _video_track_cnt;
-
-       return ret;
-
+       return __get_content_attrs(metadata, content);
 }
 
 static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size)
@@ -224,16 +208,25 @@ static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_
 
 }
 
+static bool __is_tag_param_valid(metadata_extractor_s *metadata, const char *attribute_name)
+{
+       metadata_extractor_retvm_if(!metadata, false, "Invalid metadata");
+       metadata_extractor_retvm_if(!metadata->tag_h, false, "Invalid tag_h");
+       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), false, "Invalid attribute_name");
+
+       return true;
+}
+
 static int __metadata_extractor_get_attr_int(metadata_extractor_s *metadata, const char *attribute_name, int *attr)
 {
        int ret = METADATA_EXTRACTOR_ERROR_NONE;
        char *err_attr_name = NULL;
        int _attr = 0;
 
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->attr_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Attr handle is null");
+       metadata_extractor_retvm_if(!metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid metadata");
+       metadata_extractor_retvm_if(!metadata->attr_h , METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attr_h");
        metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(attr == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "attr is null");
+       metadata_extractor_retvm_if(!attr, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attr");
 
        ret = mm_file_get_attrs(metadata->attr_h, &err_attr_name, attribute_name, &_attr, NULL);
        metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
@@ -245,44 +238,22 @@ static int __metadata_extractor_get_attr_int(metadata_extractor_s *metadata, con
 
 static int __metadata_extractor_get_audio_attr_int(metadata_extractor_s *metadata, const char *attribute_name, int *attr)
 {
-       int ret = METADATA_EXTRACTOR_ERROR_NONE;
-       char *err_attr_name = NULL;
-       int _attr = 0;
-
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->attr_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Attr handle is null");
-       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(attr == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "attr is null");
-
-       if (metadata->audio_track_cnt > 0) {
-               ret = mm_file_get_attrs(metadata->attr_h, &err_attr_name, attribute_name, &_attr, NULL);
-               metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
-       }
+       if (metadata && metadata->audio_track_cnt > 0)
+               return __metadata_extractor_get_attr_int(metadata, attribute_name, attr);
 
-       *attr = _attr;
+       *attr = 0;
 
-       return ret;
+       return METADATA_EXTRACTOR_ERROR_NONE;
 }
 
 static int __metadata_extractor_get_video_attr_int(metadata_extractor_s *metadata, const char *attribute_name, int *attr)
 {
-       int ret = METADATA_EXTRACTOR_ERROR_NONE;
-       char *err_attr_name = NULL;
-       int _attr = 0;
+       if (metadata && metadata->video_track_cnt > 0)
+               return __metadata_extractor_get_attr_int(metadata, attribute_name, attr);
 
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->attr_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Attr handle is null");
-       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(attr == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "attr is null");
-
-       if (metadata->video_track_cnt > 0) {
-               ret = mm_file_get_attrs(metadata->attr_h, &err_attr_name, attribute_name, &_attr, NULL);
-               metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
-       }
+       *attr = 0;
 
-       *attr = _attr;
-
-       return ret;
+       return METADATA_EXTRACTOR_ERROR_NONE;
 }
 
 static int __metadata_extractor_get_audio_track_count(metadata_extractor_s *metadata, int *track_cnt)
@@ -334,10 +305,8 @@ static int __metadata_extractor_get_tag_str(metadata_extractor_s *metadata, cons
        char *_tag = NULL;
        int _tag_len = 0;
 
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->tag_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Tag handle is null");
-       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(tag == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "tag is null");
+       metadata_extractor_retvm_if(!__is_tag_param_valid(metadata, attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "fail to __is_tag_param_valid()");
+       metadata_extractor_retvm_if(!tag, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid tag");
 
        ret = mm_file_get_attrs(metadata->tag_h, &err_attr_name, attribute_name, &_tag, &_tag_len, NULL);
        metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
@@ -353,10 +322,8 @@ static int __metadata_extractor_get_tag_int(metadata_extractor_s *metadata, cons
        char *err_attr_name = NULL;
        int _tag = 0;
 
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->tag_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Tag handle is null");
-       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(tag == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "tag is null");
+       metadata_extractor_retvm_if(!__is_tag_param_valid(metadata, attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "fail to __is_tag_param_valid()");
+       metadata_extractor_retvm_if(!tag, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid tag");
 
        ret = mm_file_get_attrs(metadata->tag_h, &err_attr_name, attribute_name, &_tag, NULL);
        metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
@@ -372,10 +339,8 @@ static int __metadata_extractor_get_tag_double(metadata_extractor_s *metadata, c
        char *err_attr_name = NULL;
        double _tag = 0;
 
-       metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
-       metadata_extractor_retvm_if(metadata->tag_h == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Tag handle is null");
-       metadata_extractor_retvm_if(!ME_STRING_VALID(attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid attribute_name");
-       metadata_extractor_retvm_if(tag == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "tag is null");
+       metadata_extractor_retvm_if(!__is_tag_param_valid(metadata, attribute_name), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "fail to __is_tag_param_valid()");
+       metadata_extractor_retvm_if(!tag, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid tag");
 
        ret = mm_file_get_attrs(metadata->tag_h, &err_attr_name, attribute_name, &_tag, NULL);
        metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, err_attr_name);
@@ -599,45 +564,50 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index,
        return ret;
 }
 
-int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extractor_attr_e attribute, char **value)
+static int __extract_meta(metadata_extractor_s *metadata, metadata_extractor_attr_e attribute)
 {
-       int ret = METADATA_EXTRACTOR_ERROR_NONE;
-       metadata_extractor_s *_metadata = (metadata_extractor_s *)metadata;
-       int i_value = 0;
-       double d_value = 0;
-       char *s_value = NULL;
-       int is_string = 0;
-       int is_double = 0;
+       metadata_extractor_retvm_if(!metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
-       metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       /*metadata_extractor_debug("attribute [%d]", attribute); */
 
        if ((attribute == METADATA_HAS_VIDEO) || (attribute == METADATA_HAS_AUDIO)) {
-               if (_metadata->path != NULL)
-                       ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_STREAM);
+               if (metadata->path != NULL)
+                       return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_STREAM);
                else
-                       ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR);
-       } else if ((attribute >= METADATA_DURATION) && (attribute < METADATA_HAS_AUDIO))
-               ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR);
-       else if ((attribute > METADATA_HAS_AUDIO) && (attribute <= METADATA_ROTATE))
-               ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG);
+                       return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR);
+       } else if ((attribute >= METADATA_DURATION) && (attribute < METADATA_HAS_AUDIO)) {
+               return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR);
+       } else if ((attribute > METADATA_HAS_AUDIO) && (attribute <= METADATA_ROTATE)) {
+               return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG);
 #ifdef SUPPORT_GSPHERICAL_METADATA
-       else if (((attribute >= METADATA_360) && (attribute <= METADATA_AMBISONIC_ORDER)))
-               ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG);
+       } else if (((attribute >= METADATA_360) && (attribute <= METADATA_AMBISONIC_ORDER))) {
+               return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG);
 #else
-       else if (attribute == METADATA_360)
-               ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG);
+       } else if (attribute == METADATA_360) {
+               return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG);
 #endif
-       else if ((attribute == METADATA_AUDIO_CODEC) || (attribute == METADATA_VIDEO_CODEC))
-               ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR);
-       else {
+       } else if ((attribute == METADATA_AUDIO_CODEC) || (attribute == METADATA_VIDEO_CODEC)) {
+               return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR);
+       else {
                metadata_extractor_error("INVALID_PARAMETER [%d]", attribute);
-               ret = METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER;
+               return METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER;
        }
+}
 
-       if (ret != METADATA_EXTRACTOR_ERROR_NONE)
-               return ret;
+int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extractor_attr_e attribute, char **value)
+{
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+       metadata_extractor_s *_metadata = (metadata_extractor_s *)metadata;
+       int i_value = 0;
+       double d_value = 0;
+       char *s_value = NULL;
+       int is_string = 0;
+       int is_double = 0;
 
-       /*metadata_extractor_debug("attribute [%d]", attribute); */
+       metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
+
+       ret = __extract_meta(_metadata, attribute);
+       metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "fail to __metadata_extractor_extract_meta() [%d]", ret);
 
        switch ((int)attribute) {  /*TODO (m.alieksieie): Remove casting after ACR*/
        case METADATA_DURATION: {