ardour
Public Member Functions | Private Attributes | List of all members
ARDOUR::MidiRingBuffer< T > Singleton Reference

#include <midi_diskstream.h>

Inheritance diagram for ARDOUR::MidiRingBuffer< T >:
ARDOUR::EventRingBuffer< T > PBD::RingBufferNPT< uint8_t > Evoral::EventSink< T >

Public Member Functions

 MidiRingBuffer (size_t size)
 
bool read_prefix (T *time, Evoral::EventType *type, uint32_t *size)
 
bool read_contents (uint32_t size, uint8_t *buf)
 
size_t read (MidiBuffer &dst, framepos_t start, framepos_t end, framecnt_t offset=0, bool stop_on_overflow_in_destination=false)
 
size_t skip_to (framepos_t start)
 
void dump (std::ostream &dst)
 
void flush (framepos_t start, framepos_t end)
 
void reset_tracker ()
 
void resolve_tracker (MidiBuffer &dst, framepos_t)
 
void resolve_tracker (Evoral::EventSink< framepos_t > &dst, framepos_t)
 
- Public Member Functions inherited from ARDOUR::EventRingBuffer< T >
 EventRingBuffer (size_t capacity)
 
size_t capacity () const
 
bool peek (uint8_t *, size_t size)
 
uint32_t write (Ttime, Evoral::EventType type, uint32_t size, const uint8_t *buf)
 
bool read (T *time, Evoral::EventType *type, uint32_t *size, uint8_t *buf)
 
- Public Member Functions inherited from PBD::RingBufferNPT< uint8_t >
 RingBufferNPT (size_t sz)
 
virtual ~RingBufferNPT ()
 
void reset ()
 
void set (size_t r, size_t w)
 
size_t read (uint8_t *dest, size_t cnt)
 
size_t write (const uint8_t *src, size_t cnt)
 
void get_read_vector (rw_vector *)
 
void get_write_vector (rw_vector *)
 
void decrement_read_ptr (size_t cnt)
 
void increment_read_ptr (size_t cnt)
 
void increment_write_ptr (size_t cnt)
 
size_t write_space ()
 
size_t read_space ()
 
uint8_t * buffer ()
 
size_t get_write_ptr () const
 
size_t get_read_ptr () const
 
size_t bufsize () const
 
- Public Member Functions inherited from Evoral::EventSink< T >
virtual ~EventSink ()
 

Private Attributes

MidiStateTracker _tracker
 

Additional Inherited Members

- Protected Attributes inherited from PBD::RingBufferNPT< uint8_t >
uint8_t * buf
 
size_t size
 
gint write_ptr
 
gint read_ptr
 

Detailed Description

template<typename T>
singleton ARDOUR::MidiRingBuffer< T >

A RingBuffer for (MIDI) events.

This is simply a wrapper around a raw ringbuffer which writes/reads events as flat placked blobs. The buffer looks like this:

[timestamp][type][size][size bytes of raw MIDI][timestamp][type]size

Definition at line 57 of file midi_diskstream.h.

Constructor & Destructor Documentation

template<typename T>
ARDOUR::MidiRingBuffer< T >::MidiRingBuffer ( size_t  size)
inline
Parameters
sizeSize in bytes.

Definition at line 46 of file midi_ring_buffer.h.

Member Function Documentation

template<typename T>
void ARDOUR::MidiRingBuffer< T >::dump ( std::ostream &  dst)

Definition at line 228 of file midi_ring_buffer.cc.

template<typename T >
void ARDOUR::MidiRingBuffer< T >::flush ( framepos_t  start,
framepos_t  end 
)

Definition at line 198 of file midi_ring_buffer.cc.

template<typename T >
size_t ARDOUR::MidiRingBuffer< T >::read ( MidiBuffer dst,
framepos_t  start,
framepos_t  end,
framecnt_t  offset = 0,
bool  stop_on_overflow_in_dst = false 
)

Read a block of MIDI events from this buffer into a MidiBuffer.

Timestamps of events returned are relative to start (i.e. event with stamp 0 occurred at start), with offset added.

Definition at line 40 of file midi_ring_buffer.cc.

template<typename T >
bool ARDOUR::MidiRingBuffer< T >::read_contents ( uint32_t  size,
uint8_t *  buf 
)
inline

Read the content of an event. This call MUST be immediately preceded by a call to read_prefix (or the returned even will be garbage).

Definition at line 94 of file midi_ring_buffer.h.

template<typename T>
bool ARDOUR::MidiRingBuffer< T >::read_prefix ( T *  time,
Evoral::EventType type,
uint32_t *  size 
)
inline

Read the time and size of an event. This call MUST be immediately proceeded by a call to read_contents (or the read pointer will be garbage).

Definition at line 71 of file midi_ring_buffer.h.

template<typename T >
void ARDOUR::MidiRingBuffer< T >::reset_tracker ( )

Definition at line 306 of file midi_ring_buffer.cc.

template<typename T >
void ARDOUR::MidiRingBuffer< T >::resolve_tracker ( MidiBuffer dst,
framepos_t  t 
)

Definition at line 313 of file midi_ring_buffer.cc.

template<typename T >
void ARDOUR::MidiRingBuffer< T >::resolve_tracker ( Evoral::EventSink< framepos_t > &  dst,
framepos_t  t 
)

Definition at line 320 of file midi_ring_buffer.cc.

template<typename T >
size_t ARDOUR::MidiRingBuffer< T >::skip_to ( framepos_t  start)

Definition at line 133 of file midi_ring_buffer.cc.

Member Data Documentation

template<typename T>
MidiStateTracker ARDOUR::MidiRingBuffer< T >::_tracker
private

Definition at line 62 of file midi_ring_buffer.h.


The documentation for this singleton was generated from the following files: