diff options
| -rw-r--r-- | src/audiocache.cc | 51 | ||||
| -rw-r--r-- | src/audiocache.h | 29 | ||||
| -rw-r--r-- | src/audiocacheeventhandler.cc | 82 | ||||
| -rw-r--r-- | src/audiocacheeventhandler.h | 22 | ||||
| -rw-r--r-- | src/audiocachefile.cc | 3 | ||||
| -rw-r--r-- | src/audiocachefile.h | 13 | ||||
| -rw-r--r-- | src/audiocacheidmanager.cc | 10 | ||||
| -rw-r--r-- | src/audiocacheidmanager.h | 18 | ||||
| -rw-r--r-- | test/audiocacheeventhandlertest.cc | 16 | ||||
| -rw-r--r-- | test/audiocachefiletest.cc | 64 | ||||
| -rw-r--r-- | test/audiocacheidmanagertest.cc | 7 | ||||
| -rw-r--r-- | test/audiocachetest.cc | 49 | 
12 files changed, 170 insertions, 194 deletions
diff --git a/src/audiocache.cc b/src/audiocache.cc index 1493e46..237a3ff 100644 --- a/src/audiocache.cc +++ b/src/audiocache.cc @@ -42,8 +42,6 @@ AudioCache::~AudioCache()  {  	DEBUG(cache, "~AudioCache() pre\n"); -	// TODO: Run through all active cacheids and release them/close their files. -  	deinit();  	delete[] nodata; @@ -54,13 +52,13 @@ void AudioCache::init(size_t poolsize)  {  	setAsyncMode(true); -	idManager.init(poolsize); -	eventHandler.start(); +	id_manager.init(poolsize); +	event_handler.start();  }  void AudioCache::deinit()  { -	eventHandler.stop(); +	event_handler.stop();  }  // Invariant: initial_samples_needed < preloaded audio data @@ -76,7 +74,7 @@ sample_t* AudioCache::open(AudioFile* file, size_t initial_samples_needed,  	}  	// Register a new id for this cache session. -	id = idManager.registerID({}); +	id = id_manager.registerID({});  	// If we are out of available ids we get CACHE_DUMMYID  	if(id == CACHE_DUMMYID) @@ -87,9 +85,9 @@ sample_t* AudioCache::open(AudioFile* file, size_t initial_samples_needed,  	}  	// Get the cache_t connected with the registered id. -	cache_t& c = idManager.getCache(id); +	cache_t& c = id_manager.getCache(id); -	c.afile = &eventHandler.openFile(file->filename); +	c.afile = &event_handler.openFile(file->filename);  	c.channel = channel;  	// Next call to 'next()' will read from this point. @@ -124,7 +122,8 @@ sample_t* AudioCache::open(AudioFile* file, size_t initial_samples_needed,  			c.back = new sample_t[CHUNKSIZE(framesize)];  		} -		eventHandler.pushLoadNextEvent(c.afile, c.channel, c.pos, c.back, &c.ready); +		event_handler.pushLoadNextEvent(c.afile, c.channel, c.pos, +		                                c.back, &c.ready);  	}  	return c.preloaded_samples; // return preloaded data @@ -140,7 +139,7 @@ sample_t* AudioCache::next(cacheid_t id, size_t& size)  		return nodata;  	} -	cache_t& c = idManager.getCache(id); +	cache_t& c = id_manager.getCache(id);  	if(c.preloaded_samples)  	{ @@ -172,7 +171,7 @@ sample_t* AudioCache::next(cacheid_t id, size_t& size)  	if(!c.ready)  	{  		// Just return silence. -		++numberOfUnderruns; +		++number_of_underruns;  		return nodata;  	} @@ -193,7 +192,8 @@ sample_t* AudioCache::next(cacheid_t id, size_t& size)  			c.back = new sample_t[CHUNKSIZE(framesize)];  		} -		eventHandler.pushLoadNextEvent(c.afile, c.channel, c.pos, c.back, &c.ready); +		event_handler.pushLoadNextEvent(c.afile, c.channel, c.pos, +		                                c.back, &c.ready);  	}  	// We should always have a front buffer at this point. @@ -209,7 +209,7 @@ bool AudioCache::isReady(cacheid_t id)  		return true;  	} -	cache_t& cache = idManager.getCache(id); +	cache_t& cache = id_manager.getCache(id);  	return cache.ready;  } @@ -220,7 +220,7 @@ void AudioCache::close(cacheid_t id)  		return;  	} -	eventHandler.pushCloseEvent(id); +	event_handler.pushCloseEvent(id);  }  void AudioCache::setFrameSize(size_t framesize) @@ -229,12 +229,10 @@ void AudioCache::setFrameSize(size_t framesize)  	// Make sure the event handler thread is stalled while we set the framesize  	// state. -	std::lock_guard<AudioCacheEventHandler> eventHandlerLock(eventHandler); - -	DEBUG(cache, "A\n"); +	std::lock_guard<AudioCacheEventHandler> event_handler_lock(event_handler);  	// NOTE: Not threaded... -	//std::lock_guard<AudioCacheIDManager> idManagerLock(idManager); +	//std::lock_guard<AudioCacheIDManager> id_manager_lock(id_manager);  	if(framesize > this->framesize)  	{ @@ -249,11 +247,7 @@ void AudioCache::setFrameSize(size_t framesize)  	this->framesize = framesize; -	DEBUG(cache, "B\n"); - -	eventHandler.setChunkSize(CHUNKSIZE(framesize)); - -	DEBUG(cache, "C\n"); +	event_handler.setChunkSize(CHUNKSIZE(framesize));  }  size_t AudioCache::frameSize() const @@ -263,23 +257,20 @@ size_t AudioCache::frameSize() const  void AudioCache::setAsyncMode(bool async)  { -	// TODO: Clean out read queue. -	// TODO: Block until reader thread is idle, otherwise we might screw up the -	// buffers...? -	eventHandler.setThreaded(async); +	event_handler.setThreaded(async);  }  bool AudioCache::asyncMode() const  { -	return eventHandler.getThreaded(); +	return event_handler.getThreaded();  }  size_t AudioCache::getNumberOfUnderruns() const  { -	return numberOfUnderruns; +	return number_of_underruns;  }  void AudioCache::resetNumberOfUnderruns()  { -	numberOfUnderruns = 0; +	number_of_underruns = 0;  } diff --git a/src/audiocache.h b/src/audiocache.h index 06493e6..004fcf8 100644 --- a/src/audiocache.h +++ b/src/audiocache.h @@ -39,29 +39,6 @@  #define CHUNK_MULTIPLIER 16 - -//TODO: -// 1: Move nodata initialisation to init method. -// 2: Make semaphore in thread to block init call until thread has been started. - -//// next -// Pre: preloaded contains 2 x framesize. chunk size is framesize. -// allocate 2 chunks and copy initial_samples_needed to first buffer from -// preloaded data and enough to fill up the second buffer from preloaded -// returns the first buffer and its size in &size. -// get id from "free stack" and store pointers to buffers in id vector. -// event: open sndfile handle (if not already open) and increase refcount - -//// next -// Return which ever buffer is the front, swap them and add event to load the -// next chunk. - -//// close -// decrement file handle refcounter and close file if it is 0. -// free the 2 buffers -// (do not erase from the id vector), push index to -// "free stack" for reuse. -  class AudioCache {  public:  	AudioCache() = default; @@ -129,8 +106,8 @@ public:  private:  	size_t framesize{0};  	sample_t *nodata{nullptr}; -	size_t numberOfUnderruns{0}; +	size_t number_of_underruns{0}; -	AudioCacheIDManager idManager; -	AudioCacheEventHandler eventHandler{idManager}; +	AudioCacheIDManager id_manager; +	AudioCacheEventHandler event_handler{id_manager};  }; diff --git a/src/audiocacheeventhandler.cc b/src/audiocacheeventhandler.cc index 89eb09e..7322785 100644 --- a/src/audiocacheeventhandler.cc +++ b/src/audiocacheeventhandler.cc @@ -52,10 +52,10 @@ public:  	CacheChannels channels;  }; -AudioCacheEventHandler::AudioCacheEventHandler(AudioCacheIDManager& idManager) +AudioCacheEventHandler::AudioCacheEventHandler(AudioCacheIDManager& id_manager)  	// Hack to be able to forward declare CacheEvent:  	: eventqueue(new std::list<CacheEvent>()) -	, idManager(idManager) +	, id_manager(id_manager)  {  } @@ -64,8 +64,8 @@ AudioCacheEventHandler::~AudioCacheEventHandler()  	// Close all ids already enqueued to be closed.  	clearEvents(); -	auto activeIDs = idManager.getActiveIDs(); -	for(auto id : activeIDs) +	auto active_ids = id_manager.getActiveIDs(); +	for(auto id : active_ids)  	{  		handleCloseCache(id);  	} @@ -139,10 +139,10 @@ void AudioCacheEventHandler::pushLoadNextEvent(AudioCacheFile* afile,                                                 size_t pos, sample_t* buffer,                                                 volatile bool* ready)  { -	CacheEvent e; -	e.eventType = EventType::LoadNext; -	e.pos = pos; -	e.afile = afile; +	CacheEvent cache_event; +	cache_event.eventType = EventType::LoadNext; +	cache_event.pos = pos; +	cache_event.afile = afile;  	CacheChannel c;  	c.channel = channel; @@ -151,18 +151,18 @@ void AudioCacheEventHandler::pushLoadNextEvent(AudioCacheFile* afile,  	*ready = false;  	c.ready = ready; -	e.channels.insert(e.channels.end(), c); +	cache_event.channels.insert(cache_event.channels.end(), c); -	pushEvent(e); +	pushEvent(cache_event);  }  void AudioCacheEventHandler::pushCloseEvent(cacheid_t id)  { -	CacheEvent e; -	e.eventType = EventType::Close; -	e.id = id; +	CacheEvent cache_event; +	cache_event.eventType = EventType::Close; +	cache_event.id = id; -	pushEvent(e); +	pushEvent(cache_event);  }  void AudioCacheEventHandler::setChunkSize(size_t chunksize) @@ -185,7 +185,7 @@ void AudioCacheEventHandler::setChunkSize(size_t chunksize)  	DEBUG(cache, "2)\n");  	// Skip all active cacheids and make their buffers point at nodata. -	idManager.disableActive(); +	id_manager.disableActive();  	DEBUG(cache, "3)\n"); @@ -217,38 +217,39 @@ void AudioCacheEventHandler::clearEvents()  	eventqueue->clear();  } -void AudioCacheEventHandler::handleLoadNextEvent(CacheEvent& event) +void AudioCacheEventHandler::handleLoadNextEvent(CacheEvent& cache_event)  { -	event.afile->readChunk(event.channels, event.pos, chunksize); +	cache_event.afile->readChunk(cache_event.channels, cache_event.pos, +	                             chunksize);  } -void AudioCacheEventHandler::handleCloseEvent(CacheEvent& e) +void AudioCacheEventHandler::handleCloseEvent(CacheEvent& cache_event)  {  	std::lock_guard<std::mutex> lock(mutex); -	handleCloseCache(e.id); +	handleCloseCache(cache_event.id);  }  void AudioCacheEventHandler::handleCloseCache(cacheid_t cacheid)  { -	auto& cache = idManager.getCache(cacheid); +	auto& cache = id_manager.getCache(cacheid);  	files.releaseFile(cache.afile->getFilename());  	delete[] cache.front;  	delete[] cache.back; -	idManager.releaseID(cacheid); +	id_manager.releaseID(cacheid);  } -void AudioCacheEventHandler::handleEvent(CacheEvent& e) +void AudioCacheEventHandler::handleEvent(CacheEvent& cache_event)  { -	switch(e.eventType) +	switch(cache_event.eventType)  	{  	case EventType::LoadNext: -		handleLoadNextEvent(e); +		handleLoadNextEvent(cache_event);  		break;  	case EventType::Close: -		handleCloseEvent(e); +		handleCloseEvent(cache_event);  		break;  	}  } @@ -268,25 +269,25 @@ void AudioCacheEventHandler::thread_main()  			continue;  		} -		CacheEvent e = eventqueue->front(); +		CacheEvent cache_event = eventqueue->front();  		eventqueue->pop_front();  		mutex.unlock(); -		// TODO: Skip event if e.pos < cache.pos -		//if(!e.active) +		// TODO: Skip event if cache_event.pos < cache.pos +		//if(!cache_event.active)  		//{  		//	continue;  		//} -		handleEvent(e); +		handleEvent(cache_event);  	}  } -void AudioCacheEventHandler::pushEvent(CacheEvent& event) +void AudioCacheEventHandler::pushEvent(CacheEvent& cache_event)  {  	if(!threaded)  	{ -		handleEvent(event); +		handleEvent(cache_event);  		return;  	} @@ -295,18 +296,19 @@ void AudioCacheEventHandler::pushEvent(CacheEvent& event)  		bool found = false; -		if(event.eventType == EventType::LoadNext) +		if(cache_event.eventType == EventType::LoadNext)  		{ -			for(auto& queuedEvent : *eventqueue) +			for(auto& queued_event : *eventqueue)  			{ -				if((queuedEvent.eventType == EventType::LoadNext) && -				   (event.afile->getFilename() == queuedEvent.afile->getFilename()) && -				   (event.pos == queuedEvent.pos)) +				if((queued_event.eventType == EventType::LoadNext) && +				   (cache_event.afile->getFilename() == +				    queued_event.afile->getFilename()) && +				   (cache_event.pos == queued_event.pos))  				{  					// Append channel and buffer to the existing event. -					queuedEvent.channels.insert(queuedEvent.channels.end(), -					                            event.channels.begin(), -					                            event.channels.end()); +					queued_event.channels.insert(queued_event.channels.end(), +					                             cache_event.channels.begin(), +					                             cache_event.channels.end());  					found = true;  					break;  				} @@ -316,7 +318,7 @@ void AudioCacheEventHandler::pushEvent(CacheEvent& event)  		if(!found)  		{  			// The event was not already on the list, create a new one. -			eventqueue->push_back(event); +			eventqueue->push_back(cache_event);  		}  	} diff --git a/src/audiocacheeventhandler.h b/src/audiocacheeventhandler.h index 733c80e..daf7bb9 100644 --- a/src/audiocacheeventhandler.h +++ b/src/audiocacheeventhandler.h @@ -43,7 +43,7 @@ class AudioCacheEventHandler  	: protected Thread  {  public: -	AudioCacheEventHandler(AudioCacheIDManager& idManager); +	AudioCacheEventHandler(AudioCacheIDManager& id_manager);  	~AudioCacheEventHandler();  	//! Start event handler thread. @@ -80,22 +80,26 @@ public:  	AudioCacheFile& openFile(const std::string& filename);  protected: -	AudioCacheFiles files; +	void clearEvents(); -	std::mutex mutex; +	void handleLoadNextEvent(CacheEvent& cache_event); -	void clearEvents(); +	//! Lock the mutex and calls handleCloseCache +	void handleCloseEvent(CacheEvent& cache_event); -	void handleLoadNextEvent(CacheEvent& e); -	void handleCloseEvent(CacheEvent& e); +	//! Close decrease the file ref and release the cache id.  	void handleCloseCache(cacheid_t cacheid); -	void handleEvent(CacheEvent& e); +	void handleEvent(CacheEvent& cache_event);  	// From Thread  	void thread_main() override; -	void pushEvent(CacheEvent& e); +	void pushEvent(CacheEvent& cache_event); + +	AudioCacheFiles files; + +	std::mutex mutex;  	std::list<CacheEvent>* eventqueue; @@ -104,7 +108,7 @@ protected:  	Semaphore sem_run;  	bool running{false}; -	AudioCacheIDManager& idManager; +	AudioCacheIDManager& id_manager;  	size_t chunksize{1024};  }; diff --git a/src/audiocachefile.cc b/src/audiocachefile.cc index 039a46d..916ecb7 100644 --- a/src/audiocachefile.cc +++ b/src/audiocachefile.cc @@ -88,7 +88,8 @@ void AudioCacheFile::readChunk(const CacheChannels& channels,  	if((int)pos > sf_info.frames)  	{ -		printf("pos (%d) > sf_info.frames (%d)\n", (int)pos, (int)sf_info.frames); +		WARN(cache, "pos (%d) > sf_info.frames (%d)\n", +		     (int)pos, (int)sf_info.frames);  		return;  	} diff --git a/src/audiocachefile.h b/src/audiocachefile.h index 2f988e2..9910563 100644 --- a/src/audiocachefile.h +++ b/src/audiocachefile.h @@ -29,20 +29,21 @@  #include <string>  #include <list>  #include <map> +  #include <mutex> +#include "mutex.h"  #include <sndfile.h>  #include <audiotypes.h> -#include "mutex.h" - +//! Channel data container in the cache world.  class CacheChannel {  public: -	size_t channel; -	sample_t* samples; -	size_t num_samples; -	volatile bool* ready; +	size_t channel; //< Channel number +	sample_t* samples; //< Sample buffer pointer. +	size_t num_samples; //< Number of samples in the sample buffer +	volatile bool* ready; //< Is set to tru when the loading is done.  };  using CacheChannels = std::list<CacheChannel>; diff --git a/src/audiocacheidmanager.cc b/src/audiocacheidmanager.cc index 87aaa41..a3e16a0 100644 --- a/src/audiocacheidmanager.cc +++ b/src/audiocacheidmanager.cc @@ -29,10 +29,6 @@  #include <limits>  #include <assert.h> -AudioCacheIDManager::AudioCacheIDManager() -{ -} -  AudioCacheIDManager::~AudioCacheIDManager()  {  	assert(availableids.size() == id2cache.size()); // All ids should be released. @@ -114,15 +110,15 @@ void AudioCacheIDManager::disableActive()  std::vector<cacheid_t> AudioCacheIDManager::getActiveIDs()  { -	std::vector<cacheid_t> activeIDs; +	std::vector<cacheid_t> active_ids;  	for(auto& cache : id2cache)  	{  		if(cache.id != CACHE_NOID)  		{ -			activeIDs.push_back(cache.id); +			active_ids.push_back(cache.id);  		}  	} -	return activeIDs; +	return active_ids;  } diff --git a/src/audiocacheidmanager.h b/src/audiocacheidmanager.h index 1975973..70f7ce1 100644 --- a/src/audiocacheidmanager.h +++ b/src/audiocacheidmanager.h @@ -60,21 +60,25 @@ typedef struct {  class AudioCacheIDManager {  	friend class AudioCacheEventHandler;  public: -	AudioCacheIDManager(); +	AudioCacheIDManager() = default;  	~AudioCacheIDManager(); +	//! Initialise id lists with specified capacity. +	//! Exceeding this capacity will result in CACHE_DUMMYID on calls to +	//! registerID.  	void init(unsigned int capacity); -	// #thread safe -	// #hard real-time safe +	//! Get the cache object connected with the specified cacheid. +	//! Note: The cacheid MUST be active.  	cache_t& getCache(cacheid_t id); -	// Thread safe -	// Real-time safe +	//! Reserve a new cache object and return its cacheid. +	//! The contents of the supplied cache object will be copied to the new +	//! cache object.  	cacheid_t registerID(const cache_t& cache); -	// Thread safe -	// Real-time safe +	//! Release a cache object and its correseponding cacheid. +	//! After this call the cacheid can no longer be used.  	void releaseID(cacheid_t id);  protected: diff --git a/test/audiocacheeventhandlertest.cc b/test/audiocacheeventhandlertest.cc index a8c3777..5f30d2e 100644 --- a/test/audiocacheeventhandlertest.cc +++ b/test/audiocacheeventhandlertest.cc @@ -28,14 +28,8 @@  #include <audiocacheeventhandler.h> -class TestableAudioCacheEventHandler -	: public AudioCacheEventHandler -{ -public: -	 -}; - -class AudioCacheEventHandlerTest : public CppUnit::TestFixture +class AudioCacheEventHandlerTest +	: public CppUnit::TestFixture  {  	CPPUNIT_TEST_SUITE(AudioCacheEventHandlerTest);  	CPPUNIT_TEST(threadedTest); @@ -47,10 +41,10 @@ public:  	void threadedTest()  	{ -		AudioCacheIDManager idManager; -		idManager.init(10); +		AudioCacheIDManager id_manager; +		id_manager.init(10); -		AudioCacheEventHandler eventHandler(idManager); +		AudioCacheEventHandler event_handler(id_manager);  	}  }; diff --git a/test/audiocachefiletest.cc b/test/audiocachefiletest.cc index 4945ade..98b7ab5 100644 --- a/test/audiocachefiletest.cc +++ b/test/audiocachefiletest.cc @@ -31,7 +31,8 @@  #include <audiocachefile.h>  #include <audiofile.h> -class TestableAudioCacheFiles : public AudioCacheFiles +class TestableAudioCacheFiles +	: public AudioCacheFiles  {  public:  	//CacheAudioFile& getAudioFile(const std::string& filename); @@ -47,7 +48,8 @@ public:  	}  }; -class AudioCacheFileTest : public CppUnit::TestFixture +class AudioCacheFileTest +	: public CppUnit::TestFixture  {  	CPPUNIT_TEST_SUITE(AudioCacheFileTest);  	CPPUNIT_TEST(refTest); @@ -78,16 +80,16 @@ public:  		CPPUNIT_ASSERT_EQUAL(-1, audiofiles.getRef(filename));  	} -	void readTestHelper(size_t bufferSize) +	void readTestHelper(size_t buffer_size)  	{ -		printf("Test buffer size: %d samples\n", (int)bufferSize); +		printf("Test buffer size: %d samples\n", (int)buffer_size);  		std::string filename = "kit/ride-multi-channel.wav"; -		AudioFile* refFile[13]; +		AudioFile* ref_file[13];  		for(size_t c = 0; c < 13; ++c)  		{ -			refFile[c] = new AudioFile(filename, c); -			refFile[c]->load(); +			ref_file[c] = new AudioFile(filename, c); +			ref_file[c]->load();  		}  		AudioCacheFile file(filename); @@ -96,11 +98,11 @@ public:  		CacheChannels channels; -		sample_t samples[13][bufferSize]; +		sample_t samples[13][buffer_size];  		volatile bool ready[13];  		for(size_t c = 0; c < 13; ++c)  		{ -			for(size_t i = 0; i < bufferSize; ++i) +			for(size_t i = 0; i < buffer_size; ++i)  			{  				samples[c][i] = 42;  			} @@ -109,30 +111,30 @@ public:  				{  					c, // channel  					samples[c], // samples -					bufferSize, // max_num_samples +					buffer_size, // max_num_samples  					&ready[c] // ready  				}  			);  		} -		for(size_t offset = 0; offset < file.getSize(); offset += bufferSize) +		for(size_t offset = 0; offset < file.getSize(); offset += buffer_size)  		{  			for(size_t c = 0; c < 13; ++c)  			{  				ready[c] = false;  			} -			size_t readSize = file.getSize() - offset; -			if(readSize > bufferSize) +			size_t read_size = file.getSize() - offset; +			if(read_size > buffer_size)  			{ -				readSize = bufferSize; +				read_size = buffer_size;  			}  			else  			{ -				printf("Last read: %d samples\n", (int)readSize); +				printf("Last read: %d samples\n", (int)read_size);  			} -			file.readChunk(channels, offset, readSize); +			file.readChunk(channels, offset, read_size);  			for(size_t c = 0; c < 13; ++c)  			{ @@ -142,9 +144,9 @@ public:  			sample_t diff[13] = {0.0};  			for(size_t c = 0; c < 13; ++c)  			{ -				for(size_t i = 0; i < readSize; ++i) +				for(size_t i = 0; i < read_size; ++i)  				{ -					diff[c] += abs(refFile[c]->data[i + offset] - samples[c][i]); +					diff[c] += abs(ref_file[c]->data[i + offset] - samples[c][i]);  				}  			} @@ -156,34 +158,34 @@ public:  		for(size_t c = 0; c < 13; ++c)  		{ -			delete refFile[c]; +			delete ref_file[c];  		}  	}  	void readTest()  	{  		// Exhaustive test for 1...64 -		for(size_t bufferSize = 1; bufferSize < 64; ++bufferSize) +		for(size_t buffer_size = 1; buffer_size < 64; ++buffer_size)  		{ -			readTestHelper(bufferSize); +			readTestHelper(buffer_size);  		}  		// Binary test for 64 .. 4096 -		for(size_t bufferSize = 64; bufferSize < 4096; bufferSize *= 2) +		for(size_t buffer_size = 64; buffer_size < 4096; buffer_size *= 2)  		{ -			readTestHelper(bufferSize); +			readTestHelper(buffer_size);  		}  		// And some sporadic tests for some "wierd" sizes. -		for(size_t bufferSize = 65; bufferSize < 4096; bufferSize *= 1.1) +		for(size_t buffer_size = 65; buffer_size < 4096; buffer_size *= 1.1)  		{ -			readTestHelper(bufferSize); +			readTestHelper(buffer_size);  		}  	}  	void noFileTest()  	{ -		size_t bufferSize = 64; +		size_t buffer_size = 64;  		std::string filename = "kits/no-such-file.wav";  		AudioCacheFile file(filename); @@ -193,11 +195,11 @@ public:  		CacheChannels channels; -		sample_t samples[13][bufferSize]; +		sample_t samples[13][buffer_size];  		volatile bool ready[13];  		for(size_t c = 0; c < 13; ++c)  		{ -			for(size_t i = 0; i < bufferSize; ++i) +			for(size_t i = 0; i < buffer_size; ++i)  			{  				samples[c][i] = 42.0f;  			} @@ -206,7 +208,7 @@ public:  				{  					c, // channel  					samples[c], // samples -					bufferSize, // max_num_samples +					buffer_size, // max_num_samples  					&ready[c] // ready  				}  			); @@ -217,7 +219,7 @@ public:  			ready[c] = false;  		} -		file.readChunk(channels, 0, bufferSize); +		file.readChunk(channels, 0, buffer_size);  		for(size_t c = 0; c < 13; ++c)  		{ @@ -226,7 +228,7 @@ public:  		for(size_t c = 0; c < 13; ++c)  		{ -			for(size_t i = 0; i < bufferSize; ++i) +			for(size_t i = 0; i < buffer_size; ++i)  			{  				CPPUNIT_ASSERT_EQUAL(42.0f, samples[c][i]);  			} diff --git a/test/audiocacheidmanagertest.cc b/test/audiocacheidmanagertest.cc index ae8bfbc..a9cc878 100644 --- a/test/audiocacheidmanagertest.cc +++ b/test/audiocacheidmanagertest.cc @@ -28,7 +28,9 @@  #include <audiocacheidmanager.h> -class TestableAudioCacheIDManager : public AudioCacheIDManager { +class TestableAudioCacheIDManager +	: public AudioCacheIDManager +{  public:  	int getAvailableIDs()  	{ @@ -36,7 +38,8 @@ public:  	}  }; -class AudioCacheIDManagerTest : public CppUnit::TestFixture +class AudioCacheIDManagerTest +	: public CppUnit::TestFixture  {  	CPPUNIT_TEST_SUITE(AudioCacheIDManagerTest);  	CPPUNIT_TEST(registerReleaseTest); diff --git a/test/audiocachetest.cc b/test/audiocachetest.cc index 157cc03..5db5940 100644 --- a/test/audiocachetest.cc +++ b/test/audiocachetest.cc @@ -32,7 +32,8 @@  #define FRAMESIZE 64 -class AudioCacheTest : public CppUnit::TestFixture +class AudioCacheTest +	: public CppUnit::TestFixture  {  	CPPUNIT_TEST_SUITE(AudioCacheTest);  	CPPUNIT_TEST(singleChannelNonThreaded); @@ -54,22 +55,22 @@ public:  	                int framesize)  	{  		// Reference file: -		AudioFile audioFileRef(filename, channel); -		printf("audioFileRef.load\n"); -		audioFileRef.load(ALL_SAMPLES); +		AudioFile audio_file_ref(filename, channel); +		printf("audio_file_ref.load\n"); +		audio_file_ref.load(ALL_SAMPLES);  		// Input file: -		AudioFile audioFile(filename, channel); -		printf("audioFile.load\n"); -		audioFile.load(4096); +		AudioFile audio_file(filename, channel); +		printf("audio_file.load\n"); +		audio_file.load(4096); -		AudioCache audioCache; -		printf("audioCache.init\n"); -		audioCache.init(100); -		audioCache.setAsyncMode(threaded); +		AudioCache audio_cache; +		printf("audio_cache.init\n"); +		audio_cache.init(100); +		audio_cache.setAsyncMode(threaded);  		// Set initial (upper limit) framesize -		audioCache.setFrameSize(framesize); +		audio_cache.setFrameSize(framesize);  		cacheid_t id; @@ -80,25 +81,25 @@ public:  			printf("open: initial_samples_needed: %d\n", (int)initial_samples_needed);  			sample_t *samples = -				audioCache.open(&audioFile, initial_samples_needed, channel, id); +				audio_cache.open(&audio_file, initial_samples_needed, channel, id);  			size_t size = initial_samples_needed;  			size_t offset = 0;  			// Test pre cache:  			for(size_t i = 0; i < size; ++i)  			{ -				CPPUNIT_ASSERT_EQUAL(audioFileRef.data[offset], samples[i]); +				CPPUNIT_ASSERT_EQUAL(audio_file_ref.data[offset], samples[i]);  				++offset;  			}  			// Test the rest -			while(offset < audioFileRef.size) +			while(offset < audio_file_ref.size)  			{  				if(threaded)  				{  					// Wait until we are finished reading  					int timeout = 1000; -					while(!audioCache.isReady(id)) +					while(!audio_cache.isReady(id))  					{  						usleep(1000);  						if(--timeout == 0) @@ -108,26 +109,26 @@ public:  					}  				} -				samples = audioCache.next(id, size); +				samples = audio_cache.next(id, size); -				CPPUNIT_ASSERT_EQUAL(0, (int)audioCache.getNumberOfUnderruns()); +				CPPUNIT_ASSERT_EQUAL(0, (int)audio_cache.getNumberOfUnderruns()); -				for(size_t i = 0; (i < size) && (offset < audioFileRef.size); ++i) +				for(size_t i = 0; (i < size) && (offset < audio_file_ref.size); ++i)  				{ -					if(audioFileRef.data[offset] != samples[i]) +					if(audio_file_ref.data[offset] != samples[i])  					{  						printf("-----> offset: %d, size: %d, diff: %d,"  						       " i: %d, size: %d, block-diff: %d\n", -						       (int)offset, (int)audioFileRef.size, -						       (int)(audioFileRef.size - offset), +						       (int)offset, (int)audio_file_ref.size, +						       (int)(audio_file_ref.size - offset),  						       (int)i, (int)size, (int)(size - i));  					} -					CPPUNIT_ASSERT_EQUAL(audioFileRef.data[offset], samples[i]); +					CPPUNIT_ASSERT_EQUAL(audio_file_ref.data[offset], samples[i]);  					++offset;  				}  			} -			audioCache.close(id); +			audio_cache.close(id);  		}  		printf("done\n");  | 
