change MidiPlaylist::dump() into ::render(); change type of initial argument
This commit is contained in:
@@ -48,6 +48,7 @@ namespace ARDOUR
|
||||
class BeatsSamplesConverter;
|
||||
class MidiChannelFilter;
|
||||
class MidiRegion;
|
||||
class RTMidiBuffer;
|
||||
class Session;
|
||||
class Source;
|
||||
|
||||
@@ -88,7 +89,7 @@ public:
|
||||
uint32_t chan_n = 0,
|
||||
MidiChannelFilter* filter = NULL);
|
||||
|
||||
void dump (Evoral::EventSink<samplepos_t>&, MidiChannelFilter*);
|
||||
void render (RTMidiBuffer&, MidiChannelFilter*);
|
||||
|
||||
int set_state (const XMLNode&, int version);
|
||||
|
||||
|
||||
@@ -118,10 +118,10 @@ class LIBARDOUR_API MidiRegion : public Region
|
||||
|
||||
void clobber_sources (boost::shared_ptr<MidiSource> source);
|
||||
|
||||
int dump_to (Evoral::EventSink<samplepos_t>& dst,
|
||||
uint32_t chan_n,
|
||||
NoteMode mode,
|
||||
MidiChannelFilter* filter) const;
|
||||
int render (Evoral::EventSink<samplepos_t>& dst,
|
||||
uint32_t chan_n,
|
||||
NoteMode mode,
|
||||
MidiChannelFilter* filter) const;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
#include <map>
|
||||
|
||||
#include <glibmm/threads.h>
|
||||
|
||||
#include "evoral/Event.hpp"
|
||||
#include "evoral/EventSink.hpp"
|
||||
#include "ardour/types.h"
|
||||
@@ -82,6 +84,8 @@ class LIBARDOUR_API RTMidiBuffer : public Evoral::EventSink<samplepos_t>
|
||||
uint32_t _pool_size;
|
||||
uint32_t _pool_capacity;
|
||||
uint8_t* _pool;
|
||||
|
||||
mutable Glib::Threads::RWLock _lock;
|
||||
};
|
||||
|
||||
} // namespace ARDOUR
|
||||
|
||||
@@ -516,9 +516,11 @@ DiskReader::overwrite_existing_buffers ()
|
||||
|
||||
if (_playlists[DataType::MIDI]) {
|
||||
|
||||
minsert.reset(); minsert.start();
|
||||
_mbuf.clear(); midi_playlist()->dump (_mbuf, 0);
|
||||
minsert.update(); cerr << "Reading " << name() << " took " << minsert.elapsed() << " microseconds, final size = " << _mbuf.size() << endl;
|
||||
minsert.reset();
|
||||
minsert.start();
|
||||
midi_playlist()->render (_mbuf, 0);
|
||||
minsert.update();
|
||||
cerr << "Reading " << name() << " took " << minsert.elapsed() << " microseconds, final size = " << _mbuf.size() << endl;
|
||||
_mbuf.dump (40);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "ardour/midi_source.h"
|
||||
#include "ardour/midi_state_tracker.h"
|
||||
#include "ardour/region_factory.h"
|
||||
#include "ardour/rt_midibuffer.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/tempo.h"
|
||||
#include "ardour/types.h"
|
||||
@@ -491,7 +492,7 @@ MidiPlaylist::contained_automation()
|
||||
}
|
||||
|
||||
void
|
||||
MidiPlaylist::dump (Evoral::EventSink<samplepos_t>& dst, MidiChannelFilter* filter)
|
||||
MidiPlaylist::render (RTMidiBuffer& dst, MidiChannelFilter* filter)
|
||||
{
|
||||
typedef pair<MidiStateTracker*,samplepos_t> TrackerInfo;
|
||||
|
||||
@@ -516,7 +517,13 @@ MidiPlaylist::dump (Evoral::EventSink<samplepos_t>& dst, MidiChannelFilter* filt
|
||||
we read into a temporarily list, sort it, then write that to dst.
|
||||
*/
|
||||
Evoral::EventList<samplepos_t> evlist;
|
||||
Evoral::EventSink<samplepos_t>& tgt = (regs.size() == 1) ? dst : evlist;
|
||||
Evoral::EventSink<samplepos_t>* tgt;
|
||||
|
||||
if (regs.size() == 1) {
|
||||
tgt = &dst;
|
||||
} else {
|
||||
tgt = &evlist;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 regions to read, direct: %2\n", regs.size(), (regs.size() == 1)));
|
||||
|
||||
@@ -529,7 +536,7 @@ MidiPlaylist::dump (Evoral::EventSink<samplepos_t>& dst, MidiChannelFilter* filt
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("dump from %1 at %2\n", mr->name()));
|
||||
mr->dump_to (tgt, 0, _note_mode, filter);
|
||||
mr->render (*tgt, 0, _note_mode, filter);
|
||||
}
|
||||
|
||||
if (!evlist.empty()) {
|
||||
|
||||
@@ -483,10 +483,10 @@ MidiRegion::_read_at (const SourceList& /*srcs*/,
|
||||
|
||||
|
||||
int
|
||||
MidiRegion::dump_to (Evoral::EventSink<samplepos_t>& dst,
|
||||
uint32_t chan_n,
|
||||
NoteMode mode,
|
||||
MidiChannelFilter* filter) const
|
||||
MidiRegion::render (Evoral::EventSink<samplepos_t>& dst,
|
||||
uint32_t chan_n,
|
||||
NoteMode mode,
|
||||
MidiChannelFilter* filter) const
|
||||
{
|
||||
sampleoffset_t internal_offset = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user