From aa6e614a9bb204a65e8c71cb47175852784a49cf Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Thu, 28 May 2020 14:23:11 +0900 Subject: [PATCH] Format validity related code cleanup Change-Id: I49beec2d64346b9ec0d04a0cfadd563a2c81e2fc Signed-off-by: Minje Ahn --- utils/mm_file_util_validity.c | 698 +++++++++++------------------------------- 1 file changed, 177 insertions(+), 521 deletions(-) diff --git a/utils/mm_file_util_validity.c b/utils/mm_file_util_validity.c index 8e13f4d..bcdb2cd 100755 --- a/utils/mm_file_util_validity.c +++ b/utils/mm_file_util_validity.c @@ -32,17 +32,10 @@ /***********************************************************************/ /* Internal functions */ /***********************************************************************/ -static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset); +static bool _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset); static int _MMFileIsMP3Header(void *header); -static int _MMFileIsMP4Header(void *header); -static int _MMFileIsMIDHeader(void *header); -static int _MMFileIsMMFHeader(void *header); -static int _MMFileIsASFHeader(void *header); -static int _MMFileIsAMRHeader(void *header); +static bool _MMFileIsMMFHeader(void *header); static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp); -static int _MMFileIsMPEGPSHeader(void *header); -static int _MMFileIsMPEGAUDIOHeader(void *header); -static int _MMFileIsMPEGVIDEOHeader(void *header); /***********************************************************************/ /* MP3 Header Check API */ @@ -63,31 +56,22 @@ int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int f int frameSize = 0; int ret = 0, count = 0, offset = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); filesize = mmfile_get_size(fp); if (filesize < _MMFILE_MP3_HEADER_LENGTH) { - debug_error(DEBUG, "header is too small.\n"); - ret = 0; + debug_error(DEBUG, "header is too small."); goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag(fp, &sizeID3); - if (ret == 0) { - debug_error(RELEASE, "Error in searching the ID3 tag\n"); + if (!_MMFileSearchID3Tag(fp, &sizeID3)) { + debug_error(RELEASE, "Error in searching the ID3 tag"); /* goto exit; */ } - ret = 0; - /* set begin and end point at the file */ startoffset += sizeID3; endoffset = startoffset + 102400; @@ -102,8 +86,7 @@ int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int f mmfile_seek(fp, i, MMFILE_SEEK_SET); readed = mmfile_read(fp, buffer, _MMFILE_MP3_BUFFER_LENGTH); if (readed < _MMFILE_MP3_HEADER_LENGTH) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + debug_error(RELEASE, "read error"); break; } @@ -120,7 +103,7 @@ int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int f } if ((j + frameSize) >= (readed - _MMFILE_MP3_HEADER_LENGTH)) { - debug_msg(RELEASE, "MP3 coner hit %d %d\n", j, frameSize); + debug_msg(RELEASE, "MP3 coner hit %d %d", j, frameSize); break; } @@ -131,7 +114,7 @@ int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int f count++; if (count == frameCnt) { ret = 1; - debug_msg(RELEASE, "Header Detected at %d\n", i + j); + debug_msg(RELEASE, "Header Detected at %d", i + j); goto exit; } } else { @@ -147,7 +130,7 @@ int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int f } failMP3: - debug_msg(RELEASE, "Header Not Detected at: %d\n", i + j); + debug_msg(RELEASE, "Header Not Detected at: %d", i + j); exit: if (pFileIO == NULL && fp != NULL) mmfile_close(fp); @@ -171,37 +154,28 @@ int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int d unsigned int sizeID3 = 0; long long filesize = 0; int readed = 0, i = 0, j = 0; + int ret = 0; int startoffset = 0; int endoffset = 0; - int ret = 0; unsigned int sync = 0; int frameSize = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); filesize = mmfile_get_size(fp); if (filesize < _MMFILE_AAC_HEADER_LENGTH) { - debug_error(DEBUG, "header is too small.\n"); - ret = 0; + debug_error(DEBUG, "header is too small."); goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag(fp, &sizeID3); - if (ret == 0) { - debug_error(RELEASE, "Error in searching the ID3 tag\n"); + if (!_MMFileSearchID3Tag(fp, &sizeID3)) { + debug_error(RELEASE, "Error in searching the ID3 tag"); /* goto exit; */ } - ret = 0; - /* set begin and end point at the file */ startoffset += sizeID3; endoffset = startoffset + 10240; @@ -216,12 +190,11 @@ int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int d readed = mmfile_read(fp, buffer, _MMFILE_AAC_BUFFER_LENGTH); if (readed < _MMFILE_AAC_HEADER_LENGTH) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + debug_error(RELEASE, "read error"); break; } - debug_msg(RELEASE, "read error. size = %d. i = %d\n", readed, i); + debug_msg(RELEASE, "read error. size = %d. i = %d", readed, i); for (j = 0; (j < readed - _MMFILE_AAC_HEADER_LENGTH); j++) { @@ -238,7 +211,7 @@ int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int d goto fail; } if ((j + frameSize) >= (readed - 2)) { - debug_msg(RELEASE, "AAC coner hit %d %d\n", j, frameSize); + debug_msg(RELEASE, "AAC coner hit %d %d", j, frameSize); break; } @@ -246,12 +219,12 @@ int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int d if ((sync & 0xFFF6) == 0xFFF0) { ret = 1; - debug_msg(RELEASE, "AAC ADTS Header Detected at %d\n", i + j); + debug_msg(RELEASE, "AAC ADTS Header Detected at %d", i + j); goto exit; } } else if (!memcmp((buffer + j), "ADIF", 4)) { ret = 1; - debug_msg(RELEASE, "AAC ADIF Header Detected at %d\n", i + j); + debug_msg(RELEASE, "AAC ADIF Header Detected at %d", i + j); goto exit; } } @@ -263,7 +236,7 @@ int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int d fail: - debug_msg(RELEASE, "Header Detected Failed\n"); + debug_msg(RELEASE, "Header Detected Failed"); exit: if (pFileIO == NULL && fp != NULL) mmfile_close(fp); @@ -293,32 +266,22 @@ int MMFileFormatIsValidOGG(MMFileIOHandle *pFileIO, const char *mmfileuri, int d int ret = 0; int check_limit = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - ret = 0; - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); filesize = mmfile_get_size(fp); if (filesize < _MMFILE_OGG_HEADER_LENGTH) { - debug_error(DEBUG, "header is too small.\n"); - ret = 0; + debug_error(DEBUG, "header is too small."); goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag(fp, &sizeID3); - if (ret == 0) { - debug_error(RELEASE, "Error in searching the ID3 tag\n"); + if (!_MMFileSearchID3Tag(fp, &sizeID3)) { + debug_error(RELEASE, "Error in searching the ID3 tag"); /* goto exit; */ } - ret = 0; - /* set begin and end point at the file */ startoffset += sizeID3; endoffset = filesize - _MMFILE_OGG_HEADER_LENGTH; @@ -330,15 +293,14 @@ int MMFileFormatIsValidOGG(MMFileIOHandle *pFileIO, const char *mmfileuri, int d mmfile_seek(fp, i, MMFILE_SEEK_SET); readed = mmfile_read(fp, buffer, _MMFILE_OGG_BUFFER_LENGTH); if (readed < _MMFILE_OGG_HEADER_LENGTH) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + debug_error(RELEASE, "read error"); break; } for (j = 0; (j <= readed - _MMFILE_OGG_HEADER_LENGTH); j++) { if (!memcmp(buffer + j, "OggS", 4)) { ret = 1; - debug_msg(RELEASE, "Header Detected at %d\n", i + j); + debug_msg(RELEASE, "Header Detected at %d", i + j); goto exit; } } @@ -376,24 +338,16 @@ int MMFileFormatIsValidMID(MMFileIOHandle *pFileIO, const char *mmfileuri, int d int ret = 0; int check_limit = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); filesize = mmfile_get_size(fp); if (filesize < _MMFILE_MIDI_HEADER_LENGTH) { - debug_error(DEBUG, "header is too small.\n"); - ret = 0; + debug_error(DEBUG, "header is too small."); goto exit; } - ret = 0; - /* set begin and end point at the file */ startoffset = 0; endoffset = filesize - _MMFILE_MIDI_HEADER_LENGTH; @@ -405,15 +359,14 @@ int MMFileFormatIsValidMID(MMFileIOHandle *pFileIO, const char *mmfileuri, int d mmfile_seek(fp, i, MMFILE_SEEK_SET); readed = mmfile_read(fp, buffer, _MMFILE_MIDI_BUFFER_LENGTH); if (readed < _MMFILE_MIDI_HEADER_LENGTH) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + debug_error(RELEASE, "read error"); break; } for (j = 0; (j <= readed - _MMFILE_MIDI_HEADER_LENGTH); j++) { - if (1 == _MMFileIsMIDHeader(buffer + j)) { + if (!memcmp(buffer + j, "MThd", 4) || !memcmp(buffer + j, "XMF_", 4) || !memcmp(buffer + j, "IREZ", 4)) { ret = 1; - debug_msg(RELEASE, "Header Detected at %d\n", i + j); + debug_msg(RELEASE, "Header Detected at %d", i + j); goto exit; } } @@ -441,31 +394,21 @@ int MMFileFormatIsValidWAV(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_WAV_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_WAV_HEADER_LENGTH); - - if (_MMFILE_WAV_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_WAV_HEADER_LENGTH) != _MMFILE_WAV_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "RIFF", 4) && !memcmp(buffer + 8, "WAVE", 4)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -488,44 +431,35 @@ int MMFileFormatIsValidMP4(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MP4_HEADER_LENGTH] = {0, }; long long filesize = 0; - int readed = 0; unsigned int startoffset = 0; int ret = 0; unsigned int check_limit = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); filesize = mmfile_get_size(fp); if (filesize < _MMFILE_MP4_HEADER_LENGTH) { - debug_error(DEBUG, "header is too small.\n"); - ret = 0; + debug_error(DEBUG, "header is too small."); goto exit; } - ret = 0; - /**@note weak check*/ check_limit = (filesize > _MMFILE_MP4_CHECK_LIMIT) ? _MMFILE_MP4_CHECK_LIMIT : filesize; for (startoffset = 0; check_limit - (startoffset + _MMFILE_MP4_HEADER_LENGTH) > 0; startoffset++) { mmfile_seek(fp, startoffset, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MP4_HEADER_LENGTH); - if (readed != _MMFILE_MP4_HEADER_LENGTH) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MP4_HEADER_LENGTH) != _MMFILE_MP4_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } /*input is 4byte*/ - if (1 == _MMFileIsMP4Header(buffer)) { - debug_msg(RELEASE, "MP4 Header Detected\n"); + if (!memcmp(buffer, "moov", 4) || !memcmp(buffer, "mdat", 4) || !memcmp(buffer, "ftyp", 4) || + !memcmp(buffer, "free", 4) || !memcmp(buffer, "uuid", 4) || !memcmp(buffer, "skip", 4) || + !memcmp(buffer, "PICT", 4) || !memcmp(buffer, "wide", 4) || !memcmp(buffer, "prfl", 4)) { + debug_msg(RELEASE, "MP4 Header Detected"); ret = 1; goto exit; } @@ -549,31 +483,21 @@ int MMFileFormatIsValidAVI(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_AVI_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_AVI_HEADER_LENGTH); - - if (_MMFILE_AVI_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_AVI_HEADER_LENGTH) != _MMFILE_AVI_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "RIFF", 4) && !memcmp(buffer + 8, "AVI", 3)) { - debug_msg(RELEASE, "Header Detected \n"); + debug_msg(RELEASE, "Header Detected "); ret = 1; - goto exit; } exit: @@ -594,31 +518,25 @@ int MMFileFormatIsValidASF(MMFileIOHandle *pFileIO, const char *mmfileuri, int d #define _MMFILE_ASF_HEADER_LENGTH 16 MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_ASF_HEADER_LENGTH); - - if (_MMFILE_ASF_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_ASF_HEADER_LENGTH) != _MMFILE_ASF_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } - if (1 == _MMFileIsASFHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + /* ID: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C */ + if ((buffer[0] == 0x30) && (buffer[1] == 0x26) && (buffer[2] == 0xB2) && (buffer[3] == 0x75) && + (buffer[4] == 0x8E) && (buffer[5] == 0x66) && (buffer[6] == 0xCF) && (buffer[7] == 0x11) && + (buffer[8] == 0xA6) && (buffer[9] == 0xD9) && (buffer[10] == 0x00) && (buffer[11] == 0xAA) && + (buffer[12] == 0x00) && (buffer[13] == 0x62) && (buffer[14] == 0xCE) && (buffer[15] == 0x6C)) { + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -659,31 +577,21 @@ int MMFileFormatIsValidMMF(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MMF_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MMF_HEADER_LENGTH); - - if (_MMFILE_MMF_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MMF_HEADER_LENGTH) != _MMFILE_MMF_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } - if (1 == _MMFileIsMMFHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + if (_MMFileIsMMFHeader(buffer)) { + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -705,31 +613,21 @@ int MMFileFormatIsValidIMY(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_IMY_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_IMY_HEADER_LENGTH); - - if (_MMFILE_IMY_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_IMY_HEADER_LENGTH) != _MMFILE_IMY_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "BEGIN:IMELODY", 13)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -752,29 +650,23 @@ int MMFileFormatIsValidAMR(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_AMR_MAX_HEADER_SIZE] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_AMR_MAX_HEADER_SIZE); - - if (_MMFILE_AMR_MAX_HEADER_SIZE != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_AMR_MAX_HEADER_SIZE) != _MMFILE_AMR_MAX_HEADER_SIZE) { + debug_error(RELEASE, "read error"); goto exit; } - if (1 == _MMFileIsAMRHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + if (!memcmp(buffer, "#!AMR\n", 6) || + !memcmp(buffer, "#!AMR-WB\n", 9) || + !memcmp(buffer, "#!AMR_MC1.0\n", 12) || + !memcmp(buffer, "#!AMR-WB_MC1.0\n", 15)) { + debug_msg(RELEASE, "Header Detected"); ret = 1; goto exit; } @@ -797,42 +689,32 @@ int MMFileFormatIsValidMatroska(MMFileIOHandle *pFileIO, const char *mmfileuri, MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MKV_READ_BUFFER_LENGTH] = {0, }; - int readed = 0; int ret = 0; int len_mask = 0x80; unsigned int size = 1, n = 1, total = 0; //char probe_data[] = { 'm', 'a', 't', 'r', 'o', 's', 'k', 'a' }; /*support webm, add probe data*/ const char * probe_data[2] = { "matroska", "webm" }; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MKV_READ_BUFFER_LENGTH); - - if (_MMFILE_MKV_READ_BUFFER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MKV_READ_BUFFER_LENGTH) != _MMFILE_MKV_READ_BUFFER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } /* ebml header? */ if (buffer[0] != 0x1A || buffer[1] != 0x45 || buffer[2] != 0xDF || buffer[3] != 0xA3) { - debug_msg(RELEASE, "This is not a EBML format\n"); - ret = 0; + debug_msg(RELEASE, "This is not a EBML format"); goto exit; } /* length of header */ total = buffer[4]; - debug_msg(RELEASE, "Initial total header size = [0x%x]\n", total); + debug_msg(RELEASE, "Initial total header size = [0x%x]", total); while (size <= 8 && !(total & len_mask)) { debug_msg(DEBUG, "This case can not be handled yet...."); @@ -840,11 +722,10 @@ int MMFileFormatIsValidMatroska(MMFileIOHandle *pFileIO, const char *mmfileuri, len_mask >>= 1; } - debug_msg(RELEASE, "Final total header size = [%d]\n", total); + debug_msg(RELEASE, "Final total header size = [%d]", total); if (size > 8) { debug_msg(DEBUG, "This case can not be handled yet...."); - ret = 0; goto exit; } @@ -866,7 +747,7 @@ int MMFileFormatIsValidMatroska(MMFileIOHandle *pFileIO, const char *mmfileuri, continue; for (n = 4 + size ; n <= 4 + size + total - probelen; n++) { if (!memcmp(&buffer[n], probe_data[i], probelen)) { - debug_msg(RELEASE, "String %s found!!!\n", probe_data[i]); + debug_msg(RELEASE, "String %s found!!!", probe_data[i]); ret = 1; goto exit; } @@ -899,31 +780,21 @@ int MMFileFormatIsValidFLAC(MMFileIOHandle *pFileIO, const char *mmfileuri, int MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_FLAC_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_FLAC_HEADER_LENGTH); - - if (_MMFILE_FLAC_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_FLAC_HEADER_LENGTH) != _MMFILE_FLAC_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "fLaC", 4)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -943,31 +814,21 @@ int MMFileFormatIsValidFLV(MMFileIOHandle *pFileIO, const char *mmfileuri, int d MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_FLV_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_FLV_HEADER_LENGTH); - - if (_MMFILE_FLV_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_FLV_HEADER_LENGTH) != _MMFILE_FLV_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "FLV", 3)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -988,32 +849,21 @@ int MMFileFormatIsValidREAL(MMFileIOHandle *pFileIO, const char *mmfileuri, int MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_RMVB_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_RMVB_HEADER_LENGTH); - - if (_MMFILE_RMVB_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_RMVB_HEADER_LENGTH) != _MMFILE_RMVB_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, ".RMF", 4)) { - debug_msg(RELEASE, "Header Detected\n"); - + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1041,31 +891,21 @@ int MMFileFormatIsValidMPEGTS(MMFileIOHandle *pFileIO, const char *mmfileuri, in { MMFileIOHandle *fp = pFileIO; unsigned char buffer[TS_MAX_PACKET_SIZE] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, TS_MAX_PACKET_SIZE); - - if (TS_MAX_PACKET_SIZE != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, TS_MAX_PACKET_SIZE) != TS_MAX_PACKET_SIZE) { + debug_error(RELEASE, "read error"); goto exit; } if (_MMFileIsMPEGTSHeader(fp) != MPEGTS_NONE) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1085,31 +925,21 @@ int MMFileFormatIsValidMPEGPS(MMFileIOHandle *pFileIO, const char *mmfileuri, in MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MPEGPS_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MPEGPS_HEADER_LENGTH); - - if (_MMFILE_MPEGPS_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MPEGPS_HEADER_LENGTH) != _MMFILE_MPEGPS_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } - if (1 == _MMFileIsMPEGPSHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + if ((buffer[0] == 0x00) && (buffer[1] == 0x00) && (buffer[2] == 0x01) && (buffer[3] == 0xba)) { + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1129,31 +959,22 @@ int MMFileFormatIsValidMPEGAUDIO(MMFileIOHandle *pFileIO, const char *mmfileuri, MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MPEGAUDIO_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MPEGAUDIO_HEADER_LENGTH); - - if (_MMFILE_MPEGAUDIO_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MPEGAUDIO_HEADER_LENGTH) != _MMFILE_MPEGAUDIO_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } - - if (1 == _MMFileIsMPEGAUDIOHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + /* mpeg audio version 1, layer 1 header, FE: protected by CRC ,FF: not protected */ + /* mpeg audio version 2, layer 1 header, F7: not protected */ + if ((buffer[0] == 0xFF) && ((buffer[1] == 0xFE) || (buffer[1] == 0xFF) || (buffer[1] == 0xF7))) { + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1173,31 +994,21 @@ int MMFileFormatIsValidMPEGVIDEO(MMFileIOHandle *pFileIO, const char *mmfileuri, MMFileIOHandle *fp = pFileIO; unsigned char buffer[_MMFILE_MPEGVIDEO_HEADER_LENGTH] = {0, }; - int readed = 0; int ret = 0; - if (fp == NULL) { - ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - readed = mmfile_read(fp, buffer, _MMFILE_MPEGVIDEO_HEADER_LENGTH); - - if (_MMFILE_MPEGVIDEO_HEADER_LENGTH != readed) { - debug_error(RELEASE, "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; + if (mmfile_read(fp, buffer, _MMFILE_MPEGVIDEO_HEADER_LENGTH) != _MMFILE_MPEGVIDEO_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } - if (1 == _MMFileIsMPEGVIDEOHeader(buffer)) { - debug_msg(RELEASE, "Header Detected\n"); + if ((buffer[0] == 0x00) && (buffer[1] == 0x00) && (buffer[2] == 0x01) && (buffer[3] == 0xb3)) { + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1217,31 +1028,21 @@ int MMFileFormatIsValidAIFF(MMFileIOHandle *pFileIO, const char *mmfileuri, int 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_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); 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; + if (mmfile_read(fp, buffer, _MMFILE_AIFF_HEADER_LENGTH) != _MMFILE_AIFF_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "FORM", 4) && !memcmp(buffer + 8, "AIFF", 4)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1258,31 +1059,21 @@ int MMFileFormatIsValidAPE(MMFileIOHandle *pFileIO, const char *mmfileuri, int d 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_UTIL_FAIL) { - debug_error(DEBUG, "error: mmfile_open\n"); - goto exit; - } - } + if (fp == NULL) + mm_file_retvm_if_fails(DEBUG, mmfile_open(&fp, mmfileuri, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, MMFILE_UTIL_FAIL); 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; + if (mmfile_read(fp, buffer, _MMFILE_APE_HEADER_LENGTH) != _MMFILE_APE_HEADER_LENGTH) { + debug_error(RELEASE, "read error"); goto exit; } if (!memcmp(buffer, "MAC ", 4)) { - debug_msg(RELEASE, "Header Detected\n"); + debug_msg(RELEASE, "Header Detected"); ret = 1; - goto exit; } exit: @@ -1295,103 +1086,26 @@ exit: /***********************************************************************/ /* Implementation of Internal Functions */ /***********************************************************************/ -static int _MMFileIsASFHeader(void *header) +static bool _MMFileIsMMFHeader(void *header) { - /* ID: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C */ +#define _MMFILE_MMF_TYPE_POSITION 0x11 unsigned char *s = header; - if ((*(s + 0) == 0x30) && - (*(s + 1) == 0x26) && - (*(s + 2) == 0xB2) && - (*(s + 3) == 0x75) && - (*(s + 4) == 0x8E) && - (*(s + 5) == 0x66) && - (*(s + 6) == 0xCF) && - (*(s + 7) == 0x11) && - (*(s + 8) == 0xA6) && - (*(s + 9) == 0xD9) && - (*(s + 10) == 0x00) && - (*(s + 11) == 0xAA) && - (*(s + 12) == 0x00) && - (*(s + 13) == 0x62) && - (*(s + 14) == 0xCE) && - (*(s + 15) == 0x6C)) { - - return 1; - } + mm_file_retv_if_fails(memcmp(s, "MMMD", 4) == 0, false); - return 0; -} + /* warning: comparison is always true due to limited range of data type */ + if (s[_MMFILE_MMF_TYPE_POSITION] <= 0x2F) + return true; -static int _MMFileIsAMRHeader(void *header) -{ - unsigned char *s = header; + if (((s[_MMFILE_MMF_TYPE_POSITION] >= 0x30) && (s[_MMFILE_MMF_TYPE_POSITION] <= 0x38)) /* MA3, MA5 type */ + || ((s[_MMFILE_MMF_TYPE_POSITION] >= 0x40) && (s[_MMFILE_MMF_TYPE_POSITION] <= 0x48)) + || ((s[_MMFILE_MMF_TYPE_POSITION] >= 0x50) && (s[_MMFILE_MMF_TYPE_POSITION] <= 0x58)) + || ((s[_MMFILE_MMF_TYPE_POSITION] == 0xF0))) { - if (!memcmp(s, "#!AMR\n", 6) || - !memcmp(s, "#!AMR-WB\n", 9) || - !memcmp(s, "#!AMR_MC1.0\n", 12) || - !memcmp(s, "#!AMR-WB_MC1.0\n", 15)) { - - return 1; + return true; } - return 0; -} - -static int _MMFileIsMIDHeader(void *header) -{ - unsigned char *s = header; - - if (!memcmp(s, "MThd", 4)) { /*general MIDI*/ - return 1; - } else if (!memcmp(s, "XMF_", 4)) { /*XMF*/ - return 1; - } else if (!memcmp(s, "IREZ", 4)) { - return 1; /*RMF format*/ - } - - return 0; -} - -static int _MMFileIsMMFHeader(void *header) -{ -#define _MMFILE_MMF_TYPE_POSITION ((char)0x11) - unsigned char *s = header; - - if (!memcmp(s, "MMMD", 4)) { - /* warning: comparison is always true due to limited range of data type */ - if (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x2F) { - return 1; - } else if (((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x30) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x38)) /* MA3, MA5 type */ - || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x40) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x48)) - || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x50) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x58)) - || ((*(s + _MMFILE_MMF_TYPE_POSITION) == 0xF0))) { - - return 1; - } - } - - return 0; -} - -static int _MMFileIsMP4Header(void *header) -{ - unsigned char *s = header; - - if (!memcmp(s, "moov", 4) || - !memcmp(s, "mdat", 4) || - !memcmp(s, "ftyp", 4) || - !memcmp(s, "free", 4) || - !memcmp(s, "uuid", 4) || - !memcmp(s, "skip", 4) || - - !memcmp(s, "PICT", 4) || - !memcmp(s, "wide", 4) || - !memcmp(s, "prfl", 4)) { - return 1; - } - - return 0; + return false; } static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp) @@ -1437,47 +1151,6 @@ static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp) return MPEGTS_NONE; } -static int _MMFileIsMPEGPSHeader(void *header) -{ - unsigned char *s = header; - - if ((*(s + 0) == 0x00) && - (*(s + 1) == 0x00) && - (*(s + 2) == 0x01) && - (*(s + 3) == 0xba)) { /* mpeg-ps header */ - return 1; - } - - return 0; -} - -static int _MMFileIsMPEGAUDIOHeader(void *header) -{ - unsigned char *s = header; - - if ((*(s + 0) == 0xFF) && - ((*(s + 1) == 0xFE) || (*(s + 1) == 0xFF) /* mpeg audio version 1, layer 1 header, FE: protected by CRC ,FF: not protected */ - || (*(s + 1) == 0xF7))) { /* mpeg audio version 2, layer 1 header, F7: not protected */ - return 1; - } - - return 0; -} - -static int _MMFileIsMPEGVIDEOHeader(void *header) -{ - unsigned char *s = header; - - if ((*(s + 0) == 0x00) && - (*(s + 1) == 0x00) && - (*(s + 2) == 0x01) && - (*(s + 3) == 0xb3)) { /* mpeg1 video header */ - return 1; - } - - return 0; -} - static int _MMFileIsMP3Header(void *header) { unsigned long head = 0; @@ -1510,9 +1183,7 @@ static int _MMFileIsMP3Header(void *header) /* header */ head = MMFILE_CONVERT_INT(headc); - if ((head & 0xffe00000) != 0xffe00000) { - return 0; - } + mm_file_retv_if_fails((head & 0xffe00000) == 0xffe00000, 0); /* we don't need extension, copyright, original or * emphasis for the frame length */ @@ -1528,33 +1199,26 @@ static int _MMFileIsMP3Header(void *header) /* sampling frequency */ samplerate = head & 0x3; - if (samplerate == 3) { - return 0; - } + mm_file_retv_if_fails(samplerate != 3, 0); + head >>= 2; /* bitrate index */ bitrate = head & 0xF; - - if (bitrate == 15) { - return 0; - } + mm_file_retv_if_fails(bitrate != 15, 0); /* ignore error correction, too */ head >>= 5; /* layer */ layer = 4 - (head & 0x3); - if (layer == 4) { - return 0; - } + mm_file_retv_if_fails(layer != 4, 0); + head >>= 2; /* version 0=MPEG2.5; 2=MPEG2; 3=MPEG1 */ version = head & 0x3; - if (version == 1) { - return 0; - } + mm_file_retv_if_fails(version != 1, 0); /* lookup */ /*channels = (mode == 3) ? 1 : 2;*/ @@ -1572,7 +1236,7 @@ static int _MMFileIsMP3Header(void *header) return length; } -static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset) +static bool _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset) { #define _MMFILE_MP3_TAGV2_HEADER_LEN 10 @@ -1581,8 +1245,7 @@ static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset) unsigned int acc_tagsize = 0; int tagVersion = 0; int encSize = 0; - int readed = 0; - int ret = 0; + bool ret = 0; /*init offset*/ *offset = 0; @@ -1591,51 +1254,44 @@ static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset) _START_TAG_SEARCH: - readed = mmfile_read(fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN); - if (readed != _MMFILE_MP3_TAGV2_HEADER_LEN) { - debug_error(RELEASE, "read error occured.\n"); - return 0; + if (mmfile_read(fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN) != _MMFILE_MP3_TAGV2_HEADER_LEN) { + debug_error(RELEASE, "read error occured."); + return false; } if (memcmp(tagHeader, "ID3", 3) == 0) { - debug_msg(RELEASE, "'ID3' found.\n"); + debug_msg(RELEASE, "'ID3' found."); } else { - debug_msg(RELEASE, "'ID3' not found.\n"); - goto search_end; + debug_msg(RELEASE, "'ID3' not found."); + return ret; } /**@note weak id3v2 tag checking*/ if (tagHeader[3] != 0xFF && tagHeader[4] != 0xFF && (tagHeader[6] & 0x80) == 0 && (tagHeader[7] & 0x80) == 0 && (tagHeader[8] & 0x80) == 0 && (tagHeader[9] & 0x80) == 0) { - debug_msg(RELEASE, "good ID3V2 tag.\n"); + debug_msg(RELEASE, "good ID3V2 tag."); } else { - debug_warning(DEBUG, "It's bad ID3V2 tag.\n"); - goto search_end; + debug_warning(DEBUG, "It's bad ID3V2 tag."); + return ret; } tagVersion = tagHeader[3]; - if (tagVersion > 4) { - debug_msg(RELEASE, "Tag version not supported\n"); - goto search_end; - } + mm_file_retvm_if_fails(RELEASE, tagVersion <= 4, ret); encSize = MMFILE_CONVERT_INT(&tagHeader[6]); tagInfoSize = _MMFILE_MP3_TAGV2_HEADER_LEN; tagInfoSize += (((encSize & 0x0000007F) >> 0) | ((encSize & 0x00007F00) >> 1) | ((encSize & 0x007F0000) >> 2) | ((encSize & 0x7F000000) >> 3)); - /**@note unfortunately, some contents has many id3 tag.*/ acc_tagsize += tagInfoSize; - debug_msg(RELEASE, "tag size: %u, offset: %u\n", tagInfoSize, acc_tagsize); + debug_msg(RELEASE, "tag size: %u, offset: %u", tagInfoSize, acc_tagsize); mmfile_seek(fp, acc_tagsize, MMFILE_SEEK_SET); *offset = acc_tagsize; - ret = 1; + ret = true; + /** Some contents has many ID3 tag. Use last one */ goto _START_TAG_SEARCH; - -search_end: - return ret; } -- 2.7.4