From 88e6e81f953014c9d82e2b1cc7bc3c081fa9e2e3 Mon Sep 17 00:00:00 2001 From: hj kim Date: Thu, 14 Dec 2017 13:30:47 +0900 Subject: [PATCH] Support AIFF Change-Id: Idc4fd8a1caf4dc337fae1be7adf04debb24df3ee --- formats/ffmpeg/mm_file_formats.c | 3 +-- packaging/libmm-fileinfo.spec | 2 +- utils/include/mm_file_utils.h | 2 ++ utils/mm_file_util_validity.c | 54 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/formats/ffmpeg/mm_file_formats.c b/formats/ffmpeg/mm_file_formats.c index 38e5c24..c8adc20 100755 --- a/formats/ffmpeg/mm_file_formats.c +++ b/formats/ffmpeg/mm_file_formats.c @@ -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: diff --git a/packaging/libmm-fileinfo.spec b/packaging/libmm-fileinfo.spec index be813f9..835b59c 100755 --- a/packaging/libmm-fileinfo.spec +++ b/packaging/libmm-fileinfo.spec @@ -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 diff --git a/utils/include/mm_file_utils.h b/utils/include/mm_file_utils.h index 5dd8ddb..381b72e 100755 --- a/utils/include/mm_file_utils.h +++ b/utils/include/mm_file_utils.h @@ -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); + /*////////////////////////////////////////////////////////////////////// */ diff --git a/utils/mm_file_util_validity.c b/utils/mm_file_util_validity.c index 9b1d53f..400c444 100755 --- a/utils/mm_file_util_validity.c +++ b/utils/mm_file_util_validity.c @@ -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; +} -- 2.7.4