1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include "AudioFileOpsTestsHelper.hxx"
#include "similarityHelper.hxx"
#include "PCMAudioStream.hxx"
namespace CLAMTest
{
double fileSimilarity( const std::string & file, int channel,
const CLAM::Audio& rhs )
{
CLAM::AudioFileSource source;
source.OpenExisting(file);
CLAM::AudioCodecs::Stream* stream = source.GetStream();
CLAM::DataArray samplesExtracted;
samplesExtracted.Resize( rhs.GetSize() );
samplesExtracted.SetSize( rhs.GetSize() );
stream->PrepareReading();
stream->ReadData( channel,
samplesExtracted.GetPtr(),
samplesExtracted.Size() );
stream->Dispose();
delete stream;
return evaluateSimilarity( samplesExtracted,
rhs.GetBuffer() );
}
void fileSimilarity( const std::string & file,
const CLAM::Audio& left, const CLAM::Audio& right,
double& similarityLeft, double& similarityRight )
{
CLAM::AudioFileSource source;
source.OpenExisting(file);
CLAM::AudioCodecs::Stream* stream = source.GetStream();
CLAM::DataArray samplesExtractedLeft;
samplesExtractedLeft.Resize( left.GetSize() );
samplesExtractedLeft.SetSize( left.GetSize() );
CLAM::DataArray samplesExtractedRight;
samplesExtractedRight.Resize( right.GetSize() );
samplesExtractedRight.SetSize( right.GetSize() );
stream->PrepareReading();
int* channelBuff = new int[2];
channelBuff[0] = 0;
channelBuff[1] = 1;
CLAM::TData** samplesMatrix = new CLAM::TData*[2];
samplesMatrix[0] = samplesExtractedLeft.GetPtr();
samplesMatrix[1] = samplesExtractedRight.GetPtr();
stream->ReadData( channelBuff, 2,
samplesMatrix, left.GetSize() );
stream->Dispose();
similarityLeft = evaluateSimilarity( samplesExtractedLeft, left.GetBuffer() );
similarityRight = evaluateSimilarity( samplesExtractedRight, right.GetBuffer() );
delete channelBuff;
delete samplesMatrix;
delete stream;
}
}
|