memset(&data, 0x00, sizeof(AvVBRIHeadData));
/* 1. Xing Header */
- if ((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) {
- if (buf[36] != 'V') return false;
- if (buf[37] != 'B') return false;
- if (buf[38] != 'R') return false;
- if (buf[39] != 'I') return false;
- } else if ((pInfo->mpegVersion == AV_MPEG_VER_2) && (pInfo->channels == 1)) {
- if (buf[36] != 'V') return false;
- if (buf[37] != 'B') return false;
- if (buf[38] != 'R') return false;
- if (buf[39] != 'I') return false;
- } else {
- if (buf[36] != 'V') return false;
- if (buf[37] != 'B') return false;
- if (buf[38] != 'R') return false;
- if (buf[39] != 'I') return false;
- }
+ if (buf[36] != 'V') return false;
+ if (buf[37] != 'B') return false;
+ if (buf[38] != 'R') return false;
+ if (buf[39] != 'I') return false;
/* 2. TOC */
if (pInfo->pToc)
}
#endif
-
static bool
-__AvGetXingBitrate(AvFileContentInfo *pInfo)
-{
- float br, factor;
- int padding;
-
- if (pInfo == NULL || pInfo->bVbr == false)
- return 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 */
- factor = 48000.0;
- else /* Layer 2, 3 */
- factor = 144000.0;
- } else { /* MPEG version 2 */
- if (pInfo->layer == AV_MP3_LAYER_1) /* Layer 1 */
- factor = 24000.0;
- else /* Layer 2, 3 */
- factor = 72000.0;
- }
-
- br = (pInfo->frameSize - padding) * pInfo->sampleRate / factor;
-
- pInfo->bitRate = (int) br;
-
- return true;
-}
-
-static bool
-__AvGetVBRIBitrate(AvFileContentInfo *pInfo)
+__AvGetBitrate(AvFileContentInfo *pInfo)
{
float br, factor;
int padding;
debug_msg(RELEASE, "This header is valid. index(%d)\n", index);
}
- if (__AvParseXingHeader(pInfo, pHeader)) {
- __AvGetXingBitrate(pInfo);
- } else if (__AvParseVBRIHeader(pInfo, pHeader)) {
- __AvGetVBRIBitrate(pInfo);
- }
+ if (__AvParseXingHeader(pInfo, pHeader) || __AvParseVBRIHeader(pInfo, pHeader))
+ __AvGetBitrate(pInfo);
if (pInfo->bVbr) {
mmfile_free(pHeader);
if (__AvParseMp3Header(pInfo, header) == false)
goto EXCEPTION;
- if (__AvParseXingHeader(pInfo, header)) {
- __AvGetXingBitrate(pInfo);
- } else if (__AvParseVBRIHeader(pInfo, header)) {
- __AvGetVBRIBitrate(pInfo);
+ if (__AvParseXingHeader(pInfo, header) || __AvParseVBRIHeader(pInfo, header)) {
+ __AvGetBitrate(pInfo);
} else {
__AvGetMp3FrameSize(pInfo);
pInfo->datafileLen = pInfo->fileLen - pInfo->headerPos;
#include "mm_file_utils.h"
#ifdef __MMFILE_MEM_TRACE__
-EXPORT_API
-int mmfile_util_wstrlen(unsigned short *wText)
-{
- int n = 0;
-
- if (NULL == wText) {
- debug_error(DEBUG, "wText is NULL\n");
- return MMFILE_UTIL_FAIL;
- }
-
- n = 0;
-
- while (*(wText + n) != 0) {
- n++;
- }
-
- return n;
-}
-
short __WmLngSwapShort(short aShort)
{
return ((aShort << 8) + (aShort >> 8));
}
EXPORT_API
-char **mmfile_strsplit(const char *string, const char *delimiter)
-{
- return g_strsplit(string, delimiter, -1);
-}
-
-EXPORT_API
-void mmfile_strfreev(char **str_array)
-{
- g_strfreev(str_array);
-}
-
-EXPORT_API
char *mmfile_strdup_debug(const char *str, const char *func, unsigned int line)
{
char *temp = NULL;
#else /* __MMFILE_MEM_TRACE__ */
EXPORT_API
-int mmfile_util_wstrlen(unsigned short *wText)
-{
- int n = 0;
-
- if (NULL == wText) {
- debug_error(DEBUG, "wText is NULL\n");
- return MMFILE_UTIL_FAIL;
- }
-
- n = 0;
-
- while (*(wText + n) != 0) {
- n++;
- }
-
- return n;
-}
-
-EXPORT_API
char *mmfile_get_charset(const char *str)
{
UCharsetDetector *ucsd = NULL;
}
EXPORT_API
-char **mmfile_strsplit(const char *string, const char *delimiter)
+char *mmfile_strdup(const char *str)
{
- return g_strsplit(string, delimiter, -1);
+ if (!str)
+ return NULL;
+
+ return strdup(str);
}
+#endif /*__MMFILE_MEM_TRACE__*/
+
EXPORT_API
-void mmfile_strfreev(char **str_array)
+int mmfile_util_wstrlen(unsigned short *wText)
{
- g_strfreev(str_array);
+ int n = 0;
+
+ if (NULL == wText) {
+ debug_error(DEBUG, "wText is NULL\n");
+ return MMFILE_UTIL_FAIL;
+ }
+
+ n = 0;
+
+ while (*(wText + n) != 0) {
+ n++;
+ }
+
+ return n;
}
EXPORT_API
-char *mmfile_strdup(const char *str)
+char **mmfile_strsplit(const char *string, const char *delimiter)
{
- if (!str)
- return NULL;
-
- return strdup(str);
+ return g_strsplit(string, delimiter, -1);
}
-#endif /*__MMFILE_MEM_TRACE__*/
-
+EXPORT_API
+void mmfile_strfreev(char **str_array)
+{
+ g_strfreev(str_array);
+}