bool SoundFile::openWrite(const std::string& filename, unsigned int channelCount, unsigned int sampleRate) { // -- Close any previously open self made stream if(m_ownedStream) { delete m_ownedStream; m_ownedStream = NULL; } // If the file is already opened, first close it if (m_file) sf_close(m_file); // Find the right format according to the file extension int format = getFormatFromFilename(filename); if (format == -1) { // Error : unrecognized extension Log("Failed to create sound file %s (unknown format)", filename.c_str()); return false; } // Fill the sound infos with parameters SF_INFO fileInfos; fileInfos.channels = channelCount; fileInfos.samplerate = sampleRate; fileInfos.format = format | (format == SF_FORMAT_OGG ? SF_FORMAT_VORBIS : SF_FORMAT_PCM_16); // Open the sound file for writing m_file = sf_open(filename.c_str(), SFM_WRITE, &fileInfos); if (!m_file) { Log("Failed to create sound file %s (%s)", filename.c_str(), sf_strerror(m_file)); return false; } // Set the sound parameters m_channelCount = channelCount; m_sampleRate = sampleRate; m_sampleCount = 0; return true; }
bool SoundFile::openWrite(const std::string& filename, unsigned int channelCount, unsigned int sampleRate) { // If the file is already opened, first close it if (m_file) sf_close(m_file); // Find the right format according to the file extension int format = getFormatFromFilename(filename); if (format == -1) { // Error : unrecognized extension err() << "Failed to create sound file \"" << filename << "\" (unknown format)" << std::endl; return false; } // Fill the sound infos with parameters SF_INFO fileInfos; fileInfos.channels = channelCount; fileInfos.samplerate = sampleRate; fileInfos.format = format | (format == SF_FORMAT_OGG ? SF_FORMAT_VORBIS : SF_FORMAT_PCM_16); // Open the sound file for writing m_file = sf_open(filename.c_str(), SFM_WRITE, &fileInfos); if (!m_file) { err() << "Failed to create sound file \"" << filename << "\" (" << sf_strerror(m_file) << ")" << std::endl; return false; } // Set the sound parameters m_channelCount = channelCount; m_sampleRate = sampleRate; m_sampleCount = 0; return true; }