-AudioPlaylist::AudioPlaylist (boost::shared_ptr<const AudioPlaylist> other, framepos_t start, framecnt_t cnt, string name, bool hidden)
+AudioPlaylist::AudioPlaylist (boost::shared_ptr<const AudioPlaylist> other, samplepos_t start, samplecnt_t cnt, string name, bool hidden)
: Playlist (other, start, cnt, name, hidden)
{
RegionReadLock rlock2 (const_cast<AudioPlaylist*> (other.get()));
in_set_state++;
: Playlist (other, start, cnt, name, hidden)
{
RegionReadLock rlock2 (const_cast<AudioPlaylist*> (other.get()));
in_set_state++;
/* Audio regions that have been created by the Playlist constructor
will currently have the same fade in/out as the regions that they
/* Audio regions that have been created by the Playlist constructor
will currently have the same fade in/out as the regions that they
switch (region->coverage (start, end)) {
case Evoral::OverlapNone:
switch (region->coverage (start, end)) {
case Evoral::OverlapNone:
- framecnt_t const offset = start - region->position ();
- framecnt_t const trim = region->last_frame() - end;
+ samplecnt_t const offset = start - region->position ();
+ samplecnt_t const trim = region->last_sample() - end;
case Evoral::OverlapStart: {
if (end > region->position() + region->fade_in()->back()->when)
fade_in = region->fade_in()->back()->when; //end is after fade-in, preserve the fade-in
case Evoral::OverlapStart: {
if (end > region->position() + region->fade_in()->back()->when)
fade_in = region->fade_in()->back()->when; //end is after fade-in, preserve the fade-in
- if (end > region->last_frame() - region->fade_out()->back()->when)
- fade_out = region->fade_out()->back()->when - ( region->last_frame() - end ); //end is inside the fadeout, preserve the fades endpoint
+ if (end > region->last_sample() - region->fade_out()->back()->when)
+ fade_out = region->fade_out()->back()->when - ( region->last_sample() - end ); //end is inside the fadeout, preserve the fades endpoint
fade_out = region->fade_out()->back()->when;
if (start < region->position() + region->fade_in()->back()->when)
fade_out = region->fade_out()->back()->when;
if (start < region->position() + region->fade_in()->back()->when)
- Segment (boost::shared_ptr<AudioRegion> r, Evoral::Range<framepos_t> a) : region (r), range (a) {}
+ Segment (boost::shared_ptr<AudioRegion> r, Evoral::Range<samplepos_t> a) : region (r), range (a) {}
-ARDOUR::framecnt_t
-AudioPlaylist::read (Sample *buf, Sample *mixdown_buffer, float *gain_buffer, framepos_t start,
- framecnt_t cnt, unsigned chan_n)
+ARDOUR::samplecnt_t
+AudioPlaylist::read (Sample *buf, Sample *mixdown_buffer, float *gain_buffer, samplepos_t start,
+ samplecnt_t cnt, unsigned chan_n)
{
DEBUG_TRACE (DEBUG::AudioPlayback, string_compose ("Playlist %1 read @ %2 for %3, channel %4, regions %5 mixdown @ %6 gain @ %7\n",
name(), start, cnt, chan_n, regions.size(), mixdown_buffer, gain_buffer));
{
DEBUG_TRACE (DEBUG::AudioPlayback, string_compose ("Playlist %1 read @ %2 for %3, channel %4, regions %5 mixdown @ %6 gain @ %7\n",
name(), start, cnt, chan_n, regions.size(), mixdown_buffer, gain_buffer));
/* This will be a list of the bits of our read range that we have
handled completely (ie for which no more regions need to be read).
/* This will be a list of the bits of our read range that we have
handled completely (ie for which no more regions need to be read).
/* Work out which bits of this region need to be read;
first, trim to the range we are reading...
*/
/* Work out which bits of this region need to be read;
first, trim to the range we are reading...
*/
region_range.from = max (region_range.from, start);
region_range.to = min (region_range.to, start + cnt - 1);
/* ... and then remove the bits that are already done */
region_range.from = max (region_range.from, start);
region_range.to = min (region_range.to, start + cnt - 1);
/* ... and then remove the bits that are already done */
/* Make a note to read those bits, adding their bodies (the parts between end-of-fade-in
and start-of-fade-out) to the `done' list.
*/
/* Make a note to read those bits, adding their bodies (the parts between end-of-fade-in
and start-of-fade-out) to the `done' list.
*/
- for (Evoral::RangeList<framepos_t>::List::iterator j = t.begin(); j != t.end(); ++j) {
- Evoral::Range<framepos_t> d = *j;
+ for (Evoral::RangeList<samplepos_t>::List::iterator j = t.begin(); j != t.end(); ++j) {
+ Evoral::Range<samplepos_t> d = *j;
to_do.push_back (Segment (ar, d));
if (ar->opaque ()) {
/* Cut this range down to just the body and mark it done */
to_do.push_back (Segment (ar, d));
if (ar->opaque ()) {
/* Cut this range down to just the body and mark it done */
if (body.from < d.to && body.to > d.from) {
d.from = max (d.from, body.from);
d.to = min (d.to, body.to);
if (body.from < d.to && body.to > d.from) {
d.from = max (d.from, body.from);
d.to = min (d.to, body.to);