diff options
author | Minje Ahn <minje.ahn@samsung.com> | 2020-12-02 08:12:37 +0900 |
---|---|---|
committer | Minje Ahn <minje.ahn@samsung.com> | 2020-12-08 12:05:37 +0900 |
commit | 0733d62a02e63f98463b23faa64af36e3fe62d1e (patch) | |
tree | a19a34c73cd0c956c3a6d596374ad5089d8f0507 | |
parent | a6d23aef1d7f05a56cc60ae65139ff49bfc6dfb0 (diff) | |
download | metadata-extractor-0733d62a02e63f98463b23faa64af36e3fe62d1e.tar.gz metadata-extractor-0733d62a02e63f98463b23faa64af36e3fe62d1e.tar.bz2 metadata-extractor-0733d62a02e63f98463b23faa64af36e3fe62d1e.zip |
Separate album art extractionsubmit/tizen/20201208.235402accepted/tizen/unified/20201209.124855
Changed to extract album art only on request.
Change-Id: I417745540cc9fe5815fb4e3513c6aa73f22ca0a9
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
-rwxr-xr-x | packaging/capi-media-metadata-extractor.spec | 2 | ||||
-rw-r--r-- | src/metadata_extractor.c | 53 |
2 files changed, 34 insertions, 21 deletions
diff --git a/packaging/capi-media-metadata-extractor.spec b/packaging/capi-media-metadata-extractor.spec index 9015fad..5403be3 100755 --- a/packaging/capi-media-metadata-extractor.spec +++ b/packaging/capi-media-metadata-extractor.spec @@ -1,6 +1,6 @@ Name: capi-media-metadata-extractor Summary: A media metadata extractor library in Tizen Native API -Version: 0.1.15 +Version: 0.1.16 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/src/metadata_extractor.c b/src/metadata_extractor.c index cb1db76..1de04f1 100644 --- a/src/metadata_extractor.c +++ b/src/metadata_extractor.c @@ -29,12 +29,12 @@ typedef enum { METADATA_TYPE_TAG, } metadata_extractor_type_e; -static int __metadata_extractor_check_and_extract_meta(metadata_extractor_s *metadata, metadata_extractor_type_e metadata_type); +static int __metadata_extractor_check_and_extract_meta(metadata_extractor_s *metadata, metadata_extractor_type_e metadata_type, bool extract_albumart); static int __metadata_extractor_get_stream_info(metadata_extractor_s *metadata, const char *path); static int __metadata_extractor_create_content_attrs(metadata_extractor_s *metadata, const char *path); -static int __metadata_extractor_create_tag_attr(metadata_extractor_s *metadata, const char *path); +static int __metadata_extractor_create_tag_attr(metadata_extractor_s *metadata, const char *path, bool extract_albumart); static int __metadata_extractor_create_content_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size); -static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size); +static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size, bool extract_albumart); static int __metadata_extractor_get_artwork(metadata_extractor_s *metadata, void **artwork, int *artwork_size); static int __metadata_extractor_get_video_thumbnail(metadata_extractor_s *metadata, void **thumbnail, int *thumbnail_len); static int __metadata_extractor_get_audio_track_count(metadata_extractor_s *metadata, int *track_cnt); @@ -60,7 +60,7 @@ static int __metadata_extractor_error_capi(int fileinfo_error) } } -static int __metadata_extractor_check_and_extract_meta(metadata_extractor_s *metadata, metadata_extractor_type_e metadata_type) +static int __metadata_extractor_check_and_extract_meta(metadata_extractor_s *metadata, metadata_extractor_type_e metadata_type, bool extract_albumart) { int ret = METADATA_EXTRACTOR_ERROR_NONE; @@ -99,11 +99,11 @@ static int __metadata_extractor_check_and_extract_meta(metadata_extractor_s *met else { metadata_extractor_debug("Extract Tag attrs"); if (metadata->path != NULL) { - ret = __metadata_extractor_create_tag_attr(metadata, metadata->path); + ret = __metadata_extractor_create_tag_attr(metadata, metadata->path, extract_albumart); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; } else if (metadata->buffer != NULL) { - ret = __metadata_extractor_create_tag_attrs_from_buffer(metadata, metadata->buffer, metadata->buffer_size); + ret = __metadata_extractor_create_tag_attrs_from_buffer(metadata, metadata->buffer, metadata->buffer_size, extract_albumart); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; } @@ -167,12 +167,16 @@ static int __metadata_extractor_create_content_attrs(metadata_extractor_s *metad } -static int __metadata_extractor_create_tag_attr(metadata_extractor_s *metadata, const char *path) +static int __metadata_extractor_create_tag_attr(metadata_extractor_s *metadata, const char *path, bool extract_albumart) { int ret = METADATA_EXTRACTOR_ERROR_NONE; MMHandleType tag = 0; - ret = mm_file_create_tag_attrs(&tag, path); + if (extract_albumart) + ret = mm_file_create_tag_attrs(&tag, path); + else + ret = mm_file_create_tag_attrs_no_albumart(&tag, path); + metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, __metadata_extractor_error_capi(ret), "Fail mm_file_create_tag_attrs(%d)", ret); metadata->tag_h = tag; @@ -192,12 +196,16 @@ static int __metadata_extractor_create_content_attrs_from_buffer(metadata_extrac return __get_content_attrs(metadata, content); } -static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size) +static int __metadata_extractor_create_tag_attrs_from_buffer(metadata_extractor_s *metadata, const void *buffer, int size, bool extract_albumart) { int ret = METADATA_EXTRACTOR_ERROR_NONE; MMHandleType tag = 0; - ret = mm_file_create_tag_attrs_from_memory(&tag, buffer, size, 0); + if (extract_albumart) + ret = mm_file_create_tag_attrs_from_memory(&tag, buffer, size, 0); + else + ret = mm_file_create_tag_attrs_no_albumart_from_memory(&tag, buffer, size, 0); + metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, __metadata_extractor_error_capi(ret), "Fail mm_file_create_tag_attrs_from_memory(%d)", ret); metadata->tag_h = tag; @@ -509,7 +517,7 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index, metadata_extractor_retvm_if(!_metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is NULL"); metadata_extractor_retvm_if(!_metadata->path && !_metadata->buffer, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); - ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG); + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG, false); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; @@ -536,22 +544,22 @@ static int __extract_meta(metadata_extractor_s *metadata, metadata_extractor_att if ((attribute == METADATA_HAS_VIDEO) || (attribute == METADATA_HAS_AUDIO)) { if (metadata->path != NULL) - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_STREAM); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_STREAM, false); else - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR, false); } else if ((attribute >= METADATA_DURATION) && (attribute < METADATA_HAS_AUDIO)) { - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR, false); } else if ((attribute > METADATA_HAS_AUDIO) && (attribute <= METADATA_ROTATE)) { - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG, false); #ifdef SUPPORT_GSPHERICAL_METADATA } else if (((attribute >= METADATA_360) && (attribute <= METADATA_AMBISONIC_ORDER))) { - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG, false); #else } else if (attribute == METADATA_360) { - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_TAG, false); #endif } else if ((attribute == METADATA_AUDIO_CODEC) || (attribute == METADATA_VIDEO_CODEC)) { - return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR); + return __metadata_extractor_check_and_extract_meta(metadata, METADATA_TYPE_ATTR, false); } else { metadata_extractor_error("INVALID_PARAMETER [%d]", attribute); return METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER; @@ -831,7 +839,12 @@ int metadata_extractor_get_artwork(metadata_extractor_h metadata, void **artwork metadata_extractor_retvm_if(!_metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is NULL"); metadata_extractor_retvm_if(!_metadata->path && !_metadata->buffer, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); - ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG); + if (_metadata->tag_h) { + ret = mm_file_destroy_tag_attrs(_metadata->tag_h); + metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, "Failed to destroy tag handle"); + } + + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG, true); metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Fail: __metadata_extractor_check_and_extract_meta"); ret = __metadata_extractor_get_artwork(_metadata, &_artwork, &_artwork_size); @@ -860,7 +873,7 @@ int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, in metadata_extractor_retvm_if(!_metadata->path && !_metadata->buffer, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); metadata_extractor_retvm_if(!size, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); - ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR); + ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR, false); if (ret != METADATA_EXTRACTOR_ERROR_NONE) return ret; |