Rewrote MidiRingBuffer to more efficiently pack data (flat pack stamps, sizes, and event data into a single buffer).

Eliminate a double-copy on MIDI playback (MidiRingBuffer -> MidiBuffer).
Various MIDI diskstream/source/SMF fixes (only write when appropriate, handle transport locates, etc).
Fix MIDI rec region size/offset problems.
Code cleanups.


git-svn-id: svn://localhost/ardour2/trunk@1934 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2007-05-31 21:37:20 +00:00
parent 52a8242a11
commit 0f2f4d8efc
19 changed files with 442 additions and 328 deletions

View file

@ -20,7 +20,6 @@
#define __ardour_midi_streamview_h__
#include <list>
#include <map>
#include <cmath>
#include <ardour/location.h>
@ -62,10 +61,10 @@ class MidiStreamView : public StreamView
private:
void setup_rec_box ();
void rec_data_range_ready (jack_nframes_t start, jack_nframes_t cnt, boost::shared_ptr<ARDOUR::Source> src);
void update_rec_regions ();
void rec_data_range_ready (boost::shared_ptr<ARDOUR::MidiBuffer> data, jack_nframes_t start, jack_nframes_t dur, boost::weak_ptr<ARDOUR::Source> src);
void update_rec_regions (boost::shared_ptr<ARDOUR::MidiBuffer> data, jack_nframes_t start, jack_nframes_t dur);
void add_region_view_internal (boost::shared_ptr<ARDOUR::Region>, bool wait_for_waves);
RegionView* add_region_view_internal (boost::shared_ptr<ARDOUR::Region>, bool wait_for_waves);
void redisplay_diskstream ();