Commit graph

56 commits

Author SHA1 Message Date
Tim-Philipp Müller
f2aee621a4 pad.override: fix pad probe return value handling
Don't forget to return the return value, makes buffer and event probes
work much better.
2011-09-06 19:07:35 +01:00
Sebastian Dröge
fe9d91f321 gst: Don't use private GstPad API to add data/buffer/event probes
This does not work anymore with latest core because of the
pad cache that enables use of a fast path during data passing
in many situations.

Fixes bug #650987.
2011-05-25 09:38:22 +02:00
Andoni Morales Alastruey
d4eb9e9bf9 gst: Fix override of pad probes
Fixes bug #650986.
2011-05-25 09:06:34 +02:00
Alessandro Decina
3bcc688758 Release the GIL around gst_pad_link. 2009-08-13 11:46:05 +02:00
Edward Hervey
f46cb7c335 gstpad: Don't forget to acquire/release the GIL in pac_block_destroy_data 2009-08-13 11:00:49 +02:00
Jan Schmidt
777a4d59ec python: Fix some locking problems
Add some python pyg_begin_allow_threads/end_allow_threads when calling into some gstreamer functions that might
call into python.
2009-04-18 16:39:42 +01:00
Edward Hervey
51ac26b86c GstPad: Use gst_pad_set_blocked_async_full() if available.
Avoids leaking arguments.
Fixes #514717
2009-02-22 20:12:23 +01:00
Edward Hervey
d66033a19c gstpad.override: Take a copy of gst_static_pad_template_get_caps()
This means that we take a completely new caps for the sole usage of
gst-python. The GstCaps return by gst_static_pad_template_get_caps() are
(surprise) static and therefore will always exist... as long as the
GstStaticPadTemplate (and the factory providing it) still exist.

This solves the case of getting the caps of a static pad template *before*
any element was created using the GstElementFactory. When the factory is
used to create an element, a new factory is created, replacing the old one,
and plainly discarding any static values (including those caps).
2009-02-20 18:29:20 +01:00
Edward Hervey
75bd1f6f6d gst/gstpad.override: Fix memory leak for functions that return a newly created buffer as a function argument.
Original commit message from CVS:
* gst/gstpad.override:
Fix memory leak for functions that return a newly created buffer as
a function argument.
Fixes #554545
2008-12-06 15:52:31 +00:00
Jan Schmidt
468cb05597 gst/gstbuffer.override: the GstBuffer overrides seem to be confused about whether they're mini-objects or a GBoxed, a...
Original commit message from CVS:
* gst/gstbuffer.override:
the GstBuffer overrides seem to be confused about whether they're
mini-objects or a GBoxed, and it makes copy_on_write no actually
return a usable gst.Buffer. Fix up places where GstBuffers are
treated as GBoxed to use pygstminiobject functions.
Makes gst.Buffer('blah').copy_on_write() work.
* testsuite/test_buffer.py:
Add test for copy-on-write writability
* examples/buffer-draw.py:
Add an example of drawing on a GStreamer buffer with cairo
* gst/gstpad.override:
Make function static
2008-06-27 08:39:37 +00:00
Edward Hervey
7e06ad12c6 Re-opens #514717
Original commit message from CVS:
* gst/gstpad.override:
* testsuite/test_pad.py:
Revert 2008-02-10  Alessandro Decina  <alessandro@nnva.org>
Re-opens #514717
2008-06-12 11:11:49 +00:00
Edward Hervey
c68b638588 Fix memleak in gst.Pad.set_blocked_async()
Original commit message from CVS:
reviewed by: Edward Hervey  <edward.hervey@collabora.co.uk>
* gst/gstpad.override:
* testsuite/test_pad.py:
Fix memleak in gst.Pad.set_blocked_async()
Fixes #514717
2008-02-10 13:33:26 +00:00
Edward Hervey
23379fcd1c gst/gstpad.override: Wrap gst.Pad.start_task().
Original commit message from CVS:
* gst/gstpad.override:
Wrap gst.Pad.start_task().
2008-02-10 13:30:11 +00:00
Edward Hervey
45b80b1e8c Re-implement wrapping of gst_pad_add_*probe in order to avoid leaks of user-data associated with the probes.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward.hervey@collabora.co.uk>
* gst/gstpad.override:
* testsuite/test_pad.py:
Re-implement wrapping of gst_pad_add_*probe in order to avoid leaks of
user-data associated with the probes.
Fixes #504786
2008-01-13 17:57:48 +00:00
Jan Schmidt
8723c77035 gst/gstpad.override: Wrap gst_pad_set_blocked_async in pyg thread unlock/lock.
Original commit message from CVS:
* gst/gstpad.override:
Wrap gst_pad_set_blocked_async in pyg thread unlock/lock.
2007-06-11 22:00:20 +00:00
Jan Schmidt
483a107dbf gst/gstpad.override: Release the GIL lock while executing queries in GStreamer.
Original commit message from CVS:
* gst/gstpad.override:
Release the GIL lock while executing queries in GStreamer.
2007-04-11 09:22:15 +00:00
Jan Schmidt
d3a4c03c2b Implement pad query proxying so that python elements can answer pad queries. Fixes: #428299
Original commit message from CVS:
* examples/pyidentity.py:
* gst/common.h:
* gst/gstpad.override:
Implement pad query proxying so that python elements can
answer pad queries. Fixes: #428299
2007-04-10 18:01:25 +00:00
Edward Hervey
1856ed8de0 gst/gstpad.override: Allow removing the negotiated pads of a cap by setting them to None.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward@fluendo.com>
* gst/gstpad.override:
Allow removing the negotiated pads of a cap by setting them to None.
* testsuite/test_pad.py:
Added un-negotian of pads' caps to test above patch.
Fixes #363795
2007-02-04 10:54:48 +00:00
Edward Hervey
d6df984612 gst/gst.defs: Update API definitions.
Original commit message from CVS:
* gst/gst.defs:
Update API definitions.
* gst/common.h:
* gst/gstpad.override:
Add wrapper functions for settings activate, activatepull and
activatepush functions on pads.
* gst/gst.override:
Wrapper for gst_segment_set_seek() and gst_segment_clip()
Remove global ignore for *_init(), allows gst_segment_init() to be
properly code-generated.
* testsuite/Makefile.am:
* testsuite/test_segment.py:
Add unit test for gst.Segment object.
2006-12-19 11:38:01 +00:00
Edward Hervey
c09393b5b9 gst/: Add implementation of gst.Pad.set_setcaps_function().
Original commit message from CVS:
* gst/common.h:
* gst/gstpad.override:
Add implementation of gst.Pad.set_setcaps_function().
2006-12-01 17:41:28 +00:00
Edward Hervey
6992f7de67 gst/gstmessage.override: State change is a list and not a tuple
Original commit message from CVS:
* gst/gstmessage.override:
State change is a list and not a tuple
* gst/gstpad.override:
query_position() got busted in previous commit.
2006-07-03 09:31:26 +00:00
Edward Hervey
c52a37cd82 gst/: Use Py_BuildValue to construct tuples.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward@fluendo.com>
* gst/gstelement.override:
* gst/gstevent.override:
* gst/gstmessage.override:
* gst/gstpad.override:
* gst/gstquery.override:
Use Py_BuildValue to construct tuples.
Use tuples for collection of different objects.
See http://www.python.org/doc/faq/general/#why-are-there-separate-tuple-and-list-data-types
* testsuite/test_event.py:
[message|query|event].parse_* now return tuples and not list.
Fixes #334548
2006-07-03 09:01:18 +00:00
Edward Hervey
1c5a18e82c Removal of all glib < 2.8 cruft since GStreamer core now requires glib >= 2.8
Original commit message from CVS:
Removal of all glib < 2.8 cruft since GStreamer core now requires
glib >= 2.8
* codegen/argtypes.py:
remove gstobject cruft from ObjectArg
* configure.ac:
Require glib >= 2.8.0
* gst/Makefile.am:
* gst/pygstobject.c:
* gst/pygstobject.h:
Remove pygstobject.[ch]
* gst/common.h:
Don't include removed header file.
* gst/gst.override:
* gst/gstbin.override:
* gst/gstbus.override:
* gst/gstelement.override:
* gst/gstelementfactory.override:
* gst/gstmessage.override:
* gst/gstobject.override:
* gst/gstpad.override:
* gst/interfaces.override:
* gst/pygstiterator.c: (pygst_iterator_iter_next):
Switch from using pygstobject* functions to using pygobject* functions.
* gst/gstmodule.c: (sink_gstobject), (init_gst):
Move GstObject sink function here and use standard gobject refcounting.
2006-07-02 15:25:04 +00:00
Edward Hervey
a48e8b6e6b gst/gst-types.defs: Added fields for GstPadTemplate.
Original commit message from CVS:
* gst/gst-types.defs:
Added fields for GstPadTemplate.
* gst/gst.defs:
Made gst_element_class_get_template_list a GstElement method.
* gst/gstelement.override:
Override for gst.Element.get_template_list()
* gst/gstpad.override:
Override getter for GstStaticPadTemplate.static_caps so that it uses
the correct pointer.
2006-06-14 10:00:32 +00:00
Edward Hervey
bc17f73dcb codegen/: Updated codegenerator to current pygtk one.
Original commit message from CVS:
* codegen/Makefile.am:
* codegen/argtypes.py:
* codegen/codegen.py:
* codegen/definitions.py:
* codegen/defsconvert.py:
* codegen/defsparser.py:
* codegen/docextract.py:
* codegen/docextract_to_xml.py:
* codegen/docgen.py:
* codegen/h2def.py:
* codegen/mergedefs.py:
* codegen/missingdefs.py:
* codegen/mkskel.py:
* codegen/override.py:
* codegen/reversewrapper.py:
Updated codegenerator to current pygtk one.
* gst/gst.defs:
* gst/gst.override:
* gst/gstpad.override:
Update defs for new constructor definition.
* testsuite/test_bin.py:
With new constructors, pygobject will try to convert the argument to the
proper GType (here a string).
2006-06-09 10:50:21 +00:00
Edward Hervey
a0da01acaa gst/gstpad.override: (pad_block_callback_marshal)
Original commit message from CVS:
2006-04-19  Andy Wingo  <wingo@pobox.com>

* gst/gstpad.override: (pad_block_callback_marshal)
(_wrap_gst_pad_set_blocked_async): Fix refcounting problems and
indent.
Fixes #338982
2006-04-28 14:55:15 +00:00
Andy Wingo
fda4bddb99 gst/gstpad.override (_wrap_gst_pad_set_blocked_async): PyObject_IsTrue, not PyBool_Check. Grr.
Original commit message from CVS:
2006-04-05  Andy Wingo  <wingo@pobox.com>

* gst/gstpad.override (_wrap_gst_pad_set_blocked_async):
PyObject_IsTrue, not PyBool_Check. Grr.
2006-04-05 08:37:32 +00:00
Edward Hervey
183e0f7210 configure.ac: Fixes in how we figure out what API to ignore
Original commit message from CVS:
* configure.ac:
Fixes in how we figure out what API to ignore
* gst/Makefile.am:
* gst/gst-0.10.5.ignore:
* gst/gstversion.override.in:
Added file for handling API additions for gstreamer 0.10.5
* gst/base.defs:
* gst/gst.defs:
New API
* gst/gstpad.override:
Overrides for gst.Pad.query_peer_*()
2006-03-24 11:07:22 +00:00
Edward Hervey
282abc30ff gst/: Added base elements override file.
Original commit message from CVS:
* gst/Makefile.am:
* gst/gst.override:
* gst/gstbase.override:
Added base elements override file.
* gst/gstpad.override:
Added override for gst_pad_alloc_buffer_and_set_caps
2006-03-13 11:19:10 +00:00
Andy Wingo
1374aac3fa gst/gstpad.override (handle_event_function_exception)
Original commit message from CVS:
2005-12-16  Andy Wingo  <wingo@pobox.com>

* gst/gstpad.override (handle_event_function_exception)
(handle_chain_function_exception): GCC told me I needed braces
here.
2005-12-16 14:47:12 +00:00
Edward Hervey
e3beb3ed78 gst/gstmodule.c: Added GST_TAG_* string constants
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Added GST_TAG_* string constants
* gst/gstpad.override:
Make probe handler return TRUE if the Python callback doesn't return
anything.
* gst/gsttaglist.override:
Cleaned up gst.TagList, works as a dictionnary.
2005-11-10 12:48:49 +00:00
Edward Hervey
489d9c24a5 gst/gstpad.override: works better now we set the item to the proper position...
Original commit message from CVS:
* gst/gstpad.override:
works better now we set the item to the proper position...
2005-11-04 16:28:15 +00:00
Edward Hervey
bf88eeddbb gst/gstpad.override: Use proper GValue <-> MiniObject conversion function
Original commit message from CVS:
* gst/gstpad.override:
Use proper GValue <-> MiniObject conversion function
* examples/Makefile.am:
* examples/sinkelement.py:
New example showing how to create a sink element in python.
2005-11-04 13:14:59 +00:00
Edward Hervey
1912b5b2eb gst/gstelement.override: added wrapper for gst_element_query_duration()
Original commit message from CVS:
* gst/gstelement.override:
added wrapper for gst_element_query_duration()
* gst/gstpad.override:
added wrapper for gst_pad_query_duration()
Also converted some functions using fixed size PyList to use
PyList_SetItem instead of PyList_Append
Closes bug #320357
2005-11-01 18:19:08 +00:00
Edward Hervey
b07e3f3cf8 gst/: Update (hopefully) final API modifications
Original commit message from CVS:
* gst/gst-types.defs:
* gst/gst.defs:
Update (hopefully) final API modifications
* gst/gstelement.override:
* gst/gstpad.override:
* gst/gstquery.override:
Updated position querying/parsing
Removed useless debug line
* testsuite/test_element.py:
Updated test for new API
2005-10-19 17:32:29 +00:00
Edward Hervey
e3ac835751 gst/: Use PyList_SetItem() instead of PyList_Append() for faster list creation and proper python refcounting.
Original commit message from CVS:
Reviewed by Edward Hervey  <edward@fluendo.com>
* gst/gst.override:
* gst/gstevent.override:
* gst/gstpad.override:
* gst/gstquery.override:
Use PyList_SetItem() instead of PyList_Append() for faster list creation
and proper python refcounting.
Closes bug #318684
2005-10-13 10:58:16 +00:00
Edward Hervey
f50c30441c examples/gstfile.py: misc fixes
Original commit message from CVS:
* examples/gstfile.py:
misc fixes
* gst/Makefile.am:
* gst/pygstexception.c:
* gst/pygstexception.h:
* gst/gstelementfactory.override:
* gst/gst.override:
* gst/gstpad.override:
* gst/gstmodule.c: (init_gst):
Added exceptions system by Alessandro Decina <alessandro@nnva.org>
Closes bug #315433
* gst/gstbus.override:
* gst/gstelement.override:
Fix for _wrap_gst_element_get_state()
* gst/gstobject.override:
More debug
2005-10-13 10:41:06 +00:00
Edward Hervey
56f25a4653 gst/common.h: cleanup
Original commit message from CVS:
* gst/common.h:
cleanup
* gst/gst-types.defs:
* gst/gst.defs:
Updated defs file to current gstreamer core
* gst/gst.override:
Added useless function (at least from python bindings) and little correction
on _wrap_gst_xml_get_topelements()
* gst/gstbin.override:
* gst/gstbuffer.override:
Fix memleak in gst.Buffer.set_caps()
* gst/gstevent.override:
Added wrapper for remaining gst_event_parse_*()
* gst/gstlibs.override:
Wrapped more gst.Controller methods
* gst/gstmodule.c: (init_gst):
new gst_init()
Added atexit(gst_deinit)
* gst/gstpad.override:
Fix memleak in gst.Pad.set_caps()
* gst/gstquery.override:
add gst.Query.parse_segment()
* gst/libs.defs:
Updated to current gst-libs
* gst/pygstminiobject.c: (pygstminiobject_register_wrapper),
(pygstminiobject_new), (pygstminiobject_dealloc):
Added debug
* testsuite/Makefile.am:
* testsuite/common.py:
* testsuite/gstpython.supp:
* testsuite/python.supp:
* testsuite/test_bin.py:
* testsuite/test_buffer.py:
* testsuite/test_element.py:
* testsuite/test_event.py:
* testsuite/test_ghostpad.py:
* testsuite/test_iterator.py:
* testsuite/test_message.py:
* testsuite/test_pipeline.py:
Proper valgrind testing,
Updated tests to new API
2005-10-11 12:42:53 +00:00
Edward Hervey
396316a7e4 memleak fixes. Thanks valgrind :)
Original commit message from CVS:
* gst/gstpad.override:
* gst/gststructure.override:
* testsuite/testhelpermodule.c: (_wrap_emit_event):
memleak fixes. Thanks valgrind :)
2005-10-06 16:58:38 +00:00
Thomas Vander Stichele
ca1cb51d1a configure.ac: need at least 2.6.3, because that contains the code that converts signal closure arguments to the corre...
Original commit message from CVS:

* configure.ac:
need at least 2.6.3, because that contains the code that
converts signal closure arguments to the correct Gst
types
* gst/gstpad.override:
log name of probe handlers we call
* testsuite/test_pad.py:
fix up tests; use TestCase base class methods
2005-10-06 10:54:14 +00:00
Thomas Vander Stichele
deb316e3fd gst/gstobject.override: don't try and unref objects that are already finalizing
Original commit message from CVS:

* gst/gstobject.override:
don't try and unref objects that are already finalizing
* gst/gstpad.override:
fix up the set_chainfunc method
* testsuite/common.py:
* testsuite/test_pad.py:
add linked/unlinked tests with no/true/false bufferprobes
2005-10-05 16:19:13 +00:00
Edward Hervey
3459b34ef0 gst/gstpad.override: Removed overriding of gst_caps_get_negotiated_caps, the codegenerator handles it much better (hi...
Original commit message from CVS:
* gst/gstpad.override:
Removed overriding of gst_caps_get_negotiated_caps, the codegenerator
handles it much better (hint:don't copy)
2005-09-30 15:53:07 +00:00
Thomas Vander Stichele
5768672390 gst/: add/move some code to handle wrapping/refcounting of possible
Original commit message from CVS:
* gst/Makefile.am:
* gst/common.h:
* gst/pygstobject.c: (pygstobject_sink), (pygstobject_new),
(pygst_object_unref):
* gst/pygstobject.h:
* gst/gstmodule.c: (init_gst):
add/move some code to handle wrapping/refcounting of possible
GstObject
* codegen/argtypes.py:
* gst/gstbin.override:
* gst/gstbus.override:
* gst/gstelement.override:
* gst/gstpad.override:
* gst/interfaces.override:
use this reffing code
* gst/gst-types.defs:
* gst/gst.override:
add a __gstrefcount__ field to GstObject types
add tp_traverse, tp_dealloc and tp_clear, so we handle refcounting
properly related to garbage collection
* testsuite/test_element.py:
* testsuite/test_pad.py:
add more tests, add some refcount checks
2005-09-28 12:17:29 +00:00
Thomas Vander Stichele
ee6e612754 gst/gstpad.override: don't leak the parent when repr'ing pads
Original commit message from CVS:

* gst/gstpad.override:
don't leak the parent when repr'ing pads
2005-09-28 09:52:37 +00:00
Andy Wingo
14856cf85c gst/gst.defs: Update for probe removal api gst/gstpad.override (_wrap_gst_pad_remove_data_probe) (_wrap_gst_pad_remov...
Original commit message from CVS:
2005-09-21  Andy Wingo  <wingo@pobox.com>

* gst/gst.defs: Update for probe removal api

* gst/gstpad.override (_wrap_gst_pad_remove_data_probe)
(_wrap_gst_pad_remove_event_probe)
(_wrap_gst_pad_remove_buffer_probe): Removed, upstream does the
right thing now.
(_wrap_gst_pad_add_data_probe, _wrap_gst_pad_add_event_probe)
(_wrap_gst_pad_add_buffer_probe): Indent.
2005-09-21 13:36:45 +00:00
Thomas Vander Stichele
4babdda09c gst/gst.defs: add gst.ghost_pad_new_notarget
Original commit message from CVS:

* gst/gst.defs:
add gst.ghost_pad_new_notarget
* gst/gstpad.override:
change wrap_gst_pad_new a little and add logging
* testsuite/test_pad.py:
add tests for constructors of gst.Pad
2005-09-08 13:34:29 +00:00
Edward Hervey
8ad2d61eeb gst/gstpad.override: Long != LongLong ....
Original commit message from CVS:
* gst/gstpad.override: (_wrap_gst_pad_query_position):
Long != LongLong ....
2005-08-09 13:42:56 +00:00
Edward Hervey
c4d8993ca4 gst/gstpad.override: misc fixes for change in gst_pad_get_parent()
Original commit message from CVS:
* gst/gstpad.override: misc fixes for change in gst_pad_get_parent()
* gst/gst.defs: Updating defs file even more :)
2005-07-18 17:13:04 +00:00
Edward Hervey
9b74a9033a gst/gst.override: removed deprecated wrappers (gst_event_new_any*)
Original commit message from CVS:
* gst/gst.override:
removed deprecated wrappers (gst_event_new_any*)
* gst/gstbuffer.override:
* gst/gstquery.override:
* gst/gstmessage.override:
* gst/gstevent.override:
* gst/pygstminiobject.c:
* gst/pygstminiobject.h:
Correct wrapping of functions 'creating' mini-objects
* gst/gstelement.override: (_wrap_gst_element_get_state):
More meaningful exception message
* gst/gstpad.override:
wrapped gst_pad_alloc_buffer(), gst_pad_pull_range(),
gst_pad_get_range(), gst_pad_get_internal_links(),
gst_pad_get_internal_links_default(), gst_pad_get_query_types(),
gst_pad_get_query_types_default()
2005-07-12 16:37:31 +00:00
Edward Hervey
ae75cbd54b gst/: Added GError wrapping,
Original commit message from CVS:
* gst/gst-types.defs:
* gst/gst.defs:
Added GError wrapping,
Removed data field from Buffer,
Added virtual methods to object
Updated to latest API
* gst/gst.override:
wrapped gst_plugin_get_feature_list(), gst_uri_handler_get_protocols(),
gst_registry_pool_list()
* gst/gstbuffer.override:
gst.Buffer() works
get/setters fixed
wrapped gst_buffer_stamp()
* gst/gstbus.override:
wrapped gst_bus_set_sync_handler() and gst_bus_add_watch()
* gst/gstelement.override:
wrapped gst_element_send_event(), gst_element_factory_get_pad_templates()
gst_element_query_convert(), gst_element_get_query_types()
* gst/gstevent.override:
wrapped gst_event_discont_get_value()
* gst/gstmessage.override:
wrapped gst_message_parse_state_changed(), gst_message_parse_error(),
gst_message_parse_warning(), gst_message_parse_tag()
* gst/gstmodule.c:
Added registration of new fundamental type with pygtk
* gst/gstpad.override:
wrapped gst_pad_query(), gst_pad_[add|remove]_[data|event|buffer]_probe(),
gst_pad_query_position(), gst_pad_query_convert()
* gst/gstquery.override:
wrapped gst_query_parse_position(), gst_query_parse_convert(),
gst_query_parse_seeking_query(), gst_query_parse_seeking_reponse()
* gst/pygstminiobject.c:
fixes
* gst/Makefile.am:
added gstbus.override, gstmessage.override, gstquery.override
* testsuite/test_buffer.py:
* testsuite/test_element.py:
* testsuite/test_event.py:
* testsuite/test_pipeline.py:
Updating testsuites
2005-07-12 09:45:58 +00:00