From: chen89.chen Date: Fri, 12 Jan 2018 07:40:59 +0000 (+0800) Subject: add support ape format X-Git-Tag: accepted/tizen/unified/20180131.060513^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3b11df6065d5e003dc332ef2e40fa87508614952;p=platform%2Fcore%2Fmultimedia%2Flibmm-fileinfo.git add support ape format Change-Id: I529ee542ea735c8d33ee1b4eefa15135e3c8df3c --- diff --git a/formats/ffmpeg/mm_file_formats.c b/formats/ffmpeg/mm_file_formats.c index c8adc20..6bdeee5 100755 --- a/formats/ffmpeg/mm_file_formats.c +++ b/formats/ffmpeg/mm_file_formats.c @@ -75,6 +75,7 @@ #define MMFILE_EXT_3M 0x336D #define MMFILE_EXT_26L 0x32366C #define MMFILE_EXT_264 0x323634 +#define MMFILE_EXT_APE 0x617065 const struct { int (*Open)(MMFileFormatContext *fileContext); @@ -109,6 +110,7 @@ const struct { {mmfile_format_open_ffmpg, MMFileFormatIsValidMPEGPS}, /* MPEG-PS */ {mmfile_format_open_ffmpg, MMFileFormatIsValidMPEGVIDEO}, /* MPEG 1 VIDEO */ {mmfile_format_open_ffmpg, MMFileFormatIsValidMPEGAUDIO}, /* MPEG 1 AUDIO */ + {mmfile_format_open_ffmpg, MMFileFormatIsValidAPE}, /* APE */ {NULL, NULL} }; @@ -281,6 +283,8 @@ int fileExtToFormatType(unsigned long long fileExt) case MMFILE_EXT_AIFF: return MM_FILE_FORMAT_AIFF; + case MMFILE_EXT_APE: + return MM_FILE_FORMAT_APE; default: return MM_FILE_FORMAT_NUM; } diff --git a/packaging/libmm-fileinfo.spec b/packaging/libmm-fileinfo.spec index 835b59c..fa3b3a6 100755 --- a/packaging/libmm-fileinfo.spec +++ b/packaging/libmm-fileinfo.spec @@ -1,6 +1,6 @@ Name: libmm-fileinfo Summary: Media Fileinfo -Version: 0.6.72 +Version: 0.6.73 Release: 0 Group: System/Libraries License: Apache-2.0 diff --git a/utils/include/mm_file_utils.h b/utils/include/mm_file_utils.h index 381b72e..73d2334 100755 --- a/utils/include/mm_file_utils.h +++ b/utils/include/mm_file_utils.h @@ -101,6 +101,7 @@ int MMFileFormatIsValidMPEGPS(MMFileIOHandle *pFileIO, const char *mmfileuri, in int MMFileFormatIsValidMPEGVIDEO(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy); int MMFileFormatIsValidMPEGAUDIO(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy); int MMFileFormatIsValidAIFF(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy); +int MMFileFormatIsValidAPE(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy); diff --git a/utils/mm_file_util_validity.c b/utils/mm_file_util_validity.c index 400c444..e2cae07 100755 --- a/utils/mm_file_util_validity.c +++ b/utils/mm_file_util_validity.c @@ -51,6 +51,7 @@ static int _MMFileIsMPEGPSHeader(void *header); static int _MMFileIsMPEGAUDIOHeader(void *header); static int _MMFileIsMPEGVIDEOHeader(void *header); static int _MMFileIsAIFFHeader(void *header); +static int _MMFileIsAPEHeader(void *header); /***********************************************************************/ /* MP3 Header Check API */ @@ -1345,6 +1346,46 @@ exit: return ret; } +EXPORT_API +int MMFileFormatIsValidAPE(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy) +{ +#define _MMFILE_APE_HEADER_LENGTH 4 /*APE*/ + + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_APE_HEADER_LENGTH] = {0, }; + int readed = 0; + int ret = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error(DEBUG, "error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_APE_HEADER_LENGTH); + + if (_MMFILE_APE_HEADER_LENGTH != readed) { + debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); + ret = 0; + goto exit; + } + + if (1 == _MMFileIsAPEHeader(buffer)) { + debug_msg(RELEASE, "Header Detected\n"); + ret = 1; + goto exit; + } + +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); + + return ret; +} /***********************************************************************/ /* Implementation of Internal Functions */ @@ -1798,3 +1839,13 @@ static int _MMFileIsAIFFHeader(void *header) return 0; } +static int _MMFileIsAPEHeader(void *header) +{ + unsigned char *s = header; + + if (!memcmp(s, "MAC ", 4)) { + return 1; + } + + return 0; +}