mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
gst/arg-types.py: GstMiniObject used as virtual methods parameters should be unreffed before calling the method and t...
Original commit message from CVS: * gst/arg-types.py: GstMiniObject used as virtual methods parameters should be unreffed before calling the method and the ref-ed. Added Params and Returns for const-gchar*, GType and gulong so the code generator can generate more virtual methods handlers/proxys. * gst/gst-types.defs: * gst/gst.defs: * gst/interfaces.defs: Added vtable and virtual method definition for interfaces so we can properly use virtual methods from those interfaces in python.
This commit is contained in:
parent
a0da01acaa
commit
31033595e4
5 changed files with 271 additions and 6 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2006-04-28 Edward Hervey <edward@fluendo.com>
|
||||
|
||||
* gst/arg-types.py:
|
||||
GstMiniObject used as virtual methods parameters should be unreffed
|
||||
before calling the method and the ref-ed.
|
||||
Added Params and Returns for const-gchar*, GType and gulong so the
|
||||
code generator can generate more virtual methods handlers/proxys.
|
||||
* gst/gst-types.defs:
|
||||
* gst/gst.defs:
|
||||
* gst/interfaces.defs:
|
||||
Added vtable and virtual method definition for interfaces so we can properly use virtual
|
||||
methods from those interfaces in python.
|
||||
|
||||
2006-04-28 Edward Hervey <edward@fluendo.com>
|
||||
|
||||
* gst/gstmodule.c: (init_gst):
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
# Author: David I. Lehn <dlehn@users.sourceforge.net>
|
||||
|
||||
from argtypes import UInt64Arg, Int64Arg, PointerArg, ArgMatcher, ArgType, matcher
|
||||
from reversewrapper import Parameter, ReturnType, GBoxedParam, GBoxedReturn
|
||||
from reversewrapper import Parameter, ReturnType, GBoxedParam, GBoxedReturn, IntParam, IntReturn
|
||||
|
||||
class XmlNodeArg(ArgType):
|
||||
"""libxml2 node generator"""
|
||||
|
@ -147,14 +147,15 @@ class GstMiniObjectParam(Parameter):
|
|||
|
||||
def convert_c2py(self):
|
||||
self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
|
||||
self.wrapper.write_code(code=("if (%s)\n"
|
||||
self.wrapper.write_code(code=("if (%s) {\n"
|
||||
" py_%s = pygstminiobject_new((GstMiniObject *) %s);\n"
|
||||
"else {\n"
|
||||
" gst_mini_object_unref ((GstMiniObject *) %s);\n"
|
||||
"} else {\n"
|
||||
" Py_INCREF(Py_None);\n"
|
||||
" py_%s = Py_None;\n"
|
||||
"}"
|
||||
% (self.name, self.name, self.name, self.name)),
|
||||
cleanup=("Py_DECREF(py_%s);" % self.name))
|
||||
% (self.name, self.name, self.name, self.name, self.name)),
|
||||
cleanup=("gst_mini_object_ref ((GstMiniObject *) %s);\nPy_DECREF(py_%s);" % (self.name, self.name)))
|
||||
self.wrapper.add_pyargv_item("py_%s" % self.name)
|
||||
|
||||
matcher.register_reverse('GstMiniObject*', GstMiniObjectParam)
|
||||
|
@ -266,6 +267,50 @@ class UInt64Return(ReturnType):
|
|||
failure_expression="!PyLong_Check(py_retval)",
|
||||
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be an long");')
|
||||
self.wrapper.write_code("retval = PyLong_AsUnsignedLongLongMask(py_retval);")
|
||||
|
||||
class ULongParam(Parameter):
|
||||
|
||||
def get_c_type(self):
|
||||
return self.props.get('c_type', 'gulong')
|
||||
|
||||
def convert_c2py(self):
|
||||
self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
|
||||
self.wrapper.write_code(code=("py_%s = PyLong_FromUnsignedLong(%s);" %
|
||||
(self.name, self.name)),
|
||||
cleanup=("Py_DECREF(py_%s);" % self.name))
|
||||
self.wrapper.add_pyargv_item("py_%s" % self.name)
|
||||
|
||||
class ULongReturn(ReturnType):
|
||||
def get_c_type(self):
|
||||
return self.props.get('c_type', 'gulong')
|
||||
def write_decl(self):
|
||||
self.wrapper.add_declaration("%s retval;" % self.get_c_type())
|
||||
def write_error_return(self):
|
||||
self.wrapper.write_code("return -G_MAXINT;")
|
||||
def write_conversion(self):
|
||||
self.wrapper.write_code(
|
||||
code=None,
|
||||
failure_expression="!PyLong_Check(py_retval)",
|
||||
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be an long");')
|
||||
self.wrapper.write_code("retval = PyLong_AsUnsignedLongMask(py_retval);")
|
||||
|
||||
class ConstStringReturn(ReturnType):
|
||||
|
||||
def get_c_type(self):
|
||||
return "const gchar *"
|
||||
|
||||
def write_decl(self):
|
||||
self.wrapper.add_declaration("const gchar *retval;")
|
||||
|
||||
def write_error_return(self):
|
||||
self.wrapper.write_code("return NULL;")
|
||||
|
||||
def write_conversion(self):
|
||||
self.wrapper.write_code(
|
||||
code=None,
|
||||
failure_expression="!PyString_Check(py_retval)",
|
||||
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be a string");')
|
||||
self.wrapper.write_code("retval = g_strdup(PyString_AsString(py_retval));")
|
||||
|
||||
matcher.register('GstClockTime', UInt64Arg())
|
||||
matcher.register('GstClockTimeDiff', Int64Arg())
|
||||
|
@ -294,4 +339,12 @@ for typename in ["guint64", "GstClockTime"]:
|
|||
matcher.register_reverse(typename, UInt64Param)
|
||||
matcher.register_reverse_ret(typename, UInt64Return)
|
||||
|
||||
matcher.register_reverse_ret("const-gchar*", ConstStringReturn)
|
||||
|
||||
matcher.register_reverse("GType", IntParam)
|
||||
matcher.register_reverse_ret("GType", IntReturn)
|
||||
|
||||
matcher.register_reverse("gulong", ULongParam)
|
||||
matcher.register_reverse_ret("gulong", ULongReturn)
|
||||
|
||||
del arg
|
||||
|
|
|
@ -1028,6 +1028,7 @@
|
|||
(in-module "Gst")
|
||||
(c-name "GstURIHandler")
|
||||
(gtype-id "GST_TYPE_URI_HANDLER")
|
||||
(vtable "GstURIHandlerInterface")
|
||||
)
|
||||
|
||||
(define-interface TagSetter
|
||||
|
@ -1040,5 +1041,6 @@
|
|||
(in-module "Gst")
|
||||
(c-name "GstImplementsInterface")
|
||||
(gtype-id "GST_TYPE_IMPLEMENTS_INTERFACE")
|
||||
(vtable "GstImplementsInterfaceClass")
|
||||
)
|
||||
|
||||
|
|
31
gst/gst.defs
31
gst/gst.defs
|
@ -2599,6 +2599,14 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual supported
|
||||
(of-object "GstImplementsInterface")
|
||||
(return-type "gboolean")
|
||||
(parameters
|
||||
'("GType" "iface_type")
|
||||
)
|
||||
)
|
||||
|
||||
;; From ../gstreamer/gst/gstiterator.h
|
||||
|
||||
(define-function iterator_new
|
||||
|
@ -6212,6 +6220,29 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual get_type
|
||||
(of-object "GstURIHandler")
|
||||
(return-type "guint")
|
||||
)
|
||||
|
||||
(define-virtual get_protocols
|
||||
(of-object "GstURIHandler")
|
||||
(return-type "gchar**")
|
||||
)
|
||||
|
||||
(define-virtual get_uri
|
||||
(of-object "GstURIHandler")
|
||||
(return-type "const-gchar*")
|
||||
)
|
||||
|
||||
(define-virtual set_uri
|
||||
(of-object "GstURIHandler")
|
||||
(return-type "gboolean")
|
||||
(parameters
|
||||
'("const-gchar*" "uri")
|
||||
)
|
||||
)
|
||||
|
||||
;; From ../gstreamer/gst/gstutils.h
|
||||
|
||||
(define-function util_set_value_from_string
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
(in-module "Gst")
|
||||
(c-name "GstColorBalance")
|
||||
(gtype-id "GST_TYPE_COLOR_BALANCE")
|
||||
(vtable "GstColorBalanceClass")
|
||||
)
|
||||
|
||||
(define-object ColorBalanceChannel
|
||||
|
@ -33,6 +34,7 @@
|
|||
(fields
|
||||
'("GstMixerType" "mixer_type")
|
||||
)
|
||||
(vtable "GstMixerClass")
|
||||
)
|
||||
|
||||
(define-object MixerTrack
|
||||
|
@ -60,18 +62,21 @@
|
|||
(in-module "Gst")
|
||||
(c-name "GstNavigation")
|
||||
(gtype-id "GST_TYPE_NAVIGATION")
|
||||
(vtable "GstNavigationInterface")
|
||||
)
|
||||
|
||||
(define-interface PropertyProbe
|
||||
(in-module "Gst")
|
||||
(c-name "GstPropertyProbe")
|
||||
(gtype-id "GST_TYPE_PROPERTY_PROBE")
|
||||
(vtable "GstPropertyProbeInterface")
|
||||
)
|
||||
|
||||
(define-interface Tuner
|
||||
(in-module "Gst")
|
||||
(c-name "GstTuner")
|
||||
(gtype-id "GST_TYPE_TUNER")
|
||||
(vtable "GstTunerClass")
|
||||
)
|
||||
|
||||
(define-object TunerChannel
|
||||
|
@ -189,6 +194,28 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual list_channels
|
||||
(of-object "GstColorBalance")
|
||||
(return-type "const-GList*")
|
||||
)
|
||||
|
||||
(define-virtual set_value
|
||||
(of-object "GstColorBalance")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstColorBalanceChannel*" "channel")
|
||||
'("gint" "value")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_value
|
||||
(of-object "GstColorBalance")
|
||||
(return-type "gint")
|
||||
(parameters
|
||||
'("GstColorBalanceChannel*" "channel")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
;; From /opt/gnome/include/gstreamer-0.7/gst/mixer/mixer.h
|
||||
|
@ -303,6 +330,48 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual list_tracks
|
||||
(of-object "GstMixer")
|
||||
(return-type "const-GList*")
|
||||
)
|
||||
|
||||
(define-virtual set_volume
|
||||
(of-object "GstMixer")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstMixerTrack*" "track")
|
||||
'("gint*" "volumes")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_volume
|
||||
(of-object "GstMixer")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstMixerTrack*" "track")
|
||||
'("gint*" "volumes")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual set_mute
|
||||
(of-object "GstMixer")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstMixerTrack*" "track")
|
||||
'("gboolean" "mute")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual set_record
|
||||
(of-object "GstMixer")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstMixerTrack*" "track")
|
||||
'("gboolean" "record")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; From ../gst-plugins-base/gst-libs/gst/interfaces/mixeroptions.h
|
||||
|
||||
(define-function gst_mixer_options_get_type
|
||||
|
@ -355,7 +424,13 @@
|
|||
)
|
||||
)
|
||||
|
||||
|
||||
(define-virtual send_event
|
||||
(of-object "GstNavigation")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstStructure*" "structure")
|
||||
)
|
||||
)
|
||||
|
||||
;; From /opt/gnome/include/gstreamer-0.7/gst/propertyprobe/propertyprobe.h
|
||||
|
||||
|
@ -451,6 +526,37 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual get_properties
|
||||
(of-object "GstPropertyProbe")
|
||||
(return-type "const-GList*")
|
||||
)
|
||||
|
||||
(define-virtual needs_probe
|
||||
(of-object "GstPropertyProbe")
|
||||
(return-type "gboolean")
|
||||
(parameters
|
||||
'("guint" "prop_id")
|
||||
'("const-GParamSpec*" "pspec")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual probe_property
|
||||
(of-object "GstPropertyProbe")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("guint" "prop_id")
|
||||
'("const-GParamSpec*" "pspec")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_values
|
||||
(of-object "GstPropertyProbe")
|
||||
(return-type "GValueArray*")
|
||||
(parameters
|
||||
'("guint" "prop_id")
|
||||
'("const-GParamSpec*" "pspec")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; From /opt/gnome/include/gstreamer-0.7/gst/tuner/tuner.h
|
||||
|
@ -586,6 +692,66 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-virtual list_channels
|
||||
(of-object "GstTuner")
|
||||
(return-type "const-GList*")
|
||||
)
|
||||
|
||||
(define-virtual set_channel
|
||||
(of-object "GstTuner")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstTunerChannel*" "channel")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_channel
|
||||
(of-object "GstTuner")
|
||||
(return-type "GstTunerChannel*")
|
||||
)
|
||||
|
||||
(define-virtual list_norms
|
||||
(of-object "GstTuner")
|
||||
(return-type "const-GList*")
|
||||
)
|
||||
|
||||
(define-virtual set_norm
|
||||
(of-object "GstTuner")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstTunerNorm*" "channel")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_norm
|
||||
(of-object "GstTuner")
|
||||
(return-type "GstTunerNorm*")
|
||||
)
|
||||
|
||||
(define-virtual set_frequency
|
||||
(of-object "GstTuner")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstTunerChannel*" "channel")
|
||||
'("gulong" "frequency")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual get_frequency
|
||||
(of-object "GstTuner")
|
||||
(return-type "gulong")
|
||||
(parameters
|
||||
'("GstTunerChannel*" "channel")
|
||||
)
|
||||
)
|
||||
|
||||
(define-virtual signal_strength
|
||||
(of-object "GstTuner")
|
||||
(return-type "gint")
|
||||
(parameters
|
||||
'("GstTunerChannel*" "channel")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue