Chris@0
|
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
Chris@0
|
2 <HTML>
|
Chris@0
|
3
|
Chris@0
|
4 <HEAD>
|
Chris@0
|
5 <TITLE>
|
Chris@0
|
6 libsndfile : the sf_command function.
|
Chris@0
|
7 </TITLE>
|
Chris@0
|
8 <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
|
Chris@0
|
9 <!-- Another version at the bottom of the page. -->
|
Chris@0
|
10 <META NAME="Description" CONTENT="The libsndfile API.">
|
Chris@0
|
11 <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
|
Chris@0
|
12 <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
|
Chris@0
|
13 <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
|
Chris@0
|
14 </HEAD>
|
Chris@0
|
15
|
Chris@0
|
16 <BODY>
|
Chris@0
|
17
|
Chris@0
|
18 <H1><B>sf_command</B></H1>
|
Chris@0
|
19 <PRE>
|
Chris@0
|
20
|
Chris@0
|
21 int sf_command (SNDFILE *sndfile, int cmd, void *data, int datasize) ;
|
Chris@0
|
22 </PRE>
|
Chris@0
|
23 <P>
|
Chris@0
|
24 This function allows the caller to retrieve information from or change aspects of the
|
Chris@0
|
25 library behaviour.
|
Chris@0
|
26 Examples include retrieving a string containing the library version or changing the
|
Chris@0
|
27 scaling applied to floating point sample data during read and write.
|
Chris@0
|
28 Most of these operations are performed on a per-file basis.
|
Chris@0
|
29 </P>
|
Chris@0
|
30 <P>
|
Chris@0
|
31 The cmd parameter is an integer identifier which is defined in <sndfile.h>.
|
Chris@0
|
32 All of the valid command identifiers have names beginning with "SFC_".
|
Chris@0
|
33 Data is passed to and returned from the library by use of a void pointer.
|
Chris@0
|
34 The library will not read or write more than datasize bytes from the void pointer.
|
Chris@0
|
35 For some calls no data is required in which case data should be NULL and datasize
|
Chris@0
|
36 may be used for some other purpose.
|
Chris@0
|
37 </P>
|
Chris@0
|
38 <P>
|
Chris@0
|
39 The available commands are as follows:
|
Chris@0
|
40 </P>
|
Chris@0
|
41
|
Chris@0
|
42 <CENTER>
|
Chris@0
|
43 <TABLE BORDER="0" WIDTH="90%" CELLPADDING="4">
|
Chris@0
|
44 <TR>
|
Chris@0
|
45 <TD><A HREF="#SFC_GET_LIB_VERSION">SFC_GET_LIB_VERSION</A></TD>
|
Chris@0
|
46 <TD>Retrieve the version of the library.</TD>
|
Chris@0
|
47 </TR>
|
Chris@0
|
48 <TR>
|
Chris@0
|
49 <TD><A HREF="#SFC_GET_LOG_INFO">SFC_GET_LOG_INFO</A></TD>
|
Chris@0
|
50 <TD>Retrieve the internal per-file operation log.</TD>
|
Chris@0
|
51 </TR>
|
Chris@0
|
52 <TR>
|
Chris@0
|
53 <TD><A HREF="#SFC_CALC_SIGNAL_MAX">SFC_CALC_SIGNAL_MAX</A></TD>
|
Chris@0
|
54 <TD>Calculate the measured maximum signal value.</TD>
|
Chris@0
|
55 </TR>
|
Chris@0
|
56 <TR>
|
Chris@0
|
57 <TD><A HREF="#SFC_CALC_NORM_SIGNAL_MAX">SFC_CALC_NORM_SIGNAL_MAX</A></TD>
|
Chris@0
|
58 <TD>Calculate the measured normalised maximum signal value.</TD>
|
Chris@0
|
59 </TR>
|
Chris@0
|
60 <TR>
|
Chris@0
|
61 <TD><A HREF="#SFC_CALC_MAX_ALL_CHANNELS">SFC_CALC_MAX_ALL_CHANNELS</A></TD>
|
Chris@0
|
62 <TD>Calculate the peak value for each channel.</TD>
|
Chris@0
|
63 </TR>
|
Chris@0
|
64 <TR>
|
Chris@0
|
65 <TD><A HREF="#SFC_CALC_NORM_MAX_ALL_CHANNELS">SFC_CALC_NORM_MAX_ALL_CHANNELS</A></TD>
|
Chris@0
|
66 <TD>Calculate the normalised peak for each channel.</TD>
|
Chris@0
|
67 </TR>
|
Chris@0
|
68
|
Chris@0
|
69 <TR>
|
Chris@0
|
70 <TD><A HREF="#SFC_GET_SIGNAL_MAX">SFC_GET_SIGNAL_MAX</A></TD>
|
Chris@0
|
71 <TD>Retrieve the peak value for the file (as stored in the file header).</TD>
|
Chris@0
|
72 </TR>
|
Chris@0
|
73 <TR>
|
Chris@0
|
74 <TD><A HREF="#SFC_GET_MAX_ALL_CHANNELS">SFC_GET_MAX_ALL_CHANNELS</A></TD>
|
Chris@0
|
75 <TD>Retrieve the peak value for each channel (as stored in the file header).</TD>
|
Chris@0
|
76 </TR>
|
Chris@0
|
77
|
Chris@0
|
78 <TR>
|
Chris@0
|
79 <TD><A HREF="#SFC_SET_NORM_FLOAT">SFC_SET_NORM_FLOAT</A></TD>
|
Chris@0
|
80 <TD>Modify the normalisation behaviour of the floating point reading and writing functions.</TD>
|
Chris@0
|
81 </TR>
|
Chris@0
|
82 <TR>
|
Chris@0
|
83 <TD><A HREF="#SFC_SET_NORM_DOUBLE">SFC_SET_NORM_DOUBLE</A></TD>
|
Chris@0
|
84 <TD>Modify the normalisation behaviour of the double precision floating point reading and writing functions.</TD>
|
Chris@0
|
85 </TR>
|
Chris@0
|
86 <TR>
|
Chris@0
|
87 <TD><A HREF="#SFC_GET_NORM_FLOAT">SFC_GET_NORM_FLOAT</A></TD>
|
Chris@0
|
88 <TD>Retrieve the current normalisation behaviour of the floating point reading and writing functions.</TD>
|
Chris@0
|
89 </TR>
|
Chris@0
|
90 <TR>
|
Chris@0
|
91 <TD><A HREF="#SFC_GET_NORM_DOUBLE">SFC_GET_NORM_DOUBLE</A></TD>
|
Chris@0
|
92 <TD>Retrieve the current normalisation behaviour of the double precision floating point reading and writing functions.</TD>
|
Chris@0
|
93 </TR>
|
Chris@0
|
94 <TR>
|
Chris@0
|
95 <TD><A HREF="#SFC_SET_SCALE_FLOAT_INT_READ">SFC_SET_SCALE_FLOAT_INT_READ</A></TD>
|
Chris@0
|
96 <TD>Set/clear the scale factor when integer (short/int) data is read from a file
|
Chris@0
|
97 containing floating point data.</TD>
|
Chris@0
|
98 </TR>
|
Chris@0
|
99
|
Chris@0
|
100 <TR>
|
Chris@0
|
101 <TD><A HREF="#SFC_SET_SCALE_INT_FLOAT_WRITE">SFC_SET_SCALE_INT_FLOAT_WRITE</A></TD>
|
Chris@0
|
102 <TD>Set/clear the scale factor when integer (short/int) data is written to a file
|
Chris@0
|
103 as floating point data.</TD>
|
Chris@0
|
104 </TR>
|
Chris@0
|
105
|
Chris@0
|
106 <TR>
|
Chris@0
|
107 <TD><A HREF="#SFC_GET_SIMPLE_FORMAT_COUNT">SFC_GET_SIMPLE_FORMAT_COUNT</A></TD>
|
Chris@0
|
108 <TD>Retrieve the number of simple formats supported by libsndfile.</TD>
|
Chris@0
|
109 </TR>
|
Chris@0
|
110 <TR>
|
Chris@0
|
111 <TD><A HREF="#SFC_GET_SIMPLE_FORMAT">SFC_GET_SIMPLE_FORMAT</A></TD>
|
Chris@0
|
112 <TD>Retrieve information about a simple format.</TD>
|
Chris@0
|
113 </TR>
|
Chris@0
|
114
|
Chris@0
|
115 <TR>
|
Chris@0
|
116 <TD><A HREF="#SFC_GET_FORMAT_INFO">SFC_GET_FORMAT_INFO</A></TD>
|
Chris@0
|
117 <TD>Retrieve information about a major or subtype format.</TD>
|
Chris@0
|
118 </TR>
|
Chris@0
|
119
|
Chris@0
|
120 <TR>
|
Chris@0
|
121 <TD><A HREF="#SFC_GET_FORMAT_MAJOR_COUNT">SFC_GET_FORMAT_MAJOR_COUNT</A></TD>
|
Chris@0
|
122 <TD>Retrieve the number of major formats.</TD>
|
Chris@0
|
123 </TR>
|
Chris@0
|
124 <TR>
|
Chris@0
|
125 <TD><A HREF="#SFC_GET_FORMAT_MAJOR">SFC_GET_FORMAT_MAJOR</A></TD>
|
Chris@0
|
126 <TD>Retrieve information about a major format type.</TD>
|
Chris@0
|
127 </TR>
|
Chris@0
|
128 <TR>
|
Chris@0
|
129 <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE_COUNT">SFC_GET_FORMAT_SUBTYPE_COUNT</A></TD>
|
Chris@0
|
130 <TD>Retrieve the number of subformats.</TD>
|
Chris@0
|
131 </TR>
|
Chris@0
|
132 <TR>
|
Chris@0
|
133 <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE">SFC_GET_FORMAT_SUBTYPE</A></TD>
|
Chris@0
|
134 <TD>Retrieve information about a subformat.</TD>
|
Chris@0
|
135 </TR>
|
Chris@0
|
136
|
Chris@0
|
137 <TR>
|
Chris@0
|
138 <TD><A HREF="#SFC_SET_ADD_PEAK_CHUNK">SFC_SET_ADD_PEAK_CHUNK</A></TD>
|
Chris@0
|
139 <TD>Switch the code for adding the PEAK chunk to WAV and AIFF files on or off.</TD>
|
Chris@0
|
140 </TR>
|
Chris@0
|
141
|
Chris@0
|
142 <TR>
|
Chris@0
|
143 <TD><A HREF="#SFC_UPDATE_HEADER_NOW">SFC_UPDATE_HEADER_NOW</A></TD>
|
Chris@0
|
144 <TD>Used when a file is open for write, this command will update the file
|
Chris@0
|
145 header to reflect the data written so far.</TD>
|
Chris@0
|
146 </TR>
|
Chris@0
|
147 <TR>
|
Chris@0
|
148 <TD><A HREF="#SFC_SET_UPDATE_HEADER_AUTO">SFC_SET_UPDATE_HEADER_AUTO</A></TD>
|
Chris@0
|
149 <TD>Used when a file is open for write, this command will cause the file header
|
Chris@0
|
150 to be updated after each write to the file.</TD>
|
Chris@0
|
151 </TR>
|
Chris@0
|
152
|
Chris@0
|
153 <TR>
|
Chris@0
|
154 <TD><A HREF="#SFC_FILE_TRUNCATE">SFC_FILE_TRUNCATE</A></TD>
|
Chris@0
|
155 <TD>Truncate a file open for write or for read/write.</TD>
|
Chris@0
|
156 </TR>
|
Chris@0
|
157
|
Chris@0
|
158 <TR>
|
Chris@0
|
159 <TD><A HREF="#SFC_SET_RAW_START_OFFSET">SFC_SET_RAW_START_OFFSET</A></TD>
|
Chris@0
|
160 <TD>Change the data start offset for files opened up as SF_FORMAT_RAW.</TD>
|
Chris@0
|
161 </TR>
|
Chris@0
|
162
|
Chris@0
|
163 <TR>
|
Chris@0
|
164 <TD><A HREF="#SFC_SET_CLIPPING">SFC_SET_CLIPPING</A></TD>
|
Chris@0
|
165 <TD>Turn on/off automatic clipping when doing floating point to integer
|
Chris@0
|
166 conversion.</TD>
|
Chris@0
|
167 </TR>
|
Chris@0
|
168
|
Chris@0
|
169 <TR>
|
Chris@0
|
170 <TD><A HREF="#SFC_GET_CLIPPING">SFC_GET_CLIPPING</A></TD>
|
Chris@0
|
171 <TD>Retrieve current clipping setting.</TD>
|
Chris@0
|
172 </TR>
|
Chris@0
|
173
|
Chris@0
|
174 <TR>
|
Chris@0
|
175 <TD><A HREF="#SFC_GET_EMBED_FILE_INFO">SFC_GET_EMBED_FILE_INFO</A></TD>
|
Chris@0
|
176 <TD>Retrieve information about audio files embedded inside other files.</TD>
|
Chris@0
|
177 </TR>
|
Chris@0
|
178
|
Chris@0
|
179 <TR>
|
Chris@0
|
180 <TD><A HREF="#SFC_WAVEX_GET_AMBISONIC">SFC_GET_AMBISONIC</A></TD>
|
Chris@0
|
181 <TD>Test a WAVEX file for Ambisonic format</TD>
|
Chris@0
|
182 </TR>
|
Chris@0
|
183
|
Chris@0
|
184 <TR>
|
Chris@0
|
185 <TD><A HREF="#SFC_WAVEX_SET_AMBISONIC">SFC_SET_AMBISONIC</A></TD>
|
Chris@0
|
186 <TD>Modify a WAVEX header for Ambisonic format</TD>
|
Chris@0
|
187 </TR>
|
Chris@0
|
188
|
Chris@0
|
189 <TR>
|
Chris@0
|
190 <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>
|
Chris@0
|
191 <TD>Set the the Variable Bit Rate encoding quality</TD>
|
Chris@0
|
192 </TR>
|
Chris@0
|
193
|
Chris@0
|
194 <TR>
|
Chris@0
|
195 <TD><A HREF="#SFC_RAW_NEEDS_ENDSWAP">SFC_RAW_NEEDS_ENDSWAP</a></td>
|
Chris@0
|
196 <TD>Determine if raw data needs endswapping</TD>
|
Chris@0
|
197 </TR>
|
Chris@0
|
198
|
Chris@0
|
199 <TR>
|
Chris@0
|
200 <TD><A HREF="#SFC_GET_BROADCAST_INFO">SFC_GET_BROADCAST_INFO</A></TD>
|
Chris@0
|
201 <TD>Retrieve the Broadcast Chunk info</TD>
|
Chris@0
|
202 </TR>
|
Chris@0
|
203
|
Chris@0
|
204 <TR>
|
Chris@0
|
205 <TD><A HREF="#SFC_SET_BROADCAST_INFO">SFC_SET_BROADCAST_INFO</A></TD>
|
Chris@0
|
206 <TD>Set the Broadcast Chunk info</TD>
|
Chris@0
|
207 </TR>
|
Chris@0
|
208
|
Chris@0
|
209 <TR>
|
Chris@0
|
210 <TD><A HREF="#SFC_GET_LOOP_INFO">SFC_GET_LOOP_INFO</A></TD>
|
Chris@0
|
211 <TD>Get loop info</TD>
|
Chris@0
|
212 </TR>
|
Chris@0
|
213
|
Chris@0
|
214 <TR>
|
Chris@0
|
215 <TD><A HREF="#SFC_GET_INSTRUMENT">SFC_GET_INSTRUMENT</A></TD>
|
Chris@0
|
216 <TD>Get instrument info</TD>
|
Chris@0
|
217 </TR>
|
Chris@0
|
218
|
Chris@0
|
219 <TR>
|
Chris@0
|
220 <TD><A HREF="#SFC_SET_INSTRUMENT">SFC_SET_INSTRUMENT</A></TD>
|
Chris@0
|
221 <TD>Set instrument info</TD>
|
Chris@0
|
222 </TR>
|
Chris@0
|
223
|
Chris@0
|
224 <TR>
|
Chris@0
|
225 <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>
|
Chris@0
|
226 <TD>Set variable bit rate encoding quality</TD>
|
Chris@0
|
227 </TR>
|
Chris@0
|
228
|
Chris@0
|
229
|
Chris@0
|
230
|
Chris@0
|
231 <!--
|
Chris@0
|
232 <TR>
|
Chris@0
|
233 <TD><A HREF="#add-dither">add dither</A></TD>
|
Chris@0
|
234 <TD>Add dither to output on write.</TD>
|
Chris@0
|
235 </TR>
|
Chris@0
|
236 -->
|
Chris@0
|
237 </TABLE>
|
Chris@0
|
238 </CENTER>
|
Chris@0
|
239
|
Chris@0
|
240 <BR><BR>
|
Chris@0
|
241
|
Chris@0
|
242 <HR>
|
Chris@0
|
243
|
Chris@0
|
244 <!-- ========================================================================= -->
|
Chris@0
|
245 <A NAME="SFC_GET_LIB_VERSION"></A>
|
Chris@0
|
246 <H2><BR><B>SFC_GET_LIB_VERSION</B></H2>
|
Chris@0
|
247 <P>
|
Chris@0
|
248 Retrieve the version of the library as a string.
|
Chris@0
|
249 </P>
|
Chris@0
|
250 <P>
|
Chris@0
|
251 Parameters:
|
Chris@0
|
252 <PRE>
|
Chris@0
|
253 sndfile : Not used
|
Chris@0
|
254 cmd : SFC_GET_LIB_VERSION
|
Chris@0
|
255 data : A pointer to a char buffer
|
Chris@0
|
256 datasize : The size of the the buffer
|
Chris@0
|
257 </PRE>
|
Chris@0
|
258 <P>
|
Chris@0
|
259 Example:
|
Chris@0
|
260 </P>
|
Chris@0
|
261 <PRE>
|
Chris@0
|
262 char buffer [128] ;
|
Chris@0
|
263 sf_command (NULL, SFC_GET_LIB_VERSION, buffer, sizeof (buffer)) ;
|
Chris@0
|
264 </PRE>
|
Chris@0
|
265
|
Chris@0
|
266 <DL>
|
Chris@0
|
267 <DT>Return value:</DT>
|
Chris@0
|
268 <DD><DD>This call will return the length of the retrieved version string.
|
Chris@0
|
269 </DL>
|
Chris@0
|
270 <DL>
|
Chris@0
|
271 <DT>Notes:</DT>
|
Chris@0
|
272 <DD>
|
Chris@0
|
273 The string returned in the buffer passed to this function will not overflow
|
Chris@0
|
274 the buffer and will always be null terminated .
|
Chris@0
|
275 </DL>
|
Chris@0
|
276
|
Chris@0
|
277 <!-- ========================================================================= -->
|
Chris@0
|
278 <A NAME="SFC_GET_LOG_INFO"></A>
|
Chris@0
|
279 <H2><BR><B>SFC_GET_LOG_INFO</B></H2>
|
Chris@0
|
280 <P>
|
Chris@0
|
281 Retrieve the log buffer generated when opening a file as a string. This log
|
Chris@0
|
282 buffer can often contain a good reason for why libsndfile failed to open a
|
Chris@0
|
283 particular file.
|
Chris@0
|
284 </P>
|
Chris@0
|
285 <P>
|
Chris@0
|
286 Parameters:
|
Chris@0
|
287 <PRE>
|
Chris@0
|
288 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
289 cmd : SFC_GET_LOG_INFO
|
Chris@0
|
290 data : A pointer to a char buffer
|
Chris@0
|
291 datasize : The size of the the buffer
|
Chris@0
|
292 </PRE>
|
Chris@0
|
293 <P>
|
Chris@0
|
294 Example:
|
Chris@0
|
295 </P>
|
Chris@0
|
296 <PRE>
|
Chris@0
|
297 char buffer [2048] ;
|
Chris@0
|
298 sf_command (sndfile, SFC_GET_LOG_INFO, buffer, sizeof (buffer)) ;
|
Chris@0
|
299 </PRE>
|
Chris@0
|
300
|
Chris@0
|
301 <DL>
|
Chris@0
|
302 <DT>Return value:</DT>
|
Chris@0
|
303 <DD><DD>This call will return the length of the retrieved version string.
|
Chris@0
|
304 </DL>
|
Chris@0
|
305 <DL>
|
Chris@0
|
306 <DT>Notes:</DT>
|
Chris@0
|
307 <DD>
|
Chris@0
|
308 The string returned in the buffer passed to this function will not overflow
|
Chris@0
|
309 the buffer and will always be null terminated .
|
Chris@0
|
310 </DL>
|
Chris@0
|
311
|
Chris@0
|
312 <!-- ========================================================================= -->
|
Chris@0
|
313 <A NAME="SFC_CALC_SIGNAL_MAX"></A>
|
Chris@0
|
314 <H2><BR><B>SFC_CALC_SIGNAL_MAX</B></H2>
|
Chris@0
|
315 <P>
|
Chris@0
|
316 Retrieve the measured maximum signal value. This involves reading through
|
Chris@0
|
317 the whole file which can be slow on large files.
|
Chris@0
|
318 </P>
|
Chris@0
|
319 <P>
|
Chris@0
|
320 Parameters:
|
Chris@0
|
321 <PRE>
|
Chris@0
|
322 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
323 cmd : SFC_CALC_SIGNAL_MAX
|
Chris@0
|
324 data : A pointer to a double
|
Chris@0
|
325 datasize : sizeof (double)
|
Chris@0
|
326 </PRE>
|
Chris@0
|
327 <P>
|
Chris@0
|
328 Example:
|
Chris@0
|
329 </P>
|
Chris@0
|
330 <PRE>
|
Chris@0
|
331 double max_val ;
|
Chris@0
|
332 sf_command (sndfile, SFC_CALC_SIGNAL_MAX, &max_val, sizeof (max_val)) ;
|
Chris@0
|
333 </PRE>
|
Chris@0
|
334
|
Chris@0
|
335 <DL>
|
Chris@0
|
336 <DT>Return value:</DT>
|
Chris@0
|
337 <DD><DD>Zero on success, non-zero otherwise.
|
Chris@0
|
338 </DL>
|
Chris@0
|
339
|
Chris@0
|
340 <!-- ========================================================================= -->
|
Chris@0
|
341 <A NAME="SFC_CALC_NORM_SIGNAL_MAX"></A>
|
Chris@0
|
342 <H2><BR><B>SFC_CALC_NORM_SIGNAL_MAX</B></H2>
|
Chris@0
|
343 <P>
|
Chris@0
|
344 Retrieve the measured normalised maximum signal value. This involves reading
|
Chris@0
|
345 through the whole file which can be slow on large files.
|
Chris@0
|
346 </P>
|
Chris@0
|
347 <P>
|
Chris@0
|
348 Parameters:
|
Chris@0
|
349 <PRE>
|
Chris@0
|
350 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
351 cmd : SFC_CALC_NORM_SIGNAL_MAX
|
Chris@0
|
352 data : A pointer to a double
|
Chris@0
|
353 datasize : sizeof (double)
|
Chris@0
|
354 </PRE>
|
Chris@0
|
355 <P>
|
Chris@0
|
356 Example:
|
Chris@0
|
357 </P>
|
Chris@0
|
358 <PRE>
|
Chris@0
|
359 double max_val ;
|
Chris@0
|
360 sf_command (sndfile, SFC_CALC_NORM_SIGNAL_MAX, &max_val, sizeof (max_val)) ;
|
Chris@0
|
361 </PRE>
|
Chris@0
|
362
|
Chris@0
|
363 <DL>
|
Chris@0
|
364 <DT>Return value:</DT>
|
Chris@0
|
365 <DD><DD>Zero on success, non-zero otherwise.
|
Chris@0
|
366 </DL>
|
Chris@0
|
367
|
Chris@0
|
368 <!-- ========================================================================= -->
|
Chris@0
|
369 <A NAME="SFC_CALC_MAX_ALL_CHANNELS"></A>
|
Chris@0
|
370 <H2><BR><B>SFC_CALC_MAX_ALL_CHANNELS</B></H2>
|
Chris@0
|
371 <P>
|
Chris@0
|
372 Calculate the peak value (ie a single number) for each channel.
|
Chris@0
|
373 This involves reading through the whole file which can be slow on large files.
|
Chris@0
|
374 </P>
|
Chris@0
|
375 <P>
|
Chris@0
|
376 Parameters:
|
Chris@0
|
377 <PRE>
|
Chris@0
|
378 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
379 cmd : SFC_CALC_MAX_ALL_CHANNELS
|
Chris@0
|
380 data : A pointer to a double
|
Chris@0
|
381 datasize : sizeof (double) * number_of_channels
|
Chris@0
|
382 </PRE>
|
Chris@0
|
383 <P>
|
Chris@0
|
384 Example:
|
Chris@0
|
385 </P>
|
Chris@0
|
386 <PRE>
|
Chris@0
|
387 double peaks [number_of_channels] ;
|
Chris@0
|
388 sf_command (sndfile, SFC_CALC_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
|
Chris@0
|
389 </PRE>
|
Chris@0
|
390 <DL>
|
Chris@0
|
391 <DT>Return value:</DT>
|
Chris@0
|
392 <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
|
Chris@0
|
393 </DL>
|
Chris@0
|
394
|
Chris@0
|
395
|
Chris@0
|
396 <!-- ========================================================================= -->
|
Chris@0
|
397 <A NAME="SFC_CALC_NORM_MAX_ALL_CHANNELS"></A>
|
Chris@0
|
398 <H2><BR><B>SFC_CALC_NORM_MAX_ALL_CHANNELS</B></H2>
|
Chris@0
|
399 <P>
|
Chris@0
|
400 Calculate the normalised peak for each channel.
|
Chris@0
|
401 This involves reading through the whole file which can be slow on large files.
|
Chris@0
|
402 </P>
|
Chris@0
|
403 <P>
|
Chris@0
|
404 Parameters:
|
Chris@0
|
405 <PRE>
|
Chris@0
|
406 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
407 cmd : SFC_CALC_NORM_MAX_ALL_CHANNELS
|
Chris@0
|
408 data : A pointer to a double
|
Chris@0
|
409 datasize : sizeof (double) * number_of_channels
|
Chris@0
|
410 </PRE>
|
Chris@0
|
411 <P>
|
Chris@0
|
412 Example:
|
Chris@0
|
413 </P>
|
Chris@0
|
414 <PRE>
|
Chris@0
|
415 double peaks [number_of_channels] ;
|
Chris@0
|
416 sf_command (sndfile, SFC_CALC_NORM_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
|
Chris@0
|
417 </PRE>
|
Chris@0
|
418 <DL>
|
Chris@0
|
419 <DT>Return value:</DT>
|
Chris@0
|
420 <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
|
Chris@0
|
421 </DL>
|
Chris@0
|
422
|
Chris@0
|
423
|
Chris@0
|
424
|
Chris@0
|
425
|
Chris@0
|
426 <!-- ========================================================================= -->
|
Chris@0
|
427 <A NAME="SFC_GET_SIGNAL_MAX"></A>
|
Chris@0
|
428 <H2><BR><B>SFC_GET_SIGNAL_MAX</B></H2>
|
Chris@0
|
429 <P>
|
Chris@0
|
430 Retrieve the peak value for the file as stored in the file header.
|
Chris@0
|
431 </P>
|
Chris@0
|
432 <P>
|
Chris@0
|
433 Parameters:
|
Chris@0
|
434 <PRE>
|
Chris@0
|
435 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
436 cmd : SFC_GET_SIGNAL_MAX
|
Chris@0
|
437 data : A pointer to a double
|
Chris@0
|
438 datasize : sizeof (double)
|
Chris@0
|
439 </PRE>
|
Chris@0
|
440 <P>
|
Chris@0
|
441 Example:
|
Chris@0
|
442 </P>
|
Chris@0
|
443 <PRE>
|
Chris@0
|
444 double max_peak ;
|
Chris@0
|
445 sf_command (sndfile, SFC_GET_SIGNAL_MAX, &max_peak, sizeof (max_peak)) ;
|
Chris@0
|
446 </PRE>
|
Chris@0
|
447 <DL>
|
Chris@0
|
448 <DT>Return value:</DT>
|
Chris@0
|
449 <DD>SF_TRUE if the file header contained the peak value. SF_FALSE otherwise.
|
Chris@0
|
450 </DL>
|
Chris@0
|
451
|
Chris@0
|
452 <!-- ========================================================================= -->
|
Chris@0
|
453 <A NAME="SFC_GET_MAX_ALL_CHANNELS"></A>
|
Chris@0
|
454 <H2><BR><B>SFC_GET_MAX_ALL_CHANNELS</B></H2>
|
Chris@0
|
455 <P>
|
Chris@0
|
456 Retrieve the peak value for the file as stored in the file header.
|
Chris@0
|
457 </P>
|
Chris@0
|
458 <P>
|
Chris@0
|
459 Parameters:
|
Chris@0
|
460 <PRE>
|
Chris@0
|
461 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
462 cmd : SFC_GET_SIGNAL_MAX
|
Chris@0
|
463 data : A pointer to an array of doubles
|
Chris@0
|
464 datasize : sizeof (double) * number_of_channels
|
Chris@0
|
465 </PRE>
|
Chris@0
|
466 <P>
|
Chris@0
|
467 Example:
|
Chris@0
|
468 </P>
|
Chris@0
|
469 <PRE>
|
Chris@0
|
470 double peaks [number_of_channels] ;
|
Chris@0
|
471 sf_command (sndfile, SFC_GET_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
|
Chris@0
|
472 </PRE>
|
Chris@0
|
473 <DL>
|
Chris@0
|
474 <DT>Return value:</DT>
|
Chris@0
|
475 <DD>SF_TRUE if the file header contains per channel peak values for the file.
|
Chris@0
|
476 SF_FALSE otherwise.
|
Chris@0
|
477 </DL>
|
Chris@0
|
478
|
Chris@0
|
479
|
Chris@0
|
480 <!-- ========================================================================= -->
|
Chris@0
|
481 <A NAME="SFC_SET_NORM_FLOAT"></A>
|
Chris@0
|
482 <H2><BR><B>SFC_SET_NORM_FLOAT</B></H2>
|
Chris@0
|
483 <P>
|
Chris@0
|
484 This command only affects data read from or written to using the floating point functions:
|
Chris@0
|
485 </P>
|
Chris@0
|
486 <PRE>
|
Chris@0
|
487 size_t <A HREF="api.html#read">sf_read_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
|
Chris@0
|
488 size_t <A HREF="api.html#readf">sf_readf_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
|
Chris@0
|
489
|
Chris@0
|
490 size_t <A HREF="api.html#write">sf_write_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
|
Chris@0
|
491 size_t <A HREF="api.html#writef">sf_writef_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
|
Chris@0
|
492 </PRE>
|
Chris@0
|
493 <P>
|
Chris@0
|
494 Parameters:
|
Chris@0
|
495 </P>
|
Chris@0
|
496 <PRE>
|
Chris@0
|
497 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
498 cmd : SFC_SET_NORM_FLOAT
|
Chris@0
|
499 data : NULL
|
Chris@0
|
500 datasize : SF_TRUE or SF_FALSE
|
Chris@0
|
501 </PRE>
|
Chris@0
|
502 <P>
|
Chris@0
|
503 For read operations setting normalisation to SF_TRUE means that the data from all
|
Chris@0
|
504 subsequent reads will be be normalised to the range [-1.0, 1.0].
|
Chris@0
|
505 </P>
|
Chris@0
|
506 <P>
|
Chris@0
|
507 For write operations, setting normalisation to SF_TRUE means than all data supplied
|
Chris@0
|
508 to the float write functions should be in the range [-1.0, 1.0] and will be scaled
|
Chris@0
|
509 for the file format as necessary.
|
Chris@0
|
510 </P>
|
Chris@0
|
511 <P>
|
Chris@0
|
512 For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
|
Chris@0
|
513 </P>
|
Chris@0
|
514 <P>
|
Chris@0
|
515 Example:
|
Chris@0
|
516 </P>
|
Chris@0
|
517 <PRE>
|
Chris@0
|
518 sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE) ;
|
Chris@0
|
519
|
Chris@0
|
520 sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_FALSE) ;
|
Chris@0
|
521 </PRE>
|
Chris@0
|
522 <DL>
|
Chris@0
|
523 <DT>Return value: </DT>
|
Chris@0
|
524 <DD>Returns the previous float normalisation mode.
|
Chris@0
|
525 </DL>
|
Chris@0
|
526
|
Chris@0
|
527 <!-- ========================================================================= -->
|
Chris@0
|
528 <A NAME="SFC_SET_NORM_DOUBLE"></A>
|
Chris@0
|
529 <H2><BR><B>SFC_SET_NORM_DOUBLE</B></H2>
|
Chris@0
|
530 <P>
|
Chris@0
|
531 This command only affects data read from or written to using the double precision
|
Chris@0
|
532 floating point functions:
|
Chris@0
|
533 </P>
|
Chris@0
|
534 <PRE>
|
Chris@0
|
535 size_t <A HREF="api.html#read">sf_read_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
|
Chris@0
|
536 size_t <A HREF="api.html#readf">sf_readf_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
|
Chris@0
|
537
|
Chris@0
|
538 size_t <A HREF="api.html#write">sf_write_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
|
Chris@0
|
539 size_t <A HREF="api.html#writef">sf_writef_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
|
Chris@0
|
540 </PRE>
|
Chris@0
|
541 <P>
|
Chris@0
|
542 Parameters:
|
Chris@0
|
543 </P>
|
Chris@0
|
544 <PRE>
|
Chris@0
|
545 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
546 cmd : SFC_SET_NORM_DOUBLE
|
Chris@0
|
547 data : NULL
|
Chris@0
|
548 datasize : SF_TRUE or SF_FALSE
|
Chris@0
|
549 </PRE>
|
Chris@0
|
550 <P>
|
Chris@0
|
551 For read operations setting normalisation to SF_TRUE means that the data
|
Chris@0
|
552 from all subsequent reads will be be normalised to the range [-1.0, 1.0].
|
Chris@0
|
553 </P>
|
Chris@0
|
554 <P>
|
Chris@0
|
555 For write operations, setting normalisation to SF_TRUE means than all data supplied
|
Chris@0
|
556 to the double write functions should be in the range [-1.0, 1.0] and will be scaled
|
Chris@0
|
557 for the file format as necessary.
|
Chris@0
|
558 </P>
|
Chris@0
|
559 <P>
|
Chris@0
|
560 For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
|
Chris@0
|
561 </P>
|
Chris@0
|
562 <P>
|
Chris@0
|
563 Example:
|
Chris@0
|
564 </P>
|
Chris@0
|
565 <PRE>
|
Chris@0
|
566 sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;
|
Chris@0
|
567
|
Chris@0
|
568 sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_FALSE) ;
|
Chris@0
|
569 </PRE>
|
Chris@0
|
570 <DL>
|
Chris@0
|
571 <DT>Return value: </DT>
|
Chris@0
|
572 <DD>Returns the previous double normalisation mode.
|
Chris@0
|
573 </DL>
|
Chris@0
|
574
|
Chris@0
|
575 <!-- ========================================================================= -->
|
Chris@0
|
576 <A NAME="SFC_GET_NORM_FLOAT"></A>
|
Chris@0
|
577 <H2><BR><B>SFC_GET_NORM_FLOAT</B></H2>
|
Chris@0
|
578 <P>
|
Chris@0
|
579 Retrieve the current float normalisation mode.
|
Chris@0
|
580 </P>
|
Chris@0
|
581 <P>
|
Chris@0
|
582 Parameters:
|
Chris@0
|
583 </P>
|
Chris@0
|
584 <PRE>
|
Chris@0
|
585 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
586 cmd : SFC_GET_NORM_FLOAT
|
Chris@0
|
587 data : NULL
|
Chris@0
|
588 datasize : anything
|
Chris@0
|
589 </PRE>
|
Chris@0
|
590 <P>
|
Chris@0
|
591 Example:
|
Chris@0
|
592 </P>
|
Chris@0
|
593 <PRE>
|
Chris@0
|
594 normalisation = sf_command (sndfile, SFC_GET_NORM_FLOAT, NULL, 0) ;
|
Chris@0
|
595 </PRE>
|
Chris@0
|
596 <DL>
|
Chris@0
|
597 <DT>Return value: </DT>
|
Chris@0
|
598 <DD>Returns TRUE if normalisation is on and FALSE otherwise.
|
Chris@0
|
599 </DL>
|
Chris@0
|
600
|
Chris@0
|
601 <!-- ========================================================================= -->
|
Chris@0
|
602 <A NAME="SFC_GET_NORM_DOUBLE"></A>
|
Chris@0
|
603 <H2><BR><B>SFC_GET_NORM_DOUBLE</B></H2>
|
Chris@0
|
604 <P>
|
Chris@0
|
605 Retrieve the current float normalisation mode.
|
Chris@0
|
606 </P>
|
Chris@0
|
607 <P>
|
Chris@0
|
608 Parameters:
|
Chris@0
|
609 </P>
|
Chris@0
|
610 <PRE>
|
Chris@0
|
611 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
612 cmd : SFC_GET_NORM_DOUBLE
|
Chris@0
|
613 data : NULL
|
Chris@0
|
614 datasize : anything
|
Chris@0
|
615 </PRE>
|
Chris@0
|
616 <P>
|
Chris@0
|
617 Example:
|
Chris@0
|
618 </P>
|
Chris@0
|
619 <PRE>
|
Chris@0
|
620 normalisation = sf_command (sndfile, SFC_GET_NORM_DOUBLE, NULL, 0) ;
|
Chris@0
|
621 </PRE>
|
Chris@0
|
622 <DL>
|
Chris@0
|
623 <DT>Return value: </DT>
|
Chris@0
|
624 <DD>Returns TRUE if normalisation is on and FALSE otherwise.
|
Chris@0
|
625 </DL>
|
Chris@0
|
626
|
Chris@0
|
627
|
Chris@0
|
628 <!-- ========================================================================= -->
|
Chris@0
|
629 <A NAME="SFC_SET_SCALE_FLOAT_INT_READ"></A>
|
Chris@0
|
630 <H2><BR><B>SFC_SET_SCALE_FLOAT_INT_READ</B></H2>
|
Chris@0
|
631 <P>
|
Chris@0
|
632 Set/clear the scale factor when integer (short/int) data is read from a file
|
Chris@0
|
633 containing floating point data.
|
Chris@0
|
634 </P>
|
Chris@0
|
635 <P>
|
Chris@0
|
636 Parameters:
|
Chris@0
|
637 </P>
|
Chris@0
|
638 <PRE>
|
Chris@0
|
639 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
640 cmd : SFC_SET_SCALE_FLOAT_INT_READ
|
Chris@0
|
641 data : NULL
|
Chris@0
|
642 datasize : TRUE or FALSE
|
Chris@0
|
643 </PRE>
|
Chris@0
|
644 <P>
|
Chris@0
|
645 Example:
|
Chris@0
|
646 </P>
|
Chris@0
|
647 <PRE>
|
Chris@0
|
648 sf_command (sndfile, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE) ;
|
Chris@0
|
649 </PRE>
|
Chris@0
|
650 <DL>
|
Chris@0
|
651 <DT>Return value: </DT>
|
Chris@0
|
652 <DD>Returns the previous SFC_SET_SCALE_FLOAT_INT_READ setting for this file.
|
Chris@0
|
653 </DL>
|
Chris@0
|
654
|
Chris@0
|
655
|
Chris@0
|
656 <!-- ========================================================================= -->
|
Chris@0
|
657 <A NAME="SFC_SET_SCALE_INT_FLOAT_WRITE"></A>
|
Chris@0
|
658 <H2><BR><B>SFC_SET_SCALE_INT_FLOAT_WRITE</B></H2>
|
Chris@0
|
659 <P>
|
Chris@0
|
660 Set/clear the scale factor when integer (short/int) data is written to a file
|
Chris@0
|
661 as floating point data.
|
Chris@0
|
662 </P>
|
Chris@0
|
663 <P>
|
Chris@0
|
664 Parameters:
|
Chris@0
|
665 </P>
|
Chris@0
|
666 <PRE>
|
Chris@0
|
667 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
668 cmd : SFC_SET_SCALE_FLOAT_INT_READ
|
Chris@0
|
669 data : NULL
|
Chris@0
|
670 datasize : TRUE or FALSE
|
Chris@0
|
671 </PRE>
|
Chris@0
|
672 <P>
|
Chris@0
|
673 Example:
|
Chris@0
|
674 </P>
|
Chris@0
|
675 <PRE>
|
Chris@0
|
676 sf_command (sndfile, SFC_SET_SCALE_INT_FLOAT_WRITE, NULL, SF_TRUE) ;
|
Chris@0
|
677 </PRE>
|
Chris@0
|
678 <DL>
|
Chris@0
|
679 <DT>Return value: </DT>
|
Chris@0
|
680 <DD>Returns the previous SFC_SET_SCALE_INT_FLOAT_WRITE setting for this file.
|
Chris@0
|
681 </DL>
|
Chris@0
|
682
|
Chris@0
|
683 <!-- ========================================================================= -->
|
Chris@0
|
684 <A NAME="SFC_GET_SIMPLE_FORMAT_COUNT"></A>
|
Chris@0
|
685 <H2><BR><B>SFC_GET_SIMPLE_FORMAT_COUNT</B></H2>
|
Chris@0
|
686 <P>
|
Chris@0
|
687 Retrieve the number of simple formats supported by libsndfile.
|
Chris@0
|
688 </P>
|
Chris@0
|
689 <P>
|
Chris@0
|
690 Parameters:
|
Chris@0
|
691 </P>
|
Chris@0
|
692 <PRE>
|
Chris@0
|
693 sndfile : Not used.
|
Chris@0
|
694 cmd : SFC_GET_SIMPLE_FORMAT_COUNT
|
Chris@0
|
695 data : a pointer to an int
|
Chris@0
|
696 datasize : sizeof (int)
|
Chris@0
|
697 </PRE>
|
Chris@0
|
698 <P>
|
Chris@0
|
699 Example:
|
Chris@0
|
700 </P>
|
Chris@0
|
701 <PRE>
|
Chris@0
|
702 int count ;
|
Chris@0
|
703 sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
704 </PRE>
|
Chris@0
|
705 <DL>
|
Chris@0
|
706 <DT>Return value: </DT>
|
Chris@0
|
707 <DD>0
|
Chris@0
|
708 </DL>
|
Chris@0
|
709
|
Chris@0
|
710 <!-- ========================================================================= -->
|
Chris@0
|
711 <A NAME="SFC_GET_SIMPLE_FORMAT"></A>
|
Chris@0
|
712 <H2><BR><B>SFC_GET_SIMPLE_FORMAT</B></H2>
|
Chris@0
|
713 <P>
|
Chris@0
|
714 Retrieve information about a simple format.
|
Chris@0
|
715 </P>
|
Chris@0
|
716 <P>
|
Chris@0
|
717 Parameters:
|
Chris@0
|
718 </P>
|
Chris@0
|
719 <PRE>
|
Chris@0
|
720 sndfile : Not used.
|
Chris@0
|
721 cmd : SFC_GET_SIMPLE_FORMAT
|
Chris@0
|
722 data : a pointer to an SF_FORMAT_INFO struct
|
Chris@0
|
723 datasize : sizeof (SF_FORMAT_INFO)
|
Chris@0
|
724 </PRE>
|
Chris@0
|
725 <P>
|
Chris@0
|
726 The SF_FORMAT_INFO struct is defined in <sndfile.h> as:
|
Chris@0
|
727 </P>
|
Chris@0
|
728 <PRE>
|
Chris@0
|
729 typedef struct
|
Chris@0
|
730 { int format ;
|
Chris@0
|
731 const char *name ;
|
Chris@0
|
732 const char *extension ;
|
Chris@0
|
733 } SF_FORMAT_INFO ;
|
Chris@0
|
734 </PRE>
|
Chris@0
|
735 <P>
|
Chris@0
|
736 When sf_command() is called with SF_GET_SIMPLE_FORMAT, the value of the format
|
Chris@0
|
737 field should be the format number (ie 0 <= format <= count value obtained using
|
Chris@0
|
738 SF_GET_SIMPLE_FORMAT_COUNT).
|
Chris@0
|
739 </P>
|
Chris@0
|
740 <P>
|
Chris@0
|
741 Example:
|
Chris@0
|
742 </P>
|
Chris@0
|
743 <PRE>
|
Chris@0
|
744 SF_FORMAT_INFO format_info ;
|
Chris@0
|
745 int k, count ;
|
Chris@0
|
746
|
Chris@0
|
747 sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
748
|
Chris@0
|
749 for (k = 0 ; k < count ; k++)
|
Chris@0
|
750 { format_info.format = k ;
|
Chris@0
|
751 sf_command (sndfile, SFC_GET_SIMPLE_FORMAT, &format_info, sizeof (format_info)) ;
|
Chris@0
|
752 printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
|
Chris@0
|
753 } ;
|
Chris@0
|
754 </PRE>
|
Chris@0
|
755 <DL>
|
Chris@0
|
756 <DT>Return value: </DT>
|
Chris@0
|
757 <DD>0 on success and non-zero otherwise.
|
Chris@0
|
758 <DD>The value of the format field of the SF_FORMAT_INFO struct will be a value which
|
Chris@0
|
759 can be placed in the format field of an SF_INFO struct when a file is to be opened
|
Chris@0
|
760 for write.
|
Chris@0
|
761 <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft 16 bit PCM)".
|
Chris@0
|
762 <DD>The extension field will contain the most commonly used file extension for that file type.
|
Chris@0
|
763 </DL>
|
Chris@0
|
764
|
Chris@0
|
765 <!-- ========================================================================= -->
|
Chris@0
|
766 <A NAME="SFC_GET_FORMAT_INFO"></A>
|
Chris@0
|
767 <H2><BR><B>SFC_GET_FORMAT_INFO</B></H2>
|
Chris@0
|
768 <P>
|
Chris@0
|
769 Retrieve information about a major or subtype format.
|
Chris@0
|
770 </P>
|
Chris@0
|
771 <P>
|
Chris@0
|
772 Parameters:
|
Chris@0
|
773 </P>
|
Chris@0
|
774 <PRE>
|
Chris@0
|
775 sndfile : Not used.
|
Chris@0
|
776 cmd : SFC_GET_FORMAT_INFO
|
Chris@0
|
777 data : a pointer to an SF_FORMAT_INFO struct
|
Chris@0
|
778 datasize : sizeof (SF_FORMAT_INFO)
|
Chris@0
|
779 </PRE>
|
Chris@0
|
780 <P>
|
Chris@0
|
781 The SF_FORMAT_INFO struct is defined in <sndfile.h> as:
|
Chris@0
|
782 </P>
|
Chris@0
|
783 <PRE>
|
Chris@0
|
784 typedef struct
|
Chris@0
|
785 { int format ;
|
Chris@0
|
786 const char *name ;
|
Chris@0
|
787 const char *extension ;
|
Chris@0
|
788 } SF_FORMAT_INFO ;
|
Chris@0
|
789 </PRE>
|
Chris@0
|
790 <P>
|
Chris@0
|
791 When sf_command() is called with SF_GET_FORMAT_INFO, the format field is
|
Chris@0
|
792 examined and if (format & SF_FORMAT_TYPEMASK) is a valid format then the struct
|
Chris@0
|
793 is filled in with information about the given major type.
|
Chris@0
|
794 If (format & SF_FORMAT_TYPEMASK) is FALSE and (format & SF_FORMAT_SUBMASK) is a
|
Chris@0
|
795 valid subtype format then the struct is filled in with information about the given
|
Chris@0
|
796 subtype.
|
Chris@0
|
797 </P>
|
Chris@0
|
798 <P>
|
Chris@0
|
799 Example:
|
Chris@0
|
800 </P>
|
Chris@0
|
801 <PRE>
|
Chris@0
|
802 SF_FORMAT_INFO format_info ;
|
Chris@0
|
803
|
Chris@0
|
804 format_info.format = SF_FORMAT_WAV ;
|
Chris@0
|
805 sf_command (sndfile, SFC_GET_FORMAT_INFO, &format_info, sizeof (format_info)) ;
|
Chris@0
|
806 printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
|
Chris@0
|
807
|
Chris@0
|
808 format_info.format = SF_FORMAT_ULAW ;
|
Chris@0
|
809 sf_command (sndfile, SFC_GET_FORMAT_INFO, &format_info, sizeof (format_info)) ;
|
Chris@0
|
810 printf ("%08x %s\n", format_info.format, format_info.name) ;
|
Chris@0
|
811 </PRE>
|
Chris@0
|
812 <DL>
|
Chris@0
|
813 <DT>Return value: </DT>
|
Chris@0
|
814 <DD>0 on success and non-zero otherwise.
|
Chris@0
|
815 </DL>
|
Chris@0
|
816 <!-- ========================================================================= -->
|
Chris@0
|
817 <A NAME="SFC_GET_FORMAT_MAJOR_COUNT"></A>
|
Chris@0
|
818 <H2><BR><B>SFC_GET_FORMAT_MAJOR_COUNT</B></H2>
|
Chris@0
|
819 <P>
|
Chris@0
|
820 Retrieve the number of major formats.
|
Chris@0
|
821 </P>
|
Chris@0
|
822 <P>
|
Chris@0
|
823 Parameters:
|
Chris@0
|
824 </P>
|
Chris@0
|
825 <PRE>
|
Chris@0
|
826 sndfile : Not used.
|
Chris@0
|
827 cmd : SFC_GET_FORMAT_MAJOR_COUNT
|
Chris@0
|
828 data : a pointer to an int
|
Chris@0
|
829 datasize : sizeof (int)
|
Chris@0
|
830 </PRE>
|
Chris@0
|
831 <P>
|
Chris@0
|
832 Example:
|
Chris@0
|
833 </P>
|
Chris@0
|
834 <PRE>
|
Chris@0
|
835 int count ;
|
Chris@0
|
836 sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
837 </PRE>
|
Chris@0
|
838 <DL>
|
Chris@0
|
839 <DT>Return value: </DT>
|
Chris@0
|
840 <DD>0
|
Chris@0
|
841 </DL>
|
Chris@0
|
842
|
Chris@0
|
843 <!-- ========================================================================= -->
|
Chris@0
|
844 <A NAME="SFC_GET_FORMAT_MAJOR"></A>
|
Chris@0
|
845 <H2><BR><B>SFC_GET_FORMAT_MAJOR</B></H2>
|
Chris@0
|
846 <P>
|
Chris@0
|
847 Retrieve information about a major format type.
|
Chris@0
|
848 </P>
|
Chris@0
|
849 <P>
|
Chris@0
|
850 Parameters:
|
Chris@0
|
851 </P>
|
Chris@0
|
852 <PRE>
|
Chris@0
|
853 sndfile : Not used.
|
Chris@0
|
854 cmd : SFC_GET_FORMAT_MAJOR
|
Chris@0
|
855 data : a pointer to an SF_FORMAT_INFO struct
|
Chris@0
|
856 datasize : sizeof (SF_FORMAT_INFO)
|
Chris@0
|
857 </PRE>
|
Chris@0
|
858 <P>
|
Chris@0
|
859 Example:
|
Chris@0
|
860 </P>
|
Chris@0
|
861 <PRE>
|
Chris@0
|
862 SF_FORMAT_INFO format_info ;
|
Chris@0
|
863 int k, count ;
|
Chris@0
|
864
|
Chris@0
|
865 sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
866
|
Chris@0
|
867 for (k = 0 ; k < count ; k++)
|
Chris@0
|
868 { format_info.format = k ;
|
Chris@0
|
869 sf_command (sndfile, SFC_GET_FORMAT_MAJOR, &format_info, sizeof (format_info)) ;
|
Chris@0
|
870 printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
|
Chris@0
|
871 } ;
|
Chris@0
|
872 </PRE>
|
Chris@0
|
873 <P>
|
Chris@0
|
874 For a more comprehensive example, see the program list_formats.c in the examples/
|
Chris@0
|
875 directory of the libsndfile source code distribution.
|
Chris@0
|
876 </P>
|
Chris@0
|
877 <DL>
|
Chris@0
|
878 <DT>Return value: </DT>
|
Chris@0
|
879 <DD>0 on success and non-zero otherwise.
|
Chris@0
|
880 <DD>The value of the format field will be one of the major format identifiers such as
|
Chris@0
|
881 SF_FORMAT_WAV or SF_FORMAT_AIFF.
|
Chris@0
|
882 <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft)".
|
Chris@0
|
883 <DD>The extension field will contain the most commonly used file extension for that file type.
|
Chris@0
|
884 </DL>
|
Chris@0
|
885
|
Chris@0
|
886 <!-- ========================================================================= -->
|
Chris@0
|
887 <A NAME="SFC_GET_FORMAT_SUBTYPE_COUNT"></A>
|
Chris@0
|
888 <H2><BR><B>SFC_GET_FORMAT_SUBTYPE_COUNT</B></H2>
|
Chris@0
|
889 <P>
|
Chris@0
|
890 Retrieve the number of subformats.
|
Chris@0
|
891 </P>
|
Chris@0
|
892 <P>
|
Chris@0
|
893 Parameters:
|
Chris@0
|
894 </P>
|
Chris@0
|
895 <PRE>
|
Chris@0
|
896 sndfile : Not used.
|
Chris@0
|
897 cmd : SFC_GET_FORMAT_SUBTYPE_COUNT
|
Chris@0
|
898 data : a pointer to an int
|
Chris@0
|
899 datasize : sizeof (int)
|
Chris@0
|
900 </PRE>
|
Chris@0
|
901 <P>
|
Chris@0
|
902 Example:
|
Chris@0
|
903 </P>
|
Chris@0
|
904 <PRE>
|
Chris@0
|
905 int count ;
|
Chris@0
|
906 sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
907 </PRE>
|
Chris@0
|
908 <DL>
|
Chris@0
|
909 <DT>Return value: </DT>
|
Chris@0
|
910 <DD>0
|
Chris@0
|
911 </DL>
|
Chris@0
|
912
|
Chris@0
|
913 <!-- ========================================================================= -->
|
Chris@0
|
914 <A NAME="SFC_GET_FORMAT_SUBTYPE"></A>
|
Chris@0
|
915 <H2><BR><B>SFC_GET_FORMAT_SUBTYPE</B></H2>
|
Chris@0
|
916 <P>
|
Chris@0
|
917 Enumerate the subtypes (this function does not translate a subtype into
|
Chris@0
|
918 a string describing that subtype).
|
Chris@0
|
919 A typical use case might be retrieving a string description of all subtypes
|
Chris@0
|
920 so that a dialog box can be filled in.
|
Chris@0
|
921 </P>
|
Chris@0
|
922 <P>
|
Chris@0
|
923
|
Chris@0
|
924 </P>
|
Chris@0
|
925 <P>
|
Chris@0
|
926 Parameters:
|
Chris@0
|
927 </P>
|
Chris@0
|
928 <PRE>
|
Chris@0
|
929 sndfile : Not used.
|
Chris@0
|
930 cmd : SFC_GET_FORMAT_SUBTYPE
|
Chris@0
|
931 data : a pointer to an SF_FORMAT_INFO struct
|
Chris@0
|
932 datasize : sizeof (SF_FORMAT_INFO)
|
Chris@0
|
933 </PRE>
|
Chris@0
|
934 <P>
|
Chris@0
|
935 Example 1: Retrieve all sybtypes supported by the WAV format.
|
Chris@0
|
936 </P>
|
Chris@0
|
937 <PRE>
|
Chris@0
|
938 SF_FORMAT_INFO format_info ;
|
Chris@0
|
939 int k, count ;
|
Chris@0
|
940
|
Chris@0
|
941 sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
942
|
Chris@0
|
943 for (k = 0 ; k < count ; k++)
|
Chris@0
|
944 { format_info.format = k ;
|
Chris@0
|
945 sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &format_info, sizeof (format_info)) ;
|
Chris@0
|
946 if (! sf_format_check (format_info.format | SF_FORMAT_WAV))
|
Chris@0
|
947 continue ;
|
Chris@0
|
948 printf ("%08x %s\n", format_info.format, format_info.name) ;
|
Chris@0
|
949 } ;
|
Chris@0
|
950 </PRE>
|
Chris@0
|
951 <P>
|
Chris@0
|
952 Example 2: Print a string describing the SF_FORMAT_PCM_16 subtype.
|
Chris@0
|
953 </P>
|
Chris@0
|
954 <PRE>
|
Chris@0
|
955 SF_FORMAT_INFO format_info ;
|
Chris@0
|
956 int k, count ;
|
Chris@0
|
957
|
Chris@0
|
958 sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &count, sizeof (int)) ;
|
Chris@0
|
959
|
Chris@0
|
960 for (k = 0 ; k < count ; k++)
|
Chris@0
|
961 { format_info.format = k ;
|
Chris@0
|
962 sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &format_info, sizeof (format_info)) ;
|
Chris@0
|
963 if (format_info.format == SF_FORMAT_PCM_16)
|
Chris@0
|
964 { printf ("%08x %s\n", format_info.format, format_info.name) ;
|
Chris@0
|
965 break ;
|
Chris@0
|
966 } ;
|
Chris@0
|
967 } ;
|
Chris@0
|
968 </PRE>
|
Chris@0
|
969 <P>
|
Chris@0
|
970 For a more comprehensive example, see the program list_formats.c in the examples/
|
Chris@0
|
971 directory of the libsndfile source code distribution.
|
Chris@0
|
972 </P>
|
Chris@0
|
973 <DL>
|
Chris@0
|
974 <DT>Return value: </DT>
|
Chris@0
|
975 <DD>0 on success and non-zero otherwise.
|
Chris@0
|
976 <DD>The value of the format field will be one of the major format identifiers such as
|
Chris@0
|
977 SF_FORMAT_WAV or SF_FORMAT_AIFF.
|
Chris@0
|
978 <DD>The name field will contain a char* pointer to the name of the string; for instance
|
Chris@0
|
979 "WAV (Microsoft)" or "AIFF (Apple/SGI)".
|
Chris@0
|
980 <DD>The extension field will be a NULL pointer.
|
Chris@0
|
981 </DL>
|
Chris@0
|
982
|
Chris@0
|
983 <!-- ========================================================================= -->
|
Chris@0
|
984 <A NAME="SFC_SET_ADD_PEAK_CHUNK"></A>
|
Chris@0
|
985 <H2><BR><B>SFC_SET_ADD_PEAK_CHUNK</B></H2>
|
Chris@0
|
986 <P>
|
Chris@0
|
987 By default, WAV and AIFF files which contain floating point data (subtype SF_FORMAT_FLOAT
|
Chris@0
|
988 or SF_FORMAT_DOUBLE) have a PEAK chunk.
|
Chris@0
|
989 By using this command, the addition of a PEAK chunk can be turned on or off.
|
Chris@0
|
990 </P>
|
Chris@0
|
991 <P>
|
Chris@0
|
992 Note : This call must be made before any data is written to the file.
|
Chris@0
|
993 </P>
|
Chris@0
|
994 <P>
|
Chris@0
|
995 Parameters:
|
Chris@0
|
996 <PRE>
|
Chris@0
|
997 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
998 cmd : SFC_SET_ADD_PEAK_CHUNK
|
Chris@0
|
999 data : Not used (should be NULL)
|
Chris@0
|
1000 datasize : TRUE or FALSE.
|
Chris@0
|
1001 </PRE>
|
Chris@0
|
1002 <P>
|
Chris@0
|
1003 Example:
|
Chris@0
|
1004 </P>
|
Chris@0
|
1005 <PRE>
|
Chris@0
|
1006 /* Turn on the PEAK chunk. */
|
Chris@0
|
1007 sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_TRUE) ;
|
Chris@0
|
1008
|
Chris@0
|
1009 /* Turn off the PEAK chunk. */
|
Chris@0
|
1010 sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_FALSE) ;
|
Chris@0
|
1011 </PRE>
|
Chris@0
|
1012 <DL>
|
Chris@0
|
1013 <DT>Return value:</DT>
|
Chris@0
|
1014 <DD>Returns SF_TRUE if the peak chunk will be written after this call.
|
Chris@0
|
1015 <DD>Returns SF_FALSE if the peak chunk will not be written after this call.
|
Chris@0
|
1016 </DL>
|
Chris@0
|
1017
|
Chris@0
|
1018 <!-- ========================================================================= -->
|
Chris@0
|
1019 <A NAME="SFC_UPDATE_HEADER_NOW"></A>
|
Chris@0
|
1020 <H2><BR><B>SFC_UPDATE_HEADER_NOW</B></H2>
|
Chris@0
|
1021 <P>
|
Chris@0
|
1022 The header of an audio file is normally written by libsndfile when the file is
|
Chris@0
|
1023 closed using <B>sf_close()</B>.
|
Chris@0
|
1024 </P>
|
Chris@0
|
1025 <P>
|
Chris@0
|
1026 There are however situations where large files are being generated and it would
|
Chris@0
|
1027 be nice to have valid data in the header before the file is complete.
|
Chris@0
|
1028 Using this command will update the file header to reflect the amount of data written
|
Chris@0
|
1029 to the file so far.
|
Chris@0
|
1030 Other programs opening the file for read (before any more data is written) will
|
Chris@0
|
1031 then read a valid sound file header.
|
Chris@0
|
1032 </P>
|
Chris@0
|
1033 <P>
|
Chris@0
|
1034 Parameters:
|
Chris@0
|
1035 <PRE>
|
Chris@0
|
1036 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1037 cmd : SFC_UPDATE_HEADER_NOW
|
Chris@0
|
1038 data : Not used (should be NULL)
|
Chris@0
|
1039 datasize : Not used.
|
Chris@0
|
1040 </PRE>
|
Chris@0
|
1041 <P>
|
Chris@0
|
1042 Example:
|
Chris@0
|
1043 </P>
|
Chris@0
|
1044 <PRE>
|
Chris@0
|
1045 /* Update the header now. */
|
Chris@0
|
1046 sf_command (sndfile, SFC_UPDATE_HEADER_NOW, NULL, 0) ;
|
Chris@0
|
1047 </PRE>
|
Chris@0
|
1048 <DL>
|
Chris@0
|
1049 <DT>Return value:</DT>
|
Chris@0
|
1050 <DD>0
|
Chris@0
|
1051 </DL>
|
Chris@0
|
1052
|
Chris@0
|
1053 <!-- ========================================================================= -->
|
Chris@0
|
1054 <A NAME="SFC_SET_UPDATE_HEADER_AUTO"></A>
|
Chris@0
|
1055 <H2><BR><B>SFC_SET_UPDATE_HEADER_AUTO</B></H2>
|
Chris@0
|
1056 <P>
|
Chris@0
|
1057 Similar to SFC_UPDATE_HEADER_NOW but updates the header at the end of every call
|
Chris@0
|
1058 to the <B>sf_write*</B> functions.
|
Chris@0
|
1059 </P>
|
Chris@0
|
1060 <P>
|
Chris@0
|
1061 Parameters:
|
Chris@0
|
1062 <PRE>
|
Chris@0
|
1063 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1064 cmd : SFC_UPDATE_HEADER_NOW
|
Chris@0
|
1065 data : Not used (should be NULL)
|
Chris@0
|
1066 datasize : SF_TRUE or SF_FALSE
|
Chris@0
|
1067 </PRE>
|
Chris@0
|
1068 <P>
|
Chris@0
|
1069 Example:
|
Chris@0
|
1070 </P>
|
Chris@0
|
1071 <PRE>
|
Chris@0
|
1072 /* Turn on auto header update. */
|
Chris@0
|
1073 sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;
|
Chris@0
|
1074
|
Chris@0
|
1075 /* Turn off auto header update. */
|
Chris@0
|
1076 sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_FALSE) ;
|
Chris@0
|
1077 </PRE>
|
Chris@0
|
1078 <DL>
|
Chris@0
|
1079 <DT>Return value:</DT>
|
Chris@0
|
1080 <DD>TRUE if auto update header is now on; FALSE otherwise.
|
Chris@0
|
1081 </DL>
|
Chris@0
|
1082
|
Chris@0
|
1083 <!-- ========================================================================= -->
|
Chris@0
|
1084 <A NAME="SFC_FILE_TRUNCATE"></A>
|
Chris@0
|
1085 <H2><BR><B>SFC_FILE_TRUNCATE</B></H2>
|
Chris@0
|
1086 <P>
|
Chris@0
|
1087 Truncate a file that was opened for write or read/write.
|
Chris@0
|
1088 </P>
|
Chris@0
|
1089 <P>
|
Chris@0
|
1090 Parameters:
|
Chris@0
|
1091 <PRE>
|
Chris@0
|
1092 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1093 cmd : SFC_FILE_TRUNCATE
|
Chris@0
|
1094 data : A pointer to an sf_count_t.
|
Chris@0
|
1095 datasize : sizeof (sf_count_t)
|
Chris@0
|
1096 </PRE>
|
Chris@0
|
1097
|
Chris@0
|
1098 <P>
|
Chris@0
|
1099 Truncate the file to the number of frames specified by the sf_count_t pointed
|
Chris@0
|
1100 to by data.
|
Chris@0
|
1101 After this command, both the read and the write pointer will be
|
Chris@0
|
1102 at the new end of the file.
|
Chris@0
|
1103 This command will fail (returning non-zero) if the requested truncate position
|
Chris@0
|
1104 is beyond the end of the file.
|
Chris@0
|
1105 </P>
|
Chris@0
|
1106 <P>
|
Chris@0
|
1107 Example:
|
Chris@0
|
1108 </P>
|
Chris@0
|
1109 <PRE>
|
Chris@0
|
1110 /* Truncate the file to a length of 20 frames. */
|
Chris@0
|
1111 sf_count_t frames = 20 ;
|
Chris@0
|
1112 sf_command (sndfile, SFC_FILE_TRUNCATE, &frames, sizeof (frames)) ;
|
Chris@0
|
1113 </PRE>
|
Chris@0
|
1114 <DL>
|
Chris@0
|
1115 <DT>Return value:</DT>
|
Chris@0
|
1116 <DD>Zero on sucess, non-zero otherwise.
|
Chris@0
|
1117 </DL>
|
Chris@0
|
1118
|
Chris@0
|
1119 <!-- ========================================================================= -->
|
Chris@0
|
1120 <A NAME="SFC_SET_RAW_START_OFFSET"></A>
|
Chris@0
|
1121 <H2><BR><B>SFC_SET_RAW_START_OFFSET</B></H2>
|
Chris@0
|
1122 <P>
|
Chris@0
|
1123 Change the data start offset for files opened up as SF_FORMAT_RAW.
|
Chris@0
|
1124 </P>
|
Chris@0
|
1125 <P>
|
Chris@0
|
1126 Parameters:
|
Chris@0
|
1127 <PRE>
|
Chris@0
|
1128 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1129 cmd : SFC_SET_RAW_START_OFFSET
|
Chris@0
|
1130 data : A pointer to an sf_count_t.
|
Chris@0
|
1131 datasize : sizeof (sf_count_t)
|
Chris@0
|
1132 </PRE>
|
Chris@0
|
1133
|
Chris@0
|
1134 <P>
|
Chris@0
|
1135 For a file opened as format SF_FORMAT_RAW, set the data offset to the value
|
Chris@0
|
1136 given by data.
|
Chris@0
|
1137 </P>
|
Chris@0
|
1138 <P>
|
Chris@0
|
1139 Example:
|
Chris@0
|
1140 </P>
|
Chris@0
|
1141 <PRE>
|
Chris@0
|
1142 /* Reset the data offset to 5 bytes from the start of the file. */
|
Chris@0
|
1143 sf_count_t offset = 5 ;
|
Chris@0
|
1144 sf_command (sndfile, SFC_SET_RAW_START_OFFSET, &offset, sizeof (offset)) ;
|
Chris@0
|
1145 </PRE>
|
Chris@0
|
1146 <DL>
|
Chris@0
|
1147 <DT>Return value:</DT>
|
Chris@0
|
1148 <DD>Zero on success, non-zero otherwise.
|
Chris@0
|
1149 </DL>
|
Chris@0
|
1150
|
Chris@0
|
1151 <!-- ========================================================================= -->
|
Chris@0
|
1152 <A NAME="SFC_SET_CLIPPING"></A>
|
Chris@0
|
1153 <H2><BR><B>SFC_SET_CLIPPING</B></H2>
|
Chris@0
|
1154 <P>
|
Chris@0
|
1155 Turn on/off automatic clipping when doing floating point to integer conversion.
|
Chris@0
|
1156 </P>
|
Chris@0
|
1157 <P>
|
Chris@0
|
1158 Parameters:
|
Chris@0
|
1159 <PRE>
|
Chris@0
|
1160 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1161 cmd : SFC_SET_CLIPPING
|
Chris@0
|
1162 data : NULL
|
Chris@0
|
1163 datasize : SF_TRUE or SF_FALSE.
|
Chris@0
|
1164 </PRE>
|
Chris@0
|
1165
|
Chris@0
|
1166 <P>
|
Chris@0
|
1167 Turn on (datasize == SF_TRUE) or off (datasize == SF_FALSE) clipping.
|
Chris@0
|
1168 </P>
|
Chris@0
|
1169 <P>
|
Chris@0
|
1170 Example:
|
Chris@0
|
1171 </P>
|
Chris@0
|
1172 <PRE>
|
Chris@0
|
1173 sf_command (sndfile, SFC_SET_CLIPPING, NULL, SF_TRUE) ;
|
Chris@0
|
1174 </PRE>
|
Chris@0
|
1175 <DL>
|
Chris@0
|
1176 <DT>Return value:</DT>
|
Chris@0
|
1177 <DD>Clipping mode (SF_TRUE or SF_FALSE).
|
Chris@0
|
1178 </DL>
|
Chris@0
|
1179
|
Chris@0
|
1180
|
Chris@0
|
1181 <!-- ========================================================================= -->
|
Chris@0
|
1182 <A NAME="SFC_GET_CLIPPING"></A>
|
Chris@0
|
1183 <H2><BR><B>SFC_GET_CLIPPING</B></H2>
|
Chris@0
|
1184 <P>
|
Chris@0
|
1185 Turn on/off automatic clipping when doing floating point to integer conversion.
|
Chris@0
|
1186 </P>
|
Chris@0
|
1187 <P>
|
Chris@0
|
1188 Parameters:
|
Chris@0
|
1189 <PRE>
|
Chris@0
|
1190 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1191 cmd : SFC_GET_CLIPPING
|
Chris@0
|
1192 data : NULL
|
Chris@0
|
1193 datasize : 0
|
Chris@0
|
1194 </PRE>
|
Chris@0
|
1195
|
Chris@0
|
1196 <P>
|
Chris@0
|
1197 Retrieve the current cliiping setting.
|
Chris@0
|
1198 </P>
|
Chris@0
|
1199 <P>
|
Chris@0
|
1200 Example:
|
Chris@0
|
1201 </P>
|
Chris@0
|
1202 <PRE>
|
Chris@0
|
1203 sf_command (sndfile, SFC_GET_CLIPPING, NULL, 0) ;
|
Chris@0
|
1204 </PRE>
|
Chris@0
|
1205 <DL>
|
Chris@0
|
1206 <DT>Return value:</DT>
|
Chris@0
|
1207 <DD>Clipping mode (SF_TRUE or SF_FALSE).
|
Chris@0
|
1208 </DL>
|
Chris@0
|
1209
|
Chris@0
|
1210 <!-- ========================================================================= -->
|
Chris@0
|
1211 <A NAME="SFC_GET_EMBED_FILE_INFO"></A>
|
Chris@0
|
1212 <H2><BR><B>SFC_GET_EMBED_FILE_INFO</B></H2>
|
Chris@0
|
1213 <P>
|
Chris@0
|
1214 Get the file offset and file length of a file enbedded within another
|
Chris@0
|
1215 larger file.
|
Chris@0
|
1216 </P>
|
Chris@0
|
1217 <P>
|
Chris@0
|
1218 Parameters:
|
Chris@0
|
1219 <PRE>
|
Chris@0
|
1220 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1221 cmd : SFC_GET_CLIPPING
|
Chris@0
|
1222 data : a pointer to an SF_EMBED_FILE_INFO struct
|
Chris@0
|
1223 datasize : sizeof (SF_EMBED_FILE_INFO)
|
Chris@0
|
1224 </PRE>
|
Chris@0
|
1225 <P>
|
Chris@0
|
1226 The SF_EMBED_FILE_INFO struct is defined in <sndfile.h> as:
|
Chris@0
|
1227 </P>
|
Chris@0
|
1228 <PRE>
|
Chris@0
|
1229 typedef struct
|
Chris@0
|
1230 { sf_count_t offset ;
|
Chris@0
|
1231 sf_count_t length ;
|
Chris@0
|
1232 } SF_EMBED_FILE_INFO ;
|
Chris@0
|
1233 </PRE>
|
Chris@0
|
1234 <DL>
|
Chris@0
|
1235 <DT>Return value: </DT>
|
Chris@0
|
1236 <DD>0 on success and non-zero otherwise.
|
Chris@0
|
1237 <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be
|
Chris@0
|
1238 the offsets in bytes from the start of the outer file to the start of
|
Chris@0
|
1239 the audio file.
|
Chris@0
|
1240 <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be
|
Chris@0
|
1241 the length in bytes of the embedded file.
|
Chris@0
|
1242 </DL>
|
Chris@0
|
1243
|
Chris@0
|
1244
|
Chris@0
|
1245
|
Chris@0
|
1246 <!-- ========================================================================= -->
|
Chris@0
|
1247 <A NAME="SFC_WAVEX_GET_AMBISONIC"></A>
|
Chris@0
|
1248 <H2><BR><B>SFC_WAVEX_GET_AMBISONIC</B></H2>
|
Chris@0
|
1249 <P>
|
Chris@0
|
1250 Test if the current file has the GUID of a WAVEX file for any of the Ambisonic
|
Chris@0
|
1251 formats.
|
Chris@0
|
1252 </P>
|
Chris@0
|
1253 <P>
|
Chris@0
|
1254 Parameters:
|
Chris@0
|
1255 <PRE>
|
Chris@0
|
1256 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1257 cmd : SFC_WAVEX_GET_AMBISONIC
|
Chris@0
|
1258 data : NULL
|
Chris@0
|
1259 datasize : 0
|
Chris@0
|
1260 </PRE>
|
Chris@0
|
1261 <P>
|
Chris@0
|
1262 The Ambisonic WAVEX formats are defined here :
|
Chris@0
|
1263 <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">
|
Chris@0
|
1264 http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.
|
Chris@0
|
1265 </P>
|
Chris@0
|
1266 <DL>
|
Chris@0
|
1267 <DT>Return value: </DT>
|
Chris@0
|
1268 <DD>SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT or zero if the file format
|
Chris@0
|
1269 does not support ambisonic formats.
|
Chris@0
|
1270 </DL>
|
Chris@0
|
1271
|
Chris@0
|
1272 <!-- ========================================================================= -->
|
Chris@0
|
1273 <A NAME="SFC_WAVEX_SET_AMBISONIC"></A>
|
Chris@0
|
1274 <H2><BR><B>SFC_WAVEX_SET_AMBISONIC</B></H2>
|
Chris@0
|
1275 <P>
|
Chris@0
|
1276 Set the GUID of a new WAVEX file to indicate an Ambisonics format.
|
Chris@0
|
1277 </P>
|
Chris@0
|
1278 <P>
|
Chris@0
|
1279 Parameters:
|
Chris@0
|
1280 <PRE>
|
Chris@0
|
1281 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1282 cmd : SFC_WAVEX_SET_AMBISONIC
|
Chris@0
|
1283 data : NULL
|
Chris@0
|
1284 datasize : SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT
|
Chris@0
|
1285 </PRE>
|
Chris@0
|
1286 <P>
|
Chris@0
|
1287 Turn on (SF_AMBISONIC_B_FORMAT) or off (SF_AMBISONIC_NONE) encoding.
|
Chris@0
|
1288 This command is currently only supported for files with SF_FORMAT_WAVEX format.
|
Chris@0
|
1289 </P>
|
Chris@0
|
1290 <P>
|
Chris@0
|
1291 The Ambisonic WAVEX formats are defined here :
|
Chris@0
|
1292 <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">
|
Chris@0
|
1293 http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.
|
Chris@0
|
1294 </P>
|
Chris@0
|
1295 <DL>
|
Chris@0
|
1296 <DT>Return value: </DT>
|
Chris@0
|
1297 <DD>Return the ambisonic value that has just been set or zero if the file
|
Chris@0
|
1298 format does not support ambisonic encoding.
|
Chris@0
|
1299 </DL>
|
Chris@0
|
1300
|
Chris@0
|
1301 <!-- ========================================================================= -->
|
Chris@0
|
1302 <A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>
|
Chris@0
|
1303 <H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>
|
Chris@0
|
1304 <P>
|
Chris@0
|
1305 Set the the Variable Bit Rate encoding quality.
|
Chris@0
|
1306 The encoding quality value should be between 0.0 (lowest quality) and 1.0
|
Chris@0
|
1307 (highest quality).
|
Chris@0
|
1308 </P>
|
Chris@0
|
1309 <P>
|
Chris@0
|
1310 Parameters:
|
Chris@0
|
1311 <PRE>
|
Chris@0
|
1312 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1313 cmd : SFC_SET_VBR_ENCODING_QUALITY
|
Chris@0
|
1314 data : A pointer to a double value
|
Chris@0
|
1315 datasize : sizeof (double)
|
Chris@0
|
1316 </PRE>
|
Chris@0
|
1317 <P>
|
Chris@0
|
1318 The command must be sent before any audio data is written to the file.
|
Chris@0
|
1319 </P>
|
Chris@0
|
1320 <P>
|
Chris@0
|
1321 </P>
|
Chris@0
|
1322 <DL>
|
Chris@0
|
1323 <DT>Return value: </DT>
|
Chris@0
|
1324 <DD>Zero on success, non-zero otherwise.
|
Chris@0
|
1325 </DL>
|
Chris@0
|
1326
|
Chris@0
|
1327 <!-- ========================================================================= -->
|
Chris@0
|
1328 <A NAME="SFC_RAW_NEEDS_ENDSWAP"></A>
|
Chris@0
|
1329 <H2><BR><B>SFC_RAW_NEEDS_ENDSWAP</B></H2>
|
Chris@0
|
1330 <P>
|
Chris@0
|
1331 Determine if raw data read using
|
Chris@0
|
1332 <a href="api.html#raw">
|
Chris@0
|
1333 sf_read_raw</a>
|
Chris@0
|
1334 needs to be end swapped on the host CPU.
|
Chris@0
|
1335 </P>
|
Chris@0
|
1336 <P>
|
Chris@0
|
1337 For instance, will return SF_TRUE on when reading WAV containing
|
Chris@0
|
1338 SF_FORMAT_PCM_16 data on a big endian machine and SF_FALSE on a little endian
|
Chris@0
|
1339 machine.
|
Chris@0
|
1340 </P>
|
Chris@0
|
1341 <P>
|
Chris@0
|
1342 Parameters:
|
Chris@0
|
1343 <PRE>
|
Chris@0
|
1344 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1345 cmd : SFC_RAW_NEEDS_ENDSWAP
|
Chris@0
|
1346 data : NULL
|
Chris@0
|
1347 datasize : 0
|
Chris@0
|
1348 </PRE>
|
Chris@0
|
1349
|
Chris@0
|
1350 <DL>
|
Chris@0
|
1351 <DT>Return value: </DT>
|
Chris@0
|
1352 <DD>SF_TRUE or SF_FALSE
|
Chris@0
|
1353 </DL>
|
Chris@0
|
1354
|
Chris@0
|
1355
|
Chris@0
|
1356 <!-- ========================================================================= -->
|
Chris@0
|
1357 <A NAME="SFC_GET_BROADCAST_INFO"></A>
|
Chris@0
|
1358 <H2><BR><B>SFC_GET_BROADCAST_INFO</B></H2>
|
Chris@0
|
1359 <P>
|
Chris@0
|
1360 Retrieve the Broadcast Extension Chunk from WAV (and related) files.
|
Chris@0
|
1361 </P>
|
Chris@0
|
1362 <p>
|
Chris@0
|
1363 Parameters:
|
Chris@0
|
1364 </p>
|
Chris@0
|
1365 <PRE>
|
Chris@0
|
1366 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1367 cmd : SFC_GET_BROADCAST_INFO
|
Chris@0
|
1368 data : a pointer to an SF_BROADCAST_INFO struct
|
Chris@0
|
1369 datasize : sizeof (SF_BROADCAST_INFO)
|
Chris@0
|
1370 </PRE>
|
Chris@0
|
1371 <P>
|
Chris@0
|
1372 The SF_BROADCAST_INFO struct is defined in <sndfile.h> as:
|
Chris@0
|
1373 </P>
|
Chris@0
|
1374 <PRE>
|
Chris@0
|
1375 typedef struct
|
Chris@0
|
1376 { char description [256] ;
|
Chris@0
|
1377 char originator [32] ;
|
Chris@0
|
1378 char originator_reference [32] ;
|
Chris@0
|
1379 char origination_date [10] ;
|
Chris@0
|
1380 char origination_time [8] ;
|
Chris@0
|
1381 unsigned int time_reference_low ;
|
Chris@0
|
1382 unsigned int time_reference_high ;
|
Chris@0
|
1383 short version ;
|
Chris@0
|
1384 char umid [64] ;
|
Chris@0
|
1385 char reserved [190] ;
|
Chris@0
|
1386 unsigned int coding_history_size ;
|
Chris@0
|
1387 char coding_history [256] ;
|
Chris@0
|
1388 } SF_BROADCAST_INFO ;
|
Chris@0
|
1389 </PRE>
|
Chris@0
|
1390
|
Chris@0
|
1391 <DL>
|
Chris@0
|
1392 <DT>Return value: </DT>
|
Chris@0
|
1393 <DD>SF_TRUE if the file contained a Broadcast Extension chunk or SF_FALSE
|
Chris@0
|
1394 otherwise.
|
Chris@0
|
1395 </DL>
|
Chris@0
|
1396
|
Chris@0
|
1397 <!-- ========================================================================= -->
|
Chris@0
|
1398 <A NAME="SFC_SET_BROADCAST_INFO"></A>
|
Chris@0
|
1399 <H2><BR><B>SFC_SET_BROADCAST_INFO</B></H2>
|
Chris@0
|
1400 <P>
|
Chris@0
|
1401 Set the Broadcast Extension Chunk for WAV (and related) files.
|
Chris@0
|
1402 </P>
|
Chris@0
|
1403 <p>
|
Chris@0
|
1404 Parameters:
|
Chris@0
|
1405 </p>
|
Chris@0
|
1406 <PRE>
|
Chris@0
|
1407 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1408 cmd : SFC_SET_BROADCAST_INFO
|
Chris@0
|
1409 data : a pointer to an SF_BROADCAST_INFO struct
|
Chris@0
|
1410 datasize : sizeof (SF_BROADCAST_INFO)
|
Chris@0
|
1411 </PRE>
|
Chris@0
|
1412
|
Chris@0
|
1413 <DL>
|
Chris@0
|
1414 <DT>Return value: </DT>
|
Chris@0
|
1415 <DD>SF_TRUE if setting the Broadcast Extension chunk was successful and SF_FALSE
|
Chris@0
|
1416 otherwise.
|
Chris@0
|
1417 </DL>
|
Chris@0
|
1418 <!-- ========================================================================= -->
|
Chris@0
|
1419
|
Chris@0
|
1420 <A NAME="SFC_GET_LOOP_INFO"></A>
|
Chris@0
|
1421 <H2><BR><B>SFC_GET_LOOP_INFO</B></H2>
|
Chris@0
|
1422 <P>
|
Chris@0
|
1423 Retrieve loop information for file including time signature, length in
|
Chris@0
|
1424 beats and original MIDI base note
|
Chris@0
|
1425 </P>
|
Chris@0
|
1426 <p>
|
Chris@0
|
1427 Parameters:
|
Chris@0
|
1428 </p>
|
Chris@0
|
1429 <PRE>
|
Chris@0
|
1430 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1431 cmd : SFC_GET_LOOP_INFO
|
Chris@0
|
1432 data : a pointer to an SF_LOOP_INFO struct
|
Chris@0
|
1433 datasize : sizeof (SF_LOOP_INFO)
|
Chris@0
|
1434 </PRE>
|
Chris@0
|
1435 <P>
|
Chris@0
|
1436 The SF_BROADCAST_INFO struct is defined in <sndfile.h> as:
|
Chris@0
|
1437 </P>
|
Chris@0
|
1438 <PRE>
|
Chris@0
|
1439 typedef struct
|
Chris@0
|
1440 { short time_sig_num ; /* any positive integer > 0 */
|
Chris@0
|
1441 short time_sig_den ; /* any positive power of 2 > 0 */
|
Chris@0
|
1442 int loop_mode ; /* see SF_LOOP enum */
|
Chris@0
|
1443
|
Chris@0
|
1444 int num_beats ; /* this is NOT the amount of quarter notes !!!*/
|
Chris@0
|
1445 /* a full bar of 4/4 is 4 beats */
|
Chris@0
|
1446 /* a full bar of 7/8 is 7 beats */
|
Chris@0
|
1447
|
Chris@0
|
1448 float bpm ; /* suggestion, as it can be calculated using other fields:*/
|
Chris@0
|
1449 /* file's lenght, file's sampleRate and our time_sig_den*/
|
Chris@0
|
1450 /* -> bpms are always the amount of _quarter notes_ per minute */
|
Chris@0
|
1451
|
Chris@0
|
1452 int root_key ; /* MIDI note, or -1 for None */
|
Chris@0
|
1453 int future [6] ;
|
Chris@0
|
1454 } SF_LOOP_INFO ;
|
Chris@0
|
1455 </PRE>
|
Chris@0
|
1456 <P>
|
Chris@0
|
1457 Example:
|
Chris@0
|
1458 </P>
|
Chris@0
|
1459 <PRE>
|
Chris@0
|
1460 SF_LOOP_INFO loop;
|
Chris@0
|
1461 sf_command (sndfile, SFC_GET_LOOP_INFO, &loop, sizeof (loop)) ;
|
Chris@0
|
1462 </PRE>
|
Chris@0
|
1463 <DL>
|
Chris@0
|
1464 <DT>Return value:</DT>
|
Chris@0
|
1465 <DD>SF_TRUE if the file header contains loop information for the file.
|
Chris@0
|
1466 SF_FALSE otherwise.
|
Chris@0
|
1467 </DL>
|
Chris@0
|
1468
|
Chris@0
|
1469 <!-- ========================================================================= -->
|
Chris@0
|
1470
|
Chris@0
|
1471
|
Chris@0
|
1472 <A NAME="SFC_GET_INSTRUMENT"></A>
|
Chris@0
|
1473 <H2><BR><B>SFC_GET_INSTRUMENT</B></H2>
|
Chris@0
|
1474 <P>
|
Chris@0
|
1475 Retrieve instrument information from file including MIDI base note,
|
Chris@0
|
1476 keyboard mapping and looping informations(start/stop and mode).
|
Chris@0
|
1477 </P>
|
Chris@0
|
1478 <p>
|
Chris@0
|
1479 Parameters:
|
Chris@0
|
1480 </p>
|
Chris@0
|
1481 <PRE>
|
Chris@0
|
1482 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1483 cmd : SFC_GET_INSTRUMENT
|
Chris@0
|
1484 data : a pointer to an SF_INSTRUMENT struct
|
Chris@0
|
1485 datasize : sizeof (SF_INSTRUMENT)
|
Chris@0
|
1486 </PRE>
|
Chris@0
|
1487
|
Chris@0
|
1488 <P>
|
Chris@0
|
1489 The SF_INSTRUMENT struct is defined in <sndfile.h> as:
|
Chris@0
|
1490 </P>
|
Chris@0
|
1491 <PRE>
|
Chris@0
|
1492 enum
|
Chris@0
|
1493 { /*
|
Chris@0
|
1494 ** The loop mode field in SF_INSTRUMENT will be one of the following.
|
Chris@0
|
1495 */
|
Chris@0
|
1496 SF_LOOP_NONE = 800,
|
Chris@0
|
1497 SF_LOOP_FORWARD,
|
Chris@0
|
1498 SF_LOOP_BACKWARD,
|
Chris@0
|
1499 SF_LOOP_ALTERNATING
|
Chris@0
|
1500 } ;
|
Chris@0
|
1501
|
Chris@0
|
1502 typedef struct
|
Chris@0
|
1503 { int gain ;
|
Chris@0
|
1504 char basenote, detune ;
|
Chris@0
|
1505 char velocity_lo, velocity_hi ;
|
Chris@0
|
1506 char key_lo, key_hi ;
|
Chris@0
|
1507 int loop_count ;
|
Chris@0
|
1508
|
Chris@0
|
1509 struct
|
Chris@0
|
1510 { int mode ;
|
Chris@0
|
1511 unsigned int start ;
|
Chris@0
|
1512 unsigned int end ;
|
Chris@0
|
1513 unsigned int count ;
|
Chris@0
|
1514 } loops [16] ; /* make variable in a sensible way */
|
Chris@0
|
1515 } SF_INSTRUMENT ;
|
Chris@0
|
1516 </PRE>
|
Chris@0
|
1517
|
Chris@0
|
1518 <P>
|
Chris@0
|
1519 Example:
|
Chris@0
|
1520 </P>
|
Chris@0
|
1521 <PRE>
|
Chris@0
|
1522 SF_INSTRUMENT inst ;
|
Chris@0
|
1523 sf_command (sndfile, SFC_GET_INSTRUMENT, &inst, sizeof (inst)) ;
|
Chris@0
|
1524 </PRE>
|
Chris@0
|
1525 <DL>
|
Chris@0
|
1526 <DT>Return value:</DT>
|
Chris@0
|
1527 <dd>SF_TRUE if the file header contains instrument information for the
|
Chris@0
|
1528 file. SF_FALSE otherwise.
|
Chris@0
|
1529 </DL>
|
Chris@0
|
1530
|
Chris@0
|
1531 <!-- ========================================================================= -->
|
Chris@0
|
1532
|
Chris@0
|
1533
|
Chris@0
|
1534 <A NAME="SFC_SET_INSTRUMENT"></A>
|
Chris@0
|
1535 <H2><BR><B>SFC_SET_INSTRUMENT</B></H2>
|
Chris@0
|
1536 <P>
|
Chris@0
|
1537 Set the instrument information for the file.
|
Chris@0
|
1538 </P>
|
Chris@0
|
1539 <p>
|
Chris@0
|
1540 Parameters:
|
Chris@0
|
1541 </p>
|
Chris@0
|
1542 <PRE>
|
Chris@0
|
1543 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1544 cmd : SFC_GET_INSTRUMENT
|
Chris@0
|
1545 data : a pointer to an SF_INSTRUMENT struct
|
Chris@0
|
1546 datasize : sizeof (SF_INSTRUMENT)
|
Chris@0
|
1547 </PRE>
|
Chris@0
|
1548 <P>
|
Chris@0
|
1549 Example:
|
Chris@0
|
1550 </P>
|
Chris@0
|
1551 <PRE>
|
Chris@0
|
1552 SF_INSTRUMENT inst ;
|
Chris@0
|
1553 sf_command (sndfile, SFC_SET_INSTRUMENT, &inst, sizeof (inst)) ;
|
Chris@0
|
1554 </PRE>
|
Chris@0
|
1555 <DL>
|
Chris@0
|
1556 <DT>Return value:</DT>
|
Chris@0
|
1557 <dd>SF_TRUE if the file header contains instrument information for the
|
Chris@0
|
1558 file. SF_FALSE otherwise.
|
Chris@0
|
1559 </DL>
|
Chris@0
|
1560
|
Chris@0
|
1561 <!-- ========================================================================= -->
|
Chris@0
|
1562
|
Chris@0
|
1563
|
Chris@0
|
1564 <A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>
|
Chris@0
|
1565 <H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>
|
Chris@0
|
1566 <P>
|
Chris@0
|
1567 Set the Variable Bite Rate encoding quality.
|
Chris@0
|
1568 Currenly only implemented fro Ogg/Vorbis files.
|
Chris@0
|
1569 </P>
|
Chris@0
|
1570 <p>
|
Chris@0
|
1571 Parameters:
|
Chris@0
|
1572 </p>
|
Chris@0
|
1573 <PRE>
|
Chris@0
|
1574 sndfile : A valid SNDFILE* pointer
|
Chris@0
|
1575 cmd : SFC_SET_VBR_ENCODING_QUALITY
|
Chris@0
|
1576 data : a pointer to double specifing VBR quality
|
Chris@0
|
1577 datasize : sizeof (double)
|
Chris@0
|
1578 </PRE>
|
Chris@0
|
1579 <P>
|
Chris@0
|
1580 Example:
|
Chris@0
|
1581 </P>
|
Chris@0
|
1582 <PRE>
|
Chris@0
|
1583 double quality = 0.5 ;
|
Chris@0
|
1584 sf_command (sndfile, SFC_SET_VBR_ENCODING_QUALITY, &quality, sizeof (double)) ;
|
Chris@0
|
1585 </PRE>
|
Chris@0
|
1586 <DL>
|
Chris@0
|
1587 <DT>Return value:</DT>
|
Chris@0
|
1588 <dd>SF_TRUE if VBR encoding quality was set.
|
Chris@0
|
1589 SF_FALSE otherwise.
|
Chris@0
|
1590 </DL>
|
Chris@0
|
1591
|
Chris@0
|
1592 <!-- ========================================================================= -->
|
Chris@0
|
1593
|
Chris@0
|
1594
|
Chris@0
|
1595 <HR>
|
Chris@0
|
1596 <P>
|
Chris@0
|
1597 The libsndfile home page is here :
|
Chris@0
|
1598 <A HREF="http://www.mega-nerd.com/libsndfile/">
|
Chris@0
|
1599 http://www.mega-nerd.com/libsndfile/</A>.
|
Chris@0
|
1600 <BR>
|
Chris@0
|
1601 Version : 1.0.25
|
Chris@0
|
1602 </P>
|
Chris@0
|
1603
|
Chris@0
|
1604 </BODY>
|
Chris@0
|
1605 </HTML>
|