Support AIFF 14/163914/1 accepted/tizen/unified/20171219.072641 submit/tizen/20171214.062642
authorhj kim <backto.kim@samsung.com>
Thu, 14 Dec 2017 04:30:47 +0000 (13:30 +0900)
committerhj kim <backto.kim@samsung.com>
Thu, 14 Dec 2017 04:31:10 +0000 (13:31 +0900)
Change-Id: Idc4fd8a1caf4dc337fae1be7adf04debb24df3ee

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

index 38e5c24..c8adc20 100755 (executable)
@@ -92,7 +92,7 @@ const struct {
        {mmfile_format_open_amr,   MMFileFormatIsValidAMR},                     /* AMR */
        {mmfile_format_open_aac,   MMFileFormatIsValidAAC},                     /* AAC */
        {mmfile_format_open_mp3,   MMFileFormatIsValidMP3},                     /* MP3 */
-       {mmfile_format_open_ffmpg, NULL},                                                       /* AIFF */
+       {mmfile_format_open_ffmpg, MMFileFormatIsValidAIFF},                    /* AIFF */
        {NULL, NULL},                                                                                           /* AU */
        {mmfile_format_open_wav,   MMFileFormatIsValidWAV},                     /* WAV */
        {mmfile_format_open_mid,   MMFileFormatIsValidMID},                     /* MID */
@@ -402,7 +402,6 @@ PROBE_PROPER_FILE_TYPE:
 
                /* not supported file */
                case MM_FILE_FORMAT_NUT:
-               case MM_FILE_FORMAT_AIFF:
                case MM_FILE_FORMAT_AU:
                case MM_FILE_FORMAT_VOB:
                case MM_FILE_FORMAT_JPG:
index be813f9..835b59c 100755 (executable)
@@ -1,6 +1,6 @@
 Name:      libmm-fileinfo
 Summary:    Media Fileinfo
-Version:    0.6.71
+Version:    0.6.72
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 5dd8ddb..381b72e 100755 (executable)
@@ -100,6 +100,8 @@ int MMFileFormatIsValidMPEGTS(MMFileIOHandle *pFileIO, const char *mmfileuri, in
 int MMFileFormatIsValidMPEGPS(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy);
 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);
+
 
 
 /*////////////////////////////////////////////////////////////////////// */
index 9b1d53f..400c444 100755 (executable)
@@ -50,6 +50,7 @@ static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp);
 static int _MMFileIsMPEGPSHeader(void *header);
 static int _MMFileIsMPEGAUDIOHeader(void *header);
 static int _MMFileIsMPEGVIDEOHeader(void *header);
+static int _MMFileIsAIFFHeader(void *header);
 
 /***********************************************************************/
 /*                     MP3 Header Check API                            */
@@ -1300,7 +1301,49 @@ exit:
        return ret;
 }
 
+/***********************************************************************/
+/*                     AIFF Header Check API                                  */
+/***********************************************************************/
+EXPORT_API
+int MMFileFormatIsValidAIFF(MMFileIOHandle *pFileIO, const char *mmfileuri, int dummy)
+{
+#define _MMFILE_AIFF_HEADER_LENGTH 13
+
+       MMFileIOHandle *fp = pFileIO;
+       unsigned char buffer[_MMFILE_AIFF_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_AIFF_HEADER_LENGTH);
+
+       if (_MMFILE_AIFF_HEADER_LENGTH != readed) {
+               debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed);
+               ret = 0;
+               goto exit;
+       }
+
+       if (1 == _MMFileIsAIFFHeader(buffer)) {
+               debug_msg(RELEASE, "Header Detected\n");
+               ret = 1;
+               goto exit;
+       }
+
+exit:
+       if (pFileIO == NULL && fp != NULL)
+               mmfile_close(fp);
 
+       return ret;
+}
 
 
 /***********************************************************************/
@@ -1744,3 +1787,14 @@ static int _MMFileIsFLVHeader(void *header)
 
        return 0;
 }
+
+static int _MMFileIsAIFFHeader(void *header)
+{
+       unsigned char *s = header;
+
+       if (!memcmp(s, "FORM", 4) && !memcmp(s + 8, "AIFF", 4)) {
+               return 1;
+       }
+
+       return 0;
+}