File: AudioFileOpsTestsHelper.cxx

package info (click to toggle)
clam 1.4.0-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 17,836 kB
  • ctags: 20,981
  • sloc: cpp: 92,504; python: 9,721; ansic: 1,602; xml: 444; sh: 239; makefile: 153; perl: 54; asm: 15
file content (74 lines) | stat: -rw-r--r-- 1,893 bytes parent folder | download | duplicates (2)
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;
		
	}

}