d->bitrate = firstHeader.bitrate();
+ // Look for the last MPEG audio frame to calculate the stream length.
+
+ // This actually finds the second last valid frame, since MPEG::Header requires
+ // the next frame header to check if the frame length is calculated correctly.
+
long lastFrameOffset = file->lastFrameOffset();
if(lastFrameOffset < 0) {
debug("MPEG::Properties::read() -- Could not find an MPEG frame in the stream.");
CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate());
CPPUNIT_ASSERT(!f.audioProperties()->xingHeader());
+ // This actually finds the second last valid frame, since MPEG::Header requires
+ // the next frame header to check if the frame length is calculated correctly.
+
long last = f.lastFrameOffset();
MPEG::Header lastHeader(&f, last);
- while (!lastHeader.isValid()) {
+ while(!lastHeader.isValid()) {
last = f.previousFrameOffset(last);
lastHeader = MPEG::Header(&f, last);
}