summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_reader.cc
AgeCommit message (Collapse)Author
2019-02-06Optimize buffer zero-fillingRobin Gareus
2019-02-05Towards a new disk-reader ringbufferRobin Gareus
This is mainly a NO-OP, introducing a new PlaybackBuffer type and preparing for its use. At this point in time, the buffer is just a power-of-two sized ringbuffer and the disk-reader's read-logic is still unchanged. Eventually the read and write sample position that are currently private to the disk-reader can be migrated to be owned by the buffer. Also Diskreader::read() positions can be matched to read-position .. +/- buffer reservation and de-click can read w/o committing the read.
2018-12-21Fix insert/remove time duplicate automation move -- #7712Robin Gareus
Editor::insert_time(), Editor::remove_time() handle automation directly because time may be inserted to Routes without playlists and combined undo-operation with marker, and tempo-changes. However when the preference "automation_follows_regions" is enabled, the playlist already moves the automation of region under any region (possibly overriding future automation). This resulted in possibly lossy, duplicate automation moves.
2018-11-29Disk I/O: only allocate midi-buffer if neededRobin Gareus
This fixes a memory-leak (_midi_buf was allocated in DiskIOProc but only delete in DiskReader). Also skip midi-refill early on
2018-10-04add new ::update_interval() method for transport masters, and use in shared ↵Paul Davis
::speed_and_position() implementation
2018-07-31Fix mismatched delete/delete[]Robin Gareus
2018-07-09NO-OP: Rename disk-reader buffer for consistencyRobin Gareus
This is in preparation to replace the Ringbuffer and avoid over-using "buf" as variable (it's already used for vectors, as parameter name and Audiobuffers.
2018-07-09Prepare API for per disk-reader de-clickRobin Gareus
2018-07-09Separate ChannelInfo for disk reader and writerRobin Gareus
This allows to use different types for write and read buffers, in preparation for a dedicated reader-buffer.
2018-07-09Remove unused disk-reader vari-speedRobin Gareus
2018-07-09Remove global declick APIRobin Gareus
De-click will be per disk-reader, latency compensated and buffer-size independent. Cue-monitoring should not be affected by de-click.
2017-10-31Move Loop Location to ProcessorsRobin Gareus
The processors will becomes responsible to know about loop-positions and map latency-compensated start_sample, end_sample into the loop-range as needed.
2017-10-26remove unused variablePaul Davis
2017-10-26switch from std::auto_ptr<> (deprecated) to boost::scoped_ptr<>Paul Davis
2017-10-26optimization for track with zero audio channels should not short-circuit ↵Paul Davis
MIDI disk reading
2017-10-04Clean up State API:Robin Gareus
* Processor implement get_state(), classes derived from Processor implement protected ::state() -- as documented in processor.h * likewise for Route, Track: make ::state() a protected interface * removal of "full_state", use explicit "template_save" * use RAII/Unwind to skip saving automation-state
2017-10-02use new CubicInterpolation APIPaul Davis
2017-10-02DiskReader should do nothing at all if there are no channelsPaul Davis
2017-10-02remove cruftPaul Davis
2017-10-01Fix MIDI rec-region displayRobin Gareus
gui_feed_buffer is used for DiskWriter -> GUI notifications. It was wrongly migrated from MidiDiskstream to DiskReader in 7fb6807
2017-09-30Make MIDI disk-reader a bit less buggy :)Robin Gareus
* use start/end frame * differentiate nframes and disk_samples_to_consume * add global Port::port_offset () when writing data. * add a note about b0rked vari-speed ..
2017-09-30MIDI debugging.Robin Gareus
2017-09-30Disk-reader don't silence buffers when not rollingRobin Gareus
Doing so may clear out-of-band data which is injected into the data-stream.
2017-09-29Ongoing work on latency compensationRobin Gareus
The general goal is to align transport-sample to be the audible frame and use that as "anchor" for all processing. transport_sample cannot become negative (00:00:00:00 is the first audible frame). Internally transport pre-rolls (read-ahead) before the transport starts to move. This allows inputs and disk to prefill the pipeline. When starting to roll, the session counts down a global "remaning preroll" counter, which is the worst-latency from in-to-out. Each route in turn will start processing at its own output-latency. Route::process_output_buffers() - which does the actual processing incl disk i/o - begins by offsetting the "current sample" by the route's process-latency and decrements the offset for each latent processor. At the end of the function the output will be aligned and match transport-sample - downstream-playback-latency (if any). PS. This commit is a first step only: transport looping & vari-speed have not yet been implemented/updated.
2017-09-29No more disk-reader roll-delayRobin Gareus
It was not working in sdio/6.0-pre anyway and with upcoming changes to latency compensation the concept of per disk[stream/reader] will go away.
2017-09-21fix clang compilation (include header ordering)Robin Gareus
"i18n.h" needs to be included last, after types have been defined or clang bails out: "call to function 'operator<<' is not visible in the template definition"
2017-09-19fix boolean logic for roll_delay vs. disk_samples_to_consumePaul Davis
2017-09-19do not advance DiskReader's idea of playback_sample while waiting for ↵Paul Davis
_roll_delay to expire
2017-09-19clearer catastrophic error message, rather than assert()Paul Davis
2017-09-19attempt to fix roll delay logic by moving it into DiskReader (the only place ↵Paul Davis
it matters)
2017-09-19Revert "remove unusued roll_delay member of DiskReader"Paul Davis
This reverts commit 92c2e06eb72950f91ca943a5219e2caeaeecda9f.
2017-09-19remove unusued roll_delay member of DiskReaderPaul Davis
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-09-18fix logic error that prevent input monitoring during slave wait statesPaul Davis
2017-09-18don't attempt MIDI playback if there are no MIDI buffers provided for processingPaul Davis
2017-09-18remove debug outputPaul Davis
2017-09-18remove all code related to "silent roll" concept. some debug output addedPaul Davis
2017-09-18move disk_{writer,reader} into Route to allow for simple, sensible ↵Paul Davis
implementation of DiskIOPoint
2017-09-18use constPaul Davis
2017-09-18remove unused + commented linePaul Davis
2017-09-18subtle change to _need_butler logic to ensure correct result in mixed-type ↵Paul Davis
contexts
2017-09-18reinstate use of a MidiTrack's MIDI filter when reading from diskPaul Davis
2017-09-18move _file_frame from DiskIOProcessor into DiskReader (only place where it ↵Paul Davis
is needed); split into by-type array to deal with different rate of audio & MIDI i/o
2017-09-18tweaks to disk io point mechanismsPaul Davis
2017-09-18framework for silent-roll-while-slave-syncingPaul Davis
2017-09-18probable fix for out-of-sync issue across tracks after locatePaul Davis
2017-09-18when DiskReader checks to see if a locate is in progress, it must be atomic ↵Paul Davis
with respect to all DiskReaders
2017-09-18change visible name of disk i/o processorsPaul Davis
2017-09-18comment out debug trace outputPaul Davis
2017-09-18do not advance pointer; avoids illegal over-read during mix_buffers_no_gain()Paul Davis