Files
Work/sample/PureSmpl.cpp
2024-08-07 09:16:27 -04:00

49 lines
1.4 KiB
C++

#include <sample/puresmpl.hpp>
PureSample &PureSample::operator=(const PureSample &somePureSample)
{
numSamples(somePureSample.numSamples());
if(!isOkay())return *this;
copySampleData(&(((GlobalData<BYTE>&)mSampleData).operator[](0)),&(((GlobalData<BYTE>&)somePureSample.mSampleData).operator[](0)),numSamples());
return *this;
}
PureSample &PureSample::operator+=(const PureSample &somePureSample)
{
PureSample mixedSample;
DWORD clampOne;
DWORD clampTwo;
UHUGE *lpMixedSample;
UHUGE *lpSampleOne;
UHUGE *lpSampleTwo;
if(numSamples()>somePureSample.numSamples())
{
clampOne=somePureSample.numSamples();
clampTwo=numSamples();
lpSampleOne=sampleData();
lpSampleTwo=((PureSample&)somePureSample).sampleData();
}
else
{
clampOne=numSamples();
clampTwo=somePureSample.numSamples();
lpSampleOne=((PureSample&)somePureSample).sampleData();
lpSampleTwo=sampleData();
}
mixedSample.numSamples(clampTwo);
lpMixedSample=mixedSample.sampleData();
for(DWORD sampleIndex=0;sampleIndex<clampOne;sampleIndex++)
*(lpMixedSample+sampleIndex)=((WORD)*(lpSampleOne+sampleIndex)+(WORD)*(lpSampleTwo+sampleIndex))>>0x01;
for(;sampleIndex<clampTwo;sampleIndex++)
*(lpMixedSample+sampleIndex)=((WORD)*(lpSampleOne+sampleIndex));
*this=mixedSample;
return *this;
}
void PureSample::copySampleData(UHUGE *lpDstSample,UHUGE *lpSrcSample,DWORD numBytes)
{
::memcpy(lpDstSample,lpSrcSample,numBytes);
}