From 830acf7838ac2558ac47cccfd064c790a92495ae Mon Sep 17 00:00:00 2001 From: Dmitry Makarenko Date: Fri, 18 Jul 2025 13:35:52 +0300 Subject: [PATCH] 7470 Fix crash when importing short audio (#9096) (cherry picked from commit efc959a77f2fbdd25966d70b32da91a384db16ca) Signed-off-by: Avery King --- .../MusicInformationRetrieval.cpp | 3 ++- .../lib-music-information-retrieval/StftFrameProvider.cpp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/lib-music-information-retrieval/MusicInformationRetrieval.cpp b/libraries/lib-music-information-retrieval/MusicInformationRetrieval.cpp index 395db4b69..21a93c47f 100644 --- a/libraries/lib-music-information-retrieval/MusicInformationRetrieval.cpp +++ b/libraries/lib-music-information-retrieval/MusicInformationRetrieval.cpp @@ -137,9 +137,10 @@ std::optional GetMusicalMeterFromSignal( if (audio.GetSampleRate() <= 0) return {}; const auto duration = 1. * audio.GetNumSamples() / audio.GetSampleRate(); - if (duration > 60) + if (duration > 60 || duration < 1) // A file longer than 1 minute is most likely not a loop, and processing // it would be costly. + // A file shorter than 1 second is too short to be a loop. return {}; DecimatingMirAudioReader decimatedAudio { audio }; return GetMeterUsingTatumQuantizationFit( diff --git a/libraries/lib-music-information-retrieval/StftFrameProvider.cpp b/libraries/lib-music-information-retrieval/StftFrameProvider.cpp index e72507338..98db910eb 100644 --- a/libraries/lib-music-information-retrieval/StftFrameProvider.cpp +++ b/libraries/lib-music-information-retrieval/StftFrameProvider.cpp @@ -21,7 +21,7 @@ namespace MIR { namespace { -constexpr auto twoPi = 2 * 3.14159265358979323846; +constexpr auto twoPi = 2 * M_PI; int GetFrameSize(int sampleRate) { @@ -94,6 +94,8 @@ int StftFrameProvider::GetSampleRate() const double StftFrameProvider::GetFrameRate() const { + if (mHopSize <= 0) + return 0; return 1. * mAudio.GetSampleRate() / mHopSize; }