2005-02-22  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/tmpl/gstcontrol.sgml:
	* docs/libs/tmpl/gstdparam.sgml:
	* docs/libs/tmpl/gstdplinint.sgml:
	* docs/libs/tmpl/gstdpman.sgml:
	* docs/libs/tmpl/gstdpsmooth.sgml:
	* docs/libs/tmpl/gstunitconvert.sgml:
	  more docs for the state of dparams

2005-02-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelementfactory.c: (gst_element_factory_create):
	* gst/gstobject.c: (gst_object_init),
	(gst_object_set_name_default), (gst_object_set_name):
	  name objects by default, not in gst_element_factory_create. Allows
	  using elements created with g_object_new. (fixes #167283)

2005-02-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstinfo.c: (_gst_debug_init), (gst_debug_log_default):
	  make the time that debugging functions print relative to when
	  gst_init was called

2005-02-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaginterface.c:
	  Fix inline docs: tag setter vararg functions are NULL-terminated,
	  GST_TAG_INVALID doesn't exist any more.

2005-02-18  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_dump_byte_array):
	Allocate the 1 byte more memory that was forgotten!!!!!
	fixes memory corruption on 64bit platforms

2005-02-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/building-pads.xml:
	* docs/pwg/intro-basics.xml:
	  fixed a few typos, relabeled introductionary list of types
	* docs/random/ensonic/dparams.txt:
	  more notes abut dparam changes
	* libs/gst/control/dparam.c: (gst_dparam_attach):
	* libs/gst/control/dparammanager.c:
	* libs/gst/control/dparammanager.h:
	  - many comments and notes on dparam implementation
	  - new dparams are were not initialized to the default value
	    from param spec

2005-02-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	submitted by: Peter Astakhov

	* po/LINGUAS:
	* po/ru.po:
	  adding Russian translation

2005-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  make sure popt is added to gtk-doc flags.  Fixes #147782.

2005-02-09  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/using.xml:
	  Fix typo in FAQ (artssink => artsdsink)

2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* tools/gst-launch.1.in:
	  Fix typo (#166699).

2005-02-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/using.xml:
	  Add -v argument to fakesrc/fakesink gst-launch line,
	  so that the promised output will actually show up.

2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstthread.c: (gst_thread_change_state):
	  Implement state-change error handling (#166073).

2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	  Release interrupt after handling (#166250).

2005-02-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  back to HEAD

=== release 0.8.9 ===

2005-02-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
	  releasing 0.8.9, "Like Eating Glass"

2005-02-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	submitted by: Clytie Siddall

	* po/vi.po: Added Vietnamese translation

2005-02-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Tim Philipp-Müller

	* configure.ac:
	* gst/gstpad.c:
	  unref data when probe function returns FALSE.  Fixes #166362

2005-02-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gst.c: (gst_init_get_popt_table):
	  Fix typo (#166269).

2005-02-04  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_get_compatible_pad_template): Fix
	the debugging on whether the caps are compatible.

2005-02-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/basics-elements.xml:
	  Fix two typos.

2005-02-02  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_decoupled),
	(schedule_chain), (get_invalid_call), (chain_invalid_call),
	(loop_group_schedule_function), (gst_opt_scheduler_iterate):
	Remove some FIXMEs after analysing and commenting why they
	are not issues.

2005-02-02  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_class_init), (gst_opt_scheduler_init),
	(gst_opt_scheduler_finalize), (remove_decoupled), (schedule_chain),
	(get_invalid_call), (chain_invalid_call),
	(get_group_schedule_function), (loop_group_schedule_function),
	(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
	(gst_opt_scheduler_state_transition),
	(gst_opt_scheduler_add_element),
	(gst_opt_scheduler_remove_element), (gst_opt_scheduler_interrupt),
	(gst_opt_scheduler_error), (gst_opt_scheduler_pad_link),
	(gst_opt_scheduler_pad_unlink), (gst_opt_scheduler_iterate),
	(gst_opt_scheduler_show):
	Added lock to protect scheduler data structures.

2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* testsuite/threads/threadi.c: (cb_data):
	  Fix buglet in test.

2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* testsuite/threads/Makefile.am:
	* testsuite/threads/threadi.c: (cb_data), (cb_play), (main):
	  On Wim's request, split the test in three separately-compiled
	  tests that each test a very specific bug. Two of them still fail,
	  will create bugs for those. threadi.c indicates why they fail.

2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/schedulers/gstoptimalscheduler.c:
	(get_group_schedule_function):
	  Try to work with the threading mess that queue_link is.

2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstbin.c: (gst_bin_remove_func):
	  Explicitely make an element release locks in a group when being
	  remove from a bin.
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	  If there's no scheduler, always return immediately (similar to
	  gst_element_interrupt).

2005-01-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstbin.c: (gst_bin_child_state_change_func):
	  Remove a piece of code that could never be reached.
	* docs/gst/gstreamer-sections.txt:
	* gst/gstpad.c: (gst_pad_push), (gst_pad_pull),
	(gst_pad_call_get_function):
	* gst/gstpad.h:
	* testsuite/pad/Makefile.am:
	  Fix #150546, enable tests.

2005-01-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Fix description for buffer-frames=0.
	* docs/gst/tmpl/gstbin.sgml:
	* gst/gstbin.c: (gst_bin_child_state_change_func),
	(gst_bin_change_state), (gst_bin_change_state_norecurse):
	* gst/gstbin.h:
	* testsuite/threads/Makefile.am:
	* testsuite/threads/threadi.c: (cb_timeout), (cb_quit), (cb_eos),
	(cb_state), (cb_play), (main):
	  Fix non-recursive state changes to *really* change the state
	  of the object, and not just call parent_class->state_change.
	  Fix a lot of lockups caused by this. Fixes #132775. Add test
	  for the problem. Also enable test to show #142588 (fixed).
	* gst/gstthread.c: (gst_thread_change_state),
	(gst_thread_child_state_change):
	  Don't exit the thread if we go to NULL and are inside thread
	  context. Instead, return control to the main thread context
	  and exit from there.
	* gst/gstelement.c: (gst_element_disable_threadsafe_properties):
	  Don't unset virtual functions, since those may still be used.
	  That's not necessarily correct, but suffices for now.
	* configure.ac:
	* testsuite/Makefile.am:
	* testsuite/pad/Makefile.am:
	* testsuite/pad/chainnopull.c: (gst_test_sink_class_init),
	(gst_test_sink_base_init), (gst_test_sink_chain),
	(gst_test_sink_init), (main):
	* testsuite/pad/getnopush.c: (gst_test_src_class_init),
	(gst_test_src_base_init), (gst_test_src_get), (gst_test_src_init),
	(main):
	* testsuite/pad/link.c: (gst_test_element_class_init),
	(gst_test_element_base_init), (gst_test_src_get),
	(gst_test_src_loop), (gst_test_src_init), (gst_test_filter_chain),
	(gst_test_filter_loop), (gst_test_filter_init),
	(gst_test_sink_chain), (gst_test_sink_loop), (gst_test_sink_init),
	(cb_error), (main):
	  Add tests to show #150546. Pass, but should fail (currently
	  disabled from the testsuite).
	* gst/gstscheduler.c: (gst_scheduler_dispose):
	  Dereference child schedulers on dispose (#94464).
	* testsuite/bytestream/filepadsink.c: (gst_fp_sink_init):
	  Fix typo.
	* testsuite/threads/thread.c: (main):
	  Add more debug.

2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpad.c: (gst_pad_push):
	  Oops, revert previous commit, broke testsuite...

2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpad.c: (gst_pad_push):
	  Add check that the pad on which the push is performed is not a
	  get-based pad (#150546).

2005-01-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  Fix buffer pushing if stream EOSes during typefinding.

2005-01-28  Edward Hervey  <bilboed@bilboed.com>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstvalue.c: (gst_string_wrap):
	  Allow NULL-strings as argument (#165365).

2005-01-27  Stephane Wirtel  <stephane.wirtel@belgacom.net>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/schedulers/faircothreads.c:
	(gst_fair_scheduler_cothread_queue_show):
	  Fix build without debug enabled.

2005-01-26  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstcontrol.sgml:
	* docs/libs/tmpl/gstdparam.sgml:
	* docs/libs/tmpl/gstdplinint.sgml:
	* docs/libs/tmpl/gstdpman.sgml:
	* docs/libs/tmpl/gstdpsmooth.sgml:
	* docs/libs/tmpl/gstputbits.sgml:
	* docs/libs/tmpl/gstunitconvert.sgml:
	* libs/gst/control/dparam.c:
	* libs/gst/control/dparam.h:
	* libs/gst/control/dparammanager.c:
	(gst_dpman_add_required_dparam_callback),
	(gst_dpman_add_required_dparam_direct),
	(gst_dpman_add_required_dparam_array),
	(gst_dpman_remove_required_dparam), (gst_dpman_attach_dparam),
	(gst_dpman_get_dparam), (gst_dpman_get_dparam_type),
	(gst_dpman_get_manager)
	  restructured DParam docs

2005-01-25  Tim-Philipp Müller  <tim at centricular dot net>

	* gst-element-check.m4:
	  Only check for gst-inspect if we haven't already
	  found it in previous element check runs

2005-01-25  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  fixed install rules to treat style.css as optional

2005-01-24  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  install style.css along with docs
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_class_init):
	* gst/gstelement.h:
	  fixing incomplete docs

2005-01-24  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/elements/gstfilesink.c: (gst_filesink_handle_event):
	  Don't unref seek event twice when fflush() fails
	  
2005-01-22  David Schleef  <ds@schleef.org>

	* configure.ac: Add --disable-valgrind. (partial fix for #164890)

2005-01-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  added params for deprecation guards
	* gst/gst.c:
	* gst/gst.h:
	* gst/gsterror.c: (_gst_resource_errors_init),
	(_gst_stream_errors_init):
	* gst/gsterror.h:
	  documented some more enums

2005-01-19  Jan Schmidt  <thaytan@mad.scientist.com>
	* gst/autoplug/gstspideridentity.c:
	Cosmetic fix - spider_find_peek should be static
	* gst/parse/parse.l:
	Applying fix for #164261

2005-01-18  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstcontrol.sgml:
	* gst/gstbuffer.h:
	* gst/gsttag.h:
	* gst/gstvalue.c:
	  added docs for the TAG defines

2005-01-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/schedulers/gstoptimalscheduler.c: (schedule_group):
	  Only unref entry if there is an entry.

2005-01-17  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(remove_from_group), (schedule_group), (normalize_group),
	(gst_opt_scheduler_iterate):
	Also ref/unref decoupled elements before iterating the
	group since they are not added to the list of elements.

2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/highlevel-components.xml:
	  Add subtitle/streamselection as new features to playbin.

2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/manual.xml:
	  Re-enable dataaccess docs (oops).

2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	* docs/random/mimetypes:
	  Add documentation on libsndfile types (#163309), by Steve Baker
	  <steve@stevebaker.org>.
	* gst/gstelement.c: (gst_element_release_request_pad):
	  If an element has no explicit function, just remove the pad.

2005-01-17  Luca Ognibene  <luogni@tin.it>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/registries/gstxmlregistry.c: (gst_xml_registry_load):
	  Fix memleak (#163801).

2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/elements/gsttee.c: (gst_tee_getcaps), (gst_tee_link):
	  I think this is actually more correct...

2005-01-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstprobe.c: (gst_probe_dispatcher_dispatch):
	  Another workaround for memory access while destroyed in callback.
	  Please, someone with refcount knowledge, have a look at this.

2005-01-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/faq.xml:
	* docs/faq/legal.xml:
	  move the legal Q&A here

2005-01-14  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/elements/gsttee.c: (gst_tee_getcaps), (gst_tee_link),
	(gst_tee_request_new_pad):
	  Fix negotiation.

2005-01-14  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>

	* docs/random/omega/caps2:
	* testsuite/caps/caps_strings:
	  replace framerate aproximations by their real value
	  (24000/1001, 30000/1001, 60000/1001)
	  Partially fixes bug #164049

2005-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
	  don't fail on the stupid GstPoptOption

2005-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstpad.h:
	* gst/gstprobe.c:
	  allow probes to work on ghost pads by realizing the pad
	  probe debugging

2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstpad.sgml:
	* gst/gstpad.c: (gst_pad_set_active_recursive):
	* gst/gstpad.h:
	  Add gst_pad_set_active_recursive().

2005-01-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/release:
	  updates
	* gst/gst_private.h:
	* gst/gstinfo.c:
	* gst/gstobject.c:
	  move deep_notify logging to a new category
	* gst/gstprobe.c:
	* gst/gstprobe.h:
	  add stuff so bindings can wrap probes

2005-01-09  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>

	* gst/gstplugin.c: (gst_plugin_load):
	  Fix plugin loading if plugin/lib was already loaded. Fixes
	  #163383

2005-01-09  Sebastien Cote  <sc5@hermes.usherb.ca>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpluginfeature.c: (gst_plugin_feature_ensure_loaded):
	  Protect plugin loading by a mutex so it's threadsafe. Fixes
	  #163234.

2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstevent.c: (_gst_event_copy):
	  Reference source object when copying events, since it'll be
	  dereferenced on event dereferencing as well.

2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstevent.sgml:
	* gst/gstevent.c: (gst_event_new_filler_stamped),
	(gst_event_filler_get_duration):
	* gst/gstevent.h:
	  Add two new functions for filler events (which are used to
	  synchronize streams if one of them is not having any data
	  for a while) without interrupting the actual data-stream.
	  Basically a no-op.
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_link_sink), (gst_queue_link_src),
	(gst_queue_change_state):
	  Allow for renegotiation while filled. Required for stream
	  switching while playing.

2005-01-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_link_many):
	  fix up g_return_if_fail's
	* po/LINGUAS:
	* po/de.po:
	  add German translation, that was somehow not included

2005-01-08  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>

	* docs/random/mimetypes:
	  add 2 more 4CC code for DV (HDTV and SDTV-LongPlay profiles)
	  do not add them to riff-lib as they are not common

2005-01-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstprobe.c: (gst_probe_dispatcher_dispatch):
	  Check for existence of probe after performing the probe before
	  re-accessing it to prevent segfaults caused by removal of the
	  probe in the callback.

2005-01-05  David Schleef  <ds@schleef.org>

	* testsuite/registry/Makefile.am:
	* testsuite/registry/gst-print-formats.c:
	(print_pad_templates_info), (print_element_list),
	(print_typefind_list), (list_sort_func), (get_typefind_mime_list),
	(g_list_uniqify), (get_pad_templates_info),
	(get_element_mime_list), (print_mime_list), (main): A little
	program that looks through the registry to find elements of
	a given type.  Not particularly interesting as a test, except
	that there's no other test covering the same area.

2005-01-05  David Schleef  <ds@schleef.org>

	* tools/gst-launch.c: (idle_func), (fault_handler_sighandler),
	(fault_handler_sigaction), (fault_spin),
	(sigint_handler_sighandler), (play_handler), (main): Fix deadlocks
	in signal.h-type signal handlers by not calling forbidden functions,
	including gst_element_set_state().

2005-01-05  David Schleef  <ds@schleef.org>

	* gst/gstvalue.h: Mark _gst_reserved[] as private

2005-01-05  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: Fix doc build problem.

2005-01-05  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: Add some documentation

2005-01-05  Stefan Kost  <ensonic@users.sf.net>

	* docs/README:
	  another shell oneliner for empty return value docs
	* gst/gstcaps.c:
	* gst/gstvalue.c:
	* libs/gst/control/dparam.c:
	  more doc fixes (parameters and return values)

2005-01-05  Vincent Torri  <torri@iecn.u-nancy.fr>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstregistry.h:
	* gst/registries/gstxmlregistry.c:
	  Fix macro's for Mingw (fixes #162276).

2005-01-04  Stefan Kost  <ensonic@users.sf.net>

	* docs/README:
	  quick shell oneliner to find undocumented members
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	  more enumtypes cleanup
	* gst/gsterror.h:
	  activated documentation comments, now someone needs to document
	  the enums :(

2005-01-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/manual.xml:
	  Add dataaccess part (doh!).

2005-01-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-autoplugging.xml:
	  Fix typo (intiate -> initiate).

2005-01-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/bbb/streamselection:
	  Add some notes on how to handle multi-subtitle/-audio streams.

2004-12-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstenumtypes.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	  removed gstenumtypes section from docs and put all the enums into
	  their sections

2004-12-27  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>

	* gst/gstplugin.c:
	  document gst_library_load a bit more (riff special case + return
	  value if already loaded)
	* testsuite/bytestream/filepadsink.c:
	  plugin name is 'gstbytestream', not 'bytestream'

2004-12-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/bbb/subtitles:
	  Add some first mind rumblings on proper subtitle support.

2004-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/ca.po:
	* po/sv.po:
	  updated translations

2004-12-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-dataaccess.xml:
	  Add section on how to use fakesrc/fakesink/identity in your
	  application, plus section on how to embed plugins. Also mention
	  probes.
	* docs/manual/appendix-checklist.xml:
	* docs/manual/appendix-debugging.xml:
	* docs/manual/appendix-gnome.xml:
	* docs/manual/appendix-integration.xml:
	  Debug -> checklist, GNOME -> integration, add sections on Linux,
	  KDE integration and add other things useful for application
	  development.
	* docs/manual/manual.xml:
	  Remove some fixmes, update some file pointers.
	* docs/pwg/appendix-checklist.xml:
	  Fix typo.
	* docs/pwg/building-boiler.xml:
	  Remove ugly header and add commented fixme.
	* docs/pwg/pwg.xml:
	  Add fixme.
	* examples/manual/Makefile.am:
	  Add example for added docs.

2004-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  back to HEAD

=== release 0.8.8 ===

2004-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
	  Releasing 0.8.8, "I'll Take Care Of You"

2004-12-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  second prerelease

2004-12-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Wim Taymans

	* gst/gstbin.c:
	  Fix for #159852 - make iterate emission threadsafe

2004-12-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/cvs.xml:
	  notes about new fdo account request

2004-12-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/tmpl/gstenumtypes.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
	  Added missing short docs. Added ids for navigation.

2004-12-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/advanced-schedulers.xml:
	* docs/manual/advanced-threads.xml:
	  Rewrites. Remove cothreads, go a bit into opt specifically,
	  document threads and their gotchas, and do some technical stuff
	  on autoplugging plus add some working examples. Fixes #157395.
	* examples/manual/Makefile.am:
	  Add typefind/autoplugger example (one that actually works).
	  Remove queue example since it's a duplicate of the thread one.

2004-12-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_value_deserialize_string):
	  use deprecated g_value_set_string_take_ownership to keep compatible
	  with glib 2.2

2004-12-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_value_deserialize_string):
	  revert last patch, only dom a g_utf8_validate now before accepting
	  the string - caps parsing strips " from strings so we can't rely on
	  them
	* testsuite/caps/value_serialize.c: (test_string_deserialization):
	  disable a test that tested the above and comment it

2004-12-16  Steve Lhomme <steve.lhomme@free.fr>

	Patch reviewed by David Schleef  <ds@schleef.org>

	* win32/gstenumtypes.c: Update from gst/gstenumtypes.c (See
	bug #153882)
	* win32/gstenumtypes.h: same

2004-12-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpad.c: (gst_pad_query):
	  Do query on realized pad, similar to how convert/send_event handle
	  this. Also makes sense, since this pad belongs to the function to
	  which this query will be sent. Fixes #158163.

2004-12-16  Christian Fredrik Kalager Schaller  <uraeus@gnome.org>

	* docs/manual/appendix-programs.xml: fix pipeline to actually work

2004-12-16  Christian Fredrik Kalager Schaller  <christian@fluendo.com>

	* docs/faq/general.xml: fix pipeline to actually work

2004-12-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_value_deserialize_string):
	  check that a simple string that gets deserialized does not contain
	  invalid characters
	* testsuite/caps/value_serialize.c: (test_string_deserialization):
	  remove a test that tested a wring behaviour

2004-12-16  Matt Kraai  <kraai@alumni.cmu.edu>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/intro-motivation.xml:
	  Fix typos.

2004-12-16  Edward Hervey  <bilboed@bilboed.com>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/tmpl/gstprobe.sgml:
	  Fix documentation of probe callback - it is supposed to return
	  FALSE, not TRUE, to remove data from the stream (#159087).

2004-12-16  Daniel Gazard  <dany42@free.fr>

	Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstelementfactory.c: (gst_element_factory_create):
	  Fix compile failure if compiling without libxml2 support (#149936).

2004-12-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/highlevel-components.xml:
	  Move spider from autoplugging to components. Autoplugging is for
	  internals, not for solutions. ;-).

2004-12-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/ds/0.9-suggested-changes:
	  Make note on device/location/uri property names.

2004-12-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/advanced-clocks.xml:
	* docs/manual/advanced-interfaces.xml:
	* docs/manual/advanced-metadata.xml:
	* docs/manual/advanced-position.xml:
	* docs/manual/advanced-schedulers.xml:
	* docs/manual/advanced-threads.xml:
	* docs/manual/appendix-gnome.xml:
	* docs/manual/appendix-programs.xml:
	* docs/manual/appendix-quotes.xml:
	* docs/manual/autoplugging.xml:
	* docs/manual/basics-bins.xml:
	* docs/manual/basics-data.xml:
	* docs/manual/basics-elements.xml:
	* docs/manual/basics-helloworld.xml:
	* docs/manual/basics-init.xml:
	* docs/manual/basics-pads.xml:
	* docs/manual/basics-plugins.xml:
	* docs/manual/bins-api.xml:
	* docs/manual/bins.xml:
	* docs/manual/buffers-api.xml:
	* docs/manual/buffers.xml:
	* docs/manual/clocks.xml:
	* docs/manual/components.xml:
	* docs/manual/cothreads.xml:
	* docs/manual/debugging.xml:
	* docs/manual/dparams-app.xml:
	* docs/manual/dynamic.xml:
	* docs/manual/elements-api.xml:
	* docs/manual/elements.xml:
	* docs/manual/factories.xml:
	* docs/manual/gnome.xml:
	* docs/manual/goals.xml:
	* docs/manual/helloworld.xml:
	* docs/manual/helloworld2.xml:
	* docs/manual/highlevel-components.xml:
	* docs/manual/highlevel-xml.xml:
	* docs/manual/init-api.xml:
	* docs/manual/intro-basics.xml:
	* docs/manual/intro-motivation.xml:
	* docs/manual/intro-preface.xml:
	* docs/manual/intro.xml:
	* docs/manual/links-api.xml:
	* docs/manual/links.xml:
	* docs/manual/manual.xml:
	* docs/manual/motivation.xml:
	* docs/manual/pads-api.xml:
	* docs/manual/pads.xml:
	* docs/manual/plugins-api.xml:
	* docs/manual/plugins.xml:
	* docs/manual/programs.xml:
	* docs/manual/queues.xml:
	* docs/manual/quotes.xml:
	* docs/manual/schedulers.xml:
	* docs/manual/states-api.xml:
	* docs/manual/states.xml:
	* docs/manual/threads.xml:
	* docs/manual/typedetection.xml:
	* docs/manual/win32.xml:
	* docs/manual/xml.xml:
	  Try 2. This time, include a short preface as a "general
	  introduction", also add code blocks around all code samples
	  so they get compiled. We still need a way to tell readers
	  the filename of the code sample. In some cases, don't show
	  all code in the documentation, but do include it in the generated
	  code. This allows for focussing on specific bits in the docs,
	  while still having a full test application available.
	* examples/manual/Makefile.am:
	  Fix up examples for new ADM. Add several of the new examples that
	  were either added or were missing from the build system.
	* examples/manual/extract.pl:
	  Allow nameless blocks.

2004-12-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/elements-api.xml:
	* docs/manual/helloworld.xml:
	* examples/manual/extract.pl:
	  fix last example.  Add example of adding code blocks that are not
	  shown in docbook output.

2004-12-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/dynamic.xml:
	* docs/manual/elements-api.xml:
	* docs/manual/gnome.xml:
	* docs/manual/helloworld2.xml:
	* docs/manual/init-api.xml:
	* docs/manual/queues.xml:
	* docs/manual/threads.xml:
	* docs/manual/xml.xml:
	* examples/manual/extract.pl:
	  Make it possible to extract example code from separate blocks.
	  Should make Ronald happy.

2004-12-15  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(remove_from_group), (group_elements_set_visited),
	(normalize_group), (gst_opt_scheduler_iterate):
	Fix bug where a flag was not updated on a decoupled entry point 
	because we were just checking the group element list and decoupled
	elements are not in that list..

2004-12-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/advanced-clocks.xml:
	* docs/manual/advanced-dparams.xml:
	* docs/manual/advanced-interfaces.xml:
	* docs/manual/advanced-metadata.xml:
	* docs/manual/advanced-position.xml:
	* docs/manual/advanced-schedulers.xml:
	* docs/manual/advanced-threads.xml:
	* docs/manual/appendix-debugging.xml:
	* docs/manual/appendix-gnome.xml:
	* docs/manual/appendix-programs.xml:
	* docs/manual/appendix-quotes.xml:
	* docs/manual/appendix-win32.xml:
	* docs/manual/autoplugging.xml:
	* docs/manual/basics-bins.xml:
	* docs/manual/basics-data.xml:
	* docs/manual/basics-elements.xml:
	* docs/manual/basics-helloworld.xml:
	* docs/manual/basics-init.xml:
	* docs/manual/basics-pads.xml:
	* docs/manual/basics-plugins.xml:
	* docs/manual/bins-api.xml:
	* docs/manual/bins.xml:
	* docs/manual/buffers-api.xml:
	* docs/manual/buffers.xml:
	* docs/manual/clocks.xml:
	* docs/manual/components.xml:
	* docs/manual/cothreads.xml:
	* docs/manual/debugging.xml:
	* docs/manual/dparams-app.xml:
	* docs/manual/dynamic.xml:
	* docs/manual/elements-api.xml:
	* docs/manual/elements.xml:
	* docs/manual/factories.xml:
	* docs/manual/gnome.xml:
	* docs/manual/goals.xml:
	* docs/manual/helloworld.xml:
	* docs/manual/helloworld2.xml:
	* docs/manual/highlevel-components.xml:
	* docs/manual/highlevel-xml.xml:
	* docs/manual/init-api.xml:
	* docs/manual/intro-motivation.xml:
	* docs/manual/intro-preface.xml:
	* docs/manual/intro.xml:
	* docs/manual/links-api.xml:
	* docs/manual/links.xml:
	* docs/manual/manual.xml:
	* docs/manual/motivation.xml:
	* docs/manual/pads-api.xml:
	* docs/manual/pads.xml:
	* docs/manual/plugins-api.xml:
	* docs/manual/plugins.xml:
	* docs/manual/programs.xml:
	* docs/manual/queues.xml:
	* docs/manual/quotes.xml:
	* docs/manual/schedulers.xml:
	* docs/manual/states-api.xml:
	* docs/manual/states.xml:
	* docs/manual/threads.xml:
	* docs/manual/typedetection.xml:
	* docs/manual/win32.xml:
	* docs/manual/xml.xml:
	  First try at rewriting the ADM. Needs lotsamore work, but some
	  parts might already be somewhat useful.
	* docs/pwg/advanced-interfaces.xml:
	  Remove properties interface, it never actually existed (except for
	  on my HD...).

2004-12-13  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps): Allow caps to
	be NULL (bug #160220).

2004-12-13  David Schleef  <ds@schleef.org>

	* configure.ac: remove all mmx stuff, because it's not used.
	* docs/random/ds/0.9-suggested-changes: additional notes
	* include/Makefile.am: we don't use these anymore
	* include/mmx.h: remove
	* include/sse.h: remove

2004-12-13  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>

	* docs/random/mimetypes:
	  Add FOURCC code for h264 codec (VSSH)
	  Add alternate FOURCC codes for h263 related codecs

2004-12-10  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/programs.xml:
	  Added more gst-launch examples.

2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_handle_src_query):
	  Check for availability again.

2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstcaps.c: (gst_caps_compare_structures):
	  Simple caps go first. This has the nice side-effect of fixing an
	  obscure warning.

2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstversion.h.in:
	  Protect header.

2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_schedule_run_queue), (schedule_chain),
	(gst_opt_scheduler_get_wrapper):
	  When we're recursing into a chain run, only run the directly
	  related group, not all queued ones. This will fix a possible
	  deadlock in chains with more than two groups.

2004-12-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh:
	  remove patch if autopoint fails

2004-12-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/gstreamer-sections.txt:
	  Document Thomas' addition, fix build, make Luis the sheriff happy.

2004-12-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c:
	* gst/gstplugin.h:
	  add accessor for version field

2004-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	submitted by: Luca Ferretti <elle.uca@infinito.it>

	* po/LINGUAS:
	* po/it.po:
	  New tranlation added: Italian

2004-12-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpad.c: (gst_pad_is_negotiated),
	(gst_pad_get_negotiated_caps):
	  GST_RPAD_* will only operate on a RealPad (it casts the pointer,
	  it doesn't actually check the contents), so be sure to hand it
	  a RealPad else we'll crash.

2004-12-03  Wim Taymans  <wim@fluendo.com>

	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_link), (gst_queue_handle_src_query):
	Reverted to 1.110 until this makes the testsuite and various
	apps work.

2004-12-01  Christian Fredrik Kalager Schaller <christian@fluendo.com>

	* docs/upload.mak: fix included CVS conflict strings

2004-12-01  William Jon McCann  <mccann@jhu.edu>

	Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstelement.c: (gst_element_error_full):
	  Use g_error_new_literal because error text may have
	  percentage signs in it. Fixes #160019.

2004-12-01  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstbufferstore.c:
	(gst_buffer_store_add_buffer_func):
	  don't try to make subbuffers bigger than they can be. (fixes
	  #159970)

2004-11-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstvalue.sgml:
	  Add new function to docs to fix build.

2004-11-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstcaps.c: (gst_caps_is_fixed_foreach):
	* gst/gstpad.c: (_gst_pad_default_fixate_value),
	(_gst_pad_default_fixate_foreach):
	* gst/gstvalue.c: (gst_type_is_fixed), (gst_value_is_fixed):
	* gst/gstvalue.h:
	  Deprecate _type_is_fixed, use _value_is_fixed instead, since
	  in some cases (arrays), the fixedness depends on the content.
	* gst/gstqueue.c: (gst_queue_handle_src_query):
	  Check for availability before doing something.

2004-11-29  Wim Taymans  <wim@fluendo.com>

	* testsuite/threads/Makefile.am:
	* testsuite/threads/signals.c: (gst_test_get_type),
	(gst_test_class_init), (gst_test_init), (gst_test_dispose),
	(gst_test_set_property), (gst_test_get_property),
	(gst_test_do_signal1), (signal2_handler), (gst_test_do_signal2),
	(gst_test_do_prop), (run_thread), (main):
	Added a bunch of testcases that show threadsafety bugs in glib.

2004-11-29  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/programs.xml:
	  Added a first batch of gst-launch examples, as provided by Ronald
	  and others from the devel-mlist

2004-11-28  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_negotiate_pads):
	  simplify
	* gst/gstvalue.c: (gst_string_wrap), (gst_string_unwrap),
	(gst_value_serialize_string), (gst_value_deserialize_string):
	  add unwrapping of previously wrapped strings. Fix bug in wrapping
	  while at it.
	* testsuite/caps/value_serialize.c: (test1),
	(test_string_serialization), (test_string_deserialization), (main):
	  add tests for string (de)serialization

2004-11-26  Wim Taymans  <wim@fluendo.com>

	* testsuite/threads/159566.c: (object_deep_notify), (main):
	* testsuite/threads/Makefile.am:
	Added testsuite to show bug #159566

2004-11-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstthread.c: (gst_thread_dispose), (gst_thread_change_state),
	(gst_thread_child_state_change), (gst_thread_main_loop):
	Ref the thread object in the GThread mainloop. Break out of the
	thread mainloop if it holds the last ref. This properly exits
	the threads when disposing the thread from its own context. It
	also avoids possible deadlocks in the dispose function.

2004-11-24  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/gstqueue.c (gst_queue_link_sink): Grab the lock only when
	it is necessary to wait.

2004-11-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/building-boiler.xml:
	  Make description somewhat clearer.

2004-11-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/upload.mak:
	  Apparently docs changed location on FDO's server.

2004-11-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/appendix-checklist.xml:
	  Add some random notes on things to check when writing an element.
	  This list can be extended as people see fit.

2004-11-23  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/gstqueue.c (gst_queue_init, gst_queue_link_sink)
	(gst_queue_link_src): Allow for renegotiating the caps of the sink
	pad. The queue will now wait until it is empty and forward the new
	caps to the source.
	* gst/gstbin.c (gst_bin_set_element_sched)
	(gst_bin_unset_element_sched): Make sure that all elements and
	links are registered and unregistered with the scheduler exactly
	once. This elaborates on a fix by Benjamin Otte, but
	guarantees that decoupled elements are also registered.

2004-11-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/quotes.xml:
	  add a quote
	* configure.ac:
	* gst/gst.c:
	* gst/gstinfo.c:
	  add LIBDIR and move init message higher up so it's at the start

2004-11-08  Christian Fredrik Kalager Schaller  <christian@fluendo.com>

	* gst/schedulers/Makefile.am: fix disted build fair by including .h file
	* gstreamer.spec.in: add fair

2004-11-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/elements/gstfakesink.c: (gst_fakesink_class_init):
	* gst/elements/gstidentity.c: (gst_identity_class_init):
	  Use G_SIGNAL_TYPE_STATIC_SCOPE, patch by Christophe Fergeau
	  <teuf@gnome.org> (#157263).
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init),
	(gst_type_find_handle_src_query):
	  Subtract size of internally stored data from position queries.

2004-11-07  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/schedulers/fairscheduler.c:
	* gst/schedulers/faircothreads.c:
	* gst/schedulers/faircothreads.h:
	New cothread based scheduler: Fair scheduler.
	* gst/schedulers/gthread-cothreads.h: 
	Add the standard #if around the whole file.
	Defining symbol GTHREAD_COTHREADS_NO_DEFINITIONS will now prevent
	compilation of the functions defined in this file. This is
	necessary to be able to use this file as a normal header.
	* gst/schedulers/Makefile.am: Add compiling support for fair
	scheduler.
	* docs/gst/Makefile.am (IGNORE_HFILES): Exclude internal fair
	scheduler cothreads layer from documentation generation.

2004-11-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	  Don't crash if that function is not implemented.

2004-11-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Another typo.

2004-11-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/intro-preface.xml:
	  Hm, ok, so the brackets weren't really useful...
	* docs/pwg/other-ntoone.xml:
	  Fix embarassing typo.

2004-11-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/intro-preface.xml:
	  Rewrite preface.

2004-11-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-tagging.xml:
	* docs/pwg/advanced-types.xml:
	* docs/pwg/building-boiler.xml:
	* docs/pwg/building-chainfn.xml:
	* docs/pwg/building-signals.xml:
	* docs/pwg/building-state.xml:
	* docs/pwg/building-testapp.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/other-manager.xml:
	* docs/pwg/other-source.xml:
	  Typo fixes.
	* docs/pwg/other-manager.xml:
	  Add some first content. No example code yet.
	* gst/elements/gstfilesink.c: (gst_filesink_handle_event):
	  Remove double newlines.

2004-11-04  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(remove_from_group), (normalize_group), (group_migrate_connected),
	(gst_opt_scheduler_iterate):
	* testsuite/schedulers/.cvsignore:
	* testsuite/schedulers/Makefile.am:
	* testsuite/schedulers/queue_link.c: (main):
	Added testcase for scheduler segfault.
	Fix scheduler segfault when removing a decoupled
	entry point as the last element from a group.

2004-11-03  Christophe Fergeau  <teuf@gnome.org>

	* gst/gstmarshal.list: add missing marshaller, fixes build

2004-11-03  Christophe Fergeau  <teuf@gnome.org>

	* docs/random/signal: added notes about using BOXED for GstBuffer
	signal marshallers, not POINTER

2004-11-03  Christophe Fergeau  <teuf@gnome.org>

	* gst/elements/gstfakesink.c: (gst_fakesink_class_init):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init): more
	POINTER=>BOXED changes to marshal GstBuffers

2004-11-03  Christophe Fergeau  <teuf@gnome.org>

	* gst/elements/gstidentity.c: (gst_identity_class_init): GstBuffer is 
	a boxed type, marshal the signal with VOID__BOXED, not VOID__POINTER

2004-11-03  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstmacros.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/random/ensonic/interfaces.txt:
	* gst/gstinfo.h:
	  added some more docs, removed two obsolete defines

2004-11-02  Kjartan Maraas <as at gnome.org>

	reviewed by: Wim Taymans, Ronald Bultje.

	* gst/cothreads.c: (cothread_create):
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_child_state_change_func):
	* gst/gstbuffer.c: (gst_buffer_span):
	* gst/gstelement.c: (gst_element_get_index),
	(gst_element_get_event_masks), (gst_element_get_query_types),
	(gst_element_get_formats):
	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init):
	* gst/gstobject.c: (gst_object_default_deep_notify):
	* gst/gstpad.c: (gst_pad_get_event_masks),
	(gst_pad_get_internal_links_default):
	* gst/gstplugin.c: (gst_plugin_register_func),
	(gst_plugin_get_module):
	* gst/gststructure.c: (gst_structure_get_string),
	(gst_structure_get_abbrs), (gst_structure_from_abbr),
	(gst_structure_to_abbr):
	* gst/gstutils.c: (gst_print_element_args):
	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(setup_group_scheduler), (gst_opt_scheduler_iterate):
	Aplied part of patch #157127: Cleanup of issues reported by 
	sparse.
	Also do not try to use cothreads when there is no cothread
	context yet.

2004-11-02  Sebastien Cote <sc5 at hermes.usherb.ca>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(gst_opt_scheduler_iterate):
	Applied patch #154061. Running a pipeline in which an element 
	calls GST_ELEMENT_ERROR in the chain function, the opt 
	scheduler doesn't unref the chain so it never gets freed.

2004-11-02  Wim Taymans  <wim@fluendo.com>

	* gst/gststructure.c: (gst_structure_get_abbrs),
	(gst_structure_from_abbr), (gst_structure_to_abbr):
	Remove that ugly if-then thing in the code that converts
	between strings and types.

2004-11-02  Wim Taymans  <wim@fluendo.com>

	* gst/gstscheduler.c: (gst_scheduler_add_element),
	(gst_scheduler_remove_element), (gst_scheduler_state_transition):
	Aplied clock distribution patch, this should fix bug
	#148787.

2004-10-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	Submitted by: Kjartan Maraas <kmaraas@broadpark.no>

	* po/LINGUAS:
	* po/nb.po:
	  Added Norwegian Bokmaal translation

2004-10-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* tools/gst-inspect.c: (print_signal_info):
	  print signal arguments as pointers if they are

2004-10-22  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/building-boiler.xml:
	  exchanged GTK_ macros with G_TYPE macros (as pointed out by mathrick)

2004-10-19  Wim Taymans  <wim at fluendo dot com>

	* gst/parse/parse.l:
	* testsuite/parse/parse1.c: (main):
	Since parse can do 'element name=a:b' make 'a:b.' work as
	well. 
	Added testcase to verify fix.

2004-10-19  Wim Taymans  <wim at fluendo dot com>

	* tools/gst-inspect.c: (print_pad_info), (print_plugin_features):
	Use the realpad when printing the direction.
	Add extra \n when printing extensions of typefind factories.

2004-10-13  David Schleef  <ds@schleef.org>

	* examples/manual/Makefile.am: $< isn't portable in Makefile
	rules.

2004-10-13  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstversion.sgml:
	* gst/gstbin.c:
	  more api documentation
	* gst/gstplugin.c: (gst_plugin_register_func),
	(gst_plugin_check_file), (gst_plugin_load_file):
	  better error signaling and logging

2004-10-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_init), (gst_queue_handle_src_query):
	  Subtract current queue contents from position queries.

2004-10-11  Johan Dahlin  <johan@gnome.org>

	* gst/gsturi.c (gst_uri_get_location): unescape string
	(gst_uri_construct): escape string.

2004-10-11  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_renegotiate), (gst_pad_try_set_caps),
	(gst_pad_try_set_caps_nonfixed):
	  allow renegotiation of unconnected pads (as inside spider). Simply
	  return OK if unconnected - mimic try_set_caps there.

2004-10-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstbin.c: (gst_bin_sync_children_state):
	  Add missing break.

2004-10-09  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* gst/elements/gstfakesrc.c: (gst_fakesrc_get):
	Set element to EOS before sending EOS event

2004-10-08  Wim Taymans  <wim at fluendo dot com>

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	Handle EOS events when doing the transition from
	typefind to data passing. This should fix the
	infinite loops in short files.

2004-10-07  Wim Taymans  <wim at fluendo dot com>

	* gst/gstthread.c: (gst_thread_change_state),
	(gst_thread_child_state_change):
	Make sure no iteration happens while performing
	the state change as it could mess up the internal
	consistency of the thread state.

2004-10-07  Wim Taymans  <wim at fluendo dot com>

	* gst/gstthread.c: (gst_thread_dispose), (gst_thread_sync),
	(gst_thread_change_state), (gst_thread_child_state_change):
	Do not try to grab the iterate lock in the state change method
	when we are in the same thread as the iterate or else we
	could deadlock. Some other cleanups.

2004-10-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  bump nano to cvs

=== release 0.8.7 ===

2004-10-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* NEWS:
	* RELEASE:
	* configure.ac:
	  releasing 0.8.7, "A Cruise"

2004-10-06  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>

	* docs/random/mimetypes:
	Add an entry for Sony ATRAC3 audio format with mime-type
	used by rmdemux et riff-read

2004-10-06  Wim Taymans  <wim at fluendo dot com>

	* gst/elements/gsttypefindelement.c: (stop_typefinding):
	Push the buffer store instead of clearing it in case that
	the stream is not seekable.

2004-10-06  Wim Taymans  <wim at fluendo dot com>

	* gst/gstthread.c: (gst_thread_init), (gst_thread_change_state),
	(gst_thread_main_loop):
	Lock the iteration and the state change so that automatic
	negotiation and fixation does not happen at the same time
	as the in stream negotiation.

2004-10-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  bump nano to cvs

=== release 0.8.6 ===

2004-10-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* NEWS:
	* RELEASE:
	* configure.ac:
	  releasing 0.8.6, "Narc"

2004-10-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  prerel bump

2004-10-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Steve Lhomme

	* gst/elements/gstfakesrc.c:
	* gst/elements/gstidentity.c:
	* gst/gstthread.c:
	  Fix for #153881

2004-10-01  Wim Taymans  <wim at fluendo dot com>

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_crc):
	Fix threadsafety of the crc checking function.

2004-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Ronald Bultje

	* gst/elements/gsttypefindelement.c: (stop_typefinding),
	(gst_type_find_element_handle_event),
	(gst_type_find_element_chain):
	* gst/elements/gsttypefindelement.h:
	 #153657.
	 Filter out discont event from seekable sources when typefind
	 asks them to seek.  Fixes typefind with demuxers for
	 avi, asf and matroska.

2004-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.c:
	* gst/gstcaps.h:
	* gst/gstpad.c:
	  Revert preferred caps: (#147789)

2004-09-19  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/dirent.c:
	  fix a memory leak

2004-09-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  bump for prerelease

2004-09-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/Makefile.am:
	* docs/manual/elements-api.xml:
	  restructure so that common stuff is shown first
	* docs/manual/init-api.xml:
	  convert to examples
	* docs/manual/manual.xml:
	* docs/manuals.mak:
	* docs/url.entities:
	  link to API on the website, possibly override later in build
	* examples/manual/.cvsignore:
	  ignore more
	* examples/manual/Makefile.am:
	  add more examples
	* examples/manual/extract.pl:
	  error out on failure

2004-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/tmpl/gstthread.sgml:
	* docs/manual/init-api.xml:
	* examples/manual/Makefile.am:
	  convert two code bits to examples

2004-09-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstelement.c: (gst_element_change_state):
	  Well, actually, I was about to remove this insane assert when
	  I noticed Wim already did that. A warning is nice so we can
	  fix actual ugs (using --g-fatal-warnings and backtraces), so
	  I added that instead.

2004-09-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_threadsafe_properties_pre_run),
	(gst_element_threadsafe_properties_post_run),
	(gst_element_set_state), (gst_element_change_state):
	Added extra refcounting around various places. 

2004-09-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_link_call_link_functions):
	Fix debug info.

2004-09-06  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
	(remove_from_group):
	Some more debug info.

2004-09-03  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_init), (gst_fakesrc_set_clock),
	(gst_fakesrc_set_property), (gst_fakesrc_get_property),
	(gst_fakesrc_get), (gst_fakesrc_change_state):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_chain),
	(gst_identity_set_property), (gst_identity_get_property),
	(gst_identity_change_state):
	* gst/elements/gstidentity.h:
	Added datarate properties to limit the datarate.

2004-08-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspider.c: (plugin_init):
	  don't set a rank. We don't want to autoplug by inserting spiders.

2004-08-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspider.c: (gst_spider_class_init),
	(gst_spider_identity_plug):
	  add a template for spider's sink
	* gst/gst.c: (gst_register_core_elements):
	  queue's rank should be NULL, we don't want spider to add it.

2004-08-18  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Remove --ignore-fail-on-non-empty (#150331)
	* docs/libs/Makefile.am: same
	* docs/gst/tmpl/gstxml.sgml: Remove GstXMLNs
	* docs/random/ds/0.9-planning: random additions
	* docs/random/ds/0.9-suggested-changes: same
	* gst/gstxml.h: remove vestigal GstXMLNs definition

	Preferred caps: (#147789)
	* docs/gst/gstreamer-sections.txt: Add symbols
	* docs/gst/tmpl/gstcaps.sgml: Add symbols
	* gst/gstcaps.c: (gst_caps_copy), (gst_caps_free),
	(gst_caps_append), (gst_caps_copy_1), (gst_caps_intersect),
	(gst_caps_union), (gst_caps_save_thyself), (gst_caps_load_thyself),
	(gst_caps_get_preferred), (gst_caps_set_preferred),
	(gst_caps_get_structure_by_id), (gst_caps_prefer_foreach),
	(gst_caps_use_preferred): Handle caps preferences
	* gst/gstcaps.h: Add caps preferences
	* gst/gstpad.c: (gst_pad_link_get_preferred),
	(gst_pad_link_fixate), (gst_pad_link_call_link_functions),
	(gst_pad_renegotiate), (gst_pad_guess_preferred),
	(gst_pad_get_caps), (gst_pad_push):  Use caps preferences for
	negotiation.

2004-08-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_request_new_pad):
	* gst/elements/gstaggregator.c: (gst_aggregator_base_init),
	(gst_aggregator_init):
	* gst/elements/gstfakesink.c: (gst_fakesink_base_init),
	(gst_fakesink_init):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_base_init),
	(gst_fakesrc_init):
	* gst/elements/gstfdsink.c: (gst_fdsink_base_init),
	(gst_fdsink_init):
	* gst/elements/gstfdsrc.c: (gst_fdsrc_base_init), (gst_fdsrc_init):
	* gst/elements/gstfilesink.c: (gst_filesink_base_init),
	(gst_filesink_init):
	* gst/elements/gstfilesrc.c: (gst_filesrc_base_init),
	(gst_filesrc_init):
	* gst/elements/gstidentity.c: (gst_identity_base_init),
	(gst_identity_init):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_base_init),
	(gst_multifilesrc_init):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_base_init),
	(gst_pipefilter_init):
	* gst/elements/gststatistics.c: (gst_statistics_base_init),
	(gst_statistics_init):
	* gst/elements/gsttee.c: (gst_tee_base_init), (gst_tee_init):
	* gst/gstqueue.c: (gst_queue_base_init), (gst_queue_init):
	  s/gst_pad_new/&_from_template/
	  register pad templates in the base_init function
	  add static pad template definitions

2004-08-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* testsuite/bytestream/gstbstest.c: (gst_bstest_init):
	* testsuite/dynparams/dparamstest.c: (gst_dptest_init):
	* testsuite/refcounting/pad.c: (main):
	* testsuite/refcounting/thread.c: (create_thread_ghostpads):
	  s/gst_pad_new/&_from_template/
	  prepare deprecation of gst_pad_new

2004-08-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Luca Ognibene <skaboy81@virgilio.it>

	* gst/gstcaps.c:
	* gst/gstelement.c:
	* gst/gstpad.c:
	* gst/gstxml.c:
	  fix memleaks.  Fixes #150001

2004-08-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/ds/0.9-suggested-changes:
	  add notes - mostly about pad templates

2004-08-16  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/GStreamer.vcproj:
	  temporary locale files are .gmo not .mo

2004-08-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to cvs

=== release 0.8.5 ===

2004-08-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  releasing 0.8.5, "Stuttgart"
	* NEWS:
	* RELEASE:
	* configure.ac:
	* docs/random/release:
	  updates for release

2004-08-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Wim Taymans (wim@fluendo.com)

	* gst/gstbuffer.c:
	* gst/gstindex.h:
	* libs/gst/dataprotocol/dataprotocol.c:
	  copy KEY_UNIT and DELTA_UNIT flags correctly.  Fixes #150242

2004-08-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* win32/MANIFEST:
	  add win32 dir to the build.  Fixes #149981.

2004-08-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  bump libtool versioning
	* gst/gststructure.c:
	  mark function as static
	* po/af.po:
	* po/az.po:
	* po/ca.po:
	* po/cs.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/nl.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	  translations update
	* win32/README.txt:
	  trademark protection

2004-08-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  fix GST_ORIGIN
	  set GST_PACKAGE to source, and distinguish between release and other
	* tools/gst-inspect.c:
	  print out plugin an element factory is part of so we see this info

2004-08-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstschedulerfactory.sgml:
	  reorder docs a little, make GstBuffer's more sensible.
	* gst/gstbuffer.h:
	  API: added GST_BUFFER_FLAG_DELTA_UNIT
	* gst/gstscheduler.c:
	  comment API addition

2004-08-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
	  work with non-regular files that can be mmapped (like /dev/zero)
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_chain):
	  get rid of typefinds that require a seek when we can't seek instead
	  of trying them over and over again
	* tools/gst-launch.c: (idle_func), (error_cb), (main):
	  return non-zero failure value when the pipeline was interrupted or
	  an error occurred

2004-08-11  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	* win32/GStreamer.vcproj:
	  compile and install the locales

2004-08-11  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstvalue.c:
	  fix a possible memory leak under Windows

2004-08-11  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/GStreamer.vcproj:
	  fix a memory leak that occured under Windows
	* win32/gstreamer.def:
	  add gst_scheduler_register

2004-08-11  Benjamin Otte  <otte@gnome.org>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstscheduler.c: (gst_scheduler_register):
	* gst/gstscheduler.h:
	  API:
	  add gst_scheduler_register shortcut similar to gst_element_register
	* gst/schedulers/entryscheduler.c: (plugin_init):
	* gst/schedulers/gstbasicscheduler.c: (plugin_init):
	* gst/schedulers/gstoptimalscheduler.c: (plugin_init):
	  use it

2004-08-10  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstvalue.h:
	  fix a memory leak that occured under Windows

2004-08-10  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c (gst_xml_registry_open_func):
	Don't use O_EXCL to open temporary registry.  It will prevent
	registry creation if a temporary one already exists, which
	is unnecessary.

2004-08-09  Steve Lhomme  <steve.lhomme@free.fr>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstvalue.sgml:
	  remove some valuable stuff from the documentation due to the use of GST_EXPORT

2004-08-09  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstbytestream.vcproj:
	* win32/gstelements.vcproj:
	* win32/gstgetbits.vcproj:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gstoptimalscheduler.vcproj:
	* win32/GStreamer.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstspider.vcproj:
	  update the include and lib dirs to fit standard libraries as
	  described in the Win32 manual

2004-08-09  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	* win32/gstversion.h:
	  enable NLS again, push the version number for the coming 0.8.5 release

2004-08-09  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstvalue.h:
	  export gst_type_XXX for windows DLLs

2004-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/gst-uninstalled:
	  fix PKG_CONFIG_PATH and PYTHONPATH
	* gst/schedulers/Makefile.am:
	  cleanup
	* libs/gst/bytestream/bytestream.c:
	  remove newline
	* po/LINGUAS:
	* po/sq.po:
	  adding Albanian translation (Laurent Dhima)
	* po/cs.po:
	  updated

2004-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/ca.po:
	* po/sv.po:
	  updated translations

2004-08-04  Benjamin Otte  <otte@gnome.org>

	* tests/mass_elements.c: (main):
	  allow specifying src and sink element explicitly, so I can test
	  videotestsrc instead of fakesrc

2004-08-04  Benjamin Otte  <otte@gnome.org>

	* gst/gststructure.c: (gst_structure_id_empty_new_with_size),
	(gst_structure_id_empty_new), (gst_structure_empty_new),
	(gst_structure_copy):
	  add gst_structure_id_empty_new_with_size to allow preallocating
	  value array sizes. Use this in gst_structure_copy to get rid of
	  reallocs.
	  don't do quark=>string=>quark when copying structures

2004-08-03  Steve Lhomme  <steve.lhomme@free.fr>

	* docs/manual/win32.xml:
	* win32/README.txt:
	  update documentation with the clean version of dependencies

2004-08-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c:
	(gst_entry_scheduler_remove_element):
	  fix for GST_DISABLE_DEBUG
	* tools/gst-launch.c: (print_tag):
	  fixes for G_DISABLE_ASSERT

2004-08-03  Benjamin Otte  <otte@gnome.org>

	* gst/gst.c: (gst_register_core_elements):
	  fix for G_DISABLE_ASSERT
	* gst/gstinfo.c: (__gst_in_valgrind):
	  add for GST_DISABLE_DEBUG

2004-08-03  Benjamin Otte  <otte@gnome.org>

	* gst/parse/parse.l:
	  fix for G_DISABLE_ASSERT

2004-08-03  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_get_type),
	(gst_bin_child_state_change_func):
	* gst/gstthread.c: (gst_thread_change_state):
	Backported some debug logging from a reverted patch
	Don't try to destroy the thread twice. Added some more
	debugging in GstThread. Unlock and signal even if we
	are in the thread context.

2004-08-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/uk.po:
	  updated translation

2004-07-30  David Schleef  <ds@schleef.org>

	* gst/gstatomic_impl.h: Enable atomic code for x86_64

2004-07-29  David Schleef  <ds@schleef.org>

	* libs/gst/dataprotocol/dataprotocol-test.c: (conversion_test):
	Use GST_READ_GUINTxx_BE(), since it accesses unaligned memory.

2004-07-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init),
	(gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_child_state_change), (gst_bin_child_state_change_func),
	(set_kid_state_func), (gst_bin_change_state), (gst_bin_set_state),
	(gst_bin_change_state_norecurse), (gst_bin_dispose),
	(gst_bin_sync_children_state):
	* gst/gstbin.h:
	* gst/gstthread.c: (gst_thread_class_init), (gst_thread_release),
	(gst_thread_change_state):
	* testsuite/states/Makefile.am:
	  revert state change patches as agreed so we can rework them
	  gradually

2004-07-29  Benjamin Otte  <otte@gnome.org>

	* libs/gst/control/Makefile.am:
	  link to libgstreamer (fixes Debian bug 262019, see
	  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=262019 )

2004-07-29  Wim Taymans  <wim@fluendo.com>

	* testsuite/caps/fraction-convert.c: (check_from_double_convert),
	(check_from_fraction_convert), (transform_test), (main):
	Make the test less pedantic about float roundoff errors.

2004-07-29  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file),
	(gst_filesrc_srcpad_event):
	  make seek events to before start/after end of file not fail, but
	  seek to start/end instead
	* testsuite/caps/fraction-convert.c: (check_from_double_convert):
	  add more output

2004-07-29  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps):
	  check that caps are fixed
	* gst/gstpad.c: (gst_pad_template_new):
	  don't try to simplify caps, costs too much time on gst_init
	* gst/gstplugin.c: (gst_plugin_add_feature):
	  G_ERROR if features are added twice
	* gst/gsttypefind.c: (gst_type_find_register):
	* gst/gstelementfactory.c: (gst_element_register):
	  don't add features twice
	* docs/random/ds/0.9-suggested-changes:
	  add note about possible gst_init optimization

2004-07-28  David Schleef  <ds@schleef.org>

	* testsuite/elements/Makefile.am:
	* testsuite/elements/struct_i386.h:
	* testsuite/elements/struct_size.c: (main):  A little test
	to keep distcheck from working if someone changes a structure
	size accidentally.

2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstbytestream.sgml:
	* docs/libs/tmpl/gstcontrol.sgml:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/libs/tmpl/gstgetbits.sgml:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/bytestream/bytestream.c:
	* libs/gst/bytestream/bytestream.h:
	* libs/gst/control/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/getbits/Makefile.am:
	* libs/gst/getbits/getbits.h:
	  various doc and style fixes, adding bytestream to libs docs.

2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/control/dparam.c:
	  more doc fixes.  gst-libs docs now build the same way as gst.

2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* testsuite/Makefile.am:
	* testsuite/bins/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/cleanup/Makefile.am:
	* testsuite/clock/Makefile.am:
	* testsuite/debug/Makefile.am:
	* testsuite/dlopen/Makefile.am:
	* testsuite/dynparams/Makefile.am:
	* testsuite/elements/.cvsignore:
	* testsuite/elements/Makefile.am:
	* testsuite/enumcaps/Makefile.am:
	* testsuite/enumcaps/enumcaps.c:
	* testsuite/ghostpads/Makefile.am:
	* testsuite/indexers/Makefile.am:
	* testsuite/negotiation/Makefile.am:
	* testsuite/parse/Makefile.am:
	* testsuite/plugin/Makefile.am:
	* testsuite/refcounting/Makefile.am:
	* testsuite/schedulers/.cvsignore:
	* testsuite/states/Makefile.am:
	* testsuite/tags/Makefile.am:
	* testsuite/threads/Makefile.am:
	  fold enumcaps into caps dir
	  clean up Makefile.am's for testsuite

2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  clean up docs build.  Fixes needless rebuilding of template files.

2004-07-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (set_kid_state_func), (gst_bin_set_state):
	* gst/gstthread.c: (gst_thread_release), (gst_thread_set_state):
	Make sure that a bin state change tries to keep the children
	in sync. 
	Added debug logging to the thread.

2004-07-27  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/GStreamer.vcproj:
	* win32/gstreamer.def:
	  more exports for the plugins

2004-07-27  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstgetbits.vcproj:
	* win32/gstgetbits.def:
	* win32/msvc71.sln:
	  add support for the getbits plugin

2004-07-27  Wim Taymans  <wim@fluendo.com>

	* gst/gstvalue.c: (gst_value_transform_double_fraction),
	(gst_value_transform_fraction_double), (_gst_value_initialize):
	* testsuite/caps/Makefile.am:
	* testsuite/caps/fraction-convert.c: (check_from_double_convert),
	(check_from_fraction_convert), (transform_test), (main):
	Added transform functions between double and fraction.
	Added testcase to verify transforms

2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/GStreamer.vcproj:
	  rename GStreamer-0.8.lib to libgstreamer.lib

2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstelements.vcproj:
	* win32/gstoptimalscheduler.vcproj:
	  fixes for the Release build

2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	  update the version number

2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/GStreamer.vcproj:
	  add gstinterface to the build

2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstreamer.def:
	  add many definitions needed by plugins,
	  GST_CAT_DEFAULT only available in the Debug build ?

2004-07-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_set_eos_recursive):
	  various whitespace fixes.
	  doc fix, fixes #148497

2004-07-25  Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link):
	  don't delay links on the sink elements, it causes unnegotiated
	  links.
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_base_init):
	  add our padtemplates, we indeed do have some.
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event),
	(gst_type_find_element_chain):
	  don't push data when typefinding failed.
	* gst/gstpad.c: (gst_pad_link_fixate):
	  check that no fixate function returns empty caps.
	* gst/gstpad.c: (gst_pad_push):
	  check that the link is negotiated before data gets pushed.
	* tools/gst-register.c: (main):
	  don't assert (fixes #148283)

2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstconfig.sgml:
	  add GST_PLUGIN_EXPORT definition

2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstplugin.h:
	* gst/gstconfig.h.in:
	* win32/gstconfig.h:
	* win32/gstelements.def:
	* win32/gstelements.vcproj:
	* win32/gstoptimalscheduler.def:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstspider.def:
	* win32/gstspider.vcproj:
	  remove unused .def files and export symbols using GST_PLUGIN_DEFINE

2004-07-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	  remove GST_CAT_DEFAULT because the type has changed

2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstbytestream.vcproj:
	* win32/gstelements.vcproj:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gstoptimalscheduler.vcproj:
	* win32/GStreamer.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstspider.vcproj:
	* win32/msvc71.sln:
	  Copy the files where needed after building, The testsuite will be
	  built separately

2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	* win32/README.txt:
	* docs/manual/win32.xml:
	Fixed the plugin and GStreamer location

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstreamer.def:
	More exports for the plugins

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstinfo.h:
	Marc was right, we need to export literally GST_CAT_DEFAULT

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	NLS crashes in gettext, disabled until this is solved

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	Should use NLS when available

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/registries/gstxmlregistry.c:
	removing the file doesn't seem to be a good idea on Linux

2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/registries/gstxmlregistry.c:
	Remove the registry before renaming the tempfile (needed for Windows)

2004-07-23  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init),
	(gst_multifilesrc_init), (gst_multifilesrc_set_property),
	(gst_multifilesrc_get_property), (gst_multifilesrc_get):
	* gst/elements/gstmultifilesrc.h:
	Added newmedia property so it generates newmedia events between each
	file when property is set, as well as fixed eos handling

2004-07-22  David Schleef  <ds@schleef.org>

	* gst/gststructure.c: (gst_structure_id_empty_new),
	(gst_structure_empty_new):  Set type field correctly.
	* gst/gststructure.h: Check type field correctly.
	* testsuite/caps/Makefile.am:
	* testsuite/caps/structure.c: (test1), (main): Add a very small
	test for structures.

2004-07-22  David Schleef  <ds@schleef.org>

	* docs/random/ds/0.9-suggested-changes: more comments
	* tools/gst-launch.c: (idle_func): Fix hard-to-translate string.

2004-07-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstelementfactory.c: (gst_element_register):
	  set the factory in the class struct, so gst_element_get_factory
	  actually works
	* gst/parse/grammar.y:
	  set element to playing when it gets unlocked as we can't rely on the
	  bin state - all elements in the bin state might still be locked in
	  NULL)

2004-07-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_set_state_func):
	  make this a static function

2004-07-22  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
	(gst_opt_scheduler_pad_link):
	fix 147894-2 and the group_link problem.

2004-07-22  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/147894-2.c: (queue_empty), (queue_filled),
	(handoff_identity), (main):
	* testsuite/schedulers/147894.c: (queue_empty), (queue_filled),
	(handoff_identity), (main):
	* testsuite/schedulers/Makefile.am:
	* testsuite/schedulers/group_link.c: (main):
	Show bug in scheduler when linking chain and loop based element 
	where the chain based element was not yet in a group.

2004-07-21  Benjamin Otte  <otte@gnome.org>

	* gst/.cvsignore:
	* gst/autoplug/.cvsignore:
	* gst/elements/.cvsignore:
	* gst/indexers/.cvsignore:
	* libs/gst/bytestream/.cvsignore:
	* libs/gst/control/.cvsignore:
	* libs/gst/getbits/.cvsignore:
	* testsuite/states/.cvsignore:
	* testsuite/threads/.cvsignore:
	  keep this up to date, since I seem to be the only one who cares
	  about not missing files on commits (editor's note: no you don't,
	  but feel free to change them at the time you add stuff instead
	  of later on)

2004-07-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init),
	(gst_bin_fix_state), (gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_child_state_change_func), (set_kid_state_func),
	(gst_bin_set_state), (gst_bin_change_state_norecurse):
	  make state changes work correctly and reentrant (so removing
	  elements from bins during state changes of bins doesn't cause
	  segfaults or even wrong states)
	  add debugging category and debugging output to print children states
	* gst/gstbin.c: (gst_bin_dispose): 
	  add some assertion checks
	* gst/gstbin.h:
	* gst/gstbin.c: (gst_bin_sync_children_state):
	  deprecate this function - it just does gst_bin_set_state (bin,
	  GST_STATE (bin)) 
	* testsuite/threads/queue.c: (main):
	  don't use gst_bin_sync_children_state anymore
	* testsuite/states/Makefile.am:
	* testsuite/states/bin.c:
	  test that the state changes of bins work as expected
	* gst/gstthread.c: (gst_thread_class_init), (gst_thread_set_state):
	  some adjustments to change states correctly, too
	* gst/gstthread.c: (gst_thread_change_state):
	  don't enable/disable "threadsafe" properties, they're unused and
	  cause random segfaults
	* testsuite/threads/Makefile.am:
	  the queue check randomly passes now, ignore it

2004-07-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c:
	  check if data is NULL before outputting debug info. (fixes #145100)

2004-07-21  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c:
	(gst_entry_scheduler_loop_wrapper),
	(gst_entry_scheduler_chain_wrapper),
	(gst_entry_scheduler_get_wrapper):
	  reset the state when the cothread starts, so we don't get assertion
	  failures on restarting of cothreads

2004-07-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_link_pads_filtered):
	  use correct sinkpad, if only sinkpad is specified, but not srcpad
	  (fixes #147889)
	* gst/gstelement.c: (gst_element_set_state_func),
	(gst_element_change_state): ref/unref the element, signal handlers
	could get rid of the element otherwise

2004-07-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/ds/0.9-suggested-changes:
	  Make note about renaming fixed-list to array.
	* gst/gstvalue.c: (gst_value_intersect_fixed_list),
	(_gst_value_initialize):
	  Add array intersections.
	* testsuite/caps/intersect2.c: (main):
	  Add test for array intersections.

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: back to cvs

=== release 0.8.4 ===

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  releasing 0.8.4, "Paella"
	  bump libtool versioning

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/ca.po:
	  adding Catalan translation (Jordi Mallach)

2004-07-20  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/147894-2.c: (queue_empty), (queue_filled),
	(handoff_identity), (main):
	* testsuite/schedulers/147894.c: (queue_empty), (queue_filled),
	(handoff_identity), (main):
	* testsuite/schedulers/Makefile.am:
	Added failing testcase for variant of #147894

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: David Moore

	* gst/schedulers/gstoptimalscheduler.c: (group_has_element),
	(schedule_group), (gst_opt_scheduler_schedule_run_queue),
	(group_migrate_connected):
	* testsuite/schedulers/Makefile.am:
	  fix for #142813 (Deadlock in optimal scheduler)

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Wim Taymans

	* gst/schedulers/gstoptimalscheduler.c: (group_has_element),
	(gst_opt_scheduler_schedule_run_queue),
	(gst_opt_scheduler_get_wrapper), (get_group),
	(group_migrate_connected):
	* testsuite/schedulers/Makefile.am:
	  fix for #147819 (Add some checks in the opt scheduler)

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Benjamin Otte

	* gst/gstelementfactory.c: (__gst_element_details_set):
	  fix for #147929: running gst-register in non-utf8 locale can cause
	  invalid registry

2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Wim Taymans

	* gst/schedulers/gstoptimalscheduler.c: (group_num_elements),
	(group_has_element), (element_get_reachables_func),
	(group_migrate_connected):
	  fix for #147894 (opt scheduler decoupled elements mismanagement)
	* testsuite/schedulers/Makefile.am:
	  testsuite app now passes

2004-07-19  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/147819.c: (handoff_identity1),
	(handoff_identity2), (main):
	* testsuite/schedulers/Makefile.am:
	Added testcase for bug 147819

2004-07-19  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/147894.c: (queue_empty), (queue_filled),
	(handoff_identity), (main):
	* testsuite/schedulers/Makefile.am:
	Added testcase for bug 147894

2004-07-16  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/142183-2.c: (handoff_identity), (main):
	* testsuite/schedulers/142183.c: (handoff_identity), (main):
	* testsuite/schedulers/Makefile.am:
	Added testsuite for bug 142183 in its two incarnations. Refcount
	is not increased for scheduled elements and threadsafe properties
	mutexes are not properly unlocked.

2004-07-16  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (gst_opt_scheduler_init),
	(create_chain), (destroy_chain), (create_group), (destroy_group),
	(add_to_group), (merge_groups), (group_elements), (group_inc_link),
	(group_dec_link), (gst_opt_scheduler_pad_link),
	(group_inc_links_for_element), (group_migrate_connected):
	Call group_inc_link with the proper src->sink ordering -- 
	break this, and we break sort_chain. patch from wingo for bug
	147713.
	Partially revert patch 1.89. When adding a loop based element to 
	the scheduler, the links to other groups are automatically followed
	and incremented. This should not happen because the bin will call
	pad_link explicitly for those connection, resulting in them counted 
	twice. Results in assertion failure on pipeline cleanup.

2004-07-16  Wim Taymans  <wim@fluendo.com>

	* testsuite/schedulers/143777-2.c: (main):
	* testsuite/schedulers/147713.c: (handoff_src), (handoff_sink),
	(main):
	* testsuite/schedulers/Makefile.am:
	Added cleanup code to testcase 143777-2.
	Added testcase to show bug 147713, does not really show the
	deadlock as I can't figure out how to trigger it, but it does
	demonstrate bad ordering in the scheduler.

2004-07-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstvalue.c: (gst_value_deserialize_fraction):
	  change strndup to g_strndup.  Fixes #147707

2004-07-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/af.po:
	* po/az.po:
	* po/cs.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	  updated translations

2004-07-16  Benjamin Otte  <otte@gnome.org>

	* gst/gstvalue.c: (gst_greatest_common_divisor):
	  use ints and return ints, fractions only use ints, too, so this
	  avoids accidently casting multiplications to unsigned
	(gst_value_lcopy_fraction): it's ints, not uint32
	(gst_value_set_fraction): disallow minint, multiplying and negation
	  are broken with it
	(gst_value_fraction_multiply): fix to make large numbers work and get
	rid of the assumption that the multiplication of two ints fits an
	int64 - dunno if that's true for all systems
	* testsuite/caps/Makefile.am:
	* testsuite/caps/fraction-multiply-and-zero.c:
	(check_multiplication), (check_equal), (zero_test), (main):
	  add tests for all the stuff above
	* testsuite/caps/value_compare.c: (test1):
	  fix comment
	* tests/.cvsignore:
	* testsuite/caps/.cvsignore:
	* testsuite/debug/.cvsignore:
	* testsuite/dlopen/.cvsignore:
	* testsuite/states/.cvsignore:
	  get up to date

2004-07-16  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/bins-api.xml:
	* docs/manual/factories.xml:
	* docs/manual/helloworld.xml:
	* docs/manual/links-api.xml: 
          fixes for out of date info, incorrect info and grammar

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/pads.xml:
	* docs/manual/pads-api.xml: grammar fix

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/pads-api.xml: typo + grammar fix

2004-07-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	  add new symbols
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	  update docs
	* gst/gststructure.c: (gst_structure_set_valist),
	(gst_structure_from_abbr), (gst_structure_to_abbr):
	* gst/gstvalue.c: (gst_value_compare_double), (gst_type_is_fixed),
	(gst_greatest_common_divisor), (gst_value_init_fraction),
	(gst_value_copy_fraction), (gst_value_collect_fraction),
	(gst_value_lcopy_fraction), (gst_value_set_fraction),
	(gst_value_get_fraction_numerator),
	(gst_value_get_fraction_denominator),
	(gst_value_fraction_multiply), (gst_value_serialize_fraction),
	(gst_value_deserialize_fraction),
	(gst_value_transform_fraction_string),
	(gst_value_transform_string_fraction),
	(gst_value_compare_fraction), (_gst_value_initialize):
	* gst/gstvalue.h:
	  adding GstFraction GValue type, get/set, and multiply
	* testsuite/caps/Makefile.am:
	* testsuite/caps/fraction.c: (test), (main):
	* testsuite/caps/string-conversions.c: (main):
	* testsuite/caps/value_compare.c: (test1), (main):
	  add regression tests for GstFraction

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
	
	* docs/manual/init-api.xml: Grammar fix

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/states.xml: Fix inconsistent information

2004-07-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_set_state):
	* gst/gstpad.c: (gst_pad_try_set_caps):
	* gst/gststructure.c:
	* gst/gstthread.c: (gst_thread_child_state_change):
	* gst/gstvalue.c: (gst_value_compare_double):
	* gst/gstvalue.h:
	* testsuite/parse/parse1.c: (main):
	  debugging additions and style cleanups

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

        * docs/manual/states.xml: Grammar fix

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/pads.xml: Grammar fix

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/elements.xml: Fixed image reference

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/goals.xml: Grammar fix

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/motivation.xml:
	Bonobo is no longer "emerging" and added sentence regarding tcp plugins

2004-07-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/manual/motivation.xml: Fix spelling

2004-07-15  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.h: 
	  Don't GST_ERROR_OBJECT empty strings - Solaris doesn't like NULL
	  strings.
	* gst/gstelement.c (gst_element_class_init):
	  GError's are boxed, not objects
	* gst/gstmarshal.list:
	  update list for the fixed error signal

2004-07-14  Andy Wingo  <wingo@pobox.com>

	* gst/gsttag.c: Add a tag merge func for pointers. The header was
	there all along, but the function wasn't. (guile-gstreamer's build
	system uses the address of the function -- I wasn't actually
	trying to use this.)

2004-07-14  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_try_set_caps): Naive link functions (such
	as gst_pad_proxy_pad_link) just link to every other pad when they
	are called. In the case where the graph has cycles, this will mean
	that a call to try_set_caps will recurse. Allow this recursion
	and return OK, while we wait for the first try_set_caps to give a
	proper return value.
	(gst_pad_link_call_link_functions): Since this function is the
	only one to set the NEGOTIATING flag on a pad, if the flag is set
	it means that the link functions have indirectly recursed. If this
	happens, error out to avoid infinite recursion and an eventual
	SEGV.
	(gst_real_pad_class_init): Remove a crufty GtkObject comment.
	(gst_pad_proxy_getcaps): Intersect the result with the template
	caps to ensure that the return value is valid.

2004-07-14  Andy Wingo  <wingo@pobox.com>

	* gst/gstdata.c (gst_data_is_writable): s/>=/>/. If there is only
	one refcount, the calling function is the owner of the buffer.

2004-07-14  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
	(gst_opt_scheduler_pad_link), (group_migrate_connected):
	Fix stupid warning when an element is to be migrated but
	is already migrated.

2004-07-14  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
	(gst_opt_scheduler_pad_link), (group_migrate_connected):
	Make sure that a single non-loop-based element does not 
	end up in a group. This fixes the testsuite again.

2004-07-14  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (create_group),
	(add_to_group), (merge_groups), (schedule_group),
	(gst_opt_scheduler_get_wrapper), (group_elements),
	(group_dec_link), (gst_opt_scheduler_pad_link),
	(group_migrate_connected), (gst_opt_scheduler_pad_unlink),
	(gst_opt_scheduler_iterate):
	move isolated groups to a new chain.
	Emit a warning instead of segfaulting in some error cases.
	Fix a bug where the link count between groups was not calculated 
	correctly. Fixes #144510.

2004-07-13  Steve Lhomme  <steve.lhomme@free.fr>
	* gst/elements/gstfilesrc.c:
	  Binary files support under Windows now OK
      
2004-07-13  Benjamin Otte  <otte@gnome.org>

	  compatibility fixes for Solaris 8/gcc 2.95
	* configure.ac:
	  include libintl libs in LDFLAGS
	* gstvalue.c (gst_value_deserialize_buffer):
	  cast isxdigit stuff to int to silence compiler warning

2004-07-12  Benjamin Otte  <otte@gnome.org>

	* gst/gsttypes.h:
	  get rid of GST_O_READONLY, GST_FILE_MODE_READ and
	  GST_FILE_MODE_WRITE, I don't want them in the exported headers. It
	  just causes support madness
	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	  make it work without this
	* gst/indexers/gstfileindex.c: (_file_index_id_save_entries),
	(gst_file_index_commit):
	  glib IO channels don't want binary mode
	* testsuite/bytestream/filepadsink.c: (main):
	* testsuite/bytestream/test1.c: (read_param_file):
	  use "rb" instead of GST_FILE_MODE_READ, it works on POSIX systems

2004-07-12  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_set_state), (gst_element_set_state_func):
	  virutalize gst_element_set_state, use set_state member in class
	  struct that was already added in 0.7 for this.
	* gst/gstbin.c: (gst_bin_foreach), (set_kid_state_func), 
	(gst_bin_change_state):
	  make gst_bin_foreach works similar to other foreach functions, plug
	  memleaks in it. Make functions using it work with the new approach.
	  Document gst_bin_foreach, so it can be exported if we want to
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_state):
	  use virtualized set_state to make set_state on bins set the state of
	  all its children.

2004-07-12  Benjamin Otte  <otte@gnome.org>

	* configure.ac:
	  require valgrind >= 2.1 (fixes Gentoo bug 53967, see
	  http://bugs.gentoo.org/show_bug.cgi?id=53967)
	* gst/gstpad.c: (gst_pad_alloc_buffer):
	  allow buffer_alloc functions to return NULL and allocate a normal
	  buffer in that case

2004-07-12  Steve Lhomme  <steve.lhomme@free.fr>
	* gst/elements/gstfilesink.c:
	* gst/elements/gstfilesrc.c:
	* gst/indexers/gstfileindex.c:
	* gst/gsttypes.h:
	* testsuite/bytestream/filepadsink.c:
	* testsuite/bytestream/test1.c:
	  Handle binary files under Windows

2004-07-12  Steve Lhomme  <steve.lhomme@free.fr>
	* docs/manual/win32.xml:
	* win32/config.h:
	* win32/gst-register.vcproj:
	* win32/gstreamer.def:
	  Update to another gettext public build

2004-07-12  Steve Lhomme  <steve.lhomme@free.fr>
	* gst/gstplugin.c:
	  Fix an impossible C syntax
	* win32/config.h:
	  Disable i18n under Windows for the moment
	* win32/gst-register.vcproj:
	  Use this configuration

2004-07-12  Jan Schmidt  <thaytan@mad.scientis.com>
	* docs/manual/quotes.xml:
	  Keep the quotes file alive
	* docs/random/ds/0.9-suggested-changes:
	  Add the suggestion of including a 'rowstride' as part of video
	  format caps

2004-07-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_set_state),
	(gst_element_change_state):
	  d'oh.  Set PENDING state correctly before forcing bin to change.
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_parse_fixed_list):
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_state_transition):
	* testsuite/states/parent.c: (main):
	  remove comment now that it's fixed.

2004-07-11  Benjamin Otte  <otte@gnome.org>

	* gst/gstclock.h:
	  GST_SECOND shouldn't cause a conversion to unsigned.
	* testsuite/clock/.cvsignore:
	* testsuite/clock/Makefile.am:
	* testsuite/clock/signedness.c: (main):
	  make sure it never will again

2004-07-11  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_add_func): If we're adding an element
	whose state is higher than the bin state, raise the bin state to
	ensure that bin state := highest child state.
	
2004-07-11  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_foreach): New static function. Calls a
	procedure on the children of a bin. Assumes that the procedure can
	change the set of children.
	(set_kid_state_func): New static function.
	(gst_bin_change_state): Use gst_bin_foreach to call
	set_kid_state_func. Fixes a bug: if a child had a state-change
	handler that removes it from the bin, there would be a segfault.
	Hopefully it should also work in the case where the state-change
	handler on one child adds or removes other children. In any case,
	fixes should go to gst_bin_foreach.

2004-07-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_set_state):
	  compatibility fix for latest plugins release.  Change loop back
	  to while {}

2004-07-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_remove), (gst_bin_dispose):
	* gst/gstthread.c: (gst_thread_dispose), (gst_thread_catch),
	(gst_thread_main_loop):
	Since remove is virtual in GstBin we must not assume the 
	elements GList to have anothing useful.
	Add some more logging to GstThread and be a bit more paranoid
	when resetting the scheduler.
	Set the state of the bin to NULL before removing the children.

2004-07-09  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* testsuite/threads/Makefile.am:
	* testsuite/threads/threadg.c:
	  added test to check if problem when removing all elements from a
	  GstThread before setting GstThread state to NULL

2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* gst/gstbin.c: (gst_bin_change_state):
	* gst/gstelement.c: (gst_element_set_state),
	(gst_element_change_state):
	  rework so that for bins we try to set the state on all children
	  as well even if the bin is in the correct state already.
	  change while to do so at least one iteration is done.
	  For regular elements, we fall back to the previous behaviour for
	  now since we first need a new plugins release.
	* testsuite/states/parent.c: (main):
	  test for this case
	  Fixes #123774

2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/gstqueue.c: (gst_queue_class_init), (gst_queue_finalize),
	(gst_queue_chain), (gst_queue_get), (gst_queue_handle_src_event),
	(gst_queue_release_locks), (gst_queue_change_state),
	(gst_queue_set_property):
	  add proper lock debugging.  Change dispose to finalize, since
	  we're freeing mutexes and other stuff which should happen only once.

2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/pwg/building-state.xml:
	* gst/elements/gstfakesrc.c: (gst_fakesrc_change_state):
	* gst/gstelement.c: (gst_element_change_state):
	* gst/gstthread.c: (gst_thread_change_state):
	  catch wrong state changes in element base class.

2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/gstinfo.h:
	  clean up layout a little.

2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* configure.ac:
	* testsuite/Makefile.am:
	* testsuite/states/Makefile.am:
	* testsuite/states/parent.c: (main):
	  re-enable states testsuite dir.  Add test for state changes and
	  parent behaviour

2004-07-09  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_pad_link), (group_elements_set_visited),
	(element_get_reachables_func), (element_get_reachables),
	(debug_element), (rechain_group), (group_migrate_connected),
	(gst_opt_scheduler_pad_unlink):
	Do not try to migrate decoupled elements to a new group since
	they are not added to groups.

2004-07-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_error_func):
	  make reentrant (= allow removing elements in error handler)

2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/gstpad.c: (gst_pad_event_default_dispatch),
	(gst_pad_send_event), (gst_pad_call_chain_function):
	  events sent to elements below PAUSED cannot be handled, so
	  don't try to

2004-07-08  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c:
	(chain_recursively_migrate_group), (create_group),
	(schedule_group), (gst_opt_scheduler_pad_link),
	(group_elements_set_visited), (element_get_reachables_func),
	(element_get_reachables), (group_can_reach_group), (debug_element),
	(rechain_group), (group_migrate_connected),
	(gst_opt_scheduler_pad_unlink):
	* testsuite/schedulers/Makefile.am:
	Implemented group splitting and rechaining.
	Fixes 143777 and 143777-2 in the testsuite.

2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_chain):
	  extra debugging
	* gst/gstevent.h:
	* gst/gstinfo.c: (gst_debug_log_default):
	  print time nicely.  add thread pointer until someone figures out
	  a completely portable way of getting at thread id's.
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_try),
	(_invent_event), (gst_pad_pull), (gst_pad_event_default_dispatch),
	(gst_pad_call_chain_function):
	  extra debugging
	* gst/schedulers/gstoptimalscheduler.c:
	(get_group_schedule_function), (loop_group_schedule_function),
	(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
	(pad_clear_queued), (gst_opt_scheduler_iterate):
	  rename BUFPEN and friends to DATAPEN since that's what they are.

2004-07-07  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_chain):
	* gst/gstbuffer.h:
	* gst/gstpad.c:
	  cleanups and debugging

2004-07-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* configure.ac:
	* gst/gstvalue.c: (gst_value_compare_enum),
	(gst_value_serialize_enum), (gst_value_deserialize_enum),
	(gst_value_can_compare), (gst_value_compare):
	* testsuite/Makefile.am:
	* testsuite/enumcaps/Makefile.am:
	* testsuite/enumcaps/enumcaps.c:
	  Fix enum serialization, deserialization, comparison in caps, add
	  a test to ensure that this continues working in the future.

2004-07-06  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_save_thyself), (gst_caps_load_thyself):
	Fix memleak.

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c: (gst_plugin_check_file), (gst_plugin_load_file):
	* gst/gstplugin.h:
	* gst/registries/gstxmlregistry.c:
	(plugin_times_older_than_recurse), (plugin_times_older_than),
	(gst_xml_registry_parse_padtemplate):
	  only rebuild registry when actual plugins have a newer time than
	  the registry.  Fixes #145520

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/manual.xml:
	* docs/manual/win32.xml:
	  add chapter on win32 building.  fixes #142422

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Sebastien Cote <sc5 at hermes.usherb.ca>

	* gst/autoplug/gstspider.c: (gst_spider_init),
	(gst_spider_dispose):
	  fix spider memleaks.  fixes #137863

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Joe Marcus Clarke <marcus at freebsd dot org>

	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_pad_unlink):
	  fix SIGBUS error, fixes #145338

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstobject.c: (gst_object_replace):
	* gst/gstscheduler.c: (gst_scheduler_get_clock):
	* gst/gstsystemclock.c: (gst_system_clock_obtain):
	  clean up clock lifecycle.  Fixes #109831

2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/cs.po:
	  added Czech translation (Miloslav Trmac)

2004-07-04  David Schleef  <ds@schleef.org>

	* tools/Makefile.am:
	* tools/gst-xmlinspect.1.in:  Add man page. (bug #140219)

2004-07-04  David Schleef  <ds@schleef.org>

	* common/m4/gst-doc.m4: Check for docbook2html 0.6.10 (bug #139909)

2004-07-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstbin.c: (gst_bin_restore_thyself):
	  chain to parent restore so the bins get restored correctly
          in the editor

2004-07-03  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_save_thyself), (gst_caps_load_thyself):
	Actually do something in these functions, like before the big
	caps change.  (bug #145137)

2004-07-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_get_compatible_pad_template),
	(gst_element_get_compatible_pad_filtered):
	* gst/gstthread.c: (gst_thread_main_loop):
	  more debugging

2004-07-02  David Schleef  <ds@schleef.org>

	* gst/gstinfo.h: wrap #pragmas in #ifdefs for the correct compiler
	* gst/gstobject.h:
	* gst/gstparse.h:
	* gst/gsttrace.h:
	* gst/gstxml.h:

2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstpad.c: (gst_pad_check_schedulers),
	(gst_pad_can_link_filtered), (gst_pad_link_filtered),
	(gst_pad_link_prepare):
	  revert until testsuite is fixed

2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Makefile.am:
	* testsuite/caps/filtercaps.c: (main):
	* testsuite/clock/clock1.c: (main):
	* testsuite/dynparams/dparamstest.c: (gst_dptest_chain), (main):
	  fix some more tests

2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/cleanup/cleanup1.c: (create_pipeline):
	* testsuite/cleanup/cleanup2.c: (create_pipeline):
	* testsuite/cleanup/cleanup4.c: (main):
	  fix testsuite

2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/control/control.c:
	* libs/gst/control/dparam.c:
	* libs/gst/control/dparam_smooth.c: (gst_dpsmooth_get_type):
	* libs/gst/control/dparammanager.c:
	* libs/gst/control/dparammanager.h:
	* testsuite/dynparams/Makefile.am:
	* testsuite/dynparams/dparamstest.c: (gst_dptest_base_init),
	(gst_dptest_change_state), (gst_dptest_chain), (main):
	  fix testcase for dparams
	  add debugging category

2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Rules:
	  change path

2004-07-02  Benjamin Otte  <otte@gnome.org>

	* tests/.cvsignore:
	* tests/Makefile.am:
	* tests/mass_elements.c: (gst_get_current_time), (main):
	  add simple benchmark to test various speeds of fakesrc ! identity !
	  identity ! ... ! fakesink.
	  Usage: mass_elements [num_identities] [num_buffers]
	  If not specified they default to 1000.

2004-07-02  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_check_schedulers),
	(gst_pad_can_link_filtered), (gst_pad_link_filtered),
	(gst_pad_link_prepare):
	  check that pads that get linked belong to the same manager. The old
	  code allowed linking elements before putting them into bins, so it
	  worked to link them and then put them in different threads, which
	  lead to weird behaviour.
	  Since this effectively disallows linking elements before putting
	  them in a bin, some applications might not work after this and error
	  out. If these applications are too critical, we might need to revert
	  that patch. Please test this before the next release...

2004-06-28  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_get_caps):
	  throw an error if the getcaps function does not return a subset of
	  the template caps.
	* libs/gst/bytestream/filepad.c: (gst_file_pad_chain):
	  make disconts without position info an error in debugging
	* tests/spidey_bench.c: (handoff), (main):
	  don't count first try when averaging

2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c: (gst_plugin_load_file):
	  figure out problem with dynamic test

2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
	  fix docs build

2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/POTFILES.in:
	* po/af.po:
	* po/az.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* tools/gst-register.c: (plugin_added_func), (main):
	  i18n-ize -register, fix plural

2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_chain),
	(gst_identity_set_property), (gst_identity_get_property):
	* gst/elements/gstidentity.h:
	  check for perfect stream

2004-06-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstidentity.c: (gst_identity_chain):
	  print offset_end

2004-06-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	  doc fixes

2004-06-24  David Schleef  <ds@schleef.org>

	* autogen.sh:  Remove call to env, since the buildbot isn't
	broken anymore.

2004-06-24  Wim Taymans  <wim@fluendo.com>

	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstmultifdsink.c: (gst_multifdsink_base_init),
	(gst_multifdsink_class_init), (gst_multifdsink_init),
	(gst_multifdsink_add), (gst_multifdsink_remove),
	(gst_multifdsink_clear), (gst_multifdsink_chain),
	(gst_multifdsink_set_property), (gst_multifdsink_get_property):
	* gst/elements/gstmultifdsink.h:
	Added an element that writes to multiple filedescriptors at once.

2004-06-24  Benjamin Otte  <otte@gnome.org>

	* gst/parse/grammar.y:
	  don't try to link elements before they have been added to bins

2004-06-24  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* libs/gst/bytestream/filepad.c: (gst_file_pad_available),
	(gst_file_pad_get_length):
	* libs/gst/bytestream/filepad.h:
	  add 2 new functions

2004-06-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* docs/gst/gstreamer-sections.txt:
	remove from docs, the define that Benjamin removed from gstelement.h

2004-06-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.h:
	  remove define that referenced a nonexisting GstElement struct member

2004-06-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstdata.c: (gst_data_is_writable):
	  whoops, return values were wrong, so writable data was marked as
	  non-writable and vice versa. (fixes #143953, spotted by Francis
	  Labonte)
	  Shows how rarely we need to copy data ;)

2004-06-20  Benjamin Otte  <otte@gnome.org>

	* testsuite/schedulers/.cvsignore:
	* testsuite/schedulers/Makefile.am:
	* testsuite/schedulers/143777-2.c: (main):
	  add test for opt breakage in bug #143777

2004-06-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_call_chain_function):
	  check for if we were unlinked while inside the chainfunction (fixes
	  entrygthread having issues with #143777)
	* testsuite/schedulers/143777.c: (main):
	* testsuite/schedulers/Makefile.am:
	  add a test for that fix

2004-06-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstvalue.c: (gst_value_set_int_range):
	  test that start is smaller then end
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/bytestream/filepad.c: 
	* libs/gst/bytestream/filepad.h:
	  add GstFilePad - a pad that behaves like a FILE*
	* testsuite/bytestream/.cvsignore:
	* testsuite/bytestream/Makefile.am:
	* testsuite/bytestream/filepadsink.c: 
	  test for the GstFilePad

2004-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_set_clock),
	(gst_identity_chain), (gst_identity_set_property),
	(gst_identity_get_property):
	* gst/elements/gstidentity.h:
	* gst/gstclock.c: (gst_clock_id_wait):
          add a "sync" property to sync to the clock

2004-06-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelementfactory.c: (gst_element_factory_create):
	  make the freakin "elementfactory bla has no type" message more
	  useful. So we actually can do something when someone shows up
	  complaining about it.

2004-06-15  Johan Dahlin  <johan@gnome.org>

	* tools/gst-inspect.c (main): Fallback to plugin if no element is
	found. This matches the old behavior better. Thanks to Thomas for
	pointing out.

2004-06-14  David Schleef  <ds@schleef.org>

	* gst/gstcpu.c: (gst_cpuid_i386): Fix problem when using
	-fomit-frame-pointer.  Appears to generate correct code in
	other cases as well.

2004-06-14  Johan Dahlin  <johan@gnome.org>

	* tools/gst-inspect.c (main): Add two new command line options: -a
	to print all elements and -n to print the name on each line. Also
	fix some error reporting.
	(main): Simplify, remove -n and always print names if -a is specified

2004-06-13  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/gstconfig.h:
	* win32/GSTreamer.vcproj:
	* win32/Makefile:
	* gst/gstconfig.h.in:
	* gst/gst.h:
	* gst/gstbin.h:
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstobject.h:
	* gst/gstpad.h:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstconfig.sgml:
          rename GSTREAMER_EXPORT(S) to GST_EXPORT(S)

2004-06-13  Jan Schmidt  <thaytan@mad.scientist.com>
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstconfig.sgml:
	Add the GSTREAMER_EXPORT macro to the docs

2004-06-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* tools/gst-compprep.c: (handle_xmlerror), (main):
	Add a check for the version that introduced SetStructuredError to fix
	the build on FC1

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/msvc71.sln:
	* win32/testsuite/:
          prepare to compile the testsuite with MSVC

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* docs/manual/win32.xml:
          attempt to transform the Win32 README into an XML doc

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gst.c:
	* gst/gstbin.*:
	* gst/config.h.in:
	* gst/gstelement.*:
	* gst/gstevent.h:
	* gst/gstobject.*:
	* gst/gstpad.h:
	* tools/gst-register.c:
	* win32/gstreamer.def:
          extern symbols are now exported for the Windows DLL

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* gst/gstinfo.h:
          fix a problem to enable/disable DEBUG under MSVC

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/:
          enable more debug code in DEBUG build

2004-06-12  Steve Lhomme  <steve.lhomme@free.fr>

	* win32/config.h:
	* gst/gst-i18n-app.h:
          enable NLS under Windows

2004-06-12  Jan Schmidt  <thaytan@mad.scientist.com>
	* tools/gst-compprep.c: (handle_xmlerror), (main):
	  Make an error that baffled me a bit clearer

2004-06-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstqueue.c:
          don't use g_queue_get_length () because it's 2.4, use ->length

2004-06-11  Steve Lhomme  <steve.lhomme@free.fr>

	reviewed by Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* tools/gst-inspect.c: (print_signal_info):
	  don't free random data twice. (fixes #144185)

2004-06-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstqueue.c:
	* gst/gstqueue.h:
	  fix removing from the wrong queue on event timeout
	  fix disposing of the event queue by casting correctly
	  add mutexes for handling the event queue
	  someone was sleeping when fixing queue last time around :)

2004-06-10  Johan Dahlin  <johan@gnome.org>

	* gst/gst.c (gst_init_check_with_popt_table): Do not fail on
	errors, like gtk. It makes it more useful in bindings.  Fixes #141692.

2004-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/gdp:
	* libs/gst/dataprotocol/dataprotocol-test.c: (buffer_test):
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_buffer_from_header):
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/dataprotocol/dp-private.h:
          rev version to 0.1, add buffer flags and copy them

2004-06-09  Johan Dahlin  <johan@gnome.org>

	* gst/gstbuffer.c (gst_buffer_default_copy): Don't forget to merge
	the flags from the buffer we're copying.

2004-06-09  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfakesink.c: (gst_fakesink_chain):
	* gst/elements/gstidentity.c: (gst_identity_init),
	(gst_identity_chain):
	Print more buffer info in fakesink.
	Make identity output similar to fakesink.

2004-06-07  Daniel Gazard  <dany42@free.fr>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* configure.ac:
	  fix cross compiling not working. (fixes #143741)

2004-06-07  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_set_time_delay):
	  add failure check
	* gst/gstinfo.h:
	  put brackets around macro arguments of GST_TIME_ARGS, add note to
	  move it to correct header in 0.9

2004-06-07  Benjamin Otte  <otte@gnome.org>

	* gst/indexers/gstfileindex.c: (gst_file_index_get_writer_id),
	(gst_file_index_load), (_file_index_id_save_entries),
	(gst_file_index_commit), (gst_file_index_add_association),
	(gst_file_index_add_entry), (gst_file_index_get_assoc_entry),
	(gst_file_index_plugin_init):
	  make debugging use a default category

2004-06-06  David Moore  <dcm@acm.org>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init),
	(gst_fdsrc_change_state):
	  reset offset counter when going READY => PAUSED. (fixes #142903)

2004-06-06  ed@catmur.co.uk

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_rebuild_recurse):
	  don't rely on g_dir_open to figure out if a file is a directory, use
	  explicit G_TEST_IS_DIR. Reiserfs4 allows opening files as
	  directories. (fixes #142850)

2004-06-06  Benjamin Otte  <otte@gnome.org>

	* gst/gstqueue.c: (gst_queue_dispose), (gst_queue_change_state):
	  fix memory leaks (fixes #142795). Initial patch by Sebastien Cote
	* libs/gst/bytestream/adapter.c:
	* libs/gst/bytestream/adapter.h:
	  fix copyright in header and typo in debugging category name

2004-06-05  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* configure.ac:
	  bump nano to cvs

=== release 0.8.3 ===

2004-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  update libtool versioning
	  do a new release
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* gst/gstinfo.c: (_gst_debug_init):
	  put back GST_CAT_DATAFLOW to fix API breakage

2004-06-04  David Schleef  <ds@schleef.org>

	* autogen.sh: Add a temporary 'env' to test buildbot problems.

2004-06-04  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* configure.ac:
	  bump nano to cvs

=== release 0.8.2 ===

2004-06-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (parse_debug_list), (gst_init_check_with_popt_table):
	  check GST_DEBUG environment variable which is parsed the same way
	  as --gst-debug=

2004-05-28  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* gst/elements    : gstaggregator.c gstfakesink.c gstfakesrc.c
			    gstmd5sink.c gstshaper.c gsttee.c
			    gsttypefindelement.c
	* gst/schedulers  : gstbasicscheduler.c gstoptimalscheduler.c

	  - removing trailing commas at end of enums
	    it is correct C99 code but C90 compilers would complain
	    (AIX, Forte, ...)
	    ('should' fix #143290, at least partially)

2004-05-27  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_chain),
	(chain_group_set_enabled), (create_group), (add_to_group),
	(merge_groups), (setup_group_scheduler), (group_elements),
	(gst_opt_scheduler_iterate), (gst_opt_scheduler_show):
	Don't try to follow the pad connections with other groups
	when a loop based element is added to the scheduler because
	the bin will inform the scheduler about the pad links a little
	later.

2004-05-27  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
	(remove_from_chain), (chain_group_set_enabled),
	(setup_group_scheduler), (group_element_set_enabled),
	(gst_opt_scheduler_state_transition), (gst_opt_scheduler_iterate),
	(gst_opt_scheduler_show):
	Elements without a group can do a state change as well, just wait
	with the setup of the scheduling function when it is added to a
	chain.

2004-05-27  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
	(remove_from_chain), (chain_group_set_enabled), (add_to_group),
	(merge_groups), (setup_group_scheduler),
	(group_inc_links_for_element), (gst_opt_scheduler_iterate),
	(gst_opt_scheduler_show):
	Fixes to maintain internal consistency of the scheduler data
	structures. 
	 - adding an enabled group to a chain should increment the
	   number of enabled elements in that chain.
         - removing an enabled group from a chain could disable the
	   chain.
	 - removing a disabled group from a chain could enable the
	   chain.
	 - add g_assert when internal inconsistency is detected.
	 - adding an element to a group could increase the number of
	   links this group has with other groups.
	 - merging two groups also merges the chains.
	 - also show group links in the _show method.
	   

2004-05-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.c: (gst_caps_structure_simplify):
	  don't print error messages when there is no error
	* gst/gstvalue.c: (gst_value_compare_int_range):
	  compare the second value, too
	* testsuite/caps/Makefile.am:
	* testsuite/caps/random.c: (assert_on_error), (main):
	  add tests to make sure the two things above are checked for

2004-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_caps):
	* libs/gst/dataprotocol/dataprotocol.h:
          wrap header in GST_ENABLE_NEW.  make code use it

2004-05-23  Johan Dahlin  <johan@gnome.org>

	* tools/gst-inspect.c (main): Cleanup most parts of it, don't be
	so verbose and print GstElement signal names all the time.

2004-05-22  David Schleef  <ds@schleef.org>

	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_parse_padtemplate): Fix warning on OS X.
	(bug #142957)

2004-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  scrub cflags for glib2 so gcc doesn't complain when glib is in
	  /usr/local

2004-05-21  Johan Dahlin  <johan@gnome.org>

	* gst/gstcpu.c (gst_cpuid_i386): Protect some gcc asm stuff with
	__GNUC__, patch from Brian Cameron, fixes bug #142804

2004-05-20  David Schleef  <ds@schleef.org>

	* gst/gstindex.c: (gst_index_compare_func): Fix overflows in
	comparison code.  (bug #142819)

2004-05-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_default_copy):
	* gst/gstbuffer.h:
	Added Comment to a flag.
	copy relevant flags in _buffer_copy.

2004-05-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	reviewed by: Wim Taymans <wim at fluendo dot com>

	* gst/gstbuffer.h:
          add GST_BUFFER_IN_CAPS buffer flag
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_parse_any_list), (gst_structure_parse_list),
	(gst_structure_parse_fixed_list), (gst_structure_parse_value):
	* gst/gstvalue.c: (gst_value_serialize_any_list),
	(gst_value_transform_any_list_string),
	(gst_value_list_prepend_value), (gst_value_list_append_value),
	(gst_value_list_get_size), (gst_value_list_get_value),
	(gst_value_transform_list_string),
	(gst_value_transform_fixed_list_string),
	(gst_value_serialize_list), (gst_value_serialize_fixed_list),
	(gst_value_deserialize_fixed_list), (gst_type_is_fixed),
	(_gst_value_initialize):
	* gst/gstvalue.h:
          add a GST_TYPE_FIXED_LIST which is fixed by definition and uses
          < , > as a format.
	* testsuite/caps/string-conversions.c: (main):
          add regression tests for < >

2004-05-20  Johan Dahlin  <johan@gnome.org>

	* docs/gst/Makefile.am (all-local): Re-add

2004-05-20  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs-docs.sgml:
          fix distcheck issues

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/Makefile.am:
          add to autotest

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event), (gst_dp_event_from_packet):
	* libs/gst/dataprotocol/dp-private.h:
	  use GST macros to read/write fixed length ints
	  add some more asserts

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	  remove idct and putbits
	* configure.ac:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* libs/gst/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol-test.c: (conversion_test),
	(buffer_test), (caps_test), (event_test), (main):
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_crc),
	(gst_dp_dump_byte_array), (gst_dp_init),
	(gst_dp_header_payload_length), (gst_dp_header_payload_type),
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event), (gst_dp_buffer_from_header),
	(gst_dp_caps_from_packet), (gst_dp_event_from_packet),
	(gst_dp_validate_header), (gst_dp_validate_payload),
	(gst_dp_validate_packet), (plugin_init):
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/dataprotocol/dp-private.h:
	  add dataprotocol

2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_value_deserialize_int_helper):
	  fix int variable deserialization and add a helper so we can actually
	  debug this.

2004-05-18  David Schleef  <ds@schleef.org>

	* testsuite/debug/commandline.c: (main): Call ./commandline, not
	  argv[0].  Calling yourself is probably not the best way to
	  construct a test like this, btw.

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbin.c: (gst_bin_iterate_func), (gst_bin_iterate):
	  don't claim to be more intelligent than a scheduler when the
	  scheduler claims the pipeline is stopped
	* gst/schedulers/entryscheduler.c: (safe_cothread_switch),
	(safe_cothread_destroy),
	(gst_entry_scheduler_remove_all_cothreads),
	(gst_entry_scheduler_reset), (_remove_cothread),
	(gst_entry_scheduler_state_transition):
	  hold off cothread destruction if we're not in main cothread
	* configure.ac:
	* testsuite/Makefile.am:
	  add new test dir
	* testsuite/schedulers/.cvsignore:
	* testsuite/schedulers/Makefile.am:
	  add tests
	* testsuite/schedulers/relink.c: (cb_handoff), (main):
	  check relinking and adding/removing elements from a running pipeline
	* testsuite/schedulers/unlink.c: (cb_handoff), (main):
	  check unlinking in a running pipeline
	* testsuite/schedulers/unref.c: (cb_handoff), (main):
	  check unreffing a running pipeline
	* testsuite/schedulers/useless_iteration.c: (main):
	  check iterating a pipeline that contains running threads works

2004-05-18  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Add all-local target for when HAVE_GTK_DOC
          is false.

2004-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
	(setup_group_scheduler), (gst_opt_scheduler_pad_link):
	Fixed an error introduced with patch for 1.63. When setting
	a get based element as the entry point in a group, make sure
	to mark the group as GET based.

2004-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (create_group),
	(setup_group_scheduler), (loop_group_schedule_function),
	(gst_opt_scheduler_pad_link):
	Added some more debug info and fixed a bug where the group
	type was set to LOOP but it was in fact unknown.

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/schedulers/entryscheduler.c: (gst_entry_scheduler_reset):
	  make resetting scheduler work twice in a row

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_strtoll), (CREATE_SERIALIZATION),
	(CREATE_USERIALIZATION), (_gst_value_initialize),
	(gst_value_compare_float), (gst_value_serialize_float),
	(gst_value_deserialize_float), (gst_value_compare_enum),
	(gst_value_serialize_enum), (gst_value_deserialize_enum):
	  add serialization and comparison functions for long, int64, enum and
	  float values
	* gst/gstvalue.c: (gst_value_serialize), (gst_value_deserialize):
	  use best serialization function in type hierarchy instead of only a
	  matching one. This is required for enums to work.
	* gst/parse/grammar.y:
	  use gst_caps_deserialize
	* testsuite/parse/Makefile.am:
	  parse1 now works
	* testsuite/parse/parse1.c: (main):
	  remove aggregator check, aggregator is broken, this test works now
	  but fails because of bug #138012
	* testsuite/parse/parse2.c: (main):
	  s/xvideosink/xvimagesink - this test looks a lot like we should
	  disable it

2004-05-13  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelement.c: (gst_element_class_init):
	  whoops, store the signal id correctly
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chain_wrapper):
	  detect infinfinfinfinfinf^Cinite loops in chain wrapper when the
	  chain function isn't linked

2004-05-13  Jan Schmidt  <thaytan@mad.scientist.com>
	* configure.ac:
	Add $GST_PKG_CFLAGS back into GST_INT_CFLAGS so I have large file
	support until we decide where the flags should be used
	* gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_query):
	Use GST_FORMAT_BYTES when GST_FORMAT_DEFAULT is passed
	* gst/gstpad.c: (gst_pad_link_call_link_functions):
	Output refused caps in the debug info

2004-05-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstidentity.c: (gst_identity_chain):
          add duration debug
	* gst/gstinfo.c: (gst_debug_log_default):
          add timestamp

2004-05-13  Benjamin Otte  <otte@gnome.org>

	* gst/gstpipeline.c: (gst_pipeline_dispose),
	(gst_pipeline_change_state):
	  call gst_scheduler_reset on dispose (fixes #141416)

2004-05-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
	  compute mapsize correctly
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
	  use correct datatypes when calling a varargs function
	* gst/elements/gsttypefindelement.c: (stop_typefinding):
	  push a DISCONT event as first thing
	* gst/gst_private.h:
	* gst/gstinfo.c: (_gst_debug_init):
	  remove GST_DATAFLOW debugging category
	* gst/gstbin.c: (gst_bin_iterate):
	  use GST_SCHEDULING category
	* gst/gstpad.c: (gst_pad_get_type), (_invent_event),
	(gst_pad_push), (gst_pad_pull), (gst_pad_call_chain_function),
	(gst_pad_call_get_function):
	  add GST_DATAFLOW to easily track flow of buffers or events.
	* gst/gstqueue.c: (gst_queue_get_type),
	(gst_queue_handle_pending_events), (gst_queue_chain),
	(gst_queue_get), (gst_queue_handle_src_event):
	  use own static debugging category GST_DATAFLOW for dataflow,
	  use DEBUG category for showing which path events go, use LOG
	  category for buffers.

2004-05-10  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt: Add gst_element_no_more_pads.

2004-05-10  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Dear gtk-doc, please print out the unused
	symbols, because otherwise we don't know what they are.  Thanks,
	the GStreamer team.
	* gst/registries/gstxmlregistry.c: (make_dir): Remove a spurious ;

2004-05-10  David Schleef  <ds@schleef.org>

	(from Steve Lhomme)
	* win32/Makefile: When using make clean the MS Visual Studio makefiles
	are deleted.  Fix.
	* win32/Makefile.inspect:
	* win32/Makefile.launch:
	* win32/Makefile.register:

2004-05-10  David Schleef  <ds@schleef.org>

	* gst/gstinfo.h: Add missing inline function.
	* gst/gsttrace.c: add include
	* gst/parse/grammar.y: remove unused code
	* gst/registries/gstxmlregistry.c: (make_dir): make mkdir call
	more portable.
	* tools/gst-register.c: wrap unistd.h
	
	More additions/fixes from Steve for the MSVC build.
	* win32/GStreamer.vcproj:
	* win32/Makefile:
	* win32/Makefile.inspect:
	* win32/Makefile.launch:
	* win32/Makefile.register:
	* win32/README.txt:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstbytestream.def:
	* win32/gstbytestream.vcproj:
	* win32/gstconfig.h:
	* win32/gstelements.def:
	* win32/gstelements.vcproj:
	* win32/gstenumtypes.c:
	* win32/gstenumtypes.h:
	* win32/gstoptimalscheduler.def:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstreamer.def:
	* win32/gstspider.def:
	* win32/gstspider.vcproj:
	* win32/gstversion.h:
	* win32/msvc71.sln:

2004-05-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_no_more_pads):
	* gst/gstelement.h:
	  add gst_element_no_more_pads and the "no-more-pads" signal

2004-05-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstregistry.c: (gst_registry_add_plugin):
	  refuse to add plugins when a plugin with same name is already
	  registered. Fixes a bunch of "How to remove plugins?" issues.
	  May lead to other problems though, let's test

2004-05-10  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* testsuite/caps/caps_strings : audio/ac3 => audio/x-ac3
	* docs/manual/pads-api.xml : audio/wav => audio/x-wav
	* docs/random/uraeus/gstreamer_and_midi.txt : audio/wav => audio/x-wav

2004-05-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/Makefile.am: fix am16 issue

2004-05-09  Benjamin Otte  <otte@gnome.org>

	* libs/gst/bytestream/Makefile.am:
	  we should indeed add .c files to makefiles or they won't be built
	  (d'oh)

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_proxy_fixate):
	  really reduce the set of caps

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* tests/Makefile.am:
	* tests/spidey_bench.c: (handoff), (main):
	  add benchmark to test how long spider needs to create a pipeline

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_unnegotiate):
	  mark links as unengaged when unnegotiating instead of deactivating.
	  This way pads aren't marked as unengaged when going PLAYING=>PAUSED

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* docs/manual/helloworld.xml:
	  s/audiosink/osssink (patch by Patrick Guimond)

2004-05-07  David Schleef  <ds@schleef.org>

	* configure.ac: Make sure GST_INT_CFLAGS is not clobbered,
	since it contains important stuff.

2004-05-07  David Schleef  <ds@schleef.org>

	* testsuite/caps/caps.c: (test3), (main): A check for appending
	ANY caps.

2004-05-07  David Schleef  <ds@schleef.org>

	* common/m4/as-compiler-flag.m4: Properly quote arguments,
	which may contain commas.  Fixes detection of -Wa,-mregnames

2004-05-06  David Schleef  <ds@schleef.org>

	Changes to handle compilers that don't have variadic macro
	support.  In particular, glib headers define some inlines
	that need G_LOG_DOMAIN defined.  Additional fixes for MSVC
	builds.
	* gst/Makefile.am:
	* gst/cothreads.c:
	* gst/elements/gstfdsink.c:
	* gst/elements/gstfdsrc.c:
	* gst/elements/gstfilesink.c:
	* gst/elements/gstfilesrc.c:
	* gst/gst_private.h:
	* gst/gstatomic.c:
	* gst/gstcaps.c: (gst_caps_append):
	* gst/gstcpu.c: (gst_cpuid_i386):
	* gst/gstelement.c:
	* gst/gsterror.c:
	* gst/gstfilter.c:
	* gst/gstinfo.h:
	* gst/gstprobe.c:
	* gst/gstquery.c:
	* gst/gstregistry.c:
	* gst/gststructure.c:
	* gst/gsttaginterface.c:
	* gst/gsttrace.c: (gst_trace_new):
	* gst/gsttrashstack.c:
	* gst/gsturi.c:
	* gst/gstvalue.c:
	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-xmlinspect.c: (PUT_STRING):

2004-05-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_change_state), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
	  send NEW_MEDIA events correctly
	* gst/elements/gsttypefindelement.c: (start_typefinding),
	(gst_type_find_element_handle_event):
	  restart typefinding when we get a NEW_MEDIA event
	* gst/gstbin.c: (gst_bin_remove_func), (gst_bin_change_state),
	(gst_bin_dispose):
	  don't die when someone removes elements in callbacks
	* gst/gstelement.c: (gst_element_change_state):
	  improve debugging
	* gst/gstpad.c: (gst_pad_pull), (gst_pad_call_chain_function):
	  we need a NEW_MEDIA event to engage a link
	* gst/gsttrace.c: (gst_trace_new), (gst_alloc_trace_set_flags_all):
	  don't g_print debugging stuff
	* testsuite/caps/simplify.c: (check_caps):

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* gst/parse/grammar.y:
	  use GST_ERROR instead of g_warning, and always throw a GST_ERROR 

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* testsuite/caps/renegotiate.c: (main):
	  improve output in error case

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* gst/parse/grammar.y:
	  fix assert to not trigger when there's no error argument
	* gst/parse/parse.l:
	  fix definition of caps to allow more than two structures
	* testsuite/caps/Makefile.am:
	* testsuite/caps/renegotiate.c: (main):
	  it's sinesrc and works in that case

2004-05-04  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
	(group_dec_link), (gst_opt_scheduler_pad_unlink):
	when removing an element from a group, we always need to
	decrement the link count that this group had with other 
	groups through the element.
	added an extra assert to catch inconsistencies when decrementing
	the link count.

2004-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstcompat.sgml:
	* examples/appreader/Makefile.am:
	* examples/cutter/Makefile.am:
	* examples/events/Makefile.am:
	* examples/helloworld/Makefile.am:
	* examples/helloworld2/Makefile.am:
	* examples/launch/Makefile.am:
	* examples/manual/Makefile.am:
	* examples/mixer/Makefile.am:
	* examples/pingpong/Makefile.am:
	* examples/plugins/Makefile.am:
	* examples/queue/Makefile.am:
	* examples/queue2/Makefile.am:
	* examples/queue3/Makefile.am:
	* examples/queue4/Makefile.am:
	* examples/retag/Makefile.am:
	* examples/thread/Makefile.am:
	* examples/typefind/Makefile.am:
	* examples/xml/Makefile.am:
	* gst/Makefile.am:
	* gst/autoplug/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/gstcompat.h:
	* gst/indexers/Makefile.am:
	* gst/parse/Makefile.am:
	* gst/registries/Makefile.am:
	* gst/schedulers/Makefile.am:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/control/Makefile.am:
	* libs/gst/getbits/Makefile.am:
	* po/af.po:
	* po/az.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* tests/Makefile.am:
	* tests/bufspeed/Makefile.am:
	* tests/instantiate/Makefile.am:
	* tests/memchunk/Makefile.am:
	* tests/muxing/Makefile.am:
	* tests/negotiation/Makefile.am:
	* tests/probes/Makefile.am:
	* tests/sched/Makefile.am:
	* tests/seeking/Makefile.am:
	* tests/threadstate/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/cleanup/Makefile.am:
	* testsuite/dlopen/Makefile.am:
	* testsuite/dynparams/Makefile.am:
	* testsuite/plugin/Makefile.am:
	* testsuite/states/Makefile.am:
	* tools/Makefile.am:
          reorganize compile/link flags to be consistent
          put gst_info in gstcompat.h and actually use GST_DISABLE_DEPRECATED

2004-05-04  David Schleef  <ds@schleef.org>

	The "once more, with feeling" check-in.
	* testsuite/caps/Makefile.am: dist caps_strings
	* testsuite/caps/renegotiate.c: (main): This test triggers a
	  segfault in the core.  Marking as failing.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/deserialize.c: (main): Fix problems noticed
	  by the build bots.
	* testsuite/caps/renegotiate.c: (main): Same.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/renegotiate.c: (my_fixate), (main): Another test.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/deserialize.c: (main): Use the srcdir environment
	  variable to find our source file.

2004-05-03  David Schleef  <ds@schleef.org>

	* configure.ac:  Link plugins with libgstreamer and dependent
	  libraries
	* testsuite/caps/Makefile.am:
	* testsuite/caps/caps_strings:
	* testsuite/caps/deserialize.c: (main): Add a little test to slog
	  through a file of caps strings and test each one

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* libs/gst/bytestream/Makefile.am:
	* libs/gst/bytestream/adapter.c: 
	* libs/gst/bytestream/adapter.h:
	  add GstAdapter, similar to bytestream, but doesn't require ugly event
	  handling or uglier loopbased elements

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/Makefile.am: Fix spelling of ??????????????????????
	* testsuite/caps/erathostenes.c:
	* testsuite/caps/eratosthenes.c: (eratosthenes), (main):

2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/pwg.xml:
          remove hardcoded stylesheet path (duh)
	* docs/random/release:
	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstcaps.c:
	* gst/gstevent.c:
	* gst/gstformat.c:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstinterface.c:
	* gst/gstmemchunk.c:
	* gst/gstprobe.c:
	* gst/gstquery.c:
	* gst/gstregistry.c:
	* gst/gstregistrypool.c:
	* gst/gststructure.c:
	* gst/gsttaginterface.c:
	* gst/gstthread.c:
	* gst/gsttrace.c:
	* gst/gsttypefind.c: (gst_type_find_factory_get_type):
	* gst/gsturi.c:
	* gst/gstvalue.c:
          deprecate gst_info; remove gstlog.h
   

2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* po/en_GB.po:
	* po/sv.po:
	* po/uk.po:
          updated translations

2004-05-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbin.c: (gst_bin_dispose):
	  better debugging

2004-05-03  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Check if element is non-NULL and
	really is a GstElement. Avoids critical when running gst-launch -v
	and a oggdemux/decoding pipeline.

2004-05-02  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/gst/tmpl/gstpipeline.sgml :
	* docs/manual/elements-api.xml :
		doc fix by Patrick Guimond (Protector) from devel ML
		reviewed by ronald

2004-05-02  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/gst/Makefile.am :
	* docs/libs/Makefile.am :
		apply a patch from Arwed v. Merkatz so that gtk-doc
		generated docs install (same for .devhelp file)
		(fixes part 1 of #138836)

2004-04-30  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/faq/dependencies.xml: typo
	* docs/faq/getting.xml :
	    - fix download URL for new gstreamer site
	    - hide sf.net download page as latest version aren't there
	    - fix apt URLs
	    - fill "get via CVS" paragraph (link to dev page on the site)
	* docs/faq/general.xml:
	    hide status tables as they no more exists
	    change case on plugins license file to reflect reality
	* docs/faq/troubleshooting.xml:
	    remove the wiki question/answer as there is no more wiki

2004-04-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h:
          include the headers needed for declarations used in this header

2004-04-30  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/random/uraeus/gstreamer_and_midi.txt :
	  add .kar (midi + karaoke/lyrics 'track') doc to midi doc.
	  (fixes #132288)

2004-04-30  Sebastien Cote  <sc5@hermes.usherb.ca>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gthread-cothreads.h:
	  free allocated data for main cothread, too when destroying context
	  (fixes #141417)

2004-04-29  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/manual/goals.xml : remove duplicated paragraph at end 
	of doc page (fixes #141448)

2004-04-29  David Schleef  <ds@schleef.org>

	* gst/elements/gstfilesink.c: (gst_filesink_handle_event):
	Patch from Sebastien Cote to fix leakage of events. (bug #141414)

2004-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
          fix property
	* gst/gstcaps.c:
          fix doc string
	* po/POTFILES.in:
          rename typefind source file

2004-04-28  David Schleef  <ds@schleef.org>

	Several new files from Steve Lhomme's MSVC patch (bug #141317):
	* win32/GStreamer.vcproj:
	* win32/Makefile:
	* win32/config.h:
	* win32/dirent.c: (_topendir), (_treaddir), (_tclosedir),
	(_trewinddir), (_ttelldir), (_tseekdir):
	* win32/dirent.h:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstbytestream.vcproj:
	* win32/gstelements.vcproj:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstspider.vcproj:
	* win32/gtchar.h:
	* win32/mman.c: (mmap), (mprotect), (msync), (munmap):
	* win32/mman.h:
	* win32/mman.inl:
	* win32/msvc71.sln:

2004-04-29  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gst.c: (init_post):
	* gst/gstinfo.c:
	  remove useless _gst_progname stuff
	* tools/gst-inspect.c: (print_field), (print_caps):
	  improve caps output

2004-04-28  David Schleef  <ds@schleef.org>

	Disable parsing of a lot of files that aren't part of the
	exported API.  Move corresponding template files to old/,
	waiting for removal when they don't contain anything
	interesting.
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/cothreads.sgml:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gettext.sgml:
	* docs/gst/tmpl/gobject2gtk.sgml:
	* docs/gst/tmpl/grammar.tab.sgml:
	* docs/gst/tmpl/gst-i18n-app.sgml:
	* docs/gst/tmpl/gst-i18n-lib.sgml:
	* docs/gst/tmpl/gst_private.sgml:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstarch.sgml:
	* docs/gst/tmpl/gstatomic_impl.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstdata_private.sgml:
	* docs/gst/tmpl/gstdisksink.sgml:
	* docs/gst/tmpl/gstdisksrc.sgml:
	* docs/gst/tmpl/gstelementfactory.sgml:
	* docs/gst/tmpl/gstextratypes.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gsthttpsrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstindexfactory.sgml:
	* docs/gst/tmpl/gstmarshal.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultidisksrc.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstschedulerfactory.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gsttimecache.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypefindfactory.sgml:
	* docs/gst/tmpl/gstxmlregistry.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/gst/tmpl/old/cothreads.sgml:
	* docs/gst/tmpl/old/cothreads_compat.sgml:
	* docs/gst/tmpl/old/gettext.sgml:
	* docs/gst/tmpl/old/gobject2gtk.sgml:
	* docs/gst/tmpl/old/grammar.tab.sgml:
	* docs/gst/tmpl/old/gst-i18n-app.sgml:
	* docs/gst/tmpl/old/gst-i18n-lib.sgml:
	* docs/gst/tmpl/old/gst_private.sgml:
	* docs/gst/tmpl/old/gstaggregator.sgml:
	* docs/gst/tmpl/old/gstarch.sgml:
	* docs/gst/tmpl/old/gstatomic_impl.sgml:
	* docs/gst/tmpl/old/gstbufferstore.sgml:
	* docs/gst/tmpl/old/gstdata_private.sgml:
	* docs/gst/tmpl/old/gstdisksink.sgml:
	* docs/gst/tmpl/old/gstdisksrc.sgml:
	* docs/gst/tmpl/old/gstelementfactory.sgml:
	* docs/gst/tmpl/old/gstextratypes.sgml:
	* docs/gst/tmpl/old/gstfakesink.sgml:
	* docs/gst/tmpl/old/gstfakesrc.sgml:
	* docs/gst/tmpl/old/gstfdsink.sgml:
	* docs/gst/tmpl/old/gstfdsrc.sgml:
	* docs/gst/tmpl/old/gstfilesink.sgml:
	* docs/gst/tmpl/old/gstfilesrc.sgml:
	* docs/gst/tmpl/old/gsthttpsrc.sgml:
	* docs/gst/tmpl/old/gstidentity.sgml:
	* docs/gst/tmpl/old/gstindexfactory.sgml:
	* docs/gst/tmpl/old/gstmarshal.sgml:
	* docs/gst/tmpl/old/gstmd5sink.sgml:
	* docs/gst/tmpl/old/gstmultidisksrc.sgml:
	* docs/gst/tmpl/old/gstmultifilesrc.sgml:
	* docs/gst/tmpl/old/gstpadtemplate.sgml:
	* docs/gst/tmpl/old/gstpipefilter.sgml:
	* docs/gst/tmpl/old/gstschedulerfactory.sgml:
	* docs/gst/tmpl/old/gstsearchfuncs.sgml:
	* docs/gst/tmpl/old/gstshaper.sgml:
	* docs/gst/tmpl/old/gstspider.sgml:
	* docs/gst/tmpl/old/gstspideridentity.sgml:
	* docs/gst/tmpl/old/gststatistics.sgml:
	* docs/gst/tmpl/old/gsttee.sgml:
	* docs/gst/tmpl/old/gsttimecache.sgml:
	* docs/gst/tmpl/old/gsttypefindfactory.sgml:
	* docs/gst/tmpl/old/gstxmlregistry.sgml:
	* docs/gst/tmpl/old/gthread-cothreads.sgml:
	* docs/gst/tmpl/old/types.sgml:
	* docs/gst/tmpl/types.sgml:

	Rename gsttypefind.[ch] back to gsttypefindelement.[ch], since
	gtkdoc-scan doesn't like files with the same name in different
	directories.
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gsttypefind.c: 
	* gst/elements/gsttypefind.h:
	* gst/elements/gsttypefindelement.c:
	* gst/elements/gsttypefindelement.h:

2004-04-28  David Schleef  <ds@schleef.org>

	A bunch of portability fixes, derived from Steve Lhomme's MSVC
	patch (bug #141317):
	* gst/gst-i18n-lib.h: Allow disabling gettext.
	* gst/gstatomic_impl.h: disable warning when it's dumb.
	* gst/gstclock.c: fix include
	* gst/gstcompat.h: fix variadic macro
	* gst/gstinfo.c: fix include
	* gst/gstmacros.h: add defines for inlines on MSVC
	* gst/gstplugin.c: fix includes
	* gst/gstregistry.c: fix includes
	* gst/gstregistry.h: use S_IREAD, etc., if S_IRUSR isn't defined
	* gst/gstsystemclock.c: fix include
	* gst/gsttrace.c: (gst_trace_new), (gst_trace_text_flush): use
	S_IREAD if S_IRUSR isn't defined.  fix use of non-portable functions
	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_parse_element_factory): fix use of non-portable
	functions
	* libs/gst/control/dparam.h: Remove trailing comma in enum definition
	* libs/gst/control/dparammanager.h: same

2004-04-28  David Schleef  <ds@schleef.org>

	Move a bunch of unused files to old/ with names that are
	not case-insensitive-unique.  These files still contain some
	useful information that needs to be merged into gstbin.sgml,
	etc., so they shouldn't be deleted yet.
	* docs/gst/tmpl/GstBin.sgml:
	* docs/gst/tmpl/GstBuffer.sgml:
	* docs/gst/tmpl/GstCaps.sgml:
	* docs/gst/tmpl/GstClock.sgml:
	* docs/gst/tmpl/GstCompat.sgml:
	* docs/gst/tmpl/GstData.sgml:
	* docs/gst/tmpl/GstElement.sgml:
	* docs/gst/tmpl/GstEvent.sgml:
	* docs/gst/tmpl/GstIndex.sgml:
	* docs/gst/tmpl/GstStructure.sgml:
	* docs/gst/tmpl/GstTag.sgml:
	* docs/gst/tmpl/old/GstBin.sgml:
	* docs/gst/tmpl/old/GstBuffer.sgml:
	* docs/gst/tmpl/old/GstCaps.sgml:
	* docs/gst/tmpl/old/GstClock.sgml:
	* docs/gst/tmpl/old/GstCompat.sgml:
	* docs/gst/tmpl/old/GstData.sgml:
	* docs/gst/tmpl/old/GstElement.sgml:
	* docs/gst/tmpl/old/GstEvent.sgml:
	* docs/gst/tmpl/old/GstIndex.sgml:
	* docs/gst/tmpl/old/GstStructure.sgml:
	* docs/gst/tmpl/old/GstTag.sgml:

2004-04-28  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_copy), (gst_caps_free),
	(gst_caps_append), (gst_caps_append_structure),
	(gst_caps_get_size), (gst_caps_get_structure), (gst_caps_copy_1),
	(gst_caps_set_simple), (gst_caps_set_simple_valist),
	(gst_caps_is_any), (gst_caps_is_empty), (gst_caps_is_chained),
	(gst_caps_is_fixed), (gst_caps_is_always_compatible),
	(gst_caps_intersect), (gst_caps_normalize),
	(gst_caps_transform_to_string):  Patch from Tim-Philipp Müller
	to fix GST_CAPS() and GST_IS_CAPS(). (bug #141304)
	* gst/gstcaps.h: use GST_IS_CAPS().

2004-04-26  David Schleef  <ds@schleef.org>

	* gst/gstcpu.c: (gst_cpuid_i386): Don't clobber ebx in inline
	assembly.  gcc doesn't handle it correctly. (bug #141083)
	* gst/gsttrashstack.h: same

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_change_state):
	  fix assertion to do an int comparison

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	  better debugging output on error

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract):
	  fix memleak

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstvalue.c: (gst_value_compare_buffer),
	(_gst_value_initialize):
	  add comparison function for buffers

2004-04-22  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/pwg.xml:
	  Just found out that this so-called "ima-wav" format is really
	  just "dvi adpcm" (according to the MS WAV documentation). So
	  renaming it. We didn't use it yet anyway.

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_is_always_compatible):
	  call gst_caps_is_subset

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract), (gst_caps_is_equal), 
	(gst_caps_is_subset):
	  add documentation

2004-04-23  Benjamin Otte  <otte@gnome.org>
	  
	* gst/gstcaps.c: (gst_caps_structure_subtract_field),
	(gst_caps_structure_subtract), (gst_caps_subtract),
	(gst_caps_structure_figure_out_union),
	(gst_caps_structure_simplify), (gst_caps_do_simplify):
	  fix simplifying and subtracting not working correctly with optional
	  properties
	  solve assorted problems that make it now simplify ebven more
	* docs/gst/tmpl/gstcaps.sgml:
	* gst/gstcaps.h:
	  make gst_caps_do_simplify return a bool to indicate if it simplified
	* testsuite/caps/simplify.c: (main):
	  add more checks. The tests is quite a bit useless right now because
	  the core is heavily simplifying itself.
	* testsuite/caps/caps.h:
	  fix caps to contain all optional properties

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	  update for recent API changes
	* gst/gstcaps.c: (gst_caps_do_simplify):
	  fix to stop trying with a freed structure
	* gst/gstpad.c: (gst_pad_link_fixate):
	  simplify caps
	* gst/gstpad.c: (gst_pad_template_get_caps_by_name):
	  remove C++ comment
	* gst/gstpad.h:
	  deprecate gst_pad_template_get_caps_by_name, it doesn't work anyway
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_to_string):
	  keep the correct type when using lists of ranges
	* gst/gstvalue.c: (gst_value_list_prepend_value),
	(gst_value_list_append_value):
	  copy the value before adding to the list (d'oh)
	* gst/gstvalue.c: (gst_value_subtract_int_range_int),
	(gst_value_subtract_int_range_int_range):
	  handle overflows correctly
	* gst/gstvalue.c: (gst_value_subtract_from_list):
	  fix memleak
	* testsuite/caps/caps.h:
	  add a caps that caused segfaults

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* testsuite/refcounting/pad.c: (main):
	  fix test

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract):
	  allow subtracting ANY and EMPTY from ANY caps

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_append), (gst_caps_intersect),
	(gst_caps_union):
	  only simplify in functions that create new caps. Simplifying in
	  gst_caps_append breaks tests.

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_structure_simplify):
	  unset GValue after use
	* gst/gstcaps.c: (gst_caps_append), 
	* gst/gstpad.c: (gst_pad_link_fixate), (gst_pad_template_new):
	  use gst_caps_simplify (reduces registry size by 30%)
	* gst/gstpad.c: (gst_pad_template_new):
	  don't allow NULL caps

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* docs/gst/gstreamer-sections.txt:
	  add gst_caps_do_simplify
	* gst/gstcaps.c:
	  add documentation for gst_caps_do_simplify
	* gst/gstvalue.h:
	  fix typo in gst_value_register_subtract_func declaration for gst-doc

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_from_string_inplace):
	  fix bug when converting from empty string.
	* gst/gstcaps.c: (gst_caps_new_any), (gst_caps_new_simple),
	(gst_caps_new_full_valist), (gst_caps_copy), (gst_caps_copy_1):
	  use gst_caps_new_empty to allocate a new caps. Only that function
	  allocates memory for caps now.
	* gst/gstcaps.c: (gst_caps_remove_and_get_structure),
	(gst_caps_remove_structure):
	  add ability to remove one structure (but not to header yet)
	* gst/gstcaps.c: (gst_caps_compare_structures),
	(gst_caps_simplify), (gst_caps_structure_figure_out_union),
	(gst_caps_structure_simplify), (gst_caps_do_simplify),
	* gst/gstcaps.h:
	  add gst_caps_do_simplify that tries to simplify a caps in place.
	  Deprecate old gst_caps_simplify function.
	* testsuite/caps/caps.h:
	  add caps.h containing a common set of caps to test against.
	* testsuite/caps/sets.c: (check_caps), (main):
	  use it.
	* testsuite/caps/.cvsignore:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/simplify.c: (check_caps), (main):
	  add test to check correctness and efficency of caps simplification.

2004-04-22  Sebastien Cote <sc5@hermes.usherb.ca>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/gstparse.c: (_gst_parse_escape):
	  Free the GString used in _gst_parse_escape()

2004-04-21  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_link_negotiate):
	  refuse to link if the link is not possible
	* configure.ac:
	* testsuite/Makefile.am:
	* testsuite/negotiation/.cvsignore:
	* testsuite/negotiation/Makefile.am:
	* testsuite/negotiation/pad_link.c: (main):
	  add test that checks the above behaviour

2004-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          add newly added API

2004-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_get_mmap), (gst_filesrc_get_read), (gst_filesrc_get),
	(gst_filesrc_open_file), (gst_filesrc_close_file),
	(gst_filesrc_srcpad_query), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
          add support for non-regular files (#140734)

2004-04-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_link_fixate):
	  add sophisticated error checking code to see if fixation functions
	  did their fixation right

2004-04-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_append), (gst_caps_union):
	  check for ANY caps before appending/unioning
	* gst/gstcaps.c: (gst_caps_is_subset),
	(gst_caps_is_equal), (gst_caps_structure_subtract_field),
	(gst_caps_structure_subtract), (gst_caps_subtract):
	* gst/gstcaps.h:
	  add gst_caps_is_equal, gst_caps_is_subset and gst_caps_subtract to
	  the API. deprecate gst_caps_is_equal_fixed
	* gst/gstpad.c: (gst_pad_try_set_caps):
	* gst/gstqueue.c: (gst_queue_link):
	  s/gst_caps_is_equal_fixed/gst_caps_is_equal/
	* gst/gststructure.c: (gst_structure_get_name_id):
	* gst/gststructure.h:
	  add function gst_structure_get_name_id
	* gst/gstvalue.c: (gst_value_subtract_int_int_range),
	(gst_value_create_new_range), (gst_value_subtract_int_range_int),
	(gst_value_subtract_int_range_int_range),
	(gst_value_subtract_double_double_range),
	(gst_value_subtract_double_range_double),
	(gst_value_subtract_double_range_double_range),
	(gst_value_subtract_from_list), (gst_value_subtract_list),
	(gst_value_can_intersect), (gst_value_subtract),
	(gst_value_can_subtract), (gst_value_register_subtract_func),
	(_gst_value_initialize):
	* gst/gstvalue.h:
	  add support for subtracting values from each other. Note that
	  subtracting means subtracting as in set theory. Required for caps
	  stuff above.
	* testsuite/caps/.cvsignore:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/erathostenes.c: (erathostenes), (main):
	* testsuite/caps/sets.c: (check_caps), (main):
	* testsuite/caps/subtract.c: (check_caps), (main):
	  add tests for subtraction and equality code.

2004-04-20  David Schleef  <ds@schleef.org>

	* gst/autoplug/Makefile.am:  Fix some little buglets in last checkin.
	* gst/indexers/Makefile.am:
	* gst/schedulers/Makefile.am:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/control/Makefile.am:
	* libs/gst/getbits/Makefile.am:

2004-04-20  David Schleef  <ds@schleef.org>

	* common/as-libtool.mak: Fine-tune DLL building.
	* configure.ac: Link plugins against libgstreamer.  Define plugindir
	(like gst-plugins)
	* examples/plugins/Makefile.am: remove plugindir
	* gst/autoplug/Makefile.am: DLL building fixes
	* gst/elements/Makefile.am: DLL building fixes.  Disable pipefilter on
	Windows.
	* gst/elements/gstelements.c: Conditionally disable pipefilter.
	* gst/indexers/Makefile.am: DLL building fixes
	* gst/schedulers/Makefile.am: DLL building fixes.
	* libs/gst/bytestream/Makefile.am: DLL building fixes.
	* libs/gst/control/Makefile.am: same
	* libs/gst/getbits/Makefile.am: same
	* testsuite/Makefile.am: New dlopen directory
	* testsuite/dlopen/Makefile.am: Tests to check if libgstreamer works
	when dlopened.
	* testsuite/dlopen/dlopen_gst.c: (main): same
	* testsuite/dlopen/loadgst.c: (do_test): same

2004-04-20  David Schleef  <ds@schleef.org>

	* gst/parse/grammar.y:  Apply patch from Sebastien Cote
	<sc5@hermes.usherb.ca> to fix a memleak. (bug #140594)

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_wait),
	(gst_element_set_time_delay), (gst_element_change_state):
          Use GST_TIME_*

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspider.c: (gst_spider_link_sometimes),
	(gst_spider_identity_plug):
	  improve debugging messages
	* gst/gstbin.c: (gst_bin_remove_func):
	  make sure the state_change function is only called with simple state
	  transitions

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfakesink.c: (gst_fakesink_state_error_get_type),
	(gst_fakesink_set_property), (gst_fakesink_chain):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_set_property):
	* gst/elements/gstfdsrc.c: (gst_fdsrc_set_property):
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_property):
	* gst/elements/gstidentity.c: (gst_identity_chain),
	(gst_identity_set_property):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_set_property):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_set_property):
          add warnings to _set_property for unknown arguments
          use GST_TIME_FORMAT/GST_TIME_ARGS for timestamp printing

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* docs/manuals.mak:
          add .po file download snippet
          fix a bug in the doc makefile

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* po/LINGUAS:
	* po/en_GB.po:
          Added en_GB translation (Gareth Owen)

2004-04-20  Johan Dahlin  <johan@gnome.org>

	* gst/gstpad.c (_invent_event): Clean up

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* testsuite/caps/filtercaps.c: (main):
	  fix test to test things correctly (caps are complicated)

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* testsuite/caps/Makefile.am:
	* testsuite/caps/filtercaps.c: (main):
	  add test (that doesn't work right now, but should)

2004-04-19  David Schleef  <ds@schleef.org>

	* configure.ac: Add test for allowing unaligned access.  Add define
	to put in gstconfig.h.
	* docs/gst/gstreamer-sections.txt: New symbols
	* docs/gst/tmpl/gstcompat.sgml: Check in changes made by gtkdoc
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* gst/gstconfig.h.in: Add GST_HAVE_UNALIGNED_ACCESS
	* gst/gstutils.h: Add macros for unaligned memory access.  Useful
	on most !i386/!powerpc architectures.  From Daniel Gazard
	<daniel.gazard@free.fr>.  (bug #140156)
	* po/af.po: Check in changes made by gettext.
	* po/az.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:

2004-04-20  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: 
	(gst_entry_scheduler_yield):
	  refuse to yield when decoupled elements insist on doing that.
	  At least it's better than crashing

2004-04-19  David Schleef  <ds@schleef.org>

	* docs/libs/Makefile.am: Change sinclude to include
	* docs/gst/Makefile.am: same
	* pkgconfig/Makefile.am:  Remove GNU-ism from makefile target

2004-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/uk.po:
          Added Ukrainian translation (Maxim V. Dziumanenko)

2004-04-19  Johan Dahlin  <johan@gnome.org>

	* gst/parse/grammar.y (__gst_parse_chain_free): Don't do null
	checking here, do it before calling the function.
	Clean up, use for loops instead of while loops while iterating
	over lists.

	* gst/autoplug/gstspider.c (gst_spider_request_new_pad): Fix typo
	in debug message.
	(gst_spider_create_and_plug): Improve debug message.
	General: Replace while loops which iterates over GLists with for
	loops. Which are much cleaner, improves readability, especially
	for gst_spider_identity_plug

	* gst/gstpad.c (_invent_event): Fix parameters to warning macros,
	fixes bug 140477

2004-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/tr.po:
          Added Turkish translation (Baris Cicek)

2004-04-18  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/faq/troubleshooting.xml:
	  Mention gst-register in the FAQ (fixes 139045).

2004-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:

2004-04-17  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_dispose):
	  simplify
	* gst/gstpad.c: (gst_pad_call_chain_function):
	  don't create loads of events due to bad macro usage

2004-04-16  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_is_fixed_foreach):
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach):
	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (gst_type_is_fixed),
	(_gst_value_initialize): Create a new function gst_type_is_fixed()
	to indicate types that are fixed wrt caps or not.  Switching to
	this function fixes (bug #140298).
	* gst/gstvalue.h:

2004-04-16  David Schleef  <ds@schleef.org>

	* common/m4/gst-arch.m4:  Implmenent a whitelist and blacklist
	for GST_UNALIGNED_ACESS, since we essentially know which archs
	are ok.

2004-04-17  Benjamin Otte  <otte@gnome.org>

	* docs/gst/Makefile.am:
	  ignore gst/parse directory when building docs (fixes #140205)

2004-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/refcounting/mem.c: (vmsize):
          do error checking

2004-04-16  Johan Dahlin  <johan@gnome.org>

	* docs/gst/gstreamer-sections.txt: Add gst_pad_call_chain_function
	and gst_pad_call_get_function.

2004-04-15  David Schleef  <ds@schleef.org>

	* common/m4/gst-arch.m4: Add GST_UNALIGNED_ACCESS() macro that
	checks if we can access unaligned memory.
	* configure.ac: Use it.

2004-04-16  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get),
	(gst_filesrc_change_state), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
	  s/seek_happened/need_discont/ and require discont before sending any
	  data

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (_gst_value_initialize):
	Register these types as fundamental types. (bug #140015)

2004-04-16  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_new),
	(gst_pad_link_free), (gst_pad_link_try), (_invent_event),
	(gst_pad_pull):
	  implement enforcing discont events before buffers are passed. This
	  allows state changes of only some elements and later correctly going
	  on where they left off (or in short: you can now set audio sinks to
	  NULL to release the device when the pipeline is paused)
	* gst/gstpad.c: (gst_pad_call_chain_function),
	(gst_pad_call_get_function):
	* gst/gstpad.h:
	  add gst_pad_call_chain_function and gst_pad_call_get_function for
	  scheduler interaction. They are required because of the changes
	  above.
	* gst/schedulers/entryscheduler.c: (get_buffer),
	(gst_entry_scheduler_chain_wrapper),
	(gst_entry_scheduler_get_wrapper),
	(gst_entry_scheduler_state_transition),
	(gst_entry_scheduler_pad_link):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chain_wrapper),
	(gst_basic_scheduler_src_wrapper),
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain),
	(gst_basic_scheduler_chain_elements):
	* gst/schedulers/gstoptimalscheduler.c:
	(get_group_schedule_function), (pad_clear_queued),
	(gst_opt_scheduler_pad_link):
	  use the new functions instead of calling get/chain-functions
	  directly.

2004-04-15  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt: Remove deprecated symbols.
	* docs/gst/tmpl/gstinfo.sgml: same
	* docs/gst/tmpl/gstutils.sgml: Remove a bunch of bogus crap that
	gtk-doc put here.
	* gst/gstutils.h: Remove the \ that was confusing gtk-doc.
	* examples/queue/queue.c: (main):  We iterate pipelines, not
	bins.  (bug #139996)

2004-04-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Add MS RLE support. Also document Qt RLE although I have no sample
	  files for that yet. And document an extra property for ADPCM.

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: (_gst_plugin_fault_handler_restore),
	(_gst_plugin_fault_handler_setup):  Disable more stuff on
	Windows.

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstinfo.c: (_gst_debug_init): Change some internal
	symbol names to not conflict with new gstinfo.h symbols.
	* gst/gstinfo.h: Add inline functions for all those crazy
	compilers that don't know how to handle variadic macros (MSVC).

2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.8.1 ===

2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
          releasing 0.8.1, "Snow Brigade"

2004-04-14  David Schleef  <ds@schleef.org>

	* testsuite/Makefile.am: define tests_ignore
	* testsuite/Rules: Added new tests_ignore, which get compiled,
	but not run (generally because they're inconsistent or have
	heisenbugs).  Now we can ensure all the .c files compile in
	testsuite/.
	* testsuite/bins/Makefile.am: define tests_ignore
	* testsuite/bytestream/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/clock/Makefile.am:
	* testsuite/debug/Makefile.am:
	* testsuite/debug/global.c: (gst_debug_log_one),
	(gst_debug_log_two): Fix compilation problem.
	* testsuite/dynparams/Makefile.am:
	* testsuite/elements/Makefile.am:
	* testsuite/ghostpads/Makefile.am:
	* testsuite/indexers/Makefile.am:
	* testsuite/parse/Makefile.am:
	* testsuite/plugin/Makefile.am:
	* testsuite/refcounting/Makefile.am:
	* testsuite/refcounting/element_pad.c: (main): Don't return leak
	results, because it's not calculated correctly.
	* testsuite/refcounting/pad.c: (main): same
	* testsuite/states/Makefile.am:
	* testsuite/tags/Makefile.am:
	* testsuite/threads/Makefile.am:

2004-04-14  David Schleef  <ds@schleef.org>

	* gst/gstcpu.c: (gst_cpuid_i386): Add workaround for gcc-3.2
	generating bad code around the cpu detection asm code.

2004-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-inspect.c: (print_element_info):
          print numeric version of rank as well, since we added some - 1
          rank values to elements

2004-04-13  David Schleef  <ds@schleef.org>

	* configure.ac:  Disable various code when compiling for MinGW.
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstfdsrc.c: (gst_fdsrc_get):
	* gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get):
	* gst/registries/gstxmlregistry.c: (make_dir):

2004-04-13  David Schleef  <ds@schleef.org>

	* gst/Makefile.am:
	* gst/gstcpu.c: (gst_cpuid_i386): Convert asm source into inline
	assembly.
	* gst/gstcpuid_i386.s: remove

2004-04-13  David Schleef  <ds@schleef.org>

	* docs/gst/tmpl/gstaggregator.sgml: Random checkin because gtk-doc
	seems to think it needs to be done.
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gstutils.sgml:

2004-04-13  David Schleef  <ds@schleef.org>

	* configure.ac: Changes to remove POSIXisms (mmap in this case)
	and to build DLLs on Windows.
	* gst/Makefile.am:
	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_open_file):
	* gst/schedulers/Makefile.am:

2004-04-13  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_structure_fixate_field_nearest_int),
	(gst_caps_structure_fixate_field_nearest_double):  Fix bug in
	fixating lists.

2004-04-12  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (_gst_buffer_initialize), (gst_buffer_get_type),
	(gst_buffer_free_chunk): Added gst_buffer_get_type() and changed
	to using it.
	* gst/gstbuffer.h: Changed GST_BUFFER_TYPE to gst_buffer_get_type()
	* gst/gstcaps.c: (gst_caps_is_fixed_foreach): Buffer is a fixed type
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach): same
	* gst/gststructure.c: (gst_structure_set_valist),
	(gst_structure_from_abbr), (gst_structure_to_abbr): Add vararg
	support for buffers.
	* gst/gsttag.c: (gst_tag_register): Constify a prototype that was
	intended to be const.
	* gst/gsttag.h: same
	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (_gst_value_initialize):  Add code
	to (de)serialize buffers.
	* testsuite/caps/Makefile.am:  Add a bit of buffer testing
	* testsuite/caps/string-conversions.c: (main):
	* testsuite/caps/value_serialize.c: add new test

2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Document MS video 1 (video/x-msvideocodec) mimetype/format.

2004-04-11  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c: (plugin_init):
	  rename categories to basic_*
	* gst/schedulers/gstbasicscheduler.c: 
	(gst_basic_scheduler_chain_wrapper),
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_eventhandler_proxy):
	  debugging category fixes - put common stuff in log category
	* gst/schedulers/gstbasicscheduler.c: 
	(gst_basic_scheduler_chain_elements):
	  dirty fix: call gst_basic_scheduler_cothreaded_chain when already
	  active and linking two active chains

2004-04-10  Benjamin Otte  <otte@gnome.org>

	* docs/pwg/intro-preface.xml:
	  fix dead links and remove reference to Wiki

2004-04-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/schedulers/gstbasicscheduler.c:
	  make sure we can switch back to the main function if we're still in
	  the main function (supposed to fix #139617)
	* gst/schedulers/gthread-cothreads.h:
	  don't throw an error when switching to the same cothread

2004-04-09  Benjamin Otte  <otte@gnome.org>

	* gst/gstbin.c: (gst_bin_get_type):
	* gst/gstclock.c: (gst_clock_get_type):
	* gst/gstindex.c: (gst_index_get_type):
	* gst/gstobject.c: (gst_object_get_type),
	(gst_signal_object_get_type):
	* gst/gstpad.c: (gst_pad_get_type), (gst_real_pad_get_type),
	(gst_pad_template_get_type), (gst_ghost_pad_get_type):
	* gst/gstpluginfeature.c: (gst_plugin_feature_get_type):
	* gst/gstqueue.c: (gst_queue_get_type):
	* gst/gstregistry.c: (gst_registry_get_type):
	* gst/gstsystemclock.c: (gst_system_clock_get_type):
	* gst/gstthread.c: (gst_thread_get_type):
	  don't use memchunks for these objects, use malloc instead

2004-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/.cvsignore:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gstutils.sgml:
          further doc build fixes

2004-04-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
          make docs exit on scanning problems
          fix nonsrcdir build issues
	* docs/gst/gstreamer-sections.txt:
          adding stuff from -unused
	* gst/gstqueue.h:
          create GstQueueSize
	* gst/schedulers/cothreads_compat.h:
          fix cothread warnings

2004-04-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          remove defines deprecated by Benjamin

2004-04-07  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  when the buffer is complete, don't check if other buffers are needed
	* gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_event):
	  check that the offset is >0 so we don't try to read before the
	  beginning of the file
	* gst/gstpad.c: (gst_pad_set_pad_template):
	  sink the template, so we don't end up with 130k pad templates

2004-04-06  Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_link_add):
	  don't ref the element, adding already reffed it. And we didn't unref
	  it later anyway... (huge memleak when you used many spider elements)
	* gst/gstelement.c: (gst_element_base_class_finalize):
	* gst/gstelementfactory.c: (gst_element_factory_cleanup),
	(gst_element_register):
	* gst/gsturi.c: (gst_element_make_from_uri):
	  use gst_object_(un)ref instead of g_object(un)ref

2004-04-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbuffer.h:
	  remove macro that wouldn't work anymore because struct member has
	  been removed.
	* gst/schedulers/entryscheduler.c: (schedule_forward):
	  fix segfault for unconnected pads
	
2004-04-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	reviewed by David Schleef <ds@schleef.org>

	* gst/gstinfo.h:
	  *_FORMAT modifiers should require putting a % in front of them for
	  consistency reasons.

2004-04-05  Colin Walters  <walters@redhat.com>

	* configure.ac (VALGRIND_CFLAGS, VALGRIND_LIBS): Remove spurious
	space.

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* configure.ac:
	* gst/Makefile.am:
	* gst/gst_private.h:
	* gst/gstinfo.c: (__gst_in_valgrind), (_gst_debug_init):
	  add support for detecting if GStreamer runs inside valgrind.
	  requires valgrind (d'oh) and --enable-debug for correct cdetection.
	  print a big message in valgrind that GStreamer has detected it's
	  running inside and might now use different code.
	* gst/gstmemchunk.c: (populate), (free_area),
	(gst_mem_chunk_destroy), (gst_mem_chunk_alloc),
	(gst_mem_chunk_free):
	  flag memchunks for valgrind, so it can detect leaking of chunks.
	  This allows detecting leaks of GstBuffer and GstEvent correctly
	  inside valgrind.

2004-04-05  David Schleef  <ds@schleef.org>

	* gst/gsttrace.h:  Fix #ifdef nesting (bug #139109) Patch from
	  jensgr@gmx.net (Jens Granseuer)

2004-04-05  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (_gst_buffer_sub_free),
	(gst_buffer_default_free), (gst_buffer_default_copy),
	(gst_buffer_alloc_chunk), (gst_buffer_free_chunk),
	(gst_buffer_new), (gst_buffer_create_sub):  Allocate GstBuffer
	structures in one place.

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.h: adding Ronald's timestamp debugging defines
          (GST_TIME_FORMAT, GST_TIME_ARGS)

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/elements/Makefile.am:
          disable test until it stops breaking make distcheck

2004-04-05  Johan Dahlin  <johan@gnome.org>

	* po/sv.po: Updated translation

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c: (gst_plugin_load_file):
          fix segfault for when original plugin was loaded statically

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* testsuite/debug/category.c: (main):
	* testsuite/debug/commandline.c: (main):
	* testsuite/debug/output.c: (main):
	  fix tests to work again with debugging enabled

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_pad_link):
	  fix to work with recent scheduling changes

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: (some functions, dunno which,
	prepareChangeLog doesn't work when cvs indents):
	  don't throw an error when no element can be scheduled, there's too
	  many weird reasons why it doesn't work. Return STOPPED instead.
	  decoupled elemts' schedulability doesn't depend on bufpens.

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_pad_select):
	  fix uninitialized variable warnings

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_collect_valist):
	  fix uninitialized variable warning
	* gst/schedulers/entryscheduler.c: (schedule_forward):
	  fix shadowed variable

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_collect_array), (gst_pad_collectv),
	(gst_pad_collect), (gst_pad_collect_valist), (gst_pad_selectv),
	(gst_pad_select):
	* gst/gstpad.h:
	* gst/gstscheduler.c: (gst_scheduler_pad_select),
	(gst_scheduler_lock_element), (gst_scheduler_unlock_element):
	* gst/gstscheduler.h:
	  implement gst_pad_collect as replacement for gst_pad_select.
	  deprecate gst_pad_select and gst_scheduler_(un)lock_element
	  add new flag GST_SCHEDULER_FLAG_NEW_API for API that implements the
	  new pad_select, lock and unlock calls.
	* gst/cothreads.c: (cothread_destroy), (cothread_switch):
	* gst/cothreads.h:
	* gst/schedulers/cothreads_compat.h:
	* gst/schedulers/gthread-cothreads.h:
	  remove unused cothread_lock and cothread_unlock calls
	* gst/schedulers/entryscheduler.c:
	(gst_entry_scheduler_class_init), (gst_entry_scheduler_init),
	(_can_schedule_loop), (gst_entry_scheduler_get_handler),
	(gst_entry_scheduler_pad_select):
	  update to new API
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_class_init), (gst_basic_scheduler_init),
	(gst_basic_scheduler_pad_select):
	  remove useless lock and unlock calls, update pad_select to new API
	  (untested)
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_class_init):
	  remove useless select, lock and unlock function calls
	* gst/elements/gstaggregator.c: (gst_aggregator_loop):
	  use gst_pad_collect instead of gst_pad_select

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: (_can_schedule_get),
	(can_schedule_pad), (can_schedule), (schedule), (schedule_forward),
	(schedule_next_element), (print_entry):
	  add can_schedule_pad to handle element states.
	  add schedule_forward to select the correct entry to schedule next

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: 
	  remove unused variable, fix error inside Rb, fix compile warning in
	  unreachable code

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c:
	  completely revamp the inner workings, so it's a lot easier to
	  understand and extend

2004-04-03  Andy Wingo  <wingo@pobox.com>

	* gst/schedulers/gstoptimalscheduler.c (GstOptSchedulerGroupLink):
	Rename ->group1 and ->group2 to ->src and ->sink, respectively.
	This allows better introspection of pipeline topology.
	(add_to_chain): Don't do trickery to put loop elements first;
	rather, queue a chain sort by marking the chain as dirty.
	(remove_from_chain): Mark the chain dirty.
	(sort_chain): New function. Sorts the group list so that terminal
	sinks are first. This means elements on the sink side will be
	preferentially sscheduled before elements on the src side of the
	pipeline.
	(chain_recursively_migrate_group): Use OTHER_GROUP_LINK.
	(schedule_chain): If the chain is marked DIRTY, call sort_chain.
	(gst_opt_scheduler_pad_link, gst_opt_scheduler_pad_unlink)
	(group_inc_link): Change argument and variable names to match the
	new link structure member names (src and sink).
	(group_dec_link): Add some description

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug):
	* gst/gstinfo.h:
	* testsuite/debug/category.c: (main):
	* testsuite/debug/commandline.c: (main):
	* testsuite/debug/output.c: (main):
	* testsuite/debug/printf_extension.c: (main):
	  fix to successfully build and test with --disable-gst-debug
	  configure switch (fixes #138705)

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* docs/pwg/building-boiler.xml:
	  add cvs login line and s/anonymous/anoncvs/

2004-04-03  Tim-Phillip Müller  <t.i.m@zen.co.uk>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/gststructure.c: (gst_structure_free):
	  memleak fix: free fields array (partial fix for #134839)

2004-04-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/ds/0.9-suggested-changes:
	  Add a note to change handoff use in fakesrc to be usable in
	  a more generic way (fakesrc should be renamed to appsrc or so).
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
	  Change signal type to scope, so we can fill the buffer in the
	  handoff handler (that's the whole use of this signal...).

2004-04-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/other-ntoone.xml:
	  Document muxers and n-to-1 elements.

2004-04-01  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/registries/gstxmlregistry.c
	(gst_xml_registry_rebuild_recurse): Fix the algorithm to
	determine if a file is a G_MODULE. The old one discards paths
	containing "so" somewhere in the middle. My home directory is
	called "soto". Go figure...

2004-03-31  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (gst_buffer_join):  Add function gst_buffer_join()
	to eventually deprecate gst_buffer_merge().  (bug: #136408)
	* gst/gstbuffer.h:

2004-03-31  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: (gst_value_union_int_int_range),
	(gst_value_union_int_range_int_range), (gst_value_can_union),
	(gst_value_union), (_gst_value_initialize):  Add some union
	implementations.  We didn't have any previously.
	* testsuite/caps/Makefile.am:
	* testsuite/caps/audioscale.c: (gst_audioscale_expand_value),
	(gst_audioscale_getcaps), (test_caps), (main): A little test
	that is the same as the caps manipulation in audioscale.

2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/faq/general.xml:
	  add entry about "does gst support format X?"

2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstthread.c:
	  fix docs
	* gst/gstutils.h:
	  fix GST_BOILERPLATE_FULL to not throw casting errors on C++

2004-03-30  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  set the offset of the buffer to the requested offset
	* gst/elements/gsttypefind.c: (stop_typefinding):
	  revert patch 1.18 (which I unfortunately don't know the reason for).
	  This is needed to allow downstream elements to seek. Otherwise
	  typefind might overwrite a previous seek by downstream elements.
	  This lead to errors with id3tag and typefind on some mp3s.
	* gst/schedulers/entryscheduler.c: (COTHREADS_TYPE),
	(gst_entry_scheduler_iterate):
	  be more verbose when debugging

2004-03-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.c: (gst_caps_from_string_inplace):
          make sure we don't get NULL strings

2004-03-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.c:
	* gst/gstelement.c:
	* gst/gstelementfactory.c: (gst_element_factory_get_type):
	* gst/gstindex.c: (gst_index_resolver_get_type),
	(gst_index_get_type), (gst_index_factory_get_type):
	* gst/gstinfo.c:
	* gst/gstpad.c:
	* gst/gstplugin.c:
	* gst/gsturi.c: (gst_uri_handler_get_type):
	* gst/gstvalue.c:
          first batch of documentation fixes

2004-03-29  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am:  Disable a bunch of headers from being scanned
	* docs/gst/gstreamer-docs.sgml:  More hacking
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/random/ds/0.9-suggested-changes:
	* gst/elements/gstfakesink.h: doc fixes
	* gst/elements/gstfakesrc.h: doc fixes
	* gst/gstcaps.c: doc fixes
	* gst/gstcaps.h: doc fixes
	* gst/gstelement.c: doc fixes
	* gst/gstelement.h: doc fixes
	* gst/gstindex.c: doc fixes
	* gst/gstinfo.c: doc fixes
	* gst/gstpad.c: doc fixes
	* gst/gstpad.h: doc fixes
	* gst/gstplugin.c: doc fixes
	* gst/gsttypefind.h: doc fixes
	* gst/gsturi.c: doc fixes
	* gst/gstvalue.c: doc fixes

2004-03-29  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c (get_time)
	(plugin_times_older_than_recurse):
	Use the result of stat to determine whether a path is a file,
	so we don't attempt to opendir() files.

2004-03-29  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps):
	  print caps in debugging output when setting caps failed
	* gst/schedulers/entryscheduler.c: (COTHREADS_TYPE),
	(schedule_next_element), (get_buffer), (run_chainhandler),
	(element_may_start), (gst_entry_scheduler_chain_handler),
	(gst_entry_scheduler_get_handler),
	(gst_entry_scheduler_state_transition),
	(gst_entry_scheduler_pad_link):
	  make this scheduler a testcase for mandatory
	  discont-before-first-buffer which is needed if we want to allow apps
	  to release the sound device.
	  add SCHED_ASSERT macro to print scheduler state before an assertion
	  triggers.

2004-03-29  Benjamin Otte  <otte@gnome.org>

	* COPYING:
	  replace by LGPL (former COPYING.LIB). The core is completely
	  licensed LGPL.
	* COPYING.LIB:
	  remove

2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/af.po:
	* po/sv.po:
          updated Afrikaans and Swedish

2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/az.po:
          adding Azerbaijani (M??tin ??mirov)

2004-03-28  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/gstelement.h: 
	* gst/gstelement.c (gst_element_set_time_delay): New function for
	setting element time taking into account a hardware buffering
	delay.
	(gst_element_set_time): Now just an invocation of
	gst_element_set_time_delay.
	* gst/gstclock.h: 
	* gst/gstclock.c (gst_clock_get_event_time_delay): New function
	allowing to set event times in the future.
	(gst_clock_get_event_time): Now just an invocation of
	gst_clock_get_event_time_delay.

2004-03-28  Benjamin Otte  <otte@gnome.org>

	* gst/gstbin.c: (gst_bin_set_element_sched),
	(gst_bin_unset_element_sched):
	  don't add decoupled elements to schedulers - otherwise it's
	  impossible to control if a link to a decoupled element was already
	  removed from a scheduler or not.
	* gst/schedulers/cothreads_compat.h:
	* gst/schedulers/gthread-cothreads.h:
	  add COTHREADS_TYPE macro. Make do_cothread_set_func a macro so there
	  is no "unused" warning.
	* gst/schedulers/Makefile.am:
	* gst/schedulers/entryscheduler.c:
	  add new scheduler, based on ideas from talking to David and Martin.
	  It's supposed to be small and correct. Currently it's also slow (but
	  it's not noticable)
	* examples/retag/retag.c: (main):
	* testsuite/bytestream/test1.c: (main):
	  fix missing NULLs at end of variadic functions
	* testsuite/elements/.cvsignore:
	  update

2004-03-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstevent.h:
	Added GST_EVENT_ANY for GstEvents that pass a GstStructure

2004-03-25  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt:  More doc hacking.
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstautoplugfactory.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/Makefile.am:  Remove gstthreaddummy.c.  It never worked,
	and we don't support it.
	* gst/gst.c: (gst_init_get_popt_table), (init_pre), (init_post),
	(gst_use_threads), (gst_has_threads): same
	* gst/gstthreaddummy.c: same
	* gst/autoplug/gstspider.c: Make gst_spider_details static.
	* gst/autoplug/gstspider.h: same
	* gst/elements/gstaggregator.h: Remove bogus function from header
	* gst/elements/gstfakesink.h: same
	* gst/elements/gstfakesrc.h: same
	* gst/elements/gstmd5sink.h: same
	* gst/elements/gstshaper.h: same
	* gst/elements/gsttee.h: same
	* gst/gstbin.c: doc fixes
	* gst/gstbin.h: Remove unused definition.
	* gst/gstbuffer.c: doc fixes
	* gst/gstcaps.c: (gst_caps_is_always_compatible): doc fixes
	* gst/gstfilter.c: doc fixes
	* gst/gsttag.c: doc fixes
	* gst/gstvalue.c: doc fixes

2004-03-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Document typefinding.
	* docs/pwg/other-oneton.xml:
	  Document one-to-n elements, demuxers and parsers.

2004-03-25  Tim-Philipp Müller <t.i.m@zen.co.uk>

	reviewed by: David Schleef  <ds@schleef.org>

	* configure.ac: Check bison version (bug #127838)

2004-03-25  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-docs.sgml: More fine tuning.
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstautoplug.sgml:
	* docs/gst/tmpl/gststaticautoplug.sgml:
	* docs/gst/tmpl/gststaticautoplugrender.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstxml.sgml:

2004-03-24  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-docs.sgml:  I got tired of the reference
	manual being such complete crap, that I decided to do major
	hacking of it.  This checkin replaces any fine tuning that
	may have been done previously, with the benefit of actually
	being complete for much of the API that was changed since
	0.6.  Further fine tuning will occur shortly.  (bug #134721)
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/GstBin.sgml:
	* docs/gst/tmpl/GstBuffer.sgml:
	* docs/gst/tmpl/GstCaps.sgml:
	* docs/gst/tmpl/GstClock.sgml:
	* docs/gst/tmpl/GstCompat.sgml:
	* docs/gst/tmpl/GstData.sgml:
	* docs/gst/tmpl/GstElement.sgml:
	* docs/gst/tmpl/GstEvent.sgml:
	* docs/gst/tmpl/GstIndex.sgml:
	* docs/gst/tmpl/GstStructure.sgml:
	* docs/gst/tmpl/GstTag.sgml:
	* docs/gst/tmpl/cothreads.sgml:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gettext.sgml:
	* docs/gst/tmpl/grammar.tab.sgml:
	* docs/gst/tmpl/gst-i18n-app.sgml:
	* docs/gst/tmpl/gst-i18n-lib.sgml:
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gst_private.sgml:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstarch.sgml:
	* docs/gst/tmpl/gstatomic.sgml:
	* docs/gst/tmpl/gstatomic_impl.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstcompat.sgml:
	* docs/gst/tmpl/gstconfig.sgml:
	* docs/gst/tmpl/gstcpu.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstdata_private.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstenumtypes.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilter.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstinterface.sgml:
	* docs/gst/tmpl/gstlog.sgml:
	* docs/gst/tmpl/gstmacros.sgml:
	* docs/gst/tmpl/gstmarshal.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstregistrypool.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gsttaginterface.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gsttrace.sgml:
	* docs/gst/tmpl/gsttrashstack.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gsturi.sgml:
	* docs/gst/tmpl/gsturitype.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* docs/gst/tmpl/gstversion.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/gst/tmpl/gstxmlregistry.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/gst/tmpl/types.sgml:

2004-03-24  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/other-sink.xml:
	* docs/pwg/other-source.xml:
	  Documentation on how to write source and sink elements. Other
	  stuff in chapter 4 (1-to-n/demuxer, n-to-1/muxer, n-to-n,
	  manager, autoplugger) are all still pending.

2004-03-25  Benjamin Otte  <otte@gnome.org>

	* testsuite/elements/Makefile.am:
	* testsuite/elements/gst-compprep-check:
	  add check to make sure gst-compprep works
	* testsuite/elements/gst-inspect-check.in:
	  improve initialization output
	* testsuite/Makefile.am:
	* testsuite/gst-inspect-check:
	  remove old file

2004-03-24  David Schleef  <ds@schleef.org>

	* testsuite/elements/Makefile.am:
	* testsuite/elements/gst-inspect-check.in: Add gst-inspect-check
	to the testsuite.

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* libs/gst/control/dparam.c: (gst_dparam_attach),
	(gst_dparam_detach):
	* libs/gst/control/dparammanager.c: (gst_dpman_init):
	  fix lvalue casts for real

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_src_wrapper):
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
	(pad_clear_queued), (gst_opt_scheduler_add_element),
	(gst_opt_scheduler_remove_element):
	  fix GStreamer to not have issues with lvalue casts anymore (fixes
	  #136841)

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c:
	  add documentation about a gobject quirk where the object hasn't the
	  correct class pointer set on initialization
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_src_wrapper):
	  make sure to not run into an infinite loop

2004-03-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstutils.c: (gst_util_dump_mem):
	* gst/gstutils.h:
	  first argument of gst_util_dump_mem should be const

2004-03-22  Johan Dahlin  <johan@gnome.org>

	* gst/gstvalue.h: Clean up a little bit.

2004-03-21  Tim-Philipp Müller <t.i.m@zen.co.uk>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_dispose):
	* gst/elements/gstaggregator.c: (gst_aggregator_finalize),
	(gst_aggregator_class_init), (gst_aggregator_init):
	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_dispose), (gst_filesrc_set_location):
	* gst/elements/gstidentity.c: (gst_identity_finalize),
	(gst_identity_class_init), (gst_identity_chain):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_open_file):
	* gst/elements/gststatistics.c: (gst_statistics_finalize),
	(gst_statistics_class_init):
	* gst/elements/gsttee.c: (gst_tee_finalize), (gst_tee_class_init),
	(gst_tee_get_property):
	  clean up used memory in this elements correctly on teardown (closes
	  #137279)

2004-03-20  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_open_func, gst_xml_registry_close_func): Make
	registry saving atomic.

2004-03-20  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c (gst_xml_registry_get_perms_func):
        Just use
	access() instead of actually creating and deleting files.

2004-03-18  David Schleef  <ds@schleef.org>

	* configure.ac:  Remove HAVE_ATOMIC_H test, since it's unused.
	(bug #137625)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/sv.po: updated translation (Christian Rose)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_get_formats),
	(gst_filesink_get_query_types), (_do_init),
	(gst_filesink_handle_event), (gst_filesink_uri_get_protocols):
          return FALSE silently
	* po/af.po: updated translation (Petri Jooste)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* configure.ac:
          dist common properly
	* po/af.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
          refreshing translations

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/sv.po:
	* po/af.po:
          adding Swedish (Christian Rose) and Afrikaans (Petri Jooste)

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am: use common/release.mak

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/gst-uninstalled:
          adding gst-monkeysaudio to the list of possible plugin dirs

2004-03-16  David Schleef  <ds@schleef.org>

	* gst/gst.c: (gst_get_popt_options), (gst_init_get_popt_table),
	(gst_init_check_with_popt_table):  Fix some gettext strings to
	make them easier to translate.  Required making the strings
	non-const.

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.8.0 ===

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: release 0.8.0, "Executive Slacks"

2004-03-16  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Remove double ;,
        spotted by Scott Wheeler

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump libtool version

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.h:
	* gst/gststructure.h:
          add reserved padding

2004-03-15  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_get):
	  set the first parameter for select call correctly.
	  (fixes #137230)

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* *.c,*.h: don't mix tabs and spaces

2004-03-15  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Fix bug that causes totem to
	crash on MPEG playback. My boolean arithmetic is a bit rusty.

	* tools/Makefile.am (EXTRA_DIST): Add gst-indent
	
2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Rules:
          fix gst-register rules

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Rules:
          use versioned gst-register

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-sections.txt:
          remove </SUBSECTION>
	* gst/gstplugin.c:
	* gst/gstregistry.c: (gst_registry_add_plugin):
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_get_type),
	(gst_xml_registry_open_func), (gst_xml_registry_close_func):
          add debugging and fix some comment blocks

2004-03-15  Johan Dahlin  <johan@gnome.org>

	* *.h: Revert indent changes.
	
2004-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/registries/gstxmlregistry.c: (gst_xml_registry_load_plugin):
          g_error_free the g_error
	* tools/gst-feedback-m.m:
          check for other versions of gstreamer
	* tools/gst-indent:
          use sh, not bash

2004-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-register.c: do not spill paths when registries are not
          writable, until we fix the "user running gst-register" case.

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* *.c, *.h: commit of gst-indent run on core

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-indent:
	* tools/Makefile.am:
	  add our indentation style as a script

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/sr.po:
	* po/LINGUAS:
	  added Serbian translation

2004-03-13  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c:
	  add documentation note about gst_element_found_tags_for_pad not
	  being usable in getfunctions. (see #137042)

2004-03-12  David Schleef  <ds@schleef.org>

	* gst/gstcaps.h: jdahlin, what are you smoking?  We can't just
	change API right now!  Readd gst_caps_is_simple() macro.
	* gst/gstelement.c: (gst_element_base_class_finalize): Fix
	uninitialized variable.  I'd bet this caused crashes.
	* gst/gstinfo.c: (gst_debug_print_object):  Fix 64-bit cleanliness.

2004-03-12  Johan Dahlin  <johan@gnome.org>

	* gst/gstcaps.h (GST_CAPS_IS_SIMPLE): Capitalize macro
	* gst/gstcaps.h: Clean up

	* gst/gst.c (init_post): call gst_caps_get_type() instead of
	_gst_caps_initalize()

	* gst/gstcaps.c: Style fixes, stay closer to glib and friends
	(_gst_caps_initialize): Remove, in favor for gst_caps_get_type()

	* gst/gststructure.c (gst_structure_get_type): Ditto

	* gst/gststructure.h: Ditto
	
2004-03-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_init):
	  Reset default max. values in queues. Reason is simply to avoid
	  braindead use. If you want wider values, use the properties. The
	  default is supposed to always work. Wider values would make this
	  beast a memory hog by default (250 full-PAL RGB32 video frames?
	  That's 440 MB! No thank you).

2004-03-10  David Schleef  <ds@schleef.org>

	* tools/gst-run.c: (main):  Fix crash when no relevant tools
	were found.  (bug #136793)

2004-03-10  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Implement unlink for elements with
	links to elements within the same group, so we can finally remove
	that annoying warning. Refactor the code a little bit
	(group_dec_links_for_element): Split out

2004-03-09  David Schleef  <ds@schleef.org>

	* docs/manual/dparams-app.xml:  Fix to handle double dparams.
	(bug #134863)

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: first bug fix due to major/minor bump

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.7.6 ===

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
          releasing 0.7.6, "Almost"
	* po/fr.po:
	* po/nl.po:
	* tools/Makefile.am:
	* tools/gst-feedback-m.m:
          unversioned source

2004-03-09  Johan Dahlin  <johan@gnome.org>

	Reviewed by: Thomas Vander Stichele

	* gst/gstelement.c (gst_element_class_init): register second
	parameter as GST_TYPE_G_ERROR instead of G_TYPE_POINTER, so
	language bindings can (de)marshall correctly.

	* gst/gsterror.h: Add GST_TYPE_G_ERROR and cleanup a little bit

	* gst/gsterror.c (gst_g_error_get_type): New function

	* gst/gstmarshal.list: Remove VOID:OBJECT,POINTER,STRING, replace
	with VOID:OBJECT,OBJECT,STRING 

2004-03-10  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/registries/gstxmlregistry.c: (gst_xml_registry_load):
	Free a leaked g_timer on early returns.

2004-03-08  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Add cinepak description.

2004-03-07  David Schleef  <ds@schleef.org>

	* docs/random/mimetypes:  Added cinepak description

2004-03-07  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_remove): Debugging fixes.

	* gst/schedulers/gstoptimalscheduler.c (destroy_group): Assert
	there are no links to other groups when a group is destroyed.
	(gst_opt_scheduler_pad_unlink): If the unlink means an element is
	removed from a group, make sure the link count to elements linked
	to other pads is appropriately decremented. This really fixes
	#135672.

	The 1.60->1.61 patch has been reapplied in light of this fix.

	* gst/gstelement.c (gst_element_dispose): Really protect against
	multiple invocations this time.

2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gsttag.sgml:
          remove some deprecated functions, document some existing ones
	* gst/gsttag.c: (gst_tag_get_flag):
	* gst/gsttag.h:
          add accessor function

2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gsttag.c: (gst_tag_get_flag):
	* gst/gsttag.h:

2004-03-06  Christophe Fergeau  <teuf@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug): fixed caps
	leak

2004-03-05  David Schleef  <ds@schleef.org>

	* REQUIREMENTS: Add bison and flex.
	* configure.ac: Fix comment about bison.
	* docs/random/ds/0.9-suggested-changes: yer ma
	* tools/gst-inspect.c: (print_element_info):  Fix warning.

2004-03-05  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_error_full):
	  revert recent recursive state changing commit - messing with other
	  elements' states is evil and should be done by apps only.

2004-03-05  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_get_compatible_pad_template):
	  check for empty intersection instead of NULL caps
	(gst_element_get_compatible_pad_filtered):
	  remove old workaround that is only a bug nowadays

2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
          make elements try to recursively change state to PAUSED on all
          parents after an error to suppress ensuing warnings
	* gst/parse/grammar.y:
          make it check if it was able to sync the state, and throw an error
          if not, so stuff like
          oggdemux ! vorbisdec ! osssink gets caught

2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: use ${libdir} for PLUGINS_DIR since on 64bit
          it contains lib64; use AS_AC_EXPAND to handle it properly

2004-03-05  David Schleef  <ds@schleef.org>

	* gst/gstcpuid_i386.s:  Remove unused code
	* libs/gst/getbits/getbits.c: (gst_getbits_init),
	(gst_getbits_newbuf): Remove MMX code
	* libs/gst/getbits/getbits.h: Remove MMX code

2004-03-04  David I. Lehn  <dlehn@users.sourceforge.net>

	* debian/.cvsignore:
	* debian/README.Debian:
	* debian/changelog:
	* debian/control:
	* debian/control.in:
	* debian/copyright:
	* debian/gstreamer-core-libs-dev.files:
	* debian/gstreamer-core-libs.files:
	* debian/gstreamer-core.files:
	* debian/gstreamer-core.postinst:
	* debian/gstreamer-core.postrm:
	* debian/gstreamer-doc.files:
	* debian/gstreamer-doc.links:
	* debian/gstreamer-doc.lintian:
	* debian/gstreamer-runtime.files:
	* debian/gstreamer-runtime.manpages:
	* debian/gstreamer-runtime.postinst:
	* debian/gstreamer-runtime.postrm:
	* debian/gstreamer-tools.files:
	* debian/gstreamer-tools.manpages:
	* debian/libgstreamer-dev.files:
	* debian/libgstreamer0.4.1.files:
	* debian/libgstreamerVERSION.files:
	* debian/rules:
	Debian package info not maintained here.

2004-03-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init):
	* gst/gstbin.c: (gst_bin_class_init):
	* gst/gstelement.c: (gst_element_class_init):
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstobject.c: (gst_object_class_init),
	(gst_signal_object_class_init):
	* gst/gstpad.c: (gst_pad_template_class_init):
	* gst/gstregistry.c: (gst_registry_class_init):
	* gst/gsturi.c: (gst_uri_handler_base_init):
	* gst/gstxml.c: (gst_xml_class_init):
	* libs/gst/control/dparam.c: (gst_dparam_class_init):
	* libs/gst/control/dparammanager.c: (gst_dpman_class_init):
          make all signal names use dashes instead of underscore

2004-03-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: AC_SUBST GLIB_ONLY CFLAGS and LIBS

2004-03-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c:
	  revert last commit by Andy Wingo. It causes segfaults on unreffing
	  in Rhythmbox. (see bug #135672)

2004-03-02  Christophe Fergeau  <teuf@gnome.org>

	* po/fr.po: fix typo

2004-03-02  Christophe Fergeau  <teuf@gnome.org>

	* tools/gst-inspect.c: (main): 
	* tools/gst-launch.c: (main): add calls to bind_textdomain_codeset

2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          get GLIB_ONLY and POPT flags for the nonversioned binaries
	* tools/Makefile.am:
          use them

2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_post):
          change so that GST_REGISTRY now is where the global registry gets
          saved, since that is where plugins now get attached to first, and
          spilled over to the user registry.  Note that in the case of using
          GST_REGISTRY env var, we don't want to affect any real registries
          beyond the one given by this var, and thus we don't set a user
          registry to spill to.  So make sure GST_REGISTRY is writable.

2004-03-01  David Schleef  <ds@schleef.org>

	* AUTHORS:  Added some names.  Add yourself if you're missing.

2004-03-01  David Schleef  <ds@schleef.org>

	* MAINTAINERS: Add

2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          remove whitespace
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
          doc update
	* docs/manuals.mak:
          add a FIXME
	* docs/pwg/intro-preface.xml:
	* docs/pwg/pwg.xml:
          remove GNOME
	* gst/gst.c: (init_post):
          try GST_PLUGIN_PATH paths for the _global_registry first
	* gst/gstelement.h:
          add the error message as well, otherwise (null) debug info doesn't
          make much sense
	* tools/gst-register.c: (main):
          spill paths to next registry if this registry is not writable
	* po/fr.po:
	* po/nl.po:
          translation updates

2004-03-01  Johan Dahlin  <johan@gnome.org>

	* gst/gstbuffer.c (_gst_buffer_initialize): 
	* gst/gstdata.c (gst_data_get_type): 
	* gst/gstevent.c (_gst_event_initialize): Use gst_data_copy,
	instead of ref, since some applications that uses GBoxed
	routines depends on a function that actually returns a copy.

2004-02-27  Benjamin Otte  <otte@gnome.org>

	* gst/gstbuffer.h:
	  remove gst_buffer_free, use gst_data_unref
	* gst/gstdata.c: (gst_data_get_type):
	  use refcounting in GstData GBoxed registration
	* gst/gstdata.h:
	  remove gst_data_free, use gst_data_unref

2004-02-27  Johan Dahlin  <johan@gnome.org>

	* gst/gstdata.c (gst_data_get_type): New function, register
	GstData as a GBoxed type.

	* gst/gstdata.h (GST_TYPE_DATA): New macro

2004-02-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* gstreamer.spec.in:
          put back RELEASE
	* gst/Makefile.am:
          clean up non-disting of built files
	* testsuite/debug/commandline.c:
          test fix for option rename

2004-02-26  David Schleef  <ds@schleef.org>

	* configure.ac:  We don't really need glib-2.3.  Also remove
	some unneeded checks for library functions.
	* gst/Makefile.am:  Instead, we need to not dist files created
	by glib-genmarshal.

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          bump glib required version to 2.3.0 for g_value_takes_boxed

 2004-02-25  Christian Fredrik Kalager Schaller <uraeus@gnome.org>

	* common/m4/gst-docs.m4
	change flavour text from enable to disable as enable is our default
	closes bug Bug 135304

=== release 0.7.5 ===
 
 2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>
 
	* NEWS:
          instate NEWS file
	* Makefile.am:
	* gstreamer.spec.in:
	* RELEASE:
          put back release
	* configure.ac:
	* docs/random/release:
          more updates

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize):
	* po/fr.po:
	* po/nl.po:
          remove hyphen from codec tags

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/Makefile.am:
          fix dependency so that a make from a clean build works the first
          time

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/release:
          update release strategy
	* po/fr.po:
          auto-update po file
	* po/nl.po:
          update dutch translation

2004-02-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/debugging.xml:
        fix manual for new debugging system

2004-02-25  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_link_prepare): Re-add
	gst_pad_link_prepare. Please email the list with specific reasons
	for reverting.

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-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstbin.c: (gst_bin_add):
          add error for not being able to add elements

2004-02-22  Julien MOUTTE <julien@moutte.net>

	* gst/gsttag.c: (_gst_tag_initialize): Registering 2 new tags,
	audio-codec and video-codec.

2004-02-22  Benjamin Otte  <otte@gnome.org>

	reported by: Padraig O'Briain <padraig.obriain@sun.com>

	* autogen.sh:
	  replace test -e with test -x for mkinstalldirs to be more portable.
	  (fixes #134816)

2004-02-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c:
	  revert last patch from Andy, it makes gst_pad_can_link_filtered much
	  too noisy
	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  add GST_TAG_ALBUM_VOLUME_{COUNT,NUMBER}
	* libs/gst/control/dparam.c: (gst_dparam_attach):
	* libs/gst/control/dparammanager.c: (gst_dpman_attach_dparam):
	  check that types for attached dparams match

2004-02-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_open_file):
	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_open_file):
          fix errors

2004-02-20  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c:
	* gst/gstbuffer.c:
	* gst/gstplugin.c:
	* gst/registries/gstxmlregistry.c: 
	* gst/schedulers/gstoptimalscheduler.c: Debugging tweaks.

	* gst/gstelement.c (gst_element_set_scheduler): Debugging fixes.
	(gst_element_add_pad): DEBUG->INFO, some fixes.
	(gst_element_get_compatible_pad_template): Just see if the
	templates' caps intersect, not if one is a strict subset of the
	other. This conforms more to what gst_pad_link_intersect() does.
	(gst_element_class_add_pad_template): Don't memcpy the pad
	template, just ref it.
	(gst_element_get_compatible_pad_filtered): Clean up debug messages

	* gst/gstpad.c (gst_pad_can_link_filtered): Debug a true result.
	(gst_pad_link_filtered): Debug changes.
	(gst_pad_link_prepare): New function, consolidated from
	can_link_filtered and link_filtered.

	* gst/parse/grammar.y (gst_parse_perform_link): Made INFO output
	look more like that of the functions in gstelement.c

	* gst/gstinfo.c (gst_debug_print_object): Put a space before the
	object, and return the empty string if object is NULL.

	* gst/parse/parse.l: Remove trailing newlines when calling PRINT.
	* gst/parse/grammar.y (YYFPRINTF): Log bison debugging info via
	LOG, not DEBUG. We still get flex info on debug.

	* gst/registries/gstxmlregistry.c (gst_xml_registry_load): Make
	debug string more verbose.
	(plugin_times_older_than): DEBUG->LOG.

2004-02-20  Julien MOUTTE <julien@moutte.net>

	* gst/gsttag.h: Adding video-codec and audio-codec for demuxers which
	will emit found_tag for each stream they demux with the codec.

2004-02-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstevent.c: (_gst_event_copy), (_gst_event_free):
	  copy navigation event correctly. Check freeing tag lists. 
	* gst/gstthread.c: (gst_thread_change_state):
	  don't abort() on state changing mess - it might happen because of
	  bugs.
	* gst/gstvalue.c: (gst_value_set_caps), (gst_value_get_caps):
	  use boxed functions
	* gst/gstvalue.h:
	  fix GST_VALUE_HOLDS_CAPS

2004-02-19  David Schleef  <ds@schleef.org>

	* gst/gstinfo.h:  Copy G_STRFUNC implementation from glib-2.4
	and use it for GST_FUNCTION.  (bug #134750)

2004-02-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/fr.po:
	* po/nl.po:
          updating translations

2004-02-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-run.c: (get_candidates), (main): some fixes from jdahlin

2004-02-18  kost@imn.htwk-leipzig.de

	reviewed by: David Schleef  <ds@schleef.org>

	* docs/libs/gstreamer-libs-sections.txt:  Add missing sections
	for libgstcontrol.

2004-02-18  David Schleef  <ds@schleef.org>

	* libs/gst/control/dparam.c: (gst_dparam_class_init):
	* libs/gst/control/dparam_smooth.c: (gst_dpsmooth_class_init),
	(gst_dpsmooth_new): Additional fixes to get double dparams working.
	* tools/gst-inspect.c: (print_element_info): Support dumping of
	double dparam information.

2004-02-17  David Schleef  <ds@schleef.org>

	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init):
	Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER.
	* gst/elements/gsttypefind.c: (gst_type_find_element_class_init):
	Use GST_TYPE_CAPS in signal prototype.
	* gst/gstcaps.c: (_gst_caps_initialize), (gst_caps_copy_conditional):
	Convert GST_TYPE_CAPS to boxed.
	* gst/gstelement.c: (gst_element_class_init):
	Use GST_TYPE_TAG_LIST in signal prototype.
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstindex.h:
	Add GST_TYPE_INDEX_ENTRY type.
	* gst/gstmarshal.list:
	Add necessary marshal types.
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator), (gst_pad_link_fixate),
	(gst_pad_recover_caps_error):
	Use GST_TYPE_CAPS in signal prototypes.  Fix some debugging strings.
	* gst/gststructure.c: (_gst_structure_initialize),
	(gst_structure_copy), (_gst_structure_copy_conditional):
	* gst/gststructure.h:
	Convert GST_TYPE_STRUCTURE to boxed.
	* gst/gsttag.c: (gst_tag_list_get_type):
	* gst/gsttag.h:
	Add GST_TYPE_TAG_LIST type.

2004-02-17  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_try_set_caps): Reverting my change according
	to what we agreed with david.
	* gst/gstpad.h: adding GST_PAD_IS_NEGOTIATING macro.

2004-02-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/nl.po: update translation

2004-02-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug):
	  throw an error if spider is trying to play a mime type there is
          no decoder for
	* po/POTFILES.in:
          add gst/autoplug/gstspider.c for translation

2004-02-17  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_try_set_caps): We are nice people. Return 
	silently when the pad is negotiating.

2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/Makefile.am:
          add script to run gstreamer uninstalled 
	* docs/faq/faq.xml:
	* docs/faq/developing.xml:
	* docs/faq/gst-uninstalled:
          extract script to run gstreamer uninstalled
	* docs/manuals.mak:
          add EXTRA_SOURCES variable for Makefile.am's to set to
          use additional SOURCE files for the doc build

2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstatomic_impl.h: Fedora 2 test package patch for S390

2004-02-15  Julien MOUTTE  <julien@moutte.net>

	* gst/gstbin.c: (gst_bin_change_state), (gst_bin_iterate): Fix a big
	bug that was breaking pipelines like sinesrc ! { queue ! osssink } when
	an error was thrown by osssink. Basically a state change failure for
	an element in a different scheduling group was considered as
        successful, which means that caps nego was going on and weird stuff
        happened. Like I wrote in the comment there, if someone wants to
        revert that please drop me a mail explaining why because I really see
        no point in keeping that broken behaviour there.
	* gst/gstqueue.c: (gst_queue_get): Add a safety check as the queue CAN
	be empty, we then return NULL which will trigger a nice error when 
	pulling from the pad.

2004-02-13  David Schleef  <ds@schleef.org>

	* libs/gst/control/dparam.c: (gst_dparam_class_init),
	(gst_dparam_get_property), (gst_dparam_set_property),
	(gst_dparam_do_update_default):
	* libs/gst/control/dparam.h:
	* libs/gst/control/dparam_smooth.c: (gst_dpsmooth_class_init),
	(gst_dpsmooth_new), (gst_dpsmooth_set_property),
	(gst_dpsmooth_get_property), (gst_dpsmooth_value_changed_double),
	(gst_dpsmooth_do_update_double):
	* libs/gst/control/dparam_smooth.h:
	* libs/gst/control/dparammanager.c:
	(gst_dpman_inline_direct_update):
	Add support for double dparams.

2004-02-13  David Schleef  <ds@schleef.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_get): Use GST_TIME_TO_TIMEVAL()
	* gst/gstclock.h: Avoid using 64-bit % operator (slow!)

2004-02-13  Mattias Wadman  <mattias@sudac.org>

	reviewed by: David Schleef  <ds@schleef.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init),
	(gst_fdsrc_init), (gst_fdsrc_set_property),
	(gst_fdsrc_get_property), (gst_fdsrc_get):
	* gst/elements/gstfdsrc.h:  Adds timeout property to fdsrc,
	and sends an EOS event if file descriptor reading times out.

2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          add calls to AM_CONDITIONAL for subsystems for automake 1.6.x

2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: pass required libxml version as argument
	(bug reported by Christophe Fergeau)

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>
  
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
          version API docs

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.c:
	* gst/gstregistrypool.c: (gst_registry_pool_plugin_filter),
	(gst_registry_pool_feature_filter):
	* gst/gstthread.c: (gst_thread_class_init):
	* gst/gstvalue.c:
          add includes exposed by building without libxml
	* gst/indexers/Makefile.am:
          do not build fileindex when LOADSAVE disabled; we should have
          a better libxml check later since fileindex depends on xml, not
          LOADSAVE or REGISTRY
	* libs/gst/control/Makefile.am:
          link with m
	* tools/Makefile.am:
          fix wrong source code for gst-xmlinspect

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          fix gcov help output
          move calls to and use new GST_CHECK_DISABLE_SUBSYSTEM
	* docs/random/release:
          some updated releasing notes
	* gstreamer.spec.in:
          more updates

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/faq.xml:
	* docs/manual/manual.xml:
	* docs/pwg/pwg.xml:
	* docs/pwg/titlepage.xml:
          put version in documentation

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am: fix man page installation

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  don't check for libxml when load/save and registry disabled (#105844)
	* gstreamer.spec.in:
          sync with fedora candidate spec

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/fr.po:
	* po/nl.po:
          replace multidisksrc with multifilesrc

2004-02-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* po/POTFILES.in:
	  update to multidisksrc => multifilesrc file renaming (#134145)

2004-02-11  David Schleef  <ds@schleef.org>

	* docs/gst/tmpl/gstcaps.sgml:  Fix stuff that mentions GstProps
	* docs/gst/tmpl/gstpadtemplate.sgml: same
	* docs/gst/tmpl/gstreamer-unused.sgml: Remove GstProps
	* gst/gstobject.c: (gst_object_set_name_default): Do the memleak
	fixing dance.
	* gst/gstutils.c: Remove disabled code that uses GstProps.
	* gst/registries/gstxmlregistry.h: same
	* docs/random/ds/0.9-suggested-changes: random notes

2004-02-11  kost@imn.htwk-leipzig.de

	reviewed by: David Schleef  <ds@schleef.org>

	* gst/gstclock.c: (gst_clock_entry_new): fixes structure
	initialisation of clock (bug #134128)

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_base_init),
	(gst_multifilesrc_class_init), (gst_multifilesrc_init),
	(gst_multifilesrc_set_property), (gst_multifilesrc_get_property),
	(gst_multifilesrc_get), (gst_multifilesrc_open_file),
	(gst_multifilesrc_close_file), (gst_multifilesrc_change_state):
	* gst/elements/gstmultifilesrc.h:
          rename multidisksrc to multifilesrc (part of #122200)

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manuals.mak:
          fix automake complaints
	* gst-element-check.m4:
          fix unquotedness

2004-02-11  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Call gst_init() in built gstreamer-scan.
	* gst/gstatomic_impl.h: Disable sparc implementation.

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst-element-check.m4:
          fix underquoted macros as reported by automake 1.8.x (#133800)
	* configure.ac:
          require gettext 0.11.5 so ulonglong.m4 gets checked out and copied
          by autopoint (fixes #132996)

2004-02-10  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_custom_new): Add a FIXME, this is a hacky
	way to do inheritance.
	(gst_pad_get_event_masks, gst_pad_get_event_masks_default) 
	(gst_pad_get_query_types, gst_pad_get_query_types_default):
	Routine docs.
	(gst_pad_set_link_function, gst_pad_set_fixate_function) 
	(gst_pad_set_getcaps_function): Doc from Dave's negotation random
	doc.
	(gst_pad_unlink, gst_pad_is_linked): Docs.
	(gst_pad_renegotiate): A brief description of capsnego.
	(gst_pad_try_set_caps): Document.
	(gst_pad_try_set_caps_nonfixed): Document.
	(gst_pad_can_link_filtered, gst_pad_link_filtered): Doc fixes.
	(gst_pad_set_parent): Deprecated (although not out of the API).
	(gst_pad_get_parent): Deprecated, although many plugins use this.
	(gst_pad_add_ghost_pad, gst_pad_remove_ghost_pad): Doc that these
	are private and will go away in 0.9.
	(gst_pad_perform_negotiate): Doc.
	(gst_pad_link_unnegotiate): I think this is meant to be static.
	(gst_pad_get_negotiated_caps, gst_pad_get_pad_template_caps) 
	(gst_pad_template_get_caps_by_name, gst_pad_check_compatibility) 
	(gst_pad_get_peer): Doc updates.
	(gst_pad_caps_change_notify): Doc.
	(gst_pad_alloc_buffer, gst_pad_push, gst_static_pad_template_get) 
	(gst_ghost_pad_new): Doc fixes.

	* gst/gstobject.c (gst_object_get_parent, gst_object_unparent) 
	(gst_object_check_uniqueness): 

	* gst/gstelement.c (gst_element_add_pad) 
	(gst_element_add_ghost_pad, gst_element_remove_pad) 
	(gst_element_remove_ghost_pad, gst_element_get_pad) 
	(gst_element_get_static_pad, gst_element_get_pad_list) 
	(gst_element_class_get_pad_template_list) 
	(gst_element_class_get_pad_template): Work on the docs.
	(gst_element_get_pad_template_list): Uses the class method.
	(gst_element_get_compatible_pad_template): Docs, and consolidate
	some test conditions. 
	(gst_element_get_pad_from_template): New static function.
	(gst_element_request_compatible_pad): Docs, and work with
	non-request compatible templates. 
	(gst_element_get_compatible_pad_filtered): Docs and remove
	redundant checks.
	(gst_element_get_compatible_pad, gst_element_link_pads_filtered) 
	(gst_element_link_filtered, gst_element_link_many) 
	(gst_element_link, gst_element_link_pads) 
	(gst_element_unlink_many): Docs.

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (_gst_real_pad_fixate_accumulator):
	s/pointer/boxed/.

	* gst/gstmarshal.list (VOID:BOXED, BOXED:BOXED): New marshallers.

	* gst/gstpad.c (gst_real_pad_class_init): Use a BOXED:BOXED
	marshaller for ::fixate, and VOID:BOXED for ::caps-nego-failed,
	with the type=GST_TYPE_CAPS. This allows language bindings to know
	what kind of data they're dealing with.

	* gst/gstcaps.c (_gst_caps_value_init): GBoxed values initialize
	to NULL when g_value_init is called. GstCaps, which rolls its own
	type implementation, now does the same instead of allocating empty
	caps.
	(_gst_caps_initialize, _gst_caps_collect_value,
	_gst_caps_lcopy_value): Provide collect_value and lcopy_value type
	table methods. This allows G_VALUE_COLLECT to work.

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* configure.ac:
	* testsuite/Makefile.am (SUBDIRS): 
	* testsuite/ghostpads/Makefile.am: 
	* testsuite/ghostpads/ghostpads.c: A new test for ghost pads.

	* gst/gstpad.c (gst_pad_add_ghost_pad, gst_pad_remove_ghost_pad):
	These two routines are the only ones that set
	GST_GPAD_REALPAD(gpad), the ghost pad list, and the ghost pad's
	pad template. They should be made static, depending on ABI needs.
	(gst_real_pad_dispose): Handle the case of ghost pads without a
	parent. Assert after dealing with ghost pads that the ghost pad
	list is empty.
	(gst_ghost_pad_class_init): New property added, ::real-pad. Can be
	set after creation.
	(gst_ghost_pad_dispose): Set ::real-pad to NULL.
	(gst_ghost_pad_set_property, gst_ghost_pad_get_property): New
	functions. set_property will call add_ghost_pad/remove_ghost_pad
	as appropriate.
	(gst_ghost_pad_new): All the work is offloaded to g_object_new.

	* gst/gstelement.c (gst_element_add_pad): Handle ghost pads as well.
	(gst_element_add_ghost_pad): Remove code duplicated from _add_pad.
	(gst_element_remove_pad): Handle ghost pads as well.
	(gst_element_remove_ghost_pad): Deprecated (could be removed,
	depending on API-stability needs).

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.[ch]: (gst_bin_get_by_interface): GTypes are scalars,
	of course they're const

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am:
	* tools/gst-feedback:
	* tools/gst-feedback-0.7:
          make gst-feedback versioned too for consistency

2004-02-11  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps): Fix format strings for GST_PTR_FORMAT.

2004-02-10  Julien MOUTTE <julien@moutte.net>

	* gst/gstevent.c: (_gst_event_free): Sometimes a tag event arrives but
	the structure does not contain a valid tag list. Adding a safety check
	to remove a noisy warning in that case.

2004-02-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: fix name to be in line with others

2004-02-09  Julien MOUTTE <julien@moutte.net>

	* libs/gst/bytestream/bytestream.c: (gst_bytestream_peek): We should
	not shout that loud when len is 0. Just return 0 silently.

2004-02-09  Julien MOUTTE  <julien@moutte.net>

	* gst/gstdata.c: (gst_data_ref): Adding a categorized debug on data_ref
	because data_unref has one and I prefer the debug to be symetric.
	* gst/gstqueue.c: (gst_queue_locked_flush): Fix a huge memleak. Buffers
	were refed when added to the queue and unrefed only once when the queue
	was flushed. Now the flush handler unref the buffers two times : first
	unref for the ref added when pushing in the queue's tail and second
	unref to destroy the flushed buffer.

2004-02-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/building-boiler.xml: fix cvs checkout documentation

2004-02-06  David Schleef  <ds@schleef.org>

	* docs/random/ds/0.9-suggested-changes: Random ramblings
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap): Cast size_t
	to int before printing.
	* gst/parse/grammar.y: Fix gcc-2.95 style variadic macros.
	* gst/parse/parse.l: same.  See bug #129600

2004-02-06  David Schleef  <ds@schleef.org>

	* gst/gstindex.c: (gst_index_add_format), (gst_index_add_id),
	(gst_index_add_entry), (gst_index_add_associationv),
	(gst_index_add_association): Add gst_index_add_associationv()
	and clean up gst_index_add_association(). #127133

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh: check out common with right tag if CVS/Tag exists

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/ghostpads/ghostpads.c: (main):
          fix testsuite from segfaulting

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am: add release target
	* configure.ac: bump nano to 1
	* docs/random/release:

2004-02-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.h:
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details), (gst_element_clear_pad_caps):
	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps), (gst_pad_can_link_filtered),
	(gst_real_pad_dispose):
	* gst/gststructure.c: (gst_structure_free),
	(gst_structure_from_string):
	  put reverted patch back in
	* gst/gstelement.c: (gst_element_remove_pad):
	  free explicit caps if they're set
	* gst/gstpad.c: (_gst_pad_default_fixate_func):
	  copy the structure when fixating

2004-02-05  David Schleef  <ds@schleef.org>

	* gst/gstmarshal.list:
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator):
	Revert POINTER->BOXED change in signal marshaller.

=== release 0.7.4 ===
                                                                                
2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>
                                                                                
        * NEWS: GStreamer 0.7.4 "Wooden Eels" released
        * configure.ac: changed for release

2004-02-05  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gstreamer.spec.in:
          bump required version of gtk-doc

2004-02-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.h:
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details), (gst_element_clear_pad_caps):
	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps), (gst_pad_can_link_filtered),
	(gst_real_pad_dispose):
	* gst/gststructure.c: (gst_structure_free),
	(gst_structure_from_string):
          revert patch that breaks applications, reapply after release
          to get this fixed properly

2004-02-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  remove duplicated field GST_TAG_APPLICATION. It's GST_TAG_ENCODER

2004-02-04  David Schleef  <ds@schleef.org>

	Fix some memleaks:
	* gst/autoplug/gstspider.c: (gst_spider_request_new_pad),
	(gst_spider_plug_from_srcpad):
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link):

2004-02-04  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_clear_pad_caps): Make sure we have
	a GstRealPad before accessing its structure members.

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstclock.c: (gst_clock_init), (gst_clock_set_speed),
	(gst_clock_get_speed):
	* gst/gstclock.h:
	  reset padding, remove unused fields

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	  use get_allowed_caps, not get_caps (fixes #132519)
	* gst/elements/gsttypefind.c: (stop_typefinding):
	  use correct order when sending buffers and seeking

2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/gstelement.h:
	* gst/gstpad.h:
	* gst/gstqueue.h:
          upgrade libtool CURRENT, reset padding

2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>

        * configure.ac:
          bump to prerelease
          put back AM_PROG_LIBTOOL to make libtoolize stop complaining

2004-02-04  David Schleef  <ds@schleef.org>

	* 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  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* tools/Makefile.am:
	* tools/gst-run.c: (popt_callback), (hash_print_key),
	(find_highest_version), (unmangle_libtool), (get_dir_of_binary),
	(get_candidates), (main):
          add new source file to generate non-versioned wrapper binaries
          for our tools.

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstevent.c: (_gst_event_free):
	  actually break; inside the switch statement
	* gst/parse/grammar.y:
	  fix memleak where GValues weren't unset

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gststructure.c: (gst_structure_from_string):
	  fix huge memleak
	* gst/elements/gsttypefind.c: (gst_type_find_element_have_type),
	(new_entry), (gst_type_find_element_chain):
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details):
	* gst/gstpad.c: (gst_pad_can_link_filtered):
	  fix smaller memleaks
	* gst/gstpad.c: (gst_real_pad_dispose):
	  check that explicit caps are gone
	* gst/gststructure.c: (gst_structure_free):
	  actually free the structure
	* gst/gstelement.c: (gst_element_clear_pad_caps):
	  unset explicit caps

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am:
	  use AM_CFLAGS since all the CFLAGS are the same
	  use AM_LDFAGS

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/gnome.xml:
          expand example a little
	* gst/gst.c: (gst_init_with_popt_table),
	(gst_init_check_with_popt_table), (init_pre), (init_popt_callback):
          make sure popt option displays are done with right textdomain
          use GstPoptOption type
	* gst/gst.h:
          create GstPoptOption type

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.c: (_gst_stream_errors_init):
	* gst/gsterror.h:
          adding error type for no codec
	* po/POTFILES.in:
          add gst-inspect
	* po/nl.po:
          update dutch translation
	* tools/gst-inspect.c: (print_element_list), (main):
          do proper internationalization
	* tools/gst-launch.c: (idle_func):
          remove commented out function call

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/README:
          add some error fixing notes
	* docs/gst/gstreamer-sections.txt:
          remove double entries
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstclock.sgml:
          remove override
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gsttag.h:
          sync header prototypes with c decls
	* gst/gsttaginterface.c:
          fix doc headers

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/parse/Makefile.am:
	* gst/gstobject.h:
	  get rid of gstmarshal.h dependency. It's not needed.
	* gst/gst.h:
	* gst/elements/gstfakesink.c:
	* gst/elements/gstfakesrc.c:
	* gst/elements/gstidentity.c:
	* gst/gstbin.c:
	* gst/gstelement.c:
	* gst/gstindex.c:
	* gst/gstobject.c:
	* gst/gstpad.c:
	* gst/gstthread.c:
	* gst/gstxml.c:
	* libs/gst/control/dparam.c:
	* libs/gst/control/dparammanager.c:
	  include gstmarshal.h.
	Fixes #132045

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_dispose), (gst_filesrc_free_parent_mmap),
	(gst_filesrc_map_region), (gst_filesrc_get_mmap):
	* gst/elements/gstfilesrc.h:
	  don't ref the filesrc when creating mmaped buffers. Don't keep a
	  list of not-yet-destroyed buffers.
	* gst/gstbuffer.h:
	  Deprecated BST_BUFFER_FREE_FUNC and GST_BUFFER_COPY_FUNC

2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_pre):
          remove textdomain

2004-02-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-events.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/other-manager.xml:
	* docs/pwg/other-nton.xml:
	* docs/pwg/other-ntoone.xml:
	* docs/pwg/other-oneton.xml:
	* docs/pwg/pwg.xml:
	  All sort of documentation... Forgot what. Point is that I want this
	  in before I leave. The 'other-*' will be the last section and will
	  explain issues specific to these type of elements.

2004-02-02  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read):
	  set all the values on buffers that we can

2004-02-02  David Schleef  <ds@schleef.org>

	Change usage of isblah() to g_ascii_isblah() to be more locale
	independent.  (#133076)
	* gst/gsturi.c: (gst_uri_protocol_check_internal):
	* gst/gstutils.c:
	* gst/parse/parse.l:

2004-02-02  Jon Trowbridge  <trow@gnu.org>

	reviewed by: David Schleef  <ds@schleef.org>

	Fix memory leaks:
	* gst/gstcaps.c: (gst_caps_to_string):
	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_add_path_list_func),
	(gst_xml_registry_parse_padtemplate):

2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_default_error):
          suffix error messages with period

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/gsterror.c: (gst_error_get_message):
          Suffix with dots
	* po/fr.po:
	* po/nl.po:
          Update translation files

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read), (gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init), (gst_error_get_message):
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
          Suffix error messages with period.
          Use (NULL) instead of NULL

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gstelement.c: (gst_element_error_full):
          add element path to error

2004-01-31  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/mimetypes:
	  update raw int/float info
	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  add GST_TAG_ENCODER

2004-01-30  David Schleef  <ds@schleef.org>

	* gst/cothreads.c: Add another fallback if MAP_ANONYMOUS is
	  missing (#132991)

2004-01-30  Laurent Vivier <Laurent.Vivier@bull.net>

	reviewed by Benjamin Otte 
	  parts of the patch submitted in bug #113913

	* configure.ac:
	  use AC_C_INLINE. Use = instead of == with test
	* examples/plugins/example.c:
	* gst/autoplug/gstspideridentity.c:
	* gst/elements/gstfdsrc.c:
	* gst/elements/gstfilesrc.c:
	* gst/elements/gstidentity.c:
	* gst/elements/gstmultidisksrc.c:
	* gst/elements/gststatistics.c:
	* gst/gstelement.c:
	* gst/gstobject.c:
	* gst/gstpad.c:
	* gst/gstpipeline.c:
	* gst/gstthread.c:
	  don't end enums with a comma
	* gst/gstindex.c: (gst_index_compare_func):
	  do explicit casting to gint
	* gst/gsttrace.c: (gst_trace_text_flush):
	  #define strsize as a macro

2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/README:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstinterface.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gsttaginterface.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	make sure all API ends up in the built docs
	* gst/gstinterface.c:
	* gst/gststructure.c: (gst_structure_id_set_value),
	(gst_structure_set_value), (gst_structure_id_get_value):
	* gst/gststructure.h:
	* gst/gstvalue.h:
        sync .h with .c declarations

2004-01-30  Julien Moutte  <julien@moutte.net>

	* libs/gst/bytestream/bytestream.c: Reverting my event handling patch.
	Ronald will fix riffread.

2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-interfaces.xml:
	  Added tuner interface docs.

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-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:
          GST_ELEMENT_ERROR in enum -> _IN_ERROR

2004-01-29  Julien MOUTTE  <julien@moutte.net>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_uri_handler_init): Fixing seeking by making FLUSH happen
	again and even before DISCONT.
	* gst/gstpad.c: (gst_pad_event_default): Remove a unused switch case.
	* libs/gst/bytestream/bytestream.c: (gst_bytestream_get_next_buf): Fix
	bytestream so that it's not stopping to fill the bytestream if events
	different than EOS or DISCONT are received. Instead it process them so
	that they go downstream.

2004-01-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read), (gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	* gst/gstelement.h:
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
          gst_element_error -> GST_ELEMENT_ERROR

2004-01-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/Makefile.am:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/manuals.mak:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-tagging.xml:
          fix non-validating docbook using CDATA
          make sure make check-local gets run first to check if it validates

2004-01-29  Julien MOUTTE <julien@moutte.net>

	* docs/pwg/advanced-events.xml: Adding documentation on advanced event
	handling (up and downstream).
	* docs/pwg/advanced-interfaces.xml: Make it coherent with the
	my_filter thing.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-tagging.xml:
	  Add docs about tag writing.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-tagging.xml:
	  Add a part about tag reading and application signalling... Tag
	  writing still needs to be documented.
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_location):
	  We can set file locations in READY, too.

2004-01-29  Julien MOUTTE <julien@moutte.net>

	* docs/random/ds/element-checklist: Adding some notes about src
	events.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/mimetypes:
	  Update docs to point to correct elements for various mimetypes, and
	  some more errors pointed out by St??phane LOEUILLET (aka LeRoutier)
	  <stephane.loeuillet@tiscali.fr>.

2004-01-28  David Schleef  <ds@schleef.org>

	* docs/pwg/intro-basics.xml: rewrite bufferpool stuff.

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-28  David Schleef  <ds@schleef.org>

	* docs/random/ds/element-checklist: Notes about gst_caps_to_string()
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_save_caps):
	Fix memory leakage of gst_caps_to_string().

	Use GST_PTR_FORMAT instead of gst_caps_to_string():
	* gst/autoplug/gstsearchfuncs.c: (gst_autoplug_sp):
	* gst/autoplug/gstspideridentity.c: (spider_find_suggest),
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gsttypefind.c: (gst_type_find_element_have_type),
	(find_suggest):
	* gst/gstpad.c: (gst_pad_try_relink_filtered),
	(gst_pad_set_explicit_caps):
	* gst/parse/grammar.y:

2004-01-28  David Schleef  <ds@schleef.org>

	* configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
	GST_PRINTF_EXTENSION_FORMAT_DEFINE.
	* docs/random/ds/0.9-suggested-changes: Notes from Company.
	* gst/gstcaps.c: (gst_caps_to_string): Add comment.
	* gst/gstconfig.h.in: Add define for GST_PTR_FORMAT
	* gst/gstinfo.c: (_gst_debug_init), (gst_debug_print_object),
	(gst_debug_log_default), (_gst_info_printf_extension),
	(_gst_info_printf_extension_arginfo):  Add printf extension.
	* gst/gstinfo.h: remove G_GNUC_PRINTF, because it doesn't work with %P
	* gst/gststructure.c: (gst_structure_to_string),
	(_gst_structure_parse_value): Use gst_value_deserialize() and
	remove old code.
	* gst/gstvalue.c: (gst_value_deserialize_fourcc),
	(gst_value_deserialize_boolean), (gst_strtoi),
	(gst_value_deserialize_int), (gst_value_deserialize_double),
	(gst_value_deserialize_string), (gst_value_deserialize): Implement
	a bunch of deserialize functions and gst_value_deserialize.
	* gst/gstvalue.h: er, _de_serialize, not unserialize
	* testsuite/caps/string-conversions.c: (main): We don't currently
	handle (float) in caps, so convert these to (double).
	* testsuite/debug/Makefile.am: Add new test for the printf extension
	* testsuite/debug/printf_extension.c: (main): same

2004-01-28  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/company/time:
	  Add some docs about clocking and time

2004-01-28  Julien MOUTTE <julien@moutte.net>

	* docs/pwg/advanced-interfaces.xml: Adding XOverlay documentation.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/advanced-clock.xml:
	* docs/pwg/advanced-dparams.xml:
	* docs/pwg/advanced-events.xml:
	* docs/pwg/advanced-interfaces.xml:
	* docs/pwg/advanced-midi.xml:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-tagging.xml:
	* docs/pwg/advanced-types.xml:
	* docs/pwg/appendix-checklist.xml:
	* docs/pwg/building-boiler.xml:
	* docs/pwg/building-chainfn.xml:
	* docs/pwg/building-filterfactory.xml:
	* docs/pwg/building-pads.xml:
	* docs/pwg/building-props.xml:
	* docs/pwg/building-signals.xml:
	* docs/pwg/building-state.xml:
	* docs/pwg/building-testapp.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/intro-preface.xml:
	* docs/pwg/other-autoplugger.xml:
	* docs/pwg/other-sink.xml:
	* docs/pwg/other-source.xml:
	* docs/pwg/titlepage.xml:
          fix up id's

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/95NonPath:
	* docs/HACKING:
	* docs/README:
	* docs/building-the-docs-on-debian:
          collect relevant bits of doc info

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_tagging.xml:
	  Half-assed commit so Thomas can re-arrange document IDs here to be
	  consistent, too.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/autoplugging.xml:
	* docs/manual/bins-api.xml:
	* docs/manual/bins.xml:
	* docs/manual/buffers-api.xml:
	* docs/manual/buffers.xml:
	* docs/manual/clocks.xml:
	* docs/manual/components.xml:
	* docs/manual/cothreads.xml:
	* docs/manual/debugging.xml:
	* docs/manual/dparams-app.xml:
	* docs/manual/dynamic.xml:
	* docs/manual/elements-api.xml:
	* docs/manual/elements.xml:
	* docs/manual/factories.xml:
	* docs/manual/gnome.xml:
	* docs/manual/goals.xml:
	* docs/manual/helloworld.xml:
	* docs/manual/helloworld2.xml:
	* docs/manual/init-api.xml:
	* docs/manual/intro.xml:
	* docs/manual/links-api.xml:
	* docs/manual/links.xml:
	* docs/manual/manual.xml:
	* docs/manual/motivation.xml:
	* docs/manual/pads-api.xml:
	* docs/manual/pads.xml:
	* docs/manual/plugins-api.xml:
	* docs/manual/plugins.xml:
	* docs/manual/programs.xml:
	* docs/manual/queues.xml:
	* docs/manual/quotes.xml:
	* docs/manual/schedulers.xml:
	* docs/manual/states-api.xml:
	* docs/manual/states.xml:
	* docs/manual/threads.xml:
	* docs/manual/typedetection.xml:
	* docs/manual/xml.xml:
          use chapter, part, section or misc as id starts for all bits

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          Fix up TITLE of the sections

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	  Add documentation on propertyprobing.
	* docs/pwg/advanced_events.xml:
	* docs/pwg/advanced_tagging.xml:
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_filterfactory.xml:
	* docs/pwg/pwg.xml:
	  Move filterfactory and tagging into their own chapter, add a chapter
	  on events. all these are empty placeholders that will be filled in
	  some day.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	  Docs for mixer interface. Also a check for website uploading.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/HACKING:
	* docs/Makefile.am:
	* docs/faq/Makefile.am:
	* docs/gst/Makefile.am:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/libs/Makefile.am:
	* docs/manual/Makefile.am:
	* docs/manuals.mak:
	* docs/pwg/Makefile.am:
	* docs/upload.mak:
          Separate out upload target and make it similar for
          both docbook and gtk-doc docs

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manuals.mak:
          Fix upload target to work with freedesktop

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	  Add notes on creating your own types.
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_pads.xml:
	* docs/pwg/building_state.xml:
	  Add some stuff about how to retrieve values from structures, how
	  that relates to types and change layout slightly again to be almost
	  perfect.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_dparams.xml:
	* docs/pwg/advanced_scheduling.xml:
	  Change index layout slightly.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_clock.xml:
	* docs/pwg/advanced_interfaces.xml:
	* docs/pwg/advanced_midi.xml:
	  General placeholders for now.
	* docs/pwg/advanced_request.xml:
	  Explanation about sometimes and request pads.
	* docs/pwg/advanced_scheduling.xml:
	  Concept of bytestream, loopfunctions and schedulers.
	* docs/pwg/building_boiler.xml:
	  Add something about plugin-init.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/building_pads.xml:
          Fix broken docbook

2004-01-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	* docs/pwg/pwg.xml:
	  Add as a placeholder for future filling-in.
	* docs/pwg/basics_autoplugging.xml:
	* docs/pwg/basics_buffers.xml:
	* docs/pwg/basics_elements.xml:
	* docs/pwg/basics_events.xml:
	* docs/pwg/basics_plugins.xml:
	* docs/pwg/basics_types.xml:
	  Remove, because unused (this is all in intro_basics.xml).
	* docs/pwg/building_signals.xml:
	  Short intro to signals + reference to GObject docs - we really
	  shouldn't go into these sort of things to deply because we don't
	  use them that extensively anyway.
	* docs/pwg/building_state.xml:
	  Explanation of states. Benjamin, please check.
	* docs/pwg/building_testapp.xml:
	  Put everything in one page - putting only a few lines of content
	  per page doesn't really make sense.

	  Time to get into the advanced topics. ;).

2004-01-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	  Finish documenting the current state of mimetypes.
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_chainfn.xml:
	* docs/pwg/building_pads.xml:
	* docs/pwg/building_props.xml:
	* docs/pwg/building_testapp.xml:
	  Start documenting the "how to build a simple audio filter" part
	  of the PWG. Most stuff is ready by now. Stuff remaining: signals,
	  states and (maybe?) a short introduction to capsnego in the chapter
	  on pads (building_pads.xml). Capsnego should probably be explained
	  fully in advanced_capsnego.xml or so.

2004-01-26  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_try_set_caps_nonfixed):
	* gst/gstpad.h: Add new function to allow element to (somewhat)
	specify non-fixed caps on a pad.
	* gst/gstqueue.c: (gst_queue_chain): Remove noisy g_object_notify()
	that I added a few weeks ago.

2004-01-26  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_try_set_caps): Revert last change
	  making try_set_caps() work with non-fixed caps.

2004-01-26  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	* docs/pwg/intro_basics.xml:
	* docs/pwg/intro_preface.xml:
	* docs/pwg/pwg.xml:
	* docs/pwg/titlepage.xml:
	  First try to resurrect the PWG. I'm halfway integrating the mimetypes
	  in here (docs/random/mimetypes), and will from there on work on both
	  updating outdated parts and adding missing parts.
	  That doesn't mean I'll fix it completely, but I'll try at least. ;).

2004-01-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h: reinstate GST_LIBRARY_ERROR_ENCODE until
          policy is set

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-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  fix bug where buffer was not assembled correctly
	* gst/elements/gsttee.c: (gst_tee_class_init), (gst_tee_init):
	  silence by default
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	  only seek if there's no more buffers that could work without seeking

2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  Add application tag (for encoding/muxing app).

2004-01-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh:
          make autopoint force, and libtoolize not copy
	* common/m4/as-docbook.m4:
          added docbook xml catalog setup check
	* common/m4/gst-doc.m4:
          use docbook check

2004-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_register):
	* gst/gsttag.h:
          add GstTagFlag

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
          sync latest API changes to docs

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstpluginfeature.c:
          fix doc snippet
	* tools/gst-inspect.c: (print_element_list):
          fix output of typefind
          add GPL header
	* tools/gst-launch.c:
          add GPL header

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gsttypefindelement.c:
	* gst/elements/gsttypefindelement.h:
	* po/POTFILES.in:
	* po/fr.po:
	* po/nl.po:
          renamed gsttypefindelement to gsttypefind, conserving CVS history

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_list_add_valist):
	* gst/gsttag.h:
          add some tags used in ogg as well
          fix _ in replaygain tags

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h:
          fix wrong GST_LIBRARY_ERROR_ENCODE addition

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:
          change _extended to _full

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	reviewed by: <delete if not using a buddy>

	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.h: fix _gst_element_error_printf prototype

2004-01-20  David Schleef  <ds@schleef.org>

	* gst/gststructure.c: (gst_structure_to_string):
	Convert function to use gst_value_serialize().
	* gst/gstvalue.c: (gst_value_serialize_list),
	(gst_value_serialize_fourcc), (gst_value_serialize_int_range),
	(gst_value_serialize_double_range), (gst_value_serialize_boolean),
	(gst_value_serialize_int), (gst_value_serialize_double),
	(gst_string_wrap), (gst_value_serialize_string),
	(gst_value_serialize), (gst_value_deserialize):
	* gst/gstvalue.h:
	Add implementations for serialize.

2004-01-20  Julien MOUTTE  <julien@moutte.net>

	* gst/gsterror.h: xvidenc.c needs GST_LIBRARY_ERROR_ENCODE. Dunno if
	we want to keep that one in the future or change xvidenc.c to use 
	another error.

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (_gst_element_error_printf):
	* gst/gstelement.h:
          privatise function

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/error:
          doc explaining error system
	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
          cleanup

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst-i18n-app.h:
	* gst/gst-i18n-lib.h:
          remove inclusion of config.h
	* po/POTFILES.in:
	* po/nl.po:
          add gst/gstelement.c

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/nl.po: updated Dutch translation

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init):
        remove ending punctuation dots

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_open_file):
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_read):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
        use GST_ERROR_SYSTEM

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_printf),
	(gst_element_error_extended):
	* gst/gstelement.h:
          add a helper printf function so we can have NULL values passed.

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.h:
          add G_STMT macros to gst_element_error, which isn't strictly
          necessary but people tell me to anyway.

2004-01-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/Makefile.am:
	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_property),
	(gst_filesrc_map_region), (gst_filesrc_get_read),
	(gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_chain):
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_default_error), (gst_element_error_func),
	(gst_element_error_extended):
	* gst/gstelement.h:
	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init), (gst_error_get_message):
	* gst/gsterror.h:
	* gst/gstinfo.c: (_gst_debug_init):
	* gst/gstmarshal.list:
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
	* po/POTFILES.in:
	* po/fr.po:
	* po/nl.po:
          change error signal
          add error categories

2004-01-18  Jeremy Simon  <jesimon@libertysurf.fr>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	Add replaygain tag

2004-01-18  Colin Walters  <walters@verbum.org>

	* examples/retag/retag.c: Call gst_init before processing
	program args.  Add g_assert to _link_many call.

2004-01-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_alloc_buffer):
	  Return a newly allocated buffer when the pad has no peer.

2004-01-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstclock.c: (gst_clock_get_time):
	  make it compile with gcc 2.95 again.
	  Patch by Scott Wheeler

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstcaps.h:
	Added gst_caps_is_simple() macro.
	* testsuite/caps/caps.c: (test1):
	* testsuite/caps/intersect2.c: (main):
	* testsuite/caps/intersection.c: (main):
	Fixes to make 'make check' work again after removing
	gst_caps_is_chained().

2004-01-15  Leif Johnson <leif@ambient.2y.net>

	* docs/random/uraeus/gstreamer_and_midi.txt: Rather large edits
	and additions to the MIDI document.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_get_compatible_pad_filtered),
	(gst_element_link_pads_filtered): Use GST_PAD_ macros instead
	of GST_RPAD_, since we don't know if it's a real or ghost pad.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstqueue.c:
	* gst/gstqueue.h:
	Fix the spelling of "treshold" and make min_threshold actually
	affect the queue.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c:
	Add lots of documentation.
	* gst/gstcaps.h:
	Deprecate a few functions.
	* gst/gstpad.c:
	Removed use of deprecated functions.

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  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	  break infinite loop by just returning instead of looping
	* gst/gstclock.c: (gst_clock_class_init), (gst_clock_set_property):
	  set event time difference correctly. Set it to 1 second instead
	  of 100ms to be more tolerant
	* gst/gstelement.c: (gst_element_set_time):
	  add debugging output

2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstqueue.c: (gst_queue_getcaps), (gst_queue_link):
	  query if buffers are inside the pool, ignore events

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-13  Julien MOUTTE <julien@moutte.net>

	* po/LINGUAS: Adding fr.
	* po/fr.po: Adding french translation.

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/grammar.y:
	* po/POTFILES.in:
	* po/nl.po:
	* tools/gst-launch.c: (xmllaunch_parse_cmdline), (main):
          translate parsing error messages

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/POTFILES.in: adding gst-launch
	* po/nl.po: updated translation, all 99 strings translated
	* tools/gst-launch.c: (idle_func), (xmllaunch_parse_cmdline),
	(found_tag), (sigint_handler_sighandler), (play_handler), (main):
          fix strings for translation

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gst.c:
          - capitalize beginnings of popt options
          - fix strings for translation
          - change gst-debug format from =N1=V1:N2=V2 to =N1:V1,N2:V2

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/README: add some notes on how to update translations

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* ABOUT-NLS: removed, is autogenerated from autopoint
	* autogen.sh: add autopoint stuff
	* configure.ac: fix up gettext stuff
	* gst/Makefile.am: add i18n headers to noinst_HEADERS
	* gst/elements/gsttypefindelement.c: add header include
	* gst/gettext.h: add header, copy from system-installed header
        * gst/gst-i18n-app.h: to be included by each app having translations
        * gst/gst-i18n-lib.h: to be included by each lib having translations
	* gst/gst.c: (init_pre): fix up gettext calls
	* gst/gst_private.h: remove i18n stuff, moving to separate headers
	* po/LINGUAS: the new way to specify translations present
	* po/Makefile.in.in: removed from cvs, autogenerated from autopoint
	* po/Makevars: the variables filled in for GStreamer
	* po/POTFILES.in: added new files with translations
	* po/de.po: has new strings
	* po/nl.po: readded, has new strings

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gsttag.c: fix some strings marked for translation

2004-01-13  Iain <iain@prettypeople.org>

	* gst/schedulers/gstoptimalscheduler.c (add_to_group): Reference the
	group when we add an element to it, cos we unref it when we remove one

2004-01-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/debug/commandline.c: (debug_not_reached):
	* testsuite/debug/output.c: (check_message):
          fix testsuite

2004-01-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* examples/cutter/.cvsignore:
	* examples/helloworld/.cvsignore:
	* examples/launch/.cvsignore:
	* examples/manual/.cvsignore:
	* examples/mixer/.cvsignore:
	* examples/pingpong/.cvsignore:
	* examples/plugins/.cvsignore:
	* examples/queue/.cvsignore:
	* examples/queue2/.cvsignore:
	* examples/queue3/.cvsignore:
	* examples/queue4/.cvsignore:
	* examples/retag/.cvsignore:
	* examples/thread/.cvsignore:
	* examples/typefind/.cvsignore:
	* examples/xml/.cvsignore:
	* gst/.cvsignore:
	* gst/autoplug/.cvsignore:
	* gst/elements/.cvsignore:
	* gst/indexers/.cvsignore:
	* gst/parse/.cvsignore:
	* gst/registries/.cvsignore:
	* gst/schedulers/.cvsignore:
	* libs/gst/bytestream/.cvsignore:
	* libs/gst/control/.cvsignore:
	* libs/gst/getbits/.cvsignore:
	* tests/.cvsignore:
	* tests/bufspeed/.cvsignore:
	* tests/instantiate/.cvsignore:
	* tests/memchunk/.cvsignore:
	* tests/muxing/.cvsignore:
	* tests/sched/.cvsignore:
	* tests/seeking/.cvsignore:
	* tests/threadstate/.cvsignore:
	* testsuite/.cvsignore:
	* testsuite/caps/.cvsignore:
	* testsuite/cleanup/.cvsignore:
	* testsuite/dynparams/.cvsignore:
	* testsuite/plugin/.cvsignore:
	* tools/.cvsignore:
	  update - this is huge, because it includes *.bb, *.bbg and *.da files
	  which are generated for gcov.

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/gststructure.c: (gst_strtoi), (gst_value_from_string): Add
	a function to parse integers in ways that strto[u]l() does not.

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* tools/gst-inspect.c: (print_caps):
	  improve output of caps a bit

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (gst_buffer_create_sub): Subbuffers should
	inherit correct flags (READONLY and DONTKEEP).

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_free_parent_mmap),
	(gst_filesrc_map_region):
	* gst/gstbuffer.c: (_gst_buffer_initialize),
	(_gst_buffer_sub_free), (gst_buffer_default_copy),
	(gst_buffer_new), (gst_buffer_create_sub),
	(gst_buffer_is_span_fast), (gst_buffer_span):
	* gst/gstbuffer.h:
	Change GstBuffer private structure element names. (all files)
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_link):
	* gst/gstqueue.h:
	Implement getcaps/pad_link functions that handle the case where
	there are data in the queue.

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstbufferstore.c:
	  initialize debugging structure correctly
	* gst/elements/gsttee.c: (gst_tee_set_property):
	  g_object_notify when property was changed
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_change_state):
	  clear caps correctly

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstqueue.c: (gst_queue_init):
	  Use better defaults for when a queue should block. This
	  gets rid of jerky playback for quite a few files.
	  It takes more memory.

2004-01-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	(gst_xml_registry_parse_padtemplate):
          make critical message slightly more useful

2004-01-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstinfo.c: (gst_debug_log), (gst_debug_log_valist),
	(gst_debug_message_get), (gst_debug_log_default):
	* gst/gstinfo.h:
	  Change gst_debug_log(_valist) to take a const format string.
	  Change prototype of log function and functions using those to 
	  take a GstDebugMessage instead of a string that requires using
	  gst_debug_message_get.

2004-01-08  David Schleef  <ds@schleef.org>

	* Makefile.am:
	* configure.ac:
	Add option --enable-gcov to build GStreamer with -fprofile-arcs
	and -ftest-coverage, which allows gcov to show information about
	testsuite coverage.

2004-01-08  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstutils.h:
	  Add GST_BOILERPLATE(_FULL), GST_PARENT_CALL and
	  GST_PARENT_CALL_WITH_DEFAULT
	* gst/elements/gstaggregator.c: 
	* gst/elements/gstbufferstore.c: 
	* gst/elements/gstfakesink.c: 
	* gst/elements/gstfakesrc.c: 
	* gst/elements/gstfdsink.c: 
	* gst/elements/gstfdsrc.c: 
	* gst/elements/gstfilesink.c: 
	* gst/elements/gstfilesrc.c: 
	* gst/elements/gstidentity.c: 
	* gst/elements/gstmd5sink.c: 
	* gst/elements/gstmultidisksrc.c:
	* gst/elements/gstpipefilter.c: 
	* gst/elements/gstshaper.c:
	* gst/elements/gststatistics.c:
	* gst/elements/gsttee.c:
	* gst/elements/gsttypefindelement.c:
	  use them.

2004-01-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-docs.sgml: remove props
	* docs/gst/gstreamer-sections.txt: remove props
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	  sync with code reorganization

2004-01-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelement.c: (gst_element_get_compatible_pad_filtered):
	Make the 'Could not find compatible pad' message more informative.

2004-01-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>
                                                                                
        * gst/elements/gstfilesink.c: (gst_filesink_set_location):
          Fix for if we pass NULL as property to location.
        * gst/elements/gstpipefilter.c: (gst_pipefilter_init),
        (gst_pipefilter_handle_event), (gst_pipefilter_chain):
          Fix for instantiate-test (see below).
        * gst/gststructure.c: (_gst_structure_parse_value):
          Fix compile error on gcc-2.96.
        * configure.ac:
        * tests/Makefile.am:
        * tests/instantiate/Makefile.am:
        * tests/instantiate/create.c: (create_all_elements), (main):
          Add a test that instantiates all elements. This makes it easy to
          track dead code for old API/design (like setting event functions
          on sink pads and so on).

2004-01-06  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstcaps.c: (gst_caps_append_structure):
	  Move the poisoning to allow a NULL structure
	* gst/gstevent.c: (_gst_event_free):
	  When freeing a navigation event, free the structure
	  also

2004-01-04  David Schleef  <ds@schleef.org>

	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_request_new_pad):
	Remove usage of gst_pad_proxy_fixate.
	* gst/gstcaps.c: (gst_caps_append), (gst_caps_append_structure),
	(gst_caps_split_one), (gst_caps_replace):
	Add poisoning code.
	* gst/gstmarshal.list:
	Add pointer__pointer for fixate signal
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator), (gst_pad_link_fixate),
	(_gst_pad_default_fixate_func), (gst_pad_proxy_fixate),
	(gst_pad_set_explicit_caps), (gst_pad_template_new):
	Add poisoning code. Add fixate signal on RealPad. Change
	set_explicit_caps() to take const GstCaps, like try_set_caps().
	* gst/gstpad.h:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/app_fixate.c: Add a test for the fixate signal

2004-01-03  David Schleef  <ds@schleef.org>

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init):
	Use gst_pad_use_explicit_caps for src pad.
	* gst/gstpad.c: (gst_pad_try_set_caps):  Check that link exists
	before using it.

2004-01-03  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_link_pads_filtered),
	(gst_element_negotiate_pads): Fix to allow DELAYED to indicate
	that linking was successful.
	* gst/gstpad.c: (gst_pad_link_free),
	(gst_pad_link_call_link_functions), (gst_pad_link_negotiate),
	(gst_pad_link_try), (gst_pad_link_unnegotiate),
	(gst_pad_unnegotiate), (gst_pad_set_explicit_caps): Pass
	GstPadLinkReturn correctly between functions, and don't fail
	when DELAYED is used (DELAYED is very important).  Better
	cleanup on unlinking and unnegotiation.  Should fix some spider
	bugs.

2004-01-02  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_base_class_init): ->padtemplates should be cleared
	in base_init, since we need to have a fresh list for every
	class.  (Alternately, we chould copy the list and share the
	actual pad templates (not the list), but that would require
	changing every plugin to move pad template registration from
	base_init to class_init.)

2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstelement.c: (gst_element_class_add_pad_template):
	  Refuse registering a pad template if another pad template
	  with the same name already exists (#114715).

2004-01-02  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (_gst_structure_is_equal_foreach),
	(gst_caps_is_equal_fixed): Add new function.
	* gst/gstcaps.h: ditto.
	* gst/gstpad.c: (gst_real_pad_class_init),
	(gst_pad_link_call_link_functions), (gst_pad_try_set_caps),
	(gst_pad_set_explicit_caps), (gst_pad_get_caps):  In try_set_caps,
	check new caps against existing caps -- if they're the same, return
	OK without renegotiating.  caps-nego-failed signal fixed so that
	the marshaller isn't VOID__OBJECT.  Also changed to G_TYPE_POINTER
	to save an extra caps copy.  Don't complete negotiation if a pad
	link function returns DELAYED.

2004-01-02  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_try_relink_filtered):
	  Fix wrong g_return_if_fail

2004-01-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbin.c: (gst_bin_class_init):
	Change the marshalling of element_added/element_removed
	to use gst_marshal_VOID__OBJECT, since gst_marshal_VOID__POINTER 
	complains that GST_TYPE_ELEMENT is not G_TYPE_POINTER

2004-01-01  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_explicit_getcaps), (gst_pad_explicit_link),
	(gst_pad_use_explicit_caps):
	* gst/gstpad.h:
	Add new functions.  gst_pad_use_explicit_caps() sets up a pad
	to use an internal getcaps and link fuction so that negotiation
	always results in the explicitly set caps.
	gst_pad_set_explicit_caps() sets the explicit caps.  These functions
	are particularly useful for decoders.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_chain),
	(gst_identity_set_property), (gst_identity_get_property):
	* gst/elements/gstidentity.h:
	* gst/gstqueue.c: (gst_queue_init):
	  Negotiation fixes.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_intersect),
	(_gst_caps_normalize_foreach), (gst_caps_normalize):
	  Implement gst_caps_normalize().
	* testsuite/caps/normalisation.c: (main):
	  Add an additional test

2003-12-31  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_init):
	  use gst_pad_proxy_getcaps()

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/elements/gstshaper.c: (gst_shaper_link):
	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_request_new_pad):
	* gst/gstqueue.c: (gst_queue_link):
	  Negotiation fixes.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_proxy_pad_link), (gst_pad_proxy_fixate):
	* gst/gstpad.h: Add functions that are useful as default pad
	link and fixate functions for elements.

2003-12-30  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_link_try):
	  Fix segfault when attempting to return to old caps

2003-12-29  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_normalize), (simplify_foreach),
	(gst_caps_structure_simplify), (gst_caps_simplify):
	* gst/gstcaps.h:
	  Add simplify function
	* gst/gstpad.c: (gst_pad_link_try), (gst_pad_try_set_caps),
	(gst_pad_perform_negotiate), (gst_pad_is_negotiated):
	* gst/gstpad.h:
	  Copy over srcnotify, sinknotify when calling old pad_link
	  functions.  Add new is_negotiated() function.
	* gst/gststructure.c: (gst_structure_copy):
	  Fix an incredibly stupid bug that should have been noticed
	  weeks ago.  _copy() returned the argument, not the new copy.

2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.c: (gst_caps_append):
	  add sanity checks
	* gst/gstcaps.h: (gst_caps_debug):
	  remove, it doesn't exist anymore.
	* gst/gstelement.c: (gst_element_threadsafe_properties_pre_run),
	(gst_element_threadsafe_properties_post_run):
	  make debugging messages not clutter up THREAD debug category
	(gst_element_negotiate_pads), (gst_element_clear_pad_caps),
	(gst_element_change_state):
	  update to new caps API
	* gst/gstinterface.c: (gst_implements_interface_cast):
	  don't put vital code in g_return_if_fail
	* gst/gstpad.c: (gst_pad_link_try), (gst_pad_try_set_caps), 
	(gst_pad_link_filtered):
	  add pst_pad_try_link and use it.
	(gst_pad_perform_negotiate), (gst_pad_renegotiate):
	  implement correctly, deprecate first one.
	(gst_pad_link_unnegotiate), (gst_pad_unnegotiate):
	  add and implement.
	(gst_pad_try_relink_filtered), (gst_pad_relink_filtered):
	  implement.
	(gst_pad_get_negotiated_caps):
	  add and implement. Make GST_PAD_CAPS call this function.
	(gst_pad_get_caps):
	  remove unneeded check..
	(gst_pad_recover_caps_error):
	  disable, always return FALSE.
	(gst_real_pad_dispose):
	  don't free caps and appfilter anymore, they're unused.
	* gst/gstpad.h:
	  Reflect changes mentioned above.
	* gst/gstsystemclock.c: (gst_system_clock_wait):
	  Make 'clock is way behind' a debugging message.
	* gst/gstthread.c: (gst_thread_change_state):
	  Fix debugging message

2003-12-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.h:
          fix GST_DEBUG_CATEGORY_INIT gtk-doc description
	* docs/gst/tmpl/gstreamer-unused.sgml:
          removed all traces of cvs conflicts

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/schedulers/cothreads_compat.h:
	* libs/Makefile.am:
          remove last instances of wingo cothread usage

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c:
	* gst/gstversion.h.in:
	* gst/parse/grammar.y:
          change comment block from /** to /* when not gtk-doc comments

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gst.c: whitespace and doc style fixes

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstformat.h: remove trailing whitespace from enum for gtk-doc

2003-12-24  Colin Walters  <walters@verbum.org>

	* gst/elements/gsttypefindelement.c:
	  gst/elements/gsttypefindelement.h: Make GstCaps parameter const.
	  Copy caps parameter. Use _POINTER to marshal caps instead of _BOXED.
	  Don't double-free caps.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstelement.c, gst/gstpad.c, gst/parse/grammar.y,
	  gst/gstcaps.c, gst/autoplug/gstspideridentity.c:
	  Many little fixes and additions of debug statements to
	  get rhythmbox working.

2003-12-23  Colin Walters  <walters@verbum.org>

	* gst/autoplug/gstspideridentity.c (gst_spider_identity_sink_loop_type_finding):
	Use GST_PAD_LINK_SUCCESSFUL.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/elements/gstaggregator.c:
	* gst/elements/gsttee.c:
	  Use gst_pad_proxy_getcaps().
	* gst/gstpad.c:
	* gst/gstpad.h:
	  Add gst_pad_proxy_getcaps(), which filter elements can use
	  as a generic getcaps implementation.
	  Fix gst_pad_get_allowed_caps().  It just wasn't doing what
	  was advertised.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstpad.c:
	  Rearrange/rewrite much of the pad negotiation code, since it
	  resembled pasta.  This actually changes the way some
	  negotiation works, since the previous code was inconsistent
	  depending on how it was invoked.  Add (internal) structure
	  GstPadLink, which is used to hold some information (more in
	  the future) about the link between two pads.  Fixes a number
	  of bugs, including random lossage of filter caps when the
	  initial negotiation is delayed.  A few functions are still
	  unimplemented.
	* gst/gstpad.h:
	  Add GST_PAD_LINK_{SUCESSFUL|FAILED}() macros.  Please use
	  these when testing GstPadLinkReturn values instead of comparing
	  directly.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: 
	* gst/gstvalue.h:
	  Rearrange lots of code.  Change registration of compare function
	  into registration of compare/serialize/deserialize functions.
	  Doesn't include implementation of gst_value_[de]serialize(),
	  but that should be easy.

2003-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstprops.sgml: removed
        * docs/gst/tmpl/gstreamer-bufferpool.sgml: removed
          David removed props and caps code, so let's remove their docs as well.
          Removed all no longer existing symbols from gstreamer-sections.txt
          
2003-12-22  Colin Walters  <walters@verbum.org>

	* gst/gsttaginterface.c, gst/gsttaginterface.h,
	  gst/gsttag.c, gst/gsttag.h:  Add interface to setting GValues
	  of tags directly.

2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstelements.c:
	  Set ranks of elements to NONE, so the autoplugger doesn't use them.
	* gst/elements/gstshaper.c: (gst_shaper_getcaps):
	  Fix proxying to new CAPS stuff. Don't call get_allowed_caps but
	  gst_caps (peer).

2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstsearchfuncs.c: (gst_autoplug_caps_intersect):
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link),
	(gst_spider_identity_getcaps), (gst_spider_identity_change_state),
	(gst_spider_identity_sink_loop_type_finding):
	* gst/autoplug/gstspideridentity.h:
	  Fix autoplugging in spider element, so it works with new caps.
	  This was mainly caused by identifying empty caps incorrectly.

2003-12-22  David Schleef  <ds@schleef.org>

	* gststructure.c, gstvalue.c, gstvalue.h: Add
	  gst_value_init_and_copy() and use it, to avoid silly mistakes in
	  using g_value_copy()

2003-12-21  David Schleef  <ds@schleef.org>

	* many, many files: Merge CAPS branch.  This includes:
	  - implemention of GstValue and several GstValue types
	  - implemention of GstStructure
	  - entire rewrite of GstCaps
	  - removal of GstProps
	  - many changes to GstPad to compensate for new caps paradigm
	  - removal of GstBufferpool
	* gst/Makefile.am, gst/gst.h, gst/gstpad.h, gst/gsttypefind.h,
	gstvalue.h, gst/gstcaps[2]*.[ch]:
	  - rename gstcaps2.[ch] to gstcaps.[ch]

2003-12-21  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_handle_pending_events),
	(gst_queue_chain), (gst_queue_handle_src_event):
	  implement timeout for sending events. Workaround for if the
	  pipeline on this queue is not passing any data.

2003-12-21  Ronald Bultje <rbultje@ronald.bitfreak.net>
                                                                                
        * ChangeLog: moved to gstreamer/docs/random/old/ChangeLog.gstreamer
        * moved CVS to freedesktop.org
