- Timestamp:
- Dec 8, 2009, 10:09:39 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation2/src/orxonox/sound/SoundBuffer.cc
r6260 r6270 40 40 namespace orxonox 41 41 { 42 SoundBuffer::SoundBuffer( shared_ptr<ResourceInfo> fileInfo)43 : file Info_(fileInfo)42 SoundBuffer::SoundBuffer(const std::string& filename) 43 : filename_(filename) 44 44 , audioBuffer_(AL_NONE) 45 45 { 46 if (this->file Info_ == NULL)46 if (this->filename_.empty()) 47 47 ThrowException(General, "SoundBuffer construction: fileInfo was NULL"); 48 DataStreamPtr dataStream = Resource::open(this->fileInfo_);49 48 50 std::string extension(this->fileInfo_->basename.substr(this->fileInfo_->basename.find_last_of('.') + 1)); 49 // Get resource info 50 shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename); 51 if (fileInfo == NULL) 52 { 53 COUT(2) << "Sound: Warning: Sound file '" << filename << "' not found" << std::endl; 54 return; 55 } 56 // Open data stream 57 DataStreamPtr dataStream = Resource::open(fileInfo); 58 59 std::string extension(this->filename_.substr(this->filename_.find_last_of('.') + 1)); 51 60 if (getLowercase(extension) == "ogg") 52 61 { 53 62 // Try ogg loader 54 this->loadOgg( dataStream);63 this->loadOgg(fileInfo, dataStream); 55 64 } 56 65 else 57 66 { 58 67 // Try standard OpenAL loader 59 this->loadStandard( dataStream);68 this->loadStandard(fileInfo, dataStream); 60 69 } 61 70 } … … 77 86 } 78 87 79 void SoundBuffer::loadStandard( DataStreamPtr dataStream)88 void SoundBuffer::loadStandard(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream) 80 89 { 81 90 // Read everything into a temporary buffer 82 char* buffer = new char[ this->fileInfo_->size];83 dataStream->read(buffer, this->fileInfo_->size);91 char* buffer = new char[fileInfo->size]; 92 dataStream->read(buffer, fileInfo->size); 84 93 dataStream->seek(0); 85 94 86 this->audioBuffer_ = alutCreateBufferFromFileImage(buffer, this->fileInfo_->size);95 this->audioBuffer_ = alutCreateBufferFromFileImage(buffer, fileInfo->size); 87 96 delete[] buffer; 88 97 … … 115 124 } 116 125 117 void SoundBuffer::loadOgg( DataStreamPtr dataStream)126 void SoundBuffer::loadOgg(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream) 118 127 { 119 128 char inbuffer[256*1024];
Note: See TracChangeset
for help on using the changeset viewer.