d->sampleRate = data.toUInt(4, false);
d->bitsPerSample = data.toShort(14, false);
- if(totalSamples > 0)
+ if(d->format != FORMAT_PCM)
d->sampleFrames = totalSamples;
else if(d->channels > 0 && d->bitsPerSample > 0)
d->sampleFrames = streamLength / (d->channels * ((d->bitsPerSample + 7) / 8));
CPPUNIT_TEST(testFuzzedFile1);
CPPUNIT_TEST(testFuzzedFile2);
CPPUNIT_TEST(testStripAndProperties);
+ CPPUNIT_TEST(testPCMWithFactChunk);
CPPUNIT_TEST_SUITE_END();
public:
}
}
+ void testPCMWithFactChunk()
+ {
+ RIFF::WAV::File f(TEST_FILE_PATH_C("pcm_with_fact_chunk.wav"));
+ CPPUNIT_ASSERT(f.audioProperties());
+ CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length());
+ CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds());
+ CPPUNIT_ASSERT_EQUAL(3675, f.audioProperties()->lengthInMilliseconds());
+ CPPUNIT_ASSERT_EQUAL(32, f.audioProperties()->bitrate());
+ CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels());
+ CPPUNIT_ASSERT_EQUAL(1000, f.audioProperties()->sampleRate());
+ CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample());
+ CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->sampleWidth());
+ CPPUNIT_ASSERT_EQUAL(3675U, f.audioProperties()->sampleFrames());
+ CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->format());
+ }
+
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestWAV);