This file is indexed.

/usr/include/CLAM/Audio.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*
 * 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 _AUDIO_HXX
#define _AUDIO_HXX

#include <typeinfo>

//
// Finally, we have decided to use a single buffer of TDatas, all
// previously existing data formats have proven useless and have
// been removed.
//


#include "DynamicType.hxx"
#include "Array.hxx"
#include "ProcessingData.hxx"
#include "ProcessingDataConfig.hxx"
#include "DataTypes.hxx"

namespace CLAM {


	/** Audio class with the Data Buffer, information about it (SampleRate, BeginTime), and methods to insert and get Audio chunks.
	 * You can also get 'slices' that's an audio that maps to 
	 * some other audio's data.
	 *  @see AudioDescriptors, Spectrum
	 */
	class Audio: public ProcessingData {
	public:
		DYNAMIC_TYPE_USING_INTERFACE (Audio, 3, ProcessingData);

		/** Sample rate in Hz */
		DYN_ATTRIBUTE (0, public, TData, SampleRate);
		/** Temporal Tags for audio chunk in miliseconds */
		DYN_ATTRIBUTE (1, public, TTime, BeginTime);
		/** The Audio buffer */
		DYN_ATTRIBUTE (2, public, DataArray, Buffer);

	protected:

		void DefaultInit(); // To be used from the dynamic-type-generated constructor.

	public:
		~Audio();
	
		/** @return the audio buffer size in samples*/
		int GetSize() const {return GetBuffer().Size();}

		/** Getter for the end time in miliseconds
		 *  @return The current end time for the buffer size */
		TTime GetEndTime() const {return GetBeginTime()+GetTimeFromIndex(GetSize());}

	 	/** Method for getting the total duration of Buffer
		 *  @return The duration of the audio buffer in miliseconds */
		TTime GetDuration() const {return GetTimeFromIndex(GetSize());}

		/** Resizes the array buffers to a size in samples.
		 *  Increases or shrinks by the end of the buffer preserving the data.
		 *  If size increases, new samples are set to 0.
		 *  @todo Document how data in the buffer is discarded
		 *  @param s The new size in samples */
		void SetSize(int s);

		/** 
		 *  @deprecated use ResizeToEndTime instead
		 */
		void SetEndTime(TTime time);

		/** Resizes the array buffer to last from the begin time
		 *  until the specified time position (time in miliseconds)
		 *  @todo Document how data in the buffer is discarded
		 *  @param time End time of the buffer once resized
		 *  @see SetSize
		 */
		void ResizeToEndTime(TTime time);

		/** 
		 *  @deprecated use ResizeToDuration instead
		 */
		void SetDuration(TTime duration);
		
		/** Resizes the array buffer to last the specified
		 *  time duration (miliseconds).
		 *  @todo Document how data in the buffer is discarded
		 *  @param duration The required duration for the buffer once resized
		 *  @see SetSize
		 *
		 */
		void ResizeToDuration(TTime duration);

		/** Method for copying an audio chunk out of the existing data. Time in milliseconds.
		 *  @param beginTime Beginning of the chunk in time measure.
		 *  @param endTime Ending of the chunk in time measure.
		 *  @param chunk The Audio data chunk
		 *  @param configureChunk Optional parameter to set the configuration of the chunk. True by default.
		*/
		void GetAudioChunk(TTime beginTime, TTime endTime,Audio& chunk,bool configureChunk=true) const;

		/**Method for copying an audio chunk out of the existing data
		 *  @param beginIndex Beginning of the chunk inside the Buffer.
		 *  @param endIndex Ending of the chunk inside the Buffer
		 *  @param chunk The Audio data chunk
		 *  @param configureChunk Optional parameter to set the configuration of the chunk. True by default.
		*/
		void GetAudioChunk(TIndex beginIndex,TIndex endIndex,Audio& chunk, bool configureChunk=true) const;

		/** Method for copying an audio "slice" out of the existing data. The difference between slices
		 *  Time in miliseconds.
		 *  and chunks is that slices don't own any memory.
		 *  @param beginTime Beginning of the chunk in time measure.
		 *  @param endTime Ending of the chunk in time measure.
		 *  @param slice The Audio data slice
		 *  @param configureSlice Optional parameter to set the configuration of the slice. True by default.
		*/
		void GetAudioSlice(TTime beginTime, TTime endTime,Audio& slice,bool configureSlice=true) const;


		/** Method for getting an audio "slice" out of the existing data. The difference between slices
		 *  and chunks is that slices don't own any memory.
		 *  @param beginIndex Beginning of the chunk inside the Buffer.
		 *  @param endIndex Ending of the chunk inside the Buffer
		 *  @param slice The Audio slice
		 *  @param configureSlice Optional parameter to set the configuration of the slice. True by default.
		*/
		void GetAudioSlice( TIndex beginIndex, TIndex endIndex, Audio& slice, bool configureSlice=true) const;

		/**Method for setting an audio chunk of the audio out of an existing chunk. Time in miliseconds.
		 *  @param beginTime Beginning location of the chunk in the Buffer in time measure.
		 *  @param chunk The Audio data chunk to insert
		 */
		void SetAudioChunk(TTime beginTime,const Audio& chunk);

		/**Method for setting an audio chunk of the audio out of an existing chunk
		 *  @param beginIndex Beginning location of the chunk in the Buffer.
		 *  @param chunk The Audio data chunk to insert
		 */
		void SetAudioChunk(TIndex beginIndex,const Audio& chunk);

	private:
		/** Conversion utility for handling indices and time tags
		 *  @param index Point to get time tag
		 *  @return  Exact time for the index indicated
		 */
		TTime GetTimeFromIndex(TIndex index) const;

		/** Conversion utility for handling indices and time tags. Time in miliseconds
		 *  @param time Point to get index tag
		 *  @return Index of the position marked in time
		 */
		TIndex GetIndexFromTime(TTime time) const;
	};
};//namespace

#endif