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;