Original commit message from CVS:
This is a megapatch with the following changes:
- moved the gchar *name to GstObject, removed the ones in GstElement and
GstPad.
- moved the parent handling completely into GstObject. This cause *all* of
the plugins to fail (except those that used gst_pad_get_parent)
- rearanged the XML save handling.
- GstObject now has a class function save/restore_thyself.
- GstObject has a generic method gst_object_save_thyself, this makes it
possible to fire a signal wehever a new object is loaded. This is needed
so we can add XML save hooks.
- GstXML API has changed slightly. You now have to create a GstXML object
first before you can actually load something. This makes it possible to
attach a signal to GstXML whenever an object is loaded. I'm not sure we
will keep this interface.
- GstObject can now print the path_string without knowing about the GstPad and
GstElement types.
- Added gst_bin_get_by_name_recurse_up to lookup an element in the current
element hierarchy.
- added XML namespaces to the saved pipelines the namespace is:
http://gstreamer.net/gst-core/1.0/
namespaces are needed to distinguish user generated XML from the core XML.
Note that the plugins still contain a macro GST_OBJECT_PARENT that will be
replaced with gst_pad_get_parent shortly.
Original commit message from CVS:
Docs updates
Added XML load from memory functionality
Undid the videosink patch, something else is wrong now on my machine:
no MMX acceleration :-(
Original commit message from CVS:
Wrote a little more text, and did more of the work on making the sections.
When this manual has text in all these sections its going to be pretty
impressive...
Original commit message from CVS:
Fix build problem when don't have db2html, or a directory to put the manual in:
was trying to make a symlink in the non-existant directory, and causing the
build to stop.
Original commit message from CVS:
Massive build fixup. Will send message to -devel list later with details
on the changes and what they mean for Makefile.am writers. Check
docs/random/omega/build/TODO for a list of things that I had to make sure
of.
NOTE: this requires a complete rebuild of all plugins, since I also
changed the STATE enum to a bitfield instead of sequential numbers.
Original commit message from CVS:
Antoher way of dealing with EOS. This proposal does not use the recursion
to propagate the EOS signal. This implies that an element cannot deny an
EOS signal anymore but since the signal is generated when a NULL buffer is
pushed, somebody did something wrong anyway.
Original commit message from CVS:
While typing on eos2 about the EOS handling, I got an idea and started
eos3. eos3 takes a different approach by merging the eos detection and
the scheduling in a quite elegant way. I'm not sure we handle the
scheduling like this though...
Original commit message from CVS:
Move plugin example code to new location, and put it into build system.
Add work on firstplugin chapter of pwg.
Fix typo in quotes.
Add @'s before commands in manuals.mak
Original commit message from CVS:
Add a "quotes" section to the gstreamer manual.
This may not be an appropriate place to have this - feel free to remove
it. But I think this should live _somewhere_.
Original commit message from CVS:
Add tests for -L png and -L eps arguments to fig2dev.
Correct slip in docs/manuals.mak which used HAVE_DB2PS instead of
HAVE_PS2PDF.
Original commit message from CVS:
Config directory (which currently just holds the registry)ecan now be set
by configure --with-configdir=<directory path>
Original commit message from CVS:
Wrote introduction, and changed name to plugin writers guide (though
files still need rename). I'll leave the filenames as is for now, since
the name might still change again...
Original commit message from CVS:
Fixed the MPEG2 to MPEG1 recoder, we need cannot create dangling elements
with the current scheduler. Remove the subtitle parser because it's not
possible with the current scheduler.
Added a padtemplate for MPEG2 subtitles.
Original commit message from CVS:
Updated the manual and the docs.
Removed the esdsink in gst/elements/ we have a real one not in the
plugins dir.
Added more APIs to query the plugins, types and caps. more fields now
have a getter and a setter. This is needed to make gstreamer wrapper
fiendly.
Added gst_element_disconnect beacuse we also have a gst_element_connect
Original commit message from CVS:
Don't delete CVS directories from working directory: delete from distdir.
Also, delete backup files, while you're at it. :)
Original commit message from CVS:
Massive, massive update of most source files. I went through and cleaned
up all the warnings that I could, which involved fixing some of the plugins.
The configure.in script was re-arranged and cleaned up so, and a check for
libtool 1.3.5 was added to autogen.sh. Added checks for Gtk and GNOME.
Some plugins were removed from the list of things to build for various reasons.
Added GST_DEBUG_FORCE_DISABLE in gstgetbits, since that's time critical and
even an if() from a DEBUG can significantly increase runtimes.
Original commit message from CVS:
Added checking for all the tools used to make documentation.
If documentation cannot be generated, whatever is available will still be
installed.
videosink/imagetest is now a check_PROGRAM
Original commit message from CVS:
Fix a couple of files not being put into distributions.
make dist now appears to create a fully functional distribution.
make rpm should now produce an rpm. Whether that rpm is any good is
another matter...
Original commit message from CVS:
Fix another bug in make install for fwg (complained becuase there were no
pngs to install).
I should have got up more slowly today...
Original commit message from CVS:
Docs updates: remove sink, src, filter, connection
added gstinfo to docs.
Updated some core files for the docs
gsttypefind did not include gst_private
Added CFlags to Makefile.am in gst/elements
Original commit message from CVS:
Added framework for writing filter writers guide.
Extracted much of the makefile from docs/manual into a shared file which
is included, so it can be re-used.
Original commit message from CVS:
Fix a bug in manual/Makefile.am: bad shell script for make disting .ps
files. Couple of final fixes to libs/Makefile.am, too.
Add a few things to cvsignores.
Original commit message from CVS:
Makefile cleaned muchly - make should now cause gstreamer-libs docs to be
created. Make dist may work too - untested. No longer store tmpls in
CVS, either.
Only thing missing is make dependencies on the source files used to extract
the docs.
Original commit message from CVS:
Misc tweaks to makefile for manual. Moved .figs into same directory so
we can have them built appropriately without having to hack makefiles
horribly. Nearly have a core makefile which can be reused for other
manuals.
Original commit message from CVS:
README and the beginning of the first code-review. Here's the README:
Code reviews:
=============
Files are to be named by file or subsystem, and CVS revision number or date:
gstbin.c-1.41
editor-20001216
A file should look something like the following:
----------------------------------------------------------------------
Code Review
===========
File: gst/gstbin.c
Revision: 1.41
Date: Dec 16, 2000
Reviewer: Erik Walthinsen <omega@cse.ogi.edu>
-----
Line 20:
#define GST_DEBUG_ENABLED
Shouldn't be here, DEBUG should be enabled globally. May leave until
scheduling changes are done.
-----
Line 117: (gst_bin_class_init)
gstelement_class->elementfactory = gst_elementfactory_find("bin");
Not sure this is such a great idea. I thought the GstElement code did this
kind of stuff?
----------------------------------------------------------------------
The format will evolve as we do more stuff, such as putting in fields for
recommended actions, comments regarding any later changes made and when, etc.
Original commit message from CVS:
WARNING: Don't grab this updated unless you're really, REALLY sure.
WARNING: Wait for the next one.
Whole lotta changes here, including a few random bits:
examples/*/Makefile: updated to use `libtool gcc`, not just `gcc`
gst/
gstbuffer.h: updated to new flag style
gst.c, gstdebug.h: added new debugging for function ptrs
gstpipeline.c: set type of parent_class to the class, not the object
gstthread.c: ditto
plugins/
cdparanoia/cdparanoia.c: added an argument type, updated some defaults
cobin/spindentity.c: updated to new do/while loopfunction style
mp3encode/lame/gstlame.c: argument types, whole lotta lame options
tests/: various changes
Now, for the big changes: Once again, the scheduling system has changed.
And once again, it broke a whole bunch of things. The gist of the change
is that there is now a function pointer for gst_pad_push and gst_pad_pull,
instead of a hard-wired function. Well, currently they are functions, but
that's for debugging purposes only, they just call the function pointer
after spewing lots of DEBUG().
This changed the GstPad structure a bit, and the GstPad API as well.
Where elements used to provide chain() and pull() functions, they provide
chain() and get() functions. gst_pad_set_pull[region]_function has been
changed to get_pad_set_get[region]_function. This means all the elements
out there that used to have pull functions need to be updated. The calls
to that function have been changed in the normal elements, but the names
of the functions passed is still _pull[region](), which is an aesthetic
issue more than anything.
As for what doesn't work yet, just about anything dealing with Connections
is hosed, meaning threaded stuff won't work. This will be fixed about 12
hours from now, after I've slept, etc. The simplefake.c test works in
both cothreaded and chained cases, but not much else will work due to the
Connection problem. Needless to say, don't grab this unless you *need*
these features *now*, else wait to update this stuff until tomorrow.
I'm going to sleep now.
Original commit message from CVS:
Changed the GstPadFactory and added the GstPadTemplate.
The GstPadFactory is an easy way to define a pad with capabilities.
The GstPadFactory is converted into a GstPadTemplate. The template is
used to create new pads and to expose the possible pads used in an
element to the plugin system.
updated mp3parse, mpg123, cdparanoia to the new API.
Rerun gstreamer-register because the XML definition has changed.
Original commit message from CVS:
First pass at an outline for the Filter Writer's Guide. Mostly complete,
though the structure needs some work. Just need someone to write it ;-)
Original commit message from CVS:
Reworked AC3 decoder. No seeking yet but at least we do not need ac3parse
anymore.
Reworked dvdsrc to read scrambled data (DeCSS not included). I have
modified DeCSS a bit to work in GStreamer. Can I release the code or is
there some lawyer that's going to sue me?
MPEG2 SSE motion compensation.
Tried to add PTS to the MPEG decoder but failed.
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.
Original commit message from CVS:
More Docs updates.
Added plugin documentation. I fear we need a gstdoc implementation
that loads plugins and does introspection on them. I think we should
automatically create the docs for the pads and mime types the plugins
provide. Does anyone have enough perl knowledge to add these features? I
allready changed the C code to output the pad definitions but my perl
knowledge is too limited, for now, to implement the rest of the needed
functionality...
Original commit message from CVS:
Manual now gets installed correctly by make install. Problems:
clean / uninstall don't work.
make dist not tested.
pdf manual doesn't have images.
Original commit message from CVS:
Added building of the manual to the build system. Currently in a
rudimentary state - will not gracefully give up if tools not available,
will not uninstall / clean, and may not install / make dist properly.
Documentation does not have dependencies on images, so won't rebuild if
they're altered either.
Original commit message from CVS:
Fix compile problem due to DEBUG being redefined in
libs/getbits/gstgetbits.h. Also fix several small typos in the docs and
examples.
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.
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!
Original commit message from CVS:
Changes to gstreamer-config to include gtk+ libs
manual changes: queues, threads, programs
gsteditor does not crash anymore.
gstpipline new should return a GstElement *
fixed ac3dec for new getbits
fixes to gstreamer-launch
more efficient startup for gstplay.
Original commit message from CVS:
More docs (most of them just empty...)
Added automatic pad plugging.
Added automatic dynamic pad plugging.
Changed some codecs to correctly set their pad types.
Original commit message from CVS:
A first (rude) attempt at autoplug.
Autoplugging selects appropriate codecs to connect src to sink, adds
them to the pipeline and connect pads.
Autoplugging will run the typedetect plugin if the src pad has no MIME
type.
No autoplugging is done on the src and sink pads, it's hardcoded:
connect 'src to sink'.
No attempt at creating threads.
No attempt at dynamically autoplugging not yet existing pads.
Changes to (some) plugins to properly set their MIME types.
Original commit message from CVS:
Build fixes.
Adapted the test directory to the new state management
added an mpeg2 to avi encoder.
added a v4l to divx capture example.
Original commit message from CVS:
Megapatch, changes which states are available, how they're used, and how
they're set. Also modifies the scheduling system, breaking pulled
buffers. Check mail archives for more details.
Original commit message from CVS:
This is the audio/video sync release.
Changed the mpegvideoparser to parse complete pictures. Added the PTS
timestamps to the pictures.
Added PTS timestamps to the MPEG audio frames.
Made the clock a littlebit better.
Gstplay now uses two more threads one for video, one for audio playback.
Added the first QoS callbacks for the pads.
hopefully fix an mmx compilation problem.
Original commit message from CVS:
Fixed the mpeg2 encoder. Added MMX optimisations for motion estimation.
Added another mpeg1 encoder.
Added Two filters: smooth and median (a median cut filter)
Made the queue pull buffers.
Original commit message from CVS:
Make GDK pixbuf optional, by compiling videosink only if it is present.
Make documentation generated successfully even if libghttp isn't present
(by skipping the ghttpsrc stuff).
Original commit message from CVS:
Documentation updates. All standard library objects and standard
elements are documented. Modified some of the elements to more
accuratly report about their arguments so the documentation builds
more reasonable output.
Added aviencoder and jpegencoder elements (not working yet)
Original commit message from CVS:
Try to compile a little mmx program, set the default value of HAVE_LIBMMX.
some typos fixed. Changed include path for volume.c. RTjpeg uses mmx.h
Original commit message from CVS:
Re- set up the gtk-doc system. I'd managed to mutilate it a while back,
but now it's fixed. I'll put a copy of the HTML output somewhere on the
website tonight.
In order to actually generate the docs, you'll have to install all the
DocBook tools, as well as gtk-doc from GNOME cvs. (see
http://developer.gnome.org/arch/doc/tools.html)
Notes (I'll codify these some day):
- Don't believe the Gnome page, always edit the SOURCES when documenting a
given function, never the tmpl file.
- I'll be re-arranging things a lot, but gtk-doc is smart enough to merge
any changes to the tmpl file. However, gtk-doc's merge and CVS's diff are
two entirely separate animals. We should probably have a virtual mutex on
the entire docs/gst/ directory, over and above what CVS does.
- I'm going to try to end up with a book set (docbook terms), where
docs/gst/ is only one book. There'd be another called docs/manual/, and
another docs/plugins/, etc. If you have any comments as to how these
should be done, gstreamer-devel is the place.
Original commit message from CVS:
OK, I think I've got all the .cvsignore stuff taken care of, though we'll
want to fine-tune things as we go, of course. Most of them are the same,
with some exceptions for directories that produce executables (those are
listed by name after the standard ones and a newline for separation).