GstFft-1.0.gir 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. <?xml version="1.0"?>
  2. <!-- This file was automatically generated from C sources - DO NOT EDIT!
  3. To affect the contents of this file, edit the original C definitions,
  4. and/or use gtk-doc annotations. -->
  5. <repository version="1.2"
  6. xmlns="http://www.gtk.org/introspection/core/1.0"
  7. xmlns:c="http://www.gtk.org/introspection/c/1.0"
  8. xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  9. <include name="Gst" version="1.0"/>
  10. <package name="gstreamer-fft-1.0"/>
  11. <c:include name="gst/fft/fft.h"/>
  12. <namespace name="GstFft"
  13. version="1.0"
  14. shared-library="libgstfft-1.0.so.0"
  15. c:identifier-prefixes="Gst"
  16. c:symbol-prefixes="gst">
  17. <record name="FFTF32" c:type="GstFFTF32" disguised="1">
  18. <doc xml:space="preserve">#GstFFTF32 provides a FFT implementation and related functions for
  19. 32 bit float samples. To use this call gst_fft_f32_new() for
  20. allocating a #GstFFTF32 instance with the appropriate parameters and
  21. then call gst_fft_f32_fft() or gst_fft_f32_inverse_fft() to perform the
  22. FFT or inverse FFT on a buffer of samples.
  23. After use free the #GstFFTF32 instance with gst_fft_f32_free().
  24. For the best performance use gst_fft_next_fast_length() to get a
  25. number that is entirely a product of 2, 3 and 5 and use this as the
  26. @len parameter for gst_fft_f32_new().
  27. The @len parameter specifies the number of samples in the time domain that
  28. will be processed or generated. The number of samples in the frequency domain
  29. is @len/2 + 1. To get n samples in the frequency domain use 2*n - 2 as @len.
  30. Before performing the FFT on time domain data it usually makes sense
  31. to apply a window function to it. For this gst_fft_f32_window() can comfortably
  32. be used.
  33. Be aware, that you can't simply run gst_fft_f32_inverse_fft() on the
  34. resulting frequency data of gst_fft_f32_fft() to get the original data back.
  35. The relation between them is iFFT (FFT (x)) = x * nfft where nfft is the
  36. length of the FFT. This also has to be taken into account when calculation
  37. the magnitude of the frequency data.</doc>
  38. <method name="fft" c:identifier="gst_fft_f32_fft">
  39. <doc xml:space="preserve">This performs the FFT on @timedata and puts the result in @freqdata.
  40. @timedata must have as many samples as specified with the @len parameter while
  41. allocating the #GstFFTF32 instance with gst_fft_f32_new().
  42. @freqdata must be large enough to hold @len/2 + 1 #GstFFTF32Complex frequency
  43. domain samples.</doc>
  44. <return-value transfer-ownership="none">
  45. <type name="none" c:type="void"/>
  46. </return-value>
  47. <parameters>
  48. <instance-parameter name="self" transfer-ownership="none">
  49. <doc xml:space="preserve">#GstFFTF32 instance for this call</doc>
  50. <type name="FFTF32" c:type="GstFFTF32*"/>
  51. </instance-parameter>
  52. <parameter name="timedata" transfer-ownership="none">
  53. <doc xml:space="preserve">Buffer of the samples in the time domain</doc>
  54. <type name="gfloat" c:type="const gfloat*"/>
  55. </parameter>
  56. <parameter name="freqdata" transfer-ownership="none">
  57. <doc xml:space="preserve">Target buffer for the samples in the frequency domain</doc>
  58. <type name="FFTF32Complex" c:type="GstFFTF32Complex*"/>
  59. </parameter>
  60. </parameters>
  61. </method>
  62. <method name="free" c:identifier="gst_fft_f32_free">
  63. <doc xml:space="preserve">This frees the memory allocated for @self.</doc>
  64. <return-value transfer-ownership="none">
  65. <type name="none" c:type="void"/>
  66. </return-value>
  67. <parameters>
  68. <instance-parameter name="self" transfer-ownership="none">
  69. <doc xml:space="preserve">#GstFFTF32 instance for this call</doc>
  70. <type name="FFTF32" c:type="GstFFTF32*"/>
  71. </instance-parameter>
  72. </parameters>
  73. </method>
  74. <method name="inverse_fft" c:identifier="gst_fft_f32_inverse_fft">
  75. <doc xml:space="preserve">This performs the inverse FFT on @freqdata and puts the result in @timedata.
  76. @freqdata must have @len/2 + 1 samples, where @len is the parameter specified
  77. while allocating the #GstFFTF32 instance with gst_fft_f32_new().
  78. @timedata must be large enough to hold @len time domain samples.</doc>
  79. <return-value transfer-ownership="none">
  80. <type name="none" c:type="void"/>
  81. </return-value>
  82. <parameters>
  83. <instance-parameter name="self" transfer-ownership="none">
  84. <doc xml:space="preserve">#GstFFTF32 instance for this call</doc>
  85. <type name="FFTF32" c:type="GstFFTF32*"/>
  86. </instance-parameter>
  87. <parameter name="freqdata" transfer-ownership="none">
  88. <doc xml:space="preserve">Buffer of the samples in the frequency domain</doc>
  89. <type name="FFTF32Complex" c:type="const GstFFTF32Complex*"/>
  90. </parameter>
  91. <parameter name="timedata" transfer-ownership="none">
  92. <doc xml:space="preserve">Target buffer for the samples in the time domain</doc>
  93. <type name="gfloat" c:type="gfloat*"/>
  94. </parameter>
  95. </parameters>
  96. </method>
  97. <method name="window" c:identifier="gst_fft_f32_window">
  98. <doc xml:space="preserve">This calls the window function @window on the @timedata sample buffer.</doc>
  99. <return-value transfer-ownership="none">
  100. <type name="none" c:type="void"/>
  101. </return-value>
  102. <parameters>
  103. <instance-parameter name="self" transfer-ownership="none">
  104. <doc xml:space="preserve">#GstFFTF32 instance for this call</doc>
  105. <type name="FFTF32" c:type="GstFFTF32*"/>
  106. </instance-parameter>
  107. <parameter name="timedata" transfer-ownership="none">
  108. <doc xml:space="preserve">Time domain samples</doc>
  109. <type name="gfloat" c:type="gfloat*"/>
  110. </parameter>
  111. <parameter name="window" transfer-ownership="none">
  112. <doc xml:space="preserve">Window function to apply</doc>
  113. <type name="FFTWindow" c:type="GstFFTWindow"/>
  114. </parameter>
  115. </parameters>
  116. </method>
  117. <function name="new" c:identifier="gst_fft_f32_new" introspectable="0">
  118. <doc xml:space="preserve">This returns a new #GstFFTF32 instance with the given parameters. It makes
  119. sense to keep one instance for several calls for speed reasons.
  120. @len must be even and to get the best performance a product of
  121. 2, 3 and 5. To get the next number with this characteristics use
  122. gst_fft_next_fast_length().</doc>
  123. <return-value>
  124. <doc xml:space="preserve">a new #GstFFTF32 instance.</doc>
  125. <type name="FFTF32" c:type="GstFFTF32*"/>
  126. </return-value>
  127. <parameters>
  128. <parameter name="len" transfer-ownership="none">
  129. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  130. <type name="gint" c:type="gint"/>
  131. </parameter>
  132. <parameter name="inverse" transfer-ownership="none">
  133. <doc xml:space="preserve">%TRUE if the #GstFFTF32 instance should be used for the inverse FFT</doc>
  134. <type name="gboolean" c:type="gboolean"/>
  135. </parameter>
  136. </parameters>
  137. </function>
  138. </record>
  139. <record name="FFTF32Complex" c:type="GstFFTF32Complex">
  140. <doc xml:space="preserve">Data type for complex numbers composed of
  141. 32 bit float.</doc>
  142. <field name="r" writable="1">
  143. <doc xml:space="preserve">Real part</doc>
  144. <type name="gfloat" c:type="gfloat"/>
  145. </field>
  146. <field name="i" writable="1">
  147. <doc xml:space="preserve">Imaginary part</doc>
  148. <type name="gfloat" c:type="gfloat"/>
  149. </field>
  150. </record>
  151. <record name="FFTF64" c:type="GstFFTF64" disguised="1">
  152. <doc xml:space="preserve">#GstFFTF64 provides a FFT implementation and related functions for
  153. 64 bit float samples. To use this call gst_fft_f64_new() for
  154. allocating a #GstFFTF64 instance with the appropriate parameters and
  155. then call gst_fft_f64_fft() or gst_fft_f64_inverse_fft() to perform the
  156. FFT or inverse FFT on a buffer of samples.
  157. After use free the #GstFFTF64 instance with gst_fft_f64_free().
  158. For the best performance use gst_fft_next_fast_length() to get a
  159. number that is entirely a product of 2, 3 and 5 and use this as the
  160. @len parameter for gst_fft_f64_new().
  161. The @len parameter specifies the number of samples in the time domain that
  162. will be processed or generated. The number of samples in the frequency domain
  163. is @len/2 + 1. To get n samples in the frequency domain use 2*n - 2 as @len.
  164. Before performing the FFT on time domain data it usually makes sense
  165. to apply a window function to it. For this gst_fft_f64_window() can comfortably
  166. be used.
  167. Be aware, that you can't simply run gst_fft_f32_inverse_fft() on the
  168. resulting frequency data of gst_fft_f32_fft() to get the original data back.
  169. The relation between them is iFFT (FFT (x)) = x * nfft where nfft is the
  170. length of the FFT. This also has to be taken into account when calculation
  171. the magnitude of the frequency data.</doc>
  172. <method name="fft" c:identifier="gst_fft_f64_fft">
  173. <doc xml:space="preserve">This performs the FFT on @timedata and puts the result in @freqdata.
  174. @timedata must have as many samples as specified with the @len parameter while
  175. allocating the #GstFFTF64 instance with gst_fft_f64_new().
  176. @freqdata must be large enough to hold @len/2 + 1 #GstFFTF64Complex frequency
  177. domain samples.</doc>
  178. <return-value transfer-ownership="none">
  179. <type name="none" c:type="void"/>
  180. </return-value>
  181. <parameters>
  182. <instance-parameter name="self" transfer-ownership="none">
  183. <doc xml:space="preserve">#GstFFTF64 instance for this call</doc>
  184. <type name="FFTF64" c:type="GstFFTF64*"/>
  185. </instance-parameter>
  186. <parameter name="timedata" transfer-ownership="none">
  187. <doc xml:space="preserve">Buffer of the samples in the time domain</doc>
  188. <type name="gdouble" c:type="const gdouble*"/>
  189. </parameter>
  190. <parameter name="freqdata" transfer-ownership="none">
  191. <doc xml:space="preserve">Target buffer for the samples in the frequency domain</doc>
  192. <type name="FFTF64Complex" c:type="GstFFTF64Complex*"/>
  193. </parameter>
  194. </parameters>
  195. </method>
  196. <method name="free" c:identifier="gst_fft_f64_free">
  197. <doc xml:space="preserve">This frees the memory allocated for @self.</doc>
  198. <return-value transfer-ownership="none">
  199. <type name="none" c:type="void"/>
  200. </return-value>
  201. <parameters>
  202. <instance-parameter name="self" transfer-ownership="none">
  203. <doc xml:space="preserve">#GstFFTF64 instance for this call</doc>
  204. <type name="FFTF64" c:type="GstFFTF64*"/>
  205. </instance-parameter>
  206. </parameters>
  207. </method>
  208. <method name="inverse_fft" c:identifier="gst_fft_f64_inverse_fft">
  209. <doc xml:space="preserve">This performs the inverse FFT on @freqdata and puts the result in @timedata.
  210. @freqdata must have @len/2 + 1 samples, where @len is the parameter specified
  211. while allocating the #GstFFTF64 instance with gst_fft_f64_new().
  212. @timedata must be large enough to hold @len time domain samples.</doc>
  213. <return-value transfer-ownership="none">
  214. <type name="none" c:type="void"/>
  215. </return-value>
  216. <parameters>
  217. <instance-parameter name="self" transfer-ownership="none">
  218. <doc xml:space="preserve">#GstFFTF64 instance for this call</doc>
  219. <type name="FFTF64" c:type="GstFFTF64*"/>
  220. </instance-parameter>
  221. <parameter name="freqdata" transfer-ownership="none">
  222. <doc xml:space="preserve">Buffer of the samples in the frequency domain</doc>
  223. <type name="FFTF64Complex" c:type="const GstFFTF64Complex*"/>
  224. </parameter>
  225. <parameter name="timedata" transfer-ownership="none">
  226. <doc xml:space="preserve">Target buffer for the samples in the time domain</doc>
  227. <type name="gdouble" c:type="gdouble*"/>
  228. </parameter>
  229. </parameters>
  230. </method>
  231. <method name="window" c:identifier="gst_fft_f64_window">
  232. <doc xml:space="preserve">This calls the window function @window on the @timedata sample buffer.</doc>
  233. <return-value transfer-ownership="none">
  234. <type name="none" c:type="void"/>
  235. </return-value>
  236. <parameters>
  237. <instance-parameter name="self" transfer-ownership="none">
  238. <doc xml:space="preserve">#GstFFTF64 instance for this call</doc>
  239. <type name="FFTF64" c:type="GstFFTF64*"/>
  240. </instance-parameter>
  241. <parameter name="timedata" transfer-ownership="none">
  242. <doc xml:space="preserve">Time domain samples</doc>
  243. <type name="gdouble" c:type="gdouble*"/>
  244. </parameter>
  245. <parameter name="window" transfer-ownership="none">
  246. <doc xml:space="preserve">Window function to apply</doc>
  247. <type name="FFTWindow" c:type="GstFFTWindow"/>
  248. </parameter>
  249. </parameters>
  250. </method>
  251. <function name="new" c:identifier="gst_fft_f64_new" introspectable="0">
  252. <doc xml:space="preserve">This returns a new #GstFFTF64 instance with the given parameters. It makes
  253. sense to keep one instance for several calls for speed reasons.
  254. @len must be even and to get the best performance a product of
  255. 2, 3 and 5. To get the next number with this characteristics use
  256. gst_fft_next_fast_length().</doc>
  257. <return-value>
  258. <doc xml:space="preserve">a new #GstFFTF64 instance.</doc>
  259. <type name="FFTF64" c:type="GstFFTF64*"/>
  260. </return-value>
  261. <parameters>
  262. <parameter name="len" transfer-ownership="none">
  263. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  264. <type name="gint" c:type="gint"/>
  265. </parameter>
  266. <parameter name="inverse" transfer-ownership="none">
  267. <doc xml:space="preserve">%TRUE if the #GstFFTF64 instance should be used for the inverse FFT</doc>
  268. <type name="gboolean" c:type="gboolean"/>
  269. </parameter>
  270. </parameters>
  271. </function>
  272. </record>
  273. <record name="FFTF64Complex" c:type="GstFFTF64Complex">
  274. <doc xml:space="preserve">Data type for complex numbers composed of
  275. 64 bit float.</doc>
  276. <field name="r" writable="1">
  277. <doc xml:space="preserve">Real part</doc>
  278. <type name="gdouble" c:type="gdouble"/>
  279. </field>
  280. <field name="i" writable="1">
  281. <doc xml:space="preserve">Imaginary part</doc>
  282. <type name="gdouble" c:type="gdouble"/>
  283. </field>
  284. </record>
  285. <record name="FFTS16" c:type="GstFFTS16" disguised="1">
  286. <doc xml:space="preserve">#GstFFTS16 provides a FFT implementation and related functions for
  287. signed 16 bit integer samples. To use this call gst_fft_s16_new() for
  288. allocating a #GstFFTS16 instance with the appropriate parameters and
  289. then call gst_fft_s16_fft() or gst_fft_s16_inverse_fft() to perform the
  290. FFT or inverse FFT on a buffer of samples.
  291. After use free the #GstFFTS16 instance with gst_fft_s16_free().
  292. For the best performance use gst_fft_next_fast_length() to get a
  293. number that is entirely a product of 2, 3 and 5 and use this as the
  294. @len parameter for gst_fft_s16_new().
  295. The @len parameter specifies the number of samples in the time domain that
  296. will be processed or generated. The number of samples in the frequency domain
  297. is @len/2 + 1. To get n samples in the frequency domain use 2*n - 2 as @len.
  298. Before performing the FFT on time domain data it usually makes sense
  299. to apply a window function to it. For this gst_fft_s16_window() can comfortably
  300. be used.
  301. Be aware, that you can't simply run gst_fft_s16_inverse_fft() on the
  302. resulting frequency data of gst_fft_s16_fft() to get the original data back.
  303. The relation between them is iFFT (FFT (x)) = x / nfft where nfft is the
  304. length of the FFT. This also has to be taken into account when calculation
  305. the magnitude of the frequency data.</doc>
  306. <method name="fft" c:identifier="gst_fft_s16_fft">
  307. <doc xml:space="preserve">This performs the FFT on @timedata and puts the result in @freqdata.
  308. @timedata must have as many samples as specified with the @len parameter while
  309. allocating the #GstFFTS16 instance with gst_fft_s16_new().
  310. @freqdata must be large enough to hold @len/2 + 1 #GstFFTS16Complex frequency
  311. domain samples.</doc>
  312. <return-value transfer-ownership="none">
  313. <type name="none" c:type="void"/>
  314. </return-value>
  315. <parameters>
  316. <instance-parameter name="self" transfer-ownership="none">
  317. <doc xml:space="preserve">#GstFFTS16 instance for this call</doc>
  318. <type name="FFTS16" c:type="GstFFTS16*"/>
  319. </instance-parameter>
  320. <parameter name="timedata" transfer-ownership="none">
  321. <doc xml:space="preserve">Buffer of the samples in the time domain</doc>
  322. <type name="gint16" c:type="const gint16*"/>
  323. </parameter>
  324. <parameter name="freqdata" transfer-ownership="none">
  325. <doc xml:space="preserve">Target buffer for the samples in the frequency domain</doc>
  326. <type name="FFTS16Complex" c:type="GstFFTS16Complex*"/>
  327. </parameter>
  328. </parameters>
  329. </method>
  330. <method name="free" c:identifier="gst_fft_s16_free">
  331. <doc xml:space="preserve">This frees the memory allocated for @self.</doc>
  332. <return-value transfer-ownership="none">
  333. <type name="none" c:type="void"/>
  334. </return-value>
  335. <parameters>
  336. <instance-parameter name="self" transfer-ownership="none">
  337. <doc xml:space="preserve">#GstFFTS16 instance for this call</doc>
  338. <type name="FFTS16" c:type="GstFFTS16*"/>
  339. </instance-parameter>
  340. </parameters>
  341. </method>
  342. <method name="inverse_fft" c:identifier="gst_fft_s16_inverse_fft">
  343. <doc xml:space="preserve">This performs the inverse FFT on @freqdata and puts the result in @timedata.
  344. @freqdata must have @len/2 + 1 samples, where @len is the parameter specified
  345. while allocating the #GstFFTS16 instance with gst_fft_s16_new().
  346. @timedata must be large enough to hold @len time domain samples.</doc>
  347. <return-value transfer-ownership="none">
  348. <type name="none" c:type="void"/>
  349. </return-value>
  350. <parameters>
  351. <instance-parameter name="self" transfer-ownership="none">
  352. <doc xml:space="preserve">#GstFFTS16 instance for this call</doc>
  353. <type name="FFTS16" c:type="GstFFTS16*"/>
  354. </instance-parameter>
  355. <parameter name="freqdata" transfer-ownership="none">
  356. <doc xml:space="preserve">Buffer of the samples in the frequency domain</doc>
  357. <type name="FFTS16Complex" c:type="const GstFFTS16Complex*"/>
  358. </parameter>
  359. <parameter name="timedata" transfer-ownership="none">
  360. <doc xml:space="preserve">Target buffer for the samples in the time domain</doc>
  361. <type name="gint16" c:type="gint16*"/>
  362. </parameter>
  363. </parameters>
  364. </method>
  365. <method name="window" c:identifier="gst_fft_s16_window">
  366. <doc xml:space="preserve">This calls the window function @window on the @timedata sample buffer.</doc>
  367. <return-value transfer-ownership="none">
  368. <type name="none" c:type="void"/>
  369. </return-value>
  370. <parameters>
  371. <instance-parameter name="self" transfer-ownership="none">
  372. <doc xml:space="preserve">#GstFFTS16 instance for this call</doc>
  373. <type name="FFTS16" c:type="GstFFTS16*"/>
  374. </instance-parameter>
  375. <parameter name="timedata" transfer-ownership="none">
  376. <doc xml:space="preserve">Time domain samples</doc>
  377. <type name="gint16" c:type="gint16*"/>
  378. </parameter>
  379. <parameter name="window" transfer-ownership="none">
  380. <doc xml:space="preserve">Window function to apply</doc>
  381. <type name="FFTWindow" c:type="GstFFTWindow"/>
  382. </parameter>
  383. </parameters>
  384. </method>
  385. <function name="new" c:identifier="gst_fft_s16_new" introspectable="0">
  386. <doc xml:space="preserve">This returns a new #GstFFTS16 instance with the given parameters. It makes
  387. sense to keep one instance for several calls for speed reasons.
  388. @len must be even and to get the best performance a product of
  389. 2, 3 and 5. To get the next number with this characteristics use
  390. gst_fft_next_fast_length().</doc>
  391. <return-value>
  392. <doc xml:space="preserve">a new #GstFFTS16 instance.</doc>
  393. <type name="FFTS16" c:type="GstFFTS16*"/>
  394. </return-value>
  395. <parameters>
  396. <parameter name="len" transfer-ownership="none">
  397. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  398. <type name="gint" c:type="gint"/>
  399. </parameter>
  400. <parameter name="inverse" transfer-ownership="none">
  401. <doc xml:space="preserve">%TRUE if the #GstFFTS16 instance should be used for the inverse FFT</doc>
  402. <type name="gboolean" c:type="gboolean"/>
  403. </parameter>
  404. </parameters>
  405. </function>
  406. </record>
  407. <record name="FFTS16Complex" c:type="GstFFTS16Complex">
  408. <doc xml:space="preserve">Data type for complex numbers composed of
  409. signed 16 bit integers.</doc>
  410. <field name="r" writable="1">
  411. <doc xml:space="preserve">Real part</doc>
  412. <type name="gint16" c:type="gint16"/>
  413. </field>
  414. <field name="i" writable="1">
  415. <doc xml:space="preserve">Imaginary part</doc>
  416. <type name="gint16" c:type="gint16"/>
  417. </field>
  418. </record>
  419. <record name="FFTS32" c:type="GstFFTS32" disguised="1">
  420. <doc xml:space="preserve">#GstFFTS32 provides a FFT implementation and related functions for
  421. signed 32 bit integer samples. To use this call gst_fft_s32_new() for
  422. allocating a #GstFFTS32 instance with the appropriate parameters and
  423. then call gst_fft_s32_fft() or gst_fft_s32_inverse_fft() to perform the
  424. FFT or inverse FFT on a buffer of samples.
  425. After use free the #GstFFTS32 instance with gst_fft_s32_free().
  426. For the best performance use gst_fft_next_fast_length() to get a
  427. number that is entirely a product of 2, 3 and 5 and use this as the
  428. @len parameter for gst_fft_s32_new().
  429. The @len parameter specifies the number of samples in the time domain that
  430. will be processed or generated. The number of samples in the frequency domain
  431. is @len/2 + 1. To get n samples in the frequency domain use 2*n - 2 as @len.
  432. Before performing the FFT on time domain data it usually makes sense
  433. to apply a window function to it. For this gst_fft_s32_window() can comfortably
  434. be used.
  435. Be aware, that you can't simply run gst_fft_s32_inverse_fft() on the
  436. resulting frequency data of gst_fft_s32_fft() to get the original data back.
  437. The relation between them is iFFT (FFT (x)) = x / nfft where nfft is the
  438. length of the FFT. This also has to be taken into account when calculation
  439. the magnitude of the frequency data.</doc>
  440. <method name="fft" c:identifier="gst_fft_s32_fft">
  441. <doc xml:space="preserve">This performs the FFT on @timedata and puts the result in @freqdata.
  442. @timedata must have as many samples as specified with the @len parameter while
  443. allocating the #GstFFTS32 instance with gst_fft_s32_new().
  444. @freqdata must be large enough to hold @len/2 + 1 #GstFFTS32Complex frequency
  445. domain samples.</doc>
  446. <return-value transfer-ownership="none">
  447. <type name="none" c:type="void"/>
  448. </return-value>
  449. <parameters>
  450. <instance-parameter name="self" transfer-ownership="none">
  451. <doc xml:space="preserve">#GstFFTS32 instance for this call</doc>
  452. <type name="FFTS32" c:type="GstFFTS32*"/>
  453. </instance-parameter>
  454. <parameter name="timedata" transfer-ownership="none">
  455. <doc xml:space="preserve">Buffer of the samples in the time domain</doc>
  456. <type name="gint32" c:type="const gint32*"/>
  457. </parameter>
  458. <parameter name="freqdata" transfer-ownership="none">
  459. <doc xml:space="preserve">Target buffer for the samples in the frequency domain</doc>
  460. <type name="FFTS32Complex" c:type="GstFFTS32Complex*"/>
  461. </parameter>
  462. </parameters>
  463. </method>
  464. <method name="free" c:identifier="gst_fft_s32_free">
  465. <doc xml:space="preserve">This frees the memory allocated for @self.</doc>
  466. <return-value transfer-ownership="none">
  467. <type name="none" c:type="void"/>
  468. </return-value>
  469. <parameters>
  470. <instance-parameter name="self" transfer-ownership="none">
  471. <doc xml:space="preserve">#GstFFTS32 instance for this call</doc>
  472. <type name="FFTS32" c:type="GstFFTS32*"/>
  473. </instance-parameter>
  474. </parameters>
  475. </method>
  476. <method name="inverse_fft" c:identifier="gst_fft_s32_inverse_fft">
  477. <doc xml:space="preserve">This performs the inverse FFT on @freqdata and puts the result in @timedata.
  478. @freqdata must have @len/2 + 1 samples, where @len is the parameter specified
  479. while allocating the #GstFFTS32 instance with gst_fft_s32_new().
  480. @timedata must be large enough to hold @len time domain samples.</doc>
  481. <return-value transfer-ownership="none">
  482. <type name="none" c:type="void"/>
  483. </return-value>
  484. <parameters>
  485. <instance-parameter name="self" transfer-ownership="none">
  486. <doc xml:space="preserve">#GstFFTS32 instance for this call</doc>
  487. <type name="FFTS32" c:type="GstFFTS32*"/>
  488. </instance-parameter>
  489. <parameter name="freqdata" transfer-ownership="none">
  490. <doc xml:space="preserve">Buffer of the samples in the frequency domain</doc>
  491. <type name="FFTS32Complex" c:type="const GstFFTS32Complex*"/>
  492. </parameter>
  493. <parameter name="timedata" transfer-ownership="none">
  494. <doc xml:space="preserve">Target buffer for the samples in the time domain</doc>
  495. <type name="gint32" c:type="gint32*"/>
  496. </parameter>
  497. </parameters>
  498. </method>
  499. <method name="window" c:identifier="gst_fft_s32_window">
  500. <doc xml:space="preserve">This calls the window function @window on the @timedata sample buffer.</doc>
  501. <return-value transfer-ownership="none">
  502. <type name="none" c:type="void"/>
  503. </return-value>
  504. <parameters>
  505. <instance-parameter name="self" transfer-ownership="none">
  506. <doc xml:space="preserve">#GstFFTS32 instance for this call</doc>
  507. <type name="FFTS32" c:type="GstFFTS32*"/>
  508. </instance-parameter>
  509. <parameter name="timedata" transfer-ownership="none">
  510. <doc xml:space="preserve">Time domain samples</doc>
  511. <type name="gint32" c:type="gint32*"/>
  512. </parameter>
  513. <parameter name="window" transfer-ownership="none">
  514. <doc xml:space="preserve">Window function to apply</doc>
  515. <type name="FFTWindow" c:type="GstFFTWindow"/>
  516. </parameter>
  517. </parameters>
  518. </method>
  519. <function name="new" c:identifier="gst_fft_s32_new" introspectable="0">
  520. <doc xml:space="preserve">This returns a new #GstFFTS32 instance with the given parameters. It makes
  521. sense to keep one instance for several calls for speed reasons.
  522. @len must be even and to get the best performance a product of
  523. 2, 3 and 5. To get the next number with this characteristics use
  524. gst_fft_next_fast_length().</doc>
  525. <return-value>
  526. <doc xml:space="preserve">a new #GstFFTS32 instance.</doc>
  527. <type name="FFTS32" c:type="GstFFTS32*"/>
  528. </return-value>
  529. <parameters>
  530. <parameter name="len" transfer-ownership="none">
  531. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  532. <type name="gint" c:type="gint"/>
  533. </parameter>
  534. <parameter name="inverse" transfer-ownership="none">
  535. <doc xml:space="preserve">%TRUE if the #GstFFTS32 instance should be used for the inverse FFT</doc>
  536. <type name="gboolean" c:type="gboolean"/>
  537. </parameter>
  538. </parameters>
  539. </function>
  540. </record>
  541. <record name="FFTS32Complex" c:type="GstFFTS32Complex">
  542. <doc xml:space="preserve">Data type for complex numbers composed of
  543. signed 32 bit integers.</doc>
  544. <field name="r" writable="1">
  545. <doc xml:space="preserve">Real part</doc>
  546. <type name="gint32" c:type="gint32"/>
  547. </field>
  548. <field name="i" writable="1">
  549. <doc xml:space="preserve">Imaginary part</doc>
  550. <type name="gint32" c:type="gint32"/>
  551. </field>
  552. </record>
  553. <enumeration name="FFTWindow" c:type="GstFFTWindow">
  554. <doc xml:space="preserve">The various window functions available.</doc>
  555. <member name="rectangular"
  556. value="0"
  557. c:identifier="GST_FFT_WINDOW_RECTANGULAR">
  558. <doc xml:space="preserve">Rectangular window</doc>
  559. </member>
  560. <member name="hamming" value="1" c:identifier="GST_FFT_WINDOW_HAMMING">
  561. <doc xml:space="preserve">Hamming window</doc>
  562. </member>
  563. <member name="hann" value="2" c:identifier="GST_FFT_WINDOW_HANN">
  564. <doc xml:space="preserve">Hann (sometimes also called Hanning) window</doc>
  565. </member>
  566. <member name="bartlett" value="3" c:identifier="GST_FFT_WINDOW_BARTLETT">
  567. <doc xml:space="preserve">Bartlett window</doc>
  568. </member>
  569. <member name="blackman" value="4" c:identifier="GST_FFT_WINDOW_BLACKMAN">
  570. <doc xml:space="preserve">Blackman window</doc>
  571. </member>
  572. </enumeration>
  573. <function name="fft_f32_new"
  574. c:identifier="gst_fft_f32_new"
  575. moved-to="FFTF32.new"
  576. introspectable="0">
  577. <doc xml:space="preserve">This returns a new #GstFFTF32 instance with the given parameters. It makes
  578. sense to keep one instance for several calls for speed reasons.
  579. @len must be even and to get the best performance a product of
  580. 2, 3 and 5. To get the next number with this characteristics use
  581. gst_fft_next_fast_length().</doc>
  582. <return-value>
  583. <doc xml:space="preserve">a new #GstFFTF32 instance.</doc>
  584. <type name="FFTF32" c:type="GstFFTF32*"/>
  585. </return-value>
  586. <parameters>
  587. <parameter name="len" transfer-ownership="none">
  588. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  589. <type name="gint" c:type="gint"/>
  590. </parameter>
  591. <parameter name="inverse" transfer-ownership="none">
  592. <doc xml:space="preserve">%TRUE if the #GstFFTF32 instance should be used for the inverse FFT</doc>
  593. <type name="gboolean" c:type="gboolean"/>
  594. </parameter>
  595. </parameters>
  596. </function>
  597. <function name="fft_f64_new"
  598. c:identifier="gst_fft_f64_new"
  599. moved-to="FFTF64.new"
  600. introspectable="0">
  601. <doc xml:space="preserve">This returns a new #GstFFTF64 instance with the given parameters. It makes
  602. sense to keep one instance for several calls for speed reasons.
  603. @len must be even and to get the best performance a product of
  604. 2, 3 and 5. To get the next number with this characteristics use
  605. gst_fft_next_fast_length().</doc>
  606. <return-value>
  607. <doc xml:space="preserve">a new #GstFFTF64 instance.</doc>
  608. <type name="FFTF64" c:type="GstFFTF64*"/>
  609. </return-value>
  610. <parameters>
  611. <parameter name="len" transfer-ownership="none">
  612. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  613. <type name="gint" c:type="gint"/>
  614. </parameter>
  615. <parameter name="inverse" transfer-ownership="none">
  616. <doc xml:space="preserve">%TRUE if the #GstFFTF64 instance should be used for the inverse FFT</doc>
  617. <type name="gboolean" c:type="gboolean"/>
  618. </parameter>
  619. </parameters>
  620. </function>
  621. <function name="fft_next_fast_length"
  622. c:identifier="gst_fft_next_fast_length">
  623. <doc xml:space="preserve">Returns the next number to @n that is entirely a product
  624. of 2, 3 and 5. Using this as the @len parameter for
  625. the different GstFFT types will provide the best performance.</doc>
  626. <return-value transfer-ownership="none">
  627. <doc xml:space="preserve">the next fast FFT length.</doc>
  628. <type name="gint" c:type="gint"/>
  629. </return-value>
  630. <parameters>
  631. <parameter name="n" transfer-ownership="none">
  632. <doc xml:space="preserve">Number for which the next fast length should be returned</doc>
  633. <type name="gint" c:type="gint"/>
  634. </parameter>
  635. </parameters>
  636. </function>
  637. <function name="fft_s16_new"
  638. c:identifier="gst_fft_s16_new"
  639. moved-to="FFTS16.new"
  640. introspectable="0">
  641. <doc xml:space="preserve">This returns a new #GstFFTS16 instance with the given parameters. It makes
  642. sense to keep one instance for several calls for speed reasons.
  643. @len must be even and to get the best performance a product of
  644. 2, 3 and 5. To get the next number with this characteristics use
  645. gst_fft_next_fast_length().</doc>
  646. <return-value>
  647. <doc xml:space="preserve">a new #GstFFTS16 instance.</doc>
  648. <type name="FFTS16" c:type="GstFFTS16*"/>
  649. </return-value>
  650. <parameters>
  651. <parameter name="len" transfer-ownership="none">
  652. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  653. <type name="gint" c:type="gint"/>
  654. </parameter>
  655. <parameter name="inverse" transfer-ownership="none">
  656. <doc xml:space="preserve">%TRUE if the #GstFFTS16 instance should be used for the inverse FFT</doc>
  657. <type name="gboolean" c:type="gboolean"/>
  658. </parameter>
  659. </parameters>
  660. </function>
  661. <function name="fft_s32_new"
  662. c:identifier="gst_fft_s32_new"
  663. moved-to="FFTS32.new"
  664. introspectable="0">
  665. <doc xml:space="preserve">This returns a new #GstFFTS32 instance with the given parameters. It makes
  666. sense to keep one instance for several calls for speed reasons.
  667. @len must be even and to get the best performance a product of
  668. 2, 3 and 5. To get the next number with this characteristics use
  669. gst_fft_next_fast_length().</doc>
  670. <return-value>
  671. <doc xml:space="preserve">a new #GstFFTS32 instance.</doc>
  672. <type name="FFTS32" c:type="GstFFTS32*"/>
  673. </return-value>
  674. <parameters>
  675. <parameter name="len" transfer-ownership="none">
  676. <doc xml:space="preserve">Length of the FFT in the time domain</doc>
  677. <type name="gint" c:type="gint"/>
  678. </parameter>
  679. <parameter name="inverse" transfer-ownership="none">
  680. <doc xml:space="preserve">%TRUE if the #GstFFTS32 instance should be used for the inverse FFT</doc>
  681. <type name="gboolean" c:type="gboolean"/>
  682. </parameter>
  683. </parameters>
  684. </function>
  685. </namespace>
  686. </repository>