46 lines · 1.4 KB · C
RawDownload
// RTcmix - Copyright (C) 2005  The RTcmix Development Team// See ``AUTHORS'' for a list of contributors. See ``LICENSE'' for// the license to this software and for a DISCLAIMER OF ALL WARRANTIES. // Obucket maintains a private buffer of floats.  Add to the buffer one float// at a time.  When Obucket sees that the buffer is full, it invokes a callback// function with the buffer, its length and a user-supplied context.  This// is useful for instruments that must process in blocks whose size has no// clear and predictable relationship to the run() buffer size (for example,// instruments that do FFT-based processing).//// JGG, 6/1/05 class Obucket {public:	typedef void (*ProcessFunction)(const float *buf, const int len,	                                                  void *context);	Obucket(int len, ProcessFunction callback, void *context);	~Obucket();	inline bool drop(float item);		// call this to drop <item> in bucket	void flush(float defaultval = 0.0f);	void clear(float defaultval = 0.0f); private:	int _len;	int _index;	ProcessFunction _callback;	void *_context;	float *_buf;};  // Store <item> into the buffer; if full, invoke callback and return true;// otherwise return false. inline bool Obucket::drop(float item){	_buf[_index++] = item;	if (_index == _len) {		(*_callback)(_buf, _len, _context);		_index = 0;		return true;	}	return false;} 

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t