summaryrefslogtreecommitdiff
path: root/include/gst/fft
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-08-03 21:02:36 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-08-03 21:02:36 +0300
commit5323a782c4e8c42781f22ce2f488962a18f82554 (patch)
treef71537197b16f0f8fd0d6937f7120d018d220814 /include/gst/fft
parent50acf9d37183f86f6f623aad410003392b0af41f (diff)
Jabber: initial version of Jingle support
Diffstat (limited to 'include/gst/fft')
-rw-r--r--include/gst/fft/fft-prelude.h33
-rw-r--r--include/gst/fft/fft.h31
-rw-r--r--include/gst/fft/gstfft.h57
-rw-r--r--include/gst/fft/gstfftf32.h71
-rw-r--r--include/gst/fft/gstfftf64.h71
-rw-r--r--include/gst/fft/gstffts16.h71
-rw-r--r--include/gst/fft/gstffts32.h71
7 files changed, 405 insertions, 0 deletions
diff --git a/include/gst/fft/fft-prelude.h b/include/gst/fft/fft-prelude.h
new file mode 100644
index 0000000000..71a873dbc3
--- /dev/null
+++ b/include/gst/fft/fft-prelude.h
@@ -0,0 +1,33 @@
+/* GStreamer FFT Library
+ * Copyright (C) 2018 GStreamer developers
+ *
+ * fft-prelude.h: prelude include header for gst-fft library
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT_PRELUDE_H__
+#define __GST_FFT_PRELUDE_H__
+
+#include <gst/gst.h>
+
+#ifdef BUILDING_GST_FFT
+#define GST_FFT_API GST_API_EXPORT /* from config.h */
+#else
+#define GST_FFT_API GST_API_IMPORT
+#endif
+
+#endif /* __GST_FFT_PRELUDE_H__ */
diff --git a/include/gst/fft/fft.h b/include/gst/fft/fft.h
new file mode 100644
index 0000000000..fc78a42cde
--- /dev/null
+++ b/include/gst/fft/fft.h
@@ -0,0 +1,31 @@
+/* GStreamer
+ * Copyright (C) 2012 GStreamer developers
+ *
+ * gstfft.h: single include header for gst-fft library
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT__H__
+#define __GST_FFT__H__
+
+#include <gst/fft/gstfft.h>
+#include <gst/fft/gstffts16.h>
+#include <gst/fft/gstffts32.h>
+#include <gst/fft/gstfftf32.h>
+#include <gst/fft/gstfftf64.h>
+
+#endif /* __GST_FFT__H__ */
diff --git a/include/gst/fft/gstfft.h b/include/gst/fft/gstfft.h
new file mode 100644
index 0000000000..b3ff54aef9
--- /dev/null
+++ b/include/gst/fft/gstfft.h
@@ -0,0 +1,57 @@
+/* GStreamer
+ * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <math.h>
+#include <gst/gst.h>
+
+#ifndef __GST_FFT_H__
+#define __GST_FFT_H__
+
+#include <gst/fft/fft-prelude.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GstFFTWindow:
+ * @GST_FFT_WINDOW_RECTANGULAR: Rectangular window
+ * @GST_FFT_WINDOW_HAMMING: Hamming window
+ * @GST_FFT_WINDOW_HANN: Hann (sometimes also called Hanning) window
+ * @GST_FFT_WINDOW_BARTLETT: Bartlett window
+ * @GST_FFT_WINDOW_BLACKMAN: Blackman window
+ *
+ * The various window functions available.
+ */
+typedef enum
+{
+ GST_FFT_WINDOW_RECTANGULAR,
+ GST_FFT_WINDOW_HAMMING,
+ GST_FFT_WINDOW_HANN,
+ GST_FFT_WINDOW_BARTLETT,
+ GST_FFT_WINDOW_BLACKMAN
+} GstFFTWindow;
+
+/* Functions */
+
+GST_FFT_API
+gint gst_fft_next_fast_length (gint n) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __GST_FFT_H__ */
diff --git a/include/gst/fft/gstfftf32.h b/include/gst/fft/gstfftf32.h
new file mode 100644
index 0000000000..0cd5c41656
--- /dev/null
+++ b/include/gst/fft/gstfftf32.h
@@ -0,0 +1,71 @@
+/* GStreamer
+ * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT_F32_H__
+#define __GST_FFT_F32_H__
+
+#include <glib.h>
+#include <gst/gst.h>
+
+#include "gstfft.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GstFFTF32 GstFFTF32;
+typedef struct _GstFFTF32Complex GstFFTF32Complex;
+
+/* Copy of kiss_fft_f32_cpx for documentation reasons,
+ * do NOT change! */
+
+/**
+ * GstFFTF32Complex:
+ * @r: Real part
+ * @i: Imaginary part
+ *
+ * Data type for complex numbers composed of
+ * 32 bit float.
+ */
+struct _GstFFTF32Complex
+{
+ gfloat r;
+ gfloat i;
+};
+
+/* Functions */
+
+GST_FFT_API
+GstFFTF32 * gst_fft_f32_new (gint len, gboolean inverse);
+
+GST_FFT_API
+void gst_fft_f32_free (GstFFTF32 *self);
+
+GST_FFT_API
+void gst_fft_f32_fft (GstFFTF32 *self, const gfloat *timedata,
+ GstFFTF32Complex *freqdata);
+
+GST_FFT_API
+void gst_fft_f32_inverse_fft (GstFFTF32 *self, const GstFFTF32Complex *freqdata,
+ gfloat *timedata);
+
+GST_FFT_API
+void gst_fft_f32_window (GstFFTF32 *self, gfloat *timedata, GstFFTWindow window);
+
+G_END_DECLS
+
+#endif /* __GST_FFT_F32_H__ */
diff --git a/include/gst/fft/gstfftf64.h b/include/gst/fft/gstfftf64.h
new file mode 100644
index 0000000000..52700b45e0
--- /dev/null
+++ b/include/gst/fft/gstfftf64.h
@@ -0,0 +1,71 @@
+/* GStreamer
+ * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT_F64_H__
+#define __GST_FFT_F64_H__
+
+#include <glib.h>
+#include <gst/gst.h>
+
+#include "gstfft.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GstFFTF64 GstFFTF64;
+typedef struct _GstFFTF64Complex GstFFTF64Complex;
+
+/* Copy of kiss_fft_f64_cpx for documentation reasons,
+ * do NOT change! */
+
+/**
+ * GstFFTF64Complex:
+ * @r: Real part
+ * @i: Imaginary part
+ *
+ * Data type for complex numbers composed of
+ * 64 bit float.
+ */
+struct _GstFFTF64Complex
+{
+ gdouble r;
+ gdouble i;
+};
+
+/* Functions */
+
+GST_FFT_API
+GstFFTF64 * gst_fft_f64_new (gint len, gboolean inverse);
+
+GST_FFT_API
+void gst_fft_f64_free (GstFFTF64 *self);
+
+GST_FFT_API
+void gst_fft_f64_fft (GstFFTF64 *self, const gdouble *timedata,
+ GstFFTF64Complex *freqdata);
+
+GST_FFT_API
+void gst_fft_f64_inverse_fft (GstFFTF64 *self, const GstFFTF64Complex *freqdata,
+ gdouble *timedata);
+
+GST_FFT_API
+void gst_fft_f64_window (GstFFTF64 *self, gdouble *timedata, GstFFTWindow window);
+
+G_END_DECLS
+
+#endif /* __GST_FFT_F64_H__ */
diff --git a/include/gst/fft/gstffts16.h b/include/gst/fft/gstffts16.h
new file mode 100644
index 0000000000..b0f9b9271b
--- /dev/null
+++ b/include/gst/fft/gstffts16.h
@@ -0,0 +1,71 @@
+/* GStreamer
+ * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT_S16_H__
+#define __GST_FFT_S16_H__
+
+#include <glib.h>
+#include <gst/gst.h>
+
+#include "gstfft.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GstFFTS16 GstFFTS16;
+typedef struct _GstFFTS16Complex GstFFTS16Complex;
+
+/* Copy of kiss_fft_s16_cpx for documentation reasons,
+ * do NOT change! */
+
+/**
+ * GstFFTS16Complex:
+ * @r: Real part
+ * @i: Imaginary part
+ *
+ * Data type for complex numbers composed of
+ * signed 16 bit integers.
+ */
+struct _GstFFTS16Complex
+{
+ gint16 r;
+ gint16 i;
+};
+
+/* Functions */
+
+GST_FFT_API
+GstFFTS16 * gst_fft_s16_new (gint len, gboolean inverse);
+
+GST_FFT_API
+void gst_fft_s16_free (GstFFTS16 *self);
+
+GST_FFT_API
+void gst_fft_s16_fft (GstFFTS16 *self, const gint16 *timedata,
+ GstFFTS16Complex *freqdata);
+
+GST_FFT_API
+void gst_fft_s16_inverse_fft (GstFFTS16 *self, const GstFFTS16Complex *freqdata,
+ gint16 *timedata);
+
+GST_FFT_API
+void gst_fft_s16_window (GstFFTS16 *self, gint16 *timedata, GstFFTWindow window);
+
+G_END_DECLS
+
+#endif /* __GST_FFT_S16_H__ */
diff --git a/include/gst/fft/gstffts32.h b/include/gst/fft/gstffts32.h
new file mode 100644
index 0000000000..29505c26ec
--- /dev/null
+++ b/include/gst/fft/gstffts32.h
@@ -0,0 +1,71 @@
+/* GStreamer
+ * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FFT_S32_H__
+#define __GST_FFT_S32_H__
+
+#include <glib.h>
+#include <gst/gst.h>
+
+#include "gstfft.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GstFFTS32 GstFFTS32;
+typedef struct _GstFFTS32Complex GstFFTS32Complex;
+
+/* Copy of kiss_fft_s32_cpx for documentation reasons,
+ * do NOT change! */
+
+/**
+ * GstFFTS32Complex:
+ * @r: Real part
+ * @i: Imaginary part
+ *
+ * Data type for complex numbers composed of
+ * signed 32 bit integers.
+ */
+struct _GstFFTS32Complex
+{
+ gint32 r;
+ gint32 i;
+};
+
+/* Functions */
+
+GST_FFT_API
+GstFFTS32 * gst_fft_s32_new (gint len, gboolean inverse);
+
+GST_FFT_API
+void gst_fft_s32_free (GstFFTS32 *self);
+
+GST_FFT_API
+void gst_fft_s32_fft (GstFFTS32 *self, const gint32 *timedata,
+ GstFFTS32Complex *freqdata);
+
+GST_FFT_API
+void gst_fft_s32_inverse_fft (GstFFTS32 *self, const GstFFTS32Complex *freqdata,
+ gint32 *timedata);
+
+GST_FFT_API
+void gst_fft_s32_window (GstFFTS32 *self, gint32 *timedata, GstFFTWindow window);
+
+G_END_DECLS
+
+#endif /* __GST_FFT_S32_H__ */