{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 */
/* 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:
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);
+
/*////////////////////////////////////////////////////////////////////// */
static int _MMFileIsMPEGPSHeader(void *header);
static int _MMFileIsMPEGAUDIOHeader(void *header);
static int _MMFileIsMPEGVIDEOHeader(void *header);
+static int _MMFileIsAIFFHeader(void *header);
/***********************************************************************/
/* MP3 Header Check API */
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;
+}
/***********************************************************************/
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;
+}