int FrameInfoExtract::GetByte(void)
{
// Fill buffer as necessary
if ((m_seekPos - m_buffer_start) >= m_buffer_length)

should be

if ((m_seekPos < m_buffer_start) || (m_seekPos - m_buffer_start) >= m_buffer_length)

I ran into an MP3 that set m_seekPos to be one byte before the start of the buffer right before testing for a VBR header.

Mike