2008-02-01  Thijs Vermeir  <thijsvermeir@gmail.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/check/gstcheck.c:
	* libs/gst/check/gstcheck.h:
	Add more functions for unit testing: gst_check_drop_buffers,
	gst_check_caps_equal, gst_check_element_push_buffer_list,
	gst_check_element_push_buffer

2008-02-01  Julien Moutte  <julien@fluendo.com>

	* docs/gst/gstreamer-sections.txt: Add GST_CHECK_VERSION to the docs
	* gst/gstindex.c: (gst_index_class_init), (gst_index_free_writer),
	(gst_index_finalize), (gst_index_entry_free),
	(gst_index_add_association): Fix memory leaks.
	* gst/gstversion.h.in: Add GST_CHECK_VERSION macro.
	* plugins/indexers/gstmemindex.c: (gst_mem_index_class_init),
	(gst_mem_index_free_format), (gst_mem_index_free_id),
	(gst_mem_index_finalize): Fix memory leaks.
	* win32/common/config.h: Updated to CVS HEAD.

2008-02-01  Stefan Kost  <ensonic@users.sf.net>

	* docs/README:
	  Some more details about how the plugin docs works.

	* docs/plugins/gstreamer-plugins-sections.txt:
	  Whitespace cleanup.

2008-02-01  Stefan Kost  <ensonic@users.sf.net>

	* gst/parse/grammar.tab.pre.c:
	* gst/parse/grammar.tab.pre.h:
	* gst/parse/grammar.y:
	* gst/parse/lex._gst_parse_yy.pre.c:
	  Add delayed set-property. This allows to set properties on dynamicaly
	  created objects (pads in videomxer).

2008-02-01  Thijs Vermeir  <thijsvermeir@gmail.com>

	* gst/gstutils.c:
	Check if caps are not NULL (fix bug #510194)

2008-02-01  Wim Taymans  <wim.taymans@collabora.co.uk>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_loop),
	(gst_base_sink_get_position_paused):
	Add fixme regarding EOS in pull mode.
	Fix position reporting in PAUSED for negative rates.

2008-02-01  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstminiobject.c: (gst_mini_object_replace):
	When replacing a miniobject, do a quick equality check first so that we
	can avoid a ref/unref pair.

2008-02-01  Wim Taymans  <wim.taymans@collabora.co.uk>

	* docs/design/part-synchronisation.txt:
	Update some docs.

	* docs/plugins/Makefile.am:
	* docs/plugins/gstreamer-plugins-docs.sgml:
	* docs/plugins/gstreamer-plugins-sections.txt:
	* plugins/elements/gstmultiqueue.c:
	Add multiqueue to the docs.

2008-01-30  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	  Back to CVS

=== release 0.10.17 ===

2008-01-30  Jan Schmidt <jan.schmidt@sun.com>

	* configure.ac:
	  releasing 0.10.17, "Due Negligence"

2008-01-30  Jan Schmidt  <jan.schmidt@sun.com>

	* gst/gstutils.c:
	Revert caps != NULL check temporarily for 0.10.17 release.

2008-01-30  Thijs Vermeir  <thijsvermeir@gmail.com>

	* gst/gstutils.c:
	Check if caps are not NULL (fix bug #510194)

2008-01-30  Jan Schmidt  <jan.schmidt@sun.com>

	* gst/gstutils.c:
	Fix compilation on systems that have posix timers but no
	monotonic clock.
	Fixes: #512715
	Patch By: Cygwin Ports maintainer <yselkowitz at users dot sourceforge
	dot net>

2008-01-30  Jan Schmidt  <jan.schmidt@sun.com>

	* tools/gst-inspect.c:
	Revert previous commit in preparation for an impromptu 0.10.17 release

2008-01-29  Sebastian Dröge  <slomo@circular-chaos.org>

	* tools/gst-inspect.c: (print_interfaces),
	(print_element_properties_info), (print_pad_info),
	(print_signal_info), (print_element_info):
	Fix a few memory leaks.

2008-01-28  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	Back to CVS

=== release 0.10.16 ===

2008-01-28  Jan Schmidt <thaytan@noraisin.net>

	* configure.ac:
	  releasing 0.10.16, "Special Dispensation"

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

	* configure.ac:
	  Use AC_TRY_COMPILE instead of AC_TRY_RUN to check for
	  _POSIX_TIMER, _POSIX_MONOTONIC_CLOCK, etc. Makes configure
	  not fail when trying to crosscompile on OpenEmbedded (#511750).

2008-01-20  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/manuals.mak:
	Use $(MAKE) instead of make to fix the build if GNU make is
	called different. Fixes bug #510747.

2008-01-20  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.c: (_gst_plugin_initialize):
	  Fix old-style static plugins via GST_PLUGIN_DEFINE_STATIC
	  again, which I broke two commits ago when changing the API
	  of gst_plugin_register_static(): the g_list_foreach() in
	  _gst_plugin_register_static still assumed the old function
	  signature and would therefore fail (re-fixes #510187).

	* gst/gstplugin.c: (_num_static_plugins), (_static_plugins),
	  (_gst_plugin_register_static), (gst_plugin_register_static):
	  Revert the (technically correct) change to call g_thread_init() from
	  the pre-main() constructor. This will break programs which call
	  g_thread_init() without an if (!g_thread_supported()) guard in their
	  main function. We could just blame it on GLib or the application, but
	  it's probably best to just avoid this altogether and simply not use
	  any GLib functions here and use plain old malloc() with a simple
	  array to store the plugins to register later when gst_init() is
	  finally called (re-fixes #510187).

	* tests/check/gst/gstplugin.c: (GST_GNUC_CONSTRUCTOR_DEFINED),
	  (GST_GNUC_CONSTRUCTOR_DEFINED), (plugin_init_counter),
	  (plugin1_init), (plugin2_init), (plugin3_init), (GST_START_TEST),
	  (GST_START_TEST), (gst_plugin_suite):
	  Dumb unit test to make sure the old GST_PLUGIN_DEFINE_STATIC still
	  works.

2008-01-17  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.h: (GST_PLUGIN_DEFINE_STATIC):
	  Remove deprecation guards around GST_PLUGIN_DEFINE_STATIC.
	  This makes gtk-doc complain, but results in slightly better
	  compiler errors. The old _gst_plugin_register_static() is
	  still guarded, so there'll be a compiler warning about that
	  instead. Fixes #510187 too.

2008-01-17  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_post):
	* gst/gstplugin.c: (_gst_plugin_register_static),
	  (gst_plugin_register_static), (_gst_plugin_initialize):
	* gst/gstplugin.h: (GstPluginFilter):
	  Change API of gst_plugin_register_static() to not take
	  a GstPluginDesc, but rather just take all the arguments
	  in a GstPluginDesc directly. This is more intuitive and
	  avoids certain mistakes when porting code from
	  GST_PLUGIN_DEFINE_STATIC to gst_plugin_register_static().
	  Fixes #510187.

	* tests/check/gst/gstplugin.c:
	  Fix up for changed API.

2008-01-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/legal.xml:
	  Update FAQ, Totem actually has an exception these days.

2008-01-14  Jan Schmidt  <jan.schmidt@sun.com>

	* win32/common/libgstreamer.def:
	Add new API declarations

2008-01-14  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstminiobject.c:
	  Spelling fixes for the API docs.

2008-01-14  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasetransform.c:
	  Fix long property description for QoS.

2008-01-12  Jan Schmidt  <Jan.Schmidt@sun.com>

	* gst/gst.c:
	_gst_trace_on is already provided by gsttrace.h, no need to declare
	it ourselves.

	* docs/libs/gstreamer-libs-sections.txt:
	Add 'buffers', 'check_cond' and 'check_mutex' from libgstcheck
	and remove strange tcase_add_test which is outputting a warning.

	* libs/gst/check/gstcheck.c:
	* libs/gst/check/gstcheck.h:
	Properly declare 'buffers', 'check_cond', 'check_mutex' extern
	and define them in gstcheck.c instead of having every .c file whcih
	includes gstcheck.h be defining its own copy and relying on symbol
	interposing to marry them all, which doesn't work on Solaris.

	* tests/check/elements/identity.c: (GST_START_TEST):
	Don't define 'buffers' locally, it comes from libgstcheck.

	* tests/check/generic/sinks.c: (send_buffer):
	Fix type of variable (GstFlowReturn, not GstStateChangeReturn)

	* tests/check/gst/gststructure.c: (GST_START_TEST):
	* tests/check/gst/gstsystemclock.c: (GST_START_TEST):
	* tests/check/gst/gstutils.c: (GST_START_TEST):
	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	Add a bunch of casts to make various constants fit the types
	they're being assigned to.

2008-01-10  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstchildproxy.c:
	  Improve docs and add some ideas for making this more general-purpose.

2008-01-10  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst_private.h: (GST_CAT_TYPES):
	  Add GST_CAT_TYPES, for consistency, and so that the other
	  debug categories don't make fun of it. Spotted by Saur on IRC.

2008-01-10  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/Makefile.am:
	  Move types.h from EXTRA_DIST to noinst_HEADERS.

2008-01-10  Sebastian Dröge  <slomo@circular-chaos.org>

	* autogen.sh:
	  Add -Wno-portability to the automake parameters to stop warnings
	  about GNU make extensions being used. We require GNU make in almost
	  every Makefile anyway.

	* configure.ac:
	  Use AM_PROG_CC_C_O as a compiler that accepts both -c and -o
	  at the same time is required for per target flags.

2008-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstmacros.h:
	  Include glib/gmacros.h for G_BEGIN_DECLS. Check if
	  __GNUC__ is defined before using it.

2008-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c: (init_post):
	* gst/gstplugin.c: (_gst_plugin_register_static),
	  (gst_plugin_register_static), (_gst_plugin_initialize),
	  (gst_plugin_register_func):
	* gst/gstplugin.h: (GST_PLUGIN_DEFINE_STATIC):
	  API: add gst_plugin_register_static() and deprecate
	  GST_PLUGIN_DEFINE_STATIC, since it's not portable
	  (#498924).
	  Also, in _gst_plugin_register_static(), make sure to call
	  g_thread_init() before calling GLib functions such as
	  g_list_append() if we're not initialised yet, since that
	  may lead to random crashes with older GSlice/GLib versions.

	* tests/check/gst/gstplugin.c:
	  Adapt unit test to above changes.

2008-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst_private.h: (STRUCTURE_ESTIMATED_STRING_LEN):
	* gst/gstcaps.c: (gst_caps_to_string):
	* gst/gststructure.c: (GST_ASCII_IS_STRING),
	  (priv_gst_structure_append_to_gstring), (gst_structure_to_string):
	  Yet another gratuitous GString micro-optimisation: add a (private)
	  function that serialises a structure appending to an existing
	  GString, so that when we serialise caps we don't need to alloc+free
	  a throwaway GString for each structure (each of which also entailing
	  multiple reallocs on the way); also use g_string_sized_new() in
	  various places with an approximate string length to avoid reallocs
	  within GString. See #500143.

2008-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_id_set_value):
	  Always check UTF-8 conformance of structure strings and not only
	  if the debugging system is enabled; reasoning: the behaviour of
	  the actual code shouldn't really change depending on whether the
	  debugging system is enabled or not (#508291).

2008-01-09  Stefan Kost  <ensonic@users.sf.net>

	* Makefile.am:
	  Remove old coverage target in favour of "make lcov".

2008-01-09  Wim Taymans  <wim.taymans@collabora.co.uk>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
	(gst_base_src_loop):
	The start segment for reverse playback goes from start to last_stop.

2008-01-09  Wim Taymans  <wim.taymans@collabora.co.uk>

	Patch by: Peter Kjellerstedt <pkj axis com>

	* gst/gstclock.h:
	Cast the results from the timeval/spec_to_time macros to what the
	docs say it casts to, a GstClockTime. fixes #508175.

2008-01-09  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstbuffer.c:
	Update some comments.

	* tools/gst-inspect.c: (print_element_properties_info):
	Improve printing of flags.

2008-01-08  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasetransform.c:
	  (gst_base_transform_transform_size):
	  Print element name with g_warning() if there's a problem
	  with the unit size.

2008-01-07  David Schleef  <ds@schleef.org>

	Patch by: Damien Lespiau <damien.lespiau@gmail.com>

	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstcontrolsource.h:
	* libs/gst/controller/gstinterpolationcontrolsource.h:
	* libs/gst/controller/gstlfocontrolsource.h:
	* libs/gst/dataprotocol/dataprotocol.h:
	  Fix empty prototypes.  Fixes bug #507957.

2008-01-07  David Schleef  <ds@schleef.org>

	* docs/faq/dependencies.xml: Fix typo.

2008-01-07  Wim Taymans  <wim.taymans@collabora.co.uk>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_default_do_seek),
	(gst_base_src_loop):
	Don't update the last_stop position in do_seek, that's the position we
	did a seek to.
	Read backwards when we have a negative rate.

	* tests/check/elements/filesrc.c: (event_func), (wait_eos),
	(setup_filesrc), (cleanup_filesrc), (GST_START_TEST),
	(filesrc_suite):
	Add check for reverse reading.

2008-01-07  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Alexis Ballier <aballier at gentoo org>

	* tests/check/gst/gstabi.c:
	* tests/check/gst/struct_ppc64.h:
	* tests/check/libs/libsabi.c:
	* tests/check/libs/struct_ppc64.h:
	  Decide which header to include based on the userland ABI target
	  and not the kernel/cpu. Fix up structure sizes of ppc64 header
	  for 64-bit userland (#503590).  Might need something similar for
	  x86 too.

2008-01-05  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstdebugutils.c: (_gst_debug_bin_to_dot_file):
	  Log the reason why fopen fails in addition to the fact that it failed.
	  
2008-01-04  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/parse.l:
	Use "%option never-interactive" to prevent useless calls to isatty()
	on every input when parsing. Also use "%option noinput" to not define
	the static input/yyinput functions which we don't use anyway. This
	removes a compiler warning with gcc 4.3 and saves some bytes in the
	library.
	
	* gst/parse/lex._gst_parse_yy.pre.c:
	Regenerated for the above change.

2008-01-04  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstpad.c: (fixate_value):
	Don't crash when trying to fixate and empty list.
	Fixes #506643.

2008-01-03  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/faq/gst-uninstalled:
	Clarify the comments to make the usage of this script and what it
	does easier to understand.

2008-01-01  Thijs Vermeir  <thijsvermeir@gmail.com>

	* tools/gst-plot-timeline.py:
	Add more options to gst-plot-timeline

2007-12-31  Wim Taymans  <wim.taymans@collabora.co.uk>

	* docs/design/part-synchronisation.txt:
	Some more info on how the stream_time in GstBaseSink is done.

2007-12-30  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/generic/sinks.c: (gst_sinks_suite):
	  Put back the tcase_set_timeout(), apparently it's needed after
	  all; fix it up in a way that makes things work with valgrind too.

2007-12-30  Thijs Vermeir  <thijsvermeir@gmail.com>

	* gst/gstdebugutils.c:
	  Add warning when failed to open file for writing.

2007-12-28  Tim-Philipp Müller  <tim at centricular dot net>

	Based on patch by: Laurent Glayal  <spglegle yahoo fr>

	* gst/gstvalue.c: (gst_value_is_fixed):
	  Optimisation: bail out of the loop as early as possible (#500143).

2007-12-28  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstcaps.c: (gst_caps_to_string):
	* gst/gstinfo.c: (gst_debug_construct_term_color):
	* gst/gstparse.c: (gst_parse_launchv):
	* gst/gstutils.c: (gst_util_dump_mem):
	* gst/gstvalue.c: (gst_value_serialize_any_list),
	  (gst_value_transform_any_list_string):
	  Bunch of gratuitous nano-optimisations.

2007-12-28  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/generic/sinks.c: (async_done_func),
	  (async_done_eos_func):
	  Fix leak in unit test (bus sync handler must unref the message
	  if it returns GST_BUS_DROP). Don't fiddle with the default test
	  timeout, this is smaller than the current preconfigured value
	  via CK_DEFAULT_TIMEOUT, and also breaks things with valgrind
	  because it overrides the value specified in CK_DEFAULT_TIMEOUT.

2007-12-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	Based on Patch by: Laurent Glayal <spglegle at yahoo dot fr>

	* configure.ac:
	Check for stdio_ext.h for the filesink changes.

	* plugins/elements/gstfilesink.c: (buffer_mode_get_type),
	(gst_file_sink_class_init), (gst_file_sink_init),
	(gst_file_sink_dispose), (gst_file_sink_set_property),
	(gst_file_sink_get_property), (gst_file_sink_open_file),
	(gst_file_sink_close_file):
	* plugins/elements/gstfilesink.h:
	Add two properties to control the buffering mode and size.
	API: GstFileSink::buffer-mode
	API: GstFileSink::buffer-size
	Fixes #500150.

2007-12-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstsystemclock.c: (gst_system_clock_id_wait_jitter_unlocked):
	Add some more docs to explain why a FIXME was wrongly added. 

2007-12-22  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstobject.c:
	  Fix typo in the gst_object_{ref,unref} documentation.

2007-12-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/libs/controller.c:
	* tests/check/libs/typefindhelper.c:
	* tests/check/pipelines/parse-launch.c:
	  Don't use GST_PLUGIN_DEFINE_STATIC, it is not portable and is
	  going to be deprecated (see #498924).

2007-12-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttypefind.c: (gst_type_find_register):
	  Make gst_type_find_register work for static typefind functions,
	  ie. allow passing plugin == NULL (prerequisite for #498924).

	* gst/gstelementfactory.c: (gst_element_register):
	  Small docs addition.

2007-12-21  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstpad.c: (gst_pad_dispose):
	Really unlink the peer pad instead of setting the peer pointer to NULL
	when we dispose the pad.
	This correctly calls the unlink functions and makes sure that the peer
	does not have a handle to invalid memory. See #504671.

	* tests/check/gst/gstpad.c: (GST_START_TEST), (gst_pad_suite):
	Add testsuite for above case.

2007-12-20  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Peter Kjellerstedt <pkj axis com>

	* libs/gst/check/gstcheck.h:
	  Fix detection of the check version we're compiling against (would
	  otherwise break if check goes v0.10.0); correctly report the
	  name of the failed test again in case of failure, instead of
	  just 'tf' (fixes #504499).

2007-12-19  Wim Taymans  <wim.taymans@collabora.co.uk>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_send_event),
	(gst_base_src_get_range), (gst_base_src_pad_get_range),
	(gst_base_src_loop), (gst_base_src_set_flushing),
	(gst_base_src_change_state):
	Allow sending EOS to the source to make it send out an EOS event from
	the streaming thread.
	Update docs and deprecate the old NULL/READY shutdown method.

	* tests/check/libs/basesrc.c: (GST_START_TEST),
	(gst_basesrc_suite):
	Add unit test for controlled shutdown.

2007-12-19  Wim Taymans  <wim.taymans@collabora.co.uk>

	* docs/design/part-synchronisation.txt:
	Small updates.

	* gst/gstsegment.c: (gst_segment_set_seek),
	(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
	(gst_segment_to_running_time):
	The seek format can be different from the segment format when the start
	and stop values are not to be updated, when we only do a rate change for
	example.

	* tests/check/gst/gstsegment.c: (GST_START_TEST),
	(gst_segment_suite):
	Add a testcase for the rate-only seeks, checking that the format is
	correctly ignored when start and stop are not updated.

2007-12-18  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Matthias Bolte <photon at mail dot upb dot de>

	* win32/vs8/grammar.vcproj:
	* win32/vs8/libgstcontroller.vcproj:
	* win32/vs8/libgstreamer.vcproj:
	Fix compilation with VS8 and include some missing files.

2007-12-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c:
	  Small docs addition: mention that the strings returned by
	  gst_tag_list_get_string*() are in UTF-8 encoding.

2007-12-17  Tim-Philipp Müller  <tim at centricular dot net>

	* Makefile.am:
	  The check-exports stuff moved to common/win32.mak, so include that.

2007-12-17  Wim Taymans  <wim.taymans@collabora.co.uk>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
	(gst_base_src_perform_seek), (gst_base_src_get_range),
	(gst_base_src_set_playing), (gst_base_src_change_state):
	Make _wait_playing() not check any variables so that we can call this
	function from subclasses. Move the checks elsewhere similar to
	_wait_preroll() in basesink.
	Add some debugging.
	Only signal the LIVE cond when we are going back to PLAYING.

2007-12-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistrybinary.c: (gst_registry_binary_write_cache):
	  Use g_remove() and g_rename(). Check result of g_rename(), and
	  don't leak the open file descriptor if we error out when writing.

	* gst/gstregistryxml.c: (load_plugin), (gst_registry_xml_write_cache):
	  Must check the return value of close() after writing out the new
	  registry file.  Sometimes write problems such as out-of-diskspace
	  are only reported when the file is closed and not already during
	  the write.  This may have caused partial/broken registry files in
	  some rare circumstances. Should fix #503675.

2007-12-16  Edward Hervey  <edward.hervey@collabora.co.uk>

	* docs/gst/.cvsignore:
	* docs/libs/.cvsignore:
	* docs/plugins/.cvsignore:
	Ignore files generated by new common/* modifications

2007-12-15  Stefan Kost  <ensonic@users.sf.net>

	* win32/common/libgstbase.def:
	  Yes, you can also have a <TAB> if you want.

2007-12-15  Stefan Kost  <ensonic@users.sf.net>

	* win32/common/libgstbase.def:
	  Add new basetransform API to win export file.

2007-12-15  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/gst/gstbin.c:
	  Adjust the test to the refcount change two days ago.

2007-12-14  David Schleef  <ds@schleef.org>

	* docs/faq/getting.xml: Fix typo.

2007-12-14  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasetransform.c: (gst_base_transform_init),
	  (gst_base_transform_prepare_output_buffer),
	  (gst_base_transform_set_gap_aware):
	* libs/gst/base/gstbasetransform.h:
	  API: Add gst_base_transform_set_gap_aware() to control whether
	  the element correctly handles GST_BUFFER_FLAG_GAP or shouldn't
	  get buffers with this flag at all. Fixes #503231.

2007-12-13  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesink.c:
	* libs/gst/base/gstbasesrc.c:
	* libs/gst/base/gstbasetransform.c:
	  Replace gst_pad_get_parent by GST_OBJECT_PARENT inside streaming
	  thread. Correct log message in gstbasesrc.c.

2007-12-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.c: (element_find_unconnected_pad):
	  Fix possible compiler warning (#503417).

2007-12-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstobject.c: (gst_object_dispatch_properties_changed):
	  Don't use GST_CAT_EVENT here for logging, it makes no sense.

2007-12-13  Sebastian Dröge  <slomo@circular-chaos.org>

	* tools/gst-inspect.c: (print_element_properties_info):
	  Add support for GstFraction properties.

2007-12-12  Tim-Philipp Müller  <tim at centricular dot net>

	* Makefile.am:
	  Add check-exports target and run it as part of 'make check'
	  (see #499140 and #493983).

	* gst/gst_private.h:
	* gst/gstelementfactory.h:
	* gst/gstghostpad.c: (gst_proxy_pad_class_init):
	* gst/gstinfo.c: (_priv_gst_in_valgrind), (_gst_debug_init),
	  (_priv_gst_in_valgrind):
	* gst/gstinfo.h: (GstLogFunction):
	* gst/gsttypefind.c: (type_find_debug), (GST_CAT_DEFAULT),
	  (gst_type_find_register):
	* gst/gsttypefindfactory.c: (type_find_debug), (GST_CAT_DEFAULT),
	  (gst_type_find_factory_get_type):
	* libs/gst/controller/gstcontroller.c: (GST_CAT_DEFAULT),
	  (GST_CAT_DEFAULT), (parent_class), (priv_gst_controller_key),
	  (gst_controller_new_valist), (gst_controller_new_list),
	  (_gst_controller_dispose), (_gst_controller_class_init):
	* libs/gst/controller/gstcontrolsource.c: (GST_CAT_DEFAULT):
	* libs/gst/controller/gsthelper.c: (GST_CAT_DEFAULT),
	  (GST_CAT_DEFAULT), (gst_object_uncontrol_properties),
	  (gst_object_get_controller), (gst_object_set_controller),
	  (gst_object_suggest_next_sync), (gst_object_sync_values),
	  (gst_object_set_control_source), (gst_object_get_control_source),
	  (gst_object_get_value_arrays), (gst_object_get_value_array),
	  (gst_object_get_control_rate), (gst_object_set_control_rate):
	* libs/gst/controller/gstinterpolation.c: (GST_CAT_DEFAULT):
	* libs/gst/controller/lib.c: (GST_CAT_DEFAULT):
	  Make some functions that should be static static; rename some
	  private symbols so that they don't get exported; add some FIXME
	  comments so we can move accidentally exported functions into
	  our private section in 0.11.

	* win32/common/libgstreamer.def:
	  Add gst_utils_get_timestamp().

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

	* gst/gstvalue.c:
	* gst/gstvalue.h:
	  Add more missing "Since:" tags to docs.

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

	* gst/gstutils.c:
	  Add mising "Since:" to docs.

2007-12-11  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstplugin.c:
	  Include "glib-compat-private.h" to fix the build on system with
	  glib < 2.10. Fixes #503131.

2007-12-11  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstutils.c:
	* gst/gstutils.h:
	  Actually its not PURE as it gets the time from elsewhere.

2007-12-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.h:
	* gst/gstdebugutils.c:
	* gst/gstinfo.c:
	* gst/gstutils.c:
	* gst/gstutils.h:
	* libs/gst/base/gstbasesink.c:
	* tools/gst-launch.c:
	  Change GST_GET_TIMESTAMP into gst_util_get_timestamp and replace all
	  uses as we don't have HAVE_POSIX_TIMERS in public headers.
	  Thanks Tim for spotting.
	  API: gst_util_get_timestamp

2007-12-09  Sebastian Dröge  <slomo@circular-chaos.org>

	* configure.ac:
	  Don't define GST_DISABLE_DEPRECATED for releases. Fixes #498181.

2007-12-08  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_validate_name),
	  (gst_structure_new_valist), (gst_structure_parse_value),
	  (gst_structure_from_string):
	  Don't crash in _from_string() if the structure name is not valid
	  (fixes #501560).  Allow structure names to start with a number
	  again (this apparently broke the ubuntu codec installer).

	* tests/check/gst/gststructure.c: (GST_START_TEST), (GST_START_TEST),
	  (GST_START_TEST):
	  Add unit test for the crash; update unit tests for new behaviour.

2007-12-03  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstutils.c:
	Clarify gst_element_get_compatible_pad() documentation.
	Fixes #500919.

2007-12-02  Sebastian Dröge  <slomo@circular-chaos.org>

	* tests/check/Makefile.am:
	  Don't forget to dist {gst,libs}/struct_hppa.h.

2007-11-28  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesink.c:
	  Use new API to get elapsed time.

2007-11-28  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstdebugutils.c:
	* gst/gstinfo.c:
	  Fix wrong order of args in GST_CLOCK_DIFF() usage.

	* tools/gst-launch.c:
	  Use new API to get elapsed time.

2007-11-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.h:
	* gst/gstdebugutils.c:
	* gst/gstinfo.c:
	  Rename new API + ChangeLog surgery to remove old name from last entry..

2007-11-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.h:
	* gst/gstdebugutils.c:
	* gst/gstinfo.c:
	  Now hide the different clock stuff behind a macro.

2007-11-28  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* gst/gstdebugutils.c:
	* gst/gstinfo.c:
	  Apply the posix-timer check from #361155. Conditionally use the posix
	  timer for logging. This gives better timestamp precission, less
	  overhead and no ntp jitter.

2007-11-28  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstminiobject.c: (gst_mini_object_get_type),
	(gst_mini_object_class_init), (gst_mini_object_copy_default),
	(gst_mini_object_finalize), (gst_mini_object_copy),
	(gst_mini_object_is_writable), (gst_mini_object_make_writable),
	(gst_mini_object_replace), (param_mini_object_validate),
	(gst_param_spec_mini_object_get_type):
	Some cleanup and checking against invalid function parameters.

2007-11-28  Wim Taymans  <wim.taymans@gmail.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.h:
	* tests/check/gst/gstsystemclock.c: (GST_START_TEST),
	(gst_systemclock_suite):
	Start merging in the easy bits of #361155, the monotonic clock patch.
	This one adds a few handy macros with docs and a testsuite.

2007-11-27  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstfilesink.c: (gst_file_sink_event):
	Be a bit smarter when seeking, like, don't try to do a seek when it's
	not needed. This avoids errors when the file is not seekable.
	Fixes #499771.

2007-11-26  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types.in:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstpreset.c:
	* gst/gstpreset.h:
	* plugins/elements/gstqueue.c:
	  Due to popular request remove preset interface again. :-(.

2007-11-22  Stefan Kost  <ensonic@users.sf.net>

	* tools/gst-inspect.c:
	  Print 'default value' for enums and flags too.

2007-11-22  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/profiling.txt:
	  More ideas.

	* gst/gstbin.c:
	  Fix typo and give better log output.

	* gst/gstdebugutils.c:
	* gst/gstdebugutils.h:
	  More ideas, make graphs a bit smaller and fix param name in macro.

2007-11-22  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  Try harder to use the return value from fgets().

2007-11-21  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  For theses two fgets we handle the error below.

2007-11-21  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_send_event):
	Only send upstream events upstream. Fixes #498746.

2007-11-21  Wim Taymans  <wim.taymans@gmail.com>

	Patch by: Laurent Glayal <spglegle at yahoo dot fr>

	* plugins/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_transform_ip),
	(gst_identity_set_property), (gst_identity_get_property):
	* plugins/elements/gstidentity.h:
	Add property to disable handoff signal emission. Fixes #498694.
	API: GstIdentity::signal-handoffs

2007-11-21  Julien Moutte  <julien@fluendo.com>

	* docs/faq/gst-uninstalled: Yet another missing library for the
	uninstalled script (fft)

2007-11-21  Jan Schmidt  <jan.schmidt@sun.com>

	* docs/faq/developing.xml:
	Add a question about how to submit new translations.

	* docs/random/release:
	Update the contact email address for the Translation Project

	* plugins/elements/gstfdsrc.c:
	The parent_class for fdsrc is pushsrc, not GstElement.

2007-11-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  Plug a leak and fix saving.

2007-11-20  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/gst/gstreamer-sections.txt:
	Add new gst_preset__get_property_names() function to the docs
	to fix the build.

2007-11-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	* gst/gstpreset.h:
	  Change _get_preset_names API to return a strv with copies. Add
	  _get_property_names to allow implementations to filter and provide
	  good default implementation.

2007-11-20  Julien MOUTTE  <julien@moutte.net>

	* docs/faq/gst-uninstalled: Add another library to the uninstalled
	script (sdp).

2007-11-19  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  More cleanups, docs, and TODOs from comments that now slowly come in.

2007-11-19  Julien MOUTTE  <julien@moutte.net>

	* docs/faq/gst-uninstalled: Add new base libraries in the LD 
	search path.

2007-11-19  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  Fix bogus warning and make the property type specific code more
	  similar.

2007-11-19  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpreset.c: (gst_preset_default_create_preset): Make
	it build on OS X.

2007-11-19  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
	(gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_change_state_func), (gst_bin_continue_func):
	Change email, cleanups add some more debug and comments.
	Also set bus and clock on new elements when the pipeline was in error.

2007-11-18  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbin.c:
	* gst/gstdebugutils.c:
	  Fix build with --disable-gst-debug. Fixes #497859.
	  Spotted by Sameer Naik.

2007-11-17  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstevent.c:
	  Little documentation improvment.

	* gst/gstpreset.c:
	  More TODO cleanups. Remove c++ comments.

	* libs/gst/controller/gstcontroller.c:
	  Add TODO and use quark from static string.

	* tests/check/gst/gstmessage.c:
	* tests/check/gst/gststructure.c:
	  Use quark from static string.

2007-11-17  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpreset.c:
	  Add some comments and TODOs.

	* gst/gstpreset.h:
	  Add padding for future changes.

	* plugins/elements/gstqueue.c:
	  Implement the iface.	  

2007-11-17  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types.in:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstpreset.c:
	* gst/gstpreset.h:
	  Add the preset interface (Fixes #396779). Do some doc cleanups along.

2007-11-16  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:

	Back to CVS

=== release 0.10.15 ===

2007-11-15  Jan Schmidt <jan.schmidt@sun.com>

	* configure.ac:
	  releasing 0.10.15, "October"

2007-11-14  Jan Schmidt  <jan.schmidt@sun.com>

	* win32/vs6/libgstreamer.dsp:
	Convert line endings back to DOS.

2007-11-13  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-tagreading.txt:
	* docs/random/ensonic/profiling.txt:
	Update fast tagreading draft and performance profiling ideas.

2007-11-09  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_set_last_buffer):
	Don't hold the object lock when unreffing a buffer because it could
	cause a deadlock when the finalize function wants to grab the object
	lock too. Fixes #495133.

2007-11-09  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstsegment.c: (gst_segment_set_newsegment_full),
	(gst_segment_to_stream_time), (gst_segment_to_running_time):
	Also accumulate time correctly when doing reverse playback. Fixes
	#488201,
	When converting to running and stream time, use default values for
	start/stop/time/accum when comparing different formats. Fixes #494245.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	Do running/stream time in TIME format.

	* tests/check/gst/gstsegment.c: (GST_START_TEST),
	(gst_segment_suite):
	2 new unit tests for segment accumulation.

2007-11-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_pre):
	* gst/gstdebugutils.c: (priv_gst_dump_dot_dir), (debug_dump_element),
	  (_gst_debug_bin_to_dot_file):
	  Move getenv() back into gst_init, so everyone can live happily
	  ever after. Make sure the symbol isn't exported though.

2007-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Sebastien Moutte  <sebastien moutte net>

	* win32/common/gstenumtypes.c:
	* win32/common/gstenumtypes.h:
	  Update enum types.

	* win32/vs6/libgstreamer.dsp:
	  Update vs6 project files (#494343).

2007-11-06  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query),
	(gst_base_src_perform_seek), (gst_base_src_default_event),
	(gst_base_src_set_flushing), (gst_base_src_activate_push),
	(gst_base_src_activate_pull):
	Unify flushing code, remove some old unlock code that is no longer used.
	Take the streaming lock when seeking to avoid races. Fixes #492729.
	Added some more comments.

2007-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (_gst_disable_segtrap):
	  Make  _gst_disable_segtrap static, it's only used in gstplugin.c and
	  we can use gst_segtrap_is_enabled() there now that we have that API.
	  Move _gst_debug_dump_dot_dir into gstdebugutils.c, there's no reason
	  to do the getenv here (and export the variable).

	* gst/gstdebugutils.c: (debug_dump_element),
	  (_gst_debug_bin_to_dot_file), (_gst_debug_bin_to_dot_file_with_ts):
	  Don't use VLAs which is a C99ism and throws off MSVC (#493983).

	* gst/gstinfo.c: (_priv_gst_info_start_time), (_gst_debug_init),
	  (gst_debug_log_default):
	  Rename _gst_info_start_time to priv_gst_info_start_time so it
	  doesn't get exported (was never in any header).

	* gst/gstplugin.c: (_gst_plugin_fault_handler_setup),
	  (gst_plugin_loading_mutex):
	  Make static mutex gst_plugin_loading_mutex really static (was never
	  in any header), and use gst_segtrap_is_enabled() instead of
	  _gst_disable_segtrap.

	* gst/gsttrace.c: (_gst_trace_default):
	  Make local _gst_trace_default static (was never in any header).

2007-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>

	* win32/common/libgstbase.def:
	* win32/common/libgstcontroller.def:
	* win32/common/libgstdataprotocol.def:
	* win32/common/libgstnet.def:
	* win32/common/libgstreamer.def:
	  Add more missing symbols, remove some duplicates, and sort
	  as the 'sort' command sorts it (partially fixes #493983).

2007-11-06  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstelement.c: (gst_element_set_state_func):
	Only change the state cookie if a different state was set on the
	element. See #492729.

2007-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c:
	  Remove unused and uninitialised type variables that were still
	  exported for some reason (they were never in any header files
	  though).

2007-11-06  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
	(gst_base_sink_do_sync), (gst_base_sink_preroll_object),
	(gst_base_sink_event), (gst_base_sink_get_position_last),
	(gst_base_sink_get_position_paused), (gst_base_sink_get_position),
	(gst_base_sink_change_state):
	Don't try to report a 0 position when we don't know, return -1 and FALSE
	instead. This mostly happens when we are prerolling.
	Make sure we can report the right position before we post the ASYNC_DONE
	message so that a message handler can query position without races.

	* tests/check/generic/sinks.c: (send_eos), (GST_START_TEST),
	(async_done_handoff), (async_done_func), (send_buffer),
	(async_done_eos_func), (gst_sinks_suite):
	Add two tests for the above.

2007-11-06  Wim Taymans  <wim.taymans@gmail.com>

	* MAINTAINERS:
	Update with new email address.

	* docs/design/part-TODO.txt:
	Add some more info about future pad-block and negotiation changes.

	* docs/design/part-buffering.txt:
	Add some ideas about buffering reporting.

2007-11-06  Jan Schmidt  <jan.schmidt@sun.com>

	* tests/check/gst/gstobject.c:
	Disable silly racy test that always fails on this combination of CPU
	and kernel.

2007-11-03  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Murray Cumming  <murrayc@murrayc.com>

	* gst/gstobject.c:
	  Corrected the registration of the parent-set and parent-unset
	  signals: The parameter is a GstObject, not a GObject (#493134).

2007-11-02  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst_private.h:
	* gst/gstbuffer.h:
	* gst/gstevent.h:
	* gst/gstformat.h:
	* gst/gstmessage.h:
	* gst/gstplugin.h:
	* gst/gstquery.h:
	* gst/gsttaglist.h:
	* gst/gstvalue.h:
	  Move declaration of private _gst_foo_initialize() functions into
	  our private header file where they should have been all along.

2007-11-02  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/plugins/gstreamer-plugins-sections.txt:
	* gst/gstdebugutils.h:
	* gst/gstxml.h:
	* plugins/elements/gstqueue.c:
	  gtk-doc fixes; trailing-comma-in-enum fix.

2007-11-02  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (gst_deinit):
	  Clean up on deinit (not the external ones though, doesn't seem to be
	  needed for some reason).

2007-11-01  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.h: (GST_DEBUG_CATEGORY_EXTERN):
	  Remove __declspec(dllimport) for MSVC that was copied over into core
	  from a plugin, obviously without ever having been tested (note the
	  single underscore in _declspec in the initial commit), and that doesn't
	  really make sense.  See #492077.

2007-11-01  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_post):
	* gst/gstevent.c: (_gst_event_initialize):
	* gst/gstquery.c: (_gst_query_initialize):
	* libs/gst/dataprotocol/dataprotocol.c (gst_dp_init):
	  g_type_class_ref() other types as well, see #349410 and #64764.

	* gst/gstbuffer.c: (_gst_buffer_initialize):
	* gst/gstmessage.c: (_gst_message_initialize):
	  Simplify existing g_type_class_ref().

2007-11-01  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstformat.c: (_gst_format_initialize):
	  g_type_class_ref() our GstFormat type to make sure we avoid the
	  thread-unsafe bits of the GObject/GType system, ie. bug #349410 and
	  bug #64764. Should fix intermittent tee unit test failures (#474823).

2007-11-01  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/elements/tee.c: (test_num_buffers):
	  Simplify, simplify, simplify - or not.  Rewrite unit test
	  not to use gst_parse_launch(); allow N sub-streams. Increasing
	  the number of sub-streams seems to reproduce #474823 more easily.

2007-10-31  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>

	* gst/gsttrace.c:
	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_new):
	* libs/gst/net/gstnettimepacket.c: (gst_net_time_packet_send):
	* libs/gst/net/gstnettimeprovider.c: (gst_net_time_provider_new):
	  Fix a couple of missing includes for MSVC2005 and a C99 issue. Also,
	  starting with 2.14.0, GLib won't provide a pipe() macro any longer,
	  so use _pipe() directly (#492077).

	* win32/common/dirent.c: (_treaddir):
	  Add a couple of casts to make it build without warnings with MSVC.

	* win32/common/libgstreamer.def:
	  Add some more symbols that need to be exported.

2007-10-31  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/examples/metadata/read-metadata.c: (message_loop):
	  Use _KEEP as merge mode rather than _KEEP_ALL, so tags
	  arriving in a second or third tag message are added to
	  the tag list as well.

2007-10-31  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesrc.c:
	  Its "Since:" and not "@Since:". And remove an superflous cast.

2007-10-30  Wim Taymans  <wim.taymans@gmail.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_get_last_buffer), (gst_base_sink_set_last_buffer),
	(gst_base_sink_get_property), (gst_base_sink_render_object),
	(gst_base_sink_preroll_object),
	(gst_base_sink_queue_object_unlocked), (gst_base_sink_event),
	(gst_base_sink_change_state):
	* libs/gst/base/gstbasesink.h:
	Add a new last-buffer property that contains the last buffer used in
	basesink for preroll or rendering. useful for making snapshots.
	API: gst_base_sink_get_last_buffer()
	API: GstBaseSink::last-buffer

2007-10-29  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/running.xml:
	* gst/gst.c:
	* gst/gstdebugutils.c:
	* gst/gstdebugutils.h:
	* tools/gst-launch.c:
	  Improve bin graph dumping, by using the envvar to specify a path.
	  Rename the envvar to GST_DEBUG_DUMP_DOT_DIR.

2007-10-29  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	  (gst_type_find_element_handle_event),
	  (gst_type_find_element_activate):
	  Post special error message if we can't determine the type of a stream
	  because it's empty.

2007-10-29  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/running.xml:
	* gst/gstdebugutils.c:
	  Document new env-var. Add one log-line after dumpng a graph.

2007-10-26  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	  Ugly hack to put the (recently removed and non-portable, apparently)
	  -Wl,--export-dynamic back into libgstcheck's LDFLAGS when we're using
	  GNU ld, because without that 'make check' fails miserably on my debian
	  stable box.  Someone with more knowledge of linker intricacies and
	  portability issues than me fix this properly please.

2007-10-25  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
	Reset last seen position after flushing so that we don't report the old
	position anymore.

2007-10-25  Jan Schmidt  <Jan.Schmidt@sun.com>

	* gst/gstelementfactory.c: (gst_element_register):
	* gst/gsturi.h:
	Patch from Alessandro Decina adding get_type_full and
	get_protocols_full private vfuncs to the URIHandler interface
	to allow bindings to support creating URI handlers. 
	Partially fixes: #339279
	API: GstURIHandlerInterface::get_type_full
	API: GstURIHandlerInterface::get_protocols_full

2007-10-25  Jan Schmidt  <Jan.Schmidt@sun.com>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_set_property),
	(gst_multi_queue_request_new_pad), (gst_single_queue_flush),
	(gst_multi_queue_loop), (gst_multi_queue_sink_activate_push):
	Make it so that pads are considered linked until a buffer is pushed
	and discovered otherwise. This avoids problems with decodebin2 hanging
	after a seek in the filesrc ! decodebin2 name=d ! fakesink d. ! fakesink
	case.

	Make sure we lock the multiqueue when updating the max-size properties.
	
	Fix a crash on Solaris in a debug statement in get_request_pad that
	passes a NULL string to GST_DEBUG. 

	* tests/check/elements/multiqueue.c: (mq_dummypad_chain),
	(run_output_order_test):
	Fix the test to allow the first buffer on not-linked pads to come out
	of sequence while multiqueue discovers that they are not-linked.

2007-10-25  Jan Schmidt  <Jan.Schmidt@sun.com>

	* configure.ac:
	* libs/gst/check/Makefile.am:
	Use a custom export symbol regex for libgstcheck, as it needs
	to export symbols that don't match the standard GStreamer gst_*
	pattern, and  --export-dynamic is not portable (only works on 
	GNU ld)

	* libs/gst/check/gstcheck.c: (gst_check_setup_src_pad),
	(gst_check_setup_sink_pad):
	Make sure to pass a message parameter to the fail_* macros.

	* tests/check/gst/gstinfo.c: (GST_START_TEST):
	Fix some compiler warnings.

2007-10-25  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gststructure.c: (test_to_string):
	  Disable test that checks that white spaces are not allowed
	  in structure names or field names, since we need to
	  support that for now for backwards compatibility reasons.

2007-10-24  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c:
	* gst/gsttaglist.h:
	  API: add GST_TAG_ARTIST_SORTNAME
	  API: add GST_TAG_ALBUM_SORTNAME
	  API: add GST_TAG_TITLE_SORTNAME
	  Add tag variants for sorting (#414539).

2007-10-24  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c:
	  Also allow white space for names so we don't break
	  backwards compatibility.

2007-10-22  Wim Taymans  <wim.taymans@gmail.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-segments.txt:
	* docs/design/part-streams.txt:
	Small updates.

2007-10-22  Edgard Lima  <edgard.lima@indt.org.br>

	* docs/gst/gstreamer-sections.txt:
	 Fixed documentation from my previous commit (added new API add
	 gst_value_set_structure(), add gst_value_get_structure() and
	 GST_VALUE_HOLDS_STRUCTURE).

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

	* gst/gstdebugutils.c:
	  Reflow code to fix uninitialized variable warning.

2007-10-22  Edgard Lima  <edgard.lima@indt.org.br>

	* gst/gstcaps.c: (gst_caps_to_string),
	(gst_caps_from_string_inplace):
	* gst/gststructure.c: (gst_structure_get_abbrs),
	(gst_structure_to_string), (gst_structure_from_string):
	* gst/gstvalue.c: (gst_value_set_structure),
	(gst_value_get_structure), (gst_value_serialize_structure),
	(gst_value_deserialize_structure), (_gst_value_initialize):
	* gst/gstvalue.h:
	* tests/check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite):
	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	 Added GstStructure to gst_value_table and its related functions.
	 Changed gst_structure_to_string to print ';' in the end.
	 Changed gst_caps_to_string to not print ';' beteween its
	 fields (structures) anymore and remove the lastes ';' from latest
	 structure. Now it is possible to have nested structures.
	 In addition, backward compatibilty is assured by accepting '\0' as
	 end delimiter. Fixes: #487969.
	 API: add gst_value_set_structure()
	 API: add gst_value_get_structure()
	 API: add GST_VALUE_HOLDS_STRUCTURE

2007-10-19  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbus.c:
	  When no GSource callback has been set up, tell developer
	  to use a function that actually exists.

2007-10-17  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.c:
	* gst/gst.h:
	* gst/gstdebugutils.c:
	* gst/gstdebugutils.h:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* tools/gst-launch.c:
	  Allow dumping pipelines as dot graphs. Fixes #456573.

2007-10-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c:
	  Allow '+' as well, it can be part of media or mime types
	  such as image/svg+xml.

2007-10-16  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbus.c:
	* gst/gstbus.h:
	  API: add gst_bus_pop_filtered
	  API: add gst_bus_timed_pop_filtered
	  Two new functions for waiting for specific message types on the
	  bus for a specified amount of time without iterating any main
	  loops or main contexts.

	* tests/check/gst/gstbus.c:
	  Some tests for the new functions.

2007-10-16  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-sections.txt:
	  Make gtk-doc ignore stuff it should ignore.

2007-10-16  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstcheck.c:
	* libs/gst/check/gstcheck.h:
	  Allow runtime selection of unit tests to run via the GST_CHECKS
	  environment variable (test case function names, comma-separated).

2007-10-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gststructure.c:
	* tests/check/gst/gststructure.c:
	  Revert serialisation change and constrain structure-names after
	  consensus on irc. Update api documentation to reflect the change.

2007-10-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gststructure.c:
	  Improve serialization and fix tests.

	* tests/check/gst/gststructure.c:
	  Add another test that covers why I actually did the previous structure
	  change.

2007-10-15  Wim Taymans  <wim.taymans@gmail.com>

	* tools/gst-inspect.c: (print_element_info):
	Don't crash when inspecting an element.

2007-10-15  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gststructure.c:
	  Add unit test for escaping of structure name when serialising
	  and deserialising to/from strings.

2007-10-15  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstmultiqueue.c: (gst_single_queue_push_one),
	(gst_single_queue_new):
	* plugins/elements/gstqueue.c: (gst_queue_init),
	(gst_queue_push_one):
	Fix queue negotiation. If acceptcaps unconditionally returns TRUE,
	upstream is tricked into thinking it can suggest a format downstream
	while downstream does not support that format. The real problem is that
	core calls acceptcaps when pushing a buffer with new caps, for which we
	do a little workaround by setting the caps on the srcpad ourselves
	before pushing the buffer (until this is figured out). Fixes #486758.

2007-10-15  Stefan Kost  <ensonic@users.sf.net>

	* gst/gststructure.c:
	* gst/gstvalue.c:
	  Add some more comments and debug output. Quote structure name to fix
	  deserialisation of some strings.

2007-10-15  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbuffer.h:
	  Define GST_BUFFER_FLAG_GAP more strictly to enable optimizations based
	  on it. Fix docs for GST_BUFFER_MALLOCDATA and GstBuffer.malloc_data.

2007-10-15  Stefan Kost  <ensonic@users.sf.net>

	* tools/gst-inspect.c:
	  Save approx. 400 1 byte allocs when printing. Use API to acces element
	  details.

	* tools/gst-run.c:
	  Avoid a strdup.

	* tools/gst-xmlinspect.c:
	  Use API to acces element details.

2007-10-15  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstinfo.c:
	  Fix some spelling errors.

2007-10-14  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (bin_handle_async_done):
	Correctly set the next state if all of our async children commited their
	state. This makes sure we can actually cancel the state change in
	progress. Fixes a regression in Rhythmbox when seeking.

2007-10-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c:
	  Don't shadow local variable.

	* gst/gstinfo.c:
	  Don't shadow global function name.

2007-10-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelementfactory.c:
	* gst/gstpluginfeature.c:
	* gst/gstpluginfeature.h:
	* gst/gstregistrybinary.c:
	* gst/gstregistryxml.c:
	* gst/gsttypefind.c:
	  Use already-interned string for the private GstPluginFeature
	  plugin_name field.

2007-10-10  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-sections.txt:
	  Add new API to docs; fixes the build.

2007-10-10  Wim Taymans  <wim.taymans@gmail.com>
	
	Patch inspired by: Benoit Fouet <benoit dot fouet at purplelabs dot com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_wait_eos),
	(gst_base_sink_event):
	* libs/gst/base/gstbasesink.h:
	Add function to wait for EOS, subclasses can use this to correctly wait
	for devices to drain before performing the EOS logic. Fixes #485343.
	API: gst_base_sink_wait_eos()

2007-10-10  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.h:
	  Cast description string constants in GST_PLUGIN_DEFINE macros
	  to a (gchar*) to make C++ code using these macros compile
	  without warning with g++-4.2 (see #462737).  Even if slightly
	  ugly, this seems preferable to putting the description strings
	  into the GLib quark table or making the structure member a
	  const gchar * and doing casts in core code that allocs and
	  frees these strings, or requiring a cast in the C++ code.

2007-10-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.h:
	  Use __FUNCTION__ instead of __PRETTY_FUNCTION__, it's silly
	  to print the entire class/function signature into the log
	  file for C++ code.  This only affects C++ code, for C code
	  everything remains the same.

2007-10-09  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (remove_from_queue):
	Work around a problem with pipelines containing (semi)loops until a
	proper, more complicated solution is ready. See #475455.

2007-10-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.c:
	* gst/gstplugin.h:
	* gst/gstregistrybinary.c:
	* gst/gstregistryxml.c:
	  Put more strings into the GLib quark table. No need to keep
	  a hundred-something copies of identical version strings,
	  license strings, package name strings and package origin
	  strings around. 

2007-10-09  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-dataaccess.xml:
	  Don't imply that it's okay to unconditionally change
	  buffer data or buffer metadata in a pad probe callback,
	  and a bunch of other comments. Fixes #430031.

2007-10-08  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/common/gstenumtypes.c:
	* win32/common/gstenumtypes.h:
	* win32/common/gstversion.h:
	  Update generated files.

2007-10-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-autoplugging.xml:
	  Prefix section with broken code with a warning (see #342432).

2007-10-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/appendix-integration.xml:
	* docs/manual/basics-init.xml:
	  Call g_thread_init() before g_option_context_new() to
	  avoid warnings. Spotted by Ritesh Khadgaray. Fixes #484225.

2007-10-08  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
	(gst_base_sink_queue_object_unlocked),
	(gst_base_sink_queue_object), (gst_base_sink_event),
	(gst_base_sink_needs_preroll), (gst_base_sink_chain_unlocked):
	When we received EOS and are waiting for when to post the EOS message,
	our state is prerolled and we should not return ASYNC.
	Reorganize some code paths to implement this behavior.

	* tests/check/generic/sinks.c: (send_eos), (GST_START_TEST),
	(gst_sinks_suite):
	Add unit test to verify above EOS fix.

2007-10-08  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init),
	(gst_type_find_element_setcaps), (gst_type_find_element_chain):
	Move detecting the input caps of the sinkpad to the setcaps function.
	This allows us to update the output caps when we receive new input caps
	instead of always using the first detected caps.

2007-10-08  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_event),
	(gst_base_sink_get_position):
	Don't try to preroll non-async elements after a flush.
	Subtract latency form clock times when reporting position.

2007-10-05  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstpad.c: (gst_pad_pause_task):
	* gst/gstutils.c:
	Small comment and documentation update.

2007-10-05  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
	(gst_base_src_set_live), (gst_base_src_is_live),
	(gst_base_src_query_latency), (gst_base_src_perform_seek),
	(gst_base_src_default_event), (gst_base_src_wait),
	(gst_base_src_do_sync), (gst_base_src_get_range),
	(gst_base_src_pad_get_range), (gst_base_src_loop),
	(gst_base_src_unlock), (gst_base_src_unlock_stop),
	(gst_base_src_set_flushing), (gst_base_src_set_playing),
	(gst_base_src_activate_push), (gst_base_src_activate_pull),
	(gst_base_src_change_state):
	Rework the locking of basesrc in a similar fashion to basesink. We
	basically have one lock (LIVE_LOCK) protecting the dataflow. This allows
	us to handle live sources and semi live ones much better.
	Simplify flushing.
	Fix unlocking when seeking, shutting down and pausing in live sources.

2007-10-05  Wim Taymans  <wim.taymans@gmail.com>

	* tests/check/pipelines/simple-launch-lines.c: (run_pipeline):
	Fix compilation again.

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c:
	  Use meaningful categories for the logs to clean the default one.

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/pipelines/cleanup.c:
	  Print message name and not just number.

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-tagreading.txt:
	  Add some more thoughts.

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/pipelines/simple-launch-lines.c:
	  Print message name and not just number.

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gsttypefindhelper.c:
	  Speedup typefinding. This is work in progress (see #459862).

2007-10-03  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstplugin.c:
	  Fix docs that mention 'plugin_desc' instead of 'gst_plugin_desc'.
	  Spotted by Josep Torra Valles <josep@fluendo.com>.

2007-10-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstclock.h:
	  Fix up broken GST_CLOCK_FLAGS macro and GstClock docs. The flags
	  field has moved to GstObject.

2007-10-02  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync),
	(gst_base_src_get_range), (gst_base_src_change_state):
	Call unlock for live sources so that they can't get stuck in _create and
	produce a buffer before they are set back to PLAYING.

2007-10-02  Edward Hervey  <bilboed@bilboed.com>

	* plugins/elements/gstqueue.c: (gst_queue_locked_enqueue),
	(gst_queue_locked_dequeue):
	Comment the segment-related code... in the PROPER function.
	See #482147 and my commit from yesterday.

2007-10-01  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_change_state):
	Also initialize the counter that calculates the first timestamp on a
	buffer correctly for non-live sources.

2007-10-01  Edward Hervey  <bilboed@bilboed.com>

	* plugins/elements/gstqueue.c: (gst_queue_locked_dequeue):
	Disable code that's breaking the current-time-level reporting.
	See #482147

2007-09-30  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/gst/gstreamer-sections.txt:
	Add M_PI and IMPORT_SYMBOL to the private part of the GstInfo section
	as they shouldn't show up. Fixes the docs build.

2007-09-29  Sebastien Moutte  <sebastien@moutte.net>
	
	* gst/gstinfo.h:
	Add an explicit variable importation needed on VS6 (only for MSC_VER)
	Define M_PI which is used in files which are including gstinfo.h. 
	VS6 includes doesn't define it.
	* win32/common/libgstbase.def:
	* win32/common/libgstcontroller.def:
	* win32/common/libgstreamer.def:
	Add new exported functions and variables.
	* win32/vs6/libgstcontroller.dsp:
	* win32/vs6/libgstreamer.dsp:
	Update the list of files to build.
	
2007-09-28  Wim Taymans  <wim.taymans@gmail.com>

	Patch by: Felipe Contreras <felipe dot contreras at gmail dot com>

	* plugins/elements/gstqueue.c: (update_time_level), (apply_buffer),
	(gst_queue_locked_dequeue), (gst_queue_handle_sink_event),
	(gst_queue_chain), (gst_queue_loop), (gst_queue_src_activate_push):
	Improve debugging. Fixes #480858.

2007-09-28  Wim Taymans  <wim.taymans@gmail.com>

	Patch by: Felipe Contreras <felipe dot contreras at gmail dot com>

	* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
	First patch of code cleanups, use the macros and right arguments in the
	macros to signal and lock the queue. See #480858.

2007-09-26  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbus.c: (poll_func):
	Improve debugging when dealing with _poll().

2007-09-26  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistryxml.c:
	  Fix memory leak I introduced a few days ago.

2007-09-26  Michael Smith <msmith@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_finalize):
	  Make it once again possible to free GstBuffers in the default
	  build.
	  The poisoning scribbles on parts of the miniobject we need in
	  order to free it.
	  Fixes #480341

2007-09-25  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c:
	* gst/gsttaglist.h:
	API: add GST_TAG_COMPOSER, fixes #459809.

2007-09-24  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstplugin.c:
	* gst/gstplugin.h:
	Add the 3-clause BSD license and the MIT/X11 license to the license
	list. Fixes #479784.

2007-09-24  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/getting.xml:
	  Add Q+A about different GStreamer versions (#364056).

2007-09-24  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
	(gst_base_sink_event), (gst_base_sink_change_state):
	Return correct gboolean from query function.

2007-09-24  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
	(gst_base_sink_event), (gst_base_sink_query),
	(gst_base_sink_change_state):
	Simplify latency query.
	When not synchronizing, we can report latency without querying the peer
	element.

2007-09-24  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstobject.h:
	* gst/gstvalue.c:
	Fix small typos in the docs.

2007-09-24  Wim Taymans  <wim.taymans@gmail.com>

	* docs/design/draft-latency.txt:
	* docs/design/draft-push-pull.txt:
	* docs/design/draft-tagreading.txt:
	* docs/design/part-MT-refcounting.txt:
	* docs/design/part-activation.txt:
	* docs/design/part-block.txt:
	* docs/design/part-element-source.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbin.txt:
	* docs/design/part-gstelement.txt:
	* docs/design/part-gstobject.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-preroll.txt:
	* docs/design/part-push-pull.txt:
	* docs/design/part-qos.txt:
	* docs/design/part-query.txt:
	* docs/design/part-scheduling.txt:
	* docs/design/part-seeking.txt:
	* docs/design/part-segments.txt:
	* docs/design/part-states.txt:
	Documentation updates and typo fixes.

2007-09-23  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfakesink.c:
	  Add some debug text to error message to indicate that
	  we errored out on request.

	* tools/gst-launch.c:
	  When the state change to PLAYING fails, check for an
	  error message on the bus and print it.

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

	translated by: Jorge González González <aloriel@gmail.com>

	* po/LINGUAS:
	* po/es.po:
	  Added Spanish translation.

2007-09-21  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstqueue.c: (gst_queue_push_one):
	Fix printf arguments.

2007-09-20  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/generic/states.c:
	  Improved state change unit test.

2007-09-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbin.h:
	  Move priv to the right place.

	* gst/gstsystemclock.c:
	  Add FIXME: and improve log.

	* tests/check/Makefile.am:
	* tests/examples/manual/Makefile.am:
	  Work with all types of registries.

2007-09-19  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_send_event):
	Don't unref the event after pushing it. Fixes #478401.

2007-09-19  Stefan Kost  <ensonic@users.sf.net>

	* .cvsignore:
	* tests/examples/manual/.cvsignore:
	  Ignore registries in any format.

2007-09-19  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/glib-compat-private.h:
	  Add compatibility macro for g_intern_string() for
	  GLib-2.8 (any reason we can't just bump the
	  requirement to at least 2.10?)

	* gst/gstpadtemplate.h:
	* gst/gstelementfactory.c:
	* gst/gstregistryxml.c:
	* gst/gstregistrybinary.c:
	  Make GstStaticPadTemplate's templ_name field a const gchar * and fix
	  up the internal code accordingly.  This shouldn't be a problem, since
	  there is no reason external code could ever assume the string in such
	  a structure is dynamically allocated unless it did that itself;  the
	  use of g_strdup() is private to element factories.  The new code also
	  saves some memory by putting pad template name strings into the GLib
	  quark table instead of allocating them dynamically.
	  Declaring this field constant fixes warnings with g++-4.2 when using
	  the GST_STATIC_PAD_TEMPLATE macro in c++ code (#478092).

2007-09-19  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelementfactory.c:
	  Release static caps. Fixes #475723.

2007-09-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c:
	* gst/gstinfo.h:
	  Make some internal API take const gchar * instead of just
	  gchar * to avoid compiler warnings with g++-4.2.2 when
	  passing string constants (partially fixes #478092).

2007-09-17  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (bin_query_latency_fold), (gst_bin_query):
	A latency query fails when one of the sinks fail.

	* gst/gstelement.c: (gst_element_set_base_time):
	Improve debugging.

2007-09-17  Jan Schmidt - Sun Microsystems <jan.schmidt@sun.com>

	* gst/gstbin.c: (gst_bin_continue_func):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync):
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_add_pad_full):
	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_loop):

	Fix minor compilation warnings shown with Forte.

2007-09-17  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstqueue.c: (apply_buffer),
	(gst_queue_locked_enqueue), (gst_queue_locked_dequeue):
	Measure queue level based on the diff between head and tail timestamps
	even when pushing the first buffer.

2007-09-14  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
	(gst_base_sink_event), (gst_base_sink_change_state):
	Sinks that don't preroll can always be queried for the latency.
	Don't post ASYNC start when we are not async.

2007-09-14  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstqueue.c: (gst_queue_locked_enqueue),
	(gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_push_one), (gst_queue_handle_src_query),
	(gst_queue_sink_activate_push), (gst_queue_src_activate_push):
	* plugins/elements/gstqueue.h:
	When downstream returns UNEXPECTED from pushing a buffer, don't try to
	push more buffers but allow pushing of EOS and NEWSEGMENT.
	Add some more debug info here and there. Fixes #476514.

2007-09-14  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_preroll_queue_flush), (gst_base_sink_commit_state),
	(gst_base_sink_wait_preroll), (gst_base_sink_needs_preroll),
	(gst_base_sink_set_flushing), (gst_base_sink_query),
	(gst_base_sink_change_state):
	Latency query is allowed after we are prerolled. Introduce a new flag
	for this and stop abusing other variables.

2007-09-13  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_send_event):
	Push OOB events downstream when we get them in send_event. This allows
	the application to insert events in the pipeline.
	Add some more comments.

2007-09-13  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (gst_bin_class_init), (clear_queue),
	(do_bin_latency), (gst_bin_change_state_func):
	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Move latency query from GstPipeline to GstBin so that we can also
	use it when async-handling is enabled on bins.

2007-09-13  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
	(gst_base_src_do_sync), (gst_base_src_change_state):
	Update docs.
	Clean up the timestamping and syncing code for pseudo live sources.

2007-09-13  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Steve Fink  <sphink gmail com>

	* docs/manual/appendix-checklist.xml:
	  Mention less -R switch in the section about debug output (#474055).

2007-09-13  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gstqueue.c: (gst_queue_handle_src_query):
	Queue can latency to the pipeline up to the configured max size in time.
	Report this fact in the latency query.

2007-09-13  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Sebastien Moutte <sebastien at moutte dot net>

	* libs/gst/controller/gstinterpolation.c:
	* libs/gst/controller/gstlfocontrolsource.c:
	Use gst_guint64_to_gdouble() when converting from a uint64 or
	GstClockTime to double to fix the build on win32. Fixes #474371.

2007-09-13  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstbuffer.c: (gst_buffer_finalize):
	Implement poisoning for GstBuffer if --enable-poisoning is specified.
	When finalizing a buffer the complete struct is filled with 0xff,
	thus making a use of the buffer after the final unref impossible.

2007-09-13  Sebastian Dröge  <slomo@circular-chaos.org>

	* tests/check/libs/controller.c: (GST_START_TEST):
	Use fail_unless_equals_int(a, b) instead of
	fail_unless_equals (a == b) to get better output on failures.

2007-09-12  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gsturi.c:
	  Also check for the other file URI variant on win32.

2007-09-12  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsturi.c: (gst_uri_get_location):
	  If there's no hostname, we want to return 'c:/foo/bar.txt'
	  and not '/c:/foo/bar.txt' on Windows. Fixes #469402.

	* tests/check/gst/gsturi.c:
	  Unit test for the above and a few more things.

2007-09-11  Wim Taymans  <wim.taymans@gmail.com>

	* docs/design/part-live-source.txt:
	Add docs on how live sources should timestamp.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync):
	Add some more debug info.
	For subclasses that are live and like to sync, add aditional startup
	latency to sync time and timestamps so that we timstamp according to the
	design doc.

2007-09-11  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbuffer.c:
	  Also do a g_type_class_ref() for the subbuffer type in
	  the init function.

2007-09-11  Wim Taymans  <wim.taymans@gmail.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpad.c: (gst_pad_peer_query):
	* gst/gstpad.h:
	Add function to perform a query on the peer of a pad.
	API: gst_pad_peer_query()

2007-09-11  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/gst/gstsystemclock.c:
	  Cleanup the test a little (use gst-logging and not g_message). Improve
	  test to check if a wait reached the target.

2007-09-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-sections.txt:
	  Add new API to docs and fix the build.

2007-09-10  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_set_do_timestamp),
	(gst_base_src_get_do_timestamp), (gst_base_src_set_property),
	(gst_base_src_get_property), (gst_base_src_do_sync):
	* libs/gst/base/gstbasesrc.h:
	Add property to make the basesrc timestamp buffers based on the current
	running time.
	API: GstBaseSrc::do-timestamp
	API: gst_base_src_set_do_timestamp()
	API: gst_base_src_get_do_timestamp()

2007-09-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/release:
	  Really make sure translations are up-to-date before
	  a release (#465010).

2007-09-07  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (gst_registry_binary_read_cache):
	Always destroy the timer, also in error cases.

2007-09-05  Wim Taymans  <wim.taymans@gmail.com>

	* docs/manual/highlevel-xml.xml:
	Fix XML example code. Fixes #472714.

2007-09-05  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
	(gst_base_sink_wait_preroll), (gst_base_sink_needs_preroll),
	(gst_base_sink_query):
	Protect eos and have_preroll with the OBJECT lock so we don't need to
	take the PREROLL lock when querying the latency. Fixes #473846.

2007-09-05  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c:
	  Give some log-messages a category.

2007-09-04  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gststructure.c:
	(gst_structure_fixate_field_nearest_fraction):
	Fix fraction list fixation code. Take the fraction with the smallest
	difference with the target instead of the first one in the list.

	* tests/check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite):
	Added test to verify correct fraction list fixation behaviour.

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

	* win32/common/libgstreamer.def:
	  Export gst_bus_add_signal_watch too.

2007-08-30  Wim Taymans  <wim.taymans@gmail.com>

	* docs/libs/gstreamer-libs-sections.txt:
	Add new methods to docs.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_init), (gst_base_sink_set_ts_offset),
	(gst_base_sink_get_ts_offset), (gst_base_sink_set_property),
	(gst_base_sink_get_property), (gst_base_sink_wait_clock):
	* libs/gst/base/gstbasesink.h:
	Add ts-offset property to fine-tune the synchronisation.
	API: GstBaseSink::ts-offset property
	API: gst_base_sink_set_ts_offset()
	API: gst_base_sink_get_ts_offset()

2007-08-29  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_init), (gst_base_sink_set_sync),
	(gst_base_sink_get_sync), (gst_base_sink_set_max_lateness),
	(gst_base_sink_get_max_lateness), (gst_base_sink_set_qos_enabled),
	(gst_base_sink_is_qos_enabled), (gst_base_sink_set_async_enabled),
	(gst_base_sink_is_async_enabled), (gst_base_sink_set_property),
	(gst_base_sink_get_property), (gst_base_sink_change_state):
	* libs/gst/base/gstbasesink.h:
	Add async property to instruct the sink never to inform the parent about
	ASYNC state changes, update docs.
	Check argument with g_return_* for the public functions.
	API: GstBaseSink::async property
	API: gst_base_sink_set_async_enabled()
	API: gst_base_sink_is_async_enabled()

2007-08-28  Wim Taymans  <wim.taymans@gmail.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_loop):
	Improve debugging.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
	(gst_base_src_default_query), (gst_base_src_wait),
	(gst_base_src_do_sync), (gst_base_src_change_state):
	Rearrange some code so that we can add support for measuring the 
	startup latency.

2007-08-27  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/dynlink.txt:
	  More thoughs on this.

	* plugins/elements/gstcapsfilter.c:
	  Add bugzilla ticket number to FIXME comment.

2007-08-24  Wim Taymans  <wim.taymans@gmail.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-block.txt:
	Update some docs.

2007-08-24  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/Makefile.am:
	  Revert patch which uses $(gst_headers) instead of $^ because it
	  breaks make dist.

2007-08-24  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/gst/gstbin.c: (GST_START_TEST):
	  Fix leaks in the new unit test.

2007-08-23  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c:
	  Don't use GST_INFO before the debug system is actually initialised
	  (shouldn't do any harm, but won't print anything either, so we can
	  just as well remove it).

	* gst/gstinfo.h:
	  GST_CAT_LEVEL_LOG_valist(), which is our inline helper function for
	  compilers that don't support variadic macros (such as MSVC), should
	  check for debug_level <= __gst_debug_min as well, since that's the
	  function called from all the level-specific GST_CAT_*_LOG_OBJECT()
	  inline helper functions. Should improve performance a bit, but also
	  makes sure uses of GST_INFO et.al are ignored if the debugging
	  system isn't initialised yet (instead of printing an assertion
	  failure).

2007-08-23  Stefan Kost  <ensonic@users.sf.net>

	patch by: David Nečas <yeti@physics.muni.cz>

	* gst/Makefile.am:
	  Replace some non portable makefile constructs.

2007-08-21  Stefan Kost  <ensonic@users.sf.net>

	* common/gtk-doc-plugins.mak:
	  Grrrrr. Don't remove the types file on make clean.

2007-08-20  Wim Taymans  <wim.taymans@gmail.com>

	* tools/gst-launch.1.in:
	Add colorspace to example pipeline. Fixes #458274.

2007-08-20  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/release:
	  The release manager should run 'make download-po' before making a
	  release to make sure translations are up-to-date.

	* po/LINGUAS:
	* po/be.po:
	* po/pl.po:
	* po/rw.po:
	  Add some new translations.

2007-08-17  Wim Taymans  <wim.taymans@gmail.com>

	* tools/gst-launch.c: (event_loop), (main):
	Don´t try to do any state management when a live pipeline posts
	buffering messages.
	Also make the buffering string translatable.

2007-08-16  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (is_eos), (gst_bin_add_func),
	(bin_handle_async_start), (gst_bin_handle_message_func):
	Improve debugging.
	When adding elements, insert messages into the bus of the newly added
	element and make sure the element is the source of the message. This
	allows the parent bin to intercept the message and do the
	right thing. It also avoids us posting ASYNC_START and CLOCK_PROVIDE
	messages to the app (which is not allowed).
	Update some docs.

	* tests/check/gst/gstghostpad.c: (GST_START_TEST):
	Fix testsuite so that is does not work around messages that should not
	have been posted in the first place.

2007-08-16  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (add_to_queue), (remove_from_queue), (clear_queue),
	(update_degree), (gst_bin_sort_iterator_next):
	Fix annoying bug in the sorted iterator where a sink that is not really
	a sink (when it has downstream links) screwed up the iterator.

	* tests/check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
	Unit test to verify the fix.

2007-08-16  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstmessage.h:
	Add some more docs for the messages.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_query):
	Add some more debugging.

	* tools/gst-launch.c: (event_loop):
	When interrupting, don't try to set pipeline to PAUSED twice.

2007-08-14  Wim Taymans  <wim.taymans@gmail.com>

	
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_element_set_state),
	(bin_handle_async_start), (gst_bin_handle_message_func):
	Move ASYNC_START message posting to where it belongs, similar to
	async_done. 
	Don't post ASYNC_START when we are in error. 
	Post ASYNC_START when we added an async element to a bin.

2007-08-14  Julien MOUTTE  <julien@moutte.net>

	* gst/gstindex.c: (gst_index_add_association): Fix index entry
	generation from vargs. Fixes #466595.

2007-08-14  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (gst_bin_element_set_state):
	Always change the state of a NO_PREROLL element even if it has ASYNC
	elements inside (in case of a bin).

	* tests/check/generic/sinks.c: (GST_START_TEST), (gst_sinks_suite):
	Unit test for this case.

2007-08-13  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/check/gstbufferstraw.c:
	* libs/gst/check/gstcheck.h:
	* libs/gst/controller/gstcontroller.c:
	* libs/gst/controller/gstcontrolsource.h:
	* libs/gst/controller/gstlfocontrolsource.h:
	* plugins/elements/gstcapsfilter.h:
	* plugins/elements/gstfdsink.h:
	* plugins/elements/gstfdsrc.h:
	  Add more missing docs.

2007-08-12  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gststructure.c:
	Add Since tag to docs.

2007-08-12  Wim Taymans  <wim.taymans@gmail.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gststructure.c: (gst_structure_get_uint):
	* gst/gststructure.h:
	Add function to get uint from a structure.
	API: gst_structure_get_uint()

2007-08-12  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstcaps.c: (gst_caps_set_simple_valist),
	(gst_caps_intersect):
	Fix proper check for simple caps.

2007-08-10  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  Remove cruft and do some cleanups.

	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
	  Prepare for comming gtkdoc features (rebase against online docs).

2007-08-10  Michael Smith <msmith@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	  Add gst_registry_add_path to docs.

2007-08-10  Michael Smith <msmith@fluendo.com>

	* gst/gstregistry.h:
	  Add gst_registry_add_path, which was missing from this header.

2007-08-10  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/controller/gstlfocontrolsource.c:
	  Printf format fix.

2007-08-09  Philippe Kalaf <philippe.kalaf@collabora.co.uk>

	* libs/gst/base/gstbasesink.c:
	  Don't send an async_start message during downwards state change if 
	  target state is less than READY

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

	translated by: Gabor Kelemen <kelemeng@gnome.hu>

	* po/LINGUAS:
	* po/hu.po:
	  Added Hungarian translation.

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

	* po/fi.po:
	* po/it.po:
	* po/nl.po:
	* po/sv.po:
	* po/uk.po:
	  Updated translations.

2007-08-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/controller/Makefile.am:
	Dist gstlfocontrolsourceprivate.h

2007-08-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/libs/gstreamer-libs.types:
	Don't register the enum type gst_lfo_waveform_get_type() in the
	.types file - only GObject derived types belong.

2007-08-07  Wim Taymans  <wim.taymans@gmail.com>

	Patch by: <arenevier at fdn dot fr>

	* gst/gstbuffer.h:
	Remove comma from last element in enum to avoid compile errors when
	using -pendantic. Fixes #464366.

2007-08-07  Wim Taymans  <wim.taymans@gmail.com>

	* docs/design/part-TODO.txt:
	Add some more TODO items

	* gst/gstbin.c: (find_message), (gst_bin_change_state_func):
	Improve debugging.

	* gst/gstcaps.c: (gst_caps_intersect):
	Optimize trivial intersection case between identical caps pointers.

	* gst/gstelement.c: (gst_element_continue_state),
	(gst_element_set_state_func):
	* gst/gstpad.c:
	Fix spelling and grammar mistakes.

2007-08-05  Stefan Kost  <ensonic@users.sf.net>

	* po/POTFILES.in:
	* po/POTFILES.skip:
	  Update POTFILES. Fixes #461599.

2007-08-03  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gst.c:
	Fix confusing typo in debug output.

2007-08-03  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Stefan Kost <ensonic@users.sf.net>

	* libs/gst/controller/Makefile.am:
	* libs/gst/controller/gstlfocontrolsource.c: (_calculate_pos),
	(gst_lfo_waveform_get_type), (gst_lfo_control_source_reset),
	(gst_lfo_control_source_new),
	(gst_lfo_control_source_set_waveform),
	(gst_lfo_control_source_bind), (gst_lfo_control_source_init),
	(gst_lfo_control_source_finalize),
	(gst_lfo_control_source_dispose),
	(gst_lfo_control_source_set_property),
	(gst_lfo_control_source_get_property),
	(gst_lfo_control_source_class_init):
	* libs/gst/controller/gstlfocontrolsource.h:
	* libs/gst/controller/gstlfocontrolsourceprivate.h:
	API: Add GstLFOControlSource, a control source that gives values
	for specific timestamps based on several periodic waveforms.
	Fixes #459717.

	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/gstreamer-libs.types:
	Add documentation and unit tests for GstLFOControlSource.

2007-08-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Back to CVS

=== release 0.10.14 ===

2007-08-03  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.14, "Breathing Vacuum"

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

	* gst/gstelement.c: (gst_element_class_set_details_simple):
	* gst/gstelement.h:
	  Make strings passed to gst_element_class_set_details_simple()
	  constant, as they should be (#462752).

2007-08-02  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstbin.c: (gst_bin_change_state_func),
	(bin_handle_async_done), (gst_bin_handle_message_func):
	Don't forget about the fact that some element went ASYNC even after a
	resync. This makes us post the ASYNC_DONE message correctly.
	Fixes #462558.

2007-07-31  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstregistry.c: (gst_registry_add_feature):
	When replacing an existing feature in the registry, make sure to
	continue holding a reference until we've replaced the name string
	within our feature hash table. Make sure to use g_hash_table_replace
	instead of g_hash_table_insert to ensure the new name string is used
	as a key instead of the old one that we're about to free.
	Fixes: #462085

2007-07-31  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
	(gst_plugin_feature_set_name):
	Revert patch from #459466 until after the release and we can work
	out exactly what the problem is (if any).

2007-07-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c:
	* gst/gsttaglist.h:
	  API: add GST_TAG_LICENSE_URI and GST_TAG_COPYRIGHT_URI (#451939).

2007-07-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/libs/Makefile.am:
	Include our build-prefix libs and includes before the generic ones to
	avoid linking against the installed libs when we want the build-tree
	ones.

2007-07-26  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Steve Fink  <sphink gmail com>

	* docs/pwg/building-testapp.xml:
	  Mention that GST_PLUGIN_PATH or --gst-plugin-path might be needed
	  if people try to build or install the example from the plugin
          template against a GStreamer from package using the configure
	  defaults.

2007-07-25  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Steve Fink  <sphink gmail com>

	* tools/gst-inspect.1.in:
	  Document --print-all and --print-plugin-auto-install-info command
	  line options in man page.

2007-07-25  Wim Taymans  <wim.taymans@gmail.com>

	* docs/gst/gstreamer-sections.txt:
	Add docs for new api function.

2007-07-25  Wim Taymans  <wim.taymans@gmail.com>

	* gst/gstelementfactory.c: (gst_element_factory_has_interface):
	* gst/gstelementfactory.h:
	API: gst_element_factory_has_interface()
	Added method to check if an element factory implements a named
	interface.

2007-07-25  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/gstreamer.types.in:
	  Another conditional doc check.

	* gst/gstmessage.c:
	* gst/gstparamspecs.h:
	* gst/gstregistrybinary.c: (gst_registry_binary_read_cache):
	* gst/gstvalue.c:
	* gst/gstxml.h:
	  API-doc fixes.

2007-07-24  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.c: (gst_registry_binary_check_magic),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	  Print error just once and with additional info.

2007-07-24  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gsttypefindhelper.c: (helper_find_peek),
	(helper_find_suggest), (helper_find_get_length),
	(gst_type_find_helper_get_range), (buf_helper_find_suggest),
	(gst_type_find_helper_for_buffer):
	  Cleanup the typefindhelper code and add private doc comments.

2007-07-24  Edward Hervey  <bilboed@bilboed.com>

	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
	(gst_capsfilter_transform_size), (gst_capsfilter_prepare_buf):
	Fix capsfilter for cases where the caps set on capsfilter will provide
	additional information.
	Fixes #449197

2007-07-24  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsttypefindfactory.c:
	  Fix docs that recommened wrong function to use.

2007-07-23  Stefan Kost  <ensonic@users.sf.net>

	* tools/gst-inspect.c: (print_plugin_features):
	  Also give media-type for typefinders in element output.

2007-07-23  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistry.c: (gst_registry_init), (gst_registry_finalize),
	(gst_registry_remove_features_for_plugin_unlocked),
	(gst_registry_add_feature), (gst_registry_remove_feature),
	(gst_registry_lookup_feature_locked):
	* gst/gstregistry.h:
	  Speed up gst_registry_lookup_feature_locked() by using a hashmap.
	  Fixes #459501.

2007-07-23  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
	(gst_plugin_feature_set_name):
	  Avoid double memory usage for pluginfeature names. Fixes #459466.

2007-07-22  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.h:
	  Small addition to GST_FLOW_IS_FATAL() docs: mention that elements
	  driving the pipeline may need to explicitly check for NOT_LINKED as
	  well, since IS_FATAL doesn't cover that.

2007-07-22  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/advanced-types.xml:
	  Fix typo and duplicate entry in video formats list.

2007-07-22  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstinterpolation.c:
	Also round to the nearest int when using cubic interpolation.

2007-07-19  Jan Schmidt  <thaytan@noraisin.net>

	* libs/gst/controller/gstinterpolation.c:
	When linearly interpolating integer types, round to the nearest int
	by adding 0.5. Don't do it for float/double types.
	Fixes the failing controller test on my machine, which is somehow
	rounding differently than on the buildbots.

2007-07-20  Stefan Kost  <ensonic@users.sf.net>

	* tools/gst-plot-timeline.py:
	  Better log parsing (categories can have -). Adjust text vs. lines, so
	  that they span the same y-range.	  

2007-07-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/audiobaseclasses.txt:
	* docs/random/ensonic/dynlink.txt:
	* docs/random/ensonic/profiling.txt:
	  Save my thoughts.

	* docs/random/moving-plugins:
	  Add note to use g_assert type macros.

2007-07-20  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* libs/gst/check/Makefile.am:
	  Add libm check as we use in for plugins.

2007-07-18  Jan Schmidt  <thaytan@noraisin.net>

	* gst/gstbin.c: (gst_bin_continue_func):
	Check that the state_cookie hasn't changed since the continue_func
	was scheduled. Avoids problems where the state changes back to
	something it shouldn't be because it was changed in the meantime.

2007-07-17  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.c: (gst_registry_binary_save_const_string),
	(gst_registry_binary_save_string),
	(gst_registry_binary_save_pad_template),
	(gst_registry_binary_save_feature),
	(gst_registry_binary_save_plugin),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	  Fix memory leak. Be less verbose in the log.

2007-07-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/elements/.cvsignore:
	Add file to cvsignore as commanded.

2007-07-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/elements/multiqueue.c: (mq_dummypad_chain),
	(mq_dummypad_event), (run_output_order_test):
	Use a GStaticMutex to protect all cases where libcheck
	fail_if/fail_unless macros might be called from multiple threads
	simultaneously to avoid errors like:
	  "check_pack.c:107: :-1081725400:Bad message type arg"

2007-07-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/pipelines/stress.c: (GST_START_TEST):
	Make sure we set the pipeline back to the NULL state before
	dropping our final reference.

2007-07-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/elements/tee.c: (GST_START_TEST):
	Make the tee stress-test a little less stressful so it doesn't just
	time out on slow-machines, and remove a small race when it's starting 
	up by adding a get_state() call.

2007-07-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gst.c:
	  Avoid reading registry twice on startup. Fixes #457322.

2007-07-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* pkgconfig/gstreamer-check-uninstalled.pc.in:
	* pkgconfig/gstreamer-check.pc.in:
	Substitute the CFLAGS for libcheck into our .pc file too so that
	dependent modules will pick it up properly if libcheck is installed
	into some other prefix.

2007-07-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Revert the pkg-config check for libcheck, since it pulls in the
	wrong non-PIC libcheck.a on Ubuntu and probably Fedora too. We need
	a proper solution, either from the check project, or something else.

2007-07-12  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  Use pkg-config to locate check.

2007-07-10  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsttaglist.c:
	  Fix doc syntax.

	* gst/gstutils.c:
	* gst/gstutils.h:
	  Add deprecation guards.

	* libs/gst/base/gstcollectpads.h:
	  Don't document object (this is implicitly private).

2007-07-08  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_parse_value):
	  When deserialising foo=bar without a type cast, check if it's a
	  boolean before falling back to a string type, otherwise things like
	  audiotestsrc ! audio/x-raw-int,signed=true ! fakesink won't work,
	  because the filtercaps end up having a signed=(string)true field,
	  which causes problems later when intersection caps.

	* tests/check/gst/gststructure.c: (GST_START_TEST):
	  Add a unit test for this.

2007-07-06  Sebastian Dröge  <slomo@circular-chaos.org>

	Reviewed by: Stefan Kost <ensonic@users.sf.net>

	* libs/gst/controller/Makefile.am:
	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_add_interpolation_control_source),
	(gst_controlled_property_new), (gst_controlled_property_free),
	(gst_controller_find_controlled_property),
	(gst_controller_new_valist), (gst_controller_new_list),
	(gst_controller_new), (gst_controller_remove_properties_valist),
	(gst_controller_remove_properties_list),
	(gst_controller_remove_properties),
	(gst_controller_set_property_disabled),
	(gst_controller_set_disabled), (gst_controller_set_control_source),
	(gst_controller_get_control_source), (gst_controller_get),
	(gst_controller_sync_values), (gst_controller_get_value_array),
	(_gst_controller_dispose), (gst_controller_get_type),
	(gst_controlled_property_set_interpolation_mode),
	(gst_controller_set), (gst_controller_set_from_list),
	(gst_controller_unset), (gst_controller_unset_all),
	(gst_controller_get_all), (gst_controller_set_interpolation_mode):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gstcontrolsource.c:
	(gst_control_source_class_init), (gst_control_source_init),
	(gst_control_source_get_value),
	(gst_control_source_get_value_array), (gst_control_source_bind):
	* libs/gst/controller/gstcontrolsource.h:
	* libs/gst/controller/gsthelper.c: (gst_object_set_control_source),
	(gst_object_get_control_source):
	* libs/gst/controller/gstinterpolation.c:
	(gst_interpolation_control_source_find_control_point_node),
	(gst_interpolation_control_source_get_first_value),
	(_interpolate_none_get), (interpolate_none_get),
	(interpolate_none_get_boolean_value_array),
	(interpolate_none_get_enum_value_array),
	(interpolate_none_get_string_value_array),
	(_interpolate_trigger_get), (interpolate_trigger_get),
	(interpolate_trigger_get_boolean_value_array),
	(interpolate_trigger_get_enum_value_array),
	(interpolate_trigger_get_string_value_array):
	* libs/gst/controller/gstinterpolationcontrolsource.c:
	(gst_control_point_free), (gst_interpolation_control_source_reset),
	(gst_interpolation_control_source_new),
	(gst_interpolation_control_source_set_interpolation_mode),
	(gst_interpolation_control_source_bind),
	(gst_control_point_compare), (gst_control_point_find),
	(gst_interpolation_control_source_set_internal),
	(gst_interpolation_control_source_set),
	(gst_interpolation_control_source_set_from_list),
	(gst_interpolation_control_source_unset),
	(gst_interpolation_control_source_unset_all),
	(gst_interpolation_control_source_get_all),
	(gst_interpolation_control_source_get_count),
	(gst_interpolation_control_source_init),
	(gst_interpolation_control_source_finalize),
	(gst_interpolation_control_source_dispose),
	(gst_interpolation_control_source_class_init):
	* libs/gst/controller/gstinterpolationcontrolsource.h:
	* libs/gst/controller/gstinterpolationcontrolsourceprivate.h:
	API: Refactor GstController into the core controller which can take
	a GstControlSource for providing actual values for timestamps.
	Implement a interpolation control source and use this for backward
	compatibility, deprecate a bunch of functions that are now handled
	by GstControlSource or GstInterpolationControlSource.
	Make it possible to disable the controller completely or only for
	specific properties. Fixes #450711.
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/gstreamer-libs.types:
	Add new functions and classes to the docs.
	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	* tests/examples/controller/audio-example.c: (main):
	Port unit test and example to the new API and add some new
	unit tests.

2007-07-05  Wim Taymans  <wim.taymans@gmail.com>

	Patch by: Mark Nauwelaerts <manauw at skynet be>

	* plugins/elements/gstmultiqueue.c:
	(gst_multi_queue_get_internal_links), (apply_buffer),
	(single_queue_overrun_cb), (gst_single_queue_new):
	Implement non-default GstPadIntLinkFunction for multiqueue pads so that
	the pipeline layout can be tracked correctly. Fixes #453732.

2007-07-05  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	* docs/plugins/Makefile.am:
	  Simplify --extra-dir as gtkdoc scans recursively.

2007-07-03  Wim Taymans  <wim.taymans@gmail.com>

	* tools/gst-launch.c: (main):
	When we got an error, there is no point in waiting for preroll when
	shutting down.

2007-07-03  Wim Taymans  <wim.taymans@gmail.com>

	* plugins/elements/gsttee.c: (gst_tee_base_init),
	(gst_tee_request_new_pad), (gst_tee_release_pad),
	(gst_tee_find_buffer_alloc), (gst_tee_buffer_alloc),
	(gst_tee_do_push), (clear_pads), (gst_tee_handle_buffer),
	(gst_tee_chain):
	Be a lot smarter when deciding what srcpad to use for proxying
	the buffer_alloc. Also handle pad added/removed when doing so.
	Fixes #357959.
	Keep track of what pads we already pushed on in case we have pads
	added/removed while pushing. Fixes #374639 

	* tests/check/Makefile.am:
	* tests/check/elements/tee.c: (handoff), (GST_START_TEST),
	(tee_suite):
	Added unit test for pad resync.

2007-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/nl.po:
	* po/sv.po:
	  Updated translations.

2007-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	translation by: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>

	* po/LINGUAS:
	* po/fi.po:
	  Added new Finnish translation.

2007-06-28  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (apply_buffer),
	(single_queue_overrun_cb):
	When figuring out when a queue is filled, use our internal time estimate
	based on segments, just like check_full does.

2007-06-27  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstminiobject.c: (gst_mini_object_get_type):
	  Remove 3 do-nothing methods.

2007-06-27  Wim Taymans  <wim@fluendo.com>

	Patch by: Tim Angus <tim at ngus dot net>

	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
	(gst_capsfilter_set_property):
	Take a reference instead of a copy when setting "caps".
	Fix documentation to clarify this behaviour. Fixes #449414.

2007-06-27  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstindexfactory.c: (gst_index_factory_get_type):
	* gst/gstplugin.c: (gst_plugin_init):
	* gst/gstpluginfeature.c: (gst_plugin_feature_init):
	* gst/gstquery.c: (gst_query_get_type):
	* gst/gstregistry.c: (gst_registry_init):
	* gst/gsturi.c: (gst_uri_handler_base_init):
	  Remove empty instance_init() functions to save relocs and lessen the
	  noise. Remove some of the function prototypes that are doubled by
	  G_DEFINE_TYPE.
	  
2007-06-27  Wim Taymans  <wim@fluendo.com>

	Patch by: Étienne Noreau-Hébert <etienne at deepunder dot org>

	* gst/gstghostpad.c: (gst_proxy_pad_save_thyself):
	Add peer and direction in the XML serialisation of ghostpads.
	Fixes #449226.

2007-06-26  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  Preserve useful information, thanks Tim.

2007-06-26  Jan Schmidt  <thaytan@noraisin.net>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_init),
	(gst_single_queue_flush), (apply_segment), (apply_buffer),
	(gst_single_queue_push_one), (gst_multi_queue_loop),
	(gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
	(gst_multi_queue_src_activate_push), (wake_up_next_non_linked),
	(compute_high_id), (gst_single_queue_new):
	* plugins/elements/gstmultiqueue.h:
	Take the multiqueue lock when updating the fill level so we don't get
	confused. 

	After applying a buffer or event on the src pad segment, make sure to
	call gst_data_queue_limits_changed() to get the data queue to unblock
	and check the filled state again.
	
	Rework the not-linked pad handling so the logic is that not-linked 
	pads can push as fast as they like, but only so they never get 
	ahead of any linked pads.

	* tests/check/elements/multiqueue.c: (mq_sinkpad_to_srcpad),
	(mq_dummypad_getcaps), (mq_dummypad_chain), (mq_dummypad_event),
	(run_output_order_test), (GST_START_TEST), (multiqueue_suite):

	Add a test to check that not-linked pads always stay behind
	linked pads.

	Fixes: #430682

2007-06-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/random/release:
	  Some updates to the release procedure.

2007-06-26  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelementfactory.c: (__gst_element_details_clear):
	  Microoptimization that saves stunning 80 bytes.

2007-06-25  Stefan Kost  <ensonic@users.sf.net>

	* docs/plugins/gstreamer-plugins.args:
	* docs/plugins/inspect/plugin-coreelements.xml:
	* docs/plugins/inspect/plugin-coreindexers.xml:
	  Update docs with caps info.

2007-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/it.po:
	  Updated Italian translation.

2007-06-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* ChangeLog:
	* po/vi.po:
	  Update Vietnamese translations.

2007-06-21  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesink.c:
	  Remove unused signal enum.

2007-06-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.c:
	* gst/gstutils.c: (gst_type_register_static_full):
	Beef up and include the docs for gst_type_register_static_full and
	gst_element_class_set_details_simple and add the API keyword
	in the ChangeLog.

2007-06-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_set_property),
	(update_time_level), (gst_single_queue_push_one),
	(gst_multi_queue_chain), (gst_multi_queue_sink_event),
	(single_queue_overrun_cb), (single_queue_underrun_cb),
	(single_queue_check_full):
	Fix setting max-* properties after adding queues.
	Use IS_FILLED for checking visible items.
	Signal overrun if multiple queues overrun.
	Add extra debug output.
	Patch by: Wim Taymans <wim@fluendo.com>

2007-06-21  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c: (gst_element_class_set_details_simple):
	* gst/gstelement.h:
	* gst/gstutils.c: (gst_type_register_static_full):
	* gst/gstutils.h:
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init):
	* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init):
	* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init):
	* plugins/elements/gstfilesink.c: (gst_file_sink_base_init):
	* plugins/elements/gstfilesrc.c: (gst_file_src_base_init):
	* plugins/elements/gstidentity.c: (gst_identity_base_init):
	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init):
	* plugins/elements/gstqueue.c: (gst_queue_base_init),
	(apply_buffer), (gst_queue_chain):
	* plugins/elements/gsttee.c: (gst_tee_base_init):
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_base_init),
	(gst_type_find_element_class_init):
	  Saving relocations for GTypeInfo and GstElementDetails. Fixes #437457.
	  API: add gst_type_register_static_full
	  API: add gst_element_class_set_details_simple

2007-06-21  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/advanced-types.xml:
	  Fix typo in iana.org URI.

2007-06-19  Andy Wingo  <wingo@pobox.com>

	* tests/check/pipelines/simple-launch-lines.c
	(test_state_change_returns): Enable pull-mode tests now that
	basesink has been fixed.

	* libs/gst/base/gstbasesink.c (gst_base_sink_needs_preroll):
	Changed from gst_base_sink_is_prerolled, reversing the sense of
	the return value. Returns FALSE also if the sink is in pull mode,
	in which case it needs no preroll.
	(gst_base_sink_query, gst_base_sink_change_state): Update for
	needs_preroll change.
	(gst_base_sink_change_state): Add a case for READY_TO_PAUSED after
	chaining up, in which we return SUCCESS directly if we activated
	in pull mode instead of ASYNC. Involves countering an async_start
	message sent before chaining up; not sure if this is correct, in
	an ideal world we only send async-start when activating in push
	mode.

	* tests/check/pipelines/simple-launch-lines.c
	(test_state_change_returns): New test, partially disabled until
	basesink is fixed.

2007-06-19  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (apply_buffer),
	(gst_multi_queue_sink_event):
	Fix event leak.

2007-06-19  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_change_state_func), (bin_push_state_continue),
	(bin_handle_async_start), (bin_handle_async_done),
	(gst_bin_handle_message_func):
	Move the common code for posting state-change messages into
	one function.
	Broadcast the state signal after we posted the messages.
	Mark the bin as busy when it's doing a state-change.
	Make sure async-start/done messages don't interfere with the bin's
	state when it's busy.
	After the state change, let the bin check which elements completed the
	state change while it was busy so that it can update its state.

2007-06-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/random/release:
	Add a note about updating the doap file to the release checklist

2007-06-18  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (apply_buffer),
	(gst_single_queue_push_one), (gst_multi_queue_chain),
	(gst_multi_queue_sink_event):
	Make sure we don't reference the buffer/event after we have given away
	ownership in the queue.

2007-06-18  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (gst_single_queue_flush),
	(gst_multi_queue_chain), (gst_multi_queue_sink_event):
	Update queue state _after_ adding the item in the queue because else we
	could end up being full without the element added yet.

2007-06-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_init), (gst_bin_add_func),
	(gst_bin_remove_func), (gst_bin_get_state_func),
	(gst_bin_element_set_state), (gst_bin_continue_func),
	(bin_push_state_continue), (bin_handle_async_start),
	(bin_handle_async_done), (gst_bin_handle_message_func):
	* gst/gstbin.h:
	Immediatly commit the toplevel bin state when receiving an async-done
	message. This enables us to avoid spawning a thread to commit the state
	in some common cases and it also avoids some races.
	Avoid spawning a state thread when adding/removing async elements to a
	toplevel bin. Instead we immediatly update the bin state.
	Get rid of iterating all the children when getting the state in the bin
	because it is now always up-to-date.
	Fix bug where locked elements would always return _SUCCESS even it they
	returned NO_PREROLL before being locked.
	Fix the order of the state_change, async-start/done messages that was
	sometimes incorrect.
	Mark the state_dirty field as deprecated, we don't need it anymore as we
	are always up-to-date.

	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_continue_state):
	Small debug inprovements.
	Return the previous element state return when nothing is pending instead
	of blindly returning SUCCESS.

	* tests/check/generic/sinks.c: (GST_START_TEST), (pad_blocked_cb),
	(gst_sinks_suite):
	Add a whole bunch of new testcases.

2007-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/uk.po:
	* po/vi.po:
	  Update translations.

2007-06-15  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c:
	Fix typo in the docs.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	Add docs for new methods.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_item_destroy),
	(gst_multi_queue_item_new):
	Don't use GSlice because we don't depend on >= 2.10 yet.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (gst_single_queue_flush),
	(update_time_level), (apply_segment), (apply_buffer),
	(gst_single_queue_push_one), (gst_multi_queue_item_new),
	(gst_multi_queue_loop), (gst_multi_queue_sink_activate_push),
	(gst_multi_queue_sink_event), (single_queue_overrun_cb),
	(single_queue_underrun_cb), (single_queue_check_full):
	Remove debug printf.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstdataqueue.c: (gst_data_queue_cleanup),
	(gst_data_queue_finalize), (gst_data_queue_locked_is_empty),
	(gst_data_queue_set_flushing), (gst_data_queue_push),
	(gst_data_queue_pop), (gst_data_queue_drop_head),
	(gst_data_queue_limits_changed), (gst_data_queue_get_level):
	* libs/gst/base/gstdataqueue.h:
	Various cleanups.
	Added methods to get the current levels and to inform the queue that the
	'full' limits changed.

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_init),
	(gst_multi_queue_finalize), (gst_multi_queue_set_property),
	(gst_single_queue_flush), (update_time_level), (apply_segment),
	(apply_buffer), (gst_single_queue_push_one),
	(gst_multi_queue_item_steal_object),
	(gst_multi_queue_item_destroy), (gst_multi_queue_item_new),
	(gst_multi_queue_loop), (gst_multi_queue_chain),
	(gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
	(gst_multi_queue_getcaps), (gst_multi_queue_src_activate_push),
	(gst_multi_queue_src_query), (single_queue_overrun_cb),
	(single_queue_underrun_cb), (single_queue_check_full),
	(gst_single_queue_new):
	Keep track of time in the queue by measuring the difference between
	running_time on input and output. This gives more accurate results and
	can compensate for segments correctly.
	Make a queue by default only 5 buffers deep. We will now increase the
	buffer size depending on the filledness of the other queues.
	Factor out commong flush code.
	Make sure we don't add additional refcounts to buffers when we can avoid
	it.
	Propagate GstFlowReturn differently.
	Use GSlice for intermediate GstMultiQueueItems.
	Keep track of EOS.
	Resize queues on over and underruns based on filled level of other
	queues.
	When checking if the queue is filled, prefer to measure in time if we
	can and fall back to bytes when no time is known.

	* plugins/elements/gstqueue.c:
	Fix return value.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_event):
	Work around the brokenness of the event vmethod in basetransform. Prefer
	to return TRUE when the subclass returned FALSE (meaning don't forward
	the event). 

	* libs/gst/base/gstbasetransform.h:
	Clarify the docs.

2007-06-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_push_event), (gst_pad_send_event):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
	(gst_base_src_default_query), (gst_base_src_get_range),
	(gst_base_src_start):
	* tests/check/pipelines/parse-launch.c: (setup_pipeline):
	Improve debugging.

2007-06-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/advanced-types.xml:
	  Added more formats to caps table.

2007-06-15  Stefan Kost  <ensonic@users.sf.net>

	* tools/gst-launch.c: (main):
	  Remove crufy code. GOption does not need this workaround.

2007-06-14  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode):
	  Fix wrong getter for enums in controller.

2007-06-14  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstcheck.c: (gst_check_init):
	  Intercept criticals and warnings in the Gst-Phonon log domain, so
	  ASSERT_CRITICAL() etc. can be used in gst-phonon's unit tests as
	  well.
	
2007-06-14  Edward Hervey  <edward@fluendo.com>

	* gst/gstparamspecs.c: (_gst_param_fraction_validate):
	Since this file doesn't include "gst.h" it will not go through the
	macros that disable GST_LOG if debugging was disabled.

2007-06-14  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/Makefile.am:
	* libs/gst/check/gstcheck.h:
	* pkgconfig/gstreamer-check-uninstalled.pc.in:
	* pkgconfig/gstreamer-check.pc.in:
	  Ugly 'fix' for the controller unit test on the p5 bot: in
	  fail_unless_equals_float() check whether the values are 'almost
	  equal' by allowing a small absolute error, which should be good
	  enough for our use cases (normal numbers and values close to 0).
	  Proper fixage left to floating point arithmetic aficionados.

2007-06-14  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_reset_qos),
	(gst_base_sink_render_object), (gst_base_sink_get_position):
	  Add two breaks thats where missing.

2007-06-14  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/check/gstcheck.h:
	  API: add fail_unless_equals_float() and assert_equals_float().
	  Add documentation for some of the macros.

	* tests/check/libs/controller.c: (GST_START_TEST):
	  Use newly-added asserts.

2007-06-14  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpad.c: (gst_pad_alloc_buffer_full), (gst_pad_push):
	  Show the caps change in the log to help spotting the case of not
	  exactly matching caps.

2007-06-14  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/building-boiler.xml:
	  Fix typos, spotted by Thijs Vermeir (#447190).

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

	* docs/plugins/tmpl/.cvsignore:
	Ignore file to keep the buildbots happy

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

	* docs/plugins/Makefile.am:
	* docs/plugins/gstreamer-plugins-docs.sgml:
	* docs/plugins/gstreamer-plugins-sections.txt:
	Pull fdsink into the docs too.

2007-06-11  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstinterpolation.c:
	Actually use the new functions with min/max checks for the trigger and
	none interpolation modes for get() and get_value_array() instead of
	just the latter.

2007-06-10  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_free):
	Unset the minimum and maximum GValues when freeing the corresponding
	GstControllerProperty struct.

2007-06-09  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_new):
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gstinterpolation.c:
	(gst_controlled_property_find_control_point_node),
	(interpolate_none_get), (interpolate_none_get_enum_value_array),
	(interpolate_none_get_string_value_array),
	(interpolate_trigger_get),
	(interpolate_trigger_get_enum_value_array),
	(interpolate_trigger_get_string_value_array):
	Protect against values larger or smaller than the minimum or maximum
	allowed value for the property when using values that can be compared.

	Optimize trigger interpolator a bit by taking the last requested value
	into account instead of always looping through the complete list.

	Fix coding style a bit, everywhere else we use "return foo" instead
	of "return (foo)".
	
	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	Add unit test for the protection against too large or too small
	values.

2007-06-08  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/random/slomo/controller.txt:
	Add some thoughts about the future of the controller.

2007-06-08  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	Don't overflow in retimestamping code.

2007-06-07  Sebastien Moutte  <sebastien@moutte.net>

	* libs/gst/controller/gstinterpolation.c: (DEFINE_CUBIC_GET):
	Use gst_util_guint64_to_gdouble for conversions.
	* win32/common/libgstreamer.def:
	Add new exported functions.

2007-06-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.c:
	  Small docs addition.

2007-06-07  Stefan Kost  <ensonic@users.sf.net>

	* README:
	  Remove that test line again.

2007-06-07  Stefan Kost  <ensonic@users.sf.net>

	* README:
	  Test commit mail sending.

2007-06-07  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  Fix typo and test commit mail sending.

2007-06-07  Stefan Kost  <ensonic@users.sf.net>

	* tests/examples/controller/audio-example.c:
	  Improve comment and test commit mail sending.

2007-06-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (find_message), (bin_replace_message), (is_eos),
	(gst_bin_remove_func), (gst_bin_element_set_state),
	(bin_handle_async_start), (bin_handle_async_done),
	(gst_bin_handle_message_func):
	Add helper function to find messages.
	Generate the async-done messages together with the state change
	messages.
	Small cleanups in handling toplevel bins.

2007-06-06  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstdataqueue.c:
	* libs/gst/base/gstdataqueue.h:
	* plugins/elements/gstmultiqueue.c: (gst_single_queue_push_one),
	(gst_multi_queue_item_new), (gst_multi_queue_chain),
	(gst_multi_queue_sink_event):
	* tests/check/elements/multiqueue.c: (multiqueue_suite):
	  Fix multiqueue leaking buffers and events when downstream or the
	  queue are flushing. Make refcounting assumptions explicit and
	  document them (shouldn't break existing code that uses it other than
	  maybe leak miniobjects, but that already happens anyway). Add unit
	  test for the most common flushing case. Fixes #423700.
	  
2007-06-06  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstcontroller.c:
	Clarify docs: The get_all, get_value_array(s) functions
	don't modify the GObject properties.

2007-06-06  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_prepend_default),
	(gst_controlled_property_new), (gst_controller_set_unlocked),
	(gst_controller_set), (gst_controller_set_from_list),
	(gst_controller_unset), (gst_controller_unset_all):
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gstinterpolation.c:
	Factor out the 'set' logic into gst_controller_set_unlocked for the
	gst_controller_set and gst_controller_set_from_list functions.

	To make life of the interpolators easier always add a control point
	at timestamp zero with the default value.

	In the linear interpolator make things more obvious by better variable
	naming (slope).

	Implement cubic interpolation mode (by using a natural cubic spline)
	and map the quadratic interpolation mode to this too (as quadratic
	doesn't make much sense, see discussion on the list).

	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	Add unit test for the cubic interpolation mode and check everywhere
	if the interpolation mode could be set as expected.

2007-06-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstparamspecs.c: (gst_param_spec_fraction_get_type):
	  Don't use GLib-2.10 functions, we still depend on
	  GLib-how-old-is-it-again-2.8.

2007-06-06  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.c:
	* gst/gst.h:
	* gst/gstparamspecs.c: (_gst_param_fraction_init),
	(_gst_param_fraction_set_default), (_gst_param_fraction_validate),
	(_gst_param_fraction_values_cmp),
	(gst_param_spec_fraction_get_type), (gst_param_spec_fraction):
	* gst/gstparamspecs.h:
	* gst/gstvalue.c:
	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gstparamspecs.c: (gst_dummy_obj_base_init),
	(gst_dummy_obj_class_init), (gst_dummy_obj_init),
	(gst_dummy_obj_set_property), (gst_dummy_obj_get_property),
	(GST_START_TEST), (gst_param_spec_suite):
	  API: add GstParamSpecFraction, so elements can have fraction
	  properties without lots of painful string parsing (#444648).

2007-06-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstobject.c: (gst_object_class_init):
	Fix signal signature.

	* gst/gstsegment.c:
	Add small clarification in the api docs.

	* plugins/elements/gstfilesrc.c: (gst_file_src_set_location):
	States are protected with object lock.

2007-06-05  Jan Schmidt  <thaytan@mad.scientist.com>

	* AUTHORS:
	I should probably be listed as an author by now.

	* docs/random/release:
	Update the release doc

2007-06-05  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c:
	  Make docs for gst_value_compare() mention return enums that
	  actually exist.

2007-06-05  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	  Back to CVS

=== release 0.10.13 ===

2007-06-05  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.13, "With or without you"

2007-05-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_handle_async_done):
	Make sure that the child bin stops after completing the async state
	change so that the parent can continue the state change to PLAYING.
	Fixes #441159.

2007-05-25  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
	(unref_data), (gst_collect_pads_remove_pad),
	(gst_collect_pads_check_pads):
	Use additional refcounting to avoid crashes when dynamically adding and
	removing pads. Fixes #420206.

2007-05-24  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (event_loop):
	When buffering goes from a two digit to a single digit number, make sure
	to remove the old second digit by writing a blank over it.

2007-05-24  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstdataqueue.c:
	  Eliminate tabs and trailing comma in enum list; fix some typos.

2007-05-24  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstbin.c: (GST_START_TEST):
	Allow refcount of 3 and 4 because some state thread might still be busy
	with it.

2007-05-24  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/Makefile.am:
	* plugins/elements/gstmultiqueue.h:
	* plugins/elements/gstqueue.h:
	  These are not installed headers, no need for padding.

2007-05-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_get_state_func),
	(gst_bin_continue_func):
	Enable latency for next release.
	Restore STATE_LOCK around recalc_state that was left out during the
	rewrite and could result in racy behaviour when _get_state and
	recalc_state are run concurrently. See #440463.

2007-05-23  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstsystemclock.c: (store_callback),
	(GST_START_TEST):
	Improve test_async_order to also work when both timers are already
	expired when we get scheduled to check it.

2007-05-22  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (gst_bin_init), (gst_bin_dispose),
	(gst_bin_set_property), (gst_bin_get_property),
	(gst_bin_remove_func), (gst_bin_handle_message_func):
	* gst/gstbin.h:
	  'private' is a c++ keyword, let's not use that in header files,
	  otherwise c++ compilers will throw a tantrum.

2007-05-22  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstelements.c:
	* plugins/elements/gstfilesink.c: (gst_file_sink_do_seek),
	(gst_file_sink_get_current_offset):
	* plugins/indexers/gstindexers.c: (plugin_init):
	  Use #ifdef for HAVE_XYZ for consistency.

	* tests/check/Makefile.am:
	* tests/check/elements/.cvsignore:
	* tests/check/elements/filesink.c: (setup_filesink),
	(cleanup_filesink), (GST_START_TEST), (filesink_suite):
	  Add some unit tests for filesink.

2007-05-22  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Mark Nauwelaerts <manauw at skynet be>

	* plugins/elements/gstfilesink.c: (gst_file_sink_open_file),
	(gst_file_sink_query), (gst_file_sink_do_seek),
	(gst_file_sink_get_current_offset), (gst_file_sink_render):
	* plugins/elements/gstfilesink.h:
	  Fix position reporting; rename data_written member to current_pos to
	  reflect its real meaning (fixes #412648).

2007-05-22  Edward Hervey  <edward@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
	(gst_bin_dispose), (gst_bin_set_property), (gst_bin_get_property),
	(gst_bin_remove_func), (gst_bin_handle_message_func):
	* gst/gstbin.h:
	Add a property for bins that handle the state change of their childs.
	Fixes #435880

2007-05-22  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstinterpolation.c:
	Use an array of the correct type when using _get_value_array with
	linear interpolation.

2007-05-22  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c (gst_element_requires_clock,
	  gst_element_provides_clock, gst_element_request_pad,
	  gst_element_class_set_details, gst_element_class_set_details_simple,
	  gst_element_default_send_event, gst_element_abort_state,
	  gst_element_continue_state, gst_element_set_state,
	  gst_element_set_state_func, iterator_activate_fold_with_resync):
	* gst/gstpad.c (gst_pad_activate_pull, gst_pad_set_getcaps_function,
	  gst_pad_fixate_caps, gst_pad_configure_sink, gst_pad_configure_src,
	  gst_pad_query, gst_pad_save_thyself, handle_pad_block, gst_pad_push,
	  gst_pad_get_range, gst_pad_pull_range):
	* gst/gstpad.h (GST_PAD_LINK_SUCCESSFUL, GST_FLOW_CUSTOM_SUCCESS,
	  GST_FLOW_NOT_SUPPORTED, GST_FLOW_IS_FATAL, GstPadActivateFunction,
	  GstPadActivateModeFunction, GstPadChainFunction,
	  GstPadGetCapsFunction, GstPadAcceptCapsFunction,
	  GstPadFixateCapsFunction, GstPadTemplate):
	* gst/gstpipeline.c (gst_pipeline_change_state,
	  gst_pipeline_set_new_stream_time, gst_pipeline_use_clock,
	  gst_pipeline_set_clock, gst_pipeline_auto_clock,
	  gst_pipeline_get_delay):
	  Whitespace and docs fixes.

2007-05-21  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstinterpolation.c:
	(interpolate_trigger_get_enum_value_array),
	(interpolate_trigger_get_string_value_array):
	Add support for retrieving value arrays when using the trigger
	interpolation mode. 

2007-05-21  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstcontroller.c:
	(gst_controller_get_value_array):
	* libs/gst/controller/gstcontroller.h:
	Clarify the docs of gst_controller_get_value_array(): The array where
	the values should be written to must be allocated as there seems to be
	no way to get the size of a random GType. This doesn't change any
	behaviour. Also fix some typos all over the place and remove an unused,
	commented function that is not necessary as g_object_set() could be
	used instead.
	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	Add unit test for gst_controller_get_value_array().

2007-05-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/gst/gstbuffer.c: (GST_START_TEST):

	Disable part of the gst_buffer_try_new_and_alloc test, because
	it can happily succeed on 64-bit systems where there's more address
	space available.

2007-05-21  Sebastian Dröge  <slomo@circular-chaos.org>

	* tests/check/gst/gstpad.c: (GST_START_TEST), (gst_pad_suite):
	Add unit test for the improved caps checking from bug #421543.

2007-05-21  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-synchronisation.txt:
	Small addition.

	* gst/gstbin.c: (gst_bin_query):
	* plugins/elements/gstqueue.c: (apply_segment):
	Improve debugging.

	* gst/gstmessage.h:
	Improve docs.

2007-05-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_get_caps_unlocked),
	(gst_pad_acceptcaps_default), (gst_pad_configure_sink),
	(gst_pad_configure_src):
	Added simple version of improved caps checking. It was previously
	assumed that a setcaps function would check the validity of the caps but
	people prefer us to check caps against the template automatically. 
	Fixes #421543.

2007-05-21  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.h:
	Fix macro for locking/unlocking the transform lock.

2007-05-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/plugins/tmpl/.cvsignore:
	  Ignore more.

2007-05-18  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_loop):
	Hello, I am Mr Taymans' personal debugger. Today I will introduce a fix
	for the subtle art of warning a potentially blocking thread that it
	should check the source pad return value, and relay the information
	upstream.

2007-05-18  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
	Release the queue lock !

2007-05-17  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/libs/gstreamer-libs-sections.txt:
	Add the two new controller functions to the appropiate places.

2007-05-17  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Stefan Kost <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controller_suggest_next_sync), (gst_controller_sync_values),
	(_gst_controller_get_property), (_gst_controller_set_property),
	(_gst_controller_init), (_gst_controller_class_init):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gsthelper.c: (gst_object_suggest_next_sync),
	(gst_object_get_control_rate), (gst_object_set_control_rate):
	API: gst_controller_suggest_next_sync(), gst_object_suggest_next_sync()
	Add API that provides sync suggestion timestamps for elements that
	call gst_object_sync_values() from which those elements can subdivide
	their processing loop to get the best results for the controlled
	properties. For now it just suggests last_sync + control_rate as
	new timestamp but this will be improved in the future.

	While doing that change the control-rate property to a GstClockTime
	from guint and change it's meaning from samples to nanoseconds as
	the GstController doesn't know anything about sampling rate. Strictly
	speaking this breaks ABI but as the control-rate property didn't do
	anything in the past and as such couldn't be used this should be no
	problem.	

2007-05-17  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Stefan Kost <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c: (gst_controller_unset),
	(gst_controller_unset_all):
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gstinterpolation.c:
	(gst_controlled_property_find_control_point_node):
	Save last synced value from the list to continue searching from there
	in future syncs. This speeds everything up a bit.
	
2007-05-17  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Stefan Kost <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c: (gst_control_point_compare),
	(gst_control_point_find), (gst_controlled_property_new),
	(gst_control_point_free), (gst_controlled_property_free),
	(gst_controller_set), (gst_controller_set_from_list),
	(gst_controller_unset), (gst_controller_unset_all),
	(gst_controller_sync_values):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gstinterpolation.c:
	(gst_controlled_property_find_control_point_node),
	(interpolate_none_get), (interpolate_trigger_get):
	Add a new private GstControlPoint struct which "inherits" from
	GstTimedValue to allow different interpolators to store internal
	values next to each control point. From the outside everything is
	still a GstControlPoint so we don't loose binary compatibility.
	Also fixup all the GValue handling to not leak GValues or list nodes.
	* tests/check/libs/controller.c: (GST_START_TEST):
	Free the list nodes and GValues in the controller_misc test.

2007-05-17  Edward Hervey  <edward@fluendo.com>

	* gst/gstsegment.c:
	Small doc fix.

2007-05-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.c: (gst_plugin_load_file):
	  If we fail to load a plugin because of unresolved symbols or missing
	  libraries and spew a warning to stderr, we may just as well mention
	  which plugin it was that failed to load.

2007-05-13  David Schleef  <ds@schleef.org>

	* docs/Makefile.am: the gtk-doc makefile snippet correctly
	  handles the case when ENABLE_GTK_DOC is false, and installs
	  the prebuilt documentation.  So gtk-doc subdirs are 
	  unconditionally enabled.  Fixes: #349099.

2007-05-13  David Schleef  <ds@schleef.org>

	* gst/gstutils.h: Reword some documentation.

2007-05-12  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: gst_plugin_register_func() doesn't actually
	  do anything with the passed "module" parameter, so remove it.
	  Allows removal of additional vestigal code.

2007-05-12  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c:
	  Using sigaction should depend on HAVE_SIGACTION, not HAVE_WIN32.
	  Switch to using g_stat() because it's more portable.

2007-05-12  David Schleef  <ds@schleef.org>

	* gst/gst.c:
	  Add GST_DISABLE_OPTION_PARSING, in order to disable option
	  parsing for embedded systems.
	* gst/gstelementfactory.c:
	  Allow gst_element_register() to be called with plugin==NULL.
	  Did nobody notice that static elements were broken?

2007-05-12  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (event_loop):
	Give more interesting info when buffering starts and stops.
	Fix case where buffering starts but we fail to update the buffering flag
	because the target state is not PLAYING.

2007-05-12  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_init),
	(gst_queue_finalize), (update_time_level), (apply_segment),
	(apply_buffer), (gst_queue_locked_flush),
	(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
	(gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_push_one), (gst_queue_loop):
	* plugins/elements/gstqueue.h:
	Refactor an cleanup queue a bit.
	Do better time level calculations that also work when the srcpad is not
	yet running.
	Remove some unneeded debug lines.

	* tests/check/elements/queue.c: (GST_START_TEST), (queue_suite):
	Added testcase for time level measurement.
	Try to make some stuff more racefree.

2007-05-11  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsturi.c: (gst_element_make_from_uri):
	  Don't leak plugin feature.

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gsturi.c: (GST_START_TEST), (gst_uri_suite):
	  Add brain-dead unit test.

2007-05-11  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Jeroen Wouters <woutersj at gmail com>

	* gst/gsturi.c: (gst_uri_get_protocol), (search_by_entry):
	  Treat protocol strings in a case-insensitive way (#437563).

2007-05-11  Michael Smith <msmith@fluendo.com>

	* gst/gstplugin.c: (gst_plugin_load_file):
	* gst/gstregistry.c: (gst_registry_scan_path_level):
	  Don't print a g_warning for any failure to load a shared object.
	  Instead, push this down into gstplugin.c, and warn _only_ if we
	  failed to open the module (i.e. failure to link).
	  Avoids warnings on normal, working, non-plugin .so files.

2007-05-11  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstplugin.c (gst_plugin_load_file):
	* gst/gstregistry.c (GST_CAT_DEFAULT,
	  gst_registry_lookup_feature_locked, gst_registry_scan_path_level):
	  Print a g_warning if there was an error when loading a plugins during
	  registry scan. The shuld help beginners starting with gst-plugin
	  template.

2007-05-10  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_class_init),
	(update_time_level), (gst_queue_locked_flush),
	(gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_push_one), (gst_queue_loop):
	* plugins/elements/gstqueue.h:
	Be smarter when calculating the current amount of data in the queue by
	measuring the difference between start and end timestamps (in running
	time) inside the queue. Fixes #432876.
	API: GstQueue::pushing to notify elements that we are pushing data again
	since the running signal is rather broken for this purpose.

2007-05-10  Stefan Kost  <ensonic@users.sf.net>

	* plugins/elements/gstqueue.c (_do_init, gst_queue_signals,
	  gst_queue_base_init, gst_queue_init):
	  use GST_BOILERPLATE

2007-05-09  Sebastien Moutte  <sebastien@moutte.net>

	* win32/common/libgstreamer.def:
	Add new exported functions.
	* win32/vs6/grammar.dsp:
	Use grammar pre-generated files.

2007-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	Based on patch by: Peter Kjellerstedt  <pkj at axis com>

	* gst/Makefile.am:
	* gst/gstparse.c: (gst_parse_launchv), (gst_parse_launch):
	* gst/gstparse.h:
	* gst/gstutils.c: (gst_parse_bin_from_description):
	* gst/gstutils.h:
	  Maintain API and ABI when --disable-parse is used. Now that
	  we have an appropriate error code, we can just return NULL and the
	  appropriate error when gst_parse_launch() is used despite it having
	  been disabled (#342564).

	* tests/check/Makefile.am:
	* tests/check/pipelines/.cvsignore:
	* tests/check/pipelines/parse-disabled.c:
	  Make sure these functions exist and return NULL plus a GError when
	  --disable-parse is used.

2007-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/benchmarks/complexity.c: (main):
	* tests/benchmarks/mass-elements.c: (main):
	  Set a good example and don't leak messages.

2007-05-06  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  Correct fixxrefs options.

	* docs/plugins/Makefile.am:
	* docs/plugins/gstreamer-plugins-docs.sgml:
	* docs/plugins/gstreamer-plugins-sections.txt:
	* plugins/elements/Makefile.am:
	* plugins/elements/gstcapsfilter.c (gst_capsfilter_details):
	* plugins/elements/gstcapsfilter.h (__GST_CAPSFILTER_H__,
	  GST_TYPE_CAPSFILTER, GST_CAPSFILTER, GST_CAPSFILTER_CLASS,
	  GST_IS_CAPSFILTER, GST_IS_CAPSFILTER_CLASS, GstCapsFilter,
	  GstCapsFilterClass, _GstCapsFilter, trans, filter_caps,
	  _GstCapsFilterClass, trans_class):
	* plugins/elements/gstelements.c (name, rank, type, _elements):
	* plugins/elements/gstidentity.c
	  (gst_identity_check_imperfect_timestamp,
	  gst_identity_check_imperfect_offset):
	  Document capsfilter and add doc-blurb to identity.

2007-05-04  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode):
	* libs/gst/controller/gstinterpolation.c:
	  Don't crash if someone tries to set an interpolation mode that
	  is invalid or that isn't supported yet. Fixes #422295.

	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	  Add a test case for the above.

2007-05-03  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_chain):
	Properly set the last_stop position on GstSegment. This will only happen
	if there is a buffer to push out.

2007-05-03  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	always_in_place does not mean that the sink and source caps are the
	same! Make sure we don't blindly proxy the buffer_alloc in this case.

2007-05-03  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
	(gst_base_src_default_query), (gst_base_src_get_range):
	* libs/gst/base/gstbasesrc.h:
	API: gst_base_src_query_latency(). Added method so that subclasses can
	easily get the latency values of the base source class.

2007-05-02  Zaheer Abbas Merali  <<zaheerabbas at merali dot org>>

	* tools/gst-inspect.c (print_implementation_info):
	Remove 0.8 cruft.

2007-05-02  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/Makefile.am:
	* tools/gst-launch.1.in:
	  Don't create a customised man page based on the host architecture,
	  describe the default registry path generically. That way the man
	  page is the same for all architectures and packagers have one
	  multilib issue less to deal with. Fixes #434926.

2007-05-02  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c:
	Fix documentation as spotted by rg on IRC. 

2007-04-29  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstutils.c:
	  Improve docs for gst_element_{link,unlink}.

2007-04-28  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/design/part-events.txt:
	* docs/design/part-overview.txt:
	* gst/gstevent.c:
	* gst/gsturi.c:
	* gst/gsturi.h:
	* libs/gst/base/gstbasesink.c:
	  Typo fixes; minor docs addition.

2007-04-27  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsturi.c: (get_element_factories_from_uri_protocol),
	(gst_uri_protocol_is_supported), (gst_element_make_from_uri):
	* gst/gsturi.h:
	API: Add gst_uri_protocol_is_supported(), which checks if a sink
	or src that supports a given URI protocol exists.

2007-04-27  Sebastian Dröge  <slomo@circular-chaos.org>

	* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
	* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
	Set the location to NULL if "file://" is set as URI. Otherwise
	some random previous URI would still be set if "file://" is
	set on an already used filesink/filesrc.

2007-04-27  Sebastian Dröge  <slomo@circular-chaos.org>

	* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
	* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
	Special case the "file://" URI as as this is used by some
	applications to test with gst_element_make_from_uri if there's
	an element that supports the URI protocol.
	Also move the g_path_is_absolute() check for the location part
	of the URI to also check this for "file://localhost/bla" URIs.

2007-04-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbuffer.c: (gst_buffer_try_new_and_alloc):
	* gst/gstbuffer.h:
	* tests/check/gst/gstbuffer.c: (GST_START_TEST),
	(gst_buffer_suite):
	  API: add gst_buffer_try_new_and_alloc() plus unit test (#431940).

2007-04-26  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.c: (gst_registry_binary_write_cache),
	(gst_registry_binary_load_pad_template),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	  Implement no-mmap alternative for registry reading. Do code cleanups.
	  Add more comments about avoiding strdups for all text data. Comments
	  welcome.

2007-04-25  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.h (GstBinaryPluginElement,
	  GstBinaryPluginFeature, _GstBinaryElementFactory, plugin_feature,
	  GstBinaryElementFactory, _GstBinaryTypeFindFactory, plugin_feature):
	  Comment structs and reformat to fix the build (that stuff should go
	  into a priv. header).

2007-04-25  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
	(gst_registry_binary_load_feature):
	* gst/gstregistrybinary.h:
	  Refactor so that we can implement multiple features. Add support for
	  TypeFindFactory features.

2007-04-24  Stefan Kost  <ensonic@users.sf.net>

	Patch by: Peter Kjellerstedt <Peter.Kjellerstedt@axis.com>

	* configure.ac:
	  Fix AM_CONDITIONAL(GST_DISABLE_GST_DEBUG,...) and update comment.

2007-04-23  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbin.c: (gst_bin_element_set_state),
	(iterator_activate_fold_with_resync), (gst_bin_continue_func),
	(bin_handle_async_done), (gst_bin_handle_message_func):
	  Fix build with --gst-disable-gst-debug

2007-04-21  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_activate):
	  Make sure streaming has finished before calling the ::stop() vfunc,
	  since that vfunc might clear state which is being used in the
	  streaming thread. This fixes a race that caused crashes in
	  audioresample when shutting down a pipeline (#420106).

2007-04-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  That was one byte missing.

2007-04-20  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gstconfig.h.in:
	* gst/gstobject.c: (gst_object_class_init),
	(gst_signal_object_class_init):
	* gst/gstobject.h:
	  2nd attempt to have a xml-less build as a joined effort of #413123
	  and #421480.

2007-04-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-tagreading.txt:
	  Added open issues/thoughts to draft.

2007-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/grammar.tab.pre.c:
	* gst/parse/grammar.tab.pre.h:
	* gst/parse/lex._gst_parse_yy.pre.c:
	Update the prebuild parser sources.

2007-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/Makefile.am:
	And now fix the building of the flex sources. Now everything should
	work as expected.

2007-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/Makefile.am:
	Now hopefully fix the build failures by setting proper rule
	dependencies and moving instead of copying.

2007-04-19  Stefan Kost  <ensonic@users.sf.net>

	* tests/benchmarks/complexity.gnuplot:
	* tests/benchmarks/complexity.scm:
	* tests/benchmarks/mass-elements.gnuplot:
	* tests/benchmarks/mass-elements.scm:
	  Total licensification.

2007-04-19  Stefan Kost  <ensonic@users.sf.net>

	* gst/parse/Makefile.am:
	  Fix the build by correcting the rule that gave wrong files to flex.

2007-04-19  Stefan Kost  <ensonic@users.sf.net>

	* tests/benchmarks/complexity.c:
	* tests/benchmarks/mass-elements.c:
	  Change licence to LGPL as granted by Benjamin and Andy.

2007-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/Makefile.am:
	Add correct grammar.tab.h dependency if compiling without new enough
	flex. Fixes #431150.

2007-04-18  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/Makefile.am:
	Fix typo and use outdated sources if the flex/bison sources are newer
	than the pregenerated ones but flex is too old. Print a warning in
	that case. This should fix the build on the build bot.

2007-04-18  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com>
	* gst/parse/Makefile.am:
	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	Make the parser reentrant and recursively callable. This requires flex
	>= 2.5.31, for older versions pregenerated sources are used as we
	can't bump the build dependency. Finally fixes #349180.

	* gst/gstparse.c: (gst_parse_launch):
	Drop the HAVE_MT_SAVE_FLEX #ifdefs as we always use a new enough flex
	now anyway.

	* docs/gst/Makefile.am:
	* docs/gst/Makefile.am:
	* gst/parse/grammar.tab.pre.c: (__gst_parse_strdup),
	(__gst_parse_strfree), (__gst_parse_link_new),
	(__gst_parse_link_free), (__gst_parse_chain_new),
	(__gst_parse_chain_free), (SET_ERROR), (YYPRINTF),
	(gst_parse_element_set), (gst_parse_free_link),
	(gst_parse_found_pad), (gst_parse_perform_delayed_link),
	(gst_parse_perform_link), (yytnamerr), (yysyntax_error), (yyerror),
	(_gst_parse_launch):
	* gst/parse/grammar.tab.pre.h:
	* gst/parse/lex._gst_parse_yy.pre.c: (PRINT), (yy_get_next_buffer),
	(yy_get_previous_state), (yy_try_NUL_trans), (input),
	(_gst_parse_yyrestart), (_gst_parse_yy_switch_to_buffer),
	(_gst_parse_yy_load_buffer_state), (_gst_parse_yy_create_buffer),
	(_gst_parse_yy_delete_buffer), (_gst_parse_yy_init_buffer),
	(_gst_parse_yy_flush_buffer), (_gst_parse_yypush_buffer_state),
	(_gst_parse_yypop_buffer_state),
	(_gst_parse_yyensure_buffer_stack), (_gst_parse_yy_scan_buffer),
	(_gst_parse_yy_scan_string), (_gst_parse_yy_scan_bytes),
	(yy_fatal_error), (_gst_parse_yyget_extra),
	(_gst_parse_yyget_lineno), (_gst_parse_yyget_column),
	(_gst_parse_yyget_in), (_gst_parse_yyget_out),
	(_gst_parse_yyget_leng), (_gst_parse_yyget_text),
	(_gst_parse_yyset_extra), (_gst_parse_yyset_lineno),
	(_gst_parse_yyset_column), (_gst_parse_yyset_in),
	(_gst_parse_yyset_out), (_gst_parse_yyget_debug),
	(_gst_parse_yyset_debug), (_gst_parse_yyget_lval),
	(_gst_parse_yyset_lval), (_gst_parse_yylex_init),
	(yy_init_globals), (_gst_parse_yylex_destroy), (yy_flex_strncpy),
	(yy_flex_strlen), (_gst_parse_yyalloc), (_gst_parse_yyrealloc),
	(_gst_parse_yyfree):
	If the installed flex version is too old use pre-generated parser
	sources. These pre-generated parser sources are always updated when
	the actual flex/bison sources change but require everybody who wants
	to change something in the parser to have flex >= 2.5.31 installed.

2007-04-18  Stefan Kost  <ensonic@users.sf.net>

	* common/m4/gst-gettext.m4:
	* gst/gst-i18n-lib.h:
	  Make --disable-nls to work

2007-04-17  Wim Taymans  <wim@fluendo.com>

	* gst/gstconfig.h.in:
	Revert previous change that broke the build.

2007-04-17  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* gst/Makefile.am:
	* gst/gstconfig.h.in:
	  Drop libxml2 dependency when building with 
	  --enable-binary-registry --disable-loadsave

2007-04-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistrybinary.c: (gst_registry_binary_write_cache),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	  Remove unnecessary <sys/mman.h> include which broke the win32 build
	  with MingW; move includes from header file to .c file, even if the
	  header file isn't installed; use g_strerror() where UTF-8 strings
	  are expected, such as in GST_DEBUG messages.

2007-04-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/libs/gstreamer-libs-sections.txt:
	Remove bogus addition for API I didn't end up keeping.

	* libs/gst/base/gstbasesrc.h:
	Mention Since: 0.10.13 in the documentation.

	Add the API keyword to the previous ChangeLog entry.

2007-04-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_default_prepare_seek_segment),
	(gst_base_src_prepare_seek_segment), (gst_base_src_perform_seek):
	* libs/gst/base/gstbasesrc.h:
	Allow basesrc derived classes to execute seeks in other formats
	by providing a prepare_seek_segment vmethod. Sub-classes can choose
	to prepare the GstSegment in any format that their perform_seek method
	will be able to understand. The default implementation provides the
	old behaviour of attempting to convert the seek offsets to the 
	configured native format.

	API: basesrc::prepare_seek_segment vmethod.

2007-04-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelement.c: (gst_element_get_state_func):
	Don't output the same debug statement twice.

	* libs/gst/base/gstadapter.c: (gst_adapter_try_to_merge_up),
	(gst_adapter_peek), (gst_adapter_take_buffer):
	Optimise the case where we have buffers at the head of the queue that
	can be joined quickly (because they're contiguous sub-buffers) by
	merging them together rather than copying data out into new memory.

	* gst/parse/grammar.y:
	* tests/check/pipelines/parse-launch.c:
	Fix a leak in an error path for parse_launch, and add a check 
	for it to the testsuite.

2007-04-13  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_release_pad):
	  Don't deadlock when releasing a pad - gst_pad_set_active may try
	  and take the multiqueue lock too.

2007-04-12  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsterror.c: (_gst_core_errors_init):
	* gst/gsterror.h:
	  API: add GST_CORE_ERROR_DISABLED (#392804).

2007-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/gst-uninstalled:
	  don't get empty paths on the PATH variables
	* gst/gstpad.c (gst_pad_is_active, gst_pad_set_blocked_async):
	  Don't format for the uncommon terminal width of 84 characters.

2007-04-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c: (reset_stream_time),
	(gst_pipeline_change_state), (gst_pipeline_set_new_stream_time):
	Only try to select a different pipeline clock when we went back to
	PAUSED and not when we merely got flushed.

2007-04-05  Michael Smith  <msmith@fluendo.com>

	* tools/gst-launch.1.in:
	  fractions are better supported in gstreamer than ractions, so
	  suggest using those.

2007-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	Submitted by: Mogens Jaeger <mogens@jaeger.tf>

	* po/LINGUAS:
	* po/da.po:
	  Added Danish translation.

2007-04-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c:
	(gst_base_sink_queue_object_unlocked), (gst_base_sink_event):
	Fix leak caused when refusing newsegment after EOS.

	* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init),
	(gst_fake_sink_init), (gst_fake_sink_set_property),
	(gst_fake_sink_get_property), (gst_fake_sink_preroll),
	(gst_fake_sink_render), (gst_fake_sink_change_state):
	* plugins/elements/gstfakesink.h:
	Add num-buffers property to make the element generate EOS after a
	configurable amount of buffers.
	API: fakesink::num-buffers property.

	* tests/check/elements/fakesink.c: (GST_START_TEST),
	(fakesink_suite):
	Fix GstBus leak in test.
	Test for fakesink num-buffers.

2007-04-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c:
	(gst_base_sink_queue_object_unlocked), (gst_base_sink_event),
	(gst_base_sink_change_state):
	Don't accept anything after an EOS, return UNEXPECTED instead.

	* tests/check/elements/fakesink.c: (GST_START_TEST),
	(fakesink_suite):
	Unit test for new EOS behaviour.

2007-04-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_get_request_pad):
	Make padtemplates also work when they don't contain %s or %d.

2007-04-05  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.c: (gst_clock_adjust_unlocked),
	(gst_clock_unadjust_unlocked), (gst_clock_set_calibration):
	* gst/gstclock.h:
	Improve _adjust_unlocked() so that it overflows less.
	Add gst_clock_unadjust_unlocked to convert from external time to
	internal time based on calibration.
	Add some more debug.
	API: GstClock::gst_clock_unadjust_unlocked()

2007-04-03  Wim Taymans  <wim@fluendo.com>

	Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_release_pad):
	Deactivate pads and free GstSingleQueue with gst_single_queue_free()
	when releasing sink pad. Fixes #425400.

2007-04-02  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/dynlink.txt:
	  More work on proposal for new core api.

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasetransform.h:
          API: GST_BASE_TRANSFORM_LOCK/UNLOCK added
          
	* libs/gst/controller/gstcontroller.c:
	(on_object_controlled_property_changed),
	(gst_controller_sync_values),
	(gst_controller_set_interpolation_mode):
	* libs/gst/controller/gstcontroller.h:
	  Less verbose logging add docs for unimplemented parts and correctly
	  return when using unavailable parts.

2007-03-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstclock.c: (gst_clock_set_master), (do_linear_regression):
	Move all the debug to the CLOCK category, and associate it with
	the clock object.

2007-03-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstadapter.c: (gst_adapter_take_buffer):
	Make take_buffer a bit quicker by removing redundant checks
	caused by calling gst_adapter_take.

2007-03-28  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstmultiqueue.c: (gst_single_queue_free):
	  Don't leak GCond.

	* tests/check/Makefile.am:
	* tests/check/elements/.cvsignore:
	* tests/check/elements/multiqueue.c: (setup_multiqueue),
	(GST_START_TEST), (multiqueue_suite):
	  Add some dead simple unit tests for the 'multiqueue' element
	  (some bits don't work yet and are disabled for now).

2007-03-28  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelement.c: (gst_element_get_request_pad),
	(gst_element_class_get_request_pad_template):
	  Make gst_element_get_request_pad() create request pads only for
	  request pad templates and not for, say, sometimes pad templates.

2007-03-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-klass.txt:
	  Add example that needs more thinking.
	
	* docs/design/draft-missing-plugins.txt:
	  More thoughts about wrapper plugins.
	
	* docs/random/ensonic/embedded.txt:
	* docs/random/ensonic/profiling.txt:
	  More design work.

2007-03-25  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range),
	(gst_base_src_loop):
	Only push the segment events in the PLAYING state for live sources.

2007-03-23  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Modify the clock distribution path in PAUSED->PLAYING so that we 
	never attempt to choose a new clock unless we're actually leaving
	the PAUSED state for the first time. This prevents choosing a
	different clock when the state_change gets called for a 2nd time due
	to some element doing an async state change.

2007-03-22  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstpad.c: (gst_pad_set_caps), (gst_pad_configure_sink),
	(gst_pad_configure_src), (gst_pad_alloc_buffer_full),
	(gst_pad_chain_unchecked), (gst_pad_push):
	Revert last commit. This needs some more thoughts.

2007-03-22  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstpad.c: (gst_pad_set_caps), (gst_pad_alloc_buffer_full),
	(gst_pad_chain_unchecked), (gst_pad_push):
	Check in set_caps if the caps are compatible with the pad and remove
	two functions that are redundant now. Fixes #421543.

2007-03-22  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstsystemclock.c: (GST_START_TEST),
	(mixed_thread), (mixed_async_cb), (gst_systemclock_suite):
	Unref some more to make valgrind happy.

2007-03-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstsystemclock.c: (gst_system_clock_id_wait_jitter_unlocked),
	(gst_system_clock_id_wait_jitter),
	(gst_system_clock_id_wait_async), (gst_system_clock_id_unschedule):
	Fix anoying regression that survived a few releases. When adding an
	async entry while blocking on a sync entry, the sync entry will unblock
	but still be busy, so it should continue to wait instead of returning
	_BUSY to the app.
	Add some comments here and there.

	* tests/check/gst/gstsystemclock.c: (mixed_thread),
	(mixed_async_cb), (GST_START_TEST), (gst_systemclock_suite):
	Add testcase for this.

2007-03-22  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Handle errors from the clock sync better, only UNSCHEDULED indicates a
	WRONG_STATE and can silently pause the task. All other cases should
	error out.

2007-03-22  Wim Taymans  <wim@fluendo.com>

	Patch by: Ville Syrjala <syrjala at sci dot fi>

	* gst/gstpad.c: (gst_pad_alloc_buffer_full), (gst_pad_send_event):
	Fix possible deadlock if pad eventfunc is not specified.  Fixes #421177.
	Improve debugging.

2007-03-21  Michael Smith  <msmith@fluendo.com>

	* docs/pwg/advanced-types.xml:
	  Fix some errors in the typefinding docs pointed out on irc.

2007-03-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstbasesrc.c:
	Clarify FIXME comment in the face of having added unlock_stop()

2007-03-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_element_set_state):
	Prepare for release where we warn against possible app breakage in the
	case of live pipelines along with an env var to enable/disable live
	preroll mode (GST_COMPAT=[no-]live-preroll).

2007-03-20  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* plugins/elements/gstidentity.c (gst_identity_check_imperfect_offset):
	So we should use correct constants for checking for None offset.

2007-03-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-block.txt:
	Mention the fact that the newly switched element should be set to at
	least PAUSED.

2007-03-20  Wim Taymans  <wim@fluendo.com>

	* gst/gst.c:
	Fix compilation with registry disabled as spotted by Saur.

2007-03-20  Wim Taymans  <wim@fluendo.com>

	Patch by: Olivier Crete <tester at tester dot ca>

	* gst/gstelement.c: (gst_element_sync_state_with_parent):
	Look at the pending state too when syncing the element state to the
	parent. Fixes #420133.

2007-03-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_set_flushing),
	(gst_base_sink_change_state):
	* libs/gst/base/gstbasesink.h:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
	(gst_base_src_default_event), (gst_base_src_unlock_stop),
	(gst_base_src_deactivate):
	* libs/gst/base/gstbasesrc.h:
	Add ::unlock_stop to basesrc and basesink. This allows an opportunity
	for sub-classes to correctly clear any state they set trying to
	unlock, such as clearing out unlock commands from a command fd.
	API: basesrc::unlock_stop
	API: basesink::unlock_stop

	* plugins/elements/gstfdsink.c: (gst_fd_sink_class_init),
	(gst_fd_sink_render), (gst_fd_sink_unlock),
	(gst_fd_sink_unlock_stop):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init),
	(gst_fd_src_init), (gst_fd_src_unlock), (gst_fd_src_unlock_stop),
	(gst_fd_src_create), (gst_fd_src_get_size), (gst_fd_src_do_seek):

	Implement unlock_stop in fdsrc and fdsink.
	Implement seeking in fdsrc when a seekable fd is passed, as in
	gst-launch-0.10 fdsrc ! ... ! xvimagesink < /path/to/file

2007-03-19  Wim Taymans  <wim@fluendo.com>

	Patch by: Evan Nemerson <evan at coeus dash group dot com>

	* gst/gstelement.c: (gst_element_class_init):
	Fix pad-added and pad-removed signal signatures so that the pad type is
	stated as GST_TYPE_PAD instead of G_TYPE_OBJECT. Fixes #419851.

2007-03-19  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Add new element field and method.

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
	(bin_remove_messages), (gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_recalc_state), (gst_bin_get_state_func),
	(gst_bin_element_set_state), (gst_bin_change_state_func),
	(gst_bin_continue_func), (bin_bus_handler),
	(bin_push_state_continue), (bin_handle_async_start),
	(bin_handle_async_done), (gst_bin_handle_message_func):
	Make async state changes a bit smarter by using new ASYNC_START and
	ASYNC_DONE messages. This reduces the number of times we run the state
	recalculation thread.
	Don't change state of element with a pending ASYNC_START message.
	Deprecate STATE_DIRTY messages.
	
	* gst/gstelement.c: (gst_element_init), (gst_element_send_event),
	(gst_element_get_state_func), (gst_element_continue_state),
	(gst_element_lost_state), (gst_element_set_state_func),
	(gst_element_change_state):
	* gst/gstelement.h:
	Keep the state that was last set by the app in a new element field.
	Don't allow state changes when handling an element event.
	Post ASYNC_START and ASYNC_DONE messages.
	Change lost_state so that we go to PAUSED and wait for the parent to set
	us to PLAYING again (so latency calculation can be performed)
	Export gst_element_change_state() method so that subclasses can use it.
	API: gst_element_change_state()
	API: GST_STATE_TARGET

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(reset_stream_time), (gst_pipeline_change_state),
	(gst_pipeline_handle_message), (gst_pipeline_set_new_stream_time):
	Using the new ASYNC_START message we can reset the base_time when
	needed. This can then be used to implement base_time redistribution in
	flushing seeks so that we can remove the explicit seek handling.
	Perform latency query and configuration when going to PLAYING.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_query), (gst_base_sink_change_state):
	Post new ASYNC_START/ASYNC_DONE messages.

	* tests/check/generic/sinks.c: (GST_START_TEST):
	Fix test because the bin will not set the async element to PLAYING right
	away.

	* tests/check/gst/gstbin.c: (pop_async_done), (GST_START_TEST):
	Make the message check a little stronger.
	Handle ASYNC messages.

	* tests/check/pipelines/cleanup.c: (GST_START_TEST):
	* tests/check/pipelines/simple-launch-lines.c: (GST_START_TEST):
	Expect ASYNC_DONE messages.

2007-03-19  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstmessage.c: (gst_message_new_async_start),
	(gst_message_new_async_done), (gst_message_parse_info),
	(gst_message_parse_async_start):
	* gst/gstmessage.h:
	Add ASYNC_START and ASYNC_DONE messages to prepare for latency
	support.

2007-03-15  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c:
	(print_plugin_automatic_install_info_codecs):
	  Now that we don't check for the 'Codec' keyword any longer in the
	  klass, we shouldn't spew a warning if the klass isn't a decoder or
	  encoder (since it might be a Source/Network, for example).

2007-03-14  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c:
	(print_plugin_automatic_install_info_codecs):
	  Don't require decoder/demuxer/depayloader elements or
	  encoder/muxer/paylader elements to have 'Codec' as part of their
	  factory class string when introspecting a plugin's capabilities.
	  draft-klass.txt mentions that it might be removed in future, and
	  flump3dec doesn't have it as part of its class string, so chances
	  are others might also not have it.

2007-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/af.po:
	* po/az.po:
	* po/bg.po:
	* po/ca.po:
	* po/cs.po:
	* po/de.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/it.po:
	* po/nb.po:
	* po/nl.po:
	* po/ru.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	* po/zh_CN.po:
	* po/zh_TW.po:
	  Update translations from translation project

2007-03-14  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstchildproxy.c: (gst_child_proxy_get_property),
	(gst_child_proxy_set_property):
	  Invert precondition check to be alike the ones in the mimiced gobject
	  api.

2007-03-13  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-tagreading.txt:
	* docs/random/ensonic/audiobaseclasses.txt:
	  Do some Architect work.

	* gst/gstobject.c: (gst_object_set_name):
	  Add a WARNING.

	* gst/gstpad.c:
	  Add docs that point from gst_pad_get_range to gst_pad_pull_range

2007-03-12  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstsystemclock.c: (gst_system_clock_init),
	(gst_system_clock_start_async), (gst_system_clock_id_wait_async):
	Defer starting the async system clock thread until the first async
	wait is scheduled. Fixes #414986.

2007-03-12  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_finalize),
	(gst_single_queue_free):
	  Fix small leak (free GstSingleQueue structure too, not only contents).

2007-03-10  Sebastien Moutte  <sebastien@moutte.net>

	* gst/gstbin.c:(gst_bin_add):
	Use GST_STR_NULL to prevent NULL pointer to be passed to GST_CAT_DEBUG.
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	Add new exported functions.

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

	* docs/plugins/gstreamer-plugins-sections.txt:
	Fix GstTee docs.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbuffer.c: (gst_buffer_copy_metadata), (_gst_buffer_copy):
	* gst/gstbuffer.h:
	Add metadata copy functions. Fixes #393099.
	API: gst_buffer_copy_metadata()

	* gst/gstutils.c: (gst_buffer_stamp):
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buffer):
	Use new metadata copy functions.

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

	* plugins/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_check_perfect),
	(gst_identity_check_imperfect_timestamp),
	(gst_identity_check_imperfect_offset), (gst_identity_transform_ip),
	(gst_identity_set_property), (gst_identity_get_property):
	* plugins/elements/gstidentity.h:
	Separate out check-imperfect-timestamp and check-imperfect-offset.
	Put back check-perfect as it was to keep compatibility.

2007-03-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelement.c: (gst_element_dispose):
	There's no need to warn if VOID_PENDING is not NONE here, as
	long as the state is NULL it's ok, and that's checked immediately
	above.

2007-03-08  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
	Fix check for perfect stream to ignore buffers with -1 
	offsets/offset ends when checking data contiguity.

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

	* tools/gst-launch.c: (event_loop):
	Print INFO messages.

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

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_eventfunc),
	(gst_base_transform_handle_buffer), (gst_base_transform_chain),
	(gst_base_transform_activate):
	* libs/gst/base/gstbasetransform.h:
	Add support for dropping buffers with custom GstFlowReturn.
	Set DISCONT flags on outgoing buffers based on QoS, incomming DISCONT
	buffers or dropped buffers.

	* docs/libs/gstreamer-libs-sections.txt:
	docs for new custom return code.

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	Use drop support in base class to implement drop-probability.

2007-03-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (load_plugin_func):
	* gst/gstplugin.c: (gst_plugin_load_by_name), (gst_plugin_load):
	* gst/gstregistrybinary.c: (gst_registry_binary_read_cache):
	* gst/gsttrace.c: (gst_trace_new), (gst_alloc_trace_set_flags_all):
	  Remove newlines at end of debug log strings.

2007-03-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
	Only post bus message at max, once per buffer received.

2007-03-07  Wim Taymans  <wim@fluendo.com>

	* docs/design/Makefile.am:
	* docs/design/part-synchronisation.txt:
	Add doc about synchronisation

	* docs/design/draft-latency.txt:
	* docs/design/part-TODO.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbus.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-live-source.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-streams.txt:
	* docs/design/part-trickmodes.txt:
	Documentation updates.

2007-03-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gstreamer.doap:
	Update the doap file.

2007-03-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
	Rename non-perfect to imperfect for Mike and for the sanctity of the
	language.
	Also make sure bus message gets emitted for data-incontiguities.

2007-03-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* plugins/elements/gstidentity.c: (gst_identity_check_perfect),
	(gst_identity_start):
	* plugins/elements/gstidentity.h:
	Emit bus message if check-perfect is true and we encounter a
	non-perfect stream between 2 consecutive buffers.
	Fixes #415394.

2007-03-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Back to CVS

=== release 0.10.12 ===

2007-03-07  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.12, "Inevitable Demise"

2007-03-01  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	 Version 0.10.11.2 (0.10.12 pre-release)
	 Bump libtool versioning.

2007-03-01  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
	  Log flow-names and not numbers.

2007-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  Convert to new AG_GST style.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency):
	Don't unref query twice.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstvalue.c: (gst_value_transform_object_string),
	(_gst_value_initialize):
	Implement GstObject -> string transform so we print object names
	when serializing GValues containing GstObjects.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Add new stuff to docs.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
	(gst_base_sink_queue_object_unlocked), (gst_base_sink_send_event),
	(gst_base_sink_change_state):
	Improve latency query code.
	Don't leak latency events.

	* tests/check/gst/gstbin.c: (GST_START_TEST):
	Improve debugging.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_message_full),
	(gst_element_get_state_func):
	* gst/gstelement.h:
	Improve docs a little. Added Since: for new macro.

	* gst/gstobject.c: (gst_object_sink):
	* gst/gstpipeline.c: (gst_pipeline_change_state),
	(gst_pipeline_set_new_stream_time):
	* gst/gstpipeline.h:
	Improve debugging and docs.

	* gst/gstutils.c: (gst_element_state_change_return_get_name):
	Improve debugging.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_message_full),
	(gst_element_set_locked_state), (gst_element_get_state_func),
	(gst_element_change_state):
	Handle INFO messages from the GST_ELEMENT_INFO macro as well.
	Documentation updates.
	Small code cleanups.

	* gst/gstmessage.c: (gst_message_new_info),
	(gst_message_parse_info):
	* gst/gstmessage.h:
	API: gst_message_new_info()
	API: gst_message_parse_info()
	Add INFO message create and parse code.

2007-02-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_query_min_max_init), (bin_query_latency_fold),
	(bin_query_latency_done):
	Also report the live parameter of a latency query.

2007-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/check/generic/states.c: (GST_START_TEST), (states_suite):
	  Copy the current generic/states example from -base and adapt so
	  we can use the exact same code everywhere.
	  Check a STATES_IGNORE_ELEMENTS env var which can be used
	  to ignore certain element factories for this test, which is
	  what is being done in -base
	* tests/check/Makefile.am:
	  Mention this environment variable.

2007-02-27  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbus.c: (gst_bus_init), (gst_bus_dispose), (gst_bus_post),
	(gst_bus_timed_pop), (gst_bus_pop):
	* gst/gstbus.h:
	API: gst_bus_timed_pop()
	Implement gst_bus_timed_pop() to do a blocking timed wait for a
	message to arrive on the bus.

	* tests/check/gst/gstbus.c: (GST_START_TEST), (pop_thread),
	(gst_bus_suite):
	Two unit tests for new _timed_pop() function.

2007-02-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c: (gst_pipeline_change_state),
	(gst_pipeline_provide_clock_func), (gst_pipeline_set_delay):
	Don't ref a NULL clock in _provide_clock_func().
	Don't allow an INVALID delay.
	Don't try to calculate base_time with an invalid start_time.
	Also distribute and notify a NULL clock when it was selected.

	* tools/gst-launch.c: (event_loop):
	Don't crash when a NULL clock was selected in the pipeline.

2007-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/design/Makefile.am:
	* docs/design/draft-missing-plugins.txt:
	* docs/random/draft-missing-plugins.txt:
	  Some small updates: update plugin system identifier prefix
	  ('gstreamer.net' to 'gstreamer'), mention our new install
	  API in libgstbaseutils rather than libgimme-codec, add
	  reference to the online docs.

2007-02-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* win32/common/config.h:
	  Pretty sure Bill never made a powerpc version.  Powerpc hackers,
	  use moap cl ci to only check in what is mentioned in the ChangeLog.

2007-02-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.h:
	  Fix up documentation to link to the correct GstGError section.
	  Add GST_ELEMENT_INFO macro since someone else added a Info message.

2007-02-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-launch.c: (event_loop):
	  Make sure that we actually show the important message part of a
	  warning message.
	  No need to check if the gerror is not NULL to free; first of all
	  g_free accepts NULL; and second the default error handler would
	  segfault if gerror was NULL.

2007-02-21  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Removed docs as well.

2007-02-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.c: (gst_message_parse_duration):
	* gst/gstmessage.h:
	Remove new messages for release.

2007-02-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-gstghostpad.txt:
	* gst/gstghostpad.c: (gst_ghost_pad_dispose),
	(gst_ghost_pad_new_full):
	Make the ghostpad a parent of the internal pad again for better backward
	compatibility. Don't write code that relies on this however.

	* gst/gstpad.c: (gst_pad_activate_pull), (gst_pad_activate_push),
	(gst_pad_link_check_hierarchy):
	Require that parents should be GstElements in the hierarchy check.

2007-02-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_replace_message), (gst_bin_add_func),
	(gst_bin_change_state_func), (bin_query_min_max_init),
	(bin_query_latency_fold), (bin_query_latency_done),
	(gst_bin_query):
	Improve debug info.
	Implement latency query.

2007-02-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-gstghostpad.txt:
	* gst/gstghostpad.c: (gst_ghost_pad_class_init),
	(gst_ghost_pad_internal_do_activate_push),
	(gst_ghost_pad_internal_do_activate_pull),
	(gst_ghost_pad_do_activate_push), (gst_ghost_pad_do_activate_pull),
	(gst_ghost_pad_do_link), (gst_ghost_pad_dispose),
	(gst_ghost_pad_new_full), (gst_ghost_pad_set_target):
	Do not set the internal pad as a parent anymore so we can avoid
	hierarchy linking errors when the ghostpad has no parent yet. This also
	fixes failed activation because of unlinked internal pads, which in
	turn fixes the impossible case where you have to activate a pad before
	you can add it to a running element.
	Also fix the docs.

	* gst/gstpad.c: (pre_activate), (post_activate),
	(gst_pad_set_active), (gst_pad_activate_pull),
	(gst_pad_activate_push), (gst_pad_check_pull_range):
	Add some more debug info.
	Mark activation mode in pre_activate so that we don't try to activate in
	endless loops. Fixes #385084.

2007-02-19  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_init),
	(gst_base_transform_check_get_range):
	Implement a checkgetrange function instead of relying on the default
	core behaviour that assumes we can operate in pull mode if we have a
	getrange function. First step at fixing #385084.

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

	* gst/gstchildproxy.h:
	* libs/gst/base/gstbasesink.h:
	* libs/gst/base/gstbasesrc.h:
	* libs/gst/base/gstbasetransform.h:
	More docs coverage and some ChangeLog surgery (add missing names)

2007-02-15  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-activation.txt:
	* docs/design/part-block.txt:
	* docs/design/part-buffering.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-element-source.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbin.txt:
	* docs/design/part-gstbus.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-live-source.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-qos.txt:
	* docs/design/part-query.txt:
	* docs/design/part-states.txt:
	* docs/design/part-trickmodes.txt:
	Some doc updates. Start renaming from stream_time to running_time where
	it was used wrongly.

2007-02-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query):
	Answer LATENCY query.

2007-02-15  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstevent.c: (event_probe), (test_event),
	(GST_START_TEST):
	Improve debugging.

2007-02-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_get_internal_links_default),
	(gst_pad_dispatcher):
	Improve debugging of default pad dispatcher and query functions.

2007-02-15  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Remove old unused method.

2007-02-13  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	Fix check

2007-02-13  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-seeking.txt:
	Some small update.

	* gst/gstsegment.c: (gst_segment_set_seek):
	Revert old bogus change that should make seeking work again.

2007-02-13  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/dynlink.txt:
	* docs/random/ensonic/interfaces.txt:
	* docs/random/ensonic/receipies.txt:
	  Possible dynamic reconnection api, plus some type fixes the other two
	  docs.

2007-02-13  Sebastian Dröge  <slomo@circular-chaos.org>

	* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
	* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
	Also check for an absolute path following file:// in the filesrc
	element. Remove redundant check and call g_path_is_absolute() on the
	unescaped location.

2007-02-13  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-klass.txt:
	  Add existing category analysis.
	  
	* gst/gstcaps.c:
	  Fix doc example, framerate is a fraction.

2007-02-12  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/libs/Makefile.am:
	  Erm, forgot a bunch of --extra-dir.

2007-02-12  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	* docs/plugins/Makefile.am:
	  Add crossreferences to glib/gobject docs.

2007-02-12  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-latency.txt:
	Small update.

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_get_latency), (gst_base_sink_query_latency),
	(gst_base_sink_wait_clock), (gst_base_sink_send_qos),
	(gst_base_sink_perform_qos), (gst_base_sink_queue_object_unlocked),
	(gst_base_sink_chain_unlocked), (gst_base_sink_send_event),
	(gst_base_sink_get_position), (gst_base_sink_query),
	(gst_base_sink_change_state):
	* libs/gst/base/gstbasesink.h:
	API: gst_base_sink_query_latency() to let subclasses query the upstream
	latency.
	API: gst_base_sink_get_latency() to let subclasses query the configured
	latency in the sink.
	Implement query and set latency.
	Update some docs.
	As spotted by Will Newton <will dot newton at gmail dot com>: Make sure we
	don't continue preroll when we are flushing. Fixes #405284.

	* tests/check/pipelines/stress.c: (change_state_timeout),
	(quit_timeout), (GST_START_TEST), (stress_suite):
	Test for #405284.

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

	Patch by: René Stadler <mail at renestadler de>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c: (_gst_tag_initialize):
	* gst/gsttaglist.h:
	  API: add GST_TAG_REFERENCE_LEVEL (#403597).

2007-02-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/Makefile.am:
	  Fix path to core docs.

	* gst/gstbin.c: (gst_bin_get_by_interface),
	(gst_bin_iterate_all_by_interface):
	  Refix docs by also renaming 'interface' to 'iface' in implementation.

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.c:
	* gst/gstchildproxy.c: (gst_child_proxy_base_init):
	* gst/gstchildproxy.h:
	* gst/gstelementfactory.c:
	* gst/gstpadtemplate.h:
	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_new):
	  Document more.

2007-02-10  Sébastien Moutte  <sebastien@moutte.net>

	* gst/gstbin.h:(gst_bin_get_by_interface),
	(gst_bin_iterate_all_by_interface):
	Replace interface parameter name by iface as interface is 
	a reserved keyword in Visual Studio for C++ projects so it removes
	a build error for application developpers using VS.
	* plugins/elements/gstfilesrc.c:(gst_file_src_uri_set_uri):
	Fix a bug on Windows in uri format check. Now the prefix checked
	is file:// and next we check if the path after file:// is absolute.
	* win32/common/libgstbase.def:
	* win32/common/libgstdataprotocol.def:
	* win32/common/libgstgstreamer.def:
	Add new exported functions.

2007-02-09  Andy Wingo  <wingo@pobox.com>

	* tests/check/pipelines/simple-launch-lines.c
	(simple_launch_lines_suite, test_tee): Disable tee test until I
	have time to fix it :-(

	* tests/check/Makefile.am (noinst_HEADERS): 
	* tests/check/libs/libsabi.c: 
	* tests/check/libs/struct_ppc32.h: Add ABI checks for PPC32.
	* tests/check/gst/gstabi.c: 
	* tests/check/gst/struct_ppc32.h: Add ABI checks for PPC32.

	* tests/check/pipelines/simple-launch-lines.c (test_tee): Add
	tests for push and pull tee behavior.

	* plugins/elements/gsttee.h: 
	* plugins/elements/gsttee.c: Describe has-sink-loop better, and
	mark as deprecated as well as unimplemented. It was a crack idea.
	Add support for tee operating in pull mode, off by default.

	* gst/gstregistryxml.c (load_feature, load_plugin): Drop some
	normal-case logs down to LOG, raise errors to WARNING.
	(gst_registry_xml_read_cache): Don't log before calling a function
	that logs.

	* gst/gstregistry.c (gst_registry_finalize): Less debug on program
	exit (registry finalize).
	(gst_registry_add_plugin, gst_registry_add_feature): No need for a
	DEBUG log when we emit signals that people don't even have the
	chance to connect to.
	(gst_registry_scan_path_level): Less logging in the normal case.

2007-02-05  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Michal Benes <michal dot benes at itonis dot tv>

	* plugins/elements/gstfilesrc.c: (gst_file_src_create_read):
	Correctly generate EOS for non-seekable files. We don't have a total
	length for them and would get an unexpected end of file if we only
	special-cased for regular files. (Fixes: #404569)

2007-02-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* tests/check/elements/filesrc.c: (GST_START_TEST),
	(filesrc_suite):
	Add unit test for the GstURIHandler interface in filesrc. This also
	tests the newly added file://localhost/foo/bar support.

2007-02-04  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelementfactory.h:
	  The klass string is not a hierarchy. Add reference to the design doc
	  for more information and common types.

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

	* gst/gstquery.c: (gst_query_new_latency):
	Remove old structure field.

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

	* tools/gst-launch.1.in:
	  Give example for network streaming (#351998)

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

	* docs/gst/gstreamer-sections.txt:
	Add docs for new methods.

	* gst/gstevent.c: (gst_event_new_latency),
	(gst_event_parse_latency):
	* gst/gstevent.h:
	Add new LATENCY event to configure latency in a pipeline.
	API: gst_event_new_latency
	API: gst_event_parse_latency

	* gst/gstmessage.c: (gst_message_new_buffering),
	(gst_message_new_lost_preroll), (gst_message_new_prerolled),
	(gst_message_new_latency), (gst_message_parse_buffering),
	(gst_message_parse_lost_preroll):
	* gst/gstmessage.h:
	Added messages used in draft-latency.
	API: gst_message_new_lost_preroll
	API: gst_message_parse_lost_preroll
	API: gst_message_new_prerolled
	API: gst_message_new_latency

	* gst/gstquery.c: (gst_query_new_latency), (gst_query_set_latency),
	(gst_query_parse_latency):
	* gst/gstquery.h:
	Implemented new latency query as in design doc.
	API: gst_query_new_latency
	API: gst_query_set_latency
	API: gst_query_parse_latency

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

	* docs/design/draft-latency.txt:
	Slight redesign to allow for dynamic latency adjustments.

	* docs/design/part-negotiation.txt:
	Fix some typos.

2007-02-02  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Wim Taymans <wim@fluendo.com>

	* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
	* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
	Allow file://localhost/foo/bar URLs and correctly fail for every other
	hostname that one sets. This was gnomevfssrc is linked for those if
	installed as it can handle it (#403172)

2007-02-01  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Tim-Philipp Müller <tim at centricular dot net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
	(unref_data), (gst_collect_pads_add_pad_full):
	* libs/gst/base/gstcollectpads.h:
	Don't put the previously added destroy notify in the GstCollectData
	struct as all it's padding is already used and we don't want to break
	ABI. Instead put in the pad's GObject data for now. This should be
	cleaned up for 0.11 (#402393).

2007-02-01  Sebastian Dröge  <slomo@circular-chaos.org>

	reviewed by: Wim Taymans <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
	(unref_data), (gst_collect_pads_add_pad),
	(gst_collect_pads_add_pad_full):
	* libs/gst/base/gstcollectpads.h:
	API: Add function to specify a destroy notification for custom
	GstCollectData when adding new pads in GstCollectPads (#402393).

2007-02-01  Tim-Philipp Müller  <tim at centricular dot net>

	* po/sv.po:
	  Update Swedish translation (#378255).

2007-01-31  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-klass.txt:
	  Fix the previous change, this is a list of categories and not a hierarchy.

2007-01-31  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/draft-klass.txt:
	  Add info about how to get a list of used classes.

2007-01-30  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain_do_typefinding),
	(gst_type_find_element_change_state):
	  Don't leak found caps in chain function (no idea why that never
	  showed up as a leak anywhere).

2007-01-30  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstplugin.h:
	  Fix and expand GstPluginDesc API docs.

2007-01-29  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstcaps.c:
	* gst/gstelementfactory.c:
	* gst/gstpadtemplate.h:
	  api doc fixes

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_new):
	* tests/examples/controller/audio-example.c:
	  comment fixes

2007-01-29  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  comment about refining the xml deps

	* docs/manuals.mak:
	  comments about moving away from jade for docs
	
	* gst/gst.c:
	  recommit the ifdefs to use the binary registry
	
	* gst/gstbin.c: (gst_bin_change_state_func):
	  this break is obsolete

	* gst/gstelementfactory.h:
	  better GST_ELEMENT_DETAILS docs, add comment about translation

	* gst/gstinfo.h:
	  remove eol slash

	* gst/gstobject.c: (gst_signal_object_get_type):
	  add G_UNLIKELY as usual

	* gst/gstpad.c: (gst_pad_event_default):
	  add fall trhu comment

	* gst/gstregistrybinary.c: (gst_registry_binary_write),
	(gst_registry_binary_initialize_magic),
	(gst_registry_binary_save_string),
	(gst_registry_binary_save_pad_template),
	(gst_registry_binary_save_feature),
	(gst_registry_binary_save_plugin),
	(gst_registry_binary_write_cache),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_load_pad_template),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	  comment typo and formatting

	* gst/gstutils.c: (gst_element_state_get_name),
	(gst_element_state_change_return_get_name):
	  remove obsolete breaks

	* gst/gstvalue.c: (gst_date_get_type), (_gst_value_initialize):
	  add FIXME 0.11 and remove cpp comment

2007-01-29  Edward Hervey  <edward@fluendo.com>

	* gst/gstregistrybinary.c: (gst_registry_binary_read_cache):
	Fix print statement in an even more portable way.

2007-01-29  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstutils.h:
	  API: add GST_ROUND_DOWN_* macros (#401781).

2007-01-27  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer.types.in:
	* gst/gstregistry.c: (gst_registry_class_init):
	  Document registry signals and make gtk-doc pick them up (#401381).

2007-01-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/building-testapp.xml:
	  Add some audioconverts and audioresample to the pipeline, and some
	  more comments and error handling.

2007-01-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/manual.xml:
	* docs/pwg/pwg.xml:
	  Fix typo (#400987).

2007-01-26  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_static_caps_get):
	Init caps flags too.

2007-01-25  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Jindrich Makovicka <jindrich.makovick at itonis dot tv>

	* plugins/elements/gstfilesrc.c: (gst_file_src_start):
	If not using mmap'ed files try to seek to the end instead of the
	start to determine whether we can seek at all. This fixes the case
	of 2GB+ files over NFS, where seeks in the first 2GB can succeed but
	seeks for everything afterwards fail. Fixes #400656

2007-01-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (_gst_caps_free), (gst_static_caps_get):
	Add some refcount debugging.
	Make gst_static_caps_get threadsafe, which is needed when autoplugging
	in multiple streaming threads.

2007-01-25  Wim Taymans  <wim@fluendo.com>

	Patch by: David Schleef <ds at schleef dot org>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstadapter.c: (gst_adapter_copy):
	* libs/gst/base/gstadapter.h:
	API: gst_adapter_copy() that can reduce the amount of memcpy when
	getting data from the adapter. Fixes #388201.

2007-01-25  Edward Hervey  <edward@fluendo.com>

	* gst/gstregistrybinary.c: (gst_registry_binary_read_cache):
	In print statements, "%x" is for guint. Fixes build on macosx.

2007-01-24  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstmultiqueue.c:
	(gst_multi_queue_loop):
	Small fix.
	(single_queue_overrun_cb), (single_queue_underrun_cb),
	(single_queue_check_full), (gst_single_queue_new):
	Implement single queue growth system.
	This uses the extra-size properties, and will grow single queues by
	that much if one goes full whereas there are others empty. This is
	called extra-mode in the code.
	When a single queue's levels go back below the initial max-size
	limits, it is no longer in extra-mode. This is to ensure we don't
	consume too much memory.
	Fixes #399875

2007-01-23  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (gst_init_get_option_group):
	  Make warning about late g_thread_init() calls a bit more explicit,
	  so that it's more obvious to application developers what they need
	  to do if a user files a bug against their application.

2007-01-22  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstmultiqueue.c:
	(gst_multi_queue_src_activate_push), (gst_single_queue_new):
	Remove previous hack of unsetting the flushing flag for the source pad
	instead of activating it. Instead, fix the source pad activate function
	so that it no longer depends on having a parent set or not.

2007-01-22  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Carlos Sanmartin Dominguez <csanmartin@igalia.com>

	* docs/manual/basics-bus.xml:
	  Fix example code, gst_element_unref() doesn't exist any longer.

2007-01-21  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Mark Nauwelaerts <manauw at skynet be>

	* gst/gstpad.c:
	  Fix two docs typoes (#399094).

2007-01-19  Edward Hervey  <edward@fluendo.com>

	* docs/faq/gst-uninstalled:
	Add gst-plugins-base/gst/utils/ to LD_LIBRARY_PATH so that plugins
	depending on libgstbaseutils can work in uninstalled environment.

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

	* gst/gsttaglist.h:
	* gst/gsttagsetter.c:
	Add more docs regarding tag merge-modes and when to send tags. Fix 'since'
	statement for new tag.

2007-01-17  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstmultiqueue.c: (gst_single_queue_new):
	When dynamically creating single queues, activate sinkpad before adding
	it.
	We should be doing the same thing for the source pad, but we can't
	since it would call a method which needs the parent to be set in order
	to work propertly. Instead of activating the source pad, we just unset
	the flushing flag, which is the minimal requirement for adding a pad
	to an element in a state greater than READY.

2007-01-17  Edward Hervey  <edward@fluendo.com>

	* docs/faq/gst-uninstalled:
	Add DYLD_LIBRARY_PATH declarations so we can also use this script on
	Mac OS X.

2007-01-17  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstabi.c:
	* tests/check/gst/struct_hppa.h:
	* tests/check/libs/libsabi.c:
	* tests/check/libs/struct_hppa.h:
	  Add ABI structs for HPPA (see #393796).

2007-01-16  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstcheck.c: (gst_check_abi_list):
	  Actually write ABI structs to the file specified in the GST_ABI
	  environment variable, as the message we print claims we would.

2007-01-15  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/gst/gsttask.c:
	  Fix header comment.

2007-01-15  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsttaglist.c: (_gst_tag_initialize):
	  Change tag type from STRING to DOUBLE. Apply ChangeLog surgery for my
	  previous two entries.

2007-01-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c: (_gst_tag_initialize):
	* gst/gsttaglist.h:
	  Add tag support for beat-per-minute.

2007-01-15  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistrybinary.c: (gst_registry_binary_write),
	(gst_registry_binary_initialize_magic),
	(gst_registry_binary_save_string), (gst_registry_binary_make_data),
	(gst_registry_binary_save_pad_template),
	(gst_registry_binary_save_feature),
	(gst_registry_binary_save_plugin),
	(gst_registry_binary_write_cache),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_load_pad_template),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	  Use glib types, cleanup comments, impement interfaces and uri-types.

2007-01-13  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_get_range, gst_pad_pull_range): Allow
	getrange() to return buffers with other caps, while we fix
	demuxers and typefind, or otherwise change part-negotiation.txt.

2007-01-12  Andy Wingo  <wingo@pobox.com>

	* libs/gst/base/gstbasetransform.c (gst_base_transform_activate):
	Factor start/stop into this private function instead of partially
	in activate functions and partially in the change_state function.
	Fixes setup before the element has changed from READY->PAUSED, as
	is the case in pull-mode pipelines.
	(gst_base_transform_sink_activate_push)
	(gst_base_transform_src_activate_pull): Refactor to use
	gst_base_transform_activate().
	(gst_base_transform_change_state): Removed, not needed any more.

	* libs/gst/base/gstbasesink.c (gst_base_sink_negotiate_pull):
	Truncate before fixating.
	
	* libs/gst/base/gstbasesink.c (gst_base_sink_negotiate_pull):
	Don't set_caps() if the result of fixating is ANY, as it's not
	supported, and not necessary in the case of a link with no
	template caps on either side. Fixes tests/check/libs/basesrc in
	some pull-mode tests.

	* libs/gst/base/gstbasetransform.c (_GstBaseTransformPrivate):
	(gst_base_transform_init, gst_base_transform_sink_activate_push)
	(gst_base_transform_src_activate_pull): 
	Track the activation mode.
	(gst_base_transform_setcaps): In pull mode, when activating the
	src pad, after activating the sink pad, activate the sink pad's
	peer, as discussed in part-negotiation.txt.

	* libs/gst/base/gstbasesrc.h: 
	* libs/gst/base/gstbasesrc.c (gst_base_src_fixate): Add fixate
	vmethod, as in basesink.

	* libs/gst/base/gstbasesink.h: Reformat docs, add fixate vmethod.

	* libs/gst/base/gstbasesink.c (gst_base_sink_pad_setcaps): In pull
	mode, first proxy the setcaps to the peer pad.
	(gst_base_sink_pad_fixate): Add a fixate function that calls the
	new fixate vmethod.
	(gst_base_sink_default_activate_pull): Rename from
	gst_base_sink_activate_pull.
	(gst_base_sink_negotiate_pull): New function, performs negotiation
	in pull mode before calling ::activate_pull().
	(gst_base_sink_pad_activate_pull): Actually call the activate_pull
	vmethod instead of the default implementation. I have no idea how
	this worked before. Negotiate before calling activate_pull.

	* gst/gstpad.c (gst_pad_activate_pull): Refuse to activate unlinked
	sink pads in pull mode. In addition to being correct, fixes
	filesrc ! decodebin ! identity ! fakesink.
	(gst_pad_get_range, gst_pad_pull_range): Don't call
	gst_pad_set_caps() if the caps changes; instead error out with
	GST_FLOW_NOT_NEGOTIATED, as discussed in part-negotiation.txt.

2007-01-12  Andy Wingo  <wingo@pobox.com>

	* docs/design/part-negotiation.txt: Update with more policy.

2007-01-12  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstbufferstraw.h:
	* libs/gst/check/gstcheck.h:
	  Add G_BEGIN_DECLS and G_END_DECLS. Move GST_CHECK_MAIN where it
	  belongs.

2007-01-12  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gsttagsetter.c: (gst_dummy_enc_add_interfaces),
	(gst_dummy_enc_base_init), (gst_dummy_enc_class_init),
	(gst_dummy_enc_init), (tag_list_foreach), (tag_setter_list_length),
	(GST_START_TEST), (gst_tag_setter_suite):
	  Add minimal unit test for beforementioned GstTagSetter bug.

2007-01-12  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: René Stadler <mail at renestadler dot de>

	* gst/gsttagsetter.c: (gst_tag_setter_merge_tags):
	  gst_tag_list_merge() returns a new list, so it's not the best idea
	  to ingore its return value. Effectively meant that tags could only
	  be merged on a GstTagSetter once using _merge_tags(). Fixes #395554.
	  Also add function guard to require a non-NULL taglist as input (has
	  always been so due to gst_tag_list_copy(), just making it explicit).

2007-01-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/draft-missing-plugins.txt:
	  Some additions: mention new API that is supposed to be used at the
	  various stages; short blob about new gst-inspect introspection
	  option; mention potential future problem with plugins that have
	  a dynamic list of elements (such as ladspa, pitfdll, libvisual).

2007-01-11  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c:
	(print_plugin_automatic_install_info_codecs),
	(print_plugin_automatic_install_info_protocols),
	(print_plugin_automatic_install_info), (main):
	Add --print-plugin-auto-install-info option to gst-inspect, so we can
	introspect plugin files and get machine-parsable output that corresponds
	to the last bit of the missing-plugin installer string (small gotcha:
	doesn't take into account ranks).

2007-01-11  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gstregistry.c: (gst_registry_lookup_feature_locked),
	(gst_registry_lookup_locked):
	* gst/gstregistry.h:
	* gst/gstregistrybinary.c: (gst_registry_binary_write),
	(gst_registry_binary_initialize_magic),
	(gst_registry_binary_save_string),
	(gst_registry_binary_save_pad_template),
	(gst_registry_binary_save_feature),
	(gst_registry_binary_save_plugin),
	(gst_registry_binary_write_cache),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_load_pad_template),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	* gst/gstregistryxml.c: (load_feature),
	(gst_registry_xml_read_cache):
	  commit binary registry (disabled by default, see #359653)

2007-01-11  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstpad.c: (test_get_allowed_caps):
	  Fix 'make check' too.

2007-01-10  Andy Wingo  <wingo@pobox.com>

	* docs/design/part-negotiation.txt: Fix a typo, add a couple
	notes.
	
	* docs/design/part-negotiation.txt: Update with, um, one way that
	pull-mode negotiation might work?

	* gst/gstpad.h: 
	* gst/gstpad.c (gst_pad_get_allowed_caps): Remove the restriction
	that the pad must be a src pad; makes sense to call it the other
	way in pull mode, and the logic is symmetric anyway.

2007-01-10  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesink.c:
	  Include <stdio.h> for fseeko().

2007-01-10  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c:
	* gst/gstevent.h:
	Reserve LATENCY event.

2007-01-09  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-latency.txt:
	Updates.

2007-01-09  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-latency.txt:
	Updates.

	* gst/gstelement.h:
	* gst/gststructure.c:
	* gst/gsttrace.c:
	Small typo fixes.

2007-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/.cvsignore:
	  Ignore test-registry.xml as well.

2007-01-09  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad):
	unref data at the end when we are done with the pad.

2007-01-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c: (load_plugin_func), (scan_and_update_registry),
	(init_post), (gst_deinit), (gst_update_registry):
	* gst/gst.h:
	  API: add gst_update_registry() (#391296).

	* tests/check/Makefile.am:
	* tests/check/gst/gstregistry.c:
	* tests/check/gst/.cvsignore:
	  Simple unit test for the above.

2007-01-08  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistry.c: (gst_registry_scan_path_level):
	  Plugin extension on HP-UX is .sl, add that to the list of approved
	  plugin extensions (see #393796).

	* tests/check/gst/gstpad.c: (GST_START_TEST):
	  ulong => gulong. Fixes compilation with HP-UX compiler.

	* tests/check/pipelines/parse-launch.c: (GST_START_TEST):
	  Fix compilation if valgrind headers are not available.

2007-01-07  Sébastien Moutte  <sebastien@moutte.net>

	* win32/common/libgstreamer.def: 
	  Add new exported function.
	* win32/vs6/libgstbase.dsp: 
	  Add gstdataqueue.c to the build.
	* win32/vs6/libgstcoreelements.dsp:
	  Add gstmultiqueue.c to the build.
	
2007-01-06  Andy Wingo  <wingo@pobox.com>

	* libs/gst/base/gstbasesink.h: New GstBaseSinkClass vmethod,
	activate_pull(), providing for a way to specialize the process of
	spawning a thread to pull on the sink pad. There is a default
	implementation.

	* libs/gst/base/gstbasesink.c (gst_base_sink_pad_activate_pull)
	(gst_base_sink_pad_activate_push, gst_base_sink_pad_activate)
	(gst_base_sink_init): Renamed pad activation functions (inserting
	"_pad" in their names). Refactor to use the new activate_pull
	vmethod, as appropriate.
	(gst_base_sink_class_init, gst_base_sink_activate_pull): Set the
	default activate_pull function to start a task pulling from the
	sink pad, as before.

	* gst/gstpad.c (gst_pad_get_range, gst_pad_pull_range): Set caps
	on the pads if necessary, as in push()/chain(). Update docs.
	Shouldn't affect existing pull() usage as it is currently only
	being used on buffers without caps.

2007-01-05  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
	(init_pre):
	  Call g_thread_init() first thing in gst_init() / gst_check_init().
	  When initialisation is done via gst_init_get_option_group() and
	  GOption parsing, issue a warning if the GLib thread system has not
	  been initialised yet by the time gst_init_get_option_group() is
	  called, as it's quite likely other GLib functions such as
	  g_option_context_new() have been called already then, and
	  g_thread_init() must be called before any other GLib function. The
	  application in question must be fixed in that case, since memory
	  corruption might happen otherwise.
	  We issue the warning because even if the GLib folks decide to work
	  around the problem on their end in future, this is still an issue
	  with all GLib versions >= 2.10.0, so we should warn until we depend
	  on a GLib version we know to be safe.
	  Update documentation as well.
	  Closes bug #391278.

2007-01-05  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-typefind.c: (main):
	* tools/gst-xmlinspect.c: (main):
	  Call g_thread_init() really really early, before any other GLib
	  function (see #342564 and recent discussion on gtk-devel-list).

2007-01-05  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Vincent Torri  <vtorri at univ-evry dot fr>

	* gst/gst_private.h:
	* gst/gstconfig.h.in:
	* gst/gstinfo.h:
	  On win32, all the __declspec stuff for symbol exporting is
	  apparently only needed with MSVC, but doesn't work with MingW.
	  Fixes compilation with MingW and #391909.

2007-01-05  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_activate_push):
	  Change some GST_ERROR_OBJECT that aren't really errors to
	  GST_WARNING_OBJECT in order to reduce terminal spam.

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

	* tests/check/Makefile.am:
	  disable test again, as there seem to be still race problems

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

	* tests/check/Makefile.am:
	* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
	(GST_START_TEST), (queue_suite):
	  enable queue test again, add tests for the leaky behaviour

2007-01-02  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	* tests/examples/Makefile.am:
	  Compile adapter test/example only if the required headers are
	  available (fixes #391915).

2007-01-01  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c:
	  Restore the previous signal handler for SIGSEGV instead of
	  setting to default, since we may have stolen it away from
	  someone.  (i.e., Mono)

2006-12-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/draft-missing-plugins.txt:
	  Some small additions and clarifications.

2006-12-26  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistryxml.c: (gst_registry_save_escaped):
	  Make sure we don't pass non-UTF-8 strings to g_markup_escape(),
	  since that can lead to random memory corruptions and crashes
	  (may or may not be related to #383244, #386711, and #386711).

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/.cvsignore:
	* tests/check/Makefile.am:
	  sync .cvsignome and CLEANFILES

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/Makefile.am:
	  fix distcheck

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/part-states.txt:
	  two tiny additional comments
	
	* gst/gststructure.c:
	  doc fixing

	* tests/check/Makefile.am:
	* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
	(GST_START_TEST):
	  disable test for now, unless it gets fixed

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
	(GST_START_TEST):
	  fix race in underrun test

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/elements/.cvsignore:
	  ignore more

	* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
	(GST_START_TEST):
	  try to narrow test failure

2006-12-21  David Schleef  <ds@schleef.org>

	* plugins/elements/gstfakesrc.c:
	  Use g_random_int_range(), since it produces better random
	  numbers in a range than almost-correct floating point code.

2006-12-21  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/check/gstcheck.c: (gst_check_setup_src_pad),
	(gst_check_teardown_src_pad), (gst_check_setup_sink_pad),
	(gst_check_teardown_sink_pad):
	  do not automatically (de)activate pads

	* tests/check/Makefile.am:
	* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
	(setup_queue), (cleanup_queue), (GST_START_TEST), (queue_suite):
	  add new, yet simple tests for queue

	* tests/check/elements/fakesrc.c: (cleanup_fakesrc):
	* tests/check/elements/fdsrc.c: (cleanup_fdsrc):
	* tests/check/elements/filesrc.c: (cleanup_filesrc),
	(GST_START_TEST):
	* tests/check/elements/identity.c: (cleanup_identity):
	  consistent pad (de)activation

2006-12-20  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Sebastian Dröge  <slomo ubuntu com>

	* libs/gst/base/gstcollectpads.c:
	  Fix two doc typos (#387866).

2006-12-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-dparams.xml:
	  Fix typo (g_object_control_properties() doesn't exist).

2006-12-19  Edward Hervey  <edward@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_seek):
	Fine tune the cases where the segment start/stop values are really
	updated.
	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	Add tests for the return values of gst_segment_set_seek().

2006-12-19  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c:
	  Docs typo fix.

	* plugins/elements/gstqueue.c: (gst_queue_class_init),
	(gst_queue_init):
	  Fix incorrect documentation and flesh it out a bit more.
	  Set default values for the max properties on the GParamSpec as well,
	  so it shows up correctly in gst-inspect.

2006-12-18  Stefan Kost  <ensonic@users.sf.net>

	* plugins/elements/gstqueue.c: (queue_leaky_get_type):
	  Correct docs of queue, add more detail and crosslink it more.

2006-12-16  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
	  Print additional debug info when the stream isn't perfectly
	  timestamped; don't try to use invalid durations.

2006-12-16  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/design/Makefile.am:
	  Dist new design docs.

2006-12-16  Wim Taymans  <wim@fluendo.com>

	Patch by: Sjoerd Simons <sjoerd at luon dot net>

	* libs/gst/base/gstcollectpads.c: (ref_data), (unref_data),
	(gst_collect_pads_add_pad), (gst_collect_pads_remove_pad),
	(gst_collect_pads_stop), (gst_collect_pads_event),
	(gst_collect_pads_chain):
	* libs/gst/base/gstcollectpads.h:
	Add refcounting to the collectpads data so we can track when it's safe
	to free the data. Fixes #383382.

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

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_add_pad),
	(gst_collect_pads_remove_pad):
	Automatically activate/deactivate pads when they are added to a
	started/stoped collectpads.

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

	* gst/gstelement.c: (gst_element_add_pad):
	* gst/gstghostpad.c: (gst_ghost_pad_new_full):
	* gst/gstpad.c: (gst_pad_init):
	Set pads to FLUSHING when they are created. Check, warn and fix when a
	demuxer adds an inactive pad to itself when running. Fixes #339326.

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

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_default_send_event), (gst_element_send_event),
	(gst_element_default_query), (gst_element_query):
	Expose default element send_event and query handling as vmethods that
	subclasses can chain up to.

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

	* gst/gstelement.c: (gst_element_set_state_func):
	Small documentation fixes.

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

	* docs/design/draft-latency.txt:
	Checked in draft for handling latency in pipelines.

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

	* Makefile.am:
	* gstreamer.doap:
	* gstreamer.spec.in:
	  adding .doap file

2006-12-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_pre), (init_post):
	  init_pre() and init_post() might be called via our GOptionGroup or
	  from gst_init(), and we should skip both of them if we've already
	  been initialised, otherwise we will init some things twice or add
	  two default log functions.

2006-12-13  Edward Hervey  <edward@fluendo.com>

	* docs/manual/basics-bus.xml:
	No, gst_main_loop does not exist. Its g_main_loop.
	Discovered by somebody who abused the copy-paste technique of coding :)

2006-12-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstghostpad.c:
	  Log ghostpad debug stuff to the GST_PADS category as well rather
	  than just to the default category.

2006-12-12  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	* gst/gst.c: (init_pre):
	  Add some basic system details such as OS and architecture
	  to the debug output if possible, courtesy of uname().

2006-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/running.xml:
	  Document GST_REGISTRY_FORK and GST_DEBUG_NO_COLOR
	  environment variables.

2006-12-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/gst/gstbin.c: (GST_START_TEST):
	It is acceptable to have a refcount of 2 or 3 at this point in the
	test, because the pipeline might be just posting its state_change
	message. The next line then waits for that message to appear using
	bus_poll, so that should be fine too.

2006-12-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c: (ensure_current_registry_forking):
	Ignore EINTR when reading from the child registry pipe.
	Explicitly ignore the return value from close, since it makes no
	difference.

	* gst/gstminiobject.c: (gst_mini_object_ref),
	(gst_mini_object_unref):
	When debugging refcounts, check GST_IS_MINI_OBJECT and warn.

	* gst/gstregistry.c: (_priv_gst_registry_remove_cache_plugins):
	When removing cached plugins, remove their features too, so they're
	not visible after they've disappeared.

	* gst/gstutils.c: (prepare_link_maybe_ghosting):
	In the unlikely case that we are linking pads with no parents, don't
	crash trying to get the non-existent parent bin.

	* gst/parse/grammar.y:
	Output debug in the PIPELINE category

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

	Patch by: René Stadler <mail at renestadler dot de>

	* gst/gstclock.c: (gst_clock_new_periodic_id):
	Reject invalid clock times for interval of periodic ids.
	Fixes ##383506.

2006-12-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelementfactory.c: (gst_element_factory_create):
	* gst/gstpluginfeature.c: (gst_plugin_feature_load):
	* gst/gsttypefindfactory.c: (gst_type_find_factory_call_function):
	* tools/gst-inspect.c: (print_element_info):
	Fix refcounting of gst_plugin_feature_load to match the docs. 
	Fixes: #380129

2006-12-07  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_event),
	(gst_base_sink_get_position):
	Improve debugging of events.

2006-12-07  Wim Taymans  <wim@fluendo.com>

	Patch by: René Stadler <mail at renestadler dot de>

	* gst/gstclock.c: (gst_clock_id_wait):
	Make period ids add the interval to the origial requested time instead
	of the possibly updated time which can be wrong when there are multiple
	waiters for the same id. Fixes #382592.

	* gst/gstsystemclock.c: (gst_system_clock_async_thread),
	(gst_system_clock_id_wait_jitter_unlocked),
	(gst_system_clock_id_wait_jitter):
	Fix restart in the async notify thread when an async entry is added to
	the front of the list. Fixes #381492. 

	* tests/check/gst/gstsystemclock.c: (store_callback),
	(notify_callback), (GST_START_TEST), (gst_systemclock_suite):
	Added test for multiple async waits.
	Added test for async wait order.

2006-12-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_query):
	Add some more docs about the POSITION query.

2006-12-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Bump version nano - back to CVS.

=== release 0.10.11 ===

2006-12-06  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.11, "Love never runs on time"

2006-12-01  Jan Schmidt  <thaytan@mad.scientist.com>

	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	* win32/vs8/libgstbase.vcproj:
	* win32/vs8/libgstcoreelements.vcproj:
	* win32/vs8/libgstreamer.vcproj:
	Fix compilation on win32 under VS8
	Patch by: Sergey Scobich <sergey dot scobich at gmail dot com>
	Partially fixes #381175

2006-11-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstvalue.c: (gst_value_compare_fraction):
	If someone is foolish enough to compare 2 fractions with denominator =
	0, return UNORDERED rather than aborting.

2006-11-28  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/Makefile.am:
	* libs/gst/base/gstdataqueue.c: (gst_data_queue_get_type),
	(gst_data_queue_base_init), (gst_data_queue_class_init),
	(gst_data_queue_init), (gst_data_queue_new),
	(gst_data_queue_cleanup), (gst_data_queue_finalize),
	(gst_data_queue_locked_flush), (gst_data_queue_locked_is_empty),
	(gst_data_queue_locked_is_full), (gst_data_queue_flush),
	(gst_data_queue_is_empty), (gst_data_queue_is_full),
	(gst_data_queue_set_flushing), (gst_data_queue_push),
	(gst_data_queue_pop), (gst_data_queue_drop_head),
	(gst_data_queue_set_property), (gst_data_queue_get_property):
	* libs/gst/base/gstdataqueue.h:
	New GstDataQueue object for threadsafe queueing. Most useful for
	elements that need some queueing functionnality.
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	Insert documentation for GstDataQueue
	* plugins/elements/Makefile.am:
	* plugins/elements/gstelements.c:
	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
	(gst_multi_queue_class_init), (gst_multi_queue_init),
	(gst_multi_queue_finalize), (gst_multi_queue_set_property),
	(gst_multi_queue_get_property), (gst_multi_queue_request_new_pad),
	(gst_multi_queue_release_pad), (gst_single_queue_push_one),
	(gst_multi_queue_item_destroy), (gst_multi_queue_item_new),
	(gst_multi_queue_loop), (gst_multi_queue_chain),
	(gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
	(gst_multi_queue_getcaps), (gst_multi_queue_bufferalloc),
	(gst_multi_queue_src_activate_push), (gst_multi_queue_acceptcaps),
	(gst_multi_queue_src_event), (gst_multi_queue_src_query),
	(wake_up_next_non_linked), (compute_next_non_linked),
	(single_queue_overrun_cb), (single_queue_underrun_cb),
	(single_queue_check_full), (gst_single_queue_new):
	* plugins/elements/gstmultiqueue.h:
	New multiqueue element, using GstDataQueue. Used for queuing multiple
	streams.
	Closes #344639 and #347785

2006-11-22  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/advanced-types.xml:
	  add more missing type details

	* tools/gst-run.c: (main):
	  remove unused variable

2006-11-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs.types:
	  add types of base classes to enable gobject specific stuff in the docs

	* docs/random/ensonic/embedded.txt:
	  more ideas about isolating platform specific things

2006-11-20  Wim Taymans  <wim@fluendo.com>

	Patch by: Sebastian Dröge <slomo at ubuntu dot com>

	* libs/gst/check/gstcheck.h:
	Fix compilation and running against 0.9.4. Fixes #377332.

2006-11-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_seek),
	(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
	(gst_segment_to_running_time):
	Fix boundary checking in to_running_time() and to_stream_time().
	Fixes #377183.

	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	stream and running time can now be calculated for the complete
	clipped segment.

2006-11-15  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c: (gst_pad_push_event):
	  Can't access event structure after giving away ownership of
	  the event.

2006-11-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/embedded.txt:
	* docs/random/ensonic/profiling.txt:
	* docs/random/ensonic/receipies.txt:
	  more thinking

2006-11-13  Wim Taymans  <wim@fluendo.com>

	Patch by: Mark Nauwelaerts <manauw at skynet dot be>

	* gst/gstpad.c:
	Fix documentation for gst_pad_dispatcher. Fixes #374475.

2006-11-13  Wim Taymans  <wim@fluendo.com>

	Patch by: Jonathan Matthew <jonathan at kaolin dot wh9 dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_update_length):
	Store new length in segment duration so we don't keep on calling the
	potentially expensize get_size() call. Fixes #370865.

2006-11-10  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Sergey Scobich  <sergey.scobich at gmail com>

	* win32/common/libgstreamer.def:
	  Add two missing symbols (#366492).

2006-11-10  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstadapter.c: (gst_adapter_flush),
	(gst_adapter_take_buffer):
	Fix format string to use all its arguments.
	Remove useless >= check on a guint

2006-11-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/examples/adapter/.cvsignore:
	Ignore build file as commanded by the build-bot

2006-11-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/examples/adapter/Makefile.am:
	* tests/examples/adapter/adapter_test.c: (run_test_take),
	(run_test_take_buffer), (run_tests), (main):

	Add new files from the previous commit

2006-11-09  Jan Schmidt  <thaytan@mad.scientist.com>

	* Makefile.am:
	* configure.ac:
	* libs/gst/base/gstadapter.c: (gst_adapter_clear),
	(gst_adapter_push), (gst_adapter_peek_into), (gst_adapter_peek),
	(gst_adapter_flush), (gst_adapter_take), (gst_adapter_take_buffer):
	* libs/gst/base/gstadapter.h:
	* tests/check/libs/adapter.c: (create_and_fill_adapter),
	(GST_START_TEST), (gst_adapter_suite):
	* tests/examples/Makefile.am:
	Do some optimisation work in GstAdapter to avoid copies in more cases.
	It could still do slightly better by merging buffers when
	gst_buffer_is_span_fast is true, but is already faster. 

	Also, avoid traversing a single-linked list to append each incoming 
	buffer inside the adapter.

	Add simple test app that times the adapter behaviour in different
	situations, and extend the unit test to check that bytes enter and
	exit the adapter in their original order.

2006-11-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/draft-missing-plugins.txt:
	  Update: use element message instead of adding a new message
	  type to the core; don't provide GStreamer API to initiate the
	  plugin download, just provide API to compose the strings needed
	  and let an external libgimmestuff handle the rest.

2006-11-08  Jan Schmidt  <thaytan@mad.scientist.com>

	* tools/gst-inspect.c: (print_element_properties_info):
	Print a string instead of 'unknown type' for GValueArray properties

2006-11-08  Christian F.K. Schaller  <christian@fluendo.com>

	* docs/random/draft-missing-plugins.txt:
	More small fixes.

2006-11-07  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/examples/typefind/typefind.c: (type_found), (main):
	  Make typefind element example work again (#371894); add a
	  license header.

2006-11-07  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/random/draft-missing-plugins.txt:
	  Commit initial draft about how to deal with missing plugins,
	  needs work (API too).

2006-11-07  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/advanced-types.xml:
	  documents the new caps elements (see #363118)

2006-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstplugin.c: (gst_plugin_load_file):
	* plugins/elements/gstfilesrc.c: (gst_mmap_buffer_finalize),
	(gst_file_src_map_region), (gst_file_src_start):
	* plugins/indexers/gstfileindex.c: (gst_file_index_load),
	(gst_file_index_commit):
	  Use g_strerror() instead of strerror() - we want UTF-8.

2006-11-06  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Peter Kjellerstedt <pkj at axis com>

	* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
	  Another printf fix (#371493).

2006-11-06  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/gst/gsttag.c:
	  relicence (okay with author=company)

2006-11-06  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpad.c: (gst_pad_event_default_dispatch),
	(gst_pad_push_event):
	  Enhance debug and improve docs
	
	* gst/gsturi.c:
	  Fix docs

2006-11-06  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/distributed.txt:
	* docs/random/ensonic/profiling.txt:
	  more ideas

2006-11-06  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  add new API and fix the build
	  
	* gst/gstbin.c: (gst_bin_recalc_state):
	* gst/gstelement.c: (gst_element_message_full),
	(gst_element_get_state_func), (gst_element_set_state_func):
	  use new API and improve logging
	
	* gst/gstutils.c: (gst_element_state_change_return_get_name):
	* gst/gstutils.h:
	  API: add function to get StateChangereturn names to improve logs 

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

	* plugins/elements/gstfilesrc.c: (gst_file_src_start):
	  I'm considering shooting the next person to put strerror stuff
	  in the translateable part of the message.

2006-11-03  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
	Get the type and printf conversion specifiers right.

2006-11-03  Wim Taymans  <wim@fluendo.com>

	Patch by: Mark Nauwelaerts <manauw at skynet dot be>

	* gst/gstpad.c: (gst_pad_init), (pre_activate),
	(gst_pad_set_blocked_async), (gst_pad_acceptcaps_default),
	(gst_pad_accept_caps), (handle_pad_block), (gst_pad_push_event):
	Some small cleanups. Improve debugging.
	* gst/gstpad.h:
	Signal all waiting threads with a broadcast instead of just one.
	Fixes #369942.

2006-11-03  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd),
	(gst_fd_src_create):
	Add some debugging. 
	Only update fd when it's different from the old.

2006-11-02  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesrc.c: (gst_file_src_create_mmap):
	  Printf fixes for PPC/OSX, take two (#369366).

2006-11-02  Tim-Philipp Müller  <tim at centricular dot net>

	Based on patch by: Jan David Mol  <j.j.d.mol at tudelft nl>

	* plugins/elements/gstfilesink.c: (gst_file_sink_class_init):
	* plugins/elements/gstfilesrc.c: (gst_file_src_class_init),
	(gst_file_src_map_small_region), (gst_file_src_create_mmap):
	  Printf fixes for gsize parameters on PPC/OSX (#369366). Also,
	  don't cast to long long for portability reasons, but use
	  GLib's types instead.

2006-10-30  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
	  Get the arguments to lseek() the right way around.
	  Fixes 367677.

2006-10-30  Wim Taymans  <wim@fluendo.com>

	Patch by: gorshkov <gorshkov at oghma dot on dot ca>

	* gst/gstinfo.h:
	_declspec should be __declspec (two underscores, not one). Fixes 366572.

2006-10-28  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Kjartan Maraas  <kmaraas at gnome org>

	* docs/design/part-MT-refcounting.txt:
	* docs/random/wtay/capsnego2-docs:
	* gst/gstclock.c:
	* gst/gstxml.c:
	  Typo fixes (#366212).

2006-10-28  Wim Taymans  <wim@fluendo.com>

	Patch by: Sergey Scobich <sergey dot scobich at gmail dot com>

	* gst/gst.c:
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	* win32/vs8/libgstbase.vcproj:
	* win32/vs8/libgstcontroller.vcproj:
	Add needed entries in .def files.
	Use HAVE_UNISTD_H.
	Rearrange def files in vs8 solutions. Fixes #366286.

2006-10-28  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/common/gstconfig.h:
	  Add GST_SEGMENT_FORMAT and GST_USING_PRINTF_EXTENSION to the
	  hand-made win32 gstconfig.h. Fixes #366321.

2006-10-27  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_acceptcaps),
	(gst_ghost_pad_new_full):
	Make acceptcaps return TRUE when we don't have a target, just like
	setcaps does.

2006-10-27  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_chain):
	Revert previous commit, 0 sized buffers are allowed. Reopens #363095.

2006-10-26  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_id_set_value):
	  If someone tries to set a non-UTF8 string field on a structure,
	  don't just print a warning, but also ignore the request and do
	  not change/add that field to the structure.

	* tests/check/gst/gsttag.c: (GST_START_TEST), (gst_tag_suite):
	  Test for the above.

2006-10-25  David Schleef  <ds@schleef.org>

	* gst/gstinfo.c:
	  g_hash_table_insert() needs a cast to a non-const pointer duh.

2006-10-25  David Schleef  <ds@schleef.org>

	* gst/gstinfo.c:
	* gst/gstinfo.h:
	  Change name parameter of _gst_debug_register_funcptr to const
	  to reflect the constness of its use in the function as well
	  as to quiet a gcc warning.

2006-10-25  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_chain):
	Don't push the buffer if it's empty.
	Closes #363095

2006-10-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.h:
	Add small comment.

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_eventfunc):
	Debug segment values *after* updating them as this is more
	interesting.

2006-10-23  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-events.txt:
	Update some docs.

	* docs/design/part-block.txt:
	* gst/gstpad.c: (gst_pad_is_blocking), (handle_pad_block),
	(gst_pad_push_event):
	Revert BLOCKING patch, it tries to be smart without really having a
	clear idea what or how. So, now we discard all FLUSHING events again on
	a blocking pad. Should fix gnonlin again.

2006-10-23  Wim Taymans  <wim@fluendo.com>

	Patch by: Sergey Scobich <sergey dot scobich at gmail dot com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
	(gst_base_src_start), (gst_base_src_activate_push):
	Make sure size is always initialized. Fixes #364388.

2006-10-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/distributed.txt:
	  add some ideas about doing distributed processing

	* docs/random/ensonic/profiling.txt:
	  get_rusage look promising

2006-10-18  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/basics-helloworld.xml:
          Add a cast in example to fix compile warning

2006-10-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_last_stop),
	(gst_segment_set_seek), (gst_segment_set_newsegment_full):
	Relax arg checking again, -1 is allowed.

2006-10-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_last_stop),
	(gst_segment_set_seek), (gst_segment_set_newsegment_full):
	_set_last_stop() must be with a value != -1
	A _TYPE_SET to -1 means seek to 0.
	Calc last_stop correctly for negative rates.
	Make sure we work with positive durations when updating a segment.

2006-10-18  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-live-source.txt:
	* gst/gstclock.h:
	Small docs fixes.

2006-10-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbuffer.h:
	  Add an explicit cast to GstBuffer** to keep old code that added an
	  explicit cast to GstMiniObject** for gst_mini_object_replace()
	  compiling without warning.

2006-10-18  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstvalue.c: (gst_value_set_date), (gst_date_copy):
	  check for validity of dates

2006-10-17  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	  Forgot this one, makes gtk-doc shut up.

2006-10-17  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Peter Kjellerstedt <pkj at axis com>

	* gst/gstobject.h:
	  Don't define xmlNodePtr to gpointer if the core was built with
	  --disable-loadsave and --disable-registry, this will break
	  applications that want to use libxml2 but are buildling against a
	  core that doesn't use libxml2. Use an intermediary type GstXmlNodePtr
	  instead so we don't have to mess with the libxml2 namespace
	  (#361675).

2006-10-17  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbuffer.h:
	  Fix gst_buffer_replace() macro to avoid gst_mini_object_replace()-related
	  type-punned pointer warnings.

2006-10-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelement.h:
	  Add casts to the correct return type to state <=> state transition
	  macros.

2006-10-16  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/part-live-source.txt:
	  describe howto handle latency
	
	* docs/random/ensonic/profiling.txt:
	  more ideas

	* tools/gst-plot-timeline.py:
	  fix log parsing for solaris, remove unused function

2006-10-16  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-trickmodes.txt:
	* gst/gstevent.c:
	Update some docs regarding reverse playback.

2006-10-15  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Marcus Granado  <mrc dot gran at gmail com>

	* win32/vs8/grammar.vcproj:
	  Error out with a warning if glib-genmarshal.exe is not in path,
	  instead of creating bogus gstmarshal.[ch] files. Fixes #361720.

2006-10-13  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_seek):
	When seeking to stop -1, set last_stop (current position) to the
	duration of the segment.

2006-10-13  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.h:
	Clarify _NO_PREROLL a bit more.

	* gst/gstevent.c:
	Fix docs.

	* gst/gstpad.c: (gst_pad_link_check_hierarchy),
	(gst_pad_get_caps_unlocked), (gst_pad_save_thyself),
	(handle_pad_block), (gst_pad_push_event), (gst_pad_send_event):
	Patch by: Yves Lefebvre <ivanohe at abacom dot com> Fix possible deadlock
	due to wrong locking order. Fixes #361769.
	Remove some redundant/misplaced checks in pad_block.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
	For negative rates, count backwards from the duration.

2006-10-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsterror.c: (_gst_library_errors_init):
	  Fix error message for GST_LIBRARY_ERROR_SETTINGS (feel free to come
	  up with something better).

2006-10-12  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/vs6/libgstreamer.dsp:
	* win32/vs7/libgstreamer.vcproj:
	* win32/vs8/libgstreamer.vcproj:
	  Don't reference glib-compat.c which is currently not used and not
	  disted; add gstquark.c which was recently added. Fixes #361730.

2006-10-12  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/common/libgstbase.def:
	* win32/common/libgstcontroller.def:
	* win32/common/libgstreamer.def:
	  Add gst_caps_merge() and a bunch of other recently-added functions.
	  Fixes #361732.

2006-10-11  Wim Taymans  <wim@fluendo.com>

	* docs/plugins/gstreamer-plugins.args:
	* docs/plugins/inspect/plugin-coreelements.xml:
	* docs/plugins/inspect/plugin-coreindexers.xml:
	Update element args.

	* gst/gstsystemclock.c:
	Small comment update.

	* plugins/elements/gsttee.c: (gst_tee_class_init), (gst_tee_init),
	(gst_tee_request_new_pad), (gst_tee_release_pad),
	(gst_tee_buffer_alloc), (gst_tee_sink_activate_push),
	(gst_tee_sink_activate_pull):
	* plugins/elements/gsttee.h:
	Some tee loving:
	Add default property defines.
	Implement release pad function.
	Give properties better blubs etc.
	Activate pads before adding them to a running tee.
	Do simple buffer_alloc on the first requested pad.
	Post error when activation fails.

2006-10-11  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (ensure_current_registry_forking):
	  Check return value of write() to make compiler happy.

2006-10-11  Wim Taymans  <wim@fluendo.com>

	Patch by: Sjoerd Simons <sjoerd at luon dot net>

	* plugins/elements/gstqueue.c: (gst_queue_chain):
	Recheck queue filledness after signalling the overrun when we're about
	to leak downstream because we released the lock when emitting the signal
	and the queue could be empty again. Fixes #352345.

2006-10-11  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_list):
	  Fix refcounting here too, just like we did for _new_valist() a few
	  days ago (#357180) (thanks to René Stadler). Also remove all those
	  'Since: 0.9' from the gtk-doc blobs.

	* tests/check/libs/controller.c: (controller_refcount_new_list),
	(gst_controller_suite):
	  Unit test for the above.

2006-10-10  Wim Taymans  <wim@fluendo.com>

	Patch by: Sebastien Cote <sebas642 at yahoo dot ca>

	* gst/gstpad.c: (gst_pad_get_caps_unlocked),
	(gst_pad_save_thyself):
	Update some docs.
	Write pad direction in XML output. Fixes #345496.

2006-10-10  Wim Taymans  <wim@fluendo.com>

	Patch by: René Stadler <mail at renestadler dot de>

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist),
	(gst_controller_new_list), (_gst_controller_dispose),
	(_gst_controller_finalize), (_gst_controller_class_init):
	Take ref to controlled object so that it cannot disappear. 
	Fixes #357432.

2006-10-10  Wim Taymans  <wim@fluendo.com>

	* libs/gst/check/gstcheck.c: (gst_check_setup_src_pad),
	(gst_check_teardown_src_pad), (gst_check_setup_sink_pad),
	(gst_check_teardown_sink_pad):
	Activate/deactivate pads in setup/teardown respectively.

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

	Patch by: Josep Torre Valles <josep@fluendo.com>

	* gst/Makefile.am:
	Cast values when making gstenumtypes.h.  This pacifies Forte
	so it doesn't warn about the ~0 as GST_MESSAGE_ANY not fitting
	in the enumeration.

2006-10-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c: (gst_event_new_seek), (gst_event_parse_seek):
	Rename some more @cur to @start to fix docs. 

	* gst/gstsegment.c: (gst_segment_set_seek):
	Fix typo.
	time and start must always stay in sync as defined in design doc.

	* gst/gsttaglist.c: (gst_tag_list_is_empty):
	Rename param to fix docs.

	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	Check that start and time are in sync.

	* tests/check/pipelines/parse-launch.c:
	(gst_parse_test_element_change_state):
	Activate pad before adding to the element.

2006-10-09  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-qos.txt:
	Fix typo.

	* gst/gstevent.c:
	* gst/gstevent.h:
	Update seek event docs regarding negative rates.
	Rename @cur to @start. 

	* gst/gstsegment.c: (gst_segment_set_seek):
	* gst/gstsegment.h:
	Update set_seek docs regarding negative rates.
	Correctly update last_stop to @stop when dealing with negative
	rates.
	Rename @cur to @start. 

	* tests/check/gst/gstpad.c: (GST_START_TEST):
	Activate pads before trying to use them.

	* tests/check/gst/gstsegment.c: (GST_START_TEST),
	(gst_segment_suite):
	Add simple check for segments and negative rates.

2006-10-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c: (gst_tag_list_is_empty):
	* gst/gsttaglist.h:
	* docs/gst/gstreamer-sections.txt:
	  API: add gst_tag_list_is_empty() (#360467).

	* tests/check/gst/gsttag.c: (GST_START_TEST):
	  And a test case.

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

	* gst/gstmessage.h:
	Revert change from earlier wrt GST_MESSAGE_TYPE_ANY having
	a value that doesn't fit on enumeration.

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

	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_thread):
	Remove local debugging system and use Gstreamer's instead.

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

	Patch by: Josep Torre Valles <josep@fluendo.com>

	* common/m4/gst-error.m4:
	Disable warning of statement not reached on Forte.
	* gst/gstmessage.h:
	Fix warning on Forte (value doesn't fit on enumeration).
	* libs/gst/base/gstbasesink.c: (gst_base_sink_chain_unlocked):
	Fix warning on Forte (value doesn't fit on enumeration).
	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_thread):
	DEBUG macro says it takes minimum of 2 args and so Forte
	complains about the use with just 1 arg.
	* plugins/elements/gstfdsink.c:
	* plugins/elements/gstfdsrc.c:
	* plugins/elements/gstfilesink.c:
	* plugins/elements/gstfilesrc.c:
	Use correct return type for the uri handler implementations.

	All these fix warnings in Forte.  Fixes bug #360860.

2006-10-08  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelement.h:
	  gcc versions prior to gcc 3.3 apparently complain about a NULL printf
	  format string, so don't use G_GNUC_PRINTF for those versions.

2006-10-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c: (gst_is_tag_list):
	* gst/gsttaglist.h:
	  Minor fixes to GST_IS_TAG_LIST and gst_is_tag_list().

	* tests/check/gst/gsttag.c: (GST_START_TEST), (gst_tag_suite):
	  Small test for the above.

2006-10-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.h:
	  Less tabs, more spaces.

2006-10-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.h:
	  Those two function declarations do actually belong there, revert
	  commit from yesterday that turned them intro macros.

2006-10-06  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	Patch by: Josep Torre Valles <josep@fluendo.com>

	* gst/gst.c: (gst_init_get_option_group):
	Fix empty declaration and type mismatch.
	* gst/gstbin.c: (gst_bin_change_state_func):
	Fix type mismatch.
	* gst/gstelement.c: (gst_element_continue_state),
	(gst_element_set_state_func), (gst_element_change_state),
	(gst_element_change_state_func):
	Fix type mismatches.
	* gst/gstinfo.c: (gst_debug_compare_log_function_by_func),
	(gst_debug_remove_log_function), (_gst_debug_nameof_funcptr):
	Cast as appropriate.
	* gst/gstobject.c: (gst_class_signal_connect):
	Cast as appropriate.  The function pointer parameter really
	has the wrong type but would break API if we change it.
	* gst/gstquery.c:
	Fix redefinition of _FILE_OFFSET_BITS caused on Solaris wrt
	order of including string.h.
	* gst/gstutils.c: (gst_element_state_get_name):
	Remove unreachable line.
	* gst/gstxml.c: (gst_xml_parse_doc):
	Fix type mismatch.
	All these caught by Forte.

2006-10-06  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	Patch by: Josep Torre Valles <josep@fluendo.com>

	* common/m4/gst-error.m4:
	Fixed bug #360151.
	We need to disable warnings on Forte for empty declarations
	due to gst-indent adding ;s to lines that just use macros
	where the macro actually doesn't need a ; at end to end
	statement.

2006-10-06  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfilesink.c: (gst_file_sink_open_file),
	(gst_file_sink_close_file), (gst_file_sink_event),
	(gst_file_sink_render):
	Add some FIXME for the NEWSEGMENT handling.

2006-10-05  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* gst/parse/grammar.y:
	Remove static function gst_parse_element_lock as all it does
	is return.  Looks like cruft from 0.8.

2006-10-05  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	Patch by: Josep Torre Valles <josep@fluendo.com>

	* common/m4/gst-error.m4:
	* configure.ac:
	* libs/gst/net/Makefile.am:
	Fix a compilation issue with Forte on Solaris.  inet_aton is in
	libresolv.

2006-10-05  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c: (pre_activate):
	* gst/gstregistry.c: (gst_registry_scan_path_level):
	* gst/gstregistryxml.c: (load_plugin):
	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode):
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_packet_from_event_1_0):
	* libs/gst/net/gstnetclientclock.c:
	(gst_net_client_clock_observe_times):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
	  Printf fixes.

2006-10-05  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstconfig.h.in:
	* gst/gstelement.h:
	* gst/gstinfo.h:
	  Add GST_USING_PRINTF_EXTENSION to gstconfig.h so that we know
	  whether we can use G_GNUC_PRINTF in other header files and at
	  least check the printf format/arguments of debug messages and
	  GST_ELEMENT_ERROR messages when the printf extension is not
	  being used.
	  Replace more tabs with spaces in gstinfo.h and remove two spurious
	  function declarations in GST_DISABLE_DEBUG part with macros.

2006-10-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbus.c: (gst_bus_class_init), (gst_bus_post):
	  More docs for the sync-message signal (mention that it is not
	  emitted by default); log message structures of messages posted on
	  the bus as well.

2006-10-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c: (ensure_current_registry_forking):
	Use a pipe pair to receive status results from the forked child, and
	ignore the result from waitpid. Fixes #355499

2006-10-02  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstghostpad.c: (GST_START_TEST),
	(gst_ghost_pad_suite):
	Fix leak in check.

2006-10-02  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c:
	  Add 'Since: 0.10.11' to gst_pad_is_blocking() gtk-doc blurb.

2006-10-02  Edward Hervey  <edward@fluendo.com>

	* docs/design/part-block.txt:
	Further explain the use of flushing on blocked pads.
	* docs/gst/gstreamer-sections.txt:
	* gst/gstpad.c: (gst_pad_is_blocking), (handle_pad_block),
	(gst_pad_push_event):
	* gst/gstpad.h:
	Added new GstPadFlag : GST_PAD_BLOCKING.
	Adds the notion of pads really blocking, which enables to properly
	handle FLUSH_START/FLUSH_STOP events on blocked pads.
	Fixes #358999
	API: gst_pad_is_blocking()
	API: GST_PAD_IS_BLOCKING() macro
	API: GST_PAD_BLOCKING GstPadFlag
	
2006-10-02  Wim Taymans  <wim@fluendo.com>

	Patch by: mrcgran <mrc.gran at gmail dot com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_getcaps):
	Filter the proxied caps against the padtemplate if we have one.

	* gst/gstquery.c: (gst_query_new_segment):
	Add include for gstinfo.h so that compilation with
	-DGST_DISABLE_GST_DEBUG works again. Fixes #358436.

2006-10-02  Wim Taymans  <wim@fluendo.com>

	Patch by: Alessandro Decina  <alessandro at nnva org>

	* plugins/elements/gstfilesink.c: (gst_file_sink_init),
	(gst_file_sink_set_location), (gst_file_sink_open_file),
	(gst_file_sink_close_file), (gst_file_sink_event),
	(gst_file_sink_render):
	Set file to NULL when closing filesink so that we can set a new filename
	in READY. Fixes #358613.

2006-10-02  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Alessandro Decina  <alessandro at nnva org>

	* gst/gstevent.c: (_gst_event_copy):
	  Fix gst_mini_object_make_writable() and gst_event_copy() for events
	  with event structures by setting the parent refcount address of the
	  copied structure to the address of the refcount member of the newly
	  copied event rather than the address of the refcount member of the
	  original event. Fixes #358737.

	* tests/check/gst/gstevent.c: (GST_START_TEST):
	  Unit test for the above.

2006-09-29  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/Makefile.am:
          Dist some more files.

2006-09-29  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	  Add test for the previous fix; add some more tests
	  for correct refcounting behaviour; fix a few leaks
	  in test cases; call gst_controller_init() at start
	  of all tests.

2006-09-29  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist),
	(gst_controller_set_from_list):
	  Don't g_return_val_if_fail() on timed values with invalid timestamps
	  inside a critical section without unlocking the mutex. Spotted by
	  René Stadler. (#357617)
	  Also, fix up refcounting properly: when returning an existing
	  controller, we should increase the reference only once and not
	  once per property and when trying to control a property again
	  we should also increase the refcount.

2006-09-29  Wim Taymans  <wim@fluendo.com>

	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_thread):
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_thread):
	Stop reading commands when EOF as well.

	* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init):
	* plugins/elements/gstidentity.c: (gst_identity_class_init):
	Unify description of the dump property.

2006-09-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/examples/manual/.cvsignore:
	OK, so it's actually cvsignore that needs changing. Stop laughing.

2006-09-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/examples/manual/Makefile.am:
	Gah, declare vars *before* using them

2006-09-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c: (init_pre), (scan_and_update_registry),
	(ensure_current_registry_nonforking),
	(ensure_current_registry_forking), (ensure_current_registry),
	(init_post), (gst_debug_help), (gst_deinit):
	* gst/gst_private.h:
	* gst/gstregistry.c: (gst_registry_finalize),
	(gst_registry_remove_features_for_plugin_unlocked),
	(gst_registry_remove_plugin), (gst_registry_scan_path_level),
	(gst_registry_scan_path),
	(_priv_gst_registry_remove_cache_plugins),
	(_priv_gst_registry_cleanup):
	* gst/gstregistry.h:
	Re-commit the registry changes, along with an extra fix:
	  When a cached plugin is encountered at a different file path,
	  update the stored path in the registry cache so that the parent
	  process knows where it actually is now when it re-reads the registry
	  cache. Fixes the thing that broke distcheck with the previous commit.

	* tests/check/Makefile.am:
	Clean up files named 'core' too when running make clean.

	* tests/examples/manual/Makefile.am:
	Set up a registry path for running these tests, and clean it properly
	for distcheck.

2006-09-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Don't pull in gmodule-2.0.pc as a dependency in our .pc files - we
	want gmodule-no-export-2.0.pc instead so that we don't drag in
	--export-dynamic on every project that links to GStreamer.

	Also, make our export regex only match the start of symbols, rather 
	than any symbol that contains '_gst' somewhere.

	* libs/gst/check/Makefile.am:
	The libgstcheck we build does however need export-dynamic, as it
	produces some symbols that don't match our _gst... style regex.
	Fixes: #318031

2006-09-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c: (init_pre), (scan_and_update_registry),
	(ensure_current_registry_nonforking),
	(ensure_current_registry_forking), (ensure_current_registry),
	(init_post), (gst_debug_help), (gst_deinit):
	* gst/gst_private.h:
	* gst/gstregistry.c: (gst_registry_finalize),
	(gst_registry_remove_plugin), (gst_registry_scan_path_level),
	(gst_registry_scan_path), (_gst_registry_remove_cache_plugins),
	(_gst_registry_cleanup):
	* gst/gstregistry.h:
	  Revert previous change until I figure out why it breaks distcheck.

2006-09-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c: (init_pre), (scan_and_update_registry),
	(ensure_current_registry_nonforking),
	(ensure_current_registry_forking), (ensure_current_registry),
	(init_post), (gst_debug_help), (gst_deinit):

	  Make init_pre and init_post take the full complement of GOptionFunc
	  args so they can return useful GErrors. Make the registry updating
	  functions do so.

	  Call _priv_gst_registry_remove_cache_plugins after scanning files to
	  ensure that the registry we're about to write out doesn't contain
	  stale information about old-deleted plugin files.

	  Make _priv_gst_registry_remove_cache_plugins return a boolean so
	  that deletion of plugin files is considered a registry change.

	* gst/gst_private.h:
	* gst/gstregistry.c: (gst_registry_finalize),
	(gst_registry_remove_features_for_plugin_unlocked),
	(gst_registry_remove_plugin), (gst_registry_scan_path_level),
	(gst_registry_scan_path),
	(_priv_gst_registry_remove_cache_plugins),
	(_priv_gst_registry_cleanup):
	* gst/gstregistry.h:
	Rename _gst_registry_remove_cache_plugins and _gst_registry_cleanup
	by adding _priv prefix, so that they won't appear in the global
	symbol table. They still do atm though because of #318031. Move the
	prototypes to gst_private.h

	When removing a plugin, remove all features for that plugin too. 
	Fixes #340878.

2006-09-27  Wim Taymans  <wim@fluendo.com>

	* docs/random/moving-plugins:
	Make it clear that the "compiled-in descriptions" really mean
	the element details.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_wait_preroll):
	Update docs.

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
	(gst_base_src_get_range), (gst_base_src_activate_push):
	* libs/gst/base/gstbasesrc.h:
	Added function to block while waiting for PLAYING, this function
	is used by live sources that block on the clock.
	API: gst_base_src_wait_playing()

2006-09-27  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Peter Kjellerstedt <pkj at axis com>

	* Makefile.am:
	  gst-element-check.m4 is generated and should therefore be
	  copied from the build dir rather than the source dir (#357593).
	  'make distcheck' hasn't noticed this because we were disting
	  the file as well, so stop doing that.

2006-09-27  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstcaps.c: (GST_START_TEST), (gst_caps_suite):
	  Add some tests for gst_caps_intersect().

	* tools/gst-launch.c: (event_loop):
	  Print all buffering percentages we get, even the 100% one.

2006-09-26  Wim Taymans  <wim@fluendo.com>

	* tools/gst-inspect.c: (print_element_properties_info),
	(print_signal_info):
	Fix printing of flags to match the look of enums.

2006-09-25  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelementfactory.c:
	  Fix typo in docs blurb.

2006-09-25  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsturi.c: (search_by_entry):
	  Don't assert/crash here if a uri handler doesn't return any
	  supported protocols. The list of protocols could be generated
	  dynamically at runtime or at plugin registration, and an error
	  in the underlying library shouldn't be fatal (#353301).

2006-09-25  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c:
	  Fix warning if HAVE_PRINTF_EXTENSION is undefined
	  (spotted by Peter Kjellerstedt).

2006-09-23  Wim Taymans  <wim@fluendo.com>

	Based on patch by: Antoine Tremblay <hexa00 at gmail dot com>

	* libs/gst/base/gstbasesrc.c:
	(gst_base_src_default_check_get_range), (gst_base_src_start),
	(gst_base_src_activate_push), (gst_base_src_activate_pull),
	(gst_base_src_change_state):
	Match _start/_stop calls in the activate functions. Remove redundant
	_stop call from the state change function. Fixes #356910.
	Turn failure DEBUG into ERROR. 

2006-09-22  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-buffering.txt:
	* gst/gstmessage.c: (gst_message_new_buffering),
	(gst_message_parse_buffering):
	Update docs about buffering.

	* docs/design/part-trickmodes.txt:
	Fix typo.

2006-09-22  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist),
	(gst_controller_new_list):
	  Ref instances when returning them again (fixes #357180)

2006-09-22  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstghostpad.c: (gst_ghost_pad_set_target):
	  Don't forget to release proxy lock when there's an error.

2006-09-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstcaps.h:
	  Add extra initialisers for Caps things, to fix some plugin warnings
	  when using -Wextra

2006-09-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_ghost_pad_new_full):
	  Also set template on the internal pad so that a getcaps from the 
	  target pad returns the template caps.

2006-09-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_post_message),
	(gst_element_dispose):
	Use _DEBUG_OBJECT some more.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
	Avoid typechecks.

	* tools/gst-launch.c: (main):
	If the toplevel element is not a GstPipeline, it must be put in a
	pipeline so that a bus and clock is selected.

2006-09-17  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query):
	  JITTER, RATE, and LATENCY query should be handled by the
	  default case and not by the CONVERT query code.

2006-09-17  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstformat.c: (gst_format_register):
	  Fix locking order (must take lock before using n_values).

	* gst/gstvalue.c: (gst_value_serialize_enum),
	(gst_value_deserialize_enum_iter_cmp),
	(gst_value_deserialize_enum):
	  Fix serialisation/deserialisation of custom registered GstFormats.

	* tests/check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	  Unit test for custom format serialisation/deserialisation.

2006-09-17  Stefan Kost  <ensonic@users.sf.net>

	* docs/pwg/building-boiler.xml:
	* plugins/elements/gstcapsfilter.c:
	More G_OBJECT macro fixing. Also Fix some details on the plugin-stamp
	section.

2006-09-16  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Check if requested caps are the same as the sinks caps IF
	->have_same_caps is TRUE. If they are not, act as if have_same_caps
	is FALSE.
	This fixes the renegotiation issues stated in #352827.

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

	* configure.ac:
	* docs/manual/advanced-autoplugging.xml:
	* tests/examples/Makefile.am:
	* tests/examples/manual/.cvsignore:
	* tests/examples/manual/Makefile.am:
	* tests/examples/manual/extract.pl:
	  Extract the manual examples again like we used to do.
	  Fix one of them.

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

	* win32/common/config.h:
	  update for version

2006-09-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsterror.c:
	  Documents how to receive errors.

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (sigint_handler_sighandler), (check_intr),
	(event_loop), (main):
	Added some comments here and there.
	Post an application message when an interrupt is caught instead of doing
	an uncontrolled state change.
	Clean up the event loop.
	Handle buffering messages, pause/resume the pipeline.
	Make shutdown because of an interrupt more reliable.

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_wait_preroll), (gst_base_sink_do_sync),
	(gst_base_sink_preroll_object):
	Make sure that our internal state is correct when we commit our state
	asynchronously. This solves a race where a state change to PLAYING
	could cause the sink to remain blocked in preroll in some situations.

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* tools/gst-inspect.c: (print_element_properties_info),
	(print_signal_info):
	List flags as hex so it's easier to deal with.

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasesink.c: (gst_base_sink_wait_preroll),
	(gst_base_sink_do_sync):
	* libs/gst/base/gstbasesink.h:
	Expose logic to wait for preroll so that subclasses such as audiosink
	can also use this method.
	API: gst_base_sink_wait_preroll()

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstobject.c: (gst_object_set_parent):
	* gst/gstpipeline.c: (do_pipeline_seek):
	Small cleanups in docs and code.

	* gst/gstsegment.c: (gst_segment_clip):
	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	if stop == start and start is in the segment, no clipping should be
	done. Also add a test for this.

2006-09-15  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-buffering.txt:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstmessage.c: (gst_message_new_buffering),
	(gst_message_parse_buffering):
	* gst/gstmessage.h:
	Added methods to create and parse BUFFERING messages.
	Added preliminary docs about buffering.
	API: gst_message_new_buffering
	API: gst_message_parse_buffering

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

	* gst/gstbin.c:
	Update documentation.

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_release_request_pad), (gst_element_set_clock),
	(gst_element_get_index), (gst_element_add_pad),
	(gst_element_remove_pad), (gst_element_get_random_pad),
	(gst_element_send_event), (gst_element_get_query_types),
	(gst_element_query), (gst_element_post_message),
	(gst_element_message_full), (gst_element_continue_state),
	(gst_element_lost_state), (gst_element_save_thyself),
	(gst_element_restore_thyself):
	Documentation updates.
	Rename last bit of the new-pad -> pad-added signal rename.
	Fix the case where an element query would only work if the source
	pad was linked.
	Avoid some useless type checking in message handling.

	* gst/gstevent.c:
	* gst/gstevent.h:
	* gst/gstutils.c:
	Documentation updates.

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

	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
	  add an INFO line for when we actually update the fd

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

	* configure.ac:
	  back to TRUNK

=== release 0.10.10 ===

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

	* configure.ac:
	  releasing 0.10.10, "Pais"

2006-09-05  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-position.xml:
	  Fix typo in sample code.

2006-09-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/net/gstnetclientclock.c: (inet_aton),
	(gst_net_client_clock_init), (gst_net_client_clock_finalize),
	(gst_net_client_clock_do_select), (gst_net_client_clock_new):
	* libs/gst/net/gstnetclientclock.h:
	* libs/gst/net/gstnettimepacket.c: (gst_net_time_packet_send):
	* libs/gst/net/gstnettimepacket.h:
	* libs/gst/net/gstnettimeprovider.c: (inet_aton),
	(gst_net_time_provider_init), (gst_net_time_provider_finalize),
	(gst_net_time_provider_thread), (gst_net_time_provider_new):
	* libs/gst/net/gstnettimeprovider.h:
	Make stuff compile on windows. Fixes #345295.

2006-09-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (ensure_current_registry_forking):
	  Print better details when child was terminated by signal.

2006-09-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistryxml.c: (gst_registry_xml_save_feature):
	  Print a warning rather than g_assert() if a plugin feature
	  is a URI handler but returns no protocols (#353976).

2006-09-02  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/moving-plugins:
	Fix two typos.         

2006-09-01  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c: (_gst_debug_nameof_funcptr):
	  Fix locking order, handle NULL function values properly.

	* gst/gstinfo.h:
	  Fix docs.

	* gst/gstpad.c: (gst_pad_buffer_alloc_unchecked):
	  Initialise variable before using it and fix debug statement to
	  print the address of the function rather than the address of the
	  variable on the stack holding the address of the function.

2006-09-01  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_event),
	(gst_proxy_pad_do_bufferalloc), (gst_proxy_pad_do_chain),
	(gst_proxy_pad_do_getrange), (gst_proxy_pad_do_checkgetrange),
	(gst_proxy_pad_set_target_unlocked), (gst_ghost_pad_parent_set),
	(gst_ghost_pad_parent_unset),
	(gst_ghost_pad_internal_do_activate_push),
	(gst_ghost_pad_internal_do_activate_pull),
	(gst_ghost_pad_do_activate_push), (gst_ghost_pad_do_activate_pull),
	(gst_ghost_pad_do_link), (gst_ghost_pad_do_unlink),
	(gst_ghost_pad_init), (gst_ghost_pad_dispose),
	(gst_ghost_pad_new_full), (gst_ghost_pad_new_no_target),
	(gst_ghost_pad_new), (gst_ghost_pad_new_from_template),
	(gst_ghost_pad_new_no_target_from_template),
	(gst_ghost_pad_get_target), (gst_ghost_pad_set_target):
	More cleanups.
	Avoid needless typechecking in macros.
	Since the internal pad is always present and never changes, there is
	no need to locking or ref when retrieving it.
	Improve debugging a bit.
	Handle link errors when setting the target. Fixes #341029.

2006-09-01  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* docs/plugins/gstreamer-plugins-sections.txt:
	Fix docs some more.

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad),
	(gst_collect_pads_event):
	* libs/gst/base/gstcollectpads.h:
	Documentation updates.
	Free queued buffer when removing a pad.

2006-08-31  Michael Smith  <msmith@fluendo.com>

	* gst/gstutils.c: (gst_element_link_pads),
	(gst_element_link_pads_filtered):
	  Ensure that we set a capsfilter to NULL if we failed to link it
	  when doing filtered linking, to avoid criticals.

	  No need to check for unreffing srcpad, which is explicly NULLed
	  above (a trivial code cleanup).

2006-08-31  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-gstghostpad.txt:
	Update ascii art in documentation.

	* gst/gstghostpad.c: (gst_proxy_pad_do_internal_link),
	(gst_proxy_pad_set_target_unlocked), (gst_proxy_pad_init),
	(gst_ghost_pad_parent_set), (gst_ghost_pad_parent_unset),
	(gst_ghost_pad_internal_do_activate_push),
	(gst_ghost_pad_internal_do_activate_pull),
	(gst_ghost_pad_do_activate_push), (gst_ghost_pad_do_activate_pull),
	(gst_ghost_pad_do_link), (gst_ghost_pad_do_unlink),
	(gst_ghost_pad_dispose), (gst_ghost_pad_new_full),
	(gst_ghost_pad_set_target):
	Small cleanups and leak fixes.
	Remove some checks now that the internal pad is never NULL.
	Fix the case where linking pads without a target would create nasty
	criticals. Fixes #341029.
	Don't assign a GstPadLinkReturn to a gboolean and mess up the return
	value of _set_target().

	* tests/check/gst/gstghostpad.c: (GST_START_TEST),
	(gst_ghost_pad_suite):
	Some more tests for creating and linking untargeted ghostpads.

2006-08-31  Edward Hervey  <edward@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstghostpad.c: (gst_proxy_pad_do_getcaps),
	(gst_proxy_pad_do_setcaps), (gst_proxy_pad_set_target_unlocked),
	(gst_proxy_pad_dispose), (gst_ghost_pad_new_full),
	(gst_ghost_pad_new_no_target), (gst_ghost_pad_new),
	(gst_ghost_pad_new_from_template),
	(gst_ghost_pad_new_no_target_from_template):
	* gst/gstghostpad.h:
	Refactored *_new() functions.
	Templates are now used as a g_object_new() parameter.
	Use template in _do_getcaps() if we don't have a target.
	Small documentation cleanups.
	Added two new constructors:
	gst_ghost_pad_new_from_template()
	gst_ghost_pad_new_no_target_from_template()
	* tests/check/gst/gstghostpad.c: (GST_START_TEST),
	(gst_ghost_pad_suite):
	Added tests for new ghostpad instanciation functions.

	API additions: gst_ghost_pad_new_from_template,
	gst_ghost_pad_new_no_target_from_template

2006-08-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/profiling.txt:
	  Ideas about qos profiling.

2006-08-29  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_structure_is_subset_field):
	Code cleanups.
	Fix memleak.

2006-08-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstxml.c:
	  Improve and detypofy docs.

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gstxml.c: (GST_START_TEST), (gst_xml_suite):
	  Add a basic test suite for GstXML.

2006-08-29  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (activate_pads), (clear_caps),
	(iterator_activate_fold_with_resync), (gst_element_pads_activate):
	Clear the pad caps when the element shut down all of the pads and
	is not streaming data that could modify the caps. 
	Fixes #352958.

2006-08-28  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	  Revert previous change; I misunderstood single-segment mode.

2006-08-28  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	  Unset DISCONT on buffers when using single-segment mode.

2006-08-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_merge_structure):
	* gst/gstcaps.h:
	Fix docs and indentation again.

	* tests/check/gst/gstquery.c: (GST_START_TEST):
	Fix leak in tests and add some more tests.

2006-08-28  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	Inform GstSegment of the last stop position in order for the current
	segment to have a proper duration if it doesn't have a specific stop
	position from which a duration could be calculated.
	This bug was noticeable when a non-flushing, non-update new segment was
	followed by another segment (all buffers from the new segment were being
	dropped).

2006-08-28  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek):
	Small comment update.

	* plugins/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_transform_ip):
	Drop-probability is broken, mention this in the code with a 
	FIXME and also in the property description.
	Make silent also be silent about the drop messages.

2006-08-28  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/appendix-win32.xml:
	  Remove mention of popt, we don't depend on that any
	  longer (#353136). Add some comments pointing out that
	  this section is slightly outdated.

2006-08-28  Wim Taymans  <wim@fluendo.com>

	Patch by: Torsten Schoenfeld <kaffeetisch at gmx dot de>

	* gst/gstquery.c: (gst_query_new_segment):
	* tests/check/gst/gstquery.c: (GST_START_TEST):
	Initialize variables when creating a new segment query.
	Fixes #353121.

2006-08-28  Wim Taymans  <wim@fluendo.com>

	Patch by: Torsten Schoenfeld <kaffeetisch at gmx dot de>

	* gst/gstelement.c: (gst_element_get_bus):
	* tests/check/gst/gstelement.c: (GST_START_TEST):
	Check for NULL before _reffing the bus. Fixes #353122.

2006-08-25  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-bus.xml:
	  Docs update: fix wrong callback return value explanation; add
	  some lines about the implicit relationship between main loop
	  and main context; remove duplicate main loop variable declaration.

2006-08-24  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstcaps.c: (GST_START_TEST):
	  Don't leak caps in unit test; add a few more simple
	  checks. 

2006-08-24  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.c: (gst_caps_structure_is_subset_field),
	(gst_caps_structure_is_subset), (gst_caps_merge),
	(gst_caps_merge_structure):
	* gst/gstcaps.h:
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_transform_caps):
	* tests/check/gst/gstcaps.c: (GST_START_TEST), (gst_caps_suite):
	  implement caps merging (fixes #352580)

2006-08-23  Stefan Kost  <ensonic@users.sf.net>

	* tools/Makefile.am:
	* tools/gst-plot-timeline.py:
	  add debug-log plotting developer tool (#340674)

2006-08-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_start_task), (gst_pad_pause_task),
	(gst_pad_stop_task):
	Improve debugging for task functions.

	* gst/gsttask.c: (gst_task_func), (gst_task_set_lock),
	(gst_task_start), (gst_task_pause), (gst_task_join):
	Make sure that the task function started and finished after a 
	join(). 
	Don't try to push the task function on the threadpool multiple
	times.
	Improve the g_warning message with some useful suggestions
	about how to fix the problem. 

2006-08-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstutils.c: (gst_pad_proxy_getcaps):
	Handle RESYNC correctly in _proxy_getcaps.

2006-08-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstxml.c: (gst_xml_dispose), (gst_xml_parse_file),
	(gst_xml_parse_memory), (gst_xml_get_element):
	  Chain up to parent class in dispose function and also
	  unref the elements in the toplevel_elements GList.
	  Don't leak XmlDocPtr in _parse_file() and _parse_memory().
	  Always return a reference in gst_xml_get_element() rather
	  than only sometimes.

	* tools/gst-launch.c: (xmllaunch_parse_cmdline):
	  Don't leak GstXml object.

2006-08-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.c: (gst_structure_is_equal_foreach),
	(gst_caps_merge):
	* gst/gstcaps.h:
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_transform_caps):
	  API: Add gst_caps_merge() and use it in basetransform, fixes #345444
	  in a better way

2006-08-21  Edward Hervey  <edward@fluendo.com>

	* gst/gstxml.c: (gst_xml_class_init), (gst_xml_dispose):
	Implement GObject::dispose virtual method in GstXML so we can free the
	top_elements GList.

2006-08-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_make_metadata_writable),
	(gst_buffer_create_sub):
	Copy duration/offset_end/caps when creating a subbuffer of the
	complete parent.
	Make the subbuffer read-only when we make the metadata writable for
	now. Fixes #351768.

	* tests/check/gst/gstbuffer.c: (GST_START_TEST):
	Added check for metadata copy when creating subbuffers.

2006-08-21  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Only call downstream buffer_alloc if transform element is passthrough
	or always_in_place. Closes #350449.

2006-08-20  Stefan Kost  <ensonic@users.sf.net>

	* ChangeLog:
	  ChangeLog surgery to add comments to previous changes

2006-08-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gst.c:
	  Add comments

	* gst/gstpad.c: (gst_pad_set_active):
	  Be more verbose in the log

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_transform_caps):
	  Simplify caps to get rid of duplicates, fixes #345444

2006-08-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstvalue.c:
	* gst/gstvalue.h:
	  Use these optimizations only internally.

2006-08-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstvalue.c: (gst_value_compare_list),
	(gst_value_compare_fraction_range),
	(gst_value_intersect_fraction_fraction_range),
	(gst_value_intersect_fraction_range_fraction_range),
	(gst_value_subtract_fraction_fraction_range),
	(gst_value_subtract_fraction_range_fraction_range),
	(gst_value_get_compare_func), (gst_value_compare),
	(gst_value_compare_with_func):
	* gst/gstvalue.h:
	  Saves the expensive lookup of the compare function in many cases
	 (#345444)

2006-08-18  Edward Hervey  <edward@fluendo.com>

	* tests/check/gst/gstinfo.c: (gst_info_suite):
	Disable test that require gstdebug if it wasn't built in core.

2006-08-18  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/logging.txt:
	  update ideas
	  
	* gst/gstinfo.c: (gst_debug_log_default):
	  reorder fields, save some columns, add optional color codes for log
	  levels

2006-08-18  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/logging.txt:
	  add ideas about making the logs a bit more useful

2006-08-17  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/advanced-events.xml:
	* docs/pwg/titlepage.xml:
	  Update for 0.10 API (#340627). Add myself
	  to authors list.

2006-08-17  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/check/gstbufferstraw.c:
	  Make gstcheck stuff show up in docs (still needs to
	  be documented properly though).

2006-08-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.c: (init_post):
	* gst/gst_private.h:
	* gst/gstquark.c: (_priv_gst_quarks_initialize):
	* gst/gstquark.h:
	* gst/gstquery.c: (gst_query_new_position),
	(gst_query_set_position), (gst_query_parse_position),
	(gst_query_new_duration), (gst_query_set_duration),
	(gst_query_parse_duration), (gst_query_new_convert),
	(gst_query_set_convert), (gst_query_parse_convert),
	(gst_query_new_segment), (gst_query_set_segment),
	(gst_query_parse_segment), (gst_query_new_seeking),
	(gst_query_set_seeking), (gst_query_parse_seeking):
	Add internal helpers for pre-registering quarks from static strings
	and using the quark values directly instead of looking them up when
	creating and parsing queries. Can be used for event construction too.
	Closes #350432.

2006-08-16  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c:
	Fix bogus docs.

2006-08-15  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.c: (gst_util_set_value_from_string):
	  Fix memleak (#351502).

	* tests/check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	  Add unit test for most of gst_util_set_value_from_string()
	  (not that one would want to encourage use of this function).

2006-08-15  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstcheck.h:
	  Use const gchar * variables in fail_unless_equals_string
	  macro to avoid compiler warnings (and don't use tabs for
	  indenting).

2006-08-15  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.c: (print_tag):
	  More space on the left for the tag names, to cater
	  for the 'extended comment' tag (not touching the
	  string for the first line since it's translated).

2006-08-15  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/check/gstcheck.h:
	  Fix ASSERT_CRITICAL and ASSERT_WARNING macros to actually
	  print something when they fail.

2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c: (_gst_tag_initialize):
	* gst/gsttaglist.h:
	  API: add GST_TAG_EXTENDED_COMMENT (#350935).
	  Also change merge function for GST_TAG_COMMENT to
	  use_first.

2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c: (gst_debug_print_object):
	  Make GST_PTR_FORMAT print messages as well.

	* tests/check/gst/gstinfo.c: (printf_extension_log_func),
	(GST_START_TEST), (gst_info_suite):
	  More tests.

2006-08-14  Edward Hervey  <edward@fluendo.com>

	* gst/gstelementfactory.c: (gst_element_register):
	If the GstElementClass doesn't have a GstElementDetails with all fields
	filled up correctly (longname, description AND author), then error out
	nicely instead of crashing.

2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c:
	  Fix typo in docs and re-wrap docs blurb to not exceed 80 chars/line.

	* gst/gstvalue.h:
	  Expand on the difference between arrays and lists as we use them.
	  
2006-08-14  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_change_state):
	If the parent state change function failed, don't assume we can safely
	stop the source, this will be done when the pads are deactivated.

2006-08-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c:
	* gst/gsttask.c: (gst_task_join):
	Small doc updates.

	* gst/gstpad.c: (gst_pad_activate_pull), (gst_pad_activate_push),
	(gst_pad_stop_task):
	When pad (de)activation failed for some reason, restore the old
	activation mode and set the pad to flushing instead of assuming the
	pad is deactivated.
	If the _task_join() failed, reinstall the task on the pad so that it can
	be stopped later and return an error.

2006-08-11  Andy Wingo  <wingo@pobox.com>

	* configure.ac:
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packetizer_new):
	* tests/check/libs/gdp.c: (gst_dp_suite): GST_DISABLE_DEPRECATED
	is only for users of API that don't want to see deprecated
	functions in the headers; people that want to compile out
	deprecated code should pass -DGST_REMOVE_DEPRECATED into the
	CFLAGS. Fixes the build of multifdsink, or will soon..

2006-08-11  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Add GstClockClass vmethod docs.

	* gst/gstcaps.h:
	Mark #endif with comment for associated #if

	* gst/gstclock.c: (gst_clock_id_wait):
	* gst/gstclock.h:
	Add vmethod wait_jitter to avoid an unneeded _get_time() for
	most clock implementations.
	Document vmethods.
	Flesh out docs about resolution methods.
	API: GstClockClass::wait_jitter

	* gst/gstsystemclock.c: (gst_system_clock_class_init),
	(gst_system_clock_async_thread),
	(gst_system_clock_id_wait_jitter_unlocked),
	(gst_system_clock_id_wait_jitter):
	Use base class wait_jitter variant for improved performance
	due to less clock polling.

2006-08-11  Edward Hervey  <edward@fluendo.com>

	* gst/gst.c: (gst_init_check), (init_post):
	Set gst as being initialized before scanning/updating the registry,
	since there might be my python plugin loader that calls gst_init() and
	we don't want to loop back in.
	Closes #350879

2006-08-11  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-qos.txt:
	Bring docs in line with the code. Mostly the sign of the jitter was
	wrong in the docs. Fixes #349943.

	* gst/gstclock.c:
	Fix the docs for the jitter.

	* gst/gstevent.c: (gst_event_new_custom), (gst_event_new_tag),
	(gst_event_parse_tag), (gst_event_new_buffer_size),
	(gst_event_parse_buffer_size), (gst_event_parse_qos),
	(gst_event_new_seek), (gst_event_parse_seek),
	(gst_event_new_navigation):
	Make sure the GstStructure has no parent when creating custom
	events.
	Add some more argument checking so that we avoid 0.0 rates.
	Flesh out the docs for the QoS event some more.

2006-08-11  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
	(ensure_current_registry_forking), (ensure_current_registry),
	(parse_one_option), (parse_goption_arg), (gst_deinit),
	(gst_registry_fork_is_enabled), (gst_registry_fork_set_enabled):
	* gst/gst.h:
	Doc updates.
	Added API and command line option to disable registry forking in
	addition to the environment variable.
	Constify some static arrays.
	Added some more debug.
	Don't deinit twice.
	API: gst_registry_fork_is_enabled()
	API: gst_registry_fork_set_enabled()
	API: --gst-disable-registry-fork command line option
	Fixes #348918.

2006-08-11  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (gst_init):
	  Fix typo in error message.

2006-08-10  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.h:
	  fix ABI size-correction

	* tests/check/libs/gdp.c: (gst_dp_suite):
	  make tests that use deprecated API conditional

2006-08-10  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/controller/gstcontroller.c:
	(_gst_controller_get_property), (_gst_controller_set_property),
	(_gst_controller_init), (_gst_controller_class_init):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gsthelper.c: (gst_object_get_control_rate),
	(gst_object_set_control_rate):
	  API: add gst_object_{s,g}et_control_rate(), add private data section,
	  fix docs

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packetizer_new):
	* libs/gst/dataprotocol/dataprotocol.h:
	  add deprecation guards to make gtk-doc happy and allow disabling cruft

2006-08-09  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	  Let's enable the new unit test as well.

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

	* configure.ac:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstconfig.h.in:
	* gst/gstinfo.c: (_gst_debug_init), (gst_debug_print_segment),
	(_gst_info_printf_extension_ptr),
	(_gst_info_printf_extension_segment):
	  API: add GST_SEGMENT_FORMAT, which is a printf extension we
	  register that lets us easily dump GstSegments into debug
	  logs (#350419).

	* tests/check/gst/gstinfo.c: (segment_printf_extension_log_func),
	(info_segment_format_printf_extension), (gst_info_suite):
	  Add simple unit test that logs a bunch of different segments (not
	  valgrinded at the moment because of leaks in
	  gst_debug_add_log_function).

2006-08-09  Edward Hervey  <edward@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Even if we can't figure out the proper format to request downstream,
	call buffer_alloc() downstream with the input parameters without setting
	the caps on the srcpad. This will force negotiation in the chain
	function.
	Closes #350449

2006-08-08  Edward Hervey  <edward@fluendo.com>

	* gst/gstghostpad.c: (gst_ghost_pad_do_unlink):
	Unlinking from a pad without a target is now a perfectly valid case
	which should NOT raise an assertion.
	This case would happen if a linked ghostpad its target set to NULL after
	it was previously linked.

2006-08-08  Edward Hervey  <edward@fluendo.com>

	* tests/check/libs/gdp.c:
	Also comment out the test (see below).

2006-08-08  Edward Hervey  <edward@fluendo.com>

	* tests/check/libs/gdp.c: (gst_dp_suite):
	Use the architecture information from config.h and not gcc macros
	in order to properly disable a test that fails on PPC64.

2006-08-04  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstelement.c: (gst_element_remove_pad):
	  Don't crash printing the warning if the pad has no parent.

2006-08-02  Wim Taymans  <wim@fluendo.com>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer_any), (gst_dp_packet_from_caps_any),
	(gst_dp_crc), (gst_dp_header_payload_length),
	(gst_dp_header_payload_type), (gst_dp_packet_from_event),
	(gst_dp_packet_from_event_1_0), (gst_dp_buffer_from_header),
	(gst_dp_caps_from_packet), (gst_dp_event_from_packet_0_2),
	(gst_dp_event_from_packet), (gst_dp_validate_header),
	(gst_dp_validate_payload):
	Make debug category static
	Constify the crc table.
	Do some more arg checking in public functions.
	Fix some docs and do some small cleanups.

	* tests/check/libs/gdp.c: (GST_START_TEST), (gst_dp_suite):
	Add some more checks to see if GDP deals with bogus input.

2006-07-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstvalue.c: (gst_value_compare_list):
	Fix GstValueList comparison code. Fixes #347293.

	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	Check to test GstValueList comparison.

2006-07-31  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelementfactory.c: (gst_element_factory_create):
	Remove unnecessary ref/unref pair

	* gst/parse/grammar.y:
	Make sure to free the parse buffer on all code paths.
	Move a g_free up to the error handler where it's easier to see.

	* tests/check/gst/gstevent.c: (test_event):
	Extending timeout for downstream travelling events to 10 seconds to
	hopefully avoid intermittent failure on the buildbots.

	* tests/check/pipelines/parse-launch.c: (run_delayed_test):
	Don't manually set the state of the src element - it will happen as a
	natural consequence of the pipeline changing state, and that way it
	will do it in the right order too.

2006-07-31  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Use OBJECT_LOCK and refcounting to get the pad caps in the
	buffer_alloc function because the caps could change while we are
	busy with them. Fixes #349105

2006-07-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstutils.c: (gst_pad_get_fixed_caps_func):
	Protect _PAD_CAPS with OBJECT_LOCK.

2006-07-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_class_init), (gst_pad_dispose),
	(gst_pad_get_property), (gst_pad_activate_pull),
	(gst_pad_activate_push), (gst_pad_set_blocked_async),
	(gst_pad_set_activate_function),
	(gst_pad_set_activatepull_function),
	(gst_pad_set_activatepush_function), (gst_pad_set_chain_function),
	(gst_pad_set_getrange_function),
	(gst_pad_set_checkgetrange_function), (gst_pad_set_event_function),
	(gst_pad_set_query_function), (gst_pad_set_query_type_function),
	(gst_pad_set_internal_link_function), (gst_pad_set_link_function),
	(gst_pad_set_unlink_function), (gst_pad_set_getcaps_function),
	(gst_pad_set_acceptcaps_function),
	(gst_pad_set_fixatecaps_function), (gst_pad_set_setcaps_function),
	(gst_pad_set_bufferalloc_function), (gst_pad_link_check_hierarchy),
	(gst_pad_get_caps_unlocked), (gst_pad_get_caps),
	(gst_pad_peer_get_caps), (gst_pad_accept_caps),
	(gst_pad_peer_accept_caps), (gst_pad_set_caps),
	(gst_pad_configure_sink), (gst_pad_configure_src),
	(gst_pad_get_allowed_caps), (gst_pad_get_negotiated_caps),
	(gst_pad_buffer_alloc_unchecked), (gst_pad_alloc_buffer_full),
	(gst_pad_query), (gst_pad_load_and_link), (handle_pad_block),
	(gst_pad_chain_unchecked), (gst_pad_push), (gst_pad_get_range),
	(gst_pad_send_event):
	Use _DEBUG_OBJECT when it makes sense.
	Protect GST_PAD_CAPS with the OBJECT_LOCK.
	Small cleanups and code reflows.
	Avoid caps refcounting in _accept_caps.
	Refactor alloc_buffer so that the code performed on the peer is in a
	separate function. Also if the pad does not implement a buffer alloc
	function, we should still check if the pad is flushing before falling
	back to the default allocator.

2006-07-31  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/pipelines/parse-launch.c: (GST_START_TEST):
	Make all uses of identity and fakesink have silent=true to avoid
	serialising every passing data structure, which is breaking tests
	on FC4 for some unknown reason.

2006-07-30  Stefan Kost  <ensonic@users.sf.net>

	* gst/parse/Makefile.am:
	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	  Reverted previous patch as it required to bump the flex dependency to
	  2.5.31, where fc4/5 seem to ship only the ancient 2.5.4a :(

2006-07-30  Stefan Kost  <ensonic@users.sf.net>

	Patch by: Marc-Andre Lureau <marcandre.lureau@gmail.com>

	* gst/parse/Makefile.am:
	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	  push & pop the state of the lexer for reentrant use case
	  Fixes #349180

2006-07-29  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.h:
	  Note in the docs that the ::newsegment vfunc is not actually used by
	  GstBaseSrc.

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

	* libs/gst/base/gstcollectpads.c:
	(gst_collect_pads_set_flushing_unlocked), (gst_collect_pads_pop),
	(gst_collect_pads_clear), (gst_collect_pads_flush),
	(gst_collect_pads_event), (gst_collect_pads_chain):
	When flushing a pad, also clear the queued buffer so that we don't
	accidentally use it when we shouldn't.
	Fix leaks by inreffing incomming buffer.
	Flush out queued buffers in case of errors.
	Fixes #347452.

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

	* docs/random/phonon-gst:
	Random notes about a Phonon backend.

2006-07-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_setcaps):
	Extra debug output
	* tests/check/libs/gdp.c: (gst_dp_suite):
	Take a whack at fixing the ppc compile using a different define to
	disable the broken test.

	* tests/check/pipelines/parse-launch.c: (GST_START_TEST):
	Remove excess g_print()

2006-07-27  Jan Schmidt <thaytan@mad.scientist.com>

	* tests/check/pipelines/parse-launch.c: (expected_fail_pipe):
	Oops, meant to uncomment this line too to dampen the noise a bit.

2006-07-27  Jan Schmidt <thaytan@mad.scientist.com>

	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	* tests/check/pipelines/parse-launch.c: (expected_fail_pipe),
	(GST_START_TEST), (parse_suite):
	Fix some of the leaks exposed by extending the parse-launch testsuite,
	and move the 3 I can't figure out into a separate test that won't run
	the pipelines unless the appropriate line is uncommented.

2006-07-27  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesrc.c: (gst_file_src_create_read):
	  Requesting 0 bytes before the end of the file should result in
	  FLOW_OK and an empty buffer, not FLOW_UNEXPECTED. Thank you
	  unit test.

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

	* gst/gstcaps.c: (gst_static_caps_get), (gst_caps_get_structure):
	Fix useless assert, a uint is always positive.

	* gst/gststructure.c: (gst_structure_nth_field_name),
	(gst_structure_foreach), (gst_structure_map_in_place):
	Check input arguments for public functions to avoid obvious crashes.

	* plugins/elements/gstfakesink.c: (gst_fake_sink_render):
	* plugins/elements/gstfakesink.h:
	Do less useless typechecking.

2006-07-27  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesrc.c: (gst_file_src_class_init):
	  Do not use mmap() by default since there are a number of error
	  conditions that we would like to handle in a non-fatal way that
	  will result in a SIGBUS if we use mmap(). Examples: external
	  devices (USB harddrive, portable music player) being unplugged
	  while in use; file on mounted CD/DVD that can't be read because
	  the medium is partly damaged. Fixes #348455 and #348475.

2006-07-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstquery.h:
	Delete unused and misleading define of GST_QUERY_TYPE_RATE_DEN -
	rates are a gdouble

2006-07-26  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistry.c:
	  Move big documentation comment into class section header, so that it
	  appears in the API docs.

2006-07-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	Oops. Commit the docs additions too for new API.
	Also, remove the mention of the non-existent GST_QUERY_TYPE_RATE_DEN

2006-07-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gststructure.c: (gst_structure_id_set),
	(gst_structure_id_set_valist):
	* gst/gststructure.h:
	Add API for setting values into structures without performing
	a quark lookup, if the appropriate quark is already known.

	API: gst_structure_id_set
	API: gst_structure_id_set_valist

	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	Remove some dead code shown by the coverage information.
	Don't throw a critical g_warning when encountering a syntax error,
	just warn and let the normal error path handle it.

	* plugins/elements/gstelements.c:
	Bump the rank of filesink up to PRIMARY so that it is preferred over
	gnomevfssink for file:// sink uri's

	* tests/check/pipelines/parse-launch.c: (expected_fail_pipe),
	(GST_START_TEST), (run_delayed_test),
	(gst_parse_test_element_base_init),
	(gst_parse_test_element_class_init), (gst_parse_test_element_init),
	(gst_parse_test_element_change_state),
	(gst_register_parse_element), (parse_suite):
	Beef up the tests for parse syntax to check that more error cases
	fail as they are supposed to. Increases the test coverage a bit.

2006-07-26  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-elements.xml:
	  Fix gst_element_link() example.

	* gst/gstutils.c:
	  Mention in API docs that one should usually gst_bin_add()
	  elements to a bin or pipeline before doing the linking.
	  
2006-07-26  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_get_type), (gst_buffer_new),
	(gst_subbuffer_get_type), (gst_buffer_create_sub):
	Avoid function call for known types by keeping the buffer and
	subbuffer GType global.

	* plugins/elements/gstfilesrc.c: (gst_file_src_create_read):
	Random silly optimisations in read() path.

2006-07-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* tools/gst-launch.c: (main):
	  If the top-level of the parse is a normal bin, it doesn't do the
	  right logic to run as a top-level element, so place it inside a
	  pipeline.

2006-07-25  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesrc.c: (gst_file_src_set_property):
	  Remove superfluous g_object_notify() calls, GObject does
	  that for us automatically.

2006-07-25  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstinfo.h:
	  on Win32, use dllspec to export the debug category symbols

2006-07-24  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c: (_gst_tag_initialize):
	  Allow more than one GST_TAG_IMAGE per taglist.

2006-07-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstminiobject.c:
	  update docs
	* plugins/elements/gstfdsrc.c: (gst_fd_src_set_property),
	(gst_fd_src_create):
	  log recurring events at LOG level
	  add more debug for when the fd gets set

2006-07-21  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstparse.c: (gst_parse_launch):
	  Also remove reentrance checks if flex is MT safe (#348179)
	 Fix my empty ChangeLog entry below

2006-07-21  Andy Wingo  <wingo@pobox.com>

	* docs/libs/gstreamer-libs-sections.txt: Attempt to pacify buildbot.

	* libs/gst/check/Makefile.am
	(libgstcheck_@GST_MAJORMINOR@include_HEADERS)
	(libgstcheck_@GST_MAJORMINOR@_la_SOURCES): 
	* libs/gst/check/gstbufferstraw.h:
	* libs/gst/check/gstbufferstraw.c: Add some new hype testing
	functions, thus proving I am still a GStreamer haxor. OK I wrote
	them a long time ago, but anyways.

2006-07-21  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* gst/gstparse.c: (gst_parse_launch):
	  Check for flex version and omit mutex if we have a MT save flex
	  (fixes #348179)

2006-07-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstparse.c: (gst_parse_launch):
	Protect recursive calls to _parse with a recursive mutex
	and busy flag.

2006-07-21  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstpad.c: (GST_START_TEST):
	Fix leak in test.

2006-07-20  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstparse.c: (gst_parse_launch):
	  Do not hang on recursive usage of gst_parse_launch()

2006-07-20  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c:
	  Add some more docs, comments and FIXME 0.11s here and there
	  and also fix some typos.

2006-07-20  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstsegment.h:
	  Convert tabs to spaces for better readability. 

2006-07-20  Edward Hervey  <edward@fluendo.com>

	* tests/check/libs/gdp.c: (gst_dp_suite):
	the test_buffer test fails at line 140 on ppc64 at the following
	check:
	fail_unless (GST_BUFFER_FLAG_IS_SET (newbuffer,
	        GST_BUFFER_FLAG_IN_CAPS),
		"GST_BUFFER_IN_CAPS flag should have been copied !");
	See bug #348114 for more details.

2006-07-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/advanced-scheduling.xml:
	* gst/gstpad.c:
	  Fix typos (#348000).

2006-07-18  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/intro-basics.xml:
	  Fix wrong links (#347927).

2006-07-18  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstregistry.h:
	* gst/gstregistryxml.c: (load_feature),
	(gst_registry_xml_read_cache), (gst_registry_xml_save_feature):
	* win32/common/config.h:
	  make --disable-index work (#342564)

2006-07-18  Wim Taymans  <wim@fluendo.com>

	Patch by: Peter Kjellerstedt <pkj at axis dot com>

	* gst/Makefile.am:
	* gst/gsttrace.h:
	The attached patch adds two missing defines to gsttrace.h when tracing
	is disabled.  It also corrects one existing define.
	Fixes #347756.

2006-07-17  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c: (gst_segtrap_is_enabled), (gst_segtrap_set_enabled):
	* gst/gst.h:
	* gst/gstplugin.c: (_gst_plugin_fault_handler_restore):
	Add two functions to check and change the SIGSEGV behaviour
	when loading plugins.
	Don't mess with the SIGSEGV handler when we were told not to.
	Fixes #347794.
	API: gst_segtrap_is_enabled
	API: gst_segtrap_set_enabled

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

	* libs/gst/base/gstbasesrc.c: (gst_base_src_update_length):
	* tests/check/elements/filesrc.c: (GST_START_TEST):
	Revert fix for regression in #347408 after release.

2006-07-14  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Antoine Tremblay <hexa00 at gmail com>

	* gst/gstutils.c: (gst_element_unlink):
	  Free iterator when done (#347311).

	* tests/check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	  And add a test case for this.

2006-07-14  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	Bump nano back to CVS

=== release 0.10.9 ===

2006-07-13  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.9, "On the road again"

2006-07-13  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_update_length):
	* tests/check/elements/filesrc.c: (GST_START_TEST):
	Revert pull-0 fix for release. Disable check. Fixes #347408.

2006-07-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_event_from_packet_1_0):
	  Fixes #347337: failure to deserialize event packets with
	  empty payload (only event type)

2006-07-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/Makefile.am:
	  do not install a .c file in the header directory

2006-07-13  Edward Hervey  <edward@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_set_target_unlocked):
	GhostPad no longer implicitely use the padtemplates of the targets.
	Fixes #347384

2006-07-11  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstvalue.c: (gst_value_compare_list),
	(gst_value_compare_array), (_gst_value_initialize):
	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	Make GstValueArray comparison be order dependent as designed.
	Add checks for value lists and value array comparisons.
	Fixes #347221

2006-07-11  Edward Hervey  <edward@fluendo.com>

	* gst/gstbin.c: (activate_pads),
	(iterator_activate_fold_with_resync), (gst_bin_src_pads_activate),
	(gst_bin_change_state_func):
	(de)activate src pads before calling state_change on the childs.
	This is to avoid the case where a src ghostpad is blocked (holding the
	stream lock), which would block the deactivation of the ghostpad's
	target pad.
	* gst/gstghostpad.c: (gst_proxy_pad_do_query_type),
	(gst_proxy_pad_do_event), (gst_proxy_pad_do_query),
	(gst_proxy_pad_do_internal_link), (gst_proxy_pad_do_bufferalloc),
	(gst_proxy_pad_do_chain), (gst_proxy_pad_do_getrange),
	(gst_proxy_pad_do_checkgetrange), (gst_proxy_pad_do_getcaps),
	(gst_proxy_pad_do_acceptcaps), (gst_proxy_pad_do_fixatecaps),
	(gst_proxy_pad_do_setcaps), (gst_proxy_pad_set_target_unlocked),
	(gst_proxy_pad_set_target), (gst_proxy_pad_get_internal),
	(gst_proxy_pad_dispose), (gst_proxy_pad_init),
	(gst_ghost_pad_parent_set), (gst_ghost_pad_parent_unset),
	(gst_ghost_pad_class_init),
	(gst_ghost_pad_internal_do_activate_push),
	(gst_ghost_pad_internal_do_activate_pull),
	(gst_ghost_pad_do_activate_push), (gst_ghost_pad_do_activate_pull),
	(gst_ghost_pad_do_link), (gst_ghost_pad_do_unlink),
	(gst_ghost_pad_dispose), (gst_ghost_pad_new_no_target),
	(gst_ghost_pad_new), (gst_ghost_pad_set_target):
	GhostPads now create their internal GstProxyPad at creation (and not
	when they're linked, as it was being done previously).
	The internal and target pads are linked straight away.
	The data will also travel through the other pad in order to make
	pad blocking and probes non-hackish (the probe/block now really happens
	on the GhostPad and not on the target).
	* gst/gstpad.c: (gst_pad_set_blocked_async),
	(gst_pad_link_prepare), (gst_pad_push_event):
	Remove previous ghostpad cruft.
	* gst/gstutils.c: (gst_pad_add_data_probe),
	(gst_pad_add_event_probe), (gst_pad_add_buffer_probe),
	(gst_pad_remove_data_probe), (gst_pad_remove_event_probe),
	(gst_pad_remove_buffer_probe):
	Remove previous ghost pad cruft.
	Added more detailed debug statements.
	* tests/check/gst/gstghostpad.c: (GST_START_TEST):
	Fix the testsuite for refcounting changes.
	The comments about who has references were correct, but the refcount
	being checked wasn't the same (!?!).

	Fixes #341029

2006-07-10  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstconfig.h.in:
	More docs for configuration options, add docs to gtk-doc.

2006-07-10  Stefan Kost  <ensonic@users.sf.net>

	* gst/Makefile.am:
	* gst/gstconfig.h.in:
	* win32/common/config.h:
	Fix build when disabling tracing (fixes #344016). Also start to document
	the defines that disable the sub-systems.

2006-07-10  Edward Hervey  <edward@fluendo.com>

	* gst/gst.c: (ensure_current_registry_forking):
	let's make valgrind happy...

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

	* gst/gstelement.c: (activate_pads),
	(iterator_activate_fold_with_resync), (gst_element_pads_activate):
	Better pad activation code: Reset the collect value too on resync.
	Add some comments.

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

	* gst/gstpad.c: (gst_pad_init), (gst_pad_activate_pull),
	(gst_pad_activate_push):
	Use some more macros where it makes sense.
	Allow pad mode switching instead of asserting. When a pad
	is activated in one mode and we activate it in another, 
	deactivate it first before activating it in a different mode.
	Fixes #329198.

2006-07-08  Andy Wingo  <wingo@pobox.com>

	* tools/gst-launch.c (main): Handle err == NULL.

	* gst/gst.c (init_post, ensure_current_registry)
	(ensure_current_registry_forking)
	(ensure_current_registry_nonforking): Reduce #ifdef ratnest by
	factoring out the registry scanning into separate functions. Don't
	fork for the rescan is GST_REGISTRY_FORK=no; useful in debugging.
	Better environment var name/interface suggestions accepted.

2006-07-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstobject.c: (gst_object_set_name_default),
	(gst_object_set_name):
	  Random micro-optimisation: don't use a hash table
	  with strings as keys and the usual strdup/strcmp
	  involved, but rather just use the GQuark of the
	  type name as key, since it needs to be looked up
	  anyway to get the type name string.

	* tests/check/gst/gstobject.c: (GST_START_TEST):
	  Fix various leaks.

2006-07-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (compare_interface), (gst_bin_get_by_interface),
	(gst_bin_iterate_all_by_interface):
	  Can't use GPOINTER_TO_INT and GINT_TO_POINTER with GTypes.
	  GTypes are gulongs and thus the top 4 bytes might be cut
	  off on some platforms when doing GPOINTER_TO_INT, leading
	  to invalid GTypes and bad things happening (see RH bug #179654).
	  Also add a check to make sure the type passed in is really
	  an interface type.

2006-07-07  Tim-Philipp Müller  <tim at centricular dot net>

	* .cvsignore:
	  Ignore more.

2006-07-07  Tim-Philipp Müller  <tim at centricular dot net>

	* Makefile.am:
	* configure.ac:
	* gst-element-check.m4:
	* gst-element-check.m4.in:
	  Make gst-element-check-$VERSION.m4 call gst-inspect-$VERSION
	  instead of the unversioned gst-inspect (#324176, #168659).

2006-07-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.h:
	Use a valid int for the _MESSAGE_ANY enum value to avoid compiler
	warnings.

2006-07-06  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_wait), (gst_base_src_update_length),
	(gst_base_src_get_range), (gst_base_src_default_check_get_range),
	(gst_base_src_check_get_range), (gst_base_src_pad_check_get_range),
	(gst_base_src_loop), (gst_base_src_start),
	(gst_base_src_activate_pull):
	Update docs.
	blocksize == 0 now means the default blocksize when working in push
	based mode.
	Remove some pointless asserts in _wait function.
	Fix offset/length calculations and EOS handling. We can now pull 0
	bytes as well, which is allowed.
	use _check_get_range() to decide if we can operate in _pull based
	mode.
	Fix refcounting leak when check_get_range function was not 
	implemented.
	API GstBaseSrc::blocksize range can be 0 too now (default)

	* tests/check/elements/filesrc.c: (GST_START_TEST),
	(filesrc_suite):
	Added check to test _get_range() behaviour.

2006-07-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_chain_unchecked), (gst_pad_chain),
	(gst_pad_push), (gst_pad_check_pull_range), (gst_pad_get_range),
	(gst_pad_pull_range):
	* gst/gstpad.h:
	Lots of comments and docs added to the pad functions.
	Flesh out the expected behaviour of the get_range() functions.

2006-07-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.h:
	* gst/gstclock.h:
	* gst/gstevent.h:
	* gst/gstiterator.h:
	* gst/gstpad.h:
	* gst/gstplugin.h:
	* gst/gsttask.h:
	Remove comma at end of enumerator list. 

2006-07-05  Sebastien Moutte  <sebastien@moutte.net>

	* win32/common/libgstbase.def:
	* win32/common/libgstdataprotocol.def:
	* win32/common/libsgtreamer.def:
	Add new exported functions.

2006-07-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstpushsrc.c: (gst_push_src_check_get_range):
	Add some more docs here and there.

2006-07-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_object),
	(gst_base_sink_loop), (gst_base_sink_get_position):
	When operating in pull mode update the offset so that we
	read sequentially.

2006-07-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstregistryxml.c: (read_string):
	Avoid strdup. (will happen in libxml, but hey!)

	* gst/gsturi.c:
	Add some more docs.

2006-07-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (_gst_buffer_copy), (gst_buffer_create_sub):
	* tests/check/gst/gstbuffer.c: (GST_START_TEST),
	(gst_buffer_suite):
	No point in checking if the size of the subbuffer > 0, the
	code handles it correclty as demonstrated by unit test.
	Also add a unit test for the zero sized _new_and_alloc and
	_copy. Fixes #346663.

2006-07-05  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buffer),
	(gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer):
	Make sure the buffer we pass to transform_ip has a refcount of
	1 and thus is writable. Fixes #343196

2006-07-04  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gstfilesrc.c: (gst_file_src_class_init),
	(gst_file_src_init), (gst_file_src_set_property),
	(gst_file_src_get_property), (gst_file_src_map_region):
	* plugins/elements/gstfilesrc.h:
	Add "sequential" property, off by default, to use madvise and hint
	to the kernel that sequential access is desired.
	Touch all retrieved pages by default to ensure they are pulled
	into memory. (Closes #345720)

2006-07-03  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-block.txt:
	* docs/design/part-dynamic.txt:
	Small docs updates.

2006-07-03  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_new_empty), (_gst_caps_free),
	(gst_caps_unref), (gst_static_caps_get),
	(gst_caps_append_structure):
	* gst/gstclock.c: (gst_clock_entry_new), (_gst_clock_id_free):
	Use GSlice when the glib we build against is >= 2.10

2006-07-03  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_pads_activate):
	Small cleanup in pad activation code.

2006-07-03  Wim Taymans  <wim@fluendo.com>

	Patch by: Peter Kjellerstedt <pkj at axis dot com>

	* gst/gst-i18n-app.h:
	* gst/gst-i18n-lib.h:
	* tools/gst-inspect.c: (print_signal_info):
	The attached patch will make the inclusion of gettext.h unconditional in
	gst/gst-i18n-app.h and gst/gst-i18n-lib.h, and it will remove the inclusion of
	libintl.h in tools/gst-inspect.c.
	This allows use of --disable-nls again and fixes #344642.

2006-07-03  Edward Hervey  <edward@fluendo.com>

	* gst/gstpad.c: (handle_pad_block), (gst_pad_push_event):
	Implement pad blocking on events according to part-block.txt.
	More comments on behaviour.
	* tests/check/gst/gstevent.c: (test_event):
	Send event to peer pad of blocked pad (else it will block).

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

	* libs/gst/check/gstcheck.c: (gst_check_message_error),
	(gst_check_run_suite):
	  if we get the wrong message, give us the types as string
	* plugins/elements/gstfilesrc.c: (gst_file_src_start):
	  Fix a translatable
	* tests/check/elements/filesrc.c: (GST_START_TEST):
	  add a test for trying to open a non-existing file

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

	* tests/check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
	  add a test for adding self

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

	* libs/gst/check/gstcheck.h:
	  add some assert_ as alias for fail_unless_*
	* tests/check/gst/gst.c: (GST_START_TEST), (gst_suite):
	  increase test coverage

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

	* Makefile.am:
	  include lcov.mak for lcov coverage generation
	* tools/Makefile.am:
	  add to CLEANFILES

2006-07-02  Edward Hervey  <edward@fluendo.com>

	* tests/check/elements/.cvsignore:
	moaping

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

	* configure.ac:
	  don't set CFLAGS and friends for gcov, done from GST_GCOV now
	* tests/check/Makefile.am:
	  clean up gcov files

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

	* gst/gstcaps.c: (gst_caps_remove_and_get_structure):
	  remove gst_caps_simplify; it was not declared and not used
	  and deprecated in 0.8

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

	* docs/faq/gst-uninstalled:
	  don't put empty paths on PYTHONPATH
	* docs/gst/gstreamer-sections.txt:
	  remove some symbols that are not there

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

	* gst/gstcaps.c: (gst_caps_compare_structures):
	  whitespace fixes
	* tests/check/gst/gstbuffer.c: (GST_START_TEST):
	* tests/check/gst/gstcaps.c: (GST_START_TEST), (gst_caps_suite):
	  add more tests

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

	* libs/gst/dataprotocol/Makefile.am:
	  build dataprotocol test by linking to the lib, instead of
	  compiling the source, so we get coverage
	* tests/check/Makefile.am:
	* tests/check/elements/filesrc.c: (event_func), (setup_filesrc),
	(cleanup_filesrc), (GST_START_TEST), (filesrc_suite):
	  add a test for filesrc

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

	* tests/check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite):
	  Push coverage from 59.04% to 70.00%

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

	* tests/check/Makefile.am:
	  gst-inspect every element; this makes sure that we also get
	  coverage on element's get/set functions

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

	* configure.ac:
	  set CFLAGS and friends to -O0 if gcov is being used
	  add GCOV LIBS
	* gst/Makefile.am:
	* libs/gst/base/Makefile.am:
	* libs/gst/check/Makefile.am:
	* libs/gst/controller/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/net/Makefile.am:
	* plugins/elements/Makefile.am:
	* plugins/indexers/Makefile.am:
	  add makefile rules to generate gcov data and clean up
	* tests/check/Makefile.am:
	  add a coverage target that generates an html overview
	  of coverage data

2006-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/check/elements/fakesink.c:
	* tests/check/elements/fakesrc.c:
	* tests/check/elements/fdsrc.c:
	* tests/check/elements/identity.c:
	* tests/check/generic/sinks.c: (gst_sinks_suite):
	* tests/check/generic/states.c:
	* tests/check/gst/gst.c:
	* tests/check/gst/gstabi.c:
	* tests/check/gst/gstbin.c:
	* tests/check/gst/gstbuffer.c: (gst_buffer_suite):
	* tests/check/gst/gstbus.c: (gst_bus_suite):
	* tests/check/gst/gstcaps.c: (GST_START_TEST):
	* tests/check/gst/gstelement.c:
	* tests/check/gst/gstevent.c: (gst_event_suite):
	* tests/check/gst/gstghostpad.c:
	* tests/check/gst/gstiterator.c: (gst_iterator_suite):
	* tests/check/gst/gstmessage.c: (gst_message_suite):
	* tests/check/gst/gstminiobject.c:
	* tests/check/gst/gstobject.c:
	* tests/check/gst/gstpad.c:
	* tests/check/gst/gstpipeline.c:
	* tests/check/gst/gstplugin.c:
	* tests/check/gst/gstquery.c: (gst_query_suite):
	* tests/check/gst/gstsegment.c: (gst_segment_suite):
	* tests/check/gst/gststructure.c:
	* tests/check/gst/gstsystemclock.c:
	* tests/check/gst/gsttag.c:
	* tests/check/gst/gsttask.c: (gst_task_suite):
	* tests/check/gst/gstutils.c:
	* tests/check/gst/gstvalue.c:
	* tests/check/libs/adapter.c:
	* tests/check/libs/basesrc.c:
	* tests/check/libs/collectpads.c:
	* tests/check/libs/controller.c:
	* tests/check/libs/gdp.c: (gst_dp_suite):
	* tests/check/libs/gstnetclientclock.c:
	* tests/check/libs/gstnettimeprovider.c:
	* tests/check/libs/libsabi.c: (libsabi_suite):
	* tests/check/libs/typefindhelper.c:
	* tests/check/pipelines/cleanup.c:
	* tests/check/pipelines/parse-launch.c:
	* tests/check/pipelines/simple-launch-lines.c:
	* tests/check/pipelines/stress.c: (stress_suite):
	  use the new macro

2006-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/check/gstcheck.c: (gst_check_run_suite):
	* libs/gst/check/gstcheck.h:
	  create a macro and function so that the simple unit test
	  case can be just one macro to create main()

2006-06-30  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (gst_bin_restore_thyself):
	* gst/gstxml.c: (gst_xml_make_element):
	  Fix deserialisation from XML. Set parent manually
	  instead of using gst_bin_add(), since gst_bin_add()
	  will unlink all pads of the element being added.
	  Fixes #341667.

2006-06-28  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Peter Kjellerstedt <pkj at axis com>

	* gst/gst.c: (prepare_for_load_plugin_func), (split_and_iterate):
	  Fix missing g_strdup() and double free when using the
	  --gst-plugin-load command line option (#346097).

2006-06-23  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c:
	  Promote GST_DEBUG_CATEGORY_STATIC in example in docs.

	* libs/gst/net/gstnetclientclock.c:
	* libs/gst/net/gstnettimeprovider.c:
	  Use GST_DEBUG_CATEGORY_STATIC here too (#342503).

2006-06-23  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-dataaccess.xml:
	  Fix buffer probe example compilation in
	  ADM (#345708).
	
2006-06-22  Edward Hervey  <edward@fluendo.com>

	* gst/gstelement.c: (gst_element_pads_activate):
	We need to deactivate src pads first and then sink pads.
	The reason is the src pads might be blocking while holding the streaming
	lock, so we need to deactivate them first so that deactivating the sink
	pads doesn't block (since it will require the streaming lock).

2006-06-22  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Forgot to remove two unneeded unrefs.
	Simplify a check _is_equal allready checks the obvious case.

2006-06-22  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-block.txt:
	Some docs about what pad_block should do.

2006-06-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_replace):
	Fix crasher when passed NULL. Doc clarification.
	Optimize for the trivial case.

	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Small cleanups.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
	Small documentation cleanup.

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_buffer_alloc):
	Don't use silly gst_pad_get_negotiated_caps, GST_PAD_CAPS
	is what we need and it avoids a whole lot of redundant 
	refcount operations.

2006-06-22  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Philip Jägenstedt  <philip at lysator liu se>

	* docs/manual/advanced-dataaccess.xml:
	  Fix 'Embedding static elements' section to use
	  GST_PLUGIN_DEFINE_STATIC (#345607).

2006-06-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/pipelines/simple-launch-lines.c: (test_stop_from_app):
	  Attempt to 'fix' spuriously failing test case: it seems like the
	  timeout of half a second is simply too small when the system is under
	  load otherwise, and the timeout doesn't really seem to serve any
	  particular purpose here. Give the pipeline a few seconds to preroll
	  first, and then give it another half a second to go from PAUSED to
	  PLAYING and marshal the message into the main thread.

2006-06-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-feedback-m.m:
	  Don't only use unversioned tools, try versioned tools as well
	  (#345086).

2006-06-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbus.c: (gst_bus_class_init):
	  Fix some typos, make docs more explicit.

2006-06-20  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstghostpad.c: (block_callback),
	(GST_START_TEST), (gst_ghost_pad_suite):
	Added some more ghostpad tests, mainly blocking
	and probes.

2006-06-16  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfilesink.c: (gst_file_sink_open_file),
	(gst_file_sink_close_file), (gst_file_sink_do_seek),
	(gst_file_sink_event), (gst_file_sink_render):
	* plugins/elements/gstfilesink.h:
	Check if we can seek in the file instead of assuming
	we always can. Post an error when we are asked to seek in a
	non-seekable file (like a fifo). Fixes #343312.
	Some cleanups.

2006-06-16  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.1.in:
	  Un-garble (fourcc) bit in filtered caps section.

2006-06-16  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/basics-helloworld.xml:
	* docs/manual/highlevel-components.xml:
	  Don't leak bus reference in sample code.

2006-06-15  Tim-Philipp Müller  <tim at centricular dot net>

	* autogen.sh:
	  Add default for new --enable-plugin-docs switch.

	* configure.ac:
	  Use new GST_PLUGIN_DOCS macro to check for pyxml etc.
	  Fixes #344039.

	* docs/Makefile.am:
	  Use new ENABLE_PLUGIN_DOCS conditional.

2006-06-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_query_duration_done), (gst_bin_query):
	Make it clear with a FIXME and a real define what the #if 0
	previously disabled.

2006-06-14  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
	(gst_base_sink_preroll_object), (gst_base_sink_get_position):
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_eventfunc):
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
	Don't randomly and silently reset a segment when the format 
	changes as this is a bug somewhere upstream. Fixes #330379.

2006-06-14  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Wouter Paesen  <wouter at kangaroot net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_new):
	  Fix controlling of float properties (#344849).

	* tests/check/libs/controller.c:
	(gst_test_mono_source_get_property),
	(gst_test_mono_source_set_property),
	(gst_test_mono_source_class_init), (GST_START_TEST):
	  While we're at it, add some float stuff to unit test.

2006-06-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/README:
	* docs/images/gdp-header.svg:
	  add a gdp image
	* docs/libs/Makefile.am:
	* docs/libs/gdp-header.png:
	* libs/gst/dataprotocol/dataprotocol.c:
	  add it to the API docs
	* docs/manual/intro-motivation.xml:
	  fix typo

2006-06-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (scan_and_update_registry), (init_post):
	  If the fork()'ed child process can't write the updated registry cache
	  file to disk for some reason, make it exit with a failure exit code,
	  so that the parent can then re-scan the plugins itself and update the
	  registry structures in memory and work with that (rather than failing
	  when creating elements because seemingly no plugins are available).
	  Refactor registry scanning code into separate function for this and
	  also separate fork() and non-fork() code paths. Fixes #344748.

2006-06-13  Wim Taymans  <wim@fluendo.com>

	* docs/manual/advanced-dataaccess.xml:
	Fix wrong PluginDesc. Fixes #344755.

2006-06-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistryxml.c: (gst_registry_xml_write_cache):
	  Fix silly bug that prevented us from creating
	  ~/.gstreamer-0.10 and writing the registry in one
	  go (the first call to g_mkstemp() would overwrite the
	  placeholder in the template string, so the second call
	  to g_mkstemp() after creating the missing directory
	  would then error out with 'invalid argument').

2006-06-13  Edward Hervey  <edward@fluendo.com>

	* gst/gst.c: (init_post):
	Free string.

2006-06-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/glib-compat-private.h:
	* gst/glib-compat.c:
	* gst/glib-compat.h:
	* gst/gstvalue.c: (gst_value_serialize_flags):
	  remove GLib 2.6 compatibility code

2006-06-12  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/parse/Makefile.am:
	  Fix build with 'make -j N' even more (#340016).

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Fix docs.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_set_duration),
	(gst_segment_set_last_stop), (gst_segment_set_seek),
	(gst_segment_set_newsegment_full), (gst_segment_to_stream_time),
	(gst_segment_to_running_time), (gst_segment_clip):
	Use G_UNLIKELY to help the compiler a bit.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	Patch by: Stefan Kost <ensonic at sonicpulse dot de>

	* gst/gstevent.c: (gst_event_get_type):
	* gst/gstmessage.c:
	* gst/gstpad.c: (gst_pad_chain_unchecked), (gst_pad_chain),
	(gst_pad_push):
	constify quark registration strings. Fixes #344115
	Avoid unneeded type checking is _pad_push() by internally
	calling gst_pad_chain_unchecked().

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_get_type), (gst_buffer_finalize),
	(_gst_buffer_copy), (gst_buffer_is_metadata_writable),
	(gst_subbuffer_finalize), (gst_buffer_create_sub),
	(gst_buffer_is_span_fast), (gst_buffer_span):
	Init _type for consistency.
	Use _FLAGS macro to avoid type check.
	Avoid unneeded type checks in subbufer code.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gst.c: (gst_debug_help):
	* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_list_free):
	* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
	(gst_plugin_feature_list_free):
	* gst/gstregistry.c: (gst_registry_add_plugin),
	(gst_registry_add_feature), (gst_registry_plugin_filter),
	(gst_registry_feature_filter), (gst_registry_find_plugin),
	(gst_registry_find_feature), (gst_registry_get_plugin_list),
	(gst_registry_lookup_feature_locked), (gst_registry_lookup_locked):
	* gst/gstregistryxml.c: (load_feature),
	(gst_registry_xml_read_cache), (gst_registry_xml_write_cache):
	* gst/gstminiobject.c: (gst_mini_object_unref),
	(gst_mini_object_replace), (gst_value_mini_object_free),
	(gst_value_mini_object_copy):
	Use _CAST macros to avoid unneeded type checking.
	Added some more G_UNLIKELY.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.h:
	Avoid unneeded type checking.
	API: GST_BUFFER_IS_DISCONT

	* gst/gstminiobject.h:
	Avoid type check in flag accessor.

	* gst/gstelementfactory.h:
	* gst/gstplugin.h:
	* gst/gstpluginfeature.h:
	Add _CAST macros.
	API: GST_ELEMENT_FACTORY_CAST
	API: GST_PLUGIN_CAST
	API: GST_PLUGIN_FEATURE_CAST

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstobject.c: (gst_object_get_type), (gst_object_ref),
	(gst_object_unref):
	Add G_UNLIKELY in type registration.
	Avoid type check in _ref/_unref since that is also
	done in glib.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gsterror.c: (gst_g_error_get_type):
	* gst/gstpadtemplate.c: (gst_pad_template_get_type),
	(gst_static_pad_template_get_type):
	* gst/gsttaglist.c: (gst_tag_list_get_type):
	* gst/gsttagsetter.c: (gst_tag_setter_get_type):
	* gst/gsttypefindfactory.c: (gst_type_find_factory_get_type):
	* gst/gsturi.c: (gst_uri_handler_get_type):
	* gst/gstvalue.c: (gst_date_get_type):
	* gst/gstxml.c: (gst_xml_get_type):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_type),
	(gst_base_sink_preroll_object), (gst_base_sink_get_position):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type):
	Add G_UNLIKELY in type registration.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* tools/gst-inspect.c: (print_signal_info):
	Properly print enum values.

2006-06-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstinfo.c: (gst_debug_set_active),
	(gst_debug_category_set_threshold), (_gst_debug_nameof_funcptr):
	* gst/gstinfo.h:
	Add some G_[UN]LIKELY.
	Maintain __gst_debug_min to avoid formatting the arguments of
	debug messages that will be dropped anyway to avoid a lot of 
	overhead from the debugging system.

2006-06-11  Stefan Kost  <ensonic@users.sf.net>

	* po/POTFILES.in:
	* po/POTFILES.skip:
	  add missing files containing translatable strings, tell intltool about
	  one exception

2006-06-11  Stefan Kost  <ensonic@users.sf.net>

	* tests/check/libs/.cvsignore:
	add test-binary to ignore list

2006-06-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/gstreamer-libs-docs.sgml:
	reorder (put dp into a chapter) and indent

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

	* configure.ac:
	  back to HEAD

=== release 0.10.8 ===

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

	* configure.ac:
	  releasing 0.10.8, "Soepeke, ik zie ou nog altijd nie"

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

	* gst/gst.c: (init_post):
	  move pid declaration to declaration block

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

	* gst/gst.c: (init_post):
	  use _exit() instead of exit() in our forked child; this ensures
	  that none of the registered exit handlers from whatever is using
	  GStreamer get executed.  This fixes gnome-mixer-applet failing
	  to load, because ORBit would shut down.
	  Spotted by: Edward Hervey  <edward@fluendo.com>
	  Fix suggested by: Tim-Philipp Müller  <tim at centricular dot net>
	  Fixes #344474

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

	* configure.ac:
	  back to TRUNK

=== release 0.10.7 ===

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

	* configure.ac:
	  releasing 0.10.7, "Soepeke, ik zie ou"

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

	* configure.ac:
	* po/af.po:
	* po/az.po:
	* po/bg.po:
	* po/ca.po:
	* po/cs.po:
	* po/de.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/it.po:
	* po/nb.po:
	* po/nl.po:
	* po/ru.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	* po/zh_CN.po:
	* po/zh_TW.po:
	* win32/common/config.h:
	  0.10.6.2 prerelease

2006-06-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstindex.c: (gst_index_gtype_resolver):
	* tools/gst-xmlinspect.c: (print_plugin_info):
	Fix leak spotted by coverity checker. Fixes #343827
	Fix another other leak found by paolo borelli.

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

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer_any), (gst_dp_packet_from_caps_any),
	(gst_dp_version_get_type), (gst_dp_init),
	(gst_dp_header_from_buffer), (gst_dp_header_from_buffer_1_0),
	(gst_dp_packet_from_caps), (gst_dp_packet_from_caps_1_0),
	(gst_dp_packet_from_event), (gst_dp_packet_from_event_1_0),
	(gst_dp_event_from_packet_0_2), (gst_dp_event_from_packet_1_0),
	(gst_dp_event_from_packet), (gst_dp_packetizer_new),
	(gst_dp_packetizer_free):
	* libs/gst/dataprotocol/dataprotocol.h:
	  API: add a GstDPPacketizer object, and create/free functions
	  API: add GstDPVersion enum
	  Add 1.0 event function that uses the string serialization
	  Serialize more useful buffer flags
	  Fixes #343988

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

	* tests/check/Makefile.am:
	* tests/check/gst/gstabi.c:
	* tests/check/gst/struct_ppc64.h:
	* tests/check/libs/libsabi.c:
	* tests/check/libs/struct_ppc64.h:
	  add ppc64 structure sizes

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

	* tests/check/Makefile.am:
	* tests/check/gst/gstabi.c:
	* tests/check/gst/struct_x86_64.h:
	* tests/check/libs/libsabi.c:
	* tests/check/libs/struct_x86_64.h:
	  generate and add structure size lists for x86_64

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

	* libs/gst/check/gstcheck.c: (gst_check_abi_list):
	* libs/gst/check/gstcheck.h:
	  factor out the method from tests that checks size of structures,
	  and add code to generate the header containing these sizes
	* tests/check/gst/gstabi.c: (GST_START_TEST):
	* tests/check/gst/struct_i386.h:
	* tests/check/libs/libsabi.c: (GST_START_TEST):
	* tests/check/libs/struct_i386.h:
	  use it

2006-06-06  Michael Smith  <msmith@fluendo.com>

	* gst/gstsegment.h:
	  Don't use c++-style comments, fixes #343929

2006-06-05  Edward Hervey  <edward@fluendo.com>

	* gst/gst.c:
	plugin_paths is not used if we build without registry support.

	* gst/gstsegment.c: (gst_segment_copy): 
	_copy() was always returning NULL...

2006-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event):
	  factor out CRC code

2006-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/check/gstcheck.c: (gst_check_teardown_src_pad):
	  make sure we unset caps

2006-06-02  Michael Smith  <msmith@fluendo.com>

	* libs/gst/check/gstcheck.c: (gst_check_init),
	(gst_check_chain_func):
	* libs/gst/check/gstcheck.h:
	  Add a cond/mutex to the check support lib, signal this whenever we
	  add to the buffers list. This will allow tests to not busy-wait on
	  the buffer-list.

2006-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event):
	  factor out some common header init code

2006-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_crc):
	* libs/gst/dataprotocol/dataprotocol.h:
	  API: make gst_dp_crc() public

2006-06-01  Stefan Kost  <ensonic@users.sf.net>

	* plugins/indexers/gstindexers.c: (plugin_init):
	conditionally register fileindexer (fixes #343598)

2006-06-01  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsttagsetter.h:
	Can't cast ifaces to a class

	* libs/gst/net/gstnetclientclock.h:
	* libs/gst/net/gstnettimeprovider.h:
	* plugins/elements/gstfakesink.h:
	* plugins/elements/gstfakesrc.h:
	* plugins/elements/gstfdsink.h:
	* plugins/elements/gstfdsrc.h:
	* plugins/elements/gstfilesink.h:
	* plugins/elements/gstfilesrc.h:
	* plugins/elements/gstidentity.h:
	* plugins/elements/gstqueue.h:
	* plugins/elements/gsttee.h:
	* plugins/indexers/gstfileindex.c:
	* plugins/indexers/gstmemindex.c:
	* tests/old/examples/plugins/example.h:
	Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass

2006-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer):
	  make sure we zero the whole ABI-compatible area

2006-06-01  Wim Taymans  <wim@fluendo.com>

	Patch by: Alessandro Decina <alessandro at nnva dot org>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_stop):
	Make sure the EOS flag is cleared from pads after a flush
	or stop. Fixes #343538.

	* tests/check/libs/collectpads.c: (GST_START_TEST),
	(gst_collect_pads_suite):
	Added test for collectpads reusage after EOS.

2006-05-30  Sebastien Moutte  <sebastien@moutte.net>

	* gst/gst.c:
	 set #include <sys/wait.h> in a #ifdef #ifdef HAVE_FORK
	* win32/common/libgstbase.def:
	 export gst_collect_pads_set_flushing
	* win32/common/libgstreamer.def:
	 export gst_pad_set_acceptcaps_function, gst_structure_empty_new,
	 gst_value_fraction_multiply
	* win32/vs6/gst_inspect.dsp:
	 add a link to intl.lib

2006-05-30  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad),
	(gst_collect_pads_chain):
	Handle the case where a pad is removed from the collection
	that could cause the other pads to become collectable.

2006-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c:
	Clarify the use of _release_request_pad() and
	_get_request_pad() a bit better.

	* libs/gst/base/gstadapter.c: (gst_adapter_peek),
	(gst_adapter_take_buffer):
	Fix some doc and comment typos.

2006-05-30  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/gstreamer-sections.txt:
	* docs/libs/gstreamer-libs-sections.txt:
	  add declared symbols

2006-05-30  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstsystemclock.c: (gst_system_clock_id_wait_unlocked):
	Add debug that can be enabled using a #define at the top of the file,
	for dumping stats about how late/early we were when waking up from
	waiting on the clock.

2006-05-30  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_check_pads):
	When rebuilding the pad list, don't leak the previous list.

2006-05-30  Wim Taymans  <wim@fluendo.com>

	Patch by: Lutz Mueller <lutz at topfrose dot de>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_get_query_types), (gst_base_src_update_length):
	Publish supported query types.
	Update last_stop field in get_range mode so the position
	query works. Fixes #342321.

2006-05-30  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.c: (_gst_tag_initialize):
	* gst/gsttaglist.h:
	  API: add GST_TAG_PREVIEW_IMAGE (#343341).

2006-05-30  Wim Taymans  <wim@fluendo.com>

	Patch by: Alessandro Decina <alessandro at nnva dot org>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad):
	Unlock mutex when removing an unknown pad.
	Fixes #343334.

	* tests/check/Makefile.am:
	* tests/check/libs/collectpads.c: (collected_cb), (push_buffer),
	(push_event), (setup), (teardown), (GST_START_TEST),
	(gst_collect_pads_suite), (main):
	Added collecpads check, disabled for now as check crashes for
	some reason.

2006-05-29  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize):
	Don't leak pads lists.

2006-05-29  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstcollectpads.c:
	(gst_collect_pads_set_flushing_unlocked),
	(gst_collect_pads_set_flushing), (gst_collect_pads_start),
	(gst_collect_pads_stop):
	* libs/gst/base/gstcollectpads.h:
	API: gst_collect_pads_set_flushing()
	Added api to set the pads to flushing, useful for seeking
	code in elements using collectpads.
	Clear segment when receiving a flush.

2006-05-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (add_path_func), (init_post):
	  Don't scan registry paths passed via --gst-plugin-path immediately
	  (will crash, because absolutely nothing is set up and no types are
	  registered etc.); do this later in init_post(). Fixes #343057.

2006-05-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_post):
	  if we have fork, fork while reading/rebuilding the registry
	  so the parent doesn't take the hit of having all plugins loaded
	  in memory.  Fixes #342777.
	* configure.ac:
	  Check if we have fork()
	* win32/common/config.h.in:
	  no fork() on win32

2006-05-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gstelements.c:
	* plugins/elements/gstfilesrc.c: (gst_file_src_class_init),
	(gst_file_src_init), (gst_file_src_set_property),
	(gst_file_src_get_property), (gst_file_src_start):
	* plugins/elements/gstfilesrc.h:
	  API: GstFileSrc::use-mmap

	Add a use-mmap property to enable easier testing of all code paths.
	Bump rank to PRIMARY, so filesrc is the preferred file reader and used
	in the absence of gnomevfssrc. (Closes #340501)

2006-05-26  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* tools/gst-inspect.c:
	Add missing include, removes warning of ngettext not being defined on
	some arches.

2006-05-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstvalue.c: (gst_value_deserialize_fraction):
	Handle NULL input and output pointers silently as a failed conversion,
	rather than g_warnings.

2006-05-25  Wim Taymans  <wim@fluendo.com>

	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_start):
	Initialize variable before using. Fixes #342820.

2006-05-24  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gsttypefindhelper.c: (buf_helper_find_peek):
	  Fix off-by-one bug that would only allow peeks of N-1 bytes
	  from the start even if the buffer to typefind on contains
	  in fact N bytes of data (makes vorbis typefinding from a
	  vorbis identification header buffer work).

	* tests/check/Makefile.am:
	* tests/check/libs/.cvsignore:
	* tests/check/libs/typefindhelper.c: (GST_START_TEST),
	(gst_typefindhelper_suite), (main), (foobar_typefind),
	(plugin_init):
	  Add very basic unit test for gst_type_find_helper_for_buffer()
	  that checks for the problem fixed above.

2006-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-inspect.c: (print_interfaces),
	(print_element_properties_info), (print_element_list), (main):
	  add more translatable strings

2006-05-23  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Julien Moutte  <julien at moutte net>

	* docs/gst/gstreamer-sections.txt:
	  Make new GST_FLOW_IS_SUCCESS macro visible in docs.
	  
	* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init),
	(gst_fake_sink_preroll):
	* plugins/elements/gstfakesink.h:
	  API: Add new GstFakeSink::preroll-handoff signal (#337100).

2006-05-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_flow_get_name), (gst_flow_to_quark):
	* gst/gstpad.h:
	Added _CUSTOM error and success GstFlowReturn that can be
	used be elements internally. 
	Added macro to check for SUCCESS flowreturns.
	API: GST_FLOW_CUSTOM_SUCCESS
	API: GST_FLOW_CUSTOM_ERROR
	API: GST_FLOW_IS_SUCCESS

	* tests/check/gst/gstpad.c: (GST_START_TEST), (gst_pad_suite):
	Added check for GstFlowReturn sanity.

2006-05-23  Wim Taymans  <wim@fluendo.com>

	Patch by: Mark Nauwelaerts <manauw at skynet dot be>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad),
	(gst_collect_pads_event):
	clear/reset segment info in FLUSH_STOP.
	Fixes #336929.

2006-05-22  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_stop),
	(gst_collect_pads_check_collected):
	Flush queued buffer on _stop(), fixes playing again (#342454)

2006-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite):
	  add a test for a complete structure

2006-05-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/developing.xml:
	* docs/faq/faq.xml:
	* docs/faq/troubleshooting.xml:
	* docs/faq/using.xml:
	  Some minor FAQ updates that won't change the fact that
	  our FAQ is badly structured, full of information hardly
	  anyone new to GStreamer needs to know and lacking lots
	  of information people constantly ask for.
	  
2006-05-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_set_caps):
	  Short-circuit gst_pad_set_caps if setting the existing
	  caps pointer again, and avoid printing debug and 
	  reffing/unreffing the caps.

	* plugins/elements/gstqueue.c: (gst_queue_push_one):
	  There's actually no need to set the caps before pushing -
	  the acceptcaps method will handle it anyway.

2006-05-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* win32/common/libgstreamer.def:
	* gst/gstutils.c: (gst_element_seek_simple):
	* gst/gstutils.h:
	  API: add gst_element_seek_simple() (#342238).

2006-05-18  Edward Hervey  <edward@fluendo.com>

	* gst/gsttypefind.c: (gst_type_find_get_type):
	* gst/gsttypefind.h:
	Added GST_TYPE_TYPE_FIND and gst_type_find_get_type() so a GType gets
	registered for GstTypeFind pointers. This allows wrapping the structure
	in bindings (i.e. gst-python).

2006-05-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttagsetter.c:
	  Docs additions and fixes (see #339918).

2006-05-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_prepare_buf):
	The caps intersection algorithm can produce multiple copies of the
	caps. Until that is fixed, we need to simplify the result to be
	sure whether the allowed caps are fixed or not.

	* plugins/elements/gstqueue.c: (gst_queue_init),
	(gst_queue_bufferalloc), (gst_queue_acceptcaps),
	(gst_queue_push_one):
	Proxied buffer alloc should not set the caps on the source pad.
	When pushing buffers, we always accept the caps change that triggers.
	This prevents negotiation errors caused by caps changing mid-stream 
	and then being refused on our source pad (because upstream is now
	refusing those caps).

2006-05-18  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/examples/helloworld/helloworld.c: (main):
	  Must plug audioconvert and audioresample between decoder
	  and audio sink.

2006-05-17  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstregistryxml.c: (read_string), (load_pad_template),
	(load_feature), (load_plugin):
	Allow empty strings for some of the plugin fields so we don't 
	drop valid plugin entries that were written out correctly
	(Fixes #341479)

2006-05-17  Sebastien Moutte  <sebastien@moutte.net>
	
	* gst/gstregistryxml.c: (gst_registry_xml_write_cache):
	  Use g_remove and g_rename instead of remove and rename that don't 
	  handle utf8 characters. rename was failing for users who had specific
	  characters in their name then the registry was built at each 
	  gstreamer init.
	* win32/vs6/gst_inspect.dsp:
	* win32/vs6/gst_launch.dsp:
	* win32/vs6/libgstbase.dsp:
	* win32/vs6/libgstcoreelements.dsp:
	* win32/vs6/libgstreamer.dsp:
	  Use a debug version of libxml2 (libxml2D.lib,libxml2D.dll) for DEBUG 
	  build of libgstreamer and clean unused libraries in projects link 
	  settings.

2006-05-17  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_push_one):
	The queue is not responsible for pushing an EOS when receiving a fatal
	flow error. It's up to the real element driving the pipeline to do that.

2006-05-16  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_push_one):
	The queue was posting a non-needed GST_MESSAGE_ERROR when pushing a
	buffer returned a fatal error. It should just send an EOS and stop
	its task.
	Upstream elements will then properly receive the GST_FLOW_UNEXPECTED
	when pushing buffers on the queue and will be able to handle the event.

2006-05-16  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-bins.xml:
	* docs/manual/basics-init.xml:
	  Fix typos and minor errors in sample code (#341856).

2006-05-16  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-qos.txt:
	Fix indexes in formulas to make more sense.

2006-05-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
	Don't report POSITION based on clock time if sync is
	disabled in a sink.

2006-05-15  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstobject.h:
	  Add cast to make compiler happy - refcount variable was a gint
	  in GstObject but is a guint in GObject and g_atomic_int_get()
	  wants a gint *.

2006-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/Makefile.am:
	  chain commands using &&, which also makes parallel make work

2006-05-14  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstevent.c:
	* gst/gstevent.h:
	* gst/gstmessage.h:
	  Minor docs fixes.

=== release 0.10.6 ===

2006-05-14  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.6, "Take the cannoli"

2006-05-13  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.c: (print_tag):
	  Fix use of uninitialized variable in the hypothetical
	  case that some broken plugin creates a GST_TAG_IMAGE
	  tag containing a NULL buffer (#341667).

2006-05-12  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.c: (print_tag):
	  Print something more intelligible for image tags when
	  using the -t switch (#341556).

2006-05-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	  updates for win32
	* configure.ac:
	  define GST_MAJORMINOR so we have it available in win32/common/config.h
	  Possibly remove it from our Makefile.am files later
	* win32/common/config.h:
	* win32/common/config.h.in:
	  added GST_MAJORMINOR
	* win32/common/gstenumtypes.c: (register_gst_resource_error):
	* win32/common/gstversion.h:
	  updated

2006-05-12  Sebastien Moutte  <sebastien@moutte.net>

	* win32/MANIFEST:
	  Update win32 files listing.
	* win32/common/gstversion.h:
	  Add GST_MAJORMINOR definition.
	* win32/common/libgstreamer.def:
	  Add new exported functions.
	  
2006-05-12  Michael Smith  <msmith@fluendo.com>

	* gst/gstplugin.c: (gst_plugin_load_file):
	  If an so file has no plugin entry point, unload the module.

2006-05-11  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstqueue.c: (gst_queue_chain), (gst_queue_loop),
	(gst_queue_set_property):
	Don't forget to signal the _chain or _loop function 
	when the queue size or thresholds change since that might
	cause them to make progres again.

2006-05-11  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstclock.c: (gst_clock_class_init):
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstobject.c: (gst_object_class_init):
	* gst/gstpad.c: (gst_pad_class_init):
	* gst/gstpipeline.c: (gst_pipeline_class_init):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init):
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_class_init):
	* libs/gst/net/gstnetclientclock.c:
	(gst_net_client_clock_class_init):
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_class_init):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init):
	* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init):
	* plugins/elements/gstfdsink.c: (gst_fd_sink_class_init):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init):
	* plugins/elements/gstfilesink.c: (gst_file_sink_class_init):
	* plugins/elements/gstfilesrc.c: (gst_file_src_class_init):
	* plugins/elements/gstidentity.c: (gst_identity_class_init):
	* plugins/elements/gsttee.c: (gst_tee_class_init):
	* tests/old/examples/plugins/example.c: (gst_example_class_init):
	* tests/old/testsuite/threads/signals.c: (gst_test_class_init):
	  G_OBJECT_CLASS macro usage batch cleanup, fixes #337747 for core

2006-05-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (_gst_buffer_initialize):
	Register subbufer along with the buffer type so that
	it does not accidentally gets registered from N
	different streaming threads in a non threadsafe way.

2006-05-10  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbuffer.h:
	* gst/gstevent.h:
	* gst/gstmessage.h:
	  Make gtk-doc generate docs for our inlined gst_buffer_ref(),
	  gst_event_ref() and gst_message_ref() functions again
	  (ugly hack, please do fix if there's a better way besides
	  overrides.txt, which doesn't seem to work).

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

	* libs/gst/check/gstcheck.h:
	  add an assert for setting state to avoid lots of repetitive code
	  in the future

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

	* gst/gstvalue.c: (gst_value_serialize_flags):
	  fix a leak if no flags are set
	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	  fix leak in tests

2006-05-10  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-pads.xml:
	  Expand a bit on caps and filtered links and update
	  examples that were still using the no longer existing
	  gst_pad_link_filtered() (#338206).

2006-05-10  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
	(gst_collect_pads_add_pad), (gst_collect_pads_remove_pad),
	(gst_collect_pads_set_flushing), (gst_collect_pads_start),
	(gst_collect_pads_stop):
	* libs/gst/base/gstcollectpads.h:
	No need to call _stop in _finalize.
	Iterate the main pad list in _finalize.
	Added some more debug.
	Free lists and data in the right order.
	Also free data whem doing _remove_pad when stopped for
	backward compatibility protect ::started with PAD_LOCK as
	well.

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

	* gst/gststructure.c: (gst_structure_gtype_from_abbr),
	(gst_structure_parse_value):
	  add some comments
	  rename a method so that it actually says what it does better

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

	* gst/gstevent.c: (_gst_event_initialize):
	* gst/gstformat.c: (_gst_format_initialize):
	  make sure some essential types used by events are registered
	  as part of gst_init()
	* gst/gstvalue.c: (gst_value_serialize_flags):
	  if no flags are set, serialize them to a value that represents NONE
	  so that deserializing them works
	* tests/check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	  add tests for serialization and deserialization of flags

2006-05-10  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_collect),
	(gst_collect_pads_collect_range), (gst_collect_pads_available),
	(gst_collect_pads_check_pads), (gst_collect_pads_check_collected),
	(gst_collect_pads_event), (gst_collect_pads_chain):
	Update docs.
	Better debug info.
	Catch and return errors from the collect function
	Refuse data on eos pads.

2006-05-10  Edward Hervey  <edward@fluendo.com>

	* gst/gstinterface.h:
	GST_IMPLEMENTS_INTERFACE and GST_IS_IMPLEMENTS_INTERFACE use the normal
	GInterface type checking.
	They were previously using non-defined macros.

2006-05-09  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_init),
	(gst_collect_pads_finalize), (gst_collect_pads_add_pad),
	(gst_collect_pads_remove_pad), (gst_collect_pads_set_flushing),
	(gst_collect_pads_start), (gst_collect_pads_stop),
	(gst_collect_pads_peek), (gst_collect_pads_pop),
	(gst_collect_pads_available), (gst_collect_pads_read),
	(gst_collect_pads_flush), (gst_collect_pads_check_pads),
	(gst_collect_pads_is_collected), (gst_collect_pads_event),
	(gst_collect_pads_chain):
	* libs/gst/base/gstcollectpads.h:
	Clean up the mess that is collectpads, add comments and
	FIXMEs where needed.
	Maintain a separate pad list so we can add pads while
	collecting the other ones. For this we need a new separate 
	lock (see comics).
	Fix memory leak in finalize.
	Refactor some weird code to set/unset pad flushing flags, mark
	with comments.
	Don't crash in _available, _read, _flush when we're EOS.

	* tests/check/libs/.cvsignore:
	Ignore adapter check binary.

2006-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstindex.c: (gst_index_resolver_get_type):
	* plugins/elements/gstfakesink.c:
	(gst_fake_sink_state_error_get_type):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_data_get_type),
	(gst_fake_src_sizetype_get_type), (gst_fake_src_filltype_get_type):
	* plugins/elements/gstqueue.c: (queue_leaky_get_type):
	  Const-ify GEnumValue arrays.

2006-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstbuffer.c: (GST_START_TEST):
	  Add test case for flags + gst_buffer_make_metadata_writable().

2006-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbuffer.c: (gst_buffer_make_metadata_writable):
	  gst_buffer_make_metadata_writable() should maintain the
	  buffer flags (those that make sense at least) (see #340859).

2006-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c:
	* tools/gst-launch.c:
	* tools/gst-typefind.c:
	* tools/gst-xmlinspect.c:
	* tools/tools.h:
	  Fix up includes: need to include stdlib.h in tools.h for exit().

2006-05-09  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.c: (_gst_tag_initialize):
	* gst/gsttaglist.h:
	  API: add GST_TAG_IMAGE tag (#340721).

2006-05-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstquery.c:
	Added some docs for the segment query.

2006-05-08  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
	(gst_base_src_loop), (gst_base_src_change_state):
	Always push non-flushing serialized events in the streaming 
	thread.

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

	* gst/gsterror.c: (_gst_stream_errors_init):
	  Add a missing error string.

2006-05-08  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment):
	Add applied_rate to the debug

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek):
	Copy applied_rate into the outgoing NEWSEGMENT event

2006-05-08  Wim Taymans  <wim@fluendo.com>

	Patch by: Philippe Rouquier <philippero at libertysurf dot fr>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_set_flushing),
	(gst_base_sink_change_state):
	call ::unlock before taking the PREROLL_LOCK so we can safely
	handle elements that lock in ::render.
	Fixes #340174.

2006-05-08  Edward Hervey  <edward@fluendo.com>

	* autogen.sh: (CONFIGURE_DEF_OPT): 
	Darwin's libtoolize is in fact called glibtoolize.
	Adding glibtoolize to the list of accepted names for libtoolize.

2006-05-08  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
	Unify error handling, don't post an error message
	when a push() returns EOS but perform our normal EOS
	handling code. Fixes #340772.

2006-05-08  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-overview.txt:
	Make upsteam/downstream concepts more clear.
	Give an example of serialized/non-serialized events.

	* docs/design/part-events.txt:
	* docs/design/part-streams.txt:
	Mention applied_rate.

	* docs/design/part-trickmodes.txt:
	Mention applied rate, flesh out some more use cases.

	* gst/gstevent.c: (gst_event_new_new_segment),
	(gst_event_parse_new_segment), (gst_event_new_new_segment_full),
	(gst_event_parse_new_segment_full), (gst_event_new_tag),
	(gst_event_parse_tag), (gst_event_new_buffer_size),
	(gst_event_parse_buffer_size), (gst_event_new_qos),
	(gst_event_parse_qos), (gst_event_parse_seek),
	(gst_event_new_navigation):
	* gst/gstevent.h:
	Add applied_rate field to NEWSEGMENT event.
	API: gst_event_new_new_segment_full()
	API: gst_event_parse_new_segment_full()

	* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_seek),
	(gst_segment_set_newsegment), (gst_segment_set_newsegment_full),
	(gst_segment_to_stream_time), (gst_segment_to_running_time):
	* gst/gstsegment.h:
	Add applied_rate to GstSegment structure.
	Make calculation of stream_time and running_time more correct
	wrt rate/applied_rate.
	Add some more docs.
	API: GstSegment::applied_rate field
	API: gst_segment_set_newsegment_full();

	* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
	(gst_base_sink_get_sync_times), (gst_base_sink_get_position):
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_eventfunc),
	(gst_base_transform_handle_buffer):
	Parse and use applied_rate in the GstSegment field.

	* tests/check/gst/gstevent.c: (GST_START_TEST):
	Add check for applied_rate field.

	* tests/check/gst/gstsegment.c: (GST_START_TEST),
	(gstsegments_suite):
	Add more checks for various GstSegment operations.

2006-05-08  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
	(gst_base_sink_do_sync), (gst_base_sink_chain_unlocked),
	(gst_base_sink_get_position), (gst_base_sink_change_state):
	Store the sync time of the buffer end position separatly in a
	new variable eos_rtime so we can properly sync the EOS event.
	Fixes #340697.
	Fix the docs for gst_base_sink_set_qos_enabled().
	Don't set segment start to invalid value when we receive a 
	non TIME newsegment.
	get closer to handling position reporting for negative rates 
	correctly.

2006-05-07  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstcaps.c:
	Docs about how to print caps for debug purposes.

	* gst/gstpadtemplate.c: (gst_static_pad_template_get):
	use gst_caps_make_writable instead of gst_caps_copy, Fixes #340608

2006-05-07  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c:
	  use full enum names and preprend a '%' in docs strings to make recent 
	  gtk-doc turn that into a link

2006-05-05  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-bins.xml:
	* docs/manual/basics-bus.xml:
	* docs/manual/basics-pads.xml:
	  Some typo fixes, some additions, some clarifications. 

2006-05-05  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-run.c: (main):
	* tools/gst-typefind.c: (main):
	* tools/gst-xmlinspect.c: (main):
	  Use the string passed to g_option_context_new() for
	  what it's intended for - the program name is already
	  printed elsewhere.

2006-05-05  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/Makefile.am:
	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-xmlinspect.c: (main):
	* tools/tools.h:
	  Add back --version command line option (#340460).

	* tools/gst-typefind.c: (have_type_handler), (typefind_file), (main):
	  Add --version option and use GOption for argument parsing; refactor a
	  bit; accept directories as arguments and recurse into them; lastly,
	  print a decent error message when things go wrong.

2006-05-05  Maciej Katafiasz  <mathrick@freedesktop.org>

	* docs/manual/basics-bins.xml:
	Don't mention GstThread (#340611)
	* docs/manual/basics-elements.xml:
	Update link to GObject tutorial (#340607)
	
2006-05-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.h:
	* gst/gstminiobject.c:
	Add note about refcounting and miniobject/buffer writeability
	to docs. Fixes #340604

	* gst/gstelementfactory.h:
	Added some explanation about @klass.

2006-05-05  Maciej Katafiasz  <mathrick@freedesktop.org>

	* docs/manual/intro-motivation.xml:
	* docs/manual/manual.xml:
	Avoid CORBA & Bonobo references (#340598)

2006-05-05  Maciej Katafiasz  <mathrick@freedesktop.org>

	* docs/manual/basics-bus.xml:
	* docs/manual/basics-pads.xml:
	Fix up some inaccuracies and omissions (#340609)
	
2006-05-05  Maciej Katafiasz  <mathrick@freedesktop.org>

	* gst/gstghostpad.c:
	  Small typo in docs (#340625)

2006-05-05  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/parse/Makefile.am:
	  Make 'make -j' proof (see #340698).

2006-05-05  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	  Require GLib-2.8 here as well.

2006-05-05  Wim Taymans  <wim@fluendo.com>

	* gst/glib-compat.c:
	* gst/gst.c: (init_pre):
	* gst/gstobject.c: (gst_object_init), (gst_object_ref),
	(gst_object_unref), (gst_object_replace), (gst_object_dispose),
	(gst_object_dispatch_properties_changed):
	* gst/gstobject.h:
	* gst/gstregistryxml.c: (gst_registry_xml_read_cache):
	* gst/gststructure.c: (gst_structure_set_valist):
	* gst/gstvalue.c: (gst_date_get_type), (_gst_value_initialize):
	Remove pre glib2.8 compatibility, fixes #340508

2006-05-04  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsttaglist.h:
	  Mention type of tags in doc blurbs.

2006-05-04  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_init), (gst_pad_configure_sink),
	(gst_pad_configure_src), (gst_pad_push):
	Restore acceptcaps checking behaviour now that good plugins have
	been released.

2006-05-04  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: James Andrewartha <trs80 at tartarus uwa edu au>

	* gst/gst.c:
	* gst/gstbus.c:
	* gst/gstclock.c:
	* gst/gstevent.c:
	* gst/gstformat.c:
	* gst/gstmessage.c:
	* gst/gstparse.c:
	* gst/gstquery.c:
	* gst/gstutils.c:
	* gst/parse/Makefile.am:
	* libs/gst/base/gstadapter.c:
	* libs/gst/base/gstbasesrc.c:
	* libs/gst/base/gstpushsrc.c:
	* libs/gst/base/gsttypefindhelper.c:
	* plugins/elements/gstfakesrc.c:
	* plugins/elements/gstidentity.c:
	  Make sure gstprivate.h and/or config.h are
	  always included first, otherwise some of our
	  defines (like _FILE_OFFSET_BITS) might be
	  redefined in the system headers. Fixes build
	  on opensolaris (#340016).

2006-05-04  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	API: addition: gst_adapter_take_buffer()
	
	* libs/gst/base/gstadapter.c: (gst_adapter_push),
	(gst_adapter_peek), (gst_adapter_take), (gst_adapter_take_buffer),
	(gst_adapter_available_fast):
	* libs/gst/base/gstadapter.h:
	Prepare for optimizing the hell out of this hugely inefficient
	piece of code. 
	Added gst_adapter_take_buffer() so we can at least start thinking
	about subbuffering and merging.
	Added some comments.

	* tests/check/Makefile.am:
	* tests/check/libs/adapter.c: (GST_START_TEST),
	(gst_adapter_suite), (main):
	Added GstAdapter check.

2006-05-04  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-overview.txt:
	Fix some typos, add blurb about buffer flags.

2006-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-sections.txt:
	  make sure GstBaseTransformClass shows up in the docs
	* libs/gst/base/gstbasetransform.c:
	* libs/gst/base/gstbasetransform.h:
	  move docs so gtk-doc picks it up now

2006-05-02  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/gstreamer-libs-sections.txt:
	  add missing symbols to docs

2006-05-02  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
	  back out the newsegment handling change, see #340060 for ongoing
	  discussion

2006-04-30  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-run.c: (get_candidates), (main):
	  Fix wrong g_file_test() usage (see glib docs for why it doesn't
	  work); fix typo in error message. Fixes #340079.

2006-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* common/Makefile.am:
	* docs/Makefile.am:
	* docs/faq/Makefile.am:
	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	* docs/manual/Makefile.am:
	* docs/plugins/Makefile.am:
	* docs/pwg/Makefile.am:
	* docs/slides/Makefile.am:
	* docs/upload.mak:
	* common/upload.mak:
	  move upload.mak to common

2006-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/check/gst/gstghostpad.c: (GST_START_TEST):
	  add more asserts on refcounts
	  do more cleanup at end of tests
	  fix test leaks showing in FC5

2006-04-29  Stefan Kost  <ensonic@users.sf.net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	reverted wrong change and reflowed code to avoid others falling into
	this trap

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
	  fix changelog entry about last collectpads change,
	  add notes about proper fix

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* gst/gst.c:
	* gst/gstregistry.c: (gst_registry_scan_path_level),
	(gst_registry_scan_path):
	* gst/gstregistry.h:
	  only write out registry if it has changed, fixes #338339

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbin.c:
	* gst/gstpipeline.c:
	* plugins/elements/gstcapsfilter.c:
	* plugins/elements/gstfakesink.c:
	* plugins/elements/gstfakesrc.c:
	* plugins/elements/gstfdsink.c:
	* plugins/elements/gstfdsrc.c:
	* plugins/elements/gstfilesink.c:
	* plugins/elements/gstfilesrc.c:
	* plugins/elements/gstidentity.c:
	* plugins/elements/gstqueue.c:
	* plugins/elements/gsttee.c:
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  make GstElementDetails const

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
	(gst_collect_pads_is_collected), (gst_collect_pads_event):
	  more detailed debug and formatting cleanup,
	  forward newsegments to src-pad (so that e.g. adder not eats them)

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstutils.c: (gst_element_link_pads):
	  cleanup double code

2006-04-28  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controller_sync_values):
	  some little tuning
	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	  a new test for live value handling

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstutils.c: (push_and_ref):
	Added some more docs.
	Fix refcount issue whith gst_element_found_tags() helper 
	function. Fixes #338335

	* tests/check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	Added testsuite for gst_element_found_tags().

2006-04-28  Michael Smith  <msmith@fluendo.com>

	* gst/gstvalue.c: (gst_value_serialize_flags):
	  Avoid NULL dereference when trying to serialize flags containing
	  invalid values.

2006-04-28  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  If we get EOS before any data is accumulated, don't use
	  uninitialised local variables.

2006-04-28  Michael Smith  <msmith@fluendo.com>

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_event),
	(gst_dp_event_from_packet):
	  Fixes in reading/writing events over GDP (not currently used?) - 
	  dereferencing NULL events for unknown/invalid event types, memory
	  leak, and change g_warning to GST_WARNING.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_is_too_late),
	(gst_base_sink_do_render_stats), (gst_base_sink_render_object),
	(gst_base_sink_get_position), (gst_base_sink_change_state):
	When frame dropping is enabled, we should not ignore frames
	without a duration.
	Update some documentation.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
	(gst_base_src_send_event), (gst_base_src_change_state):
	Documentation updates.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfdsink.c: (gst_fd_sink_render),
	(gst_fd_sink_check_fd), (gst_fd_sink_update_fd):
	handle EAGAIN, EINTR and short writes correctly. Also clean
	up some error cases, avoid a deadlock on bad file descriptors and
	use GST_DEBUG_OBJECT.
	Fixes #339843

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer):
	Don't try to serialize a GValue with a NULL buffer. 
	Fixes #339821.

	* tests/check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	Added check for serialisation of NULL buffers.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstminiobject.c: (gst_value_take_mini_object):
	Taking a NULL miniobject is valid, fix the case where
	we try to unref the NULL miniobject.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	Patch by: Stefan Kost <ensonic at sonicpulse dot de>

	* gst/gstbin.c: (gst_bin_handle_message_func):
	Update docs.
	Don't leak bin refcount when a state recalc is
	in progress and we delay another one #339808.

2006-04-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Mention QoS as an ongoing work item.

	* docs/design/part-buffering.txt:
	New doc about buffering that needs to be fleshed out
	at some point.

	* docs/design/part-qos.txt:
	More QoS policy for decoders/demuxers/transforms

	* docs/design/part-trickmodes.txt:
	Small update.

2006-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  back to HEAD

=== release 0.10.5 ===

2006-04-28  Thomas Vander Stichele <thomas at apestaart dot org>

	* configure.ac:
	  releasing 0.10.5, "Fogo"

2006-04-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Wim Taymans

	* gst/gstpad.c: (gst_pad_init), (gst_pad_configure_sink),
	(gst_pad_configure_src), (gst_pad_push):
	* gst/gstpipeline.c: (gst_pipeline_init):
	  Fix internal data flow errors.  Fixes #338711.

2006-04-12  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstelement.c: (GST_START_TEST):
	Don't leak the factory.

2006-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* win32/common/config.h:
	  prerelease

2006-04-12  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/controller/gstcontroller.c: (gst_controller_unset),
	(gst_controller_unset_all):
	  Free allocated GstTimedValues when freeing list nodes.
	  Should fix leaks 'make check-valgrind' complains about.

	* win32/common/libgstcontroller.def:
	  Add gst_controller_unset_all.

2006-04-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/controller/gstcontroller.c: (gst_controller_unset),
	(gst_controller_unset_all):
	* libs/gst/controller/gstcontroller.h:
	API: Added new method gst_controller_unset_all()
	fixed gst_controller_unset()
	* tests/check/libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	Added two testcases for new and fixed method

2006-04-11  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/net/gstnettimepacket.c: (gst_net_time_packet_send):
	  MSG_DONTWAIT is not defined on Cygwin, so work
	  around that (fixes #317048).
	  
2006-04-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstelementfactory.c: (gst_element_register),
	(gst_element_factory_create), (gst_element_factory_make):
	Some cleanups.
	Fixed a FIXME.
	Updated docs (Fixes #131079)

	* gst/gstpluginfeature.c: (gst_plugin_feature_load):
	Small cleanups.

	* tests/check/gst/gstelement.c: (GST_START_TEST),
	(gst_element_suite):
	Added testcase for elementfactory class field.

2006-04-10  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c:
	Added some more docs.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_perform_qos),
	(gst_base_sink_reset_qos):
	Calculate more accurate rate values.

2006-04-09  Sebastien Moutte  <sebastien@moutte.net>

	* gst/gst_private.h:
	  add a new #ifdef to use __declspec(dllimport) only for
	  other modules and not for gstreamer core
	* gst/gstbasesink.c: (gst_base_sink_perform_qos):
	  use gst_guint64_to_gdouble for conversion
	* win32/common/libgstreamer.def:
	  add new exported functions
	* win32/vs6/gst_inspect.dsp:
	* win32/vs6/gst_launch.dsp:
	* win32/vs6/libgstbase.dsp:
	* win32/vs6/libgstcontroller.dsp:
	* win32/vs6/libgstcoreelements.dsp:
	* win32/vs6/libgstdataprotocol.dsp:
	* win32/vs6/libgstnet.dsp:
	  update project files

2006-04-08  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstbuffer.c: (gst_subbuffer_class_init):
	* gst/gstclock.c: (gst_clock_class_init):
	* gst/gstelement.c: (gst_element_class_init):
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstindexfactory.c: (gst_index_factory_class_init):
	* gst/gstobject.c: (gst_object_class_init),
	(gst_signal_object_class_init):
	* gst/gstpad.c: (gst_pad_class_init):
	* gst/gstpadtemplate.c: (gst_pad_template_class_init):
	* gst/gstpluginfeature.c: (gst_plugin_feature_class_init):
	* gst/gstregistry.c: (gst_registry_class_init):
	* gst/gstsystemclock.c: (gst_system_clock_class_init):
	* gst/gsttask.c: (gst_task_class_init):
	* gst/gstxml.c: (gst_xml_class_init):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_loop):
	* libs/gst/controller/gstcontroller.c:/
	(_gst_controller_class_init):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init):
	* plugins/indexers/gstfileindex.c: (gst_file_index_class_init):
	* plugins/indexers/gstmemindex.c: (gst_mem_index_class_init):
	* tests/old/examples/plugins/example.c: (gst_example_class_init):
	* tests/old/testsuite/threads/signals.c: (gst_test_class_init):
	Fix #337365 (g_type_class_ref <-> g_type_class_peek_parent)

2006-04-08  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c: (gst_pad_link):
	  Must set peer pads before calling the link function, otherwise
	  a task started from a link function might get a flow-not-linked
	  result when trying to push because the other thread where the
	  linking happens hasn't had a chance to set the peers yet. This
	  might happen for example when a queue gets linked to a downstream
	  element, as queue starts a streaming task when its source pad
	  gets linked. Happens in real life when playing back flac/musepack
	  files in playbin (#332390).
	  
2006-04-08  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstindex.h:
	* gst/gstxml.h:
	* libs/gst/base/gstadapter.h:
	* libs/gst/base/gstbasesink.h:
	* libs/gst/base/gstbasesrc.h:
	* libs/gst/base/gstbasetransform.h:
	* libs/gst/base/gstcollectpads.h:
	* libs/gst/base/gstpushsrc.h:
	Fix broken GObject macros

2006-04-07  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	Initialize start and stop times, thanks valgrind.

2006-04-07  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	Be a bit nicer to badly behaving upstream elements that expect
	us to deal with non TIME segments and timestamps (such as fakesrc
	in the testsuite).

2006-04-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c:
	Small documentation clarification about the signal watch.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
	(gst_base_sink_wait_clock), (gst_base_sink_do_sync),
	(gst_base_sink_perform_qos), (gst_base_sink_reset_qos),
	(gst_base_sink_do_render_stats), (gst_base_sink_render_object),
	(gst_base_sink_get_position_last),
	(gst_base_sink_get_position_paused), (gst_base_sink_change_state):
	Convert and store timestamps in stream time and running time, the
	raw timestamps are not useful, also document this better.
	Use different window sizes for good and bad QoS observations so
	we react to badness a little quicker.
	Keep track of the amount of rendered and dropped buffers.
	Send QoS timestamps in running time.

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_sink_eventfunc),
	(gst_base_transform_handle_buffer):
	Compare QoS timestamps against running time.

2006-04-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c:
	  Typo fixes in docs.

2006-04-06  Michael Smith  <msmith@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_property):
	  Use g_value_get_object() instead of g_value_dup_gst_object(),
	  to avoid double-reffing the pad template (which we then sink,
	  so this worked previously if (and only if) the pad template
	  was floating.

	* gst/gstpadtemplate.c: (gst_pad_template_init),
	(gst_pad_template_pad_created):
	  Never return floating references to pad templates, create
	  them as initially-sunken.

	  Document an extra function (and make this stop sinking our
	  pad template, since that is now guaranteed to do nothing,
	  since we created it sunken).

	* gst/gstghostpad.c:
	  Fix docs typo.

2006-04-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c: (__gst_in_valgrind):
	  Add some newlines.

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain):
	  Don't leak buffer caps.

2006-04-06  Michael Smith  <msmith@fluendo.com>

	* gst/parse/grammar.y:
	  Fix a leak in parse-launch for any source-or-sink named element 
	  references used.

	* tests/check/pipelines/parse-launch.c: (expected_fail_pipe):
	  Unref the pipeline if it exists after we've failed parsing.

2006-04-05  Michael Smith  <msmith@fluendo.com>

	* gst/gstpipeline.c: (gst_pipeline_init):
	  When we create a pipeline bus, initially create it in flushing mode.
	  Fixes leaks in at least one test, and makes a new pipeline work the
	  same as one that has gone to READY and then back to NULL.

	* gst/gstelement.c:
	  Typo fix in docs.

2006-04-05  Michael Smith  <msmith@fluendo.com>

	* tests/check/gst/gstghostpad.c: (GST_START_TEST):
	  Unref a pad we reffed.
	* tests/check/gst/gstutils.c: (GST_START_TEST):
	  Unref bins

2006-04-05  Michael Smith  <msmith@fluendo.com>

	* gst/gstquery.c: (gst_query_set_formats),
	(gst_query_set_formatsv):
	  Fix leaking GValues in queries, as shown by valgrind/testsuite.

2006-04-05  Michael Smith  <msmith@fluendo.com>

	* tests/check/generic/sinks.c: (GST_START_TEST):
	  Fix a variety of memleaks in sinks check, which are only sometimes 
	  shown by running the tests under valgrind (weird?).

2006-04-05  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/version.entities.in:
	  Fix the substituted entity name after thomas' changes on the
	  weekend.

2006-04-05  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

	* gst/gstinfo.c: (__gst_in_valgrind): Use printf instead of
	VALGRIND_PRINTF
	
2006-04-05  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_set_blocked_async): More debug.

	* libs/gst/base/gstbasetransform.c
	(gst_base_transform_sink_eventfunc): When resetting our segment on
	FLUSH_STOP, also update the flag saying we haven't seen a
	newsegment.

2006-04-04  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Paolo Borelli  <pborelli at katamail dot com>

	* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_class_init),
	(gst_plugin_check_license):
	  minor clean-ups: G_DEFINE_TYPE already takes care of the
	  parent_class stuff, no need to do it twice. Mark array of
	  license strings as constant. (#337103)
	  
2006-04-04  Michael Smith  <msmith@fluendo.com>

	* tools/gst-inspect.c: (print_element_list):
	  Free the right plugin list; fixes a memory leak.

2006-04-04  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Mark Nauwelaerts  <manauw at skynet dot be>

	* plugins/elements/gstfilesink.c: (gst_file_sink_render):
	  Don't error out on empty buffers (#336945).
	  
2006-04-04  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* gst/gsttaglist.c:
	* libs/gst/base/gstbasesink.c:
	* libs/gst/base/gstbasesink.h:
	* libs/gst/base/gstbasesrc.c:
	* libs/gst/base/gstbasesrc.h:
	  Documentation updates. Make BaseSink and BaseSrc docs contain the
	  class structure so that people can actually see the prototypes for
	  virtual functions they're supposed to be overriding.

2006-04-04  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain):
	  More debug info; when skipping typefinding, send cached
	  events in all cases.

2006-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  use new AS_VERSION and AS_NANO macros
	* gst/gst-i18n-lib.h:
	* gst/gst.c:
	* gst/gsterror.c:
	* gst/gstversion.h.in:
	* win32/common/config.h:
	* win32/common/config.h.in:
	  update accordingly

2006-03-31  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain):
	  Do not typefind content if the buffers already have caps.
	  Neccesary for icydemux (#333657), and the right thing to do anyway.

2006-03-30  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_finalize), (gst_base_sink_set_qos_enabled),
	(gst_base_sink_is_qos_enabled), (gst_base_sink_do_sync),
	(gst_base_sink_record_qos_observation),
	(gst_base_sink_perform_qos), (gst_base_sink_reset_qos),
	(gst_base_sink_is_too_late), (gst_base_sink_render_object),
	(gst_base_sink_change_state):
	More QoS measurements as described in the design doc.
	Get rid of ringbuffer with observations, running average is
	more simple and equally good.
	Calculates valid proportion now.
	Added beginning of flood measurement.

2006-03-29  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-qos.txt:
	* gst/gstclock.c:
	Small documentation updates and additions.

2006-03-29  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_finalize),
	(gst_base_src_send_event), (gst_base_src_loop),
	(gst_base_src_change_state):
	Perform the EOS logic when we reach the segment stop position.
	Fix compilation on gcc4.1

2006-03-29  Wim Taymans  <wim@fluendo.com>

	Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com>

	* plugins/elements/gstqueue.c: (gst_queue_init),
	(gst_queue_locked_flush), (gst_queue_handle_sink_event),
	(gst_queue_set_property):
	* plugins/elements/gstqueue.h:
	In queue, when EOS is received, if minimum threshold > max_size -
	current_level, there is chance that queue blocks forever in conditional
	item del wait. This is because the queue is not emptied completely due
	to minimum threshold.  Here is another approach. Instead of setting
	cur_levels to max in EOS, just zero all minimum threshold levels. This
	should make sure that queue gives out all data. When going to READY
	(stop) state, just reset the original minimum threshold levels.
	Fixes #336336.

2006-03-29  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c: (stop_typefinding),
	(gst_type_find_element_handle_event),
	(gst_type_find_element_send_cached_events),
	(gst_type_find_element_change_state):
	* plugins/elements/gsttypefindelement.h:
	  When typefinding is done in push mode, we should cache
	  events we receive during typefinding instead of just
	  dropping them (e.g. newsegment, custom events from
	  dvdreadsrc etc.) and then send them out once we've
	  determined the type of the stream (and decodebin
	  has had a chance to plug in a decoder/demuxer).
	  
2006-03-27  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-qos.txt:
	First QoS ideas.

2006-03-27  Wim Taymans  <wim@fluendo.com>

	Inspired by a patch of: Lutz Mueller <lutz at topfrose dot de>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_finalize),
	(gst_base_src_send_event), (gst_base_src_change_state):
	Handle element seek correctly when we are streaming.
	Fixes #326998.

2006-03-24  Michael Smith  <msmith@fluendo.com>

	* docs/faq/gst-uninstalled:
	  Set up LD_LIBRARY_PATH to point at all the gstreamer libs. This will
	  allow you to correctly run intalled applications built against old 
	  core, using plugins that require updated core (e.g. running
	  installed totem against a full uninstalled gstreamer stack)

2006-03-24  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_is_collected):
	more debug details

2006-03-24  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Rearrange the order of the methods so that related methods
	are grouped together in sections.

2006-03-24  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c:
	  Little clarification in the docs

2006-03-24  Stefan Kost  <ensonic@users.sf.net>

	* docs/README:
	formatting fix
	* plugins/elements/gstidentity.c:
	* plugins/elements/gstqueue.c:
	* plugins/elements/gsttee.c:
	* plugins/elements/gsttypefindelement.c:
	GST_ELEMENT_DETAILS formatting

2006-03-24  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.h:
	Only add fields, not insert or we break ABI.

2006-03-23  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	  Update, add recently added functions.

2006-03-23  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstutils.c: (gst_pad_query_peer_position),
	(gst_pad_query_peer_duration), (gst_pad_query_peer_convert):
	* gst/gstutils.h:
	  API: add some new utility functions:
	   - gst_pad_query_peer_position()
	   - gst_pad_query_peer_duration()
	   - gst_pad_query_peer_convert()
	  
2006-03-23  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_init), (gst_base_sink_finalize),
	(gst_base_sink_set_qos_enabled), (gst_base_sink_is_qos_enabled),
	(gst_base_sink_set_property), (gst_base_sink_get_property),
	(gst_base_sink_commit_state), (gst_base_sink_get_sync_times),
	(gst_base_sink_wait_clock), (gst_base_sink_do_sync),
	(gst_base_sink_add_qos_observation), (gst_base_sink_send_qos),
	(gst_base_sink_perform_qos), (gst_base_sink_reset_qos),
	(gst_base_sink_is_too_late), (gst_base_sink_render_object),
	(gst_base_sink_preroll_object), (gst_base_sink_event),
	(gst_base_sink_chain_unlocked), (gst_base_sink_get_position_last),
	(gst_base_sink_get_position_paused), (gst_base_sink_get_position),
	(gst_base_sink_query), (gst_base_sink_change_state):
	Decouple max-lateness and the fact that QoS messages are generated
	with a new property (qos).
	added API: GstBaseSink::async_play()
	Add vmethod so subclasses can be notified of ASYNC playing
	state changes.
	Collect timestamp start and stop to report better current
	position in EOS/PLAYING/PAUSED/READY/NULL.
	Refactor QoS/frame dropping and other measurements.
	API: GstBaseSrc::qos
	Fixes #326311

	* libs/gst/base/gstbasesink.h:
	Added Private struct.
	API: gst_base_sink_set_qos_enabled()
	API: gst_base_sink_is_qos_enabled()

2006-03-23  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstregistryxml.c: (gst_registry_xml_read_cache):
	  If compiling against GLib-2.8 or newer, try to read the
	  registry file using GMappedFile first before falling back
	  to fopen() + fread() (#332151).

2006-03-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstinfo.c: (gst_debug_set_active),
	(gst_debug_category_set_threshold):
	Disable debugging unless explicitly activated.
	Fixes #335480.

2006-03-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_set_locked_state),
	(gst_element_dispose):
	Cleanup the error case.

	* gst/gstobject.c: (gst_object_dispose):
	print a critical when some object was disposed with
	a parent, also revive the object since it might
	crash the parent.

2006-03-22  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.1.in:
	  Fix another typo.

2006-03-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* tests/check/Makefile.am:
	  disable some tests when we don't have a registry
	* tests/check/gst/gstutils.c: (gst_utils_suite):
	  don't build the part that needs parsing

2006-03-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/Makefile.am
	* tests/examples/Makefile.am:
	  fix --disable-parse build

2006-03-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-feedback.1.in:
	  Fix typo: s/feeback/feedback/ (#133494).

2006-03-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/Makefile.am:
	* tools/gst-launch.1.in:
	  Add FILES section and correct entry about GST_REGISTRY_PATH
	  environment variable (#133495; #133494).

2006-03-21  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/Makefile.am:
	* tools/gst-md5sum.1.in:
	* tools/gst-md5sum.c:
	  Remove gst-md5sum and man page (the md5sink element
	  required was removed ages ago)

2006-03-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_id_set_value):
	  Make sure that string fields in structures/taglists
	  contain valid UTF-8 - we don't want to pass rubbish to
	  applications because of a buggy plugin (cp. #334167).

2006-03-21  Edward Hervey  <edward@fluendo.com>

	* gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func),
	(gst_bin_handle_message_func):
	* gst/gstclock.c: (gst_clock_dispose), (gst_clock_set_master):
	* gst/gstelement.c: (gst_element_set_clock), (gst_element_dispose),
	(gst_element_set_bus_func):
	* gst/gstghostpad.c: (gst_proxy_pad_dispose):
	* gst/gstminiobject.c: (gst_value_set_mini_object),
	(gst_value_take_mini_object):
	* gst/gstpad.c: (gst_pad_set_pad_template):
	* gst/gstpipeline.c: (gst_pipeline_dispose),
	(gst_pipeline_use_clock), (gst_pipeline_auto_clock):
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_pop),
	(gst_collect_pads_chain):
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_set_property):
	Series of fixes for dereferenced pointers that gcc 4.1 complains about.
	It's in fact all issues with gst_*object_replace().

2006-03-21  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Loïc Minier  <lool + gnome at via dot ecp dot fr>
	
	* pkgconfig/gstreamer-check-uninstalled.pc.in:
	* pkgconfig/gstreamer-check.pc.in:
	  Use @CHECK_LIBS@ here instead of hard-coding -lcheck (#334109).

2006-03-21  Edward Hervey  <edward@fluendo.com>

	* gst/gstbuffer.h:
	* gst/gstevent.h:
	* gst/gstmessage.h:
	gst_[buffer|event|message]_ref() macros are replaced by a static
	inline functions because gcc-4.1 will about if the return value
	isn't used.
	* tests/check/gst/gstevent.c: (event_probe):
	gst_event_ref now has to be given a GstEvent* , fix check accordingly.

2006-03-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstutils.h:
	Add G_UNLIKELY to our boilerplate to optimise the 'already registered
	the type' case. (Closes: #335195 for now). In the future, when we
	depend on GLib 2.10, we could also intern the type name using
	g_intern_static_string()

2006-03-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_handle_message_func),
	(bin_query_max_init), (bin_query_position_fold),
	(bin_query_position_done), (gst_bin_query):
	Position query should also take max of all streams.

2006-03-20  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init),
	(gst_fake_src_finalize):
	Fix leaks in fakesrc.

	* tests/check/pipelines/parse-launch.c: (GST_START_TEST):
	Fix leaks in the testcase.

2006-03-19  Sebastien Moutte  <sebastien@moutte.net>

	* gst/gst_private.h:
	  add win32 specific import decoration(__declspec(dllimport)) 
	  for all extern GstDebugCategory * variables
	* win32/common/libgstbase.def:
	* win32/common/libgstcontroller.def:
	* win32/common/libgstreamer.def:
	  Add some exports, remove empty lines
	* win32/common/libgstdataprotocol.def:
	* win32/common/libgstdataprotocol.dsp:
	* win32/common/libgstnet.def:
	* win32/common/libgstnet.dsp:
	  new project files and exportation files added
	
2006-03-19  Wim Taymans  <wim@fluendo.com>

	* tests/check/libs/basesrc.c: (eos_event_counter):
	Use proper return value for probe.

2006-03-17  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_alloc_buffer_full),
	(gst_pad_push):
	Don't leak buffers, caps and pads on negotiation errors.

2006-03-16  Stefan Kost  <ensonic@users.sf.net>

	* docs/faq/cvs.xml:
	* docs/faq/dependencies.xml:
	* docs/faq/developing.xml:
	* docs/faq/faq.xml:
	* docs/faq/general.xml:
	* docs/faq/getting.xml:
	* docs/faq/legal.xml:
	* docs/faq/troubleshooting.xml:
	* docs/faq/using.xml:
	Faq review and update.

2006-03-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_alloc_buffer_full),
	(gst_pad_push):
	Don't pound the cpu to pieces by checking get_caps when accept_caps
	is called with the same caps as the pad already has.
	Use GST_DEBUG_OBJECT when outputting caps change information.

2006-03-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstclock.c: (gst_clock_class_init):
	Fix docs.

2006-03-15  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbuffer.h:
	Documentation fix.

	* gst/gstpad.c: (gst_pad_init), (gst_pad_acceptcaps_default),
	(gst_pad_accept_caps), (gst_pad_configure_sink),
	(gst_pad_configure_src), (gst_pad_chain), (gst_pad_push):
	Make the default acceptcaps behaviour be to check the requested 
	caps against the gst_pad_get_caps output. 

	Ensure that gst_pad_accept_caps is used to check caps when a pad
	doesn't have a setcaps function, so that pads automatically refuse 
	caps that they don't allow in their pad template. (Fixes #332986)

	When a buffer with attached caps is pushed, ensure that the source 
	pad receives those caps even if the element didn't call
	gst_pad_set_caps first.

2006-03-15  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstadapter.c:
	Add some docs.

2006-03-15  Tim-Philipp Müller  <tim at centricular dot net>

	* win32/common/libgstbase.def:
	* win32/common/libgstcontroller.def:
	* win32/common/libgstreamer.def:
	  Add a whole bunch of missing functions (#334434).

2006-03-14  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
	(gst_base_sink_get_sync_times), (gst_base_sink_wait_clock),
	(gst_base_sink_do_sync), (gst_base_sink_do_qos):
	Better debug info when we receive a segment event.
	Reorganize a bit so we can pass the get_times() results around.
	Use the segment format when calculating the running time.
	Don't do QoS is sync is disabled or we have no clock or the
	element does not want us to sync to the clock.
	Don't drop buffers if QoS is disabled for now.

2006-03-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstclock.c: (gst_clock_class_init), (do_linear_regression):
	Marked the stats property as unimplemented so people don't get
	wild ideas.
	Add debug message when regression goes wrong.
	Added some more docs.

2006-03-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_to_stream_time):
	Return correct return type in case of errors.

2006-03-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstformat.c: (gst_format_get_name), (gst_format_to_quark):
	  Don't segfault on invalid formats.

2006-03-14  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	  Can't use gst_segment_to_running_time() when the segment
	  is not in GST_TIME_FORMAT (like with filesink, for example).
	  Stops flac encoding pipelines from spewing critical warnings
	  at EOS (#331248).
	  
2006-03-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpipeline.c: (gst_pipeline_class_init):
	  Add 'Since: 0.10.5' to gtk-doc blurb for added property.

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  Don't try to typefind empty streams.

2006-03-14  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_do_sync),
	(gst_base_sink_do_qos):
	Separate QoS calculation.
	Only drop buffers when lateness is bigger than the 
	duration of the buffer.

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c: (gst_pipeline_set_property),
	(gst_pipeline_get_property), (do_pipeline_seek),
	(gst_pipeline_change_state), (gst_pipeline_set_delay),
	(gst_pipeline_get_delay):
	Don't deadlock when reading properties.

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_class_init), (gst_base_transform_init),
	(gst_base_transform_sink_event),
	(gst_base_transform_sink_eventfunc),
	(gst_base_transform_src_event), (gst_base_transform_src_eventfunc),
	(gst_base_transform_handle_buffer), (gst_base_transform_chain),
	(gst_base_transform_set_property),
	(gst_base_transform_get_property),
	(gst_base_transform_change_state), (gst_base_transform_update_qos),
	(gst_base_transform_set_qos_enabled),
	(gst_base_transform_is_qos_enabled):
	* libs/gst/base/gstbasetransform.h:
	Make basetransform virtual method for src events too.
	Handle QOS in basetransform.
	API: gst_base_transform_update_qos()
	API: gst_base_transform_set_qos_enabled()
	API: gst_base_transform_is_qos_enabled()

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_do_sync):
	Small cleanups.
	Use QOS debug category.

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstqueue.c:
	Very small doc update.

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* gst/gst_private.h:
	* gst/gstinfo.c: (_gst_debug_init):
	Added QOS debug category

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbin.c: (bin_bus_handler), (gst_bin_handle_message_func):
	* gst/gstbin.h:
	* gst/gstbus.c: (gst_bus_class_init):
	* gst/gstbus.h:
	* gst/gstclock.c:
	* gst/gstelement.c: (gst_element_set_locked_state):
	* gst/gstsegment.c:
	Documentation updates.

	* gst/gstpipeline.c: (gst_pipeline_get_type),
	(gst_pipeline_class_init), (gst_pipeline_init),
	(gst_pipeline_dispose), (gst_pipeline_set_property),
	(gst_pipeline_get_property), (do_pipeline_seek),
	(gst_pipeline_send_event), (gst_pipeline_change_state),
	(gst_pipeline_provide_clock_func), (gst_pipeline_set_delay),
	(gst_pipeline_get_delay):
	* gst/gstpipeline.h:
	Added methods for setting the delay.
	API: gst_pipeline_set_delay()
	API: gst_pipeline_get_delay()
	Add pipeline debug category
	Various cleanups.
	Updated docs.
	Don't reset stream time when seek failed.

2006-03-13  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-klass.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbin.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-negotiation.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-preroll.txt:
	* docs/design/part-seeking.txt:
	* docs/design/part-states.txt:
	* docs/design/part-streams.txt:
	Documentation updates.

2006-03-12  Julien MOUTTE  <julien@moutte.net>

	* gst/gsttaglist.c: Fix rubbish docs that are encouraging
	us to leak strings...

2006-03-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/net/gstnettimeprovider.c:
	  fix docs
	* win32/common/config.h:
	  update

2006-03-12  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Julio M. Merino Vidal <jmmv at netbsd org>

	* configure.ac:
	  Don't check for libgnomeui (leftover from old examples
	  that aren't built or disted any longer) (#334303).
	  
2006-03-11  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfdsink.c: (gst_fd_sink_render):
	* plugins/elements/gstfilesink.c: (gst_file_sink_render):
	  Emit RESOURCE_NO_SPACE_LEFT error here as well when
	  there's no space left on the device.

2006-03-10  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstclock.h:
	  Fix GST_CLOCK_TIME_IS_VALID signedness issues - we need
	  to cast the input to GstClockTime before comparing with
	  another GstClockTime value.

2006-03-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  back to trunk

=== release 0.10.4 ===

2006-03-10  Thomas Vander Stichele <thomas at apestaart dot org>

	* configure.ac:
	  releasing 0.10.4, "Light"

2006-03-10  Michael Smith  <msmith@fluendo.com>

	* libs/gst/dataprotocol/dataprotocol.c:
	  Fix docs for dataprocotol to not get the return types completely
	  wrong for a few functions.

2006-03-09  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_init), (gst_pipeline_set_property),
	(gst_pipeline_get_property), (gst_pipeline_change_state),
	(gst_pipeline_set_auto_flush_bus),
	(gst_pipeline_get_auto_flush_bus):
	* gst/gstpipeline.h:
	  Add new API: gst_pipeline_set_auto_flush_bus() and
	  gst_pipeline_get_auto_flush_bus() to disable automatic
	  flushing of the pipeline's GstBus when going from READY
	  to NULL state (#332045).

2006-03-09  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsturi.c: (gst_uri_has_protocol):
	* gst/gsturi.h:
	   Add new API: gst_uri_has_protocol() (#333779).

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

	* gst/gstclock.c: (gst_clock_entry_new),
	(gst_clock_id_compare_func), (gst_clock_id_wait),
	(gst_clock_id_wait_async), (gst_clock_id_unschedule),
	(gst_clock_init), (gst_clock_get_internal_time),
	(gst_clock_set_master), (do_linear_regression),
	(gst_clock_add_observation), (gst_clock_set_property):
	* gst/gstclock.h:
	Review docs.
	Small cleanups.
	Fix a possible segfault when the window-size is made smaller.
	Calculate jitter before performing the clock wait. Ideally
	the clock implementation should calculate jitter but we need
	API breakage for that.

	* gst/gstsystemclock.c: (gst_system_clock_init):
	Docs review.
	
	* libs/gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	Remove leftover else

	* tests/check/gst/gstsystemclock.c: (GST_START_TEST),
	(gst_systemclock_suite):
	Added check to test GST_CLOCK_DIFF.

2006-03-09  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gsttypefindhelper.c: (helper_find_get_length),
	(gst_type_find_helper_get_range):
	  If we are provided with the size, we should implement
	  GstTypeFind::get_length, so that typefind functions who
	  want to can actually peek at the middle of a file.

2006-03-08  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-dataaccess.xml:
	  Add some very very basic error checking.

	* docs/pwg/appendix-checklist.xml:
	  Some updates to the list of things to check when writing an element.

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

	* docs/design/part-element-transform.txt:
	Added some docs about the design of tranform elements.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
	(gst_base_src_loop), (gst_base_src_change_state):
	Mark buffers with the DISCONT flag.

2006-03-08  Michael Smith  <msmith@fluendo.com>

	* gst/gstregistry.h:
	* gst/gstregistryxml.c: (gst_registry_save),
	(gst_registry_save_escaped), (gst_registry_xml_save_caps),
	(gst_registry_xml_save_pad_template),
	(gst_registry_xml_save_feature), (gst_registry_xml_save_plugin),
	(gst_registry_xml_write_cache):
	  Rewrite registry-saving to avoid race conditions and check for
	  failed writes.

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

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_transform_caps),
	(gst_base_transform_transform_size),
	(gst_base_transform_prepare_output_buffer),
	(gst_base_transform_get_unit_size),
	(gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer),
	(gst_base_transform_change_state):
	Cleanups, separate normal flow from errors, add sensible
	DEBUG lines.
	Don't try to renegotiate when allocating an output buffer.
	Also copy DISCONT buffer flag when copying a buffer.
	Reset the transform after we finish streaming, not during.

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

	* libs/gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	Use last buffer timestamp in qos message.

2006-03-07  Wim Taymans  <wim@fluendo.com>

	Patch by: Christophe Fergeau

	* docs/pwg/advanced-tagging.xml:
	* docs/pwg/building-pads.xml:
	  fixes #333416

2006-03-07  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	Added basesink new methods.

	* gst/gstevent.c:
	* gst/gstevent.h:
	Docs updates. Flesh out the QoS docs.

	* libs/gst/base/gstadapter.c:
	Small doc clarification about ownership and flushing.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_set_sync),
	(gst_base_sink_get_sync), (gst_base_sink_set_max_lateness),
	(gst_base_sink_get_max_lateness), (gst_base_sink_set_property),
	(gst_base_sink_get_property), (gst_base_sink_do_sync):
	* libs/gst/base/gstbasesink.h:
	API additions: 
	Added new methods to allow subclass to control max-lateness 
	and sync.
	Generate very basic QoS events based on last sync observation.
	Updated docs, fix typo, added some QoS blurb.

	* libs/gst/base/gstbasesrc.c:
	Remove obsolete _get_state() calls from docs.

2006-03-07  Wim Taymans  <wim@fluendo.com>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstbasetransform.h:
	API addition: Fix #333669, Add pad accessor defines for GstBaseTransform
	Fix docs for GstBaseSrc.

2006-03-07  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbuffer.h:
	* gst/gstvalue.c:
	* libs/gst/base/gstbasetransform.h:
	Small documentation fixes.

2006-03-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c:
	  Document thread-unsafety of gst_value_register_foo_func()
	  when used at the same time as gst_value_foo() (#322628).

2006-03-07  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstpushsrc.c: (gst_push_src_class_init),
	(gst_push_src_check_get_range):
	  Push sources don't support pull mode by default.

2006-03-06  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_pad_check_get_range),
	(gst_base_src_default_check_get_range):
	* libs/gst/base/gstbasesrc.h:
	  API addition:  Add ::check_get_range() vfunc to GstBaseSrc (#332611),
	  provide default implementation, and rename
	  gst_base_src_check_get_range() to
	  gst_base_src_pad_check_get_range() for clarity.

2006-03-06  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
	Make property overridable.

2006-03-06  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_init), (gst_base_sink_set_property),
	(gst_base_sink_get_property), (gst_base_sink_do_sync):
	* libs/gst/base/gstbasesink.h:
	API addition: Make max-lateness a property.

2006-03-06  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_wait_clock),
	(gst_base_sink_do_sync), (gst_base_sink_render_object):
	Don't ever draw a frame that is >10ms late.

2006-03-06  Michael Smith  <msmith@fluendo.com>

	* gst/gstmessage.c: (_gst_message_copy):
	  When copying a message, set the parent_refcount of the enclosed
	  structure to point at the copy, not the original message.

2006-03-06  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Christophe Fergeau

	* gst/gstutils.h:
	  Do proper cast here to make GST_BOILERPLATE_WITH_INTERFACE
	  usable in c++ code (#333417)

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

	* gst/gstclock.h:
	  Show GST_CLOCK_TIME_NONE as 99:99:99.999999999

2006-03-05  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_transform_caps):
	  Make sure caps are writable before passing them to
	  gst_caps_append().

2006-03-04  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsterror.h:
	  Fix some minor docs errors.

2006-03-04  Tim-Philipp Müller  <tim at centricular dot net>

	  Patch by: Ross Burton <ross at burtonini dot com>

	* gst/gsterror.c: (_gst_resource_errors_init):
	* gst/gsterror.h:
	  Add GST_RESOURCE_ERROR_NO_SPACE_LEFT (for #333352;

2006-03-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gst.c:
	Add a check and output a g_warning when GStreamer is built
	against GLib 2.6 but running against 2.8 or higher, and vice 
	versa. (Closes: #323542)

2006-03-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/parse/parse.l:
	  Commit patch for parse_launch syntax from #331255. Removes 
	  support for quoted strings and mimetypes when writing filtered 
	  caps. See the bug report for more details - I'm pretty sure this
	  obscure feature is not in use by _anyone_ anywhere.

	  With this simple change, the size of the gstreamer.so here 
	  drops from 2193KB to 1565KB.

2006-03-03  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.h:
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_src_event), (start_typefinding),
	(stop_typefinding), (gst_type_find_element_handle_event),
	(gst_type_find_element_chain),
	(gst_type_find_element_chain_do_typefinding):
	  Use gst_type_find_helper_for_buffer() for chain-based
	  typefinding.

2006-03-03  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_class_init),
	(gst_type_find_element_set_property),
	(gst_type_find_element_get_property):
	  Deprecate "maximum" property (not only was it only taken into
	  account for typefinding in push-mode anyway, it also was never
	  actually possible to set it in the first place because the
	  property was registered with the numeric property ID for the
	  "minimum" property). Register "maximum" property correctly,
	  for the sake of future copy'n'pasters. Remove some cruft
	  from property get/set functions.

2006-03-03  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_activate):
	  Use gst_type_find_helper_get_range() here, so we
	  can honour the "minimum" property and also emit
	  the signal with the correct probability of the found caps.

2006-03-02  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gsttypefindhelper.c: (helper_find_peek),
	(helper_find_suggest), (gst_type_find_helper_get_range),
	(gst_type_find_helper):
	* libs/gst/base/gsttypefindhelper.h:
	  New API: gst_type_find_helper_get_range() (#333042).

2006-03-02  Michael Smith  <msmith@fluendo.com>

	* gst/gstregistryxml.c: (load_feature):
	  Asserting on a failure to read part of the registry is Not Cool.
	  Just log a warning and return NULL (which is already handled)

2006-02-28  Sebastien Moutte  <sebastien@moutte.net>

	* win32/common/libgstbase.def:
	  added export of gst_type_find_helper_for_buffer
	* win32/common/libgstbase.def:
	  added some exports : gst_bin_iterate_elements, gst_iterator_resync,
	  gst_ghost_pad_get_target

2006-02-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-klass.txt:
	We use Filter now.
	Added Connector to mark elements that are only used to
	allow pipeline connections.
	Moved Debug to extra feature since most of them are 
	functionally something else.

2006-02-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-klass.txt:
	Some updates and clarifications.

2006-02-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-klass.txt:
	Proposal for klass field values.

	* docs/design/part-streams.txt:
	Start of a doc describing stream anatomy.

2006-02-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_handle_message_func):
	Help the compiler a bit with type registration.
	Use existing forward cod path instead of duplicating it when 
	handling a message.
	
	* gst/gstbus.c: (gst_bus_get_type):
	* gst/gstcaps.c: (gst_caps_get_type), (gst_static_caps_get_type):
	* gst/gstchildproxy.c: (gst_child_proxy_get_type):
	* gst/gstclock.c: (gst_clock_get_type):
	* gst/gstelement.c: (gst_element_get_type),
	* gst/gstelementfactory.c: (gst_element_factory_get_type):
	* gst/gstindexfactory.c: (gst_index_factory_get_type):
	* gst/gstminiobject.c: (gst_mini_object_get_type):
	* gst/gstpad.c: (gst_pad_get_type):
	* gst/gstsegment.c: (gst_segment_get_type):
	* gst/gststructure.c: (gst_structure_get_type):
	* gst/gstsystemclock.c: (gst_system_clock_get_type):
	* gst/gsttask.c: (gst_task_get_type), (gst_task_join):
	* gst/gstvalue.c:
	Help compiler with type registration.

	* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
	Small doc update.

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  When we get an EOS event and have not found a type yet
	  (most likely because we had not yet accumulated
	  TYPE_FIND_MIN_SIZE of data yet), try to determine the
	  type given the data we have so far. Fixes typefinding
	  for very short streams again, most notably quicktime
	  redirections as used on Apple's trailer site (#331701).

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gsttypefindhelper.c: (type_find_factory_rank_cmp),
	(gst_type_find_helper):
	  Try typefinding factories with the highest rank first.

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gsttypefindhelper.c:
	  Add section for typefind helper and add documentation
	  for the old and the new function.

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gsttypefindhelper.c: (buf_helper_find_peek),
	(buf_helper_find_suggest), (type_find_factory_rank_cmp),
	(gst_type_find_helper_for_buffer):
	* libs/gst/base/gsttypefindhelper.h:
	  New API: gst_type_find_helper_for_buffer() (#332723).
	  
2006-02-27  Michael Smith  <msmith@fluendo.com>

	Patch by: Loïc Minier

	* configure.ac:
	* docs/Makefile.am:
	* docs/slides/Makefile.am:
	  prevent CVS directories getting disted.

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstcaps.c: (gst_caps_ref), (gst_caps_unref):
	  Use the REFCOUNTING category for caps refcounting.
	  
2006-02-26  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c: (stop_typefinding):
	  This should be 0 not GST_CLOCK_TIME_NONE (see #331701).

2006-02-26  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_activate):
	  Use gst_pad_check_pull_range() before _activate_pull()
	  to avoid unnecessary open/close (see #331690).

2006-02-24  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.c:
	  Docs enhancement: make it crystal clear what the
	  gst_pad_add_*_probe() callbacks should look like.

2006-02-24  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c:
	  Document how applications can stop recording from
	  live sources (see #330996).

2006-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/Makefile.am:
	* tests/check/libs/basesrc.c: (eos_event_counter),
	(basesrc_eos_events_pull), (basesrc_eos_events_push),
	(basesrc_eos_events_push_live_op), (basesrc_eos_events_pull_live_op),
	(gst_basesrc_suite), (main):
	  ... and add some tests for the base source EOS stuff.

2006-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstutils.c: (test_buffer_probe_n_times):
	  Test case originally showed the problem fixed below,
	  but was then amended. Add checks back at the place
	  where they used to be.

2006-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_loop),
	(gst_base_src_activate_push), (gst_base_src_activate_pull),
	(gst_base_src_change_state):
	* libs/gst/base/gstbasesrc.h:
	  Don't unconditionally send EOS when going from PAUSED to
	  READY state, esp. make sure we don't send two EOS events
	  in some cases (e.g. one when reaching EOS and one when
	  going from PAUSED to READY). Also, we don't want to send
	  EOS events when operating in pull mode. However, we do
	  want to send an EOS event when shutting down a live
	  source explicitly, for example (fixes #330996).
	  
2006-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gstfilesrc.c: (gst_file_src_create_read):
	  Update src->read_position after a seek when not using mmap.
	  Fixes #332277, patch by: Renchi Raju <renchi gmail com>

2006-02-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/Makefile.am:
	* gst/gstparse.h:
	* gst/gstutils.c:
	* gst/gstutils.h:
	Make things work with --disable-parse as they do with 
	--disable-load-save - the symbols involved disappear, but the
	header is still installed and GST_DISABLE_PARSE is included via
	gstconfig.h

2006-02-20  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_change_state): Fix a stupid bug. I was 
	sure I compiled that.

2006-02-20  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_set_blocked_async):
	* gst/gstutils.c: (gst_pad_add_data_probe),
	(gst_pad_add_event_probe), (gst_pad_add_buffer_probe),
	(gst_pad_remove_data_probe), (gst_pad_remove_event_probe),
	(gst_pad_remove_buffer_probe): Make those function act on the
	ghostpad target when it's a ghostpad. (Closes #331727)

2006-02-20  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_change_state): Make basetransform reusable.
	(Closes #331898)

2006-02-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/random/release:
	Move the current documentation of how to do a release to the top
	of the file.

	* gst/gstbin.c: (gst_bin_class_init),
	(gst_bin_handle_message_func):
	Allow multiple state-recalculation threads. (Closes #328873)

2006-02-19  Julien MOUTTE  <julien@moutte.net>

	* gst/gstinfo.h: Add GST_STR_NULL to the second string.
	* gst/gstpad.c: (gst_pad_set_event_function),
	(gst_pad_set_query_function), (gst_pad_set_query_type_function),
	(gst_pad_set_getcaps_function): GST_DEBUG_PAD_NAME evaluates to
	2 strings. You can't use the STR_NULL macro on that.

2006-02-19  Sebastien Moutte <sebastien@moutte.net>

	* gst/gstpad.c: (gst_pad_set_event_function),
	(gst_pad_set_query_function), (gst_pad_set_query_type_function),
	(gst_pad_set_getcaps_function)
	* gst/parse/grammar.y: (gst_parse_found_pad), (gst_parse_perform_delayed_link)
	  Fixed NULL pointer used in GST_CAT_DEBUG using GST_STR_NULL macro
	  So now, we can use --gst-debug-level=5 on Windows
	* win32/common/libgstcontroller.def:
	  Added export of gst_controller_init
	* win32/vs6/libgstcontroller.dsp:
	  Fixed Release post build configuration

2006-02-17  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstquery.c: (GST_START_TEST):
	Added another check.

2006-02-15  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c: (find_peek):
	  We can do peeks at non-zero offsets, as long as they
	  fall within the buffer we have.

2006-02-15  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/Makefile.am:
	* tests/check/pipelines/parse-launch.c: (setup_pipeline),
	(expected_fail_pipe), (check_pipeline_runs), (GST_START_TEST),
	(parse_suite), (main):
	  Add testsuite for parse launch syntax

2006-02-14  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain):
	  When typefinding is unsuccessful in the chain function, don't
	  error out immediately. Only error out with NO_CAPS_FOUND if
	  the amount of data is at least MAX_TYPEFIND_SIZE bytes,
	  otherwise simply wait for more data so we can try typefinding
	  again with more data later. Also, don't attempt to typefind
	  if we have less than MIN_TYPEFIND_SIZE data available. Overall,
	  this should improve typefinding from network sources where the
	  size of the first buffer can be somewhat random.

2006-02-14  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpadtemplate.c:
	* gst/gstpadtemplate.h:
	Fix padtemplate docs, fixes #328805.

2006-02-14  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (main):
	NO_PREROLL is not an ERROR so don't send confusing messages
	to the user.

2006-02-14  Wim Taymans  <wim@fluendo.com>

	Patch by: Torsten Schoenfeld

	* gst/gstregistry.c: (gst_registry_get_default),
	(_gst_registry_cleanup):
	Protect default registry with lock and ref/sink it.
	Fixes #324818

2006-02-14  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c:
	* gst/gstquery.c: (gst_query_list_add_format),
	(gst_query_set_formatsv), (gst_query_parse_formats_length),
	(gst_query_parse_formats_nth):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
	Docs fixes.

2006-02-14  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Reworked query docs.

	* gst/gstquery.c: (gst_query_new_formats),
	(gst_query_list_add_format), (gst_query_set_formats),
	(gst_query_set_formatsv), (gst_query_parse_formats_length),
	(gst_query_parse_formats_nth):
	* gst/gstquery.h:
	Flesh out formats query, added some new methods.
	Fix part of #324398.

	* tests/check/gst/gstquery.c: (GST_START_TEST), (gstquery_suite):
	Added query creation tests.

2006-02-14  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (fixate_value):
	Add a default fixation for fraction lists.

2006-02-13  Wim Taymans  <wim@fluendo.com>

	* gst/gsttask.c: (gst_task_init), (gst_task_func),
	(gst_task_set_lock), (gst_task_start), (gst_task_pause),
	(gst_task_join):
	* gst/gsttask.h:
	Detect and warn for obvious deadlocks. fixes #320340
	Fix error case where lock was not released.

	* tests/check/Makefile.am:
	* tests/check/gst/gsttask.c: (task_func2), (GST_START_TEST),
	(task_func), (gst_element_suite), (main):
	Add task check.

2006-02-13  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbus.c:
	Add new functions to docs.

2006-02-13  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Updated TODO list, basesrc supports seeking to non-bytes
	formats.

	* docs/design/part-element-sink.txt:
	Update docs.

	* gst/gstbin.c: (bin_replace_message),
	(gst_bin_handle_message_func):
	* gst/gstbus.c: (gst_bus_post), (gst_bus_pop):
	* gst/gstevent.c: (gst_event_finalize):
	* gst/gstpad.c: (gst_pad_event_default_dispatch),
	(gst_pad_send_event):
	Use shiny new _TYPE_NAME macros.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Move debug statement up.

	* gst/gstelement.c: (gst_element_set_locked_state):
	Add some debugging.

2006-02-13  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstmessage.h:
	* gst/gstquery.h:
	  New API: add GST_MESSAGE_TYPE_NAME and GST_QUERY_TYPE_NAME
	  macros (#330906). Also, document the already existing
	  GST_QUERY_TYPE macro.

2006-02-13  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstutils.c: (data_probe), (buffer_probe),
	(event_probe), (GST_START_TEST):
	Only events up to the pipeline EOS are counted, there are
	some more when going to NULL currently which we don't care
	about for now.

2006-02-13  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_send_event):
	Correctly check flushing and emit probes. fixes #330125

2006-02-10  Andy Wingo  <wingo@pobox.com>

	* gst/gstbus.c (gst_bus_class_init): Declare our private data
	structure.
	(gst_bus_init): Cache the location of the private data in the
	instance structure.
	(gst_bus_enable_sync_message_emission) 
	(gst_bus_disable_sync_message_emission): Implement new public
	functions.
	(gst_bus_post): Emit the sync-message signal if the user asked for
	it. Fixes #330684.

	* gst/gstbus.h (GstBus): Use a padding pointer to cache the
	location of the bus-private structure.
	(gst_bus_enable_sync_message_emission)
	(gst_bus_disable_sync_message_emission): API addition

2006-02-10  Jan Schmidt  <thaytan@mad.scientist.com>

	Patch by: Vincent Torri

	* docs/pwg/building-boiler.xml:
	PWG patch from #326800

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

	* configure.ac:
	* docs/Makefile.am:
	* docs/design/Makefile.am:
	  Dist design docs.

2006-02-08  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	  back to CVS

=== release 0.10.3 ===

2006-02-08  Jan Schmidt <thaytan@mad.scientist.com>

	* configure.ac:
	  releasing 0.10.3, "Like a virgin"

2006-02-08  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	  2nd prerelease of 0.10.3
	  Bump libtool versioning.

2006-02-07  Andy Wingo  <wingo@pobox.com>

	* libs/gst/base/gstcollectpads.c (gst_collect_pads_chain): Only
	update last_stop if we're in TIME format and the timestamp is
	valid.

	* libs/gst/base/gstcollectpads.c (gst_collect_pads_event) 
	* libs/gst/base/gstbasetransform.c (gst_base_transform_eventfunc): 
	* libs/gst/base/gstbasesink.c (gst_base_sink_configure_segment):
	If we get a new newsegment with a different format, adapt
	accordingly.

	* gst/gstclock.c (gst_clock_set_calibration): Accept a numerator
	of 0. Not a problem, really.

	* libs/gst/base/gstbasesink.c (gst_base_sink_chain_unlocked): Only
	warn if sync=true.

2006-02-06  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	  Prelease of 0.10.3

2006-02-06  Sebastien Moutte  <sebastien@moutte.net>

	* win32/vs7:
	  project files updated to the default vs7 configuration
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	  added new symbols,
	  removed empty lines,
	  sorted all exported symbols alphabetically
	* win32/common/dirent.c:
	* win32/common/dirent.h:
	* win32/common/gchar.h:
	  use windows line end.
	  
2006-02-06  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_change_state):
	  Send EOS event when stopping.

2006-02-06  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/README:
	  Tell folks what to do if the plugin-foobar.xml file
	  hasn't been generated for a newly-added plugin.

2006-02-05  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
	(gst_collect_pads_add_pad), (gst_collect_pads_remove_pad),
	(gst_collect_pads_start), (gst_collect_pads_stop),
	(gst_collect_pads_event): Collectpads now holds a reference
	to the GstPad that was added. Indeed we don't want to look
	at pads that might just go away with no warning...

2006-02-05  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_add_pad),
	(gst_collect_pads_start), (gst_collect_pads_stop),
	(gst_collect_pads_event), (gst_collect_pads_chain):
	* libs/gst/base/gstcollectpads.h: Handle flush. Adapted from
	Mark Nauwelaerts's patch on bug #328491.

2006-02-04  Tim-Philipp Müller  <tim at centricular dot net>

	* tests/check/gst/gstutils.c: (test_parse_bin_from_description),
	(gst_utils_suite):
	  Add some simple tests for gst_parse_bin_from_description() and
	  gst_bin_find_unconnected_pad() (#329069).

2006-02-04  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.c: (event_loop), (main):
	  Catch errors during preroll (#320084).

2006-02-03  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_activate):
	  Post TYPE_NOT_FOUND error message when typefinding
	  is unsuccessful in the activate function as well.

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

	* docs/design/part-element-sink.txt:
	Updated doc.

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

	* libs/gst/base/gstbasesink.c: (gst_base_sink_do_sync),
	(gst_base_sink_render_object),
	(gst_base_sink_queue_object_unlocked):
	Only keep track of prerollable items when we are 
	prerolling.
	Before rendering after preroll, always check if we
	have queued items.
	Added some more debugging.

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

	* gst/gstelement.c: (gst_element_continue_state),
	(gst_element_set_state_func), (gst_element_change_state):
	Fixed #326576, been running this for quite some time with
	no regressions at all.

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

	* common/gst.supp:
	Added more suppressions

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

	* docs/design/part-element-sink.txt:
	Updated document.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_finalize), (gst_base_sink_preroll_queue_flush),
	(gst_base_sink_configure_segment), (gst_base_sink_commit_state),
	(gst_base_sink_get_sync_times), (gst_base_sink_wait_clock),
	(gst_base_sink_do_sync), (gst_base_sink_render_object),
	(gst_base_sink_preroll_object),
	(gst_base_sink_queue_object_unlocked),
	(gst_base_sink_queue_object), (gst_base_sink_event),
	(gst_base_sink_chain_unlocked), (gst_base_sink_chain),
	(gst_base_sink_loop), (gst_base_sink_activate_pull),
	(gst_base_sink_get_position), (gst_base_sink_change_state):
	* libs/gst/base/gstbasesink.h:
	Totally refactored matching the design doc.
	Use two segments, one to clip incomming buffers and another to
	perform sync.
	Handle queueing correctly, bypass the queue when playing.
	Make EOS cancelable.
	Handle errors correctly when operating in pull based mode.

	* tests/check/elements/fakesink.c: (GST_START_TEST),
	(fakesink_suite):
	Added new check for sinks.

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

	* gst/gstsegment.c: (gst_segment_clip):
	No reason to refuse to clip when start == -1

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

	* docs/README:
	* docs/manual/intro-basics.xml:
	* docs/manual/intro-preface.xml:
	* docs/manual/manual.xml:
	* docs/pwg/advanced-dparams.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/intro-preface.xml:
	* docs/pwg/pwg.xml:
	  describe dparams (controller) for plugins
	  unify docs a little more

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstutils.c: (element_find_unconnected_pad),
	(gst_bin_find_unconnected_pad), (gst_parse_bin_from_description):
	* gst/gstutils.h:
	  Add new API: gst_parse_bin_from_description() and
	  gst_bin_find_unconnected_pad() (#329069).

2006-02-01  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/README:
	  uncover a nasty detail of the docs build

2006-01-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_remove_messages), (bin_query_duration_done):
	Don't cache duration messages if we're not going to use or
	free them.

2006-01-31  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/advanced-dparams.xml:
	* docs/pwg/advanced-dparams.xml:
	  more dparam docs
	* gst/gstindex.c:
	  fix docs
	* libs/gst/controller/lib.c: (gst_controller_init):
	  init just once

2006-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_message_full):
	  also show file/line/func if no additional debug was given

2006-01-31  Sebastien Moutte  <sebastien@moutte.net>
	
	* win32/vs7/grammar.vcproj:
	  activate copy of autogenerated files for Release mode

2006-01-30  Sebastien Moutte  <sebastien@moutte.net>
	
	* win32/common/libgstreamer.def:
	  export gst_value_compare

2006-01-30  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/Makefile.am:
	* plugins/elements/gstelements.c:
	* plugins/elements/gstfdsink.c: (_do_init),
	(gst_fd_sink_base_init), (gst_fd_sink_class_init),
	(gst_fd_sink_init), (gst_fd_sink_dispose), (gst_fd_sink_query),
	(gst_fd_sink_render), (gst_fd_sink_check_fd), (gst_fd_sink_start),
	(gst_fd_sink_stop), (gst_fd_sink_unlock), (gst_fd_sink_update_fd),
	(gst_fd_sink_set_property), (gst_fd_sink_uri_get_type),
	(gst_fd_sink_uri_get_protocols), (gst_fd_sink_uri_get_uri),
	(gst_fd_sink_uri_set_uri), (gst_fd_sink_uri_handler_init):
	* plugins/elements/gstfdsink.h:
	Port fdsink to 0.10 (patch by Philippe Rouquier) (Fixes #325490)

2006-01-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/manual/advanced-dparams.xml:
	  describe controller
	* docs/manual/advanced-position.xml:
	* docs/manual/basics-init.xml:
	* docs/manual/manual.xml:
	* docs/manual/titlepage.xml:
	* docs/pwg/pwg.xml:
	* docs/pwg/titlepage.xml:
	  cleanup xml (more to come)
	* libs/gst/controller/gstcontroller.c:
	  fix typo

2006-01-30  Sebastien Moutte  <sebastien@moutte.net>
	
	* win32/vs6/grammar.dsp:
	  add autogen of gstmarshal.c,h for Release mode
		
2006-01-30  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_preroll_queue_empty), (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_event),
	(gst_base_sink_is_prerolled), (gst_base_sink_wait),
	(gst_base_sink_do_sync), (gst_base_sink_handle_event),
	(gst_base_sink_handle_buffer), (gst_base_sink_set_flushing),
	(gst_base_sink_deactivate), (gst_base_sink_activate),
	(gst_base_sink_activate_pull), (gst_base_sink_get_position),
	(gst_base_sink_query), (gst_base_sink_change_state):
	Basesink cleanups, remove some old code.
	Handle the case where a subclass can preroll in the render
	method (mostly audiosinks).
	Handle more events.
	Remove some locks around variables that are now protected
	with the PREROLL_LOCK (clock_id, flushing, ..).
	Optimize position query some more, do correct locking.
	Remove old code to push queue in state change, this is not
	needed anymore since preroll blocks on all prerollable items 
	now.
	Almost implemented as described in design doc.

2006-01-30  Wim Taymans  <wim@fluendo.com>

	* tests/check/gst/gstbin.c: (GST_START_TEST):
	Wait for refcount to settle down before checking.

2006-01-30  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-element-sink.txt:
	Pseudo code overview of desired sink behaviour regarding
	preroll.

2006-01-29  Sebastien Moutte  <sebastien@moutte.net>
	* win32/vs6/grammar.dsp:
	  fix some bugs in Release mode for autogenerated files
		
2006-01-29  Sebastien Moutte  <sebastien@moutte.net>
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	  export some new symbols: gst_base_src_set_format,
	  gst_iterator_next, gst_structure_set_valist

2006-01-29  Julien MOUTTE  <julien@moutte.net>

	* gst/gstghostpad.c: (gst_proxy_pad_set_target_unlocked):
	Set pad functions unconditionally. Fixes #329105.

2006-01-29  Sebastien Moutte  <sebastien@moutte.net>
	* win32/vs8:
	  add vs8 project files created by Sergey Scobich

2006-01-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstutils.c: (gst_element_unlink_pads):
	Don't leak pad references.

	* tests/check/elements/fakesink.c: (GST_START_TEST):
	* tests/check/generic/sinks.c: (GST_START_TEST):
	* tests/check/generic/states.c: (GST_START_TEST):
	* tests/check/gst/gstbin.c: (GST_START_TEST):
	* tests/check/gst/gstcaps.c: (GST_START_TEST):
	* tests/check/gst/gstelement.c: (GST_START_TEST):
	* tests/check/gst/gstghostpad.c: (GST_START_TEST):
	* tests/check/gst/gstiterator.c: (GST_START_TEST):
	* tests/check/gst/gstvalue.c: (GST_START_TEST):
	Fix a bunch of leaks. Make generic/sinks.c
	use a bit less cpu by slowing the buffer rate
	between fakesrc and fakesink.
	
2006-01-27  Stefan Kost  <ensonic@users.sf.net>
	* gst/gstcaps.c:
	* gst/gstelement.c: (gst_element_send_event):
	* gst/gstevent.c:
	* gst/gstinfo.c:
	* gst/gstiterator.c:
	* gst/gstiterator.h:
	* gst/gstpad.c: (gst_pad_send_event):
	* gst/gststructure.c:
	* gst/gsturi.c:
	* gst/gstutils.c:
	* gst/gstvalue.c:
	* libs/gst/base/gstadapter.c:
	  doc fixes, to link to function, just write gst_cool_function(), don't
	  prefix with '#'

2006-01-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* plugins/elements/gsttee.c: (gst_tee_do_push),
	(gst_tee_handle_buffer):
	Always prefer an actual return value from a src
	pad in place of NOT_LINKED. This means we return
	WRONG_STATE when all src pads are WRONG_STATE
	instead of NOT_LINKED.

	Lock when replacing the last message to prevent
	racing with the get_property method.

	Add debug output

2006-01-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* tests/check/Makefile.am:
	* tests/check/gst/gstquery.c: (GST_START_TEST), (gstquery_suite),
	(main):
	Add a very simple check that should have caught the memleak I fixed
	last night (if not for the slice allocator hiding it)

2006-01-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func),
	(gst_bin_remove_func), (gst_bin_handle_message_func),
	(bin_query_duration_fold), (bin_query_generic_fold):
	Clean up references to the clock provider when disposed or when
	handling a clock-lost message from it.

	Unref sinks when performing a query via gst_iterator_fold, as the
	gst_bin_iterate_sinks iterator refs each item. (Fixes #323874)

	* gst/gstclock.c: (gst_clock_class_init), (gst_clock_dispose),
	(gst_clock_set_master):
	Drop our reference to the master clock, if any, when we are disposed.

	* gst/gsttypefindfactory.c: (gst_type_find_factory_dispose):
	Chain up in dispose. 

2006-01-26  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Add some debugging.

2006-01-26  Julien MOUTTE  <julien@moutte.net>

	* plugins/elements/gsttee.c: (gst_tee_do_push),
	(gst_tee_handle_buffer): Apply patch from #328715. Tee now
	handles pad being NOT_LINKED or in WRONG_STATE.

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

	* win32/MANIFEST:
	  more updating

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

	* win32/MANIFEST:
	  remove obsolete entry

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbin.c: (bin_element_is_src), (src_iterator_filter),
	(gst_bin_iterate_sources), (gst_bin_send_event):
	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_send_event):
	* gst/gstevent.c:
	* gst/gstpad.c: (gst_pad_send_event):
	  added code for downstream events, reviewed docs in gstevent.c

2006-01-25  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
	We only query position using the clock in the playing state.
	Query peer in the other cases.
	* win32/common/config.h: Updates.

2006-01-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstsystemclock.c: (gst_system_clock_id_wait_unlocked):
	A clock entry that is scheduled for the exact time of the
	clock is still in time.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync):
	Add some more debug info.

2006-01-23  Sebastien Moutte  <sebastien@moutte.net>

	* win32/vs7:
	  Add new vs7 project files and solution.

2006-01-23  Sebastien Moutte  <sebastien@moutte.net>

	* win32/vs7:
	  all files removed as they were out-dated.

2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/release:
	  update notes
	* gst/gstbin.c: (gst_bin_init):
	* gst/gstbus.c: (gst_bus_new):
	* gst/gstbus.h:
	* gst/gstpipeline.c: (gst_pipeline_init):
	  use gst_bus_new(), improve logging, fix docs
	* win32/common/config.h:
	  update for cvs build

2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh:
	  up required version of automake to 1.7

2006-01-20  Sebastien Moutte  <sebastien@moutte.net>

	* win32/common/libgstreamer.def:
	  export gst_buffer_is_metadata_writable

2006-01-20  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstevent.h:
	  Add gst_event_replace() (#327001)

2006-01-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked):
	Make it actually compile too..

2006-01-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c:
	Clarify behaviour of _is_equal() when passing NULL parameters.

	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked),
	(gst_pad_set_caps):
	Cleanups. Don't unref NULL caps.
	When setting the same caps, protect caps of the pad with
	proper lock.
	Use full functionality of _is_equal() when comparing caps.

2006-01-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_is_collected):
	Don't loop infinitely if there are no buffers to present. Partially
	fixes #327197, but collectpads is just broken for reusing elements
	to do multiple encodes atm.

2006-01-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* tools/gst-inspect.c: (print_element_features):
	* tools/gst-xmlinspect.c: (main):
	URL_HANDLER is not a plugin feature we can search for in
	the registry.

2006-01-19  Edward Hervey  <edward@fluendo.com>

	* gst/gstelement.c: (gst_element_pads_activate): 
	When activating, do src pads first, then sink pads.
	When de-activating, do sink pads first, then src pads.

2006-01-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	Add gst_index_add_associationv to the docs

2006-01-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstevent.c:
	  Fix docs typo

	* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event),
	(gst_queue_chain), (gst_queue_push_one), (gst_queue_loop):
	  Do some refactoring. Doesn't actually change functionality,
	  but makes landing the DRAIN event easier later.

2006-01-19  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/advanced-scheduling.xml:
	  Update from 0.9.x to 0.10 API and make example a bit
	  clearer.

2006-01-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	Add gst_buffer_(is|make)_metadata_writable methods.

2006-01-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/design/part-sparsestreams.txt:
	Update sparse streams doc, hopefully for greater clarity

2006-01-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/design/part-events.txt:
	Remove mention of FILLER events.
	Add DRAIN event.

	* docs/design/part-sparsestreams.txt:
	Write some things about using NEWSEGMENT to keep sparse streams
	flowing.

2006-01-18  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (gst_bin_dispose):
	  Guard gst_object_unref call against a NULL object (dispose
	  can theoretically be called multiple times).
	  
2006-01-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_element_set_state):
	* gst/gstclock.c: (gst_clock_id_wait):
	Added some more debug info.

	* libs/gst/base/gstadapter.c:
	Added more docs.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync), (gst_base_sink_chain):
	Added some comments.

2006-01-18  Wim Taymans  <wim@fluendo.com>

	* tests/check/Makefile.am:
	* tests/check/elements/fakesink.c: (chain_async_buffer),
	(chain_async), (chain_async_return), (GST_START_TEST),
	(fakesink_suite), (main):
	Added fakesink test that checks prerolling and clipping
	behaviour.

	* tests/check/gst/gstutils.c: (GST_START_TEST):
	Make check run faster so that buildbots don't timeout.

2006-01-18  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync):
	Some cleanups.
	When the sink finishes blocking on the preroll buffer, it can
	immediatly render it instead of rendering when the next buffer
	arrives.

2006-01-18  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstbasesink.c: (gst_base_sink_set_property),
	(gst_base_sink_get_property), (gst_base_sink_do_sync),
	(gst_base_sink_chain):
	Small cleanups.
	GST_ELEMENT_CLOCK and sync are protected with LOCK.
	Don't store _last_stop if the buffer is dropped.

2006-01-18  Tim-Philipp Müller  <tim at centricular dot net>

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_class_init):
	  'have-type' signal needs to be G_SIGNAL_RUN_FIRST, as it is the
	  object method handler that sets the caps on the pad and we want
	  that to happen before we emit the signal (fixes e.g. feeding a
	  plain text file to decodebin).

2006-01-18  Christian Schaller  <Christian@fluendo.com>

	* gst/gstplugin.c: Add MPL and Proprietary as license options

2006-01-18  Andy Wingo  <wingo@pobox.com>

	* gst/gstindex.h (gst_index_add_associationv): Add to header. The
	symbol was exported before, it appears this was just an oversight.
	Fixes #168703.
	Patch by: Torsten Schoenfeld <kaffeetisch at gmx.de>

	* gst/gstindex.c (gst_index_add_associationv): Changed int in
	prototype to gint. OK since this prototype was not in the header.

2006-01-17  Andy Wingo  <wingo@pobox.com>

	* gst/gstregistry.c (_gst_registry_remove_cache_plugins): Lock the
	registry while we remove plugins.

	* tools/gst-inspect.c (print_element_info): Don't unref the
	factory arg, that should be the responsibility of whatever code
	received the ref. Fixes a double-free when called from
	print_element_list via gst-inspect-0.10 -a. Fixes #327324.
	(main): Unref the factory if we have one.
	(print_element_list): No change -- relies on the
	plugin_feature_list_free to free the list of features.

2006-01-17  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbuffer.c: (gst_buffer_is_metadata_writable),
	(gst_buffer_make_metadata_writable):
	* gst/gstbuffer.h:
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_prepare_buf):
	* tests/check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	  Replace gst_buffer_(make|is)_metadata_writable patch now
	  that the release is out.

2006-01-17  Andy Wingo  <wingo@pobox.com>

	* gst/gstregistry.c: Reflow design comment. Update so as to speak
	in the present tense without reference to versions.

	* gst/gstregistry.c (gst_registry_add_plugin)
	(gst_registry_remove_plugin, gst_registry_remove_feature)
	(gst_registry_find_feature, gst_registry_get_feature_list)
	(gst_registry_get_plugin_list, gst_registry_lookup_feature)
	(gst_registry_lookup, gst_registry_scan_path)
	(_gst_registry_remove_cache_plugins)
	(gst_registry_get_feature_list_by_plugin): Add argument
	validation.

=== release 0.10.2 ===

2006-01-16  Thomas Vander Stichele <thomas at apestaart dot org>

	* configure.ac:
	  releasing 0.10.2, "If man is five"

2006-01-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbuffer.c:
	* gst/gstbuffer.h:
	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_prepare_buf):
	* tests/check/gst/gstbuffer.c: (gst_test_suite):
	  Back out patch until after the release.

2006-01-16  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstminiobject.c:
	  Spelling fix in docs.
	* ChangeLog - remove conflict indicator

2006-01-16  Jan Schmidt  <thaytan@mad.scientist.com>

	Reviewed By: Andy Wingo

	* gst/gstbuffer.c: (gst_buffer_is_metadata_writable),
	(gst_buffer_make_metadata_writable):
	* gst/gstbuffer.h:
	  Add gst_buffer_(is|make)_metadata_writable as analogues of
	  gst_buffer_(is|make)_writable.

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_prepare_buf):
	  Use name gst_buffer_(is|make)_metadata_writable functions.

	* tests/check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	  Test gst_buffer_(is|make)_metadata_writable
	
	  (Closes: #324162)

2006-01-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/Makefile.am:
	  don't do parallel make
	* configure.ac:
	  AC_SUBST HOST_CPU
	* win32/common/config.h.in:
	  add generations for HOST_CPU and GST_MAJORMINOR
	* win32/common/config.h:
	  commit generated result

2006-01-13  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/appendix-integration.xml:
	  Update GNOME integration section to use gst_init_get_option_group()
	  instead of the old popt stuff (#322911). Also, GNOME applications
	  should  now use gconf*sink and gconf*src instead of the old gconf
	  helper lib we had.

2006-01-13  Stefan Kost  <ensonic@users.sf.net>


	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/libs/gstreamer-libs-sections.txt:
	  add new API entries to the docs
	* libs/gst/controller/Makefile.am:
	* libs/gst/controller/gstcontroller.c:
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstcontrollerprivate.h:
	* libs/gst/controller/gsthelper.c:
	* libs/gst/controller/gstinterpolation.c:
	  move private structs to private header
	* po/README:
	  gstreamer-0.7 -> gstreamer-0.10
	* tests/check/libs/struct_i386.h:
	  remove private structs

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

	* plugins/indexers/Makefile.am:
	  Fixes as part of #317048

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

	* plugins/indexers/Makefile.am:
	  fix #316086 - compilation when mmap is missing

2006-01-12  Sebastien Moutte  <sebastien@moutte.net>

	* libs/gst/base/gstbasesink.c:
	  *cur = (now - base) * basesink->segment.abs_rate + time; replaced by 
	  *cur = gst_guint64_to_gdouble(now - base) * basesink->segment.abs_rate + time; for vs6
	* win32/common/config.h:
	  added some defines GST_MAJORMINOR and HOST_CPU
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	  added some exported functions.

2006-01-12  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstinterpolation.c:
	(interpolate_none_get_string_value_array):
	  make G_TYPE_STRING controlable

2006-01-12  Stefan Kost  <ensonic@users.sf.net>

	* tools/README:
	* tools/gst-feedback.1.in:
	* tools/gst-inspect.1.in:
	* tools/gst-launch.1.in:
	* tools/gst-md5sum.1.in:
	* tools/gst-typefind.1.in:
	* tools/gst-xmlinspect.1.in:
	* tools/gst-xmllaunch.1.in:
	  cleanup man-pages, remove reference to gst-register, document env-vars

2006-01-12  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbuffer.c: (gst_buffer_span):
	  gst_buffer_span should copy the timestamp of the first buffer
	  if they were both originally overlapping subbuffers of the 
	  same parent, using the same logic as the 'slow copy' case.

2006-01-11  Jan Schmidt  <thaytan@mad.scientist.com>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_pop):
	  Need to awaken ALL the pads when we pop a buffer, otherwise
	  collectpads only works when there is 2 input streams.

2006-01-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/media-device-daemon.txt:
	  more ideas (dbus)
	* gst/gstbuffer.c:
	  fix doc example, add clarification
	* tools/gst-launch.1.in:
	  add initial info about GST_PLUGIN_PATH, needs more work

2006-01-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/basics-bins.xml:
	* docs/manual/basics-elements.xml:
	* docs/manual/intro-basics.xml:
	  Some more minor docs additions and updates.

2006-01-11  Wim Taymans  <wim@fluendo.com>

	* docs/manual/basics-bins.xml:
	* docs/manual/basics-elements.xml:
	Some small fixes as pointed out by Ser-ver on IRC.

2006-01-10  Edward Hervey  <edward@fluendo.com>

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	Set the buffer offset/offset_end to GST_CLOCK_TIME_NONE when using
	the single-segment mode.

2006-01-10  Brian Cameron  <brian dot cameron at sun dot com>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstbasesrc.c: (gst_base_src_init),
	(gst_base_src_perform_seek), (gst_base_src_send_event),
	(gst_base_src_set_property), (gst_base_src_get_property),
	(gst_base_src_loop), (gst_base_src_start),
	(gst_base_src_activate_push):
	* libs/gst/base/gstbasesrc.h:
	  Name (private) union; makes Sun's Forte compiler happy (#324900).

2006-01-09  Tim-Philipp Müller  <tim at centricular dot net>

	* README:
	  gst-register is gone.

2006-01-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstvalue.c: (_gst_value_initialize):
	  make the G_TYPE_DATE instantiation work if debug is disabled

2006-01-06  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstmessage.c: (gst_message_parse_tag),
	(gst_message_parse_error), (gst_message_parse_warning):
	  Don't crash when return location for error/warning debug
	  string is NULL; add fact that return locations can be
	  NULL to docs where appropriate.

2006-01-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstplugin.c: (gst_plugin_load_file):
	Replace strdup by g_strdup.

2006-01-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/advanced-types.xml:
	  fix doc borkage

2006-01-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	submitted by: Abel Cheung

	* po/LINGUAS:
	* po/zh_TW.po:
	  Added Chinese (traditional) translation

2006-01-04  Wim Taymans  <wim@fluendo.com>

	* docs/manual/basics-pads.xml:
	* docs/plugins/Makefile.am:
	* docs/plugins/gstreamer-plugins-docs.sgml:
	* docs/plugins/gstreamer-plugins-sections.txt:
	* docs/pwg/advanced-clock.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-types.xml:
	* plugins/elements/gstfdsink.c:
	* plugins/elements/gstfdsrc.c:
	* plugins/elements/gstfdsrc.h:
	* plugins/elements/gstidentity.c: (gst_identity_class_init):
	* plugins/elements/gstidentity.h:
	* plugins/elements/gstqueue.h:
	* plugins/elements/gsttee.c:
	* plugins/elements/gsttee.h:
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_class_init):
	* plugins/elements/gsttypefindelement.h:
	Small updates to various docs.
	Added core plugins to docs.

2006-01-03  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* common/gst.supp:
	  add a suppression for liboil's uninitialized variable

2006-01-02  James Livingston  <jrl at ids dot org dot au>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.h:
	  Add prototype for _get_type() function to GST_BOILERPLATE_FULL
	  macro, so that gcc doesn't complain if the -Wmissing-prototypes
	  compiler switch is being used (#325429).

2005-12-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (gst_bin_query):
	  Disable duration query caching in bins until it gets
	  fixed (see #324807).

2005-12-27  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c: (print_element_properties_info):
	  Handle properties of POINTER and BOXED type.

2005-12-27  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_post):
	  Init tags stuff and some other things before loading
	  any static plugins (there may be other static plugins
	  than just the GStreamer ones, and they may want to
	  register their own tags or formats or whatever, and
	  preferably without segfaulting).

	* plugins/elements/gstqueue.c: (gst_queue_handle_src_query):
	  Print at least a warning in the debug logs if we drop a
	  query just because we don't know how to adjust the value
	  in the particular format.

2005-12-24  David Schleef  <ds@schleef.org>

	* tools/gstreamer-completion:
	  Replacement for gst-complete written in sh and sed.  Only
	  completes names of features, but that's 90% of what I want
	  it for.  Properties are not available in registry.xml.  (Maybe
	  they should be...)

=== release 0.10.1 ===

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

	* configure.ac:
	  releasing 0.10.1, "Nollaig chridheil"

2005-12-22  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/cvs.xml:
	  Add missing quote, should be make ERROR_CFLAGS="".

2005-12-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-trickmodes.txt:
	More documentation on trickmodes.

2005-12-20  Edward Hervey  <edward@fluendo.com>

	* gst/gstcaps.c: (gst_static_caps_get_type):
	* gst/gstcaps.h:
	  API addition: GST_TYPE_STATIC_CAPS
	Added gpointer GType for GstStaticCaps so we can wrap them in bindings.
	* gst/gstpadtemplate.c: (gst_static_pad_template_get_type):
	* gst/gstpadtemplate.h:
	  API addition: GST_TYPE_STATIC_PAD_TEMPLATE
	Added gpointer GType for GstStaticPadTemplate so we can wrap them in
	bindings.

2005-12-18  Wim Taymans  <wim@fluendo.com>

	* libs/gst/base/gstadapter.c:
	* libs/gst/base/gstadapter.h:
	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_get_position):
	* libs/gst/base/gstbasesink.h:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_default_query), (gst_base_src_default_do_seek),
	(gst_base_src_do_seek), (gst_base_src_perform_seek),
	(gst_base_src_send_event), (gst_base_src_update_length),
	(gst_base_src_get_range), (gst_base_src_loop),
	(gst_base_src_start):
	* libs/gst/base/gstbasesrc.h:
	* libs/gst/base/gstbasetransform.h:
	* libs/gst/base/gstcollectpads.h:
	* libs/gst/base/gstpushsrc.c:
	* libs/gst/base/gstpushsrc.h:
	* libs/gst/dataprotocol/dataprotocol.c:
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/net/gstnetclientclock.h:
	* libs/gst/net/gstnettimeprovider.h:
	Documentation updates.

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

	* docs/manual/basics-helloworld.xml:
	  Remove superfluous closing bracket in helloworld example.

2005-12-17  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.1.in:
	  Update gst-launch man page; add a section with useful
	  environment variables. Fixes #323882.

2005-12-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gst.c:
	* gst/gst_private.h:
	  change some char* into char[]

2005-12-16  Wim Taymans  <wim@fluendo.com>

	* gst/gstregistryxml.c: (load_feature):
	Cleanups.
	Don't use g_object_unref on GstObjects so that we avoid
	leaks on unsafe glibs.

2005-12-16  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_recalc_state):
	Small doc updates.

2005-12-16  Wim Taymans  <wim@fluendo.com>

	* common/check.mak:
	Added make forever target for check.

2005-12-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_post):
	  make the registry cache file HOST_CPU-dependent

2005-12-16  Andy Wingo  <wingo@pobox.com>

	* plugins/elements/gstbufferstore.c
	(gst_buffer_store_cleared_func): Pay attention to g_list_append
	return value.

	* tests/check/gst/gstobject.c
	(test_fake_object_name_threaded_unique): Pay attention to
	g_list_sort return value.

2005-12-16  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-feedback-m.m:
	  Update for 0.9/0.10 (fixes #323870).

2005-12-15  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstminiobject.c: (gst_value_mini_object_lcopy):
	  Fix lcopy for mini objects, the mini object needs to be ref'ed.
	  
	* tests/check/gst/gstminiobject.c: (my_foo_init),
	(my_foo_get_property), (my_foo_set_property), (my_foo_class_init),
	(test_value_collection), (gst_mini_object_suite):
	  Add test to ensure refcounts end up as expected when passing
	  GstMiniObjects through g_object_get() and g_object_set().

2005-12-14  Julien MOUTTE  <julien@moutte.net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
	(gst_collect_pads_remove_pad), (gst_collect_pads_is_collected),
	(gst_collect_pads_event), (gst_collect_pads_chain): Refactoring
	of collectpads. This version removes a lot of races without
	touching API/ABI. Yay !

2005-12-14  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_activate_pull), (gst_pad_link_prepare):
	  Don't allow activation of a srcpad in pull_range if it has no
	  getrange function.
	  Change some debug statements to be a little clearer

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_handle_src_query):
	  Check that we have a peer before executing queries thereupon.

	* tests/examples/metadata/read-metadata.c: (message_loop):
	  Use gst_bus_pop instead of gst_bus_poll when we just want it to
	  immediately return us any available message with 0 timeout.

2005-12-12  Michael Smith  <msmith@fluendo.com>

	* gst/gsttypefindfactory.c: (gst_type_find_factory_call_function):
	  Don't unref factories after calling them.
	* libs/gst/base/gsttypefindhelper.c: (gst_type_find_helper):
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_chain):
	  Free lists of factories after using them. Fixing typefinding memory
	  leaks.

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

	* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
	(gst_plugin_feature_load):
	  more meaningful debug output
	* configure.ac:
	* tests/Makefile.am:
	* tests/old/examples/Makefile.am:
	  make make distcheck happy again

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

	* plugins/elements/gsttypefindelement.c: (stop_typefinding):
	  Catch the special case where we are operating chain-based,
	  but the downstream peer pad has no chain function. Emit a
	  custom error message in this case instead of letting the
	  core generate one implying that this is some sort of core
	  bug. It's not, it just means that whatever got plugged
	  into the pipeline downstream when we announced the type
	  can only operate pull-based, while our source can only
	  operate push-based (e.g. http://foo/bar.mov ! qtdemux ! ...)
	  Error string has not been marked for translation yet, as
	  it probably needs some more work first.

	(gst_type_find_element_get_best_possibility):
	  Add helper function to find the best of all available
	  found possibilities that qualify given the min. threshold.

	(gst_type_find_element_handle_event):
	  Fix the case where we get an EOS while still in TYPEFIND
	  mode (we want to chose the best of all possible types,
	  not just the first type that happens to be in our unsorted
	  list of possible types).

	(gst_type_find_element_chain):
	  Make sure we return GST_FLOW_ERROR when we errored out
	  in stop_typefinding(); also, don't just find the best of
	  all found type entries and then use the last examined
	  type entry, but actually use the best entry.

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

	* tests/examples/typefind/typefind.c: (type_found):
	* tests/examples/xml/runxml.c: (xml_loaded):
	  More gcc4 fixes and a mem leak fix.

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

	* tests/examples/xml/createxml.c: (object_saved):
	  gcc 4 fixes

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

	* tests/Makefile.am:
	  enable the examples even more

2005-12-12  Andy Wingo  <wingo@pobox.com>

	* libs/gst/net/gstnettimeprovider.c
	(gst_net_time_provider_class_init, gst_net_time_provider_init)
	(gst_net_time_provider_set_property)
	(gst_net_time_provider_get_property):
	API addition: Export "active" as a GObject property.
	(gst_net_time_provider_thread): Only respond to time queries if
	the time provider is active.

	* libs/gst/net/gstnettimeprovider.h: Add an "active" boolean to
	NetTimeProvider, preserving binary compat.

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

	* tests/examples/controller/audio-example.c: (main):
	* tests/examples/launch/Makefile.am:
	  convert comments again

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

	* libs/gst/base/gstpushsrc.c:
	Fix typo.

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

	* docs/libs/gstreamer-libs-sections.txt:
	Added new symbol to docs.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_set_format),
	(gst_base_src_default_query), (gst_base_src_query),
	(gst_base_src_default_do_seek), (gst_base_src_do_seek),
	(gst_base_src_perform_seek), (gst_base_src_send_event),
	(gst_base_src_default_event), (gst_base_src_event_handler),
	(gst_base_src_set_property), (gst_base_src_get_property),
	(gst_base_src_wait), (gst_base_src_do_sync),
	(gst_base_src_update_length), (gst_base_src_get_range),
	(gst_base_src_check_get_range), (gst_base_src_loop),
	(gst_base_src_default_negotiate), (gst_base_src_start),
	(gst_base_src_activate_push), (gst_base_src_activate_pull),
	(gst_base_src_change_state):
	* libs/gst/base/gstbasesrc.h:
	Implement seeking to other formats than _BYTES.
	Implement more seeking methods correctly.
	Doc updates.
	Added query vmethod.
	Added do_seek vmethod to make life easier for subclasses
	when seeking.
	API addition: gst_base_src_set_format()

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

	* tests/examples/Makefile.am:
	  added that too

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

	* configure.ac:
	* docs/random/ensonic/media-device-daemon.txt:
	* tests/examples/controller/.cvsignore:
	* tests/examples/controller/Makefile.am:
	* tests/examples/controller/audio-example.c: (main):
	* tests/examples/helloworld/.cvsignore:
	* tests/examples/helloworld/Makefile.am:
	* tests/examples/helloworld/helloworld.c: (event_loop), (main):
	* tests/examples/launch/.cvsignore:
	* tests/examples/launch/Makefile.am:
	* tests/examples/launch/mp3parselaunch.c: (event_loop), (main):
	* tests/examples/metadata/.cvsignore:
	* tests/examples/metadata/Makefile.am:
	* tests/examples/metadata/read-metadata.c: (message_loop),
	(make_pipeline), (print_tag), (main):
	* tests/examples/queue/.cvsignore:
	* tests/examples/queue/Makefile.am:
	* tests/examples/queue/queue.c: (event_loop), (main):
	* tests/examples/typefind/.cvsignore:
	* tests/examples/typefind/Makefile.am:
	* tests/examples/typefind/typefind.c: (type_found), (event_loop),
	(main):
	* tests/examples/xml/.cvsignore:
	* tests/examples/xml/Makefile.am:
	* tests/examples/xml/createxml.c: (object_saved), (main):
	* tests/examples/xml/runxml.c: (xml_loaded), (event_loop), (main):
	* tests/old/examples/Makefile.am:
	* tests/old/examples/TODO:
	* tests/old/examples/controller/.cvsignore:
	* tests/old/examples/controller/Makefile.am:
	* tests/old/examples/controller/audio-example.c:
	* tests/old/examples/helloworld/.cvsignore:
	* tests/old/examples/helloworld/Makefile.am:
	* tests/old/examples/helloworld/helloworld.c:
	* tests/old/examples/launch/.cvsignore:
	* tests/old/examples/launch/Makefile.am:
	* tests/old/examples/launch/mp3parselaunch.c:
	* tests/old/examples/launch/mp3play:
	* tests/old/examples/manual/Makefile.am:
	* tests/old/examples/metadata/Makefile.am:
	* tests/old/examples/metadata/read-metadata.c:
	* tests/old/examples/queue/.cvsignore:
	* tests/old/examples/queue/Makefile.am:
	* tests/old/examples/queue/queue.c:
	* tests/old/examples/typefind/.cvsignore:
	* tests/old/examples/typefind/Makefile.am:
	* tests/old/examples/typefind/typefind.c:
	* tests/old/examples/xml/.cvsignore:
	* tests/old/examples/xml/Makefile.am:
	* tests/old/examples/xml/createxml.c:
	* tests/old/examples/xml/runxml.c:
	  applied some simple fixing to some examples
	  re-enabled the working examples

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

	* gst/gstsegment.c: (gst_segment_init),
	(gst_segment_set_last_stop), (gst_segment_set_seek),
	(gst_segment_set_newsegment), (gst_segment_to_stream_time),
	(gst_segment_to_running_time):
	Added more documentation.
	Make sure the last_pos value is updated properly.
	Make sure to_stream_time and to_running_time don't
	operate on wrong values.

	* tests/check/gst/gstsegment.c: (GST_START_TEST):
	Update check.

2005-12-12  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gsttypefindelement.c: (free_entry),
	(gst_type_find_element_chain):
	  Now that we're not leaking factories, make sure we keep references
	  to them while we need them.

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

	* tests/check/gst/struct_i386.h:
	  ifdef out the XML structs

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

	* gst/gstvalue.c: (gst_value_transform_double_fraction):
	  floor is not needed, F is always positive; this obviates the
	  need for adding -lm when building without libxml

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

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
	Take current playback rate into account when reporting
	the position.

2005-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/mime-world.fig:
	  Let's try this again, this time with a file that is
	  actually in XFig format.

2005-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/mime-world.fig:
	  Add audioconvert element to diagram so that it
	  matches the text and the code (fixes #319526).

2005-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/building-chainfn.xml:
	* docs/pwg/building-pads.xml:
	* docs/pwg/building-state.xml:
	* docs/pwg/other-source.xml:
	  Update state change stuff for 0.10 (fixes #322969).

2005-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-dataaccess.xml:
	* docs/manual/appendix-checklist.xml:
	* docs/manual/appendix-programs.xml:
	* docs/manual/basics-pads.xml:
	* docs/manual/highlevel-components.xml:
	* docs/manual/manual.xml:
	  Update for 0.10: s/0.9/0.10/; s/audioscale/audiorsample/;
	  add converters in front of pipelines; remove curly
	  brackets for threads stuff, they no longer exist; use
	  GST_TYPE_FRACTION for framerates; update some pieces of
	  code to 0.10, but there's plenty more to do.

	* docs/manual/appendix-porting.xml:
	  Expand on asynchroneous state changes; s/0.9/0.10/;
	  mention disappearance of gst_init_get_popt_table()
	  (fixes #322916).

2005-12-11  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/faq/using.xml:
	  Spider no longer exists, and neither does gst-launch-ext.
	  Update examples to use decodebin and playbin and put
	  converters in front of sinks (fixes #323726).

2005-12-09  Michael Smith  <msmith@fluendo.com>

	* plugins/elements/gsttypefindelement.c: (find_peek),
	(gst_type_find_element_chain):
	  Fix leaking element factories in typefinding.
	  Fix problem where we forgot about a probable type on non-seekable
	  files, and thus later mis-typefound it.

2005-12-09  Michael Smith  <msmith@fluendo.com>

	* common/m4/gst-makecontext.m4:
	* common/m4/gst-mcsc.m4:
	* configure.ac:
	* win32/common/config.h:
	* win32/common/config.h.in:
	  Remove makecontext stuff; not used in 0.10 and causes problems on
	  HPUX according to bug #322441

2005-12-07  Wim Taymans  <wim@fluendo.com>

	* tests/check/Makefile.am:
	* tests/check/libs/libsabi.c: (GST_START_TEST), (gstabi_suite),
	(main):
	* tests/check/libs/struct_i386.h:
	Added ABI check for libs

2005-12-07  Wim Taymans  <wim@fluendo.com>

	* tests/check/Makefile.am:
	And add the struct_i386.h to dist.

2005-12-07  Wim Taymans  <wim@fluendo.com>

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gstabi.c: (GST_START_TEST), (gstabi_suite),
	(main):
	* tests/check/gst/struct_i386.h:
	Added check for ABI compatibility.

2005-12-07  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init),
	(gst_fake_src_get_times), (gst_fake_src_create):
	Fix broken sync option, fixes #323259

2005-12-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c:
	Small docs update.

	* gst/gstcaps.c: (gst_caps_is_equal):
	Don't assert on NULL <--> X. Fixes #323260

	* gst/gstminiobject.c: (gst_mini_object_replace):
	If we're doing atomic operations, we might just as well use
	the proper way to get an atomic pointer.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
	Clean up debugging.

2005-12-07  Michael Smith  <msmith@fluendo.com>

	* gst/parse/grammar.y:
	  Remove handling of { } for threads.

2005-12-06  David Schleef  <ds@schleef.org>

	* libs/gst/base/gstbasetransform.c: speling fix.

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

	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/random/omega/testing/gstobject.c:
	* gst/gst.c:
	* gst/gstclock.c:
	* gst/gstelement.c:
	* gst/gstelementfactory.c:
	* gst/gsterror.c:
	* gst/gstevent.c:
	* gst/gstghostpad.c:
	* gst/gstinfo.c:
	* gst/gstpadtemplate.c:
	* gst/gstregistryxml.c:
	* gst/gsttaglist.c:
	* gst/gsttagsetter.c:
	* gst/gsttypefind.c:
	* gst/gstvalue.c:
	* libs/gst/base/gstbasesrc.c:
	* libs/gst/net/gstnetclientclock.c:
	* libs/gst/net/gstnettimeprovider.c:
	* plugins/elements/gstfakesrc.c:
	* plugins/elements/gstfdsrc.c:
	* plugins/elements/gstfilesrc.c:
	* plugins/elements/gstidentity.c:
	* plugins/elements/gstqueue.c:
	* plugins/elements/gsttypefindelement.c:
	* plugins/indexers/gstfileindex.c:
	* plugins/indexers/gstmemindex.c:
	* tests/check/gst/gsttag.c:
	* tests/old/examples/cutter/cutter.c:
	* tests/old/examples/mixer/mixer.c:
	* tests/old/examples/xml/runxml.c: (main):
	* tests/old/testsuite/caps/normalisation.c:
	* tests/old/testsuite/debug/global.c:
	* tests/old/testsuite/parse/parse1.c:
	* tools/gst-xmlinspect.c:
	* win32/common/dirent.c:
	  expand tabs

=== release 0.10.0 ===

2005-12-05  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* configure.ac:
	  releasing 0.10.0, "Maroilles"

2005-12-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	submitted by: Funda Wang <fundawang@linux.net.cn>

	* po/LINGUAS:
	* po/zh_CN.po:
	  added Chinese (Traditional) translation

2005-12-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/random/thomasvs/TODO:
	* gst/gstutils.c:
	* gst/gstutils.h:
	  fix docs

2005-12-05  Andy Wingo  <wingo@pobox.com>

	patch by: Wim Taymans <wim@fluendo.com>

	* libs/gst/base/gstbasetransform.c
	(gst_base_transform_prepare_output_buf)
	(gst_base_transform_buffer_alloc):
	* plugins/elements/gstqueue.c (gst_queue_bufferalloc): Call
	alloc_buffer_and_set_caps.

	* gst/gstpad.c (gst_pad_alloc_buffer): Changed to not call
	set_caps on the source pad.
	(gst_pad_alloc_buffer_and_set_caps): New function, does what
	alloc_buffer used to do. Fixes #322874.

	* docs/gst/gstreamer-sections.txt: 
	* docs/design/part-negotiation.txt: 
	* docs/pwg/advanced-negotiation.xml: Update for the alloc_buffer
	changes.

2005-12-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Sebastien Moutte

	* win32/MANIFEST:
	* win32/common/config.h.in:
	* win32/vs6/libgstcontroller.dsp:
	  win32 build fixes

2005-12-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_is_equal):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init),
	(gst_fake_src_create):
	Back out previous code changes, leave doc updates, file bugs 
	instead. 

2005-12-05  Wim Taymans  <wim@fluendo.com>

	* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init),
	(gst_fake_src_get_times), (gst_fake_src_create):
	* plugins/elements/gstfakesrc.h:
	Fix broken sync code.

2005-12-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_caps_is_equal):
	Comparing NULL against !NULL yields different caps, not a
	failure.

2005-12-05  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c:
	Fix small typo in docs.

2005-12-05  Andy Wingo  <wingo@pobox.com>

	patch by: Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c (init_post): remove hard-coded 0.9 location for
	registries/plugins with a MAJORMINOR one.
	(plugin_desc): Rename library from gstcoreleements to
	staticelements. Fixes #323222.

2005-12-05  Tim-Philipp Müller  <tim at centricular dot net>

	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init):
	  Change debug category to 'collectpads' from 'collect_pads'
	  (fixes #323250).

2005-12-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Sebastien Moutte

	* libs/gst/controller/gstinterpolation.c:
	  use convert function for uint64/double
	* win32/vs6/libgstcontroller.dsp:
	  link to GLib

2005-12-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstutils.c: (gst_util_guint64_to_gdouble),
	(gst_util_gdouble_to_guint64), (gst_util_uint64_scale_int64):
	* gst/gstutils.h:
	* tests/check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	  add tests that seem to show that the guint64/gdouble conversions
	  are correct.

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

	* gst/gstregistry.c: (gst_registry_add_path):
	* gst/gstregistry.h:
	* gst/gstregistryxml.c:
	Fix docs again.

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

	* gst/gstutils.c: (gst_util_uint64_scale_int64),
	(gst_util_uint64_scale_int):
	Small cleanup.

	* libs/gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	Add debug log line.

	* libs/gst/base/gstbasetransform.c: (gst_base_transform_event):
	Add FIXME.

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

	* win32/MANIFEST:
	* win32/common/config.h:
	* win32/vs6/gstreamer.dsw:
	* win32/vs6/libgstcoreelements.dsp:
	* win32/vs6/libgstelements.dsp:
	  renamed core elements plugin

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

	* tools/gst-run.c: (compare_major_minor), (find_highest_version),
	(get_candidates):
	  do piece-wise major/minor comparison so 0.9 < 0.10
	  also allow .exe extensions for tools

2005-12-02  Michael Smith  <msmith@fluendo.com>

	* gst/gst.c:
	  Escape a % to make gtkdoc happier; bug 322958.

=== release 0.9.7 ===

2005-12-01  Thomas Vander Stichele <thomas (at) apestaart (dot) org>

	* configure.ac:
	  releasing 0.9.7, "My Dog Has No Nose"

2005-12-01  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* common/gst-xmlinspect.py:
	* configure.ac:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/random/release:
	* po/af.po:
	* po/az.po:
	* po/bg.po:
	* po/ca.po:
	* po/cs.po:
	* po/de.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/it.po:
	* po/nb.po:
	* po/nl.po:
	* po/ru.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	* win32/common/config.h:
	* win32/common/config.h.in:
	* win32/vs6/gst_inspect.dsp:
	* win32/vs6/gst_launch.dsp:
	* win32/vs6/libgstbase.dsp:
	* win32/vs6/libgstelements.dsp:
	* win32/vs6/libgstreamer.dsp:
	* win32/vs7/GStreamer.vcproj:
	* win32/vs7/gst-inspect.vcproj:
	* win32/vs7/gst-launch.vcproj:
	* win32/vs7/libgstbase.vcproj:
	  bump GST_MAJORMINOR to 0.10
	  reset libtool version

2005-12-01  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* po/LINGUAS:
	* po/bg.po:
	  Added Bulgarian translation by (Alexander Shopov)

2005-12-01  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* tests/check/gst/gstplugin.c:
	  fix test

2005-12-01  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* common/gst-xmlinspect.py:
	* common/gtk-doc-plugins.mak:
	* configure.ac:
	* docs/Makefile.am:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/gstreamer.types.in:
	* docs/plugins/Makefile.am:
	* docs/plugins/gstreamer-plugins-docs.sgml:
	* docs/plugins/gstreamer-plugins-sections.txt:
	* docs/plugins/gstreamer-plugins.types:
	* docs/plugins/inspect.stamp:
	* docs/plugins/inspect/plugin-coreelements.xml:
	* docs/plugins/inspect/plugin-coreindexers.xml:
	* docs/plugins/scanobj-build.stamp:
	* gstreamer.spec.in:
	* plugins/elements/Makefile.am:
	* plugins/elements/gstelements.c:
	* plugins/elements/gstfakesink.c:
	* plugins/elements/gstfakesrc.c:
	* plugins/elements/gstfilesink.c:
	* plugins/elements/gstfilesrc.c:
	* plugins/elements/gstqueue.c:
	* plugins/indexers/Makefile.am:
	* plugins/indexers/gstindexers.c:
	  document core plugins in a separate document just like all the
	  others
	  rename these plugins to something starting with core

2005-12-01  Andy Wingo  <wingo@pobox.com>

	* gst/gstevent.h (struct _GstEvent): Meant to remove the extra
	padding here before, but it missed the commit.

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

	* libs/gst/controller/gstinterpolation.c:
	  whitespace prices have crashed, we should feel free to use some now
	  use gst_guint64_to_gdouble

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

	* libs/gst/controller/gstcontroller.c:
	* libs/gst/controller/gsthelper.c:
	* libs/gst/controller/gstinterpolation.c:
	* libs/gst/controller/lib.c:
	  wrap config.h include

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

	* docs/gst/gstreamer-sections.txt:
	  update docs

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

	* plugins/elements/gstelements.c:
	* plugins/elements/gstfdsink.c: (gst_fd_sink__base_init),
	(gst_fd_sink__class_init), (gst_fd_sink__init),
	(gst_fd_sink__chain), (gst_fd_sink__set_property),
	(gst_fd_sink__get_property):
	* plugins/elements/gstfdsink.h:
	* plugins/elements/gstfdsrc.c: (_do_init), (gst_fd_src_base_init),
	(gst_fd_src_class_init), (gst_fd_src_init), (gst_fd_src_dispose),
	(gst_fd_src_update_fd), (gst_fd_src_start), (gst_fd_src_stop),
	(gst_fd_src_unlock), (gst_fd_src_set_property),
	(gst_fd_src_get_property), (gst_fd_src_create),
	(gst_fd_src_is_seekable), (gst_fd_src_get_size),
	(gst_fd_src_uri_get_type), (gst_fd_src_uri_get_protocols),
	(gst_fd_src_uri_get_uri), (gst_fd_src_uri_set_uri),
	(gst_fd_src_uri_handler_init):
	* plugins/elements/gstfdsrc.h:
	* plugins/elements/gstqueue.c: (gst_queue_get_type):
	  more anal cleanup

2005-11-30  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer.types.in:
	* gst/Makefile.am:
	  fix the docs build

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

	* configure.ac:
	* gst/Makefile.am:
	* gst/gst.c:
	* gst/gstplugin.h:
	* gst/gstregistry.h:
	* tests/benchmarks/complexity.c:
	* tests/benchmarks/mass-elements.c:
	* tests/check/Makefile.am:
	* tools/Makefile.am:
	* tools/gst-inspect.c:
	* tools/gst-xmlinspect.c:
	  various fixes to make
	  --disable-nls --disable-registry --disable-loadsave
	  --disable-parse --disable-gst-debug
	  work and get the core .so down to 360444 bytes after stripping

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

	* Makefile.am:
	* configure.ac:
	  descend into tests
	* docs/random/thomasvs/TODO:
	* tests/Makefile.am:
	* tests/README:
	  add a README

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

	* win32/GStreamer.vcproj:
	* win32/MANIFEST:
	* 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/gstelements.vcproj:
	* win32/gstgetbits.def:
	* win32/gstgetbits.vcproj:
	* win32/gstreamer-dbg.def:
	* win32/gstreamer.def:
	* win32/libgstbase.def:
	* win32/libgstbase.vcproj:
	* win32/link_oldruntime.c:
	* win32/mman.c:
	* win32/mman.h:
	* win32/mman.inl:
	* win32/msvc71.sln:
	  move even more stuff, win32/ is nice and clean now

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

	* libs/gst/control/.cvsignore:
	* win32/MANIFEST:
	* win32/config.h:
	* win32/dirent.c:
	* win32/dirent.h:
	* win32/gstbytestream.def:
	* win32/gstbytestream.vcproj:
	* win32/gstconfig.h:
	* win32/gstenumtypes.c:
	* win32/gstenumtypes.h:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstversion.h:
	* win32/gtchar.h:
	* win32/testsuite/bins.vcproj:
	* win32/testsuite/bytestream.vcproj:
	* win32/testsuite/caps.vcproj:
	* win32/testsuite/cleanup.vcproj:
	* win32/testsuite/clock.vcproj:
	* win32/testsuite/debug.vcproj:
	* win32/testsuite/dlopen.vcproj:
	* win32/testsuite/dynparams.vcproj:
	* win32/testsuite/elements.vcproj:
	* win32/testsuite/ghostpads.vcproj:
	* win32/testsuite/indexers.vcproj:
	* win32/testsuite/negotiation.vcproj:
	* win32/testsuite/parse.vcproj:
	* win32/testsuite/plugin.vcproj:
	* win32/testsuite/refcounting.vcproj:
	* win32/testsuite/schedulers.vcproj:
	* win32/testsuite/states.vcproj:
	* win32/testsuite/tags.vcproj:
	* win32/testsuite/threads.vcproj:
	  remove old win32 stuff that isn't maintained and should be
	  reorganized

2005-11-30  Andy Wingo  <wingo@pobox.com>

	* configure.ac (GST_PKG_DEPS): Revert previous patch, makes
	loading the gst.interfaces python module bork.

	* configure.ac (GST_PKG_DEPS): Use gmodule-no-export-2.0.pc,
	available since GLib 2.2. Fixes #318031.

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

	* Makefile.am:
	* check/.cvsignore:
	* check/Makefile.am:
	* check/elements/.cvsignore:
	* check/elements/fakesrc.c:
	* check/elements/fdsrc.c:
	* check/elements/identity.c:
	* check/generic/.cvsignore:
	* check/generic/states.c:
	* check/gst-libs/.cvsignore:
	* check/gst-libs/controller.c:
	* check/gst-libs/gdp.c:
	* check/gst/.cvsignore:
	* check/gst/capslist.h:
	* check/gst/gst.c:
	* check/gst/gstbin.c:
	* check/gst/gstbuffer.c:
	* check/gst/gstbus.c:
	* check/gst/gstcaps.c:
	* check/gst/gstelement.c:
	* check/gst/gstevent.c:
	* check/gst/gstghostpad.c:
	* check/gst/gstiterator.c:
	* check/gst/gstmessage.c:
	* check/gst/gstminiobject.c:
	* check/gst/gstobject.c:
	* check/gst/gstpad.c:
	* check/gst/gstpipeline.c:
	* check/gst/gstplugin.c:
	* check/gst/gstsegment.c:
	* check/gst/gststructure.c:
	* check/gst/gstsystemclock.c:
	* check/gst/gsttag.c:
	* check/gst/gstutils.c:
	* check/gst/gstvalue.c:
	* check/net/.cvsignore:
	* check/net/gstnetclientclock.c:
	* check/net/gstnettimeprovider.c:
	* check/pipelines/.cvsignore:
	* check/pipelines/cleanup.c:
	* check/pipelines/simple_launch_lines.c:
	* check/pipelines/stress.c:
	* check/states/.cvsignore:
	* check/states/sinks.c:
	* configure.ac:
	* examples/Makefile.am:
	* examples/appreader/.cvsignore:
	* examples/appreader/Makefile.am:
	* examples/appreader/appreader.c:
	* examples/controller/.cvsignore:
	* examples/controller/Makefile.am:
	* examples/controller/audio-example.c:
	* examples/cutter/.cvsignore:
	* examples/cutter/Makefile.am:
	* examples/cutter/cutter.c:
	* examples/cutter/cutter.h:
	* examples/events/Makefile.am:
	* examples/events/seek.c:
	* examples/helloworld/.cvsignore:
	* examples/helloworld/Makefile.am:
	* examples/helloworld/helloworld.c:
	* examples/helloworld2/.cvsignore:
	* examples/helloworld2/Makefile.am:
	* examples/helloworld2/helloworld2.c:
	* examples/launch/.cvsignore:
	* examples/launch/Makefile.am:
	* examples/launch/mp3parselaunch.c:
	* examples/launch/mp3play:
	* examples/manual/.cvsignore:
	* examples/manual/Makefile.am:
	* examples/manual/extract.pl:
	* examples/metadata/Makefile.am:
	* examples/metadata/read-metadata.c:
	* examples/mixer/.cvsignore:
	* examples/mixer/Makefile.am:
	* examples/mixer/mixer.c:
	* examples/mixer/mixer.h:
	* examples/pingpong/.cvsignore:
	* examples/pingpong/Makefile.am:
	* examples/pingpong/pingpong.c:
	* examples/plugins/.cvsignore:
	* examples/plugins/Makefile.am:
	* examples/plugins/example.c:
	* examples/plugins/example.h:
	* examples/pwg/.cvsignore:
	* examples/pwg/Makefile.am:
	* examples/pwg/extract.pl:
	* examples/queue/.cvsignore:
	* examples/queue/Makefile.am:
	* examples/queue/queue.c:
	* examples/queue2/.cvsignore:
	* examples/queue2/Makefile.am:
	* examples/queue2/queue2.c:
	* examples/queue3/.cvsignore:
	* examples/queue3/Makefile.am:
	* examples/queue3/queue3.c:
	* examples/queue4/.cvsignore:
	* examples/queue4/Makefile.am:
	* examples/queue4/queue4.c:
	* examples/retag/.cvsignore:
	* examples/retag/Makefile.am:
	* examples/retag/retag.c:
	* examples/retag/transcode.c:
	* examples/thread/.cvsignore:
	* examples/thread/Makefile.am:
	* examples/thread/thread.c:
	* examples/typefind/.cvsignore:
	* examples/typefind/Makefile.am:
	* examples/typefind/typefind.c:
	* examples/xml/.cvsignore:
	* examples/xml/Makefile.am:
	* examples/xml/createxml.c:
	* examples/xml/runxml.c:
	* tests/Makefile.am:
	* tests/check/Makefile.am:
	* testsuite/.cvsignore:
	* testsuite/Makefile.am:
	* testsuite/Rules:
	* testsuite/caps/.cvsignore:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/app_fixate.c:
	* testsuite/caps/audioscale.c:
	* testsuite/caps/caps.c:
	* testsuite/caps/caps.h:
	* testsuite/caps/caps_strings:
	* testsuite/caps/compatibility.c:
	* testsuite/caps/deserialize.c:
	* testsuite/caps/enumcaps.c:
	* testsuite/caps/eratosthenes.c:
	* testsuite/caps/filtercaps.c:
	* testsuite/caps/fixed.c:
	* testsuite/caps/fraction-convert.c:
	* testsuite/caps/fraction-multiply-and-zero.c:
	* testsuite/caps/intersect2.c:
	* testsuite/caps/intersection.c:
	* testsuite/caps/normalisation.c:
	* testsuite/caps/random.c:
	* testsuite/caps/renegotiate.c:
	* testsuite/caps/sets.c:
	* testsuite/caps/simplify.c:
	* testsuite/caps/string-conversions.c:
	* testsuite/caps/structure.c:
	* testsuite/caps/subtract.c:
	* testsuite/caps/union.c:
	* testsuite/debug/.cvsignore:
	* testsuite/debug/Makefile.am:
	* testsuite/debug/category.c:
	* testsuite/debug/commandline.c:
	* testsuite/debug/global.c:
	* testsuite/debug/output.c:
	* testsuite/debug/printf_extension.c:
	* testsuite/dlopen/.cvsignore:
	* testsuite/dlopen/Makefile.am:
	* testsuite/dlopen/dlopen_gst.c:
	* testsuite/dlopen/loadgst.c:
	* testsuite/elements/.cvsignore:
	* testsuite/elements/Makefile.am:
	* testsuite/elements/gst-inspect-check.in:
	* testsuite/elements/struct_i386.h:
	* testsuite/elements/struct_size.c:
	* testsuite/indexers/.cvsignore:
	* testsuite/indexers/Makefile.am:
	* testsuite/indexers/cache1.c:
	* testsuite/indexers/indexdump.c:
	* testsuite/parse/.cvsignore:
	* testsuite/parse/Makefile.am:
	* testsuite/parse/parse1.c:
	* testsuite/parse/parse2.c:
	* testsuite/plugin/.cvsignore:
	* testsuite/plugin/Makefile.am:
	* testsuite/plugin/README:
	* testsuite/plugin/dynamic.c:
	* testsuite/plugin/linked.c:
	* testsuite/plugin/loading.c:
	* testsuite/plugin/registry.c:
	* testsuite/plugin/static.c:
	* testsuite/plugin/static2.c:
	* testsuite/plugin/testplugin.c:
	* testsuite/plugin/testplugin2.c:
	* testsuite/plugin/testplugin2_s.c:
	* testsuite/plugin/testplugin_s.c:
	* testsuite/refcounting/.cvsignore:
	* testsuite/refcounting/Makefile.am:
	* testsuite/refcounting/bin.c:
	* testsuite/refcounting/element.c:
	* testsuite/refcounting/element_pad.c:
	* testsuite/refcounting/mainloop.c:
	* testsuite/refcounting/mem.c:
	* testsuite/refcounting/mem.h:
	* testsuite/refcounting/object.c:
	* testsuite/refcounting/pad.c:
	* testsuite/refcounting/sched.c:
	* testsuite/refcounting/thread.c:
	* testsuite/states/.cvsignore:
	* testsuite/states/Makefile.am:
	* testsuite/states/bin.c:
	* testsuite/states/locked.c:
	* testsuite/states/parent.c:
	* testsuite/threads/.cvsignore:
	* testsuite/threads/159566.c:
	* testsuite/threads/159852.c:
	* testsuite/threads/Makefile.am:
	* testsuite/threads/queue.c:
	* testsuite/threads/signals.c:
	* testsuite/threads/staticrec.c:
	* testsuite/threads/thread.c:
	* testsuite/threads/threadb.c:
	* testsuite/threads/threadc.c:
	* testsuite/threads/threadd.c:
	* testsuite/threads/threade.c:
	* testsuite/threads/threadf.c:
	* testsuite/threads/threadg.c:
	* testsuite/threads/threadh.c:
	* testsuite/threads/threadi.c:
	  move all of these under tests

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

	* configure.ac:
	* tests/Makefile.am:
	  fix distcheck

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

	* docs/gst/gstreamer-sections.txt:
	* tests/sched/.cvsignore:
	* tests/sched/Makefile.am:
	* tests/sched/cases/(fs-fs).xml:
	* tests/sched/cases/(fs-i-fs).xml:
	* tests/sched/cases/(fs-i-i-fs).xml:
	* tests/sched/cases/(fs-i-q[i-fs]).xml:
	* tests/sched/dynamic-pipeline.c:
	* tests/sched/interrupt1.c:
	* tests/sched/interrupt2.c:
	* tests/sched/interrupt3.c:
	* tests/sched/runtestcases:
	* tests/sched/runxml.c:
	* tests/sched/sched-stress.c:
	* tests/sched/sort.c:
	* tests/sched/testcases:
	* tests/sched/testcases1.tc:
	* tests/seeking/.cvsignore:
	* tests/seeking/Makefile.am:
	* tests/seeking/seeking1.c:
	* tests/threadstate/.cvsignore:
	* tests/threadstate/Makefile.am:
	* tests/threadstate/test1.c:
	* tests/threadstate/test2.c:
	* tests/threadstate/threadstate1.c:
	* tests/threadstate/threadstate2.c:
	* tests/threadstate/threadstate3.c:
	* tests/threadstate/threadstate4.c:
	* tests/threadstate/threadstate5.c:
	  remove obsolete tests
	* configure.ac:
	* tests/bench-complexity.scm:
	* tests/bench-mass_elements.scm:
	* tests/complexity.c:
	* tests/complexity.gnuplot:
	* tests/instantiate/.cvsignore:
	* tests/instantiate/Makefile.am:
	* tests/instantiate/caps.c:
	* tests/mass_elements.c:
	* tests/network-clock-utils.scm:
	* tests/network-clock.scm:
	* tests/plot-data:
	First pass at cleaning up tests/ dir before moving the rest
	Combined with CVS surgery

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

	* po/POTFILES.in:
	  queue has moved, update

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

	* docs/gst/gstreamer-sections.txt:
	  remove double entries from the docs
	* gst/gst_private.h:
	* gst/gstinfo.c: (_gst_debug_init):
	  remove the THREAD debug category
	* gst/Makefile.am:
	* gst/gstqueue.c:
	* gst/gstqueue.h:
	* docs/gst/gstreamer.types:
	* plugins/elements/gstqueue.c: (gst_queue_get_type),
	(gst_queue_init), (gst_queue_finalize), (gst_queue_change_state):
	  completely move queue and fix up debugging categories

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

	* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
	  make initialization portable, using LL is not

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

	* win32/common/gstconfig.h:
	  add large padding

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

	* win32/common/libgstreamer.def:
	  rename symbols; sort base section

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

	* gst/gstclock.c: (do_linear_regression):
	  remove crack non-portable handrolled DEBUG macro

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

	* docs/random/release:
	  update notes
	* win32/common/gstenumtypes.c: (register_gst_object_flags),
	(gst_object_flags_get_type), (register_gst_bin_flags),
	(gst_bin_flags_get_type), (register_gst_buffer_flag),
	(gst_buffer_flag_get_type), (register_gst_bus_flags),
	(gst_bus_flags_get_type), (register_gst_bus_sync_reply),
	(gst_bus_sync_reply_get_type), (register_gst_caps_flags),
	(gst_caps_flags_get_type), (register_gst_clock_return),
	(gst_clock_return_get_type), (register_gst_clock_entry_type),
	(gst_clock_entry_type_get_type), (register_gst_clock_flags),
	(gst_clock_flags_get_type), (register_gst_state),
	(gst_state_get_type), (register_gst_state_change_return),
	(gst_state_change_return_get_type), (register_gst_state_change),
	(gst_state_change_get_type), (register_gst_element_flags),
	(gst_element_flags_get_type), (register_gst_core_error),
	(gst_core_error_get_type), (register_gst_library_error),
	(gst_library_error_get_type), (register_gst_resource_error),
	(gst_resource_error_get_type), (register_gst_stream_error),
	(gst_stream_error_get_type), (register_gst_event_type_flags),
	(gst_event_type_flags_get_type), (register_gst_event_type),
	(gst_event_type_get_type), (register_gst_seek_type),
	(gst_seek_type_get_type), (register_gst_seek_flags),
	(gst_seek_flags_get_type), (register_gst_format),
	(gst_format_get_type), (register_gst_index_certainty),
	(gst_index_certainty_get_type), (register_gst_index_entry_type),
	(gst_index_entry_type_get_type),
	(register_gst_index_lookup_method),
	(gst_index_lookup_method_get_type), (register_gst_assoc_flags),
	(gst_assoc_flags_get_type), (register_gst_index_resolver_method),
	(gst_index_resolver_method_get_type), (register_gst_index_flags),
	(gst_index_flags_get_type), (register_gst_debug_level),
	(gst_debug_level_get_type), (register_gst_debug_color_flags),
	(gst_debug_color_flags_get_type), (register_gst_iterator_result),
	(gst_iterator_result_get_type), (register_gst_iterator_item),
	(gst_iterator_item_get_type), (register_gst_message_type),
	(gst_message_type_get_type), (register_gst_mini_object_flags),
	(gst_mini_object_flags_get_type), (register_gst_pad_link_return),
	(gst_pad_link_return_get_type), (register_gst_flow_return),
	(gst_flow_return_get_type), (register_gst_activate_mode),
	(gst_activate_mode_get_type), (register_gst_pad_direction),
	(gst_pad_direction_get_type), (register_gst_pad_flags),
	(gst_pad_flags_get_type), (register_gst_pad_presence),
	(gst_pad_presence_get_type), (register_gst_pad_template_flags),
	(gst_pad_template_flags_get_type), (register_gst_pipeline_flags),
	(gst_pipeline_flags_get_type), (register_gst_plugin_error),
	(gst_plugin_error_get_type), (register_gst_plugin_flags),
	(gst_plugin_flags_get_type), (register_gst_rank),
	(gst_rank_get_type), (register_gst_query_type),
	(gst_query_type_get_type), (register_gst_tag_merge_mode),
	(gst_tag_merge_mode_get_type), (register_gst_tag_flag),
	(gst_tag_flag_get_type), (register_gst_task_state),
	(gst_task_state_get_type), (register_gst_alloc_trace_flags),
	(gst_alloc_trace_flags_get_type),
	(register_gst_type_find_probability),
	(gst_type_find_probability_get_type), (register_gst_uri_type),
	(gst_uri_type_get_type), (register_gst_parse_error),
	(gst_parse_error_get_type):
	* win32/common/gstenumtypes.h:
	* win32/common/gstversion.h:
	  update visual studio generated files

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

	* win32/vs6/libgstbase.dsp:
	* win32/vs6/libgstelements.dsp:
	  update project files for new locations

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

	* Makefile.am:
	  remove some files
	* README:
	  reinstate and update
	* DEVEL:
	* REQUIREMENTS:
	  removed
	* LICENSE:
	* docs/random/LICENSE:
	  moved to random

2005-11-30  Edward Hervey  <edward@fluendo.com>

	* gst/gsttypefind.c: (gst_type_find_register):
	* gst/gsttypefind.h:
	* gst/gsttypefindfactory.c: (gst_type_find_factory_init),
	(gst_type_find_factory_dispose):
	* gst/gsttypefindfactory.h:
	Fix memory leak in GstTypeFindFactory.

2005-11-29  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/gst.c:
	* plugins/elements/Makefile.am:
	* plugins/elements/gstelements.c:
	* plugins/elements/gstqueue.c:
	  move queue from core to the elements plugin

2005-11-29  Andy Wingo  <wingo@pobox.com>

	* libs/gst/base/gstbasetransform.h: 
	* libs/gst/base/gstbasesrc.h: 
	* libs/gst/base/gstbasesink.h: en-LARGE the padding.

	* gst/gstconfig.h.in (GST_PADDING_LARGE): New define, the number
	of pointers by which to pad very extensible base classes (like the
	ones in libs/gst/base).

2005-11-29  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	  moving documentation from core to lib

2005-11-29  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* check/Makefile.am:
	* configure.ac:
	* docs/gst/Makefile.am:
	* gst/Makefile.am:
	* gst/base/.cvsignore:
	* gst/base/Makefile.am:
	* gst/base/README:
	* gst/base/gstadapter.c:
	* gst/base/gstadapter.h:
	* gst/base/gstbasesink.c:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c:
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.c:
	* gst/base/gstbasetransform.h:
	* gst/base/gstcollectpads.c:
	* gst/base/gstcollectpads.h:
	* gst/base/gstpushsrc.c:
	* gst/base/gstpushsrc.h:
	* gst/base/gsttypefindhelper.c:
	* gst/base/gsttypefindhelper.h:
	* gst/check/Makefile.am:
	* gst/check/gstcheck.c:
	* gst/check/gstcheck.h:
	* gst/net/Makefile.am:
	* gst/net/gstnet.h:
	* gst/net/gstnetclientclock.c:
	* gst/net/gstnetclientclock.h:
	* gst/net/gstnettimepacket.c:
	* gst/net/gstnettimepacket.h:
	* gst/net/gstnettimeprovider.c:
	* gst/net/gstnettimeprovider.h:
	* libs/gst/Makefile.am:
	* libs/gst/base/Makefile.am:
	* libs/gst/base/gstbasetransform.c:
	* libs/gst/check/Makefile.am:
	* plugins/elements/Makefile.am:
	* po/POTFILES.in:
	  CVS surgery + support to move base, check, and net out of gst
	  and into libs/gst

2005-11-29  Andy Wingo  <wingo@pobox.com>

	* gst/gstevent.h (struct _GstEvent): Only one pointer of padding.

	* gst/gststructure.h (struct _GstStructure): Only one pointer of
	padding.

	* gst/gstquery.h (struct _GstQuery): Only one pointer of padding.

	* gst/gstpluginfeature.h: Remove a comment in PluginFeature.

	* gst/gstplugin.h (struct _GstPluginClass): Add some padding.

	* gst/gstobject.h: (struct _GstObject): Only one pointer of
	padding; reduces object size by about 30%. We don't expect
	anything else to go into gstobject.

	* gst/gstminiobject.h (struct _GstMiniObject)
	(struct _GstMiniObjectClass): Only one pointer of padding; the
	payload is only a pointer and two ints anyway. For the class there
	are only two methods as well.
	
	* gst/gstelement.h (struct _GstElementClass): Removed
	the state_changed signal callback, it is not used.

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

	* docs/gst/gstreamer.types:
	  fix includes, though they are a little dinky

2005-11-29  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* check/Makefile.am:
	  look in the right place for elements, a lot more chance of
	  success
	* gst/Makefile.am:
	  remove indexers and elements subdirs
	* plugins/Makefile.am:
	  make indexers conditional

2005-11-29  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* Makefile.am:
	* configure.ac:
	* plugins/elements/Makefile.am:
	* plugins/elements/gstcapsfilter.c:
	* plugins/elements/gstfilesink.c:
	* plugins/elements/gstfilesrc.c:
	* plugins/elements/gstidentity.c:
	* plugins/indexers/Makefile.am:
	  do CVS surgery and related build fixery to move elements
	  and indexers in a new gstreamer/plugins directory, out of the
	  gst/ directory

2005-11-29  Andy Wingo  <wingo@pobox.com>

	* check/Makefile.am:
	* pkgconfig/gstreamer-net-uninstalled.pc.in:
	* pkgconfig/gstreamer-net.pc.in:
	* gst/net/Makefile.am: Rename gstnet-tempname to gstnet. Fixes
	#322257.

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

	* tools/Makefile.am:
	* tools/gst-complete.1.in:
	* tools/gst-complete.c:
	* tools/gst-compprep.1.in:
	* tools/gst-compprep.c:
	  removing -compprep and -complete

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

	* gst/gstevent.c: (gst_event_new_new_segment),
	(gst_event_parse_new_segment):
	* gst/gstevent.h:
	  fix #320529 - clean up new_segment API and structure.
	  Let's hope everyone was using the methods, and not the structure.

2005-11-29  Edward Hervey  <edward@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_do_sync),
	(gst_base_sink_activate_pull), (gst_base_sink_change_state):
	Properly handle non GST_FORMAT_TIME segment
	* gst/elements/gstidentity.c: (gst_identity_transform_ip):
	Properly handle non GST_FORMAT_TIME segment
	* gst/gstsegment.c:
	This function is valid if the accumulator is 0 and the format
	is different from the requested format.
	
2005-11-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/gst/gstreamer-sections.txt:
	Add gst_query_new_seeking and gst_query_parse_seeking to the
	docs.

2005-11-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_buffer_alloc):
	  Treat a pad alloc with new caps the same as if we were not
	  negotiated, in order to allow a changing upstream output
	  to produce a new format of data.

2005-11-29  Edward Hervey  <edward@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_class_init),
	(gst_base_transform_event), (gst_base_transform_eventfunc):
	The event virtual method is now properly implemented, with a default
	handler
	Sub classes should call the parent_class event method. They should
	return FALSE if they had a problem handling the given event, or don't
	want GstBaseTransform to send that even downstream
	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_event),
	(gst_identity_transform_ip), (gst_identity_set_property),
	(gst_identity_get_property):
	* gst/elements/gstidentity.h:
	Added the single-segment boolean property.
	If set to TRUE, it will output a single segment of data, starting from
	0, will eat up all incoming newsegment, and modify the timestamp of the
	buffers accordingly

2005-11-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstghostpad.c: (gst_proxy_pad_get_target):
	  Don't ref NULL target pad (#322751). Improve docs.

2005-11-29  Michael Smith  <msmith@fluendo.com>

	* gst/gstregistryxml.c: (load_plugin):
	  Don't crash if we failed to load a feature from a plugin. 

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

	* check/pipelines/simple_launch_lines.c: (setup_pipeline),
	(GST_START_TEST):
	  use more check API and less GLib API

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

	* Makefile.am:
	  don't run checks if we don't have check
	* common/check.mak:
	  remove the registry when running make torture
	* docs/gst/gstreamer-sections.txt:
	  remove second multiply
	* gst/gstqueue.c: (gst_queue_loop):
	  fix a compile warning when disabling debug

2005-11-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstinfo.h:
	Hey! Let's print the pad name if the pointer != NULL instead
	of when it == NULL :-)

2005-11-28  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstutils.c: (GST_START_TEST):
	Updated check, add some scaling accuracy checking code.

	* gst/gstutils.c: (gst_util_div128_64),
	(gst_util_uint64_scale_int64), (gst_util_uint64_scale),
	(gst_util_uint64_scale_int):
	Fix 6 times faster division code. Optimize for common 
	1/1 and less common X/1 cases.

2005-11-28  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	More checks.

	* gst/gstclock.c: (gst_clock_finalize), (gst_clock_set_master),
	(do_linear_regression), (gst_clock_add_observation):
	Cleanups.
	Release lock when the clock cannot be slaved.
	Catch the case where the regression returned an invalid denominator.

	* gst/gstutils.c: (gst_util_div128_64_iterate),
	(gst_util_div128_64), (gst_util_uint64_scale_int64),
	(gst_util_uint64_scale), (gst_util_uint64_scale_int):
	Add protentially more performant non-iterative 128/64 divide function
	that unfortunatly does not work yet.
	Shortcut the trivial 0/X = 0 case.
	Remove the warnings on overflow.

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

	* gst/gstplugin.c: (gst_plugin_register_func):
	  everything causing a plugin not to load should be at least a WARNING

2005-11-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/random/ensonic/dparams.txt:
	  some TODOs for the next dev cycle
	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new):
	* libs/gst/controller/gstcontroller.h:
	  use base type to assign acccessor functions

2005-11-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/Makefile.am:
	Oops, that should have been top_srcdir

2005-11-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/Makefile.am:
	* check/elements/fdsrc.c: (GST_START_TEST):
	Use a cmdline define to specify the location of a file to use for
	testing, to avoid breaking distcheck.

2005-11-28  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (fixate_value): Use array functions for arrays.

2005-11-28  Edward Hervey  <edward@fluendo.com>

	* tools/gst-launch.c: (main):
	Clarify the output strings, makes it easier to translate.
	Fixes #322626

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

	* gst/Makefile.am:
	  don't try and build net if we don't even have <sys/socket.h>

2005-11-27  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/Makefile.am:
	* check/elements/fdsrc.c: (event_func), (setup_fdsrc),
	(cleanup_fdsrc), (GST_START_TEST), (fdsrc_suite), (main):
	  Add tests for fdsrc seekability

	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init),
	(gst_fdsrc_init), (gst_fdsrc_update_fd), (gst_fdsrc_start),
	(gst_fdsrc_set_property), (gst_fdsrc_is_seekable),
	(gst_fdsrc_get_size), (gst_fdsrc_uri_set_uri):
	* gst/elements/gstfdsrc.h:
	  fdsrc should not be a 'live' source.
	  Implement seeking on seekable fd's.

	* gst/gstquery.c: (gst_query_new_seeking),
	(gst_query_parse_seeking):
	* gst/gstquery.h:
	  Implement SEEKING query functions: 
	    *_new_seeking and *_parse_seeking

2005-11-27  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstelement.c: (gst_element_dispose):
	  don't loop forever

	* gst/gstiterator.c:
	* gst/gststructure.c:
	  doc fixes

	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstinterpolation.c:
	(interpolate_none_get_enum_value_array):
	  support controlling enums

2005-11-27  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c:
	  Improve documentation for gst_value_union().

	* gst/gstvalue.h:
	  Change return value for union, intersect and subtract functions
	  from gint to gboolean.

2005-11-27  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c: (gst_value_serialize_any_list),
	(gst_value_transform_any_list_string),
	(gst_value_deserialize_list), (gst_value_deserialize_array),
	(gst_value_set_int_range), (gst_value_deserialize_int_range),
	(gst_value_set_double_range), (gst_value_deserialize_double_range),
	(gst_value_set_fraction_range_full),
	(gst_value_deserialize_fraction_range),
	(gst_value_deserialize_caps), (gst_value_deserialize_buffer),
	(gst_value_deserialize_boolean),
	(gst_value_deserialize_int_helper), (gst_value_deserialize_double),
	(gst_value_serialize_float), (gst_value_deserialize_float),
	(gst_string_wrap), (gst_value_deserialize_string),
	(gst_value_deserialize_enum), (gst_value_deserialize_flags),
	(gst_value_union_int_range_int_range),
	(gst_value_intersect_int_range_int_range),
	(gst_value_intersect_double_range_double_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_range),
	(gst_value_deserialize_fraction):
	* gst/gstvalue.h:
	  Use gint, gdouble and gchar in our API instead of int, double and
	  char (and make usage in gstvalue.c more consistent).

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

	* check/Makefile.am:
	* libs/gst/controller/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	  fix up Makefile.am and remove GST_ENABLE_NEW

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

	* configure.ac:
	* gst/Makefile.am:
	* gst/base/Makefile.am:
	* gst/check/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/net/Makefile.am:
	  update LDFLAGS use some more

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

	* common/m4/gst-doc.m4:
	  Fixes #312589

2005-11-26  Edward Hervey  <edward@fluendo.com>

	* gst/gstpluginfeature.c: (gst_plugin_feature_load):
	This shouldn't issue a g_warning since it returns NULL if it
	couldn't find the plugin, and all functions using this behave
	properly on a NULL return. Switching to a GST_WARNING.

2005-11-25  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbin.c: (gst_bin_handle_message_func):
	Don't leak clock messages.

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

	* gst/gstutils.c: (gst_util_uint64_scale_int64),
	(gst_util_uint64_scale_int):
	Optimisations, remove unneeded vars.

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

	* check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	Added more checks for the high precision uint64 cases.

	* gst/gstutils.c: (gst_util_uint64_scale_int64),
	(gst_util_uint64_scale), (gst_util_uint64_scale_int):
	Implement high precision (guint64 * guint64) / guint64.

2005-11-24  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_query):
	Fix wrong percentage query.

	* gst/gstutils.c: (gst_util_uint64_scale),
	(gst_util_uint64_scale_int):
	Add some more common cases that can be handled 
	efficiently to _scale.

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

	* check/gst/gstminiobject.c: (thread_ref), (GST_START_TEST),
	(gst_mini_object_suite):
	  don't use check calls from threads; check probably isn't
	  threadsafe and using a lock to make it threadsafe would
	  defeat the purpose of this check
	* gst/check/gstcheck.c:
	* gst/check/gstcheck.h:
	  use GST_DEBUG some more

2005-11-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstutils.c: (gst_util_uint64_scale),
	(gst_util_uint64_scale_int):
	Chain trivial case to _scale_int.

2005-11-24  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):
	Added test for scaling.

	* gst/gstclock.h:
	Small doc fix.

	* gst/gstutils.c: (gst_util_uint64_scale_int):
	Implemented high precision scaling code.

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

	* gst/gstinfo.h:
	  do not crash on pad==NULL

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

	Patch by: Stefan Kost

	* common/gtk-doc.mak:
	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  Fix distcheck issues for the libraries docs build
	  Closes #319599.

2005-11-24  Michael Smith <msmith@fluendo.com>

	* docs/manual/basics-helloworld.xml:
	  Fix bug #315027: memory leak in example code in docs.

2005-11-24  Michael Smith <msmith@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	  Unlock the PREROLL_LOCK in a failure case.

2005-11-24  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/base/gstadapter.h:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.h:
	* gst/base/gstpushsrc.h:
	* gst/elements/gstfakesink.h:
	* gst/elements/gstfakesrc.c: (gst_fake_src_data_get_type):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesink.h:
	* gst/elements/gstfilesrc.h:
	* gst/gst.c:
	* gst/gstbin.c:
	* gst/gstbuffer.c: (_gst_buffer_copy):
	* gst/gstbus.h:
	* gst/gstcaps.c:
	* gst/gstchildproxy.c:
	* gst/gstclock.c:
	* gst/gstelement.c:
	* gst/gstelementfactory.c:
	* gst/gstelementfactory.h:
	* gst/gstevent.c:
	* gst/gstghostpad.h:
	* gst/gstindex.h:
	* gst/gstinterface.h:
	* gst/gstminiobject.c:
	* gst/gstminiobject.h:
	* gst/gstpad.c:
	* gst/gstpad.h:
	* gst/gstpadtemplate.h:
	* gst/gstpipeline.h:
	* gst/gstpluginfeature.h:
	* gst/gstquery.h:
	* gst/gstqueue.h:
	* gst/gsttaglist.c:
	* gst/gsttaglist.h:
	* gst/gsttagsetter.c:
	* gst/gsttagsetter.h:
	* gst/gsttrace.c:
	* gst/gsttrace.h:
	* gst/gsttypefind.h:
	* gst/gsturi.h:
	* gst/gstvalue.c:
	* gst/net/gstnetclientclock.c:
	* gst/net/gstnetclientclock.h:
	* gst/net/gstnettimepacket.c:
	* gst/net/gstnettimeprovider.c:
	* gst/net/gstnettimeprovider.h:
	Doc fixes.

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

	* configure.ac: back to HEAD

=== release 0.9.6 ===

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

	* configure.ac:
	  releasing 0.9.6, "Always On Time"

2005-11-23  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/glib-compat.c:
	* gst/gsttagsetter.c:
	* gst/gstvalue.c:
	* gst/net/gstnetclientclock.c:
	* gst/net/gstnettimepacket.h:
	Doc updates.

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

	* docs/faq/using.xml:
	* docs/libs/tmpl/gstcontrol.sgml:
	* docs/manual/advanced-dparams.xml:
	* docs/manual/appendix-checklist.xml:
	* docs/manual/basics-elements.xml:
	* docs/pwg/other-source.xml:
	* docs/random/moving-plugins:
	* gst/gstpad.c:
	* tools/gst-launch.1.in:
	  remove mentions of sinesrc

2005-11-23  Michael Smith <msmith@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	  Update for new API and API changes.
	* gst/gstobject.h:
	  Documentation fix: GST_TRYLOCK -> GST_OBJECT_TRYLOCK
	* gst/gstvalue.c:
	  Documentation typo fix.
	* gst/net/gstnettimepacket.c:
	  Documentation fixes for arguments.

2005-11-23  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gststructure.c: (gst_structure_get_fraction),
	(gst_structure_parse_value),
	(gst_structure_fixate_field_nearest_fraction):
	* gst/gststructure.h:
	* gst/gstutils.c: (gst_util_uint64_scale_int):
	* gst/gstutils.h:
	* scripts/update-funcnames:
	API Changes. 
	Rename gst_util_clock_time_scale to gst_util_uint64_scale_int
	Make gst_structure_fixate_field_nearest_fraction take a numerator
	and denominator argument instead of a GValue
	add gst_structure_get_fraction helper function.

2005-11-23  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Update TODO.

	* gst/net/gstnetclientclock.c: (gst_net_client_clock_thread):
	* gst/net/gstnetclientclock.h:
	Use parent fields for timeout and window_size.

2005-11-23  Andy Wingo  <wingo@pobox.com>

	* check/net/gstnetclientclock.c (test_functioning): Adjust to
	rate_num/rate_denom change.

	* gst/net/gstnetclientclock.c
	(gst_net_client_clock_observe_times): Take the SLAVE_LOCK not the
	OBJECT_LOCK. Don't call add_observation with the lock.

	* gst/gstclock.c (gst_clock_init): Initialize the rate as a
	fraction.
	(gst_clock_adjust_unlocked): Adjust using uint64_scale and the
	rate fraction.
	(gst_clock_set_calibration, gst_clock_get_calibration): Change to
	deal with rate as a fraction whose numerator and denominator are
	GstClockTime values.
	(gst_clock_set_master): Only use the OBJECT_LOCK to set the
	master; the other fields are protected by the SLAVE_LOCK.
	(do_linear_regression): Note that this must be called with the
	SLAVE_LOCK.
	(gst_clock_add_observation): Take the SLAVE_LOCK, not the
	OBJECT_LOCK. Call set_calibration instead of touching the
	variables directly.
	(gst_clock_set_property, gst_clock_get_property): Protect
	master/slave parameters with the SLAVE_LOCK.

	* gst/gstclock.h (GstClock): Remove rate, add rate_numerator and
	rate_denominator. PR3C1S3. Add a new lock, the SLAVE_LOCK, and
	note that all of the instance variables that add_observation and
	the set_master functions use are protected by that lock and not
	the OBJECT_LOCK.
	(GST_CLOCK_SLAVE_LOCK, GST_CLOCK_SLAVE_UNLOCK): New macros.

	* gst/gstclock.c (gst_clock_add_observation): No longer requires
	the caller to take the object lock.

2005-11-23  Wim Taymans  <wim@fluendo.com>

	* gst/gsterror.c: (_gst_core_errors_init):
	* gst/gsterror.h:
	Add error for clock stuff.

	* gst/gstpipeline.c: (gst_pipeline_change_state),
	(gst_pipeline_set_clock):
	Post clock error when clock cannot be used in a pipeline.

2005-11-23  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  make two symbols from gstinfo private for the docs
	* gst/base/gstcollectpads.h:
	* gst/gstutils.c:
	  fix doc typos, update docs

2005-11-22  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_wait), (gst_base_sink_do_sync),
	(gst_base_sink_handle_event):
	* gst/base/gstbasesink.h:
	No need to store the clock, the parent element class already
	has it.

	* gst/gstbin.c: (gst_bin_set_clock_func), (gst_bin_add_func):
	Updates for clock_set returning a gboolean

	* gst/gstclock.c: (gst_clock_entry_new), (gst_clock_id_wait),
	(gst_clock_id_wait_async), (gst_clock_class_init),
	(gst_clock_init), (gst_clock_finalize),
	(gst_clock_get_internal_time), (gst_clock_get_time),
	(gst_clock_slave_callback), (gst_clock_set_master),
	(gst_clock_get_master), (do_linear_regression),
	(gst_clock_add_observation), (gst_clock_set_property),
	(gst_clock_get_property):
	* gst/gstclock.h:
	Implement master/slave. When setting a clock as a slave, a
	periodic timeout is scheduled to sample master and slave times.
	Then the slave clock is recalibrated to match offset and rate
	of the master clock.
	Update logging a bit.
	Add flag so that a clock can state that is cannot be slaved to
	another clock.

	* gst/gstelement.c: (gst_element_set_clock):
	* gst/gstelement.h:
	The set clock returns a gboolean for when an element cannot
	deal with the selected clock in the pipeline. 

	* gst/gstpipeline.c: (gst_pipeline_change_state),
	(gst_pipeline_set_clock):
	* gst/gstpipeline.h:
	Handle the case where the selected clock cannot be set on
	the pipeline.

	* gst/net/gstnetclientclock.c: (gst_net_client_clock_class_init),
	(gst_net_client_clock_init), (gst_net_client_clock_finalize),
	(gst_net_client_clock_set_property),
	(gst_net_client_clock_get_property),
	(gst_net_client_clock_observe_times):
	* gst/net/gstnetclientclock.h:
	Use regression code in GstClock parent, remove duplicated
	functionality.

2005-11-22  Michael Smith <msmith@fluendo.com>

	* gst/gstutils.c: (gst_util_clock_time_scale):
	* gst/gstutils.h:
	* docs/gst/gstreamer-sections.txt:
	  Rename method to have extra underscore.

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

	* gst/elements/Makefile.am:
	* gst/elements/gstfakesink.c: (gst_fake_sink_state_error_get_type):
	* gst/elements/gstfakesrc.c: (gst_fake_src_data_get_type),
	(gst_fake_src_sizetype_get_type), (gst_fake_src_filltype_get_type),
	(gst_fake_src_init), (gst_fake_src_prepare_buffer),
	(gst_fake_src_alloc_buffer), (gst_fake_src_get_size):
	* gst/elements/gstfakesrc.h:
	* gst/gstqueue.c: (queue_leaky_get_type):
	  correctly fix GEnumValues so that nick is the short lowercase
	  dashed tag
	* tools/gst-inspect.c: (print_element_properties_info):
	  also show the nick, since it's useful to use from parse_launch
	  syntax
	  Fixes #322139

2005-11-22  Michael Smith <msmith@fluendo.com>

	* gst/gstutils.c: (gst_util_clocktime_scale):
	* gst/gstutils.h:
	* docs/gst/gstreamer-sections.txt:
	  Add util method for scaling a clocktime by a fraction. Useful 
	  implementation is left as an exercise for the reader.

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstvalue.c: (gst_value_collect_fraction_range):
	If needed, allocate storage in the destination value during
	collection.

2005-11-22  Edward Hervey  <edward@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gsturitype.c:
	* gst/gsturitype.h:
	* gst/gstutils.c: (gst_util_set_object_arg):
	* tools/gst-compprep.c: (main):
	* tools/gst-inspect.c: (print_element_properties_info):
	Removed GstURI, closes bug #321061

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gststructure.c: (GST_START_TEST):
	* gst/gststructure.c: (gst_structure_parse_value):
	  Oops, broke automatic string type parsing.
	  Add a test to catch it in future.

2005-11-22  Andy Wingo  <wingo@pobox.com>

	* gst/gsttagsetter.c (gst_tag_setter_get_tag_merge_mode) 
	(gst_tag_setter_set_tag_merge_mode, gst_tag_setter_get_tag_list):
	Actually rename the function implementations. Grr.

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/capslist.h:
	  Comment test cases
	* check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite):
	  Test automatic value type detection in gst_structure_from_string.
	* gst/gststructure.c: (gst_structure_parse_value):
	  Add fraction as a type we try and guess automatically in
	  caps/structure strings.

2005-11-22  Andy Wingo  <wingo@pobox.com>

	patch by: Torsten Schoenfeld <kaffeetisch gmx de>

	* gst/gsttagsetter.h:
	* gst/gsttagsetter.c: (gst_tag_setter_merge_tags)
	(gst_tag_setter_add_tags, gst_tag_setter_add_tag_values)
	(gst_tag_setter_add_tag_valist)
	(gst_tag_setter_add_tag_valist_values): Renamed from _merge, _add,
	_add_values, _add_valist, and _add_valist_values. Since this is an
	interface the function suffixes should be more explicit so
	language binding don't end up with element.add_valist ->
	gst_tag_setter_add_valist, for example. Fixes #322069.

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstcaps.c: (GST_START_TEST):
	  Extend caps string tests to check that a caps to string
	  conversion is reversible and produces the same caps.

	* gst/gststructure.c: (gst_structure_value_get_generic_type):
	  Output "fraction" as the generic type fraction range, so caps
	  serialisation and deserialisation works.
	* check/gst/capslist.h:
	* gst/gstvalue.c: (gst_value_deserialize_fraction):
	  Support 'MIN' and 'MAX' for deserialising fractions.

2005-11-22  Andy Wingo  <wingo@pobox.com>

	* gst/gstevent.h (gst_event_new_new_segment)
	(gst_event_parse_new_segment, gst_event_new_buffer_size)
	(gst_event_parse_buffer_size, gst_ghost_pad_new_no_target):
	Renamed from *_newsegment, *_buffersize, *_notarget.

	* scripts/update-funcnames: New script, performs the changes
	listed above.

2005-11-22  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	Make sure the GstFlowReturn is returned.

	* gst/gstbus.c: (gst_bus_add_signal_watch_full),
	(gst_bus_add_signal_watch):
	* gst/gstbus.h:
	add gst_bus_add_signal_watch_full.

	* gst/gstplugin.c: (gst_plugin_load_file):
	Small style cleanup.

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstevent.c: (test_event), (GST_START_TEST):
	  Block the fakesrc srcpad when we send an event, to avoid
	  contention on the stream_lock causing random test failures.

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstvalue.c: (GST_START_TEST):
	* gst/gstvalue.c: (gst_value_fraction_subtract):
	  Fix subtraction.

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

	* gst/gst.h:
	  include "gstchildproxy.h"
	* gst/gstchildproxy.h:
	* libs/gst/controller/gstcontroller.h:
	  use G_GNUC_NULL_TERMINATED

2005-11-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/capslist.h:
	* check/gst/gstcaps.c: (GST_START_TEST):
	* check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	* gst/gststructure.c: (gst_structure_parse_range),
	(gst_structure_fixate_field_nearest_fraction):
	* gst/gststructure.h:
	* gst/gstvalue.c: (gst_value_init_fraction_range),
	(gst_value_free_fraction_range), (gst_value_copy_fraction_range),
	(gst_value_collect_fraction_range),
	(gst_value_lcopy_fraction_range), (gst_value_set_fraction_range),
	(gst_value_set_fraction_range_full),
	(gst_value_get_fraction_range_min),
	(gst_value_get_fraction_range_max),
	(gst_value_serialize_fraction_range),
	(gst_value_transform_fraction_range_string),
	(gst_value_compare_fraction_range),
	(gst_value_deserialize_fraction_range),
	(gst_value_intersect_fraction_fraction_range),
	(gst_value_intersect_fraction_range_fraction_range),
	(gst_value_subtract_fraction_fraction_range),
	(gst_value_subtract_fraction_range_fraction),
	(gst_value_subtract_fraction_range_fraction_range),
	(gst_value_collect_fraction), (gst_value_fraction_multiply),
	(gst_value_fraction_subtract), (gst_value_deserialize_fraction),
	(gst_value_transform_string_fraction), (_gst_value_initialize):
	* gst/gstvalue.h:
	  Implement fraction ranges and extend GstFraction to support
	  arithmetic subtraction, as well as deserialization from integer
	  strings such as "100"
	  Add a testsuite as for int and double range set operations

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gsttaglist.h: 
	* gst/gstcaps.h: 
	* gst/gststructure.h: Add glib-compat.h.

2005-11-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_change_state_func):
	Fix for #321595

2005-11-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.h:
	And add a nice define too.

2005-11-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstsegment.c: (gst_segment_copy), (gst_segment_get_type),
	(gst_segment_new), (gst_segment_free), (gst_segment_init),
	(gst_segment_set_duration), (gst_segment_set_last_stop),
	(gst_segment_set_seek), (gst_segment_set_newsegment),
	(gst_segment_to_stream_time), (gst_segment_to_running_time),
	(gst_segment_clip):
	* gst/gstsegment.h:
	Make binding friendly.

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gsttagsetter.h: 
	* gst/gsttaglist.h: 
	* gst/gststructure.h: 
	* gst/gstcaps.h: 
	* gst/gstutils.h: Sprinkle NULL_TERMINATED to taste. Fixes
	#319940.

	* gst/gsterror.c (_gst_core_errors_init):
	* gst/gsterror.h (GST_CORE_ERROR_MISSING_PLUGIN): New error
	category.

	* gst/Makefile.am (gst_headers): Add glib-compat.h.
	(noinst_HEADERS): noinst the -private.

2005-11-21  Michael Smith <msmith@fluendo.com>

	* gst/gstplugin.h:
	* gst/gstregistry.h:
	  Remove unimplemented declarations for which we can see no sensible
	  use.

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gst.h: Include glib-compat.h.

	* gst/glib-compat.h: Add G_GNUC_NULL_TERMINATED.

	* gst/glib-compat.c: Include the public and the private header.

	* gst/glib-compat-private.h: Copied here from glib-compat.h.

	* gst/gstvalue.c: 
	* gst/gstpad.c: 
	* gst/gstregistryxml.c: s/glib-compat/glib-compat-private/.

	* check/gst/gstevent.c (create_custom_events): Check that
	FLUSH_STOP is serialized.

	* check/elements/identity.c (event_func): 
	* check/elements/fakesrc.c (event_func): No stream lock, the core
	takes it.

	* gst/base/gstbasetransform.c (gst_base_transform_event): No more
	stream lock taking, yay.

	* gst/gstevent.h (GST_EVENT_FLUSH_STOP): Marked as serialized to
	ensure that core takes the stream lock.

	* gst/base/gstbasesrc.c (gst_base_src_do_seek): Update for stream
	lock name change.

	* gst/base/gstbasesink.c (gst_base_sink_event): No need to take
	the stream lock for EOS, NEWSEGMENT, or FLUSH_STOP, the core does
	it already. For the flush start we do take it though so we get the
	right preroll state change messages.

	* gst/gstqueue.c (gst_queue_sink_activate_push): No need to take
	the stream lock here, the core does it for us.

	* gst/gstpad.h (GST_PAD_GET_STREAM_LOCK): Renamed from
	GST_STREAM_GET_LOCK.
	(GST_PAD_STREAM_LOCK, GST_PAD_STREAM_TRYLOCK) 
	(GST_PAD_STREAM_UNLOCK, GST_PAD_STREAM_UNLOCK_FULL) 
	(GST_PAD_STREAM_LOCK_FULL): Renamed from GST_STREAM_*.
	(GST_PAD_GET_PREROLL_LOCK): Renamed from GST_PREROLL_GET_LOCK.
	(GST_PAD_PREROLL_LOCK, GST_PAD_PREROLL_TRYLOCK) 
	(GST_PAD_PREROLL_UNLOCK): Renamed from GST_PREROLL_*.

	* gst/gstpad.c: Update for stream lock name change.

	* gst/base/gstbasesink.c: Update for preroll lock name change.

2005-11-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstclock.c: (gst_clock_init), (gst_clock_set_master),
	(gst_clock_get_master):
	* gst/gstclock.h:
	* gst/gstsystemclock.c: (gst_system_clock_init):
	Convert Clock flags to object flags.
	Added methods to manage master/slave clocks.

2005-11-21  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstsegment.c: (GST_START_TEST):
	* docs/design/part-TODO.txt:
	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_do_sync),
	(gst_base_sink_activate_pull), (gst_base_sink_get_position),
	(gst_base_sink_query), (gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c: (gst_base_src_init), (gst_base_src_query),
	(gst_base_src_default_newsegment),
	(gst_base_src_configure_segment), (gst_base_src_do_seek),
	(gst_base_src_get_range), (gst_base_src_loop),
	(gst_base_src_change_state):
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf),
	(gst_base_transform_event), (gst_base_transform_change_state):
	* gst/base/gstbasetransform.h:
	* gst/base/gstcollectpads.c: (gst_collect_pads_add_pad),
	(gst_collect_pads_event):
	* gst/base/gstcollectpads.h:
	* gst/elements/gstfakesrc.c: (gst_fake_src_init),
	(gst_fake_src_create):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstidentity.c: (gst_identity_transform_ip):
	* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_duration),
	(gst_segment_set_last_stop), (gst_segment_set_seek),
	(gst_segment_set_newsegment), (gst_segment_to_stream_time),
	(gst_segment_to_running_time), (gst_segment_clip):
	* gst/gstsegment.h:
	More segment updates, replace code in plugins with segment
	helper functions.

2005-11-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_uri_set_uri):
	Don't ignore sscanf results

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.h (GST_IS_PAD_FAST): Removed.

	* *.h:
	* *.c: Ran scripts/update-macros. Oh yes.

	* gst/gstobject.h (GST_OBJECT_GET_LOCK, GST_OBJECT_LOCK)
	(GST_OBJECT_TRYLOCK, GST_OBJECT_UNLOCK): Renamed from
	GST_GET_LOCK, etc.

	* scripts/update-macros: New script. Run it on your files to
	change GST_LOCK to GST_OBJECT_LOCK, and the same for UNLOCK as
	well.

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

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* gst/gstinfo.h:
	  more docs fixes, add new api to the docs

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_remove_func): Wim claims I can remove this
	state_broadcast call.

	* gst/gstsegment.c (gst_segment_init): Initialize abs_rate.

2005-11-21  Julien MOUTTE  <julien@moutte.net>

	* gst/gstvalue.c: (gst_value_intersect_array): Fix wrong
	function calls for arrays.

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

	* docs/random/ensonic/media-device-daemon.txt:
	  wild idea, can this be done?
	* docs/gst/gstreamer-sections.txt:
	* gst/gsterror.h:
	* gst/gstfilter.c:
	* gst/gstfilter.h:
	* gst/gstplugin.h:
	* gst/gstpluginfeature.c:
	* gst/gsttrace.c:
	* gst/gstvalue.c:
	* gst/gstvalue.h:
	  doc fixes and additions

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesrc.c (GST_LIVE_BROADCAST, GST_LIVE_SIGNAL) 
	(GST_LIVE_TIMED_WAIT, GST_LIVE_WAIT, GST_LIVE_GET_COND) 
	(GST_LIVE_UNLOCK, GST_LIVE_TRYLOCK, GST_LIVE_LOCK) 
	(GST_LIVE_GET_LOCK): Moved here from gstbasesrc.h. They are
	private to the basesrc implementation.

	* gst/gstpad.c (gst_pad_send_event): Doc more. Take stream lock on
	behalf of event function if necessary. It should no longer be
	necessary to take the stream lock in pad's event functions. Fixes
	#320299.

2005-11-21  Jan Schmidt  <thaytan@mad.scientist.com>
	* docs/gst/gstreamer-sections.txt:
	* gst/gststructure.c: (gst_structure_fixate_field_nearest_int),
	(gst_structure_fixate_field_nearest_double),
	(gst_structure_fixate_field_boolean):
	* gst/gststructure.h:
	* win32/common/libgstreamer.def:
	* win32/gstreamer.def:

	Rename gst_caps_structure_fixate_* to gst_structure_fixate_*
	(#322027)

2005-11-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/elements/gstfdsrc.c: (_do_init), (gst_fdsrc_class_init),
	(gst_fdsrc_init), (gst_fdsrc_dispose), (gst_fdsrc_set_property),
	(gst_fdsrc_uri_get_type), (gst_fdsrc_uri_get_protocols),
	(gst_fdsrc_uri_get_uri), (gst_fdsrc_uri_set_uri),
	(gst_fdsrc_uri_handler_init):
	* gst/elements/gstfdsrc.h:
	  Port fd:// URI handler from 0.8 to fdsrc

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c: (gst_value_transform_fourcc_string),
	(gst_value_serialize_fourcc):
	* gst/gstvalue.h:
	  Drop leading '%' from GST_FOURCC_FORMAT, thus making it
	  consistent with our other format defines (#320324).

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c: (gst_value_is_fixed):
	  Revert previous commit. Value lists are by definition
	  not fixed, as they are a list of possible values.

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gstevent.h (GST_EVENT_FILLER): Removed. Can be added back
	during the stable series if we need it. Fixes #319178.

	* gst/gstevent.c (gst_event_new_filler): Removed.

	* check/gst/gstevent.c: Update comment about filler events.

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstvalue.c: (gst_value_is_fixed):
	  Should handle both value arrays and value lists.

2005-11-21  Andy Wingo  <wingo@pobox.com>

	patch by: Alessandro Dessina <alessandro nnva org>

	* gst/gstvalue.c (gst_value_is_fixed): Use gst_value_array
	functions to access arrays. Fixes #321962.

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer.types:
	  gst_collectpads_get_type => gst_collect_pads_get_type.
	  
	* gst/base/gstbasetransform.c:
	  Remove unused SIGNAL_HANDOFF enum.

2005-11-21  Andy Wingo  <wingo@pobox.com>

	* gst/gstevent.h (GstEventTypeFlags): New data type, the flags of
	the event type (upstream, downstream, serialized). Renamed
	GST_EVDIR_* and GST_EVSER to GST_EVENT_TYPE_*.
	(GstEventType): Use GstEventTypeFlags. Rename CUSTOM_UP to
	CUSTOM_UPSTREAM, CUSTOM_DS to CUSTOM_DOWNSTREAM, etc.

	* gst/gstevent.c: Update for new CUSTOM event names.

	* check/gst/gstevent.c: Update check for new CUSTOM event names.

	* gst/gstevent.h:
	* gst/gstevent.c (gst_event_type_get_flags): New function. Fixes
	bug #319392.

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* win32/common/libgstbase.def:
	* win32/libgstbase.def:
	* gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
	(gst_collect_pads_class_init), (gst_collect_pads_init),
	(gst_collect_pads_finalize), (gst_collect_pads_new),
	(gst_collect_pads_set_function), (gst_collect_pads_add_pad),
	(gst_collect_pads_remove_pad), (gst_collect_pads_is_active),
	(gst_collect_pads_collect), (gst_collect_pads_collect_range),
	(gst_collect_pads_start), (gst_collect_pads_stop),
	(gst_collect_pads_peek), (gst_collect_pads_pop),
	(gst_collect_pads_available), (gst_collect_pads_read),
	(gst_collect_pads_flush), (gst_collect_pads_event),
	(gst_collect_pads_chain):
	* gst/base/gstcollectpads.h:
	  Rename gst_collecpads_foo() => gst_collect_pads_foo(). Document
	  unimplemented functions as unimplemented. Add padding to
	  GstCollectData. (#320766, #320423)

2005-11-21  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstmessage.c:
	  Improve docs for DURATION message (usage of duration parameter)
	  (#320113)

2005-11-20  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* check/gst/gstsegment.c: (GST_START_TEST), (gstevents_suite),
	(main):
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_duration),
	(gst_segment_set_seek), (gst_segment_set_newsegment),
	(gst_segment_to_stream_time), (gst_segment_to_running_time),
	(gst_segment_clip):
	* gst/gstsegment.h:
	Added segment helper structure and methods. Not fully implemented
	yet.
	Added segment check.

2005-11-20  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	  Add a deserialisation test for fractions
	* examples/metadata/read-metadata.c: (message_loop),
	(make_pipeline), (main):
	  Fix up metadata reading sample.
	* gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	  Debug format fix
	* gst/base/gstbasesrc.c: (gst_base_src_default_negotiate):
	  Don't try and fixate empty caps
	* gst/gst_private.h:
	  Wrap in G_BEGIN_DECLS/G_END_DECLS
	* gst/gstvalue.c: (gst_value_collect_fraction),
	(gst_value_set_fraction), (gst_value_get_fraction_denominator),
	(gst_value_transform_string_fraction),
	(gst_value_compare_fraction):
	  Add some extra guards to ensure that we don't end up 
	  with an invalid denominator of 0 in a gstfraction and
	  that fractions always get reduced.

2005-11-20  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstbuffer.h:
	* gst/gstelement.c:
	* gst/gstformat.c:
	* gst/gstformat.h:
	* gst/gstindex.h:
	* gst/gstquery.c:
	* gst/gstquery.h:
	* gst/gstvalue.c:
	Doc fixes.

2005-11-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* gst/gstcaps.h:
	Make a proper enum of the flag.

2005-11-19  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* gst/gstformat.c: (_gst_format_initialize), (gst_format_get_name),
	(gst_format_to_quark), (gst_format_register):
	* gst/gstformat.h:
	* gst/gstquery.c: (_gst_query_initialize),
	(gst_query_type_get_name), (gst_query_type_to_quark),
	(gst_query_type_register):
	* gst/gstquery.h:
	Add type to quark and type to string conversions.

2005-11-19  Andy Wingo  <wingo@pobox.com>

	* gst/gstbuffer.h (GST_BUFFER_FLAG_ORIGINAL): Removed. Fixes
	#320097.

2005-11-19  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_provide_clock_func),
	(gst_bin_add_func), (gst_bin_remove_func), (bin_bus_handler),
	(gst_bin_handle_message_func):
	* gst/gstbin.h:
	Make message handling overridable.

2005-11-19  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.h (GST_PAD_IS_USABLE): Removed. Fixes #321235.

	* gst/gstclock.h:
	* gst/gstclock.c (GstClock, GstClockClass): Change resolution to
	be a GstClockTime.
	(gst_clock_set_resolution, gst_clock_get_resolution): Resolution
	is a GstClockTime. Fixes #321710.

	* gst/gstclock.h (GstClock): Remove offset property. Add
	internal_calibration and external_calibration. Fix padding. Pad
	also by GstClockTime so we don't run into problems.

	* gst/gstclock.c (gst_clock_set_rate_offset): Remove.
	(gst_clock_get_rate_offset): Remove.
	(gst_clock_set_time_adjust): Remove. Fixes #321712.

	* gst/gstutils.h:
	* gst/gstutils.c (g_static_rec_cond_wait)
	(g_static_rec_cond_timed_wait): Removed, no longer needed.

	* gst/gstbin.c: Remove terrible continue_state prototype.

	* gst/gstelement.h (gst_element_continue_state): Make public.

	* gst/gstelement.h:
	* gst/gstelement.c (gst_element_commit_state): Removed, replaced
	by continue_state. Fixes #319389.

	* gst/gstindex.h (GstIndexFilter): Actually pass on the user_data.
	Really fixes #168438. However I don't see anywhere where the
	filter function is called... stupid GStreamer...
	
	* gst/gstindex.h (GstIndex): Add field for user_data_destroy. We
	don't have a dispose function, so it won't get called when the
	object is unreffed, but oh well!

	* gst/gstindex.c (gst_index_set_filter_full): New API function,
	allows a destroy function to be set so user_data can be freed.
	Fixes #168438.
	(gst_index_set_filter): Call gst_index_set_filter_full.

	* check/gst/gstvalue.c (test_string): Add test for bug #165650.

	* gst/gstvalue.c (gst_string_wrap): Trying to serialize a NULL
	string should produce an error, given the lack of a way to
	represent NULL strings. Fixes #165650.
	
	* gst/gstvalue.h: 
	* gst/gstvalue.c (gst_value_array_append_value) 
	(gst_value_array_prepend_value, gst_value_array_get_size) 
	(gst_value_array_get_value): New API, copied from
	gst_value_list_*, only operates on arrays.
	(gst_value_list_append_value, gst_value_list_prepend_value) 
	(gst_value_list_concat, gst_value_list_get_size) 
	(gst_value_list_get_value): Only operate on lists. Fixes #156633.

	* gst/gstvalue.c (gst_value_init_list_or_array): Renamed from
	init_list, because it works on both.
	(copy_garray_of_gstvalue): Renamed from gst_value_list_copy_array.
	(gst_value_copy_list_or_array): Renamed from copy_list.
	(gst_value_free_list_or_array): Renamed from free_list.
	(gst_value_collect_list_or_array): Renamed from collect_list.
	(gst_value_lcopy_list_or_array): Renamed from lcopy_list.
	(gst_value_list_or_array_peek_pointer): Renamed from
	list_peek_pointer.
	(_gst_value_array_value_table, _gst_value_list_value_table):
	Update value table functions.
	(gst_value_compare_list_or_array): Renamed from compare_list.

	* gsttaglist.h: Whoops, foreach function returns void. Also fix
	some constness.

	* gst/gsttaglist.c:
	* gst/gsttaglist.h (gst_tag_list_foreach): Operates on a const
	GstTagList*. Fixes #143472.

	* gst/gststructure.h: Clarify what the foreach/map functions can
	or can't do to their arguments.

2005-11-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstclock.c: (gst_clock_set_calibration),
	(gst_clock_get_calibration):
	Doc and API fixes.
	Calibration can be set with internal time equal to current
	internal time too.

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

	* gst/gsterror.c:
	* gst/gsterror.h:
	  document

2005-11-18  Andy Wingo  <wingo@pobox.com>

	* configure.ac: 
	* pkgconfig/gstreamer-net.pc.in:
	* pkgconfig/gstreamer-net-uninstalled.pc.in:
	* pkgconfig/Makefile.am: Add net pkgconfig files.

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

	* gst/gstcaps.c:
	* gst/gstghostpad.c:
	* gst/gsttrace.c:
	* gst/gstvalue.c:
	* gst/gstvalue.h:
	  docs fixes

2005-11-18  Andy Wingo  <wingo@pobox.com>

	* gst/net/gstnetclientclock.c: Turn off debugging.

	* check/net/gstnetclientclock.c (test_functioning): Assert that the
	times connverge somewhat. Can't make a real test.

	* gst/net/gstnetclientclock.c (do_linear_regression): Use all
	integer arithmetic. Return the minimum of the domain, which can be
	set as "internal" for gst_clock_set_calibration.
	(gst_net_client_clock_observe_times): Call _set_calibration.
	(gst_net_client_clock_new): Call _set_calibration instead of
	rate_offset.

	* check/net/gstnetclientclock.c (test_functioning): Use the right
	adjustment api.

	* gst/gstclock.h:
	* gst/gstclock.c (gst_clock_get_calibration) 
	(gst_clock_set_calibration): New functions, obsolete the ones I
	added yesterday. Doh. Precision issues mean we have to extrapolate
	from a point in the more recent past than 1970.
	(gst_clock_get_rate_offset, gst_clock_set_rate_offset): Mark as
	obsolete.
	(gst_clock_adjust_unlocked): Use the right calibration data.

2005-11-18  Edward Hervey  <edward@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_change_state): 
	Also reset the ->current_* values in READY->PAUSED

2005-11-18  Andy Wingo  <wingo@pobox.com>

	* gst/net/gstnetclientclock.c (gst_net_client_clock_thread):
	Whoops, check the right fd. Also add some debugging.
	(gst_net_client_clock_observe_times): Adjust for int64 offset.
	(do_linear_regression): Add a crapload of debugging. Subtract off
	the minimum values from the input series to discard unneeded bits.
	Use only int arithmetic. There is still double arithmetic when
	calculating the intercept that needs fixing. Return boolean to
	indicate success; FALSE would mean the domain or range is too
	great. Still needs fixes.

2005-11-18  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_get_position):
	For the current position in stream time, we need to subtract
	accumulated time.
	
	* gst/gstsystemclock.c: (gst_system_clock_async_thread):
	Release lock before calling the callback function of async
	entries.

2005-11-18  Andy Wingo  <wingo@pobox.com>

	* gst/net/gstnetclientclock.c (gst_net_client_clock_class_init):
	Port goes all the way to MAXUINT16.

	* gst/net/gstnettimeprovider.c: Make the port range the same as
	for the kernel: 0 assigns, otherwise ports are less than
	MAXUINT16.

	* check/net/gstnettimeprovider.c: Adapt for 0 == kernel assigns
	port change.

	* check/net/gstnetclientclock.c (test_functioning): Add the start
	of another test. 

2005-11-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func),
	(gst_bin_remove_func), (bin_bus_handler):
	* gst/gstbin.h:
	Removing a clock provider from a bin, triggers a clock lost message
	so that a new clock will be selected.
	Adding a clock to a bin triggers a clock provider message.
	Make sure we reselect a clock when we received a clock lost message.
	Keep a reference to the element that provided the clock.

2005-11-18  Andy Wingo  <wingo@pobox.com>

	* gst/net/gstnetclientclock.c (gst_net_client_clock_new): Adjust
	the clock initially so it produces values around the base time.
	(gst_net_client_clock_class_init): Typo fix.
	(gst_net_client_clock_thread): Add note on when the socket gets
	closed.

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

	* gst/net/gstnetclientclock.c: (gst_net_client_clock_finalize):
	Free remote and local time arrays.

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

	* gst/net/gstnetclientclock.c: (do_linear_regression),
	(gst_net_client_clock_do_select), (gst_net_client_clock_thread):
	Fix compilation, uninitialized vars and a forgotten continue.

2005-11-17  Andy Wingo  <wingo@pobox.com>

	* check/Makefile.am (check_PROGRAMS): 
	* check/net/gstnetclientclock.c: Add a most minimal test for the
	net client clock. More to come later.

	* gst/net/gstnet.h: 
	* gst/net/Makefile.am: Add netclientclock.

	* gst/net/gstnetclientclock.h:
	* gst/net/gstnetclientclock.c: New files, implement an untested
	GstClock that takes its time from a network time provider.
	Implements the algorithm in network-clock.scm.

	* tests/network-clock.scm (*window-size*): Rename from
	*queue-length*.
	* tests/network-clock.scm (network-time): 
	* tests/network-clock-utils.scm (q-push): Update callers.

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

	* gst/gstbin.c: (gst_bin_provide_clock_func),
	(gst_bin_sort_iterator_new):
	And unref the child too..

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

	* gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func),
	(gst_bin_sort_iterator_new), (gst_bin_iterate_sorted):
	Refactor the sort iterator so it can be used while holding the
	LOCK too.
	Make clock selection select a clock closest to the source.

2005-11-17  Michael Smith <msmith@fluendo.com>

	* gst/gstclock.c: (gst_clock_init), (gst_clock_adjust_unlocked),
	(gst_clock_set_rate_offset), (gst_clock_get_rate_offset):
	* gst/gstclock.h:
	  Anonymous structs are a gcc (and some other compilers) extension, so
	  don't use them. Since this is only for ABI-compatibility, and our
	  API/ABI freeze is over in a few days, this whole thing will only
	  last a few days, so don't bother trying to think up a meaningful
	  name for the struct.

2005-11-17  Andy Wingo  <wingo@pobox.com>

	* gst/gstclock.h (GstClock): Add rate and offset properties,
	preserving ABI stability. Add rate/offset accessors. Will file bug
	for the freeze break.

	* gst/gstclock.c (gst_clock_adjust_unlocked): Implement using rate
	and offset, trying to keep precision and avoiding
	underflow/overflow.
	(gst_clock_set_rate_offset, gst_clock_get_rate_offset): New
	functions. Make gst_clock_set_time_adjust obsolete.
	(gst_clock_set_time_adjust): Note that this function is obsolete.
	Will file bug soon.

	* gst/base/gstbasetransform.h: Make the ABI-stability hack
	greppable by using GST_PADDING-1+1.

2005-11-17  Torsten Schoenfeld  <kaffeetisch at gmx dot net>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstmessage.c: (gst_message_parse_clock_lost):
	  Assertion should check for CLOCK_LOST, not NEW_CLOCK (#321648).

	* gst/gstpadtemplate.h:
	* gst/gstpluginfeature.h:
	  Don't use c++ style comments in headers (#321638).

2005-11-16  Andy Wingo  <wingo@pobox.com>

	* gst/net/gstnettimepacket.c (gst_net_time_packet_send): Free
	buffer.

	* check/net/gstnettimeprovider.c: Check to see that the time
	provider actually provides times. Works, yo!

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	Enable more tests.

	* check/elements/fakesrc.c: (GST_START_TEST):
	Set element to NULL before disposing it.

2005-11-16  Andy Wingo  <wingo@pobox.com>

	* gst/net/Makefile.am:
	* gst/net/gstnet.h:
	* gst/net/gstnettimeprovider.c: 
	* gst/net/gstnettimeprovider.h: Use the timepacket stuff in the
	provider, include it from gstnet.h, and add it to the build.

	* gst/net/gstnettimepacket.h: 
	* gst/net/gstnettimepacket.c: New files, abstracts out the packet
	sending and receiving.

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	Enable valgrind check.

	* gst/elements/gstfakesrc.c: (gst_fake_src_alloc_parent),
	(gst_fake_src_alloc_buffer):
	Fix memleak.

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* gst/net/gstnettimeprovider.c: (gst_net_time_provider_finalize):
	Call parent finalize too.

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	Enable valgrind check that should work fine now.

	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init):
	* gst/gstqueue.c: (gst_queue_init):
	Fix memleaks in pad allocation.

2005-11-16  Andy Wingo  <wingo@pobox.com>

	* gst/net/Makefile.am:
	* gst/net/gstnet.h: New part of core to hold network elements and
	objects. Put in core because it exposes API that applications want
	to use. The library is named libgstnet-tempname right now because
	of the existing libgstnet in gst-plugins-base. Solution is
	probably to rename the one in plugins-base; will file a bug for
	the freeze break.

	* gst/net/gstnettimeprovider.c: 
	* gst/net/gstnettimeprovider.h: New object to export a GstClock's
	get_time call over the network.

	* configure.ac: 
	* gst/Makefile.am (lib_LTLIBRARIES): Add gstnet to the build.

	* check/Makefile.am:
	* check/net/gstnettimeprovider.c: A most minimal test suite. Will
	get additions shortly.

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

	* gst/gstpad.c: (gst_pad_new_from_static_template):
	* gst/gstpad.h:
	  add gst_pad_new_from_static_template functions
	* gst/check/gstcheck.c: (gst_check_setup_src_pad),
	(gst_check_setup_sink_pad):
	* gst/elements/gsttee.c: (gst_tee_init):
	  and use them

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_pause_task):
	Removed warning, it's not really an error either.

2005-11-16  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf),
	(gst_base_transform_event):
	Check if the caps are NULL, this can happen if the element
	is shutting down and the pad caps are set to NULL.

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

	* gst/elements/gsttee.c: (gst_tee_init):
	  fix pad template leak in tee

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

	* gst/glib-compat.c: (g_value_dup_gst_object):
	* gst/glib-compat.h:
	* gst/gstpad.c: (gst_pad_set_property):
	  use gst_object_ref when setting the pad template; this will
	  trigger the pad template leaks on GLib 2.6 and the slaves

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

	* gst/glib-compat.c: (gst_flags_get_first_value):
	* gst/glib-compat.h:
	* gst/gstregistryxml.c:
	  remove functions copied from GLib 2.6

2005-11-16  Michael Smith <msmith@fluendo.com>

	* gst/Makefile.am:
	  Don't link against VALGRIND_LIBS. That was always the wrong thing to
	  do, but only breaks with newer valgrind versions. We're not a
	  valgrind tool, we have no link-time dependencies on libcoregrind.

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

	* gst/base/gstbasesrc.c: (gst_base_src_default_negotiate):
	  some debug changes
	* gst/gstmessage.h:
	  typo fixes

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

	* gst/base/gstbasesrc.c: (gst_base_src_init):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init):
	* gst/gstqueue.c: (gst_queue_init):
	* gst/gstregistryxml.c: (load_feature):
	  Revert all these unrefs, they don't even pass make check !

2005-11-15  Johan Dahlin  <johan@gnome.org>

	* gst/base/gstbasesrc.c: (gst_base_src_init):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init):
	* gst/gstqueue.c: (gst_queue_init): 
	Free pad templates, fixes a couple of leaks.

2005-11-15  Daniel Fischer  <dan at f3c dot com>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.c: (gst_pad_get_property):
	  GST_PAD_PAD_TEMPLATE(pad) gets the pad template, while
	  GST_PAD_TEMPLATE(pad) does a cast. We want the former here.
	  (#321452)

2005-11-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c:
	Small doc update.

2005-11-15  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_set_base_time): Add debugging.

	* gst/gstpipeline.c (gst_pipeline_set_new_stream_time): Document
	using GST_CLOCK_TIME_NONE to disable base time management.
	(do_pipeline_seek, gst_pipeline_change_state): Don't reset stream
	time if it was NONE before.
	(gst_pipeline_change_state): Only munge the base time if
	stream_time != GST_CLOCK_TIME_NONE.

	* check/gst/gstpipeline.c (test_base_time): Punt around the
	problem of the probe not being called, because that's not the
	issue I'm looking at. Add a check that setting stream_time to NONE
	disables base time management.
	
2005-11-15  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_change_state):
	segment_stop == -1 at startup.

	* gst/base/gstbasetransform.c: (gst_base_transform_event),
	(gst_base_transform_change_state):
	Init segment values at start.

2005-11-15  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	0 segment values are 0 in any format.

	* gst/base/gstbasetransform.c: (gst_base_transform_event):
	* gst/base/gstbasetransform.h:
	Parse newsegment correctly in basetransform

	* gst/elements/gstidentity.c: (gst_identity_transform_ip):
	Sync to clock using updated segment values.

2005-11-15  Andy Wingo  <wingo@pobox.com>

	* check/gst/gstpipeline.c (test_base_time): Add check that the
	base time and stream time are reset correctly.

2005-11-15  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Some more TODO items.

2005-11-15  Andy Wingo  <wingo@pobox.com>

	* gst/elements/gstfakesrc.c (gst_fake_src_create): It's not an
	error if the user selected "no clock" as the clocking method.

	* check/gst/gstpipeline.c (test_base_time): New test for buffer
	timestamps with live capture.

	* gst/elements/gstfakesrc.c (gst_fake_src_create): If the datarate
	is 0 but we are a live source, timestamp the buffers using the
	element's clock.

2005-11-14  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsterror.c:
	* gst/gstghostpad.c:
	* gst/gstobject.h:
	* gst/gstxml.c:
	  more section docs

2005-11-14  Wim Taymans  <wim@fluendo.com>

	* common/gst.supp:
	  add suppressions from Wim's Debian machine

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

	* common/gst.supp:
	  add suppressions from Andy's AMD64 Ubuntu machine

2005-11-14  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_set_active): Change docs; parent's
	STATE_LOCK not necessary. Fixes #311489.

	* gst/gsterror.c (FILE_A_BUG): Be polite *and* helpful. Fixes
	#305291.

	* gst/gstindex.c (gst_index_add_object): Note in the docs that
	this function is not implemented.

2005-11-14  Julien MOUTTE  <julien@moutte.net>

	* gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf):
	Ref the source pad caps while we need them.
	Fixes (#321386)

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

	* docs/gst/gstreamer-sections.txt:
	Added some docs for GstCollectData.

	* gst/base/gstadapter.c:
	Some small code example fix.

	* gst/base/gstcollectpads.c:
	* gst/base/gstcollectpads.h:
	Document some more.

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

	* configure.ac: back to HEAD

=== release 0.9.5 ===

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

	* configure.ac:
	  releasing 0.9.5, "Bike Lunch Day"

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

	* gst/gstbuffer.c: (_gst_buffer_copy):
	Copy more flags.

	* gst/gstcaps.c: (gst_caps_is_equal):
	Fix some docs.
	Make _is_equal fast in the trivial cases.

	* gst/gstminiobject.c:
	* gst/gstminiobject.h:
	More docs. Spifify .h file.

	* gst/gstutils.c:
	Small doc update.

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

	* gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buf),
	(gst_base_transform_handle_buffer):
	Small cleanups.
	If we're processing a buffer and need to allocate an output
	buffer, we cannot accept a format change. If we did get a 
	format change, we have to alloc a buffer ourselves of the 
	right size.

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

	* gst/gstpad.c: (gst_pad_get_caps), (gst_pad_peer_get_caps):
	While checking the flag for reentrancy in the gstcaps function
	is nice to detect recursive invocations, it also makes it 
	impossible to call getcaps from multiple threads, which must be
	possible. So, checking for recursive calls has to go.

2005-11-11  Michael Smith <msmith@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	  Don't sync on buffers that fall partially outside our current
	  segment. Prevents an assertion failure/abort playing some files.

2005-11-10  Andy Wingo  <wingo@pobox.com>

	* check/gst/gstbin.c (test_message_state_changed_children): Style
	fix..

	* gst/gstbus.c (poll_destroy, poll_func, gst_bus_poll): Implement
	gst_bus_poll with the signal watch. Ensures that poll and a signal
	watch see the same messages.

	* check/gst/gstbus.c (test_watch_with_poll): New test, checks that
	a poll and a watch at the same time get the same messages.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps):
	* gst/gstcaps.c: (gst_caps_intersect):
	  Don't call gst_caps_do_simplify - it doesn't respect order of caps
	  and it's not needed.

2005-11-10  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Updated todo.

2005-11-10  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	* gst/base/gstbasesrc.c: (gst_base_src_wait),
	(gst_base_src_do_sync), (gst_base_src_get_range):
	Implement clock sync in base class.

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

	patch by: Tim-Philipp Müller <tim at centricular dot net>

	* gst/gststructure.c: (gst_structure_parse_field),
	(gst_structure_from_string):
	  Forward-port a 0.8 patch to handle escaped spaces in structure string,
	  so that gst_parse_launch() can deal with spaces in filtered link
	  caps (fixes #164479)
	* check/gst/capslist.h:
	* check/gst/gststructure.c: (GST_START_TEST):
	  add unit tests for this change

2005-11-10  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.c:
	* gst/gstelement.h:
	Fix docs, move some STATE macros to private.

2005-11-10  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstghostpad.c: (GST_START_TEST), (gst_ghost_pad_suite):
	Added check for bug #317341

	* gst/gstbuffer.c:
	* gst/gstbuffer.h:
	Some more spiffifying.

	* gst/gstghostpad.c: (gst_ghost_pad_do_link):
	Call peer linkfunction if we are a source pad. Totally fixes
	#317341

	* gst/gstpad.c:
	Update docs, source pads should call the peer linkfunction
	so they can atomically perform the pad link.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c:
	* gst/gstbuffer.h:
	Uber-spiffy-spiffify some more.

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

	* gst/base/gstcollectpads.c: (gst_collectpads_add_pad):
	* gst/elements/gstfilesink.c: (gst_file_sink_init):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init):
	* gst/gstghostpad.c: (gst_ghost_pad_set_internal),
	(gst_ghost_pad_init), (gst_ghost_pad_new_notarget):
	* gst/gstpad.c: (gst_pad_init):
	  Use GST_DEBUG_FUNCPTR() more extensively.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstobject.c: (gst_object_class_init):
	* gst/gstobject.h:
	Documentation fixes.

2005-11-09  Edward Hervey  <edward@fluendo.com>

	* gst/gsttypefindfactory.c:
	Fix docs.
	
2005-11-09  Edward Hervey  <edward@fluendo.com>

	* gst/base/gsttypefindhelper.c:
	* gst/gsttypefind.c:
	* gst/gsttypefind.h:
	Fix docs.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstiterator.c:
	Fix revision data.

	* gst/gsttask.c:
	* gst/gsttask.h:
	Fix docs.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.h:
	* gst/gsturi.h:
	Fix docs.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Moved the message async delivery private lock and cond
	to the private section.

	* gst/gstmessage.c:
	* gst/gstmessage.h:
	Fixed docs.

2005-11-09  Edward Hervey  <edward@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsturi.c:
	* gst/gsturi.h:
	Document GstURIHandler

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstiterator.c: (gst_iterator_fold), (gst_iterator_foreach),
	(gst_iterator_find_custom):
	* gst/gstiterator.h:
	Fix iterator docs.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.h:
	Document another field.

	* gst/gststructure.c:
	* gst/gststructure.h:
	Document.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.h:
	Documented structs.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	Added some new macros.

	* gst/gstclock.c:
	* gst/gstclock.h:
	* gst/gstobject.h:
	Docs updates.

2005-11-09  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Some more items for the TODO

	* gst/gstcaps.c:
	* gst/gstcaps.h:
	Document GstCaps.

2005-11-09  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesink.c: Add the beginning of docs here -- have
	to work on something else now tho...

	* gst/base/gstadapter.c: More adapter docs.

	* gst/elements/gstfilesink.c (gst_file_sink_start) 
	(gst_file_sink_stop): New functions, replace the state change
	handler.
	(gst_file_sink_class_init): Hook up the start and stop functions.
	(gst_file_sink_base_init): Don't set the state change handler any
	more. It was a bit ugly too, being set from here...
	(gst_file_sink_get_property, gst_file_sink_set_property):
	Cleanups...
	(gst_file_sink_set_location): More robust check that doesn't call
	GST_STATE. Ugggggg.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_event):
	  Hold STREAM_LOCK while pushing newsegment or tag events as well.

2005-11-08  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
	(gst_base_sink_do_sync), (gst_base_sink_handle_event),
	(gst_base_sink_chain), (gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.h:
	* gst/gstelement.h:
	* gst/gstevent.h:
	Avoid excessive typechecking in macros.

	* gst/gstminiobject.c: (gst_mini_object_get_type),
	(gst_mini_object_init), (gst_mini_object_new),
	(gst_mini_object_free):
	* gst/gstobject.c: (gst_object_class_init), (gst_object_init),
	(gst_object_finalize):
	Remove cruft code, optimize alloc_trace.

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

	* docs/faq/gst-uninstalled:
	  fix up PS1 for systems that try to reset it

2005-11-07  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_init),
	(gst_base_src_get_range):
	Set the segment_end to -1 initially. Fixed typefind.

2005-11-07  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstadapter.c:
	  Debug category should be 'adapter', not 'GstAdapter'.
	  
	* gst/base/gstcollectpads.c: (gst_collectpads_base_init),
	(gst_collectpads_class_init), (gst_collectpads_init),
	(gst_collectpads_peek), (gst_collectpads_pop),
	(gst_collectpads_event), (gst_collectpads_chain):
	  Add debug category and some debugging output. Use boilerplate
	  macros. Remove some extraneous words from docs.

2005-11-05  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstpushsrc.c: Shorten by 30% via use of boilerplate
	macro.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.h:
	* gst/gstinfo.c:
	* gst/gstminiobject.h:
	* gst/gstobject.h:
	* gst/gstutils.h:
	  more docs added

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

	* gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Small update to stop at the configured segment_end
	position.

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

	* gst/gstregistry.c:
	* gst/gstregistry.h:
	  added missing docs

2005-11-04  Edward Hervey  <edward@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Check if we are doing a segment seek and have arrived at the
	end of that segment.

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

	* gst/gstbus.c: (gst_bus_post), (gst_bus_set_sync_handler):
	Don't leak a mutex unlock in case of an error.

	* gst/gstbus.h:
	Doc fixes.

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

	* gst/gstbus.c: (gst_bus_class_init), (gst_bus_init),
	(gst_bus_post):
	Get the context to wake up only once.

2005-11-03  Wim Taymans  <wim@fluendo.com>

	* check/states/sinks.c: (GST_START_TEST):
	Uncomment fixed check.

	* docs/design/part-TODO.txt:
	Updated TODO.

	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_do_sync),
	(gst_base_sink_get_position):
	If we are going to PLAYING, post the right pending state
	when we post the intermediate paused message.

	* gst/gstelement.c: (gst_element_continue_state),
	(gst_element_set_state_func), (gst_element_change_state):
	Don't post state changes that were between the same state
	and were not ASYNC.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstcaps.h:
	* gst/gstinfo.c:
	* gst/gstminiobject.h:
	* gst/gstobject.h:
	* gst/gstutils.h:
	  more docs and doc style fixes

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.c:
	* gst/gstminiobject.c:
	doc fixes

2005-11-03  Andy Wingo  <wingo@pobox.com>

	* check/states/sinks.c (test_livesrc_sink): Add checks that the
	state-changed messages actually have the right order and the right
	values.

2005-11-03  Wim Taymans  <wim@fluendo.com>

	* check/states/sinks.c: (GST_START_TEST), (gst_object_suite):
	Added some more checks. Specifically the case where NO_PREROLL
	elements are in the pipeline.

	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_do_sync),
	(gst_base_sink_get_position):
	Post READY->PAUSED state change messages too.
	Fix bug where VOID was posted as pending state...

	* gst/gstbin.c: (gst_bin_recalc_state):
	use _element_continue_state() to continue the state change.

	* gst/gstelement.c: (gst_element_continue_state),
	(gst_element_commit_state), (gst_element_set_state_func),
	(gst_element_change_state), (gst_element_change_state_func):
	Lots of state change cleanups, assign the STATE_RETURN in
	a new continue_state() function that also propagates the
	last return value from a state change to the app.
	Update some debug statements with proper category.

2005-11-03  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-events.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-seeking.txt:
	* docs/design/part-states.txt:
	* docs/design/part-trickmodes.txt:
	* docs/manual/advanced-position.xml:
	Small docs updates.

	* gst/gstobject.h:
	People think !! is ugly, this looks better.

	* gst/gstpad.c: (gst_pad_set_blocked_async):
	Remove !! since it's fixed elsewhere now.

2005-11-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstminiobject.h:
	* gst/gstobject.h:
	  Add !! to _FLAG_IS_SET macros to make the result boolean.

2005-11-03  Edward Hervey  <edward@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_blocked_async):
	comparing a flag and a gboolean rarely returns coherent results...
	Added two characters (!!) to make that work correctly.
	
2005-11-03  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbus.c: (gst_bus_class_init):
	  Fix some typos.
	  
	* gst/gstqueue.c: (gst_queue_loop):
	  Don't assume a miniobject that isn't a buffer is an
	  event (it could be that there is a refcounting
	  problem somewhere and the pointer is stale and
	  refers to an already destroyed miniobject).

2005-11-03  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_alloc_buffer): Fix some typos.

2005-11-03  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/manual/advanced-position.xml:
	  Update seek example and explanations to current 0.9 API.

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_activate):
	  Remove FIXME comment now that the found caps
	  are unreffed.

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

	* gst/gstregistryxml.c: (load_feature):
	  Add another GST_STR_NULL instance

2005-11-02  Edward Hervey  <edward@fluendo.com>

	* gst/gstpad.c: (handle_pad_block):
	Follow-up to Wim's patch, solves deadlock for blocked and flushing pads
	
2005-11-02  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c:
	Fix typo in docs.

	* gst/gstelement.c: (gst_element_commit_state):
	Remove unused value.

	* gst/gstiterator.c:
	Mention that the returned element is reffed in the docs.

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

	* gst/gstpad.c: (gst_pad_alloc_buffer), (handle_pad_block),
	(gst_pad_push), (gst_pad_push_event):
	Unlock blocked pads when they are flushed.

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

	* docs/README:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstbin.c:
	  doc updates
	* gst/gstregistry.c: (gst_registry_scan_path_level):
	  fix for a nasty little missed situation where an installed plug-in
	  which was in the cache did not get overridden by an uninstalled one
	  which was earlier in the plugin path because the newly created plugin
	  for the uninstalled one (not in the registry) didn't get its
	  ->registered set to TRUE

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

	* gst/base/gstcollectpads.c: (gst_collectpads_set_function),
	(gst_collectpads_add_pad), (gst_collectpads_remove_pad),
	(gst_collectpads_is_active), (gst_collectpads_collect),
	(gst_collectpads_collect_range), (gst_collectpads_start),
	(gst_collectpads_stop), (gst_collectpads_peek),
	(gst_collectpads_pop), (gst_collectpads_available),
	(gst_collectpads_read), (gst_collectpads_flush):
	  Guard public API with assertions.
	
	* gst/gstpad.c:
	  Fix docs for gst_pad_set_link_function().

2005-11-02  Johan Dahlin  <johan@gnome.org>

	* gst/elements/gsttypefindelement.c (gst_type_find_element_activate): 
	Unref found_caps after we used it.

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

	* gst/base/gstcollectpads.c: (gst_collectpads_peek):
	  Don't try to ref NULL.

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

	* win32/common/config.h.in:
	  provide a GST_FUNCTION that just gives a string for now

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

	* win32/common/gstenumtypes.c: (register_gst_object_flags),
	(gst_object_flags_get_type), (register_gst_bin_flags),
	(gst_bin_flags_get_type), (register_gst_buffer_flag),
	(gst_buffer_flag_get_type), (register_gst_bus_flags),
	(gst_bus_flags_get_type), (register_gst_bus_sync_reply),
	(gst_bus_sync_reply_get_type), (register_gst_clock_return),
	(gst_clock_return_get_type), (register_gst_clock_entry_type),
	(gst_clock_entry_type_get_type), (register_gst_clock_flags),
	(gst_clock_flags_get_type), (register_gst_state),
	(gst_state_get_type), (register_gst_state_change_return),
	(gst_state_change_return_get_type), (register_gst_state_change),
	(gst_state_change_get_type), (register_gst_element_flags),
	(gst_element_flags_get_type), (register_gst_core_error),
	(gst_core_error_get_type), (register_gst_library_error),
	(gst_library_error_get_type), (register_gst_resource_error),
	(gst_resource_error_get_type), (register_gst_stream_error),
	(gst_stream_error_get_type), (register_gst_event_type),
	(gst_event_type_get_type), (register_gst_seek_type),
	(gst_seek_type_get_type), (register_gst_seek_flags),
	(gst_seek_flags_get_type), (register_gst_format),
	(gst_format_get_type), (register_gst_index_certainty),
	(gst_index_certainty_get_type), (register_gst_index_entry_type),
	(gst_index_entry_type_get_type),
	(register_gst_index_lookup_method),
	(gst_index_lookup_method_get_type), (register_gst_assoc_flags),
	(gst_assoc_flags_get_type), (register_gst_index_resolver_method),
	(gst_index_resolver_method_get_type), (register_gst_index_flags),
	(gst_index_flags_get_type), (register_gst_debug_level),
	(gst_debug_level_get_type), (register_gst_debug_color_flags),
	(gst_debug_color_flags_get_type), (register_gst_iterator_result),
	(gst_iterator_result_get_type), (register_gst_iterator_item),
	(gst_iterator_item_get_type), (register_gst_message_type),
	(gst_message_type_get_type), (register_gst_mini_object_flags),
	(gst_mini_object_flags_get_type), (register_gst_pad_link_return),
	(gst_pad_link_return_get_type), (register_gst_flow_return),
	(gst_flow_return_get_type), (register_gst_activate_mode),
	(gst_activate_mode_get_type), (register_gst_pad_direction),
	(gst_pad_direction_get_type), (register_gst_pad_flags),
	(gst_pad_flags_get_type), (register_gst_pad_presence),
	(gst_pad_presence_get_type), (register_gst_pad_template_flags),
	(gst_pad_template_flags_get_type), (register_gst_pipeline_flags),
	(gst_pipeline_flags_get_type), (register_gst_plugin_error),
	(gst_plugin_error_get_type), (register_gst_plugin_flags),
	(gst_plugin_flags_get_type), (register_gst_rank),
	(gst_rank_get_type), (register_gst_query_type),
	(gst_query_type_get_type), (register_gst_tag_merge_mode),
	(gst_tag_merge_mode_get_type), (register_gst_tag_flag),
	(gst_tag_flag_get_type), (register_gst_task_state),
	(gst_task_state_get_type), (register_gst_alloc_trace_flags),
	(gst_alloc_trace_flags_get_type),
	(register_gst_type_find_probability),
	(gst_type_find_probability_get_type), (register_gst_uri_type),
	(gst_uri_type_get_type), (register_gst_parse_error),
	(gst_parse_error_get_type):
	* win32/common/gstversion.h:
	  update win32 copies

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

	* gst/gst.c:
	  fix docs. popt is dead, long live GOption.

2005-10-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.h:
	Small doc fix.

2005-10-31  Andy Wingo  <wingo@pobox.com>

	* Boo!

	* gst/gstqueue.c (gst_queue_chain): Fix downstream leaky mode.

	* gst/gstobject.c (gst_object_dispatch_properties_changed): No
	need to serialize property notifications on GLib 2.8. GLib 2.6 has
	the possibility of deadlocks here if code calling notify() or
	set() has a lock that can be taken in another notify handler (ABBA
	with class lock and e.g. python GIL state lock).

2005-10-28  Julien MOUTTE  <julien@moutte.net>

	* gst/gstbus.c: Doc updates.

2005-10-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* gst/gstiterator.c:
	* gst/gstsystemclock.c:
	* gst/gstsystemclock.h:
	Doc updates.

2005-10-28  Edward Hervey  <edward@fluendo.com>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	the GstURIType documentation page is private, it only defines GstURIType
	which should be defined in the GstURIHandler page
	
2005-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstbin.c: (gst_bin_class_init):
	* gst/gstbin.h:
	* gst/gstutils.c:
	Documentation updates.

2005-10-28  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstclock.c:
	* gst/gstclock.h:
	Documented the clocks.

2005-10-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  move some macros to private sections
	* gst/gstminiobject.c:
	* gst/gstminiobject.h:
	  add descriptions provided by ds and some more
	* gst/gstpad.h:
	  mark macro as to be removed

2005-10-28  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Add an item to TODO.

	* gst/gstiterator.c: (gst_iterator_fold),
	(gst_iterator_find_custom):
	* gst/gstiterator.h:
	Add iterator docs.

2005-10-28  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_class_init),
	(gst_base_transform_init):
	Don't leak class.

	* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_loop):
	An EOS event marks the queue as completely filled.

2005-10-27  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync), (gst_base_sink_get_position):
	Some more debugging.

	* gst/base/gstbasetransform.c: (gst_base_transform_finalize),
	(gst_base_transform_init), (gst_base_transform_buffer_alloc),
	(gst_base_transform_event), (gst_base_transform_getrange),
	(gst_base_transform_chain):
	* gst/base/gstbasetransform.h:
	Fix debugging,
	Protect transform and concurrent buffer alloc with a new lock.
	Try not to break ABI/API.

2005-10-27  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_query),
	(gst_base_src_default_newsegment),
	(gst_base_src_configure_segment), (gst_base_src_do_seek),
	(gst_base_src_send_event), (gst_base_src_event_handler),
	(gst_base_src_pad_get_range), (gst_base_src_loop),
	(gst_base_src_unlock), (gst_base_src_default_negotiate),
	(gst_base_src_start), (gst_base_src_deactivate),
	(gst_base_src_activate_push), (gst_base_src_change_state):
	Move some stuff around and cleanup things.

2005-10-27  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstbasesrc.c: (gst_base_src_query):
	  Add missing break statements.

2005-10-27  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	An extra refcount is taken in basesrc.

	* gst/base/gstbasesrc.c: (gst_base_src_init), (gst_base_src_query),
	(gst_base_src_get_range), (gst_base_src_pad_get_range),
	(gst_base_src_loop):
	Small cleanups, check for flushing after being unlocked from the 
	LIVE_LOCK. take refcounts correctly (not yet everywhere).
	Don't send out EOS when going to READY.

2005-10-27  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_get_position):
	Some more debug.

	* gst/gstbin.c: (message_check), (bin_replace_message),
	(bin_remove_messages), (is_eos), (gst_bin_add_func),
	(update_degree), (gst_bin_sort_iterator_next), (bin_bus_handler),
	(bin_query_duration_init), (bin_query_duration_fold),
	(bin_query_duration_done), (bin_query_generic_fold),
	(gst_bin_query):
	* tools/gst-launch.c: (main):
	Remove old option.

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

	* examples/controller/audio-example.c: (main):
	* examples/queue/queue.c: (event_loop):
	* gst/base/gstbasetransform.h:
	* gst/gstelement.c: (gst_element_send_event):
	* gst/gstevent.h:
	* gst/gstpad.c: (gst_pad_send_event):
	  fixing examples
	  fixing docs typos
	  changing log priority in error situations

2005-10-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (message_check), (bin_replace_message),
	(bin_remove_messages), (is_eos), (gst_bin_add_func),
	(update_degree), (gst_bin_sort_iterator_next), (bin_bus_handler),
	(bin_query_duration_init), (bin_query_duration_fold),
	(bin_query_duration_done), (bin_query_generic_fold),
	(gst_bin_query):
	Some doc and debug updates.
	Cache previously requested query DURATION for speed. invalidate
	cached duration if element posts a DURATION message.

2005-10-25  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Update TODO.

	* gst/gstbin.c: (message_check), (bin_replace_message),
	(bin_remove_messages), (is_eos), (gst_bin_add_func),
	(update_degree), (gst_bin_sort_iterator_next), (bin_bus_handler),
	(bin_query_duration_init), (bin_query_duration_fold),
	(bin_query_duration_done), (bin_query_generic_fold),
	(gst_bin_query):
	Handle SEGMENT_START/DONE messages correctly.
	More evolved query algorithm that handles duration queries
	correctly.

	* gst/gstelement.c: (gst_element_send_event), (gst_element_query),
	(gst_element_get_state_func), (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_lost_state):
	Some more debugging.

	* gst/gstmessage.h:
	Added doc.

2005-10-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_get_position):
	Don't use invalid stream_time.

	* gst/gstevent.c: (gst_event_new_newsegment):
	stream_time in newsegment cannot be undefined.

2005-10-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c:
	Doc fix.

	* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_loop):
	Fix potential deadlock when QUEUE_LOCK is taken before STREAM_LOCK.

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

	* 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:
	  these are obsolete

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

	* configure.ac:
	  back to HEAD

=== release 0.9.4 ===

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

	* configure.ac:
	  releasing 0.9.4, "Tyrannosaurus Rex"

2005-10-23  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/elements/gstfilesink.c: (gst_file_sink_do_seek),
	(gst_file_sink_get_current_offset):
	  Use fseeko() and ftello() if available. When falling back on
	  lseek() to get the current offset, fflush() first to make sure
	  everything is up-to-date and we get the right offset.

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	* gst/base/gstbasesrc.c: (gst_base_src_loop):
	* gst/gsterror.c: (_gst_stream_errors_init):
	* gst/gsterror.h:
	* gst/gstqueue.c: (gst_queue_loop):
	* po/POTFILES.in:
	  remove prematurely added error category and clean up the instances

2005-10-21  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_get_position), (gst_base_sink_query),
	(gst_base_sink_change_state):
	Simply set the right flag when going to playing, that's all
	we need to do instead of calling a function inside the object
	lock (that could take the lock as well and deadlock)

2005-10-21  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_do_seek),
	(gst_base_src_loop):
	Don't warn, the peer element knows what to do best when
	the seek failed, it might try something else.

2005-10-21  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_init),
	(gst_base_src_do_seek), (gst_base_src_loop), (gst_base_src_start):
	Fix seeking.

2005-10-21  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-segments.txt:
	More docs.

	* gst/elements/gstcapsfilter.c: (gst_capsfilter_prepare_buf):
	Correctly set caps, even on the subbufer.

2005-10-21  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.h:
	* gst/gstevent.c:
	* gst/gstevent.h:
	* gst/gstmessage.h:
	* gst/gstpad.h:
	* gst/gstparse.h:
	* gst/gsttask.c: (gst_task_finalize), (gst_task_func):
	* gst/gsttask.h:
	* gst/gstutils.c:
	* gst/gstutils.h:
	And 2% more doc coverage.

2005-10-21  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesrc.c (gst_base_src_query): Clean up percent
	position reporting.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/gsterror.c: (gst_error_get_message):
	* gst/gstparse.h:
	* gst/gstquery.h:
	* gst/gststructure.c:
	* gst/gsttrace.c:
	* gst/gstutils.c:
	More docs.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.h:
	* gst/gstpad.c:
	* gst/gstparse.c:
	Another 1% more coverage.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_abort_state), (gst_element_commit_state),
	(gst_element_lost_state):
	* gst/gstevent.h:
	* gst/gstquery.c: (gst_query_set_position),
	(gst_query_parse_position), (gst_query_set_duration),
	(gst_query_parse_duration), (gst_query_new_convert):
	* gst/gstutils.c:
	Yay! 1% more docs coverage.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.h:
	* gst/gstquery.c: (gst_query_set_position),
	(gst_query_parse_position), (gst_query_set_duration),
	(gst_query_parse_duration), (gst_query_new_convert):
	* gst/gstquery.h:
	* gst/gstutils.c: (gst_element_query_convert):
	* gst/gstutils.h:
	Docs and consistency fixes.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/gsttask.c:
	* gst/gsttask.h:
	More docs.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (message_check), (bin_replace_message),
	(bin_remove_messages), (is_eos), (gst_bin_add_func),
	(update_degree), (gst_bin_sort_iterator_next),
	(gst_bin_change_state_func), (gst_bin_dispose), (bin_bus_handler):
	Reworked the message handling a bit, cache the messages instead of
	only the senders. alows us to do more in the future.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Update TODO

	* gst/base/gstbasesink.c: (gst_base_sink_get_position),
	(gst_base_sink_query):
	Don't use clock time to report position when in EOS.

2005-10-20  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-inspect.c: (print_interfaces),
	(print_element_properties_info), (print_element_info):
	  Fix interface output with gst-inspect -a; don't print
	  newlines after double/float properties.

2005-10-20  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_get_position),
	(gst_base_sink_query):
	Speed up current position calculation.

	* gst/base/gstbasesrc.c: (gst_base_src_query),
	(gst_base_src_default_newsegment):
	Correctly set stream position in newsegment.

	* gst/gstbin.c: (gst_bin_add_func), (add_to_queue),
	(update_degree), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free):
	* gst/gstmessage.c: (gst_message_new_custom):
	Clean up debugging info

	* gst/gstqueue.c: (gst_queue_link_src), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_handle_src_query):
	Pause task faster.

2005-10-19  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_query), (do_playing):
	Fix query handling again.

2005-10-19  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_query), (do_playing):
	* gst/base/gstbasesrc.c: (gst_base_src_query):
	* gst/elements/gstfilesink.c: (gst_file_sink_query):
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_handle_src_query), (find_element_get_length),
	(gst_type_find_element_activate):
	API change fix.

	* gst/gstquery.c: (gst_query_new_position),
	(gst_query_set_position), (gst_query_parse_position),
	(gst_query_new_duration), (gst_query_set_duration),
	(gst_query_parse_duration), (gst_query_set_segment),
	(gst_query_parse_segment):
	* gst/gstquery.h:
	Bundling query position/duration is not a good idea since duration
	does not change much and we don't want to recalculate it for every
	position query, so they are separated again..
	Base value in segment query is not needed.

	* gst/gstqueue.c: (gst_queue_handle_src_query):
	* gst/gstutils.c: (gst_element_query_position),
	(gst_element_query_duration), (gst_pad_query_position),
	(gst_pad_query_duration):
	* gst/gstutils.h:
	Updates for query API change.
	Added some docs here and there.

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

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstghostpad.c: (GST_START_TEST):
	* check/pipelines/cleanup.c: (GST_START_TEST):
	  wait on thread to die so we can check refcount correctly

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* check/pipelines/stress.c: (GST_START_TEST):
	Make check a little more time consuming.

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* check/pipelines/stress.c: (GST_START_TEST),
	(simple_launch_lines_suite), (main):
	Small state change torture test.

	* docs/design/part-states.txt:
	* gst/base/gstbasesink.c: (gst_base_sink_commit_state),
	(gst_base_sink_handle_object), (gst_base_sink_event), (do_playing),
	(gst_base_sink_change_state):
	Never take state lock from streaming thread, clean up ugly
	hacks. Unfortunatly core does not yet support nice ways to
	async commit state.
	
	* gst/gstbin.c: (gst_bin_remove_func), (gst_bin_recalc_state),
	(bin_bus_handler):
	Start state recalc if a STATE_DIRTY message is posted, but only
	on the toplevel bin.

	* gst/gstelement.c: (gst_element_sync_state_with_parent),
	(gst_element_get_state_func), (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_lost_state),
	(gst_element_set_state_func), (gst_element_change_state):
	* gst/gstelement.h:
	State variables are now protected with the LOCK, the state
	lock is only used to serialize _set_state().

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstmessage.c: (GST_START_TEST):
	* check/gst/gstpipeline.c: (GST_START_TEST), (message_received):
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_recalc_func),
	(bin_bus_handler):
	* gst/gstelement.c: (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_lost_state):
	* gst/gstmessage.c: (gst_message_new_state_changed),
	(gst_message_new_state_dirty), (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_new_duration),
	(gst_message_parse_state_changed),
	(gst_message_parse_segment_start),
	(gst_message_parse_segment_done), (gst_message_parse_duration):
	* gst/gstmessage.h:
	* tools/gst-launch.c: (event_loop):
	Seriously, this is better than a previous commit as we only need
	to notify the fact that an element changed state in a streaming
	thread, marking the state of the parents dirty, hence the 
	STATE_DIRTY message instead of abusing a boolean in a STATE_CHANGE
	message.

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_get_state_func),
	(gst_bin_recalc_func):
	* gst/gstelement.c: (gst_element_set_clock),
	(gst_element_abort_state), (gst_element_lost_state):
	Cleanups, prepare for state change fixes.

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_set_state), (gst_element_set_state_func):
	* gst/gstelement.h:
	Pending ABI changes.
	GThreadPool in GstBinClass to monitor async state changes.
	state_cookie in GstElement to detect concurrent gst/set state.
	set_state is now virtual too in case a very complicated element
	has to be constructed.

2005-10-18  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstmessage.c: (GST_START_TEST):
	* check/gst/gstpipeline.c: (GST_START_TEST), (message_received):
	* gst/gstbin.c: (bin_bus_handler):
	* gst/gstelement.c: (gst_element_commit_state),
	(gst_element_lost_state):
	* gst/gstmessage.c: (gst_message_new_state_changed),
	(gst_message_new_segment_start), (gst_message_new_segment_done),
	(gst_message_new_duration), (gst_message_parse_state_changed),
	(gst_message_parse_segment_start),
	(gst_message_parse_segment_done), (gst_message_parse_duration):
	* gst/gstmessage.h:
	* tools/gst-launch.c: (event_loop):
	Make messages future proof.
	state-change gets a flag if it was a message comming from the
	streaming thread.
	segment-start/stop can also be specified in other formats.
	A message to notify an app that a pipeline changed playback 
	duration.
	Also fix a GstMessage leak in -launch

2005-10-18  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_dispose): More helpful message.

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

	reviewed by: <delete if not using a buddy>

	* common/gtk-doc.mak:

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

	* gst/gstregistry.c: (gst_registry_scan_path_level):
	  unref a plug-in we get that was already initialized

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

	* docs/gst/gstreamer-sections.txt:
	* docs/libs/gstreamer-libs-sections.txt:
	* gst/gstelement.h:
	  add new api entries
	  hide internal macro

2005-10-17  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstcollectpads.c (gst_collectpads_chain): Slight
	cleanup.

	* gst/Makefile.am (gstenumtypes.c): Threadsafe now.

	* gst/gstevent.c (gst_event_new, gst_event_finalize): LOG.

	* gst/gstelement.c (gst_element_get_state_func): s/INFO/DEBUG/.
	(gst_element_get_state_func): Better debug message.
	(gst_element_commit_state): s/INFO/DEBUG/.
	(gst_element_lost_state, gst_element_change_state): 

	* gst/gstmessage.c (gst_message_init): s/INFO/LOG/.
	(gst_message_new_custom): s/INFO/LOG/.

2005-10-17  Michael Smith <msmith@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_do_sync):
	  Check if end time is valid using end time, not start time.

2005-10-17  Stefan Kost  <ensonic@users.sf.net>

	* check/gst-libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	* libs/gst/controller/gstcontroller.c:
	(gst_controlled_property_set_interpolation_mode):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstinterpolation.c:
	* testsuite/controller/.cvsignore:
	* testsuite/controller/Makefile.am:
	* testsuite/controller/interpolator.c:
	  merge controller testsuites
	  fix broken tests
	  remove mem-chunk from docs

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

	* gst/gstmemchunk.c:
	* gst/gstmemchunk.h:
	* gst/gsttrashstack.c:
	* gst/gsttrashstack.h:
	  out.  get out.  you're fired.  to the Attic !

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

	* gst/gstcaps.c: (gst_caps_intersect):
	  fix signedness issues in a (hopefully) correct way
	* gst/gstelement.c: (gst_element_pads_activate):
	  some debugging
	* gst/gstobject.c: (gst_object_set_parent):
	  some debugging

2005-10-17  Julien MOUTTE  <julien@moutte.net>

	* gst/gstvalue.h: Fix prototypes.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c: (gst_version_string):
	* gst/gst.h:
	* gst/gstversion.h.in:
	* win32/common/libgstreamer.def:
	  add gst_version_string ()

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

	* configure.ac:
	  clean up further
	* gst/gst.c: (init_post):
	* win32/common/config.h.in:
	  it's PLUGINDIR now
	* gst/gstcaps.c: (gst_caps_intersect):
	  use gint64, the range could be bigger than a guint

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

	* gst/gstclock.h:
	  document potential problem in 2038

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

	* gst/gstcaps.c: (gst_caps_intersect):
	  Fix guint j diving under 0

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

	* configure.ac:
	* win32/common/config.h:
	* win32/common/config.h.in:
	  check for process.h, declares getpid() on Windows
	* gst/gstinfo.c:
	  include process.h if we have it
	* gst/gstmemchunk.c: (populate), (gst_mem_chunk_new):
	* gst/gstmemchunk.h:
	  fix signedness issues
	* win32/common/libgstreamer.def:
	  fix get_type's

2005-10-16  Julien MOUTTE  <julien@moutte.net>

	* gst/gstcaps.c: (gst_caps_intersect): Fix a bad bug with a simple
	fix. Because of unsigned ints, caps intersection was going nuts and
	trying to access structures with G_MAXUINT index. That fixes
	videotestsrc ! ffmpegcolorspace ! fakesink
	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked): logs
	consistency.

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

	* configure.ac:
	  use the gettext macro
	* gst/elements/gstelements.c:
	* gst/gst.c:
	* gst/indexers/gstindexers.c:
	  update for GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN
	* win32/common/config.h:
	  updated config.h
	* win32/common/config.h.in:
	  add the template to generate config.h
	* win32/common/gstenumtypes.c:
	* win32/common/gstversion.h:
	  updated copies

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

	* gst/gst.c: (gst_version):
	* gst/gstversion.h.in:
	  add the nano

2005-10-15  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstevent.h:
	  Oops, add missing closing bracket.

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

	* configure.ac:
	  use common m4's for argument checking

2005-10-15  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstevent.h:
	  Add GST_EVENT_TYPE_NAME() macro.

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

	* gst/gstinfo.c:
	* gst/gstpluginfeature.c:
	* gst/gsttask.c:
	  privatize more symbols

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

	* configure.ac:
	  add srcdir, builddir includes to GST_ALL_CFLAGS, since
	  everything that uses GStreamer API should have the includes

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstvalue.c: (gst_date_get_type), (_gst_value_initialize):
	* gst/gstvalue.h:
	  give each value a _get_type, removes the DATA exports

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

	* gst/gst.c:
	* gst/gst.h:
	  remove _gst_registry_auto_load, not used anymore
	* gst/gstbin.c: (gst_bin_get_type):
	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_get_type):
	* gst/gstelement.h:
	* gst/gstobject.c: (gst_object_get_type):
	* gst/gstobject.h:
	* gst/gstpad.c: (gst_pad_get_type):
	* gst/gstpad.h:
	  make _get_type functions similar, fixes data export from library

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

	* configure.ac:
	  correctly make conditionals
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	  fix typo causing fdsrc not to build

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

	* testsuite/Makefile.am:
	* testsuite/bytestream/.cvsignore:
	* testsuite/bytestream/Makefile.am:
	* testsuite/bytestream/filepadsink.c:
	* testsuite/bytestream/gstbstest.c:
	* testsuite/bytestream/test1.c:
	* testsuite/bytestream/testfile1:
	* testsuite/caps/normalisation.c:
	* testsuite/caps/random.c: (main):
	* testsuite/cleanup/.cvsignore:
	* testsuite/cleanup/Makefile.am:
	* testsuite/cleanup/cleanup1.c:
	* testsuite/cleanup/cleanup2.c:
	* testsuite/cleanup/cleanup3.c:
	* testsuite/cleanup/cleanup4.c:
	* testsuite/cleanup/cleanup5.c:
	* testsuite/controller/interpolator.c:
	* testsuite/debug/printf_extension.c: (main):
	* testsuite/elements/tee.c:
	* testsuite/negotiation/.cvsignore:
	* testsuite/negotiation/Makefile.am:
	* testsuite/negotiation/pad_link.c:
	* testsuite/pad/Makefile.am:
	* testsuite/pad/chainnopull.c:
	* testsuite/pad/getnopush.c:
	* testsuite/pad/link.c:
	* testsuite/refcounting/sched.c: (create_pipeline):
	* testsuite/registry/Makefile.am:
	* testsuite/registry/gst-print-formats.c:
	* testsuite/schedulers/.cvsignore:
	* testsuite/schedulers/142183-2.c:
	* testsuite/schedulers/142183.c:
	* testsuite/schedulers/143777-2.c:
	* testsuite/schedulers/143777.c:
	* testsuite/schedulers/147713.c:
	* testsuite/schedulers/147819.c:
	* testsuite/schedulers/147894-2.c:
	* testsuite/schedulers/147894.c:
	* testsuite/schedulers/Makefile.am:
	* testsuite/schedulers/group_link.c:
	* testsuite/schedulers/queue_link.c:
	* testsuite/schedulers/relink.c:
	* testsuite/schedulers/unlink.c:
	* testsuite/schedulers/unref.c:
	* testsuite/schedulers/useless_iteration.c:
	* testsuite/states/bin.c:
	  clean out/remove some stuff from the testsuite directories

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

	* configure.ac:
	  check for some headers
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	  don't compile fdsrc without sys/socket.h
	* gst/indexers/Makefile.am:
	* gst/indexers/gstindexers.c: (plugin_init):
	  don't compile fileindex without mmap

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

	* configure.ac:
	  reorganize
	  clean up
	  document more
	  remove cruft
	* check/Makefile.am:
	* docs/gst/Makefile.am:
	* examples/helloworld/Makefile.am:
	* gst/Makefile.am:
	* gst/base/Makefile.am:
	* gst/check/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/indexers/Makefile.am:
	* gst/parse/Makefile.am:
	* libs/gst/controller/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* examples/helloworld/helloworld.c: (event_loop):
	  compile fixes, though it's not being compiled currently

2005-10-14  Tim-Philipp Müller  <tim at centricular dot net>

	* check/gst/gsttag.c: (test_date_tags), (gst_tag_suite):
	  Add some simple tests for the new taglist date API.

2005-10-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/elements/gstfakesink.c: (gst_fake_sink_render):
	* gst/elements/gstfakesrc.c: (gst_fake_src_create):
	  Beautify 'last-message' output: print 'none' for buffer timestamps
	  and durations if none is set; improve alignment with next messages.

2005-10-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpluginfeature.c: (gst_plugin_feature_check_version):
	* gst/gstpluginfeature.h:
	* gst/gstregistry.c: (gst_default_registry_check_feature_version):
	* gst/gstregistry.h:
	* docs/gst/gstreamer-sections.txt:
	  Add new API to check plugin feature version requirements.

	* check/gst/gstplugin.c: (test_version_checks), (gst_plugin_suite):
	  Some basic tests for the above.	  

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

	* gst/gststructure.c: (gst_structure_to_string):
	  guard against NULL printf - happens when for example
	  a message structure with GstClock gets serialized

2005-10-13  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstcollectpads.c: (gst_collectpads_event):
	  Fix presumable copy'n'pasto.

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

	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesrc.c: (gst_file_src_create_read):
	* gst/elements/gsttypefindelement.c:
	  fix some signedness
	* gst/elements/gstfilesink.c: (gst_file_sink_render):
	  I wonder if this could actually write +2GB files before

2005-10-13  Andy Wingo  <wingo@pobox.com>

	* libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps):
	Fix Timmeke Waymans bug.
	(gst_dp_caps_from_packet): Make sure we pass a NUL-terminated
	string of the proper length to gst_caps_from_string. There's a
	potential for, before this fix, that this could cause someone
	connecting over the network to cause a segfault if the payload is
	not NUL-terminated.

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

	* docs/design/draft-push-pull.txt:
	* docs/design/part-overview.txt:
	* docs/random/TODO-pre-0.9:
	* docs/random/old/ChangeLog.gstreamer:
	* gst/base/gstpushsrc.c:
	* gst/gstclock.c:
	  fixed typos

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

	* gst/glib-compat.c: (gst_flags_get_first_value):
	* gst/glib-compat.h:
	* gst/gstvalue.c: (gst_value_deserialize_int_helper),
	(gst_value_compare_double), (gst_value_serialize_flags):
	  GLib 2.6 g_flags_get_first_value has a bug that triggers an
	  infinite loop

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	* gst/base/gstbasesrc.c: (gst_base_src_get_range):
	  fix up debugging
	* tools/gst-launch.c: (event_loop):
	  print out clock nicely

2005-10-13  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttaglist.h:
	* gst/gsttaglist.c: (_gst_tag_initialize), (gst_tag_list_get_date),
	(gst_tag_list_get_date_index):
	  Added gst_tag_list_get_date() and gst_tag_list_get_date_index().
	  GST_TAG_DATE now has a tag type of GST_TYPE_DATE (#170777).

2005-10-13  Julien MOUTTE  <julien@moutte.net>

	* gst/base/gstcollectpads.c: (gst_collectpads_event),
	(gst_collectpads_chain):
	* gst/base/gstcollectpads.h: Handle newsegment and store informations
	in CollectData.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gst.c:
	* gst/gsterror.h:
	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-run.c: (main):
	* tools/gst-xmlinspect.c: (main):
	  fix GOption context leaks
	  doc fixes

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

	* gst/gstbus.c:
	  use HAVE_UNISTD_H
	* win32/common/config.h:
	  update config
	* win32/vs6/grammar.dsp:
	* win32/vs6/libgstelements.dsp:
	* win32/vs6/libgstreamer.dsp:
	  update vs6 files

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	* gst/base/gstbasesrc.c: (gst_base_src_query):
	  fix more guint64<->gdouble conversions

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

	* Makefile.am:
	  add win32-update target
	* win32/common/gstconfig.h:
	* win32/common/gstenumtypes.c:
	* win32/common/gstenumtypes.h:
	* win32/common/gstversion.h:
	  add files that visual studio can't generate

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

	* Makefile.am:
	  add a win32-update target
	* configure.ac:

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
	(reset_degree), (gst_bin_dispose), (bin_bus_handler):
	* gst/gstelement.c: (gst_element_commit_state),
	(gst_element_set_state):
	Protect flags with proper lock.
	unref provided cached clock in dispose.

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

	* gst/gst.c:
	* gst/gstminiobject.h:
	* gst/gstpad.h:
	* win32/gstenumtypes.c: (gst_mini_object_flags_get_type):
	  removed unused flags from miniobject
	  doc fixes

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfilesink.c: (gst_file_sink_do_seek),
	(gst_file_sink_event), (gst_file_sink_render):
	Flush before seeking.

2005-10-12  Andy Wingo  <wingo@pobox.com>

	* gst/gst.c (gst_init_check): Ignore unknown options, as has
	always been the case.

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

	* check/gst/gstbin.c: (GST_START_TEST):
	* docs/gst/gstreamer-sections.txt:
	* gst/base/gstbasesink.c: (gst_base_sink_init):
	* gst/base/gstbasesrc.c: (gst_base_src_init),
	(gst_base_src_get_range), (gst_base_src_check_get_range),
	(gst_base_src_start), (gst_base_src_stop):
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesrc.c: (gst_fake_src_set_property):
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
	(bin_element_is_sink), (reset_degree), (gst_bin_element_set_state),
	(bin_bus_handler):
	* gst/gstbin.h:
	* gst/gstbuffer.h:
	* gst/gstbus.c: (gst_bus_post), (gst_bus_set_flushing):
	* gst/gstbus.h:
	* gst/gstelement.c: (gst_element_is_locked_state),
	(gst_element_set_locked_state), (gst_element_commit_state),
	(gst_element_set_state):
	* gst/gstelement.h:
	* gst/gstindex.c: (gst_index_init):
	* gst/gstindex.h:
	* gst/gstminiobject.h:
	* gst/gstobject.c: (gst_object_init), (gst_object_sink),
	(gst_object_set_parent):
	* gst/gstobject.h:
	* gst/gstpad.c: (gst_pad_set_blocked_async), (gst_pad_is_blocked),
	(gst_pad_get_caps_unlocked), (gst_pad_set_caps):
	* gst/gstpad.h:
	* gst/gstpadtemplate.h:
	* gst/gstpipeline.c: (gst_pipeline_provide_clock_func),
	(gst_pipeline_use_clock), (gst_pipeline_auto_clock):
	* gst/gstpipeline.h:
	* gst/indexers/gstfileindex.c: (gst_file_index_load),
	(gst_file_index_commit):
	* testsuite/bytestream/filepadsink.c: (gst_fp_sink_init):
	* testsuite/pad/link.c: (gst_test_src_init),
	(gst_test_filter_init), (gst_test_sink_init):
	* testsuite/states/locked.c: (main):
	  renamed GST_FLAGS macros to GST_OBJECT_FLAGS
	  moved bitshift from macro to enum definition

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_buffer):
	* gst/elements/gstfilesink.c: (gst_file_sink_event),
	(gst_file_sink_render):
	Some more debugging info.

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-states.txt:
	* tools/gst-launch.c: (main):
	Some doc updates.
	Revert non-intentional change.

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstelement.c: (GST_START_TEST):
	* check/gst/gstevent.c: (GST_START_TEST), (test_event):
	* check/gst/gstghostpad.c: (GST_START_TEST):
	* check/gst/gstpipeline.c: (GST_START_TEST):
	* check/pipelines/simple_launch_lines.c: (run_pipeline):
	* check/states/sinks.c: (GST_START_TEST):
	* gst/elements/gsttypefindelement.c: (stop_typefinding):
	* gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func),
	(gst_bin_remove_func), (gst_bin_get_state_func),
	(gst_bin_recalc_state), (gst_bin_change_state_func),
	(bin_bus_handler):
	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_get_state), (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_set_state),
	(gst_element_change_state), (gst_element_change_state_func):
	* gst/gstelement.h:
	* gst/gstpipeline.c: (gst_pipeline_class_init), (do_pipeline_seek),
	(gst_pipeline_provide_clock_func):
	* gst/gstutils.c: (gst_element_link_pads_filtered):
	* tools/gst-launch.c: (main):
	* tools/gst-typefind.c: (main):
	Use GstClockTime in _get_state() instead of GTimeVal.
	Remove old code in gstutils.c

2005-10-12  Andy Wingo  <wingo@pobox.com>

	* gst/gstregistry.h (gst_registry_scan_paths): Not implemented, so
	removed.

	* gst/gstpad.c (gst_pad_pause_task): Actually return FALSE if
	there is no task. Shouldn't affect any code, as nothing in our
	plugins checks this return value.
	(gst_pad_stop_task): Also take the stream lock if the pad has no
	task. Docs updated.

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (pre_activate), (post_activate),
	(gst_pad_activate_pull), (gst_pad_activate_push):
	Cleanup activation code. Reset old state if
	activation failed.

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_change_state):
	No need to prerol after receiving EOS.

	* gst/elements/gstfakesink.c: (gst_fake_sink_event):
	* gst/elements/gstfakesrc.c: (gst_fake_src_event_handler):
	* gst/elements/gstidentity.c: (gst_identity_event):
	Print events more verbosely.

2005-10-12  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* check/states/sinks.c: (GST_START_TEST), (gst_object_suite):
	* check/states/sinks2.c:
	Moved sinks2 testcode in sinks check.

	* gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func),
	(gst_bin_remove_func), (gst_bin_recalc_state),
	(gst_bin_change_state_func), (bin_bus_handler):
	Fix potential race condition when _get_state() iterated over an
	ASYNC element right before it posted a state completion.

	* gst/gstclock.h:
	Do proper cast here.

	* gst/gstevent.c: (gst_event_new_newsegment),
	(gst_event_parse_newsegment):
	A playback rate of 0.0 is not allowed.

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

	* win32/common/config.h:
	* win32/common/dirent.c: (_topendir), (_treaddir), (_tclosedir),
	(_trewinddir), (_ttelldir), (_tseekdir):
	* win32/common/dirent.h:
	* win32/common/gtchar.h:
	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	* win32/vs6/grammar.dsp:
	* win32/vs6/gst_inspect.dsp:
	* win32/vs6/gst_launch.dsp:
	* win32/vs6/gstreamer.dsw:
	* win32/vs6/libgstbase.dsp:
	* win32/vs6/libgstelements.dsp:
	* win32/vs6/libgstreamer.dsp:
	  Visual Studio 6 project files, and a new common directory.
	  Phear.

2005-10-11  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync), (gst_base_sink_query),
	(gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	Correctly parse newsegment info.

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

	* gst/gst.c: (init_post):
	  split plugin paths correctly

2005-10-11  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstevent.c: (GST_START_TEST):
	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_change_state):
	* gst/base/gstbasesrc.c: (gst_base_src_default_newsegment):
	* gst/base/gstbasetransform.c: (gst_base_transform_event):
	* gst/elements/gstfilesink.c: (gst_file_sink_event):
	* gst/gstevent.c: (gst_event_new_newsegment),
	(gst_event_parse_newsegment):
	* gst/gstevent.h:
	Added extra flag to newsegment for future API freeze.
	Updated check and base elements.

2005-10-11  Julien MOUTTE  <julien@moutte.net>

	* gst/base/gstcollectpads.c: (gst_collectpads_init),
	(gst_collectpads_add_pad), (gst_collectpads_pop),
	(gst_collectpads_event), (gst_collectpads_chain):
	* gst/base/gstcollectpads.h: Handle EOS correctly.

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

	* tools/gst-launch.c: (main):
	  more null protecting

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

	* gst/gst-i18n-lib.h:
	  check for ENABLE_NLS, not GETTEXT_PACKAGE
	* gst/gstregistry.c: (gst_registry_add_plugin),
	(gst_registry_scan_path_level),
	(_gst_registry_remove_cache_plugins):
	  protect possibly NULL strings
	* gst/parse/types.h:
	  config.h already included before
	* tools/gst-inspect.c: (main):
	  sys/wait.h also doesn�t exist on mingw, so change the ifdef check
	  check for ENABLE_NLS, not GETTEXT_PACKAGE
	* tools/gst-launch.c: (main):
	  check for ENABLE_NLS, not GETTEXT_PACKAGE

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

	* configure.ac:
	  if we don't have glib, fail before testing 2.8
	* gst/base/gstbasetransform.c: (gst_base_transform_change_state):
	  fix a leak, should fix plugins-base testsuite

2005-10-11  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (pre_activate): Renamed from pre_activate_switch,
	take the mode we're going to as an arg. Go head and set the mode
	and flushing flags now, so that if the activate function starts a
	thread all the flags will be in the right state.
	(post_activate): Renamed also. Just handle making sure streaming
	finishes for the deactivation case, and setting the deactivated
	mode.
	(gst_pad_set_active): Complain loudly if deactivation fails.
	(gst_pad_activate_pull): Adapt to pre/post_activate changes.
	(gst_pad_activate_push): Adapt to pre/post_activate changes,
	remove the terrible hack.

2005-10-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_init), (gst_bin_provide_clock_func),
	(is_eos), (gst_bin_add_func), (gst_bin_remove_func),
	(gst_bin_recalc_state), (gst_bin_change_state_func),
	(gst_bin_dispose), (bin_bus_handler):
	* gst/gstbin.h:
	Prepare to make current EOS message queue more generic.
	Fix some typos.

	* gst/gstevent.c: (gst_event_new_newsegment),
	(gst_event_parse_newsegment):
	* gst/gstevent.h:
	Rename base to stream_time.

	* gst/gstmessage.h:
	Fix typo in docs.

2005-10-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_init), (gst_bin_provide_clock_func),
	(gst_bin_add_func), (gst_bin_remove_func), (gst_bin_recalc_state),
	(gst_bin_change_state_func), (bin_bus_handler):
	* gst/gstbin.h:
	Work on proper clock selection.

2005-10-11  Edward Hervey  <edward@fluendo.com>

	* libs/gst/controller/gstcontroller.c: (gst_controller_remove_properties_list): 
	* libs/gst/controller/gstcontroller.h:
	Added GList* version of _remove_properties() in order to be able to wrap
	it in bindings.

2005-10-11  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-states.txt:
	Some more docs.

	* gst/gstbin.c: (gst_bin_set_clock_func), (gst_bin_recalc_state),
	(gst_bin_change_state_func), (bin_bus_handler):
	Doc updates. Don't distribute the same clock over and over again.

	* gst/gstclock.c:
	* gst/gstclock.h:
	Doc updates.

	* gst/gstpad.c: (gst_flow_get_name), (gst_flow_to_quark),
	(gst_pad_get_type), (gst_pad_push), (gst_pad_push_event),
	(gst_pad_send_event):
	* gst/gstpad.h:
	Make probe emission threadsafe again.
	Register quarks and move _get_name() from utils.
	Doc updates.

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_change_state), (gst_pipeline_provide_clock_func):
	Only redistribute the clock of it changed.

	* gst/gstsystemclock.h:
	Doc updates. 

	* gst/gstutils.c:
	* gst/gstutils.h:
	Moved the _flow_get_name() to GstPad.

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

	* check/gst-libs/gdp.c: (GST_START_TEST):
	* check/gst/gstcaps.c: (GST_START_TEST):
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_crc),
	(gst_dp_dump_byte_array), (gst_dp_header_from_buffer),
	(gst_dp_packet_from_caps):
	  fix more valgrind warnings before turning up the heat

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

	* gst/parse/grammar.y:
	  some cleanup before the hacking

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

	* gst/base/gstbasesrc.c: (gst_base_src_query):
	  use conversions
	* gst/gstutils.c: (gst_guint64_to_gdouble),
	(gst_gdouble_to_guint64), (gst_util_uint64_scale):
	* gst/gstutils.h:
	  externalize, basesrc uses it
	  obviously the implementation needs testing

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

	* tests/sched/Makefile.am:
	* tests/sched/sort.c: (make_pipeline1), (make_pipeline2),
	(make_pipeline3), (make_pipeline4), (print_elem), (main):

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

	* gst/gstutils.c: (guint64_to_gdouble), (gst_util_uint64_scale):
	  apparently converting from guint64 to double is not implemented
	  on MSVC

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

	* check/Makefile.am:
	* check/generic/states.c: (GST_START_TEST):
	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstpipeline.c: (GST_START_TEST), (gst_pipeline_suite):
	* check/states/sinks.c: (GST_START_TEST):
	* check/states/sinks2.c: (GST_START_TEST), (gst_object_suite),
	(main):
	Check fixes, use API as stated in design docs, remove hacks.

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_change_state):
	Catch stopping our task while we're shutting down.

	* gst/gstbin.c: (gst_bin_init), (gst_bin_add_func),
	(gst_bin_remove_func), (gst_bin_get_state_func),
	(gst_bin_recalc_state), (gst_bin_change_state_func),
	(bin_bus_handler):
	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_init),
	(gst_element_get_state_func), (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_lost_state),
	(gst_element_set_state), (gst_element_change_state),
	(gst_element_change_state_func):
	* gst/gstelement.h:
	New state change algorithm (see #318116)

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_init), (gst_pipeline_set_property),
	(gst_pipeline_get_property), (do_pipeline_seek),
	(gst_pipeline_change_state), (gst_pipeline_provide_clock_func):
	* gst/gstpipeline.h:
	Remove crude state change hacks.

	* gst/gstutils.h:
	Remove crude hacks.

	* tools/gst-launch.c: (main):
	Fixes for state change. Needs some more work to fully use the
	new stuff.

2005-10-10  Andy Wingo  <wingo@pobox.com>

	* tests/Makefile.am (noinst_PROGRAMS): No more init.c.

	* gst/gst.c (G_OPTION_FLAG_NO_ARG): Apparently GLib 2.8 requires
	this flag, but it's not even in GLib 2.6. Odd. Hack around the
	issue.

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

	* gst/gstiterator.c: (gst_iterator_new):
	  Fix my previous commit: GTypes passed to gst_iterator_new()
	  can be fundamental types.

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

	* gst/gstelement.c: (gst_element_iterate_pad_list),
	(gst_element_iterate_pads), (gst_element_iterate_src_pads),
	(gst_element_iterate_sink_pads):
	Use src/sink pads lists for the respective iterators instead
	of filtering.

2005-10-10  Andy Wingo  <wingo@pobox.com>

	Merged in popt removal + GOption addition patch from Ronald, bug
	#169772.

	* docs/gst/gstreamer-sections.txt: Add STATE_(UN)LOCK_FULL, move
	GstElement macros around, remove popt-related symbols, add goption
	stuff.

	* configure.ac: Remove popt checks, require GLib 2.6 for GOption.
	
	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am: No POPT_CFLAGS.
	
	* examples/manual/Makefile.am:
	* docs/manual/basics-init.xml: Doc updates with an example.
	
	* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
	(gst_init), (parse_one_option), (parse_goption_arg):
	* gst/gst.h: Removed gst_init_with_popt_table and friends. Took a
	bit of hand merging and debugging to get the GOption stuff working
	tho.
	
	* tests/Makefile.am:
	* tools/Makefile.am:
	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-run.c: (main):
	* tools/gst-xmlinspect.c: (main): Thanks Ronald!

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

	* gst/gstiterator.c: (gst_iterator_new):
	  Add assertions to make sure passed GType is likely to really
	  be a GType (as the compiler won't catch it if the size and
	  GType arguments get mixed up, see #318447).

2005-10-10  Josef Zlomek  <josef dot zlomek at xeris dot cz>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstbin.c: (gst_bin_iterate_sorted):
	  Pass GType and size arguments to gst_iterator_new() in the right
	  order (maybe we should make _new() take the GType as first argument
	  just like _new_list()?) (#318447).
	  

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

	* gst/gstelement.c: (gst_element_finalize):
	And free the GStaticRecMutex too

2005-10-10  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_init, gst_element_finalize):
	Allocate and free the mutex properly.

	* gst/gstelement.h (GST_STATE_UNLOCK_FULL, GST_STATE_LOCK_FULL):
	New macros.
	(GstElement): The state_lock is now recursive. Rebuild your
	plugins, suckers. Old macros adapted.

	* docs/gst/gstreamer-sections.txt: Doc updates.

	* gst/gstutils.h:
	* gst/gstutils.c (g_static_rec_cond_timed_wait) 
	(g_static_rec_cond_wait): Ported from state changes patch, while
	we wait on bug #317802 to be solved in a well-distributed GLib.

	* gst/gstelement.c (gst_element_change_state_func): Renamed from
	gst_element_change_state, variable name changes.
	(gst_element_change_state): Split out of gst_element_set_state in
	preparation for the state change merge. Doesn't pay attention to
	the 'transition' argument.
	(gst_element_set_state): Updates, hopefully purely cosmetic.
	(gst_element_sync_state_with_parent): MT-safety. Ported from the
	state change patch.
	(gst_element_get_state_func): Renamed from get_state, cosmetic
	changes.

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

	* gst/elements/gstelements.c:
	* win32/GStreamer.vcproj:
	* win32/config.h:
	* win32/dirent.c: (_tseekdir):
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gstconfig.h:
	* win32/gstelements.vcproj:
	* win32/gstenumtypes.c: (gst_object_flags_get_type):
	* win32/gstreamer.def:
	* win32/msvc71.sln:
	  updates for the win32 build (patch from Sebastien Moutte)

2005-10-10  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_get_state_func): Renamed from
	gst_bin_get_state, cleaned up (but no logic changes).
	(bin_element_is_sink): Comment updates.
	(sink_iterator_filter): Remove needless cast.
	(gst_bin_iterate_sinks): Doc update.
	(gst_bin_change_state_func): Renamed from gst_bin_change_state,
	cleaned up (but no logic changes).

	* check/states/sinks.c (test_src_sink): Cleanups from the state
	change patch.
	(test_livesrc_sink): Sync on the state.

	* check/pipelines/simple_launch_lines.c (run_pipeline): Merge from
	the state change patch.

	* check/gst/gstghostpad.c (test_ghost_pads): Merge from the state
	change patch.

	* check/gst/gstbin.c: Merge in some style fixes and additional
	checks from Wim's state change patch.

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

	* gst/base/gsttypefindhelper.c: (helper_find_peek),
	(gst_type_find_helper):
	  Check whether we have the requested data already in our list of
	  cached buffers before pulling a new buffer; also make the buffer
	  list a GSList. Speeds up typefinding by ca. 5-10% altogether.

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

	* gst/gstcaps.c:
	* gst/gstevent.c:
	  doc updates
	* gst/gstvalue.c: (gst_value_deserialize_int_helper):
	  don't use long long, it's not portable.  Replacing with
	  gint64 seems to work; let's hope no skeletons fall out of the closet.

2005-10-10  Andy Wingo  <wingo@pobox.com>

	* autogen.sh (CONFIGURE_DEF_OPT): No more --plugin-buiddir, yay

2005-10-09  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstevent.c:
	* gst/gstevent.h:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstmessage.c: (gst_message_parse_state_changed):
	* gst/gstpad.c:
	* gst/gstpad.h:
	  more docs, fix compilation

2005-10-09  Philippe Khalaf <burger@speedy.org>
	* gst/gstmessage.c:
	  Fixed a few forgotten variables on previous commit

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

	* gst/base/gsttypefindhelper.c: (helper_find_peek):
	  Fix evil typefind crasher: getrange() might return a short
	  buffer at the end of a file, but gst_type_find_peek() must
	  either return the full data as requested or NULL, but
	  never a short buffer.

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

	* gst/gstmessage.c: (gst_message_new_state_changed),
	(gst_message_parse_state_changed):
	* gst/gstmessage.h:
	  don't use "new", it's a C++ keyword

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (is_eos), (update_degree), (gst_bin_query):
	* gst/gstelement.c: (gst_element_post_message):
	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Small docs and debug updates.

2005-10-08  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstelementfactory.c:
	* gst/gstevent.c:
	* gst/gsttaglist.c:
	  more docs

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (is_eos), (update_degree), (gst_bin_change_state),
	(gst_bin_dispose), (bin_bus_handler):
	Fix typos, add comments.
	Clear EOS list when going to PAUSED from any direction and do it
	in a threadsafe way.
	Get base time in a threadsafe way too.
	Fix confusing debug in the change_state function.
	Various other small cleanups.
	
	* gst/gstelement.c: (gst_element_post_message):
	Fix very verbose bus posting code.

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_set_property), (gst_pipeline_get_property),
	(gst_pipeline_change_state):
	Small ARG_ -> PROP_ cleanup

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (is_eos), (bin_bus_handler):
	Do a less CPU demanding EOS check because we can.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event):
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/dataprotocol/dp-private.h:
	It's about time we bump the version number.
	Since event types don't fit in the guint8 anymore describing
	the payload type, make payload type 16 bits wide.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbin.txt:
	* docs/design/part-gstelement.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-live-source.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-states.txt:
	Many doc updates.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c:
	* gst/gstevent.h:
	Fix event quark registration.
	Add some space between events so we can insert them in the
	right groups.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_handle_buffer):
	Better log message.

	* gst/gstbus.h:
	* gst/gstelement.h:
	More docs.

	* gst/gstqueue.c: (gst_queue_class_init), (gst_queue_init),
	(gst_queue_set_property), (gst_queue_get_property):
	* gst/gstqueue.h:
	Remove old unused properties.

2005-10-08  Stefan Kost  <ensonic@users.sf.net>
	* docs/gst/gstreamer-sections.txt:
	* gst/gstmessage.c:
	* gst/gstmessage.h:
	* gst/gstminiobject.c:
	* gst/gstminiobject.h:
	* gst/gstobject.h:
	* gst/gstpad.h:
	* gst/gstutils.h:
	  lots of new docs and doc fixes

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

	* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_load_file):
	* gst/gstplugin.h:
	* gst/gstregistry.c: (gst_registry_lookup_locked),
	(gst_registry_scan_path_level):
	* gst/gstregistryxml.c: (load_plugin):
	  Only ever load one plugin for a given plugin basename.
	  This ensures correct overriding of GST_PLUGIN_PATH over
	  GST_PLUGIN_SYSTEM_PATH and of home dir plugins over
	  system installed plugins.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync), (gst_base_sink_handle_buffer):
	Prepare for doing QOS.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/pipelines/cleanup.c: (GST_START_TEST):
	* check/pipelines/simple_launch_lines.c: (GST_START_TEST):
	Allow new clock message too.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.c: (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_clock_provide),
	(gst_message_new_clock_lost), (gst_message_new_new_clock),
	(gst_message_new_segment_start), (gst_message_new_segment_done),
	(gst_message_parse_state_changed),
	(gst_message_parse_clock_provide), (gst_message_parse_clock_lost),
	(gst_message_parse_new_clock):
	* gst/gstmessage.h:
	Also carry the clock in question.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.c: (gst_message_new_custom),
	(gst_message_new_eos), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_clock_provide),
	(gst_message_new_new_clock), (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_parse_state_changed),
	(gst_message_parse_clock_provide), (gst_message_parse_new_clock):
	* gst/gstmessage.h:
	Clean up.
	Added clock related messages.

	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Post message when the clock changed.

	* tools/gst-launch.c: (event_loop):
	Print new clock.

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

	* tools/gst-inspect.c: (print_element_properties_info):
	  Can't pass NULL strings to g_print() on windows.

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

	* docs/Makefile.am:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/running.xml:
	* docs/version.entities.in:
	  add a chapter on running GStreamer.
	  document GST_DEBUG and GST_PLUGIN* env vars

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

	* Makefile.am:
	  remove include dir
	* configure.ac:
	  remove PLUGINS_BUILDDIR stuff
	* gst/gst.c: (init_post):
	  reorder parsing of GST_PLUGIN_PATH and GST_PLUGIN_SYSTEM_PATH
	* idiottest.mak:
	  remove, it was condescending and not needed

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
	(gst_base_sink_handle_object), (gst_base_sink_event),
	(gst_base_sink_wait), (gst_base_sink_handle_event),
	(gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	Repost EOS message while going to PLAYING if still EOS.
	Make sure that when receiving a FLUSH_START we don't attempt
	to sync on the clock anymore.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (event_loop):
	Better message printout.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_child_proxy_get_child_by_index),
	(gst_bin_child_proxy_get_children_count):
	* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
	(gst_child_proxy_lookup), (gst_child_proxy_get_property),
	(gst_child_proxy_get_valist), (gst_child_proxy_set_property),
	(gst_child_proxy_set_valist):
	* gst/parse/grammar.y:
	Make ChildProxy threadsafe and fix mem leaks.

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

	* gst/gst.c: (init_post):
	  debug the GST_PLUGIN_ env vars

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* check/gst/gstmessage.c: (GST_START_TEST):
	* check/gst/gstpipeline.c: (GST_START_TEST), (message_received):
	* gst/gstelement.c: (gst_element_commit_state),
	(gst_element_lost_state):
	* gst/gstmessage.c: (gst_message_new_state_changed),
	(gst_message_parse_state_changed):
	* gst/gstmessage.h:
	* tools/gst-launch.c: (event_loop):
	Added extra field to STATE_CHANGE message with the pending
	state, which will be different from the new state soon.

2005-10-08  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (gst_bus_pop):
	* gst/gstclock.c:
	* gst/gstsystemclock.c: (gst_system_clock_async_thread):
	Small cleanups and doc updates.

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

	* gst/gst.c: (init_pre):
	* gst/gstbin.c: (gst_bin_add_func):
	  log distributing clocks and base time
	* gst/gstregistry.c: (gst_registry_add_plugin),
	(gst_registry_scan_path_level), (gst_registry_scan_path):
	  clean up the debugging output a little
	* gst/gstutils.c: (gst_element_state_get_name):
	  warn about a memleak (I've actually seen this be used, though
	  it was probably a bug)

2005-10-07  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_default_newsegment),
	(gst_base_src_newsegment), (gst_base_src_do_seek),
	(gst_base_src_loop), (gst_base_src_start):
	* gst/base/gstbasesrc.h:
	Make the newsegment event customizable by subclasses.

2005-10-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c: (gst_event_new_buffersize),
	(gst_event_parse_buffersize):
	* gst/gstevent.h:
	New event for future idea.

2005-10-07  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_post_message): Doc update.

	* docs/gst/gstreamer-sections.txt: Update.

	* gst/gstmessage.c (gst_message_new_application): Made into a
	function like honest API calls.
	(gst_message_new_element): New message type.

	* gst/gstmessage.h (enum): Add GST_MESSAGE_ELEMENT type.

	* check/elements/fakesrc.c (test_no_preroll): New check, checks
	that setting a live fakesrc to PAUSED returns NO_PREROLL both
	times.

	* gst/base/gstbasesrc.c (gst_base_src_change_state): Allow a
	NO_PREROLL from gst_element_change_state to fall through.

2005-10-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_ghost_pad_get_internal),
	(gst_ghost_pad_do_activate_push):
	Activating a ghostpad with no internal pad in push mode
	is ok.

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

	* gst/gstobject.h:
	  there's no point in wrapping FLAG_SET/_UNSET in STMT macros.
	  Fixes compilation on Windows.

2005-10-07  Michael Smith <msmith@fluendo.com>

	* tools/gst-inspect.c:
	  Print out feature and plugin count at the end when printing out
	  all features.

2005-10-04  Michael Smith <msmith@fluendo.com>

	* gst/gsterror.c: (_gst_stream_errors_init):
	  Add another error string used in a few existing plugins.

	* gst/gstplugin.c:
	* gst/gstpluginfeature.c: (gst_plugin_feature_load):
	* tools/gst-inspect.c: (print_element_info):
	  When a feature disappears from a plugin (and the feature exists in
	  the cached registry file), things went horribly wrong. This isn't a
	  complete fix, we should actually be removing the 'missing' features
	  from the features list when we load the actual plugin. That's not
	  yet implemented. 

2005-10-04  Johan Dahlin  <johan@gnome.org>

	* check/gst/gstiterator.c: (GST_START_TEST):
	* gst/gstbin.c: (gst_bin_iterate_elements),
	(gst_bin_iterate_recurse), (gst_bin_iterate_sorted):
	* gst/gstelement.c: (gst_element_iterate_pads):
	* gst/gstformat.c: (gst_format_iterate_definitions):
	* gst/gstiterator.c: (gst_iterator_init), (gst_iterator_new),
	(gst_iterator_new_list), (gst_iterator_filter):
	* gst/gstiterator.h:
	* gst/gstquery.c: (gst_query_type_iterate_definitions):
	Add a GType to GstIterator, update callsites and tests.

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

	* gst/gstpad.c: (gst_pad_event_default_dispatch):
	  give events a chance to be handled by event probes when the pad
	  is not linked

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

	* gst/gstevent.c: (gst_event_type_get_name),
	(gst_event_type_to_quark), (gst_event_finalize), (gst_event_new):
	* gst/gstevent.h:
	  add string representations for event types

2005-10-06  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfilesink.c: (gst_file_sink_close_file):
	Don't use NULL pointers.

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

	* gst/gst_private.h:
	* gst/gstbus.c:
	* gst/gstelement.c:
	* gst/gstinfo.c:
	* gst/gstpluginfeature.c:
	  widen the debug category in output to fit the biggest one we have
	  add a bus category and use it
	  play with the colors
	  fix up some categories

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

	* gst/gstghostpad.c: (gst_ghost_pad_internal_do_activate_push):
	  add push activation of sink ghost pads.
	  Andye, please verify

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

	* gst/gstutils.c: (gst_element_link_pads):
	  fix a bug in the case where neither element has a pad
	* check/gst/gstelement.c: (GST_START_TEST), (gst_element_suite):
	  add a test for that case

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

	* gst/gstpad.c: (gst_pad_push), (gst_pad_push_event):
	  emit have-data before checking for peers.  This allows
	  for probe handlers to connect elements.  This helps autopluggers.
	* check/gst/gstpad.c: (GST_START_TEST), (_probe_handler),
	(gst_pad_suite):
	  add six checks, linked/unlinked with no/true/false probe

2005-10-04  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfakesink.c: (gst_fake_sink_get_property),
	(gst_fake_sink_event), (gst_fake_sink_preroll),
	(gst_fake_sink_render), (gst_fake_sink_change_state):
	* gst/elements/gstfakesrc.c: (gst_fake_src_event_handler),
	(gst_fake_src_get_property), (gst_fake_src_create),
	(gst_fake_src_stop):
	* gst/elements/gstidentity.c: (gst_identity_stop):
	Protect last_message with lock.

2005-10-04  Edward Hervey  <edward@fluendo.com>

	* gst/gstformat.h: 
	Added precision in the comments for GST_FORMAT_DEFAULT

2005-10-04  Tim-Philipp Müller  <tim at centricular dot net>

	* tools/gst-launch.c: (main):
	  Don't try to run erroneous pipelines.

2005-10-04  Julien MOUTTE  <julien@moutte.net>

	* gst/gstbus.c: We don't need this header.

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

	* configure.ac:
	  back to development

=== release 0.9.3 ===

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

	* README:
	* configure.ac:
	  Releasing 0.9.3, "Unregistered"

2005-10-03  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_activate_push): There is a race condition
	whereby calling a pad's activatepush() function can start a thread
	that starts to push or pull before the pad gets the FLUSHING flag
	unset. Hack around it by holding the stream lock until the flag is
	set. Need to replace this with a proper solution. Together with
	the ghost pad fixes, this fixes mp3 playing/tagreading.

	* docs/design/part-gstghostpad.txt: Add a note about activation of
	proxy pads outside of ghost pads.

	* gst/gstghostpad.c: Implement the ghost pad activation design.

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

	* gst/gstobject.h (GST_OBJECT_REFCOUNT_VALUE): Just use the int.
	It is volatile, after all.

	* docs/design/part-gstghostpad.txt: Flesh out activation with
	ghost pads.

	* gst/base/gstbasesrc.c (gst_base_src_init): Use
	GST_DEBUG_FUNCPTR.

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

	* configure.ac:
	  Fix (unused) AM_CONDITIONAL tests.

2005-10-01  Alessandro Decina  <alessandro at nnva dot org>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstutils.c: (gst_pad_query_convert):
	  Add assertion that makes sure src_val is >=0, just like
	  gst_query_new_convert() has. (#315895)

2005-09-30  Edward Hervey  <edward@fluendo.com>

	* gst/elements/gsttee.c: (gst_tee_do_push), (gst_tee_handle_buffer):
	Let's not iterate pads we're not interested in, it avoids getting 
	sky-high refcounts on sinkpad.

2005-09-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_set_state),
	(gst_element_change_state):
	Small tweak, element in ASYNC remains ASYNC.

2005-09-30  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_change_state):
	Only error is an error.

	* gst/gstbin.c: (gst_bin_change_state):
	Better debugging.

	* gst/gstpad.c: (gst_pad_alloc_buffer), (gst_pad_chain):
	Also call pad_block in pad alloc.

	* gst/gstutils.c: (gst_flow_get_name):
	Better debugging.

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

	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_get_range):
	  Fix documentation typos. Add some more debug info.

2005-09-29  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: (gst_plugin_load_file): Make some error messages
	  more end-user friendly.
	* tools/gst-inspect.c: (main): Check if command-line argument is
	  a file and attempt to load that file as a plugin.

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

	* check/gst/gstbin.c:
	* check/states/sinks.c:
	  fix tests for the new warning
	* check/gst/gstpipeline.c:
	  add a test for pipeline and bus interaction
	* gst/gstelement.c:
	  elements should be NULL if they get disposed; add a warning if not

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

	* gst/gstobject.c:
	  for 2.6 refcounting, make debug log more correct by printing
	  the actual refcounts at the time of swap (Wim)

2005-09-29  Andy Wingo  <wingo@pobox.com>

	* gst/gstbus.c (gst_bus_remove_signal_watch): New function,
	removes signal watches previously added via
	gst_bus_add_signal_watch.
	(gst_bus_add_signal_watch): Don't return the source id, just store
	it on the bus if there wasn't an id already.

	* gst/gstbus.h (GstBus): Add a couple new fields. API changes for
	add_signal_watch and remove_signal_watch.

2005-09-29  Edward Hervey  <edward@fluendo.com>

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_list): 
	Better if we actually iterate the list :)

2005-09-29  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	Change for new bus API.

	* check/gst/gstbus.c: (message_func_eos), (message_func_app),
	(send_messages), (GST_START_TEST), (gstbus_suite):
	Change for new bus signal API.

	* gst/gstbus.c: (gst_bus_class_init), (gst_bus_have_pending),
	(gst_bus_source_prepare), (gst_bus_source_check),
	(gst_bus_create_watch), (gst_bus_add_watch_full),
	(gst_bus_add_watch), (gst_bus_poll), (gst_bus_async_signal_func),
	(gst_bus_sync_signal_handler), (gst_bus_add_signal_watch):
	* gst/gstbus.h:
	Remove support for multiple GSources operating on different
	message types as it is too complex and unneeded when using
	signals.
	Added support for receiving signals from the bus.

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

	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/manual/advanced-dataaccess.xml:
	* gst/elements/gstcapsfilter.c:
	* gst/gstutils.c:
	  rename filter-caps to caps property

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

	* gst/gstvalue.c: (gst_value_deserialize_fraction):
	  More robust fraction string parsing.

	* docs/pwg/appendix-porting.xml:
	  Mention gst_pad_use_explicit_caps() => gst_pad_use_fixed_caps()

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

	* gst/gstcaps.c: (gst_caps_do_simplify):
	  Thou shalt not free a structure and then continue using it
	  in the next loop iteration.

	* check/gst/gstcaps.c: (check_fourcc_list), (test_simplify),
	(gst_caps_suite):
	  Add test case for caps simplification.

2005-09-29  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	Oops.

2005-09-29  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	Add bus to bin.

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
	(add_to_queue), (clear_queue), (reset_degree), (update_degree),
	(find_element), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free),
	(gst_bin_iterate_sorted), (gst_bin_element_set_state),
	(gst_bin_change_state), (gst_bin_dispose):
	A bin does not have a bus, it gets the bus from the parent.

	* gst/gstelement.c: (gst_element_requires_clock),
	(gst_element_provides_clock), (gst_element_is_indexable),
	(gst_element_is_locked_state), (gst_element_change_state),
	(gst_element_set_bus_func):
	Small cleanups.

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_init), (gst_pipeline_provide_clock_func):
	The pipeline provides a bus.

2005-09-28  Johan Dahlin  <johan@gnome.org>

	* gst/gstmessage.c (gst_message_parse_state_changed): Use
	gst_structure_get_enum instead of gst_structure_get_int

	* gst/gststructure.c (gst_structure_get_enum): Impl.

	* gst/gststructure.h (gst_structure_get_enum): Add

	* docs/gst/gstreamer-sections.txt: Ditto

	* gst/gstmessage.c (gst_message_new_state_changed): Use
	GST_TYPE_STATE instead of G_TYPE_INT, mainly for language bindings
	which does introspection.
	Reviewed by Christian Schaller

2005-09-28  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstinfo.c: (gst_debug_log_default):
	  don't do dummy g_strdup()s
	* libs/gst/controller/gstcontroller.c:
	(on_object_controlled_property_changed),
	(gst_controlled_property_new), (gst_controller_new_valist),
	(gst_controller_new_list),
	(gst_controller_remove_properties_valist), (gst_controller_set),
	(gst_controller_get), (gst_controller_sync_values),
	(gst_controller_get_value_array), (_gst_controller_class_init),
	(gst_controller_get_type):
	* libs/gst/controller/gstcontroller.h:
	* libs/gst/controller/gstinterpolation.c:
	(gst_controlled_property_find_timed_value_node):
	  convert // to /**/ comments

2005-09-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (marshal_VOID__MINIOBJECT), (gst_bus_class_init),
	(gst_bus_post), (poll_func), (gst_bus_async_signal_func),
	(gst_bus_sync_signal_handler):
	* gst/gstbus.h:
	Added async-message and sync-message signals to the bus.
	Added helper BusFunc to emit signals for all posted messages.

	* gst/gstmessage.c: (gst_message_type_get_name),
	(gst_message_type_to_quark), (gst_message_get_type):
	* gst/gstmessage.h:
	Register quarks for message names.

2005-09-28  Stefan Kost  <ensonic@users.sf.net>

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist),
	(gst_controller_new_list):
	* libs/gst/controller/gstcontroller.h:
	  added another constructor for language bindings

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

	* check/gst/gstpipeline.c: (GST_START_TEST), (gst_pipeline_suite):
	  add another check
	* gst/gstbus.c:
	  add some doc
	* gst/gstinfo.c: (_gst_debug_init):
	  slightly more readable color for refcount debugging

2005-09-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_provide_clock_func),
	(add_to_queue), (clear_queue), (reset_degree), (update_degree),
	(find_element), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free),
	(gst_bin_iterate_sorted), (gst_bin_element_set_state),
	(gst_bin_change_state), (gst_bin_dispose):
	Small doc fixes. get_clock -> provide_clock.

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_provides_clock), (gst_element_provide_clock),
	(gst_element_get_clock), (gst_element_commit_state),
	(gst_element_lost_state):
	* gst/gstelement.h:
	Make get/set_clock() symetric. Add provide_clock vmethod since
	that is actually what this function does.

	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_change_state), (gst_pipeline_provide_clock_func),
	(gst_pipeline_get_clock):
	get_clock -> provide_clock.

2005-09-28  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesrc.c (gst_base_src_unlock): Comment a bit in
	lieu of real docs...

	* gst/elements/gstfdsrc.c: Cleaned up a bit.

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

	* gst/elements/gstcapsfilter.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/gsttee.c:
	* gst/elements/gsttypefindelement.c:
	  Make element details static.

2005-09-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (add_to_queue), (clear_queue), (reset_outdegree),
	(update_outdegree), (find_element), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free),
	(gst_bin_iterate_sorted), (gst_bin_element_set_state),
	(gst_bin_change_state), (gst_bin_dispose):
	Some documentation updates.
	Clean up dispose handlers.

	* gst/gstobject.c: (gst_object_ref), (gst_object_unref):
	* gst/gstpad.c: (gst_pad_dispose):
	Clean up dispose handler.

	* gst/gstpipeline.c: (gst_pipeline_change_state):
	Removed spurious UNLOCK.

2005-09-27  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/base/gstbasesrc.h:
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstobject.h:
	* gst/gstpad.h:
	* gst/gstpipeline.c:
	* gst/gstpipeline.h:
	* gst/gstutils.h:
	* gst/gstxml.h:
	  added two new functions to the docs
		documents all undocumented GstXXXFlags
		completed some incomplete docs 

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

	* gst/gstbin.c: (gst_bin_dispose):
	* gst/gstelement.c: (gst_element_dispose):
	  remove now useless and leaky resurrection code in dispose
	* gst/base/gstbasesrc.c: (gst_base_src_init):
	* gst/gstelementfactory.c: (gst_element_factory_create):
	* gst/gstobject.c: (gst_object_set_parent):
	  add some debugging

2005-09-27  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	Update TODO.

	* gst/gstbin.c: (add_to_queue), (clear_queue), (reset_outdegree),
	(update_outdegree), (find_element), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free),
	(gst_bin_iterate_sorted), (gst_bin_element_set_state),
	(gst_bin_change_state):
	* gst/gstelement.h:
	Remove element variable, we keep element info in the iterator now.

2005-09-27  Andy Wingo  <wingo@pobox.com>

	* libs/gst/dataprotocol/dataprotocol.c: Fix error-checking return
	values.

2005-09-27  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	Enable check that works now.

	* gst/gstbin.c: (add_to_queue), (clear_queue), (reset_outdegree),
	(update_outdegree), (find_element), (gst_bin_sort_iterator_next),
	(gst_bin_sort_iterator_resync), (gst_bin_sort_iterator_free),
	(gst_bin_iterate_sorted), (gst_bin_element_set_state),
	(gst_bin_change_state):
	* gst/gstbin.h:
	Redid the state change algorithm using a topological sort algo.
	Handles all cases correctly.
	Exposed iterator for state change order.

	* gst/gstelement.h:
	Temp storage for state changes. Need to get rid of this soon.

2005-09-27  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_do_push):
	* gst/gstutils.c: (intersect_caps_func), (gst_pad_proxy_getcaps),
	(link_fold_func), (gst_pad_proxy_setcaps):
	Leak fixes, the fold functions need to unref the passed object and
	_get_parent_*() returns ref to parent.

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

	* check/gst/gstbuffer.c: (test_make_writable):
	  Plug leak in test case and fix 'make check-valgrind'

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

	* gst/gstbuffer.c: (gst_subbuffer_init):
	  Set READONLY flag on subbuffers, so that gst_buffer_make_writable()
	  works correctly in all circumstances (we could have just copied
	  the parent buffer's readonly flag, but conceptually it seems
	  cleaner to mark all subbuffers as read-only). (based on patch
	  by Alessandro Decina, #314710).
	
	* check/gst/gstbuffer.c: (create_read_only_buffer),
	(test_make_writable), (test_subbuffer_make_writable),
	(gst_test_suite):
	  Add some tests for gst_buffer_make_writable().

2005-09-27  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_element_is_semi_sink), (gst_bin_change_state):
	use gst_object_has_ancestor().

	* gst/gstobject.c: (gst_object_has_ancestor):
	* gst/gstobject.h:
	gst_object_has_ancestor() copied from gstbin.c as it is a
	useful function.

	* tests/instantiate/create.c: (create_all_elements):
	* tests/lat.c: (handoff_src), (handoff_sink):
	* tests/sched/runxml.c: (main):
	* tests/seeking/seeking1.c: (main):
	* tests/threadstate/threadstate2.c: (bus_handler), (timeout_func),
	(main):
	Fix compilation of some tests.

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

	* gst/gsterror.h:
	  Remove comment. GST_TYPE_G_ERROR is here to stay,
	  G_TYPE_ERROR has been WONTFIX'ed by the GLib folks
	  (#316961, #300610).

2005-09-26  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
	Added check that shows error in state change order.

2005-09-26  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_change_state):
	Make state change function use 3 queues again, we were
	adding elements in the wrong order.

	* gst/gstghostpad.c: (gst_ghost_pad_do_unlink):
	Some debug info,

	* gst/gstpad.c: (gst_pad_dispose):
	Added some debug info first.

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

	* docs/design/draft-push-pull.txt:
	* docs/design/part-events.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-scheduling.txt:
	  Replace all _pull_region() with _pull_range()
	  
2005-09-26  Andy Wingo  <wingo@pobox.com>

	* gst/gstvalue.c (_gst_value_initialize): Better fakeout.

	* check/gst-libs/controller.c: Update for controller api change.

	* configure.ac: 
	* tests/Makefile.am:
	* tests/memchunk: Remove memchunk benchmark stuff, this is taken
	over by GLib bug 118439.
	
	* gst/base/gstbasesink.c (gst_base_sink_wait): Factor out the wait
	routines to a function.

	* docs/libs/gstreamer-libs-sections.txt: I am a good person today.

	* libs/gst/controller/gsthelper.c:
	* libs/gst/controller/gstcontroller.h (gst_controller_sync_values)
	(gst_object_sync_values): Renamed from sink_values. Ugh.

	* libs/gst/controller/gsthelper.c: Update for __gst_controller_key.

	* libs/gst/controller/gstcontroller.c (__gst_controller_key):
	Renamed from controller_key, as it is exported.

	* gst/gstvalue.c (_gst_value_initialize): Fake out the compiler.

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

	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstpad.h:
	* gst/gstpadtemplate.h:
	* gst/gstquery.c:
	* gst/gstquery.h:
	* gst/gstqueryutils.c:
	* gst/gstqueryutils.h:
	  remove queryutils headers after moving the two used functions
	  to gstquery.  also fixes build problem for gstsiddec

2005-09-26  Michael Smith <msmith@fluendo.com>

	* tools/gst-launch.1.in:
	Correct documentation in manpage of debug syntax

2005-09-26  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_get_range),
	(gst_base_src_is_seekable), (gst_base_src_change_state):
	Some more debugging info.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/base/gstbasetransform.h:
	* gst/gstindex.h:
	  added more docs

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

	* docs/gst/.cvsignore:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* gst/gstpipeline.c:
	* gst/gstplugin.c:
	* gst/gstplugin.h:
	  inlined the last two docs files
	  removed the tmpl directory from cvs (no more conflicts here!)

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* gst/Makefile.am:
	* gst/gstpad.c: (gst_pad_class_init), (gst_pad_dispose),
	(gst_pad_finalize), (gst_pad_set_pad_template):
	* gst/gstpad.h:
	* gst/gstpadtemplate.c: (gst_pad_template_get_type),
	(gst_pad_template_class_init), (gst_pad_template_init),
	(gst_pad_template_dispose), (name_is_valid),
	(gst_static_pad_template_get), (gst_pad_template_new),
	(gst_static_pad_template_get_caps), (gst_pad_template_get_caps),
	(gst_pad_template_pad_created):
	* gst/gstpadtemplate.h:
	  inlined two more docs
	  factored gstpadtemplate out of gstpad

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

	* check/gst/gstbin.c: (test_children_state_change_order_flagged_sink),
	(test_children_state_change_order_semi_sink):
	  Fix test case: we can't rely on a fixed state change order when
	  going from READY => PAUSED because the sink might commit its 
	  new state first when the first buffer created by the source 
	  reaches the sink before the source has finished its change state.
	  (Test case still fails at times, see #316856, comment 5 onwards)

2005-09-24  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-events.txt:
	* docs/design/part-gstbus.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-overview.txt:
	* docs/design/part-segments.txt:
	* gst/gstbin.c:
	* gst/gstbuffer.c:
	* gst/gstclock.c:
	* gst/gstelement.c:
	* gst/gstevent.c:
	* gst/gstfilter.c:
	* gst/gstiterator.c:
	Various documentation updates.

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

	* gst/gstclock.h:
	  Well, that's embarassing.  Luckily we weren't using
	  GST_CLOCK_DIFF anywhere.

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

	* common/gtk-doc.mak:
	  don't fail on building XML, FC4 slave shows a bunch of doc
	  missing bits that I don't get
	* gst/gstpad.c:
	* gst/gstpipeline.c:
	* gst/gststructure.c:
	  some doc updates

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

	* docs/design/part-gstbin.txt:
	* docs/design/part-gstbus.txt:
	* gst/gstbus.c:
	  Add blurb about how the bus goes into flushing mode and
	  drops all messages when its bin goes from READY into NULL 
	  state.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gststructure.c: (gst_structure_get_clock_time):
	* gst/gststructure.h:
	  add a method to get a GstClockTime out of a structure

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

	* check/gst/gstbin.c: (test_children_state_change_order_flagged_sink),
	(test_children_state_change_order_semi_sink), (gst_bin_suite):
	  Added test to check state change order in bins (can still be made
	  to fail here under heavy disk load; bails out with 'Push on pad
	  fakesink:sink0, but it was not activated in push mode').

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_change_state):
	  Fix state change order when there is only a semi sink (#316856)

	* gst/gstbus.c: (gst_bus_class_init):
	  Use _class_peek_parent(), not _class_ref(); fix docs to say
	  'default main context' instead of 'mainloop' where that is
	  what's meant.

	* gst/gstelement.c: (gst_element_commit_state),
	(gst_element_set_state):
	  Fix typos in debug messages

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

	* docs/README:
	* gst/gstpad.c: (gst_pad_class_init), (gst_pad_chain):
	* gst/gstpluginfeature.c:
	* gst/gstutils.c:
	  various doc updates
	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	  change an assert into an error until it gets fixed properly

2005-09-23  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* gst/gstelement.c:
	* gst/gstelement.h:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstobject.c: (gst_object_class_init):
	* gst/gstobject.h:
	  inlined 3 more biiiig doc files and added some missing docs on the fly

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

	* check/gst/.cvsignore:
	* check/gst/gstplugin.c: (GST_START_TEST), (gst_plugin_suite):
	* gst/gstregistryxml.c: (load_plugin),
	(gst_registry_xml_save_plugin):
	  put back source in registry.  add checks for find_plugin.
	* testsuite/states/bin.c: (assert_state), (empty_bin),
	(test_adding_one_element), (main):
	* testsuite/states/locked.c: (main):
	  some compile/run fixes

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

	* check/gst/gstvalue.c: (GST_START_TEST):
	  fix leaks in the test itself

2005-09-22  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_send_event), (gst_base_sink_peer_query),
	(gst_base_sink_query):
	Prepare for more accurate position reporting and query
	handling.

	* gst/gstelement.c: (gst_element_send_event),
	(gst_element_set_state):
	Add some comment.

2005-09-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstquery.c: (gst_query_new_segment), (gst_query_set_segment),
	(gst_query_parse_segment):
	* gst/gstquery.h:
	More documentation.
	Add segment query for future use.

2005-09-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_add_func):
	Some more debug info.

	* gst/gstelement.c: (gst_element_send_event):
	Simplify send_event

	* gst/gstelement.h:
	Don't know how flags got broken.

	* gst/gstquery.h:
	Added new query.

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

	* check/gst/gstvalue.c: (test_date), (gst_value_suite):
	  Add simplistic test suite for GST_TYPE_DATE serialisation and
	  deserialisation.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gststructure.c: (gst_structure_set_valist),
	(gst_structure_get_date):
	* gst/gststructure.h:
	* gst/gstvalue.c: (gst_value_set_date), (gst_value_get_date),
	(gst_date_copy), (gst_value_compare_date),
	(gst_value_serialize_date), (gst_value_deserialize_date),
	(gst_value_transform_date_string),
	(gst_value_transform_string_date), (_gst_value_initialize):
	* gst/gstvalue.h:
	  Add GST_TYPE_DATE, a boxed type that wraps GDate, and the usual
	  bunch of utility functions along with a hack that checks that
	  developers don't accidentally use G_TYPE_DATE where GST_TYPE_DATE
	  is required. Part of the grand scheme in #170777.

2005-09-22  Andy Wingo  <wingo@pobox.com>

	* gst/gstconfig.h.in: Psych out gtk-doc.

	* docs/gst/gstreamer-sections.txt: Add GST_HAVE_GLIB_2_8.

	* check/Makefile.am (check_PROGRAMS): Add gstplugin to the tests.

	* tools/gst-inspect.c (print_element_list): Plug some
	inconsequential leaks.

	* gst/gstregistry.c (gst_registry_get_default): Doc.

	* check/gst/gstplugin.c: 
	* gst/gsttypefindfactory.c (gst_type_find_factory_call_function):
	* gst/gstelementfactory.c (gst_element_factory_create): 
	* gst/gstindexfactory.c (gst_index_factory_create): Update for
	refcount changes.

	* gst/gstpluginfeature.c (gst_plugin_feature_list_free): Doc.
	(gst_plugin_feature_load): Doc, don't eat refs.

	* gst/gstplugin.c (gst_plugin_load): Doc, don't eat refs.
	(gst_plugin_list_free): Doc.
	(gst_plugin_load_file): Doc updates.

	* gst/gstbuffer.c (gst_buffer_get_caps): Like all our _get
	accessors returning refcounted objects, return a ref.

	* check/gst/gstbuffer.c (GST_START_TEST): Use refcount-idempotent
	accessor for caps. IDEMPOTENCE. Oh yes.

2005-09-21  Francis Labonte  <francis_labonte at hotmail dot com>

	Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinfo.c: (_gst_debug_nameof_funcptr),
	(_gst_debug_register_funcptr):
	  Add mutex to serialise access to the hash table with
	  the function pointer => function name string mapping;
	  make that hash table static scope (#316809).

	* gst/registries/.cvsignore:
	  Remove left-over file.

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

	* docs/pwg/appendix-porting.xml:
	  And something about newsegment events and caps-on-buffers to
	  the porting guide (feel free to improve).

2005-09-21  Andy Wingo  <wingo@pobox.com>

	* check/gst/gstutils.c (test_buffer_probe_n_times): Add tests for
	data and event probes on the same pad.
	(test_buffer_probe_once): Test that removing probes from within
	the probe functions works.

2005-09-21  Andy Wingo  <wingo@pobox.com>

	* check/gst/gstutils.c: New file.
	(test_buffer_probe_n_times): A simple buffer probe test. More to
	come, foolios.

	* gst/gstutils.c (gst_pad_add_buffer_probe): Connect to
	have-data::buffer, not have-data.
	(gst_pad_add_event_probe): Likewise for have-data::event.
	(gst_pad_add_data_probe): More docs. The part about 'resolving the
	peer' isn't quite right yet though.
	(gst_pad_remove_buffer_probe, gst_pad_remove_event_probe) 
	(gst_pad_remove_data_probe): Change to take the guint handler_id
	as their arg, not the function+data, which is more glib-like.

	* gst/gstpad.c (gst_pad_emit_have_data_signal): Add a detail to
	the signal emission to indicate if the data is a buffer or an
	event.
	(gst_pad_get_type): Initialize buffer and event quarks.
	(gst_pad_class_init): have-data is now a detailed signal, yes it
	is.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_size):
	* gst/gstutils.c: (gst_util_set_value_from_string),
	(gst_util_set_object_arg):
	  Don't put functional code in g_return_if_fail() or
	  g_return_val_if_fail() statements, otherwise things will 
	  break when G_DISABLE_CHECKS is defined during compilation.

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

	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstvalue.sgml:
	* gst/gstvalue.c:
	* gst/gstvalue.h:
	  inlied another one and added  some obvious docs

2005-09-21  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init),
	(gst_fdsrc_init), (gst_fdsrc_start), (gst_fdsrc_stop),
	(gst_fdsrc_unlock), (gst_fdsrc_set_property),
	(gst_fdsrc_get_property), (gst_fdsrc_create):
	* gst/elements/gstfdsrc.h:
	Properly implement fdsrc. Removed signal and timeout,
	better implemented somewhere else.

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

	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstimplementsinterface.sgml:
	* gst/gstinterface.c:
	  inlined more docs

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstenumtypes.sgml:
	  remove obsolete doc file

2005-09-21  David Schleef  <ds@schleef.org>

	* gst/gstelementfactory.c: (gst_element_factory_make): Drink a
	little beer, fix a little leak.

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstbin.c:
	* gst/gstelement.h:
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstindex.h:
	* gst/gstindexfactory.c: (gst_index_factory_get_type),
	(gst_index_factory_class_init), (gst_index_factory_init),
	(gst_index_factory_finalize), (gst_index_factory_new),
	(gst_index_factory_destroy), (gst_index_factory_find),
	(gst_index_factory_create), (gst_index_factory_make):
	* gst/gstindexfactory.h:
	* gst/gstpluginfeature.c:
	* gst/gstpluginfeature.h:
	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist):
	  more docs inlined, splitted gstindex.{c,h}

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

	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist):
	  fix a leak

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

	* gst/elements/gstfilesink.c: (gst_file_sink_init):
	  Set sync to FALSE by default.

2005-09-20  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_init):
	Make sync property settable from subclass.

	* gst/elements/gstfakesink.c: (gst_fake_sink_init),
	(gst_fake_sink_change_state):
	Set sync to FALSE by default.

2005-09-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (poll_func), (poll_timeout), (gst_bus_poll):
	* tools/gst-launch.c: (main):
	The timeout handler should have lower priority than the source
	so we don't timeout before popping a message with 0 timeout.
	Dump error messages after failed state change.

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

	* tools/gst-inspect.c: (print_element_properties_info):
	  Fix two typos.

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

	* check/gst/gstevent.c:
	* gst/elements/gstfakesink.c:
	* gst/elements/gstfakesink.h:
	  remove the sync property from fakesink.
	  has the side effect of setting sync TRUE
	  for fakesink, which is a change.  Anyone who knows how
	  to fix this nicely in a GObject-y way, feel free.

2005-09-20  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	  remove probe refsection

2005-09-20  Stefan Kost  <ensonic@users.sf.net>

	* check/Makefile.am:
	  disable valgrinding the controller test again
	* docs/gst/gstreamer-sections.txt:
	  update for api-changes

2005-09-20  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_class_init),
	(gst_base_sink_set_property), (gst_base_sink_get_property),
	(gst_base_sink_do_sync):
	* gst/base/gstbasesink.h:
	Added sync property to basesink to disable clock sync.

2005-09-20  Andy Wingo  <wingo@pobox.com>

	* gst/gstelementfactory.c (gst_element_factory_create): Avoid
	eating the caller's refcount.

	* gst/gstobject.h (GST_OBJECT_REFCOUNT) 
	(GST_OBJECT_REFCOUNT_VALUE): Conditionally fondle the right
	refcount.

	* gst/gstconfig.h.in (GST_HAVE_GLIB_2_8):
	* configure.ac (GST_HAVE_GLIB_2_8_DEFINE): Make the availability
	of GLib 2.8 public, so we can know which refcount to check in
	tests.

	* gst/gstobject.c: Use the GST_HAVE_GLIB_2_8 define.
	(gst_object_init): Only set the gst refcount if we're going ahead
	with the refcount hack.

2005-09-20  Stefan Kost  <ensonic@users.sf.net>

	* check/gst-libs/controller.c: (plugin_init), (GST_START_TEST):
	* libs/gst/controller/gstcontroller.c: (gst_controller_new_valist):
	  more leaks plumbed, added more debug-logging
	* gst/gstmacros.h:
	  whitespace fix

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

	* gst/gstmessage.c:
	  remove include of gstmemchunk.h

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

	* gst/gstclock.c: (_gst_clock_id_free):
	  Commit from the Political Party For More Atomic CVS Commits,
	  so that people don't waste too much of their day fishing
	  out obvious leaks out of massive commits.
	  Oh, and fix a pretty damn obvious leak in the memchunk
	  removal code.

2005-09-20  Stefan Kost  <ensonic@users.sf.net>

	* check/Makefile.am:
	* check/gst-libs/controller.c: (plugin_init), (GST_START_TEST):
	  plug mem-leak, re-add to valgrindable tests

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

	* gst/gstplugin.h:
	  unbreak the build for those who have chronic arthritis
	  and typing "make check" is just too taxing on the hands

2005-09-20  Andy Wingo  <wingo@pobox.com>

	* gst/gst.h: Re-add marshal to gst.h's include list -- if we
	really want it out, you should fix plugins at the same time.

2005-09-19  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstobject.c:
	  added missing symbols to api docs
	  disable ref-count hack if we have glib >= 2.8

2005-09-19  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Ignore a few more internal headers
	* docs/gst/gstreamer-docs.sgml: Remove old sections
	* docs/gst/gstreamer-sections.txt: Remove old sections
	* docs/gst/tmpl/gstobject.sgml: update
	* docs/gst/tmpl/gstplugin.sgml: update
	* docs/gst/tmpl/gstpluginfeature.sgml: update
	* docs/random/ds/0.9-suggested-changes: update.
	* gst/Makefile.am: remove memchunk and trashstack, since they're
	  not used.
	* gst/gst.c: (gst_deinit): rename gst_registry_deinit to _cleanup
	* gst/gst.h: don't include some headers
	* gst/gstchildproxy.c: add gstmarshal.h
	* gst/gstclock.c: Don't use memchunks
	* gst/gstminiobject.c: Add some docs
	* gst/gstobject.c: remove DESTROYED flag, since it's redundant
	* gst/gstobject.h: same
	* gst/gstplugin.c: include gstmacros.h
	* gst/gstplugin.h: don't include gstmacros.h, since it's private
	* gst/gstquery.c: don't use memchunks
	* gst/gstregistry.c: rename gst_registry_deinit()
	* gst/gstregistry.h: same

2005-09-19  David Schleef  <ds@schleef.org>

	* docs/libs/gstreamer-libs-docs.sgml: Remove docs for getbits
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstgetbits.sgml:
	* docs/libs/tmpl/gstputbits.sgml:

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

	* win32/gstenumtypes.c:
	* win32/gstenumtypes.h:
	  Update.

2005-09-19  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c: (do_pipeline_seek), (gst_pipeline_send_event):
	Automatically PAUSE and RESUME a pipeline when a flushing seek
	is performed.

2005-09-19  Andy Wingo  <wingo@pobox.com>

	* gst/gstregistry.h: Spacing fixen.

2005-09-19  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesrc.c: (gst_base_src_change_state):
	Handle state change failure more correctly.

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

	* check/Makefile.am:
	* check/pipelines/cleanup.c: (run_pipeline):
	* check/pipelines/simple_launch_lines.c: (run_pipeline),
	(GST_START_TEST):
	  enable cleanup again after fixing the leak
	* docs/README:
	  some more info on docs

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

	* check/Makefile.am:
	  re-enable tests now that leaks are plugged
	* check/gst/gst.c:
	* check/gst/gstbin.c:
	* check/gst/gstpipeline.c:
	  add some more tests while fixing leaks
	* common/check.mak:
	  make sure binaries are uptodate when valgrinding/gdbing
	* gst/gst.c:
	* gst/gstelementfactory.c:
	  remove a ref too many, and add a FIXME for when we get
	  round to disposing of classes
	* gst/gstplugin.c:
	  fix the refcounting when loading a plugin from a file and
	  the code pretends that the pointer is the same even though
	  of course it can change
	* gst/gstpluginfeature.c:
	  unref plugins marked cached (a bit confusing as a name)
	  as the docs state should be done
	  various doc additions to explain refcounting
	* gst/gstregistry.c:
	* gst/gstregistryxml.c:
	  debugging

2005-09-19  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (pop_messages), (GST_START_TEST):
	* check/gst/gstbus.c: (message_func_eos), (message_func_app),
	(send_messages), (GST_START_TEST), (gstbus_suite):
	* check/gst/gstpipeline.c: (GST_START_TEST):
	* check/pipelines/cleanup.c: (run_pipeline):
	* check/pipelines/simple_launch_lines.c: (run_pipeline),
	(GST_START_TEST):
	* gst/gstbus.c: (gst_bus_have_pending), (gst_bus_source_prepare),
	(gst_bus_source_check), (gst_bus_source_dispatch),
	(gst_bus_create_watch), (gst_bus_add_watch_full),
	(gst_bus_add_watch), (poll_func), (poll_timeout), (gst_bus_poll):
	* gst/gstbus.h:
	* tools/gst-launch.c: (event_loop):
	* tools/gst-md5sum.c: (event_loop):
	GstBusHandler -> GstBusFunc, return value has the same meaning as
	any other GSource (FALSE == remove source).
	_add_watch() and _add_watch_full() now take a MessageType mask to
	only handle specific types of messages.
	_poll() returns the GstMessage instead of the message type to avoid
	race conditions.
	_have_pending() takes a MessageType mask now too.
	Added testsuite for multiple bus watches.
	Fix testsuites and applications for new bus API.

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

	* check/Makefile.am:
	  mark a bunch of the tests as to fix until we fix them

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

	* common/check.mak:
	  use GST_PLUGIN settings for valgrind tests as well, so we're
	  valgrinding the correct thing
	* gst/gst.c: (init_post):
	  plug another leak

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

	* gst/gst.c: (init_post), (gst_deinit):
	* gst/gstelementfactory.c: (gst_element_factory_class_init),
	(gst_element_factory_finalize), (gst_element_factory_cleanup):
	* gst/gstindex.c: (gst_index_factory_class_init),
	(gst_index_factory_finalize):
	* gst/gstobject.c: (gst_object_dispose):
	* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_class_init),
	(gst_plugin_load_file), (gst_plugin_desc_free):
	* gst/gstpluginfeature.c: (gst_plugin_feature_class_init),
	(gst_plugin_feature_finalize):
	* gst/gstregistry.c: (gst_registry_class_init),
	(gst_registry_init), (gst_registry_finalize),
	(gst_registry_get_default), (gst_registry_deinit):
	* gst/gstregistry.h:
	* gst/gstregistryxml.c: (load_feature), (load_plugin):
	  various cleanups and memleak plugging.  make valgrind is happy now.

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

	* common/check.mak:
	  add a check-valgrind target

2005-09-18  David Schleef  <ds@schleef.org>

	* tools/gst-inspect.c: Revert the GOption code.

2005-09-17  David Schleef  <ds@schleef.org>

	* check/Makefile.am: Fix environment variables.
	* check/gst/gstplugin.c: Fix for API changes.
	* tools/gst-inspect.c: Fix for API changes.
	* tools/gst-xmlinspect.c: Fix for API changes.
	* gst/gstelementfactory.c:
	* gst/gstplugin.c:
	* gst/gstplugin.h:
	* gst/gstpluginfeature.c:
	* gst/gstpluginfeature.h:
	* gst/gstregistry.c:
	* gst/gstregistry.h:
	* gst/gstregistryxml.c:
	* gst/gsttypefind.c:
	* gst/gsttypefindfactory.c:
	* gst/indexers/gstfileindex.c:
	* gst/indexers/gstmemindex.c:
	* gst/schedulers/Makefile.am:
	  Change registry to keep track of both plugins and features,
	  removing the feature tracking from plugins themselves.

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

	* check/Makefile.am:
	* tools/gst-register.1.in:
	  remove gst-register

2005-09-15  David Schleef  <ds@schleef.org>

	* check/gst/gstplugin.c:
	* gst/gstelementfactory.c:
	* gst/gstplugin.c:
	* gst/gstpluginfeature.c:
	* gst/gstregistry.c:
	  Getting tired of debugging.  Disabled all the unreffing of
	  plugins and features, which fixes the segfaults, but of
	  course leaks like crazy.  At least playbin works.

2005-09-15  David Schleef  <ds@schleef.org>

	* check/gst/gstplugin.c: (register_check_elements),
	(GST_START_TEST), (peek), (suggest), (gst_plugin_suite):
	More testing
	* gst/elements/gsttypefindelement.c: Fix refcounting.
	* gst/gsttypefind.c:
	* gst/gsttypefindfactory.c:
	* gst/gsttypefindfactory.h:

2005-09-15  David Schleef  <ds@schleef.org>

	* gst/gstindex.c: get refcounting correct.
	* gst/gstregistry.c: Handle the case where a feature/plugin is
	  not found.

2005-09-15  David Schleef  <ds@schleef.org>

	* check/Makefile.am:
	* check/gst/gstplugin.c: Add test
	* gst/gstplugin.c: Fix problems noticed by testsuite
	* gst/gstplugin.h:
	* gst/gstregistry.c: 
	* gst/gstregistry.h:

2005-09-15  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: Implement semi-decent recounting and locking
	  in plugins and plugin features.
	* gst/gstplugin.h:
	* gst/gstpluginfeature.c:
	* gst/gstpluginfeature.h:
	* gst/gstregistry.c:

2005-09-15  Michael Smith <msmith@fluendo.com>

	* gst/gstregistry.c: (gst_registry_get_feature_list):
	  Implement this. Makes oggdemux work; decodebin still broken.

2005-09-14  David Schleef  <ds@schleef.org>

	* configure.ac: Add -no-undefined to GST_PLUGIN_LDFLAGS (bug
	  #316076)
	* gst/base/Makefile.am: Add -no-undefined to LDFLAGS for libs
	* gst/check/Makefile.am:
	* libs/gst/controller/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:

2005-09-14  David Schleef  <ds@schleef.org>

	* configure.ac: Remove getbits library.  Nothing uses it, and
	  it should be in something like liboil if someone did want
	  to use it.
	* libs/gst/Makefile.am:
	* libs/gst/getbits/Makefile.am:
	* libs/gst/getbits/gbtest.c:
	* libs/gst/getbits/getbits.c:
	* libs/gst/getbits/getbits.h:
	* libs/gst/getbits/gstgetbits_generic.c:
	* libs/gst/getbits/gstgetbits_i386.s:
	* libs/gst/getbits/gstgetbits_inl.h:

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/Makefile.am: Dist glib-compat.h

2005-09-14  David Schleef  <ds@schleef.org>

	* configure.ac: Remove gst/registries, since it's no longer used.
	* gst/registries/Makefile.am:
	* gst/registries/gstlibxmlregistry.c:
	* gst/registries/gstlibxmlregistry.h:
	* gst/registries/gstxmlregistry.c:
	* gst/registries/gstxmlregistry.h:
	* gst/registries/registrytest.c:

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/glib-compat.h:
	* gst/gstregistryxml.c:
	  Convergence is near.  Seriously.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/glib-compat.c: (g_mkdir_with_parents), (g_mkdir), (g_stat):
	* gst/glib-compat.h:
	  Attempt #4 to appease the buildbots.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/glib-compat.c: (g_mkdir_with_parents), (g_mkdir), (g_stat):
	  Attempt #3.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/glib-compat.c: (g_mkdir_with_parents), (g_mkdir), (g_stat):
	Attempt #2.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/Makefile.am: Oh yeah, libgstreamer.so needs to contain
	  the new functions.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/glib-compat.c: (g_mkdir_with_parents), (g_mkdir), (g_stat):
	* gst/glib-compat.h: Add some functions that are in newer versions
	  of glib than we care to require.
	* gst/gstregistryxml.c: Use them.

2005-09-14  David Schleef  <ds@schleef.org>

	* po/POTFILES.in: remove gst-register.c

2005-09-14  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	  Documentation updates for registry changes.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/gstregistryxml.c: Copy g_mkdir_with_parent() from glib,
	  because we don't require glib-2.8.

2005-09-14  David Schleef  <ds@schleef.org>

	* gst/gstregistryxml.c: Added.  Essentially moved out of the
	  registries directory.

2005-09-14  David Schleef  <ds@schleef.org>

	* check/Makefile.am:
	* check/generic/states.c:
	* gst/Makefile.am:
	* gst/gst.c:
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstelementfactory.c:
	* gst/gstindex.c:
	* gst/gstinfo.c:
	* gst/gstplugin.c:
	* gst/gstplugin.h:
	* gst/gstpluginfeature.c:
	* gst/gstpluginfeature.h:
	* gst/gstregistry.c:
	* gst/gstregistry.h:
	* gst/gstregistrypool.c: remove
	* gst/gstregistrypool.h: remove
	* gst/gsttypefind.c:
	* gst/gsttypefindfactory.c:
	* gst/gsturi.c:
	* tools/Makefile.am:
	* tools/gst-compprep.c:
	* tools/gst-inspect.c:
	* tools/gst-register.c: remove
	* tools/gst-xmlinspect.c:
	  Registry rewrite.  Changes registry from being a file created
	  by a tool into a simple cache file created automatically by 
	  libgstreamer.  Removed gst-register (because it's no longer
	  needed).  Remove registry pools, because we only have one
	  registry implementation (XML).  Fix up other subsystems as
	  necessary.

2005-09-13  Michael Smith <msmith@fluendo.com>

	* gst/gstconfig.h.in:
	  Don't Use windows linking attributes for MinGW. Fixes #316157

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

	* gst/gstutils.c: (set_state_async_thread_func),
	(gst_element_set_state_async):
	  Apparently people think it's better if this function doesn't
	  try to set the state to whatever state was asked for on the first
	  call to this function for any object.  Seriously.

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

	* check/gst/gstpipeline.c: (GST_START_TEST):
	* docs/gst/gstreamer-sections.txt:
	* gst/gstutils.c: (set_state_async_thread_func),
	(gst_element_set_state_async):
	* gst/gstutils.h:
	  add a "gst_element_set_state_async" method that
	  sets the state and starts a thread to make sure the state
	  change completes as best as it can

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

	* check/gst/gstpipeline.c: (GST_START_TEST), (gst_pipeline_suite):
	  codify design+behaviour in testsuite after discussion

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

	* docs/gst/tmpl/gstelement.sgml:
	* docs/manual/appendix-quotes.xml:
	  add a quote
	* gst/gstelement.c: (gst_element_set_state):
	  add some debug

2005-09-12  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_class_init),
	(gst_base_transform_prepare_output_buf),
	(gst_base_transform_handle_buffer):
	* gst/elements/gstcapsfilter.c: (gst_capsfilter_transform_ip),
	(gst_capsfilter_prepare_buf):
	  Remove the requirement for sub-classes to call the parent
	  implementation of prepare_output_buffer with a wrapper function.
	  
	* gst/gsttaglist.h:
	* gst/gsttagsetter.h:
	  Fix #define wrapper

2005-09-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  more doc cleanups

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* gst/gstminiobject.c:
	* gst/gstvalue.h:
	  docs now stop throwing warnings

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* gst/base/gstadapter.h:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.h:
	* gst/gstbin.h:
	* gst/gstbuffer.h:
	* gst/gstbus.h:
	* gst/gstcaps.h:
	* gst/gstclock.h:
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstmessage.h:
	* gst/gstpad.h:
	* gst/gststructure.c:
	* gst/registries/gstlibxmlregistry.h:
	  various documentation fixes

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstvalue.sgml:
	  rearrange gstvalue section
	* gst/gstutils.c: (gst_element_state_get_name):
	  NONE -> VOID
	* gst/gstvalue.c: (_gst_value_initialize):
	* gst/gstvalue.h:
	  doc updates

2005-09-10  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst-libs/controller.c:
	  Header include fix.
	* gst/base/gstbasetransform.c:
	(gst_base_transform_default_prepare_buf),
	(gst_base_transform_handle_buffer):
	* gst/base/gstbasetransform.h:
	  Some more basetransform changes and fixes to enable sub-classes
	  that modify buffer metadata only.
	* gst/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
	(gst_capsfilter_init), (gst_capsfilter_transform_ip),
	(gst_capsfilter_prepare_buf):
	  If the output pad has fixed allowed caps and input buffers 
	  don't have any, set the fixed caps on outgoing buffers.

2005-09-09  Jan Schmidt  <thaytan@mad.scientist.com>
	* check/elements/identity.c: (GST_START_TEST):
	  Make the error a little clearer when the test fails because
	  identity made a copy of the buffer.
	* docs/gst/gstreamer-sections.txt:
	  New symbols in gstbasetransform.h
	* gst/base/gstbasetransform.c: (gst_base_transform_class_init),
	(gst_base_transform_init), (gst_base_transform_transform_size),
	(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
	(gst_base_transform_default_prepare_buf),
	(gst_base_transform_get_unit_size),
	(gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer), (gst_base_transform_chain),
	(gst_base_transform_change_state),
	(gst_base_transform_set_passthrough),
	(gst_base_transform_set_in_place),
	(gst_base_transform_is_in_place):
	* gst/base/gstbasetransform.h:
	  Change BaseTransform to separate in_place operate from same_caps
	  output. in_place implies that the element can perform the transform
	  on incoming buffers in-place, even if the caps on the output are
	  different.
	  Sub-class elements can now implement special buffer allocation
	  methods for outgoing buffers if they wish to.
	  Big documentation addition.
	* gst/elements/gstcapsfilter.c: (gst_capsfilter_transform_ip):
	* gst/elements/gstelements.c:
	  Changes for basetransform modifications.
	* gst/elements/Makefile.am:
	* gst/elements/gstfdsrc.c: (gst_fdsrc_init), (gst_fdsrc_create):
	  Compile fix. Extra debug output.

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

	* check/gst/gstpad.c: (GST_START_TEST), (name_is_valid),
	(gst_pad_suite):
	  add tests for valid pad naming
	* gst/check/gstcheck.c: (gst_check_log_message_func),
	(gst_check_log_critical_func):
	  add ASSERT_WARNING
	  remove printing of code, it is fragile when the code contains
	  % and the line number is enough info
	* gst/check/gstcheck.h:
	* gst/gstpad.c: (gst_pad_template_new):
	  fix memleaks

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

	* configure.ac:
	  say what CHECK flags we use
	* docs/libs/gstreamer-libs.types:
	* libs/gst/controller/Makefile.am:
	* libs/gst/controller/gst-controller.c:
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-helper.c:
	* libs/gst/controller/gst-interpolation.c:
	* libs/gst/controller/gstcontroller.c:
	* libs/gst/controller/gsthelper.c:
	* libs/gst/controller/gstinterpolation.c:
	* tools/gst-inspect.c: (print_plugin_info):
	  we don't use dashes in header names

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

	* check/Makefile.am:
	* check/gst/.cvsignore:
	* check/gst/gstpipeline.c: (pop_messages), (GST_START_TEST),
	(gst_pipeline_suite), (main):
	  adding a test for pipelines and state changes
	* gst/gstutils.c: (get_state_func):
	  add some debugging
	* gstreamer.spec.in:
	  fix up spec file

2005-09-08  Michael Smith <msmith@fluendo.com>

	* gst/elements/gstfilesrc.c: (gst_file_src_map_region),
	(gst_file_src_map_small_region), (gst_file_src_create_mmap),
	(gst_file_src_is_seekable), (gst_file_src_get_size),
	(gst_file_src_start):
	* gst/elements/gstfilesrc.h:
	  Various fixes for unseekable, unmmapable, and non-normal files, so
	  that fallback to read() rather than mmap() works.
	* gst/gstevent.c: (gst_event_new_newsegment):
	  Allow newsegment events with segment_start == segment_end, as will
	  correctly happen if you use filesrc on a zero-size file, for
	  example.

2005-09-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstplugin.c: (gst_plugin_load_file):
	  Call g_module_close when we don't load the module

	* gst/registries/gstlibxmlregistry.c:
	(gst_xml_registry_get_property):
	  Port leak fix from 0.8

2005-09-07  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gsttrace.sgml:
	* docs/gst/tmpl/gsttrashstack.sgml:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstmessage.c:
	* gst/gstmessage.h:
	* gst/gsttag.c:
	* gst/gsttag.h:
	* gst/gsttaginterface.c:
	* gst/gsttaginterface.h:
	* gst/gsttaglist.c:
	* gst/gsttaglist.h:
	* gst/gsttagsetter.c:
	* gst/gsttagsetter.h:
	* gst/gsttrace.c:
	* gst/gsttrace.h:
	* gst/gsttrashstack.c:
	  renamed gsttag -> gsttaglist, gsttaginterface -> gsttagsetter
	  inlined docs for gsttrace, gsttrashstack

2005-09-07  Stefan Kost  <ensonic@users.sf.net>

	* gst/Makefile.am:
	* gst/elements/gstbufferstore.h:
	* gst/elements/gsttypefindelement.c:
	* gst/elements/gsttypefindelement.h:
	* gst/gst.h:
	* gst/gsttypefind.c:
	* gst/gsttypefind.h:
	* gst/gsttypefindfactory.c: (gst_type_find_factory_get_type),
	(gst_type_find_factory_class_init), (gst_type_find_factory_init),
	(gst_type_find_factory_dispose),
	(gst_type_find_factory_unload_thyself),
	(gst_type_find_load_plugin), (gst_type_find_factory_get_list),
	(gst_type_find_factory_get_caps),
	(gst_type_find_factory_get_extensions),
	(gst_type_find_factory_call_function):
	* gst/gsttypefindfactory.h:
	* gst/registries/gstlibxmlregistry.c:
	* gst/registries/gstxmlregistry.c:
	  splitted gsttypefind into gsttypefind, gsttypefindfactory

2005-09-07  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesink.c (gst_base_sink_activate_pull): Fix a race
	condition whereby the pad's task function is entered before the
	pad_mode variable was set.

2005-09-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_alloc_buffer):
	  Catch misbehaving pad_alloc functions that don't
	  set up caps and do it for them.

2005-09-07  Stefan Kost  <ensonic@users.sf.net>

	* check/pipelines/simple_launch_lines.c: (run_pipeline):
	  test for pipe!=NULL
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstmemchunk.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gsttaglist.sgml:
	* docs/gst/tmpl/gsttagsetter.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypefindfactory.sgml:
	* gst/gstmemchunk.c:
	* gst/gstparse.c:
	* gst/gsttag.c:
	* gst/gsttaginterface.c:
	* gst/gsttypefind.c:
	* gst/gsttypefind.h:
	  inlined more docs

=== release 0.9.2 ===

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

	* NEWS:
	* RELEASE:
	* configure.ac:
	  releasing 0.9.2, "South"

2005-09-05  Andy Wingo  <wingo@pobox.com>

	* gst/registries/gstxmlregistry.h:
	* gst/registries/gstxmlregistry.c: Um... resurrect...
	
	* gst/registries/gstxmlregistry.h:
	* gst/registries/gstxmlregistry.c: and update to newer API.
	Incidentally they should be a bit faster now that they don't have
	to parse the caps.
	
2005-09-05  Andy Wingo  <wingo@pobox.com>

	* gst/registries/gstxmlregistry.h:
	* gst/registries/gstxmlregistry.c: Remove from CVS, they were
	replaced by the libxml registry a while back

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

	* docs/gst/tmpl/gstplugin.sgml:
	* gst/elements/gstelements.c:
	* gst/gst.c:
	* gst/gstplugin.c: (gst_plugin_register_func),
	(gst_plugin_desc_copy), (gst_plugin_desc_free),
	(gst_plugin_get_source):
	* gst/gstplugin.h:
	* gst/registries/gstlibxmlregistry.c: (load_plugin),
	(gst_xml_registry_save_plugin):
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_parse_plugin),
	(gst_xml_registry_save_plugin):
	* tools/gst-inspect.c: (print_plugin_info):
	  add a "source" plugin description field, to represent the source
	  module this plugin is a part of.  By default GST_PLUGIN_DEFINE
	  will set it to PACKAGE, which is automake's idea of the name of
	  the source project.

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

	* Makefile.am:
	* autogen.sh:
	* configure.ac:
	* docs/Makefile.am:
	* docs/faq/Makefile.am:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/htmlinstall.mak:
	* docs/manual/Makefile.am:
	* docs/pwg/Makefile.am:
	  reorganize doc build a little
	  split out docbook and gtk-doc stuff
	  have two separate --enable's and enable them through autogen
	  but disable by default in configure (to be similar to other
	  projects)
	* gstreamer.spec.in:
	  clean up docs install
	* po/af.po:
	* po/az.po:
	* po/ca.po:
	* po/cs.po:
	* po/de.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/it.po:
	* po/nb.po:
	* po/nl.po:
	* po/ru.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	  translation updates

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

	* gst/base/gstbasesink.c: (gst_base_sink_pad_buffer_alloc):
	  Add comment.
	  
	* gst/elements/gstfakesink.c: (gst_fake_sink_init),
	(gst_fake_sink_change_state):
	  Make state change function thread-safe.
	  
	* gst/gstpad.c: (gst_pad_alloc_buffer):
	  Set offset on generic buffer allocated by fallback.

2005-09-03  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstelement.sgml:
	* gst/gstpad.c:
	* libs/gst/controller/gst-controller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new),
	(gst_controller_find_controlled_property):
	 run the wingo-magic script against the docs

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstelementdetails.sgml:
	* docs/gst/tmpl/gstelementfactory.sgml:
	* gst/gst.c:
	* gst/gstbus.c:
	* gst/gstelementfactory.c:
	* gst/gstelementfactory.h:
	  merged elementdetails docs into elementfactory docs
	  inlined both

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

	* gst/gstelement.h: Add magical pixie dust to make glib-mkenums
	consider this enum an enum and not a flags.

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstghostpad.sgml:
	* docs/gst/tmpl/gstiterator.sgml:
	* docs/gst/tmpl/gstmacros.sgml:
	* docs/gst/tmpl/gstrealpad.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstregistrypool.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttrace.sgml:
	* gst/gstghostpad.c:
	* gst/gstmacros.h:
	* gst/gstmemchunk.c:
	* gst/gstmemchunk.h:
	* gst/gstqueue.c:
	* gst/gstregistry.c:
	* gst/gstregistrypool.c:
	* gst/gststructure.c:
	* gst/gstsystemclock.c:
	  more docs inlined

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

	* gst/gstelement.h (GstState): Renamed from GstElementState,
	changed to be a normal enum instead of flags.
	(GstStateChangeReturn): Renamed from GstElementStateReturn, names
	munged to be GST_STATE_CHANGE_*.
	(GST_STATE_CHANGE): Renamed from GST_STATE_TRANSITION, updated to
	work with the new state representation.
	(GstStateChange): New enumeration of possible state transitions.
	Replaces GST_STATE_FOO_TO_BAR with GST_STATE_CHANGE_FOO_TO_BAR.
	(GstElementClass::change_state): Pass the GstStateChange along as
	an argument. Helps language bindings, so they don't have to use
	tricky lock-needing macros like GST_STATE_CHANGE ().

	* scripts/update-states (file): New script. Run it on a file to
	update it for state naming and API changes. Updates files in
	place.

	* All files updated for the new API.

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

	* gst/gsttrace.c: (gst_trace_flush), (gst_trace_text_flush):
	* gst/gstutils.c: (gst_util_set_value_from_string),
	(gst_util_set_object_arg):
	  fix a bunch of unchecked return values
	* tools/gst-complete.c: (main):
	* gstreamer.spec.in:
	  clean up a little

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_do_sync),
	(gst_base_sink_handle_event):
	* gst/base/gstbasesink.h:
	Handle newsegments more correctly.

	* gst/gstbus.c:
	Fix docs.

	* gst/gstevent.c: (gst_event_new_newsegment):
	A newsegment cannot have a start_time of -1

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

	* win32/gstenumtypes.c:
	* win32/gstenumtypes.h:
	  Update

2005-08-31  Stefan Kost  <ensonic@users.sf.net>

	* libs/gst/controller/gst-controller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new):
	 fixed boolean again

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

	* docs/faq/gst-uninstalled:
	  add -good
	* gst/gstevent.c:
	* gst/gstevent.h:
	  remove wrong docs
	* gst/gstutils.c: (gst_element_link_filtered):
	* gst/gstutils.h:
	  add gst_element_link_filtered

2005-08-31  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstfilter.sgml:
	* docs/gst/tmpl/gsturihandler.sgml:
	* docs/gst/tmpl/gsturitype.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gsterror.c:
	* gst/gsterror.h:
	* gst/gstfilter.c:
	* gst/gsturi.c:
	* gst/gsturitype.c:
	* gst/gstutils.c:
	* gst/gstxml.c:
	  inlined more docs, fixed double id-ref

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
	(gst_base_transform_handle_buffer):
	Passthrough elements don't need the caps as they don't care.

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
	(gst_base_transform_handle_buffer), (gst_base_transform_chain):
	Don't leak refcounts on buffers.

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_configure_caps),
	(gst_base_transform_setcaps), (gst_base_transform_handle_buffer),
	(gst_base_transform_chain), (gst_base_transform_change_state):
	* gst/base/gstbasetransform.h:
	Handle the case where we are not negotiated more gracefully.

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

	* gst/elements/gstfilesrc.c: (gst_mmap_buffer_init),
	(gst_file_src_map_region):
	  Set READONLY flag on mmap'ed buffers, otherwise
	  gst_buffer_make_writable() won't work properly (#314708).

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_handle_buffer):
	passthrough elements can even do inplace on non writable
	buffers (as they don't touch them).

2005-08-31  Stefan Kost  <ensonic@users.sf.net>

	* check/gst-libs/controller.c: (gst_test_mono_source_get_property),
	(gst_test_mono_source_set_property),
	(gst_test_mono_source_class_init), (GST_START_TEST),
	(gst_controller_suite):
	  more tests (hehe I have the most)
	* gst/gstbus.c:
	  describe popping messages whenusing mulltiple sources
	* libs/gst/controller/gst-controller.c:
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new):
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-interpolation.c:
	  implement boolean properties

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstminiobject.c: (gst_mini_object_ref):
	Cannot assert that the refcount has to be positive
	since a disposed object can be resurrected.

2005-08-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_init):
	Revert change, need to first fix badly behaving 
	apps.

2005-08-30  Wim Taymans  <wim@fluendo.com>

	* check/elements/fakesrc.c: (setup_fakesrc):
	* check/elements/identity.c: (setup_identity):
	Activate pads before using them.

2005-08-30  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstadapter.c: (gst_adapter_flush):
	Flushing out 0 bytes is ok for this function.

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	no newsegment gives a warning and sets the start/stop to 
	invalid.

	* gst/base/gstbasetransform.c: (gst_base_transform_change_state),
	(gst_base_transform_set_passthrough):
	Some debug info.

	* gst/gstminiobject.c: (gst_mini_object_ref):
	Check refcount here too.

	* gst/gstpad.c: (gst_pad_init):
	Pads are initially flushing and refusing data.

	* gst/gstutils.c: (gst_element_link_pads_filtered):
	When adding a capsfilter element make sure it has the
	same state as the parent bin.

2005-08-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstformat.sgml:
	* docs/gst/tmpl/gstversion.sgml:
	* gst/gstbus.h:
	* gst/gstformat.c:
	* gst/gstformat.h:
	* gst/gstversion.h.in:
	  more docs and two more inlined

2005-08-30  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstfilesink.c: (gst_file_sink_class_init):
	Don't sync to clock.

2005-08-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	  ultral33t func10ns deserve to appear in the docs actually
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstcompat.sgml:
	* docs/gst/tmpl/gstconfig.sgml:
	* gst/check/gstcheck.c:
	* gst/gstcompat.h:
	* gst/gstconfig.h.in:
	  inlined more docs

2005-08-30  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstquery.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* gst/gstquery.c:
	* gst/gstquery.h:
	  inlined and extended docs

2005-08-30  Stefan Kost  <ensonic@users.sf.net>

	* check/gst-libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	  more tests
	* docs/gst/tmpl/gstutils.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	  include path fixes
	* examples/controller/audio-example.c: (main):
	  controller example works now
	* gst/gstclock.h:
	  doc fixes
	* tools/gst-inspect.c: (print_element_properties_info):
	  show param spec flags

2005-08-29  Andy Wingo  <wingo@pobox.com>

	* gst/gstutils.c (gst_util_uint64_scale): New 3733t funct10n.

2005-08-28  Andy Wingo  <wingo@pobox.com>

	* gst/gstutils.h (GST_BOILERPLATE_FULL): Prototype instance_init
	as having two arguments instead of just one. Allows superclasses
	to access information on subclasses -- see the terrible for() loop
	in gtype.c:g_type_create_instance for the reason why. All callers
	changed.

2005-08-27  Stefan Kost  <ensonic@users.sf.net>

	* docs/design/part-messages.txt:
	  update info
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* gst/gstbus.c:
	* gst/gstcaps.c:
	* gst/gstcaps.h:
	* gst/gstclock.c:
	* gst/gstclock.h:
	* gst/gstmessage.c:
	  added descriptions for bus and message
	  inline caps and clock docs

2005-08-27  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstmessage.c:
	* gst/gstmessage.h:
	  doc fixes

2005-08-27  Stefan Kost  <ensonic@users.sf.net>

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_size):
	  fix div-by-zero

2005-08-26  Andy Wingo  <wingo@pobox.com>

	* check/pipelines/simple_launch_lines.c (run_pipeline): Check
	element_set_state's return val.
	(test_2_elements): Add test that's been disabled for months.

	* gst/elements/gstfakesink.c: Cleanups. Add can-activate-push and
	can-activate-pull properties.

	* gst/elements/gstfakesrc.c: Cleanups. Add can-activate-push and
	can-activate-pull properties. Implement is_seekable so fakesrc can
	operate in pull mode.

	* gst/base/gstbasesink.c (GstBaseSink): Remove has-loop, has-chain
	properties.
	(gst_base_sink_activate, gst_base_sink_activate_pull)
	(gst_base_sink_activate_push): Make activation mode choosing work.
	Cleanups.
	(gst_base_sink_chain, gst_base_sink_loop): Assert activation mode
	is right. Make pull mode work. Post an eos before pausing in pull
	mode.
	(gst_base_sink_change_state): Pay attention to the core's
	change_state() return val.
	
	* gst/base/gstbasesrc.c (GstBaseSrc): Remove has-loop,
	has-getrange properties. Cleanups.
	
	* gst/base/gstbasesrc.h (GstBaseSrc): Remove has_loop,
	has_getrange and replace with can_activate_pull and
	can_activate_push.

	* gst/base/gstbasesink.h (GstBaseSink): Rearrange fields, add
	locking comments. Remove has_loop, has_chain and replace with
	can_activate_pull and can_activate_push.

2005-08-26  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	* examples/Makefile.am:
	* examples/metadata/Makefile.am:
	* examples/metadata/read-metadata.c: (message_loop),
	(have_pad_handler), (make_pipeline), (print_tag), (main):
	  Add metadata reading example that loops over a list of filenames,
	  dumping any tags found.

	* gst/gstbus.c: (gst_bus_dispose):
	* gst/gstelement.c: (gst_element_dispose):
	  Release a few potentially-held references in dispose.

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

	* docs/gst/tmpl/gstminiobject.sgml:
	  do *not* add tmpl/*.sgml files to CVS!

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

	* libs/gst/bytestream/.cvsignore:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/bytestream/adapter.c:
	* libs/gst/bytestream/adapter.h:
	* libs/gst/bytestream/bytestream.c:
	* libs/gst/bytestream/bytestream.h:
	* libs/gst/bytestream/filepad.c:
	* libs/gst/bytestream/filepad.h:
	  removing obsolete files

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
	  disabed additional index entries again, as this makes docs-gen just
	  slow and they aren't useful yet
	* docs/libs/gstreamer-libs-sections.txt:
	  little -section.txt cleanup for libs

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	* gst/base/gstbasetransform.c: (gst_base_transform_transform_size),
	  fix up some debugging
	(gst_base_transform_get_unit_size),
	(gst_base_transform_buffer_alloc), (gst_base_transform_event),
	(gst_base_transform_handle_buffer):
	* gst/base/gstbasetransform.h:
	  handle and store timed NEWSEGMENT events so that subclasses that
	  calculate time by counting samples have a segment_start time they
	  need to add to their timestamps - see audioresample

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

	* gst/gstbin.h:
	  removed ';' from the end of macro defs
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* gst/gstbus.h:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_set_state), (activate_pads),
	(gst_element_save_thyself):
	* gst/gstevent.c: (gst_event_new_newsegment):
	* gst/gstevent.h:
	* gst/gstiterator.c:
	* gst/gstiterator.h:
	* gst/gstpad.c:
	* gst/gstprobe.h:
	* gst/gstutils.c: (gst_pad_query_convert):
	* gst/gstutils.h:
	  fixed parameter name mismatches between source, header and docs
	  added some more docs, resolved the last batch of unused elements in
	  docs (now someone needs to doc them)

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

	* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_rebuild):
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_rebuild):
	  don't walk through the plugins backwards.  Where is all this
	  reversed logic coming from ?

2005-08-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_init),
	(gst_base_transform_transform_size),
	(gst_base_transform_configure_caps),
	(gst_base_transform_get_unit_size),
	(gst_base_transform_buffer_alloc),
	(gst_base_transform_change_state):
	* gst/base/gstbasetransform.h:
	Cache caps unit_size.
	Make sure we cannot negotiate up and downstream at the
	same time.

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

	* gst/gst.c: (init_pre), (init_post):
	  register the installed plugin path after the env var
	* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_save):
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_save):
	  don't reverse order of paths; conserve the order of GST_PLUGIN_PATH
	  directories, so the tests can prefer uninstalled over installed

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

	* gst/base/gstbasetransform.h:
	  comment
	* gst/gstpad.c:
	  add to docs

2005-08-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_bus_handler):
	Be a bit more conservative about the posted message.
	
	* gst/gstbus.c: (gst_bus_post):
	Some cleanups, warn wrong return values.

2005-08-25  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* gst/gstbin.c: (bin_bus_handler):
	* gst/gstmessage.c: (gst_message_finalize), (_gst_message_copy),
	(gst_message_new), (gst_message_new_eos), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_new_custom):
	* gst/gstmessage.h:
	* tools/gst-launch.c: (event_loop):
	* tools/gst-md5sum.c: (event_loop):
	  Revert unpopular change for GST_MESSAGE_SRC to GObject.

2005-08-25  Wim Taymans  <wim@fluendo.com>

	* check/generic/states.c: (GST_START_TEST):
	Cleanup can be done at the end.

	* gst/gsttask.c: (gst_task_get_type), (gst_task_finalize),
	(gst_task_func), (gst_task_cleanup_all), (gst_task_set_lock),
	(gst_task_get_state), (gst_task_start), (gst_task_pause):
	Oh boy.. Thanks for finding this, Thomas. 

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

	* docs/gst/gstreamer.types:
	  added missing types

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* gst/gstbin.c:
	* gst/gstiterator.c:
	* gst/gstutils.c:
	* gst/registries/gstxmlregistry.h:
	  added missing classes and symbols (123 more to go)
	  removed removed symbols from section file
	  fixed many doc-comments

2005-08-24  Wim Taymans  <wim@fluendo.com>

	* check/generic/states.c: (GST_START_TEST):
	Make sure all tasks are stopped.

	* check/gst/gstbin.c: (GST_START_TEST):
	Unref after usage for proper valgrinding.

	* gst/gstpad.c: (gst_pad_finalize), (gst_pad_stop_task):
	Really wait for the task to stop before destroying the
	mutex.

	* gst/gstqueue.c: (gst_queue_sink_activate_push),
	(gst_queue_src_activate_push):
	Small cleanups. Don't stop the task when we did not start
	it.

	* gst/gsttask.c: (gst_task_get_type), (gst_task_init),
	(gst_task_func), (gst_task_cleanup_all), (gst_task_set_lock),
	(gst_task_get_state), (gst_task_start), (gst_task_pause),
	(gst_task_join):
	* gst/gsttask.h:
	Protect the stream lock with the object lock.
	Disallow setting the stream lock when running.
	Add cleanup_all to wait for the threadpool to finish.
	Remove code to autoallocate a mutex if none was provided.
	Add _join() to wait for a task to stop.
	Protect the thread pool with a global lock.

2005-08-24  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_get_times), (gst_base_sink_do_sync),
	(gst_base_sink_handle_buffer), (gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	Handle newsegment events correctly.
	Drop buffers out of the segment range.

2005-08-22  Andy Wingo  <wingo@pobox.com>

	* gst/gstutils.h (GST_BOILERPLATE_WITH_INTERFACE): New ghetto
	macro, implements an interface and gstimplementsinterface for a
	new type.

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

	* check/Makefile.am:
	* check/generic/states.c: (GST_START_TEST), (states_suite), (main):
	  add a test that does a bunch of state changes on elements
	  needs some fixing for valgrind
	* check/states/sinks.c: (gst_object_suite):
	  whitespace
	* gst/gstcaps.h:
	  add prototype for gst_caps_is_equal_fixed
	* gst/gstplugin.c:
	* gst/gstregistrypool.c:
	  doc fixes

2005-08-24  Andy Wingo  <wingo@pobox.com>

	* gst/gstquery.c (gst_query_new_convert): Spew if we try to
	convert a negative value. Doesn't make much sense. Mostly this is
	here to force callers to ensure -1 maps to -1.

2005-08-24  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/pwg/advanced-types.xml:
	  Well done to Michael for catching my deliberate introduction
	  of this spelling mistake. 
	* gst/gstbin.c: (gst_bin_remove_func), (bin_bus_handler):
	* gst/gstelement.h:
	  Add GST_ELEMENT_UNPARENTING to prevent races so that we can
	  unlink pads before removing the element from the bin.

2005-08-24  Andy Wingo  <wingo@pobox.com>

	* gst/gst.c (parse_debug_list): Accept e.g. GST_DEBUG=4 to mean
	the same thing as GST_DEBUG=*:4.
	(parse_debug_level, parse_debug_category): New helper parsers.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
	(gst_base_transform_transform_size), (gst_base_transform_getcaps),
	(gst_base_transform_setcaps), (gst_base_transform_get_unit_size),
	(gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer):
	  use gboolean return values and pointers to size so we can use the
	  full GST_BUFFER_SIZE range (guint) for buffer sizes
	  use GstPadDirection for transform_caps
	* gst/base/gstbasetransform.h:
	  rename get_size to get_unit_size since that's what it is
	* gst/elements/gstcapsfilter.c: (gst_capsfilter_transform_caps):
	  use GstPadDirection for transform_caps
	* gst/gstbuffer.c: (gst_buffer_new_and_alloc):
	* gst/gstutils.h:
	  cleanup and debugging

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

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_set_state), (activate_pads),
	(gst_element_save_thyself):
	* tools/gst-compprep.c: (main):
	* tools/gst-inspect.c: (print_element_properties_info):
	* tools/gst-xmlinspect.c: (print_element_properties):
	  Fixed long standing mem-leak

2005-08-24  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	* gst/gstbin.c: (bin_bus_handler):
	* gst/gstmessage.c: (gst_message_finalize), (_gst_message_copy),
	(gst_message_new), (gst_message_new_eos), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_new_custom):
	* gst/gstmessage.h:
	* tools/gst-launch.c: (event_loop):
	* tools/gst-md5sum.c: (event_loop):
	  Change GST_MESSAGE_SRC to be a GObject rather than a GstObject, so
	  that applications can sensibly post custom messages with references
	  to their own objects.

2005-08-24  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_fixate_caps): Check if the caps is fixed
	already.

2005-08-24  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_init),
	(gst_base_transform_transform_caps),
	(gst_base_transform_transform_size),
	(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
	(gst_base_transform_get_size), (gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer):
	* gst/base/gstbasetransform.h:
	Many fixes and new features added by Thomas. Can now also do
	transforms with variable sizes and a custom fixate_caps function.

2005-08-24  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_new_and_alloc):
	Some debugging.

	* gst/gstclock.h:
	Cast to ClockTime before formatting to time.

	* gst/gstutils.h:
	Cleanups.

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

	* check/gst-libs/controller.c: (GST_START_TEST),
	(gst_controller_suite):
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstghostpad.sgml:
	* docs/gst/tmpl/gstquery.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* libs/gst/controller/gst-helper.c: (gst_object_set_controller),
	(gst_object_sink_values), (gst_object_get_value_arrays),
	(gst_object_get_value_array):
	  gracefully handle helper method calls to objects that are not beeing
	  controlled, added test case for that          

2005-08-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c: (_gst_event_copy), (gst_event_new_custom),
	(gst_event_new_newsegment), (gst_event_parse_newsegment),
	(gst_event_new_tag), (gst_event_parse_tag), (gst_event_new_qos),
	(gst_event_parse_qos), (gst_event_new_seek),
	(gst_event_parse_seek):
	* gst/gstevent.h:
	Some more debugging output and doc cleanups.

	* gst/gstqueue.c: (gst_queue_handle_sink_event):
	Fix possible deadlock.

2005-08-23  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/.cvsignore:
	* gst/gstbin.h:
	* gst/gstbus.c:
	* gst/gstelement.c:
	* gst/gstevent.h:
	  added 100 symbols from gstreamer-unused.txt to the right sections
	  fixed more broken comments
	  added GstBus to docs

2005-08-23  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/.cvsignore:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* gst/base/gstbasesrc.c:
	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init):
	* gst/gstbuffer.c:
	* gst/gstbuffer.h:
	* tools/gst-launch.1.in:
	  inlined more doc comments, added missing comments and fixed comments
	  fixed typos

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

	* gst/gstbuffer.c: (gst_buffer_new_and_alloc):
	  some debugging
	* gst/gstcaps.h:
	  whitespace fixes
	* gst/gstpad.c: (gst_pad_activate_push), (gst_pad_alloc_buffer):
	  more debugging
	* gst/gststructure.c: (gst_caps_structure_fixate_field_boolean):
	* gst/gststructure.h:
	  add a fixate function for booleans; add a FIXME that these func
	  names should probably be gst_structure_fixate_*

2005-08-23  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gstbin.c: (gst_bin_get_type),
	(gst_bin_child_proxy_get_child_by_index),
	(gst_bin_child_proxy_get_children_count),
	(gst_bin_child_proxy_init):
	* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
	(gst_child_proxy_get_child_by_index),
	(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
	(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
	(gst_child_proxy_get), (gst_child_proxy_set_property),
	(gst_child_proxy_set_valist), (gst_child_proxy_set),
	(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
	(gst_child_proxy_base_init), (gst_child_proxy_get_type):
	* gst/gstchildproxy.h:
	* gst/parse/grammar.y:
	* tools/gst-inspect.c: (print_interfaces),
	(print_element_properties_info), (print_element_info):
	  ported gstchildproxy over from 0.8
	  ported gst-inspect fixes and enhancements over from 0.8

2005-08-22  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
	(gst_base_transform_handle_buffer):
	Also call the transform function if we have ANY caps.

	* gst/gstpipeline.c: (gst_pipeline_set_new_stream_time):
	Fix debug info.

2005-08-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasesrc.c: (gst_base_src_event_handler)
	  Don't pretend to handle seek events if the source is not seekable

2005-08-22  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	  Remove extra parameter to debug output

	* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
	(gst_base_src_do_seek), (gst_base_src_activate_push):
	  Fix seek event handling.

	* gst/gstpipeline.c: (gst_pipeline_change_state):
	* gst/gstqueue.c: (gst_queue_handle_sink_event),
	(gst_queue_src_activate_push):
	  Don't start the src pad task on FLUSH_STOP if the pad
	  isn't linked.
	  Debug changes.

2005-08-22  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstcaps.c: (GST_START_TEST), (gst_caps_suite):
	Added check for gst_static_caps_get() refcounting.

2005-08-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstcaps.c: (gst_static_caps_get), (gst_caps_to_string):
	Make _static_caps_get() refcounting sane.
	
	* gst/gstelement.c: (gst_element_set_state):
	Add g_return_val_if_fail() to protect against segfaults.

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

	* docs/gst/tmpl/gstevent.sgml:
	* gst/gstevent.c:
	* gst/gstevent.h:
	  inlined remaining docs, added missing doc comments

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

	* check/gst/gstbin.c: (GST_START_TEST):
	  since we don't know when preroll is done, use refcount range
	  check for the sink
	* gst/check/gstcheck.h:
	  add macro for checking refcount range

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

	* check/Makefile.am:
	  clean up environment for when registry gets built versus
	  when actual tests are run; valgrind seems to not report
	  leaks if GST_PLUGIN_PATH is set to some specific values
	* check/gst/gstbin.c: (GST_START_TEST):
	  add more refcounting checks; maybe this exposes a
	  preroll lock bug ?
	* common/check.mak:
	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	* gst/check/gstcheck.h:
	* gst/gstbin.c: (bin_element_is_semi_sink), (gst_bin_get_state),
	(gst_bin_change_state):
	* gst/gstpad.c: (gst_pad_activate_push), (gst_pad_chain):
	  add/fix debugging/whitespace

2005-08-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstevent.c: (event_probe), (test_event),
	(GST_START_TEST):
	 Er, don't call gst_bin_watch_for_state_change you idiot.

2005-08-21  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/Makefile.am:
	  Use CHECK_CFLAGS and CHECK_LIBS
	* check/gst/gstevent.c: (event_probe), (test_event),
	(GST_START_TEST):
	  Don't leak events.
	* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
	(gst_base_src_start), (gst_base_src_stop),
	(gst_base_src_activate_push), (gst_base_src_activate_pull),
	(gst_base_src_change_state):
	  Sprinkle gst_base_src_stop liberally around error paths to fix
	  problems reusing a source after failed state changes.
	* gst/base/gsttypefindhelper.c: (helper_find_peek),
	(helper_find_suggest), (gst_type_find_helper):
	  Extra debug output. Don't segfault on GST_PAD_GETRANGEFUNC = NULL
	* gst/gstevent.h:
	* docs/gst/tmpl/gstevent.sgml:
	  Migrate part of the docs from the SGML file. Wait for ensonic to
	  tell me how I did it wrong ;)
	* tools/gst-typefind.c: (main):
	  Extra robustness to state changes between files.

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

	* check/Makefile.am:
	  don't valgrind the controller test - it's leaking - Stefan, HELP
	* gst/check/gstcheck.c: (gst_check_message_error),
	(gst_check_chain_func), (gst_check_setup_element),
	(gst_check_teardown_element), (gst_check_setup_src_pad),
	(gst_check_teardown_src_pad), (gst_check_setup_sink_pad),
	(gst_check_teardown_sink_pad):
	* gst/check/gstcheck.h:
	  add a bunch of methods to set up elements, and src and sink pads
	* check/elements/fakesrc.c: (setup_fakesrc), (cleanup_fakesrc):
	* check/elements/identity.c: (setup_identity), (cleanup_identity),
	(GST_START_TEST):
	  use them
	* gst/gstmessage.c:
	* gst/gsttag.h:
	  whitespace/doc fixes

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

	* gst/gstelement.h:
	  make GST_ELEMENT_ERROR not do GST_ERROR_OBJECT - these errors should
	  be handled by the application and not always printed as well

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

	* check/Makefile.am:
	  set GST_TOOLS_DIR
	* gst/check/gstcheck.c: (gst_check_message_error):
	* gst/check/gstcheck.h:
	  add a fail_unless_equals_int
	  add fail_unless for error messages

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

	* check/Makefile.am:
	* check/gst.supp:
	* common/Makefile.am:
	* common/check.mak:
	* common/gst.supp:
	  factor out some of the common stuff so we can use it

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

	* check/Makefile.am:
	* check/gst/gstiterator.c: (GST_START_TEST):
	* check/gst/gstsystemclock.c: (GST_START_TEST),
	(gst_systemclock_suite):
	* check/gst/gsttag.c: (GST_START_TEST), (gst_tag_suite):
	* gst/gstclock.c:
	  valgrind more tests

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

	* check/elements/.cvsignore:
	* check/elements/gstfakesrc.c:
	  rename to name of element
	* check/elements/identity.c: (chain_func), (event_func),
	(setup_identity), (cleanup_identity), (GST_START_TEST),
	(identity_suite), (main):
	  add a test for identity
	* check/Makefile.am:
	* pkgconfig/Makefile.am:
	* pkgconfig/gstreamer-check.pc.in:
	* pkgconfig/gstreamer-check-uninstalled.pc.in:
	* gst/check:
	* gst/Makefile.am:
	* configure.ac:
	  move the check stuff to a library that gets installed
	* check/gst-libs/controller.c: (GST_START_TEST):
	* check/gst-libs/gdp.c:
	* check/gst/gst.c: (GST_START_TEST):
	* check/gst/gstbin.c:
	* check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	* check/gst/gstbus.c:
	* check/gst/gstcaps.c: (GST_START_TEST):
	* check/gst/gstelement.c:
	* check/gst/gstghostpad.c:
	* check/gst/gstiterator.c:
	* check/gst/gstmessage.c:
	* check/gst/gstminiobject.c: (thread_ref), (GST_START_TEST):
	* check/gst/gstobject.c:
	* check/gst/gstpad.c: (GST_START_TEST):
	* check/gst/gststructure.c: (GST_START_TEST):
	* check/gst/gstsystemclock.c: (GST_START_TEST),
	(gst_systemclock_suite):
	* check/gst/gsttag.c: (gst_tag_suite):
	* check/gst/gstvalue.c:
	* check/pipelines/cleanup.c:
	* check/pipelines/simple_launch_lines.c:
	* check/states/sinks.c:
	  change include statement

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstpad.sgml:
	  document more pad stuff
	* gst/gstminiobject.c: (gst_mini_object_ref),
	(gst_mini_object_unref):
	  debug refcounting

2005-08-19  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/tmpl/gst.sgml:
	* gst/gst.c:
	  eliminate another tmpl file, fix spelling in the long-description

2005-08-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstevents.c: (GST_START_TEST), (event_probe),
	(test_event), (timediff), (gstevents_suite):
	  Should fix build on 64-bit arch's

2005-08-18  Andy Wingo  <wingo@pobox.com>

	Make sure that when a pipeline goes to PLAYING, that data has
	actually hit the sink.

	* check/states/sinks.c (test_sink): A sink that doesn't get any
	data shouldn't return SUCCESS for going to either PLAYING or
	PAUSED. Test also the return values on the way back down.

	* gst/gstelement.c (gst_element_set_state): When changing the
	state of an element currently changing state asynchronously, go to
	lost-state after commiting the pending state. Makes future calls
	to get_state continue to return ASYNC.

	* gst/base/gstbasesink.c (gst_base_sink_change_state): Return
	ASYNC when going to PLAYING if we still don't have preroll, as can
	happen with live sources.

2005-08-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/pwg/advanced-types.xml:
	  Hack long paragraph into 2 chunks as a workaround for buggy
	  jadetex version in sid and breezy that loops infinitely and
	  eats all RAM.

2005-08-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstevents.c: (GST_START_TEST), (event_probe),
	(test_event), (timediff), (gstevents_suite):
	  Provide more error margin in clock measurements to allow for 
	  g_get_current_time inaccuracies.

2005-08-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/gst/gstevents.c: (GST_START_TEST), (event_probe),
	(test_event), (timediff), (gstevents_suite):
	   Fix error message output so I might be able to tell why the
	   test works here but fails on the build farm.

2005-08-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* check/Makefile.am:
	* check/gst/gstevents.c: (GST_START_TEST), (event_probe),
	(test_event), (timediff), (gstevents_suite), (main):
	  I wrote a test!

	* docs/design/part-seeking.txt:
	  Spelling correction

	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	  Docs updates.

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	  Treat a buffer-without-newsegment the same as a receiving 
	  a newsegment not in time format, and disable syncing to the clock
	  with a warning.

	* gst/gstbus.c: (gst_bus_set_sync_handler):
	  Assert if anyone tries to replace the existing sync_handler for bus, 
	  as only the owner should be setting it.

	* gst/gstevent.h:
	  Have a fixed set of custom event enums with events identified by
	  their structure name (as in 0.8), rather than a free-for-all
	  allowing collisions between enum values from different plugins.

	* gst/gstpad.c: (gst_pad_class_init):
	  Docs change.
	  
	* gst/gstqueue.c: (gst_queue_handle_sink_event):
	  Handle out-of-band downstream events from the sending thread.

2005-08-17  Andy Wingo  <wingo@pobox.com>

	* gst/gstpipeline.c (gst_pipeline_change_state): Interpret
	play-timeout==0 to mean no timeout at all. In that case, don't
	bother with a get_state or a warning, just return directly, even
	if it's ASYNC.

	* gst/base/gstbasetransform.c: Debug changes.

	* gst/gstutils.h:
	* gst/gstutils.c (gst_bin_watch_for_state_change): Add function to
	ensure bins post state change messages. A bit of a hack but I can't
	think of a way to avoid it.

	* check/gst/gstbin.c (test_watch_for_state_change): Added test.

2005-08-16  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstadapter.h:
	* gst/base/gstadapter.c (gst_adapter_take): New function, like
	peek() but you own the data. Not terribly efficient atm.

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

	* gst/gstutils.c: (gst_element_found_tags_for_pad), (push_and_ref),
	(gst_element_found_tags):
	* gst/gstutils.h:
	  Add two utility functions for tag handling.

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

	* docs/manual/advanced-dataaccess.xml:
	* docs/manual/basics-helloworld.xml:
	  Fix docs to use _bin_add() before _link(), which fixes the examples
	  with recent core versions (reported by Madhan Raj M
	  <raj_madan@rediffmail.com>, #313199).

2005-08-16  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	Added subtract checks.

	* docs/design/part-events.txt:
	Some more docs about newsegment

	* gst/gstbin.c: (gst_bin_change_state), (bin_bus_handler):
	Fix FIXME

	* gst/gstcaps.c: (gst_caps_to_string):
	Add comments, cleanups.
	
	* gst/gstelement.c: (gst_element_save_thyself):
	cleanups
	
	* gst/gstvalue.c: (gst_value_collect_int_range),
	(gst_string_unwrap), (gst_value_union_int_int_range),
	(gst_value_union_int_range_int_range),
	(gst_value_intersect_int_int_range),
	(gst_value_intersect_int_range_int_range),
	(gst_value_intersect_double_double_range),
	(gst_value_intersect_double_range_double_range),
	(gst_value_intersect_list), (gst_value_subtract_int_int_range),
	(gst_value_subtract_int_range_int),
	(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_compare), (gst_value_compare_fraction):
	Cleanups, add comments, remove unneeded asserts.

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

	* tools/gst-launch.c: (event_loop):
	  don't convert NULL structures to strings

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

	* docs/gst/gstreamer-sections.txt:
	  made some defines private
	* docs/gst/tmpl/gstconfig.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gsttaglist.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/pwg/appendix-porting.xml:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c:
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesink.c: (gst_fake_sink_class_init):
	* gst/elements/gstfakesrc.c: (gst_fake_src_class_init):
	* gst/gstelement.c: (gst_element_class_init):
	* gst/gstpad.c: (gst_pad_class_init):
	* gst/gstqueue.c: (gst_queue_class_init):
	* gst/gstxml.c: (gst_xml_class_init):
	  documented all undocumented signal inline
	* libs/gst/controller/gst-controller.h:
	  added padding

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

	* docs/pwg/appendix-porting.xml:
	  Document _set_link_function -> _set_setcaps_function.

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

	* check/Makefile.am:
	  add a .check target for running the check
	* check/gst-libs/controller.c: (GST_START_TEST):
	  cosmetic fixups
	* check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	  complete checks for gstbuffer; would be nice if I could get the
	  gcov stuff to work so I can see if I actually completed gstbuffer.c
	* check/gstcheck.h:
	  add ASSERT_BUFFER_REFCOUNT

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_register):
	* gst/gsttag.h:
	  Add GST_TAG_LANGUAGE_CODE as we have in 0.8, and don't
	  spew out a warning if a tag that is already registered
	  is re-registered, unless it is re-registered with a 
	  different type (#308438).

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

	* docs/pwg/appendix-porting.xml:
	* docs/pwg/building-state.xml:
	  Add some paragraphs about state changes in 0.9 to the PWG
	  and the porting guide, in particular about the new meaning
	  of GST_STATE_PAUSED and how to write state change functions
	  with concurrent access by multiple threads in mind.

2005-08-11  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
	  added deprecation and since indexes
	* libs/gst/controller/gst-controller.c:
	* libs/gst/controller/gst-helper.c:
	  added since tags


2005-08-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_set_target_unlocked),
	(gst_proxy_pad_set_target), (gst_proxy_pad_get_target),
	(gst_proxy_pad_dispose), (gst_ghost_pad_do_activate_push),
	(gst_ghost_pad_do_link), (gst_ghost_pad_set_internal),
	(gst_ghost_pad_new_notarget), (gst_ghost_pad_get_target),
	(gst_ghost_pad_set_target):
	Actually implement (re)setting the target on a ghostpad
	as described in the docs.

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

	* gst/gst.c: (gst_init_check_with_popt_table), (init_pre):
	  Check whether GST_DEBUG_NO_COLOR environment variable is
	  set and disable coloured debug output if that is the case.

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

	* gst/base/gsttypefindhelper.c: (helper_find_peek),
	(gst_type_find_helper):
	  The memory returned by gst_type_find_peek() needs to
	  stay valid until the end of a typefind function, and
	  typefind functions may keep results from different 
	  offsets around, so we can't just unref the buffer from
	  the previous _peek(), but have to save all buffers 
	  returned by _peek() until typefinding is done and only
	  free them then.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstutils.h:
	  New macros: GST_ROUND_UP_2() through GST_ROUND_UP_64().

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

	* gst/base/gstbasetransform.c: (gst_base_transform_buffer_alloc):
	  Fix a pretty good memleak.

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

	* gst/gstiterator.h:
	  Fix wrong include and 'make distcheck'.

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

	* gst/gstbin.c: (bin_bus_handler):
	  Use gst_element_post_message() instead.

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

	* gst/base/gstadapter.h:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.h:
	* gst/base/gstcollectpads.h:
	* gst/base/gstpushsrc.h:
	* gst/gstiterator.h:
	  Add padding to our base elements' class and instance structs and
	  to GstIterator (you will need to rebuild all plugins and apps!)

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

	* gst/gstbin.c: (bin_bus_handler):
	  Make default message forwarding from child->bus to bin->bus
	  threadsafe and make it not emit warnings if the parent has no bus.

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

	* gst/gstelement.c: (activate_pads):
	  On paused->ready, set pad->caps to NULL, as is the documented
	  behaviour in this state change. Fixes playback of series of
	  media files when visualization is enabled in Totem.

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

	* gst/elements/gstcapsfilter.c: (gst_capsfilter_set_property):
	  Allow NULL as filter-caps (which means "any").

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

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/controller/gst-controller.c:
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-helper.c:
	  adding more entries to the docs and fix small doc-bugs

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstbasesink.sgml:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstbasetransform.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* gst/base/gstcollectpads.c:
	* gst/base/gstcollectpads.h:
	* libs/gst/controller/gst-controller.c:
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-helper.c:
	* libs/gst/controller/gst-interpolation.c:
	* libs/gst/controller/lib.c:
	  added long/short desc for controller docs
	  added collectpads base class docs
	  added correct includes to base-class docs

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

	* check/gst-libs/controller.c: (gst_test_mono_source_get_property),
	(gst_test_mono_source_set_property),
	(gst_test_mono_source_class_init), (GST_START_TEST),
	(gst_controller_suite):
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* gst/base/gstadapter.c:
	* libs/gst/controller/gst-controller.c:
	(gst_controlled_property_new), (gst_controlled_property_free),
	(gst_controller_new_valist),
	(gst_controller_remove_properties_valist),
	(gst_controller_sink_values), (_gst_controller_finalize):
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-helper.c:
	(gst_object_control_properties), (gst_object_uncontrol_properties),
	(gst_object_get_controller), (gst_object_set_controller),
	(gst_object_sink_values), (gst_object_get_value_arrays),
	(gst_object_get_value_array):
	  more tests (and fixes) for the controller
	  more docs for the controller
	  integrated companies docs for the adapter 

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

	* check/elements/gstfakesrc.c: (setup_fakesrc), (cleanup_fakesrc),
	(GST_START_TEST), (fakesrc_suite):
	  add tests for sizetype

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

	* gst/elements/gstcapsfilter.c: Reimplement using basetransform,
	fixes buffer_alloc proxying among other things.

	* gst/base/gstbasetransform.c:
	* gst/base/gstbasetransform.h:
	Revert patch to gstbasetransform from 7-28 removing
	delay_configure.

	* gst/base/gstbasetransform.h (GstBaseTransformClass.get_size):
	* gst/base/gstbasetransform.c (gst_base_transform_get_size):
	Semantics changed, should return not the size of the output buffer
	but the byte size of a buffer with a given caps.

	* gst/base/gstbasetransform.c (gst_base_transform_getcaps): Better
	debug object.
	(gst_base_transform_configure_caps): Don't set out_size here: (in,
	out) are not the pad caps until setcaps finishes.
	(gst_base_transform_buffer_alloc): Proxy the buffer_alloc for the
	not-in-place case as well. Deal with changing from in-place to
	not-in-place within calling pad_alloc_buffer. Still a bit
	concerned about the overhead here...

2005-08-03  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasetransform.c (gst_base_transform_setcaps): Not
	fixating is an error.

2005-08-04  Edward Hervey  <edward@fluendo.com>

	* gst/base/gstadapter.h: 
	Added gst_adapter_get_type() to the header

2005-08-03  Stefan Kost  <ensonic@users.sf.net>

	* check/Makefile.am:
	* check/gst-libs/controller.c:
	* libs/gst/controller/gst-controller.c:
	(gst_controller_new_valist):
	  added check test suite for the controller
	* gst/base/gstpushsrc.c:
	  fixed a doc typo

2005-08-03  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* gst/base/README:
	* gst/base/gstbasesink.c:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c:
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.c:
	* gst/base/gstpushsrc.c:
	* gst/base/gstpushsrc.h:
	  add short/long description docs to base classes
	  add pushsrc to the docs
	  remove consolidated doc fragments

2005-08-03  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/gstreamer-libs.types:
	* examples/Makefile.am:
	* examples/controller/.cvsignore:
	* examples/controller/Makefile.am:
	* examples/controller/audio-example.c: (main):
	* libs/gst/Makefile.am:
	* libs/gst/controller/.cvsignore:
	* libs/gst/controller/Makefile.am:
	* libs/gst/controller/gst-controller.c:
	(on_object_controlled_property_changed), (gst_timed_value_compare),
	(gst_timed_value_find),
	(gst_controlled_property_set_interpolation_mode),
	(gst_controlled_property_new), (gst_controlled_property_free),
	(gst_controller_find_controlled_property),
	(gst_controller_new_valist), (gst_controller_new),
	(gst_controller_remove_properties_valist),
	(gst_controller_remove_properties), (gst_controller_set),
	(gst_controller_set_from_list), (gst_controller_unset),
	(gst_controller_get), (gst_controller_get_all),
	(gst_controller_sink_values), (gst_controller_get_value_arrays),
	(gst_controller_get_value_array),
	(gst_controller_set_interpolation_mode),
	(_gst_controller_finalize), (_gst_controller_init),
	(_gst_controller_class_init), (gst_controller_get_type):
	* libs/gst/controller/gst-controller.h:
	* libs/gst/controller/gst-helper.c: (g_object_control_properties),
	(g_object_uncontrol_properties), (g_object_get_controller),
	(g_object_set_controller), (g_object_sink_values),
	(g_object_get_value_arrays), (g_object_get_value_array):
	* libs/gst/controller/gst-interpolation.c:
	(gst_controlled_property_find_timed_value_node),
	(interpolate_none_get), (interpolate_trigger_get),
	(interpolate_trigger_get_value_array):
	* libs/gst/controller/lib.c: (gst_controller_init):
	* pkgconfig/Makefile.am:
	* pkgconfig/gstreamer-control-uninstalled.pc.in:
	* pkgconfig/gstreamer-control.pc.in:
	* testsuite/Makefile.am:
	* testsuite/controller/.cvsignore:
	* testsuite/controller/Makefile.am:
	* testsuite/controller/interpolator.c: (main):
	  added controller code
	  removed dparam pc files

2005-08-01  Jan Schmidt  <thaytan@mad.scientist.com>
	* gst/base/gstcollectpads.c: (gst_collectpads_finalize),
	(gst_collectpads_stop):
	  Broadcast the condition when shutting down, to make sure we wake all
	  threads up. Shut down pads on finalize, for safety.

2005-08-01  Jan Schmidt  <thaytan@mad.scientist.com>
	* gst/base/gstbasetransform.c: (gst_base_transform_init),
	(gst_base_transform_handle_buffer),
	(gst_base_transform_change_state):
	  Handle PAUSED->READY->PAUSED transition after negotiation
	  occurred already.
	* gst/gstmessage.c: (gst_message_init):
	  Extra piece of debug for new messages.

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

	* configure.ac:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstformat.sgml:
	* docs/gst/tmpl/gstghostpad.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstquery.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gsttaglist.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	* docs/libs/gstreamer-libs.types:
	* libs/gst/Makefile.am:
	* libs/gst/control/.cvsignore:
	* libs/gst/control/Makefile.am:
	* libs/gst/control/control.c:
	* libs/gst/control/control.h:
	* libs/gst/control/dparam.c:
	* libs/gst/control/dparam.h:
	* libs/gst/control/dparam_smooth.c:
	* libs/gst/control/dparam_smooth.h:
	* libs/gst/control/dparamcommon.h:
	* libs/gst/control/dparammanager.c:
	* libs/gst/control/dparammanager.h:
	* libs/gst/control/dplinearinterp.c:
	* libs/gst/control/dplinearinterp.h:
	* libs/gst/control/unitconvert.c:
	* libs/gst/control/unitconvert.h:
	* testsuite/Makefile.am:
	* testsuite/dynparams/.cvsignore:
	* testsuite/dynparams/Makefile.am:
	* testsuite/dynparams/dparamstest.c:
	* tools/Makefile.am:
	* tools/gst-inspect.c: (print_element_info), (main):
	* tools/gst-xmlinspect.c: (print_element_info), (main):
	  deactivate and remove dparams (libgstcontrol)

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

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init),
	(stop_typefinding), (gst_type_find_element_handle_event),
	(gst_type_find_element_chain), (gst_type_find_element_getrange):
	* gst/elements/gsttypefindelement.h:
	  Set caps on all outgoing buffers, not just the first one.

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

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type),
	(gst_type_find_element_check_set_buffer_caps),
	(gst_type_find_element_init), (stop_typefinding),
	(gst_type_find_element_handle_event),
	(gst_type_find_element_chain), (gst_type_find_element_getrange):
	* gst/elements/gsttypefindelement.h:
	  Set caps on first outgoing buffer when we've found the type.

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

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstschedulerfactory.sgml:
	  Remove some old cruft from docs.

2005-07-31  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstpad.h:
	  Fix inline docs for GstPadLinkReturn.
	  
	* gst/gststructure.c: (gst_structure_has_name):
	* gst/gststructure.h:
	* docs/gst/gstreamer-sections.txt:
	  New API: gst_structure_has_name().

2005-07-30  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	  Use AC_SYS_LARGEFILE, which will set _FILE_OFFSET_BITS=64
	  and _LARGEFILE_SOURCE in config.h as required. Do not 
	  export those flags in our .pc files any longer (#142209).

	  Remove unused GST_DISABLE_OMEGA_COTHREADS stuff.

	* gst/elements/gstfilesink.c: (gst_file_sink_class_init),
	(gst_file_sink_do_seek), (gst_file_sink_event),
	(gst_file_sink_get_current_offset), (gst_file_sink_render):
	  Redo seek/tell calls with large file support in mind; add some
	  debugging messages; add log message that tells us when large
	  file support is unavailable or not enabled for some reason.

	* gst/elements/gstfilesrc.c: (gst_file_src_class_init):
	  Add log message that tells us when large file support 
	  is unavailable or not enabled for some reason.

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

	* check/gst/gstghostpad.c: (GST_START_TEST), (gst_ghost_pad_suite):
	Added test for removing an element with ghostpad from a bin.
	Fixed test as current implementation does the right thing.

	* gst/gstghostpad.c: (gst_proxy_pad_class_init),
	(gst_proxy_pad_do_query_type), (gst_proxy_pad_do_event),
	(gst_proxy_pad_do_query), (gst_proxy_pad_do_internal_link),
	(gst_proxy_pad_do_bufferalloc), (gst_proxy_pad_do_activate),
	(gst_proxy_pad_do_activatepull), (gst_proxy_pad_do_activatepush),
	(gst_proxy_pad_do_chain), (gst_proxy_pad_do_getrange),
	(gst_proxy_pad_do_checkgetrange), (gst_proxy_pad_do_getcaps),
	(gst_proxy_pad_do_acceptcaps), (gst_proxy_pad_do_fixatecaps),
	(gst_proxy_pad_do_setcaps), (gst_proxy_pad_set_target),
	(gst_proxy_pad_get_target), (gst_proxy_pad_init),
	(gst_proxy_pad_dispose), (gst_proxy_pad_finalize),
	(gst_ghost_pad_class_init), (gst_ghost_pad_do_activate_push),
	(gst_ghost_pad_do_link), (gst_ghost_pad_do_unlink),
	(gst_ghost_pad_set_internal), (gst_ghost_pad_dispose),
	(gst_ghost_pad_new_notarget), (gst_ghost_pad_new),
	(gst_ghost_pad_get_target), (gst_ghost_pad_set_target):
	* gst/gstghostpad.h:
	Clean up ghostpads, remove properties for internal stuff.
	Make threadsafe.
	Fix refcounting.
	Prepare for switching targets, not all use cases work yet.

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

	* docs/design/part-gstghostpad.txt:
	Small update.

	* gst/gstbin.c: (unlink_pads), (gst_bin_add_func),
	(gst_bin_remove_func):
	Unlinking pads while holding the bin LOCK is not a good
	idea.

	* gst/gstpad.c: (gst_pad_class_init),
	(gst_pad_link_check_hierarchy), (gst_pad_get_caps_unlocked),
	(gst_pad_accept_caps), (gst_pad_set_caps), (gst_pad_send_event):
	No prob setting template after creating the pad.

2005-07-29  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbus.c: (gst_bus_set_flushing), (gst_bus_pop),
	(gst_bus_peek), (gst_bus_source_dispatch),
	(gst_bus_add_watch_full), (poll_handler), (poll_timeout),
	(poll_destroy), (poll_destroy_timeout), (gst_bus_poll):
	  gst_bus_poll may be called from other threads. Handle
	  this nicely by not making poll_data disappear off the
	  stack once gst_bus_poll returns.
	  gst_bus_peek now increments the refcount on the returned
	  message.

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

	* docs/design/part-gstghostpad.txt:
	Overview of current GhostPad datastructures and use
	cases for changing the target.

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

	* check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
	Added checks for hierarchy consistency whan adding linked
	elements to bins.

	* check/gst/gstelement.c: (GST_START_TEST), (gst_element_suite):
	Added check to test element scheduling without bin/pipeline.

	* check/pipelines/simple_launch_lines.c: (GST_START_TEST):
	First add elements to bin, then link.
	
	* gst/gstbin.c: (unlink_pads), (gst_bin_add_func),
	(gst_bin_remove_func):
	Unlink pads from elements added/removed from bin to maintain
	hierarchy consistency.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
	(gst_base_transform_handle_buffer):
	* gst/base/gstbasetransform.h:
	  Remove broken delay_configure (fixes renegotiation of software
	  scaling pipelines); remove some leftover printf()s.

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

	* check/gst/gstghostpad.c: (GST_START_TEST), (gst_ghost_pad_suite):
	Added some more tests for wrong hierarchy

	* docs/design/part-overview.txt:
	Some updates.

	* gst/gstbin.c: (gst_bin_remove_func), (gst_bin_dispose):
	Cleanups.

	* gst/gstelement.c: (gst_element_remove_pad), (gst_element_seek),
	(gst_element_dispose):
	Some more cleanups.

	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked),
	(gst_pad_link_check_hierarchy), (gst_pad_link_prepare),
	(gst_pad_get_caps_unlocked), (gst_pad_accept_caps),
	(gst_pad_set_caps), (gst_pad_send_event):
	Check for correct hierarchy when linking pads. Moving to
	strict requirement for ghostpads when linking elements in
	different bins.

	* gst/gstpad.h:
	Clean ups. Added WRONG_HIERARCHY return value.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_setcaps):
	  Better debug if no transform is possible.

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

	* docs/random/wtay/network-transp:
	Some old doc I had.

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

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_event),
	(gst_dp_event_from_packet):
	Fix serialization of seek events.

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

	* check/gst-libs/gdp.c: (GST_START_TEST):
	* gst/elements/gstfakesink.c: (gst_fake_sink_event):
	Fix compilation and fix event serialization.

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

	* CHANGES-0.9:
	* docs/design/part-TODO.txt:
	* docs/design/part-events.txt:
	Some docs updates

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_do_sync),
	(gst_base_sink_activate_push), (gst_base_sink_activate_pull):
	* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
	(gst_base_src_do_seek), (gst_base_src_event_handler),
	(gst_base_src_loop):
	* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
	(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
	(gst_base_transform_get_size), (gst_base_transform_buffer_alloc),
	(gst_base_transform_event), (gst_base_transform_handle_buffer),
	(gst_base_transform_set_passthrough),
	(gst_base_transform_is_passthrough):
	* gst/elements/gstfakesink.c: (gst_fake_sink_event):
	* gst/elements/gstfilesink.c: (gst_file_sink_event):
	Event updates.

	* gst/gstbuffer.h:
	Use faster casts.

	* gst/gstelement.c: (gst_element_seek):
	* gst/gstelement.h:
	Update gst_element_seek.

	* gst/gstevent.c: (gst_event_finalize), (_gst_event_copy),
	(gst_event_new), (gst_event_new_custom), (gst_event_get_structure),
	(gst_event_new_flush_start), (gst_event_new_flush_stop),
	(gst_event_new_eos), (gst_event_new_newsegment),
	(gst_event_parse_newsegment), (gst_event_new_tag),
	(gst_event_parse_tag), (gst_event_new_filler), (gst_event_new_qos),
	(gst_event_parse_qos), (gst_event_new_seek),
	(gst_event_parse_seek), (gst_event_new_navigation):
	* gst/gstevent.h:
	Make GstEvent use GstStructure. Add parsing code, make sure the
	API is sufficiently generic.
	Mark possible directions of events and serialization.

	* gst/gstmessage.c: (gst_message_init), (gst_message_finalize),
	(_gst_message_copy), (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_new_custom),
	(gst_message_parse_segment_start),
	(gst_message_parse_segment_done):
	Small cleanups.

	* gst/gstpad.c: (gst_pad_get_caps_unlocked), (gst_pad_accept_caps),
	(gst_pad_set_caps), (gst_pad_send_event):
	Update for new events. 
	Catch events sent in wrong directions.

	* gst/gstqueue.c: (gst_queue_link_src),
	(gst_queue_handle_sink_event), (gst_queue_chain), (gst_queue_loop),
	(gst_queue_handle_src_query):
	Event updates.

	* gst/gsttag.c:
	* gst/gsttag.h:
	Remove event code from this file.

	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_event),
	(gst_dp_event_from_packet):
	Event updates.

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

	* gst/base/gstbasetransform.c: (gst_base_transform_getcaps),
	(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
	(gst_base_transform_get_size), (gst_base_transform_handle_buffer):
	  Make debugging actually useful.

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

	* gst/gstpad.c: (fixate_value), (gst_pad_default_fixate),
	(gst_pad_fixate_caps):
	  Implement default fixation once again, so that gst_pad_fixate()
	  actually does anything at all. This probably needs to be some
	  sort of a last resort, and use profile-based fixation first, but
	  since that doesn't exist yet, this is the best we have. Fixes
	  visualization in Totem.

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

	* docs/design/part-events.txt:
	Small update.

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync), (gst_base_sink_activate_push),
	(gst_base_sink_activate_pull):
	Some more comments.

	* gst/elements/gstfakesrc.c: (gst_fake_src_class_init),
	(gst_fake_src_create):
	Fix handoff marshall.

	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_transform_ip):
	We're a real inplace element.

	* gst/gstbus.c: (gst_bus_post):
	Added some comments.

	* tests/lat.c: (fakesrc), (fakesink), (simple), (queue), (main):
	* tests/muxing/case1.c: (main):
	* tests/sched/dynamic-pipeline.c: (main):
	* tests/sched/interrupt1.c: (main):
	* tests/sched/interrupt2.c: (main):
	* tests/sched/interrupt3.c: (main):
	* tests/sched/runxml.c: (main):
	* tests/sched/sched-stress.c: (main):
	* tests/seeking/seeking1.c: (event_received), (main):
	* tests/threadstate/threadstate2.c: (bus_handler), (timeout_func),
	(main):
	* tests/threadstate/threadstate3.c: (main):
	* tests/threadstate/threadstate4.c: (main):
	* tests/threadstate/threadstate5.c: (main):
	Fix the tests.

2005-07-21  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-seeking.txt:
	Some small additions.

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_get_times), (gst_base_sink_do_sync),
	(gst_base_sink_activate_push), (gst_base_sink_activate_pull):
	* gst/base/gstbasesink.h:
	discont values are gint64, handle the math correctly.

	* gst/base/gstbasesrc.c: (gst_base_src_loop):
	Make the basesrc report error if the source pad is not linked.

	* gst/gstqueue.c: (gst_queue_link_src), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_handle_src_query),
	(gst_queue_src_activate_push):
	Make queue collect data even if the srcpad is not linked.
	Start pushing out data as soon as it is linked.

	* gst/gstutils.c: (gst_element_unlink), (gst_flow_get_name):
	* gst/gstutils.h:
	Added gst_flow_get_name() to ease error reporting.

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

	* gst/gstmessage.c: (gst_message_new_segment_start),
	(gst_message_new_segment_done), (gst_message_parse_segment_start),
	(gst_message_parse_segment_done):
	* gst/gstmessage.h:
	Added a bunch of messages for advanced seeking.

	* gst/parse/grammar.y:
	* libs/gst/control/dparammanager.c: (gst_dpman_set_parent),
	(gst_dpman_state_changed):
	Fix some new-pad -> pad-added signals

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

	* docs/manual/appendix-porting.xml:
	* docs/pwg/appendix-porting.xml:
	  Document new-pad/state-change signal renames and the FixedList
	  type rename.

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

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/basics-helloworld.xml:
	* docs/manual/basics-pads.xml:
	* docs/random/ds/0.9-suggested-changes:
	* gst/gstelement.c: (gst_element_class_init), (gst_element_seek):
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstformat.h:
	* gst/gstquery.h:
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_parse_array), (gst_structure_parse_value):
	* gst/gstvalue.c: (gst_type_is_fixed),
	(gst_value_list_prepend_value), (gst_value_list_append_value),
	(gst_value_list_get_size), (gst_value_list_get_value),
	(gst_value_transform_array_string), (gst_value_serialize_array),
	(gst_value_deserialize_array), (gst_value_intersect_array),
	(gst_value_is_fixed), (_gst_value_initialize):
	* gst/gstvalue.h:
	  GstElement::new-pad -> pad-added, GstElement::state-change ->
	  state-changed, GstValueFixedList -> GstValueArray, add format and
	  flags as their own arguments in gst_element_seek() (should improve
	  "bindeability"), remove function generators since they don't work
	  under a whole bunch of compilers (they were deprecated already
	  anyway).

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

	* gst/gstinfo.c: (_gst_debug_nameof_funcptr),
	(_gst_debug_register_funcptr):
	* gst/gstinfo.h:
	  Fix illegal cast on some platforms (#309253).

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

	* gst/gstmessage.c: (gst_message_new_custom):
	* gst/gstmessage.h:
	  Add _new_custom, make _new_application a macro to _new_custom.

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

	* gst/base/gstbasesrc.c: (gst_base_src_init),
	(gst_base_src_do_seek), (gst_base_src_loop), (gst_base_src_start):
	* gst/base/gstbasesrc.h:
	Add a gboolean to decide when to push out a discont.

	* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_handle_src_query),
	(gst_queue_sink_activate_push), (gst_queue_src_activate_push),
	(gst_queue_set_property), (gst_queue_get_property):
	Some cleanups.

	* tests/threadstate/threadstate1.c: (main):
	Make a thread test compile and run... very silly..


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

	* docs/manual/appendix-porting.xml:
	  Mention removal of libgstgconf-0.9.la and existence of gconf
	  elements.

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

	* docs/pwg/advanced-clock.xml:
	* docs/pwg/appendix-porting.xml:
	* docs/pwg/intro-preface.xml:
	* docs/pwg/other-base.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:
	  Document base classes, update sections of n-to-1 and 1-to-n (muxer,
	  demuxer), remove n-to-n (was never written), fix some code examples
	  and links and update the porting section to include all this.

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

	* gst/gstqueue.c: (gst_queue_init), (gst_queue_handle_sink_event),
	(gst_queue_chain), (gst_queue_loop), (gst_queue_handle_src_event),
	(gst_queue_handle_src_query), (gst_queue_sink_activate_push),
	(gst_queue_src_activate_push), (gst_queue_change_state),
	(gst_queue_get_property):
	* gst/gstqueue.h:
	Propagate GstFlowReturn more intelligently upstream and output
	an ERROR/EOS when streaming stopped due to fatal error.

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

	* tools/gst-launch.c: (check_intr), (event_loop), (main):
	Don't block forever for the state change to complete, the
	pipeline already did with a sensible timeout.

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

	* gst/base/gstbasesrc.c: (gst_base_src_get_range):
	Make sure we never call the create function is we
	got deactivated.

2005-07-19  Andy Wingo  <wingo@pobox.com>

	* gst/parse/parse.l: Attempt to solve bug #172815.

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

	* docs/design/part-clocks.txt:
	* docs/design/part-events.txt:
	* gst/base/gstbasesrc.c: (gst_base_src_do_seek):
	Small docs updates.
	Only update the seeking values when we are not
	busy streaming.

2005-07-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasesrc.c: (gst_base_src_loop):
	  Oops, ignore the result of gst_pad_push_event here.

2005-07-19  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/base/gstbasesrc.c: (gst_base_src_loop),
	(gst_base_src_activate_push):
	  Send discont event from the loop function, as pads
	  aren't activated yet in the activate_push handler.

	* gst/gstbin.c: (bin_bus_handler):
	  Don't leak element name.

2005-07-18  Andy Wingo  <wingo@pobox.com>

	* configure.ac: Use AS_LIBTOOL_TAGS.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer.types:
	Remove deleted types.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* check/elements/gstfakesrc.c: (GST_START_TEST):
	* configure.ac:
	* gst/Makefile.am:
	* gst/gst.c: (gst_init_get_popt_table), (init_pre), (init_post),
	(init_popt_callback):
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_add_func),
	(gst_bin_remove_func), (gst_bin_get_state), (gst_bin_change_state):
	* gst/gstbin.h:
	* gst/gstbus.h:
	* gst/gstconfig.h.in:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_set_base_time), (gst_element_get_base_time),
	(iterator_fold_with_resync), (gst_element_change_state),
	(gst_element_dispose), (gst_element_get_bus):
	* gst/gstelement.h:
	* gst/gstelementfactory.h:
	* gst/gsterror.c: (_gst_core_errors_init):
	* gst/gsterror.h:
	* gst/gstevent.h:
	* gst/gstghostpad.c: (gst_ghost_pad_do_activate_push):
	* gst/gstindex.c:
	* gst/gstinfo.c: (_gst_debug_init):
	* gst/gstmessage.c: (_gst_message_copy):
	* gst/gstmessage.h:
	* gst/gstminiobject.h:
	* gst/gstobject.c:
	* gst/gstobject.h:
	* gst/gstpad.c: (gst_pad_get_caps_unlocked), (gst_pad_accept_caps),
	(gst_pad_set_caps), (gst_pad_start_task), (gst_pad_stop_task):
	* gst/gstpad.h:
	* gst/gstparse.h:
	* gst/gstpipeline.c: (gst_pipeline_init), (gst_pipeline_dispose),
	(gst_pipeline_change_state), (gst_pipeline_set_new_stream_time),
	(gst_pipeline_get_last_stream_time):
	* gst/gstpipeline.h:
	* gst/gstpluginfeature.h:
	* gst/gstquery.h:
	* gst/gstscheduler.c:
	* gst/gstscheduler.h:
	* gst/gststructure.h:
	* gst/gsttask.c: (gst_task_get_type), (gst_task_class_init),
	(gst_task_finalize), (gst_task_func), (gst_task_create),
	(gst_task_set_lock), (gst_task_get_state), (gst_task_start),
	(gst_task_stop), (gst_task_pause):
	* gst/gsttask.h:
	* gst/gsttypefind.h:
	* gst/gsttypes.h:
	* gst/registries/gstlibxmlregistry.c: (load_feature),
	(gst_xml_registry_load), (gst_xml_registry_save_feature):
	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_start_element), (gst_xml_registry_save_feature):
	* gst/schedulers/threadscheduler.c:
	* libs/gst/control/dparammanager.h:
	* tools/gst-inspect.c: (print_element_list),
	(print_plugin_features), (print_element_features):
	* tools/gst-xmlinspect.c: (print_element_list),
	(print_plugin_info), (main):
	Removed plugable schedulers.
	Removed Scheduler/Manager from elements.
	Removed gsttypes.h, rearranged includes.
	Removed dependency pad<->element, element<>pipeline, and
	various others,  fix includes.
	implement gst_pad_get_parent() with gst_object_get_parent()
	Make GstTask sefcontained.
	Fix _get_state() on GstBin, it did not return ASYNC with a 0
	timeout.
	Fix endless loop in iterator_fold_with_resync.


2005-07-18  Wim Taymans  <wim@fluendo.com>

	* gst/Makefile.am:
	* gst/gstarch.h:
	Remove old file.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* gst/Makefile.am:
	No more cothreads.h

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* gst/cothreads.c:
	* gst/cothreads.h:
	Let's remove these.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-dynamic.txt:
	* docs/design/part-events.txt:
	* docs/design/part-seeking.txt:
	Some more docs in the works.

	* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
	(gst_base_transform_getcaps), (gst_base_transform_configure_caps),
	(gst_base_transform_setcaps), (gst_base_transform_get_size),
	(gst_base_transform_buffer_alloc), (gst_base_transform_event),
	(gst_base_transform_handle_buffer),
	(gst_base_transform_sink_activate_push),
	(gst_base_transform_src_activate_pull),
	(gst_base_transform_set_passthrough),
	(gst_base_transform_is_passthrough):
	Refcounting fixes.

	* gst/gstbus.c: (gst_bus_source_dispatch), (gst_bus_poll):
	Cleanups.

	* gst/gstevent.c: (gst_event_finalize):
	Set SRC to NULL.

	* gst/gstutils.c: (gst_element_unlink),
	(gst_pad_get_parent_element), (gst_pad_proxy_getcaps),
	(gst_pad_proxy_setcaps):
	* gst/gstutils.h:
	Add _get_parent_element() to get a pads parent as an element.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstbin.c: (GST_START_TEST):
	Remove bogus test.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_pad_getcaps),
	(gst_base_sink_pad_setcaps), (gst_base_sink_pad_buffer_alloc),
	(gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_do_sync),
	(gst_base_sink_chain), (gst_base_sink_loop),
	(gst_base_sink_deactivate), (gst_base_sink_activate_push),
	(gst_base_sink_activate_pull), (gst_base_sink_change_state):
	Refcounting fixes.
	Fix logic for returning ASYNC when not prerolled.

2005-07-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstqueue.c: (gst_queue_handle_sink_event):
	Fix nasty refcount bug.

2005-07-16 Philippe Khalaf <burger@speedy.org>

	* gst/elements/gstfdsrc.c:
	* gst/elements/gstfdsrc.h:
	* gst/elements/gstelements.c:
	* gst/elements/Makefile.am:
	Ported fdsrc to 0.9.

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_do_sync):
	Fix compile error.

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

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_event), (gst_base_sink_get_times),
	(gst_base_sink_do_sync), (gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	Store and use discont values when syncing buffers as described
	in design docs.
	
	* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
	(gst_base_src_do_seek), (gst_base_src_loop), (gst_base_src_start),
	(gst_base_src_activate_push):
	Push discont event when starting.

	* gst/elements/gstidentity.c: (gst_identity_transform):
	Small cleanups.

	* gst/gstbin.c: (gst_bin_change_state):
	Small cleanups in base_time  distribution.

	* gst/gstelement.c: (gst_element_set_base_time),
	(gst_element_get_base_time), (gst_element_change_state):
	* gst/gstelement.h:
	Added methods for the base_time of the element.
	Some MT fixes.

	* gst/gstpipeline.c: (gst_pipeline_send_event),
	(gst_pipeline_change_state), (gst_pipeline_set_new_stream_time),
	(gst_pipeline_get_last_stream_time):
	* gst/gstpipeline.h:
	MT fixes.
	Handle seeking as described in design doc, remove stream_time
	hack.
	Cleanups clock and stream_time selection code. Added accessors
	for the stream_time.
	

2005-07-16  Andy Wingo  <wingo@pobox.com>

	* gst/gsterror.c (_gst_core_errors_init): Use the magic word
	(#305291).

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

	* check/gst/gstbin.c: (GST_START_TEST):
	Make elements silent as the deep_notify refs the
	parent, which might make the test fail.

	* gst/gstghostpad.c: (gst_ghost_pad_do_activate_push):
	Don't hold the lock for too long.

2005-07-16  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstbasesrc.c: (gst_base_src_default_negotiate):
	  Don't unref the caps we passed to gst_caps_make_writable() after
	  passing them. gst_caps_make_writable() will do that for us.

2005-07-15  Andy Wingo  <wingo@pobox.com>

	* gst/gstcaps.h (gst_caps_is_simple): Removed deprecated macro
	(#157311).

	* gst/elements/gstidentity.c (marshal_VOID__MINIOBJECT): Write our
	own marshalling function for the handoff signal. Properly type the
	buffer as a buffer. Fixes some warnings. Should do a more general
	solution.
	(gst_identity_class_init): Plug into the right marshaller.

2005-07-15  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-element-sink.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstpipeline.txt:
	Updated docs, mostly DISCONT related.

2005-07-15  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/pwg/building-pads.xml:
	  s/GST_PAD_LINK_REFUSED/FALSE/ in gst_my_filter_setcaps()

2005-07-15  Andy Wingo  <wingo@pobox.com>

	* tools/gst-typefind.c: Update, add copyright block.

	* gst/base/gstbasesrc.c (gst_base_src_default_negotiate):
	Normalize and truncate caps before fixation.

	* gst/gstcaps.h:
	* gst/gstcaps.c (gst_caps_truncate): New function, destructively
	discards all but the first structure from its argument.

2005-07-15  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_init),
	(gst_base_transform_transform_caps), (gst_base_transform_getcaps),
	(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
	(gst_base_transform_get_size), (gst_base_transform_buffer_alloc),
	(gst_base_transform_handle_buffer), (gst_base_transform_getrange),
	(gst_base_transform_chain), (gst_base_transform_change_state),
	(gst_base_transform_set_passthrough),
	(gst_base_transform_is_passthrough):
	* gst/base/gstbasetransform.h:
	Make passthrough work using the bufferpools.
	Changed API a bit, subclasses have to write into a buffer
	provided by the base class.
	More debug info in nego functions.
	
	* gst/elements/gstidentity.c: (gst_identity_init),
	(gst_identity_transform):
	Port to new base class.

2005-07-15  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.c: (gst_message_new_state_changed):
	* tools/gst-launch.c: (event_loop), (main):
	Totally dump messages in -launch with the -m option.
	Fix message name for State messages,

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

	* gst/base/gstbasesrc.c: (gst_base_src_loop):
	Post error messages on errors.

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

	* gst/gstcaps.c: (gst_caps_do_simplify):
	Remove debug info.

	* gst/gsterror.h:
	Define error for stream stopped.

	* gst/gstghostpad.c: (gst_proxy_pad_do_bufferalloc),
	(gst_proxy_pad_do_chain), (gst_proxy_pad_do_getrange):
	Do proper return values.

	* gst/gstpad.c: (gst_pad_get_caps_unlocked), (gst_pad_accept_caps),
	(gst_pad_set_caps), (gst_pad_chain), (gst_pad_push),
	(gst_pad_get_range):
	Better return values.

	* gst/gstpad.h:
	Reorganise return values, add macro to check for fatal errors.

	* gst/gstqueue.c: (gst_queue_chain):
	Return proper GstFlowReturn values,

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbasesink.sgml:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstbasetransform.sgml:
	* 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/gstconfig.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstelementdetails.sgml:
	* docs/gst/tmpl/gstelementfactory.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/gstfilesrc.sgml:
	* docs/gst/tmpl/gstfilter.sgml:
	* docs/gst/tmpl/gstformat.sgml:
	* docs/gst/tmpl/gstghostpad.sgml:
	* docs/gst/tmpl/gstimplementsinterface.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstindexfactory.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstiterator.sgml:
	* docs/gst/tmpl/gstmacros.sgml:
	* docs/gst/tmpl/gstmemchunk.sgml:
	* docs/gst/tmpl/gstminiobject.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstquery.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstregistrypool.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstschedulerfactory.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttaglist.sgml:
	* docs/gst/tmpl/gsttagsetter.sgml:
	* docs/gst/tmpl/gsttrace.sgml:
	* docs/gst/tmpl/gsttrashstack.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypefindfactory.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gsturihandler.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/libs/tmpl/gstcontrol.sgml:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* docs/libs/tmpl/gstdparam.sgml:
	* docs/libs/tmpl/gstdplinint.sgml:
	* docs/libs/tmpl/gstdpman.sgml:
	* docs/libs/tmpl/gstdpsmooth.sgml:
	* docs/libs/tmpl/gstgetbits.sgml:
	* docs/libs/tmpl/gstunitconvert.sgml:
	* gst/base/gstpushsrc.c: (gst_push_src_get_type),
	(gst_push_src_base_init), (gst_push_src_class_init),
	(gst_push_src_init), (gst_push_src_create):
	* gst/base/gstpushsrc.h:
	* gst/elements/gstelements.c:
	* gst/elements/gstfakesink.c: (gst_fake_sink_state_error_get_type),
	(gst_fake_sink_base_init), (gst_fake_sink_class_init),
	(gst_fake_sink_init), (gst_fake_sink_set_property),
	(gst_fake_sink_get_property), (gst_fake_sink_get_times),
	(gst_fake_sink_event), (gst_fake_sink_preroll),
	(gst_fake_sink_render), (gst_fake_sink_change_state):
	* gst/elements/gstfakesink.h:
	* gst/elements/gstfakesrc.c: (gst_fake_src_data_get_type),
	(gst_fake_src_sizetype_get_type), (gst_fake_src_filltype_get_type),
	(gst_fake_src_base_init), (gst_fake_src_class_init),
	(gst_fake_src_init), (gst_fake_src_event_handler),
	(gst_fake_src_alloc_parent), (gst_fake_src_set_property),
	(gst_fake_src_get_property), (gst_fake_src_prepare_buffer),
	(gst_fake_src_alloc_buffer), (gst_fake_src_get_size),
	(gst_fake_src_create_buffer), (gst_fake_src_create),
	(gst_fake_src_start), (gst_fake_src_stop):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesink.c: (_do_init),
	(gst_file_sink_base_init), (gst_file_sink_class_init),
	(gst_file_sink_init), (gst_file_sink_dispose),
	(gst_file_sink_set_location), (gst_file_sink_set_property),
	(gst_file_sink_get_property), (gst_file_sink_open_file),
	(gst_file_sink_close_file), (gst_file_sink_query),
	(gst_file_sink_event), (gst_file_sink_render),
	(gst_file_sink_change_state), (gst_file_sink_uri_get_type),
	(gst_file_sink_uri_get_protocols), (gst_file_sink_uri_get_uri),
	(gst_file_sink_uri_set_uri), (gst_file_sink_uri_handler_init):
	* gst/elements/gstfilesink.h:
	* gst/elements/gstfilesrc.c: (_do_init), (gst_file_src_base_init),
	(gst_file_src_class_init), (gst_file_src_init),
	(gst_file_src_finalize), (gst_file_src_set_location),
	(gst_file_src_set_property), (gst_file_src_get_property),
	(gst_file_src_map_region), (gst_file_src_map_small_region),
	(gst_file_src_create_mmap), (gst_file_src_create_read),
	(gst_file_src_create), (gst_file_src_is_seekable),
	(gst_file_src_get_size), (gst_file_src_start), (gst_file_src_stop),
	(gst_file_src_uri_get_type), (gst_file_src_uri_get_protocols),
	(gst_file_src_uri_get_uri), (gst_file_src_uri_set_uri),
	(gst_file_src_uri_handler_init):
	* gst/elements/gstfilesrc.h:
	  more autistic cleanliness in functions/names/defines

2005-07-13  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesrc.c (gst_base_src_start): Post an error if the
	source couldn't negotiate.

	* gst/parse/grammar.y: Revert 1.54->1.55, so we now do filtered
	connections again.

	* gst/gstutils.h:
	* gst/gstutils.c (gst_element_link_pads_filtered): New old
	function. I am channeling Hades. Put your boots on suckers!!!

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

	* testsuite/caps/Makefile.am:
	* testsuite/caps/value_compare.c:
	* testsuite/caps/value_intersect.c:
	* check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
	  move two testsuite apps over to the check dir

2005-07-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_setcaps):
	Added more debug info in the negotiate process.

	* gst/gstmessage.h:
	Prepare for segment playback.

	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_set_caps):
	Better debugging.

	* gst/gstutils.c:
	Some more docs.

	* tools/gst-launch.c: (main):
	NULL pipeline on errors.

2005-07-12  Andy Wingo  <wingo@pobox.com>

	* gst/gstbuffer.c (_gst_buffer_copy): Copy the buffer whether or
	not it comes from a malloc region. Make sure our copy gets freed.

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

	* check/gst/gstelement.c: (GST_START_TEST), (gst_element_suite):
	* check/gst/gstmessage.c: (GST_START_TEST):
	* check/gst/gststructure.c: (GST_START_TEST),
	(gst_structure_suite), (main):
	  more testing
	* gst/gstelement.c: (gst_element_message_full):
	  clean up GError and debug string now that they get copied
	* gst/gstmessage.c: (gst_message_new_error),
	(gst_message_new_warning), (gst_message_parse_error),
	(gst_message_parse_warning):
	  use GST_TYPE_G_ERROR for structure_new, and take copies of
	  arguments, so that we don't mess up refcounting

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

	* check/Makefile.am:
	  add per-test valgrind targets
	* check/gst-libs/gdp.c: (GST_START_TEST),
	(gst_data_protocol_suite), (main):
	  clean up

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

	* check/Makefile.am:
	  instate more valgrindable tests
	* check/elements/gstfakesrc.c: (chain_func), (event_func),
	(GST_START_TEST), (fakesrc_suite):
	* check/gst/gstpad.c: (GST_START_TEST):
	* check/gst/gststructure.c: (GST_START_TEST):
	  fix test leaks
	* docs/gst/tmpl/gstminiobject.sgml:
	* gst/gstpad.c: (gst_pad_finalize):
	  fix the static mutex leak

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

	* check/Makefile.am:
	  add two more tests for valgrinding
	* check/gst/gstvalue.c: (GST_START_TEST):
	  test refcount of deserialized buffer, found a leak
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstminiobject.sgml:
	  add miniobject to docs
	* gst/gstminiobject.c:
	  add some docs
	* gst/gstvalue.c: (gst_value_deserialize_buffer),
	(gst_string_unwrap):
	  fix a hard-to-find invalid write for one of the tests
	  fix a leak for deserialized buffers

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

	* docs/pwg/advanced-events.xml:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/appendix-porting.xml:
	* docs/pwg/building-boiler.xml:
	* docs/pwg/intro-preface.xml:
	* docs/pwg/other-ntoone.xml:
	  Rewrite scheduling-chapter for scheduling model in 0.9. Add lots
	  of example code and explanation for pad activation, loop() and
	  getrange() functions and a bit more. Remove old comments pointing
	  to loop-functions.
	* examples/pwg/Makefile.am:
	  Add loop/getrange examples.

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

	* configure.ac:
	  check for valgrind binary + some fixes
	* check/gst.supp:
	  valgrind suppressions for the tests
	* check/Makefile.am:
	  add a valgrind: target that valgrinds the unit tests
	* check/gst/gst.c: (GST_START_TEST), (gst_suite):
	* check/gst/gstbin.c: (pop_messages), (GST_START_TEST):
	* check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	* check/gst/gstghostpad.c:
	  added some cleanup
	* check/gst/gstdata.c:
	  removed
	* check/gst/gstminiobject.c: (GST_START_TEST), (thread_ref),
	(thread_unref), (gst_mini_object_suite), (main):
	  added
	* gst/gst.c: (gst_deinit):
	* gst/gst.h:
	  add a method to clean up.
	* gst/gstsystemclock.c: (gst_system_clock_dispose),
	(gst_system_clock_obtain):
	  allow for disposing the system clock.
	* tools/gst-launch.c: (main):
	  deinit

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

	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_set_property),
	(gst_base_src_get_property), (gst_base_src_get_range),
	(gst_base_src_start):
	* gst/base/gstbasesrc.h:
	  add num-buffers property
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_init), (gst_fakesrc_set_property),
	(gst_fakesrc_get_property), (gst_fakesrc_create),
	(gst_fakesrc_start):
	  remove num-buffers property

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstbasesink.sgml:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* gst/base/gstbasesink.c: (gst_base_sink_pad_getcaps),
	(gst_base_sink_pad_setcaps), (gst_base_sink_pad_buffer_alloc),
	(gst_base_sink_finalize), (gst_base_sink_set_clock),
	(gst_base_sink_set_property), (gst_base_sink_get_property),
	(gst_base_sink_handle_object), (gst_base_sink_event),
	(gst_base_sink_do_sync), (gst_base_sink_handle_event),
	(gst_base_sink_handle_buffer), (gst_base_sink_chain),
	(gst_base_sink_loop), (gst_base_sink_deactivate),
	(gst_base_sink_activate_push), (gst_base_sink_activate_pull),
	(gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesink.c: (gst_fakesink_get_times):
	* gst/elements/gstfilesink.c: (gst_filesink_class_init),
	(gst_filesink_init):
	  more macro splitting

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

	* gst/gstelement.c: (gst_element_get_bus):
	  add debug
	* tools/gst-launch.c: (check_intr), (event_loop):
	  fix bus leaks

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

	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked):
	  fix a caps leak

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

	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_finalize):
	  add finalize method and clean up properly
	* gst/gstpipeline.c: (gst_pipeline_dispose):
	  add debug

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

	* check/gst/gstbin.c: (pop_messages), (GST_START_TEST),
	(gst_bin_suite):
	  add more things to check
	* gst/gstbin.c: (gst_bin_change_state), (bin_bus_handler):
	* gst/gstelement.c:
	  more debug

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

	* check/elements/gstfakesrc.c: (chain_func), (event_func),
	(GST_START_TEST), (fakesrc_suite):
	* check/gst-libs/gdp.c: (GST_START_TEST):
	* check/gst/gst.c: (GST_START_TEST):
	* check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
	* check/gst/gstbuffer.c: (GST_START_TEST), (gst_test_suite):
	* check/gst/gstbus.c: (GST_START_TEST):
	* check/gst/gstcaps.c: (GST_START_TEST):
	* check/gst/gstdata.c: (GST_START_TEST):
	* check/gst/gstelement.c: (GST_START_TEST):
	* check/gst/gstghostpad.c: (GST_START_TEST):
	* check/gst/gstiterator.c: (GST_START_TEST):
	* check/gst/gstmessage.c: (GST_START_TEST):
	* check/gst/gstobject.c: (GST_START_TEST):
	* check/gst/gstpad.c: (GST_START_TEST):
	* check/gst/gststructure.c: (GST_START_TEST):
	* check/gst/gstsystemclock.c: (GST_START_TEST),
	(gst_systemclock_suite):
	* check/gst/gsttag.c: (GST_START_TEST), (gst_tag_suite):
	* check/gst/gstvalue.c: (GST_START_TEST):
	* check/pipelines/cleanup.c: (GST_START_TEST):
	* check/pipelines/simple_launch_lines.c: (GST_START_TEST):
	* check/states/sinks.c: (GST_START_TEST):
	* check/gstcheck.c: (gst_check_init):
	* check/gstcheck.h:
	  add debugging category
	  use GST_START_TEST now, so we add a debug line

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

	* check/gst/gstbin.c: (START_TEST), (gst_bin_suite):
	  add test for state change message on a bin
	* check/gst/gstelement.c: (START_TEST), (gst_element_suite):
	  add another test
	* gst/gstbin.c: (gst_bin_init):
	* gst/gstbus.c: (gst_bus_init), (gst_bus_post):
	* gst/gstelement.c: (gst_element_post_message),
	(gst_element_set_state):
	* gst/gstelementfactory.c: (gst_element_factory_create):
	* gst/gstmessage.c: (gst_message_new):
	* gst/gstscheduler.c:
	  various debugging additions and cleanups

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

	* check/Makefile.am:
	* check/gst/gstelement.c: (START_TEST), (gst_element_suite),
	(main):
	  adding tests for elements
	* gst/gstelement.c: (gst_element_dispose):

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

	* gst/registries/gstlibxmlregistry.c: (load_feature):
	  plug more leaks.  A simple gst_init() now is leakfree, yay.

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

	* gst/registries/gstlibxmlregistry.c: (read_string), (load_paths),
	(gst_xml_registry_load):
	  plug another memleak

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

	* configure.ac:
	  use GST_SET_ERROR_CFLAGS
	* docs/faq/cvs.xml:
	  change to ERROR_CFLAGS

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

	* configure.ac:
	  make GST_ERROR_CFLAGS overridable and re-enable Werror
	* docs/faq/cvs.xml:
	  add a note about error CFLAGS
	* docs/gst/tmpl/gstfakesrc.sgml:
	* gst/elements/gstfakesrc.c:
	  comment out some unused code
	* gst/gst.c: (split_and_iterate):
	* gst/registries/gstlibxmlregistry.c: (load_pad_template),
	(load_feature):
	  plug some memleaks

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

	* common/Makefile.am:
	* common/gtk-doc.mak:
	* docs/gst/Makefile.am:
	  factor out gtk-doc.mak

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

	* gst/schedulers/threadscheduler.c: (gst_thread_scheduler_func),
	(gst_thread_scheduler_dispose):
	Unlock the STREAM_LOCK completely.

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

	* check/Makefile.am:
	* check/elements/.cvsignore:
	* check/elements/gstfakesrc.c: (chain_func), (event_func),
	(START_TEST), (fakesrc_suite), (main):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_set_property), (gst_fakesrc_get_property),
	(gst_fakesrc_create), (gst_fakesrc_start):
	* gst/elements/gstfakesrc.h:
	  adding a first element test

2005-07-07  Andy Wingo  <wingo@pobox.com>

	* gst/gstbus.c (gst_bus_have_pending): Remove intensely irritating
	debug message.

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

	* gst/gstquery.c:
	* gst/gstquery.h:
	Remove old types

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

	* gst/base/gstbasesrc.c: (gst_base_src_get_range),
	(gst_base_src_default_negotiate), (gst_base_src_negotiate):
	Allow subclasses to implement their own negotiation.

2005-07-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* docs/design/part-gstbin.txt:
	* docs/design/part-gstpipeline.txt:
	  Update design notes to reflect the movement of
	  responsibility for bus handling from GstPipeline to
	  GstBin

2005-07-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* configure.ac:
	  Remove unnecessary queue2/3/4 examples.

2005-07-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* examples/Makefile.am:
	* examples/helloworld/helloworld.c: (event_loop), (main):
	* examples/queue/queue.c: (event_loop), (main):
	* examples/queue2/queue2.c: (main):
	  Update a couple of the examples to work again.

	* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
	(gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_event):
	 Spelling corrections and extra debug.
	
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init), (is_eos),
	(gst_bin_add_func), (bin_element_is_sink), (gst_bin_get_state),
	(gst_bin_change_state), (gst_bin_dispose), (bin_bus_handler):
	* gst/gstbin.h:
	* gst/gstpipeline.c: (gst_pipeline_init), (gst_pipeline_dispose),
	(gst_pipeline_change_state):
	* gst/gstpipeline.h:
	  Move the bus handler for children to the GstBin, and create a
	  separate bus for receiving messages from children to the one the
	  bus sends 'upwards' on.

2005-07-06  Wim Taymans  <wim@fluendo.com>

	* gst/base/README:
	* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
	(gst_base_sink_handle_object), (gst_base_sink_loop),
	(gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c: (gst_base_src_class_init),
	(gst_base_src_init), (gst_base_src_setcaps),
	(gst_base_src_getcaps), (gst_base_src_loop),
	(gst_base_src_default_negotiate), (gst_base_src_negotiate),
	(gst_base_src_start), (gst_base_src_change_state):
	* gst/base/gstbasesrc.h:
	Make basesrc negotiate.
	Handle the case where preroll fails in basesink.
	Update README.

2005-07-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_fixate_caps), (gst_pad_accept_caps):
	Implement the fixate function.
	Clean up acceptcaps.

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

	* docs/pwg/building-filterfactory.xml:
	* docs/pwg/pwg.xml:
	  Remove never-written filter-factory chapter; I'll add the various
	  base classes to part 4 ("other element types") later on.

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

	* docs/pwg/advanced-negotiation.xml:
	* docs/pwg/building-boiler.xml:
	* docs/pwg/building-pads.xml:
	* docs/pwg/pwg.xml:
	* examples/pwg/Makefile.am:
	  Add a chapter on caps negotiation, simplify the original code
	  samples a bit w.r.t. caps negotiation, add link to the advanced
	  section. Add a bunch of examples showing different use cases of
	  different types of caps negotiation. Upstream renegotiation isn't
	  fully documented yet since nobody knows how that works.

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

	* check/gst/gstpad.c:
	* check/gstcheck.c:
	* gst/gstpad.c: (gst_pad_get_internal_links_default):
	  if pad has no parent, return NULL as list of internal links

2005-07-05  Andy Wingo  <wingo@pobox.com>

	* gst/elements/gstfilesrc.c:
	* gst/elements/gstfakesrc.c: 
	* gst/base/gstpushsrc.c:
	* gst/base/gstbasesrc.h: 
	* gst/base/gstbasesrc.c: s/BASESRC/BASE_SRC/g.
	
2005-07-05  Stefan Kost  <ensonic@users.sf.net>

	* Makefile.am:
	  better report generation target (lcov needs a patch)

2005-07-05  Andy Wingo  <wingo@pobox.com>

	* gst/elements, testsuite: Null if we got it...

2005-07-05  Wim Taymans  <wim@fluendo.com>

	* configure.ac:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_validate_packet):
	* libs/gst/dataprotocol/dataprotocol.h:
	* pkgconfig/Makefile.am:
	* pkgconfig/gstreamer-dataprotocol-uninstalled.pc.in:
	* pkgconfig/gstreamer-dataprotocol.pc.in:
	Ported dataprotol to 0.9. 
	Added pkgconfig files.

2005-07-05  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasetransform.c (gst_base_transform_setcaps):
	Default to returning TRUE for the case when tranform_caps returns
	a fixed caps, like for identity or volume.

	* check/gst/gstbus.c (pound_bus_with_messages): 
	* check/gst/gstmessage.c (START_TEST): 
	* check/pipelines/simple_launch_lines.c (got_handoff): Application
	message API change.

	* gst/base/gstbasetransform.c (gst_base_transform_setcaps): More
	logic weaks here: always run transform_caps, trying passthrough
	operation only if the original caps intersects with the transform.

	* gst/gstpad.c (gst_pad_link_check_compatible_unlocked): Debug
	source and sink caps.

	* gst/base/gstbasetransform.c (gst_base_transform_getcaps):
	Intersect the peer caps with the pad template before going into
	transform_caps.
	(gst_base_transform_transform_caps): More debugging.

	* gst/gstmessage.h (gst_message_new_application): Take a GstObject
	src argument.

2005-07-04  Edward Hervey  <edward@fluendo.com>

	* gst/gstutils.c:
	* gst/gstutils.h:
	(gst_pad_add_*_probe): now returns the signal id for better wrapping
	in bindings.

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

	* check/gst/gstpad.c: Only set explicit caps on pads.

2005-07-01  Andy Wingo  <wingo@pobox.com>

	* tests/network-clock.scm: Commentary update.

	* gst/elements/gstidentity.c (PROP_DUPLICATE): Gone daddy gone.
	Didn't really make sense, not implementable with basetransform,
	etc.
	(gst_identity_transform): Unref inbuf via make_writable. Feeble
	attempt at implementing the sync property, needs an unlock method.

	* gst/base/gstbasetransform.c (gst_base_transform_transform_caps):
	New func, by default returns the same caps (the identity
	transformation).
	(gst_base_transform_getcaps): Uses transform_caps to return
	something sensible.
	(gst_base_transform_setcaps): Complicated logic to get caps on
	both pads, even if they are different, and to call set_caps once
	for every time both pads get their caps set.
	(gst_base_transform_handle_buffer): Give the ref to the transform
	function. Allows in-place modification of the buffer.

	* gst/base/gstbasetransform.h (transform_caps): New class method.
	Given caps on one side, what can I do on the other.
	(set_caps): Take two caps, one for each side of the element.

	* gst/gstpad.h:
	* gst/gstpad.c (gst_pad_fixate_caps): Change prototype to modify
	caps in place. This is safe because we can check the mutability of
	the caps, and a good idea because fixate functions are just called
	as a matter of last resort. (Not actually implemented.)
	(gst_pad_set_caps): If the caps we're setting is actually the same
	as the existing pad caps, just update the pointer without calling
	setcaps. Assert that caps is either NULL or fixed, as per the
	docs.

	* gst/gstghostpad.c: Update for fixate changes.

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

	* gst/gstcaps.c:
	* gst/gstcaps.h (gst_static_caps_get): Not const return, having
	two refcounts makes it immutable, which is enough. Doc more.

2005-07-02  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstpad.c: (gst_pad_emit_have_data_signal):
	  Put the mini_object into GValue as a mini_object,
	  not a gpointer, since that's how we declared
	  the signal.

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

	* examples/pwg/Makefile.am:
	  Fix buildbot again.

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

	* docs/pwg/building-testapp.xml:
	  Add extra check.
	* examples/pwg/Makefile.am:
	  Fix buildbot.

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

	* configure.ac:
	* examples/Makefile.am:
	* examples/pwg/Makefile.am:
	* examples/pwg/extract.pl:
	  Enable building the PWG examples.
	* docs/pwg/advanced-interfaces.xml:
	  Add URI interface stub.
	* docs/pwg/advanced-types.xml:
	* docs/pwg/other-autoplugger.xml:
	* docs/pwg/appendix-porting.xml:
	* docs/pwg/pwg.xml:
	  Add porting guide (mostly stubs), remove autoplugging (see ADM).
	* docs/pwg/building-boiler.xml:
	* docs/pwg/building-chainfn.xml:
	* docs/pwg/building-pads.xml:
	* docs/pwg/building-props.xml:
	* docs/pwg/building-state.xml:
	* docs/pwg/building-testapp.xml:
	  Update the building-*.xml parts for 0.9 changes. All examples
	  code blocks compile in examples/pwg/*.

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

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/appendix-checklist.xml:
	* docs/manual/appendix-integration.xml:
	* docs/manual/highlevel-components.xml:
	  Fix playbin/decodebin examples, update docs a bit, mention bus
	  instead of signals in various places, mention kmplayer and
	  kaffeine since they have a working GStreamer backend in the KDE
	  section.

2005-06-30  Wim Taymans  <wim@fluendo.com>

	* CHANGES-0.9:
	* docs/design/draft-ghostpads.txt:
	* docs/design/draft-push-pull.txt:
	* docs/design/draft-query.txt:
	* docs/design/part-TODO.txt:
	* docs/design/part-query.txt:
	Added CHANGES-0.9 doc, updated status of other docs.
	
	* gst/gstquery.h:
	Remove "hmm" macro

2005-06-30  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
	(gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_object),
	(gst_base_sink_change_state):
	* gst/base/gstbasesink.h:
	Some tweaks, only EOS and a buffer complete a preroll.

2005-06-30  Andy Wingo  <wingo@pobox.com>

	* gst/gstghostpad.c (gst_ghost_pad_do_activate_push): Proxy
	activate_push down to the internal pad as well.

2005-06-30  Torsten Schoenfeld  <kaffeetisch@gmx.de>

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

	* gst/gsttaginterface.c:
	  Some documentation fixes (#307394 and #307397).

2005-06-30  Antoine Tremblay  <hexa00@gmail.com>

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

	* gst/gstvalue.c: (gst_value_intersect_list):
	  Fix memleak (#309125).

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

	* docs/manual/advanced-dataaccess.xml:
	  Fix fakesrc example to compile; doesn't work, bug somewhere...?
	* docs/manual/basics-pads.xml:
	  Add reference for filtered caps to above chapter.

2005-06-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (clear_queue), (remove_all_from_queue),
	(gst_bin_change_state):
	Probes are gone.
	Lame attempt at making the state change function a bit
	more readable.

2005-06-30  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-clocks.txt:
	* docs/design/part-element-sink.txt:
	* docs/design/part-events.txt:
	* docs/design/part-preroll.txt:
	* docs/design/part-states.txt:
	Some more tweeks and additions to the docs.

2005-06-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (_gst_do_pass_data_accumulator),
	(default_have_data), (gst_pad_class_init), (gst_pad_init),
	(gst_pad_emit_have_data_signal), (gst_pad_chain), (gst_pad_push),
	(gst_pad_check_pull_range), (gst_pad_get_range),
	(gst_pad_pull_range), (gst_pad_push_event), (gst_pad_send_event):
	* gst/gstpad.h:
	* gst/gstutils.c: (gst_atomic_int_set), (gst_pad_add_data_probe),
	(gst_pad_add_event_probe), (gst_pad_add_buffer_probe),
	(gst_pad_remove_data_probe), (gst_pad_remove_event_probe),
	(gst_pad_remove_buffer_probe):
	Removed atomic operations, use existing LOCK.
	Move exception handling out of main code path.

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

	* gst/gstpad.c: (_gst_do_pass_data_accumulator),
	(silly_return_true_function), (gst_pad_class_init),
	(gst_pad_emit_have_data_signal), (gst_pad_chain), (gst_pad_push),
	(gst_pad_get_range), (gst_pad_pull_range), (gst_pad_push_event),
	(gst_pad_send_event):
	  Fix accumulator, add default value by using _emitv() instead
	  of _emit() for signal emission.

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

	* docs/manual/advanced-dataaccess.xml:
	* examples/manual/Makefile.am:
	  Add probe example.
	* gst/gstpad.c: (_gst_do_pass_data_accumulator):
	  Make work (??).

2005-06-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/elements/gstfilesink.c: (gst_filesink_render):
	  Simplify code so that we don't have to handle short
	  writes and return GST_FLOW_ERROR if an error occured.

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

	* docs/gst/gstreamer-docs.sgml:
	  Remove probes more.

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

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstprobe.sgml:
	* gst/Makefile.am:
	* gst/gstpad.c: (_gst_do_pass_data_accumulator),
	(gst_pad_class_init), (gst_pad_init), (gst_pad_chain),
	(gst_pad_push), (gst_pad_get_range), (gst_pad_pull_range),
	(gst_pad_push_event), (gst_pad_send_event):
	* gst/gstpad.h:
	* gst/gstutils.c: (gst_pad_add_data_probe),
	(gst_pad_add_event_probe), (gst_pad_add_buffer_probe),
	(gst_pad_remove_data_probe), (gst_pad_remove_event_probe),
	(gst_pad_remove_buffer_probe):
	* gst/gstutils.h:
	  Remove old probes, add new g-signal-based probes and some utility
	  functions.

2005-06-29  Edward Hervey  <edward@fluendo.com>

	* gst/gstelementfactory.c:
	* gst/gstutils.h:
	* gst/gstutils.c:
	Moved gst_element_factory_can_[sink|src]_caps() to gstutils and added
	the definition to the header file.

2005-06-29  Andy Wingo  <wingo@pobox.com>

	* docs/gst/Makefile.am (scan-build.stamp): Totally only check
	plugins from the source directory.

2005-06-29  Wim Taymans  <wim@fluendo.com>

	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	Some fixings for blantently wrong text.

2005-06-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/Makefile.am:
	* gst/gst.c: (add_path_func), (init_pre):
	* gst/gstregistry.c: (gst_registry_add_path):
	  add A GST_PLUGIN_PATH_ONLY env var; if it is set, it will
	  only scan the GST_PLUGIN_PATH locations, and not add
	  system locations

2005-06-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* gst/gstelement.c:
	* gst/gstelement.h:
	* gst/gstevent.c:
	* gst/gstutils.c:
	  doc fixes

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

	* docs/manual/advanced-autoplugging.xml:
	  Fix autoplugging example.

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

	* docs/manual/advanced-autoplugging.xml:
	* docs/manual/mime-world.fig:
	  Try to get autoplugging working, fix type detection. Fix text
	  in hello-world image.

2005-06-29  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
	(gst_base_sink_change_state):
	Small debug line.

	* gst/gstclock.h:
	map SIGNAL and BROADCAST to the right function.

	* gst/gstobject.h:
	Remove redundant braces.

	* gst/gstpad.c: (gst_pad_set_caps):
	Don't call setcaps function when reseting caps to NULL.

	* gst/gstsystemclock.c: (gst_system_clock_dispose),
	(gst_system_clock_async_thread), (gst_system_clock_id_wait_async),
	(gst_system_clock_id_unschedule):
	Use BROADCAST as this is what we do.

2005-06-29  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
	We are actually prerolling before commiting the state
	change. 

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

	* 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-porting.xml:
	* docs/manual/basics-bins.xml:
	* docs/manual/basics-bus.xml:
	* docs/manual/basics-elements.xml:
	* docs/manual/basics-helloworld.xml:
	* docs/manual/basics-pads.xml:
	* docs/manual/highlevel-components.xml:
	* docs/manual/manual.xml:
	* docs/manual/thread.fig:
	  Update (until threads/scheduling) Application Development Manual;
	  remove GstThread, add GstBus, add simple porting checklist, add
	  documentation for tag writing, clocks, make all examples until this
	  part compile and run.
	* examples/manual/Makefile.am:
	  Update from changes to Application Development Manual; add bus
	  example, remove thread example.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (gst_bus_post), (gst_bus_have_pending),
	(gst_bus_set_flushing), (gst_bus_pop), (gst_bus_peek),
	(gst_bus_source_dispatch):
	Add debugging messages.
	Make internal methods static.
	Handle the case where the bus is flushed in the handler.
	
	* gst/gstelement.c: (gst_element_get_bus):
	Fix refcount in _get_bus();

	* gst/gstpipeline.c: (gst_pipeline_change_state),
	(gst_pipeline_get_clock_func):
	Clock refcounting fixes.
	Handle the case where preroll timed out more gracefully.
	
	* gst/gstsystemclock.c: (gst_system_clock_dispose):
	Clean up the internal thread in dispose. This is needed
	for subclasses that actually get disposed.
	
	* gst/schedulers/threadscheduler.c:
	(gst_thread_scheduler_class_init), (gst_thread_scheduler_func),
	(gst_thread_scheduler_dispose):
	Free thread pool in dispose.

2005-06-28  Andy Wingo  <wingo@pobox.com>

	* tests/network-clock-utils.scm (debug, print-event): New utils.

	* tests/network-clock.scm (*debug*, *with-graph*): New parameters.
	(*packet-loss*): Unified loss probability.
	(network-time): Report out-of-band events.

	* tests/plot-data: Add support for out-of-band events. Hack it
	into this script instead of passing it down the pipe; should fix
	this later.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	Docs fixes.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_bufferalloc),
	(gst_proxy_pad_do_checkgetrange), (gst_proxy_pad_do_acceptcaps),
	(gst_proxy_pad_do_fixatecaps):
	Correctly proxy the check_pull_range function.

2005-06-28  Andy Wingo  <wingo@pobox.com>

	* tests/network-clock.scm: Removed need for slib.
	
2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_set_pad_functions),
	(gst_basesink_preroll_queue_flush):
	* gst/base/gstbasesrc.c: (gst_basesrc_set_dataflow_funcs):
	* gst/elements/gsttee.c: (gst_tee_update_pad_functions):
	* gst/gstghostpad.c: (gst_proxy_pad_do_bufferalloc),
	(gst_proxy_pad_do_acceptcaps), (gst_proxy_pad_do_fixatecaps),
	(gst_proxy_pad_set_property):
	* gst/gstpad.c:
	* gst/gstpad.h:
	* gst/gstqueue.c: (gst_queue_init):
	The deprecated pad loop function is removed now.

2005-06-28  Andy Wingo  <wingo@pobox.com>

	* tests/network-clock.scm (*timeout*, *send-loss*, *recv-loss*):
	New parameters, simulate network packet loss.

	* tests/network-clock-utils.scm: Initialize the RNG.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_flush),
	(gst_basesink_event), (gst_basesink_deactivate):
	Flushing the preroll queue always needs to unlock the waiters.

2005-06-28  Edward Hervey  <edward@fluendo.com>

	* gst/gstpipeline.c: (gst_pipeline_send_event): 
	Wheen a seek was successful on a pipeline, set the stream_time to the
	seek offset in order to have a synchronized stream_time.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_bufferalloc),
	(gst_proxy_pad_do_getrange), (gst_proxy_pad_do_checkgetrange),
	(gst_proxy_pad_do_getcaps), (gst_proxy_pad_do_acceptcaps),
	(gst_proxy_pad_do_fixatecaps):
	Call wrapper function instead of just calling the function
	pointers. This takes care of any locking and whatmore.

2005-06-28  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_alloc_buffer), (gst_pad_push),
	(gst_pad_pull_range):
	* gst/gstpad.h:
	CONNECTED -> LINKED.

2005-06-28  Andy Wingo  <wingo@pobox.com>

	* *.c: Don't cast to GST_OBJECT when reffing or unreffing. Large
	source-munging commit!!!

	* gst/gstobject.c (gst_object_unref, gst_object_ref) 
	(gst_object_sink): Take gpointer arguments, not GstObject --
	avoids casts. Like GLib.

	* gst/gstghostpad.c (gst_proxy_pad_do_activate): Don't proxy
	activate.

2005-06-27  Andy Wingo  <wingo@pobox.com>

	* gst/base/gsttypefindhelper.c (gst_type_find_helper): Unref any
	remaining buffer.

	* gst/gsttrace.c (gst_alloc_trace_list_sorted): New helper,
	returns a sorted copy of the trace list.
	(gst_alloc_trace_print_live): New API, only prints traces with
	live objects. Sort the list.
	(gst_alloc_trace_print_all): Sort the list.
	(gst_alloc_trace_print): Align columns.

	* gst/elements/gstttypefindelement.c:
	* gst/elements/gsttee.c:
	* gst/base/gstbasesrc.c:
	* gst/base/gstbasesink.c:
	* gst/base/gstbasetransform.c:
	* gst/gstqueue.c: Adapt for pad activation changes.

	* gst/gstpipeline.c (gst_pipeline_init): Unref after parenting
	sched.
	(gst_pipeline_dispose): Drop ref on sched.

	* gst/gstpad.c (gst_pad_init): Set the default activate func.
	(gst_pad_activate_default): Push mode by default.
	(pre_activate_switch, post_activate_switch): New stubs, things to
	do before and after switching activation modes on pads.
	(gst_pad_set_active): Take a boolean and not a mode, dispatch to
	the pad's activate function to choose which mode to activate.
	Shortcut on deactivation and call the right function directly.
	(gst_pad_activate_pull): New API, (de)activates a pad in pull
	mode.
	(gst_pad_activate_push): New API, same for push mode.
	(gst_pad_set_activate_function) 
	(gst_pad_set_activatepull_function) 
	(gst_pad_set_activatepush_function): Setters for new API.

	* gst/gstminiobject.c (gst_mini_object_new, gst_mini_object_free):
	Trace all miniobjects.
	(gst_mini_object_make_writable): Unref the arg if we copy, like
	gst_caps_make_writable.

	* gst/gstmessage.c (_gst_message_initialize): No trace init.

	* gst/gstghostpad.c (gst_proxy_pad_do_activate) 
	(gst_proxy_pad_do_activatepull, gst_proxy_pad_do_activatepush):
	Adapt for new pad API.

	* gst/gstevent.c (_gst_event_initialize): Don't initialize trace.

	* gst/gstelement.h:
	* gst/gstelement.c (gst_element_iterate_src_pads) 
	(gst_element_iterate_sink_pads): New API functions.
	
	* gst/gstelement.c (iterator_fold_with_resync): New utility,
	should fold into gstiterator.c in some form.
	(gst_element_pads_activate): Simplified via use of fold and
	delegation of decisions to gstpad->activate.

	* gst/gstbus.c (gst_bus_source_finalize): Set the bus to NULL,
	help in debugging.

	* gst/gstbuffer.c (_gst_buffer_initialize): Ref the buffer type
	class once in init, like gstmessage. Didn't run into this issue
	but it seems correct. Don't initialize a trace, gstminiobject does
	that.

	* check/pipelines/simple_launch_lines.c (test_stop_from_app): New
	test, runs fakesrc ! fakesink, stopping on ::handoff via a message
	to the bus.
	(assert_live_count): New util function, uses alloc traces to check
	cleanup.

	* check/gst/gstghostpad.c (test_ghost_pads): More refcount checks.
	To be modified when unlink drops the internal pad.

2005-06-27  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_get_state), (gst_bin_iterate_state_order),
	(gst_bin_change_state):
	Cleanup the get_state() function a little, make sure it
	iterates the same set of elements.
	Added stub iterate_state_order().

2005-06-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstbasesink.sgml:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstbasetransform.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstiterator.sgml:
	* gst/base/gstbasesrc.c:
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.h:
	* gst/gstelement.c:
	* gst/gstiterator.h:
	  adding basetransform and iterator docs

2005-06-27  Andy Wingo  <wingo@pobox.com>

	* docs/design/part-activation.txt: Notes on how activation should
	work -- not quite implemented yet.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstghostpad.c: (gst_proxy_pad_do_chain):
	At least get the chain function correct, needs more
	fixing.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_empty),
	(gst_basesink_handle_object), (gst_basesink_event),
	(gst_basesink_do_sync), (gst_basesink_handle_event),
	(gst_basesink_change_state):
	* gst/gsttask.h:
	Right, two problems here: ghostpads don't take locks and
	glib _rec_mutex_lock_full() with depth==0 still locks.
	Catch illegal locking and g_warn them.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* check/states/sinks.c: (START_TEST), (gst_object_suite):
	Have to check for completion now...

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_empty),
	(gst_basesink_handle_object), (gst_basesink_event),
	(gst_basesink_do_sync), (gst_basesink_handle_event),
	(gst_basesink_change_state):
	* gst/gstpad.h:
	Unlock STREAM_LOCK whatever the recursion was.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_set_property),
	(gst_basesink_preroll_queue_empty),
	(gst_basesink_preroll_queue_flush), (gst_basesink_handle_object),
	(gst_basesink_event), (gst_basesink_do_sync),
	(gst_basesink_handle_event), (gst_basesink_handle_buffer),
	(gst_basesink_chain), (gst_basesink_loop), (gst_basesink_activate),
	(gst_basesink_change_state):
	Reworked the base sink, handle event and buffer serialisation
	correctly and removed possible deadlock.
	Handle EOS correctly.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstpipeline.c: (is_eos), (pipeline_bus_handler),
	(gst_pipeline_change_state):
	* tools/gst-launch.c: (check_intr), (event_loop), (main):
	Allow elements to post EOS in the state change function.
	Fix up -launch, make it exit the poll loop when the
	pipeline actually changed state.
	Fix up warning parsing in -launch.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gsttee.c: (gst_tee_chain), (gst_tee_loop),
	(gst_tee_sink_activate):
	Core takes STREAM_LOCK for us now.

2005-06-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_set_state):
	* gst/gstelement.h:
	* gst/gstmessage.c: (gst_message_parse_error),
	(gst_message_parse_warning):
	Keep track of current target state while performing a state
	change so that subclasses can do something interesting.
	Fix parsing of warning/error messages when GError is NULL.

2005-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/gstreamer.types:
	* docs/gst/tmpl/gstbasesink.sgml:
	* docs/gst/tmpl/gstbasesrc.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstcompat.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/manual/appendix-quotes.xml:
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesrc.h:
	* gst/gstmessage.h:
	  start pulling in base classes and elements in our docs

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

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am:
	  fixed make distcheck with gtk-doc 1.3

2005-06-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_set_state), (gst_element_change_state):
	When the state did not change, also report NO_PREROLL
	when it matters.

2005-06-23  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_event_default):
	* gst/gstqueue.c: (gst_queue_loop):
	No unsafe task pausing please.

2005-06-23  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/threadscheduler.c:
	(gst_thread_scheduler_task_start),
	(gst_thread_scheduler_task_pause), (gst_thread_scheduler_func):
	Ref the task before pushing it on the threadpool. This
	makes sure that we have a ref when the threadfunction is
	actually called.

2005-06-23  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesrc.c (gst_basesrc_get_range): Check if the
	offset is greater than the file's size.

	* gst/gstobject.h (GST_CLASS_LOCK, GST_CLASS_TRYLOCK) 
	(GST_CLASS_UNLOCK, GST_CLASS_GET_LOCK, GstObjectClass)
	* gst/gstobject.c (gst_object_class_init): Make the class lock
	recursive. Wim won't let me drop deep_notify. Decodebin works
	again, whoopdy doo.

	* gst/gstghostpad.c (on_int_notify): Catches notify::caps on the
	internal pad, and hacks accordingly. Doesn't do it on the target
	pad because we change its caps. Probably catches all cases of
	interest tho.
	(gst_ghost_pad_set_property): Connect to notify::caps as
	appropritate.

	* tests/network-clock.scm (plot-simulation): Pipe data to the
	elite python skript.

	* tests/network-clock-utils.scm (define-parameter): New macro,
	defines a parameter that can be set via the command line.
	(set-parameter!, parse-parameter-arguments): Command line args
	parser.

	* tests/plot-data: Simple matplotlib-based plotter, takes input on
	stdin.

2005-06-23  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_handle_event):
	  Don't restart typefinding on a discont.
	* gst/gstelement.c: (gst_element_set_state):
	  Debug spelling fix.
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_send_event):
	  Allow changing mode of an active pad.
	  Debug output fixes.
	* gst/registries/gstlibxmlregistry.c: (load_feature):
	  Don't cast a static pad template to a normal pad template.

2005-06-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/gst/gstvalue.c: (START_TEST), (gst_value_suite):
	* gst/gstvalue.c: (gst_value_deserialize_int_helper):
	  remove gst_strtoll completely, since it didn't actually do
	  anything more than what g_ascii_strtoull already does.
	  check for range errors when deserializing
	  do a cast for the unsigned cases; but further fixing needs
	  a decision on what the interpretation of "(int)" and
	  deserialization should be for values that fall outside the
	  type's boundaries (ie, refuse, or interpret as casting)

2005-06-23  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* check/states/sinks.c: (START_TEST), (gst_object_suite), (main):
	* docs/design/part-live-source.txt:
	* docs/design/part-states.txt:
	* gst/base/gstbasesrc.c: (gst_basesrc_init),
	(gst_basesrc_set_live), (gst_basesrc_is_live),
	(gst_basesrc_get_range), (gst_basesrc_activate),
	(gst_basesrc_change_state):
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_set_property), (gst_fakesrc_get_property):
	* gst/gstbin.c: (gst_bin_get_state), (gst_bin_change_state):
	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_set_state):
	* gst/gstelement.h:
	* gst/gsttypes.h:
	* tools/gst-launch.c: (event_loop), (main):
	Added support for live sources and other elements that
	cannot do preroll.
	Updated design docs, added live-source design doc.
	Implemented live source functionality in basesrc
	Fix error condition in _bin_get_state()
	Implement live source handling in -launch.
	Added check for live sources.
	Fixed case in GstBin where elements were changed state
	multiple times.


2005-06-23  Andy Wingo  <wingo@pobox.com>

	* check/gst/gstpad.c (test_get_allowed_caps, test_refcount): Fix
	borken refcounting.

	* gst/gstpad.c (gst_pad_set_caps): Remove needless refs,
	gst_caps_replace takes care of this for us.

	* gst/gstghostpad.c (gst_proxy_pad_do_setcaps): Call the full
	gst_pad_set_caps on the target, not just its setcaps() function.

	* tests/network-clock.scm: 
	* tests/network-clock-utils.scm: A network clock simulator.
	Something of an algorithmic testbed before doing something in C.

2005-06-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/Makefile.am:
	* check/gst/capslist.h:
	  copy over from 0.8, and add two with bitmasks specified with
	  (int) 0xFF...
	* check/gst/gstcaps.c: (START_TEST), (gst_caps_suite):
	  add test to parse everything from capslist.h
	* check/gst/gststructure.c: (START_TEST), (gst_value_suite),
	(main):
	  add test for structure deserialization
	* check/gst/gstvalue.c: (START_TEST), (gst_value_suite):
	  add tests for deserialization of strings to int types
	* gst/gststructure.c: (gst_structure_nth_field_name):
	* gst/gststructure.h:
	  add a way to get the name of a field referenced by index
	* gst/gstvalue.c: (gst_value_deserialize_int_helper):
	  instead of checking if the resulting long long lies between
	  min and max, we check if the long long would fit into
	  a number of bytes for the final type.
	  This fixes cases where a string represents 2^32 - 1, which
	  when cast to int would be the (valid) -1, but is bigger than
	  G_MAXINT

2005-06-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/grammar.y:
	  add a log line for type deserialization

2005-06-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/gst/gstvalue.c: (START_TEST):
	* gst/gstvalue.c: (gst_value_deserialize):
	  return long long, not int, so gint64 deserialization actually
	  works.  Is there any flag that makes the compiler check this ?
	  Fixes #308559

2005-06-22  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.h:
	Added convenience macros for setting buffers in GValue.

2005-06-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/gst/.cvsignore:
	* check/gst/gstvalue.c: (START_TEST), (gst_value_suite):
	  add a test deserializing int64, and comment part out because
	  it fails, yay !

2005-06-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/Makefile.am:
	* check/gst/gstvalue.c: (START_TEST), (gst_value_suite), (main):
	* testsuite/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/value_serialize.c:
	* testsuite/test_gst_init.c:
	  move a value_serialize test over

2005-06-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c:
	Small doc updates.
	
	* gst/gstvalue.c: (gst_value_compare_buffer),
	(gst_value_serialize_buffer), (gst_value_deserialize_buffer),
	(gst_value_compare_flags), (gst_value_serialize_flags),
	(gst_value_deserialize_flags), (_gst_value_initialize):
	Fix serialisation of buffers, they are not boxed types anymore

2005-06-20  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstcaps.c: (START_TEST), (gst_caps_suite):
	Testcase to show error in buffer-on-caps serialisation.

2005-06-20  Andy Wingo  <wingo@pobox.com>

	* docs/random/wingo/porting-plugins-to-0.9: A pitiful document I
	will be adding to later.

	* gst/gstsystemclock.c (gst_system_clock_init): Unlock the clock
	if its socks fill with rocks.
	(gst_system_clock_obtain): Set the name on object construction.
	Avoid double-checked locking.

2005-06-20  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gsturi.c: (gst_element_make_from_uri):
	  Fix potential endless loop.

2005-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/Makefile.am:
	  add gsttag
	* check/gst/gsttag.c: (check_tags), (START_TEST), (gst_tag_suite),
	(main):
	  move over from testsuite dir and clean up
	* configure.ac:
	* gst/gsttag.c:
	* testsuite/Makefile.am:
	* testsuite/tags/.cvsignore:
	* testsuite/tags/Makefile.am:
	* testsuite/tags/merge.c:
	  remove testsuite/tags

2005-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstenumtypes.sgml:
	* win32/gstenumtypes.c:
	  clean up documentation build a little

2005-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* check/gstcheck.h:
	  add macros for checking refcounts on objects and caps
	* check/gst/gstpad.c: (START_TEST), (gst_pad_suite):
	  add some more unit tests
	* gst/gstpad.c: (gst_pad_link_check_compatible_unlocked),
	(gst_pad_link_prepare), (gst_pad_link), (gst_pad_get_allowed_caps):
	  fix leaked refcounts (I hope :)) so unittest works
	* gst/gstpad.h:
	  whitespace removal

2005-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: back to HEAD

=== release 0.9.1 ===

2005-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	  updated

2005-06-17  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasesink.c (gst_basesink_chain): Remove bogus
	assert; it's always possible that the pad gets deactivated in
	between the checks in gstpad.c and the implementation. Rely on
	finish_preroll() to return a FLUSHING or similar instead of on the
	assert.
	
	* gst/base/gstbasesink.c (gst_basesink_event): Only wait for the
	clock and post an EOS message if we come out of finish_preroll in
	the playing state.

2005-06-16  David Schleef  <ds@schleef.org>

	* gst/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
	(gst_capsfilter_set_property): Allow NULL as possible value
	for filter_caps property, indicating GST_CAPS_ANY.

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

	* gst/elements/gstfakesrc.c: (gst_fakesrc_create):
	  fix debug output
	* gst/schedulers/Makefile.am:
	  use libgst prefix
	* gstreamer.spec.in:
	  fix spec for it

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

	* gstreamer.spec.in:
	  clean up

2005-06-08  Andy Wingo  <wingo@pobox.com>

	* gst/gstutils.c: RPAD fixes all around.
	(gst_element_link_pads): Refcounting fixes.

	* tools/gst-inspect.c:
	* tools/gst-xmlinspect.c:
	* parse/grammar.y:
	* gst/base/gsttypefindhelper.c:
	* gst/base/gstbasesink.c:
	* gst/gstqueue.c: RPAD fixes.

	* gst/gstghostpad.h:
	* gst/gstghostpad.c: New ghost pad implementation as full proxy
	pads. The tricky thing is they provide both source and sink
	interfaces, since they proxy the internal pad for the external
	pad, and vice versa. Implement with lower-level ProxyPad objects,
	with the interior proxy pad as a child of the exterior ghost pad.
	Should write a doc on this.
	
	* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
	(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
	gst_object API.
	
	* gst/gstpad.c: Big changes. No more stub base GstPad, now all
	pads are real pads. No ghost pads in this file. Not documenting
	the myriad s/RPAD/PAD/ and REALIZE fixes.
	(gst_pad_class_init): Add properties for "direction" and
	"template". Both are construct-only, so they can't change during
	the life of the pad. Fixes properly deriving from GstPad.
	(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
	derived objects, just set properties when creating the objects via
	g_object_new.
	(gst_pad_get_parent): Implement as a function, return NULL if the
	parent is not an element.
	(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
	(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
	
	* gst/gstobject.c (gst_object_class_init): Make name a construct
	property. Don't set it in the object init.

	* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
	with UNKNOWN direction.
	(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
	with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
	(gst_element_remove_pad): Remove ghost-pad special cases.
	(gst_element_pads_activate): Remove rpad cruft.

	* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
	catch the pad's-parent-not-an-element case.

	* gst/gst.h: Include gstghostpad.h.

	* gst/gst.c (init_post): No more real, ghost pads.

	* gst/Makefile.am: Add gstghostpad.[ch].

	* check/Makefile.am:
	* check/gst/gstbin.c:
	* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
	into a bin creates ghost pads, and that the refcounts are right.
	Partly moved from gstbin.c.

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

	* check/gst-libs/.cvsignore:
	* check/gst/.cvsignore:
	* check/pipelines/.cvsignore:
	  ignore more
	* check/pipelines/cleanup.c: (setup_pipeline), (run_pipeline),
	(START_TEST), (cleanup_suite), (main):
	  add some tests related to cleanup after running pipelines

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

	* check/gst/gstbuffer.c: (START_TEST), (gst_test_suite), (main):
	  add a testsuite for GstBuffer

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

	* gst/gstminiobject.h:
	  add defines for accessing the refcount

2005-06-03  Stefan Kost  <ensonic@users.sf.net>

	* Makefile.am: added support for html unit test coverage reports

2005-06-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/elements/gstcapsfilter.c: (gst_capsfilter_set_property):
	  Free existing caps if the capsfilter changes. Add a FIXME about
	  setting those caps on the pads.

	* gst/gstutils.c: (gst_element_get_compatible_pad), (ghost_up):
	  Before adding a ghost pad to a parent bin, check that there isn't
	  already one for the element on the bin. Prevents infinite recursion
	  when using decodebin in parse pipelines. Andy says he'll rewrite the
	  way this works anyway, so ignore the hack.

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

	* gst/elements/gsttypefindelement.c (do_pull_typefind): Query the
	file size, pass it on to the type find helper.

	* gst/base/gstbasesrc.c (gst_basesrc_do_seek): Set the
	segment_start and segment_end properly according to the seek
	method. Segment_end is still a bit flaky because offset can be
	negative for CUR and END cases, but it takes -1 as an "unset"
	value.

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

	* gst/base/gstbasesink.c: (gst_basesink_pad_buffer_alloc),
	(gst_base_sink_buffer_alloc), (gst_basesink_preroll_queue_push),
	(gst_basesink_activate):
	* gst/base/gstbasesink.h:
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_prepare),
	(gst_pad_link), (gst_pad_accept_caps), (gst_pad_alloc_buffer),
	(gst_pad_query), (gst_pad_start_task):
	* gst/gstpad.h:
	* gst/gstqueue.c: (gst_queue_bufferalloc),
	(gst_queue_handle_sink_event), (gst_queue_chain):
	Bufferalloc: return GstFlowReturn to more accuratly report
	why allocation failed.

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

	* gst/gstpipeline.c: (gst_pipeline_send_event):
	Take snapshot of state without blocking.

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

	* docs/design/part-TODO.txt:
	* docs/design/part-caps.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-negotiation.txt:
	* docs/design/part-preroll.txt:
	Small doc updates 

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/elements/gstidentity.c: (gst_identity_event),
	(gst_identity_transform), (gst_identity_get_property):
	Protect last_message property as it is accessed from
	multiple threads.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_init),
	(gst_element_pads_activate), (gst_element_change_state):
	Slicker pad activation code.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/Makefile.am:
	* gst/gstelement.h:
	* gst/gstelementfactory.h:
	* gst/gsttypes.h:
	Move elementfactory methods to separate .h file.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-overview.txt:
	* gst/gstsystemclock.h:
	Small typo fixes, doc updates.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gst.c: (gst_init_get_popt_table), (init_post),
	(init_popt_callback):
	Remove cpu-opt flag.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_subbuffer_finalize),
	(gst_buffer_create_sub), (gst_buffer_is_span_fast):
	* gst/gstbuffer.h:
	Avoid typechecking in places where not needed.
	Added accessor for malloc_data.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_real_pad_init), (gst_pad_set_active),
	(gst_pad_link_prepare), (gst_pad_link), (gst_pad_accept_caps),
	(gst_pad_configure_sink), (gst_pad_configure_src),
	(gst_pad_alloc_buffer), (gst_pad_query), (gst_pad_send_event),
	(gst_pad_start_task):
	Propagate errors from _set_caps() in configure_src/sink
	functions instead of returning TRUE.
	FLUSH events can travel up and downstream


2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_push),
	(gst_basesink_activate):
	Handle EOS in preroll.

2005-05-30  Wim Taymans  <wim@fluendo.com>

	* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_handle_src_event):
	Remove old pieces of code
	Flushing the queue in an upstream event is a very bad idea.

2005-05-26  Andy Wingo  <wingo@pobox.com>

	* gst/gstminiobject.c (gst_value_mini_object_collect): Use
	gst_value_set_mini_object so as to add a ref on the object (which
	will be removed when the value is unset).

	* gst/elements/gstfakesink.c (gst_fakesink_class_init): Fix signal
	arg type in ::handoff.

	* gst/gstelement.c (gst_element_change_state): Also deactivate
	pads in READY->NULL, just in case the element didn't make it to
	PAUSED. Wingo tested, Wim approved.

2005-05-26  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_prepare),
	(gst_pad_link), (gst_pad_accept_caps), (gst_pad_alloc_buffer),
	(gst_pad_query), (gst_pad_send_event), (gst_pad_start_task):
	A flushing pad cannot be used to alloc_buffer from.

2005-05-26  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (gst_bus_init), (gst_bus_dispose), (gst_bus_post),
	(gst_bus_pop), (gst_bus_source_prepare), (gst_bus_source_check),
	(gst_bus_source_dispatch), (gst_bus_source_finalize),
	(gst_bus_create_watch), (gst_bus_add_watch_full):
	* gst/gstbus.h:
	Implement a real GSource and use g_main_context_wakeup() to
	signal new messages instead of the socketpair.

2005-05-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (bin_element_is_sink), (has_ancestor),
	(bin_element_is_semi_sink), (append_child), (gst_bin_change_state):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_prepare),
	(gst_pad_link), (gst_pad_accept_caps), (gst_pad_query),
	(gst_pad_send_event), (gst_pad_start_task):
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_locked_flush),
	(gst_queue_handle_sink_event), (gst_queue_chain), (gst_queue_loop),
	(gst_queue_sink_activate), (gst_queue_src_activate),
	(gst_queue_change_state):
	* gst/gstqueue.h:
	Fix state changes for non sinks. We now change sinks, then elements
	with unconnected srcpads, then the rest.
	More efficient queue unlocking in flush and state changes.
	Set the pad activate mode even if it does not have an activate
	function.

2005-05-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/base/gstbasesrc.c: (gst_basesrc_activate):
	  Don't go in pull mode for non-seekable sources.
	* gst/elements/gsttypefindelement.h:
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init),
	(gst_type_find_element_dispose), (gst_type_find_handle_src_query),
	(free_entry), (stop_typefinding),
	(gst_type_find_element_handle_event), (find_peek),
	(gst_type_find_element_chain), (do_pull_typefind),
	(gst_type_find_element_change_state):
	  Allow typefinding (w/o seeking) in push-mode, simplified version
	  of what was in 0.8.
	* gst/gstutils.c: (gst_buffer_join):
	* gst/gstutils.h:
	  gst_buffer_join() from 0.8.

2005-05-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_prepare),
	(gst_pad_link), (gst_pad_accept_caps), (gst_pad_query),
	(gst_pad_send_event), (gst_pad_start_task):
	Disable attempt at mode switching until it is figured out.

2005-05-25  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstadapter.c: (gst_adapter_peek), (gst_adapter_flush):
	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_push),
	(gst_basesink_finish_preroll), (gst_basesink_chain),
	(gst_basesink_loop), (gst_basesink_activate),
	(gst_basesink_change_state):
	* gst/base/gstbasesrc.c: (gst_basesrc_do_seek),
	(gst_basesrc_get_range), (gst_basesrc_loop),
	(gst_basesrc_activate):
	* gst/elements/gsttee.c: (gst_tee_sink_activate):
	* gst/gstpad.c: (gst_pad_dispose), (gst_real_pad_class_init),
	(gst_real_pad_init), (gst_real_pad_set_property),
	(gst_real_pad_get_property), (gst_pad_set_active),
	(gst_pad_is_active), (gst_pad_get_query_types), (gst_pad_unlink),
	(gst_pad_link_prepare), (gst_pad_link), (gst_pad_get_real_parent),
	(gst_real_pad_get_caps_unlocked), (gst_pad_peer_get_caps),
	(gst_pad_accept_caps), (gst_pad_get_peer), (gst_pad_realize),
	(gst_pad_event_default_dispatch), (gst_pad_event_default),
	(gst_pad_dispatcher), (gst_pad_query), (gst_real_pad_dispose),
	(gst_pad_save_thyself), (handle_pad_block), (gst_pad_chain),
	(gst_pad_push), (gst_pad_get_range), (gst_pad_pull_range),
	(gst_pad_send_event), (gst_pad_start_task), (gst_pad_pause_task),
	(gst_pad_stop_task):
	* gst/gstpad.h:
	* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_src_activate):
	* gst/gsttask.c: (gst_task_init), (gst_task_set_lock),
	(gst_task_get_state):
	* gst/gsttask.h:
	* gst/schedulers/threadscheduler.c:
	(gst_thread_scheduler_task_start), (gst_thread_scheduler_func):
	Implement gst_pad_pause/start/stop_task(), take STREAM lock
	in task function.
	Remove ACTIVE pad flag, use FLUSHING everywhere
	Added _pad_chain(), _pad_get_range() to call chain/getrange 
	functions.
	Add locks around IS_FLUSHING when reading.
	Take STREAM lock in chain(), get_range() functions so plugins
	don't need to take it anymore.
	


2005-05-25  Wim Taymans  <wim@fluendo.com>

	* tools/gst-launch.c: (event_loop):
	Unref message after using its contents instead of
	before.

2005-05-24  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-ghostpads.txt:
	* docs/design/draft-push-pull.txt:
	* docs/design/draft-query.txt:
	* docs/design/part-overview.txt:
	Docs updates, added general overview doc.

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

	* 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:
	* 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:
	  I didn't intend to add these or check them in.

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

	* configure.ac: Use -no-common everywhere.  In a sane world, it
	  would be the default in libtool, because without it, you can't
	  build DLLs on Windows.
	* docs/gst/gstreamer-docs.sgml: Remove GstCpu, GstData, GstThread
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstcpu.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstthread.sgml:

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

	* gst/gstminiobject.c: (gst_value_set_mini_object),
	(gst_value_take_mini_object), (gst_value_get_mini_object):
	* gst/gstminiobject.h: Add GValue set/get functions.

2005-05-19  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_init), (gst_subbuffer_get_type),
	(gst_subbuffer_class_init), (gst_subbuffer_finalize),
	(gst_subbuffer_init), (gst_buffer_is_span_fast):
	* gst/gstbuffer.h:
	* gst/gstbus.c: (gst_bus_post):
	* gst/gstelement.c: (gst_element_get_random_pad):
	* gst/gstmessage.c: (gst_message_init), (gst_message_finalize):
	Make subbufer unref the parent in finalize.
	some more debugging info.


2005-05-19  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_class_init),
	(gst_basesink_init), (gst_basesink_finalize),
	(gst_basesink_activate), (gst_basesink_change_state):
	Don't free preroll queue too early.

2005-05-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/Makefile.am:
	* gst/ROADMAP:
	  Hi, I'm outdated. Please shoot me.

2005-05-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstpipeline.c: (gst_pipeline_send_event):
	  Do not access variables after they have been deleted.

2005-05-19  Wim Taymans  <wim@fluendo.com>

	* tools/gst-inspect.c: (print_plugin_features):
	A plugin feature does unfortunatly not use the
	object name yet...

2005-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_is_span_fast), (gst_buffer_span):
	Port _span() functions to new subbuffers.

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

	* gst/gstbin.c: (gst_bin_add_func):
	  Fix clock settery in bins when adding kids after the clock has
	  been selected.

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

	* gst/elements/gstidentity.c: (gst_identity_class_init):
	  Workaround until signals support GstMiniObject.

2005-05-18  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbuffer.c:
	Oops, fix a typo GST_TYPE_BUFFER -> GST_TYPE_SUBBUFFER.

2005-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/base/Makefile.am:
	* gst/base/gstadapter.c: (gst_adapter_base_init),
	(gst_adapter_class_init), (gst_adapter_init),
	(gst_adapter_dispose), (gst_adapter_finalize), (gst_adapter_new),
	(gst_adapter_clear), (gst_adapter_push), (gst_adapter_peek),
	(gst_adapter_flush), (gst_adapter_available),
	(gst_adapter_available_fast):
	* gst/base/gstadapter.h:
	Ported and added adapter to the base classes.

2005-05-17  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gst/gst.c:
	* gst/gstmessage.c:
	  Make sure the class is reffed/unreffed once before threads can be
	  used.  Fixes #304551.

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

	* gst/base/gstbasesink.c: (gst_basesink_finish_preroll),
	(gst_basesink_chain_unlocked), (gst_basesink_activate):
	* gst/gstminiobject.c: (gst_mini_object_get_type),
	(gst_mini_object_free):
	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_query),
	(gst_pad_push), (gst_pad_push_event):
	* gst/gstqueue.c: (gst_queue_change_state):
	Don't queue buffers in basesink when we are flushing.
	Unref buffer when flushing in basesink.
	Flush queue when going to READY
	Unref buffer when _push() returns an error.
	Don't free MiniObject instance when refcount is incremented
	in _finalize() so that we can recover objects.

2005-05-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/advanced-schedulers.xml:
	* docs/manual/appendix-checklist.xml:
	* docs/pwg/advanced-clock.xml:
	* docs/pwg/advanced-interfaces.xml:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-types.xml:
	* docs/pwg/intro-preface.xml:
	* examples/plugins/example.c: (gst_example_get_type),
	(gst_example_class_init), (gst_example_chain),
	(gst_example_set_property), (gst_example_get_property),
	(gst_example_change_state), (plugin_init):
	* examples/plugins/example.h:
	  small doc fixes

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

	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_set_caps),
	(gst_pad_alloc_buffer), (gst_pad_query), (gst_pad_push):
	* gst/gstqueue.c: (gst_queue_change_state):
	Clear queue when going to READY.
	Remove IN_SETCAPS flag too.

2005-05-17  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstbasesrc.c: (gst_basesrc_change_state):
	  Remove implicit cast from gboolean to GstElementStateReturn;
	  make sure we still return failure in paused => ready case if
	  the parent class fails to change state and our own stop 
	  vfunc succeeds.

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

	* tools/gst-launch.c: (event_loop):
	Message was unreffed too soon.

2005-05-16  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (sink_iterator_filter): Err... um...

	* check/gst/gstbin.c (test_ghost_pads): New test for the
	ghosting-if-elements-not-in-same-bin behavior.

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

	* gst/gstminiobject.c: Use g_atomic_int_get() instead of
	accessing refcount directly.

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

	* check/Makefile.am: remove GstData checks
	* check/gst-libs/gdp.c: (START_TEST): fix for API changes
	* gst/Makefile.am: add miniobject, remove data
	* gst/gst.h: add miniobject, remove data
	* gst/gstdata.c: remove
	* gst/gstdata.h: remove
	* gst/gstdata_private.h: remove
	* gst/gsttypes.h: remove GstEvent and GstMessage
	* gst/gstelement.c: (gst_element_post_message): fix for API changes
	* gst/gstmarshal.list: change BOXED -> OBJECT

	Implement GstMiniObject.
	* gst/gstminiobject.c:
	* gst/gstminiobject.h:

	Modify to be subclasses of GstMiniObject.
	* gst/gstbuffer.c: (_gst_buffer_initialize), (gst_buffer_get_type),
	(gst_buffer_class_init), (gst_buffer_finalize), (_gst_buffer_copy),
	(gst_buffer_init), (gst_buffer_new), (gst_buffer_new_and_alloc),
	(gst_subbuffer_get_type), (gst_subbuffer_init),
	(gst_buffer_create_sub), (gst_buffer_is_span_fast),
	(gst_buffer_span):
	* gst/gstbuffer.h:
	* gst/gstevent.c: (_gst_event_initialize), (gst_event_get_type),
	(gst_event_class_init), (gst_event_init), (gst_event_finalize),
	(_gst_event_copy), (gst_event_new):
	* gst/gstevent.h:
	* gst/gstmessage.c: (_gst_message_initialize),
	(gst_message_get_type), (gst_message_class_init),
	(gst_message_init), (gst_message_finalize), (_gst_message_copy),
	(gst_message_new), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_application):
	* gst/gstmessage.h:
	* gst/gstprobe.c: (gst_probe_perform),
	(gst_probe_dispatcher_dispatch):
	* gst/gstprobe.h:
	* gst/gstquery.c: (_gst_query_initialize), (gst_query_get_type),
	(gst_query_class_init), (gst_query_finalize), (gst_query_init),
	(_gst_query_copy), (gst_query_new):

	Update elements for GstData -> GstMiniObject changes
	* gst/gstquery.h:
	* gst/gstqueue.c: (gst_queue_finalize), (gst_queue_locked_flush),
	(gst_queue_chain), (gst_queue_loop):
	* gst/elements/gstbufferstore.c:
	(gst_buffer_store_add_buffer_func),
	(gst_buffer_store_cleared_func), (gst_buffer_store_get_buffer):
	* gst/elements/gstfakesink.c: (gst_fakesink_class_init),
	(gst_fakesink_render):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
	* gst/elements/gstfilesrc.c: (gst_mmap_buffer_get_type),
	(gst_mmap_buffer_class_init), (gst_mmap_buffer_init),
	(gst_mmap_buffer_finalize), (gst_filesrc_map_region),
	(gst_filesrc_create_read):
	* gst/elements/gstidentity.c: (gst_identity_class_init):
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_src_event), (free_entry_buffers),
	(gst_type_find_element_handle_event):
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer):
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/dataprotocol/dp-private.h:

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

	* gst/elements/gstelements.c: Don't include headers that were
	just removed.

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

	* gst/elements/Makefile.am: Remove some elements that don't
	need to be in the core (or even exist at all).
	* gst/elements/gstaggregator.c:
	* gst/elements/gstaggregator.h:
	* gst/elements/gstmd5sink.c:
	* gst/elements/gstmd5sink.h:
	* gst/elements/gstmultifilesrc.c:
	* gst/elements/gstmultifilesrc.h:
	* gst/elements/gstpipefilter.c:
	* gst/elements/gstpipefilter.h:
	* gst/elements/gstshaper.c:
	* gst/elements/gstshaper.h:
	* gst/elements/gststatistics.c:
	* gst/elements/gststatistics.h:
	* po/POTFILES.in: Remove above files.

2005-05-14  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_iterate_sinks): Use sink_iterator_filter
	so as to get the refs right.
	(sink_iterator_filter): New function, wraps bin_element_is_sink,
	unreffing objects that don't pass the filter.

	* gst/gstpipeline.c (gst_pipeline_init): Drop ref on bus after
	gst_element_set_bus.
	(gst_pipeline_dispose): Set the bus on the pipeline to NULL. In
	normal cases, this will destroy the bus.

	* gst/gstutils.c (prepare_link_maybe_ghosting): Drop ref on root
	object.

	* gst/gstbin.c (gst_bin_change_state): Fix state changes if a bin
	has no sinks.

2005-05-13  Andy Wingo  <wingo@pobox.com>

	* gst/gstutils.c (gst_element_link_pads): Instead of calling
	gst_pad_link, call pad_link_maybe_ghosting,
	(pad_link_maybe_ghosting): Links pads, making sure that the
	elements being linked are in the same bin.
	(find_common_root, object_has_ancestor, ghost_up, remove_pad):
	Helpers for pad_link_maybe_ghosting.

2005-05-13  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	  Require GLib >= 2.4.0 (for the g_atomic_* funcs)

2005-05-13  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/design/part-element-source.txt:
	  Mention GstPushSrc

2005-05-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_init),
	(gst_basesink_activate):
	* gst/base/gstbasesrc.c: (gst_basesrc_unlock),
	(gst_basesrc_is_seekable):
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
	(bin_element_is_sink), (gst_bin_change_state):
	* gst/gstelement.c: (gst_element_add_pad), (gst_element_query):
	* gst/gstelement.h:
	Identify sinks by their flag to avoid overly complicated
	checks (fow now).
	Do state changes even for elements not reachable from the
	sinks.
	BaseSink is a sink now :)
	Some more debugging info in the basesrc.


2005-05-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_query):
	  Implement _query on a bin, similar to _send_event.

2005-05-12  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/base/gstbasesrc.c: (gst_basesrc_do_seek):
	  Discont event offset format should be GST_FORMAT_BYTES,
	  not GST_FORMAT_TIME.

2005-05-12  Wim Taymans  <wim@fluendo.com>

	* gst/gstbin.c: (gst_bin_remove_func), (gst_bin_get_state):
	Same fix as Ronald's but without the signal. 

2005-05-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstutils.c: (gst_element_query_position):
	  No, an element is not a pad.

2005-05-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstbin.c: (gst_bin_add_func), (cb_parent_unset),
	(gst_bin_get_state):
	  If a child is removed from a bin while we remove the child from
	  the bin and while we're retrieving its state, signal this to the
	  get_state function so we abort the wait (instead of waiting for
	  a timeout) and can immediately re-iterate over all other elements.

2005-05-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/Makefile.am:
	* gst/base/gstbasesrc.c: (gst_basesrc_is_seekable),
	(gst_basesrc_start):
	* gst/base/gstbasesrc.h:
	* gst/base/gstpushsrc.c: (gst_pushsrc_get_type),
	(gst_pushsrc_base_init), (gst_pushsrc_class_init),
	(gst_pushsrc_init), (gst_pushsrc_create):
	* gst/base/gstpushsrc.h:
	Added is_seekable to BaseSrc
	Added simple PushSrc.

2005-05-11  Wim Taymans  <wim@fluendo.com>

	* gst/gstelement.c: (gst_element_add_pad), (gst_element_query):
	* gst/gstutils.c: (gst_element_get_compatible_pad_template),
	(gst_element_link_pads), (gst_element_query_position),
	(gst_element_query_convert), (intersect_caps_func),
	(gst_pad_query_position), (gst_pad_query_convert):
	Fix refcounting in utils function.
	No point in trying to activate a pad when it's added, it could
	be added from the state change function and then we deadlock, the
	element has to decide what to do.

2005-05-10  Andy Wingo  <wingo@pobox.com>

	* gst/elements/gstfakesink.c (gst_fakesink_render): Er, emit with
	*all* the arguments.

	* gst/base/gstbasetransform.c (gst_base_transform_event): Grab the
	stream lock if it's a FLUSH_DONE; normal flushes don't get the
	lock (according to the docs -- if this is wrong change the docs).

	* gst/gstpipeline.c (gst_pipeline_change_state): Set the bus to
	flush messages in the NULL state.

	* gst/gstbus.c (gst_bus_post): If a bus is flushing, unref the
	message immediately and return.
	(gst_bus_set_flushing): New function. If a bus is flushing, it
	flushes out any queued messages and immediately unrefs new
	messages. This is so when an element goes to NULL, all of the
	unhandled messages coming from it can be freed, and their
	references to the element dropped. In other words: message source
	ref considered harmful :P

	* gst/gstbin.c (gst_bin_change_state): Unref peer element when
	we're finished with it.

	* gst/gstmessage.c (gst_message_new_state_changed): 

2005-05-10  Wim Taymans  <wim@fluendo.com>

	* gst/gstvalue.c: (gst_value_compare_flags),
	(gst_value_serialize_flags), (gst_value_deserialize_flags),
	(_gst_value_initialize):
	Added flags serialize/deserialize/compare code.

2005-05-09  Andy Wingo  <wingo@pobox.com>

	* gst/base/gstbasetransform.c (gst_base_transform_proxy_getcaps):
	Intersect the peer's caps with our caps.

2005-05-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/base/gsttypefindhelper.c: (helper_find_peek):
	* gst/elements/gsttypefindelement.c: (find_peek):
	  Handle negative offsets better. Fixes decodebin.

2005-05-09  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_proxy_getcaps),
	(gst_base_transform_event):
	* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_query):
	Implement accept_caps.
	Fix silly lock/unlock mismatch in base class.

2005-05-09  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-push-pull.txt:
	* gst/base/gstbasesrc.c: (gst_basesrc_init), (gst_basesrc_query):
	* gst/elements/gstfilesink.c: (gst_filesink_init),
	(gst_filesink_query):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_init),
	(gst_type_find_handle_src_query), (find_element_get_length):
	* gst/gstelement.c: (gst_element_seek), (gst_element_query):
	* gst/gstelement.h:
	* gst/gstmessage.c:
	* gst/gstmessage.h:
	* gst/gstpad.c: (gst_real_pad_init), (gst_pad_get_query_types),
	(gst_real_pad_get_caps_unlocked),
	(gst_pad_get_internal_links_default), (gst_pad_get_internal_links),
	(gst_pad_event_default_dispatch), (gst_pad_event_default),
	(gst_pad_dispatcher), (gst_pad_query), (gst_pad_query_default),
	(gst_real_pad_dispose), (gst_real_pad_finalize),
	(gst_pad_load_and_link), (gst_pad_save_thyself),
	(gst_ghost_pad_save_thyself), (handle_pad_block), (gst_pad_push),
	(gst_pad_check_pull_range), (gst_pad_pull_range),
	(gst_pad_template_get_type), (gst_pad_template_class_init),
	(gst_pad_template_init), (gst_pad_template_dispose),
	(name_is_valid), (gst_static_pad_template_get),
	(gst_pad_template_new), (gst_static_pad_template_get_caps),
	(gst_pad_template_get_caps), (gst_pad_set_element_private),
	(gst_pad_get_element_private), (gst_pad_start_task),
	(gst_pad_pause_task), (gst_pad_stop_task),
	(gst_ghost_pad_get_type), (gst_ghost_pad_class_init),
	(gst_ghost_pad_init), (gst_ghost_pad_dispose),
	(gst_ghost_pad_set_property), (gst_ghost_pad_get_property),
	(gst_ghost_pad_new):
	* gst/gstpad.h:
	* gst/gstquery.c: (_gst_query_initialize), (gst_query_new),
	(gst_query_new_position), (gst_query_set_position),
	(gst_query_parse_position), (gst_query_new_convert),
	(gst_query_set_convert), (gst_query_parse_convert):
	* gst/gstquery.h:
	* gst/gstqueryutils.c:
	* gst/gstqueryutils.h:
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_bufferalloc), (gst_queue_handle_sink_event),
	(gst_queue_handle_src_query):
	* gst/gstutils.c: (gst_element_get_compatible_pad_template),
	(gst_element_query_position), (gst_element_query_convert),
	(intersect_caps_func), (gst_pad_query_position),
	(gst_pad_query_convert):
	* gst/gstutils.h:
	* tools/gst-inspect.c: (print_pad_info):
	* tools/gst-xmlinspect.c: (print_element_info):
	Remove old query functions. Ported old code.
	Added position/convert helper functions to gstutils.
	Reordered gstpad.c code, grouping relevant things.
	Remove gst_message_new(), always need to speficy a specific
	message.


2005-05-09  Andy Wingo  <wingo@pobox.com>

	* gst/gstiterator.h: Add some includes.

	* gst/gstqueryutils.h: Include more headers.

	* gst/gstpad.h:
	* gst/gstpad.c (gst_pad_query_position): New routine, replaces
	some uses of gst_pad_query.

	* gst/gstqueryutils.c: Build fixes. Make parse functions ignore
	NULL out parameters.
	(gst_query_new_position): New proc, allocates a new position
	query.

	* gst/Makefile.am (libgstreamer_@GST_MAJORMINOR@_la_SOURCES): Add
	gstqueryutils.c to the build.

	* gst/gststructure.c (gst_structure_set_valist): Implement with
	the generic G_VALUE_COLLECT.
	
2005-05-08  Edward Hervey  <bilboed@bilboed.com>

	* gst/Makefile.am: (gst_headers):
	Added gstqueryutils.h to the list of headers to install, that was
	a 'nachty' move wingo :)

2005-05-06  Andy Wingo  <wingo@pobox.com>

	* gst/gstquery.h
	* gst/gstquery.c (_gst_query_initialize): Extend GstQuery from
	GstData, init a memchunk.
	(standard_definitions): Add a few query types, deprecate a few.
	(gst_query_get_type): New proc.
	(_gst_query_copy, _gst_query_free, gst_query_new): GstData
	implementation.
	(gst_query_new_application, gst_query_get_structure): New public
	procs.

	* docs/design/draft-query.txt: Removed LINKS from the query types,
	because all the rest can be dispatched to other pads -- seemed
	ugly to have a query that couldn't be dispatched. internal_links
	is fine as a pad method.

	* gst/gstpad.h: Add query2 as a pad method, add the new functions
	in gstpad.c, but maintain binary compatibility for the moment.
	Will fix before 0.9 is out.

	* gst/gstqueryutils.c: 
	* gst/gstqueryutils.h: New files, implement 3 methods for each
	query type: parse_query, parse_response, and set. Probably need an
	allocator as well.

	* gst/gst.h: Add gstquery.h and gstqueryutils.h to the list.

	* gst/elements/gstfilesink.c (gst_filesink_query2):
	* gst/base/gstbasesrc.c (gst_basesrc_query2): Replace old query,
	query_types, and formats methods.

	* gst/gstpad.c (gst_pad_query2, gst_pad_query2_default)
	(gst_pad_set_query2_function): New functions.
	(gst_real_pad_init): Set query2_default as the default query2
	function. Basically just dispatches to internally linked pads.

	Needs review!
	
	* gst/gstdata_private.h (_GST_DATA_INIT): Set data->refcount to 1
	without using the atomic operations. Only one thread can possibly
	be accessing the data at this point. Changed so as to avoid
	gst_atomic operations.

2005-05-06  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_alloc_buffer), (gst_pad_push):
	Also set caps if we use the fallback buffer alloc.

2005-05-06  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstatomic.sgml:
	* docs/gst/tmpl/gstmemchunk.sgml:
	* testsuite/elements/struct_i386.h:
	* win32/GStreamer.vcproj:
	* win32/Makefile:
	  Purge GstAtomic stuff from docs and win32 makefiles as well

2005-05-06  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_proxy_getcaps):
	* gst/elements/gstcapsfilter.c: (gst_capsfilter_getcaps):
	* gst/gstpad.c: (gst_pad_peer_get_caps):
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_bufferalloc), (gst_queue_handle_sink_event),
	(gst_queue_src_activate), (gst_queue_change_state):
	* gst/gstqueue.h:
	* gst/gstutils.c: (gst_element_get_compatible_pad_template),
	(intersect_caps_func):
	Fix gst_pad_peer_get_caps(), make it return NULL if no peer.
	Always take QUEUE_LOCK after STREAM_LOCK or we might deadlock.
	Some fixes for the peer_get_caps() change.

2005-05-06  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_empty),
	(gst_basesink_handle_buffer), (gst_basesink_chain_unlocked),
	(gst_basesink_activate):
	Actually do something with error codes returned from the push
	functions.

2005-05-06  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-element-sink.txt:
	* docs/design/part-element-source.txt:
	* gst/base/gstbasesink.c: (gst_basesink_class_init),
	(gst_basesink_event), (gst_basesink_activate):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c: (gst_basesrc_init), (gst_basesrc_unlock),
	(gst_basesrc_activate):
	* gst/base/gstbasesrc.h:
	* gst/gstelement.c: (gst_element_pads_activate):
	Some more documentation.
	Fixed scheduling decision in _pads_activate().

2005-05-05  Andy Wingo  <wingo@pobox.com>

	* check/pipelines/simple_launch_lines.c (test_2_elements): "Fix"
	the test suite.

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

	* gst/base/Makefile.am:
	* gst/base/gstbasesink.h:
	* gst/base/gstbasesrc.c: (gst_basesrc_init),
	(gst_basesrc_set_dataflow_funcs), (gst_basesrc_query):
	* gst/base/gstcollectpads.c: (gst_collectpads_get_type),
	(gst_collectpads_class_init), (gst_collectpads_init),
	(gst_collectpads_finalize), (gst_collectpads_new),
	(gst_collectpads_set_function), (gst_collectpads_add_pad),
	(find_pad), (gst_collectpads_remove_pad),
	(gst_collectpads_is_active), (gst_collectpads_collect),
	(gst_collectpads_collect_range), (gst_collectpads_start),
	(gst_collectpads_stop), (gst_collectpads_peek),
	(gst_collectpads_pop), (gst_collectpads_available),
	(gst_collectpads_read), (gst_collectpads_flush),
	(gst_collectpads_chain):
	* gst/base/gstcollectpads.h:
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstfakesink.c: (gst_fakesink_class_init),
	(gst_fakesink_get_times), (gst_fakesink_event),
	(gst_fakesink_preroll), (gst_fakesink_render):
	* gst/elements/gstfilesink.c: (gst_filesink_class_init),
	(gst_filesink_init), (gst_filesink_set_location),
	(gst_filesink_open_file), (gst_filesink_close_file),
	(gst_filesink_pad_query), (gst_filesink_event),
	(gst_filesink_render), (gst_filesink_change_state):
	* gst/elements/gstfilesink.h:
	Added object to help in making collect pad based elements.
	Ported filesink.
	Make event function in sink baseclass return gboolean.

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

	* gst/gstbin.c: (gst_bin_send_event), (compare_name),
	(gst_bin_get_by_name):
	* gst/gstbuffer.h:
	* gst/gstclock.c: (gst_clock_entry_new), (gst_clock_class_init),
	(gst_clock_finalize):
	* gst/gstdata.c: (gst_data_replace):
	* gst/gstdata.h:
	* gst/gstelement.c: (gst_element_request_pad),
	(gst_element_pads_activate):
	* gst/gstobject.c: (gst_object_init), (gst_object_ref),
	(gst_object_unref):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_set_checkgetrange_function),
	(gst_pad_link_check_compatible_unlocked), (gst_pad_set_caps),
	(gst_pad_check_pull_range), (gst_pad_pull_range),
	(gst_static_pad_template_get_caps), (gst_pad_start_task),
	(gst_pad_pause_task), (gst_pad_stop_task):
	* gst/gstutils.c: (gst_element_get_compatible_pad_template),
	(gst_element_request_pad), (gst_pad_proxy_getcaps):
	Fix name lookup in GstBin.
	Added _data_replace() function and _buffer_replace()
	Use finalize method to clean up clock.
	Fix refcounting on request pads.
	Fix pad schedule mode error.
	Some more object refcounting debug info,


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

	* check/Makefile.am:
	* docs/gst/tmpl/gstatomic.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* gst/base/gstbasesink.c: (gst_basesink_activate):
	* gst/base/gstbasesrc.c: (gst_basesrc_class_init),
	(gst_basesrc_init), (gst_basesrc_set_dataflow_funcs),
	(gst_basesrc_query), (gst_basesrc_set_property),
	(gst_basesrc_get_property), (gst_basesrc_check_get_range),
	(gst_basesrc_activate):
	* gst/base/gstbasesrc.h:
	* gst/base/gstbasetransform.c: (gst_base_transform_sink_activate),
	(gst_base_transform_src_activate):
	* gst/elements/gstelements.c:
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_set_property), (gst_fakesrc_get_property):
	* gst/elements/gsttee.c: (gst_tee_sink_activate):
	* gst/elements/gsttypefindelement.c: (find_element_get_length),
	(gst_type_find_element_checkgetrange),
	(gst_type_find_element_activate):
	* gst/gstbin.c: (gst_bin_save_thyself), (gst_bin_restore_thyself):
	* gst/gstcaps.c: (gst_caps_do_simplify), (gst_caps_save_thyself),
	(gst_caps_load_thyself):
	* gst/gstelement.c: (gst_element_pads_activate),
	(gst_element_save_thyself), (gst_element_restore_thyself):
	* gst/gstpad.c: (gst_pad_load_and_link), (gst_pad_save_thyself),
	(gst_ghost_pad_save_thyself), (gst_pad_check_pull_range):
	* gst/gstpad.h:
	* gst/gstxml.c: (gst_xml_write), (gst_xml_parse_doc),
	(gst_xml_parse_file), (gst_xml_parse_memory),
	(gst_xml_get_element), (gst_xml_make_element):
	* gst/indexers/gstfileindex.c: (gst_file_index_load),
	(_file_index_id_save_xml), (gst_file_index_commit):
	* gst/registries/gstlibxmlregistry.c: (read_string), (read_uint),
	(read_enum), (load_pad_template), (load_feature), (load_plugin),
	(load_paths):
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event), (gst_dp_caps_from_packet):
	* tools/gst-complete.c: (main):
	* tools/gst-compprep.c: (main):
	* tools/gst-inspect.c: (print_element_properties_info):
	* tools/gst-launch.c: (xmllaunch_parse_cmdline):
	* tools/gst-xmlinspect.c: (print_element_properties):
	GCC 4 fixen.
	
2005-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c: (gst_plugin_check_module),
	(gst_plugin_check_file), (gst_plugin_load_file):
	    apply patch from #172526 to make register work on MacOSX

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

	* docs/gst/tmpl/gstconfig.sgml:
	* gst/gstconfig.h.in:
	  move documentation for some symbols.  Add doc for GST_PTR_FORMAT
	* testsuite/debug/printf_extension.c: (main):
	  Do not use GST_PTR_FORMAT on pointers to types with
	  sizeof < sizeof(gpointer).  Fixes test on 64-bit
	* testsuite/elements/property.h:
	  use correct printf format

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

	* docs/design/draft-push-pull.txt:
	* docs/design/draft-query.txt:
	* gst/base/gstbasesrc.c: (gst_basesrc_get_range_unlocked),
	(gst_basesrc_start):
	Added draft for new query API.
	Added draft for better selecting scheduling methods.
	Make basesrc ignore length if the subclass does not support
	it.

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

	* gst/Makefile.am:
	  possible fixes for automake-1.5 - _LIBADD is reserved

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

	* docs/faq/Makefile.am:
	* docs/manual/Makefile.am:
	* docs/manuals.mak:
	* docs/pwg/Makefile.am:
	* gst/Makefile.am:
	  possible fixes for automake-1.5

2005-04-28  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_base_init),
	(gst_basesink_pad_getcaps), (gst_basesink_init),
	(gst_basesink_do_sync):
	* gst/gstclock.c: (gst_clock_entry_new):
	* gst/gstevent.c: (gst_event_discont_get_value):
	* gst/gstpipeline.c: (pipeline_bus_handler),
	(gst_pipeline_change_state):
	* gst/gstsystemclock.c: (gst_system_clock_id_wait_unlocked):
	Better debugging of clocking info.
	Allow NULL values when getting discont values.

2005-04-27  Wim Taymans  <wim@fluendo.com>

	* check/gst/gstobject.c: (START_TEST), (gst_object_suite):
	* check/gst/gstpad.c: (gst_pad_suite):
	Increase timeout for checks.

2005-04-27  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* check/Makefile.am:
	  fix the broken rule for cleanup.  Apparently this rule is
	  only needed on FC2, so maybe this warrants further autotool
	  inspection.

2005-04-26  Wim Taymans  <wim@fluendo.com>

	* gst/gsttrashstack.h:
	Ooohh. a nasty one! After having a failed pop() from the stack,
	it's possible that the stack is empty. In that case, don't
	follow the NULL pointer.

2005-04-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_set_checkgetrange_function),
	(gst_pad_link_check_compatible_unlocked), (gst_pad_link_prepare),
	(gst_pad_check_pull_range), (gst_pad_pull_range),
	(gst_static_pad_template_get_caps), (gst_pad_start_task),
	(gst_pad_pause_task), (gst_pad_stop_task):
	* gst/gstplugin.c: (gst_plugin_load):
	* gst/gstplugin.h:
	Remove gst_library_load as it does more harm than good with
	the new g_module flags.
	Revert bogus caps template check in pad linking, pad caps
	are important when linking not the template, which is more
	general than the current caps.

2005-04-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* gst/autoplug/.cvsignore:
	* gst/autoplug/Makefile.am:
	* gst/autoplug/gstsearchfuncs.c:
	* gst/autoplug/gstsearchfuncs.h:
	* gst/autoplug/gstspider.c:
	* gst/autoplug/gstspider.h:
	* gst/autoplug/gstspideridentity.c:
	* gst/autoplug/gstspideridentity.h:
	* gst/autoplug/spidertest.c:
	  Die, spider, die.

2005-04-25  Wim Taymans  <wim@fluendo.com>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_set_checkgetrange_function), (gst_pad_check_pull_range),
	(gst_pad_pull_range), (gst_static_pad_template_get_caps),
	(gst_pad_start_task), (gst_pad_pause_task), (gst_pad_stop_task):
	* gst/gstpad.h:
	Added stubs for unimplemented functions. 

2005-04-24  David Schleef  <ds@schleef.org>

	* gst/gstpad.h: Disable some unimplemented functions.  Wim,
	please fix.

2005-04-24  David Schleef  <ds@schleef.org>

	Convert everything from GstAtomicInt to g_atomic_int_*, and
	remove gstatomic.
	* gst/Makefile.am:
	* gst/gstatomic.c:
	* gst/gstatomic.h:
	* gst/gstatomic_impl.h:
	* gst/gstbuffer.c:
	* gst/gstcaps.c:
	* gst/gstcaps.h:
	* gst/gstclock.c:
	* gst/gstclock.h:
	* gst/gstdata.c:
	* gst/gstdata.h:
	* gst/gstdata_private.h:
	* gst/gstevent.c:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstmessage.c:
	* gst/gstobject.c:
	* gst/gstobject.h:
	* gst/gststructure.c:
	* gst/gststructure.h:
	* gst/gstutils.c: Add gst_atomic_int_set() compaitibility function.
	* gst/gstutils.h:

2005-04-24  David Schleef  <ds@schleef.org>

	* check/gst/gstpad.c: (START_TEST): Oh yeah, it's always nice to
	make the regressions tests work.  Remove some code that is no
	longer true.
	* gst/gstpad.c: (gst_pad_link_check_templates_compatible_unlocked):
	Disable warning for pads without templates.

2005-04-24  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: Remove handling of filtered caps.  Fix/merge
	functions that handle filtered links.
	* gst/gstpad.h: Remove 'appfilter' field and prototypes of
	removed functions.
	* gst/gstutils.c: Fix/remove utility functions that handle
	filtered caps.
	* gst/gstutils.h:
	* gst/gstvalue.c: Add serialization/deserialization of caps
	* gst/parse/grammar.y: Ignore filtered caps when linking.  This
	requires fixing so that the filter caps notation creates
	a capsfilter element and sets the filter_caps property.  I
	think everyone probably wants to keep the shorthand notation.
	* docs/gst/tmpl/gstelement.sgml: updates for API changes.
	* docs/gst/tmpl/gstpad.sgml:

	* gst/elements/gstelements.c: Register capsfilter element.
	* gst/Makefile.am: fix spacing
	* docs/random/ds/0.9-suggested-changes: random

2005-04-23  David Schleef  <ds@schleef.org>

	* gst/elements/Makefile.am:
	* gst/elements/gstcapsfilter.c: New element that acts like an
	identity, but filters caps.  Will eventually replace filtered
	caps in pad linking.
	* gst/gstutils.c: (gst_element_create_all_pads): New function
	to create all the ALWAYS pads that are registered with an
	element class.  This functionality should eventually be
	merged in with GstElement initialization.
	* gst/gstutils.h:
	* testsuite/trigger/README: part of trigger test code that should
	have been checked in a long time ago.

2005-04-23  David Schleef  <ds@schleef.org>

	* gst/Makefile.am: Remove as-libtool stuff.  It's likely not
	needed with new versions of libtool (nobody will confirm this),
	and hard to carry around.
	* gst/autoplug/Makefile.am:
	* gst/base/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/indexers/Makefile.am:
	* gst/schedulers/Makefile.am:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/control/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/getbits/Makefile.am:

2005-04-21  Wim Taymans  <wim@fluendo.com>

	* docs/design/draft-push-pull.txt:
	* docs/design/part-MT-refcounting.txt:
	* docs/design/part-TODO.txt:
	* docs/design/part-caps.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbus.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* docs/design/part-push-pull.txt:
	* docs/design/part-query.txt:
	Some more docs.

2005-04-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstmessage.c: (_gst_message_copy), (_gst_message_free),
	(gst_message_new), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_application),
	(gst_message_get_structure):
	* gst/gstmessage.h:
	* gst/gststructure.c: (gst_structure_set_parent_refcount),
	(gst_structure_copy_conditional):
	Use parent refcount in GstMessage to ensure GstStructure
	consistency.
	Cleaned up headers a bit.
	

2005-04-20  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasesink.c: (gst_basesink_base_init),
	(gst_basesink_pad_getcaps), (gst_basesink_init),
	(gst_basesink_chain_unlocked):
	* gst/base/gsttypefindhelper.c: (helper_find_suggest),
	(gst_type_find_helper):
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init),
	(stop_typefinding), (gst_type_find_element_handle_event),
	(find_suggest), (gst_type_find_element_chain),
	(gst_type_find_element_checkgetrange),
	(gst_type_find_element_getrange), (do_typefind),
	(gst_type_find_element_activate):
	* gst/gstbuffer.c: (_gst_buffer_sub_free),
	(gst_buffer_default_free), (gst_buffer_default_copy),
	(gst_buffer_set_caps):
	* gst/gstcaps.c: (gst_caps_ref), (gst_caps_unref),
	(gst_caps_replace):
	* gst/gstmessage.c: (gst_message_new),
	(gst_message_new_state_changed):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_set_checkgetrange_function),
	(gst_pad_link_prepare_filtered), (gst_pad_relink_filtered),
	(gst_pad_set_caps), (gst_pad_check_pull_range),
	(gst_pad_pull_range), (gst_static_pad_template_get_caps):
	* gst/gstpad.h:
	* gst/gsttypefind.c: (gst_type_find_register):
	Make gst_caps_replace() work like other _replace() functions.
	Use _caps_replace() where possible.
	Make sure _message_new() initialises its field.
	Add gst_static_pad_template_get_caps()


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

	* gst/gstelement.c (gst_element_pads_activate): Check pull_range
	on the peer, not the pad. I think that was a typo. Pass an extra
	arg to see if random access is possible. Activate the pads as
	PULL_RANGE if possible.

	* gst/elements/gstfakesrc.c: s/ARG_/PROP_/.

	* gst/base/gstbasesrc.c (gst_basesrc_set_property) 
	(gst_basesrc_get_property): BLOCKSIZE is a ULONG. Rename ARG_...
	to PROP_....

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

	* docs/faq/using.xml:
	  Add note on gstreamer-properties (#154996).

2005-04-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/bbb/optional-properties:
	  Some analysis on optional properties.

2005-04-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>

	* docs/gst/tmpl/gstelementfactory.sgml:
	* gst/gstelement.h:
	* gst/gstelementfactory.c: (gst_element_factory_init),
	(gst_element_factory_cleanup), (gst_element_register),
	(__gst_element_factory_add_static_pad_template),
	(gst_element_factory_get_static_pad_templates),
	(gst_element_factory_can_src_caps),
	(gst_element_factory_can_sink_caps):
	* gst/registries/Makefile.am:
	* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
	(gst_xml_registry_class_init), (gst_xml_registry_init),
	(gst_xml_registry_new), (gst_xml_registry_set_property),
	(gst_xml_registry_get_property), (get_time), (make_dir),
	(gst_xml_registry_get_perms_func),
	(plugin_times_older_than_recurse), (plugin_times_older_than),
	(gst_xml_registry_open_func), (gst_xml_registry_load_func),
	(gst_xml_registry_save_func), (gst_xml_registry_close_func),
	(add_to_char_array), (read_string), (read_uint), (read_enum),
	(load_pad_template), (load_feature), (load_plugin), (load_paths),
	(gst_xml_registry_load), (gst_xml_registry_load_plugin),
	(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
	(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
	(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
	(gst_xml_registry_rebuild):
	* gst/registries/gstlibxmlregistry.h:
	* tools/gst-compprep.c: (main):
	* tools/gst-inspect.c: (print_pad_templates_info):
	* tools/gst-xmlinspect.c: (print_element_info):
	  Use libxml2 for registry parsing, use staticpadtemplates in
	  elementfactories. Makes gst_init() +/- 10x faster.

2005-04-12  Wim Taymans  <wim@fluendo.com>

	* gst/base/Makefile.am:
	* gst/base/gstbasesink.c: (gst_basesink_base_init),
	(gst_basesink_pad_getcaps), (gst_basesink_init),
	(gst_basesink_event), (gst_basesink_change_state):
	* gst/base/gstbasesrc.c: (gst_basesrc_get_type),
	(gst_basesrc_init), (gst_basesrc_query),
	(gst_basesrc_get_event_mask), (gst_basesrc_do_seek),
	(gst_basesrc_event_handler), (gst_basesrc_get_range_unlocked),
	(gst_basesrc_check_get_range), (gst_basesrc_loop),
	(gst_basesrc_unlock), (gst_basesrc_get_size), (gst_basesrc_start),
	(gst_basesrc_stop), (gst_basesrc_activate),
	(gst_basesrc_change_state):
	* gst/base/gsttypefindhelper.c: (helper_find_peek),
	(helper_find_suggest), (gst_type_find_helper):
	* gst/base/gsttypefindhelper.h:
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstfakesink.c: (gst_fakesink_class_init),
	(gst_fakesink_get_times), (gst_fakesink_event),
	(gst_fakesink_preroll), (gst_fakesink_render):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_init), (gst_fakesrc_event_handler),
	(gst_fakesrc_get_property), (gst_fakesrc_create),
	(gst_fakesrc_start), (gst_fakesrc_stop):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesrc.c: (gst_filesrc_class_init),
	(gst_filesrc_free_parent_mmap), (gst_filesrc_map_region),
	(gst_filesrc_map_small_region), (gst_filesrc_create_mmap),
	(gst_filesrc_create_read), (gst_filesrc_create),
	(gst_filesrc_is_seekable), (gst_filesrc_get_size),
	(gst_filesrc_start):
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init),
	(start_typefinding), (stop_typefinding), (push_buffer_store),
	(gst_type_find_element_handle_event),
	(gst_type_find_element_chain),
	(gst_type_find_element_checkgetrange),
	(gst_type_find_element_getrange), (do_typefind),
	(gst_type_find_element_activate),
	(gst_type_find_element_change_state):
	* gst/elements/gsttypefindelement.h:
	* gst/gstpipeline.c: (pipeline_bus_handler):
	Added typefind helper.
	Small preroll fix in the base sink.
	Disable typefind code in basesrc.
	Crude port of typefindelement.
	Fakesrc cleanups.


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

	* check/gst/gstbus.c: (gstbus_suite):
	* check/gst/gstdata.c: (thread_ref), (gst_data_suite):
	* check/gstcheck.h:
	  Fix up the timeout so that the test does not fail.

2005-04-06  Wim Taymans  <wim@fluendo.com>

	* gst/base/README:
	* gst/base/gstbasesrc.c: (gst_basesrc_get_type),
	(gst_basesrc_init), (gst_basesrc_get_formats), (gst_basesrc_query),
	(gst_basesrc_get_event_mask), (gst_basesrc_do_seek),
	(gst_basesrc_event_handler), (gst_basesrc_get_range_unlocked),
	(gst_basesrc_check_get_range), (gst_basesrc_loop),
	(gst_basesrc_unlock), (gst_basesrc_get_size), (gst_basesrc_start),
	(gst_basesrc_stop), (gst_basesrc_activate),
	(gst_basesrc_change_state), (basesrc_find_peek),
	(basesrc_find_suggest), (gst_basesrc_type_find):
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfilesrc.c: (gst_filesrc_base_init),
	(gst_filesrc_class_init), (gst_filesrc_init),
	(gst_filesrc_finalize), (gst_filesrc_set_location),
	(gst_filesrc_set_property), (gst_filesrc_get_property),
	(gst_filesrc_free_parent_mmap), (gst_filesrc_map_region),
	(gst_filesrc_map_small_region), (gst_filesrc_create_mmap),
	(gst_filesrc_create_read), (gst_filesrc_create),
	(gst_filesrc_get_size), (gst_filesrc_start), (gst_filesrc_stop):
	* gst/elements/gstfilesrc.h:
	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_lost_state), (gst_element_pads_activate):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_set_checkgetrange_function), (gst_pad_check_pull_range),
	(gst_pad_pull_range):
	* gst/gstpad.h:
	More work on the generic source base class, implement seeking,
	query.
	Make filesrc extend the base source class.
	Added gst_pad_set_checkgetrange_function to GstPad.

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

	* pkgconfig/gstreamer-base.pc.in:
	* pkgconfig/gstreamer-base-uninstalled.pc.in: New files.

	* pkgconfig/Makefile.am:
	* configure.ac (AC_OUTPUT): Add gstreamer-base pkgconfig files.

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

	* gst/base/Makefile.am:
	* gst/base/README:
	* gst/base/gstbasesink.c: (gst_basesink_base_init),
	(gst_basesink_pad_getcaps), (gst_basesink_pad_setcaps),
	(gst_basesink_pad_buffer_alloc), (gst_basesink_init),
	(gst_basesink_do_sync), (gst_basesink_chain_unlocked):
	* gst/base/gstbasesrc.c: (gst_basesrc_get_type),
	(gst_basesrc_base_init), (gst_basesrc_class_init),
	(gst_basesrc_init), (gst_basesrc_get_formats),
	(gst_basesrc_get_query_types), (gst_basesrc_query),
	(gst_basesrc_get_event_mask), (gst_basesrc_event_handler),
	(gst_basesrc_set_property), (gst_basesrc_get_property),
	(gst_basesrc_get_range_unlocked), (gst_basesrc_get_range),
	(gst_basesrc_loop), (gst_basesrc_activate),
	(gst_basesrc_change_state):
	* gst/base/gstbasesrc.h:
	* gst/elements/gstfakesrc.c: (gst_fakesrc_base_init),
	(gst_fakesrc_class_init), (gst_fakesrc_init),
	(gst_fakesrc_event_handler), (gst_fakesrc_set_property),
	(gst_fakesrc_get_property), (gst_fakesrc_create):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesrc.c: (gst_filesrc_getrange),
	(gst_filesrc_open_file), (gst_filesrc_loop),
	(gst_filesrc_activate), (filesrc_find_peek),
	(gst_filesrc_type_find):
	Made base source class, make fakesrc extend it.
	Add comments to basesink class.
	Some filesrc cleanup.

2005-03-31  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: (gst_plugin_check_file), (gst_plugin_load_file):
	Switch to using G_MODULE_BIND_LOCAL, which means plugins are now
	expected to link against libgstreamer.
	* gst/base/Makefile.am: link against libgstreamer
	* gst/elements/Makefile.am: same

2005-03-31  Andy Wingo  <wingo@pobox.com>

	* tests/instantiate/Makefile.am:
	* tests/instantiate/caps.c: Add test to test speed of caps copy
	and free.

	* tests/memchunk/gmemchunktest.c (main): Use alloc only on the
	GMemChunk to be fair.

	* gst/gsttrashstack.h: Remove warning about using the fallback
	trash stack implementation, it's still faster than malloc.

2005-03-30  Andy Wingo  <wingo@pobox.com>

	* tests/complexity.c: Add a copyright.

2005-03-31  Wim Taymans  <wim@fluendo.com>

	* gst/base/gstbasetransform.c: (gst_base_transform_base_init),
	(gst_base_transform_class_init), (gst_base_transform_init),
	(gst_base_transform_setcaps), (gst_base_transform_handle_buffer),
	(gst_base_transform_get_property),
	(gst_base_transform_sink_activate),
	(gst_base_transform_src_activate),
	(gst_base_transform_change_state):
	* gst/base/gstbasetransform.h:
	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_event), (gst_identity_check_perfect),
	(gst_identity_transform), (gst_identity_start),
	(gst_identity_stop):
	Added start/stop methods to transform base class so subclasses 
	don't need to deal with state changes even.

2005-03-31  Wim Taymans  <wim@fluendo.com>

	* gst/gstevent.c: (gst_event_new_discontinuous_valist),
	(gst_event_new_discontinuous), (gst_event_discont_get_value):
	* gst/gstevent.h:
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_pull_range):
	Added rate to the discont event to prepare for variable speed
	and reverse playback.

2005-03-29  David Schleef  <ds@schleef.org>

	* configure.ac:
	* testsuite/trigger/Makefile.am:
	* testsuite/trigger/trigger.c: A little example program to show
	how trigger-based elements can work.

2005-03-29  Wim Taymans  <wim@fluendo.com>

	* gst/base/Makefile.am:
	* gst/base/README:
	* gst/base/gstbasesink.c: (gst_basesink_get_type),
	(gst_basesink_base_init), (gst_basesink_class_init),
	(gst_basesink_pad_getcaps), (gst_basesink_init),
	(gst_basesink_activate), (gst_basesink_change_state):
	* gst/base/gstbasesink.h:
	* gst/base/gstbasetransform.c: (gst_base_transform_get_type),
	(gst_base_transform_base_init), (gst_base_transform_finalize),
	(gst_base_transform_class_init), (gst_base_transform_init),
	(gst_base_transform_proxy_getcaps), (gst_base_transform_setcaps),
	(gst_base_transform_event), (gst_base_transform_getrange),
	(gst_base_transform_chain), (gst_base_transform_handle_buffer),
	(gst_base_transform_set_property),
	(gst_base_transform_get_property),
	(gst_base_transform_sink_activate),
	(gst_base_transform_src_activate),
	(gst_base_transform_change_state):
	* gst/base/gstbasetransform.h:
	* gst/elements/gstidentity.c: (gst_identity_finalize),
	(gst_identity_class_init), (gst_identity_init),
	(gst_identity_event), (gst_identity_check_perfect),
	(gst_identity_transform), (gst_identity_set_property),
	(gst_identity_get_property), (gst_identity_change_state):
	* gst/elements/gstidentity.h:
	* gst/gstelement.c: (gst_element_get_state_func),
	(gst_element_lost_state), (gst_element_pads_activate):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_peer_set_active),
	(gst_pad_check_pull_range), (gst_pad_pull_range):
	* gst/gstpad.h:
	Simplify pad activation.
	Added function to check if pull_range can be performed.
	Error out when pulling inactive or flushing pads.
	Removed const from refcounted types as it does not make sense.
	Simplify pad templates in basesink
	Added base class for simple 1-to-1 transforms.
	Make identity subclass the base transform.

2005-03-29  Andy Wingo  <wingo@pobox.com>

	* docs/libs/gstreamer-libs-overrides.txt: 
	* docs/gst/gstreamer-overrides.txt: Add these files to CVS. Now I
	really don't understand what's going on, but like whatever. I want
	green buildbot!

	* docs/gst/Makefile.am:
	* docs/libs/Makefile.am: Dist the overrides files.

	* check/Makefile.am (clean-local): Remove .libs directories.

	* gst/elements/Makefile.am (EXTRA_DIST): Add all the attic
	elements to EXTRA_DIST, so po/ files are happy.

	* po/POTFILES.in: Er, remove it here.

	* po/POTFILES: Remove gstspider.c.

	* configure.ac (AC_OUTPUT): Add missing testsuite makefiles.

	* docs/libs/gstreamer-libs-docs.sgml: 
	* docs/libs/gstreamer-libs-sections.txt: Remove the section on
	bytestream.

	* tests/complexity.c (main): Set the length of the preroll queue
	on the sinks to prevent a lockup.

	* libs/gst/dataprotocol/Makefile.am: 
	* libs/gst/dataprotocol/dataprotocol-test.c: Remove test, it's
	the same as the one in check/gst-libs/gdp.c.

	* po/, docs/gst/: Commit automatic changes to docs and po files.

	* gst/elements/Makefile.am (libgstelements_la_LDFLAGS): Link to
	the versioned libgstbase.

	* check/Makefile.am: Depend on an unversioned gst-register, seems
	to make autoconf happier.

	* gst/base/Makefile.am: Make libgstbase a versioned lib.

2005-03-28  Wim Taymans  <wim@fluendo.com>

	* configure.ac:
	* docs/design/part-gstelement.txt:
	* docs/design/part-negotiation.txt:
	* docs/design/part-preroll.txt:
	* docs/design/part-scheduling.txt:
	* docs/design/part-states.txt:
	* gst/Makefile.am:
	* gst/base/Makefile.am:
	* gst/base/README:
	* gst/base/gstbasesink.c: (gst_basesink_get_template),
	(gst_basesink_base_init), (gst_basesink_class_init),
	(gst_basesink_pad_getcaps), (gst_basesink_pad_setcaps),
	(gst_basesink_pad_buffer_alloc), (gst_basesink_init),
	(gst_basesink_set_pad_functions),
	(gst_basesink_set_all_pad_functions), (gst_basesink_set_clock),
	(gst_basesink_set_property), (gst_basesink_get_property),
	(gst_base_sink_get_template), (gst_base_sink_get_caps),
	(gst_base_sink_set_caps), (gst_base_sink_buffer_alloc),
	(gst_basesink_preroll_queue_push),
	(gst_basesink_preroll_queue_empty),
	(gst_basesink_preroll_queue_flush), (gst_basesink_finish_preroll),
	(gst_basesink_event), (gst_basesink_get_times),
	(gst_basesink_do_sync), (gst_basesink_handle_buffer),
	(gst_basesink_chain_unlocked), (gst_basesink_chain),
	(gst_basesink_loop), (gst_basesink_activate),
	(gst_basesink_change_state):
	* gst/base/gstbasesink.h:
	* gst/elements/Makefile.am:
	* gst/elements/gstfakesink.c: (gst_fakesink_base_init),
	(gst_fakesink_class_init), (gst_fakesink_init),
	(gst_fakesink_set_property), (gst_fakesink_get_property),
	(gst_fakesink_get_times), (gst_fakesink_event),
	(gst_fakesink_preroll), (gst_fakesink_render),
	(gst_fakesink_change_state):
	* gst/elements/gstfakesink.h:
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_manager),
	(gst_bin_get_state), (gst_bin_change_state), (gst_bin_send_event):
	* gst/gstelement.c: (gst_element_add_pad),
	(gst_element_get_state_func), (gst_element_abort_state),
	(gst_element_commit_state), (gst_element_lost_state),
	(gst_element_set_state), (gst_element_pads_activate):
	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_event_default):
	* gst/gstpipeline.c: (gst_pipeline_send_event),
	(gst_pipeline_change_state):
	Added state change code.
	Added/updated docs.
	Added sink base class, make fakesink extend the base class.
	Small cleanups in GstPipeline.

2005-03-26  David Schleef  <ds@schleef.org>

	* gst/Makefile.am: remove gstcpu.[ch].  The gst_cpu functionality
	is broken and should be implemented in a different library.
	* gst/gst.c: (init_post): don't call _gst_cpu_initialize()
	* gst/gst.h: remove gstcpu.h
	* gst/gstcpu.c: remove
	* gst/gstcpu.h: remove
	* gst/Makefile.am.future: Remove this file.  It's ancient.

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

	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_manager),
	(gst_bin_send_event):
	  Add default event/set_manager handlers. The set_manager handler
	  takes care that the manager is distributed over kids that were
	  already in the bin before the manager was set. The event handler
	  is a utility virtual function that sends the event over all sinks,
	  so that gst_element_send_event (bin, event); has the expected
	  behaviour.
	* gst/gstpad.c: (gst_pad_event_default):
	  Re-install default event handling for discontinuities, so that
	  seeking works without requiring hacks in applications or extra
	  code in sinks.
	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_send_event):
	  Half hack, half utility: set a pipeline to PAUSED for seek events,
	  since that is the only way we can guarantee a/v sync. Means that
	  you can do gst_element_seek (pipeline, method, pos); on a pipeline
	  and it "just works".

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

	* gst/gstpipeline.c: (gst_pipeline_use_clock):
	  Lock/unlock mismatch.

2005-03-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/gst-uninstalled:
	  add gst-plugins-base
	* docs/gst/Makefile.am:
	  don't error out until docs are fixed
	* docs/gst/gstreamer.types:
	  remove thread

2005-03-22  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* check/gst/gstmessage.c: (START_TEST), (gst_data_suite), (main):
	* gst/gststructure.c: (gst_structure_set_valist),
	(gst_structure_copy_conditional):
	Activated more tests.
	Added message test.
	Added G_TYPE_POINTER to GstStructure.
	

2005-03-22  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-TODO.txt:
	* docs/design/part-events.txt:
	* docs/design/part-gstbin.txt:
	* docs/design/part-gstbus.txt:
	* docs/design/part-gstpipeline.txt:
	* docs/design/part-messages.txt:
	* gst/gstbus.c:
	* gst/gstmessage.c:
	Docs updates

2005-03-21  Wim Taymans  <wim@fluendo.com>

	* gst/gstbus.c: (gst_bus_post):
	Fix copy-and-paste error.

2005-03-21  Wim Taymans  <wim@fluendo.com>

	* check/Makefile.am:
	* gst/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstfakesink.c: (gst_fakesink_init),
	(gst_fakesink_event), (gst_fakesink_chain):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init),
	(gst_fakesrc_init), (gst_fakesrc_get_event_mask),
	(gst_fakesrc_event_handler), (gst_fakesrc_set_pad_functions),
	(gst_fakesrc_set_all_pad_functions), (gst_fakesrc_request_new_pad),
	(gst_fakesrc_set_property), (gst_fakesrc_get_property),
	(gst_fakesrc_get_range_unlocked), (gst_fakesrc_get_range),
	(gst_fakesrc_loop), (gst_fakesrc_activate),
	(gst_fakesrc_change_state):
	* gst/elements/gstfakesrc.h:
	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_get_read), (gst_filesrc_getrange), (gst_filesrc_get),
	(gst_filesrc_open_file), (gst_filesrc_loop),
	(gst_filesrc_activate), (gst_filesrc_change_state),
	(filesrc_find_peek), (filesrc_find_suggest),
	(gst_filesrc_type_find):
	* gst/elements/gstidentity.c: (gst_identity_finalize),
	(gst_identity_class_init), (gst_identity_init),
	(gst_identity_proxy_getcaps), (identity_queue_push),
	(identity_queue_pop), (identity_queue_flush), (gst_identity_event),
	(gst_identity_getrange), (gst_identity_chain),
	(gst_identity_sink_loop), (gst_identity_src_loop),
	(gst_identity_handle_buffer), (gst_identity_set_dataflow_funcs),
	(gst_identity_set_property), (gst_identity_get_property),
	(gst_identity_change_state):
	* gst/elements/gstidentity.h:
	* gst/elements/gsttee.c: (gst_tee_class_init), (gst_tee_init),
	(gst_tee_update_pad_functions), (gst_tee_request_new_pad),
	(gst_tee_set_property), (gst_tee_get_property), (gst_tee_do_push),
	(gst_tee_handle_buffer), (gst_tee_chain), (gst_tee_loop),
	(gst_tee_sink_activate):
	* gst/elements/gsttee.h:
	* gst/gst.c: (gst_register_core_elements), (init_post):
	* gst/gst.h:
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_bus),
	(gst_bin_set_scheduler), (gst_bin_add_func), (gst_bin_add),
	(gst_bin_remove_func), (gst_bin_remove), (gst_bin_get_state),
	(gst_bin_change_state):
	* gst/gstbin.h:
	* gst/gstbus.c: (gst_bus_get_type), (gst_bus_class_init),
	(gst_bus_init), (gst_bus_dispose), (gst_bus_set_property),
	(gst_bus_get_property), (gst_bus_new), (gst_bus_post),
	(gst_bus_have_pending), (gst_bus_pop), (gst_bus_peek),
	(gst_bus_set_sync_handler), (gst_bus_create_watch),
	(bus_watch_callback), (bus_watch_destroy),
	(gst_bus_add_watch_full), (gst_bus_add_watch), (poll_handler),
	(poll_timeout), (gst_bus_poll):
	* gst/gstbus.h:
	* gst/gstcaps.h:
	* gst/gstdata.h:
	* gst/gstelement.c: (gst_element_class_init), (gst_element_init),
	(gst_element_post_message), (gst_element_message_full),
	(gst_element_get_state_func), (gst_element_get_state),
	(gst_element_abort_state), (gst_element_commit_state),
	(gst_element_lost_state), (gst_element_set_state),
	(gst_element_pads_activate), (gst_element_change_state),
	(gst_element_dispose), (gst_element_set_manager_func),
	(gst_element_set_bus_func), (gst_element_set_scheduler_func),
	(gst_element_set_manager), (gst_element_get_manager),
	(gst_element_set_bus), (gst_element_get_bus),
	(gst_element_set_scheduler), (gst_element_get_scheduler):
	* gst/gstelement.h:
	* gst/gstevent.c: (gst_event_new_segment_seek),
	(gst_event_new_flush):
	* gst/gstevent.h:
	* gst/gstmessage.c: (_gst_message_initialize), (_gst_message_copy),
	(_gst_message_free), (gst_message_get_type), (gst_message_new),
	(gst_message_new_eos), (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_tag),
	(gst_message_new_state_changed), (gst_message_new_application),
	(gst_message_get_structure), (gst_message_parse_tag),
	(gst_message_parse_state_changed), (gst_message_parse_error),
	(gst_message_parse_warning):
	* gst/gstmessage.h:
	* gst/gstpad.c: (gst_real_pad_class_init), (gst_real_pad_init),
	(gst_real_pad_set_property), (gst_pad_set_active),
	(gst_pad_is_active), (gst_pad_set_blocked_async),
	(gst_pad_set_blocked), (gst_pad_is_blocked),
	(gst_pad_set_activate_function), (gst_pad_set_loop_function),
	(gst_pad_set_getrange_function), (gst_pad_set_acceptcaps_function),
	(gst_pad_set_fixatecaps_function), (gst_pad_set_setcaps_function),
	(gst_pad_unlink), (gst_pad_link_prepare_filtered),
	(gst_pad_link_filtered), (gst_pad_relink_filtered),
	(gst_real_pad_get_caps_unlocked), (gst_pad_get_caps),
	(gst_pad_peer_get_caps), (gst_pad_fixate_caps),
	(gst_pad_accept_caps), (gst_pad_peer_accept_caps),
	(gst_pad_set_caps), (gst_pad_configure_sink),
	(gst_pad_configure_src), (gst_pad_get_negotiated_caps),
	(gst_pad_get_filter_caps), (gst_pad_alloc_buffer),
	(gst_real_pad_dispose), (gst_real_pad_finalize),
	(handle_pad_block), (gst_pad_push), (gst_pad_pull_range),
	(gst_pad_event_default_dispatch), (gst_pad_event_default),
	(gst_pad_push_event), (gst_pad_send_event), (gst_pad_get_formats):
	* gst/gstpad.h:
	* gst/gstpipeline.c: (gst_pipeline_init), (is_eos),
	(pipeline_bus_handler), (gst_pipeline_change_state),
	(gst_pipeline_get_scheduler), (gst_pipeline_get_bus):
	* gst/gstpipeline.h:
	* gst/gstprobe.h:
	* gst/gstqueue.c: (gst_queue_class_init), (gst_queue_init),
	(gst_queue_finalize), (gst_queue_getcaps), (gst_queue_link_sink),
	(gst_queue_link_src), (gst_queue_bufferalloc),
	(gst_queue_locked_flush), (gst_queue_handle_sink_event),
	(gst_queue_is_empty), (gst_queue_is_filled), (gst_queue_chain),
	(gst_queue_loop), (gst_queue_handle_src_event),
	(gst_queue_handle_src_query), (gst_queue_src_activate),
	(gst_queue_change_state):
	* gst/gstqueue.h:
	* gst/gstscheduler.c: (gst_scheduler_init),
	(gst_scheduler_dispose), (gst_scheduler_create_task),
	(gst_scheduler_factory_create):
	* gst/gstscheduler.h:
	* gst/gststructure.c: (gst_structure_get_type),
	(gst_structure_copy_conditional):
	* gst/gststructure.h:
	* gst/gsttaginterface.h:
	* gst/gsttask.c: (gst_task_get_type), (gst_task_class_init),
	(gst_task_init), (gst_task_dispose), (gst_task_create),
	(gst_task_get_state), (gst_task_start), (gst_task_stop),
	(gst_task_pause):
	* gst/gsttask.h:
	* gst/gstthread.c:
	* gst/gstthread.h:
	* gst/gsttypes.h:
	* gst/schedulers/Makefile.am:
	* gst/schedulers/cothreads_compat.h:
	* gst/schedulers/entryscheduler.c:
	* gst/schedulers/faircothreads.c:
	* gst/schedulers/faircothreads.h:
	* gst/schedulers/fairscheduler.c:
	* gst/schedulers/gstbasicscheduler.c:
	* gst/schedulers/gstoptimalscheduler.c:
	* gst/schedulers/gthread-cothreads.h:
	* gst/schedulers/threadscheduler.c:
	(gst_thread_scheduler_task_get_type),
	(gst_thread_scheduler_task_class_init),
	(gst_thread_scheduler_task_init),
	(gst_thread_scheduler_task_start),
	(gst_thread_scheduler_task_stop),
	(gst_thread_scheduler_task_pause), (gst_thread_scheduler_get_type),
	(gst_thread_scheduler_class_init), (gst_thread_scheduler_func),
	(gst_thread_scheduler_init), (gst_thread_scheduler_create_task),
	(gst_thread_scheduler_setup), (gst_thread_scheduler_reset),
	(plugin_init):
	* libs/gst/Makefile.am:
	* libs/gst/bytestream/bytestream.c: (gst_bytestream_get_next_buf):
	* libs/gst/bytestream/filepad.c: (gst_file_pad_init),
	(gst_file_pad_parent_set):
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_event),
	(gst_dp_event_from_packet):
	* tests/complexity.c: (main):
	* tests/mass_elements.c: (main):
	* testsuite/states/locked.c: (message_received), (main):
	* testsuite/states/parent.c: (main):
	* tools/gst-inspect.c: (print_element_flag_info),
	(print_implementation_info), (print_pad_info):
	* tools/gst-launch.c: (check_intr), (play_handler), (event_loop),
	(main):
	* tools/gst-md5sum.c: (event_loop), (main):
	* tools/gst-typefind.c: (main):
	* tools/gst-xmlinspect.c: (print_element_info):
	Next big merge.
	Added GstBus for mainloop integration.
	Added GstMessage for sending notifications on the bus.
	Added GstTask as an abstraction for pipeline entry points.
	Removed GstThread.
	Removed Schedulers.
	Simplified GstQueue for multithreaded core.
	Made _link threadsafe, removed old capsnego.
	Added STREAM_LOCK and PREROLL_LOCK in GstPad.
	Added pad blocking functions.
	Reworked scheduling functions in GstPad to prepare for
	scheduling updates soon.
	Moved events out of data stream.
	Simplified GstEvent types.
	Added return values to push/pull.
	Removed clocking from GstElement.
	Added prototypes for state change function for next merge.
	Removed iterate from bins and state change management.
	Fixed some elements, disabled others for now.
	Fixed -inspect and -launch.
	Added check for GstBus.

2005-03-10  Wim Taymans  <wim@fluendo.com>

	* docs/design/part-MT-refcounting.txt:
	* docs/design/part-clocks.txt:
	* docs/design/part-gstelement.txt:
	* docs/design/part-gstobject.txt:
	* docs/design/part-standards.txt:
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_add),
	(gst_bin_remove_func), (gst_bin_remove):
	* gst/gstbin.h:
	* gst/gstbuffer.c:
	* gst/gstcaps.h:
	* testsuite/clock/clock1.c: (main):
	* testsuite/clock/clock2.c: (gst_clock_debug), (element_wait),
	(main):
	* testsuite/dlopen/loadgst.c: (do_test):
	* testsuite/refcounting/bin.c: (add_remove_test1),
	(add_remove_test2), (main):
	* testsuite/refcounting/element.c: (main):
	* testsuite/refcounting/element_pad.c: (main):
	* testsuite/refcounting/pad.c: (main):
	* tools/gst-launch.c: (sigint_handler_sighandler):
	* tools/gst-typefind.c: (main):
	Doc updates.
	Added doc about clock.
	removed gst_bin_iterate_recurse_up(), marked methods
	for removal.
	Fix more testsuites.

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

	* gst/gstpad.c: (gst_pad_get_direction),
	(_gst_pad_default_fixate_foreach), (gst_pad_collectv),
	(gst_pad_collect_valist):
	* testsuite/bins/interface.c: (main):
	* testsuite/caps/audioscale.c: (test_caps):
	* testsuite/caps/caps.c: (test1), (test2), (test3):
	* testsuite/caps/deserialize.c: (main):
	* testsuite/caps/enumcaps.c: (main):
	* testsuite/caps/filtercaps.c: (main):
	* testsuite/caps/intersect2.c: (main):
	* testsuite/caps/random.c: (main):
	* testsuite/caps/renegotiate.c: (my_fixate), (main):
	* testsuite/caps/sets.c: (check_caps):
	* testsuite/caps/simplify.c: (check_caps), (main):
	* testsuite/caps/subtract.c: (check_caps):
	Fix _pad_get_direction wrt ghostpads.
	Fix caps testsuite.

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

	* check/Makefile.am:
	* check/gst/gstbin.c: (START_TEST), (gst_bin_suite), (main):
	* check/gst/gstsystemclock.c: (START_TEST), (gst_clock_debug),
	(ok_callback), (error_callback), (gst_systemclock_suite), (main):
	* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_index_func),
	(gst_bin_set_clock_func), (gst_bin_get_clock_func),
	(gst_bin_add_func), (gst_bin_add), (gst_bin_remove_func),
	(gst_bin_remove), (gst_bin_iterate_recurse_up),
	(bin_element_is_sink), (gst_bin_iterate_sinks),
	(gst_bin_iterate_all_by_interface):
	* gst/gstbin.h:
	* gst/gstelement.c: (gst_element_init), (gst_element_error_full),
	(gst_element_change_state), (gst_element_dispose),
	(gst_element_finalize), (gst_element_set_loop_function):
	* gst/gstelement.h:
	* gst/gstiterator.c: (find_custom_fold_func):
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach),
	(gst_pad_collectv), (gst_pad_collect_valist),
	(gst_pad_template_new):
	* gst/gstpipeline.c: (gst_pipeline_class_init),
	(gst_pipeline_dispose), (gst_pipeline_set_property),
	(gst_pipeline_get_property), (gst_pipeline_get_clock_func),
	(gst_pipeline_get_clock), (gst_pipeline_use_clock),
	(gst_pipeline_set_clock), (gst_pipeline_auto_clock):
	* gst/gstutils.h:
	* gst/schedulers/entryscheduler.c:
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_cothreaded_chain),
	(gst_basic_scheduler_chain_add_element):
	* testsuite/bins/interface.c: (main):
	Added GstBin test.
	Added GstSystemClock test.
	Implemented clock distribution code in GstBin.
	Implemented iterate sinks method for future use.
	Rearranged gstelement.h
	Fix GstIterator comparison bug.
	Moved some code to GstPipeline, mostly clocking related.

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

	* configure.ac:
	* gst/gst_private.h:
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_add),
	(gst_bin_remove_func), (gst_bin_remove),
	(gst_bin_get_by_name_recurse_up):
	* gst/gstclock.c: (gst_clock_id_ref), (gst_clock_id_unref),
	(gst_clock_id_compare_func), (gst_clock_id_wait),
	(gst_clock_id_wait_async), (gst_clock_init),
	(gst_clock_adjust_unlocked), (gst_clock_get_time):
	* gst/gstelement.h:
	* gst/gstinfo.c: (_gst_debug_init):
	* gst/gstobject.h:
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach),
	(gst_pad_collectv), (gst_pad_collect_valist), (gst_pad_query):
	* gst/gstpad.h:
	Bump version number, we're now 0.9.0
	Add future debugging category.
	Fix NULL _unref() in _get_by_name_recurse_up
	Rearrange gstpad.h.
	Update some docs.

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

	* gst/elements/gstaggregator.c: (gst_aggregator_class_init):
	* gst/elements/gstfakesink.c: (gst_fakesink_class_init):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
	* gst/elements/gstfdsink.c: (gst_fdsink_class_init):
	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init):
	* gst/elements/gstfilesink.c: (gst_filesink_class_init):
	* gst/elements/gstfilesrc.c: (gst_filesrc_class_init):
	* gst/elements/gstidentity.c: (gst_identity_class_init):
	* gst/elements/gstmd5sink.c: (gst_md5sink_class_init):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init):
	* gst/elements/gstshaper.c: (gst_shaper_class_init):
	* gst/elements/gststatistics.c: (gst_statistics_class_init):
	* gst/elements/gsttee.c: (gst_tee_class_init), (gst_tee_getcaps),
	(gst_tee_link):
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_base_class_init), (gst_element_init),
	(gst_element_get_random_pad), (gst_element_wait_state_change),
	(gst_element_change_state), (gst_element_dispose),
	(gst_element_finalize), (gst_element_set_loop_function):
	* gst/gstelement.h:
	* gst/gstqueue.c: (gst_queue_class_init), (gst_queue_link_src):
	* gst/gstthread.c: (gst_thread_class_init),
	(gst_thread_release_children_locks), (gst_thread_change_state):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_loopfunc_wrapper),
	(gst_basic_scheduler_chain_wrapper),
	(gst_basic_scheduler_src_wrapper),
	(gst_basic_scheduler_remove_element):
	* gst/schedulers/gstoptimalscheduler.c: (schedule_group):
	Remove threadsafe properties. Fix elements because GObject
	complains when installing a property before declaring a
	set/get_property handler.
	Rearrange gstelement.h file, use STATE macros for state locks.
	Free mutexes in the finalize method instead of dispose.

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

	* check/gst/gstobject.c: (START_TEST), (gst_object_suite):
	* gst/gstthread.c: (gst_thread_release_children_locks):
	Added parentage check.
	Fix build og GstThread again.

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

	* docs/design/part-MT-refcounting.txt:
	* docs/design/part-conventions.txt:
	* docs/design/part-gstobject.txt:
	* docs/design/part-relations.txt:
	* docs/design/part-standards.txt:
	* gst/gstbin.c: (gst_bin_add_func), (gst_bin_add),
	(gst_bin_remove_func), (gst_bin_remove), (gst_bin_iterate_recurse),
	(gst_bin_get_by_name), (gst_bin_get_by_interface),
	(gst_bin_iterate_all_by_interface):
	* gst/gstbuffer.h:
	* gst/gstclock.h:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_change_state), (gst_element_set_loop_function):
	* gst/gstelement.h:
	* gst/gstiterator.c:
	* gst/gstobject.c: (gst_object_class_init), (gst_object_ref),
	(gst_object_unref), (gst_object_sink), (gst_object_dispose),
	(gst_object_dispatch_properties_changed), (gst_object_set_name),
	(gst_object_set_parent), (gst_object_unparent),
	(gst_object_check_uniqueness):
	* gst/gstobject.h:
	Docs updates, clean up some headers.

2005-03-07  Wim Taymans  <wim@fluendo.com>

	* check/.cvsignore:
	* check/Makefile.am:
	* check/gst-libs/.cvsignore:
	* check/gst-libs/gdp.c: (START_TEST), (gst_object_suite), (main):
	* check/gst/.cvsignore:
	* check/gst/gstbus.c: (pound_bus_with_messages), (pull_messages),
	(START_TEST), (gstbus_suite), (main):
	* check/gst/gstcaps.c: (START_TEST), (gst_caps_suite), (main):
	* check/gst/gstdata.c: (START_TEST), (thread_ref), (thread_unref),
	(gst_data_suite), (main):
	* check/gst/gstiterator.c: (make_list_of_ints), (START_TEST),
	(add_fold_func), (gstiterator_suite), (main):
	* check/gst/gstobject.c: (gst_fake_object_get_type), (START_TEST),
	(thread_name_object), (thread_name_object_default),
	(gst_object_name_compare), (gst_object_suite), (main):
	* check/gst/gstpad.c: (START_TEST), (thread_link_unlink),
	(gst_pad_suite), (main):
	* check/gstcheck.c: (gst_check_log_message_func),
	(gst_check_log_critical_func), (gst_check_init):
	* check/gstcheck.h:
	* check/pipelines/simple_launch_lines.c: (setup_pipeline),
	(run_pipeline), (START_TEST), (simple_launch_lines_suite), (main):
	Added checks.

2005-03-07  Wim Taymans  <wim@fluendo.com>

	* gst/gstiterator.c: (gst_iterator_init), (gst_iterator_new),
	(gst_list_iterator_next), (gst_list_iterator_resync),
	(gst_list_iterator_free), (gst_iterator_new_list),
	(gst_iterator_pop), (gst_iterator_next), (gst_iterator_resync),
	(gst_iterator_free), (gst_iterator_push), (filter_next),
	(filter_resync), (filter_uninit), (filter_free),
	(gst_iterator_filter), (gst_iterator_fold), (foreach_fold_func),
	(gst_iterator_foreach), (find_custom_fold_func),
	(gst_iterator_find_custom):
	* gst/gstiterator.h:
	Added missing files.

2005-03-07  Wim Taymans  <wim@fluendo.com>

	* Makefile.am:
	* configure.ac:
	* docs/design/part-MT-refcounting.txt:
	* docs/design/part-conventions.txt:
	* docs/design/part-gstobject.txt:
	* docs/design/part-relations.txt:
	* examples/mixer/mixer.c: (main):
	* examples/thread/thread.c: (eos), (main):
	* gst/Makefile.am:
	* gst/autoplug/gstsearchfuncs.c: (gst_autoplug_caps_intersect):
	* gst/autoplug/gstspider.c: (gst_spider_identity_plug),
	(gst_spider_plug_from_srcpad):
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_getcaps),
	(gst_spider_identity_change_state),
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_loop):
	* gst/elements/gstidentity.c: (gst_identity_init):
	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_getcaps),
	(gst_tee_link), (gst_tee_request_new_pad), (gst_tee_chain):
	* gst/elements/gsttypefindelement.c: (free_entry):
	* gst/gst.c:
	* gst/gst.h:
	* gst/gstbin.c: (gst_bin_init), (gst_bin_get_clock_func),
	(gst_bin_set_clock_func), (gst_bin_auto_clock),
	(gst_bin_set_index), (gst_bin_set_element_sched),
	(gst_bin_unset_element_sched), (gst_bin_add_func), (gst_bin_add),
	(gst_bin_remove_func), (gst_bin_remove), (iterate_child),
	(gst_bin_iterate_elements), (iterate_child_recurse),
	(gst_bin_iterate_recurse), (gst_bin_dispose), (compare_name),
	(gst_bin_get_by_name), (gst_bin_get_by_name_recurse_up),
	(compare_interface), (gst_bin_get_by_interface),
	(gst_bin_iterate_all_by_interface), (gst_bin_iterate_func):
	* gst/gstbin.h:
	* gst/gstbuffer.c: (gst_buffer_get_type), (_gst_buffer_sub_free),
	(gst_buffer_default_free), (gst_buffer_default_copy),
	(gst_buffer_new), (gst_buffer_get_caps), (gst_buffer_set_caps),
	(gst_buffer_create_sub):
	* gst/gstbuffer.h:
	* gst/gstcaps.c: (gst_caps_get_type), (gst_caps_new_empty),
	(_gst_caps_free), (gst_caps_make_writable), (gst_caps_ref),
	(gst_caps_unref), (gst_static_caps_get),
	(gst_caps_remove_and_get_structure), (gst_caps_append),
	(gst_caps_append_structure), (gst_caps_remove_structure),
	(gst_caps_copy_nth), (gst_caps_set_simple),
	(gst_caps_set_simple_valist), (gst_caps_is_fixed_foreach),
	(gst_structure_is_equal_foreach), (gst_caps_is_subset),
	(gst_caps_structure_intersect_field), (gst_caps_intersect),
	(gst_caps_structure_subtract_field), (gst_caps_subtract),
	(gst_caps_normalize_foreach), (gst_caps_compare_structures),
	(gst_caps_structure_figure_out_union),
	(gst_caps_switch_structures), (gst_caps_do_simplify),
	(gst_caps_replace), (gst_caps_from_string),
	(gst_caps_copy_conditional):
	* gst/gstcaps.h:
	* gst/gstclock.c: (gst_clock_entry_new), (gst_clock_id_ref),
	(_gst_clock_id_free), (gst_clock_id_unref),
	(gst_clock_id_compare_func), (gst_clock_id_wait),
	(gst_clock_id_wait_async), (gst_clock_class_init),
	(gst_clock_init), (gst_clock_dispose), (gst_clock_adjust_unlocked),
	(gst_clock_get_time), (gst_clock_set_time_adjust),
	(gst_clock_set_property), (gst_clock_get_property):
	* gst/gstclock.h:
	* gst/gstcompat.h:
	* gst/gstcpu.c: (_gst_cpu_initialize_i386), (gst_cpu_get_flags):
	* gst/gstdata.c: (gst_data_is_writable), (gst_data_copy_on_write):
	* gst/gstdata.h:
	* gst/gstelement.c: (gst_element_class_init), (gst_element_init),
	(gst_element_requires_clock), (gst_element_provides_clock),
	(gst_element_set_clock), (gst_element_clock_wait),
	(gst_element_wait), (gst_element_set_time_delay),
	(gst_element_is_indexable), (gst_element_add_pad),
	(gst_element_add_ghost_pad), (gst_element_remove_pad),
	(pad_compare_name), (gst_element_get_static_pad),
	(gst_element_request_pad), (gst_element_get_request_pad),
	(gst_element_get_pad), (iterate_pad), (gst_element_iterate_pads),
	(gst_element_class_get_pad_template_list),
	(gst_element_class_get_pad_template), (gst_element_error_func),
	(gst_element_get_random_pad), (gst_element_get_event_masks),
	(gst_element_send_event), (gst_element_seek),
	(gst_element_get_query_types), (gst_element_query),
	(gst_element_get_formats), (gst_element_convert),
	(gst_element_is_locked_state), (gst_element_set_locked_state),
	(gst_element_sync_state_with_parent), (gst_element_change_state),
	(gst_element_finalize), (gst_element_yield),
	(gst_element_interrupt), (gst_element_set_scheduler),
	(gst_element_get_scheduler), (gst_element_set_loop_function):
	* gst/gstelement.h:
	* gst/gstevent.h:
	* gst/gstformat.c: (_gst_format_initialize), (gst_format_register),
	(gst_format_get_by_nick), (gst_format_get_details),
	(gst_format_iterate_definitions):
	* gst/gstformat.h:
	* gst/gstindex.c: (gst_index_gtype_resolver):
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstmemchunk.c: (gst_mem_chunk_alloc), (gst_mem_chunk_alloc0),
	(gst_mem_chunk_free):
	* gst/gstobject.c: (gst_object_class_init), (gst_object_init),
	(gst_object_ref), (gst_object_unref), (gst_object_sink),
	(gst_object_replace), (gst_object_dispose), (gst_object_finalize),
	(gst_object_dispatch_properties_changed),
	(gst_object_set_name_default), (gst_object_set_name),
	(gst_object_get_name), (gst_object_set_name_prefix),
	(gst_object_get_name_prefix), (gst_object_set_parent),
	(gst_object_get_parent), (gst_object_unparent),
	(gst_object_check_uniqueness), (gst_object_save_thyself),
	(gst_object_restore_thyself), (gst_object_real_restore_thyself),
	(gst_object_set_property), (gst_object_get_property),
	(gst_object_get_path_string):
	* gst/gstobject.h:
	* gst/gstpad.c: (gst_pad_dispose), (gst_real_pad_class_init),
	(gst_real_pad_init), (gst_real_pad_get_property),
	(gst_pad_custom_new), (gst_pad_get_direction),
	(gst_pad_set_active), (gst_pad_is_active),
	(gst_pad_set_event_function), (gst_pad_is_linked),
	(gst_pad_link_free), (gst_pad_link_intersect),
	(gst_pad_link_fixate), (gst_pad_set_caps),
	(gst_pad_try_set_caps_nonfixed), (gst_pad_set_pad_template),
	(gst_pad_get_real_parent), (gst_pad_add_ghost_pad),
	(gst_pad_remove_ghost_pad), (_gst_pad_default_fixate_foreach),
	(gst_pad_link_unnegotiate), (gst_pad_proxy_fixate),
	(gst_pad_get_caps), (gst_pad_peer_get_caps),
	(gst_pad_get_pad_template_caps), (gst_pad_get_peer),
	(gst_pad_realize), (gst_pad_get_allowed_caps),
	(gst_real_pad_dispose), (gst_real_pad_finalize),
	(gst_pad_collectv), (gst_pad_collect_valist),
	(gst_pad_template_dispose), (gst_pad_template_new),
	(gst_pad_get_internal_links):
	* gst/gstpad.h:
	* gst/gstpipeline.c: (gst_pipeline_dispose),
	(gst_pipeline_change_state):
	* gst/gstpipeline.h:
	* gst/gstplugin.c:
	* gst/gstpluginfeature.c: (gst_plugin_feature_get_name),
	(gst_plugin_feature_set_rank), (gst_plugin_feature_get_rank):
	* gst/gstpluginfeature.h:
	* gst/gstprobe.c: (gst_probe_dispatcher_dispatch):
	* gst/gstquery.c: (_gst_query_type_initialize),
	(gst_query_type_register), (gst_query_type_get_by_nick),
	(gst_query_type_get_details), (gst_query_type_iterate_definitions):
	* gst/gstquery.h:
	* gst/gstqueue.c: (gst_queue_link_sink), (gst_queue_link_src):
	* gst/gstscheduler.c: (gst_scheduler_add_element),
	(gst_scheduler_factory_create):
	* gst/gststructure.c: (gst_structure_set_parent_refcount),
	(gst_structure_free), (gst_structure_set_name),
	(gst_structure_id_set_value), (gst_structure_set_value),
	(gst_structure_set_valist), (gst_structure_remove_field),
	(gst_structure_remove_fields),
	(gst_structure_remove_fields_valist),
	(gst_structure_remove_all_fields), (gst_structure_foreach),
	(gst_structure_map_in_place),
	(gst_caps_structure_fixate_field_nearest_int),
	(gst_caps_structure_fixate_field_nearest_double):
	* gst/gststructure.h:
	* gst/gstsystemclock.c: (gst_system_clock_class_init),
	(gst_system_clock_init), (gst_system_clock_dispose),
	(gst_system_clock_async_thread),
	(gst_system_clock_id_wait_unlocked), (gst_system_clock_id_wait),
	(gst_system_clock_id_wait_async), (gst_system_clock_id_unschedule):
	* gst/gstsystemclock.h:
	* gst/gsttag.c: (gst_tag_list_add_value_internal),
	(gst_tag_list_copy_foreach), (structure_foreach_wrapper):
	* gst/gsttaginterface.c:
	* gst/gstthread.c: (gst_thread_dispose),
	(gst_thread_release_children_locks), (gst_thread_change_state),
	(gst_thread_main_loop):
	* gst/gsttrashstack.h:
	* gst/gsttypefind.c: (gst_type_find_factory_dispose):
	* gst/gsttypes.h:
	* gst/gstutils.c: (gst_element_get_compatible_pad_template),
	(gst_element_request_pad), (gst_element_get_pad_from_template),
	(gst_element_request_compatible_pad),
	(gst_element_get_compatible_pad_filtered),
	(gst_element_get_compatible_pad), (gst_element_state_get_name),
	(gst_element_link_pads_filtered), (gst_element_link_filtered),
	(gst_element_link_many), (gst_element_link),
	(gst_element_link_pads), (gst_element_unlink_pads),
	(gst_element_unlink_many), (gst_element_unlink),
	(gst_pad_can_link_filtered), (gst_pad_can_link),
	(gst_pad_use_fixed_caps), (gst_pad_get_fixed_caps_func),
	(gst_object_default_error), (gst_bin_add_many),
	(gst_bin_remove_many), (gst_element_populate_std_props),
	(gst_element_class_install_std_props), (gst_buffer_merge),
	(gst_buffer_stamp), (intersect_caps_func), (gst_pad_proxy_getcaps),
	(link_fold_func), (gst_pad_proxy_setcaps):
	* gst/gstutils.h:
	* gst/gstvalue.c: (gst_value_deserialize_string):
	* gst/parse/grammar.y:
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_cothreaded_chain),
	(gst_basic_scheduler_chain_recursive_add),
	(gst_basic_scheduler_pad_link):
	* gst/schedulers/gstoptimalscheduler.c:
	(get_group_schedule_function),
	(gst_opt_scheduler_state_transition),
	(gst_opt_scheduler_add_element), (element_get_reachables_func):
	* libs/gst/bytestream/bytestream.c:
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer):
	* po/nb.po:
	* po/ru.po:
	* tests/threadstate/threadstate2.c: (eos):
	* tools/gst-compprep.c: (main):
	* tools/gst-inspect.c: (print_field), (print_element_flag_info),
	(print_pad_info), (print_children_info):
	* tools/gst-launch.c: (idle_func), (main):
	* tools/gst-md5sum.c: (idle_func), (main):
	* tools/gst-xmlinspect.c: (print_element_info):
	First THREADED backport attempt, focusing on adding locks and
	making sure the API is threadsafe. Needs more work. More docs
	follow this week.

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

	* tests/bench-complexity.scm:
	* tests/complexity.gnuplot: New files, good for running complexity
	benchmarks.

	* tests/Makefile.am:
	* tests/complexity.c: New test, sets up N elements, at each level
	teeing into M streams per element. Eeeenteresting.

	* tests/mass_elements.gnuplot: gnuplot file for the mass_elements
	benchmark. Run as gnuplot mass_elements.gnuplot > foo.ps, after
	running bench-mass_elements.scm.

	* tests/bench-mass_elements.scm: New script, runs mass_elements
	for various numbers of identities, outputting the results to a
	file. Requires guile 1.6. Just for testing.

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

	* gst/schedulers/fairscheduler.c:
	  compile with debug disabled

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

	* configure.ac:
	  hunting season on 0.9 is now OPEN
