summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/disk_reader.h
AgeCommit message (Collapse)Author
2020-02-21centralize determination of "read-audio-data-in-reverse" and fix seek ↵Paul Davis
"shift" offset There is still a bug related to "shift" that causes a playback discontinuity
2020-02-20improve commentsPaul Davis
2020-02-20correctly track is disk read (audio) should be forwards/backwards, and what ↵Paul Davis
was done last time we read from disk
2020-02-20Revert "fix behavior of DiskReader when moved after an instrument"Robin Gareus
This reverts commit b2bc934e218a8ed05b6f37edc5585191e60ca288. The commit does causes issues when a user manually removes channels: The disk-reader's ::can_support_io_configuration() at first ignores the user's request, forcing the output channel count to match the DR's current channel config. However, when configuring the DiskReader after that, channels is updated to match the new input-count. Even though the DR itself only plays back using the confgured I/O, all processors after it still use the old channel count. Only a later, second re-configuration step will apply the actual removal to plugins and port. PS. the original commit was mainly intended to fix a crash when adding an instrument plugin *between* disk-writer and disk-reader on a MIDI track.
2019-12-14fix behavior of DiskReader when moved after an instrumentPaul Davis
2019-12-12reduce another race condition riskPaul Davis
overwrite_queued == true is equivalent to _pending_overwrite != 0
2019-12-12remove useless lockPaul Davis
rbuf allocation/use is protected by process_lock
2019-12-11remove MIDI readahead parameterPaul Davis
We just don't do this anymore
2019-12-10revert to single buffer for disk playback, and 5.x-style overwritePaul Davis
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-08fix error when continuing to refill audio playback buffers after a buffer switchPaul Davis
The file_sample[AUDIO] member was not updated to reflect the last-read sample in the switched-to buffer. Also move several methods and members from DiskIO to DiskReader where they belong.
2019-11-22redesign of declicking and fades around loop boundariesPaul Davis
2019-11-15move DiskReader::inc_no_disk_output() into .cc to allow for easier debuggingPaul Davis
2019-11-06fix unconditional note resolution during DiskReader::realtime_locate()Paul Davis
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() - ::get_midi_playback() has already taken care of this. But when not looping, we need this. So, add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-02remove unused (empty) APIPaul Davis
2019-11-02remove unused APIPaul Davis
2019-11-02various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.Paul Davis
This may still be missing a few changes (i.e. they do not cause re-rendering)
2019-11-02move ownership of an RT MIDI buffer from DiskIO to MidiPlaylistPaul Davis
2019-11-02alter where note resolution happens when a re-rendering is scheduled for a ↵Paul Davis
MIDI track
2019-11-02refactor SessionEvent and DiskIO so that we pass around ↵Paul Davis
boost::shared_ptr<Track> rather than Route (this the raw pointers used inside SessionEvent)
2019-11-02add a MidiStateTracker to DiskReader and use to handle transport stop note ↵Paul Davis
resolving
2019-09-17add finite state machine to control/manage transport statePaul Davis
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-02-21Add API to check for ongoing de-clickRobin Gareus
2019-02-08Fix some disk-buffer threading issuesRobin Gareus
Make _pending_overwrite atomic (butler + process thread). This also addresses a potential seek before override race. Seeking will fill the buffers and by the time overwrite_existing_buffers() is called from there is no space to overwrite anymore.
2019-02-08NO-OP: clarify internal API, prepare for overwrite queueRobin Gareus
2019-02-07Prepare dedicated Disk-reader de-click gain-stageRobin Gareus
This allows to specify a shorter fade-duration than default Amp::apply_gain(), also allows to unroll and vectorize the loop
2019-02-06Prepare Disk-reader for bi-directional micro-locatesRobin 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-07-11Correct a couple of typosJohn Emmas
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.
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-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-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-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-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-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-18framework for silent-roll-while-slave-syncingPaul Davis
2017-09-18rename a method to be more clear; remove an unused method from DiskReaderPaul Davis
2017-09-18cue monitoring for MIDIPaul Davis
2017-09-18cue monitoring for audio (libardour aspects)Paul Davis
2017-09-18fix various naming issues with Disk{Reader,Writer}Paul Davis
2017-09-18remove all remaining vestiges of per-track varispeed from libardourPaul Davis
2017-09-18random changes required to get an audio track created and transport functionalPaul Davis
2017-09-18mega-commit to save state of first "it compilesand links" state for ↵Paul Davis
separated disk i/o changes. THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
2017-09-18merge almost all audio & midi diskstream code, redistribute between ↵Paul Davis
DiskIOProcessor, DiskReader,DiskWriter; compile and link