diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-09 14:42:08 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-09 14:42:08 +0200 |
| commit | 4df1f85492926f846dc42301a236a4b77c38a70e (patch) | |
| tree | 387d736a752eca579058ab1e957defd28743da3f /src | |
| parent | ad79f878ebc245aaa5495c9cbd580cb907d141fd (diff) | |
| download | box64-4df1f85492926f846dc42301a236a4b77c38a70e.tar.gz box64-4df1f85492926f846dc42301a236a4b77c38a70e.zip | |
Added some more libgstreamer wrapped functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedgstreamertypes.h | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstbase_private.h | 2 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstreamer.c | 27 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstreamer_private.h | 14 |
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, |