diff --git a/src/Nazara/Audio/Formats/drwavLoader.cpp b/src/Nazara/Audio/Formats/drwavLoader.cpp index 3c3b618f9..a993881a9 100644 --- a/src/Nazara/Audio/Formats/drwavLoader.cpp +++ b/src/Nazara/Audio/Formats/drwavLoader.cpp @@ -192,7 +192,7 @@ namespace Nz m_format = *formatOpt; - m_duration = static_cast(1000ULL * m_decoder.totalPCMFrameCount / (m_decoder.sampleRate * m_decoder.channels)); + m_duration = static_cast(1000ULL * m_decoder.totalPCMFrameCount / m_decoder.sampleRate); m_sampleCount = m_decoder.totalPCMFrameCount * m_decoder.channels; m_sampleRate = m_decoder.sampleRate; diff --git a/tests/Engine/Audio/SoundStreamTest.cpp b/tests/Engine/Audio/SoundStreamTest.cpp new file mode 100644 index 000000000..bce87229e --- /dev/null +++ b/tests/Engine/Audio/SoundStreamTest.cpp @@ -0,0 +1,62 @@ +#include +#include + +std::filesystem::path GetResourceDir(); + +SCENARIO("SoundStream", "[AUDIO][SoundStream]") +{ + GIVEN("A sound buffer") + { + WHEN("We load a .flac file") + { + std::shared_ptr soundStream = Nz::SoundStream::OpenFromFile(GetResourceDir() / "Engine/Audio/Cat.flac"); + REQUIRE(soundStream); + + THEN("We can ask the informations of the file") + { + CHECK(soundStream->GetDuration() == 8192); + CHECK(soundStream->GetFormat() == Nz::AudioFormat::I16_Stereo); + CHECK(soundStream->GetSampleRate() == 96000); + } + } + + WHEN("We load a .mp3 file") + { + std::shared_ptr soundStream = Nz::SoundStream::OpenFromFile(GetResourceDir() / "file_example_MP3_700KB.mp3"); + REQUIRE(soundStream); + + THEN("We can ask the informations of the file") + { + CHECK(soundStream->GetDuration() == 27193); + CHECK(soundStream->GetFormat() == Nz::AudioFormat::I16_Stereo); + CHECK(soundStream->GetSampleRate() == 32000); + } + } + + WHEN("We load a .ogg file") + { + std::shared_ptr soundStream = Nz::SoundStream::OpenFromFile(GetResourceDir() / "Engine/Audio/The_Brabanconne.ogg"); + REQUIRE(soundStream); + + THEN("We can ask the informations of the file") + { + CHECK(soundStream->GetDuration() == 63059); + CHECK(soundStream->GetFormat() == Nz::AudioFormat::I16_Stereo); + CHECK(soundStream->GetSampleRate() == 44100); + } + } + + WHEN("We load a .wav file") + { + std::shared_ptr soundStream = Nz::SoundStream::OpenFromFile(GetResourceDir() / "explosion.wav"); + REQUIRE(soundStream); + + THEN("We can ask the informations of the file") + { + CHECK(soundStream->GetDuration() == 2064); + CHECK(soundStream->GetFormat() == Nz::AudioFormat::I16_Stereo); + CHECK(soundStream->GetSampleRate() == 48000); + } + } + } +}