Commit graph

166 commits

Author SHA1 Message Date
Andy Wingo
3f5a8814d5 gst/gstelement.c (gst_element_dispose): Protect against multiple invocations.
Original commit message from CVS:
2004-02-24  Andy Wingo  <wingo@pobox.com>

* gst/gstelement.c (gst_element_dispose): Protect against multiple
invocations.

* gst/schedulers/gstoptimalscheduler.c
I added a mess of prototypes at the top of the file by way of
documentation. Some of the operations on chains and groups were
re-organized.

(create_group): Added a type argument so if the group is enabled,
the setup_group_scheduler knows what to do.
(group_elements): Added a type argument here, too, to be passed on
to create_group.
(group_element_set_enabled): If an unlinked PLAYING element is
added to a bin, we have to create a new group to hold the element,
and this function will be called before the group is added to the
chain. Thus we have a valid case for group->chain==NULL. Instead
of calling chain_group_set_enabled, just set the flag on the group
(the chain's status will be set when the group is added to it).
(gst_opt_scheduler_state_transition, chain_group_set_enabled):
Setup the group scheduler when the group is enabled, not
specifically when an element goes PAUSED->PLAYING. This means
PLAYING elements can be added, linked, and scheduled into a
PLAYING pipeline, as was intended.
(add_to_group): Don't ref the group twice. I don't know when this
double-ref got in here. Removing it has the potential to cause
segfaults if other parts of the scheduler are buggy. If you find
that the scheduler is segfaulting for you, put in an extra ref
here and see if that hacks over the underlying issue. Of course,
then find out what code is unreffing a group it doesn't own...
(create_group): Make the extra refcount floating, and remove it
after adding the element. This means that...
(unref_group): Destroy when the refcount reaches 0, not 1, like
every other refcounted object in the known universe.
(remove_from_group): When a group becomes empty, set it to be not
active, and remove it from its chain. Don't unref it again,
there's no floating reference any more.
(destroy_group): We have to remove the group from the chain in
remove_from_group (rather than here) to break refcounting cycles
(the chain always has a ref on the group). So assert that
group->chain==NULL.
(ref_group_by_count): Removed, it was commented out anyway.
(merge_chains): Use the remove_from_chain and add_to_chain
primitives to do the reparenting, instead of rolling our own
implementation.
(add_to_chain): The first non-disabled group in the chain's group
list will be the entry point for the chain. Because buffers can
accumulate in loop elements' peer bufpens, we preferentially
schedule loop groups before get groups to avoid unnecessary
execution of get-based groups when the bufpens are already full.
(gst_opt_scheduler_schedule_run_queue): Debug fixes.
(get_group_schedule_function): Ditto.
(loop_group_schedule_function): Ditto.
(gst_opt_scheduler_loop_wrapper): Ditto.
(gst_opt_scheduler_iterate): Ditto.

I understand the opt scheduler now, yippee!

* gst/gstpad.c: All throughout, added FIXMEs to look at for 0.9.
(gst_pad_get_name, gst_pad_set_chain_function)
(gst_pad_set_get_function, gst_pad_set_event_function)
(gst_pad_set_event_mask_function, gst_pad_get_event_masks)
(gst_pad_get_event_masks_default, gst_pad_set_convert_function)
(gst_pad_set_query_function, gst_pad_get_query_types)
(gst_pad_get_query_types_default)
(gst_pad_set_internal_link_function)
(gst_pad_set_formats_function, gst_pad_set_link_function)
(gst_pad_set_fixate_function, gst_pad_set_getcaps_function)
(gst_pad_set_bufferalloc_function, gst_pad_unlink)
(gst_pad_renegotiate, gst_pad_set_parent, gst_pad_get_parent)
(gst_pad_add_ghost_pad, gst_pad_proxy_getcaps)
(gst_pad_proxy_pad_link, gst_pad_proxy_fixate)
(gst_pad_get_pad_template_caps, gst_pad_check_compatibility)
(gst_pad_get_peer, gst_pad_get_allowed_caps)
(gst_pad_alloc_buffer, gst_pad_push, gst_pad_pull)
(gst_pad_selectv, gst_pad_select, gst_pad_template_get_caps)
(gst_pad_event_default_dispatch, gst_pad_event_default)
(gst_pad_dispatcher, gst_pad_send_event, gst_pad_convert_default)
(gst_pad_convert, gst_pad_query_default, gst_pad_query)
(gst_pad_get_formats_default, gst_pad_get_formats): Better
argument checks, and some doc fixes.

(gst_pad_custom_new_from_template): Um, does anyone
use these functions? Actually make a custom pad instead of a
normal one.
(gst_pad_try_set_caps): Transpose some checks.
(gst_pad_try_set_caps_nonfixed): Same, and use a macro to check if
the pad is in negotiation.
(gst_pad_try_relink_filtered): Use pad_link_prepare.

* gst/gstelement.c: Remove prototypes also defined in gstclock.h.

* gst/gstelement.h:
* gst/gstclock.h: Un-deprecate the old clocking API, as discussed
on the list.
2004-02-25 13:16:12 +00:00
Thomas Vander Stichele
4290fca331 increment current, reset padding
Original commit message from CVS:
increment current, reset padding
2004-02-04 21:35:39 +00:00
David Schleef
ad3863ac5e docs/random/ds/0.9-suggested-changes: random notes
Original commit message from CVS:
* docs/random/ds/0.9-suggested-changes: random notes
* gst/elements/gstfakesrc.c: (gst_fakesrc_get_formats),
(gst_fakesrc_get_query_types), (gst_fakesrc_get_event_mask):
Replace GST_PAD_EVENT_MASK_FUNCTION() (et al.) with its
expansion.
* gst/elements/gstfilesink.c: (gst_filesink_get_formats),
(gst_filesink_get_query_types): same
* gst/elements/gstfilesrc.c: (gst_filesrc_get_event_mask),
(gst_filesrc_get_query_types), (gst_filesrc_get_formats): same
* gst/gstcaps.h: deprecate GST_DEBUG_CAPS(), and fix the macro
to use new GST_PTR_FORMAT.
* gst/gstelement.h: deprecate function factory macros
GST_ELEMENT_QUERY_TYPE_FUNCTION(), GST_ELEMENT_EVENT_MASK_FUNCTION().
These are our last variadic macros that can't be replaced with
inlines.  Celebrate!  Also fix a typo in an #ifdef that was
attempting to deprecate gst_element_clock_wait().
* gst/gstevent.h: same
* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
(gst_pad_try_set_caps): replace GST_DEBUG_CAPS() with GST_DEBUG()
* gst/gstpad.h: deprecate function factory macros similar to above.
2004-02-04 19:38:33 +00:00
Benjamin Otte
6c3d92e603 reinclude accidentally deleted line
Original commit message from CVS:
reinclude accidentally deleted line
2004-02-02 17:25:45 +00:00
Thomas Vander Stichele
4fb17846d4 add path for element throwing error
Original commit message from CVS:
add path for element throwing error
2004-01-31 19:09:38 +00:00
Thomas Vander Stichele
0fc84c1471 seriously, using cvs over slow lines just sucks.
Original commit message from CVS:
seriously, using cvs over slow lines just sucks.
*sigh*, finishing commit
2004-01-30 07:58:54 +00:00
Benjamin Otte
140c4dd060 docs/random/mimetypes: correct Theora information
Original commit message from CVS:
2004-01-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* docs/random/mimetypes:
correct Theora information
* gst/gstelement.h:
make GST_ELEMENT_ERROR do a GST_ERROR_OBJECT
2004-01-30 03:54:08 +00:00
Thomas Vander Stichele
c5b612edef GST_ELEMENT_ERROR
Original commit message from CVS:
GST_ELEMENT_ERROR
2004-01-29 23:17:58 +00:00
Benjamin Otte
807937481e docs/random/mimetypes: update docs for audio/x-raw-float. Add "buffer-frames=0 means undefined"
Original commit message from CVS:
2004-01-29  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* docs/random/mimetypes:
update docs for audio/x-raw-float. Add "buffer-frames=0 means
undefined"
* gst/elements/gstfilesrc.c: (gst_filesrc_set_location):
make it only work in NULL.
* gst/gstcaps.c:
don't posion NULL caps
* gst/gstelement.c: (gst_element_set_time):
add debugging statement
* gst/gstelement.c: (gst_element_emit_found_tag),
(gst_element_found_tag_func), (gst_element_found_tags):
* gst/gstelement.h:
These functions take const taglists
* gst/gstpad.c: (gst_pad_proxy_getcaps):
fix memleak
* gst/gstpad.c: (gst_pad_event_default):
make more effort on handling discont and clocks, g_warn if everything
fails
* gst/gststructure.c: (gst_structure_remove_fields),
(gst_structure_remove_fields_valist):
* gst/gststructure.h:
add gst_structure_remove_fields(_valist)
* gst/gsttag.c:
fix doc glitch
2004-01-29 02:24:52 +00:00
David Schleef
aeca198dda Revert accidental checkin and start over
Original commit message from CVS:
Revert accidental checkin and start over
2004-01-26 23:16:21 +00:00
David Schleef
13a292781e Original commit message from CVS:
reviewed by: <delete if not using a buddy>
* docs/gst/tmpl/gstelement.sgml:
* docs/gst/tmpl/gstplugin.sgml:
* docs/gst/tmpl/gstreamer-unused.sgml:
* docs/gst/tmpl/gstxml.sgml:
* gst/gstelement.h:
* gst/gstpad.c: (gst_pad_try_set_caps):
* gst/gstqueue.c: (gst_queue_chain):
* testsuite/caps/Makefile.am:
2004-01-26 23:13:24 +00:00
Benjamin Otte
074ecb2227 gst/gstelement.h: remove gst_element_factory_get_version. It doesn't exist anymore.
Original commit message from CVS:
2004-01-26  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/gstelement.h:
remove gst_element_factory_get_version. It doesn't exist anymore.
* gst/gstplugin.c:
* gst/gstplugin.h:
remove gst_plugin_set_name and change gst_plugin_get_longname to
gst_plugin_get_description to match code.
* gst/gsterror.h:
remove GST_LIBRARY_ERROR_ENCODE. It's GST_STREAM_ERROR_ENCODE.
* gst/gstpad.c: (gst_pad_try_set_caps):
make it work with nonfixed caps.
Note that even in the nonfixed case the link function of the pad
that tries to set caps isn't called.
2004-01-26 03:44:14 +00:00
Thomas Vander Stichele
3d115f3bff changed _extended to _full
Original commit message from CVS:
changed _extended to _full
2004-01-20 10:53:20 +00:00
Thomas Vander Stichele
075034841a fix _gst_element_error_printf prototype
Original commit message from CVS:
fix _gst_element_error_printf prototype
2004-01-20 10:32:38 +00:00
Julien Moutte
842d3ed37e gst/gstelement.h: Temporary fixing core build breakage due to _gst_element_error_printf being undeclared before the m...
Original commit message from CVS:
2004-01-19  Julien MOUTTE  <julien@moutte.net>

* gst/gstelement.h: Temporary fixing core build breakage due to
_gst_element_error_printf being undeclared before the macro. Thomas
please fix that soon !
2004-01-19 22:33:34 +00:00
Thomas Vander Stichele
1a12e752e4 privatise
Original commit message from CVS:
privatise
2004-01-19 18:23:19 +00:00
Thomas Vander Stichele
b0a02001fa adding a helper printf function for gst_element_error
Original commit message from CVS:
adding a helper printf function for gst_element_error
2004-01-19 11:32:35 +00:00
Thomas Vander Stichele
f26ac1474a add G_STMT macros
Original commit message from CVS:
add G_STMT macros
2004-01-19 09:58:29 +00:00
Thomas Vander Stichele
4efc300279 changing error signal add error codes and domains
Original commit message from CVS:
changing error signal
add error codes and domains
2004-01-18 21:36:20 +00:00
Benjamin Otte
b675941102 add new fields in padding, dude
Original commit message from CVS:
add new fields in padding, dude
2004-01-15 09:36:01 +00:00
Benjamin Otte
e81fbd612f gst/gstpad.*: implement gst_pad_is_linked
Original commit message from CVS:
2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/gstpad.c: (gst_pad_is_linked):
* gst/gstpad.h:
implement gst_pad_is_linked
* gst/gstelement.h:
reserve space for initiate_state_change
2004-01-15 03:03:15 +00:00
Benjamin Otte
1e82f617e4 gst/gstclock.*: deprecate old interface and disable functions that aren't in use anymore.
Original commit message from CVS:
2004-01-13  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/gstclock.c: (gst_clock_class_init), (gst_clock_init),
(gst_clock_set_speed), (gst_clock_set_active),
(gst_clock_is_active), (gst_clock_reset),
(gst_clock_handle_discont):
* gst/gstclock.h:
deprecate old interface and disable functions that aren't in use
anymore.
* gst/gstelement.h:
* gst/gstelement.c: (gst_element_get_time), (gst_element_wait),
(gst_element_set_time), (gst_element_adjust_time):
add concept of "element time" and functions to get/set this time.
* gst/gstelement.c: (gst_element_change_state):
update element time correctly.
* gst/gstelement.c: (gst_element_get_compatible_pad_filtered):
This is a debug message, not a g_critical.
* gst/gstpad.c: (gst_pad_event_default):
handle discontinuous events right with element time.
* gst/gstscheduler.c: (gst_scheduler_state_transition):
update to clocking fixes.
set clocks on elements in READY=>PAUSED. The old behaviour caused
a wrong element time on the first element that started playing.
* gst/schedulers/gstbasicscheduler.c:
(gst_basic_scheduler_class_init):
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_class_init):
remove code that just implements the default behaviour.
* gst/elements/gstfakesink.c: (gst_fakesink_chain):
update to use new clocking functions
* testsuite/clock/clock1.c: (gst_clock_debug), (main):
* testsuite/clock/clock2.c: (gst_clock_debug), (main):
update to test new element time.
* gst/autoplug/gstspideridentity.c: (gst_spider_identity_getcaps):
use _get_allowed_caps instead of _get_caps. This catches filtered
caps correctly.
* testsuite/debug/commandline.c:
update for new GST_DEBUG syntax.
* testsuite/threads/Makefile.am:
disable a test that only works sometimes.
2004-01-14 00:46:48 +00:00
David Schleef
8c9cd079d4 Merge CAPS branch
Original commit message from CVS:
Merge CAPS branch
2003-12-22 01:39:35 +00:00
Benjamin Otte
46a70fddfb removed GST_*_CAST. Disabling of type checking is done in glib.
Original commit message from CVS:
removed GST_*_CAST. Disabling of type checking is done in glib.
2003-12-13 16:58:29 +00:00
David Schleef
1cd87b37e5 Change GST_.*_PADDING to _gst_padding[GST_PADDING];
Original commit message from CVS:
Change GST_.*_PADDING to _gst_padding[GST_PADDING];
2003-12-09 02:39:31 +00:00
Andy Wingo
8ca1b1fe7f remove copyright field from plugin structs
Original commit message from CVS:
remove copyright field from plugin structs
2003-12-04 10:02:41 +00:00
David Schleef
476dea14ad Change 'const' to 'G_CONST_RETURN' in header files
Original commit message from CVS:
Change 'const' to 'G_CONST_RETURN' in header files
2003-11-29 06:34:05 +00:00
Benjamin Otte
25f85868d4 implement URI schemes
Original commit message from CVS:
implement URI schemes
Elements can now register as a source or sink for a protocol and applications can use gst_element_make_from_uri () to get an element that handles a given URI.
This patch provides:
- removal of old broken URI handling scheme.
- new URI handling using interfaces.
- updates for registry to save handled URIs.
- interface for URI handlers.
- implementation of that in filesrc and filesink for the file:// URI
- extension to pipeline parsing to allow specifying only a URI instead of element

Does not include:
- tests
- inclusion in docs build
2003-11-24 03:21:54 +00:00
Benjamin Otte
385b9ee5c4 merge in tagging
Original commit message from CVS:
merge in tagging
Includes:
- gsttag.[ch] - The definition of GstTagList and tag registering/querying
- gsttaginterface.[ch] - Interface for elements that can handle setting of tags
- updates and merges to gststructure.[ch] and gstvalue.[ch]
- testsuite/tags - some tests for tagging
- bugfixes
- updates to make make distcheck work
- updates the version number to 0.7.2.1

Does not include:
- including tagging stuff in docs
- extensive tests
2003-11-24 02:09:23 +00:00
Andy Wingo
ad008198e0 fix an old bug traversing pad template lists, and change _padtemplates to _pad_templates in new functions
Original commit message from CVS:
fix an old bug traversing pad template lists, and change _padtemplates to _pad_templates in new functions
2003-11-11 12:34:15 +00:00
David Schleef
fc35aeeaad Add gst_element_class_get_pad_template()
Original commit message from CVS:
Add gst_element_class_get_pad_template()
2003-11-08 23:28:04 +00:00
Ronald S. Bultje
9abb3e0669 XML, gst-editor, gst-rec and anything that's not based on spider is now broken. This re-fixes it.
Original commit message from CVS:
XML, gst-editor, gst-rec and anything that's not based on spider is now broken. This re-fixes it.
2003-11-02 16:46:12 +00:00
Benjamin Otte
4180066759 implement 'gst_element_factory_find_from_element' to replace gst_element_get_factory
Original commit message from CVS:
implement 'gst_element_factory_find_from_element' to replace gst_element_get_factory
2003-11-02 16:24:22 +00:00
Benjamin Otte
907e3e97d9 update plugin initialization restructuring (see email for details
Original commit message from CVS:
update plugin initialization restructuring (see email for details
2003-10-31 19:32:47 +00:00
David Schleef
85a63494bf Add padding to structures and objects
Original commit message from CVS:
Add padding to structures and objects
2003-10-07 21:58:42 +00:00
Thomas Vander Stichele
c4c3c998df reverting error patches before making a branch.
Original commit message from CVS:
reverting error patches before making a branch.
2003-09-16 09:57:31 +00:00
Benjamin Otte
9afd27f29b update default error callback to new error signal
Original commit message from CVS:
update default error callback to new error signal
2003-09-15 01:36:53 +00:00
Benjamin Otte
be1eaa4de3 implement translatable error messages using gerror.
Original commit message from CVS:
implement translatable error messages using gerror.

Includes bugfixes for:
- crash when unlinking Ghostpads
- make *_PAD_* macros use glib casts
- make spider typefinding merge buffers correctly
2003-09-14 19:49:32 +00:00
David Schleef
c4d186ec85 Er, plugins actually use gst_element_factory_set_rank(). Add a define to call gst_plugin_feature_set_rank().
Original commit message from CVS:
Er, plugins actually use gst_element_factory_set_rank().  Add a
define to call gst_plugin_feature_set_rank().
2003-08-19 07:31:24 +00:00
Ronald S. Bultje
9d570688de Remove duplicate rank field (fixes #119510)
Original commit message from CVS:
Remove duplicate rank field (fixes #119510)
2003-08-18 21:14:16 +00:00
Ronald S. Bultje
e2a9a87c64 Implement simple seek API. This can later be extended to work with GstPipeline as arguments and so on *autodetect pro...
Original commit message from CVS:
Implement simple seek API. This can later be extended to work with GstPipeline as arguments and so on *autodetect proper element to send event to and so on), but this'll do as a start... See #116149
2003-08-04 21:48:06 +00:00
Wim Taymans
0b1607785b - added GST_ELEMENT_ERROR flag to mark elements in error and to trap and avoid recursive error loops.
Original commit message from CVS:
- added GST_ELEMENT_ERROR flag to mark elements in error and to trap and
avoid recursive error loops.
- moved state change signal back to original place as it causes lockups.
2003-06-03 21:18:39 +00:00
Benjamin Otte
6cb527fed3 API change: remove gst_object_destroy and #defines to it
Original commit message from CVS:
API change: remove gst_object_destroy and #defines to it
2003-04-15 18:43:57 +00:00
Benjamin Otte
8bfbc81d36 general fixes:
Original commit message from CVS:
general fixes:
- changed newly added locked_state API to work like GStreamer does
- added gst_element_sync_state_with_parent function
- revert: pad linking does not require non-playing state
- updated spider and pipeline parsing to link elements in playing state
- bugfix: pads are now activated when added to a playing element (broke above change)
2003-04-11 00:00:46 +00:00
Benjamin Otte
a03e803bb6 huge modifications, hope i didn't break something:
Original commit message from CVS:
huge modifications, hope i didn't break something:
- added functions for setting/getting locked state of elements. gst_element_lock_state syncs the pads state with the state of its parent.
- made all gst_element_link_* functions call gst_element_link_pads_filtered
- gst_element_link_pads_filtered now accepts NULL as a pad name.
- make sure the link functions are only called when the elements are paused
That's it.
2003-04-08 21:14:23 +00:00
Wim Taymans
1123103926 - Added _LOCKED_STATE element flag
Original commit message from CVS:
- Added _LOCKED_STATE element flag
- parent bin does not perform state changes on _LOCKED_STATE elements
2003-03-25 19:39:18 +00:00
Wim Taymans
b030b5cef2 - Add more --disable options
Original commit message from CVS:
- Add more --disable options
- fix makefiles to only compile non-disabled features
- some compile fixes.
- removed extratypes, added gsturitype
- make get/set clock on a bin overridable
- some portability fixes for GUINT64
- separate pools from gstregistry.[ch] into gstregistrypool.[ch]
- make gstobject size fixed, even if we disabled load/save
- don't use 'new' as a variable as it is not a valib C++ variable
2003-02-10 20:32:32 +00:00
Thomas Vander Stichele
5529bbc7dc first pass of connect->link gst-plugins and other stuff compiles without change at this point
Original commit message from CVS:
first pass of connect->link
gst-plugins and other stuff compiles without change at this point
2003-01-09 14:15:37 +00:00
Wim Taymans
347505bcb9 - major API breakage (one of the last, I promise...)
Original commit message from CVS:
- major API breakage (one of the last, I promise...)
- GST_PAD_QUERY -> GST_QUERY
- GstPadQuery -> GstQuery
- Move query definitions to gstquery.h to allow for future dynamic
query types.
- remove _pad_handles_* in favour of extra format/event functions to
make the same checks.
- fix elements
- Implemented missing query/event/formats functions in gstelement
2002-12-30 17:42:11 +00:00
Wim Taymans
a03425c8b3 - disable pads when going to PAUSED, we want to make sure no data is passing when an element is not PLAYING.
Original commit message from CVS:
- disable pads when going to PAUSED, we want to make sure no data is
passing when an element is not PLAYING.
- changed the clock sync API, element should now get a ClockID first and
sync on that. This makes it possible to cancel clock requests.
2002-12-27 22:57:13 +00:00