Allow direct buffer access

This commit is contained in:
Vestral 2022-01-21 21:58:16 +09:00 committed by Megamouse
parent ab71c02cf0
commit 2cf59a0d51
2 changed files with 20 additions and 0 deletions

View File

@ -306,6 +306,15 @@ public:
virtual uint receiveSamples(uint maxSamples ///< Remove this many samples from the beginning of pipe.
) override;
/// Returns a pointer to the beginning of the output samples.
/// This function is provided for accessing the output samples directly.
/// Please be careful for not to corrupt the book-keeping!
///
/// When using this function to output samples, also remember to 'remove' the
/// output samples from the buffer by calling the
/// 'receiveSamples(numSamples)' function
SAMPLETYPE *bufBegin();
/// Clears all the samples in the object's output and internal processing
/// buffers.
virtual void clear() override;

View File

@ -528,6 +528,17 @@ uint SoundTouch::receiveSamples(uint maxSamples)
return ret;
}
// Returns a pointer to the beginning of the currently non-outputted samples.
// This function is provided for accessing the output samples directly.
// Please be careful!
//
// When using this function to output samples, also remember to 'remove' the
// outputted samples from the buffer by calling the
// 'receiveSamples(numSamples)' function
SAMPLETYPE *SoundTouch::bufBegin()
{
return pTDStretch->getOutput()->ptrBegin();
}
/// Get ratio between input and output audio durations, useful for calculating
/// processed output duration: if you'll process a stream of N samples, then