This file is indexed.

/usr/include/CLAM/SpectralAnalysisConfig.hxx is in libclam-dev 1.4.0-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG)
 *                         UNIVERSITAT POMPEU FABRA
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#ifndef _SpectralAnalysis_
#define _SpectralAnalysis_

#include "DataTypes.hxx"
#include "ProcessingConfig.hxx"
#include "WindowGeneratorConfig.hxx"
#include "CircularShiftConfig.hxx"
#include "FFTConfig.hxx"

namespace CLAM {

/** Configuration class for Spectral Analysis class
 *  It includes specific parameters: HopSize, 
 *  ZeroPadding, Sampling Rate and FFTSize. Further 
 *  setter/getters are also offered for WindowSize and WindowType.
 *  It also includes complete configurations for child processings: 
 *  WindowGenerator, Circular Shift and FFT. These configurations
 *  should only be modified by advanced users
 */

class SpectralAnalysisConfig:public ProcessingConfig
{
	friend class SpectralAnalysis;

	DYNAMIC_TYPE_USING_INTERFACE (SpectralAnalysisConfig,9,ProcessingConfig);
/** Configuration for children Processing Objects*/
	DYN_ATTRIBUTE(0,public,WindowGeneratorConfig, WindowGenerator);
	DYN_ATTRIBUTE(1,public,CircularShiftConfig,CircularShift);
	DYN_ATTRIBUTE(2,public,FFTConfig, FFT);
	DYN_ATTRIBUTE(3,public,int, prHopSize);
	DYN_ATTRIBUTE(4,public,int, prZeroPadding);
	DYN_ATTRIBUTE(5,public,int, prSamplingRate);
	DYN_ATTRIBUTE(6,public,int, prFFTSize);
  //xamat: added these so they can be accessible from a configurator
        DYN_ATTRIBUTE(7,public,int, prWindowSize);
        DYN_ATTRIBUTE(8,public,EWindowType, prWindowType);

public:
//Config shortcuts

/** Sets Analysis Window size in num. of samples. 
 *  This setter actually changes window size in the window generator,
 *  size of the FFT, and amount of circular shift. If new window size
 *  is smaller than twice the hop size plus one, hop size is also 
 *  modified to that value.
 *  Note1: for best results, window size should be set to odd number.
 *  Note2: this setter should be called after the hop size has already
 *  been set. 
 */	
	void SetWindowSize(TSize w);

/** Getter for window size. Actually returns size of the window generator. */
	TSize GetWindowSize() const;

/** Sets Analysis Window type, modifying configuration of child Window Generator
 *  configuration.
 *  @see EWindowType
 */
	void SetWindowType(const EWindowType& t);

/** Getter for window type, returns window type in Window Generator */
	const EWindowType& GetWindowType() const;

/** Sets Zero padding factor. It changes FFTSize and Circular shift accordingly.
 *  If factor is 0, FFTSize is set to WindowSize-1 next power of two (assumes window
 *  size is odd!)
 *  Assuming a WindowSize of 513, see following table to understand how the factor
 *  works:
 *  ZeroPaddingFactor		FFTSize
 *		 -1					  256
 *        0					  512
 *		  1					 1024
 *		  2					 2048
 *  @see PowerOfTwo
 */
	void SetZeroPadding(int z);

/** returns ZeroPaddingFactor being used.*/
	int GetZeroPadding() const;

/** Sets Analysis Hop size in number of samples. This setter only changes attribute but
 *  does not change configurations accordingly! VIP: It assumes that a SetWindowSize is
 *  called afterwards.
 */	
	void SetHopSize(TSize h);

/** returns HopSize in number of samples.*/
	TSize GetHopSize() const;

/** Sets Sampling rate of the input audio. It calls SetWindowSize for synchronizing existing
	configurations.*/
	void SetSamplingRate(TData sr);

/** returns SamplingRate */
	TData GetSamplingRate() const;

/** synchronize configuration values just in case they had been modified directly **/
void Sync();


private:

/** Default Init adds all Dynamic Attributes */	
	void DefaultInit();

/** Sets default values: SamplingRate=44100, ZeroPaddingFactor=0, WindowSize=513,
 *  WindowType=Hamming, HopSize=256, and CircularShift's amount= 256*/
	void DefaultValues();

/** Ad-hoc routine for finding FFT Size*/
	TInt32 PowerOfTwo(TInt32 size);
};

}

#endif