Changed to extract album art only on request.
Change-Id: I0ad6da0da25905535d5aec94ec74a3069d0d0e11
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
return true;
}
-static bool __parse_id3_tag(tMMFILE_AAC_HANDLE *pData)
+static bool __parse_id3_tag(tMMFILE_AAC_HANDLE *pData, bool extract_artwork)
{
unsigned char *tagBuff = NULL;
AvFileContentInfo *hTag = &pData->id3Handle;
switch (hTag->tagV2Info.tagVersion) {
case 2:
- ret = mm_file_id3tag_parse_v222(hTag, tagBuff);
+ ret = mm_file_id3tag_parse_v222(hTag, tagBuff, extract_artwork);
break;
case 3:
- ret = mm_file_id3tag_parse_v223(hTag, tagBuff);
+ ret = mm_file_id3tag_parse_v223(hTag, tagBuff, extract_artwork);
break;
case 4:
- ret = mm_file_id3tag_parse_v224(hTag, tagBuff);
+ ret = mm_file_id3tag_parse_v224(hTag, tagBuff, extract_artwork);
break;
default:
debug_error(DEBUG, "Invalid Tag version [%d]\n", hTag->tagV2Info.tagVersion);
}
-static bool __mmfile_aacparser_get_tag_info(MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *tagInfo)
+static bool __mmfile_aacparser_get_tag_info(MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *tagInfo, bool extract_artwork)
{
tMMFILE_AAC_HANDLE *privateData = NULL;
return true;
}
- mm_file_retvm_if_fails(DEBUG, __parse_id3_tag(privateData), false);
+ mm_file_retvm_if_fails(DEBUG, __parse_id3_tag(privateData, extract_artwork), false);
/* Return the tag info structure */
memcpy(tagInfo, &(privateData->tagInfo), sizeof(tMMFILE_AAC_TAG_INFO));
handle = formatContext->privateFormatData;
- mm_file_retvm_if_fails(DEBUG, __mmfile_aacparser_get_tag_info(handle, &aacinfo), MMFILE_FORMAT_FAIL);
+ mm_file_retvm_if_fails(DEBUG, __mmfile_aacparser_get_tag_info(handle, &aacinfo, formatContext->extract_artwork), MMFILE_FORMAT_FAIL);
formatContext->title = g_strdup(aacinfo.title);
formatContext->author = g_strdup(aacinfo.author);
int mmfile_format_close_mp3(MMFileFormatContext *formatContext);
/* internal */
-static bool __get_tag_info(char *src, AvFileContentInfo *pInfo);
+static bool __get_tag_info(char *src, AvFileContentInfo *pInfo, bool extract_artwork);
static bool __get_stream_info(char *src, AvFileContentInfo *pInfo);
mm_file_retvm_if_fails(DEBUG, formatContext, MMFILE_FORMAT_FAIL);
mm_file_retvm_if_fails(DEBUG, formatContext->privateFormatData, MMFILE_FORMAT_FAIL);
- if (!__get_tag_info(formatContext->uriFileName, formatContext->privateFormatData)) {
+ if (!__get_tag_info(formatContext->uriFileName, formatContext->privateFormatData, formatContext->extract_artwork)) {
debug_error(DEBUG, "getting tag information is failed");
return MMFILE_FORMAT_FAIL;
}
* Param pInfo [out] Specifies a struct pointer for ID3 tag information.
* This function returns true on success, or false on failure.
*/
-static bool __get_tag_info(char *filename, AvFileContentInfo *pInfo)
+static bool __get_tag_info(char *filename, AvFileContentInfo *pInfo, bool extract_artwork)
{
MMFileIOHandle *hFile;
unsigned char *buf = NULL;
}
if (pInfo->tagV2Info.tagVersion == 0x02)
- mm_file_id3tag_parse_v222(pInfo, buf);
+ mm_file_id3tag_parse_v222(pInfo, buf, extract_artwork);
else if (pInfo->tagV2Info.tagVersion == 0x03)
- mm_file_id3tag_parse_v223(pInfo, buf);
+ mm_file_id3tag_parse_v223(pInfo, buf, extract_artwork);
else if (pInfo->tagV2Info.tagVersion == 0x04)
- mm_file_id3tag_parse_v224(pInfo, buf); /* currently 2.4 ver parsed by 2.3 routine */
+ mm_file_id3tag_parse_v224(pInfo, buf, extract_artwork); /* currently 2.4 ver parsed by 2.3 routine */
else
debug_msg(RELEASE, "Invalid tag version(%d)", pInfo->tagV2Info.tagVersion);
* @endcode
*/
int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename);
+int mm_file_create_tag_attrs_no_albumart(MMHandleType *tag_attrs, const char *filename);
/**
* This function is to destory the tag attribute handle which is created by mm_file_create_tag_attrs().<BR>
* @endcode
*/
int mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format);
+int mm_file_create_tag_attrs_no_albumart_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format);
/**
* This function is to get the content attributes from media data on memory while mm_file_create_content_attrs() extracts from file.<BR>
int notsupport;
int formatType;
int commandType; /* TAG or CONTENTS */
-
+ bool extract_artwork;
MMFileSourceType *filesrc; /*ref only*/
char *uriFileName;
static int
-_get_tag_info(MMHandleType attrs, MMFileSourceType *src)
+_get_tag_info(MMHandleType attrs, MMFileSourceType *src, bool extract_albumart)
{
MMFileFormatContext *formatContext = NULL;
int ret = 0;
goto exception;
}
+ /* Set albumart flag */
+ formatContext->extract_artwork = extract_albumart;
+
ret = mmfile_format_read_tag(formatContext);
if (MMFILE_FORMAT_FAIL == ret) {
debug_warning(DEBUG, "reading tag is fail\n");
return ret;
}
-int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename)
+static int __mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename, bool extract_albumart)
{
int ret = FILEINFO_ERROR_NONE;
MMHandleType attrs = NULL;
goto END;
}
- ret = _get_tag_info(attrs, &src);
+ ret = _get_tag_info(attrs, &src, extract_albumart);
if (ret != FILEINFO_ERROR_NONE) {
mm_attrs_free(attrs);
attrs = NULL;
return ret;
}
+int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename)
+{
+ return __mm_file_create_tag_attrs(tag_attrs, filename, true);
+}
+int mm_file_create_tag_attrs_no_albumart(MMHandleType *tag_attrs, const char *filename)
+{
+ return __mm_file_create_tag_attrs(tag_attrs, filename, false);
+}
int mm_file_destroy_tag_attrs(MMHandleType tag_attrs)
{
}
-int mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format)
+static int __mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format, bool extract_albumart)
{
MMHandleType attrs = NULL;
MMFileSourceType src;
}
/*parse.type = MM_FILE_PARSE_TYPE_ALL;*/
- ret = _get_tag_info(attrs, &src);
+ ret = _get_tag_info(attrs, &src, extract_albumart);
if (ret != FILEINFO_ERROR_NONE) {
mm_attrs_free(attrs);
attrs = NULL;
return ret;
}
+int mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format)
+{
+ return __mm_file_create_tag_attrs_from_memory(tag_attrs, data, size, format, true);
+}
+int mm_file_create_tag_attrs_no_albumart_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format)
+{
+ return __mm_file_create_tag_attrs_from_memory(tag_attrs, data, size, format, false);
+}
int mm_file_create_content_attrs_from_memory(MMHandleType *contents_attrs, const void *data, unsigned int size, int format)
{
Name: libmm-fileinfo
Summary: Media Fileinfo
-Version: 1.0.1
+Version: 1.0.2
Release: 0
Group: System/Libraries
License: Apache-2.0
bool mm_file_id3tag_parse_v110(AvFileContentInfo *pInfo, unsigned char *buffer); /*20050401 Condol : for MP3 content Info. */
-bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer);
-bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer);
-bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer);
+bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork);
+bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork);
+bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork);
void mm_file_id3tag_restore_content_info(AvFileContentInfo *pInfo);
int MMFileUtilGetMetaDataFromMKV(MMFileFormatContext *formatContext);
int MMFileUtilGetMetaDataFromMP4(MMFileFormatContext *formatContext);
/* set id3v2 data to formatContext */
switch (tagVersion) {
- case 2: {
- versionCheck = mm_file_id3tag_parse_v222(&tagInfo, id3v2Box.id3v2Data);
- break;
- }
- case 3: {
- versionCheck = mm_file_id3tag_parse_v223(&tagInfo, id3v2Box.id3v2Data);
- break;
- }
- case 4: {
- versionCheck = mm_file_id3tag_parse_v224(&tagInfo, id3v2Box.id3v2Data);
- break;
- }
+ case 2:
+ versionCheck = mm_file_id3tag_parse_v222(&tagInfo, id3v2Box.id3v2Data, formatContext->extract_artwork);
+ break;
+ case 3:
+ versionCheck = mm_file_id3tag_parse_v223(&tagInfo, id3v2Box.id3v2Data, formatContext->extract_artwork);
+ break;
+ case 4:
+ versionCheck = mm_file_id3tag_parse_v224(&tagInfo, id3v2Box.id3v2Data, formatContext->extract_artwork);
+ break;
case 1:
- default: {
- debug_error(DEBUG, "tag vesion is not support");
- versionCheck = false;
- break;
- }
+ default:
+ debug_error(DEBUG, "tag vesion is not support");
+ versionCheck = false;
+ break;
}
if (versionCheck == false) {
}
-bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer)
+bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork)
{
unsigned long taglen = 0;
unsigned long needToloopv2taglen;
break;
case AV_ID3TAG_PICTURE:
- _mm_file_id3tag_parse_PIC(pInfo, pExtContent, realCpyFrameNum, (const char*)charset_array[textEncodingType]);
+ if (extract_artwork)
+ _mm_file_id3tag_parse_PIC(pInfo, pExtContent, realCpyFrameNum, (const char*)charset_array[textEncodingType]);
break;
default:
}
-bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer)
+bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork)
{
unsigned long taglen = 0;
unsigned long needToloopv2taglen;
break;
case AV_ID3TAG_PICTURE:
- _mm_file_id3tag_parse_APIC(pInfo, (unsigned char *)pExtContent, realCpyFrameNum, charset_array[textEncodingType]);
+ if (extract_artwork)
+ _mm_file_id3tag_parse_APIC(pInfo, (unsigned char *)pExtContent, realCpyFrameNum, charset_array[textEncodingType]);
break;
default:
}
-bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer)
+bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer, bool extract_artwork)
{
unsigned long taglen = 0;
unsigned long needToloopv2taglen;
break;
case AV_ID3TAG_PICTURE:
- _mm_file_id3tag_parse_APIC(pInfo, (unsigned char *)pExtContent, realCpyFrameNum, charset_array[textEncodingType]);
+ if (extract_artwork)
+ _mm_file_id3tag_parse_APIC(pInfo, (unsigned char *)pExtContent, realCpyFrameNum, charset_array[textEncodingType]);
break;
default: