diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-11-12 21:04:06 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-11-12 21:04:06 +0000 |
| commit | 17cea71c34ed6bdba67aac8614572c7511844c2a (patch) | |
| tree | 41464576c5e2e6ab360789faf4b5fcc4358ee556 /src/lib/delay_line.cc | |
| parent | 13b935067e892875ea9e76c3d63fcc11d2c429b0 (diff) | |
Untested; more movement of stuff out of decoder.
Diffstat (limited to 'src/lib/delay_line.cc')
| -rw-r--r-- | src/lib/delay_line.cc | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/lib/delay_line.cc b/src/lib/delay_line.cc index e7cd8dc94..45d8e9d9d 100644 --- a/src/lib/delay_line.cc +++ b/src/lib/delay_line.cc @@ -30,28 +30,25 @@ using boost::shared_ptr; /** @param channels Number of channels of audio. * @param frames Delay in frames, +ve to move audio later. */ -DelayLine::DelayLine (int channels, int frames) - : _negative_delay_remaining (0) +DelayLine::DelayLine (Log* log, int channels, int frames) + : AudioProcessor (log) + , _negative_delay_remaining (0) + , _frames (frames) { - if (frames > 0) { + if (_frames > 0) { /* We need a buffer to keep some data in */ - _buffers.reset (new AudioBuffers (channels, frames)); + _buffers.reset (new AudioBuffers (channels, _frames)); _buffers->make_silent (); - } else if (frames < 0) { + } else if (_frames < 0) { /* We can do -ve delays just by chopping off the start, so no buffer needed. */ - _negative_delay_remaining = -frames; + _negative_delay_remaining = -_frames; } } -DelayLine::~DelayLine () -{ - -} - void -DelayLine::feed (shared_ptr<AudioBuffers> data) +DelayLine::process_audio (shared_ptr<AudioBuffers> data) { if (_buffers) { /* We have some buffers, so we are moving the audio later */ @@ -91,4 +88,15 @@ DelayLine::feed (shared_ptr<AudioBuffers> data) _negative_delay_remaining -= to_do; } } + + Audio (data); +} + +void +DelayLine::process_end () +{ + if (_frames < 0) { + _buffers->make_silent (); + Audio (_buffers); + } } |
