summaryrefslogtreecommitdiffstats
path: root/src/engine/EventBuffer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/EventBuffer.hpp')
-rw-r--r--src/engine/EventBuffer.hpp86
1 files changed, 39 insertions, 47 deletions
diff --git a/src/engine/EventBuffer.hpp b/src/engine/EventBuffer.hpp
index 5da1f131..7c2d9d20 100644
--- a/src/engine/EventBuffer.hpp
+++ b/src/engine/EventBuffer.hpp
@@ -20,8 +20,9 @@
#include "lv2ext/lv2_event.h"
#include "lv2ext/lv2_event_helpers.h"
-#include "Buffer.hpp"
#include "interface/DataType.hpp"
+#include "Buffer.hpp"
+#include "LV2EventBuffer.hpp"
namespace Ingen {
@@ -30,70 +31,61 @@ class EventBuffer : public Buffer {
public:
EventBuffer(size_t capacity);
- ~EventBuffer();
-
void prepare_read(FrameTime start, SampleCount nframes);
void prepare_write(FrameTime start, SampleCount nframes);
bool join(Buffer* buf);
void unjoin();
+
+ void* raw_data() { return _buf; }
+ const void* raw_data() const { return _buf; }
- inline uint32_t this_nframes() const { return _this_nframes; }
- inline uint32_t event_count() const { return _buf->event_count; }
+ void copy(const Buffer* src, size_t start_sample, size_t end_sample);
+
+ bool merge(const EventBuffer& a, const EventBuffer& b);
- inline void* raw_data() { return _buf; }
- inline const void* raw_data() const { return _buf; }
+ bool increment() const;
+ bool is_valid() const;
- inline LV2_Event_Buffer* local_data() { return _local_buf; }
- inline const LV2_Event_Buffer* local_data() const { return _local_buf; }
+ inline uint32_t latest_frames() const { return _buf->latest_frames(); }
+ inline uint32_t latest_subframes() const { return _buf->latest_subframes(); }
+ inline uint32_t this_nframes() const { return _this_nframes; }
+ inline uint32_t event_count() const { return _buf->event_count(); }
- inline LV2_Event_Buffer* data() { return _buf; }
- inline const LV2_Event_Buffer* data() const { return _buf; }
+ inline void rewind() const { _buf->rewind(); }
- void copy(const Buffer* src, size_t start_sample, size_t end_sample);
-
- inline void rewind() const { lv2_event_begin(&_iter, _buf); }
inline void clear() { reset(_this_nframes); }
+
inline void reset(SampleCount nframes) {
_this_nframes = nframes;
- _latest_frames = 0;
- _latest_subframes = 0;
- _buf->event_count = 0;
- _buf->size = 0;
- rewind();
+ _buf->reset();
+ }
+
+ inline bool get_event(uint32_t* frames,
+ uint32_t* subframes,
+ uint16_t* type,
+ uint16_t* size,
+ uint8_t** data) const {
+ return _buf->get_event(frames, subframes, type, size, data);
}
- bool increment() const;
- bool is_valid() const;
-
- uint32_t latest_frames() const { return _latest_frames; }
- uint32_t latest_subframes() const { return _latest_subframes; }
-
- bool get_event(uint32_t* frames,
- uint32_t* subframes,
- uint16_t* type,
- uint16_t* size,
- uint8_t** data) const;
-
- bool append(uint32_t frames,
- uint32_t subframes,
- uint16_t type,
- uint16_t size,
- const uint8_t* data);
-
- bool append(const LV2_Event_Buffer* buf);
+ inline bool append(uint32_t frames,
+ uint32_t subframes,
+ uint16_t type,
+ uint16_t size,
+ const uint8_t* data) {
+ return _buf->append(frames, subframes, type, size, data);
+ }
- bool merge(const EventBuffer& a, const EventBuffer& b);
+ inline bool append(const LV2_Event_Buffer* buf) {
+ return _buf->append(buf);
+ }
private:
- LV2_Event_Buffer* _buf; ///< Contents (maybe belong to _joined_buf)
- LV2_Event_Buffer* _local_buf; ///< Local contents
-
- mutable LV2_Event_Iterator _iter; ///< Iterator into _buf
-
- uint32_t _latest_frames; ///< Latest time of all events (frames)
- uint32_t _latest_subframes; ///< Latest time of all events (subframes)
- uint32_t _this_nframes; ///< Current cycle nframes
+ LV2EventBuffer* _buf; ///< Contents (maybe belong to _joined_buf)
+ LV2EventBuffer* _local_buf; ///< Local contents
+ mutable LV2_Event_Iterator _iter; ///< Iterator into _buf
+ uint32_t _this_nframes; ///< Current cycle nframes
};