about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-04-03 16:55:56 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-04-03 16:55:56 +0200
commit83e92d6298f3be3833b8cd844b97597d41e22265 (patch)
tree915d552816971d09797135d875e3b3ff1e6e5b54 /src
parente080551d5452990f6fb8a85e4b7d88ae057cb4e6 (diff)
downloadbox64-83e92d6298f3be3833b8cd844b97597d41e22265.tar.gz
box64-83e92d6298f3be3833b8cd844b97597d41e22265.zip
Wrapped GstAudioFilter (for #1397)
Diffstat (limited to 'src')
-rw-r--r--src/include/gtkclass.h24
-rw-r--r--src/tools/gtkclass.c42
-rw-r--r--src/wrapped/wrappedgstaudio.c4
3 files changed, 69 insertions, 1 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h
index 2252c94b..9960d74f 100644
--- a/src/include/gtkclass.h
+++ b/src/include/gtkclass.h
@@ -2081,6 +2081,29 @@ typedef struct my_GstVideoFilterClass_s {
   void* _gst_reserved[4];
 } my_GstVideoFilterClass_t;
 
+typedef struct my_GstAudioInfo_s {
+  void*     finfo;
+  int       flags;
+  int       layout;
+  int       rate;
+  int       channels;
+  int       bpf;
+  int       position[64];
+  void*     _gst_reserved[20];
+} my_GstAudioInfo_t;
+
+typedef struct my_GstAudioFilter_s {
+  my_GstBaseTransform_t parent;
+  my_GstAudioInfo_t     info;
+  void*                 _gst_reserved[20];
+} my_GstAudioFilter_t;
+
+typedef struct my_GstAudioFilterClass_s {
+  my_GstBaseTransformClass_t  parent_class;
+  int   (*setup) (void * filter, void* info);
+  void* _gst_reserved[20];
+} my_GstAudioFilterClass_t;
+
 typedef struct my_GDBusProxy_s
 {
   my_GObject_t  parent;
@@ -2238,6 +2261,7 @@ GTKCLASS(GstPushSrc)                \
 GTKCLASS(GstGLBaseSrc)              \
 GTKCLASS(GstAudioDecoder)           \
 GTKCLASS(GstVideoFilter)            \
+GTKCLASS(GstAudioFilter)            \
 GTKIFACE(GstURIHandler)             \
 
 #define GTKCLASS(A) void Set##A##ID(size_t id);
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index 185b7326..34d1803f 100644
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -4418,6 +4418,48 @@ static void bridgeGstVideoFilterInstance(my_GstVideoFilter_t* class)
 {
     bridgeGstBaseTransformInstance(&class->parent);
 }
+// ----- GstAudioFilterClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstAudioFilter, setup, int, (void* filter, void* info), "pp", filter, info);
+
+#define SUPERGO()       \
+    GO(setup, iFpp);    \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstAudioFilterClass(my_GstAudioFilterClass_t* class)
+{
+    wrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstAudioFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstAudioFilterClass(my_GstAudioFilterClass_t* class)
+{
+    unwrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstAudioFilter (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstAudioFilterClass(my_GstAudioFilterClass_t* class)
+{
+    bridgeGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstAudioFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+
+static void unwrapGstAudioFilterInstance(my_GstAudioFilter_t* class)
+{
+    unwrapGstBaseTransformInstance(&class->parent);
+}
+// autobridge
+static void bridgeGstAudioFilterInstance(my_GstAudioFilter_t* class)
+{
+    bridgeGstBaseTransformInstance(&class->parent);
+}
 // ----- GDBusProxyClass ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(GDBusProxy, g_properties_changed, void, (void* proxy, void* changed_properties, const char* const* invalidated_properties), "ppp", proxy, changed_properties, invalidated_properties);
diff --git a/src/wrapped/wrappedgstaudio.c b/src/wrapped/wrappedgstaudio.c
index 952100ad..943d2fa7 100644
--- a/src/wrapped/wrappedgstaudio.c
+++ b/src/wrapped/wrappedgstaudio.c
@@ -32,6 +32,7 @@ typedef size_t  (*LFv_t)();
 
 #define ADDED_FUNCTIONS()                   \
     GO(gst_audio_decoder_get_type, LFv_t)   \
+    GO(gst_audio_filter_get_type, LFv_t)    \
 
 #include "generated/wrappedgstaudiotypes.h"
 
@@ -42,7 +43,8 @@ typedef size_t  (*LFv_t)();
         return -1;
 
 #define CUSTOM_INIT \
-    SetGstAudioDecoderID(my->gst_audio_decoder_get_type());
+    SetGstAudioDecoderID(my->gst_audio_decoder_get_type()); \
+    SetGstAudioFilterID(my->gst_audio_filter_get_type());
 
 #ifdef ANDROID
 #define NEEDED_LIBS "libgstreamer-1.0.so"