28 #include <SFML/Audio/SoundFile.hpp> 29 #include <SFML/Audio/SoundFileDefault.hpp> 30 #include <SFML/Audio/SoundFileOgg.hpp> 41 SoundFile* SoundFile::CreateRead(
const std::string& Filename)
44 SoundFile* File = NULL;
45 if (SoundFileOgg::IsFileSupported(Filename,
true)) File =
new SoundFileOgg;
46 else if (SoundFileDefault::IsFileSupported(Filename,
true)) File =
new SoundFileDefault;
51 std::size_t SamplesCount;
52 unsigned int ChannelsCount;
53 unsigned int SampleRate;
55 if (File->OpenRead(Filename, SamplesCount, ChannelsCount, SampleRate))
57 File->myFilename = Filename;
60 File->myNbSamples = SamplesCount;
61 File->myChannelsCount = ChannelsCount;
62 File->mySampleRate = SampleRate;
78 SoundFile* SoundFile::CreateRead(
const char* Data, std::size_t SizeInMemory)
81 SoundFile* File = NULL;
82 if (SoundFileOgg::IsFileSupported(Data, SizeInMemory)) File =
new SoundFileOgg;
83 else if (SoundFileDefault::IsFileSupported(Data, SizeInMemory)) File =
new SoundFileDefault;
88 std::size_t SamplesCount;
89 unsigned int ChannelsCount;
90 unsigned int SampleRate;
92 if (File->OpenRead(Data, SizeInMemory, SamplesCount, ChannelsCount, SampleRate))
94 File->myFilename =
"";
96 File->mySize = SizeInMemory;
97 File->myNbSamples = SamplesCount;
98 File->myChannelsCount = ChannelsCount;
99 File->mySampleRate = SampleRate;
115 SoundFile* SoundFile::CreateWrite(
const std::string& Filename,
unsigned int ChannelsCount,
unsigned int SampleRate)
118 SoundFile* File = NULL;
119 if (SoundFileOgg::IsFileSupported(Filename,
false)) File =
new SoundFileOgg;
120 else if (SoundFileDefault::IsFileSupported(Filename,
false)) File =
new SoundFileDefault;
125 if (File->OpenWrite(Filename, ChannelsCount, SampleRate))
127 File->myFilename =
"";
130 File->myNbSamples = 0;
131 File->myChannelsCount = ChannelsCount;
132 File->mySampleRate = SampleRate;
148 SoundFile::SoundFile() :
160 SoundFile::~SoundFile()
169 std::size_t SoundFile::GetSamplesCount()
const 178 unsigned int SoundFile::GetChannelsCount()
const 180 return myChannelsCount;
187 unsigned int SoundFile::GetSampleRate()
const 196 bool SoundFile::Restart()
201 return OpenRead(myData, mySize, myNbSamples, myChannelsCount, mySampleRate);
203 else if (myFilename !=
"")
206 return OpenRead(myFilename, myNbSamples, myChannelsCount, mySampleRate);
211 std::cerr <<
"Warning : trying to restart a sound opened in write mode, which is not allowed" << std::endl;
220 bool SoundFile::OpenRead(
const std::string& Filename, std::size_t&,
unsigned int&,
unsigned int&)
222 std::cerr <<
"Failed to open sound file \"" << Filename <<
"\", format is not supported by SFML" << std::endl;
231 bool SoundFile::OpenRead(
const char*, std::size_t, std::size_t&,
unsigned int&,
unsigned int&)
233 std::cerr <<
"Failed to open sound file from memory, format is not supported by SFML" << std::endl;
242 bool SoundFile::OpenWrite(
const std::string& Filename,
unsigned int,
unsigned int)
244 std::cerr <<
"Failed to open sound file \"" << Filename <<
"\", format is not supported by SFML" << std::endl;
253 std::size_t SoundFile::Read(Int16*, std::size_t)
255 std::cerr <<
"Failed to read from sound file (not supported)" << std::endl;
264 void SoundFile::Write(
const Int16*, std::size_t)
266 std::cerr <<
"Failed to write to sound file (not supported)" << std::endl;