}
}
+void
+AudioDiskstream::non_realtime_locate (nframes_t location)
+{
+ /* now refill channel buffers */
+
+ if (speed() != 1.0f || speed() != -1.0f) {
+ seek ((nframes_t) (location * (double) speed()));
+ } else {
+ seek (location);
+ }
+}
+
void
AudioDiskstream::get_input_sources ()
{
/* if per-track or global rec-enable turned on while the other was already on, we've started recording */
- if ((change & track_rec_enabled) && record_enabled() && (!(change & global_rec_enabled) && can_record) ||
+ if (((change & track_rec_enabled) && record_enabled() && (!(change & global_rec_enabled) && can_record)) ||
((change & global_rec_enabled) && can_record && (!(change & track_rec_enabled) && record_enabled()))) {
/* starting to record: compute first+last frames */
commit_should_unlock = false;
- if (!_io->active()) {
+ if (!_io || !_io->active()) {
_processed = true;
return 0;
}
AudioPort* const ap = _io->audio_input(n);
assert(ap);
- assert(rec_nframes <= ap->get_audio_buffer().capacity());
- memcpy (chaninfo->current_capture_buffer, ap->get_audio_buffer().data(rec_nframes, offset + rec_offset), sizeof (Sample) * rec_nframes);
+ assert(rec_nframes <= ap->get_audio_buffer( nframes, offset ).capacity());
+ memcpy (chaninfo->current_capture_buffer, ap->get_audio_buffer( nframes, offset ).data(rec_nframes, offset + rec_offset), sizeof (Sample) * rec_nframes);
} else {
AudioPort* const ap = _io->audio_input(n);
assert(ap);
- Sample* buf = ap->get_audio_buffer().data(nframes, offset);
+ Sample* buf = ap->get_audio_buffer( nframes, offset ).data(nframes, offset);
nframes_t first = chaninfo->capture_vector.len[0];
memcpy (chaninfo->capture_wrap_buffer, buf, sizeof (Sample) * first);
{
bool need_butler = false;
- if (!_io->active()) {
+ if (!_io || !_io->active()) {
return false;
}
}
if (_slaved) {
- /*if (_io && _io->active()) {*/
+ if (_io && _io->active()) {
need_butler = c->front()->playback_buf->write_space() >= c->front()->playback_buf->bufsize() / 2;
- /*} else {
+ } else {
need_butler = false;
- }*/
+ }
} else {
- /*if (_io && _io->active()) {*/
+ if (_io && _io->active()) {
need_butler = c->front()->playback_buf->write_space() >= disk_io_chunk_frames
|| c->front()->capture_buf->read_space() >= disk_io_chunk_frames;
- /*} else {
+ } else {
need_butler = c->front()->capture_buf->read_space() >= disk_io_chunk_frames;
- }*/
+ }
}
if (commit_should_unlock) {
AudioDiskstream::add_channel_to (boost::shared_ptr<ChannelList> c, uint32_t how_many)
{
while (how_many--) {
- c->push_back (new ChannelInfo(_session.diskstream_buffer_size(), speed_buffer_size, wrap_buffer_size));
+ c->push_back (new ChannelInfo(_session.audio_diskstream_buffer_size(), speed_buffer_size, wrap_buffer_size));
}
_n_channels.set(DataType::AUDIO, c->size());
write_source.reset ();
}
- if (speed_buffer) {
- delete [] speed_buffer;
- speed_buffer = 0;
- }
+ delete [] speed_buffer;
+ speed_buffer = 0;
- if (playback_wrap_buffer) {
- delete [] playback_wrap_buffer;
- playback_wrap_buffer = 0;
- }
+ delete [] playback_wrap_buffer;
+ playback_wrap_buffer = 0;
- if (capture_wrap_buffer) {
- delete [] capture_wrap_buffer;
- capture_wrap_buffer = 0;
- }
+ delete [] capture_wrap_buffer;
+ capture_wrap_buffer = 0;
- if (playback_buf) {
- delete playback_buf;
- playback_buf = 0;
- }
+ delete playback_buf;
+ playback_buf = 0;
- if (capture_buf) {
- delete capture_buf;
- capture_buf = 0;
- }
+ delete capture_buf;
+ capture_buf = 0;
- if (capture_transition_buf) {
- delete capture_transition_buf;
- capture_transition_buf = 0;
- }
+ delete capture_transition_buf;
+ capture_transition_buf = 0;
}