diff --git a/src/blacksound/sampleprovider/resourcesound.cpp b/src/blacksound/sampleprovider/resourcesound.cpp index de01671e6..3270c71f9 100644 --- a/src/blacksound/sampleprovider/resourcesound.cpp +++ b/src/blacksound/sampleprovider/resourcesound.cpp @@ -10,7 +10,10 @@ #include "resourcesound.h" #include "audioutilities.h" +#include "blackmisc/fileutils.h" +#include "blackmisc/stringutils.h" +using namespace BlackMisc; using namespace BlackSound::Wav; namespace BlackSound @@ -19,16 +22,27 @@ namespace BlackSound { CResourceSound::CResourceSound(const QString &audioFileName) { - m_wavFile = new CWavFile(); - m_wavFile->open(audioFileName); - if (m_wavFile->fileFormat().sampleType() == QAudioFormat::Float) + CWavFile wavFile; + m_fn.clear(); + m_samples.clear(); + if (wavFile.open(audioFileName)) { - m_samples = convertFloatBytesTo16BitPCM(m_wavFile->audioData()); - } - else - { - m_samples = convertBytesTo16BitPCM(m_wavFile->audioData()); + if (wavFile.fileFormat().sampleType() == QAudioFormat::Float) + { + m_samples = convertFloatBytesTo16BitPCM(wavFile.audioData()); + } + else + { + m_samples = convertBytesTo16BitPCM(wavFile.audioData()); + } + m_fn = audioFileName; } } + + bool CResourceSound::isSameFileName(const QString &fn) const + { + if (fn.isEmpty()) { return false; } + return stringCompare(fn, m_fn, CFileUtils::osFileNameCaseSensitivity()); + } } // ns } // ns diff --git a/src/blacksound/sampleprovider/resourcesound.h b/src/blacksound/sampleprovider/resourcesound.h index 903ce5869..51c096baf 100644 --- a/src/blacksound/sampleprovider/resourcesound.h +++ b/src/blacksound/sampleprovider/resourcesound.h @@ -31,8 +31,14 @@ namespace BlackSound //! Audio data const QVector &audioData() const { return m_samples; } + //! Corresponding file + const QString &getFileName() { return m_fn; } + + //! Is same file? + bool isSameFileName(const QString &fn) const; + private: - Wav::WavFile *m_wavFile = nullptr; + QString m_fn; //!< file name QVector m_samples; }; } // ns