summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchen89.chen <chen89.chen@samsung.com>2018-01-12 15:40:59 +0800
committerchen89.chen <chen89.chen@samsung.com>2018-01-12 15:41:14 +0800
commit3b11df6065d5e003dc332ef2e40fa87508614952 (patch)
tree1eef494a439269ed6ffadb5bedb82420fd6ca46c
parent047b89aecc503c5c636b09679466bef79be3624e (diff)
downloadlibmm-fileinfo-3b11df6065d5e003dc332ef2e40fa87508614952.tar.gz
libmm-fileinfo-3b11df6065d5e003dc332ef2e40fa87508614952.tar.bz2
libmm-fileinfo-3b11df6065d5e003dc332ef2e40fa87508614952.zip
Change-Id: I529ee542ea735c8d33ee1b4eefa15135e3c8df3c
-rwxr-xr-xformats/ffmpeg/mm_file_formats.c4
-rwxr-xr-xpackaging/libmm-fileinfo.spec2
-rwxr-xr-xutils/include/mm_file_utils.h1
-rwxr-xr-xutils/mm_file_util_validity.c51
4 files changed, 57 insertions, 1 deletions
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;
+}