Commit graph

77 commits

Author SHA1 Message Date
Wim Taymans
91b824a34c - Reworked the clock to prepare for async notifications
Original commit message from CVS:
- Reworked the clock to prepare for async notifications
- moved some common scheduler checking to gstbin
- added some vmethods to gstbin for future use
- more fixes to the optimal scheduler
- use new clock api in the schedulers
2002-11-02 13:54:34 +00:00
Wim Taymans
1debaf2b59 Added vmethod for when an element changes scheduling behaviour (like switching from chain based to loop based etc)
Original commit message from CVS:
Added vmethod for when an element changes scheduling behaviour (like
switching from chain based to loop based etc)
2002-09-17 21:23:33 +00:00
Wim Taymans
e6e1dc2e0e - some cleanups
Original commit message from CVS:
- some cleanups
- revert a patch that needs more thinking..
- move common code and sanity checks in gstscheduler.c instead of the
real schedulers.
- remove sanity checks from the schedulers
2002-09-13 23:02:54 +00:00
Wim Taymans
1e4b4cf6c2 Reverted scheduler change
Original commit message from CVS:
Reverted scheduler change
2002-09-13 21:55:35 +00:00
Wim Taymans
37a127d9ed - Make the return GList of gst_element_get_pad_list as const
Original commit message from CVS:
- Make the return GList of gst_element_get_pad_list as const
- Pad scheduler refactoring
- Remove gst_pad_set/unset_scheduler as it's not needed
- Reimplement gst_pad_get_scheduler using the parent scheduler
- Remove gst_pad_peek as it cannot work reliably
- Remove the pad bufpen, replace with scheduler private gpointer
- Make queue use the new _get_scheduler implementation
- Remove _pad_unset_scheduler from GstScheduler
- Remove LOOP_SEEK mode from aggregator
- Other fixes for API changes.
2002-09-12 20:52:03 +00:00
Thomas Vander Stichele
17d01b5d21 scheduler renaming
Original commit message from CVS:
scheduler renaming
- wingo or omega for cothreads package
- basic or fast or optimal for algorithms
2002-09-12 19:23:41 +00:00
Thomas Vander Stichele
3a5b408709 useful comments change thread -> cothread in varnames where it's applicable code cleanups
Original commit message from CVS:
* useful comments
* change thread -> cothread in varnames where it's applicable
* code cleanups
2002-09-12 18:56:31 +00:00
Thomas Vander Stichele
62deade97d better error handling, still needs improvement
Original commit message from CVS:
better error handling, still needs improvement
2002-08-11 19:33:47 +00:00
Wim Taymans
992f55fe4c Some debug info
Original commit message from CVS:
Some debug info
2002-07-30 19:21:13 +00:00
Wim Taymans
ae87d97cb2 - Removed unused locking from the cothreads
Original commit message from CVS:
- Removed unused locking from the cothreads
- use G_*_DECLS in .h files
- remove gstlog.h include from gstobject.h, add to .c files
- removed unused refcounting code from gstobject
- small fixes in #includes
- Added Scheduling policy and priority properties to gstthread so that
SCHED_FIFO and SCHED_RR threads can be constructed.
2002-07-08 19:07:30 +00:00
Andy Wingo
2eb7f04289 free stack properly s/prefered/preferred/
Original commit message from CVS:
* free stack properly
* s/prefered/preferred/
2002-06-27 23:55:27 +00:00
Thomas Vander Stichele
61bb83ec4d back to basics
Original commit message from CVS:
back to basics
2002-06-27 11:34:37 +00:00
Wim Taymans
3dd3895eea Added _get_prefered_stack to the scheduler
Original commit message from CVS:
Added _get_prefered_stack to the scheduler
2002-06-19 18:13:28 +00:00
Wim Taymans
7eb08447b9 Some small cleanups implement a default _clock_wait
Original commit message from CVS:
Some small cleanups
implement a default _clock_wait
2002-06-16 21:50:50 +00:00
Thomas Vander Stichele
ac889ced82 changing default scheduler to wingo's spiffy standard one, since it doesn't look up for as many users as basic ;)
Original commit message from CVS:
changing default scheduler to wingo's spiffy standard one, since it
doesn't look up for as many users as basic ;)
2002-06-16 10:33:55 +00:00
Wim Taymans
c8e8981be8 Documentation updates
Original commit message from CVS:
Documentation updates
Make spider forward bufferpools
Remove some old registry code
2002-06-12 22:26:36 +00:00
Wim Taymans
a358f61b5f Loop the clock providers until we find one with a clock.
Original commit message from CVS:
Loop the clock providers until we find one with a clock.
2002-06-08 23:45:53 +00:00
Wim Taymans
6f96a24d2e - The clock_wait now returns the difference between requested time and unlock time.
Original commit message from CVS:
- The clock_wait now returns the difference between requested time and
unlock time.
- Misc defines like GST_SECOND in gstclock.h
- remove pre/post in gstelement.c until fixed.
- added release_locks to gstelement so that the element can unlock itself
- added some more predefined events.
- added folowing functions to gstpad:
- convert function: get the relation between formats on this pad
- query function: get stats about the pad (position/total/latency)
- internal connect function: find out how this pad connects to other
pad internally to the element.
- generic pad_dispatcher.
- removed the last bits of pullregion
- use release_locks on the queue.
- added some events to queue
- make gstthread use the new release_locks function
- make the scheduler use the new clock_wait functions
- added events to fakesink
- added query functions to filesrc
- swap type and offset in the bytestream seek API to match fseek
- added some event handling in bytestream.
2002-05-26 21:54:27 +00:00
Thomas Vander Stichele
e8982eaf0f API cleanup: (s/g)et_sched -> _scheduler
Original commit message from CVS:
API cleanup: (s/g)et_sched -> _scheduler
2002-05-25 15:36:59 +00:00
Thomas Vander Stichele
417a7f9408 typos
Original commit message from CVS:
typos
2002-05-25 15:25:47 +00:00
Wim Taymans
086de421dc Totally rewritten registry handling.
Original commit message from CVS:
Totally rewritten registry handling.
- move the registry save/load code into a gstregistry subclass, this
will make it possible to use other registries (flat file, web based,
RDBMS type, etc..)
- a simple GMarkup xml registry is implemented
- use standard statically linked plugins for core elements.
- GstPlugin has a very well defined set of functions now
A little bytestream hack..
Added more info to -inspect.
Some more debugging info for clocking.
Small cleanups

I use ./gst-register --gst-plugin-path=/opt/src/sourceforge/gst-plugins/gst-libs:/opt/src/sourceforge/gst-plugins/
to register core and gst-plugins now.
2002-05-08 20:40:48 +00:00
Andy Wingo
6691120451 gst_scheduler_factory_make () can accept NULL as the first arg now _create () sets the element sched and refcounts th...
Original commit message from CVS:
* gst_scheduler_factory_make () can accept NULL as the first arg now
*                      _create () sets the element sched and refcounts the scheduler
* corresponding touchups to gstpipeline and gstthread
2002-05-04 18:59:24 +00:00
Thomas Vander Stichele
cb245cd3e0 doc fixes s/gst_clock_activate/gst_clock_set_active/g
Original commit message from CVS:

* doc fixes
* s/gst_clock_activate/gst_clock_set_active/g
2002-04-23 14:58:51 +00:00
Benjamin Otte
8cd991a9d6 - make all _get_list functions return a const reference to original lists and no copy
Original commit message from CVS:
- make all _get_list functions return a const reference to original lists and no copy
- redo code accordingly
- fix compile issue in dparam stuff
2002-04-19 19:49:41 +00:00
Andy Wingo
b214d35eed commit to make gstreamer follow the gtk function/macro naming conventions:
Original commit message from CVS:
commit to make gstreamer follow the gtk function/macro naming conventions:

GstPadTemplate <-> gst_pad_template <-> GST_PAD_TEMPLATE

and the same for *factory and typefind.
2002-04-11 20:35:18 +00:00
Wim Taymans
d7a5d173c8 Documentation updates
Original commit message from CVS:
Documentation updates
Added dump to identity
Fix some warnings in gstelement
2002-03-31 14:04:50 +00:00
Wim Taymans
f0326eea55 - Remove the propsprivate header file
Original commit message from CVS:
- Remove the propsprivate header file
- Added new API for properties.
- Moved the clock distribution to the scheduler.
- Removed the lock from GstCaps
- Added boxed types for Caps/Props
- Simplified the clock, new systemclock implementation
- Removed deprecated element_info/send_event functions
- First step at exposing more info in the pad_connect functions
- Queue cleanup
- Make the scheduler aware of other schedulers inside it
- Added the _SELF_SCHEDULABLE flag to gstthread
- Removed _get_widget from _utils, changed to new props API
- Make fakesink sync on timestamps when requested
- Removed the offset notify from filesrc
- Added a fast scheduler
- some scheduler cleanups.
2002-03-30 17:05:03 +00:00
Andy Wingo
ed9b628168 filter newlines out of GST_DEBUG statements to reflect new core behavior fixes to adder's caps, again
Original commit message from CVS:
* filter newlines out of GST_DEBUG statements to reflect new core behavior
* fixes to adder's caps, again
2002-03-24 22:07:09 +00:00
Wim Taymans
6bab7412ef Only unset the scheduler on REAL pads. This is a nasty one that causes random memory corruption.
Original commit message from CVS:
Only unset the scheduler on REAL pads. This is a nasty one that causes
random memory corruption.
2002-02-22 23:12:05 +00:00
Andy Wingo
38b5789e71 --gst-scheduler={basic,standard} :-)))
Original commit message from CVS:
--gst-scheduler={basic,standard} :-)))
2002-02-15 21:17:06 +00:00
Andy Wingo
a43702feb0 miscellaneous fixes, added gst_pad_unset_sched() api.
Original commit message from CVS:
miscellaneous fixes, added gst_pad_unset_sched() api.

although I unref the old pipeline and the cothread context gets freed in dynamic-pipeline.c,
I still get segfaults.
2002-01-19 06:29:40 +00:00
Wim Taymans
0a74077dcc API doc updates.
Original commit message from CVS:
API doc updates.
2002-01-01 15:58:51 +00:00
Wim Taymans
90355128b5 - Removed deprecated buffer flags.
Original commit message from CVS:
- Removed deprecated buffer flags.
- removed gst_element_signal_eos, replaced with gst_element_set_eos
to set the object to PAUSED, signal an eos event etc..
- small updates to documentation
- repair some plugins
2001-12-28 20:20:26 +00:00
Wim Taymans
e7f54b1e74 - Added a function to get the currently executing cothread
Original commit message from CVS:
- Added a function to get the currently executing cothread
- Removed some useless includes
- _interrupt now returns a boolean so the behaviour after the interrupt
can be controlled by the scheduler.
- Added a better way to set/get the default scheduler.
- make thread and pipeline get the default scheduler.
2001-12-27 00:47:41 +00:00
Wim Taymans
087dee1f62 This is an attempt at not segfaulting on errors but reporting some usefull info instead.
Original commit message from CVS:
This is an attempt at not segfaulting on errors but reporting some
usefull info instead.
- bin changes so errors can propagate.
- changed the _FAST macros to _CAST because that is what they do.
- removed all references to cothreads out of the core, they are
really a scheduler issue, handler with a sched_private gpointer.
- added a live buffer count, for debugging buffer leaks.
- added error checking in gst_scheduler_state_transition this solves the
"out of cothreads" problem.
- GST_ELEMENT_NO_ENTRY == GST_ELEMENT_INFINITE_LOOP
- added 2 private element flasg for use by the scheduler
(_COTHREAD_STOPPING) is now
- added scheduler entry points:
- _yield : to create possible scheduling points.
- _interrupt: to stop execution of an element.
- _error: to signal en error condition to the scheduler.
- improved error messages for pads.
- signal gst_element_error where appropriate.
- added the a new bin to the parent before entering it so one can reference
its children.
- queue memleak fixes on dispose.
- added possible deadlock detection in queue (turned off be default)
- GstBasicScheduler is a real class of its own now, hiding its internal
variables.
- GST_ELEMENT_IS_COTHREAD_STOPPING is gone. either call explicit _yield
operations, or make a sane loop.
- Better state change handling in filesrc. Better error reporting/recovery
too.
- updated core plugins.
- detect non decoupled elements on scheduler boundries and error.
2001-12-22 21:18:17 +00:00
Wim Taymans
f5affde61c - Reclaim cothread state even if the cothread was never activated after the free.
Original commit message from CVS:
- Reclaim cothread state even if the cothread was never activated after
the free.
- fix the bin state change when there are no more children.
- use a real method to signal the parent bin of a state change.
- move the state change policy in the scheduler.
- remove the unused and ridiculous state change event
- don't free the cothread state when the element is disabled. only free it
when the element is removed from the scheduler.
2001-12-20 20:03:10 +00:00
Wim Taymans
5ad018148c Some more work on cleanup.
Original commit message from CVS:
Some more work on cleanup.
- added two functions in the scheduler _setup and _reset to initialize
the context. In the case of the cothread context we have to map the
cothread stack space onto the threads stack.
- setup/reset the scheduler context in the threads context.
- fix the ghostpad cleanup.
- slightly changed the scheduler code to cleanly remove connections.
2001-12-19 19:22:53 +00:00
Christian Schaller
d6b9ae8b63 aye ladie, no more ugly // comments here, even if Taaz gets upset about it
Original commit message from CVS:
aye ladie, no more ugly // comments here, even if Taaz gets upset about it
2001-12-14 22:59:21 +00:00
Wim Taymans
f4c17c3ba1 Added some more docs
Original commit message from CVS:
Added some more docs
2001-12-09 13:17:54 +00:00
wrobell
08eaa11259 - some fixes to int2float making automake 1.5 happy (gst now requires automake1.5). It's still not perfect but it bui...
Original commit message from CVS:
- added playondemand plugin by Leif Morgan Johnson <lmjohns3@eos.ncsu.edu>
- some fixes to int2float
- aplied a patch from wrobell <wrobell@ite.pl> that is a first attempt at
making automake 1.5 happy (gst now requires automake1.5). It's still not
perfect but it builds.
- Made the schedulers plugable. The default scheduler now lives inside a
plugin.
- Added a new mpeg1/2 parser/demuxer.
- Fixed some compiler warnings in the core libs.
- substantial work to GstThread (hopefully less race conditions). simplified
the code in GstThread a bit. A state change can now also happen in the
thread context.
- reworked the state semantics of a bin. it'll now automatically get the
highest state of its children.
- the autoplugger now nests the threads so that a state change failure of
one thread doesn't make its upstream thread lock.
- GstQueue refuses to go to PLAYING if the sinkpad is not connected. This
way the queue will not wedge in the _get lock.
- GstQueue unlocks its mutexes when going to PAUSED.
- make sure that when all elements in a bin/thread go to PAUSED, the bin
is set to PAUSED too.
- make a parent bin wait for its children to PAUSE before ending the
iteration with FALSE (EOS)
- Some changes to GstPlay to deal with EOS.
- aplied the latest patch from Zeenix to gstrtp.

end result: GstPlay doesn't crash on EOS and the pipeline is now shut down
properly.
2001-12-04 22:12:50 +00:00
Wim Taymans
0b263598f0 Call the default handler of the pad
Original commit message from CVS:
Call the default handler of the pad
2001-11-14 21:21:58 +00:00
Wim Taymans
dc435fc930 Direct events to the event handler for non event-ware elements. pass the event to the chain function for event aware ...
Original commit message from CVS:
Direct events to the event handler for non event-ware elements.
pass the event to the chain function for event aware elements.
2001-11-14 21:11:05 +00:00
Erik Walthinsen
42ec9085a2 added taaz's threading patch, including queue events
Original commit message from CVS:
added taaz's threading patch, including queue events
2001-10-27 20:28:31 +00:00
Wim Taymans
cccc097ca5 API docs. revived _buffer_ref_by_count fast types for scheduler and bin.
Original commit message from CVS:
API docs.
revived _buffer_ref_by_count
fast types for scheduler and bin.
error checking on plugin features;
removed some prototypes that were not implemented (gst_pipeline_iterate
comes to mind)
remove gst_pad_event until we know what it's supposed to do.
remove sinesrc, it wasn't compiles anymore, so...
updates to various elements that used the old event API.
2001-10-21 18:00:31 +00:00
Erik Walthinsen
d574ab8126 merge from EVENTS1 on 20011016
Original commit message from CVS:
merge from EVENTS1 on 20011016
2001-10-17 10:21:27 +00:00
Joshua N. Pritikin
8b29840f55 1. Add more warnings for the gst core only. Various trival fixes to quiet the warnings.
Original commit message from CVS:
1. Add more warnings for the gst core only.  Various trival fixes
to quiet the warnings.

2. Fix GstBufferCopyFunc prototype.

3. Re-apply the reverted type!=0 assertion in gst_elementfactory_new.
2001-09-14 22:16:47 +00:00
Wim Taymans
453f2fee05 Removed the old eos and qos functions.
Original commit message from CVS:
Removed the old eos and qos functions.
Removed the functions from the elements.
2001-08-10 17:34:59 +00:00
Erik Walthinsen
ee9426a1a1 Initial code for the event system.
Original commit message from CVS:
Initial code for the event system.
2001-08-06 20:37:21 +00:00
Wim Taymans
4fde5f8410 Properly set the eos flag when no elements can be scheduled.
Original commit message from CVS:
Properly set the eos flag when no elements can be scheduled.
2001-07-15 13:04:38 +00:00
Wim Taymans
dd666aaeff Added a g_assert when a filled bufpen is overwritten.
Original commit message from CVS:
Added a g_assert when a filled bufpen is overwritten.
2001-07-11 19:23:57 +00:00