⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vbrheader.cpp

📁 获取mp3信息, Xing header, ID3 tag, APE tag, VBR header
💻 CPP
字号:
#include "stdafx.h"
#include "mpaframe.h"	// also includes vbrheader.h

#include "xingheader.h"
#include "vbriheader.h"

// first test with this static method, if it does exist
CVBRHeader* CVBRHeader::FindHeader(const CMPAFrame* pFrame)
{
	_ASSERTE(pFrame);
	CVBRHeader* pVBRHeader = NULL;

	pVBRHeader = CXINGHeader::FindHeader(pFrame);
	if (!pVBRHeader)
		pVBRHeader = CVBRIHeader::FindHeader(pFrame);
	
	return pVBRHeader;
}

CVBRHeader::CVBRHeader(CMPAStream* pStream, DWORD dwOffset) :
	m_pStream(pStream), m_pnToc(NULL), m_dwOffset(dwOffset), m_dwFrames(0), m_dwBytes(0), m_dwQuality(0), m_dwTableSize(0)
{
}

bool CVBRHeader::CheckID(CMPAStream* pStream, DWORD dwOffset, char ch0, char ch1, char ch2, char ch3)
{
	BYTE* pBuffer = pStream->ReadBytes(4, dwOffset, false);
	if (pBuffer[0] == ch0 && pBuffer[1] == ch1 && pBuffer[2] == ch2 && pBuffer[3] == ch3)
		return true;
	return false;
}

/*
// currently not used
bool CVBRHeader::ExtractLAMETag( DWORD dwOffset )
{
	// LAME ID found?
	if( !CheckID( m_pMPAFile, dwOffset, 'L', 'A', 'M', 'E' ) && !CheckID( m_pMPAFile, dwOffset, 'G', 'O', 'G', 'O' ) )
		return false;

	return true;
}*/



CVBRHeader::~CVBRHeader(void)
{
	if (m_pnToc)
		delete[] m_pnToc;
}

// get byte position for percentage value (fPercent) of file
bool CVBRHeader::SeekPosition(float& fPercent, DWORD& dwSeekPoint) const
{
	if (!m_pnToc || m_dwBytes == 0)
		return false;

	// check range of fPercent
	if (fPercent < 0.0f)   
		fPercent = 0.0f;
	if (fPercent > 99.0f) 
		fPercent = 99.0f;

	dwSeekPoint = SeekPosition(fPercent);
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -