# HG changeset patch # User Chris Cannam # Date 1479994725 0 # Node ID a45312bd93065d0c3fcbd8f285c27ea9ce1839c6 # Parent 5ef9b4d4bbdb6a2d170d2cbc762eb17e8be83ee5 Do that only for the first frame diff -r 5ef9b4d4bbdb -r a45312bd9306 data/fileio/MP3FileReader.cpp --- a/data/fileio/MP3FileReader.cpp Thu Nov 24 13:32:04 2016 +0000 +++ b/data/fileio/MP3FileReader.cpp Thu Nov 24 13:38:45 2016 +0000 @@ -360,18 +360,22 @@ MP3FileReader::filter(struct mad_stream const *stream, struct mad_frame *) { - struct mad_bitptr ptr = stream->anc_ptr; - unsigned long fourcc = mad_bit_read(&ptr, 32); - std::string magic("...."); - for (int i = 0; i < 4; ++i) { - magic[3-i] = char((fourcc >> (8*i)) & 0xff); - } - if (magic == "Xing" || magic == "Info" || magic == "LAME") { - SVDEBUG << "MP3FileReader: Discarding metadata frame (magic = \"" - << magic << "\")" << " at frame " << m_mp3FrameCount << endl; - return MAD_FLOW_IGNORE; + if (m_mp3FrameCount > 0) { + return MAD_FLOW_CONTINUE; } else { - return MAD_FLOW_CONTINUE; + struct mad_bitptr ptr = stream->anc_ptr; + unsigned long fourcc = mad_bit_read(&ptr, 32); + std::string magic("...."); + for (int i = 0; i < 4; ++i) { + magic[3-i] = char((fourcc >> (8*i)) & 0xff); + } + if (magic == "Xing" || magic == "Info" || magic == "LAME") { + SVDEBUG << "MP3FileReader: Discarding metadata frame (magic = \"" + << magic << "\")" << endl; + return MAD_FLOW_IGNORE; + } else { + return MAD_FLOW_CONTINUE; + } } }