From: Charles McGarvey Date: Thu, 24 Sep 2009 01:36:52 +0000 (-0600) Subject: improved new vorbisfile compatibility X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=commitdiff_plain;h=7e898e8ec0ff716e2fc722b883a626a6c346f107 improved new vorbisfile compatibility --- diff --git a/src/Character.cc b/src/Character.cc index 3a9559f..c6ad2a0 100644 --- a/src/Character.cc +++ b/src/Character.cc @@ -66,7 +66,7 @@ void Character::update(Mf::Scalar t, Mf::Scalar dt) current.force += -20.0 * (mag - d) * (x / mag) - 2.0 * current.velocity; current.force += userForce; current.recalculate(); - std::cout << "force: " << current.momentum << std::endl; + //std::cout << "force: " << current.momentum << std::endl; Mf::integrate(current, t, dt); diff --git a/src/Moof/Sound.cc b/src/Moof/Sound.cc index 43714fe..f912b31 100644 --- a/src/Moof/Sound.cc +++ b/src/Moof/Sound.cc @@ -59,7 +59,6 @@ struct Sound::Impl class Buffer : public Mippleton { - FILE* soundFile; OggVorbis_File oggStream; ALenum audioFormat; ALsizei audioFreq; @@ -68,9 +67,9 @@ struct Sound::Impl public: Buffer(const std::string& name) : - Mippleton(name), - soundFile(0) + Mippleton(name) { + oggStream.datasource = 0; openFile(); } @@ -82,7 +81,7 @@ struct Sound::Impl objects.pop_back(); } - if (soundFile) + if (oggStream.datasource) { ov_clear(&oggStream); } @@ -91,30 +90,18 @@ struct Sound::Impl void openFile() { - if (soundFile) + if (oggStream.datasource) { ov_clear(&oggStream); - soundFile = 0; + oggStream.datasource = 0; } - //soundFile = Sound_NewSampleFromFile(soundFile::getPath(getName()).c_str(), - //0, BUFFER_SIZE); - soundFile = fopen(Sound::getPath(getName()).c_str(), "rb"); - - if (!soundFile) - { - logWarning("error while loading sound %s", getName().c_str()); - throw Exception(Exception::FILE_NOT_FOUND); - } - - int result = ov_open(soundFile, &oggStream, NULL, 0); + std::string filePath = Sound::getPath(getName()); + int result = ov_fopen((char*)filePath.c_str(), &oggStream); if (result < 0) { - fclose(soundFile); - soundFile = 0; - - logWarning("error while loading oggvorbis stream %s", + logWarning("error while loading sound %s", getName().c_str()); throw Exception(Exception::BAD_AUDIO_FORMAT); } @@ -123,7 +110,6 @@ struct Sound::Impl audioFormat = getAudioFormat(vorbisInfo); audioFreq = vorbisInfo->rate; - logDebug(" version: %d", vorbisInfo->version); logDebug(" channels: %d", vorbisInfo->channels); logDebug(" frequency: %d", vorbisInfo->rate); } @@ -131,13 +117,12 @@ struct Sound::Impl void loadAll(ALuint source) { - if (!soundFile) openFile(); - if (!soundFile) return; + if (!oggStream.datasource) openFile(); + if (!oggStream.datasource) return; char data[BUFFER_SIZE]; int size = 0; - //unsigned decoded = Sound_DecodeAll(soundFile); for (;;) { int section; @@ -172,14 +157,14 @@ struct Sound::Impl // don't need this anymore ov_clear(&oggStream); - soundFile = 0; + oggStream.datasource = 0; } void beginStream(ALuint source, int nBuffers = 4) { - if (!soundFile) openFile(); - if (!soundFile) return; + if (!oggStream.datasource) openFile(); + if (!oggStream.datasource) return; ALuint objs[nBuffers]; alGenBuffers(nBuffers, objs); @@ -211,7 +196,6 @@ struct Sound::Impl char data[BUFFER_SIZE]; int size = 0; - //unsigned bytes = Sound_Decode(soundFile); while (size < BUFFER_SIZE) { int section; @@ -238,7 +222,7 @@ struct Sound::Impl inline void rewind() { - if (!soundFile) openFile(); + if (!oggStream.datasource) openFile(); else ov_raw_seek(&oggStream, 0); } diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index 4f65582..4953774 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -31,7 +31,7 @@ /** * @file Sound.hh - * Image-loading and OpenGL texture loading. + * Load and play sounds, current supports ogg vorbis. */ #include