add support ape format 58/166858/1 accepted/tizen/unified/20180131.060513 submit/tizen/20180114.234158 submit/tizen/20180130.062218
authorchen89.chen <chen89.chen@samsung.com>
Fri, 12 Jan 2018 07:40:59 +0000 (15:40 +0800)
committerchen89.chen <chen89.chen@samsung.com>
Fri, 12 Jan 2018 07:41:14 +0000 (15:41 +0800)
Change-Id: I529ee542ea735c8d33ee1b4eefa15135e3c8df3c

formats/ffmpeg/mm_file_formats.c
packaging/libmm-fileinfo.spec
utils/include/mm_file_utils.h
utils/mm_file_util_validity.c

index c8adc20..6bdeee5 100755 (executable)
@@ -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;
        }
index 835b59c..fa3b3a6 100755 (executable)
@@ -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
index 381b72e..73d2334 100755 (executable)
@@ -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);
 
 
 
index 400c444..e2cae07 100755 (executable)
@@ -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;
+}