Format mp3 cleanup 22/234022/4
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 21 May 2020 06:42:35 +0000 (15:42 +0900)
committerMinje ahn <minje.ahn@samsung.com>
Thu, 28 May 2020 23:20:35 +0000 (23:20 +0000)
Change-Id: I200a97ef3434058a10097c13f51cd782ddaea2e2
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
formats/ffmpeg/include/mm_file_format_audio.h
formats/ffmpeg/mm_file_format_mp3.c
utils/include/mm_file_utils.h
utils/mm_file_util_tag.c

index 11b08f0c31fb15238aee78a0a4172739e94b6c9c..9909d3101028771a1ab9e7d24e4ebb36f9585a63 100755 (executable)
@@ -29,7 +29,6 @@
 #define MPEG_2_SIZE_LAYER_2_3  (MPEG_1_SIZE_LAYER_2_3 / 2)
 
 /* MP3 */
-#define MP3TAGINFO_SIZE                128         /* file end 128 byte  */
 #define FRAMES_FLAG                    0x0001
 #define BYTES_FLAG                     0x0002
 #define TOC_FLAG                       0x0004
index 1e1fe516a6f1016f13ac147ef530a9cecd97d7bc..d490284b377c34b2b41a9069b85e40546a1a7db9 100644 (file)
 #include "mm_file_format_audio.h"
 #include "mm_file_format_mp3.h"
 
-#define __MMFILE_NEW_FRAME_FUNC
-
-#define AV_MP3_FIND_SYNC_LEN           1024*30
-#undef MIN
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-
+#define MMFILE_MIN(a, b) ((a) < (b) ? (a) : (b))
 
 static const unsigned char mp3FrameMasking[4] = {0xFF, 0xFE, 0x0C, 0x00};
 static unsigned char mp3FrameDataValid[4];
@@ -76,25 +71,17 @@ int mmfile_format_read_tag_mp3(MMFileFormatContext *formatContext);
 int mmfile_format_close_mp3(MMFileFormatContext *formatContext);
 
 /* internal */
-static int mmf_file_mp3_get_tag_info(char *src, AvFileContentInfo *pInfo);
-static int mmf_file_mp3_get_stream_info(char *src, AvFileContentInfo *pInfo);
-
+static bool __get_tag_info(char *src, AvFileContentInfo *pInfo);
+static bool __get_stream_info(char *src, AvFileContentInfo *pInfo);
 
 
 int mmfile_format_open_mp3(MMFileFormatContext *formatContext)
 {
        AvFileContentInfo *privateData = NULL;;
-       int ret = 0;
-
        debug_fenter(RELEASE);
 
        mm_file_retvm_if_fails(DEBUG, formatContext, MMFILE_FORMAT_FAIL);
-
-       ret = MMFileFormatIsValidMP3(NULL, formatContext->uriFileName, 5);
-       if (ret == 0) {
-               debug_error(DEBUG, "It is not mp3 file\n");
-               return MMFILE_FORMAT_FAIL;
-       }
+       mm_file_retvm_if_fails(DEBUG, MMFileFormatIsValidMP3(NULL, formatContext->uriFileName, 5), MMFILE_FORMAT_FAIL);
 
        formatContext->ReadStream   = mmfile_format_read_stream_mp3;
        formatContext->ReadFrame    = mmfile_format_read_frame_mp3;
@@ -112,7 +99,6 @@ int mmfile_format_open_mp3(MMFileFormatContext *formatContext)
 }
 
 
-
 int mmfile_format_read_stream_mp3(MMFileFormatContext *formatContext)
 {
        AvFileContentInfo *privateData = NULL;
@@ -122,7 +108,7 @@ int mmfile_format_read_stream_mp3(MMFileFormatContext *formatContext)
        mm_file_retvm_if_fails(DEBUG, formatContext, MMFILE_FORMAT_FAIL);
        mm_file_retvm_if_fails(DEBUG, formatContext->privateFormatData, MMFILE_FORMAT_FAIL);
 
-       if (MMFILE_FORMAT_SUCCESS != mmf_file_mp3_get_stream_info(formatContext->uriFileName, formatContext->privateFormatData)) {
+       if (!__get_stream_info(formatContext->uriFileName, formatContext->privateFormatData)) {
                debug_error(DEBUG, "getting stream information is failed");
                return MMFILE_FORMAT_FAIL;
        }
@@ -147,7 +133,6 @@ int mmfile_format_read_stream_mp3(MMFileFormatContext *formatContext)
 }
 
 
-
 int mmfile_format_read_frame_mp3(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame)
 {
        return MMFILE_FORMAT_SUCCESS;
@@ -163,7 +148,7 @@ int mmfile_format_read_tag_mp3(MMFileFormatContext *formatContext)
        mm_file_retvm_if_fails(DEBUG, formatContext, MMFILE_FORMAT_FAIL);
        mm_file_retvm_if_fails(DEBUG, formatContext->privateFormatData, MMFILE_FORMAT_FAIL);
 
-       if (MMFILE_FORMAT_SUCCESS != mmf_file_mp3_get_tag_info(formatContext->uriFileName, formatContext->privateFormatData)) {
+       if (!__get_tag_info(formatContext->uriFileName, formatContext->privateFormatData)) {
                debug_error(DEBUG, "getting tag information is failed");
                return MMFILE_FORMAT_FAIL;
        }
@@ -198,7 +183,7 @@ int mmfile_format_read_tag_mp3(MMFileFormatContext *formatContext)
                        debug_msg(RELEASE, "ID3 tag V2 File");
                        formatContext->artworkMime = g_strdup(privateData->imageInfo.imageExt);
                } else {
-                       debug_error(DEBUG, "Album art image exist but there is no type information of album art\n");
+                       debug_error(DEBUG, "Album art image exist but there is no type information of album art");
                }
        }
 
@@ -222,37 +207,18 @@ int mmfile_format_close_mp3(MMFileFormatContext *formatContext)
        return MMFILE_FORMAT_SUCCESS;
 }
 
-static int
-__AvExtractI4(unsigned char *buf)
+static int __AvExtractInt(unsigned char *buf, unsigned int size)
 {
-       int I4;
+  int ret = *buf;
 
-       I4 = buf[0];
-       I4 <<= 8;
-       I4 |= buf[1];
-       I4 <<= 8;
-       I4 |= buf[2];
-       I4 <<= 8;
-       I4 |= buf[3];
+  while (--size)
+    ret = (ret << 8) | *(++buf);
 
-       return I4;
+  return ret;
 }
 
-static int
-__AvExtractI2(unsigned char *buf)
-{
-       int I2;
-
-       I2 = buf[0];
-       I2 <<= 8;
-       I2 |= buf[1];
-       I2 <<= 8;
-
-       return I2;
-}
 
-static int
-__AvGetXingHeader(AvXHeadData *headData,  unsigned char *buf)
+static bool __AvGetXingHeader(AvXHeadData *headData,  unsigned char *buf)
 {
        int                     index, headFlags;
        int                     hId, hMode, hSrIndex;
@@ -282,15 +248,15 @@ __AvGetXingHeader(AvXHeadData *headData,  unsigned char *buf)
 
        /* There could be 2 attrs in this header : Xing or Info */
        if (buf[0] == 'X') {
-               if (buf[1] != 'i') return 0;
-               if (buf[2] != 'n') return 0;
-               if (buf[3] != 'g') return 0;
+               mm_file_retv_if_fails(buf[1] == 'i', false);
+               mm_file_retv_if_fails(buf[2] == 'n', false);
+               mm_file_retv_if_fails(buf[3] == 'g', false);
        } else if (buf[0] == 'I') {
-               if (buf[1] != 'n') return 0;
-               if (buf[2] != 'f') return 0;
-               if (buf[3] != 'o') return 0;
+               mm_file_retv_if_fails(buf[1] == 'n', false);
+               mm_file_retv_if_fails(buf[2] == 'f', false);
+               mm_file_retv_if_fails(buf[3] == 'o', false);
        } else {
-               return 0;
+               return false;
        }
 
        buf += 4;
@@ -300,15 +266,15 @@ __AvGetXingHeader(AvXHeadData *headData,  unsigned char *buf)
        if (hId == 0)
                headData->sampRate >>= 1;
 
-       headFlags = headData->flags = __AvExtractI4(buf);               /* get flags */
+       headFlags = headData->flags = __AvExtractInt(buf, 4);           /* get flags */
        buf += 4;
 
        if (headFlags & FRAMES_FLAG) {
-               headData->frames   = __AvExtractI4(buf);
+               headData->frames = __AvExtractInt(buf, 4);
                buf += 4;
        }
        if (headFlags & BYTES_FLAG) {
-               headData->bytes = __AvExtractI4(buf);
+               headData->bytes = __AvExtractInt(buf, 4);
                buf += 4;
        }
 
@@ -321,18 +287,16 @@ __AvGetXingHeader(AvXHeadData *headData,  unsigned char *buf)
        }
 
        headData->vbrScale = -1;
-       if (headFlags & VBR_SCALE_FLAG) {
-               headData->vbrScale = __AvExtractI4(buf);
-       }
+       if (headFlags & VBR_SCALE_FLAG)
+               headData->vbrScale = __AvExtractInt(buf, 4);
 
-       debug_msg(RELEASE, "Xing header: sampling-rate:%d, stream-size:%d, frame-number:%d\n",
+       debug_msg(RELEASE, "Xing header: sampling-rate:%d, stream-size:%d, frame-number:%d",
                                                headData->sampRate, headData->bytes, headData->frames);
 
-       return 1;       /* success */
+       return true;       /* success */
 }
 
-static int
-__AvGetVBRIHeader(AvVBRIHeadData *headData,  unsigned char *buf)
+static bool __AvGetVBRIHeader(AvVBRIHeadData *headData,  unsigned char *buf)
 {
        int                     hId, hSrIndex;
        int     mp3SampleRateTable[4] = { 44100, 48000, 32000, 99999 };
@@ -344,10 +308,11 @@ __AvGetVBRIHeader(AvVBRIHeadData *headData,  unsigned char *buf)
 
        buf += (32 + 4);
 
-       if (buf[0] != 'V') return 0;     /* fail */
-       if (buf[1] != 'B') return 0;     /* header not found */
-       if (buf[2] != 'R') return 0;
-       if (buf[3] != 'I') return 0;
+       mm_file_retv_if_fails(buf[0] == 'V', false);
+       mm_file_retv_if_fails(buf[1] == 'B', false);
+       mm_file_retv_if_fails(buf[2] == 'R', false);
+       mm_file_retv_if_fails(buf[3] == 'I', false);
+
        buf += 4;
 
        headData->hId = hId;
@@ -355,85 +320,81 @@ __AvGetVBRIHeader(AvVBRIHeadData *headData,  unsigned char *buf)
        if (hId == 0)
                headData->sampRate >>= 1;
 
-       headData->vID = __AvExtractI2(buf);             /* get ver ID */
+       headData->vID = __AvExtractInt(buf, 2);         /* get ver ID */
        buf += 2;
-       headData->delay = __AvExtractI2(buf);
+       headData->delay = __AvExtractInt(buf, 2);
        buf += 2;
        headData->qualityIndicator = buf[0];
        buf += 2;
-       headData->bytes = __AvExtractI4(buf);
+       headData->bytes = __AvExtractInt(buf, 4);
        buf += 4;
-       headData->frames = __AvExtractI4(buf);
+       headData->frames = __AvExtractInt(buf, 4);
        buf += 4;
-       headData->numOfTOC = __AvExtractI2(buf);
+       headData->numOfTOC = __AvExtractInt(buf, 2);
        buf += 2;
-       headData->vbriScale = __AvExtractI2(buf);
+       headData->vbriScale = __AvExtractInt(buf, 2);
        buf += 2;
-       headData->sizePerTable = __AvExtractI2(buf);
+       headData->sizePerTable = __AvExtractInt(buf, 2);
        buf += 2;
-       headData->framesPerTable = __AvExtractI2(buf);
+       headData->framesPerTable = __AvExtractInt(buf, 2);
 
-       debug_msg(RELEASE, "Vbri header: sampling-rate:%d, stream-size:%d, frame-number:%d\n", headData->sampRate, headData->bytes, headData->frames);
+       debug_msg(RELEASE, "Vbri header: sampling-rate:%d, stream-size:%d, frame-number:%d", headData->sampRate, headData->bytes, headData->frames);
 
        return true;       /* success */
 }
-static bool
-__AvIsValidHeader(AvFileContentInfo *pInfo, unsigned char *buf)
+
+static bool __AvIsValidHeader(AvFileContentInfo *pInfo, unsigned char *buf)
 {
-       bool    bSync = false;
-
-       if (VALID_SYNC(buf)) {
-               mp3FrameDataValid[0] = (0xFF) & (mp3FrameMasking[0]);
-               mp3FrameDataValid[1] = (0xE0 | (buf[AV_MP3HDR_VERSION_OFS] & AV_MP3HDR_VERSION_M) | (buf[AV_MP3HDR_LAYER_OFS] & AV_MP3HDR_LAYER_M)) & (mp3FrameMasking[1]);
-               mp3FrameDataValid[2] = (buf[AV_MP3HDR_SAMPLERATE_OFS] & AV_MP3HDR_SAMPLERATE_M) & (mp3FrameMasking[2]);
-               mp3FrameDataValid[3] = (buf[AV_MP3HDR_CHANNEL_OFS] & AV_MP3HDR_CHANNEL_M) & (mp3FrameMasking[3]);
-
-               debug_msg(RELEASE, "*** [%02x][%02x][%02x][%02x] : [%02x][%02x][%02x][%02x]", buf[0], buf[1], buf[2], buf[3], mp3FrameDataValid[0], mp3FrameDataValid[1], mp3FrameDataValid[2], mp3FrameDataValid[3]);
-
-               /*
-               * MPEG Audio Layer I/II/III frame header
-               * from : http://www.mp3-tech.org/programmer/frame_header.html           *
-               *
-               * AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
-               *
-               * A             11      (31-21) Frame sync (all bits must be set)
-               * B             2       (20,19) MPEG Audio version ID
-               * C             2       (18,17) Layer description
-               * D             1       (16)            Protection bit
-               * E             4       (15,12) Bitrate index
-               * F     2       (11,10) Sampling rate frequency index
-               * G     1       (9)             Padding bit
-               * H     1       (8)             Private bit. This one is only informative.
-               * I     2       (7,6)           Channel Mode
-               * J     2       (5,4)           Mode extension (Only used in Joint stereo)
-               * K     1       (3)             Copyright
-               * L     1       (2)             Original
-               * M     2       (1,0)   Emphasis
-               *
-               */
-
-               /* Simple check for version, layer, bitrate, samplerate */
-               if ((buf[1] & 0x18) != 0x08 &&  /* 000XX000 : MPEG Audio version ID, XX=01 - reserved => 00001000(0x08) */
-                       (buf[1] & 0x06) != 0x00 && /* 00000XX0 : Layer description, XX=00 - reserved => 00000000(0x00) */
-                       (buf[2] & 0xF0) != 0xF0 && /* XXXX0000 : Bitrate index, XX=1111 - bad => 11110000(0xF0) */
-                       (buf[2] & 0x0C) != 0x0C) { /* 0000XX00 : Sampling rate frequency index, XX=11 -reserved => 00001100(0x0C) */
-                       bSync = true;
-               }
-               debug_msg(RELEASE, "=> %s\n", bSync ? "Good!" : "Bad...");
+       bool bSync = false;
+
+       mm_file_retv_if_fails(VALID_SYNC(buf), false);
+
+       mp3FrameDataValid[0] = (0xFF) & (mp3FrameMasking[0]);
+       mp3FrameDataValid[1] = (0xE0 | (buf[AV_MP3HDR_VERSION_OFS] & AV_MP3HDR_VERSION_M) | (buf[AV_MP3HDR_LAYER_OFS] & AV_MP3HDR_LAYER_M)) & (mp3FrameMasking[1]);
+       mp3FrameDataValid[2] = (buf[AV_MP3HDR_SAMPLERATE_OFS] & AV_MP3HDR_SAMPLERATE_M) & (mp3FrameMasking[2]);
+       mp3FrameDataValid[3] = (buf[AV_MP3HDR_CHANNEL_OFS] & AV_MP3HDR_CHANNEL_M) & (mp3FrameMasking[3]);
+
+       debug_msg(RELEASE, "*** [%02x][%02x][%02x][%02x] : [%02x][%02x][%02x][%02x]", buf[0], buf[1], buf[2], buf[3], mp3FrameDataValid[0], mp3FrameDataValid[1], mp3FrameDataValid[2], mp3FrameDataValid[3]);
+
+       /*
+       * MPEG Audio Layer I/II/III frame header
+       * from : http://www.mp3-tech.org/programmer/frame_header.html           *
+       *
+       * AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
+       *
+       * A             11      (31-21) Frame sync (all bits must be set)
+       * B             2       (20,19) MPEG Audio version ID
+       * C             2       (18,17) Layer description
+       * D             1       (16)            Protection bit
+       * E             4       (15,12) Bitrate index
+       * F     2       (11,10) Sampling rate frequency index
+       * G     1       (9)             Padding bit
+       * H     1       (8)             Private bit. This one is only informative.
+       * I     2       (7,6)           Channel Mode
+       * J     2       (5,4)           Mode extension (Only used in Joint stereo)
+       * K     1       (3)             Copyright
+       * L     1       (2)             Original
+       * M     2       (1,0)   Emphasis
+       *
+       */
+
+       /* Simple check for version, layer, bitrate, samplerate */
+       if ((buf[1] & 0x18) != 0x08 &&  /* 000XX000 : MPEG Audio version ID, XX=01 - reserved => 00001000(0x08) */
+               (buf[1] & 0x06) != 0x00 && /* 00000XX0 : Layer description, XX=00 - reserved => 00000000(0x00) */
+               (buf[2] & 0xF0) != 0xF0 && /* XXXX0000 : Bitrate index, XX=1111 - bad => 11110000(0xF0) */
+               (buf[2] & 0x0C) != 0x0C) { /* 0000XX00 : Sampling rate frequency index, XX=11 -reserved => 00001100(0x0C) */
+               bSync = true;
        }
+       debug_msg(RELEASE, "=> %s", bSync ? "Good!" : "Bad...");
 
-       if (bSync == true)
-               return true;
-       else
-               return false;
+       return bSync;
 }
 
-static bool
-__AvParseMp3Header(AvFileContentInfo *pInfo,  unsigned char *header)
+static bool __AvParseMp3Header(AvFileContentInfo *pInfo,  unsigned char *header)
 {
        unsigned char   result;
 
-       debug_msg(RELEASE, "### [%02x][%02x][%02x][%02x] ###\n", header[0], header[1], header[2], header[3]);
+       debug_msg(RELEASE, "### [%02x][%02x][%02x][%02x] ###", header[0], header[1], header[2], header[3]);
 
        /* 1. Check the version of mp3 */
        result = header[1] & MASK_MPEG;
@@ -516,59 +477,39 @@ __AvParseMp3Header(AvFileContentInfo *pInfo,  unsigned char *header)
        return true;
 }
 
-static bool
-__AvParseXingHeader(AvFileContentInfo *pInfo, unsigned char *buf)
+static bool __AvParseXingHeader(AvFileContentInfo *pInfo, unsigned char *buf)
 {
-       AvXHeadData data;
-       memset(&data, 0x00, sizeof(AvXHeadData));
+       AvXHeadData data = {0, };
+       unsigned int pos = 0;
 
        /*      1. Xing Header */
        /* There could be 2 attrs in this header : Xing or Info */
-       if ((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) {
-               if (buf[36] == 'X') {
-                       if (buf[37] != 'i') return false;
-                       if (buf[38] != 'n') return false;
-                       if (buf[39] != 'g') return false;
-               } else if (buf[36] == 'I') {
-                       if (buf[37] != 'n') return false;
-                       if (buf[38] != 'f') return false;
-                       if (buf[39] != 'o') return false;
-               } else {
-                       return false;
-               }
-       } else if ((pInfo->mpegVersion == AV_MPEG_VER_2 || pInfo->mpegVersion == AV_MPEG_VER_25) && (pInfo->channels == 1)) {
-               if (buf[13] == 'X') {
-                       if (buf[14] != 'i') return false;
-                       if (buf[15] != 'n') return false;
-                       if (buf[16] != 'g') return false;
-               } else if (buf[13] == 'I') {
-                       if (buf[14] != 'n') return false;
-                       if (buf[15] != 'f') return false;
-                       if (buf[16] != 'o') return false;
-               } else {
-                       return false;
-               }
+       if ((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2))
+               pos = 36;
+       else if ((pInfo->mpegVersion == AV_MPEG_VER_2 || pInfo->mpegVersion == AV_MPEG_VER_25) && (pInfo->channels == 1))
+               pos = 13;
+       else
+               pos = 21;
+
+       if (buf[pos] == 'X') {
+               mm_file_retv_if_fails(buf[pos + 1] == 'i', false);
+               mm_file_retv_if_fails(buf[pos + 2] == 'n', false);
+               mm_file_retv_if_fails(buf[pos + 3] == 'g', false);
+       } else if (buf[pos] == 'I') {
+               mm_file_retv_if_fails(buf[pos + 1] == 'n', false);
+               mm_file_retv_if_fails(buf[pos + 2] == 'f', false);
+               mm_file_retv_if_fails(buf[pos + 3] == 'o', false);
        } else {
-               if (buf[21] == 'X') {
-                       if (buf[22] != 'i') return false;
-                       if (buf[23] != 'n') return false;
-                       if (buf[24] != 'g') return false;
-               } else if (buf[21] == 'I') {
-                       if (buf[22] != 'n') return false;
-                       if (buf[23] != 'f') return false;
-                       if (buf[24] != 'o') return false;
-               } else {
-                       return false;
-               }
+               return false;
        }
 
        /*      2. TOC */
        if (pInfo->pToc)
                data.toc = (unsigned char *)(pInfo->pToc);
 
-       if (__AvGetXingHeader(&data, (unsigned char *)buf) == 1) {   /* VBR. */
+       if (__AvGetXingHeader(&data, (unsigned char *)buf)) {   /* VBR. */
                if (data.sampRate == 0 || data.bytes == 0 || data.frames == 0) {
-                       debug_error(DEBUG, "invalid Xing header\n");
+                       debug_error(DEBUG, "invalid Xing header");
                        return false;
                }
 
@@ -581,41 +522,35 @@ __AvParseXingHeader(AvFileContentInfo *pInfo, unsigned char *buf)
                return false;
 }
 
-static bool
-__AvParseVBRIHeader(AvFileContentInfo *pInfo, unsigned char *buf)
+static bool __AvParseVBRIHeader(AvFileContentInfo *pInfo, unsigned char *buf)
 {
-       AvVBRIHeadData data;
-       memset(&data, 0x00, sizeof(AvVBRIHeadData));
+       AvVBRIHeadData data = {0, };
 
        /*      1. Xing Header */
-       if (buf[36] != 'V') return false;
-       if (buf[37] != 'B') return false;
-       if (buf[38] != 'R') return false;
-       if (buf[39] != 'I') return false;
+       mm_file_retv_if_fails(buf[36] == 'V', false);
+       mm_file_retv_if_fails(buf[37] == 'B', false);
+       mm_file_retv_if_fails(buf[38] == 'R', false);
+       mm_file_retv_if_fails(buf[39] == 'I', false);
 
        /*      2. TOC */
        if (pInfo->pToc)
                data.toc = (unsigned char *)(pInfo->pToc);
 
-       if (__AvGetVBRIHeader(&data, (unsigned char *)buf) == 1) {  /* VBR. */
-               if (data.sampRate == 0 || data.bytes == 0 || data.frames == 0) {
-                       debug_error(DEBUG, "invalid Vbri header\n");
-                       return false;
-               }
+       mm_file_retvm_if_fails(DEBUG, __AvGetVBRIHeader(&data, buf), false);
+       mm_file_retvm_if_fails(DEBUG, data.sampRate > 0, false);
+       mm_file_retvm_if_fails(DEBUG, data.bytes > 0, false);
+       mm_file_retvm_if_fails(DEBUG, data.frames > 0, false);
 
-               pInfo->sampleRate = data.sampRate;
-               pInfo->datafileLen = data.bytes;
-               pInfo->frameNum = data.frames;
-               pInfo->frameSize = (int)((float) data.bytes / (float) data.frames)  ;
-               pInfo->bVbr = true;
-               return true;
-       } else
-               return false;
+       pInfo->sampleRate = data.sampRate;
+       pInfo->datafileLen = data.bytes;
+       pInfo->frameNum = data.frames;
+       pInfo->frameSize = (int)((float) data.bytes / (float) data.frames)  ;
+       pInfo->bVbr = true;
+
+       return true;
 }
 
-#ifdef __MMFILE_NEW_FRAME_FUNC /* from gst */
-static bool
-__AvGetMp3FrameSize(AvFileContentInfo *pInfo)
+static bool __AvGetMp3FrameSize(AvFileContentInfo *pInfo)
 {
        unsigned int frameSize = 0;
        if (pInfo == NULL)
@@ -644,21 +579,17 @@ __AvGetMp3FrameSize(AvFileContentInfo *pInfo)
 
        return true;
 }
-#endif
 
-static bool
-__AvGetBitrate(AvFileContentInfo *pInfo)
+static bool __AvGetBitrate(AvFileContentInfo *pInfo)
 {
        float   br, factor;
-       int             padding;
+       int             padding = 0;
 
-       if (pInfo == NULL || pInfo->bVbr == false)
-               return false;
+       mm_file_retv_if_fails(pInfo, false);
+       mm_file_retv_if_fails(pInfo->bVbr, false);
 
        if (pInfo->bPadding)
                padding = 1;
-       else
-               padding = 0;
 
        if (pInfo->mpegVersion == AV_MPEG_VER_1) {      /* MPEG version 1 */
                if (pInfo->layer == AV_MP3_LAYER_1)     /* Layer 1 */
@@ -681,19 +612,14 @@ __AvGetBitrate(AvFileContentInfo *pInfo)
 
 static bool __AvGetID3v1Header(unsigned char *buf, size_t buf_size, int *offset)
 {
-       unsigned char           TagV1ID[4] = { 0x54, 0x41, 0x47}; /* TAG */
+       unsigned char TagV1ID[4] = { 0x54, 0x41, 0x47}; /* TAG */
        int id3v1_offset = 0;
 
-       if (!buf || buf_size < 3) {
-               debug_error(DEBUG, "Invalid parameters!");
-               return false;
-       }
+       mm_file_retvm_if_fails(DEBUG, buf, false);
+       mm_file_retvm_if_fails(DEBUG, buf_size >= 3, false);
 
        id3v1_offset = __AvMemstr(buf, TagV1ID, 3, TAGV1_SEEK_GAP + 5);
-       if (id3v1_offset < 0) {
-               debug_msg(RELEASE, "ID3v1 is not existing");
-               return false;
-       }
+       mm_file_retvm_if_fails(DEBUG, id3v1_offset >= 0, false);
 
        if (offset)
                *offset = id3v1_offset;
@@ -704,15 +630,10 @@ static bool __AvGetID3v1Header(unsigned char *buf, size_t buf_size, int *offset)
 
 static bool __AvGetID3v2Header(unsigned char *buf, size_t buf_size, AvTagVer2AdditionalData *id3v2info)
 {
-       if (!buf || buf_size < MP3_TAGv2_HEADER_LEN || !id3v2info) {
-               debug_error(DEBUG, "Invalid parameters!");
-               return false;
-       }
-
-       if (!IS_ID3V2_TAG(buf)) { /* ID3 */
-               debug_error(RELEASE, "Invalid ID3v2 identifier !");
-               return false;
-       }
+       mm_file_retvm_if_fails(DEBUG, buf, false);
+       mm_file_retvm_if_fails(DEBUG, buf_size >= MP3_TAGv2_HEADER_LEN, false);
+       mm_file_retvm_if_fails(DEBUG, id3v2info, false);
+       mm_file_retvm_if_fails(DEBUG, IS_ID3V2_TAG(buf), false);
 
        /* weak id3v2 tag check */
        if (buf[3] == 0xFF || buf[4] == 0xFF || buf[6] >= 0x80 || buf[7] >= 0x80 || buf[8] >= 0x80 || buf[9] >= 0x80) {
@@ -728,12 +649,12 @@ static bool __AvGetID3v2Header(unsigned char *buf, size_t buf_size, AvTagVer2Add
        id3v2info->tagVersion = buf[3];
        id3v2info->tagLen = MP3_TAGv2_HEADER_LEN;
        id3v2info->tagLen += (unsigned long)buf[6] << 21 | (unsigned long)buf[7] << 14 | (unsigned long)buf[8] << 7  | (unsigned long)buf[9];
-       debug_msg(RELEASE, "ID3v2 version(%d), length (%d)\n", id3v2info->tagVersion, id3v2info->tagLen);
+       debug_msg(RELEASE, "ID3v2 version(%d), length (%d)", id3v2info->tagVersion, id3v2info->tagLen);
 
        return true;
 }
 
-static int __AvGetLastID3v2Offset(MMFileIOHandle *fp, int *offset)
+static bool __AvGetLastID3v2Offset(MMFileIOHandle *fp, int *offset)
 {
        unsigned char tagHeader[MP3_TAGv2_HEADER_LEN] = {0, };
        int total_taglen = 0;
@@ -749,44 +670,45 @@ _START_TAG_SEARCH:
 
        read = mmfile_read(fp, tagHeader, MP3_TAGv2_HEADER_LEN);
        if (read != MP3_TAGv2_HEADER_LEN) {
-               debug_error(DEBUG, "mmfile_read failed\n");
-               return 0;
+               debug_error(DEBUG, "mmfile_read failed");
+               return false;
        }
 
        if (!__AvGetID3v2Header(tagHeader, MP3_TAGv2_HEADER_LEN, &tagInfo)) {
-               debug_msg(RELEASE, "Invalid ID3 header\n");
+               debug_msg(RELEASE, "Invalid ID3 header");
                goto search_end;
        }
 
        /**@note unfortunately, some contents has many id3 tag.*/
        total_taglen += tagInfo.tagLen;
-       debug_msg(RELEASE, "tag size: %u, offset: %u\n", tagInfo.tagLen, total_taglen);
+       debug_msg(RELEASE, "tag size: %u, offset: %u", tagInfo.tagLen, total_taglen);
 
        mmfile_seek(fp, total_taglen, MMFILE_SEEK_SET);
        *offset = total_taglen;
        goto _START_TAG_SEARCH;
 
 search_end:
-       return 1;
+       return true;
 }
 
-static bool __AvGetID3v1Tags(unsigned char *buf, int offset, AvFileContentInfo *pInfo)
+static void __AvGetID3v1Tags(unsigned char *buf, int offset, AvFileContentInfo *pInfo)
 {
-       unsigned char   TmpBuff[MP3TAGINFO_SIZE] = {0, };
+       unsigned char TmpBuff[MP3TAGINFO_SIZE] = {0, };
 
        if (!buf || !pInfo || offset < 0) {
                debug_error(DEBUG, "Invalid parameters!");
-               return true;
+               return;
        }
 
        if (pInfo->tagV2Info.tagLen != 0 || offset != TAGV1_SEEK_GAP) {
                debug_msg(RELEASE, "No need to check id3v1");
-               return true;
+               return;
        }
 
        memcpy(TmpBuff, buf, MP3TAGINFO_SIZE);
 
-       return mm_file_id3tag_parse_v110(pInfo, TmpBuff);
+       if (!mm_file_id3tag_parse_v110(pInfo, TmpBuff))
+               debug_msg(RELEASE, "mm_file_id3tag_parse_v110 fails");
 }
 
 static void __AvGetID3v2Tags(unsigned char *buf, AvFileContentInfo *pInfo)
@@ -803,7 +725,7 @@ static void __AvGetID3v2Tags(unsigned char *buf, AvFileContentInfo *pInfo)
        else if (pInfo->tagV2Info.tagVersion == 0x04)
                mm_file_id3tag_parse_v224(pInfo, buf); /* currently 2.4 ver pased by 2.3 routine */
        else
-               debug_msg(RELEASE, "Invalid tag version(%d)\n", pInfo->tagV2Info.tagVersion);
+               debug_msg(RELEASE, "Invalid tag version(%d)", pInfo->tagV2Info.tagVersion);
 }
 
 /*
@@ -811,8 +733,7 @@ static void __AvGetID3v2Tags(unsigned char *buf, AvFileContentInfo *pInfo)
  *     Param   _pFile [in]     Specifies the file pointer of mp3 file.
  *     This function returns the start position of header.
  */
-static int
-__AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContentInfo *pInfo)
+static int __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContentInfo *pInfo)
 {
        unsigned int            index = 0;
        unsigned long   id3v2TagLen = 0;
@@ -824,14 +745,12 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
        bool bFoundSync = false;
        unsigned long  minLen;
 
-       if (!buf || !pInfo) {
-               debug_error(DEBUG, "Invalid parameters");
-               return -1;
-       }
+       mm_file_retvm_if_fails(DEBUG, buf, -1);
+       mm_file_retvm_if_fails(DEBUG, pInfo, -1);
 
        id3v2TagLen = pInfo->tagV2Info.tagLen;
 
-       debug_msg(RELEASE, "id3v2TagLen(%lu)\n", id3v2TagLen);
+       debug_msg(RELEASE, "id3v2TagLen(%lu)", id3v2TagLen);
 
        while (1) {
                if (preHeaderGap == bufLen - 2)
@@ -852,18 +771,18 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
                                        pHeader = g_malloc0(256);
                                        strncpy((char *)pHeader, (char *)buf, 256);
                                } else {
-                                       debug_error(DEBUG, "Header field is not exist\n");
+                                       debug_error(DEBUG, "Header field is not exist");
                                        return -1;
                                }
-                               if (__AvParseMp3Header(pInfo, pHeader) == false) {
+                               if (!__AvParseMp3Header(pInfo, pHeader)) {
                                        /*return -1; */
                                        mmfile_free(pHeader);
-                                       debug_warning(DEBUG, "Mp3 parse header failed & index(%d)\n", index);
+                                       debug_warning(DEBUG, "Mp3 parse header failed & index(%d)", index);
                                        buf++;
                                        index++;
                                        continue;
                                } else {
-                                       debug_msg(RELEASE, "This header is valid. index(%d)\n", index);
+                                       debug_msg(RELEASE, "This header is valid. index(%d)", index);
                                }
 
                                if (__AvParseXingHeader(pInfo, pHeader) || __AvParseVBRIHeader(pInfo, pHeader))
@@ -881,18 +800,12 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
                                                pInfo->datafileLen = pInfo->fileLen - pInfo->headerPos;
                                                frameLen = pInfo->frameSize;
                                                if (frameLen) {
-                                                       debug_msg(RELEASE, "<<< frameLen=[%lu] >>> \n", frameLen);
-
-#ifndef __MMFILE_NEW_FRAME_FUNC /* FIXME : what purpose to do this? */
-                                                       /* Account for loss of precision in the frame length calculation*/
-                                                       frameLen--;
-#endif
-
+                                                       debug_msg(RELEASE, "<<< frameLen=[%lu] >>> ", frameLen);
                                                        /* Check if the remaining buffer size is large enough to
                                                        * look for another sync */
                                                        if ((index + frameLen) < (bufLen - (minLen - 1))) {
                                                                nextFrameOff = frameLen;
-                                                               nextFrameOffEnd = nextFrameOff + MIN(6, bufLen - (index + frameLen) - (minLen - 1));
+                                                               nextFrameOffEnd = nextFrameOff + MMFILE_MIN(6, bufLen - (index + frameLen) - (minLen - 1));
 
                                                                /* Search the next few bytes for the next sync */
                                                                while (nextFrameOff < nextFrameOffEnd) {
@@ -915,12 +828,12 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
                                                }
 
                                        } else {
-                                               debug_warning(DEBUG, "Is not vaild header pHeader\n");
+                                               debug_warning(DEBUG, "Is not vaild header pHeader");
                                        }
                                }
                                mmfile_free(pHeader);
                        } else {
-                               debug_warning(RELEASE, "Mp3 file first byte is 0xff, but not header sync\n");
+                               debug_warning(RELEASE, "Mp3 file first byte is 0xff, but not header sync");
                        }
                }
                buf++;
@@ -930,14 +843,14 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
        mmfile_free(pHeader);
 
        if (index > (bufLen - minLen)) {
-               debug_warning(DEBUG, "Mp3 file sync is not found : index(%u) bufLen(%lu), minLen(%lu)\n", index, bufLen, minLen);
+               debug_warning(DEBUG, "Mp3 file sync is not found : index(%u) bufLen(%lu), minLen(%lu)", index, bufLen, minLen);
                return -1;
        }
 
        if (bFoundSync == true) {
-               debug_msg(RELEASE, "Mp3 file found a sync Success!\n");
+               debug_msg(RELEASE, "Mp3 file found a sync Success!");
        } else {
-               debug_msg(RELEASE, "Mp3 file found a sync Failed!\n");
+               debug_msg(RELEASE, "Mp3 file found a sync Failed!");
                return -1;
        }
 
@@ -967,19 +880,18 @@ __AvFindStartOfMp3Header(unsigned char *buf, unsigned long bufLen, AvFileContent
  *     Param   pInfo [out]     Specifies a struct pointer for ID3 tag information.
  *     This function returns true on success, or false on failure.
  */
-static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
+static bool __get_tag_info(char *filename, AvFileContentInfo *pInfo)
 {
        MMFileIOHandle  *hFile;
        unsigned char   *buf = NULL;
        unsigned char   *v2TagExistCheck = NULL;
        unsigned char   TagBuff[MP3TAGINFO_SIZE + TAGV1_SEEK_GAP];
        int             tagHeaderPos = 0;
-       int ret = 0;
 
        debug_fenter(RELEASE);
 
-       if (pInfo == NULL || filename == NULL)
-               return MMFILE_FORMAT_FAIL;
+       mm_file_retv_if_fails(pInfo, false);
+       mm_file_retv_if_fails(filename, false);
 
        memset(pInfo, 0x00, sizeof(AvFileContentInfo));
 
@@ -988,15 +900,11 @@ static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
        pInfo->genre = 148;
 
        /*open*/
-       ret = mmfile_open(&hFile, filename, MMFILE_RDONLY);
-       if (ret == MMFILE_UTIL_FAIL) {
-               debug_error(DEBUG, "open failed.\n");
-               return MMFILE_FORMAT_FAIL;
-       }
+       mm_file_retvm_if_fails(DEBUG, mmfile_open(&hFile, filename, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, false);
 
        pInfo->fileLen = mmfile_get_size(hFile);
        if (pInfo->fileLen <= 0) {
-               debug_error(DEBUG, "file is too small.\n");
+               debug_error(DEBUG, "file is too small.");
                goto EXCEPTION;
        }
 
@@ -1004,7 +912,7 @@ static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
        v2TagExistCheck = g_malloc0(MP3_TAGv2_HEADER_LEN);
 
        if (mmfile_read(hFile, v2TagExistCheck, MP3_TAGv2_HEADER_LEN) != MP3_TAGv2_HEADER_LEN) {
-               debug_error(DEBUG, "v2TagExistCheck value read fail!\n");
+               debug_error(DEBUG, "v2TagExistCheck value read fail!");
                mmfile_free(v2TagExistCheck);
                goto EXCEPTION;
        }
@@ -1016,13 +924,13 @@ static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
        if (mmfile_seek(hFile, 0L, SEEK_SET) < 0)
                goto EXCEPTION;
 
-       debug_msg(RELEASE, "pInfo->fileLen(%lld)\n", pInfo->fileLen);
+       debug_msg(RELEASE, "pInfo->fileLen(%lld)", pInfo->fileLen);
 
        /* read file to get ID3v2 tags from offset 0 */
        if (pInfo->fileLen <= (long long)pInfo->tagV2Info.tagLen)
                pInfo->tagV2Info.tagLen = pInfo->fileLen;
 
-       debug_msg(RELEASE, "buf size(%d)\n", pInfo->tagV2Info.tagLen);
+       debug_msg(RELEASE, "buf size(%d)", pInfo->tagV2Info.tagLen);
 
        buf = g_malloc0(pInfo->tagV2Info.tagLen);
 
@@ -1046,8 +954,7 @@ static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
        /* check and get TAG(ID3v1) information */
        if (__AvGetID3v1Header(TagBuff, MP3TAGINFO_SIZE + TAGV1_SEEK_GAP, &tagHeaderPos)) {
                pInfo->bV1tagFound = true;
-               if (!__AvGetID3v1Tags((TagBuff + tagHeaderPos), tagHeaderPos, pInfo))
-                       goto EXCEPTION;
+               __AvGetID3v1Tags((TagBuff + tagHeaderPos), tagHeaderPos, pInfo);
        }
 
        mm_file_id3tag_restore_content_info(pInfo);
@@ -1055,31 +962,31 @@ static int mmf_file_mp3_get_tag_info(char *filename, AvFileContentInfo *pInfo)
        mmfile_close(hFile);
 
        /*debug print*/
-       debug_msg(RELEASE, "Title       : %s\n", pInfo->tagInfo[AV_ID3TAG_TITLE].value);
-       debug_msg(RELEASE, "Artist      : %s\n", pInfo->tagInfo[AV_ID3TAG_ARTIST].value);
-       debug_msg(RELEASE, "Album       : %s\n", pInfo->tagInfo[AV_ID3TAG_ALBUM].value);
-       debug_msg(RELEASE, "Album_Artist: %s\n", pInfo->tagInfo[AV_ID3TAG_ALBUM_ARTIST].value);
-       debug_msg(RELEASE, "Year        : %s\n", pInfo->tagInfo[AV_ID3TAG_YEAR].value);
-       debug_msg(RELEASE, "Comment     : %s\n", pInfo->tagInfo[AV_ID3TAG_COMMENT].value);
-       debug_msg(RELEASE, "TrackNum    : %s\n", pInfo->tagInfo[AV_ID3TAG_TRACKNUM].value);
-       debug_msg(RELEASE, "Genre       : %s\n", pInfo->tagInfo[AV_ID3TAG_GENRE].value);
-       debug_msg(RELEASE, "Copyright   : %s\n", pInfo->tagInfo[AV_ID3TAG_COPYRIGHT].value);
-       debug_msg(RELEASE, "RecDate     : %s\n", pInfo->tagInfo[AV_ID3TAG_RECDATE].value);
-       debug_msg(RELEASE, "PartOfASet  : %s\n", pInfo->tagInfo[AV_ID3TAG_PART_OF_SET].value);
-       debug_msg(RELEASE, "Encoded by  : %s\n", pInfo->tagInfo[AV_ID3TAG_ENCBY].value);
-       debug_msg(RELEASE, "URL         : %s\n", pInfo->tagInfo[AV_ID3TAG_URL].value);
-       debug_msg(RELEASE, "Ori. Artist : %s\n", pInfo->tagInfo[AV_ID3TAG_ORIGIN_ARTIST].value);
-       debug_msg(RELEASE, "Composer    : %s\n", pInfo->tagInfo[AV_ID3TAG_COMPOSER].value);
-       debug_msg(RELEASE, "Conductor   : %s\n", pInfo->tagInfo[AV_ID3TAG_CONDUCTOR].value);
-       debug_msg(RELEASE, "Artwork     : mime(%s) addr(%p) size(%d)\n", pInfo->imageInfo.imageMIMEType, pInfo->imageInfo.pImageBuf, pInfo->imageInfo.imageLen);
-       debug_msg(RELEASE, "UnsyncLyrics   : %s\n", pInfo->tagInfo[AV_ID3TAG_UNSYNCLYRICS].value);
+       debug_msg(RELEASE, "Title       : %s", pInfo->tagInfo[AV_ID3TAG_TITLE].value);
+       debug_msg(RELEASE, "Artist      : %s", pInfo->tagInfo[AV_ID3TAG_ARTIST].value);
+       debug_msg(RELEASE, "Album       : %s", pInfo->tagInfo[AV_ID3TAG_ALBUM].value);
+       debug_msg(RELEASE, "Album_Artist: %s", pInfo->tagInfo[AV_ID3TAG_ALBUM_ARTIST].value);
+       debug_msg(RELEASE, "Year        : %s", pInfo->tagInfo[AV_ID3TAG_YEAR].value);
+       debug_msg(RELEASE, "Comment     : %s", pInfo->tagInfo[AV_ID3TAG_COMMENT].value);
+       debug_msg(RELEASE, "TrackNum    : %s", pInfo->tagInfo[AV_ID3TAG_TRACKNUM].value);
+       debug_msg(RELEASE, "Genre       : %s", pInfo->tagInfo[AV_ID3TAG_GENRE].value);
+       debug_msg(RELEASE, "Copyright   : %s", pInfo->tagInfo[AV_ID3TAG_COPYRIGHT].value);
+       debug_msg(RELEASE, "RecDate     : %s", pInfo->tagInfo[AV_ID3TAG_RECDATE].value);
+       debug_msg(RELEASE, "PartOfASet  : %s", pInfo->tagInfo[AV_ID3TAG_PART_OF_SET].value);
+       debug_msg(RELEASE, "Encoded by  : %s", pInfo->tagInfo[AV_ID3TAG_ENCBY].value);
+       debug_msg(RELEASE, "URL         : %s", pInfo->tagInfo[AV_ID3TAG_URL].value);
+       debug_msg(RELEASE, "Ori. Artist : %s", pInfo->tagInfo[AV_ID3TAG_ORIGIN_ARTIST].value);
+       debug_msg(RELEASE, "Composer    : %s", pInfo->tagInfo[AV_ID3TAG_COMPOSER].value);
+       debug_msg(RELEASE, "Conductor   : %s", pInfo->tagInfo[AV_ID3TAG_CONDUCTOR].value);
+       debug_msg(RELEASE, "Artwork     : mime(%s) addr(%p) size(%d)", pInfo->imageInfo.imageMIMEType, pInfo->imageInfo.pImageBuf, pInfo->imageInfo.imageLen);
+       debug_msg(RELEASE, "UnsyncLyrics   : %s", pInfo->tagInfo[AV_ID3TAG_UNSYNCLYRICS].value);
 
-       return MMFILE_FORMAT_SUCCESS;
+       return true;
 
 EXCEPTION:
-       debug_error(DEBUG, "Error occured!\n");
+       debug_error(DEBUG, "Error occured!");
        mmfile_close(hFile);
-       return MMFILE_FORMAT_FAIL;
+       return false;
 }
 
 /*
@@ -1088,7 +995,7 @@ EXCEPTION:
  *     Param   pInfo [out]     Specifies a struct pointer for MP3 stream information.
  *     This function returns true on success, or false on failure.
  */
-static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo)
+static bool __get_stream_info(char *filename, AvFileContentInfo *pInfo)
 {
        MMFileIOHandle  *hFile;
        unsigned char   header[256];
@@ -1096,12 +1003,11 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
        unsigned char   *buf = NULL;
        unsigned long   bufLen = 0;
        unsigned char   TagBuff[MP3TAGINFO_SIZE + TAGV1_SEEK_GAP];
-       int ret = 0;
 
        debug_fenter(RELEASE);
 
-       if (!pInfo || !filename)
-               return MMFILE_FORMAT_FAIL;
+       mm_file_retv_if_fails(pInfo, false);
+       mm_file_retv_if_fails(filename, false);
 
        memset(pInfo, 0x00, sizeof(AvFileContentInfo));
 
@@ -1110,24 +1016,20 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
        pInfo->genre = 148;
 
        /*open*/
-       ret = mmfile_open(&hFile, filename, MMFILE_RDONLY);
-       if (ret == MMFILE_UTIL_FAIL) {
-               debug_error(DEBUG, "open failed.\n");
-               return MMFILE_FORMAT_FAIL;
-       }
+       mm_file_retvm_if_fails(DEBUG, mmfile_open(&hFile, filename, MMFILE_RDONLY) == MMFILE_UTIL_SUCCESS, false);
 
        pInfo->fileLen = mmfile_get_size(hFile);
        if (pInfo->fileLen <= 0) {
-               debug_error(DEBUG, "file is too small.\n");
+               debug_error(DEBUG, "file is too small.");
                goto EXCEPTION;
        }
 
        /* get total length from the beginning of first ID3v2 to the end of last ID3v2
           to get the offset of MP3 data */
        __AvGetLastID3v2Offset(hFile, &pInfo->tagV2Info.tagLen);
-       debug_msg(RELEASE, "ID3 tag end offset: %u\n", pInfo->tagV2Info.tagLen);
+       debug_msg(RELEASE, "ID3 tag end offset: %u", pInfo->tagV2Info.tagLen);
 
-       debug_msg(RELEASE, "pInfo->fileLen(%lld)\n", pInfo->fileLen);
+       debug_msg(RELEASE, "pInfo->fileLen(%lld)", pInfo->fileLen);
 
        /* read file to find MP3 header */
        if (pInfo->fileLen - (long long)pInfo->tagV2Info.tagLen > (long long)_AV_MP3_HEADER_POSITION_MAX) {
@@ -1151,7 +1053,7 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
                bufLen = pInfo->fileLen;
        }
 
-       debug_msg(RELEASE, "buf size(%lu)\n", bufLen);
+       debug_msg(RELEASE, "buf size(%lu)", bufLen);
 
        buf = g_malloc0(bufLen);
 
@@ -1163,7 +1065,7 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
        /* get offset of MP3 header */
        pInfo->headerPos = (long) __AvFindStartOfMp3Header(buf, bufLen, pInfo);
 
-       debug_msg(RELEASE, "Header Pos: %ld\n", pInfo->headerPos);
+       debug_msg(RELEASE, "Header Pos: %ld", pInfo->headerPos);
 
        mmfile_free(buf);
 
@@ -1185,7 +1087,7 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
        } else {
                __AvGetMp3FrameSize(pInfo);
                pInfo->datafileLen = pInfo->fileLen - pInfo->headerPos;
-               debug_msg(RELEASE, "Mp3 File FrameSize (%d) pInfo->headerPos(%ld)\n", pInfo->frameSize, pInfo->headerPos);
+               debug_msg(RELEASE, "Mp3 File FrameSize (%d) pInfo->headerPos(%ld)", pInfo->frameSize, pInfo->headerPos);
        }
 
        if (pInfo->mpegVersion == 1) {
@@ -1227,20 +1129,20 @@ static int mmf_file_mp3_get_stream_info(char *filename, AvFileContentInfo *pInfo
        mmfile_close(hFile);
 
        /*debug print*/
-       debug_msg(RELEASE, "Mp3 File pInfo->duration (%lld) \n", pInfo->duration);
-       debug_msg(RELEASE, "** MP3 **\n");
-       debug_msg(RELEASE, "Version    : %u\n", pInfo->mpegVersion);
-       debug_msg(RELEASE, "Layer      : %u\n", pInfo->layer);
-       debug_msg(RELEASE, "Channel idx: %u\n", pInfo->channelIndex);
-       debug_msg(RELEASE, "Is VBR     : %d\n", (pInfo->bVbr == true ? 1 : 0));
-       debug_msg(RELEASE, "Bitrate    : %u\n", pInfo->bitRate);
-       debug_msg(RELEASE, "SampleRate : %u\n", pInfo->sampleRate);
-       debug_msg(RELEASE, "Channels   : %u\n", pInfo->channels);
+       debug_msg(RELEASE, "Mp3 File pInfo->duration (%lld) ", pInfo->duration);
+       debug_msg(RELEASE, "** MP3 **");
+       debug_msg(RELEASE, "Version    : %u", pInfo->mpegVersion);
+       debug_msg(RELEASE, "Layer      : %u", pInfo->layer);
+       debug_msg(RELEASE, "Channel idx: %u", pInfo->channelIndex);
+       debug_msg(RELEASE, "Is VBR     : %d", (pInfo->bVbr == true ? 1 : 0));
+       debug_msg(RELEASE, "Bitrate    : %u", pInfo->bitRate);
+       debug_msg(RELEASE, "SampleRate : %u", pInfo->sampleRate);
+       debug_msg(RELEASE, "Channels   : %u", pInfo->channels);
 
-       return MMFILE_FORMAT_SUCCESS;
+       return true;
 
 EXCEPTION:
-       debug_error(DEBUG, "Error occured!\n");
+       debug_error(DEBUG, "Error occured!");
        mmfile_close(hFile);
-       return MMFILE_FORMAT_FAIL;
+       return false;
 }
index 069a167864da70b420222826822c3fda10b34e04..928428a07e241b9ce33b020bb6d097ad7f234018 100755 (executable)
@@ -346,8 +346,8 @@ typedef struct {
 } AvFileContentInfo;
 
 typedef struct {
-       unsigned long   time_info;
-       char                            *lyric_info;
+       unsigned long time_info;
+       char *lyric_info;
 } AvSynclyricsInfo;
 
 void mm_file_free_synclyrics_list(GList *synclyrics_list);
index 2172e8fbbcc44b28bd5079bf2206b0ef8385c8e4..3c2b0ebe7adb06ea6c2f987b1d72c6a8eb52d1ed 100644 (file)
@@ -216,8 +216,6 @@ enum spherical_video_metadata_elements_ids_le {
 
 #define FOURCC(a, b, c, d) ((a) + ((b) << 8) + ((c) << 16) + ((d) << 24))
 
-/*#define      MIN(a, b) (((a) < (b)) ? (a):(b))*/
-
 #define GENRE_COUNT    149
 
 static const char * const MpegAudio_Genre[GENRE_COUNT] = {"Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal",