Commit graph

44 commits

Author SHA1 Message Date
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
c6a04366a3 gstinfo.[ch], cothreads.c: added initial support for -finstrument_functions gstbin.c: removed a reference to config.h...
Original commit message from CVS:
gstinfo.[ch], cothreads.c: added initial support for -finstrument_functions
gstbin.c: removed a reference to config.h
gstbuffer.[ch]: added gst_buffer_is_span_fast(), used it in gst_buffer_span
elements/gstfilesrc.c: initial work fleshing out the event handling code

everywhere else: wrapped XML stuff in #ifndef's
2001-09-10 19:46:01 +00:00
Wim Taymans
c416297af4 Changed the maxcothreads to 16. connect to the new_ghost_pad signal in parse.
Original commit message from CVS:
Changed the maxcothreads to 16.
connect to the new_ghost_pad signal in parse.
2001-06-06 18:29:57 +00:00
Wim Taymans
db0325ee37 Use the STACKSIZE and number of cothreads to calculate the cothread stack space (easier to change the number of cothr...
Original commit message from CVS:
Use the STACKSIZE and number of cothreads to calculate the cothread stack
space (easier to change the number of cothreads).
2001-06-04 16:02:48 +00:00
Wim Taymans
b93de9e922 Docs updates
Original commit message from CVS:
Docs updates
Changed the cothread to use sigjmp_buf
removed some unused methods.
Some code cleanups.
2001-05-27 14:37:29 +00:00
Erik Walthinsen
f3098e9546 fixed cothread locking and set_arg/get_arg safety, and switched to 64 cothreads of 32KB
Original commit message from CVS:
fixed cothread locking and set_arg/get_arg safety, and switched to 64 cothreads of 32KB
2001-05-26 22:58:15 +00:00
Erik Walthinsen
4a583683e5 Merged from INCSCHED on 200505251!!!
Original commit message from CVS:
Merged from INCSCHED on 200505251!!!
2001-05-25 21:00:07 +00:00
David I. Lehn
18adcf5a3f - Fix cothread pointers and allocation so full 2M stack space available:
Original commit message from CVS:
- Fix cothread pointers and allocation so full 2M stack space available:
- Double maximums to use full stack space:
- COTHREAD_STACKSIZE = 16k
- COTHREAD_MAXTHREADS = 128
- cothread changes only verified on x86
- cothread_create returns NULL if nthreads == MAXTHREADS though not yet handled by gstschedule caller
2001-05-16 07:16:47 +00:00
Erik Walthinsen
4cbdcef47f move cothread_context definition over to the .c
Original commit message from CVS:
move cothread_context definition over to the .c
2001-05-10 22:35:50 +00:00
Erik Walthinsen
afd1953a04 moved cothread parameters into .c to avoid rebuilding libgst.la every time
Original commit message from CVS:
moved cothread parameters into .c to avoid rebuilding libgst.la every time
2001-05-10 22:10:19 +00:00
Erik Walthinsen
ca4e87219c added sparc cothreads
Original commit message from CVS:
added sparc cothreads
2001-03-02 18:30:37 +00:00
Wim Taymans
fdaa2307da A very small change to make eos somewhat work. no inner bins are checked.
Original commit message from CVS:
A very small change to make eos somewhat work. no inner bins are checked.
When an element fires EOS, the chain with that element is removed from
the scheduler (marked inactive). If all chains are inactive, the bin
fires EOS.
2001-01-20 03:10:44 +00:00
Erik Walthinsen
5ed8c467bf more cothreads cleanup, and first pass at ARM code
Original commit message from CVS:
more cothreads cleanup, and first pass at ARM code
2001-01-19 09:14:42 +00:00
Erik Walthinsen
284014fed1 ALPHA COTHREADS WORK! Worked around a nasty stack issue that probably can't be solved anyway. Tomorrow the UDB buil...
Original commit message from CVS:
ALPHA COTHREADS WORK!  Worked around a nasty stack issue that probably
can't be solved anyway.  Tomorrow the UDB build will commence, and let the
best guess win!
2001-01-19 07:48:43 +00:00
Erik Walthinsen
c31f9a570c First pass at updating to new ghostpad system. The objects are in place,
Original commit message from CVS:
First pass at updating to new ghostpad system.  The objects are in place,
I now need to go and get all the Bin end of things worked out.  Testing
should be fairly easy, at least for verification.

Everything I've tried so far works with no changes, with is amazing.
That's just cool.  Once again we rewrite an entire subsystem, and nothing
else notices anything but the new features ;-)
2001-01-19 02:23:35 +00:00
Erik Walthinsen
fb871eec23 Updates to cothreads code, including non-working alpha. Changed things a bit, including PPC. Not having a PPC machi...
Original commit message from CVS:
Updates to cothreads code, including non-working alpha.  Changed things a
bit, including PPC.  Not having a PPC machine, I need someone to test
these changes and report back whether they worked or not.
2001-01-18 08:54:25 +00:00
Wim Taymans
a72f9832d1 Change MAP_ANONYMOUS to MAP_ANON in the mmap for BSD compatibility
Original commit message from CVS:
Change MAP_ANONYMOUS to MAP_ANON in the mmap for BSD compatibility
2001-01-14 14:57:56 +00:00
Richard Boulton
e89f87b6b4 gstreamer-register will now never cause the
Original commit message from CVS:
gstreamer-register will now never cause the
** WARNING **: gstplugin: registry needs rebuild
warning to appear - sets a hidden global in gstplugin.c to turn the
warning off.
Fix a warning in gst/cothreads.c (function was declared extern, defined
static)
2001-01-07 15:20:49 +00:00
Erik Walthinsen
f12fae5c3d fixed missing comment noticed by David Lehn
Original commit message from CVS:
fixed missing comment noticed by David Lehn
2001-01-05 00:28:09 +00:00
Erik Walthinsen
df81ae1765 updated API docs
Original commit message from CVS:
updated API docs
2001-01-04 22:16:06 +00:00
Erik Walthinsen
759d83e487 Rearranged cothreads sources a bit, added some API docs.
Original commit message from CVS:
Rearranged cothreads sources a bit, added some API docs.
Added some functions needed for gstreamer-inspect.
Added num_sources to fakesink.
2001-01-04 10:54:27 +00:00
Erik Walthinsen
1e04cefaf2 Mega update of INFO, DEBUG, and ERROR subsystems, renamed with GST_ prefix.
Original commit message from CVS:
Mega update of INFO, DEBUG, and ERROR subsystems, renamed with GST_ prefix.
GST_DEBUG now takes a category parameter, which is the same as GST_INFO
system.  They are now called GST_CAT_*.  All the GST_DEBUGs are set to 0
for now, we need to go and fix all these eventually.
2001-01-01 03:14:40 +00:00
Wim Taymans
96c0e20d95 Fixed autoplugging for avi
Original commit message from CVS:
Fixed autoplugging for avi
Fixed a bug in multiple typefind function loading: when a typefind is
requested for a mimetype, all plugins with a typefind function should be
loaded.
2000-12-30 19:04:51 +00:00
Erik Walthinsen
9813b0ca37 Updated more files to use INFO.
Original commit message from CVS:
Updated more files to use INFO.
2000-12-30 02:41:15 +00:00
Erik Walthinsen
ca1c48e95c Updated copyright in all the libgst files.
Original commit message from CVS:
Updated copyright in all the libgst files.
Created gst_private.h, set up all files to use it.
2000-12-28 22:12:02 +00:00
Erik Walthinsen
7dcd7a13a1 Mostly minor little changes, but two interesting things: 1) removed a pthread_join from the gst_thread_main_loop. co...
Original commit message from CVS:
Mostly minor little changes, but two interesting things:

1) removed a pthread_join from the gst_thread_main_loop.  commented out
because the thread isn't supposed to run pthread_join, the main process is.

2) Fixed a major bug with cothreads in threads.  Had to add MAP_FIXED to
the mmap() of the cothread stack.  Presumably the gilbc that ships with
redhat 7.0 now places these mmap requests somewhat randomly.  Since they
*must* be exactly where we expect them, it was failing.  MAP_FIXED forces
it to put it where we say.
2000-12-27 03:13:20 +00:00
Wim Taymans
a63780a377 Header cleanup: try to include as little as possible; this will probably speed up compilation a bit.
Original commit message from CVS:
Header cleanup: try to include as little as possible; this will probably
speed up compilation a bit.
changed the .c files to use #include "..."
Fix for the 'plugins are loaded twice' bug.
Fix 22186: GstObject flags are now used everywhere. Added *_FLAG_LAST so
elements do not use the same flags. Added some padding in the flag enum
for future expansion.
2000-12-15 01:57:34 +00:00
Erik Walthinsen
29d567ba23 Changes made to the DEBUG system. New header file gstdebug.h holds the stuff to keep it out of gst.h's hair. DEBUG ...
Original commit message from CVS:
Changes made to the DEBUG system.  New header file gstdebug.h holds the
stuff to keep it out of gst.h's hair.  DEBUG prints out the process id,
cothread id, source filename and line number.  Two new macros DEBUG_ENTER
and DEBUG_LEAVE are used to show the entry and exit of a given function.
This eventually might be used to construct call trace graphs, even taking
cothreads into account.  This would be quite useful in visualizing the
scheduling mechanism.

Minor changes to various debug messages.

Also sitting in gstdebug.h is a prototypical DEBUG_ENTER that's capable of
performing DEBUG_LEAVE automatically.  It does this by utilizing a
little-known GCC extension that allows one to call a function with the
same parameters as the current function.  The macro uses this to basically
call itself.  A boolean is used to ensure that when it calls itself it
actually runs the body of the function.  In the meantime it prints stuff
out before and after the real function, as well as constructing a
debugging string.  This can be used eventually to provide call-wide data
on the DEBUG lines, instead of having to replicate data on each call to
DEBUG.  More research is needed into how this would most cleanly be fit
into some other chunk of code, like GStreamer (I think of this DEBUG trick
as a separate project, sorta).

Unfortunately, the aforementioned DEBUG trick interacts quite poorly with
cothreads.  Almost any time it's used in a function that has anything
remotely to do with a cothread context (as in, it runs in one), a segfault
results from the __builtin_apply call, which is the heart of the whole
thing.  If someone who really knows assembly could analyze the resulting
code to see what's really going on, we might find a way to fix either the
macro or the cothreads (I'm thinking that there's something we missed in
constructing the cothreads themselves) so this works in all cases.

In the meantime, please insert both DEBUG_ENTER and DEBUG_LEAVE in your
functions.  Be sure to put DEBUG_ENTER after your variable declarations
and before any functional code, not to put the function name in any DEBUG
strings (it's already there, trust me), and put a DEBUG_LEAVE if you care
enough.

Changes are going to happen in the way DEBUGs and other printouts occur,
so stay tuned.
2000-12-04 09:35:08 +00:00
Erik Walthinsen
34811a366d Enhanced debugging by making DEBUG() print out the cothread ID as well as the process ID. cothread_getcurrent return...
Original commit message from CVS:
Enhanced debugging by making DEBUG() print out the cothread ID as well as
the process ID.  cothread_getcurrent returns the current cothread ID, or
-1 if cothreads aren't set up in this process context.
2000-12-03 00:17:52 +00:00
Erik Walthinsen
64b4ac5cdf Rearranged cothread_switch a bit to move all the code for error conditions to the end, using goto's to get there. Th...
Original commit message from CVS:
Rearranged cothread_switch a bit to move all the code for error conditions
to the end, using goto's to get there.  This has the presumed advantage of
consolidating all the normally run code into one chunk, reducing jumps
(and the associated penalties in any modern processor) and limiting cache-
line usage.  It may be instructive to look at the generated assembly for
this revision and the previous, to see if gcc is smart enough to do this
for us anyway.

If you want to turn off some of the checks (they are all checks for NULL
pointers, if you're curious) for a speed gain, disable the #define of
COTHREAD_PARANOID at the top.
2000-11-29 10:05:47 +00:00
Wim Taymans
ef31aa64e8 Docs updates.
Original commit message from CVS:
Docs updates.
Added LICENSE info to headers/code where missing in gst directory
Added a bonobo wrapper for the media player (it shows up in gshell but
locks up when activating the component, anyone?)
Fixed some XML save/load problems with arguments.
2000-11-11 15:13:50 +00:00
Wim Taymans
415ced1c0b Added seeking to the avi decoder by implementing pull_region.
Original commit message from CVS:
Added seeking to the avi decoder by implementing pull_region.
Fixes to the asyncdisksrc.
Added thread specific data to the cothreads.
2000-11-06 00:15:51 +00:00
Wim Taymans
c125059f97 Added the excellent mpeg2dec decoder. Not 100% optimized but allready very fast.
Original commit message from CVS:
Added the excellent mpeg2dec decoder. Not 100% optimized but allready
very fast.
More cleanup.
2000-11-04 18:54:07 +00:00
Wim Taymans
e8ea96d23b Some code cleanup
Original commit message from CVS:
Some code cleanup
Let the parent GstBin decide when to do a create_plan (bin inside a thread)
2000-11-01 22:11:48 +00:00
Wim Taymans
2521a319c3 MPEG2 types added for better autoplugging. MPEG2 works more or less. fix in autoplugging. avi now works.
Original commit message from CVS:
MPEG2 types added for better autoplugging. MPEG2 works more or less.
fix in autoplugging. avi now works.
2000-10-21 12:04:40 +00:00
Wim Taymans
d00af07660 The cothreads were not initialized in its thread context resulting in severe stack corruption. This was very hard to ...
Original commit message from CVS:
The cothreads were not initialized in its thread context resulting in
severe stack corruption. This was very hard to track down.
We should be able now to modify some plugins to a loop based setup so that
we can get rid of the mp3parse and mp1videoparse elements.
Modified the GList to a GSList in the queue.
2000-09-24 14:29:49 +00:00
Wim Taymans
e5ab7f33ac A first attempt to fix the queues in a cothreaded pipeline.
Original commit message from CVS:
A first attempt to fix the queues in a cothreaded pipeline.
Some fixes to the thread handling.
Fix a bug in gstreamer-config : gthread was not included.
gst_bin_create_plan() is now done in the READY state.
a bin with only another bin in it will now work with gst_bin_iterate.
Added some examples for the queues.
2000-09-22 23:35:14 +00:00
Richard Boulton
59030bfc59 Patch from Chris Emerson for PPC. cothreads stuff was causing segfaults, because the stack needs to be initialised w...
Original commit message from CVS:
Patch from Chris Emerson for PPC.  cothreads stuff was causing segfaults,
because the stack needs to be initialised with a particular structure on
PPC, unlike x86 where it simply has items pushed or popped.
Added Chris to AUTHORS, for his trouble.
2000-09-21 00:57:09 +00:00
Wim Taymans
cab1728fa5 Added gst_pipeline_add_sink/src to allow multiple sink cases and more complex autoplugging. Update docs too.
Original commit message from CVS:
Added gst_pipeline_add_sink/src to allow multiple sink cases and
more complex autoplugging. Update docs too.
Simplified the pipeline autoplugging code.
Changed the cothread case: One iteration is now a push from the src
element. The disk source does not change its state anymore on eof.
Better type setting for the ac3 parser/decoder and mpeg2parse.
2000-09-17 22:08:09 +00:00
Wim Taymans
ff99ee6132 Added a quick hack to allow loop based elements to finish intead of looping till infinity.
Original commit message from CVS:
Added a quick hack to allow loop based elements to finish intead of
looping till infinity.
Added compile time i386 or plain C getbits implementation selection.
The vorbis decoder now is our first loop based element!
2000-09-16 10:58:23 +00:00
Richard Boulton
238bbc23c8 Begun to add support for non i386 architectures, with the help of Chris
Original commit message from CVS:
Begun to add support for non i386 architectures, with the help of Chris
Emerson.  Added bits to configure to figure out architecture, and added
some alternatives for PPC.  Should cause no problems on i386, but I'll
check after this commit, but doesn't yet work on PPC by a fair way...
2000-09-15 22:44:10 +00:00
Wim Taymans
23540ccc52 Faster and modular getbits implementation.
Original commit message from CVS:
Faster and modular getbits implementation.
Fixed a bug in the audiosink that could lock up your box on bad MB.
Modified the plugins to use the new getbits functions.
2000-09-07 20:35:15 +00:00
Wim Taymans
ef63c32778 This is a rather large patch. Switched on -Wall compiler flag and fixed the warnings.
Original commit message from CVS:
This is a rather large patch. Switched on -Wall compiler flag and fixed
the warnings.
Made the Video for Linux more like it should be.
2000-02-27 23:18:38 +00:00
Erik Walthinsen
1762dfbf98 initial checkin
Original commit message from CVS:
initial checkin
2000-01-30 09:03:00 +00:00