49 lines
1.4 KiB
C++
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);
|
|
}
|
|
|