123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- #include "openmpt/all/BuildSettings.hpp"
- #include "openmpt/soundbase/SampleConvert.hpp"
- #include "openmpt/soundbase/SampleDecode.hpp"
- OPENMPT_NAMESPACE_BEGIN
- template <typename SampleConversion>
- size_t CopySample(typename SampleConversion::output_t *MPT_RESTRICT outBuf, size_t numSamples, size_t incTarget, const typename SampleConversion::input_t *MPT_RESTRICT inBuf, size_t sourceSize, size_t incSource, SampleConversion conv = SampleConversion())
- {
- const size_t sampleSize = incSource * SampleConversion::input_inc * sizeof(typename SampleConversion::input_t);
- LimitMax(numSamples, sourceSize / sampleSize);
- const size_t copySize = numSamples * sampleSize;
- SampleConversion sampleConv(conv);
- while(numSamples--)
- {
- *outBuf = sampleConv(inBuf);
- outBuf += incTarget;
- inBuf += incSource * SampleConversion::input_inc;
- }
- return copySize;
- }
- OPENMPT_NAMESPACE_END
|