-AudioPlaylistSource::AudioPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<AudioPlaylist> p,
+AudioPlaylistSource::AudioPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<AudioPlaylist> p,
uint32_t chn, frameoffset_t begin, framecnt_t len, Source::Flag flags)
: Source (s, DataType::AUDIO, name)
, PlaylistSource (s, orig, name, p, DataType::AUDIO, begin, len, flags)
uint32_t chn, frameoffset_t begin, framecnt_t len, Source::Flag flags)
: Source (s, DataType::AUDIO, name)
, PlaylistSource (s, orig, name, p, DataType::AUDIO, begin, len, flags)
if (set_state (node, Stateful::loading_state_version, false)) {
throw failed_constructor ();
}
if (set_state (node, Stateful::loading_state_version, false)) {
throw failed_constructor ();
}
PlaylistSource::set_state (node, version) ||
AudioSource::set_state (node, version)) {
return -1;
PlaylistSource::set_state (node, version) ||
AudioSource::set_state (node, version)) {
return -1;
AudioSource::_length = extent.second - extent.first;
if ((prop = node.property (X_("channel"))) == 0) {
AudioSource::_length = extent.second - extent.first;
if ((prop = node.property (X_("channel"))) == 0) {
AudioPlaylistSource::read_unlocked (Sample* dst, framepos_t start, framecnt_t cnt) const
{
boost::shared_ptr<Sample> sbuf;
boost::shared_ptr<gain_t> gbuf;
framecnt_t to_read;
framecnt_t to_zero;
AudioPlaylistSource::read_unlocked (Sample* dst, framepos_t start, framecnt_t cnt) const
{
boost::shared_ptr<Sample> sbuf;
boost::shared_ptr<gain_t> gbuf;
framecnt_t to_read;
framecnt_t to_zero;
/* we must be careful not to read beyond the end of our "section" of
* the playlist, because otherwise we may read data that exists, but
/* we must be careful not to read beyond the end of our "section" of
* the playlist, because otherwise we may read data that exists, but
/* Don't need to hold the lock for the actual read, and
actually, we cannot, but we do want to interlock
with any changes to the list of buffers caused
/* Don't need to hold the lock for the actual read, and
actually, we cannot, but we do want to interlock
with any changes to the list of buffers caused