swift
resourcesound.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include "resourcesound.h"
7 
8 #include <QCoreApplication>
9 
10 #include "misc/fileutils.h"
11 #include "misc/stringutils.h"
12 #include "sound/audioutilities.h"
13 
14 using namespace swift::misc;
15 using namespace swift::sound::wav;
16 
17 namespace swift::sound::sample_provider
18 {
19  CResourceSound::CResourceSound() : m_data(new CResourceSoundData)
20  {
21  // void
22  }
23 
24  CResourceSound::CResourceSound(const QString &audioFileName) : m_data(new CResourceSoundData)
25  {
26  m_data->fileName = audioFileName;
27  }
28 
30  {
31  if (!m_data || m_data->fileName.isEmpty()) { return false; }
32 
33  CWavFile wavFile;
34  m_data->samples.clear();
35  if (wavFile.open(m_data->fileName))
36  {
37  if (wavFile.fileFormat().sampleFormat() == QAudioFormat::Float)
38  {
39  // Not implemented
40  // m_samples = convertFloatBytesTo16BitPCM(wavFile.audioData());
41  }
42  else { m_data->samples = convertBytesTo32BitFloatPCM(wavFile.audioData()); }
43  }
44 
45  m_data->isLoaded = true;
46  return true;
47  }
48 
49  const QString &CResourceSound::getFileName() const
50  {
51  static const QString empty;
52  return m_data ? m_data->fileName : empty;
53  }
54 
55  bool CResourceSound::isSameFileName(const QString &fn) const
56  {
57  if (fn.isEmpty()) { return false; }
58  return stringCompare(fn, m_data->fileName, CFileUtils::osFileNameCaseSensitivity());
59  }
60 } // namespace swift::sound::sample_provider
const QString & getFileName() const
Corresponding file.
bool load()
Load the attached resource file.
bool isSameFileName(const QString &fn) const
Is same file?
const QAudioFormat & fileFormat() const
Audio format.
Definition: wavfile.cpp:64
const QByteArray & audioData() const
The audio data.
Definition: wavfile.h:35
bool open(const QString &fileName)
Open.
Definition: wavfile.cpp:57
Free functions in swift::misc.
SWIFT_MISC_EXPORT bool stringCompare(const QString &c1, const QString &c2, Qt::CaseSensitivity cs)
String compare.