Bundle libOpenMPT as a dynamic framework, which should be safe once again, now that there is only one version to bundle. Also, now it is using the versions of libvorbisfile and libmpg123 that are bundled with the player, instead of compiling minimp3 and stbvorbis. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
51 lines
1.8 KiB
C++
51 lines
1.8 KiB
C++
/*
|
|
* SampleCopy.h
|
|
* ------------
|
|
* Purpose: Functions for copying sample data.
|
|
* Notes : (currently none)
|
|
* Authors: OpenMPT Devs
|
|
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
|
*/
|
|
|
|
|
|
#pragma once
|
|
|
|
#include "openmpt/all/BuildSettings.hpp"
|
|
|
|
#include "openmpt/soundbase/SampleConvert.hpp"
|
|
#include "openmpt/soundbase/SampleDecode.hpp"
|
|
|
|
|
|
OPENMPT_NAMESPACE_BEGIN
|
|
|
|
|
|
// Copy a sample data buffer.
|
|
// targetBuffer: Buffer in which the sample should be copied into.
|
|
// numSamples: Number of samples of size T that should be copied. targetBuffer is expected to be able to hold "numSamples * incTarget" samples.
|
|
// incTarget: Number of samples by which the target data pointer is increased each time.
|
|
// sourceBuffer: Buffer from which the samples should be read.
|
|
// sourceSize: Size of source buffer, in bytes.
|
|
// incSource: Number of samples by which the source data pointer is increased each time.
|
|
//
|
|
// Template arguments:
|
|
// SampleConversion: Functor of type SampleConversionFunctor to apply sample conversion (see above for existing functors).
|
|
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
|