about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-09 14:42:08 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-09 14:42:08 +0200
commit4df1f85492926f846dc42301a236a4b77c38a70e (patch)
tree387d736a752eca579058ab1e957defd28743da3f /src
parentad79f878ebc245aaa5495c9cbd580cb907d141fd (diff)
downloadbox64-4df1f85492926f846dc42301a236a4b77c38a70e.tar.gz
box64-4df1f85492926f846dc42301a236a4b77c38a70e.zip
Added some more libgstreamer wrapped functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt3
-rw-r--r--src/wrapped/generated/wrappedgstreamertypes.h2
-rw-r--r--src/wrapped/generated/wrapper.c3
-rw-r--r--src/wrapped/generated/wrapper.h1
-rw-r--r--src/wrapped/wrappedgstbase_private.h2
-rw-r--r--src/wrapped/wrappedgstreamer.c27
-rw-r--r--src/wrapped/wrappedgstreamer_private.h14
7 files changed, 44 insertions, 8 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 08102994..288e55fb 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1636,6 +1636,7 @@
 #() pFppupp
 #() pFppddu
 #() pFppLii
+#() pFppLpp
 #() pFpppii
 #() pFpppip
 #() pFpppIi
@@ -3367,6 +3368,8 @@ wrappedgstreamer:
 - vFppA:
   - gst_caps_set_simple_valist
   - gst_structure_remove_fields_valist
+- iFppp:
+  - gst_caps_foreach
 - iFppV:
   - gst_structure_get
 - iFppA:
diff --git a/src/wrapped/generated/wrappedgstreamertypes.h b/src/wrapped/generated/wrappedgstreamertypes.h
index 1464e544..cdd14e6e 100644
--- a/src/wrapped/generated/wrappedgstreamertypes.h
+++ b/src/wrapped/generated/wrappedgstreamertypes.h
@@ -13,6 +13,7 @@
 
 typedef void (*vFppV_t)(void*, void*, ...);
 typedef void (*vFppA_t)(void*, void*, va_list);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
 typedef int32_t (*iFppV_t)(void*, void*, ...);
 typedef int32_t (*iFppA_t)(void*, void*, va_list);
 typedef void* (*pFppV_t)(void*, void*, ...);
@@ -27,6 +28,7 @@ typedef void (*vFpippippA_t)(void*, int32_t, void*, void*, int32_t, void*, void*
 	GO(gst_structure_remove_fields, vFppV_t) \
 	GO(gst_caps_set_simple_valist, vFppA_t) \
 	GO(gst_structure_remove_fields_valist, vFppA_t) \
+	GO(gst_caps_foreach, iFppp_t) \
 	GO(gst_structure_get, iFppV_t) \
 	GO(gst_structure_get_valist, iFppA_t) \
 	GO(gst_caps_new_simple, pFppV_t) \
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 3d4fbc46..f9d142ae 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1672,6 +1672,7 @@ typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*);
 typedef void* (*pFppupp_t)(void*, void*, uint32_t, void*, void*);
 typedef void* (*pFppddu_t)(void*, void*, double, double, uint32_t);
 typedef void* (*pFppLii_t)(void*, void*, uintptr_t, int32_t, int32_t);
+typedef void* (*pFppLpp_t)(void*, void*, uintptr_t, void*, void*);
 typedef void* (*pFpppii_t)(void*, void*, void*, int32_t, int32_t);
 typedef void* (*pFpppip_t)(void*, void*, void*, int32_t, void*);
 typedef void* (*pFpppIi_t)(void*, void*, void*, int64_t, int32_t);
@@ -4471,6 +4472,7 @@ void pFppuup(x64emu_t *emu, uintptr_t fcn) { pFppuup_t fn = (pFppuup_t)fcn; R_RA
 void pFppupp(x64emu_t *emu, uintptr_t fcn) { pFppupp_t fn = (pFppupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFppddu(x64emu_t *emu, uintptr_t fcn) { pFppddu_t fn = (pFppddu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], (uint32_t)R_RDX); }
 void pFppLii(x64emu_t *emu, uintptr_t fcn) { pFppLii_t fn = (pFppLii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void pFppLpp(x64emu_t *emu, uintptr_t fcn) { pFppLpp_t fn = (pFppLpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFpppii(x64emu_t *emu, uintptr_t fcn) { pFpppii_t fn = (pFpppii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void pFpppip(x64emu_t *emu, uintptr_t fcn) { pFpppip_t fn = (pFpppip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void pFpppIi(x64emu_t *emu, uintptr_t fcn) { pFpppIi_t fn = (pFpppIi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int32_t)R_R8); }
@@ -7030,6 +7032,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFppupp) return 1;
 	if (fun == &pFppddu) return 3;
 	if (fun == &pFppLii) return 1;
+	if (fun == &pFppLpp) return 1;
 	if (fun == &pFpppii) return 1;
 	if (fun == &pFpppip) return 1;
 	if (fun == &pFpppIi) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 571d84a8..de78fc02 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1673,6 +1673,7 @@ void pFppuup(x64emu_t *emu, uintptr_t fnc);
 void pFppupp(x64emu_t *emu, uintptr_t fnc);
 void pFppddu(x64emu_t *emu, uintptr_t fnc);
 void pFppLii(x64emu_t *emu, uintptr_t fnc);
+void pFppLpp(x64emu_t *emu, uintptr_t fnc);
 void pFpppii(x64emu_t *emu, uintptr_t fnc);
 void pFpppip(x64emu_t *emu, uintptr_t fnc);
 void pFpppIi(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedgstbase_private.h b/src/wrapped/wrappedgstbase_private.h
index facb23f6..f203a1b5 100644
--- a/src/wrapped/wrappedgstbase_private.h
+++ b/src/wrapped/wrappedgstbase_private.h
@@ -370,7 +370,7 @@ GO(gst_queue_array_push_tail_struct, vFpp)
 //GO(gst_type_find_helper_for_buffer, 
 //GO(gst_type_find_helper_for_buffer_with_extension, 
 //GO(gst_type_find_helper_for_data, 
-//GO(gst_type_find_helper_for_data_with_extension, 
+GO(gst_type_find_helper_for_data_with_extension, pFppLpp)
 //GO(gst_type_find_helper_for_extension, 
 //GO(gst_type_find_helper_get_range, 
 //GO(gst_type_find_helper_get_range_full, 
diff --git a/src/wrapped/wrappedgstreamer.c b/src/wrapped/wrappedgstreamer.c
index 2ce5adc5..cbf51165 100644
--- a/src/wrapped/wrappedgstreamer.c
+++ b/src/wrapped/wrappedgstreamer.c
@@ -229,6 +229,28 @@ static void* findGstPluginFeatureFilterFct(void* fct)
     return NULL;
 }
 
+//GstCapsFilterMapFunc
+#define GO(A)   \
+static uintptr_t my_GstCapsFilterMapFunc_fct_##A = 0;                                           \
+static int my_GstCapsFilterMapFunc_##A(void* a, void* b, void* c)                               \
+{                                                                                               \
+    return (int)RunFunctionFmt(my_context, my_GstCapsFilterMapFunc_fct_##A, "ppp", a, b, c);    \
+}
+SUPER()
+#undef GO
+static void* findGstCapsFilterMapFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GstCapsFilterMapFunc_fct_##A == (uintptr_t)fct) return my_GstCapsFilterMapFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCapsFilterMapFunc_fct_##A == 0) {my_GstCapsFilterMapFunc_fct_##A = (uintptr_t)fct; return my_GstCapsFilterMapFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstCapsFilterMapFunc callback\n");
+    return NULL;
+}
+
 #undef SUPER
 
 EXPORT void my_gst_caps_set_simple(x64emu_t* emu, void* caps, void* field, void* b) {
@@ -362,6 +384,11 @@ EXPORT void* my_gst_registry_feature_filter(x64emu_t* emu, void* reg, void* filt
     return my->gst_registry_feature_filter(reg, findGstPluginFeatureFilterFct(filter), first, data);
 }
 
+EXPORT int my_gst_caps_foreach(x64emu_t* emu, void* caps, void* f, void* data)
+{
+    return my->gst_caps_foreach(caps, findGstCapsFilterMapFuncFct(f), data);
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
diff --git a/src/wrapped/wrappedgstreamer_private.h b/src/wrapped/wrappedgstreamer_private.h
index aad6a81c..0967f7ad 100644
--- a/src/wrapped/wrappedgstreamer_private.h
+++ b/src/wrapped/wrappedgstreamer_private.h
@@ -212,7 +212,7 @@ GO(gst_caps_features_to_string, pFp)
 //GO(gst_caps_filter_and_map_in_place, 
 GO(gst_caps_fixate, pFp)
 GO(gst_caps_flags_get_type, pFv)
-//GOM(gst_caps_foreach, iFEpBp)
+GOM(gst_caps_foreach, iFEppp)
 GO(gst_caps_from_string, pFp)
 GO(gst_caps_get_features, pFpu)
 GO(gst_caps_get_size, uFp)
@@ -895,7 +895,7 @@ GO(gst_meta_api_type_register, LFpp)
 //DATAB(_gst_meta_tag_memory, 
 //DATAB(_gst_meta_transform_copy, 
 //GO(gst_mini_object_add_parent, 
-//GO(gst_mini_object_copy, 
+GO(gst_mini_object_copy, pFp)
 //GO(gst_mini_object_flags_get_type, 
 GO(gst_mini_object_get_qdata, pFpp)
 //GO(gst_mini_object_init, 
@@ -1371,17 +1371,17 @@ GO(gst_stream_collection_new, pFp)
 //GO(gst_stream_error_get_type, 
 //GO(gst_stream_error_quark, 
 //GO(gst_stream_flags_get_type, 
-//GO(gst_stream_get_caps, 
+GO(gst_stream_get_caps, pFp)
 GO(gst_stream_get_stream_flags, uFp)
 GO(gst_stream_get_stream_id, pFp)
 GO(gst_stream_get_stream_type, uFp)
-//GO(gst_stream_get_tags, 
+GO(gst_stream_get_tags, pFp)
 //GO(gst_stream_get_type, 
-//GO(gst_stream_new, 
-//GO(gst_stream_set_caps, 
+GO(gst_stream_new, pFppuu)
+GO(gst_stream_set_caps, vFpp)
 GO(gst_stream_set_stream_flags, vFpu)
 GO(gst_stream_set_stream_type, vFpu)
-//GO(gst_stream_set_tags, 
+GO(gst_stream_set_tags, vFpp)
 //GO(gst_stream_status_type_get_type, 
 GO(gst_stream_type_get_name, pFu)
 //GO(gst_stream_type_get_type,