X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsound.cpp;h=c4a00efdedec278fa91c931b08e4054b12a487fe;hb=effcac6ee0bc2297eed8f00e0b04f78064090dd6;hp=9ac1143e32f2b8206d50db4c51e234bdcd4e7331;hpb=2a685e572e2ab8d9f50129de3f0869628edb3d8e;p=libs%2Fal.git diff --git a/source/sound.cpp b/source/sound.cpp index 9ac1143..c4a00ef 100644 --- a/source/sound.cpp +++ b/source/sound.cpp @@ -1,12 +1,5 @@ -/* $Id$ - -This file is part of libmspal -Copyright © 2008-2009 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include -#include +#include #include "sound.h" using namespace std; @@ -25,7 +18,7 @@ struct MemorySource size_t memory_read(void *ptr, size_t size, size_t nmemb, void *src) { MemorySource &memsrc = *reinterpret_cast(src); - unsigned len = min(size*nmemb, memsrc.length-memsrc.pos); + unsigned len = min(size*nmemb, memsrc.length-memsrc.pos); memcpy(ptr, reinterpret_cast(memsrc.data)+memsrc.pos, len); memsrc.pos += len; @@ -88,9 +81,9 @@ Sound::~Sound() void Sound::open_file(const string &fn) { if(ovfile.datasource) - throw InvalidState("Sound has already been opened"); + throw logic_error("Sound has already been opened"); if(ov_fopen(const_cast(fn.c_str()), &ovfile)<0) - throw Exception("Could not open ogg vorbis file "+fn); + throw runtime_error("Could not open ogg vorbis file "+fn); open_common(); } @@ -98,13 +91,13 @@ void Sound::open_file(const string &fn) void Sound::open_memory(const void *d, unsigned len) { if(ovfile.datasource) - throw InvalidState("Sound has already been opened"); + throw logic_error("Sound has already been opened"); MemorySource *src = new MemorySource(d, len); if(ov_open_callbacks(src, &ovfile, 0, 0, memory_callbacks)<0) { delete src; - throw Exception("Could not open ogg vorbis memory block"); + throw runtime_error("Could not open ogg vorbis memory block"); } open_common(); @@ -113,7 +106,7 @@ void Sound::open_memory(const void *d, unsigned len) void Sound::load_data() { if(data) - throw InvalidState("Data has already been loaded"); + throw logic_error("Data has already been loaded"); size = ov_pcm_total(&ovfile, 0)*4; char *dptr = new char[size]; @@ -167,19 +160,19 @@ unsigned Sound::read(char *buf, unsigned len) int section = 0; int res = ov_read(&ovfile, buf, len, 0, 2, 1, §ion); if(res<0) - throw Exception("Error reading ogg vorbis file"); + throw runtime_error("Error reading ogg vorbis file"); else if(res==0) eof_flag = true; return res; } else - throw InvalidState("No data available"); + throw logic_error("No data available"); } const char *Sound::get_data() const { if(!data) - throw InvalidState("Data has not been loaded"); + throw logic_error("Data has not been loaded"); return data; } @@ -194,7 +187,7 @@ void Sound::open_common() { case 1: format = MONO16; break; case 2: format = STEREO16; break; - default: throw Exception("Unsupported number of channels"); + default: throw runtime_error("Unsupported number of channels"); } }